From 32a34dcef0c0041c6d62677487a380b5c8b85712 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Wed, 29 Aug 2012 12:04:26 -0700 Subject: [PATCH] Imported Upstream version 2.16.0 --- .mailmap | 7 + AUTHORS.txt | 103 +- Documentation/GNUmakefile | 90 +- Documentation/changes.tely | 764 +- Documentation/common-macros.itexi | 38 +- Documentation/contributor.texi | 4 +- .../contributor/administration.itexi | 987 +- Documentation/contributor/build-notes.itexi | 1050 +- .../contributor/doc-translation-list.itexi | 68 +- Documentation/contributor/doc-work.itexi | 129 +- Documentation/contributor/feta-font.itexi | 132 + Documentation/contributor/introduction.itexi | 156 +- Documentation/contributor/issues.itexi | 262 +- Documentation/contributor/lsr-work.itexi | 317 +- .../contributor/programming-work.itexi | 787 +- Documentation/contributor/quick-start.itexi | 409 +- Documentation/contributor/regressions.itexi | 97 +- Documentation/contributor/release-work.itexi | 96 +- Documentation/contributor/source-code.itexi | 645 +- Documentation/contributor/website-work.itexi | 232 +- Documentation/cs/GNUmakefile | 5 +- Documentation/cs/essay/literature.itely | 4 +- Documentation/cs/included/GNUmakefile | 10 + Documentation/cs/learning.tely | 2 +- .../cs/learning/common-notation.itely | 6 +- Documentation/cs/learning/fundamental.itely | 4 +- Documentation/cs/learning/preface.itely | 2 +- Documentation/cs/learning/templates.itely | 46 +- Documentation/cs/learning/tutorial.itely | 8 +- Documentation/cs/learning/tweaks.itely | 8 +- Documentation/cs/macros.itexi | 4 +- Documentation/cs/translations.itexi | 48 +- Documentation/cs/usage/external.itely | 8 +- Documentation/cs/usage/lilypond-book.itely | 15 +- Documentation/cs/usage/running.itely | 10 +- Documentation/cs/usage/setup.itely | 2 +- Documentation/cs/usage/suggestions.itely | 6 +- Documentation/cs/usage/updating.itely | 2 +- Documentation/cs/web.texi | 25 +- Documentation/cs/web/community.itexi | 2 +- Documentation/cs/web/download.itexi | 12 +- Documentation/cs/web/introduction.itexi | 3 +- Documentation/cs/web/manuals.itexi | 46 +- Documentation/css/GNUmakefile | 24 +- Documentation/css/lilypond-manuals.css | 7 +- Documentation/css/lilypond-website.css | 20 +- Documentation/de/GNUmakefile | 4 +- Documentation/de/essay.tely | 4 +- Documentation/de/essay/engraving.itely | 9 +- Documentation/de/essay/literature.itely | 6 +- Documentation/de/extending.tely | 4 +- .../de/extending/programming-interface.itely | 508 +- .../de/extending/scheme-tutorial.itely | 478 +- Documentation/de/included/authors.itexi | 452 - .../de/included/generating-output.itexi | 7 +- Documentation/de/included/helpus.itexi | 25 +- Documentation/de/learning.tely | 4 +- .../de/learning/common-notation.itely | 19 +- Documentation/de/learning/fundamental.itely | 32 +- Documentation/de/learning/preface.itely | 4 +- Documentation/de/learning/templates.itely | 59 +- Documentation/de/learning/tutorial.itely | 10 +- Documentation/de/learning/tweaks.itely | 251 +- Documentation/de/macros.itexi | 4 +- Documentation/de/notation.tely | 4 +- Documentation/de/notation/ancient.itely | 35 +- .../de/notation/changing-defaults.itely | 427 +- Documentation/de/notation/cheatsheet.itely | 4 +- Documentation/de/notation/chords.itely | 111 +- Documentation/de/notation/contemporary.itely | 4 +- Documentation/de/notation/editorial.itely | 29 +- Documentation/de/notation/expressive.itely | 79 +- .../de/notation/fretted-strings.itely | 258 +- Documentation/de/notation/input.itely | 1332 +- Documentation/de/notation/keyboards.itely | 17 +- .../de/notation/notation-appendices.itely | 418 +- Documentation/de/notation/notation.itely | 4 +- Documentation/de/notation/percussion.itely | 29 +- Documentation/de/notation/pitches.itely | 213 +- Documentation/de/notation/repeats.itely | 79 +- Documentation/de/notation/rhythms.itely | 502 +- Documentation/de/notation/simultaneous.itely | 277 +- Documentation/de/notation/spacing.itely | 183 +- Documentation/de/notation/specialist.itely | 4 +- Documentation/de/notation/staff.itely | 750 +- Documentation/de/notation/text.itely | 153 +- .../de/notation/unfretted-strings.itely | 4 +- Documentation/de/notation/vocal.itely | 99 +- Documentation/de/notation/wind.itely | 33 +- Documentation/de/notation/world.itely | 16 +- Documentation/de/search-box.ihtml | 15 +- .../alternative-bar-numbering.texidoc | 7 + .../texidocs/alternative-breve-note.texidoc | 7 + .../chord-glissando-in-tablature.texidoc | 3 +- .../texidocs/glissandi-can-skip-grobs.texidoc | 4 + ...2-lyrics-spacing-in-newer-versions.texidoc | 11 + .../de/texidocs/strict-beat-beaming.texidoc | 11 + .../woodwind-diagrams-key-lists.texidoc | 7 +- Documentation/de/translations.itexi | 122 +- Documentation/de/usage.tely | 4 +- Documentation/de/usage/external.itely | 126 +- Documentation/de/usage/lilypond-book.itely | 234 +- Documentation/de/usage/running.itely | 256 +- Documentation/de/usage/setup.itely | 2 +- Documentation/de/usage/suggestions.itely | 12 +- Documentation/de/usage/updating.itely | 14 +- Documentation/de/web.texi | 69 +- Documentation/de/web/community.itexi | 477 +- Documentation/de/web/download.itexi | 25 +- Documentation/de/web/introduction.itexi | 97 +- Documentation/de/web/manuals.itexi | 18 +- Documentation/es/GNUmakefile | 5 +- Documentation/es/changes.tely | 868 +- Documentation/es/essay.tely | 5 +- Documentation/es/essay/engraving.itely | 27 +- Documentation/es/essay/literature.itely | 4 +- Documentation/es/extending.tely | 4 +- .../es/extending/programming-interface.itely | 499 +- .../es/extending/scheme-tutorial.itely | 584 +- .../es/included/generating-output.itexi | 7 +- Documentation/es/included/helpus.itexi | 41 +- Documentation/es/learning.tely | 4 +- .../es/learning/common-notation.itely | 15 +- Documentation/es/learning/fundamental.itely | 97 +- Documentation/es/learning/preface.itely | 4 +- Documentation/es/learning/templates.itely | 53 +- Documentation/es/learning/tutorial.itely | 8 +- Documentation/es/learning/tweaks.itely | 319 +- Documentation/es/macros.itexi | 4 +- Documentation/es/notation.tely | 6 +- Documentation/es/notation/ancient.itely | 283 +- .../es/notation/changing-defaults.itely | 977 +- Documentation/es/notation/cheatsheet.itely | 4 +- Documentation/es/notation/chords.itely | 153 +- Documentation/es/notation/contemporary.itely | 4 +- Documentation/es/notation/editorial.itely | 44 +- Documentation/es/notation/expressive.itely | 87 +- .../es/notation/fretted-strings.itely | 276 +- Documentation/es/notation/input.itely | 839 +- Documentation/es/notation/keyboards.itely | 82 +- .../es/notation/notation-appendices.itely | 489 +- Documentation/es/notation/notation.itely | 4 +- Documentation/es/notation/percussion.itely | 37 +- Documentation/es/notation/pitches.itely | 288 +- Documentation/es/notation/repeats.itely | 101 +- Documentation/es/notation/rhythms.itely | 651 +- Documentation/es/notation/simultaneous.itely | 365 +- Documentation/es/notation/spacing.itely | 368 +- Documentation/es/notation/specialist.itely | 4 +- Documentation/es/notation/staff.itely | 675 +- Documentation/es/notation/text.itely | 159 +- .../es/notation/unfretted-strings.itely | 7 +- Documentation/es/notation/vocal.itely | 169 +- Documentation/es/notation/wind.itely | 49 +- Documentation/es/notation/world.itely | 25 +- Documentation/es/search-box.ihtml | 14 +- .../accordion-discant-symbols.texidoc | 2 +- ...ured-bass-above-or-below-the-notes.texidoc | 4 +- .../texidocs/adding-ambitus-per-voice.texidoc | 2 +- ...ing-an-extra-staff-at-a-line-break.texidoc | 2 +- .../es/texidocs/adding-an-extra-staff.texidoc | 2 +- ...ng-bar-lines-to-chordnames-context.texidoc | 2 +- ...sing-tuplet-and-non-tuplet-rhythms.texidoc | 2 +- .../es/texidocs/adding-drum-parts.texidoc | 2 +- .../adding-fingerings-to-tablatures.texidoc | 2 +- ...g-orchestral-cues-to-a-vocal-score.texidoc | 2 +- ...an-expressive-mark-or-chordal-note.texidoc | 2 +- ...adding-the-current-date-to-a-score.texidoc | 2 +- ...olta-brackets-to-additional-staves.texidoc | 2 +- ...itional-voices-to-avoid-collisions.texidoc | 2 +- .../adjusting-grace-note-spacing.texidoc | 2 +- .../adjusting-lyrics-vertical-spacing.texidoc | 2 +- ...sting-the-shape-of-falls-and-doits.texidoc | 2 +- ...ing-and-centering-instrument-names.texidoc | 2 +- .../es/texidocs/aligning-bar-numbers.texidoc | 2 +- ...arks-with-various-notation-objects.texidoc | 2 +- ...ngs-to-be-printed-inside-the-staff.texidoc | 2 +- ...ltering-the-length-of-beamed-stems.texidoc | 2 +- .../alternative-bar-numbering.texidoc | 8 + .../texidocs/alternative-breve-note.texidoc | 8 + .../ambitus-with-multiple-voices.texidoc | 2 +- .../analysis-brackets-above-the-staff.texidoc | 2 +- .../es/texidocs/ancient-fonts.texidoc | 2 +- ...n-transcription-of-gregorian-music.texidoc | 2 +- ...rn-transcription-of-mensural-music.texidoc | 2 +- .../texidocs/ancient-time-signatures.texidoc | 2 +- .../texidocs/anglican-psalm-template.texidoc | 9 + ...depending-on-the-step-of-the-scale.texidoc | 2 +- .../es/texidocs/arabic-improvisation.texidoc | 2 +- .../es/texidocs/asymmetric-slurs.texidoc | 2 +- .../automatic-beam-subdivisions.texidoc | 2 +- ...g-collisions-with-chord-fingerings.texidoc | 2 +- ...tion-for-guitar--with-text-spanner.texidoc | 10 + .../beam-endings-in-score-context.texidoc | 2 +- .../beam-grouping-in-7-8-time.texidoc | 13 +- .../texidocs/beams-across-line-breaks.texidoc | 2 +- ...-lines-using-the--whiteout-command.texidoc | 2 +- .../texidocs/broken-crescendo-hairpin.texidoc | 2 +- .../caesura-railtracks-with-fermata.texidoc | 2 +- ...center-text-below-hairpin-dynamics.texidoc | 2 +- .../changing--flageolet-mark-size.texidoc | 2 +- ...ing-a-single-notes-size-in-a-chord.texidoc | 2 +- .../texidocs/changing-beam-knee-gap.texidoc | 2 +- .../texidocs/changing-chord-separator.texidoc | 2 +- ...anging-form-of-multi-measure-rests.texidoc | 2 +- .../changing-fret-orientations.texidoc | 2 +- ...di-output-to-one-channel-per-voice.texidoc | 2 +- .../changing-partcombine-texts.texidoc | 2 +- ...d-spanner-styles-for-text-dynamics.texidoc | 2 +- .../texidocs/changing-the-ambitus-gap.texidoc | 2 +- ...lur-from-solid-to-dotted-or-dashed.texidoc | 2 +- .../changing-the-breath-mark-symbol.texidoc | 2 +- ...-to-german-or-semi-german-notation.texidoc | 2 +- ...mber-of-augmentation-dots-per-note.texidoc | 2 +- ...itions-of-figured-bass-alterations.texidoc | 2 +- ...ging-the-size-of-woodwind-diagrams.texidoc | 2 +- ...the-tempo-without-a-metronome-mark.texidoc | 2 +- ...ging-the-text-for-sustain-markings.texidoc | 2 +- ...ture-without-affecting-the-beaming.texidoc | 13 - .../changing-the-tuplet-number.texidoc | 2 +- ...tric-section-using--scaledurations.texidoc | 2 +- .../texidocs/chant-or-psalms-notation.texidoc | 2 +- .../chord-glissando-in-tablature.texidoc | 11 +- .../es/texidocs/chord-name-exceptions.texidoc | 2 +- .../es/texidocs/chord-name-major7.texidoc | 2 +- .../chordchanges-for-fretboards.texidoc | 2 +- .../es/texidocs/clip-systems.texidoc | 4 +- Documentation/es/texidocs/clusters.texidoc | 2 +- ...mbining-dynamics-with-markup-texts.texidoc | 2 +- ...bining-two-parts-on-the-same-staff.texidoc | 2 +- .../texidocs/compound-time-signatures.texidoc | 2 +- ...ting-signs,-measure-grouping-signs.texidoc | 20 +- .../texidocs/contemporary-glissando.texidoc | 2 +- ...nner-visibility-after-a-line-break.texidoc | 2 +- ...-the-placement-of-chord-fingerings.texidoc | 2 +- ...g-the-vertical-ordering-of-scripts.texidoc | 2 +- ...trolling-tuplet-bracket-visibility.texidoc | 2 +- .../texidocs/creating-a-delayed-turn.texidoc | 2 +- ...quence-of-notes-on-various-pitches.texidoc | 2 +- ...s-across-notes-in-different-voices.texidoc | 2 +- .../es/texidocs/creating-blank-staves.texidoc | 2 +- ...s-staff-arpeggios-in-a-piano-staff.texidoc | 2 +- ...-staff-arpeggios-in-other-contexts.texidoc | 2 +- ...ing-metronome-marks-in-markup-mode.texidoc | 2 +- ...eating-real-parenthesized-dynamics.texidoc | 2 +- ...ating-simultaneous-rehearsal-marks.texidoc | 2 +- .../creating-slurs-across-voices.texidoc | 2 +- .../texidocs/creating-text-spanners.texidoc | 2 +- .../es/texidocs/cross-staff-tremolos.texidoc | 2 +- Documentation/es/texidocs/custodes.texidoc | 2 +- ...ustomizing-fretboard-fret-diagrams.texidoc | 2 +- .../customizing-markup-fret-diagrams.texidoc | 2 +- ...ms-on-the-center-line-of-the-staff.texidoc | 2 +- ...ngraver-in-scheme-ambitus-engraver.texidoc | 12 - ...d-fretboards-for-other-instruments.texidoc | 2 +- ...et-with-only-one-staff-in-a-system.texidoc | 2 +- .../displaying-complex-chords.texidoc | 2 +- .../texidocs/displaying-grob-ancestry.texidoc | 2 +- ...s-for-each-note-including-naturals.texidoc | 15 - ...namics-custom-text-spanner-postfix.texidoc | 2 +- .../dynamics-text-spanner-postfix.texidoc | 2 +- ...tive-postscript-in-a--markup-block.texidoc | 2 +- .../es/texidocs/engravers-one-by-one.texidoc | 2 +- .../texidocs/engraving-ties-manually.texidoc | 2 +- ...lets-using-only-one--times-command.texidoc | 2 +- .../faking-a-hammer-in-tablatures.texidoc | 2 +- ...ering-symbols-for-wind-instruments.texidoc | 2 +- ...cations,-and-right-hand-fingerings.texidoc | 2 +- .../es/texidocs/flamenco-notation.texidoc | 2 +- .../texidocs/flat-flags-and-beam-nibs.texidoc | 2 +- .../forcing-horizontal-shift-of-notes.texidoc | 2 +- .../forcing-hyphens-to-be-shown.texidoc | 2 +- .../formatting-lyrics-syllables.texidoc | 7 + .../fretboards-alternate-tables.texidoc | 4 +- ...tted-string-harmonics-in-tablature.texidoc | 2 +- .../texidocs/generating-random-notes.texidoc | 2 +- .../texidocs/glissandi-can-skip-grobs.texidoc | 7 + ...aphical-and-text-woodwind-diagrams.texidoc | 2 +- ...d-lines--changing-their-appearance.texidoc | 2 +- ...-rhythms-and-notes-synchronization.texidoc | 2 +- .../es/texidocs/grouping-beats.texidoc | 8 - .../es/texidocs/guitar-slides.texidoc | 2 +- .../es/texidocs/guitar-strum-rhythms.texidoc | 2 +- ...airpins-with-different-line-styles.texidoc | 2 +- ...notes-at-the-start-of-a-new-system.texidoc | 2 +- ...he-extender-line-for-text-dynamics.texidoc | 2 +- .../es/texidocs/hymn-template.texidoc | 2 +- Documentation/es/texidocs/incipit.texidoc | 2 +- ...staff-chords-with-arpeggio-bracket.texidoc | 2 +- .../es/texidocs/inserting-a-caesura.texidoc | 2 +- .../texidocs/isolated-percent-repeats.texidoc | 2 +- .../es/texidocs/jazz-combo-template.texidoc | 2 +- .../keep-change-clefs-full-sized.texidoc | 2 +- .../letter-tablature-formatting.texidoc | 2 +- Documentation/es/texidocs/line-arrows.texidoc | 2 +- .../es/texidocs/lyrics-alignment.texidoc | 4 +- .../es/texidocs/makam-example.texidoc | 2 +- ...-slurs-with-complex-dash-structure.texidoc | 2 +- ...taff-lines-thicker-than-the-others.texidoc | 2 +- .../es/texidocs/measure-counter.texidoc | 2 +- ...ayout-bar-lines-between-the-staves.texidoc | 2 +- .../es/texidocs/modern-tab-text-clef.texidoc | 7 - ...or-articulation-shorthand-notation.texidoc | 16 +- .../moving-dotted-notes-in-polyphony.texidoc | 2 +- .../moving-slur-positions-vertically.texidoc | 2 +- .../multi-measure-rest-markup.texidoc | 2 +- .../es/texidocs/nesting-staves.texidoc | 2 +- .../non-default-tuplet-numbers.texidoc | 2 +- .../non-traditional-key-signatures.texidoc | 2 +- .../numbers-as-easy-note-heads.texidoc | 2 +- ...2-lyrics-spacing-in-newer-versions.texidoc | 12 + ...open-string-harmonics-in-tablature.texidoc | 2 +- ...rchestra,-choir-and-piano-template.texidoc | 2 +- Documentation/es/texidocs/ottava-text.texidoc | 2 +- .../partcombine-and-autobeamoff.texidoc | 2 +- .../percent-repeat-count-visibility.texidoc | 2 +- .../texidocs/percent-repeat-counter.texidoc | 2 +- ...-line-breaks-within-beamed-tuplets.texidoc | 2 +- .../es/texidocs/piano-template-simple.texidoc | 2 +- ...no-template-with-centered-dynamics.texidoc | 10 - ...iano-template-with-centered-lyrics.texidoc | 2 +- ...no-template-with-melody-and-lyrics.texidoc | 2 +- ...placement-of-right-hand-fingerings.texidoc | 2 +- .../texidocs/polyphony-in-tablature.texidoc | 2 +- .../es/texidocs/positioning-arpeggios.texidoc | 2 +- ...at-the-height-of-normal-note-beams.texidoc | 2 +- ...ng-grace-notes-with-floating-space.texidoc | 2 +- .../positioning-multi-measure-rests.texidoc | 2 +- ...itioning-text-markups-inside-slurs.texidoc | 2 +- ...als-from-being-automatically-added.texidoc | 2 +- ...ted-when-the-key-signature-changes.texidoc | 2 +- ...t-sign-at-the-beginning-of-a-piece.texidoc | 2 +- ...g-bar-numbers-at-regular-intervals.texidoc | 2 +- ...ar-numbers-inside-boxes-or-circles.texidoc | 2 +- ...-hairpins-using-al-niente-notation.texidoc | 2 +- ...rinting-marks-at-the-end-of-a-line.texidoc | 4 +- .../printing-marks-on-every-staff.texidoc | 10 +- ...nd-rehearsal-marks-below-the-staff.texidoc | 2 +- ...-with-and-without-an-octave-marker.texidoc | 2 +- ...e-bar-number-for-the-first-measure.texidoc | 2 +- ...g-another-voice-with-transposition.texidoc | 2 +- .../es/texidocs/quoting-another-voice.texidoc | 2 +- .../texidocs/recorder-fingering-chart.texidoc | 2 +- ...efining-grace-note-global-defaults.texidoc | 2 +- .../removing-bar-numbers-from-a-score.texidoc | 2 +- ...ffgroup,-pianostaff,-or-grandstaff.texidoc | 2 +- .../removing-the-first-empty-line.texidoc | 2 +- Documentation/es/texidocs/rest-styles.texidoc | 2 +- .../reverting-default-beam-endings.texidoc | 2 +- .../satb-choir-template---four-staves.texidoc | 7 + .../es/texidocs/script-chart.texidoc | 4 +- ...ting-hairpin-behavior-at-bar-lines.texidoc | 2 +- .../setting-system-separators.texidoc | 2 +- ...he-double-repeat-default-for-volte.texidoc | 2 +- ...ing-the-minimum-length-of-hairpins.texidoc | 2 +- .../shortening-volta-brackets.texidoc | 2 +- .../showing-chords-at-changes.texidoc | 2 +- .../es/texidocs/simple-lead-sheet.texidoc | 2 +- ...ate-with-notes,-lyrics,-and-chords.texidoc | 2 +- ...th-notes,-lyrics,-chords-and-frets.texidoc | 2 +- ...aff-template-with-notes-and-chords.texidoc | 2 +- ...aff-template-with-notes-and-lyrics.texidoc | 2 +- ...gle-staff-template-with-only-notes.texidoc | 2 +- .../es/texidocs/slides-in-tablature.texidoc | 2 +- .../snap-pizzicato-bartok-pizzicato.texidoc | 12 - .../stand-alone-two-column-markup.texidoc | 2 +- ...tem-and-beam-behavior-in-tablature.texidoc | 2 +- .../es/texidocs/strict-beat-beaming.texidoc | 9 + .../string-quartet-template-simple.texidoc | 2 +- ...artet-template-with-separate-parts.texidoc | 2 +- .../es/texidocs/subdividing-beams.texidoc | 2 +- ...s-a-number-instead-of-the-fraction.texidoc | 2 +- ...tion-of-ancient-music-with-incipit.texidoc | 2 +- ...inimum-accidentals-smart-transpose.texidoc | 2 +- .../texidocs/tweaking-clef-properties.texidoc | 2 +- ...tweaking-grace-layout-within-music.texidoc | 2 +- ...cket-at-the-start-of-a-staff-group.texidoc | 2 +- .../using-alternative-flag-styles.texidoc | 4 +- ...racket-to-make-divisi-more-visible.texidoc | 2 +- ...ing-double-slurs-for-legato-chords.texidoc | 2 +- ...ace-note-slashes-with-normal-heads.texidoc | 2 +- ...object-to-access-grobs-with--tweak.texidoc | 2 +- .../using-the-whiteout-property.texidoc | 2 +- .../using-ties-with-arpeggios.texidoc | 2 +- ...y-aligned-dynamics-and-textscripts.texidoc | 2 +- ...ing-dynamics-across-multiple-notes.texidoc | 2 +- ...tically-aligning-ossias-and-lyrics.texidoc | 2 +- ...ring-paired-figured-bass-extenders.texidoc | 2 +- ...ate-with-automatic-piano-reduction.texidoc | 2 +- ...aligned-below-and-above-the-staves.texidoc | 2 +- ...le-template-with-verse-and-refrain.texidoc | 2 +- .../texidocs/vocal-ensemble-template.texidoc | 2 +- .../es/texidocs/volta-below-chords.texidoc | 2 +- .../woodwind-diagrams-key-lists.texidoc | 7 +- .../woodwind-diagrams-listing.texidoc | 2 +- Documentation/es/translations.itexi | 84 +- Documentation/es/usage.tely | 4 +- Documentation/es/usage/external.itely | 130 +- Documentation/es/usage/lilypond-book.itely | 241 +- Documentation/es/usage/running.itely | 731 +- Documentation/es/usage/suggestions.itely | 10 +- Documentation/es/usage/updating.itely | 21 +- Documentation/es/web.texi | 66 +- Documentation/es/web/community.itexi | 432 +- Documentation/es/web/download.itexi | 27 +- Documentation/es/web/introduction.itexi | 138 +- Documentation/es/web/manuals.itexi | 12 +- Documentation/es/web/news-front.itexi | 102 +- Documentation/es/web/news.itexi | 1273 +- Documentation/essay.tely | 2 +- Documentation/essay/computer-notation.bib | 2 +- Documentation/essay/engraving.itely | 15 +- Documentation/essay/literature.itely | 2 +- Documentation/extending.tely | 2 +- .../extending/programming-interface.itely | 443 +- Documentation/extending/scheme-tutorial.itely | 521 +- Documentation/fr/GNUmakefile | 4 +- Documentation/fr/essay.tely | 5 +- Documentation/fr/essay/engraving.itely | 32 +- Documentation/fr/essay/literature.itely | 8 +- Documentation/fr/extending.tely | 78 + .../fr/extending/programming-interface.itely | 1358 +- .../fr/extending/scheme-tutorial.itely | 1686 +++ .../fr/included/generating-output.itexi | 7 +- Documentation/fr/included/helpus.itexi | 151 +- Documentation/fr/learning.tely | 4 +- .../fr/learning/common-notation.itely | 12 +- Documentation/fr/learning/fundamental.itely | 159 +- Documentation/fr/learning/preface.itely | 4 +- Documentation/fr/learning/templates.itely | 55 +- Documentation/fr/learning/tutorial.itely | 6 +- Documentation/fr/learning/tweaks.itely | 954 +- Documentation/fr/macros.itexi | 4 +- Documentation/fr/notation.tely | 4 +- Documentation/fr/notation/ancient.itely | 3247 +++-- .../fr/notation/changing-defaults.itely | 3963 +++++- Documentation/fr/notation/cheatsheet.itely | 4 +- Documentation/fr/notation/chords.itely | 1263 +- Documentation/fr/notation/contemporary.itely | 249 + Documentation/fr/notation/editorial.itely | 84 +- Documentation/fr/notation/expressive.itely | 116 +- .../fr/notation/fretted-strings.itely | 991 +- Documentation/fr/notation/input.itely | 1869 ++- Documentation/fr/notation/keyboards.itely | 95 +- .../fr/notation/notation-appendices.itely | 980 +- Documentation/fr/notation/notation.itely | 4 +- Documentation/fr/notation/percussion.itely | 446 +- Documentation/fr/notation/pitches.itely | 729 +- Documentation/fr/notation/repeats.itely | 190 +- Documentation/fr/notation/rhythms.itely | 881 +- Documentation/fr/notation/simultaneous.itely | 443 +- Documentation/fr/notation/spacing.itely | 700 +- Documentation/fr/notation/specialist.itely | 6 +- Documentation/fr/notation/staff.itely | 792 +- Documentation/fr/notation/text.itely | 231 +- .../fr/notation/unfretted-strings.itely | 14 +- Documentation/fr/notation/vocal.itely | 433 +- Documentation/fr/notation/wind.itely | 103 +- Documentation/fr/notation/world.itely | 227 +- Documentation/fr/search-box.ihtml | 16 +- .../accordion-discant-symbols.texidoc | 8 + ...ured-bass-above-or-below-the-notes.texidoc | 16 +- .../texidocs/adding-ambitus-per-voice.texidoc | 2 +- ...ing-an-extra-staff-at-a-line-break.texidoc | 10 + .../fr/texidocs/adding-an-extra-staff.texidoc | 8 + ...ng-bar-lines-to-chordnames-context.texidoc | 7 + ...sing-tuplet-and-non-tuplet-rhythms.texidoc | 13 + .../fr/texidocs/adding-drum-parts.texidoc | 9 +- ...adding-extra-fingering-with-scheme.texidoc | 12 + .../adding-fingerings-to-a-score.texidoc | 6 + .../adding-fingerings-to-tablatures.texidoc | 8 +- ...aves-which-get-split-after-a-break.texidoc | 9 + ...g-orchestral-cues-to-a-vocal-score.texidoc | 8 +- ...an-expressive-mark-or-chordal-note.texidoc | 8 + ...adding-the-current-date-to-a-score.texidoc | 3 +- ...olta-brackets-to-additional-staves.texidoc | 4 +- ...itional-voices-to-avoid-collisions.texidoc | 7 +- .../adjusting-grace-note-spacing.texidoc | 7 + .../adjusting-lyrics-vertical-spacing.texidoc | 6 +- ...sting-the-shape-of-falls-and-doits.texidoc | 2 +- ...ing-and-centering-instrument-names.texidoc | 10 + .../fr/texidocs/aligning-bar-numbers.texidoc | 2 +- ...arks-with-various-notation-objects.texidoc | 22 +- ...cts-created-with-the--mark-command.texidoc | 8 + ...ngs-to-be-printed-inside-the-staff.texidoc | 2 +- ...ltering-the-length-of-beamed-stems.texidoc | 12 + .../alternative-bar-numbering.texidoc | 7 + .../texidocs/alternative-breve-note.texidoc | 7 + .../ambitus-with-multiple-voices.texidoc | 2 +- Documentation/fr/texidocs/ambitus.texidoc | 11 + .../analysis-brackets-above-the-staff.texidoc | 8 + .../fr/texidocs/ancient-fonts.texidoc | 2 +- ...n-transcription-of-gregorian-music.texidoc | 4 +- ...rn-transcription-of-mensural-music.texidoc | 4 +- .../texidocs/ancient-time-signatures.texidoc | 7 + .../texidocs/anglican-psalm-template.texidoc | 3 +- ...depending-on-the-step-of-the-scale.texidoc | 11 +- .../fr/texidocs/arabic-improvisation.texidoc | 11 + .../fr/texidocs/asymmetric-slurs.texidoc | 7 + .../automatic-beam-subdivisions.texidoc | 7 + ...r-two-in-4-4-or-2-2-time-signature.texidoc | 11 - .../automatically-change-durations.texidoc | 9 + ...g-collisions-with-chord-fingerings.texidoc | 9 + ...tion-for-guitar--with-text-spanner.texidoc | 9 + .../beam-endings-in-score-context.texidoc | 4 +- .../beam-grouping-in-7-8-time.texidoc | 4 +- .../texidocs/beams-across-line-breaks.texidoc | 3 +- ...-lines-using-the--whiteout-command.texidoc | 9 + Documentation/fr/texidocs/book-parts.texidoc | 10 + .../fr/texidocs/breathing-signs.texidoc | 8 + .../texidocs/broken-crescendo-hairpin.texidoc | 19 + .../caesura-railtracks-with-fermata.texidoc | 8 + ...center-text-below-hairpin-dynamics.texidoc | 9 + ...markup-on-note-heads-automatically.texidoc | 13 + .../changing--flageolet-mark-size.texidoc | 3 +- ...ing-a-single-notes-size-in-a-chord.texidoc | 12 + .../texidocs/changing-beam-knee-gap.texidoc | 12 +- .../texidocs/changing-chord-separator.texidoc | 7 + ...anging-form-of-multi-measure-rests.texidoc | 8 +- .../changing-fret-orientations.texidoc | 8 + ...di-output-to-one-channel-per-voice.texidoc | 2 +- .../changing-partcombine-texts.texidoc | 4 +- ...ng-properties-for-individual-grobs.texidoc | 7 + .../fr/texidocs/changing-stanza-fonts.texidoc | 6 + ...d-spanner-styles-for-text-dynamics.texidoc | 4 +- .../texidocs/changing-the-ambitus-gap.texidoc | 8 +- ...lur-from-solid-to-dotted-or-dashed.texidoc | 7 + .../changing-the-breath-mark-symbol.texidoc | 2 +- ...-to-german-or-semi-german-notation.texidoc | 10 + ...nging-the-default-text-font-family.texidoc | 7 + ...the-interval-of-lines-on-the-stave.texidoc | 9 + ...mber-of-augmentation-dots-per-note.texidoc | 6 +- ...ing-the-number-of-lines-in-a-staff.texidoc | 7 + ...itions-of-figured-bass-alterations.texidoc | 9 + ...ging-the-size-of-woodwind-diagrams.texidoc | 3 +- .../texidocs/changing-the-staff-size.texidoc | 9 + ...the-tempo-without-a-metronome-mark.texidoc | 2 +- ...ging-the-text-for-sustain-markings.texidoc | 8 + ...ture-without-affecting-the-beaming.texidoc | 12 - .../changing-the-tuplet-number.texidoc | 2 +- ...tric-section-using--scaledurations.texidoc | 13 + .../texidocs/chant-or-psalms-notation.texidoc | 2 +- .../chord-glissando-in-tablature.texidoc | 10 + .../fr/texidocs/chord-name-exceptions.texidoc | 7 + .../fr/texidocs/chord-name-major7.texidoc | 7 + .../chordchanges-for-fretboards.texidoc | 8 + ...be-transposed-by-arbitrary-amounts.texidoc | 6 + .../fr/texidocs/clip-systems.texidoc | 24 + Documentation/fr/texidocs/clusters.texidoc | 7 + ...ing-notes-depending-on-their-pitch.texidoc | 8 + ...mbining-dynamics-with-markup-texts.texidoc | 8 + ...bining-two-parts-on-the-same-staff.texidoc | 4 +- .../texidocs/compound-time-signatures.texidoc | 6 +- ...ting-signs,-measure-grouping-signs.texidoc | 10 +- .../texidocs/contemporary-glissando.texidoc | 4 +- ...nner-visibility-after-a-line-break.texidoc | 16 + ...-the-placement-of-chord-fingerings.texidoc | 7 +- ...g-the-vertical-ordering-of-scripts.texidoc | 14 +- ...trolling-tuplet-bracket-visibility.texidoc | 5 +- .../texidocs/creating-a-delayed-turn.texidoc | 8 +- ...quence-of-notes-on-various-pitches.texidoc | 10 + ...s-across-notes-in-different-voices.texidoc | 5 +- .../fr/texidocs/creating-blank-staves.texidoc | 10 + ...s-staff-arpeggios-in-a-piano-staff.texidoc | 2 +- ...-staff-arpeggios-in-other-contexts.texidoc | 2 +- .../creating-double-digit-fingerings.texidoc | 9 + ...ing-metronome-marks-in-markup-mode.texidoc | 4 +- ...eating-real-parenthesized-dynamics.texidoc | 16 + ...ating-simultaneous-rehearsal-marks.texidoc | 13 + .../creating-slurs-across-voices.texidoc | 13 + .../texidocs/creating-text-spanners.texidoc | 9 + ...ords---beaming-problems-workaround.texidoc | 12 + .../fr/texidocs/cross-staff-tremolos.texidoc | 4 +- Documentation/fr/texidocs/custodes.texidoc | 6 + ...ustomizing-fretboard-fret-diagrams.texidoc | 12 + .../customizing-markup-fret-diagrams.texidoc | 9 +- ...ms-on-the-center-line-of-the-staff.texidoc | 8 + ...graver-in-scheme--ambitus-engraver.texidoc | 10 + ...d-fretboards-for-other-instruments.texidoc | 8 +- .../fr/texidocs/demo-midiinstruments.texidoc | 7 + .../demonstrating-all-headers.texidoc | 6 + ...et-with-only-one-staff-in-a-system.texidoc | 6 +- .../displaying-complex-chords.texidoc | 7 + .../texidocs/displaying-grob-ancestry.texidoc | 58 + ...s-for-each-note-including-naturals.texidoc | 4 +- .../fr/texidocs/dotted-harmonics.texidoc | 8 + .../fr/texidocs/double-glissando.texidoc | 7 + .../drawing-boxes-around-grobs.texidoc | 7 + .../drawing-circles-around-note-heads.texidoc | 6 + ...ing-circles-around-various-objects.texidoc | 10 + ...namics-custom-text-spanner-postfix.texidoc | 8 +- .../dynamics-text-spanner-postfix.texidoc | 15 +- ...tive-postscript-in-a--markup-block.texidoc | 7 + .../fr/texidocs/engravers-one-by-one.texidoc | 26 + .../texidocs/engraving-ties-manually.texidoc | 2 +- ...aving-tremolos-with-floating-beams.texidoc | 13 + ...lets-using-only-one--times-command.texidoc | 2 +- .../faking-a-hammer-in-tablatures.texidoc | 7 + .../fine-tuning-pedal-brackets.texidoc | 7 + ...ering-symbols-for-wind-instruments.texidoc | 4 +- ...cations,-and-right-hand-fingerings.texidoc | 7 +- .../fr/texidocs/flamenco-notation.texidoc | 32 + .../texidocs/flat-flags-and-beam-nibs.texidoc | 18 +- .../fr/texidocs/flute-slap-notation.texidoc | 8 + ...cing-a-clef-symbol-to-be-displayed.texidoc | 9 + .../forcing-horizontal-shift-of-notes.texidoc | 2 +- .../forcing-hyphens-to-be-shown.texidoc | 8 + ...h-to-adapt-to-metronomemarks-width.texidoc | 11 + ...tart-from-a-given-letter-or-number.texidoc | 7 + .../formatting-lyrics-syllables.texidoc | 7 + ...t-diagrams-explained-and-developed.texidoc | 7 + .../fretboards-alternate-tables.texidoc | 19 + ...tted-string-harmonics-in-tablature.texidoc | 7 + .../texidocs/generating-custom-flags.texidoc | 8 + .../texidocs/generating-random-notes.texidoc | 10 + ...in-scheme-without-using-the-parser.texidoc | 35 + .../texidocs/glissandi-can-skip-grobs.texidoc | 6 + ...aphical-and-text-woodwind-diagrams.texidoc | 4 +- ...d-lines--changing-their-appearance.texidoc | 2 +- ...-rhythms-and-notes-synchronization.texidoc | 9 + .../fr/texidocs/grouping-beats.texidoc | 7 - .../fr/texidocs/guitar-slides.texidoc | 9 + .../fr/texidocs/guitar-strum-rhythms.texidoc | 2 +- ...airpins-with-different-line-styles.texidoc | 8 + ...tomized-polymetric-time-signatures.texidoc | 9 + ...notes-at-the-start-of-a-new-system.texidoc | 13 +- ...he-extender-line-for-text-dynamics.texidoc | 4 +- ...cs-e.g.-sempre-pp,-piu-f,-subito-p.texidoc | 46 + ...ow-to-change-fret-diagram-position.texidoc | 18 + ...nd-below-the-same-barline-method-1.texidoc | 26 + ...nd-below-the-same-barline-method-2.texidoc | 13 + ...t-ties-between-syllables-in-lyrics.texidoc | 7 + .../fr/texidocs/hymn-template.texidoc | 3 +- Documentation/fr/texidocs/incipit.texidoc | 8 + ...staff-chords-with-arpeggio-bracket.texidoc | 12 + .../fr/texidocs/inserting-a-caesura.texidoc | 2 +- ...ragments-above-a-staff,-as-markups.texidoc | 7 + .../texidocs/isolated-percent-repeats.texidoc | 4 +- .../fr/texidocs/jazz-combo-template.texidoc | 4 +- .../keep-change-clefs-full-sized.texidoc | 8 + .../fr/texidocs/laissez-vibrer-ties.texidoc | 8 + .../letter-tablature-formatting.texidoc | 6 + Documentation/fr/texidocs/line-arrows.texidoc | 7 + .../fr/texidocs/lyrics-alignment.texidoc | 9 +- .../fr/texidocs/makam-example.texidoc | 2 +- ...ible-with-the-transparent-property.texidoc | 17 + ...-slurs-with-complex-dash-structure.texidoc | 8 +- ...taff-lines-thicker-than-the-others.texidoc | 8 +- ...ss-extenders-for-only-some-numbers.texidoc | 11 + ...anually-controlling-beam-positions.texidoc | 8 + ...ken-parts-with-a-cross-on-the-stem.texidoc | 8 + .../fr/texidocs/markup-lines.texidoc | 7 + .../fr/texidocs/measure-counter.texidoc | 7 + ...ayout-bar-lines-between-the-staves.texidoc | 6 +- ...measure-rests-in-a-polyphonic-part.texidoc | 8 + ...or-articulation-shorthand-notation.texidoc | 6 +- .../modifying-tuplet-bracket-length.texidoc | 13 + .../moving-dotted-notes-in-polyphony.texidoc | 10 + .../moving-slur-positions-vertically.texidoc | 13 + .../multi-measure-rest-markup.texidoc | 8 +- .../fr/texidocs/nesting-staves.texidoc | 2 +- .../non-default-tuplet-numbers.texidoc | 2 +- .../non-traditional-key-signatures.texidoc | 21 +- .../numbers-as-easy-note-heads.texidoc | 10 + ...-lyrics-spacing-in-newer-versions.texidoc} | 3 +- ...open-string-harmonics-in-tablature.texidoc | 8 + ...rchestra,-choir-and-piano-template.texidoc | 2 +- Documentation/fr/texidocs/ottava-text.texidoc | 7 +- .../outputting-the-version-number.texidoc | 10 + Documentation/fr/texidocs/page-label.texidoc | 7 + .../partcombine-and-autobeamoff.texidoc | 24 +- .../percent-repeat-count-visibility.texidoc | 3 +- .../texidocs/percent-repeat-counter.texidoc | 7 +- .../fr/texidocs/percussion-beaters.texidoc | 10 + ...-line-breaks-within-beamed-tuplets.texidoc | 2 +- .../fr/texidocs/piano-template-simple.texidoc | 2 +- ...no-template-with-centered-dynamics.texidoc | 8 - ...iano-template-with-centered-lyrics.texidoc | 2 +- ...no-template-with-melody-and-lyrics.texidoc | 2 +- ...placement-of-right-hand-fingerings.texidoc | 10 +- .../texidocs/polyphony-in-tablature.texidoc | 8 +- .../fr/texidocs/positioning-arpeggios.texidoc | 7 + ...ng-fingering-indications-precisely.texidoc | 10 + ...at-the-height-of-normal-note-beams.texidoc | 10 + ...ng-grace-notes-with-floating-space.texidoc | 10 +- .../positioning-multi-measure-rests.texidoc | 11 +- ...ing-segno-and-coda-with-line-break.texidoc | 9 + ...itioning-text-markups-inside-slurs.texidoc | 7 +- ...als-from-being-automatically-added.texidoc | 9 +- ...al-mark-from-removing-final-tuplet.texidoc | 8 + ...ted-when-the-key-signature-changes.texidoc | 11 +- ...t-sign-at-the-beginning-of-a-piece.texidoc | 8 +- ...g-bar-numbers-at-regular-intervals.texidoc | 4 +- ...ar-numbers-inside-boxes-or-circles.texidoc | 4 +- ...-hairpins-using-al-niente-notation.texidoc | 5 +- ...rinting-marks-at-the-end-of-a-line.texidoc | 9 +- .../printing-marks-on-every-staff.texidoc | 7 +- ...nd-rehearsal-marks-below-the-staff.texidoc | 3 +- ...sic-with-different-time-signatures.texidoc | 16 + ...-with-and-without-an-octave-marker.texidoc | 8 + .../printing-text-from-right-to-left.texidoc | 7 + ...e-bar-number-for-the-first-measure.texidoc | 6 +- .../proportional-strict-notespacing.texidoc | 9 + .../putting-lyrics-inside-the-staff.texidoc | 10 + ...g-another-voice-with-transposition.texidoc | 11 +- .../fr/texidocs/quoting-another-voice.texidoc | 21 +- .../texidocs/recorder-fingering-chart.texidoc | 3 +- ...efining-grace-note-global-defaults.texidoc | 4 +- .../removing-bar-numbers-from-a-score.texidoc | 9 +- ...ffgroup,-pianostaff,-or-grandstaff.texidoc | 9 + .../removing-the-first-empty-line.texidoc | 7 +- Documentation/fr/texidocs/rest-styles.texidoc | 2 +- .../reverting-default-beam-endings.texidoc | 4 +- .../fr/texidocs/rhythmic-slashes.texidoc | 16 + .../satb-choir-template---four-staves.texidoc | 4 +- ...lations-from-key-signature-changes.texidoc | 17 + ...ting-hairpin-behavior-at-bar-lines.texidoc | 5 +- .../setting-system-separators.texidoc | 8 + ...he-double-repeat-default-for-volte.texidoc | 11 +- ...ing-the-minimum-length-of-hairpins.texidoc | 3 +- .../shortening-volta-brackets.texidoc | 9 +- .../showing-chords-at-changes.texidoc | 7 + ...on-above-and-below-a-note-or-chord.texidoc | 20 + .../fr/texidocs/simple-lead-sheet.texidoc | 4 +- ...ate-with-notes,-lyrics,-and-chords.texidoc | 4 +- ...th-notes,-lyrics,-chords-and-frets.texidoc | 7 + ...aff-template-with-notes-and-chords.texidoc | 9 +- ...aff-template-with-notes-and-lyrics.texidoc | 3 +- ...gle-staff-template-with-only-notes.texidoc | 4 +- .../fr/texidocs/skips-in-lyric-mode-2.texidoc | 9 + .../fr/texidocs/skips-in-lyric-mode.texidoc | 9 + .../fr/texidocs/slides-in-tablature.texidoc | 7 + ...snap-pizzicato-or-bartok-pizzicato.texidoc | 11 + ...ecifying-context-with-beatgrouping.texidoc | 4 +- .../stand-alone-two-column-markup.texidoc | 3 +- ...tem-and-beam-behavior-in-tablature.texidoc | 4 +- .../stem-cross-staff-engraver.texidoc | 9 + Documentation/fr/texidocs/stemlets.texidoc | 18 + .../fr/texidocs/strict-beat-beaming.texidoc | 9 + .../string-number-extender-lines.texidoc | 8 + .../string-quartet-template-simple.texidoc | 2 +- ...artet-template-with-separate-parts.texidoc | 11 +- .../fr/texidocs/subdividing-beams.texidoc | 4 +- ...warnings-for-clashing-note-columns.texidoc | 15 + .../fr/texidocs/table-of-contents.texidoc | 8 + .../fr/texidocs/three-sided-box.texidoc | 8 + .../fr/texidocs/tick-bar-lines.texidoc | 8 + ...ignature-in-parentheses---method-3.texidoc | 6 + .../time-signature-in-parentheses.texidoc | 6 + ...s-a-number-instead-of-the-fraction.texidoc | 13 +- ...tion-of-ancient-music-with-incipit.texidoc | 11 + ...inimum-accidentals-smart-transpose.texidoc | 9 +- .../texidocs/tweaking-clef-properties.texidoc | 31 +- ...tweaking-grace-layout-within-music.texidoc | 14 +- ...cket-at-the-start-of-a-staff-group.texidoc | 5 +- .../using-alternative-flag-styles.texidoc | 9 + ...racket-to-make-divisi-more-visible.texidoc | 9 +- .../using-beatlength-and-beatgrouping.texidoc | 2 +- ...ing-double-slurs-for-legato-chords.texidoc | 9 +- ...ace-note-slashes-with-normal-heads.texidoc | 3 +- ...object-to-access-grobs-with--tweak.texidoc | 28 + ...-generate-special-note-head-shapes.texidoc | 6 +- ...-command-to-tweak-individual-grobs.texidoc | 7 + .../using-the-whiteout-property.texidoc | 20 + .../using-ties-with-arpeggios.texidoc | 7 +- ...ine-as-a-baroque-articulation-mark.texidoc | 9 + ...y-aligned-dynamics-and-textscripts.texidoc | 5 +- ...ing-dynamics-across-multiple-notes.texidoc | 9 + ...tically-aligning-ossias-and-lyrics.texidoc | 3 +- .../vertically-centered-common-lyrics.texidoc | 8 + ...ring-paired-figured-bass-extenders.texidoc | 11 + ...ate-with-automatic-piano-reduction.texidoc | 4 +- ...aligned-below-and-above-the-staves.texidoc | 2 +- ...le-template-with-verse-and-refrain.texidoc | 8 +- .../texidocs/vocal-ensemble-template.texidoc | 4 +- .../fr/texidocs/volta-below-chords.texidoc | 7 + .../fr/texidocs/volta-multi-staff.texidoc | 8 + ...a-text-markup-using-repeatcommands.texidoc | 16 + .../woodwind-diagrams-key-lists.texidoc | 14 +- .../woodwind-diagrams-listing.texidoc | 8 +- Documentation/fr/translations.itexi | 317 +- Documentation/fr/usage.tely | 6 +- Documentation/fr/usage/external.itely | 220 +- Documentation/fr/usage/lilypond-book.itely | 311 +- Documentation/fr/usage/running.itely | 790 +- Documentation/fr/usage/suggestions.itely | 8 +- Documentation/fr/usage/updating.itely | 16 +- Documentation/fr/web.texi | 69 +- Documentation/fr/web/community.itexi | 599 +- Documentation/fr/web/download.itexi | 81 +- Documentation/fr/web/introduction.itexi | 456 +- Documentation/fr/web/manuals.itexi | 24 +- Documentation/hu/GNUmakefile | 6 +- Documentation/hu/included/GNUmakefile | 10 + Documentation/hu/learning.tely | 2 +- .../hu/learning/common-notation.itely | 4 +- Documentation/hu/learning/fundamental.itely | 8 +- Documentation/hu/learning/templates.itely | 4 +- Documentation/hu/learning/tutorial.itely | 6 +- Documentation/hu/learning/tweaks.itely | 2 +- Documentation/hu/macros.itexi | 4 +- Documentation/hu/translations.itexi | 93 +- Documentation/hu/usage.tely | 10 +- Documentation/hu/usage/lilypond-book.itely | 59 +- Documentation/hu/usage/running.itely | 4 +- Documentation/hu/usage/updating.itely | 2 +- Documentation/hu/web.texi | 25 +- Documentation/hu/web/community.itexi | 8 +- Documentation/hu/web/download.itexi | 6 +- Documentation/hu/web/introduction.itexi | 3 +- Documentation/hu/web/manuals.itexi | 2 +- Documentation/included/README | 2 +- Documentation/included/authors.itexi | 182 +- Documentation/included/chord-names-jazz.ly | 161 +- .../included/chord-names-languages.ly | 2 +- Documentation/included/compile.itexi | 120 +- .../included/display-predefined-fretboards.ly | 27 +- .../display-predefined-mandolin-fretboards.ly | 4 +- .../display-predefined-string-tunings.ly | 38 +- .../display-predefined-ukulele-fretboards.ly | 4 +- Documentation/included/engraver-example.ily | 2 +- Documentation/included/font-table.ly | 10 +- .../included/generating-output.itexi | 1 + Documentation/included/gonville.ly | 2 +- Documentation/included/helpus.itexi | 34 +- Documentation/included/note-head-style.ly | 27 +- Documentation/included/percussion-chart.ly | 164 +- Documentation/included/script-chart.ly | 2 +- Documentation/included/simple.ly | 5 +- Documentation/included/special-characters.ly | 17 + Documentation/it/GNUmakefile | 6 +- Documentation/it/included/GNUmakefile | 5 + .../it/included/generating-output.itexi | 227 + Documentation/it/included/helpus.itexi | 161 + Documentation/it/learning.tely | 4 +- .../it/learning/common-notation.itely | 11 +- Documentation/it/learning/fundamental.itely | 132 +- Documentation/it/learning/preface.itely | 2 +- Documentation/it/learning/templates.itely | 57 +- Documentation/it/learning/tutorial.itely | 2 +- Documentation/it/macros.itexi | 7 +- Documentation/it/notation.tely | 127 + Documentation/it/notation/GNUmakefile | 5 + Documentation/it/notation/notation.itely | 37 + Documentation/it/notation/pitches.itely | 3002 ++++ Documentation/it/search-box.ihtml | 15 +- .../texidocs/adding-ambitus-per-voice.texidoc | 7 + .../ambitus-with-multiple-voices.texidoc | 8 + ...n-transcription-of-gregorian-music.texidoc | 2 +- ...rn-transcription-of-mensural-music.texidoc | 2 +- .../texidocs/anglican-psalm-template.texidoc | 2 +- ...depending-on-the-step-of-the-scale.texidoc | 21 + .../texidocs/changing-the-ambitus-gap.texidoc | 7 + ...notes-at-the-start-of-a-new-system.texidoc | 8 + .../it/texidocs/hymn-template.texidoc | 2 +- .../it/texidocs/jazz-combo-template.texidoc | 2 +- .../non-traditional-key-signatures.texidoc | 24 + .../numbers-as-easy-note-heads.texidoc | 11 + ...rchestra,-choir-and-piano-template.texidoc | 2 +- Documentation/it/texidocs/ottava-text.texidoc | 9 + .../it/texidocs/piano-template-simple.texidoc | 2 +- ...no-template-with-centered-dynamics.texidoc | 8 - ...iano-template-with-centered-lyrics.texidoc | 2 +- ...no-template-with-melody-and-lyrics.texidoc | 2 +- ...als-from-being-automatically-added.texidoc | 10 + ...ted-when-the-key-signature-changes.texidoc | 9 + .../satb-choir-template---four-staves.texidoc | 2 +- ...ate-with-notes,-lyrics,-and-chords.texidoc | 2 +- ...aff-template-with-notes-and-chords.texidoc | 2 +- ...aff-template-with-notes-and-lyrics.texidoc | 2 +- ...gle-staff-template-with-only-notes.texidoc | 4 +- .../string-quartet-template-simple.texidoc | 2 +- ...artet-template-with-separate-parts.texidoc | 6 +- ...inimum-accidentals-smart-transpose.texidoc | 25 + .../texidocs/tweaking-clef-properties.texidoc | 35 + ...ate-with-automatic-piano-reduction.texidoc | 2 +- ...aligned-below-and-above-the-staves.texidoc | 2 +- ...le-template-with-verse-and-refrain.texidoc | 2 +- .../texidocs/vocal-ensemble-template.texidoc | 2 +- Documentation/it/translations.itexi | 390 +- Documentation/it/usage.tely | 4 +- Documentation/it/usage/external.itely | 121 +- Documentation/it/usage/lilypond-book.itely | 220 +- Documentation/it/usage/running.itely | 668 +- Documentation/it/usage/suggestions.itely | 8 +- Documentation/it/usage/updating.itely | 12 +- Documentation/it/web.texi | 75 +- Documentation/it/web/community.itexi | 463 +- Documentation/it/web/download.itexi | 29 +- Documentation/it/web/introduction.itexi | 164 +- Documentation/it/web/manuals.itexi | 113 +- Documentation/it/web/news-front.itexi | 70 - Documentation/ja/GNUmakefile | 4 +- Documentation/ja/dedication.itely | 2 +- .../ja/included/generating-output.itexi | 7 +- Documentation/ja/learning.tely | 4 +- .../ja/learning/common-notation.itely | 14 +- Documentation/ja/learning/fundamental.itely | 103 +- Documentation/ja/learning/preface.itely | 4 +- Documentation/ja/learning/templates.itely | 59 +- Documentation/ja/learning/tutorial.itely | 11 +- Documentation/ja/learning/tweaks.itely | 385 +- Documentation/ja/macros.itexi | 4 +- Documentation/ja/notation.tely | 19 +- .../ja/notation/changing-defaults.itely | 4455 ++++++ Documentation/ja/notation/cheatsheet.itely | 306 + Documentation/ja/notation/chords.itely | 1230 ++ Documentation/ja/notation/contemporary.itely | 239 + Documentation/ja/notation/editorial.itely | 44 +- Documentation/ja/notation/expressive.itely | 76 +- .../ja/notation/fretted-strings.itely | 1932 +++ Documentation/ja/notation/input.itely | 3328 +++++ Documentation/ja/notation/keyboards.itely | 689 + Documentation/ja/notation/notation.itely | 4 +- Documentation/ja/notation/percussion.itely | 645 + Documentation/ja/notation/pitches.itely | 476 +- Documentation/ja/notation/repeats.itely | 147 +- Documentation/ja/notation/rhythms.itely | 844 +- Documentation/ja/notation/simultaneous.itely | 376 +- Documentation/ja/notation/spacing.itely | 3752 +++++ Documentation/ja/notation/specialist.itely | 44 + Documentation/ja/notation/staff.itely | 913 +- Documentation/ja/notation/text.itely | 168 +- .../ja/notation/unfretted-strings.itely | 232 + Documentation/ja/notation/vocal.itely | 3331 +++++ Documentation/ja/notation/wind.itely | 449 + Documentation/ja/notation/world.itely | 596 + .../ja/texidocs/piano-template-simple.texidoc | 6 + ...no-template-with-centered-dynamics.texidoc | 6 - ...iano-template-with-centered-lyrics.texidoc | 5 +- ...no-template-with-melody-and-lyrics.texidoc | 5 +- ...ate-with-notes,-lyrics,-and-chords.texidoc | 5 +- ...aff-template-with-notes-and-chords.texidoc | 3 +- ...aff-template-with-notes-and-lyrics.texidoc | 13 +- ...gle-staff-template-with-only-notes.texidoc | 9 +- .../string-quartet-template-simple.texidoc | 7 +- ...artet-template-with-separate-parts.texidoc | 22 +- ...ate-with-automatic-piano-reduction.texidoc | 5 +- ...aligned-below-and-above-the-staves.texidoc | 8 +- .../texidocs/vocal-ensemble-template.texidoc | 8 +- Documentation/ja/translations.itexi | 550 +- Documentation/ja/usage.tely | 4 +- Documentation/ja/usage/external.itely | 122 +- Documentation/ja/usage/lilypond-book.itely | 1359 +- Documentation/ja/usage/running.itely | 762 +- Documentation/ja/usage/suggestions.itely | 6 +- Documentation/ja/usage/updating.itely | 19 +- Documentation/ja/web.texi | 108 +- Documentation/ja/web/community.itexi | 433 +- Documentation/ja/web/download.itexi | 35 +- Documentation/ja/web/introduction.itexi | 173 +- Documentation/ja/web/manuals.itexi | 41 +- Documentation/learning.tely | 2 +- Documentation/learning/common-notation.itely | 9 +- Documentation/learning/fundamental.itely | 114 +- Documentation/learning/preface.itely | 2 +- Documentation/learning/templates.itely | 51 +- Documentation/learning/tutorial.itely | 2 +- Documentation/learning/tweaks.itely | 299 +- Documentation/lily_search.js | 2 +- Documentation/lilypond-texi2html.init | 38 +- .../{web => }/ly-examples/GNUmakefile | 7 +- .../{web => }/ly-examples/ancient-headword.ly | 5 +- .../{web => }/ly-examples/aucun-snippet.ly | 74 +- .../{web => }/ly-examples/bach-bwv610.ly | 4 +- .../{web => }/ly-examples/bach-schenker.ly | 23 +- .../{web => }/ly-examples/cary-layout.ily | 41 +- Documentation/{web => }/ly-examples/cary.ly | 71 +- Documentation/{web => }/ly-examples/chart.ly | 7 +- .../{web => }/ly-examples/example-header.ily | 3 +- .../{web => }/ly-examples/granados.ly | 13 +- .../{web => }/ly-examples/orchestra.ly | 3 +- .../{web => }/ly-examples/sesto-full.ly | 4 +- .../{web => }/ly-examples/sesto-piano.ly | 3 +- .../{web => }/ly-examples/sesto-violin.ly | 2 +- Documentation/{web => }/ly-examples/sesto.ily | 5 +- .../{web => }/ly-examples/tab-example.ly | 16 +- Documentation/{web => }/ly-examples/theory.ly | 34 +- Documentation/macros.itexi | 2 +- Documentation/misc/ANNOUNCE-0.1 | 24 +- Documentation/misc/ANNOUNCE-1.0 | 7 +- Documentation/misc/ANNOUNCE-1.2 | 14 +- Documentation/misc/CHANGES-0.0 | 147 +- Documentation/misc/CHANGES-0.1 | 241 +- Documentation/misc/CHANGES-1.0 | 197 +- Documentation/misc/CHANGES-1.1 | 479 +- Documentation/misc/CHANGES-1.2 | 35 +- Documentation/misc/CHANGES-1.3 | 282 +- Documentation/misc/CHANGES-1.4 | 3 +- Documentation/misc/CHANGES-1.5 | 37 +- Documentation/misc/ChangeLog-1.5 | 891 +- Documentation/misc/ChangeLog-2.1 | 693 +- Documentation/misc/ChangeLog-2.10 | 1760 +-- Documentation/misc/ChangeLog-2.3 | 349 +- Documentation/misc/GNUmakefile | 1 + Documentation/misc/NEWS-1.2 | 10 +- Documentation/misc/NEWS-1.4 | 8 +- Documentation/misc/announce-v2.0.html | 214 + Documentation/misc/announce-v2.10.html | 105 + Documentation/misc/announce-v2.12.de.html | 103 + Documentation/misc/announce-v2.12.es.html | 122 + Documentation/misc/announce-v2.12.fr.html | 123 + Documentation/misc/announce-v2.12.html | 110 + Documentation/misc/announce-v2.2.html | 400 + Documentation/misc/announce-v2.4.html | 86 + Documentation/misc/announce-v2.6.html | 57 + Documentation/misc/announce-v2.8.html | 119 + Documentation/misc/browser-language.de.html | 141 + Documentation/misc/browser-language.es.html | 72 + Documentation/misc/browser-language.fr.html | 79 + Documentation/misc/browser-language.html | 72 + Documentation/misc/browser-language.hu.html | 242 + Documentation/misc/browser-language.ja.html | 85 + Documentation/misc/browser-language.nl.html | 76 + Documentation/music-glossary.tely | 72 +- Documentation/nl/GNUmakefile | 6 +- .../nl/included/generating-output.itexi | 6 +- Documentation/nl/learning.tely | 2 +- .../nl/learning/common-notation.itely | 34 +- Documentation/nl/learning/fundamental.itely | 205 +- Documentation/nl/learning/tutorial.itely | 37 +- Documentation/nl/macros.itexi | 36 +- Documentation/nl/search-box.ihtml | 8 +- Documentation/nl/translations.itexi | 44 +- Documentation/nl/web.texi | 69 +- Documentation/nl/web/download.itexi | 52 +- Documentation/nl/web/introduction.itexi | 166 +- Documentation/nl/web/manuals.itexi | 68 +- Documentation/notation.tely | 2 +- Documentation/notation/ancient.itely | 262 +- .../notation/changing-defaults.itely | 862 +- Documentation/notation/cheatsheet.itely | 2 +- Documentation/notation/chords.itely | 166 +- Documentation/notation/contemporary.itely | 2 +- Documentation/notation/editorial.itely | 43 +- Documentation/notation/expressive.itely | 80 +- Documentation/notation/fretted-strings.itely | 263 +- Documentation/notation/input.itely | 812 +- Documentation/notation/keyboards.itely | 71 +- .../notation/notation-appendices.itely | 467 +- Documentation/notation/notation.itely | 2 +- Documentation/notation/percussion.itely | 39 +- Documentation/notation/pitches.itely | 231 +- Documentation/notation/repeats.itely | 109 +- Documentation/notation/rhythms.itely | 609 +- Documentation/notation/simultaneous.itely | 160 +- Documentation/notation/spacing.itely | 300 +- Documentation/notation/specialist.itely | 2 +- Documentation/notation/staff.itely | 485 +- Documentation/notation/text.itely | 156 +- .../notation/unfretted-strings.itely | 5 +- Documentation/notation/vocal.itely | 167 +- Documentation/notation/wind.itely | 50 +- Documentation/notation/world.itely | 15 +- .../pictures/Learning_Macos_welcome.png | Bin 51699 -> 55395 bytes .../pictures/architecture-diagram.png | Bin 79300 -> 61692 bytes .../pictures/bwv861mm33-34-annotate.svg | 2 +- .../text-input-parts-both-annotate-de.png | Bin 30248 -> 30356 bytes .../text-input-parts-both-annotate-de.svg | 2 +- .../text-input-parts-single-annotate-de.png | Bin 23876 -> 24453 bytes .../text-input-parts-single-annotate-de.svg | 2 +- Documentation/po/GNUmakefile | 2 +- Documentation/po/cs.po | 6642 ++++++--- Documentation/po/de.po | 5920 +++++--- Documentation/po/es.po | 4646 ++++--- Documentation/po/fr.po | 4510 +++--- Documentation/po/hu.po | 5478 +++++--- Documentation/po/it.po | 5407 +++++--- Documentation/po/ja.po | 5419 +++++--- Documentation/po/lilypond-doc.pot | 11504 +++++++++++++++- Documentation/po/nl.po | 5414 +++++--- Documentation/po/zh.po | 5595 +++++--- Documentation/search-box.ihtml | 14 +- Documentation/snippets.tely | 9 +- Documentation/snippets/GNUmakefile | 6 + .../snippets/accordion-discant-symbols.ly | 24 +- ...a-figured-bass-above-or-below-the-notes.ly | 36 +- .../snippets/adding-ambitus-per-voice.ly | 29 +- .../adding-an-extra-staff-at-a-line-break.ly | 18 +- .../snippets/adding-an-extra-staff.ly | 14 +- .../adding-bar-lines-to-chordnames-context.ly | 25 +- ...hen-using-tuplet-and-non-tuplet-rhythms.ly | 23 +- Documentation/snippets/adding-drum-parts.ly | 40 +- .../adding-extra-fingering-with-scheme.ly | 53 + .../snippets/adding-fingerings-to-a-score.ly | 6 +- .../adding-fingerings-to-tablatures.ly | 36 +- ...to-staves-which-get-split-after-a-break.ly | 7 +- ...adding-orchestral-cues-to-a-vocal-score.ly | 83 +- ...ound-an-expressive-mark-or-chordal-note.ly | 14 +- .../adding-the-current-date-to-a-score.ly | 22 +- ...ing-volta-brackets-to-additional-staves.ly | 40 +- .../additional-voices-to-avoid-collisions.ly | 37 +- .../snippets/adjusting-grace-note-spacing.ly | 13 +- .../adjusting-lyrics-vertical-spacing.ly | 37 +- .../adjusting-the-shape-of-falls-and-doits.ly | 34 +- ...aligning-and-centering-instrument-names.ly | 17 +- .../snippets/aligning-bar-numbers.ly | 43 +- ...ing-marks-with-various-notation-objects.ly | 62 +- ...-objects-created-with-the--mark-command.ly | 5 +- .../aligning-syllables-with-melisma.ly | 42 + ...ngerings-to-be-printed-inside-the-staff.ly | 36 +- .../altering-the-length-of-beamed-stems.ly | 22 +- .../snippets/alternative-bar-numbering.ly | 35 + .../snippets/alternative-breve-note.ly | 34 +- .../snippets/ambitus-with-multiple-voices.ly | 33 +- Documentation/snippets/ambitus.ly | 4 +- .../analysis-brackets-above-the-staff.ly | 15 +- Documentation/snippets/ancient-fonts.ly | 41 +- Documentation/snippets/ancient-headword.ly | 32 +- .../snippets/ancient-notation-intro.itely | 1 + ...modern-transcription-of-gregorian-music.ly | 63 +- ...-modern-transcription-of-mensural-music.ly | 88 +- .../snippets/ancient-time-signatures.ly | 11 +- .../snippets/anglican-psalm-template.ly | 39 +- ...yles-depending-on-the-step-of-the-scale.ly | 74 +- .../snippets/arabic-improvisation.ly | 31 +- Documentation/snippets/asymmetric-slurs.ly | 14 +- .../snippets/automatic-beam-subdivisions.ly | 28 +- .../snippets/automatic-notation.snippet-list | 6 + .../automatically-change-durations.ly | 43 + ...oiding-collisions-with-chord-fingerings.ly | 21 +- ...-notation-for-guitar--with-text-spanner.ly | 111 +- .../snippets/beam-endings-in-score-context.ly | 50 +- .../snippets/beam-grouping-in-7-8-time.ly | 59 +- .../snippets/beams-across-line-breaks.ly | 34 +- ...staff-lines-using-the--whiteout-command.ly | 17 +- Documentation/snippets/book-parts.ly | 3 +- Documentation/snippets/breathing-signs.ly | 5 +- .../snippets/broken-crescendo-hairpin.ly | 29 +- .../caesura-railtracks-with-fermata.ly | 15 +- .../center-text-below-hairpin-dynamics.ly | 17 +- ...ring-markup-on-note-heads-automatically.ly | 44 +- .../snippets/changing--flageolet-mark-size.ly | 33 +- ...changing-a-single-notes-size-in-a-chord.ly | 19 +- .../snippets/changing-beam-knee-gap.ly | 46 +- .../snippets/changing-chord-separator.ly | 21 +- .../changing-form-of-multi-measure-rests.ly | 37 +- .../snippets/changing-fret-orientations.ly | 17 +- ...ng-midi-output-to-one-channel-per-voice.ly | 49 +- .../snippets/changing-partcombine-texts.ly | 32 +- ...hanging-properties-for-individual-grobs.ly | 5 +- .../snippets/changing-stanza-fonts.ly | 5 +- ...xt-and-spanner-styles-for-text-dynamics.ly | 56 +- .../snippets/changing-the-ambitus-gap.ly | 39 +- ...f-a-slur-from-solid-to-dotted-or-dashed.ly | 15 +- .../changing-the-breath-mark-symbol.ly | 36 +- ...names-to-german-or-semi-german-notation.ly | 16 +- .../changing-the-default-text-font-family.ly | 5 +- ...ging-the-interval-of-lines-on-the-stave.ly | 4 +- ...he-number-of-augmentation-dots-per-note.ly | 40 +- ...changing-the-number-of-lines-in-a-staff.ly | 6 +- ...e-positions-of-figured-bass-alterations.ly | 24 +- .../changing-the-size-of-woodwind-diagrams.ly | 52 +- .../snippets/changing-the-staff-size.ly | 6 +- ...ging-the-tempo-without-a-metronome-mark.ly | 34 +- .../changing-the-text-for-sustain-markings.ly | 16 +- ...signature-without-affecting-the-beaming.ly | 68 - .../snippets/changing-the-tuplet-number.ly | 40 +- ...olymetric-section-using--scaledurations.ly | 46 +- .../snippets/chant-or-psalms-notation.ly | 57 +- .../snippets/chord-glissando-in-tablature.ly | 52 +- .../snippets/chord-name-exceptions.ly | 24 +- Documentation/snippets/chord-name-major7.ly | 25 +- .../snippets/chordchanges-for-fretboards.ly | 43 +- Documentation/snippets/chords-headword.ly | 14 +- Documentation/snippets/chords-intro.itely | 1 + Documentation/snippets/chords.snippet-list | 1 + ...-can-be-transposed-by-arbitrary-amounts.ly | 4 +- Documentation/snippets/clip-systems.ly | 42 +- Documentation/snippets/clusters.ly | 14 +- ...coloring-notes-depending-on-their-pitch.ly | 5 +- .../combining-dynamics-with-markup-texts.ly | 16 +- .../combining-two-parts-on-the-same-staff.ly | 70 +- .../snippets/compound-time-signatures.ly | 69 +- ...onducting-signs,-measure-grouping-signs.ly | 93 +- .../snippets/connecting-notes.snippet-list | 5 + .../consistently-left-aligned-bar-numbers.ly | 55 + .../snippets/contemporary-glissando.ly | 33 +- .../contemporary-notation.snippet-list | 13 + .../contexts-and-engravers-intro.itely | 1 + .../contexts-and-engravers.snippet-list | 3 +- ...g-spanner-visibility-after-a-line-break.ly | 51 +- ...lling-the-placement-of-chord-fingerings.ly | 37 +- ...olling-the-vertical-ordering-of-scripts.ly | 52 +- .../controlling-tuplet-bracket-visibility.ly | 35 +- .../snippets/correction-wanted.snippet-list | 2 + .../snippets/creating-a-delayed-turn.ly | 46 +- ...-a-sequence-of-notes-on-various-pitches.ly | 65 +- ...eggios-across-notes-in-different-voices.ly | 33 +- .../snippets/creating-blank-staves.ly | 17 +- ...-cross-staff-arpeggios-in-a-piano-staff.ly | 33 +- ...cross-staff-arpeggios-in-other-contexts.ly | 35 +- .../creating-double-digit-fingerings.ly | 48 + ...creating-metronome-marks-in-markup-mode.ly | 31 +- .../creating-real-parenthesized-dynamics.ly | 25 +- .../creating-simultaneous-rehearsal-marks.ly | 17 +- .../snippets/creating-slurs-across-voices.ly | 20 +- .../snippets/creating-text-spanners.ly | 15 +- ...ff-chords---beaming-problems-workaround.ly | 52 + Documentation/snippets/cross-staff-stems.ly | 44 + .../snippets/cross-staff-tremolos.ly | 30 +- Documentation/snippets/custodes.ly | 13 +- .../customizing-fretboard-fret-diagrams.ly | 29 +- .../customizing-markup-fret-diagrams.ly | 37 +- ...f-stems-on-the-center-line-of-the-staff.ly | 22 +- ...n-engraver-in-scheme--ambitus-engraver.ly} | 58 +- ...efined-fretboards-for-other-instruments.ly | 131 +- .../snippets/demo-midiinstruments.ly | 6 +- .../snippets/demonstrating-all-headers.ly | 6 +- Documentation/snippets/devel.snippet-list | 2 + ...bracket-with-only-one-staff-in-a-system.ly | 50 +- .../snippets/displaying-complex-chords.ly | 29 +- .../snippets/displaying-grob-ancestry.ly | 134 +- ...entals-for-each-note-including-naturals.ly | 75 - Documentation/snippets/dotted-harmonics.ly | 5 +- Documentation/snippets/double-glissando.ly | 6 +- .../snippets/drawing-boxes-around-grobs.ly | 10 +- .../drawing-circles-around-note-heads.ly | 2 +- .../drawing-circles-around-various-objects.ly | 4 +- .../dynamics-custom-text-spanner-postfix.ly | 64 +- .../snippets/dynamics-text-spanner-postfix.ly | 66 +- .../editorial-annotations-intro.itely | 1 + .../editorial-annotations.snippet-list | 2 + Documentation/snippets/editorial-headword.ly | 38 +- ...ng-native-postscript-in-a--markup-block.ly | 14 +- .../snippets/engravers-one-by-one.ly | 50 +- .../snippets/engraving-ties-manually.ly | 47 +- .../engraving-tremolos-with-floating-beams.ly | 9 +- ...l-tuplets-using-only-one--times-command.ly | 57 +- Documentation/snippets/expressive-headword.ly | 35 +- .../snippets/expressive-marks-intro.itely | 1 + .../snippets/expressive-marks.snippet-list | 5 +- .../snippets/faking-a-hammer-in-tablatures.ly | 27 +- .../snippets/figured-bass-headword.ly | 36 +- .../snippets/fine-tuning-pedal-brackets.ly | 3 +- .../fingering-symbols-for-wind-instruments.ly | 22 +- ...-indications,-and-right-hand-fingerings.ly | 32 +- Documentation/snippets/flamenco-notation.ly | 90 +- .../snippets/flat-flags-and-beam-nibs.ly | 103 +- Documentation/snippets/flute-slap-notation.ly | 6 +- .../forcing-a-clef-symbol-to-be-displayed.ly | 3 +- .../forcing-horizontal-shift-of-notes.ly | 36 +- .../snippets/forcing-hyphens-to-be-shown.ly | 15 +- ...-width-to-adapt-to-metronomemarks-width.ly | 6 +- ...-to-start-from-a-given-letter-or-number.ly | 6 +- .../snippets/formatting-lyrics-syllables.ly | 10 +- .../fret-diagrams-explained-and-developed.ly | 3 +- .../snippets/fretboards-alternate-tables.ly | 72 +- Documentation/snippets/fretted-headword.ly | 14 +- .../fretted-string-harmonics-in-tablature.ly | 34 +- .../snippets/fretted-strings-intro.itely | 1 + .../snippets/fretted-strings.snippet-list | 1 - .../snippets/generating-custom-flags.ly | 43 +- .../snippets/generating-random-notes.ly | 24 +- ...arts-in-scheme-without-using-the-parser.ly | 119 + .../snippets/glissandi-can-skip-grobs.ly | 21 + .../graphical-and-text-woodwind-diagrams.ly | 55 +- .../grid-lines--changing-their-appearance.ly | 30 +- ...izing-rhythms-and-notes-synchronization.ly | 14 +- Documentation/snippets/grouping-beats.ly | 50 - Documentation/snippets/guitar-slides.ly | 18 +- .../snippets/guitar-strum-rhythms.ly | 34 +- .../hairpins-with-different-line-styles.ly | 14 +- Documentation/snippets/headword.snippet-list | 17 + ...y-customized-polymetric-time-signatures.ly | 8 +- ...tied-notes-at-the-start-of-a-new-system.ly | 44 +- ...ing-the-extender-line-for-text-dynamics.ly | 33 +- ...ynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly | 6 +- .../how-to-change-fret-diagram-position.ly | 8 +- ...ove-and-below-the-same-barline-method-1.ly | 5 +- ...ove-and-below-the-same-barline-method-2.ly | 5 +- ...to-put-ties-between-syllables-in-lyrics.ly | 6 +- Documentation/snippets/hymn-template.ly | 50 +- Documentation/snippets/incipit.ly | 68 +- ...ross-staff-chords-with-arpeggio-bracket.ly | 33 +- Documentation/snippets/inserting-a-caesura.ly | 31 +- ...ore-fragments-above-a-staff,-as-markups.ly | 6 +- .../snippets/isolated-percent-repeats.ly | 30 +- Documentation/snippets/jazz-combo-template.ly | 68 +- .../snippets/keep-change-clefs-full-sized.ly | 15 +- Documentation/snippets/keyboard-headword.ly | 35 +- Documentation/snippets/keyboards-intro.itely | 1 + Documentation/snippets/keyboards.snippet-list | 3 +- Documentation/snippets/laissez-vibrer-ties.ly | 6 +- .../snippets/letter-tablature-formatting.ly | 25 +- Documentation/snippets/line-arrows.ly | 11 +- Documentation/snippets/lyrics-alignment.ly | 43 +- .../snippets/lyrics-old-spacing-settings.ly | 129 - Documentation/snippets/makam-example.ly | 54 +- ...invisible-with-the-transparent-property.ly | 16 +- ...aking-slurs-with-complex-dash-structure.ly | 110 +- ...ome-staff-lines-thicker-than-the-others.ly | 46 +- ...ed-bass-extenders-for-only-some-numbers.ly | 6 +- .../manually-controlling-beam-positions.ly | 7 +- ...f-spoken-parts-with-a-cross-on-the-stem.ly | 13 +- Documentation/snippets/markup-lines.ly | 7 +- Documentation/snippets/measure-counter.ly | 14 +- ...che-layout-bar-lines-between-the-staves.ly | 40 +- ...ulti-measure-rests-in-a-polyphonic-part.ly | 6 +- Documentation/snippets/midi-intro.itely | 1 + .../snippets/modern-tab-text-clef.ly | 32 - ...ues-for-articulation-shorthand-notation.ly | 50 +- .../modifying-tuplet-bracket-length.ly | 6 +- .../moving-dotted-notes-in-polyphony.ly | 16 +- .../moving-slur-positions-vertically.ly | 23 +- .../snippets/multi-measure-rest-markup.ly | 57 +- Documentation/snippets/nesting-staves.ly | 58 +- .../new/adding-fingerings-to-tablatures.ly | 37 - ...adding-orchestral-cues-to-a-vocal-score.ly | 80 + .../new/adjusting-lyrics-vertical-spacing.ly | 33 - .../snippets/new/alternative-bar-numbering.ly | 27 + .../snippets/new/alternative-breve-note.ly | 13 - Documentation/snippets/new/ancient-fonts.ly | 225 + .../snippets/new/ancient-headword.ly | 134 - ...modern-transcription-of-gregorian-music.ly | 52 + .../new/automatic-beam-subdivisions.ly | 39 - ...-notation-for-guitar--with-text-spanner.ly | 63 + .../new/beam-endings-in-score-context.ly | 43 - .../snippets/new/beam-grouping-in-7-8-time.ly | 20 - ...ring-markup-on-note-heads-automatically.ly | 42 +- .../snippets/new/changing-the-ambitus-gap.ly | 40 - ...he-number-of-augmentation-dots-per-note.ly | 17 - .../changing-the-size-of-woodwind-diagrams.ly | 31 - ...signature-without-affecting-the-beaming.ly | 19 - ...olymetric-section-using--scaledurations.ly | 39 + .../snippets/new/chant-or-psalms-notation.ly | 37 + .../new/chord-glissando-in-tablature.ly | 29 - .../new/chordchanges-for-fretboards.ly | 23 - Documentation/snippets/new/chords-headword.ly | 12 +- Documentation/snippets/new/clip-systems.ly | 88 - .../snippets/new/compound-time-signatures.ly | 31 - ...onducting-signs,-measure-grouping-signs.ly | 19 +- ...g-spanner-visibility-after-a-line-break.ly | 37 - ...-a-sequence-of-notes-on-various-pitches.ly | 27 + .../snippets/new/cross-staff-stems.ly | 36 + ...n-engraver-in-scheme--ambitus-engraver.ly} | 43 +- ...efined-fretboards-for-other-instruments.ly | 167 - .../snippets/new/displaying-complex-chords.ly | 25 - .../snippets/new/displaying-grob-ancestry.ly | 132 - ...entals-for-each-note-including-naturals.ly | 23 - .../dynamics-custom-text-spanner-postfix.ly | 35 - .../new/dynamics-text-spanner-postfix.ly | 25 - .../snippets/new/editorial-headword.ly | 99 - .../snippets/new/engravers-one-by-one.ly | 273 - .../snippets/new/expressive-headword.ly | 270 - .../new/faking-a-hammer-in-tablatures.ly | 19 - .../snippets/new/figured-bass-headword.ly | 112 - .../snippets/new/flamenco-notation.ly | 250 - .../new/fretboards-alternate-tables.ly | 75 - .../snippets/new/fretted-headword.ly | 12 +- .../fretted-string-harmonics-in-tablature.ly | 74 - .../snippets/new/generating-custom-flags.ly | 62 + .../snippets/new/glissandi-can-skip-grobs.ly | 13 + .../graphical-and-text-woodwind-diagrams.ly | 30 - Documentation/snippets/new/grouping-beats.ly | 15 - Documentation/snippets/new/guitar-slides.ly | 3 +- ...tied-notes-at-the-start-of-a-new-system.ly | 15 - Documentation/snippets/new/incipit.ly | 58 +- .../snippets/new/jazz-combo-template.ly | 274 + .../snippets/new/keyboard-headword.ly | 248 - .../new/letter-tablature-formatting.ly | 30 - Documentation/snippets/new/makam-example.ly | 22 - ...invisible-with-the-transparent-property.ly | 38 + ...aking-slurs-with-complex-dash-structure.ly | 36 - .../snippets/new/modern-tab-text-clef.ly | 16 - .../new/non-default-tuplet-numbers.ly | 41 - .../new/non-traditional-key-signatures.ly | 36 - .../new/numbers-as-easy-note-heads.ly | 30 +- .../new/open-string-harmonics-in-tablature.ly | 64 - .../piano-template-with-centered-dynamics.ly | 53 - .../snippets/new/pitches-headword.ly | 143 - .../new/positioning-multi-measure-rests.ly | 59 + .../redefining-grace-note-global-defaults.ly | 33 + .../snippets/new/repeats-headword.ly | 131 - .../new/reverting-default-beam-endings.ly | 21 - .../snippets/new/rhythms-headword.ly | 216 - .../new/score-for-diatonic-accordion.ly | 240 + ...ing-the-double-repeat-default-for-volte.ly | 19 - ...ulation-above-and-below-a-note-or-chord.ly | 36 - .../snippets/new/simultaneous-headword.ly | 314 - .../snippets/new/slides-in-tablature.ly | 38 - Documentation/snippets/new/staff-headword.ly | 16 +- .../stem-and-beam-behavior-in-tablature.ly | 21 - .../snippets/new/strict-beat-beaming.ly | 21 + .../new/string-number-extender-lines.ly | 34 + .../snippets/new/subdividing-beams.ly | 40 - Documentation/snippets/new/text-headword.ly | 234 - .../snippets/new/unfretted-headword.ly | 230 - .../new/using-alternative-flag-styles.ly | 33 + ...ng-grace-note-slashes-with-normal-heads.ly | 18 + ...grob-object-to-access-grobs-with--tweak.ly | 75 - .../new/using-the-whiteout-property.ly | 30 - ...template-with-automatic-piano-reduction.ly | 101 - ...nsemble-template-with-verse-and-refrain.ly | 99 - .../snippets/new/vocal-ensemble-template.ly | 94 - Documentation/snippets/new/vocal-headword.ly | 73 - Documentation/snippets/new/wind-headword.ly | 52 - .../new/woodwind-diagrams-key-lists.ly | 31 +- .../snippets/new/woodwind-diagrams-listing.ly | 95 - .../snippets/non-default-tuplet-numbers.ly | 54 +- .../non-traditional-key-signatures.ly | 128 +- .../snippets/numbers-as-easy-note-heads.ly | 48 +- ...-2.12-lyrics-spacing-in-newer-versions.ly} | 23 +- .../open-string-harmonics-in-tablature.ly | 35 +- .../orchestra,-choir-and-piano-template.ly | 58 +- Documentation/snippets/ottava-text.ly | 43 +- .../snippets/outputting-the-version-number.ly | 8 +- Documentation/snippets/page-label.ly | 3 +- .../snippets/paper-and-layout-intro.itely | 1 + .../snippets/partcombine-and-autobeamoff.ly | 104 +- .../percent-repeat-count-visibility.ly | 29 +- .../snippets/percent-repeat-counter.ly | 32 +- Documentation/snippets/percussion-beaters.ly | 4 +- Documentation/snippets/percussion-intro.itely | 1 + ...tting-line-breaks-within-beamed-tuplets.ly | 38 +- .../snippets/piano-template-simple.ly | 39 +- .../piano-template-with-centered-dynamics.ly | 106 - .../piano-template-with-centered-lyrics.ly | 48 +- .../piano-template-with-melody-and-lyrics.ly | 48 +- Documentation/snippets/pitches-headword.ly | 36 +- Documentation/snippets/pitches-intro.itely | 1 + Documentation/snippets/pitches.snippet-list | 2 +- .../placement-of-right-hand-fingerings.ly | 35 +- .../snippets/polyphony-in-tablature.ly | 31 +- .../snippets/positioning-arpeggios.ly | 13 +- ...tioning-fingering-indications-precisely.ly | 5 +- ...eams-at-the-height-of-normal-note-beams.ly | 18 +- ...tioning-grace-notes-with-floating-space.ly | 44 +- .../positioning-multi-measure-rests.ly | 95 +- ...itioning-segno-and-coda-with-line-break.ly | 37 +- .../positioning-text-markups-inside-slurs.ly | 35 +- .../snippets/preparing-parts.snippet-list | 4 + ...naturals-from-being-automatically-added.ly | 41 +- ...g-final-mark-from-removing-final-tuplet.ly | 14 +- ...-printed-when-the-key-signature-changes.ly | 41 +- ...repeat-sign-at-the-beginning-of-a-piece.ly | 31 +- ...inting-bar-numbers-at-regular-intervals.ly | 40 +- ...ing-bar-numbers-inside-boxes-or-circles.ly | 30 +- ...nting-hairpins-using-al-niente-notation.ly | 34 +- .../printing-marks-at-the-end-of-a-line.ly | 24 +- .../snippets/printing-marks-on-every-staff.ly | 32 +- ...ome-and-rehearsal-marks-below-the-staff.ly | 40 +- ...ng-music-with-different-time-signatures.ly | 5 +- ...names-with-and-without-an-octave-marker.ly | 15 +- .../printing-text-from-right-to-left.ly | 6 +- ...ng-the-bar-number-for-the-first-measure.ly | 47 +- .../proportional-strict-notespacing.ly | 6 +- .../putting-lyrics-inside-the-staff.ly | 5 +- ...uoting-another-voice-with-transposition.ly | 42 +- .../snippets/quoting-another-voice.ly | 54 +- .../snippets/real-music.snippet-list | 13 + .../snippets/really-cool.snippet-list | 16 + .../snippets/really-simple.snippet-list | 27 + .../snippets/recorder-fingering-chart.ly | 24 +- .../redefining-grace-note-global-defaults.ly | 68 +- .../removing-bar-numbers-from-a-score.ly | 39 +- ...n-staffgroup,-pianostaff,-or-grandstaff.ly | 15 +- .../snippets/removing-the-first-empty-line.ly | 59 +- Documentation/snippets/repeats-headword.ly | 39 +- Documentation/snippets/repeats-intro.itely | 1 + Documentation/snippets/rest-styles.ly | 28 +- .../reverting-default-beam-endings.ly | 52 +- Documentation/snippets/rhythmic-slashes.ly | 4 +- Documentation/snippets/rhythms-headword.ly | 35 +- Documentation/snippets/rhythms-intro.itely | 1 + Documentation/snippets/rhythms.snippet-list | 5 +- .../satb-choir-template---four-staves.ly | 35 +- .../snippets/scheme-language.snippet-list | 18 + .../snippets/score-for-diatonic-accordion.ly | 27 +- .../screech-boink.ly => screech-and-boink.ly} | 24 +- Documentation/snippets/screech-boink.ly | 81 - ...ancellations-from-key-signature-changes.ly | 2 +- .../setting-hairpin-behavior-at-bar-lines.ly | 36 +- .../snippets/setting-system-separators.ly | 18 +- ...ing-the-double-repeat-default-for-volte.ly | 45 +- .../setting-the-minimum-length-of-hairpins.ly | 32 +- .../snippets/shortening-volta-brackets.ly | 37 +- .../snippets/showing-chords-at-changes.ly | 21 +- ...ulation-above-and-below-a-note-or-chord.ly | 32 +- Documentation/snippets/simple-lead-sheet.ly | 28 +- .../snippets/simultaneous-headword.ly | 282 +- .../snippets/simultaneous-notes-intro.itely | 1 + ...template-with-notes,-lyrics,-and-chords.ly | 49 +- ...te-with-notes,-lyrics,-chords-and-frets.ly | 15 +- ...le-staff-template-with-notes-and-chords.ly | 50 +- ...le-staff-template-with-notes-and-lyrics.ly | 67 +- .../single-staff-template-with-only-notes.ly | 56 +- .../snippets/skips-in-lyric-mode-2.ly | 6 +- Documentation/snippets/skips-in-lyric-mode.ly | 6 +- Documentation/snippets/slides-in-tablature.ly | 37 +- .../snap-pizzicato-bartok-pizzicato.ly | 53 - ... => snap-pizzicato-or-bartok-pizzicato.ly} | 14 +- Documentation/snippets/spacing-intro.itely | 1 + .../snippets/specific-notation.snippet-list | 29 + Documentation/snippets/staff-headword.ly | 19 +- .../snippets/staff-notation-intro.itely | 1 + .../snippets/staff-notation.snippet-list | 7 +- .../snippets/stand-alone-two-column-markup.ly | 29 +- .../stem-and-beam-behavior-in-tablature.ly | 51 +- Documentation/snippets/stemlets.ly | 6 +- Documentation/snippets/strict-beat-beaming.ly | 29 + .../snippets/string-number-extender-lines.ly | 21 +- .../string-quartet-template-simple.ly | 50 +- ...ng-quartet-template-with-separate-parts.ly | 151 +- .../snippets/stylesheet.snippet-list | 1 + Documentation/snippets/subdividing-beams.ly | 82 +- ...sing-warnings-for-clashing-note-columns.ly | 8 +- .../snippets/symbols-and-glyphs.snippet-list | 13 + .../syntax-and-expressions.snippet-list | 2 + Documentation/snippets/table-of-contents.ly | 7 +- Documentation/snippets/template-intro.itely | 1 + Documentation/snippets/template.snippet-list | 1 - Documentation/snippets/text-headword.ly | 33 +- Documentation/snippets/text-intro.itely | 1 + Documentation/snippets/text.snippet-list | 1 + Documentation/snippets/three-sided-box.ly | 6 +- Documentation/snippets/tick-bar-lines.ly | 3 +- ...ime-signature-in-parentheses---method-3.ly | 25 + .../snippets/time-signature-in-parentheses.ly | 6 +- ...tor-as-a-number-instead-of-the-fraction.ly | 36 +- Documentation/snippets/titles-intro.itely | 1 + ...scription-of-ancient-music-with-incipit.ly | 18 +- ...ith-minimum-accidentals-smart-transpose.ly | 98 +- .../snippets/tweaking-clef-properties.ly | 109 +- .../tweaking-grace-layout-within-music.ly | 49 +- .../snippets/tweaks-and-overrides-intro.itely | 1 + .../tweaks-and-overrides.snippet-list | 7 + Documentation/snippets/unfretted-headword.ly | 40 +- .../snippets/unfretted-strings-intro.itely | 1 + .../snippets/unfretted-strings.snippet-list | 2 +- ...e-bracket-at-the-start-of-a-staff-group.ly | 38 +- .../snippets/using-alternative-flag-styles.ly | 38 +- ...ggiobracket-to-make-divisi-more-visible.ly | 38 +- ...ing-autochange-with-more-than-one-voice.ly | 51 + .../using-double-slurs-for-legato-chords.ly | 31 +- ...ng-grace-note-slashes-with-normal-heads.ly | 40 +- ...grob-object-to-access-grobs-with--tweak.ly | 74 +- ...pt-to-generate-special-note-head-shapes.ly | 19 +- ...tweak-command-to-tweak-individual-grobs.ly | 6 +- .../snippets/using-the-whiteout-property.ly | 64 +- .../snippets/using-ties-with-arpeggios.ly | 40 +- Documentation/snippets/utf-8.ly | 2 +- .../snippets/version-specific.snippet-list | 8 + ...cal-line-as-a-baroque-articulation-mark.ly | 5 +- ...ically-aligned-dynamics-and-textscripts.ly | 53 +- ...aligning-dynamics-across-multiple-notes.ly | 15 +- .../vertically-aligning-ossias-and-lyrics.ly | 35 +- .../vertically-centered-common-lyrics.ly | 3 +- ...centering-paired-figured-bass-extenders.ly | 17 +- ...template-with-automatic-piano-reduction.ly | 72 +- ...rics-aligned-below-and-above-the-staves.ly | 70 +- ...nsemble-template-with-verse-and-refrain.ly | 72 +- .../snippets/vocal-ensemble-template.ly | 72 +- Documentation/snippets/vocal-headword.ly | 34 +- .../snippets/vocal-music-intro.itely | 1 + .../snippets/vocal-music.snippet-list | 3 +- Documentation/snippets/volta-below-chords.ly | 25 +- Documentation/snippets/volta-multi-staff.ly | 6 +- .../volta-text-markup-using-repeatcommands.ly | 5 +- Documentation/snippets/wind-headword.ly | 41 +- Documentation/snippets/winds-intro.itely | 1 + .../snippets/woodwind-diagrams-key-lists.ly | 67 +- .../snippets/woodwind-diagrams-listing.ly | 49 +- .../snippets/workaround.snippet-list | 19 + .../snippets/world-music-intro.itely | 1 + Documentation/topdocs/GNUmakefile | 2 - Documentation/translations.itexi | 2928 +++- Documentation/usage.tely | 2 +- Documentation/usage/external.itely | 121 +- .../usage/latex-lilypond-example.latex | 28 +- Documentation/usage/lilypond-book.itely | 216 +- Documentation/usage/running.itely | 683 +- Documentation/usage/suggestions.itely | 8 +- Documentation/usage/updating.itely | 11 +- Documentation/web.texi | 63 +- Documentation/web/GNUmakefile | 2 +- Documentation/web/community.itexi | 420 +- Documentation/web/download.itexi | 23 +- Documentation/web/introduction.itexi | 136 +- Documentation/web/manuals.itexi | 8 +- Documentation/web/news-front.itexi | 156 +- Documentation/web/news.itexi | 879 +- Documentation/web/server/GNUmakefile | 2 +- Documentation/web/server/tweets.xml | 60 + Documentation/web/we-wrote.bib | 21 +- Documentation/zh/GNUmakefile | 5 +- Documentation/zh/included/GNUmakefile | 10 + Documentation/zh/macros.itexi | 12 +- Documentation/zh/search-box.ihtml | 19 +- Documentation/zh/translations.itexi | 28 +- Documentation/zh/web.texi | 117 +- Documentation/zh/web/community.itexi | 1148 +- Documentation/zh/web/download.itexi | 135 +- Documentation/zh/web/introduction.itexi | 1267 +- Documentation/zh/web/manuals.itexi | 193 +- Documentation/zh/web/news-front.itexi | 117 +- GNUmakefile.in | 73 +- INSTALL.txt | 113 +- NEWS.txt | 490 +- ROADMAP | 6 +- THANKS | 70 + VERSION | 8 +- aclocal.m4 | 103 +- config.hh.in | 4 + config.make.in | 2 + configure | 2655 ++-- configure.in | 49 +- elisp/lilypond-mode.el | 10 +- flower/cpu-timer.cc | 4 +- flower/file-cookie.cc | 14 +- flower/file-name.cc | 28 +- flower/file-path.cc | 22 +- flower/getopt-long.cc | 79 +- flower/include/arithmetic-operator.hh | 14 +- flower/include/axis.hh | 13 +- flower/include/compare.hh | 32 +- flower/include/cpu-timer.hh | 2 +- flower/include/direction.hh | 61 +- flower/include/drul-array.hh | 6 +- flower/include/file-cookie.hh | 17 +- flower/include/file-name.hh | 4 +- flower/include/file-path.hh | 2 +- flower/include/flower-proto.hh | 12 +- flower/include/getopt-long.hh | 3 +- flower/include/guile-compatibility.hh | 2 +- flower/include/international.hh | 4 +- flower/include/interval-set.hh | 2 +- flower/include/interval.hh | 14 +- flower/include/interval.tcc | 10 +- flower/include/libc-extension.hh | 16 +- flower/include/matrix.hh | 24 +- flower/include/memory-stream.hh | 6 +- flower/include/offset.hh | 9 +- flower/include/parray.hh | 4 +- flower/include/polynomial.hh | 11 +- flower/include/pqueue.hh | 32 +- flower/include/rational.hh | 9 +- flower/include/real.hh | 4 +- flower/include/std-string.hh | 21 +- flower/include/std-vector.hh | 111 +- flower/include/string-convert.hh | 11 +- flower/include/tuple.hh | 21 +- flower/include/virtual-methods.hh | 15 +- flower/include/warn.hh | 51 +- flower/include/yaffut-parameters.hh | 2 +- flower/include/yaffut.hh | 322 +- flower/international.cc | 4 +- flower/interval-set.cc | 38 +- flower/interval.cc | 2 +- flower/libc-extension.cc | 20 +- flower/memory-stream.cc | 27 +- flower/offset.cc | 14 +- flower/polynomial.cc | 113 +- flower/rational.cc | 54 +- flower/std-string.cc | 14 +- flower/string-convert.cc | 55 +- flower/test-file-name.cc | 2 +- flower/test-file-path.cc | 7 +- flower/test-std.cc | 10 +- flower/test-string.cc | 5 +- flower/warn.cc | 216 +- input/regression/accidental-ancient.ly | 2 +- .../accidental-broken-tie-spacing.ly | 12 +- input/regression/accidental-cautionary.ly | 2 +- input/regression/accidental-clef-change.ly | 2 +- input/regression/accidental-collision.ly | 2 +- input/regression/accidental-contemporary.ly | 10 +- input/regression/accidental-double.ly | 2 +- .../accidental-forced-tie-barline.ly | 17 - input/regression/accidental-forced-tie.ly | 13 +- input/regression/accidental-ledger.ly | 2 +- input/regression/accidental-octave.ly | 2 +- input/regression/accidental-piano.ly | 4 +- .../accidental-placement-padding.ly | 2 +- .../accidental-placement-samepitch.ly | 2 +- input/regression/accidental-placement.ly | 2 +- input/regression/accidental-quarter.ly | 2 +- input/regression/accidental-single-double.ly | 2 +- input/regression/accidental-suggestions.ly | 2 +- input/regression/accidental-tie-overridden.ly | 23 - input/regression/accidental-tie.ly | 13 +- .../accidental-unbroken-tie-spacing.ly | 2 +- input/regression/accidental-voice.ly | 4 +- input/regression/accidental.ly | 2 +- input/regression/alignment-order.ly | 26 +- .../alignment-vertical-manual-setting.ly | 2 +- input/regression/allfontstyle.ily | 2 +- input/regression/alter-broken.ly | 45 + input/regression/ambitus-cue.ly | 27 + input/regression/ambitus-gap.ly | 2 +- input/regression/ambitus-percussion-staves.ly | 2 +- input/regression/ambitus-pitch-ordering.ly | 2 +- input/regression/ambitus-slur.ly | 12 + input/regression/ambitus-with-ligature.ly | 2 +- input/regression/ambitus.ly | 2 +- input/regression/apply-context.ly | 2 +- input/regression/apply-output.ly | 2 +- input/regression/arpeggio-bracket.ly | 2 +- input/regression/arpeggio-collision.ly | 2 +- input/regression/arpeggio-no-overshoot.ly | 2 +- input/regression/arpeggio-no-staff-symbol.ly | 2 +- input/regression/arpeggio-parenthesis.ly | 2 +- input/regression/arpeggio-span-collision.ly | 2 +- input/regression/arpeggio-span-one-staff.ly | 2 +- input/regression/arpeggio.ly | 2 +- .../regression/articulation-snappizzicato.ly | 2 +- input/regression/augmentum.ly | 2 +- input/regression/auto-beam-bar.ly | 2 +- .../regression/auto-beam-beaming-override.ly | 2 +- input/regression/auto-beam-breathe.ly | 2 +- input/regression/auto-beam-exceptions.ly | 50 + input/regression/auto-beam-no-beam.ly | 2 +- input/regression/auto-beam-partial-grace.ly | 2 +- input/regression/auto-beam-partial.ly | 2 +- input/regression/auto-beam-recheck.ly | 2 +- input/regression/auto-beam-triplet.ly | 2 +- input/regression/auto-beam-tuplets.ly | 2 +- input/regression/auto-beam.ly | 2 +- input/regression/auto-change.ly | 2 +- input/regression/autobeam-3-4-rules.ly | 34 + input/regression/autobeam-nobeam.ly | 4 +- input/regression/autobeam-show-defaults.ly | 2 +- ...am-start-at-beginning-of-measure-in-3-4.ly | 19 - input/regression/autobeam-tuplet-recheck.ly | 16 + .../automatic-polyphony-context-id.ly | 2 +- .../automatic-polyphony-drumstaff.ly | 4 +- .../automatic-polyphony-tabstaff.ly | 4 +- input/regression/backend-excercise.ly | 4 +- input/regression/backend-svg.ly | 2 +- input/regression/baerenreiter-sarabande.ly | 15 +- input/regression/balloon.ly | 2 +- input/regression/bar-check-redefine.ly | 2 +- input/regression/bar-extent.ly | 2 +- input/regression/bar-line-dashed.ly | 17 - input/regression/bar-line-dotted.ly | 18 - input/regression/bar-line-segno.ly | 2 +- input/regression/bar-line-thick.ly | 15 - input/regression/bar-line-tick.ly | 16 - input/regression/bar-lines.ly | 38 + input/regression/bar-number-check-warning.ly | 19 + input/regression/bar-number-visibility.ly | 41 + input/regression/bar-number-volta-repeat.ly | 41 + input/regression/bar-number.ly | 2 +- input/regression/bar-scripts.ly | 2 +- input/regression/beam-auto-knee.ly | 2 +- input/regression/beam-auto.ly | 2 +- input/regression/beam-beamlet-break.ly | 2 +- input/regression/beam-beamlet-grace.ly | 2 +- input/regression/beam-beat-grouping.ly | 2 +- input/regression/beam-break-no-bar.ly | 2 +- input/regression/beam-break.ly | 2 +- input/regression/beam-broken-classic.ly | 43 + input/regression/beam-broken-difficult.ly | 27 + input/regression/beam-center-slope.ly | 2 +- .../regression/beam-collision-accidentals.ly | 4 +- input/regression/beam-collision-basic.ly | 2 +- input/regression/beam-collision-beamcount.ly | 2 +- input/regression/beam-collision-classic.ly | 2 +- .../regression/beam-collision-cross-staff.ly | 2 +- .../regression/beam-collision-cross-staff2.ly | 15 + .../beam-collision-feasible-region.ly | 2 +- input/regression/beam-collision-flag.ly | 11 + input/regression/beam-collision-grace.ly | 4 +- .../regression/beam-collision-large-object.ly | 2 +- input/regression/beam-collision-off.ly | 2 +- .../beam-collision-opposite-stem.ly | 2 +- .../beam-collision-prefatory-matter.ly | 2 +- .../regression/beam-collision-scaled-staff.ly | 2 +- input/regression/beam-collision-voice-only.ly | 2 +- input/regression/beam-concave-chord.ly | 18 +- input/regression/beam-concave-damped.ly | 2 +- input/regression/beam-concave.ly | 8 +- .../regression/beam-cross-staff-auto-knee.ly | 2 +- input/regression/beam-cross-staff-rest.ly | 19 + input/regression/beam-cross-staff-script.ly | 2 +- input/regression/beam-cross-staff-slope.ly | 2 +- input/regression/beam-cross-staff.ly | 6 +- input/regression/beam-damp.ly | 2 +- input/regression/beam-default-lengths.ly | 13 +- input/regression/beam-extreme.ly | 2 +- input/regression/beam-feather-breaking.ly | 2 +- .../beam-feather-knee-stem-length.ly | 2 +- input/regression/beam-feather.ly | 2 +- .../regression/beam-flat-retain-direction.ly | 2 +- input/regression/beam-forced-direction.ly | 2 +- input/regression/beam-french.ly | 2 +- input/regression/beam-funky-beamlet.ly | 2 +- input/regression/beam-funky.ly | 2 +- input/regression/beam-isknee.ly | 2 +- input/regression/beam-knee-symmetry.ly | 4 +- input/regression/beam-length.ly | 2 +- input/regression/beam-manual-beaming.ly | 2 +- input/regression/beam-multiple-cross-staff.ly | 4 +- .../beam-multiplicity-over-rests.ly | 10 +- input/regression/beam-outside-beamlets.ly | 2 +- input/regression/beam-over-barline.ly | 2 +- input/regression/beam-position.ly | 2 +- input/regression/beam-quant-standard.ly | 8 +- input/regression/beam-quanting-32nd.ly | 2 +- input/regression/beam-quanting-horizontal.ly | 2 +- input/regression/beam-quanting-overhang.ly | 13 + input/regression/beam-quarter.ly | 4 +- input/regression/beam-rest-extreme.ly | 14 + input/regression/beam-rest.ly | 2 +- input/regression/beam-second.ly | 2 +- input/regression/beam-shortened-lengths.ly | 14 +- input/regression/beam-single-stem.ly | 2 +- input/regression/beam-skip.ly | 18 +- input/regression/beam-slope-stemlet.ly | 2 +- input/regression/beam-subdivide-tuplets.ly | 20 + input/regression/beam-unconnected-beamlets.ly | 2 +- input/regression/beaming-ternary-metrum.ly | 2 +- input/regression/beaming-tuplet-regular.ly | 14 + input/regression/beaming.ly | 2 +- input/regression/beamlet-point-toward-beat.ly | 17 + input/regression/beamlet-test.ly | 36 + input/regression/beams.ly | 2 +- input/regression/bend-after.ly | 2 +- input/regression/bend-dot.ly | 2 +- input/regression/bom-mark.ly | 12 + input/regression/book-identifier-markup.ly | 2 +- input/regression/book-label-no-segfault.ly | 2 +- input/regression/bookpart-variable.ly | 2 +- input/regression/bookparts.ly | 4 +- .../break-alignment-anchor-alignment.ly | 8 +- input/regression/break-alignment-anchors.ly | 4 +- input/regression/break.ly | 2 +- input/regression/breathing-sign-ancient.ly | 7 +- .../regression/breathing-sign-custom-staff.ly | 2 +- input/regression/breathing-sign.ly | 2 +- input/regression/breve-extent.ly | 31 + input/regression/center-title.ly | 2 +- .../chord-additional-pitch-prefix.ly | 11 + input/regression/chord-changes.ly | 2 +- input/regression/chord-name-entry-11.ly | 2 +- input/regression/chord-name-entry.ly | 2 +- input/regression/chord-name-exceptions.ly | 2 +- input/regression/chord-name-major7.ly | 2 +- input/regression/chord-name-minor.ly | 13 + input/regression/chord-names-bass.ly | 2 +- .../regression/chord-names-in-grand-staff.ly | 2 +- input/regression/chord-names-languages.ly | 2 +- .../chord-names-lower-case-minor.ly | 2 +- input/regression/chord-repetition-relative.ly | 4 +- .../chord-repetition-script-stack.ly | 2 +- input/regression/chord-repetition-times.ly | 15 + input/regression/chord-repetition.ly | 2 +- input/regression/chord-scripts.ly | 2 +- input/regression/chord-slash-separator.ly | 11 + .../regression/chord-tremolo-articulations.ly | 2 +- .../chord-tremolo-other-commands.ly | 6 +- .../chord-tremolo-scaled-durations.ly | 4 +- input/regression/chord-tremolo-short.ly | 2 +- input/regression/chord-tremolo-single.ly | 2 +- .../chord-tremolo-stem-direction.ly | 2 +- input/regression/chord-tremolo-whole.ly | 2 +- input/regression/chord-tremolo.ly | 2 +- input/regression/chordnames-nochord.ly | 2 +- input/regression/chords-funky-ignatzek.ly | 8 +- input/regression/chromatic-scales.ly | 2 +- input/regression/clef-oct-visibility.ly | 2 +- input/regression/clef-oct.ly | 2 +- input/regression/clef-octavation.ly | 2 +- input/regression/clef-ottava.ly | 2 +- input/regression/clef-warn.ly | 5 +- input/regression/clefs.ly | 2 +- input/regression/clip-systems.ly | 4 +- input/regression/cluster-break.ly | 2 +- input/regression/cluster-cross-staff.ly | 2 +- input/regression/cluster-single-note.ly | 2 +- input/regression/cluster-style.ly | 2 +- input/regression/cluster.ly | 2 +- input/regression/collision-2.ly | 2 +- input/regression/collision-alignment.ly | 2 +- input/regression/collision-dots-invert.ly | 2 +- input/regression/collision-dots-move.ly | 18 +- .../collision-dots-up-space-dotted.ly | 2 +- input/regression/collision-dots.ly | 2 +- .../regression/collision-harmonic-no-dots.ly | 2 +- input/regression/collision-head-chords.ly | 2 +- input/regression/collision-head-solfa-fa.ly | 2 +- input/regression/collision-heads.ly | 2 +- input/regression/collision-manual.ly | 2 +- .../collision-merge-differently-dotted.ly | 2 +- .../collision-merge-differently-headed.ly | 2 +- input/regression/collision-merge-dots.ly | 2 +- input/regression/collision-mesh.ly | 2 +- input/regression/collision-seconds.ly | 18 +- input/regression/collision-whole.ly | 10 +- input/regression/collisions.ly | 2 +- input/regression/color.ly | 3 +- input/regression/completion-heads-factor.ly | 4 +- input/regression/completion-heads-lyrics.ly | 2 +- .../completion-heads-multiple-ties.ly | 2 +- .../completion-heads-polyphony-2.ly | 2 +- .../regression/completion-heads-polyphony.ly | 2 +- input/regression/completion-heads-tie.ly | 2 +- input/regression/completion-heads-tuplets.ly | 2 +- input/regression/completion-heads-unit.ly | 26 + input/regression/completion-heads.ly | 2 +- input/regression/completion-rest.ly | 4 +- input/regression/complex-once.ly | 10 + input/regression/compound-time-signatures.ly | 2 +- input/regression/context-die-staff.ly | 2 +- input/regression/context-mod-context.ly | 2 +- input/regression/context-mod-with.ly | 2 +- input/regression/context-nested-staffgroup.ly | 2 +- input/regression/context-string-tuning.ly | 25 + input/regression/cross-staff-stems.ly | 30 + input/regression/cue-clef-after-barline.ly | 38 + input/regression/cue-clef-begin-of-score.ly | 4 +- input/regression/cue-clef-keysignature.ly | 2 +- input/regression/cue-clef-manually.ly | 24 + input/regression/cue-clef-new-line.ly | 4 +- input/regression/cue-clef-octavation.ly | 2 +- input/regression/cue-clef.ly | 4 +- input/regression/custos.ly | 2 +- input/regression/dead-notes.ly | 2 +- input/regression/define-event-function.ly | 22 + input/regression/display-lily-tests.ly | 314 +- input/regression/dot-column-engraver.ly | 22 + input/regression/dot-column-note-collision.ly | 3 +- input/regression/dot-column-rest-collision.ly | 10 +- .../dot-column-vertical-positioning.ly | 13 + input/regression/dot-dot-count-override.ly | 2 +- input/regression/dot-flag-collision.ly | 2 +- input/regression/dot-rest-beam-trigger.ly | 2 +- .../regression/dot-rest-horizontal-spacing.ly | 2 +- input/regression/dot-up-voice-collision.ly | 8 +- input/regression/dots.ly | 2 +- .../regression/double-repeat-default-volta.ly | 2 +- input/regression/double-repeat.ly | 2 +- input/regression/drums.ly | 7 +- .../duration-identifier-compressed.ly | 2 +- .../dynamics-alignment-autobreak.ly | 17 + .../dynamics-alignment-breaker-linebreak.ly | 17 + .../dynamics-alignment-breaker-order.ly | 18 + ...cs-alignment-breaker-subsequent-spanner.ly | 15 + .../regression/dynamics-alignment-breaker.ly | 2 +- .../dynamics-alignment-no-line-linebreak.ly | 14 + .../regression/dynamics-alignment-no-line.ly | 2 +- .../dynamics-avoid-cross-staff-stem.ly | 16 + input/regression/dynamics-broken-hairpin.ly | 2 +- input/regression/dynamics-context-textspan.ly | 2 +- .../dynamics-custom-text-spanner-postfix.ly | 2 +- input/regression/dynamics-glyphs.ly | 2 +- input/regression/dynamics-hairpin-length.ly | 2 +- input/regression/dynamics-line.ly | 2 +- input/regression/dynamics-rest-positioning.ly | 2 +- .../dynamics-text-dynamics-context.ly | 35 + .../dynamics-text-left-text-alignment.ly | 2 +- .../regression/dynamics-text-right-padding.ly | 2 +- .../dynamics-text-spanner-abs-dynamic.ly | 2 +- .../dynamics-text-spanner-padding.ly | 2 +- .../dynamics-text-spanner-postfix.ly | 2 +- input/regression/dynamics-unbound-hairpin.ly | 2 +- input/regression/easy-notation-accidentals.ly | 2 +- input/regression/easy-notation.ly | 2 +- input/regression/empty-chord.ly | 10 + input/regression/episema.ly | 2 +- input/regression/event-listener-output.ly | 71 + input/regression/extratoken.ly | 20 + input/regression/fermata-rest-position.ly | 2 +- input/regression/figured-bass-alteration.ly | 2 +- .../figured-bass-continuation-center.ly | 2 +- .../figured-bass-continuation-end-position.ly | 4 +- .../figured-bass-continuation-forbid.ly | 2 +- .../figured-bass-continuation-modifiers.ly | 2 +- input/regression/figured-bass-continuation.ly | 2 +- input/regression/figured-bass-durations.ly | 2 +- .../figured-bass-extenders-markup.ly | 2 +- input/regression/figured-bass-ignore-rest.ly | 4 +- input/regression/figured-bass-implicit.ly | 2 +- .../figured-bass-slashed-numbers.ly | 2 +- input/regression/figured-bass-staff.ly | 2 +- input/regression/figured-bass.ly | 2 +- input/regression/fill-line-test.ly | 2 +- input/regression/filter-translators.ly | 2 +- input/regression/finger-chords-accidental.ly | 2 +- input/regression/finger-chords-dot.ly | 2 +- input/regression/finger-chords-order.ly | 4 +- input/regression/finger-chords.ly | 19 +- input/regression/fingering-cross-staff.ly | 4 +- input/regression/fingering.ly | 2 +- input/regression/flag-stem-begin-position.ly | 10 + input/regression/flags-default.ly | 26 +- input/regression/flags-in-scheme.ly | 28 +- .../flags-straight-stockhausen-boulez.ly | 6 +- input/regression/flags-straight.ly | 8 +- input/regression/follow-voice-break.ly | 2 +- input/regression/follow-voice-consecutive.ly | 2 +- input/regression/font-bogus-ligature.ly | 4 +- input/regression/font-family-override.ly | 2 +- input/regression/font-kern.ly | 2 +- input/regression/font-name-font-size.ly | 2 +- input/regression/font-name.ly | 2 +- input/regression/font-postscript.ly | 2 +- .../footnote-auto-numbering-page-reset.ly | 44 + .../footnote-auto-numbering-vertical-order.ly | 91 + input/regression/footnote-auto-numbering.ly | 65 + input/regression/footnote-break-visibility.ly | 15 +- input/regression/footnote-footer-padding.ly | 20 +- input/regression/footnote-spanner.ly | 20 +- input/regression/footnote.ly | 12 +- input/regression/fret-board-alignment.ly | 2 +- input/regression/fret-boards.ly | 2 +- input/regression/fret-diagram-origins.ly | 2 +- input/regression/fret-diagrams-capo.ly | 2 +- input/regression/fret-diagrams-dots.ly | 4 +- input/regression/fret-diagrams-fingering.ly | 2 +- input/regression/fret-diagrams-fret-label.ly | 6 +- input/regression/fret-diagrams-landscape.ly | 2 +- .../fret-diagrams-opposing-landscape.ly | 2 +- input/regression/fret-diagrams-size.ly | 4 +- .../regression/fret-diagrams-string-frets.ly | 2 +- .../fret-diagrams-string-thickness.ly | 2 +- input/regression/fret-diagrams-xo-label.ly | 2 +- input/regression/fretboard-chordchanges.ly | 2 +- input/regression/full-measure-rest-fermata.ly | 2 +- input/regression/general-scheme-bindings.ly | 2 +- input/regression/generic-output-property.ly | 2 +- input/regression/glissando-accidental.ly | 9 + input/regression/glissando-broken-multiple.ly | 25 + input/regression/glissando-broken-unkilled.ly | 2 +- input/regression/glissando-broken.ly | 2 +- input/regression/glissando-chord-linebreak.ly | 2 +- input/regression/glissando-chord.ly | 2 +- input/regression/glissando-consecutive.ly | 2 +- input/regression/glissando-cross-staff.ly | 20 + input/regression/glissando-index.ly | 4 +- input/regression/glissando-no-break.ly | 6 +- input/regression/glissando-skip.ly | 12 + input/regression/glissando.ly | 2 +- input/regression/grace-auto-beam.ly | 2 +- input/regression/grace-bar-line.ly | 2 +- input/regression/grace-bar-number.ly | 2 +- input/regression/grace-beam.ly | 2 +- input/regression/grace-direction-polyphony.ly | 2 +- input/regression/grace-end-2.ly | 2 +- input/regression/grace-end.ly | 2 +- input/regression/grace-nest1.ly | 2 +- input/regression/grace-nest2.ly | 2 +- input/regression/grace-nest3.ly | 2 +- input/regression/grace-nest4.ly | 2 +- input/regression/grace-nest5.ly | 2 +- input/regression/grace-part-combine.ly | 2 +- input/regression/grace-partial.ly | 2 +- input/regression/grace-slashed-no-slur.ly | 11 + input/regression/grace-staff-length.ly | 2 +- input/regression/grace-start.ly | 2 +- input/regression/grace-stem-length.ly | 2 +- input/regression/grace-stems.ly | 2 +- input/regression/grace-sync.ly | 4 +- input/regression/grace-types.ly | 2 +- input/regression/grace-unfold-repeat.ly | 2 +- input/regression/grace-volta-repeat-2.ly | 2 +- input/regression/grace-volta-repeat.ly | 2 +- input/regression/grace.ly | 2 +- input/regression/graphviz.ly | 11 +- input/regression/grid-lines.ly | 3 +- input/regression/grob-indirect-tweak.ly | 21 + input/regression/grob-tweak.ly | 2 +- input/regression/hairpin-arpeggio.ly | 14 + input/regression/hairpin-barline-break.ly | 2 +- input/regression/hairpin-circled.ly | 2 +- input/regression/hairpin-dashed.ly | 2 +- input/regression/hairpin-ending.ly | 2 +- .../hairpin-neighboring-span-dynamics.ly | 4 +- input/regression/hairpin-span-bar.ly | 30 + input/regression/hairpin-to-barline-mark.ly | 2 +- input/regression/hairpin-to-barline.ly | 2 +- input/regression/hairpin-to-rest.ly | 2 +- input/regression/hara-kiri-alive-with.ly | 2 +- input/regression/hara-kiri-drumstaff.ly | 2 +- .../hara-kiri-keep-previous-settings.ly | 2 +- input/regression/hara-kiri-percent-repeat.ly | 2 +- input/regression/hara-kiri-rhythmicstaff.ly | 2 +- input/regression/hara-kiri-staff.ly | 2 +- input/regression/hara-kiri-stanza-number.ly | 2 +- input/regression/hara-kiri-tabstaff.ly | 2 +- input/regression/harp-pedals-sanity-checks.ly | 7 +- input/regression/harp-pedals-tweaking.ly | 2 +- input/regression/harp-pedals.ly | 12 +- input/regression/header-book-multiple.ly | 35 + .../regression/header-book-multiplescores.ly | 33 + input/regression/header-bookpart-multiple.ly | 30 + input/regression/header-cyclic-reference.ly | 17 + input/regression/header-score-multiple.ly | 22 + input/regression/header-toplevel-multiple.ly | 19 + input/regression/horizontal-bracket-break.ly | 2 +- input/regression/horizontal-bracket-tweak.ly | 2 +- input/regression/horizontal-bracket.ly | 2 +- input/regression/id.ly | 9 + .../identifier-following-chordmode.ly | 4 +- input/regression/identifiers.ly | 2 +- input/regression/in-note.ly | 21 + input/regression/incipit.ly | 21 +- input/regression/include-string.ly | 2 +- input/regression/incompatible-stem-warning.ly | 20 +- input/regression/instrument-cue-name.ly | 2 +- input/regression/instrument-name-dynamic.ly | 2 +- input/regression/instrument-name-groups.ly | 2 +- input/regression/instrument-name-hara-kiri.ly | 2 +- input/regression/instrument-name-markup.ly | 2 +- input/regression/instrument-name-partial.ly | 2 +- .../instrument-name-pedal-lyrics.ly | 40 + input/regression/instrument-name-volta.ly | 2 +- input/regression/instrument-name-x-align.ly | 2 +- input/regression/instrument-name.ly | 2 +- .../instrument-switch-invalid-warning.ly | 15 + input/regression/instrument-switch.ly | 2 +- input/regression/invalid-engraver.ly | 4 +- input/regression/key-clefs.ly | 2 +- .../regression/key-signature-cancellation.ly | 2 +- input/regression/key-signature-left-edge.ly | 2 +- input/regression/key-signature-padding.ly | 2 +- .../key-signature-scordatura-persist.ly | 2 +- input/regression/key-signature-scordatura.ly | 2 +- input/regression/key-signature-space.ly | 2 +- input/regression/keys.ly | 2 +- input/regression/laissez-vibrer-arpeggio.ly | 2 +- input/regression/laissez-vibrer-chords.ly | 11 + input/regression/laissez-vibrer-tie-beam.ly | 2 +- .../laissez-vibrer-tie-head-direction.ly | 2 +- input/regression/laissez-vibrer-ties.ly | 2 +- input/regression/landscape.ly | 2 +- input/regression/layout-from.ly | 19 + input/regression/ledger-line-minimum.ly | 2 +- input/regression/ledger-line-shorten.ly | 2 +- .../regression/ledger-lines-varying-staves.ly | 2 +- input/regression/les-nereides.ly | 6 +- input/regression/ligature-bracket.ly | 2 +- input/regression/lily-in-scheme.ly | 8 +- input/regression/lilypond-book/GNUmakefile | 40 +- .../html-musicxml-file-compressed.htmly | 6 + .../html-musicxml-file-options.htmly | 6 + .../lilypond-book/html-musicxml-file.htmly | 6 + .../lilypond-book/html-newline-after-tag.html | 2 +- .../lilypond-book/html-space-after-tag.html | 2 +- .../lilypond-book/html-version-newline.html | 2 +- .../lilypond-book/html-version.html | 2 +- input/regression/lilypond-book/include.ly | 2 +- input/regression/lilypond-book/include.mxl | Bin 0 -> 28589 bytes input/regression/lilypond-book/include.xml | 55 + .../lilypond-book/include/GNUmakefile | 11 + .../lilypond-book/include/example.ly | 4 + .../lilypond-book/include/myvar.ily | 1 + input/regression/lilypond-book/include2.ly | 2 +- input/regression/lilypond-book/include3.ily | 6 +- .../lilypond-book/suffix-lyxml.lyxml | 2 +- .../lilypond-book/tex-auto-linebreak.lytex | 2 +- .../lilypond-book/tex-comment-firstline.lytex | 3 +- .../lilypond-book/tex-comments.lytex | 2 +- .../tex-graphics-package-added.lytex | 2 +- .../lilypond-book/tex-include-file.lytex | 14 +- .../lilypond-book/tex-include-options.lytex | 14 +- .../lilypond-book/tex-inline-lilypond.lytex | 2 +- .../tex-lilypond-inside-itemize.lytex | 12 +- .../tex-lilypond-inside-table.lytex | 10 +- .../tex-musicxml-file-options.lytex | 5 + .../lilypond-book/tex-musicxml-file.lytex | 5 + .../lilypond-book/tex-paragraphs.lytex | 2 +- .../lilypond-book/tex-snippet-options.lytex | 27 +- .../lilypond-book/tex-twocolumn.lytex | 31 +- .../lilypond-book/tex-verbatim.lytex | 9 +- .../lilypond-book/tex-version.lytex | 2 +- .../lilypond-book/texinfo-include-file.tely | 23 + .../texinfo-include-language-detection.tely | 5 + .../texinfo-language-detection.tely | 5 + .../texinfo-musicxml-file-options.tely | 12 + .../lilypond-book/texinfo-musicxml-file.tely | 12 + ...-docs.tely => texinfo-papersize-docs.tely} | 2 +- input/regression/line-arrows.ly | 2 +- input/regression/line-dash-small-period.ly | 2 +- input/regression/line-dashed-period.ly | 2 +- input/regression/line-style-zigzag-spacing.ly | 2 +- input/regression/line-style.ly | 2 +- input/regression/loglevels.ly | 43 + .../regression/lyric-combine-derived-voice.ly | 18 + .../regression/lyric-combine-empty-warning.ly | 6 +- input/regression/lyric-combine-new.ly | 2 +- input/regression/lyric-combine-polyphonic.ly | 2 +- .../lyric-combine-switch-voice-2.ly | 2 +- .../regression/lyric-combine-switch-voice.ly | 2 +- input/regression/lyric-combine.ly | 4 +- input/regression/lyric-extender-broken.ly | 2 +- input/regression/lyric-extender-completion.ly | 2 +- .../lyric-extender-includegraces.ly | 2 +- input/regression/lyric-extender-no-heads.ly | 2 +- input/regression/lyric-extender-rest.ly | 2 +- .../regression/lyric-extender-right-margin.ly | 2 +- input/regression/lyric-extender.ly | 2 +- input/regression/lyric-hyphen-break.ly | 6 +- input/regression/lyric-hyphen-grace.ly | 2 +- input/regression/lyric-hyphen-retain.ly | 2 +- input/regression/lyric-hyphen.ly | 2 +- .../lyric-ignore-melisma-alignment.ly | 2 +- input/regression/lyric-melisma-alignment.ly | 2 +- input/regression/lyric-melisma-manual.ly | 2 +- input/regression/lyric-melisma-melisma.ly | 2 +- .../regression/lyric-no-association-rhythm.ly | 2 +- input/regression/lyric-octave-eight.ly | 16 + input/regression/lyric-phrasing.ly | 2 +- input/regression/lyric-tie.ly | 2 +- input/regression/lyric-tweak.ly | 18 + input/regression/lyrics-after-grace.ly | 2 +- ...yrics-aligned-above-stay-close-to-staff.ly | 2 +- input/regression/lyrics-bar.ly | 2 +- input/regression/lyrics-includegraces.ly | 2 +- input/regression/lyrics-melisma-beam.ly | 2 +- input/regression/lyrics-no-notes.ly | 2 +- input/regression/lyrics-pass-under-bar.ly | 10 + input/regression/lyrics-spanbar.ly | 18 + input/regression/lyrics-tenor-clef.ly | 2 +- input/regression/markup-arrows.ly | 2 +- .../markup-bidi-explicit-embedding.ly | 2 +- .../markup-bidi-explicit-overrides.ly | 2 +- .../regression/markup-bidi-implicit-marks.ly | 2 +- input/regression/markup-bidi-pango.ly | 2 +- input/regression/markup-brace-warning.ly | 4 +- input/regression/markup-braces.ly | 2 +- .../markup-center-align-nocollision.ly | 17 + input/regression/markup-column-align.ly | 2 +- input/regression/markup-commands.ly | 2 +- input/regression/markup-cyclic-reference.ly | 26 + .../markup-depth-non-terminating.ly | 16 + input/regression/markup-diacritic-marks.ly | 2 +- input/regression/markup-eps.ly | 2 +- input/regression/markup-eyeglasses.ly | 2 +- input/regression/markup-line-thickness.ly | 2 +- input/regression/markup-lines-identifier.ly | 10 +- input/regression/markup-lines.ly | 14 +- input/regression/markup-music-glyph.ly | 3 +- input/regression/markup-note-dot.ly | 2 +- input/regression/markup-note-grob-style.ly | 2 +- input/regression/markup-note-styles.ly | 2 +- input/regression/markup-note.ly | 2 +- input/regression/markup-path-fill.ly | 2 +- input/regression/markup-path-linecap.ly | 2 +- input/regression/markup-path-linejoin.ly | 2 +- input/regression/markup-path.ly | 2 +- input/regression/markup-scheme.ly | 6 +- input/regression/markup-score-multi-system.ly | 2 +- input/regression/markup-score.ly | 2 +- input/regression/markup-special-characters.ly | 30 + input/regression/markup-stack.ly | 2 +- input/regression/markup-syntax.ly | 2 +- input/regression/markup-user.ly | 2 +- input/regression/markup-word-wrap.ly | 2 +- input/regression/measure-grouping.ly | 8 +- input/regression/mensural-ligatures.ly | 6 +- input/regression/mensural.ly | 2 +- .../regression/metronome-mark-broken-bound.ly | 36 + .../regression/metronome-mark-loose-column.ly | 2 +- .../metronome-marking-align-order.ly | 2 +- .../metronome-marking-break-align.ly | 2 +- input/regression/metronome-marking.ly | 2 +- ...metronome-multimeasure-rest-no-segfault.ly | 2 +- input/regression/metronome-parenthesized.ly | 2 +- input/regression/metronome-range.ly | 7 +- input/regression/metronome-text.ly | 11 +- input/regression/midi-drums.ly | 2 +- input/regression/midi-dynamics.ly | 2 +- input/regression/midi-grace.ly | 2 +- input/regression/midi-key-signature.ly | 2 +- input/regression/midi-lyric-barcheck.ly | 2 +- input/regression/midi-microtone-off.ly | 2 +- input/regression/midi-microtone.ly | 2 +- input/regression/midi-notes.ly | 2 +- input/regression/midi-partial.ly | 2 +- input/regression/midi-pedal.ly | 2 +- input/regression/midi-scales.ly | 2 +- input/regression/midi-transposition.ly | 2 +- input/regression/midi-tuplets.ly | 2 +- input/regression/midi-unisons.ly | 2 +- input/regression/midi-volume-equaliser.ly | 7 +- input/regression/midi/key-initial.ly | 2 +- .../regression/midi/key-option-all-staves.ly | 2 +- input/regression/midi/key-option.ly | 4 +- input/regression/midi/lyrics-addlyrics.ly | 2 +- input/regression/midi/partcombine.ly | 2 +- input/regression/midi/quantize-duration-2.ly | 4 +- input/regression/midi/quantize-duration.ly | 4 +- input/regression/midi/quantize-start.ly | 4 +- input/regression/midi/rest-dynamic.ly | 2 +- input/regression/midi/rest.ly | 2 +- input/regression/midi/staff-map-instrument.ly | 2 +- input/regression/midi/staff-map-voice.ly | 2 +- input/regression/midi/voice-2.ly | 2 +- input/regression/midi/voice-4.ly | 2 +- input/regression/midi/voice-5.ly | 2 +- input/regression/mm-rests2.ly | 2 +- input/regression/modal-transforms.ly | 2 +- input/regression/modern-tab-clef-scaled.ly | 4 +- input/regression/modern-tab-clef.ly | 4 +- input/regression/morgenlied.ly | 20 +- input/regression/mozart-hrn-3.ly | 104 +- input/regression/mozart-hrn3-allegro.ily | 346 +- input/regression/mozart-hrn3-defs.ily | 53 +- input/regression/mozart-hrn3-romanze.ily | 153 +- input/regression/mozart-hrn3-rondo.ily | 344 +- input/regression/multi-measure-rest-center.ly | 2 +- .../regression/multi-measure-rest-center2.ly | 2 +- input/regression/multi-measure-rest-grace.ly | 2 +- .../multi-measure-rest-instr-name.ly | 2 +- .../multi-measure-rest-multi-staff-center.ly | 2 +- .../regression/multi-measure-rest-spacing.ly | 2 +- .../multi-measure-rest-staff-position.ly | 12 + .../regression/multi-measure-rest-standard.ly | 20 + input/regression/multi-measure-rest-text.ly | 4 +- input/regression/multi-measure-rest-tweaks.ly | 25 + .../regression/multi-measure-rest-usebreve.ly | 24 - input/regression/multi-measure-rest.ly | 2 +- .../regression/multiple-time-sig-settings.ly | 2 +- .../regression/music-function-end-spanners.ly | 2 +- input/regression/music-function-post-event.ly | 2 +- .../music-function-string-markup.ly | 2 +- input/regression/music-function.ly | 2 +- input/regression/music-map.ly | 2 +- .../regression/musicxml/00-Introduction.itexi | 2 +- input/regression/musicxml/GNUmakefile | 11 +- .../musicxml/book-musicxml-testsuite.py | 64 + input/regression/nested-fill-lines.ly | 4 +- input/regression/nested-property-revert.ly | 18 - .../newaddlyrics-music-identifiers.ly | 2 +- input/regression/newaddlyrics.ly | 2 +- input/regression/no-header.ly | 4 +- input/regression/no-staff.ly | 2 +- input/regression/non-centered-bar-lines.ly | 2 +- input/regression/non-empty-text.ly | 2 +- input/regression/note-head-aiken.ly | 2 +- input/regression/note-head-chord.ly | 2 +- input/regression/note-head-funk.ly | 2 +- input/regression/note-head-harmonic-dotted.ly | 2 +- input/regression/note-head-harmonic-whole.ly | 2 +- input/regression/note-head-harmonic.ly | 2 +- input/regression/note-head-sacred-harp.ly | 2 +- input/regression/note-head-shape-minor.ly | 2 +- input/regression/note-head-solfa.ly | 2 +- .../regression/note-head-southern-harmony.ly | 2 +- input/regression/note-head-style.ly | 17 +- input/regression/note-head-walker.ly | 2 +- input/regression/note-line.ly | 2 +- input/regression/note-names-context.ly | 2 +- input/regression/note-names.ly | 2 +- input/regression/number-staff-lines.ly | 2 +- input/regression/one-line-breaking.ly | 9 + .../optimal-page-breaking-hstretch.ly | 8 +- input/regression/option-help.ly | 4 +- input/regression/optional-args-backup.ly | 31 + input/regression/optional-args-predicate.ly | 20 + input/regression/optional-args.ly | 33 + input/regression/ottava-broken.ly | 2 +- input/regression/ottava-edge.ly | 2 +- input/regression/ottava.ly | 2 +- input/regression/override-nest-scheme.ly | 2 +- input/regression/override-nest.ly | 2 +- input/regression/page-break-between-scores.ly | 2 +- input/regression/page-break-turn-toplevel.ly | 2 +- input/regression/page-break-warn-forbidden.ly | 7 +- .../regression/page-breaking-end-of-score.ly | 19 + .../page-breaking-good-estimation.ly | 2 +- .../page-breaking-markup-padding.ly | 2 +- .../page-breaking-markup-padding2.ly | 2 +- .../page-breaking-markup-padding3.ly | 2 +- .../page-breaking-max-systems-per-page.ly | 4 +- .../regression/page-breaking-min-distance.ly | 2 +- .../regression/page-breaking-min-distance2.ly | 5 +- .../regression/page-breaking-min-distance3.ly | 2 +- .../page-breaking-min-systems-per-page1.ly | 4 +- .../page-breaking-min-systems-per-page2.ly | 2 +- .../page-breaking-outside-staff-estimation.ly | 2 +- ...page-breaking-outside-staff-estimation2.ly | 2 +- input/regression/page-breaking-page-count1.ly | 4 +- input/regression/page-breaking-page-count2.ly | 4 +- input/regression/page-breaking-page-count3.ly | 4 +- .../page-breaking-rehearsal-mark.ly | 4 +- ...page-breaking-system-count-forced-break.ly | 2 +- .../page-breaking-systems-per-page.ly | 4 +- input/regression/page-breaks.ly | 6 +- input/regression/page-headers-and-footers.ly | 45 + input/regression/page-label-loose-column.ly | 4 +- input/regression/page-label.ly | 6 +- .../regression/page-layout-manual-position.ly | 2 +- input/regression/page-layout.ly | 2 +- input/regression/page-limited-space.ly | 2 +- input/regression/page-links-nolabel.ly | 4 +- input/regression/page-links.ly | 4 +- .../page-minimal-page-breaking-last-page.ly | 4 +- .../regression/page-minimal-page-breaking.ly | 4 +- input/regression/page-overflow-compression.ly | 2 +- input/regression/page-spacing-bass-figures.ly | 2 +- .../regression/page-spacing-bottom-spring.ly | 4 +- input/regression/page-spacing-dynamics.ly | 2 +- input/regression/page-spacing-markups.ly | 4 +- .../page-spacing-nonstaff-lines-and-markup.ly | 2 +- ...-spacing-nonstaff-lines-between-systems.ly | 6 +- .../page-spacing-nonstaff-lines-between.ly | 2 +- .../page-spacing-nonstaff-lines-bottom.ly | 2 +- ...e-spacing-nonstaff-lines-header-padding.ly | 2 +- ...page-spacing-nonstaff-lines-independent.ly | 2 +- .../page-spacing-nonstaff-lines-skylines.ly | 19 + .../page-spacing-nonstaff-lines-top.ly | 2 +- .../page-spacing-nonstaff-lines-unrelated.ly | 2 +- .../regression/page-spacing-rehearsal-mark.ly | 2 +- .../page-spacing-staff-group-hara-kiri.ly | 2 +- .../page-spacing-staff-group-nested.ly | 2 +- input/regression/page-spacing-staff-group.ly | 4 +- .../regression/page-spacing-stretchability.ly | 2 +- .../page-spacing-system-count-overfull.ly | 4 +- input/regression/page-spacing-system-count.ly | 2 +- .../regression/page-spacing-tall-headfoot.ly | 2 +- .../page-spacing-top-markup-spacing.ly | 2 +- .../page-spacing-top-system-spacing.ly | 2 +- input/regression/page-spacing.ly | 2 +- input/regression/page-top-space.ly | 2 +- ...page-turn-page-breaking-auto-first-page.ly | 2 +- ...age-turn-page-breaking-auto-first-page2.ly | 2 +- .../page-turn-page-breaking-badturns.ly | 4 +- .../page-turn-page-breaking-repeats.ly | 2 +- input/regression/page-turn-page-breaking.ly | 2 +- input/regression/palm-mute.ly | 2 +- input/regression/paper-default-margins-a6.ly | 2 +- input/regression/paper-default-margins-def.ly | 2 +- input/regression/paper-margins-consistency.ly | 3 +- input/regression/paper-margins-left-margin.ly | 2 +- input/regression/paper-margins-line-width.ly | 2 +- input/regression/paper-margins-no-checks.ly | 2 +- input/regression/paper-margins-overrun.ly | 3 +- .../regression/paper-margins-right-margin.ly | 2 +- input/regression/paper-margins.ly | 2 +- input/regression/paper-nested-override.ly | 2 +- input/regression/paper-nested-override2.ly | 2 +- input/regression/paper-twosided-bcorr.ly | 2 +- input/regression/paper-twosided.ly | 2 +- input/regression/parenthesize-markup.ly | 2 +- .../parenthesize-singlenotes-chords-rests.ly | 2 +- input/regression/parenthesize.ly | 2 +- input/regression/part-combine-3voices.ly | 18 + input/regression/part-combine-a2.ly | 2 +- input/regression/part-combine-cross.ly | 2 +- .../part-combine-force-mmrest-position.ly | 2 +- input/regression/part-combine-force-once.ly | 2 +- input/regression/part-combine-force.ly | 2 +- input/regression/part-combine-global.ly | 2 +- input/regression/part-combine-markup.ly | 2 +- .../part-combine-mmrest-after-solo.ly | 2 +- input/regression/part-combine-solo-end.ly | 2 +- input/regression/part-combine-solo-global.ly | 2 +- input/regression/part-combine-solo.ly | 2 +- input/regression/part-combine-text-wait.ly | 2 +- input/regression/part-combine-text.ly | 2 +- input/regression/part-combine-tuplet-end.ly | 2 +- .../regression/part-combine-tuplet-single.ly | 2 +- input/regression/part-combine.ly | 4 +- input/regression/partial-polymetric.ly | 2 +- input/regression/pdfmark-metadata-unicode.ly | 4 +- input/regression/pdfmark-metadata.ly | 2 +- input/regression/pedal-bracket.ly | 22 +- input/regression/pedal-end.ly | 2 +- input/regression/pedal-ped.ly | 2 +- input/regression/phrasing-slur-dash.ly | 2 +- input/regression/phrasing-slur-multiple.ly | 22 +- input/regression/phrasing-slur-slur-avoid.ly | 2 +- input/regression/phrasing-slur-tuplet.ly | 2 +- input/regression/point-and-click-types.ly | 7 + .../predefined-fretboards-transpose.ly | 2 +- input/regression/predefined-fretboards.ly | 2 +- input/regression/prefatory-empty-spacing.ly | 2 +- input/regression/prefatory-separation.ly | 2 +- input/regression/prefatory-spacing-matter.ly | 2 +- input/regression/profile-property-access.ly | 4 +- input/regression/property-grace-polyphony.ly | 2 +- input/regression/property-nested-override.ly | 2 +- input/regression/property-nested-revert.ly | 2 +- input/regression/property-once.ly | 2 +- input/regression/push-to-tag.ly | 26 + input/regression/quote-cue-during.ly | 2 +- input/regression/quote-cue-event-types.ly | 2 +- input/regression/quote-cyclic.ly | 2 +- input/regression/quote-during-subvoice.ly | 68 + input/regression/quote-during.ly | 6 +- input/regression/quote-grace.ly | 2 +- input/regression/quote-kill-cues.ly | 2 +- input/regression/quote-overrides.ly | 8 +- input/regression/quote-tie.ly | 2 +- input/regression/quote-transposition.ly | 2 +- input/regression/quote-tuplet-end.ly | 2 +- input/regression/quote-tuplet.ly | 2 +- input/regression/quote.ly | 7 +- input/regression/ragged-bottom-one-page.ly | 2 +- input/regression/ragged-right-compressed.ly | 4 +- input/regression/ragged-right-disabled.ly | 4 +- input/regression/ragged-right-one-line.ly | 4 +- .../rehearsal-mark-align-priority.ly | 2 +- .../rehearsal-mark-align-staff-context.ly | 2 +- input/regression/rehearsal-mark-align.ly | 2 +- input/regression/rehearsal-mark-direction.ly | 2 +- .../regression/rehearsal-mark-final-score.ly | 2 +- input/regression/rehearsal-mark-letter.ly | 2 +- input/regression/rehearsal-mark-number.ly | 2 +- input/regression/relative-repeat.ly | 2 +- input/regression/remove-empty-context-mod.ly | 15 + .../remove-empty-staves-auto-knee.ly | 2 +- .../remove-empty-staves-with-rests.ly | 2 +- input/regression/repeat-line-break.ly | 2 +- .../repeat-percent-count-visibility.ly | 2 +- input/regression/repeat-percent-count.ly | 2 +- input/regression/repeat-percent-grace.ly | 2 +- input/regression/repeat-percent-kerning.ly | 2 +- input/regression/repeat-percent-skipbars.ly | 2 +- input/regression/repeat-percent.ly | 2 +- .../regression/repeat-sign-global-size-10.ly | 43 + .../regression/repeat-sign-global-size-30.ly | 46 + input/regression/repeat-sign-layout-size.ly | 43 + input/regression/repeat-sign.ly | 139 + input/regression/repeat-slash-mixed.ly | 2 +- input/regression/repeat-slash-multi.ly | 2 +- input/regression/repeat-slash.ly | 2 +- input/regression/repeat-tie.ly | 2 +- input/regression/repeat-tremolo-beams.ly | 4 +- input/regression/repeat-tremolo-chord-rep.ly | 2 +- input/regression/repeat-tremolo-dots.ly | 4 +- .../repeat-tremolo-one-note-articulation.ly | 2 +- .../regression/repeat-tremolo-three-notes.ly | 2 +- input/regression/repeat-unfold-all.ly | 2 +- input/regression/repeat-unfold-tremolo.ly | 2 +- input/regression/repeat-unfold.ly | 5 +- .../repeat-volta-skip-alternatives.ly | 2 +- input/regression/repeat-volta.ly | 4 +- input/regression/rest-collision-beam-note.ly | 4 +- .../rest-collision-beam-quantized.ly | 2 +- .../regression/rest-collision-beam-restdir.ly | 2 +- input/regression/rest-collision-beam.ly | 2 +- .../rest-collision-note-duration.ly | 2 +- input/regression/rest-collision.ly | 2 +- input/regression/rest-dot-position.ly | 2 +- input/regression/rest-ledger.ly | 51 +- input/regression/rest-note-collision.ly | 2 +- input/regression/rest-on-nonstandard-staff.ly | 63 + input/regression/rest-pitch.ly | 8 +- input/regression/rest-pitched-beam.ly | 2 +- input/regression/rest-polyphonic-2.ly | 6 +- input/regression/rest-polyphonic.ly | 12 +- input/regression/rest.ly | 2 +- input/regression/rhythmic-staff.ly | 2 +- input/regression/safe.ly | 7 +- input/regression/scheme-book-scores.ly | 2 +- input/regression/scheme-engraver-instance.ly | 20 +- input/regression/scheme-engraver.ly | 95 +- input/regression/scheme-text-spanner.ly | 145 +- input/regression/score-text.ly | 2 +- .../regression/script-accidental-collision.ly | 33 + input/regression/script-center-seconds.ly | 2 +- input/regression/script-collision.ly | 2 +- input/regression/script-horizontal-slur.ly | 2 +- input/regression/script-shift.ly | 2 +- input/regression/script-stack-horizontal.ly | 2 +- input/regression/script-stack-order.ly | 2 +- input/regression/script-stacked.ly | 2 +- input/regression/script-stem-tremolo.ly | 2 +- input/regression/semi-tie-manual-direction.ly | 2 +- input/regression/set-once.ly | 29 + input/regression/shape-other-curves.ly | 46 + input/regression/shape-slurs.ly | 34 + .../shift-durations-negative-dots.ly | 12 + input/regression/size11.ly | 2 +- input/regression/size13.ly | 2 +- input/regression/size16.ly | 2 +- input/regression/size20.ly | 2 +- input/regression/size23.ly | 2 +- input/regression/size26.ly | 2 +- input/regression/skip-of-length.ly | 2 +- input/regression/skiptypesetting-all-true.ly | 10 +- input/regression/skiptypesetting-bar-check.ly | 4 +- .../skiptypesetting-multimeasurerest.ly | 2 +- .../skiptypesetting-show-first-and-last.ly | 2 +- .../regression/skiptypesetting-show-first.ly | 2 +- input/regression/skiptypesetting-show-last.ly | 2 +- input/regression/skiptypesetting-tuplet.ly | 2 +- input/regression/skyline-debug.ly | 4 +- .../regression/skyline-horizontal-padding.ly | 2 +- .../regression/skyline-vertical-placement.ly | 2 +- input/regression/skyline-vertical-spacing.ly | 2 +- input/regression/slur-avoid.ly | 11 + input/regression/slur-broken-trend.ly | 2 +- input/regression/slur-clef.ly | 2 +- input/regression/slur-cross-staff-beam.ly | 2 +- input/regression/slur-cross-staff.ly | 2 +- input/regression/slur-dash.ly | 2 +- input/regression/slur-dot-collision.ly | 8 + input/regression/slur-dots.ly | 2 +- input/regression/slur-double.ly | 2 +- input/regression/slur-dynamics.ly | 2 +- input/regression/slur-extreme.ly | 2 +- input/regression/slur-flag.ly | 12 + input/regression/slur-grace.ly | 2 +- input/regression/slur-height-capping.ly | 15 + input/regression/slur-manual.ly | 2 +- input/regression/slur-multiple-linebreak.ly | 3 +- input/regression/slur-multiple.ly | 22 +- input/regression/slur-nice.ly | 2 +- input/regression/slur-rest.ly | 2 +- input/regression/slur-scoring.ly | 4 +- input/regression/slur-script-inside.ly | 2 +- input/regression/slur-script.ly | 2 +- input/regression/slur-shift-region.ly | 10 + input/regression/slur-symmetry-1.ly | 2 +- input/regression/slur-symmetry.ly | 2 +- input/regression/slur-tie-control-points.ly | 11 + input/regression/slur-tilt.ly | 2 +- input/regression/slur-tuplet.ly | 2 +- input/regression/slur-vertical-skylines.ly | 16 + .../slur-vestigial-outside-staff-callback.ly | 19 + input/regression/song-associated-voice.ly | 2 +- input/regression/song-basic-nonenglish.ly | 2 +- input/regression/song-basic.ly | 2 +- input/regression/song-breathe.ly | 2 +- input/regression/song-melisma.ly | 2 +- input/regression/song-reordering.ly | 2 +- input/regression/song-reordering2.ly | 2 +- input/regression/song-repetition.ly | 2 +- input/regression/song-skip-noword.ly | 11 +- input/regression/song-skip.ly | 2 +- input/regression/song-slurs.ly | 2 +- input/regression/song-splitpart.ly | 2 +- input/regression/song-stanzas.ly | 2 +- input/regression/song-tempo.ly | 2 +- input/regression/spacing-accidental-rest.ly | 2 +- input/regression/spacing-accidental-staffs.ly | 2 +- .../regression/spacing-accidental-stretch.ly | 4 +- input/regression/spacing-accidental-tie.ly | 2 +- input/regression/spacing-accidental.ly | 2 +- input/regression/spacing-bar-accidental.ly | 4 +- input/regression/spacing-bar-arpeggio.ly | 2 +- input/regression/spacing-bar-stem.ly | 2 +- input/regression/spacing-bar-whole-measure.ly | 2 +- input/regression/spacing-clef-first-note.ly | 2 +- .../spacing-correction-accidentals.ly | 2 +- input/regression/spacing-empty-bar.ly | 4 +- input/regression/spacing-end-of-line.ly | 2 +- input/regression/spacing-ended-voice.ly | 2 +- .../spacing-folded-clef-cross-staff.ly | 2 +- input/regression/spacing-folded-clef.ly | 2 +- input/regression/spacing-folded-clef2.ly | 2 +- input/regression/spacing-folded-clef3.ly | 22 +- input/regression/spacing-grace-duration.ly | 2 +- input/regression/spacing-grace.ly | 2 +- .../spacing-horizontal-skyline-grace.ly | 2 +- .../regression/spacing-horizontal-skyline.ly | 2 +- input/regression/spacing-knee-compressed.ly | 4 +- input/regression/spacing-knee.ly | 2 +- input/regression/spacing-loose-grace-error.ly | 33 +- .../spacing-loose-grace-linebreak.ly | 2 +- input/regression/spacing-loose-grace.ly | 2 +- input/regression/spacing-loose-polyphony.ly | 17 + input/regression/spacing-mark-width.ly | 2 +- input/regression/spacing-measure-length.ly | 2 +- input/regression/spacing-multi-tuplet.ly | 2 +- input/regression/spacing-no-note.ly | 2 +- .../spacing-non-adjacent-columns1.ly | 4 +- .../spacing-non-adjacent-columns2.ly | 2 +- input/regression/spacing-note-flags.ly | 2 +- input/regression/spacing-packed.ly | 2 +- .../spacing-paper-column-padding.ly | 2 +- input/regression/spacing-proportional.ly | 2 +- input/regression/spacing-ragged-last.ly | 2 +- input/regression/spacing-rest.ly | 2 +- input/regression/spacing-section.ly | 2 +- input/regression/spacing-short-notes.ly | 4 +- input/regression/spacing-space-to-barline.ly | 4 +- input/regression/spacing-stem-bar.ly | 2 +- input/regression/spacing-stem-direction.ly | 2 +- .../regression/spacing-stem-same-direction.ly | 2 +- input/regression/spacing-stick-out.ly | 2 +- .../regression/spacing-strict-notespacing.ly | 2 +- .../spacing-strict-spacing-grace.ly | 2 +- input/regression/spacing-to-empty-barline.ly | 2 +- input/regression/spacing-to-grace.ly | 2 +- .../regression/spacing-uniform-stretching.ly | 2 +- input/regression/span-bar-allow-span-bar.ly | 59 + input/regression/span-bar-articulation.ly | 13 + input/regression/span-bar-break.ly | 2 +- input/regression/span-bar-partial.ly | 4 +- input/regression/span-bar-spacing.ly | 11 +- input/regression/span-bar.ly | 2 +- .../regression/spanner-after-line-breaking.ly | 2 +- input/regression/spanner-alignment.ly | 33 + .../regression/spanner-break-beyond-parent.ly | 2 +- input/regression/spanner-break-overshoot.ly | 2 +- input/regression/staccato-pos.ly | 2 +- input/regression/staff-change-autobeam.ly | 14 + input/regression/staff-halfway.ly | 2 +- input/regression/staff-ledger-positions.ly | 17 + input/regression/staff-line-positions.ly | 2 +- input/regression/staff-mixed-size.ly | 2 +- .../regression/staff-online-symbol-absence.ly | 2 +- input/regression/staff-tabstaff-spacing.ly | 2 +- input/regression/staff-tweak.ly | 2 +- input/regression/stanza-number.ly | 15 +- .../stem-cross-staff-articulation.ly | 33 + input/regression/stem-direction-context.ly | 2 +- input/regression/stem-direction.ly | 2 +- input/regression/stem-length-estimation.ly | 9 +- input/regression/stem-length.ly | 20 + input/regression/stem-pure-height-beamed.ly | 13 + input/regression/stem-shorten.ly | 2 +- input/regression/stem-stemlet-whole.ly | 2 +- input/regression/stem-stemlet.ly | 2 +- input/regression/stem-tremolo-forced-dir.ly | 2 +- input/regression/stem-tremolo-note-column.ly | 12 + input/regression/stem-tremolo-position.ly | 2 +- input/regression/stem-tremolo-staff-space.ly | 2 +- input/regression/stem-tremolo.ly | 13 +- input/regression/stencil-color-rotation.ly | 2 +- input/regression/stencil-hacking.ly | 2 +- input/regression/stencil-scale.ly | 2 +- input/regression/string-number-around-slur.ly | 4 +- input/regression/string-number.ly | 2 +- input/regression/system-extents.ly | 2 +- input/regression/system-overstrike.ly | 2 +- .../system-separator-spaceable-staves.ly | 2 +- input/regression/system-separator.ly | 2 +- .../system-start-bar-collapse-staffspace.ly | 12 + input/regression/system-start-bracket.ly | 2 +- input/regression/system-start-heavy-bar.ly | 2 +- input/regression/system-start-nesting.ly | 2 +- input/regression/tablature-banjo.ly | 2 +- .../tablature-chord-repetition-finger.ly | 28 + .../regression/tablature-chord-repetition.ly | 8 +- input/regression/tablature-default-strings.ly | 2 +- input/regression/tablature-dot-placement.ly | 2 +- .../tablature-double-stem-tremolo.ly | 11 + .../tablature-fretboard-open-string.ly | 2 +- input/regression/tablature-full-notation.ly | 5 +- input/regression/tablature-glissando.ly | 2 +- input/regression/tablature-grace-notes.ly | 2 +- .../tablature-harmonic-functions.ly | 5 +- input/regression/tablature-harmonic-tie.ly | 2 +- input/regression/tablature-harmonic.ly | 2 +- input/regression/tablature-letter.ly | 17 +- input/regression/tablature-negative-fret.ly | 12 +- .../regression/tablature-open-string-chord.ly | 17 + .../tablature-open-string-handling.ly | 18 + input/regression/tablature-slide.ly | 2 +- input/regression/tablature-string-tunings.ly | 7 +- input/regression/tablature-tie-behaviour.ly | 2 +- input/regression/tablature-tie-spanner.ly | 2 +- input/regression/tablature-tremolo.ly | 2 +- input/regression/tablature-zero-finger.ly | 4 +- input/regression/tablature.ly | 2 +- input/regression/tag-filter.ly | 2 +- input/regression/test-output-distance.ly | 2 +- .../text-spanner-attachment-alignment.ly | 2 +- input/regression/text-spanner-full-rest.ly | 13 +- .../regression/text-spanner-override-order.ly | 2 +- input/regression/text-spanner.ly | 2 +- input/regression/tie-accidental.ly | 2 +- input/regression/tie-arpeggio-collision.ly | 2 +- input/regression/tie-arpeggio.ly | 8 +- input/regression/tie-broken-minimum-length.ly | 2 +- input/regression/tie-broken-other-staff.ly | 2 +- input/regression/tie-broken.ly | 2 +- input/regression/tie-chord-broken-extremal.ly | 2 +- input/regression/tie-chord-debug.ly | 2 +- input/regression/tie-chord-partial.ly | 2 +- input/regression/tie-chord.ly | 12 +- input/regression/tie-dash.ly | 2 +- input/regression/tie-direction-broken.ly | 2 +- input/regression/tie-direction-manual.ly | 2 +- input/regression/tie-dot.ly | 2 +- input/regression/tie-grace.ly | 2 +- input/regression/tie-manual-vertical-tune.ly | 2 +- input/regression/tie-manual.ly | 2 +- input/regression/tie-pitched-trill.ly | 4 +- input/regression/tie-semi-single.ly | 4 +- input/regression/tie-single-chord.ly | 2 +- input/regression/tie-single-manual.ly | 4 +- input/regression/tie-single.ly | 4 +- input/regression/tie-unterminated.ly | 3 +- input/regression/tie-whole.ly | 2 +- .../time-signature-settings-by-staff.ly | 10 +- input/regression/to-xml.ly | 2 +- input/regression/toc.ly | 8 +- input/regression/trill-spanner-auto-stop.ly | 2 +- input/regression/trill-spanner-broken.ly | 2 +- input/regression/trill-spanner-chained.ly | 2 +- input/regression/trill-spanner-grace.ly | 2 +- .../trill-spanner-pitched-consecutive.ly | 2 +- .../trill-spanner-pitched-forced.ly | 2 +- input/regression/trill-spanner-pitched.ly | 2 +- input/regression/trill-spanner-scaled.ly | 2 +- input/regression/trill-spanner.ly | 2 +- input/regression/tuplet-beam.ly | 2 +- .../tuplet-bracket-avoid-fingering.ly | 11 + .../tuplet-bracket-avoid-scripts.ly | 10 + .../tuplet-bracket-avoid-string-number.ly | 11 + .../regression/tuplet-bracket-cross-staff.ly | 2 +- input/regression/tuplet-bracket-direction.ly | 20 + .../tuplet-bracket-outside-staff-priority.ly | 22 + input/regression/tuplet-bracket-visibility.ly | 4 +- input/regression/tuplet-broken.ly | 2 +- input/regression/tuplet-full-length-extent.ly | 2 +- input/regression/tuplet-full-length-note.ly | 2 +- input/regression/tuplet-full-length.ly | 2 +- input/regression/tuplet-gap.ly | 2 +- input/regression/tuplet-nest-beam.ly | 2 +- input/regression/tuplet-nest-broken.ly | 53 + input/regression/tuplet-nest.ly | 18 +- input/regression/tuplet-no-stems.ly | 2 +- .../tuplet-number-outside-staff-priority.ly | 16 + input/regression/tuplet-number-slur-script.ly | 14 + input/regression/tuplet-properties.ly | 2 +- input/regression/tuplet-rest.ly | 2 +- input/regression/tuplet-single-note.ly | 2 +- input/regression/tuplet-slope.ly | 2 +- .../regression/tuplet-staffline-collision.ly | 2 +- input/regression/tuplet-subdivision.ly | 17 + .../tuplet-text-different-numbers.ly | 2 +- .../tuplet-text-fraction-with-notes.ly | 2 +- input/regression/tuplet-text-note-appended.ly | 2 +- input/regression/tuplets.ly | 2 +- input/regression/typography-demo.ly | 20 +- input/regression/unpure-pure-container.ly | 25 + input/regression/utf-8-mixed-text.ly | 2 +- input/regression/utf-8.ly | 2 +- input/regression/voice-follower.ly | 2 +- input/regression/volta-broken-left-edge.ly | 2 +- input/regression/volta-markup-text.ly | 2 +- .../volta-multi-staff-inner-staff.ly | 2 +- input/regression/volta-multi-staff.ly | 2 +- .../warn-conflicting-key-signatures.ly | 5 +- .../warn-expected-warning-missing.ly | 12 + .../warn-unterminated-span-dynamic.ly | 4 +- input/regression/whiteout-lower-layers.ly | 2 +- input/regression/whiteout.ly | 8 +- input/regression/woodwind-diagrams-empty.ly | 2 +- .../regression/woodwind-diagrams-key-lists.ly | 28 +- input/regression/zero-staff-space.ly | 4 +- lily/GNUmakefile | 15 +- lily/accidental-engraver.cc | 328 +- lily/accidental-placement.cc | 135 +- lily/accidental.cc | 149 +- lily/align-interface.cc | 300 +- lily/all-font-metrics-scheme.cc | 35 +- lily/all-font-metrics.cc | 43 +- lily/ambitus-engraver.cc | 161 +- lily/apply-context-iterator.cc | 2 +- lily/arpeggio-engraver.cc | 26 +- lily/arpeggio.cc | 63 +- lily/articulations.cc | 50 +- lily/audio-column.cc | 3 +- lily/audio-element-info.cc | 6 +- lily/audio-element.cc | 4 +- lily/audio-item.cc | 61 +- lily/audio-staff.cc | 4 +- lily/auto-beam-engraver.cc | 98 +- lily/auto-change-iterator.cc | 56 +- lily/axis-group-engraver.cc | 48 +- lily/axis-group-interface-scheme.cc | 22 +- lily/axis-group-interface.cc | 443 +- lily/balloon-engraver.cc | 40 +- lily/balloon.cc | 40 +- lily/bar-check-iterator.cc | 50 +- lily/bar-engraver.cc | 31 +- lily/bar-line.cc | 438 +- lily/bar-number-engraver.cc | 145 +- lily/beam-collision-engraver.cc | 39 +- lily/beam-concave.cc | 173 - lily/beam-engraver.cc | 98 +- lily/beam-performer.cc | 4 +- lily/beam-quanting.cc | 1220 +- lily/beam.cc | 1527 +- lily/beaming-pattern.cc | 297 +- lily/bend-engraver.cc | 39 +- lily/bezier-bow.cc | 8 +- lily/bezier.cc | 117 +- lily/book-scheme.cc | 92 +- lily/book.cc | 66 +- lily/box.cc | 16 +- lily/break-align-engraver.cc | 48 +- lily/break-alignment-interface.cc | 316 +- lily/break-substitution.cc | 235 +- lily/breathing-sign-engraver.cc | 20 +- lily/breathing-sign.cc | 55 +- lily/change-iterator.cc | 52 +- lily/chord-name-engraver.cc | 106 +- lily/chord-name.cc | 14 +- lily/chord-tremolo-engraver.cc | 39 +- lily/chord-tremolo-iterator.cc | 5 +- lily/clef-engraver.cc | 100 +- lily/clef.cc | 28 +- lily/cluster-engraver.cc | 52 +- lily/cluster.cc | 122 +- lily/coherent-ligature-engraver.cc | 33 +- lily/collision-engraver.cc | 30 +- lily/column-x-positions.cc | 2 +- lily/completion-note-heads-engraver.cc | 118 +- lily/completion-rest-engraver.cc | 68 +- lily/concurrent-hairpin-engraver.cc | 118 + lily/constrained-breaking.cc | 214 +- lily/context-def.cc | 178 +- lily/context-handle.cc | 10 +- lily/context-mod-scheme.cc | 46 +- lily/context-mod.cc | 15 +- lily/context-property.cc | 178 +- lily/context-scheme.cc | 84 +- lily/context-specced-music-iterator.cc | 3 +- lily/context.cc | 197 +- lily/control-track-performer.cc | 27 +- lily/cue-clef-engraver.cc | 67 +- lily/custos-engraver.cc | 51 +- lily/custos.cc | 23 +- lily/default-bar-line-engraver.cc | 52 +- lily/dimension-cache.cc | 3 +- lily/dimensions-scheme.cc | 32 +- lily/directional-element-interface.cc | 4 +- lily/dispatcher-scheme.cc | 73 +- lily/dispatcher.cc | 108 +- lily/dot-column-engraver.cc | 25 +- lily/dot-column.cc | 161 +- lily/dot-configuration.cc | 104 +- lily/dot-formatting-problem.cc | 8 +- lily/dots-engraver.cc | 32 +- lily/dots.cc | 52 +- lily/double-percent-repeat-engraver.cc | 60 +- lily/drum-note-engraver.cc | 74 +- lily/drum-note-performer.cc | 38 +- lily/duration-scheme.cc | 79 +- lily/duration.cc | 46 +- lily/dynamic-align-engraver.cc | 159 +- lily/dynamic-engraver.cc | 356 +- lily/dynamic-performer.cc | 127 +- lily/enclosing-bracket.cc | 37 +- lily/engraver-group.cc | 121 +- lily/engraver-scheme.cc | 30 +- lily/engraver.cc | 65 +- lily/episema-engraver.cc | 66 +- lily/event-chord-iterator.cc | 24 +- lily/event-iterator.cc | 2 +- lily/extender-engraver.cc | 79 +- lily/figured-bass-continuation.cc | 60 +- lily/figured-bass-engraver.cc | 63 +- lily/figured-bass-position-engraver.cc | 45 +- lily/file-name-map.cc | 6 +- lily/fingering-engraver.cc | 42 +- lily/flag.cc | 195 + lily/font-config-scheme.cc | 39 +- lily/font-config.cc | 24 +- lily/font-interface.cc | 24 +- lily/font-metric-scheme.cc | 104 +- lily/font-metric.cc | 10 +- lily/font-select.cc | 65 +- lily/font-size-engraver.cc | 22 +- lily/footnote-engraver.cc | 86 +- lily/forbid-break-engraver.cc | 20 +- lily/freetype-error.cc | 33 +- lily/freetype.cc | 2 +- lily/fretboard-engraver.cc | 60 +- lily/function-documentation.cc | 81 +- lily/general-scheme.cc | 433 +- lily/glissando-engraver.cc | 66 +- lily/global-context-scheme.cc | 49 +- lily/global-context.cc | 51 +- lily/global-ctor.cc | 2 +- lily/grace-engraver.cc | 80 +- lily/grace-iterator.cc | 2 +- lily/grace-music.cc | 2 +- lily/grace-spacing-engraver.cc | 39 +- lily/gregorian-ligature-engraver.cc | 190 +- lily/gregorian-ligature.cc | 38 +- lily/grid-line-interface.cc | 26 +- lily/grid-line-span-engraver.cc | 34 +- lily/grid-point-engraver.cc | 22 +- lily/grob-array-scheme.cc | 27 +- lily/grob-array.cc | 14 +- lily/grob-closure.cc | 31 +- lily/grob-info.cc | 6 +- lily/grob-interface-scheme.cc | 18 +- lily/grob-interface.cc | 24 +- lily/grob-pq-engraver.cc | 44 +- lily/grob-property.cc | 157 +- lily/grob-scheme.cc | 255 +- lily/grob-smob.cc | 6 +- lily/grob.cc | 515 +- lily/guile-init.cc | 19 +- lily/hairpin.cc | 285 +- lily/hara-kiri-engraver.cc | 36 +- lily/hara-kiri-group-spanner.cc | 45 +- lily/horizontal-bracket-engraver.cc | 32 +- lily/horizontal-bracket.cc | 79 +- lily/hyphen-engraver.cc | 42 +- lily/identifier-smob.cc | 64 - lily/includable-lexer.cc | 35 +- lily/include/accidental-interface.hh | 6 +- lily/include/accidental-placement.hh | 12 +- lily/include/align-interface.hh | 25 +- lily/include/all-font-metrics.hh | 11 +- lily/include/arpeggio.hh | 5 +- lily/include/articulations.hh | 6 +- lily/include/audio-column.hh | 6 +- lily/include/audio-element-info.hh | 4 +- lily/include/audio-element.hh | 4 +- lily/include/audio-item.hh | 26 +- lily/include/audio-staff.hh | 6 +- lily/include/axis-group-engraver.hh | 6 +- lily/include/axis-group-interface.hh | 21 +- lily/include/bar-line.hh | 17 +- lily/include/beam-scoring-problem.hh | 106 +- lily/include/beam.hh | 38 +- lily/include/beaming-pattern.hh | 23 +- lily/include/bezier.hh | 8 +- lily/include/book.hh | 16 +- lily/include/box.hh | 7 +- lily/include/break-align-interface.hh | 10 +- lily/include/breathing-sign.hh | 4 +- lily/include/change-iterator.hh | 4 +- lily/include/chord-name.hh | 4 +- lily/include/chord-tremolo-iterator.hh | 4 +- lily/include/clef.hh | 4 +- lily/include/cluster.hh | 4 +- lily/include/coherent-ligature-engraver.hh | 6 +- lily/include/column-x-positions.hh | 6 +- lily/include/constrained-breaking.hh | 22 +- lily/include/context-def.hh | 25 +- lily/include/context-handle.hh | 5 +- lily/include/context-mod.hh | 4 +- lily/include/context.hh | 46 +- lily/include/custos.hh | 4 +- lily/include/dimension-cache.hh | 6 +- lily/include/directional-element-interface.hh | 2 +- lily/include/dispatcher.hh | 2 + lily/include/dot-column.hh | 5 +- lily/include/dot-configuration.hh | 8 +- lily/include/dot-formatting-problem.hh | 3 +- lily/include/dots.hh | 4 +- lily/include/duration.hh | 4 +- lily/include/engraver-group.hh | 5 +- lily/include/engraver.hh | 12 +- lily/include/event-chord-iterator.hh | 4 +- lily/include/event-iterator.hh | 6 +- lily/include/file-name-map.hh | 2 +- lily/include/font-interface.hh | 4 +- lily/include/font-metric.hh | 4 +- lily/include/freetype.hh | 2 +- lily/include/global-context.hh | 6 +- lily/include/global-ctor.hh | 20 +- lily/include/grace-fixup.hh | 2 +- lily/include/grace-iterator.hh | 4 +- lily/include/gregorian-ligature-engraver.hh | 4 +- lily/include/gregorian-ligature.hh | 5 +- lily/include/grid-line-interface.hh | 7 +- lily/include/grob-array.hh | 12 +- lily/include/grob-info.hh | 5 +- lily/include/grob-interface.hh | 26 +- lily/include/grob.hh | 33 +- lily/include/group-interface.hh | 2 +- lily/include/hairpin.hh | 6 +- lily/include/hara-kiri-group-spanner.hh | 4 +- lily/include/horizontal-bracket.hh | 8 +- lily/include/includable-lexer.hh | 10 +- lily/include/input.hh | 11 +- lily/include/interval-minefield.hh | 42 + lily/include/item.hh | 10 +- lily/include/keyword.hh | 2 +- lily/include/least-squares.hh | 2 +- lily/include/ligature-engraver.hh | 4 +- lily/include/lily-guile-macros.hh | 179 +- lily/include/lily-guile.hh | 38 +- lily/include/lily-lexer.hh | 39 +- lily/include/lily-parser.hh | 17 +- lily/include/lily-proto.hh | 5 +- lily/include/lily-version.hh | 2 +- lily/include/lilypond-version.hh | 2 +- lily/include/line-interface.hh | 18 +- lily/include/listener.hh | 71 +- lily/include/lookup.hh | 6 +- lily/include/ly-module.hh | 3 +- lily/include/ly-smobs.icc | 184 +- lily/include/lyric-extender.hh | 4 +- lily/include/lyric-hyphen.hh | 4 +- lily/include/main.hh | 5 +- lily/include/measure-grouping-spanner.hh | 5 +- lily/include/melody-spanner.hh | 8 +- lily/include/mensural-ligature.hh | 5 +- lily/include/midi-chunk.hh | 8 +- lily/include/midi-item.hh | 15 +- lily/include/midi-stream.hh | 2 +- lily/include/midi-walker.hh | 10 +- lily/include/mingw-compatibility.hh | 2 +- lily/include/minimal-page-breaking.hh | 2 +- lily/include/misc.hh | 15 +- lily/include/modified-font-metric.hh | 2 +- lily/include/moment.hh | 6 +- lily/include/multi-measure-rest.hh | 5 +- lily/include/music-function.hh | 3 +- lily/include/music-iterator.hh | 20 +- lily/include/music-output.hh | 4 +- lily/include/music-sequence.hh | 4 +- lily/include/music-wrapper-iterator.hh | 4 +- lily/include/music-wrapper.hh | 2 +- lily/include/music.hh | 9 +- lily/include/note-collision.hh | 9 +- lily/include/note-column.hh | 6 +- lily/include/note-head.hh | 5 +- lily/include/note-spacing.hh | 6 +- lily/include/one-line-page-breaking.hh | 35 + lily/include/open-type-font.hh | 12 +- lily/include/optimal-page-breaking.hh | 2 +- lily/include/output-def.hh | 2 +- lily/include/page-breaking.hh | 70 +- lily/include/page-layout-problem.hh | 61 +- lily/include/page-marker.hh | 2 +- lily/include/page-spacing-result.hh | 10 +- lily/include/page-spacing.hh | 5 +- lily/include/page-turn-page-breaking.hh | 8 +- lily/include/pango-font.hh | 16 +- lily/include/paper-book.hh | 17 +- lily/include/paper-column-engraver.hh | 11 +- lily/include/paper-column.hh | 10 +- lily/include/paper-outputter.hh | 2 +- lily/include/paper-score.hh | 10 +- lily/include/paper-system.hh | 2 +- lily/include/parse-scm.hh | 12 +- lily/include/percent-repeat-item.hh | 4 +- lily/include/performance.hh | 10 +- lily/include/performer-group.hh | 4 +- lily/include/performer.hh | 2 +- lily/include/pitch-interval.hh | 2 +- lily/include/pitch.hh | 8 +- lily/include/pointer-group-interface.hh | 14 +- lily/include/prob.hh | 17 +- lily/include/profile.hh | 2 +- lily/include/program-option.hh | 2 +- lily/include/property-iterator.hh | 12 +- lily/include/protected-scm.hh | 2 +- ...bar.hh => pure-from-neighbor-interface.hh} | 26 +- lily/include/relocate.hh | 2 +- lily/include/repeated-music.hh | 2 +- lily/include/rest-collision.hh | 4 +- lily/include/rest.hh | 8 +- lily/include/rhythmic-head.hh | 4 +- lily/include/rhythmic-music-iterator.hh | 44 + lily/include/rod.hh | 2 +- lily/include/scale.hh | 7 +- lily/include/scheme-engraver.hh | 22 +- lily/include/scheme-listener.hh | 2 +- lily/include/scm-hash.hh | 2 +- lily/include/score-engraver.hh | 4 +- lily/include/score-performer.hh | 2 +- lily/include/score.hh | 2 +- lily/include/script-column.hh | 6 +- lily/include/script-interface.hh | 8 +- lily/include/self-alignment-interface.hh | 12 +- lily/include/semi-tie-column.hh | 7 +- lily/include/semi-tie.hh | 9 +- lily/include/separation-item.hh | 2 +- lily/include/sequential-iterator.hh | 8 +- lily/include/side-position-interface.hh | 10 +- lily/include/simple-closure.hh | 2 +- lily/include/simple-music-iterator.hh | 4 +- lily/include/simple-spacer.hh | 23 +- lily/include/simultaneous-music-iterator.hh | 4 +- lily/include/skyline-pair.hh | 6 +- lily/include/skyline.hh | 17 +- lily/include/slur-configuration.hh | 12 +- lily/include/slur-score-parameters.hh | 7 +- lily/include/slur-scoring.hh | 15 +- lily/include/slur.hh | 7 +- lily/include/smobs.hh | 125 +- lily/include/source-file.hh | 8 +- lily/include/sources.hh | 6 +- lily/include/spaceable-grob.hh | 4 +- lily/include/spacing-interface.hh | 14 +- lily/include/spacing-options.hh | 6 +- lily/include/spacing-spanner.hh | 24 +- lily/include/spanner.hh | 10 +- lily/include/spring.hh | 8 +- lily/include/staff-grouper-interface.hh | 2 +- lily/include/staff-spacing.hh | 6 +- lily/include/staff-symbol-referencer.hh | 24 +- lily/include/staff-symbol.hh | 13 +- lily/include/stem-info.hh | 2 +- lily/include/stem-tremolo.hh | 12 +- lily/include/stem.hh | 30 +- lily/include/stencil.hh | 11 +- lily/include/stream-event.hh | 5 +- lily/include/stream.hh | 4 +- lily/include/system-start-delimiter.hh | 6 +- lily/include/system.hh | 31 +- lily/include/text-interface.hh | 5 +- lily/include/tie-column-format.hh | 27 +- lily/include/tie-column.hh | 4 +- lily/include/tie-configuration.hh | 18 +- lily/include/tie-details.hh | 7 +- lily/include/tie-formatting-problem.hh | 33 +- lily/include/tie-specification.hh | 10 +- lily/include/tie.hh | 16 +- lily/include/time-scaled-music-iterator.hh | 4 +- lily/include/time-signature.hh | 4 +- lily/include/timing-translator.hh | 2 +- lily/include/translator-dispatch-list.hh | 4 +- lily/include/translator-group.hh | 4 +- lily/include/translator.hh | 108 +- lily/include/translator.icc | 178 +- lily/include/tuplet-bracket.hh | 21 +- ...ifier-smob.hh => unpure-pure-container.hh} | 16 +- lily/include/vaticana-ligature.hh | 4 +- lily/include/volta-bracket.hh | 4 +- lily/input-scheme.cc | 67 +- lily/input-smob.cc | 8 +- lily/input.cc | 51 +- lily/instrument-name-engraver.cc | 76 +- lily/instrument-switch-engraver.cc | 27 +- lily/interval-minefield.cc | 80 + lily/item-scheme.cc | 15 +- lily/item.cc | 147 +- lily/keep-alive-together-engraver.cc | 40 +- lily/key-engraver.cc | 139 +- lily/key-performer.cc | 38 +- lily/key-signature-interface.cc | 99 +- lily/laissez-vibrer-engraver.cc | 48 +- lily/least-squares.cc | 12 +- lily/ledger-line-engraver.cc | 40 +- lily/ledger-line-spanner.cc | 340 +- lily/lexer.ll | 624 +- lily/ligature-bracket-engraver.cc | 51 +- lily/ligature-engraver.cc | 43 +- lily/lily-guile.cc | 235 +- lily/lily-lexer-scheme.cc | 12 +- lily/lily-lexer.cc | 76 +- lily/lily-parser-scheme.cc | 190 +- lily/lily-parser.cc | 62 +- lily/lily-version.cc | 2 +- lily/lilypond-version.cc | 12 +- lily/lilypond.rc.in | 2 +- lily/line-interface.cc | 128 +- lily/line-spanner.cc | 316 +- lily/listener.cc | 7 +- lily/lookup.cc | 299 +- lily/ly-module.cc | 29 +- lily/lyric-combine-music-iterator.cc | 77 +- lily/lyric-combine-music.cc | 2 +- lily/lyric-engraver.cc | 105 +- lily/lyric-extender.cc | 36 +- lily/lyric-hyphen.cc | 51 +- lily/lyric-performer.cc | 22 +- lily/main.cc | 336 +- lily/mark-engraver.cc | 99 +- lily/measure-grouping-engraver.cc | 80 +- lily/measure-grouping-spanner.cc | 22 +- lily/melody-engraver.cc | 48 +- lily/melody-spanner.cc | 58 +- lily/mensural-ligature-engraver.cc | 421 +- lily/mensural-ligature.cc | 213 +- lily/metronome-engraver.cc | 96 +- lily/midi-chunk.cc | 81 +- lily/midi-item.cc | 60 +- lily/midi-stream.cc | 2 +- lily/midi-walker.cc | 96 +- lily/minimal-page-breaking.cc | 2 +- lily/misc.cc | 41 +- lily/modified-font-metric.cc | 4 +- lily/module-scheme.cc | 30 +- lily/moment-scheme.cc | 149 +- lily/moment.cc | 10 +- lily/multi-measure-rest-engraver.cc | 190 +- lily/multi-measure-rest.cc | 275 +- lily/music-function-scheme.cc | 54 +- lily/music-function.cc | 56 +- lily/music-iterator.cc | 17 +- lily/music-output.cc | 4 +- lily/music-scheme.cc | 160 +- lily/music-sequence.cc | 111 +- lily/music-wrapper-iterator.cc | 8 +- lily/music-wrapper.cc | 2 +- lily/music.cc | 107 +- lily/nested-property.cc | 85 +- lily/new-dynamic-engraver.cc | 189 +- lily/new-fingering-engraver.cc | 222 +- lily/note-collision.cc | 599 +- lily/note-column-scheme.cc | 18 +- lily/note-column.cc | 52 +- lily/note-head-line-engraver.cc | 29 +- lily/note-head-scheme.cc | 11 +- lily/note-head.cc | 120 +- lily/note-heads-engraver.cc | 70 +- lily/note-name-engraver.cc | 24 +- lily/note-performer.cc | 103 +- lily/note-spacing-engraver.cc | 53 +- lily/note-spacing.cc | 203 +- lily/one-line-page-breaking.cc | 92 + lily/open-type-font-scheme.cc | 52 +- lily/open-type-font.cc | 103 +- lily/optimal-page-breaking.cc | 173 +- lily/ottava-bracket.cc | 115 +- lily/ottava-engraver.cc | 67 +- lily/out/parser.cc | 6385 +++++---- lily/out/parser.hh | 467 +- lily/output-def-scheme.cc | 29 +- lily/output-def.cc | 2 +- lily/output-property-engraver.cc | 2 +- lily/page-breaking-scheme.cc | 37 +- lily/page-breaking.cc | 851 +- lily/page-layout-problem-scheme.cc | 36 + lily/page-layout-problem.cc | 1018 +- lily/page-marker-scheme.cc | 14 +- lily/page-marker.cc | 2 +- lily/page-spacing-result.cc | 10 +- lily/page-spacing.cc | 235 +- lily/page-turn-engraver.cc | 105 +- lily/page-turn-page-breaking.cc | 80 +- lily/pango-font-scheme.cc | 16 +- lily/pango-font.cc | 187 +- lily/pango-select-scheme.cc | 8 +- lily/pango-select.cc | 42 +- lily/paper-book-scheme.cc | 30 +- lily/paper-book.cc | 528 +- lily/paper-column-engraver.cc | 144 +- lily/paper-column.cc | 152 +- lily/paper-def.cc | 11 +- lily/paper-outputter-scheme.cc | 36 +- lily/paper-outputter.cc | 14 +- lily/paper-score-scheme.cc | 10 +- lily/paper-score.cc | 28 +- lily/paper-system-scheme.cc | 20 +- lily/paper-system.cc | 26 +- lily/parenthesis-engraver.cc | 76 +- lily/parse-scm.cc | 112 +- lily/parser.yy | 1879 ++- lily/part-combine-engraver.cc | 42 +- lily/part-combine-iterator.cc | 240 +- lily/partial-iterator.cc | 10 +- lily/pdf-scheme.cc | 43 +- lily/percent-repeat-engraver.cc | 69 +- lily/percent-repeat-item.cc | 26 +- lily/percent-repeat-iterator.cc | 30 +- lily/performance-scheme.cc | 6 +- lily/performance.cc | 20 +- lily/performer-group.cc | 42 +- lily/performer.cc | 3 +- lily/pfb-scheme.cc | 30 +- lily/pfb.cc | 60 +- lily/phrasing-slur-engraver.cc | 165 +- lily/piano-pedal-align-engraver.cc | 167 +- lily/piano-pedal-bracket.cc | 73 +- lily/piano-pedal-engraver.cc | 273 +- lily/piano-pedal-performer.cc | 64 +- lily/pitch-interval.cc | 7 +- lily/pitch-scheme.cc | 97 +- lily/pitch-squash-engraver.cc | 26 +- lily/pitch.cc | 36 +- lily/pitched-trill-engraver.cc | 43 +- lily/pointer-group-interface-scheme.cc | 10 +- lily/pointer-group-interface.cc | 18 +- lily/prob-scheme.cc | 47 +- lily/prob.cc | 37 +- lily/profile.cc | 17 +- lily/program-option-scheme.cc | 167 +- lily/program-option.cc | 4 +- lily/property-iterator.cc | 78 +- lily/protected-scm.cc | 4 +- lily/pure-from-neighbor-engraver.cc | 155 + lily/pure-from-neighbor-interface.cc | 64 + lily/quote-iterator.cc | 95 +- lily/relative-octave-check.cc | 24 +- lily/relative-octave-music.cc | 14 +- lily/relocate.cc | 303 +- lily/repeat-acknowledge-engraver.cc | 75 +- lily/repeat-tie-engraver.cc | 46 +- lily/repeated-music.cc | 16 +- lily/rest-collision-engraver.cc | 60 +- lily/rest-collision.cc | 275 +- lily/rest-engraver.cc | 36 +- lily/rest.cc | 144 +- lily/rhythmic-column-engraver.cc | 60 +- lily/rhythmic-head.cc | 17 +- lily/rhythmic-music-iterator.cc | 84 + lily/rod.cc | 10 +- lily/scale.cc | 82 +- lily/scheme-engraver.cc | 135 +- lily/scheme-listener-scheme.cc | 12 +- lily/scheme-listener.cc | 6 +- lily/scm-hash.cc | 21 +- lily/score-engraver.cc | 88 +- lily/score-performer.cc | 47 +- lily/score-scheme.cc | 42 +- lily/score.cc | 38 +- lily/script-column-engraver.cc | 30 +- lily/script-column.cc | 82 +- lily/script-engraver.cc | 106 +- lily/script-interface.cc | 52 +- lily/script-row-engraver.cc | 38 +- lily/self-alignment-interface.cc | 159 +- lily/semi-tie-column.cc | 41 +- lily/semi-tie.cc | 30 +- lily/separating-line-group-engraver.cc | 64 +- lily/separation-item.cc | 72 +- lily/sequential-iterator.cc | 76 +- lily/side-position-interface.cc | 338 +- lily/simple-closure.cc | 65 +- lily/simple-music-iterator.cc | 2 +- lily/simple-spacer-scheme.cc | 32 +- lily/simple-spacer.cc | 231 +- lily/simultaneous-music-iterator.cc | 40 +- lily/skyline-pair.cc | 28 +- lily/skyline.cc | 190 +- lily/slash-repeat-engraver.cc | 28 +- lily/slur-configuration.cc | 408 +- lily/slur-engraver.cc | 159 +- lily/slur-performer.cc | 22 +- lily/slur-score-parameters.cc | 20 +- lily/slur-scoring.cc | 737 +- lily/slur.cc | 428 +- lily/smobs.cc | 20 +- lily/source-file.cc | 112 +- lily/sources.cc | 28 +- lily/spaceable-grob.cc | 48 +- lily/spacing-basic.cc | 56 +- lily/spacing-determine-loose-columns.cc | 257 +- lily/spacing-engraver.cc | 80 +- lily/spacing-interface.cc | 143 +- lily/spacing-loose-columns.cc | 242 +- lily/spacing-options.cc | 31 +- lily/spacing-spanner.cc | 554 +- lily/span-arpeggio-engraver.cc | 63 +- lily/span-bar-engraver.cc | 57 +- lily/span-bar-stub-engraver.cc | 192 + lily/span-bar.cc | 241 - lily/spanner-break-forbid-engraver.cc | 30 +- lily/spanner-scheme.cc | 24 +- lily/spanner.cc | 286 +- lily/spring-smob.cc | 42 +- lily/spring.cc | 40 +- lily/staff-collecting-engraver.cc | 20 +- lily/staff-grouper-interface.cc | 18 +- lily/staff-performer.cc | 150 +- lily/staff-spacing.cc | 97 +- lily/staff-symbol-engraver.cc | 41 +- lily/staff-symbol-referencer-scheme.cc | 15 +- lily/staff-symbol-referencer.cc | 93 +- lily/staff-symbol.cc | 307 +- lily/stanza-number-align-engraver.cc | 24 +- lily/stanza-number-engraver.cc | 20 +- lily/stem-engraver.cc | 193 +- lily/stem-tremolo.cc | 130 +- lily/stem.cc | 891 +- lily/stencil-expression.cc | 8 +- lily/stencil-interpret.cc | 174 +- lily/stencil-scheme.cc | 226 +- lily/stencil.cc | 68 +- lily/stream-event-scheme.cc | 28 +- lily/stream-event.cc | 39 +- lily/sustain-pedal.cc | 16 +- lily/system-start-delimiter-engraver.cc | 94 +- lily/system-start-delimiter.cc | 128 +- lily/system.cc | 499 +- lily/tab-note-heads-engraver.cc | 90 +- lily/tab-staff-symbol-engraver.cc | 22 +- lily/tab-tie-follow-engraver.cc | 25 +- lily/template5.cc | 7 +- lily/tempo-performer.cc | 24 +- lily/text-engraver.cc | 24 +- lily/text-interface.cc | 152 +- lily/text-spanner-engraver.cc | 68 +- lily/tie-column.cc | 53 +- lily/tie-configuration.cc | 37 +- lily/tie-details.cc | 22 +- lily/tie-engraver.cc | 227 +- lily/tie-formatting-problem.cc | 1141 +- lily/tie-performer.cc | 67 +- lily/tie-specification.cc | 11 +- lily/tie.cc | 95 +- lily/time-signature-engraver.cc | 54 +- lily/time-signature-performer.cc | 20 +- lily/time-signature.cc | 108 +- lily/timing-translator.cc | 96 +- lily/translator-ctors.cc | 6 +- lily/translator-dispatch-list.cc | 40 +- lily/translator-group-ctors.cc | 10 +- lily/translator-group.cc | 114 +- lily/translator-scheme.cc | 17 +- lily/translator.cc | 135 +- lily/trill-spanner-engraver.cc | 42 +- lily/ttf.cc | 427 +- lily/tuplet-bracket.cc | 576 +- lily/tuplet-engraver.cc | 211 +- lily/tuplet-iterator.cc | 28 +- lily/tuplet-number.cc | 61 +- lily/tweak-engraver.cc | 47 +- lily/undead.cc | 104 + lily/unfolded-repeat-iterator.cc | 16 +- lily/unpure-pure-container.cc | 110 + lily/vaticana-ligature-engraver.cc | 562 +- lily/vaticana-ligature.cc | 105 +- lily/vertical-align-engraver.cc | 91 +- lily/volta-bracket.cc | 75 +- lily/volta-engraver.cc | 59 +- lily/volta-repeat-iterator.cc | 44 +- lily/warn-scheme.cc | 199 + ly/Welcome-to-LilyPond-MacOS.ly | 2 +- ly/Welcome_to_LilyPond.ly | 8 +- ly/arabic.ly | 4 +- ly/articulate.ly | 140 +- ly/bagpipe.ly | 328 +- ly/catalan.ly | 4 +- ly/chord-modifiers-init.ly | 48 +- ly/chord-repetition-init.ly | 112 +- ly/context-mods-init.ly | 33 + ly/declarations-init.ly | 44 +- ly/deutsch.ly | 4 +- ly/drumpitch-init.ly | 4 +- ly/dynamic-scripts-init.ly | 2 +- ly/english.ly | 4 +- ly/engraver-init.ly | 187 +- ly/espanol.ly | 4 +- ly/event-listener.ly | 228 + ly/festival.ly | 19 +- ly/generate-documentation.ly | 2 +- ly/generate-interface-doc-init.ly | 2 +- ly/grace-init.ly | 28 +- ly/graphviz-init.ly | 14 +- ly/gregorian.ly | 35 +- ly/guile-debugger.ly | 4 +- ly/init.ly | 50 +- ly/italiano.ly | 4 +- ly/lilypond-book-preamble.ly | 3 +- ly/makam.ly | 2 +- ly/midi-init.ly | 4 +- ly/music-functions-init.ly | 764 +- ly/nederlands.ly | 4 +- ly/norsk.ly | 4 +- ly/paper-defaults-init.ly | 12 +- ly/performer-init.ly | 101 +- ly/portugues.ly | 4 +- ly/predefined-fretboards-init.ly | 6 +- ly/predefined-guitar-fretboards.ly | 4 +- ly/predefined-guitar-ninth-fretboards.ly | 4 +- ly/predefined-mandolin-fretboards.ly | 4 +- ly/predefined-ukulele-fretboards.ly | 4 +- ly/property-init.ly | 52 +- ly/scale-definitions-init.ly | 2 +- ly/scheme-sandbox.ly | 16 + ly/script-init.ly | 2 +- ly/spanners-init.ly | 10 +- ly/string-tunings-init.ly | 170 +- ly/suomi.ly | 4 +- ly/svenska.ly | 4 +- ly/text-replacements.ly | 134 + ly/titling-init.ly | 20 +- ly/toc-init.ly | 4 +- ly/vlaams.ly | 4 +- make/abc-rules.make | 2 +- make/doc-i18n-root-rules.make | 36 +- make/doc-i18n-root-targets.make | 6 +- make/doc-i18n-root-vars.make | 27 +- make/lilypond-book-rules.make | 6 +- make/lilypond-book-vars.make | 6 +- make/lilypond-vars.make | 10 +- make/ly-rules.make | 21 +- make/lysdoc-rules.make | 21 +- make/lysdoc-targets.make | 2 +- make/midi-rules.make | 9 +- make/mutopia-targets.make | 3 - make/stepmake.make | 3 + make/substitute.make | 1 + make/website.make | 340 +- mf/GNUmakefile | 146 +- mf/bigcheese.pe.in | 45 - mf/feta-accidentals.mf | 2 +- mf/feta-accordion.mf | 2 +- mf/feta-arrowheads.mf | 2 +- mf/feta-autometric.mf | 2 +- mf/feta-braces-a.mf | 2 +- mf/feta-braces-b.mf | 2 +- mf/feta-braces-c.mf | 2 +- mf/feta-braces-d.mf | 2 +- mf/feta-braces-e.mf | 2 +- mf/feta-braces-f.mf | 2 +- mf/feta-braces-g.mf | 2 +- mf/feta-braces-h.mf | 2 +- mf/feta-braces-i.mf | 2 +- mf/feta-braces.mf | 2 +- mf/feta-brackettips.mf | 2 +- mf/feta-clefs.mf | 37 +- mf/feta-dots.mf | 2 +- mf/feta-dynamics.mf | 2 +- mf/feta-flags-generic.mf | 47 + mf/feta-flags.mf | 121 +- mf/feta-flags11.mf | 13 + mf/feta-flags13.mf | 13 + mf/feta-flags14.mf | 13 + mf/feta-flags16.mf | 13 + mf/feta-flags18.mf | 13 + mf/feta-flags20.mf | 13 + mf/feta-flags23.mf | 13 + mf/feta-flags26.mf | 13 + mf/feta-generic.mf | 7 +- mf/feta-macros.mf | 2 +- mf/feta-noteheads-generic.mf | 14 +- mf/feta-noteheads-test-generic.mf | 7 - mf/feta-noteheads.mf | 192 +- mf/feta-numbers.mf | 2 +- mf/feta-params.mf | 88 +- mf/feta-pedals.mf | 2 +- mf/feta-rests.mf | 20 +- mf/feta-scripts.mf | 53 +- mf/feta-test-generic.mf | 1 + mf/feta-ties.mf | 72 + mf/feta-timesignatures.mf | 2 +- mf/feta-trills.mf | 2 +- mf/mf2pt1.mp | 4 +- mf/parmesan-accidentals.mf | 93 +- mf/parmesan-clefs.mf | 59 +- mf/parmesan-custodes.mf | 2 +- mf/parmesan-dots.mf | 27 +- mf/parmesan-flags.mf | 2 +- mf/parmesan-generic.mf | 3 +- mf/parmesan-macros.mf | 2 +- mf/parmesan-noteheads-generic.mf | 39 + mf/parmesan-noteheads.mf | 1015 +- mf/parmesan-noteheads11.mf | 13 + mf/parmesan-noteheads13.mf | 13 + mf/parmesan-noteheads14.mf | 13 + mf/parmesan-noteheads16.mf | 13 + mf/parmesan-noteheads18.mf | 13 + mf/parmesan-noteheads20.mf | 13 + mf/parmesan-noteheads23.mf | 13 + mf/parmesan-noteheads26.mf | 13 + mf/parmesan-rests.mf | 2 +- mf/parmesan-scripts.mf | 60 +- mf/parmesan-timesignatures.mf | 4 +- out/ChangeLog | 2 +- out/RELEASE-COMMIT | 101 +- po/README | 13 +- po/cs.po | 5413 +++++--- po/de.po | 4246 +++--- po/el.po | 4 +- po/eo.po | 3836 ++++++ po/es.po | 2963 ++-- po/fr.po | 4854 ++++--- po/it.po | 3012 ++-- po/ja.po | 4844 ++++--- po/lilypond.pot | 3344 +++-- po/nl.po | 2 +- po/uk.po | 2 +- po/vi.po | 2 +- ps/music-drawing-routines.ps | 104 +- python/GNUmakefile | 2 + python/auxiliar/postprocess_html.py | 83 +- python/book_base.py | 12 +- python/book_docbook.py | 2 +- python/book_html.py | 13 +- python/book_latex.py | 80 +- python/book_snippets.py | 359 +- python/book_texinfo.py | 180 +- python/convertrules.py | 1704 ++- python/fontextract.py | 100 +- python/langdefs.py | 5 +- python/lilylib.py | 205 +- python/midi.c | 8 +- python/musicexp.py | 52 +- python/musicxml.py | 437 +- python/rational.py | 4 +- scm/auto-beam.scm | 25 +- scm/autochange.scm | 2 +- scm/backend-library.scm | 15 +- scm/bar-line.scm | 650 + scm/bezier-tools.scm | 2 +- scm/c++.scm | 15 +- scm/chord-entry.scm | 5 +- scm/chord-generic-names.scm | 4 +- scm/chord-ignatzek-names.scm | 326 +- scm/chord-name.scm | 4 +- scm/clip-region.scm | 2 +- scm/define-context-properties.scm | 66 +- scm/define-event-classes.scm | 79 +- scm/define-grob-interfaces.scm | 59 +- scm/define-grob-properties.scm | 175 +- scm/define-grobs.scm | 228 +- scm/define-markup-commands.scm | 286 +- scm/define-music-callbacks.scm | 30 +- scm/define-music-display-methods.scm | 452 +- scm/define-music-properties.scm | 20 +- scm/define-music-types.scm | 118 +- scm/define-note-names.scm | 27 +- scm/define-stencil-commands.scm | 17 +- scm/define-woodwind-diagrams.scm | 2 +- scm/display-lily.scm | 12 +- scm/display-woodwind-diagrams.scm | 58 +- scm/document-backend.scm | 2 +- scm/document-context-mods.scm | 104 + scm/document-functions.scm | 2 +- scm/document-identifiers.scm | 41 +- scm/document-markup.scm | 2 +- scm/document-music.scm | 8 +- scm/document-translation.scm | 8 +- scm/document-type-predicates.scm | 2 +- scm/documentation-generate.scm | 8 +- scm/documentation-lib.scm | 17 +- scm/editor.scm | 2 +- scm/encoding.scm | 2 +- scm/file-cache.scm | 2 +- scm/flag-styles.scm | 102 +- scm/font.scm | 10 +- scm/framework-eps.scm | 23 +- scm/framework-ps.scm | 42 +- scm/framework-scm.scm | 2 +- scm/framework-socket.scm | 14 +- scm/framework-svg.scm | 10 +- scm/fret-diagrams.scm | 20 +- scm/graphviz.scm | 33 +- scm/guile-debugger.scm | 2 +- scm/harp-pedals.scm | 2 +- scm/layout-beam.scm | 26 +- scm/layout-slur.scm | 7 +- scm/lily-library.scm | 173 +- scm/lily-sort.scm | 2 +- scm/lily.scm | 624 +- scm/ly-syntax-constructors.scm | 98 +- scm/markup-macros.scm | 474 + scm/markup.scm | 593 +- scm/midi.scm | 2 +- scm/modal-transforms.scm | 38 +- scm/music-functions.scm | 753 +- scm/output-lib.scm | 256 +- scm/output-ps.scm | 56 +- scm/output-socket.scm | 28 +- scm/output-svg.scm | 67 +- scm/page.scm | 4 +- scm/paper-system.scm | 223 +- scm/paper.scm | 18 +- scm/parser-clef.scm | 8 +- scm/parser-ly-from-scheme.scm | 133 +- scm/part-combiner.scm | 50 +- scm/predefined-fretboards.scm | 2 +- scm/ps-to-png.scm | 22 +- scm/safe-lily.scm | 5 +- scm/safe-utility-defs.scm | 51 + scm/script.scm | 4 +- scm/song-util.scm | 24 +- scm/song.scm | 75 +- scm/standalone.scm | 2 +- scm/stencil.scm | 144 +- scm/tablature.scm | 14 +- scm/text.scm | 29 + scm/time-signature-settings.scm | 6 +- scm/titling.scm | 2 +- scm/to-xml.scm | 2 +- scm/translation-functions.scm | 107 +- scm/x11-color.scm | 2 +- scripts/abc2ly.py | 41 +- scripts/auxiliar/cg-section.sh | 132 +- scripts/auxiliar/doc-section.sh | 196 +- scripts/auxiliar/fixcc.py | 268 +- scripts/auxiliar/lily-git.tcl | 156 +- scripts/auxiliar/makelsr.py | 378 +- scripts/auxiliar/prepare-web-media.py | 42 + scripts/auxiliar/ref_check.py | 2 +- scripts/auxiliar/ref_check.tely | 1 + scripts/auxiliar/texi-langutils.py | 4 +- scripts/auxiliar/update-with-convert-ly.sh | 10 +- scripts/build/GNUmakefile | 2 - scripts/build/bib2texi.py | 28 +- scripts/build/create-weblinks-itexi.py | 48 +- scripts/build/extract_texi_filenames.py | 42 +- scripts/build/gen-emmentaler-scripts.py | 2 + scripts/build/genicon.py | 2 +- scripts/build/grand-replace.py | 2 +- scripts/build/help2man.pl | 2 +- scripts/build/install-info-html.sh | 2 +- scripts/build/lys-to-tely.py | 56 +- scripts/build/makesnippets.py | 37 + scripts/build/mass-link.py | 3 +- scripts/build/mf-to-table.py | 18 +- scripts/build/mf2pt1.pl | 12 +- scripts/build/mutopia-index.py | 197 - scripts/build/output-distance.py | 152 +- scripts/build/pytt.py | 2 +- scripts/build/run-and-check.sh | 13 + scripts/build/website-known-missing-files.txt | 1 + scripts/build/website_post.py | 25 +- scripts/build/www_post.py | 29 +- scripts/convert-ly.py | 71 +- scripts/etf2ly.py | 8 +- scripts/lilymidi.py | 137 +- scripts/lilypond-book.py | 139 +- scripts/lilypond-invoke-editor.scm | 4 +- scripts/lilysong.py | 2 +- scripts/midi2ly.py | 41 +- scripts/musicxml2ly.py | 217 +- smart-autogen.sh | 3 +- smart-configure.sh | 5 +- stepmake/aclocal.m4 | 103 +- stepmake/bin/stepmakeise.sh | 8 +- stepmake/stepmake/c++-rules.make | 9 +- stepmake/stepmake/generic-targets.make | 10 +- stepmake/stepmake/generic-vars.make | 8 +- stepmake/stepmake/metafont-rules.make | 11 +- stepmake/stepmake/metafont-targets.make | 1 + stepmake/stepmake/po-targets.make | 34 +- stepmake/stepmake/podir-targets.make | 13 +- stepmake/stepmake/python-module-rules.make | 2 +- stepmake/stepmake/shared-library-targets.make | 2 +- stepmake/stepmake/test-vars.make | 2 +- stepmake/stepmake/texinfo-rules.make | 60 +- stepmake/stepmake/texinfo-targets.make | 4 +- stepmake/stepmake/texinfo-vars.make | 38 +- tex/GNUmakefile | 2 + tex/lilypond.map.in | 4 + tex/texinfo.tex | 2202 ++- tex/txi-de.tex | 2 +- tex/txi-hu.tex | 4 +- tex/txi-nl.tex | 70 + vim/lilypond-ftplugin.vim | 6 +- 3815 files changed, 210915 insertions(+), 110728 deletions(-) create mode 100644 Documentation/contributor/feta-font.itexi create mode 100644 Documentation/cs/included/GNUmakefile delete mode 100644 Documentation/de/included/authors.itexi create mode 100644 Documentation/de/texidocs/alternative-bar-numbering.texidoc create mode 100644 Documentation/de/texidocs/alternative-breve-note.texidoc create mode 100644 Documentation/de/texidocs/glissandi-can-skip-grobs.texidoc create mode 100644 Documentation/de/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc create mode 100644 Documentation/de/texidocs/strict-beat-beaming.texidoc create mode 100644 Documentation/es/texidocs/alternative-bar-numbering.texidoc create mode 100644 Documentation/es/texidocs/alternative-breve-note.texidoc create mode 100644 Documentation/es/texidocs/anglican-psalm-template.texidoc create mode 100644 Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc delete mode 100644 Documentation/es/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc delete mode 100644 Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc delete mode 100644 Documentation/es/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc create mode 100644 Documentation/es/texidocs/formatting-lyrics-syllables.texidoc create mode 100644 Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc delete mode 100644 Documentation/es/texidocs/grouping-beats.texidoc delete mode 100644 Documentation/es/texidocs/modern-tab-text-clef.texidoc create mode 100644 Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc delete mode 100644 Documentation/es/texidocs/piano-template-with-centered-dynamics.texidoc create mode 100644 Documentation/es/texidocs/satb-choir-template---four-staves.texidoc delete mode 100644 Documentation/es/texidocs/snap-pizzicato-bartok-pizzicato.texidoc create mode 100644 Documentation/es/texidocs/strict-beat-beaming.texidoc create mode 100644 Documentation/fr/extending.tely create mode 100644 Documentation/fr/extending/scheme-tutorial.itely create mode 100644 Documentation/fr/notation/contemporary.itely create mode 100644 Documentation/fr/texidocs/accordion-discant-symbols.texidoc create mode 100644 Documentation/fr/texidocs/adding-an-extra-staff-at-a-line-break.texidoc create mode 100644 Documentation/fr/texidocs/adding-an-extra-staff.texidoc create mode 100644 Documentation/fr/texidocs/adding-bar-lines-to-chordnames-context.texidoc create mode 100644 Documentation/fr/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc create mode 100644 Documentation/fr/texidocs/adding-extra-fingering-with-scheme.texidoc create mode 100644 Documentation/fr/texidocs/adding-fingerings-to-a-score.texidoc create mode 100644 Documentation/fr/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc create mode 100644 Documentation/fr/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc create mode 100644 Documentation/fr/texidocs/adjusting-grace-note-spacing.texidoc create mode 100644 Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc create mode 100644 Documentation/fr/texidocs/aligning-objects-created-with-the--mark-command.texidoc create mode 100644 Documentation/fr/texidocs/altering-the-length-of-beamed-stems.texidoc create mode 100644 Documentation/fr/texidocs/alternative-bar-numbering.texidoc create mode 100644 Documentation/fr/texidocs/alternative-breve-note.texidoc create mode 100644 Documentation/fr/texidocs/ambitus.texidoc create mode 100644 Documentation/fr/texidocs/analysis-brackets-above-the-staff.texidoc create mode 100644 Documentation/fr/texidocs/ancient-time-signatures.texidoc create mode 100644 Documentation/fr/texidocs/arabic-improvisation.texidoc create mode 100644 Documentation/fr/texidocs/asymmetric-slurs.texidoc create mode 100644 Documentation/fr/texidocs/automatic-beam-subdivisions.texidoc delete mode 100644 Documentation/fr/texidocs/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.texidoc create mode 100644 Documentation/fr/texidocs/automatically-change-durations.texidoc create mode 100644 Documentation/fr/texidocs/avoiding-collisions-with-chord-fingerings.texidoc create mode 100644 Documentation/fr/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc create mode 100644 Documentation/fr/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc create mode 100644 Documentation/fr/texidocs/book-parts.texidoc create mode 100644 Documentation/fr/texidocs/breathing-signs.texidoc create mode 100644 Documentation/fr/texidocs/broken-crescendo-hairpin.texidoc create mode 100644 Documentation/fr/texidocs/caesura-railtracks-with-fermata.texidoc create mode 100644 Documentation/fr/texidocs/center-text-below-hairpin-dynamics.texidoc create mode 100644 Documentation/fr/texidocs/centering-markup-on-note-heads-automatically.texidoc create mode 100644 Documentation/fr/texidocs/changing-a-single-notes-size-in-a-chord.texidoc create mode 100644 Documentation/fr/texidocs/changing-chord-separator.texidoc create mode 100644 Documentation/fr/texidocs/changing-fret-orientations.texidoc create mode 100644 Documentation/fr/texidocs/changing-properties-for-individual-grobs.texidoc create mode 100644 Documentation/fr/texidocs/changing-stanza-fonts.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-default-text-font-family.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-number-of-lines-in-a-staff.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-staff-size.texidoc create mode 100644 Documentation/fr/texidocs/changing-the-text-for-sustain-markings.texidoc delete mode 100644 Documentation/fr/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc create mode 100644 Documentation/fr/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc create mode 100644 Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc create mode 100644 Documentation/fr/texidocs/chord-name-exceptions.texidoc create mode 100644 Documentation/fr/texidocs/chord-name-major7.texidoc create mode 100644 Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc create mode 100644 Documentation/fr/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc create mode 100644 Documentation/fr/texidocs/clip-systems.texidoc create mode 100644 Documentation/fr/texidocs/clusters.texidoc create mode 100644 Documentation/fr/texidocs/coloring-notes-depending-on-their-pitch.texidoc create mode 100644 Documentation/fr/texidocs/combining-dynamics-with-markup-texts.texidoc create mode 100644 Documentation/fr/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc create mode 100644 Documentation/fr/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc create mode 100644 Documentation/fr/texidocs/creating-blank-staves.texidoc create mode 100644 Documentation/fr/texidocs/creating-double-digit-fingerings.texidoc create mode 100644 Documentation/fr/texidocs/creating-real-parenthesized-dynamics.texidoc create mode 100644 Documentation/fr/texidocs/creating-simultaneous-rehearsal-marks.texidoc create mode 100644 Documentation/fr/texidocs/creating-slurs-across-voices.texidoc create mode 100644 Documentation/fr/texidocs/creating-text-spanners.texidoc create mode 100644 Documentation/fr/texidocs/cross-staff-chords---beaming-problems-workaround.texidoc create mode 100644 Documentation/fr/texidocs/custodes.texidoc create mode 100644 Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc create mode 100644 Documentation/fr/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc create mode 100644 Documentation/fr/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc create mode 100644 Documentation/fr/texidocs/demo-midiinstruments.texidoc create mode 100644 Documentation/fr/texidocs/demonstrating-all-headers.texidoc create mode 100644 Documentation/fr/texidocs/displaying-complex-chords.texidoc create mode 100644 Documentation/fr/texidocs/displaying-grob-ancestry.texidoc create mode 100644 Documentation/fr/texidocs/dotted-harmonics.texidoc create mode 100644 Documentation/fr/texidocs/double-glissando.texidoc create mode 100644 Documentation/fr/texidocs/drawing-boxes-around-grobs.texidoc create mode 100644 Documentation/fr/texidocs/drawing-circles-around-note-heads.texidoc create mode 100644 Documentation/fr/texidocs/drawing-circles-around-various-objects.texidoc create mode 100644 Documentation/fr/texidocs/embedding-native-postscript-in-a--markup-block.texidoc create mode 100644 Documentation/fr/texidocs/engravers-one-by-one.texidoc create mode 100644 Documentation/fr/texidocs/engraving-tremolos-with-floating-beams.texidoc create mode 100644 Documentation/fr/texidocs/faking-a-hammer-in-tablatures.texidoc create mode 100644 Documentation/fr/texidocs/fine-tuning-pedal-brackets.texidoc create mode 100644 Documentation/fr/texidocs/flamenco-notation.texidoc create mode 100644 Documentation/fr/texidocs/flute-slap-notation.texidoc create mode 100644 Documentation/fr/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc create mode 100644 Documentation/fr/texidocs/forcing-hyphens-to-be-shown.texidoc create mode 100644 Documentation/fr/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc create mode 100644 Documentation/fr/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc create mode 100644 Documentation/fr/texidocs/formatting-lyrics-syllables.texidoc create mode 100644 Documentation/fr/texidocs/fret-diagrams-explained-and-developed.texidoc create mode 100644 Documentation/fr/texidocs/fretboards-alternate-tables.texidoc create mode 100644 Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc create mode 100644 Documentation/fr/texidocs/generating-custom-flags.texidoc create mode 100644 Documentation/fr/texidocs/generating-random-notes.texidoc create mode 100644 Documentation/fr/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc create mode 100644 Documentation/fr/texidocs/glissandi-can-skip-grobs.texidoc create mode 100644 Documentation/fr/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc delete mode 100644 Documentation/fr/texidocs/grouping-beats.texidoc create mode 100644 Documentation/fr/texidocs/guitar-slides.texidoc create mode 100644 Documentation/fr/texidocs/hairpins-with-different-line-styles.texidoc create mode 100644 Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc create mode 100644 Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc create mode 100644 Documentation/fr/texidocs/how-to-change-fret-diagram-position.texidoc create mode 100644 Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc create mode 100644 Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc create mode 100644 Documentation/fr/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc create mode 100644 Documentation/fr/texidocs/incipit.texidoc create mode 100644 Documentation/fr/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc create mode 100644 Documentation/fr/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc create mode 100644 Documentation/fr/texidocs/keep-change-clefs-full-sized.texidoc create mode 100644 Documentation/fr/texidocs/laissez-vibrer-ties.texidoc create mode 100644 Documentation/fr/texidocs/letter-tablature-formatting.texidoc create mode 100644 Documentation/fr/texidocs/line-arrows.texidoc create mode 100644 Documentation/fr/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc create mode 100644 Documentation/fr/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc create mode 100644 Documentation/fr/texidocs/manually-controlling-beam-positions.texidoc create mode 100644 Documentation/fr/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc create mode 100644 Documentation/fr/texidocs/markup-lines.texidoc create mode 100644 Documentation/fr/texidocs/measure-counter.texidoc create mode 100644 Documentation/fr/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc create mode 100644 Documentation/fr/texidocs/modifying-tuplet-bracket-length.texidoc create mode 100644 Documentation/fr/texidocs/moving-dotted-notes-in-polyphony.texidoc create mode 100644 Documentation/fr/texidocs/moving-slur-positions-vertically.texidoc create mode 100644 Documentation/fr/texidocs/numbers-as-easy-note-heads.texidoc rename Documentation/fr/texidocs/{lyrics-old-spacing-settings.texidoc => obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc} (84%) create mode 100644 Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc create mode 100644 Documentation/fr/texidocs/outputting-the-version-number.texidoc create mode 100644 Documentation/fr/texidocs/page-label.texidoc create mode 100644 Documentation/fr/texidocs/percussion-beaters.texidoc delete mode 100644 Documentation/fr/texidocs/piano-template-with-centered-dynamics.texidoc create mode 100644 Documentation/fr/texidocs/positioning-arpeggios.texidoc create mode 100644 Documentation/fr/texidocs/positioning-fingering-indications-precisely.texidoc create mode 100644 Documentation/fr/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc create mode 100644 Documentation/fr/texidocs/positioning-segno-and-coda-with-line-break.texidoc create mode 100644 Documentation/fr/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc create mode 100644 Documentation/fr/texidocs/printing-music-with-different-time-signatures.texidoc create mode 100644 Documentation/fr/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc create mode 100644 Documentation/fr/texidocs/printing-text-from-right-to-left.texidoc create mode 100644 Documentation/fr/texidocs/proportional-strict-notespacing.texidoc create mode 100644 Documentation/fr/texidocs/putting-lyrics-inside-the-staff.texidoc create mode 100644 Documentation/fr/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc create mode 100644 Documentation/fr/texidocs/rhythmic-slashes.texidoc create mode 100644 Documentation/fr/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc create mode 100644 Documentation/fr/texidocs/setting-system-separators.texidoc create mode 100644 Documentation/fr/texidocs/showing-chords-at-changes.texidoc create mode 100644 Documentation/fr/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc create mode 100644 Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc create mode 100644 Documentation/fr/texidocs/skips-in-lyric-mode-2.texidoc create mode 100644 Documentation/fr/texidocs/skips-in-lyric-mode.texidoc create mode 100644 Documentation/fr/texidocs/slides-in-tablature.texidoc create mode 100644 Documentation/fr/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc create mode 100644 Documentation/fr/texidocs/stem-cross-staff-engraver.texidoc create mode 100644 Documentation/fr/texidocs/stemlets.texidoc create mode 100644 Documentation/fr/texidocs/strict-beat-beaming.texidoc create mode 100644 Documentation/fr/texidocs/string-number-extender-lines.texidoc create mode 100644 Documentation/fr/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc create mode 100644 Documentation/fr/texidocs/table-of-contents.texidoc create mode 100644 Documentation/fr/texidocs/three-sided-box.texidoc create mode 100644 Documentation/fr/texidocs/tick-bar-lines.texidoc create mode 100644 Documentation/fr/texidocs/time-signature-in-parentheses---method-3.texidoc create mode 100644 Documentation/fr/texidocs/time-signature-in-parentheses.texidoc create mode 100644 Documentation/fr/texidocs/transcription-of-ancient-music-with-incipit.texidoc create mode 100644 Documentation/fr/texidocs/using-alternative-flag-styles.texidoc create mode 100644 Documentation/fr/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc create mode 100644 Documentation/fr/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc create mode 100644 Documentation/fr/texidocs/using-the-whiteout-property.texidoc create mode 100644 Documentation/fr/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc create mode 100644 Documentation/fr/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc create mode 100644 Documentation/fr/texidocs/vertically-centered-common-lyrics.texidoc create mode 100644 Documentation/fr/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc create mode 100644 Documentation/fr/texidocs/volta-below-chords.texidoc create mode 100644 Documentation/fr/texidocs/volta-multi-staff.texidoc create mode 100644 Documentation/fr/texidocs/volta-text-markup-using-repeatcommands.texidoc create mode 100644 Documentation/hu/included/GNUmakefile create mode 100644 Documentation/included/special-characters.ly create mode 100644 Documentation/it/included/GNUmakefile create mode 100644 Documentation/it/included/generating-output.itexi create mode 100644 Documentation/it/included/helpus.itexi create mode 100644 Documentation/it/notation.tely create mode 100644 Documentation/it/notation/GNUmakefile create mode 100644 Documentation/it/notation/notation.itely create mode 100644 Documentation/it/notation/pitches.itely create mode 100644 Documentation/it/texidocs/adding-ambitus-per-voice.texidoc create mode 100644 Documentation/it/texidocs/ambitus-with-multiple-voices.texidoc create mode 100644 Documentation/it/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc create mode 100644 Documentation/it/texidocs/changing-the-ambitus-gap.texidoc create mode 100644 Documentation/it/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc create mode 100644 Documentation/it/texidocs/non-traditional-key-signatures.texidoc create mode 100644 Documentation/it/texidocs/numbers-as-easy-note-heads.texidoc create mode 100644 Documentation/it/texidocs/ottava-text.texidoc delete mode 100644 Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc create mode 100644 Documentation/it/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc create mode 100644 Documentation/it/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc create mode 100644 Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc create mode 100644 Documentation/it/texidocs/tweaking-clef-properties.texidoc delete mode 100644 Documentation/it/web/news-front.itexi create mode 100644 Documentation/ja/notation/changing-defaults.itely create mode 100644 Documentation/ja/notation/cheatsheet.itely create mode 100644 Documentation/ja/notation/chords.itely create mode 100644 Documentation/ja/notation/contemporary.itely create mode 100644 Documentation/ja/notation/fretted-strings.itely create mode 100644 Documentation/ja/notation/input.itely create mode 100644 Documentation/ja/notation/keyboards.itely create mode 100644 Documentation/ja/notation/percussion.itely create mode 100644 Documentation/ja/notation/spacing.itely create mode 100644 Documentation/ja/notation/specialist.itely create mode 100644 Documentation/ja/notation/unfretted-strings.itely create mode 100644 Documentation/ja/notation/vocal.itely create mode 100644 Documentation/ja/notation/wind.itely create mode 100644 Documentation/ja/notation/world.itely create mode 100644 Documentation/ja/texidocs/piano-template-simple.texidoc delete mode 100644 Documentation/ja/texidocs/piano-template-with-centered-dynamics.texidoc rename Documentation/{web => }/ly-examples/GNUmakefile (73%) rename Documentation/{web => }/ly-examples/ancient-headword.ly (99%) rename Documentation/{web => }/ly-examples/aucun-snippet.ly (78%) rename Documentation/{web => }/ly-examples/bach-bwv610.ly (98%) rename Documentation/{web => }/ly-examples/bach-schenker.ly (90%) rename Documentation/{web => }/ly-examples/cary-layout.ily (77%) rename Documentation/{web => }/ly-examples/cary.ly (97%) rename Documentation/{web => }/ly-examples/chart.ly (92%) rename Documentation/{web => }/ly-examples/example-header.ily (90%) rename Documentation/{web => }/ly-examples/granados.ly (94%) rename Documentation/{web => }/ly-examples/orchestra.ly (99%) rename Documentation/{web => }/ly-examples/sesto-full.ly (98%) rename Documentation/{web => }/ly-examples/sesto-piano.ly (98%) rename Documentation/{web => }/ly-examples/sesto-violin.ly (97%) rename Documentation/{web => }/ly-examples/sesto.ily (99%) rename Documentation/{web => }/ly-examples/tab-example.ly (82%) rename Documentation/{web => }/ly-examples/theory.ly (69%) create mode 100644 Documentation/misc/announce-v2.0.html create mode 100644 Documentation/misc/announce-v2.10.html create mode 100644 Documentation/misc/announce-v2.12.de.html create mode 100644 Documentation/misc/announce-v2.12.es.html create mode 100644 Documentation/misc/announce-v2.12.fr.html create mode 100644 Documentation/misc/announce-v2.12.html create mode 100644 Documentation/misc/announce-v2.2.html create mode 100644 Documentation/misc/announce-v2.4.html create mode 100644 Documentation/misc/announce-v2.6.html create mode 100644 Documentation/misc/announce-v2.8.html create mode 100644 Documentation/misc/browser-language.de.html create mode 100644 Documentation/misc/browser-language.es.html create mode 100644 Documentation/misc/browser-language.fr.html create mode 100644 Documentation/misc/browser-language.html create mode 100644 Documentation/misc/browser-language.hu.html create mode 100644 Documentation/misc/browser-language.ja.html create mode 100644 Documentation/misc/browser-language.nl.html create mode 100644 Documentation/snippets/adding-extra-fingering-with-scheme.ly create mode 100644 Documentation/snippets/aligning-syllables-with-melisma.ly create mode 100644 Documentation/snippets/alternative-bar-numbering.ly create mode 100644 Documentation/snippets/automatic-notation.snippet-list create mode 100644 Documentation/snippets/automatically-change-durations.ly delete mode 100644 Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly create mode 100644 Documentation/snippets/connecting-notes.snippet-list create mode 100644 Documentation/snippets/consistently-left-aligned-bar-numbers.ly create mode 100644 Documentation/snippets/contemporary-notation.snippet-list create mode 100644 Documentation/snippets/correction-wanted.snippet-list create mode 100644 Documentation/snippets/creating-double-digit-fingerings.ly create mode 100644 Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly create mode 100644 Documentation/snippets/cross-staff-stems.ly rename Documentation/snippets/{defining-an-engraver-in-scheme-ambitus-engraver.ly => defining-an-engraver-in-scheme--ambitus-engraver.ly} (89%) create mode 100644 Documentation/snippets/devel.snippet-list delete mode 100644 Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly create mode 100644 Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly create mode 100644 Documentation/snippets/glissandi-can-skip-grobs.ly delete mode 100644 Documentation/snippets/grouping-beats.ly create mode 100644 Documentation/snippets/headword.snippet-list delete mode 100644 Documentation/snippets/lyrics-old-spacing-settings.ly delete mode 100644 Documentation/snippets/modern-tab-text-clef.ly delete mode 100644 Documentation/snippets/new/adding-fingerings-to-tablatures.ly create mode 100644 Documentation/snippets/new/adding-orchestral-cues-to-a-vocal-score.ly delete mode 100644 Documentation/snippets/new/adjusting-lyrics-vertical-spacing.ly create mode 100644 Documentation/snippets/new/alternative-bar-numbering.ly delete mode 100644 Documentation/snippets/new/alternative-breve-note.ly create mode 100644 Documentation/snippets/new/ancient-fonts.ly delete mode 100644 Documentation/snippets/new/ancient-headword.ly create mode 100644 Documentation/snippets/new/ancient-notation-template----modern-transcription-of-gregorian-music.ly delete mode 100644 Documentation/snippets/new/automatic-beam-subdivisions.ly create mode 100644 Documentation/snippets/new/bar-chords-notation-for-guitar--with-text-spanner.ly delete mode 100644 Documentation/snippets/new/beam-endings-in-score-context.ly delete mode 100644 Documentation/snippets/new/beam-grouping-in-7-8-time.ly delete mode 100644 Documentation/snippets/new/changing-the-ambitus-gap.ly delete mode 100644 Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly delete mode 100644 Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly delete mode 100644 Documentation/snippets/new/changing-the-time-signature-without-affecting-the-beaming.ly create mode 100644 Documentation/snippets/new/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly create mode 100644 Documentation/snippets/new/chant-or-psalms-notation.ly delete mode 100644 Documentation/snippets/new/chord-glissando-in-tablature.ly delete mode 100644 Documentation/snippets/new/chordchanges-for-fretboards.ly delete mode 100644 Documentation/snippets/new/clip-systems.ly delete mode 100644 Documentation/snippets/new/compound-time-signatures.ly delete mode 100644 Documentation/snippets/new/controlling-spanner-visibility-after-a-line-break.ly create mode 100644 Documentation/snippets/new/creating-a-sequence-of-notes-on-various-pitches.ly create mode 100644 Documentation/snippets/new/cross-staff-stems.ly rename Documentation/snippets/new/{defining-an-engraver-in-scheme-ambitus-engraver.ly => defining-an-engraver-in-scheme--ambitus-engraver.ly} (91%) delete mode 100644 Documentation/snippets/new/defining-predefined-fretboards-for-other-instruments.ly delete mode 100644 Documentation/snippets/new/displaying-complex-chords.ly delete mode 100644 Documentation/snippets/new/displaying-grob-ancestry.ly delete mode 100644 Documentation/snippets/new/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly delete mode 100644 Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly delete mode 100644 Documentation/snippets/new/dynamics-text-spanner-postfix.ly delete mode 100644 Documentation/snippets/new/editorial-headword.ly delete mode 100644 Documentation/snippets/new/engravers-one-by-one.ly delete mode 100644 Documentation/snippets/new/expressive-headword.ly delete mode 100644 Documentation/snippets/new/faking-a-hammer-in-tablatures.ly delete mode 100644 Documentation/snippets/new/figured-bass-headword.ly delete mode 100644 Documentation/snippets/new/flamenco-notation.ly delete mode 100644 Documentation/snippets/new/fretboards-alternate-tables.ly delete mode 100644 Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly create mode 100644 Documentation/snippets/new/generating-custom-flags.ly create mode 100644 Documentation/snippets/new/glissandi-can-skip-grobs.ly delete mode 100644 Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly delete mode 100644 Documentation/snippets/new/grouping-beats.ly delete mode 100644 Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly create mode 100644 Documentation/snippets/new/jazz-combo-template.ly delete mode 100644 Documentation/snippets/new/keyboard-headword.ly delete mode 100644 Documentation/snippets/new/letter-tablature-formatting.ly delete mode 100644 Documentation/snippets/new/makam-example.ly create mode 100644 Documentation/snippets/new/making-an-object-invisible-with-the-transparent-property.ly delete mode 100644 Documentation/snippets/new/making-slurs-with-complex-dash-structure.ly delete mode 100644 Documentation/snippets/new/modern-tab-text-clef.ly delete mode 100644 Documentation/snippets/new/non-default-tuplet-numbers.ly delete mode 100644 Documentation/snippets/new/non-traditional-key-signatures.ly delete mode 100644 Documentation/snippets/new/open-string-harmonics-in-tablature.ly delete mode 100644 Documentation/snippets/new/piano-template-with-centered-dynamics.ly delete mode 100644 Documentation/snippets/new/pitches-headword.ly create mode 100644 Documentation/snippets/new/positioning-multi-measure-rests.ly create mode 100644 Documentation/snippets/new/redefining-grace-note-global-defaults.ly delete mode 100644 Documentation/snippets/new/repeats-headword.ly delete mode 100644 Documentation/snippets/new/reverting-default-beam-endings.ly delete mode 100644 Documentation/snippets/new/rhythms-headword.ly create mode 100644 Documentation/snippets/new/score-for-diatonic-accordion.ly delete mode 100644 Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly delete mode 100644 Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly delete mode 100644 Documentation/snippets/new/simultaneous-headword.ly delete mode 100644 Documentation/snippets/new/slides-in-tablature.ly delete mode 100644 Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly create mode 100644 Documentation/snippets/new/strict-beat-beaming.ly create mode 100644 Documentation/snippets/new/string-number-extender-lines.ly delete mode 100644 Documentation/snippets/new/subdividing-beams.ly delete mode 100644 Documentation/snippets/new/text-headword.ly delete mode 100644 Documentation/snippets/new/unfretted-headword.ly create mode 100644 Documentation/snippets/new/using-alternative-flag-styles.ly create mode 100644 Documentation/snippets/new/using-grace-note-slashes-with-normal-heads.ly delete mode 100644 Documentation/snippets/new/using-ly-grob-object-to-access-grobs-with--tweak.ly delete mode 100644 Documentation/snippets/new/using-the-whiteout-property.ly delete mode 100644 Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly delete mode 100644 Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly delete mode 100644 Documentation/snippets/new/vocal-ensemble-template.ly delete mode 100644 Documentation/snippets/new/vocal-headword.ly delete mode 100644 Documentation/snippets/new/wind-headword.ly delete mode 100644 Documentation/snippets/new/woodwind-diagrams-listing.ly rename Documentation/snippets/{new/lyrics-old-spacing-settings.ly => obtaining-2.12-lyrics-spacing-in-newer-versions.ly} (75%) delete mode 100644 Documentation/snippets/piano-template-with-centered-dynamics.ly create mode 100644 Documentation/snippets/preparing-parts.snippet-list create mode 100644 Documentation/snippets/real-music.snippet-list create mode 100644 Documentation/snippets/really-cool.snippet-list create mode 100644 Documentation/snippets/really-simple.snippet-list create mode 100644 Documentation/snippets/scheme-language.snippet-list rename Documentation/snippets/{new/screech-boink.ly => screech-and-boink.ly} (78%) delete mode 100644 Documentation/snippets/screech-boink.ly delete mode 100644 Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly rename Documentation/snippets/{new/snap-pizzicato-bartok-pizzicato.ly => snap-pizzicato-or-bartok-pizzicato.ly} (58%) create mode 100644 Documentation/snippets/specific-notation.snippet-list create mode 100644 Documentation/snippets/strict-beat-beaming.ly create mode 100644 Documentation/snippets/stylesheet.snippet-list create mode 100644 Documentation/snippets/symbols-and-glyphs.snippet-list create mode 100644 Documentation/snippets/syntax-and-expressions.snippet-list create mode 100644 Documentation/snippets/time-signature-in-parentheses---method-3.ly create mode 100644 Documentation/snippets/using-autochange-with-more-than-one-voice.ly create mode 100644 Documentation/snippets/version-specific.snippet-list create mode 100644 Documentation/snippets/workaround.snippet-list create mode 100644 Documentation/web/server/tweets.xml create mode 100644 Documentation/zh/included/GNUmakefile delete mode 100644 input/regression/accidental-forced-tie-barline.ly delete mode 100644 input/regression/accidental-tie-overridden.ly create mode 100644 input/regression/alter-broken.ly create mode 100644 input/regression/ambitus-cue.ly create mode 100644 input/regression/ambitus-slur.ly create mode 100644 input/regression/auto-beam-exceptions.ly create mode 100644 input/regression/autobeam-3-4-rules.ly delete mode 100644 input/regression/autobeam-start-at-beginning-of-measure-in-3-4.ly create mode 100644 input/regression/autobeam-tuplet-recheck.ly delete mode 100644 input/regression/bar-line-dashed.ly delete mode 100644 input/regression/bar-line-dotted.ly delete mode 100644 input/regression/bar-line-thick.ly delete mode 100644 input/regression/bar-line-tick.ly create mode 100644 input/regression/bar-lines.ly create mode 100644 input/regression/bar-number-check-warning.ly create mode 100644 input/regression/bar-number-visibility.ly create mode 100644 input/regression/bar-number-volta-repeat.ly create mode 100644 input/regression/beam-broken-classic.ly create mode 100644 input/regression/beam-broken-difficult.ly create mode 100644 input/regression/beam-collision-cross-staff2.ly create mode 100644 input/regression/beam-collision-flag.ly create mode 100644 input/regression/beam-cross-staff-rest.ly create mode 100644 input/regression/beam-quanting-overhang.ly create mode 100644 input/regression/beam-rest-extreme.ly create mode 100644 input/regression/beam-subdivide-tuplets.ly create mode 100644 input/regression/beaming-tuplet-regular.ly create mode 100644 input/regression/beamlet-point-toward-beat.ly create mode 100644 input/regression/beamlet-test.ly create mode 100644 input/regression/bom-mark.ly create mode 100644 input/regression/breve-extent.ly create mode 100644 input/regression/chord-additional-pitch-prefix.ly create mode 100644 input/regression/chord-name-minor.ly create mode 100644 input/regression/chord-repetition-times.ly create mode 100644 input/regression/chord-slash-separator.ly create mode 100644 input/regression/completion-heads-unit.ly create mode 100644 input/regression/complex-once.ly create mode 100644 input/regression/context-string-tuning.ly create mode 100644 input/regression/cross-staff-stems.ly create mode 100644 input/regression/cue-clef-after-barline.ly create mode 100644 input/regression/cue-clef-manually.ly create mode 100644 input/regression/define-event-function.ly create mode 100644 input/regression/dot-column-engraver.ly create mode 100644 input/regression/dot-column-vertical-positioning.ly create mode 100644 input/regression/dynamics-alignment-autobreak.ly create mode 100644 input/regression/dynamics-alignment-breaker-linebreak.ly create mode 100644 input/regression/dynamics-alignment-breaker-order.ly create mode 100644 input/regression/dynamics-alignment-breaker-subsequent-spanner.ly create mode 100644 input/regression/dynamics-alignment-no-line-linebreak.ly create mode 100644 input/regression/dynamics-avoid-cross-staff-stem.ly create mode 100644 input/regression/dynamics-text-dynamics-context.ly create mode 100644 input/regression/empty-chord.ly create mode 100644 input/regression/event-listener-output.ly create mode 100644 input/regression/extratoken.ly create mode 100644 input/regression/flag-stem-begin-position.ly create mode 100644 input/regression/footnote-auto-numbering-page-reset.ly create mode 100644 input/regression/footnote-auto-numbering-vertical-order.ly create mode 100644 input/regression/footnote-auto-numbering.ly create mode 100644 input/regression/glissando-accidental.ly create mode 100644 input/regression/glissando-broken-multiple.ly create mode 100644 input/regression/glissando-cross-staff.ly create mode 100644 input/regression/glissando-skip.ly create mode 100644 input/regression/grace-slashed-no-slur.ly create mode 100644 input/regression/grob-indirect-tweak.ly create mode 100644 input/regression/hairpin-arpeggio.ly create mode 100644 input/regression/hairpin-span-bar.ly create mode 100644 input/regression/header-book-multiple.ly create mode 100644 input/regression/header-book-multiplescores.ly create mode 100644 input/regression/header-bookpart-multiple.ly create mode 100644 input/regression/header-cyclic-reference.ly create mode 100644 input/regression/header-score-multiple.ly create mode 100644 input/regression/header-toplevel-multiple.ly create mode 100644 input/regression/id.ly create mode 100644 input/regression/in-note.ly create mode 100644 input/regression/instrument-name-pedal-lyrics.ly create mode 100644 input/regression/instrument-switch-invalid-warning.ly create mode 100644 input/regression/laissez-vibrer-chords.ly create mode 100644 input/regression/layout-from.ly create mode 100644 input/regression/lilypond-book/html-musicxml-file-compressed.htmly create mode 100644 input/regression/lilypond-book/html-musicxml-file-options.htmly create mode 100644 input/regression/lilypond-book/html-musicxml-file.htmly create mode 100644 input/regression/lilypond-book/include.mxl create mode 100644 input/regression/lilypond-book/include.xml create mode 100644 input/regression/lilypond-book/include/GNUmakefile create mode 100644 input/regression/lilypond-book/include/example.ly create mode 100644 input/regression/lilypond-book/include/myvar.ily create mode 100644 input/regression/lilypond-book/tex-musicxml-file-options.lytex create mode 100644 input/regression/lilypond-book/tex-musicxml-file.lytex create mode 100644 input/regression/lilypond-book/texinfo-include-file.tely create mode 100644 input/regression/lilypond-book/texinfo-musicxml-file-options.tely create mode 100644 input/regression/lilypond-book/texinfo-musicxml-file.tely rename input/regression/lilypond-book/{papersize-docs.tely => texinfo-papersize-docs.tely} (98%) create mode 100644 input/regression/loglevels.ly create mode 100644 input/regression/lyric-combine-derived-voice.ly create mode 100644 input/regression/lyric-octave-eight.ly create mode 100644 input/regression/lyric-tweak.ly create mode 100644 input/regression/lyrics-pass-under-bar.ly create mode 100644 input/regression/lyrics-spanbar.ly create mode 100644 input/regression/markup-center-align-nocollision.ly create mode 100644 input/regression/markup-cyclic-reference.ly create mode 100644 input/regression/markup-depth-non-terminating.ly create mode 100644 input/regression/markup-special-characters.ly create mode 100644 input/regression/metronome-mark-broken-bound.ly create mode 100644 input/regression/multi-measure-rest-staff-position.ly create mode 100644 input/regression/multi-measure-rest-standard.ly create mode 100644 input/regression/multi-measure-rest-tweaks.ly delete mode 100644 input/regression/multi-measure-rest-usebreve.ly create mode 100644 input/regression/musicxml/book-musicxml-testsuite.py delete mode 100644 input/regression/nested-property-revert.ly create mode 100644 input/regression/one-line-breaking.ly create mode 100644 input/regression/optional-args-backup.ly create mode 100644 input/regression/optional-args-predicate.ly create mode 100644 input/regression/optional-args.ly create mode 100644 input/regression/page-breaking-end-of-score.ly create mode 100644 input/regression/page-headers-and-footers.ly create mode 100644 input/regression/page-spacing-nonstaff-lines-skylines.ly create mode 100644 input/regression/part-combine-3voices.ly create mode 100644 input/regression/point-and-click-types.ly create mode 100644 input/regression/push-to-tag.ly create mode 100644 input/regression/quote-during-subvoice.ly create mode 100644 input/regression/remove-empty-context-mod.ly create mode 100644 input/regression/repeat-sign-global-size-10.ly create mode 100644 input/regression/repeat-sign-global-size-30.ly create mode 100644 input/regression/repeat-sign-layout-size.ly create mode 100644 input/regression/repeat-sign.ly create mode 100644 input/regression/rest-on-nonstandard-staff.ly create mode 100644 input/regression/script-accidental-collision.ly create mode 100644 input/regression/set-once.ly create mode 100644 input/regression/shape-other-curves.ly create mode 100644 input/regression/shape-slurs.ly create mode 100644 input/regression/shift-durations-negative-dots.ly create mode 100644 input/regression/slur-avoid.ly create mode 100644 input/regression/slur-dot-collision.ly create mode 100644 input/regression/slur-flag.ly create mode 100644 input/regression/slur-height-capping.ly create mode 100644 input/regression/slur-shift-region.ly create mode 100644 input/regression/slur-tie-control-points.ly create mode 100644 input/regression/slur-vertical-skylines.ly create mode 100644 input/regression/slur-vestigial-outside-staff-callback.ly create mode 100644 input/regression/spacing-loose-polyphony.ly create mode 100644 input/regression/span-bar-allow-span-bar.ly create mode 100644 input/regression/span-bar-articulation.ly create mode 100644 input/regression/spanner-alignment.ly create mode 100644 input/regression/staff-change-autobeam.ly create mode 100644 input/regression/staff-ledger-positions.ly create mode 100644 input/regression/stem-cross-staff-articulation.ly create mode 100644 input/regression/stem-length.ly create mode 100644 input/regression/stem-pure-height-beamed.ly create mode 100644 input/regression/stem-tremolo-note-column.ly create mode 100644 input/regression/system-start-bar-collapse-staffspace.ly create mode 100644 input/regression/tablature-chord-repetition-finger.ly create mode 100644 input/regression/tablature-double-stem-tremolo.ly create mode 100644 input/regression/tablature-open-string-chord.ly create mode 100644 input/regression/tablature-open-string-handling.ly create mode 100644 input/regression/tuplet-bracket-avoid-fingering.ly create mode 100644 input/regression/tuplet-bracket-avoid-scripts.ly create mode 100644 input/regression/tuplet-bracket-avoid-string-number.ly create mode 100644 input/regression/tuplet-bracket-direction.ly create mode 100644 input/regression/tuplet-bracket-outside-staff-priority.ly create mode 100644 input/regression/tuplet-nest-broken.ly create mode 100644 input/regression/tuplet-number-outside-staff-priority.ly create mode 100644 input/regression/tuplet-number-slur-script.ly create mode 100644 input/regression/tuplet-subdivision.ly create mode 100644 input/regression/unpure-pure-container.ly create mode 100644 input/regression/warn-expected-warning-missing.ly delete mode 100644 lily/beam-concave.cc create mode 100644 lily/concurrent-hairpin-engraver.cc create mode 100644 lily/flag.cc delete mode 100644 lily/identifier-smob.cc create mode 100644 lily/include/interval-minefield.hh create mode 100644 lily/include/one-line-page-breaking.hh rename lily/include/{span-bar.hh => pure-from-neighbor-interface.hh} (50%) create mode 100644 lily/include/rhythmic-music-iterator.hh rename lily/include/{identifier-smob.hh => unpure-pure-container.hh} (67%) create mode 100644 lily/interval-minefield.cc create mode 100644 lily/one-line-page-breaking.cc create mode 100644 lily/page-layout-problem-scheme.cc create mode 100644 lily/pure-from-neighbor-engraver.cc create mode 100644 lily/pure-from-neighbor-interface.cc create mode 100644 lily/rhythmic-music-iterator.cc create mode 100644 lily/span-bar-stub-engraver.cc delete mode 100644 lily/span-bar.cc create mode 100644 lily/undead.cc create mode 100644 lily/unpure-pure-container.cc create mode 100644 lily/warn-scheme.cc create mode 100644 ly/context-mods-init.ly create mode 100644 ly/event-listener.ly create mode 100644 ly/scheme-sandbox.ly create mode 100644 ly/text-replacements.ly delete mode 100644 mf/bigcheese.pe.in create mode 100644 mf/feta-flags-generic.mf create mode 100644 mf/feta-flags11.mf create mode 100644 mf/feta-flags13.mf create mode 100644 mf/feta-flags14.mf create mode 100644 mf/feta-flags16.mf create mode 100644 mf/feta-flags18.mf create mode 100644 mf/feta-flags20.mf create mode 100644 mf/feta-flags23.mf create mode 100644 mf/feta-flags26.mf delete mode 100644 mf/feta-noteheads-test-generic.mf create mode 100644 mf/feta-ties.mf create mode 100644 mf/parmesan-noteheads-generic.mf create mode 100644 mf/parmesan-noteheads11.mf create mode 100644 mf/parmesan-noteheads13.mf create mode 100644 mf/parmesan-noteheads14.mf create mode 100644 mf/parmesan-noteheads16.mf create mode 100644 mf/parmesan-noteheads18.mf create mode 100644 mf/parmesan-noteheads20.mf create mode 100644 mf/parmesan-noteheads23.mf create mode 100644 mf/parmesan-noteheads26.mf create mode 100644 po/eo.po create mode 100644 scm/bar-line.scm create mode 100644 scm/document-context-mods.scm create mode 100644 scm/markup-macros.scm create mode 100644 scm/safe-utility-defs.scm create mode 100644 scm/text.scm create mode 100755 scripts/auxiliar/prepare-web-media.py create mode 100644 scripts/build/makesnippets.py delete mode 100644 scripts/build/mutopia-index.py mode change 100644 => 100755 scripts/build/output-distance.py create mode 100755 scripts/build/run-and-check.sh create mode 100644 tex/lilypond.map.in create mode 100644 tex/txi-nl.tex diff --git a/.mailmap b/.mailmap index ac9bad1028..78d92e31a2 100644 --- a/.mailmap +++ b/.mailmap @@ -2,10 +2,13 @@ Andrew Hawryluk Andrew Hawryluk Andrew Wilson Arjan Bos +Benkő Pál Boris Shingarov Boris Shingarov Carl D. Sorensen Carl D. Sorensen +Carl D. Sorensen +Colin Campbell Chris Snyder Damien Heurtebise Daniel Johnson @@ -95,6 +98,7 @@ Han-Wen Nienhuys #? Heikki Junes Heikki Junes Heikki Junes +Heikki Tauriainen Hu Haipeng Ian Hulin James E. Bailey @@ -102,6 +106,9 @@ James Lowe James Lowe James Lowe James Lowe +Janek Warchoł +Janek Warchoł +Janek Warchoł Jan Nieuwenhuizen Jan Nieuwenhuizen Jan Nieuwenhuizen diff --git a/AUTHORS.txt b/AUTHORS.txt index 20876cb11a..ff1cc52e9c 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -14,14 +14,22 @@ contributed over 100 lines of code or the equivalent. Current Development Team ------------------------ + * Bertrand Bordage: , Core developer, + font designer + * Trevor Daniels: , Assistant documentation editor + * Phil Holmes: `http://www.philholmes.net' + Build unentangler, Bug squad member + + * Ian Hulin: Core developer + * Reinhold Kainhofer: , `http://reinhold.kainhofer.com', Core developer, Music2xml wrangler - * David Kastrup: Code worrier, support fighter, - accordionist + * David Kastrup: , hard core developer, user and + programming interfaces, bug squashing and swamp drainage. * Jonathan Kulp: Assistant documentation editor @@ -47,14 +55,16 @@ Current Development Team * Neil Puttock: Core developer - * Mike Solomon: , Contemporary music attaché + * Mike Solomon: , Core developer, Frog meister - * Carl Sorensen: , Core developer, Frog meister + * Carl Sorensen: , Core developer * Francisco Vila: Translation Meister * Valentin Villenave: LSR editor and Bug squad member + * Jan Warchoł: happy nitpicker + Previous Development Team ------------------------- @@ -83,40 +93,34 @@ Current Contributors Programming ........... -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 +Aleksandr Andreev, Sven Axelsson, Peter Chubb, Karin Hoethker, Mark +Hohl, Justin Ohmie, Benkő Pál, Julien Rioux, Patrick Schmidt, Adam +Spiers, Heikki Taurainen, Piers Titus van der Torren, Jan-Peter Voigt, +Janek Warchol Font .... -Keith OHara, Marc Hohl, Alexander Kobel, Carsten Steger - Documentation ............. -Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph Palmer, -David Pounder, Patrick Schmidt +James Lowe, Pavel Roskin, Alberto Simoes, Stefan Weil Bug squad ......... -James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph Palmer, -Kieren MacMillan, Dmytro O. Redchuk +Colin Campbell, Eluze, Phil Holmes, Marek Klein, Ralph Palmer, James +Lowe Support ....... -Christian Hitz +Colin Campbell, Christian Hitz, Phil Holmes Translation ........... -Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de -Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada +Jean-Charles Malahieude, Till Paala, Yoshiki Sawada Past Contributors ----------------- @@ -124,46 +128,55 @@ Past Contributors Programming ........... -Erlend Aasland, Maximilian Albert, Guido Amoruso, Kristof Bastiaensen, -Pál Benkő, Juliusz Chroboczek, Angelo Contardi, David Feuer, Bertalan -Fodor, Mathieu Giraud, Yuval Harel, Bernard Hurley, Yoshinobu Ishizaki, -Chris Jackson, David Jedlinsky, Heikki Junes, Michael Krause, -Jean-Baptiste Lamy, Jonatan Liljedahl, Peter Lutek, Hendrik Maryns, Joe -Neeman, Matthias Neeracher, Tatsuya Ono, Lisa Opus Goldstein, Guy -Gascoigne-Piggford, Stan Sanderson, Edward Sanford Sutton, Andreas -Scherer, Johannes Schindelin, Kim Shrier, Vicente Solsona Della, David -Svoboda, Sebastiano Vigna, Arno Waschk, Michael Welsh Duggan, John -Williams, Milan Zamazal, Rune Zedeler +Erlend Aasland, Maximilian Albert, Guido Amoruso, Sven Axelsson, +Kristof Bastiaensen, Pál Benkő, Bertrand Bordage, Frédéric Bron, +Juliusz Chroboczek, Peter Chubb, Angelo Contardi, Vicente Solsona Della, +Hajo Dezelski, Michael Welsh Duggan, David Feuer, Bertalan Fodor, +Richard Gay, Mathieu Giraud, Lisa Opus Goldstein, Yuval Harel, Andrew +Hawryluk, Christian Hitz, Marc Hohl, Ian Hulin, Bernard Hurley, +Yoshinobu Ishizaki, Chris Jackson, David Jedlinsky, Heikki Junes, +Michael Käppler, Marek Klein, Michael Krause, Jean-Baptiste Lamy, +Jonatan Liljedahl, Peter Lutek, Kieren MacMillan, Hendrik Maryns, +Thomas Morgan, Joe Neeman, Matthias Neeracher, Keith OHara, Tatsuya Ono, +Benjamin Peterson, Guy Gascoigne-Piggford, Henning Hraban Ramm, Nathan +Reed, Julien Rioux, Stan Sanderson, Andreas Scherer, Johannes +Schindelin, Patrick Schmidt, Boris Shingarov, Kim Shrier, Edward +Sanford Sutton, David Svoboda, Owen Tuz, Sebastiano Vigna, Jan Warchoł, +Arno Waschk, John Williams, Andrew Wilson, Milan Zamazal, Rune Zedeler, +Rodolfo Zitellini Font .... -Tom Cato Amundsen, Chris Jackson, Arno Waschk, Rune Zedeler +Tom Cato Amundsen, Marc Hohl, Chris Jackson, Alexander Kobel, Keith +OHara, Carsten Steger, Arno Waschk, Rune Zedeler Documentation ............. -Erlend Aasland, Trevor Bača, Alard de Boer, Jay Hamilton, Andrew -Hawryluk, Joseph Harfouch, Cameron Horsburgh, Geoff Horton, Ian Hulin, -Heikki Junes, Kurtis Kroon, Dave Luttinen, Kieren MacMillan, Christian -Mondrup, Eyolf Østrem, Ralph Palmer, François Pinard, Eduardo Vieira, -Michael Rasmussen, Till Rettig, Carl D. Sorensen, Anh Hai Trinh, Rune -Zedeler +Erlend Aasland, Trevor Bača, Alard de Boer, Colin Campbell, Jay +Hamilton, Joseph Harfouch, Andrew Hawryluk, Cameron Horsburgh, Geoff +Horton, Ian Hulin, Heikki Junes, Kurtis Kroon, James Lowe, Dave +Luttinen, Kieren MacMillan, Christian Mondrup, Mike Moral, Eyolf +Østrem, Ralph Palmer, François Pinard, David Pounder, Michael +Rasmussen, Till Rettig, Patrick Schmidt, Carl D. Sorensen, Anh Hai +Trinh, Eduardo Vieira, Rune Zedeler Support ....... -Anthony Fok, Chris Jackson, Heikki Junes, David Svoboda +Anthony Fok, Christian Hitz, Chris Jackson, Heikki Junes, David Svoboda Translation ........... -Frédéric Chiasson, Abel Cheung, Alard de Boer, Simon Dahlbacka, Orm -Finnendahl, David González, Nicolas Grandclaude, Damien Heurtebise, -Matthieu Jacquot, Bjoern Jacke, Neil Jerram, Heikki Junes, Nicolas -Klutchnikoff, Jean-Charles Malahieude, Adrian Mariano, Christian -Mondrup, Tineke de Munnik, Steven Michael Murphy, François Pinard, -Gauvain Pocentek, Till Rettig, Ludovic Sardain, Yoshiki Sawada, Thomas -Scharkowski, Clytie Siddall, August S. Sigov, Roland Stigge, Risto -Vääräniemi, Andrea Valle, Olcay Yıldırım +Alard de Boer, Federico Bruni, Abel Cheung, Frédéric Chiasson, Simon +Dahlbacka, Orm Finnendahl, David González, Nicolas Grandclaude, Dénes +Harmath, Damien Heurtebise, Bjoern Jacke, Matthieu Jacquot, Neil Jerram, +Heikki Junes, Nicolas Klutchnikoff, Jean-Charles Malahieude, Adrian +Mariano, Christian Mondrup, Tineke de Munnik, Steven Michael Murphy, +Till Paala, François Pinard, Gauvain Pocentek, Till Rettig, Ludovic +Sardain, Yoshiki Sawada, Thomas Scharkowski, Clytie Siddall, August S. +Sigov, Roland Stigge, Risto Vääräniemi, Andrea Valle, Ralf +Wildenhues, Olcay Yıldırım diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile index 19ae577698..b1c47c1f79 100644 --- a/Documentation/GNUmakefile +++ b/Documentation/GNUmakefile @@ -12,7 +12,7 @@ LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py) MANUALS_SUBDIRS = usage contributor essay \ web learning notation extending SUBDIRS = $(MANUALS_SUBDIRS) snippets logo pictures misc po css topdocs \ - included $(LANGS) + included ly-examples $(LANGS) STEPMAKE_TEMPLATES = documentation texinfo tex omf LOCALSTEPMAKE_TEMPLATES = lilypond ly @@ -23,7 +23,7 @@ TEXI2PDF_FLAGS = \ -I $(outdir) \ -I $(top-build-dir)/Documentation/$(outconfbase) $(outdir)/snippets-big-page.html: TEXI2HTML_FLAGS += -D short_toc -$(outdir)/snippets/index..html: TEXI2HTML_FLAGS += -D short_toc +$(outdir)/snippets/index.html: TEXI2HTML_FLAGS += -D short_toc ### Extra source files @@ -31,6 +31,7 @@ README_TOP_FILES= DEDICATION THANKS IN_ITELY_FILES = $(call src-wildcard,snippets/*-intro.itely) SNIPPET_LY_FILES = $(call src-wildcard,snippets/*.ly) +OUT_SNIPPET_LY_FILES = $(SNIPPET_LY_FILES:%.ly=out/%.ly) EXTRA_DIST_FILES = $(call src-wildcard,*.init) $(call src-wildcard,*.bst) @@ -57,19 +58,19 @@ TEXI_FILES_FROM_TELY = $(outdir)/internals.texi PDF_FILES = $(TEXINFO_MANUALS:%=$(outdir)/%.pdf) TOPDIR_HTML_MANUALS = -UNSPLITTED_HTML_MANUALS = -SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\ - $(if $(findstring $(manual), $(UNSPLITTED_HTML_MANUALS)),,$(manual))) -NOT_TOPDIR_HTML_MANUALS = $(foreach manual, $(SPLITTED_HTML_MANUALS),\ +UNSPLIT_HTML_MANUALS = +SPLIT_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\ + $(if $(findstring $(manual), $(UNSPLIT_HTML_MANUALS)),,$(manual))) +NOT_TOPDIR_HTML_MANUALS = $(foreach manual, $(SPLIT_HTML_MANUALS),\ $(if $(findstring $(manual), $(TOPDIR_HTML_MANUALS)),,$(manual))) -OUT_HTML_FILES = $(UNSPLITTED_HTML_MANUALS:%=$(outdir)/%.html)\ - $(SPLITTED_HTML_MANUALS:%=$(outdir)/%-big-page.html) +OUT_HTML_FILES = $(UNSPLIT_HTML_MANUALS:%=$(outdir)/%.html)\ + $(SPLIT_HTML_MANUALS:%=$(outdir)/%-big-page.html) DEEP_HTML_FILES = $(NOT_TOPDIR_HTML_MANUALS:%=$(outdir)/%/index.html) # Symlinks to refer to external source documents from split and non-split HTML source-links = $(outdir)/source\ - $(foreach manual, $(SPLITTED_HTML_MANUALS), $(outdir)/$(manual)/source) + $(foreach manual, $(SPLIT_HTML_MANUALS), $(outdir)/$(manual)/source) # Other out files @@ -134,18 +135,6 @@ $(outdir)/essay.texi: \ $(outdir)/computer-notation.itexi \ $(outdir)/engravingbib.itexi -$(outdir)/others-did.itexi: - BSTINPUTS=$(src-dir)/web/ $(buildscript-dir)/bib2texi \ - -s $(top-src-dir)/Documentation/lily-bib \ - -o $(outdir)/others-did.itexi \ - $(src-dir)/web/others-did.bib - -$(outdir)/we-wrote.itexi: - BSTINPUTS=$(src-dir)/web/ $(buildscript-dir)/bib2texi \ - -s $(top-src-dir)/Documentation/lily-bib \ - -o $(outdir)/we-wrote.itexi \ - $(src-dir)/web/we-wrote.bib - ########### ### Targets @@ -206,13 +195,19 @@ endif ######### ### Rules -$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi - $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $< +$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS) + $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<" "$*.makeinfo.log" + +txt-to-html: $(OUT_TXT_FILES) $(OUT_TXT_FILES:%.txt=%.html) -# cd $(outdir) rule gets bit hairy for --srcdir configure builds -txt-to-html: - $(foreach a, $(README_TOP_FILES), cp $(top-src-dir)/$(a) $(outdir)/$(a).txt && ) true - $(PYTHON) $(step-bindir)/text2html.py $(OUT_TXT_FILES) +$(OUT_TXT_FILES): $(outdir)/%.txt: $(top-src-dir)/% + cp -f $< $@ + +$(OUT_TXT_FILES:%.txt=%.html): $(outdir)/%.html: $(outdir)/%.txt + $(PYTHON) $(step-bindir)/text2html.py $< + +# Explicitly list the dependencies on generated content +$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi $(outdir)/weblinks.itexi ifeq ($(out),www) ## Extra images dependencies @@ -222,35 +217,29 @@ $(outdir)/pictures: $(MAKE) -C pictures WWW-1 ln -sf ../pictures/$(outdir) $@ -$(outdir)/ly-examples: - $(MAKE) -C web/ly-examples - ln -sf ../web/ly-examples/$(outdir) $@ -endif +$(outdir)/web.texi: $(outdir)/css $(outdir)/ly-examples -ifeq ($(out),www) -$(outdir)/web.texi: $(outdir)/ly-examples $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi -else -# duplicate (without ly-examples) -$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi +$(outdir)/css: + $(MAKE) -C css + ln -sf ../css/$(outdir) $@ + +$(outdir)/ly-examples: + $(MAKE) -C ly-examples + ln -sf ../ly-examples/$(outdir) $@ endif # Ugh, using '%' twice not possible $(outdir)/notation/notation.xml: $(outdir)/notation.texi mkdir -p $(dir $@) - $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $< + $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<" "$*.makeinfoxml.log" $(outdir)/internals/internals.xml: $(outdir)/internals.texi mkdir -p $(dir $@) - $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $< + $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<" "$*.makeinfoxml.log" $(outdir)/learning.texi $(outdir)/notation.texi: $(OUT_PDF_IMAGES) -$(foreach manual, $(MANUAL_SUBDIRS),\ -$(eval $(outdir)/(manual).texi: $(call src-wildcard,$(manual)/*.ite??))) - - - $(outdir)/source: @rm -f $(@) ln -sf $(depth) $(@) @@ -265,7 +254,15 @@ $(outdir)/%/source: $(outdir)/%.itely: snippets/%-intro.itely snippets/%.snippet-list xargs $(LYS_TO_TELY) -f doctitle,texidoc,verbatim --name=$@ --template=$< < $(filter %.snippet-list, $^) -$(outdir)/snippets.texi: $(GENERATED_ITELY_FILES) $(SNIPPET_LY_FILES) +$(TEXI_FILES_FROM_TELY): $(GENERATED_ITELY_FILES) $(OUT_SNIPPET_LY_FILES) + +$(OUT_SNIPPET_LY_FILES): out/ly-snippets.dep + +out/ly-snippets.dep: $(SNIPPET_LY_FILES) + mkdir -p snippets/out + $(buildscript-dir)/makesnippets $(src-dir)/snippets snippets/out $(src-dir) + mkdir -p out + touch $@ $(outdir)/%.bib: %.bib ln -f $< $@ @@ -292,8 +289,7 @@ $(outdir)/ly-grammar.txt: $(top-src-dir)/lily/parser.yy # compilation during install, which is a bad thing (tm). $(outdir)/internals.texi: $(LILYPOND_BINARY) - cd $(outdir) && $(LILYPOND_BINARY) --verbose $(top-src-dir)/ly/generate-documentation - + cd $(outdir) && $(buildscript-dir)/run-and-check "$(LILYPOND_BINARY) --verbose $(top-src-dir)/ly/generate-documentation" "generate-documentation.log" ############################################### # Documentation and translations maintenance # @@ -383,5 +379,3 @@ update-translation: # what's it gonna be, boy...tranlationS-/translation- translation-status: PYTHONPATH=$(top-src-dir)/python:$(top-src-dir)/python/auxiliar $(PYTHON) $(top-src-dir)/scripts/auxiliar/translations-status.py - -.SECONDARY: diff --git a/Documentation/changes.tely b/Documentation/changes.tely index babd796462..83db4ea859 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -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 @@ -60,615 +60,355 @@ which scares away people. * only show user-visible changes. @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. +Support for cross-staff stems on chords, using @code{crossStaff} +and the @code{Span_stem_engraver}. This calculates the length of +cross-staff stems automatically. +@lilypondfile[quote] +{cross-staff-stems.ly} @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. +The syntax of words (character sequences recognized without enclosing +quotes) and commands (now always a backslash @samp{\} followed by a +word) has been unified across all modes: it now consists of alphabetic +characters, possibly enclosing isolated dashes @samp{-} and underlines +@samp{_}. +As one consequence, using unquoted text scripts like (literally!) @example -\include "articulate.ly" -\articulate << - all the rest of the score... ->> +@{ c-script c\f_script @} @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" - +will now tend to result in invalid music. Omitting quote marks +for arbitrary text rather than keywords has never been good practice or +even documented, and it is unlikely to have seen significant use. + +Staying with established conventions (like not using dashes or +underlines for command names intended to be used inside of music) +remains advisable. The reason for this change is more robust +recognition of LilyPond's lexical units for LilyPond itself as well as +external tools interpreting its syntax. + +@item +Support for Kievan square notation: +@lilypond[quote,relative=1,verbatim] +\new KievanVoice { + \cadenzaOn + c d e f g a bes + \bar "kievan" } @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 @{ +Augmentation dots now avoid the other voice in two-voice polyphony +so that users can move the @code{Dot_column_engraver} to set dots +independently for each @code{Voice}. +@lilypond[quote] +\layout { + \context { + \Staff + \remove Dot_column_engraver + } \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 + \consists Dot_column_engraver + } } +\relative c'' << + { \time 6/8 + 4. b + } \\ { + 4. + } >> @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 } - -\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" - } ->> +A Scheme function to adjust the control points of curves such as slurs +and ties, developed by several users, is now included in LilyPond. +@lilypond[quote,verbatim,relative=2] +g8->( bes,-.) d4 +\shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0)) +g8->( bes,!-.) d4 @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 +Use of @code{\tempo} specifications in @code{\midi} blocks (removed in +2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has +seen a revival: now any kind of property-setting music is turned into +context definitions within output specifications, allowing for +declarations like +@example +\layout @{ \accidentalStyle modern @} +\midi @{ \tempo 4. = 66 @} +@end example @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. +The LilyPond G clef has been redesigned - upper loop is now more balanced, +bottom crook sticks out less and the "spine" (main vertical line) is more +evenly curved. The old and new versions can be compared by looking at the +documentation: +@uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version}, +@uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}. + +@item +Lilypond's stencil commands have been simplified to allow for less code +duplication and better height approximations of graphical objects. The +following stencil commands have been eliminated: +@itemize +@item @code{beam} +@item @code{bezier-sandwich} +@item @code{bracket} +@item @code{dashed-slur} +@item @code{dot} +@item @code{oval} +@item @code{repeat-slash} +@item @code{zigzag-line} +@end itemize @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 -} +Flags are now treated as separate objects rather than as stem parts. +@lilypond[fragment,quote,relative=2] +\override Flag #'color = #red +g8 @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 } +Two alternative methods for bar numbering can be set, especially for +when using repeated music; -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 } | +@lilypond[fragment,quote,relative=1,noragged-right] +\relative c'{ + \set Score.alternativeNumberingStyle = #'numbers + \repeat volta 3 { c4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 \break + \set Score.alternativeNumberingStyle = #'numbers-with-letters + \repeat volta 3 { c,4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } 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. +The following is a fundamental change in LilyPond's music +representation: Rhythmic events like @code{LyricEvent} and +@code{NoteEvent} are no longer wrapped in @code{EventChord} unless they +have been actually entered as part of a chord in the input. If you +manipulate music expressions in Scheme, the new behavior may require +changes in your code. Calling the music function @code{\eventChords} or +the Scheme function @code{event-chord-wrap!} converts to the old +representation; using one of those might be easiest for keeping legacy +code operative. -@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. +The following three items are consequences of this change. @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. +The repetitive chord entry aid @code{q} has been reimplemented. +Repeated chords are now replaced right before interpreting a music +expression. In case the user wants to retain some events of the +original chord, he can run the repeat chord replacement function +@code{\chordRepeats} manually. @item -The part-combiner's decision to combine/not combine notes can now be customized +String numbers and right hand fingerings on single notes now appear +without having to be written inside of chord brackets. -@lilypond[quote,relative=2] -\partcombine -\relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e } -\relative c' { c2 \partcombineApart c | c c } +@item +Music functions now work the same when used inside or outside of chords, +including all the possibilities of argument parsing. Music variables +can be used inside of chords: a construct like +@lilypond[verbatim,quote,ragged-right] +tonic=fis' +{ <\tonic \transpose c g \tonic> } @end lilypond +@noindent +now works as expected. One can use @code{#@{@dots{}#@}} for +constructing chord constituents. @code{\tweak} now works on single +notes without needing to wrap them in a chord. Using it on command +events and lyrics is now possible, but not likely to give results yet. @item -Tablature staves show fret numbers only by default. To get the -former style, @code{\tabFullNotation} is provided. +@code{\tweak} now takes an optional layout object specification. It can +be used for tweaking layout objects that are only indirectly caused by +the tweaked event, like accidentals, stems, and flags: -@item -Funk-style and Walker-style shape notes have been added. +@lilypond[verbatim,quote,ragged-right,relative=2] +<\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> +@end lilypond @item -Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext} -is used. +Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}}) +are now executed in lexical closure of the surrounding Scheme code. +@code{$} is no longer special in embedded Lilypond. It can be used +unconditionally in Lilypond code for immediate evaluation of Scheme +expressions, similar to how @code{ly:export} could previously be used. +@code{ly:export} has been removed. As a consequence, @code{#} is now +free to delay evaluation of its argument until the parser actually +reduces the containing expression, greatly reducing the potential for +premature evaluation. There are also @q{splicing} operators @code{$@@} +and @code{#@@} for interpreting the members of a list individually. @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. +To reduce the necessity for using @code{$}, Scheme expressions written +with @code{#} are interpreted as music inside of music lists, and as +markups or markup lists inside of markups. @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. +Support for jazz-like chords has been improved: Lydian and altered +chords are recognised; separators between chord modifiers are now +treated independently of separators between ``slash'' chords and their +bass notes (and by default, slashes are now only used for the latter +type of separator); additional pitches are no longer prefixed with +``add'' by default; and the ``m'' in minor chords can be customized. +@ruser{Customizing chord names} for more information. @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. +The @code{\markuplines} command has been renamed to @code{\markuplist} +for a better match with its semantics and general Lilypond +nomenclature. @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}. - +The interface for specifying string tunings in tablature has been +simplified considerably and employs the scheme function +@code{\stringTuning} for most purposes. @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\! +Beams can now have their slopes preserved over line breaks. +@lilypond[fragment,quote,relative=2] +\override Beam #'breakable = ##t +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::align-with-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::slope-like-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] @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. +To do this, several callback functions are now deprecated. +@itemize +@item @code{ly:beam::calc-least-squares-positions} +@item @code{ly:beam::slope-damping} +@item @code{ly:beam::shift-region-to-valid} +@end itemize +Furthermore, @code{ly:beam::quanting} now takes an additional argument +to help calculations over line breaks. All of these functions are now +automatically called when setting the @code{positions} parameter. @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. +In function arguments music, markups and Scheme expressions (as well as +several other syntactic entities) have become mostly interchangeable and +are told apart only by evaluating the respective predicate. In several +cases, the predicate is consulted by the parser, like when deciding +whether to interpret @code{-3} as a number or a fingering event. @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 +Music functions (and their close relatives) can now be defined with +optional arguments. @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 +For defining commands executed only for their side-effects, +@code{define-void-function} is now available. @item -A half-open articulation was added: -@lilypond[quote,relative=2] -c4\halfopen +There is a new @code{define-event-function} command in analogy to +@code{define-music-function} that can be used for defining music +functions acting as post events without requiring a direction specifier +(@code{-}, @code{^}, or @code{_}) placed before them. +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } @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")) - 4. 8 4 +A list of ASCII aliases for special characters can be included. +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) } +\markup "• † ©right; &OE; &ss; ¶" @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] -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. +There is a new @code{define-scheme-function} command in analogy to +@code{define-music-function} that can be used to define functions +evaluating to Scheme expressions while accepting arguments in Lilypond +syntax. @item -Support for using an alternative music font, such as Gonville, is now -added. +The construct @code{#@{ @dots{} #@}} can now be used not just for +constructing sequential music lists, but also for pitches (distinguished +from single note events by the absence of a duration or other +information that can't be part of a pitch), single music events, void +music expressions, post events, markups (mostly freeing users from +having to use the @code{markup} macro), markup lists, number +expressions, context definitions and modifications, and a few other +things. If it encloses nothing or only a single music event, it no +longer returns a sequential music list but rather a void music +expression or just the music event itself, respectively. @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. +Pitches can be used on the right side of assignments. They are +distinguished from single note events by the absence of a duration or +other information that can't be part of a pitch. @item -The direction of manual beams can be set with @code{^[} and @code{_[}. +New command-line option @option{--loglevel=@var{level}} to control how much output +LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG. @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 - } - >> ->> +@code{\once \set} now correctly resets the property value to the previous value. +@lilypond[fragment,quote,relative=2] + \set fingeringOrientations = #'(left) + 4 + \once \set fingeringOrientations = #'(right) + + -"left" @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 -} +The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now +automatically broken if a different direction is explicitly given. +@lilypond[fragment,quote,relative=2] +c4_\< c c^\> c c1_\p @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 } +Appoggiaturas and acciaccaturas now also work inside a slur, not only inside +a phrasing slur. Also, a function @code{\slashedGrace} was added that does +not use a slur from the acciaccatura note. +@lilypond[fragment,quote,relative=2] +c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4) @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. } +To suppress the line on a crescendo text spanner (and other similar spanners), +LilyPond now fully supports the @code{#'style = #'none} property. +@lilypond[fragment,quote,relative=2] +\override DynamicTextSpanner #'style = #'none +c4\cresc c c g, c'\p @end lilypond @item -FretBoards now have a chordChanges property to keep repeated FretBoard objects -from being typeset. +LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz! @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/changes/}, @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. diff --git a/Documentation/common-macros.itexi b/Documentation/common-macros.itexi index 11bae886e4..1fda210772 100644 --- a/Documentation/common-macros.itexi +++ b/Documentation/common-macros.itexi @@ -10,6 +10,14 @@ @set txicodequoteundirected @set txicodequotebacktick +@c Trick to use with proper font mappings the same NCSB fonts as +@c LilyPond instead of those provided by TeX distribution +@tex +\ifpdf + \pdfmapfile{=lilypond.map} +\fi +@end tex + @c ***** Displaying text ***** @@ -163,6 +171,28 @@ UNTRANSLATED NODE: IGNORE ME @end html @end macro +@ifclear web_version + @ifclear bigpage + @macro docLink{name,target,webLink} + @uref{../\target\, \name\} + @end macro + @end ifclear + @ifset bigpage + @macro docLink{name,target,webLink} + @uref{\target\, \name\} + @end macro + @end ifset +@end ifclear +@ifset web_version + @macro docLink{name,target,webLink} + \webLink\ + @end macro +@end ifset + +@macro miscLink{MISC-FILE,MISC-TEXT} +@uref{http://lilypond.org/website/misc/\MISC-FILE\,\MISC-TEXT\} +@end macro + @macro spanClass {CLASS} @html @@ -197,8 +227,8 @@ UNTRANSLATED NODE: IGNORE ME @macro imageClickable{IMAGE-FILE, EXT, MORE-TEXT, CLICK-FILE, CLICK-EXT, POSITION} @html
- - \IMAGE-FILE\ + + \IMAGE-FILE\

\MORE-TEXT\ @@ -215,7 +245,7 @@ UNTRANSLATED NODE: IGNORE ME @macro imageFloat{IMAGE-FILE, EXT, POSITION} @html -\IMAGE-FILE\ +\IMAGE-FILE\ @end html @iftex @image{pictures/\IMAGE-FILE\,,,\IMAGE-FILE\,\EXT\} @@ -228,7 +258,7 @@ UNTRANSLATED NODE: IGNORE ME @macro imageId{ID, IMAGE-FILE, EXT, ALT} @html

- \ALT\ + \ALT\
@end html @iftex diff --git a/Documentation/contributor.texi b/Documentation/contributor.texi index 26b3a26fbb..74d03bd1b7 100644 --- a/Documentation/contributor.texi +++ b/Documentation/contributor.texi @@ -25,7 +25,7 @@ information about different jobs, see @rweb{Help us}. @c `Contributor's Guide' was born 2007-09-15 with git commit 48f3356... @macro copyrightDeclare -Copyright @copyright{} 2007--2011 by the authors. +Copyright @copyright{} 2007--2012 by the authors. @end macro @set FDL @@ -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 diff --git a/Documentation/contributor/administration.itexi b/Documentation/contributor/administration.itexi index 980c2141fe..6695375807 100644 --- a/Documentation/contributor/administration.itexi +++ b/Documentation/contributor/administration.itexi @@ -7,7 +7,9 @@ don't fit anywhere else. @menu * Meta-policy for this document:: +* Environment variables:: * Meisters:: +* Patchy:: * Administrative mailing list:: * Grand Organization Project (GOP):: * Grand LilyPond Input Syntax Standardization (GLISS):: @@ -20,7 +22,7 @@ don't fit anywhere else. The Contributor's Guide as a whole is still a work in progress, but some chapters are much more complete than others. Chapters which are @qq{almost finished} should not have major changes -without a discussion on @code{-devel}; in other chapters, a +without a discussion on @w{@code{-devel}}; in other chapters, a disorganized @qq{wiki-style dump} of information is encouraged. Do not change (other than spelling mistakes) without discussion: @@ -77,6 +79,32 @@ Totally disorganized; do whatever the mao you want: @end itemize +@node Environment variables +@section Environment variables + +Some maintenance scripts and instructions in this guide rely on +the following environment variables. They should be predefined in +LilyDev distribution (see @ref{LilyDev}); if you set up your own +development environment, you can set them by appending these settings to +your @file{~/.bashrc} (or whatever defines your default environment +variables for the user account for LilyPond development), then logging +out and in (adapt directories to your setup): + +@example +LILYPOND_GIT=~/lilypond-git +export LILYPOND_GIT +LILYPOND_BUILD_DIR=~/lilypond-git/build +export LILYPOND_BUILD_DIR +@end example + +The standard build and install procedure (with @code{autogen.sh}, +@code{configure}, @code{make}, @code{make install}, @code{make doc} +@dots{}) does not rely on them. + +In addition, for working on the website, @code{LILYPOND_WEB_MEDIA_GIT} +should be set to the repository lilypond-extra, see +@ref{lilypond-extra}. + @node Meisters @section Meisters @@ -90,7 +118,7 @@ Bug Meister: trains new Bug Squad volunteers, organizes who works on which part of their job, checks to make sure that everything is running smoothly, and has final say on our policy for Issues. -Currently: Phil +Currently: Colin H @item Doc Meister: trains new doc editors/writers, organizes who works @@ -110,22 +138,171 @@ Currently: Francisco @item Frog Meister: is responsible for code patches from (relatively) inexperienced contributors. Keeps track of patches, does initial -reviewing of those patches, sends them to @code{-devel} when +reviewing of those patches, sends them to @w{@code{-devel}} when they've had some initial review on the Frog list, pesters the -@code{-devel} community into actually reviewing said patches, and +@w{@code{-devel}} community into actually reviewing said patches, and finally pushes the patches once they're accepted. This person is @emph{not} responsible for training new programmers, because that -would be far too much work -- he job is @qq{only} to guide +would be far too much work -- his/her job is @qq{only} to guide completed patches through our process. -Currently: Carl +Currently: Mike Solomon + +@end itemize + +@node Patchy +@section Patchy + +@subheading Introduction + +Patchy is a set of Python scripts to automate two administrative +tasks: + +@itemize +@item +@code{lilypond-patchy-staging.py}: checks that new commits in +@code{staging} can compile the regtests and documentation before +merging @code{staging} into @code{master}. + +(completely automatic) + +@item +@code{test-patches.py}: checks that patches apply to Git @code{master}, +compile, and lets a human check that there are no big unintended +changes to the regtests. + +(requires some human input) @end itemize +@subheading Installing Patchy + +To install Patchy, you should do the following: + +@enumerate +@item +Create a new user on your box to run Patchy; this is a security +step for your own protection. It is recommended that this should +not be an administrator. New users are created from System; +Administration; Users and Groups. + +@item +Get the Patchy scripts from +@example +@uref{https://github.com/gperciva/lilypond-extra/} +@end example +Patchy is in the @file{patches/} directory. + +@item +Put the scripts and Python libraries contained in @file{patches} in a +sensible place on your system; this can be done by appending +@file{patches/} full path to the @var{PATH} of the user that runs +Patchy. + +@item +Create a new git repository with +@example +git clone git://git.sv.gnu.org/lilypond.git +@end example +This will create a directory called lilypond with the repo in it. +Make sure it's where you want it and name it lilypond-git +(assuming you want to follow the standard naming conventions). + +@item +Create environment variables @var{LILYPOND_GIT} and +@var{LILYPOND_BUILD_DIR}, see @ref{Environment variables}. + +@item +Run Patchy once to set up config files, answer @q{@code{n}} when it +asks for going on, unless the default config file happens to suit your +setup: +@example +lilypond-patchy-staging.py +@end example + +@item +Edit @file{$HOME/.lilypond-patchy-config} to provide the location of +your local lilypond Git repository, working directories for your build +directory, your results directory, compiler options and notification +method. If you don't want to use email notification, then delete +everything after @code{smtp_command:}. + +@item +Ensure that your new user has git push access. Follow the +instructions in the CG at @ref{Commit access}. Do not set +password protection for the key --- if you do you will not be able +to run patchy unattended. + +@end enumerate + +@subheading lilypond-patchy-staging.py + +@code{lilypond-patchy-staging.py} is run with +@example +python lilypond-patchy-staging.py +@end example +Not much appears to happen except you can see a lot of CPU gets used +if you open System Monitor. There's not much point running +@code{lilypond-patchy-staging.py} unless there is something in +@code{staging} to be merged to @code{master}, however, if there's +nothing new in @code{staging} then the script won't waste resources by +compiling anything. + +The script fetches the current patches in staging and runs +@code{make}, @code{make test} and @code{make doc} to ensure that all of +these complete error-free. If you have set Patchy up to use email, +it emails its results to you. If you haven't, then you can view +them in a logfile. It also merges @code{staging} into @code{master}. + +@warning{in case the build fails, do not try to push fixes on top of +staging branch, for details see @ref{Pushing to staging}.} + +When you have run Patchy a few successful times with email sending, +you are ready for running it as a cron job. First, make sure you have +the following in @file{$HOME/.lilypond-patchy-config} to avoid +email flood: + +@example +[notification] +notify_non_action = no +@end example + +Then, assuming Patchy run with user account @code{patchy}, write the +following to @file{$HOME/lilypond-patchy.cron}, adapting it as +necessary (the @code{/2} means @qq{run this every 2 hours}): +@example +02 0-23/2 * * * /home/patchy/git/lilypond-extra/patches/lilypond-patchy-staging.py +@end example + +@warning{@code{cron} will not inherit environment variables from +your main setup, so you must re-define any variables inside +@file{$HOME/lilypond-patchy.cron}. For instance, @var{LILYPOND_GIT} +may need to be defined if @var{git_repository_dir} is not correctly +set in @file{$HOME/.lilypond-patchy-config}.} + +Finally, install the cron job (you may need superuser privileges for +this): +@example +crontab -u patchy /home/patchy/lilypond-patchy.cron +@end example + +@subheading test-patches.py +@code{test-patches.py} prepares a regtest comparison for a human to +quickly glance at, to determine if the patch is ready for a review. +After looking at the comparison (or the lack of a comparison in the +case of problems), run @code{accept-patch.py} or +@code{reject-patch.py}. + +Once a patch has gotten a "LGTM" from Patchy, it should be +reviewed by relevant developers, and if it passes this, it can be +considered for countdown (see @ref{Commits and patches}) and +pushing to staging (see @ref{Pushing to staging}). + + @node Administrative mailing list @section Administrative mailing list -An mailing list for administrative issues is maintained at +A mailing list for administrative issues is maintained at @code{lilypond-hackers@@gnu.org}. This list is intended to be used for discussions that should be kept @@ -149,7 +326,7 @@ GOP has two goals: @itemize @item -Clarify the various development tasks by writing down the polices +Clarify the various development tasks by writing down the policies and techniques and/or simplifying the tasks directly. @item @@ -163,6 +340,7 @@ difficult tasks. * Motivation:: * Ongoing jobs:: * Policy decisions:: +* Policy decisions (finished):: @end menu @node Motivation @@ -214,7 +392,7 @@ work on the really hard stuff... like rewriting the grace note code. Having 1 more normal user answering emails on lilypond-user won't -have a dramatic trick-up affect all by himself, of course. But if +have a dramatic @q{trickle-up} effect all by itself, of course. But if we had 8 users volunteering to answer emails, 6 users starting to write documentation, and 2 users editing LSR... well, that would free up a lot of current bug-fixing-capable contributors to focus @@ -227,7 +405,7 @@ many new helpers will provide a great moral boost! Although GOP is a short-term project, the main goal is to train more people to handle ongoing jobs. The more people doing these -jobs, the ligher the work will be, and the more we can get done +jobs, the lighter the work will be, and the more we can get done with lilypond! Also, it would be nice if we had at least one "replacement" / @@ -277,7 +455,7 @@ We often receive reports of typos and minor text updates to the documentation. It would be great if somebody could create properly-formatted patches for these corrections. -Technical requirements: ability to run @ref{Lilydev}. +Technical requirements: ability to run @ref{LilyDev}. @item LSR editor: LSR contains many useful examples of lilypond, but some snippets @@ -294,7 +472,7 @@ chapters 1 and 2 (or be willing to read the docs to find out). often find them in Ponds of Lilies) and new feature implementors. Technical requirements: development environment (such as -@ref{Lilydev}), ability to read+write scheme and/or C++ code. +@ref{LilyDev}), ability to read+write scheme and/or C++ code. @end itemize @@ -303,14 +481,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 +498,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,65 +537,6 @@ 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? - -(prep: 1 hour. discuss: 15 hours) - -@item @strong{lilypond-hackers mailing list}: -Should we have a private mailing list for senior developers? If -so, who should be on it? - -(prep: 2 hours+3 weeks. discuss: 10 hours) - -@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 -branches that aren't related to the master? i.e. should we -restrict a git branch to code which is an actual "branch" of -development? Also, some of our code (notably the windows and osx -lilypad) isn't in a git repository at all. -We can add new repositories very easily; should make repositories -like -@example -git://git.sv.gnu.org/lilypond/gub.git -git://git.sv.gnu.org/lilypond/lilypad.git -git://git.sv.gnu.org/lilypond/misc.git -@end example -? More information here: -@uref{http://code.google.com/p/lilypond/issues/detail?id=980} - -(prep: 2 hours. discuss: 10 hours) - -@item @strong{Roadmap of future development}: -Many projects have a roadmap of planned (or desired) future work. -Should we use one? If so, what should go on it, bearing in mind -our volunteer status? Is there any way of having a roadmap that -isn't vaporware? - -(prep: 1 hour. discuss: 5 hours) - @item @strong{Official links to other organizations?}: There's something called the "software freedom conservancy", and in general, there's a bunch of "umbrella organizations". Joining @@ -428,14 +546,6 @@ schools, etc. (prep: 2 hours. discuss: 5 hours) -@item @strong{Mailing lists}: -We currently have a mix of official GNU mailing lists and lilynet -lists. Is there a strong rationale for having separate mailing -list servers? Why not pick one place, and put all our lists there? -(or at least, all "permanent" lists?) - -(prep: 1 hour. discuss: 5 hours) - @item @strong{Issue tracking with google code}: We use the google issue tracker, but this means that we are relying on a commercial entity for a large part of our @@ -452,23 +562,6 @@ lilypond. Should we switch to something like gerritt? (prep: 5 hours. discuss: 15 hours) -@item @strong{Subdomains of *.lilypond.org}: -Unless Jan has a really weird DNS hosting setup, there are no -technical barriers to having names like lsr.lilypond.org, -frog.lilypond.org, or news.lilypond.org. Is this something that we -want to do? - -(prep: 1 hours+2 weeks. discuss: 5 hours) - -@item @strong{Authorship in source files}: -Our documentation currently does not attempt to track individual -authors of each file, while our source code makes a confused and -jumbled attempt to track this. A number of guidelines for F/OSS -projects explicitly recommends _not_ tracking this in individual -files, since the code repository will track that for you. - -(prep: 2 hours. discuss: 15 hours) - @item @strong{Clarity for sponsorships}: We currently do not advertize bounties and sponsorships on the webpage. How much advertising do we want, and what type? @@ -476,39 +569,658 @@ Should we change the "structure" / "framework" for bounties? (prep: 2 hours. discuss: 10 hours) -@item @strong{Separate branches for active development}: -it might be good to have @emph{everybody} working on separate -branches. This complicates the git setup, but with sufficient -logic in lily-git.tcl, we can probably make it transparent to -newbies. However, we'd need a reliable person to handle all the -required merging and stuff. +@item @strong{code readability}: +"Our aim when producing source code for Lilypond in whatever +language is that it should be totally comprehensible to a +relatively inexperienced developer at the second reading." + +Rationale: +- aids maintainability of code base +- "second reading" so newer developers can look up unfamiliar + stuff +- will help to keep things simple, even if the code is doing + complex stuff discourages "secret squirrel" coding, e.g. "how + much functionality can I squeeze into as few characters as + possible" "comments are for wimps" +- will aid not *discouraging* new developers to join the project (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. +@item @strong{C++ vs. scheme}: +what should be in scheme, what should be in C++, what can/should +be ported from one to the other, etc. Questions of +maintainability, speed (especially considering guile 2.0), and the +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{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. -Clarify. +@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. -There is also a wider question how to organize the regtests, such -as where to put interesting-console-output regtests, including -stuff like lilypond-book and midi2ly in a sensible manner, and -possibly including regtests for currently-broken functionality. +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: 2 hours. discuss: 5 hours) +(prep: 15 minutes. discuss: 3 hours) + +@end itemize + +@node Policy decisions (finished) +@subsection Policy decisions (finished) + +Here is a record the final decisions, along with links to the +discussions. + +@menu +* GOP-PROP 1 - python formatting:: +* GOP-PROP 2 - mentors and frogs:: +* GOP-PROP 3 - C++ formatting:: +* GOP-PROP 4 - lessons from 2.14:: +* GOP-PROP 5 - build system output (not accepted):: +* GOP-PROP 6 - private mailing lists:: +* GOP-PROP 7 - developers as resources:: +* GOP-PROP 8 - issue priorities:: +* GOP-PROP 9 - behavior of make doc:: +@end menu + +@node GOP-PROP 1 - python formatting +@subsubsection 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. + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00060.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00084.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00310.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00574.html} +@end smallexample + + +@node GOP-PROP 2 - mentors and frogs +@subsubsection 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. + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00311.html} +@uref{} +@uref{} +@end smallexample + + +@node GOP-PROP 3 - C++ formatting +@subsubsection GOP-PROP 3 - C++ formatting + +Speaking academically, C++ code style is a "solved problem". Let's +pick one of the existing solutions, and let a computer deal with +this. Humans should not waste their time, energy, and creativity +manually adding tabs or spaces to source code. + +We have modified @code{fixcc.py} to use astyle, along with extra +regex tweaks. + +@itemize +@item +the final script will be run @strong{blindly} on the lilypond +source code. We will accept whatever formatting the final version +of this script produces, with no manual tweaking. + +@item +patches which have been run through this tool will not be rejected +for style reasons. Any code formatting @qq{desires} which are not +enforced by @code{fixcc.py} will not be considered grounds for +rejecting a patch. + +@item +for now, this style will not be enforced. It is not cause for +concern if patches which do not follow the formatting done by +@code{fixcc.py} are pushed. From time to time, Graham will run +the formatter on the entire code base, and commit the resulting +changes. + +In a few months, we will tighten up this policy item (with some +sort of automatic processing), but that is outside the scope of +this policy item and is a matter for later discussion. + +@item +after the proposal is accepted, we will leave some time for +existing patches to be accepted and pushed. The script was +run on the source code on @strong{2011 August 01}. + +@end itemize + +@subheading GNU code + +LilyPond is a GNU project, so it makes sense to follow the GNU +coding standards. These standards state: + +@quotation +We don’t think of these recommendations as requirements, because +it causes no problems for users if two different programs have +different formatting styles. + +But whatever style you use, please use it consistently, since a +mixture of styles within one program tends to look ugly. If you +are contributing changes to an existing program, please follow the +style of that program. +@end quotation + +(@uref{http://www.gnu.org/prep/standards/html_node/Formatting.html}) + +With that in mind, we do not think that we must blindly follow the +formatting given by the currrent version of Emacs. + +@subheading Implementation notes + +We can avoid some of the style change pollution in git history by +ignoring whitespaces changes: + +@example +git diff -w +@end example + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00526.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00796.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00200.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00525.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html} +@end smallexample + + +@node GOP-PROP 4 - lessons from 2.14 +@subsubsection GOP-PROP 4 - lessons from 2.14 + +@subheading History + +A brief history of releases: + +@multitable @columnfractions .2 .2 .3 +@headitem date (YYYY-MM-DD) @tab version @tab comment +@item 2008-10-28 @tab 2.11.63 @tab nobody checking regtests +@item 2008-11-17 @tab 2.11.64 +@item 2008-11-29 @tab 2.11.65 +@item 2008-12-23 @tab 2.12.0 +@item 2009-01-01 @tab @tab somewhere around here, Graham becomes +officially release manager, but Han-Wen still builds the actual +releases +@item 2009-01-01 @tab 2.12.1 +@item 2009-01-25 @tab 2.12.2 +@item 2009-02-28 @tab 2.13.0 +@item 2009-06-01 @tab 2.13.1 @tab note jump in time! +@item 2009-06-27 @tab 2.13.2 @tab first Graham release? +@item 2009-07-03 @tab 2.13.3 +@item 2009-09-09 @tab @tab Graham arrives in Glasgow, gets a +powerful desktop computer, and begins serious work on GUB (sending +bug reports to Jan). It takes approximately 100 hours until GUB +is stable enough to make regular releases. +@item 2009-09-24 @tab 2.13.4 +@item 2009-10-02 @tab 2.13.5 +@item 2009-10-22 @tab 2.13.6 +@item 2009-11-05 @tab 2.13.7 +@item ... +@item 2010-01-13 @tab 2.12.3 +@item ... +@item 2010-03-19 @tab 2.13.16 @tab Bug squad starts doing a few +regtest comparisons, but IIRC the effort dies out after a few +weeks (BLUE) +@item ... +@item 2010-08-04 @tab 2.13.29 @tab Phil starts checking regtests (BLUE) +@item ... +@item 2011-01-12 @tab 2.13.46 @tab release candidate 1 (GREEN) +@item ... +@item 2011-05-30 @tab 2.13.63 @tab release candidate 7 (GREEN) +@item 2011-06-06 @tab 2.14.0 +@end multitable + +@c A graphical display of bugs: +@c +@c @image{bugs-2.13-visualization,png} +@c @image{zoom-2.13-visualization,png} + +@subheading Carl's analysis of the bugs + +A @file{csv} spreadsheet is available. + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00852.html} +@end smallexample + +@example +@uref{lilypond-issues-analysis.csv} +@uref{lilypond-issues-analysis-trim-duplicates.csv} +@end example + +There 148 issues marked with Priority=Critical in the tracker. + +I've done an analysis, and it looks to me like there was initially +a backlog of critical issues that weren't fixed, and little work +was being done to eliminate critical issues. + +Somewhere about 2010-08-01, critical issues started to disappear, +but occasional new ones appeared. + +There were a couple of major changes that introduced unanticipated +regressions (new spacing code, beam collision avoidance). These +produced more than the expected number of regressions. + +It appears to me that we didn't really get serious about +eliminating critical bugs until about 2010-06-15 or so. After +that point, the number of critical bugs more-or-less steadily +decreased until we got to a release candidate. + +Of particular interest, the first release candidate of 2.14 was +released on 2011-01-12. Over the next 10 days, about a dozen bugs +were reported and fixed. Release candidate 2 came out on +2011-02-09. No surge of bugs occurred with this release. +Candidate 3 came out on 2011-03-13; we got 2 bugs per week. +Candidate 4 came out on 2011-03-29; 2 new bugs. Candidate 6 came +out on 2011-04-07. We got a couple of bugs per week. + +@subheading Notes, commentary, and opinions + +@example +Han-Wen: Overall, I think this cycle took too long +Mike: I agree +Graham: +1 +@end example + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00797.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00364.html} +@uref{} +@end smallexample + + +@node GOP-PROP 5 - build system output (not accepted) +@subsubsection GOP-PROP 5 - build system output (not accepted) + +This proposal was too broad; after a month of discussion, Graham +withdrew the proposal. Portions of it will be introduced in later +proposals. + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00320.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00527.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00753.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01042.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00116.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00310.html} +@end smallexample + + +@node GOP-PROP 6 - private mailing lists +@subsubsection GOP-PROP 6 - private mailing list + +Potentially sensitive or private matters will be referred to +Graham. He will then decide who should discuss the matter on an +ad-hoc basis, and forward or CC them on future emails. + +For emphasis, the project administrators are Han-Wen, Jan, and +Graham; those three will always be CC'd on any important +discussions. + +The lilypond-hackers mailing list will be removed. + +@subheading History + +There is some unhappy history about this idea in our development +community: + +@example +@uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-09/msg00178.html} +@uref{http://news.lilynet.net/spip.php?article121} +@uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-11/msg00076.html} +@end example + +@subheading Other projects + +The idea of private mailing lists is hardly uncommon in +open-source software. For example, + +@example +@uref{http://lwn.net/Articles/394660/} about debian-private +@uref{http://subversion.apache.org/mailing-lists.html} private@@ +@uref{http://www.freebsd.org/administration.html#t-core} +@uref{http://foundation.gnome.org/legal/} board members pledge +to keep certain matters confidential + +every security team of every GNU/Linux distribution and OS +@end example + +In fact, Karl Fogel's @qq{Producing Open Source Software} +explicitly suggests a private mailing list for some circumstances: + +@example +[on granting commit/push access to a contributor] + +But here is one of the rare instances where secrecy is +appropriate. You can't have votes about potential committers +posted to a public mailing list, because the candidate's feelings +(and reputation) could be hurt. + +@uref{http://producingoss.com/en/consensus-democracy.html#electorate} +@end example + +@subheading Board of governers, voting, etc? + +Many projects have an official board of directors, or a list of +@qq{core developers}, with set term limits and elections and +stuff. + +I don't think that we're that big. I think we're still small +enough, and there's enough trust and consensus decisions, that we +can avoid that. I would rather that we kept on going with +trust+consensus for at least the next 2-3 years, and spent more +time+energy on bug fixes and new features instead of +administrative stuff. + +Project administrators are Han-Wen, Jan, and Graham. + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00783.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01004.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00117.html} +@end smallexample + + +@node GOP-PROP 7 - developers as resources +@subsubsection GOP-PROP 7 - developers as resources + +We shall treat developers (and contributors) as +@strong{Independent volunteers}: each person does whatever they +want, whenever they want. We have busy careers and lives; we make +no expectations of action from anybody (with the exception of the +6 people in @qq{Meister} positions). + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01092.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00087.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00497.html} +@end smallexample + + +@node GOP-PROP 8 - issue priorities +@subsubsection GOP-PROP 8 - issue priorities + +We will delete the @qq{priority} field of the issue tracker +altogether. The @qq{type} system will be tweaked. + +Type-critical: + +@itemize + +@item +a reproducible failure to build either @code{make} or @code{make +doc}, from an empty build tree, in a first run, if +@code{configure} does not report any errors. + +@item +any program behaviour which is @strong{unintentionally} worse than +the previous stable version or the current development version. +Developers may always use the @qq{this is intentional}, or even +the @qq{this is an unavoidable effect of an improvement in another +area}, reason to move this to a different type. + +@item +anything which stops contributors from helping out (e.g. +lily-git.tcl not working, source tree(s) not being available, +LilyDev being unable to compile git master, inaccurate +instructions in the Contributor's Guide 2 Quick start). + +To limit this scope of this point, we will assume that the +contributor is using the latest LilyDev and has read the relevant +part(s) of the Contributor's Guide. Problems in other chapters of +the CG are not sufficient to qualify as Type-Critical. + +@end itemize + +@subsubheading More new/changed types and labels + +Unless otherwise specified, the current types and labels will +continue to be used. The new types introduced by this proposal +are: + +@itemize + +@item +Type-crash: any segfault, regardless of what the input file looks +like or which options are given. Disclaimer: this might not be +possible in some cases, for example certain guile programs (we +certainly can't predict if a piece of scheme will ever stop +running, i.e. the halting problem), or if we rely on other +programs (i.e. ghostscript). If there are any such cases that +make segfault-prevention impossible, we will document those +exceptions (and the issue will remain as a "crash" instead of +"documentation" until the warning has been pushed). + +@item +Type-maintainability: anything which makes it difficult for +serious contributors to help out (e.g. difficult to find the +relevant source tree(s), confusing policies, problems with +automatic indentation tools, etc). + +@item +Type-ugly: replaces Type-collision, and it will include things +like bad slurs in addition to actual collision. + +@end itemize + +A new label will be added: + +@itemize +@item +(label) Needs_evidence: it is not clear what the correct output +should look like. We need scans, references, examples, etc. + +@end itemize + +@subheading Reminding users about stars + +We can remind users that they can @qq{star} an issue to indicate +that they care about it. Since we resolved to treat developers as +independent volunteers, there is no expectation that anybody will +look at those stars, but if any developer want to organize their +work schedule according to the stars, they are welcome to do so. + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00019.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00277.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00413.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00624.html} +@uref{} +@end smallexample + + +@node GOP-PROP 9 - behavior of make doc +@subsubsection GOP-PROP 9 - behavior of make doc + +If there are build problems, then it should be easier to find out +why it's failing. This will be achieved with log files, as well +as possibly including scripts which automatically display portions +of those log files for a failing build. + +We will also add targets for building a specific manual (for +quick+easy checking of doc work), as well as for building all +documentation in a specific language (either English or a +translated language). + +When you run @code{make doc}, + +@itemize + +@item +All output will be saved to various log files, with the exception +of output directly from @code{make(1)}. + +Note that @code{make(1)} refers to a specific executable file on +unix computers, and is not a general term for the build system. + +@item +By default, no other output will be displayed on the console, with +one exception: if a build fails, we might display some portion(s) +of log file(s) which give useful clues about the reason for the +failure. + +The user may optionally request additional output to be printed; +this is controlled with the @code{VERBOSE=x} flag. In such cases, +all output will still be written to log files; the console output +is strictly additional to the log files. + +@item +Logfiles from calling lilypond (as part of lilypond-book) will go in +the relevant +@file{$LILYPOND_BUILD_DIR/out/lybook-db/12/lily-123456.log} file. All +other logfiles will go in the @file{$LILYPOND_BUILD_DIR/logfiles/} +directory. + +A single @code{make doc} will therefore result in hundreds of log +files. Log files produced from individual lilypond runs are not +under our control; apart from that, I anticipate having one or two +dozen log files. As long as it is clear which log file is +associated with which operation(s), I think this is entirely +appropriate. The precise implementation will be discussed for +specific patches as they appear. + +@item +Both stderr and stdout will be saved in @code{*.log}. The order +of lines from these streams should be preserved. + +@item +There will be no additional @qq{progress messages} during the +build process. If you run @code{make --silent}, a non-failing +build should print absolutely nothing to the screen. + +@item +Assuming that the loglevels patch is accepted, lilypond (inside +lilypond-book) will be run with --loglevel=WARN. +@uref{http://codereview.appspot.com/4822055/} + +@item +Ideally, a failing build should provide hints about the reason why +it failed, or at least hints about which log file(s) to examine. @end itemize +If this proposal is accepted, none of these policies will be +assumed to apply to any other aspect of the build system. +Policies for any other aspect of the build system will be +discussed in separate proposals. + +@subheading Don't cause more build problems + +However, there is a danger in this approach, that vital error +messages can also be lost, thus preventing the cause of the +failure of a make being found. We therefore need to be +exceptionally careful to move cautiously, include plenty of tests, +and give time for people to experiment/find problems in each stage +before proceeding to the next stage. + +This will be done by starting from individual lilypond calls +within lilypond-book, and slowly moving to @qq{larger} targets of +the build system -- after the individual lilypond calls are are +producing the appropriate amount of output and this is saved in +the right place and we can automatically isolate parts of a +failing build, we will work on lilypond-book in general, and only +then will we look at the build system itself. + +@subheading Implementation notes + +There is an existing make variable QUIET_BUILD, which +alter the amount of output being displayed +(@uref{ +http://lilypond.org/doc/v2.15/Documentation/contributor/useful-make-variables} +). We are not planning on keeping this make variable. + +The standard way for GNU packages to give more output is with a +@code{V=x} option. Presumably this is done by increasing +@code{x}? If we support this option, we should still write log +files; we would simply print more of the info in those log files +to screen. + +The command @code{tee} may be useful to write to a file and +display to stdout (in the case of VERBOSE). + + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00378.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00703.html} +@end smallexample + + +@ignore +@n ode GOP-PROP 10 - scheme indentation +@s ubsubsection GOP-PROP 10 - scheme indentation + +still under discussion + +@subsubheading Discussions + +@smallexample +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00625.html} +@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg01026.html} +@c @uref{} +@end smallexample +@end ignore + @node Grand LilyPond Input Syntax Standardization (GLISS) @@ -744,7 +1456,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 @@ -802,13 +1516,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 @@ -816,7 +1530,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 @@ -836,6 +1550,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 diff --git a/Documentation/contributor/build-notes.itexi b/Documentation/contributor/build-notes.itexi index 073cbcb540..e00cfc7e7e 100644 --- a/Documentation/contributor/build-notes.itexi +++ b/Documentation/contributor/build-notes.itexi @@ -15,6 +15,7 @@ chapter.} * Doc build:: * Website build:: * Building an Ubuntu distro:: +* Building GUB:: @end menu @@ -117,9 +118,11 @@ include $(configure-srcdir)/GNUmakefile.in The variable @code{depth} is used throughout the make system to track how far down the directory structure the make is. The first -include sets lots of variables but doesn't "do" anything. The -second runs the file @file{GNUmakefile.in} from the top level -source directory. +include sets lots of variables but doesn't "do" anything. Default +values for these variables are automatically detected at the +./configure step, which creates the file @file{config.make}. +The second include runs the file @file{GNUmakefile.in} from +the top level source directory. This sets another load of variables, and then includes (i.e. immediately runs) @file{stepmake.make} from the @file{make} @@ -164,9 +167,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 +184,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: @@ -196,15 +199,21 @@ which expands to the following files: One little feature to notice here - these are all absolute file locations - the line prior to this used relative locations. And -none of these files exist, either. (Further note - I'm assuming -all these lines of make I'm following are autogenerated, but -that'll be something else to discover.) +none of these files exist, either. + +(Further note - I'm assuming all these lines of make I'm following are +autogenerated, but that'll be something else to discover.) + +JM: @emph{``No, these lines are not useful in LilyPond (this is why +you think they are autogenerated), but they are part of StepMake, +which was meant to be a package to be installed as a build system over +autoconf/make in software project source trees.''} Next in @file{stepmake.make}: -@example +@smallexample include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES))) -@end example +@end smallexample which expands to: @@ -239,10 +248,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 +264,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: @@ -286,11 +295,11 @@ are: @example $(outdir)/%.ly: %.lym4 - $(M4) $< | sed "s/\`/,/g" > $@ + $(M4) $< | sed "s/\`/,/g" > $@@ $(outdir)/%: %.in - rm -f $@ - cat $< | sed $(sed-atfiles) | sed $(sed-atvariables) > $@ + rm -f $@@ + cat $< | sed $(sed-atfiles) | sed $(sed-atvariables) > $@@ @end example I believe the first rule is for *.ly files, and has a prerequisite @@ -311,7 +320,7 @@ can comment on exactly what the rules mean/do. @example ## TODO: fail dist or web if no \version present. check-version: - grep -L version $(LY_FILES) + grep -L version $(LY_FILES) @end example @file{stepmake/generic-targets.make} contains lots of rules - too @@ -336,22 +345,23 @@ 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 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 + -$(INSTALL) -m 755 -d $(DESTDIR)$(webdir) + rsync -rl --exclude='*.signature' $(outdir)/offline-root $(DESTDIR)$(webdir) + $(MAKE) -C Documentation omf-local-install +@end smallexample I don't currently understand the @code{ifeq}, since @code{$(out)} -is empty at this point, but the line starting @code{-$(INSTALL)} +is empty at this point, but the line starting @w{@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. @@ -373,9 +383,495 @@ begin from the "make" command). @section Doc build @menu +* The function of make doc:: * Building a bibliography:: @end menu +@node The function of make doc +@subsection The function of make doc + +The following is a set of notes on how make doc functions. + +Preliminary question to be answered some time: where do all the +GNUmakefiles come from. They're in the build directory, but this +is not part of source. Must be the configure script. And it +looks like this comes from autogen.sh. Must at some point kill +the whole git directory, repull and see what is created when. + +Anyway, here's how make doc progresses: + +This is the build dependency tree from +@file{stepmake/stepmake/generic-targets.make}: + +@example +doc: doc-stage-1 + doc-stage-1: + $(MAKE) -C $(depth)/scripts/build out= + $(MAKE) out=www WWW-1 + WWW-1: local-WWW-1 + $(LOOP) + $(MAKE) out=www WWW-2 + WWW-2: local-WWW-2 + $(LOOP) + $(MAKE) out=www WWW-post +@end example + +@example +MAKE = make --no-builtin-rules +-C = Change to directory before make +@end example + +doc-stage-1 does lots of opening and looking in files, but no +processing. + +@example +Variable LOOP = + ++ make PACKAGE=LILYPOND package=lilypond -C python +&& make PACKAGE=LILYPOND package=lilypond -C scripts +&& make PACKAGE=LILYPOND package=lilypond -C flower +&& make PACKAGE=LILYPOND package=lilypond -C lily +&& make PACKAGE=LILYPOND package=lilypond -C mf +&& make PACKAGE=LILYPOND package=lilypond -C ly +&& make PACKAGE=LILYPOND package=lilypond -C tex +&& make PACKAGE=LILYPOND package=lilypond -C ps +&& make PACKAGE=LILYPOND package=lilypond -C scm +&& make PACKAGE=LILYPOND package=lilypond -C po +&& make PACKAGE=LILYPOND package=lilypond -C make +&& make PACKAGE=LILYPOND package=lilypond -C elisp +&& make PACKAGE=LILYPOND package=lilypond -C vim +&& make PACKAGE=LILYPOND package=lilypond -C input +&& make PACKAGE=LILYPOND package=lilypond -C stepmake +&& make PACKAGE=LILYPOND package=lilypond -C Documentation +&& true +@end example + +From git grep: + +stepmake/stepmake/generic-vars.make has this: + +@smallexample +LOOP=+$(foreach i, $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C $(i) $@@ &&) true +@end smallexample + +$@@ is the name of the target - WWW-1 in this case. + +In GNUmakefile.in we find: + +@example +SUBDIRS = python scripts \ + flower lily \ + mf ly \ + tex ps scm \ + po make \ + elisp vim \ + input \ + stepmake $(documentation-dir) +@end example + +So that's how we get the main make loop... + +That loop expands like this: + +@example +make PACKAGE=LILYPOND package=lilypond -C python WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C scripts WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C flower WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C lily WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C mf WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C ly WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C tex WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C ps WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C scm WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C po WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C make WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C elisp WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C vim WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C input WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C stepmake WWW-1 && +make PACKAGE=LILYPOND package=lilypond -C Documentation WWW-1 && +true +@end example + +The directories up to and including vim produce no effect with +make in non-debug mode, although debug does show lots of action. + +@file{git/build/input/GNUmakefile} is: + +@example +depth=../ +include $(depth)/config$(if $(conf),-$(conf),).make +include $(configure-srcdir)/./input/GNUmakefile +MODULE_INCLUDES += $(src-dir)/$(outbase) +@end example + +The first include is: + +@example +..//config.make +@end example + +(note the // which is strictly wrong) + +which has lots of variables to set, but no action occurs. + +The second is: + +@example +lilypond-git/./input/GNUmakefile +@end example + +which similarly doesn't create any actual action. + +An error message at the end of build/input/GNUmakefile stops +make processing before it moves on to regression - so where does +that come from? + +And the answer is - make processes all directories in the +directory it's entered (with some exceptions like out and out-www) +and so it changes to /regression. + +It then seems to consider whether it needs to make/remake loads of +makefiles. Don't understand this yet. Possibly these are all the +makefiles it's processing, and it always checks they're up to date +before processing other files? + +Could be correct - some of this output is: + +@example +Must remake target `../../make/ly-inclusions.make'. +Failed to remake target file `../../make/ly-inclusions.make'. +@end example + +Having decided that, it then leaves the directory and re-executes: + +@example +make PACKAGE=LILYPOND package=lilypond -C regression WWW-1 +@end example + +The top of this make is: + +@example +This program built for i486-pc-linux-gnu +Reading makefiles... +Reading makefile `GNUmakefile'... +Reading makefile `../..//config.make' (search path) (no ~ expansion)... +@end example + +which looks like it's re-reading all its known makefiles to check +they're up to date. + +(From the make manual: + +To this end, after reading in all makefiles, make will consider each +as a goal target and attempt to update it. If a makefile has a rule +which says how to update it (found either in that very makefile or in +another one) or if an implicit rule applies to it (see Chapter 10 +[Using Implicit Rules], page 103), it will be updated if +necessary. After all makefiles have been checked, if any have actually +been changed, make starts with a clean slate and reads all the +makefiles over again. (It will also attempt to update each of them +over again, but normally this will not change them again, since they +are already up to date.) + +So my assumption seems correct) + +There appear to be about 74 of them. After all the makefile +checking, we get this: + +@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 smallexample + +grep finds this if searching for local-WWW-1: + +@example +make/lysdoc-targets.make: + local-WWW-1: $(outdir)/collated-files.texi $(outdir)/collated-files.pdf +@end example + +which means that local-WWW-1 depends on coll*.texi and coll*.pdf +and so these will need to be checked to see if they're up to date. +So make needs to find rules for both of those and (as it says) it +certainly needs to make coll*.texi, since it doesn't exist. + +In ly-rules.make we have: + +@example +.SUFFIXES: .doc .tely .texi .ly +@end example + +which I'll work out at some point, and also this rule: + +@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 smallexample + +Note that the recipe is a very long line - it could probably +benefit from splitting. The same makefile also has: + +@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 smallexample + +@noindent +which seems to be an almost exact duplicate. Whatever, the first +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 +@end example + +@noindent +if we stop the build with an $(error), but I think this is because +we need to allow it to process the dependencies first. It looks +like foo.texi is shown as being dependent on foo.tely, plus a load +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 +@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 +@end example + +ditto .ly files. This does seem a teency bit wrong - it looks like +the .ly and .scm files have been interchanged. ly-vars.make has +these 2 lines: + +@example +INIT_LY_SOURCES = $(wildcard $(top-src-dir)/scm/*.scm) +SCHEME_SOURCES = $(wildcard $(top-src-dir)/ly/*.ly) +@end example + +Looks like a bug..... + +So it now works its way through all these files, checking if they +need to be remade. This is 100s of lines of the debug listing, +although none in the normal list. Clearly none has to be made +since they're source files. It concludes: + +@example +Must remake target `out-www/collated-files.tely' +@end example + +@file{lysdoc-rules.make} has this: + +@smallexample +$(outdir)/collated-files.tely: $(COLLATED_FILES) + $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^ +@end smallexample + +@file{lysdoc-vars.make} has: + +@example +COLLATED_FILES = $(sort $(TEXINFO_SOURCES) $(LY_FILES) $(OUT_LY_FILES) ) +@end example + +We find that: + +@example +TEXINFO_SOURCES = AAA-intro-regression.tely +OUT_LY_FILES is empty +@end example + +so LY_FILES has the big long list of all the .ly files in the +regression directory. + +This kicks off + +@example +/home/phil/lilypond-git/build/scripts/build/out/lys-to-tely +@end example + +with a list of all the files in the regression test directory. This +should (I believe) create the file collated-files.tely. + +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}: + +@smallexample +$(outdir)/version.%: $(top-src-dir)/VERSION + $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@ +@end smallexample + +This causes create-version-itexi.py to run and create +version.itexi. + +Once that's done, all the other *.scm and *.ly files are checked +and since they have no rules associated, they aren't remade (just +as well for source files, really). Since version.itexi was remade +make concludes that collated-files.texi must be remade. To do +this, it runs lilypond-book.py on collated-files.tely, as below: + +@example +LILYPOND_VERSION=2.15.0 + /usr/bin/python + /home/phil/lilypond-git/scripts/lilypond-book.py + -I /home/phil/lilypond-git/input/regression/ + -I ./out-www -I /home/phil/lilypond-git/input + -I /home/phil/lilypond-git/Documentation + -I /home/phil/lilypond-git/Documentation/snippets + -I /home/phil/lilypond-git/input/regression/ + -I /home/phil/lilypond-git/Documentation/included/ + -I /home/phil/lilypond-git/build/mf/out/ + -I /home/phil/lilypond-git/build/mf/out/ + -I /home/phil/lilypond-git/Documentation/pictures + -I /home/phil/lilypond-git/build/Documentation/pictures/./out-www + --process='/home/phil/lilypond-git/build/out/bin/lilypond + -I /home/phil/lilypond-git/input/regression/ + -I ./out-www + -I /home/phil/lilypond-git/input + -I /home/phil/lilypond-git/Documentation + -I /home/phil/lilypond-git/Documentation/snippets + -I /home/phil/lilypond-git/input/regression/ + -I /home/phil/lilypond-git/Documentation/included/ + -I /home/phil/lilypond-git/build/mf/out/ + -I /home/phil/lilypond-git/build/mf/out/ + -I /home/phil/lilypond-git/Documentation/pictures + -I /home/phil/lilypond-git/build/Documentation/pictures/./out-www + -dbackend=eps + --formats=ps,png,pdf + -dinclude-eps-fonts + -dgs-load-fonts + --header=doctitle + --header=doctitlecs + --header=doctitlede + --header=doctitlees + --header=doctitlefr + --header=doctitlehu + --header=doctitleit + --header=doctitleja + --header=doctitlenl + --header=doctitlezh + --header=texidoc + --header=texidoccs + --header=texidocde + --header=texidoces + --header=texidocfr + --header=texidochu + --header=texidocit + --header=texidocja + --header=texidocnl + --header=texidoczh + -dcheck-internal-types + -ddump-signatures + -danti-alias-factor=2' + --output=./out-www + --format=texi-html + --verbose + --lily-output-dir /home/phil/lilypond-git/build/out/lybook-db + out-www/collated-files.tely +@end example + +So - lilypond-book runs on: + +@example +input/regression/out-www/collated-files.tely +@end example + + +Note the --verbose flag - this is from the make variable +LILYPOND_BOOK_VERBOSE which is added to the make variable +LILYPOND_BOOK_FLAGS. + +Now found the invocation to write some of the image files. It's +like this: + +@example +/home/phil/lilypond-git/build/out/bin/lilypond + -I /home/phil/lilypond-git/input/regression/ + -I ./out-www -I /home/phil/lilypond-git/input + -I /home/phil/lilypond-git/Documentation + -I /home/phil/lilypond-git/Documentation/snippets + -I /home/phil/lilypond-git/input/regression/ + -I /home/phil/lilypond-git/Documentation/included/ + -I /home/phil/lilypond-git/build/mf/out/ + -I /home/phil/lilypond-git/build/mf/out/ + -I /home/phil/lilypond-git/Documentation/pictures + -I /home/phil/lilypond-git/build/Documentation/pictures/./out-www + -dbackend=eps + --formats=ps,png,pdf + -dinclude-eps-fonts + -dgs-load-fonts + --header=doctitle + --header=doctitlecs + --header=doctitlede + --header=doctitlees + --header=doctitlefr + --header=doctitlehu + --header=doctitleit + --header=doctitleja + --header=doctitlenl + --header=doctitlezh + --header=texidoc + --header=texidoccs + --header=texidocde + --header=texidoces + --header=texidocfr + --header=texidochu + --header=texidocit + --header=texidocja + --header=texidocnl + --header=texidoczh + -dcheck-internal-types + -ddump-signatures + -danti-alias-factor=2 + -I "/home/phil/lilypond-git/build/out/lybook-db" + -I "/home/phil/lilypond-git/build/input/regression" + -I "/home/phil/lilypond-git/input/regression" + -I "/home/phil/lilypond-git/build/input/regression/out-www" + -I "/home/phil/lilypond-git/input" + -I "/home/phil/lilypond-git/Documentation" + -I "/home/phil/lilypond-git/Documentation/snippets" + -I "/home/phil/lilypond-git/input/regression" + -I "/home/phil/lilypond-git/Documentation/included" + -I "/home/phil/lilypond-git/build/mf/out" + -I "/home/phil/lilypond-git/build/mf/out" + -I "/home/phil/lilypond-git/Documentation/pictures" + -I "/home/phil/lilypond-git/build/Documentation/pictures/out-www" + --formats=eps + --verbose + -deps-box-padding=3.000000 + -dread-file-list + -dno-strip-output-dir + "/home/phil/lilypond-git/build/out/lybook-db/snippet-names--415419468.ly"' +@end example + +Note the --verbose. This causes 100s of lines of Lily debug output. +But at present I can't work out where the flag comes from. Later. + + @node Building a bibliography @subsection Building a bibliography @@ -404,10 +900,10 @@ is: @example $(outdir)/colorado.itexi: - BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \ - -s $(top-src-dir)/Documentation/lily-bib \ - -o $(outdir)/colorado.itexi \ - $(src-dir)/essay/colorado.bib + BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \ + -s $(top-src-dir)/Documentation/lily-bib \ + -o $(outdir)/colorado.itexi \ + $(src-dir)/essay/colorado.bib @end example Line by line: @@ -420,27 +916,27 @@ We're making the file @file{colorado.itexi} and so this is the make instruction. @example - BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \ + BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \ @end example It's in the @file{essay} directory and we want to run the bib2texi.py script against it. @example - -s $(top-src-dir)/Documentation/lily-bib \ + -s $(top-src-dir)/Documentation/lily-bib \ @end example The style template is @file{lily-bib.bst} and is found in the @file{Documentation} directory. @example - -o $(outdir)/colorado.itexi \ + -o $(outdir)/colorado.itexi \ @end example The output file in @file{colorado.itexi}. @example - $(src-dir)/essay/colorado.bib + $(src-dir)/essay/colorado.bib @end example The input file is @file{colorado.bib} in the @file{essay} @@ -473,80 +969,343 @@ described to some extent at The file @file{lily-bib.bst} also has fairly extensive commenting. + @node Website build @section Website build -Start here: @file{make/website.make} +@warning{This information applies only to the standard @code{make +website} from the normal build directory. The process is +different for @code{dev/website-build}.} -The overall build system begins with @ref{How stepmake works}. -Summary: when you type @code{make website} this ends up running -@file{GNUmakefile.in} in the @file{git} directory. Right at the -bottom, this has the lines: +The rule for make website is found in GNUmakefile.in: @example -# we want this separate for security; see CG 4.2. -gp website: - $(MAKE) config_make=$(config_make) \ - top-src-dir=$(top-src-dir) \ - -f $(top-src-dir)/make/website.make \ - website +$(MAKE) config_make=$(config_make) \ + top-src-dir=$(top-src-dir) \ + -f $(top-src-dir)/make/website.make \ + website @end example -On my system this expands to: +This translates as: @example make --no-builtin-rules config_make=./config.make \ - top-src-dir=/home/phil/lilypond-git \ - -f /home/phil/lilypond-git/make/website.make \ - website + top-src-dir=/home/phil/lilypond-git \ + -f /home/phil/lilypond-git/make/website.make \ + website +@end example + +which has the effect of setting the variables @code{config_make} +and @code{top-src-dir} and then processing the file +@code{git/make/website.make} with the target of website. + +@code{website.make} starts with the following: + +@example +ifeq ($(WEBSITE_ONLY_BUILD),1) +@end example + +which checks to see whether the variable @code{WEBSITE_ONLY_BUILD} +was set to one on the command line. This is only done for +standalone website builds, not in the normal case. The result of +the test determines the value of some variables that are set. A +number of other variables are set, in order to establish locations +of various files. An example is: + +@example +CREATE_VERSION=python $(script-dir)/create-version-itexi.py +@end example + +The rule for website is: + +@smallexample +website: website-texinfo website-css website-pictures website-examples web-post + cp $(SERVER_FILES)/favicon.ico $(OUT)/website + cp $(SERVER_FILES)/robots.txt $(OUT)/website + cp $(top-htaccess) $(OUT)/.htaccess + cp $(dir-htaccess) $(OUT)/website/.htaccess +@end smallexample + +so we see that this starts by running the rules for 5 other +targets, then finishes by copying some files. We'll cover that +later - first @code{website-texinfo}. That rule is: + +@example +website-texinfo: website-version website-xrefs website-bibs + for l in '' $(WEB_LANGS); do \ + if test -n "$$l"; then \ + langopt=--lang="$$l"; \ + langsuf=.$$l; \ + fi; \ + $(TEXI2HTML) --prefix=index \ + --split=section \ + --I=$(top-src-dir)/Documentation/"$$l" \ + --I=$(top-src-dir)/Documentation \ + --I=$(OUT) \ + $$langopt \ + --init-file=$(texi2html-init-file) \ + -D web_version \ + --output=$(OUT)/"$$l" \ + $(top-src-dir)/Documentation/"$$l"/web.texi ; \ + ls $(OUT)/$$l/*.html | xargs grep -L \ + 'UNTRANSLATED NODE: IGNORE ME' | \ + sed 's!$(OUT)/'$$l'/!!g' | xargs \ + $(MASS_LINK) --prepend-suffix="$$langsuf" \ + hard $(OUT)/$$l/ $(OUT)/website/ ; \ + done +@end example + +which therefore depends on @code{website-version}, +@code{website-xrefs} and @code{website-bibs}. + +@example +website-version: + mkdir -p $(OUT) + $(CREATE_VERSION) $(top-src-dir) > $(OUT)/version.itexi + $(CREATE_WEBLINKS) $(top-src-dir) > $(OUT)/weblinks.itexi +@end example + +which translates as: + +@example +mkdir -p out-website +python /home/phil/lilypond-git/scripts/build/create-version-itexi.py + /home/phil/lilypond-git > out-website/version.itexi +python /home/phil/lilypond-git/scripts/build/create-weblinks-itexi.py + /home/phil/lilypond-git > out-website/weblinks.itexi +@end example + +So, we make out-website then send the output of +@code{create-version-itexi.py} to @code{out-website/version.itexi} +and @code{create-weblinks-itexi.py} to +@code{out-website/weblinks.itexi}. + +@code{create-version-itexi.py} parses the file @code{VERSION} in +the top source dir. It contains: + +@example +PACKAGE_NAME=LilyPond +MAJOR_VERSION=2 +MINOR_VERSION=15 +PATCH_LEVEL=13 +MY_PATCH_LEVEL= +VERSION_STABLE=2.14.2 +VERSION_DEVEL=2.15.12 +@end example + +currently. @code{c-v-i.py} parses this to: + +@example +@@c ************************ Version numbers ************ +@@macro version +2.15.13 +@@end macro + +@@macro versionStable +2.14.2 +@@end macro + +@@macro versionDevel +2.15.12 +@@end macro +@end example + +@code{create-weblinks-itexi.py} creates a load of texi macros (of +the order of 1000) similar to: + +@example +@@macro manualStableGlossaryPdf +@@uref@{../doc/v2.14/Documentation/music-glossary.pdf,Music glossary.pdf@} +@@end macro. +@end example + +It loads its languages from langdefs.py, and therefore outputs the following unhelpful warning: + +@code{langdefs.py: warning: lilypond-doc gettext domain not found.} + +Next: + +@example +website-xrefs: website-version + for l in '' $(WEB_LANGS); do \ @end example -We see that the @code{$(MAKE)} expands to -@code{make --no-builtin-rules} which is how @code{MAKE} is -defined higher up the makefile. The -f switch defines the -makefile to be used - in this case -@file{git/make/website.make}. That's where all the action -happens. +is the start of the rule, truncated for brevity. This loops +through the languages to be used on the website, processing some +variables which I don't fully understand, to run this command: -We believe that note that *none* of the variables that -are loaded (from depth to version numbers to whatever) are used in -@file{website.make}. Instead, @file{website.make} sets up its own -variables at the top of the file. If you're wondering if there's -some smart reason for this, then the answer is "no". It's because -I (GP) didn't know/trust the original variables when I was writing -that file. +@smallexample +python /home/phil/lilypond-git/scripts/build/extract_texi_filenames.py \ + -I /home/phil/lilypond-git/Documentation \ + -I /home/phil/lilypond-git/Documentation/"$l" \ + -I out-website -o out-website --split=node \ + --known-missing-files= \ + /home/phil/lilypond-git/scripts/build/website-known-missing-files.txt \ + -q \ + /home/phil/lilypond-git/Documentation/"$l"/web.texi ;\ +@end smallexample -Website build includes @ref{Building a bibliography}. +There's a good description of what +@code{extract_texi_filenames.py} does at the top of the script, +but a shortened version is: -@subsubheading Output from @code{make -n website} +@code{If this script is run on a file texifile.texi, it produces +a file texifile[.LANG].xref-map with tab-separated entries +of the form NODE\tFILENAME\tANCHOR.} -Sorry, including this output directly produces problems in the -build system. Please run: +An example from +@code{web.nl.xref-map} is: @example -make -n website &> my-file.txt +Inleiding Introduction Introduction @end example -to see the full output from the make. +@code{e-t-f.py} follows the includes from document to document. +We know some have not been created yet, and +@code{known-missing-files} option tells @code{e-t-f.py} which +these are. -@subsubheading website.make variables +It then does this: -The file begins by setting up some variables. These -may/might/probably mirror existing variables, but lacking any docs -about those variables, I thought it would be simpler to keep -everything in the same file. +@example +for m in $(MANUALS); do \ +@end example + +to run @code{e-t-f.py} against all of the manuals, in each +language. Next: -Note that for security reasons, we @strong{don't} call scripts in -the git dir when building on the web server. See @ref{Uploading -and security}. So we definitely want to keep those definitions -for the WEBSITE_ONLY_BUILD. +@example +website-bibs: website-version + BSTINPUTS=$(top-src-dir)/Documentation/web \ + $(WEB_BIBS) -s web \ + -s $(top-src-dir)/Documentation/lily-bib \ + -o $(OUT)/others-did.itexi \ + $(quiet-flag) \ + $(top-src-dir)/Documentation/web/others-did.bib +@end example -After some split WEBSITE_ONLY_BUILD vs. normal build definitions, -there's another bunch of lines setting up generic variables. +This is half the command. It runs @code{bib2texi.py} on 2 +@code{.bib} files - @code{others-did.bib} and @code{we-wrote.bib}. +This converts bibliography files into texi files with +@code{bibtex}. + +Next the commands in the @code{website-texinfo} rule are run: + +@example +for l in '' $(WEB_LANGS); do \ +@end example -@subsubheading website.make building parts +run @code{texi2html}. This is the program that outputs the +progress message (found in +@code{Documentation/lilypond-texi2html.init}): -Parts of @file{website.make}: +@code{Processing web site: []} + +It also outputs warning messages like: + +@code{WARNING: Unable to find node 'Řešení potíží' in book usage.} + +@example +website-css: + cp $(top-src-dir)/Documentation/css/*.css $(OUT)/website +@end example + +Copies 3 css files to out-website/website. Then: + +@example +website-pictures: + mkdir -p $(OUT)/website/pictures + if [ -d $(PICTURES) ]; \ + then \ + cp $(PICTURES)/* $(OUT)/website/pictures ; \ + ln -sf website/pictures $(OUT)/pictures ;\ + fi +@end example + +which translates as: + +@smallexample +if [ -d Documentation/pictures/out-www ]; \ + then \ + cp Documentation/pictures/out-www/* out-website/website/pictures ; \ + ln -sf website/pictures out-website/pictures ;\ + fi +@end smallexample + +i.e. it copies the contents of +@code{build/Documentation/pictures/out-www/*} to +@code{out-website/website/pictures}. Unfortunately, the pictures +are only created once @code{make doc} has been run, so an initial +run of @code{make website} copies nothing, and the pictures on the +website (e.g. the logo) do not exist. Next: + +@example +website-examples: + mkdir -p $(OUT)/website/ly-examples + if [ -d $(EXAMPLES) ]; \ + then \ + cp $(EXAMPLES)/* $(OUT)/website/ly-examples ; \ + fi +@end example + +translates to: + +@smallexample +mkdir -p out-website/website/ly-examples +if [ -d Documentation/web/ly-examples/out-www ]; \ + then \ + cp Documentation/web/ly-examples/out-www/* out-website/website/ly-examples ; \ + fi +@end smallexample + +This does the same with the LilyPond examples (found at +@uref{http://lilypond.org/examples.html}). Again, these are +actually only created by @code{make doc} (and since they are +generated from LilyPond source files, require a working LilyPond +@code{exe} made with @code{make}). So this does nothing +initially. Then: + +@example +web-post: + $(WEB_POST) $(OUT)/website +@end example + +which is: + +@smallexample +python /home/phil/lilypond-git/scripts/build/website_post.py out-website/website +@end smallexample + +which describes itself as: + +@code{This is web_post.py. This script deals with translations +in the "make website" target.} + +It also does a number of other things, including adding the Google +tracker code and the language selection footer. We're now at +the end of our story. The final 4 lines of the recipe for website +are: + +@example +cp $(SERVER_FILES)/favicon.ico $(OUT)/website +cp $(SERVER_FILES)/robots.txt $(OUT)/website +cp $(top-htaccess) $(OUT)/.htaccess +cp $(dir-htaccess) $(OUT)/website/.htaccess +@end example + +The first translates as: + +@smallexample +cp /home/phil/lilypond-git/Documentation/web/server/favicon.ico out-website/website +@end smallexample + +so we see these are just copying the support files for the web +server. + +@subsubheading website.make summary + +Recipes in @file{website.make}: @itemize @@ -559,7 +1318,6 @@ of the process it produces. @item @code{website-version}: this calls the python scripts below: - @itemize @item @example @@ -584,7 +1342,6 @@ stable/devel, source/docs, lang/lang/lang*10, etc. @end itemize - @item @code{website-xrefs:} creates files used for complicated "out-of-build" references to @@ -612,6 +1369,20 @@ this is the main part; it calles texi2html to generate the actual html. It also has a ton of options to texi2html to pass info to our custom init file. +The file actually built is called @file{web.texi}, and is either +in the @file{Documentation} directory, or a sub-directory specific +to the language. + +The options file is @file{/Documentation/lilypond-texi2html.init}. +This contains *lots* of option and configuration stuff, and also +includes the line: + +@smallexample +print STDERR "Initializing settings for web site: [$Texi2HTML::THISDOC@{current_lang@}]\n"; +@end smallexample + +This is where one of the console messages is generated. + We have somewhere between 2-4 different ways "to pass info to our custom init file". This is highly Not Good (tm), but that's how things work at the moment. @@ -681,56 +1452,127 @@ website: @node Building an Ubuntu distro @section Building an Ubuntu distro + +Here's the short instruction on how to create lilybuntu iso image +(Jonathan Kulp did this on a spare drive, +but he supposes it can be done in a VM too): + @enumerate + @item -Install ubuntu, reboot +Install ubuntu, reboot. @item -Run all updates, reboot if asked +Run all updates, reboot if asked. @item -Enable src repos, refresh package lists +Enable src repos, refresh package lists. @item Install LilyPond build deps: @example - sudo apt-get build-dep lilypond +sudo apt-get build-dep lilypond @end example @item Install git and autoconf: @example - sudo apt-get install git-core gitk autoconf +sudo apt-get install git-core gitk autoconf @end example @item -TEST TO SEE WHETHER EVERYTHING WORKS NOW: +Test to see whether everything works fine now: @enumerate @item -Use lily-git.tcl to grab source files +use @command{lily-git.tcl} to grab source files @item -Go to source dir and do "./autogen.sh" ; make ; make doc +go to source dir and do +@example +"./autogen.sh" ; make ; make doc +@end example @item -If all compiles, move on to iso creation... - +if all compiles, move on to iso creation... @end enumerate @item Download & install "remastersys": -@example - http://sourceforge.net/projects/remastersys/ -@end example +@uref{http://sourceforge.net/projects/remastersys/, http://sourceforge.net/projects/remastersys/} @item -Copy lily-git.tcl script file into /etc/skel/ +Copy @command{lily-git.tcl} script file into @file{/etc/skel/}. @item -Modify /etc/remastersys.conf as desired (change .iso name, default -live session username, etc) +Modify @file{/etc/remastersys.conf} as desired (change @code{.iso} name, +default live session username, etc). @item -Remove non-essential desktop software as desired +Remove non-essential desktop software as desired. @item -Create iso: sudo remastersys dist -@item -New iso is in /home/remastersys/remastersys/ +Create iso: +@example +sudo remastersys dist +@end example +New iso is in @file{/home/remastersys/remastersys/}. @item Test iso by installing in VM and repeating steps above for -getting source files and building lp and docs +getting source files and building lp and docs. + @end enumerate +@node Building GUB +@section Building GUB + +GUB - the Grand Unified Builder - is used to build the release +versions of LilyPond. For background information, see +@ref{Grand Unified Builder (GUB)}. The simplest way to set up a +GUB build environment is to use a virtual machine with LilyDev +(@ref{LilyDev}). Follow the instructions on that page to set this +up. Make sure that your virtual machine has enough disk space - +a GUB installation takes over 30 GBytes of disk space, and if you +allocate too little, it will fail during the setting up stage and +you will have to start again. 64 GBytes should be sufficient. + +While GUB is being built, any interruptions are likely to make it +almost impossible to restart. If at all possible, leave the build +to continue uniterrupted. + +Download GUB and start the set up: + +@example +git clone git://github.com/gperciva/gub/gub.git +cd gub +make bootstrap +@end example +This downloads and installs a number of packages. You may find +some fail during download and you will need to download them +manually. For example, the perl archive. If this happens, +download it from +@uref{http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz}, saving the +archive to @file{gub/downloads/perl/}. Continue the set up with: +@example +make bootstrap +@end example + +Once this has completed successfully, you can build the LilyPond +release package. However, this uses an archived version of the +regression tests, so it is better to download this first. +Download the test output from lilypond.org: + +@smallexample +@uref{http://lilypond.org/download/binaries/test-output/lilypond-2.15.33-1.test-output.tar.bz2} +@end smallexample + +Copy the tarball into @file{gub/regtests/}, and tell the build +system that you have done this: + +@example +touch regtests/ignore +@end example + +Now start the GUB build: + +@example +make lilypond +@end example + +That's it. This will build LilyPond from current master. To build +the current unstable release, run: + +@example +make LILYPOND_BRANCH=release/unstable lilypond +@end example diff --git a/Documentation/contributor/doc-translation-list.itexi b/Documentation/contributor/doc-translation-list.itexi index f9234502a7..b0e9b97f06 100644 --- a/Documentation/contributor/doc-translation-list.itexi +++ b/Documentation/contributor/doc-translation-list.itexi @@ -25,69 +25,69 @@ procedures}. @example -1- Web site -585 web.texi -4506 web/introduction.itexi -1183 web/download.itexi +616 web.texi +4753 web/introduction.itexi +1211 web/download.itexi 1139 macros.itexi -9 po/lilypond-doc.pot (translate to po/@var{MY_LANGUAGE}.po) +7977 po/lilypond-doc.pot (translate to po/@var{MY_LANGUAGE}.po) 0 search-box.ihtml --- lilypond-texi2html.init (section TRANSLATIONS) -7422 total +15696 total -2- Tutorial -1200 web/manuals.itexi +1214 web/manuals.itexi 124 learning.tely 2535 learning/tutorial.itely -4184 learning/common-notation.itely -8043 total +4187 learning/common-notation.itely +8060 total -3- Fundamental Concepts, starting of Usage and Community -11139 learning/fundamental.itely -- Fundamental concepts +11130 learning/fundamental.itely -- Fundamental concepts 135 usage.tely -3622 usage/running.itely -1189 usage/updating.itely -1755 web/community.itexi -17840 total +4615 usage/running.itely +1209 usage/updating.itely +3006 web/community.itexi +20095 total -4- Rest of Learning manual and Suggestions on writing LilyPond files -15408 learning/tweaks.itely -- Tweaking output -225 learning/templates.itely -- Templates +15468 learning/tweaks.itely -- Tweaking output +219 learning/templates.itely -- Templates 2694 usage/suggestions.itely -- Suggestions on writing LilyPond files -18327 total +18381 total -5- Notation reference 355 notation.tely 91 notation/notation.itely -- Musical notation -4479 notation/pitches.itely -6048 notation/rhythms.itely -1726 notation/expressive.itely -930 notation/repeats.itely -2163 notation/simultaneous.itely -2056 notation/staff.itely -931 notation/editorial.itely -2716 notation/text.itely +4530 notation/pitches.itely +6352 notation/rhythms.itely +1712 notation/expressive.itely +1011 notation/repeats.itely +2640 notation/simultaneous.itely +2392 notation/staff.itely +949 notation/editorial.itely +2729 notation/text.itely 81 notation/specialist.itely -- Specialist notation -4807 notation/vocal.itely -1855 notation/chords.itely +4758 notation/vocal.itely +2022 notation/chords.itely 702 notation/piano.itely -806 notation/percussion.itely +812 notation/percussion.itely 826 notation/guitar.itely 66 notation/strings.itely 242 notation/bagpipes.itely 4752 notation/ancient.itely -7069 notation/input.itely -- Input syntax +8701 notation/input.itely -- Input syntax 2164 notation/non-music.itely -- Non-musical notation -11017 notation/spacing.itely -- Spacing issues -12248 notation/changing-defaults.itely -- Changing defaults +11234 notation/spacing.itely -- Spacing issues +12679 notation/changing-defaults.itely -- Changing defaults 5187 notation/programming-interface.itely -- Interfaces for programmers -1989 notation/notation-appendices.itely -- Notation manual tables +2177 notation/notation-appendices.itely -- Notation manual tables 252 notation/cheatsheet.itely -- Cheat sheet -75558 total +79416 total -6- Rest of Application Usage -3764 usage/lilypond-book.itely -- LilyPond-book +4137 usage/lilypond-book.itely -- LilyPond-book 1122 usage/converters.itely -- Converting from other formats -4886 total +5259 total -7- Appendices whose translation is optional 326 essay/literature.itely diff --git a/Documentation/contributor/doc-work.itexi b/Documentation/contributor/doc-work.itexi index 4658c0d74d..8695d340ee 100644 --- a/Documentation/contributor/doc-work.itexi +++ b/Documentation/contributor/doc-work.itexi @@ -255,6 +255,13 @@ but instead: @@subsection @@code@{Foo@} Bar @end example +@item +With the exception of @code{@@} commands, the section name must +match the node name exactly. + +@item +No commas may be used in the node names. + @item If a heading is desired without creating a @code{@@node}, please use the following: @@ -369,7 +376,7 @@ Inspirational headwords are produced with: LSR snippets are linked with: @example -@@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] @{filename.ly@} @end example @@ -496,8 +503,6 @@ easier/faster processing), use this header: \paper @{ indent = 0\mm line-width = 160\mm - 2.0 * 0.4\in - ragged-right = ##t - force-assignment = #"" line-width = #(- line-width (* mm 3.000000)) @} @@ -1411,24 +1416,7 @@ In order to save build time, a script is available to build only one section of the documentation in English with a default html appearance. -The script is available as: - -@example -scripts/auxiliar/doc-section.sh -@end example - -This script will require customization for your site if your -LilyPond git repository is anyplace but @code{$HOME/lilypond}. - -Assuming that no customization is required, you can setup the -single section build with: - -@example -mkdir $HOME/lilypond/tempdocs -cp $HOME/lilypond/Documentation/out/version.itexi $HOME/lilypond/tempdocs -@end example - -You can then build a section of the documentation with: +You can build a section of the documentation with: @example scripts/auxiliar/doc-section.sh MANUAL SECTION @@ -1444,6 +1432,25 @@ Notation Reference, use the command: scripts/auxiliar/doc-section.sh notation pitches @end example +You can then see the generated document for the section at + +@example +tempdocs/pitches/out/pitches.html +@end example + +According to +@uref{http://code.google.com/p/lilypond/issues/detail?id=1236,Lilypond issue 1236}, +the location of the lilypond git tree is taken from @code{$LILYPOND_GIT} +if specified, otherwise it is auto-detected. + +It is assumed that compilation takes place in the @file{build/} +subdirectory, but this can be overridden by setting the environment +variable @code{LILYPOND_BUILD_DIR}. + +Similarly, output defaults to @file{build/tempdocs/} but this can be +overridden by setting the environment variable +@code{LILYPOND_TEMPDOCS}. + This script will not work for building sections of the Contributors' guide. For building sections of the Contributors' Guide, use: @@ -1461,8 +1468,8 @@ use: scripts/auxiliar/cg-section.sh doc-work @end example -Like @code{doc-section.sh}, @code{cg-section.sh} may need to be customized -for your installation. +@code{cg-section.sh} uses the same environment variables and +corresponding default values as @code{doc-section.sh}. @subheading Stripping whitespace and generating menus @@ -1535,7 +1542,7 @@ take some time before your request or contribution is handled. @node Getting started with documentation translation @subsection Getting started with documentation translation -First, get the sources of branch @code{lilypond/translation} from the +First, get the sources of branch @code{translation} from the Git repository, see @ref{Starting with Git}. @menu @@ -1797,11 +1804,6 @@ Spanish translation blah " @end example -@noindent -Then, you should get these translated strings into compiled snippets in -@file{Documentation/snippets}, see @q{General guidelines} in @ref{Adding -and editing snippets}. - @code{@@example} blocks need not be verbatim copies, e.g. variable names, file names and comments should be translated. @@ -1996,11 +1998,6 @@ the changes it made with @command{git diff} before committing; if you don't do so, some @code{@@lilypond} snippets might be broken or make no sense in their context. -When you have updated texidocs in -@file{Documentation/@var{MY-LANGUAGE}/texidocs}, you can get these -changes into compiled snippets in @file{Documentation/snippets}, see -@q{General guidelines} in @ref{Adding and editing snippets}. - Finally, a command runs the three update processes above for all enabled languages (from @file{Documentation/}): @@ -2035,23 +2032,6 @@ by doing git rev-list HEAD |head -1 @end example -A special case is updating Snippet documentation strings in -@file{Documentation/@var{MY-LANGUAGE}/texidocs}. For these to be -correctly marked as up-to-date, first run @code{makelsr.py} as -explained in @ref{Adding and editing snippets}, and commit the -resulting compiled snippets left in @file{Documentation/snippets/}. -Say the SHA1 ID code of this commit is . Now edit again your -translated files in @file{Documentation/@var{MY-LANGUAGE}/texidocs} -adjusting the 40-digit committish that appears in the text to be ; -finally, commit these updated files. Not doing so would result in -changes made both to your updates and original snippets to -persistently appear in the check-translation output as if they were -out of sync. - -This two-phase mechanism avoids the (practically) unsolvable problem -of guessing what committish will have our update, and pretending to -put this very committish on the files in the same commit. - @c http://lists.gnu.org/archive/html/lilypond-devel/2009-01/msg00245.html @c contains a helper script which could be used to perform massive @c committish updates. @@ -2163,7 +2143,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 @@ -2225,31 +2207,44 @@ This policy explains how to manage Git branches and commit translations to Git. @itemize -@item Translation changes matching master branch are preferably made on -@code{lilypond/translation} branch; they may be pushed directly to -@code{master} only if they do not break compilation of LilyPond and -its documentation, and in this case they should be pushed to -@code{lilypond/translation} too. Similarly, changes matching +@item Translation work is made on +@code{translation} branch. This branch is merged on +@code{staging} once a week, approximately. Then, +@code{master} branch is merged on +@code{translation}, where the check-translation script (see +@ref{Check state of translation}) shows changes in English docs which +should be translated, and the cycle starts again. + +@item Translations may be pushed directly to +@code{staging} only if they do not break compilation of LilyPond and +its documentation. Those changes could be pushed to +@code{translation} too, or alternatively translators could wait until +they come from +@code{master} the next time it is merged on +@code{translation}. Similarly, changes matching @code{stable/X.Y} are preferably made on -@code{lilypond/X.Ytranslation}. +@code{X.Ytranslation}. -@item @code{lilypond/translation} Git branch may be merged into -master only if LilyPond (@command{make all}) and documentation -(@command{make doc}) compile successfully. +@item @code{translation} Git branch may be merged into +@code{staging} branch only if LilyPond (@command{make all}) and +documentation (@command{make doc}) compile successfully. -@item @code{master} Git branch may be merged into -@code{lilypond/translation} whenever @command{make} and @command{make -doc} are successful (in order to ease documentation compilation by -translators), or when significant changes had been made in -documentation in English in master branch. +@item @command{make} and @command{make doc} are usually successful in +@code{master} Git branch because those tests should have already +succeeded in +@code{staging} branch before merging. +@code{master} branch may be merged into +@code{translation} when significant changes had been made in +documentation in English in +@code{master} branch. @item General maintenance may be done by anybody who knows what he does in documentation in all languages, without informing translators first. General maintenance include simple text substitutions (e.g. automated by sed), compilation fixes, updating Texinfo or lilypond-book commands, updating macros, updating ly code, fixing -cross-references, and operations described in @ref{Maintaining -without updating translations}. +cross-references, and operations described in +@ref{Maintaining without updating translations}. @end itemize diff --git a/Documentation/contributor/feta-font.itexi b/Documentation/contributor/feta-font.itexi new file mode 100644 index 0000000000..78021ae8d7 --- /dev/null +++ b/Documentation/contributor/feta-font.itexi @@ -0,0 +1,132 @@ +@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:: +* METAFONT formatting rules:: +@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{.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 + +@node METAFONT formatting rules +@section METAFONT formatting rules + +There are special formatting rules for METAFONT files. + +Tabs are used for indentation. + +When a path contains more than two points, put each point on a +separate line, with the operator at the beginning of the line: + +@example +fill z1 + -- z2 + -- z3 + .. cycle; +@end example + diff --git a/Documentation/contributor/introduction.itexi b/Documentation/contributor/introduction.itexi index 61905d060a..56b9cb40be 100644 --- a/Documentation/contributor/introduction.itexi +++ b/Documentation/contributor/introduction.itexi @@ -11,6 +11,7 @@ help LilyPond. @menu * Help us:: * Overview of work flow:: +* Summary for experienced developers:: * Mentors:: @end menu @@ -20,20 +21,16 @@ help LilyPond. @helpusNeed -@helpusTasks +@helpusSimple -@helpusProjects +@helpusAdvanced @node Overview of work flow @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 -with Texinfo, after pre-processing with @code{lilypond-book}. -Send well-formed patches to @email{lilypond-devel@@gnu.org}. -@end cartouche +@advanced{Experienced developers should skip to +@ref{Summary for experienced developers}.} Git is a @emph{version control system} that tracks the history of a program's source code. The LilyPond source code is maintained @@ -52,7 +49,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 @@ -101,6 +98,117 @@ code or documentation are strongly advised to use our Ubuntu LilyPond Developer Remix, as discussed in @ref{Quick start}.} +@node Summary for experienced developers +@section Summary for experienced developers + +If you are already familiar with typical open-source tools, here's +what you need to know: + +@itemize +@item @strong{source repository}: +hosted by GNU savannah. + +@example +@uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git} +@end example + +@item @strong{environment variables}: +many maintenance scripts, and many instructions in this guide rely on +predefined @ref{Environment variables}. + +@item @strong{mailing lists}: +given on @rweb{Contacts}. + +@item @strong{branches}: + +@itemize +@item @code{master}: +base your work from this, but do @strong{not push} to it. + +@item @code{staging}: +after a successful review (see below), push here. + +@item @code{translation}: +translators should base their work from this, and also push to it. + +@item @code{dev/foo}: +feel free to push any new branch name under @code{dev/}. + +@end itemize + +@item @strong{regression tests}: +also known as @qq{regtests}; this is a collection of more than a +thousand .ly files. We track the output of those files between +versions. + +If a patch introduces any unintentional changes to the regtests, +we will likely reject it -- make sure that you are aware and can +explain any regtest changes. More info in @ref{Regression tests}. + +@item @strong{reviews}: +after finishing work on a patch or branch: + +@enumerate +@item +upload it with our custom @code{git-cl}. In addition to uploading +it to the google rietveld code review tool, this adds a tracker +issue so that we don't lose your patch. The @qq{status} of your +patch is kept on the issue tracker; see @ref{Issues}. + +@example +@uref{https://github.com/gperciva/git-cl} +@end example + +Your patch will be given @code{Patch-new} status. More info in +@ref{Uploading a patch for review}. + +@item +If your patch passes some automatic tests, it will be given +@code{Patch-review} status. This generally happens within 24 +hours. + +@item +After that, the patch must wait for the next @qq{patch countdown}, +which occur 3 times a week. If there are a lot of patches waiting +for a countdown, a subset of patches are chosen randomly. When +your patch is put on a countdown, it will be given +@code{Patch-countdown} status. + +@item +The countdown is a 48-hour period which gives other developers one +last chance to review the patch. If no significant problems are +found, your patch will be given @code{Patch-push} status. + +@item +You may now either push it to the @code{staging} branch, or email +your patch (created with @w{@code{git format-patch}}) to somebody +who will push it for you. + +@end enumerate + +@advanced{Yes, this process means that most patches wait between +60-120 hours before reaching @code{master}. This is unfortunate, but +given our limited resources for reviewing patches and a history of +unintended breakage in @code{master}, this is the best compromise +we have found.} + +@c I don't think this is important enough to list here, but I may +@c change my mind and/or leave a link to a later CG section. +@ignore +@item @strong{code style}: +C++ code should be formatted with +@file{scripts/auxiliar/fixcc.py}, which requires +@url{http://astyle.sourceforge.net/, astyle 2.02}. However, we +are not very strict about this requirement. + +At the moment, scheme code should be formatted @qq{like emacs does +it}. We are working on an automated tool to simplify this step. +However, we are not very strict about this requirement either. +@end ignore + +@end itemize + + @node Mentors @section Mentors @@ -182,9 +290,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 diff --git a/Documentation/contributor/issues.itexi b/Documentation/contributor/issues.itexi index 5ea4b952d3..7bea164937 100644 --- a/Documentation/contributor/issues.itexi +++ b/Documentation/contributor/issues.itexi @@ -7,6 +7,7 @@ miscellaneous development tasks. @menu * Introduction to issues:: +* Bug Squad overview:: * Bug Squad setup:: * Bug Squad checklists:: * Issue classification:: @@ -24,10 +25,10 @@ are @qq{simple} tasks: they can be done by a normal user with nothing more than a web browser, email, and lilypond.} @qq{Issues} isn't just a politically-correct term for @qq{bug}. -We use the same tracker for feature requests and code TODOs, so -the term @qq{bug} wouldn't be accurate. Despite the difference -between @qq{issue} and @qq{bug}, we call our team of contributors -who organize issues the @emph{Bug Squad}. +We use the same tracker for feature requests, code TODOs and +patches, so the term @qq{bug} wouldn't be accurate. Despite the +difference between @qq{issue} and @qq{bug}, we call our team of +contributors who organize issues the @emph{Bug Squad}. The Bug Squad is mainly composed of non-programmers -- their job is to @emph{organize} issues, not solve them. Their duties @@ -38,6 +39,35 @@ that a developer's fix actually resolves the problem. New volunteers for the Bug Squad should contact the @ref{Meisters, Bug Meister}. +@node Bug Squad overview +@section Bug Squad overview + +The Bug Squad are volunteers who progress issue tracking using the +Google Issue tracker at + +@example +@uref{http://code.google.com/p/lilypond/issues/list} +@end example + +Bug Squad members have 2 primary responsiblities: + +@enumerate + +@item +Monitoring the LilyPond Bugs mailing list and adding to the +tracker any new issues reported there. + +@item +Verifying issues that are claimed fixed by a developer, to ensure +that the fix works, and is actually in the code base. + +@end enumerate + +It's also part of the Bug Squad's responsibility to check that +the Regression Tests don't show up any problems in the latest +release. The Bug Meister currently does this. + +All of this is explained in more detail in the following sections. @node Bug Squad setup @section Bug Squad setup @@ -78,8 +108,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 +167,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 +177,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 +185,14 @@ the currently-active Bug Squad member(s) can handle the message. @subsubheading Daily schedule -The Bug Meister is omitted from the daily schedule. - @example -Sunday: Colin -Monday: Dmytro -Tuesday: James Bailey -Wednesday: Ralph -Thursday: Patrick -Friday: Urs -Saturday: Kieren +Monday: Colin H +Tuesday: Eluze +Wednesday: Marek +Thursday: Ralph +Friday: Marek +Saturday: Mark +Sunday: Colin H @end example @@ -314,37 +342,84 @@ After @strong{every release} (both stable and unstable): @itemize @item -Regression test comparison: if anything has changed suspiciously, -ask if it was deliberate. The official comparison is online, at: +Issues to verify: go to -@c NOTE: leave this here. In this case, it's worth duplicating -@c the link. -gp @example -@uref{http://lilypond.org/test/} +@uref{http://code.google.com/p/lilypond/issues/list?can=7} @end example -More information is available from in -@ref{Precompiled regression tests}. +(You can also generate this list by selecting +@qq{Issues to verify} from the drop-down list next to the search +box.) + +You should see a list of Issues that have been claimed fixed by a +developer. If the developer has done their job properly, the +Issue should have a tag @qq{Fixed_mm_MM_ss}, where mm is +the major version, MM the minor version and ss the current +release. This will help you work out which you can verify - do +not verify any Issues where the claimed fixed build is not yet +released. Work your way through these as follows: + +If the Issue refers to a bug, try to reproduce the bug with the latest +officially released version (not one you've built yourself from +source); if the bug is no longer there, mark the +issue @qq{Verified} (i.e. @qq{the fix has been verified to work}). + +Quite a few of these will be issues tracking patches. @strong{You +do not have to prove these patches work - simply that they have +been pushed into the code base.} The developer should have put +information similar to @qq{Pushed as as +d8fce1e1ea2aca1a82e25e47805aef0f70f511b9} in the tracker. The +long list of letters and numbers is called the @qq{committish}. +Providing you can find this at the git tracker: +@example +@uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git} +@end example -@item -Issues to verify: try to reproduce the bug with the latest -official GUB version; if you cannot reproduce the bug, mark the -item @qq{Verified} (i.e. @qq{the fix has been verified to work}). +then you should mark the issue as verified. A quick way of +finding these is to enter the committish at the following address: @example -@uref{http://code.google.com/p/lilypond/issues/list?can=7} +@uref{http://philholmes.net/lilypond/git/} @end example -A few (approximately 10%) of these fixed issues relate to the +The Issue tracker also requires that any issues labelled as +@qq{Duplicate} are also verified. Check that the linked issue is +a duplicate and verify the issue. + +A few (approximately 10%) of the fixed issues relate to the build system or fundamental architecture changes; there is no way for you to verify these. Leave those issues alone; somebody else will handle them. +@item +The official regression test comparison is online at: + +@c NOTE: leave this here. In this case, it's worth duplicating +@c the link. -gp +@example +@uref{http://lilypond.org/test/} +@end example + +If anything has changed suspiciously, +ask if it was deliberate. If the text output from LilyPond (the +logfile) changes, the differences will be displayed with a + +before text added to the logfile and - before any text removed +from the logfile. This may or may not be suspicious. + +There is one test designed to produce output every time the +regtests are created. @code{test-output-distance.ly} creates +randomly spaced notes and will always have different output if the +regtest checker is working. + +More information is available from in +@ref{Precompiled regression tests}. + @item Check for any incorrectly-classified items in the tracker. This generally just means looking at the grid to see any items without -a Type or Priority. +a Type. @end itemize @@ -386,8 +461,8 @@ same (broken) output as the initial report, then simply post a @section Issue classification The Bug Squad should classify issues according to the guidelines -given by developers. Every issue should have a Status, Type, and -Priority; the other fields are optional. +given by developers. Every issue should have a Status and Type; +the other fields are optional. @subheading Status (mandatory) @@ -448,7 +523,23 @@ The issue's Type should be the first relevant item in this list. @itemize @item -Type-Collision: overlapping notation. +Type-Critical: normally a regression +against the current stable version or the previous stable version. +Alternatively, a regression against a fix developed for the +current version. This does not apply where the +@qq{regression} occurred because a feature was removed +deliberately - this is not a bug. + +Currently, only Critical items will block a stable release. + +@item +Type-Maintainability: hinders future development. + +@item +Type-Crash: any input which produces a crash. + +@item +Type-Ugly: overlapping or other ugly notation in graphical output. @item Type-Defect: a problem in the core program. (the @code{lilypond} @@ -472,12 +563,16 @@ Type-Enhancement: a feature request for the core program. The distinction between enhancement and defect isn't extremely clear; when in doubt, mark it as enhancement. +@item +Type-Patch: tracking a patch on Rietveld. Bug squad should not +need to use this label. + @item Type-Other: anything else. @end itemize - +@ignore @subheading Priority (mandatory) Currently, only Critical items will block a stable release. @@ -523,14 +618,17 @@ regression against an old stable version which hasn't been noticed for a long time and which is unlikely to get fixed could be downgraded from Priority-Critical by one of the programmers. +@end ignore + @subheading Opsys (optional) Issues that only affect specific operating systems. -@subheading Patch (optional) +@subheading Patch label (optional) -Normal Bug Squad members should not add or modify Patch issues; -leave them to the Patch Meister. +Normal Bug Squad members should not add or modify Patch issues +except to verify them; for all other Patch work, leave them to the +Patch Meister. @itemize @@ -553,9 +651,15 @@ some cases, the developer's concerns can be resolved simply by discussion the situation or providing notation examples. If the patch is updated, the category should be changed to -@code{patch-new} (for normal contributors) or @code{patch-new} +@code{patch-new} (for normal contributors) or @code{patch-review} (for developers who are very confident about their patch). +@item +Patch-countdown: final call for any patch problems + +@item +Patch-push: patch has passed the countdown and should be pushed. + @item Patch-abandoned: the author has not responded to review comments for a few months. @@ -569,14 +673,14 @@ Other labels: @itemize @item -Regression: it used to work intentionally in an earlier -stable release. If the earlier output was accidental (i.e. we -didn't try to stop a collision, but it just so happened that two -grobs didn't collide), then breaking it does not count as a -regression. +Regression: it used to work intentionally in the current +stable release or the previous stable release. If the earlier +output was accidental (i.e. we didn't try to stop a collision, +but it just so happened that two grobs didn't collide), then +breaking it does not count as a regression. -To help decide whether the change is a regression, and therefore -should be Priority-Critical, please adopt the following process: +To help decide whether the change is a regression, please adopt +the following process: @enumerate @@ -585,12 +689,12 @@ Are you certain the change is OK? If so, do nothing. @item Are you certain that the change is bad? Add it to the tracker -as a Critical issue, regression. +as a regression. @item If you're not certain either way, add it to the tracker as a -Critical issue, regression but be aware that it may be -recategorised or marked invalid. +regression but be aware that it may be recategorised or marked +invalid. @end enumerate @@ -602,10 +706,6 @@ Frog: the fix is believed to be suitable for a new contributor (does not require a great deal of knowledge about LilyPond). The issue should also have an estimated time in a comment. -@item -Maintainability: hinders development of LilyPond. For example, -improvements to the build system, or @qq{helper} python scripts. - @item Bounty: somebody is willing to pay for the fix. Only add this tag if somebody has offered an exact figure in US dollars or euros. @@ -618,15 +718,18 @@ to warnings when compiling the source code or generating documentation. @item -Security: might potentially be used. +Security: security risk. @item -Performance: might potentially be used. +Performance: performance issue. @end itemize If you particularly want to add a label not in the list, go -ahead, but this is not recommended. +ahead, but this is not recommended, except when an issue is marked +as fixed. In this case it should be labeled Fixed_mm_MM_ss, +where mm is major version, MM minor version and ss current +release. @node Adding issues to the tracker @@ -651,7 +754,7 @@ have been added. @item Add the issue and classify it according to the guidelines in @ref{Issue classification}. In particular, the item should have -@code{Status}, @code{Type-}, and @code{Priority-} labels. +@code{Status} and @code{Type-} labels. Include output with the first applicable method: @@ -681,6 +784,18 @@ 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 + +@smallexample +@uref{https://raw.github.com/gperciva/lilypond-extra/master/bug-squad/trimtagline.sh} +@end smallexample + +@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: @@ -689,8 +804,8 @@ generate a @file{bug.pdf} file with: lilypond --pdf bug.ly @end example -Note that this is likely to be extremely rare; most bugs should fit -into the first two categories above. +Note that this is likely to be extremely rare; most bugs should +fit into the first two categories above. @end itemize @@ -712,6 +827,15 @@ email should contain a link to the issue you just added. @warning{This is not a Bug Squad responsibility; we have a separate person handling this task.} +For contributors/developers: follow the steps in +@ref{Commits and patches}, and @ref{Pushing to staging}. + +For people doing maintenance tasks: git-cl is adding issues, James +is testing them, Colin is selecting them for countdowns, and +Patchy is merging from staging to master. In the coming weeks, +these tasks will be more and more automated. + +@ignore There is a single Patch Meister, and a number of Patch Helpers (rename this?). The list of known patches awaiting review is: @@ -737,6 +861,7 @@ new issue with the @code{Patch-new} label and a link to the patch Issue numbers are cheap; losing developers because they got fed up with us losing their hard work is expensive. +@end ignore @c if we enter patches immediately, I don't think this is relevant. @ignore @item @@ -749,6 +874,7 @@ message) on the webgit page: @uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git} @end example @end ignore +@ignore @item If the patch is clearly in response to an existing issue, then @@ -826,7 +952,7 @@ weeks. @end itemize - +@end ignore @node Summary of project status @@ -836,17 +962,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 +982,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 diff --git a/Documentation/contributor/lsr-work.itexi b/Documentation/contributor/lsr-work.itexi index 27349b3625..6e134ea1eb 100644 --- a/Documentation/contributor/lsr-work.itexi +++ b/Documentation/contributor/lsr-work.itexi @@ -9,7 +9,7 @@ * LSR to Git:: * Fixing snippets in LilyPond sources:: * Renaming a snippet:: -* Updating LSR to a new version:: +* Updating the LSR to a new version:: @end menu @@ -29,16 +29,16 @@ Texinfo. @subheading General guidelines -When you create (or find!) a nice snippet, if it supported by LilyPond -version running on LSR, please add it to LSR. Go to -@uref{http://lsr.dsi.unimi.it/, LSR} and log in -- if you haven't +When you create (or find!) a nice snippet, if it is supported by +the LilyPond version running on the LSR, please add it to the LSR. +Go to @uref{http://lsr.dsi.unimi.it/, LSR} and log in -- if you haven't already, create an account. Follow the instructions on the website. These instructions also explain how to modify existing snippets. If you think the snippet is particularly informative and you think it should be included in the documentation, tag it with @qq{docs} and one -or more other categories, or ask somebody who has editing permissions to -do it on the development list. +or more other categories, or ask on the development list for +somebody who has editing permissions to do it . Please make sure that the lilypond code follows the guidelines in @ref{LilyPond formatting}. @@ -46,6 +46,10 @@ Please make sure that the lilypond code follows the guidelines in If a new snippet created for documentation purposes compiles with LilyPond version currently on LSR, it should be added to LSR, and a reference to the snippet should be added to the documentation. +Please ask a documentation editor to add a reference to it in an +appropriate place in the docs. (Note -- it should appear in the +snippets document automatically, once it has been imported into +git and built. See @ref{LSR to Git}. If the new snippet uses new features that are not available in the current LSR version, the snippet should be added to @@ -60,17 +64,6 @@ source tree scripts/auxiliar/makelsr.py @end example -@noindent -This also copies translated texidoc fields and snippet titles into -snippets in @file{Documentation/snippets}. Note: this, in turn, could -make the translated texidoc fields to appear as out of sync when you -run @code{make check-translation}, if the originals changed from the -last translation update, even if the translations are also updated; -see @ref{Documentation translation maintenance} for details about -updating the docs; in particular, see @ref{Updating translation -committishes} to learn how to mark these translated fields as fully -updated. - Be sure that @command{make doc} runs successfully before submitting a patch, to prevent breaking compilation. @@ -94,9 +87,22 @@ This code demonstrates ... @} @end example -\noindent +@noindent and name the file @file{snippet-title.ly}. +@noindent +Please ensure that the version number you use at the top of the +example is the minimum version that the file will compile with: +for example, if the LSR is currently at 2.14.2 and your example +requires 2.15.30, but the current development version of +@code{lilypond} is 2.17.5, put @code{\version "2.15.30"} in the +example. + +@noindent +Please also pay particular attention to the lines beginning +@code{lsrtags = } and @code{doctitle =}. The tags must match tags used +in the documentation, and the @code{doctitle} must match the +filename. @node Approving snippets @section Approving snippets @@ -132,54 +138,133 @@ there are no security risks. command into our source tree if you do not do this! Take this step @strong{VERY SERIOUSLY}.} +@item +If all is well, check the box labelled @qq{approved} and save the +snippet. + @end enumerate @node LSR to Git @section LSR to Git +@subheading Introduction +Snippets used in the documentation are in +@file{$LILYPOND_GIT/Documentation/snippets}. This directory +contains a complete set of the snippets in the LSR which are +tagged with 'docs'. The exact method for getting them there is +described below, but in essence they come from downloading a +tarball from the LSR and importing into the directory using the +@code{makelsr} script. + +Any snippets which are too bleeding edge to run on the LSR (which +uses a stable development version) are put into +@file{$LILYPOND_GIT/Documentation/snippets/new}. Once the LSR has +been upgraded so that these will run, then they are transferred to +the LSR and deleted from @file{/snippets/new}. + +'Git' is the shorthand name for the Git repository that contains +all the development code. For further information on setting this +up see, @ref{Working with source code}. An alternative to setting +up a Git repository for people wanting to do LSR work is to get +the source code from +@uref{http://lilypond.org/website/development.html}. + +@subheading Importing the LSR to Git + @enumerate @item -Make sure that @command{convert-ly} and @command{lilypond} commands in -current PATH are in a bleeding edge version -- latest release from -master branch, or even better a fresh snapshot from Git master branch. +Make sure that @command{convert-ly} script and the @command{lilypond} +binary are a bleeding edge version -- the latest release or even +better, a fresh snapshot from Git master, with the environment +variable @code{LILYPOND_BUILD_DIR} correctly set up, see +@ref{Environment variables}. @item -From the top source directory, run: +Start by creating a list of updated snippets from your local +repository. From the top source directory, run: @example -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} +scripts/auxiliar/makelsr.py @end example +Commit the changes and make a patch. Check the patch has nothing +other than minor changes. If all is good and you're confident in what +you've done, this can be pushed directly to staging. + +@item +Next, download the updated snippets and run @command{makelsr.py} +against them. From the top source directory, run: + +@smallexample +wget http://lsr.dsi.unimi.it/download/lsr-snippets-docs-`date +%F`.tar.gz +tar -xzf lsr-snippets-docs-`date +%F`.tar.gz +make -C $LILYPOND_BUILD_DIR +scripts/auxiliar/makelsr.py lsr-snippets-docs-`date +%F` +@end smallexample + @noindent -where @var{YYYY-MM-DD} is the current date, e.g. 2009-02-28. +where @command{date +%F} gives the current date in format +@var{YYYY-MM-DD} (the snippets archive is usually generated around +03:50 CET, you may want to use @command{date -d yesterday +%F} +instead, depending on your time zone and the time you run this +commands sequence). @command{make} is included in this sequence so +that @command{makelsr} can run @command{lilypond} and +@command{convert-ly} versions that match current source tree; you can +select different binaries if desired or needed, to see options for +this do + +@smallexample +scripts/auxiliar/makelsr.py --help +@end smallexample @item Follow the instructions printed on the console to manually check for -unsafe files. +unsafe files. These are: + +@example +Unsafe files printed in lsr-unsafe.txt: CHECK MANUALLY! + git add Documentation/snippets/*.ly + xargs git diff HEAD < lsr-unsafe.txt +@end example + +First, it's important to check for any added files and add them to +the files git is tracking. Run @code{git status} and look +carefully to see if files have been added. If so, add them with +@code{git add}. + +As the console says, @command{makelsr} creates a list of possibly +unsafe files in @file{lsr-unsafe.txt} by running @code{lilypond} +against each snippet using the @code{-dsafe} switch. This list can be +quite long. However, by using the command @code{xargs git diff HEAD < +lsr-unsafe.txt} git will take that list and check whether any of the +snippets are different from the snippet already in master. If any is +different it must be checked manually VERY CAREFULLY. @warning{Somebody could sneak a @code{#'(system "rm -rf /")} command into our source tree if you do not do this! Take this step @strong{VERY SERIOUSLY}.} +If there is any doubt about any of the files, you are strongly +advised to run a review on Rietveld. + @item -Do a git add / commit / push. +If a Review is not needed, commit the changes and push to +@code{staging}. @end enumerate -Note that whenever there is one snippet from -@file{Documentation/snippets/new} and the other from LSR with the same -file name, the one from @file{Documentation/snippets/new} will be copied -by @command{makelsr.py}. +Note that whenever there is a snippet in +@file{Documentation/snippets/new} and another from the LSR with +the same file name, @command{makelsr.py} will overwrite the LSR +version with the one from @file{Documentation/snippets/new}. @node Fixing snippets in LilyPond sources @section Fixing snippets in LilyPond sources -In case some snippet from @file{Documentation/snippets} causes the +If some snippet from @file{Documentation/snippets} causes the documentation compilation to fail, the following steps should be followed to fix it reliably. @@ -191,15 +276,16 @@ or log, then fix the file @file{Documentation/snippets/@var{foo}.ly} to make the documentation build successfully. @item -Determine where it comes from by looking at its first line, e.g. run +Determine where it comes from by looking at its first two lines, +e.g. run @example -head -1 Documentation/snippets/@var{foo}.ly +head -2 Documentation/snippets/@var{foo}.ly @end example @item -@strong{In case the snippet comes from LSR}, apply the fix to the -snippet in LSR and send a notification email to a LSR editor with CC to +@strong{If the snippet comes from the LSR}, also apply the fix to the +snippet in the LSR and send a notification email to an LSR editor with CC to the development list -- see @ref{Adding and editing snippets}. The failure may sometimes not be caused by the snippet in LSR but by the syntax conversion made by @command{convert-ly}; in this case, try to fix @@ -211,15 +297,25 @@ is simpler and recommended to write a new version of the snippet in @file{Documentation/snippets/new}, then run @command{makelsr.py}. @item -@strong{In case the snippet comes from} -@file{Documentation/snippets/new}, apply in -@file{Documentation/snippets/new/@var{foo}.ly} the same fix you did in -@file{Documentation/snippets/@var{foo}.ly}. In case the build failure -was caused by a translation string, you may have to fix -@file{input/texidocs/@var{foo}.texidoc} instead. +@strong{If the snippet comes from} @file{Documentation/snippets/new}, +apply the fix in @file{Documentation/snippets/new/@var{foo}.ly}, then +run @command{makelsr.py} without argument from top of the source tree: + +@example +scripts/auxiliar/makelsr.py +@end example + +Then, inspect @file{Documentation/snippets/@var{foo}.ly} to check that +the fix has been well propagated. + +If the build failure was caused by a translation string, you may have +to fix some @file{Documentation/@var{lang}/texidocs/@var{foo}.texidoc} +instead; in case the build failure comes only from translation +strings, it is not needed to run @command{makelsr.py}. @item -In any case, commit all changes to Git. +When you've done, commit your changes to Git and ensure they're +pushed to the correct branch. @end enumerate @@ -250,25 +346,83 @@ any instances of the snippet name in the documentation. @end enumerate -@node Updating LSR to a new version -@section Updating LSR to a new version +@node Updating the LSR to a new version +@section Updating the LSR to a new version -To update LSR, perform the following steps: +To update the LSR, perform the following steps: @enumerate @item -Download the latest snippet tarball, extract it, and run -@code{convert-ly} on all files using the command-line option -@code{--to=VERSION} to ensure snippets are updated to the -correct stable version. +Start by emailing the LSR maintainer, Sebastiano, and liaising +with him to ensure that updating the snippets is synchronised with +updating the binary running the LSR. + +@item +Download the latest snippet tarball from +@uref{http://lsr.dsi.unimi.it/download/} and extract it. +The relevant files can be found in the @file{all} subdirectory. +Make sure your shell is using an English language version, for +example @code{LANG=en_US}, then run @command{convert-ly} on all +the files. Use the command-line option @code{--to=version} to +ensure the snippets are updated to the correct stable version. @item -Copy relevant snippets (i.e., snippets whose version is equal to or less -than the new version of LilyPond) from -@file{Documentation/snippets/new/} into the tarball. +Make sure that you are using @command{convert-ly} from the latest +available release to gain best advantage from the latest +@code{converting-rules-updates}. + +For example: -You must not rename any files during this, or the next, stage. +@itemize + +@item +LSR-version: 2.12.2 +@item +intended LSR-update to 2.14.2 +@item +latest release 2.15.30 + +@end itemize + +Use convert-ly from 2.15.30 and the following terminal command +for all files: + +@example +convert-ly -e -t2.14.2 *.ly +@end example + +@item +There might be no conversion rule for some old commands. To make +an initial check for possible problems you can run the following +script on a copy of the @file{all} subdirectory: + +@example +#!/bin/bash + +for LILYFILE in *.ly +do + STEM=$(basename "$LILYFILE" .ly) + echo "running $LILYFILE..." + convert-ly -e -t "$LILYFILE" >& "$STEM".txt +done + +grep refer *.txt +grep smart *.txt +TODO: better script +@end example + +@item +Copy relevant snippets (i.e. snippets whose version is equal to +or less than the new version of LilyPond running on the LSR) from +@file{Documentation/snippets/new/} into the set of files to be +used to make the tarball. Make sure +you only choose snippets which are already present in the LSR, +since the LSR software isn't able to create new snippets this way. +If you don't have a Git repository for LilyPond, you'll find these +snippets in the source-tarball on +@uref{http://lilypond.org/website/development.html}. +Don't rename any files at this stage. @item Verify that all files compile with the new version of LilyPond, @@ -279,26 +433,53 @@ Due to the workload involved, we @emph{do not} require that you verify that all snippets produce the expected output. If you happen to notice any such snippets and can fix them, great; but as long as all snippets compile, don't delay this step due to some -weird output. If a snippet is broken, the hordes of willing -web-2.0 volunteers will fix it. It's not our problem. +weird output. If a snippet is not compiling, update it manually. +If it's not possible, delete it for now. + +@item +Remove all headers and version-statements from the files. Phil +Holmes has a @code{python} script that will do this and which +needs testing. Please ask him for a copy if you wish to do this. + +@item +Create a tarball and send it back to Sebastiano. Don't forget to +tell him about any deletions. @item -Create a tarball and send it back to Sebastiano. +Use the LSR web interface to change any descriptions you want to. +Changing the titles of snippets is a bit fraught, since this also +changes the filenames. Only do this as a last resort. @item -When LSR has been updated, download another snippet tarball, verify that -the relevant snippets from @file{Documentation/snippets/new/} were -included, then delete those snippets from +Use the LSR web interface to add the other snippets from +@file{Documentation/snippets/new/} which compile with the new +LilyPond version of the LSR. Ensure that they are correctly +tagged, including the tag @code{docs} and that they are approved. + +@item +When LSR has been updated, wait a day for the tarball to update, +then download another snippet tarball. Verify that +the relevant snippets from @file{Documentation/snippets/new/} are +now included, then delete those snippets from @file{Documentation/snippets/new/}. +@item +Commit all the changes. @emph{Don't forget to add new files to +the git repository with @code{git add}}. Run @code{make}, +@code{make doc} and +@code{make test} to ensure the changes don't break the build. Any +snippets that have had their file name changed or have been +deleted could break the build, and these will need correcting +step by step. + @end enumerate -Here is a shell script to run all @file{.ly} files in a directory +Below 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 +490,14 @@ do done grep failed *.txt +TODO: better script +@end smallexample + +Sometimes @code{grep failed *.txt} will not discover all +problematic files. In addition you may want to use: + +@example +grep ERROR *.txt +grep error *.txt +grep warning *.txt @end example diff --git a/Documentation/contributor/programming-work.itexi b/Documentation/contributor/programming-work.itexi index 6f3bbb824a..d72424ab4c 100644 --- a/Documentation/contributor/programming-work.itexi +++ b/Documentation/contributor/programming-work.itexi @@ -8,13 +8,16 @@ * Programming without compiling:: * Finding functions:: * Code style:: +* Warnings Errors Progress and Debug Output:: * Debugging LilyPond:: * Tracing object relationships:: * Adding or modifying features:: * Iterator tutorial:: * Engraver tutorial:: * Callback tutorial:: +* Understanding pure properties:: * LilyPond scoping:: +* Scheme->C interface:: * LilyPond miscellany:: @end menu @@ -26,7 +29,7 @@ number of stages. This process, along with the types of routines that accomplish the various stages of the process, is described in this section. A more complete description of the LilyPond architecture and internal program execution is found in Erik Sandberg's -@uref{http://lilypond.org/web/images/thesis-erik-sandberg.pdf, master's +@uref{http://lilypond.org/website/pdf/thesis-erik-sandberg.pdf, master's thesis}. The first stage of LilyPond processing is @emph{parsing}. In the parsing @@ -132,7 +135,7 @@ METAFONT tutorial page}. PostScript is used to generate graphical output. A brief PostScript tutorial is @uref{http://local.wasp.uwa.edu.au/~pbourke/dataformats/postscript/, available online}. The -@uref{http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf, PostScript Language +@uref{http://www.adobe.com/products/postscript/pdfs/PLRM.pdf, PostScript Language Reference} is available online in PDF format. @subsection Python @@ -218,7 +221,7 @@ grep -i functionName subdirectory/* This command will search all the contents of the directory subdirectory/ and display every line in any of the files that contains -functionName. The @code{-i} option makes @command{grep} ignore +functionName. The @option{-i} option makes @command{grep} ignore case -- this can be very useful if you are not yet familiar with our capitalization conventions. @@ -318,77 +321,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 \ + $(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 +387,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 +433,7 @@ set lw-=set! " Try to highlight all ly: procedures syn match schemeFunc "ly:[^) ]\+" -@end verbatim +@end example @node Naming conventions @@ -707,7 +694,7 @@ words like stem, beam, crescendo as separately translatable words. When translating, it is preferable to put interesting information at the end of the message, rather than embedded in the middle. This especially applies to frequently used messages, even if this -would mean sacrificing a bit of eloquency. This holds for original +would mean sacrificing a bit of eloquence. This holds for original messages too, of course. @example @@ -728,6 +715,167 @@ Do not run make po/po-update with GNU gettext < 0.10.35 @end itemize +@node Warnings Errors Progress and Debug Output +@section Warnings, Errors, Progress and Debug Output + +@unnumberedsubsec Available log levels + +LilyPond has several loglevels, which specify how verbose the output on +the console should be: +@itemize +@item NONE: No output at all, even on failure +@item ERROR: Only error messages +@item WARN: Only error messages and warnings +@item BASIC_PROGRESS: Warnings, errors and basic progress (success, etc.) +@item PROGRESS: Warnings, errors and full progress messages +@item INFO: Warnings, errors, progress and more detailed information (default) +@item DEBUG: All messages, including full debug messages (very verbose!) +@end itemize + +The loglevel can either be set with the environment variable +@code{LILYPOND_LOGLEVEL} or on the command line with the @option{--loglevel=...} +option. + +@unnumberedsubsec Functions for debug and log output + +LilyPond has two different types of error and log functions: +@itemize + +@item +If a warning or error is caused by an identified position in the input file, +e.g. by a grob or by a music expression, the functions of the @code{Input} +class provide logging functionality that prints the position of the message +in addition to the message. + +@item +If a message can not be associated with a particular position in an input file, +e.g. the output file cannot be written, then the functions in the +@code{flower/include/warn.hh} file will provide logging functionality that +only prints out the message, but no location. + +@end itemize + +There are also Scheme functions to access all of these logging functions from +scheme. In addition, the Grob class contains some convenience wrappers for +even easier access to these functions. + +The message and debug functions in @code{warn.hh} also have an optional +argument @code{newline}, which specifies whether the message should always +start on a new line or continue a previous message. +By default, @code{progress_indication} does NOT start on a new line, but rather +continue the previous output. They also do not have a particular input +position associated, so there are no progress functions in the Input class. +All other functions by default start their output on a new line. + +The error functions come in three different flavors: fatal error messages, +programming error messages and normal error messages. Errors written +by the @code{error ()} function will cause LilyPond to exit immediately, +errors by @code{Input::error ()} will continue the compilation, but +return a non-zero return value of the lilypond call (i.e. indicate an +unsuccessful program execution). All other errors will be printed on the +console, but not exit LilyPond or indicate an unsuccessful return code. +Their only differences to a warnings are the displayed text and that +they will be shown with loglevel @code{ERROR}. + +If the Scheme option @code{warning-as-error} is set, any warning will be +treated as if @code{Input::error} was called. + + +@unnumberedsubsec All logging functions at a glance + +@multitable @columnfractions 0.16 0.42 0.42 +@headitem +@tab C++, no location +@tab C++ from input location + +@item ERROR +@tab @code{error ()}, @code{programming_error (msg)}, @code{non_fatal_error (msg)} +@tab @code{Input::error (msg)}, @code{Input::programming_error (msg)} + +@item WARN +@tab @code{warning (msg)} +@tab @code{Input::warning (msg)} + +@item BASIC +@tab @code{basic_progress (msg)} +@tab - + +@item PROGRESS +@tab @code{progress_indication (msg)} +@tab - + +@item INFO +@tab @code{message (msg)} +@tab @code{Input::message (msg)} + +@item DEBUG +@tab @code{debug_output (msg)} +@tab @code{Input::debug_output (msg)} + +@item @tab @tab + +@headitem +@tab C++ from a Grob +@tab Scheme, music expression + +@item ERROR +@tab @code{Grob::programming_error (msg)} +@tab - + +@item WARN +@tab @code{Grob::warning (msg)} +@tab @code{(ly:music-warning music msg)} + +@item BASIC +@tab - +@tab - + +@item PROGRESS +@tab - +@tab - + +@item INFO +@tab - +@tab @code{(ly:music-message music msg)} + +@item DEBUG +@tab - +@tab - + +@item @tab @tab + +@headitem +@tab Scheme, no location +@tab Scheme, input location + +@item ERROR +@tab - +@tab @code{(ly:error msg args)}, @code{(ly:programming-error msg args)} + +@item WARN +@tab @code{(ly:warning msg args)} +@tab @code{(ly:input-warning input msg args)} + +@item BASIC +@tab @code{(ly:basic-progress msg args)} +@tab - + +@item PROGRESS +@tab @code{(ly:progress msg args)} +@tab - + +@item INFO +@tab @code{(ly:message msg args)} +@tab @code{(ly:input-message input msg args)} + +@item DEBUG +@tab @code{(ly:debug msg args)} +@tab - + +@end multitable + + + @node Debugging LilyPond @section Debugging LilyPond @@ -831,7 +979,7 @@ for all errors and defines functions for displaying scheme objects (ps), grobs (pgrob), and parsed music expressions (pmusic). @example -file lily/out/lilypond +file ~/lilypond-git/build/out/bin/lilypond b programming_error b Grob::programming_error @@ -1045,7 +1193,7 @@ is described below. @item Installing graphviz In order to create the graph of the object relationships, it is -first necessary to install Graphviz. graphviz is available for a +first necessary to install Graphviz. Graphviz is available for a number of different platforms: @example @@ -1057,7 +1205,7 @@ number of different platforms: In order for the Graphviz tool to work, config.make must be modified. It is probably a good idea to first save a copy of config.make under a different name. Then, edit config.make by removing every occurrence -of @code{-DNDEBUG}. +of @option{-DNDEBUG}. @item Rebuilding LilyPond @@ -1089,7 +1237,7 @@ The logfile has standard lilypond output, as well as the Graphviz output data. Delete everything from the beginning of the file up to but not including the first occurrence of @code{digraph}. -Also, delete the final liypond message about successs from the end +Also, delete the final lilypond message about success from the end of the file. @item Process the logfile with @code{dot} @@ -1105,7 +1253,7 @@ dot -Tpdf graphviz.log > graphviz.pdf The pdf file can then be viewed with any pdf viewer. -When compiled without @code{-DNDEBUG}, lilypond may run slower +When compiled without @option{-DNDEBUG}, lilypond may run slower than normal. The original configuration can be restored by either renaming the saved copy of @code{config.make} or rerunning @code{configure}. Then rebuild lilypond with @@ -1163,6 +1311,10 @@ Regression tests should generally cover one issue per test. Several short, single-issue regression tests are preferred to a single, long, multiple-issue regression test. +If the change in the output is small or easy to overlook, use bigger +staff size -- 40 or more (up to 100 in extreme cases). Size 30 means +"pay extra attention to details in general". + Use existing regression tests as templates to demonstrate the type of header information that should be included in a regression test. @@ -1301,7 +1453,7 @@ When these commands complete without error, the patch is considered to function successfully. Developers on Windows who are unable to build LilyPond should -get help from a Linux or OSX developer to do the make tests. +get help from a GNU/Linux or OSX developer to do the make tests. @node Verify regression tests @@ -1314,19 +1466,13 @@ introduced into the output. This process is described in @subheading Typical developer's edit/compile/test cycle -TODO: is @code{[-j@var{X} CPU_COUNT=@var{X}]} useful for -@code{test-baseline}, @code{check}, @code{clean}, -@code{test-redo}? Neil Puttock says it is useful for -everything but @code{clean}, which is disk-limited. -Need to check formally. - @itemize @item Initial test: @example make [-j@var{X}] -make test-baseline +make [-j@var{X} CPU_COUNT=@var{X}] test-baseline make [-j@var{X} CPU_COUNT=@var{X}] check @end example @@ -1336,10 +1482,10 @@ Edit/compile/test cycle: @example @emph{## edit source files, then...} -make clean @emph{## only if needed (see below)} -make [-j@var{X}] @emph{## only if needed (see below)} -make test-redo @emph{## redo files differing from baseline} -make [-j@var{X} CPU_COUNT=@var{X}] check @emph{## CPU_COUNT here?} +make clean @emph{## only if needed (see below)} +make [-j@var{X}] @emph{## only if needed (see below)} +make [-j@var{X} CPU_COUNT=@var{X}] test-redo @emph{## redo files differing from baseline} +make [-j@var{X} CPU_COUNT=@var{X}] check @end example @item @@ -1358,10 +1504,6 @@ the object files. If you only modify files which are interpreted, like those in the @file{scm/} and @file{ly/} directories, then @command{make} is not needed before @command{make test-redo}. -TODO: Fix the following paragraph. You can do @command{rm mf/out/*} -instead of make clean, and you can probably do -@command{make -C mf/ clean} as well, but I haven't checked it -- cds - Also, if you modify any font definitions in the @file{mf/} directory then you must run @command{make clean} and @command{make} before running @command{make test-redo}. This will @@ -1373,6 +1515,12 @@ Running @command{make@tie{}check} will leave an HTML page important differences that your change introduced, whether in the layout, MIDI, performance or error reporting. +You only need to use @command{make test-clean} to start from +scratch, prior to running @command{make@tie{}test-baseline}. To +check new modifications, all that is needed is to repeat +@command{make@tie{}test-redo} and @command{make@tie{}test-check} +(not forgetting @command{make} if needed). + @@ -1397,7 +1545,7 @@ Otherwise, a developer with push privileges will push the patch. Once the patch has been pushed, all the relevant issues should be closed. -On Rietveld, the author should log in an close the issue either by +On Rietveld, the author should log in and close the issue either by using the @q{Edit Issue} link, or by clicking the circled x icon to the left of the issue name. @@ -1419,6 +1567,9 @@ Iterators are routines written in C++ that process music expressions and sent the music events to the appropriate engravers and/or performers. +See a short example discussing iterators and their duties in +@ref{Articulations on EventChord}. + @node Engraver tutorial @section Engraver tutorial @@ -1572,6 +1723,16 @@ Engraver_name::acknowledge_interface_name (Grob_info info) @} @end example +Acknowledge functions are called in the order engravers are +@code{\consist}-ed (the only exception is if you set +@code{must-be-last} to @code{#t}). + +If useful things are to be done to the acknowledged grobs, this +should be deferred until all the acknowledging has finished, i.e., +store the acknowledged grobs and process the information in a +@code{process-acknowledged ()} or @code{stop-translation-timestep ()} +function. + @node Engraver declaration/documentation @subsection Engraver declaration/documentation @@ -1618,10 +1779,297 @@ information. TODO -- This is a placeholder for a tutorial on callback functions. + +@node Understanding pure properties +@section Understanding pure properties + +@menu +* Purity in LilyPond:: +* Writing a pure function:: +* How purity is defined and stored:: +* Where purity is used:: +* Case studies:: +* Debugging tips:: +@end menu + +Pure properties are some of the most difficult properties to understand +in LilyPond but, once understood, it is much easier to work with +horizontal spacing. This document provides an overview of what it means +for something to be @q{pure} in LilyPond, what this purity guarantees, +and where pure properties are stored and used. It finishes by +discussing a few case studies for the pure programmer to save you some +time and to prevent you some major headaches. + + +@node Purity in LilyPond +@subsection Purity in LilyPond +Pure properties in LilyPond that do not have any @q{side effects}. +That is, looking up a pure property should never result in calls to the +following functions: +@itemize +@item @code{set_property} +@item @code{set_object} +@item @code{suicide} +@end itemize +This means that, if the property is calculated via a callback, this callback +must not only avoid the functions above but make sure that any functions +it calls also avoid the functions above. Also, to date in LilyPond, a pure +function will always return the same value before line breaking (or, more +precisely, before any version of @code{break_into_pieces} is called). This +convention makes it possible to cache pure functions and be more flexible +about the order in which functions are called. For example; Stem #'length has +a pure property that will @emph{never} trigger one of the functions listed +above and will @emph{always} return the same value before line breaking, +independent of where it is called. Sometimes, this will be the actual length +of the Stem. But sometimes it will not. For example; stem that links up +with a beam will need its end set to the Y position of the beam at the stem's +X position. However, the beam's Y positions can only be known after the score +is broken up in to several systems (a beam that has a shallow slope on a +compressed line of music, for example, may have a steeper one on an +uncompressed line). Thus, we only call the impure version of the properties +once we are @emph{absolutely certain} that all of the parameters needed to +calculate their final value have been calculated. The pure version provides a +useful estimate of what this Stem length (or any property) will be, and +the art of creating good pure properties is trying to get the estimation +as close to the actual value as possible. + +Of course, like Gregory Peck and Tintin, some Grobs will have properties +that will always be pure. For example, the height of a note-head in +not-crazy music will never depend on line breaking or other parameters +decided late in the typesetting process. Inversely, in rare cases, +certain properties are difficult to estimate with pure values. For +example, the height of a Hairpin at a certain cross-section of its +horizontal span is difficult to know without knowing the horizontal +distance that the hairpin spans, and LilyPond provides an +over-estimation by reporting the pure height as the entire height of the +Hairpin. + +Purity, like for those living in a convent, is more like a contract than +an @emph{a priori}. If you write a pure-function, you are promising +the user (and the developer who may have to clean up after you) that +your function will not be dependent on factors that change at different +stages of the compilation process (compilation of a score, not of +LilyPond). + +One last oddity is that purity, in LilyPond, is currently limited +exclusively to things that have to do with Y-extent and positioning. +There is no concept of @q{pure X} as, by design, X is always the +independent variable (i.e. from column X1 to column X2, what will be the +Y height of a given grob). Furthermore, there is no purity for +properties like color, text, and other things for which a meaningful notion +of estimation is either not necessary or has not yet been found. For example, +even if a color were susceptible to change at different points of the +compilation process, it is not clear what a pure estimate of this color +would be or how this pure color could be used. Thus, in this document and +in the source, you will see purity discussed almost interchangeably with +Y-axis positioning issues. + + +@node Writing a pure function +@subsection Writing a pure function +Pure functions take, at a minimum, three arguments: the @var{grob}, the +starting column at which the function is being evaluated (hereafter +referred to as @var{start}), and the end column at which the grob is +being evaluated (hereafter referred to as @var{end}). For items, +@var{start} and @var{end} must be provided (meaning they are not optional) +but will not have a meaningful impact on the result, as items only occupy +one column and will thus yield a value or not (if they are not in the range +from @var{start} to @var{end}). For spanners however, @var{start} and +@var{end} are important, as we may can get a better pure estimation of a +slice of the spanner than considering it on the whole. This is useful +during line breaking, for example, when we want to estimate the Y-extent +of a spanner broken at given starting and ending columns. + + +@node How purity is defined and stored +@subsection How purity is defined and stored +Purity can currently be defined two different ways in LilyPond that +correspond to two types of scenarios. In one scenario, we know that a +callback is pure, but we are not necessarily certain what properties +will use this callback. In another, we want a property to be pure, but +we don't want to guarantee that its callback function will be pure in +all circumstances. + +In the first scenario, we register the callback in define-grobs.scm in +one of four places depending on what the function does. + +@itemize +@item @code{pure-print-functions}: If finding a print function's vertical +extent does not have any @q{side effects} we register it here. We then +don't have to set the pure Y-extent property, which will be taken from the +stencil. + +@item @code{pure-print-to-height-conversions}: If a stencil can +eventually be used to glean a grob's Y-extent but is not pure (meaning +it will have a different height at different stages of the compilation +process), we add it to this list along with a function for the pure +Y-extent. + +@item @code{pure-conversions-alist}: This list contains pairs of +functions and their pure equivalents. It is onto but not one-to-one. + +@item @code{pure-functions}: Like pure-print-functions in that they work +for both pure and impure values, but they do not return a stencil. +@end itemize + +At all stages of the compilation process, when LilyPond wants the pure +version of a property, it will consult these lists and see if it can get +this property for a given Grob. Note that you do @emph{not} need to +register the pure property in the grob itself. For example, there is no +property @q{pure-Y-extent}. Rather, by registering these functions as +defined above, every time LilyPond needs a pure property, it will check +to see if a Grob contains one of these functions and, if so, will use +its value. If LilyPond cannot get a pure function, it will return a +value of @code{##f} for the property. + +LilyPond is smart enough to know if a series of chained functions are +pure. For example, if a Y-offset property has four chained functions +and all of them have pure equivalents, LilyPond will read the four pure +equivalents when calculating the pure property. However, if even one is +impure, LilyPond will not return a pure property for the offset (instead +returning something like @code{#f} or @code{'()}) and will likely wreak +havoc on your score. + +In the second scenario, we create an unpure-pure-container (unpure is +not a word, but hey, neither was Lilypond until the 90s). For example: + +@example +#(define (foo grob) + '(-1 . 1)) + +#(define (bar grob start end) + '(-2 . 2)) + +\override Stem #'length = #(ly:make-unpure-pure-container foo bar) +@end example + +This is useful if we want to: + +@itemize +@item create overrides that have pure alternatives (should not be used +in development, but useful for users) + +@item use return values that are not functions (i.e. pairs or booleans) +for either pure or unpure values. + +@item allow a function to be considered pure in a limited amount of +circumstances. This is useful if we are sure that, when associated with +one grob a function will be pure but not necessarily with another grob +that has different callbacks. +@end itemize + +Items can only ever have two pure heights: their actual pure height if +they are between @q{start} and @q{end}, or an empty interval if they are +not. Thus, their pure property is cached to speed LilyPond up. Pure +heights for spanners are generally not cached as they change depending +on the start and end values. They are only cached in certain particular +cases. Before writing a lot of caching code, make sure that it is a +value that will be reused a lot. + + +@node Where purity is used +@subsection Where purity is used +Pure Y values must be used in any functions that are called before +line breaking. Examples of this can be seen in +@code{Separation_items::boxes} to construct horizontal skylines and in +@code{Note_spacing::stem_dir_correction} to correct for optical +illusions in spacing. Pure properties are also used in the calculation +of other pure properties. For example, the @code{Axis_group_interface} +has pure functions that look up other pure functions. + +Purity is also implicitly used in any functions that should only ever +return pure values. For example, extra-spacing-height is only ever used +before line-breaking and thus should never use values that would only be +available after line breaking. In this case, there is no need to create +callbacks with pure equivalents because these functions, by design, need +to be pure. + +To know if a property will be called before and/or after line-breaking +is sometimes tricky and can, like all things in coding, be found by +using a debugger and/or adding @var{printf} statements to see where they +are called in various circumstances. + + +@node Case studies +@subsection Case studies +In each of these case studies, we expose a problem in pure properties, a +solution, and the pros and cons of this solution. + +@subheading Time signatures +A time signature needs to prevent accidentals from passing over or under +it, but its extent does not necessarily extend to the Y-position of +accidentals. LilyPond's horizontal spacing sometimes makes a line of +music compact and, when doing so, allows certain columns to pass over +each other if they will not collide. This type of passing over is not +desirable with time signatures in traditional engraving. But how do we +know if this passing over will happen before line breaking, as we are +not sure what the X positions will be? We need a pure estimation of how +much extra spacing height the time signatures would need to prevent this +form of passing over without making this height so large as to +overly-distort the Y-extent of an system, which could result in a very +@q{loose} looking score with lots of horizontal space between columns. +So, to approximate this extra spacing height, we use the Y-extent of a +time signature's next-door-neighbor grobs via the pure-from-neighbor +interface. + +@itemize +@item pros: By extending the extra spacing height of a time signature to +that of its next-door-neighbors, we make sure that grobs to the right of +it that could pass above or below it do not. + +@item cons: This over-estimation of the vertical height could prevent +snug vertical spacing of systems, as the system will be registered as +being taller at the point of the time signature than it actually is. +This approach can be used for clefs and bar lines as well. +@end itemize + +@subheading Stems +As described above, Stems need pure height approximations when they are +beamed, as we do not know the beam positions before line breaking. To +estimate this pure height, we take all the stems in a beam and find +their pure heights as if they were not beamed. Then, we find the union +of all these pure heights and take the intersection between this +interval (which is large) and an interval going from the note-head of a +stem to infinity in the direction of the stem so that the interval stops +at the note head. + +@itemize +@item pros: This is guaranteed to be at least as long as the beamed +stem, as a beamed stem will never go over the ideal length of the +extremal beam of a stem. + +@item cons: Certain stems will be estimated as being too long, which +leads to the same problem of too-much-vertical-height as described +above. + +@end itemize + + +@node Debugging tips +@subsection Debugging tips +A few questions to ask yourself when working with pure properties: + +@itemize +@item Is the property really pure? Are you sure that its value could +not be changed later in the compiling process due to other changes? + +@item Can the property be made to correspond even more exactly with the +eventual impure property? + +@item For a spanner, is the pure property changing correctly depending +on the starting and ending points of the spanner? + +@item For an Item, will the item's pure height need to act in horizontal +spacing but not in vertical spacing? If so, use extra-spacing-height +instead of pure height. + +@end itemize + + @node LilyPond scoping @section LilyPond scoping -The Lilypond language has a concept of scoping, i.e. you can do +The Lilypond language has a concept of scoping, i.e. you can do: @example foo = 1 @@ -1655,6 +2103,137 @@ a manner that allows it to be garbage-collected when the module is dispersed, either by being stored module-locally, or in weak hash tables. + +@node Scheme->C interface +@section Scheme->C interface + +Most of the C functions interfacing with Guile/Scheme used in LilyPond +are described in the API Reference of the +@uref{http://www.gnu.org/software/guile/manual/html_node/index.html, +GUILE Reference Manual}. + +The remaining functions are defined in @file{lily/lily-guile.cc}, +@file{lily/include/lily-guile.hh} and +@file{lily/include/lily-guile-macros.hh}. +Although their names are meaningful there's a few things you should know +about them. + +@menu +* Comparison:: +* Conversion:: +@end menu + +@node Comparison +@subsection Comparison + +This is the trickiest part of the interface. + +Mixing Scheme values with C comparison operators won't produce any crash +or warning when compiling but must be avoided: + +@example +scm_string_p (scm_value) == SCM_BOOL_T +@end example + +As we can read in the reference, @code{scm_string_p} returns a Scheme +value: either @code{#t} or @code{#f} which are written @code{SCM_BOOL_T} +and @code{SCM_BOOL_F} in C. This will work, but it is not following +to the API guidelines. For further information, read this discussion: + +@smallexample +@uref{http://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00646.html} +@end smallexample + +There are functions in the Guile reference that returns C values +instead of Scheme values. In our example, a function called +@code{scm_is_string} (described after @code{string?} and @code{scm_string_p}) +returns the C value 0 or 1. + +So the best solution was simply: + +@example +scm_is_string (scm_value) +@end example + +There a simple solution for almost every common comparison. Another example: +we want to know if a Scheme value is a non-empty list. Instead of: + +@example +(scm_is_true (scm_list_p (scm_value)) && scm_value != SCM_EOL) +@end example + +one can usually use: + +@example +scm_is_pair (scm_value) +@end example + +since a list of at least one member is a pair. This test is +cheap; @code{scm_list_p} is actually quite more complex since it makes +sure that its argument is neither a `dotted list' where the last pair +has a non-null @code{cdr}, nor a circular list. There are few +situations where the complexity of those tests make sense. + +Unfortunately, there is not a @code{scm_is_[something]} function for +everything. That's one of the reasons why LilyPond has its own Scheme +interface. As a rule of thumb, tests that are cheap enough to be +worth inlining tend to have such a C interface. So there is +@code{scm_is_pair} but not @code{scm_is_list}, and @code{scm_is_eq} +but not @code{scm_is_equal}. + +@subheading General definitions + +@subsubheading bool to_boolean (SCM b) + +Return @code{true} if @var{b} is @code{SCM_BOOL_T}, else return @code{false}. + +This should be used instead of @code{scm_is_true} and +@code{scm_is_false} for properties since in Lilypond, unset properties +are read as an empty list, and by convention unset Boolean properties +default to false. Since both @code{scm_is_true} and +@code{scm_is_false} only compare with @code{##f} in line with what +Scheme's conditionals do, they are not really useful for checking the +state of a Boolean property. + +@subsubheading bool ly_is_[something] (args) + +Behave the same as scm_is_[something] would do if it existed. + +@subsubheading bool is_[type] (SCM s) + +Test whether the type of @var{s} is [type]. +[type] is a LilyPond-only set of values (direction, axis...). More +often than not, the code checks Lilypond specific C++-implemented +types using + +@subsubheading [type *] unsmob_[type] (SCM s) + +This tries converting a Scheme object to a pointer of the desired +kind. If the Scheme object is of the wrong type, a pointer value +of@w{ }@code{0} is returned, making this suitable for a Boolean test. + +@node Conversion +@subsection Conversion + +@subheading General definitions + +@subsubheading bool to_boolean (SCM b) + +Return @code{true} if @var{b} is @code{SCM_BOOL_T}, else return @code{false}. + +This should be used instead of @code{scm_is_true} and @code{scm_is_false} +for properties since empty lists are sometimes used to unset them. + +@subsubheading [C type] ly_scm2[C type] (SCM s) + +Behave the same as scm_to_[C type] would do if it existed. + +@subsubheading [C type] robust_scm2[C type] (SCM s, [C type] d) + +Behave the same as scm_to_[C type] would do if it existed. +Return @var{d} if type verification fails. + + @node LilyPond miscellany @section LilyPond miscellany @@ -1667,6 +2246,7 @@ would become zero as items are moved to other homes. * Spacing algorithms:: * Info from Han-Wen email:: * Music functions and GUILE debugging:: +* Articulations on EventChord:: @end menu @node Spacing algorithms @@ -1695,6 +2275,16 @@ We create lots of extra grobs (eg. a BarNumber at every bar line) but most of them are not drawn. See the break-visibility property in item-interface. +Here is another e-mail exchange. Janek Warchoł asked for a starting point +to fixing 1301 (change clef colliding with notes). Neil Puttock replied: + +The clef is on a loose column (it floats before the head), so the +first place I'd look would be lily/spacing-loose-columns.cc (and +possibly lily/spacing-determine-loose-columns.cc). +I'd guess the problem is the way loose columns are spaced between +other columns: in this snippet, the columns for the quaver and tuplet +minim are so close together that the clef's column gets dumped on top +of the quaver (since it's loose, it doesn't influence the spacing). @node Info from Han-Wen email @subsection Info from Han-Wen email @@ -1728,7 +2318,7 @@ classes because they play a special role in the linebreaking process. A C(++) object that is encapsulated so it can be used as a Scheme object. See GUILE info, "19.3 Defining New Types (Smobs)" -@@subheading When is each C++ class constructed and used +@subheading When is each C++ class constructed and used? @itemize @@ -2062,3 +2652,30 @@ The breakpoint failing may have to do with the call sequence. See @file{parser.yy}, run_music_function(). The function is called directly from C++, without going through the GUILE evaluator, so I think that is why there is no debugger trap. + +@node Articulations on EventChord +@subsection Articulations on EventChord + +From David Kastrup's email +@uref{http://lists.gnu.org/archive/html/lilypond-devel/2012-02/msg00189.html}: + +LilyPond's typesetting does not act on music expressions and music +events. It acts exclusively on stream events. It is the act of +iterators to convert a music expression into a sequence of stream events +played in time order. + +The EventChord iterator is pretty simple: it just takes its "elements" +field when its time comes up, turns every member into a StreamEvent and +plays that through the typesetting process. The parser currently +appends all postevents belonging to a chord at the end of "elements", +and thus they get played at the same point of time as the elements of +the chord. Due to this design, you can add per-chord articulations or +postevents or even assemble chords with a common stem by using parallel +music providing additional notes/events: the typesetter does not see a +chord structure or postevents belonging to a chord, it just sees a +number of events occuring at the same point of time in a Voice context. + +So all one needs to do is let the EventChord iterator play articulations +after elements, and then adding to articulations in EventChord is +equivalent to adding them to elements (except in cases where the order +of events matters). diff --git a/Documentation/contributor/quick-start.itexi b/Documentation/contributor/quick-start.itexi index 526d415c12..2172677054 100644 --- a/Documentation/contributor/quick-start.itexi +++ b/Documentation/contributor/quick-start.itexi @@ -3,209 +3,233 @@ @node Quick start @chapter Quick start -Want to submit a patch for LilyPond? Great! This chapter is -designed to let you do this as quickly and easily as possible. - -It is not possible to compile LilyPond on Windows, and extremely -difficulty to compile it on MacOS X. We have therefore made a -@q{remix} of Ubuntu which includes all necessary dependencies to -compile both LilyPond and the documentation. This can be run -inside a virtual machine without disturbing your main operating -system. The full name is @qq{Ubuntu LilyPond Developer Remix}, -but we refer to it as @qq{lilydev} for short. - -@advanced{experienced developers may prefer to use their own -development environment. It may be instructive to skim over these -instructions, but be aware that this chapter is intended for -helpful users who may have never created a patch before.} +Want to submit a patch for LilyPond? Great! Never created a patch +before? Never compiled software before? No problem! This chapter is +for you and will help you do this as quickly and easily as possible. @menu -* Lilydev:: -* Using lily-git:: -* Compiling with lilydev:: +* LilyDev:: +* lily-git:: +* Compiling with LilyDev:: * Now start work!:: @end menu -@node Lilydev -@section Lilydev +@node LilyDev +@section LilyDev -This section discusses how to install and use the Ubuntu LilyPond -Development Remix. +There is a disk image of a @q{remix} of Ubuntu GNU/Linux available for +download which includes all the necessary software and tools to compile +both LilyPond and the documentation. Called the +@qq{Ubuntu LilyPond Developer Remix}, but known simply as @qq{LilyDev} +for short. Although it is not possible to compile LilyPond on Windows +and extremely difficult on MacOS, LilyDev can be installed and run +inside a @q{virtual machine} on any of these operating systems without +disturbing your main operating system. The LilyDev disk image can also +be burnt to a DVD and installed like any other Ubuntu GNU/Linux +distribution. + +Most virtualization software can be used but we recommend VirtualBox as +it is available for all major operating systems and is easy to install +& configure. + +If you are not familiar with GNU/Linux, it may be beneficial to read a +couple of @qq{introduction to Ubuntu} web pages. + +Some contributors have recommended a free PDF: + +@example +@uref{http://www.ubuntupocketguide.com/} +@end example + +For those interested, the LilyDev remix is currently based on a 32bit +version of 10.04 LTS Ubuntu (Lucid Lynx). + +@warning{Apart from installing and configuring LilyDev in VirtualBox, +the rest of the chapter on assumes that you are comfortable using the +command-line. While this chapter is intended for users who may have +never created a patch or compiled software before, experienced +developers (who prefer to use their own development environment) may +still find it instructive to skim over this section.} @menu -* Installing lilydev:: -* Configuring lilydev in virtualbox:: -* Using lilydev:: +* Where to get LilyDev:: +* Installing LilyDev in VirtualBox:: +* Configuring LilyDev in VirtualBox:: @end menu -@node Installing lilydev -@subsection Installing lilydev -@enumerate -@item -Install some virtualization software. +@node Where to get LilyDev +@unnumberedsubsec Where to get LilyDev -Any virtualization tool can be used, but we recommend VirtualBox: +Download the Ubuntu LilyPond Developer Remix CD image file +(approximately 1 GB) from here: -@example -@uref{http://@/www.virtualbox.org/@/wiki/@/Downloads} -@end example +@smallexample +@uref{http://www.philholmes.net/lilypond/LilyDev/ubuntu-LilyDev-remix-2.6.iso} +@end smallexample + +Some advanced users might want this file too: +@smallexample +@uref{http://www.philholmes.net/lilypond/LilyDev/ubuntu-LilyDev-remix-2.6.iso.md5} +@end smallexample +(If you don't recognize what this file is, then you don't need it.) -In virtualization terminology, your main operating system is the -@qq{host}, while lilydev is the @qq{guest}. +@node Installing LilyDev in VirtualBox +@unnumberedsubsec Installing LilyDev in VirtualBox + +This section discusses how to install and use LilyDev with VirtualBox. + +@warning{If you already know how to install a virtual machine using a +disc image inside VirtualBox (or your own virtualization software) then +you can skip this section and go straight to @ref{lily-git}.} + +@enumerate @item -Download the Ubuntu LilyPond Developer Remix disk image: -(approximately 1 GB) +Download Virtualbox from here: @example -@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.1.iso} +@uref{http://@/www.virtualbox.org/@/wiki/@/Downloads} @end example -@advanced{Some users might want these files, but if you don't -recognize what they are, then you don't want them: -@* -@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.1.iso.md5} -@c @* -@c @uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso.torrent} -} +@warning{In virtualization terminology, the operating system where +Virtualbox is installed, is the known as the @strong{host}. LilyDev +will be installed @q{inside} Virtualbox as a @strong{guest}.} @item -Create a music new @qq{virtual machine} inside your virtualization -software. +Start the VirtualBox software and click @q{New} to create a new +@qq{virtual machine}. -If possible, use at least 700 MB of RAM (1GB would be better) for -the virtual machine, and use @qq{dynamically expanding storage} -for the virtual hard drive. A complete compile of everything -(code, docs, regression tests) can reach 10 GB. +The @q{New Virtual Machine Wizard} will walk you through setting up your +guest virtual machine. Choose an appropriate name for your LilyDev +installation and select the @q{Linux} operating system. When selecting +the @q{version} use @q{Ubuntu} if available (but not the @q{64 bit} +option). If you do not have that specific option choose @q{Linux 2.6} +(again do not choose any option that has 64 bit next to it). @item -Install @file{ubuntu-lilydev-remix-1.1.iso} as the @qq{guest} -operating system on your virtualized system. +Select the amount of RAM you will allow the LilyDev guest to use from +your host operating system when it is running. If possible, use at +least 700 MB of RAM; the more RAM you can spare from your host the +better, although LilyDev will currently use no more than 4 GB (4096 MB) +even if you are able to assign more. -@enumerate +@item +For your @q{Virtual Hard Disk}, leave the @q{Create new hard disk} +option checked, use the default @q{VDI} and +@qq{Dynamically allocated} options for the virtual hard drive. A +complete compile of everything (code, docs, regression tests) can reach +10 GB so size your virtual disk and its location accordingly. @item -When @file{ubuntu-lilydev-remix-1.1.iso} boots, it shows an -ISOLINUX @code{boot:} prompt. Type: +Verify the summary details and click @q{Create}, when you are satisfied. +Your new guest will be displayed in the Virtualbox window. Click the +@q{Start} button and the @q{First Run Wizard} will prompt you for +the installation media. Click the browse icon and locate the LilyDev +disk image and click through the wizard to start the installation +process. + +@item +When the LilyDev disk image boots, it shows a prompt: @example -install +ISOLINUX @code{boot:} @end example +Hit the Return key (or wait 30 seconds) and then when the installer +screen loads, using the arrow keys select +@q{Install - start the installer directly} to begin the install process +of LilyDev on your virtual hard disk. The Ubuntu software will walk you +through the complete installation process. + @item At the @qq{Prepare disk space} stage, do not be afraid to select @qq{Erase and use the entire disk}, since this refers to your -@emph{virtual disk}, not your machine's actual hard drive. +@strong{@emph{virtual disk}}, not your machine's actual hard +disk. @item -When prompted to remove the installation CD, go to -@clicksequence{Devices @click{} CD/DVD Devices} and de-select -@file{ubuntu-lilydev-remix-1.1.iso}. +Click through the rest of the wizard, filling in any appropriate details +when asked and wait for the install to complete. -@end enumerate - -@advanced{ -The latest version of lilydev is based on Ubuntu 10.04.1; if you -encounter any difficulties installing it, search for one of the -many tutorials for installing that particular version of Ubuntu as -a guest operating system. -} +@warning{This will take anywhere from 10 minutes to up to an hour +depending on the speed of your computer and if Ubuntu detects you are +connected to the internet and needs to download any additional +security updates or patches, although these updates are not required to +compile LilyPond and it is possible to skip the additional downloads to +speed up the install process.} @item -Do any extra configuration for your virtualization software. - -There are additional instructions for VirtualBox in -@ref{Configuring lilydev in virtualbox}. - -If you use other virtualization software, then follow the normal -procedures for your virtualization software with Ubuntu as the -client. +When prompted by the Ubuntu installer wizard, restart the virtual +machine and then when prompted to @q{eject the CD} by virtual box, just +click inside the virtual machine window and hit the return key to +reboot the virtual machine. It will not try to restart the installer +but start the virtual machine proper. LilyDev is now installed and +running! @end enumerate @knownissues - Not all hardware is supported in all virtualization tools. In -particular, some contributors have reported problems with USB -devices. If you would like to investigate further, then look for -help for your virtualization tool using your normal OS as the -@qq{host} and Ubuntu as the @qq{client}. +particular, some contributors have reported problems with USB network +adapters. If you have problems with network connection (for example +Internet connection in the host system is lost when you launch virtual +system), try installing and running LilyDev with your computer's +built-in network adapter used to connect to the network. Refer to the +help documentation that comes with your virtualization software. -@node Configuring lilydev in virtualbox -@subsection Configuring lilydev in virtualbox +@node Configuring LilyDev in VirtualBox +@unnumberedsubsec Configuring LilyDev in VirtualBox -VirtualBox has extra @qq{guest additions} which can make the -virtualization easier to use (full-screen, easy file sharing -between host and guest operating systems, shared clipboards, etc). +VirtualBox has extra @q{guest additions} which although are not +necessary to use LilyDev or compile Lilypond, do provide some additional +features to your Virtual Machine to make it easier to work with. Such +as being able to dynamically resize the LilyDev window, allow seamless +interaction with your mouse pointer on both the host and guest and let +you copy/paste between your host and guest if needed. @enumerate @item -In @emph{VirtualBox}, select @clicksequence{Devices @click{} -Install Guest Additions...}. +Select the @q{Devices} menu from the virtual machine window and choose +@q{Install Guest Additions...}. This will automount a CD which will +prompt you to autorun it. Click OK and follow the instructions. It is +recommended to reboot the guest when the installation is complete. -@item -In @emph{Ubuntu}, select @clicksequence{Places @click{} -VBOXADDITIONS_}. A file-system window will open. +Other virtualization software will also have their own @q{guest} +additions, follow the normal procedures for your virtualization software +with Ubuntu as the client. @item -Double-click on the @file{autorun.sh} file, then select @qq{Run in -Terminal}, and enter your password when prompted. +Restart Ubuntu to complete the installation of the guest additions. -@item -Once the script is finished, @qq{eject} the virtual CD, and then -go to @clicksequence{Devices @click{} CD/DVD Devices} and -de-select @file{VBoxGuestAdditions.iso}. +@advanced{If you do any kernel upgrades, you may need to reinstall +the additional software. Just follow the step above again and reboot +when the reinstallation is complete.} -@item -Restart Ubuntu to complete the installation. - -@advanced{If you do any kernel upgrades, you may need to re-run -these VBOXADDITIONS instructions.} @end enumerate -Some other steps may be helpful: +@noindent +Other items that may be helpful: @itemize + @item In the settings for the virtual machine, set the network to -Bridged mode to allow you to access shared folders on your Windows -host. +Bridged mode to allow you to access shared folders when using Windows +hosts. @item Set up any additional features, such as @q{Shared Folders} between -your main operating system and ubuntu. This is distinct from the -networked share folders in Windows. Consult external -documentation for this step. +your main operating system and Ubuntu. This is distinct from the +networked share folders in Windows. Consult the external +documentation for this. Some longtime contributors have reported that @q{shared folders} are rarely useful and not worth the fuss, particularly since files can be shared over a network instead. -@end itemize - - -@node Using lilydev -@subsection Using lilydev - -If you are not familiar with Linux, it may be beneficial to read a -couple of @qq{introduction to Ubuntu} webpages. - -@itemize -@item -One particular change from Windows and MacOS X is that most -software should be installed with your @qq{package manager}; this -vastly simplifies the process of installing and configuring -software. Go to @clicksequence{Applications @click{} Ubuntu -Software Center}. - -@item -The rest of this manual assumes that you are using the -command-line; double-click on the @q{Terminal} icon on the -desktop. - @item Pasting into a terminal is done with @code{Ctrl+Shift+v}. @@ -218,32 +242,56 @@ Right-click allows you to edit a file with gedit. We recommend using gedit. @item -Some contributors have recommended: (pdf available for free) - -@example -@uref{http://www.ubuntupocketguide.com/} -@end example +One particular change from Windows and MacOS X is that most +software should be installed with your @qq{package manager}; this +vastly simplifies the process of installing and configuring +software. Go to @clicksequence{Applications @click{} Ubuntu +Software Center}. @end itemize -@node Using lily-git -@section Using lily-git +@node lily-git +@section lily-git -@command{lily-git.tcl} is a graphical tool to help you access and -share changes to the lilypond source code. +The @q{LilyPond Contributor's Git Interface} (otherwise known as +@command{lily-git.tcl}) is a simple-to-use GUI to help you download and +update the LilyPond source code as well as an aid to making software +patches. @menu -* Install and configuration of lily-git.tcl:: -* Daily use of lily-git.tcl:: +* Where to get lily-git:: +* Configuring lily-git and downloading the source code:: +* How to use lily-git:: @end menu -@node Install and configuration of lily-git.tcl -@unnumberedsubsec Install and configuration of @command{lily-git.tcl} +@node Where to get lily-git +@unnumberedsubsec Where to get lily-git + +Depending on your development environment, lily-git may already be +installed on your computer. + +@itemize +@item +If you are using LilyDev (see @ref{LilyDev}) then lily-git is already +installed and ready to run. + +@item +For those not using LilyDev then lily-git can be obtained by downloading +the software directly. See @ref{Manually installing lily-git.tcl}. + +@item +Finally, lily-git is always part of the LilyPond source code and is +located in @file{~/lilypond-git/scripts/auxillar/lily-git.tcl}. + +@end itemize + + +@node Configuring lily-git and downloading the source code +@unnumberedsubsec Configuring lily-git and downloading the source code @warning{The rest of this manual assumes that you are using the -command-line; double-click on the @q{Terminal} icon on the -desktop.} +command-line within a terminal.} @enumerate @item @@ -253,42 +301,50 @@ Type (or copy&paste) into the Terminal: lily-git.tcl @end example +@noindent +You will be prompted to enter your name and your email address. This +information is used only to identify and label any patches you create. +This information can be edited if required later. See +@ref{Configuring Git}. Click on the @emph{Submit} button to update +lily-git with this information. + @item Click on the @qq{Get source} button. -This will create a directory called @file{lilypond-git/} within -your home directory, and will download the source code into that -directory (around 55Mb). When the process is finished, the -@qq{Command output} window will display @qq{Done}, and the button -label will change to say @qq{Update source}. +A directory called @file{lilypond-git/} is now created within +your home directory and the complete source code will start to be +downloaded into it. + +@warning{Be patient! The complete source is around 150@tie{}Mb.} -@warning{Some contributors have reported that nothing happens at -this step. If this occurs, then try again in a few minutes -- we -suspect that this is an intermittant network problem. If the +@noindent +When the source code has been downloaded, the @qq{Command output} window +in lily-git will update and display @qq{Done} on the very last line. +The button label will change to say @qq{Update source}. + +@warning{Some contributors have reported that occasionally nothing +happens at this step at all. If this occurs, then try again in a few +minutes -- it could be an intermittant network problem. If the problem persists, please ask for help.} @item -Navigate to the @file{lilypond-git/} directory to view the source -files. +Close the lily-git GUI and navigate to the @file{lilypond-git/} +directory to view and edit the source files. @end enumerate -You should now progress to @ref{Compiling with lilydev}. - -@warning{Throughout the rest of this manual, most command-line -input should be entered from @file{~/lilypond-git/}. This is -referred to as the @emph{top source directory}.} +@noindent +If this is the first time you have compiled LilyPond then please go +to @ref{Compiling with LilyDev} before reading on. -@advanced{the @qq{Get source} button does not fetch the entire -history of the git repository, so utilities like @command{gitk} -will only be able to display the most recent additions. As you -continue to work with @command{lily-git.tcl}, the @qq{Update -source} button will take any new additions and add it to whatever -is currently in your repository's history.} +@node How to use lily-git +@unnumberedsubsec How to use lily-git -@node Daily use of lily-git.tcl -@unnumberedsubsec Daily use of @command{lily-git.tcl} +@warning{Throughout the rest of this manual, most command-line +input should be entered from @file{~/lilypond-git/}. This is +known as the @emph{top source directory} and is often referred to as +@var{$LILYPOND_GIT}}. @warning{Only work on one set of changes at once. Do not start work on any new changes until your first set has been accepted.} @@ -394,12 +450,12 @@ current state of the remote repository (at @code{git.sv.gnu.org}). -@node Compiling with lilydev -@section Compiling with lilydev +@node Compiling with LilyDev +@section Compiling with LilyDev -Lilydev is our @q{remix} of Ubuntu which contains all the +LilyDev is our @q{remix} of Ubuntu which contains all the necessary dependencies to do lilypond development; for more -information, see @rcontrib{Lilydev}. +information, see @rcontrib{LilyDev}. @subsubheading Preparing the build @@ -443,6 +499,7 @@ will likely take 2 to 10 hours. @example cd ~/lilypond-git/build/ +make make doc @end example @@ -456,7 +513,7 @@ firefox ~/lilypond-git/build/out-www/offline-root/index.html @subsubheading Installing -Don't. There is no reason to install lilypond within lilydev. +Don't. There is no reason to install lilypond within LilyDev. All development work can (and should) stay within the @file{$HOME/lilypond-git/} directory, and any personal composition or typesetting work should be done with an official GUB release. @@ -476,7 +533,7 @@ workarounds in @ref{Generating documentation}. @node Now start work! @section Now start work! -Lilydev users may now skip to the chapter which is aimed at +LilyDev users may now skip to the chapter which is aimed at their intended contributions: @itemize diff --git a/Documentation/contributor/regressions.itexi b/Documentation/contributor/regressions.itexi index 3ec39d49cf..7bca714f2c 100644 --- a/Documentation/contributor/regressions.itexi +++ b/Documentation/contributor/regressions.itexi @@ -10,6 +10,7 @@ * Finding the cause of a regression:: * Memory and coverage tests:: * MusicXML tests:: +* Grand Regression Test Checking:: @end menu @@ -98,8 +99,20 @@ verify that the regression tests have, in fact, run.} The test comparison shows all of the changes that occurred between the current release and the prior release. Each test that has a -significant difference in output is displayed, with the old -version on the left and the new version on the right. +significant (noticeable) difference in output is displayed, with +the old version on the left and the new version on the right. + +Some of the small changes can be ignored (slightly different slur +shapes, small variations in note spacing), but this is not always +the case: sometimes even the smallest change means that something +is wrong. To help in distinguishing these cases, we use bigger +staff size when small differences matter. + +Staff size 30 generally means "pay extra attention to details". +Staff size 40 (two times bigger than default size) or more means +that the regtest @strong{is} about the details. + +Staff size smaller than default doesn't mean anything. Regression tests whose output is the same for both versions are not shown in the test comparison. @@ -137,7 +150,10 @@ in lyrics or text are not found. Developers may wish to see the output of the complete regression test suite for the current version of the source repository between releases. Current source code is available; see -@ref{Working with source code}. Then you will need +@ref{Working with source code}. + +For regression testing @code{../configure} should be run with the +@code{--disable-optimising} option. Then you will need to build the LilyPond binary; see @ref{Compiling LilyPond}. Uninstalling the previous LilyPond version is not necessary, nor is @@ -152,7 +168,7 @@ make test @end example If you have a multi-core machine you may want to use the @option{-j} -option and @var{CPU_COUT} variable, as +option and @var{CPU_COUNT} variable, as described in @ref{Saving time with CPU_COUNT}. For a quad-core processor the complete command would be: @@ -179,7 +195,8 @@ than building the source code, as described in @node Regtest comparison @section Regtest comparison -Before modified code is committed to master, a regression test +Before modified code is committed to @code{master} (via @code{staging}), +a regression test comparison must be completed to ensure that the changes have not caused problems with previously working code. The comparison is made automatically upon compiling the regression test suite @@ -188,8 +205,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,14 +229,14 @@ 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 @end example For each regression test that differs between the baseline and the -changed code, a regression test entry will displayed. Ideally, +changed code, a regression test entry will be displayed. Ideally, the only changes would be the changes that you were working on. If regressions are introduced, they must be fixed before committing the code. @@ -264,6 +284,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 +447,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 @@ -446,10 +477,56 @@ The MusicXML regression tests are found at @file{input/regression/musicxml/}. The output resulting from running these tests -through @samp{muscxml2ly} followed by @samp{lilypond} is +through @samp{musicxml2ly} followed by @samp{lilypond} is available in the LilyPond documentation: @example @uref{http://lilypond.org/doc/latest/input/regression/musicxml/collated-files} @end example + +@node Grand Regression Test Checking +@section Grand Regression Test Checking + +@subheading What is this all about? + +Regression tests (usually abbreviated "regtests") is a collection +of @file{.ly} files used to check whether LilyPond is working correctly. +Example: before version 2.15.12 breve noteheads had incorrect width, +which resulted in collisions with other objects. After the issue was fixed, +a small @file{.ly} file demonstrating the problem was added to the regression +tests as a proof that the fix works. If someone will accidentally break +breve width again, we will notice this in the output of that regression test. + +@subheading How can I help? + +We ask you to help us by checking one or two regtests from time to time. +You don't need programming skills to do this, not even LilyPond skills - +just basic music notation knowledge; checking one regtest takes less than +a minute. Simply go here: + +@example +@uref{http://www.philholmes.net/lilypond/regtests/} +@end example + +@subheading Some tips on checking regtests + +@subsubheading Description text + +The description should be clear even for a music beginner. +If there are any special terms used in the description, +they all should be explained in our @rglosnamed{Top, Music Glossary} +or @rinternalsnamed{Top, Internals Reference}. +Vague descriptions (like "behaves well", "looks reasonable") shouldn't be used. + +@ignore +this may be useful for advanced regtest checking +@subsubheading Is regtest straightforward and systematic? + +Unfortunately some regtests are written poorly. A good regtest should be +straightforward: it should be obvious what it checks and how. Also, it +usually shouldn't check everything at once. For example it's a bad idea to test +accidental placement by constucting one huge chord with many suspended notes +and loads of accidentals. It's better to divide such problem into a series +of clearly separated cases. +@end ignore diff --git a/Documentation/contributor/release-work.itexi b/Documentation/contributor/release-work.itexi index 92cd87ab67..26a8223584 100644 --- a/Documentation/contributor/release-work.itexi +++ b/Documentation/contributor/release-work.itexi @@ -75,26 +75,54 @@ A @qq{minor release} means an update of @code{y} in @code{2.x.y}. @item Switch to the release branch, get changes, prep release -announcement: +announcement. This requires a clean index and work tree. If the +checkout displays modified files, you might want to run @code{git reset +--hard} before continuing. @example -git checkout release/unstable +git fetch +git checkout origin/release/unstable git merge origin +make -C $LILYPOND_BUILD_DIR po-replace +mv $LILYPOND_BUILD_DIR/po/lilypond.pot po/ vi Documentation/web/news-front.itexi Documentation/web/news.itexi @end example @item -Commit, push, switch back to master: +Commit, push, switch back to master (or wherever else): @example +git commit -m "PO: update template." po/lilypond.pot git commit -m "Release: update news." Documentation/web/ -git push origin +git push origin HEAD:release/unstable +git checkout master @end example @item 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 @@ -159,11 +187,12 @@ make lilypond-upload \ @enumerate -@item Switch back to master and get the updated news: +@item Update the current staging branch with the current news: @example -git checkout master -git merge release/unstable +git fetch +git checkout origin/staging +git merge origin/release/unstable @end example @item Update @file{VERSION} in lilypond git and upload changes: @@ -186,9 +215,19 @@ STABLE_VERSION = what's online (probably no change here) @example git commit -m "Release: bump version." VERSION -git push origin +git push origin HEAD:staging +@end example + +If the push fails with a message like + +@example + ! [rejected] HEAD -> staging (non-fast-forward) @end example +@noindent +it means that somebody else updated the staging branch while you were +preparing your change. In that case, you need to restart the Post +Release process. Otherwise, proceed: @item (for now) do a @code{make doc} and manually upload: @@ -198,7 +237,7 @@ git push origin BUILD_DIR=$HOME/src/build-lilypond PICS=$BUILD_DIR/Documentation/pictures/out-www/ -EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/out-www/ +EXAMPLES=$BUILD_DIR/Documentation/ly-examples/out-www/ cd $BUILD_DIR rsync -a $PICS graham@@lilypond.org:media/pictures @@ -273,7 +312,37 @@ various websites, so be brief. Run convert-ly on all files, bump parser minimum version. @item -Make FTP directories on lilypond.org +Update lilypond.pot: + +@example +make -C $LILYPOND_BUILD_DIR po-replace +mv $LILYPOND_BUILD_DIR/po/lilypond.pot po/ +@end example + +@item +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: @@ -313,8 +382,8 @@ Disallow: /doc/v2.CURRENT-DEVELOPMENT/ @itemize @item -submit pots for translation: send url of tarball to -translation@@iro.umontreal.ca, mentioning lilypond-VERSION.pot +submit po template for translation: send url of tarball to +coordinator@@translationproject.org, mentioning lilypond-VERSION.pot @item update links to distros providing lilypond packages? link in: @@ -448,7 +517,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 diff --git a/Documentation/contributor/source-code.itexi b/Documentation/contributor/source-code.itexi index 79833e13d9..d3f4f3a11b 100644 --- a/Documentation/contributor/source-code.itexi +++ b/Documentation/contributor/source-code.itexi @@ -5,7 +5,7 @@ @chapter Working with source code @warning{New contributors should read @ref{Quick start}, and in -particular @ref{Using lily-git}, instead of this chapter.} +particular @ref{lily-git}, instead of this chapter.} Advanced contributors will find this material quite useful, particularly if they are working on major new features. @@ -29,7 +29,7 @@ contributors. If you are comfortable with the command-line, then skip ahead to @ref{Starting with Git}. @warning{These instructions are only for people who are @emph{not} -using @ref{Lilydev}.} +using @ref{LilyDev}.} @c there's some duplication in this section with stuff covered in @c Quick Start, but moving it into a macro inside included/ would @@ -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 @@ -82,7 +82,7 @@ Click on the @qq{Get source} button. This will create a directory called @file{lilypond-git/} within your home directory, and will download the source code into that -directory (around 55Mb). When the process is finished, the +directory (around 150@tie{}Mb). When the process is finished, the @qq{Command output} window will display @qq{Done}, and the button label will change to say @qq{Update source}. @@ -96,14 +96,7 @@ files. input should be entered from @file{~/lilypond-git/}. This is referred to as the @emph{top source directory}.} -Further instructions are in @ref{Daily use of lily-git.tcl}. - -@advanced{the @qq{Get source} button does not fetch the entire -history of the git repository, so utilities like @command{gitk} -will only be able to display the most recent additions. As you -continue to work with @command{lily-git.tcl}, the @qq{Update -source} button will take any new additions and add it to whatever -is currently in your repository's history.} +Further instructions are in @ref{How to use lily-git}. @node Starting with Git @@ -118,6 +111,8 @@ multiple projects concurrently. @menu * Setting up:: +* Git for the impatient:: +* Other repositories:: * Downloading remote branches:: @end menu @@ -125,10 +120,6 @@ multiple projects concurrently. @node Setting up @subsection Setting up - -TODO: Remove this note if incorporating Windows instructions -throughout this section: - @warning{These instructions assume that you are using the command-line version of Git 1.5 or higher. Windows users should skip to @ref{Git on Windows}.} @@ -143,10 +134,9 @@ skip to @ref{Git on Windows}.} @node Installing Git @unnumberedsubsubsec Installing Git - If you are using a Unix-based machine, the easiest way to download and install Git is through a package manager such as @command{rpm} -or @command{apt-get}---the installation is generally automatic. +or @command{apt-get} -- the installation is generally automatic. The only required package is (usually) called @command{git-core}, although some of the auxiliary @command{git@var{*}} packages are also useful (such as @command{gitk}). @@ -155,25 +145,19 @@ Alternatively, you can visit the Git website (@uref{http://git-scm.com/}) for downloadable binaries and tarballs. -TODO: add Windows installation instructions (or @@ref@{Git on -Windows@}). - @node Initializing a repository @unnumberedsubsubsec Initializing a repository - -Once Git is installed, you'll need to create a new directory where -your initial repository will be stored (the example below uses -@file{~/lilypond-git/}, where @code{~} represents your home -directory). Run @command{git@tie{}init} from within the new -directory to initialize an empty repository: +Once Git is installed, get a copy of the source code: @example -mkdir ~/lilypond-git/; cd ~/lilypond-git/ -git init +git clone git://git.sv.gnu.org/lilypond.git ~/lilypond-git @end example +The above command will put the it in @file{~/lilypond-git}, where +@code{~} represents your home directory. + @subsubheading Technical details This creates (within the @file{~/lilypond-git/} directory) a @@ -190,13 +174,13 @@ input should be entered from the top directory of the Git repository being discussed (eg. @file{~/lilypond-git/}). This is referred to as the @emph{top source directory}.} -Before downloading a copy of the main LilyPond repository, you +Before working with the copy of the main LilyPond repository, you should configure some basic settings with the @command{git@tie{}config} command. Git allows you to set both global and repository-specific options. To configure settings that affect all repositories, use the -@command{--global} command line option. For example, the first +@option{--global} command line option. For example, the first two options that you should always set are your @var{name} and @var{email}, since Git needs these to keep track of commit authors: @@ -224,8 +208,18 @@ change the default editor to @command{nano}, enter: git config --global core.editor @var{nano} @end example -TODO: Add instructions for changing the editor on Windows, which -is a little different, I think. -mp +Finally, and in some ways most importantly, let's make sure that +we know what branch we're on. If you're not using LilyDev, add +this to your @file{~/.bashrc}: + +@verbatim +export PS1="\u@\h \w\$(__git_ps1)$ " +@end verbatim + +If you are not using LilyDev, you may need to install the +additional @code{git-completion} package, but it is definitely +worth it. + @subsubheading Technical details @@ -247,7 +241,7 @@ by the above commands would look like this: @end example Using the @command{git@tie{}config} command @emph{without} the -@command{--global} option configures repository-specific settings, +@option{--global} option configures repository-specific settings, which are stored in the file @file{.git/config}. This file is created when a repository is initialized (using @command{git@tie{}init}), and by default contains these lines: @@ -266,9 +260,345 @@ setting any now. Specific recommendations will be mentioned later in this manual. +@node Git for the impatient +@subsection Git for the impatient + +@advanced{The intent of this subsection is to get you working on lilypond as +soon as possible. If you want to learn about git, go read +@ref{Other Git documentation}. +@* +Also, these instructions are designed to eliminate the most common +problems we have found in using git. If you already know git and +have a different way of working, great! Feel free to ignore the +advice in this subsection.} + + +Ok, so you've been using @command{lily-git.tcl} for a while, but +it's time to take the next step. Since our review process delays +patches by 60-120 hours, and you want to be able to work on other +stuff while your previous work is getting reviewed, you're going +to use @strong{branches}. + +You can think of a branch as being a separate copy of the source +code. But don't worry about it. + +@subsubheading Start work: make a new branch + +Let's pretend you want to add a section to the Contributor's Guide +about using branches. + +Start by updating the repository, then making a new branch. Call +the branch anything you want as long as the name starts with +@code{dev/}. Branch names that don't begin with @code{dev/} are +reserved for special things in lilypond. + +@example +git checkout master +git pull -r origin master +git branch dev/cg +@end example + +@subsubheading Switch to that branch + +Nothing has happened to the files yet. Let's change into the new +branch. You can think of this as @qq{loading a file}, although in +this case it's really @qq{loading a directory and subdirectories +full of files}. + +@example +git checkout dev/cg +@end example + +Your prompt now shows you that you're on the other branch: + +@example +gperciva@@LilyDev:~/lilypond-git (dev/cg)$ +@end example + +To be able to manage multiple lilypond issues at once, you'll need to switch +branches. You should have each lilypond issue on a separate branch. +Switching branches is easy: + +@example +git checkout master +git checkout origin/staging +git checkout origin/release/unstable +git checkout dev/cg +@end example + +Branches that begin with @code{origin/} are part of the remote repository, +rather than your local repository, so when you check them out you get a +temporary local branch. You should never make changes directly on a +branch beginning with @code{origin/}. You get changes into the remote +repository by making them in local branches, and then pushing them to +@code{origin/staging} as described below. + +@subsubheading Make your changes + +Edit files, then commit them. + +@example +git commit -a +@end example + + +Remember how I said that switching to a branch was like +@qq{loading a directory}? Well, you've just @qq{saved a +directory}, so that you can @qq{load} it later. + +@advanced{If you have used @command{cvs} or @command{svn}, you may +be very confused: those programs use @qq{commit} to mean +@qq{upload my changes to the shared source repository}. +Unfortunately, just to be different, @w{@command{git commit}} +means @qq{save my changes to the files}.} + +When you create a new file, you need to add it to git, then commit it: + +@example +git add input/regression/avoid-crash-on-condition.ly +git commit -a +@end example + + +Edit more files. Commit them again. Edit yet more files, commit +them again. Go eat dinner. Switch to @code{master} so you can +play with the latest changes from other developers. Switch back +to your branch and edit some more. Commit those changes. + +At this stage, don't worry about how many commits you have. + + +@subsubheading Save commits to external files + +Branches are nerve-wracking until you get used to them. You can +save your hard work as individual @file{.patch} files. Be sure to +commit your changes first. + +@example +git commit -a +git format-patch master +@end example + +I personally have between 4 and 20 of those files saved in a +special folder at any point in time. Git experts might laugh as +that behavior, but I feel a @emph{lot} better knowing that I've +got those backups. + + +@subsubheading Prepare your branch for review + +After committing, you can update your branch with the latest master: + +@example +git commit -a +git checkout master +git pull -r origin master +git checkout dev/cg +git rebase master +@end example + + +Due to the speed of lilypond development, sometimes +@code{master} has changed so much that your branch can no +longer be applied to it. In that happens, you will have a merge +conflict. Stop for a moment to either cry or have a stiff drink, +then proceed to @ref{Merge conflicts}. + + +@subsubheading Upload your branch + +Finally, you're finished your changes. Time to upload for review. +Make sure that you're on your branch, then upload: + +@example +git checkout dev/cg +git-cl upload master +@end example + + +@subsubheading Wait for reviews + +While you're waiting for a countdown and reviews, go back to +master, make a @code{dev/doc-beams} branch, and start adding doc +suggestions from issue 12345 from the tracker. Or make a +@code{dev/page-breaks} and fix bug in page breaking. Or whatever. +Don't worry, your @code{dev/cg} is safe. + + +@subsubheading Combining commits (optional unless you have broken commits) + +Does the history of your branch look good? + +@example +gitk +@end example + +If you have a lot of commits on your branch, you might want to +combine some of them. Alternately, you may like your commits, but +want to edit the commit messages. + +@example +git rebase -i master +@end example + +Follow instructions on the screen. + +@warning{This step gives you the power to completely lose your +work. Make a backup of your commits by saving them to +@file{.patch} files before playing with this. If you do lose +your work, don't despair. You can get it back by using @code{git reflog}. +The use of @code{git reflog} is not covered here.} + +@warning{If any of the commits on your branch represent partial work that will +not pass @var{make && make doc}, you @strong{must} squash these +commits into a working commit. Otherwise, your push will break staging +and will not be able to be merged to master. In general, you will +be safer to have one commit per push.} + + +@subsubheading Push to staging + +When you've got the coveted @code{Patch-push} status, time to +prepare your upload: + +@example +git fetch +git rebase origin/staging dev/cg~0 +gitk HEAD +@end example + +@warning{Do not skip the @command{gitk} step; a quick 5-second +check of the visual history can save a great deal of frustration +later on. You should see a set of your commits that are ahead of +@code{origin/staging}, with no label for the top commit -- only a +SHA1 id.} + +@warning{If @code{origin/staging} and @code{origin/master} are the +same commit, your branch (@code{dev/cg} in the example) will also +be at the top of the @code{gitk} tree. This is normal.} + +If everything looks good, push it: + +@example +git push origin HEAD:staging +@end example + +Then change back to your working branch: + +@example +git checkout dev/cg +@end example + +@warning{It is a best practice to avoid rebasing any of your branches +to @code{origin/staging}. If @code{origin/staging} is broken, it +will be deleted and rebuilt. If you have rebased one of your branches +to @code{origin/staging}, the broken commits can end up in your branch. +The commands given above do the rebase on a temporary branch, and avoid +changing your working branch.} + + +@subsubheading Delete your branch (safe) + +After a few hours, if there's nothing wrong with your branch, it +should be automatically moved to @code{origin/master}. Update, +then try removing your branch: + +@example +git checkout master +git pull -r origin master +git branch -d dev/cg +@end example + +The last command will fail if the contents of @code{dev/cg} are +not present in @code{origin/master}. + + +@subsubheading Delete your branch (UNSAFE) + +@c don't give explicit commands here -- this is too dangerous to copy and paste +Sometimes everything goes wrong. If you want to remove a branch even though +it will cause your work to be lost (that is, if the contents of @code{dev/cg} +are @strong{not} present in master), follow the instructions in @qq{Delete +your branch (safe)}, but replace the @code{-d} on the final line with +a @code{-D}. + + +@node Other repositories +@subsection Other repositories + +We have a few other code repositories. + +@menu +* lilypond-extra:: +* Grand Unified Builder (GUB):: +* lilypad:: +* yet more repositories:: +@end menu + +@node lilypond-extra +@unnumberedsubsubsec lilypond-extra + +There is a separate repository for general administrative scripts, +as well as pictures and media files for the website. People +interested in working on the website should download this +repository, and set their @code{$LILYPOND_WEB_MEDIA_GIT} +environment variable to point to that repository. + +@example +@uref{https://github.com/gperciva/lilypond-extra} +@end example + +To configure an environment variable in bash (the default for most +GNU/Linux distributions), + +@example +export LILYPOND_WEB_MEDIA_GIT=$HOME/dir/of/lilypond-extra/ +@end example + +@node Grand Unified Builder (GUB) +@unnumberedsubsubsec Grand Unified Builder (GUB) + +Another item of interest might be the Grand Unified Builder, our +cross-platform building tool. Since it is used by other projects as +well, it is not stored in our gub repository. For more info, see +@uref{http://lilypond.org/gub}. + +There are two locations for this repository: the version being used to +build lilypond, which is at + +@example +@uref{http://github.com/gperciva/gub} +@end example + +and the original version by Jan Nieuwenhuizen, kept at + +@example +@uref{http://github.com/janneke/gub} +@end example + + +@node lilypad +@unnumberedsubsubsec lilypad + +Our binary releases on MacOS X and Windows contain a lightweight +text editor. This code is here: + +@example +https://github.com/gperciva/lilypad +@end example + + +@node yet more repositories +@unnumberedsubsubsec yet more repositories + +There are a few other repositories floating around, which will +hopefully be documented in the near future. + + @node Downloading remote branches @subsection Downloading remote branches +@warning{contains obsolete + misleading info} @menu * Organization of remote branches:: @@ -294,13 +624,13 @@ development releases), the documentation (and its translations), and the website. Generally, the @code{master} branch is expected to compile successfully. -The @code{lilypond/translation} branch is a side branch that +The @code{translation} branch is a side branch that allows translators to work without needing to worry about compilation problems. Periodically, the Translation Meister (after verifying that it doesn't break compilation), will -@emph{merge} this branch back into @code{master} to incorporate +@emph{merge} this branch into @code{staging} to incorporate recent translations. Similarly, the @code{master} branch is -usually merged into the @code{lilypond/translation} branch after +usually merged into the @code{translation} branch after significant changes to the English documentation. See @ref{Translating the documentation} for details. @@ -333,6 +663,8 @@ only be used as a last resort. @node Downloading individual branches @unnumberedsubsubsec Downloading individual branches +@warning{obsolete, should be deleted!} + Once you have initialized an empty Git repository on your system (see @ref{Initializing a repository}), you can download a remote @@ -346,11 +678,11 @@ git remote add -ft master -m master \ origin git://git.sv.gnu.org/lilypond.git/ @end example -To download the @code{lilypond/translation} branch, enter: +To download the @code{translation} branch, enter: @example -git remote add -ft lilypond/translation -m \ - lilypond/translation origin git://git.sv.gnu.org/lilypond.git/ +git remote add -ft translation -m \ + translation origin git://git.sv.gnu.org/lilypond.git/ @end example The @command{git@tie{}remote@tie{}add} process could take up to @@ -388,7 +720,7 @@ git checkout -b @var{branch} origin/@var{branch} @noindent where @code{@var{branch}} is the name of your tracking branch, -either @code{master} or @code{lilypond/translation}. +either @code{master} or @code{translation}. Git will issue some warnings; this is normal: @@ -445,13 +777,10 @@ branch. @item @code{stable/XYZ}: The branches are kept for archival reasons. -@end itemize +@item @code{archive/XYZ}: +The branches are kept for archival reasons. -Another item of interest might be the Grand Unified Builder, our -cross-platform building tool. Since it is used by projects as -well, it is not stored in our gub repository. For more info, see -@uref{http://lilypond.org/gub}. The git location is -@uref{http://github.com/janneke/gub}. +@end itemize @node Basic Git procedures @@ -522,7 +851,7 @@ git pull # recommended for translators @end example If you're tracking the remote @code{master} branch, you should add -the @code{-r} option (short for @code{--rebase}) to keep commits +the @option{-r} option (short for @option{--rebase}) to keep commits on your local branch current: @example @@ -530,7 +859,7 @@ git pull -r # use with caution when translating @end example If you don't edit translated documentation and don't want to type -@code{-r} every time, configure the master branch to rebase by +@option{-r} every time, configure the master branch to rebase by default with this command: @example @@ -575,7 +904,7 @@ changed committishes in the head of translated files using commits you have not yet pushed to @code{git.sv.gnu.org}, please do not rebase. If you want to avoid wondering whether you should rebase each time you pull, please always use committishes from master -and/or lilypond/translation branch on @code{git.sv.gnu.org}, which +and/or translation branch on @code{git.sv.gnu.org}, which in particular implies that you must push your changes to documentation except committishes updates (possibly after having rebased), then update the committishes and push them.} @@ -629,7 +958,7 @@ git branch -d @var{name} @end example Git will ask you for confirmation if it sees that data would be -lost by deleting the branch. Use @code{-D} instead of @code{-d} +lost by deleting the branch. Use @option{-D} instead of @option{-d} to bypass this. Note that you cannot delete a branch if it is currently checked out. @@ -695,12 +1024,11 @@ git merge @var{foo} If any conflict happens, see @ref{Resolving conflicts}. -There are common usage cases for merging: as a translator, you -will often want to merge @code{master} into -@code{lilypond/translation}; on the other hand, the Translations -meister wants to merge @code{lilypond/translation} into -@code{master} whenever he has checked that -@code{lilypond/translation} builds successfully. +There are common usage cases for merging: as a translator, you will +often want the Translations meister to merge @code{master} into +@code{translation}; on the other hand, the Translations meister wants +to merge @code{translation} into @code{staging} whenever he has +checked that @code{translation} builds successfully. @node Commits and patches @@ -801,7 +1129,7 @@ git commit -a @end example @noindent -The @code{-a} is short for @code{--all} which includes modified +The @option{-a} is short for @option{--all} which includes modified and deleted files, but only those newly created files that have previously been added. @@ -873,7 +1201,7 @@ We prefer it if you follow the instructions in alternate method here. You should always run @command{git@tie{}pull@tie{}-r} (translators -should leave off the @code{-r}) before doing this to ensure that +should leave off the @option{-r}) before doing this to ensure that your patches are as current as possible. Once you have made one or more commits in your local repository, @@ -924,14 +1252,28 @@ LilyDev users should skip over these @q{install} instructions. Install @command{git-cl} by entering: @example -git clone git://neugierig.org/git-cl.git +git clone https://github.com/gperciva/git-cl.git +@end example + +If that command fails for some reason, try this instead: + +@example +git clone git://github.com/gperciva/git-cl.git @end example @item -Add the @file{git-cl/} directory to your PATH, or create a -symbolic link to the @command{git-cl} and @command{upload.py} -scripts in one of your PATH directories (such as -@file{$HOME/bin}). +Add the @file{git-cl/} directory to your PATH, +or create a symbolic link to the @command{git-cl} +and @command{upload.py} scripts in one of your PATH +directories (such as @file{$HOME/bin}). + +In Ubuntu (and LilyDev), you can add directories to PATH +by adding this line to a hidden file @file{.bashrc}, +located in your home directory: + +@example +PATH=~/type-here-directory-containing-git-cl:"$@{PATH@}" +@end example @end enumerate @@ -941,9 +1283,12 @@ LilyDev users should perform these @q{configuration} instructions. @enumerate @item -You must have a gmail account; please create one if you do not +You must have a google account; please create one if you do not have one already. +Note that a google account does not need to be a gmail account; you can +use any email address for your google account when you sign up. + @item Move into the top source directory and then configure @command{git cl} with the following commands. If you do not understand any @@ -980,10 +1325,18 @@ git pull -r git cl upload origin/master @end example +@c Mention staging here? If you have git push ability, make sure that you @emph{remove} your patch (with @command{git rebase} or @command{git reset}) before pushing other stuff. +@c don't make this one an @example; we don't want to make it easy +@c for people to use this accidently +Notifications of patches are automatically added to our issue +tracker to reduce the chance of patches getting lost. To suppress +this (not recommended), add the @code{-n / --no-code-issue} +option. + @item @strong{Separate branch}: (complicated option) @@ -1018,9 +1371,9 @@ patch set will be posted to Rietveld, and you will be given a URL for your patch. @warning{Some installations of git-cl fail when uploading a patch -set that includes a .scm file. When this happens, it can -generally be fixed by editing the file @file{/etc/mime.types}. -Add a line to this file containing @code{text/x-script.scheme scm}.} +with certain filename extensions. If this happens, it can +generally be fixed by editing the list of exceptions at top of +@file{git-cl.py}.} @subsubheading Announcing your patch set @@ -1060,6 +1413,23 @@ running: git cl issue 0 @end example +@subsubheading Wait for a countdown + +Your patch will be available for reviews for the next few hours or +days. Three times a week, patches with no known problems are +gathered into a @qq{patch countdown} and their status changed to +@code{patch-countdown}. The countdown is a 48-hour waiting period +in which any final reviews or complaints should be made. + +During the countdown, your patch may be set to +@code{patch-needs_work}, indicating that you should fix something +(or at least discuss why the patch needs no modification). If no +problems are found, the patch will be set to @code{patch-push}. + +Once a patch has @code{patch-push}, it should be sent to your +mentor for uploading. If you have git push ability, look at +@ref{Pushing to staging}. + @node Advanced Git procedures @section Advanced Git procedures @@ -1071,7 +1441,7 @@ in learning more about git.} It is possible to work with several branches on the same local Git repository; this is especially useful for translators who may have -to deal with both @code{lilypond/translation} and a stable branch, +to deal with both @code{translation} and a stable branch, e.g. @code{stable/2.12}. Some Git commands are introduced first, then a workflow with @@ -1079,6 +1449,7 @@ several Git branches of LilyPond source code is presented. @menu +* Merge conflicts:: * Advanced Git concepts:: * Resolving conflicts:: * Reverting all local changes:: @@ -1088,9 +1459,17 @@ several Git branches of LilyPond source code is presented. * Sending and receiving patches via email:: * Cleaning up multiple patches:: * Commit access:: +* Pushing to staging:: @end menu +@node Merge conflicts +@subsection Merge conflicts + +To be filled in later, and/or moved to a different section. I +just wanted to make sure that I had a stub ready somewhere. + + @node Advanced Git concepts @subsection Advanced Git concepts @@ -1108,7 +1487,7 @@ git pull git://git.sv.gnu.org/lilypond.git/ @var{branch}:origin/@var{branch} @noindent where @code{@var{branch}} is typically @code{master} or -@code{lilypond/translation}; if you do not know or remember, see +@code{translation}; if you do not know or remember, see @ref{Downloading remote branches} to remember which commands you issued or which source code you wanted to get. @@ -1194,8 +1573,8 @@ any changes you have made! Sometimes git will become hopelessly confused, and you just want to get back to a known, stable state. This command destroys any -local changes you have made, but at least you get back to the -current online version: +local changes you have made in the currently checked-out branch, +but at least you get back to the current online version: @example git reset --hard origin/master @@ -1238,7 +1617,7 @@ current branch. For example, if your current branch is @subsubheading Local clones, or having several working trees If you play with several Git branches, e.g. @code{master}, -@code{lilypond/translation}, @code{stable/2.12}), you may want to +@code{translation}, @code{stable/2.12}), you may want to have one source and build tree for each branch; this is possible with subdirectories of your local Git repository, used as local cloned subrepositories. To create a local clone for the branch @@ -1309,10 +1688,10 @@ git am @var{patch} Patches created without @code{git@tie{}format-patch} can be applied in two steps. The first step is to apply the patch to the -working tree: +working tree and the index: @example -git apply @var{patch} +git apply --index @var{patch} @end example @noindent @@ -1320,9 +1699,16 @@ The second step is to commit the changes and give credit to the author of the patch. This can be done with the following command: @example -git commit -a --author="@var{John Smith} <@var{john@@example.com}>" +git commit --author="@var{John Smith} <@var{john@@example.com}>" @end example +Please note that using the @code{--index} option for patching is quite +important here and @emph{cannot} reliably be replaced by using the +@code{-a} option when committing: that would only commit files from the +working tree that are already registered with git, so every file that +the patch actually @emph{adds}, like a regtest for a fixed bug, would +get lost. For the same reason, you should not use the git-independent +@samp{patch} program for applying patches. @node Sending and receiving patches via email @subsection Sending and receiving patches via email @@ -1374,7 +1760,6 @@ remove those commits.} @node Commit access @subsection Commit access - Most contributors are not able to commit patches directly to the main repository---only members of the LilyPond development team have @emph{commit access}. If you are a contributor and are @@ -1422,15 +1807,15 @@ Contributor of} on your @qq{My Group Membership} page. @item -Generate an SSH @q{dsa} key pair. Enter the following at the +Generate an SSH @q{rsa} key pair. Enter the following at the command prompt: @example -ssh-keygen -t dsa +ssh-keygen -t rsa @end example When prompted for a location to save the key, press to -accept the default location (@file{~/.ssh/id_dsa}). +accept the default location (@file{~/.ssh/id_rsa}). Next you are asked to enter an optional passphrase. On most systems, if you use a passphrase, you will likely be prompted for @@ -1442,7 +1827,7 @@ though you may find it tedious to keep re-entering it. You can change/enable/disable your passphrase at any time with: @example -ssh-keygen -f ~/.ssh/id_dsa -p +ssh-keygen -f ~/.ssh/id_rsa -p @end example Note that the GNOME desktop has a feature which stores your @@ -1457,14 +1842,14 @@ gconftool-2 --set -t bool \ @end example After setting up your passphrase, your private key is saved as -@file{~/.ssh/id_dsa} and your public key is saved as -@file{~/.ssh/id_dsa.pub}. +@file{~/.ssh/id_rsa} and your public key is saved as +@file{~/.ssh/id_rsa.pub}. @item -Register your public SSH @q{dsa} key with Savannah. From the +Register your public SSH @q{rsa} key with Savannah. From the @qq{My Account Configuration} page, click on @qq{Edit SSH Keys}, -then paste the contents of your @file{~/.ssh/id_dsa.pub} file into +then paste the contents of your @file{~/.ssh/id_rsa.pub} file into one of the @qq{Authorized keys} text fields, and click @qq{Update}. @@ -1485,7 +1870,7 @@ git config remote.origin.url \ @end example @noindent -where @var{user} is your username on Savannah. +replacing @var{user} with your Savannah username. @item @@ -1541,7 +1926,7 @@ If @command{git@tie{}pull@tie{}--verbose} succeeds, the output will include a @q{From} line that shows @q{ssh} as the protocol: @example -From ssh://@var{user}@@git.sv.gnu.org/srv/git/lilypond +From ssh://git.sv.gnu.org/srv/git/lilypond @end example If the protocol shown is not @q{ssh}, check that you configured @@ -1551,6 +1936,9 @@ Git properly in the previous step. @item Test your commit access with a dry run: +@warning{Do not push directly to master; instead, push to staging. +See @ref{Pushing to staging}.} + @example git push --dry-run --verbose @end example @@ -1566,9 +1954,17 @@ git config push.default matching @noindent Then @code{git@tie{}push} should work as before. For more details, consult the @code{git@tie{}push} man page. -@end enumerate +@item +Repeat the steps from generating an RSA key through to testing +your commit access, for each machine from which you will be +making commits, or you may simply copy the files from your +local @file{~/.ssh} folder to the same folder on the other +machine. + +@end enumerate + @subsubheading Technical details @itemize @@ -1634,9 +2030,75 @@ broadband may use a slightly smaller MTU for efficient transmission over ATM. If this problem is encountered a possible work-around is to set the MTU in the local router to 1500. + +@node Pushing to staging +@subsection Pushing to staging + +Do not push directly to the git @code{master} branch. Instead, +push to @code{staging}. + +You will not see your patch on @code{origin/master} until some +automatic tests have been run. These tests are run every couple +of hours; please wait at least 12 hours before wondering if your +patch has been lost. Note that you can check the commits on +@code{origin/staging} by looking at the git web interface on +savannah. + +It may happen occasionally that the staging branch breaks automated +testing. In this case the automatic move of staging material to +master gets halted in order to avoid broken material entering master. +This is a safety net. Please do not try breaking out from it by +adding fixes on top of staging: in that case the whole sequence will +end up in master after all, defeating the purpose of the system. The +proper fix usually involves rewriting the staging branch and is best +left to core developers after discussion on the developer list. + +@subsubheading If your work is in a patch file + +Assuming that your patch is in a file called +@file{0001-my-patch.patch}, and you are currently on git master, +do: + +@example +git checkout staging +git pull -r +git am 0001-my-patch.patch +gitk +git push origin staging +git checkout master +@end example + +@warning{Do not skip the @command{gitk} step; a quick 5-second +check of the visual history can save a great deal of frustration +later on. You should only see that @command{staging} is only 1 +commit ahead of @code{origin/staging}.} + +@subsubheading If your work is in a branch + +If you are working on branches and your work in is +@code{my_branch_name}, then do: + +@example +git checkout staging +git pull -r +git merge my_branch_name +gitk +git push origin staging +@end example + +@warning{Do not skip the @command{gitk} step; a quick 5-second +check of the visual history can save a great deal of frustration +later on. You should see that @code{staging} is only ahead of +@code{origin/staging} by the commits from your branch.} + + + @node Git on Windows @section Git on Windows +@warning{We heavily recommend that development be done with our +virtual machine @ref{LilyDev}.} + @c Some of this may duplicate stuff in other sections @c But it is probably best for windows users to have it all together @c If necessary, clear this up later -td @@ -2013,5 +2475,10 @@ More in-depth tutorials: @uref{http://git-scm.com/documentation} @item Book about git: @uref{http://progit.org/,Pro Git} + +@item +Github help: @uref{http://help.github.com/} +(very highly recommended by Graham) + @end itemize diff --git a/Documentation/contributor/website-work.itexi b/Documentation/contributor/website-work.itexi index bb8c19fe94..3136c1b144 100644 --- a/Documentation/contributor/website-work.itexi +++ b/Documentation/contributor/website-work.itexi @@ -58,111 +58,138 @@ existing website texinfo files. @node Uploading and security @section Uploading and security -The website is generated hourly by user @code{graham} the host -@code{lilypond.org}. For security reasons, we do not use the -makefiles and scripts directly from git; copies of the relevant -scripts are examined and copied to -@code{~graham/lilypond/trusted-scripts/} +@subheading Overall idea -@subheading Initial setup +To reduce the CPU burden on the shared host (as well as some +security concerns), we do not compile all of LilyPond. The +website build process runs @code{texi2html}, but all media files +(be they graphical @code{lilypond} output, photos of people, or +pdfs) are copied from the @code{$LILYPOND_WEB_MEDIA_GIT} +repository. -You should symlink your own @file{~/lilypond/} to -@file{~graham/lilypond/} +All scripts and makefiles used for the website build are run from +a @qq{trusted} copy. Any modification to those files in git needs +a human to review the changes (after they have been made in git) +before they are used on the server. -If this directory does not exist, make it. Git master should go -in @file{~/lilypond/lilypond-git/} but make sure you enable: -@example -git config core.filemode false -@end example +@subheading Building the website (quick local) -If you have created any files in @file{~graham/lilypond/} then -please run: +Initial setup: make sure that you have the environment variables +@code{$LILYPOND_GIT}, @code{$LILYPOND_BUILD_DIR} and +@code{$LILYPOND_WEB_MEDIA_GIT} set up correctly. For more +information, see @ref{Environment variables}. + +Once that is done, @example -chgrp lilypond ~graham/lilypond/ -R -chmod 775 ~graham/lilypond/ -R +cd $LILYPOND_BUILD_DIR +make website @end example -To reduce the CPU burden on the shared host (as well as some -security concerns), the @file{Documentation/pictures/} and -@file{Documentation/web/ly-examples/} directories are -@strong{not} compiled. You need to upload them, and if they ever -change, a user in the @code{lilypond} group must upload them to -@file{~graham/lilypond/media} on the host. +The website is in @file{out-website/website/index.html}. -Upload latest pictures/ and ly-examples/ (local script): -@warning{You may need to change a number of items in the below -script.} +@subheading Building the website (exactly as on the server) -@verbatim -### upload-lily-web-media.sh -#!/bin/sh -BUILD_DIR=$HOME/src/build-lilypond - -PICS=$BUILD_DIR/Documentation/pictures/out-www/ -EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/out-www/ +@subsubheading Setting up (exactly as on the server) -cd $BUILD_DIR -rsync -a $PICS graham@lilypond.org:lilypond/media/pictures -rsync -a $EXAMPLES graham@lilypond.org:lilypond/media/ly-examples -@end verbatim +Initial setup: you still need @code{$LILYPOND_GIT} and +@code{$LILYPOND_WEB_MEDIA_GIT}. +Once that's done, create: +@example +mkdir -p $HOME/lilypond/ +mkdir -p $HOME/lilypond/bin/ +mkdir -p $HOME/lilypond/cron/ +mkdir -p $HOME/lilypond/trusted-scripts/ +@end example -@subheading Normal maintenance +The add these files to @file{$HOME/lilypond/bin/}: -Get latest source code: +Update git repositories: +@smallexample @verbatim ### update-git.sh #!/bin/sh -cd $HOME/lilypond/lilypond-git +cd $LILYPOND_GIT +git fetch origin +git merge origin/master +cd $LILYPOND_WEB_MEDIA_GIT git fetch origin git merge origin/master @end verbatim +@end smallexample Check for any updates to trusted scripts / files: +@smallexample @verbatim ### check-git.sh #!/bin/sh -GIT=$HOME/lilypond/lilypond-git DEST=$HOME/lilypond/trusted-scripts -diff -u $DEST/website.make $GIT/make/website.make -diff -u $DEST/lilypond-texi2html.init $GIT/Documentation/lilypond-texi2html.init -diff -u $DEST/extract_texi_filenames.py $GIT/scripts/build/extract_texi_filenames.py -diff -u $DEST/create-version-itexi.py $GIT/scripts/build/create-version-itexi.py -diff -u $DEST/create-weblinks-itexi.py $GIT/scripts/build/create-weblinks-itexi.py -diff -u $DEST/mass-link.py $GIT/scripts/build/mass-link.py -diff -u $DEST/website_post.py $GIT/scripts/build/website_post.py -diff -u $DEST/bib2texi.py $GIT/scripts/build/bib2texi.py -diff -u $DEST/lilypond.org.htaccess $GIT/Documentation/web/server/lilypond.org.htaccess -diff -u $DEST/website-dir.htaccess $GIT/Documentation/web/server/website-dir.htaccess +diff -u $DEST/website.make \ + $LILYPOND_GIT/make/website.make +diff -u $DEST/lilypond-texi2html.init \ + $LILYPOND_GIT/Documentation/lilypond-texi2html.init +diff -u $DEST/extract_texi_filenames.py \ + $LILYPOND_GIT/scripts/build/extract_texi_filenames.py +diff -u $DEST/create-version-itexi.py \ + $LILYPOND_GIT/scripts/build/create-version-itexi.py +diff -u $DEST/create-weblinks-itexi.py \ + $LILYPOND_GIT/scripts/build/create-weblinks-itexi.py +diff -u $DEST/mass-link.py \ + $LILYPOND_GIT/scripts/build/mass-link.py +diff -u $DEST/website_post.py \ + $LILYPOND_GIT/scripts/build/website_post.py +diff -u $DEST/bib2texi.py \ + $LILYPOND_GIT/scripts/build/bib2texi.py +diff -u $DEST/langdefs.py \ + $LILYPOND_GIT/python/langdefs.py +diff -u $DEST/lilypond.org.htaccess \ + $LILYPOND_GIT/Documentation/web/server/lilypond.org.htaccess +diff -u $DEST/website-dir.htaccess \ + $LILYPOND_GIT/Documentation/web/server/website-dir.htaccess @end verbatim +@end smallexample If the changes look ok, make them trusted: +@smallexample @verbatim ### copy-from-git.sh #!/bin/sh -GIT=$HOME/lilypond/lilypond-git DEST=$HOME/lilypond/trusted-scripts -cp $GIT/make/website.make $DEST/website.make -cp $GIT/Documentation/lilypond-texi2html.init $DEST/lilypond-texi2html.init -cp $GIT/scripts/build/extract_texi_filenames.py $DEST/extract_texi_filenames.py -cp $GIT/scripts/build/create-version-itexi.py $DEST/create-version-itexi.py -cp $GIT/scripts/build/create-weblinks-itexi.py $DEST/create-weblinks-itexi.py -cp $GIT/scripts/build/mass-link.py $DEST/mass-link.py -cp $GIT/scripts/build/website_post.py $DEST/website_post.py -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 +cp $LILYPOND_GIT/make/website.make \ + $DEST/website.make +cp $LILYPOND_GIT/Documentation/lilypond-texi2html.init \ + $DEST/lilypond-texi2html.init +cp $LILYPOND_GIT/scripts/build/extract_texi_filenames.py \ + $DEST/extract_texi_filenames.py +cp $LILYPOND_GIT/scripts/build/create-version-itexi.py \ + $DEST/create-version-itexi.py +cp $LILYPOND_GIT/scripts/build/create-weblinks-itexi.py \ + $DEST/create-weblinks-itexi.py +cp $LILYPOND_GIT/scripts/build/mass-link.py \ + $DEST/mass-link.py +cp $LILYPOND_GIT/scripts/build/website_post.py \ + $DEST/website_post.py +cp $LILYPOND_GIT/scripts/build/bib2texi.py \ + $DEST/bib2texi.py +cp $LILYPOND_GIT/python/langdefs.py \ + $DEST/langdefs.py +cp $LILYPOND_GIT/Documentation/web/server/lilypond.org.htaccess \ + $DEST/lilypond.org.htaccess +cp $LILYPOND_GIT/Documentation/web/server/website-dir.htaccess \ + $DEST/website-dir.htaccess @end verbatim +@end smallexample Build the website: +@smallexample @verbatim ### make-website.sh #!/bin/sh @@ -177,14 +204,79 @@ rsync -raO $BUILD/out-website/website/ $DEST/website/ cp $BUILD/out-website/pictures $DEST cp $BUILD/out-website/.htaccess $DEST @end verbatim +@end smallexample + +Then in the @file{cronjob/} directory, put the cronjob to automate +the trusted portions: -Cronjob to automate the trusted portions: +@warning{@code{cron} will not inherit environment variables from +your main setup, so you must re-define any variables inside your +@code{crontab}.} +@smallexample @verbatim # website-rebuild.cron +LILYPOND_GIT= ... fill this in +LILYPOND_WEB_MEDIA_GIT= ... fill this in + 11 * * * * $HOME/lilypond/trusted-scripts/update-git.sh >/dev/null 2>&1 22 * * * * $HOME/lilypond/trusted-scripts/make-website.sh >/dev/null 2>&1 @end verbatim +@end smallexample + +As the final stage of the setup, run your @code{copy-from-git.sh} +script, assuming that you trust the current state of scripts in +lilypond git. + +@subsubheading Normal maintenance + +When there is a change to the build scripts and/or website +makefile, log in to the server (or your own home machine if you're +testing this there), and do + +@example +update-git.sh +check-git.sh +@end example + +After reviewing the changes carefully, you can update the trusted +scripts with @code{copy-from-git.sh}. + + +@subsubheading Building the website (exactly as on the server) + +Run @code{make-website.sh}; the final version ends up in +@file{$HOME/web/}. + +On the actual server, the website is generated hourly by user +@code{graham} the host @code{lilypond.org}. You can set up the +cronjob by doing: + +@example +crontab $HOME/lilypond/website-rebuild.cron +@end example + + +@subheading Initial setup for new users on actual serve + +You should symlink your own @file{~/lilypond/} to +@file{~graham/lilypond/} + +If this directory does not exist, make it. Git master should go +in @file{~/lilypond/lilypond-git/} but make sure you enable: + +@example +git config core.filemode false +@end example + +If you have created any files in @file{~graham/lilypond/} then +please run: + +@example +chgrp lilypond ~graham/lilypond/ -R +chmod 775 ~graham/lilypond/ -R +@end example + @subsubheading Additional information @@ -211,6 +303,10 @@ make WEB_TARGETS="offline online" doc make website @end example +This will make all the language variants of the website. To save +a little time, just the English version can be made with the +command @code{make WEB_LANGS='' website} or the English and (for +example) the French with @code{make WEB_LANGS='fr' website}. @item Move the built stuff into those directories. It's highly @@ -263,10 +359,12 @@ scripts/build/website_post.py @item Translations are not included by default in @code{make website}. -To test your translation, edit the @code{WEB_LANGS} line in -@file{make/website.make}. Do not submit a patch to add your language -to this file unless @code{make website} completes with less than 5 -warnings. +To test your translation, edit the @code{WEB_LANGUAGES =} line in +@file{python/langdefs.py}. You will need to copy this updated +script to @code{$LILYPOND_BUILD_DIR/python/out}. + +Do not submit a patch to add your language to this file unless +@code{make website} completes with fewer than 5 warnings. @item Links to manuals are done with macros like diff --git a/Documentation/cs/GNUmakefile b/Documentation/cs/GNUmakefile index 2b7f1a1ec4..97300b5296 100644 --- a/Documentation/cs/GNUmakefile +++ b/Documentation/cs/GNUmakefile @@ -1,10 +1,9 @@ ISOLANG = cs depth = ../.. # SUBDIRS = web learning notation texidocs usage included essay extending -SUBDIRS = web learning texidocs essay usage -STEPMAKE_TEMPLATES = documentation +SUBDIRS = web learning texidocs essay usage included +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root NO_PDF_FILES = 1 -EXTRA_DIST_FILES = web.texi include $(depth)/make/stepmake.make diff --git a/Documentation/cs/essay/literature.itely b/Documentation/cs/essay/literature.itely index d83438e23a..b3090ce889 100644 --- a/Documentation/cs/essay/literature.itely +++ b/Documentation/cs/essay/literature.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @@ -86,7 +86,7 @@ beginnt aber mit einem Überblick über bereits existente Praktiken. @node Dlouhý seznam literatury @section Dlouhý seznam literatury -@translationof Long literatur list +@translationof Long literature list @subheading Colorado diff --git a/Documentation/cs/included/GNUmakefile b/Documentation/cs/included/GNUmakefile new file mode 100644 index 0000000000..afe7a4d738 --- /dev/null +++ b/Documentation/cs/included/GNUmakefile @@ -0,0 +1,10 @@ +depth = ../../.. + +STEPMAKE_TEMPLATES=documentation + +EXTRA_DIST_FILES+=$(call src-wildcard,*.ly) +EXTRA_DIST_FILES+=$(call src-wildcard,*.ily) +EXTRA_DIST_FILES+=$(call src-wildcard,*.itexi) +EXTRA_DIST_FILES+=$(call src-wildcard,*.itely) + +include $(depth)/make/stepmake.make diff --git a/Documentation/cs/learning.tely b/Documentation/cs/learning.tely index ddf058918f..f556c15ce8 100755 --- a/Documentation/cs/learning.tely +++ b/Documentation/cs/learning.tely @@ -19,7 +19,7 @@ Tento soubor poskytuje úvod pro LilyPond verze @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Autorské právo @copyright{} 1999--2010 autoři. +Autorské právo @copyright{} 1999--2012 autoři. @end macro @set FDL diff --git a/Documentation/cs/learning/common-notation.itely b/Documentation/cs/learning/common-notation.itely index 3b46081113..c20d2c441b 100644 --- a/Documentation/cs/learning/common-notation.itely +++ b/Documentation/cs/learning/common-notation.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @ignore Tutorial guidelines: @@ -925,7 +925,7 @@ a podrobně je vysvětlují. @seealso Příručka k učení se: -@ref{Hlas obsahuje noty}. +@ref{Hlasy obsahují noty}. Doporučení pro notový zápis: @ruser{Současně se objevující noty}. @@ -1392,7 +1392,7 @@ právě vymezené značky: Název, skladatel, číslo opusu a podobné údaje se vkládají do prostředí @code{\header}. Toto prostředí se nachází mimo hudební výrazy, většinou se prostředí -@code{\header} vkládá přímo do @ref{Číslo verze,,čísla verze}. +@code{\header} vkládá přímo do čísla verze. @example \version @w{"@version{}"} diff --git a/Documentation/cs/learning/fundamental.itely b/Documentation/cs/learning/fundamental.itely index 76b5cff508..f1af9249fb 100644 --- a/Documentation/cs/learning/fundamental.itely +++ b/Documentation/cs/learning/fundamental.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @node Základní pojmy @@ -2536,7 +2536,7 @@ celloMusic = \relative c { @seealso Die Vorlagen, mit denen wir begonnen haben, können im Anhang @qq{Předlohy} gefunden werden, siehe -@ref{Jedna notová osnova}. +@ref{Jednotlivá notová osnova}. @node Čtyřhlasý notový zápis SATB diff --git a/Documentation/cs/learning/preface.itely b/Documentation/cs/learning/preface.itely index 7a1261f993..f107f55a19 100644 --- a/Documentation/cs/learning/preface.itely +++ b/Documentation/cs/learning/preface.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Předmluva @unnumbered Předmluva diff --git a/Documentation/cs/learning/templates.itely b/Documentation/cs/learning/templates.itely index c8b6940b3a..6e4c63b2f7 100644 --- a/Documentation/cs/learning/templates.itely +++ b/Documentation/cs/learning/templates.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @@ -39,25 +39,25 @@ not! @appendixsubsec Pouze noty -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec Noty a text -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec Noty a názvy akordů -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec Noty, text a názvy akordů -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -67,41 +67,35 @@ not! @appendixsubsec Klavírní sólo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec Klavír a hlas zpěvu -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec Klavír s vystředěným textem -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-centered-lyrics.ly} -@appendixsubsec Klavír s vystředěným označením hlasitosti - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -{piano-template-with-centered-dynamics.ly} - - @node Smyčcový kvartet @appendixsec Smyčcový kvartet @translationof String quartet -@appendixsubsec Smyčcový kvartet +@appendixsubsec Jednoduchá smyčcový kvartet -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec Hlasy smyčcového kvartetu -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -111,24 +105,24 @@ not! @appendixsubsec Notový zápis SATB -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec Notový zápis SATB a automatický klavírní výtah -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} @appendixsubsec SATB s příslušnými prostředími -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly} @appendixsubsec Sólový zpěv a dvojhlasný refrén -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} @@ -137,7 +131,7 @@ not! @translationof Orchestral templates @appendixsubsec Orchestr, sbor a klavír -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -148,13 +142,13 @@ not! @appendixsubsec Přepis menzurální hudby -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Předlohy pro přepis gregorianik -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @node Jiné předlohy @@ -165,7 +159,7 @@ not! @appendixsubsec Džezová skupina @translationof Jazz combo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {jazz-combo-template.ly} @@ -189,7 +183,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print @ The `line-width' is for \header. @li lypond[quote,verbatim,ragged-right,line-width] -\version "2.14.0" +\version "2.16.0" \header { dedication = "dedication" title = "Title" diff --git a/Documentation/cs/learning/tutorial.itely b/Documentation/cs/learning/tutorial.itely index f16502799b..e7772132b3 100644 --- a/Documentation/cs/learning/tutorial.itely +++ b/Documentation/cs/learning/tutorial.itely @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @node Cvičení @@ -782,7 +782,7 @@ cut-&-pastable section} až do konce souboru. @n ode Navádění klávesnicí @s ubsection Navádění klávesnicí -@translationof Keyboard navigation +@t ranslationof Keyboard navigation @warning{Tato funkce je pouze ve verzi HTML příručky.} @@ -811,13 +811,13 @@ rozumět pozdějším částem.} @strong{Předtím než @emph{cokoli} vyzkoušíte}: Přečtěte si části @ref{Cvičení} a @ref{Běžný notový zápis}. Když narazíte na hudební odborné pojmy, které neznáte, -podívejte se na ně v části @rglosnamed{Začátek, Slovníček}. +podívejte se na ně v části @rglosnamed{Top, Slovníček}. @item @strong{Předtím než napíšete úplný kousek}: Přečtěte si část @ref{Základní pojmy} v příručce k učení se. Potom se můžete na pro váš projekt důležité části podívat -v @rusernamed{Začátek, Doporučení pro notový zápis}. +v @rusernamed{Top, Doporučení pro notový zápis}. @item @strong{Předtím než se pokusíte měnit obvyklý notový zápis}: diff --git a/Documentation/cs/learning/tweaks.itely b/Documentation/cs/learning/tweaks.itely index 64592c60fa..7dcfd07eb9 100644 --- a/Documentation/cs/learning/tweaks.itely +++ b/Documentation/cs/learning/tweaks.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Ladění výstupu @chapter Ladění výstupu @@ -3258,6 +3258,7 @@ rhMusic = \relative c'' { \stemDown % Stem on the d2 should be invisible \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t d2 } \new Voice { @@ -3706,6 +3707,7 @@ rhMusic = \relative c'' { \stemDown % Stem on the d2 should be invisible \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t d2 } \new Voice { @@ -3796,6 +3798,7 @@ den Stimmen stattfindet: << { \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t b8~ b\noBeam } \\ @@ -3812,6 +3815,7 @@ gesetzt wird: << { \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t \once \override Stem #'length = #8 b8~ b\noBeam } @@ -4469,6 +4473,8 @@ interessante Dateien: @subsection Vyhnutí se ladění s pomalejším překladem @translationof Avoiding tweaks with slower processing +@untranslated + LilyPond kann einige zusätzliche Tests durchführen, während die Noten gesetzt werden. Dadurch braucht das Programm länger, um den Notensatz zu produzieren, aber üblicherweise werden diff --git a/Documentation/cs/macros.itexi b/Documentation/cs/macros.itexi index 38d2dac975..14c7dd9770 100755 --- a/Documentation/cs/macros.itexi +++ b/Documentation/cs/macros.itexi @@ -116,7 +116,7 @@ Tento dokument byl zařazen jako volně šiřitelné dílo. @c ***** Title page ***** @ifnottex -@node Začátek +@node Top @top LilyPond -- \TITLE\ @cartouche @@ -717,7 +717,7 @@ Pro LilyPond ve verzi @version{}
@end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/cs/translations.itexi b/Documentation/cs/translations.itexi index d9f008b947..9cd7e81b06 100644 --- a/Documentation/cs/translations.itexi +++ b/Documentation/cs/translations.itexi @@ -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 Thu May 31 09:12:39 UTC 2012 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -111,7 +111,7 @@ ano @item 2 Běžný notový zápis @* -4184 +4187 @tab Pavel Fric @tab @tab @@ -138,7 +138,7 @@ ano @item 3 Základní pojmy @* -11139 +11130 @tab Pavel Fric @tab @tab @@ -155,34 +155,34 @@ ano @ifhtml @html -ano +částečně @end html @end ifhtml @ifnothtml -ano +částečně @end ifnothtml @tab před-GDP @item 4 Ladění výstupu @* -15408 +15468 @tab Pavel Fric @tab @tab @ifhtml @html -ano +částečně (98 %) @end html @end ifhtml @ifnothtml -ano +částečně (98 %) @end ifnothtml @tab @ifhtml @html -částečně +částečně @end html @end ifhtml @ifnothtml @@ -192,7 +192,7 @@ ano @item A Předlohy @* -225 +219 @tab Pavel Fric @tab @tab @@ -209,7 +209,7 @@ ano @ifhtml @html -částečně +částečně @end html @end ifhtml @ifnothtml @@ -231,7 +231,7 @@ LilyPond -- Zápis not pro každého @item Nadpisy @* -585 +616 @tab Pavel Fric @tab @tab @@ -248,7 +248,7 @@ ano @ifhtml @html -částečně +částečně @end html @end ifhtml @ifnothtml @@ -285,7 +285,7 @@ ano @item Úvod @* -4506 +4753 @tab Pavel Fric @tab @tab @@ -302,7 +302,7 @@ ano @ifhtml @html -částečně +částečně @end html @end ifhtml @ifnothtml @@ -312,7 +312,7 @@ ano @item Stažení @* -1183 +1211 @tab Pavel Fric @tab @tab @@ -329,7 +329,7 @@ ano @ifhtml @html -částečně +částečně @end html @end ifhtml @ifnothtml @@ -339,7 +339,7 @@ ano @item Příručky @* -1200 +1214 @tab Pavel Fric @tab @tab @@ -356,34 +356,34 @@ ano @ifhtml @html -ano +částečně @end html @end ifhtml @ifnothtml -ano +částečně @end ifnothtml @tab před-GDP @item Společenství @* -1755 +3006 @tab  Pavel Fric @tab @tab @ifhtml @html -ano +částečně (96 %) @end html @end ifhtml @ifnothtml -ano +částečně (96 %) @end ifnothtml @tab @ifhtml @html -částečně +částečně @end html @end ifhtml @ifnothtml diff --git a/Documentation/cs/usage/external.itely b/Documentation/cs/usage/external.itely index 8d27d6a144..073ada5667 100644 --- a/Documentation/cs/usage/external.itely +++ b/Documentation/cs/usage/external.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @@ -556,7 +556,7 @@ automatisiert geschieht. @end menu @node Hodně uvozovek v dlouhém notovém zápisu -@subsection Hodně uvozovek v dlouhém notovém zápisu +@unnumberedsubsec Hodně uvozovek v dlouhém notovém zápisu @translationof Many quotes from a large score Wenn aus einer großen Partitur viele kleine Fragmente eingefügt @@ -565,7 +565,7 @@ Siehe @ruser{Notationsfragmente extrahieren}. @node Vložení not LilyPondu do OpenOffice.org -@subsection Vložení not LilyPondu do OpenOffice.org +@unnumberedsubsec Vložení not LilyPondu do OpenOffice.org @translationof Inserting LilyPond output into OpenOffice.org @cindex OpenOffice.org @@ -575,7 +575,7 @@ Musik im LilyPond-Format kann in OpenOffice.org eingefügt werden mittels @node Vložení not LilyPondu do jiných programů -@subsection Vložení not LilyPondu do jiných programů +@unnumberedsubsec Vložení not LilyPondu do jiných programů @translationof Inserting LilyPond output into other programs Um die Ausgabe von LilyPond in anderen Programmen einzufügen, diff --git a/Documentation/cs/usage/lilypond-book.itely b/Documentation/cs/usage/lilypond-book.itely index 57be64e8a8..726389c0f0 100644 --- a/Documentation/cs/usage/lilypond-book.itely +++ b/Documentation/cs/usage/lilypond-book.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @@ -108,9 +108,9 @@ Optionen für \verb+lilypond+ werden dabei in eckige Klammern gesetzt. Größere Beispiele können auch in einer eigenständigen Datei gespeichert und dann mit \verb+\lilypondfile+ eingebunden werden. -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(Falls nötig kann @file{screech-boink.ly} durch eine beliebige andere +(Falls nötig kann @file{screech-and-boink.ly} durch eine beliebige andere @file{.ly}-Datei im selben Verzeichnis wie diese Datei ersetzt werden.) \end{document} @@ -168,7 +168,7 @@ c'4 f16 Größere Beispiele können auch in einer eigenständigen Datei gespeichert und dann mit @code{\lilypondfile} eingebunden werden. -@lilypondfile[quote,noindent]{screech-boink.ly} +@lilypondfile[quote,noindent]{screech-and-boink.ly} @page @@ -778,13 +778,6 @@ die Übersetzung im Feld @code{texidoc@var{LANG}} enthalten. Wird nun aufgerufen, so wird der Inhalt der Datei @file{foo.texidoc@var{LANG}} anstelle von @file{foo.texidoc} eingefügt. -@item lilyquote -(Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt wie die -@code{quote} Option, außer dass nur das Musikfragment (und natürlich optional der -gesamte LilyPond-Code bei Benutzung von @code{verbatim}) in den Zitatblock -eingefügt wird. Dies ist nützlich, wenn Sie ein Musikfragment zitieren möchten, -nicht aber dessen @code{texidoc} Dokumentationsblock. - @item doctitle (Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt ähnlich wie die @code{texidoc} Option: Wenn @command{lilypond} mit der Option diff --git a/Documentation/cs/usage/running.itely b/Documentation/cs/usage/running.itely index 9c70ff117e..655889565e 100644 --- a/Documentation/cs/usage/running.itely +++ b/Documentation/cs/usage/running.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric @@ -67,7 +67,7 @@ Internet, wenn Sie mit der Kommandozeile nicht vertraut sind. @end menu @node Vyvolání lilypond -@subsection Vyvolání @command{lilypond} +@unnumberedsubsec Vyvolání @command{lilypond} @translationof Invoking lilypond @cindex @command{lilypond} aufrufen @@ -140,7 +140,7 @@ haben. @node Volby v příkazovém řádku pro lilypond -@subsection Volby v příkazovém řádku pro @command{lilypond} +@unnumberedsubsec Volby v příkazovém řádku pro @command{lilypond} @translationof Command line options for lilypond Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: @@ -236,7 +236,7 @@ Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel: @verbatim #(system "rm -rf /") { - c4^#(ly:export (ly:gulp-file "/etc/passwd")) + c4^$(ly:gulp-file "/etc/passwd") } @end verbatim @end quotation @@ -467,7 +467,7 @@ Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht @node Proměnné prostředí -@subsection Proměnné prostředí +@unnumberedsubsec Proměnné prostředí @translationof Environment variables @cindex LANG diff --git a/Documentation/cs/usage/setup.itely b/Documentation/cs/usage/setup.itely index eb865fe9b7..79e6aa126e 100644 --- a/Documentation/cs/usage/setup.itely +++ b/Documentation/cs/usage/setup.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric diff --git a/Documentation/cs/usage/suggestions.itely b/Documentation/cs/usage/suggestions.itely index 12e3ace365..96c0618531 100644 --- a/Documentation/cs/usage/suggestions.itely +++ b/Documentation/cs/usage/suggestions.itely @@ -8,11 +8,11 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Návrhy pro psaní vstupních souborů LilyPond @chapter Návrhy pro psaní vstupních souborů LilyPond -@translationof Suggestions for writing LilyPond input files +@translationof Suggestions for writing files Jetzt sind Sie so weit, größere Stücke mit LilyPond zu schreiben -- nicht nur die kleinen Beispiele aus der Übung, sondern ganze Stücke. @@ -60,7 +60,7 @@ Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können: @item @strong{Schreiben Sie immer mit @code{\version} die Versionsnummer in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer -@code{\version "2.14.0"} eingetragen ist. Es empfiehlt sich, in alle +@code{\version "2.16.0"} eingetragen ist. Es empfiehlt sich, in alle Dateien, unabhängig von ihrer Größe, den @code{\version}-Befehl einzufügen. Persönliche Erfahrung hat gezeigt, dass es ziemlich frustrierend sein kann zu erinnern, welche Programmversion man etwa diff --git a/Documentation/cs/usage/updating.itely b/Documentation/cs/usage/updating.itely index 0f5eaef131..37575f8f66 100644 --- a/Documentation/cs/usage/updating.itely +++ b/Documentation/cs/usage/updating.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Pavel Fric diff --git a/Documentation/cs/web.texi b/Documentation/cs/web.texi index d43cb374ce..6e32322872 100644 --- a/Documentation/cs/web.texi +++ b/Documentation/cs/web.texi @@ -17,7 +17,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2010 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -77,7 +77,7 @@ License''. @c TITLE PAGE @ifnottex -@node Začátek +@node Top @top LilyPond... Notová sazba pro každého @translationof Top @end ifnottex @@ -217,30 +217,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @end macro @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (rozdělené HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (rozdělené HTML),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (velké HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (velké HTML),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro diff --git a/Documentation/cs/web/community.itexi b/Documentation/cs/web/community.itexi index 32c781803b..1c74701216 100644 --- a/Documentation/cs/web/community.itexi +++ b/Documentation/cs/web/community.itexi @@ -547,7 +547,7 @@ stálý, napsali jsme příručku pro vývojářské práce (jen v angličtině). @docLinksBare{Příručka pro vývojářské práce, přispěvatel, - @rcontribnamed{Začátek,Příručka pro vývojářské práce}, + @rcontribnamed{Top,Příručka pro vývojářské práce}, @manualDevelContributorSplit-cs, @manualDevelContributorBig-cs, 500 kB, @manualDevelContributorPdf-cs, 2.8 MB} diff --git a/Documentation/cs/web/download.itexi b/Documentation/cs/web/download.itexi index ed71c06c67..c300871eee 100755 --- a/Documentation/cs/web/download.itexi +++ b/Documentation/cs/web/download.itexi @@ -286,12 +286,18 @@ VÅ¡echna loga a vyobrazení výrobků ctí autorské právo a obchodní značku. @item @sourceimage{logo-macosx,,,} @downloadStableDarwinNormal -Pro procesory značky Intel (máte-li pochybnosti, používejte tuto verzi). +Pro MacOS X 10.4 nebo vyšší, běží na Intel CPU +(pokud si nejste jisti, použijte tento). + +MacOS X 10.7 Lion zatím není podporováno. @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC -Pro procesory G3 a G4 (staré počítače Apple). +Pro MacOS X 10.4 nebo vyšší, běží na G3 a G4 CPU +(staré počítače Apple). + +MacOS X 10.7 Lion zatím není podporováno. @end itemize @@ -503,7 +509,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. diff --git a/Documentation/cs/web/introduction.itexi b/Documentation/cs/web/introduction.itexi index e1290089a1..6558ecaca5 100644 --- a/Documentation/cs/web/introduction.itexi +++ b/Documentation/cs/web/introduction.itexi @@ -687,7 +687,7 @@ Francouzský článek o LilyPondu ve verzi 2.6 se objevuje na Vydavatelé holandského časopisu Computer!Totaal, který se věnuje počítačům, -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, popisují LilyPond} ve vydání z října 2004 jako: @qq{báječný svobodný (Open Source) program [...] Noty vytvořené LilyPondem jsou bez výjimky nádherné [...] Jde o velmi silný systém, který @@ -1043,6 +1043,7 @@ ukázat a klepnout. @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} diff --git a/Documentation/cs/web/manuals.itexi b/Documentation/cs/web/manuals.itexi index f9c4cbc6c6..610f2a972d 100755 --- a/Documentation/cs/web/manuals.itexi +++ b/Documentation/cs/web/manuals.itexi @@ -42,12 +42,12 @@ LilyPond je @strong{textově založený} program na sazbu not. Pokud tomuto pojetí nedůvěřujete, přečtěte si o něm, prosím, nyní! @item -@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Začátek,Učení}} +@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Učení}} @qq{bezpodmínečně si přečíst!} jemné uvedení do LilyPondu. @details{Učení} @item -@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Začátek,Slovníček}} +@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Slovníček}} @emph{(optional)} zde jsou hudební pojmy vysvětleny v angličtině a a podány odpovídající překlady v mnoha dalších řečech. @details{Slovníček} @@ -55,7 +55,7 @@ a podány odpovídající překlady v mnoha dalších řečech. @item -@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Začátek,Článek}} +@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Článek}} @emph{(optional)} Informace o pozadí procesu notové sazby a kráse rytí not v 19. století. @details{Článek} @@ -70,17 +70,17 @@ rytí not v 19. století. @itemize @item -@ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Začátek,Notový zápis}} +@ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notový zápis}} doporučení týkající se skladby. @details{Notový zápis} @item -@ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Začátek,Používání}} +@ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Používání}} jak jsou programy vyvolávány. @details{Používání} @item -@ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Začátek,Úryvky}} +@ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Úryvky}} krátké lsti, rady a příklady. @details{Úryvky} @@ -99,21 +99,21 @@ krátké lsti, rady a příklady. Často kladené dotazy. @item -@ref{Začátek,Web}: +@ref{Top,Web}: Tento dokument. @item -@ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Začátek,Změny}} +@ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Změny}} Co je nového? @details{Změny} @item -@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Začátek,Rozšíření}} +@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Rozšíření}} Chytrá přizpůsobení. @details{Rozšíření} @item -@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Začátek,Vnitřnosti}} +@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Vnitřnosti}} Doporučení pro přizpůsobení. @details{Vnitřnosti} @@ -197,7 +197,7 @@ další informace. @divClass{column-right-bottom} @docLinks{Učení, learning, - @rlearningnamed{Začátek,Učení}, + @rlearningnamed{Top,Učení}, @manualStableLearningSplit-cs, @manualStableLearningBig-cs, 1.5 MB, @manualStableLearningPdf-cs, 3 MB} @@ -222,7 +222,7 @@ vzít si na pomoc tento slovníček. @divClass{column-right-bottom} @docLinks{Slovníček, music-glossary, - @rglosnamed{Začátek,Slovníček}, + @rglosnamed{Top,Slovníček}, @manualStableGlossarySplit-cs, @manualStableGlossaryBig-cs, 1 MB, @manualStableGlossaryPdf-cs, 1.5 MB} @@ -251,7 +251,7 @@ rozliÅ¡ení.} @divClass{column-right-bottom} @docLinks{Článek, essay, - @ressaynamed{Začátek,Článek}, + @ressaynamed{Top,Článek}, @manualStableEssaySplit-cs, @manualStableEssayBig-cs, 2 MB, @manualStableEssayPdf-cs, 2.5 MB} @@ -278,7 +278,7 @@ pojmosloví (podívejte se do slovníčku).} @divClass{column-right-bottom} @docLinks{Notový zápis, notation, - @rusernamed{Začátek,Notový zápis}, + @rusernamed{Top,Notový zápis}, @manualStableNotationSplit-cs, @manualStableNotationBig-cs, 7 MB, @manualStableNotationPdf-cs, 18 MB} @@ -303,7 +303,7 @@ tento dokument přečíst, dříve než si člověk začne myslet na větší pr @divClass{column-right-bottom} @docLinks{Používání, usage, - @rprogramnamed{Začátek,Používání}, + @rprogramnamed{Top,Používání}, @manualStableUsageSplit-cs, @manualStableUsageBig-cs, 300 KB, @manualStableUsagePdf-cs, 400 KB} @@ -337,7 +337,7 @@ jsou také odkázány z odstavce @strong{Podívejte se také na}. @divClass{column-right-bottom} @docLinks{Úryvky, snippets, - @rlsrnamed{Začátek,Úryvky}, + @rlsrnamed{Top,Úryvky}, @manualStableSnippetsSplit, @manualStableSnippetsBig, 2.5 MB, @manualStableSnippetsPdf, 8 MB} @@ -410,14 +410,14 @@ spolupráci na programu. @divClass{keep-bullets} @itemize -@ref{Začátek,Web} +@ref{Top,Web} @end itemize @divEnd @subsubheading Web - příručka @versionDevel @docLinksBare{Web, web, - @ref{Začátek,Web}, + @ref{Top,Web}, @manualDevelWebSplit-cs, @manualDevelWebBig-cs, 1 MB, @manualDevelWebPdf, 2 MB} @@ -441,7 +441,7 @@ vlastností v LilyPondu od předchozí stálé verze. @divClass{column-right-bottom} @docLinks{Změny, changes, - @rchangesnamed{Začátek,Změny}, + @rchangesnamed{Top,Změny}, @manualStableChangesSplit-cs, @manualStableChangesBig-cs, 6 KB, @manualStableChangesPdf-cs, 200 KB} @@ -451,7 +451,7 @@ vlastností v LilyPondu od předchozí stálé verze. @node Rozšíření @unnumberedsec Rozšíření -@translationof Extend +@translationof Extending @divClass{column-left-top} @subheading RozÅ¡iřte LilyPond @@ -462,8 +462,8 @@ V této knize se vysvětluje, jak se pro LilyPond píší rozšíření. @divClass{column-right-bottom} -@docLinks{Rozšíření, extend, - @rextendnamed{Začátek,Rozšíření}, +@docLinks{Rozšíření, extending, + @rextendnamed{Top,Rozšíření}, @manualStableExtendingSplit-cs, @manualStableExtendingBig-cs, 200 KB, @manualStableExtendingPdf-cs, 400 KB} @@ -497,7 +497,7 @@ dokumentu. Každá část doporučení k notovému zápisu má také část @divClass{column-right-bottom} @docLinks{Vnitřnosti, internals, - @rinternalsnamed{Začátek,Vnitřnosti}, + @rinternalsnamed{Top,Vnitřnosti}, @manualStableInternalsSplit-cs, @manualStableInternalsBig-cs, 2.5 MB, @manualStableInternalsPdf-cs, 2.8 MB} diff --git a/Documentation/css/GNUmakefile b/Documentation/css/GNUmakefile index 3cb02a74dd..41495994ce 100644 --- a/Documentation/css/GNUmakefile +++ b/Documentation/css/GNUmakefile @@ -1,6 +1,26 @@ depth = ../.. -STEPMAKE_TEMPLATES=documentation -EXTRA_DIST_FILES = $(call src-wildcard,*.css) +CSS_FILES = $(call src-wildcard,*.css) + +EXTRA_DIST_FILES = $(CSS_FILES) + +OUT_CSS_FILES = $(CSS_FILES:%=$(outdir)/%) + +STEPMAKE_TEMPLATES = documentation include $(depth)/make/stepmake.make + +########### +### Targets + +default: + +ifeq ($(out),www) +local-WWW-1: $(OUT_CSS_FILES) +endif + +######### +### Rules + +$(outdir)/%.css: %.css + ln -f $< $@ diff --git a/Documentation/css/lilypond-manuals.css b/Documentation/css/lilypond-manuals.css index b5e7a0cf93..995c2173c6 100644 --- a/Documentation/css/lilypond-manuals.css +++ b/Documentation/css/lilypond-manuals.css @@ -408,9 +408,10 @@ table.menu { /***********************************************************/ @media print { - /* Hide the sidebar: */ - body { padding-left: 0; } - #tocframe { display: none; } + /* Hide the sidebar and make the main contents take up the full width */ + div#main { position: static; overflow: visible; left: 0; } + div#tocframe { display: none; } + /* Also don't show the navigation toolbars between all sections */ .nav_table { display: none; } } diff --git a/Documentation/css/lilypond-website.css b/Documentation/css/lilypond-website.css index a6f6f9b669..2ce6229125 100644 --- a/Documentation/css/lilypond-website.css +++ b/Documentation/css/lilypond-website.css @@ -473,7 +473,16 @@ div.news-item { div#latestVersion { position: absolute; - top: 12.4em; + top: 16em; + right: 0; + width: 12em; + text-align: center; + border-left: 1px solid #5b7f64; +} + +div#wildCardBox { + position: absolute; + top: 0.0em; right: 0; width: 12em; text-align: center; @@ -488,6 +497,14 @@ div#latestVersion { margin: 0; } +#wildCardBox .subheading { + background: #5b7f64; + color: #fff; + text-align: center; + padding: 0 0.5em; + margin: 0; +} + /* this might not work in certain browsers */ a[name="Stable"] + h4 { background: #bdee9d url(../pictures/color1-bg.png) repeat-x top left; @@ -894,6 +911,7 @@ div.color4 h3 { .example { position: relative; left: -2.5em; + text-align: left; } .h-scroll-auto { diff --git a/Documentation/de/GNUmakefile b/Documentation/de/GNUmakefile index 2bcd15fe6a..c31fd2fa6a 100644 --- a/Documentation/de/GNUmakefile +++ b/Documentation/de/GNUmakefile @@ -1,9 +1,7 @@ ISOLANG = de depth = ../.. SUBDIRS = web learning notation texidocs essay usage extending included -STEPMAKE_TEMPLATES = documentation +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root -EXTRA_DIST_FILES = web.texi - include $(depth)/make/stepmake.make diff --git a/Documentation/de/essay.tely b/Documentation/de/essay.tely index fa64560f7b..e5bb7f6b7b 100644 --- a/Documentation/de/essay.tely +++ b/Documentation/de/essay.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 3c814eb917c15f6f0d64f64f58046dd7b119e359 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -23,7 +23,7 @@ LilyPond Version @version{}. @c `Essay' was born 2002-06-03 with git commit e38f5fc... @macro copyrightDeclare -Copyright @copyright{} 2002--2011 bei den Autoren. +Copyright @copyright{} 2002--2012 bei den Autoren. @end macro @set FDL diff --git a/Documentation/de/essay/engraving.itely b/Documentation/de/essay/engraving.itely index 501ea1820a..db8537cae2 100644 --- a/Documentation/de/essay/engraving.itely +++ b/Documentation/de/essay/engraving.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + Translation of GIT committish: 233fb6a8b3b6e31de1841641dbbd4c4f43423151 When revising a translation, copy the HEAD committish of the @@ -9,7 +9,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Till Paala @@ -1642,10 +1642,7 @@ nächste Beispiel zeigt einige etwas exotischere Konstruktionen: >> } >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 8) - } + \tempo 8 = 60 } \layout { \context { diff --git a/Documentation/de/essay/literature.itely b/Documentation/de/essay/literature.itely index 0bfaeb9e4a..8b23a7e5c9 100644 --- a/Documentation/de/essay/literature.itely +++ b/Documentation/de/essay/literature.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -86,7 +86,7 @@ beginnt aber mit einem Überblick über bereits existente Praktiken. @node Lange Literaturliste @section Lange Literaturliste -@translationof Long literatur list +@translationof Long literature list @subheading Notensatzliteraturliste der University of Colorado diff --git a/Documentation/de/extending.tely b/Documentation/de/extending.tely index 059e71df31..b3f6f7c5f6 100644 --- a/Documentation/de/extending.tely +++ b/Documentation/de/extending.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,7 @@ LilyPond Version @version{} erweitern kann. @c `Extending' was born 2003-04-23 with git commit c08f6e8... @macro copyrightDeclare -Copyright @copyright{} 2003--2011 bei den Autoren. +Copyright @copyright{} 2003--2012 bei den Autoren. @end macro @set FDL diff --git a/Documentation/de/extending/programming-interface.itely b/Documentation/de/extending/programming-interface.itely index cc2d364fe2..d0a73c44ff 100644 --- a/Documentation/de/extending/programming-interface.itely +++ b/Documentation/de/extending/programming-interface.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + Translation of GIT committish: 32b9cd030a1917570346e9b9ea267fe409156b2f 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -22,7 +22,10 @@ es eine grundlegende Einleitung in LilyPonds @ref{Scheme-Übung}. @menu +* LilyPond-Codeabschnitte:: +* Scheme-Funktionen:: * Musikalische Funktionen:: +* Ereignisfunktionen:: * Textbeschriftungsfunktionen:: * Kontexte für Programmierer:: * Callback-Funktionen:: @@ -31,62 +34,295 @@ es eine grundlegende Einleitung in LilyPonds @end menu +@node LilyPond-Codeabschnitte +@section LilyPond-Codeabschnitte +@translationof Lilypond code blocks + +Codeabschnitte in LilyPond sehen etwa so aus: + +@example + #@{ @var{Lilypond code} #@} +@end example + +Sie können überall eingesetzt werden, wo man Scheme-Code schreiben +kann: der Scheme-Einleser wurde geändert, um LilyPond-Codeabschnitte +zu akzeptieren und kann mit eingebetteten Scheme-Ausdrücken umgehen, +die mit @code{$} und@w{ }@code{#} beginnen. + +Er extrahiert den LilyPond-Codeabschnitt und erstellt einen Aufruf +zum LilyPond-Parser, welcher während der Prorammausführung zur +Interpretation des LilyPond-Codeabschnittes aufgerufen wird. Alle +eingebetteten Scheme-Ausdrücke werden in der lokalen Umgebung des +LilyPond-Codeabschnittes ausgeführt, sodass man Zugruff auf lokale +Variablen und Funktionsparameter zu dem Zeitpunkt hat, an dem +der LilyPond-Codeabschnitt geschrieben wird. + +Ein LilyPond-Codeabschnitt kann jeden Inhalt haben, den man auf +der rechten Seite einer Zuweisung einsetzt. Zusätzlich entspricht +ein leerer LilyPond-Abschnitt einem gültigen musikalischen Ausdruck, +und ein LilyPond-Abschnitt, der mehrere musikalische Ereignisse enthält, +wird in einen sequenziellen musikalischen Ausdruck umgewandelt. + + +@node Scheme-Funktionen +@section Scheme-Funktionen +@translationof Scheme functions + +@cindex Scheme-Funktionen (LilyPond syntax) + +@emph{Scheme-Funktionen} sind Scheme-Prozeduren, die Scheme-Ausdrücke +aus einer Eingabe erstellen können, die in LilyPond-Syntax geschrieben +wurde. Sie können in so gut wie allen Fällen aufgerufen werden, in +denen es erlaubt ist, @code{#} zur Angabe eines Wertes in Scheme-Syntax +einzusetzen. Während Scheme auch eigene Funktionen besitzt, handelt +% dieses kapitel von @emph{syntaktischen} Funktionen, Funktionen, die +Argumente in LilyPond-Syntax annehmen. + +@menu +* Definition von Scheme-Funktionen:: +* Benutzung von Scheme-Funktionen:: +* Leere Scheme-Funktionen:: +@end menu + +@node Definition von Scheme-Funktionen +@subsection Definition von Scheme-Funktionen +@translationof Scheme function definitions + +@funindex define-scheme-function + +Die übliche Form zur Definition von Scheme-Funktionen ist: + +@example +function = +#(define-scheme-function + (parser location @var{Arg1} @var{Arg2} @dots{}) + (@var{Typ1?} @var{Typ2?} @dots{}) + @var{body}) +@end example + +@noindent +wobei + +@multitable @columnfractions .33 .66 +@item @code{parser} +@tab ganz genau das Wort @code{parser} sein muss, damit LilyPond +eine Umgebung (@code{#@{}@dots{}@code{#@}}) mit Zugriff +auf den Parser bekommt. + +@item @code{@var{ArgN}} +@tab @var{n}te Argument + +@item @code{@var{TypN?}} +@tab eine Scheme-@emph{Typenprädikat}, für welches @code{@var{argN}} +@code{#t} ausgeben muss. Manche dieser Prädikate werden vom Parser +besonders erkannt, siehe unten. Es gibt auch eine Spezialform +@code{(@emph{predicate?} @emph{default})}, um optionale Argumente +anzugeben. Wenn das eigentlich Argument fehlt, während die Funktion +aufgerufen wird, wird der Standardwert anstelle eingesetzt. Standardwerte +werden bei ihrer Definition evaluiert (gilt auch für +LilyPond-Codeabschnitte), so dass man besser einen speziellen Wert +schreibt, den man einfach erkennen kann, wenn der Wert während der +Ausführung der Position evaluiert weren soll. Wenn man das Prädikat +in Klammern setzt, aber kein Standardwert folt, wird @code{#f} +als Standard eingesetzt. Standardwerte werden weder bei der Definition +noch bei der Ausführung mit @emph{predicate?} verifiziert, sodass +man selber verantworlich für funktionsfähige Werte ist. Standardwerte, +die musikalische Ausdrücke darstellen, werden kopiert und @code{origin} +auf den Parameter @code{location} gesetzt. + +@item @code{@var{body}} +@tab Eine Folge von Scheme-Formeln, die der Reihe nach ausgewertet +werden, wobei die letzte als Ausgabewert der Scheme-Funktion eingesetzt +wird. Sie kann LilyPond-Codeabschnitte enthalten, eingeschlossen mit +Raute-Klammern (@tie{}@w{@code{#@{@dots{}#@}}}@tie{}), wie beschrieben +in @ref{LilyPond-Codeabschnitte}. Innerhalb von LilyPond-Codeabschnitten +wird mit @code{#} auf Funktionsargumente (etwa @samp{#Arg1}) verwiesen +oder ein neuer Scheme-Ausdruck mit Funktionsargumenten begonnen +(etwa @w{@samp{#(cons Arg1 Arg2)}}). Wo normale Scheme-Ausdrücke mit +@code{#} nicht funktionieren, kann man auf direkte Scheme-Ausdrücke +zurückgreifen, die mit @code{$} begonnen werden (etwa @samp{$music}). + +Wenn die Funktion eine musikalische Funktion ausgibt, bekommt sie einen +Wert von @code{origin}. zugewiesen. +@end multitable + +@noindent +Einige Typenprädikate werden vom Parser besonders behandelt, weil +er sonst die Argumente nicht zuverlässig erkennen könnte. Im Moment +handelt es sich um @code{ly:pitch?} und @code{ly:duration?}. + +Die Eignung der Argumente für alle anderen Prädikate wird festgestellt, +indem das Prädikat aufgerufen wird, nachdem LilyPond es schon in einen +Scheme-Ausdruck umgewandelt hat. Demzufolge kann das Argument in +Scheme-Syntax angegeben werden, wenn nötig (beginnend mit @code{#} oder +als Result des Aufrufes einer Scheme-Funktion), aber LilyPond +konvertiert auch eine Reihe von LilyPond-Strukturen nach Scheme, +bevor dann tatsächlich die Prädikate überprüft werden. Bei den +letzteren handelt es sich im Moment um music (Noten), postevents, +simple strings (einfache Zeichenketten mit oder ohne Anführungszeichen) +numbers (Zahlen), markup (Beschriftung) und markup lists +(Beschriftungslisten), score (Partitur), book (Buch), bookpart +(Buchteil), Kontextdefinitions- und Ausgabedefinitionsumgebungen. + +Für einige Arten von Ausdrücken (wie die meisten Noten, die nicht +in Klammern geschrieben werden) muss LilyPond weiter nach vorne +schauen als der Ausdruck selber reicht, um das Ende des Ausdrucks +zu bestimmen. Wenn solche Ausdrücke für optionale Argumente mit +einbezogen würden, indem ihre Prädikate ausgewählt würden, könnte +LilyPond nicht mehr zurückgehen, wenn es feststellt, dass der +Ausdruck nicht zu dem Parameter passt. Darum müssen manche Formen +von Noten möglicherweise in Klammern eingeschlossen werden, damit +LilyPond sie akzeptiert. Es gibt auch einige andere Mehrdeutigkeiten, +die LilyPond durch Testen von Prädikatfunktionen eingrenzt: +ist etwa @samp{-3} die Anmerkung für einen Fingersatz oder eine +negative Zahl? Ist @code{"a" 4} im Gesangskontext eine Zeichenkette +gefolgt von einer Zahl oder ein Gesangstextereignis mit der Dauer +@code{4}? LilyPond entscheidet, indem es Prädaikate befragt. Das +heißt, dass man zu durchlässige Prädikate wie @code{scheme?} +vermeiden sollte, wenn man eine bestimmmte Verwendung beabsichtigt +und nicht nur eine Funktion für die allgemeine Verwendung schreibt. + +Eine Liste der möglichen vordefinierten Typenprädikte findet sich in +@ruser{Vordefinierte Typenprädikate}. + +@seealso + +Notationsreferenz +@ruser{Vordefinierte Typenprädikate}. + +Installierte Dateien: +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm}. + + +@node Benutzung von Scheme-Funktionen +@subsection Benutzung von Scheme-Funktionen +@translationof Scheme function usage + +Scheme-Funktionen können überall aufgerufen werden, wo ein +Scheme-Ausdruck beginnend mit @code{#} geschrieben werden kann. +Man kann eine Scheme-Funktion aufrufen, indem man ihrer Bezeichnung +@code{\} voranstellt und Argumente hinten anfügt. Wenn ein optionales +Argumentenprädikat nicht mit einem Argument übereinstimmt, lässt +LilyPond dieses und alle folgenden Argumente aus und ersetzt sie +durch ihre Standardwerte und @qq{speichert} das Argument, das nicht +gepasst hat, bis zum nächsten zwingenden Argument. Da das gespeicherte +Argument auch noch irgendwo untergebracht werden muss, werden +optionale Argumente nicht wirklich als optional angesehen, es sei denn, +sie werden von einem zwingenden Argument gefolgt. + +Es gibt eine Ausnahme: Wenn man @code{\default} anstelle eines optionalen +Arguments schreibt, wird dieses und alle folgenden Argumente ausgelassen +und durch ihre Standardwerte ersetzt. Das funktioniert auch, wenn kein +zwingendes Argument folgt, weil @code{\default} nicht gespeichert werden +muss. Die Befehle @code{mark} und @code{key} benützten diesen Trick, +um ihr Standardverhalten zur verfügung zu stellen, wenn sie +@code{\default} nachgestellt haben. + +Abgesehen von Stellen, wo ein Scheme-Wert benötigt ist, gibt es +wenige Stellen, wo @code{#}-Ausdrücke zwar für ihre (Neben-)Wirkung +akzeptiert und ausgewertet, aber ansonsten ignoriert werden. Meistens +handelt es sich dabei um Stellen, wo eine Zuweisung auch in Ordnung +wäre. + +Weil es eine schlechte Idee ist, einen Wert auszugeben, der in einigen +Kontexten misinterpretiert werden könnte, sollte man Scheme-Funktionen +nur in den Fällen benutzen, in welchen sie immer einen sinnvollen +Wert ausgeben, und leere Scheme-Funktionen an anderen stellen +einsetzen. Siehe auch @pxref{Leere Scheme-Funktionen}. + + +@node Leere Scheme-Funktionen +@subsection Leere Scheme-Funktionen +@translationof Void scheme functions + +@funindex define-void-function +@funindex \void + +Manchmal wird eine Prozedur ausgeführt, um eine Aktion zu machen und nicht, +um einen Wert auszugeben. Einige Programmiersprachen (wie C oder Scheme) +setzen Funktionen für beide Konzepte ein und verwerfen einfach den +Rückgabewert (normalerweise, indem einem Ausdruck erlaubt wird, als +Aussage zu funktionieren und das Ergebnis ignoriert wird). Das ist +klug, aber auch fehleranfällig: die meisten C-Kompilierer haben heutzutage +Warnungen für verschiedene nicht-@qq{gültige} Ausdrücke, die verworfen +werden. Viele Funktionen, die eine Aktion ausführen, werden von den +Scheme-Standards als Funktionen betrachtet, deren Wiedergabewert unspezifiert +ist. Der Scheme-Interpreter von LilyPond, Guile, hat den eindeutigen +Wert @code{*unspecified*}, der normalerweise (etwa wenn man @code{set!} +direkt auf eine Variable anwendet), aber leider nicht konsistent in +diesen Fällen ausgegeben wird. + +Indem man eine LilyPond-Funktion mit @code{define-void-function} definiert, +geht man sicher, dass dieser Spezialwert (der einzige Wert, der das +Prädikat @code{void?} erfüllt) wiedergegeben wird. + +@example +noPointAndClick = +#(define-void-function + (parser location) + () + (ly:set-option 'point-and-click #f)) +... +\noPointAndClick % Point and Click deaktivieren +@end example + +Wenn man einen Ausdruck nur wegen seiner Nebeneffekte evaluieren will +und keinen der möglicherweise ausgegebenen Werte interpretiert haben +will, kann man dem Ausdruck @code{\void} voranstellen: + +@example +\void #(hashq-set! eine-Tabelle ein-Schlüssel ein-Wert) +@end example + +Auf diese Weise kann man sicher sein, dass LilyPond dem ausgegebenen +Wert keine Bedeutung zuweist, unabhängig davon, wo er angetroffen wird. +Das funktioniert auch für musikalische Funktionen wie @code{\displayMusic}. + + @node Musikalische Funktionen @section Musikalische Funktionen @translationof Music functions -Dieser Abschnitt behandelt die Erstellung von musikalischen Funktionen -innerhalb von LilyPond. @emph{Musikalische Funktionen} sind Scheme-Prozeduren, +@cindex musikalische Funktionen + +@emph{Musikalische Funktionen} sind Scheme-Prozeduren, die musikalische Ausdrücke automatisch erstellen können und dadurch die Eingabedatei maßgeblich vereinfachen können. @menu -* Syntax der musikalischen Funktionen:: +* Definition der musikalischen Funktionen:: +* Benutzung von musikalischen Funktionen:: * Einfache Ersetzungsfunktionen:: * Mittlere Ersetzungsfunktionen:: * Mathematik in Funktionen:: * Funktionen ohne Argumente:: -* Leere Funktionen:: +* Leere musikalische Funktionen:: @end menu -@node Syntax der musikalischen Funktionen -@subsection Syntax der musikalischen Funktionen -@translationof Music function syntax -Die allgemeine Form von musikalischen Funktionen ist: +@node Definition der musikalischen Funktionen +@subsection Definition der musikalischen Funktionen +@translationof Music function definitions + +Die allgemeine Form zur Definition musikalischer Funktionen ist: @example function = #(define-music-function (parser location @var{Arg1} @var{Arg2} @dots{}) (@var{Typ1?} @var{Typ2?} @dots{}) - @var{Noten}) + @var{body}) @end example @noindent -wobei - -@multitable @columnfractions .33 .66 -@item @var{ArgN} -@tab das @var{n}te Argument - -@item @var{TypN?} -@tab ein Scheme-Typenprädikat (engl. type predicate), für welches -@code{@var{ArgN}} @code{#t} ausgeben muss - -@item @var{...Noten...} -@tab ein musikalischer Ausdruck, optional in Scheme geschrieben, mit allem -LilyPond-Code in Raute/geschweifte Klammer eingeschlossen -(@tie{}@w{@code{#@{@dots{}#@}}}@tie{}). Innerhalb der LilyPond-Codeumgebungen -wird @code{$} eingesetzt, um auf Funktionsargumente zu verweisen (etwa -@samp{$Arg1}), oder ein neuer Scheme-Ausdruck muss begonnen werden, -der die Funktionsargumente enthält (etwa @w{@samp{$(cons Arg1 Arg2)}}). - -@end multitable +analot zu Scheme-Funktionen, siehe @ref{Definition von Scheme-Funktionen}. +In der Mehrzahl der Fälle ist @var{body} ein LilyPond-Codeabschnitt (siehe +@ref{LilyPond-Codeabschnitte}. Eine Liste der möglichen Typenprädikate findet sich in -@ruser{Vordefinierte Typenprädikate}. Durch den Benutzer definierte -Typenprädikate sind auch erlaubt. +@ruser{Vordefinierte Typenprädikate}. @seealso @@ -99,6 +335,47 @@ Installierte Dateien: @file{scm/lily.scm}. +@node Benutzung von musikalischen Funktionen +@subsection Benutzung von musikalischen Funktionen +@translationof Music function usage + +Musikalische Funktionen können zur Zeit an verschiedenen Stellen benützt +werden. Abhängig davon, wo sie eingesetzt werden, gibt es Begrenzungen, +damit die Funktionen eindeutig interpretiert werden können. Das Resultat, +das eine musikalische Funktion wiedergibt, muss mit dem Kontext kompatibel +sein, indem sie aufgerufen wird. + +@itemize +@item +Auf höchster Ebene in einer musikalischen Funktion. Keine Begrenzungen. + +@item +Als ein Nach-Ereignis, explizit begonnen mit einem Richtungsindikator +(einer von @code{-}, @code{^}, @w{und @code{_}}). Wichtig dabei ist, +dass musikalische Funktionen, die das Nachereignis ausgeben, als +normale Noten akzeptiert werden. Dabei erhält man ein Resultat, das +etwa folgendem entspricht: + +@example +s 1*0-\fun +@end example + +In diesem Fall kann man keinen @emph{offenen} musikalischen Ausdruck als +letztes Argument einsetzen, also ein Argument, das in einem musikalischen +Ausdruck schließt, der weitere Nach-Ereignisse akzeptieren kann. + +@item +Als Element eines Akkordes. Der ausgegebene Ausdruck muss vom Typ +@code{rhythmic-event} sein, wahrscheinlich auch @code{NoteEvent}. + +@end itemize + +@noindent +Die besonderen Regeln für noch nicht abgearbeitete Argumente machen es +möglich, polymorphe Funktionen wie @code{\tweak} zu schreiben, +die auf unterschiedliche Konstruktionen angewendet werden können. + + @node Einfache Ersetzungsfunktionen @subsection Einfache Ersetzungsfunktionen @translationof Simple substitution functions @@ -129,7 +406,7 @@ manualBeam = (parser location beg-end) (pair?) #@{ - \once \override Beam #'positions = $beg-end + \once \override Beam #'positions = #beg-end #@}) \relative c' @{ @@ -148,7 +425,7 @@ manualBeam = (parser location beg end) (number? number?) #{ - \once \override Beam #'positions = $(cons beg end) + \once \override Beam #'positions = #(cons beg end) #}) \relative c' { @@ -170,9 +447,9 @@ AltOn = (parser location mag) (number?) #{ - \override Stem #'length = $(* 7.0 mag) + \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = - $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #}) AltOff = { @@ -196,9 +473,9 @@ withAlt = (parser location mag music) (number? ly:music?) #{ - \override Stem #'length = $(* 7.0 mag) + \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = - $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) $music \revert Stem #'length \revert NoteHead #'font-size @@ -247,36 +524,41 @@ lilypond -d display-bar-numbers Dateiname.ly aufgerufen werden. - -@node Leere Funktionen -@subsection Leere Funktionen -@translationof Void functions +@node Leere musikalische Funktionen +@subsection Leere musikalische Funktionen +@translationof Void music functions Eine musikalische Funktion muss einen musikalischen Ausdruck -ausgeben, aber in manchen Fällen müssen Funktionen erstellt werden, -die keine Noten enthalten (wie etwa eine Funktion, mit der -man @qq{Point and Click} ausschalten kann). Um das vornehmen zu -können, wird ein @code{leere}r musikalischer Ausdruck ausgegeben. - -Das ist der Grund, warum die Form, die ausgegeben wird, -@w{@code{(make-music @dots{})}} heißt. Wird die Eigenschaft -@code{'void} (engl. für @qq{leer}) auf @code{#t} gesetzt, wird der -Parser angewiesen, den ausgegebenen musikalischen Ausdruck zu ignorieren. -Der maßgebliche Teil der @code{'void}-Funktion ist also die Verarbeitung, -die die Funktion vornimmt, nicht der musikalische Ausdruck, der ausgegeben -wird. +ausgeben. Wenn man eine Funktion nur für ihre Nebeneffekte +ausführt, sollte man @code{define-void-function} benützen. +Es kann aber auch Fälle geben, in denen man teilweise eine +musikalische Funktion erstellen will, teilweise aber nicht +(wie im vorherigen Beispiel). Indem man eine leere (@code{void}) +Funktion mit @code{#@{ #@}} ausgibt, wird das erreicht. -@example -noPointAndClick = -#(define-music-function - (parser location) - () - (ly:set-option 'point-and-click #f) - (make-music 'SequentialMusic 'void #t)) -... -\noPointAndClick % Point and Click ausschalten -@end example +@node Ereignisfunktionen +@section Ereignisfunktionen +@translationof Event functions + +@funindex define-event-function +@cindex Ereignisfunktionen + +Damit man eine musikalische Funktion anstelle eines Ereignisses benützen +kann, muss man ihr einen Richtungsindikator voranstellen. Manchmal +entspricht dies jedoch nicht der Syntax der Konstruktionen, die man ersetzen +will. Dynamikbefehle beispielsweise werden normalerweise ohne Richtungsangabe +angehängt, wie @code{c'\pp}. Das Folgende ist eine Möglichkeit, beliebige +Dynamikbefehle zu schreiben: + +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } +@end lilypond + +Man kann das Gleiche auch mit einer musikalischen Funktion erreichen, aber dann +muss man immer einen Richtungsindikator voranstellen, wie @code{@w{c-\dyn pfsss}}. @node Textbeschriftungsfunktionen @@ -318,14 +600,17 @@ ist identisch mit @example -\markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @} - \larger \line @{ foo bar baz @} @} +#@{ \markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @} + \larger \line @{ foo bar baz @} @} #@} @end example @noindent Dieses Beispiel zeigt die hauptsächlichen Übersetzungsregeln zwischen normaler Textbeschriftungssyntax von LilyPond und der -Textbeschriftungssyntax in Scheme. +Textbeschriftungssyntax in Scheme. Es ist meistens der beste +Weg, @code{#@{ @dots{} #@}} zur Eingabe von LilyPond-Syntax zu +benützen, aber es soll auch erklärt werden, wie man das +@code{markup}-Makro einsetzt, um eine Lösung nur in Scheme zu bekommen. @quotation @multitable @columnfractions .3 .3 @@ -549,7 +834,8 @@ Auch der Abstand zwischen den zwei Kästen ist uns zu klein und soll auch vergrößert werden: @lilypond[quote,verbatim,ragged-right] -\markup \override #'(box-padding . 0.4) \box \override #'(box-padding . 0.6) \box A +\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box A @end lilypond Diese lange Textbeschriftung immer wieder schreiben zu müssen, ist @@ -557,6 +843,16 @@ anstrengend. Hier kömmt ein Textbeschriftungsbefehl ins Spiel. Wir schreiben uns alle einen @code{double-box}-Beschriftungsbefehl, der ein Argument annimmt (den Text). Er zeichnet zwei Kästen mit genügend Abstand: +@lisp +#(define-markup-command (double-box layout props text) (markup?) + "Draw a double box around text." + (interpret-markup layout props + #@{\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box @{ $text @}#@})) +@end lisp + +oder äquivalent + @lisp #(define-markup-command (double-box layout props text) (markup?) "Draw a double box around text." @@ -570,10 +866,11 @@ und @code{markup?} ist seine Art: hiermit wird der Befehl als Beschriftungsbefehl identifiziert. Die @code{interpret-markup}-Funktion wird in den meisten Beschriftungsbefehlen benutzt: sie erstellt einen Stencil, wobei @code{layout}, @code{props} und eine Beschriftung benutzt -werden. In unserem Fall wird diese Beschriftung durch das -@code{markup}-Scheme-Makro erstellt, siehe auche @ref{Beschriftungskonstruktionen in Scheme}. +werden. Im zweiten Fall wird diese Beschriftung durch das +@code{markup}-Scheme-Makro erstellt, siehe auche +@ref{Beschriftungskonstruktionen in Scheme}. Die Transformation des @code{\markup}-Ausdrucks in einen -Scheme-Beschriftungsausdruck geschieht durch umschreiben des LilyPond-Codes +Scheme-Beschriftungsausdruck geschieht durch Umschreiben des LilyPond-Codes in Scheme-Code. Der neue Befehl kann wie folgt benutzt werden: @@ -591,6 +888,20 @@ definiert werden: @code{inter-box-padding} für den Abstand zwischen den Kästen @code{box-padding} wird für den inneren Abstand benutzt. Der neue Befehl wird so definiert: +@lisp +#(define-markup-command (double-box layout props text) (markup?) + #:properties ((inter-box-padding 0.4) + (box-padding 0.6)) + "Draw a double box around text." + (interpret-markup layout props + #@{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + @{ $text @} #@})) +@end lisp + +Wiederum wäre die entsprechende Version mit dem @code{markup}-Makro +so aussehen: + @lisp #(define-markup-command (double-box layout props text) (markup?) #:properties ((inter-box-padding 0.4) @@ -620,8 +931,9 @@ der Kästen kann angepasst werden: (box-padding 0.6)) "Draw a double box around text." (interpret-markup layout props - (markup #:override `(box-padding . ,inter-box-padding) #:box - #:override `(box-padding . ,box-padding) #:box text))) + #{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + { $text } #})) \markup \double-box A \markup \override #'(inter-box-padding . 0.8) \double-box A @@ -736,10 +1048,19 @@ denen die erste Zeile eingerückt ist. Der Einzug wird aus dem @example #(define-markup-list-command (paragraph layout props args) (markup-list?) - (let ((indent (chain-assoc-get 'par-indent props 2))) - (interpret-markup-list layout props - (make-justified-lines-markup-list (cons (make-hspace-markup indent) - args))))) + #:properties ((par-indent 2)) + (interpret-markup-list layout props + #@{\markuplist \justified-lines @{ \hspace #par-indent $args @} #@})) +@end example + +Die Version nur in Scheme ist etwas komplexer: + +@example +#(define-markup-list-command (paragraph layout props args) (markup-list?) + #:properties ((par-indent 2)) + (interpret-markup-list layout props + (make-justified-lines-markup-list (cons (make-hspace-markup par-indent) + args)))) @end example Neben den üblichen @code{layout} und @code{props}-Argumenten nimmt der @@ -751,17 +1072,17 @@ Zuerst errechnet die Funktion die Breite des Einzugs, eine Eigenschaft mit der Bezeichnung @code{par-indent} anhand der Eigenschaftsliste @code{props}. Wenn die Eigenschaft nicht gefunden wird, ist der Standardwert @code{2}. Danach wird eine Liste von Zeilen im Blocksatz -erstellt, wobei die @code{make-justified-lines-markup-list}-Funktion -eingesetzt wird, die verwandt ist mit dem eingebauten -@code{\justified-lines}-Beschriftungslistenbefehl. Horizontaler -Platz wird zu Beginn eingefügt mit der @code{make-hspace-markup}-Funktion. -Zuletzt wird die Beschriftungsliste ausgewertet durch die -@code{interpret-markup-list}-Funktion. +erstellt, wobei der eingebaute @code{\justified-lines}-Beschriftungslistenbefehl +eingesetzt wird, der verwandt ist mit der +@code{make-justified-lines-markup-list}-Funktion. Horizontaler +Platz wird zu Beginn eingefügt mit @code{\hspace} (oder der +@code{make-hspace-markup}-Funktion). Zuletzt wird die Beschriftungsliste +ausgewertet durch die @code{interpret-markup-list}-Funktion. Dieser neue Beschriftungslistenbefehl kann wie folgt benutzt werden: @example -\markuplines @{ +\markuplist @{ \paragraph @{ Die Kunst des Notensatzes wird auch als \italic @{Notenstich@} bezeichnet. Dieser Begriff stammt aus dem traditionellen Notendruck. Noch bis vor etwa @@ -778,7 +1099,6 @@ Dieser neue Beschriftungslistenbefehl kann wie folgt benutzt werden: @end example - @node Kontexte für Programmierer @section Kontexte für Programmierer @translationof Contexts for programmers @@ -959,14 +1279,20 @@ mein-callback = #(lambda (grob) @end example - - - - @node Scheme-Code innerhalb LilyPonds @section Scheme-Code innerhalb LilyPonds @translationof Inline Scheme code +TODO: das Beispiel für diesen Abschnitt ist nicht gut gewähtl: + +@example +F = -\tweak #'font-size #-3 -\flageolet +@end example +(beachte @samp{-}, was ein Nachereignis anzeigt) funktioniert +für den geschilderten Zweck sehr gut. Aber bis der Abschnitt +neu geschrieben wird, nehmen wir einfach an, dass wir das nicht +wissen. + Der hauptsächliche Nachteil von @code{\tweak} ist seine syntaktische Inflexibilität. Folgender Code beispielsweise ergibt einen Syntaxfehler: @@ -980,10 +1306,6 @@ F = \tweak #'font-size #-3 -\flageolet @end example @noindent -Anders gesagt verhält sich @code{\tweak} nicht wie eine Artikulation -und kann auch nicht deren Syntax verwenden: man kann es nicht -mit @code{^} oder @code{_} anfügen. - Durch die Verwendung von Scheme kann dieses Problem umgangen werden. Der Weg zum Resultat wird gezeigt in @ref{Artikulationszeichen zu Noten hinzufügen (Beispiel)}, insbesondere diff --git a/Documentation/de/extending/scheme-tutorial.itely b/Documentation/de/extending/scheme-tutorial.itely index 4e1a55f8e4..1432b4b218 100644 --- a/Documentation/de/extending/scheme-tutorial.itely +++ b/Documentation/de/extending/scheme-tutorial.itely @@ -1,20 +1,20 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437 + Translation of GIT committish: 233fb6a8b3b6e31de1841641dbbd4c4f43423151 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" +@c \version "2.16.0" @node Scheme-Übung @chapter Scheme-Übung @translationof Scheme tutorial -@funindex # + @cindex Scheme @cindex GUILE @cindex Scheme, in einer LilyPond-Datei @@ -72,11 +72,19 @@ man in einer Scheme-sandbox experimentieren, indem man ein Kommandozeilen-Fenster öffnet und @code{guile} aufruft. Unter einigen Systemen, insbesondere unter Windows, muss man evtl. die Umgebungsvariable @code{GUILE_LOAD_PATH} auf das Verzeichnis -@code{../usr/shr/guile/1.8} innerhalb des LilyPond-Installationsverzeichnisses +@code{../usr/share/guile/1.8} innerhalb des LilyPond-Installationsverzeichnisses setzen (der vollständige Pfad ist erklärt in @rlearning{Mehr Information}). Alternativ können Windows-Benutzer auch einfach @qq{Ausführen} im Startmenü wählen und @code{guile} schreiben. +Es gibt auch eine direkte Scheme-Umgebung mit allen LilyPond-Voreinstellungen, +die man auf der Kommandozeile mit folgendem Befehl aufrufen kann: + +@example +lilypond scheme-sandbox +@end example + +@noindent Wenn guile einmal läuft, erhält man die Eingabeaufforderung von guile: @lisp @@ -84,6 +92,11 @@ guile> @end lisp Man kann Scheme-Ausdrucke hier eingeben und mit Scheme experimentieren. +Siehe die Datei @file{ly/scheme-sandbox.ly} zu Information, wie man +die GNU readline-Bibliothek benutzen kann, um bessere Scheme-Formatierung +der Kommandozeile zu erhalten. Wenn die readline-Bibliothek für interaktive +Guile-Sitzungen außerhalb von LilyPond schon aktiviert ist, sollte es auch +in der Sandbox funktionieren. @node Scheme-Variablen @@ -157,7 +170,7 @@ für Wahr ist @code{#t} und für Falsch @code{#f}. @item Zahlen Zahlen werden wie üblich eingegeben, @code{1} ist die (ganze) -Zahl Eins, während @code{-1.5} eine Gleitkommazahl (also +Zahl Eins, während @w{@code{-1.5}} eine Gleitkommazahl (also eine nicht-ganze) ist. @item Zeichenketten @@ -633,24 +646,63 @@ guile> (cond ((< a b) "a is less than b") @subsection LilyPond Scheme-Syntax @translationof LilyPond Scheme syntax -Der Guile-Auswerter ist ein Teil von LilyPond, sodass Scheme also auch in -normale LilyPond-Eingabedateien eingefügt werden kann. Das Rautenzeichen -(@code{#}) wird benutzt, um dem LilyPond-Parser mitzuteilen, dass der nächste -Wert ein Scheme-Wert ist. - -Wenn der Parser eine Raute sieht, wird der Eingabe-Code an den Guile-Auswerter -weitergereicht, der den Scheme-Ausdruck auswertet. Der Auswerter behandelt -die Eingabe so lange, bis er zum Ende eines Scheme-Ausdrucks kommt. +@funindex $ +@funindex # -Scheme-Prozeduren können in LilyPond-Eingabedateien definiert werden: +Der Guile-Auswerter ist ein Teil von LilyPond, sodass Scheme also auch in +normale LilyPond-Eingabedateien eingefügt werden kann. Es gibt mehrere +Methoden, um Scheme in LilyPond zu integrieren. + +Die einfachste Weise ist es, ein Rautenzeichen@tie{}@code{#} vor einem +Scheme-Ausdruck zu benutzen. + +Die Eingabe von LilyPond ist in Zeichen und Ausdrücke gegliedert, so etwa +wie die menschliche Sprache sich in Wörter und Sätze gliedert. LilyPond +hat einen Lexer, der Zeichen erkennt (Zahlen, Zeichenketten, Scheme-Elemente, +Tonhöhen usw.) und einen Parser, der die Syntax versteht, @ruser{LilyPond grammar}. +Wenn dann eine bestimmte Syntaxregel als zuständig erkannt wurde, werden die +damit verknüpften Aktionen ausgeführt. + +Die Rautenzeichenmethode (@code{#}), mit der Scheme eingebettet werden kann, +passt sehr gut in dieses System. Wenn der Lexer ein Rautenzeichen sieht, ruft +er den Scheme-reader auf, um den ganzen Scheme-Ausdruck zu lesen (das kann eine +Variable, ein Ausdruck in Klammern oder verschiedene andere Sachen sein). Nachdem +der Scheme-Ausdruck gelesen wurde, wird er als Wert eines @code{SCM_TOKEN} in der +Grammatik gespeichert. Wenn der Parser weiß, wie er diesen Wert benutzen kann, +ruft er Guile auf, um den Scheme-Ausdruck auszuwerten. Weil der Parser normalerweise +dem Lexer etwas voraus sein muss, ist die Trennung von Lesen und Auswerten zwischen +Lexer und Parser genau das richtige, um die Auswertung von LilyPond- und +Scheme-Ausdrücken synchron zu halten. Aus diesem Grund sollte das Rautenzeichen +zum Einbinden von Scheme immer benutzt werden, wenn es möglich ist. + +Eine andere Möglichkeit, Scheme aufzurufen, ist die Benutzung des Dollarzeichens +(@code{$}) anstelle der Raute. In diesem Fall wertet LilyPond den Code sofort +aus, nachdem der Lexer ihn gelesen hat. Dabei wird der resultierende +Scheme-Ausdruckstyp geprüft und eine Tokentyp dafür ausgesucht (einer von mehreren +@code{xxx_IDENTIFIER} in der Syntax). Wenn der Wert des Ausdrucks gültig ist +(der Guilde-Wert für @code{*unspecified*}), dann wird nichts an den Parser +übergeben. + +Das ist auch der gleiche Mechanismus, nach dem LilyPond funktioniert, wenn man eine Variable oder musikalische Funktion mit ihrer Bezeichnung ausruft, wie +in @code{\Bezeichnung}, mit dem einzigen Unterschied, dass ihr Ende durch den +LilyPond-Lexer bestimmt wird, ohne den Scheme-reader einzubeziehen, und also +nur Variablen akzeptiert werden, die im aktuellen LilyPond-Modus gültig sind. + +Die direkte Auswirkung von @code{$} kann zu Überraschungen führen, siehe auch +@ref{Eingabe-Variablen und Scheme}. Es bietet sich daher an, @code{#} immer +zu benützen, wenn der Parser es unterstützt. + +Jetzt wollen wir uns tatsächlichen Scheme-Code anschauen. Scheme-Prozeduren +können in LilyPond-Eingabedateien definiert werden: @example #(define (average a b c) (/ (+ a b c) 3)) @end example LilyPond-Kommentare (@code{%} oder @code{%@{ %@}}) können innerhalb -von Scheme-Code nicht benutzt werden. Kommentare in Guile Scheme -werden wie folgt notiert: +von Scheme-Code nicht benutzt werden, nicht einmal in einer LilyPond-Eingabedatei, +weil der Guile-Interpreter und nicht der LilyPond-Parser den Scheme-Ausdruck +liest. Kommentare in Guile Scheme werden wie folgt notiert: @example ; Einzeiliges Kommentar @@ -664,7 +716,7 @@ werden wie folgt notiert: @end example Für den Rest dieses Abschnitts soll angenommen werden, dass die Daten in -einer LilyPond-Eingabedatei notiert werden sollen, sodass immer @code{#} +einer LilyPond-Eingabedatei notiert werden sollen, sodass immer@tie{}@code{#} vor die Scheme-Ausdrücke gestellt wird. Alle Scheme-Ausdrücke auf oberster Ebene in einer LilyPond-Eingabedatei @@ -707,6 +759,16 @@ Vierundzwanzig = #(* 2 Zwoelf) was zur Folge hätte, dass die Zahl 24 in der LilyPond (und Scheme-)Variablen @code{Vierundzwanzig} gespeichert wird. +Üblicherweise greift man auf LilyPond-Variablen zu, indem man ihnen einen +Backslash voranstellt. Siehe auch @ref{LilyPond Scheme-Syntax}, also etwa +@code{\Vierundzwanzig}. Weil dadurch eine Kopie des Wertes für die meisten +von LilyPonds internen Typen erstellt wird (insbesondere musikalische Funktionen), +erstellen musikalische Funktionen normalerweise Kopien von Material, das sie +verändern. Aus diesem Grund sollten musikalische Funktionen, die mit @code{#} +aufgerufen werden, kein Material enthalten, dass entweder von Grund auf neu +erstellt wird oder explizit kopiert wird, sondern besser direkt auf das relevante +Material verweisen. + @node Eingabe-Variablen und Scheme @subsection Eingabe-Variablen und Scheme @@ -761,9 +823,6 @@ Variable @code{twice} importiert: @lilypond[verbatim] traLaLa = { c'4 d'4 } -%% dummy action to deal with parser lookahead -#(display "this needs to be here, sorry!") - #(define newLa (map ly:music-deep-copy (list traLaLa traLaLa))) #(define twice @@ -772,25 +831,38 @@ traLaLa = { c'4 d'4 } { \twice } @end lilypond -In diesem Beispiel geschieht die Zuweisung, nachdem der Parser sichergestellt -hat, dass nichts interessantes mehr nach @code{traLaLa = @{ ... @}} passiert. -Ohne die Dummy-Aussage in dem Beispiel würde die @code{newLa}-Definition ausgeführt, -bevor @code{traLaLa} definiert ist, was einen Syntax-Fehler hervorrufen würde. +Das ist ein interessantes Beispiel. Die Zuweisung findet erst statt, +nachdem der Parser sichergestellt hat, dass nichts folgt, das Ähnlichkeit +mit @code{\addlyrics} hat, sodass er prüfen muss, was als nächstes kommt. +Er liest @code{#} und den darauf folgenden Scheme-Ausdruck, @emph{ohne} ihn +auszuwerten, so dass er weiterlesen und erst @emph{danach} +wird der Scheme-Code ohne Probleme ausführen kann. Das Beispiel zeigt, wie man musikalische Ausdrücke aus der Eingabe in den Scheme-Auswerter @qq{exportieren} kann. Es geht auch andersherum. Indem -man Scheme-Werten in die Funktion @code{ly:export} einschließt, wird ein +man Scheme-Werte nach @code{$} schreibt, wird ein Scheme-Wert interpretiert, als ob er in LilyPond-Syntax eingeben wäre. Anstatt @code{\twice} zu definieren, könne man also auch schreiben: @example ... -@{ #(ly:export (make-sequential-music (list newLa))) @} +@{ $(make-sequential-music (list newLa)) @} @end example -Scheme-Code wird sofort interpretiert, wenn der Parser darauf stößt. Um -Scheme-Code als Makro zu definieren (das später aufgerufen werden soll), -muss man @ref{Leere Funktionen} benutzen oder +Mann kann @code{$} zusammen mit einem Scheme-Ausdruck überall benutzen, +wo auch @code{\@var{Bezeichnung}} gültig wäre, nachdem der Scheme-Ausdruck +einmal einer Variable @var{Bezeichnung} zugewiesen worden ist. Der Austausch +geschieht im Lexer, sodass LilyPond den Unterschied gar nicht merkt. + +Ein negativer Effekt ist aber das Timing. Wenn man @code{$} anstelle von +@code{#} für die Definition von @code{newLa} im obigen Beispiel eingesetzt +hätte, würde der folgende Scheme-Ausdruck fehlschlagen, weil @code{traLaLa} +noch nicht definiert worden wäre. Zu einer Erklärung dieses Timingproblems +siehe @ref{LilyPond Scheme-Syntax}. + +Auf jeden Fall findet die Auswertung des Scheme-Codes spätestens im Parser +statt. Wenn man es noch später ausgeführt haben möchte, muss man +@ref{Leere Scheme-Funktionen} benutzen oder es in einem Makro speichern: @example #(define (nopc) @@ -804,7 +876,7 @@ muss man @ref{Leere Funktionen} benutzen oder @knownissues Scheme- und LilyPond-Variablen können nicht gemischt werden, wenn man die -@code{--safe}-Option benutzt. +@option{--safe}-Option benutzt. @node Objekteigenschaften @@ -848,10 +920,8 @@ Das Hals-Objekt hat also eine @code{thickness}-Eigenschaft, während @subheading Abstände (offset) - - Zweidimensionale Abstände (X- und Y-Koordinaten) werden -als @code{pairs} (Paare) gespeichert. Der @code{car}-Wert des +als @emph{pairs} (Paare) gespeichert. Der @code{car}-Wert des Abstands ist die X-Koordinate und der @code{cdr}-Wert die Y-Koordinate. @@ -866,6 +936,16 @@ nach rechts verschiebt und zwei Breiten nach oben. Prozeduren, um mit Abständen zu arbeiten, finden sich in @file{scm/lily-library.scm}. +@subheading Brüche (fractions) + +Brüche, wie sie LilyPond benutzt, werden wiederum als Paare gespeichert, +dieses Mal als unbezeichnete ganze Zahlen. Während Scheme rationale Zahlen +als einen negativen Typ darstellen kann, sind musikalische gesehen +@samp{2/4} und @samp{1/2} nicht das selbe, sodass man zwischen beiden unterscheiden +können muss. Ähnlich gibt es auch keine negativen Brüche in LilyPonds Sinn. +Somit bedeutet @code{2/4} in LilyPond @code{(2 . 4)} in Scheme, und @code{#2/4} in +LilyPond bedeutet @code{1/2} in Scheme. + @subheading Bereiche (extend) Paare werden auch benutzt, um Intervalle zu speichern, die einen Zahlenbereich @@ -1005,18 +1085,16 @@ zeigt: 'SequentialMusic 'elements (list (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 0 0)) - (make-music 'AbsoluteDynamicEvent 'text - "f"))))) + "f")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)))) @end example Normalerweise gibt LilyPond diese Ausgabe auf der Konsole mit @@ -1028,40 +1106,75 @@ umgeleitet werden: lilypond file.ly >display.txt @end example +Mit LilyPond- und Scheme-Magie kann man LilyPond anweisen, genau +diese Ausgabe an eine eigene Datei zu senden: + +@example +@{ + $(with-output-to-file "display.txt" + (lambda () #@{ \displayMusic @{ c'4\f @} #@})) +@} +@end example + Mit etwas Umformatierung ist die gleiche Information sehr viel einfacher zu lesen: @example (make-music 'SequentialMusic - 'elements (list (make-music 'EventChord - 'elements (list (make-music 'NoteEvent - 'duration (ly:make-duration 2 0 1 1) - 'pitch (ly:make-pitch 0 0 0)) - (make-music 'AbsoluteDynamicEvent - 'text "f"))))) + 'elements (list + (make-music 'NoteEvent + 'articulations (list + (make-music 'AbsoluteDynamicEvent + 'text + "f")) + 'duration (ly:make-duration 2 0 1 1) + 'pitch (ly:make-pitch 0 0 0)))) @end example Eine musikalische @code{@{ ... @}}-Sequenz hat die Bezeichnung @code{SequentialMusic} und ihre inneren Ausdrücke werden als Liste in seiner @code{'elements}-Eigenschaft gespeichert. Eine -Note ist als als ein @code{EventChord}-Ausdruck dargestellt, -der ein @code{NoteEvent}-Objekt (welches Dauer und +Note ist als als ein @code{EventChord}-Objekt dargestellt (welches Dauer und Tonhöhe speichert) und zusätzliche Information enthält (in diesem Fall ein @code{AbsoluteDynamicEvent} mit einer -@code{"f"}-Text-Eigenschaft. +@code{"f"}-Text-Eigenschaft). + +@funindex \void + +@code{\displayMusic} gibt die Noten aus, die dargestellt werden, sodass +sie sowohl angezeigt als auch ausgewertet werden. Um die Auswertung zu +vermeiden, kann @code{\void} vor @code{\displayMusic} geschrieben werden. @node Eigenschaften von Musikobjekten @subsection Eigenschaften von Musikobjekten @translationof Music properties -Das @code{NoteEvent}-Objekt ist das erste Objekt der -@code{'elements}-Eigenschaft von @code{someNote}. +TODO -- make sure we delineate between @emph{music} properties, +@emph{context} properties, and @emph{layout} properties. These +are potentially confusing. + +Schauen wir uns ein Beispiel an: @example someNote = c' \displayMusic \someNote ===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)) +@end example + +Das @code{NoteEvent}-Objekt ist die Repräsentation von @code{someNote}. +Einfach. Wie fügt man denn ein c' in einen Akkorde ein? + +@example +someNote = +\displayMusic \someNote +===> (make-music 'EventChord 'elements @@ -1073,6 +1186,9 @@ someNote = c' (ly:make-pitch 0 0 0)))) @end example +Jetzt ist das @code{NoteEvent}-Objekt das erste Objekt der +@code{'elements}-Eigenschaft von @code{someNote}. + Die @code{display-scheme-music}-Funktion ist die Funktion, die von @code{\displayMusic} eingesetzt wird, um die Scheme-Repräsentation eines musikalischen Ausdrucks anzuzeigen. @@ -1121,7 +1237,7 @@ d' In diesem Abschnitt soll gezeigt, werden, wie man eine Funktion erstellt, die eine Eingabe wie @code{a} -nach @code{a( a)} umdefiniert. Dazu wird zuerst die +nach @code{@{ a( a) @}} umdefiniert. Dazu wird zuerst die interne Repräsentation der Musik betrachtet, die das Endergebnis darstellt: @@ -1132,73 +1248,68 @@ das Endergebnis darstellt: 'SequentialMusic 'elements (list (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)) - (make-music 'SlurEvent 'span-direction - -1))) + -1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)) (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)) - (make-music 'SlurEvent 'span-direction - 1))))) + 1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) @end example Eine schlechte Nachricht ist, dass die @code{SlurEvent}-Ausdrücke @qq{innerhalb} -der Noten (bzw. innerhalb der -@code{EventChord}-Ausdrücke) hinzugefügt werden müssen. +der Noten (in ihrer @code{articulations}-Eigenschaft) hinzugefügt werden müssen. Jetzt folgt eine Betrachtung der Eingabe: @example +\displayMusic a' +===> (make-music - 'SequentialMusic - 'elements - (list (make-music - 'EventChord - 'elements - (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)))))) + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) @end example In der gewünschten Funktion muss also dieser Ausdruck kopiert werden (sodass zwei Noten vorhanden sind, die eine Sequenz bilden), dann müssen @code{SlurEvent} -zu der @code{'elements}-Eigenschaft jeder Noten hinzugefügt +zu der @code{'articulations}-Eigenschaft jeder Noten hinzugefügt werden, und schließlich muss eine @code{SequentialMusic} -mit den beiden @code{EventChords} erstellt werden. +mit den beiden @code{EventChords} erstellt werden. Um zu +einer Eigenschaft etwas hinzuzufügen, ist es nützlich zu wissen, dass +eine nicht gesetzte Eigenschaft als @code{'()} gelesen wird, sodass +keine speziellen Überprüfungen nötig sind, bevor ein anderes +Element vor die @code{articulations}-Eigenschaft gesetzt wird. @example doubleSlur = #(define-music-function (parser location note) (ly:music?) "Return: @{ note ( note ) @}. - `note' is supposed to be an EventChord." + `note' is supposed to be a single note." (let ((note2 (ly:music-deep-copy note))) - (set! (ly:music-property note 'elements) + (set! (ly:music-property note 'articulations) (cons (make-music 'SlurEvent 'span-direction -1) - (ly:music-property note 'elements))) - (set! (ly:music-property note2 'elements) + (ly:music-property note 'articulations))) + (set! (ly:music-property note2 'articulations) (cons (make-music 'SlurEvent 'span-direction 1) - (ly:music-property note2 'elements))) + (ly:music-property note2 'articulations))) (make-music 'SequentialMusic 'elements (list note note2)))) @end example @@ -1211,7 +1322,12 @@ Am einfachsten können Artikulationszeichen zu Noten hinzugefügt werden, indem man zwei musikalische Funktionen in einen Kontext einfügt, wie erklärt in @ruser{Kontexte erstellen}. Hier soll jetzt eine musikalische -Funktion entwickelt werden, die das vornimmt. +Funktion entwickelt werden, die das vornimmt. Daraus ergibt sich +der zusätzliche Vorteil, dass diese musikalische Funktion eingesetzt +werden kann, um eine Artikulation (wie etwa eine Fingersatzanweisung) +einer einzigen Note innerhalb eines Akkordes hinzugefügt werden +kann, was nicht möglich ist, wenn einfach unabhängige Noten ein einem +Kontext miteinander verschmolzen werden. Eine @code{$variable} innerhalb von @code{#@{...#@}} ist das gleiche wie die normale Befehlsform @code{\variable} in @@ -1240,18 +1356,28 @@ Ausgabe examiniert: \displayMusic c4 ===> (make-music - 'EventChord - 'elements - (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch -1 0 0)))) + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)))) ===== % gewünschte Ausgabe \displayMusic c4-> ===> +(make-music + 'NoteEvent + 'articulations + (list (make-music + 'ArticulationEvent + 'articulation-type + "accent")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)) +\displayMusic c4 +===> (make-music 'EventChord 'elements @@ -1260,41 +1386,35 @@ Ausgabe examiniert: 'duration (ly:make-duration 2 0 1 1) 'pitch - (ly:make-pitch -1 0 0)) - (make-music - 'ArticulationEvent - 'articulation-type - "marcato"))) + (ly:make-pitch -1 0 0)))) @end example -Dabei ist zu sehen, dass eine Note (@code{c4}) als @code{EventChord} -repräsentiert ist, mit einem @code{NoteEvent}-Ausdruck in ihrer -Elementenliste. Um eine Marcato-Artikulation hinzuzufügen, muss -ein @code{ArticulationEvent}-Ausdruck zu der Elementeigenschaft -des @code{EventChord}-Ausdrucks hinzugefügt werden. +Dabei ist zu sehen, dass eine Note (@code{c4}) als @code{NoteEvent}-Ausdruck +repräsentiert ist. Um eine Akzent-Artikulation hinzuzufügen, muss +ein @code{ArticulationEvent}-Ausdruck zu der Elementeigenschaft @code{articulations} +des @code{NoteEvent}-Ausdrucks hinzugefügt werden. Um diese Funktion zu bauen, wird folgendermaßen begonnen: @example -(define (add-marcato event-chord) - "Add a marcato ArticulationEvent to the elements of `event-chord', - which is supposed to be an EventChord expression." - (let ((result-event-chord (ly:music-deep-copy event-chord))) - (set! (ly:music-property result-event-chord 'elements) - (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements))) - result-event-chord)) +(define (add-accent note-event) + "Add an accent ArticulationEvent to the articulations of `note-event', + which is supposed to be a NoteEvent expression." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) @end example Die erste Zeile definiert eine Funktion in Scheme: Die Bezeichnung -der Funktion ist @code{add-marcato} und sie hat eine Variable -mit der Bezeichnung @code{event-chord}. In Scheme geht der Typ +der Funktion ist @code{add-accent} und sie hat eine Variable +mit der Bezeichnung @code{note-event}. In Scheme geht der Typ einer Variable oft direkt aus der Bezeichnung hervor (das ist auch eine gute Methode für andere Programmiersprachen). @example -"Add a marcato..." +"Add an accent..." @end example @noindent @@ -1302,91 +1422,103 @@ ist eine (englische) Beschreibung, was diese Funktion tut. Sie ist nicht unbedingt notwendig, aber genauso wie klare Variablen-Bezeichnungen ist auch das eine gute Methode. -@example -(let ((result-event-chord (ly:music-deep-copy event-chord))) -@end example - -@code{let} wird benutzt, um die lokalen Variablen zu definieren. Hier -wird eine lokale Variable benutzt: @code{result-event-chord}. Sie erhält -den Wert @code{(ly:music-deep-copy event-chord)}. @code{ly:music-deep-copy} -ist eine LilyPond-spezifische Funktion, die wie alle Funktionen mit dem -Präfix @code{ly:} versehen ist. Sie wird benutzt, um eine Kopie eines -musikalischen Ausdrucks anzufertigen. Hier wird @code{event-chord} -(der Parameter der Funktion) kopiert. Die Funktion soll ja nur ein -Artikulationszeichen an einen @code{EventChord} gehängt werden, deshalb ist es besser, -den @code{EventChord}, der als Argument gegeben wurde, nicht zu -verändern, weil er woanders benutzt werden könnte. - -Jetzt gibt es @code{result-event-chord}, wobei es sich um einen -@code{NoteEventChord}-Ausdruck handelt, welcher gleichzeitig eine Kopie -von @code{event-chord} ist. Das Makro wird seiner Eigenschaftsliste -hinzugefügt: +Es kann seltsam scheinen, warum das Notenereignis direkt verändert wird, +anstatt mit einer Kopie zu arbeiten (@code{ly:music-deep-copy} kann dafür +benützt werden). Der Grund ist eine stille Übereinkunft: musikalische +Funktionen dürfen ihre Argumente verändern: sie werden entweder von +Grund auf erstellt (wie Eingabe des Benutzers) oder sind schon kopiert +(etwa Verweis auf eine Variable mit @samp{\Bezeichnung} oder Noten aus +einem Scheme-Ausdruck @samp{$(@dots{})} sind Kopien). Weil es uneffizient +wäre, unnötige Kopien zu erstellen, wird der Wiedergabewert einer musikalischen +Funktion @emph{nicht} kopiert. Um sich also an die Übereinkunft zu halten, +dürfen Argumente nicht mehr als einmal benützt werden, und sie wiederzugeben +zählt als eine Benutzung. + +In einem früheren Beispiel wurden Noten konstruiert, indem ein musikalisches +Argument wiederholt wurde. In diesem Fall muss wenigstens eine Wiederholung +eine Kopie ihres Arguments sein. Wenn es keine Kopie ist, können seltsame +Dinge passieren. Wenn man beispielsweise @code{\relative} oder @code{\transpose} +auf die resultierenden Noten anwendet, die die gleichen Elemente mehrmals +enthalten, werden die Elemente mehrmals der @code{\relative}-Veränderung +oder Transposition unterworfen. Wenn man sie einer musikalischen Variable +zuweist, wird dieser Fluch aufgehoben, denn der Verweis auf @samp{\Bezeichnung} +erstellt wiederum eine Kopie, die nicht die Identität der wiederholten +Elemente überträgt. + +Während die Funktion oben keine musikalische Funktion ist, wird sie +normalerweise inmitten musikalischer Funktionen eingesetzt. Darum +ist es sinnvoll, der gleichen Übereinkunft zu folgen, die für musikalische +Funktionen gelten: Die Eingabe kann verändert worden sein, um die +Ausgabe zu produzieren, und der den Aufruf erstellt, ist verantwortlich +für die Erstellung von Kopien, wenn er immernoch die unveränderten +Argumente benötigt. Wenn man sich LilyPonds eigene Funktionen wie etwa +@code{music-map} anschaut, sieht man, dass sie denselben Prinzipien folgen. + +Aber wo waren wir? Jetzt gibt es ein @code{note-event}, das verändert +werden kann, nicht unter Einsatz von @code{ly:music-deep-copy} sondern +aufgrund einer langen Erklärung. Der Akzent wird zu seiner +@code{'articulations}-Liste hinzugefügt: @example -(set! place new-value) +(set! place neuer-Wert) @end example Was in diesem Fall @qq{gesetzt} werden soll (@qq{place}) ist die -@q{elements}-Eigenschaft des @code{result-event-chord}-Ausdrucks. +@q{'articulations}-Eigenschaft des @code{note-event}-Ausdrucks. @example -(ly:music-property result-event-chord 'elements) +(ly:music-property note-event 'articulations) @end example @code{ly:music-property} ist die Funktion, mit der musikalische -Eigenschaften erreicht werden können (die @code{'elements}, +Eigenschaften erreicht werden können (die @code{'articulations}, @code{'duration}, @code{'pitch} usw., die in der Ausgabe von @code{\displayMusic} weiter oben angezeigt werden). Der neue -Wert ist, was ehemals die Elementeigenschaft war, mit einem +Wert ist, was ehemals die @code{'articulations}-Eigenschaft war, mit einem zusätzlichen Element: dem @code{ArticulationEvent}-Ausdruck, -der aus der Ausgabe von -@code{\displayMusic} kopiert werden kann: +der aus der Ausgabe von @code{\displayMusic} kopiert werden kann: @example (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements)) + 'articulation-type "accent") + (ly:music-property result-event-chord 'articulations)) @end example -@code{cons} wird benutzt, um ein Element zu einer Liste hinzuzufügen, +@code{cons} wird benutzt, um ein Element vorne an eine Liste hinzuzufügen, ohne dass die originale Liste verändert wird. Das ist es, was die -Funktion tun soll: die gleiche Liste, aber mit dem neuen +Funktion tun soll: die gleiche Liste wie vorher, aber mit dem neuen @code{ArticulationEvent}-Ausdruck. Die Reihenfolge innerhalb der Elementeeigenschaft ist hier nicht relevant. -Wenn schließlich die Marcato-Artikulation zu der entsprechenden +Wenn schließlich die Akzent-Artikulation zu der entsprechenden @code{elements}-Eigenschaft hinzugefügt ist, kann -@code{result-event-chord} ausgegeben werden, darum die letzte Zeile +@code{note-event} ausgegeben werden, darum die letzte Zeile der Funktion. -Jetzt wird die @code{add-marcato}-Funktion in eine musikalische -Funktion umgewandelt: +Jetzt wird die @code{add-accent}-Funktion in eine musikalische +Funktion umgewandelt (hierzu gehört etwas syntaktischer Zuckerguß und +eine Deklaration des Typs ihres einzigen @qq{wirklichen} Arguments: @example -addMarcato = #(define-music-function (parser location event-chord) +addAccent = #(define-music-function (parser location note-event) (ly:music?) - "Add a marcato ArticulationEvent to the elements of `event-chord', - which is supposed to be an EventChord expression." - (let ((result-event-chord (ly:music-deep-copy event-chord))) - (set! (ly:music-property result-event-chord 'elements) - (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements))) - result-event-chord)) + "Add an accent ArticulationEvent to the articulations of `note-event', + which is supposed to be a NoteEvent expression." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) @end example Eine Überprüfung, dass die Funktion richtig arbeitet, geschieht folgendermaßen: @example -\displayMusic \addMarcato c4 +\displayMusic \addAccent c4 @end example - - - - @ignore @menu @@ -1415,7 +1547,7 @@ TODO Find a simple example @lilypond[quote,verbatim,ragged-right] padText = #(define-music-function (parser location padding) (number?) #{ - \once \override TextScript #'padding = #$padding + \once \override TextScript #'padding = #padding #}) \relative c''' { @@ -1438,7 +1570,7 @@ tempoPadded = #(define-music-function (parser location padding tempotext) (number? string?) #{ \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } + \tempo \markup { \bold #tempotext } #}) \relative c'' { diff --git a/Documentation/de/included/authors.itexi b/Documentation/de/included/authors.itexi deleted file mode 100644 index a589dca895..0000000000 --- a/Documentation/de/included/authors.itexi +++ /dev/null @@ -1,452 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; -*- -@c This file is part of community.itexi and ../topdocs/AUTHORS.itexi -@ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 - - 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. - - - - This file lists authors of LilyPond, and what they wrote. Each - list is sorted alphabetically by surname. This file lists people - that have contributed more than a few hours of work. - - Developers are people who are (or have been) listed under the - "Development Team" in the THANKS, and can choose their own - titles. Contributors are everybody else, and simply list their - contributions. All lists are sorted alphabetically. - - Anybody who has finished doing a "main devel team" task should - list it under developersPrevious, even if they're still doing - other "main devel team" stuff. See "Graham Percival" for an - example. - - Contributors are also split between Current and Previous, and - each category contains: - core... (programming) - font... (duh) - doc... (documentation and examples) - bug... (bug squad members) - support... (building, distributions, editors, - lilypond-book, LSR, but *not* answering emails) - translations... (duh) - We might add a "general" or "other" if there's something else. - -@end ignore - - -@macro developersCurrent - -@itemize - -@item Trevor Daniels: -@email{t.daniels@@treda.co.uk}, -Assistant documentation editor - -@item Reinhold Kainhofer: -@email{reinhold@@kainhofer.com}, -@uref{http://reinhold.kainhofer.com}, -Core developer, Music2xml wrangler - -@item David Kastrup: -@email{dak@@gnu.org} -Code worrier, support fighter, accordionist - -@item Jonathan Kulp: -Assistant documentation editor - -@item Werner Lemberg, -@email{wl@@gnu.org}, -Fonts, bug squasher - -@item John Mandereau: -@email{john.mandereau@@free.fr}, -Translations - -@item Patrick McCarty: -SVG guru, bug squad member, bug squasher, text handling - -@item Joe Neeman: -Core developer - -@item Han-Wen Nienhuys: -@email{hanwen@@xs4all.nl}, -@uref{http://www.xs4all.nl/~hanwen/}, -Main author - -@item Jan Nieuwenhuizen: -@email{janneke@@gnu.org}, -@uref{http://JoyofSource.com}, -@uref{http://AvatarAcademy.nl}, -Main author - -@item Graham Percival: -@uref{http://percival-music.ca}, -Project manager, Documentation Editor - -@item Mark Polesky: -Assistant documentation editor, Code cleanup - -@item Neil Puttock: -Core developer - -@item Mike Solomon: -@email{mike@@apollinemike.com}, -Contemporary music attaché - -@item Carl Sorensen: -@email{c_sorensen@@byu.edu}, -Core developer, Frog meister - -@item Francisco Vila: -Translation Meister - -@item Valentin Villenave: -LSR editor and Bug squad member - -@end itemize -@end macro - - - -@macro developersPrevious - -@itemize - -@c use colons not commas for @item entries. - -@item Mats Bengtsson: -@email{mats.bengtsson@@ee.kth.se}, -@uref{http://www.s3.kth.se/~mabe/}, -Support guru - -@item Pedro Kroeger: -Build meister - -@item John Mandereau: -@email{john.mandereau@@free.fr}, -Translation meister - -@item Graham Percival: -@uref{http://percival-music.ca}, -Bug meister, Grand Documentation Project leader - -@item Jürgen Reuter: -@email{reuter_j@@web.de}, -@uref{http://www.juergen-reuter.de}, -Ancient notation - -@item Erik Sandberg: -Bug meister - -@item Nicolas Sceaux: -Core developer, Schemer extraordinaire - -@end itemize -@end macro - - -@c ***************** current contributors - -@macro coreCurrent - -@c use commas not colons - -Sven Axelsson, -Pál Benkő, -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 Wilson, -Rodolfo Zitellini - -@c no comma for last entry - -@end macro - - - -@macro fontCurrent - -@c use commas not colons - -Keith OHara, -Marc Hohl, -Alexander Kobel, -Carsten Steger - -@c no comma for last entry - -@end macro - - - -@macro docCurrent - -@c use commas not colons - -Colin Campbell, -Andrew Hawryluk, -James Lowe, -Mike Moral, -Ralph Palmer, -David Pounder, -Patrick Schmidt - -@c no comma for last entry - -@end macro - - -@macro bugsquadCurrent - -James E. Bailey, -Colin Campbell, -Phil Holmes, -Urs Liska, -Ralph Palmer, -Kieren MacMillan, -Dmytro O. Redchuk - -@c no comma for last entry - -@end macro - - -@macro supportCurrent - -@c use commas not colons - -Christian Hitz - -@c no comma for last entry - -@end macro - - - -@macro translationsCurrent - -@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 - -@end macro - - -@c ***************** previous contributors - -@macro corePrevious - -@c use commas not colons - -Erlend Aasland, -Maximilian Albert, -Guido Amoruso, -Kristof Bastiaensen, -Pál Benkő, -@c @email{benkop@@freestart.hu}, -Juliusz Chroboczek, -@c @email{jch@@pps.jussieu.fr}, -Angelo Contardi, -David Feuer, -@c @email{david.feuer@@gmail.com}, -Bertalan Fodor, -Mathieu Giraud, -Yuval Harel, -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 Krause, -@c @email{m.krause@@tu-harburg.de}, -Jean-Baptiste Lamy, -@c @email{jiba@@tuxfamily.org}, -Jonatan Liljedahl, -Peter Lutek, -Hendrik Maryns, -Joe Neeman, -@c @email{joeneeman@@gmail.com}, -Matthias Neeracher, -Tatsuya Ono, -Lisa Opus Goldstein, -Guy Gascoigne-Piggford, -Stan Sanderson, -Edward Sanford Sutton, -Andreas Scherer, -Johannes Schindelin, -Kim Shrier, -Vicente Solsona Della, -David Svoboda, -Sebastiano Vigna, -Arno Waschk, -Michael Welsh Duggan, -John Williams, -Milan Zamazal, -Rune Zedeler - -@c no comma for last entry - -@end macro - - - -@macro fontPrevious - -@c use commas not colons - -Tom Cato Amundsen, -@c @email{tca@@gnu.org}, -Chris Jackson, -@c @email{chris@@fluffhouse.org.uk}, -Arno Waschk, -@c @email{arno@@arnowaschk.de}, -Rune Zedeler - -@c no comma for last entry - -@end macro - - - -@macro docPrevious - -@c use commas not colons - -Erlend Aasland, -Trevor Bača, -Alard de Boer, -Jay Hamilton, -Andrew Hawryluk, -Joseph Harfouch, -Cameron Horsburgh, -Geoff Horton, -Ian Hulin, -Heikki Junes, -@c @email{heikki.junes@@hut.fi}, -Kurtis Kroon, -Dave Luttinen, -Kieren MacMillan, -Christian Mondrup, -@c @email{scancm@@biobase.dk}, -Eyolf Østrem, -Ralph Palmer, -François Pinard, -@c @email{pinard@@iro.umontreal.ca}, -@c @uref{http://pinard.progiciels-bpi.ca/}, -Eduardo Vieira, -Michael Rasmussen, -Till Rettig, -Carl D. Sorensen, -Anh Hai Trinh, -Rune Zedeler - -@c no comma for last entry - -@end macro - - -@macro bugsquadPrevious - -@c nobody here yet - -@c no comma for last entry -@end macro - -@macro supportPrevious - -@c use commas not colons - -Anthony Fok, -@c @email{foka@@debian.org}, -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 - -@end macro - - - -@macro translationsPrevious - -@c use commas not colons - -Frédéric Chiasson, -Abel Cheung, -Alard de Boer, -Simon Dahlbacka, -Orm Finnendahl, -David González, -Nicolas Grandclaude, -@c @email{ngclaude@@123mail.org}, -Damien Heurtebise, -Matthieu Jacquot, -Bjoern Jacke, -@c @email{bjoern.jacke@@gmx.de}, -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}, -Adrian Mariano, -Christian Mondrup, -Tineke de Munnik, -@c @email{tdm@@dds.nl}, -Steven Michael Murphy, -François Pinard, -Gauvain Pocentek, -@c @email{gauvainpocentek@@yahoo.fr}, -Till Rettig, -Ludovic Sardain, -@c @email{ludovicsardain@@gmail.com}, -Yoshiki Sawada, -Thomas Scharkowski, -Clytie Siddall, -August S. Sigov, -@c @email{august@@infran.ru}, -Roland Stigge, -Risto Vääräniemi, -Andrea Valle, -Olcay Yıldırım - -@c no comma for last entry - -@end macro diff --git a/Documentation/de/included/generating-output.itexi b/Documentation/de/included/generating-output.itexi index 52a41af797..34e33733d5 100644 --- a/Documentation/de/included/generating-output.itexi +++ b/Documentation/de/included/generating-output.itexi @@ -3,7 +3,7 @@ @c learning/tutorial.itely @ignore - Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 + Translation of GIT committish: c1df40da9f8b2794e173583c363f9e736e5531bd When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -197,7 +197,9 @@ eine Datei zu kompilieren.} Erstellen Sie eine Text-Datei mit dem Namen @file{test.ly} und geben Sie folgenden Text ein: +@c double \\ required because this is inside a macro! @example +\\version "@w{@versionStable{}}" @{ c' e' g' e' @} @@ -218,7 +220,7 @@ Sie werden ungefähr folgende Meldungen sehen: @example lilypond test.ly -GNU LilyPond @version{} +GNU LilyPond @w{@versionStable{}} »test.ly« wird verarbeitet Analysieren... Interpretation der Musik... @@ -228,6 +230,7 @@ Musik wird auf eine Seite angepasst... Systeme erstellen... Layout nach »test.ps« ausgeben... Konvertierung nach »test.pdf«... +Erfolg: Kompilation erfolgreich beendet @end example @subsubheading 3. Schritt: Ausgabe anschauen diff --git a/Documentation/de/included/helpus.itexi b/Documentation/de/included/helpus.itexi index 0b61134a94..fd8331bcf2 100644 --- a/Documentation/de/included/helpus.itexi +++ b/Documentation/de/included/helpus.itexi @@ -3,7 +3,7 @@ @c contributor/introduction.itely @ignore - Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + Translation of GIT committish: 233fb6a8b3b6e31de1841641dbbd4c4f43423151 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -27,10 +27,10 @@ Aufgaben widmen anstatt diese einfachen Probleme zu lösen. @end macro -@macro helpusTasks +@macro helpusSimple @subheading Einfache Aufgaben -Keine Kompilation des Quellcodes nötig! +@strong{Keine Kentnisse im Programmieren} benötigt! @itemize @item @@ -42,6 +42,11 @@ Fehlerberichte: helfen Sie anderen Benutzern, richtige @ref{Fehlerberichte} zu erstellen und/oder schließen Sie sich dem Fehlerteam an, um die @rcontribnamed{Issues,Probleme} zu verwalten. +@item +@rcontrib{Grand Regression Test Checking}: Verfizieren Sie, dass LilyPond +richtig arbeitet, indem Sie die Ausgabe der Testschnipsel überprüfen. Ein +Schnipsel zu überprüfen dauert weniger als eine Minute! + @item Dokumentation: kleine Änderungen (immer zuerst auf Englisch) können vorgeschlagen werden, wenn die Richtlinien @@ -61,7 +66,10 @@ diesen Diskussionen teil! @end itemize +@end macro + +@macro helpusAdvanced @subheading Fortgeschrittene Aufgaben Diese Aufgaben setzen voraus, dass Sie die Quellen @@ -78,6 +86,10 @@ einsetzen, aber wenn Sie Ihre eigene Entwicklungsumgebung einrichten wollen, lesen Sie bitte @rcontribnamed{Working with source code,Mit dem Sourcecode arbeiten} und @rcontribnamed{Compiling,Kompilieren}. +Beginnen Sie, indem Sie das Kapitel +@rcontribnamed{Summary for experienced developers,Zusammenfassung für erfahrene Entwickler} +lesen. + @itemize @item Dokumentation: für große Änderungen siehe @@ -105,6 +117,7 @@ anzuschließen. Siehe auch @end macro +@ignore @macro helpusProjects @subheading Projekte @@ -141,7 +154,7 @@ angepasste) Syntax für die absehbare Zukunft unverändert bleiben. Es wird eine Zeit der ausführlichen Diskussionen geben, damit die endgültigen Eingabespezifikationen festgelegt werden können. -@warning{GLISS beginnt kurz nachdem 2.14 veröffentlicht wird.} +@warning{GLISS beginnt kurz nach der Veröffentlichung von 2.16.} @subsubheading GOP (Grand Organizing Project) @@ -162,8 +175,8 @@ völlig umzugestalten. Das Ziel ist es vielmehr, uns eine stabile Basis zu geben, sodass große Änderungen in der Zukunft einfacher bewerkstelligt werden können. -@warning{GOP beginnt kurz nachdem 2.14 veröffentlicht wird.} - @end macro +@end ignore + diff --git a/Documentation/de/learning.tely b/Documentation/de/learning.tely index 82617cdc61..ce9c6926b6 100644 --- a/Documentation/de/learning.tely +++ b/Documentation/de/learning.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -19,7 +19,7 @@ Diese Datei stellt eine Einleitung für LilyPond Version @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 bei den Autoren. +Copyright @copyright{} 1999--2012 bei den Autoren. @end macro @set FDL diff --git a/Documentation/de/learning/common-notation.itely b/Documentation/de/learning/common-notation.itely index c0dc4dfdea..f92465b8b1 100644 --- a/Documentation/de/learning/common-notation.itely +++ b/Documentation/de/learning/common-notation.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 3c814eb917c15f6f0d64f64f58046dd7b119e359 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @ignore Tutorial guidelines: @@ -110,7 +110,7 @@ der Tonart und den Versetzungszeichen, die direkt im Notentext erscheinen, unterschieden.} wird eingegeben, indem an den Notennamen ein @q{is} gehängt wird, ein @notation{B}-Versetzungszeichen durch Anhängen von @q{es}. Logischerweise wird dann ein - @notation{Doppelkreuz} oder @notation{Doppel-B} durch Anhängen +@notation{Doppelkreuz} oder @notation{Doppel-B} durch Anhängen von @q{isis} oder @q{eses} geschrieben. Diese Syntax stammt aus der Tradition der germanischen Sprachen und ist also für deutsche Benutzer kein Problem. Es ist aber möglich, die Namen für die @@ -205,6 +205,11 @@ In der Tonart As-Dur @emph{bekommt} sie ein Versetzungszeichen: aes4 c b c @end lilypond +Wenn das alles sehr verwirrend erscheint, muss man sich nur vorstellen, +dass man auf einer Klaviatur spielt: Wenn man eine schwarze Taste drücken +würde, @emph{muss} man auch @w{@code{-is}} oder @w{@code{-es}} an die +Note anhängen. + Alle diese Versetzungszeichen ausdrücklich zu schreiben, bedeutet vielleicht etwas mehr Schreibarbeit, hat aber den großen Vorteil, dass @notation{Transpositionen} sehr viel einfacher gemacht wird @@ -903,7 +908,9 @@ den Akkorden kombiniert werden. Sie müssen jedoch außerhalb der spitzen Klammern gesetzt werden. @lilypond[verbatim,quote,relative=2] -8[ ] \>[ ]\! | +r4 ~ 2 | +8[ ] +8\>[ ]\! | r4 8.\p 16( 4-. ) | @end lilypond @@ -1382,7 +1389,7 @@ Benutzung der eben definierten Bezeichner: Titel, Komponist, Opusnummern und ähnliche Information werden in einer @code{\header}-Umgebung eingefügt. Diese Umgebung befindet sich außerhalb der musikalischen Ausdrücke, meistens wird die -@code{\header}-Umgebung direkt nach der @ref{Versionsnummer} eingefügt. +@code{\header}-Umgebung direkt nach der Versionsnummer eingefügt. @example \version @w{"@version{}"} @@ -1400,7 +1407,7 @@ außerhalb der musikalischen Ausdrücke, meistens wird die Wenn die Datei übersetzt wird, werden Titel- und Komponisteneinträge über der Musik ausgegeben. Mehr Information über die Titelei findet -sich im Kapitel @ruser{Titel erstellen}. +sich im Abschnitt @ruser{Titel erstellen}. @node Absolute Notenbezeichnungen diff --git a/Documentation/de/learning/fundamental.itely b/Documentation/de/learning/fundamental.itely index 7cdb97f2e5..4a98597dfb 100644 --- a/Documentation/de/learning/fundamental.itely +++ b/Documentation/de/learning/fundamental.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Till Paala, Reinhold Kainhofer @node Grundbegriffe @@ -1018,6 +1018,8 @@ anzupassen. Wir sind aber noch nicht so weit, dass wir diese Funktionen anwenden könnten. Darum heben wir uns das Problem für einen späteren Abschnitt auf; siehe @code{force-hshift}-Eigenschaft in @ref{Überlappende Notation in Ordnung bringen}. +@warning{Gesangstext und Strecker (wie etwa Bögen, Crescendo-Klammern usw.) können +nicht von einer Stimme zur anderen erstellt werden.} @seealso Notationsreferenz: @ruser{Mehrere Stimmen}. @@ -1743,7 +1745,7 @@ Alle Engraver haben zusammengesetzte Bezeichnung, die aus den (englischen) Wörtern ihrer Funktionsweise bestehen. Nur das erste Wort hat einen Großbuchstaben, und die restlichen Wörter werden mit einem Unterstrich angefügt. Ein -@code{Staff_symbol_engraver} verantwortet also die Erstellung +@code{Staff_symbol_engraver} verantwortet also die Erstellung der Notenlinien, ein @code{Clef_engraver} entscheidet über die Art der Notenschlüssel und setzt die entsprechenden Symbole; damit wird gleichzeitig die Referenztonhöhe auf dem Notensystem festgelegt. @@ -1778,7 +1780,7 @@ abzuleiten. @item Rest_engraver @tab Erstellt Pausen. @item Staff_symbol_engraver - @tab Ersetllt die (standardmäßig) fünf Notenlinien des Systems. + @tab Erstellt die (standardmäßig) fünf Notenlinien des Systems. @item Stem_engraver @tab Erstellt die Notenhälse und Tremolos mit einem Hals. @item Time_signature_engraver @@ -1945,11 +1947,11 @@ ausgeschaltet sind: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1960,11 +1962,11 @@ während das dazu dient, sie in allen Systemen auszuschalten: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -2018,9 +2020,9 @@ eingegeben werden kann. @cindex Kontexteigenschaft, setzen mit \with Die Standardwerte von Kontexteigenschaften können zu dem Zeitpunkt -definiert werden, an welchem der Kontext erstellt wird. Manchmal +definiert werden, an welchem der Kontext erstellt wird. Manchmal ist das eine saubere Weise, eine Eigenschaft zu bestimmen, die für -die gesamte Partitur erhalten bleichen soll. Wenn ein Kontext mit +die gesamte Partitur erhalten bleiben soll. Wenn ein Kontext mit einem @code{\new}-Befehl erstellt wird, können in einer direkt folgenden @code{\with @{ .. @}}-Umgebung die Eigenschaften bestimmt werden. Wenn also die zusätzlichen @@ -2038,11 +2040,11 @@ etwa so: << \new Staff \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } \new Staff \with { extraNatural = ##f } { \relative c'' { - gis ges aes ais + gisis4 gis aeses aes } } >> @@ -2087,7 +2089,7 @@ Funktion anwendet: \score { \new Staff { \relative c'' { - cis4 e d ces + cisis4 e d cis } } \layout { @@ -2107,12 +2109,12 @@ Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> diff --git a/Documentation/de/learning/preface.itely b/Documentation/de/learning/preface.itely index fd3370e16e..4fb53b3939 100644 --- a/Documentation/de/learning/preface.itely +++ b/Documentation/de/learning/preface.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @node Vorwort @unnumbered Vorwort diff --git a/Documentation/de/learning/templates.itely b/Documentation/de/learning/templates.itely index 30e4302385..863024d153 100644 --- a/Documentation/de/learning/templates.itely +++ b/Documentation/de/learning/templates.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -39,25 +39,25 @@ schönen Notenbild erfreuen! @appendixsubsec Nur Noten -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec Noten und Text -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec Noten und Akkordbezeichnungen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec Noten, Text und Akkordbezeichnungen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -67,41 +67,35 @@ schönen Notenbild erfreuen! @appendixsubsec Piano Solo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec Klavier und Gesangstimme -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec Klavier mit zentriertem Text -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-centered-lyrics.ly} -@appendixsubsec Klavier mit zentrierten Lautstärkebezeichnungen - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -{piano-template-with-centered-dynamics.ly} - - @node Streichquartett @appendixsec Streichquartett @translationof String quartet -@appendixsubsec Streichquartett +@appendixsubsec Einfaches Streichquartett -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec Streichquartettstimmen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -111,43 +105,43 @@ schönen Notenbild erfreuen! @appendixsubsec SATB-Partitur -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec SATB-Partitur und automatischer Klavierauszug -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} -@appendixsubsec SATB mit zugehörigen Kontexten +@appendixsubsec SATB mit daran ausgerichteten Kontexten -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly} @appendixsubsec SATB auf vier Systemen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {satb-choir-template---four-staves.ly} @appendixsubsec Sologesang und zweistimmiger Refrain -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} @appendixsubsec Hymnen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {hymn-template.ly} @appendixsubsec Psalmengesang -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {anglican-psalm-template.ly} @@ -156,7 +150,7 @@ schönen Notenbild erfreuen! @translationof Orchestral templates @appendixsubsec Orchester, Chor und Klavier -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -166,14 +160,14 @@ schönen Notenbild erfreuen! @translationof Ancient notation templates @appendixsubsec Transkription mensuraler Musik - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Vorlage zur Transkription von Gregorianik -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @node Andere Vorlagen @@ -184,7 +178,8 @@ schönen Notenbild erfreuen! @appendixsubsec Jazz-Combo @translationof Jazz combo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {jazz-combo-template.ly} @@ -208,7 +203,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print @ The `line-width' is for \header. @li lypond[quote,verbatim,ragged-right,line-width] -\version "2.14.0" +\version "2.16.0" \header { dedication = "dedication" title = "Title" diff --git a/Documentation/de/learning/tutorial.itely b/Documentation/de/learning/tutorial.itely index 843d8b29b3..0e2288f099 100644 --- a/Documentation/de/learning/tutorial.itely +++ b/Documentation/de/learning/tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Till Paala, Reinhold Kainhofer @c Translation checkers: Hajo Bäß @@ -25,7 +25,7 @@ vor. * Eine Quelldatei übersetzen:: * Arbeiten an Eingabe-Dateien:: * Mit Fehlern umgehen:: -* Wie soll das Handbuch gelesen werden:: +* Wie die Handbücher gelesen werden sollen:: @end menu @@ -93,7 +93,7 @@ weggelassen werden. Es kann sein, dass in diesem Handbuch die Klammern in manchen Beispielen fehlen, aber man sollte immer daran denken, sie in den eigenen Dateien zu benutzen! Mehr Informationen zu der Darstellung der Beispiele in diesem -Handbuch gibt der Abschnitt @ref{Wie soll das Handbuch gelesen werden}.} +Handbuch gibt der Abschnitt @ref{Wie die Handbücher gelesen werden sollen}.} Zusätzlich unterscheidet LilyPond @strong{Groß- und Kleinschreibung}. @w{@samp{ @{ c d e @}}} ist zulässiger Code, @@ -796,7 +796,7 @@ cut-&-pastable section} bis ganz zum Ende der Datei. @n ode Navigation mit der Tastatur @s ubsection Navigation mit der Tastatur -@translationof Keyboard navigation +@t ranslationof Keyboard navigation @warning{Diese Funktion gibt es nur für die HTML-Version der Handbücher.} diff --git a/Documentation/de/learning/tweaks.itely b/Documentation/de/learning/tweaks.itely index 93fd3a75e2..f451fc3687 100644 --- a/Documentation/de/learning/tweaks.itely +++ b/Documentation/de/learning/tweaks.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @node Die Ausgabe verändern @chapter Die Ausgabe verändern @@ -310,9 +310,11 @@ b4 c | @funindex once Sowohl der @code{\override}-Befehl als auch der @code{\set}-Befehl können mit -dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird +dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird der folgende @code{\override}- oder @code{\set}-Befehl nur für den aktuellen -Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen +Musik-Moment wirksam, bevor sich wieder der vorherige Zustand herstellt +(dieser kann sich vom Standard unterscheiden, wenn etwa noch ein anderer +@code{\override}-Befehl aktiv ist). Am gleichen Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes geändert werden: @@ -323,10 +325,12 @@ geändert werden: @lilypond[quote,fragment,ragged-right,verbatim,relative=1] c4 d -\once \override NoteHead #'color = #red +\override NoteHead #'color = #red e4 f | \once \override NoteHead #'color = #green -g4 a b c | +g4 a +\revert NoteHead #'color +b c | @end lilypond @@ -339,7 +343,7 @@ g4 a b c | Es gibt eine andere Form des @code{override}-Befehls, @code{\overrideProperty} (überschreibe Eigenschaft), -welcher ab und zu benötigt wird. Es wird hier nur der +welcher ab und zu benötigt wird. Es wird hier nur der Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert in @rextend{Schwierige Korrekturen}. @c Maybe explain in a later iteration -td @@ -352,16 +356,17 @@ in @rextend{Schwierige Korrekturen}. @funindex tweak Der letzte Optimierungsbefehl in LilyPond ist @code{\tweak} -(engl. optimieren). Er wird eingesetzt um Eigenschaften -von Objekten zu verändern, die zum selben Musik-Moment -auftreten, wie etwa die Noten eines Akkordes. Ein +(engl. optimieren). Er wird eingesetzt um Eigenschaften +nur eines Objektes von mehreren Objekten zu verändern, +die zum selben Musik-Moment +auftreten, wie etwa die Noten eines Akkordes. Ein @code{\override} würde alle Noten des Akkords beeinflussen, während mit @code{\tweak} nur das nächste Objekt der Eingabe geändert wird. Hier ein Beispiel. Angenommen, die Größe des mittleren Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert -werden. Schauen wir zuerst, was wir mit +werden. Schauen wir zuerst, was wir mit @code{\once \override} erhalten: @cindex Schriftgröße, Beispiel @@ -376,23 +381,18 @@ werden. Schauen wir zuerst, was wir mit @end lilypond Wie man sehen kann, beeinflusst @code{override} @emph{alle} -Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten +Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten eines Akkordes zum selben Musik-Moment auftreten und die Funktion von @code{\once} ist es, die Optimierung auf an allen Objekten auszuführen, die zum selben Musik-Moment auftreten wie der @code{\override}-Befehl. Der @code{\tweak}-Befehl funktioniert anders. Er bezieht sich -auf das direkt folgende Element in der Eingabe-Datei. Es wirkt +auf das direkt folgende Element in der Eingabe-Datei. Es wirkt aber auch nur mit Objekten, die direkt von der Eingabe kreiert werden, insbesondere Notenköpfe und Artikulationszeichen. Objekte wie etwa Hälse oder Versetzungszeichen werden erst später erstellt und lassen sich nicht auf diese Weise ändern. -Zusätzlich @emph{müssen} sich etwa Notenköpfe innerhalb -eines Akkordes befinden, d. h. sie müssen von einfachen spitzen -Klammern umschlossen sein. Um also eine einzelne Note -mit @code{\tweak} zu verändern, muss der Befehl innerhalb -der spitzen Klammern zusammen mit der Note eingegeben werden. Um also zu unserem Beispiel zurückzukommen, könnte man die mittlere Note eines Akkordes auf diese Weise ändern: @@ -432,9 +432,11 @@ a4^"Black" @end lilypond @noindent -Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikator -vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen -wäre. +Beachten Sie, dass ein Artikulationsmodifikator vor dem @code{\tweak}-Befehl +geschrieben werden muss, weil auch der @code{\tweak}-Ausdruck als +Artikulation angefügt wird. Im Falle von mehreren Richtungsmodifikatoren +(@code{^} or @code{_}) gilt der Modifikator links außen, weil er als +letzter angefügt wird. @cindex Triolen, geschachtelt @cindex N-tolen, geschachtelt @@ -511,7 +513,7 @@ Notationsreferenz: @menu * Eigenschaften von Layoutobjekten:: -* Eigenschaften, die Schnittstellen besitzen können:: +* Eigenschaften die Schnittstellen besitzen können:: * Typen von Eigenschaften:: @end menu @@ -634,7 +636,7 @@ Sie sollten folgendes finden: @end example Das sieht ganz danach aus, als ob damit die Dicke geändert -werden kann. Es bedeutet, dass der Wert von +werden kann. Es bedeutet, dass der Wert von @code{thickness} einfach eine Zahl (@emph{number}) ist, dass der Standardwert 1.2 ist, und dass die Einheit für die Dicke eine andere Eigenschaft mit der @@ -642,18 +644,17 @@ Bezeichnung @code{line-thickness} ist. Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen in der IR, aber wir haben schon genug Informationen, um -zu versuchen, die Dicke eines Legatobogens zu ändern. Die -Bezeichnung des Layout-Objekts ist offensichtlich -@code{Slur} und die Bezeichnung der Eigenschaft, die geändert -werden soll -@code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein, +zu versuchen, die Dicke eines Legatobogens zu ändern. Die +Bezeichnung des Layout-Objekts ist offensichtlich @code{Slur} +und die Bezeichnung der Eigenschaft, die geändert werden soll +@code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein, denn der Bogen soll ja dicker werden. Den benötigten @code{\override}-Befehl können wir jetzt einfach konstruieren, indem wir die Werte für die Bezeichnungen in den -Modellbefehl einfügen und den Kontext auslassen. Setzen wir +Modellbefehl einfügen und den Kontext auslassen. Setzen wir einmal einen sehr großen Wert für die Dicke um zu sehen, ob der -Befehl auch funktioniert. Also: +Befehl auch funktioniert. Also: @example \override Slur #'thickness = #5.0 @@ -852,7 +853,7 @@ zu geben, die relevante Information dort zu finden. Die Beispiele werden Schritt für Schritt immer weniger Erklärungen beinhalten. -@node Eigenschaften, die Schnittstellen besitzen können +@node Eigenschaften die Schnittstellen besitzen können @subsection Eigenschaften, die Schnittstellen besitzen können @translationof Properties found in interfaces @@ -1034,7 +1035,7 @@ wenn sie in einem @code{\override}-Befehl benutzt werden. @item Richtung @tab Eine gültige Richtungskonstante oder das numerische Äquivalent @tab @code{LEFT}, @code{CENTER}, @code{UP}, - @code{1}, @code{-1} + @code{1}, @w{@code{-1}} @item Integer @tab Eine positive ganze Zahl @tab @code{3}, @code{1} @@ -1053,7 +1054,7 @@ wenn sie in einem @code{\override}-Befehl benutzt werden. @code{(ly:make-moment 3 8)} @item Zahl @tab Eine beliebige positive oder negative Dezimalzahl - @tab @code{3.5}, @code{-2.45} + @tab @code{3.5}, @w{@code{-2.45}} @item Paar (Zahlenpaar) @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert und angeführt von einem Apostroph @@ -1107,7 +1108,7 @@ eingefügt. Wie verhindern wir, dass sie ausgegeben werden? Bevor wir uns hieran machen, sei daran erinnert, dass Objekteigenschaften in sogenannten @emph{Schnittstellen} -- engl. interface -- gruppiert sind, siehe auch -@ref{Eigenschaften, die Schnittstellen besitzen können}. Das dient ganz einfach +@ref{Eigenschaften die Schnittstellen besitzen können}. Das dient ganz einfach dazu, die Eigenschaften zusammenzufassen, die üblicherweise zusammen benötigt werden -- wenn eine davon für ein Objekt gilt, dann auch die anderen. Manche Objekte brauchen die @@ -1228,7 +1229,7 @@ Versuchen wir es also, und berücksichtigen wir auch den @code{Staff}-Kontext. Beachten Sie auch, dass Sie @code{#'#} vor der öffnenden Klammer schreiben müssen: @code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu -signalisieren, und das erste @code{#} wird benötigt, um +signalisieren, und das erste@tie{}@code{#} wird benötigt, um den Wert in einem @code{\override}-Befehl anzuführen. @cindex Taktlinie, Beispiel zur Veränderung @@ -1909,7 +1910,7 @@ a4 g c a @end lilypond Hier werden die Konstanten @code{DOWN} und @code{UP} -eingesetzt. Sie haben die Werte @code{-1} bzw. @code{+1}, und +eingesetzt. Sie haben die Werte @w{@code{-1}} bzw. @code{+1}, und diese numerischen Werte können ebenso benutzt werden. Auch der Wert @code{0} kann in manchen Fällen benutzt werden. Er bedeutet für die Hälse das gleiche wie @code{UP}, für einige @@ -2101,7 +2102,7 @@ Wenn die Fingersatzbezeichnung zu gedrungen aussieht, kann auch die Schriftgröße (@code{font-size}) verringert werden. Der Standardwert kann aus dem @code{Fingering}-Objekt in der IR entnommen werden, -er ist @code{-5}, versuchen wir es also mit @code{-7}. +er ist @w{@code{-5}}, versuchen wir es also mit @w{@code{-7}}. @lilypond[quote,fragment,ragged-right,verbatim,relative=1] \override Fingering #'font-size = #-7 @@ -2675,12 +2676,12 @@ Objekten benutzt werden, die das @code{self-alignment-interface} unterstützen. Das sind üblicherweise Objekte, die Text enthalten. Die möglichen Werte der Eigenschaft sind @code{LEFT}, @code{RIGHT} oder @code{CENTER}. Alternativ kann ein -numerischer Wert zwischen @code{-1} und @code{+1} -bestimmt werden: @code{-1} heißt linksbündig, @code{+1} +numerischer Wert zwischen @w{@code{-1}} und @code{+1} +bestimmt werden: @w{@code{-1}} heißt linksbündig, @code{+1} rechtsbündig und Zahlen dazwischen bewegen den Text schrittweise von links nach rechts. Zahlen größer als @code{1} können angegeben werden, um den Text -noch weiter nach links zu bewegen, oder weniger als @code{-1}, +noch weiter nach links zu bewegen, oder weniger als @w{@code{-1}}, um ihn weiter nach rechts zu schieben. Eine Änderung um @code{1} des Wertes entspricht einer Bewegung um die halbe Textbreite. @@ -3002,7 +3003,7 @@ also die zweite Stimme in der @code{<<@{...@} \\ @{...@}>>}-Konstruktion) wird die Position auf dem System (@code{staff-position}) auf -4 für @code{MultiMeasureRest}, in unserem Beispiel muss -es also bspw. auf die Position @code{-8} gesetzt werden, +es also bspw. auf die Position @w{@code{-8}} gesetzt werden, d.h. vier halbe Notenlinienabstände weiter nach unten: @cindex MultiMeasureRest, Beispiel zur Veränderung @@ -3093,22 +3094,29 @@ r4 \acciaccatura e8\( d8 c~ c d c d\) @end lilypond -Hier noch ein weiteres Beispiel aus der Einleitung von Chopins -Prelude Op. 28 Nr. 2, das untere System. Wie zu sehen ist, -stößt der Balken mit den oberen Noten zusammen: +Hier noch ein weiteres Beispiel. Wie zu sehen ist, +stößt der Balken mit den oberen Bögen zusammen: @lilypond[quote,verbatim,fragment,ragged-right] { - \clef "bass" - << { b,8 ais, b, g, } \\ { e, g e, g } >> - << { b,8 ais, b, g, } \\ { e, 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 Das kann manuell gelöst werden, indem beide Enden des Balkens -von ihrer Position 2 Notenlinienabstände über der Mittellinie -hochgeschoben werden, etwa auf 3: +von ihrer Position 1.81 Notenlinienabstände unter der Mittellinie +hochgeschoben werden, etwa auf 1: @cindex Balken, Beispiel zur Veränderung @cindex positions-Eigenschaft, Beispiel @@ -3116,20 +3124,26 @@ hochgeschoben werden, etwa auf 3: @lilypond[quote,verbatim,fragment,ragged-right] { - \clef "bass" + \time 4/2 << - \override Beam #'positions = #'(3 . 3) - { b,8 ais, b, g, } - \\ - { e, 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, g e, g } >> } @end lilypond @noindent -Hier ist zu beobachten, dass die Veränderung sich auch auf die -weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine +Hier ist zu beobachten, dass die Veränderung sich auch auf den +die erste Stimme des weiteren Taktes mit Achtelnoten auswirkt, während sie keine Auswirkung auf die Balken der zweiten Stimme hat. @subheading force-hshift (vertikale Verschiebunseigenschaft) @@ -3237,7 +3251,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3248,6 +3263,7 @@ rhMusic = \relative c'' { \stemDown % Stem on the d2 should be invisible \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t d2 } \new Voice { @@ -3685,7 +3701,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3696,6 +3713,7 @@ rhMusic = \relative c'' { \stemDown % Stem on the d2 should be invisible \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t d2 } \new Voice { @@ -3785,6 +3803,7 @@ den Stimmen stattfindet: << { \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t b8~ b\noBeam } \\ @@ -3801,6 +3820,7 @@ gesetzt wird: << { \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t \once \override Stem #'length = #8 b8~ b\noBeam } @@ -3958,7 +3978,7 @@ VerseOne = \lyrics { } VerseTwo = \lyricmode { - O | \emphasize Christ, \normal whose voice the | wa -- ters heard, + O | \once \emphasize Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { @@ -4007,20 +4027,18 @@ erklärt in @ref{Fortgeschrittene Optimierungen mit Scheme}. @lilypond[quote,verbatim,ragged-right] mpdolce = -#(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #(make-dynamic-script + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -4045,20 +4063,18 @@ wir sie also: @example %%% in Datei "definitions.ily" speichern mpdolce = -#(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #(make-dynamic-script + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) @end example Diese Datei wir mit dem @code{\include}-Befehl ziemlich weit oben @@ -4085,20 +4101,18 @@ Noten (in der Datei @file{music.ly}). @lilypond[quote,ragged-right] mpdolce = -#(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #(make-dynamic-script + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -4124,19 +4138,17 @@ wir also in @qq{4/4}. %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) \layout@{ \context @{ @@ -4159,19 +4171,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \layout{ \context { @@ -4211,19 +4221,17 @@ global geändert. %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) #(set-global-staff-size 23) @@ -4247,19 +4255,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) #(set-global-staff-size 23) @@ -4344,12 +4350,17 @@ benutzen: @item Linux Wechseln Sie in das Verzeichnis +@example @file{@var{INSTALL_VERZ}/lilypond/usr/@/share/lilypond/current/} +@end example @item MacOS X Wechseln Sie in das Verzeichnis +@example @file{@var{INSTALL_VERZ}/LilyPond.app/Contents/@/Resources/share/lilypond/current/} +@end example + indem Sie entweder mit dem Befehl @code{cd} vom Terminal aus in das Verzeichnis wechseln, oder mit Control-Klick auf das LilyPond-Programmsymbol gehen und @qq{Show Package Contents} @@ -4358,7 +4369,9 @@ auswählen. @item Windows Wechseln Sie mit dem Windows Explorer ins Verzeichnis +@example @file{@var{INSTALL_VERZ}/LilyPond/usr/@/share/lilypond/current/} +@end example @end itemize diff --git a/Documentation/de/macros.itexi b/Documentation/de/macros.itexi index 446e8e9b3d..ca8c5d2239 100644 --- a/Documentation/de/macros.itexi +++ b/Documentation/de/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + Translation of GIT committish: c1df40da9f8b2794e173583c363f9e736e5531bd When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -749,7 +749,7 @@ Für LilyPond Version @version{} @end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/de/notation.tely b/Documentation/de/notation.tely index aec979e5b7..729c265302 100644 --- a/Documentation/de/notation.tely +++ b/Documentation/de/notation.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -24,7 +24,7 @@ dem @rlearningnamed{Top, Handbuch zum Lernen} vertraut ist. @c `Notation Reference' was born 1999-10-11 with git commit 940dda0... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 bei den Autoren. +Copyright @copyright{} 1999--2012 bei den Autoren. @end macro diff --git a/Documentation/de/notation/ancient.itely b/Documentation/de/notation/ancient.itely index cf5452d03d..f00ca2022c 100644 --- a/Documentation/de/notation/ancient.itely +++ b/Documentation/de/notation/ancient.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -348,12 +348,12 @@ und @code{mensural}. Sie werden im folgenden Fragment demonstriert. Music Glossary: @rglos{custos}. -Referenz der Interna: -@rinternals{Custos}. - Schnipsel: @rlsr{Ancient notation}. +Referenz der Interna: +@rinternals{Custos}. + @c {{{2 Figured bass support @node Unterstützung für Generalbass @@ -762,7 +762,7 @@ werden. Neben dem Standardstil (@code{default}) ist nur (@code{mensural}) unterstützt. @lilypond[quote,fragment,ragged-right,verbatim] -\override Stem #'flag-style = #'mensural +\override Flag #'style = #'mensural \override Stem #'thickness = #1.0 \override NoteHead #'style = #'mensural \autoBeamOff @@ -1165,6 +1165,7 @@ Do-Schlüssel der Editio Vaticana \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'vaticana.punctum \clef "vaticana-do2" c @@ -1180,6 +1181,7 @@ Fa-Schlüssel der Editio Vaticana \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'vaticana.punctum \clef "vaticana-fa2" c @@ -1196,6 +1198,7 @@ Do-Schlüssel der Editio Medicaea \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'medicaea.punctum \clef "medicaea-do2" c @@ -1211,6 +1214,7 @@ Fa-Schlüssel der Editio Medicaea \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'medicaea.punctum \clef "medicaea-fa2" c @@ -1227,6 +1231,7 @@ Hufnagel Do-Schlüssel für den historischen Stil \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'hufnagel.punctum \clef "hufnagel-do2" c @@ -1242,6 +1247,7 @@ Hufnagel Fa-Schlüssel für den historischen Stil \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'hufnagel.punctum \clef "hufnagel-fa2" c @@ -1256,6 +1262,7 @@ Kombinierter Do/Fa-Hufnagelschlüssel für den historischen Stil \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'hufnagel.punctum \clef "hufnagel-do-fa" c @@ -1306,7 +1313,7 @@ unterstützt. Wenn versucht wird, ein Versetzungszeichen zu notieren, das von einem bestimmten Stil nicht unterstützt wird, wechselt LilyPond zu einem anderen Stil. -@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@c @lilypondfile[verbatim,quote,texidoc,doctitle] @c {ancient-accidentals.ly} Der Stil für Versetzungs- und Vorzeichen wird von der @@ -2563,7 +2570,7 @@ und etwa Synkopen nicht über Taktlinien hinweg aufgeteilt werden müssen, während man sich dennoch an den Taktlinien rhythmisch orientieren kann. -@lilypondfile[verbatim,lilyquote,texidoc] +@lilypondfile[verbatim,quote,texidoc] {mensurstriche-layout-bar-lines-between-the-staves.ly} @c This simple setup will take care of the @@ -2604,7 +2611,9 @@ unsichtbar gemacht werden oder mit @code{\override Stem #'length = #0} auf die Länge von 0 reduziert werden. Die Hälse müssen dann wieder an den entsprechenden Stellen mit @code{\once \override Stem #'transparent = ##f} -sichtbar gemacht werden (siehe auch Beispiel unten). +sichtbar gemacht werden (siehe auch Beispiel unten). Wenn Hälse +eingesetzt werden, die Fähnchen haben, muss zusätzlich auch noch +@code{\override Flag #'transparent = ##t} eingestellt werden. @b{Takt.} Für Gesang ohne Metrum gibt es einige Alternativen. @@ -2653,6 +2662,7 @@ verba = \lyricmode { \remove "Time_signature_engraver" \remove "Bar_engraver" \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } } } @@ -2671,7 +2681,8 @@ chant = \relative c' { c\breve \override NoteHead #'transparent = ##t c c c c c \revert NoteHead #'transparent \override Stem #'transparent = ##f \stemUp c4 b4 a - \override Stem #'transparent = ##t c2 c4 \divisioMaior + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t c2 c4 \divisioMaior c\breve \override NoteHead #'transparent = ##t c c c c c c c \revert NoteHead #'transparent c4 c f, f \finalis } @@ -2692,6 +2703,7 @@ verba = \lyricmode { \remove "Time_signature_engraver" \override BarLine #'transparent = ##t \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } } } @@ -2713,7 +2725,7 @@ der Originalnotation. Damit Silben mit unterschiedlicher Länge (etwa @qq{-ri} und @qq{-rum}) die Silbengruppen nicht ungleichmäßig aufweiten, -kann die @code{#'X-extent}-Eigenschaft des @code{LyricText}-Objekts +kann die @code{'X-extent}-Eigenschaft des @code{LyricText}-Objekts auf einen festen Wert gesetzt werden. Eine andere Möglichkeit wäre es, die Silben als Textbeschriftung einzufügen. Wenn weitere horizontale Anpassungen nötig sind, @@ -2745,6 +2757,7 @@ spirLyr = \lyricmode { \remove "Time_signature_engraver" \override BarLine #'X-extent = #'(-1 . 1) \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Beam #'transparent = ##t \override BarLine #'transparent = ##t \override TupletNumber #'transparent = ##t diff --git a/Documentation/de/notation/changing-defaults.itely b/Documentation/de/notation/changing-defaults.itely index 17d57d7569..18d2c948a6 100644 --- a/Documentation/de/notation/changing-defaults.itely +++ b/Documentation/de/notation/changing-defaults.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -37,15 +37,15 @@ der Interna}. Diese Referenz zeigt alle Variablen, Funktionen und Optionen, die in LilyPond möglich sind. Es existiert als ein HTML-Dokumente, das sich @c leave the @uref as one long line. -@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line}, +@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,on@/-line}, aber auch lokal in das LilyPond-Dokumentationspaket integriert lesen lässt. Intern benutzt LilyPond Scheme (ein LISP-Dialekt), um eine Infrastruktur zur Verfügung zu stellen. Wenn Layoutentscheidungen verändert werden sollen, müssen auf die programminternen Prozesse zugegriffen werden, wozu Scheme-Code benötigt wird. Scheme-Abschnitte werden in einer -LilyPond-Quelldatei mit einer Raute @code{#} begonnen (siehe auch -@rlearning{Scheme-Übung}). +LilyPond-Quelldatei mit einer Raute@tie{}@code{#} begonnen.@footnote{@rextend{Scheme-Übung} enthält eine kurze Übung, wie +man Zahlen, Listen, Zeichenketten und Symbole in Scheme notiert.} @menu @@ -72,7 +72,7 @@ verändern kann. * Umgebungs-Plugins verändern:: * Die Standardeinstellungen von Kontexten ändern:: * Neue Kontexte definieren:: -* Kontexte aneinander ausrichten:: +* Reihenfolge des Kontextlayouts:: @end menu @@ -384,7 +384,7 @@ die dem Kontext gegeben wurde. Diese Variante wird bei musikalischen Ausdrücken benutzt, die auf verschiedenen Ebenen interpretiert werden können. Beispielsweise der @code{\applyOutput}-Befehl (siehe -@ref{Eine Funktion auf alle Layout-Objekte anwenden}). Ohne einen +@rextend{Eine Funktion auf alle Layout-Objekte anwenden}). Ohne einen expliziten @code{\context} wird die Ausgabe normalerweise einem @code{Voice}-Kontext zugewiesen: @@ -570,7 +570,7 @@ nicht nur Eigenschaften, sie enthalten auch Plugins (@qq{engraver} genannt), die die einzelnen Notationselemente erstellen. Ein @code{Voice}-Kontext enthält beispielsweise einen @code{Note_heads_engraver}, der die Notenköpfe erstellt, und ein -@code{Staff}-Kontext einen @code{Key_signature_engraver}, der die +@code{Staff}-Kontext einen @code{Key_engraver}, der die Vorzeichen erstellt. Eine vollständige Erklärung jedes Plugins findet sich in @@ -736,28 +736,49 @@ sich auf alle Systeme in dieser Partitur erstrecken sollen. Veränderungen können auch für den @code{Score}- oder alle @code{Voice}-Kontexte auf gleiche Weise vorgenommen werden. -@knownissues +Kontextänderungen können in eine Variable geschrieben werden und dann +einer @code{\context}-Definition zu gewiesen werden, indem man der +Veränderung ein @code{\with} voranstellt: -Es ist nicht möglich, Kontextänderungen als Variable zu definieren und -sie dann in der @code{\context}-Definition anzuwenden, indem man die -Variable aufruft. +@lilypond[quote,verbatim] +blubb = \with { + fontSize = #-4 + \override Stem #'thickness = #4.0 + \remove "Time_signature_engraver" +} -Der Befehl @code{\Staff \RemoveEmptyStaves} überschreibt die -aktuellen Einstellungen für @code{Staff}. Wenn die Einstellungen -für Systeme verändert werden sollen, die @code{\Staff \RemoveEmptyStaves} -benutzen, müssen die Veränderungen gemacht werden, nachdem -@code{\Staff \RemoveEmptyStaves} aufgerufen wurde, etwa: +bla = \with { + fontSize = #3 + \override Stem #'thickness = #-2.0 +} -@example -\layout @{ - \context @{ - \Staff \RemoveEmptyStaves +melody = \relative c'' { + a4 a a a | + a4 a a a | +} - \override Stem #'thickness = #4.0 - @} -@} -@end example +\score { + << + \new Staff << + \melody + s1*0^"Small, thicker stems, no time signature" + >> + \new Staff \bla << + \melody + s1*0^"Different" + >> + >> + \layout { + \context { + \Staff + \blubb + } + } +} +@end lilypond + @c TODO: add \with in here. + @node Neue Kontexte definieren @subsection Neue Kontexte definieren @@ -802,6 +823,7 @@ in Jazzmusik anzuzeigen. squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice } \context { \Staff @@ -871,6 +893,7 @@ Die Noten sehen wie ein Querstrich aus und haben keine Hälse: @example \override NoteHead #'style = #'slash \override Stem #'transparent = ##t +\override Flag #'transparent = ##t @end example Alle diese Engraver müssen zusammenarbeiten, und das wird erreicht mit @@ -893,6 +916,7 @@ Alles zusammen haben wir folgende Einstellungen: squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice @} @end example @@ -951,82 +975,75 @@ notiert werden: @end example -@node Kontexte aneinander ausrichten -@subsection Kontexte aneinander ausrichten -@translationof Aligning contexts - -Neue Kontexte können über oder unter existierenden ausgerichtet -werden. Das kann nützlich sein, wenn man eine Chorparitur -oder Ossia schreiben will: - -@cindex Ossia - -@funindex alignAboveContext -@funindex alignBelowContext - -@lilypond[quote,ragged-right] -ossia = { f4 f f f } -\score{ - \relative c' \new Staff = "main" { - c4 c c c - << - \new Staff \with { alignAboveContext = #"main" } \ossia - { d8 f d f d f d f } - >> - } -} -@end lilypond - -@cindex verschachtelte Kontexte -@cindex Kontexte, verschachtelt +@node Reihenfolge des Kontextlayouts +@subsection Reihenfolge des Kontextlayouts +@translationof Context layout order +@cindex Kontext, Layoutreihenfolge @funindex \accepts -@funindex accepts @funindex \denies -@funindex denies -Kontexte wie @code{PianoStaff} können andere Kontexte innerhalb -enthalten. Kontexte, die als innere Kontexte akzeptiert werden, -werden in einer @qq{accepts}-Liste für den bestimmten Kontext -definiert. Kontexte, die sich nicht in dieser Liste finden, -werden unter den äußeren Kontext gesetzt. Der -@code{PianoStaff}-Kontext etwa akzeptiert die Kontexte @code{Staff} -und @code{FiguredBass} innerhalb, aber beispielsweise keinen -@code{Lyrics}-(Gesangstext)-Kontext. In dem folgenden Beispiel -wird deshalb der Gesangstext unter das gesamte Klaviersystem -gesetzt, anstatt zwischen die beiden Notensysteme zu kommen: +Kontexte werden in einer Systemgruppe normalerweise von oben nach +unten positioniert in der Reihenfolge, wie sie in der Quelldatei +auftreten. Wenn Kontext verschachtelt ewrden, enthält der äußere +Kontexte geschachtelte innere Kontexte, wie in der Quelldatei +angegeben, vorausgesetzt, die inneren Kontexte befinden sich auch +in der @qq{accepts}-Liste. Geschachtelte Kontexte, die nicht +in dieser @qq{accepts}-Liste enthalten sind, werden unterhalb +des äußeren Kontextes neu positioniert, anstatt innerhalb von ihm +gesetzt zu werden. + +Die @qq{accepts}-Liste eines Kontextes kann mit dem Befehlen +@code{\accepts} und @code{\denies} verändert werden. @code{\accepts} +fügt einen Kontext zur @qq{accepts}-Liste, und @code{\denies} +entfernt einen Kontext aus der Liste. Akkordbezeichnungen sollen +beispielsweise normalerweise nicht innerhalb eines @code{Staff}-Kontextes +geschachtelt werden, sodass der @code{ChordNames}-Kontext nicht +automatisch in der @qq{accepts}-Liste des @code{Staff}-Kontextes +geführt ist. Wenn er aber benötigt wird, kann er hinzugefügt werden: -@lilypond[verbatim,quote,relative=1] -\new PianoStaff -<< - \new Staff { e4 d c2 } - \addlyrics { Three blind mice } +@lilypond[verbatim,quote] +\score { \new Staff { - \clef "bass" - { c,1 } + c' d' e' f' + \chords { d1:m7 b1:min7.5- } } ->> +} @end lilypond -Die @qq{accepts}-Liste eines Kontextes kann verändert werden, so -dass sie weitere innere Kontexte akzeptiert. Wenn also der -Gesangstext als Teil eines Klaviersystems gesetzt werden soll, -müsste man schreiben: - -@lilypond[verbatim,quote,relative=1] -\new PianoStaff \with { \accepts Lyrics } -<< - \new Staff { e4 d c2 } - \addlyrics { Three blind mice } +@lilypond[verbatim,quote] +\score { \new Staff { - \clef "bass" - { c,1 } + c' d' e' f' + \chords { d1:m7 b1:min7.5- } } ->> + \layout { + \context { + \Staff + \accepts "ChordNames" + } + } +} @end lilypond -Das Gegenteil von @code{\accepts} ist @code{\denies}; es bedeutet, -dass ein Kontext aus der @code{\accepts}-Liste gestrichen wird. +@code{\denies} wird vorrangig eingesetzt, wenn ein neuer Kontext +basierend auf einem existierenden erstellt wird, aber sein +Schachtelungsverhalten sich unterscheidet. Der +@code{VaticanaStaff}-Kontext beispielsweise basiert auf dem +@code{Staff}-Kontext, hat aber den @code{VaticanaVoice}-Kontext +anstellt des @code{Voice}-Kontexts in seiner @qq{accepts}-Liste. + +Zur Erinnerung: ein Kontext wird automatisch erstellt, wenn ein +Befehl auftritt, der in den aktuellen Kontexten nicht enthalten +sein kann. Dass kann zu unerwarteten neuen Systemgruppen oder Partituren +führen. + +@seealso +Handbuch zur Benutzung: +@rprogram{Ein zusätzliches System erscheint}. + +Installierte Dateien: +@file{ly/engraver-init.ly}. @node Die Referenz der Programminterna erklärt @@ -1522,7 +1539,7 @@ wird der @code{\set}-Befehl eingesetzt: \set @var{Kontext}.@var{Eigenschaft} = #@var{Wert} @end example -@var{Wert} ist ein Scheme-Objekt, weshalb ihm @code{#} vorangestellt +@var{Wert} ist ein Scheme-Objekt, weshalb ihm@tie{}@code{#} vorangestellt werden muss. Kontexteigenschaften werden üblicherweise mit @code{kleinGroßbuchstabe} @@ -1798,7 +1815,7 @@ um nur den aktuellen Zeitwert zu verändern: Viele Eigenschaften können unabhängig von der Art der Daten, die sie enthalten, ausgeschaltet werden, indem man sie als @qq{falsch} -(@code{##f}) definiert. Dadurch wird diese Eigenschaft von LilyPond +(@code{#f}) definiert. Dadurch wird diese Eigenschaft von LilyPond ignoriert. Das ist insbesondere nützlich, wenn man Grob-Eigenschaften ausschalten will, die Probleme verursachen. @end ignore @@ -1971,7 +1988,7 @@ f' Der Strom der musikalischen Ereignisse (engl. music stream), der aus dem Quelltext erstellt wird, und zu dem auch die automatisch eingefügten Elemente gehören, kann betrachtet werden, siehe -@ref{Musikalische Funktionen darstellen}. Das kann nützlich sein, +@rextend{Musikalische Funktionen darstellen}. Das kann nützlich sein, wenn man herausfinden will, was mit dem @code{\tweak}-Befehl verändert werden kann. @@ -2192,7 +2209,6 @@ nur verändert werden, indem man sie vollständig als Alisten umdefiniert.} @menu * Eingabe-Modi:: * Richtung und Platzierung:: -* Reihenfolge des Kontextlayouts:: * Abstände und Maße:: * Eigenschaften des Staff-Symbols:: * Strecker:: @@ -2345,8 +2361,8 @@ benutzen) normalerweise weggelassen werden. In diesem Fall wird @item @code{\markup}-(Textbeschriftungs-)Befehlen @item @code{\tag}-Befehlen @item Textbeschriftungen in reiner Textform, wie etwa @code{-"string"} -@item Fingersatzanweisungen: @code{-1} -@item Abkürzungen von Artikulationen, wie @code{-.}, @code{->}, @code{--} +@item Fingersatzanweisungen: @w{@code{-1}} +@item Abkürzungen von Artikulationen, wie @w{@code{-.}}, @w{@code{->}}, @w{@code{--}} @end itemize Ausrichtungsmarkierer haben nur eine Auswirkung auf die nächste Note: @@ -2366,10 +2382,10 @@ Die Position oder Richtung vieler Layoutobjekte wird von der Der Wert der @code{direction}-Eigenschaft kann auf den Wert @code{1} gesetzt werden, was gleichbedeutend mit @qq{nach oben} -bzw. @qq{oberhalb} ist, oder auf den Wert @code{-1}, was +bzw. @qq{oberhalb} ist, oder auf den Wert @w{@code{-1}}, was @qq{nach unten} bzw. @qq{unterhalb} bedeutet. Die Symbole @code{UP} und @code{DOWN} können anstelle von @code{1} -und @code{-1} benutzt werden. Die Standardausrichtung kann +und @w{@code{-1}} benutzt werden. Die Standardausrichtung kann angegeben werden, indem @code{direction} auf den Wert @code{0} oder @code{CENTER} gesetzt wird. In vielen Fällen bestehen auch vordefinierte Befehle, mit denen die Ausrichtung @@ -2387,7 +2403,7 @@ In wenigen Fällen, von denen Arpeggio das einzige häufiger vorkommende Beispiel darstellt, entscheidet der Wert von @code{direction}, ob das Objekt auf der rechten oder linken Seite das Ursprungsobjektes ausgegeben wird. In diesem Fall -bedeutet @code{-1} oder @code{LEFT} @qq{auf der linken Seite} +bedeutet @w{@code{-1}} oder @code{LEFT} @qq{auf der linken Seite} und @code{1} oder @code{RIGHT} @qq{auf der rechten Seite}. @code{0} oder @code{CENTER} bedeutet @qq{benutze Standardausrichtung}. @@ -2404,35 +2420,16 @@ c2( c) c2( c) @end lilypond - -@node Reihenfolge des Kontextlayouts -@subsection Reihenfolge des Kontextlayouts -@translationof Context layout order - -@cindex Kontexte, Reihenfolge - -Kontexte werden normalerweise in einer Notensystemgruppe dargestellt, -von oben nach unten in der Reihenfolge, in der sie -in der Eingabedatei auftreten. Wenn Kontexte verschachtelt sind, -enthält der äußere Kontext die inneren geschachtelten Kontexte, -wie in der Eingabedatei angegeben, vorausgesetzt die inneren -Kontexte befinden sich in der @qq{accepts}-Liste des äußeren -Kontextes. Verschachtelte Kontexte, die nicht in dieser Liste -auftauchen, werden neu unter den äußeren Kontext angeordnet, anstatt -dass sie innerhalb dieses Kontextes gesetzt werden. - -Es ist wichtig zu erinnern, dass ein Kontext implizit erstellt -werden kann, wenn ein Befehl vorkommt und kein passender Kontext -zur Verfügung steht, um den Befehl auszuführen. Dadurch können -unerwartet neue Systeme oder Partituren erstellt werden. - -Die Standardreihenfolge, in der die Kontexte gesetzt werden und -die @qq{accepts}-Liste können geändert werden, siehe auch -@ref{Aligning contexts}. +In polyphoner Musik ist es normalerweise besser, eine explizite +Stimme (@code{voice} zu erstellen, als die Richtung eines Objektes zu +ändern. Zu mehr Information siehe @ref{Mehrere Stimmen}. @seealso -Handbuch zum Lernen -@rlearning{An extra staff appears}. +Handbuch zum Lernen: +@rlearning{within-staff (Objekte innerhalb des Notensystems)}. + +Notationsreferenz: +@ref{Mehrere Stimmen}. @node Abstände und Maße @@ -2750,7 +2747,7 @@ ist sein Wert mit 0 definiert. @item attach-dir Das entscheidet, wo die Linie auf der X-Achse beginnt und endet, -relativ zum Elternobjekt. Ein Wert @code{-1} (oder +relativ zum Elternobjekt. Ein Wert @w{@code{-1}} (oder @code{LEFT}) lässt die Linie an der linken Seite der Noten beginnen/enden, mit der sie verknüpft ist. @@ -2802,7 +2799,7 @@ c4^\startTextSpan c c c \stopTextSpan Dabei sollte beachtet werden, dass negative Werte das Objekt nach @emph{oben} verschieben, anders als man erwarten könnte, -weil der Wert @code{-1} oder @code{DOWN} bedeutet, dass +weil der Wert @w{@code{-1}} oder @code{DOWN} bedeutet, dass die @emph{Unterkante} des Textes mit der Streckerlinie ausgerichtet wird. Ein Wert @code{1} oder @code{UP} richtet die Oberkante des Textes mit der Streckerlinie aus. @@ -2972,7 +2969,7 @@ Im oberen Beispiel wird der weiße Schlüssel, der einen Wert von @code{1} für @code{layer} hat, nach den Notenlinien gesetzt (die einen Wert von @code{0} für @code{layer} haben) und überschneidet sie also. Um das zu ändern, muss dem @code{Clef}-Objekt -(Notenschlüssel) ein niedrigerer Wert, etwa @code{-1}, gegeben +(Notenschlüssel) ein niedrigerer Wert, etwa @w{@code{-1}}, gegeben werden, sodass es früher gesetzt wird: @lilypond[quote,verbatim,relative=2] @@ -3231,7 +3228,7 @@ Schlüsselsymbol als auch das damit verknüpfte Oktavierungssymbol. @seealso Handbuch zum Lernen: -@rlearning{Sichtbarkeit und Farbe von Objekten} +@rlearning{Sichtbarkeit und Farbe von Objekten}. @node Linienstile @@ -3279,7 +3276,7 @@ e2 \glissando f @end lilypond Der Wert von @code{Y} wird für den rechten Endpunkt auf -@code{-2} gesetzt. Die linke Seite kann ähnlich angepasst +@w{@code{-2}} gesetzt. Die linke Seite kann ähnlich angepasst werden, indem man @code{left} anstelle von @code{right} angibt. Wenn @code{Y} nicht gesetzt ist, wird der Wert ausgehend von @@ -3300,12 +3297,12 @@ werden, aber die Methode, mit der die Änderung vorgenommen werden muss, unterscheidet sich je nach Objekt. @menu -* Drehen von Objekten:: +* Drehen von Layout-Objekten:: * Textbeschriftung drehen:: @end menu -@node Drehen von Objekten -@unnumberedsubsubsec Drehen von Objekten +@node Drehen von Layout-Objekten +@unnumberedsubsubsec Drehen von Layout-Objekten @translationof Rotating layout objects @cindex Drehen von Objekten @@ -3375,6 +3372,7 @@ Aussehen des Notenbildes zu polieren. * Vertikale Gruppierung der grafischen Objekte („grob“s):: * stencils verändern:: * Formen verändern:: +* Reine und unreine Container:: @end menu @@ -3385,8 +3383,10 @@ Handbuch zum Lernen: Notationsreferenz: @ref{Die Referenz der Programminterna erklärt}, -@ref{Eigenschaften verändern}, -@ref{Schnittstellen für Programmierer}. +@ref{Eigenschaften verändern}. + +Erweitern: +@rextend{Schnittstellen für Programmierer}. Installierte Dateien: @file{scm/define-grobs.scm}. @@ -3545,12 +3545,12 @@ Zahl zugewiesen werden, in Einheiten der Hälfte der X-Gesamtausdehnung des Objekts. Negative Werte verschieben das Objekt nach rechts, positive nach links. Ein Wert von @code{0} zentriert das Objekt auf dem Referenzpunkt des -Ursprungs, ein Wert von @code{-1} richtet die linke Ecke des +Ursprungs, ein Wert von @w{@code{-1}} richtet die linke Ecke des Objekts am Referenzpunkt des Ursprungsobjektes aus, ein Wert von @code{1} richtet die rechte Ecke des Objektes am Referenzpunkt des Ursprungsobjektes aus. Die Symbole @code{LEFT}, @code{CENTER} und @code{RIGHT} können anstelle -von @code{-1, 0, 1} eingesetzt werden. +von @w{@code{-1}}, @code{0} und @code{1} eingesetzt werden. Normalerweise würde der @code{\override}-Befehl benutzt werden, um die Werte von @code{self-alignment-X} zu verändern, aber der @@ -3582,14 +3582,14 @@ Berechnung benutzt werden. Darum ist es kompliziert, den Wert für einige Objekte richtig anzupassen. Die Einheiten sind Halbe der vertikalen Ausdehnung des Objektes, welche normalerweise recht klein ist, sodass ziemlich große Werte -erforderlich sein können. Der Wert @code{-1} richtet die +erforderlich sein können. Der Wert @w{@code{-1}} richtet die untere Kante des Objekts am Referenzpunkt des Ursprungsobjektes aus, der Wert @code{0} richtet die Mitte des Objekts am Referenzpunkt des Ursprungsobjektes aus und der Wert @code{1} richtet die Oberkante des Objektes am Referenzpunkt des Ursprungsobjektes aus. Die Symbole @code{DOWN}, @code{CENTER} -und @code{UP} können anstelle von @code{-1, 0, 1} benutzt -werden. +und @code{UP} können anstelle von @w{@code{-1}}, @code{0} +und @code{1} benutzt werden. @emph{Automatische Ausrichtung in beide Richtungen} @@ -3798,13 +3798,11 @@ Alle Schriftzeichen in der feta-Schriftart können mit dem @code{\musicglyph}-Befehl erreicht werden. Siehe auch @ref{Die Feta-Schriftart}. - - @seealso Notationsreferenz: @ref{Graphische Notation innerhalb einer Textbeschriftung}, @ref{Text formatieren}, -@ref{Text markup commands}, +@ref{Textbeschriftungsbefehle}, @ref{Die Feta-Schriftart}. @@ -3851,7 +3849,7 @@ lösen würde. @lilypond[verbatim,quote,relative=1] << - { e1 ~ e } + { e1~ e } \\ { r4 } >> @@ -3888,10 +3886,10 @@ wird. { \once \override Tie #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) - e1 ~ e1 + e1~ e1 } \\ - { r4 4 } + { r4 } >> @end lilypond @@ -3899,9 +3897,129 @@ wird. Es ist nicht möglich, die Form von Bögen anhand ihrer @code{control-points}-Eigenschaft zu verändern, wenn -mehr als ein Bogen zum gleichen musikalischen Moment -auftritt, nicht einmal mit dem @code{\tweak}-Befehl. +mehrere Binde- oder Legatobögen zum gleichen musikalischen Moment +auftreten, nicht einmal mit dem @code{\tweak}-Befehl. Die Eigenschaft +@code{tie-configuration} von @code{TieColumn} kann jedoch verändert +werden, sodass Startlinie und Richtung wie benötigt platziert werden. + +@seealso +Referenz der Interna: +@rinternals{TieColumn}. + + +@cindex Scheme, reine Container +@cindex Scheme, unreine Container +@cindex reine Container, Scheme +@cindex unreine Container, Scheme +@cindex horizontale Platzierung, verändern + +@node Reine und unreine Container +@subsection Reine und unreine Container +@translationof Unpure-pure containers + +Unreine und reine Container (engl. unpure/pure containers) sind +nützlich, wenn man die Berechnungen der Platzierungen für die +@emph{Y-Achse} verändern will, insbesondere für @code{Y-offset} +und @code{Y-extent}. Mit diesen Containern kann die Veränderung +durch eine Scheme-Funktion anstelle einer direkten Zahl oder eines +Paares vorgenommen werden. + +Für bestimmte Grobs basiert die Eigenschaft @code{Y-extent} auf +der @code{stencil}-Eigenschaft. Wenn diese mit @code{\override} +verändert werden soll, braucht man eine zusätzliche Veränderung +von @code{Y-extent} mit einem unreinen-reinen Container. Wenn eine +Funktion @code{Y-offset} und/oder @code{Y-extent} verändert, wird +angenommen, dass dadurch Zeilenumbruchsberechnungen zu früh während +der Kompilation aufgerufen werden. Die Funktion wird also überhaupt +nicht ausgewertet (und gibt also normalerweise den Wert @samp{0} oder +@samp{'(0 . 0)} zurück), wodurch sich Zusammenstöße ergeben können. +Eine @qq{saubere} Funktion beeinflusst keine Eigeschaften, Objekte +oder Grob-Suizide, weshalb ihre Werte, die sich auf @code{Y-axis} +beziehen, richtig berechnet werden. + +Es gibt zuzeit etwa 30 Funktionen, die schon als @qq{sauber} erachtet +werden, und unsaubere-saubere Container sind eine Möglichkeit, auch +Funktionen, die sich nicht auf dieser Liste befinden, als @qq{sauber} +zu markieren. Die @qq{saubere} Funktion wird ausgewertet, @emph{bevor} +Seitenumbruch stattfindet, sodass die horizontale Platzierung +@qq{rechtzeitig} stattfindet. Die @qq{unsaubere} Funktion wird dann +@emph{nach} dem Seitenumbruch ausgewertet. + +@warning{Da es schwierig ist, immer sicher zu sein, welche Funktionen sich +auf dieser Liste befinden, wird empfohlen, dass die selbsterstellten +@qq{sauberen} Funktionen nicht die Grobs @code{Beam} oder @code{VerticalAlignment} +einsetzen.} + +Ein unsauberer-sauberer Container wird wie folgend erstellt: + +@code{(ly:make-unpure-pure-container f0 f1)} + +wobei @code{f0} eine Fuktion ist, die @var{n} Arguments braucht +(@var{n >= 1}) und deren erstes Argument immer der Grob sein muss. +Das ist die Funktion, die das eigentliche Resultat ausgibt. @var{f1} +ist die Funktion, die als @qq{sauber} bezeichnet wird, und braucht @var{n + 2} +Argumente. Wiederum muss das erste Argument immer der Grob sein, aber +das erste und zweite Argument sind @qq{Beginn-} und @qq{Endeargumente}. + + + +@var{start} (Beginn) und @var{end} (Ende) sind absichtlich +nur Platzhalter, die nur für die Strecker gelten (etwa @code{Hairpin} oder +@code{Beam}), die unterschiedliche Höhenberechnungen je nach beginnender und +endender Note ausgeben können. + +Der Rest sind andere Argumente für die erste Funktion (es können auch +Null sein, wenn @var{n = 1}). + +Die Ergebnisse der zweiten Funktion werden als Näherungswert des benötigten +Wertes benutzt, welche dann von der ersten Funktion eingesetzt wird, +um den wirklichen Wert auszugeben, mit dem dann sehr viel später im +Layoutprozess die Platzierung justiert werden soll. + +@lilypond[verbatim,quote,ragged-right] +#(define (square-line-circle-space grob) +(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch)) + (notename (ly:pitch-notename pitch))) + (if (= 0 (modulo notename 2)) + (make-circle-stencil 0.5 0.0 #t) + (make-filled-box-stencil '(0 . 1.0) + '(-0.5 . 0.5))))) + +squareLineCircleSpace = { + \override NoteHead #'stencil = #square-line-circle-space +} + +smartSquareLineCircleSpace = { + \squareLineCircleSpace + \override NoteHead #'Y-extent = + #(ly:make-unpure-pure-container + ly:grob::stencil-height + (lambda (grob start end) (ly:grob::stencil-height grob))) +} + +\new Voice \with { \remove "Stem_engraver" } +\relative c'' { + \squareLineCircleSpace + cis4 ces cisis c + \smartSquareLineCircleSpace + cis4 ces cisis c +} +@end lilypond +Im ersten Takt weiß die Layoutmaschine ohne den unsauberen-sauberen +Container nicht die Breite des Notenkopfes und lässt ihn deshalb mit +den Versetzungszeichen zusammenstoßen. Im zweiten Takt, mit +unreinen-reinen Containern, weiß die Layoutmaschine die Breite +des Notenkopfes und vermeidet den Zusammenstoßf, indem die Zeile +entsprechend verlängert wird. + +Normalerweise können für eine einfache Berechnungen fast identische +Funktionen für den @qq{unsauberen} und @qq{sauberen} Teil benutzt +werden, indem nur die Zahl der Argumente und die Reichweite der +Funktion verändert wird. + +@warning{Wenn eine Funktion als @qq{sauber} bezeichnet ist und das aber +nicht ist, können unerwartete Ergebnisse auftreten.} @node Musikfunktionen benutzen @@ -3920,7 +4038,7 @@ beschrieben in @rextend{Musikalische Funktionen}. @menu * Syntax der Ersetzungsfunktion:: -* Beispiele der Ersetzungsfunktion:: +* Beispiele der Ersetzungsfunktionen:: @end menu @node Syntax der Ersetzungsfunktion @@ -3953,11 +4071,12 @@ wobei den Wert @code{#t} ausgibt. @item @code{@var{@dots{}Noten@dots{}}} -@tab normale LilyPond-Eingab, wobei @code{$} benutzt wird, um +@tab normale LilyPond-Eingabe, wobei @code{$} (wenn nur LilyPond-Konstruktionen +erlaubt sind) oder @code{#} (um es als Scheme-Wert oder Argument einer +musikalischen Funktionen einzusetzen) benutzt wird, um Argumente zu referenzieren (etwa @samp{$Arg1}). @end multitable - Die @code{parser} und @code{location}-Argumente sind zwingend und werden in einigen fortgeschrittenen Situationen benutzt, wie sie im @qq{Erweitern}-Handbuch beschrieben werden (siehe @@ -3972,7 +4091,9 @@ benutzt werden, sind: @example boolean? cheap-list? @emph{(benutze anstelle von }@q{list?}@emph{ für schnelleres Kompilieren)} +ly:duration? ly:music? +ly:pitch? markup? number? pair? @@ -4017,7 +4138,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { @@ -4060,8 +4181,8 @@ tempoPadded = (parser location padding tempotext) (number? string?) #{ - \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } #}) \relative c'' { diff --git a/Documentation/de/notation/cheatsheet.itely b/Documentation/de/notation/cheatsheet.itely index d9bc02f8c3..f1e9c1ca89 100644 --- a/Documentation/de/notation/cheatsheet.itely +++ b/Documentation/de/notation/cheatsheet.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @c Translators: Till Paala diff --git a/Documentation/de/notation/chords.itely b/Documentation/de/notation/chords.itely index 6fc6c6b7f0..69d89835d9 100644 --- a/Documentation/de/notation/chords.itely +++ b/Documentation/de/notation/chords.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -100,7 +100,7 @@ Schnipsel: Vordefinierte Abkürzung für Artikulationen und Ornamente können mit Noten im Akkordmodus nicht benutzt werden, siehe auch -@ref{Artikulationenszeichen und Verzierungen}. +@ref{Artikulationszeichen und Verzierungen}. Wenn Akkord- und Notenmodus in linearer Musik abwechseln eingesetzt werden und der Akkordmodus am Anfang steht, erstellt der @@ -547,13 +547,13 @@ mit der @code{noChordSymbol}-Beschriftung darstellt. @cindex Akkorde, Unterdrückung wiederholt @funindex chordChanges -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {showing-chords-at-changes.ly} -@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] @c {adding-bar-lines-to-chordnames-context.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {simple-lead-sheet.ly} @@ -656,6 +656,24 @@ Mit dieser Eigenschaft wird das Aussehen der Notation für die große Septime (7) bestimmt. Vordefiniert sind die Optionen @code{whiteTriangleMarkup} und @code{blackTriangleMarkup}. +@funindex additionalPitchPrefix + +@item additionalPitchPrefix + +Wenn die Akkordbezeichnung zusätzliche Tonhöhen enthält, können sie +optional mit einer Textvorsilbe versehen werden. Als Standard ist +keine Vorsilbe eingestellt, sodass die visuelle Einfachheit gewahrt +bleibt, aber für eine kleine Anzahl zusätzlicher Töne kann diese +Option effektiv sein. + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + % add9 + \set additionalPitchPrefix = #"add" + % add9 +} +@end lilypond + @funindex chordNoteNamer @item chordNoteNamer @@ -673,9 +691,41 @@ verändern und etwa den Basston etwa als Kleinbuchstaben darstellen. @item chordNameSeparator Verschiedene Teile eines Akkordsymboles werden normalerweise -durch einen Schrägstrich markiert. Indem @code{chordNameSeparator} -ein anderer Wert zugewiesen wird, kann ein beliebiges Zeichen für -den Trenner benutzt werden. +durch eine kleinen Freiraum angezeigt. Indem @code{chordNameSeparator} +ein Wert zugewiesen wird, kann ein beliebiges Zeichen für +den Trenner benutzt werden. Das hat keine Auswirkung auf den +Trenner zwischen einem Akkord und seiner Bassnote. Um diesen +einzustellen muss @code{slashChordSeparator} benutzt werden. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set chordNameSeparator = \markup { "/" } + \break + c4:7.9- c:7.9-/g +} +@end lilypond + +@funindex slashChordSeparator + +@item slashChordSeparator + +Akkorde können auch aufbauend auf einer anderen Bassnote als dem +üblichen Grundton gespielt werden. Sie werden Umkehrungen genannt, +sind aber auch als Slash-Akkorde bekannt, weil ihre übliche Notation +aus dem Akkordsymbol, einem Schrägstrich und dem Basston besteht. +Deshalb ist der Standardwert von @code{slashChordSeparator} ein +Schrägstrich, aber jedes andere Beschriftungszeichen kann auch eingestellt +werden. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set slashChordSeparator = \markup { " over " } + \break + c4:7.9- c:7.9-/g +} +@end lilypond @funindex chordNameExceptions @@ -687,15 +737,32 @@ definieren. Das zweite Objekt ist eine Beschriftung, die nach @code{chordRootNamer} ausgegeben wird, um das Akkordsymbol zu erstellen. +@funindex minorChordModifier + +@item minorChordModifier + +Moll-Akkorde werden oft durch ein nachgestelltes @qq{m} rechts des +Akkordgrundtons angezeigt. Manche bevorzugen aber andere Zeichen, +wie etwa ein Minus-Zeichen. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:min f:min7 + \set minorChordModifier = \markup { "-" } + \break + c4:min f:min7 +} +@end lilypond + @funindex chordPrefixSpacer @item chordPrefixSpacer -Das @qq{m} für Moll-Akkorde wird normalerweise direkt hinter dem -Akkordbuchstaben gesetzt. Mit der Eigenschaft @code{chordPrefixSpacer} -kann ein Abstand(halter) zwischen den Buchstaben und das @qq{m} -gesetzt werden. Der Abstandhalter wird nicht verwendet, wenn der -Grundton erhöht oder erniedrigt ist. +Das Zeichen für Moll-Akkorde, durch @code{minorChordModifier} erstellt, +wird normalerweise direkt hinter dem Akkordbuchstaben gesetzt. Mit der +Eigenschaft @code{chordPrefixSpacer} kann ein Abstand(halter) zwischen +den Buchstaben und das Zeichen gesetzt werden. Der Abstandhalter wird +nicht verwendet, wenn der Grundton erhöht oder erniedrigt ist. @end table @@ -716,20 +783,20 @@ Grundton erhöht oder erniedrigt ist. @snippets @cindex Ausnahmen, Akkordsymbole -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chord-name-exceptions.ly} @c TODO - tweak snippet to use \blackTriangleMarkup as well -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chord-name-major7.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-bar-lines-to-chordnames-context.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {volta-below-chords.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-chord-separator.ly} @@ -749,11 +816,7 @@ Installierte Dateien: Schnipsel: @rlsr{Chords}. -@c Internals Reference: -@c @r internals{}. - @knownissues - Akkordsymbole werden von den Tonhöhenbezeichnungen innerhalb des Akkordes und der Information über die Akkordstruktur, die innerhalb von @code{\chordmode} notiert wurde, bestimmt. Wenn der direkte @@ -1011,7 +1074,7 @@ End of continuation line @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-positions-of-figured-bass-alterations.ly} diff --git a/Documentation/de/notation/contemporary.itely b/Documentation/de/notation/contemporary.itely index 4bde7645c9..7ccba6e39d 100644 --- a/Documentation/de/notation/contemporary.itely +++ b/Documentation/de/notation/contemporary.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @c Translators: Till Paala diff --git a/Documentation/de/notation/editorial.itely b/Documentation/de/notation/editorial.itely index 767ce1e996..658c5951a6 100644 --- a/Documentation/de/notation/editorial.itely +++ b/Documentation/de/notation/editorial.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -196,13 +196,13 @@ Fingersatzanweisungen können manuell oberhalb des Systems gesetzt werden, siehe @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {avoiding-collisions-with-chord-fingerings.ly} @seealso @@ -256,13 +256,14 @@ b c @end lilypond -Notationsobjekte, die an die unsichtbaren Noten angefügt sind, sind weiterhin -sichtbar. +Notenköpfe, Hälse, Fähnchen und Pausen sind unsichtbar. Balken sind unsichtbar, +wenn sie auf einer unsichtbaren Note beginnen. Objekte, die an unsichtbare +Noten angehängt werden, sind trotzdem noch sichtbar. @lilypond[verbatim,quote,relative=2] -c4( d) +e8(\p f g a)-- \hideNotes -e4(\p f)-- +e8(\p f g a)-- @end lilypond @@ -384,10 +385,10 @@ Eine X11-Farbe hat nicht notwendigerweise exakt denselben Farbton wie eine ähnlich genannte normale Farbe. Nicht alle X11-Farben lassen sich am Webbrowser erkennen, d. h. der -Unterschied etwa zwischen @code{'LimeGreen} und @code{'ForestGreen} wird +Unterschied etwa zwischen @code{LimeGreen} und @code{ForestGreen} wird eventuell nicht dargestellt. Für die Benutzung im Internet wird -die Benutzung von einfachen Farben nahegelegt (z. B. @code{#blue}, -@code{#green}, @code{#red}). +die Benutzung von einfachen Farben nahegelegt (z. B. @code{blue}, +@code{green}, @code{red}). Noten in Akkorden können nicht mit @code{\override} eingefärbt werden, dazu muss @code{\tweak} benutzt werden. Siehe auch @ref{Der tweak-Befehl}. @@ -482,7 +483,7 @@ zeigen, siehe @ref{Direction and placement}. @cindex Hals nach unten @cindex Hals neutral -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {default-direction-of-stems-on-the-center-line-of-the-staff.ly} @seealso @@ -641,7 +642,7 @@ den Linien festgesetzt. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {grid-lines--changing-their-appearance.ly} diff --git a/Documentation/de/notation/expressive.itely b/Documentation/de/notation/expressive.itely index 7fe74cf40c..433aa1036f 100644 --- a/Documentation/de/notation/expressive.itely +++ b/Documentation/de/notation/expressive.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -187,13 +187,13 @@ TextScripten, die an Noten angehängt werden, siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {modifying-default-values-for-articulation-shorthand-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-vertical-ordering-of-scripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-a-delayed-turn.ly} @@ -460,25 +460,25 @@ aufzunehmen. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} @cindex al niente @cindex niente, al -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-hairpins-using-al-niente-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligned-dynamics-and-textscripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {hiding-the-extender-line-for-text-dynamics.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-text-and-spanner-styles-for-text-dynamics.ly} @@ -622,13 +622,12 @@ Notationsreferenz: @ref{Was geht in die MIDI-Ausgabe}, @ref{MIDI-Lautstärke kontrollieren}. +Erweitern: +@rextend{Beschriftungskonstruktionen in Scheme}. + Schnipsel: @rlsr{Expressive marks}. -Erweitert: -@ref{Beschriftungskonstruktionen in Scheme}. - - @node Ausdrucksbezeichnungen als Bögen @subsection Ausdrucksbezeichnungen als Bögen @@ -773,13 +772,13 @@ g4( e c2) @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-double-slurs-for-legato-chords.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-text-markups-inside-slurs.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-slurs-with-complex-dash-structure.ly} @@ -969,13 +968,13 @@ Divisiones genannt, sind unterstützt. Für Einzelheiten siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-breath-mark-symbol.ly} @cindex caesura @cindex railroad tracks -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {inserting-a-caesura.ly} @@ -1016,23 +1015,19 @@ Zahl zeigt die Intervallgröße an, über die sich das Glissando @emph{nach} der Note erstreckt. @lilypond[verbatim,quote,relative=2] -c2-\bendAfter #+4 -c2-\bendAfter #-4 -c2-\bendAfter #+6.5 -c2-\bendAfter #-6.5 -c2-\bendAfter #+8 -c2-\bendAfter #-8 +c2\bendAfter #+4 +c2\bendAfter #-4 +c2\bendAfter #+6.5 +c2\bendAfter #-6.5 +c2\bendAfter #+8 +c2\bendAfter #-8 @end lilypond -Das Minuszeichen (@code{-}) direkt vor dem @code{\bendAfter}-Befehl -ist @emph{notwendig} um unbestimmte Glissandos zu notieren. - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adjusting-the-shape-of-falls-and-doits.ly} - @seealso Glossar: @rglos{fall}, @@ -1077,9 +1072,11 @@ Verschiedene Glissando-Stile sind möglich. Für Einzelheiten siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{contemporary-glissando.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{glissandi-can-skip-grobs.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{contemporary-glissando.ly} @seealso Glossar: @@ -1094,9 +1091,7 @@ Schnipsel: Referenz der Interna: @rinternals{Glissando}. - @knownissues - Printing text over the line (such as @notation{gliss.}) is not supported. @@ -1178,7 +1173,6 @@ Ein Arpeggio kann auch explizit ausgeschrieben werden, indem Überbindungsbögen benutzt werden. Für mehr Information siehe @ref{Bindebögen}. - @predefined @code{\arpeggio}, @code{\arpeggioArrowUp}, @@ -1191,16 +1185,15 @@ Ein Arpeggio kann auch explizit ausgeschrieben werden, indem @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-a-piano-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-other-contexts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-arpeggios-across-notes-in-different-voices.ly} - @seealso Glossar: @rglos{arpeggio}. @@ -1217,9 +1210,7 @@ Referenz der Interna: @rinternals{Slur}, @rinternals{PianoStaff}. - @knownissues - @cindex Arpeggio über Systeme im Klammernstil @cindex Klammer-Arpeggio über Systeme @cindex Zwischensysteme-Klammer-Arpeggio @@ -1263,7 +1254,6 @@ r2 Ein Triller-Strekcer, der über einen Zeilenumbruch geht, beginnt genau über der ersten Note auf der neue Zeile erneut. - @lilypond[ragged-right,verbatim,quote,relative=2] d1\startTrillSpan \break @@ -1273,7 +1263,7 @@ r2 @end lilypond Aufeinanderfolgende Trillerstrecker funktieren ohne einen -+@code{\stopTrillSpan}-Befehl, weil ein folgender Strecker +@code{\stopTrillSpan}-Befehl, weil ein folgender Strecker automatisch die rechte Begrenzung des vorhergehenden beendet. @lilypond[verbatim,quote,relative=2] @@ -1299,7 +1289,6 @@ c2 r2 @funindex \pitchedTrill @funindex pitchedTrill - Triller, die auf einer bestimmten Note ausgeführt werden sollen, können mit dem Befehl @code{pitchedTrill} notiert werden. Das erste Argument ist die Hauptnote, das zweite die Note, auf der getrillert diff --git a/Documentation/de/notation/fretted-strings.itely b/Documentation/de/notation/fretted-strings.itely index 67f8b59ec9..21df4ba6f1 100644 --- a/Documentation/de/notation/fretted-strings.itely +++ b/Documentation/de/notation/fretted-strings.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -81,7 +81,6 @@ Bögen zwischen Arpeggios und Tremolos sind beschrieben in @end itemize - @seealso Notationsreferenz: @ref{Fingersatzanweisungen}, @@ -106,30 +105,35 @@ Notationsreferenz: Die Nummer der Saite, auf der gespielt werden soll, kann angezeigt werden, indem @code{\@var{Zahl}} an eine Note -innerhalb eines Akkord-Konstrukts gesetzt wird: +gehängt wird: @lilypond[verbatim,quote,relative=0] \clef "treble_8" -4 2 +c4\5 e\4 g2\3 1 @end lilypond Wenn Fingersatz und Saitennummer zusammen benutzt werden, wird -ihre Position anhand der Reihenfolge entschieden, mit der sie im -Code auftauchen: +ihre Position anhand der Reihenfolge, mit der sie im +Code auftauchen, @emph{nur} entschieden, wenn sie in einem expliziten +Akkord auftreten: Fingersatz, der außen an einen Akkord oder an +einzelne Noten @emph{außerhalb} eines Akkords gehängt wird, wird +nach anderen Regeln positioniert. @lilypond[verbatim,quote,relative=1] \clef "treble_8" -2 +g4\3-0 +g-0\3 + @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} @@ -232,16 +236,16 @@ symbols = { Normalerweise werden Tonhöhen der tiefstmöglichen Spielposition auf dem Bundbrett zugewiesen (erste Lage). Offene Saiten werden automatisch -bevorzugt. Wenn Sie eine bestimmte Tonhöhe auf einer bestimmten Saite -gespielt haben wollen, können Sie eine Saitennummeranweisung zur -Tonhöhe hinzufügen. Wenn Sie Tonhöhe und Saitenzahlanweisung nicht -innerhalb einer Akkord-Konstruktion (@code{<>}) notieren, erscheint -die Saitenzahlanweisung nicht in der traditionellen Notation. Es ist -jedoch sehr viel bequemer, die Spielposition unter Benutzung von -@code{minimumFret} zu definieren. Der Standardwert von @code{minimumFret} -beträgt 0. +bevorzugt. Wenn man eine bestimmte Tonhöhe auf einer bestimmten Saite +gespielt haben will, kann man eine Saitennummeranweisung zur +Tonhöhe hinzufügen. Wenn man die Saitenzahlanweisung nicht in der traditionellen +Notation sehen will, kann man den entsprechenden Stencil mit @code{\override} +verändernt. Es ist jedoch sehr viel bequemer, die Spielposition unter +Benutzung von @code{minimumFret} zu definieren. Der Standardwert von +@code{minimumFret} beträgt 0. @lilypond[quote,ragged-right,verbatim] +\layout { \override Voice.StringNumber #'stencil = ##f } \new StaffGroup << \new Staff \relative c { \clef "treble_8" @@ -259,34 +263,41 @@ beträgt 0. >> @end lilypond -@funindex \tabChordRepetition +@funindex \tabChordRepeats +@funindex \chordRepeats +@cindex Akkorde, Wiederholung +@cindex Wiederholung mit @code{q} Akkord-Konstruktionen können mit dem Akkord-Wiederholungssymbol @code{q} -wiederholt werden. Um diese Eigenschaft in einer Tabulatur benutzen -zu können, gibt es den Befehl @code{\tabChordRepetition}. Er speichert -die Saiteninformationen, die innerhalb von Akkord-Konstruktionen gegeben -werden, sodass wiederholte Akkorde identische Darstellungen erhalten. +wiederholt werden. In Verbindung mit Tabulaturen verhält sich diese +Wiederholung jedoch seltsam, weil sie Saiten- und Fingerzahlen entfernt. +Darum sollte man -@lilypond[quote,verbatim] -\tabChordRepetition +@example +\chordRepeats #'(string-number-event fingering-event) +@end example +explizit für musikalische Ausdrücke in Tabulaturen aufrufen, wenn +Akkordwiederholungen gewünscht sind. Der Befehl ist so wichtig, +dass er durch @code{\tabChordRepeats} zur Verfügung gestellt wird. + +@lilypond[quote,verbatim] guitar = \relative c' { - r8 ~ q4 q8~ q q4 + r8 ~ q4 q8~ q q4 } \new StaffGroup << \new Staff { \clef "treble_8" - \override Voice.StringNumber #'transparent = ##t \guitar } \new TabStaff { - \guitar + \tabChordRepeats \guitar } >> @end lilypond -Bindestriche über einen Zeilenumbruch werden normalerweise in Klammern +Bindestriche über einen Zeilenumbruch werden standardmäßig in Klammern gesetzt. Das gilt auch für die zweite Klammer einer Wiederholung. @lilypond[quote,ragged-right,verbatim] @@ -375,16 +386,16 @@ ties = \relative c' { @funindex \harmonic @funindex \harmonicByFret @funindex \harmonicByRatio -@funindex \chordGlissando Flageolett (engl. @emph{harmonic}) kann zur Tabulaturnotation als klingende Tonhöhe hinzugefügt werden: @lilypond[verbatim,quote] +\layout { \override Voice.StringNumber #'stencil = ##f } firstHarmonic = { - 4 - 4 - 2 + d'4\4\harmonic + g'4\3\harmonic + b'2\2\harmonic } \score { << @@ -394,8 +405,9 @@ firstHarmonic = { } @end lilypond -Dabei ist zu beachten, dass der Befehl @code{\harmonic} immer innerhalb -einer Akkordkonstruktion notiert werden muss. Flageolett ist nur sinnvoll +Dabei ist zu beachten, dass der Befehl @code{\harmonic} immer an +einzelne Noten angehängt werden muss (die sich auch innerhalb +eines Akkordes befinden können). Flageolett ist nur sinnvoll für offene Saiten im 12. Bund. Alle anderen Flageolett-Töne sollten von LilyPond errechnet werden. Das wird erreicht, indem man den Bund angibt, wo der Finger der Greifhand die Saite berühren soll. @@ -432,31 +444,31 @@ ratioHarmonics = { } @end lilypond - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {stem-and-beam-behavior-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {polyphony-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {open-string-harmonics-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fretted-string-harmonics-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {slides-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chord-glissando-in-tablature.ly} - @seealso Notationsreferenz: @ref{Hälse}, +@ref{Akkord-Wiederholungen}, +@ref{Ausgeschriebene Wiederholungen} @ref{Flageolett}, @ref{Glissando}. @@ -469,9 +481,7 @@ Referenz der Interna: @rinternals{TabVoice}, @rinternals{Beam}. - @knownissues - Akkorde werden nicht gesondert behandelt, sodass die Saitenauswahlfunktion eventuell die selbe Saite für zwei Töne eines Akkordes auswählen kann. @@ -516,7 +526,7 @@ Slide. @cindex Bundinstrumente, Saitenstimmung @cindex Tabulatur, Saitenstimmung -@funindex StringTunings +@funindex stringTunings LilyPond errechnet automatisch den Bund für eine Note auf Grundlage der Saite, zu welcher der Ton zugeordnet ist. Um das tun zu können, @@ -532,14 +542,17 @@ geschrieben ist: @lilypond[quote,ragged-right,verbatim] << - \new Staff { + \new Voice \with { + \override StringNumber #'stencil = ##f + } { \clef "bass_8" \relative c, { c4 d e f } } - \new TabStaff { - \set TabStaff.stringTunings = #bass-tuning + \new TabStaff \with { + stringTunings = #bass-tuning + } { \relative c, { c4 d e f } @@ -552,18 +565,19 @@ Die Standardstimmung ist die Gitarrenstimmung (@code{guitar-tuning}) in der EADGHE-Stimmung. Andere vordefinierte Stimmung sind: @code{guitar-open-g-tuning}, @code{mandolin-tuning} und @code{banjo-open-g-tuning}. Die vordefinierten Stimmungen finden -sich in @file{scm/string-tuning-init.scm}. +sich in @file{ly/string-tunings-init.ly}. -@funindex contextStringTunings -@funindex \contextStringTunings +@funindex stringTuning +@funindex \stringTuning @cindex Tabulatur, eigene Saitenstimmung @cindex Eigene Saitenstimmung, Tabulatur Jede beliebige Stimmung kann erstellt werden. Die Funktion -@code{\contextStringTuning} kann benutzt werden, um eine Saitenstimmung +@code{\stringTuning} kann benutzt werden, um eine Saitenstimmung zu definieren und als den Wert von @code{stringTunings} für den aktuellen -Kontext zu bestimmen. @code{\contextStringTuning} braucht zwei Argumente: -das Symbol, wo die Saitenstimmung gespeichert werden soll, und eine +Kontext zu bestimmen. + +Als Argument braucht die Funktion eine Akkordkonstruktion, die die Tonhöhen jeder Saite der Stimmung angibt. Die Akkordkonstruktion muss im absoluten Oktavenmodus angegeben werden, siehe @ref{Absolute Oktavenbezeichnung}. Die Saite mit der höchsten @@ -585,7 +599,7 @@ mynotes = { \mynotes } \new TabStaff { - \contextStringTuning #'custom-tuning + \set Staff.stringTunings = \stringTuning \mynotes } >> @@ -594,20 +608,14 @@ mynotes = { Die @code{stringTunings}-Eigenschaft wird auch von @code{FretBoards} benutzt, um automatische Bunddiagramme zu errechnen. -@funindex makeStringTuning -@funindex \makeStringTuning - Saitensitmmungen werden als Teil des Hash-Schlüsselwertes für vordefinierte Bunddiagramme eingesetzt (siehe auch -@ref{Vordefinierte Bund-Diagramme}. Die Funktion @code{\makeStringTuning} -wird benutzt, um eine Stimmung im aktuellen Kontext zu erstellen, ohne die -@code{stringTunings}-Eigenschaft einzusetzen Die Argumente von -@code{\makeStringTuning} sind das Symbol, das für die neue Stimmung -benutzt werden soll und eine Akkordkonstruktion, die die Stimmung definiert. +@ref{Vordefinierte Bund-Diagramme}. + Das vorherige Beispiel könnte auch folgenderweise geschrieben werden: @lilypond[quote,verbatim] -\makeStringTuning #'custom-tuning +custom-tuning = \stringTuning mynotes = { c'4 e' g' c'' | @@ -638,35 +646,24 @@ Tonhöhenobjekt für LilyPond. Tonhöhenobjekte werden mit der Scheme-Funktion +@code{ly:make-pitch} erstellt (siehe @ref{Scheme-Funktionen}). -Wenn gewünscht, kann eine Saitenstimmung auch in Scheme-Sprache erstellt -werden. Das Beispiel unten bildet das obige Beispiel nach, aber die -Stimmung wird nicht als eigenes Objekt gespeichert: - -@lilypond[quote,verbatim] -mynotes = { - c'4 e' g' c'' | - e''4 g'' b'' c''' -} - -<< - \new Staff { - \clef treble - \mynotes - } - \new TabStaff { - \set TabStaff.stringTunings = #`(,(ly:make-pitch 1 5 0) - ,(ly:make-pitch 1 1 0) - ,(ly:make-pitch 0 4 0) - ,(ly:make-pitch 0 0 0)) - \mynotes - } ->> -@end lilypond +@code{\stringTuning} erstellt derartige Objekte aus der Akkord-Eingabe. LilyPond errechnet automatisch die Linienanzahl für die Tabulatur und die Zahl der Saiten in dem automatisch erstellten @code{FretBoard} (Bunddiagramm) aus der Anzahl der Elemente von @code{stringTunings}. +Um für alle @code{TabStaff}-Kontexte die selbe Standardstimmung zu +benutzen, kann man benutzen: + +@example +\layout @{ + \context @{ + \TabStaff + stringTunings = \stringTuning \notemode @{ @} + @} +@} +@end example + @cindex Schlüssel, modern, Tabulatur @cindex Tabulatur, moderner Schlüssel @cindex moderner Tabulatur-Schlüssel @@ -694,7 +691,7 @@ Notationsreferenz: @ref{Scheme-Funktionen}. Installierte Dateien: -@file{ly/string-tuning-init.ly} +@file{ly/string-tunings-init.ly} @file{scm/tablature.scm}. Schnipsel: @@ -730,7 +727,7 @@ Darstellungsarten: normal, knapp und ausführlich. Die drei Arten erzeugen die gleiche Ausgabe, aber mit jeweils mehr oder weniger Einzelheiten. Einzelheiten zur Syntax der unterschiedlichen Beschriftungsbefehle, mit denen die Bunddiagramme definiert werden, -findet sich in @ref{Beschriftung für einzelne Instrumente}. +findet sich in @ref{Instrument Specific Markup}. Die Standard-Bunddiagrammbeschriftung beinhaltet die Saitennummer und die Bundnummer für jeden Punkt, der notiert werden soll. @@ -1108,15 +1105,15 @@ Schnittstelle gehören dem @code{Voice.TextScript}-Kontext an. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-fret-orientations.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {customizing-markup-fret-diagrams.ly} @seealso Notationsreferenz: -@ref{Beschriftung für einzelne Instrumente}. +@ref{Instrument Specific Markup}. Schnipsel: @rlsr{Fretted strings}. @@ -1134,6 +1131,7 @@ Referenz der Interna: @cindex Bunddiagramme @cindex Akkord-Diagramme @cindex Bunddiagramme, Ukulele +@cindex Bunddiagramme, Mandoline @funindex FretBoards @funindex stringTunings @@ -1173,7 +1171,25 @@ myChords = \chordmode { a1 a:m a:aug } } \new FretBoards { - \set stringTunings = #ukulele-tuning + \set Staff.stringTunings = #ukulele-tuning + \myChords +} +@end lilypond + +Bunddiagramme für Mandoline sind in der Datei @file{predefined-mandolin-fretboards.ly} +enhalten: + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-mandolin-fretboards.ly" + +myChords = \chordmode { c1 c:m7.5- c:aug } + +\new ChordNames { + \myChords +} + +\new FretBoards { + \set Staff.stringTunings = #mandolin-tuning \myChords } @end lilypond @@ -1398,16 +1414,16 @@ gehören dem @code{FretBoards.FretBoard}-Kontext an. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {customizing-fretboard-fret-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {defining-predefined-fretboards-for-other-instruments.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chordchanges-for-fretboards.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fretboards-alternate-tables.ly} @@ -1421,7 +1437,8 @@ Notationsreferenz: Installierte Dateien: @file{ly/predefined-guitar-fretboards.ly}, @file{ly/predefined-guitar-ninth-fretboards.ly}, -@file{ly/predefined-ukulele-fretboards.ly}. +@file{ly/predefined-ukulele-fretboards.ly}, +@file{ly/predefined-mandolin-fretboards.ly}. Schnipsel: @rlsr{Fretted strings}. @@ -1608,39 +1625,35 @@ cindex Fingersatz der rechten Hand, Bundinstrumente @funindex rightHandFinger @funindex \rightHandFinger +Fingersatz für die rechte Hand in Akkorden @var{p-i-m-a} +muss mit @code{\rightHandFinger}, gefolgt von einer Zahl, notiert werden. -Fingersatz für die rechte Hand in Akkorden kann mit den -Bezeichnungen @var{p-i-m-a} notiert werden. Er muss innerhalb -eines Akkord-Konstruktes notiert werden. - - -@warning{Vor dem @code{@bs{}rightHandFinger} @strong{muss} ein -Minuszeichen gesetzt -werden und ein Leerzeichen nach dem schließenden @code{>}.} +@warning{Wenn die Zahl in Scheme-Notation eingegeben wird, muss darauf +geachtet werden, ein Leerzeichen anzuhängen vor dem schließenden @code{>} o. Ä.} @lilypond[quote,verbatim,relative=0] \clef "treble_8" -4 - - - -1 +c4\rightHandFinger #1 +e\rightHandFinger #2 +g\rightHandFinger #3 +c\rightHandFinger #4 +1 @end lilypond Zur Erleichterung kann der Befehl @code{\rightHandFinger} zu ein paar Buchstaben abgekürzt werden, etwa @code{RH}. @example -#(define RH rightHandFinger) +RH=#rightHandFinger @end example @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {placement-of-right-hand-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingerings,-string-indications,-and-right-hand-fingerings.ly} @seealso @@ -1917,23 +1930,22 @@ Saite gesetzt werden: @funindex banjo-open-dm-tuning @funindex four-string-banjo -Eine Anzahl von üblichen Stimmungen für Banjo sind in LilyPond +Eine Anzahl von üblichen Stimmungen für fünsaitiges Banjo sind in LilyPond vordefiniert: @code{banjo-c-tuning} (gCGBD), @code{banjo-modal-tuning} (gDGCD), @code{banjo-open-d-tuning} (aDF#AD) und @code{banjo-open-dm-tuning} (aDFAD). -Diese Stimmungen können für das viersaitige Banjo angepasst werden, +Sie können für das viersaitige Banjo angepasst werden, indem die @code{four-string-banjo}-Funktion eingesetzt wird: @example \set TabStaff.stringTunings = #(four-string-banjo banjo-c-tuning) @end example - @seealso +Installierte Dateien: +@file{ly/string-tunings-init.ly}. + Schnipsel: @rlsr{Fretted strings}. - -Installierte Dateien: -@file{scm/tablature.scm} enthält vordefinierte Banjo-Stimmungen. diff --git a/Documentation/de/notation/input.itely b/Documentation/de/notation/input.itely index 570f1b444d..486309ee0d 100644 --- a/Documentation/de/notation/input.itely +++ b/Documentation/de/notation/input.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -25,6 +25,7 @@ Notation mit LilyPond und weniger direkte Fragen der Notation. * Arbeiten an Eingabe-Dateien:: * Ausgabe kontrollieren:: * MIDI-Ausgabe:: +* Musikalische Information extrahieren:: @end menu @@ -119,7 +120,7 @@ also @file{fandangoforelephants.pdf}. Zu weiteren Einzelheiten zu @code{\book}-Umgebungen siehe @ref{Mehrere Partituren in einem Buch}, @ref{Mehrere Ausgabedateien aus einer Eingabedatei} und -@ref{Dateistruktur}. +@ref{Die Dateistruktur}. @seealso @@ -131,7 +132,7 @@ Handbuch zum Lernen: Notationsreferenz: @ref{Mehrere Partituren in einem Buch}, @ref{Mehrere Ausgabedateien aus einer Eingabedatei} und -@ref{Dateistruktur}. +@ref{Die Dateistruktur}. @node Mehrere Partituren in einem Buch @@ -246,7 +247,7 @@ wollen, können Sie mehrere @code{\book}-Umgebungen hinzufügen, wobei jede Umgebung eine neue Ausgabedatei produziert. Wenn Sie keine @code{\book}-Umgebung in der Eingabedatei angeben, wird die Datei von LilyPond implizit als eine große @code{\book}-Umgebung behandelt, siehe -auch @ref{Dateistruktur}. +auch @ref{Die Dateistruktur}. Wenn man mehrere Dateien aus einer einzigen Eingabedatei erstellt, stellt LilyPond sicher, dass keine der Ausgabedateien der vorhandenen @@ -449,9 +450,10 @@ beinhaltet, wird übersetzt zu @{ c'4 d' e'2 @} @} @} + \layout @{ @} @} - \layout @{ @} - \header @{ @} + \paper @{ @} + \header @{ @} @} @end example @@ -533,7 +535,7 @@ nach jedem Befehl oder jeder Variable, also jeder Einheit, die mit @code{\} beginnt, @item nach jeder Einheit, die als Scheme-Ausdruck interpretiert werden, -also alle Einheiten, die mit @code{#} beginnen. +also alle Einheiten, die mit@tie{}@code{#} beginnen. @item Alle Einheiten von Scheme-Ausdrücken müssen mit Leerzeichen getrennt werden, @@ -560,315 +562,785 @@ des Komponisten, teilweise wird auch noch sehr viel mehr Information zur Verfügung gestellt. @menu -* Titel erstellen:: +* Titel Kopf und Fußzeilen erstellen:: * Eigene Kopf und Fußzeilen sowie Titel:: +* Fußnoten erstellen:: * Verweis auf die Seitenzahlen:: * Inhaltsverzeichnis:: @end menu -@node Titel erstellen -@subsection Titel erstellen -@translationof Creating titles +@node Titel Kopf und Fußzeilen erstellen +@subsection Titel, Kopf- und Fußzeilen erstellen +@translationof Creating titles headers and footers -Überschriften können für jede @code{\score}-Umgebung erstellt werden, sowohl -für die gesamte Datei (oder eine @code{\book}-Umgebung) als auch für -einzelne Buchabschnitte (innerhalb einer @code{\bookpart}-Umgebung). - -Der Inhalt der Titelei wird aus der @code{\header}-Umgebung übernommen. Die -@code{\header}-Umgebung eines Buches unterstützt folgende Felder: +@menu +* Wie funktioniert die Titel-Umgebung?:: +* Standardlayout von book und Partitur Titelumgebungen:: +* Standardlayout von Kopf und Fußzeilen:: +@end menu -@table @code -@funindex dedication -@item dedication -Die Widmung der Noten, wird auf oben auf der ersten Seite gesetzt. -@funindex title -@item title -Die Überschrift der Noten, wird unter der Widmung zentriert gesetzt. +@node Wie funktioniert die Titel-Umgebung? +@unnumberedsubsubsec Wie funktioniert die Titel-Umgebung? +@translationof Title blocks explained -@funindex subtitle -@item subtitle -Untertitel, zentriert unter der Überschrift. +@c TODO: figure out how \bookpart titles work -@funindex subsubtitle -@item subsubtitle -Unteruntertitel, zentriert unter dem Untertitel. +Es gibt zwei Arten von Titelumgebungen: die Hauptumgebung, die über +der ersten @code{\score}-Umgebung innerhalb eines @qq{book} notiert +wird, und individuelle Titelumgebungen, die innerhalb von +@code{\score} auftreten können. Textfelder für beide Typen werden +in der @code{\header}-Umgebung eingegeben. -@funindex poet -@item poet -Name des Dichters, linksbündig unter dem Unteruntertitel. +Wenn in dem @qq{book} nur eine einzelne Partitur vorkommt, +kann die @code{\header}-Umgebung innheralb oder außerhalb der +@code{\score}-Umgebung geschrieben werden. -@funindex instrument -@item instrument -Bezeichnung des Instruments, zentriert unter dem Unteruntertitel. -Auch oben auf der Seite zentriert (andere als erste Seite). +@warning{Denken Sie daran, dass zuerst ein musikalischer Ausdruck +notiert werden muss, wenn Sie eine @bs{}@code{header}-Umgebung innheralb +einer @bs{}@code{score}-Umgebung verwenden wollen.} -@funindex composer -@item composer -Name des Komponisten, rechtsbündig unter dem Unteruntertitel. +@lilypond[papersize=a5,quote,verbatim,noragged-right] +\header { + title = "SUITE I." + composer = "J. S. Bach." +} -@funindex meter -@item meter -Metrum, linksbündig unter dem Dichter. +\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 arranger -@item arranger -Name des Bearbeiters/Arrangeurs, rechtsbündig unter dem Komponisten. +\score { + \new Staff \relative b { + \clef bass + \key g \major + \partial 16 b16 | + 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 piece -@item piece -Bezeichnung des Stückes, linksbündig unter dem Metrum. +Textfelder der Haupttitelumgebung können in allen @code{\score}-Umgebungen +gesetzt oder manuell unterdrückt werden: -@funindex opus -@item opus -Bezeichnung des Opus, rechtsbündig unter dem Bearbeiter. +@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 -@cindex Seitenumbruch, erzwingen -@funindex breakbefore +@seealso +Notationsreferenz: +@ref{Die Dateistruktur}, +@ref{Angepasstes Layout für Titelumgebungen}. + + +@node Standardlayout von book und Partitur Titelumgebungen +@unnumberedsubsubsec Standardlayout von @code{book}- und Partitur-Titelumgebungen +@translationof Default layout of book and score title blocks + +Layout und Formatierung der Titelfelder wird durch zwei +@code{\paper}-Variablen kontrolliert: @code{bookTitleMarkup} für +die Hauptumgebung und @code{scoreTitleMarkup} für einzelne +@code{\header}-Umgebungen innerhalb von einer @code{\score}-Umgebung. + +@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" +} -@item breakbefore -Hiermit beginnt der Titel auf einer neuen Seite. (Kann die Werte -##t (wahr) oder ##f (falsch) haben.) +\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 -Anzeige eines Copyright, zentriert unten auf der ersten Seite. Um das -Copyright-Symbol zu notieren, siehe @ref{Zeichenkodierung}. +@c Is the bit about \null markups true? -mp -@funindex tagline -@item tagline -Zentriert unten auf der letzten Seite. Enthält standardmäßig: @qq{Music -engraving by LilyPond (@var{version})---www.lilypond.org} +Textfelder, die in einer @code{\header}-Umgebung nicht benutzt werden, +werden durch @code{\null}-Textbeschriftung ersetzt, sodass sie keinen +leeren Platz belegen. -@end table +Die Standardeinstellungen von @code{scoreTitleMarkup} platzieren +die Felder @code{piece} (Stück) und @code{opus} zu den gegenüberliegenden +Seiten der selben Zeile. -Hier eine Demonstration der möglichen Felder. Beliebige -Formatierungsbefehle für Textbeschriftung können in der Titelei -eingesetzt werden. Siehe hierzu auch @ref{Text formatieren}. +@funindex breakbefore -@c KEEP LY -@lilypond[quote,verbatim,line-width=11.0\cm] -\paper { - line-width = 9.0\cm - paper-height = 10.0\cm -} +Mit der Variable @code{breakbefore} innerhalb einer @code{\header}-Umgebung, +die für sich auch eine @code{\score}-Umgebung darstellt, kann man +die Hauptüberschriften auf der ersten Seite allein ausgeben, sodass die +Noten (in der @code{score}-Umgebung definiert) erst auf der folgenden +Seite beginnen. +@lilypond[papersize=a8landscape,verbatim,noragged-right] \book { \header { - dedication = "mir gewidmet" - title = \markup \center-column { "Titel erste Zeile" "Titel zweite Zeile, länger" } - subtitle = "Untertitel" - subsubtitle = #(string-append "Unteruntertitel LilyPond-Version " -(lilypond-version)) - poet = "Dichter" - composer = \markup \center-column { "Komponist" \small "(1847-1973)" } - texttranslator = "Übersetzer" - meter = \markup { \teeny "m" \tiny "e" \normalsize "t" \large "r" \huge -"um" } - arranger = \markup { \fontsize #8.5 "Be" \fontsize #2.5 "ar" \fontsize -#-2.5 "be" \fontsize #-5.3 "i" \fontsize #7.5 "ter" } - instrument = \markup \bold \italic "Instrument" - piece = "Stück" + 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 = "Stück zwei" - opus = "Opus1" + piece = "This is the Music" + breakbefore = ##t + } + } +} +@end lilypond + +@seealso +Handbuch zum Lernen: +@rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}, + +Notationsreferenz: +@ref{Die Dateistruktur}. + +Installierte Dateien: +@file{ly/titling-init.ly}. + + +@node Standardlayout von Kopf und Fußzeilen +@unnumberedsubsubsec Standardlayout von Kopf- und Fußzeilen +@translationof Default layout of headers and footers + +@emph{Kopf-} und @emph{Fußzeilen} sind Textzeilen, die ganz oben +und ganz unten auf der Seite stehen, unabhängig vom Textbereich eines +Buches. Sie können mit folgenden @code{\paper}-Variablen kontrolliert +werden: + +@itemize +@item @code{oddHeaderMarkup} +@item @code{evenHeaderMarkup} +@item @code{oddFooterMarkup} +@item @code{evenFooterMarkup} +@end itemize + +Diese Beschriftungsvariablen können nur auf Textfelder einer +Haupttitelumgebung (eine @code{\header}-Umgebung auf höchster Ebene, die +sich auf alle @code{\score}-Umgebungen einer Datei bezieht) +zugreifen und sind definiert in der Datei @file{ly/titling-init.ly}. In +den Standardeinstellungen + +@itemize + +@item +werden Seitenzahlen automatisch ganz oben links (wenn gerade) oder ganz +oben rechts (wenn ungerade) gesetzt, beginnend mit der zweiten Seite. + +@item +wird das @code{instrument}-Textfeld auf jeder Seite zentriert, beginnend +mit der zweiten Seite. + +@item +wird der @code{copyright}-Text unten auf der ersten Zeite zentriert. + +@item +wird der Inhalt von @code{tagline} unten auf der letzten Seite zentriert +und unterhalb des @code{copyright}-Texts, wenn es sich nur um eine Seite +handelt. + +@end itemize + +@lilypond[papersize=a8landscape] +\book { + \score { + \relative c' { + c4 d e f } } - \markup { - und jetzt... +} +@end lilypond + +Die Standardeinstellung von @code{tagline} kann verändert werden, +indem man ein @code{tagline}-Feld in die @code{\header}-Umgebung auf +höchster Ebene schreibt. + +@lilypond[papersize=a8landscape,verbatim] +\book { + \header { + tagline = "... music notation for Everyone" } \score { - { c'1 } - \header { - piece = "Stück2" - opus = "Opus2" + \relative c' { + c4 d e f } } } @end lilypond -Wie schon oben gezeigt, können mehrfache @code{\header}-Umgebungen -eingesetzt werden. Wenn das gleiche Feld in mehreren -Umgebungen, wird die letzte vorkommende -Version benutzt. Hier ein kurzes Beispiel: +Um die @emph{tagline} ganz zu entfernen, wird ihr Inhalb als @code{##f} +(falsch) definiert. + + +@node Eigene Kopf und Fußzeilen sowie Titel +@subsection Eigene Kopf- und Fußzeilen sowie Titel +@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 +* Angepasste Textformatierung für Titelumgebungen:: +* Angepasstes Layout für Titelumgebungen:: +* Angepasstes Layout für Kopf und Fußzeilen:: +@end menu + + +@node Angepasste Textformatierung für Titelumgebungen +@unnumberedsubsubsec Angepasste Textformatierung für Titelumgebungen +@translationof Custom text formatting for title blocks + +Standard-@code{\markup}-Befehle können eingesetzt werden, um jeglichen +Text in Titeln, Kopf- und Fußzeilen innerhalb der @code{\header}-Umgebung +zu verändern. + +@lilypond[quote,verbatim,noragged-right] +\score { + { s1 } + \header { + piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" } + subtitle = \markup { \italic "(Excerpt)" } + } +} +@end lilypond + +@seealso +Notationsreferenz: +@ref{Text formatieren}. + + +@node Angepasstes Layout für Titelumgebungen +@unnumberedsubsubsec Angepasstes Layout für Titelumgebungen +@translationof Custom layout for title blocks + +@code{\markup}-Befehle in der @code{\header}-Umgebung sind sinnvoll +für einfaches Formatieren von Text, aber sie gewähren keine genaue +Kontrolle über die Positionierung von Titeln. Um die Positionierung +von Titeltextfeldern vorzunehmen, eignen sich beide oder eine von +folgenden Variablen (die man in der @code{\paper}-Umgebung einsetzen muss): + +@itemize +@item @code{bookTitleMarkup} +@item @code{scoreTitleMarkup} +@end itemize + +Diese Beschriftungsvariablen sind behandelt in +@ref{Standardlayout von book und Partitur Titelumgebungen}. + +Die Standardeinstellungen von @code{scoreTitleMarkup}, wie in der +Datei @file{ly/titling-init.ly} definiert, sind: @example -\header @{ - composer = "Komponist" -@} -\header @{ - piece = "Stück" -@} -\score @{ - \new Staff @{ c'4 @} - \header @{ - piece = "Neues Stück" % überschreibt die die vorige Definition +scoreTitleMarkup = \markup @{ \column @{ + \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @} + \fill-line @{ + \fromproperty #'header:piece + \fromproperty #'header:opus @} @} +@} @end example -Wenn @code{\header} innerhalb der @code{\score}-Umgebung definiert wird, -wird normalerweise nur die Information von @code{piece} und @code{opus} -ausgegeben. Musikalische Ausdrücke innerhalb von @code{\score} müssen -vor @code{\header} gesetzt werden. +Dadurch werden die Textfelder @code{piece} (Stück) und @code{opus} +an den gegenüberliegenden Enden der gleichen Zeile platziert: -@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 +Das folgende Beispiel verändert die Einstellungen von +@code{scoreTitleMarkup}, sodass das Textfeld @code{piece} +zentriert wird und in fetter, größerer Schrift erscheint. -@noindent -Dieses Verhalten kann verändert werden (sodass alle Angaben aus der -Überschrift gesetzt werden, wenn sich @code{\header} innerhalb von -@code{\score} befindet), indem man schreibt: +@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 -@example -\paper@{ - print-all-headers = ##t -@} -@end example +Textfelder, die normalerweise nur im Haupttitel ausgegeben werden, +können auch in die Titel einzelner Partituren aufgenommen werden, +indem man @code{print-all-headers} in die @code{\paper}-Umgebung einfügt. +Ein Nachteil dieser Methode ist, dass Textfelder, die tatsächlich nur +im Haupttitel erscheinen sollen, manuell für jede Partitur unterdrückt +werden müssen. Siehe auch @ref{Wie funktioniert die Titel-Umgebung?}. -@cindex Copyright -@cindex Tagline +Um das zu vermeiden, kann das gewünschte Feld zur Definition von +@code{scoreTitleMarkup} hinzugefügt werden. Im folgenden Beispiel +wird das Komponistenfeld (@code{composer}) (normalerweise mit +@code{bookTitleMarkup} assoziiert) zu @code{scoreTitleMarkup} +hinzugefügt, sodass jede Partitur einen eigenen Komponisten haben kann. -Die Standardfußzeile ist leer mit Ausnahme der ersten Seite, auf der -das @code{copyright}-Feld aus der @code{\header}-Umgebung eingefügt wird, -und die letzte Seite, auf der das @code{tagline}-Feld eingefügt wird. -Der Standardinhalt von @code{tagline} ist @qq{Music engraving by -LilyPond (@var{version})---www.lilypond.org}. Gut gesetzte Noten werben sehr effektiv -für LilyPond, darum bitten wir darum, diese Zeile stehen zu lassen, -wenn es möglich ist. +@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 -Ein Titelfeld kann vollständig entfernt werden, indem es auf -falsch gesetzt wird: +Es ist auch möglich, eigene Textfelder zu erstellen und dann auf sie +in der Beschriftungsdefinition zu verweisen: -@example -\header @{ - tagline = ##f - composer = ##f -@} -@end example +@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 +@seealso +Notationsreferenz: +@ref{Wie funktioniert die Titel-Umgebung?}. -@node Eigene Kopf und Fußzeilen sowie Titel -@subsection Eigene Kopf- und Fußzeilen sowie Titel -@translationof Custom headers footers and titles -Kompliziertere Anpassungen können vorgenommen werden, indem die -folgenden Variablen innerhalb der @code{\paper}-Umgebung geändert -werden. Die Init-Datei @file{../ly/titling-init.ly} enthält das -Standardverhalten. +@node Angepasstes Layout für Kopf und Fußzeilen +@unnumberedsubsubsec Angepasstes Layout für Kopf- und Fußzeilen +@translationof Custom layout for headers and footers -@table @code +@c can make-header and make-footer be removed from +@c paper-defaults-init.ly? -mp -@funindex bookTitleMarkup +@code{\markup}-Befehle in der @code{\header}-Umgebung sind nützlich +um einfachen Text zu formatieren, erlauben aber keine Kontrolle +über die Positionierung von Kopf- und Fußzeilen. Um die Positionierung +der Textfelder zu ändern, eignen sich beide oder eine von +folgenden Variablen (die man in der @code{\paper}-Umgebung einsetzen muss): + +@itemize +@item @code{oddHeaderMarkup} +@item @code{evenHeaderMarkup} +@item @code{oddFooterMarkup} +@item @code{evenFooterMarkup} +@end itemize -@item bookTitleMarkup -Das ist die Überschrift, die für das gesamte Dokument gilt. Üblicherweise -wird hier der Komponist und die Überschrift des Werkes genannt. +Das folgende Beispiel zentriert die Seitenzahlen unten auf jeder Seite. +Zuerst werden die Standardeinstellungen von @code{oddHeaderMarkup} und +@code{evenHeaderMarkup} entfernt, indem sie als @qq{Null}-Beschriftung +definiert werden. Dann wird @code{oddFooterMarkup} mit zentrierter +Seitennummer neu definiert. Schließlich erhält @code{evenFooterMarkup} +die selbe Layoutdefinition wie @code{\oddFooterMarkup}: -@funindex scoreTitleMarkup +@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 -@item scoreTitleMarkup -Das ist die Überschrift, die vor jede @code{\score}-Umgebung gesetzt wird. -Üblicherweise wird hier etwa die Bezeichnung eines Satzes notiert -(im @code{piece}-Feld). +@seealso +Notationsreferenz: +@ref{Wie funktioniert die Titel-Umgebung?}, +@ref{Standardlayout von book und Partitur Titelumgebungen}. -@funindex oddHeaderMarkup -@item oddHeaderMarkup -Das ist der Seitenkopf für ungerade Seiten. +@node Fußnoten erstellen +@subsection Fußnoten erstellen +@translationof Creating footnotes -@funindex evenHeaderMarkup +Zwei Arten an Fußnoten können erstellt werden: automatische und +manuelle Fußnoten. -@item evenHeaderMarkup -Das ist der Seitenkopf für gerade Seiten. Wenn undefiniert, wird der -ungerade Seitenkopf eingesetzt. +@menu +* Übersicht über Fußnoten:: +* Automatische Fußnoten:: +* Manuelle Fußnoten:: +@end menu -Standardmäßig werden die Kopfzeilen so definiert, dass die Seitennummer -sich außen befindet und das Instrument zentriert gesetzt wird. +@node Übersicht über Fußnoten +@unnumberedsubsubsec Übersicht über Fußnoten +@translationof Footnotes overview -@funindex oddFooterMarkup +Automatische Fußnoten erstellen aufsteigende Zahlenverweise, während +mit manuellen Fußnoten eigene angepasste Verweise erstellt werden +können. Alle Grobs, @code{\markup}-Beschriftung auf höchster Ebene +und zu Akkord zusammengefasste Noten können mit Fußnoten versehen werden. -@item oddFooterMarkup -Das ist die Fußzeile für ungerade Seiten. +Die Reihenfolge, in welcher ein Grob erstellt wird, bestimmt die +Reihenfolge der Nummerierung automatischer Fußnoten. -@funindex evenFooterMarkup -@item evenFooterMarkup -Das ist die Fußzeile für gerade Seiten. Wenn undefiniert, wird die -ungerade Fußzeile eingesetzt. +@node Automatische Fußnoten +@unnumberedsubsubsec Automatische Fußnoten +@translationof Automatic footnotes -Standardmäßig wird in der Fußzeile auf der ersten Seite das Copyright -und auf der letzten Seite die Tag-Zeile gesetzt. +@cindex Fußnoten, automatisch -@end table +Automatische Fußnoten brauchen drei Argumente: das @var{Layoutobjekt}, das die +Anmerkung erhalten soll, die @var{(x . y)}-Position des Indikators und +eine @code{\markup}-Beschriftung, die den Inhalt der Fußnote enthält. +Der Befehl @code{\footnote} muss @emph{vor} dem Grob geschrieben +werden, auf den sich die Fußnote bezieht. -@funindex \paper -@cindex Kopfzeile -@cindex Fußzeile -@cindex Seitenlayout -@cindex Layout der Seite -@cindex Titel -@cindex Überschriften +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote #'(0.5 . -2) #'NoteHead + \markup { Die erste Note } \default + a'4 b8 + \footnote #'(0.5 . 1) #'NoteHead + \markup { Die dritte Note } \default + e c4 d4 + } +} +@end lilypond -Die folgende Definition setzt die Überschrift linksbündig und -den Komponisten rechtsbündig auf einer einzelnen Zeile: +Bei Noten in Akkorden muss der Befehl @code{\footnote} @emph{nach} +der Note, auf der sie sich bezieht, in Form eines @code{TextScript} +stehen: -@example -\paper @{ - bookTitleMarkup = \markup @{ - \fill-line @{ - \fromproperty #'header:title - \fromproperty #'header:composer - @} - @} -@} -@end example +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + c-\footnote #'(1 . -1.25) "Hier ein C" \default + es-\footnote #'(2 . -0.25) \markup { \italic "Ein Es" } \default + g-\footnote #'(2 . 3) \markup { \bold "Das ist ein G" } \default + >1 + } +} +@end lilypond -Kopf- und Fußzeile werden mit den Funktionen @code{make-header} und -@code{make-footer} erstellt, welche in @code{\paper} definiert werden. -Die Standardimplementationen finden sich in @file{ly/paper-defaults-init.ly} und -@file{ly/titling-init.ly}. +@warning {Wenn Fußnoten die selbe vertikale Position haben, werden +sie von oben nach unten nummeriert.} -Dieses Beispiel zentriert die Seitenzahlen unten auf jeder Seite: +Hier noch einige Beispiele von Grobs, die mit Fußnoten +versehen sind, wobei auch die Position des Fußnotentextes relativ zu +Tagline und Copyright gezeigt wird. -@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 +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { copyright = \markup { "Copyright 1970" } } + \relative c' { + \footnote #'(-3 . 0) #'DynamicText + \markup { \bold Forte } \default + + \footnote #'(0 . 1.5) #'Slur + \markup { Ein Bogen } \default + a'4\f( + + \footnote #'(0 . -2) #'Beam + \markup { Balken } \default + b8)[ e] + + \footnote #'(1 . -1) #'Stem + \markup { \teeny { Das ist ein Hals } } \default + c4 + + \footnote #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { Ein Warnungsversetzungszeichen } \default + + \footnote #'(0.5 . -0.5) #'TextScript + \markup \italic { Langsamer hier } \default + dis?4_"rit." + } +} +@end lilypond + +Für eine @code{\markup}-Beschriftung auf oberster Ebene braucht man +den Befehl @code{\auto-footnote}: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { \auto-footnote "Eine einfache Melodie" \italic "Von mir" } + \relative c' { + a'4 b8 e c4 d + } +} +@end lilypond + + +@node Manuelle Fußnoten +@unnumberedsubsubsec Manuelle Fußnoten +@translationof Manual footnotes + +@cindex Fußnoten, manuell + +Manuell erstellte Fußnoten brauchen vier Argumente: das @var{Layoutobjekt}, +das die Anmerkung erhalten soll, die @var{(x . y)}-Position des +Indikators und zwei @code{\markup}-Beschriftungen; die erste ist der +Indikator, der an die Note oder den Grob gehängt wird, die zweite +der Inhalt der Fußnote unten auf der Seite. + +Wie auch bei automatischen Fußnoten muss der Befehl @code{\footnote} +@emph{vor} dem Grob kommen, an den die Fußnote gehängt wird und als +@code{TextScript} geschrieben werden: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + a'4-\footnote + "1" #'(0.5 . -2) #'NoteHead \markup { \italic "1. Die erste Note" } \default + b8 + e-\footnote + \markup { \bold "2" } #'(0.5 . 1) #'NoteHead "2. Die zweite Note" \default + c4 + d\p-\footnote "3" #'(0.5 . -1) #'DynamicText "3. Piano" \default + } +} +@end lilypond + +Fußnoten für Akkordnoten werden wie folgt notiert: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote "1" #'(1 . -1.25) "1. C" c + \footnote + \markup { \bold "b" } #'(2 . -0.25) "b. E-flat" es + \footnote "3" #'(2 . 3) \markup { \italic "iii. G" } g + >1 + } +} +@end lilypond + +@warning {Wenn Fußnoten die selbe vertikale Position haben, werden +sie von oben nach unten nummeriert.} + +Hier einige Beispiele manueller Fußnoten, die auch die relative +Position der Fußnotentexte zu Tagline und Copyright anzeigen: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote + \markup { \teeny 1 } #'(-3 . 0) #'DynamicText + \markup { 1. \bold Forte } \default + + \footnote + \markup { \teeny b } #'(0 . 1.5) #'Slur + \markup { b. Ein Bogen } \default + a'4\f( + + \footnote + \markup { \teeny 3 } #'(0 . -2) #'Beam + \markup { 3. Balken } \default + b8)[ e] + + \footnote + \markup { 4 } #'(1 . -1) #'Stem + \markup { \bold 4. { Das ist ein Hals } } \default + c4 + + \footnote + \markup \concat \teeny { "sharp (v)" } #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { v. Ein Warnungsversetzungszeichen } \default + + \footnote + \markup \concat \teeny { "a" } #'(0.5 . -0.5) #'TextScript + \markup \italic { a. Langsamer hier } \default + dis?4_"rit." + + \breathe + \footnote + \markup { \teeny \musicglyph #"rests.4" } #'(1.5 . -0.25) #'BreathingSign + \markup { \null } \default + } +} +@end lilypond + +Eine @code{\markup}-Beschriftung der höchsten Ebene wird wie folgt +annotiert: +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { "Eine einfache Melodie" \footnote "*" \italic "* Von mir" } + \relative c' { + a'4 b8 e c4 d4 + } +} +@end lilypond + +@seealso +Handbuch zum Lernen: +@rlearning{Objekte und Schnittstellen}. + +Notationsreferenz: +@ref{Erklärungen in Ballonform}, +@ref{Seitenlayout}, +@ref{Textartige Zeichen}, +@ref{Textarten}, +@ref{Titel}. + +Referenz der Interna: +@rinternals{FootnoteEvent}, +@rinternals{FootnoteItem}, +@rinternals{FootnoteSpanner}, +@rinternals{Footnote_engraver}. + +@knownissues +Mehrere Fußnoten auf einer Seite können ausschließlich übereinander +gedruckt werden und nicht auf der gleiche Zeile gesetzt werden. +Fußnoten können nicht an @code{MultiMeasureRests} (mehrtaktige Pause) +angehängt werden und können mit @code{Staff}-(Notensystem)-, +@code{\markup}-(Beschriftungs)-Objekten und anderen Fußnoten +zusammenstoßen. Wenn man den manuellen Fußnotenbefehl einsetzt, +braucht man in der @code{\paper}-Umgebung den Eintrag +@code{footnote-auto-number = ##f}. @node Verweis auf die Seitenzahlen @@ -883,7 +1355,7 @@ Verweis wird mit dem Befehl @code{\page-ref} gefordert (innerhalb von @code{\markup}). @c KEEP LY -@lilypond[verbatim,line-width=11.0\cm] +@lilypond[verbatim] \header { tagline = ##f } \book { \label #'ErstePartitur @@ -894,7 +1366,6 @@ von @code{\markup}). c'1 } } - \markup { Die erste Partitur fängt auf Seite \page-ref #'ErstePartitur "0" "?" an.} \markup { Zeichen A befindet sich auf Seite @@ -934,14 +1405,14 @@ bestimmt. Wenn eine Partitur zwischen 10 und 99 Seiten hat, kann man @translationof Table of contents Ein Inhaltsverzeichnis kann eingefügt werden mit dem Befehl -@code{\markuplines \table-of-contents}. Die Elemente, die im +@code{\markuplist \table-of-contents}. Die Elemente, die im Inhaltsverzeichnis aufgelistet werden sollen, werden mit dem @code{\tocItem}-Befehl markiert, welches sowohl auf höchster Ebene als auch in einem musikalischen Ausdruck verwendet werden kann. @verbatim -\markuplines \table-of-contents +\markuplist \table-of-contents \pageBreak \tocItem \markup "Erste Partitur" @@ -1033,7 +1504,7 @@ tocAct = (add-toc-item! 'tocActMarkup text)) \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \tocAct \markup { Atto Primo } \tocItem \markup { Coro. Viva il nostro Alcide } \tocItem \markup { Cesare. Presti omai l'Egizzia terra } @@ -1054,7 +1525,7 @@ Linie gefüllt werden: } \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \tocItem \markup { Allegro } \tocItem \markup { Largo } \markup \null @@ -1064,7 +1535,7 @@ Linie gefüllt werden: @seealso Installierte Dateien: -@file{../ly/toc-init.ly}. +@file{ly/toc-init.ly}. @funindex \table-of-contents @funindex \tocItem @@ -1082,8 +1553,7 @@ Installierte Dateien: @menu * LilyPond-Dateien einfügen:: * Verschiedene Editionen aus einer Quelldatei:: -* Zeichenkodierung:: -* LilyPond-Notation anzeigen:: +* Sonderzeichen:: @end menu @@ -1147,7 +1617,7 @@ werden erst interpretiert, wenn sie sich in der Hauptdatei befinden, sodass die Pfadangaben hier nicht relativ zur eingebundenen Datei, sondern relativ zur Hauptdatei gesetzt werden müssen. Dieses Verhalten kann jedoch auch verändert werden, indem man lilypond die Option -@code{-drelative-includes} auf der Kommandozeile zuweist (oder indem +@option{-drelative-includes} auf der Kommandozeile zuweist (oder indem man den Befehl @code{#(ly:set-option 'relative-includes #t)} an den Beginn der Quelldatei schreibt). Mit @code{relative-includes} wird der Pfad jedes @code{\include}-Befehls als relativ zu der Datei angenommen, @@ -1193,7 +1663,7 @@ im Abschnitt @rlearning{Mehr Information} besprochen. Diese Dateien können verändert werden, aber Änderungen gehen verloren, wenn eine neue LilyPond-Version installiert wird. -Eine einfache Beispiele, die die Benutzung von @code{\include} demonstrieren, +Einige einfache Beispiele, die die Benutzung von @code{\include} demonstrieren, sind dargestellt in @rlearning{Partituren und Stimmen}. @@ -1203,7 +1673,6 @@ Handbuch zum Lernen: @rlearning{Partituren und Stimmen}. @knownissues - Wenn eine Datei eingebunden wird, deren Name einer Datei aus dem Installationsverzeichnis von LilyPond entspricht, wird die installierte Datei anstelle der eigenen verwendet. @@ -1219,7 +1688,10 @@ Variablen werden am besten eingesetzt, wenn es darum geht, längere Notenpassagen und/oder Anmerkungen/Textmarken miteinander auf verschiedene Weise zu kombinieren. Tag-Marken dagegen werden am besten eingesetzt, wenn eine von mehreren kurzen alternativen -Notenabschnitten ausgewählt werden soll. Egal welche Methode am +Notenabschnitten ausgewählt werden soll und können auch eingesetzt +werden, um Musikabschnitte an unterschiedlichen Stellen zusammenzufügen. + +Egal welche Methode am Ende eingesetzt wird: Es erleichtert die Arbeit in jedem Fall, wenn die eigentlichen Noten und die Struktur der Partitur voneinander getrennt notiert werden -- so kann die Struktur geändert werden, @@ -1302,14 +1774,18 @@ werden, die dann eingebunden werden, siehe @ref{LilyPond-Dateien einfügen}. @cindex Marke @cindex markierte Noten entfernen @cindex markierte Noten behalten +@cindex in markierte Noten einfügen @funindex \tag @funindex \keepWithTag @funindex \removeWithTag +@funindex \pushToTag +@funindex \appendToTag @funindex tag @funindex keepWithTag @funindex removeWithTag + Der @code{\tag #'@var{TeilA}}-Befehl markiert einen musikalischen Ausdruck mit der Bezeichnung @var{TeilA}. Ausdrücke, die auf diese Weise markiert werden, können mit ihrer Bezeichnung später ausgewählt @@ -1443,6 +1919,30 @@ werden, weil der erste Befehl alle markierten Abschnitt außer dem im Befehl genannten wegfiltert und der zweite Befehl dann auch diesen eben genannten zusätzlich entfernt. +Manchmal will man Noten an einem bestimmen Platz in existierenden +Noten einfügen. Dafür kann entweder @code{\pushToTag} oder +@code{\appendToTag} benutzt werden, um Material hinter bzw. vor den +Elementen (@code{elements}) der existierenden Noten einzufügen. Nicht +alle musikalischen Konstruktionen haben Elemente, aber sequentielle und +simultane Noten sind ziemlich gute Kandidaten: + +@lilypond[verbatim,quote] +test = { \tag #'here { \tag #'here <> } } + +{ + \pushToTag #'here c' + \pushToTag #'here e' + \pushToTag #'here g' \test + \appendToTag #'here c' + \appendToTag #'here e' + \appendToTag #'here g' \test +} +@end lilypond + +Beide Befehle erhalten einen Tag, das Material, das bei jedem Auftreten +des Tags eingefügt werden soll und den Ausdruck, der mit dem Tag versehen +ist. Der Befehl stellt sicher, dass alle Änderungen kopiert werden, sodass +das ursprüngliche @code{\test} seine Bedeutung behält. @seealso Handbuch zum Lernen: @@ -1497,13 +1997,26 @@ Notationsreferenz: @ref{LilyPond-Dateien einfügen}. +@node Sonderzeichen +@subsection sonderzeichen +@translationof Special characters + +@cindex Sonderzeichen +@cindex Nicht-ASCII-Zeichen + +@menu +* Zeichenkodierung:: +* Unicode:: +* ASCII-Aliase:: +@end menu + + @node Zeichenkodierung -@subsection Zeichenkodierung +@unnumberedsubsubsec Zeichenkodierung @translationof Text encoding -@cindex Unicode + @cindex UTF-8 -@cindex Nicht-ASCII-Zeichen LilyPond benutzt alle Zeichen, die durch das Unicode-Konsortium und ISO/IEC 10646 definiert sind. Hiermit wird den Zeichen @@ -1566,6 +2079,13 @@ portuguese = \lyricmode { \addlyrics { \portuguese } @end lilypond + +@node Unicode +@unnumberedsubsubsec Unicode +@translationof Unicode + +@cindex Unicode + Um einen einzelnen Buchstaben zu notieren, für den die Unicode-Ziffernfolge bekannt ist, der aber nicht auf der Tastatur zu finden ist, kann der Befehl @code{\char ##xhhhh} oder @code{\char #dddd} innerhalb einer @@ -1600,7 +2120,7 @@ im Gesangstext und als normaler Text außerhalb der Partitur. } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } -\markup { "Copyright 2008--2011" \char ##x00A9 } +\markup { "Copyright 2008--2012" \char ##x00A9 } @end lilypond @cindex Copyright-Zeichen @@ -1614,38 +2134,59 @@ Um das Copyright-Zeichen zu notieren, kann folgender Code eingesetzt werden: @end example -@node LilyPond-Notation anzeigen -@subsection LilyPond-Notation anzeigen -@translationof Displaying LilyPond notation +@node ASCII-Aliase +@unnumberedsubsubsec ASCII-Aliase +@translationof ASCII aliases -@funindex \displayLilyMusic +Eine Liste von ASCII-Befehlen für Sonderzeichen kann +eingefügt werden: -Ein musikalischer Ausdruck in LilyPond-Notation kann mit der Funktion -@code{\displayLilyMusic} angezeigt werden. Der Code +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} -@example -@{ - \displayLilyMusic \transpose c a, @{ c4 e g a bes @} -@} -@end example +\markup "&flqq; – &OE;uvre incomplète… &frqq;" -@noindent -etwa wird ausgeben: +\score { + \new Staff { \repeat unfold 9 a'4 } + \addlyrics { + This is al -- so wor -- kin'~in ly -- rics: –_&OE;… + } +} -@example -@{ a,4 cis e fis g @} -@end example +\markup \column { + "The replacement can be disabled:" + "– &OE; …" + \override #'(replacement-alist . ()) "– &OE; …" +} +@end lilypond -Normalerweise werden diese Zeilen zusammen mit allen anderen -Kompilations-Nachrichten auf der Kommandozeile ausgegeben. -Um sie separat zu speichern und das Ergebnis von @code{\displayLilyMusic} -weiterzubenutzen, -kann die Ausgabe mit folgendem Befehl in eine Datei umgeleitet werden: +Man kann auch eigen Aliase erstellen, entweder global: -@example -lilypond file.ly >display.txt -@end example +@lilypond[quote,verbatim] +\paper { + #(add-text-replacements! + '(("100" . "hundred") + ("dpi" . "dots per inch"))) +} +\markup "A 100 dpi." +@end lilypond + +@noindent +oder lokal: + +@lilypond[quote,verbatim] +\markup \replace #'(("100" . "hundred") + ("dpi" . "dots per inch")) "A 100 dpi." +@end lilypond + +@seealso +Notationsreferenz: +@ref{Liste der Sonderzeichen}. +Installierte Dateien: +@file{ly/text-replacements.ly}. @node Ausgabe kontrollieren @@ -1692,7 +2233,7 @@ Weitere Bereiche, die ausgeschnitten werden sollen, können definiert werden, indem mehrere derartige Paare definiert werden. Um diese Funktion auch nutzen zu können, muss LilyPond mit dem -Parameter @code{-dclip-systems} aufgerufen werden. Die Schnipsel +Parameter @option{-dclip-systems} aufgerufen werden. Die Schnipsel werden als EPS ausgegeben und dann zu PDF und PNG konvertiert, wenn diese Formate auch als Parameter angegeben werden. @@ -1766,7 +2307,7 @@ Das Standardausgabeformat für gedruckte Partituren ist PDF (Portable Document Forma) und PS (PostScript). SVG (Scalable Vector Graphics), EPS (Encapsulated PostScript) und PNG (Portable Network Graphics) gibt es auch als Ausgabeformate über die -Kommandozeile. Siehe @rprogram{Optionen von lilypond auf der Kommandozeile}. +Kommandozeile. Siehe @rprogram{Optionen auf der Kommandozeile für lilypond}. @node Die Notationsschriftart verändern @@ -1803,11 +2344,14 @@ Benennen Sie das existierende @code{fonts}-Verzeichnis in zurückbenennen, um wieder nach Feta zu wechseln. @seealso -Handbuch zum Lernen: @rlearning{Mehr Information}. +Handbuch zum Lernen: +@rlearning{Mehr Information}. @knownissues -Gonville kann nicht verwendet werden, um Alte Notation zu setzen. +Gonville kann nicht verwendet werden, um Alte Notation zu setzen und es +ist wahrscheinlich, dass neuere Glyphen in späteren Versionen von +LilyPond nicht in Gonville enthalten sein werden. Bitte lesen Sie die Webseite des Autoren zu mehr Information hierzu und zu anderen Einzelheiten, wie auch der Lizenz von Gonville. @@ -1831,11 +2375,14 @@ man sich anhören kann, was man notiert hat. Das hilft oft sehr gut bei der Überprüfung: falsche Oktaven oder falsche Versetzungszeichen lassen sich meist sehr gut hören. -Die MIDI-Ausgabe benötigt einen Kanal für jedes System und einen für -globale Einstellungen. Darum sollte die Quelldatei für eine MIDI-Datei -nicht mehr als 15 Systeme (oder 14 wenn kein Schlagzeug benützt wird) -besitzen. Jedes weitere System bleibt stumm. +Normale MIDI-Ausgabe ist etwas roh; optional kann eine verbesserte und +realistischere MIDI-Ausgabe mit einem @ref{Artikuliere-Skript} +erzeugt werden. +Die MIDI-Ausgabe benötigt einen Kanal für jedes System und reserviert +Kanala 10 für Schlagzeug. Es gibt nur 16 MIDI-Kanäle pro Gerät, +sodass MIDI-Kanäle mehrfach benutzt werden, wenn eine Partitur mehr +als 15 Notensysteme hat. @menu * MIDI-Dateien erstellen:: @@ -1844,6 +2391,7 @@ besitzen. Jedes weitere System bleibt stumm. * Wiederholungen im MIDI:: * MIDI-Lautstärke kontrollieren:: * Schlagzeug in MIDI:: +* Artikuliere-Skript:: @end menu @@ -1941,7 +2489,7 @@ der Liste entspricht, wird ein Piano-Klang benutzt (@code{"acoustic grand"}). @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-midi-output-to-one-channel-per-voice.ly} @knownissues @@ -1974,24 +2522,16 @@ gesetzt wird: \score @{ @var{...Noten...} \midi @{ - \context @{ - \Score - tempoWholesPerMinute = #(ly:make-moment 72 4) - @} + \tempo 4 = 72 @} @} @end example -Hier wird das Tempo auf 72 Viertelnoten pro Minute definiert. Wenn -das Tempo auf diese Weise definiert wird, kann keine punktierte -Note als Einheit angegeben werden. Wenn sie benötigt wird, muss -man sie in kleinere Einheiten auflösen. Ein Tempo von 90 punktierten -Viertelnoten pro Minute kann beispielsweise dargestellt werden -als 270 Achtelnoten pro Minute: - -@example -tempoWholesPerMinute = #(ly:make-moment 270 8) -@end example +Hier wird das Tempo auf 72 Viertelnoten pro Minute definiert. @code{\tempo} +ist eigentlich ein Musikbefehl, der die Eigenschaften während der Interpretation +der Musik einstellt: im Kontext von Ausgabedefinitionen wie etwa einem +@code{\midi}-Kontext werden sie neu interpretiert, als ob es sich um +Kontextmodifikatoren handelte. @cindex MIDI-Kontextdefinitionen @@ -2043,6 +2583,13 @@ in eine Partiturumgebung eingefügt wird, die mit dem Befehl @cindex MIDI, Akkordsymbole @cindex Rhythmen in MIDI @cindex MIDI, Rhythmen +@cindex Artikuliere-Skript +@cindex MIDI, Artikuliere-Skript +@cindex MIDI, Artikulationen +@cindex Triller in MIDI +@cindex Verzierungen in MIDI +@cindex Rallantando in MIDI +@cindex Accelerando in MIDI Die folgenden Notationselemente werden in die MIDI-Ausgabe aufgenommen: @@ -2060,10 +2607,20 @@ Spieler benötigt, der Tonhöhen verändern kann.) @item Gesangstext @end itemize +Durch Einsatz vom @ref{Artikuliere-Skript} können noch einige Elemente +zu der Liste hinzugefügt werden: + +@itemize +@item Artikulationen (Bögen, Staccato usw.) +@item Triller usw. +@item Rallentando und accelerando +@end itemize + @unnumberedsubsubsec In MIDI nicht unterstützt -Folgende Notationselemente werden nicht in die MIDI-Ausgabe einbezogen: +Folgende Notationselemente werden nicht in die MIDI-Ausgabe einbezogen, +außer am setzt das @ref{Artikuliere-Skript} ein: @itemize @item Rhythmus, der als Anmerkung notiert wird, bspw. Swing @@ -2104,6 +2661,10 @@ verändert alle Wiederholungen in ausgeschriebene Noten. \bar "|." @end lilypond +In Parituren mit mehreren Stimmen funktioniert das Ausschreiben der +Wiederholungen im MIDI nur richtig, wenn @emph{jede} Stimme vollständig +notierte Wiederholungsanweisungen enthält. + Wenn eine Partitur mit diesem @code{\unfoldRepeats}-Befehl erstellt wird, ist er notwendig, zwei @code{\score}-Umgebungen einzurichten: in der einen werden die @@ -2228,9 +2789,9 @@ auf den Bereich zwischen 0.2 und 0.5 eingeschränkt. >> \layout {} \midi { + \tempo 2 = 72 \context { \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) midiMinimumVolume = #0.2 midiMaximumVolume = #0.5 } @@ -2281,10 +2842,7 @@ diese Einstellung korrekt funktioniert. >> \layout {} \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } @end lilypond @@ -2355,10 +2913,7 @@ Lautstärkewerte, die denen des vorigen Beispiels entsprechen. >> \layout { } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } @end lilypond @@ -2392,3 +2947,168 @@ kommt. Weil der MIDI-Standard keine Peitschenschläge kennt, wird ein Schlagstock (sidestick) für diesen Zweck eingesetzt. + + +@node Artikuliere-Skript +@subsection Artikuliere-Skript +@translationof The Articulate script + +Eine realistischere MIDI-Ausgabe ist möglich, wenn man das +Artikuliere-Skript einsetzt. Es versucht, Artikulationen +(Bögen, Staccato) mit einzubeziehen, indem Noten mit +sequentieller Musik von passender Verlängerung oder Verkürzung +mit entprechenden Skips ersetzt werden. Es versucht auch, +Triller usw. klingen zu lassen und rallantando und +accelerando wahrzunehmen. + +Um das Artikuliere-Skript einzusetzen, muss oben in der +Eingabedatei + +@example +\include "articulate.ly" +@end example + +@noindent +eingefügt werden. Im @code{\score}-Abschnitt schreibt man + +@example +\unfoldRepeats \articulate << + der Rest der Partitur... +>> +@end example + +Wenn die Eingabedatei auf diese Art verändert wurd, wird die +Notenausgabe stark verändert, aber die MIDI-Ausgabe produziert +ein besseres Ergebnis. + +Wenn auch nicht unbedingt notwendig, damit das Artikuliere-Skript +funktioniert, bietet es sich an, @code{\unfoldRepeats} wie im +Beispiel oben zu verwenden, weil dadurch Abkürzungen wie etwa +Triller ausgeführt werden. + +@knownissues + +Articulate verkürzt Akkorde und manche Musik (besonders Orgelmusik) +kann schlechter klingen. + + + +@node Musikalische Information extrahieren +@section Musikalische Information extrahieren +@translationof Extracting musical information + +Neben graphischer Ausgabe und MIDI kann LilyPond auch die musikalische +Information als Text anzeigen: + +@menu +* LilyPond-Notation anzeigen:: +* Musikalische Scheme-Ausdrücke anzeigen:: +* Musikalische Ereignisse in einer Datei speichern:: +@end menu + +@node LilyPond-Notation anzeigen +@subsection LilyPond-Notation anzeigen +@translationof Displaying LilyPond notation + +@funindex \displayLilyMusic + +Mit der musikalischen Funktion @code{\displayLilyMusic} kann +man einen musikalischen Ausdruck anzeigen. Um die Ausgabe zu +sehen, wird LilyPond üblicherweise auf der Kommandozeile +aufgerufen. Beispielsweise + +@example +@{ + \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + +@noindent +zeigt an: + +@example +@{ a,4 cis e fis g @} +@end example + +Standardmäßig gibt LilyPond diese Nachrichten auf die Kommandozeile +aus, zusammen mit all den anderen LilyPond-Nachrichten über die +Kompilation. Um die Nachrichten zu speichern, kann man die Ausgabe +in eine Datei umleiten: + +@example +lilypond file.ly >display.txt +@end example + +@funindex \void + +LilyPond zeit nicht nur die musikalischen Ausdrücke an, sondern +interpretiert sie auch (weil @code{\displayLilyMusic} sie an das +Programm zurückgibt, zusätzlich zur Anzeige). Das ist sehr +praktisch, denn man kann einfach @code{\displayLilyMusic} +in vorhandene Noten einfügen, um Informationen darüber zu erhalten. +Wenn Sie nicht wollen, dass LilyPond die angezeigten +musikalischen Ausdrücke auch interpretiert, muss @code{\void} +eingesetzt werden, damit der Ausdruck für die Interpretation ignoriert wird: + +@example +@{ + \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + + +@node Musikalische Scheme-Ausdrücke anzeigen +@subsection Musikalische Scheme-Ausdrücke anzeigen +@translationof Displaying scheme music expressions + +Siehe @rextend{Musikalische Funktionen darstellen}. + + +@node Musikalische Ereignisse in einer Datei speichern +@subsection Musikalische Ereignisse in einer Datei speichern +@translationof Saving music events to a file + +Musikereignisse können in einer Datei Notensystem für Notensystem +gespeichert werden, indem eine Datei in die Paritur eingefügt +wird: + +@example +\include "event-listener.ly" +@end example + +Das erstellt Dateien mit der Bezeichnung @file{DATEINAME-SYSTEMNAME.notes} oder +@file{DATEINAME-unnamed-staff.notes} für jedes Notensystem. +Wenn mehrere Systeme ohne Bezeichnung auftreten, werden die +Ereignisse aller Notensysteme zusammen in der selben Datei +gemischt. Die Ausgabe sieht folgendermaßen aus: + +@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 + +Die Syntax ist eine durch Tabulatoren getrennte Zeile mit zwei +festen Zellen, gefolgt von optionalen Parametern. + +@example +@var{time} @var{type} @var{...params...} +@end example + +Diese Information kann einfach ein ein anderes Programm wie +etwa ein Python-Skript eingelsen werden und kann nützlich für +Forscher sein, die musikalische Analyse- oder Wiedergabeexperimente +mit LilyPond machen wollen. + +@knownissues + +Nicht alle musikalischen Ereignisse werden von +@file{event-listener.ly} unterstützt. Es handelt sich eher um ein +gut gemachtes @qq{proof of concept}. Wenn Ereignisse, die Sie +brauchen, nicht in enthalten sind, können Sie @file{event-listener.ly} +in Ihr LilyPond-Verzeichnis kopieren und die Datei verändern, +sodass sie die benötigte Information ausgibt. diff --git a/Documentation/de/notation/keyboards.itely b/Documentation/de/notation/keyboards.itely index ba7f8924e7..065d974603 100644 --- a/Documentation/de/notation/keyboards.itely +++ b/Documentation/de/notation/keyboards.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,7 +10,7 @@ @c Translators: Till Paala -@c \version "2.14.0" +@c \version "2.16.0" @node Tasteninstrumente und andere Instrumente mit mehreren Systemen @section Tasteninstrumente und andere Instrumente mit mehreren Systemen @@ -128,7 +128,7 @@ können, sind demonstriert in @c @snippets -@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@c @lilypondfile[verbatim,quote,texidoc,doctitle] @c {forcing-visibility-of-systems-with-multi-bar-rests-when-using-\Staff \RemoveEmptyStaves.ly} @c http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312 @@ -271,6 +271,11 @@ Referenz der Interna: @rinternals{Beam}, @rinternals{ContextChange}. +@knownissues +Die Zusammenstoßauflösung für Balken funktioniert nicht für Balken, die +direkt am Ende eines Systems enden. In diesem Fall muss man manuelle +Balken einsetzen. + @node Automatischer Systemwechsel @unnumberedsubsubsec Automatischer Systemwechsel @@ -462,7 +467,7 @@ Hälsen, die nach unten zeigen. % extend the stems to reach the other staff \override Stem #'length = #12 % do not print extra flags - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag % prevent beaming as needed a8 g4 f8 f bes\noBeam g4 } @@ -476,7 +481,7 @@ Hälsen, die nach unten zeigen. @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {indicating-cross-staff-chords-with-arpeggio-bracket.ly} @seealso @@ -622,7 +627,7 @@ Anzahl an Symbolen wird benutzt um die Wechsel anzuzeigen. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {accordion-discant-symbols.ly} @seealso diff --git a/Documentation/de/notation/notation-appendices.itely b/Documentation/de/notation/notation-appendices.itely index 5b4e05ac72..fa23864dad 100644 --- a/Documentation/de/notation/notation-appendices.itely +++ b/Documentation/de/notation/notation-appendices.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,7 +10,7 @@ @c Translators: Till Paala -@c \version "2.14.0" +@c \version "2.16.0" @node Notationsübersicht @appendix Notationsübersicht @@ -21,18 +21,21 @@ * Übliche Akkord-Variablen:: * Vordefinierte Saitenstimmungen:: * Die vordefinierten Bund-Diagramme:: +* Vordefinierte Papierformate:: * MIDI-Instrumente:: * Liste der Farben:: * Die Feta-Schriftart:: * Notenkopfstile:: * Textbeschriftungsbefehle:: * Textbeschriftungslistenbefehle:: +* Liste der Sonderzeichen:: * Liste der Artikulationszeichen:: * Schlagzeugnoten:: * Technisches Glossar:: * Alle Kontexteigenschaften:: * Eigenschaften des Layouts:: * Erhältliche Musikfunktionen:: +* Bezeichner zur Kontextveränderung:: * Vordefinierte Typprädikate:: * Scheme-Funktionen:: @end menu @@ -443,6 +446,262 @@ Die folgende Tabelle zeigt vordefinierte Bunddiagramme für Ukulele. @lilypondfile{display-predefined-ukulele-fretboards.ly} +Die folgende Tabelle zeigt die vordefinierten Bunddiagramme für Mandoline. + +@lilypondfile{display-predefined-mandolin-fretboards.ly} + + +@node Vordefinierte Papierformate +@appendixsec Vordefinierte Papierformate +@translationof Predefined paper sizes + +Papierformate sind definiert in @file{scm/paper.scm} + +@noindent +@strong{Die @qq{ISO 216} A-Serie (DinA)} +@table @code +@item "a10" +(26 x 37 mm) +@item "a9" +(37 x 52 mm) +@item "a8" +(52 x 74 mm) +@item "a7" +(74 x 105 mm) +@item "a6" +(105 x 148 mm) +@item "a5" +(148 x 210 mm) +@item "a4" +(210 x 297 mm) +@item "a3" +(297 x 420 mm) +@item "a2" +(420 x 594 mm) +@item "a1" +(594 x 841 mm) +@item "a0" +(841 x 1189 mm) +@end table + +@noindent +@strong{Die @qq{ISO 216} B-Serie (DinB)} +@table @code +@item "b10" +(31 x 44 mm) +@item "b9" +(44 x 62 mm) +@item "b8" +(62 x 88 mm) +@item "b7" +(88 x 125 mm) +@item "b6" +(125 x 176 mm) +@item "b5" +(176 x 250 mm) +@item "b4" +(250 x 353 mm) +@item "b3" +(353 x 500 mm) +@item "b2" +(500 x 707 mm) +@item "b1" +(707 x 1000 mm) +@item "b0" +(1000 x 1414 mm) +@end table + +@noindent +@strong{Zwei erweiterte Größen wie definiert in @qq{DIN 476}} +@table @code +@item "4a0" +(1682 x 2378 mm) +@item "2a0" +(1189 x 1682 mm) +@end table + +@noindent +@strong{@qq{ISO 269} Standard-C-Serie (DinC)} +@table @code +@item "c10" +(28 x 40 mm) +@item "c9" +(40 x 57 mm) +@item "c8" +(57 x 81 mm) +@item "c7" +(81 x 114 mm) +@item "c6" +(114 x 162 mm) +@item "c5" +(162 x 229 mm) +@item "c4" +(229 x 324 mm) +@item "c3" +(324 x 458 mm) +@item "c2" +(458 x 648 mm) +@item "c1" +(648 x 917 mm) +@item "c0" +(917 x 1297 mm) +@end table + +@noindent +@strong{Nordarmerikanische Papierformate} +@table @code +@item "junior-legal" +(8.0 x 5.0 in) +@item "legal" +(8.5 x 14.0 in) +@item "ledger" +(17.0 x 11.0 in) +@item "letter" +(8.5 x 11.0 in) +@item "tabloid" +(11.0 x 17.0 in) +@item "11x17" +(11.0 x 17.0 in) +@item "17x11" +(17.0 x 11.0 in) +@end table + +@noindent +@strong{Government-letter der IEEE Printer Working Group, für Kinder zum Schreiben} +@table @code +@item "government-letter" +(8 x 10.5 in) +@item "government-legal" +(8.5 x 13.0 in) +@item "philippine-legal" +(8.5 x 13.0 in) +@end table + +@noindent +@strong{ANSI-Formate} +@table @code +@item "ansi a" +(8.5 x 11.0 in) +@item "ansi b" +(17.0 x 11.0 in) +@item "ansi c" +(17.0 x 22.0 in) +@item "ansi d" +(22.0 x 34.0 in) +@item "ansi e" +(34.0 x 44.0 in) +@item "engineering f" +(28.0 x 40.0 in) +@end table + +@noindent +@strong{Nordamerikanische architektonische Formate} +@table @code +@item "arch a" +(9.0 x 12.0 in) +@item "arch b" +(12.0 x 18.0 in) +@item "arch c" +(18.0 x 24.0 in) +@item "arch d" +(24.0 x 36.0 in) +@item "arch e" +(36.0 x 48.0 in) +@item "arch e1" +(30.0 x 42.0 in) +@end table + +@noindent +@strong{Alte Formate, die noch in Großbritannien benützt werden} +@table @code +@item "statement" +(5.5 x 8.5 in) +@item "half letter" +(5.5 x 8.5 in) +@item "quarto" +(8.0 x 10.0 in) +@item "octavo" +(6.75 x 10.5 in) +@item "executive" +(7.25 x 10.5 in) +@item "monarch" +(7.25 x 10.5 in) +@item "foolscap" +(8.27 x 13.0 in) +@item "folio" +(8.27 x 13.0 in) +@item "super-b" +(13.0 x 19.0 in) +@item "post" +(15.5 x 19.5 in) +@item "crown" +(15.0 x 20.0 in) +@item "large post" +(16.5 x 21.0 in) +@item "demy" +(17.5 x 22.5 in) +@item "medium" +(18.0 x 23.0 in) +@item "broadsheet" +(18.0 x 24.0 in) +@item "royal" +(20.0 x 25.0 in) +@item "elephant" +(23.0 x 28.0 in) +@item "double demy" +(22.5 x 35.0 in) +@item "quad demy" +(35.0 x 45.0 in) +@item "atlas" +(26.0 x 34.0 in) +@item "imperial" +(22.0 x 30.0 in) +@item "antiquarian" +(31.0 x 53.0 in) +@end table + +@noindent +@strong{Auf PA4 basierende Formate} +@table @code +@item "pa0" +(840 x 1120 mm) +@item "pa1" +(560 x 840 mm) +@item "pa2" +(420 x 560 mm) +@item "pa3" +(280 x 420 mm) +@item "pa4" +(210 x 280 mm) +@item "pa5" +(140 x 210 mm) +@item "pa6" +(105 x 140 mm) +@item "pa7" +(70 x 105 mm) +@item "pa8" +(52 x 70 mm) +@item "pa9" +(35 x 52 mm) +@item "pa10" +(26 x 35 mm) +@end table + +@noindent +@strong{In Südostasien und Australien benützt} +@table @code +@item "f4" +(210 x 330 mm) +@end table + +@noindent +@strong{Benützt für sehr kleine @code{@@lilypond}-Beispiele in der +Dokumentation, basierend auf A8 quer} +@table @code +@item "a8landscape" +(74 x 52 mm) +@end table + @node MIDI-Instrumente @appendixsec MIDI-Instrumente @@ -638,6 +897,7 @@ zu (bspw. @code{g^\markup @{ * Klammerspitzen-Glyphen:: * Pedal-Glyphen:: * Akkordeon-Glyphen:: +* Bogen-Glyphen:: * Vaticana-Glyphen:: * Medicaea-Glyphen:: * Hufnagel-Glyphen:: @@ -645,6 +905,7 @@ zu (bspw. @code{g^\markup @{ * Neomensural-Glyphen:: * Petrucci-Glyphen:: * Solesmes-Glyphen:: +* Glyphen der Kiever Notation:: @end menu @@ -654,8 +915,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #clefs +\markuplist \override-lines #'(word-space . 4) + \doc-chars #clefs @end lilypond @@ -666,8 +927,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #timesig +\markuplist \override-lines #'(word-space . 4) + \doc-chars #timesig @end lilypond @@ -677,8 +938,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #numbers +\markuplist \override-lines #'(word-space . 4) + \doc-chars #numbers @end lilypond @@ -688,8 +949,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #accidentals +\markuplist \override-lines #'(word-space . 4) + \doc-chars #accidentals @end lilypond @@ -699,8 +960,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #default-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #default-noteheads @end lilypond @@ -710,8 +971,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #special-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #special-noteheads @end lilypond @@ -721,8 +982,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #shape-note-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #shape-note-noteheads @end lilypond @@ -732,8 +993,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #rests +\markuplist \override-lines #'(word-space . 4) + \doc-chars #rests @end lilypond @@ -743,8 +1004,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #flags +\markuplist \override-lines #'(word-space . 4) + \doc-chars #flags @end lilypond @@ -754,8 +1015,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #dots +\markuplist \override-lines #'(word-space . 4) + \doc-chars #dots @end lilypond @@ -765,8 +1026,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #dynamics +\markuplist \override-lines #'(word-space . 4) + \doc-chars #dynamics @end lilypond @@ -775,8 +1036,8 @@ zu (bspw. @code{g^\markup @{ @translationof Script glyphs @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #scripts +\markuplist \override-lines #'(word-space . 4) + \doc-chars #scripts @end lilypond @@ -786,8 +1047,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #arrowheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #arrowheads @end lilypond @@ -797,8 +1058,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #brackettips +\markuplist \override-lines #'(word-space . 4) + \doc-chars #brackettips @end lilypond @@ -808,8 +1069,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #pedal +\markuplist \override-lines #'(word-space . 4) + \doc-chars #pedal @end lilypond @@ -819,19 +1080,31 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #accordion +\markuplist \override-lines #'(word-space . 4) + \doc-chars #accordion +@end lilypond + + +@node Bogen-Glyphen +@unnumberedsubsec Bogen-Glyphen +@translationof Tie glyphs + +@lilypond[quote] +\include "font-table.ly" +\markuplist \override-lines #'(word-space . 4) + \doc-chars #ties @end lilypond + @node Vaticana-Glyphen @unnumberedsubsec Vaticana-Glyphen @translationof Vaticana glyphs @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #vaticana +\markuplist \override-lines #'(word-space . 4) + \doc-chars #vaticana @end lilypond @@ -841,8 +1114,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #medicaea +\markuplist \override-lines #'(word-space . 4) + \doc-chars #medicaea @end lilypond @@ -852,8 +1125,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #hufnagel +\markuplist \override-lines #'(word-space . 4) + \doc-chars #hufnagel @end lilypond @@ -863,8 +1136,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #mensural +\markuplist \override-lines #'(word-space . 4) + \doc-chars #mensural @end lilypond @@ -874,8 +1147,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #neomensural +\markuplist \override-lines #'(word-space . 4) + \doc-chars #neomensural @end lilypond @@ -885,8 +1158,8 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #petrucci +\markuplist \override-lines #'(word-space . 4) + \doc-chars #petrucci @end lilypond @@ -896,8 +1169,20 @@ zu (bspw. @code{g^\markup @{ @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #solesmes +\markuplist \override-lines #'(word-space . 4) + \doc-chars #solesmes +@end lilypond + + + +@node Glyphen der Kiever Notation +@unnumberedsubsec Glyphen der Kiever Notation +@translationof Kievan Notation glyphs + +@lilypond[quote] +\include "font-table.ly" +\markuplist \override-lines #'(word-space . 4) + \doc-chars #kievan @end lilypond @@ -927,12 +1212,31 @@ Folgende Stile können zur Darstellung der Notenköpfe verwendet werden: @appendixsec Textbeschriftungslistenbefehle @translationof Text markup list commands -Folgende Befehle können mit dem Befehl @code{\markuplines} zusammen +Folgende Befehle können mit dem Befehl @code{\markuplist} zusammen benutzt werden: @include markup-list-commands.tely +@node Liste der Sonderzeichen ++@appendixsec Liste der Sonderzeichen +@translationof List of special characters + +Folgende Sonderezeichen-Bezeichnungen können benutzt werden, +zu mehr Details siehe @ref{ASCII-Aliase}. + +die HTML-Synatx wird benutzt und die meisten der Bezeichnungen sind +die gleichen wie für HTML. Der Rest ist durch @LaTeX{} inspiriert. + +Die Charakter haben einen Rahmen, sodass ihre Größe sichtbar ist. +Etwas Verschiebung wurde zwischen Zeichen und Rahmen zur besseren +Lesbarkeit eingefügt. + +@lilypond[quote] +\include "special-characters.ly" +@end lilypond + + @node Liste der Artikulationszeichen @appendixsec Liste der Artikulationszeichen @translationof List of articulations @@ -1154,7 +1458,7 @@ eine Schriftfamilie (engl. typeface). @seealso Notationsreferenz: @ref{Fonts}, -@ref{Text encoding}. +@ref{Sonderzeichen}. @node grob @@ -1419,8 +1723,18 @@ Referenz der Interna: @include identifiers.tely -@node Vordefinierte Typenprädikate -@appendixsec Vordefinierte Typenprädikate +@node Bezeichner zur Kontextveränderung +@appendixsec Bezeichner zur Kontextveränderung +@translationof Context modification identifiers + +Folgende Befehle sind definiert, umd Kontextveränderungen innerhalb +von @code{\layout} oder @code{\with} vorzunehmen: + +@include context-mod-identifiers.tely + + +@node Vordefinierte Typprädikate +@appendixsec Vordefinierte Typprädikate @translationof Predefined type predicates @include type-predicates.tely diff --git a/Documentation/de/notation/notation.itely b/Documentation/de/notation/notation.itely index 6e629c02d5..d79fc5d788 100644 --- a/Documentation/de/notation/notation.itely +++ b/Documentation/de/notation/notation.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @c Translators: Till Paala diff --git a/Documentation/de/notation/percussion.itely b/Documentation/de/notation/percussion.itely index a6272a937b..502459cc47 100644 --- a/Documentation/de/notation/percussion.itely +++ b/Documentation/de/notation/percussion.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -107,11 +107,10 @@ gesetzt Werden. Auch andere Schlüssel können benutzt werden. @lilypond[quote,ragged-right,verbatim] \drums { - \clef treble - hh4 hh hh hh - \break \clef percussion bd4 bd bd bd + \clef treble + hh4 hh hh hh } @end lilypond @@ -140,7 +139,7 @@ Achtel werden mit zwei Balken gezeigt (und der dritte ist der eigentliche Balken), und Trommelwirbel mit kürzeren Werten als Achtelnoten haben einen Balken zusätzlich zu den eigentlichen Balken der Noten. Dieses Verhalten wird mit der Tremolonotation erreicht, wie in -@ref{Tremolo-Wiederholung} gezeigt. Hier ein Beispiel kleinerer Wirbel: +@ref{Tremolo-Wiederholung} gezeigt. @lilypond[quote,verbatim] \drums { @@ -152,21 +151,28 @@ Dieses Verhalten wird mit der Tremolonotation erreicht, wie in } @end lilypond -Benutzung der Stöcke kann angezeigt werden durch @code{^"R"} oder -@code{^"L"} nach jeder Note. Die @code{staff-padding}-Eigenschaft +Benutzung der Stöcke kann angezeigt werden, indem eine Beschriftung +durch @code{"R"} oder @code{"L"} über oder unter der Note angefügt wird, +Näheres in @ref{Richtung und Platzierung}. Die @code{staff-padding}-Eigenschaft kann verändert werden, um eine Orientierung an einer gemeinsamen Linie zu ermöglichen. @lilypond[quote,verbatim] \drums { \repeat unfold 2 { - sn16 ^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L" sn^"R" sn^"R" + sn16^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L" sn^"R" sn^"R" + \stemUp + sn16_"L" sn_"R" sn_"L" sn_"L" sn_"R" sn_"L" sn_"R" sn_"R" } } @end lilypond @seealso + +Notationsreferenz: +@ref{Tremolo-Wiederholung}. + Schnipsel: @rlsr{Percussion}. @@ -256,6 +262,7 @@ mus = \drummode { \remove Bar_engraver \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics \nam @@ -288,6 +295,7 @@ mus = \drummode { timh ssh timl ssl cb s16 } \remove Bar_engraver \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f \override StaffSymbol #'line-count = #2 \override StaffSymbol #'staff-space = #2 @@ -318,6 +326,7 @@ mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } %% this sucks; it will lengthen stems. \override StaffSymbol #'staff-space = #2 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -344,6 +353,7 @@ mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } %% this sucks; it will lengthen stems. \override StaffSymbol #'staff-space = #2 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -367,6 +377,7 @@ mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } \override StaffSymbol #'line-count = #1 \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { diff --git a/Documentation/de/notation/pitches.itely b/Documentation/de/notation/pitches.itely index 5f9511cf56..e8daea6e20 100644 --- a/Documentation/de/notation/pitches.itely +++ b/Documentation/de/notation/pitches.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -272,6 +272,9 @@ Intervall enthält. } @end lilypond +Eine Konsequenz dieser Regeln ist, dass die erste Note innerhalb von +@code{@w{\relative f}} auf die selbe Art interpretiert wird als wenn +sie im absoluten Tonhöhenmodus geschrieben worden wäre. @seealso Musikgossar: @@ -419,13 +422,12 @@ cis1~ cis~ cis @end lilypond - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-extra-naturals-from-being-automatically-added.ly} @seealso @@ -823,7 +825,7 @@ siehe auch @ref{Transposition von Instrumenten}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {transposing-pitches-with-minimum-accidentals-smart-transpose.ly} @seealso @@ -855,6 +857,11 @@ Um auch im relativen Modus transponieren zu können, muss ein @code{\relative} innerhalb des @code{\tranpose} zusätzlich gesetzt werden. +Dreifache Versetzungszeichen werden nicht ausgegeben, wenn +@code{\transpose} benutzt wird. Eine enharmonisch +entsprechende Tonhöhe wird anstatt dessen gesetzt (z. B. +Des anstelle von e-dreifach-b). + @node Umkehrung @unnumberedsubsubsec Umkehrung @@ -886,7 +893,7 @@ music = \relative c' { c d e f } @seealso Notationsreferenz: -@ref{Modale Transformationen}, +@ref{Modale Transformierungen}, @ref{Krebs}, @ref{Transposition}. @@ -920,8 +927,8 @@ ersetllt werden, indem man @ref{Automatic note splitting} aktiviert. @seealso Notationsreferenz: -@ref{Modale Transformationen}, -@ref{Umgekehrung}, +@ref{Modale Transformierungen}, +@ref{Umkehrung}, @ref{Transposition}. @@ -1193,20 +1200,23 @@ c2 c Weitere unterstützte Schlüssel sind beschrieben in @ref{Mensurale Schlüssel}, @ref{Gregorianische Schlüssel}, @ref{Standardtabulaturen} und -@ref{Angepasste Tabulaturen}. +@ref{Angepasste Tabulaturen}. Zur Benutzung unterschiedlicher Schlüssel +bei Stichnoten siehe die Funktionen @code{\cueClef} und +@code{\cueDuringWithClef} in + @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-clef-properties.ly} - @seealso Notationsreferenz: @ref{Mensurale Schlüssel}, @ref{Gregorianische Schlüssel} @ref{Standardtabulaturen}, -@ref{Angepasste Tabulaturen}. +@ref{Angepasste Tabulaturen}, +@ref{Stichnoten formatieren}. Schnipsel: @rlsr{Pitches}. @@ -1300,10 +1310,10 @@ fis @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} @@ -1361,7 +1371,7 @@ a2 b @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ottava-text.ly} @@ -1398,7 +1408,7 @@ Fall muss die Tonart des transponierenden Instruments gekennzeichnet werden, weil sonst die MIDI-Ausgabe und Stichnoten in anderen Stimmen falsche Tonhöhen produzieren. Mehr Information zu Stichnoten in -@ref{Stichnoten}. +@ref{Andere Stimmen zitieren}. @example \transposition @var{Tonhöhe} @@ -1472,7 +1482,7 @@ Glossar: @rglos{transposing instrument}. Notationsreferenz: -@ref{Stichnoten}, +@ref{Andere Stimmen zitieren}, @ref{Transposition}. Schnipsel: @@ -1490,7 +1500,7 @@ Schnipsel: @cindex Versetzungszeichen, automatisch @cindex Standard-Versetzungszeichenstil -@funindex set-accidental-style +@funindex \accidentalStyle @funindex voice @funindex default @@ -1501,7 +1511,7 @@ soll. Diese Funktion kann man wie folgt benutzen: @example \new Staff << - #(set-accidental-style 'voice) + \accidentalStyle "voice" @{ @dots{} @} >> @end example @@ -1516,7 +1526,7 @@ Um etwa den neuen Stil in allen Systemen einer Stimmgruppe (@code{StaffGroup}) zu benutzen, müsste der Befehl so aussehen: @example -#(set-accidental-style 'voice 'StaffGroup) +\accidentalStyle #'StaffGroup "voice" @end example Folgende Versetzungszeichenstile sind unterstützt. @@ -1542,11 +1552,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1559,11 +1569,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1578,8 +1588,8 @@ in beiden Systemen benutzt werden soll: \new PianoStaff @{ << \context Staff = "up" @{ - %%% change the next line as desired: - #(set-accidental-style 'default 'Score) + %%% nächste Zeile wie gewünscht ändern: + \accidentalStyle #'Score "default" \musicA @} \context Staff = "down" @{ @@ -1624,11 +1634,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1641,11 +1651,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1701,11 +1711,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1718,11 +1728,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicB } >> @@ -1739,11 +1749,10 @@ musicB = { Dieser Stil orientiert sich an den üblichen Regeln für das 20. Jahrhundert. Hierbei werden einige zusätzliche Auflösungszeichen ausgelassen, die traditionell für -Versetzungszeichen benutzt wurden, welche die Richtung -des vorherigen Versetzungszeichens verringern oder -umkehren. Die gleichen Versetzungszeichen +ein Kreuz nach einem Doppelkreuz und ein b nach einem +Doppel-b gesetzt werden. Die gleichen Versetzungszeichen wie im Standardstil werden gesetzt, allerdings mit zwei -Ausnahmen, die Uneindeutigkeiten verhindern sollen: nach +Zusätzen, die Uneindeutigkeiten verhindern sollen: nach vorübergehenden Versetzungszeichen werden Auflösungszeichen auch im folgenden Takt gesetzt (für Noten innerhalb der selben Oktave) und im gleichen Takt für Noten in @@ -1769,11 +1778,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1786,11 +1795,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicB } >> @@ -1831,11 +1840,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1848,11 +1857,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicB } >> @@ -1898,11 +1907,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1915,11 +1924,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicB } >> @@ -1959,11 +1968,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1976,11 +1985,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicB } >> @@ -2023,11 +2032,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2040,7 +2049,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano) + \accidentalStyle "piano" \musicA } \context Staff = "down" { @@ -2081,11 +2090,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2098,7 +2107,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano-cautionary) + \accidentalStyle "piano-cautionary" \musicA } \context Staff = "down" { @@ -2140,11 +2149,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2157,11 +2166,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicB } >> @@ -2198,11 +2207,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2215,11 +2224,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicB } >> @@ -2260,11 +2269,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2277,11 +2286,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicB } >> @@ -2318,11 +2327,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2335,11 +2344,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicB } >> @@ -2378,11 +2387,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2395,11 +2404,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicA } \context Staff = "down" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicB } >> @@ -2439,11 +2448,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2457,12 +2466,12 @@ musicB = { << \context Staff = "up" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicA } \context Staff = "down" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicB } >> @@ -2500,11 +2509,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2517,11 +2526,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicA } \context Staff = "down" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicB } >> @@ -2560,11 +2569,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2577,11 +2586,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicA } \context Staff = "down" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicB } >> @@ -2627,7 +2636,7 @@ Klammer kein Auflösungszeichen: @lilypond[quote] { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2644,12 +2653,12 @@ die den Versetzungszeichenstil kurzzeitig auf @code{forget} umschaltet: @lilypond[verbatim,quote] forget = #(define-music-function (parser location music) (ly:music?) #{ - #(set-accidental-style 'forget) + \accidentalStyle "forget" $music - #(set-accidental-style 'modern) + \accidentalStyle "modern" #}) { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2698,13 +2707,13 @@ Tonart definiert werden. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-ambitus-per-voice.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ambitus-with-multiple-voices.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-ambitus-gap.ly} @@ -2887,7 +2896,7 @@ sich in @ref{Die Notensystemgröße einstellen}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {numbers-as-easy-note-heads.ly} @seealso @@ -3004,7 +3013,7 @@ a2 b c d \break @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {applying-note-head-styles-depending-on-the-step-of-the-scale.ly} diff --git a/Documentation/de/notation/repeats.itely b/Documentation/de/notation/repeats.itely index 44cc2e5d20..5aa715e263 100644 --- a/Documentation/de/notation/repeats.itely +++ b/Documentation/de/notation/repeats.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -242,6 +242,25 @@ g1 | Die @code{measureLength}-Eigenschaft ist beschrieben in @ref{Verwaltung der Zeiteinheiten}. +@cindex \inStaffSegno + +Der @code{\inStaffSegno}-Befehl kann angewandt werden, um das +Segno-Zeichen in die Notenzeile einzubinden, auch in Kooperation +mit dem @code{\repeat volta}-Befehl. Die benutzten +Taktstrichsymbole können durch Überschreiben der Eigenschaften +@code{segnoType}, @code{startRepeatSegnoType}, +@code{endRepeatSegnoType} bzw. @code{doubleRepeatSegnoType} +geändert werden. + +@lilypond[verbatim,quote,relative=1] +e1 +\repeat volta 2 { + \inStaffSegno + f2 g a b +} +c1_"D.S." \bar "|." +@end lilypond + @cindex Wiederholungen mit Überbindung @cindex Alternative Schlüsse mit Bindebogen @cindex Überbindung in Wiederholung @@ -262,15 +281,21 @@ c1 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {shortening-volta-brackets.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-volta-brackets-to-additional-staves.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-double-repeat-default-for-volte.ly} +@cindex Wiederholungen, Taktnummer mit Buchstaben +@cindex Wiederholungen, alternative Taktnummerierung + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + @seealso Glossar: @rglos{repeat}, @@ -291,7 +316,6 @@ Referenz der Interna: @rinternals{UnfoldedRepeatedMusic}. @knownissues - @cindex verschachtelte Wiederholung @cindex Wiederholung, verschachtelt @cindex Wiederholung und Zählzeit @@ -436,7 +460,7 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly} @@ -485,7 +509,22 @@ wobei @code{@var{musikAusdr}} ein musikalischer Ausdruck ist und c1 @end lilypond -Repititive Wiederholungen können auch mit mehreren Klammern +In einigen Fällen, insbesondere in einer @code{\relative}-Umgebung, +bedeutet die Funktion @code{\repeat unfold} nicht das gleiche wie +die ausgeschriebenen Noten mehrere Male. Beispielsweise ist + +@example +\repeat unfold 2 @{ a'4 b c @} +@end example + +@noindent +nicht das Selbe wie + +@example +a'4 b c | a'4 b c +@end example + +Repititive Wiederholungen können auch mit mehreren Alternativeklammern notiert werden: @lilypond[verbatim,quote,relative=2] @@ -512,9 +551,9 @@ ergeben. c1 @end lilypond -Wenn es mehr Alternativen als Wiederholungen gibt, werden die +Wenn es mehr Alternativen als Wiederholungen gibt, wird nur die ersten Alternativen ausgegeben und die restlichen Alternativen -ignoriert. +ignoriert und nicht gesetzt. @lilypond[verbatim,quote,relative=2] \repeat unfold 2 { c4 d e f } @@ -526,7 +565,7 @@ ignoriert. c1 @end lilypond -Es ist auch möglich, mehrere @code{unfold}-Wiederholungen (allerdings +Es ist auch möglich, mehrere @code{unfold}-Wiederholungen (mit oder ohne Alternativen) ineinander zu verschachteln: @lilypond[verbatim,quote,relative=2] @@ -540,12 +579,20 @@ ohne Alternativen) ineinander zu verschachteln: c1 @end lilypond +Akkordkonstruktionen können mit dem Akkordwiederholungssymbol @code{q} +wiederholt werden. Siehe @ref{Akkord-Wiederholungen}. + @warning{Wenn man @code{@bs{}relative} innerhalb von @code{@bs{}repeat} notiert, ohne den @code{Voice}-Kontext explizit zu beginnen, erscheinen zusätzliche (ungewollte) Systeme. Sie auch @rprogram{Ein zusätzliches System erscheint}.} - @seealso +Notationsreferenz: +@ref{Akkord-Wiederholungen}. + +Handbuch zur Benutzung: +@rprogram{Ein zusätzliches System erscheint}. + Schnipsel: @rlsr{Repeats}. @@ -628,13 +675,13 @@ benützten ein doppeltes Prozent-Symbol. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-counter.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-count-visibility.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {isolated-percent-repeats.ly} @seealso @@ -726,7 +773,7 @@ c: c: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {cross-staff-tremolos.ly} @seealso diff --git a/Documentation/de/notation/rhythms.itely b/Documentation/de/notation/rhythms.itely index 06323b8554..0d14ff658e 100644 --- a/Documentation/de/notation/rhythms.itely +++ b/Documentation/de/notation/rhythms.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -153,7 +153,10 @@ siehe @ref{Richtung und Platzierung}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{alternative-breve-note.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-number-of-augmentation-dots-per-note.ly} @seealso @@ -264,23 +267,23 @@ zu setzen, siehe @ref{Tondauern skalieren}. @funindex tupletNumberFormatFunction @funindex tupletSpannerDuration -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {entering-several-tuplets-using-only-one--times-command.ly} @cindex Triolennummer, Änderung @funindex TupletNumber -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-tuplet-number.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {non-default-tuplet-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-tuplet-bracket-visibility.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {permitting-line-breaks-within-beamed-tuplets.ly} @seealso @@ -339,7 +342,9 @@ dadurch nicht beeinflusst, die neue Dauer wird aber dazu benutzt, ihre Position im Takt zu errechnen und die neue Dauer in der MIDI-Ausgabe einzusetzen. Die Faktoren, mit denen multipliziert wird, können auch kombiniert werden, etwa -@qq{*L*M*/N}. +@qq{*L*M*/N}. Die Faktoren sind Teil der Dauer: wenn man keine Dauer +für die nächste Note angibt, wird die Dauer der vorigen Note mit allen +Skalierungsfaktoren übernommen. Im nächsten Beispiel nehmen die drei ersten Noten genau zwei Schläge ein, aber es wird keine Triolenklammer über ihnen ausgegeben. @@ -347,16 +352,16 @@ aber es wird keine Triolenklammer über ihnen ausgegeben. @lilypond[quote,relative=2,verbatim] \time 2/4 % Alter durations to triplets -a4*2/3 gis4*2/3 a4*2/3 +a4*2/3 gis a % Normal durations -a4 a4 +a4 a % Double the duration of chord 4*2 % Duration of quarter, appears like sixteenth b16*4 c4 @end lilypond -Die Dauer von unsichtbaren Noten kann auch mit einem Faktor +Die Dauer von unsichtbaren Pausen kann auch mit einem Faktor beeinflusst werden. Das ist sinnvoll, wenn man viele Takte überspringen muss, etwa @code{s1*23}. @@ -375,7 +380,6 @@ mit einem Bruch komprimiert werden, als ob jede Note, jeder Akkord oder jede Pause mit dem Bruch multipliziert würde. Damit bleibt das Aussehen der Musik unverändert, aber die interne Dauer der Noten wird mit dem Bruch multipliziert. -Die Leerzeichen um den Punkt im Beispiel sind notwendig. Hier ein Beispiel, das zeigt, wie Noten komprimiert und ausgedehnt werden kann: @@ -384,11 +388,11 @@ ausgedehnt werden kann: % Normal durations 4 c8 a % Scale music by *2/3 -\scaleDurations #'(2 . 3) { +\scaleDurations 2/3 { 4. c8 a f } % Scale music by *2 -\scaleDurations #'(2 . 1) { +\scaleDurations 1/2 { 4 c8 b } @end lilypond @@ -560,6 +564,22 @@ die gleiche Struktur wie die Definition für Legatobögen. Zu weiterer Information zu komplizierten Strichelungsmustern, siehe die Schnipsel im Abschnitt @ref{Legatobögen}. +Durch Veränderung der Eigenschaften @var{whiteout} (weiß malen) und +@var{layer} (Ebene) kann verhindert werden, dass Bindebögen mit anderen +Objekten im Notensystem zusammenstoßen. + +@lilypond[verbatim,quote,ragged-right,relative=2] +\override Tie #'layer = #-2 +\override Staff.TimeSignature #'layer = #-1 +\override Staff.KeySignature #'layer = #-1 +\override Staff.TimeSignature #'whiteout = ##t +\override Staff.KeySignature #'whiteout = ##t +b2 b~ +\time 3/4 +\key a \major +b r4 +@end lilypond + @predefined @code{\tieUp}, @code{\tieDown}, @@ -574,10 +594,10 @@ die Schnipsel im Abschnitt @ref{Legatobögen}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-ties-with-arpeggios.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {engraving-ties-manually.ly} @seealso @@ -590,6 +610,7 @@ Notationsreferenz: @ref{Automatische Aufteilung von Noten}. Schnipsel: +@rlsr{Expressive marks}, @rlsr{Rhythms}. Referenz der Interna: @@ -687,7 +708,7 @@ a4\rest d4\rest @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {rest-styles.ly} @seealso @@ -956,16 +977,16 @@ Taktprüfungswarnungen nicht angezeigt. @cindex Pausen, Kirchenstil @cindex Balkenpausen, mehrtaktig -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-form-of-multi-measure-rests.ly} @cindex Mehrtaktpausen, Positionierung @cindex Position von Mehrtaktpausen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {positioning-multi-measure-rests.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {multi-measure-rest-markup.ly} @seealso @@ -1105,8 +1126,8 @@ werden. \new Staff { \relative c' { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1121,11 +1142,11 @@ werden. @enumerate @item -@code{@var{timeSignatureFraction}} (Taktart-Bruch), ein Scheme-Paar, -das den Takt beschreibt. +@code{@var{timeSignatureFraction}} (Taktart-Bruch), ein Bruch, +der den Takt beschreibt. @item -@code{@var{baseMomentFraction}} (Grundmoment-Bruch), ein Scheme-Paar, das +@code{@var{baseMomentFraction}} (Grundmoment-Bruch), ein Bruch, der den Zähler und Nenner der Grundschlageinheit der Taktart enhält. @item @@ -1149,8 +1170,8 @@ Noten in dem Kontext befinen müssen, bevor \relative c' { % This call will fail because the context isn't yet instantiated \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1158,8 +1179,8 @@ Noten in dem Kontext befinen müssen, bevor \repeat unfold 7 { c8 } | % This call will succeed \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1169,10 +1190,6 @@ Noten in dem Kontext befinen müssen, bevor } @end lilypond - - - - @cindex Taktart, Standardeigenschaften wiederherstellen @cindex Wiederherstellen von Taktart-Standardeigenschaften @cindex Zurücksetzen von Taktart-Standardeigenschaften @@ -1188,13 +1205,13 @@ Standard zurückgesetzt werden: \relative c' { \repeat unfold 8 { c8 } | \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 \repeat unfold 8 { c8 } | - \revertTimeSignatureSettings #'(4 . 4) + \revertTimeSignatureSettings 4/4 \time 4/4 \repeat unfold 8 { c8 } | } @@ -1211,8 +1228,8 @@ Notensysteme können eingerichtet werden, indem man den \new StaffGroup << \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1220,8 +1237,8 @@ Notensysteme können eingerichtet werden, indem man den } \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(1 3) % beatStructure #'() % beamExceptions \time 4/4 @@ -1250,16 +1267,7 @@ Notensysteme können eingerichtet werden, indem man den @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{changing-the-time-signature-without-affecting-the-beaming.ly} - -@cindex compound time signatures -@cindex time signature, compound - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly} @@ -1342,20 +1350,19 @@ d4 g e c @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-metronome-and-rehearsal-marks-below-the-staff.ly} @c perhaps also an example of how to move it horizontally? -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-tempo-without-a-metronome-mark.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-metronome-marks-in-markup-mode.ly} Zu Einzelheiten siehe @ref{Text formatieren}. - @seealso Glossar: @rglos{metronome}, @@ -1374,8 +1381,6 @@ Referenz der Interna: @rinternals{MetronomeMark}. - - @node Auftakte @unnumberedsubsubsec Auftakte @translationof Upbeats @@ -1384,7 +1389,7 @@ Referenz der Interna: @cindex Takte verkürzen @cindex partieller Takt @cindex halber Takt -@cindex Taktlänge ändern +@cindex Teiltakt @funindex measurePosition @funindex \partial @@ -1398,31 +1403,44 @@ Befehl @code{\partial} notiert, dessen Syntax lautet: @end example @noindent -wobei @var{Dauer} die rhythmische Länger der Noten darstellt, -die vor dem ersten vollständigen Takt gesetzt werden sollen: +wobei @code{@var{Dauer}} die Länger der Noten darstellt, +bevor der nächste vollständige Takt beginnt: -@lilypond[quote,verbatim,relative=2] -\partial 4 e4 | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 8 +e8 | a4 c8 b c4 | +@end lilypond + +Die @var{Dauer} kan ein beliebiger Wert kleiner als der vollständige +Takt sein. + +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 4. +r4 e8 | a4 c8 b c4 | @end lilypond -Intern wird @code{\partial @var{Dauer}} übersetzt nach: +@code{\partial @var{Dauer}} kann auch folgendermaßen geschrieben werden: @example \set Timing.measurePosition -@var{Länge der Dauer} @end example -Zum Beispiel wird aus @code{\partial 8*3}: +So wird etwa aus @code{\partial 8}: -@example -\set Timing.measurePosition = #(ly:make-moment -3 8) -@end example +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\set Timing.measurePosition = #(ly:make-moment -1 8) +e8 | a4 c8 b c4 | +@end lilypond Die Eigenschaft @code{measurePosition} (Takt-Position) enthält eine rationale Zahl, die anzeigt, wie groß der Abstand zum Taktanfang ist. Deshalb ist sie eine negative Zahl; @code{\partial 4} wird also intern übersetzt -zu @code{-4} was soviel bedeutet wie: @qq{Eine Viertel bleibt übrig vom ganzen Takt.} +zu @w{@code{-4}} was soviel bedeutet wie: +@qq{Eine Viertel bleibt übrig vom ganzen Takt.} @seealso Glossar: @@ -1449,20 +1467,30 @@ Referenz der Interna: @cindex Seitenumbrüche in nicht metrischer Musik @knownissues - @code{\partial} ist nur für den Anfang eines Stückes vorgesehen. Wenn der -Befehl innerhalb eines Stückes verwendet wird, können seltsame Warnungen +Befehl nach dem Anfang verwendet wird, können Warnungen oder Probleme auftreten. In solchem Fall sollten Sie @code{\set Timing.measurePosition} benutzen. +@lilypond[quote,verbatim,relative=1] +\time 6/8 +\partial 8 +e8 | a4 c8 b[ c b] | +\set Timing.measurePosition = #(ly:make-moment -1 4) +r8 e,8 | a4 c8 b[ c b] | +@end lilypond + @node Musik ohne Metrum @unnumberedsubsubsec Musik ohne Metrum @translationof Unmetered music @cindex Kadenz -@cindex Taktlinien, ausschalten -@cindex Taktnummern, ausschalten +@cindex Bebalkung in Kadenzen +@cindex Bebalken in taktloser Musik +@cindex Kadenzen, Bebalkung +@cindex Balken in Kadenzen +@cindex Taktlose Musik, Bebalkung @cindex Noten ohne Takt @cindex Taktart, Noten ohne @cindex Metrum, Noten ohne @@ -1472,11 +1500,11 @@ benutzen. @funindex cadenzaOn @funindex cadenzaOff -Taktlinien und Taktzahlen werden automatisch erzeugt. Für Musik -ohne Metrum hingegen (etwa Kadenzen) ist das jedoch nicht -erwünscht. Mit den Befehlen @code{\cadenzaOn} und -@code{\cadenzaOff} kann dieses Verhalten ausgeschaltet und -wieder angeschaltet werden. +In Musik mit Metrum werden Taktstriche automatisch eingefügt und Taktzahlen +automatisch berechnet. In Musik ohne Metrum hingegen (etwa Kadenzen) ist +das nicht gewollt und kann @qq{ausgeschaltet} werden mit dem Befehl +@code{\cadenzaOn}, um dann wieder zum normalen Verhalten mit +@code{\cadenzaOff} zurückzukehren. @lilypond[verbatim,relative=2,quote] c4 d e d @@ -1487,8 +1515,7 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -Taktnummerierung wird am Ende der Kadenz wieder aufgenommen, als -ob es die Kadenz nicht gegeben hätte: +Taktnummerierung wird am Ende der Kadenz wieder aufgenommen: @lilypond[verbatim,relative=2,fragment] % Show all bar numbers @@ -1501,25 +1528,34 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -@cindex Bebalkung in Kadenzen -@cindex Bebalken in taktloser Musik -@cindex Kadenzen, Bebalkung -@cindex Balken in Kadenzen -@cindex Taktlose Musik, Bebalkung +Ein neuer Takt wird nie innerhalb der Kadenz begonnen, auch wenn einer +oder mehrere @code{\bar}-Befehle eingefügt ewrden. Darum müssen auch +Erinnerungsversetzungszeichen manuell eingefügt werden. Siehe +@ref{Versetzungszeichen}. + +@lilypond[verbatim,relative=2,quote] +c4 d e d +\cadenzaOn +cis4 d cis d +\bar "|" +cis4 d cis! d +\cadenzaOff +\bar "|" +@end lilypond + +Automatische Bebalkung wird durch @code{\cadenzeOn} ausgestellt. Darum müssen +alle Balken in Kadenzen manuell eingegeben werden (siehe @ref{Manuelle Balken}). @lilypond[verbatim,relative=2,quote] \repeat unfold 8 { c8 } \cadenzaOn -\repeat unfold 5 { c8 } +cis8 c c c c \bar"|" +c8 c c \cadenzaOff \repeat unfold 8 { c8 } @end lilypond -Automatische Bebalkung wird durch @code{\cadenzeOn} ausgestellt und durch -@code{\cadenzaOff} wieder angestellt. Darum müssen alle Balken in Kadenzen -manuell eingegeben werden (siehe @ref{Manuelle Balken}). - Diese vordefinierten Befehle wirken sich auf alle Systeme in der Partitur aus, auch wenn sie nur in einer einzigen Stimme notiert werden. Um dieses Verhalten zu ändern, müsen Sie @code{Timing_translator} @@ -1537,27 +1573,34 @@ Glossar: Notationsreferenz: @ref{Sichtbarkeit von Objekten}, -@ref{Polymetrische Notation} -@ref{Manuelle Balken}. +@ref{Polymetrische Notation}, +@ref{Manuelle Balken}, +@ref{Versetzungszeichen}. Schnipsel: @rlsr{Rhythms}. +@cindex Kadenz und Zeilenumbrüche +@cindex Musik ohne Metrum, Zeilenumbrüche +@cindex Zeilenumbrüche in Musik ohne Metrum +@cindex Zeilenumbrüche in Kadenzen +@cindex Seitenumbrüche in Musik ohne Metrum +@cindex Seitenumbrüche in Kadenzen +@cindex Kadenz und Seitenumbrüche +@cindex Musik ohne Metrum, Seitenumbrüche + @knownissues -LilyPond fügt Zeilen- und Seitenumbrüche nur an einer Taktlinie -ein. Wenn die Kadenz nicht vor einem Umbruch endet, müssen Sie -selber unsichtbare Taktlinien mit +Automatische Zeilen- und Seitenumbrüche werden nur an Taktstrichen +vorgenommen, sodass @qq{unsichtbare} Taktstriche manuell eingefügt +werden müssen, damit Umbrüche erlaubt werden: @example \bar "" @end example -@noindent -einfügen, um anzuzeigen, wo umgebrochen werden darf. - -Sie müssen explizit einen @code{Voice}-Kontext erstellen, wenn -Sie ein Stück mit @code{cadenzaOn} beginnen wollen, weil sonst +Man muss explizit einen @code{Voice}-Kontext erstellen, wenn +man ein Stück mit @code{cadenzaOn} beginnen will, weil sonst ein seltsamer Fehler auftreten kann. @example @@ -1590,32 +1633,27 @@ ein seltsamer Fehler auftreten kann. @funindex \times @funindex times -Polymetrische Notation ist unterstützt, entweder direkt, oder +Polymetrische Notation ist direkt unterstützt, oder indem man das sichtbare Taktart-Symbol verändert und zusätzlich die Notendauern skaliert. -@strong{@i{Systeme mit unterschiedlichen Taktarten, gleiche -Taktlänge}} +@subsubheading Unterschiedliche Taktarten mit gleicher Taktlänge -Diese Art der Notation kann erstellt werden, indem für jedes -System eine identische Taktart eingestellt wird, aber manuell -für jeden Takt durch Einstellung von @code{timeSignatureFraction} -auf den gewünschten Bruch geändert und dann die Länge der -Noten entsprechenden skaliert wird, siehe auch @ref{Taktangabe}. -Die Skalierung geschieht mit dem Befehl -@code{\scaleDurations}, der auf ähnliche Weise wie @code{\times} -benutzt wird, aber keine Klammer über den Noten ausgibt. Siehe -auch @ref{Tondauern skalieren}. +Für jedes System wird eine gemeinsame Taktart gesetzt und dann +die Einstellung von @code{timeSignatureFraction} auf den gewünschten +Bruch geändert. Mit dem Befehl @code{\scaleDurations} werden +die Dauern der Noten auf jedem System dann auf die gemeinsame +Taktart skaliert. Siehe auch @ref{Tondauern skalieren}. @cindex Bebalkung in polymetrischer Notation @cindex Polymetrische Notation und Balken @cindex Balken in polymetrischer Notation -In diesem Beispiel werden Noten mit den Taktarten 3/4, 9/8 und -10/8 parallel benutzt. Im zweiten System werden die gezeigten -Dauern mit 2/3 multipliziert, da 2/3x9/8=3/4, und im dritten +In folgendem Beispiel werden Noten mit den Taktarten 3/4, 9/8 und +10/8 parallel notiert. Im zweiten System werden die gezeigten +Dauern mit 2/3 multipliziert, da 2/3 x 9/8 = 3/4, und im dritten System werden die gezeigten Dauern mit 3/5 multipliziert, da -3/5x10/8=3/4. Oft wird es nötig sein, Balken manuell zu setzen, +3/5 x 10/8 = 3/4. Oft wird es nötig sein, Balken manuell zu setzen, weil die Skalierung sich auch auf die automatische Bebalkung auswirkt. @@ -1624,18 +1662,18 @@ auswirkt. \new Staff { \time 3/4 c4 c c | - c c c | + c4 c c | } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(9 . 8) - \scaleDurations #'(2 . 3) - \repeat unfold 6 { c8[ c c] } + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 + \repeat unfold 6 { c8[ c c] } } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(10 . 8) - \scaleDurations #'(3 . 5) { + \set Staff.timeSignatureFraction = 10/8 + \scaleDurations 3/5 { \repeat unfold 2 { c8[ c c] } \repeat unfold 2 { c8[ c] } | c4. c4. \times 2/3 { c8[ c c] } c4 @@ -1644,8 +1682,8 @@ auswirkt. >> @end lilypond -@strong{@i{Systeme mit unterschiedlichen Taktarten, unterschiedliche -Taktlänge}} +@subsubheading Unterschiedlichen Taktarten mit unterschiedlicher +Taktlänge Jedes System kann auch eine eigene unabhängige Taktart erhalten. Dazu muss der @code{Timing_translator} und der @@ -1690,11 +1728,45 @@ verschoben werden. >> @end lilypond -@snippets +@funindex \compoundMeter +@cindex Zusammengesetzte Taktarten +@cindex Taktarten, zusammengesetzt + +@subsubheading Zusammengesetzte Taktarten + +Taktarten aus mehreren Teilen werden mit der Funktion +@code{\compoundMeter} erstellt. Die Syntax ist folgende: -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{compound-time-signatures.ly} +@example +\compoundMeter #'@code{(Liste aus Listen)} +@end example + +Die einfachste Konstruktion ist eine einzige Liste, wobei die letzte +Zahl den Nenner des Bruches darstellt, während die vorherkommenden +Zahlen die Zähler sind. + +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((2 2 2 8)) + \repeat unfold 6 c8 \repeat unfold 12 c16 +} +@end lilypond +Kompliziertere Taktarten können durch zusätzliche Listen erstellt +werden (von Klammern abgegrenzt). Automatische Balken werden +entsprechend der Werte angepasst. + +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((1 4) (3 8)) + \repeat unfold 5 c8 \repeat unfold 10 c16 +} + +\relative c' { + \compoundMeter #'((1 2 3 8) (3 4)) + \repeat unfold 12 c8 +} +@end lilypond @seealso Glossar: @@ -1704,6 +1776,8 @@ Glossar: Notationsreferenz: @ref{Taktangabe}, +@ref{Automatische Balken}, +@ref{Manuelle Balken}, @ref{Tondauern skalieren}. Schnipsel: @@ -1869,7 +1943,7 @@ eingeschaltet wird mit @code{\improvisationOn}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {guitar-strum-rhythms.ly} @seealso @@ -1938,11 +2012,10 @@ c16 c8 @warning{Wenn Balken eingesetzt werden, um Melismen in Gesang zu notieren, sollte die automatische Bebalkung mit @code{\autoBeamOff} ausgeschaltet -werden und die Balken manuell notiert werden.} - -@warning{Wenn @code{@bs{}partcombine} mit @code{@bs{}autoBeamOff} benutzt -wird, können ungewünschte Resultate auftreten. Siehe die Schnipsel unten -für mehr Information.} +werden und die Balken manuell notiert werden. Die Benutzung von +@code{@bs{}partcombine} zusammen mit @code{@bs{}autoBeamOff} kann zu +unbeabsichtigten Ergebnissen führen. Siehe die Schnipsel für mehr +Information.} Balkenmuster, die sich von den automatisch erstellen unterscheiden, können erstellt werden, siehe @ref{Einstellung von automatischen Balken}. @@ -1952,10 +2025,7 @@ können erstellt werden, siehe @ref{Einstellung von automatischen Balken}. @code{\autoBeamOn}. @endpredefined - - @funindex breakable - @cindex Zeilenumbruch, Balken @cindex Balken, Zeilenumbrüche @cindex Balken mit Knie @@ -1963,16 +2033,16 @@ können erstellt werden, siehe @ref{Einstellung von automatischen Balken}. @cindex auto-knee-gap @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beams-across-line-breaks.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-beam-knee-gap.ly} @cindex Balken, \partcombine und \autoBeamOff @cindex Stimmen, \autoBeamOff und \partcombine -@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle] +@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle] {partcombine-and-autobeamoff.ly} @seealso @@ -1995,6 +2065,13 @@ Referenz der Interna: @rinternals{beam-interface}, @rinternals{unbreakable-spanner-interface}. +@knownissues +Die Eigenschaften eines Balkens werden am @emph{Beginn} seiner +Konstruktion bestimmt. Alle zusätzlichen Änderungen der +Balkeneigenschaften, die auftreten, bevor der Balken zuende +ist, werden nicht ausgewertet, bevor nicht der @emph{nächste} +Balken beginnt. + @node Einstellung von automatischen Balken @unnumberedsubsubsec Einstellung von automatischen Balken @@ -2119,7 +2196,7 @@ c16 c c | @code{beamExceptions} ist eine Aliste mit einem Schlüssel der Regeltypen (rule-type) und einem Wert der Bebalkungsregeln (beaming-rules). -Im Moment ist der einzige mögliche rule-type @code{#'end} für ein +Im Moment ist der einzige mögliche rule-type @code{'end} für ein Balkenende. Beaming-rules ist eine Scheme-Aliste (oder eine paarige Liste), die @@ -2185,19 +2262,31 @@ Die @code{beamExceptions}-Regel kann die @code{beatStructure}-Einstellung \repeat unfold 8 {c8} @end lilypond -Auf die gleiche Art werden im 3/4-Takt Achtelnoten als ganzer Takt bebalkt. -Um Achtelnoten im 3/4-Takt auf jeder Taktzeit zu bebalken, muss -@code{beamExceptions} zurückgesetzt werden: +Im traditionellen Notensatz haben Achtelnoten besondere Bebalkungsregeln. +Ein Takt, der nur aus Achteln besteht, kann als Ganzer bebalkt werden. Diese +Regel wird durch die Eigenschaft @code{beamWholeMeasure} bestimmt. @lilypond[quote,verbatim,relative=2] \time 3/4 -% by default we beam in (3) due to beamExceptions +% by default we beam in (6) due to beamExceptions \repeat unfold 6 {a8} | % This will beam (1 1 1) due to beatLength \set Timing.beamExceptions = #'() \repeat unfold 6 {a8} @end lilypond +In einigen Notenstichen der romantischen und klassischen Periode kann auch +ein halber Takt Achtelnoten durchgehend bebalkt werden, auch wenn das die +generelle Regel verletzt (siehe Gould, S. 153). Dieses Verhalten wird durch +die Eigenschaft @code{beamHalfMeasure} bestimmt: + +@lilypond[quote,verbatim,relative=2] +\time 3/4 +r4. a8 a a | +\set Timing.beamHalfMeasure = ##f +r4. a8 a a | +@end lilypond + @i{@strong{Wie die automatische Bebalkung funktioniert}} Wenn die automatische Bebalkung aktiviert ist, wird die Platzierung @@ -2235,31 +2324,32 @@ kürzesten Note der bebalkten Gruppe. Die Standardbebalkungsregeln finden sich in der Datei @file{scm/time-signature-settings.scm}. - @snippets - @cindex Balken, Unterteilung - @funindex subdivideBeams -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {subdividing-beams.ly} +@cindex Bebalkung nach Taktschlag + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{strict-beat-beaming.ly} + @cindex Taktgruppen @cindex Schlaggruppen @cindex Taktschläge gruppieren @cindex Takt unterteilen @cindex Unterteilen von Takten - @funindex autoBeamSettings -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {conducting-signs,-measure-grouping-signs.ly} @cindex Balken, letzter in Partitur @cindex Balken, letzter in polyphoner Stimme -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beam-endings-in-score-context.ly} @seealso @@ -2275,7 +2365,6 @@ Referenz der Interna: @rinternals{BeamForbidEvent}, @rinternals{beam-interface}. - @knownissues Wenn eine Partitur endet, während ein automatischer Balken noch nicht beendet wurde und weiterhin Noten erwartet, wird dieser @@ -2318,8 +2407,8 @@ der automatischen Bebalkungsregeln für eine Taktart sind in << \new Staff { \overrideTimeSignatureSettings - #'(3 . 4) % timeSignatureFraction - #'(1 . 8) % baseMomentFraction + 3/4 % timeSignatureFraction + 1/8 % baseMomentFraction #'(1 5) % beatStructure #'() % beamExceptions \time 3/4 @@ -2411,8 +2500,7 @@ g16 a] @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {flat-flags-and-beam-nibs.ly} @seealso @@ -2495,7 +2583,6 @@ Snippets: @rlsr{Rhythms}. @knownissues - Der @code{\featherDurations}-Befehl funktioniert nur mit kurzen Notenabschnitten, und wenn die Zahlen in den Brüchen klein sind. @@ -2722,6 +2809,10 @@ c4 c c c \break c1 @end lilypond +Darüber hinaus wählt der @code{\inStaffSegno}-Befehl eines dieser +Segno-Taktstriche aus, in Zusammenarbeit mit dem +@code{\repeat volta}-Befehl. + In Partituren mit vielen Systemen wird ein @code{\bar}-Befehl in einem System automatisch auf alle anderen Systeme angewendet. Die resultierenden Taktstriche sind miteinander verbunden innerhalb einer Gruppe @@ -2835,22 +2926,28 @@ c1 | c | c | c @cindex Taktnummer, Form @cindex Aussehen von Taktnummern -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-the-bar-number-for-the-first-measure.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-at-regular-intervals.ly} +@cindex Taktzahlen mit Buchstaben +@cindex Taktzahlen in Wiederholungen + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + @cindex Ausrichtung von Taktlinien @cindex Taktlinien, Ausrichtung -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-inside-boxes-or-circles.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {aligning-bar-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {removing-bar-numbers-from-a-score.ly} @@ -3102,6 +3199,10 @@ mit dem Befehl @code{\musicglyph} ausgegeben werden können. sich in @ref{Text formatieren}. Zu noch präzieserer Kontrolle siehe @code{break-alignable-interface} in @ref{Objekte ausrichten}. +Die Datei @file{scm/translation-functions.scm} enthält die Definitionen +von @code{format-mark-numbers} und @code{format-mark-letters}. Sie +können als Anregung für andere Formatierungsfunktionen genommen werden. + @seealso Notationsreferenz: @ref{Die Feta-Schriftart}, @@ -3109,10 +3210,7 @@ Notationsreferenz: @ref{Objekte ausrichten}. Installierte Dateien: -@file{scm/translation-functions.scm} beinhaltet die Definition -von @code{format-mark-numbers} und -@code{format-mark-letters}. Sie können als Anleitung für eigene -Funktionen benutzt werden. +@file{scm/translation-functions.scm}. Schnipsel: @rlsr{Rhythms}. @@ -3138,7 +3236,9 @@ Referenz der Interna: @translationof Grace notes @funindex \grace -@funindex grace +@funindex \slashedGrace +@funindex \acciaccatura +@funindex \appoggiature @cindex Verzierungen @cindex Ziernoten @@ -3151,22 +3251,26 @@ Ornamente. Sie werden in einer kleineren Schriftgröße gesetzt und nehmen keine logische Zeit im Takt ein. @lilypond[quote,relative=2,verbatim] -c4 \grace c16 c4 -\grace { c16[ d16] } c2 +c4 \grace b16 a4( +\grace { b16[ c16] } a2) @end lilypond -LilyPond hat auch Unterstützung für zwei besondere Verzierungen, -den Vorschlag (engl. acciaccatura) und den Vorhalt (engl appogiatura). - Der Vorschlag wird durch eine verkleinerte Note mit Schrägstrich -und Bogen notiert. Der Vorhalt dagegen ist eine Verzierung, die -einen bestimmten Notenwert der Hauptnote für sich beansprucht. -Er wird als verkleinerte Note ohne Schrägstrich notiert. +Es gibt drei Arten von Verzierungen: +den Vorschlag (engl. acciaccatura), eine angebundene Verzierungsnote +mit einem Schrägstrich durch den Hals, und den Vorhalt (engl. appogiatura), +welcher den Wert der Hauptnote um seinen eigenen Wert verkürzt und +ohne Schrägstrich notiert wird. Man kann einen Vorschlag auch mit +Schrägstrich durch den Hals, aber ohne Legatobogen notieren. Diese +Verzierung wird mit dem Befehl @code{\slashedGrace} notiert und wird +zwischen Noten notiert, die selber einen Legatobogen haben. @lilypond[quote,relative=2,verbatim] -\grace c8 b4 \acciaccatura d8 c4 \appoggiatura e8 d4 -\acciaccatura { g16[ f] } e4 +\acciaccatura { g16[ f] } e2 +\slashedGrace a,8 g4 +\slashedGrace b16 a4( +\slashedGrace b8 a2) @end lilypond Die Position von Verzierungen ist zwischen Notensystemen @@ -3256,23 +3360,20 @@ Standard eingestellt: @cindex durchgestrichener Hals @cindex Notenhals, durchgestrichen - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-grace-note-slashes-with-normal-heads.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-grace-layout-within-music.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {redefining-grace-note-global-defaults.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-grace-notes-with-floating-space.ly} - - @seealso Glossar: @rglos{grace notes}, @@ -3280,6 +3381,7 @@ Glossar: @rglos{appoggiatura}. Notationsreferenz: +@ref{Tondauern skalieren}, @ref{Manuelle Balken}. Installierte Dateien: @@ -3294,9 +3396,7 @@ Referenz der Interna: @rinternals{Grace_engraver}, @rinternals{Grace_spacing_engraver}. - @knownissues - @cindex Vorschlag, mehrere Noten @cindex mehrnotiger Vorschlag @cindex Synchronisation von Verzierungen @@ -3367,6 +3467,32 @@ Verzierungsabschnitte sollten nur innerhalb von sequentiellen musikalischen Ausdrücken benützt werden. Wenn sie ineinandergeschachtelt werden, kann es zu Fehlermeldungen oder Abstürzen kommen. +Jede Verzierungsnote in der MIDI-Ausgabe hat ein Viertel der Dauer ihrer +wirklichen Dauer. Wenn die addierte Dauer der Verzierungsnoten länger als +die Dauer der vorhergehenden Note dauert, wird der Fehler +@qq{@code{Going back in MIDI time}} ausgegeben. Man muss die Verzierungsnoten +entweder kürzer machen, etwa: + +@example +\acciaccatura @{ c'8[ d' e' f' g'] @} +@end example + +@noindent +wird zu: + +@example +\acciaccatura @{ c'16[ d' e' f' g'] @} +@end example + +@noindent +oder die Dauern explizit ändern: + +@example +\acciaccatura @{ \scaleDurations 1/2 @{ c'8[ d' e' f' g'] @} @} +@end example + +Siehe @ref{Tondauern skalieren}. + @node An Kadenzen ausrichten @unnumberedsubsubsec An Kadenzen ausrichten @@ -3398,9 +3524,9 @@ MyCadenza = \relative c' { \MyCadenza c'1 } \new Staff { - #(ly:export (mmrest-of-length MyCadenza)) + $(mmrest-of-length MyCadenza) c'1 - #(ly:export (skip-of-length MyCadenza)) + $(skip-of-length MyCadenza) c'1 } >> diff --git a/Documentation/de/notation/simultaneous.itely b/Documentation/de/notation/simultaneous.itely index 188f52f269..055c7f2655 100644 --- a/Documentation/de/notation/simultaneous.itely +++ b/Documentation/de/notation/simultaneous.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -141,6 +141,9 @@ Cluster, siehe @ref{Cluster}. @unnumberedsubsubsec Akkord-Wiederholungen @translationof Chord repetition +@cindex Akkorde, Wiederholung +@cindex Wiederholung mit @code{q} + Um Schreibarbeit zu ersparen, kann ein Zeichen benutzt werden, um den vorhergehenden Akkord zu wiederholen. Das Symbol hierzu ist @code{q}: @@ -157,13 +160,68 @@ Akkordes wiederholgt werden. 1\p^"text" q2\<( q8)[-| q8.]\! q16-1-2-3 q8\prall @end lilypond +Das Akkordwiederholungssymbol erinnert sich an das letzte Vorkommen +eines Akkordes, sodass man den letzten Akkord wiederholen kann, auch +wenn in der Zwischenzeit nicht-Akkord-Noten oder -Pause auftetreten +sind. + +@lilypond[verbatim,quote,relative=2] +1 c'4 q2 r8 q8 | +q2 c, | +@end lilypond + Das Akkord-Wiederholungssymbol behält keine Dynamikzeichen, Artikulationen oder Ornamente, die in oder an den vorhergehenden Akkord gehängt waren. @lilypond[verbatim,quote,relative=2] -1\sfz c4 q2 r8 q8 +1\sfz c'4 q2 r8 q8 | +q2 c, | @end lilypond +Damit auch diese Zeichen erhalten bleiben, kann die Funktion @code{\chordRepeats} +explizit mit einem zusätzlichen Argument aufgerufen werden, um +eine Liste an Ereignistypen (engl. event) zu spezifizieren, die mit +wiederholt werden, es sei denn, der gleiche Ereignistyp wird selber mit +dem @code{q} verwendet: + +@lilypond[verbatim,quote] +\relative c'' { + \chordRepeats #'(articulation-event) + { 1\sfz c'4 q2 r8 q8-. } | + q2 c, | +} +@end lilypond + +Die Benutzung von @code{\chordRepeats} innerhalb einer @code{\relative}-Konstruktion +führt zu unerwarteten Ergebnissen: Nachdem die Akkordereignisse einmal +erweitert sind, können sie nicht mehr von normal eingegebenen Akkorden +unterschieden werden. Dadurch fügt @code{\relative} einen Oktavsprung +entsprechend des aktuellen Kontexts ein. + +Weil geschachtelte @code{\relative}-Umgebungen sich nicht gegenseitig +beeinflussen, kann man eine zusätzliche @code{\relative}-Umgebung +innerhalb von @code{\chordRepeats} benutzen, um die Oktavbeziehungen +darzustellen, bevor die wiederholten Akkorde eingesetzt werden. In diesem +Fall beeinflusst der gesamte Inhalt der inneren @code{\relative}-Umgebung +nicht die äußere. Daraus ergibt sich die unterschiedliche Oktave der +letzten Note in diesem Beispiel: + +@c Without \new Voice, implicit voice creation does the dumbest thing. +@lilypond[verbatim,quote] +\new Voice +\relative c'' { + \chordRepeats #'(articulation-event) + \relative c'' + { 1\sfz c'4 q2 r8 q8-. } | + q2 c | +} +@end lilypond + +Derartige Probleme mit @code{\relative} treten nur auf, wenn @code{\chordRepeats} +explizit aufgerufen wird: die Verarbeitung von einfachem @code{q} wird +erst vorgenommen, wenn alle @code{\relative}-Umgebungen schon verarbeitet +sind. + @seealso Notationsreferenz: @ref{Notation von Akkorden}, @@ -214,6 +272,29 @@ mehrere Systeme erstellt: In diesem Fall stellt der unterschiedliche Rhythmus kein Problem dar. +@cindex Zusammenstöße, kollidierende Notenkolumnen +@cindex Zusammenstöße, ignorieren + +@knownissues +Wenn Noten zweier oder mehrerer Stimmen mit Hälsen in die gleiche Richtung +an der selben Position auf dem System gesetzt werden und keinen Versatz +durch @code{shift} aufweisen (oder den gleichen Versatz besitzen), erscheint +die Nachricht + +@example +Warnung: zu viele kollidierende Notenspalten werden ignoriert +@end example + +@noindent +während der Kompilation. Diese Nachricht kann unterdrückt werden durch + +@example +\override NoteColumn #'ignore-collision = ##t +@end example + +Das unterdrückt jedoch nicht nur die Warnungen, sondern schaltet auch +die Auflösung von Zusammenstößen ab und kann also zu unbeabsichtigten +Resultaten führen. (Siehe auch @ref{Auflösung von Zusammenstößen}.) @node Cluster @unnumberedsubsubsec Cluster @@ -316,7 +397,7 @@ ist im Beispiel unten dargestellt: @noindent Stimmen werden hier explizit erstellt und erhalten Bezeichnungen -zugewiesen. Die @code{\voiceOne} ... @code{\voiceFour}-Befehle +zugewiesen. Die @code{\voiceOne} @dots{} @code{\voiceFour}-Befehle stellen die Stimmen so ein, dass für die erste und dritte Stimme die Hälse nach oben zeigen, für die zweite und vierte Stimme hingegen nach unten. Die Noten der dritten und vierten Stimme @@ -399,7 +480,7 @@ Diese Syntax kann benutzt werden, wenn es keine Rolle spielt, ob vorübergehend Stimmen erstellt werden und dann wieder verworfen werden. Diese implizit erstellten Stimmen erhalten die Einstellungen, die in den Befehlen -@code{\voiceOne} ... @code{\voiceFour} enthalten sind, in +@code{\voiceOne} @dots{} @code{\voiceFour} enthalten sind, in der Reihenfolge, in der sie im Quelltext auftauchen. Im nächsten Beispiel zeigen die Hälse der zeitweiligen Stimme @@ -458,6 +539,9 @@ Hälse nach oben, die graden Stimmen Hälse nach unten: >> @end lilypond +@warning{Gesangstext und Strecker (etwa Bögen, Bindebögen, Crescendoklammern +usw.) können nicht zwischen zwei Stimmen erstellt werden.} + @strong{@i{Identische Rhythmen}} Wenn parallele Abschnitte gesetzt werden sollen, @@ -753,10 +837,10 @@ Richtungen gedreht sind). @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {additional-voices-to-avoid-collisions.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {forcing-horizontal-shift-of-notes.ly} @seealso @@ -776,6 +860,18 @@ Referenz der Interna: @rinternals{NoteCollision}, @rinternals{RestCollision}. +@knownissues +Die Benutzung von @code{\override NoteColumn #'ignore-collision = ##t} +führt dazu, dass Noten mit unterschiedlichen Köpfen in unterschiedlichen +Stimmen falsch verschmolzen werden. + +@lilypond[quote,relative=1,verbatim] +\mergeDifferentlyHeadedOn +<< { c16 a' b a } \\ { c,2 } >> +\override NoteColumn #'ignore-collision = ##t +<< { c16 a' b a } \\ { c,2 } >> +@end lilypond + @ignore @knownissues @@ -798,16 +894,16 @@ are at the same time differently dotted are not clear. @funindex partcombine Automatische Kombination von Stimmen wird verwendet, um zwei -Stimmen auf einem Notensystem zu setzen. Es wird vor allem -in Orchesterpartituren eingesetzt. Wenn beide Stimmen für -einige Noten identisch sind, wird nur eine dargestellt. -An den Stellen, an denen die beiden Stimmen sich unterscheiden, -werden sie als unterschiedliche Stimmen gesetzt, und die +selbständige Stimmen auf einem Notensystem zu setzen. Es wird vor allem +in Orchesterpartituren eingesetzt. Wenn beide Stimmen +die gleichen Noten haben, wird nur eine Stimme gesetzt, wenn +sie sich unterscheiden, werden sie als unterschiedliche Stimmen +(@code{Voice}) gesetzt, und die Richtung der Hälse wird automatisch bestimmt. Zusätzlich werden @notation{solo} und @notation{a due}-Stellen erkannt und bezeichnet. -Die Syntax zur Stimmenkombination lautet: +Die Syntax zur automatischen Stimmenkombination lautet: @example \partcombine @var{musikAusdr1} @var{musikAusdr2} @@ -815,24 +911,24 @@ Die Syntax zur Stimmenkombination lautet: Das nächste Beispiel zeigt, wie die Kombination funktioniert. Hier werden die Stimmen erst auf einem jeweils eigenen System -und dann kombiniert gesetzt, beachten Sie, wie sich -die Einstellungen für Polyphonie ändern. +und dann kombiniert gesetzt. Die gleichen Variablen werden +für die Stimmen und das kombinierte System benutzt. @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 | } << @@ -842,16 +938,17 @@ instrumentTwo = \relative g' { >> @end lilypond -Die Noten des dritten Taktes werden nur einfach ausgegeben, obwohl -sie ein beiden Stimmen definiert sind. Die Richtung von Hälsen und +Beide Stimmen haben die gleichen Noten im dritten Takt, sodass +sie nur als eine Stimme gesetzt werden. Die Richtung von Hälsen und Bögen werden automatisch gewählt, abhängig davon ob es eine Solo-Stelle oder Unisono ist. In polyphonen Situationen erhält -die erste Stimme immer Hälse nach oben, die zweite Stimme +die erste Stimme (mit dem Kontext @code{one}) immer Hälse nach oben, +die zweite Stimme (mit dem Kontext @code{two}) Hälse nach unten. An Solo-Stellen werden die Stimmen mit @qq{Solo} bzw. @qq{Solo II} bezeichnet. Die Unisono-Stellen (@notation{a due}) werden mit dem Text @qq{a2} gekennzeichnet. -Beide Argumente von @code{\partcombine} werden als +Beide Argumente von @code{\partcombine} werden als eigenständige @code{Voice}-Kontexte interpretiert. Wenn relative Oktaven benutzt werden, muss @code{\relative} für beide Stimmen benutzt werden, also: @@ -863,9 +960,23 @@ benutzt werden, also: @end example @noindent -Ein @code{\relative}-Abschnitt, der sich außerhalb von@code{\partcombine} befindet, hat keinen Einfluss auf +Ein @code{\relative}-Abschnitt, der @code{\partcombine} umschließt, hat +keinen Einfluss auf die Tonhöhen von @code{@var{musikAusdr1}} oder @code{@var{musikAusdr2}}. +@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 professionellen Partituren werden Stimmen oft für lange Strecken auseinander gehalten, auch wenn eine oder mehrere Noten tatsälich aufeinander treffen und einfach als Unisono gesetzt werden könnten. Noten zu Akkorden zusammenzufassen @@ -874,46 +985,46 @@ oder eine Stimme als Solo anzuzeigen ist darum nicht ideal, weil die Grund kann die @code{\partcombine}-Funktion mit folgenden Befehlen verändert werden: +Befehle, die auf @code{@dots Once} enden, gelten nur für die nächste +Note eines musikalischen Ausdrucks. + @itemize @item -@code{\partcombineApart}, @code{\partcombineApartOnce}: -Behält die Noten als zwei unterschiedliche Stimmen, auch wenn sie als Akkord +@code{\partcombineApart} und @code{\partcombineApartOnce} +erhalten die Noten als zwei unterschiedliche Stimmen, auch wenn sie als Akkord oder Unisono kombiniert werden könnten. @item -@code{\partcombineChords}, @code{\partcombineChordsOnce}: -Kombiniert die Noten als Akkord. +@code{\partcombineChords} und @code{\partcombineChordsOnce} +kombinieren die Noten als Akkord. @item -@code{\partcombineUnisono}, @code{\partcombineUnisonoOnce}: -Die zwei Stimmen sind Unisono. +@code{\partcombineUnisono} und @code{\partcombineUnisonoOnce} +kombinieren beide Stimmen als Unisono. @item -@code{\partcombineSoloI}, @code{\partcombineSoloIOnce}: -Zeigt nur Stimme eins und markiert sie als Solo. +@code{\partcombineSoloI} und @code{\partcombineSoloIOnce} +setzen nur Stimme eins und markieren sie als @qq{Solo}. @item -@code{\partcombineSoloII}, @code{\partcombineSoloIIOnce}: -Zeigt nur Stimme zwei und markiert sie als Solo. +@code{\partcombineSoloII} und @code{\partcombineSoloIIOnce} +setzen nur Stimme zwei und markieren sie als @qq{Solo}. @item -@code{\partcombineAutomatic}, @code{\partcombineAutomaticOnce}: -Beendet die Wirkung der Sonderbefehle weiter oben und stellt das +@code{\partcombineAutomatic} und @code{\partcombineAutomaticOnce} +beenden die Wirkung der Befehle oben und stellt das normale Verhalten des Kombinationsmechanismus wieder her. @end itemize -Alle Befehle die auf @code{...Once} enden, gelten nur für die darauf -folgende 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 | @@ -933,10 +1044,10 @@ instrumentTwo = \relative c' { @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {combining-two-parts-on-the-same-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-partcombine-texts.ly} @seealso @@ -956,34 +1067,40 @@ Referenz der Interna: @knownissues -@code{\partcombine} kann nur zwei Stimmen bearbeiten. - -Wenn @code{printPartCombineTexts} (drucke Stimmenkombinationstext) -gesetzt ist und die Stimmen die gleichen Noten wiederholt -spielen, kann @code{a2} in einem Takt mehrmals gesetzt werden. - -@code{\partcombine} kann nicht innerhalb von @code{\times} benutzt -werden. - -@code{\partcombine} kann nicht innerhalb von @code{\relative} -benutzt werden. - -Intern werden beide Argumente von @code{\partcombine} als -Stimmen (@code{Voice}) interpretiert und entschieden, wann -die Stimmen kombiniert werden können. Wenn sie unterschiedliche -Dauern haben, können sie nicht kombiniert werden und erhalten -die Bezeichnung @code{one} und @code{two} Darum werden -Wechsel zu einem @code{Voice}-Kontext, der eine andere -Bezeichnung hat, ignoriert. Genausowenig ist die Stimmenkombination -dazu ausgelegt, Gesangstext zu verarbeiten: wenn eine der -Stimmen eine explizite Bezeichnung erhält, damit Text damit -verknüpft werden kann, hört die Stimmenkombination auf zu -arbeiten. - -@code{\partcombine} findet nur den Beginn von Noten. Es kann -nicht bestimmen, ob eine vorher begonnene Noten weiterklingt, -was zu verschiedenen Problemen führen kann. - +Alle @code{\partcombine...}-Funktionen können nur zwei Stimmen +aufnehmen und sind nicht für die Behandlung von Gesangstext geeignet. +Das heißt, dass die Funktion nicht funktioniert, wenn einer der +Kontexte explizit eine Bezeichnung erhält, um ihm etwa Gesangstext +zuweisen zu können. + +@code{\partcombine...}-Funktionen können nicht innerhalb von +@code{\times}- oder @code{\relative}-Umgebungen geschrieben werden. + +Wenn @code{printPartCombineTexts} definiert ist und die zwei Stimmen +die gleichen Noten abwechselnd spielen, kann es sein, dass die +Kombinationsfunktion den Text @qq{a2} mehr als einmal im gleichen +Takt setzt. + +@code{\partcombine} merkt nur, wenn eine Note in einer @code{Voice}-Umgebung +beginnt; Information, dass eine Note in einer Stimme etwa schon +begonnen hat, wenn die andere Stimme die gleiche Note spielt, +fehlt. Das kann zu einigen unerwarteten Problemen führen, wie etwa +dass @qq{Solo} bzw. @qq{Unison} falsch gesetzt werden. + +@code{\partcombine} hält alle Strecker (Haltebögen, Legatobögen, +Klammern usw.) in der gleichen @code{Voice}-Umgebung, sodass es +sein kann, dass diese Strecker nicht korrekt erscheinen, wenn sie +in einer anderen Stimme enden. + +Wenn die @code{\partcombine}-Funktion beide Noten nicht kombinieren +kann (beispielsweise weil beide Stimmen unterschiedliche Dauern haben), +werden die Stimmen intern in @code{one} und @code{two} benannt. Das +heißt, dass jeglicher Kontextwechsel zu einem @code{Voice}-Kontext +mit anderer Bezeichnung ignoriert wird. + +Lesen Sie auch den Abschnitt @emph{Bekannte Probleme und Warnungen}, +wenn Sie @code{\partcombine} in Tabulaturen benutzen +(siehe @ref{Standardtabulaturen}). @node Musik parallel notieren @unnumberedsubsubsec Musik parallel notieren diff --git a/Documentation/de/notation/spacing.itely b/Documentation/de/notation/spacing.itely index 08e6342f81..6f365309c7 100644 --- a/Documentation/de/notation/spacing.itely +++ b/Documentation/de/notation/spacing.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -168,62 +168,75 @@ Installierte Dateien: @node Das Papierformat einstellen @unnumberedsubsubsec Das Papierformat einstellen -@translationof Setting paper size +@translationof Setting the paper size -Zwei Funktionen ermöglichen es, die Papiergröße zu ändern: -@code{set-default-paper-size} und @code{set-paper-size}. -@code{set-default-paper-size} muss auf der obersten Ebene in -der Quelldatei gesetzt werden, @code{set-paper-size} hingegen -muss sich in einer @code{\paper}-Umgebung befinden: +@q{A4} ist der Standardwert, wenn keine ausdrückliches Papierformat +eingestellt ist. Es gibt jedoch zwei Funktionen, mit denen man +das Papierformat ändern kann: @code{set-default-paper-size} @example -#(set-default-paper-size "a4") +#(set-default-paper-size "quarto") @end example +@noindent +welcher immer auf oberster Ebene der Datei geschrieben werden muss, und +@code{set-paper-size} + @example \paper @{ - #(set-paper-size "a4") + #(set-paper-size "tabliod") @} @end example @noindent -Auf oberster Ebene kann @code{set-default-paper-size} überall vor der ersten -@code{\paper}-Umgebung aufgerufen werden. Innerhalb einer @code{\paper}-Umgebung -ist der beste Platz für @code{set-paper-size} gleich am Anfang, über der Liste -der Variablen-Definitionen. Der Grund dafür wird behandelt in -@ref{Automatische Skalierung auf ein Papierformat} - -@code{set-default-paper-size} bestimmt die Größe aller Seiten, während -@code{set-paper-size} nur die Seitengröße für die Seiten definiert, -auf die sich die aktuelle @code{\paper}-Umgebung bezieht. Wenn die -@code{\paper}-Umgebung gleich am Anfang der Datei steht, bezieht sich die -Papiergröße auf alle Seiten, wenn sie aber innerhalb einer -@code{\book}-Umgebung definiert wird, nur auf die Seiten innerhalb -dieses Buches. - -Die normalen Papierformate sind definiert, u.A. @code{a4}, -@code{letter}, @code{legal} und @code{11x17} (auch als -Tabloit bekannt). Sehr viel mehr Formate sind unterstützt. -Einzelheiten finden sich in der Datei -@file{scm/paper.scm} in der Definition von -@code{paper-alist}. - -@warning{Das Standardformat ist @code{a4}.} - -Weitere Papierformate können hinzugefügt werden, indem die -Definition von @code{paper-alist} in der Datei -@file{scm/paper.scm} verändert wird. Derartige -Änderungen werden jedoch bei einer Aktualisierung des -Programmes überschrieben. +welcher in eine @code{\paper}-Umgebung geschrieben werden muss. + + +Wenn die @code{set-default-paper-size}-Funktion auf oberster Ebene der +Datei eingesetzt wird, muss sie vor allen @code{\paper}-Umgebungen kommen. +@code{set-default-paper-size} definiert das Papierformat für alle Seiten, +während @code{set-paper-size} nur das Format der Seiten bestimmt, auf die +sich die @code{\paper}-Umgebung bezieht. Wenn beispielsweise die +@code{\paper}-Umgebung oben in der Datei steht, dann bezieht sie sich +auf alle Seiten in der Datei. Wenn die @code{\paper}-Umgebung innherhalb +einer @code{\book}-Umgebung steht, dann bezieht sie sich nur auf das eine +Buch. + +Wenn die @code{set-paper-size}-Funktion eingesetzt wird, muss sie @emph{vor} +allen anderen Funktionen stehen, die in derselben @code{\paper}-Umgebung +benützt werden. Siehe @ref{Automatische Skalierung auf ein Papierformat}. + +Die Papierformate finden sich in der Datei @file{scm/paper.scm} definiert. +Hierhin kann man eigene Formate definieren, sie werden jedoch bei einer +Aktualisierung von LilyPond überschrieben. Die vorhandenen Papierformate +finden sich in @ref{Vordefinierte Papierformate}. + +@c An appendix entry exists for paper sizes but is not auto-generated + +Der folgende Befehl kann benützt werden, um ein eigenes Papierformat +hinzuzufügen, welches dann mit @code{set-default-paper-size} oder +@code{set-paper-size} benützt werden kann: + +@example +#(set! paper-alist (cons '("mein Format" . (cons (* 15 in) (* 3 in))) paper-alist)) + +\paper @{ + #(set-paper-size "mein Format") +@} +@end example + +Die Einheiten @code{in} (Fuß), @code{cm} (Centimeter) and @code{mm} (Millimeter) +können benützt werden. @cindex Ausrichtung, Papier @cindex Papier, Ausrichtung @cindex hochkant, Papier @cindex quer, Papier +@cindex Papier, quer @funindex landscape -Wenn das Symbol @code{'landscape} als Argument an die Funktion +Wenn das Symbol @code{'landscape} an die Funktion @code{set-default-paper-size} gehängt wird, werden die Seiten um 90° gedreht und die Notensysteme entsprechend breiter gesetzt. @@ -231,15 +244,17 @@ Wenn das Symbol @code{'landscape} als Argument an die Funktion #(set-default-paper-size "a6" 'landscape) @end example +Die Notenausgabe wird @emph{nicht} gedreht, nur das Papierformat. + @seealso Notationsreferenz: -@ref{Automatische Skalierung auf ein Papierformat}. +@ref{Automatische Skalierung auf ein Papierformat}, +@ref{Vordefinierte Papierformate}. Installierte Dateien: @file{scm/paper.scm}. - @node Automatische Skalierung auf ein Papierformat @unnumberedsubsubsec Automatische Skalierung auf ein Papierformat @translationof Automatic scaling to paper size @@ -327,7 +342,7 @@ ein bis zwei Notensystemgruppen pro Seite haben, etwa Orchesterpartituren. Wenn auf falsch gesetzt, werden die Systeme vertikal auf der letzten Seite verteilt. Bei Stücken, die grob zwei oder mehr Seiten füllen, sollten es auf -wahr gesetzt werden. Hiermit wird auch die letzte Seite von Teilen eines +falsch (@code{false}) gesetzt werden. Hiermit wird auch die letzte Seite von Teilen eines @code{\book}, die mit @code{\bookpart} erstellt sind, beeinflusst. @end table @@ -349,6 +364,9 @@ behandelt, sodass @code{ragged-bottom} und @code{ragged-last-bottom} auch zusätzlichen Abstand zwischen den Titel und dem ersten System einer Paritur einfügt. +Explizit definierte Papierformate überschreiben alle vom Benutzer erstellte +Randeinstellung für die Ränder oben und unten. + @node Vertikale \paper-Variablen mit flexiblen Abständen @unnumberedsubsubsec Vertikale @code{\paper}-Variablen mit flexiblen Abständen @@ -373,7 +391,7 @@ werden, und nicht innerhalb der @code{\paper}-Umgebung. Siehe auch @menu * Struktur der Alisten für flexible vertikale Abstände:: -* Liste der flexiblen vertikalen Abstandsvariblen in \paper:: +* Liste der flexiblen vertikalen Abstandsvariablen in \paper:: @end menu @@ -448,6 +466,10 @@ zu vermeiden. @end itemize +Bei Partituren über mehrere Seiten mit nicht ausgeglichenem unteren Rand +greift die letzte Seite auf die gleiche Positionierung zurück wie die +vorhergehende Seite, vorausgesetzt, dafür ist genügend Platz vorhanden. + Spezifische Methoden, um Alisten zu verändern, werden behandelt in @ref{Alisten verändern}. Das folgende Beispiel demonstriert beide Arten, wie diese Alisten verändert werden können. Der erste Aufruf verändert @@ -466,8 +488,8 @@ vollständig neu definiert: @end example -@node Liste der flexiblen vertikalen Abstandsvariblen in \paper -@unnumberedsubsubsec Liste der flexiblen vertikalen Abstandsvariblen in @code{\paper} +@node Liste der flexiblen vertikalen Abstandsvariablen in \paper +@unnumberedsubsubsec Liste der flexiblen vertikalen Abstandsvariablen in @code{\paper} @translationof List of flexible vertical spacing \paper variables Die Bezeichnungen dieser Variablen entsprechen dem Format @@ -665,6 +687,10 @@ Notationsreferenz: Installierte Dateien: @file{ly/paper-defaults-init.ly}. +@knownissues +Explizit definierte Papierformate überschreiben alle vom Benutzer erstellte +Randeinstellung für die Ränder oben und unten. + @node \paper-Variablen für zweiseitigen Satz @unnumberedsubsubsec @code{\paper}-Variablen für zweiseitigen Satz @@ -952,7 +978,7 @@ auf der rechten Seite mit Seite 1 beginnen. Die relative Gewichtung von (vertikalem) Abstand auf der Seite und (horizontalem) Abstand innerhalb der Zeilen. Hohe Werte gewichten -die vertikalen Abstände mehr. Standard: @code{#10}. +die vertikalen Abstände mehr. Standard: @code{10}. @item print-all-headers @funindex print-all-headers @@ -960,7 +986,7 @@ die vertikalen Abstände mehr. Standard: @code{#10}. Wenn wahr, werden alle Einträge des Titelfeldes (@code{\header}-Umgebung) für jede Partitur (@code{\score}) ausgegeben. Normalerweise wird nur die Satzbezeichnung und die Opuszahl (@code{piece} und @code{opus}) -ausgegeben. Standard: @code{##f}. +ausgegeben. Standard: @code{#f}. @item system-separator-markup @funindex system-separator-markup @@ -1017,7 +1043,7 @@ Zeile. @node Die \layout-Umgebung -@subsection Die @code{ayout}-Umgebung +@subsection Die @code{\layout}-Umgebung @translationof The \layout block @cindex Partitur, Layout @@ -1385,7 +1411,7 @@ zwischen Partituren und Textbeschriftungen. Es gibt auch vertikale Gegenstücke zu den Variablen @code{ragged-right} und @code{ragged-last}: @code{ragged-bottom} und @code{ragged-last-bottom}. Wenn diese -Variablen auf @code{##t} (wahr) gesetzt werden, werden im ersten +Variablen auf @code{#t} (wahr) gesetzt werden, werden im ersten Fall die Notensysteme auf allen Seiten eng nach oben orientiert gesetzt werden. Im zweiten Fall bezieht sich dies nur auf die letzte Seite. @@ -1512,7 +1538,7 @@ Doppelstrich), wird der Befehl nach diesem Taktstrich gesetzt. Der @code{Page_turn_engraver} liest die Kontexteigenschaft @code{minimumPageTurnLength} um zu erkennen, wie lang eine Stelle frei von Noten sein muss, damit ein Seitenumbruch in Frage kommt. Der -Standardwert hierfür ist @code{#(ly:make-moment 1 1)}. Wenn Sie +Standardwert hierfür ist @code{(ly:make-moment 1 1)}. Wenn Sie Seitenumbrüche zum Umblättern ausschalten wollen, können Sie einen sehr großen Wert angeben. @@ -1759,7 +1785,7 @@ innerhalb von Gruppen gesetzt wird. @menu * Flexible vertikale Abstände in Systemgruppen:: -* Explizite Positionierung von Systemen und Systemgruppen:: +* Explizite Positionierung von Systemen:: * Vermeidung von vertikalen Zusammenstößen:: @end menu @@ -1845,7 +1871,7 @@ Abstände eingestellt werden sollen. Dabei ist allerdings zu beachten, dass @code{@var{Element1}} befindet; beispielsweise @code{nonstaff-relatedstaff-spacing} (Nicht-Notensystem-verwandtesNotensystem) misst von dem Nicht-Notensystem nach oben, wenn @code{staff-affinity} -(Richtung, an der sich ein System ausrichtet) auf @code{#UP} (nach oben) +(Richtung, an der sich ein System ausrichtet) auf @code{UP} (nach oben) eingestellt ist. Jeder Abstand wird zwischen den @emph{Referenzpunkten} der zwei Objekten @@ -1885,14 +1911,16 @@ labelContext = #(define-music-function (parser location context) (string?) - #{ s1*0^\markup { \typewriter $context } #}) + #{ s1*0^\markup { \typewriter #context } #}) \layout { \context { \Dynamics \alignToZero } \context { \FiguredBass \alignToZero } \context { \Lyrics \alignToZero } - \context { \NoteNames \alignToZero } - \context { \ChordNames \alignToZero \lowerCaseChords } + \context { \NoteNames \alignToZero \staffAffinityDown } + \context { \ChordNames \alignToZero + \staffAffinityDown + \lowerCaseChords } \context { \FretBoards \alignToZero \staffAffinityDown } \context { \Score \override BarLine #'stencil = ##f @@ -1913,8 +1941,8 @@ labelContext = \new RhythmicStaff { \set RhythmicStaff.instrumentName = #"baseline " \textLengthOn - \labelContext "ChordNames" s1 | - \labelContext "NoteNames" s1 | + \labelContext "ChordNames " s1 | + \labelContext "NoteNames " s1 | \labelContext "Lyrics" s1 | } \new Lyrics { \lyrics { \skip 1*2 | ghijk1 | } } @@ -1926,7 +1954,7 @@ labelContext = \set RhythmicStaff.instrumentName = #"vertical center " \labelContext "Dynamics" s1*3 } - \new Dynamics { s2\mp s\fp } + \new Dynamics { s1\mp s\fp } >> %% The reference point for FiguredBass is its highest point @@ -2051,7 +2079,6 @@ Notensystem behandelt. Wird @code{staff-affinity} auf @code{UP}, @code{CENTER} oder @code{DOWN} gesetzt, wird das Notensystem als Nicht-Notensystemzeile plaziert. - @item nonstaff-relatedstaff-spacing Nicht-Notensystem-verwandtesSystem-Platzierung @@ -2123,15 +2150,15 @@ Notationsreferenz: @ref{Vertikale \paper-Variablen mit flexiblen Abständen}, @ref{Alisten verändern}. +Installierte Dateien: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm}. + Referenz der Interna: @rinternals{Contexts}, @rinternals{VerticalAxisGroup}, @rinternals{StaffGrouper}. -Installierte Dateien: -@file{ly/engraver-init.ly}, -@file{scm/define-grobs.scm}. - @node Abstände von nicht gruppierten Notensystemen @unnumberedsubsubsec Abstände von nicht gruppierten Notensystemen @@ -2765,7 +2792,7 @@ Weise bestimmt: in jedem Takt wird die kürzeste Note bestimmt. Die häufigste kürzeste Note wird dann als Grundlage für die Platzverteilung der Noten herangezogen, mit der Bedingung, dass diese kürzeste Note immer ein Achtel oder kürzer sein soll. Die kürzeste Dauer -wird ausgegeben, wenn @code{lilypond} mit der Option @code{--verbose} +wird ausgegeben, wenn @code{lilypond} mit der Option @option{--verbose} aufgerufen wird. Diese Dauern können aber auch angepasst werden. Wenn Sie die Eigenschaft @@ -2815,6 +2842,9 @@ besser sieht: Proportionale Notation ist unterstützt, siehe @ref{Proportionale Notation}. @seealso +Aufsatz über den automatischen Notensatz: +@ressay{Optischer Ausgleich}. + Schnipsel: @rlsr{Spacing}. @@ -2824,9 +2854,6 @@ Referenz der Interna: @rinternals{StaffSpacing}, @rinternals{NonMusicalPaperColumn}. -Aufsatz über den automatischen Notensatz: -@ressay{Optischer Ausgleich}. - @knownissues Es gibt keine sinnvolle Möglichkeit, die horizontale Verteilung der @@ -2835,7 +2862,7 @@ dehnbare Abstände (padding) eingesetzt werden, kann benutzt werden, um zusätzlichen Platz in eine Partitur einzufügen. @example - \once \override Score.SeparationItem #'padding = #10 + \override Score.NonMusicalPaperColumn #'padding = #10 @end example Es gibt derzeit keine Möglichkeit, den Platz zu verringern. @@ -3138,10 +3165,10 @@ Die Eigenschaft @code{proportionalNotationDuration} braucht ein Argument, welches die Referenzdauer ist, anhand welcher alle Noten platziert werden. Hier wird die LilyPond Scheme-Funktion @code{make-moment} eingesetzt. Sie braucht zwei Argumente: einen Zähler und einen Nenner, die einen Bruch einer -Ganzen darstellen. Die Funktion @code{#(ly:make-moment 1 20)} ergibt also +Ganzen darstellen. Die Funktion @code{(ly:make-moment 1 20)} ergibt also eine Referenzdauer von einer Zwanzigstel. Genauso gut können etwa die Dauern -@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)} oder -@code{#(ly:make-moment 3 97)} eingesetzt werden. +@code{(ly:make-moment 1 16)}, @code{(ly:make-moment 1 8)} oder +@code{(ly:make-moment 3 97)} eingesetzt werden. Die richtige Referenzdauer, mit der eine vernünftige Verteilung der Noten proportional möglich ist, muss durch Ausprobieren herausgefunden werden. @@ -3524,7 +3551,7 @@ Schnipsel: Die Ausgabe von @code{annotate-spacing} bietet sehr viele Details zu den vertikalen Dimensionen einer Partitur. Zu Information, wie Seitenränder und andere Layout-Variablen geändert werden -können, siehe @ref{Seitenformatierung}. +können, siehe @ref{Seitenlayout}. Neben Rändern gibt es einige weitere Optionen, Platz zu sparen: @@ -3561,6 +3588,16 @@ nur 10 Systemen erzwingen. @} @end example +@item +Die Anzahl der Seiten kann erzwungen werden. Beispielsweise erzwingt +folgender Code ein Layout mit zwei Seiten: + +@example +\paper @{ + page-count = #2 +@} +@end example + @item Vermeidung (oder Verminderung) von Objekten, die den vertikalen Abstand von Systemen vergrößern, hilft oft. Die Verwendung von Klammern bei Wiederholungen @@ -3631,7 +3668,7 @@ auf eine ganze @code{\score}-Umgebung aus. @seealso Notationsreferenz: -@ref{Seitenformatierung}, +@ref{Seitenlayout}, @ref{Horizontale Abstände verändern}. Schnipsel: diff --git a/Documentation/de/notation/specialist.itely b/Documentation/de/notation/specialist.itely index 5e4fc84f7b..b198d1a835 100644 --- a/Documentation/de/notation/specialist.itely +++ b/Documentation/de/notation/specialist.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @c Translators: Till Paala diff --git a/Documentation/de/notation/staff.itely b/Documentation/de/notation/staff.itely index ac9914185e..3ac87fae00 100644 --- a/Documentation/de/notation/staff.itely +++ b/Documentation/de/notation/staff.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 27b1197f3bae8512c14d946752cd3e40e7c76016 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -250,10 +250,10 @@ Neue Systemgruppen können definiert werden. Zu Einzelheiten siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @cindex Mensurstriche @@ -261,7 +261,7 @@ Neue Systemgruppen können definiert werden. Zu Einzelheiten siehe @cindex Transkription von Mensuralmusik @cindex Mensuralmusik, Transkription -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} @@ -334,7 +334,7 @@ Neue geschachtelte Systemgruppen können definiert werden. Zu Einzelheiten sieh @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} @@ -434,8 +434,8 @@ beenden sowie eine Methode, Ossia-Systeme zu erstellen. @cindex Notenlinien, Anzahl @cindex Notenlinien, Dicke @cindex Notenlinien, Einstellungen -@cindex Staff symbol, Erstellen -@cindex Notenlinien, Erstellen +@cindex Staff symbol, erstellen +@cindex Notenlinien, erstellen @cindex Dicke der Notenlinien einstellen @cindex Anzahl der Notenlinien einstellen @cindex Zahl der Notenlinien einstellen @@ -447,118 +447,139 @@ beenden sowie eine Methode, Ossia-Systeme zu erstellen. @cindex Notensystem beginnen @cindex Beginnen eines Notensystems @cindex Beenden eines Notensystems +@cindex Notenlinien, beginnen +@cindex Notenlinien, beenden +@cindex Beenden von Notenlinien +@cindex Beginnen von Notenlinien +@cindex Beenden eines Systems +@cindex System, beenden +@cindex Notensystem, beenden + + +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff + +Die Befehle @code{\stopStaff} und @code{\startStaff} können +benutzt werden, um ein Notensystem zu stoppen oder (wieder) +zu beginnen. + +@lilypond[verbatim,quote,relative=2] +\stopStaff f4 d \startStaff g, e +f'4 d \stopStaff g, e +f'4 d \startStaff g, e +@end lilypond + +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined Die Linien eines Notensystems gehören zu dem -@code{StaffSymbol}-(NotensystemSymbol)-Grob. +@code{StaffSymbol}-(NotensystemSymbol)-Grob (hierzu gehören auch +Hilfslinien). @code{StaffSymbol}-Eigenschaften können verändert werden, um die Erscheinung des Notensystems zu beeinflussen, aber sie müssen gesetzt werden, bevor das System erstellt wird. -Die Anzahl der Notenlinien kann verändert werden. Die Position -des Notenschlüssels und die Position von c' können geändert werden, -um dem neuen System zu entsprechen. Eine Erklärung findet sich -im Schnipselabschnit in -@ref{Notenschlüssel}. +Die Anzahl der Notenlinien kann verändert werden: @lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } +f4 d \stopStaff +\override Staff.StaffSymbol #'line-count = #2 +\startStaff g, e | + +f'4 d \stopStaff +\revert Staff.StaffSymbol #'line-count +\startStaff g, e | +@end lilypond + + +Auch die Position der Notenlinien kann geändert werden. Die +Werte werden in @emph{halben} Notensystemabständen eingegeben +und die neue Position ist relativ zur ursprünglichen Mittellinie. +Eine einzelne Linie wird für jeden Wert ausgegeben, sodass +die Anzahl der Linien sowie ihre Position im Notensystem mit +einem Befehl geändert werden können. + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(1 3 5 -1 -3) +\startStaff g, e | +f'4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(8 6.5 -6 -8 -0.5) +\startStaff g, e @end lilypond +die Position des Notenschlüssels und die Position von c' können geändert +werden, um dem neuen System zu entsprechen. Siehe auch +@ref{Notenschlüssel}. + Die Liniendicke der Notenlinien kann verändert werden. Die Dicke der Hilfslinien und Notenhälse wird auch beeinflusst, weil sie von der Notenliniendicke abhängen. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { \override StaffSymbol #'thickness = #3 } -{ e4 d c b } +{ f4 d g, e } @end lilypond -Die Dicke der Hilfslinien kann auch unabhängig von der -Notenliniendicke verändert werden. Die zwei Zahlen in dem Beispiel +Die Dicke der Hilfslinien (engl. ledger lines) kann allerdings auch unabhängig von der +Notenliniendicke verändert werden. Die zwei Zahlen, die nötig sind, sind Faktoren, mit denen die Notenlinien-Dicke und der Notenlinienabstand multipliziert werden. Die Addition beider Werte ergibt die Dicke der Hilfslinien. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol #'thickness = #2 + \override StaffSymbol #'ledger-line-thickness = #'(0.5 . 0.4) } -{ e4 d c b } +{ f'4 a, a,, f } @end lilypond -Der Abstand zwischen Notenlinien kann verändert werden. Diese -Einstellung wirkt sich auch auf den Abstand der Hilfslinien aus. +Die vertikale Position der Hilfslinien kann verändert werden: -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol #'ledger-positions = #'(-3 -2 -1 2 5 6) } -{ a4 b c d } +{ f'4 a, a,, f } @end lilypond -Weitere Einzelheiten zu den Eigenschaften von @code{StaffSymbol} -findet sich in @rinternals{staff-symbol-interface}. - -@cindex Notenlinien, beginnen -@cindex Notenlinien, beenden -@cindex Beenden von Notenlinien -@cindex Beginnen von Notenlinien -@cindex Beenden eines Systems -@cindex System, beenden -@cindex Notensystem, beenden - -@funindex \startStaff -@funindex \stopStaff -@funindex startStaff -@funindex stopStaff - -Veränderungen der Eigenschaften eines Notensystems mitten in einer -Partitur können zwischen die Befehle @code{\stopStaff} und -@code{\startStaff} gesetzt werden: +Zusätzliche Hilfslinien können auch innerhalb des Systems gesetzt +werden, wenn sie von einem selbsdefinierten Notensystem genötigt +werden. Das Beispiel zeigt die Standardposition der Hilfslinien +wenn die explizite Position mit @code{legder-position} nicht +definiert ist. Der Befehl @code{stopStaff} wird benötigt, damit +der Befehl sich auf das gesamte System (@code{StaffSymbol}) auswirkt. -@lilypond[verbatim,quote,relative=2] -c2 c +@lilypond[fragment,quote,relative=1] +\override Staff.StaffSymbol #'line-positions = #'(-8 0 2 4) +d4 e f g \stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count \startStaff -a2 a +\override Staff.StaffSymbol #'ledger-positions = #'(-8 -6 (-4 -2) 0) +d4 e f g @end lilypond -@noindent -Die Befehle @code{\startStaff} und @code{\stopStaff} können -benutzt werden, um ein Notensystem irgendwo zu beenden oder zu -beginnen. +Der Abstand zwischen Notenlinien kann verändert werden. Diese +Einstellung wirkt sich auch auf den Abstand der Hilfslinien aus. @lilypond[verbatim,quote,relative=2] -c4 b a2 -\stopStaff -b4 c d2 -\startStaff -e4 d c2 +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 +} +{ f'4 d, g, e, } @end lilypond - -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined - - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Glossar: @rglos{line}, @@ -576,7 +597,6 @@ Referenz der Interna: @rinternals{staff-symbol-interface}. - @node Ossia-Systeme @unnumberedsubsubsec Ossia-Systeme @translationof Ossia staves @@ -722,7 +742,7 @@ Mehr Information zu @code{\Staff \RemoveEmptyStaves} findet sich in @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} @@ -817,7 +837,6 @@ um Ossiaabschnitte zu erstellen. Zu Einzelheiten, siehe @cindex Verstecken von Systemen der Alten Musik @cindex Verstecken von Rhythmus-Systemen - @funindex \RemoveEmptyStaves @funindex RemoveEmptyStaves @@ -828,20 +847,16 @@ zu entfernen. Gleichermaßen kann leere Takte in einem @code{RhythmicStaff}-Kontext zu entfernen. - @predefined @code{\Staff \RemoveEmptyStaves}, @code{\VaticanaStaff \RemoveEmptyStaves}, @code{\RhythmicStaff \RemoveEmptyStaves}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso Glossar: @rglos{Frenched staff}. @@ -867,9 +882,7 @@ Referenz der Interna: @rinternals{VerticalAxisGroup}, @rinternals{Staff_symbol_engraver}. - @knownissues - Wenn man den @code{Staff_symbol_engraver} entfernt, werden auch die Taktlinien entfernt. Wenn eine sichtbare Taktlinie angefordert wird, kann es zu Formatierungsfehlern kommen. In @@ -896,7 +909,7 @@ formatieren. @menu * Instrumentenbezeichnungen:: -* Stichnoten:: +* Andere Stimmen zitieren:: * Stichnoten formatieren:: @end menu @@ -916,24 +929,30 @@ System eingesetzt, der Wert von @code{shortInstrumentName} für alle weiteren Systeme. @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"Violin " -\set Staff.shortInstrumentName = #"Vln " -c4.. g'16 c4.. g'16 -\break -c1 +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} +{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond -Mit dem Textbeschriftungsmodus können auch komplizierte +@cindex Instrumentenbezeichnung, komplexe + +Mit dem Textbeschriftungsmodus (@code{\markup}) können auch komplizierte Instrumentenbezeichnungen erstellt werden: @lilypond[verbatim,quote,relative=2] -\set Staff.instrumentName = \markup { - \column { "Clarinetti" - \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} +{ c4 c,16 d e f g2 } @end lilypond -@cindex Instrumentenbezeichnung, Notation +@cindex Instrumentenbezeichnung, zentriert Wenn zwei oder mehr Systeme gruppiert werden, werden die Instrumentenbezeichnungen automatisch zentriert. Um auch @@ -942,17 +961,17 @@ mehrzeilige Instrumentenbezeichnungen zentriert zu setzen, muss @lilypond[verbatim,quote,indent=1.5\cm,relative=2] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f + \new Staff \with { + instrumentName = #"Flute" } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet + { f2 g4 f } + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" } \line { "in B" \smaller \flat } } - c4 b c2 } + { c4 b c2 } >> @end lilypond @@ -968,25 +987,31 @@ Einzugs (@code{indent} und @code{short-indent}) vergrößert werden. Zu Einzelheiten siehe @ref{\paper-Variablen für Verschiebungen und Einrückungen}. @lilypond[verbatim,quote,ragged-right] +\relative c'' { + << + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } + { + f2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } + { + c,4 b c2 \break + c2 b4 c + } + >> +} + \layout { indent = 3.0\cm short-indent = 1.5\cm } - -\relative c'' << - \new Staff { - \set Staff.instrumentName = #"Alto Flute in G" - \set Staff.shortInstrumentName = #"Fl." - f2 g4 f \break - g4 f g2 - } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break - c2 b4 c - } ->> @end lilypond @cindex Instrumentenbezeichnungen zu anderen Kontexten hinzufügen @@ -1001,20 +1026,24 @@ siehe @ref{Umgebungs-Plugins verändern}. @cindex Instrumentenbezeichnungen, wechseln @cindex Wechseln von Instrumentenbezeichnungen -Instrumentenbezeichnungen können mitten in einer Partitur -geändert werden. Dabei muss jedoch beachtet werden, dass -@code{instrumentName} nicht mitten im Stück angezeigt wird, -denn es wird nur für das erste Notensystem ausgegeben: +Die kurzen Instrumentenbezeichnungen können mitten in einer Partitur +geändert werden. Die Lange Bezeichnung +@code{instrumentName} wird nur bei ihrem ersten Auftreten gesetzt +und spätere Änderungen nicht berücksichtigt. @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"First" -\set Staff.shortInstrumentName = #"one" -c1 c c c \break -c1 c c c \break -\set Staff.instrumentName = #"Second" -\set Staff.shortInstrumentName = #"two" -c1 c c c \break -c1 c c c \break +\new Staff \with { + instrumentName = #"Flute" + shortInstrumentName = #"Flt." +} +{ + c1 c c c \break + c1 c c c \break + \set Staff.instrumentName = #"Clarinet" + \set Staff.shortInstrumentName = #"Clt." + c1 c c c \break + c1 c c c \break +} @end lilypond @cindex Instrumentenwechsel @@ -1075,13 +1104,13 @@ Referenz der Interna: @rinternals{Staff}. -@node Stichnoten -@unnumberedsubsubsec Stichnoten +@node Andere Stimmen zitieren +@unnumberedsubsubsec Andere Stimmen zitieren @translationof Quoting other voices @cindex Stichnoten @cindex Zitieren von anderen Stimmen -@cindex Fragmente +@cindex Fragmente, zitieren @cindex Stimmen, zitieren @funindex \addQuote @@ -1093,151 +1122,155 @@ Referenz der Interna: Es kommt sehr oft vor, dass eine Orchesterstimme die gleichen Noten wie eine andere spielt. So können etwa die ersten und -zweiten Geigen für eine Passage die gleichen Noten haben. In +zweiten Geigen für eine bestimmte Passage die gleichen Noten haben. In LilyPond kann man das erreichen, indem eine Stimme von der -anderen @emph{zitiert}, sodass man die Noten nicht noch einmal -eingeben muss. - -Bevor eine Stimme zitiert werden kann, muss der -@code{\addQuote}-Befehl benutzt werden, um das zitierbare -Fragment zu kennzeichnen. Dieser Befehl muss auf der höchsten -Ebene der Eingabedatei benutzt werden. Das erste Argument -dient zur Identifikation, das zweite ein musikalischer Ausdruck: +anderen @emph{zitiert}, sodass man die Noten für die zweite Stimme +nicht noch einmal eingeben muss. -@example -flute = \relative c'' @{ - a4 gis g gis -@} -\addQuote "flute" @{ \flute @} -@end example +Der @code{\addQuote}-Befehl, auf höchster Ebene in der Datei, definiert +einen Notenabschnitt, aus dem zitiert werden kann. Der @code{\quoteDuring}-Befehl wird benutzt, um den Punkt anzuzeigen, an dem das Zitat beginnt. Er benötigt zwei Argumente: die Bezeichnung der zitierten Stimme, wie vorher mit -@code{\addQuote} definiert, und einen musikalischen Ausdruck, -der Angibt, wie lange das Zitat dauern soll; normalerweise -Ganztaktpausen oder unsichtbare Noten. Die entsprechenden -Noten der zitierten Stimme (inklusive aller Artikulationszeichen, -Dynamik, Beschriftung usw.) wird an der Stelle in die aktuelle -Stimme eingefügt: +@code{\addQuote} definiert, und einen musikalischen Ausdruck +für die Dauer des Zitates. @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 Wenn der musikalische Ausdruck, der mit dem -@code{\quoteDuring}-Befehl benutzt wird, etwas anderes -als unsichtbare Noten oder Ganztaktpausen enthält, wird eine +@code{\quoteDuring}-Befehl benutzt wird, antelle von +unsichtbare Noten oder Ganztaktpausen etwa Noten enthält, wird eine polyphone Stelle begonnen, was meistens nicht erwünscht ist: @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 } } -@end lilypond -Zitate erkennen die Einstellungen von transponierten Instrumenten -sowohl der Quell- als auch der Zielstimme, wenn der -@code{\transposition}-Befehl eingesetzt wird. Zu Einzelheiten -über @code{\transposition} siehe -@ref{Transposition von Instrumenten}. +\addQuote "flute" { \fluteNotes } -@lilypond[verbatim,quote] -clarinet = \relative c'' { - \transposition bes - a4 gis g gis -} -\addQuote "clarinet" { \clarinet } - -\relative c' { - c4 cis \quoteDuring #"clarinet" { s2 } +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -Es ist möglich, Zitate mit eindeutigen Bezeichnungen zu versehen -(unter Benutzung von @emph{tags}), um sie auf unterschiedliche -Weise zu verarbeiten. Einzelheiten zu diesem Vorgehen werden -vorgestellt in -@ref{Marken benutzen}. - -Es ist auch möglich, welche Objekte der originalen Stimme zitiert -werden sollen, indem man die @code{quotedEventTypes}-Eigenschaft -verändert. Standardmäßig ist ihr Wert @code{#'(StreamEvent)}, -was bedeutet, dass alles zitiert wird. Wenn man sie beispielsweise -auf den Wert @code{#'(note-event rest-event tie-event)} setzt, werden -nur Noten, Pausen und Bindebögen zitiert, jedoch keine Artikulationszeichen, -Dynamik oder Beschriftung. +Der @code{\quoteDuring}-Befehl benützt die Einstellungen des +@code{\transposition}-Befehls beider Stimmen, um Noten für die +zitierende Stimme zu produzieren, die das gleiche klingende C +wie die zitierte Stimme haben. @lilypond[verbatim,quote] -clarinet = \relative c'' { - a4 gis g->\f gis^\markup{quoted} +clarinetNotes = \relative c'' { + \transposition bes + \key d \major + b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } -\addQuote "clarinet" { \clarinet } -\relative c' { - \set Score.quotedEventTypes = #'(note-event rest-event tie-event) - c4 cis \quoteDuring #"clarinet" { s2 } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"clarinet" { s1 } } -@end lilypond -@snippets +\addQuote "clarinet" { \clarinetNotes } -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice-with-transposition.ly} +\score { + << + \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> +} +@end lilypond @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} +Standardmäßig werden mit den zitierten Noten auch alle Artikulationen, +Dynamik, Beschriftungen usw. übernommen. Es ist aber möglich +auszuwählen, welche Objekte der zitierten Noten dargestllt werden. +Das geschieht mit der @code{quotedEventTypes}-Kontexteigenschaft. +@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 + +Zitate können auch mit Marken (engl. tag) versehen werden. Siehe auch +@ref{Marken benutzen}. @seealso Notationsreferenz: @ref{Transposition von Instrumenten}, @ref{Marken benutzen}. +Installierte Dateien: +@file{scm/define-event-classes.scm}. + Schnipsel: @rlsr{Staff notation}. Referenz der Interna: +@rinternals{Music classes}, @rinternals{QuoteMusic}, @rinternals{Voice}. - @knownissues - Nur der Inhalt der ersten Stimme innerhalb eines -@code{\addQuote}-Befehls wird für das Zitat herangezogen, die -Variable @var{Noten} kann also keine @code{\new} oder @code{\context Voice}-Einheiten enthalten, die zu einer anderen -Stimme wechseln würden. - -Ziernoten und Vorschläge können nicht zitiert werden und können -sogar dazu führen, dass LilyPond abstürzt. - -Wenn geschachtelte Triolen zitiert werden, ist das Notenbild -unter Umständen sehr schlecht. - -In früheren LilyPond-Versionen (vor 2.11) wurde der Befehl -@code{addQuote} vollständig in Kleinbuchstaben geschrieben: -@code{\addquote}. +@code{\addQuote}-Befehls wird für das Zitat herangezogen. Wenn +der zitierte Ausdruck also @code{\new} oder @code{\context Voice}-Befehle +enthält, werden deren Inhalte nicht zitiert. Zitieren von Ziernoten +und Vorschläge wird von LilyPond nicht unterstützt und kann +dazu führen, dass LilyPond abstürzt. Wenn geschachtelte Triolen zitiert +werden, ist das Notenbild unter Umständen sehr schlecht. @node Stichnoten formatieren @@ -1247,66 +1280,131 @@ In früheren LilyPond-Versionen (vor 2.11) wurde der Befehl @cindex Stichnoten @cindex Noten, Stichnoten @cindex Stichnoten, Formatierung -@cindex Fragmente +@cindex Fragmente, zitieren @cindex andere Stimmen zitieren @cindex Zitieren von anderen Stimmen @funindex \cueDuring @funindex cueDuring +@funindex \cueClef +@funindex cueClef +@funindex \cueDuringWithClef +@funindex cueDuringWithClef @funindex \quoteDuring @funindex quoteDuring -Der vorige Abschnitt zeigt, wie man Zitate erstellt. Der -@code{\cueDuring}-Befehl (engl. cue note = Stichnote) -ist eine spezialisierte Form des -@code{\quoteDuring}-Befehls, der insbesondere dazu dient, -Stichnoten zu einer Stimme hinzuzufügen. Seine Syntax lautet: +@cindex Noten, kleiner +@cindex kleinere Noten +@funindex CueVoice + +Die einfachste Art, Stichnoten zu erstellen, ist es, einen +@code{CueVoice}-Kontext in der Stimme zu erstellen. + +@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 + +Der Befehl @code{\cueClef} kann auch in einem expliziten +@code{CueVoice}-Kontext eingesetzt werden, wenn ein Schlüsselwechsel +nötig ist. Hiermit wird ein Schlüssel entsprechender Größe für die +Stichnoten ausgegeben. Der Befehl @code{\cueClefUnset} kann dann +eingesetzt werden, um wieder zum ursprünglichen Schlüssel zurückzukehren, +wiederum in der richtigen Größe: + +@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 + +Die Befehle @code{\cueClef} und @code{\cueClefUnset} können auch ohne +eine @code{CueVoice}-Umgebung eingesetzt werden: + +@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 + +Für kompliziertere Stichnotenbehandlung, etwa mit Transposition, +oder um Stichnoten aus unterschiedlichen Stimmen einzufügen, +können die Befehle @code{\cueDuring} oder @code{\cueDuringWithClef} +eingesetzt werden. Sie stellen eine spezielle Form von @code{\quoteDuring} +dar, siehe auch @ref{Andere Stimmen zitieren}. + +Die Syntax lautet: + +@example +\cueDuring #@var{Zitatbezeichnung} #@var{Richtung} @var{Noten} +@end example + +sowie @example -\cueDuring #@var{Stimmenbezeichnung} #@var{Stimme} @var{Noten} +\cueDuringWithClef #@var{Zitatbezeichnung} #@var{Richtung} #@var{Schlüssel} #@var{Noten} @end example -Dieser Befehl kopiert nur die Noten und Pausen der entsprechenden Takte von -@var{Stimmenbezeichnung} in einen @code{CueVoice}-Kontext. Eine -@code{CueVoice} (Stichnoten-Stimme) wird implizit erstellt -und erscheint simultan mit @var{Noten}, wobei folglich eine -polyphone Situation entsteht. Das @var{Stimme}-Argument entscheidet, -ob die Stichnoten als eine erste oder zweite Stimme -eingefügt werden sollen; @code{UP} entspricht der ersten Stimme, -@code{DOWN} der zweiten. +Die Noten der entprechenden Takten von @code{@var{Zitatbezeichnung}} wird +dem @code{CueVoice}-Kontext hinzugefügt und erscheint gleichzeitig mit +@code{@var{Noten}}, wodurch eine polyphone Situation entsteht. Die +@code{@var{Richtung}} kann entweder @code{UP} oder @code{DOWN} sein, +womit die zitierten Noten entweder als erste oder als zweite Stimme +in einem System gesetzt werden. @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, } -@end lilypond -@noindent -In diesem Beispiel muss der @code{Voice}-Kontext explizit -begonnen werden, damit nicht der gesamte musikalische Ausdruck -als Stichnoten-Stimme formatiert wird. +\addQuote "flute" { \fluteNotes } + +\new Staff { + \oboeNotes +} +@end lilypond Es ist möglich anzupassen, welche Objekte der Notation von @code{\cueDuring} zitiert werden, indem man die @code{quotedCueEventTypes}-Eigenschaft verändert. Ihr -Standardwert ist @code{#'(note-event rest-event tie-event beam-event +Standardwert ist @code{'(note-event rest-event tie-event beam-event +tuplet-span-event)}; somit werden also nur Noten, Pausen, Bindebögen, Balken und N-tolen zitiert, nicht aber Artikulationen, Dynamik, Beschriftung usw. +@warning{Wenn eine @code{Voice}-Umgebung mit @code{\cueDuring} beginnt, +wie im folgenden Beispiel, muss die @code{Voice}-Umgebung explizit +erstellt werden, weil sonst der gesamte musikalische Ausdruck zum +@code{CueVoice}-Kontext gehören würde.} + @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 @@ -1319,14 +1417,15 @@ oboe = \relative c'' { Beschriftung kann auch benutzt werden, um die Bezeichnung des zitierten Instruments anzuzeigen. Wenn die Stichnoten einen Schlüsselwechsel -erfordern, muss der originale Schlüssel am Ende der Stichnoten wieder -hergestellt werden: +erfordern, kann er manuell erzeugt werden -- dann muss aber der +ursprüngliche Schlüssel am Ende der Stichnoten wieder hergestellt werden: @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 @@ -1335,62 +1434,42 @@ bassoon = \relative c { \clef bass g4. b8 d2 } -\addQuote "flute" { \flute } + +\addQuote "flute" { \fluteNotes } + \new Staff { - \bassoon + \bassoonNotes } @end lilypond @cindex Entfernen von Stichnoten @cindex Stichnoten, entfernen -@funindex \killCues -@funindex killCues - -Der @code{\killCues}-Befehl entfernt Stichnoten aus einem -musikalischen Ausdruck, sodass der selbe Ausdruck für eine Stimme mit den -Stichnoten, aber auch für die Paritur eingesetzt werden kann. Der Befehl -@code{\killCues} entfernt nur die Noten und Ereignisse, die mit -@code{\cueDuring} zitiert worden sind. Andere mit der Beschriftungen verknüpfte -Ereignisse wie Schlüsseländerungen und Bezeichnungen des Instruments können -mit einem Marker versehen werden, um selektiv benutzt werden zu können. Siehe -@ref{Marken benutzen}. +Alternativ kann auch die Funktion @code{\cueDuringWithClef} eingesetzt +werden. Dieser Befehl erhält zusätzlcih ein Argument, das den +Schlüsselwechsel anzeigt, den man für die Stichnoten braucht. Der +originale Schlüssel wird automatisch wieder hergesetllt. @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 -Alternativ können Schlüsseländerungen und Instrumentbezeichnungen auch in -eine Instrument-Definition zur wiederholten Verwendung gesammelt werden, -wobei @code{\addInstrumentDefinition} eingesetzt wird, das sich in -@ref{Instrumentenbezeichnungen} beschrieben findet. - @funindex \transposedCueDuring @funindex transposedCueDuring @@ -1407,13 +1486,14 @@ man Stichnoten von einem Instrument mit einem vollständig anderen Register benutzt: @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 @@ -1421,42 +1501,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 Noten, kleiner -@cindex kleinere Noten -@cindex Noten verkleinern +@cindex removing cue notes +@cindex cue notes, removing -Ein @code{CueVoice}-Kontext kann auch explizit erstellt werden, -wenn man kleiner Noten einsetzen will. Damit kann beispielsweise eine -alternative Sequenz für hohe und tiefe Stimme gesetzt werden: +@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 } +Der @code{\killCues}-Befehl entfernt Stichnoten aus einem +musikalischen Ausdruck, sodass derselbe musikalische Ausdruck +für die Partitur und für eine Stimme mit Stichnoten eingesetzt +werden kann. Der Befehl @code{\killCues} entfernt nur Noten +und Ereignisse, die durch @code{\cueDuring} zitiert wurden. +Andere Beschriftungen in Verbindung mit Stichnoten, wie etwa +Schlüsselwechsel und Marken, die das Ursprungsinstrument anzeigen, +können mit Marken versehen werden, um sie selektiv einzufügen, +siehe @ref{Marken benutzen}. + +@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 +Alternativ können Schlüsselwechsel und Instrumentenbezeichnungen +auch in eine Instrument-Definition unter Einsatz des Befehls +@code{\addInstrumentDefinition} zusammengefasst werden, siehe +@ref{Instrumentenbezeichnungen}. @seealso Notationsreferenz: +@ref{Andere Stimmen zitieren}, @ref{Transposition von Instrumenten}, @ref{Instrumentenbezeichnungen}, @ref{Marken benutzen}, +@ref{Notenschlüssel}, @ref{Musikalische Stichnoten}. Schnipsel: @@ -1469,5 +1584,8 @@ Referenz der Interna: @knownissues -Zusammenstöße können zwischen Pausen der Hauptstimme und -den Stichnoten des @code{CueVoice}-Kontexts auftreten. +Zusammenstöße können bei Benutzung von @code{\cueDuring} zwischen Pausen +der Hauptstimme und den Stichnoten des @code{CueVoice}-Kontexts auftreten. +Wenn @code{\cueDuringWithClef} oder @code{\transposedCueDuring} +eingesetzt wird, muss das zusätzliche Argument nach dem Zitat und der +Richtung erscheinen. diff --git a/Documentation/de/notation/text.itely b/Documentation/de/notation/text.itely index 1075b871e0..fb801de68f 100644 --- a/Documentation/de/notation/text.itely +++ b/Documentation/de/notation/text.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -206,10 +206,10 @@ Textstrecker sind Teil des @code{Dynamic}-Kontextes, siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-text-spanner-postfix.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-custom-text-spanner-postfix.ly} @@ -301,13 +301,13 @@ c c @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-at-the-end-of-a-line.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {aligning-marks-with-various-notation-objects.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-on-every-staff.ly} @seealso @@ -347,7 +347,7 @@ ausgegeben. Eine @code{\markup}-Umgebung kann auch für sich alleine existieren, außerhalb einer @code{\score}-Umgebung, als ein Ausdruck auf der -höchsten Ebene. Diese Syntax ist beschrieben in @ref{Dateistruktur}. +höchsten Ebene. Diese Syntax ist beschrieben in @ref{Die Dateistruktur}. @c KEEP LY @lilypond[verbatim,quote] @@ -380,20 +380,20 @@ dass man Textdokumente oder Bücher ausschließlich mit LilyPond setzen kann. Einzelheiten zu den vielfältigen Möglichkeiten finden sich in @ref{Textbeschriftung über mehrere Seiten}. -@funindex \markuplines +@funindex \markuplist @funindex \markup -@funindex markuplines +@funindex markuplist @funindex markup @predefined @code{\markup}, -@code{\markuplines}. +@code{\markuplist}. @endpredefined @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {stand-alone-two-column-markup.ly} @seealso @@ -457,9 +457,9 @@ eingeklammert werden. Anders als Text in Anführungsstrichen können sich in einer Textbeschriftungsumgebung (@code{\markup}) geschachtelte Ausdrücke -oder weitere Textbefehle befinden, eingeführt mit einem Backslash -(@code{\}). Derartige Befehle beziehen sich nur auf den ersten -der folgenden Ausdrücke. +oder weitere Textbefehle befinden, eingeführt mit einem +Backslash@tie{}(@code{\}). Derartige Befehle beziehen sich nur auf +den ersten der folgenden Ausdrücke. @lilypond[quote,verbatim,relative=2] a1-\markup intenso @@ -483,7 +483,7 @@ c Eine @code{\markup}-Umgebung kann auch Text in Anführungszeichen beinhalten. Derartige Zeichenketten werden als ein Textausdruck angesehen, und darum werden innerhalb von ihnen -Befehle oder Sonderzeichen (wie @code{\} oder @code{#}) so +Befehle oder Sonderzeichen (wie @code{\} oder@tie{}@code{#}) so ausgegeben, wie sie eingeben werden. Doppelte Anführungsstriche können gesetzt werden, indem man ihnen einen Backslash voranstellt. @@ -521,12 +521,10 @@ allegro = \markup { \bold \large Allegro } } @end lilypond - @noindent Eine ausführliche Liste der @code{\markup}-Befehle findet sich in @ref{Textbeschriftungsbefehle}. - @seealso Notationsreferenz: @ref{Textbeschriftungsbefehle}. @@ -573,6 +571,7 @@ f1 d2 r @cindex Textgröße @cindex Größe der Schriftart +@funindex \abs-fontsize @funindex \fontsize @funindex \smaller @funindex \larger @@ -582,38 +581,41 @@ f1 d2 r @funindex larger @funindex magnify -Die Größe von Buchstaben kann auf verschiedene Arten verändert werden: -@itemize -@item -die Schriftgröße kann auf bestimmte definierte Standardgrößen gesetzt werden, +Die Schriftgröße kann auf verschiedene Arten verändert werden, relativ +zur globalen Notensystemgröße: -@item -die Schriftgröße kann mit einem absoluten Wert gesetzt werden, +Sie kann auf eine vordefinierte Größe gesetzt werden: -@item -die Schriftgröße kann relativ zur vorhergehenden Größe geändert werden. -@end itemize +@lilypond[quote,verbatim,relative=2] +b1_\markup { \huge Sinfonia } +b1^\markup { \teeny da } +b1-\markup { \normalsize camera } +@end lilypond -@noindent -Das Beispiel unten zeigt alle drei Möglichkeiten: +Sie kann relativ zum vorherigen Wert gesetzt werden: -@lilypond[quote,verbatim,relative=1] -f1_\markup { - \tiny espressivo - \large e - \normalsize intenso -} -a^\markup { - \fontsize #5 Sinfonia - \fontsize #2 da - \fontsize #3 camera -} -bes^\markup { (con - \larger grande - \smaller emozione - \magnify #0.6 { e sentimento } ) -} -d c2 r8 c bes a g1 +@lilypond[quote,verbatim,relative=2] +b1_\markup { \larger Sinfonia } +b1^\markup { \smaller da } +b1-\markup { \magnify #0.6 camera } +@end lilypond + +Sie kann vergrößert oder verkleinert werden relativ zum Wert, der +von der globalen Notensystemgröße vorgegeben wird: + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \fontsize #-2 Sinfonia } +b1^\markup { \fontsize #1 da } +b1-\markup { \fontsize #3 camera } +@end lilypond + +Sie kann auch auf eine bestimmte Punktegröße festgelegt werden, unabhängig von +der globalen Notensystemgröße: + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \abs-fontsize #20 Sinfonia } +b1^\markup { \abs-fontsize #8 da } +b1-\markup { \abs-fontsize #14 camera } @end lilypond @cindex hochgestellt @@ -623,6 +625,8 @@ d c2 r8 c bes a g1 @funindex super @funindex \sub @funindex sub +@funindex \normal-size-super +@funindex normal-size-super Text kann auch hoch- bzw. tiefgestellt gesetzt werden. Die so markierten Buchstaben werden automatisch in einer kleineren Schriftgröße gesetzt, @@ -729,15 +733,15 @@ Notationsreferenz: @ref{Manuelle Wiederholungszeichen}, @ref{Schriftarten}. +Installierte Dateien: +@file{scm/define-markup-commands.scm}. + Schnipsel: @rlsr{Text}. Referenz der Interna: @rinternals{TextScript}. -Installierte Dateien: -@file{scm/define-markup-commands.scm}. - @knownissues Wenn die Befehle @code{\teeny}, @code{\tiny}, @code{\small}, @code{\normalsize}, @code{\large} und @@ -745,7 +749,6 @@ Wenn die Befehle @code{\teeny}, @code{\tiny}, verglichen mit @code{\fontsize}. - @node Textausrichtung @unnumberedsubsubsec Textausrichtung @translationof Text alignment @@ -994,16 +997,15 @@ Notationsreferenz: @ref{Align}, @ref{Textartige Zeichen}. +Installierte Dateien: +@file{scm/define-markup-commands.scm}. + Schnipsel: @rlsr{Text}. Referenz der Interna: @rinternals{TextScript}. -Installierte Dateien: -@file{scm/define-markup-commands.scm}. - - @node Graphische Notation innerhalb einer Textbeschriftung @unnumberedsubsubsec Graphische Notation innerhalb einer Textbeschriftung @@ -1181,17 +1183,16 @@ Notationsreferenz: @ref{Anmerkungen}, @ref{Align}. +Installierte Dateien: +@file{scm/define-markup-commands.scm}, +@file{scm/stencil.scm}. + Schnipsel: @rlsr{Text}. Referenz der Interna: @rinternals{TextScript}. -Installierte Dateien: -@file{scm/define-markup-commands.scm}, -@file{scm/stencil.scm}. - - @node Musikalische Notation innerhalb einer Textbeschriftung @unnumberedsubsubsec Musikalische Notation innerhalb einer Textbeschriftung @@ -1319,17 +1320,17 @@ Notationsreferenz: @ref{Die Feta-Schriftart}, @ref{Was sind Schriftarten}. +Installierte Dateien: +@file{scm/define-markup-commands.scm}, +@file{scm/fret-diagrams.scm}, +@file{scm/harp-pedals.scm}. + Schnipsel: @rlsr{Text}. Referenz der Interna: @rinternals{TextScript}. -Installierte Dateien: -@file{scm/define-markup-commands.scm}, -@file{scm/fret-diagrams.scm}, -@file{scm/harp-pedals.scm}. - @node Textbeschriftung über mehrere Seiten @@ -1341,8 +1342,8 @@ Installierte Dateien: @cindex Text über mehrere Seiten @cindex mehrseitiger Text -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @funindex \justified-lines @funindex justified-lines @funindex \wordwrap-lines @@ -1353,7 +1354,7 @@ einer spezifischen Umgebung ist es möglich, Text auch über mehrere Seiten fließen zu lassen: @lilypond[quote,verbatim] -\markuplines { +\markuplist { \justified-lines { A very long text of justified lines. ... @@ -1384,23 +1385,23 @@ Eine vollständige Liste der Beschriftungslistenbefehle findet sich in Notationsreferenz: @ref{Textbeschriftungslistenbefehle}. -Schnipsel: -@rlsr{Text}. - Erweitern: @rextend{Neue Definitionen von Beschriftungslistenbefehlen}. -Referenz der Interna: -@rinternals{TextScript}. - Installierte Dateien: @file{scm/define-markup-commands.scm}. -@funindex \markuplines -@funindex markuplines +Schnipsel: +@rlsr{Text}. + +Referenz der Interna: +@rinternals{TextScript}. + +@funindex \markuplist +@funindex markuplist @predefined -@code{\markuplines}. +@code{\markuplist}. @endpredefined diff --git a/Documentation/de/notation/unfretted-strings.itely b/Documentation/de/notation/unfretted-strings.itely index 749130d2dc..685ffadce6 100644 --- a/Documentation/de/notation/unfretted-strings.itely +++ b/Documentation/de/notation/unfretted-strings.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala diff --git a/Documentation/de/notation/vocal.itely b/Documentation/de/notation/vocal.itely index d0382e8e7d..732a8f4c7b 100644 --- a/Documentation/de/notation/vocal.itely +++ b/Documentation/de/notation/vocal.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -41,7 +41,7 @@ an Vokalmusik gemeinsam haben. @menu * Referenz für Vokalmusik:: -* Gesangstext notieren:: +* Eingabe von Text:: * Text an einer Melodie ausrichten:: * Automatische Silbendauern:: * Manuelle Silbendauern:: @@ -180,7 +180,7 @@ Punkte, Gesangstext mit Akzenten, verschiedene lateinische und nicht-lateinische Zeichen sowie auch etwa Sonderzeichen (wie ein Herz-Symbol) könn direkt in die Notationsdatei geschrieben werden. Es muss dabei sichergestell werden, dass die Datei in der UTF-8-Kodierung gespeichert wird. Zu mehr Information siehe -@ref{Zeichnkodierung}. +@ref{Sonderzeichen}. @lilypond[quote,verbatim] \relative c'' { d8 c16 a bes8 f e' d c4 } @@ -210,10 +210,9 @@ beeinflussen, wenn man dafür Textbeschriftungsbefehle einsetzt. Siehe hierzu @ref{Text formatieren}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {formatting-lyrics-syllables.ly} - @seealso Handbuch zum Lernen: @rlearning{Lieder}. @@ -224,14 +223,13 @@ Notationsreferenz: @ref{Eingabe-Modi}, @ref{Manuelle Silbendauern}, @ref{Text formatieren}, -@ref{Zeichenkodierung}. +@ref{Sonderzeichen}. Referenz der Interna: @rinternals{LyricText}. Schnipsel: -@rlsr{Text} - +@rlsr{Text}. @node Text an einer Melodie ausrichten @@ -350,7 +348,7 @@ Handbuch zum Lernen: Notation Reference: @ref{Was sind Kontexte?}, -@ref{Automatische Silbendauern}. +@ref{Automatische Silbendauern}, @ref{Strophen}, @ref{Manuelle Silbendauern}, @ref{Dialog zur Musik}. @@ -527,8 +525,8 @@ Notationsreferenz: -@node Manuelle Silbendauer -@unnumberedsubsubsec Manuelle Silbendauer +@node Manuelle Silbendauern +@unnumberedsubsubsec Manuelle Silbendauern @translationof Manual syllable durations In komplexer Vokalmusik kann es nötig sein, den Gesangstext vollkommen @@ -625,19 +623,15 @@ Um mehr als eine Silbe zu einer Note zuzuordnen, können die Silben mit geraden Anführungszeichen (@code{"}) umgeben werden oder ein Unterstrich (@code{_}) benutzt werden, um ein Leerzeichen zwischen Silben zu setzen. Mit der Tilde (@code{~}) kann ein Bindebogen -gesetzt werden. Dies erfordert, dass eine Schriftart vorhanden ist, -die das entsprechende Symbol (U+203F) beinhaltet. Frei erhältliche -Schriftarten, die den Bindebogen enthalten, sind @qq{FreeSerif} (ein -Times-Klon), @qq{DejaVuSans} (aber nicht DejaVuSerif) oder -TeXGyreSchole (ein Century Schoolbook-Klon). +gesetzt werden. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran- de_a- mi- go } - \addlyrics { pu- "ro y ho-" nes- to } - \addlyrics { pu- ro~y~ho- nes- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond @@ -664,7 +658,7 @@ ein Unterstrich (@code{_}) für jede Note notiert wird, die Wenn ein Melisma an einer Silbe auftritt, die nicht die letzte eines Wortes ist, wird diese Silbe mit der folgenden durch wiederholte Trennstriche -verbunden. Dies wird notiert, indem man zwei Trennstriche (@code{--}) +verbunden. Dies wird notiert, indem man zwei Trennstriche (@w{@code{--}}) nach der Silbe notiert. Wenn ein Melisma an der letzten Silbe eines Wortes auftritt, wird eine @@ -1113,15 +1107,15 @@ indem man die gegebenen Beispiele modifiziert oder auch die @rlearning{Vokalensemble}-Vorlagen im Handbuch zum Lernen heranzieht. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{lyrics-old-spacing-settings.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{obtaining-2.12-lyrics-spacing-in-newer-versions.ly} @seealso Handbuch zum Lernen: @rlearning{Vokalensemble}. Notation Reference: -@ref{Kontexte aneinander ausrichten}, +@ref{Reihenfolge des Kontextlayouts}, @ref{Kontexte erstellen}. @@ -1174,7 +1168,7 @@ wirkt, muss sie im @code{layout}-Block vorgenommen werden. @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {lyrics-alignment.ly} @c TODO: move to LSR -vv @@ -2006,7 +2000,7 @@ Art von Notensatz zu produzieren. @lilypond[ragged-right,quote,verbatim] melody = \relative c' { - c c c c | d d d d + c4 c c c | d d d d } text = \lyricmode { @@ -2024,7 +2018,7 @@ text = \lyricmode { \markup { \fill-line { \hspace #0.1 % moves the column off the left margin; - % can be removed if space on the page is tight + % can be removed if space on the page is tight \column { \line { \bold "2." \column { @@ -2032,7 +2026,7 @@ text = \lyricmode { "It has two lines." } } - \hspace #0.1 % adds vertical spacing between verses + \vspace #0.1 % adds vertical spacing between verses \line { \bold "3." \column { "This is verse three." @@ -2040,17 +2034,15 @@ text = \lyricmode { } } } - \hspace #0.1 % adds horizontal spacing between columns; - % if they are still too close, add more " " pairs - % until the result looks good - \column { + \hspace #0.1 % adds horizontal spacing between columns; + \column { \line { \bold "4." \column { "This is verse four." "It has two lines." } } - \hspace #0.1 % adds vertical spacing between verses + \vspace #0.1 % adds vertical spacing between verses \line { \bold "5." \column { "This is verse five." @@ -2059,7 +2051,7 @@ text = \lyricmode { } } \hspace #0.1 % gives some extra space on the right margin; - % can be removed if page space is tight + % can be removed if page space is tight } } @end lilypond @@ -2151,7 +2143,7 @@ Akkorden im Akkord-Modus kombiniert; die Syntax ist erklärt in @ref{Notation von Akkorden}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {simple-lead-sheet.ly} @seealso @@ -2347,7 +2339,7 @@ Referenz der Interna: @cindex Stimmen, geteilt @cindex geteilte Stimmen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-arpeggiobracket-to-make-divisi-more-visible.ly} @seealso @@ -2437,7 +2429,7 @@ Zu Einzelheiten der Seitenformatierung siehe @item Stichworte der Dialoge und Regieanweisungen können mit Textbeschriftungen -eingefügt werden. Siehe @ref{Text}. Ausführliche Regieanweisungen können +eingefügt werden. Siehe @ref{Fußnoten erstellen}. Ausführliche Regieanweisungen können mit Abschnitten von alleinstehenden Textbeschriftungen zwischen zwei @code{\score}-Umgebungen gesetzt werden. Siehe @ref{Separater Text}. @@ -2458,7 +2450,8 @@ Notationsreferenz: @ref{Systeme trennen}, @ref{Transposition}, @ref{Orchesterstimmen erstellen}, -@ref{Text eingeben}. +@ref{Text eingeben} +@ref{Fußnoten erstellen}. Schnipsel: @rlsr{Vocal music}. @@ -2579,7 +2572,7 @@ Instrument in der Orchesterfassung den Abschnitt spielt. Das hilft dem Dirigenten, wenn man keine große Partitur parat hat. Der grundlegende Mechanismus, um Stichnoten einzufügen, findet sich in -@ref{Stichnoten} und @ref{Stichnoten formatieren}. Aber wenn man viele +@ref{Andere Stimmen zitieren} und @ref{Stichnoten formatieren}. Aber wenn man viele Stichnoten etwa in einen Klavierauszug einfügen will, um dem Dirigenten zu helfen, muss man sehr sorgfältig mit der Positionierung der Instrumentenbezeichnungen sein. Im folgenden Beispiel gibt es dazu @@ -2617,7 +2610,7 @@ Wenn ein transponierendes Instrument zitiert wird, sollte die Orchsterstimme die Tonart angeben, damit die Transposition der Stichnoten automatisch geschehen kann. Das Beispiel unten zeigt, wie man das vornimmt. Die Noten im Beipiel sind sehr tief auf -dem System, sodass @code{#DOWN} (nach unten) im @code{\cueDuring} +dem System, sodass @code{DOWN} (nach unten) im @code{\cueDuring} definiert ist, damit die Hälse nach unten zeigen. Die Instrumentbezeichnung wird auch unter dem System platziert. Auch die Stimme für die rechte Hand des Klaviers ist explizit definiert. @@ -2666,7 +2659,7 @@ Schnipsel wird jedoch gezeigt, wie man eine Musikfunktion definiert, die Tipparbeit erspart und die Klaviernoten klarer macht. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {adding-orchestral-cues-to-a-vocal-score.ly} @seealso @@ -2674,11 +2667,11 @@ Glossar: @rglos{cue-notes}. Notationsreferenz: -@ref{Aligning objects}, -@ref{Direction and placement}, -@ref{Formatting cue notes}, -@ref{Quoting other voices}, -@ref{Using music functions}. +@ref{Objekte ausrichten}, +@ref{Richtung und Platzierung}, +@ref{Stichnoten formatieren}, +@ref{Andere Stimmen zitieren}, +@ref{Musikfunktionen benutzen}. Schnipsel: @rlsr{Vocal music}. @@ -2790,7 +2783,7 @@ dialogue = \lyricmode { @seealso Notationsreferenz: -@ref{Manuelle Silbendauer}, +@ref{Manuelle Silbendauern}, @ref{Text}. Referenz der Interna: @@ -3100,7 +3093,7 @@ im ersten der folgenden Schnipsel. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {chant-or-psalms-notation.ly} Cantica und andere liturgische Texte können freier gesetzt werdne, @@ -3109,7 +3102,7 @@ Oft weren die Worte unter den Noten und an ihnen ausgerichtet gesetzt. In diesem Fall werden die Noten entsprechend der Ausdehnung des Textes und nicht der Notenlänge gesetzt. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @seealso @@ -3274,7 +3267,7 @@ tick = \markup { Der Einsatz von Beschriftung, um den Text zu zentrieren und die Zeilen in Spalten zu formatieren, findet sich in -@ref{}. +@ref{Text formatieren}. Die meisten dieser Elemente werden in einem der beiden Strophen der @qq{Psalm}-Vorlage demonstriert, siehe @@ -3299,7 +3292,7 @@ unvollständigen Takt, sodass jede Notenzeile exakt mit eine Textzeile Beginn der Musik ein und @code{\bar "|"} oder @code{\bar "||"}, um die schließende Taktlinie am Ende der Zeile zu setzen. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {hymn-template.ly} diff --git a/Documentation/de/notation/wind.itely b/Documentation/de/notation/wind.itely index b155de2142..72bd22dd7a 100644 --- a/Documentation/de/notation/wind.itely +++ b/Documentation/de/notation/wind.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 + Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -109,7 +109,7 @@ notiert. Siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing--flageolet-mark-size.ly} @@ -143,10 +143,10 @@ Diagramme für Holzbläser können erstellt werden nach den Anweisungen in @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingering-symbols-for-wind-instruments.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {recorder-fingering-chart.ly} @seealso @@ -433,33 +433,28 @@ c1^\markup { @end lilypond Die Liste aller möglichen Löcher und Einstellungen eines bestimmten -Instruments kann auf der Kommandozeile oder in einer Log-Datei -angezeigt werden, auch wenn man sie nicht in der Notenausgabe anzeigen -lassen kann: - -@lilypond[verbatim,quote] - -#(print-keys-verbose 'flute) - -@end lilypond +Instruments kann auf der Kommandozeile mit dem Befehl +@code{#(print-keys-verbose 'flute)} oder in einer Log-Datei +mit @code{#(print-keys-verbose 'flute (current-error-port))} +angezeigt werden; durch diese Befehle wird der Notensatz nicht +verändert. Neue Diagramme können erstellt werden, indem man die Muster in den Datei @file{scm/define-woodwind-diagrams.scm} und @file{scm/display-woodwind-diagrams.scm} befolgt. Das benötigt jedoch Scheme-Fähigkeit und ist nicht für alle Benutzer verständlich. - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-listing.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {graphical-and-text-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-size-of-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-key-lists.ly} @seealso diff --git a/Documentation/de/notation/world.itely b/Documentation/de/notation/world.itely index 82f5c5f09f..47ca526da7 100644 --- a/Documentation/de/notation/world.itely +++ b/Documentation/de/notation/world.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,7 +10,7 @@ @c Translators: Till Paala -@c \version "2.14.0" +@c \version "2.16.0" @node Weltmusik @section Weltmusik @@ -79,7 +79,7 @@ Um Dateien wie @file{arabic.ly} oder @file{makam.ly} zu finden, siehe @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {makam-example.ly} @seealso @@ -227,7 +227,6 @@ Schnipsel: @rlsr{World music}. - @node Arabische Tonarten @unnumberedsubsubsec Arabische Tonarten @translationof Arabic key signatures @@ -329,7 +328,7 @@ häufigsten Maqams bestimmten Vorzeichen zugeordnet werden: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} @seealso @@ -380,10 +379,7 @@ zu benutzen. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {arabic-improvisation.ly} @@ -548,7 +544,7 @@ klassischer Musik: @notation{koma} (1/9 eines Ganztons), @notation{artık ikili} (12/9 oder 13/9 eines Ganztons). Es bietet sich an, die normalen westlichen Noten auf dem Notensystem zu -benutzen (also c, d, e @dots) angrereichert mit besonderen Versetzungszeichen, +benutzen (also c, d, e @dots{}) angrereichert mit besonderen Versetzungszeichen, die die Noten um 1/9, 4/9, 5/9 und 8/9 eines Ganztons erhöhen oder erniedrigen. Diese Versetzungszeichen sind definiert in der Datei @file{makam.ly}. diff --git a/Documentation/de/search-box.ihtml b/Documentation/de/search-box.ihtml index 694200e8b5..1322170b71 100644 --- a/Documentation/de/search-box.ihtml +++ b/Documentation/de/search-box.ihtml @@ -1,19 +1,26 @@ +
diff --git a/Documentation/de/texidocs/alternative-bar-numbering.texidoc b/Documentation/de/texidocs/alternative-bar-numbering.texidoc new file mode 100644 index 0000000000..b84d88a3d9 --- /dev/null +++ b/Documentation/de/texidocs/alternative-bar-numbering.texidoc @@ -0,0 +1,7 @@ + +%% Translation of GIT committish: fc1ca638e0b5f66858b9b7a073ceefc1eccb3ed2 + + texidocde = "Zwei alternative Methoden können eingestellt werden, + die die Taktnummerierung beeinflussen, insbesondere bei Wiederholungen." + + doctitlede = "Alternative Taktnummerierung" diff --git a/Documentation/de/texidocs/alternative-breve-note.texidoc b/Documentation/de/texidocs/alternative-breve-note.texidoc new file mode 100644 index 0000000000..5799aab20b --- /dev/null +++ b/Documentation/de/texidocs/alternative-breve-note.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 + + + texidocde = "Dieses Schnipsel zeigt, wie man die alternative Brevis mit zwei +vertikalen Linien an jeder Seite des Notenkopfes benutzt." + doctitlede = "Alternative Brevis mit zwei vertiaklen Linien" + diff --git a/Documentation/de/texidocs/chord-glissando-in-tablature.texidoc b/Documentation/de/texidocs/chord-glissando-in-tablature.texidoc index aa4a660e5c..dd8b79c2e5 100644 --- a/Documentation/de/texidocs/chord-glissando-in-tablature.texidoc +++ b/Documentation/de/texidocs/chord-glissando-in-tablature.texidoc @@ -3,8 +3,7 @@ Gleiten von Akkorden kann sowohl im normalen Notensystem als auch in einer Tabulatur notiert werden. Saitennummern werden für Tabulaturen benötigt, weil die automatische Saitenberechnung unterschiedlich für -Akkorde und einzelne Noten funktioniert und -@code{\\chordGlissando} zieht Linien zwischen einzelnen Noten. +Akkorde und einzelne Noten funktioniert. " doctitlede = "Akkordglissando in Tabulaturen" diff --git a/Documentation/de/texidocs/glissandi-can-skip-grobs.texidoc b/Documentation/de/texidocs/glissandi-can-skip-grobs.texidoc new file mode 100644 index 0000000000..640df117ee --- /dev/null +++ b/Documentation/de/texidocs/glissandi-can-skip-grobs.texidoc @@ -0,0 +1,4 @@ +%% Translation of GIT committish: fc1ca638e0b5f66858b9b7a073ceefc1eccb3ed2 + texidocde = "@code{NoteColumn}-Grobs können bei Glissandos übersprungen werden." + doctitlede = "Glissando kann Grobs überspringen" + diff --git a/Documentation/de/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc b/Documentation/de/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc new file mode 100644 index 0000000000..cf746f879b --- /dev/null +++ b/Documentation/de/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: 06f227dd80f3a30cbf33c879b7c125079dfaf5c3 + + texidocde = " +Die Maschine für die vertikale Platzverteilung hat sich in Version 2.14 verändert. +Dadurch wurde Gesangstext auf andere Art verteilt. Es ist möglich, Eigenschaften +von @code{Lyric}- und @code{Staff}-Kontexten einzustellen, um die Platzverteilung +so aussehen zu lassen wie für Version 2.12. + +" + doctitlede = "Platzverteilung von Gesangstext wie in 2.12 für neuere Versionen" + diff --git a/Documentation/de/texidocs/strict-beat-beaming.texidoc b/Documentation/de/texidocs/strict-beat-beaming.texidoc new file mode 100644 index 0000000000..7189134e46 --- /dev/null +++ b/Documentation/de/texidocs/strict-beat-beaming.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: fc1ca638e0b5f66858b9b7a073ceefc1eccb3ed2 + + texidocde = " +Sekundäre Balken können in die Richtung gesetzt werden, die ihrer rhythmischen +Zugehörigkeit entspricht. Der erste Balken ist zusammengefasst (Standard), +der zweite Sechszehntelbalken zeigt den Taktschlag an. +" + + doctitlede = "Bebalkung nach Taktschlag" + + diff --git a/Documentation/de/texidocs/woodwind-diagrams-key-lists.texidoc b/Documentation/de/texidocs/woodwind-diagrams-key-lists.texidoc index 8e06bc7a9d..be1123b290 100644 --- a/Documentation/de/texidocs/woodwind-diagrams-key-lists.texidoc +++ b/Documentation/de/texidocs/woodwind-diagrams-key-lists.texidoc @@ -3,8 +3,11 @@ texidocde=" Dieses Schnipsel erzeugt eine Liste aller möglichen Löcher und Locheinstellungen für Holzbläserdiagramme, wie sie in der Datei -@file{scm/define-woodwind-diagrams.scm} definiert sind. Die Liste wird auf -der Kommandozeile und in der Log-Datei angezeigt, nicht in den Noten. +@file{scm/define-woodwind-diagrams.scm} definiert sind. Die Liste wird +in der Log-Datei angezeigt, nicht in den Noten. Wenn Ausgabe auf der Kommandozeile +gewünscht ist, muss @code{(current-error-port)} von den Befehlen weggelassen +werden. + " doctitlede = "Liste der Löcher für Holzbläserdiagramme" diff --git a/Documentation/de/translations.itexi b/Documentation/de/translations.itexi index 607017d354..0d3478ed92 100644 --- a/Documentation/de/translations.itexi +++ b/Documentation/de/translations.itexi @@ -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 Thu May 31 09:12:39 UTC 2012 } @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 @@ -204,7 +204,7 @@ ja @item 1 Scheme-Übung @* -5007 +6041 @tab Till Paala @tab @tab @@ -231,7 +231,7 @@ ja @item 2 Schnittstellen für Programmierer @* -3568 +5250 @tab Till Paala @tab @tab @@ -353,7 +353,7 @@ ja @item 2 Übliche Notation @* -4184 +4187 @tab Till Paala @tab @tab @@ -380,7 +380,7 @@ ja @item 3 Grundbegriffe @* -11139 +11130 @tab Till Paala @* Reinhold Kainhofer @@ -399,17 +399,17 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @item 4 Die Ausgabe verändern @* -15408 +15468 @tab Till Paala @tab @tab @@ -426,17 +426,17 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @item A Vorlagen @* -225 +219 @tab Till Paala @tab @tab @@ -453,11 +453,11 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @end multitable @@ -556,7 +556,7 @@ ja @item 1.1 Tonhöhen @* -4479 +4530 @tab Till Paala @tab @tab @@ -573,17 +573,17 @@ ja @ifhtml @html -teilweise +ja @end html @end ifhtml @ifnothtml -teilweise +ja @end ifnothtml @tab vor-GDP @item 1.2 Rhythmus @* -6048 +6352 @tab Till Paala @tab @tab @@ -600,17 +600,17 @@ ja @ifhtml @html -teilweise +ja @end html @end ifhtml @ifnothtml -teilweise +ja @end ifnothtml @tab vor-GDP @item 1.3 Ausdrucksbezeichnungen @* -1726 +1712 @tab Till Paala @tab @tab @@ -637,7 +637,7 @@ ja @item 1.4 Wiederholungszeichen @* -930 +1011 @tab Till Paala @tab @tab @@ -664,7 +664,7 @@ ja @item 1.5 Gleichzeitig erscheinende Noten @* -2163 +2640 @tab Till Paala @tab @tab @@ -681,17 +681,17 @@ ja @ifhtml @html -teilweise +ja @end html @end ifhtml @ifnothtml -teilweise +ja @end ifnothtml @tab vor-GDP @item 1.6 Notation auf Systemen @* -2056 +2392 @tab Till Paala @tab @tab @@ -718,7 +718,7 @@ ja @item 1.7 Anmerkungen @* -931 +949 @tab Till Paala @tab @tab @@ -735,17 +735,17 @@ ja @ifhtml @html -teilweise +ja @end html @end ifhtml @ifnothtml -teilweise +ja @end ifnothtml @tab vor-GDP @item 1.8 Text @* -2716 +2729 @tab Till Paala @tab @tab @@ -799,7 +799,7 @@ ja @item 2.1 Notation von Gesang @* -4807 +4758 @tab Till Paala @tab @tab @@ -826,7 +826,7 @@ ja @item 2.2 Tasteninstrumente und andere Instrumente mit mehreren Systemen @* -838 +862 @tab  Till Paala @tab @tab @@ -880,7 +880,7 @@ ja @item 2.4 Saiteninstrumente mit Bünden @* -2640 +2675 @tab Till Paala @tab @tab @@ -897,17 +897,17 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @item 2.5 Schlagzeug @* -806 +812 @tab Till Paala @tab @tab @@ -934,7 +934,7 @@ ja @item 2.6 Blasinstrumente @* -312 +321 @tab Till Paala @tab @tab @@ -961,7 +961,7 @@ ja @item 2.7 Notation von Akkorden @* -1855 +2022 @tab Till Paala @tab @tab @@ -1069,7 +1069,7 @@ ja @item 3 Allgemeine Eingabe und Ausgabe @* -7069 +8701 @tab Till Paala @tab @tab @@ -1086,17 +1086,17 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @item 4 Abstände @* -11017 +11234 @tab Till Paala @tab @tab @@ -1123,7 +1123,7 @@ ja @item 5 Standardeinstellungen verändern @* -12248 +12679 @tab Till Paala @tab @tab @@ -1140,17 +1140,17 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @item A Notationsübersicht @* -1989 +2177 @tab Till Paala @tab @tab @@ -1270,7 +1270,7 @@ ja @item 1 @command{lilypond} starten @* -3622 +4615 @tab Reinhold Kainhofer @* Till Paala @@ -1279,27 +1279,27 @@ Till Paala @ifhtml @html -ja +teilweise (98 %) @end html @end ifhtml @ifnothtml -ja +teilweise (98 %) @end ifnothtml @tab @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @item 2 Dateien mit @command{convert-ly} aktualisieren @* -1189 +1209 @tab Till Paala @tab @tab @@ -1326,7 +1326,7 @@ ja @item 3 @command{lilypond-book} aufrufen @* -3764 +4137 @tab Reinhold Kainhofer @tab Till Paala @tab @@ -1353,7 +1353,7 @@ ja @item 4 Externe Programme @* -2170 +2390 @tab Till Paala @* Reinhold Kainhofer @@ -1421,7 +1421,7 @@ LilyPond -- Notation für Jedermann @item Überschriften @* -585 +616 @tab Till Paala @tab @tab @@ -1475,7 +1475,7 @@ ja @item Einleitung @* -4506 +4753 @tab Till Paala @tab @tab @@ -1502,7 +1502,7 @@ ja @item Download @* -1183 +1211 @tab Till Paala @tab @tab @@ -1529,7 +1529,7 @@ ja @item Handbücher @* -1200 +1214 @tab Till Paala @tab @tab @@ -1556,7 +1556,7 @@ ja @item Gemeinschaft @* -1755 +3006 @tab  Till Paala @tab @tab @@ -1573,11 +1573,11 @@ ja @ifhtml @html -ja +teilweise @end html @end ifhtml @ifnothtml -ja +teilweise @end ifnothtml @tab vor-GDP @end multitable diff --git a/Documentation/de/usage.tely b/Documentation/de/usage.tely index 84da2438e7..b448e74e90 100644 --- a/Documentation/de/usage.tely +++ b/Documentation/de/usage.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -23,7 +23,7 @@ vorgestellt. @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 bei den Autoren. +Copyright @copyright{} 1999--2012 bei den Autoren. @end macro @set FDL diff --git a/Documentation/de/usage/external.itely b/Documentation/de/usage/external.itely index f7a4df4018..cc11daf601 100644 --- a/Documentation/de/usage/external.itely +++ b/Documentation/de/usage/external.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Till Paala, Reinhold Kainhofer @@ -30,6 +30,18 @@ LilyPond kann mit anderen Programmen auf verschiedene Weise interagieren. @node Point and click @section Point and click +Poind and click fügt Verlinkung für bestimmte Notationselemente +in die PDF-Dokumente ein. + +@menu +* Point and click aktivieren:: +* Selektives point-and-click:: +@end menu + +@node Point and click aktivieren +@unnumberedsubsec Point and click aktivieren +@translationof Enabling point and click + @cindex point and click Point and click erlaubt es, die Noten in der Eingabedatei schnell @@ -46,9 +58,8 @@ PDF-Programm dazu anweisen, Hyperlinks zu folgen, indem das Skript wird. Für Xpdf unter UNIX sollte folgende Zeile in der Datei -@file{xpdfrc}@footnote{Unter UNIX findet man diese Datei -entweder in @file{/etc/xpdfrc} oder als @file{.xpdfrc} im -home-Verzeichnis.} stehen: +@file{xpdfrc}. Unter UNIX findet man diese Datei +entweder in @file{/etc/xpdfrc} oder als @file{$HOME/.xpdfrc}: @example urlCommand "lilypond-invoke-editor %s" @@ -120,6 +131,84 @@ verteilen wollen, damit keine Informationen über Ihre Dateistrukturen in den Dateien gespeichert werden, was ein Sicherheitsrisiko darstellen könnte.} +@node Selektives point-and-click +@unnumberedsubsec Selektives point-and-click +@translationof Selective point-and-click + +Für einige interaktive Anwendungen kann es von Vorteil sein, nur +einige Elemente mit Point and click zu aktivieren. Wenn man +beispielsweise eine Anwendung erstellen will, die Audio oder Video +beginnend von einer angeklickten Note abspielt, würde es unpraktisch +sein, wenn die Point-and-click-Zeiger Information eines Bogens oder +Versetzungszeichen, die gleichzeitig mit der Note erscheinen, +darstellen würden. + +Man kann dieses Verhalten erreichen, indem man angibt, welche +Ereignisse aufgenommen werden sollen: + +@itemize +@item +Direkt in der @file{.ly}-Datei: + +@example +\pointAndClickTypes #'note-event +\relative c' @{ + c2\f( f) +@} +@end example + +oder + +@example +#(ly:set-option 'point-and-click 'note-event) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Auf der Kommandozeile: + +@example +lilypond -dpoint-and-click=note-event example.ly +@end example + +@end itemize + +Auch mehrere Ereignisse können eingebunden werden: + +@itemize +@item +Direkt in der @file{.ly}-Datei: + +@example +\pointAndClickTypes #'(note-event dynamic-event) +\relative c' @{ + c2\f( f) +@} +@end example + +oder + +@example +#(ly:set-option 'point-and-click '(note-event dynamic-event)) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Auf der Kommandozeile: + +@smallexample +lilypond \ + -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ + example.ly +@end smallexample + +@end itemize + + @node Unterstützung von Texteditoren @section Unterstützung von Texteditoren @translationof Text editor support @@ -256,7 +345,7 @@ aufgenommen und dann in eine @file{.ly}-Datei konvertiert werden. Allerdings sind Musikinterpretationen von Menschen (aus gutem Grund!) rhythmisch nicht exakt genug um die Konvertierung von MIDI nach LY trivial zu gestalten. Wenn @command{midi2ly} mit Quantisierung -(@code{-s} und @code{-d} Kommandozeilenoptionen) aufgerufen wird, +(@option{-s} und @option{-d} Kommandozeilenoptionen) aufgerufen wird, versucht es diese Unschärfen im Zeitablauf zu korrigieren, ist allerdings nicht sonderlich gut darin. Daher können wir diese Technik leider nicht für die Konvertierung von MIDI-Aufnahmen empfehlen. @@ -364,6 +453,11 @@ Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. Benutzt SPRACHE für die Notenbezeichnungen, etwa "deutsch" für deutsche Notenbezeichnungen. +@item --loglevel=@var{Logstufe} +Passt die Ausführlichkeit der Ausgabe entsprechend @var{Logstufe} an. +Mögliche Werte sind @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (Standard) und @code{DEBUG}. + @item --lxml Benutzt das lxml.etree Python-Paket für die Verarbeitung von XML (benötigt weniger Speicher und Rechenleistung) @@ -555,7 +649,7 @@ automatisiert geschieht. @end menu @node Viele Zitate aus einer langen Partitur -@subsection Viele Zitate aus einer langen Partitur +@unnumberedsubsec Viele Zitate aus einer langen Partitur @translationof Many quotes from a large score Wenn aus einer großen Partitur viele kleine Fragmente eingefügt @@ -564,7 +658,7 @@ Siehe @ruser{Notationsfragmente extrahieren}. @node LilyPond-Noten in OpenOffice.org integrieren -@subsection LilyPond-Noten in OpenOffice.org integrieren +@unnumberedsubsec LilyPond-Noten in OpenOffice.org integrieren @translationof Inserting LilyPond output into OpenOffice.org @cindex OpenOffice.org @@ -574,7 +668,7 @@ Musik im LilyPond-Format kann in OpenOffice.org eingefügt werden mittels @node LilyPond-Noten in andere Programme integrieren -@subsection LilyPond-Noten in andere Programme integrieren +@unnumberedsubsec LilyPond-Noten in andere Programme integrieren @translationof Inserting LilyPond output into other programs Um die Ausgabe von LilyPond in anderen Programmen einzufügen, @@ -602,17 +696,21 @@ Einstellungen benutzt werden: @{ c1 @} @end example -Eine @file{EPS}-Datei kann mit folgendem Befehl erzeugt werden: +Benutzbare Bilddateien können mit folgendem Befehl erzeugt werden: @example +EPS + lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts Dateiname.ly -@end example -@noindent -eine @file{PNG}-Datei mittels: +PNG -@example lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png Dateiname.ly + +Ein transparentes PNG + +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \ + -dpixmap-format=pngalpha --png myfile.ly @end example diff --git a/Documentation/de/usage/lilypond-book.itely b/Documentation/de/usage/lilypond-book.itely index 6ee7b1e2bb..969966f34a 100644 --- a/Documentation/de/usage/lilypond-book.itely +++ b/Documentation/de/usage/lilypond-book.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Reinhold Kainhofer @c Translation checkers: Till Paala @@ -31,24 +31,24 @@ werden dabei Ihrem Dokument angepasst. @command{lilypond-book} ist ein eigenständiges Programm und wird üblicherweise von der Kommandozeile aufgerufen. Nähere Informationen -hierzu finden sich in @ref{Benutzung auf der Kommandozeile}. Wenn Sie MacOS 10.3 -oder 10.4 benutzen und Probleme mit @code{lilypond-book} haben, lesen -Sie @rweb{MacOS X}. +hierzu finden sich in @ref{Benutzung auf der Kommandozeile}. Wenn Sie +MacOS oder Windows benutzen und Probleme mit @code{lilypond-book} haben, +lesen Sie @rweb{MacOS X} bzw. @rweb{Windows} . Dieses Vorgehen kann bei @LaTeX{}, HTML, Texinfo oder DocBook Dokumenten angewendet werden. @cindex texinfo -@cindex latex +@cindex LaTeX @cindex texinfo @cindex texi -@cindex html +@cindex HTML @cindex docbook -@cindex Dokument, Noten einfügen in -@cindex HTML, Noten in -@cindex Texinfo, Noten in -@cindex DocBook, Noten in -@cindex @LaTeX{}, Noten in +@cindex Dokument, Noten einfügen +@cindex HTML, Noten hinzufügen +@cindex Texinfo, Noten hinzufügen +@cindex DocBook, Noten hinzufügen +@cindex LaTeX, Noten in @menu @@ -109,9 +109,9 @@ Optionen für \verb+lilypond+ werden dabei in eckige Klammern gesetzt. Größere Beispiele können auch in einer eigenständigen Datei gespeichert und dann mit \verb+\lilypondfile+ eingebunden werden. -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(Falls nötig kann @file{screech-boink.ly} durch eine beliebige andere +(Falls nötig kann @file{screech-and-boink.ly} durch eine beliebige andere @file{.ly}-Datei im selben Verzeichnis wie diese Datei ersetzt werden.) \end{document} @@ -139,8 +139,9 @@ xpdf lilybook Die Ausführung von @command{lilypond-book} und @command{latex} erzeugt zahlreiche temporäre Dateien, die das Arbeitsverzeichnis unnötig -vollstopfen würden. Daher empfiehlt sich die Benutzung der @code{--output=@var{dir}} -Option, wodurch die Dateien im Unterverzeichnis @file{dir} erzeugt werden. +vollstopfen würden. Daher empfiehlt sich die Benutzung der +@option{--output=@var{dir}}-Option, wodurch die Dateien im +Unterverzeichnis @file{dir} erzeugt werden. Das Endresultat des obigen @LaTeX{}-Beispiels ist im nächsten Abschnitt zu sehen.@footnote{Da dieses Handbuch mit Texinfo erzeugt wurde, @@ -169,7 +170,7 @@ c'4 f16 Größere Beispiele können auch in einer eigenständigen Datei gespeichert und dann mit @code{\lilypondfile} eingebunden werden. -@lilypondfile[quote,noindent]{screech-boink.ly} +@lilypondfile[quote,noindent]{screech-and-boink.ly} Wenn man eine @code{tagline} (die Zeile unten auf der Seite) braucht (in Standard oder angepasst), dann muss der ganze Schnipsel in eine @@ -218,28 +219,46 @@ Siehe die @uref{http://@/www@/.ctan@/.org/@/tex@/-archive/@/info/@/lshort/@/germ @emph{@LaTeX{}2e-Kurzbeschreibung}} für eine Einführung in die Benutzung von @LaTeX{}. -Musikbeispiele können eingegeben werden als +@code{lilypond-book} stellt folgende Befehle und Umgebungen zu Verfügung, +um Noten in @LaTeX{}-Dateien einzufügen: + +@itemize + +@item +den @code{\lilypond@{...@}}-Befehl, womit man direkt kurze +LilyPond-Codeabschnitte schreiben kann + +@item +die @code{\begin@{lilypond@}...\end@{lilypond@}}-Umgebung, mit der +man längere LilyPond-Codeabschnitt direkt schreiben kann + +@item +den @code{\lilypondfile@{...@}}-Befehl um eine LilyPond-Datei +einzufügen + +@item +den @code{\musicxmlfile@{...@}}-Befehl um eine MusicXML-Datei +einzufügen, die dann von @code{musicxml2ly} und @code{lilypond} +bearbeitet wird. + +@end itemize + +In der Eingabedatei werden Noten mit beliebigen der folgenden +Befehle angegeben: @example \begin@{lilypond@}[Optionen,kommen,hierhin] IHR LILYPOND-QUELLCODE \end@{lilypond@} -@end example -@noindent -oder +\lilypond[Optionen,kommen,hier]@{ IHR LILYPOND-QUELLCODE @} -@example \lilypondfile[Optionen,kommen,hier]@{@var{Dateiname}@} -@end example - -@noindent -oder -@example -\lilypond@{ IHR LILYPOND-QUELLCODE @} +\musicxmlfile[Optionen,kommen,hier]@{@var{Dateiname}@} @end example +@noindent Zusätzlich kann mit @code{\lilypondversion} die benutzte Versionsnummer von LilyPond angezeigt werden. Der Aufruf von @command{lilypond-book} liefert eine Datei, die dann mit @LaTeX{} weiter verarbeitet werden kann. @@ -404,8 +423,6 @@ Verfügung. Für eine Liste dieser Optionen und andere hilfreiche Details zur Verarbeitung von @LaTeX{}-Dokumenten, siehe @ref{lilypond-book aufrufen}. - - @node Texinfo @subsection Texinfo @translationof Texinfo @@ -414,26 +431,43 @@ Texinfo ist das Standard-Dokumentationsformat des GNU Projekts. Ein Beispiel für ein Dokument im Texinfo Format ist dieses Handbuch, wobei die HTML-, PDF- und Info-Versionen alle aus demselben Texinfo Dokument erzeugt werden. -In der Eingabedatei wir Musik eingegeben als +@code{lilypond-book} stellt die folgenden Befehle und Umgebungen +zur Verfügung, im Noten in Texinfo-Dateien einzufügen: + +@itemize + +@item +den @code{\lilypond@{...@}}-Befehl, womit man direkt kurze +LilyPond-Codeabschnitte schreiben kann + +@item +die @code{\begin@{lilypond@}...\end@{lilypond@}}-Umgebung, mit der +man längere LilyPond-Codeabschnitt direkt schreiben kann + +@item +den @code{\lilypondfile@{...@}}-Befehl um eine LilyPond-Datei +einzufügen + +@item +den @code{\musicxmlfile@{...@}}-Befehl um eine MusicXML-Datei +einzufügen, die dann von @code{musicxml2ly} und @code{lilypond} +bearbeitet wird. + +@end itemize + +In der Eingabedatei werden Noten mit folgenden Befehlen eingegeben: @example @@lilypond[Optionen,kommen,hier] IHR LILYPOND-QUELLCODE @@end lilypond -@end example -@noindent -oder - -@example @@lilypond[Optionen,kommen,hier]@{ IHR LILYPOND-QUELLCODE @} -@end example -@noindent -oder - -@example @@lilypondfile[Optionen,kommen,hier]@{@var{Dateiname}@} + +@@musicxmlfile[Optionen,kommen,hier]@{@var{Dateiname}@} + @end example Zusätzlich kann mit @code{@@lilypondversion} die aktuelle Versionsnummer @@ -480,7 +514,46 @@ im Fließtext, sondern setzt sie immer in einen eigenen Absatz. @subsection HTML @translationof HTML -Noten werden eingegeben als +@code{lilypond-book} stellt folgende Befehle und Umgebungen zur Noteneingabe +in HTML-Dateien zur Verfügung: + +@itemize + +@item +den @code{}-Befehl, womit man direkt kurze +LilyPond-Codeabschnitte schreiben kann + +@item +die @code{...}-Umgebung, mit der +man längere LilyPond-Codeabschnitt direkt schreiben kann + + +@item +den @code{...}-Befehl um eine LilyPond-Datei +einzufügen + +@item +den @code{...}-Befehl um eine MusicXML-Datei +einzufügen, die dann von @code{musicxml2ly} und @code{lilypond} +bearbeitet wird. + +@end itemize + +In der Eingabedatei werden Noten mit folgenden Befehlen eingegeben: + +@example + + IHR LILYPOND-QUELLCODE + + + + +@var{Dateiname} + +@var{Dateiname} +@end example + +Man kann beispielsweise schreiben @example @@ -509,6 +582,9 @@ Um Dateien mit Musik einzubinden, kann folgendermaßen vorgegangen werden: @var{Dateiname} @end example +@code{} hat die gleiche Syntax wie @code{}, +aber fügt anstelle der LilyPond-Datei eine MusicXML-Datei ein. + Eine Liste der Optionen, die man mit @code{lilypond} oder @code{lilypondfile} benutzen kann, siehe @ref{Die Musikfragment-Optionen} @@ -614,12 +690,9 @@ Setzt die Höhe einer Notenzeile auf @var{ht}, angegeben in Punkten. @item ragged-right Erzeugt Notenzeilen im Flattersatz mit natürlichem Abstand der Noten. In anderen Worten: @code{ragged-right = ##t} wird in das Musikfragment -eingefügt. Dies ist die Standardeinstellung für den -@code{\lilypond@{@}}-Befehl, -wenn die Option @code{line-width} nicht angegeben wird. -Ebenso ist dies die Standardeinstellung für die @code{lilypond}-Umgebung, -wenn die Option @code{fragment}, aber keine Zeilenlänge -explizit angegeben ist. +eingefügt. Einzeilige Fragmentschnipsel werden standardmäßig immer +im Flattersatz gesetzt, außer @code{noragged-right} wird explizit +angegeben. @item noragged-right Streckt Musikfragmente mit nur einer Notenzeile auf die volle Breite, @@ -764,7 +837,8 @@ Kommandozeilenoption @option{--header=@/texidoc} für eine Datei @file{foo.texidoc} ausgegeben. Die @code{texidoc} Option veranlasst @code{lilypond-book}, den Inhalt dieser @file{.texidoc} Dateien innerhalb eines Dokumentationsblocks direkt vor dem Musikfragment in das aktuelle -Dokument einzufügen. +Dokument einzufügen (aber außerhalb der @code{example}-Umgebung, die durch +die Option @code{quote} hervorgerufen wird). Enthält also die Datei @file{foo.ly} etwa den LilyPond-Code @@ -802,13 +876,6 @@ die Übersetzung im Feld @code{texidoc@var{LANG}} enthalten. Wird nun aufgerufen, so wird der Inhalt der Datei @file{foo.texidoc@var{LANG}} anstelle von @file{foo.texidoc} eingefügt. -@item lilyquote -(Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt wie die -@code{quote} Option, außer dass nur das Musikfragment (und natürlich optional der -gesamte LilyPond-Code bei Benutzung von @code{verbatim}) in den Zitatblock -eingefügt wird. Dies ist nützlich, wenn Sie ein Musikfragment zitieren möchten, -nicht aber dessen @code{texidoc} Dokumentationsblock. - @item doctitle (Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt ähnlich wie die @code{texidoc} Option: Wenn @command{lilypond} mit der Option @@ -895,9 +962,21 @@ Der Aufruf von @command{dvips} kann einige Warnungen über fehlende Schriftarten ausgeben. Auch dies ist in Ordnung und kann ignoriert werden. Wenn Sie in der @LaTeX{}-Datei das Papierformat auf Querformat eingestellt -haben, vergessen Sie nicht die @code{-t landscape}-Option beim +haben, vergessen Sie nicht die @option{-t landscape}-Option beim Aufruf von @command{dvips}. +@knownissues +Der Befehl @code{\pageBreak} funktioniert nicht innerhalb einer +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}}-Umgebung. + +Auch viele Variablen der @code{\paper}-Umgebung funktionieren nicht +innerhalb einer @code{\begin@{lilypond@} @dots{} \end@{lilypond@}}-Umgebung. +Benutzen Sie @code{\newcommand} mit @code{\betweenLilyPondSystem}: + +@example +\newcommand@{\betweenLilyPondSystem@}[1]@{\vspace@{36mm@}\linebreak@} +@end example + @subsubheading Texinfo @@ -956,9 +1035,17 @@ auch in allen Include-Pfaden nach bereits erstellten Grafiken für die Musikfragmente. Wird das aktuelle Fragment gefunden und hat sich seit der letzten Erstellung nicht geändert, wird es nicht erneut erzeugt. Bei manchen der Programme zur Weiterverarbeitung wie etwa @command{makeinfo} oder -@command{latex} muss dieselbe @code{-I @var{Pfad}} Option angegeben werden, +@command{latex} muss dieselbe @option{-I @var{Pfad}} Option angegeben werden, damit das entsprechende Programm die Grafiken ebenso findet. +@item -l @var{Logstufe} +@itemx --loglevel=@var{Logstufe} +Passt die Ausführlichkeit der Ausgabe entsprechend @var{Logstufe} an. +Mögliche Werte sind @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (Standard) und @code{DEBUG}. Wenn diese Option nicht +genutzt wird und die Umgebungsvariable @code{LILYPOND_BOOK_LOGLEVEL} +definiert ist, wird ihr Wert als Logstufe eingesetzt. + @item -o @var{Verzeichnis} @itemx --output=@var{Verzeichnis} Erzeugt die Ausgabedateien in @var{Verzeichnis}. Der Aufruf von @@ -986,11 +1073,18 @@ Grafiken. @itemx --lily-output-dir=@var{Verzeichnis} Schreibt @file{lily-XXX} Dateien nach @var{Verzeichnis} und erzeugt -im mit @code{--output} angegebenen Verzeichnis Verknüpfungen darauf. +im mit @option{--output} angegebenen Verzeichnis Verknüpfungen darauf. Diese Option ist nützlich, um Zeit zu sparen, wenn Dokumente in verschiedenen Verzeichnissen viele identische Musikfragmente enthalten. +@itemx --lily-loglevel=@var{Logstufe} +Passt die Ausführlichkeit der Ausgabe entsprechend @var{Logstufe} an. +Mögliche Werte sind @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (Standard) und @code{DEBUG}. Wenn diese Option nicht +genutzt wird und die Umgebungsvariable @code{LILYPOND_LOGLEVEL} +definiert ist, wird ihr Wert als Logstufe eingesetzt. + @itemx --info-images-dir=@var{Verzeichnis} Formatiert die Texinfo-Ausgabe dergestalt, dass Info in @var{Verzeichnis} nach den Grafiken zu den Musikfragmenten sucht. @@ -1012,19 +1106,29 @@ wie etwa Taktzahlen und Bezeichnungen der Instrumente. Diese Option verkürzt die Notenzeile und verschiebt sie um denselben Betrag nach rechts. - @item -P @var{Befehl} @itemx --process=@var{Befehl} Verarbeitet LilyPond-Fragmente mit @var{Befehl} anstelle des -Standardbefehls @code{lilypond}. @code{--filter} und @code{--process} -können nicht mit dieser Option benutzt werden. +Standardbefehls @code{lilypond}. @option{--filter} und @option{--process} +können mit @code{lilypond-book} nicht gleichzeitig benutzt werden. @item --pdf Erzeugt PDF-Dateien mit PDF@LaTeX{}. +@item --redirect-lilypond-output +Standardmäßig wird die Ausgabe auf der Kommandozeile ausgegeben. +Diese Option leitet die Ausgabe in eine Log-Datei im selben Verzeichnis +wie die Quelldatei um. + +@itemx --use-source-file-names +Schreibe Schnipsel-Ausgabedateien mit den gleichen Basisnamen wie die +Quelldateien. Diese Option funktioniert mit Schnipseln, die mit +@code{lilypondfile} eingfügt wurden und auch nur, wenn die Verzeichnisse +@option{--output-dir} und @option{--lily-output-dir} unterschiedlich sind. + @item -V @itemx --verbose -Gibt ausführliche informative Meldungen aus. +Gibt ausführliche informative Meldungen aus. Äquivalent zu @option{--loglevel=DEBUG}. @item -v @itemx --version @@ -1071,7 +1175,7 @@ Eingabedatei: Wird dieselbe Erweiterung für die Eingabedatei wie für die Ausgabedatei benutzt und befindet sich die Eingabedatei im aktuellen Arbeitsverzeichnis -von @command{lilypond-book}, muss die @code{--output} Option für +von @command{lilypond-book}, muss die @option{--output} Option für @command{lilypond-book} benutzt werden. Anderenfalls würde @command{lilypond-book} ja die Eingabedatei überschreiben, weshalb das Programm in diesem Fall mit einer Fehlermeldung wie @qq{Fehler: Ausgabe @@ -1234,7 +1338,7 @@ Um den Text flexibler behandeln zu können, bevorzugen manche Benutzer es, das Inhaltsverzeichnis aus LilyPond zu exportieren und dann mit @LaTeX{} einzulesen. -@subsubheading Das Ihaltsverzeichnis (ToC) aus LilyPond exportieren +@subsubheading Das Inhaltsverzeichnis (ToC) aus LilyPond exportieren Hier wird angenommen, dass in Ihrer Partitur mehrere Sätze vorkommen, die sich alle in der selben LilyPond-Datei befinden. diff --git a/Documentation/de/usage/running.itely b/Documentation/de/usage/running.itely index 1972deb33d..9222cad644 100644 --- a/Documentation/de/usage/running.itely +++ b/Documentation/de/usage/running.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Reinhold Kainhofer, Till Paala @c Translation checkers: Till Paala @@ -62,13 +62,13 @@ Internet, wenn Sie mit der Kommandozeile nicht vertraut sind. @menu * lilypond aufrufen:: -* Optionen von lilypond auf der Kommandozeile:: +* Optionen auf der Kommandozeile für lilypond:: * Umgebungsvariablen:: * LilyPond in chroot-Kerker:: @end menu @node lilypond aufrufen -@subsection @command{lilypond} aufrufen +@unnumberedsubsec @command{lilypond} aufrufen @translationof Invoking lilypond @cindex @command{lilypond} aufrufen @@ -140,8 +140,8 @@ reine Verwaltungsprogramme handelt, die nichts mit LilyPond zu tun haben. -@node Optionen von lilypond auf der Kommandozeile -@subsection Optionen auf der Kommandozeile für @command{lilypond} +@node Optionen auf der Kommandozeile für lilypond +@unnumberedsubsec Optionen auf der Kommandozeile für @command{lilypond} @translationof Command line options for lilypond Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: @@ -153,36 +153,6 @@ Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: @table @code -@item -e,--evaluate=@var{expr} -Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien -gelesen und interpretiert werden. -Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke -werden nacheinander ausgewertet. - -Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der -Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der -Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert: - -@example -lilypond -e '(define-public a 42)' -@end example - -@noindent -Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch geladen werden, bevor die Definition von @var{a} verfügbar ist: - -@example -#(use-modules (guile-user)) -@end example - - -@item -f,--format=@var{Format} -Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind -@code{svg}, @code{ps}, @code{pdf} und @code{png}. - -Beispiel: @code{lilypond -fpng @var{Dateiname}.ly} - - - @item -d,--define-default=@var{Variable}=@var{Wert} Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert @var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt. @@ -198,17 +168,18 @@ Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen @noindent dasselbe wie @example --dpoint-and-click='#f' +-dpoint-and-click=#f @end example -Hier sind ein paar interessante Optionen: +Folgende Optionen werden unterstützt: @cindex Hilfe, Kommandozeile -@table @samp +@table @code + @item help -Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren @code{-d} -Optionen. +Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren +@option{-d}-Optionen. @cindex Papierformat, Kommandozeile @@ -229,20 +200,20 @@ Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslas Vertraut der @file{.ly} Datei nicht. Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt -eine die Optionen @code{--safe} oder @code{--jail} angegeben werden. -Die @code{--safe} Option verhindert, dass in der @file{.ly}-Datei angegebener +eine die Optionen @option{--safe} oder @option{--jail} angegeben werden. +Die @option{--safe} Option verhindert, dass in der @file{.ly}-Datei angegebener Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel: @quotation @verbatim #(system "rm -rf /") { - c4^#(ly:export (ly:gulp-file "/etc/passwd")) + c4^$(ly:gulp-file "/etc/passwd") } @end verbatim @end quotation -Mit der @code{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen +Mit der @option{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in @@ -253,7 +224,7 @@ Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle. Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme zu exportieren. -@code{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren +@option{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen @@ -261,7 +232,7 @@ Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU- als auch in der Speichernutzung limitiert werden. Der sichere Modus verhindert auch, dass zahlreiche nützliche -Musikfragmente von LilyPond verarbeitet werden. Die @code{--jail} Option ist +Musikfragmente von LilyPond verarbeitet werden. Die @option{--jail}-Option ist eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur Einrichtung. @@ -311,13 +282,11 @@ Betrachtungsprogrammen kompatibel sein. @cindex Scheme-dump @item scm -gibt die rohen Scheme-basierenden Zeichenbefehle aus, wie sie intern von -LilyPond benutzt werden. - -@cindex Scheme dump +gibt die rohen Scheme-basierenden Zeichenbefehle aus (@qq{Scheme-dump}), +wie sie intern von LilyPond benutzt werden. @item null -Keine Partitur wird ausgegeben, hat gleichen Effekt wie @code{-dno-print-pages}. +Keine Partitur wird ausgegeben, hat gleichen Effekt wie @option{-dno-print-pages}. @end table @@ -326,18 +295,66 @@ Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly} @cindex Vorschau @item preview -Erzeugt eine Ausgabedatei, die nur die Titelzeilen und das erste System +Unterstützt von allen Backendes: @code{pdf}, @code{png}, @code{ps}, +@code{eps} und @code{svg} aber nicht @code{scm} und erzeugt eine +Ausgabedatei, die nur die Titelzeilen und das erste System enthält. Wenn @code{\bookpart}-Umgebungen benutzt werden, erscheinen die Titel und ersten Systeme jedes @code{\bookpart}-Abschnitts in der Datei. -Die Backends @code{ps}, @code{eps} und @code{svg} unterstützen diese Option. + +Zusätzlich wird eine Datei in der Form @code{meineDatei.preview.Endung} +erstellt, um das zu vermeiden, können die zusätzlichen Optionen +@option{-dprint-pages} oder @option{-dno-print-pages} je nach gewünschtem +Ergebnis gewählt werden. + +@item gui +Stiller Durchlauf, alle Ausgabe wird in eine Log-Datei umgeleitet. + +Bemerkung für Windows-Benutzer: Standardmäßig schreibt @code{lilypond.exe} +alle Fortschrittinformation in die Kommandozeile, während +@code{lilypond-windows.exe} keine Fortschrittinformation angibt und +sofort die Eingabeaufforderung anzeigt. Die Option @option{-dgui} kann +in diesem Fall eingesetzt werden, um die Ausgabe in eine Log-Datei umzuleiten. @item print-pages -Erzeugt vollständige Seiten (Standardeinstellung). @code{-dno-print-pages} -ist in Verbindung mit @code{-dpreview} nützlich. +Erzeugt vollständige Seiten (Standardeinstellung). @option{-dno-print-pages} +ist in Verbindung mit @option{-dpreview} nützlich. @end table +@cindex Scheme, Auswertung von Ausdrücken +@cindex Auswertung von Ausdrücken, Scheme +@item -e,--evaluate=@var{expr} +Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien +gelesen und interpretiert werden. +Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke +werden nacheinander ausgewertet. + +Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der +Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der +Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert: + +@example +lilypond -e '(define-public a 42)' +@end example + +@noindent +Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch geladen werden, bevor die Definition von @var{a} verfügbar ist: + +@example +#(use-modules (guile-user)) +@end example + +@warning{Windows-Benutzer müssen doppelte anstelle der einfachen +Anführungsstriche einsetzen.} + +@cindex Ausgabeformat + +@item -f,--format=@var{Format} +Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind +@code{svg}, @code{ps}, @code{pdf} und @code{png}. + +Beispiel: @code{lilypond -fpng @var{Dateiname}.ly} @item -h,--help Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. @@ -346,7 +363,11 @@ Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei @file{Dateiname.@var{FELD}} aus. -@item --include, -I=@var{Verzeichnis} +@item -i,--init=@var{Initialisierungsdatei} +Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der +Standardwert ist @file{init.ly}. + +@item -I, --include=@var{Verzeichnis} Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu. @cindex Dateisuche @@ -356,46 +377,13 @@ Mehrere -I-Optionen können angegeben werden. Die Suche beginnt mit dem ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird. -@item -i,--init=@var{Initialisierungsdatei} -Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der -Standardwert ist @file{init.ly}. - -@cindex Verzeichnis, Ausgabe speichern in -@cindex Ausgabedateiname - -@item -o,--output=@var{DATEI} -Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei -@var{DATEI}. Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien -in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei -benutzt wird. Die entsprechende Dateinamenserweiterung wird angehängt (z.B. -@code{.pdf} für pdf). - -@cindex PostScript-Ausgabe - -@item --ps -Erzeugt PostScript. - -@cindex PNG-Ausgabe -@cindex Portable Network Graphics (PNG) - -@item --png -Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option -impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt -werden durch -@example --dresolution=110 -@end example - -@cindex PDF-Ausgabe -@cindex Portable Document Format (PDF) - -@item --pdf -Erzeugt PDF-Dateien. Dies impliziert @code{--ps}. +@cindex Kerker, Programm ausführen +@cindex Jail, Programm ausführen @item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis} Führt @command{lilypond} in einem chroot-Jail aus. -Die @code{--jail} Option ist eine flexiblere Alternative zu @code{--safe}, wenn +Die @option{--jail} Option ist eine flexiblere Alternative zu @option{--safe}, wenn LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien von Dritten automatisch verarbeitet werden. @@ -405,7 +393,7 @@ tatsächliche Kompilierung der @file{.ly}-Datei beginnt. Der Benutzer und die Gr werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt. Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht -möglich ist, aus dem Jail auszubrechen. Damit @code{--jail} funktioniert, muss +möglich ist, aus dem Jail auszubrechen. Damit @option{--jail} funktioniert, muss @command{lilypond} allerdings als root ausgeführt werden, was normalerweise auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann. @@ -415,6 +403,7 @@ Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden Punkten: @table @asis + @item Erstellung eines getrennten Dateisystems Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid} @@ -451,8 +440,75 @@ sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher. + @end table +@cindex Logstufe +@cindex Ausgabe, Ausführlichkeit + +@item -l,--loglevel=@var{Logstufe} +Passt die Ausführlichkeit der Ausgabe auf der Kommandozeile entsprechend +@var{Logstufe} an. Mögliche Werte sind: + +@table @code + +@item NONE +Keine Ausgabe, nicht einmal Fehlermeldungen. + +@item ERROR +Nur Fehlermeldungen, keine Warnungen oder Fortschrittsmeldungen. + +@item WARN +Warnungen und Fehlermeldungen, keine Fortschrittsmeldungen. + +@item BASIC_PROGRESS +Grundlegende Fortschrittsmeldungen (Erfolg), Warnungen und Fehler. + +@item PROGRESS +Alle Fortschrittsmeldungen, Warnungen und Fehler. + +@item INFO (Standard) +Fortschrittmeldungen, Warnungen, Fehlermeldungen und weiter +Information über die Ausführung. + +@item DEBUG +Alle möglichen Meldungen, die auch mit der Fehlersuche (Debug) zu tun +haben können. + +@end table + +@cindex Verzeichnis, Ausgabe speichern in +@cindex Ausgabedateiname +@cindex Dateiname der Ausgabe bestimmen + +@item -o,--output=@var{DATEI} oder @var{ORDNER} +Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei +@var{DATEI}. Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien +in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei +benutzt wird. Die entsprechende Dateinamenserweiterung wird angehängt (z.B. +@code{.pdf} für pdf). + +@cindex PostScript-Ausgabe + +@item --ps +Erzeugt PostScript. + +@cindex PNG-Ausgabe +@cindex Portable Network Graphics (PNG) + +@item --png +Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option +impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt +werden durch +@example +-dresolution=110 +@end example + +@cindex PDF-Ausgabe +@cindex Portable Document Format (PDF) + +@item --pdf +Erzeugt PDF-Dateien. Dies impliziert @code{--ps}. @item -v,--version Gibt die Versionsnummer aus. @@ -464,14 +520,16 @@ aller gelesenen Dateien sowie Informationen über die Laufzeit. @item -w,--warranty Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht @strong{KEINERLEI GARANTIE}!) + @end table @node Umgebungsvariablen -@subsection Umgebungsvariablen +@unnumberedsubsec Umgebungsvariablen @translationof Environment variables @cindex LANG +@cindex LILYPOND_LOGLEVEL @cindex LILYPOND_DATADIR @cindex Variablen, Umgebungs- @cindex Umgebungsvariablen @@ -486,6 +544,11 @@ Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten. @item LANG Gibt die Sprache an, in der Warnungen und Fehlermeldungen ausgegeben werden. +@item LILYPOND_LOGLEVEL +Die standardmäßige Logstufe. Wenn LilyPond ohne eine explizite +Logstufe aufterufen wird (d. h. die Kommandozeilenoption @option{--loglevel} +nicht eingesetzt wird), wird dieser Wert benutzt. + @item LILYPOND_GC_YIELD Eine Variable (von 1 bis 100), die die Speicherverwaltung regelt. Bei niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher @@ -651,7 +714,7 @@ die Schriftarten nicht korrekt installiert. @cindex Scheme Fehler Fehler, die während der Ausführung von Scheme-Code auftreten, werden vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben. -Wenn Sie LilyPond mit der @code{--verbose} Option (auch @code{-V}) +Wenn Sie LilyPond mit der @option{--verbose} Option (auch @code{-V}) ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die aufgerufenen Funktionen zur Zeit des Fehlers angibt. @@ -667,6 +730,7 @@ Ausgabe davon beeinträchtigt wird. Dies bezeichnet einen ernsten Programmierfehler, der das Programm zum Absturz gebracht hat. Solche Fehler werden als kritisch angesehen. Falls daher einer auftritt, senden Sie bitte einen Bug-Report! + @end table @cindex Fehlermeldung, Format diff --git a/Documentation/de/usage/setup.itely b/Documentation/de/usage/setup.itely index a1c3b039f4..6da4b9b821 100644 --- a/Documentation/de/usage/setup.itely +++ b/Documentation/de/usage/setup.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Till Paala, Reinhold Kainhofer diff --git a/Documentation/de/usage/suggestions.itely b/Documentation/de/usage/suggestions.itely index f1a041833c..ed6773a100 100644 --- a/Documentation/de/usage/suggestions.itely +++ b/Documentation/de/usage/suggestions.itely @@ -1,18 +1,18 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0 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" +@c \version "2.16.0" @node Vorschläge zum Schreiben von LilyPond-Eingabe-Dateien @chapter Vorschläge zum Schreiben von LilyPond-Eingabe-Dateien -@translationof Suggestions for writing LilyPond input files +@translationof Suggestions for writing files Jetzt sind Sie so weit, größere Stücke mit LilyPond zu schreiben -- nicht nur die kleinen Beispiele aus der Übung, sondern ganze Stücke. @@ -45,7 +45,7 @@ strukturiert werden, damit sie einfacher aktualisierbar sind. * Allgemeine Vorschläge:: * Das Kopieren von bereits vorhandener Musik:: * Große Projekte:: -* Problemlösung:: +* Fehlersuche:: * Make und Makefiles:: @end menu @@ -60,7 +60,7 @@ Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können: @item @strong{Schreiben Sie immer mit @code{\version} die Versionsnummer in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer -@code{\version "2.14.0"} eingetragen ist. Es empfiehlt sich, in alle +@code{\version "2.16.0"} eingetragen ist. Es empfiehlt sich, in alle Dateien, unabhängig von ihrer Größe, den @code{\version}-Befehl einzufügen. Persönliche Erfahrung hat gezeigt, dass es ziemlich frustrierend sein kann zu erinnern, welche Programmversion man etwa @@ -352,7 +352,7 @@ sich im @file{Notes}-Verzeichnis befinden: @example %%% Kopfzeile der Datei "symphony-cello.ly" -\include ../definitions.ily +\include ../symphonyDefs.ily \include ../Notes/cello.ily @end example diff --git a/Documentation/de/usage/updating.itely b/Documentation/de/usage/updating.itely index 0d81dca292..69bfb2a026 100644 --- a/Documentation/de/usage/updating.itely +++ b/Documentation/de/usage/updating.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 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" +@c \version "2.16.0" @c Translators: Till Paala @@ -138,7 +138,7 @@ Die Konvertierung direkt am Original vornehmen, sodass es direkt verändert wird Stellt die Versionsnummer ein, ab welcher die Konvertierung begonnen werden soll. Wenn die Option nicht benutzt wird, rät @command{convert-ly} die Versionsnummer anhand des @code{\version}-Eintrags in der Datei. Beispielsweise -@code{--from=2.10.25} +@option{--from=2.10.25} @item -n,--no-version Normalerweise fügt @command{convert-ly} einen @code{\version}-Eintrag @@ -149,10 +149,16 @@ Zeige alle bekannten Konversionen und beende. @item --to=@var{bis-Versionsnummer} Die Zielversion der Konversion setzen. Standard ist die letzte mögliche -Version, die das Programm beherrscht. Beispielsweise @code{--to=2.12.2} +Version, die das Programm beherrscht. Beispielsweise @option{--to=2.12.2} @item -h, --help Zeigt Hilfe zur Benutzung. + +@item -l @var{Logstufe}, --loglevel=@var{Logstufe} +Passt die Ausführlichkeit der Ausgabe entsprechend @var{Logstufe} an. +Mögliche Werte sind @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (Standard) und @code{DEBUG}. + @end table Um LilyPond-Schnipsel in texinfo-Dateien zu aktualisieren, kann diff --git a/Documentation/de/web.texi b/Documentation/de/web.texi index d6fcc28f77..3f69860781 100644 --- a/Documentation/de/web.texi +++ b/Documentation/de/web.texi @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 3c814eb917c15f6f0d64f64f58046dd7b119e359 + Translation of GIT committish: 233fb6a8b3b6e31de1841641dbbd4c4f43423151 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -17,7 +17,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -37,7 +37,7 @@ @end ignore @copying -Copyright @copyright{} 2009--2011 by the authors. +Copyright @copyright{} 2009--2012 by the authors. @c next line is necessary for broken pre-4.13 texinfo's @c install-info, so leave it there until we officially @@ -148,6 +148,44 @@ Lesen Sie mehr in der @ref{Einleitung}! @ifclear web_version @c do nothing @end ifclear +@ifset web_version + @c make the box: +@divId{wildCardBox} +@subheading Neuigkeiten +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html + @ifset web_version @c make the box: @divId{latestVersion} @@ -163,9 +201,9 @@ Lesen Sie mehr in der @ref{Einleitung}! @subsubheading Entwicklerversion -@ref{Gemeinschaft, @versionDevel herunterladen} +@ref{Entwicklung, @versionDevel herunterladen} -@ref{Gemeinschaft, @versionDevel Handbücher} +@ref{Entwicklung, @versionDevel Handbücher} @divEnd @end ifset @@ -219,30 +257,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @end macro @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (aufgeteilt HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (geteiltes HTML),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (großes HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (großes HTML),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro diff --git a/Documentation/de/web/community.itexi b/Documentation/de/web/community.itexi index e05836d39c..eaa8f80c41 100644 --- a/Documentation/de/web/community.itexi +++ b/Documentation/de/web/community.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 233fb6a8b3b6e31de1841641dbbd4c4f43423151 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -45,9 +45,15 @@ wenn man über LilyPond diskutieren will. @item @ref{Helfen Sie uns}: Ihre Mitarbeit wird benötigt. +@item +@ref{Sponsoren}: finanzielle Unterstützung. + @item @ref{Entwicklung}: für Mitarbeiter und Tester. +@item +@ref{GSoC}: Liste der Projekte für den Google Summer of Code. + @item @ref{Autoren}: die Menschen, die LilyPond zu dem gemacht haben, was es jetzt ist. @@ -67,6 +73,9 @@ uns geschrieben wurde. @item @ref{Ältere Neuigkeiten}: ein Archiv. +@item +@ref{Abstellkammer}: Ankündigungen und Listen der Veränderungn von vorherigen Versionen. + @end itemize @divEnd @@ -79,10 +88,13 @@ uns geschrieben wurde. * Minimalbeispiele:: * Fehlerberichte:: * Helfen Sie uns:: +* Sponsoren:: * Entwicklung:: +* GSoC:: * Autoren:: * Veröffentlichungen:: * Ältere Neuigkeiten:: +* Abstellkammer:: @end menu @divEnd @@ -272,6 +284,14 @@ lesen Sie bitte unsere Richtlinien für @ref{Fehlerberichte}.} @divEnd +@divClass{column-right-bottom} +@subheading Private E-Mails + +Private Angelegenheiten sollten an Graham Percival +(den Projektmanager) gerichtet werden, der dann die +Betroffen einbezieht. + +@divEnd @node Minimalbeispiele @@ -281,7 +301,7 @@ lesen Sie bitte unsere Richtlinien für @ref{Fehlerberichte}.} @divClass{column-center-top} @subheading Was sind @qq{Minimalbeispiele}? -Ein kleines Beispiel ist ein Beispiel, von dem nichts mehr entfernt +Ein Minimalbeispiel ist ein Beispiel, von dem @strong{nichts} mehr entfernt werden kann. @divEnd @@ -296,13 +316,13 @@ Je einfacher ein Beispiel ist, um so schneller können mögliche Hilfeleistende es verstehen und Ihnen helfen. @item -Ein einfaches Beispiel zeigt, dass Sie sich zuerst Mühe gegeben +Ein kleines Beispiel zeigt, dass Sie sich zuerst Mühe gegeben haben, das Problem selber zu lösen. Wenn Leute große Abschnitte an Code einschicken, sieht es so aus, dass sie sich auch nicht interessieren, ob ihnen geholfen wird oder nicht. @item -Ein Minimalbeispiel zu erstellen zwingt Sie dazu zu verstehen, +Ein Minimalbeispiel zu erstellen hilft Ihnen zu verstehen, was vorgeht. Viele falsche Problemberichte können vermieden werden, wenn man versucht, erst einmal ein Minimalbeispiel zu erstellen. Wenn Sie einen @qq{Bug} in Ihrem Minimalbeispiel nicht reproduzieren @@ -316,18 +336,18 @@ LilyPond, nicht jedoch ein Fehler. @divClass{column-right-bottom} -@subheading Wie soll ich sie erstellen? +@subheading Wie werden sie erstellt? @divClass{keep-bullets} @itemize @item -Immer die \version -Nummer einfügen. +Immer die @code{\version}-Nummer einfügen. @item Machen Sie es klein! Beispiele zur Platzverteilung oder dem Seitenlayout können viele Notentakte erfordern, aber die meisten -Probleme können in einem einzigen Takt gezeigt werden. +Probleme können in weniger als einem einzigen Takt gezeigt werden. @item Wenn Sie versuchen, ein Beispiel zu erstellen, versuchen Sie @@ -343,11 +363,54 @@ Vermeiden Sie komplizierte Noten, Tonarten, Schlüssel oder Taktarten, es sei de Benutzen Sie nicht @code{\override} oder @code{\set}, es sei denn, der Fehler zeigt sich im Zusammenhang mit diesen Befehlen. +@item +Sie können auch zusätzlich ein Bild anhängen, welches die gewünschte graphische +Darstellung zeigt. + @end itemize @divEnd @divEnd +@divClass{column-center-bottom} +@subheading Wie klein sollten sie sein? +@c How tiny should they be? + +Ist der Code unten ein Minimalbeispiel? + +@example +\version "2.14.1" +\include "english.ly" + +\score @{ + \new Staff @{ + \key d \major + \numericTimeSignature + \time 2/4 + 16 8. + %% Here: the tie on the D's looks funny + %% Too tall? Left-hand endpoint is not aligned with the B tie? + ~ + 8 [ ] + @} +@} +@end example + +Das ist zwar kein langer Code, aber ein wirkliches Minimalbeispiel ist +folgendes: + +@example +\version "2.14.1" +@{ + % middle tie looks funny here: + 8. ~ 8 +@} +@end example + +Wenige Minimalbeispiele brauchen mehr als 10 Zeilen, +meistens kann das Problem mit vier Zeilen gezeigt werden! + +@divEnd @@ -355,12 +418,15 @@ der Fehler zeigt sich im Zusammenhang mit diesen Befehlen. @unnumberedsec Fehlerberichte @translationof Bug reports +@divClass{heading-center} +Wenn Ihre Datei zu einem Programmabsturz oder falschem Notensatz führt, +handelt es sich um einen Fehler. +@divEnd + @divClass{column-center-top} @subheading 1. Schritt: Bekannte Fehler -Wenn Sie Eingabecode haben, der einen Programmabsturz oder -fehlerhaften Notensatz erzeugt, dann ist das ein Fehler. Es gibt -eine Liste der bekannten Fehler beim Google bug tracker: +Vielleicht ist der Fehler schon bekannt. Prüfen Sie hier: @example @uref{http://code.google.com/p/lilypond/issues/list} @@ -382,7 +448,7 @@ erstellen. @warning{Wir akzeptieren Fehlerberichte nur als @ref{Minimalbeispiele}. Wir haben sehr begrenzte Ressourcen, -um Fehlerberichte zu bearbeiten, weshalb jedes nicht-Minimalbeispiel +weshalb jedes nicht-Minimalbeispiel zurückgewiesen wird. Fast jeder Fehler kann mit vier oder sogar weniger Noten demonstriert werden!} @@ -443,12 +509,14 @@ Fehlerberichtes hinzu. @subheading 4. Schritt: Auf Antwort warten Wenn Ihr Fehlerbericht an die Liste versandt wurde, untersucht -unser Fehlerbeseitiger (engl. bug squad) den Bericht. Warten Sie -bitte 24 Stunden, da uns nur eine geringe Zahl an Helfern zur Verfügung stehen. Sie werden eventuell nach mehr Information gefragt oder -der Bericht wird zum Tracker hinzugefügt und Sie werden informiert, -welche Nummer er bekommen hat. - -Sie können den Fehler so markieren, dass Sie immer eine E-Mail +unser Fehlerbeseitiger (engl. bug squad) den Bericht. Sie werden +eventuell nach mehr Information gefragt. Sie werden informiert, +wann der Bericht um Tracker hinzugefüt wird. Warten Sie +bitte vier Tage, da uns nur eine geringe Zahl an Helfern zur Verfügung stehen. + +Wenn ein Fehler dem Tracker hinzugefügt wurde, können Sie ihn kommentieren, +um mehr Information hinzuzufügen. Sie können den Fehler auch markieren, +sodass Sie immer eine E-Mail erhalten, wenn Aktivität für diesen Fehler vorkommt. Hierzu müssen Sie einen Google-Account haben. @divEnd @@ -477,17 +545,103 @@ demonstrieren. @divClass{column-left-top} @divClass{keep-bullets} -@helpusTasks +@helpusSimple @divEnd @divEnd @divClass{column-right-top} -@helpusProjects +@helpusAdvanced @divEnd +@node Sponsoren +@unnumberedsec Sponsoren +@translationof Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading Materielle Hilfe + +In der Vergangenheit + +@itemize +@item haben einige Benutzers für neue Eigenschaften bezahlt +@item haben sich einige Entwickler einstellen lassen, um neue Eigenschaften +hinzuzufügen +@end itemize + +Das LilyPond-Projekt kann derartige Verabredungen nicht koordinieren, +wir wollen deshalb weder dazu aufrufen noch davon abraten. Jegliche +Abkommen zwischen privaten Personen beziehen sich nur auf diese +Personen, ncht auf das LilyPond-Projekt. + +@divEnd + +@divClass{column-right-top} +@subheading Richtlinien + +Jeder Benutzer, der Geld gegen Arbeit eintauschen will, sollte +Folgendes im Auge behalten: + +@itemize +@item +LilyPond-Entwickler können ihre Angebote auf den E-Mail-Listen +von Zeit zu Zeit bewerben. + +@item +Jegliche Abkommen zwischen privaten Personen sollten die +normalen Vorsichtsmaßnahmen beinhalten: wer bezahlt, wieviel +bezahlt werden soll, mit welcher Methoden und nach welchen +Bedingungen. Wir empfehlen, dass alle Unklarheiten bezüglich +dieser Punkte geklärt werden sollten, bevor die Arbeit beginng. + +@end itemize + +@divEnd + +@divClass{column-center-bottom} +@subheading Interessierte Entwickler + +Hier ist eine Liste der Leute, die sich Dienstleistungen +sponsoren lassen. Die Menge an Arbeit, die unterschiedliche +Entwickler im Laufe des Jahres vollbringen, kann stark +schwanken. Wir können nicht garantieren, dass die Liste +aktuell ist oder die Leute auf der Liste über bestimmte +Fähigkeiten verfügen. Das einzige Kriterium ist, dass +die entsprechende Person um Aufnahme in die Liste gebeten +hat. + +Ein Blick auf die erbrachten Leistungen im git-Repositorium +ist eine gute Art sich über Aktivität und Erfahrenheit von +Entwicklern Klarheit zu verschaffen. Statistiken bis +@versionDevel{}: + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, gesamter Zeitraum} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, das letzte Jahr} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, die letzten drei Monate} +@end multitable + +Interessirte Entwickler: +@table @asis +@item @email{dak@@gnu.org, David Kastrup} +Spenden sind notwendig, damit ich meine aktuelle Vollzeitbeschäftigung +an LilyPond aufrechterhalten kann. Ich konzentriere mich auf das +Schnittstellendesign für Benutzer und Programmieren, auf Kohäränz, +Implementation, Vereinfachung, Dokumentation und Fehlerbeseitigung. + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + + @node Entwicklung @unnumberedsec Entwicklung @translationof Development @@ -668,11 +822,11 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @docLinkPdf{Lernen,learning,@manualDevelLearningPdf-de} @item -@docLinkSplit{Glossar,music-glossary,@manualDevelGlossarySplit-de} +@docLinkSplit{Glossar,music-glossary,@manualDevelGlossarySplit} @tab -@docLinkBig{Glossar,music-glossary,@manualDevelGlossaryBig-de} +@docLinkBig{Glossar,music-glossary,@manualDevelGlossaryBig} @tab -@docLinkPdf{Glossar,music-glossary,@manualDevelGlossaryPdf-de} +@docLinkPdf{Glossar,music-glossary,@manualDevelGlossaryPdf} @item @docLinkSplit{Aufsatz,essay,@manualDevelEssaySplit-de} @@ -698,11 +852,11 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @docLinkPdf{Benutzung,usage,@manualDevelUsagePdf-de} @item -@docLinkSplit{Schnipsel,snippets,@manualDevelSnippetsSplit-de} +@docLinkSplit{Schnipsel,snippets,@manualDevelSnippetsSplit} @tab -@docLinkBig{Schnipsel,snippets,@manualDevelSnippetsBig-de} +@docLinkBig{Schnipsel,snippets,@manualDevelSnippetsBig} @tab -@docLinkPdf{Schnipsel,snippets,@manualDevelSnippetsPdf-de} +@docLinkPdf{Schnipsel,snippets,@manualDevelSnippetsPdf} @headitem Seltenere Handbücher @@ -715,11 +869,11 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @docLinkPdf{Webseite,web,@manualDevelWebPdf-de} @item -@docLinkSplit{Veränderungen,changes,@manualDevelChangesSplit-de} +@docLinkSplit{Veränderungen,changes,@manualDevelChangesSplit} @tab -@docLinkBig{Veränderungen,changes,@manualDevelChangesBig-de} +@docLinkBig{Veränderungen,changes,@manualDevelChangesBig} @tab -@docLinkPdf{Veränderungen,changes,@manualDevelChangesPdf-de} +@docLinkPdf{Veränderungen,changes,@manualDevelChangesPdf} @item @docLinkSplit{Erweitern,extending,@manualDevelExtendingSplit-de} @@ -729,11 +883,11 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @docLinkPdf{Erweitern,extending,@manualDevelExtendingPdf-de} @item -@docLinkSplit{Interna,internals,@manualDevelInternalsSplit-de} +@docLinkSplit{Interna,internals,@manualDevelInternalsSplit} @tab -@docLinkBig{Interna,internals,@manualDevelInternalsBig-de} +@docLinkBig{Interna,internals,@manualDevelInternalsBig} @tab -@docLinkPdf{Interna,internals,@manualDevelInternalsPdf-de} +@docLinkPdf{Interna,internals,@manualDevelInternalsPdf} @ifset web_version @headitem Zum Herunterladen @@ -748,6 +902,204 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @divEnd +@node GSoC +@unnumberedsec GSoC (Google Summer of Code) +@translationof GSoC + +@divClass{column-center-top} +@subheading Was ist Google Summer of Code? + +Der @uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, +GSoC-Webseite} zufolge ist Google Summer of Code ein globales Programm, +das Studenten Stipendien offeriert, um Code für Open-Source-Projekte zu schreiben. +Google arbeitet mit der Open-Source-Gemeinschaft zusammen und hat unterstützenswerte +Projekt für den nächsten Sommer gefunden. + +Das LilyPond-Team hat beschlossen, dass sich hier eine ausgezeichnete Möglichkeit +bietet neue Mitarbeiter zu finden, Studenten, die sich schon an LilyPond beteiligen, +weiter einzubinden und -- das Wichtigste -- aufregenden Code zur freien Benutzung +für alle zu schreiben. + +Wir nehmen an GSoC als Teil des GNU-Projekts teil. Siehe auch +@uref{http://www.gnu.org/software/soc-projects/guidelines.html, +GNU GSoC-Webseite} zu Informationen über die Teilnahme. + +@divEnd + +@divClass{column-center-bottom} +@subheading Unsere Ideenliste + +Unten befindet sich eine Liste mit empfohlenen Projekten für GSoC-Stundenten. +Wenn Sie kein Projekt finden, das Ihnen passt, schlagen Sie einfach ein eigenes +vor! Es ist auch möglich, ein Projekt einzuschränken, wenn Sie das Gefühl haben, +es ist zu umfangreich. + +Wir erfordern, dass jeder Student grundlegende Kenntnis von @code{git} hat und +empfehlen, dass alle, die sich für die Projekte (außer dem letzten) interessieren, +grundlegende Kenntnisse in Musiknotation haben. Zusätzlich sollten Sie +Englisch sprechen können. + +@subheading Stichnoten + +Lösen Sie Probleme mit der Synchronisation von Verzierungen (Vorschläge usw.), +zusammen mit der darunter liegenden Architektur (siehe +@uref{http://code.google.com/p/lilypond/issues/detail?id=34, +Nummer 34 in unserem Tracker}). Verzierungen bringen das Zeitmaß von LilyPond +durcheinander, weil sie sozusagen in der Zeit rückwärts gehen. Dadurch +entstehen seltsame Effekte, besonders wenn in einem Notensystem eine +Verzierung auftritt und im zweiten nicht. + +@strong{Schwierigkeit:} mittel + +@strong{Erfordernisse:} C++, MIDI + +@strong{Empfohlen:} Bekannt mit den Interna von LilyPond + +@strong{Mentoren:} Mike Solomon, Carl Sorensen + +@subheading MusicXML + +Hinzufügen von erweiterter Unterstützung für den Export von MusicXML und +Verbesserung des Imports, zusätzlich Tests, die die Funktionen überprüfen. +Abhängig von der zur Verfügung stehenden Zeit kann etwas oder alles der +folgenden Punkte implementiert werden: + +@divClass{keep-bullets} +@itemize + +@item +Der Export soll grundlegende Funktionen wie den MIDI-Export können (d. h. +die Benutzung von eigenen Exportklassen, abgeleitet von der Übersetzerklasse.) + +@item +Der XML-Baum soll aus dem grundlegenden musikalischen Inhalt erstellt werden, +hinzu kommt eine Verbindung von musikalischem Ereignis zu XML-Tag. + +@item +Alle LilyPond-Engraver sollen ihre Arbeit verrichten. + +@item +Alle Ausgabe-Objekte (also alle Stencils/Gruppen von Stencils) sollen der +Musik zugeordnet werden (und damit auch dem XML-Tag im XML-Baum). + +@item +Ein XML-Ausgabebackend soll hinzugefügt werden, welches die Layoutinformationen +für jedes Ausgabe-Objekt den XML-Tags hinzufügen kann. + +@end itemize +@divEnd + +Das Ziel wird als erreicht angesehen, wenn eine (vorher festgelegte) Partitur +von MusicXML importiert und dann wieder exportiert werden kann, ohne dass +ungewollter Datenverlust eintritt. + +@strong{Schwierigkeit:} mittel + +@strong{Erfordernisse:} MusicXML, Python, grundlegene Kenntnis von LilyPond + +@strong{Mentoren:} Reinhold Kainhofer, Mike Solomon + +Kenntnis anderer Notensatzprogramme (zum Testen) wäre ein netter Bonus. + +@subheading Binde- und Legatobögen verbessern + +Die Standardform von Binde- und Legatobögen ist oft nicht zufriedenstellend. +Überbindungen von enharmonischen Tönen (etwa @code{@{ cis'~ des' @}}) werden +nicht unterstützt, auch Überbindungen, die von Schlüssel- oder Systemwechsel +unterprochen werden, sind schlecht unterstützt. Das Projekt beinhaltet das +Sammeln und Sortieren von Beispielen schlechter Ausgabe, das feststellen der +richtigen Formatierung und das Schreiben das dazu notwendigen Codes. + +@strong{Schwierigkeit:} schwer + +@strong{Erfordernisse:} C++, Erfahrung mit Heuristiken + +@strong{Empfohlene Kenntnisse:} LilyPond-Kenntniss, Sinn für Ästhetik + +@strong{Mentor:} Mike Solomon + +@subheading Eine besondere Variante bestimmter Glyphen hinzufügen + +Zusätzliche Varianten von Glyphen schaffen für Situationen wie auf der Linie, +zwischen den Linien, kürzere und schmalere Varianten für z. B. Versetzungszeichen, +zusammen mit einer Infrastruktur, die das unterstützt. Ein Beispiel ist die +Breve der Alten Notation, deren Notenkopf in zwei Varianten vorkommt, mit +kleinerem und größerem Loch. + +@strong{Schwierigkeit:} leicht + +@strong{Erfordernisse:} MetaFont, C++, gutes Auge für Details + +@strong{Empfohlene Kenntnisse:} grundlegene LilyPond-Kenntnis + +@strong{Mentor:} Werner Lemberg + +@subheading Bebalkung verbessern + +Die Standardpositionen von normaler Bebalkung, Bebalkung über Systeme hinweg, +unterbrochene und Knie-Bebaklung sollte verbessert werden. Balken sollten +sich am Kontext und benachbarten Noten orientieren (siehe +@uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, +Abschnitt 2.2}). Wenn möglich, sollte die Rechenzeit für die Bebalkung +verkürzt werden. + +@strong{Schwierigkeit:} mittel + +@strong{Erfordernisse:} C++, Erfahrung mit Heuristiken + +@strong{Empfohlene Kenntnisse:} Sinn für Ästhetik + +@strong{Mentoren:} Mike Solomon, Carl Sorensen + + +@subheading Bessere Unterstützung für Tabulaturen + +@divClass{keep-bullets} +@itemize + +@item +Nicht-monotonische Saitenstimmungen, wie Ukulele + +@item +Ein Eingabemodus für Tabulaturen (im Moment wird die Information notiert +wie die übliche westliche Notation, beispielsweise eine Viertelnote Fis, +und dann in eine Tabulatur konvertiert), um mittelalterliche Lautentabulaturen +transkribieren zu können. + +@item +Wenn ein Bunddiagramm für einen Akkord definiert ist, sollte diese Information +benützt werden, um den Akkord auf dem System darzustellen (und nicht nur eine +Standarddarstellung benützt werden). + +@end itemize +@divEnd + +@strong{Schwierigkeit:} leicht + +@strong{Erfordernisse:} C++ + +@strong{Empfohlene Kenntnisse:} Kenntnis von Tabulaturnotation familiarity + +@strong{Mentor:} Carl Sorensen + +@subheading Kompilationswarnungen aufräumen + +Aufräumen von Kompilationswarnungen, statischer Codeanalyse und Valgrind-Warnungen. +Werkzeuge zur automatischen Analyse von Code (Warnungen in @code{g++} und +@code{clang}) und Analysewerkzeuge wie die Valgrind-memory-leak-detection und +callgrind code profiler stellen wertvolle Informationen über mögliche Probleme +im C++-Code zu Verfügung. Wenn man diese Warnungen aufräumt, könnte man auch +automatisch alle Patche zurückweisen, die neue Warnungen mit sich bringen würden. + +@strong{Schwierigkeit:} mittel + +@strong{Erfordernisse:} C++ + +@strong{Mentoren:} Joe Neeman, Reinhold Kainhofer + +@divEnd + + @node Autoren @unnumberedsec Autoren @@ -852,7 +1204,6 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @divClass{column-center-bottom} - @subheading Was andere mit LilyPond gemacht haben @divClass{keep-bullets} @@ -869,6 +1220,68 @@ Handbücher finden sich auf @url{http://lilypond.org}.} @unnumberedsec Ältere Neuigkeiten @translationof Old news +@divClass{heading-center} +@warning{Viele alte Ankündigungen und Listen der Änderungen finden sich in der +@ref{Abstellkammer}} +@divEnd + @include web/news-front.itexi @include web/news.itexi + + + +@node Abstellkammer +@unnumberedsec Abstellkammer +@translationof Attic + +@divClass{column-center-top} +@subheading Ankündigungen + +Ankündigungen und Neuigkeiten nach Version: +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +Ausführliche Liste der Änderungn nach Version: +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading Änderungslog + +Änderungslog für Entwickler nach Version: +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/de/web/download.itexi b/Documentation/de/web/download.itexi index 8893fe7073..3f3c9c7a96 100644 --- a/Documentation/de/web/download.itexi +++ b/Documentation/de/web/download.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -210,8 +210,19 @@ Auf der Kommandozeile schreiben Sie uninstall-lilypond @end example +@subsubheading Hilfe + +Auf der Kommandozeile schreiben Sie + +@example +sh lilypond-@versionStable{}-OS-TYPE.sh --help +@end example + @divEnd + + + @divClass{column-right-top} @subheading Eine Datei kompilieren @@ -231,22 +242,22 @@ Versionen zu installieren oder zu aktualisieren. @item @sourceimage{logo-fedora,,,} @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447, -Fedora: LilyPond 2.12.2} +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.2} +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,,,} @@ -291,6 +302,8 @@ Alle Logos und Produktabbildungen erkennen Copyright und Trademark an. @downloadStableDarwinNormal Für MacOS X 10.4 und höher auf Intel-Prozessoren (wenn Sie Zweifel haben, benutzen Sie diese Version). +MacOS X 10.7 Lion wird noch nicht unterstützt. + @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC @@ -508,7 +521,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. diff --git a/Documentation/de/web/introduction.itexi b/Documentation/de/web/introduction.itexi index ff51ba2919..34d6eb5881 100644 --- a/Documentation/de/web/introduction.itexi +++ b/Documentation/de/web/introduction.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 233fb6a8b3b6e31de1841641dbbd4c4f43423151 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -534,12 +534,39 @@ Welt eingesetzt. Einige Highlights: @itemize @item -@emph{Affaire étrangère}, eine Oper von -@uref{http://valentin.villenave.net/,Valentin Villenave} mit -einem französischen Libretto von -@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim}, wurde am 1. Februar 2009 in der -@uref{http://www.orchestre-montpellier.com/, L'Opéra de Montpellier} -uraufgeführt. +Mussorgskijs @emph{Bilder einer Ausstellung}, neu orchestriert und +dirigiert von @uref{http://www.aurelienbello.com/,Aurélien Bello} +mit der @uref{http://www.junge-philharmonie-brandenburg.de/,Jungen Philharmonie Brandenburg} +am 10. Oktober 2011 und als Wiederholung am 15.--16. April 2012. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, Komponist und +Dirigent. Zu seinen vielen neueren Werken gehören: @emph{Go Thy Way}, +aufgeführt von den @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} im März 2012, die +@emph{Just Out of Reach Suite} aufgeführt vom +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Chrysalis Duo}, @emph{thrafsmata}aufgeführt im Juli 2011 vom +@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh +New Music Ensemble}. + + +@item +@emph{Anonymous Student Compliment or Complaint}, von +@uref{http://www.mikesolomon.org, Mike Solomon}, Gewinner des +@uref{http://leftcoastensemble.org/contest, 2011 Left Coast Composition Contest}, +an dem 172 Kompositionen aus 22 Ländern teilgenommen haben. +Andere Werke bspw.: Norman (age 1) für Soloklarinette, aufgeührt an auf dem +Electroacoustic Music Festival (FEMF) der +@uref{http://emu.music.ufl.edu/fems_concerts.html, University of Florida} im +Oktober 2010. + +@item +Eine moderne Edition der @emph{Serenata Erminia} von Alessandro Scarlatti, +herausgegeben von Thomas Griffin, Musikwissenschaftler (Rom, Italien). Aufgeführt +am 22. Oktober 2010 in der Gallerie des Palazzo Zevallos Stigliano in Neapel. +Siehe @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}, +zur Feier des 350. Geburtstages des Komponisten. @item @uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury Baroque}s @@ -553,6 +580,14 @@ der St. James Church in Manhattan am 8. Mai 2009 von Frederick Renz und seinem Ensemble @uref{http://www.earlymusicny.org/, Early Music New York} (Notensatz von Nicolas Sceaux). +@item +@emph{Affaire étrangère}, eine Oper von +@uref{http://valentin.villenave.net/,Valentin Villenave} mit +einem französischen Libretto von +@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim}, wurde am 1. Februar 2009 in der +@uref{http://www.orchestre-montpellier.com/, L'Opéra de Montpellier} +uraufgeführt. + @end itemize @divEnd @@ -574,7 +609,7 @@ die beste Werbung für LilyPond. @item @uref{http://etudeapp.com, Etude}, @qq{Notensatz unter Drogen} ist eine iPhone-App, die Klaviermusik, gesetzt mit LilyPond, anzeigt. Hinzu -gehören viele Stücke von Mutopia. Die App enthält auch eine virtualle +gehören viele Stücke von Mutopia. Die App enthält auch eine virtuelle Klaviatur, die anzeigt, welche Tasten gedrückt werden müssen, um Anfängern beim Notenlesen zu helfen. @@ -619,6 +654,19 @@ haben, LilyPond auszuprobieren, lesen zuerst über unsere @divClass{keep-bullets} @itemize +@item +April 2011 + +@uref{http://www.linux-magazine.com,Linux Magazine} publiziert einen +Atikel mit dem Titel +@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf, +Projects on the Move}. Es es eine Einleitung zu MuseScore, +LilyPond and Chordii. Die Authorin Carla Schroder schreibt @qq{LilyPond wird +von der Kommandozeile aus gesteuert, aber lassen Sie sich nicht davon +abschrecken, dass es keine graphische Oberfläche gibt: LilyPond ist +benutzerfreundlich und leicht zu erlernen} und zeigt einige praktische +Beispiele. + @item Mai 2010 @@ -709,7 +757,7 @@ Oktober 2004 Die Editoren von Computer!Totaal, einer holländischen Computerzeitschrift, -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, beschreiben LilyPond} in der Ausgabe Oktober 2004 als: @qq{Wunderbare freie (Open Source) Software [..] Die Partituren von LilyPond sind ausnahmslos schön [..] ein sehr mächtiges System das fast alles @@ -963,8 +1011,8 @@ mit einem Backslash eingegeben. @imageFloat{text-input-1-annotate-de,png,center} @imageFloat{text-input-1-output,png,center} -Versetzungszeichen werden durch verschiedene Endungen hinzugefügt: @code{-is} -nach der Note setzt ein Kreuz, @code{-es} dagegen ein b (-- das sind die deutschen +Versetzungszeichen werden durch verschiedene Endungen hinzugefügt: @w{@code{-is}} +nach der Note setzt ein Kreuz, @w{@code{-es}} dagegen ein b (-- das sind die deutschen Endungen, Endungen in anderen Sprachen sind auch möglich). LilyPond entscheidet selber, wo es die Versetzungszeichen platziert. @@ -1087,6 +1135,7 @@ point-and-click. @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} @@ -1191,16 +1240,13 @@ git clone http://github.com/textmate/lilypond.tmbundle.git @itemize @item -@item -@uref{http://www.rosegardenmusic.com,Rosegarden}, ein Audio- und MIDI-Sequenzierer, -der auch einen Noteneditor für einzelne Systeme unterstützt. +@uref{http://canorus.org,Canorus} kann nach LilyPond exportieren, ist allerdings noch im Beta-Stadium. Testpersonen sind willkommen. @item @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, auf der @uref{http://cairographics.org, Cairo}-Bibliothek basierend, hat experimentelle Unterstützung für LilyPond-Export. -@item @uref{http://www.tuxguitar.com.ar/,TuxGuitar}, ein Tabulator-Editor und -Spieler, stellt neben Tabulatur auch eine Partiturvorschau zur Verfügung und kann nach LilyPond exportieren. @@ -1210,12 +1256,31 @@ Verfügung und kann nach LilyPond exportieren. wird aber aktiv entwickelt. @item -@uref{http://canorus.org,Canorus} kann nach LilyPond exportieren, ist allerdings noch im Beta-Stadium. Testpersonen sind willkommen. +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY} ist ein C#-Programm, das +@uref{http://www.noteworthysoftware.com/,NoteWorthy}-Lieder nach LilyPond +konvertieren kann. + +@item +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple} ist ein Programm, mit dem man Partituren und Stimmen erstellen +kann. Es enthält auch einen Modus, in dem man unterschiedliche +musikalische Werke untereinander mischen und zu einer Partitur oder +einer Stimme zusammenfügen kann. + +@item +@uref{http://www.rosegardenmusic.com,Rosegarden}, ein Audio- und MIDI-Sequenzierer, +der auch einen Noteneditor für einzelne Systeme unterstützt. @item @uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, ein monophoner Echtzeitkonverter von MIDI nach LilyPond. +@item +@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, ein Tabulatureditor +mit mehrfachen Spuren und Spieler, enthält eine Vorschau der Noten +und kann nach LilyPond exportieren. + @end itemize @subsubheading Algorithmische Code-Generatoren diff --git a/Documentation/de/web/manuals.itexi b/Documentation/de/web/manuals.itexi index 804159c163..61768740b8 100644 --- a/Documentation/de/web/manuals.itexi +++ b/Documentation/de/web/manuals.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -128,13 +128,17 @@ Referenz für Anpassungen. @itemize +@item +@ref{Alles}: +vorhergehende stabile Versionen und die aktuelle Version als komprimiertes Archiv. + @item @ref{Übersetzt}: der Übersetzungsstatus für nicht Nicht-Englischsprachige. @item -@ref{Alles}: -Handbücher zum Herunterladen und alte Handbücher. +@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}: +Beispiele, Tricks und Tipps, von LilyPond-Benutzern erstellt. @item @ref{Entwicklung}: @@ -308,8 +312,8 @@ in Angriff nimmt. @docLinks{Benutzung, usage, @rprogramnamed{Top,Benutzung}, @manualStableUsageSplit-de, - @manualStableUsageBig-de, 300 KB, - @manualStableUsagePdf-de, 400 KB} + @manualStableUsageBig-de, 400 KB, + @manualStableUsagePdf-de, 600 KB} @divEnd @@ -455,7 +459,7 @@ Eigenschaften in LilyPond seit der vorigen stabilen Version. @node Erweitert @unnumberedsec Erweitert -@translationof Extend +@translationof Extending @divClass{column-left-top} @subheading Erweitern Sie LilyPond @@ -466,7 +470,7 @@ Dieses Handbuch erklärt, wie man Erweiterungen für LilyPond schreibt. @divClass{column-right-bottom} -@docLinks{Erweitert, extend, +@docLinks{Erweitert, extending, @rextendnamed{Top,Erweitert}, @manualStableExtendingSplit-de, @manualStableExtendingBig-de, 200 KB, diff --git a/Documentation/es/GNUmakefile b/Documentation/es/GNUmakefile index 54197f95dd..dc127f98c2 100644 --- a/Documentation/es/GNUmakefile +++ b/Documentation/es/GNUmakefile @@ -1,10 +1,7 @@ ISOLANG = es depth = ../.. SUBDIRS = essay learning notation texidocs usage web extending included -STEPMAKE_TEMPLATES = documentation +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root - -EXTRA_DIST_FILES = web.texi - include $(depth)/make/stepmake.make diff --git a/Documentation/es/changes.tely b/Documentation/es/changes.tely index d945d1dd2b..d735612141 100644 --- a/Documentation/es/changes.tely +++ b/Documentation/es/changes.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: caec41ae928a0b3352ecb2ca73ae45d8e3709026 + Translation of GIT committish: 2e3c5412eacdbfd976d2cd6c5cc90f272ddfc263 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -44,11 +44,11 @@ Véase el manual del usuario, \NAME\ @finalout @node Top -@top Funcionalidades nuevas de la versión 2.14 desde la 2.12 +@top Funcionalidades nuevas de la versión 2.16 desde la 2.14 @allowcodebreaks false -@itemize @bullet +@itemize @ignore @@ -68,653 +68,407 @@ which scares away people. * only show user-visible changes. @end ignore - @item -¡Ahora Lilypond ayuda a las barras de corchea a evitar colisiones con -otros objetos gráficos! Esta funcionalidad funciona completamente con -las barras manuales. También funciona para todas las barras -automáticas que no terminan justo antes de un cambio de pauta. Para -este caso particular, le rogamos que utilice barras manuales. +Se contemplan las plicas de pentagrama cruzado en acordes, utilizando +@code{crossStaff} y el grabador @code{Span_stem_engraver}. Éste +efectúa el cálculo de la longitud de las plicas de pentagrama cruzado +de forma automática. +@lilypondfile[quote] +{cross-staff-stems.ly} @item -Ahora forma parte de la distibución el script Articulate, obra de -Peter Chubb, que se publica bajo la licencia GPLv3. Permite la -producción sencilla de archivos MIDI que realizan de forma -predeterminada una articulación non-legato además de interpretar -correctamente las ligaduras de expresión, los picados, las -indicaciones de tempo, los trinos, etc. +La sintaxis de las palabras (secuencias de caracteres que se reconocen +sin encerrarlas entre comillas) y las instrucciones (que ahora son +siempre una barra invertida @samp{\} seguida de una palabra) se ha +unificado para todos los modos: ahora consiste en caracteres +alfabéticos, posiblemente comprendiendo guiones aislados @samp{-} y +guiones bajos @samp{_}. +Una consecuencia es que la utilización de guiones de texto sin +entrecomillar como (literalmente) @example -\include "articulate.ly" -\articulate << - resto de la partitura... ->> +@{ c-script c\f_script @} @end example - -@item -Ahora están contempladas las repeticiones de un pulso para -semicorcheas y figuras de menor duración y las repeticiones de pulso -para compases que contienen notas de duraciones diversas. - -@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 produce diagramas de digitación para instrumentos de viento -madera. - -@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" - +ahora tienden a producir una música no válida. La omisión de las +comillas para texto arbitrario en lugar de palabras clave nunca ha +sido una buena práctica o se ha documentado, y es poco probable que se +haya utilizado mucho. + +Quedarse con las convenciones establecidas (como no utilizar guiones o +guiones bajos para los nombres de instrucción orientados a ser +utilizados dentro de la música) sigue siendo recomendable. El motivo +de este cambio es el reconocimiento más robusto de las unidades +léxicas de LilyPond para sí mismo así como para las herramientas +externas que interpretan su sintaxis. + +@item +Se contempla el canto kievano en notación cuadrada: +@lilypond[quote,relative=1,verbatim] +\new KievanVoice { + \cadenzaOn + c d e f g a bes + \bar "kievan" } @end lilypond @item -Se ha mejorado la salida MIDI: -@itemize @bullet -@item las voces se mantienen separadas, lo que hace que el MIDI sea mucho más útil para el post-procesado -@item distribución óptima de los canales: los instrumentos idénticos comparten el mismo canal. Esto significa que p.ej. para una partitura orquestal siempre están disponibles 16 (15 más percusión) instrumentos de distinto sonido, sin limitarse al número de pautas o voces. -@item @code{\set Score.midiChannelMapping = #'staff} asigna un canal MIDI por cada pauta, que era el comportamiento anterior. Este ajuste es necesario si se quiere que los cambios de instrumento creen cambios de programa MIDI sobre un único canal MIDI. -@item los matices dinámicos ahora se realizan mediante velocidades de nota, ya no como volumen de MIDI. Esto mejora el sonido sobre los módulos MIDI de gama alta. -@end itemize - -@item -Se ha mejorado la importación de MIDI por medio de Midi2ly -@itemize @bullet -@item Midi2ly ahora funciona también en sistemas Windows -@item ahora se manejan bien los archivos MIDI con más de 32 pistas -@item ya no se ignoran las notas de ciertas voces simultáneas -@item no se truncan las notas que sobrepasan una línea divisoria -@item se respetan la armadura de la tonalidad y la indicación de compás iniciales -@item se ha arreglado un problema con las octavas en pistas o voces subsiguientes -@item se contemplan de forma incipiente varias voces sobre un pentagrama -@item se fija el instrumentName a partir de los datos de la pista -@item nueva opción --skip, por omisiión se muestran los silencios -@item no se truncan los silencios que sobrepasan una línea divisoria -@item nueva opción --include-header para establecer los títulos -@item nueva opción --preview para archivos MIDI grandes -@end itemize -La primera funcionalidad estuvo patrocinada por Valentin Villenave, -las otras funcionalidades han sido patrocinadas por Image-Line Software para FL Studio. +Los puntillos ahora evitan a las otras voces en la polifonía a dos +partes, de manera que los usuarios pueden trasladar el grabador +@code{Dot_column_engraver} para ajustar los puntillos de forma +independiente para cada voz. -@item -Está disponible un nuevo grabador @code{Completion_rest_engraver} para convertir automáticamente -silencios largos que sobrepasan a las líneas divisorias, de forma correspondiente al grabador -@code{Completion_heads_engraver} para las notas -@example -\layout @{ - \context @{ +@lilypond[quote] +\layout { + \context { + \Staff + \remove Dot_column_engraver + } \context { \Voice - \remove "Note_heads_engraver" - \consists "Completion_heads_engraver" - \remove "Rest_engraver" - \consists "Completion_rest_engraver" - @} -@} -@end example -Esta funcionalidad ha sido patrocinada por Image-Line Software para FL Studio. - -@item -Se pueden añadir puntos a los elementos del índice general utilizando: -@example -\paper @{ - tocItemMarkup = \tocItemWithDotsMarkup -@} -@end example - -@item -Hay disponibles dos nuevas instrucciones de marcado para patrones y -relleno con patrones: @code{\pattern} y @code{\fill-with-pattern}. - -@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 + \consists Dot_column_engraver + } } +\relative c'' << + { \time 6/8 + 4. b + } \\ { + 4. + } >> @end lilypond @item -Se ha añadido un conjunto de herramientas de transformación modal -mínimo para el compositor. Se puede @notation{transportar} un motivo, -@notation{invertirlo} y/o convertirlo en su @notation{retrogradación} -dentro de cualquier escala. - -@lilypond -pentatonicScale = \relative a' { a c d f g } -motif = \relative c'' { d8 c f,4 } - -\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 +Ahora se incluye en LilyPond una función de Scheme, desarrollada por +varios usuarios, para ajustar los puntos de control de las curvas como +ligaduras de unión y de expresión. -@item -Está mínimamente contemplada la notación mensural negra. - -@item -Están contempladas más ampliamente las formas oblicuas dentro de las -ligaduras mensurales blancas. - -@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 - \] -} +@lilypond[quote,verbatim,relative=2] +g8->( bes,-.) d4 +\shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0)) +g8->( bes,!-.) d4 @end lilypond @item -Hay dos funciones nuevas @code{\with-link} y @code{\page-link} que -aportan hiperenlaces a una etiqueta o a un número de página dados. -Esto funciona solamente en el motor de salida PDF. Todos los -elementos de la tabla de contenidos añaden ahora hiperenlaces a las -páginas a que se refieren, automáticamente. +El uso de las especificaciones de @code{\tempo} en los bloques +@code{\midi} (eliminados en la versión 2.9.16 en favor del ajuste +explícito de @code{tempoWholesPerMinute}) ha resurgido: ahora +cualquier clase de música que efectúe ajustes de propiedades se +convierte en definiciones de contexto dentro de las especificaciones +de salida, permitiendo declaraciones como +@example +\layout @{ \accidentalStyle modern @} +\midi @{ \tempo 4. = 66 @} +@end example @item -Ahora están contemplados los compases compuestos a través de la -instrucción @code{\compoundMeter}, que se puede usar en lugar de -@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 +Se ha rediseñado la clave de Sol de LilyPond: el bucle superior está +más equilibrado, el gancho inferior sobresale menos y la línea +vertical principal ("spine") está curvada de forma más regular. +Pueden compararse las versiones vieja y nueva consultando la +documentación: +@uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, +versión antigua}, +@uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, +versión nueva}. @item -Las líneas de letra por encima de una pauta deben tener la propiedad -@code{staff-affinity} ajustada al valor @code{DOWN} o la propiedad -@code{alignAboveContext} ajustada de manera que esté adecuadamente -alineada. Para ver más información, consulte @ruser{Posicionamiento -vertical de la letra}. +Se han simplificado las instrucciones de los sellos de elementos +gráficos para permitir una menor duplicación de código y mejores +aproximaciones de altura de los objetos gráficos. Se han eliminado +las siguientes instrucciones de sello: +@itemize +@item @code{beam} +@item @code{bezier-sandwich} +@item @code{bracket} +@item @code{dashed-slur} +@item @code{dot} +@item @code{oval} +@item @code{repeat-slash} +@item @code{zigzag-line} +@end itemize @item -Los valores de la propiedad @code{stringTunings} han cambiado de una -lista de semitonos por encima del Do central a una lista de alturas de -notas de LilyPond. convert-ly maneja el cambio automáticamente donde -el valor de @code{stringTunings} esté establecido a un valor constante -de Scheme. - -Las nuevas instrucciones @code{makeStringTuning} y -@code{contextStringTuning} permiten la creación de afinaciones de -cuerdas en la forma de una construcción de acorde de LilyPond. +Ahora se tratan los corchetes como objetos diferenciados y no como +parte de la plica. +@lilypond[fragment,quote,relative=2] +\override Flag #'color = #red +g8 +@end lilypond @item -Mediante la utilización de @code{\cueDuringWithClef}, ahora las notas -guía también pueden llevar su propia clave que se reinicia -correctamente al final del pasaje de notas guía. Al comienzo de cada -línea aún se imprime la clave estándar, pero se muestra la clave de -las notas guía después de la armadura y compás en un tamaño menor. - -@lilypond -vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 } -\addQuote vIQuote { \vI } +Se puede elegir entre dos métodos de numeración de compases, en +especial para cuando se emplean repeticiones: -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 } | +@lilypond[fragment,quote,relative=1,noragged-right] +\relative c'{ + \set Score.alternativeNumberingStyle = #'numbers + \repeat volta 3 { c4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 \break + \set Score.alternativeNumberingStyle = #'numbers-with-letters + \repeat volta 3 { c,4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } c1 } - -\score { - << - \new Staff \new Voice \Solo - >> -} @end lilypond - -@item -Los nombres de las notas se pueden seleccionar con una nueva -instrucción @code{@bs{}language "italiano"}, que se puede usar en el -modo seguro. La sintaxis antigua @code{@bs{}include "italiano.ly"} -está contemplada por ahora, pero quedará obsoleta en el futuro. - @item -Ahora el barrado automático se desactiva mediante @code{\cadenzaOn} y -se habilita con @code{\cadenzaOff}. Hay que indicar el barrado de las -cadencias manualmente. Asimismo, si se usa una cadencia en una pieza -con el barrado automático desactivado, tiene que desactivarse de nuevo -después de la cadencia. +Lo que sigue es un cambio fundamental en la representación que +LilyPond hace de la música: los eventos de duración como +@code{LyricEvent} y @code{NoteEvent} ya no se encuentran envueltos +dentro de elementos @code{EventChord} a no ser que se hayan escrito +realmente como parte de un acorde. Si manipulamos expresiones +musicales en Scheme, el nuevo comportamiento puede necesitar cambios +en nuestro código. Las llamadas a la función musical +@code{\eventChords} o a la función de Scheme @code{event-chord-wrap!} +convierten a la representación anterior; la utilización de una +cualquiera de ellas puede ser la vía más sencilla para mantener +operativo el código tradicional. -@item -Ahora el usuario puede especificar el nombre de la tabla -predeterminada de diagramas de posiciones de acordes. Esto permite la -utilización de varias tablas y el cambio de una a otra en función de -los deseos del usuario. +Los tres siguientes elementos de la lista son consecuencia de este +cambio. @item -Ahora se puede personalizar la decisión del combinador de voces de -combinar o no las notas. - -@lilypond[quote,relative=2] -\partcombine -\relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e } -\relative c' { c2 \partcombineApart c | c c } -@end lilypond +Se ha reimplementado la abreviatura de ayuda para intruducción +repetitiva de acordes, @code{q}. Ahora los acordes repetidos se +sustituyen justo antes de la interpretación de la expresión musical. +En caso de que el usuario quiera retener ciertos eventos del acorde +original, puede ejecutar manualmente la función @code{\chordRepeats} +de sustitución de acordes de repetición. @item -De forma predeterminada, las pautas de tablatura sólo muestran los -números de traste. Para conseguir el estilo anterior, se ofrece la -instrucción @code{\tabFullNotation}. +Los números de cuerdas y digitaciones de la mano derecha sobre notas +individuales aparecen ahora sin tener que escribirlas dentro de +corchetes de acorde. @item -Se han añadido notas con forma en los estilos Funk y Walker. - -@item -Los silencios ya no mantienen vivo un contexto de pauta si se está -utilizando @code{\RemoveEmptyStaffContext}. - -@item -Nueva opción @code{-dinclude-settings=INCLUDEFILE.ly}, que indica a -lilypond que incluya el archivo especificado antes de que se procese -la partitura. Ello permite al usuario cambiar los ajustes globales -sin necesidad de modificar la propia partitura. De esta forma se -pueden generar distintas versiones o ediciones (como distintos tamaños -de página) a partir del mismo documento, sin tener que modificar la -partitura para cada una de las versiones. - -@item -Se ha modificado la sintaxis de los ajustes de barrado automático. Se -han eliminado beatLength, beatGrouping, beamSettings y -measureGrouping. El barrado automático está controlado ahora a través -de baseMoment, beatStructure y beamExceptions. Los ajustes -predeterminados para cada una de estas propiedades se pueden almacenar -en time-signature-settings, de manera que el autobarrado cambia -automáticamente cada vez que se modifica el tipo de compás. La nueva -sintaxis pretende ser mucho más sencilla de utilizar y requerir menos -ajustes manuales. - -@item -El @q{backend} de SVG contempla opcionalmente las fuentes tipográficas -@uref{http://www.w3.org/Submission/WOFF, WOFF}. Utilizar la opción de -Scheme @code{-d svg-woff} junto a la selección del backend SVG -@code{-d backend=svg} produce una salida SVG con selección CSS de la -fuente WOFF. - -@item -Se ha girado la clave de sol 1.5 grados a la derecha para mejorar su -equilibrio. Se pueden comparar las versiones antigua y moderna a -partir de la documentación: -@uref{http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs, -versión antigua}, -@uref{http://lilypond.org/doc/v2.13/Documentation/notation/the-feta-font.html#Clef-glyphs, -versión nueva}. - - -@item -Los elementos de extensión de reguladores de texto ahora se pueden -añadir directamente usando @code{\cresc}, @code{\dim} y -@code{\decresc}. -@lilypond[quote,relative=2] -c4\cresc c c c\f | -c4\dim c c c\! +Ahora las funciones musicales funcionan igual cuando se usan dentro o +fuera de los acordes, incluidas todas las posibilidades de la +exploración de argumentos. Las variables musicales se pueden usar +dentro de acordes: una construcción como +@lilypond[verbatim,quote,ragged-right] +tonic=fis' +{ <\tonic \transpose c g \tonic> } @end lilypond - -@item -La sintaxis documentada del entorno @samp{lilypond} en el modo -@LaTeX{} de @command{lilypond-book} se ha modificado de forma que se -corresponda con la sintaxis estándar de @LaTeX{}: ahora las opciones -se colocan después del nombre del entorno: -@example -\begin@{lilypond@}[@var{opciones}] @dots{} -@end example - -La sintaxis anterior con las opciones después de @samp{\begin} todavía -se acepta por parte de @command{lilypond-book} pero está obsoleta. -Algo como -@example -sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/' -@end example - -puede servir para realizar la conversión. - -@item -Se ha mejorado el aspecto estético del sistema de cabezas de nota con -forma. Se ha implementado el grosor de líneas variable. Se han hecho -consistentes todas las anchuras de las notas. Se han añadido -instrucciones menores para el sistema de notas con forma, que utilizan -la tonalidad relativa mayor para las notas de la escala. - -@item -Se ofrece una variante de la llamada de tipo segno: -@lilypond[quote,relative=2] -c4 d e f \bar "S" -g4 f e d +@noindent +ahora funciona como se espera. Puede utilizarse @code{#@{@dots{}#@}} +para la construcción de componentes de acordes. Ahora @code{\tweak} +funciona sobre notas individuales sin necesidad de incluirlas dentro +de un acorde. Ahora es posible usarla dentro de eventos de +instrucciones y letra de canciones, pero aún no es probable que +ofrezca resultados. + +@item +@code{\tweak} now takes an optional layout object specification. It can +be used for tweaking layout objects that are only indirectly caused by +the tweaked event, like accidentals, stems, and flags: + +@lilypond[verbatim,quote,ragged-right,relative=2] +<\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> @end lilypond @item -Las modificaciones de contexto (bloques @code{\with}) se pueden -almacenar en variables e insertarse dentro de contextos u otros -bloques @code{\with}: -@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 - } - } -} +Las expresiones de Scheme dentro de fragmentos de código de LilyPond +incrustados (@code{#@{@dots{}#@}}) se ejecutan ahora dentro de la +cerradura léxica del código de Scheme circundante. El símbolo +@code{$} ya no es especial dentro del código de LilyPond incrustado. +Se puede utilizar de forma incondicional dentro de código de LilyPond +para la evaluación inmediata de expresiones de Scheme, de forma +parecida a la forma en que se utilizaba anteriormente +@code{ly:export}. Se ha suprimido @code{ly:export}. Como +consecuencia, ahora @code{#} está libre para diferir la evaluación de +su argumento hasta que el analizador sintáctico reduzca efectivamente +la expresión contenida, reduciendo significativamente el potencial de +la evaluación prematura. También están los operadores de @q{división +de cadenas} @code{$@@} y @code{#@@} para la interpretación de los +miembros de una lista de forma individual. + +@item +Para reducir la necesidad de utilizar @code{$}, las expresiones de +Scheme escritas con @code{#} se interpretan como música dentro de las +listas de música, y como elementos de marcado o de listas de marcado +dentro de los elementos de marcado. + +@item +Se ha mejorado el soporte de acordes de tipo jazz: se reconocen los +acordes lidios y alterados; ahora se tratan los separadores entre +modificadores de acorde de forma independiente de los separadores +entre acordes invertidos y sus notas de bajo (y por omisión, la barra +inclinada se usa ahora solamente para el último tipo de separador); +las notas adicionales ya no van prefijadas por "add" de forma +predeterminada; y la "m" en los acordes menores se puede personalizar. +Consulte @ruser{Nombres de acorde personalizados} para más +información. + +@item +Se ha cambiado el nombre de la instrucción @code{\markuplines} por +@code{\markuplist} para conseguir una mejor correspondencia con su +semántica y con la nomenclatura general de LilyPond. + +@item +Se ha simplificado considerablemente la interfaz para especificar +afinaciones en las tablaturas y se emplea la función de Scheme +@code{\stringTuning} para la mayor parte de los propósitos. + +@item +Las barras ahora pueden preservar la inclinación por encima de los +saltos de línea. +@lilypond[fragment,quote,relative=2] +\override Beam #'breakable = ##t +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::align-with-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::slope-like-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] @end lilypond +Para hacerlo, se han hecho obsoletas varias funciones de "callback". +@itemize +@item @code{ly:beam::calc-least-squares-positions} +@item @code{ly:beam::slope-damping} +@item @code{ly:beam::shift-region-to-valid} +@end itemize +Además, @code{ly:beam::quanting} ahora acepta un argumento adicional +para ayudar a los cálculos sobre los cambios de línea. Todas estas +funciones se llaman automáticamente cuando se ajusta el parámetro +@code{positions}. @item -Se ha añadido una articulación de semi-abierta: -@lilypond[quote,relative=2] -c4\halfopen -@end lilypond -A veces se utiliza para indicar golpes de hi-hat semi-abierto. +En los argumentos de función, la música, los elementos de marcado y +las expresiones de Scheme (así como algunas otras entidades +sintácticas) se han hecho mayormente intercambiables y se diferencian +solamente mediante la evaluación del predicado respectivo. En ciertos +casos, el analizador sintáctico consulta este predicado, como cuando +se decide si interpretar @code{-3} como un número o como un evento de +digitación. @item -Ahora está totalmente contemplado el algoritmo bidireccional de -Unicode para elementos de marcado de una sola línea, gracias a la -integración mejorada con Pango. +Ahora se pueden definir las funciones musicales (y sus parientes +cercanos) con argumentos opcionales. @item -LilyPond se encuentra ahora licenciado bajo la GPL v3+ de GNU. +Para definir instrucciones que se ejecutan solamente por sus efectos +secundarios, ahora está disponible @code{define-void-function}. @item -En las tablaturas, los trastes se pueden indicar mediante etiquetas -que no sean números: +Hay una instrucción nueva @code{define-event-function} en analogía con +@code{define-music-function} que se puede usar para definir funciones +musicales que actúan como post-eventos sin que se requiera un especificador +de dirección como (@code{-}, @code{^} o @code{_}) antes de ellos. -@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")) - 4. 8 4 -} +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } @end lilypond @item -Los objetos de presentación se pueden imprimir sobre un fondo blanco, -lo que tiene el efecto de tapar los objetos de las capas inferiores -que coincidan en el mismo lugar: - -@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 +Se puede incluir una lista de alias en ASCII para caracteres +especiales. -@item -Los acordes se pueden repetir utilizando la abreviatura @code{q}: - -@lilypond[verbatim,quote,relative=2] -8.-^ q16 q4-^ +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} +\markup "• † ©right; &OE; &ss; ¶" @end lilypond @item -En el modo de doble cara, los márgenes para las páginas impares y -pares se pueden fijar utilizando @code{inner-margin} y -@code{outer-margin}: - -@example -\paper @{ - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm -@} -@end example +Hay una instrucción nueva @code{define-scheme-function} en analogía +con @code{define-music-function} que puede usarse para definir +funciones que se evalúan a expresiones de Scheme pero aceptan +argumentos en la sintaxis de LilyPond. @item -Los márgenes predeterminados del papel, tal y como se especifican en -el archivo @file{ly/paper@/-defaults-init.ly}, se aplican al -tamaño de papel predeterminado (A4) y se redimensionan automáticamente -al tamaño del papel seleccionado. +Ahora se puede utilizar la construcción @code{#@{ @dots{} #@}} no solo +para crear listas secuenciales de música, sino también para alturas +(que se distinguen de los eventos de nota sencillos por la ausencia de +duración u otra información que no puede formar parte de una altura), +eventos musicales únicos, expresiones musicales vacías, post-eventos, +elementos de marcado (sobre todo para liberar a los usuarios de la +necesidad de usar la macro @code{markup}), listas de marcado, +expresiones numéricas, definiciones y modificaciones de contextos y +algunas otras cosas. Si no contiene nada o contiene un único evento +musical, ya no devuelve una lista secuencial de música, sino una +expresión musical vacía o simplemente el propio evento musical, +respectivamente. @item -Ahora funcionan todas las combinaciones de @code{left-margin}, -@code{right-margin} y @code{line-width}. Ya no hay necesidad de -establecer a mano el valor de @code{line-width} a no ser que queramos -hacerlo explícitamente. +Se pueden usar alturas en la parte derecha de las asignaciones. Las +alturas se diferencian de los eventos de una sola nota en que no +tienen duración ni otras informaciones que no pueden formar parte de +una altura. @item -A partir de ahora se contempla la utilización de una fuente -tipográfica alternativa para la música, como Gonville. +Nueva opción de la línea de órdenes @option{--loglevel=@var{level}} +para controlar el volumen de datos que LilyPond produce en la salida. +Los valores posibles son ERROR (errores), WARN (advertencias), +BASIC_PROGRESS (progreso básico), PROGRESS (progreso) y DEBUG +(depuración). @item -Además de la instrucción de marcado @code{\hspace}, se ha añadido una -nueva instrucción @code{\vspace} para proporcionar una forma fácil y -flexible de añadir espacio vertical dentro de los elementos de -marcado. +@code{\once \set} ahora reinicia correctamente el valor de la +propiedad al valor previo. -@item -La dirección de las barras de corchea manuales se puede establecer con -@code{^[} y @code{_[}. - -@item -Se ha añadido una versión de la figura cuadrada que lleva dos líneas -verticales a cada lado. - -@lilypond[quote,relative=2] -\time 4/2 -\override Staff.NoteHead #'style = #'altdefault -c\breve | b\breve -@end lilypond - -@item -Ahora los nombres de instrumentos y voces tienen en cuenta, para su -posicionamiento, las dimensiones de los delimitadores iniciales de -sistema (llaves o corchetes) que están en otros pentagramas, con el -resultado de un mejor alineado predeterminado de los nombres por la -izquierda, por la derecha o centrados. - -@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 - } - >> ->> +@lilypond[fragment,quote,relative=2] + \set fingeringOrientations = #'(left) + 4 + \once \set fingeringOrientations = #'(right) + + -"left" @end lilypond @item -Ahora se pueden seleccionar las llaves dentro de los elementos de -marcado por su tamaño en puntos, usando las instrucciones de marcado -@code{\left-brace} y @code{\right-brace}. +La alineación de los elementos de matiz dinámico extensos +(reguladores, crescendi textuales, etc.) se divide automáticamente si +se da explícitamente una dirección distinta. -@lilypond[quote] -\markup { - \left-brace #35 - \hspace #2 - \right-brace #45 -} +@lilypond[fragment,quote,relative=2] +c4_\< c c^\> c c1_\p @end lilypond + @item -Los archivos .ps intermedios que LilyPond crea -durante la compilación, ahora se borran de forma predeterminada. Para -conservarlos, escriba siguiente línea en el archivo de entrada: -@example -#(ly:set-option 'delete-intermediate-files #f) -@end example +Ahora las apoyaturas y mordentes funcionan también dentro de una +ligadura de expresión, y no solo dentro de una ligadura de fraseo. +Asimismo, se ha añadido la función @code{\slashedGrace} que no imprime +ninguna ligadura partiendo de la nota del mordente. -@item Las ligaduras de unión, de expresión y de fraseo, -discontinuas y punteadas, pueden ahora tener un grosor variable, -y están disponibles ligaduras parcialmente discontinuas: -@lilypond[quote,relative=2] -\slurDashed -c4( d e f) | -\slurDotted -g4( f e d) | -\slurHalfDashed -c4( d e f) +@lilypond[fragment,relative=2] +c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4) @end lilypond @item -Se ha añadido una marca en forma de gafas, indicando con vehemencia que se mire al director: -@lilypond[quote,relative=2] -\mark \markup { \eyeglasses } -c4_\markup { \eyeglasses } -@end lilypond +Para suprimir a línea en un elemento de crescendo extenso (y otros +elementos extensos similares), LilyPond contempla ahora de forma plena +la propiedad @code{#'style = #'none}. -@item -Se ha añadido una articulación de pizzicato pellizcado (conocido -también como snap o pizzicato de Bartok): -@lilypond[quote,relative=2] -c4\snappizzicato +@lilypond[fragment,quote,relative=2] +\override DynamicTextSpanner #'style = #'none +c4\cresc c c g, c'\p @end lilypond @item -Ahora están disponibles unas nuevas funciones de formateo de números -para imprimir otras fracciones y añadir figuras a los números o -fracciones de un grupo especial: -@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 +LilyPond.app está disponible ahora para MacOS X 10.7. ¡Gracias, +Christian Hitz! @item -Los diagramas de posiciones ahora tienen una propiedad chordChanges -para evitar que se impriman de nuevo los objetos FretBoard repetidos. - -@item -El motor de espaciado vertical ha cambiado drásticamente haciéndolo -más flexible y sencillo de controlar. El espaciado entre los -pentagramas dentro de un sistema puede mejorar el uso del espacio -sobre la página. Los contextos definidos por el usuario pueden -participar en este espaciado flexible, según la forma en que se haya -definido el valor de su @code{staff-affinity}. Ciertas variables de -formateo de la página (@code{page-top-space}, -@code{between-system-space -padding} y @code{before- between- -after-title-space}) se han sustituido por dimensiones verticales -flexibles. +Los glissandos pueden abarcar varias líneas. @end itemize - - @ifhtml -Para ver noticias más antiguas, diríjase a -@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.es.html}, -@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html}, +Para ver noticias anteriores, diríjase a +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html}, o @uref{../,vuelva} al índice de la documentación. diff --git a/Documentation/es/essay.tely b/Documentation/es/essay.tely index be0e9f6a07..4b8372865b 100644 --- a/Documentation/es/essay.tely +++ b/Documentation/es/essay.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 18e1018ce7446f2cb86990c31f112f6cf05ca371 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,7 @@ dentro de LilyPond version @version{}. @c `Essay' was born 2002-06-03 with git commit e38f5fc... @macro copyrightDeclare -Copyright @copyright{} 2002--2011 por los autores. +Copyright @copyright{} 2002--2012 por los autores. @end macro @set FDL @@ -65,6 +65,7 @@ Copyright @copyright{} 2002--2011 por los autores. @node Índice de LilyPond @appendix Índice de LilyPond +@translationof LilyPond index @printindex cp diff --git a/Documentation/es/essay/engraving.itely b/Documentation/es/essay/engraving.itely index 0e2af31b1e..d8bdf634cf 100644 --- a/Documentation/es/essay/engraving.itely +++ b/Documentation/es/essay/engraving.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7ad21bc1c7d8407e8f21088415c1ad117e84fd9d + Translation of GIT committish: 7c3242c2474c98f8ec96c0de0b05066e5f0ef248 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" +@c \version "2.16.0" @node Grabado musical @chapter Grabado musical @@ -974,20 +974,20 @@ a cuatro ediciones publicadas distintas. Un examen detenido revela que hay una cierta variación aceptable entre los grabados manuales, pero también que LilyPond se compara de forma razonablemente buena con este rango aceptable. Aún existen algunos inconvenientes en la salida -de LilyPond, por ejemplo, parece ser un tanto agresiva en acortar -algunas de las plicas, así que aún hay lugar para un desarrollo y +de LilyPond, por ejemplo, parece ser un tanto agresiva acortando +algunas de las plicas, así que aún hay margen para un desarrollo y ajuste fino posteriores. Por supuesto, la tipografía se basa en el juicio humano sobre la apariencia, de manera que las personas no se pueden sustituir por completo. Con todo, gran parte del trabajo tedioso se puede -automatizar. Si LilyPond resuelve casi todas las situaciones más -comunes correctamente, esto ya constituirá una enorme ventaja sobre -los programas existentes. Con el transcurso de los años, software se -puede refinar de forma que realice más y más cosas automáticamente de -forma que los ajustes manuales sean también cada vez menos necesarios. -Donde se necesitan ajustes manuales, la estructura de LilyPond está -diseñada teniendo en mente esa flexibilidad. +automatizar. Si LilyPond resuelve correctamente la mayor parte de las +situaciones más comunes, esto ya sería una enorme ventaja sobre los +programas existentes. Con el transcurso de los años, el software se +puede refinar de forma que realice cada vez más cosas automáticamente, +de forma que los ajustes manuales sean también cada vez menos +necesarios. Donde se necesitan ajustes manuales, la estructura de +LilyPond está diseñada teniendo en mente esa flexibilidad. @node Construcción del software @@ -1652,10 +1652,7 @@ ejemplo siguiente combina unas pocas construcciones algo más exóticas. >> } >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 8) - } + \tempo 8 = 60 } \layout { \context { diff --git a/Documentation/es/essay/literature.itely b/Documentation/es/essay/literature.itely index fbb65cc19c..5fdb431ada 100644 --- a/Documentation/es/essay/literature.itely +++ b/Documentation/es/essay/literature.itely @@ -1,14 +1,14 @@ @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' Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Lista de referencias bibliográficas @chapter Lista de referencias bibliográficas diff --git a/Documentation/es/extending.tely b/Documentation/es/extending.tely index 97fad5ad72..9d7b9071a5 100644 --- a/Documentation/es/extending.tely +++ b/Documentation/es/extending.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,7 @@ LilyPond versión @version{}. @c `Extending' was born 2003-04-23 with git commit c08f6e8... @macro copyrightDeclare -Copyright @copyright{} 2003--2011 por los autores. +Copyright @copyright{} 2003--2012 por los autores. @end macro @set FDL diff --git a/Documentation/es/extending/programming-interface.itely b/Documentation/es/extending/programming-interface.itely index a1f552d15f..50512440e9 100644 --- a/Documentation/es/extending/programming-interface.itely +++ b/Documentation/es/extending/programming-interface.itely @@ -1,13 +1,13 @@ @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: 3c169262c8f580c0f42c09f3a61b9ae9f0d6261c When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Interfaces para programadores @chapter Interfaces para programadores @@ -19,7 +19,10 @@ Scheme, @ref{Tutorial de Scheme}. @menu +* Bloques de código de LilyPond:: +* Funciones de Scheme:: * Funciones musicales:: +* Funciones de eventos:: * Funciones de marcado:: * Contextos para programadores:: * Funciones de callback:: @@ -27,67 +30,300 @@ Scheme, @ref{Tutorial de Scheme}. * Trucos difíciles:: @end menu -@node Funciones musicales -@section Funciones musicales -@translationof Music functions +@node Bloques de código de LilyPond +@section Bloques de código de LilyPond +@translationof Lilypond code blocks -Las @emph{funciones musicales} son procedimientos de Scheme -que pueden crear automáticamente expresiones musicales, y se -pueden usar para simplificar enormemente el archivo de entrada. +Los bloques de código de LilyPond tienen el siguiente aspecto: +@example + #@{ @var{código de LilyPond} #@} +@end example +Se pueden usar en cualquier lugar en el que se pueda escribir código +de Scheme: el lector de Scheme en efecto se modifica para que pueda +incorporar bloques de código de LilyPond y pueda ocuparse de las +expresiones de Scheme incrustadas que comienzan por @code{$} y@w{ }@code{#}. + +Extrae el bloque de código de LilyPond y genera una llamada al +@code{parser} o analizador sintáctico de LilyPond, que corre en tiempo +de ejecución para interpretar el bloque de código de LilyPond. +Cualquier expresión de Scheme que se halle incrustada se ejecuta en el +entorno léxico del bloque de código de LilyPond, de manera que tenemos +acceso a las variables locales y a los parámetros de función en el +punto en que se encuentra escrito el bloque de código de LilyPond. + +Un bloque de código de LilyPond puede contener cualquier cosa que +podríamos utilizar en la parte derecha de una asignación. Además, un +bloque de LilyPond vacío corresponde a una expresión musical vacía, y +un bloque de LilyPond que contiene varios eventos musicales se +convierte en una expresión de música secuencial. + +@node Funciones de Scheme +@section Funciones de Scheme +@translationof Scheme functions +@cindex Scheme, funciones de (sintaxis de LilyPond) + +Las @emph{funciones de Scheme} son procedimientos de Scheme que pueden +crear expresiones de Scheme a partir de código de entrada escrito en +la sintaxis de LilyPond. Se pueden llamar desde prácticamente +cualquier lugar en el que se permita el uso de @code{#} para la +especificación de un valor en sintaxis de Scheme. Mientras que Scheme +tiene funciones propias, este capítulo se ocupa de las funciones +@emph{sintácticas}, funciones que reciben argumentos especificados en +la sintaxis de LilyPond. @menu -* Sintaxis de las funciones musicales:: -* Funciones de sustitución sencillas:: -* Funciones de sustitución intermedias:: -* Matemáticas dentro de las funciones:: -* Funciones sin argumentos:: -* Funciones vacías:: +* Definición de funciones de Scheme:: +* Uso de las funciones de Scheme:: +* Funciones de Scheme vacías:: @end menu -@node Sintaxis de las funciones musicales -@subsection Sintaxis de las funciones musicales -@translationof Music function syntax +@node Definición de funciones de Scheme +@subsection Definición de funciones de Scheme +@translationof Scheme function definitions +@funindex define-scheme-function -La forma general de una función musical es: +La forma general de la definición de una función de Scheme es: @example funcion = -#(define-music-function +#(define-scheme-function (parser location @var{arg1} @var{arg2} @dots{}) - (@var{type1?} @var{type2?} @dots{}) - @var{música}) + (@var{tipo1?} @var{tipo2?} @dots{}) + @var{cuerpo}) @end example @noindent donde @multitable @columnfractions .33 .66 +@item @code{parser} +@tab tiene que ser literalmente @code{parser} para dar a los bloques de código +de LilyPond (@code{#@{}@dots{}@code{#@}}) acceso al analizador +sintáctico. + @item @code{@var{argN}} @tab @var{n}-ésimo argumento @item @code{@var{typeN?}} @tab un @emph{predicado de tipo} de Scheme para el que @code{@var{argN}} -deve devolver @code{#t}. - -@item @code{@var{música}} -@tab una expresión musical, opcionalmente escrita en Scheme, con -el código de LilyPond que pudiera tener, encerrado entre llaves -con almohadilla -(@tie{}@w{@code{#@{@dots{}#@}}}@tie{}). Dentro de los bloques -de código de LilyPond, use @code{$} para referenciar a los argumentos -de la función (p. ej. @samp{$arg1}) -o para iniciar una expresión en línea de Scheme -que contenga argumentos de función -(p.ej., @w{@samp{$(cons arg1 arg2)}}). - +debe devolver @code{#t}. Algunos de estos predicados se reconocen de +forma especial por parte del analizador, véase más abajo. También +existe una forma especial @code{(@emph{predicate?} @emph{default})} +para especificar argumentos opcionales. Si el argumento actual no +está presente cuando se ll ama a la función, el valor predeterminado se +emplea en sustitución. Los valores predeterminados se evalúan en +tiempo de definición (¡incluyendo los bloques de código de LilyPond!), +de manera que se necesitamos un valor por omisión calculado en tiempo +de ejecución, debemos escribir en su lugar un valor especial que +podamos reconocer fácilmente. Si escribimos el predicado entre +paréntesis pero no lo seguimos por el valor predeterminado, se usa +@code{#f} como valor por omisión. Los valores por omisión no se +verifican con @emph{predicate?} en tiempo de definición ni en tiempo +de ejecución: es nuestra responsabilidad tratar con los valores que +especifiquemos. Los valores por omisión que son expresiones musicales +se copian mientras se establece @code{origin} al parámetro +@code{location}. + +@item @code{@var{cuerpo}} +@tab una secuencia de formas de Scheme que se evalúan ordenadamente; la +última forma de la secuencia se usa como el valor de retorno de la +función de Scheme. Puede contener bloques de código de LilyPond +encerrados entre llaves con almohadillas +(@tie{}@w{@code{#@{@dots{}#@}}}@tie{}), como se describe en +@ref{Bloques de código de LilyPond}. Dentro de los bloques de código +de LilyPond, use el símbolo @code{#} para hacer referencia a +argumentos de función (p.ej. @samp{#arg1}) o para iniciar una +expresión en línea de Scheme que contenga argumentos de función +(p.ej. @w{@samp{#(cons arg1 arg2)}}). Donde las expresiones de Scheme +normales que usan @code{#} no funcionan, podríamos necesitar volver a +expresiones de Scheme inmediatas que usan @code{$}, como por ejemplo +@samp{$music}. + +Si nuestra función devuelve una expresión musical, recibe un valor +@code{origin} útil. @end multitable @noindent +Ciertos predicados de tipo se manejan de forma especial por parte del +analizador sintáctico ya que de otro modo éste no es capaz de +reconocer los argumentos eficientemente. Actualmente son +@code{ly:pitch?} y @code{ly:duration?}. + +La idoneidad de lpos argumentos para el resto de los predicados viene +determinada mediante llamadas reales al predicado después de que +LilyPond ya las ha convertido en una expresión de Scheme. Como +consecuencia, el argumento se puede especificar en la sintaxis de +Scheme si se desea (precedido de @code{#} o como resultado de haber +llamado a una función de Scheme), pero LilyPond también convierte +algunas construcciones de LilyPond en Scheme antes de hacer +efectivamente la comprobación del predicado sobre ellas. Actualmente +se encuentran entre ellas la música, los post-eventos, las cadenas +simples (entrecomilladas o no), los números, los elementos de marcado +y de listas de marcado, score (partitura), book (libro), bookpart +(parte de libro), las definiciones de contexto y los bloques de +definición de salida. + +Para ciertos tipos de expresión (como la mayor parte de la música que +no está encerrada entre llaves) LilyPond necesita más allá de la +expresión misma para poder determinar su final. Si tal expresión se +considerase un argumento opcional mediante la evaluación de su +predicado, LilyPond no podría recuperarse después de decidir que la +expresión no se corresponde con el parámetro. Así, ciertas formas de +música necesitan ir encerradas entre llaves para que LilyPond pueda +aceptarlas. Existen también otras ambigüedades que LilyPond resuelve +mediante la comprobación con funciones de predicado: ¿es @samp{-3} un +post-evento de digitación o un nnúmero negativo? ¿Es @code{"a" 4} en +el modo de letra una cadena seguida por un número, o un evento de +letra con la duración @code{4}? LilyPond lo decide preguntándole a +los predicados. Ello significa que un debemos evitar los +predicados permisivos como @code{scheme?} si tenemos en mente +un uso particular en vez de una función de uso general. + Para ver una lista de los predicados de tipo disponibles, consulte @ruser{Predicados de tipo predefinidos}. -También se permiten predicados de tipo definidos por el usuario. + +@seealso + +Referencia de la notación: +@ruser{Predicados de tipo predefinidos}. + +Archivos instalados: +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm}. + + +@node Uso de las funciones de Scheme +@subsection Uso de las funciones de Scheme +@translationof Scheme function usage + +Las funciones de Scheme se pueden llamar casi desde cualquier lugar en +que puede escribirse una expresión de Scheme que comience con la +almohadilla@tie{}@code{#}. Llamamos a una función de Scheme +escribiendo su nombre precedido de la barra invertida@tie{}@code{\}, y +seguido por sus argumentos. Una vez que un argumento opcional no +corresponde a ningún argumento, LilyPond se salta este argumento y +todos los que le siguen, sustituyéndolos por su valor por omisión +especificado, y @q{recupera} el argumento que no correspondía al lugar +del siguiente argumento obligatorio. Dado que el argumento recuperado +necesita ir a algún lugar, los argumentos opcionales no se consideran +realmente opcionales a no ser que vayan seguidos de un argumento +obligatorio. + +Existe una excepción: si escribimos @code{\default} en el lugar de un +argumento opcional, este argumento y todos los argumentos opcionales +que le siguen se saltan y se sustituyen por sus valores +predeterminados. Esto funciona incluso si no sigue ningún argumento +obligatorio porque @code{\default} no necesita recuperarse. Las +instrucciones @code{mark} y @code{key} hacen uso de este truco para +ofrecer su comportamiento predeterminado cuando van seguidas solamente +por @code{\default}. + +Aparte de los lugares en que se requiere un valor de Scheme hay +ciertos sitios en que se aceptan expresiones de almohadilla @code{#} y +se evalúan por sus efectos secundarios, pero por lo demás se ignoran. +Son, mayormente, los lugares en que también sería aceptable colocar +una asignación. + +Dado que no es buena idea devolver valores que puedan malinterpretarse +en algún contexto, debería usar funciones de Scheme normales solo para +los casos en que siempre se devuelve un valor útil, y usar funciones +de Scheme vacías (@pxref{Funciones de Scheme vacías}) en caso +contrario. + + +@node Funciones de Scheme vacías +@subsection Funciones de Scheme vacías +@translationof Void scheme functions +@funindex define-void-function +@funindex \void + +En ocasiones, un procedimiento se ejecuta con el objeto de llevar a +cabo alguna acción más que para devolver un valor. Algunos lenguajes +de programación (como C y Scheme) usan las funciones para los dos +conceptos y se limitan a descartar el valor devuelto (usualmente +haciendo que cualquier expresión pueda actuar como instrucción, +ignorando el resultado devuelto). Esto puede parecer inteligente pero +es propenso a errores: casi todos los compiladores de C de hoy en día +emiten advertencias cuando se descarta una expresión no vacía. Para +muchas funciones que ejecutan una acción, los estándares de Scheme +declaran que el valor de retorno sea no especificado. Guile, el +intérprete de Scheme de LilyPond, tiene un valor único +@code{*unspecified*} que en tales casos devuelve de forma usual (como +cuando se usa directamente @code{set!} sobre una variable), pero +desgraciadamente no de forma consistente. + +Definir una función de LilyPond con @code{define-void-function} +asegura que se devuelve este valor especial, el único valor que +satisface el predicado @code{void?}. + +@example +noApuntarYPulsar = +#(define-void-function + (parser location) + () + (ly:set-option 'point-and-click #f)) +... +\noApuntarYPulsar % desactivar la función de apuntar y pulsar +@end example + +Si queremos evaluar una expresión sólo por su efecto colateral y no +queremos que se interprete ningún valor que pueda devolver, podemos +hacerlo anteponiendo el prefijo @code{\void}: + +@example +\void #(hashq-set! some-table some-key some-value) +@end example + +De esta forma podemos asegurar que LilyPond no asignará ningún +significado al valor devuelto, independientemente de dónde lo +encuentre. También funciona para funciones musicales como +@code{\displayMusic}. + +@node Funciones musicales +@section Funciones musicales +@translationof Music functions + +@cindex funciones musicales + +Las @emph{funciones musicales} son procedimientos de Scheme que pueden +crear automáticamente expresiones musicales, y se pueden usar para +simplificar enormemente el archivo de entrada. + +@menu +* Definiciones de funciones musicales:: +* Uso de las funciones musicales:: +* Funciones de sustitución sencillas:: +* Funciones de sustitución intermedias:: +* Matemáticas dentro de las funciones:: +* Funciones sin argumentos:: +* Funciones musicales vacías:: +@end menu +@node Definiciones de funciones musicales +@subsection Definiciones de funciones musicales +@translationof Music function definitions +@cindex definición de funciones musicales +@funindex define-music-function + +La forma general para definir funciones musicales es: + +@example +funcion = +#(define-music-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{tipo1?} @var{tipo2?} @dots{}) + @var{cuerpo}) +@end example + +@noindent +de forma bastante análoga a @ref{Definición de funciones de Scheme}. +Lo más probable es que el @var{cuerpo} sea un +@ref{Bloques de código de LilyPond,bloque de código de LilyPond}. + +Para ver una lista de los predicados de tipo disponibles, consulte +@ruser{Predicados de tipo predefinidos}. @seealso @@ -100,6 +336,46 @@ Archivos de inicio: @file{scm/lily.scm}. +@node Uso de las funciones musicales +@subsection Uso de las funciones musicales +@translationof Music function usage + +Las funciones musicales se pueden actualmente utilizar en varios +lugares. Dependiendo de dónde se usan, son de aplicación ciertas +restricciones para que sea posible su análisis sintáctico de forma +no ambigua. El resultado que devuelve una función musical debe ser +compatible con el contexto desde el que se la llama. + +@itemize +@item +En el nivel superior dentro de una expresión musical. Aquí +no se aplica ninguna restricción. + +@item +Como un post-evento, que comienza explícitamente con un indicador de +dirección (a elegir entre @code{-}, @code{^} @w{y @code{_}}). +Observe que se puede aceptar la devolución de un +post-evento por parte de las funciones musicales que se llaman como +música normal, lo que lleva a un resultado aproximadamente equivalente +a +@example +s 1*0-\fun +@end example + +En este caso, no podemos usar una expresión musical @emph{abierta} +como último argumento, que terminaría en una expresión musical +capaz de aceptar post-eventos adicionales. + +@item +Como componente de un acorde. La expresión devuelta debe ser +del tipo @code{rhythmic-event}, probablemente un @code{NoteEvent}. +@end itemize + +@noindent +Las reglas especiales para los argumentos del final hacen posible +escribir funciones polimórficas como @code{\tweak} que se pueden +aplicar a construcciones distintas. + @node Funciones de sustitución sencillas @subsection Funciones de sustitución sencillas @translationof Simple substitution functions @@ -131,7 +407,7 @@ barraManual = (parser location principio-final) (pair?) #@{ - \once \override Beam #'positions = $principio-final + \once \override Beam #'positions = #principio-final #@}) \relative c' @{ @@ -149,7 +425,7 @@ manualBeam = (parser location beg end) (number? number?) #{ - \once \override Beam #'positions = $(cons beg end) + \once \override Beam #'positions = #(cons beg end) #}) \relative c' { @@ -171,9 +447,9 @@ AltOn = (parser location mag) (number?) #{ - \override Stem #'length = $(* 7.0 mag) + \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = - $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #}) AltOff = { @@ -197,10 +473,10 @@ withAlt = (parser location mag music) (number? ly:music?) #{ - \override Stem #'length = $(* 7.0 mag) + \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = - $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) - $music + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #music \revert Stem #'length \revert NoteHead #'font-size #}) @@ -244,30 +520,42 @@ lilypond -d display-bar-numbers ARCHIVO.ly @end example -@node Funciones vacías -@subsection Funciones vacías -@translationof Void functions +@node Funciones musicales vacías +@subsection Funciones musicales vacías +@translationof Void music functions -Una función musical debe devolver una expresión musical, pero a veces -podemos necesitar una función en la que no hay música en juego (como -la desactivación de la funcionalidad Apuntar y Pulsar). Para hacerlo, -devolvemos una expresión musical @code{void} (vacía). +Una función musical debe devolver una expresión musical. Si quiere +ejecutar una función exclusivamente por sus efectos secundarios, +debería usar @code{define-void-function}. Pero +puede haber casos en los que a veces queremos producir una expresión +musical, y a veces no (como en el ejemplo anterior). Devolver una +expresión musical @code{void} (vacía) por medio de @code{#@{ #@}} lo +hace posible. -Este es el motivo por el que la forma que se devuelve es -@code{(make-music ...)}. Con el valor de la propiedad @code{'void} -establecido a @code{#t}, le decimos al analizador que descarte la -expresión musical devuelta. así, la parte importante de la función -musical vacía es el proceso realizado por la función, no la expresión -musical que se devuelve. -@example -noApuntarYPulsar = -#(define-music-function (parser location) () - (ly:set-option 'point-and-click #f) - (make-music 'SequentialMusic 'void #t)) -... -\noApuntarYPulsar % desactivar la funcionalidad Apuntar y Pulsar. -@end example +@node Funciones de eventos +@section Funciones de eventos +@translationof Event functions +@funindex define-event-function +@cindex event functions + +Para usar una función musical en el lugar de un evento, tenemos que +escribir un indicador de dirección antes de ella. Pero a veces, ello +hace que se pierda la correspondencia con la sintaxis de las +construcciones que queremos sustituir. Por ejemplo, si queremos +escribir instrucciones de matiz dinámico, éstos se adjuntan +habitualmente sin indicador de dirección, como @code{c'\pp}. He aquí +una forma de escribir indicaciones dinámicas arbitrarias: + +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } +@end lilypond + +Podríamos hacer lo mismo usando una función musical, pero entonces +tendríamos que escribir siempre un indicador de dirección antes de +llamarla, como @code{@w{c-\dyn pfsss}}. @node Funciones de marcado @@ -303,14 +591,17 @@ proporcionando una sintaxis similar a la de LilyPond. Por ejemplo: @noindent equivale a: @example -\markup \column @{ \line @{ \bold \italic "hola" \raise #0.4 "mundo" @} - \larger \line @{ fulano fulanito menganito @} @} +#@{ \markup \column @{ \line @{ \bold \italic "hola" \raise #0.4 "mundo" @} + \larger \line @{ fulano fulanito menganito @} @} #@} @end example @noindent Este ejemplo muestra las principales reglas de traducción entre la sintaxis del marcado normal de LilyPond y la sintaxis del marcado de -Scheme. +Scheme. La utilización de @code{#@{ @dots{} #@}} para escribir en la +sintaxis de LilyPond será con frecuencia lo más conveniente, pero +explicamos cómo usar la macro @code{markup} para obtener una solución +sólo con Scheme. @quotation @multitable @columnfractions .3 .3 @@ -329,7 +620,8 @@ Scheme. Todo el lenguaje Scheme está accesible dentro del macro @code{markup}. Por ejemplo, podemos usar llamadas a funciones dentro de @code{markup} para así manipular cadenas de caracteres. Esto es útil si se están -definiendo instrucciones de marcado nuevas (véase @ref{Definición de una instrucción de marcado nueva}). +definiendo instrucciones de marcado nuevas (véase +@ref{Definición de una instrucción de marcado nueva}). @knownissues @@ -457,7 +749,7 @@ aplicado a todos los elementos de la lista de marcados original. Dado que la replicación de los argumentos precedentes para aplicar una función de marcado a una lista de marcados es poco costosa principalmente por los argumentos de Scheme, se evitan las caídas de -reindimiento simplemente mediante la utilización de argumentos de +rendimiento simplemente mediante la utilización de argumentos de Scheme para los argumentos antecedentes de las funciones de marcado que toman un marcado como su último argumento. @@ -506,8 +798,8 @@ El ejemplo siguiente define una instrucción de marcado para trazar un rectángulo doble alrededor de un fragmento de texto. En primer lugar, necesitamos construir un resultado aproximado -utilizando marcados. Una consulta a @ruser{Text markup commands} nos -muestra que es útil la instrucción @code{\box}: +utilizando marcados. Una consulta a @ruser{Instrucciones de marcado +de texto} nos muestra que es útil la instrucción @code{\box}: @lilypond[quote,verbatim,ragged-right] \markup \box \box HELLO @@ -527,7 +819,8 @@ Después, el relleno o separación entre los dos rectángulos nos parece muy pequeño, así que lo vamos a sobreescribir también: @lilypond[quote,verbatim,ragged-right] -\markup \override #'(box-padding . 0.4) \box \override #'(box-padding . 0.6) \box A +\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box A @end lilypond Repetir esta extensa instrucción de marcado una y otra vez sería un @@ -536,6 +829,16 @@ marcado. Así pues, escribimos una instrucción de marcado @code{double-box}, que toma un argumento (el texto). Dibuja los dos rectángulos y añade una separación. +@lisp +#(define-markup-command (double-box layout props text) (markup?) + "Trazar un rectángulo doble rodeando el texto." + (interpret-markup layout props + #@{\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box @{ #text @}#@})) +@end lisp + +or, equivalently + @lisp #(define-markup-command (double-box layout props text) (markup?) "Trazar un rectángulo doble rodeando el texto." @@ -548,10 +851,11 @@ rectángulos y añade una separación. @code{markup?} es el tipo: lo identifica como un elemento de marcado. La función @code{interpret-markup} se usa en casi todas las instrucciones de marcado: construye un sello, usando @code{layout}, -@code{props}, y un elemento de marcado. Aquí, la marca se construye -usando el macro de Scheme @code{markup}, véase @ref{Construcción de -elementos de marcado en Scheme}. La transformación de una expresión -@code{\markup} en una expresión de marcado de Scheme es directa. +@code{props}, y un elemento de marcado. En el segundo caso, la marca +se construye usando el macro de Scheme @code{markup}, véase +@ref{Construcción de elementos de marcado en Scheme}. La +transformación de una expresión @code{\markup} en una expresión de +marcado de Scheme es directa. La instrucción nueva se puede usar como sigue: @@ -568,6 +872,19 @@ nueva propiedad, @code{inter-box-padding}, para el relleno entre los rectángulos. El @code{box-padding} se usará para el relleno interno. Ahora el código nuevo es como se ve a continuación: +@lisp +#(define-markup-command (double-box layout props text) (markup?) + #:properties ((inter-box-padding 0.4) + (box-padding 0.6)) + "Trazar un rectángulo doble rodeando el texto." + (interpret-markup layout props + #@{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + @{ #text @} #@})) +@end lisp + +De nuevo, la versión equivalente que utiliza la macro de marcado sería: + @lisp #(define-markup-command (double-box layout props text) (markup?) #:properties ((inter-box-padding 0.4) @@ -598,8 +915,9 @@ y el relleno de los rectángulos se puede personalizar: (box-padding 0.6)) "Draw a double box around text." (interpret-markup layout props - (markup #:override `(box-padding . ,inter-box-padding) #:box - #:override `(box-padding . ,box-padding) #:box text))) + #{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + { #text } #})) \markup \double-box A \markup \override #'(inter-box-padding . 0.8) \double-box A @@ -711,6 +1029,15 @@ En el siguiente ejemplo se define una instrucción de lista de marcado estando la primera de ellas sangrada. La anchura del sangrado se toma del argumento @code{props}. +@example +#(define-markup-list-command (paragraph layout props args) (markup-list?) + #:properties ((par-indent 2)) + (interpret-markup-list layout props + #@{\markuplist \justified-lines @{ \hspace #par-indent #args @} #@})) +@end example + + +La versión que usa solamente Scheme es más compleja: @example #(define-markup-list-command (paragraph layout props args) (markup-list?) #:properties ((par-indent 2)) @@ -728,17 +1055,17 @@ En primer lugar, la función toma el ancho del sangrado, una propiedad llamada aquí @code{par-indent}, de la lista de propiedades @code{props}. Si no se encuentra la propiedad, el valor predeterminado es @code{2}. Después, se hace una lista de líneas -justificadas usando la función -@code{make-justified-lines-markup-list}, que está relacionada con la -instrucción incorporada de lista de marcados @code{\justified-lines}. -Se añade un espacio horizontal al principio usando la función -@code{make-hspace-markup}. Finalmente, la lista de marcados se +justificadas usando la instrucción incorporada de lista de marcados +@code{\justified-lines}, que está relacionada con la función +@code{make-justified-lines-markup-list}. Se añade un espacio +horizontal al principio usando @code{\hspace} (o la función +@code{make-hspace-markup}). Finalmente, la lista de marcados se interpreta usando la función @code{interpret-markup-list}. Esta nueva instrucción de lista de marcados se puede usar como sigue: @example -\markuplines @{ +\markuplist @{ \paragraph @{ El arte de la tipografía musical se llama \italic @{grabado (en plancha).@} El término deriva del proceso tradicional de impresión de música. @@ -855,7 +1182,7 @@ p. ej.: \override Stem #'thickness = #2.0 @end example -Las propiedades pueden fijarse también a un procedimiento de scheme, +Las propiedades pueden fijarse también a un procedimiento de Scheme, @lilypond[fragment,verbatim,quote,relative=2] \override Stem #'thickness = #(lambda (grob) @@ -945,10 +1272,6 @@ F = \tweak #'font-size #-3 -\flageolet @end example @noindent -En otras palabras, @code{\tweak} no se comporta como una articulación -en cuando a la sintaxis; concretamente, no se puede adjuntar con -@code{^} y @code{_}. - Usando Scheme, se puede dar un rodeo a este problema. La ruta hacia el resultado se da en @ref{Añadir articulaciones a las notas (ejemplo)}, especialmente cómo usar @code{\displayMusic} como guía de diff --git a/Documentation/es/extending/scheme-tutorial.itely b/Documentation/es/extending/scheme-tutorial.itely index c7d53baaf6..df3b090ef3 100644 --- a/Documentation/es/extending/scheme-tutorial.itely +++ b/Documentation/es/extending/scheme-tutorial.itely @@ -1,20 +1,19 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097 + Translation of GIT committish: 3c169262c8f580c0f42c09f3a61b9ae9f0d6261c 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" +@c \version "2.16.0" @node Tutorial de Scheme @appendix Tutorial de Scheme @translationof Scheme tutorial -@funindex # @cindex Scheme @cindex GUILE @cindex Scheme, código en línea @@ -74,13 +73,21 @@ Guile de Scheme. Sobre casi todos los sistemas puede experimentar en una @qq{caja de arena} de Scheme abriendo una ventana del terminal y tecleando @q{guile}. En algunos sistemas, sobre todo en Windows, podría necesitar ajustar la variable de entorno @code{GUILE_LOAD_PATH} -a la carpeta @code{../usr/shr/guile/1.8} dentro de la instalación de +a la carpeta @code{../usr/share/guile/1.8} dentro de la instalación de LilyPond (para conocer la ruta completa a esta carpeta, consulte @rlearning{Otras fuentes de información}). Como alternativa, los usuarios de Windows pueden seleccionar simplemente @q{Ejecutar} del menú Inicio e introducir @q{guile}. -Una vez está funcionando el cajón de arena de Guile, verá un indicador +Sin embargo, está disponible un cajón de arena de Scheme listo para +funcionar con todo LilyPond cargado, con esta instrucción de la línea +de órdenes: +@example +lilypond scheme-sandbox +@end example + +@noindent +Una vez está funcionando el cajón de arena, verá un indicador del sistema de Guile: @lisp @@ -88,7 +95,12 @@ guile> @end lisp Podemos introducir expresiones de Scheme en este indicador para -experimentar con Scheme. +experimentar con Scheme. Si quiere usar la biblioteca readline de GNU +para una más cómoda edición de la línea de órdenes de Scheme, consulte +el archivo @file{ly/scheme-sandbox.ly} para más información. Si ya ha +activado la biblioteca readline para las sesiones de Guile +interactivas fuera de LilyPond, debería funcionar también en el cajón +de arena. @node Variables de Scheme @subsection Variables de Scheme @@ -161,7 +173,7 @@ Los valores Booleanos son Verdadero y Falso. Verdadero en Scheme es @item Números Los números se escriben de la forma normal, @code{1} es el número -(entero) uno, mientras que @code{-1.5} es un número en coma flotante +(entero) uno, mientras que @w{@code{-1.5}} es un número en coma flotante (un número no entero). @item Cadenas @@ -631,6 +643,7 @@ guile> (cond ((< a b) "a es menor que b") * Sintaxis del Scheme de LilyPond:: * Variables de LilyPond:: * Variables de entrada y Scheme:: +* Importación de Scheme dentro de LilyPond:: * Propiedades de los objetos:: * Variables de LilyPond compuestas:: * Representación interna de la música:: @@ -639,30 +652,90 @@ guile> (cond ((< a b) "a es menor que b") @node Sintaxis del Scheme de LilyPond @subsection Sintaxis del Scheme de LilyPond @translationof LilyPond Scheme syntax +@funindex $ +@funindex # El intérprete Guile forma parte de LilyPond, lo que significa que se puede incluir Scheme dentro de los archivos de entrada de LilyPond. -La marca de almohadilla @code{#} se utiliza para indicar al analizador -sintáctico de LilyPond que lo siguiente es un valor de Scheme. - -Una vez el analizador sintáctico se encuentra con un símbolo de -almohadilla, la entrada se le pasa al intérprete Guile para evaluar la -expresión de Scheme. El intérprete continúa procesando la entrada -hasta que se encuentra con el final de una expresión de Scheme. - -Los procedimientos de Scheme se pueden definir dentro de los archivos -de entrada de LilyPond: +Existen varios métodos para incluir Scheme dentro de LilyPond. + +La manera más sencilla es utilizar el símbolo de +almohadilla@tie{}@code{#} antes de una expresión de Scheme. + +Ahora bien, el código de entrada de LilyPond se estructura en +elementos y expresiones, de forma parecida a cómo el lenguaje humano +se estructura en palabras y frases. LilyPond tiene un analizador +léxico que reconoce elementos indivisibles (números literales, cadenas +de texto, elementos de Scheme, nombres de nota, etc.), y un analizador +sintáctico que entiende la sintaxis, la @ruser{Gramática de LilyPond}. +Una vez que sabe que se aplica una regla sintáctica concreta, ejecuta +las acciones asociadas con ella. + +El método del símbolo de almohadilla@tie{}@code{#} para incrustar +Scheme se adapta de forma natural a este sistema. Una vez que el +analizador léxico ve un símbolo de almohadilla, llama al lector de +Scheme para que lea una expresión de Scheme completa (que puede ser un +identificador, una expresión encerrada entre paréntesis, o algunas +otras cosas). Después de que se ha leído la expresión de Scheme, se +almacena como el valor de un elemento @code{SCM_TOKEN} de la +gramática. Después de que el analizador sintáctico ya sabe cómo hacer +uso de este elemento, llama a Guila para que evalúe la expresión de +Scheme. Dado que el analizador sintáctico suele requerir un poco de +lectura por delante por parte del analizador léxico para tomar sus +decisiones de análisis sintáctico, esta separación de lectura y +evaluación entre los analizadores léxico y sintáctico es justamente lo +que se necesita para mantener sincronizadas las ejecuciones de +expresiones de LilyPond y de Scheme. Por este motivo se debe usar el +símbolo de almohadilla@tie{}@code{#} para llamar a Scheme siempre que +sea posible. + +Otra forma de llamar al intérprete de Scheme desde lilyPond es el uso +del símbolo de dólar@tie{}@code{$} en lugar de la almohadilla para +introducir las expresiondes de Scheme. En este caso, LilyPond evalúa +el código justo después de que el analizador léxico lo ha leído. +Comprueba el tipo resultante de la expresión de Scheme y después +selecciona un tipo de elemento (uno de los varios elementos +@code{xxx_IDENTIFIER} dentro de la sintaxis) para él. Crea una +@emph{copia} del valor y la usa como valor del elemento. Si el valor +de la expresión es vacío (El valor de Guile de @code{*unspecified*}), +no se pasa nada en absoluto al analizador sintáctico. + +Éste es, de hecho, el mismo mecanismo exactamente que LilyPond emplea +cuando llamamos a cualquier variable o función musical por su nombre, +como @code{\nombre}, con la única diferencia de que el nombre viene +determinado por el analizador léxico de LilyPond sin consultar al +lector de Scheme, y así solamente se aceptan los nombres de variable +consistentes con el modo actual de LilyPond. + +La acción inmediata de @code{$} puede llevar a alguna que otra +sorpresa, véase @ref{Variables de entrada y Scheme}. La utilización +de @code{#} donde el analizador sintáctico lo contempla es normalmente +preferible. Dentro de las expresiones musicales, aquellas que se +crean utilizando @code{#} @emph{se interprentan} como música. Sin +embargo, @emph{no se copian} antes de ser utilizadas. Si forman parte +de alguna estructura que aún podría tener algún uso, quizá tenga que +utilizar explícitamente @code{ly:music-deep-copy}. + +@funindex $@@ +@funindex #@@ +También existen los operadores de @q{división de listas} @code{$@@} y +@code{#@@} que insertan todos los elementos de una lista dentro del +contexto circundante. + +Ahora echemos un vistazo a algo de código de Scheme real. Los +procedimientos de Scheme se pueden definir dentro de los archivos de +entrada de LilyPond: @example -#(define (average a b c) (/ (+ a b c) 3)) +#(define (media a b c) (/ (+ a b c) 3)) @end example Observe que los comentarios de LilyPond (@code{%} y @code{%@{ %@}}) no se pueden utilizar dentro del código de Scheme, ni siquiera dentro de -un archivo de entrada de LilyPond input file, porque es el intérprete -Guile, y no el analizador sintáctico de LilyPond, el que está -interpretando la expresión de Scheme. Los comentarios en el Scheme de -Guile se introducen como sigue: +un archivo de entrada de LilyPond, porque es el intérprete Guile, y no +el analizador léxico de LilyPond, el que está leyendo la expresión de +Scheme. Los comentarios en el Scheme de Guile se introducen como +sigue: @example ; esto es un comentario de una línea @@ -675,8 +748,8 @@ Guile se introducen como sigue: @end example Durante el resto de esta sección, supondremos que los datos se -introducen en un archivo de música, por lo que añadiremos almohadillas -@code{#} al principio de todas las expresiones de Scheme. +introducen en un archivo de música, por lo que añadiremos +almohadillas@tie{}@code{#} al principio de todas las expresiones de Scheme. Todas las expresiones de Scheme del nivel jerárquico superior dentro de un archivo de entrada de LilyPond se pueden combinar en una sola @@ -718,6 +791,18 @@ veintiCuatro = (* 2 doce) lo que daría lugar a que el número 24 se almacenase dentro de la variable @code{veintiCuatro} de LilyPond (y de Scheme). +La forma usual de referirse a las variables de LilyPond, +@ref{Sintaxis del Scheme de LilyPond}, + +es llamarlas usando una barra invertida, es decir +@code{\veintiCuatro}. Dado que esto crea una copia para la mayor +parte de los tipos internos de LilyPond, concretamente las expresiones +musicales, las funciones musicales no sueln crear copias del material +que ellas mismas modifican. Por este motivo, las expresiones +musicales dadas con @code{#} no deberían, por lo general, contener +material que no se haya creado partiendo de cero o copiado +explícitamente en lugar de estar referenciado directamente. + @node Variables de entrada y Scheme @subsection Variables de entrada y Scheme @translationof Input variables and Scheme @@ -770,40 +855,81 @@ usando Scheme. El resultado se importa dentro de un bloque @lilypond[verbatim] traLaLa = { c'4 d'4 } -%% dummy action to deal with parser lookahead -#(display "this needs to be here, sorry!") - #(define newLa (map ly:music-deep-copy (list traLaLa traLaLa))) #(define twice (make-sequential-music newLa)) -{ \twice } +\twice @end lilypond @c Due to parser lookahead -En este ejemplo, la asignación se produce después de que el analizador -sintáctico ha verificado que no ocurre nada interesante después de -@code{traLaLa = @{ ... @}}. Sin la sentencia muda del ejemplo -anterior, la definición de @code{newLa} se ejecuta antes de que se -defina @code{traLaLa}, produciendo un error de sintaxis. +En realidad, éste es un ejemplo bastante interesante. La asignación +solo tiene lugar después de que el analizador sintáctico se ha +asegurado de que no sigue nada parecido a @code{\addlyrics}, de manera +que necesita comprobar lo que viene a continuación. Lee el símbolo +@code{#} y la expresión de Scheme siguiente @emph{sin} evaluarla, de +forma que puede proceder a la asignación, y @emph{posteriormente} +ejecutar el código de Scheme sin problema. + +@node Importación de Scheme dentro de LilyPond +@subsection Importación de Scheme dentro de LilyPond +@translationof Importing Scheme in LilyPond +@funindex $ +@funindex # El ejemplo anterior muestra cómo @q{exportar} expresiones musicales desde la entrada al intérprete de Scheme. Lo contrario también es -posible. Envolviendo un valor de Scheme en la función -@code{ly:export}, se interpreta un valor de Scheme como si hubiera -sido introducido en la sintaxis de LilyPond. En lugar de definir -@code{\twice}, el ejemplo anterior podría también haberse escrito como +posible. Colocándolo después de @code{$}, un valor de Scheme se +interpreta como si hubiera sido introducido en la sintaxis de +LilyPond. En lugar de definir @code{\twice}, el ejemplo anterior +podría también haberse escrito como @example ... -@{ #(ly:export (make-sequential-music (list newLa))) @} +$(make-sequential-music newLa) @end example -El código de Scheme se evalúa tan pronto como el analizador sintáctico -lo encuentra. Para definir código de Scheme dentro de un macro (para -llamarse más tarde), utilice @ref{Funciones vacías}, o bien +Podemos utilizar @code{$} con una expresión de Scheme en cualquier +lugar en el que usaríamos @code{\@var{nombre}} después de haber +asignado la expresión de Scheme a una variable @var{nombre}. Esta +sustitución se produce dentro del @q{analizador léxico}, de manera que +LilyPond no llega a darse cuenta de la diferencia. + +Sin embargo, existe un inconveniente, el de la medida del tiempo. Si +hubiésemos estado usando @code{$} en vez de @code{#} para definir +@code{newLa} en el ejemplo anterior, la siguiente definición de Scheme +habría fracasado porque @code{traLaLa} no habría sido definida aún. +Para ver una explicación de este problema de momento temporal, véase +@ref{Sintaxis del Scheme de LilyPond}. + +@funindex $@@ +@funindex #@@ +Un conveniente aspecto posterior pueden ser los operadores de +@q{división de listas} @code{$@@} y @code{#@@} para la inserción de +los elementos de una lista dentro del contexto circundante. +Utilizándolos, la última parte del ejemplo se podría haber escrito +como + +@example +... +@{ #@@newLa @} +@end example + +Aquí, cada elemento de la lista que está almacenado en @code{newLa} se +toma en secuencia y se inserta en la lista, como si hubiésemos escrito + +@example +@{ #(first newLa) #(second newLa) @} +@end example + +Ahora bien, en todas esas formas, el código de Scheme se evalúa en el +momento en que el código de entrada aún se está procesando, ya sea en +el analizador léxico o en el analizador sintáctico. Si necesitamos +que se ejecute en un momento posterior, debemos consultar +@ref{Funciones de Scheme vacías}, o almacenarlo dentro de un +procedimiento: @example #(define (nopc) @@ -817,7 +943,7 @@ llamarse más tarde), utilice @ref{Funciones vacías}, o bien @knownissues No es posible mezclar variables de Scheme y de LilyPond con la opción -@code{--safe}. +@option{--safe}. @node Propiedades de los objetos @@ -864,7 +990,7 @@ tiene una propiedad @code{thickness} (grosor), mientras que @subheading Desplazamientos Los desplazamientos bidimensionales (coordenadas X e Y) se almacenan -como @code{parejas}. El @code{car} del desplazamiento es la +como @emph{parejas}. El @code{car} del desplazamiento es la coordenada X, y el @code{cdr} es la coordenada Y. @example @@ -879,6 +1005,16 @@ espacio de pentagrama a la derecha, y dos espacios hacia arriba. Los procedimientos para trabajar con desplazamientos están en @file{scm/lily-library.scm}. +@subheading Fractions + +Fractions as used by LilyPond are again stored as @emph{pairs}, this +time of unsigned integers. While Scheme can represent rational numbers +as a native type, musically @samp{2/4} and @samp{1/2} are not the same, +and we need to be able to distinguish between them. Similarly there are +no negative @q{fractions} in LilyPond's mind. So @code{2/4} in LilyPond +means @code{(2 . 4)} in Scheme, and @code{#2/4} in LilyPond means +@code{1/2} in Scheme. + @subheading Dimensiones Las parejas se usan también para almacenar intervalos, que representan @@ -1019,18 +1155,16 @@ imprime lo siguiente: 'SequentialMusic 'elements (list (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 0 0)) - (make-music 'AbsoluteDynamicEvent 'text - "f"))))) + "f")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)))) @end example De forma predeterminada, LilyPond imprime estos mensajes sobre la @@ -1042,27 +1176,45 @@ salida a un archivo. lilypond archivo.ly >salida.txt @end example -Con la aplicación de un poco de formateo, la información anterior es -fácil de leer, +Con un poco de magia combinada de LilyPond y Scheme, podemos realmente +hacer que LilyPond dirija solamente esta salida a su propio archivo: + +@example +@{ + #(with-output-to-file "display.txt" + (lambda () #@{ \displayMusic @{ c'4\f @} #@})) +@} +@end example + + +Un poco de reformateo hace a la información anterior más fácil de +leer: @example (make-music 'SequentialMusic - 'elements (list (make-music 'EventChord - 'elements (list (make-music 'NoteEvent - 'duration (ly:make-duration 2 0 1 1) - 'pitch (ly:make-pitch 0 0 0)) - (make-music 'AbsoluteDynamicEvent - 'text "f"))))) + 'elements (list + (make-music 'NoteEvent + 'articulations (list + (make-music 'AbsoluteDynamicEvent + 'text + "f")) + 'duration (ly:make-duration 2 0 1 1) + 'pitch (ly:make-pitch 0 0 0)))) @end example Una secuencia musical @code{@{ ... @}} tiene el nombre @code{SequentialMusic}, y sus expresiones internas se almacenan coma una lista dentro de su propiedad @code{'elements}. Una nota se -representa como una expresión @code{EventChord} que contiene un objeto -@code{NoteEvent} (que almacena las propiedades de duración y altura) y -cualquier información adicional (en este caso, un evento -@code{AbsoluteDynamicEvent} con una propiedad @code{"f"} de texto. +representa como un objeto @code{NoteEvent} (que almacena las +propiedades de duración y altura) con información adjunta (en este +caso, un evento @code{AbsoluteDynamicEvent} con una propiedad +@code{"f"} de texto) almacenada en su propiedad @code{articulations}. +@funindex{\void} +@code{\displayMusic} devuelve la música que imprime en la consola, y +por ello se interpretará al tiempo que se imprime en la consola. Para +evitar la interpretación, escriba @code{\void} antes de +@code{\displayMusic}. @node Propiedades musicales @subsection Propiedades musicales @@ -1072,13 +1224,27 @@ cualquier información adicional (en este caso, un evento @c @emph{context} properties, and @emph{layout} properties. These @c are potentially confusing. -El objeto @code{NoteEvent} es el primer objeto de la propiedad -@code{'elements} de @code{someNote}. +Veamos un ejemplo: @example someNote = c' \displayMusic \someNote ===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)) +@end example + +The @code{NoteEvent} object is the representation of @code{someNote}. +Straightforward. How about putting c' in a chord? + +@example +someNote = +\displayMusic \someNote +===> (make-music 'EventChord 'elements @@ -1090,6 +1256,9 @@ someNote = c' (ly:make-pitch 0 0 0)))) @end example +Ahora el objeto @code{NoteEvent} es el primer objeto +de la propiedad @code{'elements} de @code{someNote}. + La función @code{display-scheme-music} es la función que se usa por parte de @code{\displayMusic} para imprimir la representación de Scheme de una expresión musical. @@ -1136,7 +1305,7 @@ d' @translationof Doubling a note with slurs (example) Supongamos que queremos crear una función que convierte una entrada -como @code{a} en @code{a( a)}. Comenzamos examinando la +como @code{a} en @code{@{ a( a) @}}. Comenzamos examinando la representación interna de la música con la que queremos terminar. @example @@ -1146,71 +1315,68 @@ representación interna de la música con la que queremos terminar. 'SequentialMusic 'elements (list (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)) - (make-music 'SlurEvent 'span-direction - -1))) + -1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)) (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)) - (make-music 'SlurEvent 'span-direction - 1))))) + 1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) @end example -Las malas noticias son que las expresiones @code{SlurEvent} se deben -añadir @q{dentro} de la nota (o para ser más exactos, dentro de la -expresión @code{EventChord}). +La mala noticia es que las expresiones @code{SlurEvent} se deben +añadir @q{dentro} de la nota (dentro de la +propiedad @code{articulations}). Ahora examinamos la entrada, @example +\displayMusic a' +===> (make-music - 'SequentialMusic - 'elements - (list (make-music - 'EventChord - 'elements - (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)))))) + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) @end example Así pues, en nuestra función, tenemos que clonar esta expresión (de forma que tengamos dos notas para construir la secuencia), añadir -@code{SlurEvent} a la propiedad @code{'elements} de cada una de +@code{SlurEvent} a la propiedad @code{'articulations} de cada una de ellas, y por último hacer una secuencia @code{SequentialMusic} con los -dos @code{EventChords}. +dos @code{EventChords}. Para añadir a una propiedad, es útil saber +que una propiedad no establecida se lee como @code{'()}, la lista +vacía, así que no se requiere ninguna comprobación especial antes de +que pongamos otro elemento delante de la propiedad +@code{articulations}. + @example doubleSlur = #(define-music-function (parser location note) (ly:music?) "Return: @{ note ( note ) @}. - `note' is supposed to be an EventChord." + `note' is supposed to be a single note." (let ((note2 (ly:music-deep-copy note))) - (set! (ly:music-property note 'elements) + (set! (ly:music-property note 'articulations) (cons (make-music 'SlurEvent 'span-direction -1) - (ly:music-property note 'elements))) - (set! (ly:music-property note2 'elements) + (ly:music-property note 'articulations))) + (set! (ly:music-property note2 'articulations) (cons (make-music 'SlurEvent 'span-direction 1) - (ly:music-property note2 'elements))) + (ly:music-property note2 'articulations))) (make-music 'SequentialMusic 'elements (list note note2)))) @end example @@ -1222,7 +1388,11 @@ doubleSlur = #(define-music-function (parser location note) (ly:music?) La manera fácil de añadir articulación a las notas es mezclar dos expresiones musicales en un solo contexto, como se explica en @ruser{Crear contextos}. Sin embargo, supongamos que queremos -escribir una función musical que lo haga. +escribir una función musical que lo haga. Esto tiene la ventaja +adicional de que podemos usar esa función musical para añadir una +articulación (como una instrucción de digitación) a una nota única +dentro de un acorde, lo cual no es posible si nos limitamos a mezclar +fragmentos de música independientes. Una @code{$variable} dentro de la notación @code{#@{...#@}} es como una @code{\variable} normal en la notación clásica de LilyPond. @@ -1234,10 +1404,10 @@ Sabemos que @noindent no funciona en LilyPond. Podríamos evitar este problema adjuntando la -articulación a una nota falsa, +articulación a un acorde vacío, @example -@{ << \music s1*0-.-> @} +@{ << \music <> -. -> >> @} @end example @noindent @@ -1249,61 +1419,54 @@ Scheme. Empezamos examinando nuestra entrada y la salida deseada, \displayMusic c4 ===> (make-music - 'EventChord - 'elements - (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch -1 0 0)))) + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)))) ===== % desired output \displayMusic c4-> ===> (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch -1 0 0)) - (make-music 'ArticulationEvent 'articulation-type - "marcato"))) + "accent")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)) @end example Vemos que una nota (@code{c4}) se representa como una expresión -@code{EventChord}, con una expresión @code{NoteEvent} en su lista de -elementos. Para añadir una articulación de marcato, se debe añadir -una expresión @code{ArticulationEvent} a la propiedad elements de la -expresión @code{EventChord}. +@code{NoteEvent}. Para añadir una articulación de acento, se debe +añadir una expresión @code{ArticulationEvent} a la propiedad +@code{articulations} de la expresión @code{NoteEvent}. Para construir esta función, empezamos con @example -(define (add-marcato event-chord) - "Add a marcato ArticulationEvent to the elements of `event-chord', - which is supposed to be an EventChord expression." - (let ((result-event-chord (ly:music-deep-copy event-chord))) - (set! (ly:music-property result-event-chord 'elements) - (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements))) - result-event-chord)) +(define (add-accent note-event) + "Add an accent ArticulationEvent to the articulations of `note-event', + which is supposed to be a NoteEvent expression." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) @end example La primera línea es la forma de definir una función en Scheme: el -nombre de la función es @code{add-marcato}, y tiene una variable -llamada @code{event-chord}. En Scheme, el tipo de variable suele +nombre de la función es @code{add-accent}, y tiene una variable +llamada @code{note-event}. En Scheme, el tipo de variable suele quedar claro a partir de su nombre (¡esto también es una buena práctica en otros lenguajes de programación!) @example -"Add a marcato..." +"Add an accent..." @end example @noindent @@ -1311,85 +1474,102 @@ es una descripción de lo que hace la función. No es estrictamente necesaria, pero de igual forma que los nombres claros de variable, es una buena práctica. -@example -(let ((result-event-chord (ly:music-deep-copy event-chord))) -@end example - -Se usa @code{let} para declarar las variables locales. Aquí usamos -una variable local, llamada @code{result-event-chord}, a la que le -damos el valor @code{(ly:music-deep-copy event-chord)}. -@code{ly:music-deep-copy} es una función específica de LilyPond, como -todas las funciones que comienzan por @code{ly:}. Se usa para hacer -una copia de una expresión musical. Aquí, copiamos @code{event-chord} -(el parámetro de la función). Recuerde que nuestro propósito es -añadir un marcato a una expresión @code{EventChord}. Es mejor no -modificar el @code{EventChord} que se ha dado como argumento, porque -podría utilizarse en algún otro lugar. - -Ahora tenemos un @code{result-event-chord}, que es una expresión -@code{NoteEventChord} y es una copia de @code{event-chord}. Añadimos -el marcato a su propiedad de la lista de @code{'elements}. +Se preguntará porqué modificamos el evento de nota directamente en +lugar de trabajar sobre una copia (se puede usar +@code{ly:music-deep-copy} para ello). La razón es un contrato +silencioso: se permite que las funciones musicales modifiquen sus +argumentos; o bien se generan partiendo de cero (como la entrada del +usuario) o están ya copiadas (referenciar una variable de música con +@samp{\name} o la música procedente de expresiones de Scheme +inmediatas @samp{$(@dots{})} proporcionan una copia). Dado que sería +ineficiente crear copias innecesarias, el valor devuelto de una +función musical @emph{no} se copia. Así pues, para cumplir dicho +contrato, no debemos usar ningún argumento más de una vez, y +devolverlo cuenta como una vez. + +En un ejemplo anterior, hemos construido música mediante la repetición +de un argumento musical dado. En tal caso, al menos una repetidión +tuvo que ser una copia de sí misma. Si no lo fuese, podrían ocurrir +cosas muy extrañas. Por ejemplo, si usamos @code{\relative} o +@code{\transpose} sobre la música resultante que contiene los mismos +elementos varias veces, estarían sujetos varias veces a la +relativización o al transporte. Si los asignamos a una variable de +música, se rompe el curso porque hacer referencia a @samp{\name} +creará de nuevo una copia que no retiene la identidad de los elementos +repetidos. + +Ahora bien, aun cuando la función anterior no es una función musical, +se usará normalmente dentro de funciones musicales. Así pues, tiene +sentido obedecer el mismo convenio que usamos para las funciones +musicales: la entrada puede modificarse para producir la salida, y el +código que llama es responsable de crear las copias si aún necesita el +propio argumento sin modificar. Si observamos las propias funciones +de LilyPond como @code{music-map}, veremos que se atienen a los mismos +principios. + +¿En qué punto nos encontramos? Ahora tenemos un @code{note-event} que +podemos modificar, no a causa de la utilización de +@code{ly:music-deep-copy} sino por una explicación muy desarrollada. +Añadimos el acento a su propiedad de lista @code{'articulations}. @example -(set! lugar valor-nuevo) +(set! place new-value) @end example -Aquí, lo que queremos establecer (el @q{lugar}) es la propiedad -@code{'elements} de la expresión @code{result-event-chord}. +Aquí, lo que queremos establecer (el @q{place}) es la propiedad +@code{'articulations} de la expresión @code{note-event}. @example -(ly:music-property result-event-chord 'elements) +(ly:music-property note-event 'articulations) @end example -@code{ly:music-property} es la función que se usa para acceder a las -propiedades musicales (los @code{'elements}, @code{'duration}, -@code{'pitch}, etc, que vimos en la salida de @code{\displayMusic} -anterior). El nuevo valor es la antigua propiedad @code{'elements}, -con un elemento adicional: la expresión @code{ArticulationEvent}, que -copiamos a partir de la salida de @code{\displayMusic}, +@code{ly:music-property} es la función ustilizada para acceder a las +propiedades musicales (las @code{'articulations}, @code{'duration}, +@code{'pitch}, etc, que vemos arriba en la salida de +@code{\displayMusic}). El nuevo valor es la antigua propiedad +@code{'articulations}, con un elemento adicional: la expresión +@code{ArticulationEvent}, que copiamos a partir de la salida de +@code{\displayMusic}, @example (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements)) + 'articulation-type "accent") + (ly:music-property result-event-chord 'articulations)) @end example -@code{cons} se usa para añadir un elemento a una lista sin modificar -la lista original. Esto es lo que queremos: la misma lista que antes, -más la expresión @code{ArticulationEvent} nueva. El orden dentro de -la propiedad @code{'elements} no es importante aquí. +Se usa @code{cons} para añadir un elemento a la parte delantera de una +lista sin modificar la lista original. Esto es lo que queremos: la +misma lista de antes, más la nueva expresión @code{ArticulationEvent}. +El orden dentro de la propiedad @code{'articulations} no tiene +importancia aquí. -Finalmente, una vez hemos añadido la articulación marcato a su -propiedad @code{elements}, podemos devolver @code{result-event-chord}, -de ahí la última línea de la función. +Finalmente, una vez hemos añadido la articulación de acento a su +propiedad @code{articulations}, podemos devolver @code{note-event}, de +aquí la última línea de la función. -Ahora transformamos la función @code{add-marcato} en una función -musical: +Ahora transformamos la función @code{add-accent} en una función +musical (es cuestión de un poco de aderezo sintáctico y una +declaración del tipo de su único argumento @q{real}). @example -addMarcato = #(define-music-function (parser location event-chord) +addAccent = #(define-music-function (parser location note-event) (ly:music?) - "Add a marcato ArticulationEvent to the elements of `event-chord', - which is supposed to be an EventChord expression." - (let ((result-event-chord (ly:music-deep-copy event-chord))) - (set! (ly:music-property result-event-chord 'elements) - (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements))) - result-event-chord)) + "Add an accent ArticulationEvent to the articulations of `note-event', + which is supposed to be a NoteEvent expression." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) @end example Podemos verificar que esta función musical funciona correctamente: @example -\displayMusic \addMarcato c4 +\displayMusic \addAccent c4 @end example - - - - @ignore @menu * Trucos con Scheme:: @@ -1397,7 +1577,7 @@ Podemos verificar que esta función musical funciona correctamente: @c @nod e Trucos con Scheme @c @sectio n Trucos con Scheme -@translationof Tweaking with Scheme +@c @transl ationof Tweaking with Scheme Hemos visto cómo la salida de LilyPond se puede modificar profundamente usando instrucciones como @code{\override TextScript @@ -1417,7 +1597,7 @@ TODO Find a simple example @lilypond[quote,verbatim,ragged-right] padText = #(define-music-function (parser location padding) (number?) #{ - \once \override TextScript #'padding = #$padding + \once \override TextScript #'padding = #padding #}) \relative c''' { @@ -1439,16 +1619,16 @@ Lo podemos usar para crear instrucciones nuevas: @lilypond[quote,verbatim,ragged-right] tempoPadded = #(define-music-function (parser location padding tempotext) - (number? string?) + (number? markup?) #{ - \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } #}) \relative c'' { \tempo \markup { "Low tempo" } c4 d e f g1 - \tempoPadded #4.0 #"High tempo" + \tempoPadded #4.0 "High tempo" g4 f e d c1 } @end lilypond @@ -1459,7 +1639,7 @@ Incluso se le pueden pasar expresiones musicales: @lilypond[quote,verbatim,ragged-right] pattern = #(define-music-function (parser location x y) (ly:music? ly:music?) #{ - $x e8 a b $y b a e + #x e8 a b #y b a e #}) \relative c''{ diff --git a/Documentation/es/included/generating-output.itexi b/Documentation/es/included/generating-output.itexi index 527bcb0a3d..61e0e8b5e3 100644 --- a/Documentation/es/included/generating-output.itexi +++ b/Documentation/es/included/generating-output.itexi @@ -3,7 +3,7 @@ @c learning/tutorial.itely @ignore - Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf + Translation of GIT committish: 66194168b6d61bee8aac10552f029817eb41d835 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... @@ -231,6 +231,7 @@ Disponiendo la música en 1 página... Dibujando los sistemas... Escribiendo la página de salida en `prueba.ps'... Convirtiendo a `prueba.pdf'... +Terminado: la compilación ha finalizado satisfactoriamente @end example @subsubheading Paso 3: Examinar el resultado diff --git a/Documentation/es/included/helpus.itexi b/Documentation/es/included/helpus.itexi index 2b63fcc259..27cd758bf9 100644 --- a/Documentation/es/included/helpus.itexi +++ b/Documentation/es/included/helpus.itexi @@ -3,7 +3,7 @@ @c contributor/introduction.itely @ignore - Translation of GIT committish: 49d3a287160de19e29031b34c6307982d6ad9c9b + Translation of GIT committish: 4c7bdf42ee240fdbb3c3dab2b1c201eae04253fa When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -13,23 +13,30 @@ @macro helpusNeed @subheading ¡Le necesitamos! -El equipo de desarrollo de LilyPond es muy pequeño; verdaderamente nos -gustaría tener a más gente implicada. ¡Considere la posibilidad de -ayudar a sus colegas usuarios de LilyPond mediante contribuciones -al programa! +Gracias por su interés en ayudarnos. ¡Nos encantaría ver que se apunta +a ello! Su contribución ayudará a un gran grupo de usuarios a componer +tipográficamente música de una manera bella y hermosa. Incluso el trabajo sobre pequeñas tareas puede tener un gran impacto: ocuparse de ellas permite a los desarrolladores con experiencia trabajar sobre las tareas avanzadas, en lugar de emplear su tiempo en esos trabajos sencillos. +Para un proyecto polifacético como LilyPond, a veces es difícil saber +por dónde empezar. Además de las vías que se proponen más abajo, +puede enviar un correo electrónico al +@email{mike@@mikesolomon.org,Frog meister} (maestro del equipo de +cazadores de bugs) haciéndole conocer su conjunto de habilidades y +preguntándole cómo puede ayudar, o proponiendo un proyecto. Él le +dará unas indicaciones sobre cómo iniciarse. + @end macro -@macro helpusTasks +@macro helpusSimple @subheading Tareas sencillas -¡No son necesarios el código fuente ni la compilación! +¡No se requiere @strong{ningún conocimiento de programación}! @itemize @item @@ -41,6 +48,13 @@ Informar de fallos: ayude a los usuarios a crear @ref{Informes de fallos} adecuados, y/o apúntese al Escuadrón de Fallos para la organización de los @rcontribnamed{Issues,Problemas}. +@item +@rcontrib{Grand Regression Test Checking} (la Magna Comprobación de +las Pruebas de Regresión): verificar que LilyPond funciona +correctamente examinando el resultado a la salida de los fragmentos de +código de prueba. ¡Se tarda menos de un minuto en comprobar un +fragmento de código! + @item Documentación: se pueden proponer cambios pequeños siguiendo las indicaciones de @rcontribnamed{Documentation suggestions,Sugerencias @@ -58,6 +72,9 @@ prueba de nuevas funcionalidades. ¡Contribuya a estas discusiones! @end itemize +@end macro + +@macro helpusAdvanced @subheading Tareas de nivel avanzado En general, estos trabajos requieren que usted tenga el @@ -74,6 +91,8 @@ deberían leer @rcontribnamed{Working with source code,Trabajar con el código fuente} y @rcontribnamed{Compiling,Compilación}. +Comience leyendo @rcontrib{Summary for experienced developers}. + @itemize @item Documentación: para cambios grandes, consulte @@ -99,7 +118,7 @@ comenzar es unirse a los cazadores de bugs, los Frogs, y leer @end macro - +@ignore @macro helpusProjects @subheading Proyectos @@ -135,7 +154,7 @@ Habrá un amplio período de discusión para determinar la especificación final de la entrada. @warning{El proyecto GLISS dará comienzo poco después del lanzamiento -de la versión 2.14.} +de la versión 2.16.} @subsubheading El proyecto GOP (Grand Organizing Project) @@ -154,9 +173,7 @@ cosas completamente. Más bien está orientado a proporcionarnos una base mucho más estable de forma que podamos afrontar mayores tareas en el futuro. -@warning{El proyecto GOP dará comienzo poco después del -lanzamiento de la versión 2.14.} - @end macro +@end ignore diff --git a/Documentation/es/learning.tely b/Documentation/es/learning.tely index 6241e00812..8472fd6f5b 100644 --- a/Documentation/es/learning.tely +++ b/Documentation/es/learning.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -20,7 +20,7 @@ Este archivo ofrece una introducción al programa LilyPond versión @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 por los autores. +Copyright @copyright{} 1999--2012 por los autores. @end macro @set FDL diff --git a/Documentation/es/learning/common-notation.itely b/Documentation/es/learning/common-notation.itely index 3a310e7669..68237ef63e 100644 --- a/Documentation/es/learning/common-notation.itely +++ b/Documentation/es/learning/common-notation.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 463240fdfd30e9bd60238b246114e5d27319d6d5 + Translation of GIT committish: d6b6b53d09a0fb8e137e7cfcec39fe22dc7b6872 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @ignore Tutorial guidelines: (different from policy.txt!) @@ -222,8 +222,8 @@ aes4 c b c Si se encuentra confundido por lo anterior, piense en lo siguiente: si estuvises tocando un piano, ¿qué tecla pulsaría? Si se tratase de una -tecla negra, entonces ¡@emph{tiene que} añadir @code{-is} ó @code{-es} -al nombre de la nota! +tecla negra, entonces ¡@emph{tiene que} añadir @w{@code{-is}} ó +@w{@code{-es}} al nombre de la nota! Poner todas las alteraciones de forma explícita puede que requiera algo más de trabajo al teclear, pero la ventaja es que la @@ -901,7 +901,6 @@ indicar un acorde es encerrar las notas entre ángulos tener la misma duración, y que la duración se escribe después del ángulo de cierre. - @lilypond[verbatim,quote,relative=2] r4 2 @end lilypond @@ -915,7 +914,8 @@ con acordes. Tan sólo debe recordar que se escriben por fuera de los @lilypond[verbatim,quote,relative=2] r4 ~ 2 | -8[ ] \>[ ]\! | +8[ ] + 8\>[ ]\! | r4 8.\p 16( 4-. ) | @end lilypond @@ -923,6 +923,7 @@ r4 8.\p 16( 4-. ) | Referencia de la notación: @ruser{Notas en acorde}. + @node Polifonía en un solo pentagrama @subsection Polifonía en un solo pentagrama @translationof Single staff polyphony @@ -1403,7 +1404,7 @@ sitúa por debajo del número de versión. Cuando se procesa el archivo, el título y el autor se imprimen por encima de la música. Puede obtener más información sobre los títulos -en @ruser{Crear títulos}. +en @ruser{Crear títulos cabeceras y pies de página}. @node Nombres de nota absolutos diff --git a/Documentation/es/learning/fundamental.itely b/Documentation/es/learning/fundamental.itely index e833266b33..8cb574ca7b 100644 --- a/Documentation/es/learning/fundamental.itely +++ b/Documentation/es/learning/fundamental.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 398e5e95c6cd11f2ef03a5ceed087d87ad28f1e1 + Translation of GIT committish: 3c169262c8f580c0f42c09f3a61b9ae9f0d6261c 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" +@c \version "2.16.0" @node Conceptos fundamentales @@ -621,8 +621,8 @@ De hecho, una capa o contexto de voz es la única que puede contener música. Si un contexto de voz no se declara explícitamente, se crea uno de forma automática, como vimos al comienzo de este capítulo. Ciertos instrumentos como el oboe solamente pueden tocar una nota cada -vez. La música escrita para estos instrumentos es monofónica y -solamente requiere una voz única. Los instrumentos que pueden tocar +vez. La música escrita para estos instrumentos +solamente requiere una voz. Los instrumentos que pueden tocar más de una nota a la vez, como el piano, con frecuencia necesitarán varias voces para codificar las distintas notas y ritmos concurrentes que son capaces de tocar. @@ -659,7 +659,7 @@ solo pentagrama es escribir cada voz como una secuencia (con doble barra invertida, @code{\\}, para situarlos en voces separadas. Sin esto, las notas irían a una sola voz, lo que normalmente produce errores. Esta técnica se adapta especialmente bien a piezas de música -que son mayormente monofónicas pero ocasionalmente tienen cortas +que son mayormente homofónicas pero ocasionalmente tienen cortas secciones de polifonía. He aquí cómo dividimos los acordes anteriores en dos voces y añadimos @@ -714,8 +714,11 @@ usar para codificar tres o más voces mediante la adición de más separadores de barra invertida. Los contextos de voz llevan los nombres de @code{"1"}, @code{"2"}, -etc. En cada uno de estos contextos, la dirección vertical de las -ligaduras, plicas, matices dinámicos, etc., se ajusta de la forma +etc. Los primeros contextos establecen las voces @emph{externas}, la +voz aguda del contexto @code{"1"} y la voz grave del contexto +@code{"2"}. Las voces interiores van en los contextos @code{"3"} y +@code{"4"}. En cada uno de estos contextos, la dirección vertical de +las ligaduras, plicas, matices dinámicos, etc., se ajusta de forma correcta. @lilypond[quote,verbatim] @@ -839,16 +842,19 @@ las complicaciones se explicarán en secciones posteriores). << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } - \\ % No voice three - \\ % Voice four { % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 + \once \override NoteColumn #'ignore-collision = ##t + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ % No voice three + \\ % Voice four + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -886,16 +892,17 @@ entienda. } \\ % Voice two { \voiceTwoStyle - aes2 f4 fes + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'ignore-collision = ##t + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 } \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle - % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes } >> | 1 | @@ -912,7 +919,7 @@ introducir la música del primer compás en tres voces: \new Staff \relative c'' { \key aes \major << - { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des } + { c2 aes4. bes8 } \\ { 2 des } \\ { aes'2 f4 fes } >> | 1 | } @@ -937,31 +944,29 @@ Esto se hace escribiendo otro par de barras invertidas (@code{\\}). << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } + { 2 des } \\ % Omit Voice three \\ % Voice four - { 2 des } + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -Vemos que esto arregla la dirección de la plica, pero presenta un -problema que se encuentra a veces con varias voces: las plicas de las -notas en una voz pueden colisionar con las cabezas de otras voces. Al -disponer las notas, LilyPond permite que las notas o acordes de dos -voces ocupen la misma columna vertical de notas teniendo en cuenta que -las plicas están en direcciones opuestas, pero las notas de la tercera -y cuarta voces se desplazan si es necesario para evitar la colisión -entre las cabezas. Esto funciona bien por lo general, pero en este -ejemplo claramente las notas de la voz inferior no están bien -colocadas de forma predeterminada. LilyPond proporciona diversas -maneras de ajustar la colocación horizontal de las notas. Aún no -estamos preparados para ver cómo corregir esto, así que dejaremos este -problema aparcado hasta una sección posterior (véase la propiedad +Vemos que esto arregla la dirección de la plica, pero la colocación +horizontal de las notas no es la deseada. LilyPond desplaza las notas +interiores cuando ellas o sus plicas de otro modo colisionarían con +las voces exteriores, pero esto no es lo más adecuado para música de +piano. En otras situaciones, los desplazamientos que LilyPond aplica +pueden no eliminar las colisiones. LilyPond aporta varias formas de +ajustar la colocación horizontal de las notas. Aún no estamos +preparados para ver cómo se corrige esto, por lo que dejaremos el +problema para una sección posterior (véase la propiedad @code{force-hshift} en @ref{Arreglar notación con superposiciones}). +@warning{No se pueden crear letras ni objetos de extensión +(como ligaduras, reguladores, etc.) @q{entre} voces distintas.} @seealso Referencia de la notación: @@ -988,7 +993,7 @@ Referencia de la notación: Los contextos de voz también se pueden crear manualmente dentro de un bloque @code{<< >>} para crear música polifónica, utilizando -@code{\voiceOne} ... @code{\voiceFour} para indicar las direcciones +@code{\voiceOne} @dots{} @code{\voiceFour} para indicar las direcciones requeridas de plicas, ligaduras, etc. En partituras más largas, este método es más claro porque permite que las voces estén separadas y reciban nombres más descriptivos. @@ -1083,7 +1088,7 @@ pueda trazar una ligadura por encima de ellas. @lilypond[quote,ragged-right,verbatim] \new Staff \relative c' { \voiceOneStyle - % The following notes are monophonic + % This section is homophonic c16^( d e f % Start simultaneous section of three voices << @@ -1850,11 +1855,11 @@ Así, esto desactivará los becuadros adicionales en un pentagrama: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1865,11 +1870,11 @@ y esto los desactivará en todos los pentagramas: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1943,12 +1948,12 @@ de la siguiente forma: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -1992,7 +1997,7 @@ continuación presentamos un ejemplo que muestra el formato: \score { \new Staff { \relative c'' { - cis4 e d ces + cisis4 e d cis } } \layout { @@ -2012,12 +2017,12 @@ pentagramas de la partitura: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -3181,7 +3186,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { diff --git a/Documentation/es/learning/preface.itely b/Documentation/es/learning/preface.itely index 5bab74213b..deeb674be8 100644 --- a/Documentation/es/learning/preface.itely +++ b/Documentation/es/learning/preface.itely @@ -1,14 +1,14 @@ @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' Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Preámbulo @unnumbered Preámbulo diff --git a/Documentation/es/learning/templates.itely b/Documentation/es/learning/templates.itely index c4c27c1560..f738258142 100644 --- a/Documentation/es/learning/templates.itely +++ b/Documentation/es/learning/templates.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097 + Translation of GIT committish: f71ede90de06fdc16dad9ed75f38558efe819080 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" +@c \version "2.16.0" @node Plantillas @appendix Plantillas @@ -36,23 +36,23 @@ unas hermosas partituras impresas! @appendixsubsec Sólo notas -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec Notas y letra -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec Notas y acordes -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec Notas, letra y acordes. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -62,37 +62,32 @@ unas hermosas partituras impresas! @appendixsubsec Piano solo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec Piano y melodía con letra -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec Piano con letra centrada -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-centered-lyrics.ly} -@appendixsubsec Piano con dinámicas centradas - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -{piano-template-with-centered-dynamics.ly} - @node Cuarteto de cuerda @appendixsec Cuarteto de cuerda @translationof String quartet -@appendixsubsec Cuarteto de cuerda +@appendixsubsec Cuarteto de cuerda simple -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec Particellas de cuarteto de cuerda -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -102,37 +97,37 @@ unas hermosas partituras impresas! @appendixsubsec Partitura vocal SATB -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec Partitura vocal SATB y reducción para piano automática -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} @appendixsubsec SATB con contextos alineados -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly} @appendixsubsec SATB sobre cuatro pentagramas -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {satb-choir-template---four-staves.ly} @appendixsubsec Estrofas a solo y estribillo a dos voces -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} @appendixsubsec Melodías de himnos -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {hymn-template.ly} @appendixsubsec Salmos -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {anglican-psalm-template.ly} @@ -141,7 +136,7 @@ unas hermosas partituras impresas! @translationof Orchestral templates @appendixsubsec Orquesta, coro y piano -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -152,12 +147,13 @@ unas hermosas partituras impresas! @appendixsubsec Transcripción de música mensural -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Plantilla para transcripción de canto gregoriano -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @@ -168,7 +164,8 @@ unas hermosas partituras impresas! @appendixsubsec Combo de jazz @translationof Jazz combo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {jazz-combo-template.ly} diff --git a/Documentation/es/learning/tutorial.itely b/Documentation/es/learning/tutorial.itely index 41aa855688..ffc4b6d334 100644 --- a/Documentation/es/learning/tutorial.itely +++ b/Documentation/es/learning/tutorial.itely @@ -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' @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @node Tutorial @chapter Tutorial @@ -94,7 +94,7 @@ un mensaje de error. @cindex ver la música @cindex editores de texto -El método para producir un resultado impreso depende de snuestro +El método para producir un resultado impreso depende de nuestro sistema operativo y del programa o programas que utilicemos. @@ -776,7 +776,7 @@ This is item 825 @n ode Navegación con el teclado @s ubsection Navegación con el teclado -@translationof Keyboard navigation +@t ranslationof Keyboard navigation @warning{Esta posibilidad sólo está disponible en los manuales en HTML.} diff --git a/Documentation/es/learning/tweaks.itely b/Documentation/es/learning/tweaks.itely index 7107666400..dbc5e826d3 100644 --- a/Documentation/es/learning/tweaks.itely +++ b/Documentation/es/learning/tweaks.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7130696ee590df198a4dc039423dcc1d36512fd9 + Translation of GIT committish: 2936a7a6c5bca895dfd5725ab2422ad1c6b3ff11 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" +@c \version "2.16.0" @node Trucar la salida @chapter Trucar la salida @@ -224,12 +224,13 @@ los contextos del nivel más bajo, es decir: @code{Voice}, ejemplos siguientes. Veremos más tarde cuándo se debe especificar. Las últimas secciones tratan de forma exhaustiva las propiedades y sus -valores, pero para ilustrar el formato y utilización de estas -instrucciones usaremos sólo unas cuantas propiedades y valores -sencillos que sean fáciles de entender. +valores, véase @ref{Tipos de propiedades}. Pero en esta sección +usaremos sólo unas cuantas propiedades y valores +sencillos que sean fáciles de entender, para ilustrar el formato +y la utilización de estas instrucciones. Por ahora no se preocupe por el @code{#'}, que debe anteponerse a la -propiedad de presentación, y el @code{#}, que debe preceder al valor. +propiedad de presentación, y el@tie{}@code{#}, que debe preceder al valor. Deben estar presentes siempre y de esa forma exacta. Es la instrucción de uso más común dentro del trucaje, y durante la mayor parte del resto de este capítulo presentaremos ejemplos de cómo se @@ -293,7 +294,9 @@ Tanto la instrucción @code{\override} como @code{\set} se pueden preceder por @code{\once}. Esto ocasiona que la siguiente instrucción @code{\override} o @code{\set} sea efectiva solamente durante el tiempo musical en curso y antes de que la propiedad vuelva a tener -otra vez su valor predeterminado. Utilizando el mismo ejemplo, +otra vez su valor anterior (que puede ser distinto de su valor +predeterminado si aún se está aplicando otra instrucción +@code{\override} de sobreescritura). Utilizando el mismo ejemplo, podemos cambiar el color de una sola nota de la siguiente manera: @cindex color, propiedad, ejemplo @@ -301,10 +304,12 @@ podemos cambiar el color de una sola nota de la siguiente manera: @lilypond[quote,fragment,ragged-right,verbatim,relative=1] c4 d -\once \override NoteHead #'color = #red +\override NoteHead #'color = #red e4 f | \once \override NoteHead #'color = #green -g4 a b c | +g4 a +\revert NoteHead #'color +b c | @end lilypond @strong{La instrucción \overrideProperty} @@ -328,8 +333,10 @@ detalles consulte @rextend{Trucos difíciles}. @funindex tweak La última instrucción de trucaje que está disponible es @code{\tweak}. -Se debe utilizar para cambiar las propiedades de objetos que suceden -en el mismo momento musical, como las notas de un acorde. El uso de +Se debe utilizar cuando varios objetos tienen lugar +en el mismo momento musical pero solo queremos cambiar las propiedades +de algunos de ellos, como una sola nota dentro de un acorde. +El uso de @code{\override} para la sobreescritura afectaría a todas las notas del acorde, mientras que @code{\tweak} afecta solamente al siguiente elemento del flujo de entrada. @@ -356,15 +363,11 @@ presentación del tipo especificado que ocurren en el mismo momento musical que la propia instrucción de sobreescritura @code{\override}. La instrucción @code{\tweak} opera de una forma distinta. Actúa sobre -el elemento inmediatamente siguiente dentro del flujo de entrada. Sin -embargo, es efectivo solamente sobre objetos que se crean directamente -a partir del flujo de entrada, en esencia las cabezas y las -articulaciones; los objetos como las plicas y las alteraciones se -crean con posterioridad y no se pueden trucar de esta forma. Es más, -cuando se aplica a las cabezas de las notas, éstas @emph{deben} estar -dentro de un acorde, es decir, dentro de ángulos simples, así que para -trucar una sola nota la instrucción @code{\tweak} se debe colocar -dentro de ángulos simples junto con la nota. +el elemento inmediatamente siguiente dentro del flujo de entrada. +En su forma más sencilla es efectivo solamente sobre objetos +que se crean directamente +a partir del elemento siguiente, en esencia las cabezas y las +articulaciones. Así pues, volviendo a nuestro ejemplo, el tamaño de la nota intermedia se cambiaría de la siguiente forma: @@ -378,11 +381,12 @@ se cambiaría de la siguiente forma: @end lilypond Observe que la sintaxis de @code{\tweak} no es igual que la de -@code{\override}. Ni el contexto ni el objeto de presentación se -deben especificar; de hecho, generaría un error hacerlo. Los dos +@code{\override}. El contexto no se +debe especificar; de hecho, generaría un error hacerlo. +Tanto el contexto como el objeto de presentación están implícitos por el siguiente elemento del flujo de entrada. Observe también que no debe haber un signo igual. Así que la sintaxis -genérica de la instrucción @code{\tweak} es, simplemente, +de la instrucción @code{\tweak} en su forma sencilla es: @example \tweak #'@var{propiedad-de-presentación} #@var{valor} @@ -402,7 +406,32 @@ a4^"Black" @noindent Observe que la instrucción @code{\tweak} debe venir precedida de una -marca de articulación como si ella misma fuera una articulación. +marca de articulación porque la propia expresión trucada debe aplicarse +como una articulación. En el caso de más de una sobreescritura de dirección +(@code{^} o @code{_}), gana la sobreescritura situada más a la izquierda +porque se aplica en último lugar. + +@cindex @code{\tweak}, Accidental +@cindex @code{\tweak}, specific layout object + +Los objetos tales como plicas y alteraciones accidentales se crean más +tarde, y no directamente a partir del evento que viene a continuación. +Aún es posible utilizar @code{\tweak} sobre tales objetos creados +indirectamente mediante el nombrado explícito del objeto de +presentación, siempre y cuando LilyPond pueda rastrear su origen hasta +el evento original: + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +<\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> +@end lilypond + +Esta forma extensa de la instrucción @code{\tweak} se puede describir +como +@example +\tweak @var{layout-object} #'@var{layout-property} @var{value} +@end example @cindex grupos especiales anidados @cindex tresillos anidados @@ -607,7 +636,7 @@ siguiente: \override Slur #'thickness = #5.0 @end example -¡No olvide el @code{#'} antes del nombre de la propiedad y @code{#} +¡No olvide el @code{#'} antes del nombre de la propiedad y@tie{}@code{#} antes del valor nuevo! La pregunta final es @q{¿Dónde se debe colocar esta instrucción?} @@ -967,7 +996,7 @@ en la instrucción @code{\override}. @item Dirección @tab Una constante válida de dirección o su equivalente numérico (se permiten valores decimales entre -1 y 1) @tab @code{LEFT}, @code{CENTER}, @code{UP}, - @code{1}, @code{-1} + @code{1}, @w{@code{-1}} @item Entero @tab Un número entero positivo @tab @code{3}, @code{1} @@ -984,7 +1013,7 @@ en la instrucción @code{\override}. @code{(ly:make-moment 3 8)} @item Número @tab Cualquier valor decimal positivo o negativo - @tab @code{3.5}, @code{-2.45} + @tab @code{3.5}, @w{@code{-2.45}} @item Pareja (de números) @tab Dos números separados por un @q{espacio . espacio}, encerrado entre paréntesis y precedido de un apóstrofo @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)} @@ -1141,7 +1170,7 @@ barras de compás se supriman, por lo que el valor que necesitamos es de @code{Staff}. Observe también que al escribir este valor tenemos @code{#'#} antes del paréntesis de apertura. Se necesita @code{'#} como parte del valor para introducir un vector, y el primer símbolo de -almohadilla @code{#} se necesita, como siempre, para preceder el valor +almohadilla@tie{}@code{#} se necesita, como siempre, para preceder el valor en sí dentro de la instrucción @code{\override}. @cindex BarLine, ejemplo de sobreescritura @@ -1666,7 +1695,7 @@ tipografía) se pueden cambiar de la misma forma. @node Comportamiento automático @subsection Comportamiento automático -@translationof Automatic behaviour +@translationof Automatic behavior @cindex dentro del pentagrama, objetos @cindex fuera del pentagrama, objetos @@ -1797,7 +1826,7 @@ a4 g c a | @end lilypond Aquí utilizamos las constantes @code{DOWN} (abajo) y @code{UP} -(arriba). Éstos tienen los valores @code{-1} y @code{+1} +(arriba). Éstos tienen los valores @w{@code{-1}} y @code{+1} respectivamente, y dichos valores numéricos también se pueden usar directamente. El valor @code{0} también se puede usar en algunos casos. Se trata simplemente con el significado de @code{UP} para las @@ -1985,8 +2014,8 @@ Aquí podemos ver algunos ejemplos: @noindent Si la digitación parece un poco superpoblada, se puede reducir el tamaño @code{font-size}. El valor predeterminado puede verse en el -objeto @code{Fingering} del RFI que es @code{-5}, así que probaremos -@code{-7}: +objeto @code{Fingering} del RFI que es @w{@code{-5}}, así que probaremos +@w{@code{-7}}: @lilypond[quote,fragment,ragged-right,verbatim,relative=1] \override Fingering #'font-size = #-7 @@ -2537,12 +2566,12 @@ interface @code{self-alignment-interface}. En general son objetos que contienen texto. Los valores son @code{LEFT}, @code{RIGHT} o @code{CENTER}. De forma alternativa se puede especificar un valor numérico entre -@code{-1} y @code{+1}, donde @code{-1} es alineado por la izquierda, +@w{@code{-1}} y @code{+1}, donde @w{@code{-1}} es alineado por la izquierda, @code{+1} es alineado por la derecha, y los números intermedios mueven el texto progresivamente desde alineado por la izquierda hasta alineado por la derecha. Se pueden especificar valores numéricos mayores de @code{1} para mover el texto incluso más lejos hacia la izquierda, o -menos de @code{-1} para alejarlo más hacia la derecha. Un cambio en +menos de @w{@code{-1}} para alejarlo más hacia la derecha. Un cambio en @code{1} en el valor corresponde a un movimiento de la mitad de la longitud total del propio texto. @@ -2842,7 +2871,7 @@ pues el silencio está en la voz dos. El ajuste predeterminado para @code{\voiceTwo} (es decir, en la segunda voz de una construcción @code{<<@{...@} \\ @{...@}>>}) es que @code{staff-position} tenga el valor -4 para MultiMeasureRest, así que tenemos que bajarlo, digamos, -cuatro semi-espacios de pentagrama, al valor @code{-8}. +cuatro semi-espacios de pentagrama, al valor @w{@code{-8}}. @cindex MultiMeasureRest, ejemplo de sobreescritura @cindex staff-position, propiedad, ejemplo @@ -2927,42 +2956,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) @@ -2977,27 +3019,26 @@ dejamos con este aspecto: << { c2 aes4. bes8 } \\ - { aes2 f4 fes } + { 2 des } \\ - { - \voiceFour - 2 des - } + \\ + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -Las dos notas inferiores del primer acorde (es decir, las que están en -al tercera voz) no deberían separarse de la columna de notas de las dos -notas agudas. Para corregir esto, establecemos el valor de -@code{force-hshift} (que es una propiedad de @code{NoteColumn}) de -esas notas a cero. La nota más grave del segundo acorde se sitúa -mejor justo a la derecha de las más agudas. Lo conseguimos -estableciendo el valor de @code{force-hshift} de esta nota a 0.5, o -sea, la anchura de media cabeza de nota a la derecha de la columna de -las notas agudas. +Es necesario que la nota interior del primer acorde (el La bemol de la +cuarta voz) no se aparte de la columna vertical de la nota aguda. +Para corregirlo, ajustamos a cero el valor para esta nota de +@code{force-hshift}, que es una propiedad de @code{NoteColumn}. + +En el segundo acorde preferimos que el Fa esté alineado con el La y +que la nota grave se coloque ligeramente a la derecha para evitar una +colisión de las plicas. Lo conseguimos ajustando el valor de +@code{force-hshift} en la @code{NoteColumn} del Re bemol grave para +moverlo a la derecha medio espacio de pentagrama. Presentamos a continuación el resultado final: @@ -3010,15 +3051,17 @@ Presentamos a continuación el resultado final: << { c2 aes4. bes8 } \\ - { aes2 f4 fes } - \\ { - \voiceFour - \once \override NoteColumn #'force-hshift = #0 - 2 + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ + \\ + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -3065,7 +3108,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3075,7 +3119,8 @@ rhMusic = \relative c'' { % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3433,7 +3478,8 @@ rhMusic = \relative c'' { { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work c,8~ \shiftOnn c2 } \new Voice { @@ -3506,7 +3552,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3516,7 +3563,8 @@ rhMusic = \relative c'' { % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3600,7 +3648,8 @@ de que la ligadura se cruza entre las voces: @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t b8~ b\noBeam } \\ @@ -3615,8 +3664,9 @@ valor de longitud @code{length} a @code{8}, @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t - \once \override Stem #'length = #8 + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t + \tweak Stem #'length #8 b8~ b\noBeam } \\ @@ -3770,7 +3820,7 @@ VerseOne = \lyrics { } VerseTwo = \lyricmode { - O | \emphasize Christ, \normal whose voice the | wa -- ters heard, + O | \once \emphasize Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { @@ -3820,19 +3870,17 @@ las partes que tienen todos los @code{#()}. Esto se explicará en @lilypond[quote,verbatim,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3844,9 +3892,7 @@ inst = } @end lilypond -Existen varios problemas con la salida que se superpone; los -arreglaremos utilizando las técnicas descritas en @ref{Mover objetos}. -Pero también haremos algo respecto a las definiciones @code{mpdolce} e +Hagamos algo respecto a las definiciones @code{mpdolce} e @code{inst}. Éstas producen la salida que deseamos, pero quizá las querríamos utilizar en otra pieza. Podríamos simplemente copiarlas y pegarlas al principio de cada archivo, pero sería bastante molesto. @@ -3859,19 +3905,17 @@ otro archivo: %%% guardar esto en un archivo de nombre "definiciones.ily" mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) @end example Haremos referencia a este archivo utilizando la instrucción @@ -3900,19 +3944,17 @@ archivo como @file{musica.ly}). @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3938,19 +3980,17 @@ Sustituyamos nuestro archivo @file{definiciones.ily} con éste: %%% definiciones.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) \layout@{ \context @{ @@ -3973,19 +4013,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \layout{ \context { @@ -4026,19 +4064,17 @@ también vamos a aumentar el tamaño general de la salida. %%% definiciones.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) #(set-global-staff-size 23) @@ -4062,19 +4098,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) #(set-global-staff-size 23) @@ -4147,7 +4181,7 @@ echarles un vistazo, en primer lugar debe buscar la carpeta correspondiente a su sistema. La ubicación de esta carpeta depende (a) de si consiguió el programa LilyPond descargando un binario precompilado desde el sitio web lilypond.org o si lo instaló mediante -un gestor de paquetes (es decir, distribuido con Linux, o instalado +un gestor de paquetes (es decir, distribuido con GNU/Linux, o instalado bajo fink o cygwin) o fue compilado a partir de la fuente, y (b) de qué sistema operativo está utilizando: @@ -4155,15 +4189,20 @@ qué sistema operativo está utilizando: @strong{Descargado de lilypond.org} @itemize @bullet -@item Linux +@item GNU/Linux Diríjase a +@example @file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/@/share/lilypond/current/} +@end example @item MacOS X Diríjase a +@example @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/@/Resources/share/lilypond/current/} +@end example + bien haciendo @code{cd} hacia este directorio desde el Terminal, o bien manteniendo pulsada la tecla de Control y haciendo click sobre la aplicación de LilyPond, y allí eligiendo @q{Mostrar el contenido del @@ -4172,7 +4211,9 @@ paquete}. @item Windows Mediante el Explorador de Windows, diríjase a +@example @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/@/share/lilypond/current/} +@end example @end itemize diff --git a/Documentation/es/macros.itexi b/Documentation/es/macros.itexi index 1cb27ebb9d..58c40c19b8 100644 --- a/Documentation/es/macros.itexi +++ b/Documentation/es/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 52f98b4061e0eb74b7c1dbcc29e74538b374752f + Translation of GIT committish: 0dab09bcbd2046e1dc38fb264ae8f7d2097d3d71 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -756,7 +756,7 @@ Para la versión de LilyPond @version{} @end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/es/notation.tely b/Documentation/es/notation.tely index 8f942d7bb5..4272e84849 100644 --- a/Documentation/es/notation.tely +++ b/Documentation/es/notation.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,7 @@ lector está familiarizado con el material que hay en @c `Notation Reference' was born 1999-10-11 with git commit 940dda0... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 por los autores. +Copyright @copyright{} 1999--2012 por los autores. @end macro @@ -48,7 +48,7 @@ Copyright @copyright{} 1999--2011 por los autores. @menu * Notación musical:: Notación que se utiliza en casi todos los proyectos. * Notación especializada:: Notación que sólo se usa para cometidos específicos. -* Entrada y salida generales:: Información teneral sobre la entrada y la salida de LilyPond. +* Entrada y salida generales:: Información general sobre la entrada y la salida de LilyPond. * Problemas de espaciado:: Presentación del resultado en papel. * Cambiar los valores por omisión:: Ajuste fino del resultado. diff --git a/Documentation/es/notation/ancient.itely b/Documentation/es/notation/ancient.itely index 3ddce36305..9e9523bd5e 100644 --- a/Documentation/es/notation/ancient.itely +++ b/Documentation/es/notation/ancient.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @c vim: foldmethod=marker @ignore - Translation of GIT committish: 274c916b48393e0f866cbab68c18a505f6fc7ea3 + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" @node Notación antigua @section Notación antigua @@ -27,16 +27,17 @@ * Notación antigua - funcionalidades comunes:: * Tipografiar música mensural:: * Tipografiado del canto gregoriano:: +* Tipografiado del canto kievano en notación cuadrada:: * Trabajar con música antigua - escenarios y soluciones:: @end menu Entre las formas en que está contemplada la notación antigua se -encuentra la posibilidad de tipografiar notación mensural y canto -gregoriano. Se puede acceder a estas funcionalidades mediante la -modificación de propiedades de estilo de objetos gráficos como la -cabeza de las notas o los silencios, o bien mediante la utilización de -uno de los contextos predefinidos para la notación mensural o -gregoriana. +encuentra la posibilidad de tipografiar notación mensural, canto +gregoriano y canto kievano en notación cuadrada. Se puede acceder a +estas funcionalidades mediante la modificación de propiedades de +estilo de objetos gráficos como la cabeza de las notas o los +silencios, o bien mediante la utilización de uno de los contextos +predefinidos para estos estilos. Muchos objetos gráficos, como la cabeza y el corchete de las figuras, las alteraciones, la indicación de compás y los silencios ofrecen una @@ -255,9 +256,7 @@ Referencia de la notación: @ref{Ligaduras mensurales blancas}, @ref{Ligaduras de neumas cuadrados gregorianos}. - @knownissues - Las ligaduras necesitan un espaciado especial que aún no se ha desarrollado. Como consecuencia, la mayor parte del tiempo existe una separación excesiva entre las ligaduras, y a menudo los cortes de @@ -346,12 +345,12 @@ fragmento: Glosario musical: @rglos{custos}. -Referencia de funcionamiento interno: -@rinternals{Custos}. - Fragmentos de código: @rlsr{Ancient notation}. +Referencia de funcionamiento interno: +@rinternals{Custos}. + @node Soporte para bajo cifrado @unnumberedsubsubsec Soporte para bajo cifrado @@ -419,11 +418,11 @@ escribir el canto, como lo demuestra el siguiente fragmento: } @end lilypond - @seealso Glosario musical: @rglos{mensural notation}. + @node Claves de la música mensural @unnumberedsubsubsec Claves de la música mensural @translationof Mensural clefs @@ -459,7 +458,7 @@ clave de Do, mensural @code{mensural-c1}, @code{mensural-c2},@* @code{mensural-c3}, @code{mensural-c4} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "mensural-c2" \override NoteHead #'style = #'mensural c @@ -470,7 +469,7 @@ clave de Fa, mensural @tab @code{mensural-f} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "mensural-f" \override NoteHead #'style = #'mensural c @@ -481,7 +480,7 @@ clave de Sol, mensural @tab @code{mensural-g} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "mensural-g" \override NoteHead #'style = #'mensural c @@ -493,7 +492,7 @@ clave de Do, neomensural @code{neomensural-c1}, @code{neomensural-c2},@* @code{neomensural-c3}, @code{neomensural-c4} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "neomensural-c2" c @end lilypond @@ -505,7 +504,7 @@ de la pauta (el ejemplo muestra la clave de Do en segunda) @code{petrucci-c3}, @code{petrucci-c4},@* @code{petrucci-c5} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "petrucci-c2" \override NoteHead #'style = #'mensural c @@ -519,7 +518,7 @@ distintas líneas de la pauta @code{petrucci-f3}, @code{petrucci-f4},@* @code{petrucci-f5} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "petrucci-f3" \override NoteHead #'style = #'mensural c @@ -530,7 +529,7 @@ clave de Sol en el estilo de Petrucci @tab @code{petrucci-g} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \clef "petrucci-g" \override NoteHead #'style = #'mensural c @@ -545,9 +544,7 @@ Glosario musical: Referencia de la notación: @ref{Clave}. - @knownissues - La clave de Sol mensural está asignada a la clave de Sol de Petrucci. @@ -618,7 +615,7 @@ y @code{mensural}. La tabla anterior utiliza el estilo @code{neomensural}. Los ejemplos siguientes muestran las diferencias que existen entre los estilos: -@lilypond[ragged-right,fragment,relative=1,quote] +@lilypond[ragged-right,relative=1,quote] { \textLengthOn @@ -759,7 +756,7 @@ Aparte del estilo de corchete por defecto @code{default}, sólo está contemplado el estilo @code{mensural} @lilypond[quote,fragment,ragged-right,verbatim] -\override Stem #'flag-style = #'mensural +\override Flag #'style = #'mensural \override Stem #'thickness = #1.0 \override NoteHead #'style = #'mensural \autoBeamOff @@ -776,15 +773,12 @@ No existe un estilo particular de corchete para la notación neo-mensural ni Pet @c music, the default flag style should be used. No existen corchetes en la notación del canto gregoriano. - @seealso Glosario musical: @rglos{mensural notation}, @rglos{flag}. - @knownissues - La unión de los corchetes antiguos a las plicas está ligeramente desviada. @c due to a change in early 2.3.x. @@ -839,7 +833,6 @@ Referencia de la notación: Fragmentos de código: @rlsr{Ancient notation}. - @knownissues El glifo para el silencio de máxima en el estilo mensural es en realidad un silencio de longa perfecta; use dos (o tres) silencios de @@ -874,8 +867,10 @@ controlan a través de la propiedad @code{glyph-name-alist} de los elementos gráficos @code{Accidental} y @code{KeySignature}, respectivamente; p.ej.: -@code{\override Staff.Accidental #'glyph-name-alist = -#alteration-mensural-glyph-name-alist} +@example +\override Staff.Accidental #'glyph-name-alist = + #alteration-mensural-glyph-name-alist +@end example @seealso Glosario musical: @@ -915,7 +910,7 @@ estableciendo @code{suggestAccidentals} al valor verdadero. @funindex suggestAccidentals -@lilypond[verbatim,fragment,relative=1] +@lilypond[verbatim,relative=1] fis gis \set suggestAccidentals = ##t ais bis @@ -937,7 +932,6 @@ ficta = { \once \set suggestAccidentals = ##t } } @end lilypond - @seealso Referencia de funcionamiento interno: @rinternals{Accidental_engraver}, @@ -1056,9 +1050,9 @@ Referencia de la notación: @knownissues El espaciado horizontal de las ligaduras es pobre. - Las alteraciones accidentales pueden colisionar con las notas previas. + @node Tipografiado del canto gregoriano @subsection Tipografiado del canto gregoriano @translationof Typesetting Gregorian chant @@ -1132,7 +1126,6 @@ como lo demuestra el siguiente fragmento: @c TODO: nothing here yet ... - @node Claves de canto gregoriano @unnumberedsubsubsec Claves de canto gregoriano @translationof Gregorian clefs @@ -1164,11 +1157,12 @@ Clave de Do, estilo Editio Vaticana @code{vaticana-do1}, @code{vaticana-do2},@* @code{vaticana-do3} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'vaticana.punctum \clef "vaticana-do2" c @@ -1179,11 +1173,12 @@ Clave de Fa, estilo Editio Vaticana @tab @code{vaticana-fa1}, @code{vaticana-fa2} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'vaticana.punctum \clef "vaticana-fa2" c @@ -1195,11 +1190,12 @@ Clave de Do, estilo Editio Medicaea @code{medicaea-do1}, @code{medicaea-do2},@* @code{medicaea-do3} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'medicaea.punctum \clef "medicaea-do2" c @@ -1210,11 +1206,12 @@ Clave de Fa, estilo Editio Medicaea @tab @code{medicaea-fa1}, @code{medicaea-fa2} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'medicaea.punctum \clef "medicaea-fa2" c @@ -1226,11 +1223,12 @@ Clave de Do, estilo hufnagel @code{hufnagel-do1}, @code{hufnagel-do2},@* @code{hufnagel-do3} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'hufnagel.punctum \clef "hufnagel-do2" c @@ -1241,11 +1239,12 @@ Clave de Fa, estilo hufnagel @tab @code{hufnagel-fa1}, @code{hufnagel-fa2} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'hufnagel.punctum \clef "hufnagel-fa2" c @@ -1256,17 +1255,17 @@ Clave combinada de Do y Fa, estilo hufnagel @tab @code{hufnagel-do-fa} @tab -@lilypond[fragment,relative=1,notime] +@lilypond[relative=1,notime] \override Staff.StaffSymbol #'color = #red \override Staff.LedgerLineSpanner #'color = #red \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t \override NoteHead #'style = #'hufnagel.punctum \clef "hufnagel-do-fa" c @end lilypond @end multitable - @seealso Glosario musical: @rglos{clef}. @@ -1306,15 +1305,18 @@ Como se ve en el ejemplo, cada estilo no contempla todas las alteraciones. Al intentar acceder a una alteración que no está contemplada, LilyPond cambia a un estilo diferente. +@c @lilypondfile[verbatim,quote,texidoc,doctitle] +@c {ancient-accidentals.ly} El estilo de las alteraciones y las armaduras de tonalidad se controla a través de la propiedad @code{glyph-name-alist} de los grobs (objetos gráficos) @rinternals{Accidental} y @rinternals{KeySignature}, respectivamente; p.ej.: -@code{\override Staff.Accidental #'glyph-name-alist = -#alteration-mensural-glyph-name-alist} - +@example +\override Staff.Accidental #'glyph-name-alist = + #alteration-mensural-glyph-name-alist +@end example @seealso Glosario musical: @@ -1417,7 +1419,7 @@ Referencia de la notación: @ref{Marcas de respiración}. Archivos de inicio: -@file{gregorian.ly}. +@file{ly/gregorian.ly}. @node Articulaciones del canto gregoriano @@ -1447,7 +1449,6 @@ notación en el estilo de la @emph{Editio Vaticana}. } @end lilypond - @seealso Referencia de la notación: @ref{Articulaciones y ornamentos}. @@ -1463,7 +1464,6 @@ Referencia de funcionamiento interno: @rinternals{ScriptEvent}, @rinternals{Script_engraver}. - @knownissues Ciertas articulaciones se colocan demasiado cerca verticalmente de las cabezas de nota correspondientes. @@ -1493,7 +1493,6 @@ de @code{\augmentum a \augmentum g}. } @end lilypond - @seealso Referencia de la notación: @ref{Marcas de respiración}. @@ -2419,7 +2418,6 @@ Están contemplados los siguientes prefijos de cabeza: @code{\linea}. @endpredefined - Se pueden acumular los prefijos de cabeza, aunque con ciertas restricciones. Por ejemplo, se pueden aplicar @code{\descendens} o @code{\ascendens} a una cabeza, pero no los dos a la misma cabeza. @@ -2445,7 +2443,6 @@ Referencia de la notación: @ref{Ligaduras mensurales blancas}, @ref{Ligaduras}. - @knownissues Cuando aparece un punto de @code{\augmentum} al final de la última pauta dentro de una ligadura, a veces se posiciona defectuosamente en @@ -2457,6 +2454,172 @@ en vez de una función musical unaria, de forma que @code{\augmentum} se pudiera entremezclar con los prefijos de cabeza en un orden arbitrario. +@node Tipografiado del canto kievano en notación cuadrada +@subsection Tipografiado del canto kievano en notación cuadrada +@translationof Typesetting Kievan square notation + +@menu +* Contextos del canto kievano:: +* Claves del canto kievano:: +* Cabeza de las notas kievanas:: +* Alteraciones accidentales del canto kievano:: +* Líneas divisorias del canto kievano:: +@end menu + +@node Contextos del canto kievano +@unnumberedsubsubsec Contextos del canto kievano +@translationof Kievan contexts + +@cindex KievanVoiceContext +@cindex KievanStaffContext + +De la misma manera que con las notaciones mensural y gregoriana, +pueden usarse los contextos predefinidos @code{KievanVoice} y +@code{KievanStaff} para tipografiar una pieza en notación cuadrada. +Estos contextos inician todas las propiedades de contexto necesarias a +sus valores adecuados, de manera que pueda ponerse manos a la obra +inmediatamente con la introducción del propio canto: + +@lilypond[quote,ragged-right,verbatim] +\score { + << + \new KievanVoice = "melody" \transpose c c' { + \cadenzaOn + c4 c c c c2 b,\longa + \bar "kievan" + } + \new Lyrics \lyricsto "melody" { + Го -- спо -- ди по -- ми -- луй. + } + >> +} +@end lilypond + +@seealso +Glosario musical: +@rglos{kievan notation}. + +@knownissues +LilyPond contempla la notación del canto kievano en el estilo sinodal, +tal y como se usa en los cantorales impresos por el Sacro Sínodo Ruso +en la década de 1910 y recientemenre reimpreso por la Casa de +Publicaciones del Patriarcado de Moscú. LilyPond no contempla las +formas anteriores (menos corrientes) de notación kievana que se usaban +en Galicia para la notación del canto llano ruso. + +@node Claves del canto kievano +@unnumberedsubsubsec Claves del canto kievano +@translationof Kievan clefs +@cindex clefs + +En la notación kievana solamente se utiliza una clave (la clave +Tse-fa-ut). Se utiliza para indicar la posición del Do: + +@lilypond[quote,relative=1,notime,verbatim] + \clef "kievan-do" + \override NoteHead #'style = #'kievan + c +@end lilypond + +@seealso +Glosario musical: +@rglos{kievan notation}, +@rglos{clef}. + +Referencia de la notación: +@ref{Clave}. + +@node Cabeza de las notas kievanas +@unnumberedsubsubsec Cabeza de las notas kievanas +@translationof Kievan note heads + +@cindex cabezas de nota antiguas + +Para la notación cuadrada del canto kievano, debe escogerse el estilo +apropiado para la forma de la cabeza de las notas. Se consigue +mediante el establecimiento de la propiedad @code{style} del objeto +@code{NoteHead} al valor @code{kievan}. + +La nota final del canto kievano, que suele ir al final de una pieza +musical, puede seleccionarse estableciendo la duración al valor +@code{\longa}. La marca kievana de recitativo, utilizada para indicar +la entonación de varias sílabas sobre una sola nota, se puede +seleccionar estableciendo la duración al valor @code{\breve}. El +siguiente ejemplo muestra las diversas formas de la cabeza de las +notas del canto kievano: + +@lilypond[quote,fragment,ragged-right,verbatim] +\autoBeamOff +\cadenzaOn +\override NoteHead #'style = #'kievan +b'1 b'2 b'4 b'8 b'\breve b'\longa +@end lilypond + +@seealso +Glosario musical: +@rglos{kievan notation}, +@rglos{note head}. + +Referencia de la notación: +@ref{Estilos de cabezas de nota}. + +@knownissues +LilyPond determina de forma automática si debe trazarse la forma de +una nota con la plica hacia arriba o hacia abajo. Sin embargo, cuando +se está tipografiando un canto en notación cuadrada, es preceptivo que +las plicas estén orientadas en la misma dirección dentro de un +melisma. Esto puede hacerse manualmente fijando la propiedad +@code{direction} del objeto @code{Stem}. + +@node Alteraciones accidentales del canto kievano +@unnumberedsubsubsec Alteraciones accidentales del canto kievano +@translationof Kievan accidentals + +@cindex alteraciones accidentales + +El estilo @code{kievan} para las alteraciones accidentales se +selecciona con la propiedad @code{glyph-name-alist} del grob +@code{Accidental}. El estilo @code{kievan} provee unos signos de +sostenido y de bemol diferentes del estilo predeterminado. No esiste +el becuadro en la notación kievana. El símbolo del sostenido no se +utiliza en la música sinodal pero puede aparecer en manuscritos más +antiguos. Se ha incluido principalmente a efectos de compatibilidad. + +@lilypond[quote,relative=1,notime,verbatim] +\clef "kievan-do" +\override NoteHead #'style = #'kievan +\override Accidental #'glyph-name-alist = + #alteration-kievan-glyph-name-alist +bes' dis, +@end lilypond + +@seealso +Glosario musical: +@rglos{kievan notation}, +@rglos{accidental}. + +Referencia de la notación: +@ref{Alteraciones accidentales}, +@ref{Alteraciones accidentales automáticas}, +@ref{La tipografía Feta}. + +@node Líneas divisorias del canto kievano +@unnumberedsubsubsec Líneas divisorias del canto kievano +@translationof Kievan bar line + +Normalmente se coloca una figura decorativa al final de una pieza de +notación kievana, que puede denominarse como «doble barra final del +canto kievano». Se puede invocar como @code{\bar "kievan"}. + +@lilypond[quote,relative=1,notime,verbatim] + \clef "kievan-do" + \override NoteHead #'style = #'kievan + c \bar "kievan" +@end lilypond + +@seealso +@ref{Barras de compás}, +@ref{La tipografía Feta}. @node Trabajar con música antigua - escenarios y soluciones @subsection Trabajar con música antigua - escenarios y soluciones @@ -2494,7 +2657,6 @@ polifónica; Continuará... - @c @seealso @c ... and reference to other sections ... @@ -2512,7 +2674,7 @@ compás, y al mismo tiempo ofrecer la ayuda orientativa que proporcionan las barras de compás. -@lilypondfile[verbatim,lilyquote,texidoc] +@lilypondfile[verbatim,quote,texidoc] {mensurstriche-layout-bar-lines-between-the-staves.ly} @@ -2530,7 +2692,6 @@ ciertos trucos sencillos. @b{Plicas}. Todas las plicas se pueden eliminar de una vez retirando el grabador @code{Stem_engraver} del contexto de voz: - @example \layout @{ ... @@ -2547,7 +2708,9 @@ recitativo monotónico a un gesto melódico fijo. En estos casos podemos usar bien @code{\override Stem #'transparent = ##t} o bien @code{\override Stem #'length = #0}, y restaurar la plica cuando se necesite con el correspondiente @code{\once \override Stem -#'transparent = ##f} (véase el ejemplo de abajo). +#'transparent = ##f} (véase el ejemplo de abajo). Al utilizar +plicas que lleven corchetes, asegúrese de establecer también +@code{\override Flag #'transparent = ##t}. @b{Compás}. Para el canto no medido, existen diversas alternativas. @@ -2596,6 +2759,7 @@ verba = \lyricmode { \remove "Time_signature_engraver" \remove "Bar_engraver" \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } } } @@ -2615,7 +2779,8 @@ chant = \relative c' { c\breve \override NoteHead #'transparent = ##t c c c c c \revert NoteHead #'transparent \override Stem #'transparent = ##f \stemUp c4 b4 a - \override Stem #'transparent = ##t c2 c4 \divisioMaior + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t c2 c4 \divisioMaior c\breve \override NoteHead #'transparent = ##t c c c c c c c \revert NoteHead #'transparent c4 c f, f \finalis } @@ -2636,6 +2801,7 @@ verba = \lyricmode { \remove "Time_signature_engraver" \override BarLine #'transparent = ##t \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } } } @@ -2655,7 +2821,7 @@ del original, en notación moderna. Para evitar que las sílabas de distinta anchura (como @qq{-ri} y @qq{-rum}) dispongan los grupos de notas de las sílabas de forma -irregular, se puede ajustar la propiedad @code{#'X-extent} del objeto +irregular, se puede ajustar la propiedad @code{'X-extent} del objeto @code{LyricText} a un valor fijo. Otra forma más engorrosa sería añadir las sílabas como elementos de @code{\markup}. Si se necesitan más ajustes posteriormente, esto se puede hacer fácilmente con @@ -2686,6 +2852,7 @@ spirLyr = \lyricmode { \remove "Time_signature_engraver" \override BarLine #'X-extent = #'(-1 . 1) \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Beam #'transparent = ##t \override BarLine #'transparent = ##t \override TupletNumber #'transparent = ##t diff --git a/Documentation/es/notation/changing-defaults.itely b/Documentation/es/notation/changing-defaults.itely index 3151ad0934..ddbe95af80 100644 --- a/Documentation/es/notation/changing-defaults.itely +++ b/Documentation/es/notation/changing-defaults.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore -Translation of GIT committish: 274c916b48393e0f866cbab68c18a505f6fc7ea3 +Translation of GIT committish: 47abfd11dbf3902963836c42db1c38a7137af16e 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" +@c \version "2.16.0" @node Cambiar los valores por omisión @chapter Cambiar los valores por omisión @@ -34,7 +34,7 @@ Dicho manual relaciona todas las variables, funciones y opciones que se encuentran disponibles en LilyPond. Está escrito como un documento HTML, que se puede encontrar @c leave the @uref as one long line. -@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en línea}, +@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,en@tie{}línea}, pero que también va incluido en el paquete de la documentación de LilyPond. Internamente, LilyPond utiliza el lenguaje Scheme (un dialecto de @@ -42,7 +42,7 @@ LISP) para aportar la infraestructura. La sobreescritura de las decisiones de disposición da acceso efectivo a las interioridades del programa, lo que requiere código de Scheme como entrada. Los elementos de Scheme se inauguran dentro de un archivo @file{.ly} con -el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de Scheme} +el símbolo de cuadradillo@tie{}@code{#}.@footnote{@rextend{Tutorial de Scheme} contiene un breve tutorial sobre la introducción de números, listas, cadenas y símbolos en Scheme.} @@ -69,10 +69,9 @@ Esta sección explica qué son los contextos y cómo modificarlos. * Modificar los complementos (plug-ins) de contexto:: * Cambiar los valores por omisión de los contextos:: * Definir contextos nuevos:: -* Alinear los contextos:: +* Orden de disposición de los contextos:: @end menu - @seealso Manual de aprendizaje: @rlearning{Contextos y grabadores}. @@ -102,6 +101,7 @@ Los contextos se disponen de forma jerárquica: * Contextos del nivel más bajo. Voces:: @end menu + @node Score. El contexto maestro @unnumberedsubsubsec Score. El contexto maestro @translationof Score - the master of all contexts @@ -116,6 +116,7 @@ Se crea implícitamente una instancia del contexto Score cuando se procesa un bloque @code{\score @{@dots{}@}} o @code{\layout @{@dots{}@}}. + @node Contextos del nivel superior. Contenedores de pentagramas @unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas @translationof Top-level contexts - staff containers @@ -144,6 +145,7 @@ se conectan verticalmente. Igual que @code{GrandStaff}, pero contempla la posibilidad de poner el nombre del instrumento a la izquierda del sistema. + @node Contextos de nivel intermedio. Pentagramas @unnumberedsubsubsec Contextos de nivel intermedio. Pentagramas @translationof Intermediate-level contexts - staves @@ -382,6 +384,7 @@ Para que se interprete dentro de los niveles de @code{Score} o @end itemize + @node Mantener vivos los contextos @subsection Mantener vivos los contextos @translationof Keeping contexts alive @@ -550,8 +553,8 @@ almacenan propiedades, también contienen «plug-ins» o complementos llamados @q{grabadores} que crean elementos de notación. Por ejemplo, el contexto @code{Voice} contiene un grabador @code{Note_heads_engraver} que crea las cabezas de nota y el contexto -@code{Staff} contiene un grabador @code{Key_signature_engraver} que -crea la indicación de compás. +@code{Staff} contiene un grabador @code{Key_engraver} que +crea la armadura. Para ver una descripción completa de todos y cada uno de los complementos, consulte @@ -660,82 +663,348 @@ compás independiente. @knownissues -Normalmente, el orden en que se especifican los grabadores no tiene -importancia, pero en algunos casos especiales sí la tiene, por ejemplo -donde un grabador escribe una propiedad y otro la lee, o donde un -grabador crea un groby otro debe procesarlo. El orden en que los -grabadores se especifican es el orden en que se llaman para realizar -su tarea de procesamiento. +El orden en que los grabadores se especifican es el orden en que se +llaman para realizar su tarea de procesamiento. Normalmente, el orden +en que se especifican los grabadores no tiene importancia, pero en +algunos casos especiales sí la tiene, por ejemplo donde un grabador +escribe una propiedad y otro la lee, o donde un grabador crea un groby +otro debe procesarlo. + +Las siguientes ordenaciones son importantes: + +@itemize +@item +el grabador de compases @code{Bar_engraver} debe ir normalmente en +primer lugar, + +@item +el grabador de digitaciones @code{New_fingering_engraver} debe ir +antes del grabador @code{Script_column_engraver} de columnas de +inscripciones, + +@item +el @code{Timing_translator} debe ir antes del grabador de números de +compás @code{Bar_number_engraver}. + +@end itemize + +@seealso +Archivos instalados: +@file{ly/engraver-init.ly}. -Las siguientes ordenaciones son importantes: el grabador de compases -@code{Bar_engraver} debe ir normalmente en primer lugar, y el grabador -de digitaciones @code{New_fingering_engraver} debe ir antes del -grabador @code{Script_column_engraver} de columnas de inscripciones. -Podría haber otros que tengan dependencias de ordenación. @node Cambiar los valores por omisión de los contextos @subsection Cambiar los valores por omisión de los contextos @translationof Changing context default settings -Los ajustes de contexto que están preparados para usarse de forma -predeterminada en los contextos @code{Score}, @code{Staff} y -@code{Voice}, se pueden especificar dentro de un bloque -@code{\layout}, como se ilustra en el ejemplo siguiente. El bloque -@code{\layout} se debe colocar dentro del bloque @code{\score} en que -se quiere que haga efecto, pero fuera de la música. +@cindex predeterminadas, cambio de propiedades de contexto +@cindex contexto, cambiar propiedades predeterminadas de + +Se pueden cambiar las propiedades de contexto y de grob con las +instrucciones @code{\set} y @code{\override}, tal y como se describe +en @ref{Modificar las propiedades}. Estas instrucciones crean eventos +musicales, haciendo que los cambios tengan efecto en el punto temporal +en que la música se está procesando. + +Por contra, esta sección explica la forma de cambiarlos valores +@emph{predeterminados} de las propiedades de contexto y de grob en el +momento en que se crea el contexto. Existen dos formas de hacerlo. +Una modifica los valores predeterminados en todos los contextos de un +tipo dado, y el otro modifica los valores predeterminados solamente en +una instancia concreta de un contexto. -Observe que la propia instrucción @code{\set} y el contexto se deben -omitir cuando se especifican de esta manera los valores de contexto -predeterminados: +@menu +* Cambiar todos los contextos del mismo tipo:: +* Cambiar solamente un contexto determinado:: +* Orden de precedencia:: +@end menu + +@node Cambiar todos los contextos del mismo tipo +@unnumberedsubsubsec Cambiar todos los contextos del mismo tipo +@translationof Changing all contexts of the same type + +@cindex \context dentro de un bloque \layout +@funindex \context +@funindex \layout + +Los ajustes de contexto que se han de usar de forma predeterminada +dentro de @code{Score}, @code{Staff}, @code{Voice} y otros contextos +se pueden especificar en un bloque @code{\context} dentro de cualquier +bloque @code{\layout}. El bloque @code{\layout} se debe colocar +dentro del bloque @code{\score} al que se aplica, después de la +música. + +@example +\layout @{ + \context @{ + \Voice + [ajustes de contexto para todos los contextos Voice] + @} + \context @{ + \Staff + [ajustes de contexto para todos los contextos Staff] + @} +@} +@end example + +Se pueden especificar los siguientes tipos de ajustes: + +@itemize +@item +Una instrucción @code{\override}, pero omitiendo el nombre del contexto @lilypond[quote,verbatim] \score { \relative c'' { - a4^"Really small, thicker stems, no time signature" a a a - a a a a + a4^"Thicker stems" a a a + a4 a a\ff a } \layout { \context { \Staff - fontSize = #-4 \override Stem #'thickness = #4.0 - \remove "Time_signature_engraver" } } } @end lilypond -En este ejemplo, la instrucción @code{\Staff} especifica que los -ajustes siguientes se apliquen a todos los pentagramas dentro del -bloque de partitura. +@item +Estableciendo una propiedad de contexto directamente -Se pueden realizar de forma similar modificaciones al contexto -@code{Score} o a todos los contextos @code{Voice}. +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Smaller font" a a a + a4 a a\ff a + } + \layout { + \context { + \Staff + fontSize = #-4 + } + } +} +@end lilypond -@knownissues +@item +Una instrucción predefinida tal como @code{\dynamicUp} o una expresión +musical como @code{\accidentalStyle "dodecaphonic"} -No es posible recolectar cambios de contexto dentro de una variable y -aplicarlos a una definición de @code{\context} por referencia a dicha -variable. +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Dynamics above" a a a + a4 a a\ff a + } + \layout { + \context { + \Voice + \dynamicUp + } + \context { + \Staff + \accidentalStyle "dodecaphonic" + } + } +} +@end lilypond -La instrucción @code{\RemoveEmptyStaves} sobreescribe nuestros ajustes -en curso para el contexto @code{\Staff}. Si queremos cambiar los -valores predeterminados para un pentagrama que utilice -@code{\RemoveEmptyStaves}, debemos hacerlo después de llamar a -@code{\RemoveEmptyStaves}, o sea +@item +Una variable definida por el usuario que contenga un bloque +@code{\with}; para ver detalles acerca del bloque @code{\with}, +consulte @ref{Cambiar solamente un contexto determinado}. -@example -\layout @{ - \context @{ - \Staff \RemoveEmptyStaves +@lilypond[quote,verbatim] +StaffDefaults = \with { + fontSize = #-4 +} - \override Stem #'thickness = #4.0 - @} +\score { + \new Staff { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + \layout { + \context { + \Staff + \StaffDefaults + } + } +} +@end lilypond + +@end itemize + +Las instrucciones de ajuste de propiedades se pueden disponer dentro +de un bloque @code{\layout} sin que estén encerradas en un bloque +@code{\context}. Tales ajustes son equivalentes a incluir las mismas +instrucciones de ajuste de propiedades al comienzo de cada uno de los +contextos del tipo especificado. Si no se especifica ningún contexto, +@emph{todos y cada uno} de los contextos del nivel inferior quedan +afectados, véase @ref{Contextos del nivel más bajo. Voces}. La +sintaxis de una instrucción de ajuste de propiedades dentro de un +bloque @code{\layout} es la misma que si la misma instrucción +estuviera escrita en el propio flujo musical. + +@lilypond[quote,verbatim] +\score { + \new Staff { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + \layout { + \accidentalStyle "dodecaphonic" + \set fontSize = #-4 + \override Voice.Stem #'thickness = #4.0 + } +} +@end lilypond + + +@node Cambiar solamente un contexto determinado +@unnumberedsubsubsec Cambiar solamente un contexto determinado +@translationof Changing just one specific context + +@cindex \with +@funindex \with + +Las propiedades de contexto de una única instancia de contexto pueden +cambiarse dentro de un bloque @code{\with}. Todas las demás +instancias de contexto del mismo tipo retienen los ajustes +predeterminados que LilyPond tiene programados y que se modifican por +parte de cualquier bloque @code{\layout} que se encuentre dentro del +ámbito. El bloque @code{\with} se debe situar inmediatamente después +de las instrucciones @code{\new} @var{context-type}: + +@example +\new Staff +\with @{ + [ajustes de contexto para esta única instancia de contexto] +@} @{ +... @} @end example -@c TODO: add \with in here. +Se pueden especificar los siguientes tipos de ajustes: +@itemize +@item +Una instrucción @code{\override}, pero omitiendo el nombre del +contexto + +@lilypond[quote,verbatim] +\score { + \new Staff { + \new Voice + \with { + \override Stem #'thickness = #4.0 + } + { + \relative c'' { + a4^"Thick stems" a a a + a4 a a a + } + } + } +} +@end lilypond + +@item +Estableciendo una propiedad de contexto directamente + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \relative c'' { + a4^"Default font" a a a + a4 a a a + } + } + \new Staff + \with { + fontSize = #-4 + } { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + >> +} +@end lilypond + +@item +Una instrucción predefinida tal como @code{\dynamicUp} + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \new Voice { + \relative c'' { + a4^"Dynamics below" a a a + a4 a a\ff a + } + } + } + \new Staff + \with { \accidentalStyle "dodecaphonic" } + { + \new Voice + \with { \dynamicUp } + { + \relative c'' { + a4^"Dynamics above" a a a + a4 a a\ff a + } + } + } + >> +} +@end lilypond + +@end itemize + +@node Orden de precedencia +@unnumberedsubsubsec Orden de precedencia +@translationof Order of precedence + +El valor de una propiedad que se aplica en un momento determinado se +determina de la siguiente forma: + +@itemize +@item +si está en efecto una instrucción @code{\override} o @code{\set} +dentro del flujo musical, se usa dicho valor, + +@item +de lo contrario, se usa el valor predeterminado tomado de un enunciado +@code{\with} en las instrucciones de inicio del contexto, + +@item +de lo contrario, se usa el valor tomado del bloque @code{\context} más +reciente que corresponda dentro de los bloques @code{\layout}, + +@item +de lo contrario se usa el valor predeterminado que LilyPond lleva +preprogramado. +@end itemize + +@seealso +Manual de aprendizaje: +@rlearning{Modificar las propiedades de los contextos}. + +Referencia de la notación: +@ref{Explicación de los contextos}, +@ref{Contextos del nivel más bajo. Voces}, +@ref{La instrucción set}, +@ref{La instrucción override}, +@ref{El bloque \layout}. @node Definir contextos nuevos @@ -780,6 +1049,7 @@ de jazz, squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice } \context { \Staff @@ -848,6 +1118,7 @@ Las notas parecen barras inclinadas y no tienen plica: @example \override NoteHead #'style = #'slash \override Stem #'transparent = ##t +\override Flag #'transparent = ##t @end example Todos estos añadidos tienen que cooperar, y esto se consigue con un @@ -870,6 +1141,7 @@ Al juntarlo todo, obtenemos squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice @} @end example @@ -923,85 +1195,122 @@ puede escribir como @end example -@node Alinear los contextos -@subsection Alinear los contextos -@translationof Aligning contexts - -Los contextos nuevos se pueden alinear por encima o por debajo de -otros contextos existentes. Esto podría ser de utilidad al preparar -un pentagrama vocal (@rlearning{Conjuntos vocales}) y en el ossia, - -@cindex ossia -@funindex alignAboveContext -@funindex alignBelowContext - -@lilypond[quote,ragged-right] -ossia = { f4 f f f } -\score{ - \relative c' \new Staff = "main" { - c4 c c c - << - \new Staff \with { alignAboveContext = #"main" } \ossia - { d8 f d f d f d f } - >> - } -} -@end lilypond - -@cindex nested contexts -@cindex contexts, nested +@node Orden de disposición de los contextos +@subsection Orden de disposición de los contextos +@translationof Context layout order +@cindex contextos, orden de disposición @funindex \accepts @funindex \denies -Los contextos como @code{PianoStaff} pueden llevar dentro otros -contextos anidados. Los contextos que se pueden aceptar para su -anidamiento están definidos por la lista @qq{accepts} (acepta) de un -contexto. Los contextos que no están en esta lista se colocan debajo -del contexto exterior en la partitura impresa. Por ejemplo, el -contexto @code{PianoStaff} está definido para que acepte contextos -@code{Staff} y @code{FiguredBass} de forma predeterminada, pero no un -contexto @code{Lyrics}, por ejemplo. Así pues, en la siguiente -estructura la letra se sitúa debajo del sistema de piano en lugar de -colocarse entre los dos pentagramas: +Los contextos se disponen en un sistema normalmente desde arriba hacia +abajo en el orden en que se encuentran en el archivo de entrada. +Cuando los contextos se anidan unos dentro de otros, el contexto +exterior incluye a los contextos anidados tal y como se especifica en +el archivo de entrada, siempre y cuando los contextos interiores estén +incluidos en la lista @qq{accepts} del contexto externo. Los +contextos anidados que no está nincluidos en la lista @qq{accepts} del +contexto externo se recolocan debajo del contexto externo en lugar de +anidarse dentro de él. + +La lista @qq{accepts} de un contexto se puede cambiar con las +instrucciones @code{\accepts} (acepta) y @code{\denies} (niega). +@code{\accepts} añade un contexto a la lista @qq{accepts} y +@code{\denies} elimina un contexto de la lista. Por ejemplo, +normalmente no sería deseable que los acordes de cifrado americano +estuvieran anidados dentro de un contexto @code{Staff}, por lo que el +contexto @code{ChordNames} no se incluye de forma predeterminada +dentro de la lista @qq{accepts} del contexto @code{Staff}, pero podría +hacerse si fuera necesario: -@lilypond[verbatim,quote,relative=1] -\new PianoStaff -<< - \new Staff { e4 d c2 } - \addlyrics { Three blind mice } +@lilypond[verbatim,quote] +\score { \new Staff { - \clef "bass" - { c,1 } + c' d' e' f' + \chords { d1:m7 b1:min7.5- } } ->> +} @end lilypond -La lista @qq{accepts} de un contexto se puede modificar para que -incluya contextos anidados adicionales, y así si quisiéramos que la -letra apareciese entre los dos pentagramas podríamos usar: - -@lilypond[verbatim,quote,relative=1] -\new PianoStaff \with { \accepts Lyrics } -<< - \new Staff { e4 d c2 } - \addlyrics { Three blind mice } +@lilypond[verbatim,quote] +\score { \new Staff { - \clef "bass" - { c,1 } + c' d' e' f' + \chords { d1:m7 b1:min7.5- } } ->> + \layout { + \context { + \Staff + \accepts "ChordNames" + } + } +} @end lilypond -Lo contrario de @code{\accepts} (acepta) es @code{\denies} (deniega); -esto suprime un contexto de la lista @qq{accepts}. +@code{\denies} se usa principalmente cuando un contexto nuevo se está +basando en otro, pero los anidamientos requeridos difieren. Por +ejemplo, el contexto @code{VaticanaStaff} está basado en el contexto +@code{Staff}, pero con el contexto @code{VaticanaVoice} sustituido por +el contexto @code{Voice} en la lista @qq{accepts}. + +Observe que discretamente se crea un contexto de forma implícita si se +encuentra una instrucción donde no hay un contexto apropiado para +contenerlo. Esto puede dar lugar a pentagramas o partituras nuevos no +esperados. + +@cindex alignAboveContext +@cindex alignBelowContext +@funindex alignAboveContext +@funindex alignBelowContext + +En ocasiones se necesita que un contexto exista durante un breve +intervalo de tiempo, siendo un buen ejemplo el contexto de pentagrama +de un ossia. Esto se consigue normalmente mediante la introducción de +la definición del contexto en el lugar apropiado en paralelo con la +sección correspondiente de la música principal. De forma +predeterminada, el contexto tempral se coloca debajo de todos los +contextos existentes. Para reposicionallo por encima del contexto que +tenga el nombre @qq{principal}, debería definirse de esta forma: + +@example +@code{\new Staff \with @{ alignAboveContext = #"principal" @} } +@end example + +Se presenta una situación similar cuando se posiciona un contexto +temporal de letra de una canción dentro de una disposición de varios +pentagramas tal como @code{ChoirStaff}, por ejemplo, cuando se añade +una segunda estrofa a una sección que se repite. De forma +predeterminada, el contexto temporal de letra se coloca debajo de los +pentagramas inferiores. Mediante la definición del contexto temporal +de letra con @code{alignBelowContext} se puede posicionar +correctamente debajo del contexto de letra con nombre que contiene el +texto de la primera estrofa. + +En diversos lugares pueden verse ejemplos que muestran esta +recolocación de contextos temporales: véase +@rlearning{Anidado de expresiones musicales}, +@ref{Modificación de pentagramas sueltos} y +@ref{Técnicas específicas para la letra}. + +@seealso +Manual de aprendizaje: +@rlearning{Anidado de expresiones musicales}. + +Referencia de la notación: +@ref{Modificación de pentagramas sueltos}, +@ref{Técnicas específicas para la letra}. + +Manual de utilización del programa: +@rprogram{Aparece un pentagrama de más}. + +Archivos instalados: +@file{ly/engraver-init.ly}. @node Explicación del Manual de referencia de funcionamiento interno @section Explicación del Manual de referencia de funcionamiento interno @translationof Explaining the Internals Reference - @menu * Navegar por la referencia del programa:: * Interfaces de la presentación:: @@ -1296,6 +1605,7 @@ Preguntas aún sin respuesta @end itemize @end ignore + @node Modificar las propiedades @section Modificar las propiedades @translationof Modifying properties @@ -1321,7 +1631,7 @@ ajustes, se puede alterar la apariencia de los objetos. Existen dos tipos diferentes de propiedades almacenadas en los contextos: las propiedades de contexto y las propiedades de grob. Las -prpopiedades de contexto son propiedades que se aplican al contexto +propiedades de contexto son propiedades que se aplican al contexto como un todo y controlan la forma en que el propio contexto se imprime. Por contra, las propiedades de grob se aplican a los tipos de grob específicos que se imprimirán dentro del contexto. @@ -1438,9 +1748,7 @@ Referencia de funcionamiento interno: @rinternals{RevertProperty}, @rinternals{PropertySet}. - @knownissues - El «back-end» o motor de salida no es muy estricto en la comprobación de tipos de las propiedades de objetos. Las referencias cíclicas en valores Scheme de propiedades pueden producir cuelgues o salidas @@ -1465,7 +1773,7 @@ paso de interpretación. Se consigue insertando la instrucción @end example @var{valor} es un objeto de Scheme, razón por la que va precedido del -carácter almohadilla, @code{#}. +carácter almohadilla,@tie{}@code{#}. El nombre de las propiedades de contexto suele ir en minúsculas con mayúscula en medio. Controlan sobre todo la traducción de la música a @@ -1587,15 +1895,14 @@ usuario. @end ifnothtml @seealso - Referencia de funcionamiento interno: @rinternals{Tunable context properties}. - @cindex grob, propiedades de @cindex propiedades de grob @funindex \override + @node La instrucción override @subsection La instrucción @code{\override} @translationof The override command @@ -1751,7 +2058,7 @@ instrucciones de la forma Para muchas propiedades, independientemente del tipo de datos de la propiedad, si se establece el valor de la propiedad a falso -(@code{##f}) se producirá su desactivación, ocasionando que LilyPond +(@code{#f}) se producirá su desactivación, ocasionando que LilyPond ignore por completo dicha propiedad. Esto es especialmente útil para «apagar» propiedades de grobs (objetos gráficos) que de otra manera causarían problemas. @@ -1761,10 +2068,10 @@ manual de notación y en la referencia de funcionamiento interno. @end ignore @seealso - Referencia de funcionamiento interno: @rinternals{Backend} + @node La instrucción tweak @subsection La instrucción @code{\tweak} @translationof The tweak command @@ -1780,11 +2087,12 @@ a todos los grobs del contexto afectado. Esto se consigue con la instrucción @code{\tweak}, que tiene la sintaxis siguiente: @example -\tweak #'@code{propiedad-del-grob} #@code{valor} +\tweak @var{objeto-de-presentación} #'@var{propiedad-del-grob} @var{valor} @end example -La instrucción @code{\tweak} se aplica al objeto que viene -inmediatamente después de @code{valor} dentro del flujo musical. +Es opcional especificar el @var{objeto-de-presentación}. La +instrucción @code{\tweak} se aplica al objeto musical que viene +inmediatamente después de @var{valor} dentro del flujo musical. @ignore En ocasiones es posible tomar un atajo para realizar el ajuste fino de @@ -1884,32 +2192,42 @@ c-\tweak #'thickness #5 ( d e f) Para que funcione la instrucción @code{\tweak}, debe permanecer adyacente al objeto al que se ha de aplicar después de que el código -de entrada se ha convertido a un flujo musical. A veces, LilyPond -puede insertar elementos adicionales dentro del flujo de música -durante el proceso de análisis sintáctico. Por ejemplo, cuando una -nota que no es parte explícita de un acorde se coloca dentro de un -acorde por parte de LilyPond de manera que las notas que se pretenden -modificar con @code{\tweak} se deben poner dentro de una construcción -de acorde: +de entrada se ha convertido a un flujo musical. El trucaje de un +acorde completo no hace nada porque su evento musical actúa solamente +como un contenedor, y todos los objetos de presentación se crean a +partir de eventos dentro del @code{EventChord}: @lilypond[relative=2,verbatim,quote] \tweak #'color #red c4 -<\tweak #'color #red c>4 +\tweak #'color #red 4 +<\tweak #'color #red c e>4 +@end lilypond + +La instrucción @code{\tweak} sencilla no se puede usar para modificar +ningún objeto que no se haya creado directamente a partir de la entrada. +Concretamente, no afecta a las plicas, barras automáticas ni +alteraciones, porque éstos se generan posteriormente por +parte de objetos de presentación @code{NoteHead} +más que por elementos musicales del +flujo de entrada. + +Tales objetos de presencaión creados indirectamente se pueden trucar +usando la forma explícita de la instrucción @code{\tweak}: + +@lilypond[relative=2,verbatim,quote] +\tweak Stem #'color #red +\tweak Beam #'color #green c8 e +4 @end lilypond -La instrucción @code{\tweak} no se puede usar para modificar ningún -elemento que no aparezca explícitamente en el código de entrada. -Concretamente, no se puede usar para modificar plicas, barras o -alteraciones directamente, porque éstos se generan posteriormente por -parte de las cabezas de las notas, más que por elementos musicales del -flujo de entrada. Tampoco se puede usar @code{\tweak} para modificar -las claves ni las indicaciones de compás, porque se separarán de -cualquier instrucción @code{\tweak} que aparezca en el flujo de -entrada debido a la inserción automática de los elementos adicionales -que se requieren para especificar el contexto. +No se puede usar @code{\tweak} para modificar las claves o las +indicaciones de compás, porque éstos se separan de cualquier +instrucción @code{\tweak} precedente dentro del flujo de entrada +merced a la inserción automática de elementos adicionales que se +requieren para especificar el contexto. -También se pueden escribir varias instrucciones @code{\tweak} antes de -un elemento notacional, y todas ellas le afectan: +Se pueden colocar varias instrucciones @code{\tweak} antes de un +elemento de notación; todos le afectan: @lilypond[verbatim,quote,relative=1] c @@ -1927,7 +2245,6 @@ puede examinarse, véase @rextend{Presentación de las expresiones musicales}. Esto puede ser de utilidad en la determinación de lo que puede modificarse por medio de una instrucción @code{\tweak}. - @seealso Manual de aprendizaje: @rlearning{Métodos de trucaje}. @@ -1935,21 +2252,16 @@ Manual de aprendizaje: Manual de extensión: @rextend{Presentación de las expresiones musicales}. - @knownissues -@cindex trucos en una variable -La instrucción @code{\tweak} no se puede usar dentro de una variable. - -@cindex trucos en la letra -Las instrucciones @code{\tweak} no se pueden usar dentro del modo -@code{\lyricmode}. - @cindex trucar puntos de control @cindex control, trucar puntos de -La instrucción @code{\tweak} solamente se aplica a la primera de -varias ligaduras generadas dentro de un acorde. +No se puede usar la instrucción @code{\tweak} para modificar los +puntos de control de una sola de varias ligaduras de unión dentro de +un acorde, aparte de la primera que se encuentre en el código de +entrada. + @node set frente a override @subsection @code{\set} frente a @code{\override} @@ -2009,9 +2321,10 @@ se relacionan en la sección @end example Una forma de acercar los pentagramas entre sí es reducir el valor de -la clave @code{basic-distance} (@code{9}) para que se corresponda con el valor -de @code{minimum-distance} (@code{7}). Para modificar una única clave -de forma individual, utilice una @emph{declaración anidada}: +la clave @code{basic-distance} (@code{9}) para que se corresponda con +el valor de @code{minimum-distance} (@code{7}). Para modificar una +única clave de forma individual, utilice una @emph{declaración +anidada}: @lilypond[quote,verbatim] % default space between staves @@ -2039,9 +2352,9 @@ propiedad. Ahora, supongamos que deseamos que los pentagramas estén tan próximos como sea posible sin que se superpongan. La manera más sencilla de hacerlo es establecer las cuatro claves de la lista-A a cero. Sin -embargo, no es necesario escribir cuatro declaraciones anidadas, -una por cada clave. En lugar de eso, se puede redefinir -completamente la propiedad con una sola declaración, como una lista-A: +embargo, no es necesario escribir cuatro declaraciones anidadas, una +por cada clave. En lugar de eso, se puede redefinir completamente la +propiedad con una sola declaración, como una lista-A: @lilypond[quote,verbatim] \new PianoStaff \with { @@ -2061,8 +2374,8 @@ explícitamente en la definición de la lista-A, será reiniciada a sus valores @emph{predeterminados si no se han fijado}. En el caso de @code{staff-staff-spacing}, el valor de cualquier clave no fijada se reiniciaría a cero (excepto @code{stretchability}, que toma el valor -de @code{basic-distance} si no se fija). Así, las dos declaraciones siguientes -son equivalentes: +de @code{basic-distance} si no se fija). Así, las dos declaraciones +siguientes son equivalentes: @example \override StaffGrouper #'staff-staff-spacing = @@ -2076,18 +2389,17 @@ son equivalentes: @end example Una consecuencia de esto (posiblemente no intencionada) es la -eliminación de cualquier valor estándar que -se establezca en un archivo de inicio y que se carga cada vez que se -compila un archivo de entrada. En el ejemplo anterior, los ajustes -estándar para @code{padding} y -@code{minimum-distance} (definidos en @file{scm/define-grobs.scm}) se -reinician a sus valores predeterminados si no se han fijado (cero para -las dos claves). La definición de una propiedad o variable como una -lista-A (de cualquier tamaño) siempre reinicia todos los valores de -clave no establecidos a sus valores predeterminados si no se han -fijado. Ano ser que este sea el resultado deseado, es más seguro -actualizar los valores de clave individualmente con una declaración -anidada. +eliminación de cualquier valor estándar que se establezca en un +archivo de inicio y que se carga cada vez que se compila un archivo de +entrada. En el ejemplo anterior, los ajustes estándar para +@code{padding} y @code{minimum-distance} (definidos en +@file{scm/define-grobs.scm}) se reinician a sus valores +predeterminados si no se han fijado (cero para las dos claves). La +definición de una propiedad o variable como una lista-A (de cualquier +tamaño) siempre reinicia todos los valores de clave no establecidos a +sus valores predeterminados si no se han fijado. Ano ser que este sea +el resultado deseado, es más seguro actualizar los valores de clave +individualmente con una declaración anidada. @warning{Las declaraciones anidadas no funcionan para las listas-A de propiedades de contexto (como @code{beamExceptions}, @@ -2104,7 +2416,6 @@ como listas-A.} @menu * Modos de entrada:: * Dirección y posición:: -* Orden de disposición de los contextos:: * Distancias y medidas:: * Propiedades del símbolo del pentagrama:: * Objetos de extensión:: @@ -2113,6 +2424,7 @@ como listas-A.} * Rotación de objetos:: @end menu + @node Modos de entrada @subsection Modos de entrada @translationof Input modes @@ -2217,7 +2529,6 @@ interpretar dichas indicaciones: @end lilypond - @node Dirección y posición @subsection Dirección y posición @translationof Direction and placement @@ -2240,34 +2551,22 @@ dirección de las plicas (como las ligaduras o los acentos). @c TODO Add table showing these -@strong{Disposición de contexto} - -Los contextos se colocan dentro de un sistema de arriba a abajo en el -orden en que se encuentran. Sin embargo, observe que se crea un -contexto implícitamente si se encuentra una instrucción cuando no está -disponible un contexto apropiado para contenerla. - -@c TODO Add example ? - -Se pude cambiar el orden predeterminado en que los contextos se -presentan, véase @ref{Alinear los contextos} - -@strong{Indicadores de dirección de las articulaciones} - -Al añadir articulaciones a notas se puede omitir normalmente el -indicador de dirección, @code{^} (que significa @qq{arriba}), @code{_} -(que significa @qq{abajo}) o @code{-} (que significa @qq{usar la -dirección predeterminada}), en cuyo caso se supone el predeterminado -@code{-}. Pero se necesita un indicador de dirección @strong{siempre} -antes de: +Se puede sobreescribir la acción predeterminada mediante el prefijado +de la articulación por un @emph{indicacor de dirección}. Están +disponibles tres indicadores de dirección: @code{^} (que significa +@qq{arriba}), @code{_} (que significa @qq{abajo}) o @code{-} (que +significa @qq{usar la dirección predeterminada}). El indicador de +dirección se puede normalmente omitir, en cuyo caso se supone el +indicador predeterminado @code{-}, pero se necesita un indicador de +dirección @strong{siempre} antes de: @itemize @item las instrucciones @code{\tweak} @item las instrucciones @code{\markup} @item las instrucciones @code{\tag} @item los marcados de cadena, p.ej. -"cadena" -@item las instrucciones de digitación, p.ej. @code{-1} -@item las abreviaturas de articulación, p.ej. @code{-.}, @code{->}, @code{--} +@item las instrucciones de digitación, p.ej. @w{@code{-1}} +@item las abreviaturas de articulación, p.ej. @w{@code{-.}}, @w{@code{->}}, @w{@code{--}} @end itemize Estas indicaciones afectan sólo a la nota siguiente. @@ -2286,27 +2585,28 @@ controlada por la propiedad @code{direction}. El valor de la propiedad @code{direction} se puede establecer al valor @code{1}, con el significado de @qq{hacia arriba} o @qq{encima}, o a -@code{-1}, con el significado de @qq{hacia abajo} o @qq{debajo}. Se -pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de -@code{1} y @code{-1} respectivamente. La dirección predeterminada se -puede especificar estableciendo @code{direction} a @code{0} ó a +@w{@code{-1}}, con el significado de @qq{hacia abajo} o @qq{debajo}. +Se pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de +@code{1} y @w{@code{-1}} respectivamente. La dirección predeterminada +se puede especificar estableciendo @code{direction} a @code{0} ó a @code{CENTER}. De forma alternativa, en muchos casos existen instrucciones predefinidas para especificar la dirección. Todas ellas son de la forma: -@noindent -@code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral} +@example +@code{\xxxUp}, @code{\xxxDown} o @code{\xxxNeutral} +@end example @noindent -donde @code{xxxNeutral} significa @qq{utilizar la dirección +donde @code{\xxxNeutral} significa @qq{utilizar la dirección predeterminada}. Véase @rlearning{Objetos interiores al pentagrama}. -En alguna que otra ocasión, con el único ejemplo usual del arpegio, el -valor de la propiedad @code{direction} especifica si el objeto se debe +En alguna que otra ocasión como en el arpegio, el +valor de la propiedad @code{direction} puede especificar si el objeto se debe colocar a la izquierda o a la derecha del objeto padre. En este caso -@code{-1} ó @code{LEFT} significan @qq{a la izquierda} y @code{1} ó -@code{RIGHT} significan @qq{a la derecha}. @code{0} ó @code{CENTER} -significan @qq{utilizar la dirección predeterminada}, como antes. +@w{@code{-1}} ó @code{LEFT} significan @qq{a la izquierda} y @code{1} +ó @code{RIGHT} significan @qq{a la derecha}. @code{0} ó @code{CENTER} +significan @qq{utilizar la dirección predeterminada}. Estas indicaciones afectan a todas las notas hasta que son canceladas. @@ -2319,35 +2619,17 @@ c2( c) c2( c) @end lilypond +En música polifónica, en general es mejor especificar una voz explícita +que cambiar la dirección de un objeto. Para ver más información, +véase @ref{Varias voces}. -@node Orden de disposición de los contextos -@subsection Orden de disposición de los contextos -@translationof Context layout order - -@cindex contextos, orden de disposición - -Los contextos se disponen en un sistema normalmente desde arriba hacia -abajo en el orden en que se encuentran en el archivo de entrada. -Cuando los contextos se anidan unos dentro de otros, el contexto -exterior incluye a los contextos anidados tal y como se especifica en -el archivo de entrada, siempre y cuando los contextos interiores estén -incluidos en la lista @qq{accepts} del contexto externo. Los -contextos anidados que no está nincluidos en la lista @qq{accepts} del -contexto externo se recolocan debajo del contexto externo en lugar de -anidarse dentro de él. - -Observe que discretamente se crea un contexto de forma implícita si se -encuentra una instrucción donde no hay un contexto apropiado para -contenerlo. Esto puede dar lugar a pentagramas o partituras nuevos no -esperados. +@seealso +Manual de aprendizaje: +@rlearning{Objetos interiores al pentagrama}. -El orden predeterminado en que los contextos se disponen, así como la -lista @qq{accepts}, pueden cambiarse; véase @ref{Alinear los -contextos}. +Referencia de la notación: +@ref{Varias voces}. -@seealso -Manual de utilización del programa: -@rprogram{Aparece un pentagrama de más}. @node Distancias y medidas @subsection Distancias y medidas @@ -2402,7 +2684,6 @@ convertir de un cambio en el tamaño de la fuente al cambio equivalente en @code{staff-space}. Para ver una explicación y un ejemplo de su utilización, consulte @rlearning{Longitud y grosor de los objetos}. - @seealso Manual de aprendizaje: @rlearning{Longitud y grosor de los objetos}. @@ -2669,7 +2950,7 @@ trinos, está inamoviblemente codificado como 0. @item attach-dir (dirección de anclaje) Determina dónde comienza y termina la línea en la dirección X, con -relación al objeto ancla. Sí, un valor de @code{-1} (o @code{LEFT}, +relación al objeto ancla. Sí, un valor de @w{@code{-1}} (o @code{LEFT}, izquierda) hace que la línea comience o termine en el lado izquierdo de la cabeza de la nota a la que está anclado. @@ -2715,7 +2996,7 @@ c4^\startTextSpan c c c \stopTextSpan @end lilypond Observe que los valores negativos mueven el texto @emph{hacia arriba}, -al contrario de lo que podría esperarse, pues el valor de @code{-1} o +al contrario de lo que podría esperarse, pues el valor de @w{@code{-1}} o @code{DOWN} (abajo) significa alinear el borde @emph{inferior} del texto con la línea de extensión. Un valor de @code{1} o @code{UP} (arriba) alinea el borde superior del texto con la línea extensora. @@ -2747,7 +3028,6 @@ c2 \< c2 c2 Si se usa @code{\endSpanners} no es necesario cerrar \startTextSpan con \stopTextSpan, ni cerrar los reguladores con @code{\!}. - @seealso Referencia de funcionamiento interno: @rinternals{TextSpanner}, @@ -2771,7 +3051,8 @@ volver transparentes, se pueden pintar de blanco, o se puede sobreescribir su propiedad @code{break-visibility}. Las tres primeras se aplican a todos los objetos de presentación; la última sólo a unos pocos: los objetos @emph{divisibles}. El Manual de aprendizaje -introduce estas cuatro técnicas, véase @rlearning{Visibilidad y color de los objetos}. +introduce estas cuatro técnicas, +véase @rlearning{Visibilidad y color de los objetos}. Hay también algunas otras técnicas que son específicas de ciertos objetos de presentación. Se estudian bajo Consideraciones especiales. @@ -2805,6 +3086,7 @@ a a a a a @end lilypond + @node Hacer transparentes los objetos @unnumberedsubsubsec Hacer transparentes los objetos @translationof Making objects transparent @@ -2822,6 +3104,7 @@ a4 a a a @end lilypond + @node Pintar los objetos de blanco @unnumberedsubsubsec Pintar los objetos de blanco @translationof Painting objects white @@ -2864,8 +3147,8 @@ En el ejemplo de arriba, la clave blanca, con un valor @code{layer} predeterminado de @code{1}, se dibuja después de las líneas del pentagrama (valor @code{layer} predeterminado de @code{0}), sobreimpresionándolas. Para cambiarlo, se debe dar al objeto -@code{Clef} un valor de @code{layer} más bajo, digamos @code{-1}, para -que se dibuje antes: +@code{Clef} un valor de @code{layer} más bajo, digamos @w{@code{-1}}, +para que se dibuje antes: @lilypond[quote,verbatim,relative=2] \override Staff.Clef #'color = #white @@ -2873,6 +3156,7 @@ que se dibuje antes: a1 @end lilypond + @node Uso de break-visibility (visibilidad en el salto) @unnumberedsubsubsec Uso de break-visibility (visibilidad en el salto) @translationof Using break-visibility @@ -2915,7 +3199,7 @@ combinaciones mediante funciones predefinidas cuya definición está en los objetos de presentación serán visibles en las posiciones que se muestran en el encabezamiento de cada columna: -@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {yes} {yes} {yes} +@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {Antes del} {Si no hay} {Después del} @headitem Forma @tab Forma @tab Antes del @tab Si no hay @tab Después del @headitem de función @tab de vector @tab salto @tab salto @tab salto @@ -2989,6 +3273,7 @@ imprimirlas y all-invisible para suprimirlas. @item OctavateEight: véase más abajo @end itemize + @node Consideraciones especiales @unnumberedsubsubsec Consideraciones especiales @translationof Special considerations @@ -3106,7 +3391,6 @@ Para los cambios de clave explícitos, la propiedad @code{explicitClefVisibility} controla tanto el símbolo de clave como el símbolo de octava asociado. - @seealso Manual de aprendizaje: @rlearning{Visibilidad y color de los objetos} @@ -3154,7 +3438,7 @@ e2 \glissando f e2 \glissando f @end lilypond -El valor de @code{Y} está establecido a @code{-2} para el extremo +El valor de @code{Y} está establecido a @w{@code{-2}} para el extremo derecho. El lado izquierdo se puede ajustar de forma similar especificando @code{left} en vez de @code{right}. @@ -3210,6 +3494,7 @@ g4\< e' d' f\! g,,4\< e' d' f\! @end lilypond + @node Rotación de elementos de marcado @unnumberedsubsubsec Rotación de elementos de marcado @translationof Rotating markup @@ -3232,6 +3517,7 @@ des^\markup { \rotate #30 "a D-Flat" } fis^\markup { \rotate #30 "an F-Sharp" } @end lilypond + @node Trucos avanzados @section Trucos avanzados @translationof Advanced tweaks @@ -3244,9 +3530,9 @@ ajustes finos a la apariencia de la partitura impresa. * Agrupación vertical de objetos gráficos:: * Modificación de los sellos:: * Modificación de las formas:: +* Contenedores unpure-pure:: @end menu - @seealso Manual de aprendizaje: @rlearning{Trucar la salida}, @@ -3256,6 +3542,8 @@ Referencia de la notación: @ref{Explicación del Manual de referencia de funcionamiento interno}, @ref{Modificar las propiedades}. +Manual de extensión: +@rextend{Interfaces para programadores}. Archivos de inicio: @file{scm/define-grobs.scm}. @@ -3263,9 +3551,6 @@ Archivos de inicio: Fragmentos de código: @rlsr{Tweaks and overrides}. -Extender: -@rextend{Interfaces para programadores}. - Referencia de funcionamiento interno: @rinternals{All layout objects}. @@ -3319,7 +3604,10 @@ propiedades especiales que se encuentran en de ensayo sobre dichos objetos. @seealso -@ref{Uso del break-alignable-interface}, +Referencia de la notación: +@ref{Uso del break-alignable-interface}. + +Manual de extensión: @rextend{Funciones de callback}. @menu @@ -3329,6 +3617,7 @@ de ensayo sobre dichos objetos. * Uso del break-alignable-interface:: @end menu + @node Establecer directamente X-offset e Y-offset @unnumberedsubsubsec Establecer directamente @code{X-offset} y @code{Y-offset} @translationof Setting X-offset and Y-offset directly @@ -3352,6 +3641,7 @@ a @c TODO write more + @node Uso del side-position-interface @unnumberedsubsubsec Uso del @code{side-position-interface} @translationof Using the side-position-interface @@ -3373,9 +3663,9 @@ determinan dónde colocar el objeto, como sigue: @headitem @code{side-axis} @tab @code{direction} @tab @headitem propiedad @tab propiedad @tab colocación -@item @code{0} @tab @code{-1} @tab izquierda +@item @code{0} @tab @w{@code{-1}} @tab izquierda @item @code{0} @tab @code{1} @tab derecha -@item @code{1} @tab @code{-1} @tab debajo +@item @code{1} @tab @w{@code{-1}} @tab debajo @item @code{1} @tab @code{1} @tab encima @end multitable @@ -3394,6 +3684,7 @@ situar el objeto encima o debajo del padre de acuerdo con el valor de @c TODO Add examples + @node Uso del self-alignment-interface @unnumberedsubsubsec Uso del @code{self-alignment-interface} @translationof Using the self-alignment-interface @@ -3409,11 +3700,11 @@ dar a @code{self-alignment-X} cualquier valor real, en unidades de la mitad de la extensión X total del objeto. Los valores negativos mueven el objeto a la derecha, los positivos hacia la izquierda. Un valor de @code{0} centra el objeto sobre el punto de referencia de su -padre, un valor de @code{-1} alinea el borde izquierdo del objeto +padre, un valor de @w{@code{-1}} alinea el borde izquierdo del objeto sobre el punto de referencia de su padre, y un valor de @code{1} alinea el borde derecho del objeto sobre el punto de referencia de su padre. Se pueden usar los símbolos @code{LEFT}, @code{CENTER} y -@code{RIGHT} en sustitución de los valores @code{-1, 0, 1}, +@code{RIGHT} en sustitución de los valores @w{@code{-1}}, @code{0} y @code{1}, respectivamente. Normalmente se usaría la instrucción @code{\override} para modificar @@ -3444,12 +3735,13 @@ tiene en cuenta. Esto puede hacer que ajustar el valor de ciertos objetos sea una tarea dificultosa. Las unidades son sólo la mitad de las dimensiones verticales del objeto, que suele ser bastante pequeño, por lo que pueden requerirse números bastante grandes. Un valor de -@code{-1} alinea el borde inferior del objeto con el punto de +@w{@code{-1}} alinea el borde inferior del objeto con el punto de referencia del objeto padre, un valor de @code{0} alinea el centro del objeto con el punto de referencia del padre, y un valor de @code{1} alinea el borde superior del objeto con el punto de referencia del padre. Se pueden usar los símbolos @code{DOWN}, @code{CENTER}, -@code{UP} en sustitución de @code{-1, 0, 1} respectivamente. +@code{UP} en sustitución de @w{@code{-1}}, +@code{0} y @code{1}, respectivamente. @emph{Auto-alineación de objetos en las dos direcciones} @@ -3620,6 +3912,8 @@ e1 @subsection Agrupación vertical de objetos gráficos @translationof Vertical grouping of grobs +@c TODO Expand this section + Los grobs (objetos gráficos) @code{VerticalAlignment} y @code{VerticalAxisGroup} trabajan de manera coordinada. @code{VerticalAxisGroup} agrupa distintos grobs como @code{Staff}, @@ -3679,7 +3973,6 @@ a la instrucción de marcado @code{\musicglyph}: véase @ref{La tipografía Feta @c TODO Add inserting Postscript or ref to later - @seealso Referencia de la notación: @ref{Notación gráfica dentro de elementos de marcado}, @@ -3696,14 +3989,15 @@ Referencia de la notación: * Modificación de ligaduras de unión y de expresión:: @end menu + @node Modificación de ligaduras de unión y de expresión @unnumberedsubsubsec Modificación de ligaduras de unión y de expresión @translationof Modifying ties and slurs @cindex ligaduras de expresión, modificar @cindex ligaduras de unión, modificar -@cindex Bézier, curvas de -@cindex Bézier, puntos de control +@cindex Bézier, curvas de, puntos de control +@cindex puntos de control en curvas de Bézier Las ligaduras de unión, de expresión y de fraseo se trazan como curvas de Bézier de tercer orden. Si la forma de la ligadura calculada @@ -3729,7 +4023,7 @@ He aquí un ejemplo de un caso en que la ligadura no es óptima, y donde @lilypond[verbatim,quote,relative=1] << - { e1 ~ e } + { e1~ e } \\ { r4 } >> @@ -3764,20 +4058,135 @@ de unión. { \once \override Tie #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) - e1 ~ e1 + e1 ~ e } \\ - { r4 4 } + { r4 } >> @end lilypond @knownissues - No es posible modificar la forma de las ligaduras de unión o de expresión cambiando la propiedad @code{control-points} si hay más de una en el mismo momento musical, ni siquiera usando la instrucción -@code{\tweak}. +@code{\tweak}. Sin embargo, se puede sobreescribir la propiedad +@code{tie-configuration} de @code{TieColumn} para fijar la línea de +inicio y la dirección según se requiera. + +@seealso +Referencia de funcionamiento interno: +@rinternals{TieColumn}. + +@cindex Scheme, contenedores puros +@cindex Scheme, contenedores no-puros +@cindex puros, contenedores de Scheme +@cindex no-puros: contenedores de Scheme +@cindex horizontal, sobreescribir el espaciado + + +@node Contenedores unpure-pure +@subsection Contenedores unpure-pure +@translationof Unpure-pure containers + +Los contenedores @q{unpure-pure} (pura y no pura) son útiles para la +sobreescritura de los cálculos del espaciado en el @emph{eje Y} +(concretamente @code{Y-offset} e @code{Y-extent}) con una función de +Scheme en lugar de un literal, es decir, un número o una pareja de +números. + +Para ciertos objetos gráficos, las dimensiones @code{Y-extent} están +basadas en la propiedad @code{stencil}, la sobreescritura de la +propiedad de sello de éstos requiere una sobreescritura adicional de +@code{Y-extent} con un contenedor unpure-pure. Cuando una función +sobreescribe una dimensión @code{Y-offset} y/o @code{Y-extent} se +supone que esto dispara los cálculos de los saltos de línea +prematuramente durante la compilación. Así pues, la función no se +evalúa en absoluto (devolviendo por lo general un valor de @samp{0} o +@samp{'(0 . 0)}) lo que puede dar lugar a colisiones. Una función +@q{pura} no afecta a las propiedades, objetos o suicidios de grobs, y +por ello siempre ven sus valores relacionados con el eje Y evaluados +correctamente. + +Actualmente hay unas treinta funciones que ya se consideran @q{puras} +y los contenedores Unpure-pure son una manera de establecer funciones +que no están en esta lista como @q{puras}. La función @q{pura} se +evalúa @emph{antes} de cualquier salto de línea y así el espaciado +horizontal se puede ajustar @q{a tiempo}. La función @q{impura} se +evalúa entonces @emph{después} del salto de línea. + +@warning{Dado que es difícil saber siempre qué funciones están en esta +lista, recomendamos que cualquier función @q{pura} que estemos creando +no utilice los grobs @code{Beam} o @code{VerticalAlignment}.} + +Un contenedor @q{unpure-pure} se contruye de la manera siguiente: + +@code{(ly:make-unpure-pure-container f0 f1)} + +donde @code{f0} es una función que toma @var{n} argumentos (@var{n >= +1}) y el primer argumento siempre debe ser el grob. Ésta es la +función que da el resultado real. @var{f1} es la función que se +etiqueta como @q{pura} que toma @var{n + 2} argumentos. De nuevo, el +primer argumento debe ser siempre el grob pero los argumentos segundo +y tercero son argumentos de @q{inicio} y de @q{final}. + +@var{inicio} y @var{final} son, a todos los efectos, valores mudos que +sólo tienen importancia para los @code{objetos de extensión} (o sea: +@code{Hairpin}, regulador, o @code{Beam}, barra), que pueden devolver +distintas estimaciones de altura basadas en una columna de inicio y +una de final. + +El resto son los otros argumentos para la primera función (que puede +no ser ninguno si @var{n = 1}). + +El resultado de la segunda función se usa como una aproximación del +valor necesario, que se usa entonces por la primera función para +obtener el valor real que se usa a continuación para el ajuste de +precisión mucho más tardío durante el proceso de espaciado. + +@lilypond[verbatim,quote,ragged-right] +#(define (square-line-circle-space grob) +(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch)) + (notename (ly:pitch-notename pitch))) + (if (= 0 (modulo notename 2)) + (make-circle-stencil 0.5 0.0 #t) + (make-filled-box-stencil '(0 . 1.0) + '(-0.5 . 0.5))))) + +squareLineCircleSpace = { + \override NoteHead #'stencil = #square-line-circle-space +} + +smartSquareLineCircleSpace = { + \squareLineCircleSpace + \override NoteHead #'Y-extent = + #(ly:make-unpure-pure-container + ly:grob::stencil-height + (lambda (grob start end) (ly:grob::stencil-height grob))) +} + +\new Voice \with { \remove "Stem_engraver" } +\relative c'' { + \squareLineCircleSpace + cis4 ces cisis c + \smartSquareLineCircleSpace + cis4 ces cisis c +} +@end lilypond + +En el primer compás, sin el contenedor @emph{unpure-pure}, el motor de +espaciado no conoce la anchura de la cabeza de la nota y permite que +colisione con las alteraciones accidentales. En el segundo compás, el +motor de espaciado conoce la anchura de las cabezas de las notas y +evita la colisión mediante el alargamiento de la línea en la medida +adecuada. + +Normalmente, para cálculos simples se pueden usar funciones casi +idénticas tanto para las partes @q{no pura} y @q{pura}, simplemente +cambiando el número de argumentos que se pasan a, y el ámbito de, la +función. +@warning{Si una función está caracterizada como @q{pura} y resulta que +no lo es, el resultado puede ser inesperado.} @node Uso de las funciones musicales @@ -3799,6 +4208,7 @@ de entrada de LilyPond. Se describen otras funciones más complejas en * Ejemplos de funciones de sustitución:: @end menu + @node Sintaxis de las funciones de sustitución @subsection Sintaxis de las funciones de sustitución @translationof Substitution function syntax @@ -3828,11 +4238,13 @@ donde debe devolver @code{#t}. @item @code{@var{@dots{}música@dots{}}} -@tab entrada de LilyPond normal, que utiliza @code{$} para -referenciar argumentos (p.ej. @samp{$arg1}). +@tab código de entrada normal de LilyPond, que utiliza @code{$} (en los +lugares en que sólo se permiten construcciones de Lilypond) o @code{#} +(para usarlo como un valor de Scheme o un argumento de función musical +o música dentro de listas de música) para referenciar argumentos +(p.ej. @samp{#arg1}). @end multitable - Los argumentos @code{parser} y @code{location} son necesarios, y se utilizan en algunas situaciones avanzadas como se encuentra descrito en @rextend{Sintaxis de las funciones musicales}. Para las funciones @@ -3845,7 +4257,9 @@ musicales son: @example boolean? cheap-list? @emph{(utilizar en lugar de }@q{list?}@emph{ para un procesado más rápido)} +ly:duration? ly:music? +ly:pitch? markup? number? pair? @@ -3858,9 +4272,7 @@ Para ver una lista de los predicados de tipo disponibles, consulte @ref{Predicados de tipo predefinidos}. También se permiten los predicados de tipo definidos por el usuario. - @seealso - Referencia de la notación: @ref{Predicados de tipo predefinidos}. @@ -3890,7 +4302,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { @@ -3905,20 +4317,17 @@ padText = Además de números, podemos usar expresiones musicales, como notas, para los argumentos de las funciones musicales: -@c TODO: use a better example (the music argument is redundant). - @lilypond[quote,verbatim,ragged-right] custosNote = #(define-music-function (parser location note) (ly:music?) #{ - \once \override Voice.NoteHead #'stencil = - #ly:text-interface::print - \once \override Voice.NoteHead #'text = - \markup \musicglyph #"custodes.mensural.u0" - \once \override Voice.Stem #'stencil = ##f - $note + \tweak NoteHead #'stencil #ly:text-interface::print + \tweak NoteHead #'text + \markup \musicglyph #"custodes.mensural.u0" + \tweak Stem #'stencil ##f + #note #}) \relative c' { c4 d e f \custosNote g } @@ -3930,16 +4339,16 @@ Se pueden definir funciones de sustitución con más de un argumento: tempoPadded = #(define-music-function (parser location padding tempotext) - (number? string?) + (number? markup?) #{ - \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } #}) \relative c'' { \tempo \markup { "Low tempo" } c4 d e f g1 - \tempoPadded #4.0 #"High tempo" + \tempoPadded #4.0 "High tempo" g4 f e d c1 } @end lilypond diff --git a/Documentation/es/notation/cheatsheet.itely b/Documentation/es/notation/cheatsheet.itely index 6875aa934c..13376514b0 100644 --- a/Documentation/es/notation/cheatsheet.itely +++ b/Documentation/es/notation/cheatsheet.itely @@ -1,14 +1,14 @@ @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' Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c TODO: add tablature. diff --git a/Documentation/es/notation/chords.itely b/Documentation/es/notation/chords.itely index aa0a57d0b0..6590f317c5 100644 --- a/Documentation/es/notation/chords.itely +++ b/Documentation/es/notation/chords.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 9a40bd63b77375ac7ac1085d7eda9f5680bf06dd + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" @node Notación de acordes @section Notación de acordes @@ -27,6 +27,7 @@ Además se puede imprimir notación de bajo cifrado. * Bajo cifrado:: @end menu + @node Modo de acordes @subsection Modo de acordes @translationof Chord mode @@ -43,6 +44,7 @@ notas. * Acordes extendidos y alterados:: @end menu + @node Panorámica del modo de acordes @unnumberedsubsubsec Panorámica del modo de acordes @translationof Chord mode overview @@ -85,7 +87,6 @@ secuencial: \chordmode { f2 g } @end lilypond - @seealso Glosario musical: @rglos{chord}. @@ -97,9 +98,7 @@ Referencia de la notación: Fragmentos de código: @rlsr{Chords}. - @knownissues - No se pueden usar las abreviaturas predefinidas de articulaciones y adornos sobre notas dentro del modo de acordes; véase @ref{Articulaciones y ornamentos}. @@ -124,6 +123,7 @@ contexto de @code{Staff}: } @end lilypond + @node Acordes más usuales @unnumberedsubsubsec Acordes más usuales @translationof Common chords @@ -243,7 +243,6 @@ modificador para crear una tríada mayor. @end multitable - @seealso Referencia de la notación: @ref{Modificadores de acorde más usuales}, @@ -260,6 +259,7 @@ impredecible. Los acordes que no se pueden conseguir con un solo modificador se deben alterar en sus notas individuales como se describe en @ref{Acordes extendidos y alterados}. + @node Acordes extendidos y alterados @unnumberedsubsubsec Acordes extendidos y alterados @translationof Extended and altered chords @@ -396,7 +396,6 @@ de ser movida por efecto de una inversión, mediante el uso de Los modificadores de acorde que se pueden utilizar para producir una amplia variedad de acordes estándar se muestran en @ref{Modificadores de acorde más usuales}. - @seealso Referencia de la notación: @ref{Modificadores de acorde más usuales}. @@ -404,9 +403,7 @@ Referencia de la notación: Fragmentos de código: @rlsr{Chords}. - @knownissues - Cada nota sólo puede estar presente en el acorde una sola vez. Lo que sigue produce simplemente el acorde aumentado, porque @code{5+} se interpreta en último lugar. @@ -425,6 +422,7 @@ acorde. } @end lilypond + @node Imprimir los acordes @subsection Imprimir los acordes @translationof Displaying chords @@ -437,6 +435,7 @@ estándar como notas sobre un pentagrama. * Nombres de acorde personalizados:: @end menu + @node Impresión de los nombres de acorde @unnumberedsubsubsec Impresión de los nombres de acorde @translationof Printing chord names @@ -530,16 +529,15 @@ Sin Acorde). @cindex acordes, eliminar repetidos @funindex chordChanges -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {showing-chords-at-changes.ly} -@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] @c {adding-bar-lines-to-chordnames-context.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {simple-lead-sheet.ly} - @seealso Glosario musical: @rglos{chord}. @@ -557,12 +555,11 @@ Referencia de funcionamiento interno: @rinternals{Volta_engraver}, @rinternals{Bar_engraver}. - @knownissues - Los acordes que contienen inversiones o bajos alterados no reciben un nombre adecuado si se escriben usando música simultánea. + @node Nombres de acorde personalizados @unnumberedsubsubsec Nombres de acorde personalizados @translationof Customizing chord names @@ -640,6 +637,23 @@ acorde de séptima mayor. Las opciones predefinidas son @code{whiteTriangleMarkup} (triángulo blanco) y @code{blackTriangleMarkup} (triángulo negro). +@funindex additionalPitchPrefix + +@item additionalPitchPrefix + +Cuando el acorde contiene notas añadidas, se pueden prefijar +opcionalmente por un texto. Por omisión no hay ningún prefijo, para +evitar la sobrecarga visual, pero para pequeñas cantidades de notas +añadidas puede ser visualmente efectivo. + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + % add9 + \set additionalPitchPrefix = #"add" + % add9 +} +@end lilypond + @funindex chordNoteNamer @item chordNoteNamer @@ -656,9 +670,40 @@ comportamiento. Por ejemplo, el bajo se puede imprimir en minúscula. @item chordNameSeparator Las diferentes partes del nombre de un acorde se separan normalmente -mediante una barra inclinada. Mediante el ajuste de +mediante un pequeño espacio en blanco. Mediante el ajuste de @code{chordNameSeparator}, podemos usar cualquier marcado que deseemos -como separador. +como separador. Esto no afecta al separador entre un acorde y la nota +del bajo: para personalizar eso, utilice @code{slashChordSeparator}. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set chordNameSeparator = \markup { "/" } + \break + c4:7.9- c:7.9-/g +} +@end lilypond + +@funindex slashChordSeparator + +@item slashChordSeparator + +Los acordes se pueden tocar sobre una nota del bajo distinta a la +fundamental. Se llaman "inversiones" o "acordes de barra inclinada" +porque la manera predeterminada de efectuar su notación es con una +barra inclinada entre el acorde y la nota del bajo. Por tanto, el +valor de @code{slashChordSeparator} es, por omisión, una barra +inclinada, pero podemos cambiarlo a cualquier elemento de marcado que +queramos. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set slashChordSeparator = \markup { " over " } + \break + c4:7.9- c:7.9-/g +} +@end lilypond @funindex chordNameExceptions @@ -670,12 +715,32 @@ elementos presentes en el acorde. El segundo elemento es un elemento de marcado que sigue a la salida de @code{chordRootNamer} para crear el nombre del acorde. +@funindex minorChordModifier + +@item minorChordModifier + +La notación de los acordes menores se suele hacer por medio del sufijo +@q{m} a la derecha de la letra que indica la fundamental del acorde. +Sin embargo, otras convenciones dan preferencia a sufijos diferentes, +como un signo menos. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:min f:min7 + \set minorChordModifier = \markup { "-" } + \break + c4:min f:min7 +} +@end lilypond + @funindex chordPrefixSpacer + @item chordPrefixSpacer -La @q{m} de los acordes menores se imprime por lo general -inmediatamente a la derecha de la fundamental. Se puede insertar un -símbolo separador entre la fundamental y @q{m} estableciendo +El modificador de los acordes menores tal y como viene determinado por +@code{minorChordModifier} se imprime por lo general inmediatamente a +la derecha de la fundamental. Se puede insertar un símbolo separador +entre la fundamental y el modificador estableciendo @code{chordPrefixSpacer}. El símbolo separador no se usa cuando el acorde está alterado. @@ -700,23 +765,22 @@ acorde está alterado. @snippets @cindex excepciones, nombres de acorde -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chord-name-exceptions.ly} @c TODO - tweak snippet to use \blackTriangleMarkup as well -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chord-name-major7.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-bar-lines-to-chordnames-context.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {volta-below-chords.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-chord-separator.ly} - @seealso Referencia de la notación: @ref{Cuadro de nombres de acordes}, @@ -733,12 +797,7 @@ Archivos instalados: Fragmentos de código: @rlsr{Chords}. -@c Internals Reference: -@c @r internals{}. - - @knownissues - Los nombres de acorde se determinan a partir de las notas que están presentes en el mismo y de la información acerca de la estructura del acorde que ha podido ser introducida en @code{\chordmode}. Si el @@ -757,11 +816,13 @@ myChords = \relative c' { >> @end lilypond + @node Bajo cifrado @subsection Bajo cifrado @translationof Figured bass -@lilypondfile[quote]{figured-bass-headword.ly} +@c Line width hack because of instrument names +@lilypondfile[quote,staffsize=18,line-width=14.5\cm]{figured-bass-headword.ly} Se puede imprimir notación de bajo cifrado. @@ -771,6 +832,7 @@ Se puede imprimir notación de bajo cifrado. * Imprimir el bajo cifrado:: @end menu + @node Introducción al bajo cifrado @unnumberedsubsubsec Introducción al bajo cifrado @translationof Introduction to figured bass @@ -822,7 +884,6 @@ impresión de las cifras. Por ejemplo, el espaciado vertical de las cifras se puede ajustar con @code{baseline-skip}. @end ignore - @seealso Glosario musical: @rglos{figured bass}. @@ -1008,10 +1069,9 @@ Fin de línea de continuación @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-positions-of-figured-bass-alterations.ly} - @seealso Fragmentos de código: @rlsr{Chords}. @@ -1025,9 +1085,6 @@ Referencia de funcionamiento interno: @rinternals{FiguredBass}. -@c @knownissues - - @node Imprimir el bajo cifrado @unnumberedsubsubsec Imprimir el bajo cifrado @translationof Displaying figured bass @@ -1107,25 +1164,7 @@ se puede presentar encima o debajo del mismo. @code{\bassFigureStaffAlignmentNeutral}. @endpredefined - -@c @snippets - @seealso -@c Music Glossary: -@c @rg los{}. -@c -@c Learning Manual: -@c @rle arning{}. -@c -@c Notation Reference: -@c @re f{}. -@c -@c Application Usage: -@c @rpr ogram{}. -@c -@c Installed Files: -@c @fil e{}. -@c Fragmentos de código: @rlsr{Chords}. @@ -1137,9 +1176,7 @@ Referencia de funcionamiento interno: @rinternals{BassFigureContinuation}, @rinternals{FiguredBass}. - @knownissues - Para asegurar que las líneas extensoras funcionan adecuadamente, lo más seguro es utilizar las mismas duraciones en la línea de cifras y en la línea del bajo. diff --git a/Documentation/es/notation/contemporary.itely b/Documentation/es/notation/contemporary.itely index 5696520ebb..f13e6cd33e 100644 --- a/Documentation/es/notation/contemporary.itely +++ b/Documentation/es/notation/contemporary.itely @@ -1,13 +1,13 @@ @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' Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Música contemporánea diff --git a/Documentation/es/notation/editorial.itely b/Documentation/es/notation/editorial.itely index b7a01feffa..f484728137 100644 --- a/Documentation/es/notation/editorial.itely +++ b/Documentation/es/notation/editorial.itely @@ -1,14 +1,14 @@ @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: c28baa15608b96e15ae3971ac2a70cc65282c110 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" +@c \version "2.16.0" @node Anotaciones editoriales @section Anotaciones editoriales @@ -127,7 +127,6 @@ La propiedad @code{font-size} sólo se puede establecer en objetos gráficos que utilicen fuentes tipográficas. Éstos son los que contemplan el interfaz de presentación @code{font-interface}. - @predefined @code{\teeny} (enano), @code{\tiny} (muy pequeño), @@ -137,7 +136,6 @@ contemplan el interfaz de presentación @code{font-interface}. @code{\huge} (enorme). @endpredefined - @seealso Fragmentos de código: @rlsr{Editorial annotations}. @@ -197,16 +195,15 @@ debajo del pentagrama, véase @ref{Dirección y posición}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {avoiding-collisions-with-chord-fingerings.ly} - @seealso Referencia de la notación: @ref{Dirección y posición}. @@ -257,22 +254,22 @@ b c @end lilypond -Los objetos de notación que están anclados a notas invisibles, son a -pesar de ello visibles. +La cabeza, la plica y el corchete de las figuras, así como los +silencios, son invisibles. Las barras son invisibles si comienzan en +una nota oculta. Los objetos de notación que están anclados a notas +invisibles, son a pesar de ello visibles. @lilypond[verbatim,quote,relative=2] -c4( d) +e8(\p f g a)-- \hideNotes -e4(\p f)-- +e8(\p f g a)-- @end lilypond - @predefined @code{\hideNotes}, @code{\unHideNotes}. @endpredefined - @seealso Manual de aprendizaje: @rlearning{Visibilidad y color de los objetos}. @@ -323,7 +320,6 @@ d e @end lilypond - Se puede acceder al espectro completo de colores definido para X11 usando la función de Scheme x11-color. Esta función acepta un único argumento; éste puede ser un símbolo de la forma @code{@var{'FulanoMengano}} @@ -376,7 +372,6 @@ gis8 a gis4 a @end lilypond - @seealso Referencia de la notación: @ref{Lista de colores}, @@ -385,7 +380,6 @@ Referencia de la notación: Fragmentos de código: @rlsr{Editorial annotations}. - @cindex x11, color de @cindex coloreadas, notas de acorde @cindex notas coloreadas en acordes @@ -399,9 +393,9 @@ un color normal de nombre similar. No todos los colores de X11 se distinguen entre sí en un navegador web, es decir, un navegador de web podría no mostrar ninguna -diferencia entre @code{'LimeGreen} (verde lima) y @code{'ForestGreen} +diferencia entre @code{LimeGreen} (verde lima) y @code{ForestGreen} (verde bosque). Para la web se recomiendan los colores normales (o -sea: @code{#blue}, azul, @code{#green}, verde, @code{#red}, rojo). +sea: @code{blue}, azul, @code{green}, verde, @code{red}, rojo). Las notas de un acorde no se pueden colorear con @code{\override}; en su lugar utilice @code{\tweak}. Consulte @ref{La instrucción tweak} para @@ -416,6 +410,7 @@ ver más detalles. @cindex notas fantasma @cindex notas entre paréntesis @cindex paréntesis +@cindex corchetes @funindex \parenthesize @funindex parenthesize @@ -440,7 +435,6 @@ c2-\parenthesize -. d c2 \parenthesize r @end lilypond - @seealso Fragmentos de código: @rlsr{Editorial annotations}. @@ -451,7 +445,6 @@ Referencia de funcionamiento interno: @rinternals{parentheses-interface}. @knownissues - Al poner un acorde entre paréntesis, se encierra cada una de las notas individuales entre paréntesis, en vez de un solo paréntesis grande rodeando al acorde completo. @@ -491,10 +484,9 @@ abajo; véase @ref{Dirección y posición}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {default-direction-of-stems-on-the-center-line-of-the-staff.ly} - @seealso Referencia de la notación: @ref{Dirección y posición}. @@ -579,13 +571,11 @@ pero esto puede cambiarse: } @end lilypond - @predefined @code{\balloonLengthOn}, @code{\balloonLengthOff}. @endpredefined - @seealso Fragmentos de código: @rlsr{Editorial annotations}. @@ -651,10 +641,9 @@ especificar la duración entre las líneas de rejilla. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {grid-lines--changing-their-appearance.ly} - @seealso Fragmentos de código: @rlsr{Editorial annotations}. @@ -721,7 +710,6 @@ Los corchetes de análisis se pueden anidar. } @end lilypond - @seealso Fragmentos de código: @rlsr{Editorial annotations}. diff --git a/Documentation/es/notation/expressive.itely b/Documentation/es/notation/expressive.itely index b9a8c47ed8..d47bcdbb06 100644 --- a/Documentation/es/notation/expressive.itely +++ b/Documentation/es/notation/expressive.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 33903a90b916b4c42d767aa0feb800de1c3d8dbe + Translation of GIT committish: 9830313f5f1f76df8b46bdeffe716fd5b2d6f331 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" +@c \version "2.16.0" @node Expresiones @section Expresiones @@ -39,6 +39,7 @@ métodos para crear las nuevas marcas dinámicas. * Indicaciones dinámicas contemporáneas:: @end menu + @node Articulaciones y ornamentos @unnumberedsubsubsec Articulaciones y ornamentos @translationof Articulations and ornamentations @@ -191,13 +192,13 @@ Script y TextScript que se adjuntan a las notas, consulte @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {modifying-default-values-for-articulation-shorthand-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-vertical-ordering-of-scripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-a-delayed-turn.ly} @seealso @@ -272,8 +273,8 @@ Referencia de funcionamiento interno: @funindex \rfz @funindex rfz -Las marcas dinámicas de matiz absoluto se especifican usando un -comando después de una nota: @code{c4\ff}. Las marcas dinámicas +Las marcas dinámicas de matiz absoluto se especifican usando una +instrucción después de una nota: @code{c4\ff}. Las marcas dinámicas disponibles son @code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp}, @code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff}, @code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff}, @@ -478,28 +479,27 @@ texto e indicaciones de pedal de piano. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} @cindex al niente @cindex niente, al -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-hairpins-using-al-niente-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligned-dynamics-and-textscripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {hiding-the-extender-line-for-text-dynamics.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-text-and-spanner-styles-for-text-dynamics.ly} - @seealso Glosario musical: @rglos{al niente}, @@ -629,7 +629,6 @@ moltoF = #(make-dynamic-script Los ajustes para las fuentes tipográficas en el modo de marcado se describen en @ref{Seleccionar la tipografía y su tamaño}. - @seealso Referencia de la notación: @ref{Formatear el texto}, @@ -637,11 +636,12 @@ Referencia de la notación: @ref{¿Qué sale por el MIDI?}, @ref{Control de los matices en el MIDI}. +Extender LilyPond: +@rextend{Construcción del marcado en Scheme}. + Fragmentos de código: @rlsr{Expressive marks}. -Extender LilyPond: -@rextend{Construcción del marcado en Scheme}. @node Expresiones como curvas @subsection Expresiones como curvas @@ -658,6 +658,7 @@ elevaciones de tono. * Caídas y elevaciones:: @end menu + @node Ligaduras de expresión @unnumberedsubsubsec Ligaduras de expresión @translationof Slurs @@ -789,16 +790,15 @@ g4( e c2) @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-double-slurs-for-legato-chords.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-text-markups-inside-slurs.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-slurs-with-complex-dash-structure.ly} - @seealso Glosario musical: @rglos{slur}. @@ -946,7 +946,6 @@ de discontinuidad complejos, consulte los fragmentos de código bajo @code{\phrasingSlurSolid}. @endpredefined - @seealso Manual de aprendizaje: @rlearning{Acerca de la no anidabilidad de llaves y ligaduras}. @@ -990,15 +989,14 @@ detalles, consulte @ref{Divisiones}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-breath-mark-symbol.ly} @cindex caesura -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {inserting-a-caesura.ly} - @seealso Glosario musical: @rglos{caesura}. @@ -1014,6 +1012,7 @@ Referencia de funcionamiento interno: @rinternals{BreathingSign}, @rinternals{Breathing_sign_engraver}. + @node Caídas y elevaciones @unnumberedsubsubsec Caídas y elevaciones @translationof Falls and doits @@ -1033,23 +1032,19 @@ de alturas sobre el que se extiende la caída o elevación @emph{partiendo de} la nota principal. @lilypond[verbatim,quote,relative=2] -c2-\bendAfter #+4 -c2-\bendAfter #-4 -c2-\bendAfter #+6.5 -c2-\bendAfter #-6.5 -c2-\bendAfter #+8 -c2-\bendAfter #-8 +c2\bendAfter #+4 +c2\bendAfter #-4 +c2\bendAfter #+6.5 +c2\bendAfter #-6.5 +c2\bendAfter #+8 +c2\bendAfter #-8 @end lilypond -El guión @code{-} que sigue al nombre de la nota es @emph{necesario} -al escribir caídas y elevaciones. - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adjusting-the-shape-of-falls-and-doits.ly} - @seealso Glosario musical: @rglos{fall}, @@ -1072,6 +1067,7 @@ siguen un camino lineal: glissandi, arpegios y trinos. * Trinos:: @end menu + @node Glissando @unnumberedsubsubsec Glissando @translationof Glissando @@ -1093,9 +1089,11 @@ consulte @ref{Estilos de línea}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{contemporary-glissando.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{glissandi-can-skip-grobs.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{contemporary-glissando.ly} @seealso Glosario musical: @@ -1110,9 +1108,7 @@ Fragmentos de código: Referencia de funcionamiento interno: @rinternals{Glissando}. - @knownissues - La impresión de texto sobre la línea (como @notation{gliss.}) no está contemplada. @@ -1206,16 +1202,15 @@ Los acordes arpegiados se pueden desarrollar explícitamente utilizando @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-a-piano-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-other-contexts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-arpeggios-across-notes-in-different-voices.ly} - @seealso Glosario musical: @rglos{arpeggio}. @@ -1232,9 +1227,7 @@ Referencia de funcionamiento interno: @rinternals{Slur}, @rinternals{PianoStaff}. - @knownissues - @cindex pentagrama cruzado, arpegios con paréntesis @cindex arpegio de pentagrama cruzado con paréntesis @cindex arpegio con paréntesis de pentagrama cruzado @@ -1245,6 +1238,7 @@ No es posible mezclar arpegios conectados y no conectados en un El corchete de los arpegios de paréntesis no funciona para los arpegios de pentagrama cruzado. + @node Trinos @unnumberedsubsubsec Trinos @translationof Trills @@ -1352,7 +1346,6 @@ eis4\stopTrillSpan @code{\stopTrillSpan}. @endpredefined - @seealso Glosario musical: @rglos{trill}. diff --git a/Documentation/es/notation/fretted-strings.itely b/Documentation/es/notation/fretted-strings.itely index 8e50dc7afc..661152715a 100644 --- a/Documentation/es/notation/fretted-strings.itely +++ b/Documentation/es/notation/fretted-strings.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 5becf12f5ada67346f70ad8cfe68589466619305 + Translation of GIT committish: 9f1c61a1ea1f5c01e7beb5da14b947a6ae0fb3db 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" +@c \version "2.16.0" @node Instrumentos de cuerda con trastes @section Instrumentos de cuerda con trastes @@ -30,6 +30,7 @@ exclusivos de los instrumentos de cuerda con trastes. * Banjo:: @end menu + @node Notación común para cuerdas con trastes @subsection Notación común para cuerdas con trastes @translationof Common notation for fretted strings @@ -48,6 +49,7 @@ instrumentos de cuerda con trastes. * Digitaciones de la mano derecha:: @end menu + @node Referencias para cuerdas con trastes @unnumberedsubsubsec Referencias para cuerdas con trastes @translationof References for fretted strings @@ -83,7 +85,6 @@ Las instrucciones para el manejo de varias voces se encuentran en @end itemize - @seealso Referencia de la notación: @ref{Indicaciones de digitación}, @@ -106,38 +107,37 @@ Referencia de la notación: @cindex digitación frente a números de cuerda Se puede indicar la cuerda en que se debe tocar una nota añadiendo -@code{\}@tie{}@var{número} a una nota dentro de una construcción de -acorde (@code{<>}). - -@warning{Los números de cuerda @strong{se deben} definir dentro de una -construcción de acorde con ángulos simples, incluso si se trata de una -sola nota.} +@code{\}@tie{}@var{número} a una nota. @lilypond[verbatim,quote,relative=0] \clef "treble_8" -4 2 +c4\5 e\4 g2\3 1 @end lilypond Cuando se usan al mismo tiempo digitaciones e indicaciones del número -de cuerda, su colocación se controla por el orden en que aparecen -estos elementos en el código: +de cuerda, su colocación se puede controlar por el orden en que +aparecen estos elementos en el código @emph{solamente} si aparecen +dentro de un acorde explícito: aplicado a acordes completos o notas +individuales @emph{fuera} de acordes, las digitaciones se colocan +usando un mecanismo distinto. @lilypond[verbatim,quote,relative=1] \clef "treble_8" -2 +g4\3-0 +g-0\3 + @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} - @seealso Referencia de la notación: @ref{Indicaciones de digitación}. @@ -236,20 +236,24 @@ symbols = { @cindex traste @funindex minimumFret +@funindex restrainOpenStrings De forma predeterminada, las notas se asignan a la posición más baja del mástil (primera posición). Las cuerdas al aire se toman como preferencia, automáticamente. Si queremos que una nota determinada se toque sobre una cuerda concreta, podemos añadir una indicación de -número de cuerda al nombre de la nota. Si definimos los nombres de -nota y los números de cuerda sin una construcción de acorde -(@code{<>}), las indicaciones de número de cuerda no aparecerán en la -notación tradicional. Es mucho más cómodo definir la posición -utilizando el valor de @code{minimumFret}. El valor predeterminado de -es 0. +número de cuerda al nombre de la nota. Si no queremos que las +indicaciones de número de cuerda aparezcan en la notación tradicional, +podemos sobreescribir el sello correspondiente. Generalmente es mucho +más cómodo definir la posición utilizando el valor de +@code{minimumFret}. El valor predeterminado de es 0. +Incluso si @code{minimumFret} está establecido, se usan las cuerdas al +aire siempre que sea posible. Este comportamiento se puede cambiar +fijando @code{restrainOpenStrings} al valor @code{#t}. @lilypond[quote,ragged-right,verbatim] +\layout { \override Voice.StringNumber #'stencil = ##f } \new StaffGroup << \new Staff \relative c { \clef "treble_8" @@ -262,36 +266,40 @@ es 0. c16 d e f g4 c,16\5 d\5 e\4 f\4 g4\4 \set TabStaff.minimumFret = #5 + \set TabStaff.restrainOpenStrings = ##t c,16 d e f g4 } >> @end lilypond -@funindex \tabChordRepetition +@funindex \tabChordRepeats +@funindex \chordRepeats +@cindex acordes, repetición de +@cindex repetición con @code{q} Las construcciones de acorde se pueden repetir mediante el símbolo de -repetición de acordes @code{q}. Para utilizar esta posibilidad en -combinación con la tablatura, se proporciona -@code{\tabChordRepetition}, que preserva la información de cuerdas -dada explícitamente dentro de las construcciones de acorde, de forma -que los acordes repetidos den lugar a representaciones de tablatura -idénticas. +repetición de acordes @code{q}. En combinación con las tablaturas, su +comportamiento de eliminar números de cuerda y de dedos junto a otros +eventos es fastidioso, por lo que quizá quiera ejecutar +@example +\chordRepeats #'(string-number-event fingering-event) +@end example +explícitamente sobre expresiones musicales en las tablaturas que +utilicen @ref{Repetición de acordes}. Esta instrucción en particular +es tan común que está disponible como @code{\tabChordRepeats}. @lilypond[quote,verbatim] -\tabChordRepetition - guitar = \relative c' { - r8 ~ q4 q8~ q q4 + r8 ~ q4 q8~ q q4 } \new StaffGroup << \new Staff { \clef "treble_8" - \override Voice.StringNumber #'transparent = ##t \guitar } \new TabStaff { - \guitar + \tabChordRepeats \guitar } >> @end lilypond @@ -383,16 +391,16 @@ ties = \relative c' { @funindex \harmonic @funindex \harmonicByFret @funindex \harmonicByRatio -@funindex \chordGlissando Se pueden añadir indicaciones de armónicos a la notación de tablatura como sus alturas de sonido: @lilypond[verbatim,quote] +\layout { \override Voice.StringNumber #'stencil = ##f } firstHarmonic = { - 4 - 4 - 2 + d'4\4\harmonic + g'4\3\harmonic + b'2\2\harmonic } \score { << @@ -402,13 +410,12 @@ firstHarmonic = { } @end lilypond -Observe que la instrucción @code{\harmonic} se debe situar siempre -dentro de una construcción de acorde. Sólo tiene sentido para -armónicos sobre una cuerda abierta en el duodécimo traste. Cualquier -otro armónico debe estar calculado por parte de LilyPond. Se puede -conseguir esto indicando el traste en que debe rozar la cuerda el dedo -de la mano que pisa. - +Observe que la instrucción @code{\harmonic} se debe adjuntar siempre a +notas individuales (posiblemente dentro de un acorde) en lugar de a +acordes completos. Sólo tiene sentido para armónicos sobre una cuerda +abierta en el duodécimo traste. Cualquier otro armónico debe estar +calculado por parte de LilyPond. Se puede conseguir esto indicando el +traste en que debe rozar la cuerda el dedo de la mano que pisa. @lilypond[verbatim,quote] fretHarmonics = { @@ -443,32 +450,31 @@ ratioHarmonics = { } @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {stem-and-beam-behavior-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {polyphony-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {open-string-harmonics-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fretted-string-harmonics-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {slides-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chord-glissando-in-tablature.ly} - @seealso Referencia de la notación: +@ref{Repetición de acordes}, +@ref{Repeticiones explícitas}, @ref{Plicas}, -@ref{Armónicods}, +@ref{Armónicos}, @ref{Glissando}. Fragmentos de código: @@ -480,9 +486,7 @@ Referencia de funcionamiento interno: @rinternals{TabVoice}, @rinternals{Beam}. - @knownissues - Los acordes no se tratan de una forma especial, y de aquí que el selector automático de la cuerda puede elegir fácilmente la misma cuerda para dos notas del acorde. @@ -524,7 +528,7 @@ Los efectos especiales de guitarra se limitan a armónicos y @emph{slides}. @cindex trastes, instrumentos con, afinaciones predefinidas @cindex predefinidas, afinaciones, para instrumentos de traste -@funindex StringTunings +@funindex stringTunings La tablatura en LilyPond calcula automáticamente el traste para cada nota, basándose en la cuerda a que está asignada la nota. Para @@ -539,14 +543,17 @@ para bajo, que suena una octava por debajo de lo escrito. @lilypond[quote,ragged-right,verbatim] << - \new Staff { + \new Voice \with { + \override StringNumber #'stencil = ##f + } { \clef "bass_8" \relative c, { c4 d e f } } - \new TabStaff { - \set TabStaff.stringTunings = #bass-tuning + \new TabStaff \with { + stringTunings = #bass-tuning + } { \relative c, { c4 d e f } @@ -559,19 +566,20 @@ estándar Mi-La-Re-Sol-Si-Mi). Otras afinaciones predefinidas son @code{guitar-open-g-tuning} (Sol Mayor al aire, Re-Sol-Re-Sol-Si-Re), @code{mandolin-tuning} (mandolina) y @code{banjo-open-g-tuning} (banjo con Sol Mayor al aire). Las afinaciones predefinidas están en -@file{ly/string-tuning-init.ly}. +@file{ly/string-tunings-init.ly}. -@funindex contextStringTunings -@funindex \contextStringTunings +@funindex stringTuning +@funindex \stringTuning @cindex tablaturas, afinaciones personalizadas @cindex personalizadas, afinaciones de cuerdas -Es posible crear cualquier afinación de cuerdas que se desee. Se -puede usar la función @code{\contextStringTuning} para definir una -afinación de cuerdas y establecerla como el valor de +Es posible crear cualquier afinación de cuerdas que se desee. +Se puede usar la función @code{\stringTuning} para definir una +afinación de cuerdas y que puede usarse para +establecerla como el valor de @code{stringTunings} para el contexto actual. -@code{\contextStringTuning} admite dos argumentos: el símbolo en que -se almacena la afinación de cuerdas y una construcción de acorde + +Su argumento es una construcción de acorde que define la altura de las notas de cada cuerda al aire en dicha afinación. La construcción de acorde debe estar en el modo de octava absoluto, véase @ref{Escritura de octava absoluta}. @@ -593,7 +601,7 @@ mynotes = { \mynotes } \new TabStaff { - \contextStringTuning #'custom-tuning + \set Staff.stringTunings = \stringTuning \mynotes } >> @@ -602,21 +610,15 @@ mynotes = { La propiedad @code{stringTunings} también se utiliza por parte de @code{FretBoards} para calcular los diagramas de posición automáticos. -@funindex makeStringTuning -@funindex \makeStringTuning - Las afinaciones de cuerdas se utilizan como parte de la clave de asociación para los diagramas de posición predefinidos (véase -@ref{Diagramas predefinidos de trastes}). Se usa la función -@code{\makeStringTuning} para crear una afinación sin fijar el valor -de la propiedad @code{stringTunings} en el contexto actual. Los -argumentos de @code{\makeStringTuning} son el símbolo que usar para la -nueva afinación y una construcción de acorde que se usa para definir -la afinación. El ejemplo anterior también se podría haber escrito +@ref{Diagramas predefinidos de trastes}). + +El ejemplo anterior también se podría haber escrito como sigue: @lilypond[quote,verbatim] -\makeStringTuning #'custom-tuning +custom-tuning = \stringTuning mynotes = { c'4 e' g' c'' | @@ -647,36 +649,27 @@ un objeto altura de LilyPond. Los objetos altura se crean con la función de Scheme @code{ly:make-pitch} (véase @ref{Funciones de Scheme}). -Se así se desea, puede crearse una afinación de cuerdas como un -literal de Scheme. El ejemplo de abajo recrea los ejemplos -anteriores, pero la afinación no se guarda como un objeto separado: - -@lilypond[quote,verbatim] -mynotes = { - c'4 e' g' c'' | - e''4 g'' b'' c''' -} - -<< - \new Staff { - \clef treble - \mynotes - } - \new TabStaff { - \set TabStaff.stringTunings = #`(,(ly:make-pitch 1 5 0) - ,(ly:make-pitch 1 1 0) - ,(ly:make-pitch 0 4 0) - ,(ly:make-pitch 0 0 0)) - \mynotes - } ->> -@end lilypond +@code{\stringTuning} crea dicho objeto a partir de la entrada de +acordes. LilyPond calcula automáticamente el número de líneas dentro del @code{TabStaff} y el número de cuerdas dentro de un @code{FretBoard} calculado automáticamente como el número de elementos de @code{stringTunings}. +Para permitir a todos los contextos TabStaff usar la misma afinación +personalizada por omisión, podemos usar + +@example +\layout @{ + \context @{ + \TabStaff + stringTunings = \stringTuning \notemode @{ @} + @} +@} +@end example + + @cindex moderntab, clave @cindex clave moderntab @cindex clave de tablatura @@ -703,7 +696,7 @@ Referencia de la notación: @ref{Funciones de Scheme}. Archivos instalados: -@file{ly/string-tuning-init.ly} +@file{ly/string-tunings-init.ly}, @file{scm/tablature.scm}. Fragmentos de código: @@ -1120,10 +1113,10 @@ trastes, las propiedades del interface pertenecen a @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-fret-orientations.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {customizing-markup-fret-diagrams.ly} @seealso @@ -1173,7 +1166,7 @@ predefinidos se pueden añadir para otros instrumentos u otras afinaciones siguiendo los ejemplos que aparecen en @file{predefined-guitar-fretboards.ly}. -Los diagramas de posiciones para el ukelele están en el archivo +Los diagramas de posiciones para el ukelele están en el archivo @* @file{predefined-ukulele-fretboards.ly}. @lilypond[verbatim, ragged-right, quote] @@ -1186,13 +1179,13 @@ myChords = \chordmode { a1 a:m a:aug } } \new FretBoards { - \set stringTunings = #ukulele-tuning + \set Staff.stringTunings = #ukulele-tuning \myChords } @end lilypond Los diagramas de posiciones para la mandolina -están contenidos en el archivo +están contenidos en el archivo @* @file{predefined-mandolin-fretboards.ly}. @lilypond[verbatim, ragged-right, quote] @@ -1205,7 +1198,7 @@ myChords = \chordmode { c1 c:m7.5- c:aug } } \new FretBoards { - \set stringTunings = #mandolin-tuning + \set Staff.stringTunings = #mandolin-tuning \myChords } @end lilypond @@ -1432,19 +1425,18 @@ predefinido, las propiedades de interface pertenecen a @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {customizing-fretboard-fret-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {defining-predefined-fretboards-for-other-instruments.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {chordchanges-for-fretboards.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fretboards-alternate-tables.ly} - @seealso Referencia de la notación: @ref{Tablaturas personalizadas}, @@ -1453,9 +1445,9 @@ Referencia de la notación: @ref{Diagramas predefinidos de trastes}. Archivos de inicio: -@file{ly/predefined-guitar-fretboards.ly}, -@file{ly/predefined-guitar-ninth-fretboards.ly}, -@file{ly/predefined-ukulele-fretboards.ly}, +@file{ly/predefined-guitar-fretboards.ly}, @* +@file{ly/predefined-guitar-ninth-fretboards.ly}, @* +@file{ly/predefined-ukulele-fretboards.ly}, @* @file{ly/predefined-mandolin-fretboards.ly}. Fragmentos de código: @@ -1616,7 +1608,6 @@ interface @code{fret-diagram-interface}. Los detalles están en @code{\predefinedFretboardsOn}. @endpredefined - @seealso Referencia de la notación: @ref{Tablaturas personalizadas}. @@ -1644,40 +1635,38 @@ instrumentos con afinaciones no monótonas. @funindex \rightHandFinger Las digitaciones de la mano derecha @var{p-i-m-a} se deben introducir -dentro de una construcción de acorde @code{<>} para que se impriman en -la partitura, incluso si se aplican a una nota suelta. +usando @code{\rightHandFinger} seguido de un número. -@warning{@strong{Debe} haber un guión antes de -@code{@bs{}rightHandFinger} y un espacio antes del ángulo de cierre -@code{>}.} +@warning{Si el número se introduce en notación de Scheme, recuerde +escribir al final un espacio seguido de un ángulo de cierre @code{>} o +similar.} @lilypond[quote,verbatim,relative=0] \clef "treble_8" -4 - - - -1 +c4\rightHandFinger #1 +e\rightHandFinger #2 +g\rightHandFinger #3 +c\rightHandFinger #4 +1 @end lilypond Por brevedad, se puede escribir @code{\rightHandFinger} como algo más corto, como por ejemplo @code{RH}: @example -#(define RH rightHandFinger) +RH=#rightHandFinger @end example @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {placement-of-right-hand-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingerings,-string-indications,-and-right-hand-fingerings.ly} - @seealso Fragmentos de código: @rlsr{Fretted strings}. @@ -1728,7 +1717,6 @@ b16 e g e b g\stopTextSpan e16 b g d @end lilypond - @seealso Referencia de la notación: @ref{Extensiones de texto}. @@ -1912,6 +1900,7 @@ Fragmentos de código: * Tablaturas de banjo:: @end menu + @node Tablaturas de banjo @unnumberedsubsubsec Tablaturas de banjo @translationof Banjo tablatures @@ -1948,24 +1937,23 @@ los trastes para la quinta cuerda: @funindex banjo-open-dm-tuning @funindex four-string-banjo -En LilyPond se encuentran predefinidas varias afinaciones comunes para -el banjo: @code{banjo-c-tuning} (sol-Do-Sol-Si-Re), +Se encuentran predefinidas varias afinaciones comunes para +el banjo de cinco cuerdas: +@code{banjo-c-tuning} (sol-Do-Sol-Si-Re), @code{banjo-modal-tuning} (sol-Re-Sol-Do-Re), @code{banjo-open-d-tuning} (Re Mayor al aire, la-Re-Fa#-La-Re) y @code{banjo-open-dm-tuning} (Re menor al aire, la-Re-Fa-La-Re). -Estas afinaciones se pueden convertir a afinaciones para bajo de +Estas afinaciones se pueden convertir a afinaciones para banjo de cuatro cuerdas utilizando la función @code{four-string-banjo}: @example \set TabStaff.stringTunings = #(four-string-banjo banjo-c-tuning) @end example - @seealso +Archivos de inicio: +@file{ly/string-tunings-init.ly} + Fragmentos de código: @rlsr{Fretted strings}. - -Archivos de inicio: -@file{scm/string-tunings-init.scm} contiene las afinaciones -predefinidas para el banjo. diff --git a/Documentation/es/notation/input.itely b/Documentation/es/notation/input.itely index c7d218157c..a231138dd1 100644 --- a/Documentation/es/notation/input.itely +++ b/Documentation/es/notation/input.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 9f651e1f5143787aeda825a4061f82eede4943a3 + Translation of GIT committish: 4c2851d28c0a94a30cc7652b9b0052ce7f0ade7e 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" +@c \version "2.16.0" @node Entrada y salida generales @chapter Entrada y salida generales @@ -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 @@ -202,7 +203,6 @@ principio del archivo. @} @end example - @funindex \bookpart Se pueden agrupar distintas piezas de música en partes de un libro @@ -229,6 +229,7 @@ como el libro propiamente dicho, mediante la especificación del bloque @} @end example + @node Varios archivos de salida a partir de uno de entrada @subsection Varios archivos de salida a partir de uno de entrada @translationof Multiple output files from one input file @@ -278,6 +279,7 @@ en el archivo fuente @file{eightminiatures.ly}, produce @file{eightminiatures-2.pdf}. @end itemize + @node Nombres de los archivos de salida @subsection Nombres de los archivos de salida @translationof Output file names @@ -349,6 +351,7 @@ El código anterior produce los siguientes archivos de salida: @file{Nocturne.pdf}. @end itemize + @node Estructura del archivo @subsection Estructura del archivo @translationof File structure @@ -370,8 +373,11 @@ las siguientes posibilidades: Una definición de salida, como @code{\paper}, @code{\midi} y @code{\layout}. Tal definición en el nivel más alto cambia los ajustes predeterminados para todo el libro. Si se introduce más de -una de estas definiciones del mismo tipo en el nivel más alto, -cualquier definición en una expresión posterior tiene prioridad. +una de estas definiciones del mismo tipo en el nivel más alto, las +definiciones se combinan, pero en situaciones de conflicto las +definiciones más tardías tienen preferencia. Para ver los detalles +sobre cómo afecta al bloque @code{\layout}, consulte +@ref{El bloque \layout}. @item Una expresión directa de Scheme, como @@ -433,9 +439,10 @@ contiene sólo la expresión musical anterior se traduce a @{ c'4 d' e'2 @} @} @} + \layout @{ @} @} - \layout @{ @} - \header @{ @} + \paper @{ @} + \header @{ @} @} @end example @@ -513,7 +520,7 @@ evitar errores, en las siguientes situaciones: @item A continuación de las instrucciones y variables, es decir, todos los elementos que comienzan con un signo @code{\} de barra invertida. @item A continuación de todo elemento que se deba interpretar como expresión -de Scheme, es decir, todo elemento que comience por un signo @code{#}. +de Scheme, es decir, todo elemento que comience por un signo@tie{}@code{#}. @item Para separar los elementos de una expresión de Scheme. @item Dentro de @code{lyricmode} para separar todos los términos de las instrucciones @code{\override} y @code{\set}. Concretamente, hay que usar espacios @@ -527,6 +534,8 @@ de la instrucción completa. Manual de aprendizaje: @rlearning{Cómo funcionan los archivos de entrada de LilyPond}. +Referencia de la notación: +@ref{El bloque \layout}. @node Títulos y cabeceras @section Títulos y cabeceras @@ -538,6 +547,7 @@ compositor; ciertas piezas tienen mucha más información. @menu * Crear títulos cabeceras y pies de página:: * Cabeceras pies y títulos personalizados:: +* Crear notas al pie:: * Referencia a números de página:: * Índice general:: @end menu @@ -659,50 +669,84 @@ Referencia de la notación: @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}. +Este ejemplo muestra todas las variables de @code{\header}: -@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" -} - -\score { - { s1 } +@c KEEP LY +@lilypond[papersize=a7,quote,verbatim,noragged-right] +\book { \header { - % The following fields are placed at opposite ends of the same line - piece = "Piece" - opus = "Opus" + % Los siguientes campos están centrados + dedication = "Dedication (dedicatoria)" + title = "Title (título)" + subtitle = "Subtitle (subtítulo)" + subsubtitle = "Subsubtitle (sub-subtítulo)" + % Los siguientes campos se distribuyen regularmente sobre una línea + % el campo "instrument" también aparece en las siguientes páginas + instrument = \markup \with-color #green "Instrument (instrumento)" + poet = "Poet (poeta)" + composer = "Composer (autor)" + % Los siguientes campos se sitúan en los extremos opuestos de la misma línea + meter = "Meter (metro)" + arranger = "Arranger (arreglista)" + % Los siguientes campos están centrados en la parte inferior + tagline = "la tagline o línea de etiqueta va al final de la úitlma página" + copyright = "el copyright va al final de la primera página" + } + \score { + { s1 } + \header { + % Los siguientes campos se colocan en los extremos de una línea + piece = "Piece (pieza) 1" + opus = "Opus 1" + } + } + \score { + { s1 } + \header { + % Los siguientes campos se sitúan en los extremos de una línea + piece = "Piece (pieza) 2 en la misma página" + opus = "Opus 2" + } + } + \pageBreak + \score { + { s1 } + \header { + % Los siguientes campos se sitúan en los extremos de una línea + piece = "Piece (pieza) 3 en una página nueva" + opus = "Opus 3" + } } } @end lilypond -@c Is the bit about \null markups true? -mp +Observe que +@itemize +@item +El nombre de instrumento se repite en todas las páginas. + +@item +Solamente @code{piece} (la pieza) y @code{opus} se imprimen en una +@code{\score} cuando la variable de papel @code{print-all-headers} se +establece a @code{##f} (el valor predeterminado). + +@item +@c Is the bit about \null markups true? -mp 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. +@item 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. +@end itemize + +Para cambiar la disposición predeterminada, véase +@ref{Personalización de los bloques de título}. + @cindex breakbefore Utilice la variable @code{breakbefore} dentro de un bloque @@ -711,17 +755,18 @@ 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. +@c KEEP LY @lilypond[papersize=a8landscape,verbatim,noragged-right] \book { \header { - title = "This is my Title" - subtitle = "This is my Subtitle" - copyright = "This is the bottom of the first page" + title = "Este es mi Title (título)" + subtitle = "Este es mi Subtitle (subtítulo)" + copyright = "Este es el final de la primera página" } \score { \repeat unfold 4 { e'' e'' e'' e'' } \header { - piece = "This is the Music" + piece = "Esto es la música" breakbefore = ##t } } @@ -733,11 +778,13 @@ Manual de aprendizaje: @rlearning{Cómo funcionan los archivos de entrada de LilyPond} Referencia de la notación: +@ref{Personalización de los bloques de título}, @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 @@ -851,10 +898,15 @@ Referencia de la notación: @unnumberedsubsubsec Personalización de los bloques de título @translationof Custom layout for title blocks +@cindex bookTitleMarkup +@cindex scoreTitleMarkup +@funindex bookTitleMarkup +@funindex scoreTitleMarkup + 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 +la colocación de los campos de texto, cambie una o las dos variables de @code{\paper} siguientes: @itemize @@ -862,7 +914,9 @@ la colocación de los campos de texto, use una o las dos variables de @item @code{scoreTitleMarkup} (marcado de título de la partitura) @end itemize -Estas variables de marcado se estudian en +La colocación de los títulos cuando se utilizan los valores +predeterminados de estas variables de @code{\markup} se muestra en los +ejemplos de @ref{Presentación predeterminada de los bloques de título del libro y la partitura}. Los ajustes predeterminados para @code{scoreTitleMarkup} tal y como @@ -998,6 +1052,10 @@ y referirnos a ellos en la definición del elemento de marcado. } @end lilypond +@seealso +Referencia de la notación: +@ref{Explicación de los bloques de títulos}. + @node Disposición personalizada de cabeceras y pies de página @unnumberedsubsubsec Disposición personalizada de cabeceras y pies de página @@ -1019,8 +1077,50 @@ texto, use una o más de las siguientes variables de @code{\paper}: @item @code{evenFooterMarkup} (marcado de pie de página par) @end itemize -Estas variables de marcado se estudian en -@ref{Presentación predeterminada de los bloques de título del libro y la partitura}. +@cindex marcado condicional +@cindex on-the-fly +@funindex \on-the-fly + +La instrucción de marcado @code{\on-the-fly} se puede utilizar para +añadir elementos de forma condicional al texto de encabezamiento y pie +de página definido dentro del bloque @code{\paper}, usando la sintaxis +siguiente: + +@example +@code{variable} = @code{\markup} @{ + ... + @code{\on-the-fly} #@var{procedimiento} @var{marcado} + ... +@} +@end example + +El @var{procedimiento} se llama cada vez que se evalúa la instrucción +@code{\markup} en que ésta aparece. El @var{procedimiento} debería +comprobar si se cumple una condición determinada e interpretar (es +decir: imprimir) el argumento @var{marcado} si, y sólo si, la +condición es verdadera. + +Se proveen un cierto número de procedimientos ya hechos para la +comprobación de diversas condiciones: + +@quotation +@multitable {print-page-number-check-first-----} {¿es el núm. de páginas en la parte de libro > 1?-----} + +@headitem Nombre del procedimiento @tab Condición que se comprueba + +@item print-page-number-check-first @tab ¿debería imprimirse esta página? +@item create-page-number-stencil @tab ¿es 'print-page-numbers verdadero? +@item print-all-headers @tab ¿es 'print-all-headers verdadero? +@item first-page @tab ¿es la primera página del libro? +@item (on-page nmbr) @tab ¿es el número de página = nmbr? +@item last-page @tab ¿es la última página del libro? +@item not-first-page @tab ¿no es la primera página del libro? +@item part-first-page @tab ¿es la primera página de la parte de libro? +@item part-last-page @tab ¿es la última página de la parte de libro? +@item not-single-page @tab ¿es el núm. de páginas en la parte de libro > 1? + +@end multitable +@end quotation 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 @@ -1051,6 +1151,314 @@ definiéndola como @code{\oddFooterMarkup}: } @end lilypond +Se pueden combinar varias condiciones de @code{\on-the-fly} con un +operador @q{and}, por ejemplo: + +@example + @code{\on-the-fly #first-page} + @code{\on-the-fly #last-page} + @code{@{ \markup ... \fromproperty #'header: ... @}} +@end example + +determina si la salida es una sola página. + +@seealso +Referencia de la notación: +@ref{Explicación de los bloques de títulos}, +@ref{Presentación predeterminada de los bloques de título del libro y la partitura}. + +Archivos instalados: +@file{../ly/titling-init.ly}. + + +@node Crear notas al pie +@subsection Crear notas al pie +@translationof Creating footnotes + +Se pueden crear dos tipos de notas al pie: automáticas y manuales. + +@menu +* Panorámica de las notas al pie:: +* Notas al pie automáticas:: +* Notas al pie manuales:: +@end menu + +@node Panorámica de las notas al pie +@unnumberedsubsubsec Panorámica de las notas al pie +@translationof Footnotes overview + +Las notas al pie automáticas crean indicadores numéricos crecientes; +en cambio las notas al pie manuales permiten crear un indicador +personalizado. Normalmente, las notas al pie se aplican como +@code{\tweak}s y por ello se pueden colocar directamente sobre los +grobs (objetos gráficos) creados por la mayor parte de los elementos y +post-eventos musicales. En los casos en que esto no funciona así +(como con las líneas divisorias y los cambios de compás, donde los +grobs se producen como consecuencia de cambios en propiedades), las +notas al pie se pueden también especificar como un evento musical +independiente que afecta a todos los grobs de un tipo dado en un punto +temporal concreto. + +La forma completa de una instrucción de nota al pie es + +@example +\footnote @var{marca} @var{desplazamiento} @var{grob} @var{nota} +@var{música} +@end example + +Los elementos son como sigue: + +@table @var +@item marca +es un elemento de marcado o cadena que especifica la nmarca de nota al +pie que se usa tanto para señalar el punto de referencia como la nota +en sí en la parte inferior de la página. Se puede omitir (o, de forma +equivalente, sustituirse con @code{\default}) en cuyo caso se genera +un número en secuencia. +@item desplazamiento +es una pareja de números como @samp{#(2 . 1)} que especifica los +desplazamientos X e Y a partir del punto de referencia en que se +situará la marca. +@item grob +especifica, por su nombre, un tipo de objeto gráfico o grob que marcar +(como @samp{#'Flag} para el corchete de una nota). Si se da, el grob +respectivo se usa como punto de referencia incluso en el caso de que +su @q{causa} no sea la propia @var{música} referenciada sino un grob +creado a partir de ella. Se puede omitit (o sustituirse por +@code{\default}), y entonces sólo se anotará un grob creado +directamente. +@item nota +Esta cadena o elemento de marcado especifica el texto de la nota que +utilizar en la parte inferior de la página. +@item música +Éste es el elemento, evento musical o componente de un acorde o +post-evento, que se está anotando. Aunque no puede omitirse, @emph{sí +puede} sustituirse por @code{\default} en cuyo caso la nota al pie no +se adjunta a una expresión musical dada, sino a un momento de tiempo. +Es obligatorio en este caso utilizar el argumento @var{grob} para +seleccionar un tipo de grob afectado, como @samp{#'TimeSignature} +(indicación de compás). +@end table + +Como ocurre con @code{\tweak}, si nuestra @code{\footnote} se aplica a +un post-evento o articulación, tendrá que ser ella misma precedida de +@code{-} para que el analizador sintáctico adjunte el resultado a la +nota o silencio precedente. + + +@node Notas al pie automáticas +@unnumberedsubsubsec Notas al pie automáticas +@translationof Automatic footnotes + +Las notas al pie automáticas toman cuatro argumentos: la posición +@samp{(x . y)} del indicador, el nombre opcional del @var{grob} que +especifica el objeto de presentación que se anota, el elemento de +marcado de la porpia @var{nota} que aparecerá en la parte inferior de +la página, y por supuesto la @var{música} a que adjuntar la nota al +pie. + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote #'(0.5 . -2) + \markup { The first note } + a'4 b8 + \footnote #'(0.5 . 1) #'Flag + \markup { The third note } + e\noBeam c4 d4 + } +} +@end lilypond + +Las notas en acorde no ofrecen ninguna dificultad especial: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote #'(1 . -1.25) "Here is a C" c + \footnote #'(2 . -0.25) \markup { \italic "An E-flat" } es + \footnote #'(2 . 3) \markup { \bold "This is a G" } g + >1 + } +} +@end lilypond + +@warning{Cuando las notas al pie tienen la misma posición vertical, se +imprimen en orden de descendencia: cuando más alta es la nota al pie, +más arriba está en la lista.} + +He aquí unos ejemplos más de grobs con notas al pie, que +muestran también la posición relativa de las notas respecto de la +línea informativa y la línea de copyright. + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { copyright = \markup { "Copyright 1970" } } + \relative c' { + a'4-\footnote #'(-3 . 0) \markup { \bold Forte } \f + -\footnote #'(0 . 1.5) \markup { A slur } ( + b8)-\footnote #'(0 . -2) \markup { Beam } [ e] + \footnote #'(1 . -1) #'Stem + \markup { \teeny { This is a stem } } + c4 + \footnote #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { A cautionary accidental } + \footnote #'(1 . 1) "The note itself" + dis?4-\footnote #'(0.5 . -0.5) \markup \italic { Slow Down } + _"rit." + } +} +@end lilypond + +Para los elementos @code{\markup} del nivel superior, se requiere el +uso de la instrucción @code{\auto-footnote}: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { \auto-footnote "A simple tune" \italic "By me" } + \relative c' { + a'4 b8 e c4 d + } +} +@end lilypond + + +@node Notas al pie manuales +@unnumberedsubsubsec Notas al pie manuales +@translationof Manual footnotes + +@cindex notas al pie manuales + +Las notas al pie marcadas manualmente toman un primer argumento +adicional de marcado, @var{marca} para construir la marca de +referencia. A diferencia de las marcas de notas al pie generadas +automáticamente, no aparecen antes del elemento de marcado @var{nota} +en la parte inferior de la página: el establecimiento de la conexión +visual se deja para el usuario. LilyPond sólo asegura que el marcado +correspondiente aparece en la parte inferior de la misma página. + +Aparte de esto, su uso es idéntico al de las notas al pie numeradas +automáticamente. + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote + "1" #'(0.5 . -2) + \markup { \italic "1. The first note" } + a'4 + b8 + \footnote + \markup { \bold "2" } #'(0.5 . 1) + "2. The second note" + e + c4 + d-\footnote "3" #'(0.5 . -1) "3. Piano" \p + } +} +@end lilypond + +Para anotar notas de acordes con notas al pie manuales: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote "1" #'(1 . -1.25) "1. C" c + \footnote + \markup { \bold "b" } #'(2 . -0.25) "b. E-flat" es + \footnote "3" #'(2 . 3) \markup { \italic "iii. G" } g + >1 + } +} +@end lilypond + +@warning {Cuando las notas al pie tienen la misma posición vertical, las +anotaciones se imprimen en orden de descendencia; cuanto más alta es +la nota al pie, más arriba está en la lista.} + +He aquí algunos ejemplos de grobs anotados manualmente, mostrando +también la posición relativa de las notas al pie respecto a la línea +informativa a la de copyright: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + a'4-\footnote + \markup { \teeny 1 } #'(-3 . 0) + \markup { 1. \bold Forte } \f + -\footnote + \markup { \teeny b } #'(0 . 1.5) + \markup { b. A slur } ( + b8)-\footnote + \markup { \teeny 3 } #'(0 . -2) + \markup { 3. Beam } [ + e] + \footnote + \markup { 4 } #'(1 . -1) #'Stem + \markup { \bold 4. { This is a stem } } + c4 + \footnote + \markup \concat \teeny { "sharp (v)" } + #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { v. A cautionary accidental } + dis?4-\footnote + \markup \concat \teeny { "a" } #'(0.5 . -0.5) + \markup \italic { a. Slow Down } _"rit." + \footnote + \markup { \teeny \musicglyph #"rests.4" } + #'(1.5 . -0.25) + \markup { \null } \breathe + } +} +@end lilypond + +Para anotar manualmente un elemento @code{\markup} del nivel superior: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { "A simple tune" \footnote "*" \italic "* By me" } + \relative c' { + a'4 b8 e c4 d4 + } +} +@end lilypond + +@seealso +Manual de aprendizaje: +@rlearning{Objetos e interfaces}. + +Referencia de la notación: +@ref{Globos de ayuda}, +@ref{Disposición de la página}, +@ref{Indicaciones de texto}, +@ref{Guiones de texto}, +@ref{Títulos y cabeceras}. + +Referencia de funcionamiento interno: +@rinternals{FootnoteEvent}, +@rinternals{FootnoteItem}, +@rinternals{FootnoteSpanner}, +@rinternals{Footnote_engraver}. + +@knownissues +Varias notas al pie en la misma página solo pueden ir apiladas unas +sobre otras, y no se pueden imprimir en la misma línea. Las notas al +pie no se pueden adjuntar a elementos de silencio multicompás +@code{MultiMeasureRests}, y pueden colisionar con el objeto +@code{Staff}, objetos de @code{\markup} y otras anotaciones +@code{footnote}. Cuando use una cualquiera de las instrucciones +@code{footnote} se requiere un bloque @code{\paper} que contenga +@code{footnote-auto-number = ##f}. + @node Referencia a números de página @subsection Referencia a números de página @@ -1063,7 +1471,7 @@ 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] +@lilypond[verbatim,papersize=a8landscape] \header { tagline = ##f } \book { \label #'firstScore @@ -1096,7 +1504,6 @@ para decidir estas dimensiones. Si el libro tiene entre 10 y 99 páginas, el medidor puede ser "00", es decir, un número de dos dígitos. - @predefined @funindex \label @code{\label}, @@ -1110,13 +1517,13 @@ dígitos. @translationof Table of contents Se puede insertar un índice general o tabla de contenidos utilizando -la instrucción @code{\markuplines \table-of-contents}. Los elementos +la instrucción @code{\markuplist \table-of-contents}. Los elementos que deben aparecer en la tabla de contenidos se introducen con la instrucción @code{\tocItem}, que se puede usar en el nivel más alto de la jerarquía del código, o dentro de una expresión musical. @verbatim -\markuplines \table-of-contents +\markuplist \table-of-contents \pageBreak \tocItem \markup "Primera partitura" @@ -1186,7 +1593,7 @@ tocAct = (add-toc-item! 'tocActMarkup text)) @end verbatim -@lilypond[line-width=11.0\cm] +@lilypond[line-width=10.0\cm] \header { tagline = ##f } \paper { tocActMarkup = \markup \large \column { @@ -1201,7 +1608,7 @@ tocAct = (add-toc-item! 'tocActMarkup text)) \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \tocAct \markup { Atto Primo } \tocItem \markup { Coro. Viva il nostro Alcide } \tocItem \markup { Cesare. Presti omai l'Egizzia terra } @@ -1214,25 +1621,23 @@ tocAct = Se pueden añadir puntos de relleno entre un elemento y su número de página: -@lilypond[verbatim,quote] +@lilypond[verbatim,line-width=10.0\cm] \header { tagline = ##f } \paper { tocItemMarkup = \tocItemWithDotsMarkup } \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \tocItem \markup { Allegro } \tocItem \markup { Largo } \markup \null } @end lilypond - @seealso Archivos de inicio: -@file{../ly/toc-init.ly}. - +@file{ly/toc-init.ly}. @predefined @funindex \table-of-contents @@ -1249,8 +1654,7 @@ Archivos de inicio: @menu * Inclusión de archivos de LilyPond:: * Distintas ediciones a partir de una misma fuente:: -* Codificación del texto:: -* Presentar la notación de LilyPond:: +* Caracteres especiales:: @end menu @@ -1311,7 +1715,7 @@ incorporan al archivo principal, por lo que los nombres de archivo que especifican deben ser relativos al directorio que contiene el archivo principal, no al directorio que contiene el archivo incluido. Sin embargo, este comportamiento se puede modificar pasando la opción -@code{-drelative-includes} en la línea de órdenes (o mediante la +@option{-drelative-includes} en la línea de órdenes (o mediante la adición de @code{#(ly:set-option 'relative-includes #t)} al principio del archivo principal de entrada). Con el valor de @code{relative-includes} establecido, la ruta de cada instrucción @@ -1361,15 +1765,12 @@ instalar una nueva versión de LilyPond. Pueden verse ejemplos sencillos sobre el uso de @code{\include} en @rlearning{Partituras y particellas}. - @seealso Manual de aprendizaje: @rlearning{Otras fuentes de información}, @rlearning{Partituras y particellas}. - @knownissues - Si un archivo incluido recibe un nombre igual al de uno de los archivos de instalación de LilyPond, el archivo que tiene prioridad es el de los archivos de instalación de LilyPond. @@ -1379,15 +1780,17 @@ el de los archivos de instalación de LilyPond. @subsection Distintas ediciones a partir de una misma fuente @translationof Different editions from one source -Se encuentran disponibles varios mecanismos para facilitar la -producción de distintas versiones de una partitura a partir de la -misma fuente musical. Las variables son quizá más útiles para -combinar secciones extensas de música y/o anotaciones de diversas -formas, mientras que las etiquetas son más útiles para seleccionar una -de entra varias secciones de música más cortas. Cualquiera que sea el -método utilizado, la separación de la notación de la estructura de la -partitura hará que sea más fácil cambiar la estructura dejando intacta -la notación. +Se pueden usar varios métodos para generar la producción de distintas +versiones de una partitura a partir de la misma fuente musical. Las +variables son quizá el más útil para combinar secciones extensas de +música y/o anotaciones. Las etiquetas son más útiles para seleccionar +una sección de entre varias secciones de música alternativas, más +cortas, y se pueden usar también para dividir piezas de música en +distintos trozos. + +Cualquiera que sea el método utilizado, la separación de la notación +de la estructura de la partitura hará que sea más fácil cambiar la +estructura dejando intacta la notación. @menu * Uso de las variables:: @@ -1464,9 +1867,12 @@ en archivos separados que se incluyen más tarde, véase @ref{Inclusión de arch @funindex \tag @funindex \keepWithTag @funindex \removeWithTag +@funindex \pushToTag +@funindex \appendToTag @cindex etiqueta @cindex mantener música etiquetada @cindex quitar música etiquetada +@cindex división en música etiquetada La instrucción @code{\tag #'@var{parteA}} marca una expresión musical con el nombre @var{parteA}. Las expresiones etiquetadas de esta @@ -1596,6 +2002,30 @@ etiquetadas, porque el primer filtro quita todas las secciones etiquetadas excepto la que se nombra, y el segundo filtro elimina incluso esa sección etiquetada. +A vecespodemos desear dividir la música en un determinado lugar dentro +de una expresión musical existente. Podemos usar @code{\pushToTag} y +@code{\appendToTag} para añadir material delante o al final de los +@code{elements} de una construcción musical existente. No toda +construcción musical tiene la parte @code{elements}, pero las músicas +secuenciaes y simultáneas son dos apuestas seguras: + +@lilypond[verbatim,quote] +test = { \tag #'here { \tag #'here <> } } + +{ + \pushToTag #'here c' + \pushToTag #'here e' + \pushToTag #'here g' \test + \appendToTag #'here c' + \appendToTag #'here e' + \appendToTag #'here g' \test +} +@end lilypond + +Las dos instrucciones admiten una etiqueta, el material que dividir en +cada ocurrencia de la etiqueta, y la expresión etiquetada. Las +instrucciones aseguran que se copia todo lo que cambian, de forma que +el código original @code{\test} retiene su significado. @seealso Manual de aprendizaje: @@ -1605,15 +2035,12 @@ Referencia de la notación: @ref{Combinación automática de las partes}, @ref{Inclusión de archivos de LilyPond}. - @ignore @c This warning is more general than this placement implies. @c Rests are not merged whether or not they come from tagged sections. @c Should be deleted? -td - @knownissues - Multiple rests are not merged if you create a score with more than one tagged section at the same place. @@ -1648,13 +2075,26 @@ Manual de aprendizaje: Referencia de la notación: @ref{Inclusión de archivos de LilyPond}. + +@node Caracteres especiales +@subsection Caracteres especiales +@translationof Special characters + +@cindex caracteres especiales +@cindex caracteres no ASCII + +@menu +* Codificación del texto:: +* Unicode:: +* Alias de ASCII:: +@end menu + + @node Codificación del texto -@subsection Codificación del texto +@unnumberedsubsubsec Codificación del texto @translationof Text encoding -@cindex Unicode @cindex UTF-8 -@cindex caracteres no ASCII LilyPond usa el conjunto de caracteres definido por el consorcio Unicode y la norma ISO/IEC 10646. Define un nombre único y un código @@ -1721,6 +2161,12 @@ portuguese = \lyricmode { \addlyrics { \portuguese } @end lilypond + +@node Unicode +@unnumberedsubsubsec Unicode + +@cindex Unicode + Para introducir un carácter aislado para el que se conoce el punto de código Unicode pero no está disponible en el editor que se está usando, use @code{\char ##xhhhh} o bien @code{\char #dddd} dentro de @@ -1736,7 +2182,6 @@ caracteres que da el punto de código en hexadecimal para cualquier carácter en el portal del Consorcio Unicode, @uref{http://www.unicode.org/}. - Por ejemplo, tanto @code{\char ##x03BE} como @code{\char #958} insertan el carácter Unicode U+03BE, que tiene el nombre Unicode @qq{Letra griega Xi pequeña}. @@ -1760,7 +2205,7 @@ partitura: } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } -\markup { "Copyright 2008--2011" \char ##x00A9 } +\markup { "Copyright 2008--2012" \char ##x00A9 } @end lilypond @cindex copyright, símbolo de @@ -1774,37 +2219,58 @@ 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 +@node Alias de ASCII +@unnumberedsubsubsec Alias de ASCII +@translationof ASCII aliases -@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, +Se puede incluir una lista de alias de ASCII para caracteres +especiales: -@example -@{ - \displayLilyMusic \transpose c a, @{ c4 e g a bes @} -@} -@end example +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} -imprimirá +\markup "&flqq; – &OE;uvre incomplète… &frqq;" -@example -@{ a,4 cis e fis g @} -@end example +\score { + \new Staff { \repeat unfold 9 a'4 } + \addlyrics { + This is al -- so wor -- kin'~in ly -- rics: –_&OE;… + } +} -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. +\markup \column { + "The replacement can be disabled:" + "– &OE; …" + \override #'(replacement-alist . ()) "– &OE; …" +} +@end lilypond -@example -lilypond archivo.ly >resultado.txt -@end example +También podemos hacer nuestros propios alias, ya sea de forma global: + +@lilypond[quote,verbatim] +\paper { + #(add-text-replacements! + '(("100" . "hundred") + ("dpi" . "dots per inch"))) +} +\markup "A 100 dpi." +@end lilypond + +o local: + +@lilypond[quote,verbatim] +\markup \replace #'(("100" . "hundred") + ("dpi" . "dots per inch")) "A 100 dpi." +@end lilypond + +@seealso +Referencia de la notación: +@ref{Lista de caracteres especiales}. +Archivos instalados: +@file{ly/text-replacements.ly}. @node Controlar la salida @@ -1818,6 +2284,7 @@ lilypond archivo.ly >resultado.txt * Sustituir la tipografía de la notación:: @end menu + @node Extracción de fragmentos de música @subsection Extracción de fragmentos de música @translationof Extracting fragments of music @@ -1849,7 +2316,7 @@ Se pueden definir más zonas de recorte añadiendo más parejas de definición de tiempo rhythmic-location a la lista. Para poder utilizar esta funcionalidad, LilyPond se debe invocar con -la opción @code{-dclip-systems}. Los recortes aparecen en la salida +la opción @option{-dclip-systems}. Los recortes aparecen en la salida como archivos EPS, y se convierten en PDF y PNG si estos formatos también están activados. @@ -1906,6 +2373,7 @@ c8 d b bes a g c2 En música polifónica, @code{Score.skipTypesetting} afecta a todas las voces y pentagramas, ahorrando más tiempo incluso. + @node Formatos de salida alternativos @subsection Formatos de salida alternativos @translationof Alternative output formats @@ -1921,7 +2389,7 @@ el formato de documento portátil (PDF) y PostScript (PS). Los formatos de salida Gráficos de vector escalables (SVG), PostScript encapsulado (EPS) y Gráficos de red portátiles (PNG) también están disponibles a través de opciones de la línea de órdenes, véase -@rprogram{Opciones de la línea de órdenes para lilypond}. +@rprogram{Opciones básicas de la línea de órdenes para LilyPond}. @node Sustituir la tipografía de la notación @@ -1950,10 +2418,10 @@ LilyPond: Descargue y extraiga el archivo zip. Copie la carpeta @code{lilyfonts} a @file{@var{SHARE_DIR}/lilypond/current}; para más información, -consulte @rlearning{Otras fuentes de información}. Mueva la carpeta -@code{fonts} existente a @code{fonts_orig} y mueva la carpeta -@code{lilyfonts} a @code{fonts}. Sencillamente vuelva a mover -@code{fonts_orig} a @code{fonts} para volver a la fuente Feta. +consulte @rlearning{Otras fuentes de información}. Renombre la carpeta +@code{fonts} existente a @code{fonts_orig} y la carpeta +@code{lilyfonts} a @code{fonts}. Para volver a la fuente Feta, +invierta el proceso. @seealso Manual de aprendizaje: @@ -1962,7 +2430,9 @@ Manual de aprendizaje: @knownissues Gonville no se puede usar para tipografiar notación de @q{Música -Antigua}. Diríjase a la página web del autor para obtener más +Antigua} y es probable que cualquier nuevo glifo en versiones +posteriores de LilyPond no existan en la familia +tipográfica Gonville. Diríjase a la página web del autor para obtener más información sobre éste y otros asuntos, entre ellos el régimen de licencias de Gonville. @@ -1991,11 +2461,10 @@ La salida estándar de MIDI es un poco primitiva; de forma opcional, se encuentra disponible una salida MIDI mejorada y mucho más realista, por medio de @ref{El script Articulate}. -@c TODO Check this -La salida MIDI reserva un canal por cada pentagrama, y otro para los -ajustes globales. Por ello, el archivo MIDI no debe tener más de 15 -pautas (o 14 si no se usa la percusión). Otros pentagramas permanecen -en silencio. +La salida MIDI reserva un canal por cada pentagrama, y reserva +el canal 10 para la percusión. Sólo hay 16 canales MIDI por cada +dispositivo, por lo que si la partitura tiene más de 15 pautas, los +canales MIDI se reutilizarán. @menu * Crear archivos MIDI:: @@ -2007,6 +2476,7 @@ en silencio. * El script Articulate:: @end menu + @node Crear archivos MIDI @subsection Crear archivos MIDI @translationof Creating MIDI files @@ -2101,7 +2571,7 @@ Piano de Cola (@code{"acoustic grand"}). @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-midi-output-to-one-channel-per-voice.ly} @knownissues @@ -2156,24 +2626,16 @@ indicación de tempo: \score @{ @var{...música...} \midi @{ - \context @{ - \Score - tempoWholesPerMinute = #(ly:make-moment 72 4) - @} + \tempo 4 = 72 @} @} @end example En este ejemplo, el tempo se establece a 72 pulsos de negra por -minuto. Esta clase de especificación de tempo no puede tomar como -argumento una figura con puntillo. Si necesitamos una figura con -puntillo, dividimos la nota con puntillo en figuras más pequeñas. Por -ejemplo, un tempo de 90 negras con puntillo por minuto se puede -especificar como 270 corcheas por minuto: - -@example -tempoWholesPerMinute = #(ly:make-moment 270 8) -@end example +minuto. @code{\tempo} is actually a music command for +setting properties during the interpretation of music: in the +context of output definitions like a @code{\midi} block, as a matter of +courtesy those are reinterpreted as if they were context modifications. @cindex MIDI, definiciones de contexto @@ -2206,6 +2668,7 @@ dentro de un bloque de partitura definido con una instrucción @} @end example + @node ¿Qué sale por el MIDI? @subsection ¿Qué sale por el MIDI? @translationof What goes into the MIDI output? @@ -2427,9 +2890,9 @@ general MIDI está limitado al intervalo desde 0.2 hasta 0.5. >> \layout {} \midi { + \tempo 2 = 72 \context { \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) midiMinimumVolume = #0.2 midiMaximumVolume = #0.5 } @@ -2478,10 +2941,7 @@ cada instrumento para que esto funcione correctamente. >> \layout {} \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } @end lilypond @@ -2549,10 +3009,7 @@ del clarinete a los mismos valores que el ejemplo anterior. >> \layout { } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } @end lilypond @@ -2622,6 +3079,7 @@ Debido a que el estándar General MIDI no contiene golpes de aro (@emph{rim shots}), para este propósito se utiliza en su lugar el golpe lateral de baqueta (@emph{sidestick}). + @node El script Articulate @subsection El script Articulate @translationof The Articulate script @@ -2662,3 +3120,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}. +Para ver el resultado, lo más usual es llamar a LilyPond +mediante la línea de órdenes. Por ejemplo, + +@example +@{ + \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + +imprime lo siguiente: + +@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. diff --git a/Documentation/es/notation/keyboards.itely b/Documentation/es/notation/keyboards.itely index 05cf7deb4f..55251ab955 100644 --- a/Documentation/es/notation/keyboards.itely +++ b/Documentation/es/notation/keyboards.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 104566603d933821fbdbb7696ef0b5bbd3fa0797 + Translation of GIT committish: 2e3c5412eacdbfd976d2cd6c5cc90f272ddfc263 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" +@c \version "2.16.0" @node Teclados y otros instrumentos de varios pentagramas @section Teclados y otros instrumentos de varios pentagramas @@ -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:: @@ -32,6 +31,7 @@ teclado. * Arpa:: @end menu + @node Notación común para instrumentos de teclado @subsection Notación común para instrumentos de teclado @translationof Common notation for keyboards @@ -47,6 +47,7 @@ todos los instrumentos de teclado. * Plicas de pentagrama cruzado:: @end menu + @node Referencias para teclados @unnumberedsubsubsec Referencias para teclados @translationof References for keyboards @@ -116,7 +117,7 @@ se cruzan entre voces, como se explica en @rlearning{Otras aplicaciones de los t @end itemize @c @snippets -@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@c @lilypondfile[verbatim,quote,texidoc,doctitle] @c {forcing-visibility-of-systems-with-multi-bar-rests-when-using-\RemoveEmptyStaffContext.ly} @c http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312 @@ -143,6 +144,7 @@ Referencia de funcionamiento interno: Fragmentos de código: @rlsr{Keyboards}. + @node Cambiar de pentagrama manualmente @unnumberedsubsubsec Cambiar de pentagrama manualmente @translationof Changing staff manually @@ -215,16 +217,19 @@ cruzan de un pentagrama a otro: \voiceOne % Make space for fingering in the cross-staff voice \once\override DynamicLineSpanner #'staff-padding = #3.4 - e''2\p\< d''\> s1*0\! + e''2\p\< d''\> + c''1\! } \new Staff = "down" << { \clef bass s4. e,8\rest g,2\rest + c1 } \\ { c8\( g c' \change Staff = "up" e' g' b'-3 a' g'\) + f'1 } >> >> @@ -240,12 +245,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: @rlearning{Arreglar notación con superposiciones}. @@ -262,6 +261,11 @@ 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. En este caso, utilice barras manuales. + @node Cambiar de pentagrama automáticamente @unnumberedsubsubsec Cambiar de pentagrama automáticamente @@ -342,7 +346,6 @@ en el pentagrama inferior: >> @end lilypond - @seealso Referencia de la notación: @ref{Cambiar de pentagrama manualmente}. @@ -353,9 +356,7 @@ Fragmentos de código: Referencia de funcionamiento interno: @rinternals{AutoChangeMusic}. - @knownissues - @cindex acordes, división entre pentagramas con \autochange Los cambios de pentagrama pueden no acabar en lugares óptimos. Para @@ -366,6 +367,7 @@ Los acordes no se dividen entre los pentagramas; se asignan a un pentagrama en función de la primera nota nombrada dentro de la construcción del acorde. + @node Líneas de cambio de pentagrama @unnumberedsubsubsec Líneas de cambio de pentagrama @translationof Staff-change lines @@ -412,7 +414,6 @@ automáticamente una línea que conecte las notas: @code{\hideStaffSwitch}. @endpredefined - @seealso Fragmentos de código: @rlsr{Keyboards}. @@ -438,46 +439,22 @@ Referencia de funcionamiento interno: @cindex acordes de pentagrama cruzado @funindex Stem -@funindex cross-staff -@funindex length -@funindex flag-style +@funindex \crossStaff +@funindex \autoBeamOff +@funindex Span_stem_engraver -Se pueden hacer acordes que cruzan los pentagramas: +Se pueden hacer acordes que cruzan los pentagramas usando el grabador +@code{Span_stem_engraver}. Debe tenerse cuidado para estar seguro de +que las barras automáticas no unen las notas de una pauta cuando no es +necesario que estén unidas en la otra pauta. -@lilypond[verbatim,quote] -\new PianoStaff << - \new Staff { - \relative c' { - f8 e4 d8 d f e4 - } - } - \new Staff { - \relative c' { - << { - \clef bass - % stems may overlap the other staff - \override Stem #'cross-staff = ##t - % extend the stems to reach the other staff - \override Stem #'length = #12 - % do not print extra flags - \override Stem #'flag-style = #'no-flag - % prevent beaming as needed - a8 g4 f8 f bes\noBeam g4 - } - \\ - { - f,2 bes4 c - } >> - } - } ->> -@end lilypond +@lilypondfile[verbatim,quote] +{cross-staff-stems.ly} @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {indicating-cross-staff-chords-with-arpeggio-bracket.ly} - @seealso Fragmentos de código: @rlsr{Keyboards}. @@ -497,6 +474,7 @@ relacionados con el piano. * Pedales de piano:: @end menu + @node Pedales de piano @unnumberedsubsubsec Pedales de piano @translationof Piano pedals @@ -613,6 +591,7 @@ Esta sección se ocupa de la notación que es exclusiva del acordeón. * Símbolos de Discanto:: @end menu + @node Símbolos de Discanto @unnumberedsubsubsec Símbolos de Discanto @translationof Discant symbols @@ -633,10 +612,9 @@ ejecución. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {accordion-discant-symbols.ly} - @seealso Fragmentos de código: @rlsr{Keyboards}. @@ -653,6 +631,7 @@ Esta sección trata sobre asuntos de notación específicos del arpa. * Pedales de arpa:: @end menu + @node Referencias para notación de arpa @unnumberedsubsubsec Referencias para notación de arpa @translationof References for harps @@ -682,6 +661,7 @@ Referencia de la notación: @ref{Arpegio}, @ref{Armónicos}. + @node Pedales de arpa @unnumberedsubsubsec Pedales de arpa @translationof Harp pedals diff --git a/Documentation/es/notation/notation-appendices.itely b/Documentation/es/notation/notation-appendices.itely index 0958bd5fd5..0a8fe0f779 100644 --- a/Documentation/es/notation/notation-appendices.itely +++ b/Documentation/es/notation/notation-appendices.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 5becf12f5ada67346f70ad8cfe68589466619305 + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" @node Tablas del manual sobre notación @appendix Tablas del manual sobre notación @@ -19,31 +19,36 @@ * Modificadores de acorde más usuales:: * Afinaciones de cuerdas predefinidas:: * Diagramas predefinidos de posiciones:: +* Tamaños de página predefinidos:: * Instrumentos MIDI:: * Lista de colores:: * La tipografía Feta:: * Estilos de cabezas de nota:: * Instrucciones de marcado de texto:: * Instrucciones de listas de marcado de texto:: +* Lista de caracteres especiales:: * Lista de articulaciones:: * Notas de percusión:: * Glosario técnico:: * Todas las propiedades de contexto:: * Propiedades de disposición:: * Funciones musicales disponibles:: +* Identificadores de modificación de contextos:: * Predicados de tipo predefinidos:: * Funciones de Scheme:: @end menu + @node Cuadro de nombres de acordes @appendixsec Cuadro de nombres de acordes @translationof Chord name chart -Las siguientes tablas muestran dos sistemas estándar para imprimir los +La siguiente tabla muestra dos sistemas estándar para imprimir los nombres de los acordes, junto a las notas que representan. -@lilypondfile{chord-names-jazz.ly} +@c The line width is a hack to allow space for instrument names +@lilypondfile[quote,line-width=15\cm]{chord-names-jazz.ly} @node Modificadores de acorde más usuales @appendixsec Modificadores de acorde más usuales @@ -72,7 +77,7 @@ Tercera mayor y quinta justa @tab @code{5} o nada @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:5 } @@ -85,7 +90,7 @@ Tercera menor y quinta justa @tab @code{m} o @code{m5} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m } @@ -98,7 +103,7 @@ Tercera mayor y quinta aumentada @tab @code{aug} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:aug } @@ -111,7 +116,7 @@ Tercera menor y quinta disminuida @tab @code{dim} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:dim } @@ -124,7 +129,7 @@ Tríada mayor con séptima menor @tab @code{7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:7 } @@ -137,7 +142,7 @@ Tríada mayor y séptima mayor @tab @code{maj7} ó @code{maj} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj7 } @@ -150,7 +155,7 @@ Tríada menor y séptima menor @tab @code{m7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m7 } @@ -163,7 +168,7 @@ Tríada disminuida y séptima disminuida @tab @code{dim7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:dim7 } @@ -176,7 +181,7 @@ Tríada aumentada y séptima menor @tab @code{aug7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:aug7 } @@ -189,7 +194,7 @@ Tríada disminuida y séptima menor @tab @code{m7.5-} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m7.5- } @@ -202,7 +207,7 @@ Tríada menor con séptima mayor @tab @code{m7+} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m7+ } @@ -215,7 +220,7 @@ Tríada mayor y sexta @tab @code{6} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:6 } @@ -228,7 +233,7 @@ Tríada menor y sexta @tab @code{m6} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m6 } @@ -241,7 +246,7 @@ Séptima dominante con novena mayor @tab @code{9} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:9 } @@ -254,7 +259,7 @@ Séptima mayor y novena mayor @tab @code{maj9} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj9 } @@ -267,7 +272,7 @@ Séptima menor y novena mayor @tab @code{m9} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m9 } @@ -280,7 +285,7 @@ Novena dominante con oncena justa @tab @code{11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:11 } @@ -293,7 +298,7 @@ Novena mayor y oncena justa @tab @code{maj11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj11 } @@ -306,7 +311,7 @@ Novena menor y oncena justa @tab @code{m11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m11 } @@ -319,7 +324,7 @@ Novena dominante y trecena mayor @tab @code{13} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:13 } @@ -332,7 +337,7 @@ Oncena dominante y trecena mayor @tab @code{13.11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:13.11 } @@ -345,7 +350,7 @@ Oncena mayor y trecena mayor @tab @code{maj13.11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj13.11 } @@ -358,7 +363,7 @@ Oncena menor y trecena mayor @tab @code{m13.11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m13.11 } @@ -371,7 +376,7 @@ Segunda mayor y quinta justa @tab @code{sus2} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:sus2 } @@ -384,7 +389,7 @@ Cuarta justa y quinta justa @tab @code{sus4} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:sus4 } @@ -397,7 +402,7 @@ Perfect fifth @tab @code{1.5} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { \powerChords c1:1.5 @@ -411,7 +416,7 @@ Perfect fifth, octave @tab @code{1.5.8} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { \powerChords c1:1.5.8 @@ -420,6 +425,7 @@ Perfect fifth, octave @end multitable + @node Afinaciones de cuerdas predefinidas @appendixsec Afinaciones de cuerdas predefinidas @translationof Predefined string tunings @@ -428,6 +434,7 @@ El cuadro de abajo muestra las afinaciones predefinidas de cuerdas. @lilypondfile{display-predefined-string-tunings.ly} + @node Diagramas predefinidos de posiciones @appendixsec Diagramas predefinidos de posiciones @translationof Predefined fretboard diagrams @@ -435,16 +442,268 @@ El cuadro de abajo muestra las afinaciones predefinidas de cuerdas. El cuadro siguiente presenta los diagramas de posiciones de acordes predefinidos para guitarra. -@lilypondfile{display-predefined-fretboards.ly} +@lilypondfile[line-width=15.5\cm]{display-predefined-fretboards.ly} El cuadro siguiente presenta los diagramas de traste predefinidos para ukelele. -@lilypondfile{display-predefined-ukulele-fretboards.ly} +@lilypondfile[line-width=15.5\cm]{display-predefined-ukulele-fretboards.ly} El siguiente cuadro presenta los diagramas de posiciones predefinidas para la mandolina. -@lilypondfile{display-predefined-mandolin-fretboards.ly} +@lilypondfile[line-width=15.5\cm]{display-predefined-mandolin-fretboards.ly} + + +@node Tamaños de página predefinidos +@appendixsec Tamaños de página predefinidos +@translationof Predefined paper sizes + +Los tamaños de página se definen en el archivo @file{scm/paper.scm} + +@noindent +@strong{La serie A de @qq{ISO 216}} +@table @code +@item "a10" +(26 x 37 mm) +@item "a9" +(37 x 52 mm) +@item "a8" +(52 x 74 mm) +@item "a7" +(74 x 105 mm) +@item "a6" +(105 x 148 mm) +@item "a5" +(148 x 210 mm) +@item "a4" +(210 x 297 mm) +@item "a3" +(297 x 420 mm) +@item "a2" +(420 x 594 mm) +@item "a1" +(594 x 841 mm) +@item "a0" +(841 x 1189 mm) +@end table + +@noindent +@strong{La serie B de @qq{ISO 216}} +@table @code +@item "b10" +(31 x 44 mm) +@item "b9" +(44 x 62 mm) +@item "b8" +(62 x 88 mm) +@item "b7" +(88 x 125 mm) +@item "b6" +(125 x 176 mm) +@item "b5" +(176 x 250 mm) +@item "b4" +(250 x 353 mm) +@item "b3" +(353 x 500 mm) +@item "b2" +(500 x 707 mm) +@item "b1" +(707 x 1000 mm) +@item "b0" +(1000 x 1414 mm) +@end table + +@noindent +@strong{Dos tamaños extendidos según se definen en @qq{DIN 476}} +@table @code +@item "4a0" +(1682 x 2378 mm) +@item "2a0" +(1189 x 1682 mm) +@end table + +@noindent +@strong{Serie C estándar de @qq{ISO 269}} +@table @code +@item "c10" +(28 x 40 mm) +@item "c9" +(40 x 57 mm) +@item "c8" +(57 x 81 mm) +@item "c7" +(81 x 114 mm) +@item "c6" +(114 x 162 mm) +@item "c5" +(162 x 229 mm) +@item "c4" +(229 x 324 mm) +@item "c3" +(324 x 458 mm) +@item "c2" +(458 x 648 mm) +@item "c1" +(648 x 917 mm) +@item "c0" +(917 x 1297 mm) +@end table + +@noindent +@strong{Tamaños de página norteamiericanos} +@table @code +@item "junior-legal" +(8.0 x 5.0 in) +@item "legal" +(8.5 x 14.0 in) +@item "ledger" +(17.0 x 11.0 in) +@item "letter" +(8.5 x 11.0 in) +@item "tabloid" +(11.0 x 17.0 in) +@item "11x17" +(11.0 x 17.0 in) +@item "17x11" +(17.0 x 11.0 in) +@end table + +@noindent +@strong{Tamaño carta gubernamental del IEEE Printer Working Group, para escritura de niños} +@table @code +@item "government-letter" +(8 x 10.5 in) +@item "government-legal" +(8.5 x 13.0 in) +@item "philippine-legal" +(8.5 x 13.0 in) +@end table + +@noindent +@strong{Tamaños de ANSI} +@table @code +@item "ansi a" +(8.5 x 11.0 in) +@item "ansi b" +(17.0 x 11.0 in) +@item "ansi c" +(17.0 x 22.0 in) +@item "ansi d" +(22.0 x 34.0 in) +@item "ansi e" +(34.0 x 44.0 in) +@item "engineering f" +(28.0 x 40.0 in) +@end table + +@noindent +@strong{Tamaños arquitectóncos norteamericanos} +@table @code +@item "arch a" +(9.0 x 12.0 in) +@item "arch b" +(12.0 x 18.0 in) +@item "arch c" +(18.0 x 24.0 in) +@item "arch d" +(24.0 x 36.0 in) +@item "arch e" +(36.0 x 48.0 in) +@item "arch e1" +(30.0 x 42.0 in) +@end table + +@noindent +@strong{Tamaños antiguos que aún se utilizan en el Reino Unido} +@table @code +@item "statement" +(5.5 x 8.5 in) +@item "half letter" +(5.5 x 8.5 in) +@item "quarto" +(8.0 x 10.0 in) +@item "octavo" +(6.75 x 10.5 in) +@item "executive" +(7.25 x 10.5 in) +@item "monarch" +(7.25 x 10.5 in) +@item "foolscap" +(8.27 x 13.0 in) +@item "folio" +(8.27 x 13.0 in) +@item "super-b" +(13.0 x 19.0 in) +@item "post" +(15.5 x 19.5 in) +@item "crown" +(15.0 x 20.0 in) +@item "large post" +(16.5 x 21.0 in) +@item "demy" +(17.5 x 22.5 in) +@item "medium" +(18.0 x 23.0 in) +@item "broadsheet" +(18.0 x 24.0 in) +@item "royal" +(20.0 x 25.0 in) +@item "elephant" +(23.0 x 28.0 in) +@item "double demy" +(22.5 x 35.0 in) +@item "quad demy" +(35.0 x 45.0 in) +@item "atlas" +(26.0 x 34.0 in) +@item "imperial" +(22.0 x 30.0 in) +@item "antiquarian" +(31.0 x 53.0 in) +@end table + +@noindent +@strong{Tamaños basados en PA4} +@table @code +@item "pa0" +(840 x 1120 mm) +@item "pa1" +(560 x 840 mm) +@item "pa2" +(420 x 560 mm) +@item "pa3" +(280 x 420 mm) +@item "pa4" +(210 x 280 mm) +@item "pa5" +(140 x 210 mm) +@item "pa6" +(105 x 140 mm) +@item "pa7" +(70 x 105 mm) +@item "pa8" +(52 x 70 mm) +@item "pa9" +(35 x 52 mm) +@item "pa10" +(26 x 35 mm) +@end table + +@noindent +@strong{Usado en el Asia suroriental y en Australia} +@table @code +@item "f4" +(210 x 330 mm) +@end table + +@noindent +@strong{Usado para los diminutos ejemplos de @code{@@lilypond} de la documentación; basado en a8 apaisado.} +@table @code +@item "a8landscape" +(74 x 52 mm) +@end table + @node Instrumentos MIDI @appendixsec Instrumentos MIDI @@ -638,6 +897,7 @@ consulte @ref{Formatear el texto}. * Glifos de puntas de corchete:: * Glifos de pedal:: * Glifos de acordeón:: +* Glifos de ligadura:: * Glifos de vaticana:: * Glifos de medicea:: * Glifos de Hufnagel:: @@ -645,6 +905,7 @@ consulte @ref{Formatear el texto}. * Glifos de neomensural:: * Glifos de Petrucci:: * Glifos de Solesmes:: +* Glifos de la notación del canto kievano:: @end menu @@ -654,8 +915,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #clefs +\markuplist \override-lines #'(word-space . 4) + \doc-chars #clefs @end lilypond @@ -665,8 +926,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #timesig +\markuplist \override-lines #'(word-space . 4) + \doc-chars #timesig @end lilypond @@ -676,8 +937,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #numbers +\markuplist \override-lines #'(word-space . 4) + \doc-chars #numbers @end lilypond @@ -687,8 +948,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #accidentals +\markuplist \override-lines #'(word-space . 4) + \doc-chars #accidentals @end lilypond @@ -698,8 +959,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #default-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #default-noteheads @end lilypond @@ -709,8 +970,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #special-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #special-noteheads @end lilypond @@ -720,8 +981,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #shape-note-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #shape-note-noteheads @end lilypond @@ -731,8 +992,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #rests +\markuplist \override-lines #'(word-space . 4) + \doc-chars #rests @end lilypond @@ -742,8 +1003,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #flags +\markuplist \override-lines #'(word-space . 4) + \doc-chars #flags @end lilypond @@ -753,8 +1014,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #dots +\markuplist \override-lines #'(word-space . 4) + \doc-chars #dots @end lilypond @@ -764,8 +1025,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #dynamics +\markuplist \override-lines #'(word-space . 4) + \doc-chars #dynamics @end lilypond @@ -775,8 +1036,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #scripts +\markuplist \override-lines #'(word-space . 4) + \doc-chars #scripts @end lilypond @@ -786,8 +1047,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #arrowheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #arrowheads @end lilypond @@ -797,8 +1058,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #brackettips +\markuplist \override-lines #'(word-space . 4) + \doc-chars #brackettips @end lilypond @@ -808,8 +1069,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #pedal +\markuplist \override-lines #'(word-space . 4) + \doc-chars #pedal @end lilypond @@ -819,8 +1080,19 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #accordion +\markuplist \override-lines #'(word-space . 4) + \doc-chars #accordion +@end lilypond + + +@node Glifos de ligadura +@unnumberedsubsec Glifos de ligadura +@translationof Tie glyphs + +@lilypond[quote] +\include "font-table.ly" +\markuplist \override-lines #'(word-space . 4) + \doc-chars #ties @end lilypond @@ -830,8 +1102,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #vaticana +\markuplist \override-lines #'(word-space . 4) + \doc-chars #vaticana @end lilypond @@ -841,8 +1113,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #medicaea +\markuplist \override-lines #'(word-space . 4) + \doc-chars #medicaea @end lilypond @@ -852,8 +1124,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #hufnagel +\markuplist \override-lines #'(word-space . 4) + \doc-chars #hufnagel @end lilypond @@ -863,8 +1135,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #mensural +\markuplist \override-lines #'(word-space . 4) + \doc-chars #mensural @end lilypond @@ -874,8 +1146,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #neomensural +\markuplist \override-lines #'(word-space . 4) + \doc-chars #neomensural @end lilypond @@ -885,8 +1157,8 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #petrucci +\markuplist \override-lines #'(word-space . 4) + \doc-chars #petrucci @end lilypond @@ -896,8 +1168,19 @@ consulte @ref{Formatear el texto}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #solesmes +\markuplist \override-lines #'(word-space . 4) + \doc-chars #solesmes +@end lilypond + + +@node Glifos de la notación del canto kievano +@unnumberedsubsec Glifos de la notación del canto kievano +@translationof Kievan Notation glyphs + +@lilypond[quote] +\include "font-table.ly" +\markuplist \override-lines #'(word-space . 4) + \doc-chars #kievan @end lilypond @@ -923,11 +1206,31 @@ Se pueden usar los siguientes estilos para las cabezas de las notas. @translationof Text markup list commands Se puede usar cualquiera de las siguientes instrucciones con -@code{\markuplines}: +@code{\markuplist}: @include markup-list-commands.tely +@node Lista de caracteres especiales +@appendixsec Lista de caracteres especiales +@translationof List of special characters + +Se pueden usar las siguientes referencias a carcteres especiales; para +ver más detalles, consulte @ref{Alias de ASCII}. + +Se usa la sintaxis del HTML y casi todas estas referencias son las +mismas que en el HTML. El resto están inspiradas en @LaTeX{}. + +Los caracteres están enmarcados en un rectángulo de forma que pueda +verse el tamaño que tienen. Se ha añadido un pequeño relleno de +separación entre el carácter y el rectángulo para mejorar la +legibilidad. + +@lilypond[quote] +\include "special-characters.ly" +@end lilypond + + @node Lista de articulaciones @appendixsec Lista de articulaciones @translationof List of articulations @@ -1019,6 +1322,7 @@ se pueden adjuntar a las notas (p.ej. @samp{c\accent}). \new RhythmicStaff { \scriptStaff #articulations } @end lilypond + @node Indicaciones de adornos @unnumberedsubsec Indicaciones de adornos @translationof Ornament scripts @@ -1028,6 +1332,7 @@ se pueden adjuntar a las notas (p.ej. @samp{c\accent}). \new RhythmicStaff { \scriptStaff #ornaments } @end lilypond + @node Indicaciones de calderón @unnumberedsubsec Indicaciones de calderón @translationof Fermata scripts @@ -1037,6 +1342,7 @@ se pueden adjuntar a las notas (p.ej. @samp{c\accent}). \new RhythmicStaff { \scriptStaff #fermatas } @end lilypond + @node Indicaciones específicas de ciertos instrumentos @unnumberedsubsec Indicaciones específicas de ciertos instrumentos @translationof Instrument-specific scripts @@ -1046,6 +1352,7 @@ se pueden adjuntar a las notas (p.ej. @samp{c\accent}). \new RhythmicStaff { \scriptStaff #instrument-specific } @end lilypond + @node Indicaciones de repetición @unnumberedsubsec Indicaciones de repetición @translationof Repeat sign scripts @@ -1055,6 +1362,7 @@ se pueden adjuntar a las notas (p.ej. @samp{c\accent}). \new RhythmicStaff { \scriptStaff #repeats } @end lilypond + @node Indicaciones antiguas @unnumberedsubsec Indicaciones antiguas @translationof Ancient scripts @@ -1101,6 +1409,7 @@ fuente. * stencil (sello):: @end menu + @node alist (lista-A) @unnumberedsubsec alist (lista-A) @translationof alist @@ -1118,6 +1427,7 @@ forma que se pueda informar de los fallos de comprobación de tipo con un mensaje de consola que incluye el nombre del predicado de tipo esperado. + @node callback @unnumberedsubsec callback @translationof callback @@ -1174,11 +1484,10 @@ una ligadura. Un conjunto de glifos con un estilo y forma uniformes forman una fuente tipográfica, y un conjunto de fuentes tipográficas que abarcan varios estilos forman un tipo. - @seealso Referencia de la notación: @ref{Tipografías}, -@ref{Codificación del texto}. +@ref{Caracteres especiales}. @node grob (objeto gráfico) @@ -1228,6 +1537,7 @@ se pueden cambiar utilizando @code{\override} y @code{\revert}. Referencia de la notación: @ref{mutable}. + @node interfaz @unnumberedsubsec interfaz @translationof interface @@ -1293,6 +1603,7 @@ de los cálculos se almacenan en propiedades mutables. Referencia de la notación: @ref{inmutable}. + @node output-def (definición de salida) @unnumberedsubsec output-def (definición de salida) @translationof output-def @@ -1423,6 +1734,7 @@ complejos, usados para objetos con identidades. Si tiene acceso a las fuentes de LilyPond sources, encontrará más información en @file{lily/includes/smob.hh}. + @node stencil (sello) @unnumberedsubsec stencil (sello) @translationof stenci @@ -1468,6 +1780,17 @@ Referencia de funcionamiento interno: @include identifiers.tely +@node Identificadores de modificación de contextos +@appendixsec Identificadores de modificación de contextos +@translationof Context modification identifiers + +Se definen las siguientes instrucciones +para su uso como modificaciones de contexto dentro de un +bloque @code{\layout} o @code{\with}. + +@include context-mod-identifiers.tely + + @node Predicados de tipo predefinidos @appendixsec Predicados de tipo predefinidos @translationof Predefined type predicates diff --git a/Documentation/es/notation/notation.itely b/Documentation/es/notation/notation.itely index 3394c321de..b07a10de71 100644 --- a/Documentation/es/notation/notation.itely +++ b/Documentation/es/notation/notation.itely @@ -1,13 +1,13 @@ @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' Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Notación musical @chapter Notación musical diff --git a/Documentation/es/notation/percussion.itely b/Documentation/es/notation/percussion.itely index 12b57c70c1..0acaa98750 100644 --- a/Documentation/es/notation/percussion.itely +++ b/Documentation/es/notation/percussion.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 274c916b48393e0f866cbab68c18a505f6fc7ea3 + Translation of GIT committish: 80340bdefc128536c79733d8c6f3467d91b01f72 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" +@c \version "2.16.0" @node Percusión @section Percusión @@ -18,6 +18,7 @@ * Notación común para percusión:: @end menu + @node Notación común para percusión @subsection Notación común para percusión @translationof Common notation for percussion @@ -36,6 +37,7 @@ rítmicos una melodía. * Notas fantasma:: @end menu + @node Referencias para percusión @unnumberedsubsubsec Referencias para percusión @translationof References for percussion @@ -54,7 +56,6 @@ La salida MIDI se trata en una sección aparte; véase @ref{Percusión en MIDI}. @end itemize - @seealso Referencia de la notación: @ref{Mostrar los ritmos de la melodía}, @@ -110,11 +111,10 @@ explícitamente o utilizar otras claves. @lilypond[quote,ragged-right,verbatim] \drums { - \clef treble - hh4 hh hh hh - \break \clef percussion bd4 bd bd bd + \clef treble + hh4 hh hh hh } @end lilypond @@ -123,7 +123,6 @@ Hay ciertos detalles respecto a cómo está contemplado el MIDI para los instrumentos de percusión; para ver los detalles consulte @ref{Percusión en MIDI}. - @seealso Referencia de la notación: @ref{Percusión en MIDI}, @@ -146,8 +145,7 @@ explícitamente, las corcheas se presentan con dos barras cruzadas (siendo la barra de corchea la tercera), y los redobles más breves que las corcheas tienen una barra cruzada para complementar las barras normales. Esto se consigue mediante la notación de trémolo, -@code{:32}, véase @ref{Repeticiones de trémolo}. He aquí un ejemplo de -redobles de caja: +véase @ref{Repeticiones de trémolo}. @lilypond[quote,verbatim] \drums { @@ -160,20 +158,25 @@ redobles de caja: @end lilypond Los golpes de baqueta se pueden indicar mediante la colocación de -@code{^"R"} o @code{^"L"} después de la nota. La propiedad +los elementos de marcado @code{"R"} o @code{"L"} encima o debajo de +las notas, como se estudia en @ref{Dirección y posición}. La propiedad @code{staff-padding} se puede sobreescribir para conseguir una línea de base satisfactoria. @lilypond[quote,verbatim] \drums { \repeat unfold 2 { - sn16 ^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L" sn^"R" sn^"R" + sn16^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L" sn^"R" sn^"R" + \stemUp + sn16_"L" sn_"R" sn_"L" sn_"L" sn_"R" sn_"L" sn_"R" sn_"R" } } @end lilypond - @seealso +Referencia de la notación: +@ref{Repeticiones de trémolo}. + Fragmentos de código: @rlsr{Percussion}. @@ -187,7 +190,6 @@ xilófono, el vibráfono y los timbales) se escriben usando pentagramas normales. Esto se estudia en otras secciones del manual. @seealso -@c @c TODO: possibly link to an alternate section of NR 3.5, if @c "percussion in MIDI" gets a separate subsubsection for @c pitched percussion sounds. -gp @@ -264,6 +266,7 @@ mus = \drummode { \remove Bar_engraver \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics \nam @@ -296,6 +299,7 @@ mus = \drummode { timh ssh timl ssl cb s16 } \remove Bar_engraver \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f \override StaffSymbol #'line-count = #2 \override StaffSymbol #'staff-space = #2 @@ -326,6 +330,7 @@ mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } %% this sucks; it will lengthen stems. \override StaffSymbol #'staff-space = #2 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -352,6 +357,7 @@ mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } %% this sucks; it will lengthen stems. \override StaffSymbol #'staff-space = #2 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -376,6 +382,7 @@ mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } \override StaffSymbol #'line-count = #1 \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -412,6 +419,7 @@ down = \drummode { bd4 sn bd toml8 toml } >> @end lilypond + @snippets @c FIXME: MOVE ALL THESE TO LSR! -gp @@ -591,7 +599,6 @@ drumsB = { } @end lilypond - @seealso Fragmentos de código: @rlsr{Percussion}. @@ -638,8 +645,6 @@ en @ref{Paréntesis}. Sin embargo, el modo por defecto Observe, además, que debe añadir acordes (paréntesis en ángulo @code{< >}) alrededor de cada una de las instrucciones @code{\parenthesize}. - @seealso Fragmentos de código: @rlsr{Percussion}. - \ No newline at end of file diff --git a/Documentation/es/notation/pitches.itely b/Documentation/es/notation/pitches.itely index ddf1edc355..0f149b442a 100644 --- a/Documentation/es/notation/pitches.itely +++ b/Documentation/es/notation/pitches.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 57e3ef0a15d9679cf31de90b2584e9803226d367 + Translation of GIT committish: 3c169262c8f580c0f42c09f3a61b9ae9f0d6261c 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" +@c \version "2.16.0" @node Alturas @@ -91,7 +91,6 @@ baja la altura una octava. } @end lilypond - @seealso Glosario musical: @rglos{Pitch names}. @@ -121,7 +120,6 @@ ser difícil encontrar un error aislado, mientras que en el modo relativo un solo fallo hace que el resto de la pieza esté una octava más alta o más baja de lo que debería. - @example \relative @var{altura_inicial} @var{expresión_musical} @end example @@ -154,7 +152,6 @@ modo de octava absoluta, y se recomienda que sea un Do (una octava de @end itemize - Aquí podemos ver el modo relativo en acción: @lilypond[verbatim,quote] @@ -261,6 +258,10 @@ independientemente del número de semitonos de cada uno de ellos. } @end lilypond +Es una consecuencia de las reglas expuestas que la primera nota dentro +de una expresión musical precedida de @code{@w{\relative f}} se +interpreta igual que si estuviera escrita en el modo de altura +absoluta. @seealso Glosario musical: @@ -287,7 +288,6 @@ Referencia de funcionamiento interno: @funindex \relative @funindex relative - @c DEPRECATED Si no se especifica ninguna @code{@var{altura_inicial}} para @code{\relative}, entonces se supone que es@tie{}@code{c'}. Sin @@ -355,8 +355,6 @@ continuación presentamos una serie de DOs cada vez más agudos: ceseh1 ces ceh c cih cis cisih @end lilypond - - @cindex alteración recordatoria @cindex alteración de precaución @cindex alteración con paréntesis @@ -392,13 +390,11 @@ cis1~ cis~ cis @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right] +@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right] {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-extra-naturals-from-being-automatically-added.ly} @seealso @@ -427,12 +423,10 @@ Referencia de funcionamiento interno: @rinternals{AccidentalCautionary}, @rinternals{accidental-interface}. - @cindex alteración de cuartos de tono @cindex cuartos de tono, alteraciones @knownissues - No existen estándares reconocidos ampliamente para denotar los bemoles de tres cuartos, de manera que los símbolos de LilyPond no se ajustan a ningún estándar. @@ -578,7 +572,6 @@ de la práctica común}. Sin embargo, también están contempladas las alturas y los sistemas de afinación alternativos: véase @ref{Notación común para músicas no occidentales}. - @seealso Glosario musical: @rglos{Pitch names}, @@ -603,9 +596,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 @@ -660,7 +653,7 @@ modifica. Las notas posteriores están en relación a la Compare los dos compases siguientes. La primera y tercera comprobaciones de @code{\octaveCheck} fracasan, pero la segunda es -correcto. +correcta. @lilypond[verbatim,quote] \relative c'' { @@ -676,7 +669,6 @@ correcto. } @end lilypond - @seealso Fragmentos de código: @rlsr{Pitches}. @@ -748,10 +740,10 @@ no especificamos ninguna tonalidad, las notas se transportan pero no se imprime la armadura. @code{\transpose} distingue entre notas enarmónicas: tanto -@code{\transpose c cis} como @code{\transpose c des} transportarán un -semitono hacia arriba. La primera versión imprimirá sostenidos y las -notas no se moverán de su lugar en la escala, la segunda imprimirá -bemoles de la nota siguiente. +@code{\transpose c cis} como @code{\transpose c des} transportan un +semitono hacia arriba. La primera versión imprime sostenidos y las +notas no se mueven de su lugar en la escala, en cambio la segunda +imprime bemoles de la nota siguiente. @lilypond[verbatim,quote] music = \relative c' { c d e f } @@ -792,13 +784,10 @@ musicaEnSiBemol = @{ e4 @dots{} @} Para ver más información sobre instrumentos transpositores, consulte @ref{Transposición de los instrumentos}. - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {transposing-pitches-with-minimum-accidentals-smart-transpose.ly} - @seealso Referencia de la notación: @ref{Transposición de los instrumentos}, @@ -821,12 +810,16 @@ Referencia de funcionamiento interno: @funindex relative @knownissues - La conversión relativa no afecta a las secciones @code{\transpose}, @code{\chordmode} ni @code{\relative} dentro de su argumento. Para 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 @@ -835,15 +828,17 @@ otro @code{\relative} dentro de @code{\transpose}. @cindex operación de inversión @funindex \inversion -Una expresión musical se puede invertir con: +Una expresión musical se puede invertir y transportar en una sola +operación con: @example -\inversion @var{nota-origen} @var{nota-destino} @var{expresión_musical} +\inversion @var{nota-pivote} @var{nota-destino} @var{expresión_musical} @end example -La @code{@var{expresión_musical}} se invierte intervalo a intervalo, y -después se transporta de manera que @code{@var{nota-origen}} se asigna -a @code{@var{nota-destino}}. +La @code{@var{expresión_musical}} se invierte intervalo a intervalo +alrededor de @code{@var{nota-pivote}}, y después se transporta de +manera que @code{@var{nota-pivote}} se hace corresponder con +@code{@var{nota-destino}}. @lilypond[verbatim,quote] music = \relative c' { c d e f } @@ -854,6 +849,10 @@ music = \relative c' { c d e f } } @end lilypond +@warning{Los motivos a invertir deberían venir expresados en modo +absoluto o convertirse previamente a la forma absoluta encerrándolos +en un bloque @code{\relative}.} + @seealso Referencia de la notación: @ref{Transformaciones modales}, @@ -1065,7 +1064,6 @@ notas. @unnumberedsubsubsec Clave @translationof Clef - @cindex Sol, clave de @cindex Do, clave de @cindex Fa, clave de @@ -1173,20 +1171,22 @@ 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] +@lilypondfile[verbatim,quote,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}. @@ -1272,16 +1272,13 @@ f fis @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} - @seealso Glosario musical: @rglos{church mode}, @@ -1333,13 +1330,10 @@ a2 b a2 b @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ottava-text.ly} - @seealso Glosario musical: @rglos{octavation}. @@ -1428,7 +1422,7 @@ clarinete en Si bemol. \transposition a c d e f \textLengthOn -s1*0^\markup { Switch to B\flat clarinet } +<>^\markup { Switch to B\flat clarinet } R1 \key bes \major @@ -1436,7 +1430,6 @@ R1 c2 g @end lilypond - @seealso Glosario musical: @rglos{concert pitch}, @@ -1460,7 +1453,7 @@ Fragmentos de código: @cindex predeterminado, estilo de las alteraciones @cindex alteraciones, estilo predeterminado de las -@funindex set-accidental-style +@funindex \accidentalStyle @funindex voice @funindex default @@ -1470,7 +1463,7 @@ qué estilo de alteraciones usar. Esta función se invoca como sigue: @example \new Staff << - #(set-accidental-style 'voice) + \accidentalStyle "voice" @{ @dots{} @} >> @end example @@ -1484,7 +1477,7 @@ usar el mismo estilo en todos los pentagramas del @code{StaffGroup} en curso, use @example -#(set-accidental-style 'voice 'StaffGroup) +\accidentalStyle #'StaffGroup "voice" @end example Están contemplados los siguientes estilos de alteración. Para dar una @@ -1509,11 +1502,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1526,11 +1519,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1545,7 +1538,7 @@ dos pentagramas. << \context Staff = "up" @{ %%% cambie la línea siguiente como desee: - #(set-accidental-style 'default 'Score) + \accidentalStyle #'Score "default" \musicA @} \context Staff = "down" @{ @@ -1555,7 +1548,6 @@ dos pentagramas. @} @end example - @c don't use verbatim in this table. @table @code @item default (predeterminado) @@ -1590,11 +1582,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1607,11 +1599,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1644,7 +1636,6 @@ músico (p.ej., un director, o en una partitura de piano), entonces se deben usar en su lugar los estilos @code{modern} o @code{modern-cautionary}. - @lilypond[quote] musicA = { << @@ -1664,11 +1655,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1681,11 +1672,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicB } >> @@ -1701,9 +1692,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 @@ -1729,11 +1720,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1746,11 +1737,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicB } >> @@ -1791,11 +1782,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1808,11 +1799,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicB } >> @@ -1856,11 +1847,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1873,11 +1864,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicB } >> @@ -1917,11 +1908,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1934,11 +1925,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicB } >> @@ -1981,11 +1972,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1998,7 +1989,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano) + \accidentalStyle "piano" \musicA } \context Staff = "down" { @@ -2019,7 +2010,7 @@ musicB = { @funindex piano-cautionary -Igual que @code{#(set-accidental-style 'piano)} pero con las +Igual que @code{\accidentalStyle "piano"} pero con las alteraciones añadidas compuestas como de precaución. @lilypond[quote] @@ -2041,11 +2032,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2058,7 +2049,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano-cautionary) + \accidentalStyle "piano-cautionary" \musicA } \context Staff = "down" { @@ -2068,7 +2059,6 @@ musicB = { } @end lilypond - @item neo-modern @cindex neo-moderno, estilo de alteraciones @@ -2100,11 +2090,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2117,11 +2107,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicB } >> @@ -2157,11 +2147,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2174,18 +2164,17 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicB } >> } @end lilypond - @item neo-modern-voice @cindex neo-modern-voice, estilo de alteración @@ -2218,11 +2207,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2235,11 +2224,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicB } >> @@ -2275,11 +2264,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2292,11 +2281,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicB } >> @@ -2334,11 +2323,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2351,11 +2340,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicA } \context Staff = "down" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicB } >> @@ -2376,7 +2365,7 @@ automáticamente. Las alteraciones se imprimen como en el estilo las notas sostenidas o bemoles especificadas por la armadura, excepto si la nota se repite inmediatamente. -@lilypond[quote] +@lilypond[quote,staffsize=18] musicA = { << \relative c' { @@ -2395,11 +2384,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2413,19 +2402,18 @@ musicB = { << \context Staff = "up" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicA } \context Staff = "down" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicB } >> } @end lilypond - @item no-reset (no restablecer) @cindex alteraciones no restablecer, estilo de @@ -2455,11 +2443,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2472,11 +2460,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicA } \context Staff = "down" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicB } >> @@ -2514,11 +2502,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2531,11 +2519,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicA } \context Staff = "down" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicB } >> @@ -2557,14 +2545,12 @@ Referencia de funcionamiento interno: @rinternals{AccidentalPlacement}, @rinternals{accidental-suggestion-interface}. - @cindex alteraciones y notas simultáneas @cindex simultáneas, notas y alteraciones @cindex alteraciones en acordes @cindex acordes, alteraciones dentro de @knownissues - Las notas simultáneas no se tienen en cuenta para la determinación automática de las alteraciones accidentales; sólo se consideran las notas anteriores y la armadura de @@ -2573,7 +2559,6 @@ accidentales con with@tie{}@code{!} o@tie{}@code{?} cuando la misma nota, con el mismo nombre, ocurre simultáneamente con distintas alteraciones, como en @samp{}. - La cancelación de precaución de alteraciones se hace mirando el compás previo. Sin embargo, en el bloque @code{\alternative} que sigue a una sección de repetición de primera y segunda vez @@ -2584,7 +2569,7 @@ natural de la casilla de segunda vez no necesita becuadro: @lilypond[quote] { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2601,12 +2586,12 @@ cambie localmente el estilo de alteraciones a @code{forget}: @lilypond[verbatim,quote] forget = #(define-music-function (parser location music) (ly:music?) #{ - #(set-accidental-style 'forget) - $music - #(set-accidental-style 'modern) + \accidentalStyle "forget" + #music + \accidentalStyle "modern" #}) { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2653,19 +2638,16 @@ tonalidad. } @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-ambitus-per-voice.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ambitus-with-multiple-voices.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-ambitus-gap.ly} - @seealso Glosario musical: @rglos{ambitus}. @@ -2683,9 +2665,7 @@ Referencia de funcionamiento interno: @rinternals{AmbitusNoteHead}, @rinternals{ambitus-interface}. - @knownissues - No se efectúa un tratamiento de las posibles colisiones en caso de varias indicaciones de ámbito simultáneas en distintas voces. @@ -2839,19 +2819,15 @@ fuente más grande, véase @ref{Establecer el tamaño del pentagrama}. } @end lilypond - @predefined @code{\easyHeadsOn}, @code{\easyHeadsOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {numbers-as-easy-note-heads.ly} - @seealso Referencia de la notación: @ref{Establecer el tamaño del pentagrama}. @@ -2956,7 +2932,6 @@ a2 b c d \break @end lilypond - @predefined @code{\aikenHeads}, @code{\aikenHeadsMinor}, @@ -2970,16 +2945,13 @@ a2 b c d \break @code{\walkerHeadsMinor}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {applying-note-head-styles-depending-on-the-step-of-the-scale.ly} Para ver todos los estilos de formas de cabeza de nota, consulte @ref{Estilos de cabezas de nota}. - @seealso Fragmentos de código: @rlsr{Pitches}. @@ -3026,13 +2998,11 @@ pero con el ritmo especificado. Estas cabezas de nota se crean así: } @end lilypond - @predefined @code{\improvisationOn}, @code{\improvisationOff}. @endpredefined - @seealso Fragmentos de código: @rlsr{Pitches}. diff --git a/Documentation/es/notation/repeats.itely b/Documentation/es/notation/repeats.itely index fdaf0e0854..c3c1aeeb07 100644 --- a/Documentation/es/notation/repeats.itely +++ b/Documentation/es/notation/repeats.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 85fe0f15000f793435221fab2688ba3fa65a028f + Translation of GIT committish: f3cacac4bafd2bace7dd23033618895cf11ef695 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" +@c \version "2.16.0" @node Repeticiones @section Repeticiones @@ -251,10 +251,30 @@ g1 | La propiedad @code{measureLength} se describe en @ref{Gestión del tiempo}. -@cindex repeticiones con ligaduras -@cindex primera y segunda vez con ligaduras -@cindex ligaduras en las repeticiones -@cindex ligaduras en primera y segunda vez +@funindex \inStaffSegno + +La instrucción @code{\inStaffSegno} se puede utilizar para colocar el +símbolo del segno en colaboración con la instrucción @code{\repeat +volta}. Se pueden establecer símbolos alternativos de línea divisoria +en el contexto de Score mediante la sobreescritura de las propiedades +@code{segnoType}, @code{startRepeatSegnoType}, +@code{endRepeatSegnoType} o @code{doubleRepeatSegnoType} según sea +necesario. + +@lilypond[verbatim,quote,relative=1] +e1 +\repeat volta 2 { + \inStaffSegno + f2 g a b +} +c1_"D.S." \bar "|." +@end lilypond + + +@cindex repeticiones, con ligaduras +@cindex primera y segunda vez, con ligaduras +@cindex ligaduras, en repeticiones +@cindex ligaduras, en primera y segunda vez @funindex \repeatTie Se pueden añadir ligaduras de unión al segundo final: @@ -269,16 +289,21 @@ c1 @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {shortening-volta-brackets.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-volta-brackets-to-additional-staves.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-double-repeat-default-for-volte.ly} +@cindex repeticiones, letras y números de compás +@cindex repeticiones, números de compás de primera y segunda vez + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + @seealso Glosario musical: @rglos{repeat}, @@ -298,9 +323,7 @@ Referencia de funcionamiento interno: @rinternals{VoltaRepeatedMusic}, @rinternals{UnfoldedRepeatedMusic}. - @knownissues - @cindex repetición ambigua @cindex anidada, repetición @cindex repetición anidada @@ -366,7 +389,7 @@ información, consulte @ref{Barras de compás}.} Se puede usar la propiedad @code{repeatCommands} para controlar la disposición de las repeticiones. Su valor es una lista de Scheme de -comandos de repetición. +instrucciones de repetición. @table @code @item start-repeat @@ -382,7 +405,6 @@ c1 En la práctica habitual del grabado no se imprimen signos de repetición al principio de la pieza. - @item @code{end-repeat} Imprimir una barra de compás @code{:|} @@ -396,7 +418,7 @@ c1 @item (volta @var{number}) ... (volta #f) Crear una nueva casilla de repetición con el número que se especifica. El corchete de vez se debe terminar de forma explícita, pues en caso -contrario no se imprimirá. +contrario no se imprime. @lilypond[verbatim,quote,relative=2] f4 g a b @@ -434,7 +456,8 @@ una lista de Scheme. voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } \relative c'' { c1 - \set Score.repeatCommands = #(list(list 'volta voltaAdLib) 'start-repeat) + \set Score.repeatCommands = + #(list(list 'volta voltaAdLib) 'start-repeat) c4 b d e \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat) f1 @@ -445,10 +468,9 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly} - @seealso Referencia de la notación: @ref{Barras de compás}, @@ -468,12 +490,13 @@ Referencia de funcionamiento interno: @translationof Written-out repeats @cindex explícitas, repeticiones -@cindex repetitiva, música @cindex repeticiones explícitas -@cindex repetición desplegada -@cindex desplegar música +@cindex repeticiones desplegadas +@cindex repeticiones alternativas +@cindex primera y segunda vez, repeticiones +@cindex repeticiones con primera y segunda vez @cindex desplegar repetición -@cindex repetición desplegada con finales alternativos +@cindex repeticiones desplegadas con finales alternativos @cindex música desplegada con finales alternativos @cindex alternativos, finales, en repeticiones explícitas @funindex unfold @@ -496,6 +519,20 @@ donde @code{@var{expresión_musical}} es una expresión musical y c1 @end lilypond +En ciertos casos, especialmente dentro de un contexto +@code{\relative}, la función @code{\repeat unfold} no es exactamente +igual que escribir la expresión musical varias veces. P. ej.: + +@example +\repeat unfold 2 @{ a'4 b c @} +@end example + +no equivale a + +@example +a'4 b c | a'4 b c +@end example + Se pueden hacer repeticiones desplegadas con finales alternativos. @lilypond[verbatim,quote,relative=2] @@ -523,8 +560,8 @@ c1 @end lilypond Si existen más finales alternativos que repeticiones, -se aplican los primeros finales alternativos y LilyPond -ignora las alternativas restantes, que no se imprimen. +se aplican solo los primeros finales alternativos. +Las alternativas restantes se ignoran y no se imprimen. @lilypond[verbatim,quote,relative=2] \repeat unfold 2 { c4 d e f } @@ -550,6 +587,9 @@ Es posible también anidar varias funciones c1 @end lilypond +Las construcciones de acorde se pueden repetir mediante el +símbolo de repetición de acordes @code{q}. +Véase @ref{Repetición de acordes}. @warning{Si pone @code{@bs{}relative} dentro de un bloque @code{@bs{}repeat} sin instanciar explícitamente el contexto @@ -557,6 +597,10 @@ c1 @rprogram{Aparece un pentagrama de más}.} @seealso +Referencia de la notación: +@ref{Repetición de acordes}. + +Snippets: Fragmentos de código: @rlsr{Repeats}. @@ -641,13 +685,13 @@ duraciones mezcladas utilizan un símbolo de porcentaje doble. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-counter.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-count-visibility.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {isolated-percent-repeats.ly} @seealso @@ -738,10 +782,9 @@ c: c: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {cross-staff-tremolos.ly} - @seealso Fragmentos de código: @rlsr{Repeats}. diff --git a/Documentation/es/notation/rhythms.itely b/Documentation/es/notation/rhythms.itely index 958153db86..dae2bb3f70 100644 --- a/Documentation/es/notation/rhythms.itely +++ b/Documentation/es/notation/rhythms.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 53390e0570f4544c131e77323cdc4f4ea738bddd + Translation of GIT committish: bc573af397a1b54f35fb1f95b3ee2e5360d4152f 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" +@c \version "2.16.0" @node Duraciones @section Duraciones @@ -59,11 +59,11 @@ Las duraciones se designan mediante números y puntos. Las duraciones se introducen como sus valores recíprocos respecto de la redonda. Por ejemplo, una negra se escribe usando un @code{4} (puesto que es 1/4 de redonda), mientras que una blanca se escribe con un @code{2} (por ser -1/2 de redonda). Para notas mayores de la redonda se deben usar los -comandos @code{\longa} (que es una breve doble) y @code{\breve}. Se -pueden especificar duraciones tan cortas como la garrapatea (con el -número 128). Son posibles valores más cortos, pero sólo como notas -unidas por una barra. +1/2 de redonda). Para notas mayores de la redonda se deben usar las +instrucciones @code{\longa} (que es una breve doble) y +@code{\breve}. Se pueden especificar duraciones tan cortas como la +garrapatea (con el número 128). Son posibles valores más cortos, pero +sólo como notas unidas por una barra. @c Two 64th notes are needed to obtain beams @lilypond[quote,verbatim,relative=2] @@ -141,7 +141,6 @@ líneas del pentagrama, excepto en situaciones de polifonía. Se pueden situar los puntillos manualmente encima o debajo de las líneas de la pauta; véase @ref{Dirección y posición}. - @predefined @code{\autoBeamOn}, @code{\autoBeamOff}, @@ -150,16 +149,13 @@ pauta; véase @ref{Dirección y posición}. @code{\dotsNeutral}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {alternative-breve-note.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-number-of-augmentation-dots-per-note.ly} - @seealso Glosario musical: @rglos{breve}, @@ -185,9 +181,7 @@ Referencia de funcionamiento interno: @rinternals{Dots}, @rinternals{DotColumn}. - @knownissues - @c Deliberately duplicated in Durations and Rests. -gp No existe un límite fundamental para las duraciones de los silencios (tanto para el más largo como para el más corto), pero el numero de @@ -213,11 +207,11 @@ multiplicando todas las duraciones por una fracción: @end example @noindent -La duración de @code{@var{música}} se multiplicará por la -fracción. El denominador de la fracción se imprimirá sobre las notas, -opcionalmente con un corchete. El grupo especial más común es el -tresillo, en el que 3 notas tienen el valor de 2, por tanto las notas -duran 2/3 de su valor escrito +La duración de @code{@var{música}} se multiplica por la fracción. El +denominador de la fracción se imprime sobre las notas, opcionalmente +con un corchete. El grupo especial más común es el tresillo, en el +que 3 notas tienen el valor de 2, por tanto las notas duran 2/3 de su +valor escrito: @lilypond[quote,verbatim,relative=2] a2 \times 2/3 { b4 b b } @@ -249,42 +243,38 @@ mismo instante musical se debe hacer con @code{\tweak}. Para modificar la duración de las notas sin imprimir un corchete de grupo especial, véase @ref{Escalar las duraciones}. - @predefined @code{\tupletUp}, @code{\tupletDown}, @code{\tupletNeutral}. @endpredefined - @snippets - @cindex grupos especiales, formato de @cindex tresillos, formato de @funindex tupletNumberFormatFunction @funindex tupletSpannerDuration -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {entering-several-tuplets-using-only-one--times-command.ly} @cindex grupos de valoración especial, modificación del número @funindex TupletNumber -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-tuplet-number.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {non-default-tuplet-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-tuplet-bracket-visibility.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {permitting-line-breaks-within-beamed-tuplets.ly} - @seealso Glosario musical: @rglos{triplet}, @@ -308,7 +298,6 @@ Referencia de funcionamiento interno: @rinternals{TupletNumber}, @rinternals{TimeScaledMusic}. - @cindex adorno, notas de, dentro de corchetes de grupo especial @knownissues @@ -333,13 +322,16 @@ explica en @rlearning{Las voces contienen música}. @cindex escalar las duraciones @cindex duraciones, escalado de -Es posible alterar la duración de las figuras, silencios o acordes en -un factor @code{N/M} añadiendo @code{*N/M} (o @code{*N} si @code{M} es +La duración de las figuras, silencios o acordes se puede multiplicar +por un factor @code{N/M} añadiendo @code{*N/M} (o @code{*N} si @code{M} es 1) a la duración. Esto no afectará a la apariencia de las notas o silencios que se producen, pero la duración alterada se usará para calcular la posición dentro del compás y para establecer la duración en la salida MIDI. Los factores de multiplicación se pueden combinar -en la forma @code{*L*M/N}. +en la forma @code{*L*M/N}. Los factores son parte de la duración: si +no especificamos una duración para las notas siguientes, la duración +por omisión que se toma de la nota anterior incluirá cualquier factor +de escala que se haya aplicado. En el siguiente ejemplo las tres primeras notas duran exactamente dos partes, pero no se imprime ningún corchete de tresillo. @@ -347,16 +339,16 @@ partes, pero no se imprime ningún corchete de tresillo. @lilypond[quote,relative=2,verbatim] \time 2/4 % Alter durations to triplets -a4*2/3 gis4*2/3 a4*2/3 +a4*2/3 gis a % Normal durations -a4 a4 +a4 a % Double the duration of chord 4*2 % Duration of quarter, appears like sixteenth b16*4 c4 @end lilypond -La duración de las notas espaciadoras también se puede modificar +La duración de los silencios espaciadores también se puede modificar mediante un multiplicador. Esto es útil para saltar muchos compases, como por ejemplo @code{s1*23}. @@ -370,8 +362,8 @@ De la misma forma, se pueden comprimir por una fracción trozos de música más largos, como si cada nota, acorde o silencio tuviera la fracción como multiplicador. Esto dejará intacta la apariencia de la @emph{música}, pero la duración interna de las notas se multiplicará -por la fracción @emph{numerador}/@emph{denominador}. Los espacios que -rodean el punto son necesarios. He aquí un ejemplo que muestra cómo +por la fracción @emph{numerador}/@emph{denominador}. +He aquí un ejemplo que muestra cómo se puede comprimir y expandir la música: @lilypond[quote,relative=2,verbatim] @@ -379,20 +371,18 @@ se puede comprimir y expandir la música: % Normal durations 4 c8 a % Scale music by *2/3 -\scaleDurations #'(2 . 3) { +\scaleDurations 2/3 { 4. c8 a f } % Scale music by *2 -\scaleDurations #'(2 . 1) { +\scaleDurations 2/1 { 4 c8 b } @end lilypond - Una aplicación de esta instrucción se encuentra en la notación polimétrica, véase @ref{Notación polimétrica}. - @seealso Referencia de la notación: @ref{Grupos especiales}, @@ -552,6 +542,22 @@ discontinuidad para las ligaduras de expresión. Para ver más información acerca de los patrones de discontinuidad complejos, consulte los fragmentos de código bajo @ref{Ligaduras de expresión}. +Sobreescriba las propiedades de disposición @var{whiteout} y +@var{layer} para las ligaduras de unión que colisionen con otros +objetos del pentagrama. + +@lilypond[verbatim,quote,ragged-right,relative=2] +\override Tie #'layer = #-2 +\override Staff.TimeSignature #'layer = #-1 +\override Staff.KeySignature #'layer = #-1 +\override Staff.TimeSignature #'whiteout = ##t +\override Staff.KeySignature #'whiteout = ##t +b2 b~ +\time 3/4 +\key a \major +b r4 +@end lilypond + @predefined @code{\tieUp}, @code{\tieDown}, @@ -564,16 +570,13 @@ consulte los fragmentos de código bajo @ref{Ligaduras de expresión}. @code{\tieSolid}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-ties-with-arpeggios.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {engraving-ties-manually.ly} - @seealso Glosario musical: @rglos{tie}, @@ -584,6 +587,7 @@ Referencia de la notación: @ref{División automática de las notas}. Fragmentos de código: +@rlsr{slurs}, @rlsr{Rhythms}. Referencia de funcionamiento interno: @@ -592,7 +596,6 @@ Referencia de funcionamiento interno: @rinternals{TieColumn}, @rinternals{Tie}. - @knownissues Un cambio de pentagrama cuando hay una ligadura activa no producirá una ligadura inclinada. @@ -677,11 +680,9 @@ a4\rest d4\rest @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {rest-styles.ly} - @seealso Glosario musical: @rglos{breve}, @@ -697,9 +698,7 @@ Fragmentos de código: Referencia de funcionamiento interno: @rinternals{Rest}. - @knownissues - @c Deliberately duplicated in Durations and Rests. -gp No existe un límite fundamental respecto de las duraciones de los silencios (tanto para el más corto como para el más largo), pero el @@ -784,7 +783,6 @@ salida, de ninguna clase. \skip 1 \skip1 \skip 1 @end lilypond - @seealso Manual de aprendizaje: @rlearning{Visibilidad y color de los objetos}. @@ -883,7 +881,6 @@ r1 | R1*17 | R1*4 | R2.*2 | @end lilypond - @cindex texto sobre un silencio multicompás @cindex multicompás, silencio, adjuntar texto @cindex inscripción sobre un silencio multicompás @@ -927,7 +924,6 @@ Cuando un silencio multicompás sigue inmediatamente al establecimiento de un compás parcial con @code{\partial}, es posible que no se emitan las advertencias correspondientes de comprobación de compás. - @funindex \textLengthOn @funindex textLengthOn @funindex \textLengthOff @@ -947,26 +943,23 @@ las advertencias correspondientes de comprobación de compás. @code{\expandFullBarRests}. @endpredefined - @snippets - @cindex eclesiásticos, silencios @cindex silencios eclesiásticos @cindex kirchenpausen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-form-of-multi-measure-rests.ly} @cindex multicompás, posicionamiento de los silencios @cindex colocación de los silencios multicompás -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {positioning-multi-measure-rests.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {multi-measure-rest-markup.ly} - @seealso Glosario musical: @rglos{multi-measure rest}. @@ -1100,8 +1093,8 @@ existentes se pueden cambiar, o pueden añadirse valores nuevos: \new Staff { \relative c' { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1116,11 +1109,11 @@ existentes se pueden cambiar, o pueden añadirse valores nuevos: @enumerate @item -@code{@var{timeSignatureFraction}}, una pareja de Scheme que describe +@code{@var{timeSignatureFraction}}, una fracción que describe el tipo de compás. @item -@code{@var{baseMomentFraction}}, una pareja de Scheme que contiene el +@code{@var{baseMomentFraction}}, una fracción que contiene el numerador y denominador de la unidad de medida básica de ese tipo de compás. @@ -1146,8 +1139,8 @@ antes de la llamada a @code{\overrideTimeSignatureSettings}: \relative c' { % This call will fail because the context isn't yet instantiated \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1155,8 +1148,8 @@ antes de la llamada a @code{\overrideTimeSignatureSettings}: \repeat unfold 7 { c8 } | % This call will succeed \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1166,7 +1159,6 @@ antes de la llamada a @code{\overrideTimeSignatureSettings}: } @end lilypond - @cindex compás, propiedades, restaurar los valores predeterminados @cindex restaurar las propiedades predeterminadas del tipo de compás @funindex \revertTimeSignatureSettings @@ -1179,13 +1171,13 @@ compás se pueden restaurar a los valores originales: \relative c' { \repeat unfold 8 { c8 } | \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 \repeat unfold 8 { c8 } | - \revertTimeSignatureSettings #'(4 . 4) + \revertTimeSignatureSettings 4/4 \time 4/4 \repeat unfold 8 { c8 } | } @@ -1203,8 +1195,8 @@ moviendo el @code{Timing_translator} y el \new StaffGroup << \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1212,8 +1204,8 @@ moviendo el @code{Timing_translator} y el } \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(1 3) % beatStructure #'() % beamExceptions \time 4/4 @@ -1240,22 +1232,10 @@ moviendo el @code{Timing_translator} y el @code{\defaultTimeSignature}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{changing-the-time-signature-without-affecting-the-beaming.ly} - -@cindex compuesto, indicaciones de compás -@cindex compás compuesto, indicaciones de - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly} - @seealso Glosario musical: @rglos{time signature} @@ -1334,23 +1314,20 @@ entrada: d4 g e c @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-metronome-and-rehearsal-marks-below-the-staff.ly} @c perhaps also an example of how to move it horizontally? -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-tempo-without-a-metronome-mark.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-metronome-marks-in-markup-mode.ly} Para ver más detalles, consulte @ref{Formatear el texto}. - @seealso Glosario musical: @rglos{metronome}, @@ -1377,56 +1354,61 @@ Referencia de funcionamiento interno:: @cindex parte al alzar @cindex compás parcial @cindex parcial, compás -@cindex compás, cambiar la longitud del +@cindex compás de anacrusa @funindex measurePosition @funindex \partial @funindex partial -Los compases parciales como las anacrusas o partes al alzar se -escriben usando la instrucción @code{\partial}, con la sintaxis +Los compases parciales como las @emph{anacrusas} o partes +@emph{al alzar} se escriben usando la instrucción +@code{\partial}: @example \partial @var{duración} @end example @noindent -donde @code{@var{duración}} es el valor rítmico restante del compás actual -antes de que comience el siguiente. +donde @code{@var{duración}} es la longitud @emph{restante} +del compás parcial @emph{antes} del comienzo del siguiente +compás completo. -@lilypond[quote,verbatim,relative=2] -\partial 4 e4 | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 8 +e8 | a4 c8 b c4 | @end lilypond -El compás parcial puede ser de cualquier duración menor de un compás +La @var{duración} puede ser cualquier valor menor de un compás completo: -@lilypond[quote,verbatim,relative=2] -\partial 8*3 c8 d e | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 4. +r4 e8 | a4 c8 b c4 | @end lilypond -Internamente, @code{\partial @var{duración}} se traduce a +El @code{\partial @var{duración}} se puede también escribir como: @example \set Timing.measurePosition -@var{duración} @end example -Por ejemplo, @code{\partial 8*3} se convierte en: +Así, @code{\partial 8} se convierte en: -@example -\set Timing.measurePosition = #(ly:make-moment -3 8) -@end example +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\set Timing.measurePosition = #(ly:make-moment -1 8) +e8 | a4 c8 b c4 | +@end lilypond La propiedad @code{measurePosition} contiene un número racional que indica qué parte del compás ha transcurrido hasta el momento. Observe que se establece a un número negativo por parte de la instrucción @code{\partial}: es decir, @code{\partial 4} se traduce internamente a -@code{-4}, con el significado de @qq{queda un valor de negra en este +@w{@code{-4}}, con el significado de @qq{queda un valor de negra en este compás}. - @seealso Glosario musical: @rglos{anacrusis}. @@ -1441,32 +1423,53 @@ Referencia de funcionamiento interno: @rinternals{Timing_translator}. @knownissues - -El uso de @code{\partial} está previsto solamente para el comienzo de +La instrucción @code{\partial} debe usarse solamente en el comienzo de una pieza. Si se emplea después del comienzo se obtendrán varias advertencias o efectos desagradables, en este caso utilice en su lugar @code{\set Timing.measurePosition}. +@lilypond[quote,verbatim,relative=1] +\time 6/8 +\partial 8 +e8 | a4 c8 b[ c b] | +\set Timing.measurePosition = #(ly:make-moment -1 4) +r8 e,8 | a4 c8 b[ c b] | +@end lilypond + @node Música sin compasear @unnumberedsubsubsec Música sin compasear @translationof Unmetered music @cindex cadencia -@cindex líneas divisorias, quitar -@cindex numeración de compases, quitar +@cindex cadencia, barras +@cindex cadencia, alteraciones +@cindex cadencia, barras de compás +@cindex cadencia, números de compás @cindex música sin metro +@cindex música sin metro, barras +@cindex música sin metro, alteraciones +@cindex música sin metro, barras de compás +@cindex música sin metro, números de compás +@cindex alteraciones, cadencias +@cindex alteraciones, música sin metro +@cindex barras de compás, música sin metro +@cindex números de compás, cadencias +@cindex números de compás, música sin metro +@cindex barras, cadencias +@cindex barras, música sin metro @funindex \cadenzaOn @funindex cadenzaOn @funindex \cadenzaOff @funindex cadenzaOff -Las líneas divisorias y los números de compás se calculan -automáticamente. Para música sin compasear (por ejemplo cadencias), -esto no es deseable. Para desactivar las barras y los números de -compás automáticos, utilice la instrucción @code{\cadenzaOn}, y para -activarlos de nuevo use @code{\cadenzaOff}. +En la música medida se insertan líneas divisorias +y se calculan los números de compás automáticamente. +En música sin metro (es decir, cadencias), esto no es deseable +y se puede @q{desactivar} usando la instrucción +@code{\cadenzaOn}, para despúes @q{reactivarlo} en el lugar +adecuado usando @code{\cadenzaOff}. @lilypond[verbatim,relative=2,quote] c4 d e d @@ -1477,8 +1480,7 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -La numeración de compases se continúa al final de la cadencia como si -la cadencia no existiera: +La numeración de compases se continúa al final de la cadencia. @lilypond[verbatim,relative=2,quote] % Show all bar numbers @@ -1491,36 +1493,47 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -@cindex barras en las cadencias -@cindex barras en música sin compasear -@cindex cadencia con barras -@cindex música sin compasear con barras +Nunca se inicia un compás nuevo dentro de una cadencia, +incluso aunque se inserten una o más instrucciones @code{\bar} +dentro de ella. Por tanto, se deben añadir manualmente las alteraciones +accidentales de cortesía. Véase @ref{Alteraciones accidentales}. + +@lilypond[verbatim,relative=2,quote] +c4 d e d +\cadenzaOn +cis4 d cis d +\bar "|" +cis4 d cis! d +\cadenzaOff +\bar "|" +@end lilypond -El barrado automático se desactiva mediante @code{\cadenzaOn} y se -activa con @code{\cadenzaOff}. Por tanto, todo el barrado en las -cadencias se debe introducir manualmente (@ref{Barras manuales}). +El barrado automático se desactiva mediante @code{\cadenzaOn}. +Por tanto, todo el barrado en las +cadencias se debe introducir manualmente. +Véase @ref{Barras manuales}. @lilypond[verbatim,relative=2,quote] \repeat unfold 8 { c8 } \cadenzaOn -\repeat unfold 5 { c8 } +cis8 c c c c \bar"|" +c8 c c \cadenzaOff \repeat unfold 8 { c8 } @end lilypond -Observe que estas instrucciones predefinidas afectan a todas las +Estas instrucciones predefinidas afectan a todas las pautas de la partitura, aunque aparezcan en un solo contexto @code{Voice}. Para cambiar esto, traslade el @code{Timing_translator} del contexto @code{Score} al contexto -@code{Staff}, como se muestra en @ref{Notación polimétrica}. +@code{Staff}, véase @ref{Notación polimétrica}. @predefined @code{\cadenzaOn}, @code{\cadenzaOff}. @endpredefined - @seealso Glosario musical: @rglos{cadenza}. @@ -1528,7 +1541,8 @@ Glosario musical: Referencia de la notación: @ref{Visibilidad de los objetos}, @ref{Notación polimétrica}, -@ref{Barras manuales}. +@ref{Barras manuales}, +@ref{Alteraciones accidentales}. Fragmentos de código: @rlsr{Rhythms}. @@ -1538,26 +1552,23 @@ Fragmentos de código: @cindex sin medida, música, saltos de línea en @cindex sin medida, música, saltos de página en @cindex saltos, en música sin medida -@cindex línea, saltos de, en cadencias -@cindex página, saltos de, en cadencias -@cindex línea, saltos de, en música sin medida -@cindex página, saltos de, en música sin medida +@cindex saltos de línea, cadencias +@cindex saltos de página, cadencias +@cindex saltos de línea, música sin medida +@cindex saltos de página, música sin medida @knownissues - -LilyPond inserta saltos de línea y de página solamente en las barras -de compás. A menos que la música sin compasear acabe antes del final -de la línea del pentagrama, tendrá que insertar barras de compás -invisibles +Sólo se insertan saltos de línea y de página automáticamente +en las líneas divisorias, +por lo que es necesario insertar manualmente líneas divisorias +@q{invisibles} en fragmentos largos de música sin medir para permitir +los saltos: @example \bar "" @end example -@noindent -para indicar dónde se pueden producir los saltos. - -Deberíamos crear un contexto de voz explícitamente al empezar una +Se debe crear explícitamente un contexto de voz al empezar una pieza con @code{\cadenzaOn}, pues en caso contrario pueden ocurrir algunos errores extraños. @@ -1592,29 +1603,24 @@ ocurrir algunos errores extraños. @funindex times Está contemplada la notación polimétrica, ya sea explícitamente o -mediante la modificación de la indicación visible del compás y el +mediante la modificación manual de la indicación visible del compás y/o el escalado de la duración de las notas. -@strong{Pentagramas con distintas indicaciones de compás, compases de -igual longitud} +@subsubheading Pentagramas con distintas indicaciones de compás y compases de igual longitud -Se puede crear esta notación estableciendo una indicación de compás -común para cada pentagrama pero sustituyendo el símbolo manualmente -mediante el establecimiento de @code{timeSignatureFraction} a la -fracción deseada y escalando las duraciones impresas en cada -pentagrama a la indicación de compás común; véase @ref{Indicación de -compás}. El escalado se hace con @code{\scaleDurations}, que se usa -de una forma similar a @code{\times}, pero no crea un corchete de -grupo especial, véase @ref{Escalar las duraciones}. +Establezca una indicación de compás común para cada pentagrama, y fije +@code{timeSignatureFraction} a la fracción deseada. Luego use la función +@code{\scaleDurations} para escalar las duraciones de las notas en cada +pauta a la indicación de compás común. @cindex barras en música polimétrica @cindex polimétrico, metro, barras en -En este ejemplo, se usa en paralelo música con compases de 3/4, 9/8 y +En el siguiente ejemplo, se usa en paralelo música con compases de 3/4, 9/8 y 10/8. En el segundo pentagrama, las duraciones mostradas se -multiplican por 2/3, pues 2/3 * 9/8 = 3/4, y en el tercer pentagrama, -las duraciones que se muestran están multiplicadas por 3/5, pues 3/5 * -10/8 = 3/4. Con frecuencia se hace necesario insertar las barras de +multiplican por 2/3 (pues 2/3 * 9/8 = 3/4), y en el tercer pentagrama, +las duraciones que se muestran están multiplicadas por 3/5 (pues 3/5 * +10/8 = 3/4). Con frecuencia habrá que insertar las barras de forma manual, pues el escalado de las duraciones afecta a las reglas de barrado automático. @@ -1623,28 +1629,27 @@ de barrado automático. \new Staff { \time 3/4 c4 c c | - c c c | + c4 c c | } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(9 . 8) - \scaleDurations #'(2 . 3) - \repeat unfold 6 { c8[ c c] } + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 + \repeat unfold 6 { c8[ c c] } } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(10 . 8) - \scaleDurations #'(3 . 5) { + \set Staff.timeSignatureFraction = 10/8 + \scaleDurations 3/5 { \repeat unfold 2 { c8[ c c] } \repeat unfold 2 { c8[ c] } | - c4. c4. \times 2/3 { c8[ c c] } c4 + c4. c \times 2/3 { c8[ c c] } c4 } } >> @end lilypond -@strong{@i{Pentagramas con distintas indicaciones de compás y -longitudes de compás distintas}} +@subsubheading Pentagramas con distintas indicaciones de compás y longitudes de compás distintas Se puede dar a cada pentagrama su propia indicación de compás independiente trasladando los grabadores @code{Timing_translator} y @@ -1688,11 +1693,44 @@ independiente trasladando los grabadores @code{Timing_translator} y >> @end lilypond -@snippets +@funindex \compoundMeter +@cindex compuesto, indicaciones de compás +@cindex compás compuesto, indicación de + +@subsubheading Indicaciones de compás compuesto + +Se crean usando la función @code{\compoundMeter}. La sintaxis es: + +@example +\compoundMeter #'@code{(lista de listas)} +@end example + +La construcción más simple es una lista única, en la que el +@emph{último} número indica el denominador de la indicación de compás +y los anteriores son los numeradores. + +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((2 2 2 8)) + \repeat unfold 6 c8 \repeat unfold 12 c16 +} +@end lilypond -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{compound-time-signatures.ly} +Se pueden construir compases más complejos utilizando listas +adicionales. Asimismo, los ajustes de barrado se ajustarán +dependiendo de los valores. +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((1 4) (3 8)) + \repeat unfold 5 c8 \repeat unfold 10 c16 +} + +\relative c' { + \compoundMeter #'((1 2 3 8) (3 4)) + \repeat unfold 12 c8 +} +@end lilypond @seealso Glosario musical: @@ -1701,6 +1739,8 @@ Glosario musical: @rglos{meter}. Referencia de la notación: +@ref{Barras automáticas}, +@ref{Barras manuales}, @ref{Indicación de compás}, @ref{Escalar las duraciones}. @@ -1713,9 +1753,7 @@ Referencia de funcionamiento interno: @rinternals{Default_bar_line_engraver}, @rinternals{Staff}. - @knownissues - Al usar distintos compases en paralelo, las notas que están en el mismo instante de tiempo se colocan en la misma posición horizontal. Sin embargo, las barras de compás en los distintos pentagramas harán @@ -1762,7 +1800,6 @@ Uno de sus usos es depurar partituras complejas: si los compases no están completos, las ligaduras mostrarán exactamente cuánto le falta a cada compás. - @seealso Glosario musical: @rglos{tie} @@ -1781,9 +1818,7 @@ Referencia de funcionamiento interno: @rinternals{Completion_rest_engraver}, @rinternals{Forbid_line_break_engraver}. - @knownissues - No todas las duraciones (sobre todo las que contienen grupos especiales) se pueden representar exactamente con notas normales y puntillos, pero el grabador @code{Completion_heads_engraver} nunca @@ -1857,19 +1892,15 @@ rasgueado. Esto se puede hacer con el grabador >> @end lilypond - @predefined @code{\improvisationOn}, @code{\improvisationOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {guitar-strum-rhythms.ly} - @seealso Fragmentos de código: @rlsr{Rhythms}. @@ -1931,16 +1962,14 @@ c16 c8 @warning{Si se usan barras para indicar los melismas de las canciones, entonces se debe desactivar el barrado automático con -@code{\autoBeamOff} e indicar las barras manualmente.} - -@warning{La utilización de @code{@bs{}partcombine} con -@code{@bs{}autoBeamOff} puede producir resultados no deseados. Véase -el fragmento de código de abajo para mayor información.} +@code{\autoBeamOff} e indicar las barras manualmente. +La utilización de @code{@bs{}partcombine} con +@code{@bs{}autoBeamOff} puede producir resultados no deseados. Véanse +los fragmentos de código para mayor información.} Se pueden crear patrones de barrado que difieran de los valores automáticos predeterminados; véase @ref{Establecer el comportamiento de las barras automáticas}. - @predefined @code{\autoBeamOff}, @code{\autoBeamOn}. @@ -1953,16 +1982,16 @@ automáticos predeterminados; véase @ref{Establecer el comportamiento de las ba @funindex breakable @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beams-across-line-breaks.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-beam-knee-gap.ly} @cindex barras, \partcombine con \autoBeamOff @cindex voces, \partcombine con \autoBeamOff -@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle] +@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle] {partcombine-and-autobeamoff.ly} @seealso @@ -1985,6 +2014,14 @@ Referencia de funcionamiento interno: @rinternals{beam-interface}, @rinternals{unbreakable-spanner-interface}. +@knownissues +Las propiedades de una barra vienen determinadas al +@emph{comienzo} de su construcción y cualquier cambio adicional en +las propiedades de la barra que se produzca antes de que la barra se ha +completado no tendrá efecto hasta que inicie la @emph{siguiente} +barra nueva. + + @node Establecer el comportamiento de las barras automáticas @unnumberedsubsubsec Establecer el comportamiento de las barras automáticas @translationof Setting automatic beam behavior @@ -2002,13 +2039,36 @@ Referencia de funcionamiento interno: @funindex \set @funindex set +Cuando está habilitado el barrado automático, la colocación de las +barras automñaticas viene determinada por tres propiedades de +contexto: @code{baseMoment}, @code{beatStructure} y +@code{beamExceptions}. Si hay definida una regla de +@code{beamExceptions} para el compás en curso, se usa dicha regla para +determinar la colocación de las barras. Si no está definida ninguna +regla de @code{beamExceptions} para el tipo de compás en curso, la +colocación de las barras está determinada por los ajustes de +@code{baseMoment} y @code{beatStructure}. + +De forma predeterminada, las reglas de @code{beamExceptions} están +definidas para los compases más comunes, y así las reglas de +@code{beamException} se deben desactivar si pretendemos que el barrado +automático esté basado en @code{baseMoment} y @code{beatStructure}. +Las reglas de @code{beamExceptions} se desactivan mediante + +@example +\set Timing.beamExceptions = #'() +@end example + + +@subsubheading @i{Barrado basado en @code{baseMoment} y @code{beatStructure}} + En la mayor parte de los casos, las barras automáticas terminan al final de un pulso. Los puntos finales de las barras vienen determinados por las propiedades de contexto @code{baseMoment} y @code{beatStructure}. @code{beatStructure} es una lista de Scheme que define la longitud de cada pulso dentro del compás en unidades de @code{baseMoment}. De forma predeterminada, @code{baseMoment} es una -unidad más que el numerador del compás. De forma predeterminada +unidad más que el denominador del compás. De forma predeterminada también, cada unidad de longitud @code{baseMoment} es un único pulso. @lilypond[quote,relative=2,verbatim] @@ -2020,6 +2080,26 @@ c16^"(2+3)" c c c c | c16^"(3+2)" c c c c | @end lilypond +Si es está utilizando una indicación de compás común, @emph{se debe} +desactivar @code{beamExceptions} para habilitar el funcionamiento de +@code{beatStructure}. Siempre se puede incluir la instrucción +@code{\set Timing.beamExceptions = #'()} si el barrado está +determinado por @code{beatStructure}. + +@lilypond[quote,relative=2,verbatim] +\time 4/4 +a8^"default" a a a a a a a + +\set Timing.baseMoment = #(ly:make-moment 1 4) +\set Timing.beatStructure = #'(1 1 1 1) +a8^"no change" a a a a a a a + +\set Timing.beamExceptions = #'() +\set Timing.baseMoment = #(ly:make-moment 1 4) +\set Timing.beatStructure = #'(1 1 1 1) +a8^"changed" a a a a a a a +@end lilypond + Los cambios en los ajustes de barrado se pueden limitar a contextos específicos. Si no se incluye ningún ajuste en un contexto de nivel más bajo, se aplican los ajustes del contexto circundante. @@ -2085,6 +2165,8 @@ que el denominador del compás. Todas las excepciones a este valor predeterminado están en @file{scm/time-signature-settings.scm}. +@subsubheading @i{Barrado basado en @code{beamExceptions}} + Las reglas de autobarrado especiales (distintas de terminar una barra sobre un pulso) están definidas en la propiedad @code{beamExceptions}. @@ -2104,7 +2186,7 @@ c16 c c | @code{beamExceptions} es una lista-A con una clave de rule-type y un valor de beaming-rules. -En este momento el único valor disponible de rule-type es @code{#'end} +En este momento el único valor disponible de rule-type es @code{'end} para la terminación de las barras. Beaming-rules es una lista-A de Scheme (o una lista de parejas) que @@ -2172,21 +2254,36 @@ ajuste @code{beatStructure} si no se reinicia @code{beamExceptions}. \repeat unfold 8 {c8} @end lilypond -De un modo similar, las corcheas en compás de 3/4 se unen como un -compás completo, de forma predeterminada. Para unir las corcheas -mediante barras sobre los pulsos en un compás de 3/4, reinicie +De forma similar, las corcheas en compás de 3/4 se unen mediante una +sola barra para todo el compás, de forma predeterminada. Para unir +las corcheas en 3/4 mediante una barra en cada parte, reinicie @code{beamExceptions}. @lilypond[quote,verbatim,relative=2] \time 3/4 -% by default we beam in (3) due to beamExceptions +% by default we beam in (6) due to beamExceptions \repeat unfold 6 {a8} | % This will beam (1 1 1) due to beatLength \set Timing.beamExceptions = #'() \repeat unfold 6 {a8} @end lilypond -@i{@strong{Cómo funciona el barrado automático}} +En la música tipografiada de los períodos clásico y romántico, con +frecuencia las barras comienzan a mitad de un compás en 3/4, pero la +práctica moderna es evitar la falsa impresión de 6/8 (véase Gould, +pág. 153). Se producen situaciones similares en el compás de 3/8. +Este comportamiento viene controlado mediante la propiedad de contexto +@code{beamHalfMeasure}, que tiene efecto solamente sobre indicaciones +de compás que tienen la cifra 3 en el numerador: + +@lilypond[quote,verbatim,relative=2] +\time 3/4 +r4. a8 a a | +\set Timing.beamHalfMeasure = ##f +r4. a8 a a | +@end lilypond + +@subsubheading @i{Cómo funciona el barrado automático} Cuando se habilita el barrado automático, la colocación de las barras de corchea automáticas viene determinada por las propiedades de @@ -2225,27 +2322,30 @@ Las reglas de barrado predefinidas están en el archivo @file{scm/time-signature-settings.scm}. @snippets - @cindex barras, subdivisión -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {subdividing-beams.ly} +@cindex barras, orientación de, secundarias + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{strict-beat-beaming.ly} + @cindex compás, agrupación @cindex pulsos, agrupación @cindex agrupar pulsos @cindex compases, sub-agrupar -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {conducting-signs,-measure-grouping-signs.ly} @cindex barra, finales en la partitura @cindex barra, finales con varias voces -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beam-endings-in-score-context.ly} - @seealso Archivos de inicio: @file{scm/beam-settings.scm}. @@ -2259,15 +2359,14 @@ Referencia de funcionamiento interno: @rinternals{BeamForbidEvent}, @rinternals{beam-interface}. - @knownissues -Si una partitura termina mientras una barra automática no ha terminado -aún todavía está aceptando notas, esta última barra no se imprimirá en -absoluto. Lo mismo sirve para las voces polifónicas, introducidas con +Si una partitura termina mientras una barra de corchea automática no +ha terminado y aún acepta notas, esta última barra no se imprime en +absoluto. Lo mismo sirve para las voces polifónicas introducidas con @code{<< @dots{} \\ @dots{} >>}. Si una voz polifónica termina -mientras una barra automática está aún aceptando notas, no se imprime. -El rodeo para estos problemas es aplicar el barrado -manual a la última barra de la voz o partitura. +mientras una barra de corchea automática aún admite notas, no se +imprime. El rodeo para estos problemas es aplicar el barrado manual a +la última barra de la voz o partitura. De forma predeterminada, el traductor @code{Timing} recibe el nombre del contexto @code{Score} como alias. Esto significa que el @@ -2301,8 +2400,8 @@ automático para una indicación de compás se describe en << \new Staff { \overrideTimeSignatureSettings - #'(3 . 4) % timeSignatureFraction - #'(1 . 8) % baseMomentFraction + 3/4 % timeSignatureFraction + 1/8 % baseMomentFraction #'(1 5) % beatStructure #'() % beamExceptions \time 3/4 @@ -2393,18 +2492,14 @@ f16 g16 a] @end lilypond - @predefined @code{\noBeam}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {flat-flags-and-beam-nibs.ly} - @seealso Referencia de la notación: @ref{Dirección y posición}, @@ -2474,7 +2569,6 @@ mientras que las últimas cuatro fusas están a un tempo constante. El espaciado en la salida impresa representa las duraciones de las notas de una forma sólo aproximada, pero la salida MIDI es exacta. - @predefined @code{\featherDurations}. @endpredefined @@ -2483,9 +2577,7 @@ notas de una forma sólo aproximada, pero la salida MIDI es exacta. Fragmentos de código: @rlsr{Rhythms}. - @knownissues - La instrucción @code{\featherDurations} sólo funciona con fragmentos musicales muy breves, y cuando los números de la fracción son pequeños. @@ -2702,6 +2794,10 @@ c4 c c c \break c1 @end lilypond +Además, existe una instrucción @code{\inStaffSegno} que crea un +símbolo de segno, situado en colaboración con la instrucción +@code{\repeat volta}. + En las partituras con muchos pentagramas, una instrucción @code{\bar} en uno de ellos se aplica automáticamente a todos los demás. Las @@ -2722,12 +2818,10 @@ líneas resultantes se conectan entre los distintos pentagramas de un >> @end lilypond - @cindex predeterminada, línea divisoria, cambiar @cindex línea divisoria predeterminada, cambiar @snippets - @funindex whichBar @funindex defaultBarType @funindex \bar @@ -2744,14 +2838,12 @@ insertadas automáticamente es @code{"|"}. Se puede cambiar en cualquier momento con @samp{\set Timing.defaultBarType = @var{tipo de barra}}. - @seealso Referencia de la notación: @ref{Saltos de línea}, @ref{Repeticiones}, @ref{Agrupar pentagramas}. - Fragmentos de código: @rlsr{Rhythms}. @@ -2810,30 +2902,33 @@ c1 | c | c | c c1 | c | c | c @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-the-bar-number-for-the-first-measure.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-at-regular-intervals.ly} @cindex compás, número de, formato @cindex número de compases, formato de -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-inside-boxes-or-circles.ly} +@cindex compás, número, con letras +@cindex compás, número, con repeticiones + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + @cindex compás, número, alineación -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {aligning-bar-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {removing-bar-numbers-from-a-score.ly} - @seealso Fragmentos de código: @rlsr{Rhythms}. @@ -2842,7 +2937,6 @@ Referencia de funcionamiento interno: @rinternals{BarNumber}, @rinternals{Bar_number_engraver}. - @cindex número de compás, colisión @cindex colisión del número de compás @@ -2935,9 +3029,8 @@ por ejemplo: @end verbatim @noindent -imprimirá una advertencia si el @code{currentBarNumber} (número del -compás actual) no es 123 cuando se procesa. - +imprime una advertencia si el @code{currentBarNumber} (número del +compás actual) no es el 123 en el momento de la compilación. @seealso Fragmentos de código: @@ -3084,21 +3177,23 @@ Consulte @ref{La tipografía Feta} para ver una lista de los símbolos que se pueden imprimir con @code{\musicglyph}. Para ver formas comunes de trucar la colocación de las letras de -ensayo, consulte @ref{Indicaciones de texto}. Para un control más +ensayo, consulte @ref{Formatear el texto}. Para un control más preciso, consulte @code{break-alignable-interface} en la sección -@ref{Alinear los contextos}. +@ref{Alineación de objetos}. +El archivo @file{scm/translation-functions.scm} contiene las +definiciones de @code{format-mark-numbers} y de +@code{format-mark-letters}. Se pueden utilizar como inspiración para +escribir otras funciones de formateo. @seealso Referencia de la notación: @ref{La tipografía Feta}, @ref{Formatear el texto}, -@ref{Alinear los contextos}. +@ref{Alineación de objetos}. -Archivos de inicio: @file{scm/translation-functions.scm} -contiene las definiciones de @code{format-mark-numbers} y de -@code{format-mark-letters}. Se pueden usar como inspiración para -escribir otras funciones de formateo. +Archivos de inicio: +@file{scm/translation-functions.scm}. Fragmentos de código: @rlsr{Rhythms}. @@ -3129,29 +3224,36 @@ Referencia de funcionamiento interno: @cindex acciaccatura @funindex \grace -@funindex grace +@funindex \slashedGrace +@funindex \acciaccatura +@funindex \appoggiatura -Los mordentes y notas de adorno son ornamentos escritos. -Se imprimen en un tipo más pequeño y no ocupan ningún -tiempo lógico en el compás. +Los mordentes y notas de adorno son ornamentos musicales, +impresos en un tipo más pequeño y no ocupan ningún +tiempo lógico adicional en el compás. @lilypond[quote,relative=2,verbatim] -c4 \grace c16 c4 -\grace { c16[ d16] } c2 +c4 \grace b16 a4( +\grace { b16[ c16] } a2) @end lilypond -LilyPond también contempla dos tipos especiales de notas de adorno, la +Hay otros tres tipos posibles de notas de adorno; la @emph{acciaccatura} o mordente de una nota (una nota de adorno sin -medida que se indica mediante una pequeña nota ligada y con el +medida que se indica mediante una nota ligada y con el corchete tachado) y la @emph{appoggiatura}, que toma una fracción fija -de la nota principal, y se denota como una nota pequeña, ligada, sin -tachar. +de la nota principal a la que se adjunta, y que se imprime sin +tachar. Es posible escribir una nota de adorno con la plica +tachada, como la @emph{acciaccatura} pero sin la ligadura, como para +colocarla entre notas que están ligadas entre sí, utilizando la función +@code{\slashedGrace}. @lilypond[quote,relative=2,verbatim] -\grace c8 b4 \acciaccatura d8 c4 \appoggiatura e8 d4 -\acciaccatura { g16[ f] } e4 +\acciaccatura { g16[ f] } e2 +\slashedGrace a,8 g4 +\slashedGrace b16 a4( +\slashedGrace b8 a2) @end lilypond La colocación de notas de adorno se sincroniza entre los distintos @@ -3238,25 +3340,21 @@ adorno se sobreescribe y luego se revierte. } @end lilypond - @cindex plica cruzada - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-grace-note-slashes-with-normal-heads.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-grace-layout-within-music.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {redefining-grace-note-global-defaults.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-grace-notes-with-floating-space.ly} - @seealso Glosario musical: @rglos{grace notes}, @@ -3264,6 +3362,7 @@ Glosario musical: @rglos{appoggiatura}. Referencia de la notación: +@ref{Escalar las duraciones}, @ref{Barras manuales}. Archivos de inicio: @@ -3278,9 +3377,7 @@ Referencia de funcionamiento interno: @rinternals{Grace_engraver}, @rinternals{Grace_spacing_engraver}. - @knownissues - @cindex acciaccatura de varias notas @cindex adorno, sincronización de notas de @@ -3367,7 +3464,7 @@ se convierte en: Otra opción es cambiar explícitamente la duración musical: @example -\acciaccatura @{ \scaleDurations #' (1 . 2) @{ c'8[ d' e' f' g'] @} @} +\acciaccatura @{ \scaleDurations 1/2 @{ c'8[ d' e' f' g'] @} @} @end example Véase @ref{Escalar las duraciones}. @@ -3384,7 +3481,7 @@ Véase @ref{Escalar las duraciones}. En un contexto orquestal, las cadenzas presentan un problema especial: al construir una partitura que tiene una cadenza, todos los demás instrumentos deben saltar tantas notas como la longitud de la cadenza, -pues en caso contrario empezarán demasiado pronto o tarde. +pues en caso contrario empezarán demasiado pronto o demasiado tarde. Una solución a este problema son las funciones @code{mmrest-of-length} y @code{skip-of-length}. Estas funciones de Scheme toman un fragmento @@ -3403,15 +3500,14 @@ MyCadenza = \relative c' { \MyCadenza c'1 } \new Staff { - #(ly:export (mmrest-of-length MyCadenza)) + #(mmrest-of-length MyCadenza) c'1 - #(ly:export (skip-of-length MyCadenza)) + #(skip-of-length MyCadenza) c'1 } >> @end lilypond - @seealso Glosario musical: @rglos{cadenza}. @@ -3497,7 +3593,6 @@ duración de la fracción n/m de una redonda. Por ejemplo, @code{ly:make-moment 1 8} es una duración de una corchea y @code{ly:make-moment 7 16} es la duración de siete semicorcheas. - @seealso Referencia de la notación: @ref{Numeración de compases}, diff --git a/Documentation/es/notation/simultaneous.itely b/Documentation/es/notation/simultaneous.itely index 2477709156..54b109dc15 100644 --- a/Documentation/es/notation/simultaneous.itely +++ b/Documentation/es/notation/simultaneous.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: d0c8e3162e9d2c0c7195ce8d58e3dd63bf57aca4 + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" @c Translation status: post-GDP @@ -15,7 +15,7 @@ @section Notas simultáneas @translationof Simultaneous notes -@lilypondfile[quote]{simultaneous-headword.ly} +@lilypondfile[quote,ragged-right,line-width=16\cm]{simultaneous-headword.ly} La polifonía en música hace referencia a tener más de una voz en una pieza cualquiera de música. En LilyPond la polifonía hace referencia @@ -69,7 +69,8 @@ Las notas dentro del propio acorde también pueden ir seguidas de articulaciones y ornamentos. @lilypond[verbatim,quote,relative=2] -1 c-^ e>2 4 8. 16 +1 c-^ e>2 4 +8. 16 @end lilypond Sin embargo, algunos elementos de notación tales como las @@ -78,7 +79,26 @@ ligaduras de espresión, se deben unir al acorde y no a las notas que integran el mismo, pues en caso contrario no se imprimirán. @lilypond[verbatim,quote,relative=2] -1 \f ( ) \< \! +1 \f ( ) +\< \! +@end lilypond + +@cindex acordes vacíos +@cindex eventos contenedores + +Un acorde funciona como un mero contenedor para las notas que lo +componen y sus articulaciones y otros elementos adjuntos. Como +consecuencia, un acorde sin ninguna nota en su interior no tiene +realmente ninguna duración. Cualqier articulación adjunta se +producirá en el mismo momento musical que la nota o acorde siguiente y +se puede combinar con ellos (para ver posibilidades más complejas de +combinaciones de estos elementos, consulte +@ref{Expresiones simultáneas}): + +@lilypond[verbatim,quote,relative=2] +\grace { g8[( a b] } +<> ) \p \< -. -\markup \italic "sempre staccato" +\repeat unfold 4 { c4 e } c1\f @end lilypond @cindex relativo, acordes en altura @@ -133,10 +153,14 @@ Culsters o racimos; véase @ref{Racimos (clusters)}. @end itemize + @node Repetición de acordes @unnumberedsubsubsec Repetición de acordes @translationof Chord repetition +@cindex acordes, repetición de +@cindex repetición, con @code{q} + Para reducir el tecleo, se puede usar una abreviatura de repetición del acorde anterior. El símbolo de repetición de acordes es @code{q}: @@ -158,7 +182,8 @@ por lo que es posible repetir el acorde más reciente incluso si se han escrito en medio otras notas que no están en un acorde, o silencios. @lilypond[verbatim,quote,relative=2] -1 c4 q2 r8 q8 +1 c'4 q2 r8 q8 | +q2 c, | @end lilypond Sin embargo, el símbolo de repetición de acordes no retiene los @@ -166,11 +191,55 @@ matices dinámicos, las articulaciones ni los ornamentos que contiene o que están adosados al acorde anterior. @lilypond[verbatim,quote,relative=2] -1\sfz c4 q2 r8 q8 +1\sfz c'4 q2 r8 q8 | +q2 c, | +@end lilypond + +Para poder retener algunos de ellos, se puede llamar explícitamente a +la función @code{\chordRepeats} con un argumento adicional que +especifique una lista de @var{tipos de evento} que conservar, a no ser +que los eventos de ese tipo ya estén presentes en el propio acorde +@code{q}. + +@lilypond[verbatim,quote] +\relative c'' { + \chordRepeats #'(articulation-event) + { 1\sfz c'4 q2 r8 q8-. } | + q2 c, | +} +@end lilypond + +Aquí, el uso de @code{\chordRepeats} dentro de una construcción +@code{\relative} produce un resultado inseperado: una vez se han +expandido los eventos de acorde, no pueden distinguirse de aquellos +introducidos como acordes normales, haciendo que @code{\relative} +asigne una octava basada en su contexto actual. + +Dado que las instancias anidadas de @code{\relative} no se afectan +mutuamente, se puede usar otra instrucción @code{\relative} dentro de +@code{\chordRepeats} para establecer las relaciones de octava antes de +expandir los acordes repetidos. En tal caso, todo el contenido de la +instrucción @code{\relative} interior no afecta a la exterior; de aquí +la distinta escritura de octava en la última nota de este ejemplo. + +@c Without \new Voice, implicit voice creation does the dumbest thing. +@lilypond[verbatim,quote] +\new Voice +\relative c'' { + \chordRepeats #'(articulation-event) + \relative c'' + { 1\sfz c'4 q2 r8 q8-. } | + q2 c | +} @end lilypond +Las interacciones con @code{\relative} se producen solamente con las +llamadas explícitas de @code{\chordRepeats}: la expansión implícita al +comienzo del proceso de tipografiado se hace en un momento en que +todas las instancias de @code{\relative} ya se han procesado. + @seealso -Notation Reference: +Referencia de la notación: @ref{Notación de acordes}, @ref{Articulaciones y ornamentos}. @@ -205,7 +274,18 @@ a << { a4 b g } { d4 g c, } >> Esto puede ser de utilidad si las secciones simultáneas tienen idénticas duraciones, pero se producirán errores si se intentan poner -notas de distinta duración sobre la misma plica. +notas de distinta duración sobre la misma plica. Las notas, +articulaciones y cambios de propiedades que están dentro de @emph{un +solo} contexto @samp{Voice} se recolectan y se representan en el orden +musical: + +@lilypond[quote,verbatim,relative=2] +4-. <>-. << c a >> << { c-. } { a s-. } >> +@end lilypond + +Tratar de poner más de una plica o barra de corchea, o distintas +duraciones o propiedades en el mismo momento musical, requiere el uso +de más de una voz. El ejemplo siguiente muestra cómo las expresiones simultáneas pueden generar varios pentagramas de forma implícita: @@ -215,7 +295,33 @@ generar varios pentagramas de forma implícita: << { a4 b g2 } { d4 g2 c,4 } >> @end lilypond -Aquí no hay problema en tener distintas duraciones. +Aquí no hay problema en tener distintas duraciones porque se +interpretan en voces distintas. + +@cindex colisiones, columnas que chocan +@cindex colisiones, ignorar + +@knownissues +Si hay notas de dos o más voces en la misma posición del pentagrama, +con las plicas en la misma dirección, +y no tienen desplazamiento (o tienen especificado el mismo desplazamiento), +aparecerá el mensaje + +@example +advertencia: demasiadas columnas de notas que chocan entre sí. Se ignoran +@end example + +durante la compilación. Este mensaje se puede suprimir mediante + +@example +\override NoteColumn #'ignore-collision = ##t +@end example + +Sin embargo, esto no solamente suprime la advertencia sino que +puede evitar cualquier resolución de colisiones y puede tener +otros efectos no deseados +(consulte también @emph{Problemas conocidos} en +@ref{Resolución de las colisiones}). @node Racimos (clusters) @@ -228,7 +334,6 @@ Aquí no hay problema en tener distintas duraciones. @funindex \makeClusters @funindex makeClusters - Un «cluster» o racimo indica que se deben tocar simultáneamente un conjunto de notas consecutivas. Se escriben aplicando la función @code{\makeClusters} a una secuencia de acordes, p.ej.: @@ -241,7 +346,6 @@ Se pueden mezclar en el mismo pentagrama notas normales y clusters, incluso al mismo tiempo. En tal caso, no se hace ningún intento de evitar automáticamente las colisiones entre clusters y notas normales. - @seealso Glosario musical: @rglos{cluster}. @@ -254,9 +358,7 @@ Referencia de funcionamiento interno: @rinternals{ClusterSpannerBeacon}, @rinternals{Cluster_spanner_engraver}. - @knownissues - Los clusters sólo tienen un buen aspecto cuando abarcan un mínimo de dos acordes. En caso contrario aparecerán excesivamente estrechos. @@ -267,6 +369,7 @@ racimos separados necesitan silencios de separación entre ellos. Los clusters no producen ninguna salida MIDI. + @node Varias voces @subsection Varias voces @translationof Multiple voices @@ -316,7 +419,7 @@ siguiente: @noindent Aquí se crean explícitamente instancias de voces, cada una de las cuales recibe un nombre. Las instrucciones @code{\voiceOne} -... @code{\voiceFour} (voz uno hasta voz cuatro) preparan las voces de +@dots{} @code{\voiceFour} (voz uno hasta voz cuatro) preparan las voces de manera que la primera y segunda voces llevan las plicas hacia arriba, las voces segunda y cuarta llevan las plicas hacia abajo, las cabezas de las notas en las voces tercera y cuarta se desplazan @@ -395,7 +498,7 @@ El primer ejemplo podría haberse tipografiado de la manera siguiente: Esta sintaxis se puede usar siempre que no nos importe que se creen nuevas voces temporales que después serán descartadas. Estas voces creadas implícitamente reciben ajustes equivalentes al efecto de las -instrucciones @code{\voiceOne} ... @code{\voiceFour}, en el orden en +instrucciones @code{\voiceOne} @dots{} @code{\voiceFour}, en el orden en que aparecen en el código. En el siguiente ejemplo, la voz intermedia lleva las plicas hacia @@ -418,7 +521,6 @@ En todas las partituras excepto las más simples, se recomienda crear contextos @code{Voice} explícitos como aparece explicado en @rlearning{Contextos y grabadores} y en @rlearning{Voces explícitas}. - @strong{@i{Orden de las voces}} Al escribir varias voces en el archivo de entrada, @@ -456,6 +558,9 @@ hacia arriba, y las de numeración par reciben plicas hacia abajo: >> @end lilypond +@warning{No se pueden crear letras ni elementos de extensión +(como ligaduras, reguladores, etc.) que se crucen de una voz a otra.} + @strong{@i{Duraciones idénticas}} En el caso especial en que queremos tipografiar fragmentos de música @@ -474,7 +579,6 @@ simultánea, dentro de una voz creada explícitamente: Este método conduce a barrados extraños y advertencias si los fragmentos de música no tienen las mismas duraciones exactas. - @predefined @code{\voiceOne}, @code{\voiceTwo}, @@ -483,7 +587,6 @@ fragmentos de música no tienen las mismas duraciones exactas. @code{\oneVoice}. @endpredefined - @seealso Manual de aprendizaje: @rlearning{Las voces contienen música}, @@ -529,7 +632,6 @@ identificarlas fácilmente: Para recuperar la presentación normal se utiliza la instrucción @code{\voiceNeutralStyle}. - @predefined @code{\voiceOneStyle}, @code{\voiceTwoStyle}, @@ -538,7 +640,6 @@ Para recuperar la presentación normal se utiliza la instrucción @code{\voiceNeutralStyle}. @endpredefined - @seealso Manual de aprendizaje: @rlearning{Oigo voces}, @@ -579,7 +680,6 @@ Fragmentos de código: @funindex \mergeDifferentlyHeadedOff @funindex mergeDifferentlyHeadedOff - Las cabezas de notas que están en diferentes voces y tienen la misma altura, la misma forma de cabeza, y dirección opuesta de la plica, se combinan automáticamente, pero las que tienen cabezas distintas o la @@ -589,7 +689,6 @@ verticalmente. El ejemplo siguiente muestra tres circunstancias distintas, sobre los pulsos 1 y 3 en el primer compás y sobre el pulso 1 del segundo compás, donde la combinación automática falla. - @lilypond[quote,verbatim,relative=2] << { @@ -732,7 +831,6 @@ Sólo se combinan las notas si tienen la plica en direcciones opuestas predeterminada o cuando las plicas se establecen explícitamente en direcciones opuestas). - @predefined @code{\mergeDifferentlyDottedOn}, @code{\mergeDifferentlyDottedOff}, @@ -745,16 +843,13 @@ direcciones opuestas). @code{\shiftOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {additional-voices-to-avoid-collisions.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {forcing-horizontal-shift-of-notes.ly} - @seealso Glosario musical: @rglos{polyphony}. @@ -772,6 +867,19 @@ Referencia de funcionamiento interno: @rinternals{NoteCollision}, @rinternals{RestCollision}. +@cindex colisiones, ignorar + +@knownissues +El uso de @code{\override NoteColumn #'ignore-collision = ##t} hace +que las notas con distinta cabeza en voces diferentes se mezclen +incorrectamente. + +@lilypond[quote,relative=1,verbatim] +\mergeDifferentlyHeadedOn +<< { c16 a' b a } \\ { c,2 } >> +\override NoteColumn #'ignore-collision = ##t +<< { c16 a' b a } \\ { c,2 } >> +@end lilypond @ignore @knownissues @@ -780,6 +888,7 @@ Los requisitos para combinar con éxito cabezas de nota distintas que tienen también distinto puntillo, no están claros. @end ignore + @node Combinación automática de las partes @unnumberedsubsubsec Combinación automática de las partes @translationof Automatic part combining @@ -793,41 +902,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 +946,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 +973,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 | @@ -930,16 +1053,14 @@ instrumentTwo = \relative c' { >> @end lilypond - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {combining-two-parts-on-the-same-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-partcombine-texts.ly} - @seealso Glosario musical: @rglos{a due}, @@ -955,33 +1076,48 @@ Referencia de funcionamiento interno: @rinternals{PartCombineMusic}, @rinternals{Voice}. - @knownissues +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} 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. - -@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 @@ -1096,7 +1232,6 @@ global = { } @end lilypond - @seealso Manual de aprendizaje: @rlearning{Organizar las piezas mediante variables} diff --git a/Documentation/es/notation/spacing.itely b/Documentation/es/notation/spacing.itely index 3f150023c4..9af99736df 100644 --- a/Documentation/es/notation/spacing.itely +++ b/Documentation/es/notation/spacing.itely @@ -1,14 +1,57 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 5e9d7b07e1da12e32ae7be0253b22cb28cf2fe58 + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" + +@ignore +GDP TODO list +This block comment is copied here to ease comparation of +original and its translation. + +Negative numbers are allowed: +> Are you sure? The following works well +> \paper{ +> first-page-number = -2 +> } +> and prints page number -1 on the second page, for example. + + +In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it +states: + +"@code{layout-set-staff-size} does not change the distance between +the +staff lines." + +Could we add a sentence: +"Use instead the pair fontSize = #@var{N} + \override StaffSymbol #'staff-space = #(magstep +@var{N}) +inside the Staff context to change the size of the font and the +distance between +staff lines accordingly." + +Actually I found, that the @internalsref{StaffSymbol} at line 481 +sends to an incomplete +documentation. The property staff-space is not explained here. I +thought Y-extent might be of +help, but it is in turn explained by x-space which again is +missing from the list. Who has the +knowledge to fix this? + + +Clarify +http://code.google.com/p/lilypond/issues/detail?id=68 + +@end ignore + @node Problemas de espaciado @chapter Problemas de espaciado @@ -95,10 +138,10 @@ los encabezamientos, pies y títulos. La función @code{set-paper-size} se estudia en la sección siguiente, @ref{Tamaño del papel y escalado automático}. Las variables de -@code{\paper} variables que se ocupan de la disposición de la página +@code{\paper} 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 @@ -106,8 +149,8 @@ bloque @code{\layout} están relacionadas en @ref{El bloque \layout}. Excepto cuando se especifica lo contrario, todas las variables de @code{\paper} que corresponden a distancias sobre la página se miden -en milímetros, a no ser que se especifiquen unas unidades diferentes -por parte del usuario. Por ejemplo, la declaración siguiente +en milímetros, a no ser que el usuario especifique unas unidades +diferentes. Por ejemplo, la declaración siguiente establece el margen superior @code{top-margin} a diez milímetros: @example @@ -144,7 +187,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: @@ -170,32 +213,27 @@ Archivos instalados: @unnumberedsubsubsec Fijar el tamaño del papel @translationof Setting paper size -Existen dos funciones para cambiar el tamaño del papel: -@code{set-default-paper-size} (establecer tamaño de página -predeterminado) y @code{set-paper-size} (establecer tamaño de página). -@code{set-default-paper-size} se debe poner en el ámbito del nivel -superior, y @code{set-paper-size} se debe poner en un bloque -@code{\paper}: +@q{A4} es el valor predeterminado si no se establece ningún tamaño de +página explícitamente. Sin embargo, existen dos funciones que se +pueden usar para modificarlo: @code{set-default-paper-size}, @example -#(set-default-paper-size "a4") +#(set-default-paper-size "quarto") @end example +que siempre se debe colocar en el ámbito superior, y +@code{set-paper-size}, + @example \paper @{ - #(set-paper-size "a4") + #(set-paper-size "tabloid") @} @end example -@noindent -Dentro del ámbito del nivel jerárquico superior, se puede llamar sin -riesgo a la función @code{set-default-paper-size} desde cualquier -lugar antes del primer bloque @code{\paper} block. Dentro de un -bloque @code{\paper}, el lugar más seguro para llamar a -@code{set-paper-size} es al principio, por encima de la lista de -declaraciones de variables. Se explican las razones de esto en -@ref{Escalado automático al tamaño del papel}. +que se debe colocar siempre dentro de un bloque @code{\paper}. +Si se usa la función @code{set-default-paper-size} en el ámbito +superior jerárquico, debe ir antes de cualquier bloque @code{\paper}. @code{set-default-paper-size} establece el tamaño de todas las páginas, mientras que @code{set-paper-size} establece sólo el tamaño de las páginas a las que se aplica el bloque @code{\paper}. Por @@ -204,35 +242,54 @@ aplica el tamaño de papel a todas las páginas. Si el bloque @code{\paper} está dentro de un bloque @code{\book}, entonces el tamaño del papel sólo se aplica a ese libro. -Se encuentran disponibles los tamaños de papel más comunes, entre -ellos @code{a4}, @code{letter}, @code{legal} y @code{11x17} (conocido -también como tabloide). Están contemplados muchos más tamaños de papel -de forma predeterminada. Para ver más detalles, consulte -@file{scm/paper.scm} y busque la definición de @code{paper-alist}. +Cuando se usa la función @code{set-paper-size}, se debe colocar +@emph{antes} de cualquier otra función que se utilice dentro del mismo +bloque @code{\paper}. Véase @ref{Escalado automático al tamaño del +papel}. -@c TODO add a new appendix for paper sizes (auto-generated) -pm +Los tamaños de página están definidos en el archivo +@file{scm/paper.scm}, y aunque es posible añadir tamaños +personalizados, se sobreescribirán en las actualizaciones del software +posteriores. La lista de todos los tamaños de papel disponibles +está en @ref{Tamaños de página predefinidos}. -@warning{El tamaño predeterminado del papel es @code{a4}.} +@c An appendix entry exists for paper sizes but is not auto-generated -Se pueden añadir tamaños adicionales editando la definición de -@code{paper-alist} en el archivo de inicio @file{scm/paper.scm}, -aunque se sobreescribirán en la siguiente reinstalación del programa. +Se puede usar la siguiente instrucción en el archivo para añadir un +tamaño de página personalizado que se puede usar después con +@code{set-default-paper-size} o con @code{set-paper-size} según +convenga, -@cindex orientación -@cindex apaisado -@cindex horizontal, papel +@example +#(set! paper-alist (cons '("mi tamaño" . (cons (* 15 in) (* 3 in))) paper-alist)) -Si se añade el símbolo @code{'landscape} (apaisado) como argumento a -@code{set-default-paper-size}, las páginas se giran 90 grados y se -establece en consonancia una mayor longitud de las líneas. +\paper @{ + #(set-paper-size "mi tamaño") +@} +@end example + +Se puede usar cualquiera de las unidades @code{in} (pulgadas), +@code{cm} (centímetros) o @code{mm} (milímetros). + +@cindex papel, tamaño, orientación +@cindex página, orientación de la +@cindex papel, tamaño, apaisado + +Si se añade el símbolo @code{'landscape} a la función del tamaño de la +página, el papel se gira 90 grados y se establece adecuadamente la +anchura de las líneas. @example #(set-default-paper-size "a6" 'landscape) @end example +La salida de música @emph{no} se gira, solo las dimensiones de la +página lo hacen. + @seealso Referencia de la notación: -@ref{Escalado automático al tamaño del papel}. +@ref{Escalado automático al tamaño del papel}, +@ref{Tamaños de página predefinidos}. Archivos instalados: @file{scm/paper.scm}. @@ -330,7 +387,7 @@ tres sistemas por página, como por ejemplo las partituras orquestales. Si se establece al valor falso, los sistemas se reparten verticalmente hasta abajo de la última página. Las piezas que llenan sobradamente -dos o más páginas deben tener este valor fijado a verdadero. También +dos o más páginas deben tener este valor fijado a falso. También afecta a la última página de las partes de libro, es decir, partes de un libro creadas con bloques @code{\bookpart}. @@ -347,12 +404,15 @@ Fragmentos de código: @rlsr{Spacing}. @knownissues - Los títulos (extraídos del bloque @code{\header}) se tratan como sistemas, así pues @code{ragged-bottom} y @code{ragged-last-bottom} aumentan la separación entre los títulos y el primer sistema de la partitura. +Los tamaños de papel definidos explícitamente +sobreescriben cualquier ajuste de los márgenes +superior o inferior definidos por el usuario. + @node Variables de espaciado de \paper verticales flexibles @subsection Variables de espaciado de @code{\paper} verticales flexibles @@ -457,6 +517,11 @@ para eliminar las colisiones. @end itemize +Para partituras de varias páginas con la parte inferior +no justificada en la última página, ésta usará el mismo +espaciado que la página anterior +siempre y cuando haya espacio suficiente para ello. + Los métodos específicos para la modificación de las listas-A se estudian en @ref{Modificación de las listas-A}. El siguiente ejemplo muestra las dos formas en que pueden modificarse estas listas-A. La @@ -683,6 +748,11 @@ Referencia de la notación: Archivos de inicio: @file{ly/paper-defaults-init.ly}. +@knownissues +Los tamaños de papel definidos explícitamente +sobreescriben cualquier ajuste de los márgenes +izquierdo o derecho definidos por el usuario. + @node Variables de \paper para el modo de doble cara @unnumberedsubsubsec Variables de @code{\paper} para el modo de doble cara @@ -729,7 +799,6 @@ modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. Solamente funciona con @code{two-sided} fijado al valor verdadero. - @end table @seealso @@ -903,7 +972,8 @@ Referencia de la notación: @ref{Saltos de página}, @ref{Saltos de página óptimos}, @ref{Paso de página óptimo}, -@ref{Saltos de página mínimos}. +@ref{Saltos de página mínimos}, +@ref{Saltos de página de una línea}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. @@ -959,6 +1029,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 @@ -971,7 +1042,7 @@ de manera que la página 1 esté en el lado derecho. Importancia relativa del espacio (vertical) de las páginas y el espaciado (horizontal) de las líneas. Los valores altos hacen que el espaciado de la página tenga más importancia. Predeterminado: -@code{#10}. +@code{10}. @item print-all-headers @funindex print-all-headers @@ -1008,7 +1079,6 @@ adecuado, por ejemplo: @end table - @seealso Archivos de inicio: @file{ly/titling-init.ly}. @@ -1016,9 +1086,7 @@ Archivos de inicio: Fragmentos de código: @rlsr{Spacing}. - @knownissues - El encabezamiento de página predeterminado pone el número de página y el campo @code{instrument} del bloque @code{\header} sobre la misma línea. @@ -1100,6 +1168,105 @@ He aquí un ejemplo de un bloque @code{\layout}: @} @end example +Se pueden escribir varios bloques @code{\layout} como expresiones del +nivel superior. Esto puede ser útil, por ejemplo, si hay distintos +ajustes almacenados en diversos archivos y se incluyen opcionalmente. +Internamente, cuando se evalúa un bloque @code{\layout}, se hace una +copia de la configuración de @code{\layout} actual, y después se +aplican los cambios definidos en el bloque; el resultado se guarda +como la nueva configuración actual. Desde el punto de vista del +usuario, los bloques @code{\layout} se combinan, pero en situaciones +de conflicto (cuando se cambia la misma propiedad en diferentes +bloques) las definiciones más tarías toman precedencia. + +Por ejemplo: si este bloque: + +@example +\layout @{ + \context @{ + \Voice + \override TextScript #'color = #magenta + \override Glissando #'thickness = #1.5 + @} +@} +@end example + +se coloca después del del ejemplo anterior, las sobreescrituras de +@code{'padding} y de @code{'color} para @code{TextScript} se combinan, +pero la última sobreescritura @code{'thickness} para @code{Glissando} +sustituye (u oculta) a la anterior. + +Los bloques @code{\layout} se pueden asignar a variables para una +reutilización posterior, pero la forma en que esto funciona es ligera +y significativamente diferente del hecho de escribirlas literalmente. + +Si se define una variable de la siguiente manera: + +@example +variable_de_Layout = \layout @{ + \context @{ + \Voice + \override NoteHead #'font-size = #4 + @} +@} +@end example + +guardará la configuración actual de @code{\layout} con la +sobreescritura añadida de @code{NoteHead #'font-size}, pero esta +combinación @emph{no} se guarda como la nueva configuración actual. +Tenga en cuenta que la @q{configuración actual} se lee cuando la +variable se define y no cuando se usa, de manera que el contenido de +la variable depende de su posición dentro del código fuente. + +La variable se puede entonces usar dentro de otro bloque +@code{\layout}, por ejemplo: + +@example +\layout @{ + \variable_de_layout + \context @{ + \Voice + \override NoteHead #'color = #red + @} +@} +@end example + +Un bloque @code{\layout} que contiene una variable, como en el ejemplo +anterior, @emph{no} copia la configuración actual, sino que en lugar +de ello usa el contenido de @code{\variable_de_layout} como la +configuración base para las adiciones posteriores. Esto significa que +cualquier cambio definido entre la definición y el uso de la variable, +se pierde. + +Si la @code{variable_de_layout} se define (o se incluye con +@code{\include}) inmediatamente antes de que se utilice, su contenido +es sencillamente la configuración en curso más las sobreescrituras que +se hayan definido dentro de él. Así pues, en el ejemplo anterior que +muestra el uso de @code{\variable_de_layout} el último bloque +@code{\layout} consistiría en: + +@example + TextScript #'padding = #1 + TextScript #'color = #magenta + Glissando #'thickness = #1.5 + NoteHead #' font-size = #4 + NoteHead #' color = #red +@end example + +más las sobreescrituras de @code{indent} y de @code{StaffGrouper}. + +Pero si la variable ya hubiera sido definida antes del primer bloque +@code{\layout} la configuración actual contendría ahora solamente + +@example + NoteHead #' font-size= #4 % (escrita en la definición de la variable) + NoteHead #' color = #red % (añadida después del uso de la variable) +@end example + +Si se planifica cuidadosamente, las variables de @code{\layout} pueden +ser una herramienta valiosa para estructurar el diseño de la +disposición de las fuentes, y tambiién para reiniciar la configuración +de @code{\layout} a un estado conocido. @seealso Referencia de la notación: @@ -1208,7 +1375,6 @@ de contexto @code{fontSize} y la propiedad de disposición afinar el tamaño de los pentagramas individuales. Los tamaños de pentagrama individuales están en relación al tamaño global. - @seealso Referencia de la notación: @ref{Seleccionar el tamaño de la tipografía para la notación}. @@ -1216,9 +1382,7 @@ Referencia de la notación: Fragmentos de código: @rlsr{Spacing}. - @knownissues - @code{layout-set-staff-size} no cambia la distancia entre las líneas del pentagrama. @@ -1233,6 +1397,7 @@ del pentagrama. * Saltos de página óptimos:: * Paso de página óptimo:: * Saltos de página mínimos:: +* Saltos de página de una línea:: * Saltos de línea explícitos:: * Utilizar una voz adicional para los saltos de línea:: @end menu @@ -1328,8 +1493,6 @@ afecta sólo a la última línea de la pieza. @} @end example - - @cindex saltos de línea normales @cindex música de cuatro compases por línea @@ -1356,7 +1519,6 @@ se estiren para que encajen en las páginas durante una segunda ejecución del proceso de formateo. Esta posibilidad es bastante novedosa y difícil. Hay más detalles disponibles en @rlsr{Spacing}. - @predefined @funindex \break @code{\break}, @@ -1364,7 +1526,6 @@ novedosa y difícil. Hay más detalles disponibles en @rlsr{Spacing}. @code{\noBreak}. @endpredefined - @seealso Referencia de la notación: @ref{Variables de \paper para los saltos de línea}. @@ -1395,7 +1556,7 @@ elementos de marcado situados en el nivel superior. Hay ajustes análogos a @code{ragged-right} y @code{ragged-last} que tienen el mismo efecto sobre el espaciado vertical: @code{ragged-bottom} y @code{ragged-last-bottom}. Si están -establecidos a @code{##t} los sistemas de todas las páginas o sólo de +establecidos a @code{#t} los sistemas de todas las páginas o sólo de la última página, respectivamente, no se verán justificados verticalmente. Véase @ref{Variables de espaciado de \paper verticales fijas}. @@ -1448,7 +1609,6 @@ partes del libro. @} @end example - @predefined @funindex \pageBreak @code{\pageBreak}, @@ -1456,7 +1616,6 @@ partes del libro. @code{\noPageBreak}. @endpredefined - @seealso Referencia de la notación: @ref{Variables de \paper para los saltos de página}. @@ -1478,7 +1637,6 @@ distensión, tanto horizontal como verticalmente. A diferencia de @code{ly:page-turn-breaking}, no tiene un concepto de los pasos de página. - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -1526,7 +1684,7 @@ El grabador @code{Page_turn_engraver} lee la propiedad de contexto @code{minimumPageTurnLength} para determinar qué longitud debe tener una sección sin notas antes de que se considere la posibilidad de un paso de página. El valor predeterminado para -@code{minimumPageTurnLength} es @code{#(ly:make-moment 1 1)}. Si +@code{minimumPageTurnLength} es @code{(ly:make-moment 1 1)}. Si quiere inhabilitar las vueltas de página, puede establecerlo a algún valor muy grande. @@ -1560,7 +1718,6 @@ Las instrucciones de paso de página, @code{\pageTurn}, el nivel más elevado del código, entre las partituras y los elementos de marcado del nivel superior. - @predefined @funindex \pageTurn @code{\pageTurn}, @@ -1570,14 +1727,11 @@ de marcado del nivel superior. @code{\allowPageTurn}. @endpredefined - @seealso Fragmentos de código: @rlsr{Spacing}. - @knownissues - Sólo debería haber un grabador @code{Page_turn_engraver} dentro de una partitura. Si hay más de uno, se interferirán entre sí. @@ -1601,11 +1755,26 @@ de memoria, o con una gran cantidad de textos. Se habilita utilizando: @} @end example - @seealso Fragmentos de código: @rlsr{Spacing}. +@node Saltos de página de una línea +@subsection Saltos de página de una línea +@translationof One-line page breaking + +@funindex ly:one-line-breaking + +La función @code{ly:one-line-breaking} es un algoritmo de saltos de +página para uso especial que pone cada partitura en una página y en +una sola línea. Esta función de salto de página no compone los +títulos ni los márgenes; solamente se imprime la partitura. + +El ancho de la página se ajusta de forma que la partitura más larga +quepa en una línea. Concretamente, las variables @code{paper-width}, +@code{line-width} y @code{indent} del bloque @code{\paper} se ignoran, +aunque @code{left-margin} y @code{right-margin} aún se respetan. La +altura de la página se deja sin cambios. @node Saltos de línea explícitos @subsection Saltos de línea explícitos @@ -1656,7 +1825,6 @@ music = \relative c'' { c8 c c c } } @end lilypond - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -1748,7 +1916,6 @@ music = \relative c'' { c4 c c c } } @end lilypond - @seealso Referencia de la notación: @ref{Espaciado vertical}. @@ -1822,6 +1989,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 @@ -1858,7 +2026,7 @@ elementos que se van a espaciar. Observe que @code{@var{elemento2}} no está necesariamente por debajo de @code{@var{elemento1}}; por ejemplo, @code{nonstaff-relatedstaff-spacing} mide hacia arriba a partir de la línea del tipo no-pauta si @code{staff-affinity} es -@code{#UP}. +@code{UP}. Cada distancia se mide entre los @emph{puntos de referencia} de los dos elementos. El @emph{punto de referencia} para un pentagrama y @@ -1898,7 +2066,7 @@ labelContext = #(define-music-function (parser location context) (string?) - #{ s1*0^\markup { \typewriter $context } #}) + #{ s1*0^\markup { \typewriter #context } #}) \layout { \context { \Dynamics \alignToZero } @@ -2014,7 +2182,6 @@ los tipos específicos de líneas que no son pautas están relacionadas en las descripciones de contexto correspondientes en @rinternals{Contexts}. - @subsubheading Propiedades del grob @code{VerticalAxisGroup} Las propiedades de @code{VerticalAxisGroup} se suelen ajustar con una @@ -2096,7 +2263,6 @@ una cantidad de relleno mínima entre una línea de @code{Lyrics} y la pauta a la que no pertenece. @end table - @subsubheading Propiedades del grob @code{StaffGrouper} Las propiedades de @code{StaffGrouper} se suelen ajustar con una @@ -2127,14 +2293,15 @@ Referencia de la notación: @ref{Variables de espaciado de \paper verticales flexibles}, @ref{Modificación de las listas-A}. +Archivos de inicio: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm}. + Referencia de funcionamiento interno: @rinternals{Contexts}, @rinternals{VerticalAxisGroup}, @rinternals{StaffGrouper}. -Archivos de inicio: -@file{ly/engraver-init.ly}, -@file{scm/define-grobs.scm}. @node Espaciado de pautas no agrupadas @@ -2284,7 +2451,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 @@ -2342,7 +2511,6 @@ la línea de letra es capaz de ampliarse mucho más de lo que es usual: >> @end lilypond - @seealso Archivos de inicio: @file{ly/engraver-init.ly}, @@ -2598,7 +2766,6 @@ pentagramas o sistemas unos encima de otros. Esto se evitaría pasando a los diferentes ajustes unos valores razonables. @end itemize - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -2655,7 +2822,7 @@ El relleno vertical entre un objeto fuera del pentagrama y los grobs posicionados previamente se puede controlar con @code{outside-staff-padding}. -@lilypond[quote,ragged-right,relative=2,verbatim] +@lilypond[quote,ragged-right,relative=2,verbatim,staffsize=18] \once \override TextScript #'outside-staff-padding = #0 a'^"This text is placed very close to the note" \once \override TextScript #'outside-staff-padding = #3 @@ -2686,7 +2853,6 @@ c4 c''2 @end lilypond - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -2753,7 +2919,7 @@ manera: en cada compás se determina la duración más breve. La menor duración más común se toma como base para el espaciado, habiendo estipulado que esta duración menor siempre debe ser igual o menor que una corchea. La duración más breve se imprime cuando se ejecuta -@code{lilypond} con la opción @code{--verbose}. +@code{lilypond} con la opción @option{--verbose}. Estas duraciones también se pueden personalizar. Si establecemos la @code{common-shortest-duration} en @rinternals{SpacingSpanner}, @@ -2775,7 +2941,6 @@ semicorcheas al ejemplo anterior, irían seguidas por medio ACB: c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4 @end lilypond - En el @emph{Ensayo sobre grabado musical automatizado}, se explicó que las direcciones de las plicas influyen en el espaciado @@ -2802,8 +2967,10 @@ con los valores predeterminados y otra con correcciones exageradas: Está contemplada la notación proporcional; consulte @ref{Notación proporcional}. - @seealso +Ensayo sobre grabado musical automatizado: +@ressay{Espaciado óptico}. + Fragmentos de código: @rlsr{Spacing}. @@ -2813,12 +2980,7 @@ Referencia de funcionamiento interno: @rinternals{StaffSpacing}, @rinternals{NonMusicalPaperColumn}. -Ensayo sobre grabado musical automatizado: -@ressay{Espaciado óptico}. - - @knownissues - No existe ningún mecanismo conveniente para sobreescribir el espaciado manualmente. Se puede usar el siguiente rodeo para insertar espacio adicional en una partitura, ajustando el valor del relleno en la @@ -2855,7 +3017,6 @@ La instrucción @code{\newSpacingSection} crea un nuevo objeto @code{SpacingSpanner}, y de ahí que se puedan usar nuevas instrucciones de sobreescritura @code{\override} en dicho punto. - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -2904,9 +3065,7 @@ que @code{ly:make-moment} construye una duración, por lo que @code{1 } @end lilypond - @snippets - De forma predeterminada, el espaciado en los grupos de valoración especial depende de varios factores ajenos a la duración (como alteraciones, cambios de clave, etc.). Para pasar por alto estos @@ -2947,7 +3106,6 @@ sin tener en cuenta las claves, líneas divisorias ni notas de adorno: \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } @end lilypond - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -2983,7 +3141,6 @@ comprobar qué tan apretado es el espaciado natural. El valor normal predeterminado es falso, pero si la partitura tiene un solo sistema, el valor predeterminado es verdadero. - @cindex diseño de página @cindex página, disposición de la @cindex vertical, espaciado @@ -3006,7 +3163,6 @@ ocupa su longitud horizontal natural. @} @end example - @seealso Fragmentos de código: @rlsr{Spacing}. @@ -3111,11 +3267,11 @@ argumento, que es la duración de referencia contra el que se aplica el espaciado de toda la música. La función Scheme de LilyPond @code{make-moment} acepta dos argumentos: un numerador y un denominador que, juntos, expresan una cierta fracción de redonda. La -llamada @code{#(ly:make-moment 1 20)}, por tanto, produce una duración +llamada @code{(ly:make-moment 1 20)}, por tanto, produce una duración de referencia de una nota de un veinteavo de redonda (semicorcheas de cinquillo). Son también posibles valores como -@code{#(ly:make-moment 1 16)}, -@code{#(ly:make-moment 1 8)} y @code{#(ly:make-moment 3 97)}. +@code{(ly:make-moment 1 16)}, +@code{(ly:make-moment 1 8)} y @code{(ly:make-moment 3 97)}. ¿Cómo seleccionamos la duración correcta de referencia para pasarla a @code{proportionalNotationDuration}? Normalmente mediante un proceso @@ -3246,7 +3402,6 @@ soluciona. } @end lilypond - Pero si observamos con mucho cuidado podremos ver que las notas de la segunda mitad del 9-illo están espaciadas de forma ligeramente más ancha que las de la primera mitad del 9-illo. Para asegurar una @@ -3325,7 +3480,6 @@ siguiente muestra que hay una pequeña cantidad de espacio } @end lilypond - Esta cantidad de espacio preliminar es la misma ya sea después de una indicación de compás, una armadura o una clave. El grabador @code{Separating_line_group_engraver} es responsable de este espacio. @@ -3415,7 +3569,6 @@ puntos de comienzo como de final, y permiten que los elementos de extensión se dividan entre los sistemas y las páginas. Consulte las partes respectivas del manual para ver estos ajustes relacionados. - @seealso Referencia de la notación: @ref{Área de espaciado nueva}. @@ -3429,9 +3582,9 @@ Fragmentos de código: @translationof Fitting music onto fewer pages En ocasiones, podemos terminar con uno o dos pentagramas en una -segunda página (o tercera, o cuarta...). Es fastidioso, especialmente -cuando vemos que las páginas anteriores parecen tener espacio de -sobra. +segunda página (o tercera, o cuarta@dots{}). Es fastidioso, +especialmente cuando vemos que las páginas anteriores parecen tener +espacio de sobra. Al investigar los problemas de disposición, una herramienta de valor incalculable es @code{annotate-spacing}. Esta instrucción imprime los @@ -3464,7 +3617,6 @@ página, establezca @code{annotate-spacing} en el bloque @code{\paper}: } @end lilypond - @noindent Todas las dimensiones de disposición se muestran en espacios de pentagrama, independientemente de las unidades especificadas en los @@ -3493,7 +3645,6 @@ En este caso, un @code{staff-space} equivale aproximadamente a intervalos, donde @var{a} es el límite inferior y @var{b} es el límite superior del intervalo. - @seealso Referencia de la notación: @ref{Establecer el tamaño del pentagrama}. @@ -3546,6 +3697,16 @@ disposición con 10 sistemas. @} @end example +@item +Forzar el número de páginas. Por ejemplo, la asignación +siguiente fuerza una disposición con dos páginas. + +@example +\paper @{ + page-count = #2 +@} +@end example + @item Evitar (o reducir en número) los objetos que aumentan el tamaño vertical de un sistema. Por ejemplo, las repeticiones de primera y @@ -3611,7 +3772,6 @@ completa. @end itemize - @seealso Referencia de la notación: @ref{Disposición de la página}, diff --git a/Documentation/es/notation/specialist.itely b/Documentation/es/notation/specialist.itely index 3d6c6be0ee..64165cbc05 100644 --- a/Documentation/es/notation/specialist.itely +++ b/Documentation/es/notation/specialist.itely @@ -1,13 +1,13 @@ @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' Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Notación especializada @chapter Notación especializada diff --git a/Documentation/es/notation/staff.itely b/Documentation/es/notation/staff.itely index 72b5518bc0..5a834b9e34 100644 --- a/Documentation/es/notation/staff.itely +++ b/Documentation/es/notation/staff.itely @@ -1,19 +1,21 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 502106f74b602ee5c9aeb9787338350df1c863f0 + Translation of GIT committish: bc918b0b39c7e432a6be7ecb4c5b9b2b0ed9dabc 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" +@c \version "2.16.0" @node Notación de los pentagramas @section Notación de los pentagramas @translationof Staff notation -@lilypondfile[quote]{staff-headword.ly} +@c The line width is a bit of a hack to allow space for the +@c instrument names. +@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly} Esta sección explica cómo influir sobre la apariencia de los pentagramas, cómo imprimir partituras con más de un pentagrama y cómo @@ -119,7 +121,6 @@ moderna de canto gregoriano. No muestra líneas divisorias. Se pueden definir contextos nuevos de pentagrama único. Para ver más detalles, consulte @ref{Definir contextos nuevos}. - @seealso Glosario musical: @rglos{staff}, @@ -240,11 +241,10 @@ Se pueden definir contextos nuevos de grupo de pentagramas. Para ver más detalles, consulte @ref{Definir contextos nuevos}. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @cindex diseño «mensurstriche» @@ -253,7 +253,7 @@ más detalles, consulte @ref{Definir contextos nuevos}. @cindex transcripción de música mensural @cindex mensural, música, transcripción de -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} @seealso @@ -319,11 +319,9 @@ Se pueden definir nuevos contextos de grupos de pentagramas anidados. Para ver más detalles, consulte @ref{Definir contextos nuevos}. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso Referencia de la notación: @ref{Agrupar pentagramas}, @@ -341,13 +339,14 @@ Referencia de funcionamiento interno: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. + @node Separación de sistemas @unnumberedsubsubsec Separación de sistemas @translationof Separating systems @cindex separación de sistemas, marca de -Si el número de sistemas por p´agina varía de una página a otra, es +Si el número de sistemas por página varía de una página a otra, es costumbre separar los sistemas colocando una marca separadora entre ellos. De forma predeterminada, el separador de sistemas es nulo, pero se puede activar con una opción de @code{\paper}. @@ -391,6 +390,7 @@ Referencia de la notación: Fragmentos de código: @rlsr{Notación de los pentagramas}. + @node Modificación de pentagramas sueltos @subsection Modificación de pentagramas sueltos @translationof Modifying single staves @@ -411,126 +411,151 @@ pentagramas, y establecer secciones de ossia. @unnumberedsubsubsec El símbolo del pentagrama @translationof Staff symbol -@cindex ajuste del símbolo del pentagrama -@cindex dibujo del símbolo del pentagrama -@cindex pentagrama, ajuste del símbolo del -@cindex símbolo del pentagrama, dibujo del -@cindex detener líneas de pentagrama -@cindex iniciar líneas de pentagrama -@cindex pentagrama, número de líneas -@cindex pentagrama, grosor de las líneas -@cindex líneas, número de, de la pauta -@cindex grosor de líneas de pauta -@cindex adicionales, establecer líneas -@cindex ajuste de líneas adicionales -@cindex espaciado de líneas adicionales -@cindex número de líneas de pauta - -las líneas de un pentagrama pertenecen al grob @code{StaffSymbol}. Se -pueden modificar las propiedades de @code{StaffSymbol} para modificar -la apariencia de una pauta, pero han de modificarse antes de que se -produzca la creación de la misma. - -Se puede cambiar el número de líneas de la pauta. La posición de la -clave y del Do central pueden requerir una modificación para mantener -la correspondencia con la nueva pauta. Para ver una explicación, -consulte la sección de fragmentos de código en @ref{Clave}. +@cindex pentagrama, símbolo del +@cindex pentagrama, detener e inicial líneas del +@cindex pentagrama, mofidicar las líneas del +@cindex adicionales, líneas +@cindex adicionales internas, líneas +@cindex adicionales, modificar líneas +@cindex líneas del pentagrama +@cindex líneas adicionales + +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff + +Se pueden usar las instrucciones @code{\stopStaff} y +@code{\startStaff} para detener y (re)iniciar, respectivamente, la +impresión de las líneas de la pauta en cualquier punto de la +partitura. @lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } +\stopStaff f4 d \startStaff g, e +f'4 d \stopStaff g, e +f'4 d \startStaff g, e +@end lilypond + +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined + +Las líneas de la pauta pertenecen al grob @code{StaffSymbol} +(incluidas las líneas adicionales) y se pueden modificar usando las +propiedades de @code{StaffSymbol}, pero esas modificaciones deben +hacerse antes de que el pentagrama se (re)inicie. + +Se puede cambiar el número de líneas de la pauta: + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-count = #2 +\startStaff g, e | + +f'4 d \stopStaff +\revert Staff.StaffSymbol #'line-count +\startStaff g, e | +@end lilypond + +La posición de cada una de las líneas de la pauta también puede +cambiarse. Los valores que se utilizan son @emph{medios} espacios de +pentagrama y la posición nueva es relativa a tercera línea normal del +pentagrama. Se imprime una sola línea de pauta por cada valor que se +introduce, de manera que el número de líneas así como su posición en +la pauta pueden cambiarse con una sola operación de sobreescritura. + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(1 3 5 -1 -3) +\startStaff g, e | +f'4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(8 6.5 -6 -8 -0.5) +\startStaff g, e @end lilypond -Se puede modificar el grosor de las líneas de la pauta. El grosor de -las líneas adicionales y las plicas también resultan afectados, pues -dependen del grosor de las líneas de la pauta. +Puede ser necesario un ajuste de la posición de la clave y del Do +central para que se correspondan a las líneas nuevas. Véase +@ref{Clave}. + +Puede cambiarse el grosor de las líneas de la pauta. También resultan +afectadas, de forma predeterminada, las líneas adicionales y no la +plica de las figuras. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { \override StaffSymbol #'thickness = #3 } -{ e4 d c b } +{ f4 d g, e } @end lilypond -El grosor de las líneas adicionales se puede fijar de forma -independiente al de las líneas de la pauta. En el ejemplo, los dos -números son factores que multiplican el grosor de las líneas del -pentagrama y su espaciado. Las dos contribuciones se suman para dar -el grosor de las líneas adicionales. +Sin embargo, es posible fijar el grosor de las líneas adicionales de +forma independiente del de las líneas de la pauta. Los dos valores +requeridos multiplican el grosor de la línea de la pauta con el +espaciado de las líneas y después se suman para obtener el grosor de +las líneas adicionales. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol #'thickness = #2 + \override StaffSymbol #'ledger-line-thickness = #'(0.5 . 0.4) } -{ e4 d c b } +{ f'4 a, a,, f } @end lilypond -Se puede cambiar la distancia entre las líneas de la pauta. Este -ajuste afecta también al espaciado de las líneas adicionales. +Pueden alterarse las posiciones verticales de las líneas adicionales: -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol #'ledger-positions = #'(-3 -2 -1 2 5 6) } -{ a4 b c d } +{ f'4 a, a,, f } @end lilypond -Hay más detalles sobre las propiedades de @code{StaffSymbol} en -@rinternals{staff-symbol-interface}. - -@cindex detener el pentagrama -@cindex iniciar el pentagrama -@cindex pentagrama, iniciar -@cindex pentagrama, detener - -@funindex \startStaff -@funindex startStaff -@funindex \stopStaff -@funindex stopStaff - -Se pueden colocar modificaciones a las propiedades de una pauta en el -medio de una partitura, entre @code{\stopStaff} (detener pauta) y -@code{\startStaff} (iniciar pauta): +Puede hacerse que las líneas adicionales añadidas aparezcan por encima +o por debajo de la cabeza de las figuras, dependiendo de la posición +actual relativa a otras cabezas de figura que tienen asimismo sus +propias líneas adicionales. @lilypond[verbatim,quote,relative=2] -c2 c -\stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +\new Staff \with { + \override StaffSymbol #'ledger-extra = #4 +} +{ f'4 a, d, f, } @end lilypond -@noindent -En general, se pueden usar @code{\startStaff} y @code{\stopStaff} para -detener o iniciar un pentagrama en mitad de una partitura. - -@lilypond[verbatim,quote,relative=2] -c4 b a2 +También puede hacerse que las líneas adicionales aparezcan dentro del +pentagrama allí donde se requieren líneas de pauta personalizadas. El +ejemplo muestra la posición predeterminada de las líneas adicionales +cuando el valor de posición explícito @code{legder-position} se ha +fijado o no. La instrucción @code{stopStaff} se necesita en el +ejemplo para revertir la instrucción de sobreescritura +@code{\override} para todo el @code{StaffSymbol} (el símbolo de +pauta). + +@lilypond[fragment,quote,relative=1] +\override Staff.StaffSymbol #'line-positions = #'(-8 0 2 4) +d4 e f g \stopStaff -b4 c d2 \startStaff -e4 d c2 +\override Staff.StaffSymbol #'ledger-positions = #'(-8 -6 (-4 -2) 0) +d4 e f g @end lilypond +Puede alterarse la distancia entre líneas de la pauta. Esto afecta +también al espaciado de las líneas adicionales. -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined - +@lilypond[verbatim,quote,relative=2] +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 +} +{ f'4 d, g, e, } +@end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Glosario musical: @rglos{line}, @@ -687,11 +712,9 @@ sobre @code{\RemoveEmptyStaves}, consulte @ref{Ocultar pentagramas}. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} - @seealso Glosario musical: @rglos{ossia}, @@ -802,11 +825,9 @@ los pentagramas vacíos en contextos de música antigua como @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso Glosario musical: @rglos{Frenched staff}. @@ -833,9 +854,7 @@ Referencia de funcionamiento interno: @rinternals{VerticalAxisGroup}, @rinternals{Staff_symbol_engraver}. - @knownissues - La eliminación del grabador @code{Staff_symbol_engraver} también oculta las barras de compás. Si se fuerza la visibilidad de la barra de compás, pueden ocurrir errores de formato visual. En este caso, @@ -851,6 +870,7 @@ Para ver los fallos y problemas conocidos, así como las advertencias asociadas con @code{\RemoveEmptyStaves}, consulte @ref{Cambiar los valores por omisión de los contextos}. + @node Escritura de las particellas @subsection Escritura de las particellas @translationof Writing parts @@ -881,21 +901,27 @@ primer pentagrama, y el valor de @code{shortInstrumentName} se usa para todos los pentagramas siguientes. @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"Violin " -\set Staff.shortInstrumentName = #"Vln " -c4.. g'16 c4.. g'16 -\break -c1 +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} +{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond -También podemos usar el modo de marcado para construir nombres de +@cindex instrumentos, nombres complejos de + +También podemos usar @code{\markup} para construir nombres de instrumento más complicados: @lilypond[verbatim,quote,relative=2] -\set Staff.instrumentName = \markup { - \column { "Clarinetti" - \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} +{ c4 c,16 d e f g2 } @end lilypond @cindex instrument names, centering @@ -907,17 +933,17 @@ se debe utilizar @code{\center-column}: @lilypond[verbatim,quote,indent=1.5\cm,relative=2] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f + \new Staff \with { + instrumentName = #"Flute" } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet + { f2 g4 f } + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" } \line { "in B" \smaller \flat } } - c4 b c2 } + { c4 b c2 } >> @end lilypond @@ -931,25 +957,31 @@ valores del sangrado, @code{indent}, y del sangrado corto, consulte @ref{Variables de \paper para desplazamientos y sangrados}. @lilypond[verbatim,quote,ragged-right] +\relative c'' { + << + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } + { + f2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } + { + c,4 b c2 \break + c2 b4 c + } + >> +} + \layout { indent = 3.0\cm short-indent = 1.5\cm } - -\relative c'' << - \new Staff { - \set Staff.instrumentName = #"Alto Flute in G" - \set Staff.shortInstrumentName = #"Fl." - f2 g4 f \break - g4 f g2 - } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break - c2 b4 c - } ->> @end lilypond @cindex nombres de instrumento, añadir a otros contextos @@ -961,19 +993,23 @@ contexto. Para ver más detalles, consulte @ref{Modificar los complementos (plug @cindex nombres de instrumento, cambiar -Los nombres de instrumento se pueden cambiar en mitad de una pieza; -sin embargo, recuerde que el @code{instrumentName} no se imprime en -mitad de la pieza, ya que sólo aparece en el primer pentagrama: +El nombre de instrumento corto @code{shortInstrumentName} se puede +cambiar en mitad de una pieza; sin embargo, sólo el primer +@code{instrumentName} se imprime y el resto de ellos se ignoran: @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"First" -\set Staff.shortInstrumentName = #"one" -c1 c c c \break -c1 c c c \break -\set Staff.instrumentName = #"Second" -\set Staff.shortInstrumentName = #"two" -c1 c c c \break -c1 c c c \break +\new Staff \with { + instrumentName = #"Flute" + shortInstrumentName = #"Flt." +} +{ + c1 c c c \break + c1 c c c \break + \set Staff.instrumentName = #"Clarinet" + \set Staff.shortInstrumentName = #"Clt." + c1 c c c \break + c1 c c c \break +} @end lilypond @cindex instrumento, cambio de @@ -1018,7 +1054,6 @@ musical para declarar el cambio de instrumento: } @end lilypond - @seealso Referencia de la notación: @ref{Variables de \paper para desplazamientos y sangrados}, @@ -1134,6 +1169,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 + 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 @@ -1166,28 +1211,14 @@ oboeNotes = \relative c'' { Las citas también se pueden etiquetar, véase @ref{Uso de etiquetas}. -@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 Referencia de la notación: @ref{Transposición de los instrumentos}, @ref{Uso de etiquetas}. +Archivos de inicio: +@file{scm/define-event-classes.scm}. + Fragmentos de código: @rlsr{Staff notation}. @@ -1196,26 +1227,16 @@ Referencia de funcionamiento interno: @rinternals{QuoteMusic}, @rinternals{Voice}. -Archivos de inicio: -@file{scm/define-event-classes.scm}. - - @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 +si la expresión musical contiene enunciados @code{\new} +o @code{\context Voice}, sus contenidos no serían citados. +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 @@ -1227,64 +1248,136 @@ 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 imprime +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 más compleja 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_parte} #@var{voz} @var{música} +\cueDuring #@var{nombre_de_la_cita} #@var{dirección} #@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. +y + +@example +\cueDuringWithClef #@var{nombre_de_la_cita} #@var{dirección} #@var{clave} #@var{música} +@end example + +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 + \new CueVoice { \set instrumentCueName = "flute" } + \cueDuring #"flute" #UP { R1 } g2 c, } + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \oboeNotes +} @end lilypond @noindent -En el ejemplo anterior, el contexto @code{Voice} se tuvo que declarar -explícitamente, pues en caso contrario toda la expresión musical -habría pertenecido al contexto @code{CueVoice}. + Es posible ajustar qué aspectos de la música se citan con @code{\cueDuring} estableciendo el valor de la propiedad @code{quotedCueEventTypes}. Su valor por omisión es -@code{#'(note-event rest-event tie-event beam-event +@code{'(note-event rest-event tie-event beam-event tuplet-span-event)}, lo que significa que solamente las notas, silencios, ligaduras de unión, barras y grupos especiales se citan, pero no las articulaciones, marcas dinámicas, elementos de marcado, etc. +@warning{Cuando un contexto @code{Voice} da comienzo con @code{\cueDuring}, +como en el ejemplo siguiente, el contexto @code{Voice} se debe +declarar explícitamente, pues en caso contrario toda la expresión musical +pertenecería al contexto @code{CueVoice}.} + @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 @@ -1295,81 +1388,63 @@ oboe = \relative c'' { } @end lilypond -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. +El nombre del instrumento que está tocando se puede imprimir si se +ajusta la propiedad @code{instrumentCueName} dentro de un contexto +@code{CueVoice} provisional. La colocación y estilo del +@code{instrumentCueName} viene controlado a través del objeto +@code{\instrumentSwitch}, véase @ref{Nombres de instrumentos}. Si las +notas guía requieren un cambio de 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 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } \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 + \new CueVoice { \set instrumentCueName = "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 @@ -1386,13 +1461,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 @@ -1400,41 +1476,76 @@ 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 + \new CueVoice { \set instrumentCueName = "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}. @@ -1445,9 +1556,9 @@ Referencia de funcionamiento interno: @rinternals{CueVoice}, @rinternals{Voice}. - @knownissues - 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. diff --git a/Documentation/es/notation/text.itely b/Documentation/es/notation/text.itely index 64d3e4fceb..360c2c0bac 100644 --- a/Documentation/es/notation/text.itely +++ b/Documentation/es/notation/text.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 53db923e715126eb9463220526b4838fbfd3dad4 + Translation of GIT committish: dd8a0b7cc3280f273e66d20c72f1d4097dc6645a 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" +@c \version "2.16.0" @node Texto @section Texto @@ -110,7 +110,6 @@ objetos}. @code{\textLengthOff}. @endpredefined - @seealso Manual de aprendizaje: @rlearning{Colocación de los objetos}. @@ -132,7 +131,6 @@ Referencia de funcionamiento interno: @cindex texto, mantener dentro del margen @cindex letra, mantener dentro del margen - @knownissues La comprobación necesaria para asegurar que las inscripciones de texto y la letra de las canciones se mantienen dentro de los márgenes, @@ -201,11 +199,10 @@ LilyPond sólo puede manejar un objeto de extensión de texto por cada voz. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-text-spanner-postfix.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-custom-text-spanner-postfix.ly} @seealso @@ -291,17 +288,15 @@ c c @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-at-the-end-of-a-line.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {aligning-marks-with-various-notation-objects.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-on-every-staff.ly} - @seealso Referencia de la notación: @ref{Llamadas de ensayo}, @@ -367,21 +362,19 @@ requiere se describen en @ref{Elementos de marcado de varias páginas}. @funindex \markup @funindex markup -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @predefined @code{\markup}, -@code{\markuplines}. +@code{\markuplist}. @endpredefined @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {stand-alone-two-column-markup.ly} - @seealso Referencia de la notación: @ref{Formatear el texto}, @@ -463,7 +456,7 @@ c Un bloque @code{\markup} puede contener también cadenas de texto entre comillas. Dichas cadenas se tratan como expresiones de texto mínimas, y por tanto cualquier instrucción de marcado o carácter especial (como -@code{\} y @code{#}) se imprimen literalmente sin afectar al formateo +@code{\} y@tie{}@code{#}) se imprimen literalmente sin afectar al formateo del texto. Se puede hacer que se impriman las propias comillas si se les antepone una barra invertida. @@ -504,7 +497,6 @@ allegro = \markup { \bold \large Allegro } Se puede encontrar una lista exhaustiva de las instrucciones específicas de @code{\markup} en @ref{Text markup commands}. - @seealso Referencia de la notación: @ref{Text markup commands}. @@ -515,7 +507,6 @@ Fragmentos de código: Archivos de inicio: @file{scm/markup.scm}. - @knownissues Los errores de sintaxis para el modo de marcado a menudo producen confusión. @@ -551,6 +542,7 @@ f1 d2 r @cindex fuente tipográfica, tamaño de @cindex texto, tamaño de +@funindex \abs-fontsize @funindex \fontsize @funindex fontsize @funindex \smaller @@ -560,42 +552,42 @@ f1 d2 r @funindex \magnify @funindex magnify -El tamaño de los caracteres también se puede alterar de distintas -maneras: +El tamaño de la fuente tipográfica se puede alterar en relación al +tamaño global del pentagrama, de una serie de formas como se ve a +continuación. -@itemize -@item -el tamaño de la tipografía se puede definir a una serie de tamaños -estándar predefinidos, +Se puede fijar a un tamaño predefinido, -@item -el tamaño de la tipografía se puede establecer a un valor absoluto, +@lilypond[quote,verbatim,relative=2] +b1_\markup { \huge Sinfonia } +b1^\markup { \teeny da } +b1-\markup { \normalsize camera } +@end lilypond -@item -el tamaño de la tipografía también se puede cambiar de forma relativa -respecto de su valor anterior. -@end itemize +Se puede establecer a un tamaño relativo al valor anterior, -@noindent -El ejemplo siguiente ejemplifica estos tres métodos: +@lilypond[quote,verbatim,relative=2] +b1_\markup { \larger Sinfonia } +b1^\markup { \smaller da } +b1-\markup { \magnify #0.6 camera } +@end lilypond -@lilypond[quote,verbatim,relative=1] -f1_\markup { - \tiny espressivo - \large e - \normalsize intenso -} -a^\markup { - \fontsize #5 Sinfonia - \fontsize #2 da - \fontsize #3 camera -} -bes^\markup { (con - \larger grande - \smaller emozione - \magnify #0.6 { e sentimento } ) -} -d c2 r8 c bes a g1 +Se puede aumentar o disminuir de forma relativa al valor fijado por el +tamaño global del pentagrama, + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \fontsize #-2 Sinfonia } +b1^\markup { \fontsize #1 da } +b1-\markup { \fontsize #3 camera } +@end lilypond + +También se puede establecer a un tamaño de puntos fijo, +independientemente del tamaño global del pentagrama, + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \abs-fontsize #20 Sinfonia } +b1^\markup { \abs-fontsize #8 da } +b1-\markup { \abs-fontsize #14 camera } @end lilypond @cindex subíndice @@ -605,6 +597,8 @@ d c2 r8 c bes a g1 @funindex super @funindex \sub @funindex sub +@funindex \normal-size-super +@funindex normal-size-super El texto se puede imprimir como subíndice o como superíndice. De forma predeterminada se imprimen en un tamaño menor, pero también se @@ -703,7 +697,6 @@ como se explica en @ref{Tipografías}. @code{\larger}. @endpredefined - @seealso Referencia de la notación: @ref{Font}, @@ -711,15 +704,15 @@ Referencia de la notación: @ref{Marcas de repetición manual}, @ref{Tipografías}. +Archivos de inicio: +@file{scm/define-markup-commands.scm}. + Fragmentos de código: @rlsr{Text}. Referencia de funcionamiento interno: @rinternals{TextScript}. -Archivos de inicio: -@file{scm/define-markup-commands.scm}. - @knownissues La utilización de las instrucciones de tamaño de texto @code{\teeny}, @code{\tiny}, @@ -972,7 +965,6 @@ la izquierda o justificados, como se muestra en el ejemplo siguiente. Hay una lista exhaustiva de instrucciones de alineación de texto en @ref{Align}. - @seealso Manual de aprendizaje: @rlearning{Mover objetos}. @@ -981,15 +973,15 @@ Referencia de la notación: @ref{Align}, @ref{Indicaciones de texto}. +Archivos de inicio: +@file{scm/define-markup-commands.scm}. + Fragmentos de código: @rlsr{Text}. Referencia de funcionamiento interno: @rinternals{TextScript}. -Archivos de inicio: -@file{scm/define-markup-commands.scm}. - @node Notación gráfica dentro de elementos de marcado @unnumberedsubsubsec Notación gráfica dentro de elementos de marcado @@ -1159,22 +1151,21 @@ c Hay una lista exhaustiva de instrucciones específicas de gráficos en @ref{Graphic}. - @seealso Referencia de la notación: @ref{Graphic}, @ref{Anotaciones editoriales}. +Archivos de inicio: +@file{scm/define-markup-commands.scm}, +@file{scm/stencil.scm}. + Fragmentos de código: @rlsr{Text}. Referencia de funcionamiento interno: @rinternals{TextScript}. -Archivos de inicio: -@file{scm/define-markup-commands.scm}, -@file{scm/stencil.scm}. - @node Notación musical dentro de elementos de marcado @unnumberedsubsubsec Notación musical dentro de elementos de marcado @@ -1294,24 +1285,23 @@ c d e f Hay una lista exhaustiva de instrucciones relacionadas con la notación musical en @ref{Music}. - @seealso Referencia de la notación: @ref{Music}, @ref{La tipografía Feta}, @ref{Explicación de las fuentes tipográficas}. +Archivos de inicio: +@file{scm/define-markup-commands.scm}, +@file{scm/fret-diagrams.scm}, +@file{scm/harp-pedals.scm}. + Fragmentos de código: @rlsr{Text}. Referencia de funcionamiento interno: @rinternals{TextScript}. -Archivos de inicio: -@file{scm/define-markup-commands.scm}, -@file{scm/fret-diagrams.scm}, -@file{scm/harp-pedals.scm}. - @node Elementos de marcado de varias páginas @unnumberedsubsubsec Elementos de marcado de varias páginas @@ -1322,8 +1312,8 @@ Archivos de inicio: @cindex marcado, texto de, varias páginas @cindex texto que ocupa varias páginas -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @funindex \justified-lines @funindex justified-lines @funindex \wordwrap-lines @@ -1335,7 +1325,7 @@ que pueden abarcar varias páginas: @c KEEP LY @lilypond[quote,verbatim] -\markuplines { +\markuplist { \justified-lines { Un texto muy largo de líneas justificadas. ... @@ -1361,29 +1351,27 @@ o una lista de listas de marcado. Hay una lista exhaustiva de las instrucciones de lista de marcado en @ref{Text markup list commands}. - @seealso Referencia de la notación: @ref{Text markup list commands}. -Fragmentos de código: -@rlsr{Text}. +Archivos de inicio: +@file{scm/define-markup-commands.scm}. Manual de extensión: @rextend{New markup list command definition}. +Fragmentos de código: +@rlsr{Text}. + Referencia de funcionamiento interno: @rinternals{TextScript}. -Archivos de inicio: -@file{scm/define-markup-commands.scm}. - - -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @predefined -@code{\markuplines}. +@code{\markuplist}. @endpredefined @@ -1505,7 +1493,6 @@ preconfiguradas, también es posible usar otras fuentes, como se explica en las siguientes secciones: @ref{Fuentes de un solo elemento} y @ref{Fuentes tipográficas del documento completo}. - @seealso Referencia de la notación: @ref{La tipografía Feta}, @@ -1548,7 +1535,6 @@ disponibles en el sistema operativo: lilypond -dshow-available-fonts x @end example - @seealso Referencia de la notación: @ref{Explicación de las fuentes tipográficas}, @@ -1598,7 +1584,6 @@ sobre las fuentes tipográficas, consulte @ref{Explicación de las fuentes tipog @c we don't do Helvetica / Courier, since GS incorrectly loads @c Apple TTF fonts - @seealso Referencia de la notación: @ref{Explicación de las fuentes tipográficas}, diff --git a/Documentation/es/notation/unfretted-strings.itely b/Documentation/es/notation/unfretted-strings.itely index 181ff624e8..449032d436 100644 --- a/Documentation/es/notation/unfretted-strings.itely +++ b/Documentation/es/notation/unfretted-strings.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097 + Translation of GIT committish: 80340bdefc128536c79733d8c6f3467d91b01f72 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" +@c \version "2.16.0" @node Instrumentos de cuerda sin trastes @section Instrumentos de cuerda sin trastes @@ -73,7 +73,6 @@ Hay una plantilla para cuarteto de cuerda en @rlearning{Cuarteto de cuerda}. Ot @end itemize - @seealso Manual de aprendizaje: @rlearning{Cuarteto de cuerda}. @@ -132,7 +131,6 @@ a2^\markup { \small "sul A" } @code{\open}. @endpredefined - @seealso Referencia de la notación: @ref{Articulaciones y ornamentos}, @@ -205,7 +203,6 @@ activar si se necesitan los puntillos. construcción de acorde incluso si solamente hay una nota. Normalmente se usaría @code{@bs{}harmonicsOn} en esta situación.} - @seealso Glosario musical: @rglos{harmonics}. diff --git a/Documentation/es/notation/vocal.itely b/Documentation/es/notation/vocal.itely index df4bc97cc9..79154f2d6c 100644 --- a/Documentation/es/notation/vocal.itely +++ b/Documentation/es/notation/vocal.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: a3cb316f14549de435c809a3b5cd11e7746a7a01 + Translation of GIT committish: bcd9d85bfc1dd6cc2dd3e98901b4df33fd6d0989 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" +@c \version "2.16.0" @node Música vocal @section Música vocal @@ -132,7 +132,6 @@ Por ejemplo: \lyricmode @{ Three4 blind mice,2 three4 blind mice2 @} @end example - Existen dos métodos principales para especificar la colocación horizontal de las sílabas: mediante la indicación de la duración de cada sílaba explícitamente, como en el ejemplo anterior, o dejando que @@ -190,7 +189,7 @@ cualquier idioma distinto del inglés, o los caracteres especiales (como el símbolo del corazón o las comillas inclinadas), se pueden insertar directamente en el archivo de entrada, siempre que éste se grabe con la codificación UTF-8. Para más información, consulte -@ref{Codificación del texto}. +@ref{Caracteres especiales}. @lilypond[quote,verbatim] \relative c'' { d8 c16 a bes8 f e' d c4 } @@ -223,11 +222,9 @@ ver una explicación de muchas de las opciones, consulte @ref{Formatear el texto}. @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {formatting-lyrics-syllables.ly} - @seealso Manual de aprendizaje: @rlearning{Canciones}. @@ -235,16 +232,16 @@ 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}. +@ref{Caracteres especiales}. Referencia de funcionamiento interno: @rinternals{LyricText}. Fragmentos de código: -@rlsr{Text} +@rlsr{Text}. @node Alineación de la letra a una melodía @unnumberedsubsubsec Alineación de la letra a una melodía @@ -314,7 +311,7 @@ contextos de voz. Para ver más detalles, consulte @ref{Versos}. @item El texto se puede alinear independientemente de la duración de -cualquier nota si las duraciones de de las sílabas se especifican +cualquier nota si las duraciones de las sílabas se especifican explícitamente, y se escriben con @code{\lyricmode}. @lilypond[quote,ragged-right,verbatim] @@ -640,24 +637,18 @@ Para asignar más de una sílaba a una única nota con espacios entre las sílabas, podemos encerrar la frase entre comillas o utilizar un carácter de guión bajo @code{_}. De forma alternativa, podemos usar el símbolo de tilde curva (@code{~}) para obtener una ligadura de -texto. La ligadura de texto está implementada con el carácter Unicode -U+203F, por tanto debemos asegurarnos de usar una fuente tipográfica -para este glifo que realmente lo contenga. Algunas de las fuentes -tipográficas disponibles libremente con una ligadura de letra son, por -ejemplo, `FreeSerif' (un clon de Times), `DejaVuSans' (pero no -`DejaVuSerif') o `TeXGyreSchola' (un clon de Century Schoolbook). +texto. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran- de_a- mi- go } - \addlyrics { pu- "ro y ho-" nes- to } - \addlyrics { pu- ro~y~ho- nes- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond - @seealso Referencia de funcionamiento interno: @rinternals{LyricCombineMusic}. @@ -681,7 +672,7 @@ la izquierda con la primera nota del melisma. Cuando se produce un melisma sobre una sílaba distinta de la última de una palabra, dicha sílaba se suele unir a la siguiente con un guión separador. Esto se indica en el código de entrada escribiendo un -doble guión, @code{--}, inmediatamente después de la sílaba. +doble guión, @w{@code{--}}, inmediatamente después de la sílaba. De forma alternativa, cuando se produce un melisma sobre la última o sobre la única sílaba de una palabra, se suele trazar una línea @@ -730,6 +721,8 @@ escribiendo ligaduras de expresión sobre las notas de cada melisma. >> @end lilypond +Observe que las ligaduras de fraseo no afectan a la creación de melismas. + @item Se considera que las notas forman un melisma cuando se unen manualmente mediante barra, siempre y cuando el barrado automático @@ -773,9 +766,6 @@ si están comprendidas entre @code{\melisma} y @code{\melismaEnd}. >> @end lilypond -Observe que este método no se puede usar para indicar dos melismas si -el primero va seguido inmediatamente por el otro. - @item Se puede definir un melisma enteramente dentro de la letra escribiendo un carácter de barra baja suelto, @code{_}, por cada nota adicional @@ -868,7 +858,6 @@ Referencia de funcionamiento interno: @rinternals{Tunable context properties}. @knownissues - No se crean automáticamente líneas extensoras bajo los melismas; se deben insertar manualmente con un doble guión bajo. @@ -910,7 +899,6 @@ propiedades @code{minimum-distance} (distancia mínima entre las dos sílabas) y la @code{minimum-length} (umbral por debajo del cual se suprimen los guiones) de @code{LyricHyphen}. - @seealso Referencia de funcionamiento interno: @rinternals{LyricExtender}, @@ -1006,7 +994,6 @@ contraltoWords = \lyricmode { Con -- tral -- to words } } @end lilypond - @seealso Referencia de la notación: @ref{Posicionamiento vertical de la letra}. @@ -1136,15 +1123,15 @@ elaboración de los ejemplos anteriores, o examinando las plantillas de @rlearning{Conjuntos vocales} del manual de aprendizaje. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{lyrics-old-spacing-settings.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{obtaining-2.12-lyrics-spacing-in-newer-versions.ly} @seealso Manual de aprendizaje: @rlearning{Conjuntos vocales}. Referencia de la notación: -@ref{Alinear los contextos}, +@ref{Orden de disposición de los contextos}, @ref{Crear contextos}. @node Colocación horizontal de las sílabas @@ -1193,7 +1180,7 @@ la propiedad dentro del bloque @code{\layout}. @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {lyrics-alignment.ly} @c TODO: move to LSR -vv @@ -1220,18 +1207,6 @@ Para hacer que el texto evite también las líneas divisorias, use @} @end example -@c TODO Create and add lsr example of lyricMelismaAlignment -@c It's used like this to center-align all lyric syllables, -@c even when notes are tied. -td - -@ignore -\layout -{ - \context { \Score lyricMelismaAlignment = #0 } -} -@end ignore - - @node Letra y repeticiones @unnumberedsubsubsec Letra y repeticiones @translationof Lyrics and repeats @@ -1385,6 +1360,54 @@ Se pueden añadir más estrofas de una manera similar: } @end lilypond +@cindex alignBelowContext +@funindex alignBelowContext + +Sin embargo, si esta construcción se inserta dentro de un contexto de +varios pentagramas tal como un @code{ChoirStaff}, la letra de los +versos segundo y tercero aparecerán debajo del pentagrama inferior. + +Para posicionarlos correctamente utilice @code{alignBelowContext}: + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 3 { b4 b b b } + c4 c c c + } + } + } + \new Lyrics = "firstVerse" \lyricsto "melody" { + Not re -- peat -- ed. + << + { The first time words. } + \new Lyrics = "secondVerse" + \with { alignBelowContext = #"firstVerse" } { + \set associatedVoice = "melody" + Sec -- ond time words. + } + \new Lyrics = "thirdVerse" + \with { alignBelowContext = #"secondVerse" } { + \set associatedVoice = "melody" + The third time words. + } + >> + The end sec -- tion. + } + \new Voice = "harmony" { + \relative c' { + f4 f f f \repeat volta 2 { g8 g g4 g2 } a4 a8. a16 a2 + } + } + >> +} +@end lilypond + + @c TODO positioning a common line of lyrics @@ -2026,7 +2049,7 @@ muestra cómo producir dicha salida en LilyPond. @lilypond[ragged-right,quote,verbatim] melody = \relative c' { - c c c c | d d d d + c4 c c c | d d d d } text = \lyricmode { @@ -2045,7 +2068,7 @@ text = \lyricmode { \markup { \fill-line { \hspace #0.1 % moves the column off the left margin; - % can be removed if space on the page is tight + % can be removed if space on the page is tight \column { \line { \bold "2." \column { @@ -2053,7 +2076,7 @@ text = \lyricmode { "It has two lines." } } - \hspace #0.1 % adds vertical spacing between verses + \vspace #0.1 % adds vertical spacing between verses \line { \bold "3." \column { "This is verse three." @@ -2061,17 +2084,15 @@ text = \lyricmode { } } } - \hspace #0.1 % adds horizontal spacing between columns; - % if they are still too close, add more " " pairs - % until the result looks good - \column { + \hspace #0.1 % adds horizontal spacing between columns; + \column { \line { \bold "4." \column { "This is verse four." "It has two lines." } } - \hspace #0.1 % adds vertical spacing between verses + \vspace #0.1 % adds vertical spacing between verses \line { \bold "5." \column { "This is verse five." @@ -2080,7 +2101,7 @@ text = \lyricmode { } } \hspace #0.1 % gives some extra space on the right margin; - % can be removed if page space is tight + % can be removed if page space is tight } } @end lilypond @@ -2176,12 +2197,12 @@ el @q{modo de acordes}; esta sintaxis se explica en @ref{Notación de acordes}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {simple-lead-sheet.ly} @seealso Referencia de la notación: -@ref{Chord notation}. +@ref{Notación de acordes}. @node Música coral @@ -2377,7 +2398,7 @@ Referencia de funcionamiento interno: @cindex voces divididas -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-arpeggiobracket-to-make-divisi-more-visible.ly} @seealso @@ -2471,11 +2492,11 @@ Para ver detalles acerca de otras propiedades de formateo de las páginas, consulte @ref{Disposición de la página}. @item -Las notas guía de los diálogos y las instrucciones de escena se pueden -insertar con elementos de marcado. Véase @ref{Texto}. Se pueden -insertar indicaciones de escena extensas con una sección de marcado -independiente entre dos bloques @code{\score}. Véase @ref{Texto -separado}. +Se pueden insertar notas guía de diálogos, instrucciones de escena +y notas al pie, véase @ref{Crear notas al pie} y @ref{Texto}. +También se pueden añadir indicaciones de escena extensas con una +sección de elementos de marcado independientes entre dos bloques +@code{\score}, véase @ref{Texto separado}. @end itemize @@ -2486,6 +2507,7 @@ Glosario musical: @rglos{transposing instrument}. Referencia de la notación: +@ref{Crear notas al pie}, @ref{Agrupar pentagramas}, @ref{Ocultar pentagramas}, @ref{Transposición de los instrumentos}, @@ -2633,7 +2655,10 @@ pianoRH = \relative c'' { c4. g8 % position name of cue-ing instrument just before the cue notes, % and above the staff - s1*0^\markup { \right-align { \tiny "Flute" } } + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \set instrumentCueName = "Flute" + } \cueDuring "flute" #UP { g4 bes4 } } pianoLH = \relative c { c4 e, } @@ -2656,7 +2681,7 @@ debe especificar la tonalidad de manera que la conversión de las notas citadas se realice automáticamente. El ejemplo de abajo muestra esta transposición para un clarinete en Si bemol. Las notas de este ejemplo son bajas en el pentagrama, por lo que se especifica -@code{#DOWN} en @code{\cueDuring} (para que las plicas se orienten +@code{DOWN} en @code{\cueDuring} (para que las plicas se orienten hacia abajo) y el nombre del instrumento se coloca debajo del pentagrama. Observe también que la voz de la mano derecha del piano está declarada explícitamente. Esto es así porque las notas citadas en @@ -2674,7 +2699,11 @@ clarinet = \relative c' { pianoRH = \relative c'' { \transposition c' % position name of cue-ing instrument below the staff - s1*0_\markup { \right-align { \tiny "Clar." } } + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \override InstrumentSwitch #'direction = #DOWN + \set instrumentCueName = "Clar." + } \cueDuring "clarinet" #DOWN { c4. g8 } g4 bes4 } @@ -2706,7 +2735,7 @@ función musical para reducir la cantidad de texto que se teclea y para hacer que las notas del piano estén más claras. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {adding-orchestral-cues-to-a-vocal-score.ly} @seealso @@ -3143,7 +3172,7 @@ primero de los siguientes fragmentos de código. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {chant-or-psalms-notation.ly} Los cánticos y otros textos litúrgicos pueden disponerse de una forma @@ -3153,7 +3182,7 @@ alineada con las notas. En este caso, las notas se disponen espaciadas de acuerdo con las sílabas en vez de hacerlo con las duraciones de las notas. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @seealso @@ -3343,7 +3372,7 @@ corresponde exactamente con una línea de texto. Esto requiere una instrucción @code{\partial} al principio de la música e instrucciones @code{\bar "|"} ó @code{\bar "||"} al final de cada línea. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {hymn-template.ly} diff --git a/Documentation/es/notation/wind.itely b/Documentation/es/notation/wind.itely index 5b42e8581f..181e35a584 100644 --- a/Documentation/es/notation/wind.itely +++ b/Documentation/es/notation/wind.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: cc821da6e50c63beadf205719c72433460770a26 + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" @node Instrumentos de viento @section Instrumentos de viento @@ -69,10 +69,9 @@ aplicación a los instrumentos de viento: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing--flageolet-mark-size.ly} - @seealso Referencia de la notación: @ref{Marcas de respiración}, @@ -105,14 +104,13 @@ de viento madera,como se describe en @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingering-symbols-for-wind-instruments.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {recorder-fingering-chart.ly} @seealso - Referencia de la notación: @ref{Diagramas de posiciones para viento madera}. @@ -185,7 +183,6 @@ Se puede indicar esto mediante @code{cflat} o @code{fflat}. De forma parecida, e sol agudo piobaireachd se puede escribir @code{gflat} cuando aparece en música ligera. - @seealso Fragmentos de código: @rlsr{Winds}. @@ -238,7 +235,6 @@ gaita. } @end lilypond - @seealso Fragmentos de código: @rlsr{Winds}. @@ -397,42 +393,35 @@ c1^\markup { @end lilypond La lista de todas las tonalidades y ajustes posibles para un -instrumento dado, se pueden relacionar sobre la consola o en el -archivo de registro de salida, aunque no se pueden mostrar en la -salida de música impresa: - -@lilypond[verbatim,quote] - -#(print-keys-verbose 'flute) - -@end lilypond - -Se pueden crear diagramas nuevos siguiendo los patrones que están en -@file{scm/define-woodwind-diagrams.scm} y en -@file{scm/display-woodwind-diagrams.scm}. Sin embargo, esto requiere -conocimientos de Scheme y quizá no esté al alcance de todos los -usuarios. +instrumento dado se puede imprimir en la consola usando +@code{#(print-keys-verbose 'flute)} o en el archivo de registro +usando @code{#(print-keys-verbose 'flute (current-error-port))}, +aunque no se pueden mostrar en la salida de música impresa. + +Es posible crear diagramas nuevos, aunque requiere conocimientos de +Scheme y quizá no esté al alcance de todos los usuarios. Los patrones +de los diagramas están en @file{scm/define-woodwind-diagrams.scm} y en +@file{scm/display-woodwind-diagrams.scm}. @predefined @endpredefined @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-listing.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {graphical-and-text-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-size-of-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-key-lists.ly} @seealso - Archivos de inicio: -@file{scm/define-woodwind-diagrams.scm}, +@file{scm/define-woodwind-diagrams.scm}, @* @file{scm/display-woodwind-diagrams.scm}. Fragmentos de código: diff --git a/Documentation/es/notation/world.itely b/Documentation/es/notation/world.itely index f018ed9ee3..a1aa66cca2 100644 --- a/Documentation/es/notation/world.itely +++ b/Documentation/es/notation/world.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033 + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c 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" +@c \version "2.16.0" @node Músicas del mundo @section Músicas del mundo @@ -82,7 +82,7 @@ información}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {makam-example.ly} @seealso @@ -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: @@ -293,7 +293,7 @@ más importante del grupo, y podemos verlo como el maqam básico. A continuación presentamos una posibilidad de agrupación que asigna los maqams más comunes a armaduras de tonalidad: -@multitable @columnfractions 0.1 0.1 0.1 0.6 +@multitable @columnfractions 0.15 0.1 0.1 0.6 @headitem grupo de maqam @tab tono @tab final @@ -338,7 +338,7 @@ los maqams más comunes a armaduras de tonalidad: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} @@ -386,10 +386,7 @@ barrado automático y/o utilizar indicaciones de compás compuestas. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {arabic-improvisation.ly} @@ -558,10 +555,10 @@ completamente diferente de las escalas y modos occidentales: @notation{artık ikili} (12/9 ó 13/9 de tono). Desde el punto de vista de la notación moderna, es conveniente -utilizar las notas occidentales (do, re, mi, ... ó c, d, e, ...) con -alteraciones especiales que elevan o bajan las notas en intervalos de -1/9, 4/9, 5/9 y 8/9 de tono. Esetas alteraciones están definidas en -el archivo @file{makam.ly}. +utilizar las notas occidentales (do, re, mi, @dots{} ó c, d, e, +@dots{}) con alteraciones especiales que elevan o bajan las notas en +intervalos de 1/9, 4/9, 5/9 y 8/9 de tono. Estas alteraciones están +definidas en el archivo @file{makam.ly}. La tabla siguiente relaciona: diff --git a/Documentation/es/search-box.ihtml b/Documentation/es/search-box.ihtml index a0dde284e6..43ac87b84c 100644 --- a/Documentation/es/search-box.ihtml +++ b/Documentation/es/search-box.ihtml @@ -1,18 +1,24 @@ diff --git a/Documentation/es/texidocs/accordion-discant-symbols.texidoc b/Documentation/es/texidocs/accordion-discant-symbols.texidoc index 6a5f2a35f6..4889779dc0 100644 --- a/Documentation/es/texidocs/accordion-discant-symbols.texidoc +++ b/Documentation/es/texidocs/accordion-discant-symbols.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los símbolos específicos de acordeón discanto se escriben mediante @code{\\markup}. Se puede trucar la colocación vertical de los diff --git a/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc b/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc index 4e86e17fba..29424b4ad4 100644 --- a/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc +++ b/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Al escribir un bajo cifrado, podemos situar las cifras encima o debajo @@ -6,7 +6,7 @@ de las notas del bajo, mediante la definición de la propiedad @code{BassFigureAlignmentPositioning #'direction} (exclusivamente dentro de un contexto @code{Staff}). Se puede elegir entre @code{#UP} (o @code{#1}, arriba), @code{#CENTER} (o @code{#0}, centrado) y -@code{#DOWN} (o @code{#-1}, abajo). +@code{#DOWN} (o @w{@code{#-1}}, abajo). Esta propiedad se puede cambiar tantas veces como queramos. Utilice @code{\\once \\override} si no quiere que la sobreescritura se aplique diff --git a/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc b/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc index 1f00ae6e78..13aa196064 100644 --- a/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc +++ b/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Añadir un ámbito por voz" texidoces = " Se puede añadir un ámbito por cada voz. En este caso, el ámbito se diff --git a/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc b/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc index e0baad88b7..37bbb4d119 100644 --- a/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc +++ b/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/adding-an-extra-staff.texidoc b/Documentation/es/texidocs/adding-an-extra-staff.texidoc index c94d6e76e5..18ab25d8d1 100644 --- a/Documentation/es/texidocs/adding-an-extra-staff.texidoc +++ b/Documentation/es/texidocs/adding-an-extra-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede añadir (posiblemente de forma temporal) un pentagrama nuevo una vez que la pieza ha comenzado. diff --git a/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc b/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc index bd6d48af54..b7dcb1c77c 100644 --- a/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc +++ b/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Para añadir indicaciones de línea divisoria dentro del contexto de los nombres de acorde @code{ChordNames}, incluya el grabador diff --git a/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc b/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc index 0fb1667e3f..2d00523f54 100644 --- a/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc +++ b/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La sintaxis de LilyPond puede implicar muchas colocaciones poco comunes para los paréntesis, corchetes, etc, que a veces se tienen diff --git a/Documentation/es/texidocs/adding-drum-parts.texidoc b/Documentation/es/texidocs/adding-drum-parts.texidoc index a6511ef1c6..59487c17ca 100644 --- a/Documentation/es/texidocs/adding-drum-parts.texidoc +++ b/Documentation/es/texidocs/adding-drum-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Mediante la utilización de las potentes herramientas preconfiguradas como la función @code{\\drummode} y el contexto @code{DrumStaff}, la diff --git a/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc b/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc index 55dd984218..cda19a1db1 100644 --- a/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc +++ b/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Para añadir digitaciones a las tablaturas, utilice una combinación de @code{\\markup} y @code{\\finger}. diff --git a/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc b/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc index 78aca100df..85bdd1c253 100644 --- a/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc +++ b/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este ejemplo muestra una forma de simplificar la adición de muchas diff --git a/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc b/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc index d764b087f1..fe84c86fc3 100644 --- a/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc +++ b/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La función @code{\\parenthesize} es un truco especial que encierra objetos entre paréntesis. El grob asociado es @code{ParenthesesItem}. diff --git a/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc b/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc index 7ac744d71d..c4fafa3559 100644 --- a/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc +++ b/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Con algo de código de Scheme, se puede añadir fácilmente la fecha actual a una partitura. diff --git a/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc b/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc index 97587b461c..fc7b66c4b0 100644 --- a/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc +++ b/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El grabador @code{Volta_engraver} reside de forma predeterminada dentro del contexto de @code{Score}, y los corchetes de la repetición diff --git a/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc b/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc index 877986f4a0..8e57c69027 100644 --- a/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc +++ b/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Voces adicionales para evitar colisiones" texidoces = " En ciertos casos de polifonía compleja, se necesitan voces adicionales diff --git a/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc b/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc index 8d34263a83..82edcb0c05 100644 --- a/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc +++ b/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede ajustar la separación entre las notas de adorno utilizando la propiedad @code{spacing-increment} de @code{Score.GraceSpacing}. diff --git a/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc b/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc index d12e9b7075..20548a9526 100644 --- a/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc +++ b/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este fragmento de código muestra cómo situar la línea de base de la letra más cerca del pentagrama. diff --git a/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc b/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc index a5f821393d..caa1bec920 100644 --- a/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc +++ b/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Puede ser necesario trucar la propiedad @code{shortest-duration-space} para poder ajustar el tamaño de las diff --git a/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc b/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc index f58b114aa5..7207fdf216 100644 --- a/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc +++ b/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La alineación horizontal de los nombres de instrumento se puede trucar modificando la propiedad @code{Staff.InstrumentName diff --git a/Documentation/es/texidocs/aligning-bar-numbers.texidoc b/Documentation/es/texidocs/aligning-bar-numbers.texidoc index 11ee046b91..bdf40b01b0 100644 --- a/Documentation/es/texidocs/aligning-bar-numbers.texidoc +++ b/Documentation/es/texidocs/aligning-bar-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los números de compás se alinean de forma predeterminada por la diff --git a/Documentation/es/texidocs/aligning-marks-with-various-notation-objects.texidoc b/Documentation/es/texidocs/aligning-marks-with-various-notation-objects.texidoc index 17f28039c7..040c535175 100644 --- a/Documentation/es/texidocs/aligning-marks-with-various-notation-objects.texidoc +++ b/Documentation/es/texidocs/aligning-marks-with-various-notation-objects.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc b/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc index bc728c5348..fad424fd8f 100644 --- a/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc +++ b/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las cifras de digitación orientadas verticalmente se colocan de forma diff --git a/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc b/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc index f434045a52..d010c59f4b 100644 --- a/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc +++ b/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede variar la longitud de las plicas de las figuras unidas por una barra mediante la sobreescritura de la propiedad diff --git a/Documentation/es/texidocs/alternative-bar-numbering.texidoc b/Documentation/es/texidocs/alternative-bar-numbering.texidoc new file mode 100644 index 0000000000..3448bc1a12 --- /dev/null +++ b/Documentation/es/texidocs/alternative-bar-numbering.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + + texidoces = " +Se pueden seleccionar dos métodos alternativos para la numeración de +compases, especiales para cuando hay repeticiones. + +" + doctitlees = "Numeración de compases alternativa" diff --git a/Documentation/es/texidocs/alternative-breve-note.texidoc b/Documentation/es/texidocs/alternative-breve-note.texidoc new file mode 100644 index 0000000000..198015de54 --- /dev/null +++ b/Documentation/es/texidocs/alternative-breve-note.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +Este código muestra cómo usar la forma alternativa de la breve o +cuadrada con dos líneas verticales a los lados de la cabeza, en lugar +de una sola línea. + +" + doctitlees = "Cabeza de breve (cuadrada) alternativa" \ No newline at end of file diff --git a/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc b/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc index 3474679172..adeea57c20 100644 --- a/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc +++ b/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Ámbitos con varias voces" texidoces = " La adición del grabador @code{Ambitus_engraver} al contexto de diff --git a/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc b/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc index ab20f2f395..61af25ab12 100644 --- a/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc +++ b/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " De forma predeterminada se añaden corchetes de análisis sencillos debajo del pentagrama. El ejemplo siguiente muestra una manera de diff --git a/Documentation/es/texidocs/ancient-fonts.texidoc b/Documentation/es/texidocs/ancient-fonts.texidoc index 23b7f135ac..a1526d22ee 100644 --- a/Documentation/es/texidocs/ancient-fonts.texidoc +++ b/Documentation/es/texidocs/ancient-fonts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc index 815d180cb7..e9592c73da 100644 --- a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc +++ b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este ejemplo muestra cómo hacer una transcripción moderna de canto gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza diff --git a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc index 4c39bf7c1c..2c1c24c3c8 100644 --- a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc +++ b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Al transcribir música mensural, es útil un «incipit» al compienzo de la pieza para indicar la tonalidad y el tempo diff --git a/Documentation/es/texidocs/ancient-time-signatures.texidoc b/Documentation/es/texidocs/ancient-time-signatures.texidoc index 28b3f3d8ed..20a5217816 100644 --- a/Documentation/es/texidocs/ancient-time-signatures.texidoc +++ b/Documentation/es/texidocs/ancient-time-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las indicaciones de compás también se pueden grabar en estilo antiguo. diff --git a/Documentation/es/texidocs/anglican-psalm-template.texidoc b/Documentation/es/texidocs/anglican-psalm-template.texidoc new file mode 100644 index 0000000000..ff5f7952d3 --- /dev/null +++ b/Documentation/es/texidocs/anglican-psalm-template.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +Esta plantilla muestra una forma de preparar un cántico salmódico +anglicano. También muestra cómo se pueden añadir estrofas adicionales +como texto independiente por debajo de la música. Las dos estrofas se +codifican en estilos diferentes para ilustrar más posibilidades. + +" + doctitlees = "Plantilla de salmo del canto anglicano" diff --git a/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc b/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc index ac78c31791..ec0aa848ce 100644 --- a/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc +++ b/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Aplicar estilos de cabeza según la nota de la escala" texidoces = " La propiedad @code{shapeNoteStyles} se puede usar para definir varios diff --git a/Documentation/es/texidocs/arabic-improvisation.texidoc b/Documentation/es/texidocs/arabic-improvisation.texidoc index 303c508705..55bdc16abe 100644 --- a/Documentation/es/texidocs/arabic-improvisation.texidoc +++ b/Documentation/es/texidocs/arabic-improvisation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/asymmetric-slurs.texidoc b/Documentation/es/texidocs/asymmetric-slurs.texidoc index 8d1c86cd4e..3f6bf23c05 100644 --- a/Documentation/es/texidocs/asymmetric-slurs.texidoc +++ b/Documentation/es/texidocs/asymmetric-slurs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede hacer que una ligadura de expresión sea asimétrica para adaptarse mejor a un patrón asimétrico de notas. diff --git a/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc b/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc index 1671983b75..abbe337d17 100644 --- a/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc +++ b/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden subdividir las barras automáticamente. Estableciendo la propiedad @code{subdivideBeams}, las barras se subdividen en diff --git a/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc b/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc index e1fa21dc60..560d08ea56 100644 --- a/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc +++ b/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc b/Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc new file mode 100644 index 0000000000..ea71227892 --- /dev/null +++ b/Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +He aquí cómo imprimir acordes con cejilla o con media cejilla (quite +la marca de comentario de la línea adecuada para seleccionar uno de +ellos). + +La sintaxis es @code{\\bbarre #\"@var{número de traste}\" @{ notas @} }. + +" + doctitlees = "Notación de acordes de cejilla para guitarra (con elemento de extensión de texto)" diff --git a/Documentation/es/texidocs/beam-endings-in-score-context.texidoc b/Documentation/es/texidocs/beam-endings-in-score-context.texidoc index 54a18ba499..b51b8de777 100644 --- a/Documentation/es/texidocs/beam-endings-in-score-context.texidoc +++ b/Documentation/es/texidocs/beam-endings-in-score-context.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las reglas de final de barra especificadas en el contexto @code{Score} se aplican a todos los pentagramas, pero se pueden diff --git a/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc b/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc index bf850e88bd..f01c314e67 100644 --- a/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc +++ b/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc @@ -1,10 +1,11 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 -barras automáticas se debe especificar la forma de agrupamiento. -Por ejemplo, para agrupar todas las barras en la forma 2-3-2 en el -compás de 7/8, especificamos los finales de barra en 2/8 y 5/8: +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 barras +automáticas se debe especificar el agrupamiento mediante +beatStructure. Por ejemplo, para agrupar todas las +barras en la forma 2-3-2 en el compás de 7/8, especificamos los +finales de barra en 2/8 y 5/8: " doctitlees = "Agrupamiento de las barras en el compás de 7/8" diff --git a/Documentation/es/texidocs/beams-across-line-breaks.texidoc b/Documentation/es/texidocs/beams-across-line-breaks.texidoc index be52b86006..6bef192d9f 100644 --- a/Documentation/es/texidocs/beams-across-line-breaks.texidoc +++ b/Documentation/es/texidocs/beams-across-line-breaks.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Normalmente están prohibidos los saltos de línea si las barras atraviesan las líneas divisorias. Se puede cambiar este diff --git a/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc b/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc index f4660a5482..c763259b9a 100644 --- a/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc +++ b/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La instrucción @code{\\whiteout} intercala un rectángulo blanco debajo de un elemento de marcado. Este rectángulo blanco no tapa diff --git a/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc b/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc index b08fff2745..d5dee860f2 100644 --- a/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc +++ b/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc b/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc index e02418e940..df2301066a 100644 --- a/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc +++ b/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc b/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc index 6ed9bf75a6..e63fcf40a1 100644 --- a/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc +++ b/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este ejemplo proporciona una función para tipografiar un regulador con texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra diff --git a/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc b/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc index eacf1ab36a..434320ce04 100644 --- a/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc +++ b/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Para hacer más pequeño el círculo de @code{\\flageolet} (armónico) utilice la siguiente función de Scheme. diff --git a/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc b/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc index ef0fe4f6f4..5755c72f94 100644 --- a/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc +++ b/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden modificar notas individuales de un acorde con la instrucción @code{\\tweak}, alterando la propiedad @code{font-size}. diff --git a/Documentation/es/texidocs/changing-beam-knee-gap.texidoc b/Documentation/es/texidocs/changing-beam-knee-gap.texidoc index c8baea3a50..87c7fbc7a9 100644 --- a/Documentation/es/texidocs/changing-beam-knee-gap.texidoc +++ b/Documentation/es/texidocs/changing-beam-knee-gap.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se insertan automáticamente barras en ángulo cuando se detecta un intervalo muy grande entre las notas. Se puede hacer un ajuste diff --git a/Documentation/es/texidocs/changing-chord-separator.texidoc b/Documentation/es/texidocs/changing-chord-separator.texidoc index 45214f0d47..0448f8bf10 100644 --- a/Documentation/es/texidocs/changing-chord-separator.texidoc +++ b/Documentation/es/texidocs/changing-chord-separator.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede establecer el separador entre las distintas partes del nombre de un acorde para que sea cualquier elemento de marcado. diff --git a/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc b/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc index 98538a917a..05a7a1bbe2 100644 --- a/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc +++ b/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Cambiar la forma de los silencios multicompás" texidoces = " Si hay diez compases de silencio o menos, se imprime en el pentagrama diff --git a/Documentation/es/texidocs/changing-fret-orientations.texidoc b/Documentation/es/texidocs/changing-fret-orientations.texidoc index 3744ff6632..88da50cff7 100644 --- a/Documentation/es/texidocs/changing-fret-orientations.texidoc +++ b/Documentation/es/texidocs/changing-fret-orientations.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc b/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc index 04d12a9107..ba7eb395dd 100644 --- a/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc +++ b/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Al producir una salida MIDI, el comportamiento predeterminado es que cada pentagrama representa un canal MIDI, con todas las voces de dicho diff --git a/Documentation/es/texidocs/changing-partcombine-texts.texidoc b/Documentation/es/texidocs/changing-partcombine-texts.texidoc index f814b538f0..6fe1e5edcb 100644 --- a/Documentation/es/texidocs/changing-partcombine-texts.texidoc +++ b/Documentation/es/texidocs/changing-partcombine-texts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc b/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc index d8016d904c..83a24fe110 100644 --- a/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc +++ b/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede modificar el texto empleado para los crescendos y decrescendos modificando las propiedades de contexto diff --git a/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc b/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc index 0da022fa33..ec90ecbd51 100644 --- a/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc +++ b/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Es posible ajustar la separación en las indicaciones de tesitura. diff --git a/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc b/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc index 7fd7000c0e..8353464ffa 100644 --- a/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc +++ b/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede cambiar el aspecto de las ligaduras de expresión de continuas a punteadas o intermitentes. diff --git a/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc b/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc index 6d77b12cd0..93cc93daa3 100644 --- a/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc +++ b/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El glifo de la marca de respiración se puede ajustar sobreescribiendo la propiedad de texto del objeto de presentación diff --git a/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc b/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc index ccb86e58bb..44e9cd9c1b 100644 --- a/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc +++ b/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La nomenclatura inglesa (predeterminada) para los acordes del cifrado americano se puede cambiar por la alemana (@code{\\germanChords} diff --git a/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc b/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc index bcee3b51fc..2b9b017fd3 100644 --- a/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc +++ b/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este código muestra cómo cambiar la cantidad de puntillos de una nota. diff --git a/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc b/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc index bb7d2285d6..4c7a6d2d1a 100644 --- a/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc +++ b/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc b/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc index 333eedc328..8637e20781 100644 --- a/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc +++ b/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc @@ -1,4 +1,4 @@ -%%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc b/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc index 2317c49ee9..af83284f70 100644 --- a/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc +++ b/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Para cambiar el tempo en la salida MIDI sin imprimir nada, hacemos invisible la indicación metronómica: diff --git a/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc b/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc index 8867575b20..c20b1a5418 100644 --- a/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc +++ b/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de las indicaciones de pisar pedal y levantar pedal. Observe que las diff --git a/Documentation/es/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc b/Documentation/es/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc deleted file mode 100644 index ad757a2c0e..0000000000 --- a/Documentation/es/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc +++ /dev/null @@ -1,13 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - texidoces = " -La instrucción @code{\\time} establece las propiedades -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y -@code{measureLength} en el contexto @code{Timing}, que normalmente -tiene el alias @code{Score}. La modificación del valor de -@code{timeSignatureFraction} hace que se imprima la nueva indicación -de compás sin que cambie ninguna de las demás propiedades: - -" - doctitlees = "Cambio de compás sin afectar al barrado" - - diff --git a/Documentation/es/texidocs/changing-the-tuplet-number.texidoc b/Documentation/es/texidocs/changing-the-tuplet-number.texidoc index 7dfc8ba3b8..a4d219c118 100644 --- a/Documentation/es/texidocs/changing-the-tuplet-number.texidoc +++ b/Documentation/es/texidocs/changing-the-tuplet-number.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Cambiar el número del grupo especial" texidoces = " diff --git a/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc b/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc index 465c6733f8..d4cbf887db 100644 --- a/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc +++ b/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La propiedad @code{measureLength}, junto con @code{measurePosition}, determina cuándo es necesario dibujar una diff --git a/Documentation/es/texidocs/chant-or-psalms-notation.texidoc b/Documentation/es/texidocs/chant-or-psalms-notation.texidoc index 37e41c9c75..6e96d1fbbd 100644 --- a/Documentation/es/texidocs/chant-or-psalms-notation.texidoc +++ b/Documentation/es/texidocs/chant-or-psalms-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este tipo de notación se utiliza para el canto de los Salmos, en que las estrofas no siempre tienen la misma longitud. diff --git a/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc b/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc index aaaf849314..85b7b0dc7a 100644 --- a/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc +++ b/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc @@ -1,12 +1,11 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los deslizamientos para acordes se pueden indicar tanto en el contexto -Staff como en TabStaff. Los números de cuerda son necesarios para -TabStaff porque los cálculos de cuerda automáticos son diferentes para -los acordes y para notas sueltas, y @code{\\chordGlissando} traza -líneas entre las notas individuales. +@code{Staff} como en @code{TabStaff}. Los números de cuerda son +necesarios para TabStaff porque los cálculos de cuerda automáticos son +diferentes para los acordes y para notas sueltas. " - doctitlees = "Glissando de acordes en tablatura" \ No newline at end of file + doctitlees = "Glissando de acordes en tablatura" diff --git a/Documentation/es/texidocs/chord-name-exceptions.texidoc b/Documentation/es/texidocs/chord-name-exceptions.texidoc index 171e5c5b8d..ed2c158ced 100644 --- a/Documentation/es/texidocs/chord-name-exceptions.texidoc +++ b/Documentation/es/texidocs/chord-name-exceptions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede usar la propiedad @code{chordNameExceptions} para almacenar una lista de notaciones espaciales para acordes diff --git a/Documentation/es/texidocs/chord-name-major7.texidoc b/Documentation/es/texidocs/chord-name-major7.texidoc index 961522aca8..3bc9ae411d 100644 --- a/Documentation/es/texidocs/chord-name-major7.texidoc +++ b/Documentation/es/texidocs/chord-name-major7.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La presentación del acorde de séptima mayor se puede ajustar mediante majorSevenSymbol. diff --git a/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc b/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc index 243860a623..99ec8c8c69 100644 --- a/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc +++ b/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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. diff --git a/Documentation/es/texidocs/clip-systems.texidoc b/Documentation/es/texidocs/clip-systems.texidoc index a02bfefc0e..8b560f0a7e 100644 --- a/Documentation/es/texidocs/clip-systems.texidoc +++ b/Documentation/es/texidocs/clip-systems.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este código muestra cómo recortar (extraer) fragmentos a partir de una partitura completa. Este archivo tiene que procesarse de forma separada con la opción -@code{-dclip-systems}; la página de fragmentos de código podría no +@option{-dclip-systems}; la página de fragmentos de código podría no mostrar el resultado adecuadamente. La salida consiste en archivos con los nombres diff --git a/Documentation/es/texidocs/clusters.texidoc b/Documentation/es/texidocs/clusters.texidoc index e08d62d488..c654c34c31 100644 --- a/Documentation/es/texidocs/clusters.texidoc +++ b/Documentation/es/texidocs/clusters.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los «clusters» o racimos son un mecanismo para indicar la interpretación de un ámbito de notas al mismo tiempo. diff --git a/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc b/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc index 4c2dc3775b..ed0e1c2903 100644 --- a/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc +++ b/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più forte} o @qq{piano subito}). Se pueden producir usando un bloque diff --git a/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc b/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc index 47e15dd42c..cd411fd0fd 100644 --- a/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc +++ b/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La herramienta de combinación de partes (instrucción diff --git a/Documentation/es/texidocs/compound-time-signatures.texidoc b/Documentation/es/texidocs/compound-time-signatures.texidoc index 64dec02817..8af1dafd85 100644 --- a/Documentation/es/texidocs/compound-time-signatures.texidoc +++ b/Documentation/es/texidocs/compound-time-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Indicaciones de compases compuestos" texidoces = " Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden diff --git a/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc b/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc index cba84750fe..6d9436811b 100644 --- a/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc +++ b/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc @@ -1,19 +1,19 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La agrupación de pulsos dentro de un compás está controlada por la propiedad de contexto @code{beatStructure}. Hay establecidos valores de @code{beatStructure} para muchos tipos de compases en @file{scm/time-signature-settings.scm}. Los valores de @code{beatStructure} se pueden cambiar o establecer con @code{\\set}. -Como alternativa, se puede usar la función de Scheme -@code{set-time-signature} para establecer tanto el compás como la -estructura de pulsos. @code{set-time-signature} acepta tres -argumentos: el número de pulsos, la longitud del pulso y la agrupación -interna de los pulsos en el compás. Tanto @code{\\time} como -@code{set-time-signature} se aplican al contexto @code{Timing}, por lo -que no restablecen los valores de @code{beatStructure} ni de -@code{baseMoment} que se establezcan en otros contextos de nivel -inferior, como @code{Voice}. +Como alternativa, se puede usar @code{\\time} para establecer tanto el +compás como la estructura de pulsos. Para ello, especificamos la +agrupación interna de los pulsos del compás como una lista de números +(en la sintaxis de Scheme) antes de la indicación de compás. + +@code{\\time} se aplica al contexto @code{Timing}, por lo que no +restablece los valores de @code{beatStructure} ni de @code{baseMoment} +que se establezcan en otros contextos de nivel inferior, como +@code{Voice}. Si el grabador @code{Measure_grouping_engraver} está incluido en uno de los contextos de presentación, se imprimirán signos de agrupación diff --git a/Documentation/es/texidocs/contemporary-glissando.texidoc b/Documentation/es/texidocs/contemporary-glissando.texidoc index e93ef8e00c..af3bd0da47 100644 --- a/Documentation/es/texidocs/contemporary-glissando.texidoc +++ b/Documentation/es/texidocs/contemporary-glissando.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede tipografiar un gissando contemporáneo sin nota final utilizando una nota oculta y temporalización de cadenza. diff --git a/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc b/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc index 6947356e1f..296a50277f 100644 --- a/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc +++ b/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La visibilidad de los objetos de extensión que acaban en la primera diff --git a/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc b/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc index feed3ce3c6..9b8de6f775 100644 --- a/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc +++ b/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc b/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc index c8efb34e07..92da004f67 100644 --- a/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc +++ b/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El orden vertical que ocupan las inscripciones gráficas está controlado con la propiedad @code{'script-priority}. Cuanto más diff --git a/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc b/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc index 4ff0544b59..faf0dcdf37 100644 --- a/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc +++ b/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El comportamiento predeterminado de la visibilidad de los corchetes de diff --git a/Documentation/es/texidocs/creating-a-delayed-turn.texidoc b/Documentation/es/texidocs/creating-a-delayed-turn.texidoc index b94ab023bb..f19e33eb87 100644 --- a/Documentation/es/texidocs/creating-a-delayed-turn.texidoc +++ b/Documentation/es/texidocs/creating-a-delayed-turn.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc b/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc index 69ec5d38b3..968d152e4f 100644 --- a/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc +++ b/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " En una música que tenga muchas apariciones de la misma secuencia de notas a distintas alturas, podría ser de diff --git a/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc b/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc index 9c6df1902f..dc60c1cad1 100644 --- a/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc +++ b/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede trazar un símbolo de arpegio entre notas de distintas voces que están sobre el mismo pentagrama si el grabador diff --git a/Documentation/es/texidocs/creating-blank-staves.texidoc b/Documentation/es/texidocs/creating-blank-staves.texidoc index 009f9f6d43..73f174a805 100644 --- a/Documentation/es/texidocs/creating-blank-staves.texidoc +++ b/Documentation/es/texidocs/creating-blank-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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} diff --git a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc index 82390ad449..591f754a6f 100644 --- a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc +++ b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Dentro de un @code{PianoStaff}, es posible hacer que un arpegio cruce entre los pentagramas ajustando la propiedad diff --git a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc index 7656904afe..53d1718236 100644 --- a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc +++ b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden crear arpegios que se cruzan entre pentagramas dentro de contextos distintos a @code{GrandStaff}, @code{PianoStaff} y diff --git a/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc b/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc index 5ca0a7964d..17715f14b7 100644 --- a/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc +++ b/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden crear indicaciones metronómicas nuevas en modo de marcado, pero no cambian el tempo en la salida MIDI. diff --git a/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc b/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc index 65235e26b4..c7a3d02611 100644 --- a/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc +++ b/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc b/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc index 44b8741f41..61d81daf2a 100644 --- a/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc +++ b/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/creating-slurs-across-voices.texidoc b/Documentation/es/texidocs/creating-slurs-across-voices.texidoc index 69a6d2e75e..b4ec7011eb 100644 --- a/Documentation/es/texidocs/creating-slurs-across-voices.texidoc +++ b/Documentation/es/texidocs/creating-slurs-across-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " En determinadas situaciones es necesario crear ligaduras de expresión entre notas que están en voces distintas. diff --git a/Documentation/es/texidocs/creating-text-spanners.texidoc b/Documentation/es/texidocs/creating-text-spanners.texidoc index a0fcd8c4dd..f35aa983f3 100644 --- a/Documentation/es/texidocs/creating-text-spanners.texidoc +++ b/Documentation/es/texidocs/creating-text-spanners.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan} permiten la creación de elementos de extensión textuales tan diff --git a/Documentation/es/texidocs/cross-staff-tremolos.texidoc b/Documentation/es/texidocs/cross-staff-tremolos.texidoc index 54008369f3..4784e95692 100644 --- a/Documentation/es/texidocs/cross-staff-tremolos.texidoc +++ b/Documentation/es/texidocs/cross-staff-tremolos.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/custodes.texidoc b/Documentation/es/texidocs/custodes.texidoc index 7d6e56cfb6..4da5a6957d 100644 --- a/Documentation/es/texidocs/custodes.texidoc +++ b/Documentation/es/texidocs/custodes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden tipografiar «custos» en diferentes estilos. diff --git a/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc b/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc index 02b1605e58..30fe944b81 100644 --- a/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc +++ b/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden establecer las propiedades de los diagramas de posiciones de acordes por medio de @code{'fret-diagram-details}. diff --git a/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc b/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc index e7f8755c12..6d85532de1 100644 --- a/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc +++ b/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden establecer las propiedades de los diagramas de posiciones a través de @code{'fret-diagram-details}. Para los diff --git a/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc b/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc index 36ef3e62cf..a7333a6415 100644 --- a/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc +++ b/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La dirección predeterminada de las plicas sobre la tercera línea del pentagrama está determinada por la propiedad diff --git a/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc b/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc deleted file mode 100644 index 5178d03144..0000000000 --- a/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc +++ /dev/null @@ -1,12 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - - texidoces = " -Este ejemplo demuestra cómo se puede definir el grabador de ámbito en -el espacio del usuario, con un grabador de Scheme. - -Esto es básicamente una reescritura en Scheme del código de -@file{lily/ambitus-engraver.cc}. - -" - - doctitlees = "Definir un grabador en Scheme: grabador de ámbito" diff --git a/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc b/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc index 42e58df829..82c47ce26d 100644 --- a/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc +++ b/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden añadir diagramas de posiciones predefinidas para diff --git a/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc b/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc index 3f324eafc4..f19c0df064 100644 --- a/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc +++ b/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Si hay un solo pentagrama en un de los tipos de sistema @code{ChoirStaff} o @code{StaffGroup}, el comportamiento diff --git a/Documentation/es/texidocs/displaying-complex-chords.texidoc b/Documentation/es/texidocs/displaying-complex-chords.texidoc index 87acc19c39..04414a6465 100644 --- a/Documentation/es/texidocs/displaying-complex-chords.texidoc +++ b/Documentation/es/texidocs/displaying-complex-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " He aquí una forma de imprimir un acorde en el que suena la misma nota diff --git a/Documentation/es/texidocs/displaying-grob-ancestry.texidoc b/Documentation/es/texidocs/displaying-grob-ancestry.texidoc index f693344dab..da6d5f5ebe 100644 --- a/Documentation/es/texidocs/displaying-grob-ancestry.texidoc +++ b/Documentation/es/texidocs/displaying-grob-ancestry.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Al trabajar con los callbacks de un grob, puede ser de mucha ayuda diff --git a/Documentation/es/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc b/Documentation/es/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc deleted file mode 100644 index 06cbb391b5..0000000000 --- a/Documentation/es/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc +++ /dev/null @@ -1,15 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - 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 -Webern (la @qq{Segunda} escuela de Viena), cada nota de la escala de -doce tonos se debe tratar con igualdad, sin ninguna jerarquía como los -grados clásicos tonales. Por tanto, estos compositores imprimen una -alteración accidental para cada nota, incluso en las notas naturales, -para enfatizar su nuevo enfoque de la teoría y el lenguaje musicales. - -Este fragmento de código muestra cómo conseguir dichas reglas de -notación. - -" - diff --git a/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc b/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc index e258dbe4e2..f689fccd43 100644 --- a/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc +++ b/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Funciones postfijas para la creación de objetos de extensión de texto diff --git a/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc b/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc index a0e9e4735f..c6f9c6d3e2 100644 --- a/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc +++ b/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los objetos de extensión \cresc, \dim y \decresc ahora se pueden diff --git a/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc b/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc index 2b0fd93df3..783d42d538 100644 --- a/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc +++ b/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede insertar códico PostScript directamente dentro de un bloque @code{\\markup}. diff --git a/Documentation/es/texidocs/engravers-one-by-one.texidoc b/Documentation/es/texidocs/engravers-one-by-one.texidoc index 00c356111a..45f71044c2 100644 --- a/Documentation/es/texidocs/engravers-one-by-one.texidoc +++ b/Documentation/es/texidocs/engravers-one-by-one.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Del problema central de la notación, esto es, crear un determinado símbolo, se encargan los «plugins» o complementos añadidos. Cada diff --git a/Documentation/es/texidocs/engraving-ties-manually.texidoc b/Documentation/es/texidocs/engraving-ties-manually.texidoc index b51607698d..4f56204530 100644 --- a/Documentation/es/texidocs/engraving-ties-manually.texidoc +++ b/Documentation/es/texidocs/engraving-ties-manually.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Grabado manual de las ligaduras" texidoces = " Se pueden grabar a mano las ligaduras modificando la propiedad diff --git a/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc b/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc index 6090497cf8..1caf28fc3c 100644 --- a/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc +++ b/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times" texidoces = " La propiedad @code{tupletSpannerDuration} establece cuánto debe durar diff --git a/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc b/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc index 02c525ea08..01ab004afa 100644 --- a/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc +++ b/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de diff --git a/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc b/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc index 843cd48251..7b785e3c0e 100644 --- a/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc +++ b/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden conseguir símbolos especiales combinando glifos existentes, lo que es de utilidad para la notación de instrumentos de viento. diff --git a/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc b/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc index c8711879e1..5873776ed6 100644 --- a/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc +++ b/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " En este ejemplo se combinan las digitaciones de la mano izquierda, indicaciones del número de cuerda y digitaciones de la mano diff --git a/Documentation/es/texidocs/flamenco-notation.texidoc b/Documentation/es/texidocs/flamenco-notation.texidoc index fd6a0b957d..2a45601a66 100644 --- a/Documentation/es/texidocs/flamenco-notation.texidoc +++ b/Documentation/es/texidocs/flamenco-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc b/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc index 0628e9e69b..1adc9689db 100644 --- a/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc +++ b/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Son posibles tanto los corchetes rectos sobre notas sueltas como extremos de barra sueltos en figuras unidas, con una combinación de diff --git a/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc b/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc index 33acdbf16e..0ea88a1918 100644 --- a/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc +++ b/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Forzar el desplazamiento horizontal de las notas" diff --git a/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc b/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc index 587efb0c16..5e7e195d3e 100644 --- a/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc +++ b/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Si LilyPond no cree que haya sitio suficiente para un guión separador diff --git a/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc b/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc new file mode 100644 index 0000000000..c4f18acf11 --- /dev/null +++ b/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +Es posible usar el modo de marcado para dar formato a sílabas +individuales dentro de la letra. + +" + doctitlees = "Dar formato a sílabas de la letra" diff --git a/Documentation/es/texidocs/fretboards-alternate-tables.texidoc b/Documentation/es/texidocs/fretboards-alternate-tables.texidoc index ed3e9615e1..c80324b66b 100644 --- a/Documentation/es/texidocs/fretboards-alternate-tables.texidoc +++ b/Documentation/es/texidocs/fretboards-alternate-tables.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden crear tablas alternativas de diagramas de posiciones. Se @@ -10,7 +10,7 @@ crear la tabla primero. Después se añaden los diagramas a la tabla. La tabla de diagramas de posiciones que se crea puede estar vacía o se puede copiar a partir de una tabla existente. -La tabla a usar en la impresión de de los diagramas predefinidos se +La tabla a usar en la impresión de los diagramas predefinidos se selecciona por medio de la propiedad @code{\\predefinedDiagramTable}. " diff --git a/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc b/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc index 3c0507afb8..35c7fe1965 100644 --- a/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc +++ b/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Armónicos sobre cuerdas pisadas (armónicos artificiales): " diff --git a/Documentation/es/texidocs/generating-random-notes.texidoc b/Documentation/es/texidocs/generating-random-notes.texidoc index f693aba4bf..a7938067d7 100644 --- a/Documentation/es/texidocs/generating-random-notes.texidoc +++ b/Documentation/es/texidocs/generating-random-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este fragmento de código basado en Scheme genera 24 notas aleatorias (o tantas como se necesiten), basándose en la diff --git a/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc b/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc new file mode 100644 index 0000000000..7dc9317867 --- /dev/null +++ b/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +Los objetos gráficos de columna de nota (los grobs @code{NoteColumn}) +pueden ser sobrepasados por los glissandos. + +" + doctitlees = "Glissando por debajo de un objeto gráfico" diff --git a/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc b/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc index 4c62612287..cee29b2176 100644 --- a/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc +++ b/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc @@ -1,4 +1,4 @@ -%%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " En muchos casos, las llaves que no están en la columna central se diff --git a/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc b/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc index f29d1dd7dc..6845b3401d 100644 --- a/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc +++ b/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede cambiar el aspecto de las líneas de rejilla sobreescribiendo algunas de sus propiedades. diff --git a/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc b/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc index f114913936..0ced1b7cd5 100644 --- a/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc +++ b/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden trazar líneas verticales normales entre pentagramas para mostrar la relación entre notas; sin embargo, en caso de música diff --git a/Documentation/es/texidocs/grouping-beats.texidoc b/Documentation/es/texidocs/grouping-beats.texidoc deleted file mode 100644 index 007aefe141..0000000000 --- a/Documentation/es/texidocs/grouping-beats.texidoc +++ /dev/null @@ -1,8 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - texidoces = " -Los patrones de barrado se pueden alterar con la propiedad -@code{beatGrouping}: - -" - doctitlees = "Agrupar los pulsos" - diff --git a/Documentation/es/texidocs/guitar-slides.texidoc b/Documentation/es/texidocs/guitar-slides.texidoc index 995125fcc5..7426b92b2f 100644 --- a/Documentation/es/texidocs/guitar-slides.texidoc +++ b/Documentation/es/texidocs/guitar-slides.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/guitar-strum-rhythms.texidoc b/Documentation/es/texidocs/guitar-strum-rhythms.texidoc index 8e8871cb4f..c61c8b9087 100644 --- a/Documentation/es/texidocs/guitar-strum-rhythms.texidoc +++ b/Documentation/es/texidocs/guitar-strum-rhythms.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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. diff --git a/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc b/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc index 45f0c80f97..83e33dd8e4 100644 --- a/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc +++ b/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los reguladores pueden imprimirse en uno cualquiera de los estilos de @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag. diff --git a/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc b/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc index 1dcce13c88..c2f1ba11ee 100644 --- a/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc +++ b/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Aquí se muestra la manera de ocultar las alteraciones de las notas diff --git a/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc b/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc index ae585d7e42..048085229c 100644 --- a/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc +++ b/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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. diff --git a/Documentation/es/texidocs/hymn-template.texidoc b/Documentation/es/texidocs/hymn-template.texidoc index f9202e04df..a0508ae5c8 100644 --- a/Documentation/es/texidocs/hymn-template.texidoc +++ b/Documentation/es/texidocs/hymn-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/incipit.texidoc b/Documentation/es/texidocs/incipit.texidoc index da33f0944f..861a6b6881 100644 --- a/Documentation/es/texidocs/incipit.texidoc +++ b/Documentation/es/texidocs/incipit.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los «incipit» se pueden escribir utilizando el grob del nombre del instruemento, pero manteniendo independientes las definiciones del diff --git a/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc b/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc index 895eaa8d36..f269ec5c9b 100644 --- a/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc +++ b/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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, diff --git a/Documentation/es/texidocs/inserting-a-caesura.texidoc b/Documentation/es/texidocs/inserting-a-caesura.texidoc index 7174835db0..6c05148b8c 100644 --- a/Documentation/es/texidocs/inserting-a-caesura.texidoc +++ b/Documentation/es/texidocs/inserting-a-caesura.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las marcas de cesura se pueden crear sobreescribiendo la propiedad @code{'text} del objeto @code{BreathingSign}. También está disponible diff --git a/Documentation/es/texidocs/isolated-percent-repeats.texidoc b/Documentation/es/texidocs/isolated-percent-repeats.texidoc index 028b195f1a..a85dd609f9 100644 --- a/Documentation/es/texidocs/isolated-percent-repeats.texidoc +++ b/Documentation/es/texidocs/isolated-percent-repeats.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " También se pueden imprimir símbolos de porcentaje sueltos. diff --git a/Documentation/es/texidocs/jazz-combo-template.texidoc b/Documentation/es/texidocs/jazz-combo-template.texidoc index 9de4f4ce84..b64fddf9c8 100644 --- a/Documentation/es/texidocs/jazz-combo-template.texidoc +++ b/Documentation/es/texidocs/jazz-combo-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Ésta es una plantilla bastante avanzada, para un conjunto de jazz. Observe que la notación de todos los instrumentos está en diff --git a/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc b/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc index 463cc444ca..a75b6af0eb 100644 --- a/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc +++ b/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/letter-tablature-formatting.texidoc b/Documentation/es/texidocs/letter-tablature-formatting.texidoc index 35732f8512..fb216c4ff8 100644 --- a/Documentation/es/texidocs/letter-tablature-formatting.texidoc +++ b/Documentation/es/texidocs/letter-tablature-formatting.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La tablatura se puede formatear utilizando letras en lugar de números. diff --git a/Documentation/es/texidocs/line-arrows.texidoc b/Documentation/es/texidocs/line-arrows.texidoc index 268620b275..6ba10089d3 100644 --- a/Documentation/es/texidocs/line-arrows.texidoc +++ b/Documentation/es/texidocs/line-arrows.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden aplicar puntas de flecha a los elementos de extensión de texto y de línea (como el Glissando). diff --git a/Documentation/es/texidocs/lyrics-alignment.texidoc b/Documentation/es/texidocs/lyrics-alignment.texidoc index 4329394244..34ca18d342 100644 --- a/Documentation/es/texidocs/lyrics-alignment.texidoc +++ b/Documentation/es/texidocs/lyrics-alignment.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La alineación horizontal de la letra se puede ajustar sobreescribiendo la propiedad @code{self-alignment-X} del objeto @code{LyricText}. @code{#-1} es izquierda, @code{#0} es centrado y @code{#1} es derecha; -sin embargo, puede usar también @code{#LEFT}, @code{#CENTER} y +sin embargo, podemos usar también @code{#LEFT}, @code{#CENTER} y @code{#RIGHT}. " diff --git a/Documentation/es/texidocs/makam-example.texidoc b/Documentation/es/texidocs/makam-example.texidoc index 7917eaea9a..65956cc935 100644 --- a/Documentation/es/texidocs/makam-example.texidoc +++ b/Documentation/es/texidocs/makam-example.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El «Makam» es un tipo de melodía de Turquía que utiliza alteraciones microtonales de 1/9 de tono. Consulte el diff --git a/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc b/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc index f5724bccf5..5805c65e70 100644 --- a/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc +++ b/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las ligaduras de expresión se pueden construir con patrones de diff --git a/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc b/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc index b159db239e..15d9e1eb5e 100644 --- a/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc +++ b/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/measure-counter.texidoc b/Documentation/es/texidocs/measure-counter.texidoc index e9597c6fa9..74dd906434 100644 --- a/Documentation/es/texidocs/measure-counter.texidoc +++ b/Documentation/es/texidocs/measure-counter.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este fragmento de código proporciona una solución alternativa a la producción de contadores de compás utilizando repeticiones diff --git a/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc b/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc index c91f3bd095..12f7cd304d 100644 --- a/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc +++ b/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La disposición «mensurstriche» en que las líneas divisorias no están dibujadas sobre los pentagramas, sino entre ellos, se puede diff --git a/Documentation/es/texidocs/modern-tab-text-clef.texidoc b/Documentation/es/texidocs/modern-tab-text-clef.texidoc deleted file mode 100644 index a935b04830..0000000000 --- a/Documentation/es/texidocs/modern-tab-text-clef.texidoc +++ /dev/null @@ -1,7 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - texidoces = " -Utilice un texto de marcado para sustituir el glifo de clave (TAB) con -una fuente tipográfica moderna. - -" - doctitlees = "Clave de texto TAB moderna para tablatura" diff --git a/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc b/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc index 3a565a21d6..e69ae2ffcd 100644 --- a/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc +++ b/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc @@ -1,14 +1,14 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las abreviaturas se encuentran definidas dentro del archivo @file{ly/script-init.ly}, donde las variables @code{dashHat}, -@code{dashPlus}, @code{dashDash}, @code{dashBar}, -@code{dashLarger}, @code{dashDot} y @code{dashUnderscore} reciben -valores predeterminados. Se pueden modificar estos valores -predeterminados para las abreviaturas. Por ejemplo, para asociar -la abreviatura @code{-+} (@code{dashPlus}) con el símbolo del -semitrino en lugar del símbolo predeterminado +, asigne el valor -@code{trill} a la variable @code{dashPlus}: +@code{dashPlus}, @code{dashDash}, @code{dashBar}, @code{dashLarger}, +@code{dashDot} y @code{dashUnderscore} reciben valores +predeterminados. Se pueden modificar estos valores predeterminados +para las abreviaturas. Por ejemplo, para asociar la abreviatura +@code{-+} (@code{dashPlus}) con el símbolo del semitrino en lugar del +símbolo predeterminado +, asigne el valor @code{trill} a la variable +@code{dashPlus}: " doctitlees = "Modificar los valores predeterminados para la notación abreviada de las articulaciones" diff --git a/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc b/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc index 235501b004..04d5d0ca12 100644 --- a/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc +++ b/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc b/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc index 2a4b11ecab..e326584f02 100644 --- a/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc +++ b/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede ajustar la posición vertical de una ligadura de expresión utilizando la propiedad @code{positions} del objeto diff --git a/Documentation/es/texidocs/multi-measure-rest-markup.texidoc b/Documentation/es/texidocs/multi-measure-rest-markup.texidoc index bc7c6cff79..1794a3b673 100644 --- a/Documentation/es/texidocs/multi-measure-rest-markup.texidoc +++ b/Documentation/es/texidocs/multi-measure-rest-markup.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los elementos de marcado aplicados a un silencio multicompás se centran encima o debajo de éste. Los elementos de marcado extensos diff --git a/Documentation/es/texidocs/nesting-staves.texidoc b/Documentation/es/texidocs/nesting-staves.texidoc index 9c784357cf..408e77c70a 100644 --- a/Documentation/es/texidocs/nesting-staves.texidoc +++ b/Documentation/es/texidocs/nesting-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede utilizar la propiedad @code{systemStartDelimiterHierarchy} para crear grupos de diff --git a/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc b/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc index 5523350728..b5f0504c0b 100644 --- a/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc +++ b/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " LilyPond también proporciona funciones de formato para imprimir números de grupo especial diferentes a la propia fracción, así diff --git a/Documentation/es/texidocs/non-traditional-key-signatures.texidoc b/Documentation/es/texidocs/non-traditional-key-signatures.texidoc index edcc780e45..364e1a5b75 100644 --- a/Documentation/es/texidocs/non-traditional-key-signatures.texidoc +++ b/Documentation/es/texidocs/non-traditional-key-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Armaduras de tonalidad no tradicionales" texidoces = " diff --git a/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc b/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc index 25e815071d..0916ef2012 100644 --- a/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc +++ b/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las cabezas de nota de notación fácil utilizan la propiedad diff --git a/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc b/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc new file mode 100644 index 0000000000..38c882efb6 --- /dev/null +++ b/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +El motor de espaciado vertical cambió en la versión 2.14. Esto puede +hacer que se altere el espaciado de la letra de las canciones. Es +posible fijar propiedades para los contextos @code{Lyric} y +@code{Staff} de forma que el motor de espaciado se comporte como lo +hacía en la versión 2.12. + +" + + doctitlees = "Conseguir el espaciado de la letra de la versión 2.12 + en versiones más recientes" diff --git a/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc b/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc index a35132a74a..3e9ae9245d 100644 --- a/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc +++ b/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Referencia para armónicos sobre cuerdas al aire (armónicos naturales): diff --git a/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc index 9555987b48..61344ad310 100644 --- a/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc +++ b/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Esta plantilla muestra el uso de contextos @code{StaffGroup} y @code{GrandStaff} anidados para sub-agrupar instrumentos del mismo diff --git a/Documentation/es/texidocs/ottava-text.texidoc b/Documentation/es/texidocs/ottava-text.texidoc index 27f2c0d9b0..23cbb5d0c8 100644 --- a/Documentation/es/texidocs/ottava-text.texidoc +++ b/Documentation/es/texidocs/ottava-text.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Internamente, @code{\\ottava} establece las propiedades diff --git a/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc b/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc index cc9df35f3c..77e38dd8bb 100644 --- a/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc +++ b/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc b/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc index 99644c9b4f..fd9d9b33c1 100644 --- a/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc +++ b/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden mostrar los contadores de las repeticiones del tipo porcentaje a intervalos regulares mediante el establecimiento de diff --git a/Documentation/es/texidocs/percent-repeat-counter.texidoc b/Documentation/es/texidocs/percent-repeat-counter.texidoc index cb08b9cb44..1133f15e4a 100644 --- a/Documentation/es/texidocs/percent-repeat-counter.texidoc +++ b/Documentation/es/texidocs/percent-repeat-counter.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las repeticiones de compases completos de más de dos repeticiones pueden llevar un contador si se activa la propiedad adecuada, como se diff --git a/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc b/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc index 244b7efc64..21d5c9e956 100644 --- a/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc +++ b/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra" texidoces = " Este ejemplo artificial muestra cómo se pueden permitir tanto los diff --git a/Documentation/es/texidocs/piano-template-simple.texidoc b/Documentation/es/texidocs/piano-template-simple.texidoc index 60108b6506..d8f83f3e2b 100644 --- a/Documentation/es/texidocs/piano-template-simple.texidoc +++ b/Documentation/es/texidocs/piano-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Presentamos a continuación una plantilla de piano sencilla con algunas notas. diff --git a/Documentation/es/texidocs/piano-template-with-centered-dynamics.texidoc b/Documentation/es/texidocs/piano-template-with-centered-dynamics.texidoc deleted file mode 100644 index b855ca92c4..0000000000 --- a/Documentation/es/texidocs/piano-template-with-centered-dynamics.texidoc +++ /dev/null @@ -1,10 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - texidoces = " -Muchas partituras de piano tienen las indicaciones dinámicas centradas -entre los dos pentagramas. El contexto @code{Dynamics}, si se sitúa -entre pentagramas, coloca los matices dinámicos correctamente de forma -automática. - -" - doctitlees = "Plantilla de piano con matices centrados" - diff --git a/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc b/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc index cbc23a2050..a31c0ad052 100644 --- a/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc +++ b/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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. diff --git a/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc b/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc index 116d0d68f6..00864d72e6 100644 --- a/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc +++ b/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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. diff --git a/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc b/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc index 903b8dee51..5e2d1e1aec 100644 --- a/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc +++ b/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Es posible ejercer un mayor control sobre la colocación de las digitaciones de la mano derecha estableciendo el valor de una diff --git a/Documentation/es/texidocs/polyphony-in-tablature.texidoc b/Documentation/es/texidocs/polyphony-in-tablature.texidoc index d4bef14108..836e0e9d1f 100644 --- a/Documentation/es/texidocs/polyphony-in-tablature.texidoc +++ b/Documentation/es/texidocs/polyphony-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La polifonía se crea de la misma forma en un @code{TabStaff} que en una pauta normal. diff --git a/Documentation/es/texidocs/positioning-arpeggios.texidoc b/Documentation/es/texidocs/positioning-arpeggios.texidoc index 8c8735a345..44e3ac6d2f 100644 --- a/Documentation/es/texidocs/positioning-arpeggios.texidoc +++ b/Documentation/es/texidocs/positioning-arpeggios.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Si necesitamos alargar o acortar un símbolo de arpegio, podemos modificar independientemente los extremos superior e inferior. diff --git a/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc b/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc index 50ac3423a9..4dd3e52fa0 100644 --- a/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc +++ b/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Cuando se colocan figuras sobre líneas adicionales, sus barras se diff --git a/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc b/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc index a87b549312..943f28cae3 100644 --- a/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc +++ b/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Al establecer la propiedad @code{'strict-grace-spacing} hacemos que diff --git a/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc b/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc index 83aa543507..a8e8284d5c 100644 --- a/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc +++ b/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Posicionar los silencios multicompás" texidoces = " A diferencia de los silencios normales, no existe una instrucción diff --git a/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc b/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc index d6f3291ce5..3cc44f0a9d 100644 --- a/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc +++ b/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los elementos de marcado de texto deben tener la propiedad diff --git a/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc b/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc index 4f2b7421a9..17b0ddd868 100644 --- a/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc +++ b/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente" texidoces = " diff --git a/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc b/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc index 8f8a57fe61..9dfd909d12 100644 --- a/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc +++ b/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura" texidoces = " diff --git a/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc b/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc index 8da59006f5..137654594a 100644 --- a/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc +++ b/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede imprimir una línea divisoria de la forma @code{|:} al principio de la pieza, sobreescribiendo la propiedad correspondiente: diff --git a/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc b/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc index b122bce68d..8fcac99115 100644 --- a/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc +++ b/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden imprimir los números de compás a intervalos regulares diff --git a/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc b/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc index ba44650d50..deb8055e01 100644 --- a/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc +++ b/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias. diff --git a/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc b/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc index 7fa14c4ca0..fa7ffb8efd 100644 --- a/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc +++ b/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden imprimir reguladores con un círculo en la punta (notación «al niente») estableciendo la propiedad @code{circled-tip} del objeto diff --git a/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc b/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc index 2973adf632..dbfcf4d98a 100644 --- a/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc +++ b/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " @@ -7,4 +7,4 @@ principio de la línea siguiente. En estos casos, puede ser preferible alinear el borde derecho de la marca con la línea divisoria. " - doctitlees = "Imprimir marcas al final de una línea" \ No newline at end of file + doctitlees = "Imprimir marcas al final de una línea" diff --git a/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc b/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc index da7949aceb..1574dca7da 100644 --- a/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc +++ b/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " -Aunque normalmente las marcas de texto sólo se imprimen sobre el -pentagrama superior, también se pueden imprimir en otro pentagrama -cualquiera. +Aunque normalmente las marcas de ensayo textuales sólo se imprimen +sobre el pentagrama superior, también se pueden imprimir en otro +pentagrama cualquiera. " - doctitlees = "Imprimir marcas en cualquier pentagrama" + doctitlees = "Imprimir marcas de ensayo en cualquier pentagrama" diff --git a/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc b/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc index 8eab0db1c9..bcf62ec5af 100644 --- a/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc +++ b/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " De forma predeterminada, las indicaciones metronómicas y las letras de ensayo se imprimen encima del pentagrama. Para diff --git a/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc b/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc index 1c5bf2e9f1..ce9283fbc5 100644 --- a/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc +++ b/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede usar el contexto @code{NoteNames} para imprimir el valor textual de las notas. La propiedad @code{printOctaveNames} activa o diff --git a/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc b/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc index 4f0a9764ee..0b7f9f0cef 100644 --- a/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc +++ b/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " De forma predeterminada se suprime el número del primer compás de una diff --git a/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc b/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc index 31e6331389..8ae99af253 100644 --- a/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc +++ b/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los pasajes citados tienen en cuenta la transposición de la fuente tanto como la del destino. En este ejemplo, todos los diff --git a/Documentation/es/texidocs/quoting-another-voice.texidoc b/Documentation/es/texidocs/quoting-another-voice.texidoc index f83cb453b7..55bbeb626c 100644 --- a/Documentation/es/texidocs/quoting-another-voice.texidoc +++ b/Documentation/es/texidocs/quoting-another-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La propiedad @code{quotedEventTypes} determina los tipos de eventos diff --git a/Documentation/es/texidocs/recorder-fingering-chart.texidoc b/Documentation/es/texidocs/recorder-fingering-chart.texidoc index 1161950d5d..aaa14404a2 100644 --- a/Documentation/es/texidocs/recorder-fingering-chart.texidoc +++ b/Documentation/es/texidocs/recorder-fingering-chart.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El ejemplo siguiente muestra cómo se pueden realizar diagramas de diff --git a/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc b/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc index 73e0ccbf4d..ad98fbc6a0 100644 --- a/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc +++ b/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los valores predeterminados para las notas de adorno están diff --git a/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc b/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc index 8ac8d86aea..d7cefd0b32 100644 --- a/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc +++ b/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden eliminar completamente los números de compás quitando el diff --git a/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc b/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc index ddb92b150c..2ebe341596 100644 --- a/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc +++ b/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " De forma predeterminada, las líneas divisorias en los grupos StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas. diff --git a/Documentation/es/texidocs/removing-the-first-empty-line.texidoc b/Documentation/es/texidocs/removing-the-first-empty-line.texidoc index 8de848e144..54a381855d 100644 --- a/Documentation/es/texidocs/removing-the-first-empty-line.texidoc +++ b/Documentation/es/texidocs/removing-the-first-empty-line.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El primer pentagrama vacío también se puede suprimir de la partitura estableciendo la propiedad @code{remove-first} de diff --git a/Documentation/es/texidocs/rest-styles.texidoc b/Documentation/es/texidocs/rest-styles.texidoc index 1949ffedbe..78e48c2bd4 100644 --- a/Documentation/es/texidocs/rest-styles.texidoc +++ b/Documentation/es/texidocs/rest-styles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Estilos de silencios" texidoces = " Los silencios se pueden imprimir en distintos estilos. diff --git a/Documentation/es/texidocs/reverting-default-beam-endings.texidoc b/Documentation/es/texidocs/reverting-default-beam-endings.texidoc index 833aaff26d..a44ad82a51 100644 --- a/Documentation/es/texidocs/reverting-default-beam-endings.texidoc +++ b/Documentation/es/texidocs/reverting-default-beam-endings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo es necesario modificar la estructura de pulsos: diff --git a/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc b/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc new file mode 100644 index 0000000000..a5f7de8bc4 --- /dev/null +++ b/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + + texidoces = " +Plantilla de coro SATB (en cuatro pentagramas) + +" + doctitlees = "Plantilla de coro SATB, a cuatro pentagramas" diff --git a/Documentation/es/texidocs/script-chart.texidoc b/Documentation/es/texidocs/script-chart.texidoc index 1348d5da20..95a1689413 100644 --- a/Documentation/es/texidocs/script-chart.texidoc +++ b/Documentation/es/texidocs/script-chart.texidoc @@ -1,5 +1,5 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 6977ddc9a3b63ea810eaecb864269c7d847ccf98 texidoces = " He aquí un cuadro que muestra todas las articulaciones disponibles: -" \ No newline at end of file +" diff --git a/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc b/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc index 1a069bc7f0..248f184626 100644 --- a/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc +++ b/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/setting-system-separators.texidoc b/Documentation/es/texidocs/setting-system-separators.texidoc index 341a8caf8d..b50578ce58 100644 --- a/Documentation/es/texidocs/setting-system-separators.texidoc +++ b/Documentation/es/texidocs/setting-system-separators.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden insertar separadores sistema entre los sistemas de una página. Se puede usar cualquier elemento de marcado, pero diff --git a/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc b/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc index 9039db07e7..4e11db8548 100644 --- a/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc +++ b/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc b/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc index 51567b2547..802cb3f186 100644 --- a/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc +++ b/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Si los reguladores son demasiado cortos, se pueden alargar modificando la propiedad @code{minimum-length} del objeto diff --git a/Documentation/es/texidocs/shortening-volta-brackets.texidoc b/Documentation/es/texidocs/shortening-volta-brackets.texidoc index 841d3b6812..e1a505c7db 100644 --- a/Documentation/es/texidocs/shortening-volta-brackets.texidoc +++ b/Documentation/es/texidocs/shortening-volta-brackets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " De forma predeterminada, los corchetes de primera y segunda vez se trazan encima de los finales alternativos completos, pero es posible diff --git a/Documentation/es/texidocs/showing-chords-at-changes.texidoc b/Documentation/es/texidocs/showing-chords-at-changes.texidoc index 76266c710d..9a50e0bc2e 100644 --- a/Documentation/es/texidocs/showing-chords-at-changes.texidoc +++ b/Documentation/es/texidocs/showing-chords-at-changes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden imprimir los acordes exclusivamente al comienzo de las líneas y cuando cambia el acorde. diff --git a/Documentation/es/texidocs/simple-lead-sheet.texidoc b/Documentation/es/texidocs/simple-lead-sheet.texidoc index 6e1b7aaca8..3ce22f24ed 100644 --- a/Documentation/es/texidocs/simple-lead-sheet.texidoc +++ b/Documentation/es/texidocs/simple-lead-sheet.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Al juntar nombres de acorde en cifrado americano, melodía y letra, obtenemos una hoja guía de acordes o «lead sheet»: diff --git a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc index c602129bfd..bb17924399 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Esta plantilla facilita la preparación de una canción con melodía, letra y acordes. diff --git a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc index 9fccac5c8d..55ffb8b5c1 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Presentamos a continuación un ejemplo de plantilla para una hoja guía de acordes con melodía, letra, acordes y diagramas de diff --git a/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc index 09e3f91696..47a55f69dc 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con melodía y acordes? ¡No busque más! diff --git a/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc index 39b94fcab9..b6f82c3daf 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc b/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc index 9cedf523b6..f320cc4b40 100644 --- a/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/slides-in-tablature.texidoc b/Documentation/es/texidocs/slides-in-tablature.texidoc index 4f3b191bbc..ed76563ddd 100644 --- a/Documentation/es/texidocs/slides-in-tablature.texidoc +++ b/Documentation/es/texidocs/slides-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los deslizamientos se pueden componer tipográficamente tanto en los diff --git a/Documentation/es/texidocs/snap-pizzicato-bartok-pizzicato.texidoc b/Documentation/es/texidocs/snap-pizzicato-bartok-pizzicato.texidoc deleted file mode 100644 index a8c09080f8..0000000000 --- a/Documentation/es/texidocs/snap-pizzicato-bartok-pizzicato.texidoc +++ /dev/null @@ -1,12 +0,0 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 - 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 -@q{pizzicato fuerte en que la cuerda se pulsa verticalmente produciendo un -chasquido y rebotando en el diapasón del instrumento} (Wikipedia). Se -denota mediante una circunferencia con una línea vertical corta que parte -del centro de aquélla hacia fuera. Aunque LilyPond no tiene ninguna -instrucción predefinida para crear esta marca, es fácil hacer la definición -y colocarla directamente en el archivo de lilypond. -" - diff --git a/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc b/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc index 6cbcaf3646..767f538569 100644 --- a/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc +++ b/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Los textos independientes se pueden disponer en varias columnas utilizando instrucciones @code{\\markup}: diff --git a/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc b/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc index fb83fa6e1b..ce1119ebdb 100644 --- a/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc +++ b/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/strict-beat-beaming.texidoc b/Documentation/es/texidocs/strict-beat-beaming.texidoc new file mode 100644 index 0000000000..7668d8a4f9 --- /dev/null +++ b/Documentation/es/texidocs/strict-beat-beaming.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 + texidoces = " +Se puede hacer que las barras secundarias apunten en la dirección del +pulso o fracción a que pertenecen. La primera barra evita los +corchetes sueltos (que es el comportamiento predeterminado); la +segunda barra sigue el pulso o fracción estrictamente. + +" + doctitlees = "Barras que se atienen al pulso estrictamente" diff --git a/Documentation/es/texidocs/string-quartet-template-simple.texidoc b/Documentation/es/texidocs/string-quartet-template-simple.texidoc index 86a9a55384..e26f67af76 100644 --- a/Documentation/es/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/es/texidocs/string-quartet-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Esta plantilla muestra un cuarteto de cuerda normal. También utiliza una sección @code{\\global} para el compás y la armadura diff --git a/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc index d518f3f3a5..e43c1cdd1a 100644 --- a/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un resultado satisfactorio para el cuarteto, pero ¿y si tenemos que diff --git a/Documentation/es/texidocs/subdividing-beams.texidoc b/Documentation/es/texidocs/subdividing-beams.texidoc index a3cfb3e570..c98614d4c5 100644 --- a/Documentation/es/texidocs/subdividing-beams.texidoc +++ b/Documentation/es/texidocs/subdividing-beams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc b/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc index 5dd8ca73d1..1fd6058c4d 100644 --- a/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc +++ b/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " A veces, la indicación de compás no debe imprimir la fracción completa diff --git a/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc b/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc index 2a5c342bc0..22b440cbe0 100644 --- a/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc +++ b/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " A modo de alternativa para obtener auténticos «incipit» independientes de la partitura principal, se incluyen como diff --git a/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc index 1b8d025d78..5ef2d0939b 100644 --- a/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc +++ b/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Transportar música con el menor número de alteraciones" texidoces = " Este ejemplo utiliza código de Scheme para forzar las diff --git a/Documentation/es/texidocs/tweaking-clef-properties.texidoc b/Documentation/es/texidocs/tweaking-clef-properties.texidoc index 9fce5b9d13..9c646ffdc2 100644 --- a/Documentation/es/texidocs/tweaking-clef-properties.texidoc +++ b/Documentation/es/texidocs/tweaking-clef-properties.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Trucaje de las propiedades de clave" texidoces = " La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de diff --git a/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc b/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc index bb8b466eab..04fcfed85c 100644 --- a/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc +++ b/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " La disposición de las expresiones de adorno se puede cambiar a lo diff --git a/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc b/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc index 1632ded001..3d89496736 100644 --- a/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc +++ b/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se puede usar el delimitador de comienzo de un sistema @code{SystemStartSquare} estableciéndolo explícitamente dentro de diff --git a/Documentation/es/texidocs/using-alternative-flag-styles.texidoc b/Documentation/es/texidocs/using-alternative-flag-styles.texidoc index 7b181284f0..8d03043c19 100644 --- a/Documentation/es/texidocs/using-alternative-flag-styles.texidoc +++ b/Documentation/es/texidocs/using-alternative-flag-styles.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Se pueden imprimir estilos alternativos del corchete o gancho de las corcheas y figuras menores, mediante la sobreescritura de la propiedad -@code{flag} del objeto @code{Stem}. Son valores válidos +@code{stencil} del objeto @code{Flag}. Son valores válidos @code{modern-straight-flag} y @code{old-straight-flag}. " diff --git a/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc b/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc index b59f3969e1..69be54314c 100644 --- a/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc +++ b/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " El corchete de arpegios @code{arpeggioBracket} se puede usar para indicar la división de voces cuando no hay plicas que puedan ofrecer diff --git a/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc b/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc index 65c75a2223..ee9462e372 100644 --- a/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc +++ b/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Algunos compositores escriben dos ligaduras cuando quieren acordes legato. Esto se puede conseguir estableciendo @code{doubleSlurs}. diff --git a/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc b/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc index a8ba3d37c8..44a7c02e48 100644 --- a/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc +++ b/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Es posible aplicar la barrita que cruza la barra de las diff --git a/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc b/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc index 3fa5d94c82..998bf84a2a 100644 --- a/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc +++ b/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/using-the-whiteout-property.texidoc b/Documentation/es/texidocs/using-the-whiteout-property.texidoc index 25622e5fe5..56cd3b51ed 100644 --- a/Documentation/es/texidocs/using-the-whiteout-property.texidoc +++ b/Documentation/es/texidocs/using-the-whiteout-property.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " diff --git a/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc b/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc index c927221787..97af523850 100644 --- a/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc +++ b/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 doctitlees = "Uso de ligaduras en los arpegios" texidoces = " En ocasiones se usan ligaduras de unión para escribir los arpegios. diff --git a/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc b/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc index ef2a87c186..4632e6fb48 100644 --- a/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc +++ b/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e diff --git a/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc b/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc index 5b16cc5049..ea38fc791c 100644 --- a/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc +++ b/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Las expresiones dinámicas que se comienzan, terminan o se producen en la misma nota se alinean verticalmente. Para asegurar que las diff --git a/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc b/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc index 7d4bcfa303..349f641162 100644 --- a/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc +++ b/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Este fragmento de código muestra el uso de las propiedades de contexto @code{alignBelowContext} y @code{alignAboveContext} para diff --git a/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc b/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc index 5c5596d763..f239bc6c25 100644 --- a/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc +++ b/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Allí donde se utilicen líneas extensoras para el bajo cifrado mediante el establecimiento de @code{useBassFigureExtenders} al valor diff --git a/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc b/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc index b1518b7251..35a8c87d68 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Esta plantilla añade una reducción de piano automática a la partitura diff --git a/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc b/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc index 2f184d1d92..446ef1cf99 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc b/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc index f35a6b09f8..6c4e3b3f1a 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Esta plantilla crea una partitura que comienza con una estrofa para diff --git a/Documentation/es/texidocs/vocal-ensemble-template.texidoc b/Documentation/es/texidocs/vocal-ensemble-template.texidoc index 022a2bbd3f..d0a8ebf94f 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/texidocs/volta-below-chords.texidoc b/Documentation/es/texidocs/volta-below-chords.texidoc index 1b2144b2f5..673ae70a9b 100644 --- a/Documentation/es/texidocs/volta-below-chords.texidoc +++ b/Documentation/es/texidocs/volta-below-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " Mediante la adición del grabador @code{Volta_engraver} al pentagrama pertinente, se pueden poner los corchetes de primera y diff --git a/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc b/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc index 89560cc396..c0627b0dcf 100644 --- a/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc +++ b/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc @@ -1,4 +1,4 @@ -%%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 texidoces = " @@ -6,8 +6,9 @@ El fragmento de código que aparece a continuación produce una lista de todas las llaves y disposiciones de llave posibles para los diagramas de posiciones de instrumentos de viento madera, tal y como están definidos en @file{scm/define-woodwind-diagrams.scm}. La lista se -presenta en la consola y en el archivo de registro de salida, pero no -en la salida de música. +muestra en el archivo de registro, pero no en la música. Si desea una +salida por la consola, omita el @code{(current-error-port)} de las +instrucciones. " diff --git a/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc b/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc index 2359210016..72bc637fe9 100644 --- a/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc +++ b/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc @@ -1,4 +1,4 @@ -%%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2 +%%% Translation of GIT committish: 596761e4a1c62fc2e85fe3396a378b814504e7b1 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 diff --git a/Documentation/es/translations.itexi b/Documentation/es/translations.itexi index afb096f057..7bea66747f 100644 --- a/Documentation/es/translations.itexi +++ b/Documentation/es/translations.itexi @@ -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 Thu May 31 10:51:45 UTC 2012 } @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 +1192 @tab Francisco Vila @tab @tab @@ -150,7 +150,7 @@ sí @item 1 Grabado musical @* -5297 +5296 @tab Francisco Vila @tab @tab @@ -270,7 +270,7 @@ sí @item A Tutorial de Scheme @* -5007 +6041 @tab Francisco Vila @tab @tab @@ -297,7 +297,7 @@ sí @item 1 Interfaces para programadores @* -3568 +5250 @tab Francisco Vila @tab @tab @@ -417,7 +417,7 @@ sí @item 2 Notación corriente @* -4184 +4187 @tab Francisco Vila @tab @tab @@ -444,7 +444,7 @@ sí @item 3 Conceptos fundamentales @* -11139 +11130 @tab Francisco Vila @tab @tab @@ -471,7 +471,7 @@ sí @item 4 Trucar la salida @* -15408 +15468 @tab Francisco Vila @tab @tab @@ -498,7 +498,7 @@ sí @item A Plantillas @* -225 +219 @tab Francisco Vila @tab @tab @@ -618,7 +618,7 @@ sí @item 1.1 Alturas @* -4479 +4530 @tab Francisco Vila @tab @tab @@ -645,7 +645,7 @@ sí @item 1.2 Duraciones @* -6048 +6352 @tab Francisco Vila @tab @tab @@ -662,17 +662,17 @@ sí @ifhtml @html -parcialmente +sí @end html @end ifhtml @ifnothtml -parcialmente +sí @end ifnothtml @tab pre-GDP @item 1.3 Expresiones @* -1726 +1712 @tab Francisco Vila @tab @tab @@ -699,7 +699,7 @@ sí @item 1.4 Repeticiones @* -930 +1011 @tab Francisco Vila @tab @tab @@ -726,7 +726,7 @@ sí @item 1.5 Notas simultáneas @* -2163 +2640 @tab Francisco Vila @tab @tab @@ -753,7 +753,7 @@ sí @item 1.6 Notación de los pentagramas @* -2056 +2392 @tab Francisco Vila @tab @tab @@ -780,7 +780,7 @@ sí @item 1.7 Anotaciones editoriales @* -931 +949 @tab Francisco Vila @tab @tab @@ -807,7 +807,7 @@ sí @item 1.8 Texto @* -2716 +2729 @tab Francisco Vila @tab @tab @@ -861,7 +861,7 @@ sí @item 2.1 Música vocal @* -4807 +4758 @tab Francisco Vila @tab @tab @@ -888,7 +888,7 @@ sí @item 2.2 Teclados y otros instrumentos de varios pentagramas @* -838 +862 @tab Francisco Vila @tab @tab @@ -942,7 +942,7 @@ sí @item 2.4 Instrumentos de cuerda con trastes @* -2640 +2675 @tab Francisco Vila @tab @tab @@ -969,7 +969,7 @@ sí @item 2.5 Percusión @* -806 +812 @tab Francisco Vila @tab @tab @@ -996,7 +996,7 @@ sí @item 2.6 Instrumentos de viento @* -312 +321 @tab Francisco Vila @tab @tab @@ -1023,7 +1023,7 @@ sí @item 2.7 Notación de acordes @* -1855 +2022 @tab Francisco Vila @tab @tab @@ -1131,7 +1131,7 @@ sí @item 3 Entrada y salida generales @* -7069 +8701 @tab Francisco Vila @tab @tab @@ -1158,18 +1158,18 @@ sí @item 4 Problemas de espaciado @* -11017 +11234 @tab Francisco Vila @tab @tab @ifhtml @html -parcialmente (96 %) +sí @end html @end ifhtml @ifnothtml -parcialmente (96 %) +sí @end ifnothtml @tab @ifhtml @@ -1185,7 +1185,7 @@ sí @item 5 Cambiar los valores por omisión @* -12248 +12679 @tab Francisco Vila @tab @tab @@ -1212,7 +1212,7 @@ sí @item A Tablas del manual sobre notación @* -1989 +2177 @tab Francisco Vila @tab @tab @@ -1332,7 +1332,7 @@ sí @item 1 Ejecutar LilyPond @* -3622 +4615 @tab Francisco Vila @tab @tab @@ -1359,7 +1359,7 @@ sí @item 2 Actualizar ficheros con @command{convert-ly} @* -1189 +1209 @tab Francisco Vila @tab @tab @@ -1386,7 +1386,7 @@ sí @item 3 Ejecución de @command{lilypond-book} @* -3764 +4137 @tab Francisco Vila @tab @tab @@ -1413,7 +1413,7 @@ sí @item 4 Programas externos @* -2170 +2390 @tab Francisco Vila @tab @tab @@ -1479,7 +1479,7 @@ LilyPond: notación musical para todos @item Títulos de sección @* -585 +616 @tab Francisco Vila @tab @tab @@ -1533,7 +1533,7 @@ sí @item Introducción @* -4506 +4753 @tab Francisco Vila @tab @tab @@ -1560,7 +1560,7 @@ sí @item Descarga @* -1183 +1211 @tab Francisco Vila @tab @tab @@ -1587,7 +1587,7 @@ sí @item Manuales @* -1200 +1214 @tab Francisco Vila @tab @tab @@ -1614,7 +1614,7 @@ sí @item Comunidad @* -1755 +3006 @tab Francisco Vila @tab @tab @@ -1631,11 +1631,11 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/es/usage.tely b/Documentation/es/usage.tely index 836db06069..e967ffcd6f 100644 --- a/Documentation/es/usage.tely +++ b/Documentation/es/usage.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -23,7 +23,7 @@ prácticas} para una utilización eficiente. @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 por los autores. +Copyright @copyright{} 1999--2012 por los autores. @end macro @set FDL diff --git a/Documentation/es/usage/external.itely b/Documentation/es/usage/external.itely index 1d92b50713..c6314ea480 100644 --- a/Documentation/es/usage/external.itely +++ b/Documentation/es/usage/external.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033 + Translation of GIT committish: da632500cfc55fcd3660f72b39c7dbcd7542f9bc 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" +@c \version "2.16.0" @node Programas externos @chapter Programas externos @@ -29,8 +29,20 @@ maneras. @node Apuntar y pulsar @section Apuntar y pulsar @translationof Point and click -@cindex apuntar y pulsar +Point and click adds links to pdf documents for certain music +elements. + +@menu +* Habilitar la opción de apuntar y pulsar:: +* Apuntar y pulsar selectivo:: +@end menu + +@node Habilitar la opción de apuntar y pulsar +@unnumberedsubsec Habilitar la opción de apuntar y pulsar +@translationof Enabling point and click + +@cindex apuntar y pulsar «Point and click» (apuntar y pulsar con el ratón) le da la posibilidad de localizar notas del código de entrada pulsando sobre ellas dentro @@ -42,13 +54,13 @@ al archivo PDF. Estos hiper-enlaces se envían al navegador de web, que a su vez abre un editor de texto con el cursor situado en el lugar correcto. -Para conseguir que esta cadena funcione, tendrá que configurar el -visor de PDF de forma que siga los hiper-enlaces usando el guión +Para conseguir que esta cadena funcione, tiene que configurar el visor +de PDF de forma que siga los enlaces usando el guión @file{lilypond-invoke-editor} proporcionado con LilyPond. Para Xpdf sobre Unix, lo siguiente debe estar presente en -@file{xpdfrc}@footnote{En Unix, este archivo se encuentra o bien en -@file{/etc/xpdfrc} o como @file{.xpdfrc} en su directorio personal.} +@file{xpdfrc}. En Unix, este archivo se encuentra o bien en +@file{/etc/xpdfrc} o como @file{$HOME/.xpdfrc}. @example urlCommand "lilypond-invoke-editor %s" @@ -89,8 +101,7 @@ emacsclient --no-wait +%(línea)s:%(columna)s %(archivo)s @end example @noindent -para @code{LYEDITOR} equivale a la invocación estándar de -emacsclient. +para @code{LYEDITOR} equivale a la invocación estándar de emacsclient. @cindex archivo de salida, tamaño del @@ -125,7 +136,81 @@ evitar incluir información de rutas de archivo relativas a su equipo dentro del archivo .pdf, lo que puede plantear un problema de seguridad.} +@node Apuntar y pulsar selectivo +@unnumberedsubsec Apuntar y pulsar selectivo +@translationof Selective point-and-click + +Para ciertas aplicaciones interactivas podría ser deseable incluir +solamente ciertos elementos dentro de la función de apuntar y pulsar. +Por ejemplo, si alguien quisiera crear una aplicación que reprodujese +audio o vídeo empezando por una nota concreta, sería incómodo que la +pulsación sobre la nota produjese las coordenadas de apuntar y pulsar +de una alteración accidental o de una ligadura de expresión que +estuviese sobre dicha nota. + +Esto se puede controlar indicando qué eventos incluir: + +@itemize +@item +Codificado de forma fija dentro del archivo @file{.ly}: + +@example +\pointAndClickTypes #'note-event +\relative c' @{ + c2\f( f) +@} +@end example +o bien + +@example +#(ly:set-option 'point-and-click 'note-event) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Línea de órdenes: + +@example +lilypond -dpoint-and-click=note-event example.ly +@end example + +@end itemize + +Se pueden incluir varios eventos: + +@itemize +@item +Codificado de forma fija dentro del archivo @file{.ly}: + +@example +\pointAndClickTypes #'(note-event dynamic-event) +\relative c' @{ + c2\f( f) +@} +@end example + +o bien + +@example +#(ly:set-option 'point-and-click '(note-event dynamic-event)) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Línea de órdenes: + +@smallexample +lilypond \ + -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ + example.ly +@end smallexample + +@end itemize @node Apoyo respecto de los editores de texto @section Apoyo respecto de los editores de texto @@ -270,7 +355,7 @@ Es posible grabar un archivo MIDI usando un teclado digital y convertirlo después a @file{.ly}. Sin embargo, los intérpretes humanos no son lo suficientemente exactos desde el punto de vista rítmico como para hacer que sea trivial la conversión de MIDI a LY. -Si se invoca con las opciones de cuantización (@code{-s} y @code{-d}), +Si se invoca con las opciones de cuantización (@option{-s} y @option{-d}), @command{midi2ly} intenta compensar los errores de medida, pero no lo hace muy bien. Por ello, no se recomienda usar @command{midi2ly} para archivos midi generados por seres humanos. @@ -377,10 +462,19 @@ mostrar un resumen de la utilización y las opciones. utilizar IDIOMA para los nombres de las notas, p.ej. 'espanol' para los nombres de las notas en español. +@item --loglevel=@var{loglevel} +fijar el grado en que la salida es prolija al valor dado en +@var{loglevel}. Los valores posibles son @code{NONE} (ninguno), +@code{ERROR} (errores), @code{WARNING} (advertencias), @code{PROGRESS} +(avance; predeterminado) y @code{DEBUG} (depuración). + @item --lxml usar el paquete de Python lxml.etree para el análisis de XML; usa menos memoria y tiempo de CPU. +@item -m, --midi +activar el bloque midi. + @item --nd --no-articulation-directions no convertir las direcciones (@code{^}, @code{_} o @code{-}) para las articulaciones, dinámica, etc. @@ -599,13 +693,21 @@ utilice las siguientes opciones: @{ c1 @} @end example -Para obtener un archivo @file{EPS} que sea útil, utilice +Para obtener archivos de imagen que sean útiles: @example -lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts miarchivo.ly +EPS + +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts myfile.ly + +PNG + +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png myfile.ly + +PNG transparentes -@file{PNG}: -lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png miarchivo.ly +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \ + -dpixmap-format=pngalpha --png myfile.ly @end example diff --git a/Documentation/es/usage/lilypond-book.itely b/Documentation/es/usage/lilypond-book.itely index 503232b105..69ceb89e08 100644 --- a/Documentation/es/usage/lilypond-book.itely +++ b/Documentation/es/usage/lilypond-book.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: f78131595ebafac25a416671e5a4b9c8b14e79b5 + Translation of GIT committish: f71ede90de06fdc16dad9ed75f38558efe819080 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" +@c \version "2.16.0" @c Note: keep this node named so that `info lilypond-book' brings you here. @node lilypond-book @@ -30,24 +30,24 @@ que coincidan con los ajustes de su documento. Es un programa distinto a @command{lilypond} propiamente dicho, y se ejecuta sobre la línea de órdenes; para ver más información, consulte -@ref{Utilización desde la línea de órdenes}. Si tiene MacOS 10.3 o -10.4 y experimenta algún problema al ejecutar @code{lilypond-book}, -consulte @rweb{MacOS X}. +@ref{Utilización desde la línea de órdenes}. Si experimenta algún +problema al ejecutar @code{lilypond-book} sobre Windows o Mac OS X +utilizando la línea de órdenes, consulte @rweb{Windows} o @rweb{MacOS X}. Este procedimiento se puede aplicar a documentos de @LaTeX{}, HTML, Texinfo o DocBook. @cindex texinfo -@cindex latex +@cindex LaTex @cindex texinfo @cindex texi -@cindex html +@cindex HTML @cindex docbook @cindex documentos, insertar música en -@cindex HTML, música dentro de -@cindex Texinfo, música dentro de -@cindex DocBook, música dentro de -@cindex @LaTeX{}, música dentro de +@cindex HTML, insertar música en +@cindex Texinfo, insertar música en +@cindex DocBook, insertar música en +@cindex LaTeX, insertar música en @menu * Un ejemplo de documento musicológico:: @@ -105,9 +105,9 @@ Las opciones se escriben entre corchetes. Los ejemplos grandes se pueden grabar en archivos separados e introducirse con \verb+\lilypondfile+. -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(Si es necesario, sustituya @file{screech-boink.ly} +(Si es necesario, sustituya @file{screech-and-boink.ly} por cualquier archivo @file{.ly} situado en el mismo directorio que este archivo.) @@ -137,7 +137,7 @@ xpdf lilybook La ejecución de @command{lilypond-book} y @command{latex} crea un gran número de archivos temporales, que podrían abarrotar el directorio de trabajo. Para poner remedio a esto utilice la opción -@code{--output=@var{directorio}}. Creará los archivos en un +@option{--output=@var{directorio}}. Creará los archivos en un subdirectorio aparte @file{directorio}. Finalmente el resultado del ejemplo de @LaTeX{} que acabamos de @@ -167,7 +167,7 @@ c'4 f16 Los ejemplos grandes se pueden grabar en archivos separados e introducirse con @code{\lilypondfile}. -@lilypondfile[quote,noindent]{screech-boink.ly} +@lilypondfile[quote,noindent]{screech-and-boink.ly} Si se requiere un campo @code{tagline}, ya sea predeterminado o personalizado, entonces el fragmento completo se debe incluir dentro @@ -216,27 +216,45 @@ Consulte @emph{The Not So Short Introduction to @LaTeX{}}} (Introducción no tan breve a @LaTeX{}) para ver una panorámica sobre cómo usar @LaTeX{}. -La música se introduce usando +@code{lilypond-book} aporta las instrucciones y entornos siguientes +para incluir música dentro de archivos de @LaTeX{}: + +@itemize + +@item +la instrucción @code{\lilypond@{...@}}, donde podemos escribir directamente fragmentos cortos de código de LilyPond + +@item +el entorno @code{\begin@{lilypond@}...\end@{lilypond@}}, donde podemos +introducir directamente bloques más largos de código de LilyPond + +@item +la instrucción @code{\lilypondfile@{...@}} para insertar un archivo de LilyPond + +@item +la instrucción @code{\musicxmlfile@{...@}} para insertar un archivo de +MusicXML, que se procesa por parte de @code{musicxml2ly} y +@code{lilypond}. + +@end itemize + +En el archivo de entrada, se especifica la música con cualquiera de +las instrucciones siguientes: @example \begin@{lilypond@}[las,opciones,van,aquí] EL CÓDIGO DE LILYPOND \end@{lilypond@} -@end example -@noindent -o bien +\lilypond[las,opciones,van,aquí]@{ EL CÓDIGO DE LILYPOND @} -@example \lilypondfile[las,opciones,van,aquí]@{@var{archivo}@} + +\musicxmlfile[las,opciones,van,aquí]@{@var{archivo}@} @end example -@noindent -o bien -@example -\lilypond[las,opciones,van,aquí]@{ EL CÓDIGO DE LILYPOND @} -@end example +@noindent De forma adicional, @code{\lilypondversion} imprime la versión actual de lilypond. @@ -417,27 +435,43 @@ Texinfo es el formato estándar para la documentación del proyecto GNU. Este mismo manual es un ejemplo de documento Texinfo. Las versiones HTML, PDF e Info del manual se hacen a partir del documento Texinfo. +@code{lilypond-book} aporta las siguientes instrucciones y entornos +para incluir música dentro de archivos de Texinfo: + +@itemize + +@item +la instrucción @code{@@lilypond@{...@}}, donde podemos introducir +directamente fragmentos cortos de código de LilyPond + +@item +el entorno @code{@@lilypond...@@end lilypond}, donde podemos escribir +directamente bloques más extensos de código de LilyPond -En el archivo de entrada, la música se especifica con +@item +la instrucción @code{@@lilypondfile@{...@}} para insertar un archivo +de LilyPond + +@item +la instrucción @code{@@musicxmlfile@{...@}} para insertar un archivo +de MusicXML, que se procesa después por parte de @code{musicxml2ly} y +de @code{lilypond}. + +@end itemize + +En el archivo de entrada, la música se especifica con cualquiera de +las instrucciones siguientes: @example @@lilypond[las,opciones,van,aquí] EL CÓDIGO DE LILYPOND @@end lilypond -@end example -@noindent -o bien - -@example @@lilypond[las,opciones,van,aquí]@{ EL CÓDIGO DE LILYPOND @} -@end example -@noindent -o bien - -@example @@lilypondfile[las,opciones,van,aquí]@{@var{archivo}@} + +@@musicxmlfile[las,opciones,van,aquí]@{@var{archivo}@} @end example De forma adicional, @code{@@lilypondversion} imprime la versión actual @@ -476,7 +510,7 @@ produce @lilypond[fragment,staffsize=11]{} -No como @LaTeX{}, @code{@@lilypond@{...@}} no genera una imagen en +A diferencia de @LaTeX{}, @code{@@lilypond@{...@}} no genera una imagen en línea. Siempre consiste en un párrafo para ella sola. @@ -484,8 +518,46 @@ línea. Siempre consiste en un párrafo para ella sola. @subsection HTML @translationof HTML -La música se introduce usando +@code{lilypond-book} aporta las siguientes instrucciones y entornos +para incluir música dentro de archivos HTML: + +@itemize + +@item +la instrucción @code{}, donde podemos introducir +directamente fragmentos cortos de código de LilyPond + +@item +el entorno @code{...}, donde podemos escribir +directamente bloques más extensos de código de LilyPond + +@item +la instrucción @code{...} para insertar +un archivo de LilyPond + +@item +la instrucción @code{...} para insertar +un archivo de MusicXML, que se procesa después por parte de +@code{musicxml2ly} y de @code{lilypond}. + +@end itemize + +En el archivo de entrada, la música se especifica con cualquiera de +las instrucciones siguientes: + +@example + + EL CÓDIGO DE LILYPOND + + + + +@var{archivo} +@var{archivo} +@end example + +Por ejemplo, podemos escribr @example \key c \minor c4 es g2 @@ -514,6 +586,10 @@ Para incluir archivos externos, escriba @var{archivo} @end example +@code{} usa la misma sintaxis que @code{}, +pero sencillamente referencia un archivo de MusicXML en lugar de un +archivo de LilyPond. + Para ver una lista de las opciones que utilizar con las etiquetas @code{lilypond} o @code{lilypondfile}, véase @ref{Opciones de fragmentos de música}. @@ -623,11 +699,9 @@ puntos. @item ragged-right Producir líneas no justificadas por la derecha y con espaciado natural, es decir, se añade @code{ragged-right = ##t} al fragmento de -LilyPond. Esta es la opción predeterminada para la instrucción -@code{\lilypond@{@}} si no está presente la opción @code{line-width}. -También es la opción predeterminada para el entorno @code{lilypond} si -está establecida la opción @code{fragment}, y no se especifica la -anchura de la línea explícitamente. +LilyPond. Los fragmentos de una sola línea siempre se tipografían de +forma predeterminada sin justificación por la derecha, a no ser que se +use explícitamente la opción @code{noragged-right}. @item noragged-right Para fragmentos de una sola línea, permitir que la longitud del @@ -745,7 +819,7 @@ el modo relativo, pero la cita preformateada no presentará el bloque @end example @noindent -se imprimirá como un bloque preformateado como +se imprime como un bloque preformateado como @example c4 e2 g4 @@ -766,12 +840,12 @@ mensajes @file{.mo} con @code{lilypond-doc} como dominio. @item texidoc (Sólo para la salida de Texinfo.) Si se llama a @command{lilypond} con la opción @option{--header=@/texidoc}, y el archivo que se procesa -se llama @file{fulanito.ly}, crea un archivo -@file{fulanito.texidoc} si existe un campo @code{texidoc} dentro del -bloque @code{\header} de cabecera. La opción @code{texidoc} hace que -@command{lilypond-book} incluya estos archivos, añadiendo su contenido -como un bloque de documentación inmediatamente antes del fragmento -musical. +se llama @file{fulanito.ly}, crea un archivo @file{fulanito.texidoc} +si existe un campo @code{texidoc} dentro del bloque @code{\header} de +cabecera. La opción @code{texidoc} hace que @command{lilypond-book} +incluya estos archivos, añadiendo su contenido como un bloque de +documentación inmediatamente antes del fragmento musical (pero fuera +del entorno @code{example} generado por la opción @code{quote}). Suponiendo que el archivo @file{fulanito.ly} contiene @@ -810,14 +884,6 @@ contiene @code{@@documentlanguage @var{LANG}} y la cabecera de @file{loquesea.texidoc@var{LANG}} en lugar de @file{loquesea.texidoc}. -@item lilyquote -(Sólo para la salida de Texinfo.) Esta opción es similar a quote, -pero se pone dentro del bloque de cita solamente el fragmento de -música (y el bloque preformateado que se da en la opción -@code{verbatim}). Esta opción es útil si queremos citar -(@code{quote}) el fragmento musical pero no el bloque de documentación -@code{texidoc}. - @item doctitle (Sólo para la salida de Texinfo.) Esta opción funciona de forma parecida a la opción @code{texidoc}: si @command{lilypond} se llama @@ -868,7 +934,7 @@ sencilla y es la que se recomienda@footnote{Observe que PDF@LaTeX{} y @LaTeX{}, y es por lo que explicamos las dos formas.}, y cualquiera que sea el método que utilice, podrá convertir fácilmente entre PostScript y PDF con herramientas como @command{ps2pdf} y -@command{pdf2ps} que vienen incluidas con GhostScript. +@command{pdf2ps} que vienen incluidas con Ghostscript. Para producir un archivo PDF por medio de PDF@LaTeX{}, utilice @@ -900,7 +966,20 @@ aparecerán en los archivos @file{.ps} y @file{.pdf}. La ejecución de @command{dvips} puede dar como resultado algunas advertencias sobre las fuentes tipográficas; son inocuas y se pueden ignorar. Si está ejecutando @command{latex} en modo de dos columnas, -recuerde añadir @code{-t landscape} a las opciones de @command{dvips}. +recuerde añadir @option{-t landscape} a las opciones de @command{dvips}. + +@knownissues +La instrucción @code{\pageBreak} no funciona dentro de un entorno +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}}. + +Muchas variables del bloque @code{\paper} tampoco funcionan dentro de +un entorno @code{\begin@{lilypond@} @dots{} \end@{lilypond@}}. Use +@code{\newcommand} con @code{\betweenLilyPondSystem} en el preámbulo: + +@example +\newcommand@{\betweenLilyPondSystem@}[1]@{\vspace@{36mm@}\linebreak@} +@end example + @subsubheading Texinfo @@ -959,7 +1038,16 @@ Añadir @var{directorio} a la ruta de inclusión. la ruta de inclusión, y no los vuelve a escribir en el directorio de salida, así que en ciertos casos es necesario invocar instrucciones de procesado posteriores como @command{makeinfo} o @command{latex} con -las mismas opciones @code{-I @var{directorio}}. +las mismas opciones @option{-I @var{directorio}}. + +@item -l @var{nivel_de_registro} +@itemx --loglevel=@var{nivel_de_registro} +Fijar el nivel en que la salida es prolija, al valor +@var{nivel_de_registro}. Los valores posibles son @code{NONE} (nada), +@code{ERROR} (errores), @code{WARNING} (advertencias), @code{PROGRESS} +(avance; predeterminado) y @code{DEBUG} (depuración). Si esta opción +no se utiliza, y la variable de entorno @code{LILYPOND_BOOK_LOGLEVEL} +está establecida, se usa su valor como el nivel de registro. @item -o @var{directorio} @itemx --output=@var{directorio} @@ -987,10 +1075,22 @@ imágenes. @itemx --lily-output-dir=@var{directorio} Escribir archivos lily-XXX en el directorio @var{directorio}, enlazar -en el directorio de @code{--output}. Use esta opción para ahorrar +en el directorio de @option{--output}. Use esta opción para ahorrar tiempo de construcción para documentos de distintos directorios que comparten muchos fragmentos idénticos de código. +@itemx --lily-loglevel=@var{nivel_de_registro} +Fijar el nivel en que la salida es prolija para las llamadas de la +instrucción invocada @command{lilypond}, al valor +@var{nivel_de_registro}. Los valores posibles son @code{NONE} (nada), +@code{ERROR} (errores), @code{WARNING} (advertencias), +@code{BASIC_PROGRESS} (avance básico), @code{PROGRESS} (avance), +@code{INFO} (información; predeterminado) y @code{DEBUG} +(depuración). Si no se utiliza esta opción y la variable de entorno +@code{LILYPOND_LOGLEVEL} está establecida, su valor se usa como nivel +de registro. + + @itemx --info-images-dir=@var{directorio} Dar formato a la salida de Texinfo de manera que Info busque las imágenes de música en @var{directorio}. @@ -1012,26 +1112,30 @@ margen izquierdo, como los números de compás y el nombre del instrumento. Esta opción acorta todas las líneas y las mueve a la derecha en la misma medida. - @item -P @var{instrucción} @itemx --process=@var{instrucción} Procesar los fragmentos de LilyPond utilizando @var{instrucción}. La instrucción predeterminada es @code{lilypond}. @code{lilypond-book} -no obedecerá a @code{--filter} y a @code{--process} al mismo tiempo. +no obedecerá a @option{--filter} y a @option{--process} al mismo tiempo. @item --pdf Crear archivos PDF para su uso con PDF@LaTeX{}. +@item --redirect-lilypond-output +De forma predeterminada, la salida se imprime por la consola. Esta +opción redirecciona toda la salida hacia archivos de registro situados +en el mismo directorio que los archivos fuente. + @itemx --use-source-file-names Escribir los archivos de salida de los fragmentos de música con el mismo nombre de base que su archivo fuente. Esta opción sólo funciona para fragmentos incluidos con @code{lilypondfile} y sólo si los -directorios determinados por las opciones @code{--output-dir} y -@code{--lily-output-dir} son distintos. +directorios determinados por las opciones @option{--output-dir} y +@option{--lily-output-dir} son distintos. @item -V @itemx --verbose -Ser prolijo. +Ser prolijo. Equivale a @code{--loglevel=DEBUG}. @item -v @itemx --version @@ -1079,11 +1183,12 @@ salida basándose en la extensión del nombre del archivo de entrada. Si usa la misma extensión para el archivo de entrada que la que usa @command{lilypond-book} para el archivo de salida, y si el archivo de entrada está en el mismo directorio que el directorio de trabajo de -@command{lilypond-book}, debe usar la opción @code{--output} para que +@command{lilypond-book}, debe usar la opción @option{--output} para que funcione @command{lilypond-book}, pues en caso contrario saldrá con un mensaje de error como @qq{La salida sobreescribirá al archivo de entrada}. + @node Plantillas de lilypond-book @section Plantillas de lilypond-book @translationof lilypond-book templates diff --git a/Documentation/es/usage/running.itely b/Documentation/es/usage/running.itely index 8684fe7e56..9a64f4259c 100644 --- a/Documentation/es/usage/running.itely +++ b/Documentation/es/usage/running.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: cff226053d927e433473697fe743bdfd721d2607 + Translation of GIT committish: 2936a7a6c5bca895dfd5725ab2422ad1c6b3ff11 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" +@c \version "2.16.0" @node Ejecutar LilyPond @@ -59,7 +59,8 @@ documentos sobre este tema si no le resulta familiar la línea de @menu * Invocar a LilyPond:: -* Opciones de la línea de órdenes para lilypond:: +* Opciones básicas de la línea de órdenes para LilyPond:: +* Opciones avanzadas de línea de órdenes para LilyPond:: * Variables de entorno:: * LilyPond en una jaula de chroot:: @end menu @@ -127,9 +128,10 @@ Consulte la documentación de su shell para ver si contempla estas opciones, o si la sintaxis es distinta. Observe que son instrucciones del shell y que no tienen nada que ver con lilypond. -@node Opciones de la línea de órdenes para lilypond -@unnumberedsubsec Opciones de la línea de órdenes para @command{lilypond} -@translationof Command line options for lilypond + +@node Opciones básicas de la línea de órdenes para LilyPond +@unnumberedsubsec Opciones básicas de la línea de órdenes para LilyPond +@translationof Basic command line options for LilyPond @cindex invocación de @command{lilypond} @cindex opciones de la línea de órdenes para @command{lilypond} @@ -140,9 +142,15 @@ Están contempladas las siguientes opciones: @table @code +@item -d,--define-default=@var{variable}=@var{valor} +Véase @ref{Opciones avanzadas de línea de órdenes para LilyPond}. + +@cindex Scheme, evaluación de expresiones +@cindex expresiones de Scheme, evaluación + @item -e,--evaluate=@var{expresión} Evaluar la @var{expresión} de Scheme antes de analizar los archivos -@file{.ly}. Se pueden pasar varias opciones @code{-e}, que se +@file{.ly}. Se pueden pasar varias opciones @option{-e}, que se evaluarán en secuencia. La expresión se evaluará en el módulo @code{guile-user}, de manera que @@ -162,163 +170,16 @@ en la línea de órdenes, e incluir @noindent al principio del archivo @file{.ly}. -@item -f,--format=@var{formato} -Formato de la salida. Como @code{formato} se puede elegir entre -@code{ps}, @code{pdf} y @code{png}. - -Ejemplo: @code{lilypond -fpng @var{archivo}.ly} - -@item -d,--define-default=@var{variable}=@var{valor} -Establece la opción interna del programa @var{variable} al valor de -Scheme @var{valor}. Si no se proporciona ningún @var{valor}, se usa -@var{#t}. Para desactivar una opción se puede anteponer @code{no-} a -la @var{variable}, p.ej.: - -@cindex apuntar y pulsar, línea de órdenes - -@example --dno-point-and-click -@end example - -@noindent -es lo mismo que -@example --dpoint-and-click='#f' -@end example - -A continuación veremos algunas opciones interesantes. - -@cindex help (ayuda), línea de órdenes - -@table @samp -@item help -La ejecución de @code{lilypond -dhelp} imprimirá todas las opciones -@code{-d} que están disponibles. - -@cindex paper-size, línea de órdenes - -@item paper-size -Esta opción establece el tamaño predeterminado del papel, -@example --dpaper-size=\"letter\" -@end example - -@noindent -Observe que la cadena se debe incluir dentro de comillas escapadas -( @code{\"} ). - -@c Match " in previous line to help context-sensitive editors - -@cindex safe, línea de órdenes - -@item safe -No confiar en la entrada @file{.ly}. - -Cuando el proceso de tipografía de LilyPond se encuentra disponible a -través de un servidor web, @b{SE DEBEN} pasar las opciones -@code{--safe} (seguro) o @code{--jail} (jaula). La opción -@code{--safe} evita que el código de Scheme en línea arme un desastre, -por ejemplo - -@quotation -@verbatim -#(system "rm -rf /") -{ - c4^#(ly:export (ly:gulp-file "/etc/passwd")) -} -@end verbatim -@end quotation - -La opción @code{-dsafe} funciona evaluando las expresiones en línea de -Scheme dentro de un módulo especial seguro. Este módulo seguro deriva -del módulo GUILE @file{safe-r5rs}, pero añade ciertas funciones del -API de LilyPond. Estas funciones se relacionan en -@file{scm/safe-lily.scm}. - -Además, el modo seguro prohíbe las directivas @code{\include} e -inhabilita el uso de barras invertidas en las cadenas de @TeX{}. - -En el modo seguro, no es posible la importación de variables de -LilyPond dentro de Scheme. - -@code{-dsafe} @emph{no} detecta la sobreutilización de recursos. Aún -es posible hacer que el programa se cuelgue indefinidamente, por -ejemplo alimentando el backend con estructuras de datos cíclicas. Por -tanto, si se está utilizando LilyPond sobre un servidor web accesible -públicamente, el proceso debe limitarse tanto en el uso de CPU como de -memoria. - -El modo seguro impide que muchos fragmentos útiles de código de -LilyPond se puedan compilar. La opción @code{--jail} es una -alternativa más segura, pero su preparación requiere más trabajo. - -@cindex salida, establecer el formato de -@item backend -el formato de salida que usar para el back-end o extremo final. -Para el @code{formato} se puede elegir entre -@table @code -@item ps -@cindex PostScript, salida -para PostScript. - -Los archivos PostScript incluyen las tipografías TTF, Type1 y OTF. No -se seleccionan subconjuntos de estas tipografías. Cuando se usan -conjuntos de caracteres orientales, esto puede dar lugar a archivos -enormes. - -@item eps - para obtener PostScript encapsulado. Esto vuelca cada una de las -páginas/sistemas como un archivo @file{EPS} distinto, sin tipografías, -y como un solo archivo @file{EPS} encuadernado con todas las -páginas/sistemas con las tipografías incluidas. - -Este modo se usa de forma predeterminada por parte de -@command{lilypond-book}. - -@item svg - -@cindex SVG (Gráficos vectoriales escalables) - - para obtener SVG (gráficos vectoriales escalables). +@warning{Los usuarios de Windows deben utilizar comillas dobles en lugar de apóstrofos simples.} -Crea un único archivo SVG que contiene toda la salida de música, con -las tipografías incrustadas. Se necesita un visor de SVG que -contemple las tipografías incrustadas, o un visor de SVG que pueda -sustituir las tipografías incrustadas por tipografías OTF. Bajo UNIX, -puede usar @uref{http://www.inkscape.org,Inkscape} (versión 0.42 o -posterior), después de copiar las tipografías OTF del directorio de -LilyPond (que normalmente es -@file{/usr/share/lilypond/VERSIÓN/fonts/otf/}) al directorio -@file{~/.fonts/}. - -@item scm - -@cindex Scheme, volcado de - - para obtener un volcado de las instrucciones internas de dibujo -basadas en Scheme, en bruto. - -@item null - no producir una salida impresa; tiene el mismo efecto que @code{-dno-print-pages}. -@end table - -Ejemplo: @code{lilypond -dbackend=svg @var{archivo}.ly} - -@item preview -@cindex vista previa, línea de órdenes -Generar un archivo de salida que contenga solamente los títulos de -cabecera y el primer sistema de música. Si se usan bloques -@code{\bookpart}, los títulos y el primer sistema de todos los bloques -@code{\bookpart} aparecerán en la salida. Los motores @code{ps}, -@code{eps} y @code{svg} contemplan esta opción. - -@item print-pages -Generar las páginas completas, el ajuste predeterminado. -@code{-dno-print-pages} es útil en combinación con @code{-dpreview}. - -@end table +@cindex output, format +@cindex format, output +@item -f,--format=@var{format} +which formats should be written. Choices for @code{format} are +@code{ps}, @code{pdf}, and @code{png}. +Example: @code{lilypond -fpng @var{filename}.ly} @item -h,--help Mostrar un resumen de las formas de utilización. @@ -326,9 +187,14 @@ Mostrar un resumen de las formas de utilización. @item -H,--header=@var{CAMPO} Volcar un campo de cabecera al archivo @file{NOMBREBASE.@var{CAMPO}} +@item -i,--init=@var{archivo} +Establecer el archivo de inicio a @var{archivo} (predeterminado: +@file{init.ly}). + @cindex archivos, búsqueda de @cindex búsqueda, ruta de -@item --include, -I=@var{directorio} + +@item -I, --include=@var{directorio} Añadir el @var{directorio} a la ruta de búsqueda de archivos de entrada. @@ -336,62 +202,35 @@ Se pueden escribir varias opciones -I. La búsqueda se inicia en el primer directorio definido, y si el archivo que se debe incluir no se encuentra, la búsqueda continúa en los directorios siguientes. -@item -i,--init=@var{archivo} -Establecer el archivo de inicio a @var{archivo} (predeterminado: -@file{init.ly}). - -@cindex carpeta, dirigir la salida hacia -@cindex salida, establecer el nombre del archivo de - -@item -o,--output=@var{ARCHIVO} o @var{CARPETA} -Establecer el nombre del archivo de salida predeterminado a -@var{ARCHIVO} o, si existe una carpeta con ese nombre, dirigir la -salida hacia @var{CARPETA}, tomando el nombre de archivo del documento -de entrada. Se añade el sufijo correspondiente (por ejemplo, -@code{.pdf} para PDF) en los dos casos. - -@item --ps -Generar PostScript. - -@item --png -Generar imágenes de las páginas en formato PNG. Esto implica -@code{--ps}. La resolución en PPP de la imagen se puede establecer -con -@example --dresolution=110 -@end example - -@cindex PDF (formato de documento portátil), salida de - -@item --pdf -Generar PDF. Implica @code{--ps}. - - +@cindex chroot, ejecutar dentro de una jaula @item -j,--jail=@var{usuario},@var{grupo},@var{jaula},@var{directorio} Ejecutar @command{lilypond} en una jaula de chroot. -La opción @code{--jail} (jaula) proporciona una alternativa más -flexible a la opción @code{--safe} cuando el proceso de tipografía de +La opción @option{--jail} (jaula) proporciona una alternativa más +flexible a la opción @option{-dsafe} cuando el proceso de tipografía de LilyPond está disponible a través de un servidor web o cuando LilyPond -ejecuta archivos fuente procedentes del exterior. +ejecuta instrucciones enviadas por fuentes externas +(véase @ref{Opciones avanzadas de línea de órdenes para LilyPond}). -La opción @code{--jail} funciona cambiando la raíz de +La opción @option{--jail} funciona cambiando la raíz de @command{lilypond} a @var{jaula} justo antes de comenzar el proceso de compilación en sí. Entonces se cambian el usuario y el grupo a los que se han dado en la opción, y el directorio actual se cambia a @var{directorio}. Esta instalación garantiza que no es posible, al menos en teoría, escapar de la jaula. Observe que para que funcione -@code{--jail} se debe ejecutar @command{lilypond} como root, lo que +@option{--jail}, se debe ejecutar @command{lilypond} como root, lo que normalmente se puede hacer de una forma segura utilizando @command{sudo}. -La instalación de una jaula es un asunto algo delicado, pues debemos -asegurarnos de que LilyPond puede encontrar @emph{dentro de la jaula} -todo lo que necesita para poder compilar la fuente. Una configuración -típica consta de los siguientes elementos: +La instalación de una jaula puede ser un asunto relativamente +complejo, pues debemos asegurarnos de que LilyPond puede encontrar +@emph{dentro} de la propia jaula todo lo que necesita para poder +compilar la fuente. Una típica configuración de jaula de chroot +consta de los siguientes elementos: @table @asis + @item Preparar un sistema de archivos separado Se debe crear un sistema de archivos separado para LilyPond, de forma que se pueda montar con opciones seguras como @code{noexec}, @@ -423,14 +262,84 @@ archivos faltan. @item Ejecutar LilyPond Dentro de una jaula montada con @code{noexec} es imposible ejecutar ningún programa externo. Por tanto, LilyPond se debe ejecutar con un -backend que no necesite tal programa. Como ya mencionamos, también se +backend que no necesite tal programa. Como ya hemos mencionado, se debe ejecutar con privilegios del superusuario (que por supuesto -perderá inmediatamente), posiblemente usando @command{sudo}. Es buena -idea limitar el número de segundos de tiempo de CPU que LilyPond puede -usar (p.ej., usando @command{ulimit -t}), y, si su sistema operativo -lo contempla, el tamaño de la memoria que se puede reservar. +perderá inmediatamente), posiblemente usando @command{sudo}. También +es una práctica recomendable limitar el número de segundos de tiempo +de CPU que LilyPond puede usar (p.ej., usando +@command{ulimit@tie{}-t}), y, si su sistema operativo lo contempla, el +tamaño de la memoria que se puede reservar. Véase también +@ref{LilyPond en una jaula de chroot}. + +@end table + +@cindex loglevel +@cindex registro, nivel de +@cindex salida prolija, fijar el nivel + +@item -l,--loglevel=@var{LEVEL} +Fijar el grado en que la salida de consola es prolija al nivel +@var{LEVEL}. Los valores posibles son: + +@table @code + +@item NONE +Ninguna salida en absoluto, ni siquiera mensajes de error. + +@item ERROR +Solamente mensajes de error, no advertencias o indicaciones de progreso. + +@item WARN +Advertencias y mensajes de error, no de progreso. + +@item BASIC_PROGRESS +Mensajes de progreso básicos (éxito), advertencias y errores. + +@item PROGRESS +Todos los mensajes de progreso, advertencias y errores. + +@item INFO (predeterminado) +Mensajes de progreso, advertencias, errores e información de ejecución +adicional. + +@item DEBUG +Todos los mensajes posibles, incuida la información de depuración +prolija. @end table +@cindex carpeta, dirigir la salida hacia +@cindex salida, establecer el nombre del archivo de + +@item -o,--output=@var{ARCHIVO} o @var{CARPETA} +Establecer el nombre del archivo de salida predeterminado a +@var{ARCHIVO} o, si existe una carpeta con ese nombre, dirigir la +salida hacia @var{CARPETA}, tomando el nombre de archivo del documento +de entrada. Se añade el sufijo correspondiente (por ejemplo, +@code{.pdf} para PDF) en los dos casos. + +@cindex PS (Postscript), salida +@cindex Postscript (PS), salida +@cindex salida, PS (Postscript) + +@item --ps +Generar PostScript. + +@cindex PNG (Portable Network Graphics), salida +@cindex salida, PNG (Portable Network Graphics) + +@item --png +Generar imágenes de las páginas en formato PNG. Esto implica +@option{--ps}. La resolución en PPP de la imagen se puede establecer +con +@example +-dresolution=110 +@end example + +@cindex PDF (formato de documento portátil), salida de +@cindex salida, PDF (formato de documento portátil) + +@item --pdf +Generar PDF. Implica @option{--ps}. @item -v,--version Mostrar la información de la versión. @@ -442,13 +351,392 @@ leen, y dar información cronométrica. @item -w,--warranty Mostrar la garantía con que viene GNU LilyPond (¡no viene con @strong{NINGUNA GARANTÍA}!). + @end table + +@node Opciones avanzadas de línea de órdenes para LilyPond +@unnumberedsubsec Opciones avanzadas de línea de órdenes para LilyPond +@translationof Advanced command line options for LilyPond + +@table @code + +@item -d@var{[option-name]}=@var{[value]},--define-default=@var{[option-name]}=@var{[value]} +Establece la función de Scheme interna equivalente a @var{valor}. Si +no se proporciona ningún @var{valor}, se usa el valor predeterminado. +Para desactivar una opción se puede anteponer @code{no-} a la +@var{variable}, p.ej.: + +@cindex point and click, command line + +@example +-dno-point-and-click +@end example + +@noindent +is the same as +@example +-dpoint-and-click=#f +@end example +@end table + +@noindent Están contempladas las siguientes opciones junto a sus respectivos +valores predeterminados: + +@multitable @columnfractions .33 .16 .51 +@item @strong{Símbolo} +@tab @strong{Valor} +@tab @strong{Explicación/Opciones} + +@item @code{anti-alias-factor} (factor de antialias) +@tab @code{1} +@tab Renderizar a mayor resolución (utilizando el factor dado) y reducir la +escala del resultado para así evitar @q{escaleras} en las imágenes +@code{PNG}. + +@item @code{aux-files} (archivos auxiliares) +@tab @code{#t} +@tab Crear archivos @code{.tex}, @code{.texi}, @code{.count} en el +@q{back-end} @code{EPS}. + +@item @code{backend} +@tab @code{'ps} +@tab Seleccionar un @q{back-end}. Los archivos (la opción predeterminada) +incluyen las fuentes tipográficas @code{TTF}, @code{Type1} y +@code{OTF}. No se hace ningún subconjunto de estas fuentes. El uso +de conjuntos de caracteres @q{orientales} puede dar lugar a archivos +muy grandes. + +@item +@tab @code{'eps} +@tab PostScript encapsulado. Vuelca cada página o sistema como un archivo +@file{EPS} distinto, sin fuentes tipográficas, y como un archivo +@file{EPS} encuadernado con todas las páginas o sistemas que incluye +las fuentes. Utilizado como opción predeterminada por parte de +@command{lilypond-book}. + +@item +@tab @code{'null} +@tab No producir ninguna partitura impresa a la salida; tiene el mismo +efecto que @code{-dno-print-pages}. + +@item +@tab @code{'svg} +@tab Grácifos vectoriales escalables. Crea un solo archivo @code{SVG}, sin +fuentes tipográficas incrustadas, por cada página de salida. Se +recomienda instalar las fuentes Century Schoolbook, incluidas con la +instalación de LilyPond, para un renderizado óptimo. Bajo UNIX, +bastará con que copie estaos archivos de fuente del directorio de +LilyPond (normalmente @file{/usr/share/lilypond/VERSION/fonts/otf/}) +al directorio @file{~/.fonts/}. La salida @code{SVG} debería ser +compatible con cualquier editor o cliente de SVG. También hay una +opción @code{svg-woff} (véase más abajo) para usar los archivos de +fuente woff en el @q{back-end} SVG. + +@item +@tab @code{'scm} +@tab Volcado de las instrucciones de dibujo internas basadas en Scheme, en +bruto. + +@item @code{check-internal-types} +@tab @code{#f} +@tab Comprobar el tipo de cada asignación de propiedades. + +@item @code{clip-systems} (recortar los sistemas) +@tab @code{#f} +@tab Generar fragmentos de imagen recortados de una partitura. + +@item @code{datadir} (directorio de datos) +@tab +@tab Prefijo de los archivos de datos (sólo lectura). + +@item @code{debug-gc} +@tab @code{#f} +@tab Volcar estadísticas de depuración de memoria. + +@item @code{debug-gc-assert-parsed-dead} +@tab @code{#f} +@tab Para la depuración de memoria: asegurarse de que todas las referencias +a objetos analizados están muertas. Es una opción interna, y se +activa automáticamente para @code{`-ddebug-gc'}. + +@item @code{debug-lexer} +@tab @code{#f} +@tab Depuración del analizador léxico flex. + +@item @code{debug-page-breaking-scoring} +@tab @code{#f} +@tab Volcar las partituras para muchas configuraciones de saltos de página +diferentes. + +@item @code{debug-parser} +@tab @code{#f} +@tab Depuración del analizador sintáctico bison. + +@item @code{debug-property-callbacks} +@tab @code{#f} +@tab Depuración de las cadenas cíclicas de funciones de callback. + +@item @code{debug-skylines} +@tab @code{#f} +@tab Depuración de las líneas de horizonte. + +@item @code{delete-intermediate-files} +@tab @code{#t} +@tab Eliminar los archivos intermedios @code{.ps} inútiles ques e crean +durante la compilación. + +@item @code{dump-cpu-profile} +@tab @code{#f} +@tab Volcar información de cuenta de tiempo (dependiente del sistema). + +@item @code{dump-profile} +@tab @code{#f} +@tab Volcar de la información de memoria y de tiempo para cada archivo. + +@item @code{dump-signatures} +@tab @code{#f} +@tab Volcar las firmas de salida de cada sistema. Usado para las pruebas +de regresión. + +@item @code{eps-box-padding} +@tab @code{#f} +@tab Rellenar el borde izquierdo de la caja contenedora del EPS de salida +en la cantidad dada (en mm). + +@item @code{gs-load-fonts} +@tab @code{#f} +@tab Cargar las fuentes tipográficas a través de Ghostscript. + +@item @code{gs-load-lily-fonts} +@tab @code{#f} +@tab Cargar sólo las fuentes de LilyPond por medio de Ghostscript. + +@item @code{gui} +@tab @code{#f} +@tab Se ejecuta silenciosamente y se redirige toda la salida a un archivo +de registro. +@end multitable + +@noindent +@strong{Nota para los usuarios de Windows:} De manera predeterminada, +@code{lilypond.exe} dirige toda la salida de la información de avance +hacia la ventana de consola, @code{lilypond-windows.exe} no lo hace y +devuelve un indicador del sistema, sin ninguna indicación del avance, +inmediatamente en la línea de órdenes. La opción @option{-dgui} se +puede usar en este caso para redirigir la salida a un archivo de +registro. + +@multitable @columnfractions .33 .16 .51 +@item @code{help} +@tab @code{#f} +@tab Mostrar esta ayuda. + +@item @code{include-book-title-preview} +@tab @code{#t} +@tab Incluir los títulos de libro en las imágenes de vista previa. + +@item @code{include-eps-fonts} +@tab @code{#t} +@tab Incluir las fuentes tipográficas en los archivos EPS de cada uno de +los sistemas. + +@item @code{include-settings} +@tab @code{#f} +@tab Incluir el archivo de los ajustes globales, se incluye antes de que la +partitura se procese. + +@item @code{job-count} +@tab @code{#f} +@tab Procesar en paralelo, usando el número de tareas dado. + +@item @code{log-file} +@tab @code{#f [file]} +@tab Si se da una cadena @code{NOMBRE} como segundo argumento, +redirigir la salida al archivo de registro @code{NOMBRE.log}. + +@item @code{max-markup-depth} +@tab @code{1024} +@tab Profundidad máxima del árbol de marcado. Si un marcado tiene más niveles, +suponer que no terminará por sí mismo, imprimiento una advertencia y +devolviendo en su lugar un elemento de marcado nulo. + +@item @code{midi-extension} +@tab @code{"midi"} +@tab Fijar la extensión de archivo predeterminada para el archivo de salida +MIDI a la cadena dada. + +@item @code{music-strings-to-paths} +@tab @code{#f} +@tab Convertir las cadenas de texto a rutas cuando los glifos pertenecen a +una fuente de tipografía musical. + +@item @code{old-relative} +@tab @code{#f} +@tab Hacer que el modo @code{\relative} para la música simultánea funcione +de manera similar a la sintaxis de los acordes. + +@item @code{paper-size} +@tab @code{\"a4\"} +@tab Establecer el tamaño predeterminado del papel. Observe que la cadena +debe ir encerrada entre comillas dobles. + +@item @code{pixmap-format} +@tab @code{png16m} +@tab Fijar el formato de salida de Ghostscript para las imágenes de píxeles. + +@item @code{point-and-click} +@tab @code{#f} +@tab Añadir enlaces de @q{apuntar y pulsar} a la salida @code{PDF}. Véase +@ref{Apuntar y pulsar}. + +@item @code{preview} +@tab @code{#f} +@tab Crear imágenes de vista previa además de la salida normal. +@end multitable + +@noindent +Esta opción está contemplada por todos los @q{back-ends}: @code{pdf}, +@code{png}, @code{ps}, @code{eps} y @code{svg}, pero no por +@code{scm}. Genera un archivo de salida, en la forma +@code{miArchivo.preview.extensión}, que contiene los títulos y el +primer sistema de la música. Si se están utilizando bloques +@code{\book} o @code{\bookpart}, aparecen en la salida los títulos de +@code{\book}, @code{\bookpart} o @code{\score}, incluido el primer +sistema de cada bloque @code{\score} si la variable de @code{\paper} +@code{print-all-headers} está fijada al valor @code{#t}. + +Para suprimir la salida usual, utilice las opciones +@option{-dprint-pages} o @option{-dno-print-pages} según sus +necesidades. + +@multitable @columnfractions .33 .16 .51 +@item @code{print-pages} +@tab @code{#t} +@tab Generar páginas completas (es la opción predeterminada). Es útil +@option{-dno-print-pages} en combinación con @option{-dpreview}. + +@item @code{profile-property-accesses} +@tab @code{#f} +@tab Conservar las estadísticas de las llamadas de función +@code{get_property()}. + +@item @code{protected-scheme-parsing} +@tab @code{#t} +@tab Continuar cuando se captan en el analizador sintáctico errores del +Scheme empotrado. Si se fija a @code{#f}, detenerse cuando haya +errores e imprimir un registro de traza de pila. + +@item @code{read-file-list} +@tab @code{#f [archivo]} +@tab Especificar el nobmre de un archivo que contiene una lista de archivos +de entrada para procesar. + +@item @code{relative-includes} +@tab @code{#f} +@tab Cuando se procesa una instrucción @code{\include} command, buscar el +archivo incluido de forma relativa al archivo actual (en lugar del +archivo principal). + +@item @code{resolution} +@tab @code{101} +@tab Fijar la resolución para generar imágenes de píxeles @code{PNG} al +valor dado (en ppp). + +@item @code{safe} +@tab @code{#f} +@tab No confiar en la entrada @code{.ly}. +@end multitable + +@noindent +Cuando el servicio de tipografía está disponible a través de un +servidor web, @b{SE DEBEN} pasar las opciones @option{--safe} o +@option{--jail}. La opción @option{--safe} evita que el código de +Scheme monte un desastre, p.ej.: + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^$(ly:gulp-file "/etc/passwd") +} +@end verbatim +@end quotation + +La opción @option{-dsafe} funciona evaluando las expresiones de Scheme +en línea dentro de un módulo seguro especial. Deriva del módulo +@file{safe-r5rs} de GUILE, pero además añade unas cuantas funciones de +la API de LIlyPond que están relacionadas en @file{scm/safe-lily.scm}. + +Además, el modo seguro prohíbe las directivas @code{\include} y +desactiva la utilización de barras invertidas en las cadenas de +@TeX{}. Asimismo, no es posible importar variables de LilyPond dentro +de Scheme cuando se está en modo seguro. + +@option{-dsafe} @emph{no} detecta la sobreutilización de recursos, por +lo que aún es posible hacer que el programa se cuelgue +indefinidamente, por ejemplo suministrando estructuras de datos +cíclicas en el backend. Por ello, si está usando LilyPond en un +servidor web accesible públicamente, el proceso se debe limitar tanto +en el uso de memoria como de CPU. + +El modo seguro evita que se puedan compilar muchos fragmentos de +código útiles. + +La opción @option{--jail} es una aliternativa más segura aún, pero +requiere más trabajo para su configuración. Véase +@ref{Opciones básicas de la línea de órdenes para LilyPond}. + +@multitable @columnfractions .33 .16 .51 +@item @code{separate-log-files} +@tab @code{#f} +@tab Para los archivos de entrada @code{ARCHIVO1.ly}, @code{ARCHIVO2.ly}, +etc. sacar los datos de registro hacia los archivos @code{ARCHIVO1.log}, +@code{ARCHIVO2.log}, ... + +@item @code{show-available-fonts} +@tab @code{#f} +@tab Listar todos los nombres de las fuentes tipográficas disponibles. + +@item @code{strict-infinity-checking} +@tab @code{#f} +@tab Forzar una terminación abrupta si se encuentran las excepciones de +punto flotante @code{Inf} y @code{NaN}. + +@item @code{strip-output-dir} +@tab @code{#t} +@tab No usar los directorios de los archivos de entrada al construir los +nombres de los archivos de salida. + +@item @code{svg-woff} +@tab @code{#f} +@tab Usar archivos de fuente tipográfica de woff en el backend SVG. + +@item @code{trace-memory-frequency} +@tab @code{#f} +@tab Registrar el uso de células de Scheme esta cantidad de veces por +segundo. Volcar los resultados en @code{ARCHIVO.stacks} y en +@code{ARCHIVO.graph}. + +@item @code{trace-scheme-coverage} +@tab @code{#f} +@tab Registrar la cobertura de los archivos de Scheme en @code{ARCHIVO.cov}. + +@item @code{verbose} +@tab @code{#f} +@tab Salida prolija, es decir el nivel de registro en DEBUG (sólo lectura). + +@item @code{warning-as-error} +@tab @code{#f} +@tab Cambiar todos los mensajes de advertencia y de @q{error de +programación} a errores. +@end multitable + + @node Variables de entorno @unnumberedsubsec Variables de entorno @translationof Environment variables - @cindex LANG @cindex LILYPOND_DATADIR @@ -463,6 +751,11 @@ etc. @item LANG Selecciona el idioma de los mensajes de advertencia. +@item LILYPOND_LOGLEVEL +Nivel de registro predeterminado. Si LilyPond se llama sin ningún +nivel de registro explícito (es decir, sin opción de línea de órdenes +@option{--loglevel}), se usa este valor. + @item LILYPOND_GC_YIELD Una variable, como porcentaje, que ajusta el comportamiento de la administración de memoria. Con valores más altos, el programa usa más @@ -479,12 +772,12 @@ predeterminado es @code{70}. La preparación del servidor para que ejecute LilyPond en una jaula de chroot es una tarea muy complicada. Los pasos están relacionados más abajo. Los ejemplos que aparecen en cada uno de los pasos son válidos -para Ubuntu Linux, y pueden requerir el uso de @code{sudo} según +para Ubuntu GNU/Linux, y pueden requerir el uso de @code{sudo} según corresponda. @itemize -@item Instale los paquetes necesarios: LilyPond, GhostScript e ImageMagick. +@item Instale los paquetes necesarios: LilyPond, Ghostscript e ImageMagick. @item Cree un usuario nuevo con el nombre de @code{lily}: @@ -530,7 +823,10 @@ Puede usar @code{sed} para crear los archivos de copia necesarios para un ejecutable dado: @example -for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done +for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ + do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \ + cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \ + \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done @end example @end itemize @@ -571,7 +867,11 @@ cp -L /usr/bin/convert /usr/bin/gs usr/bin cp -L /usr/share/fonts/truetype usr/share/fonts # Ahora la magia de copiar las bibliotecas -for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done | sh -s +for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \ + "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \ + \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \ + 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \ + | sed '/.*=>.*/d'; done | sh -s # Los archivos compartidos para ghostscript... cp -L -r /usr/share/ghostscript usr/share @@ -624,7 +924,7 @@ esto. La causa más frecuente son las tipografías mal instaladas. @cindex error de Scheme Los errores que ocurren al ejecutar código de Scheme se interceptan por parte del intérprete de Scheme. Si se está ejecutando con las -opciones @code{-V} o @code{--verbose} (prolijo) entonces se imprime +opciones @option{-V} o @option{--verbose} (prolijo) entonces se imprime una traza de llamadas de la función ofensiva. @item Error de programación @@ -644,7 +944,7 @@ críticos. Si se topa con uno, envíe un informe de fallo. @cindex error, formato de los mensajes de -Se los errores y advertencias se pueden ligar a un punto del archivo +Si los errores y advertencias se pueden ligar a un punto del archivo de entrada, los mensajes tienen la forma siguiente: @example @@ -670,6 +970,7 @@ de comprobar una o dos líneas por encima de la posición indicada. Se ofrece más información sobre los errores en la sección @ref{Errores comunes}. + @node Errores comunes @section Errores comunes @translationof Common errors @@ -818,7 +1119,7 @@ general una o dos líneas por encima. Este mensaje de error aparece al final de los mensajes de la consola o del archivo de registro junto a un mensaje @qq{GUILE señaló un error -...} cada vez que se llame a una rutina de Scheme que +@dots{}} cada vez que se llame a una rutina de Scheme que (incorrectamente) contenga un comentario @emph{de LilyPond} en lugar de un comentario @emph{de Scheme}. diff --git a/Documentation/es/usage/suggestions.itely b/Documentation/es/usage/suggestions.itely index 13a84a40be..eed6a44a5c 100644 --- a/Documentation/es/usage/suggestions.itely +++ b/Documentation/es/usage/suggestions.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033 + Translation of GIT committish: 2936a7a6c5bca895dfd5725ab2422ad1c6b3ff11 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" +@c \version "2.16.0" @node Sugerencias para escribir archivos de entrada @chapter Sugerencias para escribir archivos de entrada @@ -296,10 +296,10 @@ solamente una pincelada de todo lo que es capaz de hacer. Las instrucciones que definen las reglas en un archivo de make difieren en función de la plataforma; por ejemplo, las distintas -formas de Linux y MacOS usan @code{bash}, mientras que Windows usa +formas de GNU/Linux y MacOS usan @code{bash}, mientras que Windows usa @code{cmd}. Observeque en MacOS X, tenemos que configurar el sistema para que utilice el intérprete de órdenes. A continuación presentamos -algunos makefiles de ejemplo, con versiones tanto para Linux/MacOS +algunos makefiles de ejemplo, con versiones tanto para GNU/Linux/MacOS como para Windows. El primer ejemplo es para una obra orquestal en cuatro movimientos con @@ -341,7 +341,7 @@ el directorio @code{Notas}: @example %%% principio del archivo "sinfonia-cello.ly" -\include ../definiciones.ily +\include ../definicionesSinf.ily \include ../Notas/cello.ily @end example diff --git a/Documentation/es/usage/updating.itely b/Documentation/es/usage/updating.itely index 9c06abb33e..a70e23fe3a 100644 --- a/Documentation/es/usage/updating.itely +++ b/Documentation/es/usage/updating.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033 + Translation of GIT committish: 2aeac5e3815effa47427dad86d6be811c7b0d8a2 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" +@c \version "2.16.0" @node Actualizar ficheros con convert-ly @@ -111,7 +111,7 @@ nombre, haga convert-ly miarchivo.ly > minuevoarchivo.ly @end example -El programa imprimirá una relación de los números de versión para los +El programa imprime una relación de los números de versión para los que se han hecho conversiones. Si no se imprime ningún número de versión, el archivo ya está actualizado. @@ -128,14 +128,12 @@ ventana del terminal del sistema, que se encuentra por lo general bajo @section Opciones de la línea de órdenes para @command{convert-ly} @translationof Command line options for convert-ly - En general, el programa se invoca de la manera siguiente: @example convert-ly [@var{opción}]@dots{} @var{archivo}@dots{} @end example - Se pueden dar las siguientes opciones: @table @code @@ -146,7 +144,7 @@ modificándolo in situ. @item -f,--from=@var{versión_de_origen} Establece la versión desde la que convertir. Si no aparece esta opción, @command{convert-ly} tratará de adivinarla, basándose en el -enunciado @code{\version} del archivo. Ejemplo: @code{--from=2.10.25} +enunciado @code{\version} del archivo. Ejemplo: @option{--from=2.10.25} @item -n,--no-version Normalmente @command{convert-ly} añade un indicador @code{\version} a @@ -157,10 +155,17 @@ Mostrar todas las conversiones conocidas y salir. @item --to=@var{versión_final} Fijar la versión de destino de la conversión. De forma predeterminada -se convierte a la última versión disponible. +se convierte a la última versión disponible. Ejemplo: @option{--to=2.12.2} @item -h, --help Imprimir la ayuda de la utilización. + +@item -l @var{loglevel}, --loglevel=@var{loglevel} +Fijar el grado en que la salida es prolija a @var{loglevel}. Los +valores posibles son @code{NONE} (ninguno), @code{ERROR} (errores), +@code{WARNING} (advertencias), @code{PROGRESS} (avance; +predeterminado) y @code{DEBUG} (depuración). + @end table Para actualizar fragmentos de LilyPond en archivos de texinfo, use @@ -179,7 +184,7 @@ convert-ly --from=... --to=... -s @node Problemas con convert-ly @section Problemas con @code{convert-ly} -@translationof Problems with convert-ly +@translationof Problems running convert-ly Al ejecutar convert-ly en una ventana del Símbolo del Sistema bajo Windows sobre un archivo que tiene espacios en el nombre o en la ruta, diff --git a/Documentation/es/web.texi b/Documentation/es/web.texi index 6759fdb1ad..0384d140ad 100644 --- a/Documentation/es/web.texi +++ b/Documentation/es/web.texi @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 18e1018ce7446f2cb86990c31f112f6cf05ca371 + Translation of GIT committish: a8841c7b9212700f2ebac56e0713afa78a8f0ca0 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -15,7 +15,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -35,7 +35,7 @@ @c Translators: Francisco Vila @copying -Copyright @copyright{} 2009--2011 por los autores. +Copyright @copyright{} 2009--2012 por los autores. @c next line is necessary for broken pre-4.13 texinfo's @c install-info, so leave it there until we officially @@ -156,8 +156,45 @@ LilyPond es software libre y forma parte del @end ifclear @ifset web_version @c make the box: -@divId{latestVersion} +@divId{wildCardBox} +@subheading Novedades +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html +@ifset web_version + @c make the box: +@divId{latestVersion} @subheading Enlaces rápidos @c TODO: javascript to detect OS and suggest download? @@ -222,30 +259,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (HTML seccionado)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML seccionado),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (HTML monolítico)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML monolítico),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.es.pdf, \base\.es.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.es.pdf,\base\.es.pdf,\webLink\} @end macro diff --git a/Documentation/es/web/community.itexi b/Documentation/es/web/community.itexi index 277c7b536f..119ec37c51 100644 --- a/Documentation/es/web/community.itexi +++ b/Documentation/es/web/community.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: b1eca8bedcef213d00b5ce85d0c4df8c338c2bb2 + Translation of GIT committish: 7f8a93a6c044fcbb3c7aeb3aa5cba0c921dc7691 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -42,9 +42,16 @@ de LilyPond. @item @ref{Preste su ayuda}: se solicita su colaboración. +@item +@ref{Patrocinio}: contribuciones financieras. + @item @ref{Desarrollo}: para colaboradores y pilotos de prueba. +@item +@ref{GSoC 2012}: nuestras ideas para la edición 2012 del «Google +Summer of Code» (Verano del Código de Google). + @item @ref{Autores}: las personas que han hecho a LilyPond lo que hoy es. @@ -62,6 +69,9 @@ de LilyPond. @item @ref{Noticias antiguas}: el archivo. +@item +@ref{Desván}: anuncios y registros de cambios en versiones antiguas. + @end itemize @divEnd @@ -73,10 +83,13 @@ de LilyPond. * Ejemplos mínimos:: * Informes de fallos:: * Preste su ayuda:: +* Patrocinio:: * Desarrollo:: +* GSoC 2012:: * Autores:: * Publicaciones:: * Noticias antiguas:: +* Desván:: @end menu @divEnd @@ -263,7 +276,13 @@ indicaciones para elaborar @ref{Informes de fallos}.} @divEnd +@divClass{column-right-bottom} +@subheading Correos delicados +Los asuntos privados se deben enviar a Graham Percival (gestor del +proyecto), que lo discutirá con las personas pertinentes. + +@divEnd @node Ejemplos mínimos @unnumberedsec Ejemplos mínimos @@ -272,7 +291,7 @@ indicaciones para elaborar @ref{Informes de fallos}.} @divClass{column-center-top} @subheading ¿Qué son los @qq{ejemplos mínimos}? -Un ejemplo mínimo es un ejemplo del que no se puede eliminar nada. +Un ejemplo mínimo es un ejemplo del que no se puede eliminar @strong{nada}. @divEnd @divClass{column-left-bottom} @@ -286,13 +305,13 @@ Cuanto más simple es el ejemplo, más rápidamente pueden los desarrolladores entenderlo y ayudarle. @item -Un ejemplo simple demuestra que se ha esforzado en resolver el +Un ejemplo mínimo demuestra que se ha esforzado en resolver el problema por sí mismo. Cuando alguien envía bloques grandes de código de entrada, da la impresión de que no le importa que le ayudemos o que no. @item -La creación de un ejemplo mínimo le fuerza a entender lo que está +La creación de un ejemplo mínimo le ayuda a entender lo que está ocurriendo. Muchos informes falsos de problemas se podrían evitar intentando crear un ejemplo mínimo; si no puede reproducir un @qq{bug} en un ejemplo mínimo, probablemente el problema era una comprensión @@ -305,7 +324,7 @@ insuficiente sobre LilyPond, ¡no un verdadero bug! @divClass{column-right-bottom} -@subheading ¿Cómo los hago? +@subheading ¿Cómo se hacen? @divClass{keep-bullets} @itemize @@ -316,13 +335,13 @@ Incluya el número de versión en una instrucción @code{\version}. @item ¡Hágalo muy pequeño! Los ejemplos relacionados con el espaciado o la disposición de las páginas pueden requerir muchos compases, pero casi -todos los problemas se pueden reproducir mediante un solo compás. +todos los problemas se pueden reproducir mediante un solo compás o menos. @item Cuando trate de crear un ejemplo, pruebe a convertir en comentarios @w{(@code{%} ó @code{%@{ @dots{} %@}})} distintas secciones del archivo. Si puede convertir un bloque en un comentario y aún mostrar -la idea principal, entonces ¡elimine ese bloque! +la idea principal, entonces elimine ese bloque. @item Evite la utilización de notas, tonalidades o compases muy complicados, @@ -331,26 +350,70 @@ elementos. @item No utilice instrucciones @code{\override} ni @code{\set} a no ser que -el bug se refiera a esas instrucciones en particular. +el bug se refiera a esas instrucciones en concreto. + +@item +Opcionalmente, adjunte una imagen que muestre el resultado gráfico +que desea. @end itemize @divEnd @divEnd +@divClass{column-center-bottom} +@subheading ¿Cuán pequeño debe ser? +El código que sige ¿es un ejemplo mínimo? + +@example +\version "2.14.1" +\include "espanol.ly" + +\score @{ + \new Staff @{ + \key re \major + \numericTimeSignature + \time 2/4 + 16 8. + %% Aquí: la ligadura de unión sobre los Re tiene un aspecto gracioso + %% ¿Demasiado alta? ¿El punto final de la mano izquierda no se alinea + %% con la ligadura del Si? + ~ + 8 [ ] + @} +@} +@end example + +Bueno, no es muy grande, pero he aquí un ejemplo verdaderamente mínimo: + +@example +\version "2.14.1" +@{ + % la ligadura intermedia tiene un aspecto gracioso aquí: + 8. ~ 8 +@} +@end example + +Muy pocos ejemplos mínimos superan las 10 líneas de código; +¡lo más corriente es que basten 4 líneas para mostrar el problema! + +@divEnd @node Informes de fallos @unnumberedsec Informes de fallos @translationof Bug reports +@divClass{heading-center} +Si tiene un código de entrada que produce una terminación abrupta o +una salida defectuosa, eso es un bug. +@divEnd + @divClass{column-center-top} @subheading Paso 1: fallos conocidos -Si tiene un código de entrada que produce una terminación abrupta o -una salida defectuosa, eso es un bug. Hay una lista de los fallos en -vigor en nuestro sistema de seguimiento de fallos, +Probablemente ya estamos al tanto de este bug. Compruébelo aquí: @example @uref{http://code.google.com/p/lilypond/issues/list} @@ -370,11 +433,10 @@ informe.} Si ha descubierto un fallo que no está en la lista, ayúdenos elaborando un informe de fallo. -@warning{Sólo aceptamos informes de fallos en forma de @ref{Ejemplos -mínimos}. Disponemos de recursos muy limitados para tratar los -informes de fallos, por lo que cualquier ejemplo que no sea mínimo va -a ser rechazado. ¡Casi todos los bugs se pueden demostrar con cuatro -notas o menos!} +@warning{Sólo aceptamos informes en forma de @ref{Ejemplos mínimos}. +Disponemos de recursos muy limitados, por lo que cualquier ejemplo que +no sea mínimo va a ser rechazado. ¡Casi todos los bugs se pueden +demostrar con cuatro notas o menos!} He aquí un ejemplo de un buen informe de fallo: @@ -430,15 +492,17 @@ Para evitarlo, escriba: @divClass{column-center-bottom} @subheading Paso 4: Esperar respuesta -Una vez que su fallo se ha enviado a la lista, nuestro Escuadrón de -Fallos examinará el informe. Déles un tiempo de unas 24 horas, pues +Una vez que su informe de fallo se ha enviado a la lista, nuestro +Escuadrón de Fallos lo examinará el informe. Quizá le pidan más +información. Se le avisará cuando el informe se añada al sistema de +seguimiento de fallos. Déles un tiempo de unos 4 días, pues disponemos de un número limitado de voluntarios para esta tarea. -Puede que le pidan más información, o que añadan el informe al sistema -de seguimiento y le comuniquen qué número se ha asignado al problema. -Puede marcar el bug de forma que reciba mensajes automáticamente -cuando se produce cualquier actividad sobre él. Ello requiere que -usted disponga de una cuenta en Google. +Una vez que el fallo se ha añadido al sistema de seguimiento, puede +comentarlo para añadirle más información. Puede marcar el bug con una +estrella de forma que reciba mensajes automáticamente cuando se +produce cualquier actividad sobre él. Ello requiere que usted +disponga de una cuenta en Google. @divEnd @divClass{column-center-bottom} @@ -464,17 +528,99 @@ que muestren el aspecto que usted cree que debe tener! @divClass{column-left-top} @divClass{keep-bullets} -@helpusTasks +@helpusSimple @divEnd @divEnd @divClass{column-right-top} -@helpusProjects +@helpusAdvanced @divEnd +@node Patrocinio +@unnumberedsec Patrocinio +@translationof Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading Recompensas + +Anteriormente, + +@itemize +@item ciertos usuarios han pagado a cambio de nuevas funcionalidades +@item algunos desarrolladores han sido contratados para añadir funcionalidades nuevas +@end itemize + +El proyecto LilyPond no organiza estas tareas; ni refrendamos ni +disuadimos de tales acuerdos. Cualquier contrato privado entre +personas individuales es asunto de dichas personas, no nuestro. + +@divEnd + +@divClass{column-right-top} +@subheading Guidelines + +Cualquier usuario que quiera ofrecer dinero a cambio de un trabajo, +debería tener en cuenta los siguientes puntos: + +@itemize +@item +Los desarrolladores de LilyPond pueden anunciar sus servicios en las +listas de correo de lilypond de vez en cuando. + +@item +Cualquier acuerdo entre personas individuales debiera incluir las +precauciones normales cuando se hacen negocios: quién paga, cuánto +paga, qué método se utiliza para pagar, y sobre qué paquete de +condiciones. Sugerimos que cualquier ambigüedad o incertidumbre en +tales cuestiones se resuelvan antes de que dé comienzo cualquier +trabajo. + +@end itemize + +@divEnd + +@divClass{column-center-bottom} +@subheading Desarrolladores interesados + +A continuación aparece una lista de las personas que han expresado +interés en recibir recompensas. Observe que la cantidad de trabajo +hecha por personas individuales varía bastante a lo largo de los +años. No garantizamos que esta lista esté actualizada, ni que las +personas aquí relacionadas tengan cualquier disponibilidad. El único +criterio es "Fulanito ha pedido aparecer en esta página". + +El examen de la historia del sistema de control de versiones Git es +una buena manera de determinar quiénes son los desarrolladores más +activos y experimentados. Las estadísticas están al día hasta la +versión @versionDevel{}: + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, historia general} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, último año} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, últimos tres meses} +@end multitable + +Desarrolladores interesados: +@table @asis +@item @email{dak@@gnu.org, David Kastrup} +Se necesitan donaciones para que yo pueda continuar mi atual trabajo a +tiempo completo sobre LilyPond. Me concentro en diseño de interfaces +de usuario y del programador, coherencia, implementación, +simplificación, documentación y depuración. + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + @node Desarrollo @unnumberedsec Desarrollo @translationof Development @@ -737,6 +883,179 @@ están en @url{http://lilypond.org}} +@node GSoC 2012 +@unnumberedsec GSoC 2012 +@translationof GSoC 2012 + +@divClass{column-center-top} +@subheading ¿Qué es el Google Summer of Code (Verano del Código de Google)? + +Es un programa global llevado a cabo por Google que ofrece a +estudiantes una ayuda para que trabajen en proyectos de software de +fuentes abiertas durante las vacaciones de verano. + +El equipo de LilyPond decidió que ésta era una excelente oportunidad +para encontrar colaboradores nuevos y animar a los estudiantes que ya +participan en el desarrollo de LilyPond a que se impliquen aún más. +Uno de nuestros colaboradores ha sido seleccionado para la edición +2012 del programa como parte del +@uref{http://www.gnu.org/, proyecto GNU}; esperamos poder participar +también en futuras ediciones. + +@divEnd + +@divClass{column-center-bottom} +@subheading Nuestra lista de ideas para el 2012 + +Más abajo aparece una lista de los proyectos que hemos sugerido para +los estudiantes del GSoC 2012. Aunque ha finalizado el plazo de +solicitudes, hemos decidido mantener visible esta página como +inspiración para cualquier persona interesada en el desarrollo de +LilyPond. Algunos miembros del equipo de desarrollo están dispuestos +a prestar su ayuda a aquellos que quieran implicarse en estos +proyectos. + +Por supuesto, hay muchas más cosas que mejorar en LilyPond, entre +ellas algunas muy pequeñas. Hay una lista completa +@uref{http://code.google.com/p/lilypond/issues/list, aquí}. + +@subheading Notas de adorno + +Arreglar problemas con la sincronización de las notas de adorno, +junto a toda la arquitectura subyacente (véase +@uref{http://code.google.com/p/lilypond/issues/detail?id=34, el problema número 34 de nuestro sistema de seguimiento}). +Las notas de adorno confunden al sistema de cuenta de tiempo de +LilyPond porque son como ir hacia atrás en el tiempo. Esto causa +efectos extraños, en especial cuando un pentagrama tiene una nota de +adorno que otro no tiene. + +@strong{Dificultad:} media + +@strong{Requisitos:} C++, MIDI + +@strong{Recomendado:} familiaridad con el funcionamiento interno de LilyPond + +@strong{Mentor(es):} Mike Solomon, Carl Sorensen + +@subheading MusicXML + +Añadir exportación completa de MusicXML y mejora de la importación, +junto a las pruebas de comprobación de que funciona. Dependiendo del +tiempo disponible, implementar algunos o todos los siguientes: + +@divClass{keep-bullets} +@itemize + +@item +Manejo de la exportación del contenido musical básico como la +exportación MIDI (es decir, uso de clases exportadoras dedicadas, +derivadas de la clase translator) + +@item +Construir el árbol XML del contenido musical básico, y una conexión +desde el evento musical a la etiqueta XML + +@item +Hacer que todos los grabadores de LilyPond hagan su trabajo + +@item +Añadir la posibilidad de enlazar cada objeto de presentación +(básicamente cada sello o grupo de sellos) a la causa musical (así +como a la etiqueta XML dentro del árbol XML) + +@item +Añadir un @q{back-end} de salida XML, que puede después añadir la +información de disposición para cada uno de los objetos de salida a +las etiquetas del XML + +@end itemize +@divEnd + +El objetivo se considerará conseguido cuando una partitura +(previamente seleccionada) pueda importarse desde el MusicXML y +exportada de nuevo sin ninguna pérdida de datos no intencionada. + +@strong{Dificultad:} media + +@strong{Requisitos:} MusicXML, Python, conocimiento básico de LilyPond + +@strong{Mentor(es):} Reinhold Kainhofer, Mike Solomon + +Sería un buen tanto a su favor la familiaridad con otros editores de +partituras para poder hacer pruebas cruzadas. + +@subheading Mejora de las ligaduras de unión y de expresión + +A menudo la forma predeterminada de las curvas de ligadura no es +satisfactoria. No están contempladas las ligaduras de unión entre +notas enarmónicas @code{@{ dos'~ reb' @}}, las ligaduras "rotas" por +una clave o un cambio de pauta no están bien contempladas. El +proyecto incluye la recolección y ordenación de ejemmplos de salida +defectuosa, decidir sobre la salida que se desea tener y escribir el +código correspondiente. + +@strong{Dificultad:} alta + +@strong{Requisitos:} C++, experiencia con heurística de la escritura + +@strong{Conocimientos recomendados:} LilyPond, sentido estético + +@strong{Mentor(es):} Mike Solomon + +@subheading Añadir una variante especial de los glifos de fuente tipográfica +Añadir variantes para algunos glifos, como los signos de alteración, +para líneas sobre la pauta, entre pautas, acortadas y estrechadas, así +como una infraestructura genérica para incorporarlos. Un ejemplo es +la cabeza de la breve de na notación antigua, que viene en dos +variantes, con el orificio pequeño y grande. + +@strong{Dificultad:} fácil + +@strong{Requisitos:} MetaFont, C++, buen ojo para los detalles + +@strong{Conocimientos recomendados:} conocimientos básicos de LilyPond + +@strong{Mentor(es):} Werner Lemberg + +@subheading Mejora del barrado + +Debería mejorarse el posicionamiento predeterminado de las barras de +corchea (y figuras menores) normales, de pentagrama cruzado, +interrumpidas y en ángulo. El barrado debería depender del contexto y +de las notas vecinas (véase la +@uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, +sección 2.2}). +Si es posible, reducir el tiempo de cálculo del barrado. + +@strong{Dificultad:} media + +@strong{Requisitos:} C++, experiencia con heurística de la escritura + +@strong{Conocimientos recomendados:} sentido estético + +@strong{Mentor(es):} Mike Solomon, Carl Sorensen + +@subheading Limpieza de diversas advertencias de compliación + +Limpieza de las advertencias de compilación, análisis estático del +código, y advertencias de valgrind. Las herramientoas de análisis +automático del código (advertencias de @code{g++} y @code{clang}) y +herramientas de análisis como la detección de filtraciones de memoria +de los perfiladores de código valgrind y callgrind aportan valiosa +información sobre posibles problemas en el código de C++. La limpieza +de estas advertencias nos permitiría rechazar automáticamente +cualquier parche que introdujese más advertencias de las que hay +actualmente. + +@strong{Dificultad:} media + +@strong{Requisitos:} C++ + +@strong{Mentor(es):} Joe Neeman, Reinhold Kainhofer + +@divEnd + + @node Autores @unnumberedsec Autores @translationof Authors @@ -839,10 +1158,8 @@ están en @url{http://lilypond.org}} @divEnd @divClass{column-center-bottom} - @subheading Lo que otros han hecho con LilyPond - @divClass{keep-bullets} @include others-did.itexi @@ -857,6 +1174,67 @@ están en @url{http://lilypond.org}} @unnumberedsec Noticias antiguas @translationof Old news +@divClass{heading-center} +@warning{Hay muchos anuncios y registros de cambio antiguos en el +@ref{Desván}} +@divEnd + @include web/news-front.itexi @include web/news.itexi + + +@node Desván +@unnumberedsec Desván +@translationof Attic + +@divClass{column-center-top} +@subheading Anuncios + +Anuncios y noticias por versión: +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +Lista descriptiva de los cambios por versión: +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading Registros de cambios + +Registros de cambios de los desarrolladores, por versión: +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/es/web/download.itexi b/Documentation/es/web/download.itexi index ec0af5eb7f..26ba204e4a 100644 --- a/Documentation/es/web/download.itexi +++ b/Documentation/es/web/download.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: f64b0d88f1c8355e87f37d2e6cacdcf47c959d5a + Translation of GIT committish: 2936a7a6c5bca895dfd5725ab2422ad1c6b3ff11 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -48,7 +48,7 @@ infórmese sobre nuestra @ref{Entrada de texto}.} @c ref is duplicated to avoid underlining ref as image. @ref{Unix, @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,}} -@ref{Unix, Unix (Linux y FreeBSD)} +@ref{Unix, Unix (GNU/Linux y FreeBSD)} @item @ref{MacOS X, @sourceimage{logo-macosx,,,}} @@ -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.2} @item @sourceimage{logo-ubuntu,,,} @uref{http://packages.ubuntu.com/search?keywords=lilypond, -Ubuntu: LilyPond 2.12.2} +Ubuntu: LilyPond 2.14.2} @item @sourceimage{logo-slackware,,,} @uref{http://www.johannes-schoepfer.de/lilypond/, -Slackware: LilyPond 2.12.3} +Slackware: LilyPond 2.14.2} @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,,,} @@ -294,12 +302,16 @@ todos los logotipos e imágenes de producto. Para MacOS X 10.4 o superior sobre CPU Intel (si no está seguro, utilice éste). +MacOS X 10.7 Lion no está contemplado aún. + @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC Para MacOS X 10.4 o superior sobre CPUs G3 y G4 (ordenadores Apple antiguos). +MacOS X 10.7 Lion no está contemplado aún. + @end itemize @subsubheading Instalación @@ -347,6 +359,7 @@ Cree un archivo llamado @command{lilypond} que contenga @divClass{h-scroll-auto} @example +#!/bin/bash exec @var{DIR}/LilyPond.app/Contents/Resources/bin/lilypond "$@@" @end example @divEnd @@ -512,7 +525,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. diff --git a/Documentation/es/web/introduction.itexi b/Documentation/es/web/introduction.itexi index d2e79d4954..0f0cf9fef8 100644 --- a/Documentation/es/web/introduction.itexi +++ b/Documentation/es/web/introduction.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 346067ab7e42c9cbc359d48b23c79dc0780c8320 + Translation of GIT committish: 2936a7a6c5bca895dfd5725ab2422ad1c6b3ff11 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -455,8 +455,8 @@ podemos alcanzar nuestra meta con tan sólo una fracción del esfuerzo individual. @item -La @qq{cultura del regalo}: el movimiento del Software Libre (o de -@qq{fuente abierta}) ha creado muchos proyectos geniales de software, +La @qq{cultura del regalo}: el movimiento del Software Libre +ha creado muchos proyectos geniales de software, como @uref{http://kernel.org/, GNU/Linux}, @uref{http://www.getfirefox.com/, Mozilla Firefox} y el juego @uref{http://www.wesnoth.org/, Battle for Wesnoth}. Después de @@ -464,7 +464,7 @@ haberse visto beneficiados por estos proyectos, algunos desarrolladores desean @qq{devolver} algo a la comunidad. @item -Experiencia laboral: las contribuciones a proyectos de código abierto +Experiencia laboral: las contribuciones a proyectos de software libre son una magnífica forma de practicar la programación, la escritura de documentación, la traducción de documentación o el diseño. Esta experiencia ha ayudado a muchos programadores a encontrar trabajo en @@ -519,20 +519,48 @@ de texto}. @divClass{column-left-top} @subheading Conciertos -La música grabada con LilyPond se ha utilizado en interpretaciones y +La música tipografiada con LilyPond se ha utilizado en interpretaciones y actuaciones por todo el mundo. Algunos titulares: @divClass{keep-bullets} @itemize @item -@emph{Affaire Étrangère}, ópera de -@uref{http://valentin.villenave.net/,Valentin Villenave}, con -libreto en francés de -@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim}, -estrenada el 1 de febrero de 2009 en -@uref{http://www.opera-montpellier.com/, L'Opéra National de -Montpellier}, en Francia. +Los @emph{Cuadros de una exposición} de Mussorgsky, reorquestados y +dirigidos por @uref{http://www.aurelienbello.com/,Aurélien Bello} con +la orquesta @uref{http://www.junge-philharmonie-brandenburg.de/, Junge +Philharmonie Brandenburg} el 10 de octubre de 2011 y otra vez los días +15 y 16 de abril de 2012. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, compositor +y director musical. Entre sus numerosas obras recientes están +@emph{Go Thy Way}, interpretada por el coro +@uref{http://www.saltlakechoralartists.org/, Salt Lake Choral Artists} +en marzo de 2012; La @emph{Just Out of Reach Suite} interpretada por el +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Dúo Chrysalis} ; @emph{thrafsmata} interpretada en julio de 2011 por +el @uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, +Pittsburgh New Music Ensemble}. + + +@item +@emph{Anonymous Student Compliment or Complaint}, de +@uref{http://www.mikesolomon.org, Mike Solomon}, ganador de entre 172 +participantes procedentes de 22 países del +@uref{http://leftcoastensemble.org/contest, concurso de composición +Left Coast de 2011}. Entre otras obras están: Norman (age 1) para +clarinete solo, interpretada en el festival de música electroacústica +(FEMF) de la @uref{http://emu.music.ufl.edu/fems_concerts.html, Universidad +de Florida} en octubre de 2010. + +@item +Una edición moderna de la @emph{Serenata Erminia} de Alessandro +Scarlatti, editada por el musicólogo Thomas Griffin, (Roma, Italia). +Interpretada el 22 de octubre de 2010 en la Galleria del Palazzo +Zevallos Stigliano de Nápoles. @uref{http://www.ascarlatti2010.net, +Alessandro Scarlatti 2010}, durante las conmemoraciones de los 350 +años del nacimiento del compositor. @item La interpretación de @@ -546,6 +574,14 @@ iglesia de St. James en Manhattan, el 8 de mayo de 2009, por Frederick Renz y su conjunto @uref{http://www.earlymusicny.org/, Early Music New York} (realización tipográfica de Nicolas Sceaux). +@item +@emph{Affaire Étrangère}, ópera de +@uref{http://valentin.villenave.net/,Valentin Villenave}, con libreto +en francés de @uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, +Lewis Trondheim}, estrenada el 1 de febrero de 2009 en +@uref{http://www.opera-montpellier.com/, L'Opéra National de +Montpellier}, en Francia. + @end itemize @divEnd @@ -707,7 +743,7 @@ en @uref{http://linuxfr.org/2005/06/27/19210.html, linuxfr.org}. Octubre de 2004 Los editores de Computer!Totaal, una revista holandesa de informática, -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, describen a +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, describen a LilyPond} en la edición de octubre de 2004 como: @qq{Maravilloso software libre (de código abierto) (...) Las partituras producidas por LilyPond son excepcionalmente bonitas (...) un sistema muy potente que @@ -958,8 +994,8 @@ especiales se introducen mediante barras invertidas. @imageFloat{text-input-1-annotate-es,png,center} @imageFloat{text-input-1-output,png,center} -Las alteraciones se hacen con nombres distintos: añada @code{-is} para -obtener un sostenido, y @code{-es} para un bemol (son los nombres de +Las alteraciones se hacen con nombres distintos: añada @w{@code{-is}} para +obtener un sostenido, y @w{@code{-es}} para un bemol (son los nombres de las notas en holandés, pero están disponibles otros idiomas). LilyPond averigua dónde hay que imprimir las alteraciones. @@ -1052,6 +1088,15 @@ está convencido? Lea algo sobre los entornos de edición en @unnumberedsec Entornos mejorados @translationof Easier editing +@ignore +GNU policy forbids us from linking to non-Free software, so don't +add such links. + +In particular, don't link to: +- the LilyPond bundle for TextMate (a commercial editor for MacOS). + +@end ignore + @divClass{column-center-top} @subheading LilyPondTool @@ -1085,14 +1130,13 @@ una imagen más grande),frescobaldi-lilypond-editor,png,right} @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} -Frescobaldi es un editor dedicado de texto y música para LilyPond con -un visor de PDF incorporado, un potente asistente de partituras y -muchas funcionalidades de edición. Está construido alrededor de las -bibliotecas de KDE4 y se ejecuta actualmente en todos los sabores de -Linux y otros sistemas operativos del tipo UNIX. +Frescobaldi es un editor ligero y potente de texto y música para LilyPond con +un visor de PDF incorporado. Es muy fácil de utilizar y funciona en todos +los principales sistemas operativos (GNU/Linux, Mac OS X y Windows). @divEnd @@ -1164,17 +1208,6 @@ del editor, utilizando las extensiones que están disponibles en: @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example -@sourceimage{logo-macosx,,,} -Existe un paquete de LilyPond para TextMate, un editor -comercial para MacOS. Se puede instalar ejecutando: - -@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 @divClass{column-center-top} @@ -1184,10 +1217,12 @@ git clone http://github.com/textmate/lilypond.tmbundle.git @subsubheading Editores de partitura, tablatura y MIDI: @itemize + @item -@uref{http://www.rosegardenmusic.com,Rosegarden}, un secuenciador MIDI -y de audio, que tiene también un editor de partitura para edición de -un solo pentagrama. +@uref{http://www.canorus.org,Canorus}, un editor de partituras, +también puede exportar a LilyPond, +pero aún es un programa en fase beta, se agradecen las pruebas por +parte de los usuarios. @item @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, @@ -1196,30 +1231,35 @@ un editor de partitura basado en la biblioteca contempla de forma experimental la exportación a LilyPond. @item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, un editor y reproductor -de tablatura multipista, tiene visor de partitura -y es capaz de exportar hacia LilyPond. - -@item -@uref{http://www.musescore.org,MuseScore}, unu editor de partituras, +@uref{http://www.musescore.org,MuseScore}, un editor de partituras, tiene exportación incompleta de LilyPond pero se está desarrollando de forma activa. @item -@uref{http://www.canorus.org,Canorus}, un editor de partituras, -también puede exportar a LilyPond, -pero aún es un programa en fase beta, se agradecen las pruebas por -parte de los usuarios. +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY} es un programa en C# que convierte una canción de +@c @uref{http://www.noteworthysoftware.com/, NoteWorthy} +NoteWorthy composer en LilyPond. + +@item +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple} is a program that helps create scores and parts, including a +mode for mixing different musical works together in a single score or +part. + +@item +@uref{http://www.rosegardenmusic.com,Rosegarden}, un secuenciador MIDI +y de audio, que tiene también un editor de partitura para edición de +un solo pentagrama. @item -@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, un +@uref{https://launchpad.net/rumor/,Rumor}, un convertidor monofónico de MIDI a LilyPond en tiempo real. @item -@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, -NW2LY} es un programa en C# que convierte una canción de -@uref{http://www.noteworthysoftware.com/, NoteWorthy} en -LilyPond. +@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, un editor y reproductor +de tablatura multipista, tiene visor de partitura +y es capaz de exportar hacia LilyPond. @end itemize diff --git a/Documentation/es/web/manuals.itexi b/Documentation/es/web/manuals.itexi index 8b4753a099..e19fd0c687 100644 --- a/Documentation/es/web/manuals.itexi +++ b/Documentation/es/web/manuals.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: a9e295650dc1d588ac03cf0c43230b8b28229bdd + Translation of GIT committish: c7175b7e8387655964d9c9a975e9789fe581043c When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -123,13 +123,17 @@ referencia sobre el trucaje. @itemize +@item +@ref{Todos}: +Versiones estables anteriores y versión actual como un archivo comprimido. + @item @ref{Traducido}: 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}: @@ -445,7 +449,7 @@ producidas en LilyPond a partir de la version estable anterior. @node Extender @unnumberedsec Extender -@translationof Extend +@translationof Extending @divClass{column-left-top} @subheading Expansión de LilyPond diff --git a/Documentation/es/web/news-front.itexi b/Documentation/es/web/news-front.itexi index 64c9c328f9..5e7e9743bc 100644 --- a/Documentation/es/web/news-front.itexi +++ b/Documentation/es/web/news-front.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: e816bb2cfe498d49732ac66616ca351738585028 + Translation of GIT committish: 488508ff926c03b14d030ffc255ae19fc3ce1f50 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,87 +10,59 @@ @c This file is part of lilypond-web.texi and community.itexi @c when you add a new item, consider moving the lowest item(s) -@c into news-old.itexi. +@c into news.itexi. @c Translators: Francisco Vila @c keep two blank lines between news entries @c used for news about the upcoming release; see CG 10.2 - @newsItem -@subsubheading ¡Lanzado LilyPond 2.14.0! @emph{6 de junio de 2011} - -Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.14. -LilyPond es un programa de grabado musical (edición de partituras) -dedicado a la producción de música impresa de la más alta calidad -posible. Lleva a la impresión por ordenador la estética de las -partituras tipografiadas al estilo tradicional. - -Durante los últimos dos años y medio son muchas las mejoras que se han -producido a partir de la anterior versión principal estable. Algunas -de las más importantes son: - -@itemize -@item -LilyPond se licencia ahora bajo la GNU GPL v3 o posterior. - -@item -Se ha modificado drásticamente el motor de espaciado vertical, -haciéndolo mucho más flexible y fácil de controlar. - -@item -Ahora la aplicación automática de barras de corchea es más flexible y -se evitan las colisiones de barras. - -@end itemize - -Se da una lista completa de las funcionalidades nuevas en: - -@example -@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html} -@end example +@subsubheading ¡Lanzado LilyPond 2.15.95! @emph{11 de agosto de 2012} -¡Feliz edición de partituras! LilyPond 2.14 llega a usted de la mano de... +Estamos encantados de anunciar el lanzamiento de LilyPond 2.15.95. +Con esta edición, se congela el desarrollo sobre la versión 2.15 para +la inminente versión estable 2.16 y queda abierta solamente a +correcciones de fallos. -El equipo principal de desarrollo: +Urgimos a todos los usuarios a que prueben esta versión para asegurar +la máxima calidad de la próxima versión estable. Si descubre +cualquier problema, le rogamos nos envíe @ref{Informes de fallos}. -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. +Las funcionaliades nuevas desde la versión 2.14.2 están relacionadas +en el manual de @qq{Cambios} en la sección de la página web sobre +@ref{Desarrollo}. -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 -Wilson, Rodolfo Zitellini. - -Colaboradores de fuenteas tipográficas: - -Keith OHara, Marc Hohl, Alexander Kobel, Carsten Steger. - -Colaboradores de documentación: +@newsEnd -Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph -Palmer, David Pounder, Patrick Schmidt. -Escuadrón de caza de bugs: +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.42! @emph{2 de agosto de 2012} -James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph -Palmer, Kieren MacMillan, Dmytro O. Redchuk. +Nos complace anunciar el lanzamiento de LilyPond 2.15.42. Esta versión +contiene el conjunto habitual de correcciones de fallos. -Colaboradores de los archivos binarios: +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. -Christian Hitz. +@newsEnd -Colaboradores de traducción: -Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de -Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada. +@newsItem +@subsubheading El Informe LilyPond, número 27. @emph{2 de agosto 2012} + +Vuelve @emph{El informe LilyPond}, con una interesante incursión en +las funcionalidades relacionadas con Scheme añadidas recientemente por +el único desarrollador remunerado de nuestra comunidad, David Kastrup +(gracias a sus @uref{http://lilypond.org/sponsoring.html, donaciones +continuas}). En esta edición también se encuentra una panorámica +sobre ciertos proyectos poco conocidos colaterales a LilyPond, y +algunas otras noticias más ligeras. + +Acérquese y @uref{http://news.lilynet.net/?The-LilyPond-Report-27, +lea ya el Informe LilyPond número 27}; ¡todos los comentarios y +aportaciones serán calurosamente bien recibidos! @newsEnd diff --git a/Documentation/es/web/news.itexi b/Documentation/es/web/news.itexi index f86b286c98..6f20190e3a 100644 --- a/Documentation/es/web/news.itexi +++ b/Documentation/es/web/news.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: c32e3fdb278522c2772cbbe01f532ed24cb9d838 + Translation of GIT committish: 488508ff926c03b14d030ffc255ae19fc3ce1f50 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -34,10 +34,910 @@ NOTE: @end ignore +@newsItem +@subsubheading Retirada de la versión candidata al lanzamiento @emph{11 de julio de 2012} + +Hemos descubierto una regresión desde la versión 2.14.2, de manera que +lilypond 2.15.41 ya no es candidata al lanzamiento de 2.16.0. Sin +embargo, les rogamos que continúen probándola: nos gustaría descubrir +(¡y corregir!) cualquier otra regresión lo antes posible. Si descubre +cualquier problema, envíenos @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading Octava candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.41! @emph{4 de julio de 2012} + +Ha salido LilyPond 2.15.41; ésta es la octava versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 18 de julio de 2012. Si descubre algún problema, le rogamos que +nos envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.40! @emph{5 de junio de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.40. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading Retirada de la versión candidata al lanzamiento @emph{1 de junio de 2012} + +Hemos decubierto una regresión desde la versión 2.14.2, de manera que +lilypond 2.15.39 ya no es candidata para el lanzamiento de la versión +2.16.0. Sin embargo, continúen probándola: nos gustaría descubrir (y +corregir) cualquier regresión adicional tan pronto como sea posible. +Si descubre algún problema, le rogamos que nos envíe +@ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading Séptima candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.39! @emph{22 de mayo de 2012} + +Ha salido LilyPond 2.15.38; ésta es la séptima versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 5 de junio de 2012. Si descubre algún problema, le rogamos que nos +envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading El Informe LilyPond, número 26. @emph{22 de mayo de 2012} + +Vuelve el @emph{Informe LilyPond}, con un nuevo editor a bordo: Pavel +Roskin, que nos cuenta algo de sus aventuras en las extrañas tierras +de los fallos de los compiladores. También hay un informe detallado +sobre el estado de desarrollo actual, y un análisis de muestras de +salida de LilyPond; vea por sí mismo cuán cerca (¿o cuán lejos?) +estamos de igualar la calidad de las partituras grabadas a mano. + +Acérquese y @uref{http://news.lilynet.net/?The-LilyPond-Report-26, +lea ya el Informe LilyPond número 26}; ¡todos los comentarios y +aportaciones serán calurosamente bien recibidos! + +@newsEnd + + +@newsItem +@subsubheading Sexta candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.38! @emph{3 de mayo de 2012} + +Ha salido LilyPond 2.15.38; ésta es la sexta versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +@strong{Update:} Due to a few Critical bugs, another release +candidate will be required. + +@newsEnd + + +@newsItem +@subsubheading ¡LilyPond participa en Google Summer of Code 2012! @emph{25 de abril de 2012} + +Como parte del @uref{http://www.gnu.org/, proyecto GNU}, participamos +en el programa +@uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, El +verano del código} de Google, que ofrece a estudiantes una paga por +trabajar en software de fuentes abiertas. + +Nuestro colaborador Janek Warchoł ha sido aceptado para la edición de +2012 del GSoC. Va a trabajar en el posicionamiento avanzado de las +letras de canción en LilyPond. + +@newsEnd + + +@newsItem +@subsubheading Quinta versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.37! @emph{19 de abril de 2012} + +Ha salido LilyPond 2.15.37; ésta es la quinta versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 3 de mayo de 2012. Si descubre algún problema, le rogamos que nos +envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading Cuarta versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.36! @emph{6 de abril de 2012} + +Ha salido LilyPond 2.15.36; ésta es la cuarta versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 20 de abril de 2012. Si descubre algún problema, le rogamos que +nos envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading El Informe LilyPond, número 25. @emph{1 de abril de 2012} + +¡Vuelve @emph{El Informe LilyPond}, con una edición bastante poco +habitual de la que destacamos a nuestro joven colaborador polaco Janek +Warchoł! También incluimos en esta edición algunos elementos +inesperados, entre ellos (y no solamente)… ¡una receta de cocina! + +Acérquese al @uref{http://news.lilynet.net/?The-LilyPond-Report-25, +Informe LilyPond 25} y léalo ahora mismo; ¡animamos calurosamente a +todos a que hagan sus comentarios y contribuciones! + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.35! @emph{28 de marzo de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.35. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.34! @emph{19 de marzo de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.34. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.33! @emph{8 de marzo de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.33. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading El Informe LilyPond, número 24. @emph{5 de marzo de 2012} + +Ya está disponible una nueva edición del @emph{Informe LilyPond}; +entre los temas tratados se encuentra una solicitud de financiación, +un artítulo sobre unas nuevas e tineresantes posibilidades de la +gramática de LilyPond, y una panorámica de las aplicaciones de web +basadas en LilyPond. + +Acérquese al @uref{http://news.lilynet.net/?The-LilyPond-Report-24, +Informe LilyPond 24} y léalo ahora mismo; ¡animamos calurosamente a +todos a que hagan sus comentarios y contribuciones! + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.32! @emph{3 de marzo de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.32. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.31! @emph{29 de febrero de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.31. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading Tercera versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.30! @emph{17 de febrero de 2012} + +Ha salido LilyPond 2.15.30; ésta es la tercera versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 2 de marzo de 2012. Si descubre algún problema, le rogamos que +nos envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.29! @emph{9 de febrero de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.29. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.28! @emph{3 de febrero de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.28. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.27! @emph{24 de enero de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.27. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading El Informe LilyPond, número 23. @emph{20 de enero de 2012} + +¡Vuelve el @emph{Informe LilyPond}, con el desarrollador David Kastrup +como nuevo editor! Esta edición inclute una panorámica de algunas de +las nuevas y útiles instrucciones añadidas recientemente a LilyPond, +así como una entrevista con el colaborador de LilyPond y compositor +Mike Solomon. + +Acérquese al @uref{http://news.lilynet.net/?The-LilyPond-Report-23, +Informe LilyPond 23} y léalo ahora mismo; ¡animamos calurosamente a +todos a que hagan sus comentarios y contribuciones! + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.26! @emph{16 de enero de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.26. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +La versión 2.15.25 se ha saltado debido a problemas de construcción. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.24! @emph{7 de enero de 2012} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.24. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.23! @emph{21 de diciembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.23. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.22! @emph{15 de diciembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.22. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.21! @emph{6 de diciembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.21. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.20! @emph{24 de noviembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.20. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.19! @emph{18 de noviembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.19. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.18! @emph{12 de noviembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.18. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.17! @emph{10 de noviembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.17. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.16! @emph{28 de octubre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.16. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.15! @emph{24 de octubre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.15. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.14! @emph{7 de octubre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.14. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.13! @emph{27 de septiembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.13. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading Se cancela la segunda versión candidata al lanzamiento @emph{23 de septiembre de 2011} + +La cuenta atrás del lanzamiento se cancela a causa del descubrimiento +de una regresión crítica. + +@newsEnd + + +@newsItem +@subsubheading Segunda versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.12! @emph{20 de septiembre de 2011} + +Ha salido LilyPond 2.15.12; ésta es la segunda versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 27 de septiembre 2011. Si descubre algún problema, le rogamos que +nos envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.11! @emph{11 de septiembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.11. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.10! @emph{6 de septiembre de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.10. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.9! @emph{30 de agosto de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.9. Esta versión +contiene el conjunto habitual de correcciones de fallos y contempla +también MacOS X 10.7. + +Se recomienda enérgicamente a los usuarios normales que @strong{no} +utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en +cuenta que a causa de algunos bugs críticos, esta versión no es +candidata al lanzamiento de la próxima versión estable. + +@newsEnd + + +@newsItem +@subsubheading Primera versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.8! @emph{1 de agosto de 2011} + +Ha salido LilyPond 2.15.8; ésta es la primera versión candidata al +lanzamiento de la inminente versión estable 2.16. Se invita a los +usuarios a que hagan experimentos con esta versión. Las +funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de +@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. + +No existen problemas críticos conocidos en esta edición. Si no se +encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá +el 8 de agosto de 2011. Si descubre algún problema, le rogamos que +nos envíe @ref{Informes de fallos}. + +@newsEnd + + +@newsItem +@subsubheading ¡Lanzado LilyPond 2.15.7! @emph{29 de julio de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.7. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a 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.6! @emph{26 de julio de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.6. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a 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.2! @emph{25 de julio de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.14.2. 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.5! @emph{12 de julio de 2011} + +Nos complace anunciar el lanzamiento de LilyPond 2.15.5. Esta versión +contiene el conjunto habitual de correcciones de fallos. + +Se recomienda enérgicamente a 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.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 a 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 a 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 a 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 a 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 a 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} + +Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.14. +LilyPond es un programa de grabado musical (edición de partituras) +dedicado a la producción de música impresa de la más alta calidad +posible. Lleva a la impresión por ordenador la estética de las +partituras tipografiadas al estilo tradicional. + +Durante los últimos dos años y medio son muchas las mejoras que se han +producido a partir de la anterior versión principal estable. Algunas +de las más importantes son: + +@itemize +@item +LilyPond se licencia ahora bajo la GNU GPL v3 o posterior. + +@item +Se ha modificado drásticamente el motor de espaciado vertical, +haciéndolo mucho más flexible y fácil de controlar. + +@item +Ahora la aplicación automática de barras de corchea es más flexible y +se evitan las colisiones de barras. + +@end itemize + +Se da una lista completa de las funcionalidades nuevas en: + +@example +@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... + +El equipo principal de desarrollo: + +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. + +Colaboradores de programación: + +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: + +Keith OHara, Marc Hohl, Alexander Kobel, Carsten Steger. + +Colaboradores de documentación: + +Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph +Palmer, David Pounder, Patrick Schmidt. + +Escuadrón de caza de bugs: + +James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph +Palmer, Kieren MacMillan, Dmytro O. Redchuk. + +Colaboradores de los archivos binarios: + +Christian Hitz. + +Colaboradores de traducción: + +Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de +Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada. + +@newsEnd + + + +@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 @@ -141,7 +1041,6 @@ fallos críticos. @newsItem @subsubheading ¡Lanzado LilyPond 2.13.51! @emph{22 de febrero de 2011} - Nos complace anunciar el lanzamiento de LilyPond 2.13.51. Esta versión contiene el conjunto habitual de correcciones de fallos. @@ -175,10 +1074,10 @@ esto ya son diez idiomas para elegir! @newsEnd + @newsItem @subsubheading Segunda versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.49! @emph{9 de febrero de 2011} - Ha salido LilyPond 2.13.49; ésta es la segunda 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 @@ -205,6 +1104,7 @@ versión está orientada solamente a los desarrolladores. @newsEnd + @newsItem @subsubheading ¡Lanzado LilyPond 2.13.47! @emph{28 de enero de 2011} @@ -216,6 +1116,7 @@ versión está orientada solamente a los desarrolladores. @newsEnd + @newsItem @subsubheading Retirada de la versión candidata al lanzamiento @emph{13 de enero de 2011} @@ -258,6 +1159,8 @@ versión está orientada solamente a los desarrolladores. @newsEnd + + @newsItem @subsubheading Tercera versión de pruebas Beta de 2.14: ¡Lanzado LilyPond 2.13.44! @emph{25 de diciembre de 2010} @@ -359,6 +1262,8 @@ envíenos @ref{Informes de fallos} educados. @newsEnd + + @newsItem @subsubheading El Informe LilyPond, número 22. @emph{3 de noviembre de 2010} @@ -432,7 +1337,6 @@ de esta versión. @newsEnd - @newsItem @subsubheading El Informe LilyPond, número 21. @emph{3 de octubre de 2010} @@ -505,61 +1409,6 @@ versión está orientada solamente a los desarrolladores. @newsEnd -@newsItem -@subsubheading Segunda versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.35! @emph{29 de septiembre de 2010} - -Ha salido LilyPond 2.13.35; ésta es la segunda versión alfa 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. - -Aún existen tres regresiones conocidas contra 2.12.3: -@uref{http://code.google.com/p/lilypond/issues/detail?id=1173, -Problema número 1173 - No se pueden alinear las MetronomeMarks sobre -una nota si existe un silencio multicompás en otra voz}, y dos fallos -de espaciado: -@uref{http://code.google.com/p/lilypond/issues/detail?id=1240, -Problema 1240} y -@uref{http://code.google.com/p/lilypond/issues/detail?id=1252, -Problema 1252} pero esperamos encontrar más. Si se decide a probar -2.13.35, no se sorprenda al encontrar problemas; tan sólo envíenos -@ref{Informes de fallos} educados. - -@newsEnd - - -@newsItem -@subsubheading Versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.34! @emph{21 de septiembre de 2010} - -Ha salido LilyPond 2.13.34; ésta es la primera versión alfa 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. - -Aún existe una regresión conocida contra 2.12.3: -@uref{http://code.google.com/p/lilypond/issues/detail?id=1173, -Problema número 1173 - No se pueden alinear las MetronomeMarks sobre una -nota si existe un silencio multicompás en otra voz}, pero esperamos -encontrar más. Si se decide a probar 2.13.34, no se sorprenda al -encontrar problemas; tan sólo envíenos @ref{Informes de fallos} -educados. - -@newsEnd - - -@newsItem -@subsubheading ¡Lanzado LilyPond 2.13.33! @emph{10 de septiembre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.33. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - @newsItem @@ -664,7 +1513,6 @@ Nos complace anunciar el lanzamiento de LilyPond 2.13.27. Esta versión contiene el conjunto habitual de correcciones de fallos. Sin embargo, aún quedan algunos problemas críticos, por lo que esta versión está orientada solamente a los desarrolladores. - @newsEnd @@ -725,7 +1573,6 @@ embargo, aún quedan algunos problemas críticos, por lo que esta versión está orientada solamente a los desarrolladores. @newsEnd - @newsItem @subsubheading ¡Lanzado LilyPond 2.13.22! @emph{27 de mayo de 2010} @@ -735,7 +1582,6 @@ embargo, aún quedan algunos problemas críticos, por lo que esta versión está orientada solamente a los desarrolladores. @newsEnd - @newsItem @subsubheading ¡Lanzado LilyPond 2.13.21! @emph{12 de mayo de 2010} @@ -767,6 +1613,7 @@ todos a que hagan sus comentarios y contribuciones! @newsEnd + @newsItem @subsubheading ¡Lanzado LilyPond 2.13.20! @emph{5 de mayo de 2010} @@ -1007,7 +1854,7 @@ now 2.12.2, and the next development version has begun with A new stable release of LilyPond is available. @* -@uref{announce-v2.12,Announcement}, +@miscLink{announce-v2.12,Announcement}, @ref{Cambios}, @ref{Descarga}. @newsEnd @@ -1056,7 +1903,7 @@ documentation and translations. @newsItem -@subsubheading LilyPond 2.11.62 – Release Candidate. @emph{October 11, 2008} +@subsubheading LilyPond 2.11.62 -- Release Candidate. @emph{October 11, 2008} LilyPond 2.11.62 is available. This is is one of the last releases before 2.12, so testing it is encouraged. In addition to a bugfix @@ -1064,7 +1911,7 @@ in @code{\tempo} command, this release has lot of updates to Spanish and German documentation translations, and the stylesheet for HTML documentation has been improved. @* -@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_62&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, +@bugfixes{2_11_62,}, @ref{Descargas antiguas}. @newsEnd @@ -1349,7 +2196,7 @@ converter. @newsItem @subsubheading lilypond.org日本語訳 (lilypond.org Japanese translation). @emph{2008å¹´4月8日 (April 4, 2008)} -Lilypond.orgのいくつかのページの日本語訳が出来ました。 +lilypond.orgのいくつかのページの日本語訳が出来ました。 @newsEnd @@ -1398,7 +2245,7 @@ program messages in French, German, Spanish and Vietnamese, and updates to the MusicXML converter. @* @bugfixes{2_11_41,}, -@ref{Descargas antiguas}) +@ref{Descargas antiguas}. @newsEnd @@ -1423,7 +2270,7 @@ Grand Documentation Project. @newsItem -@subsubheading LilyPond 2.11.33 and 2.10.33 available. @emph{September 20, 2007} +@subsubheading LilyPond 2.10.33 and 2.11.33 available. @emph{September 20, 2007} Release 2.11.33 is now available. @* @@ -1534,11 +2381,9 @@ This has lots of bugfixes. @newsItem -@subsubheading Übersetzung der Dokumentation - @emph{10. April 2007} -Die Kapitel 1-5 (der Abschnitt für Anfänger) des -LilyPond-Benutzerhandbuchs -sind auf deutsch übersetzt — sie sind erhältlich für -die @ref{Cambios} +@subsubheading Übersetzung der Dokumentation - @emph{10. April 2007} +Die Kapitel 1-5 (der Abschnitt für Anfänger) des LilyPond-Benutzerhandbuchs +sind auf deutsch übersetzt --- sie sind erhältlich für die @ref{Cambios} online und @ref{Descargas antiguas}. @newsEnd @@ -1564,11 +2409,13 @@ This release has some documentation updates. @newsItem -@subsubheading Traduction de la documentation en français - @emph{25 février 2007} -Les chapitres 1 à 4 et 6 du manuel de l'utilisateur sont -désormais traduits, et disponibles en ligne — @uref{@@DOC@@v2.10/Documentation/user/lilypond/index.fr.html,version -2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/index.fr.html,version -2.11}. Les traductions sont également incluses dans la @uref{install,documentation téléchargeable}. +@subsubheading Traduction de la documentation en français - @emph{25 février 2007} +Les chapitres 1 à 4 et 6 du manuel de l'utilisateur sont désormais traduits, et +disponibles en ligne --- +@uref{http://lilypond.org/doc/v2.10/Documentation/user/lilypond/index.fr.html,version 2.10}, +@uref{http://lilypond.org/doc/v2.11/Documentation/user/lilypond/index.fr.html,version 2.11}. +Les traductions sont également incluses dans la +@uref{install,documentation téléchargeable}. @newsEnd @@ -1586,37 +2433,40 @@ This release fixes many bugs. @newsItem @subsubheading LilyPond 2.10.19 and 2.11.19 available - @emph{February 18, 2007} This release fixes many bugs. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_19&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.11}, -@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_19&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.10}, @ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_10_19,2.10}, +@bugfixes{2_11_19,2.11}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.18 available - @emph{February 12, 2007} This release fixes still more bugs, and included -singing support through festival contributed by Milan Zamazal. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_18&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.11}, @ref{Cambios}, @ref{Descargas antiguas}) +singing support through festival contributed by Milan Zamazal. +@* +@bugfixes{2_11_18,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.17 available - @emph{February 9, 2007} This release fixes still more bugs. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_17&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.11}, @ref{Cambios}, -@ref{Descargas antiguas}) +@* +@bugfixes{2_11_17,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.16 and 2.11.16 available - @emph{February 4, 2007} This release fixes many bugs. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_16&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.11}, -@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_16&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.10}, +(@bugfixes{2_10_16,2.10}, +@bugfixes{2_11_16,2.11}, @ref{Cambios}, @ref{Descargas antiguas}) @newsEnd @@ -1626,11 +2476,12 @@ This release fixes many bugs. @subsubheading LilyPond 2.10.15 and 2.11.15 available - @emph{February 1, 2007} This release will stretch piano staves on a system-by-system basis and add a few glyphs: a black harmonic note -head and the slashed mirrored flat. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_15&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.11}, -@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_15&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes -2.10}, -@ref{Cambios}, @ref{Descargas antiguas}) +head and the slashed mirrored flat. +@* +@bugfixes{2_10_15,2.10}, +@bugfixes{2_11_15,2.11}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1638,8 +2489,10 @@ head and the slashed mirrored flat. (@uref{http://code.google.com/p/lilypond/is @subsubheading LilyPond 2.10.14 and 2.11.14 available - @emph{January 26, 2007} This release has a rewrite of the line-spanner code, responsible for among other glissandi and text-crescendos, making them more flexible. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_14&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_11_14,}, +@ref{Cambios}, +@ref{Descargas antiguas} @newsEnd @@ -1647,8 +2500,10 @@ among other glissandi and text-crescendos, making them more flexible. @subsubheading LilyPond 2.10.13 and 2.11.13 available - @emph{January 17, 2007} This release fixes a few minor but irritating bugs. In addition, the 2.11 release has updates of the tutorial. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_13&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_11_13,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1656,23 +2511,31 @@ This release fixes a few minor but irritating bugs. In addition, the @subsubheading LilyPond 2.11.12 available - @emph{January 17, 2007} This release fixes lots of bugs. In particular, the tie formatting has been further improved, and memory usage has been improved enormously. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_12&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_11_12,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.12 available - @emph{January 17, 2007} This release mirrors 2.11.12. Notably, it has the same memory -usage improvements. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_12&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +usage improvements. +@* +@bugfixes{2_10_12,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.11 available - @emph{January 12, 2007} -This release mostly has the same fixes as 2.11.11. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_11&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +This release mostly has the same fixes as 2.11.11. +@* +@bugfixes{2_10_11,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1680,8 +2543,11 @@ This release mostly has the same fixes as 2.11.11. (@uref{http://code.google.co @subsubheading LilyPond 2.11.11 available - @emph{January 11, 2007} This release has further fixes for popular bugs. Timing of the MIDI output won't get confused by tuplets and grace notes anymore. Some fat -has also been trimmed of the skyline code performance. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_11&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +has also been trimmed of the skyline code performance. +@* +@bugfixes{2_11_11,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1691,8 +2557,11 @@ LilyPond 2.11.10 has further review of the test-suite, performance and code coverage. This brought to light several problems that were fixed. Notably, 2.11.10 fixes lots of regressions in optical correction spacing and MIDI dynamics. Also, this version is 20 to 50 -% faster than previous 2.11 releases. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_10&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +% faster than previous 2.11 releases. +@* +@bugfixes{2_11_10,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1700,29 +2569,38 @@ correction spacing and MIDI dynamics. Also, this version is 20 to 50 @subsubheading LilyPond 2.10.10 available - @emph{January 8, 2007} This release fixes several popular bugs, among others: MIDI files that go silent after (de)crescendi, and tuplets problems with quoting -and part-combining (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_10&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +and part-combining. +@* +@bugfixes{2_10_10,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.9 and 2.10.9 available - @emph{January 3, 2007} -This release has a couple of bugfixes, and —in 2.11.9&mdash -further improvements in the regression test suite (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_9&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +This release has a couple of bugfixes, and ---in 2.11.9--- +further improvements in the regression test suite +@* +@bugfixes{2_11_9,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.8 and 2.10.8 available - @emph{January 3, 2007} -New! Improved! With even more bugfixes! (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_8&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +New! Improved! With even more bugfixes! +@* +@bugfixes{2_11_8,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading @code{lilypond.org} auf deutsch - @emph{31. Dezember 2006} -Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt! +Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt! @newsEnd @@ -1734,8 +2612,11 @@ Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt! @newsItem @subsubheading LilyPond 2.11.7 and 2.10.7 available - @emph{January 1, 2007} -New! Improved! With even more bugfixes! (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_7&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +New! Improved! With even more bugfixes! +@* +@bugfixes{2_11_7,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1743,16 +2624,20 @@ New! Improved! With even more bugfixes! (@uref{http://code.google.com/p/lilypon @subsubheading LilyPond 2.11.6 available - @emph{December 30, 2006} This release supports arbitrary fractional alterations, allowing music with different microtonal conventions to be typeset. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_6&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_11_6,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.6 available - @emph{December 30, 2006} New! Improved! With even more bugfixes! -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_6&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_10_6,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1760,40 +2645,51 @@ New! Improved! With even more bugfixes! @subsubheading LilyPond 2.11.5 available - @emph{December 24, 2006} These releases complete the translation infrastructure for Documentation. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_5&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_11_5,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.5 available - @emph{December 24, 2006} New! Improved! With even more bugfixes! -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_5&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +@* +@bugfixes{2_10_5,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.4 available - @emph{December 21, 2006} The vertical spacing improvements that were introduced in 2.11.0 now work -within a system as well as between systems. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_4&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +within a system as well as between systems. +@* +@bugfixes{2_11_4,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.3 available - @emph{December 19, 2006} This release has @uref{http://lilypond.org/doc/v2.11/compare-v2.10.3/index.html,graphical -test results} and several website build improvements. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_3&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +test results} and several website build improvements. +@* +@bugfixes{2_11_3,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.3 available - @emph{December 19, 2006} This release fixes several bugs. -(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_3&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +@* +@bugfixes{2_10_3,}, +@ref{Descargas antiguas}. @newsEnd @@ -1804,39 +2700,49 @@ From now on, our GUB binary builds include support for Linux/PPC. (@ref{Descarg @newsItem -@subsubheading Traduction du tutoriel en français. @emph{December 13, 2006} -Fruit du travail d'une équipe de traducteurs, le tutoriel en -français est maintenant disponible en ligne. @uref{@@DOC@@v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version -2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version -2.11}. +@subsubheading Traduction du tutoriel en français. @emph{December 13, 2006} +Fruit du travail d'une équipe de traducteurs, le tutoriel en français est +maintenant disponible en ligne. +@uref{http://lilypond.org/doc/v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version 2.10}, +@uref{http://lilypond.org/doc/v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version 2.11}. @newsEnd @newsItem @subsubheading LilyPond 2.11.2 available - @emph{December 12, 2006} -This release supports glissandi and harmonics in tablature. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_2&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +This release supports glissandi and harmonics in tablature. +@* +@bugfixes{2_11_2,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.2 available - @emph{December 12, 2006} -A new stable release of LilyPond is available. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_2&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +A new stable release of LilyPond is available. +@* +@bugfixes{2_10_2,}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.11.1 available - @emph{December 4, 2006} -This release has improved support for horizontal spacing. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_1&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Cambios}, @ref{Descargas antiguas}) +This release has improved support for horizontal spacing. +@* +@bugfixes{2_11_1,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.10.1 available - @emph{December 3, 2006} -A new stable release of LilyPond is available. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_1&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +A new stable release of LilyPond is available. +@* +@bugfixes{2_10_1,}, +@ref{Descargas antiguas}. @newsEnd @@ -1848,7 +2754,8 @@ This release has improved support for vertical spacing. (@ref{Cambios}, @ref{De @newsItem @subsubheading LilyPond 2.10.0 available - @emph{November 11, 2006} -A new stable release of LilyPond is available. (@uref{announce-v2.10.html,Announcement}, @ref{Cambios}, @ref{Descargas antiguas}) +A new stable release of LilyPond is available. +(@miscLink{announce-v2.10,Announcement}, @ref{Cambios}, @ref{Descargas antiguas}) @newsEnd @@ -1861,23 +2768,30 @@ system. Check out our repository at @uref{http://git.sv.gnu.org/gitweb/?p=lilypo @newsItem @subsubheading LilyPond 2.9.29 available - @emph{November 5, 2006} -This release has many more bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_29&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +This release has many more bugfixes. +@* +@bugfixes{2_9_29,}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.9.28 available - @emph{November 3, 2006} -This release has many more bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_28&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +This release has many more bugfixes. +@* +@bugfixes{2_9_28,}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.9.27 available - @emph{October 28, 2006} This release has a new @code{FretBoards} context, and some further -bugfixes. (@ref{Cambios}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_27&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +bugfixes. +@* +@bugfixes{2_9_27,}, +@ref{Cambios}, +@ref{Descargas antiguas}. @newsEnd @@ -1893,16 +2807,20 @@ the thesis is now available from lilypond.org @newsItem @subsubheading LilyPond 2.9.26 available - @emph{October 20, 2006} -This release has further bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_26&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +This release has further bugfixes. +@* +@bugfixes{2_9_26,}, +@ref{Descargas antiguas}. @newsEnd @newsItem @subsubheading LilyPond 2.9.25 available - @emph{October 18, 2006} This release has more bugfixes; from now on, binaries are also -available for x86/64. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_25&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) +available for x86/64. +@* +@bugfixes{2_9_25,}, +@ref{Descargas antiguas}. @newsEnd @@ -2135,7 +3053,7 @@ speedup over the emulated PowerPC binaries. (@ref{Descargas antiguas}) @newsItem @subsubheading LilyPond 2.8.0 is out! - @emph{March 22, 2006} -Version 2.8 is here! Read the @uref{announce-v2.8.html,release +Version 2.8 is here! Read the @miscLink{announce-v2.8,release announcement}. (@ref{Cambios}, @ref{Descargas antiguas}) @newsEnd @@ -2588,9 +3506,9 @@ release. (@ref{Cambios}, @newsItem -@subsubheading Traduction française du site - @emph{September 03, 2005} +@subsubheading Traduction française du site - @emph{September 03, 2005} Grâce à @uref{about/thanks#website,l'équipe des traducteurs}, -de nombreuses pages du site sont maintenant disponibles en français, +de nombreuses pages du site sont maintenant disponibles en français, notamment l'@uref{about/automated-engraving/index.fr.html,essai sur la gravure musicale}. @newsEnd @@ -2619,8 +3537,7 @@ LilyPond's first appearance in mainstream printed press. @subsubheading LilyPond 2.7.7 is out - @emph{August 22, 2005} This release has a rewriting of tie formatting which was sponsored by Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor -Baca, and Vicente Solsona -Dellá. (@ref{Cambios}, +Baca, and Vicente Solsona Dellá. (@ref{Cambios}, @ref{Descargas antiguas}) @newsEnd @@ -2698,7 +3615,7 @@ installs in a snap on Windows, MacOS X, and any version of Linux (x86). @strong{Get up and running in minutes!} Pango text formatting lets you print @strong{Unicode } lyrics in your favorite script and font. Create @strong{SVG} files, and edit them in Inkscape. -(@uref{announce-v2.6.html,Announcement}, @ref{Descargas antiguas}, @ref{Cambios}) +(@miscLink{announce-v2.6,Announcement}, @ref{Descargas antiguas}, @ref{Cambios}) @newsEnd @@ -2818,9 +3735,8 @@ from the order that they were defined. (@ref{Descargas antiguas}) @subsubheading 2.5.23 released - @emph{May 6, 2005} This release has a couple of small bugfixes, and a new feature. It is now possible to start and stop the @code{StaffSymbol}, during a piece of -music, by doing @code{\stopStaff \startStaff}. This can be used to produce -Ossia -staves. (@ref{Cambios}, +music, by doing @code{\stopStaff \startStaff}. This can be used to +produce Ossia staves. (@ref{Cambios}, @ref{Descargas antiguas}) @newsEnd @@ -3145,7 +4061,7 @@ the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/C @newsItem @subsubheading October 31, 2004 -LilyPond 2.4.0 was just @uref{announce-v2.4.html,released!} +LilyPond 2.4.0 was just @miscLink{announce-v2.4,released!} This new stable version has support for page-layout, completely rewritten slur formatting and many other improvements. Read about them in the @ref{Cambios} @@ -3421,7 +4337,7 @@ the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lily @newsItem @subsubheading July 23, 2004 -Lilypond 2.3.8 fixes a few minor bugs in the new slur code, +LilyPond 2.3.8 fixes a few minor bugs in the new slur code, and has rewritten support for ledger lines. Now, in tight situations, ledger lines will be shortened so they stay separate. This also required a cleanup of the Ambitus @@ -3834,7 +4750,7 @@ in the @subsubheading February 2, 2004 LilyPond 2.1.17 is out. It adds texts (solo, a due) for the part combiner. It also reinstates the -@code{--safe} option which prevents havoc by Scheme exploits. More +@option{--safe} option which prevents havoc by Scheme exploits. More information in the @ref{Cambios}. @newsEnd @@ -3974,21 +4890,19 @@ More information in the @newsItem @subsubheading January 4, 2004 -LilyPond 2.1.6 continues to -improve the layout of lyrics. More +LilyPond 2.1.6 continues to improve the layout of lyrics. More information in the -@uref{@@DOC@@v2.1/Documentation/topdocs/out-www/NEWS.html,release +@uref{http://lilypond.org/doc/v2.1/Documentation/topdocs/out-www/NEWS.html,release notes} and download @uref{install/#2.1,here}. @newsEnd @newsItem @subsubheading January 2, 2004 -in LilyPond 2.1.5, the lyric -alignment is completely revamped, and now matches my Edition -Peters version of the Schubert song Sängers Morgen. More -information in the -@ref{Cambios} and download @uref{install/#2.1,here}. +In LilyPond 2.1.5, the lyric alignment is completely revamped, +and now matches my Edition Peters version of the Schubert song +Sängers Morgen. More information in the @ref{Cambios} and +download @uref{install/#2.1,here}. @newsEnd @@ -4279,4 +5193,3 @@ unique faculties. 1.7.29 - release candidate 4 has been released. Packages for Red Hat, Debian, Cygwin are @uref{install/,available}. @newsEnd - diff --git a/Documentation/essay.tely b/Documentation/essay.tely index bb6d7b9e4f..66d5b5be1b 100644 --- a/Documentation/essay.tely +++ b/Documentation/essay.tely @@ -20,7 +20,7 @@ LilyPond version @version{}. @c `Essay' was born 2002-06-03 with git commit e38f5fc... @macro copyrightDeclare -Copyright @copyright{} 2002--2011 by the authors. +Copyright @copyright{} 2002--2012 by the authors. @end macro @set FDL diff --git a/Documentation/essay/computer-notation.bib b/Documentation/essay/computer-notation.bib index 547a990c81..23b0658066 100644 --- a/Documentation/essay/computer-notation.bib +++ b/Documentation/essay/computer-notation.bib @@ -159,7 +159,7 @@ SMDL. With a short example that is quite lengthy in SMDL} volume = 17, number = 3, note = {A categorisation of music representation systems (languages, -OO systems etc) splitted into high level and low level expressiveness. +OO systems etc) split into high level and low level expressiveness. The discussion of Charm and parallel processing for music representation is rather vague. HWN} } diff --git a/Documentation/essay/engraving.itely b/Documentation/essay/engraving.itely index e2409ce725..53893fdc94 100644 --- a/Documentation/essay/engraving.itely +++ b/Documentation/essay/engraving.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Music engraving @chapter Music engraving @@ -83,7 +83,7 @@ and movement, and it feels like a living, breathing piece of music, while the newer edition seems cold and mechanical. It is hard to immediately see what makes the difference with the newer -edition. Everything looks neat and tiny, possibly even @qq{better} +edition. Everything looks neat and tidy, possibly even @qq{better} because it looks more computerized and uniform. This really puzzled us for quite a while. We wanted to improve computer notation, but we first had to figure out what was wrong with it. @@ -292,7 +292,7 @@ vertical strokes are heavier. In spacing, the distribution of space should reflect the durations between notes. However, as we saw in the Bach Suite above, many modern scores adhere to the durations with mathematical precision, which leads -to poor results. In the next example a motive is printed twice: the +to poor results. In the next example a motif is printed twice: the first time using exact mathematical spacing, and the second with corrections. Which do you prefer? @@ -737,7 +737,7 @@ We can also measure LilyPond's ability to make music engraving decisions automatically by comparing LilyPond's output to the output of a commercial software product. In this case we have chosen Finale 2008, which is one of the most popular commercial score writers, particularly -in North America. Sibelius is their major rival and they appear to be +in North America. Sibelius is its major rival and appears to be especially strong in the European market. For our comparison we selected Bach's Fugue in G minor from the @@ -841,7 +841,7 @@ Some shortcomings in the unedited Finale output include: @item Most of the beams extend too far off the staff. A beam that points towards the center of the staff should have a length of about one octave, but engravers shorten this when the beam points away from the -staff in multi-voice music. The Finale beaming can be easily improved +staff in multi-voice music. The Finale beaming can easily be improved with their Patterson Beams plug-in, but we elected to skip that step for this example. @item Finale doesn't adjust the positions of interlocking note heads, @@ -1552,10 +1552,7 @@ following example combines some more exotic constructs. >> } >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 8) - } + \tempo 8 = 60 } \layout { \context { diff --git a/Documentation/essay/literature.itely b/Documentation/essay/literature.itely index 43d8188179..4f431b6c53 100644 --- a/Documentation/essay/literature.itely +++ b/Documentation/essay/literature.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Literature list @chapter Literature list diff --git a/Documentation/extending.tely b/Documentation/extending.tely index 684f7216c3..6de5dbb4ea 100644 --- a/Documentation/extending.tely +++ b/Documentation/extending.tely @@ -20,7 +20,7 @@ LilyPond version @version{}. @c `Extending' was born 2003-04-23 with git commit c08f6e8... @macro copyrightDeclare -Copyright @copyright{} 2003--2011 by the authors. +Copyright @copyright{} 2003--2012 by the authors. @end macro @set FDL diff --git a/Documentation/extending/programming-interface.itely b/Documentation/extending/programming-interface.itely index acbff57119..a6109a5774 100644 --- a/Documentation/extending/programming-interface.itely +++ b/Documentation/extending/programming-interface.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Interfaces for programmers @chapter Interfaces for programmers @@ -18,7 +18,10 @@ not familiar with Scheme, you may wish to read our @ref{Scheme tutorial}. @menu +* Lilypond code blocks:: +* Scheme functions:: * Music functions:: +* Event functions:: * Markup functions:: * Contexts for programmers:: * Callback functions:: @@ -26,63 +29,263 @@ not familiar with Scheme, you may wish to read our * Difficult tweaks:: @end menu +@node Lilypond code blocks +@section Lilypond code blocks + +Lilypond code blocks look like +@example + #@{ @var{Lilypond code} #@} +@end example +They can be used anywhere where you can write Scheme code: the Scheme +reader actually is changed for accommodating LilyPond code blocks and +can deal with embedded Scheme expressions starting with @code{$} +and@w{ }@code{#}. + +It extracts the Lilypond code block and generates a call to the +LilyPond @code{parser} which is executed at runtime to interpret the +LilyPond code block. Any embedded Scheme expression is executed in +the lexical environment of the Lilypond code block, so you have access +to local variables and function parameters at the point the Lilypond +code block is written. + +A LilyPond code block may contain anything that you can use on the right +side of an assignment. In addition, an empty LilyPond block corresponds +to a void music expression, and a LilyPond block containing multiple +music events gets turned into a sequential music expression. + +@node Scheme functions +@section Scheme functions +@cindex Scheme functions (LilyPond syntax) + +@emph{Scheme functions} are Scheme procedures that can create Scheme +expressions from input written in LilyPond syntax. They can be called +in pretty much all places where using @code{#} for specifying a value in +Scheme syntax is allowed. While Scheme has functions of its own, this +chapter is concerned with @emph{syntactic} functions, functions that +receive arguments specified in LilyPond syntax. + +@menu +* Scheme function definitions:: +* Scheme function usage:: +* Void scheme functions:: +@end menu + +@node Scheme function definitions +@subsection Scheme function definitions +@funindex define-scheme-function + +The general form for defining scheme functions is: + +@example +function = +#(define-scheme-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{type1?} @var{type2?} @dots{}) + @var{body}) +@end example + +@noindent +where + +@multitable @columnfractions .33 .66 +@item @code{parser} +@tab needs to be literally @code{parser} in order to give LilyPond code +blocks (@code{#@{}@dots{}@code{#@}}) access to the parser. + +@item @code{@var{argN}} +@tab @var{n}th argument + +@item @code{@var{typeN?}} +@tab a Scheme @emph{type predicate} for which @code{@var{argN}} +must return @code{#t}. Some of these predicates are specially +recognized by the parser, see below. There is also a special form +@code{(@emph{predicate?} @emph{default})} for specifying optional +arguments. If the actual argument is missing when the function is being +called, the default value is substituted instead. Default values are +evaluated at definition time (including LilyPond code blocks!), so if +you need a default calculated at runtime, instead write a special value +you can easily recognize. If you write the predicate in parentheses but +don't follow it with a default value, @code{#f} is used as the default. +Default values are not verified with @emph{predicate?} at either +definition or run time: it is your responsibility to deal with the +values you specify. Default values that happen to be music expressions +are copied while setting @code{origin} to the @code{location} parameter. + +@item @code{@var{body}} +@tab A sequence of Scheme forms evaluated in order, the last one being +used as the return value of the scheme function. It may contain +LilyPond code blocks enclosed in hashed braces +(@tie{}@w{@code{#@{@dots{}#@}}}@tie{}), like described in @ref{Lilypond +code blocks}. Within LilyPond code blocks, use @code{#} to reference +function arguments (eg., @samp{#arg1}) or to start an inline Scheme +expression containing function arguments (eg., @w{@samp{#(cons arg1 +arg2)}}). Where normal Scheme expressions using @code{#} don't do the +trick, you might need to revert to immediate Scheme expressions using +@code{$}, for example as @samp{$music}. + +If your function returns a music expression, it is given a useful value +of @code{origin}. +@end multitable + +@noindent +Some type predicates are specially handled by the parser since it +can't recognize the arguments reliably otherwise. Currently these are +@code{ly:pitch?} and @code{ly:duration?}. + +Suitability of arguments for all other predicates is determined by +actually calling the predicate after Lilypond has already converted them +into a Scheme expression. As a consequence, the argument can be +specified in Scheme syntax if desired (introduced with @code{#} or as +the result of calling a scheme function), but Lilypond will also convert +a number of Lilypond constructs into Scheme before actually checking the +predicate on them. Currently, those include music, postevents, simple +strings (with or without quotes), numbers, full markups and markup +lists, score, book, bookpart, context definition and output definition +blocks. + +For some kinds of expression (like most music not enclosed in braces) +Lilypond needs to look further than the expression itself in order to +determine its end. If such an expression were considered for an +optional argument by evaluating its predicate, Lilypond would not be +able to ``backup'' when it decides the expression does not fit the +parameter. So some forms of music might need to be enclosed in braces +to make them acceptable to Lilypond. There are also some other +ambiguities that Lilypond sorts out by checking with predicate +functions: is @samp{-3} a fingering postevent or a negative number? Is +@code{"a" 4} in lyric mode a string followed by a number, or a lyric +event of duration @code{4}? Lilypond decides by asking the predicates. +That means that you should avoid permissive predicates like +@code{scheme?} if you have a particular use in mind instead of a general +purpose function. + +For a list of available predefined type predicates, see +@ruser{Predefined type predicates}. + +@seealso + +Notation Reference: +@ruser{Predefined type predicates}. + +Installed Files: +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm}. + +@node Scheme function usage +@subsection Scheme function usage + +Scheme functions can be called pretty much anywhere where a Scheme +expression starting with @code{#} can be written. You call a scheme +function by writing its name preceded by @code{\}, followed by its +arguments. Once an optional argument predicate does not match an +argument, Lilypond skips this and all following optional arguments, +replacing them with their specified default, and @q{backs up} the +argument that did not match to the place of the next mandatory argument. +Since the backed up argument needs to go somewhere, optional arguments +are not actually considered optional unless followed by a mandatory +argument. + +There is one exception: if you write @code{\default} in the place of an +optional argument, this and all following optional arguments are skipped +and replaced by their default. This works even when no mandatory +argument follows since @code{\default} does not need to get backed up. +The @code{mark} and @code{key} commands make use of that trick to +provide their default behavior when just followed by @code{\default}. + +Apart from places where a Scheme value is required, there are a few +places where @code{#} expressions are currently accepted and evaluated +for their side effects but otherwise ignored. Mostly those are the +places where an assignment would be acceptable as well. + +Since it is a bad idea to return values that can be misinterpreted in +some context, you should use normal scheme functions only for those +cases where you always return a useful value, and use void scheme +functions (@pxref{Void scheme functions}) otherwise. + +@node Void scheme functions +@subsection Void scheme functions +@funindex define-void-function +@funindex \void + +Sometimes a procedure is executed in order to perform an action rather +than return a value. Some programming languages (like C and Scheme) use +functions for either concept and just discard the returned value +(usually by allowing any expression to act as statement, ignoring the +result). This is clever but error-prone: most C compilers nowadays +offer warnings for various non-``void'' expressions being discarded. +For many functions executing an action, the Scheme standards declare the +return value to be unspecified. Lilypond's Scheme interpreter Guile has +a unique value @code{*unspecified*} that it usually (such when using +@code{set!} directly on a variable) but unfortunately not consistently +returns in such cases. + +Defining a Lilypond function with @code{define-void-function} makes +sure that this special value (the only value satisfying the predicate +@code{void?}) will be returned. + +@example +noPointAndClick = +#(define-void-function + (parser location) + () + (ly:set-option 'point-and-click #f)) +... +\noPointAndClick % disable point and click +@end example + +If you want to evaluate an expression only for its side-effect and +don't want any value it may return interpreted, you can do so by +prefixing it with @code{\void}: + +@example +\void #(hashq-set! some-table some-key some-value) +@end example + +That way, you can be sure that Lilypond will not assign meaning to the +returned value regardless of where it encounters it. This will also +work for music functions such as @code{\displayMusic}. @node Music functions @section Music functions -@emph{Music functions} are scheme procedures that can create music +@cindex music functions + +@emph{Music functions} are Scheme procedures that can create music 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:: * Functions without arguments:: -* Void functions:: +* Void music functions:: @end menu -@node Music function syntax -@subsection Music function syntax +@node Music function definitions +@subsection Music function definitions +@cindex defining music functions +@funindex define-music-function -The general form for music functions is: +The general form for defining music functions is: @example function = #(define-music-function (parser location @var{arg1} @var{arg2} @dots{}) (@var{type1?} @var{type2?} @dots{}) - @var{music}) + @var{body}) @end example @noindent -where - -@multitable @columnfractions .33 .66 -@item @code{@var{argN}} -@tab @var{n}th argument - -@item @code{@var{typeN?}} -@tab a scheme @emph{type predicate} for which @code{@var{argN}} -must return @code{#t}. +quite in analogy to @ref{Scheme function definitions}. More often than +not, @var{body} will be a @ref{Lilypond code blocks, Lilypond code block}. -@item @code{@var{music}} -@tab A music expression, optionally written in scheme, with any -LilyPond code enclosed in hashed braces -(@tie{}@w{@code{#@{@dots{}#@}}}@tie{}). Within LilyPond code -blocks, use @code{$} to reference function arguments (eg., -@samp{$arg1}) or to start an inline scheme expression containing -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. - +@ruser{Predefined type predicates}. @seealso @@ -95,6 +298,40 @@ Installed Files: @file{scm/lily.scm}. +@node Music function usage +@subsection Music function usage +Music functions may currently be used in several 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. No restriction apply here. + +@item +As a post-event, explicitly started with a direction indicator (one of +@code{-}, @code{^}, @w{and @code{_}}). Note that returning a post-event +will be acceptable for music functions called as normal music, leading +to a result roughly equivalent to +@example +s 1*0-\fun +@end example + +In this case, you can't use an @emph{open} music expression as the last +argument, one that would end with a music expression able to accept +additional postevents. + +@item +As a chord constituent. The returned expression must be of +@code{rhythmic-event} type, most likely a @code{NoteEvent}. +@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. + @node Simple substitution functions @subsection Simple substitution functions @@ -122,7 +359,7 @@ manualBeam = (parser location beg-end) (pair?) #@{ - \once \override Beam #'positions = $beg-end + \once \override Beam #'positions = #beg-end #@}) \relative c' @{ @@ -141,7 +378,7 @@ manualBeam = (parser location beg end) (number? number?) #{ - \once \override Beam #'positions = $(cons beg end) + \once \override Beam #'positions = #(cons beg end) #}) \relative c' { @@ -162,9 +399,9 @@ AltOn = (parser location mag) (number?) #{ - \override Stem #'length = $(* 7.0 mag) + \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = - $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #}) AltOff = { @@ -187,10 +424,10 @@ withAlt = (parser location mag music) (number? ly:music?) #{ - \override Stem #'length = $(* 7.0 mag) + \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = - $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) - $music + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #music \revert Stem #'length \revert NoteHead #'font-size #}) @@ -233,31 +470,35 @@ lilypond -d display-bar-numbers FILENAME.ly @end example -@node Void functions -@subsection Void functions +@node Void music functions +@subsection Void music functions -A music function must return a music expression, but sometimes we -may want to have a function that does not involve music (such as -turning off Point and Click). To do this, we return a @code{void} -music expression. +A music function must return a music expression. If you want to +execute a function only for its side effect, you should use +@code{define-void-function}. But there may be cases where you +sometimes want to produce a music expression, and sometimes not (like +in the previous example). Returning a @code{void} music expression +via @code{#@{ #@}} will achieve that. -That is why the form that is returned is the -@w{@code{(make-music @dots{})}}. With the @code{'void} property -set to @code{#t}, the parser is told to actually disregard this -returned music expression. Thus the important part of the void -music function is the processing done by the function, not the -music expression that is returned. +@node Event functions +@section Event functions +@funindex define-event-function +@cindex event functions -@example -noPointAndClick = -#(define-music-function - (parser location) - () - (ly:set-option 'point-and-click #f) - (make-music 'SequentialMusic 'void #t)) -... -\noPointAndClick % disable point and click -@end example +To use a music function in the place of an event, you need to write a +direction indicator before it. But sometimes, this does not quite match +the syntax of constructs you want to replace. For example, if you want +to write dynamics commands, those are usually attached without direction +indicator, like @code{c'\pp}. Here is a way to write arbitrary +dynamics: +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } +@end lilypond +You could do the same using a music function, but then you always would +have to write a direction indicator before calling it, like +@code{@w{c-\dyn pfsss}}. @node Markup functions @@ -289,13 +530,16 @@ providing a LilyPond-like syntax. For example, @noindent is equivalent to: @example -\markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @} - \larger \line @{ foo bar baz @} @} +#@{ \markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @} + \larger \line @{ foo bar baz @} @} #@} @end example @noindent This example demonstrates the main translation rules between regular -LilyPond markup syntax and Scheme markup syntax. +LilyPond markup syntax and Scheme markup syntax. Using @code{#@{ +@dots{} #@}} for entering in LilyPond syntax will often be most +convenient, but we explain how to use the @code{markup} macro to get a +Scheme-only solution. @quotation @multitable @columnfractions .3 .3 @@ -498,7 +742,8 @@ Then, the padding between the two boxes is considered too small, so we override it too: @lilypond[quote,verbatim,ragged-right] -\markup \override #'(box-padding . 0.4) \box \override #'(box-padding . 0.6) \box A +\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box A @end lilypond Repeating this lengthy markup would be painful. This is where a markup @@ -506,6 +751,16 @@ command is needed. Thus, we write a @code{double-box} markup command, taking one argument (the text). This draws the two boxes, with some padding. +@lisp +#(define-markup-command (double-box layout props text) (markup?) + "Draw a double box around text." + (interpret-markup layout props + #@{\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box @{ #text @}#@})) +@end lisp + +or, equivalently + @lisp #(define-markup-command (double-box layout props text) (markup?) "Draw a double box around text." @@ -517,10 +772,10 @@ padding. @code{text} is the name of the command argument, and @code{markup?} its type: it identifies it as a markup. The @code{interpret-markup} function is used in most of markup commands: it builds a stencil, using -@code{layout}, @code{props}, and a markup. Here, this markup is built -using the @code{markup} scheme macro, see @ref{Markup construction in Scheme}. -The transformation from @code{\markup} expression to scheme -markup expression is straight-forward. +@code{layout}, @code{props}, and a markup. In the second case, this +markup is built using the @code{markup} scheme macro, see @ref{Markup +construction in Scheme}. The transformation from @code{\markup} +expression to scheme markup expression is straight-forward. The new command can be used as follow: @@ -537,6 +792,19 @@ and the text. So we will introduce a new property, @code{box-padding} will be used for the inner padding. The new code is now as follows: +@lisp +#(define-markup-command (double-box layout props text) (markup?) + #:properties ((inter-box-padding 0.4) + (box-padding 0.6)) + "Draw a double box around text." + (interpret-markup layout props + #@{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + @{ #text @} #@})) +@end lisp + +Again, the equivalent version using the markup macro would be: + @lisp #(define-markup-command (double-box layout props text) (markup?) #:properties ((inter-box-padding 0.4) @@ -566,8 +834,9 @@ customized: (box-padding 0.6)) "Draw a double box around text." (interpret-markup layout props - (markup #:override `(box-padding . ,inter-box-padding) #:box - #:override `(box-padding . ,box-padding) #:box text))) + #{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + { #text } #})) \markup \double-box A \markup \override #'(inter-box-padding . 0.8) \double-box A @@ -668,6 +937,16 @@ a single stencil, the former returns a list of stencils. In the following example, a @code{\paragraph} markup list command is defined, which returns a list of justified lines, the first one being indented. The indent width is taken from the @code{props} argument. + +@example +#(define-markup-list-command (paragraph layout props args) (markup-list?) + #:properties ((par-indent 2)) + (interpret-markup-list layout props + #@{\markuplist \justified-lines @{ \hspace #par-indent #args @} #@})) +@end example + + +The version using just Scheme is more complex: @example #(define-markup-list-command (paragraph layout props args) (markup-list?) #:properties ((par-indent 2)) @@ -683,16 +962,16 @@ Besides the usual @code{layout} and @code{props} arguments, the First, the function gets the indent width, a property here named @code{par-indent}, from the property list @code{props}. If the property is not found, the default value is @code{2}. Then, a -list of justified lines is made using the -@code{make-justified-lines-markup-list} function, which is related -to the @code{\justified-lines} built-in markup list command. A -horizontal space is added at the beginning using the -@code{make-hspace-markup} function. Finally, the markup list is +list of justified lines is made using the built-in markup list command +@code{\justified-lines}, which is related to the +@code{make-justified-lines-markup-list} function. A +horizontal space is added at the beginning using @code{\hspace} (or the +@code{make-hspace-markup} function). Finally, the markup list is interpreted using the @code{interpret-markup-list} function. This new markup list command can be used as follows: @example -\markuplines @{ +\markuplist @{ \paragraph @{ The art of music typography is called \italic @{(plate) engraving.@} The term derives from the traditional process of music printing. @@ -872,6 +1151,14 @@ my-callback = #(lambda (grob) @node Inline Scheme code @section Inline Scheme code +TODO: the example for this section is ill-chosen since +@example +F = -\tweak #'font-size #-3 -\flageolet +@end example +(note the @samp{-} marking it as a post event) will actually work fine +for the stated purpose. Until this section gets a rewrite, let's +pretend we don't know. + The main disadvantage of @code{\tweak} is its syntactical inflexibility. For example, the following produces a syntax error. @@ -884,10 +1171,6 @@ F = \tweak #'font-size #-3 -\flageolet @end example @noindent -In other words, @code{\tweak} doesn't behave like an articulation -regarding the syntax; in particular, it can't be attached with -@code{^} and @code{_}. - Using Scheme, this problem can be avoided. The route to the result is given in @ref{Adding articulation to notes (example)}, especially how to use @code{\displayMusic} as a helping guide. diff --git a/Documentation/extending/scheme-tutorial.itely b/Documentation/extending/scheme-tutorial.itely index 7b38a76ef9..c75f546300 100644 --- a/Documentation/extending/scheme-tutorial.itely +++ b/Documentation/extending/scheme-tutorial.itely @@ -8,12 +8,11 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Scheme tutorial @chapter Scheme tutorial -@funindex # @cindex Scheme @cindex GUILE @cindex Scheme, in-line code @@ -67,19 +66,31 @@ The LilyPond installation includes the Guile implementation of Scheme. On most systems you can experiment in a Scheme sandbox by opening a terminal window and typing @q{guile}. On some systems, notably Windows, you may need to set the environment variable -@code{GUILE_LOAD_PATH} to the directory @code{../usr/shr/guile/1.8} +@code{GUILE_LOAD_PATH} to the directory @code{../usr/share/guile/1.8} in the LilyPond installation. For the full path to this directory see @rlearning{Other sources of information}. Alternatively, Windows users may simply choose @q{Run} from the Start menu and enter @q{guile}. -Once the guile sandbox is running, you will receive a guile prompt: +However, a hands-on Scheme sandbox with all of Lilypond loaded is +available with this command line: +@example +lilypond scheme-sandbox +@end example + +@noindent +Once the sandbox is running, you will receive a guile prompt: @lisp guile> @end lisp -You can enter Scheme expressions at this prompt to experiment with Scheme. +You can enter Scheme expressions at this prompt to experiment with +Scheme. If you want to be able to use the GNU readline library for +nicer editing of the Scheme command line, check the file +@file{ly/scheme-sandbox.ly} for more information. If you already have +enabled the readline library for your interactive Guile sessions outside +of LilyPond, this should work in the sandbox as well. @node Scheme variables @subsection Scheme variables @@ -148,7 +159,7 @@ and False is @code{#f}. @item Numbers Numbers are entered in the standard fashion, -@code{1} is the (integer) number one, while @code{-1.5} is a +@code{1} is the (integer) number one, while @w{@code{-1.5}} is a floating point number (a non-integer number). @item Strings @@ -600,6 +611,7 @@ guile> (cond ((< a b) "a is less than b") * LilyPond Scheme syntax:: * LilyPond variables:: * Input variables and Scheme:: +* Importing Scheme in LilyPond:: * Object properties:: * LilyPond compound variables:: * Internal music representation:: @@ -607,17 +619,68 @@ guile> (cond ((< a b) "a is less than b") @node LilyPond Scheme syntax @subsection LilyPond Scheme syntax +@funindex $ +@funindex # The Guile interpreter is part of LilyPond, which means that -Scheme can be included in LilyPond input files. The hash mark @code{#} -is used to tell the LilyPond parser that the next value is a Scheme -value. +Scheme can be included in LilyPond input files. There are several +methods for including Scheme in LilyPond. -Once the parser sees a hash mark, input is passed to the Guile -interpreter to evaluate the Scheme expression. The interpreter continues -to process input until the end of a Scheme expression is seen. +The simplest way is to use a hash mark@tie{}@code{#} before a Scheme +expression. -Scheme procedures can be defined in LilyPond input files: +Now LilyPond's input is structured into tokens and expressions, much +like human language is structured into words and sentences. LilyPond +has a lexer that recognizes tokens (literal numbers, strings, Scheme +elements, pitches and so on), and a parser that understands the syntax, +@ruser{LilyPond grammar}. Once it knows that a particular syntax rule +applies, it executes actions associated with it. + +The hash mark@tie{}@code{#} method of embedding Scheme is a natural fit +for this system. Once the lexer sees a hash mark, it calls the Scheme +reader to read one full Scheme expression (this can be an identifier, an +expression enclosed in parentheses, or several other things). After the +Scheme expression is read, it is stored away as the value for an +@code{SCM_TOKEN} in the grammar. Once the parser knows how to make use +of this token, it calls Guile for evaluating the Scheme expression. +Since the parser usually requires a bit of lookahead from the lexer to +make its parsing decisions, this separation of reading and evaluation +between lexer and parser is exactly what is needed to keep the execution +of LilyPond and Scheme expressions in sync. For this reason, you should +use the hash mark@tie{}@code{#} for calling Scheme whenever this is +feasible. + +Another way to call the Scheme interpreter from LilyPond is the use of +dollar@tie{}@code{$} instead of a hash mark for introducing Scheme +expressions. In this case, Lilypond evaluates the code right after the +lexer has read it. It checks the resulting type of the Scheme +expression and then picks a token type (one of several +@code{xxx_IDENTIFIER} in the syntax) for it. It creates a @emph{copy} +of the value and uses that for the value of the token. If the value of +the expression is void (Guile's value of @code{*unspecified*}), nothing +at all is passed to the parser. + +This is, in fact, exactly the same mechanism that Lilypond employs when +you call any variable or music function by name, as @code{\name}, with +the only difference that the name is determined by the Lilypond lexer +without consulting the Scheme reader, and thus only variable names +consistent with the current Lilypond mode are accepted. + +The immediate action of @code{$} can lead to surprises, @ref{Input +variables and Scheme}. Using @code{#} where the parser supports it +is usually preferable. Inside of music expressions, expressions +created using @code{#} @emph{are} interpreted as music. However, +they are @emph{not} copied before use. If they are part of some +structure that might still get used, you may need to use +@code{ly:music-deep-copy} explicitly. + +@funindex $@@ +@funindex #@@ +There are also @q{list splicing} operators @code{$@@} and @code{#@@} +that insert all elements of a list in the surrounding context. + +Now let's take a look at some actual Scheme code. Scheme procedures can +be defined in LilyPond input files: @example #(define (average a b c) (/ (+ a b c) 3)) @@ -625,7 +688,7 @@ Scheme procedures can be defined in LilyPond input files: Note that LilyPond comments (@code{%} and @code{%@{ %@}}) cannot be used within Scheme code, even in a LilyPond input file, because -the Guile interpreter, not the LilyPond parser, is interpreting +the Guile interpreter, not the LilyPond lexer, is reading the Scheme expression. Comments in Guile Scheme are entered as follows: @@ -640,7 +703,7 @@ as follows: @end example For the rest of this section, we will assume that the data is entered -in a music file, so we add @code{#}s at the beginning of each Scheme +in a music file, so we add@tie{}@code{#}s at the beginning of each Scheme expression. All of the top-level Scheme expressions in a LilyPond input file can @@ -682,6 +745,15 @@ twentyFour = #(* 2 twelve) which would result in the number 24 being stored in the LilyPond (and Scheme) variable @code{twentyFour}. +The usual way to refer to Lilypond variables, @ref{LilyPond Scheme +syntax}, is to call them using a backslash, i.e., @code{\twentyFour}. +Since this creates a copy of the value for most of LilyPond's internal +types, in particular music expressions, music functions don't usually +create copies of material they change. For this reason, music +expressions given with @code{#} should usually not contain material that +is not either created from scratch or explicitly copied rather than +directly referenced. + @node Input variables and Scheme @subsection Input variables and Scheme @@ -733,40 +805,74 @@ imported in a @code{\score} block by means of a second variable @lilypond[verbatim] traLaLa = { c'4 d'4 } -%% dummy action to deal with parser lookahead -#(display "this needs to be here, sorry!") - #(define newLa (map ly:music-deep-copy (list traLaLa traLaLa))) #(define twice (make-sequential-music newLa)) -{ \twice } +\twice @end lilypond @c Due to parser lookahead -In this example, the assignment happens after the parser has -verified that nothing interesting happens after -@code{traLaLa = @{ ... @}}. Without the dummy statement in the -above example, the @code{newLa} definition is executed before -@code{traLaLa} is defined, leading to a syntax error. +This is actually a rather interesting example. The assignment will only +take place after the parser has ascertained that nothing akin to +@code{\addlyrics} follows, so it needs to check what comes next. It +reads @code{#} and the following Scheme expression @emph{without} +evaluating it, so it can go ahead with the assignment, and +@emph{afterwards} execute the Scheme code without problem. + +@node Importing Scheme in LilyPond +@subsection Importing Scheme in LilyPond +@funindex $ +@funindex # The above example shows how to @q{export} music expressions from the input to the Scheme interpreter. The opposite is also possible. By -wrapping a Scheme value in the function @code{ly:export}, a Scheme +placing it after @code{$}, a Scheme value is interpreted as if it were entered in LilyPond syntax. Instead of defining @code{\twice}, the example above could also have been written as @example ... -@{ #(ly:export (make-sequential-music (list newLa))) @} +$(make-sequential-music newLa) +@end example + +You can use @code{$} with a Scheme expression anywhere you could use +@code{\@var{name}} after having assigned the Scheme expression to a +variable @var{name}. This replacement happens in the @q{lexer}, so +Lilypond is not even aware of the difference. + +One drawback, however, is that of timing. If we had been using @code{$} +instead of @code{#} for defining @code{newLa} in the above example, the +following Scheme definition would have failed because @code{traLaLa} +would not yet have been defined. For an explanation of this timing +problem, @ref{LilyPond Scheme syntax}. + +@funindex $@@ +@funindex #@@ +A further convenience can be the @q{list splicing} operators @code{$@@} +and @code{#@@} for inserting the elements of a list in the surrounding +context. Using those, the last part of the example could have been +written as + +@example +... +@{ #@@newLa @} @end example -Scheme code is evaluated as soon as the parser encounters it. To -define some Scheme code in a macro (to be called later), use -@ref{Void functions}, or +Here, every element of the list stored in @code{newLa} is taken in +sequence and inserted into the list, as if we had written + +@example +@{ #(first newLa) #(second newLa) @} +@end example + +Now in all of these forms, the Scheme code is evaluated while the +input is still being consumed, either in the lexer or in the parser. +If you need it to be executed at a later point of time, check out +@ref{Void scheme functions}, or store it in a procedure: @example #(define (nopc) @@ -780,7 +886,7 @@ define some Scheme code in a macro (to be called later), use @knownissues Mixing Scheme and LilyPond variables is not possible with the -@code{--safe} option. +@option{--safe} option. @node Object properties @@ -823,7 +929,7 @@ while @code{twentyFour} is a variable. @subheading Offsets -Two-dimensional offsets (X and Y coordinates) are stored as @code{pairs}. +Two-dimensional offsets (X and Y coordinates) are stored as @emph{pairs}. The @code{car} of the offset is the X coordinate, and the @code{cdr} is the Y coordinate. @@ -838,6 +944,16 @@ this command moves the object 1 staff space to the right, and 2 spaces up. Procedures for working with offsets are found in @file{scm/lily-library.scm}. +@subheading Fractions + +Fractions as used by LilyPond are again stored as @emph{pairs}, this +time of unsigned integers. While Scheme can represent rational numbers +as a native type, musically @samp{2/4} and @samp{1/2} are not the same, +and we need to be able to distinguish between them. Similarly there are +no negative @q{fractions} in LilyPond's mind. So @code{2/4} in LilyPond +means @code{(2 . 4)} in Scheme, and @code{#2/4} in LilyPond means +@code{1/2} in Scheme. + @subheading Extents Pairs are also used to store intervals, which represent a range of numbers @@ -964,18 +1080,16 @@ will display 'SequentialMusic 'elements (list (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 0 0)) - (make-music 'AbsoluteDynamicEvent 'text - "f"))))) + "f")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)))) @end example By default, LilyPond will print these messages to the console along @@ -987,25 +1101,42 @@ a file. lilypond file.ly >display.txt @end example -With a bit of reformatting, the above information is easier to read, +With a combined bit of Lilypond and Scheme magic, you can actually +let Lilypond direct just this output to a file of its own: + +@example +@{ + #(with-output-to-file "display.txt" + (lambda () #@{ \displayMusic @{ c'4\f @} #@})) +@} +@end example + + +A bit of reformatting makes the above information easier to read: @example (make-music 'SequentialMusic - 'elements (list (make-music 'EventChord - 'elements (list (make-music 'NoteEvent - 'duration (ly:make-duration 2 0 1 1) - 'pitch (ly:make-pitch 0 0 0)) - (make-music 'AbsoluteDynamicEvent - 'text "f"))))) + 'elements (list + (make-music 'NoteEvent + 'articulations (list + (make-music 'AbsoluteDynamicEvent + 'text + "f")) + 'duration (ly:make-duration 2 0 1 1) + 'pitch (ly:make-pitch 0 0 0)))) @end example A @code{@{ ... @}} music sequence has the name @code{SequentialMusic}, and its inner expressions are stored as a list in its @code{'elements} -property. A note is represented as an @code{EventChord} expression, -containing a @code{NoteEvent} object (storing the duration and -pitch properties) and any extra information (in this case, an -@code{AbsoluteDynamicEvent} with a @code{"f"} text property. +property. A note is represented as a @code{NoteEvent} object (storing +the duration and pitch properties) with attached information (in this +case, an @code{AbsoluteDynamicEvent} with a @code{"f"} text property) +stored in its @code{articulations} property. +@funindex{\void} +@code{\displayMusic} returns the music it displays, so it will get +interpreted as well as displayed. To avoid interpretation, write +@code{\void} before @code{\displayMusic}. @node Music properties @subsection Music properties @@ -1014,13 +1145,27 @@ TODO -- make sure we delineate between @emph{music} properties, @emph{context} properties, and @emph{layout} properties. These are potentially confusing. -The @code{NoteEvent} object is the first object of the -@code{'elements} property of @code{someNote}. +Let's look at an example: @example someNote = c' \displayMusic \someNote ===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)) +@end example + +The @code{NoteEvent} object is the representation of @code{someNote}. +Straightforward. How about putting c' in a chord? + +@example +someNote = +\displayMusic \someNote +===> (make-music 'EventChord 'elements @@ -1032,6 +1177,9 @@ someNote = c' (ly:make-pitch 0 0 0)))) @end example +Now the @code{NoteEvent} object is the first object of the +@code{'elements} property of @code{someNote}. + The @code{display-scheme-music} function is the function used by @code{\displayMusic} to display the Scheme representation of a music expression. @@ -1076,7 +1224,7 @@ d' @subsection Doubling a note with slurs (example) Suppose we want to create a function that translates input like -@code{a} into @code{a( a)}. We begin by examining the internal +@code{a} into @code{@{ a( a) @}}. We begin by examining the internal representation of the desired result. @example @@ -1086,70 +1234,65 @@ representation of the desired result. 'SequentialMusic 'elements (list (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)) - (make-music 'SlurEvent 'span-direction - -1))) + -1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)) (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)) - (make-music 'SlurEvent 'span-direction - 1))))) + 1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) @end example The bad news is that the @code{SlurEvent} expressions -must be added @q{inside} the note (or more precisely, -inside the @code{EventChord} expression). +must be added @q{inside} the note (in its @code{articulations} +property). Now we examine the input, @example +\displayMusic a' +===> (make-music - 'SequentialMusic - 'elements - (list (make-music - 'EventChord - 'elements - (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch 0 5 0)))))) + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) @end example -So in our function, we need to clone this expression (so that we -have two notes to build the sequence), add a @code{SlurEvent} to the -@code{'elements} property of each one, and finally make a -@code{SequentialMusic} with the two @code{EventChords}. +So in our function, we need to clone this expression (so that we have +two notes to build the sequence), add a @code{SlurEvent} to the +@code{'articulations} property of each one, and finally make a +@code{SequentialMusic} with the two @code{EventChords}. For adding to a +property, it is useful to know that an unset property is read out as +@code{'()}, the empty list, so no special checks are required before we +put another element at the front of the @code{articulations} property. @example doubleSlur = #(define-music-function (parser location note) (ly:music?) "Return: @{ note ( note ) @}. - `note' is supposed to be an EventChord." + `note' is supposed to be a single note." (let ((note2 (ly:music-deep-copy note))) - (set! (ly:music-property note 'elements) + (set! (ly:music-property note 'articulations) (cons (make-music 'SlurEvent 'span-direction -1) - (ly:music-property note 'elements))) - (set! (ly:music-property note2 'elements) + (ly:music-property note 'articulations))) + (set! (ly:music-property note2 'articulations) (cons (make-music 'SlurEvent 'span-direction 1) - (ly:music-property note2 'elements))) + (ly:music-property note2 'articulations))) (make-music 'SequentialMusic 'elements (list note note2)))) @end example @@ -1158,9 +1301,12 @@ doubleSlur = #(define-music-function (parser location note) (ly:music?) @subsection Adding articulation to notes (example) The easy way to add articulation to notes is to merge two music -expressions into one context, as explained in -@ruser{Creating contexts}. However, suppose that we want to write -a music function that does this. +expressions into one context, as explained in @ruser{Creating contexts}. +However, suppose that we want to write a music function that does this. +This will have the additional advantage that we can use that music +function to add an articulation (like a fingering instruction) to a +single note inside of a chord which is not possible if we just merge +independent music. A @code{$variable} inside the @code{#@{...#@}} notation is like a regular @code{\variable} in classical LilyPond notation. We @@ -1172,10 +1318,10 @@ know that @noindent will not work in LilyPond. We could avoid this problem by attaching -the articulation to a fake note, +the articulation to an empty chord, @example -@{ << \music s1*0-.-> @} +@{ << \music <> -. -> >> @} @end example @noindent @@ -1187,140 +1333,147 @@ Scheme. We begin by examining our input and desired output, \displayMusic c4 ===> (make-music - 'EventChord - 'elements - (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch -1 0 0)))) + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)))) ===== % desired output \displayMusic c4-> ===> (make-music - 'EventChord - 'elements + 'NoteEvent + 'articulations (list (make-music - 'NoteEvent - 'duration - (ly:make-duration 2 0 1 1) - 'pitch - (ly:make-pitch -1 0 0)) - (make-music 'ArticulationEvent 'articulation-type - "marcato"))) + "accent")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)) @end example -We see that a note (@code{c4}) is represented as an @code{EventChord} -expression, with a @code{NoteEvent} expression in its elements list. To -add a marcato articulation, an @code{ArticulationEvent} expression must -be added to the elements property of the @code{EventChord} -expression. +We see that a note (@code{c4}) is represented as an @code{NoteEvent} +expression. To add an accent articulation, an @code{ArticulationEvent} +expression must be added to the @code{articulations} property of the +@code{NoteEvent} expression. To build this function, we begin with @example -(define (add-marcato event-chord) - "Add a marcato ArticulationEvent to the elements of `event-chord', - which is supposed to be an EventChord expression." - (let ((result-event-chord (ly:music-deep-copy event-chord))) - (set! (ly:music-property result-event-chord 'elements) - (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements))) - result-event-chord)) +(define (add-accent note-event) + "Add an accent ArticulationEvent to the articulations of `note-event', + which is supposed to be a NoteEvent expression." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) @end example The first line is the way to define a function in Scheme: the function -name is @code{add-marcato}, and has one variable called -@code{event-chord}. In Scheme, the type of variable is often clear +name is @code{add-accent}, and has one variable called +@code{note-event}. In Scheme, the type of variable is often clear from its name. (this is good practice in other programming languages, too!) @example -"Add a marcato..." +"Add an accent..." @end example @noindent is a description of what the function does. This is not strictly necessary, but just like clear variable names, it is good practice. -@example -(let ((result-event-chord (ly:music-deep-copy event-chord))) -@end example - -@code{let} is used to declare local variables. Here we use one local -variable, named @code{result-event-chord}, to which we give the value -@code{(ly:music-deep-copy event-chord)}. @code{ly:music-deep-copy} is -a function specific to LilyPond, like all functions prefixed by -@code{ly:}. It is use to make a copy of a music -expression. Here we copy @code{event-chord} (the parameter of the -function). Recall that our purpose is to add a marcato to an -@code{EventChord} expression. It is better to not modify the -@code{EventChord} which was given as an argument, because it may be -used elsewhere. - -Now we have a @code{result-event-chord}, which is a -@code{NoteEventChord} expression and is a copy of -@code{event-chord}. We add the marcato to its @code{'elements} -list property. +You may wonder why we modify the note event directly instead of working +on a copy (@code{ly:music-deep-copy} can be used for that). The reason +is a silent contract: music functions are allowed to modify their +arguments: they are either generated from scratch (like user input) or +are already copied (referencing a music variable with @samp{\name} or +music from immediate Scheme expressions @samp{$(@dots{})} provides a +copy). Since it would be inefficient to create unnecessary copies, the +return value from a music function is @emph{not} copied. So to heed +that contract, you must not use any arguments more than once, and +returning it counts as one use. + +In an earlier example, we constructed music by repeating a given music +argument. In that case, at least one repetition had to be a copy of its +own. If it weren't, strange things may happen. For example, if you use +@code{\relative} or @code{\transpose} on the resulting music containing +the same elements multiple times, those will be subjected to +relativation or transposition multiple times. If you assign them to a +music variable, the curse is broken since referencing @samp{\name} will +again create a copy which does not retain the identity of the repeated +elements. + +Now while the above function is not a music function, it will normally +be used within music functions. So it makes sense to heed the same +contract we use for music functions: the input may be modified for +producing the output, and the caller is responsible for creating copies +if it still needs the unchanged argument itself. If you take a look at +LilyPond's own functions like @code{music-map}, you'll find that they +stick with the same principles. + +Where were we? Now we have a @code{note-event} we may modify, not +because of using @code{ly:music-deep-copy} but because of a long-winded +explanation. We add the accent to its @code{'articulations} list +property. @example (set! place new-value) @end example -Here, what we want to set (the @q{place}) is the @code{'elements} -property of @code{result-event-chord} expression. +Here, what we want to set (the @q{place}) is the @code{'articulations} +property of @code{note-event} expression. @example -(ly:music-property result-event-chord 'elements) +(ly:music-property note-event 'articulations) @end example @code{ly:music-property} is the function used to access music properties -(the @code{'elements}, @code{'duration}, @code{'pitch}, etc, that we +(the @code{'articulations}, @code{'duration}, @code{'pitch}, etc, that we see in the @code{\displayMusic} output above). The new value is the -former @code{'elements} property, with an extra item: the +former @code{'articulations} property, with an extra item: the @code{ArticulationEvent} expression, which we copy from the @code{\displayMusic} output, @example (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements)) + 'articulation-type "accent") + (ly:music-property result-event-chord 'articulations)) @end example -@code{cons} is used to add an element to a list without modifying -the original list. This is what we want: the same list as before, -plus the new @code{ArticulationEvent} expression. The order -inside the @code{'elements} property is not important here. +@code{cons} is used to add an element to the front of a list without +modifying the original list. This is what we want: the same list as +before, plus the new @code{ArticulationEvent} expression. The order +inside the @code{'articulations} property is not important here. -Finally, once we have added the marcato articulation to its @code{elements} -property, we can return @code{result-event-chord}, hence the last line of -the function. +Finally, once we have added the accent articulation to its +@code{articulations} property, we can return @code{note-event}, hence +the last line of the function. -Now we transform the @code{add-marcato} function into a music -function, +Now we transform the @code{add-accent} function into a music +function (a matter of some syntactic sugar and a declaration of the type +of its sole @q{real} argument). @example -addMarcato = #(define-music-function (parser location event-chord) +addAccent = #(define-music-function (parser location note-event) (ly:music?) - "Add a marcato ArticulationEvent to the elements of `event-chord', - which is supposed to be an EventChord expression." - (let ((result-event-chord (ly:music-deep-copy event-chord))) - (set! (ly:music-property result-event-chord 'elements) - (cons (make-music 'ArticulationEvent - 'articulation-type "marcato") - (ly:music-property result-event-chord 'elements))) - result-event-chord)) + "Add an accent ArticulationEvent to the articulations of `note-event', + which is supposed to be a NoteEvent expression." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) @end example We may verify that this music function works correctly, @example -\displayMusic \addMarcato c4 +\displayMusic \addAccent c4 @end example @@ -1353,7 +1506,7 @@ TODO Find a simple example @lilypond[quote,verbatim,ragged-right] padText = #(define-music-function (parser location padding) (number?) #{ - \once \override TextScript #'padding = #$padding + \once \override TextScript #'padding = #padding #}) \relative c''' { @@ -1375,16 +1528,16 @@ We can use it to create new commands: @lilypond[quote,verbatim,ragged-right] tempoPadded = #(define-music-function (parser location padding tempotext) - (number? string?) + (number? markup?) #{ - \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } #}) \relative c'' { \tempo \markup { "Low tempo" } c4 d e f g1 - \tempoPadded #4.0 #"High tempo" + \tempoPadded #4.0 "High tempo" g4 f e d c1 } @end lilypond @@ -1395,7 +1548,7 @@ Even music expressions can be passed in: @lilypond[quote,verbatim,ragged-right] pattern = #(define-music-function (parser location x y) (ly:music? ly:music?) #{ - $x e8 a b $y b a e + #x e8 a b #y b a e #}) \relative c''{ diff --git a/Documentation/fr/GNUmakefile b/Documentation/fr/GNUmakefile index 33caa87f75..d9695cbb76 100644 --- a/Documentation/fr/GNUmakefile +++ b/Documentation/fr/GNUmakefile @@ -1,9 +1,7 @@ ISOLANG = fr depth = ../.. SUBDIRS = web learning notation texidocs usage included essay extending -STEPMAKE_TEMPLATES = documentation +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root -EXTRA_DIST_FILES = web.texi - include $(depth)/make/stepmake.make diff --git a/Documentation/fr/essay.tely b/Documentation/fr/essay.tely index f06b103b25..8d57136cb6 100644 --- a/Documentation/fr/essay.tely +++ b/Documentation/fr/essay.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 957ee70b1613ce33157486a1372827e7c1c9274f When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -23,7 +23,7 @@ par ordinateur à l'aide de LilyPond version @version{}. @c `Essay' was born 2002-06-03 with git commit e38f5fc... @macro copyrightDeclare -Copyright @copyright{} 2002--2011 par les auteurs. +Copyright @copyright{} 2002--2012 par les auteurs. @end macro @set FDL @@ -66,6 +66,7 @@ Copyright @copyright{} 2002--2011 par les auteurs. @node Index de LilyPond @appendix Index de LilyPond +@translationof LilyPond index @printindex cp diff --git a/Documentation/fr/essay/engraving.itely b/Documentation/fr/essay/engraving.itely index 7768d64365..a94fae9499 100644 --- a/Documentation/fr/essay/engraving.itely +++ b/Documentation/fr/essay/engraving.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: ec35c10a93b45b1f0dd721c54197a79d4207a92c + Translation of GIT committish: c8d018351dac201da482291ad1f14f3771a1a679 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude, John Mandereau, Gauvain Pocentek @@ -33,6 +33,7 @@ Ce chapitre traite des objectifs et de l'architecture de LilyPond. * Comparatif (BWV 861):: @end menu + @node L'histoire de LilyPond @section L'histoire de LilyPond @translationof The LilyPond story @@ -149,6 +150,7 @@ Henle no 666, @copyright{}2000@tie{}: @page @end iftex + @node La gravure en détails @section La gravure en détails @translationof Engraving details @@ -215,6 +217,7 @@ quoi LilyPond devait porter ses efforts. * La raison de tous ces efforts:: Pourquoi s'attacher aux détails @end menu + @node Fontes et polices @unnumberedsubsec Fontes et polices @translationof Music fonts @@ -306,6 +309,7 @@ forme de losange. La barre de notre bémol est comme brossée, le haut évidents à reconnaître à distance du fait que leurs barres transversales n'ont pas la même pente et que les verticales sont plus épaisses. + @node Espacement @unnumberedsubsec Espacement @translationof Optical spacing @@ -313,7 +317,7 @@ n'ont pas la même pente et que les verticales sont plus épaisses. Si l'on considère l'espacement, sa répartition devrait refléter la durée des notes. Néanmoins, et comme nous l'avons vu plus haut avec la suite de Bach, la plupart des éditions modernes se basent sur des durées à la -précision mathématique, ce qui entraine un effet des plus monotones. +précision mathématique, ce qui entraîne un effet des plus monotones. Dans l'exemple qui suit, le même motif est imprimé deux fois@tie{}: la première en appliquant un espacement chronométrique, la seconde avec quelques corrections. Quelle version remporte vos suffrages@tie{}? @@ -321,7 +325,6 @@ quelques corrections. Quelle version remporte vos suffrages@tie{}? @cindex optique et espacement @cindex espacement et effet d'optique - @lilypond \paper { ragged-right = ##t @@ -537,6 +540,7 @@ global = { @end lilypond @end ignore + @node La raison de tous ces efforts @unnumberedsubsec La raison de tous ces efforts @translationof Why work so hard? @@ -637,7 +641,7 @@ qui finalement ne les couvrirait pas tous. @end ifnottex @end quotation -@emph{Règles de formatages définies par l'exemple. Image tirée de +@emph{Règles de formatage définies par l'exemple. Image tirée de l'ouvrage de Ted Ross @qq{The Art of Music Engraving}} Plutôt que d'écrire une foultitude de règles qui embrasserait tous les @@ -649,7 +653,7 @@ terme de moins bonne qualité, et nous opterons pour celle étant la moins mauvaise. Voici, à titre d'exemple, trois configurations possibles pour le tracé -d'une liaison@tie{}; Lilypond leur attribue individuellement une @qq{note +d'une liaison@tie{}; LilyPond leur attribue individuellement une @qq{note de laideur}. Le premier essai se voit attribuer 15,39@tie{}points notamment pour l'effleurement de la tête de note. @@ -793,6 +797,7 @@ par la version la plus récente de LilyPond (@version{}). Sans être un clone de l'édition de référence, cette sortie est plus proche d'une qualité de publication que les précédentes. + @node Règles de formatage @unnumberedsubsec Règles de formatage @translationof Getting things right @@ -916,7 +921,7 @@ Beams}, que nous avons décidé de laisser de côté pour cet exemple. en résulte une lecture peu évidente lorsque les voix supérieure et inférieure de croisent temporairement@tie{}: -@c KEEPLY +@c KEEP LY @lilypond collide = \once \override NoteColumn #'force-hshift = #0 @@ -1084,7 +1089,7 @@ expressions sont intégrées dans une séquence@tie{}: @noindent Ceci constitue une nouvelle expression, qui peut être à son tour -combinée avec une autre expression simultanée (en l'occurence une +combinée avec une autre expression simultanée (en l'occurrence une blanche) à l'aide de @code{<<}, @code{\\} et @code{>>}@tie{}: @example @@ -1478,9 +1483,9 @@ vers le haut (ou la droite) pour le second. } @end lilypond -@cindex score formatting -@cindex formatting a score -@cindex formatting rules +@cindex partition, formatage +@cindex formatage d'une partition +@cindex formatage, règles de @noindent Le processus de mise en forme d'une partition consiste à lire et @@ -1653,10 +1658,7 @@ constructions@dots{} >> } >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 8) - } + \tempo 8 = 60 } \layout { \context { diff --git a/Documentation/fr/essay/literature.itely b/Documentation/fr/essay/literature.itely index 6473fba5ef..18e5f8d31a 100644 --- a/Documentation/fr/essay/literature.itely +++ b/Documentation/fr/essay/literature.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: c299f84d574ac9b97ab7ffbb640b5c3a1cdca5cc 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" +@c \version "2.16.0" @c Translators: Jean-Jacques Gerbaud, Valentin Villenave @c Translation checkers: Jean-Charles Malahieude @@ -99,11 +99,11 @@ de notation. @c Better left untranslated -vv @ignore -@subheading Colorado +@subheading Université du Colorado @include colorado.itexi -@subheading Notation informatique +@subheading Notation informatisée @include computer-notation.itexi diff --git a/Documentation/fr/extending.tely b/Documentation/fr/extending.tely new file mode 100644 index 0000000000..346c0e6e2d --- /dev/null +++ b/Documentation/fr/extending.tely @@ -0,0 +1,78 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- +@ignore + Translation of GIT committish: 3c62ac104645533873bba800f7b0f371089f535a + + 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 + +@setfilename lilypond-extending.info +@settitle GNU LilyPond -- Extension des fonctionnalités +@documentencoding UTF-8 +@documentlanguage fr +@afourpaper + +@c Translators: Jean-Charles Malahieude + +@macro manualIntro +Ce document constitue fournit les informations de base pour étendre les +fonctionnalités de LilyPond@tie{}version @version{}. +@end macro + +@c `Extending' was born 2003-04-23 with git commit c08f6e8... +@macro copyrightDeclare +Copyright @copyright{} 2003--2012 by par les auteurs. +@end macro + +@set FDL +@include macros.itexi + + +@c don't remove this comment. +@ignore +@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival +@omfdescription Programming extensions for the LilyPond music engraving system +@omftype program usage +@omfcategory Applications|Publishing +@omflanguage English +@end ignore + + +@lilyTitlePage{Extension des fonctionnalités} + + +@c TOC -- non-tex +@ifnottex + +@menu +* Tutoriel Scheme:: Programmation dans LilyPond. +* Interfaces pour programmeurs:: Comment dialoguer avec scheme. +* Interfaces LilyPond Scheme:: Obtention d'information dans la musique et autour + +Appendices + +* GNU Free Documentation License:: Licence de ce document. +* Index de LilyPond:: +@end menu + +@docMain +@end ifnottex + + +@contents + +@allowcodebreaks false + +@include extending/scheme-tutorial.itely +@include extending/programming-interface.itely + +@include fdl.itexi + +@node Index de LilyPond +@appendix Index de LilyPond +@translationof LilyPond index + +@printindex cp + +@bye diff --git a/Documentation/fr/extending/programming-interface.itely b/Documentation/fr/extending/programming-interface.itely index a66da00d6c..d27cc41622 100644 --- a/Documentation/fr/extending/programming-interface.itely +++ b/Documentation/fr/extending/programming-interface.itely @@ -1,255 +1,1289 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 3f4496001441e0b1b27d7bc5395c4520f4f2088c + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" - -@c Translators: Valentin Villenave -@c Translation checkers: Gilles Thibault, Jean-Charles Malahieude +@c \version "2.16.0" +@c Translators: Valentin Villenave, Jean-Charles Malahieude +@c Translation checkers: Gilles Thibault -@node Interfaces pour les programmeurs -@chapter Interfaces pour les programmeurs +@node Interfaces pour programmeurs +@chapter Interfaces pour programmeurs @translationof Interfaces for programmers -@untranslated - +Scheme permet de réaliser des affinages très pointus. Si vous ne +connaissez rien de Scheme, vous en aurez un aperçu au travers de notre +@ref{Tutoriel Scheme}. @menu +* Blocs de code LilyPond:: +* Fonctions Scheme:: * Fonctions musicales:: -* Interfaces de programmation:: -* Construction de fonctions complexes:: -* Interface de programmation des marqueurs de texte:: +* Fonctions événementielles:: +* Fonctions pour markups:: * Contextes pour programmeurs:: -* Utilisation de procédures Scheme en tant que propriétés:: -* Utilisation de code Scheme au lieu de \"tweak\":: +* Fonctions de rappel:: +* Code Scheme intégré:: * Retouches complexes:: @end menu + +@node Blocs de code LilyPond +@section Blocs de code LilyPond +@translationof Lilypond code blocks + +Les blocs de code LilyPond ressemblent à +@example + #@{ @var{du code LilyPond} #@} +@end example +Ils peuvent s'utiliser partout où vous pouvez écrire du code Scheme. +Le lecteur Scheme est en fait quelque peu adapté pour accepter des blocs +de code LilyPond ; il est capable de traiter des expressions Scheme +intégrées débutant par @code{$} ou @code{#}. + +Le lecteur Scheme extrait le bloc de code LilyPond et déclenche un appel +à l'analyseur grammatical de LilyPond (le @code{parser}) qui réalise en +temps réel l'interprétation de ce bloc de code LilyPond. Toute +expression Scheme imbriquée est exécutée dans l'environnement lexical du +bloc de code LilyPond, de telle sorte que vous avez accès aux variables +locales et aux paramètres de la fonction au moment même où le bloc de +code LilyPond est écrit. + +Un bloc de code LilyPond peut contenir tout ce que vous pourriez mettre +à droite de l'assignation. Par ailleurs, un bloc LilyPond vide +correspond à une expression fantôme, et un bloc LilyPond de multiples +événements musicaux sera transformé en une expression de musique +séquentielle. + + +@node Fonctions Scheme +@section Fonctions Scheme +@translationof Scheme functions + +@cindex Scheme, fonctions (syntaxe LilyPond) + +Les @emph{fonctions Scheme} sont des procédures Scheme chargées de créer +des expressions Scheme à partir de code rédigé selon la syntaxe de +LilyPond. Elles peuvent être appelées en de nombreux endroits, à l'aide +d'un @code{#}, où spécifier une valeur en syntaxe Scheme est autorisé. +Bien que Scheme dispose de fonctions en propre, nous nous intéresserons, +au fil des paragraphes qui suivent, aux fonctions @emph{syntaxiques}, +autrement dit des fonctions qui reçoivent des arguments libellés dans la +syntaxe de LilyPond. + +@menu +* Définition de fonctions Scheme:: +* Utilisation de fonctions Scheme:: +* Fonctions Scheme fantômes:: +@end menu + +@node Définition de fonctions Scheme +@subsection Définition de fonctions Scheme +@translationof Scheme function definitions + +@funindex define-scheme-function + +D'une manière générale, une fonction Scheme se définit ainsi : + +@example +fonction = +#(define-scheme-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{type1?} @var{type2?} @dots{}) + @var{corps}) +@end example + +@noindent +où + +@multitable @columnfractions .33 .66 +@item @code{parser} +@tab doit être littéralement @code{parser}, de telle sorte que +l'analyseur grammatical puisse accéder aux blocs de code LilyPond +(@code{#@{}@dots{}@code{#@}}). + +@item @code{@var{argN}} +@tab @var{n}ième argument + +@item @code{@var{typeN?}} +@tab un @emph{type de prédicat} Scheme pour lequel @code{@var{argN}} +devra retourner @code{#t}. Certains de ces prédicats, comme nous le +verrons plus loin, bénéficient d'un traitement particulier de la part du +@emph{parser}. De même existe une forme spécifique -- +@code{(@emph{prédicat?} @emph{default})} -- qui permet de fournir des +argument optionnels. En l'absence d'argument réel au moment de l'appel +de la fonction, c'est la valeur par défaut qui lui sera substituée. Les +valeurs par défaut sont évaluées dès l'apparition de la définition, y +compris dans le cas de blocs de code LilyPond ; vous devrez donc, +si ces valeurs par défaut ne peuvent être déterminées que plus tard, +mentionner une valeur spéciale que vous reconnaîtrez facilement. +Lorsque vous mentionnez un prédicat entre parenthèses sans toutefois +fournir sa valeur par défaut, celle-ci sera considérée comme étant +@code{#f}. Les valeurs par défaut d'un @code{prédicat?} ne sont +vérifiées ni au moment de la définition, ni à l'exécution ; il est +de votre ressort de gérer les valeurs que vous spécifiez. Une valeur +par défaut constituée d'une expression musicale est recopiée dès la +définition de @code{origin} vers le paramètre @code{location}. + +@item @code{@var{corps}} +@tab une séquence de formules Scheme évaluées dans l'ordre, la dernière +servant de valeur de retour de la fonction. Il peut contenir des blocs +de code LilyPond, enchâssés dans des accolades et @emph{hashes} -- +@w{@code{#@{@dots{}#@}}}  -- comme indiqué à la rubrique +@ref{Blocs de code LilyPond}. Au sein d'un bloc de code LilyPond, un +@code{#} permet de référencer des arguments de la fonction -- tel +@samp{#arg1} -- ou d'ouvrir une expression Scheme contenant les +arguments de la fonction -- par exemple @w{@samp{#(cons arg1 arg2)}}. +Dans le cas où une expression Scheme introduite par @code{#} ne vous +permet pas de parvenir à vos fins, vous pourriez devoir revenir à une +expression Scheme @qq{immédiate} à l'aide d'un @code{$}, comme +@samp{$music}. + +Lorsque votre fonction retourne une expression musicale, lui est +attribuée la valeur @code{origin}. +@end multitable + +@noindent +Certains types de prédicat font l'objet d'un traitement spécial de la +part de l'analyseur grammatical, dans la mesure où il n'a aucun autre +moyen de reconnaître efficacement les arguments. Il s'agit, à l'heure +actuelle, de @code{ly:pitch?} et @code{ly:duration?}. + +Pour tous les autres prédicats, la recevabilité des arguments est +déterminée par un appel effectif au prédicat après que LilyPond les a +déjà converti en expression Scheme. Par voie de conséquence, l'argument +peut tout à fait se libeller en syntaxe Scheme -- introduite par un +@code{#} ou en tant que résultat d'un appel à une fonction Scheme. Par +ailleurs, LilyPond convertira en Scheme un certain nombre de +constructions purement LilyPond avant même d'en avoir vérifié le +prédicat. C'est notamment le cas de la musique, des +@emph{postévénements}, des chaînes simples (avec ou sans guillemets), +des nombres, des @emph{markups} et listes de @emph{markups}, ainsi que +des blocs @emph{score}, @emph{book}, @emph{bookpart}, ou qui définissent +un contexte ou un format de sortie. + +Il existe certaines formes d'expression, comme la plupart du temps où la +musique n'est pas bornée par des accolades, où LilyPond doit lire +au-delà de cette même expression afin d'en déterminer la fin. Si une +telle expression devait, après évaluation du prédicat, faire l'objet +d'un argument optionnel, LilyPond n'aurait aucun moyen, à partir du +moment où il aura décidé que l'expression ne correspond pas au +paramètre, de @qq{revenir en arrière}. C'est la raison pour laquelle +certaines formes musicales devraient être bornées par des accolades pour +que LilyPond puisse les reconnaître efficacement. Il existe d'autres +situations pour lesquelles LilyPond lèvera toute ambiguïté grâce aux +fonctions de prédicat : un @samp{-3} est-il un @emph{postévénement} +de type doigté ou un nombre négatif@tie{}? Un @code{"a" 4} en mode +paroles est-il une chaîne suivie d'un nombre ou bien un événement +syllabe de durée @code{4} ? LilyPond répondra à ces questions +après consultation du prédicat. Pour toutes ces raisons, nous vous +enjoignons à éviter d'utiliser des prédicats permissifs tel que +@code{scheme?}, dès que vous voulez les utiliser dans un but particulier +plutôt que dans une fonction de portée générale. + +Les différents types des prédicat propres à LilyPond sont recensés à +l'annexe @ruser{Types de prédicats prédéfinis}. + +@seealso +Manuel de notation : +@ruser{Types de prédicats prédéfinis}. + +Fichiers d'initialisation : +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm}. + + +@node Utilisation de fonctions Scheme +@subsection Utilisation de fonctions Scheme +@translationof Scheme function usage + +Vous pouvez appeler une fonction Scheme pratiquement partout où une +expression Scheme derrière un @code{#} peut prendre place. Vous appelez +une fonction Scheme en faisant précéder son nom d'un @code{\}, et en le +faisant suivre de ses arguments. Lorsqu'un prédicat d'argument +optionnel ne correspond pas à un argument, LilyPond l'ignore ainsi que +tous les arguments optionnels qui suivent, les remplaçant par leur +valeur par défaut, et @qq{sauvegarde} en tant que prochain argument +obligatoire l'argument qui ne correspondait pas. Dans la mesure où +l'argument sauvegardé doit servir, les argument optionnels ne sont en +fait pas considérés comme optionnels, sauf à être suivis d'un argument +obligatoire. + +Une exception cependant à cette règle : le fait de donner un +@code{\default} en tant qu'argument optionnel aura pour résultat que cet +argument et tous les autres arguments optionnels qui suivent seront +ignorés et remplacés par leur valeur par défaut. Il en va de même +lorsqu'aucun argument obligatoire ne suit, du fait que @code{\default} +ne requiert pas de sauvegarde. C'est d'ailleurs ainsi que fonctionnent +les commandes @code{mark} et @code{key}, qui retrouvent leur +comportement par défaut lorsque vous les faites suivre d'un +@code{\default}. + +En plus de là où une expression Scheme est requise, il y a quelques +endroits où des expressions @code{#} sont acceptées et évaluées +uniquement pour leurs effets annexes. Il s'agit, dans la plupart des +cas, d'endroits où une affectation serait tout à fait envisageable. + +Dans la mesure où il n'est pas bon de renvoyer une valeur qui pourrait +être mal interprétée dans certains contextes, nous vous enjoignons à +utiliser des fonctions Scheme normales uniquement dans les cas où vous +renvoyez toujours une valeur utile, et une fonction fantôme -- voir +@ref{Fonctions Scheme fantômes} -- dans le cas contraire. + + +@node Fonctions Scheme fantômes +@subsection Fonctions Scheme fantômes +@translationof Void scheme functions + +@cindex @emph{void}, fonction +@cindex fantôme, fonction + +@funindex define-void-function +@funindex \void + +Il arrive qu'une procédure soit exécutée pour réaliser une action, non +pour renvoyer une valeur. Certains langages de programmation, tels +le C et Scheme, utilisent des fonctions dans les deux cas et se +débarrassent tout bonnement de la valeur renvoyée ; en règle +générale, il suffit que l'expression fasse office de déclaration, et +d'ignorer le résultat. C'est futé, mais pas sans risque d'erreur : +la plupart des compilateurs C actuels déclenchent un avertissement si +l'on se débarrasse de certaines expressions non @emph{void}. Pour de +nombreuses fonctions réalisant une action, les standards Scheme +déclarent que la valeur de retour est indéfinie. L'interpréteur Guile +qu'utilise le Scheme de LilyPond dispose d'une valeur unique +@code{*unspecified*} qu'il retourne alors, en règle générale -- notamment +lorsqu'on utilise @code{set!} directement sur une variable -- mais +malheureusement pas toujours. + +Une fonction LilyPond définie à l'aide de la clause +@code{define-void-function} vous apporte l'assurance que c'est cette +valeur spéciale -- la seule valeur qui satisfasse au prédicat +@code{void?} -- qui sera retournée. + +@example +noPointAndClick = +#(define-void-function + (parser location) + () + (ly:set-option 'point-and-click #f)) +... +\noPointAndClick % desactive le "pointer-cliquer" +@end example + +L'utilisation d'un préfixe @code{\void} permet ainsi d'évaluer une +expression pour ses effets annexes sans interprétation d'une quelconque +valeur de retour : + +@example +\void #(hashq-set! une-table une-clé une-valeur) +@end example + +Vous serez alors assuré que LilyPond ne tentera pas d'affecter un sens à +la valeur de retour, à quelque endroit qu'elle ressorte. Ceci est aussi +opérationnel dans le cadre de fonctions musicales telles que +@code{\displayMusic}. + + @node Fonctions musicales @section Fonctions musicales @translationof Music functions -@untranslated +@cindex musicale, fonction +Les @emph{fonctions musicales} sont des procédures Scheme capables de +créer automatiquement des expressions musicales ; elles permettent +de grandement simplifier un fichier source. @menu -* Aperçu des fonctions musicales:: +* Définition de fonctions musicales:: +* Utilisation de fonctions musicales:: * Fonctions de substitution simple:: -* Fonctions de substitution par paire:: +* Fonctions de substitution intermédiaires:: * De l'usage des mathématiques dans les fonctions:: -* Fonctions fantômes:: * Fonctions dépourvues d'argument:: -* Liste des fonctions musicales prédéfinies:: +* Fonctions musicales fantômes:: @end menu -@node Aperçu des fonctions musicales -@subsection Aperçu des fonctions musicales -@translationof Overview of music functions -@untranslated +@node Définition de fonctions musicales +@subsection Définition de fonctions musicales +@translationof Music function definitions + +@cindex fonction musicale, définition + +@funindex define-music-function + +Une fonction musicale se définit ainsi : + +@example +fonction = +#(define-music-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{type1?} @var{type2?} @dots{}) + @var{corps}) +@end example + +@noindent +de manière similaire aux @ref{Définition de fonctions Scheme, fonctions +Scheme}. La plupart du temps, le @code{corps} sera constitué d'un +@ref{Blocs de code LilyPond, bloc de code Lilypond}. + +Les différents types des prédicat sont recensés à l'annexe +@ruser{Types de prédicats prédéfinis}. + +@seealso +Manuel de notation : +@ruser{Types de prédicats prédéfinis}. + +Fichiers d'initialisation : +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm}. + + +@node Utilisation de fonctions musicales +@subsection Utilisation de fonctions musicales +@translationof Music function usage + +Une fonction musicale peut prendre place en différents endroits. +Certaines restrictions s'appliqueront selon l'endroit où elle est +utilisée, de telle sorte que l'analyse syntaxique soit sans ambiguïté. +Le résultat renvoyé par une fonction musicale doit être compatible avec +le contexte dans lequel elle est appelée. + +@itemize +@item +Dans une expression musicale de haut niveau@tie{}: aucune restriction. + +@item +En tant que post-événement, explicitement introduit par un indicateur de +positionnement -- à savoir @code{-}, @code{^}, ou@tie{}@code{_}. Notez +bien que le renvoi d'un post-événement est valide lorsque la fonction +musicale est appelée comme de la musique normale ; ceci amène à un +résultat ressemblant à +@example +s 1*0-\fonction +@end example + +Dans ce cas particulier, vous ne pouvez utiliser une expression musicale +@emph{ouverte} en tant que dernier argument -- argument qui se +composerait d'une expression musicale susceptible d'accepter des +post-événements additionnels. + +@item +En tant que partie d'un accord. L'expression musicale renvoyée doit +être du type @code{rhythmic-event}, et plus particulièrement un +@code{NoteEvent}. +@end itemize + +@noindent +Les règles spécifiques en matière d'arguments de fin rendent possible +l'écriture de fonctions polymorphes telles que @code{\tweak}, qui +peuvent s'appliquer à différentes constructions. @node Fonctions de substitution simple @subsection Fonctions de substitution simple @translationof Simple substitution functions -@untranslated +Une fonction de substitution simple renvoie une expression musicale +écrite au format LilyPond et contient des arguments au format de +l'expression résultante. Vous en trouverez une description détaillée à +la rubrique @ruser{Exemples de fonction de substitution}. + + +@node Fonctions de substitution intermédiaires +@subsection Fonctions de substitution intermédiaires +@translationof Intermediate substitution functions + +Une fonction de substitution intermédiaire est une fonction dont +l'expression musicale résultante mélangera du code Scheme au code +LilyPond. + +Certaines commandes @code{\override} nécessitent un argument +supplémentaire constitué d'une paire de nombres, appelée @emph{cons +cell} en Scheme -- que l'on pourrait traduire par @qq{construction de +cellule}. +Cette paire peut se mentionner directement dans la fonction musicale à +l'aide d'une variable @code{pair?} : -@node Fonctions de substitution par paire -@subsection Fonctions de substitution par paire -@translationof Paired substitution functions +@example +manualBeam = +#(define-music-function + (parser location beg-end) + (pair?) + #@{ + \once \override Beam #'positions = #beg-end + #@}) + +\relative c' @{ + \manualBeam #'(3 . 6) c8 d e f +@} +@end example + +Autre manière de procéder, les nombres formant la paire sont transmis +comme arguments séparés ; le code Scheme chargé de créer la paire +pourra alors être inclus dans l'expression musicale : -@untranslated +@lilypond[quote,verbatim,ragged-right] +manualBeam = +#(define-music-function + (parser location beg end) + (number? number?) + #{ + \once \override Beam #'positions = #(cons beg end) + #}) + +\relative c' { + \manualBeam #3 #6 c8 d e f +} +@end lilypond @node De l'usage des mathématiques dans les fonctions @subsection De l'usage des mathématiques dans les fonctions @translationof Mathematics in functions -@untranslated +Une fonction musicale peut requérir, en plus d'une simple substitution, +une part de programmation en Scheme. +@lilypond[quote,verbatim,ragged-right] +AltOn = +#(define-music-function + (parser location mag) + (number?) + #{ + \override Stem #'length = #(* 7.0 mag) + \override NoteHead #'font-size = + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #}) + +AltOff = { + \revert Stem #'length + \revert NoteHead #'font-size +} -@node Fonctions fantômes -@subsection Fonctions fantômes -@translationof Void functions +\relative c' { + c2 \AltOn #0.5 c4 c + \AltOn #1.5 c c \AltOff c2 +} +@end lilypond -@untranslated +@noindent +Cette fonction pourrait tout à fait être réécrite de telle sorte qu'elle +s'applique à une expression musicale : + +@lilypond[quote,verbatim,ragged-right] +withAlt = +#(define-music-function + (parser location mag music) + (number? ly:music?) + #{ + \override Stem #'length = #(* 7.0 mag) + \override NoteHead #'font-size = + #(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) + #music + \revert Stem #'length + \revert NoteHead #'font-size + #}) + +\relative c' { + c2 \withAlt #0.5 { c4 c } + \withAlt #1.5 { c c } c2 +} +@end lilypond @node Fonctions dépourvues d'argument @subsection Fonctions dépourvues d'argument @translationof Functions without arguments -@untranslated +Dans la plupart des cas, une fonction dépourvue d'argument devrait +être créée à l'aide d'une variable : +@example +dolce = \markup@{ \italic \bold dolce @} +@end example -@node Liste des fonctions musicales prédéfinies -@subsection Liste des fonctions musicales prédéfinies -@translationof Overview of available music functions +Il peut, dans certains cas particuliers, s'avérer utile de créer une +fonction sans argument comme ici, -@untranslated +@example +displayBarNum = +#(define-music-function + (parser location) + () + (if (eq? #t (ly:get-option 'display-bar-numbers)) + #@{ \once \override Score.BarNumber #'break-visibility = ##f #@} + #@{#@})) +@end example +@noindent +de manière à pouvoir afficher les numéros de mesure grâce à un appel à +cette fonction. En pareil cas, vous devrez invoquer @command{lilypond} +en respectant la syntaxe -@include identifiers.tely -@node Interfaces de programmation -@section Interfaces de programmation -@translationof Programmer interfaces +@example +lilypond -d display-bar-numbers MONFICHIER.ly +@end example -@untranslated +@node Fonctions musicales fantômes +@subsection Fonctions musicales fantômes +@translationof Void music functions -@menu -* Variables d'entrée et Scheme:: -* Représentation interne de la musique:: -@end menu +Une fonction musicale doit renvoyer une expression musicale. Toutefois, +une fonction musicale peut n'être exécutée que dans le but d'en retenir +les effets annexes ; vous devrez alors utiliser une procédure +@code{define-void-function}. Il peut cependant arriver que vous ayez +besoin d'une fonction qui, selon le cas, produise ou non (comme dans +l'exemple de la rubrique précédente) une expression musicale. +L'utilisation d'un @code{#@{ #@}} vous permettra de renvoyer une +expression musicale @code{void}. -@node Variables d'entrée et Scheme -@subsection Variables d'entrée et Scheme -@translationof Input variables and Scheme -@untranslated +@node Fonctions événementielles +@section Fonctions événementielles +@translationof Event functions +@funindex define-event-function +@cindex événementielle, fonction -@node Représentation interne de la musique -@subsection Représentation interne de la musique -@translationof Internal music representation +L'utilisation d'une fonction musicale pour placer un événement requiert +l'insertion d'un indicateur de position, ce qui peut ne pas correspondre +à la syntaxe de la construction à remplacer. C'est par exemple le cas +lorsque vous voulez écrire une commande de nuance, instruction qui +ne comporte habituellement pas d'indicateur de positionnement, comme +dans @code{c'\pp}. Voici de quoi vous permettre de mentionner n'importe +quelle nuance : -@untranslated +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } +@end lilypond +Vous pourriez obtenir le même résultat avec une fonction musicale, à +ceci près que chaque appel à la fonction devra être précédé d'un +indicateur de positionnement, comme @code{c-\dyn pfsss}. -@node Construction de fonctions complexes -@section Construction de fonctions complexes -@translationof Building complicated functions -@untranslated +@node Fonctions pour markups +@section Fonctions pour @emph{markups} +@translationof Markup functions +Les @emph{markups} sont implémentés au travers de fonctions Scheme +spécifiques qui produisent des objets @code{Stencil} comprenant un +certain nombre d'arguments. @menu -* Affichage d'expressions musicales:: -* Propriétés de la musique:: -* Exemple : redoubler une note avec liaison:: -* Exemple : ajouter une articulation à plusieurs notes:: +* Construction d'un markup en Scheme:: +* Fonctionnement interne des markups:: +* Définition d'une nouvelle commande de markup:: +* Définition d'une nouvelle commande de liste de markups:: @end menu -@node Affichage d'expressions musicales -@subsection Affichage d'expressions musicales -@translationof Displaying music expressions -@untranslated +@node Construction d'un markup en Scheme +@subsection Construction d'un @emph{markup} en Scheme +@translationof Markup construction in Scheme + +@cindex définition d'une commande markup + +La macro @code{markup} construit en Scheme des expressions @emph{markup} +tout en disposant d'une syntaxe proche de celle de LilyPond. Par exemple, +@example +(markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world") + #:larger #:line ("foo" "bar" "baz"))) +@end example + +@noindent +est équivalent à +@example +#@{ \markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @} + \larger \line @{ foo bar baz @} @} #@} +@end example +@noindent +Vous pouvez constater les principales règles de traduction entre les +syntaxes respectives de LilyPond et de Scheme en matière de +@emph{markup}. Bien que le passage en syntaxe LilyPond grâce à +@code{#@{ @dots{} #@}} apporte de la souplesse, nous allons voir comment +utiliser la macro @code{markup} en Scheme exclusivement. + +@quotation +@multitable @columnfractions .3 .3 +@item @b{LilyPond} @tab @b{Scheme} +@item @code{\markup markup1} @tab @code{(markup markup1)} +@item @code{\markup @{ markup1 markup2 ... @}} @tab + @code{(markup markup1 markup2 ... )} +@item @code{\commande-markup} @tab @code{#:commande-markup} +@item @code{\variable} @tab @code{variable} +@item @code{\center-column @{ ... @}} @tab @code{#:center-column ( ... )} +@item @code{chaîne} @tab @code{"chaîne"} +@item @code{#argument-scheme} @tab @code{argument-scheme} +@end multitable +@end quotation + +L'intégralité du langage Scheme est accessible à l'intérieur même de la +macro @code{markup}. Vous pouvez ainsi appeler des fonctions à partir +de @code{markup} pour manipuler des chaînes de caractères, ce qui est +particulièrement pratique lorsque vous créez votre propre commande de +@emph{markup} -- voir +@ref{Définition d'une nouvelle commande de markup}. + +@knownissues +L'argument @var{markup-list} des commandes @code{#:line}, +@code{#:center} ou @code{#:column} ne saurait être une variable ni le +résultat de l'appel à une fonction. + +@lisp +(markup #:line (fonction-qui-retourne-des-markups)) +@end lisp -@node Propriétés de la musique -@subsection Propriétés de la musique -@translationof Music properties +@noindent +n'est pas valide. Il vaut mieux, en pareil cas, utiliser les fonctions +@code{make-line-markup}, @code{make-center-markup} ou +@code{make-column-markup} : -@untranslated +@lisp +(markup (make-line-markup (fonction-qui-retourne-des-markups))) +@end lisp -@node Exemple : redoubler une note avec liaison -@subsection Exemple : redoubler une note avec liaison -@translationof Doubling a note with slurs (example) +@node Fonctionnement interne des markups +@subsection Fonctionnement interne des @emph{markups} +@translationof How markups work internally -@untranslated +Dans un @emph{markup} tel que +@example +\raise #0.5 "text example" +@end example -@node Exemple : ajouter une articulation à plusieurs notes -@subsection Exemple : ajouter une articulation à plusieurs notes -@translationof Adding articulation to notes (example) +@noindent +@code{\raise} représente en fait la fonction @code{raise-markup}. +L'expression @emph{markup} est enregistrée sous la forme -@untranslated +@example +(list raise-markup 0.5 (list simple-markup "text example")) +@end example +Lorsque ce @emph{markup} est converti en objets imprimables (stencils), +la fonction @code{raise-markup} est appelée ainsi : -@node Interface de programmation des marqueurs de texte -@section Interface de programmation des marqueurs de texte -@translationof Markup programmer interface +@example +(apply raise-markup + @var{\layout objet} + @var{liste des alists de propriété} + 0.5 + @var{le @emph{markup} "text example"}) +@end example -@untranslated +La fonction @code{raise-markup} commence par créer le stencil pour la +chaîne @code{text example}, puis remonte ce stencil d'un demi espace de +portée. Il s'agit là d'un exemple relativement simple, et nous en +aborderons de plus complexes au fil des paragraphes suivants ; +d'autres exemples se trouvent directement dans le fichier +@file{scm/define-markup-commands.scm}. +@node Définition d'une nouvelle commande de markup +@subsection Définition d'une nouvelle commande de @emph{markup} +@translationof New markup command definition + +Nous allons étudier dans ce qui suit la manière de définir une nouvelle +commande de @emph{markup}. + @menu -* Construction Scheme d'un marqueur:: -* Fonctionnement interne des marqueurs:: -* Définition d'une nouvelle commande de marqueur:: -* Définition d'une nouvelle commande de liste de marqueurs:: +* Syntaxe d'une commande markup:: +* Attribution de propriétés:: +* Exemple commenté:: +* Adaptation d'une commande incorporée:: @end menu -@node Construction Scheme d'un marqueur -@subsection Construction Scheme d'un marqueur -@translationof Markup construction in Scheme -@untranslated +@node Syntaxe d'une commande markup +@unnumberedsubsubsec Syntaxe d'une commande @emph{markup} +@translationof Markup command definition syntax + +Une commande de @emph{markup} personnalisée se définit à l'aide de la +macro Scheme @code{define-markup-command}, placée en tête de fichier. + +@lisp +(define-markup-command (@var{nom-commande} @var{layout} @var{props} @var{arg1} @var{arg2} ...) + (@var{arg1-type?} @var{arg2-type?} ...) + [ #:properties ((@var{propriété1} @var{valeur-par-défaut1}) + ...) ] + ..corps de la commande..) +@end lisp + +Quelques commentaires sur les arguments : + +@table @code +@item @var{nom-commande} +le nom que vous attribuez à votre commande de @emph{markup}. +@item layout +la définition du @qq{layout} -- son formatage. +@item props +une liste de listes associatives, comprenant toutes les propriétés actives. +@item @var{argi} +le @var{ième} argument de la commande. +@item @var{argi-type?} +un type de prédicat pour le @var{ième} argument. +@end table + +Si la commande utilise des propriétés à partir des arguments +@code{props}, le mot-clé @code{#:properties} permet de spécifier ces +différentes propriétés ainsi que leur valeur par défaut. + +Les arguments se distinguent selon leur type : +@itemize +@item un @emph{markup}, correspondant au type de prédicat +@code{markup?}@tie{}; +@item une liste de @emph{markups}, correspondant au type de prédicat +@code{markup-list?}@tie{}; +@item tout autre objet Scheme, correspondant au types de prédicat tels +que @code{list?}, @code{number?}, @code{boolean?}, etc. +@end itemize +Il n'existe aucune restriction quant à l'ordre des arguments fournis à +la suite des arguments @code{layout} et @code{props}. Néanmoins, les +fonctions @emph{markup} qui ont en dernier argument un @emph{markup} ont +ceci de particulier qu'elles peuvent s'appliquer à des listes de +@emph{markups} ; ceci résultera en une liste de @emph{markups} où +tous les éléments de la liste originelle se verront appliquer cette +fonction @emph{markup} avec ses arguments de tête. -@node Fonctionnement interne des marqueurs -@subsection Fonctionnement interne des marqueurs -@translationof How markups work internally +La réplication des arguments de tête dans le but d'appliquer une +fonction @emph{markup} à une liste de markups est économique, +principalement lorsqu'il s'agit d'arguments Scheme. Vous éviterez +ainsi d'éventuelles pertes de performance en utilisant des arguments +Scheme en tant qu'arguments principaux d'une fonction @emph{markup} dont +le dernier argument est un @emph{markup}. -@untranslated +@node Attribution de propriétés +@unnumberedsubsubsec Attribution de propriétés +@translationof On properties -@node Définition d'une nouvelle commande de marqueur -@subsection Définition d'une nouvelle commande de marqueur -@translationof New markup command definition +Les arguments @code{layout} et @code{props} d'une commande de +@emph{markup} fournissent un contexte à l'interprétation du +@emph{markup} : taille de fonte, longueur de ligne etc. -@untranslated +L'argument @code{layout} permet d'accéder aux propriétés définies dans +les blocs @code{\paper}, grâce à la fonction +@code{ly:output-def-lookup}. Par exemple, la longueur de ligne, +identique à celle de la partition, est lue au travers de + +@example +(ly:output-def-lookup layout 'line-width) +@end example + +L'argument @code{props} rend certaines propriétés accessibles aux +commandes de @emph{markup}. Il en va ainsi lors de l'interprétation +d'un @emph{markup} de titre d'ouvrage : toutes les variables +définies dans le bloc @code{\header} sont automatiquement ajoutées aux +@code{props}, de telle sorte que le @emph{markup} de titrage de +l'ouvrage pourra accéder aux différents champs titre, compositeur etc. +Ceci permet aussi de configurer le comportement d'une commande de +@emph{markup} : la taille des fontes, par exemple, est lue à +partir de @code{props} plutôt que grâce à un argument @code{font-size}. +La fonction appelant une commande de @emph{markup} peut altérer la +valeur de la propriété taille des fontes et donc en modifier le +comportement. L'utilisation du mot-clé @code{#:properties}, attaché à +@code{define-markup-command}, permet de spécifier les propriétés devant +être lues parmi les arguments @code{props}. + +L'exemple proposé à la rubrique suivante illustre comment, au sein d'une +commande de @emph{markup}, accéder aux différentes propriétés et les +modifier. + + +@node Exemple commenté +@unnumberedsubsubsec Exemple commenté +@translationof A complete example + +Nous allons, dans cet exemple, nous attacher à encadrer du texte avec un +double liseré. + +Commençons par construire quelque chose d'approximatif à l'aide d'un +simple @emph{markup}. La lecture de @ruser{Commandes pour markup} nous +indique la commande @code{\box}, qui semble ici appropriée. + +@lilypond[quote,verbatim,ragged-right] +\markup \box \box HELLO +@end lilypond +Dans un souci d'esthétique, nous aimerions que le texte et les +encadrements ne soient pas autant accolés. Selon la documentation de +@code{\box}, cette commande utilise la propriété @code{box-padding}, +fixée par défaut à 0,2. Cette même documentation nous indique +aussi comment la modifier : -@node Définition d'une nouvelle commande de liste de marqueurs -@subsection Définition d'une nouvelle commande de liste de marqueurs +@lilypond[quote,verbatim,ragged-right] +\markup \box \override #'(box-padding . 0.6) \box A +@end lilypond + +L'espacement des deux liserés est cependant toujours trop réduit ; +modifions le à son tour : + +@lilypond[quote,verbatim,ragged-right] +\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box A +@end lilypond + +Vous conviendrez que recopier une telle définition de @emph{markup} +deviendra vite fastidieux. C'est pourquoi nous écrivons la commande de +@emph{markup} @code{double-box} qui prendra un seul argument -- le +texte. Cette commande se chargera de dessiner les encadrements, en +tenant compte des espacements. + +@lisp +#(define-markup-command (double-box layout props text) (markup?) + "Dessine un double encadrement autour du texte." + (interpret-markup layout props + #@{\markup \override #'(box-padding . 0.4) \box + \override #'(box-padding . 0.6) \box @{ #text @}#@})) +@end lisp + +ou bien son équivalent + +@lisp +#(define-markup-command (double-box layout props text) (markup?) + "Dessine un double encadrement autour du texte." + (interpret-markup layout props + (markup #:override '(box-padding . 0.4) #:box + #:override '(box-padding . 0.6) #:box text))) +@end lisp + +@code{text} est le nom de l'argument de notre commande, et +@code{markup?} son type -- l'argument sera identifié comme étant un +@emph{markup}. La fonction @code{interpret-markup}, utilisée dans la +plupart des commandes de @emph{markup}, construira un stencil à partir +de @code{layout}, @code{props} et un @emph{markup}. Dans la seconde +variante, ce @emph{markup} sera construit à l'aide de la macro Scheme +@code{markup} -- voir @ref{Construction d'un markup en Scheme}. La +transformation d'une expression @code{\markup} en expression Scheme est +des plus triviales. + +Notre commande personnalisée s'utilise ainsi : + +@example +\markup \double-box A +@end example + +Il serait intéressant de rendre cette commande @code{double-box} plus +souple@tie{}: les valeurs de @code{box-padding} sont figées et ne +peuvent être modifiées à l'envie. Pareillement, il serait bien de +distinguer l'espacement entre les encadrements de l'espacement entre le +texte et ses encadrements. Nous allons donc introduire une propriété +supplémentaire, que nous appellerons @code{inter-box-padding}, chargée +de gérer l'espacement des encadrements ; @code{box-padding} ne +servira alors que pour l'espacement intérieur. Voici le code adapté à +ces évolutions : + +@lisp +#(define-markup-command (double-box layout props text) (markup?) + #:properties ((inter-box-padding 0.4) + (box-padding 0.6)) + "Dessine un double encadrement autour du texte." + (interpret-markup layout props + #@{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + @{ #text @} #@})) +@end lisp + +Ainsi que son équivalent à partir de la macro @emph{markup} : + +@lisp +#(define-markup-command (double-box layout props text) (markup?) + #:properties ((inter-box-padding 0.4) + (box-padding 0.6)) + "Dessine un double encadrement autour du texte." + (interpret-markup layout props + (markup #:override `(box-padding . ,inter-box-padding) #:box + #:override `(box-padding . ,box-padding) #:box text))) +@end lisp + +C'est ici le mot-clé @code{#:properties} qui permet de lire les +propriétés @code{inter-box-padding} et @code{box-padding} à partir de +l'argumenet @code{props}@tie{}; on leur a d'ailleurs fourni des valeurs +par défaut au cas où elles ne seraient pas définies. + +Ces valeurs permettront alors d'adapter les propriétés de +@code{box-padding} utilisées par les deux commandes @code{\box}. Vous +aurez remarqué, dans l'argument @code{\override}, la présence de +l'apostrophe inversée (@code{`}) et de la virgule ; elles vous +permettent d'insérer une valeur variable au sein d'une expression +littérale. + +Notre commande est maintenant prête à servir dans un @emph{markup}, et +les encadrements sont repositionnables. + +@lilypond[quote,verbatim,ragged-right] +#(define-markup-command (double-box layout props text) (markup?) + #:properties ((inter-box-padding 0.4) + (box-padding 0.6)) + "Draw a double box around text." + (interpret-markup layout props + #{\markup \override #`(box-padding . ,inter-box-padding) \box + \override #`(box-padding . ,box-padding) \box + { #text } #})) + +\markup \double-box A +\markup \override #'(inter-box-padding . 0.8) \double-box A +\markup \override #'(box-padding . 1.0) \double-box A +@end lilypond + + +@node Adaptation d'une commande incorporée +@unnumberedsubsubsec Adaptation d'une commande incorporée +@translationof Adapting builtin commands + +Le meilleur moyen de construire ses propres commandes de @emph{markup} +consiste à prendre exemple sur les commandes déjà incorporées. La +plupart des commandes de @emph{markup} fournies avec LilyPond sont +répertoriées dans le fichier @file{scm/define-markup-commands.scm}. + +Nous pourrions, par exemple, envisager d'adapter la commande +@code{\draw-line} pour dessiner plutôt une ligne double. Voici comment +est définie la commande @code{\draw-line}, expurgée de sa +documentation : + +@lisp +(define-markup-command (draw-line layout props dest) + (number-pair?) + #:category graphic + #:properties ((thickness 1)) + "..documentation.." + (let ((th (* (ly:output-def-lookup layout 'line-thickness) + thickness)) + (x (car dest)) + (y (cdr dest))) + (make-line-stencil th 0 0 x y))) +@end lisp + +Avant de définir notre propre commande basée sur l'une de celles +fournies par LilyPond, commençons par en recopier la définition, puis +attribuons lui un autre nom. Le mot-clé @code{#:category} peut être +supprimé sans risque ; il ne sert que lors de la génération de la +documentation et n'est d'aucune utilité pour une commande personnalisée. + +@lisp +(define-markup-command (draw-double-line layout props dest) + (number-pair?) + #:properties ((thickness 1)) + "..documentation.." + (let ((th (* (ly:output-def-lookup layout 'line-thickness) + thickness)) + (x (car dest)) + (y (cdr dest))) + (make-line-stencil th 0 0 x y))) +@end lisp + +Nous ajoutons ensuite une propriété pour gérer l'écart entre les deux +lignes, que nous appelons @code{line-gap}, et lui attribuons une valeur +par défaut de 6 dixièmes : + +@lisp +(define-markup-command (draw-double-line layout props dest) + (number-pair?) + #:properties ((thickness 1) + (line-gap 0.6)) + "..documentation.." + ... +@end lisp + +Nous ajoutons enfin le code qui dessinera nos deux lignes. Deux appels +à @code{make-line-stencil} permettrons de dessiner les lignes dont nous +regrouperons les stencils à l'aide de @code{ly:stencil-add} : + +@lilypond[quote,verbatim,ragged-right] +#(define-markup-command (my-draw-line layout props dest) + (number-pair?) + #:properties ((thickness 1) + (line-gap 0.6)) + "..documentation.." + (let* ((th (* (ly:output-def-lookup layout 'line-thickness) + thickness)) + (dx (car dest)) + (dy (cdr dest)) + (w (/ line-gap 2.0)) + (x (cond ((= dx 0) w) + ((= dy 0) 0) + (else (/ w (sqrt (+ 1 (* (/ dx dy) (/ dx dy)))))))) + (y (* (if (< (* dx dy) 0) 1 -1) + (cond ((= dy 0) w) + ((= dx 0) 0) + (else (/ w (sqrt (+ 1 (* (/ dy dx) (/ dy dx)))))))))) + (ly:stencil-add (make-line-stencil th x y (+ dx x) (+ dy y)) + (make-line-stencil th (- x) (- y) (- dx x) (- dy y))))) + +\markup \my-draw-line #'(4 . 3) +\markup \override #'(line-gap . 1.2) \my-draw-line #'(4 . 3) +@end lilypond + + +@node Définition d'une nouvelle commande de liste de markups +@subsection Définition d'une nouvelle commande de liste de @emph{markups} @translationof New markup list command definition -@untranslated +Une commande traitant une liste de @emph{markups} se définit à l'aide de +la macro Scheme @code{define-markup-list-command}, de manière analogue à +la macro @code{define-markup-command} abordée à la rubrique +@ref{Définition d'une nouvelle commande de markup} à ceci près que cette +dernière renvoie un seul stencil, non une liste de stencils. + +Dans l'exemple suivant, nous définissons @code{\paragraph}, une commande +de liste de @emph{markups}, qui renverra une liste de lignes justifiées +dont la première sera indentée. La largeur de l'alinéa sera récupérée +par l'argument @code{props}. + +@example +#(define-markup-list-command (paragraph layout props args) (markup-list?) + #:properties ((par-indent 2)) + (interpret-markup-list layout props + #@{\markuplist \justified-lines @{ \hspace #par-indent #args @} #@})) +@end example + +La version purement Scheme est un peu plus complexe : +@example +#(define-markup-list-command (paragraph layout props args) (markup-list?) + #:properties ((par-indent 2)) + (interpret-markup-list layout props + (make-justified-lines-markup-list (cons (make-hspace-markup par-indent) + args)))) +@end example + +En dehors des habituels arguments @code{layout} et @code{props}, la +commande de liste de @emph{markups} @code{paragraph} prend en argument +une liste de @emph{markups} appelé @code{args}. Le prédicat des listes +de @emph{markups} est @code{markup-list?}. + +Pour commencer, la fonction récupère la taille de l'alinéa, propriété +ici dénommée @code{par-indent}, à partir de la liste de propriétés +@code{props}. En cas d'absence, la valeur par défaut sera +de @code{2}. Ensuite est créée une liste de lignes justifiées +grâce à la commande prédéfinie @code{\justified-lines}, liée à la +fonction @code{make-justified-lines-markup-list}. Un espace horizontal +est ajouté en tête, grâce à @code{\hspace} ou à la fonction +@code{make-hspace-markup}. Enfin, la liste de @emph{markups} est +interprétée par la fonction @code{interpret-markup-list}. + +Voici comment utiliser cette nouvelle commande de liste de +@emph{markups}@tie{}: +@example +\markuplist @{ + \paragraph @{ + The art of music typography is called \italic @{(plate) engraving.@} + The term derives from the traditional process of music printing. + Just a few decades ago, sheet music was made by cutting and stamping + the music into a zinc or pewter plate in mirror image. + @} + \override-lines #'(par-indent . 4) \paragraph @{ + The plate would be inked, the depressions caused by the cutting + and stamping would hold ink. An image was formed by pressing paper + to the plate. The stamping and cutting was completely done by + hand. + @} +@} +@end example @node Contextes pour programmeurs @section Contextes pour programmeurs @translationof Contexts for programmers -@untranslated - - @menu * Évaluation d'un contexte:: * Application d'une fonction à tous les objets de mise en forme:: @end menu + @node Évaluation d'un contexte @subsection Évaluation d'un contexte @translationof Context evaluation -@untranslated +@cindex appel de code durant l'interprétation +@funindex \applyContext + +Un contexte peut être modifié, au moment même de son interprétation, par +du code Scheme. La syntaxe consacrée en pareil cas est +@example +\applyContext @var{fonction} +@end example + +@code{@var{fonction}} est constitué d'une fonction Scheme comportant un +unique argument : le contexte au sein duquel la commande +@code{\applyContext} est appelée. Les lignes de code qui suivent auront +pour effet d'afficher à l'écran, en cours de compilation, le numéro de +mesure en cours. + +@example +\applyContext + #(lambda (x) + (format #t "\nNous en sommes à la mesure ~a.\n" + (ly:context-property x 'currentBarNumber))) +@end example @node Application d'une fonction à tous les objets de mise en forme @subsection Application d'une fonction à tous les objets de mise en forme @translationof Running a function on all layout objects -@untranslated +@cindex appel de code sur des objets de mise en forme +@funindex \applyOutput +La manière la plus souple d'affiner un objet consiste à utiliser la +commande @code{\applyOutput}. Celle-ci va insérer un événement +(@rinternals{ApplyOutputEvent}) dans le contexte spécifié. Elle répond +à la syntaxe +@example +\applyOutput @var{contexte} @var{procédure} +@end example -@node Utilisation de procédures Scheme en tant que propriétés -@section Utilisation de procédures Scheme en tant que propriétés -@translationof Scheme procedures as properties +@noindent +où @code{@var{procédure}} est une fonction Scheme à trois arguments. + +Lors de l'interprétation de cette commande, la fonction +@code{@var{procédure}} est appelée pout tout objet de rendu appartenant +au contexte @code{@var{contexte}} à cet instant précis, avec les +arguments suivants : +@itemize +@item l'objet de rendu en lui-même, +@item le contexte au sein duquel cet objet est créé, +@item et le contexte dans lequel @code{\applyOutput} est effectué. +@end itemize -@untranslated +De plus, ce qui est à l'origine de l'objet de rendu -- l'expression +musicale ou l'objet qui l'a générée -- se retrouve en tant que propriété +d'objet @code{cause}. Il s'agit, pour une tête de note, d'un événement +@rinternals{NoteHead}, et d'un objet @rinternals{Stem} pour une hampe. +Voici une fonction utilisable avec la commande +@code{\applyOutput} : elle @qq{blanchit} la tête des notes se +trouvant sur la ligne médiane ou bien directement à son contact. + +@lilypond[quote,verbatim,ragged-right] +#(define (blanker grob grob-origin context) + (if (and (memq 'note-head-interface (ly:grob-interfaces grob)) + (< (abs (ly:grob-property grob 'staff-position)) 2)) + (set! (ly:grob-property grob 'transparent) #t))) + +\relative c' { + a'4 e8 <<\applyOutput #'Voice #blanker a c d>> b2 +} +@end lilypond + + +@node Fonctions de rappel +@section Fonctions de rappel +@translationof Callback functions + +Certaines propriétés, entre autres @code{thickness} ou @code{direction}, +peuvent voir leur valeur figée à l'aide d'un @code{\override} comme +ici@tie{}: + +@example +\override Stem #'thickness = #2.0 +@end example + +Une procédure Scheme peut aussi se charger de modifier des +propriétés@tie{}: + +@lilypond[fragment,verbatim,quote,relative=2] +\override Stem #'thickness = #(lambda (grob) + (if (= UP (ly:grob-property grob 'direction)) + 2.0 + 7.0)) +c b a g b a g b +@end lilypond + +@noindent +Dans ce cas, la procédure est exécutée dès que la valeur de la propriété +est nécessaire au processus de mise en forme. + +La majeure partie du procédé typographique consiste en la réalisation de +tels rappels (@emph{callbacks} en anglais). Entre autres propriétés +utilisant particulièrement des rappels, nous mentionnerons + +@table @code +@item stencil + Routine d'impression, construisant le dessin du symbole +@item X-offset + Routine effectuant le positionnement horizontal +@item X-extent + Routine calculant la largeur d'un objet +@end table + +La procédure prend un unique argument, en l'occurrence l'objet graphique +(le @emph{grob}). + +Dans le cas où la routine doit faire appel à plusieurs arguments, le +@emph{grob} en cours peut s'insérer à l'aide d'un @emph{grob} enchâssé. +Voici, à titre d'illustration, un réglage pour +@code{AccidentalSuggestion} : + +@example +`(X-offset . + ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:self-alignment-interface::centered-on-x-parent)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) +@end example + +@noindent +Ici, aussi bien @code{ly:self-alignment-interface::x-aligned-on-self} +que @code{ly:self-alignment-interface::centered-on-x-parent} font appel +à l'argument @emph{grob}. La fonction @code{+} a pour effet +d'additionner les résultats. L'ensemble est inclus dans un +@code{ly:make-simple-closure} de telle sorte que l'addition s'exécute de +façon correcte + +Dans les faits, l'utilisation d'une unique procédure en tant que valeur +d'une propriété revient à écrire + +@example +(ly:make-simple-closure (ly:make-simple-closure (list @var{proc}))) +@end example + +@noindent +Le @code{ly:make-simple-closure} intérieur fournit le @emph{grob} en +argument à la procédure @var{proc}, l'extérieur s'assure que le résultat +de la fonction sera bien renvoyé, non pas l'objet @code{simple-closure}. + +Au sein d'un @emph{callback}, le meilleur moyen d'évaluer un +@emph{markup} consiste à utiliser la fonction +@code{grob-interpret-markup}, comme ici : + +@example +my-callback = #(lambda (grob) + (grob-interpret-markup grob (markup "foo"))) +@end example -@menu -* Utilisation de code Scheme au lieu de \"tweak\":: -* Retouches complexes:: -@end menu -@node Utilisation de code Scheme au lieu de \"tweak\" -@section Utilisation de code Scheme au lieu de @code{\tweak} -@translationof Using Scheme code instead of tweak +@node Code Scheme intégré +@section Code Scheme intégré +@translationof Inline Scheme code + +À REVOIR : l'exemple de cette rubrique n'est pas des plus judicieux puisque +@example +F = -\tweak #'font-size #-3 -\flageolet +@end example +(notez le @samp{-} qui qualifie d'événement postérieur) fonctionne +correctement dans ce cas d'espèce. En attendant un remaniement de cette + section, faisons comme si nous l'ignorions. L'inconvénient principal de la commande @code{\tweak} est la rigidité de sa syntaxe. Par exemple, le code suivant produit une erreur. @@ -264,12 +1298,12 @@ F = \tweak #'font-size #-3 -\flageolet @noindent En d'autres termes, @code{\tweak} ne se comporte pas comme une -articulation@tie{}: il ne peut notamment pas être accolé avec les +articulation : il ne peut notamment pas être accolé avec les symboles @samp{^} ou @samp{_}. C'est en se servant du langage Scheme que l'on peut résoudre ce problème. Dans cet exemple, on a recours aux méthodes décrites dans -@ref{Exemple : ajouter une articulation à plusieurs notes}, en +@ref{Ajout d'articulation à des notes (exemple)}, en particulier quant à l'emploi de @code{\displayMusic}. @example @@ -301,22 +1335,20 @@ finale de @samp{m} lui-même. Certains réglages sont plus délicats que d'autres. -@itemize @bullet - - +@itemize @item -L'un d'entre eux est l'apparence des objets dits @qq{spanner}, qui -s'étendent horizontalement, tels que les liaisons. Si, en principe, un -seul de ces objets est créé à la fois et peut donc être modifié de façon -habituelle, lorsque ces objets doivent enjamber un changement de ligne, -ils sont dupliqués au début du ou des systèmes suivants. Comme ces -objets sont des clones de l'objet d'origine, ils en héritent toutes les -propriétés, y compris les éventuelles commandes @code{\override}. - +L'un d'entre eux est l'apparence des objets dits @qq{extenseurs} +(@emph{spanner}), qui s'étendent horizontalement, tels que les liaisons. +Si, en principe, un seul de ces objets est créé à la fois et peut donc +être modifié de façon habituelle, lorsque ces objets doivent enjamber un +changement de ligne, ils sont dupliqués au début du ou des systèmes +suivants. Comme ces objets sont des clones de l'objet d'origine, ils en +héritent toutes les propriétés, y compris les éventuelles commandes +@code{\override}. En d'autres termes, une commande @code{\override} affecte toujours les -deux extrémités d'un objet @q{spanner}. Pour ne modifier que la partie -précédant ou suivant le changement de ligne, il faut intervenir +deux extrémités d'un objet @emph{spanner}. Pour ne modifier que la +partie précédant ou suivant le changement de ligne, il faut intervenir directement dans le processus de mise en page. La fonction de rappel @code{after-line-breaking} contient toute l'opération Scheme effectuée lorsque les sauts de lignes ont été @@ -326,16 +1358,17 @@ systèmes différents. Dans l'exemple suivant, on définit une nouvelle opération nommée @code{my-callback}. Cette opération -@itemize @bullet +@itemize @item détermine si l'objet a été divisé à l'occasion d'un changement de ligne @item -si oui, recherche les différents morceaux de l'objet +dans l'affirmative, recherche les différents morceaux de l'objet @item vérifie si l'objet considéré est bien la deuxième moitié d'un objet divisé @item -si oui, applique un espacement supplémentaire (@code{extra-offset}). +dans l'affirmative, applique un espacement supplémentaire +(@code{extra-offset}). @end itemize On ajoute cette procédure à l'objet @rinternals{Tie} (liaison de tenue), @@ -345,49 +1378,62 @@ rehaussé. @c KEEP LY @lilypond[quote,verbatim,ragged-right] #(define (my-callback grob) - (let* ( - ; l'objet a-t-il été divisé ? - (orig (ly:grob-original grob)) + (let* ( + ;; l'objet a-t-il été divisé ? + (orig (ly:grob-original grob)) - ; si oui, rechercher les morceaux frères (siblings) - (siblings (if (ly:grob? orig) - (ly:spanner-broken-into orig) '() ))) + ;; si oui, rechercher les morceaux frères (siblings) + (siblings (if (ly:grob? orig) + (ly:spanner-broken-into orig) + '()))) - (if (and (>= (length siblings) 2) - (eq? (car (last-pair siblings)) grob)) - (ly:grob-set-property! grob 'extra-offset '(-2 . 5))))) + (if (and (>= (length siblings) 2) + (eq? (car (last-pair siblings)) grob)) + (ly:grob-set-property! grob 'extra-offset '(-2 . 5))))) \relative c'' { \override Tie #'after-line-breaking = #my-callback - c1 ~ \break c2 ~ c + c1 ~ \break + c2 ~ c } @end lilypond @noindent Lorsque cette astuce va être appliquée, notre nouvelle fonction de rappel @code{after-line-breaking} devra également appeler celle -d'origine (@code{after-line-breaking}), si elle existe. -Ainsi, pour l'utiliser dans le cas d'un crescendo (objet -@code{Hairpin}), il faudra appeler également -@code{ly:spanner::kill-zero-spanned-time}. +d'origine (@code{after-line-breaking}), si elle existe. Ainsi, pour +l'utiliser dans le cas d'un crescendo (objet @code{Hairpin}), il faudra +également appeler @code{ly:spanner::kill-zero-spanned-time}. -@item Pour des raisons d'ordre technique, certains objets ne peuvent -être modifiés par @code{\override}. Parmi ceux-là, les objets +@item +Pour des raisons d'ordre technique, certains objets ne peuvent être +modifiés par @code{\override}. Parmi ceux-là, les objets @code{NonMusicalPaperColumn} et @code{PaperColumn}. La commande @code{\overrideProperty} sert à les modifier, de façon similaire à -@code{\once \override}, mais avec une syntaxe différente@tie{}: +@code{\once \override} mais avec une syntaxe différente : @example \overrideProperty #"Score.NonMusicalPaperColumn" % Nom de l'objet #'line-break-system-details % Nom de la propriété -#'((next-padding . 20)) % valeur +#'((next-padding . 20)) % Valeur @end example -Notez cependant que la commande @code{\override} peut tout de même être +Notez toutefois que la commande @code{\override} peut tout de même être appliquée à @code{NonMusicalPaperColumn} et @code{PaperColumn} dans un bloc @code{\context}. @end itemize + + +@node Interfaces LilyPond Scheme +@chapter Interfaces LilyPond Scheme +@translationof LilyPond Scheme interfaces + +Ce chapitre aborde les différents outils fournis par LilyPond à +l'intention des programmeurs en Scheme désireux d'obtenir des +informations à partir et autour des fluxs de musique. + +TODO -- figure out what goes in here and how to organize it diff --git a/Documentation/fr/extending/scheme-tutorial.itely b/Documentation/fr/extending/scheme-tutorial.itely new file mode 100644 index 0000000000..3b34813167 --- /dev/null +++ b/Documentation/fr/extending/scheme-tutorial.itely @@ -0,0 +1,1686 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- +@ignore + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 + + 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.16.0" + +@c Translators: Jean-Charles Malahieude + +@node Tutoriel Scheme +@chapter Tutoriel Scheme + +@cindex Scheme +@cindex GUILE +@cindex Scheme, inclusion de code +@cindex accéder à Scheme +@cindex évaluation Scheme +@cindex LISP + +LilyPond recourt abondamment au langage de programmation Scheme, tant au +niveau de la syntaxe de saisie que des mécanismes internes chargés de +combiner les différents modules du logiciel. Les lignes qui suivent +constituent un bref aperçu de la manière de saisir des données en +Scheme. Si vous désirez en apprendre plus sur Scheme, n'hésitez pas à +vous rendre sur @uref{http://@/www@/.schemers@/.org}. + +Le Scheme utilisé par LilyPond repose sur l'implémentation GNU +Guile ; celle-ci se base sur le standard Scheme @qq{R5RS}. Si +votre but est d'apprendre Scheme au travers de LilyPond, sachez que +l'utilisation d'une autre implémentation ou d'un autre standard pourrait +être source de désagrément. Vous trouverez plus d'information sur +GUILE à la page @uref{http://www.gnu.org/software/guile/} ; le +standard Scheme @qq{R5RS} est quant à lui disponible à la page +@uref{http://www.schemers.org/Documents/Standards/R5RS/}. + +@menu +* Introduction à Scheme:: +* Scheme et LilyPond:: +* Construction de fonctions complexes:: +@end menu + + +@node Introduction à Scheme +@section Introduction à Scheme +@translationof Introduction to Scheme + +Nous commencerons par nous intéresser à Scheme et à son fonctionnement, +grâce à l'interpréteur GUILE. Une fois plus à l'aise avec Scheme, nous +verrons comment ce langage peut s'intégrer à un fichier LilyPond. + +@menu +* Le bac à sable de Scheme:: +* Scheme et les variables:: +* Types de données Scheme simples:: +* Types de données Scheme composites:: +* Scheme et les calculs:: +* Scheme et les procédures:: +* Scheme et les conditions:: +@end menu + + +@node Le bac à sable de Scheme +@subsection Le bac à sable de Scheme +@translationof Scheme sandbox + +L'installation de LilyPond comprend l'implémentation GUILE de Scheme. +La plupart des systèmes disposent d'un @qq{bac à sable} Scheme pour +effectuer des tests ; vous y accéderez en tapant @qq{guile} dans +un terminal. Certains systèmes, notamment Windows, nécessitent d'avoir +auparavant créé la variable d'environnement @code{GUILE_LOAD_PATH} qui +devra pointer vers le répertoire @code{../usr/share/guile/1.8} de +l'installation de LilyPond -- pour connaître le chemin complet d'accès à +ce répertoire, consultez @rlearning{Autres sources de documentation}. +Les utilisateurs de Windows peuvent aussi prendre l'option @qq{Exécuter} +à partir du menu @qq{Démarrer} puis taper @qq{guile}. + +Néanmoins, tous les paquetages de LilyPond disposent d'un bac à sable +Scheme, accessible par la commande : +@example +lilypond scheme-sandbox +@end example + +@noindent +Une fois le bac à sable actif, vous obtiendrez l'invite : +@lisp +guile> +@end lisp + +Vous pouvez dès à présent saisir des expressions Scheme pour vous +exercer. Si vous souhaitez pouvoir utiliser la bibliothèque GNU +@code{readline}, qui offre une ligne de commande plus élaborée, +consultez les informations contenues dans le fichier +@file{ly/scheme-sandbox.ly}. La bibliothèque @var{readline}, dans la +mesure où elle est habituellement activée dans vos sessions Guile, +devrait être effective y compris dans le bac à sable. + + +@node Scheme et les variables +@subsection Scheme et les variables +@translationof Scheme variables + +Une variable Scheme peut contenir n'importe quelle valeur valide en +Scheme, y compris une procédure Scheme. + +Une variable Scheme se crée avec la fonction @code{define} : + +@lisp +guile> (define a 2) +guile> +@end lisp + +L'évaluation d'une variable Scheme se réalise en saisissant le nom de +cette variable à l'invite de Guile : + +@lisp +guile> a +2 +guile> +@end lisp + +Une variable Scheme s'affiche à l'écran à l'aide de la fonction +@code{display} : + +@lisp +guile> (display a) +2guile> +@end lisp + +@noindent +Vous aurez remarqué que la valeur @code{2} et l'invite @code{guile} +apparaissent sur une même ligne. On peut améliorer la présentation à +l'aide de la procédure @code{newline} ou bien en affichant un caractère +@qq{retour chariot}. + +@lisp +guile> (display a)(newline) +2 +guile> (display a)(display "\n") +2 +guile> +@end lisp + +Après avoir créé une variable, vous pouvez en modifier la valeur grâce à +un @code{set!} : + +@lisp +guile> (set! a 12345) +guile> a +12345 +guile> +@end lisp + +Vous quitterez proprement le bac à sable à l'aide de l'instruction +@code{quit} : + +@lisp +guile> (quit) +@end lisp + + +@node Types de données Scheme simples +@subsection Types de données Scheme simples +@translationof Scheme simple data types + +L'un des concepts de base de tout langage est la saisie de données, +qu'il s'agisse de nombres, de chaînes de caractères, de listes etc. +Voici les différents types de données Scheme simples utilisées +couramment dans LilyPond. + +@table @asis +@item Booléens +Les valeurs booléennes sont vrai ou faux. En Scheme, ce sera @code{#t} +pour vrai, et @code{#f} pour faux. +@funindex ##t +@funindex ##f + +@item Nombres +Les nombres se saisissent le plus communément : @code{1} est le +nombre (entier) un, alors que @w{@code{-1.5}} est un nombre à virgule +flottante (un nombre non entier). + +@item Chaînes +Les chaînes de caractères sont bornées par des guillemets +informatiques : + +@example +"ceci est une chaîne" +@end example + +Une chaîne peut s'étendre sur plusieurs lignes : + +@example +"ceci +est +une chaîne" +@end example + +@noindent +auquel cas les retours à la ligne seront inclus dans la chaîne. + +Un caractère de retour à la ligne peut s'ajouter dans la chaîne, sous la +forme d'un @code{\n}. + +@example +"ceci\nest une\nchaîne multiligne" +@end example + +Guillemets et obliques inverses dans une chaîne doivent être précédés +d'une oblique inverse. La chaîne @code{\a dit "b"} se saisit donc + +@example +"\\a dit \"b\"" +@end example + +@end table + +Il existe bien d'autres types de données Scheme, dont nous ne parlerons +pas ici. Vous en trouverez une liste exhaustive dans le guide de +référence de Guile, à la page +@uref{http://www.gnu.org/software/guile/manual/html_node/Simple-Data-Types.html}. + + +@node Types de données Scheme composites +@subsection Types de données Scheme composites +@translationof Scheme compound data types + +Scheme prend aussi en charge des types de données composites. LilyPond +utilise beaucoup les paires, listes, listes associatives et tables de +hachage. + +@subheading Paires + +Le type de donnée composite fondamental est la paire (@code{pair}). +Comme son nom l'indique, il s'agit de lier deux valeurs, à l'aide de +l'opérateur @code{cons}. + +@lisp +guile> (cons 4 5) +(4 . 5) +guile> +@end lisp + +Vous aurez noté que la paire s'affiche sous la forme de deux éléments +bornés par des parenthèses et séparés par une espace, un point +(@code{.}) et une autre espace. Le point n'est en aucune manière un +séparateur décimal ; il s'agit de l'indicateur d'une paire. + +Vous pouvez aussi saisir littéralement les valeurs d'une paire, en la +faisant précéder d'une apostrophe. + +@lisp +guile> '(4 . 5) +(4 . 5) +guile> +@end lisp + +Les deux éléments d'une paire peuvent être constitués de n'importe +quelle valeur Scheme valide : + +@lisp +guile> (cons #t #f) +(#t . #f) +guile> '("blah-blah" . 3.1415926535) +("blah-blah" . 3.1415926535) +guile> +@end lisp + +Les premier et second éléments de la paire sont accessibles à l'aide des +procédures Scheme @code{car} et @code{cdr}. + +@lisp +guile> (define mypair (cons 123 "hello there") +... ) +guile> (car mypair) +123 +guile> (cdr mypair) +"hello there" +guile> +@end lisp + +@noindent + +Note : @code{cdr} se prononce @qq{couldeur}, comme l'indiquent Sussman et +Abelson -- voir +@uref{http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-14.html#footnote_Temp_133}. + + +@subheading Listes + +Autre structure de donnée commune en Scheme : la liste (@emph{list}). +Une liste se définit comme étant vide (représentée par @code{'()}) ou +une paire dont le @code{cdr} est une liste. + +Il existe plusieurs méthodes pour créer une liste, la plus courante +étant l'utilisation de la procédure @code{list} : + +@lisp +guile> (list 1 2 3 "abc" 17.5) +(1 2 3 "abc" 17.5) +@end lisp + +Comme vous le remarquez, une liste s'affiche sous la forme d'une suite +d'éléments séparés par une espace, bornée par des parenthèses. +Contrairement à une paire, il n'y a pas de point entre les éléments. + +Vous pouvez aussi saisir directement une liste en entourant ses éléments +par des parenthèses à la suite d'une apostrophe : + +@lisp +guile> '(17 23 "foo" "bar" "bazzle") +(17 23 "foo" "bar" "bazzle") +@end lisp + +Les listes ont une importance considérable en Scheme. Certains vont +d'ailleurs jusqu'à considérer Scheme comme un dialecte du lisp, où +@qq{lisp} serait une abréviation de @qq{List Processing}. Il est vrai +que toute expression Scheme est une liste. + + +@subheading Listes associatives (alists) + +Il existe un type particulier de liste : la @emph{liste associative} -- +ou @emph{alist}. Une @emph{alist} permet de stocker des données dans le +but de les réutiliser. + +Une liste associative est une liste dont les éléments sont des paires. +Le @code{car} de chacun des éléments constitue une clé (@emph{key}) et +chaque @code{cdr} une valeur (@emph{value}). La procédure Scheme +@code{assoc} permet de retrouver une entrée de la liste +associative ; son @code{cdr} en fournira la valeur : + +@lisp +guile> (define mon-alist '((1 . "A") (2 . "B") (3 . "C"))) +guile> mon-alist +((1 . "A") (2 . "B") (3 . "C")) +guile> (assoc 2 mon-alist) +(2 . "B") +guile> (cdr (assoc 2 mon-alist)) +"B" +guile> +@end lisp + +LilyPond recourt abondamment aux @emph{alists} pour stocker des +propriétés ou autres données. + + +@subheading Tables de hachage + +Il s'agit d'une structure de données à laquelle LilyPond fait parfois +appel. Une table de hachage (@emph{hash table}) peut se comparer à une +matrice ou un tableau dont l'index peut être n'importe quel type de +valeur Scheme et ne se limitant pas à des nombres entiers. + +Les tables de hachage sont un moyen plus efficace que les listes +associatives lorsqu'il s'agit d'enregistrer de nombreuses données qui ne +changeront que peu fréquemment. + +La syntaxe permettant de créer une table de hachage peut paraître +complexe, mais vous en trouverez de nombreux exemples dans les sources +de LilyPond. + +@lisp +guile> (define h (make-hash-table 10)) +guile> h +# +guile> (hashq-set! h 'cle1 "valeur1") +"valeur1" +guile> (hashq-set! h 'key2 "valeur2") +"valeur2" +guile> (hashq-set! h 3 "valeur3") +"valeur3" +@end lisp + +La procédure @code{hashq-ref} permet de récupérer une valeur dans la +table de hachage. + +@lisp +guile> (hashq-ref h 3) +"valeur3" +guile> (hashq-ref h 'cle2) +"valeur2" +guile> +@end lisp + +La procédure @code{hashq-get-handle} permet de retrouver à la fois une +clé et sa valeur. Cette procédure a l'avantage de renvoyer @code{#f} +lorsque la clé n'existe pas. + +@lisp +guile> (hashq-get-handle h 'cle1) +(cle1 . "valeur1") +guile> (hashq-get-handle h 'zut) +#f +guile> +@end lisp + +@node Scheme et les calculs +@subsection Scheme et les calculs +@translationof Calculations in Scheme + +@ignore +We have been using lists all along. A calculation, like @code{(+ 1 2)} +is also a list (containing the symbol @code{+} and the numbers 1 +and@tie{}2). Normally lists are interpreted as calculations, and the +Scheme interpreter substitutes the outcome of the calculation. To enter a +list, we stop the evaluation. This is done by quoting the list with a +quote @code{'} symbol. So, for calculations do not use a quote. + +Inside a quoted list or pair, there is no need to quote anymore. The +following is a pair of symbols, a list of symbols and a list of lists +respectively, + +@example +#'(stem . head) +#'(staff clef key-signature) +#'((1) (2)) +@end example +@end ignore + +Scheme permet aussi d'effectuer des calculs. Il utilise alors un +@emph{préfixe}. Additionner 1 et 2 s'écrira @code{(+ 1 2)} et +non @math{1+2} comme on aurait pu s'y attendre. + +@lisp +guile> (+ 1 2) +3 +@end lisp + +Les calculs peuvent s'imbriquer ; le résultat d'une fonction peut +servir pour un autre calcul. + +@lisp +guile> (+ 1 (* 3 4)) +13 +@end lisp + +Ces calculs sont un exemple d'évaluation : une expression telle que +@code{(* 3 4)} est remplacée par sa valeur, soit @code{12}. + +En matière de calcul, Scheme fait la différence entre des nombres entiers +ou non. Les calculs sur des nombres entiers seront exacts, alors que +s'il s'agit de nombres non entiers, les calculs tiendront compte de la +précision mentionnée : + +@lisp +guile> (/ 7 3) +7/3 +guile> (/ 7.0 3.0) +2.33333333333333 +@end lisp + +Lorsque l'interpréteur Scheme rencontre une expression sous forme de +liste, le premier élément de cette liste est considéré en tant que +procédure qui prendra en argument le restant de la liste. C'est la +raison pour laquelle, en Scheme, tous les opérateurs sont en préfixe. + +Le fait que le premier élément d'une expression Scheme sous forme de +liste ne soit pas un opérateur ou une procédure déclenchera une +erreur de la part de l'interpréteur : + +@lisp +guile> (1 2 3) + +Backtrace: +In current input: + 52: 0* [1 2 3] + +:52:1: In expression (1 2 3): +:52:1: Wrong type to apply: 1 +ABORT: (misc-error) +guile> +@end lisp + +Vous pouvez constater que l'interpréteur a tenté de considérer @code{1} +comme étant un opérateur ou une procédure, ce qu'il n'a pu réaliser. Il +a donc renvoyé l'erreur @qq{Wrong type to apply: 1} (@emph{Application +d'un type erroné : 1}). + +C'est pourquoi il est impératif, pour créer une liste, soit d'utiliser +l'opérateur consacré (@code{list}), soit de faire précéder la liste +d'une apostrophe, de telle sorte que l'interpréteur ne tente pas de +l'évaluer. + +@lisp +guile> (list 1 2 3) +(1 2 3) +guile> '(1 2 3) +(1 2 3) +guile> +@end lisp + +Vous pourrez être confronté à cette erreur lorsque vous intégrerez +Scheme à LilyPond. + +@ignore +The same assignment can be done in completely in Scheme as well, + +@example +#(define twentyFour (* 2 twelve)) +@end example + +@c this next section is confusing -- need to rewrite + +The @emph{name} of a variable is also an expression, similar to a +number or a string. It is entered as + +@example +#'twentyFour +@end example + +@funindex #'symbol +@cindex quoting in Scheme + +The quote mark @code{'} prevents the Scheme interpreter from substituting +@code{24} for the @code{twentyFour}. Instead, we get the name +@code{twentyFour}. +@end ignore + + +@node Scheme et les procédures +@subsection Scheme et les procédures +@translationof Scheme procedures + +Une procédure Scheme est une expression Scheme qui renverra une valeur +issue de son exécution. Les procédures Scheme sont capables de +manipuler des variables qui ne sont pas définies en leur sein. + + +@subheading Définition de procédures + +En Scheme, on définit une procédure à l'aide de l'instruction +@code{define} : + +@example +(define (nom-fonction argument1 argument2 ... argumentn) + expression-scheme-qui-donnera-une-valeur-en-retour) +@end example + +Nous pourrions, par exemple, définir une procédure calculant la moyenne +de deux nombres : + +@lisp +guile> (define (moyenne x y) (/ (+ x y) 2)) +guile> moyenne +# +@end lisp + +Une fois la procédure définie, on l'appelle en la faisant suivre, dans +une liste, des arguments qui doivent l'accompagner. Calculons +maintenant la moyenne de 3 et 12 : + +@lisp +guile> (moyenne 3 12) +15/2 +@end lisp + + +@subheading Prédicats + +Une procédure Scheme chargée de retourner une valeur booléenne s'appelle +un @qq{prédicat} (@emph{predicate}). Par convention, plutôt que par +nécessité, le nom d'un prédicat se termine par un point +d'interrogation : + +@lisp +guile> (define (moins-de-dix? x) (< x 10)) +guile> (moins-de-dix? 9) +#t +guile> (moins-de-dix? 15) +#f +@end lisp + + +@subheading Valeurs de retour + +Une procédure Scheme doit toujours renvoyer une valeur de retour, en +l'occurrence la valeur de la dernière expression exécutée par cette +procédure. La valeur de retour sera une valeur Scheme valide, y compris +une structure de donnée complexe ou une procédure. + +On peut avoir besoin de regrouper plusieurs expressions Scheme dans une +même procédure. Deux méthodes permettent de combiner des expressions +multiples. La première consiste à utiliser la procédure @code{begin}, +qui permet l'évaluation de plusieurs expressions et renvoie la valeur de +la dernière expression. + +@lisp +guile> (begin (+ 1 2) (- 5 8) (* 2 2)) +4 +@end lisp + +Une deuxième méthode consiste à combiner les expressions dans un bloc +@code{let}. Ceci aura pour effet de créer une série de liens, puis +d'évaluer en séquence les expressions susceptibles d'inclure ces +liens. La valeur renvoyée par un bloc @emph{let} est la valeur de +retour de la dernière clause de ce bloc : + +@lisp +guile> (let ((x 2) (y 3) (z 4)) (display (+ x y)) (display (- z 4)) +... (+ (* x y) (/ z x))) +508 +@end lisp + + +@node Scheme et les conditions +@subsection Scheme et les conditions +@translationof Scheme conditionals + +@subheading if + +Scheme dispose d'une procédure @code{if} : + +@example +(if expression-test expression-affirmative expression-négative) +@end example + +@var{expression-test} est une expression qui renverra une valeur +booléenne. Dans le cas où @var{expression-test} retourne @code{#t}, la +procédure @code{if} renvoie la valeur de @var{expression-affirmative}, +et celle de @var{expression-négative} dans le cas contraire. + +@lisp +guile> (define a 3) +guile> (define b 5) +guile> (if (> a b) "a est plus grand que b" "a n'est pas plus grand que b") +"a n'est pas plus grand que b" +@end lisp + + +@subheading cond + +Une autre manière d'introduire une condition en Scheme est d'utiliser +l'instruction @code{cond} : + +@example +(cond (expression-test-1 expression-résultat-séquence-1) + (expression-test-2 expression-résultat-séquence-2) + ... + (expression-test-n expression-résultat-séquence-n)) +@end example + +Comme par exemple ici : + +@lisp +guile> (define a 6) +guile> (define b 8) +guile> (cond ((< a b) "a est plus petit que b") +... ((= a b) "a égale b") +... ((> a b) "a est plus grand que b")) +"a est plus petit que b" +@end lisp + + +@node Scheme et LilyPond +@section Scheme et LilyPond +@translationof Scheme in LilyPond + +@menu +* Syntaxe Scheme dans LilyPond:: +* Variables LilyPond:: +* Saisie de variables et Scheme:: +* Import de code Scheme dans LilyPond:: +* Propriétés des objets:: +* Variables LilyPond composites:: +* Représentation interne de la musique:: +@end menu + +@node Syntaxe Scheme dans LilyPond +@subsection Syntaxe Scheme dans LilyPond +@translationof LilyPond Scheme syntax + +@funindex $ +@funindex # + +L'installation de LilyPond comprenant l'interpréteur Guile, les fichiers +source LilyPond peuvent contenir du Scheme. Vous disposez de plusieurs +méthodes pour inclure du Scheme dans vos fichiers LilyPond. + +La méthode la plus simple consiste à insérer un @emph{hash} (le caractère +@code{#}, improprement appelé dièse) avant l'expression Scheme. + +Rappelons-nous qu'un fichier source LilyPond est structuré en jetons et +expressions, tout comme le langage humain est structuré en mots et +phrases. LilyPond dispose d'un analyseur lexical (appelé @emph{lexer}) +qui sait identifier les jetons -- nombres, chaînes, éléments Scheme, +hauteurs etc. -- ainsi que d'un analyseur syntaxique (appelé +@emph{parser}) -- voir l'annexe @ruser{Grammaire de LilyPond}. Dès lors +que le programme sait quelle règle grammaticale particulière doit +s'appliquer, il exécute les consignes qui lui sont associées. + +Le recours à un @emph{hash} pour mettre en exergue du Scheme est tout à +fait approprié. Dès qu'il rencontre un @code{#}, l'analyseur lexical +passe le relais au lecteur Scheme qui va alors déchiffrer l'intégralité +de l'expression Scheme -- ce peut être un identificateur, une expression +bornée par des parenthèses ou bien d'autres choses encore. Une fois +cette expression lue, elle est enregistrée en tant que valeur d'un +élément grammatical @code{SCM_TOKEN}. Puisque l'analyseur syntaxique +sait comment traiter ce jeton, il charge Guile d'évaluer l'expression +Scheme. Dans la mesure où le @emph{parser} requiert une lecture en +avance de la part du @emph{lexer} pour prendre une décision, cette +distinction entre lecture et évaluation -- @emph{lexer} et @emph{parser} +-- révèle toute sa pertinence lorsqu'il s'agit d'exécuter conjointement +des expressions LilyPond et des expressions Scheme. C'est la raison +pour laquelle nous vous recommandons, dans toute la mesure du possible, +d'utiliser un signe @emph{hash} lorsque vous faites appel à Scheme. + +Une autre manière de faire appel à l'interpréteur Scheme à partir de +LilyPond consiste à introduire une expression Scheme par un caractère +dollar au lieu d'un caractère dièse -- un @code{$} au lieu +d'un @code{#}. En pareil cas, LilyPond évalue le code dès sa lecture +par l'analyseur lexical, vérifie le type d'expression Scheme qui en +résulte et détermine un type de jeton (l'un des @code{xxx_IDENTIFIER} de +la grammaire) qui lui corresponde, puis en fait une copie qui servira à +traiter la valeur de ce jeton. Lorsque la valeur de l'expression est +@emph{void}, autrement dit une valeur Guile @code{*unspecified*} (pour +@emph{non spécifiée}), aucune information n'est transmise à l'analyseur +grammatical. + +C'est, en réalité, la manière dont LilyPond opère lorsque vous rappelez +une variable ou une fonction par son nom -- au travers d'un @code{\nom} +--, à la seule différence que sa finalité est déterminée par l'analyseur +lexical de LilyPond sans consultation du lecteur Scheme ; le nom de +la variable rappelée doit donc être en corrélation avec le mode LilyPond +actif à ce moment là. + +L'immédiateté de l'opérateur @code{$} peut entraîner des effets +indésirables dont nous reparlerons à la rubrique +@ref{Saisie de variables et Scheme} ; aussi est-il préférable +d'utiliser un @code{#} dès que l'analyseur grammatical le supporte. +Dans le cadre d'une expression musicale, une expression qui aura été +créée à l'aide d'un @code{#} sera interprétée comme étant de la musique. +Elle ne sera cependant pas recopiée avant utilisation. Si la structure +qui l'abrite devait être réutilisée, un appel expicite à +@code{ly:music-deep-copy} pourrait être requis. + +@funindex $@@ +@funindex #@@ + +Les opérateurs @code{$@@} et @code{#@@} agissent comme des « colleurs de +liste » : leur fonction consiste à insérer tous les éléments d'un liste +dans le contexte environnant. + +Examinons à présent du vrai code Scheme. Nous pouvons définir des +procédures Scheme au milieu d'un fichier source LilyPond : + +@example +#(define (moyenne a b c) (/ (+ a b c) 3)) +@end example + +Pour mémoire, vous noterez que les commentaires LilyPond (@code{%} ou +@code{%@{ %@}}) ne peuvent s'utiliser dans du code Scheme, même si +celui-ci se trouve au sein d'un fichier LilyPond. Ceci tient au fait +que l'expression Scheme est lue par l'interpréteur Guile, et en aucune +façon par l'analyseur lexical de LilyPond. Voici comment introduire des +commentaires dans votre code Scheme : + +@example +; ceci n'est qu'une simple ligne de commentaire + +#! + Ceci constitue un bloc de commentaire (non imbricable) + dans le style Guile. + En fait, les Schemeurs les utilisent très rarement, + et vous n'en trouverez jamais dans le code source + de LilyPond. +!# +@end example + +Dans la suite de notre propos, nous partons du principe que les données +sont incluses dans un fichier musical, aussi toutes les expressions +Scheme seront introduites par un @code{#}. + +Toutes les expressions Scheme de haut niveau incluses dans un fichier +LilyPond peuvent se combiner en une expression Scheme unique à l'aide de +la clause @code{begin} : + +@example +#(begin + (define foo 0) + (define bar 1)) +@end example + + +@node Variables LilyPond +@subsection Variables LilyPond +@translationof LilyPond variables + +Les variables LilyPond sont enregistrées en interne sous la forme de +variables Scheme. Ainsi, + +@example +douze = 12 +@end example + +@noindent +est équivalant à + +@example +#(define douze 12) +@end example + +Ceci a pour conséquence que toute variable LilyPond peut être utilisée +dans une expression Scheme. Par exemple, nous pourrions dire + +@example +vingtQuatre = #(* 2 douze) +@end example + +@noindent +ce qui aurait pour conséquence que le nombre 24 sera stocké dans la +variable LilyPond (et Scheme) @code{vingtQuatre}. + +La façon habituelle de faire référence à une variable LilyPond consiste +à la rappeler à l'aide d'une oblique inverse -- autrement dit saisir +@code{\vingtQuatre}. Dans la mesure où ceci, pour la plupart des types +internes de LilyPond y compris les expressions musicales, aura pour +effet d'en recopier la valeur, les fonctions musicales n'ont pas pour +habitude de créer une copie du matériau qu'elles vont modifier. De +fait, une expression musicale introduite par @code{#} ne devrait pas +contenir de matériau inexistant auparavant ou bien littéralement +recopié, mais plutôt une référence explicite. + + +@node Saisie de variables et Scheme +@subsection Saisie de variables et Scheme +@translationof Input variables and Scheme + +Le format de saisie prend en charge la notion de variable -- ou +identificateur. Dans l'exemple suivant, une expression musicale se voit +attribuer un identificateur qui portera le nom de @code{traLaLa}. + +@example +traLaLa = @{ c'4 d'4 @} +@end example + +@noindent + +Une variable a aussi une portée. Dans l'exemple suivant, le bloc +@code{\layout} contient une variable @code{traLaLa} tout à fait +indépendante de l'autre @code{\traLaLa}. + +@example +traLaLa = @{ c'4 d'4 @} +\layout @{ traLaLa = 1.0 @} +@end example + +Dans les faits, chaque fichier a un domaine de compétence, et les +différents blocs @code{\header}, @code{\midi} et @code{\layout} ont leur +propre champ de compétence, imbriqué dans ce domaine principal. + +Variables et champs de compétence sont implémentés par le système de +modules de Guile. Un module anonyme Scheme est attaché à chacun de ces +domaines. Une assertion telle que + +@example +traLaLa = @{ c'4 d'4 @} +@end example + +@noindent +est convertie, en interne, en une définition Scheme : + +@example +(define traLaLa @var{valeur Scheme de `@code{... }'}) +@end example + +Cela signifie que variables LilyPond et variables Scheme peuvent tout à +fait se mélanger. Dans l'exemple suivant, un fragment musical est +stocké dans la variable @code{traLaLa} puis dupliqué à l'aide de Scheme. +Le résultat est alors importé dans un bloc @code{\score} au moyen d'une +seconde variable @code{twice}. + +@lilypond[verbatim] +traLaLa = { c'4 d'4 } + +#(define newLa (map ly:music-deep-copy + (list traLaLa traLaLa))) +#(define twice + (make-sequential-music newLa)) + +\twice +@end lilypond + +@c Due to parser lookahead + +Cet exemple est particulièrement intéressant. L'assignation +n'interviendra qu'une fois que l'analyseur grammatical aura l'assurance +que rien du type de @code{\addlyrics} ne suit ; il doit donc +vérifier ce qui vient après. Le @emph{parser} lit le @code{#} et +l'expression Scheme qui le suit @strong{sans} l'évaluer, de telle sorte +qu'il peut procéder à l'assignation, et @strong{ensuite} exécuter le +code Scheme sans problème. + + +@node Import de code Scheme dans LilyPond +@subsection Import de code Scheme dans LilyPond +@translationof Importing Scheme in LilyPond + +@funindex $ +@funindex # + +L'exemple précédent illustre la manière @qq{d'exporter} une expression +musicale à partir des saisies et à destination de l'interpréteur Scheme. +L'inverse est aussi réalisable : en la plaçant derrière un @code{$}, une +valeur Scheme sera interprétée comme si elle avait été saisie en +syntaxe LilyPond. Au lieu de définir @code{\twice}, nous aurions tout +aussi bien pu écrire + +@example +... +$(make-sequential-music (list newLa)) +@end example + +Vous pouvez utiliser @code{$} suivi d'une expression Scheme partout où +vous auriez utilisé @code{\@var{nom}}, dès lors que vous aurez assigné à +cette expression Scheme le nom de variable @var{nom}. La substitution +intervenant au niveau de l'analyseur lexical (le @emph{lexer}), LilyPond +ne saurait faire la différence. + +Cette manière de procéder comporte cependant un inconvénient au niveau +de la temporisation. Si nous avions défini @code{newLa} avec un +@code{$} plutôt qu'un @code{#}, la définition Scheme suivante aurait +échoué du fait que @code{traLaLa} n'était pas encore défini. Pour plus +d'information quant au problème de synchronisation, voir la rubrique +@ref{Syntaxe Scheme dans LilyPond}. + +@funindex $@@ +@funindex #@@ + +Une autre façon de procéder serait de recourir aux « colleurs de liste » +@code{$@@} et @code{#@@} dont la fonction est d'insérer les éléments +d'une liste dans le contexte environnant. Grâce à ces opérateurs, la +dernière partie de notre fonction pourrait s'écrire ainsi : + +@example +... +@{ #@@newLa @} +@end example + +Ici, chaque élément de la liste stockée dans @code{newLa} est pris à +son tour et inséré dans la liste, tout comme si nous avions écrit + +@example +@{ #(premier newLa) #(deuxième newLa) @} +@end example + +Dans ces deux dernières formes, le code Scheme est évalué alors même que +le code initial est en cours de traitement, que ce soit par le +@emph{lexer} ou par le @emph{parser}. Si le code Scheme ne doit être +exécuté que plus tard, consultez la rubrique +@ref{Fonctions Scheme fantômes}, ou stockez le dans une procédure comme +ici : + +@example +#(define (nopc) + (ly:set-option 'point-and-click #f)) + +... +#(nopc) +@{ c'4 @} +@end example + +@knownissues +L'imbrication de variables Scheme et LilyPond n'est pas possible +avec l'option @option{--safe}. + + +@node Propriétés des objets +@subsection Propriétés des objets +@translationof Object properties + +Les propriétés des objets sont stockées dans LilyPond sous la forme +d'enchaînements de listes associatives, autrement dit des listes de +listes associatives. Une propriété se détermine par l'ajout de valeurs +en début de liste de cette propriété. Les caractéristiques d'une +propriété s'ajustent donc à la lecture des différentes valeurs des +listes associatives. + +La modification d'une valeur pour une propriété donnée requiert +l'assignation d'une valeur de la liste associative, tant pour la clé que +la valeur associée. Voici comment procéder selon la syntaxe de +LilyPond : + +@example +\override Stem #'thickness = #2.6 +@end example + +Cette instruction ajuste l'apparence des hampes. Une entrée +@w{@code{'(thickness . 2.6)}} de la @emph{alist} est ajoutée à la liste +de la propriété de l'objet @code{Stem}. @code{thickness} devant +s'exprimer en unité d'épaisseur de ligne, les hampes auront donc une +épaisseur de 2,6 ligne de portée, et à peu près le double de leur +épaisseur normale. Afin de faire la distinction entre les variables que +vous définissez au fil de vos fichiers -- tel le @code{vingtQuatre} que +nous avons vu plus haut -- et les variables internes des objets, nous +parlerons de @qq{propriétés} pour ces dernières, et de @qq{variables} +pour les autres. Ainsi, l'objet hampe possède une propriété +@code{thickness}, alors que @code{vingtQuatre} est une variable. + +@cindex propriétés ou variables +@cindex variables ou propriétés + +@c todo -- here we're getting interesting. We're now introducing +@c LilyPond variable types. I think this deserves a section all +@c its own + + +@node Variables LilyPond composites +@subsection Variables LilyPond composites +@translationof LilyPond compound variables + +@subheading Décalages (@emph{offsets}) + +Les décalages (@emph{offset}) sur deux axes (coordonnées X et Y) sont +stockés sous forme de @emph{paires}. Le @code{car} de l'offset +correspond à l'abscisse (coordonnée X) et le @code{cdr} à l'ordonnée +(coordonnée Y). + +@example +\override TextScript #'extra-offset = #'(1 . 2) +@end example + +Cette clause affecte la paire @code{(1 . 2)} à la propriété +@code{extra-offset} de l'objet @code{TextScript}. Ces nombres sont +exprimés en espace de portée. La commande aura donc pour effet de +déplacer l'objet d'un espace de portée vers la droite, et de deux +espaces vers le haut. + +Les procédures permettant de manipuler les offsets sont regroupées dans +le fichier @file{scm/lily-library.scm}. + + +@subheading Fractions + +Les fractions, tel que LilyPond les utilise, sont aussi stockées sous +forme de @emph{paire}. Alors que Scheme est tout à fait capable de +représenter des nombres rationnels, vous conviendrez que, musicalement +parlant, @samp{2/4} et @samp{1/2} ne se valent pas ; nous devrons +donc pouvoir les distinguer. Dans le même ordre d'idée, LilyPond ne +connaît pas les @qq{fractions} négatives. Pour ces raisons, @code{2/4} +en LilyPond correspond à @code{(2 . 4)} en Scheme, et @code{#2/4} en +LilyPond correspond à @code{1/2} en Scheme. + + +@subheading Étendues (@emph{extents}) + +Les paires permettent aussi de stocker des intervalles qui représentent +un ensemble de nombres compris entre un minimum (le @code{car}) et un +maximum (le @code{cdr}). Ces intervalles stockent l'étendue, tant au +niveau horizontal (X) que vertical (Y) des objets imprimables. En +matière d'étendue sur les X, le @code{car} correspond à la coordonnée de +l'extrémité gauche, et le @code{cdr} à la coordonnée de l'extrémité +droite. En matière d'étendue sur les Y, le @code{car} correspond à la +coordonnée de l'extrémité basse, et le @code{cdr} à la coordonnée de +l'extrémité haute. + +Les procédures permettant de manipuler les offsets sont regroupées dans +le fichier @file{scm/lily-library.scm}. Nous vous recommandons +l'utilisation de ces procédures dans toute la mesure du possible afin +d'assurer la cohérence du code. + + +@subheading Propriété en @emph{alists} + +Les propriétés en @emph{alists} sont des structures de données +particulières à LilyPond. Il s'agit de listes associatives dont les +clés sont des propriétés et les valeurs des expressions Scheme +fournissant la valeur requise pour cette propriété. + +Les propriétés LilyPond sont des symboles Scheme, à l'instar de +@code{'thickness}. + + +@subheading Chaînes d'@emph{alist} + +Une chaîne d'@emph{alist} est une liste contenant les listes +associatives d'une propriété. + +L'intégralité du jeu de propriétés qui doivent s'appliquer à un objet +graphique est en fait stocké en tant que chaîne d'@emph{alist}. Afin +d'obtenir la valeur d'une propriété particulière qu'un objet graphique +devrait avoir, on examinera chacune des listes associatives de la +chaîne, à la recherche d'une entrée contenant la clé de cette propriété. +Est renvoyée la première entrée d'@emph{alist} trouvée, sa valeur étant +la valeur de la propriété. + +L'obtention des valeurs de propriété des objets graphiques se réalise en +principe à l'aide de la procédure Scheme @code{chain-assoc-get}. + + +@node Représentation interne de la musique +@subsection Représentation interne de la musique +@translationof Internal music representation + +Dans les entrailles du programme, la musique se présente comme une liste +Scheme. Cette liste comporte les différents éléments qui affecteront la +sortie imprimable. L'analyse grammaticale (l'opération @emph{parsing}) +est le processus chargé de convertir la musique représentée par le code +LilyPond en présentation interne Scheme. + +L'analyse d'une expression musicale se traduit par un jeu d'objets +musicaux en Scheme. Une objet musical est déterminé par le temps qu'il +occupe, que l'on appelle @emph{durée}. Les durées s'expriment par des +nombres rationnels représentant la longueur d'un objet musical par +rapport à la ronde. + +Un objet musical dispose de trois types : +@itemize +@item +un nom de musique : Toute expression musicale a un nom. Par exemple, +une note amène à un @rinternals{NoteEvent}, un @code{\simultaneous} à un +@rinternals{SimultaneousMusic}. Une liste exhaustive des différentes +expressions est disponible dans la référence des propriétés internes, à +la rubrique @rinternals{Music expressions}. + +@item +un @qq{type} ou interface : Tout nom de musique dispose de +plusieurs types ou interfaces. Ainsi, une note est tout à la fois un +@code{event}, un @code{note-event}, un @code{rhythmic-event} et un +@code{melodic-event}. Les différentes classes musicales sont +répertoriées à la rubrique @rinternals{Music classes} de la référence +des propriétés internes. + +@item +un objet C++ : Tout objet musical est représenté par un objet de la +classe C++ @code{Music}. +@end itemize + +L'information réelle d'une expression musicale est enregistrée sous +forme de propriétés. Par exemple, un @rinternals{NoteEvent} dispose des +propriétés @code{pitch} et @code{duration}, respectivement chargées de +stocker la hauteur et la durée de cette note. Les différentes +propriétés sont répertoriées à la rubrique @rinternals{Music properties} +de la référence des propriétés internes. + +Une expression composite est un objet musical dont les propriétés +contiennent d'autres objets musicaux. S'il s'agit d'une liste d'objets, +elle sera stockée dans la propriété @code{elements} d'un objet +musical ; s'il n'y a qu'un seul objet @qq{enfant}, il sera stocké +dans la propriété @code{element}. Ainsi, par exemple, les enfants de +@rinternals{SequentialMusic} iront dans @code{elements}, alors que +l'argument unique de @rinternals{GraceMusic} ira dans @code{element}. +De même, le corps d'une répétition ira dans la propriété @code{element} +d'un @rinternals{RepeatedMusic}, les alternatives quant à elles dans la +propriété @code{elements}. + + +@node Construction de fonctions complexes +@section Construction de fonctions complexes +@translationof Building complicated functions + +Nous allons voir dans cette partie les moyens dont vous disposez pour +obtenir les informations qui vous permettront de créer vos propres +fonctions musicales complexes. + +@menu +* Affichage d'expressions musicales:: +* Propriétés musicales:: +* Doublement d'une note avec liaison (exemple):: +* Ajout d'articulation à des notes (exemple):: +@end menu + + +@node Affichage d'expressions musicales +@subsection Affichage d'expressions musicales +@translationof Displaying music expressions + +@cindex stockage interne +@cindex expression musicale, affichage +@cindex représentation interne, affichage +@cindex displayMusic +@funindex \displayMusic + +Lorsque l'on veut écrire une fonction musicale, il est intéressant +d'examiner comment une expression musicale est représentée en interne. +Vous disposez à cet effet de la fonction musicale @code{\displayMusic}. + +@example +@{ + \displayMusic @{ c'4\f @} +@} +@end example + +@noindent +affichera + +@example +(make-music + 'SequentialMusic + 'elements + (list (make-music + 'NoteEvent + 'articulations + (list (make-music + 'AbsoluteDynamicEvent + 'text + "f")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)))) +@end example + +Par défaut, LilyPond affichera ces messages sur la console, parmi toutes +les autres informations. Vous pouvez, afin de les isoler et de garder +le résultat des commandes @code{\display@{TRUC@}}, rediriger la sortie +vers un fichier : + +@example +lilypond file.ly >display.txt +@end example + +Un peu de Scheme combiné à notre code LilyPond, et les seules +informations qui nous intéressent se retrouveront directement dans un +fichier indépendant : + +@example +@{ + #(with-output-to-file "display.txt" + (lambda () #@{ \displayMusic @{ c'4\f @} #@})) +@} +@end example + +L'information sera encore plus lisible après un peu de mise en forme : + +@example +(make-music 'SequentialMusic + 'elements (list + (make-music 'NoteEvent + 'articulations (list + (make-music 'AbsoluteDynamicEvent + 'text + "f")) + 'duration (ly:make-duration 2 0 1 1) + 'pitch (ly:make-pitch 0 0 0)))) +@end example + +Une séquence musicale @code{@{ ... @}} se voit attribuer le nom de +@code{SequentialMusic}, et les expressions qu'elle contient sont +enregistrées en tant que liste dans sa propriété @code{'elements}. Une +note est représentée par un objet @code{NoteEvent} -- contenant les +propriétés de durée et hauteur -- ainsi que l'information qui lui est +attachée -- en l'occurrence un @code{AbsoluteDynamicEvent} ayant une +propriété @code{text} de valeur @code{"f"} -- et stockée dans sa +propriété @code{articulations}. + +@funindex{\void} +La fonction @code{\displayMusic} renvoie la musique qu'elle +affiche ; celle-ci sera donc aussi interprétée. L'insertion d'une +commande @code{\void} avant le @code{\displayMusic} permet de +s'affranchir de la phase d'interprétation. + + +@node Propriétés musicales +@subsection Propriétés musicales +@translationof Music properties + +Nous abordons ici les propriétés @emph{music}, et non pas les propriétés +@emph{context} ou @emph{layout}. + +Partons de cet exemple simple@tie{}: + +@example +someNote = c' +\displayMusic \someNote +===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)) +@end example + +L'objet @code{NoteEvent} est la représentation brute de @code{someNote}. +Voyons ce qui se passe lorsque nous plaçons ce @notation{c'} dans une +construction d'accord : + +@example +someNote = +\displayMusic \someNote +===> +(make-music + 'EventChord + 'elements + (list (make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)))) +@end example + +L'objet @code{NoteEvent} est maintenant le premier objet de la propriété +@code{'elements} de @code{someNote}. + +@code{\displayMusic} utilise la fonction @code{display-scheme-music} +pour afficher la représentation en Scheme d'une expression musicale : + +@example +#(display-scheme-music (first (ly:music-property someNote 'elements))) +===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 0 0)) +@end example + +La hauteur de la note est accessible au travers de la propriété +@code{'pitch} de l'objet @code{NoteEvent} : + +@example +#(display-scheme-music + (ly:music-property (first (ly:music-property someNote 'elements)) + 'pitch)) +===> +(ly:make-pitch 0 0 0) +@end example + +La hauteur de la note se modifie en définissant sa propriété +@code{'pitch}@tie{}: + +@funindex \displayLilyMusic + +@example +#(set! (ly:music-property (first (ly:music-property someNote 'elements)) + 'pitch) + (ly:make-pitch 0 1 0)) ;; set the pitch to d'. +\displayLilyMusic \someNote +===> +d' +@end example + + +@node Doublement d'une note avec liaison (exemple) +@subsection Doublement d'une note avec liaison (exemple) +@translationof Doubling a note with slurs (example) + +Supposons que nous ayons besoin de créer une fonction transformant une +saisie @code{a} en @w{@code{@{ a( a) @}}}. Commençons par examiner +comment le résultat est représenté en interne. + +@example +\displayMusic@{ a'( a') @} +===> +(make-music + 'SequentialMusic + 'elements + (list (make-music + 'NoteEvent + 'articulations + (list (make-music + 'SlurEvent + 'span-direction + -1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)) + (make-music + 'NoteEvent + 'articulations + (list (make-music + 'SlurEvent + 'span-direction + 1)) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) +@end example + +Mauvaise nouvelle ! Les expressions @code{SlurEvent} doivent +s'ajouter @qq{à l'intérieur} de la note -- dans sa propriété +@code{articulations}. + +Examinons à présent la saisie : + +@example +\displayMusic a' +===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch 0 5 0)))) +@end example + +Nous aurons donc besoin, dans notre fonction, de cloner cette expression +-- de telle sorte que les deux notes constituent la séquence -- puis +d'ajouter un @code{SlurEvent} à la propriété @code{'articulations} de +chacune d'elles, et enfin réaliser un @code{SequentialMusic} de ces deux +@code{EventChords}. En tenant compte du fait que, dans le cadre d'un +ajout, une propriété non définie est lue @code{'()} (une liste vide), +aucune vérification n'est requise avant d'introduire un nouvel élément +en tête de la propriété @code{articulations}. + +@example +doubleSlur = #(define-music-function (parser location note) (ly:music?) + "Renvoie : @{ note ( note ) @}. + `note' est censé être une note unique." + (let ((note2 (ly:music-deep-copy note))) + (set! (ly:music-property note 'articulations) + (cons (make-music 'SlurEvent 'span-direction -1) + (ly:music-property note 'articulations))) + (set! (ly:music-property note2 'articulations) + (cons (make-music 'SlurEvent 'span-direction 1) + (ly:music-property note2 'articulations))) + (make-music 'SequentialMusic 'elements (list note note2)))) +@end example + + +@node Ajout d'articulation à des notes (exemple) +@subsection Ajout d'articulation à des notes (exemple) +@translationof Adding articulation to notes (example) + +Le moyen d'ajouter une articulation à des notes consiste à fusionner +deux expressions musicales en un même contexte, comme nous l'avons vu à +la rubrique @ruser{Création d'un contexte}. L'option de réaliser +nous-mêmes une fonction musicale à cette fin nous offre l'avantage de +pouvoir alors ajouter une articulation, telle qu'une instruction de +doigté, individuellement à l'une des notes d'un accord, ce qui est +impossible dans le cadre d'une simple fusion de musique indépendante. + +Un @code{$variable} au milieu de la notation @code{#@{...#@}} se +comporte exactement comme un banal @code{\variable} en notation LilyPond +traditionnelle. Nous savons déjà que + +@example +@{ \musique -. -> @} +@end example + +@noindent +n'est pas admis par LilyPond. Nous pourrions tout à fait contourner ce +problème en attachant l'articulation à un accord vide, + +@example +@{ << \musique <> -. -> >> @} +@end example + +@noindent +mais, pour les besoins de la démonstration, nous allons voir comment +réaliser ceci en Scheme. Commençons par examiner une saisie simple et +le résultat auquel nous désirons aboutir : + +@example +% saisie +\displayMusic c4 +===> +(make-music + 'NoteEvent + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)))) +===== +% résultat attendu +\displayMusic c4-> +===> +(make-music + 'NoteEvent + 'articulations + (list (make-music + 'ArticulationEvent + 'articulation-type + "accent")) + 'duration + (ly:make-duration 2 0 1 1) + 'pitch + (ly:make-pitch -1 0 0)) +@end example + +Nous voyons qu'une note (@code{c4}) est représentée par une expression +@code{NoteEvent}. Si nous souhaitons ajouter une articulation +@notation{accent}, nous devrons ajouter une expression +@code{ArticulationEvent} à la propriété @code{articulations} de +l'expression @code{NoteEvent}. + +Construisons notre fonction en commençant par + +@example +(define (ajoute-accent note-event) + "Ajoute un accent (ArticulationEvent) aux articulations de `note-event', + qui est censé être une expression NoteEvent." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) +@end example + +La première ligne est la manière de définir une fonction en Scheme : la +fonction Scheme a pour nom @code{ajoute-accent} et elle comporte une +variable appelée @code{note-event}. En Scheme, le type d'une variable +se déduit la plupart de temps de par son nom -- c'est d'ailleurs une +excellente pratique que l'on retrouve dans de nombreux autres langages. + +@example +"Ajoute un accent..." +@end example + +@noindent +décrit ce que fait la fonction. Bien que ceci ne soit pas primordial, +tout comme des noms de variable évidents, tâchons néanmoins de prendre +de bonnes habitudes dès nos premiers pas. + +Vous pouvez vous demander pourquoi nous modifions directement +l'événement note plutôt que d'en manipuler une copie -- on pourrait +utiliser @code{ly:music-deep-copy} à cette fin. La raison en est qu'il +existe un contrat tacite : les fonctions musicales sont autorisées +à modifier leurs arguments -- ils sont générés en partant de zéro (comme +les notes que vous saisissez) ou déjà recopiés (faire référence à une +variable musicale avec @samp{\name} ou à de la musique issue +d'expressions Scheme @samp{$(@dots{})} aboutit à une copie). Dans la +mesure où surmultiplier les copies serait contre productif, la valeur de +retour d'une fonction musicale n'est @strong{pas} recopiée. Afin de +respecter ce contrat, n'utilisez pas un même argument à plusieurs +reprises, et n'oubliez pas que le retourner compte pour une utilisation. + +Dans un exemple précédent, nous avons construit de la musique en +répétant un certain argument musical. Dans ce cas là, l'une des +répétitions se devait d'être une copie. Dans le cas contraire, +certaines bizarreries auraient pu survenir. Par exemple, la présence +d'un @code{\relative} ou d'un @code{\transpose}, après plusieurs +répétitions du même élément, entraînerait des @qq{relativisations} ou +transpositions en cascade. Si nous les assignons à une variable +musicale, l'enchaînement est rompu puisque la référence à @samp{\nom} +créera une nouvelle copie sans toutefois prendre en considération +l'identité des éléments répétés. + +Cette fonction n'étant pas une fonction musicale à part entière, elle +peut s'utiliser dans d'autres fonctions musicales. Il est donc sensé de +respecter le même contrat que pour les fonctions musicales : +l'entrée peut être modifiée pour arriver à une sortie, et il est de la +responsabilité de l'appelant d'effectuer des copies s'il a réellement +besoin de l'argument dans son état originel. Vous constaterez, à la +lecture des fonctions propres à LilyPond, comme @code{music-map}, que ce +principe est toujours respecté. + +Revenons à nos moutons@dots{} Nous disposons maintenant d'un +@code{note-event} que nous pouvons modifier, non pas grâce à un +@code{ly:music-deep-copy}, mais plutôt en raison de notre précédente +réflexion. Nous ajoutons @notation{l'accent} à la liste de ses +propriétés @code{'articulations}. + +@example +(set! emplacement nouvelle-valeur) +@end example + +L'emplacement est ce que nous voulons ici définir. Il s'agit de la +propriété @code{'articulations} de l'expression @code{note-event}. + +@example +(ly:music-property note-event 'articulations) +@end example + +La fonction @code{ly:music-property} permet d'accéder aux propriétés +musicales -- les @code{'articulations}, @code{'duration}, @code{'pitch} +etc. que @code{\displayMusic} nous a indiquées. La nouvelle valeur sera +l'ancienne propriété @code{'articulations}, augmentée d'un +élément : l'expression @code{ArticulationEvent}, que nous +recopions à partir des informations de @code{\displayMusic}. + +@example +(cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property result-event-chord 'articulations)) +@end example + +@code{cons} permet d'ajouter un élément en tête de liste sans pour +autant modifier la liste originale. C'est exactement ce que nous +recherchons : la même liste qu'auparavant, plus la nouvelle +expression @code{ArticulationEvent}. L'ordre au sein de la propriété +@code{'articulations} n'a ici aucune importance. + +Enfin, après avoir ajouté l'articulation @notation{accent} à sa +propriété @code{articulations}, nous pouvons renvoyer le +@code{note-event}, ce que réalise la dernière ligne de notre fonction. + +Nous pouvons à présent transformer la fonction @code{ajoute-accent} en +fonction musicale, à l'aide d'un peu d'enrobage syntaxique et mention du +type de son unique argument @qq{réel}. + +@example +ajouteAccent = #(define-music-function (parser location note-event) + (ly:music?) + "Ajoute un accent (ArticulationEvent) aux articulations de `note-event', + qui est censé être une expression NoteEvent." + (set! (ly:music-property note-event 'articulations) + (cons (make-music 'ArticulationEvent + 'articulation-type "accent") + (ly:music-property note-event 'articulations))) + note-event) +@end example + +Par acquis de conscience, vérifions que tout ceci fonctione : + +@example +\displayMusic \ajouteAccent c4 +@end example + + + +@ignore +@menu +* Tweaking with Scheme:: +@end menu + +@c @nod e Tweaking with Scheme +@c @sectio n Tweaking with Scheme + +We have seen how LilyPond output can be heavily modified using +commands like +@code{\override TextScript #'extra-offset = ( 1 . -1)}. But +we have even more power if we use Scheme. For a full explanation +of this, see the @ref{Scheme tutorial}, and +@ref{Interfaces for programmers}. + +We can use Scheme to simply @code{\override} commands, + +TODO Find a simple example +@c This isn't a valid example with skylining +@c It works fine without padText -td +@end ignore + +@ignore +@lilypond[quote,verbatim,ragged-right] +padText = #(define-music-function (parser location padding) (number?) +#{ + \once \override TextScript #'padding = #padding +#}) + +\relative c''' { + c4^"piu mosso" b a b + \padText #1.8 + c4^"piu mosso" d e f + \padText #2.6 + c4^"piu mosso" fis a g +} +@end lilypond +@end ignore + +@ignore +We can use it to create new commands: + +@c Check this is a valid example with skylining +@c It is - 'padding still works + + +@lilypond[quote,verbatim,ragged-right] +tempoPadded = #(define-music-function (parser location padding tempotext) + (number? markup?) +#{ + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } +#}) + +\relative c'' { + \tempo \markup { "Low tempo" } + c4 d e f g1 + \tempoPadded #4.0 "High tempo" + g4 f e d c1 +} +@end lilypond + + +Even music expressions can be passed in: + +@lilypond[quote,verbatim,ragged-right] +pattern = #(define-music-function (parser location x y) (ly:music? ly:music?) +#{ + #x e8 a b $y b a e +#}) + +\relative c''{ + \pattern c8 c8\f + \pattern {d16 dis} { ais16-> b\p } +} +@end lilypond +@end ignore diff --git a/Documentation/fr/included/generating-output.itexi b/Documentation/fr/included/generating-output.itexi index 04a34169db..794154170d 100644 --- a/Documentation/fr/included/generating-output.itexi +++ b/Documentation/fr/included/generating-output.itexi @@ -2,7 +2,7 @@ @c This file is part of web/download.itexi and @c learning/tutorial.itely @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 72012c900e38247806dcc32c01e162f02c63287b When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -189,7 +189,7 @@ Créez un fichier texte du nom de @file{test.ly} et saisissez@tie{}: @c double \\ required because this is inside a macro! @example -\\version "@w{@version{}}" +\\version "@w{@versionStable{}}" @{ c' e' g' e' @} @@ -209,7 +209,7 @@ lilypond test.ly Vous verrez alors quelque chose qui ressemblera à@tie{}: @example -GNU LilyPond @w{@version{}} +GNU LilyPond @w{@versionStable{}} Traitement de « test.ly » Analyse... Interprétation en cours de la musique... @@ -219,6 +219,7 @@ Répartition de la musique sur une page... Dessin des systèmes... Sortie mise en page vers « test.ps »... Conversion à « ./test.pdf »... +Résultat : Compilation menée à son terme, avec succès. @end example @c DIV specific diff --git a/Documentation/fr/included/helpus.itexi b/Documentation/fr/included/helpus.itexi index b9cc0d5b95..7ab3b5d377 100644 --- a/Documentation/fr/included/helpus.itexi +++ b/Documentation/fr/included/helpus.itexi @@ -3,7 +3,7 @@ @c contributor/introduction.itely @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 446dc1f3ac9bfff6bfee31de929698b0425da6fe When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -13,130 +13,142 @@ @macro helpusNeed @subheading Nous avons besoin de vous ! -L'équipe de développement de LilyPond est fort réduite@tie{}; nous -souhaitons vraiment y accueillir davantage de contributeurs. -Pourquoi pas vous@tie{}? Apportez votre contribution au développement -de LilyPond@tie{}! +Nous vous remercions dès à présent pour l'intérêt que vous éprouvez à +nous aider et apprécions grandement votre implication. Votre +contribution viendra en aide à beaucoup d'utilisateurs dans leur quête +de partitions de qualité. Prendre en charge même des tâches simples peut avoir un impact -conséquent@tie{}: cela permet aux développeurs plus expérimentés de +conséquent : cela permet aux développeurs plus expérimentés de consacrer leur temps à des travaux plus ardus. +Pour un projet aux multiples facettes tel que LilyPond, il n'est parfois +pas évident de savoir sous quel angle l'aborder. En plus des pistes +ci-dessous proposées, n'hésitez pas à adresser un courriel à notre +@email{mike@@mikesolomon.org, Frog meister}, lui faisant part des +compétences que vous désirez mettre à disposition de la communauté ou +bien pour lui proposer un projet. Il est à même de vous guider dans vos +premiers pas. + @end macro -@macro helpusTasks +@macro helpusSimple @subheading Tâches simples +Aucun besoin de fouiller dans le code ni de compiler. + @itemize @item -La liste de diffusion@tie{}: répondre aux questions des autres -utilisateurs. +La liste de diffusion : répondre aux questions des autres utilisateurs. + +@item +Les rapports de bogue : aider les utilisateurs à rédiger correctement et +traduire leurs @rwebnamed{Signalement de bogue, signalements de bogue}, +puis aider l'équipe des correcteurs à traiter ces +@rcontribnamed{Issues, problèmes}. @item -Les rapports de bogue@tie{}: aider les utilisateurs à rédiger -correctement et traduire leurs @rwebnamed{Signalement de bogue, -signalements de bogue}, puis aider l'équipe des correcteurs à traiter -ces @rcontribnamed{Issues,problèmes}. +@rcontribnamed{Grand Regression Test Checking, Vérification des test de +régression} : vérifier que LilyPond fournit un travail toujours +exemplaire au fil des versions. Contrôler un échantillon spécifique +prend moins d'une minute ! @item -Documentation@tie{}: il est possible de proposer des modifications, -en suivant les recommandations s'appliquant aux -@rcontribnamed{Documentation suggestions,suggestions en matière de +Documentation : il est possible de proposer des modifications, en +suivant les recommandations s'appliquant aux +@rcontribnamed{Documentation suggestions, suggestions en matière de documentation}. @item -LilyPond Snippet Repository (LSR): ajouter ou corriger des extraits. Voir -@rcontribnamed{Adding and editing snippets,Ajout et édition d'extraits}. +LilyPond Snippet Repository (LSR) : ajouter ou corriger des extraits. +Voir @rcontribnamed{Adding and editing snippets, Ajout et édition +d'extraits}. @item -Discussions, relectures et tests@tie{}: les développeurs demandent +Discussions, relectures et tests : les développeurs demandent régulièrement des retours sur des ajouts à la documentation, d'éventuels changements de syntaxe ou de nouvelles fonctionnalités à tester. -Vous aussi, prenez part à ces discussions@tie{}! +Vous aussi, prenez part à ces discussions ! @end itemize +@end macro -@subheading Tâches intermédiaires +@macro helpusAdvanced +@subheading Tâches ardues -@warning{Ces travaux demandent en général de disposer des -fichiers source du logiciel et de la documentation, mais -n'exigent pas un environnement de développement complet. Voir -@rcontribnamed{Starting with Git,Débuter avec Git}.} +Ces travaux demandent en général de disposer du code source et d'être en +mesure de compiler LilyPond. + +@warning{Nous engageons les contributeurs utilisant Windows ou +MacOS X à utiliser une machine virtuelle pour faire tourner +@emph{Lilydev} -- voir @rcontribnamed{Quick start, Démarrage rapide} -- +plutôt que leur propre environnement de développement.} + +Les contributeurs utilisant Linux ou FreeBSD peuvent eux aussi utiliser +Lilydev. Nous leur conseillons cependant, s'ils préfèrent leur propre +environnement de développement, la lecture des rubriques +@rcontribnamed{Working with source code, Travailler sur le code source} +et @rcontribnamed{Compiling, Compiler}. + +Nous vous recommandons de lire tout d'abord la rubrique +@rcontrib{Summary for experienced developers}. @itemize @item -Documentation@tie{}: voir -@rcontribnamed{Documentation work,Travailler sur la documentation} et -@rcontribnamed{Building documentation without compiling,Générer la documentation sans compiler}. +Documentation : voir +@rcontribnamed{Documentation work,Travailler sur la documentation}. @item -Site web@tie{}: le site web est compilé par le même code source -que le reste de la documentation. Reportez-vous aux -informations sur la documentation, ainsi qu'au chapitre +Site web : le site web est compilé à partir du même code source +que le reste de la documentation. Reportez-vous aux informations sur la +documentation, ainsi qu'au chapitre @rcontribnamed{Website work,Travailler sur le site internet}. @item -Traductions@tie{}: voir -@rcontribnamed{Translating the documentation,Traduire la documentation} et -@rcontribnamed{Translating the website,Traduire le site internet}. - -@end itemize +Traductions : voir +@rcontribnamed{Translating the documentation,Traduire la documentation} +et @rcontribnamed{Translating the website,Traduire le site internet}. - -@subheading Tâches ardues - -@warning{Ces travaux demandent en général de disposer du code -source et d'être en mesure de compiler LilyPond. Voir -@rcontribnamed{Starting with Git,Débuter avec Git} et -@rcontribnamed{Compiling LilyPond,Compiler LilyPond}. -@*@* -Nous engageons les nouveaux contributeurs utilisant Windows à utiliser -une machine virtuelle pour faire tourner @emph{lilydev}. Voir -@rcontrib{Lilydev}. -} - -@itemize @item -Corriger des bogues et ajouter de nouvelles fonctionnalités@tie{}: -la voie recommandée est de se joindre aux @qq{Frogs}, et de lire +Correction de bogue et ajout de nouvelles fonctionnalités : +la voie recommandée est de se joindre aux « Frogs », et de lire @rcontrib{Programming work}. @end itemize @end macro - +@ignore @macro helpusProjects @subheading Projets @subsubheading Frogs -Site et liste de diffusion@tie{}: +Site et liste de diffusion : @example @uref{http://frogs.lilynet.net} @end example -Les @qq{Frogs} sont de simples utilisateurs de LilyPond qui ont +Les « Frogs » sont de simples utilisateurs de LilyPond qui ont décidé de s'impliquer dans le développement de leur logiciel préféré. Ils corrigent des bogues, implémentent de nouvelles fonctionnalités ou documentent le code source. Il y a beaucoup à faire, mais le plus important est que chacun peut ainsi en apprendre beaucoup -sur LilyPond, les logiciels libres, la programmation@dots{} et -s'amuser@tie{}! L'aventure vous tente@tie{}? Alors une seule chose à -faire@tie{}: @emph{Rejoignez les Frogs@tie{}!} - +sur LilyPond, les logiciels libres, la programmation@dots{} et y prendre +plaisir ! L'aventure vous tente ? Alors une seule chose à +faire : @emph{Rejoignez les Frogs !} @subsubheading Projet GLISS de stabilisation de la syntaxe -Page web@tie{}: +Page web : @rcontrib{Grand LilyPond Input Syntax Standardization (GLISS)} -Le @qq{GLISS} (@emph{Grand LilyPond Input Syntax Standardization}) -est destiné à stabiliser la syntaxe (en-dehors des ajustements) +Le « GLISS » (@emph{Grand LilyPond Input Syntax Standardization}) +est destiné à stabiliser la syntaxe (en dehors des ajustements) en vue de la version 3.0 de LilyPond. Les utilisateurs adoptant cette version bénéficieront, pour les partitions dépourvues d'ajustements, d'une syntaxe stable à long terme. @@ -144,29 +156,28 @@ d'ajustements, d'une syntaxe stable à long terme. Nous prendrons le temps de discuter la spécification de ce format de saisie définitif. - -@warning{Le GLISS commencera peu après la sortie de la version 2.14.} +@warning{Le GLISS commencera peu après la sortie de la version 2.16.} @subsubheading Projet GOP d'organisation de LilyPond -Page web@tie{}: @rcontrib{Grand Organization Project (GOP)} +Page web : @rcontrib{Grand Organization Project (GOP)} -Le @qq{GOP} (@emph{Grand Organization Project}) est destiné à +Le « GOP » (@emph{Grand Organization Project}) est destiné à recruter de nouveaux contributeurs. Nous avons désespérément besoin de mieux répartir les tâches de développement, y compris les plus simples, qui ne demandent ni de programmer ni de se -plonger dans le code source@tie{}! Nous devons aussi documenter +plonger dans le code source ! Nous devons aussi documenter le savoir des développeurs actuels afin qu'il ne se perde pas. Comme son nom ne l'indique pas, le GOP n'a pas pour propos -d'ajouter de nouvelles fonctionnalités considérables ni de +d'ajouter de nouvelles fonctionnalités révolutionnaires ni de repenser complètement quoi que ce soit. L'objectif est plutôt de nous donner une base bien plus stable pour pouvoir entreprendre de grands travaux à l'avenir. -@warning{Le GOP commencera peu après la sortie de la version 2.14.} - @end macro +@end ignore +@c LocalWords: itemize rcontribnamed subheading rcontrib diff --git a/Documentation/fr/learning.tely b/Documentation/fr/learning.tely index 0caa86178b..248ab04fe4 100644 --- a/Documentation/fr/learning.tely +++ b/Documentation/fr/learning.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 957ee70b1613ce33157486a1372827e7c1c9274f When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -20,7 +20,7 @@ Ce document constitue le manuel d'initiation à GNU LilyPond @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 par les auteurs. +Copyright @copyright{} 1999--2012 par les auteurs. @end macro @set FDL diff --git a/Documentation/fr/learning/common-notation.itely b/Documentation/fr/learning/common-notation.itely index 6b589f3ebc..3428877527 100644 --- a/Documentation/fr/learning/common-notation.itely +++ b/Documentation/fr/learning/common-notation.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 1dea8bf1d7182f3d1a1c70bb2010f4585f56b3e6 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -25,7 +25,7 @@ Tutorial guidelines: (different from policy.txt!) @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Nicolas Grandclaude, Ludovic Sardain, Gauvain Pocentek @c Translation checkers: Jean-Charles Malahieude, Valentin Villenave, John Mandereau @@ -219,7 +219,7 @@ aes4 c b c Prenons un autre exemple@tie{}: imaginez-vous devant un piano@tie{}; dès lors que vous voulez enfoncer l'une des touches noires, il vous faudra -@strong{ajouter} un @code{-is} ou un @code{-es} au nom de la note. +@strong{ajouter} un @code{is} ou un @code{es} au nom de la note. Ajouter explicitement toutes les altérations demande un peu plus d'effort dans la phase de saisie, mais cela facilite grandement la @@ -923,7 +923,8 @@ durée, donc @emph{à l'extérieur} des chevrons. @lilypond[verbatim,quote,relative=2] r4 ~ 2 | -8[ ] \>[ ]\! | +8[ ] + \>[ ]\! | r4 8.\p 16( 4-. ) | @end lilypond @@ -1400,7 +1401,8 @@ en début de fichier, après le numéro de version. Quand LilyPond traite le fichier, le titre et le compositeur sont imprimés au début de la partition. Vous trouverez plus d'informations -sur les titres à la section @ruser{Création de titres}. +sur les titres à la section +@ruser{Création de titres et entête ou pied de page}. @node Noms de note absolus diff --git a/Documentation/fr/learning/fundamental.itely b/Documentation/fr/learning/fundamental.itely index 62903c106e..7507aa88a4 100644 --- a/Documentation/fr/learning/fundamental.itely +++ b/Documentation/fr/learning/fundamental.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: John Mandereau @@ -113,7 +112,7 @@ comme un raccourci de @end example En d'autres termes, si le code n'est constitué que d'une expression -musicale simple, LilyPond interprètera le fichier tout comme si cette +musicale simple, LilyPond interprétera le fichier tout comme si cette expression était incluse dans les commandes de notre premier exemple. @cindex contextes implicites @@ -235,7 +234,7 @@ Pour plus de détail à ce sujet, consultez @ruser{Plusieurs partitions dans un même ouvrage}. @cindex variables -@cindex identificateurs +@cindex identifiants Un autre raccourci pratique est la possibilité de définir des variables, également appelées @qq{identificateurs} -- voir @@ -489,9 +488,9 @@ qui est le comportement par défaut. @seealso -Les ossia apparaissent souvent sans clef ni métrique, et dans une taille -plus petite. Ceci requiert des commandes dont nous n'avons pas encore -parlé. Voir @ref{Taille des objets} et @ruser{Portées d'ossia}. +Les ossias apparaissent souvent sans clef ni métrique, et dans une +taille plus petite. Ceci requiert des commandes dont nous n'avons pas +encore parlé. Voir @ref{Taille des objets} et @ruser{Portées d'ossia}. @node Non-imbrication des crochets et liaisons @@ -608,11 +607,11 @@ En réalité, le contexte de voix est le seul à pouvoir contenir de la musique. S'il n'est pas déclaré explicitement, il sera créé automatiquement comme nous l'avons vu au début de ce chapitre. Certains instruments, le hautbois par exemple, ne peuvent jouer qu'une seule note -à la fois. On dit en pareil cas qu'il s'agit de musique monophonique, -et nous n'aurons alors besoin que d'une seule voix. Les intruments qui, -comme le piano, peuvent émettre plusieurs sons en même temps, nécessitent -de recourir à plusieurs voix pour gérer efficacement l'alignement des -notes et rythmes différents. +à la fois. Nous n'aurons besoin, pour ces instruments monodiques, que +d'une seule voix. Les instruments qui, comme le piano, peuvent émettre +plusieurs sons en même temps sont polyphoniques et nécessitent de +recourir à plusieurs voix pour gérer efficacement l'alignement des notes +et rythmes différents. Si une voix unique peut tout à fait contenir plusieurs notes dans un accord, à partir de quand aurons-nous vraiment besoin de plusieurs @@ -646,9 +645,10 @@ sur la même portée, consiste à saisir chacune des voix séquentiellement doubles chevrons gauche/droite, @code{<<...>>}. Les fragments devront être séparés par une double oblique inversée, @code{\\}, pour les affecter à des voix séparées. Dans le cas contraire, les notes -seraient toutes affectées à une même voix, ce qui pourait générer des +seraient toutes affectées à une même voix, ce qui pourrait générer des erreurs. Cette manière de procéder est tout à fait indiquée dans le cas -d'une pièce ne comportant que quelques courts passages de polyphonie. +d'une pièce homophonique ne comportant que quelques courts passages de +polyphonie. Voici comment éclater les accords en deux voix, avec la note de passage et la liaison@tie{}: @@ -701,8 +701,12 @@ traiter trois voix ou plus en ajoutant autant de séparateurs @code{\\} que de besoin. Les contextes @code{Voice} portent les noms @code{"1"}, @code{"2"}, etc. -Pour chacun de ces contextes, le positionnement et l'orientation des -liaisons, hampes, nuances, etc. est définie automatiquement. +Les premiers contextes définissent les voix @emph{extrêmes}, la plus +haute au contexte @code{"1"}, le plus basse au contexte @code{"2"}. Les +voix intermédiaires seront affectées aux contextes @code{"3"} et +@code{"4"}. Pour chacun de ces contextes, le positionnement et +l'orientation des liaisons, hampes, nuances, etc. est définie +automatiquement. @lilypond[quote,verbatim] \new Staff \relative c' { @@ -719,7 +723,7 @@ notes en dehors de la construction @code{<<...>>} -- que nous appellerons @emph{construction simultanée}. Les liaisons, de prolongation ou non, ne peuvent relier des notes que si elles appartiennent à la même voix@tie{}; elles ne peuvent ni pénétrer une -contruction simultanée, ni en sortir. Inversement, les voix parallèles +construction simultanée, ni en sortir. Inversement, les voix parallèles issues de constructions simultanées apparaissant sur une même portée appartiennent à la même voix. Les autres propriétés liées au contexte de voix s'appliquent tout au long des constructions simultanées. @@ -814,7 +818,7 @@ Pour finir, analysons le principe d'utilisation des voix dans une pièce complexe. Nous allons nous concentrer sur les deux premières mesures du second des Deux nocturnes, opus 32 de Chopin. Cet exemple nous servira à plusieurs reprises, y compris dans le chapitre suivant, pour illustrer -certaines techniques de notation. Aussi, ne prétez pas trop d'attention +certaines techniques de notation. Aussi, ne prêtez pas trop d'attention à ce qui pour l'instant pourrait vous paraître vraiment mystérieux dans le code, et intéressons-nous uniquement à ce qui concerne la musique et les voix -- ce qui est plus compliqué sera décortiqué plus tard. @@ -823,19 +827,22 @@ les voix -- ce qui est plus compliqué sera décortiqué plus tard. @lilypond[quote,ragged-right] \new Staff \relative c'' { \key aes \major - << % Voice one + << % Voice one { c2 aes4. bes8 } - \\ % Voice two - { aes2 f4 fes } - \\ % No voice three - \\ % Voice four + \\ % Voice two { % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 + \once \override NoteColumn #'ignore-collision = ##t + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ % No voice three + \\ % Voice four + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -866,22 +873,23 @@ tard sur le code que vous ne comprendriez pas. \new Staff \relative c'' { \key aes \major << - { % Voice one + { % Voice one \voiceOneStyle c2 aes4. bes8 } \\ % Voice two { \voiceTwoStyle - aes2 f4 fes + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'ignore-collision = ##t + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 } \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle - % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes } >> | 1 | @@ -898,9 +906,9 @@ voix@tie{}: \new Staff \relative c'' { \key aes \major << - { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des2 } - >> - 1 + { c2 aes4. bes8 } \\ { 2 des } \\ { aes'2 f4 fes } + >> | + 1 | } @end lilypond @@ -922,13 +930,13 @@ supplémentaire@tie{}: @lilypond[quote,verbatim,ragged-right] \new Staff \relative c'' { \key aes \major - << % Voice one + << % Voice one { c2 aes4. bes8 } - \\ % Voice two - { aes2 f4 fes } - \\ % Omit Voice three - \\ % Voice four - { 2 des2 } + \\ % Voice two + { 2 des } + \\ % Omit Voice three + \\ % Voice four + { aes'2 f4 fes } >> | 1 | } @@ -936,21 +944,20 @@ supplémentaire@tie{}: @noindent Cette manipulation nous permet de régler la direction des hampes, mais -elle engendre un problème que l'on rencontre parfois avec de multiples -voix, à savoir que les hampes d'une voix peuvent chevaucher les têtes de -note des autres voix. En matière de mise en forme des notes, LilyPond -tolère que des notes ou accords appartenant à deux voix se retrouvent -dans le même empilement de notes (@emph{note column} en anglais) si tant -est que ces hampes vont dans des directions opposées@tie{}; néanmoins les -notes des troisième et quatrième voix seront décalées si nécessaire pour -éviter que les têtes ne se chevauchent. Cela marche plutôt bien mais, -dans notre exemple, les notes de la voix la plus basse ne sont vraiment -pas correctement placées. LilyPond met à notre disposition plusieurs +le positionnement horizontal des notes n'est pas satisfaisant. LilyPond +décale les notes des voix intermédiaires lorsque leur tête ou leur hampe +viendrait à chevaucher celles des voix extrêmes. Bien entendu, ce n'est +pas souhaitable dans le cas d'une partition pour piano. Dans d'autres +situations, les décalages que LilyPond applique peuvent ne pas éviter +certaines collisions. LilyPond met à notre disposition plusieurs moyens d'ajuster le positionnement horizontal des notes. Nous ne sommes pas encore tout à fait prêts pour voir comment corriger cela, aussi nous examinerons ce problème dans un autre chapitre (voir la propriété @code{force-hshift} dans @ref{Correction des collisions d'objets}). +@warning{Paroles et objets étendus (liaisons, soufflets etc.) ne peuvent +passer d'une voix à l'autre.} + @seealso Manuel de notation : @@ -975,7 +982,7 @@ Manuel de notation : @cindex Voice, création de contextes Les contextes @rinternals{Voice} peuvent être déclarés manuellement -dans un bloc @code{<< >>} pour créer de la musique polyphonique, en +dans un bloc @code{@w{<< >>}} pour créer de la musique polyphonique, en utilisant @code{\voiceOne}, @dots{} jusqu'à @code{\voiceFour} pour assigner des directions de hampes et un déplacement horizontal pour chaque partie. Cette méthode apporte de la clarté pour des partitions @@ -1056,7 +1063,7 @@ annotations, liaisons de prolongation ou de phrasé, et sur les nuances. @end lilypond Voyons à présent trois différentes façons d'exprimer un passage -polyhonique, à partir d'un exemple de la section précédente. Chacune +polyphonique, à partir d'un exemple de la section précédente. Chacune d'elles aura ses avantages selon les circonstances. Une expression séquentielle qui apparaît en premier dans un @code{<< >>} @@ -1071,7 +1078,7 @@ permet d'ajouter une liaison de phrasé à l'ensemble. @lilypond[quote,ragged-right,verbatim] \new Staff \relative c' { \voiceOneStyle - % The following notes are monophonic + % The following notes are homophonic c16^( d e f % Start simultaneous section of three voices << @@ -1460,7 +1467,7 @@ et peuvent être ignorés. Mais lorsqu'il s'agit de morceaux plus amples les créer explicitement pour être sûr d'obtenir toutes les portées nécessaires, et dans le bon ordre. Enfin, pour des morceaux impliquant une notation spéciale, modifier les contextes ou en créer de nouveaux -devient extrêment utile. +devient extrêmement utile. En plus des contextes @code{Score}, @code{Staff} et @code{Voice} sont disponibles d'autres contextes intermédiaires entre les niveaux @@ -1491,7 +1498,7 @@ Manuel de notation : @cindex contextes, création de Il en va des contextes comme de toute hiérarchie@tie{}: il faut un -sommet -- le contexte @code{Score} en l'occurence. La commande +sommet -- le contexte @code{Score} en l'occurrence. La commande @code{\score} est chargée de le créer, mais pour des partitions simples, il le sera automatiquement. Le bloc @code{\score} contient donc une expression musicale unique ainsi que la définition des supports à @@ -1756,15 +1763,15 @@ communément utilisées. @end multitable @noindent -où un boléen correspond soit à vrai (@code{#t} pour @emph{True} en +où un booléen correspond soit à vrai (@code{#t} pour @emph{True} en anglais) ou faux (@code{#f} pour @emph{False} en anglais), un entier est un nombre entier positif, un réel est un nombre décimal positif ou négatif, et texte correspond à une suite de caractères encadrée par des apostrophes doubles. Attention à la présence des signes dièse (@code{#}) dans deux cas particuliers@tie{}: ils sont partie intégrante -des valeurs boléennes et précèdent les @code{t} ou @code{f}, mais +des valeurs booléennes et précèdent les @code{t} ou @code{f}, mais doivent aussi précéder @emph{valeur} dans le libellé de la commande -@code{\set}. Il faudra donc, dans le cas d'une valeur boléenne, ne pas +@code{\set}. Il faudra donc, dans le cas d'une valeur booléenne, ne pas oublier de saisir deux signes dièse -- par exemple @code{##t}. @cindex propriétés et contextes @@ -1802,7 +1809,7 @@ sera pas interprétée. Il ne s'agit pas d'une erreur, aucun message d'erreur ne sera ni émis ni enregistré. De la même manière, une faute d'orthographe dans le nom de la propriété -ne génèrera aucun message d'erreur et l'action escomptée ne se produira +ne générera aucun message d'erreur et l'action escomptée ne se produira pas. Vous pourriez déterminer par la commande @code{\set} n'importe quelle @qq{propriété}, même fictive, à partir de n'importe quel nom et dans n'importe lequel des contextes disponibles. Mais tant que ce nom @@ -1832,11 +1839,11 @@ portée@tie{}: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1847,11 +1854,11 @@ et pour toutes les portées : @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1927,11 +1934,11 @@ ce qui donnerait : << \new Staff \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } \new Staff \with { extraNatural = ##f } { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -1973,7 +1980,7 @@ avec la commande @code{\with}, puisqu'on se place dans un bloc \score { \new Staff { \relative c'' { - cis4 e d ces + cisis4 e d cis } } \layout { @@ -1993,12 +2000,12 @@ toutes les portées de la partition, nous utiliserons alors@tie{}: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -2050,7 +2057,7 @@ pratique est dans quelques cas fort utile. @translationof Changing a single context Nous utilisons, pour supprimer un graveur d'un contexte, la commande -@code{\with} dès la création dudit contexte, comme nous l'avons vu dans +@code{\with} dès la création du-dit contexte, comme nous l'avons vu dans la section précédente. Illustrons notre propos en reprenant un exemple du chapitre précédent, @@ -2531,7 +2538,7 @@ de chacune d'elles. Toutes les voix devraient être @code{\voiceOne}, ce qui est la position par défaut@tie{}; il nous faudra donc éliminer toutes les commandes @code{\voiceXXX}. Les ténors auront besoin d'une clé spécifique. Enfin, nous n'avons pas encore abordé la façon dont les -paroles sont présentées dans le modèle@tie{}; nous procèderons donc +paroles sont présentées dans le modèle@tie{}; nous procéderons donc comme nous en avons l'habitude. Il faudra aussi ajouter un nom à chaque portée. @@ -2756,7 +2763,7 @@ lower = \relative c, { @cindex squelettes, création Après avoir acquis une certaine dextérité dans l'écriture de code -LilyPond, vous devez vous sentir suffisament prêt à vous lancer dans +LilyPond, vous devez vous sentir suffisamment prêt à vous lancer dans la création d'une partition à partir de zéro, autrement dit en ne partant pas d'un exemple. Vous pourrez ainsi vous construire vos propres patrons selon le type de musique que vous affectionnez plus @@ -2909,7 +2916,7 @@ place la métrique et l'armure de chaque portée grâce à notre variable @cindex espacement des portées @cindex portées, espacement -Cette partition pour orgue est préesque parfaite. Rest juste ce petit +Cette partition pour orgue est presque parfaite. Reste juste ce petit défaut qui ne se remarque pas lorsque l'on considère un seul système@tie{}: la distance qui sépare la portée de pédalier de celle de la main gauche devrait être plus ou moins égale à celle qui sépare les @@ -2918,7 +2925,7 @@ deux mains. En fait, la distance entre les deux portées d'un adopter le même comportement. @cindex sous-propriétés -@cindex propriétéset sous-propriétés +@cindex propriétés et sous-propriétés @cindex graphical objects @cindex objets graphiques @cindex grobs @@ -3148,7 +3155,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { diff --git a/Documentation/fr/learning/preface.itely b/Documentation/fr/learning/preface.itely index 59f4fcd8b7..7b216dbea0 100644 --- a/Documentation/fr/learning/preface.itely +++ b/Documentation/fr/learning/preface.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of lilypond.tely @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7 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" +@c \version "2.16.0" @c Translators: Valentin Villenave @c Translation checkers: Ludovic Sardain, Damien Heurtebise diff --git a/Documentation/fr/learning/templates.itely b/Documentation/fr/learning/templates.itely index a84d680283..7c9bcf7775 100644 --- a/Documentation/fr/learning/templates.itely +++ b/Documentation/fr/learning/templates.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 0f93dd92ffa0319328e58148458d22c5448b3d58 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @@ -37,22 +37,22 @@ de lancer LilyPond, et d'aprécier le résultat. @appendixsubsec Notes seules -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec Notes et paroles -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec Notes et accords -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec Notes, paroles et accords -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -62,37 +62,32 @@ de lancer LilyPond, et d'aprécier le résultat. @appendixsubsec Piano seul -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec Chant et accompagnement -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec Piano et paroles entre les portées -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-centered-lyrics.ly} -@appendixsubsec Piano et nuances entre les portées - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -{piano-template-with-centered-dynamics.ly} - @node Quatuor à cordes @appendixsec Quatuor à cordes @translationof String quartet -@appendixsubsec Quatuor à cordes +@appendixsubsec Quatuor à cordes simple -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec Parties pour quatuor à cordes -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -102,37 +97,37 @@ de lancer LilyPond, et d'aprécier le résultat. @appendixsubsec Partition pour chœur à quatre voix mixtes -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec Partition pour chœur SATB avec réduction pour piano -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} @appendixsubsec Partition pour chœur SATB avec alignement des contextes -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly} -@appendixsubsec Partition pour chœur SATB, sur quatre portées +@appendixsubsec Chœur à quatre voix mixtes sur quatre portées -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {satb-choir-template---four-staves.ly} @appendixsubsec Couplet pour solo et refrain à deux voix -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} @appendixsubsec Hymnes et cantiques -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {hymn-template.ly} @appendixsubsec Psalmodie -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {anglican-psalm-template.ly} @@ -142,7 +137,7 @@ de lancer LilyPond, et d'aprécier le résultat. @appendixsubsec Orchestre, chœur et piano -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -153,12 +148,13 @@ de lancer LilyPond, et d'aprécier le résultat. @appendixsubsec Transcription de musique mensurale -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Transcription du grégorien -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @@ -169,6 +165,7 @@ de lancer LilyPond, et d'aprécier le résultat. @appendixsubsec Symboles de jazz @translationof Jazz combo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {jazz-combo-template.ly} diff --git a/Documentation/fr/learning/tutorial.itely b/Documentation/fr/learning/tutorial.itely index 84064ef3c6..b401e9c3fd 100644 --- a/Documentation/fr/learning/tutorial.itely +++ b/Documentation/fr/learning/tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Nicolas Grandclaude, Ludovic Sardain, Gauvain Pocentek @c Translation checkers: Jean-Charles Malahieude, Valentin Villenave, John Mandereau @@ -694,7 +694,7 @@ sont répertoriés au chapitre @node Bien lire le manuel @section Bien lire le manuel -@translationof How to read the manual +@translationof How to read the manuals Nous allons voir ici comment consulter la documentation le plus efficacement possible. Nous en profiterons pour vous présenter quelques diff --git a/Documentation/fr/learning/tweaks.itely b/Documentation/fr/learning/tweaks.itely index 888758007e..016b5c431a 100644 --- a/Documentation/fr/learning/tweaks.itely +++ b/Documentation/fr/learning/tweaks.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 2a87f1e1f98b76751482cae4474d41aa5e38e37b 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise @c Translation checkers: Jean-Charles Malahieude, John Mandereau @@ -23,13 +23,14 @@ théoriquement de modifier chaque élément de votre partition. @menu * Retouches élémentaires:: -* Le manuel des références internes:: +* Le manuel de référence des propriétés internes:: * Apparence des objets:: * Positionnement des objets:: * Collisions d'objets:: * Autres retouches:: @end menu + @node Retouches élémentaires @section Retouches élémentaires @translationof Tweaking basics @@ -41,6 +42,7 @@ théoriquement de modifier chaque élément de votre partition. * Méthodes de retouche:: @end menu + @node Introduction aux retouches @subsection Introduction aux retouches @translationof Introduction to tweaks @@ -49,14 +51,14 @@ LilyPond regroupe sous le terme de @qq{retouches} (@emph{tweaks} en anglais) les différents moyens dont dispose l'utilisateur pour intervenir sur l'interprétation du fichier d'entrée et pour modifier l'apparence du fichier de sortie. Certaines retouches sont très -simples à mettre en œuvre@tie{}; d'autres sont plus complexes. Mais +simples à mettre en œuvre ; d'autres sont plus complexes. Mais à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière de musique imprimée. Dans ce chapitre, nous traitons des concepts de base nécessaires pour comprendre l'art de la retouche. Puis nous présentons de nombreuses commandes déjà prêtes, qu'il suffit de recopier pour -obtenir un résultat identique dans vos partitions@tie{}; nous en +obtenir un résultat identique dans vos partitions ; nous en profitons pour expliquer comment ces commandes ont été construites, si bien que vous pouvez apprendre par la même occasion à développer vos propres retouches. @@ -66,6 +68,7 @@ section @ref{Contextes et graveurs}, dans la mesure où les contextes, graveurs et autres propriétés qui y sont décrits, sont indispensables pour comprendre et construire les retouches. + @node Objets et interfaces @subsection Objets et interfaces @translationof Objects and interfaces @@ -95,7 +98,7 @@ nom et son armure, ainsi que le détail des graveurs qui ont été désignés pour fonctionner dans ce contexte de portée. Certains objets peuvent contenir les propriétés de tous les autres contextes, comme les objets @code{Voice}, les objets @code{Score}, -les objets @code{Lyrics}@tie{}; d'autres se rapportent à tous les +les objets @code{Lyrics} ; d'autres se rapportent à tous les éléments de notation, comme les barres de mesure, les liaisons, les nuances, etc. Chaque objet dispose de son propre échantillon de valeurs pour le réglage des propriétés. @@ -103,12 +106,12 @@ pour le réglage des propriétés. Certains types d'objet portent des noms spécifiques. Les objets qui se rapportent à des éléments de notation sur le fichier de sortie, comme les notes, les hampes, les liaisons de phrasé ou de prolongation, les -doigtés, les clefs, etc. sont appelés @qq{Objets de rendu}@tie{}; ils +doigtés, les clefs, etc. sont appelés @qq{Objets de rendu} ; ils sont aussi connus sous le nom d'@qq{Objets graphiques} (en -anglais@tie{}: @emph{Graphical objects} ou @emph{Grobs} pour faire -court). Ce sont bien des objets au sens générique ci-dessus, et, en +anglais : @emph{Graphical objects} ou @emph{Grobs} pour faire +court). Ce sont bien des objets au sens générique ci-dessus et, en tant que tels, ils reçoivent des propriétés qui leur sont associées, -comme leur position, leur taille, leur couleur, etc. +comme leur position, leur taille, leur couleur etc. Certains objets de rendu, comme les liaisons de phrasé, les soufflets de crescendo, les marques d'octaviation et beaucoup d'autres @@ -121,7 +124,7 @@ anglais). Il reste à expliquer ce que sont les @qq{interfaces}. De nombreux objets, qui peuvent être très différents les uns des autres, ont pour point commun de devoir être compilés simultanément. Par exemple, tous -les @emph{grobs} ont une couleur, une taille, une position, etc., et +les @emph{grobs} ont une couleur, une taille, une position etc., et toutes ces propriétés sont compilées simultanément durant l'interprétation du fichier d'entrée par LilyPond. Pour alléger ces opérations internes, ces actions et propriétés communes sont regroupées @@ -131,17 +134,18 @@ portant un nom qui se termine par @code{interface}. En tout, on en compte plus d'une centaine. Nous verrons plus loin en quoi c'est intéressant et utile pour l'utilisateur. -Ainsi s'achève le tour des principaux termes relatifs aux objets et +Ainsi s'achève le tour des principaux termes relatifs aux objets que nous serons amenés à utiliser dans ce chapitre. + @node Conventions de nommage des objets et propriétés @subsection Conventions de nommage des objets et propriétés @translationof Naming conventions of objects and properties @cindex conventions de nommage des objets @cindex conventions de nommage des propriétés -@cindex objets, conventions de nommage des -@cindex propriétés, conventions de nommage des +@cindex objets, conventions de nommage +@cindex propriétés, conventions de nommage Nous avons eu un aperçu, dans @ref{Contextes et graveurs}, de la façon de nommer les objets. Voici maintenant une liste de @@ -154,26 +158,26 @@ Les autres caractères sont à prendre tels qu'ils se présentent. @multitable @columnfractions .33 .33 .33 @headitem Type d'objet/propriété - @tab Convention de nommage - @tab Exemples + @tab Convention de nommage + @tab Exemples @item Contextes - @tab Aaaa ou AaaaAaaaAaaa - @tab Staff, GrandStaff + @tab Aaaa ou AaaaAaaaAaaa + @tab Staff, GrandStaff @item Objets de rendu - @tab Aaaa ou AaaaAaaaAaaa - @tab Slur, NoteHead + @tab Aaaa ou AaaaAaaaAaaa + @tab Slur, NoteHead @item Graveurs - @tab Aaaa_aaa_engraver - @tab Clef_engraver, Note_heads_engraver + @tab Aaaa_aaa_engraver + @tab Clef_engraver, Note_heads_engraver @item Interfaces - @tab aaa-aaa-interface - @tab grob-interface, break-aligned-interface + @tab aaa-aaa-interface + @tab grob-interface, break-aligned-interface @item Propriétés de contexte - @tab aaa ou aaaAaaaAaaa - @tab alignAboveContext, skipBars + @tab aaa ou aaaAaaaAaaa + @tab alignAboveContext, skipBars @item Propriétés d'objet de rendu - @tab aaa ou aaa-aaa-aaa - @tab direction, beam-thickness + @tab aaa ou aaa-aaa-aaa + @tab direction, beam-thickness @end multitable Comme nous le verrons bientôt, les propriétés des différents @@ -181,6 +185,7 @@ types d'objet sont modifiées par des commandes différentes, si bien qu'il est bon de savoir reconnaître le type d'un objet en fonction du nom de ses propriétés. + @node Méthodes de retouche @subsection Méthodes de retouche @translationof Tweaking methods @@ -211,7 +216,7 @@ précision quelle est la propriété à modifier, pour quel objet et dans quel contexte, et quelle doit être sa nouvelle valeur. Voyons de quoi il retourne. -La syntaxe générale de cette commande est@tie{}: +La syntaxe générale de cette commande est : @example \override @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-rendu} = #@var{valeur} @@ -230,9 +235,10 @@ très souvent omis. Nous verrons plus tard dans quelles circonstances il doit impérativement être indiqué. Les sections ci-dessous traitent largement des propriétés et de leurs -valeurs mais, pour illustrer la mise en forme et l'utilisation de ces -commandes, nous nous limiterons à n'employer que quelques propriétés et -valeurs simples, facilement compréhensibles. +valeurs -- voir @ref{Types de propriétés} -- mais, pour illustrer la +mise en forme et l'utilisation de ces commandes, nous nous limiterons à +n'employer que quelques propriétés et valeurs simples, facilement +compréhensibles. Nous ne parlerons dans l'immédiat ni du @code{#'}, qui précède toujours la propriété, ni du @code{#}, qui précède toujours la @@ -241,7 +247,7 @@ présents sous cette forme. Voici la commande la plus fréquente pour faire des retouches, et pratiquement tout le reste de ce chapitre aura pour but montrer, à travers des exemples, comment l'utiliser. L'exemple ci-dessous change la couleur des têtes de -notes@tie{}: +notes : @cindex couleur,exemple d'utilisation de la propriété @cindex NoteHead, exemple de dérogation @@ -265,7 +271,7 @@ Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle valeur jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre la commande @code{\revert}. La commande @code{\revert} obéit à la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur -d'origine. Attention@tie{}: dans le cas où plusieurs @code{\override} +d'origine. Attention : dans le cas où plusieurs @code{\override} ont été employés, il ne s'agit pas de la valeur précédente mais bien de la valeur par défaut. @@ -276,7 +282,7 @@ la valeur par défaut. Tout comme pour la commande @code{\override}, la mention du @var{Contexte} est souvent facultative. Elle sera omise dans de nombreux exemples ci-dessous. Voici un exemple qui ramène la -couleur des deux dernières notes à leur valeur par défaut@tie{}: +couleur des deux dernières notes à leur valeur par défaut : @cindex couleur,exemple d'utilisation de la propriété @cindex NoteHead, exemple de dérogation @@ -300,18 +306,22 @@ Les commandes @code{\override} et @code{\set} peuvent supporter toutes les deux le préfixe @code{\once}. Celui-ci a pour fonction de n'appliquer la commande @code{\override} ou @code{\set} qu'à l'instant musical en cours, avant que la propriété ne reprenne -sa valeur par défaut. Toujours à partir du même exemple, il est -possible de ne changer la couleur que d'une seule note@tie{}: +sa valeur antérieure -- qui n'est pas forcément la valeur par défaut +lorsqu'un autre @code{\override} est toujours effectif. Toujours à +partir du même exemple, il est possible de ne changer la couleur que +d'une seule note : @cindex couleur,exemple d'utilisation de la propriété @cindex NoteHead, exemple de dérogation @lilypond[quote,fragment,ragged-right,verbatim,relative=1] c4 d -\once \override NoteHead #'color = #red +\override NoteHead #'color = #red e4 f | \once \override NoteHead #'color = #green -g4 a b c | +g4 a +\revert NoteHead #'color +b c | @end lilypond @strong{La commande \overrideProperty} @@ -323,8 +333,8 @@ g4 a b c | Il existe une autre forme de commande @code{\override}, @code{\overrideProperty}, qui est parfois utile. Nous la mentionnons -ici par souci d'exhaustivité@tie{}; pour le détail, voir -@rextendnamed{Difficult tweaks,Retouches complexes}. +ici par souci d'exhaustivité ; pour le détail, voir +@rextend{Retouches complexes}. @c Maybe explain in a later iteration -td @@ -340,11 +350,11 @@ La dernière commande disponible pour les retouches est surviennent simultanément dans la musique, comme par exemple les notes d'un accord. La commande @code{\override} modifierait toutes les notes de l'accord, tandis que @code{\tweak} permet de ne modifier -que l'élément suivant dans la chaîne de saisie. +que l'élément immédiatement suivant dans la chaîne de saisie. Voici un exemple. Supposons que nous voulions changer la taille de la tête de note du milieu (le mi) dans un accord de do majeur. Voyons -d'abord ce que donnerait @code{\once \override}@tie{}: +d'abord ce que donnerait @code{\once \override} : @cindex font-size, exemple d'utilisation de la propriété @cindex NoteHead, exemple de dérogation @@ -356,27 +366,21 @@ d'abord ce que donnerait @code{\once \override}@tie{}: 4 @end lilypond -Nous voyons que @code{\override} modifie @emph{toutes} les têtes +Nous voyons que @code{\override} modifie @strong{toutes} les têtes de notes de l'accord, car toutes les notes de l'accord surviennent au -même @emph{instant musical} et que la fonction de @code{\once} +même @strong{instant musical} et que la fonction de @code{\once} est de faire porter la modification sur tous les objets du type spécifié qui surviennent au même instant musical, comme le fait la commande @code{\override} elle-même. La commande @code{\tweak} opère différemment. Elle agit -sur l'élément immédiatement suivant dans la chaîne de saisie. Elle ne -fonctionne toutefois que sur des objets créés directement à partir de -la chaîne de saisie, c'est-à-dire essentiellement des têtes de notes et -des articulations@tie{}; des objets comme les hampes ou les -altérations accidentelles sont créés ultérieurement et ne peuvent -être retouchés de cette manière. En outre, quand la retouche porte -sur une tête de note, celle-ci @emph{doit} appartenir à un accord, -c'est-à-dire être comprise à l'intérieur de chevrons gauche/droite. -Pour retoucher une note isolée, il faut donc placer la commande -@code{\tweak} avec la note à l'intérieur des chevrons gauche/droite. +sur l'élément immédiatement suivant dans la chaîne de saisie. Dans sa +forme la plus simple, elle ne fonctionne que sur les objets créés +directement à partir de l'élément suivant dans la chaîne de saisie, +c'est-à-dire essentiellement des têtes de notes et des articulations. Pour reprendre notre exemple, la taille de la note du milieu d'un -accord peut être modifiée de cette manière@tie{}: +accord peut être modifiée de cette manière : @cindex font-size, exemple d'utilisation de la propriété @cindex @code{\tweak}, exemple @@ -388,17 +392,18 @@ accord peut être modifiée de cette manière@tie{}: Vous noterez que la syntaxe de @code{\tweak} est différente de celle de la commande @code{\override}. Ni le contexte, -ni l'objet n'ont besoin d'être spécifiés@tie{}; au contraire, cela +ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela produirait une erreur si on le faisait. Tous deux sont sous-entendus -par l'élément suivant dans la chaîne de saisie. La syntaxe générale -de la commande @code{\tweak} est donc, tout simplement@tie{}: +par l'élément suivant dans la chaîne de saisie. Il n'est pareillement +pas nécessaire d'insérer un signe égal. La syntaxe générale +de la commande @code{\tweak} est donc, tout simplement : @example -\tweak #'@var{propriété-de-rendu} = #@var{valeur} +\tweak #'@var{propriété-de-rendu} #@var{valeur} @end example La commande @code{\tweak} est aussi utilisée quand on veut, dans -une série d'articulations, n'en modifier qu'une seule. Ainsi@tie{}: +une série d'articulations, n'en modifier qu'une seule. Ainsi : @cindex couleur, exemple d'utilisation de la propriété @cindex @code{\tweak}, exemple @@ -410,8 +415,30 @@ a4^"Black" @end lilypond @noindent -Attention@tie{}: la commande @code{\tweak} doit être précédée d'une -marque d'articulation, comme si elle-même était une articulation. +Attention : la commande @code{\tweak} doit être précédée d'une +marque d'articulation, comme si elle-même était une articulation. Dans +la cas de multiples positionnements forcés (@code{^} ou @code{_}), celui +le plus à gauche aura préséance puisqu'il sera appliqué en dernier. + +@cindex @code{\tweak} et altération +@cindex @code{\tweak} et objet de rendu spécifique + +Les objets tels que hampes et altérations seront créés postérieurement à +l'événement qui survient. L'utilisation de la commande @code{\tweak} +sur de tels objets indirectement créés peut se faire en nommant +explicitement l'objet de rendu, si tant est que LilyPond puisse remonter +jusqu'à l'événement originel : + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +<\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> +@end lilypond + +Cette forme développée de la commande @code{\tweak} correspond à : +@example +\tweak @var{objet-de-rendu} #'@var{propriété-de-rendu} @var{valeur} +@end example @cindex nolets imbriqués @cindex triolets imbriqués @@ -425,7 +452,7 @@ Quand plusieurs nolets sont imbriqués et commencent au même instant musical, c'est encore la commande @code{\tweak} qui est utilisée pour changer l'apparence de l'un d'entre eux. Dans l'exemple suivant, le long crochet de nolet et le premier des trois crochets courts commencent -au même instant musical@tie{}; une commande @code{\override} +au même instant musical ; une commande @code{\override} s'appliquerait donc à la fois aux deux. En revanche, @code{\tweak} permet de les dissocier. La première commande @code{\tweak} indique que le long crochet doit être placé au-dessus des notes, et la seconde @@ -448,7 +475,7 @@ premier crochet de triolet court. Si les nolets imbriqués ne commencent pas au même moment, leur apparence peut alors être modifiée de la façon habituelle, -avec la commande @code{\override}@tie{}: +avec la commande @code{\override} : @cindex texte, exemple d'utilisation de la propriété @cindex tuplet-number, exemple de fonction @@ -475,8 +502,8 @@ Manuel de notation : @ruser{La commande d'affinage (@emph{tweak})}. -@node Le manuel des références internes -@section Le manuel des références internes +@node Le manuel de référence des propriétés internes +@section Le manuel de référence des propriétés internes @translationof The Internals Reference manual @cindex Références internes @@ -487,6 +514,7 @@ Manuel de notation : * Types de propriétés:: @end menu + @node Propriétés des objets de rendu @subsection Propriétés des objets de rendu @translationof Properties of layout objects @@ -499,21 +527,21 @@ Manuel de notation : Imaginons que votre partition contienne une liaison trop fine à votre goût et que vous vouliez la rendre plus épaisse. Comment vous y -prendre@tie{}? Vous êtes convaincu, avec tout ce qui a été dit sur la +prendre ? Vous êtes convaincu, avec tout ce qui a été dit sur la souplesse de LilyPond, qu'une telle retouche est réalisable et vous vous dites qu'elle fera sans doute intervenir la commande -@code{\override}. Mais existe-t-il une propriété lourde qui s'applique -à une liaison et, dans l'affirmative, comment faire pour la -modifier@tie{}? C'est là qu'intervient la Référence des propriétés +@code{\override}. Mais existe-t-il une propriété épaisseur qui +s'applique à une liaison et, dans l'affirmative, comment faire pour la +modifier ? C'est là qu'intervient la Référence des propriétés internes. Elle contient toutes les informations dont vous avez besoin pour construire n'importe quelle commande @code{\override}. Avant de nous plonger dans la Référence des propriétés internes, un mot d'avertissement. Il s'agit d'un document de @strong{références}, de sorte qu'il ne contient pas ou peu -d'explications@tie{}: son but est de présenter les informations de +d'explications : son but est de présenter les informations de façon précise et concise. Cela peut paraître décourageant -à première vue. Pas d'inquiétude@tie{}! Les conseils et les +à première vue. Pas d'inquiétude ! Les conseils et les explications fournis ici vous permettent de retrouver par vous-même les informations dans la Référence des propriétés internes. Il suffit d'un peu de pratique. @@ -523,7 +551,7 @@ suffit d'un peu de pratique. @cindex Références internes, exemple d'utilisation @cindex @code{\addlyrics} -- exemple -Prenons un exemple concret tiré d'un morceau de musique connu@tie{}: +Prenons un exemple concret tiré d'un morceau de musique connu : @c Mozart, Die Zauberflöte Nr.7 Duett @@ -543,9 +571,9 @@ Prenons un exemple concret tiré d'un morceau de musique connu@tie{}: @end lilypond Admettons que nous voulions rendre les traits de liaison plus épais. -Est-ce possible@tie{}? Une liaison est assurément un objet de rendu, si +Est-ce possible ? Une liaison est assurément un objet de rendu, si bien que la question est @qq{Existe-t-il une propriété attachée aux -liaisons et qui en contrôle l'épaisseur@tie{}?} Pour y répondre, nous +liaisons et qui en contrôle l'épaisseur ?} Pour y répondre, nous consultons la Référence des propriétés internes (ou RPI pour faire court). @@ -573,7 +601,7 @@ plus simple est de consulter la RPI. La page de la RPI sur les liaisons commence par préciser que les objets Liaison sont créés par le graveur Slur_engraver. Vient ensuite la liste -des réglages standard. Attention@tie{}: ceux-ci @strong{ne suivent pas} +des réglages standard. Attention : ceux-ci @strong{ne suivent pas} l'ordre alphabétique. Il faut donc les parcourir en entier pour trouver la propriété susceptible de contrôler l'épaisseur des traits de liaison. @@ -600,7 +628,7 @@ Pour construire la commande @code{\override}, il suffit donc de remplacer les valeurs que nous avons trouvées en guise de noms, en laissant de côté le contexte. Commençons par une valeur très élevée dans un premier temps, pour nous assurer que la commande fonctionne. -Nous obtenons@tie{}: +Nous obtenons : @example \override Slur #'thickness = #5.0 @@ -609,10 +637,10 @@ Nous obtenons@tie{}: N'oublions pas le @code{#'} qui doit précéder le nom de la propriété et le @code{#} qui doit précéder la nouvelle valeur. -La dernière question est@tie{}: @qq{Où placer cette commande@tie{}?} +La dernière question est : @qq{Où placer cette commande ?} Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À l'intérieur de l'expression musicale, avant la première liaison et -proche d'elle.} Essayons@tie{}: +proche d'elle.} Essayons : @cindex Slur, exemple de dérogation @cindex thickness, exemple d'utilisation de la propriété @@ -644,18 +672,20 @@ l'immédiat, nous en savons assez pour construire nos propres commandes -- mais il faut encore s'exercer. Les exemples suivants sont là dans cette intention. + @subheading Détermination du contexte adéquat +@c VO Finding the context @cindex contexte, détermination du @cindex contexte, identification correcte du Tout d'abord, de quoi avions-nous besoin pour préciser le -contexte@tie{}? À quoi devait-il ressembler@tie{}? Gageons que les +contexte ? À quoi devait-il ressembler ? Gageons que les liaisons appartiennent au contexte Voix, dans la mesure où elles sont étroitement liées à une ligne mélodique, mais -comment en être sûr@tie{}? Pour répondre à cette question, -revenons en haut de la page de la RPI consacrée aux liaisons@tie{}; -il est écrit@tie{}: @qq{Les objets Liaison sont créés par le graveur +comment en être sûr ? Pour répondre à cette question, +revenons en haut de la page de la RPI consacrée aux liaisons ; +il est écrit : @qq{Les objets Liaison sont créés par le graveur Slur_engraver}. Ainsi les liaisons seront créées dans n'importe quel contexte où se trouve le @code{Slur_engraver}. Suivons le lien vers la page @code{Slur_engraver}. Tout en bas, on @@ -666,7 +696,9 @@ Et parce que @code{Voice} est un contexte de très bas niveau, qu'il est activé sans ambiguïté par le fait que l'on est en train de saisir des notes, on peut ici ne pas le mentionner. -@subheading Redéfinition pour une seule occurence + +@subheading Redéfinition pour une seule occurrence +@c VO Overriding once only @cindex dérogation pour une seule fois @cindex usage unique, dérogation à @@ -676,14 +708,13 @@ en train de saisir des notes, on peut ici ne pas le mentionner. Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient plus épaisses. Et si on veut épaissir uniquement la première -liaison@tie{}? On recourt alors à la commande @code{\once}. Placée +liaison ? On recourt alors à la commande @code{\once}. Placée juste avant la commande @code{\override}, elle lui indique de ne changer que la liaison commençant avec la note @strong{juste après}. Si la note juste après n'ouvre pas une liaison, la commande sera sans aucun effet -- elle ne reste pas en mémoire jusqu'à la prochaine liaison, elle est purement et simplement ignorée. Il faut donc que la commande introduite -par @code{\once} soit insérée comme suit@tie{}: - +par @code{\once} soit insérée comme suit : @cindex Slur, exemple de dérogation @cindex thickness, exemple d'utilisation de la propriété @@ -716,6 +747,7 @@ La commande @code{\once} peut aussi être utilisée devant la commande @subheading Rétablissement +@c VO Reverting @cindex revert @cindex rétablissement @@ -726,15 +758,14 @@ La commande @code{\once} peut aussi être utilisée devant la commande @funindex revert Et si l'on voulait que les deux premières liaisons soient plus -épaisses@tie{}? On pourrait bien sûr utiliser deux commandes, chacune +épaisses ? On pourrait bien sûr utiliser deux commandes, chacune précédée de @code{\once}, et placées juste avant la note par laquelle -débute la liaison@tie{}: +débute la liaison : -@cindex Slur, exemple de dérogation +@cindex liaison, exemple de dérogation @cindex thickness, exemple d'utilisation de la propriété -@cindex Liaison, exemple de dérogation -@cindex Épaisseur, exemple d'utilisation de la propriété +@cindex épaisseur, exemple d'utilisation @lilypond[quote,verbatim,relative=2] { @@ -759,12 +790,12 @@ débute la liaison@tie{}: @noindent mais on peut aussi, au lieu de la commande @code{\once}, utiliser après la seconde liaison la commande @code{\revert}, qui ramène la propriété -@code{thickness} à sa valeur par défaut@tie{}: +@code{thickness} à sa valeur par défaut : @cindex Slur, exemple de dérogation @cindex thickness, exemple d'utilisation de la propriété -@cindex Liaison, exemple de dérogation -@cindex Épaisseur, exemple d'utilisation de la propriété +@cindex liaison, exemple de dérogation +@cindex épaisseur, exemple d'utilisation @lilypond[quote,verbatim,relative=2] { @@ -794,12 +825,13 @@ défaut. Ici s'achève notre introduction à la RPI et aux retouches simples. Vous trouverez d'autres exemples dans les prochaines -sections de ce chapitre@tie{}; ils vous permettront, d'une part, +sections de ce chapitre ; ils vous permettront, d'une part, d'apprendre à connaître un peu mieux la RPI et, d'autre part, de vous entraîner un peu plus à y chercher les informations. Ces exemples seront progressivement accompagnés d'explications et introduiront des termes nouveaux. + @node Propriétés listées par interface @subsection Propriétés listées par interface @translationof Properties found in interfaces @@ -810,7 +842,7 @@ introduiront des termes nouveaux. Supposons maintenant que nous voulions imprimer des paroles en italique. Quelle formulation de la commande @code{\override} allons-nous -utiliser@tie{}? Nous consultons en premier lieu, comme précédemment, la +utiliser ? Nous consultons en premier lieu, comme précédemment, la page de la RPI qui contient la liste @qq{Tous les objets de rendu}, et recherchons un objet qui contrôle les paroles. Nous trouvons @code{LyricText}, qui semble approprié. Nous cliquons dessus et nous @@ -840,10 +872,10 @@ contrôlent les polices de caractères, et notamment Vous remarquerez que @code{font-series} et @code{font-size} figurent aussi dans la liste. La question qui ne manque pas de se poser -est@tie{}: @qq{Comment se fait-il que les propriétés @code{font-series} +est : @qq{Comment se fait-il que les propriétés @code{font-series} et @code{font-size} se retrouvent à la fois dans @code{LyricText} et dans l'interface @code{font-interface} alors que ce n'est pas le cas -pour @code{font-shape} ?} La réponse est que lorsqu'un objet +pour @code{font-shape} ?} La réponse est que lorsqu'un objet @code{LyricText} est créé, les valeurs globales par défaut de @code{font-series} et @code{font-size} sont modifiées, mais pas celles de @code{font-shape}. Les possibilités de modification dans @@ -867,12 +899,12 @@ interprétés comme tels par LilyPond. Certains symboles peuvent être des noms de propriété, comme @code{thickness} ou @code{font-shape}, d'autres sont des valeurs à attribuer aux propriétés, comme @code{italic}. À ne pas confondre avec les chaînes de caractères -libres, qui se présentent comme @code{"un texte libre"}@tie{}; pour plus +libres, qui se présentent comme @code{"un texte libre"} ; pour plus de détails sur les symboles et les chaînes de caractères, voir le -@rextendnamed{Scheme tutorial,Tutoriel Scheme}. +@rextend{Tutoriel Scheme}. Ainsi, la commande @code{\override} pour mettre les paroles en italique -est@tie{}: +est : @example \override LyricText #'font-shape = #'italic @@ -880,7 +912,7 @@ est@tie{}: @noindent et doit être placée juste devant et tout près des paroles à modifier, -comme ceci@tie{}: +comme ceci : @cindex font-shape, exemple d'utilisation de la propriété @cindex italic, exemple @@ -906,7 +938,9 @@ comme ceci@tie{}: @noindent et voilà les paroles en italiques. + @subheading Spécification du contexte en mode lyrique +@c VO Specifying the context in lyric mode @cindex contexte, spécification en mode lyrique @cindex mode lyrique, spécification de contexte en @@ -918,10 +952,10 @@ obligatoirement par une espace, un saut de ligne ou un nombre. Tout autre caractère compte comme un élément de la syllabe. C'est pourquoi il faut une espace ou un saut de ligne avant le @code{@}} final, pour éviter qu'il ne soit assimilé à la dernière syllabe. De même, il faut -insérer des espaces avant et après le point, @qq{.}, qui sépare le nom -de contexte du nom de l'objet, faute de quoi les deux noms seront joints -et l'interpréteur ne pourra pas les reconnaître. La formulation -correcte est donc@tie{}: +insérer des espaces de part et d'autre du point, @qq{.}, qui sépare le +nom de contexte du nom de l'objet, faute de quoi les deux noms seront +joints et l'interpréteur ne pourra pas les reconnaître. La formulation +correcte est donc : @example \override Lyrics . LyricText #'font-shape = #'italic @@ -935,17 +969,16 @@ autour du point qui sépare le nom de contexte du nom d'objet.} @seealso Manuel d'extension : -@rextendnamed{Scheme tutorial,Tutoriel Scheme}. +@rextend{Tutoriel Scheme}. @node Types de propriétés @subsection Types de propriétés @translationof Types of properties - @cindex propriété, types de -Nous avons vu jusqu'à maintenant deux types de propriétés@tie{}: +Nous avons vu jusqu'à maintenant deux types de propriétés : @code{nombre} et @code{symbole}. Pour pouvoir fonctionner, la valeur associée à une propriété doit correspondre au type attendu et suivre les règles liées à ce type. Le type de propriété est toujours donné entre @@ -963,7 +996,7 @@ la commande @code{\override}. @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais), sous la forme @code{#t} ou @code{#f} @tab @code{#t}, @code{#f} -@item Dimension (en lignes de portée) +@item Dimension (en espaces de portée) @tab Un nombre positif décimal (en unités de lignes de portée) @tab @code{2.5}, @code{0.34} @item Direction @@ -975,8 +1008,9 @@ la commande @code{\override}. @tab @code{3}, @code{1} @item Liste @tab Plusieurs valeurs séparées par une espace, encadrées par des -parenthèses et prédédées par une apostrophe - @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'(1.0 0.25 0.5)} +parenthèses et précédées par une apostrophe + @tab @code{'(left-edge staff-bar)}, @code{'(1)}, + @code{'(1.0 0.25 0.5)} @item Markup (ou étiquette) @tab Toute commande @code{\markup} valide @tab @code{\markup @{ \italic "cresc." @}} @@ -1003,10 +1037,9 @@ précédés par apostrophe-hash, @code{'#} @tab @code{'#(#t #t #f)} @end multitable - @seealso Manuel d'extension : -@rextendnamed{Scheme tutorial,Tutoriel Scheme}. +@rextend{Tutoriel Scheme}. @node Apparence des objets @@ -1014,7 +1047,7 @@ Manuel d'extension : @translationof Appearance of objects Il est temps de mettre en pratique les notions apprises précédemment -pour modifier l'allure de la partition@tie{}; les exemples qui suivent +pour modifier l'allure de la partition ; les exemples qui suivent montrent l'utilisation des différentes méthodes de retouche. @menu @@ -1033,7 +1066,7 @@ d'une partition, que les élèves doivent ensuite compléter. Imaginons, par exemple, un exercice dans lequel il faudrait rétablir les barres de mesure dans un morceau de musique. En temps normal, les barres de mesure s'insèrent automatiquement. Comment faire pour les effacer de la -partition@tie{}? +partition ? Avant de nous y attaquer, souvenons-nous que les propriétés d'objets sont parfois groupées dans ce qu'on appelle des @emph{interfaces} -- @@ -1044,7 +1077,7 @@ objet, elle s'appliquera à tous les autres. Certains objets tirent alors leurs propriétés de telle ou telle interface, d'autres objets de telle ou telle autre interface. La liste des interfaces qui contiennent les propriétés liées à un objet graphique (@emph{grob}) figure dans la -RPI, en bas de la page de description du @emph{grob}@tie{}; pour voir +RPI, en bas de la page de description du @emph{grob} ; pour voir ces propriétés, il faut aller voir ces interfaces. Nous avons vu, dans @ref{Propriétés des objets de rendu}, comment @@ -1053,22 +1086,24 @@ même manière et consultons la RPI pour connaître l'objet chargé d'imprimer les barres de mesure. En cliquant sur @emph{Backend} puis sur @emph{Tous les objets de rendu}, nous trouvons un objet appelé @code{BarLine}. Parmi ses propriétés, deux d'entre elles déterminent -son aspect visuel@tie{}: @code{break-visibility} et @code{stencil}. +son aspect visuel : @code{break-visibility} et @code{stencil}. L'objet @code{BarLine} est également lié à plusieurs interfaces, dont la @code{grob-interface} où figurent les propriétés @code{transparent} et @code{color}. Toutes peuvent modifier l'aspect visuel des barres de mesure -- et de beaucoup d'autres objets, bien sûr. Examinons chacune d'elles tour à tour. + @subheading stencil @cindex stencil, propriété +@c VO stencil Cette propriété contrôle l'apparence des barres de mesure en précisant le type de symbole (glyphe) à imprimer. Comme pour de nombreuses autres propriétés, on peut lui indiquer de ne rien imprimer en lui attribuant la valeur @code{#f}. Essayons en laissant de côté, une fois -encore, le contexte concerné (@code{Voice} en l'occurrence)@tie{}: +encore, le contexte concerné (@code{Voice} en l'occurrence) : @cindex BarLine, exemple de dérogation @cindex stencil, exemple d'utilisation de la propriété @@ -1083,10 +1118,10 @@ encore, le contexte concerné (@code{Voice} en l'occurrence)@tie{}: } @end lilypond -Les barres de mesure sont encore là@tie{}! Pourquoi@tie{}? Retournons +Les barres de mesure sont encore là ! Pourquoi ? Retournons à la RPI et regardons de nouveau la page qui traite des propriétés de -BarLine. En haut de la page, il est précisé que @qq{Les objets BarLine -sont créés par le graveur Bar_engraver}. Allons à la page de +@code{BarLine}. En haut de la page, il est précisé que @qq{Les objets +BarLine sont créés par le graveur Bar_engraver}. Allons à la page de @code{Bar_engraver}. Tout en bas se trouve la liste des contextes dans lesquels fonctionne ce graveur. Tous sont du type @code{Staff}, de sorte que, si la commande @code{\override} n'a pas fonctionné comme @@ -1094,7 +1129,7 @@ prévu, c'est parce que @code{Barline} n'appartient pas au contexte par défaut, @code{Voice}. Si le contexte spécifié est erroné, la commande ne fonctionne pas. Cela n'entraîne pas de message d'erreur, et rien n'apparaît dans le fichier log. Essayons de corriger en mentionnant le -bon contexte@tie{}: +bon contexte : @cindex BarLine, exemple de dérogation @cindex stencil, exemple d'utilisation de la propriété @@ -1112,12 +1147,12 @@ bon contexte@tie{}: Cette fois, les barres de mesure ont disparu. Vous remarquerez que l'affectation de la valeur @code{#f} à la propriété -@code{stencil} déclechera une erreur dès lors que l'objet en question se +@code{stencil} déclenchera une erreur dès lors que l'objet en question se doit d'avoir des dimensions pour les nécessités du traitement. Ce sera le cas, par exemple, si vous effacez le @code{stencil} d'un objet -@code{NoteHead}. Il vaut mieux, en pareil caas, utiliser la fonction +@code{NoteHead}. Il vaut mieux, en pareil cas, utiliser la fonction @code{point-stencil} qui, quant à elle, attribue à l'objet une taille à -zero@tie{}: +zero : @lilypond[quote,verbatim,relative=2] { @@ -1127,17 +1162,19 @@ zero@tie{}: } @end lilypond + @subheading visibilité des barres (break-visibility) +@c VO break-visibility @cindex break-visibility, propriété La RPI mentionne, à la page sur @code{BarLine}, que la propriété @code{break-visibility} attend comme argument un vecteur de trois -boléens. Ceux-ci indiquent respectivement si les barres de mesure +booléens. Ceux-ci indiquent respectivement si les barres de mesure doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la ligne et au début de la ligne. Dans notre cas, nous voulons que toutes les barres soient supprimées, si bien que la valeur dont nous avons -besoin est @code{'#(#f@tie{}#f@tie{}#f)}. Essayons, sans oublier +besoin est @code{'#(#f #f #f)}. Essayons, sans oublier d'ajouter le contexte @code{Staff}. Vous remarquerez que, en plus de cette valeur, nous ajoutons @code{#'#} devant la parenthèse ouvrante. Le @code{'#} est nécessaire car il fait partie intégrante de la valeur @@ -1160,13 +1197,15 @@ la commande @code{\override}, pour introduire la valeur elle-même. Comme on peut le constater, cette solution-là aussi supprime les barres de mesure. + @subheading transparence +@c VO transparent @cindex transparent, propriété @cindex transparence La RPI mentionne, à la page sur @code{grob-interface}, que la propriété -@code{transparent} attend comme argument un boléen. Il faudrait donc +@code{transparent} attend comme argument un booléen. Il faudrait donc mettre @code{#t} pour rendre l'objet transparent. Dans cet exemple, essayons de rendre transparente la métrique (@emph{time signature} en anglais) plutôt que les barres de mesure. Pour cela, il nous faut @@ -1176,7 +1215,7 @@ cherchons les propriétés de l'objet @code{TimeSignature}. Celui-ci est géré par le graveur @code{Time_signature_engraver} qui, comme vous pouvez le constater, appartient au contexte @code{Staff} et peut se rattacher à la @code{grob-interface}. Dans ces conditions, la commande -pour rendre la métrique transparente est@tie{}: +pour rendre la métrique transparente est : @cindex TimeSignature, exemple de dérogation @cindex transparent, exemple d'utilisation de la propriété @@ -1196,7 +1235,7 @@ La métrique a bien disparu mais la commande a laissé un blanc en lieu et place du chiffrage. Ce peut être souhaitable dans le cadre d'un exercice, afin que les élèves aient la place pour compléter, mais dans d'autres circonstances, ce peut être gênant. Pour y remédier, -attribuons plutôt au stencil des métriques la valeur @code{#f}@tie{}: +attribuons plutôt au stencil des métriques la valeur @code{#f} : @cindex TimeSignature, exemple de dérogation @cindex stencil, exemple d'utilisation de la propriété @@ -1212,11 +1251,13 @@ attribuons plutôt au stencil des métriques la valeur @code{#f}@tie{}: @end lilypond @noindent -La différence est flagrante@tie{}: le fait d'attribuer au stencil la +La différence est flagrante : le fait d'attribuer au stencil la valeur @code{#f} supprime totalement l'objet, tandis que le fait de le rendre @code{transparent} le laisse en place, mais de façon invisible. + @subheading couleur +@c VO color @cindex color, propriété @@ -1232,11 +1273,11 @@ couleurs. La @code{grob-interface} indique que la valeur de la propriété @code{color} est une liste, sans plus d'explication. En fait, cette -liste est une liste de valeurs en unités internes@tie{}; pour éviter +liste est une liste de valeurs en unités internes ; pour éviter d'avoir à chercher ce qu'il faut y mettre, il existe différents moyens d'indiquer la couleur. Le premier moyen consiste à utiliser l'une des couleurs @emph{normales} de la première @ruser{Liste des couleurs}. -Pour mettre les barres de mesure en blanc, on écrit@tie{}: +Pour mettre les barres de mesure en blanc, on écrit : @cindex BarLine, exemple de dérogation @cindex color, exemple d'utilisation de la propriété @@ -1253,7 +1294,7 @@ Pour mettre les barres de mesure en blanc, on écrit@tie{}: @noindent et nous constatons que les barres de mesure sont une fois de plus -invisibles. Attention@tie{}: aucune apostrophe ne précède @code{white} +invisibles. Attention : aucune apostrophe ne précède @code{white} -- il ne s'agit pas d'un symbole mais d'une @strong{fonction}. Quand on l'invoque, elle fournit une liste de valeurs internes requises pour changer la couleur en blanc. Les autres couleurs aussi, dans la @@ -1270,7 +1311,7 @@ Le deuxième moyen de changer la couleur consiste à utiliser la deuxième @ruser{Liste des couleurs}, dite noms de couleurs X11. Ceux-ci doivent obligatoirement être précédés d'une autre fonction, qui convertit les noms de couleurs X11 en une liste de valeurs internes, @code{x11-color}, -comme ceci@tie{}: +comme ceci : @cindex BarLine, exemple de dérogation @cindex color, exemple d'utilisation de la propriété @@ -1287,7 +1328,7 @@ comme ceci@tie{}: @noindent Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un -symbole comme argument@tie{}; il faut donc placer une apostrophe devant +symbole comme argument ; il faut donc placer une apostrophe devant le symbole et insérer les deux à l'intérieur de parenthèses. @cindex rgb, couleur @@ -1300,8 +1341,8 @@ en couleurs internes -- la fonction @code{rgb-color}. Elle comporte trois arguments, donnant respectivement l'intensité du rouge, du vert et du bleu. Ces arguments prennent des valeurs comprises entre 0 et 1. Ainsi, pour choisir la couleur rouge, la valeur serait -@code{(rgb-color 1 0 0)}@tie{}; pour le blanc, ce serait -@code{(rgb-color 1 1 1)}@tie{}: +@code{(rgb-color 1 0 0)} ; pour le blanc, ce serait +@code{(rgb-color 1 1 1)} : @cindex BarLine, exemple de dérogation @cindex color, exemple d'utilisation de la propriété @@ -1319,7 +1360,7 @@ Ainsi, pour choisir la couleur rouge, la valeur serait Enfin, il existe une échelle de gris parmi les possibilités de couleurs X11. Elle va du noir (@code{'grey0}) au blanc (@code{'grey100}), avec un pas de 1. Essayons de l'utiliser en attribuant à tous les objets de -notre exemple différentes nuances de gris@tie{}: +notre exemple différentes nuances de gris : @cindex StaffSymbol, exemple de dérogation @cindex TimeSignature, exemple de dérogation @@ -1350,7 +1391,7 @@ Vous remarquerez le contexte associé à chacun des objets. Une erreur sur ce point empêcherait la commande de fonctionner. Souvenez-vous que le contexte est celui dans lequel est placé le graveur approprié. Pour chaque graveur, on peut trouver son contexte par défaut en partant de -l'objet lui-même, puis en cherchant le graveur qui le produit@tie{}; la +l'objet lui-même, puis en cherchant le graveur qui le produit ; la page du graveur dans la RPI nous indique alors le contexte dans lequel le graveur se trouve normalement. @@ -1390,7 +1431,7 @@ nouvelle portée temporaire, du type @rglos{ossia}. Normalement, les ossias ne comportent ni clef ni indication de mesure, et elles sont imprimées légèrement plus petit que la portée principale. Nous avons déjà appris à enlever la clef et la métrique -- il suffit de -régler le stencil de chacun sur @code{#f}, comme ceci@tie{}: +régler le stencil de chacun sur @code{#f}, comme ceci : @cindex alignAboveContext, exemple d'utilisation de la propriété @cindex @code{\with}, exemple @@ -1427,7 +1468,7 @@ d'ossia. Mais alors, quelle différence y a-t-il à modifier le contexte de portée au moyen de @code{\with} ou à modifier les stencils de la clef et de la -métrique avec @code{\override}@tie{}? La principale différence est que +métrique avec @code{\override} ? La principale différence est que les changements opérés dans une clause @code{\with} sont réalisés au moment où le contexte est créé et restent par la suite les valeurs @strong{par défaut} aussi longtemps que ce contexte existe, tandis que @@ -1453,7 +1494,7 @@ puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de modification par la clause @code{\with}. Il se produirait même une erreur si le contexte était précisé. -Remplaçons donc l'exemple ci-dessus par celui-ci@tie{}: +Remplaçons donc l'exemple ci-dessus par celui-ci : @cindex alignAboveContext, exemple d'utilisation de la propriété @cindex @code{\with}, exemple @@ -1500,7 +1541,7 @@ modifiées de façon particulière. Si l'on revient à l'exemple d'ossia, commençons par changer la taille de police. Nous pouvons employer deux méthodes. Soit nous changeons la taille de police de chaque type d'objet avec des commandes comme -celle-ci pour les têtes de notes (@code{NoteHead})@tie{}: +celle-ci pour les têtes de notes (@code{NoteHead}) : @example \override NoteHead #'font-size = #-2 @@ -1516,7 +1557,7 @@ dans une clause @code{\with} (mais alors sans le @code{\set}). Chacune de ces méthodes réduira la taille de police de deux points par rapport à sa valeur précédente, sachant que chaque point réduit ou -augmente la taille d'environ 12@tie{}%. +augmente la taille d'environ 12 %. Essayons sur l'exemple d'ossia : @@ -1553,6 +1594,7 @@ les lignes de la portée trop espacées. Il faut donc les réduire dans les mêmes proportions que les polices de caractères. La prochaine sous-section montrera comment faire. + @node Longueur et épaisseur des objets @subsection Longueur et épaisseur des objets @translationof Length and thickness of objects @@ -1573,18 +1615,18 @@ Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont généralement mesurées en unités d'une propriété interne appelée @qq{épaisseur de ligne} (@code{line-thickness}). Par exemple, les lignes de crescendo/decrescendo présentent par défaut une épaisseur de -1@tie{}unité de @code{line-thickness}, alors que l'épaisseur d'une hampe -est de 1,3. Toutefois, certaines propriétés d'épaisseur sont -différentes@tie{}: par exemple, l'épaisseur des ligature -- +1 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe +est de 1,3. Toutefois, certaines propriétés d'épaisseur sont +différentes : par exemple, l'épaisseur des ligature -- @code{beam-thickness} -- se mesure en espaces de portée. Dans ces conditions, comment ajuster les longueurs à la taille des -polices de caractères@tie{}? La solution consiste à utiliser une +polices de caractères ? La solution consiste à utiliser une fonction spéciale appelée @code{magstep} -- pseudo facteur de zoom --, créée précisément dans ce but. Elle comporte un argument, le changement de taille de police (#-2 dans l'exemple précédent), à partir duquel elle applique un facteur de mise à l'échelle qui réduit, ou augmente, les -objets en question. Voici comment elle s'utilise@tie{}: +objets en question. Voici comment elle s'utilise : @cindex alignAboveContext, exemple d'utilisation de la propriété @cindex @code{\with}, exemple @@ -1636,14 +1678,15 @@ tous les objets peuvent être modifiées de manière analogue. Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il n'est généralement pas utile d'ajuster l'épaisseur des différentes lignes telles que les barres de mesure, les ligatures, les soufflets de -crescendo/decrescendo, les liaisons, etc. Si l'épaisseur d'un objet en -particulier doit être ajustée, le mieux est de modifier sa propriété +crescendo ou decrescendo, les liaisons, etc. Si l'épaisseur d'un objet +en particulier doit être ajustée, le mieux est de modifier sa propriété @code{thickness}. Nous avons vu plus haut, dans @ref{Propriétés des objets de rendu}, un exemple de modification de l'épaisseur des liaisons. L'épaisseur de tous les objets tracés (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère) peut être changée de la même manière. + @node Positionnement des objets @section Positionnement des objets @translationof Placement of objects @@ -1654,6 +1697,7 @@ peut être changée de la même manière. * Objets hors de la portée:: @end menu + @node Comportement automatique @subsection Comportement automatique @translationof Automatic behavior @@ -1680,12 +1724,12 @@ il existe des commandes et des possibilités de retouche qui permettent de modifier ce comportement automatique. Parmi les objets extérieurs à la portée, on compte des éléments comme -les marques de reprise, les indications de texte ou de nuances. Dans +les marques de reprise, les indications de texte ou de nuance. Dans LilyPond, la règle est de placer verticalement ces objets extérieurs à la portée le plus près possible de la portée, tout en évitant la collision avec d'autres objets. LilyPond utilise la propriété @code{outside-staff-priority} pour déterminer l'ordre selon lequel -placer ces objets, de la manière suivante@tie{}: +placer ces objets, de la manière suivante : D'abord, LilyPond dresse la liste de tous les objets extérieurs à la portée. Puis ceux-ci sont classés suivant leur @@ -1696,7 +1740,7 @@ objets déjà placés. Cela signifie que, si deux @emph{grobs} extérieurs à la portée doivent occuper la même place, c'est celui qui a la @code{outside-staff-priority} la plus basse qui est placé le plus près de la portée. Et si deux objets ont la même -@code{outside-staff-priority}, le premier rencontré sera placé le plus +@code{outside-staff-priority}, le premier rencontré sera placé au plus près de la portée. Dans l'exemple suivant, tous les @emph{markup} ont la même priorité, @@ -1748,7 +1792,7 @@ nombre de commandes déjà prêtes qui évitent, pour les modifications les plus courantes, d'avoir à encoder les retouches. Certains objets comme les traits des liaisons se recourbent tantôt -vers le haut, tantôt vers le bas@tie{}; d'autres encore, comme les +vers le haut, tantôt vers le bas ; d'autres encore, comme les hampes et les crochets, peuvent se décaler vers la gauche ou vers la droite selon qu'ils pointent vers le haut ou vers le bas. Ce comportement est géré automatiquement dès lors que @code{direction} est @@ -1761,7 +1805,7 @@ activé. L'exemple ci-dessous montre dans la première mesure le comportement par défaut des hampes -- celles des notes les plus hautes pointant vers le -bas et celles des notes les plus basses pointant vers le haut@tie{}; +bas et celles des notes les plus basses pointant vers le haut ; viennent ensuite quatre notes avec les hampes forcées vers le bas, puis quatre autres avec les hampes forcées vers le haut, et pour finir quatre notes de nouveau avec le comportement par défaut. @@ -1784,8 +1828,8 @@ correspondent respectivement aux valeurs @code{-1} et @code{+1}, que l'on peut utiliser à la place. La valeur @code{0} peut aussi être utilisée dans certains cas. Elle est interprétée comme un @code{UP} pour les hampes, et comme un @qq{centré} pour d'autres objets. Il -existe une direction, @code{CENTER}, qui correspond à la valeur -@code{0}. +existe une direction, @code{CENTER}, qui correspond à la +valeur @code{0}. Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car il existe des équivalents sous forme de commandes prédéfinies. Voici un @@ -1812,7 +1856,7 @@ signification est précisée. @item @code{\phrasingSlurDown} @tab @code{\phrasingSlurUp} @tab @code{\phrasingSlurNeutral} - @tab Attention@tie{}: à distinguer des commandes de liaison ci-dessous + @tab Attention : à distinguer des commandes de liaison ci-dessous @item @code{\slurDown} @tab @code{\slurUp} @tab @code{\slurNeutral} @@ -1835,13 +1879,15 @@ signification est précisée. @tab Les nolets sont au-dessous/au-dessus des notes @end multitable -Attention : ces commandes prédéfinies @strong{ne doivent pas} être +Attention : ces commandes prédéfinies @strong{ne doivent pas} être précédées de @code{\once}. Pour limiter l'effet à une seule note, il -faut soit utiliser la commande équivalente @code{\once \override}, soit +faut soit utiliser la commande équivalente @code{\once \override}, soit utiliser la commande prédéfinie, suivie, après la note à modifier, de la commande @code{\xxxNeutral} correspondante. -@subheading Doigtés + +@unnumberedsubsubsec Doigtés +@c VO Fingering @cindex doigtés, positionnement @cindex doigtés, accords @@ -1856,7 +1902,7 @@ au-dessus, en dessous, à gauche ou à droite de chaque note. Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une note simple. La première mesure montre le comportement par défaut, et les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et -@code{UP}@tie{}: +@code{UP} : @cindex doigtés, exemple de dérogation @cindex direction, exemple d'utilisation de la propriété @@ -1871,9 +1917,9 @@ c4-5 a-3 f-1 c'-5 | Le fait d'intervenir sur la propriété @code{direction} n'est sûrement pas la façon la plus simple de placer manuellement les doigtés au-dessus -ou en dessous des notes@tie{}; mieux vaut utiliser @code{_} ou @code{^} +ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^} devant le chiffre de doigté plutôt que @code{-}. Voici ce que donne -l'exemple précédent avec cette méthode@tie{}: +l'exemple précédent avec cette méthode : @cindex doigtés, exemple @@ -1886,7 +1932,7 @@ c4^5 a^3 f^1 c'^5 | La propriété @code{direction} ne fonctionne pas pour les accords alors que les préfixes de direction, @code{_} et @code{^}, fonctionnent. Par défaut, le doigté est placé automatiquement à la fois au-dessus et -au-dessous des notes d'un accord, comme ceci@tie{}: +au-dessous des notes d'un accord, comme ceci : @cindex doigtés, exemple @@ -1898,7 +1944,7 @@ au-dessous des notes d'un accord, comme ceci@tie{}: @noindent mais il est possible de forcer manuellement vers le haut ou vers le bas -le placement de tous ou certains chiffres de doigté, comme ceci@tie{}: +le placement de tous ou certains chiffres de doigté, comme ceci : @cindex doigtés, exemple @@ -1910,8 +1956,8 @@ le placement de tous ou certains chiffres de doigté, comme ceci@tie{}: On peut aller encore plus loin dans le positionnement des doigtés pour chacune des notes d'un accord grâce à la commande -@code{\set@tie{}fingeringOrientations}. La syntaxe de cette commande -est@tie{}: +@code{\set fingeringOrientations}. La syntaxe de cette commande +est : @example @code{\set fingeringOrientations = #'([up] [left/right] [down])} @@ -1965,7 +2011,7 @@ Voici quelques exemples : Si les indications de doigtés paraissent un peu serrées, on peut toujours réduire la taille de police (@code{font-size}). La valeur par défaut donnée dans la RPI à la page de l'objet -@code{Fingering} étant @code{-5}, essayons @code{-7}@tie{}: +@code{Fingering} étant @code{-5}, essayons @code{-7} : @lilypond[quote,fragment,ragged-right,verbatim,relative=1] \override Fingering #'font-size = #-7 @@ -1989,24 +2035,23 @@ par défaut donnée dans la RPI à la page de l'objet @node Objets hors de la portée @subsection Objets hors de la portée -@translationof Outside staff objects +@translationof Outside-staff objects Les objets extérieurs à la portée sont placés automatiquement de façon à éviter les collisions. Les objets avec la plus petite valeur de la propriété @code{outside-staff-priority} sont placés au plus près de la portée, tandis que les autres sont écartés autant qu'il faut pour éviter les collisions. La @code{outside-staff-priority} est définie dans la -@code{grob-interface}@tie{}; elle est donc une propriété commune à tous +@code{grob-interface} ; elle est donc une propriété commune à tous les objets de rendu. Par défaut, elle est réglée sur @code{#f} pour tous les objets de la portée, et porte une valeur numérique appropriée à chacun des objets extérieurs à la portée, à mesure qu'ils sont créés. Le tableau suivant montre la valeur numérique par défaut pour -quelques-uns des objets extérieurs à la portée les plus courants qui -sont placés, par défaut, dans les contextes @code{Staff} ou -@code{Voice}. +quelques-uns des objets extérieurs à la portée les plus courant. @cindex spanners @cindex bandeaux +@cindex extenseurs Vous noterez au passage certaines particularités quant au nom des objets. En effet, des objets à extension sont automatiquement créés @@ -2015,8 +2060,8 @@ extrémités d'un @emph{grob} qui commencerait et se terminerait à des instants musicaux différents. C'est la raison pour laquelle modifier le @code{outside-staff-priority} du @emph{grob} sous-jacent n'aura aucun effet. C'est par exemple le cas lorsque vous modifiez l'alignement d'un -objet @code{Hairpin} à l'aide de @code{outside-staff-priority}@tie{}; -puique le soufflet est associé à un objet @code{DynamicLineSpanner}, +objet @code{Hairpin} à l'aide de @code{outside-staff-priority} ; +puisque le soufflet est associé à un objet @code{DynamicLineSpanner}, c'est sur celui-ci que doit porter l'effet de @code{outside-staff-priority}. L'instruction dérogatoire se place au début du bandeau qui constitue une ligne de base susceptible de contenir @@ -2026,12 +2071,21 @@ plusieurs soufflets ou indications de nuance. @headitem Objet de rendu @tab Priorité @tab Contrôle la position de : -@item @code{MultiMeasureRestText} - @tab @code{450} - @tab Texte sur les silences qui couvrent des mesures entières +@item @code{RehearsalMark} + @tab @code{1500} + @tab Repère +@item @code{MetronomeMark} + @tab @code{1000} + @tab Indication métronomique +@item @code{VoltaBracketSpanner} + @tab @code{600} + @tab Bandeau de répétition @item @code{TextScript} @tab @code{450} @tab Texte des @emph{markup} (ou étiquettes) +@item @code{MultiMeasureRestText} + @tab @code{450} + @tab Texte sur les silences qui couvrent des mesures entières @item @code{OttavaBracket} @tab @code{400} @tab Indication d'octaviation @@ -2041,9 +2095,9 @@ plusieurs soufflets ou indications de nuance. @item @code{DynamicLineSpanner} @tab @code{250} @tab Toutes les marques de nuances -@item @code{VoltaBracketSpanner} +@item @code{BarNumber} @tab @code{100} - @tab Bandeau de répétition + @tab Numéro de mesure @item @code{TrillSpanner} @tab @code{50} @tab Bandeau de trille @@ -2089,9 +2143,9 @@ Cet exemple montre comment créer des extensions de texte (@emph{Text Spanners} en anglais) -- texte avec des longues lignes au-dessus d'un passage musical. L'extension s'étend depuis la commande @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le -format de texte est défini par la commande @code{\override TextSpanner}. +format de texte est défini par la commande @code{\override TextSpanner}. Pour de plus amples détails, voir -@ruser{Indication textuelle avec ligne d’extension}. +@ruser{Indication textuelle avec extension}. Il montre aussi comment créer des marques d'octaviation. @@ -2102,35 +2156,15 @@ Il montre aussi comment créer des marques d'octaviation. @cindex modification du positionnement des marques de repère @cindex marques de repère, modification du positionnement -Vous aurez remarqué que les numéros de mesure, l'indication métronomique -et les marques de répétition n'apparaissent pas. Par défaut, ils sont -créés dans le contexte @code{Score} et leur -@code{outside-staff-priority} est ignorée face aux objets qui sont créés -dans le contexte @code{Staff}. Si vous voulez faire apparaître les -numéros de mesure, l'indication métronomique ou les marques de -répétition conformément à la valeur de leur -@code{outside-staff-priority}, il vous faudra retirer respectivement le -@code{Bar_number_engraver}, le @code{Metronome_mark_engraver} ou le -@code{Mark_engraver} du contexte @code{Score} et les placer en tête du -contexte @code{Staff}. Après quoi ces marques porteront les valeurs de -@code{outside-staff-priority} par défaut suivantes@tie{}: - -@multitable @columnfractions .3 .3 -@headitem Objet de rendu @tab Priorité -@item @code{RehearsalMark} @tab @code{1500} -@item @code{MetronomeMark} @tab @code{1000} -@item @code{BarNumber} @tab @code{ 100} -@end multitable - Si les valeurs de @code{outside-staff-priority} par défaut ne donnent pas les résultats escomptés, il suffit de modifier la priorité de l'un de ces objets. Supposons que vous vouliez placer l'indication d'octaviation sous le bandeau de texte, dans l'exemple précédent. Tout ce que nous devons faire, c'est regarder la priorité de -@code{OttavaBracket} dans la RPI ou dans le tableau plus haut, et la -ramener à une valeur plus basse que celle de @code{TextSpanner}, en -gardant à l'esprit que @code{OttavaBracket} est créé dans le contexte -@code{Staff}@tie{}: +@code{OttavaBracket} dans la Référence des propriétés internes ou dans +le tableau plus haut, et la ramener à une valeur plus basse que celle de +@code{TextSpanner}, en gardant à l'esprit que @code{OttavaBracket} est +créé dans le contexte @code{Staff} : @cindex TextSpanner, exemple de dérogation @cindex bound-details, exemple d'utilisation de la propriété @@ -2160,6 +2194,10 @@ c4\ff c \stopTextSpan | c,4 c c c | @end lilypond +N'oublions pas que certains objets, tels les numéros de mesure, +indications métronomiques et marques-repères, sont par défaut attachés +au contexte @code{Score}. + @cindex liaisons et outside-staff-priority @cindex liaisons et articulations @cindex articulations et liaisons @@ -2194,9 +2232,9 @@ contrôler le positionnement vertical des objets individuels, quoique le résultat ne soit pas toujours formidable. Imaginons que nous voulions placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section @ref{Comportement automatique}, plus haut. Il nous suffit pour cela de -regarder dans la RPI ou dans le tableau plus haut la priorité de -@code{TextScript}, et d'augmenter la priorité de @qq{Text3} jusqu'à une -valeur très haute@tie{}: +regarder dans la Référence des propriétés internes ou dans le tableau +plus haut la priorité de @code{TextScript}, et d'augmenter la priorité +de @qq{Text3} jusqu'à une valeur très haute : @cindex TextScript, exemple de dérogation @cindex outside-staff-priority, exemple d'utilisation de la propriété @@ -2217,6 +2255,7 @@ portée. Pour cela, nous avons besoin d'espacer horizontalement les notes pour laisser plus de place au texte. C'est possible grâce à la commande @code{textLengthOn}. + @subheading \textLengthOn @cindex notes, répartition selon le texte @@ -2231,7 +2270,7 @@ Par défaut, l'espacement horizontal d'un texte produit sous forme de où ce qui est concerné n'entre pas dans la musique. La commande @code{\textLengthOn} inverse ce comportement, faisant en sorte que les notes soient espacées autant qu'il le faut pour s'adapter au -texte@tie{}: +texte : @lilypond[quote,fragment,ragged-right,verbatim,relative=2] \textLengthOn % Cause notes to space out to accommodate text @@ -2282,16 +2321,17 @@ c''2 | @subheading Nuances +@c VO Dynamics -@cindex modifier le positionnement des nuances -@cindex nuances, modifier le positionnement +@cindex modification du positionnement des nuances +@cindex nuances, modification du positionnement -Les indications de nuance se placent normalement sous la portée mais on +Les indications de nuance se placent normalement sous la portée, mais on peut les placer au-dessus avec la commande @code{dynamicUp}. Elles se positionnent verticalement par rapport à la note à laquelle elles sont liées et se décalent vers le bas (ou le haut) en fonction des objets de la portée comme les liaisons de phrasé ou les numéros de mesure. Cela -peut donner d'assez bons résultats, comme le montre cet exemple@tie{}: +peut donner d'assez bons résultats, comme le montre cet exemple : @lilypond[quote,fragment,ragged-right,verbatim,relative=1] \clef "bass" @@ -2306,7 +2346,7 @@ De toute façon, si les notes et les nuances qui leur sont liées sont trop proches, le positionnement automatique évitera les collisions en déplaçant davantage les nuances suivantes, mais le résultat peut ne pas être très satisfaisant, comme le montre cet exemple -artificiel@tie{}: +artificiel : @lilypond[quote,fragment,ragged-right,verbatim,relative=2] \dynamicUp @@ -2317,12 +2357,14 @@ a4\f b\mf c\mp b\p Si une telle situation devait survenir dans de la musique @qq{réelle}, il serait préférable d'espacer un peu plus les notes, de façon que les indications de nuance puissent toutes se situer à la même distance de la -portée. Il était possible de faire cela pour les textes de -@emph{markup} grâce à la commande @code{\textLengthOn} mais il n'existe +portée. S'il est possible de faire cela pour les textes de +@emph{markup} grâce à la commande @code{\textLengthOn}, il n'existe pas d'équivalent pour les indications de nuance. Il nous faut donc chercher à faire cela avec la commande @code{\override}. + @subheading Dimensionnement des objets graphiques +@c VO Grob sizing @cindex grob, dimensionnement @cindex dimensionnement des grobs @@ -2346,18 +2388,18 @@ comme étant nulle, si bien qu'ils peuvent se chevaucher horizontalement. Pour remédier à cela, on a ajouté l'infini à l'extension gauche et moins l'infini à l'extension droite, en attribuant à @code{extra-spacing-width} la valeur -@code{'(+inf.0@tie{}.@tie{}-inf.0)}. Pour être sûr que les objets ne se +@code{'(+inf.0 . -inf.0)}. Pour être sûr que les objets ne se chevaucheront pas horizontalement, nous devons donc corriger cette valeur de @code{extra-spacing-width} en @w{@code{'(0 . 0)}}, afin que -leur vraie largeur se manifeste. La commande pour y parvenir avec des -indications de nuances est@tie{}: +leur vraie largeur se manifeste. La commande pour y parvenir avec des +indications de nuances est : @example \override DynamicText #'extra-spacing-width = #'(0 . 0) @end example @noindent -Voyons si ça marche sur notre exemple précédent@tie{}: +Voyons si ça marche sur notre exemple précédent : @cindex DynamicText, exemple de dérogation @cindex extra-spacing-width, exemple d'utilisation de la propriété @@ -2376,8 +2418,8 @@ elles étaient toutes à la même distance de la portée. Le premier problème est simple à résoudre. Au lieu d'attribuer à @code{extra-spacing-width} la valeur zéro, nous pourrions mettre un peu plus. L'unité est la distance entre deux lignes -de portée, donc en écartant le bord gauche d'une demi-unité -et le bord droit d'une demi-unité, on obtient@tie{}: +de portée, donc en écartant le bord gauche d'une demie unité +et le bord droit d'une demie unité, on obtient : @cindex DynamicText, exemple de dérogation @cindex extra-spacing-width, exemple d'utilisation de la propriété @@ -2393,7 +2435,7 @@ a4\f b\mf c\mp b\p C'est mieux mais nous voulons peut-être aligner les indications de nuance sur une même ligne plutôt que de les voir monter et descendre avec les notes. La propriété qui gère cela est -@code{staff-padding}@tie{}; la section suivante lui est consacrée. +@code{staff-padding} ; la section suivante lui est consacrée. @node Collisions d'objets @@ -2406,6 +2448,7 @@ descendre avec les notes. La propriété qui gère cela est * Exemple concret:: @end menu + @node Déplacement d'objets @subsection Déplacement d'objets @translationof Moving objects @@ -2424,7 +2467,7 @@ d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins d'espace autour d'eux. Il y a trois façons de résoudre les problèmes de chevauchement. Il est -préférable de les aborder dans l'ordre suivant@tie{}: +préférable de les aborder dans l'ordre suivant : @enumerate @item @@ -2440,10 +2483,10 @@ qu'entre deux positions, sans personnalisation possible. @item Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour positionner les objets, sont modifiables avec @code{\override}. Il y a -deux avantages à changer ces propriétés@tie{}: (a) d'autres objets +deux avantages à changer ces propriétés : (a) d'autres objets pourront être déplacés automatiquement si nécessaire pour faire de la place, et (b) la même retouche peut s'appliquer à toutes les occurrences -du même type d'objet. Ces propriétés sont@tie{}: +du même type d'objet. Ces propriétés sont : @itemize @@ -2453,6 +2496,7 @@ du même type d'objet. Ces propriétés sont@tie{}: Ce point a déjà été traité en détails -- voir @ref{Objets inclus dans la portée}. + @item @code{padding}, @code{right-padding}, @code{staff-padding} @@ -2465,7 +2509,7 @@ Au moment de positionner un objet, la valeur de sa propriété @code{padding} détermine l'espace à laisser libre entre celui-ci et le coin le plus proche de l'objet à côté duquel il est placé. Vous remarquerez que c'est la valeur @code{padding} de l'objet @strong{à -placer} qui compte@tie{}; la valeur @code{padding} de l'objet déjà placé +placer} qui compte ; la valeur @code{padding} de l'objet déjà placé est ignorée. Les espaces libres déterminés par @code{padding} s'appliquent à tous les objets associés à la @code{side-position-interface}. @@ -2482,24 +2526,24 @@ propriété @code{right-padding} de l'objet @code{AccidentalPlacement} joue sur le positionnement des altérations. La propriété @code{staff-padding} est très proche de la propriété -@code{padding}@tie{}: @code{padding} contrôle l'espace minimum entre un +@code{padding} : @code{padding} contrôle l'espace minimum entre un objet qui accepte la @code{side-position-interface} et l'objet le plus -proche (généralement une note ou une ligne de portée)@tie{}; +proche (généralement une note ou une ligne de portée) ; @code{staff-padding} ne s'applique qu'aux objets qui sont toujours -placés en-dehors de la portée -- il contrôle l'espace minimum à insérer -entre l'objet et la portée. Attention@tie{}: par défaut, +placés au-dehors de la portée -- il contrôle l'espace minimum à insérer +entre l'objet et la portée. Attention : par défaut, @code{staff-padding} concerne les objets positionnés par rapport à la portée et n'a aucun effet sur les objets qui sont positionnés par -rapport à une note@tie{}; il est toutefois possible de le régler pour +rapport à une note ; il est toutefois possible de le régler pour fonctionner avec ces derniers. Pour trouver quelle propriété @code{padding} employer pour l'objet que vous cherchez à repositionner, il vous faut consulter les propriétés de l'objet dans la RPI. Prenez garde que les propriétés @code{padding} ne -sont pas forcément traitées dans l'objet en question@tie{}; il faut +sont pas forcément traitées dans l'objet en question ; il faut alors regarder les objets qui semblent s'en rapprocher. -Toutes les valeurs @code{padding} sont exprimées en espaces de portée. +Toutes les valeurs @code{padding} sont exprimées en espace de portée. Pour la plupart des objets, la valeur par défaut est aux alentours de 1,0 et parfois moins (cela dépend de chaque objet). Il est possible de la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus @@ -2528,6 +2572,7 @@ plus loin vers la droite. Un écart de @code{1} en valeur correspond à un déplacement de la moitié de la longueur du texte. + @item @code{extra-spacing-width} @@ -2538,7 +2583,7 @@ Cette propriété est utilisée pour tous les objets qui acceptent la ajouté au bord gauche et le second au bord droit. Des nombres négatifs déplacent le coin vers la gauche, des nombres positifs vers la droite, si bien que pour élargir un objet, le premier nombre -doit être négatif et le second positif. Attention@tie{}: tous les +doit être négatif et le second positif. Attention : tous les objets n'acceptent pas forcément les deux nombres. Par exemple, l'objet @code{Accidental} ne retient que le premier nombre (coin gauche). @@ -2550,12 +2595,13 @@ objets n'acceptent pas forcément les deux nombres. Par exemple, l'objet @code{staff-position} est une propriété de la @code{staff-symbol-referencer-interface}, qui s'applique aux objets -positionnés par rapport à la portée. Elle indique, en demi-espaces de +positionnés par rapport à la portée. Elle indique, en demi-espace de portée, la position verticale des objets par rapport à la ligne médiane de la portée. C'est bien pratique pour résoudre des problèmes de collision entre des objets comme les silences valant mesure entière, les liaisons et les notes de différentes voix. + @item @code{force-hshift} @@ -2576,25 +2622,26 @@ les commandes habituelles @code{\shiftOn} (voir @ref{Instanciation explicite des voix}) ne suffisent plus à résoudre les conflits. Elle est alors préférable à l'utilisation de la propriété @code{extra-offset}, dans la mesure où on n'a pas besoin -d'exprimer la distance en espaces de portée et où le fait de déplacer +d'exprimer la distance en espace de portée et où le fait de déplacer les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte d'autres actions comme les fusions de notes. @end itemize + @item Pour terminer, quand toutes les autres méthodes ont échoué, il est possible de repositionner verticalement les objets à la main par rapport à la ligne médiane de la portée, ou en les déplaçant à une distance donnée vers une nouvelle position. Les inconvénients sont qu'il faut individuellement, pour chaque objet, trouver les valeurs correctes de -repositionnement souvent par tâtonnement, et que, puisque le +repositionnement souvent par tâtonnement et que, puisque le mouvement est opéré après que LilyPond a placé tous les autres objets, c'est à l'utilisateur de résoudre tous les problèmes de collision qui pourraient survenir. Et le pire avec cette méthode est que, le jour où la musique est modifiée, il faut de nouveau rechercher les valeurs de repositionnement. Les propriétés à utiliser pour ce type -de repositionnement manuel sont@tie{}: +de repositionnement manuel sont : @table @code @@ -2603,8 +2650,8 @@ de repositionnement manuel sont@tie{}: @cindex extra-offset, propriété Cette propriété s'applique à tout objet acceptant la -@code{grob-interface}. Elle reçoit une paire de nombre qui indiquent le -déplacement supplémentaire dans le sens horizontal et vertical. Des +@code{grob-interface}. Elle reçoit une paire de nombres qui indiquent +le déplacement supplémentaire dans le sens horizontal et vertical. Des nombres négatifs déplacent l'objet vers la gauche ou vers la droite. L'unité utilisée est l'espace de portée. Le déplacement supplémentaire intervient une fois que la composition des objets est achevée, si bien @@ -2617,9 +2664,9 @@ perturber quoi que ce soit. Cette propriété est très utile pour ajuster manuellement l'inclinaison et la hauteur des barres de ligature, des liaisons et des nolets. Elle -est suivie de deux nombres qui donnent la position des bords gauche et -droit des barres, liaisons, etc. par rapport à la ligne médiane de la -portée. L'unité de référence est l'intervalle de lignes de portée. +est suivie de deux nombres qui donnent la position des extrémités gauche +et droite des barres, liaisons, etc. par rapport à la ligne médiane de +la portée. L'unité de référence est l'intervalle de lignes de portée. Attention toutefois au fait que les liaisons et phrasés ne peuvent pas être repositionnés n'importe où. LilyPond commence par dresser la liste des emplacements possibles pour les liaisons et choisit par défaut la @@ -2661,7 +2708,9 @@ trouver les propriétés à retoucher pour obtenir un déplacement. Voyons maintenant comment les propriétés décrites dans la section précédente peuvent nous aider à résoudre les collisions. + @subheading la propriété padding +@c VO padding property @cindex décalage (padding) @cindex résolution des chevauchements de notation @@ -2705,7 +2754,9 @@ fait partie d'un ensemble d'objets positionnés en fonction de leur @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous les autres objets du groupe. -@subheading right-padding + +@subheading la propriété right-padding +@c VO right-padding @cindex right-padding, propriété @@ -2715,7 +2766,7 @@ souvent, mais l'espacement par défaut peut se révéler inadéquat avec certaines altérations ou certains glyphes utilisés en musique microtonale. Le stencil de l'altération devra alors être construit sous la forme d'un @code{markup} qui contiendra le ou les symboles requis, -comme ceci@tie{}: +comme ceci : @cindex Accidental, exemple de dérogation @cindex text, exemple d'utilisation de la propriété @@ -2751,7 +2802,9 @@ note par la retouche de @code{right-padding}. @noindent + @subheading la propriété staff-padding +@c VO staff-padding property @cindex alignement d'objets sur une ligne de base @cindex objets, alignement sur une ligne de base @@ -2765,7 +2818,7 @@ fictive est destinée à s'appliquer autant à @strong{toutes} les nuances, notamment celles qui sont créées comme des bandeaux en longueur (en anglais @emph{Spanners}). Tel est donc le moyen d'aligner les indications de nuance, comme dans cet exemple repris de la section -précédente@tie{}: +précédente : @cindex DynamicText, exemple de dérogation @cindex extra-spacing-width, exemple d'utilisation de la propriété @@ -2783,10 +2836,11 @@ a4\f b\mf c\mp b\p @subheading la propriété self-alignment-X +@c VO self-alignment-X property L'exemple suivant montre comment résoudre une collision entre une indication de corde et une hampe, en alignant le coin droit sur le point -de référence de la note parente@tie{}: +de référence de la note parente : @cindex StringNumber, exemple de dérogation @cindex self-alignment-X, exemple d'utilisation de la propriété @@ -2798,7 +2852,9 @@ de référence de la note parente@tie{}: @end lilypond + @subheading la propriété staff-position +@c VO staff-position property @cindex collision d'objets à l'intérieur d'une portée @@ -2808,7 +2864,7 @@ barres de mesure, il serait très compliqué de programmer LilyPond pour repérer ces risques de collision dans la mesure où, normalement, toutes les collisions entre notes ou entre notes et silences se produisent sur des notes et silences simultanés. Voici un exemple de collision de ce -type@tie{}: +type : @lilypond[quote,verbatim,fragment,ragged-right, relative=1] << { c4 c c c } \\ { R1 } >> @@ -2817,11 +2873,10 @@ type@tie{}: Ici, la meilleure solution consiste à déplacer le symbole de pause vers le bas -- puisque cette pause appartient à la voix deux. Par défaut, dans la @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une -construction @code{<<@{@dots{}@}@tie{}\\@tie{}@{@dots{}@}>>}), la -propriété @code{staff-position} est réglée sur @code{-4} pour les -@code{MultiMeasureRest}@tie{}; nous avons donc besoin de la déplacer, -disons, de quatre demi-intervalles vers le bas, ce qui donne @code{-8}. - +construction @code{<<@{@dots{}@} \\ @{@dots{}@}>>}), la propriété +@code{staff-position} est réglée sur @code{-4} pour les +@code{MultiMeasureRest} ; nous avons donc besoin de la déplacer, disons, +de quatre demi-intervalles vers le bas, ce qui donne @code{-8}. @cindex MultiMeasureRest, exemple de dérogation @cindex staff-position, exemple d'utilisation de la propriété @@ -2839,7 +2894,9 @@ C'est mieux que d'utiliser, par exemple, @code{extra-offset}, car la ligne supplémentaire au-dessus du silence est insérée automatiquement. + @subheading la propriété extra-offset +@c VO extra-offset property @cindex positionnement des objets @cindex positionnement des grobs @@ -2852,7 +2909,7 @@ verticalement. Dans l'exemple suivant, la seconde indication de doigté est déplacée légèrement vers la gauche et de 1,8 intervalle de lignes vers le -bas@tie{}: +bas : @cindex Fingering, exemple de dérogation @cindex extra-offset, exemple d'utilisation de la propriété @@ -2866,6 +2923,7 @@ f4-5 @subheading la propriété positions +@c VO positions property @cindex contrôle des nolets, liaisons, phrasés et ligatures @cindex gestion manuelle des nolets, liaisons, phrasés et ligatures @@ -2886,7 +2944,7 @@ r4 \acciaccatura e8\( d8 c~ c d c d\) @noindent Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus -des notes, et ce serait la meilleure solution@tie{}: +des notes, et ce serait la meilleure solution : @lilypond[quote,verbatim,fragment,ragged-right,relative=1] r4 @@ -2910,50 +2968,64 @@ r4 \acciaccatura e8\( d8 c~ c d c d\) @end lilypond -Voici un autre exemple, tiré du début de la partie de main gauche -du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le -constater, les barres de ligature chevauchent les notes les plus -hautes@tie{}: +Voici un autre exemple. Comme nous pouvons le constater, les barres de +ligature chevauchent les liaisons de tenue : @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 On peut y remédier en déplaçant manuellement vers le haut les deux -extrémités des ligatures de croches, non plus à 2 intervalles au-dessus -de la ligne médiane mais, disons, à 3@tie{}: +extrémités des ligatures de croches, non plus à 1,81 intervalle +au-dessous de la ligne médiane mais, disons, à 1 : @cindex Beam, exemple de dérogation @cindex positions, exemple d'utilisation de la propriété @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 Vous remarquerez que la retouche continue de s'appliquer au second bloc de croches de la première voix mais qu'il ne s'applique -à aucune barre de la deuxième voix. +à aucune mesure de la deuxième voix. + @subheading la propriété force-hshift +@c VO force-hshift property -Maintenant, nous sommes prêts à appliquer les dernières corrections à +Maintenant, nous sommes prêts à appliquer les dernières corrections à l'exemple de Chopin présenté à la fin de @ref{J'entends des Voix}, que -nous avions laissé dans cet état@tie{}: +nous avions laissé dans cet état : @lilypond[quote,verbatim,fragment,ragged-right] \new Staff \relative c'' { @@ -2961,26 +3033,27 @@ nous avions laissé dans cet état@tie{}: << { c2 aes4. bes8 } \\ - { aes2 f4 fes } + { 2 des } \\ - { - \voiceFour - 2 des - } + \\ + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -Les deux plus basses notes du premier accord (c'est-à-dire celles de la -troisième voix) ne devraient pas être décalées de l'empilement des deux -plus hautes notes. Pour y remédier, nous réglons le @code{force-hshift} --- qui est une propriété de @code{NoteColumn} -- de ces notes sur zéro. -Ensuite, la note la plus basse du second accord serait mieux à droite -des notes plus hautes. Pour cela, nous réglons le @code{force-hshift} -de cette note sur 0,5 -- c'est-à-dire la moitié de la largeur d'une tête -de note vers la droite de la colonne des notes plus hautes. +La note intermédiaire du premier accord, le la bémol à la quatrième +voix, doit rester dans le même empilement que la note haute. Pour y +remédier, nous réglons le @code{force-hshift} -- qui est une propriété +de @code{NoteColumn} -- de cette note sur zéro. + +Quant au second accord, il serait préférable que le fa s'aligne avec le +la et que la note la plus basse se positionne un peu plus sur la droite +pour éviter que les hampes se chevauchent. Pour cela, nous réglons le +@code{force-hshift} au niveau du @code{NoteColumn} du ré bémol de telle +sorte qu'il se déplace de la moitié d'un espace de portée vers la +droite. Et voici le résultat final : @@ -2993,15 +3066,17 @@ Et voici le résultat final : << { c2 aes4. bes8 } \\ - { aes2 f4 fes } - \\ { - \voiceFour - \once \override NoteColumn #'force-hshift = #0 - 2 + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ + \\ + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -3018,14 +3093,14 @@ nombre de retouches jusqu'à l'obtention du résultat attendu. Cet exemple a été choisi en raison des problèmes inhabituels de notation qu'il soulevait et pour vous apprendre à les résoudre grâce au Manuel de notation. Il n'est pas représentatif d'une opération normale de -gravure@tie{}; que ces difficultés ne vous découragent donc pas@tie{}! +gravure ; que ces difficultés ne vous découragent donc pas ! Des difficultés comme celles-ci ne sont, heureusement, pas -courantes@tie{}! +courantes ! -Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures -6 à 9@tie{}; cela correspond à la transition entre le Lento d'ouverture +Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures +6 à 9 ; cela correspond à la transition entre le Lento d'ouverture et le Moderato. Voici, pour commencer, ce à quoi nous voulons que la -partition ressemble@tie{}; pour limiter les complications, nous n'avons +partition ressemble ; pour limiter les complications, nous n'avons pas fait apparaître les indications de nuance, de doigté ni de pédale. @@ -3050,7 +3125,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3060,7 +3136,8 @@ rhMusic = \relative c'' { % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3101,12 +3178,16 @@ droite compte quatre voix. Ce sont les cinq croches avec une barre, le do avec liaison, le ré blanche qui se fond avec le ré croche, et le fa dièse noire pointée qui se fond lui aussi avec la croche de même hauteur. Tout le reste se réduit à une seule voix. Le plus simple est -donc de créer temporairement ces quatre voix au moment opportun. -Si vous avez oublié comment faire, reportez-vous à -@ref{J'entends des Voix}. Commençons par saisir les notes comme -appartenant à deux variables, mettons en place l'ossature des -portées dans un bloc @code{\Score} et voyons ce que LilyPond propose par -défaut@tie{}: +donc de créer temporairement ces trois voix supplémentaires au moment +opportun. Si vous avez oublié comment faire, reportez-vous à +@ref{J'entends des Voix} et @ref{Instanciation explicite des voix}. +Nous opterons ici pour une déclaration explicite des voix du passage +polyphonique, puisque LilyPond est alors plus performant en matière +d'évitement des collisions. + +Commençons par saisir les notes comme appartenant à deux variables, +mettons en place l'ossature des portées dans un bloc @code{\Score} et +voyons ce que LilyPond propose par défaut : @c line-width ensures no break @lilypond[quote,verbatim,ragged-right,line-width=6\in] @@ -3166,7 +3247,7 @@ plusieurs éléments de notation. Commençons par le plus simple. Nous pouvons corriger la ligature des croches en la créant manuellement et nous pouvons facilement ajouter les limites droite et gauche de la liaison de phrasé, puisque tout cela a déjà été traité dans le tutoriel. -Voici le résultat@tie{}: +Voici le résultat : @c line-width ensures no break @lilypond[quote,verbatim,ragged-right,line-width=6\in] @@ -3220,12 +3301,12 @@ lhMusic = \relative c' { La première mesure est maintenant correcte. La seconde contient un arpège et doit se terminer par une double barre. Comment faire, puisque -cela n'a pas été traité dans le Manuel d'initiation@tie{}? C'est alors +cela n'a pas été traité dans le Manuel d'initiation ? C'est alors qu'il faut nous reporter au Manuel de notation. Quand on cherche @qq{arpège} et @qq{barre de mesure} dans l'index, on voit aisément qu'il faut ajouter @code{\arpeggio} à un accord pour produire un arpège et qu'une double barre est le résultat de la commande -@code{\bar@tie{}"||"}. Rien de plus facile@tie{}! Nous devons ensuite +@code{\bar "||"}. Rien de plus facile ! Nous devons ensuite corriger la collision entre la liaison et l'indication de mesure. Le mieux est de déplacer la liaison vers le haut. La méthode pour déplacer les objets a déjà été présentée dans @ref{Déplacement d'objets}, et l'on @@ -3233,12 +3314,12 @@ sait que, pour des objets positionnés par rapport à la portée, il nous faut modifier leur propriété @code{staff-position}, exprimée en demi-intervalles de lignes par rapport à la ligne médiane de la portée. Voici donc la retouche à insérer juste devant la première note -liée@tie{}; elle est censée déplacer la liaison vers le haut de 3,5 -demi-intervalles de lignes au-dessus de la ligne médiane@tie{}: +liée ; elle est censée déplacer la liaison vers le haut de 3,5 +demi-intervalles de lignes au-dessus de la ligne médiane : @code{\once \override Tie #'staff-position = #3.5} -Cela s'adjoint à la deuxième mesure, pour donner@tie{}: +Cela s'adjoint à la deuxième mesure, pour donner : @c line-width ensures no break @lilypond[quote,verbatim,ragged-right,line-width=6\in] @@ -3294,15 +3375,15 @@ lhMusic = \relative c' { Venons-en à la troisième mesure et au début de la section Moderato. Dans le Tutoriel, il est indiqué comment insérer du texte en gras à -l'aide de la commande @code{\markup}@tie{}; pas de problème, du coup, +l'aide de la commande @code{\markup} ; pas de problème, du coup, pour ajouter @qq{Moderato} en gras. Mais comment faire pour fusionner -les notes de différentes voix@tie{}? C'est là que le Manuel de notation +les notes de différentes voix ? C'est là que le Manuel de notation peut nous venir en aide. Une recherche sur @qq{fusionnement de notes} dans l'index nous renvoie au chapitre @ruser{Résolution des collisions}, et plus précisément aux commandes permettant de fusionner des notes en fonction de leur type et selon qu'elles sont pointées ou non. Dans notre exemple, pour la durée de la polyphonie de la troisième mesure, -nous avons besoin de fusionner deux types de notes@tie{}; grâce aux +nous avons besoin de fusionner deux types de notes ; grâce aux informations trouvées dans le Manuel de notation, nous ajoutons @example @@ -3378,20 +3459,20 @@ lhMusic = \relative c' { @end lilypond Ces retouches ont permis de fusionner les deux fa dièse mais pas les -deux ré. Pourquoi@tie{}? La réponse se trouve dans la même section du -Manuel de notation@tie{}: les notes à fusionner doivent avoir des hampes +deux ré. Pourquoi ? La réponse se trouve dans la même section du +Manuel de notation : les notes à fusionner doivent avoir des hampes dans des directions opposées et deux notes ne peuvent pas être fusionnées s'il y a une troisième note dans la même colonne. Ici, les deux ré ont leur hampe orientée vers le haut et il y a une troisième note, do. Nous savons changer l'orientation de la hampe avec @code{\stemDown} et le Manuel de notation nous indique également comment déplacer le do -- en produisant un décalage grâce à l'une des commandes -@code{\shift}. Mais laquelle@tie{}? Le do appartient à la deuxième -voix et n'est pas décalé@tie{}; les deux ré appartiennent respectivement +@code{\shift}. Mais laquelle ? Le do appartient à la deuxième +voix et n'est pas décalé ; les deux ré appartiennent respectivement à la première et à la troisième voix, et l'un n'est pas décalé tandis que l'autre l'est. Il nous faut donc décaler largement le do avec la commande @code{\shiftOnn} pour éviter une interférence avec les deux ré. -Voici ce que donnent ces modifications@tie{}: +Voici ce que donnent ces modifications : @cindex Tie, exemple de dérogation @cindex staff-position, exemple d'utilisation de la propriété @@ -3413,7 +3494,8 @@ rhMusic = \relative c'' { { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work c,8~ \shiftOnn c2 } \new Voice { @@ -3454,12 +3536,12 @@ lhMusic = \relative c' { } @end lilypond -Pas loin@tie{}! Il ne reste plus que deux problèmes@tie{}: les ré une +Pas loin ! Il ne reste plus que deux problèmes : les ré une fois fusionnés ne devraient plus avoir de hampe vers le bas, et le do serait mieux à la droite des ré. Nous savons remédier à ces deux -problèmes grâce aux retouches précédentes@tie{}: nous allons rendre la +problèmes grâce aux retouches précédentes : nous allons rendre la hampe transparente et déplacer le do avec la propriété -@code{force-hshift}. Et voici le résultat final@tie{}: +@code{force-hshift}. Et voici le résultat final : @cindex NoteColumn, exemple de dérogation @cindex force-hshift, exemple d'utilisation de la propriété @@ -3486,7 +3568,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3496,7 +3579,8 @@ rhMusic = \relative c'' { % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3542,10 +3626,10 @@ lhMusic = \relative c' { * Utilisation de variables dans les retouches:: * Feuilles de style:: * Autres sources de documentation:: -* Options ralentissant le traitement:: * Retouches avancées avec Scheme:: @end menu + @node Autres utilisations des retouches @subsection Autres utilisations des retouches @translationof Other uses for tweaks @@ -3560,7 +3644,9 @@ lhMusic = \relative c' { @cindex objets, invisibles @cindex liaison de tenue avec changement de voix + @subheading Liaison entre plusieurs voix +@c VO Tying notes across voices Voici un exemple qui montre comment créer une liaison de prolongation entre des notes appartenant à des voix différentes. En @@ -3573,7 +3659,7 @@ dont l'une avec les notes liées @end lilypond @noindent -et à rendre transparente la première hampe de cette voix@tie{}; +et à rendre transparente la première hampe de cette voix ; on a alors l'impression que la liaison couvre les deux voix. @cindex Stem, exemple de dérogation @@ -3582,7 +3668,8 @@ on a alors l'impression que la liaison couvre les deux voix. @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t b8~ b\noBeam } \\ @@ -3592,13 +3679,14 @@ on a alors l'impression que la liaison couvre les deux voix. Pour être sûr que la hampe que nous avons rendue transparente n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en -réglant la longueur (@code{length}) sur @code{8}, +réglant la longueur (@code{length}) sur @code{8}, @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t - \once \override Stem #'length = #8 + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t + \tweak Stem #'length #8 b8~ b8\noBeam } \\ @@ -3606,7 +3694,9 @@ réglant la longueur (@code{length}) sur @code{8}, >> @end lilypond + @subheading Rendu MIDI d'un point d'orgue +@c VO Simulating a fermata in MIDI @cindex stencil, utilisation de la propriété @cindex point d'orgue, rendu en MIDI @@ -3625,7 +3715,7 @@ pas que cette indication métronomique apparaisse sur la partition ni qu'elle influence l'espacement entre les deux systèmes ou la position des annotations voisines sur la portée. Le fait d'attribuer à la propriété @code{stencil} la valeur @code{#f} est donc la bonne solution. -Nous montrons ci-dessous le résultat des deux méthodes@tie{}: +Nous montrons ci-dessous le résultat des deux méthodes : @cindex MetronomeMark, exemple de dérogation @cindex transparent, exemple d'utilisation de la propriété @@ -3679,7 +3769,6 @@ métronomique transparente repousse vers le haut l'indication de tempo, contrairement à la seconde (avec le stencil désactivé) qui la laisse à sa place. - @seealso Glossaire musicologique : @rglosnamed{system,système}. @@ -3703,7 +3792,7 @@ les mettant en italique. Au lieu des commandes @code{\italic} et @code{\bold}, qui ne fonctionnent dans les paroles que si elles sont enchâssées dans un @code{\markup} -- ce qui les rend pénibles à saisir -- pouvons-nous employer les commandes @code{\override} et -@code{\revert}@tie{}? +@code{\revert} ? @example @code{\override Lyrics . LyricText #'font-shape = #'italic} @@ -3720,7 +3809,7 @@ et les utilisons comme ci-après -- quoique on choisirait sans doute pour les variables des noms plus courts pour simplifier la frappe. Par ailleurs, le fait de recourir à une variable ne nous expose plus à l'oubli des espaces entourant les points lorsqu'explicités au beau -milieu d'un bloc @code{\lyriqcmode}@tie{}! +milieu d'un bloc @code{\lyricmode} ! @cindex LyricText, exemple de dérogation @cindex font-shape, exemple d'utilisation de la propriété @@ -3788,8 +3877,8 @@ VerseFour = \lyricmode { La sortie que produit LilyPond peut être largement modifiée -- voir @ref{Retouche de partition} pour plus de détails. Mais que faire si vous avez beaucoup de fichiers auxquels vous souhaitez appliquer vos -retouches@tie{}? Ou si vous souhaitez simplement séparer les retouches -de la musique elle-même@tie{}? Rien de plus facile. +retouches ? Ou si vous souhaitez simplement séparer les retouches +de la musique elle-même ? Rien de plus facile. Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas les parties avec tous les @code{#()}. Celles-ci sont expliquées dans @@ -3822,39 +3911,35 @@ inst = } @end lilypond -Il y a quelques problèmes de chevauchement@tie{}; nous allons arranger -cela en utilisant les techniques de @ref{Déplacement d'objets}. On peut -aussi faire quelque chose pour les définitions de @code{mpdolce} +On peut faire quelque chose pour les définitions de @code{mpdolce} et @code{inst}. Elles produisent le résultat que nous désirons, mais nous pourrions aussi vouloir les utiliser dans une autre pièce. Il suffirait de les copier et coller au début de chaque fichier, mais c'est fastidieux. De plus, cela laisse les définitions dans nos fichiers de musique, et je trouve personnellement tous ces -@code{#()} assez laids. Stockons-les dans un autre fichier@tie{}: +@code{#()} assez laids. Stockons-les dans un autre fichier : @example %%% enregistrez ceci dans un fichier nommé "definitions.ily" mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) @end example Nous rappellerons ce fichier par une simple commande @code{\include} au début de notre fichier de musique. Lui attribuer l'extension @code{.ily} nous permet de distinguer aisément qu'il s'agit d'un fichier -voué à être inclus dans un fichier maître@tie{}; il n'est pas destiné à +voué à être inclus dans un fichier maître ; il n'est pas destiné à être compilé isolément.@* Maintenant, modifions notre musique (enregistrez ce fichier sous @file{musique.ly}). @@ -3878,19 +3963,17 @@ sous @file{musique.ly}). @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3911,25 +3994,23 @@ chiffrages de mesure en @qq{C}, nous allons donc le transformer en @qq{4/4}. Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le -fichier @file{definitions.ily} par ceci@tie{}: +fichier @file{definitions.ily} par ceci : @example %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) \layout@{ \context @{ @@ -3952,19 +4033,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \layout{ \context { @@ -3993,7 +4072,7 @@ inst = } @end lilypond -C'est encore mieux@tie{}! Mais supposons maintenant que je veuille +C'est encore mieux ! Mais supposons maintenant que je veuille publier cette pièce. Mon professeur de composition n'aime pas les chiffrages de mesure en @qq{C}, mais moi je les aime bien. Copions l'actuel @file{definitions.ily} dans le fichier @@ -4005,19 +4084,17 @@ aussi augmenter la taille globale de police. %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) #(set-global-staff-size 23) @@ -4041,19 +4118,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) #(set-global-staff-size 23) @@ -4079,8 +4154,8 @@ inst = @end lilypond Il ne nous reste plus qu'à remplacer -@code{\include@tie{}"definitions.ily"} par -@code{\include@tie{}"publication-web.ily"} dans notre fichier de +@code{\include "definitions.ily"} par +@code{\include "publication-web.ily"} dans notre fichier de musique. Il est possible, bien sûr, de rendre cela encore plus pratique. Nous @@ -4103,8 +4178,8 @@ alors à Cette approche peut être utile même si vous ne produisez qu'un seul jeu de partitions. J'utilise personnellement une demi-douzaine de fichiers de @qq{feuille de style} pour mes projets. Je commence -chaque fichier de musique par @code{\include@tie{}"../global.ily"} qui -contient@tie{}: +chaque fichier de musique par @code{\include "../global.ily"} qui +contient : @example %%% global.ily @@ -4131,7 +4206,7 @@ L'emplacement du répertoire dépend (a) du fait que, pour vous procurer LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org, ou vous l'avez installé grâce à votre gestionnaire de paquetages (c'est-à-dire distribué avec Linux ou installé avec fink ou cygwin), ou -encore vous l'avez compilé directement à partir des sources@tie{}; et +encore vous l'avez compilé directement à partir des sources ; et (b) du système d'exploitation sur lequel il tourne. @strong{Téléchargé depuis lilypond.org} @@ -4139,20 +4214,27 @@ encore vous l'avez compilé directement à partir des sources@tie{}; et @itemize @bullet @item Linux +@example @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/} +@end example @item MacOS X +@example @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/} -Pour accéder à ce dossier, deux possibilités@tie{}: soit, dans un -Terminal, taper @code{cd} suivi du chemin complet ci-dessus@tie{}; soit +@end example + +Pour accéder à ce dossier, deux possibilités : soit, dans un +Terminal, taper @code{cd} suivi du chemin complet ci-dessus ; soit Control-cliquer (ou clic droit) sur l'application LilyPond et sélectionner @qq{Afficher le contenu du paquet}. @item Windows Dans l'Explorateur Windows, voir +@example @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/} +@end example @end itemize @@ -4167,7 +4249,7 @@ LilyPond. @smallspace Dans ce répertoire, deux sous-répertoires sont particulièrement -intéressants@tie{}: +intéressants : @itemize @item @code{ly/} -- contient les fichiers en format LilyPond @@ -4182,7 +4264,7 @@ les commandes standard prédéfinies de LilyPond, comme @code{\stemUp} et @code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre que des définitions de variables composées d'un ou plusieurs groupes de commandes @code{\override}. Par exemple, @code{\tieDotted} -est défini comme@tie{}: +est défini comme : @example tieDotted = @{ @@ -4195,7 +4277,7 @@ Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies peuvent être facilement redéfinies, comme n'importe quelle autre variable, en tête de votre fichier d'entrée. -Voici les fichiers les plus utiles dans le répertoire @file{ly/}@tie{}: +Voici les fichiers les plus utiles dans le répertoire @file{ly/} : @multitable @columnfractions .4 .6 @headitem Nom de fichier @@ -4221,16 +4303,16 @@ requièrent la connaissance du langage Scheme. Les utilisateurs qui souhaiteraient comprendre le fonctionnement de ces fichiers de configuration doivent être avertis que des connaissances techniques substantielles et beaucoup de temps sont nécessaires (voir le -@rextendnamed{Scheme tutorial,Tutoriel Scheme}). +@rextend{Tutoriel Scheme}). Si c'est votre cas, les fichiers Scheme les plus utiles à connaître -sont@tie{}: +sont : @multitable @columnfractions .4 .6 @headitem Nom de fichier @tab Contenu @item @file{scm/auto-beam.scm} - @tab Régles par défaut des ligatures subalternes + @tab Règles par défaut des ligatures subalternes @item @file{scm/define-grobs.scm} @tab Réglages par défaut des propriétés de @emph{grobs} @item @file{scm/define-markup-commands.scm} @@ -4239,47 +4321,14 @@ sont@tie{}: @tab Réglages par défaut pour les sorties MIDI @item @file{scm/output-lib.scm} @tab Réglages affectant l'apparence des frets, couleurs, altérations, - barres de mesure, etc. + barres de mesure etc. @item @file{scm/parser-clef.scm} - @tab Définition des clefs prises en charge + @tab Définition des clefs prises en charge @item @file{scm/script.scm} - @tab Réglages par défaut des articulations + @tab Réglages par défaut des articulations @end multitable - -@node Options ralentissant le traitement -@subsection Options ralentissant le traitement -@translationof Avoiding tweaks with slower processing - -LilyPond peut effectuer des vérifications supplémentaires lors du -traitement des fichiers@tie{}; cependant, le rendu nécessitera alors -plus de temps. En contrepartie, il y aura moins d'ajustements manuels à -réaliser. Si une indication textuelle ou des paroles débordent dans la -marge, ces vérifications auront pour effet de resserrer la ligne -suffisamment pour faire tenir le texte entre les marges. - -Pour pouvoir fonctionner en toutes circonstances, ces vérifications -doivent être activées@tie{}; il faut pour cela placer les retouches dans -un @code{\context} à l'intérieur d'un bloc @code{\layout}, plutôt que -directement dans le fragment musical, comme ceci@tie{}: - -@example -\score @{ - @{ @dots{}notes@dots{} @} - \layout @{ - \context @{ - \Score - % Pour s'assurer que les indications textuelles et paroles - % seront à l'intérieur des marges de la page. - \override PaperColumn #'keep-inside-line = ##t - \override NonMusicalPaperColumn #'keep-inside-line = ##t - @} - @} -@} -@end example - - @node Retouches avancées avec Scheme @subsection Retouches avancées avec Scheme @translationof Advanced tweaks with Scheme @@ -4292,7 +4341,7 @@ Le code écrit dans le langage de programmation Scheme peut être intégré directement dans le processus interne de LilyPond. Bien sûr, il faut pour cela connaître un minimum de programmation en langage Scheme. Pour des explications complètes là-dessus, consultez le -@rextendnamed{Scheme tutorial,Tutoriel Scheme}. +@rextend{Tutoriel Scheme}. En guise d'illustration -- et ce n'est qu'une possibilité parmi tant d'autres -- nous allons attribuer à une propriété non pas une valeur @@ -4303,7 +4352,7 @@ procédure. Dans cet exemple, nous colorons les têtes de notes en fonction de leur position sur la portée. -@cindex x11-color, exemple d'utilisaation de la fonction +@cindex x11-color, exemple d'utilisation de la fonction @cindex NoteHead, exemple de dérogation @cindex color, détermination de la propriété par une procédure Scheme @@ -4330,7 +4379,6 @@ fonction de leur position sur la portée. } @end lilypond -Vous trouverez dans @rextendnamed{Callback functions,les fonctions -callback} d'autres exemples d'utilisation de ces interfaces -programmables. +Vous trouverez dans @rextend{Fonctions de rappel} d'autres exemples +d'utilisation de ces interfaces programmables. diff --git a/Documentation/fr/macros.itexi b/Documentation/fr/macros.itexi index cf72b0e0fd..698fe20845 100644 --- a/Documentation/fr/macros.itexi +++ b/Documentation/fr/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 1edbbc7f5a6ad81f24421470f81786fc614d1c96 + Translation of GIT committish: e389a98ed32c929cb091453d9ec2856350cfb300 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -780,7 +780,7 @@ Pour LilyPond version @version{} @end html @iftex -@image{examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/fr/notation.tely b/Documentation/fr/notation.tely index 0018eac716..105b1fde2d 100644 --- a/Documentation/fr/notation.tely +++ b/Documentation/fr/notation.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 957ee70b1613ce33157486a1372827e7c1c9274f When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -21,7 +21,7 @@ présenté dans le @rlearningnamed{Top, Manuel d'initiation}. @c `Notation Reference' was born 1999-10-11 with git commit 940dda0... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 par les auteurs. +Copyright @copyright{} 1999--2012 par les auteurs. @end macro @set FDL diff --git a/Documentation/fr/notation/ancient.itely b/Documentation/fr/notation/ancient.itely index f62408459b..f50530a477 100644 --- a/Documentation/fr/notation/ancient.itely +++ b/Documentation/fr/notation/ancient.itely @@ -1,7 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 1b832d794f1444033f10465971e97d33f76fe310 + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -9,7 +8,7 @@ @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @@ -17,19 +16,7 @@ @section Notations anciennes @translationof Ancient notation -@menu -* Introduction aux notations anciennes:: -* Signes de note alternatifs:: -* Signes de note supplémentaires:: -* Contextes prédéfinis:: -* Transcription de musique mensurale:: -* Notation éditoriale:: -@end menu - -@node Introduction aux notations anciennes -@subsection Introduction aux notations anciennes -@translationof Introduction to ancient notation - +@lilypondfile[quote]{ancient-headword.ly} @cindex Vaticana, Editio @cindex Medicaea, Editio @@ -37,39 +24,36 @@ @cindex Petrucci @cindex mensural -La gestion par LilyPond des formes de notation ancienne inclut des -fonctionnalités spécifiques à la notation mensurale et au chant -grégorien. La basse chiffrée est également partiellement prise en -charge. - -De nombreux objets graphiques --- @qq{grobs} dans le jargon de LilyPond ---- disposent d'une propriété @code{style}, comme nous le verrons dans -@itemize @bullet -@item -@ref{Têtes de note anciennes}, -@item -@ref{Altérations anciennes}, -@item -@ref{Silences anciens}, -@item -@ref{Clefs anciennes}, -@item -@ref{Crochets anciens}, -@item -@ref{Métriques anciennes}. -@end itemize - -Manipuler cette propriété permet d'adapter l'aspect typographique des -grobs à une forme de notation particulière, ce qui évite la création de -nouveaux concepts de notation. - -En plus des signes d'articulation standards décrits à la section -@ref{Articulations et ornements}, la notation ancienne dispose de signes -particuliers. +@menu +* Formes de notation ancienne prises en charge:: +* Considérations communes aux musiques anciennes:: +* Typographie de musique ancienne:: +* Typographie du chant grégorien:: +* Typographie de notation kiévienne:: +* Réédition de musique ancienne:: +@end menu -@itemize @bullet -@item -@ref{Articulations anciennes} +La gestion par LilyPond des formes de notation ancienne inclut des +fonctionnalités spécifiques à la notation mensurale, au chant +grégorien et à la notation de style Kievan. Ces fonctionnalités sont +accessibles en modifiant les propriétés de style des objets graphiques +tels que tête de note ou silence, ou bien grâce aux contextes prédéfinis +à cet effet. + +De nombreux objets graphiques -- « grobs » dans le jargon de LilyPond +-- disposent d'une propriété @code{style}. Manipuler cette propriété +permet d'adapter l'aspect typographique des @emph{grobs} à une forme de +notation particulière, ce qui évite la création de nouveaux concepts de +notation. Voir à ce sujet + +@itemize +@item @ref{Têtes de note anciennes}, +@item @ref{Altérations et armures anciennes}, +@item @ref{Silences anciens}, +@item @ref{Clefs anciennes}, +@item @ref{Clefs grégoriennes}, +@item @ref{Crochets anciens}, +@item @ref{Métriques anciennes}. @end itemize D'autres aspects de la notation ancienne ne peuvent pas être gérés @@ -77,231 +61,379 @@ aussi simplement qu'en jouant sur les propriétés d'un style appliqué à un objet graphique ou en lui ajoutant des articulations. Certains concepts sont spécifiques à la notation ancienne. -@itemize @bullet -@item +@itemize +@item @ref{Guidons}, +@item @ref{Divisions}, +@item @ref{Ligatures}. +@end itemize + +@seealso +Glossaire musicologique : +@rglos{custos}, +@rglos{ligature}, +@rglos{mensural notation}. + +Manuel de notation : +@ref{Têtes de note anciennes}, +@ref{Altérations et armures anciennes}, +@ref{Silences anciens}, +@ref{Clefs grégoriennes}, +@ref{Crochets anciens}, +@ref{Métriques anciennes}, @ref{Guidons}, -@item @ref{Divisions}, -@item @ref{Ligatures}. -@end itemize -Si tout cela vous dépasse et que vous désirez plonger dans le vif du -sujet sans trop vous préoccuper d'ajuster des contextes, consultez les -pages dédiées aux contextes prédéfinis. Ils vous permettront d'adapter -vos contextes de voix et de portée, et vous n'aurez plus qu'à saisir les -notes. -@itemize @bullet -@item -@ref{Contextes du chant grégorien}, -@item -@ref{Les contextes de la musique mensurale}. -@end itemize +@node Formes de notation ancienne prises en charge +@unnumberedsubsubsec Formes de notation ancienne prises en charge +@translationof Overview of the supported styles -LilyPond gère partiellement la représentation de basses chiffrées, -typiques de l'époque baroque, mais également employées de nos jours en -harmonie et en analyse. +En matière de chant grégorien, LilyPond dispose de trois différents +styles : -@itemize @bullet -@item -@ref{Basse chiffrée} +@itemize +@item @emph{Editio Vaticana} constitue un style à part entière dédié au +chant grégorien, le plus approchant possible des éditions de Solesmes, +éditeur officiel du Vatican depuis 1904. LilyPond dispose de tous les +signes de notation propres à ce style, y compris les ligatures, custodes +et certaines spécificités comme le quilisma et l'oriscus. + +@cindex Solesmes +@cindex Vaticana, Editio + +@item @emph{Editio Medicaea} dispose d'un certain nombre de +spécificités des éditions qui faisaient autorité avant Solesmes. On +le connaît aussi sous le nom de Ratisbone. Ce qui le distingue le +plus du style @emph{Vaticana} réside dans les clefs, en forme de barres +obliques, et les têtes de note, plus carrées et régulières. + +@cindex Ratisbona, Editio +@cindex Medicaea, Editio + +@item Le style @emph{Hufnagel} (« clou de fer à cheval ») ou +@emph{gothique} imite le style des manuscrits médiévaux d'Allemagne et +d'Europe centrale. Il tire son nom de l'allure des notes (en virgule ou +@emph{virga}) qui ressemblent à des têtes de clou. + +@cindex hufnagel @end itemize -Voici les points que nous allons aborder@tie{}: +LilyPond dispose de trois styles imitant les manuscrits du Bas Moyen Âge +et de la Renaissance ainsi que les premières impressions de musique +mesurée. +@itemize +@item Le style @emph{Mensural} est celui qui se rapproche le plus des +manuscrits de la période allant de la fin du Moyen Âge au début de la +Renaissance, avec ses petites têtes de note en forme de losange étroit +et ses silences comme dessinés à main levée. -@menu -* Formes de notation ancienne prises en charge:: -@end menu +@cindex mensural -@node Formes de notation ancienne prises en charge -@unnumberedsubsubsec Formes de notation ancienne prises en charge -@translationof Ancient notation supported +@item Le style @emph{Neomensural} est une version moderne et stylisée du +style mensural : les têtes de note sont un peu plus galbées et les +silences plus rectilignes. Ce style est tout à fait approprié à +l'incipit d'une transcription de musique ancienne. + +@cindex neomensural + +@item Le style @emph{Petrucci} tire son nom du fameux graveur vénitien +Ottaviano Petrucci (1466-1539), premier imprimeur à utiliser des +caractères amovibles pour la musique dans son édition du @emph{Harmonice +musices odhecaton} en 1501. Les têtes de notes de ce style sont plus +larges que pour les autres styles mensuraux. + +@cindex Petrucci + +@end itemize -@untranslated +Bien qu'il ne soient pas complets, les styles @emph{Baroque} et +@emph{Classical} diffèrent du style par défaut par quelques détails -- +certaines têtes de note pour le @emph{Baroque} et le soupir pour le +@emph{Classical}. +Seul le style mensural dispose de signes alternatifs couvrant tous les +aspects de la notation. Ainsi, les silences et les crochets sont +absents du style grégorien puisqu'ils ne sont pas utilisés dans la +notation du plain-chant ; le style Petrucci ne dispose en propre +d'aucun crochet ni d'altération. +Chacun des éléments de notation peut donc être modifié de manière +indépendante jusqu'à, pourquoi pas, utiliser dans une même partition des +crochet en @emph{Mensural}, des têtes de note de @emph{Petrucci}, des +silences du @emph{Classical} et des clefs du style @emph{Vaticana}. -@node Signes de note alternatifs -@subsection Signes de note alternatifs -@translationof Alternative note signs +@seealso +Glossaire musicologique : +@rglos{mensural notation}, +@rglos{flag}. -@untranslated +@node Considérations communes aux musiques anciennes +@subsection Considérations communes aux musiques anciennes +@translationof Ancient notation---common features @menu -* Têtes de note anciennes:: -* Altérations anciennes:: -* Silences anciens:: -* Clefs anciennes:: -* Crochets anciens:: -* Métriques anciennes:: +* Contextes prédéfinis:: +* Ligatures:: +* Guidons:: +* Prise en charge de la basse figurée:: @end menu -@node Têtes de note anciennes -@unnumberedsubsubsec Têtes de note anciennes -@translationof Ancient note heads -@cindex têtes de note, musique ancienne +@node Contextes prédéfinis +@unnumberedsubsubsec Contextes prédéfinis +@translationof Pre-defined contexts + +LilyPond dispose, en matière de musique ancienne et de grégorien, de +contextes prédéfinis. Ceux-ci contiennent tout ce qui est nécessaire à +la gestion d'une voix ou d'une portée selon le style adopté. Si tout +cela vous dépasse et que vous désirez plonger dans le vif du sujet sans +trop vous préoccuper d'ajuster des contextes, consultez les pages +dédiées aux contextes prédéfinis. Ils vous permettront d'adapter vos +contextes de voix et de portée, et vous n'aurez plus qu'à saisir les +notes dans un contexte @code{VaticanaVoice}, @code{VaticanaStaff}, +@code{MensuralVoice} ou @code{MensuralStaff}. Vous trouverez des +détails sur ces contextes aux rubriques + +@itemize +@item @ref{Contextes du chant grégorien}, +@item @ref{Contextes de musique mensurale}. +@end itemize -Pour de la musique ancienne, vous disposez de plusieurs styles de tête -de note, en plus du style par défaut @code{default}. Vous pouvez -affecter à la propriété @code{style} de l'objet @rinternals{NoteHead} -les valeurs @code{baroque}, @code{neomensural}, @code{mensural} ou -@code{petrucci}. En style @code{baroque}, la seule différence par -rapport au style @code{default} concerne la @code{\breve} qui sera -carrée et non pas ovoïde. Le style @code{neomensural} ajoute au -@code{baroque} le fait que les notes de durée inférieure ou égale à une -ronde sont en forme de losange, et les hampes centrées sur la tête. Ce -style est particulièrement adapté à la transcription de la musique -mesurée dans les incipits. Le style @code{mensural} permet de -reproduire les têtes de note telles qu'imprimées au XVIe siècle. Enfin, -le style @code{petrucci} imite des partitions historiques, bien qu'il -utilise de plus grosses têtes de note. - -L'exemple suivant illustre le style @code{neomensural}. +@seealso +Glossaire musicologique : +@rglos{mensural notation}. +Manuel de notation : +@ref{Contextes de musique mensurale}, +@ref{Contextes du chant grégorien}. -@lilypond[quote,fragment,ragged-right,verbatim] -\set Score.skipBars = ##t -\override NoteHead #'style = #'neomensural -a'\longa a'\breve a'1 a'2 a'4 a'8 a'16 -@end lilypond -Si vous écrivez en notation grégorienne, le -@rinternals{Vaticana_ligature_engraver} se chargera de sélectionner -les têtes de note appropriées@tie{}; il est donc inutile de spécifier le -style à utiliser. Vous pouvez cependant spécifier par exemple le style -@code{vaticana_punctum} pour obtenir des neumes punctums. De même, -c'est le @rinternals{Mensural_ligature_engraver} qui se chargera des -ligatures mensurales. Consultez la section @ref{Ligatures} pour savoir -comment fonctionnent les graveurs de ligature. +@node Ligatures +@unnumberedsubsubsec Ligatures +@translationof Ligatures + +@cindex ligature + +@c TODO: Should double check if I recalled things correctly when I wrote +@c down the following paragraph by heart. + +Une ligature est un symbole graphique qui représente un groupe d'au +moins deux notes distinctes. Les ligatures ont commencé à apparaître +dans les manuscrits de chant grégorien, pour indiquer des suites +ascendantes ou descendantes de notes. + +Les ligatures s'indiquent par un bornage entre @code{\[} et @code{\]}. +Certains styles de ligature peuvent demander un complément de syntaxe +spécifique. Par défaut, le graveur @code{LigatureBracket} place un +simple crochet au dessus de la ligature : + +@lilypond[quote,ragged-right,verbatim] +\transpose c c' { + \[ g c a f d' \] + a g f + \[ e f a g \] +} +@end lilypond +Deux autres styles de ligature sont accessibles : vatican pour le +grégorien et mensural pour la musique ancienne (seules sont disponibles +les ligatures mensurales blanches, avec quelques limitations). Selon le +style de ligature désiré, il faut remplacer, dans le contexte +@code{Voice} approprié, le graveur @code{Ligature_bracket_engraver} par +le graveur de ligature qui convient -- voir les rubriques +@ref{Ligatures mensurales} et @ref{Neumes et ligatures grégoriennes} à +ce sujet. @seealso +Glossaire musicologique : +@rglos{ligature}. + Manuel de notation : -@ref{Têtes de note}. +@ref{Ligatures mensurales}, +@ref{Neumes et ligatures grégoriennes}. + +@knownissues +La gestion de l'espacement spécifique aux ligatures n'est à ce jour +pas implémentée. En conséquence, les ligatures sont trop espacées les +unes des autres et les sauts de ligne mal ajustés. De plus, les +paroles ne s'alignent pas de manière satisfaisante en présence de ligatures. +Les altérations ne pouvant être imprimées à l'intérieur d'une +ligature, il faut les rassembler et les imprimer juste avant. +La syntaxe utilisée correspond à l'ancienne convention de préfixage +@code{\[ expression musicale\]}. Pour des raisons d'uniformité, +nous opterons probablement pour le style en suffixe (postfix) +@w{@code{note\[ @dots{} note\]}}. -@node Altérations anciennes -@unnumberedsubsubsec Altérations anciennes -@translationof Ancient accidentals +@c En attendant, vous pouvez inclure le fichier +@c @file{gregorian-init.ly}, qui fournit une fonction Scheme +@c @example +@c \ligature @var{music expr} +@c @end example +@c qui produit le même résultat, et dont la pérennité est assurée. -@cindex altérations +@c TODO: this does not seem to work at the moment. +@c -- eo -Pour utiliser les formes anciennes d'altération, utilisez la propriété -@code{glyph-name-alist} des objets graphiques @rinternals{Accidental} -et @rinternals{KeySignature}. +@node Guidons +@unnumberedsubsubsec Guidons +@translationof Custodes -@lilypond[quote,ragged-right,staffsize=26] +@cindex guidon +@cindex custos +@cindex custodes + +Un guidon --- @emph{custos}, pluriel @emph{custodes} en latin --- est un +symbole qui apparaît à la fin d'une portée. Il montre la hauteur de la +ou des premières notes de la portée suivante, donnant une indication +judicieuse à l'exécutant. + +Les guidons étaient couramment utilisés jusqu'au XVIIe siècle. De nos +jours, on les retrouve uniquement dans quelques formes particulières de +notation telles que les éditions contemporaines de chant grégorien comme +les @emph{editio vaticana}. Différents glyphes existent selon le style +de notation. + +L'impression de guidons s'obtient en affectant, dans un bloc +@code{\layout}, le @rinternals{Custos_engraver} au contexte +@code{Staff}, comme le montre l'exemple suivant. + +@lilypond[quote,ragged-right] \score { -{ - \textLengthOn - s^\markup { - \column { - "vaticana" - \line { " " \musicglyph #"accidentals.vaticana-1" - " " \musicglyph #"accidentals.vaticana0" } - } - \column { - "medicaea" - \line { " " \musicglyph #"accidentals.medicaea-1" } - } - \column { - "hufnagel" - \line { " " \musicglyph #"accidentals.hufnagel-1" } - } - \column { - "mensural" - \line { " " \musicglyph #"accidentals.mensural-1" - " " \musicglyph #"accidentals.mensural1" } - } + \relative c'' { + a1 + \break + g } -} -\layout { - interscoreline = 1 - \context { \Score \remove "Bar_number_engraver" } - \context { \Staff - \remove "Clef_engraver" - \remove "Key_engraver" - \remove "Time_signature_engraver" - \remove "Staff_symbol_engraver" - \override VerticalAxisGroup #'minimum-Y-extent = ##f + \layout { + \context { + \Staff + \consists Custos_engraver + \override Custos #'style = #'mensural } } } @end lilypond -Vous noterez que chacun de ces styles ne comporte pas toutes les -altérations. LilyPond changera de style s'il y a besoin d'une -altération indisponible dans le style utilisé. - -À l'instar des altérations accidentelles, le style d'armure est géré -par la propriété @code{glyph-name-alist} de l'objet -@rinternals{KeySignature}. +Le glyphe du guidon est déterminé par la propriété @code{style}. Les +styles disponibles sont @code{vaticana}, @code{medicaea}, +@code{hufnagel} et @code{mensural}. En voici un aperçu : +@lilypond[quote,ragged-right,fragment] +\new Lyrics \lyricmode { + \markup { \column { + \typewriter "vaticana " + \line { " " \musicglyph #"custodes.vaticana.u0" } + } } + \markup { \column { + \typewriter "medicaea " + \line { " " \musicglyph #"custodes.medicaea.u0" } + }} + \markup { \column { + \typewriter "hufnagel " + \line { " " \musicglyph #"custodes.hufnagel.u0" } + }} + \markup { \column { + \typewriter "mensural " + \line { " " \musicglyph #"custodes.mensural.u0" } + }} +} +@end lilypond @seealso -Manuel de notation: -@ref{Hauteurs}, -@ref{Altérations}, -@ref{Altérations accidentelles automatiques}, -@c r ef{Armure}. +Glossaire musicologique : +@rglos{custos}. Référence des propriétés internes : -@rinternals{KeySignature}. +@rinternals{Custos}. Morceaux choisis : -@rlsrnamed{Ancient notation,Notations anciennes}. +@rlsrnamed{Ancient notation, Musiques anciennes}. -@node Silences anciens -@unnumberedsubsubsec Silences anciens -@translationof Ancient rests +@node Prise en charge de la basse figurée +@unnumberedsubsubsec Prise en charge de la basse figurée +@translationof Figured bass support -@cindex silences, musique ancienne +LilyPond gère partiellement la représentation de basses chiffrées, +typiques de l'époque baroque, mais également employées de nos jours en +harmonie et en analyse -- voir la rubrique @ref{Basse chiffrée}. -La propriété @code{style} de l'objet @rinternals{Rest} permet -d'obtenir des silences de type ancien. Vous disposez des styles -@code{classical}, @code{neomensural} et @code{mensural}. Le style -@code{classical} ne se distingue du style @code{default} que par le -soupir (demi-soupir en miroir). Le style @code{neomensural} convient -tout à fait à l'incipit lors de la transcription de musique mensurale. -Le style @code{mensural}, enfin, imite la gravure des silences dans -certaines éditions du XVIe siècle. +@seealso +Glossaire musicologique : +@rglosnamed{figured bass,Basse figurée}. -L'exemple suivant illustre le style @code{neomensural}. +Manuel de notation : +@ref{Basse chiffrée}. + + +@node Typographie de musique ancienne +@subsection Typographie de musique ancienne +@translationof Typesetting mensural music + +@menu +* Contextes de musique mensurale:: +* Clefs anciennes:: +* Métriques anciennes:: +* Têtes de note anciennes:: +* Crochets anciens:: +* Silences anciens:: +* Altérations et armures anciennes:: +* Altérations suggérées (musica ficta):: +* Ligatures mensurales:: +@end menu -@lilypond[quote,fragment,ragged-right,verbatim] -\set Score.skipBars = ##t -\override Rest #'style = #'neomensural -r\longa r\breve r1 r2 r4 r8 r16 -@end lilypond -Les styles @code{mensural} et @code{neomensural} ne disposent pas des 8e -et 16e de soupir@tie{}; LilyPond utilise dans de tels cas le style par -défaut. Voici une liste des styles de silences disponibles. +@node Contextes de musique mensurale +@unnumberedsubsubsec Contextes de musique mensurale +@translationof Mensural contexts -@lilypondfile[quote,verbatim,ragged-right]{rest-styles.ly} +@cindex MensuralVoiceContext +@cindex MensuralStaffContext -Les silences sont absents de la notation grégorienne@tie{}; par contre, -cette notation utilise des @ref{Divisions}. +Les contextes @code{MensuralVoice} et @code{MensuralStaff} permettent de +graver des chants dans le style mesuré. Ces contextes initialisent les +propriétés de tous les autres contextes et objets graphiques à des +valeurs adéquates, de telle sorte que vous pouvez tout de suite vous +lancer dans la saisie de votre chant comme ci-après : +@lilypond[quote,ragged-right,verbatim] +\score { + << + \new MensuralVoice = "discantus" \transpose c c' { + \override Score.BarNumber #'transparent = ##t { + c'1\melisma bes a g\melismaEnd + f\breve + \[ f1\melisma a c'\breve d'\melismaEnd \] + c'\longa + c'\breve\melisma a1 g1\melismaEnd + fis\longa^\signumcongruentiae + } + } + \new Lyrics \lyricsto "discantus" { + San -- ctus, San -- ctus, San -- ctus + } + >> +} +@end lilypond @seealso -Manuel de notation : les principes généraux sur l'utilisation des silences -sont exposés dans @ref{Silences}. +Glossaire musicologique : +@rglos{mensural notation}. @node Clefs anciennes @unnumberedsubsubsec Clefs anciennes -@translationof Ancient clefs +@translationof Mensural clefs @cindex clefs @cindex clés +@cindex anciennes, clefs Avec LilyPond, de nombreuses clés sont disponibles, dont certaines sont dédiées à la musique ancienne. @@ -312,286 +444,135 @@ clés utilisent le même glyphe, attaché à l'une ou l'autre des lignes de la portée. Le chiffre porté en suffixe permet alors de les différencier. Vous pouvez néanmoins forcer le positionnement du glyphe sur une ligne, comme expliqué à la section @ref{Clefs}. Dans la -colonne exemple, la note suivant la clé montre le do médium. +colonne exemple, la note suivant la clé est un do médium. + +Les clés d'ut de Petrucci avaient une hampe gauche différente selon +leur ligne de rattachement. @multitable @columnfractions .4 .4 .2 @item @b{Description} @tab -@b{Clé disponible} +@b{Clef disponible} @tab @b{Exemple} @item -Clé d'ut, style mensural moderne +Clef d'ut, style mensural historique @tab -@code{neomensural-c1}, @code{neomensural-c2},@* -@code{neomensural-c3}, @code{neomensural-c4} +@code{mensural-c1}, @code{mensural-c2},@* +@code{mensural-c3}, @code{mensural-c4} @tab -@lilypond[fragment,relative=1,notime] - \clef "neomensural-c2" c +@lilypond[relative=1,notime] + \clef "mensural-c2" + \override NoteHead #'style = #'mensural + c @end lilypond @item -Clé d'ut, style mensural Petrucci, positionnable sur différentes -lignes (clé d'ut seconde pour l'exemple) +Clef de fa, style mensural historique @tab -@code{petrucci-c1}, @code{petrucci-c2},@* -@code{petrucci-c3}, @code{petrucci-c4},@* -@code{petrucci-c5} +@code{mensural-f} @tab -@lilypond[fragment,relative=1,notime] - \clef "petrucci-c2" +@lilypond[relative=1,notime] + \clef "mensural-f" \override NoteHead #'style = #'mensural c @end lilypond @item -Clé de fa, style mensural Petrucci +Clef de sol, style mensural historique @tab -@code{petrucci-f} +@code{mensural-g} @tab -@lilypond[fragment,relative=1,notime] - \clef "petrucci-f" +@lilypond[relative=1,notime] + \clef "mensural-g" \override NoteHead #'style = #'mensural c @end lilypond @item -Clé de sol, style mensural Petrucci +Clef d'ut, style mensural moderne @tab -@code{petrucci-g} +@code{neomensural-c1}, @code{neomensural-c2},@* +@code{neomensural-c3}, @code{neomensural-c4} @tab -@lilypond[fragment,relative=1,notime] - \clef "petrucci-g" - \override NoteHead #'style = #'mensural - c +@lilypond[relative=1,notime] + \clef "neomensural-c2" c @end lilypond @item -Clé d'ut, style mensural historique -@tab -@code{mensural-c1}, @code{mensural-c2},@* -@code{mensural-c3}, @code{mensural-c4} +Clef d'ut, style mensural Petrucci, positionnable sur différentes +lignes (clef d'ut seconde pour l'exemple) @tab -@lilypond[fragment,relative=1,notime] - \clef "mensural-c2" - \override NoteHead #'style = #'mensural - c -@end lilypond - -@item -Clé de fa, style mensural historique -@tab -@code{mensural-f} +@code{petrucci-c1}, @code{petrucci-c2},@* +@code{petrucci-c3}, @code{petrucci-c4},@* +@code{petrucci-c5} @tab -@lilypond[fragment,relative=1,notime] - \clef "mensural-f" +@lilypond[relative=1,notime] + \clef "petrucci-c2" \override NoteHead #'style = #'mensural c @end lilypond @item -Clé de sol, style mensural historique +Clef de fa, style mensural Petrucci, positionnable sur différentes +lignes (clef de fa troisième pour l'exemple) @tab -@code{mensural-g} +@code{petrucci-f3}, @code{petrucci-f4},@* +@code{petrucci-f5} @tab -@lilypond[fragment,relative=1,notime] - \clef "mensural-g" +@lilypond[relative=1,notime] + \clef "petrucci-f3" \override NoteHead #'style = #'mensural c @end lilypond @item -Clé d'ut, style Editio Vaticana -@tab -@code{vaticana-do1}, @code{vaticana-do2},@* -@code{vaticana-do3} -@tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'line-count = #4 - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'vaticana.punctum - \clef "vaticana-do2" - c -@end lilypond - -@item -Clé de fa, style Editio Vaticana -@tab -@code{vaticana-fa1}, @code{vaticana-fa2} -@tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'line-count = #4 - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'vaticana.punctum - \clef "vaticana-fa2" - c -@end lilypond - -@item -Clé d'ut, style Editio Medicaea -@tab -@code{medicaea-do1}, @code{medicaea-do2},@* -@code{medicaea-do3} -@tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'line-count = #4 - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'medicaea.punctum - \clef "medicaea-do2" - c -@end lilypond - -@item -Clé de fa, style Editio Medicaea -@tab -@code{medicaea-fa1}, @code{medicaea-fa2} -@tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'line-count = #4 - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'medicaea.punctum - \clef "medicaea-fa2" - c -@end lilypond - -@item -Clé d'ut, style historique Hufnagel -@tab -@code{hufnagel-do1}, @code{hufnagel-do2},@* -@code{hufnagel-do3} -@tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'line-count = #4 - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'hufnagel.punctum - \clef "hufnagel-do2" - c -@end lilypond - -@item -Clé de fa, style historique Hufnagel -@tab -@code{hufnagel-fa1}, @code{hufnagel-fa2} -@tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'line-count = #4 - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'hufnagel.punctum - \clef "hufnagel-fa2" - c -@end lilypond - -@item -Clé combinée ut/fa, style historique Hufnagel +Clef de sol, style mensural Petrucci @tab -@code{hufnagel-do-fa} +@code{petrucci-g} @tab -@lilypond[fragment,relative=1,notime] - \override Staff.StaffSymbol #'color = #red - \override Staff.LedgerLineSpanner #'color = #red - \override Voice.Stem #'transparent = ##t - \override NoteHead #'style = #'hufnagel.punctum - \clef "hufnagel-do-fa" +@lilypond[relative=1,notime] + \clef "petrucci-g" + \override NoteHead #'style = #'mensural c @end lilypond @end multitable - - @emph{Moderne} signifie @qq{gravé comme dans les transcriptions contemporaines de musique mesurée.} @emph{Petrucci} signifie @qq{inspiré des éditions réalisées par le -maître graveur vénitien Petrucci (1466-1539).} +maître graveur Petrucci (1466-1539).} @emph{Historique} signifie @qq{gravé comme dans les éditions historiques, manuscrites ou non, autres que celles de Petrucci.} -@emph{Editio XXX} signifie @qq{gravé comme dans les ouvrages estampillés -Editio XXX.} - -Les clés d'ut de Petrucci avaient une hampe gauche différente selon -leur ligne de rattachement. - - @seealso +Glossaire musicologique : +@rglos{mensural notation}, +@rglos{clef}. + Manuel de notation : @ref{Clefs}. - -@knownissues - -La clé de sol mensurale est calquée sur celle de Petrucci. - - - -@node Crochets anciens -@unnumberedsubsubsec Crochets anciens -@translationof Ancient flags - -@cindex crochets - -Le réglage de la propriété @code{flag-style} de l'objet hampe -(@rinternals{Stem}) donne accès aux crochets de style ancien. Les -seuls styles actuellement pris en charge sont @code{default} et -@code{mensural}. - -@lilypond[quote,fragment,ragged-right,verbatim] -\override Stem #'flag-style = #'mensural -\override Stem #'thickness = #1.0 -\override NoteHead #'style = #'mensural -\autoBeamOff -c'8 d'8 e'8 f'8 c'16 d'16 e'16 f'16 c'32 d'32 e'32 f'32 s8 -c''8 d''8 e''8 f''8 c''16 d''16 e''16 f''16 c''32 d''32 e''32 f''32 -@end lilypond - -Notez que pour chaque crochet mensural, l'extrémité la plus proche de -la tête de note sera toujours attachée à une ligne de la portée. - -Il n'existe pas de crochet spécifique au style néo-mensural. Nous vous -conseillons donc, lorsque vous réalisez l'incipit d'une transcription, -d'utiliser le style par défaut. Les crochets n'existent pas en notation -grégorienne. - @knownissues - -Les crochets anciens s'attachent aux hampes avec un léger décalage, -suite à des modifications intervenues au début de la série 2.3. - -L'alignement vertical des crochets par rapport aux lignes de la portée -sous-entend que les hampes se terminent toujours soit sur une ligne, -soit à l'exact milieu d'un interligne. Ceci n'est pas toujours -réalisable, surtout si vous faites appel à des fonctionnalités avancées -de présentation de la notation classique, qui, par définition, ne sont -pas prévues pour être appliquées à la notation mensurale. - +La clef de sol mensurale est calquée sur celle de Petrucci. @node Métriques anciennes @unnumberedsubsubsec Métriques anciennes -@translationof Ancient time signatures +@translationof Mensural time signatures -@cindex métrique +@cindex ancienne, métrique Les chiffrages de métrique mensurale sont partiellement pris en charge. Les glyphes ne font que représenter des métriques particulières. En d'autres termes, pour obtenir le glyphe correspondant à une métrique -mensurale particulière à l'aide de la commande @code{\time n/m}, vous -devez choisir la paire @code{(n,m)} parmi les valeurs suivantes@tie{}: +mensurale particulière à l'aide de la commande @code{\time n/m}, +vous devez choisir la paire @w{@code{(n,m)}} parmi les valeurs +suivantes : @lilypond[quote,ragged-right] \layout { @@ -638,16 +619,16 @@ devez choisir la paire @code{(n,m)} parmi les valeurs suivantes@tie{}: } @end lilypond -La propriété @code{style} de l'objet @rinternals{TimeSignature} permet +La propriété @code{style} de l'objet @code{TimeSignature} permet d'accéder aux indicateurs de métrique anciens. Les styles @code{neomensural} et @code{mensural} sont disponibles. Vous avez vu ci-dessus le style @code{neomensural}, particulièrement utilisé pour l'incipit des transcriptions. Le style @code{mensural} imite l'aspect de certaines éditions du XVIe siècle. -Voici les différences entre les styles@tie{}: +Voici les différences entre les styles : -@lilypond[ragged-right,fragment,relative=1,quote] +@lilypond[ragged-right,relative=1,quote] { \textLengthOn @@ -671,18 +652,21 @@ Voici les différences entre les styles@tie{}: } @end lilypond +La rubrique @ref{Métrique} expose les principes généraux sur +l'utilisation des indications de métrique. @seealso -Dans ce manuel : @ref{Métrique} expose les principes généraux sur -l'utilisation des indications de métrique. +Glossaire musicologique : +@rglos{mensural notation}. +Manuel de notation : +@ref{Métrique}. @knownissues - Les équivalences de durées de note ne sont pas modifiées par un changement de métrique. Par exemple, l'équivalence 1 brève pour 3 semi-brèves (@emph{tempus perfectum}) doit s'effectuer à la main en -entrant@tie{}: +entrant : @example breveTP = #(ly:make-duration -1 0 3 2) @@ -693,145 +677,661 @@ breveTP = #(ly:make-duration -1 0 3 2) @noindent Ce qui définira @code{breveTP} à 3/2 fois 2 = 3 fois une ronde. -Le symbole @code{old6/8alt} --- symbole alternatif pour la métrique 6/8 --- ne peut être utilisé grâce à une commande @code{\time}. Utilisez -plutôt un @code{\markup}. +Les symboles @code{mensural68alt} et @code{neomensural68alt} -- +alternatives à la métrique 6/8 -- ne sont pas accessibles par la +commande @code{\time}. Utilisez alors un +@code{\markup @{\musicglyph #"timesig.mensural68alt" @}}. +@node Têtes de note anciennes +@unnumberedsubsubsec Têtes de note anciennes +@translationof Mensural note heads -@node Signes de note supplémentaires -@subsection Signes de note supplémentaires -@translationof Additional note signs - -@untranslated +@cindex note, têtes anciennes +@cindex anciennes têtes de note +Pour de la musique ancienne, vous disposez de plusieurs styles de tête +de note, en plus du style par défaut @code{default}. Vous pouvez +affecter à la propriété @code{style} de l'objet @code{NoteHead} +les valeurs @code{baroque}, @code{neomensural}, @code{mensural}, +@code{petrucci}, @code{blackpetrucci} ou @code{semipetrucci}. -@menu -* Articulations anciennes:: -* Guidons:: -* Divisions:: -* Ligatures:: -* Ligatures mensurales:: -* Neumes ligaturés grégoriens:: -@end menu +Le style @code{baroque} diffère du style @code{default} par -@node Articulations anciennes -@unnumberedsubsubsec Articulations anciennes -@translationof Ancient articulations +@itemize +@item la disponibilité de la @code{maxima}, et +@item la @code{\breve} qui sera carrée et non pas ovoïde. +@end itemize -@cindex articulations +Les styles @code{neomensural}, @code{mensural} et @code{petrucci} +diffèrent du @code{baroque} par ceci : -En plus des signes d'articulation standards décrits à la section -@ref{Articulations et ornements}, LilyPond fournit des articulations -pour la musique ancienne. Elles sont spécifiquement destinées au style -Editio Vaticana. +@itemize +@item les notes de durée inférieure ou égale à une ronde sont en forme +de losange, et +@item les hampes sont centrées sur la tête. +@end itemize -@lilypond[quote,ragged-right,verbatim] -\include "gregorian.ly" -\score { - \new VaticanaVoice { - \override TextScript #'font-family = #'typewriter - \override TextScript #'font-shape = #'upright - \override Script #'padding = #-0.1 - a\ictus_"ictus" \break - a\circulus_"circulus" \break - a\semicirculus_"semicirculus" \break - a\accentus_"accentus" \break - \[ a_"episem" \episemInitium \pes b \flexa a b \episemFinis \flexa a \] - } -} -@end lilypond +Le style @code{blackpetrucci} permet d'obtenir, en notation mensurale +blanche, des têtes noircies. Cependant, et dans la mesure où le style +de tête n'influence en rien le nombre des crochets, une +@emph{semiminima} devrait alors se noter @code{a8*2} plutôt que +@code{a4}, de telle sorte qu'elle ne se confonde pas avec une +@emph{minima}. Le multiplicateur peut varier, pour indiquer par exemple +un triolet. -@knownissues +Le style @code{semipetrucci} permet de partiellement noircir certaines +têtes, comme la brève, la longue et la maxime. -Certaines articulations sont verticalement trop proches de leurs têtes -de note. +L'exemple suivant illustre le style @code{petrucci}. -Le trait d'un episem n'est bien souvent pas apparent et, lorsqu'il -l'est, son extension à droite est trop longue. +@c Renaissance music doesn't use bar lines ... but they do help to +@c separate the notes for easier identification. +@lilypond[quote,fragment,ragged-right,verbatim] +\set Score.skipBars = ##t +\autoBeamOff +\override NoteHead #'style = #'petrucci +a'\maxima a'\longa a'\breve a'1 a'2 a'4 a'8 a'16 a' +\override NoteHead #'style = #'semipetrucci +a'\breve*5/6 +\override NoteHead #'style = #'blackpetrucci +a'8*4/3 a' +\override NoteHead #'style = #'petrucci +a'\longa +@end lilypond -@node Guidons -@unnumberedsubsubsec Guidons -@translationof Custodes +La rubrique @ref{Têtes de note} présente tous les styles de notes +disponibles. -@cindex custos -@cindex custodes -@cindex guidon +@seealso +Glossaire musicologique : +@rglos{mensural notation}, +@rglos{note head}. -Un guidon --- @emph{custos}, pluriel @emph{custodes} en latin --- est un -symbole qui apparaît à la fin d'une portée. Il montre la hauteur de la -ou des premières notes de la portée suivante, donnant une indication -judicieuse à l'exécutant. +Manuel de notation : +@ref{Têtes de note}. -Les guidons étaient couramment utilisés jusqu'au XVIIe siècle. De nos -jours, on les retrouve uniquement dans quelques formes particulières de -notation telles que les éditions contemporaines de chant grégorien comme -les @emph{editio vaticana}. Différents glyphes existent selon le style -de notation. -L'impression de guidons s'obtient en affectant, dans un bloc -@code{\layout}, le @rinternals{Custos_engraver} au contexte -@code{Staff}, comme le montre l'exemple suivant. +@node Crochets anciens +@unnumberedsubsubsec Crochets anciens +@translationof Mensural flags -@example -\layout @{ - \context @{ - \Staff - \consists Custos_engraver - Custos \override #'style = #'mensural - @} -@} -@end example +@cindex crochets +@cindex ancien, crochet -Le résultat ressemblera à +Le réglage de la propriété @code{flag-style} de l'objet hampe +(@code{Stem}) donne accès aux crochets de style ancien. Les seuls +styles actuellement pris en charge sont @code{default} et +@code{mensural}. -@lilypond[quote,ragged-right] -\score { -{ - a'1 - \override Staff.Custos #'style = #'mensural - \break - g' -} -\layout { - \context { \Staff \consists Custos_engraver } - } -} +@lilypond[quote,fragment,ragged-right,verbatim] +\override Flag #'style = #'mensural +\override Stem #'thickness = #1.0 +\override NoteHead #'style = #'mensural +\autoBeamOff +c'8 d'8 e'8 f'8 c'16 d'16 e'16 f'16 c'32 d'32 e'32 f'32 s8 +c''8 d''8 e''8 f''8 c''16 d''16 e''16 f''16 c''32 d''32 e''32 f''32 @end lilypond -Le glyphe du guidon est déterminé par la propriété @code{style}. Les -styles disponibles sont @code{vaticana}, @code{medicaea}, -@code{hufnagel} et @code{mensural}. En voici un aperçu@tie{}: +Notez que, pour chaque crochet mensural, l'extrémité la plus proche de +la tête de note sera toujours attachée à une ligne de la portée. -@lilypond[quote,ragged-right,fragment] -\new Lyrics \lyricmode { - \markup { \column { - \typewriter "vaticana" - \line { " " \musicglyph #"custodes.vaticana.u0" } - } } - \markup { \column { - \typewriter "medicaea" - \line { " " \musicglyph #"custodes.medicaea.u0" } - }} - \markup { \column { - \typewriter "hufnagel" - \line { " " \musicglyph #"custodes.hufnagel.u0" } - }} - \markup { \column { - \typewriter "mensural" - \line { " " \musicglyph #"custodes.mensural.u0" } - }} -} -@end lilypond +Il n'existe pas de crochet spécifique au style néomensural. +@c Nous vous conseillons donc, lorsque vous réalisez l'incipit d'une +@c transcription, d'utiliser le style par défaut. +Les crochets n'existent pas en notation grégorienne. @seealso -Référence des propriétés internes : -@rinternals{Custos}. +Glossaire musicologique : +@rglos{mensural notation}, +@rglos{flag}. -Morceaux choisis : -@rlsrnamed{Ancient notation,Notations anciennes}. +@knownissues +Les crochets anciens s'attachent aux hampes avec un léger décalage. +@c suite à des modifications intervenues au début de la série 2.3. + +L'alignement vertical des crochets par rapport aux lignes de la portée +sous-entend que les hampes se terminent toujours soit sur une ligne, +soit à l'exact milieu d'un interligne. Ceci n'est pas toujours +réalisable, surtout si vous faites appel à des fonctionnalités avancées +de présentation de la notation classique qui, par définition, ne sont +pas prévues pour être appliquées à la notation mensurale. + + +@node Silences anciens +@unnumberedsubsubsec Silences anciens +@translationof Mensural rests + +@cindex anciens silences + +La propriété @code{style} de l'objet @code{Rest} permet d'obtenir des +silences de type ancien. Vous disposez des styles @code{classical}, +@code{neomensural} et @code{mensural}. Le style @code{classical} ne se +distingue du style @code{default} que par le soupir (demi-soupir en +miroir). Le style @code{neomensural} convient tout à fait à l'incipit +lors de la transcription de musique mensurale. Le style +@code{mensural}, enfin, imite la gravure des silences dans certaines +éditions du XVIe siècle. + +L'exemple suivant illustre les styles @code{mensural} et +@code{neomensural}. + +@lilypond[quote,fragment,ragged-right,verbatim] +\set Score.skipBars = ##t +\override Rest #'style = #'classical +r\longa^"classical" r\breve r1 r2 r4 r8 r16 s \break +\override Rest #'style = #'mensural +r\longa^"mensural" r\breve r1 r2 r4 r8 r16 s \break +\override Rest #'style = #'neomensural +r\longa^"neomensural" r\breve r1 r2 r4 r8 r16 +@end lilypond + +Les styles @code{mensural} et @code{neomensural} ne disposent pas des +huitième et seizième de soupir ; LilyPond utilise dans de tels cas +le style par défaut. + +@seealso +Glossaire musicologique : +@rglos{mensural notation}. + +Manuel de notation : +@ref{Silences}. + +Morceaux choisis : +@rlsrnamed{Ancient notation,Notations anciennes}. + +@knownissues +En style mensural, LilyPond utilise pour un silence correspondant à une +@emph{maxima}, le même glyphe que pour un @emph{longa} ; il faut +donc les multiplier pour obtenir la durée @emph{ad hoc}. Des silences +correspondant à une @emph{longa} ne sont pas groupés automatiquement ; +utilisez en pareil cas des @qq{notes silencieuses}. + + +@node Altérations et armures anciennes +@unnumberedsubsubsec Altérations et armures anciennes +@translationof Mensural accidentals and key signatures + +@cindex altération +@cindex armure +@cindex anciennes altérations + +Le style @code{mensural} dispose d'un dièse et d'un bémol différents du +style par défaut ; en cas de besoin, le bécarre sera emprunté au +style @code{vaticana}. + +@lilypond[quote,ragged-right,staffsize=26] +\markup { + \column { + "mensural" + \line { " " \musicglyph #"accidentals.mensural-1" + " " \musicglyph #"accidentals.mensural1" } + } +} +@end lilypond + +Pour disposer des formes anciennes d'altération, utilisez la propriété +@code{glyph-name-alist} des objets graphiques @code{Accidental} +et @code{KeySignature}, comme ceci : + +@example +\override Staff.Accidental #'glyph-name-alist = + #alteration-mensural-glyph-name-alist +@end example + +@seealso +Glossaire musicologique : +@rglos{mensural notation}, +@rglos{Pitch names}, +@rglos{accidental}, +@rglos{key signature}. + +Manuel de notation : +@ref{Hauteurs}, +@ref{Altérations}, +@ref{Altérations accidentelles automatiques}, +@ref{Armure}. + +Référence des propriétés internes : +@rinternals{KeySignature}. + + +@node Altérations suggérées (musica ficta) +@unnumberedsubsubsec Altérations suggérées (@emph{musica ficta}) +@translationof Annotational accidentals (musica ficta) + +Dans la pratique ancienne, avant le XVIIe siècle, les altérations +accidentelles de l’échelle modale n’étaient pas systématiquement notées +et il incombait aux chanteurs, en fonction de certaines règles, de +décider s’ils devaient chanter tel degré bémol, bécarre ou dièse. Cette +technique est appelée @notation{musica ficta}. Les transcriptions +modernes de telles œuvres font apparaître ces altérations en surplomb de +la note. + +@cindex altération et musica ficta +@cindex musica ficta +@cindex MensuralVoiceContext +@cindex MensuralStaffContext + +La reproduction de ces altérations suggérées est assurée par l'activation +de la fonction @code{suggestAccidentals}. + +@funindex suggestAccidentals + +@lilypond[verbatim,relative=1] +fis gis +\set suggestAccidentals = ##t +ais bis +@end lilypond + +Cette fonction considérera @strong{toute} altération comme étant de la +@emph{musica ficta}, ce tant qu'elle n'aura pas été désactivée par un +@code{\set suggestAccidentals = ##f}. Il est de ce fait plus pratique +de recourir à une clause @code{\once \set suggestAccidentals = ##t}, qui +peut tout à fait faire l'objet d'un raccourci : + +@lilypond[quote,verbatim] +ficta = { \once \set suggestAccidentals = ##t } +\score { \relative c'' + \new MensuralVoice { + \once \set suggestAccidentals = ##t + bes4 a2 g2 \ficta fis8 \ficta e! fis2 g1 + } +} +@end lilypond + +@seealso +Référence des propriétés internes : +@rinternals{Accidental_engraver}, +@rinternals{AccidentalSuggestion}. + + +@node Ligatures mensurales +@unnumberedsubsubsec Ligatures mensurales +@translationof White mensural ligatures + +@cindex ligatures anciennes +@cindex ligatures blanches +@cindex anciennes ligatures + +Les ligatures mensurales blanches sont prises en charge, avec des +limitations. + +La gravure des ligatures mensurales blanches s'obtient après avoir +remplacé, dans le contexte @code{Voice}, le +@code{Ligature_bracket_engraver} par le +@code{Mensural_ligature_engraver}, comme ici : + +@example +\layout @{ + \context @{ + \Voice + \remove Ligature_bracket_engraver + \consists Mensural_ligature_engraver + @} +@} +@end example + +Lorsque le code ci-dessus est employé, l'aspect d'une ligature mensurale +blanche est déterminé à partir des hauteurs et durées des notes qui la +composent. Bien que cela demande un temps d'adaptation au nouvel +utilisateur, cette méthode offre l'avantage que toute l'information +musicale incluse dans la ligature est connue en interne. Ceci est non +seulement important pour le rendu MIDI, mais aussi pour des questions de +transcription automatisée d'une ligature. + +Il se peut que deux notes consécutives puissent être représentées aussi +bien par deux carrées que par un parallélogramme oblique (en forme de +flexe). Par défaut, LilyPond présentera deux carrés ; l'impression +d'une flexe s'obtient par affectation, pour la @strong{deuxième} note, +de la propriété @code{ligature-flexa}. Le réglage de la longueur d'une +flexe se gère par la propriété de tête de note @code{flexa-width}. + +Par exemple, + +@c @example +@c \set Score.timing = ##f +@c \set Score.defaultBarType = "empty" +@c \override NoteHead #'style = #'neomensural +@c \override Staff.TimeSignature #'style = #'neomensural +@c \clef "petrucci-g" +@c \[ c'\maxima g \] +@c \[ d\longa c\breve f e d \] +@c \[ c'\maxima d'\longa \] +@c \[ e'1 a g\breve \] +@c @end example +@lilypond[quote,ragged-right,verbatim] +\score { + \transpose c c' { + \set Score.timing = ##f + \set Score.defaultBarType = "empty" + \override NoteHead #'style = #'petrucci + \override Staff.TimeSignature #'style = #'mensural + \clef "petrucci-g" + \[ c'\maxima g \] + \[ d\longa + \override NoteHead #'ligature-flexa = ##t + \once \override NoteHead #'flexa-width = #3.2 + c\breve f e d \] + \[ c'\maxima d'\longa \] + \[ e'1 a g\breve \] + } + \layout { + \context { + \Voice + \remove Ligature_bracket_engraver + \consists Mensural_ligature_engraver + } + } +} +@end lilypond + +Si on ne remplace pas le @code{Ligature_bracket_engraver} +par le @code{Mensural_ligature_engraver}, on obtient + +@lilypond[quote,ragged-right] +\transpose c c' { + \set Score.timing = ##f + \set Score.defaultBarType = "empty" + \override NoteHead #'style = #'petrucci + \override Staff.TimeSignature #'style = #'mensural + \clef "petrucci-g" + \[ c'\maxima g \] + \[ d\longa + \override NoteHead #'ligature-flexa = ##t + \once \override NoteHead #'flexa-width = #3.2 + c\breve f e d \] + \[ c'\maxima d'\longa \] + \[ e'1 a g\breve \] +} +@end lilypond + +@seealso +Glossaire musicologique : +@rglos{ligature}. + +Manuel de notation : +@ref{Neumes et ligatures grégoriennes}, +@ref{Ligatures}. + +@knownissues +L'espacement horizontal n'est pas des meilleurs. +Les altérations peuvent se chevaucher avec les notes précédentes. + + +@node Typographie du chant grégorien +@subsection Typographie du chant grégorien +@translationof Typesetting Gregorian chant + +@menu +* Contextes du chant grégorien:: +* Clefs grégoriennes:: +* Altérations et armures grégoriennes:: +* Divisions:: +* Articulations grégoriennes:: +* Points d'augmentation (morae):: +* Neumes et ligatures grégoriennes:: +@end menu + +Si vous écrivez en notation grégorienne, le +@code{Vaticana_ligature_engraver} se chargera de sélectionner les têtes +de note appropriées ; il est donc inutile de spécifier le style à +utiliser. Vous pouvez cependant spécifier par exemple le style +@code{vaticana_punctum} pour obtenir des neumes punctums. De même, +c'est le @code{Mensural_ligature_engraver} qui se chargera des ligatures +mensurales. + +@seealso +Glossaire musicologique : +@rglos{ligature}. + +Manuel de notation : +@ref{Ligatures mensurales}, +@ref{Ligatures}. + + +@node Contextes du chant grégorien +@unnumberedsubsubsec Contextes du chant grégorien +@translationof Gregorian chant contexts + +@cindex VaticanaVoiceContext +@cindex VaticanaStaffContext + +Les contextes prédéfinis @code{VaticanaVoiceContext} et +@code{VaticanaStaffContext} permettent de graver le chant grégorien +dans le style des éditions vaticanes. Ces contextes initialisent +les propriétés de tous les autres contextes et objets graphiques à des +valeurs adéquates, de telle sorte que vous pouvez tout de suite vous +lancer dans la saisie de votre chant, comme ci-dessous : + +@lilypond[quote,ragged-right,verbatim] +\include "gregorian.ly" +\score { + << + \new VaticanaVoice = "cantus" { + \[ c'\melisma c' \flexa a \] + \[ a \flexa \deminutum g\melismaEnd \] + f \divisioMinima + \[ f\melisma \pes a c' c' \pes d'\melismaEnd \] + c' \divisioMinima \break + \[ c'\melisma c' \flexa a \] + \[ a \flexa \deminutum g\melismaEnd \] f \divisioMinima + } + \new Lyrics \lyricsto "cantus" { + San- ctus, San- ctus, San- ctus + } + >> +} +@end lilypond + +@c @seealso +@c TODO: nothing here yet ... + + +@node Clefs grégoriennes +@unnumberedsubsubsec Clefs grégoriennes +@translationof Gregorian clefs + +@cindex clefs + +Le tableau suivant présente les différentes clefs grégoriennes que vous +pouvez sélectionner avec la commande @code{\clef}. Certaines de ces +clefs utilisent le même glyphe, attaché à l'une ou l'autre des lignes +de la portée. Le chiffre porté en suffixe permet alors de les +différencier ; la numérotation des lignes va de bas en haut. Vous +pouvez néanmoins forcer le positionnement du glyphe sur une ligne, comme +expliqué à la section @ref{Clefs}. Dans la colonne exemple, la note +suivant la clef est un do médium. + +@multitable @columnfractions .4 .4 .2 +@item +@b{Description} +@tab +@b{Clef disponible} +@tab +@b{Exemple} + +@item +Clef d'ut, style des éditions vaticanes +@tab +@code{vaticana-do1}, @code{vaticana-do2},@* +@code{vaticana-do3} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'line-count = #4 + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'vaticana.punctum + \clef "vaticana-do2" + c +@end lilypond + +@item +Clef de fa, style des éditions vaticanes +@tab +@code{vaticana-fa1}, @code{vaticana-fa2} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'line-count = #4 + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'vaticana.punctum + \clef "vaticana-fa2" + c +@end lilypond + +@item +Clef d'ut, style Editio Medicaea +@tab +@code{medicaea-do1}, @code{medicaea-do2},@* +@code{medicaea-do3} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'line-count = #4 + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'medicaea.punctum + \clef "medicaea-do2" + c +@end lilypond + +@item +Clef de fa, style Editio Medicaea +@tab +@code{medicaea-fa1}, @code{medicaea-fa2} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'line-count = #4 + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'medicaea.punctum + \clef "medicaea-fa2" + c +@end lilypond + +@item +Clef d'ut, style historique Hufnagel +@tab +@code{hufnagel-do1}, @code{hufnagel-do2},@* +@code{hufnagel-do3} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'line-count = #4 + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'hufnagel.punctum + \clef "hufnagel-do2" + c +@end lilypond + +@item +Clef de fa, style historique Hufnagel +@tab +@code{hufnagel-fa1}, @code{hufnagel-fa2} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'line-count = #4 + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'hufnagel.punctum + \clef "hufnagel-fa2" + c +@end lilypond + +@item +Clef combinée ut/fa, style historique Hufnagel +@tab +@code{hufnagel-do-fa} +@tab +@lilypond[relative=1,notime] + \override Staff.StaffSymbol #'color = #red + \override Staff.LedgerLineSpanner #'color = #red + \override Voice.Stem #'transparent = ##t + \override Voice.Flag #'transparent = ##t + \override NoteHead #'style = #'hufnagel.punctum + \clef "hufnagel-do-fa" + c +@end lilypond +@end multitable + +@seealso +Glossaire musicologique : +@rglos{clef}. + +Manuel de notation : +@ref{Clefs}. + + +@node Altérations et armures grégoriennes +@unnumberedsubsubsec Altérations et armures grégoriennes +@translationof Gregorian accidentals and key signatures + +@cindex altérations +@cindex armure + +LilyPond dispose d'altérations pour les trois styles grégoriens : + +@lilypond[quote,ragged-right,staffsize=26] +\markup { + \column { + "vaticana" + \line { " " \musicglyph #"accidentals.vaticana-1" + " " \musicglyph #"accidentals.vaticana0" } + } + \column { + "medicaea" + \line { " " \musicglyph #"accidentals.medicaea-1" } + } + \column { + "hufnagel" + \line { " " \musicglyph #"accidentals.hufnagel-1" } + } +} +@end lilypond + +Vous noterez que chacun de ces styles ne comporte pas toutes les +altérations. LilyPond changera de style s'il est besoin d'une +altération indisponible dans le style utilisé. + +@c @lilypondfile[verbatim,quote,texidoc,doctitle] +@c {ancient-accidentals.ly} + +Pour disposer des formes anciennes d'altération, utilisez la propriété +@code{glyph-name-alist} des objets graphiques @code{Accidental} +et @code{KeySignature}, comme ceci : + +@example +\override Staff.Accidental #'glyph-name-alist = + #alteration-mensural-glyph-name-alist +@end example + +@seealso +Glossaire musicologique : +@rglos{accidental}, +@rglos{key signature}. + +Manuel de notation : +@ref{Hauteurs}, +@ref{Altérations}, +@ref{Altérations accidentelles automatiques}, +@ref{Armure}. + +Référence des propriétés internes : +@rinternals{KeySignature}. @node Divisions @@ -841,21 +1341,26 @@ Morceaux choisis : @cindex divisio @cindex divisiones @cindex finalis +@cindex césures + +Il n'existe pas de silence en notation grégorienne. On y parle plutôt +de @emph{divisions, pauses} ou @emph{coupes}. Une division -- @emph{divisio}, pluriel @emph{divisiones} en latin -- est un symbole ajouté à la portée et utilisé en chant grégorien pour séparer les phrases ou parties. @emph{Divisio minima}, @emph{divisio maior} et @emph{divisio maxima} peuvent respectivement s'interpréter comme une pauses courte, moyenne ou longue, à l'image des marques de -respiration -- cf. @ref{Signes de respiration}. Le signe @emph{finalis} -n'est pas uniquement une marque de fin de chant@tie{}; il sert aussi à -indiquer la fin de chaque partie dans une structure verset/répons. +respiration --- cf. @ref{Signes de respiration}. Le signe +@emph{finalis} n'est pas uniquement une marque de fin de chant ; il +sert aussi à indiquer la fin de chaque partie dans une structure +verset/répons. Les divisions sont disponibles après inclusion du fichier @file{gregorian-init.ly}. Ce fichier définit les commandes @code{\divisioMinima}, @code{\divisioMaior}, @code{\divisioMaxima} et @code{\finalis}. Certaines éditions utilisent @emph{virgula} ou -@emph{caesura} en lieu et place de @emph{divisio minima}@tie{}; c'est +@emph{caesura} en lieu et place de @emph{divisio minima} ; c'est pourquoi @file{gregorian-init.ly} définit aussi @code{\virgula} et @code{\caesura}. @@ -890,8 +1395,6 @@ pourquoi @file{gregorian-init.ly} définit aussi @code{\virgula} et } @end lilypond - - @predefined @funindex \virgula @code{\virgula}, @@ -907,219 +1410,279 @@ pourquoi @file{gregorian-init.ly} définit aussi @code{\virgula} et @code{\finalis}. @endpredefined - @seealso +Glossaire musicologique : +@rglos{caesura}, +@rglos{divisio}. + Manuel de notation : @ref{Signes de respiration}. -Référence des propriétés internes : -@rinternals{BreathingSign}. +Fichiers d'initialisation : +@file{gregorian.ly}. -@c FIXME: add breathing-signs.ly directly -Morceaux choisis : -@rlsrnamed{Winds,Instruments à vent}. +@node Articulations grégoriennes +@unnumberedsubsubsec Articulations grégoriennes +@translationof Gregorian articulation signs -@node Ligatures -@unnumberedsubsubsec Ligatures -@translationof Ligatures +@cindex grégorien, articulations -@cindex Ligatures - -@c TODO: Should double check if I recalled things correctly when I wrote -@c down the following paragraph by heart. - -Une ligature est un symbole graphique qui représente un groupe d'au -moins deux notes. Les ligatures ont commencé à apparaître dans les -manuscrits de chant grégorien, pour indiquer des suites ascendantes ou -descendantes de notes. - -Les ligatures s'indiquent par une inclusion entre @code{\[} et -@code{\]}. Certains styles de ligature peuvent demander un complément -de syntaxe spécifique. Par défaut, le graveur -@rinternals{LigatureBracket} place un simple crochet au dessus de -la ligature@tie{}: +En plus des signes d'articulation standards décrits à la section +@ref{Articulations et ornements}, LilyPond fournit des articulations +spécifiquement destinées au style des éditions vaticanes. @lilypond[quote,ragged-right,verbatim] -\transpose c c' { - \[ g c a f d' \] - a g f - \[ e f a g \] +\include "gregorian.ly" +\score { + \new VaticanaVoice { + \override TextScript #'font-family = #'typewriter + \override TextScript #'font-shape = #'upright + \override Script #'padding = #-0.1 + a\ictus_"ictus " \bar "" \break + a\circulus_"circulus " \bar "" \break + a\semicirculus_"semicirculus " \bar "" \break + a\accentus_"accentus " \bar "" \break + \[ a_"episema" \episemInitium \pes b \flexa a b \episemFinis \flexa a \] + } } @end lilypond -Selon le style de ligature désiré, il faut ajouter au contexte -@rinternals{Voice} le graveur de ligature approprié, comme nous le -verrons plus loin. Seules sont disponibles les ligatures mensurales -blanches, avec quelques limitations. - - -@knownissues - -La gestion de l'espacement spécifique aux ligatures n'est à ce jour -pas implémentée. En conséquence, les ligatures sont trop espacées les -unes des autres et les sauts de ligne mal ajustés. De plus, les -paroles ne s'alignent pas de manière satisfaisante en présence de -ligatures. - -Les altérations ne pouvant être imprimées à l'intérieur d'une -ligature, il faut les rassembler et les imprimer juste avant. - -La syntaxe utilisée correspond à l'ancienne convention de préfixage -@code{\[@tie{}expr_musicale\]}. Pour des raisons d'uniformité, nous -opterons probablement pour le style en suffixe (postfix) -@code{note\[@tie{}@dots{}@tie{}note\]}. -En attendant, vous pouvez inclure le fichier -@file{gregorian-init.ly}, qui fournit une fonction Scheme -@example -\ligature @var{expr_musicale} -@end example -qui produit le même résultat, et dont la pérennité est assurée. - - -* Ligatures mensurales:: -* Neumes ligaturés grégoriens:: -@node Ligatures mensurales -@unnumberedsubsubsec Ligatures mensurales -@translationof White mensural ligatures - - -@cindex Ligatures mensurales -@cindex Ligatures mensurales blanches - -Les ligatures mensurales blanches sont prises en charge, avec des -limitations. +@seealso +Manuel de notation : +@ref{Articulations et ornements}. -La gravure des ligatures mensurales blanches s'obtient après avoir -ajouté le @rinternals{Mensural_ligature_engraver} et enlevé le -@rinternals{Ligature_bracket_engraver} dans le contexte -@rinternals{Voice}, comme ici@tie{}: +Morceaux choisis : +@rlsrnamed{Ancient notation,Musiques anciennes}. -@example -\layout @{ - \context @{ - \Voice - \remove Ligature_bracket_engraver - \consists Mensural_ligature_engraver - @} -@} -@end example +Référence des propriétés internes : +@rinternals{Episema}, +@rinternals{EpisemaEvent}, +@rinternals{Episema_engraver}, +@rinternals{Script}, +@rinternals{ScriptEvent}, +@rinternals{Script_engraver}. -Lorsque le code ci-dessus est employé, l'aspect d'une ligature mensurale -blanche est déterminé à partir des hauteurs et durées des notes qui la -composent. Bien que cela demande un temps d'adaptation au nouvel -utilisateur, cette méthode offre l'avantage que toute l'information -musicale incluse dans la ligature est connue en interne. Ceci est non -seulement important pour le rendu MIDI, mais aussi pour des questions de -transcription automatisée d'une ligature. +@knownissues +Certaines articulations sont verticalement trop proches de leurs têtes +de note. -Par exemple, -@example -\set Score.timing = ##f -\set Score.defaultBarType = "empty" -\override NoteHead #'style = #'neomensural -\override Staff.TimeSignature #'style = #'neomensural -\clef "petrucci-g" -\[ c'\maxima g \] -\[ d\longa c\breve f e d \] -\[ c'\maxima d'\longa \] -\[ e'1 a g\breve \] -@end example -@lilypond[quote,ragged-right] -\score { - \transpose c c' { - \set Score.timing = ##f - \set Score.defaultBarType = "empty" - \override NoteHead #'style = #'neomensural - \override Staff.TimeSignature #'style = #'neomensural - \clef "petrucci-g" - \[ c'\maxima g \] - \[ d\longa c\breve f e d \] - \[ c'\maxima d'\longa \] - \[ e'1 a g\breve \] - } - \layout { - \context { - \Voice - \remove Ligature_bracket_engraver - \consists Mensural_ligature_engraver - } - } -} -@end lilypond +@node Points d'augmentation (morae) +@unnumberedsubsubsec Points d'augmentation (@emph{morae}) +@translationof Augmentum dots (morae) -Si on ne remplace pas le @rinternals{Ligature_bracket_engraver} -par le @rinternals{Mensural_ligature_engraver}, on obtient +Les points d'@emph{augmentum}, ou @emph{morae}, s'obtiennent avec la +fonction @code{\augmentum}. Notez que cette fonction @code{\augmentum} +est implémentée en tant que fonction unaire plutôt que comme un préfixe +de note. Par conséquent, @code{\augmentum \virga c} ne donnera rien de +particulier. Il faut l'utiliser avec la syntaxe @code{\virga \augmentum +c} ou @code{\augmentum @{\virga c@}}. Par ailleurs, l'expression +@code{\augmentum @{a g@}} constitue une forme abrégée de +@code{\augmentum a \augmentum g}. -@lilypond[quote,ragged-right] -\transpose c c' { - \set Score.timing = ##f - \set Score.defaultBarType = "empty" - \override NoteHead #'style = #'neomensural - \override Staff.TimeSignature #'style = #'neomensural - \clef "petrucci-g" - \[ c'\maxima g \] - \[ d\longa c\breve f e d \] - \[ c'\maxima d'\longa \] - \[ e'1 a g\breve \] +@lilypond[quote,ragged-right,verbatim] +\include "gregorian.ly" +\score { + \new VaticanaVoice { + \[ \augmentum a \flexa \augmentum g \] + \augmentum g + } } @end lilypond -@knownissues - -L'espacement horizontal n'est pas des meilleurs. +@seealso +Manuel de notation : +@ref{Signes de respiration}. +Référence des propriétés internes : +@rinternals{BreathingSign}. +Morceaux choisis : +@rlsrnamed{Ancient notation,Musiques anciennes}. -@node Neumes ligaturés grégoriens -@unnumberedsubsubsec Neumes ligaturés grégoriens -@translationof Gregorian square neumes ligatures +@node Neumes et ligatures grégoriennes +@unnumberedsubsubsec Neumes et ligatures grégoriennes +@translationof Gregorian square neume ligatures @cindex neumes carrés et ligatures @cindex grégorien, ligatures de neumes carrés +@cindex ligatures et neumes -Les neumes grégoriens conformément au style des Editio Vaticana sont +Les neumes grégoriens conformément au style des éditions vaticanes sont pris en charge de façon assez limitée. Les ligatures élémentaires sont déjà disponibles, mais beaucoup de règles typographiques ne sont pas encore implémentées, notamment l'espacement horizontal des enchaînements de ligatures, l'alignement des paroles ou une gestion convenable des altérations. -Le tableau ci-dessous inventorie les différents neumes contenus dans -le second tome de l'Antiphonale Romanum (@emph{Liber Hymnarius}) publié -par l'abbaye de Solesmes en 1983. +La prise en charge des neumes grégoriens est activée par l'inclusion, en +début de votre fichier source, du fichier d'initialisation +@file{gregorian.ly}. Ceci aura pour effet de rendre disponible un +certain nombre de commandes dans le but de reproduire les symboles de +neumes tels qu'ils apparaissent dans la notation du plain-chant. + +Les têtes de note peuvent être @emph{modifiées} ou @emph{jointes}. + +@itemize +@item L'aspect d'une tête de note se modifie en @emph{préfixant} le nom +d'une hauteur par l'une des commandes suivantes : +@funindex \virga +@code{\virga}, +@funindex \stropha +@code{\stropha}, +@funindex \inclinatum +@code{\inclinatum}, +@funindex \auctum +@code{\auctum}, +@funindex \descendens +@code{\descendens}, +@funindex \ascendens +@code{\ascendens}, +@funindex \oriscus +@code{\oriscus}, +@funindex \quilisma +@code{\quilisma}, +@funindex \deminutum +@code{\deminutum}, +@funindex \cavum +@code{\cavum}, +@funindex \linea +@code{\linea}. + +@item Une ligature, autrement dit la juxtaposition de notes, +s'obtient en plaçant une commande de jointure @code{\pes} ou +@code{\flexa} pour marquer une ligne mélodique respectivement ascendante +ou descendante, entre les notes qui la composent. +@end itemize + +Une hauteur sans qualificatif sera considérée comme un @emph{punctum}. +Tout autre neume, y compris ceux d'une seule note d'aspect particulier +comme la @emph{virga}, sera considéré en tant que ligature et devra +répondre à la syntaxe @code{\[...\]}. +@c Regarding the @emph{punctum}, @code{b} and @code{\[ b \]} are +@c equivalent. + +@noindent +Neumes simples : + +@itemize +@item Le @emph{punctum} représente l'aspect standard d'une note -- dans +le style @emph{Vaticana}, il s'agit d'un carré plein légèrement incurvé +pour une question d'esthétique. Existe aussi le @emph{punctum +inclinatum} -- carré penché qui s'obtient grâce au préfixe +@code{\inclinatum}. Un @emph{punctum} standard peut se modifier par le +préfixe @code{\cavum} qui l'évidera, ou le préfixe @code{\linea}, qui +lui adjoindra une ligne verticale de part et d'autre. + +@item La @emph{virga} dispose d'une hampe sur la droite. Elle s'obtient +à l'aide du modificateur @code{\virga}. +@end itemize + +@noindent +Ligatures + +Contrairement à la majorité des autres systèmes de notation neumatique, +la manière de saisir les neumes n'a rien à voir avec leur apparence +typographique ; elle se concentre plutôt sur le sens musical. +Ainsi, @code{\[ a \pes b \flexa g \]} produit un @emph{torculus} +constitué de trois @emph{punctums}, alors que @code{\[ a \flexa g \pes b +\]} produit un @emph{porrectus} avec une flexe incurvée et un seul +@emph{punctum}. Il n'existe pas de commande à proprement parler qui +permette de spécifier la courbe d'une flexe ; c'est la source +musicale qui va le déterminer. Le fondement d'une telle approche réside +dans la distinction que nous faisons entre les aspects musicaux de la +source et le style de notation que nous voulons obtenir. De ce fait, la +même source pourra être utilisée pour imprimer dans un autre style de +notation grégorienne. + +@noindent +Neumes liquescents + +Autre grande catégorie de notes que l'on trouve en grégorien, les neumes +liquescents. Ils s'utilisent dans certaines circonstances, quand +l'articulation d'une syllabe avec la suivante se fait par une +@qq{consonne liquide}, sur la dernière note du groupe : M (omnis, +summo), L, N, Y (ejus), NG (sanctus), W (autem, laudat). Ces consonnes +ou semi-consonnes sont chantées à la hauteur correspondante, comme le +seraient des voyelles, mais le chant est entravé par leur prononciation. +De fait, les neumes liquescents ne sont jamais utilisés isolément (bien +que rien ne l'interdise) et tombent toujours à la fin d'une ligature. + +Les neumes liquescents peuvent se présenter graphiquement de deux façons +différentes et relativement interchangeables : une note plus +petite, ou une @qq{bascule} verticale de la note principale. La +première option s'obtient en créant un @code{pes} ou une @code{flexa} +puis une modification de l'aspect de la deuxième note : +@code{\[ a \pes \deminutum b \]}. La seconde option consiste à +modifier l'aspect d'un neume sur note unique avec un @code{\auctum} tout +en lui affectant une direction @code{\descendens} ou +@code{\ascendens} : @code{\[ \auctum \descendens a \]}. + +@noindent +Signes spéciaux + +Une troisième catégorie regroupe quelques signes dont la signification +particulière diverge selon la source : la @emph{quilisma}, +l'@emph{oriscus} et le @emph{strophicus}. Ils s'obtiennent en préfixant +la hauteur d'un @code{\quilisma}, @code{\oriscus} ou @code{\stropha}. + +Il est virtuellement possible d'agglutiner autant de notes que voulu, y +compris en les mélangeant avec des @code{\pes}, @code{\flexa}, +@code{\virga}, @code{\inclinatum}, et de borner le tout par @code{\[} +et @code{\]} pour produire une seule ligature. C'est d'ailleurs de +cette manière que nous avons procédé pour générer le tableau qui suit. +La création de ligatures est donc sans limite. + +Notez bien que l'utilisation de ces signes en musique suit un certain +nombre de règles, et que LilyPond n'effectue aucun contrôle à ce niveau. +Par exemple, une @emph{quilisma} se trouve toujours être la note +intermédiaire d'une ligature ascendante et tombe habituellement sur un +demi ton ; bien que cela soit tout à fait possible, mais +parfaitement incorrect, rien ne vous empêche de créer une quilisma sur +une seule note. + +En plus des signes propres à la notation, le fichier @file{gregorian.ly} +contient la définition des commandes @code{\versus}, @code{\responsum}, +@code{\ij}, @code{\iij}, @code{\IJ} et @code{\IIJ}, qui permettent par +exemple d'indiquer dans les paroles des repères de section. Ces +commandes font appel à des caractères unicode spécifiques qui ne seront +reproduits que si vous utilisez une fonte qui en dispose. -@multitable @columnfractions .4 .2 .2 .2 +@c table des neumes + +Le tableau ci-dessous inventorie, bien que dans une certaine limite, les +différents neumes contenus dans le second tome de l'Antiphonale Romanum +(@emph{Liber Hymnarius}) publié par l'abbaye de Solesmes en 1983. +La première colonne énumère le nom des ligatures -- forme normale en +gras et forme liquescente en italique. La troisième colonne contient le +code ayant permis de générer la ligature, se basant ici sur sol, la, si. + +@b{Neumes simples} + +@multitable @columnfractions .4 .2 .4 @item -@b{Neuma aut@* -Neumarum Elementa} -@tab -@b{Figurae@* -Rectae} +Formes @b{Normale} et @emph{Liquescente} @tab -@b{Figurae@* -Liquescentes@* -Auctae} +@b{Rendu} @tab -@b{Figurae@* -Liquescentes@* -Deminutae} +@b{Code@* +LilyPond} @c TODO: \layout block is identical in all of the below examples. @c Therefore, it should somehow be included rather than duplicated all -@c the time. --jr +@c the time. --jr -@c why not make identifiers in ly/engraver-init.ly? --hwn +@c why not make variables in ly/engraver-init.ly? --hwn @c Because it's just used to typeset plain notes without @c a staff for demonstration purposes rather than something -@c special of Gregorian chant notation. --jr +@c special of Gregorian chant notation. --jr @item -@code{1. Punctum} +@b{Punctum} @tab @lilypond[staffsize=26,line-width=1.5\cm] \include "gregorian.ly" @@ -1127,237 +1690,257 @@ Deminutae} \transpose c c' { % Punctum \[ b \] - \noBreak s^\markup {"a"} \noBreak - - % Punctum Inclinatum - \[ \inclinatum b \] - \noBreak s^\markup {"b"} } \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[staffsize=26,line-width=2.5\cm] +@code{\[ b \]} + +@item +@tab +@lilypond[staffsize=26,line-width=1.5\cm] \include "gregorian.ly" \score { \transpose c c' { - % Punctum Auctum Ascendens - \[ \auctum \ascendens b \] - \noBreak s^\markup {"c"} \noBreak - - % Punctum Auctum Descendens - \[ \auctum \descendens b \] - \noBreak s^\markup {"d"} \noBreak - - % Punctum Inclinatum Auctum - \[ \inclinatum \auctum b \] - \noBreak s^\markup {"e"} + % Punctum + \[ \cavum b \] } \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@code{\[ \cavum b \]} + +@item +@tab +@lilypond[staffsize=26,line-width=1.5\cm] \include "gregorian.ly" \score { \transpose c c' { - % Punctum Inclinatum Parvum - \[ \inclinatum \deminutum b \] - \noBreak s^\markup {"f"} + % Punctum + \[ \linea b \] } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ \linea b \]} @item -@code{2. Virga} +@emph{Punctum Auctum Ascendens} @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@lilypond[staffsize=26,line-width=2.5\cm] \include "gregorian.ly" \score { \transpose c c' { - % Virga - \[ \virga b \] - \noBreak s^\markup {"g"} + % Punctum Auctum Ascendens + \[ \auctum \ascendens b \] } \layout { \neumeDemoLayout }} @end lilypond @tab -@tab +@code{\[ \auctum \ascendens b \]} @item -@code{3. Apostropha vel Stropha} +@emph{Punctum Auctum Descendens} @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@lilypond[staffsize=26,line-width=2.5\cm] \include "gregorian.ly" \score { \transpose c c' { - % Stropha - \[ \stropha b \] - \noBreak s^\markup {"h"} + % Punctum Auctum Descendens + \[ \auctum \descendens b \] } \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@code{\[ \auctum \descendens b \]} + +@item +@b{Punctum inclinatum} +@tab +@lilypond[staffsize=26,line-width=1.5\cm] \include "gregorian.ly" \score { \transpose c c' { - % Stropha Aucta - \[ \stropha \auctum b \] - \noBreak s^\markup {"i"} + % Punctum Inclinatum + \[ \inclinatum b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \inclinatum b \]} @item -@code{4. Oriscus} +@emph{Punctum Inclinatum Auctum} @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@lilypond[staffsize=26,line-width=2.5\cm] \include "gregorian.ly" \score { \transpose c c' { - % Oriscus - \[ \oriscus b \] - \noBreak s^\markup {"j"} + % Punctum Inclinatum Auctum + \[ \inclinatum \auctum b \] } \layout { \neumeDemoLayout }} @end lilypond @tab -@tab +@code{\[ \inclinatum \auctum b \]} @item -@code{5. Clivis vel Flexa} +@emph{Punctum Inclinatum Parvum} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Clivis vel Flexa - \[ b \flexa g \] - s^\markup {"k"} + % Punctum Inclinatum Parvum + \[ \inclinatum \deminutum b \] } \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[staffsize=26,line-width=2.0\cm] +@code{\[ \inclinatum \deminutum b \]} + +@item +@b{Virga} +@tab +@lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Clivis Aucta Descendens - \[ b \flexa \auctum \descendens g \] - \noBreak s^\markup {"l"} \noBreak - - % Clivis Aucta Ascendens - \[ b \flexa \auctum \ascendens g \] - \noBreak s^\markup {"m"} + % Virga + \[ \virga b \] } \layout { \neumeDemoLayout }} @end lilypond @tab + +@end multitable + +@noindent +@b{Ligatures sur deux notes} + +@multitable @columnfractions .4 .2 .4 + +@item +@b{Clivis vel Flexa} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Cephalicus - \[ b \flexa \deminutum g \] - s^\markup {"n"} + % Clivis vel Flexa + \[ b \flexa g \] } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ b \flexa g \]} @item -@code{6. Podatus vel Pes} +@emph{Clivis Aucta Descendens} @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@lilypond[staffsize=26,line-width=2.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Podatus vel Pes - \[ g \pes b \] - s^\markup {"o"} + % Clivis Aucta Descendens + \[ b \flexa \auctum \descendens g \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ b \flexa \auctum \descendens g \]} +@item +@emph{Clivis Aucta Ascendens} +@tab @lilypond[staffsize=26,line-width=2.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Pes Auctus Descendens - \[ g \pes \auctum \descendens b \] - \noBreak s^\markup {"p"} \noBreak - - % Pes Auctus Ascendens - \[ g \pes \auctum \ascendens b \] - \noBreak s^\markup {"q"} + % Clivis Aucta Ascendens + \[ b \flexa \auctum \ascendens g \] } \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[staffsize=26,line-width=1.0\cm] +@code{\[ b \flexa \auctum \ascendens g \]} + +@item +@emph{Cephalicus} +@tab +@lilypond[staffsize=26,line-width=2.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Epiphonus - \[ g \pes \deminutum b \] - s^\markup {"r"} + % Cephalicus + \[ b \flexa \deminutum g \] } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ b \flexa \deminutum g \]} @item -@code{7. Pes Quassus} +@b{Podatus/Pes} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Pes Quassus - \[ \oriscus g \pes \virga b \] - s^\markup {"s"} + % Podatus vel Pes + \[ g \pes b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes b \]} + +@item +@emph{Pes Auctus Descendens} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Pes Quassus Auctus Descendens - \[ \oriscus g \pes \auctum \descendens b \] - s^\markup {"t"} + % Pes Auctus Descendens + \[ g \pes \auctum \descendens b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes \auctum \descendens b \]} @item -@code{8. Quilisma Pes} +@emph{Pes Auctus Ascendens} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Quilisma Pes - \[ \quilisma g \pes b \] - s^\markup {"u"} + % Pes Auctus Ascendens + \[ g \pes \auctum \ascendens b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes \auctum \ascendens b \]} + +@item +@emph{Epiphonus} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Quilisma Pes Auctus Descendens - \[ \quilisma g \pes \auctum \descendens b \] - s^\markup {"v"} + % Epiphonus + \[ g \pes \deminutum b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes \deminutum b \]} @item -@code{9. Podatus Initio Debilis} +@emph{Pes Initio Debilis} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" @@ -1365,25 +1948,36 @@ Deminutae} \transpose c c' { % Pes Initio Debilis \[ \deminutum g \pes b \] - s^\markup {"w"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \deminutum g \pes b \]} + +@item +@emph{Pes Auctus Descendens Initio Debilis} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { % Pes Auctus Descendens Initio Debilis \[ \deminutum g \pes \auctum \descendens b \] - s^\markup {"x"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \deminutum g \pes \auctum \descendens b \]} + +@end multitable + +@noindent +@b{Ligatures sur plusieurs notes} + +@multitable @columnfractions .4 .2 .4 @item -@code{10. Torculus} +@b{Torculus} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" @@ -1391,71 +1985,89 @@ Deminutae} \transpose c c' { % Torculus \[ a \pes b \flexa g \] - s^\markup {"y"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ a \pes b \flexa g \]} + +@item +@emph{Torculus Auctus Descendens} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Torculus Auctus Descendens + % Torculus Auctus Descendens \[ a \pes b \flexa \auctum \descendens g \] - s^\markup {"z"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ a \pes b \flexa \auctum \descendens g \]} + +@item +@emph{Torculus Deminutus} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Torculus Deminutus + % Torculus Deminutus \[ a \pes b \flexa \deminutum g \] - s^\markup {"A"} } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ a \pes b \flexa \deminutum g \]} @item -@code{11. Torculus Initio Debilis} +@emph{Torculus Initio Debilis} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Torculus Initio Debilis + % Torculus Initio Debilis \[ \deminutum a \pes b \flexa g \] - s^\markup {"B"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \deminutum a \pes b \flexa g \]} + +@item +@emph{Torculus Auctus Descendens Initio Debilis} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Torculus Auctus Descendens Initio Debilis + % Torculus Auctus Descendens Initio Debilis \[ \deminutum a \pes b \flexa \auctum \descendens g \] - s^\markup {"C"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \deminutum a \pes b \flexa \auctum \descendens g \]} + +@item +@emph{Torculus Deminutus Initio Debilis} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Torculus Deminutus Initio Debilis + % Torculus Deminutus Initio Debilis \[ \deminutum a \pes b \flexa \deminutum g \] - s^\markup {"D"} } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ \deminutum a \pes b \flexa \deminutum g \]} @item -@code{12. Porrectus} +@b{Porrectus} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" @@ -1463,35 +2075,44 @@ Deminutae} \transpose c c' { % Porrectus \[ a \flexa g \pes b \] - s^\markup {"E"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ a \flexa g \pes b \]} + +@item +@emph{Porrectus Auctus Descendens} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Porrectus Auctus Descendens + % Porrectus Auctus Descendens \[ a \flexa g \pes \auctum \descendens b \] - s^\markup {"F"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ a \flexa g \pes \auctum \descendens b \]} + +@item +@emph{Porrectus Deminutus} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Porrectus Deminutus + % Porrectus Deminutus \[ a \flexa g \pes \deminutum b \] - s^\markup {"G"} } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ a \flexa g \pes \deminutum b \]} @item -@code{13. Climacus} +@b{Climacus} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" @@ -1499,36 +2120,44 @@ Deminutae} \transpose c c' { % Climacus \[ \virga b \inclinatum a \inclinatum g \] - s^\markup {"H"} } - \layout { \neumeDemoLayout } -} +\layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \virga b \inclinatum a \inclinatum g \]} + +@item +@emph{Climacus Auctus} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Climacus Auctus + % Climacus Auctus \[ \virga b \inclinatum a \inclinatum \auctum g \] - s^\markup {"I"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \virga b \inclinatum a \inclinatum \auctum g \]} + +@item +@emph{Climacus Deminutus} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Climacus Deminutus + % Climacus Deminutus \[ \virga b \inclinatum a \inclinatum \deminutum g \] - s^\markup {"J"} } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ \virga b \inclinatum a \inclinatum \deminutum g \]} @item -@code{14. Scandicus} +@b{Scandicus} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" @@ -1536,448 +2165,234 @@ Deminutae} \transpose c c' { % Scandicus \[ g \pes a \virga b \] - s^\markup {"K"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes a \virga b \]} + +@item +@emph{Scandicus Auctus Descendens} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Scandicus Auctus Descendens + % Scandicus Auctus Descendens \[ g \pes a \pes \auctum \descendens b \] - s^\markup {"L"} } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes a \pes \auctum \descendens b \]} + +@item +@emph{Scandicus Deminutus} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Scandicus Deminutus + % Scandicus Deminutus \[ g \pes a \pes \deminutum b \] - s^\markup {"M"} } \layout { \neumeDemoLayout }} @end lilypond +@tab +@code{\[ g \pes a \pes \deminutum b \]} + +@end multitable + +@noindent +@b{Signes spéciaux} + +@multitable @columnfractions .4 .2 .4 @item -@code{15. Salicus} +@b{Quilisma} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Salicus - \[ g \oriscus a \pes \virga b \] - s^\markup {"N"} + % Quilisma + \[ g \pes \quilisma a \pes b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ g \pes \quilisma a \pes b \]} + +@item +@emph{Quilisma Pes Auctus Descendens} +@tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Salicus Auctus Descendens - \[ g \oriscus a \pes \auctum \descendens b \] - s^\markup {"O"} + % Quilisma Pes Auctus Descendens + \[ g \quilisma a \pes \auctum \descendens b \] } \layout { \neumeDemoLayout }} @end lilypond @tab +@code{\[ \quilisma g \pes \auctum \descendens b \]} @item -@code{16. Trigonus} +@b{Oriscus} @tab @lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { \transpose c c' { - % Trigonus - \[ \stropha b \stropha b \stropha a \] - s^\markup {"P"} + % Oriscus + \[ \oriscus b \] } - \layout { \neumeDemoLayout } -} +\layout { \neumeDemoLayout }} @end lilypond @tab -@tab - -@end multitable - - -Contrairement à la majorité des autres systèmes de notation neumatique, -la manière de saisir les neumes n'a rien à voir avec leur apparence -typographique@tie{}; elle se concentre plutôt sur le sens musical. -Ainsi, @w{@code{\[ a \pes b \flexa g \]}} produit un @emph{torculus} -constitué de trois @emph{punctums}, alors que @w{@code{\[ a \flexa g -\pes b \]}} produit un @emph{porrectus} avec une flexe incurvée et un -seul @emph{punctum}. -Il n'existe pas de commande à proprement parler qui permette de -spécifier la courbe d'une flexe@tie{}; c'est la source musicale qui va -le déterminer. Le fondement d'une telle approche réside dans la -distinction que nous faisons entre les aspects musicaux de la source et -le style de notation que nous voulons obtenir. De ce fait, la même -source pourra être utilisée pour imprimer dans un autre style de -notation grégorienne. - -Le tableau suivant présente les fragments de code qui ont permis de -générer les neumes ligaturés du tableau précédent. Les lettres de la -première colonne renvoient aux ligatures ci-dessus. La seconde -colonne énumère le nom des ligatures, et la troisième le code ayant -permis de les générer, se basant ici sur sol, la, si. - -@multitable @columnfractions .02 .31 .67 -@item -@b{#} -@tab -@b{Nom} -@tab -@b{Code source} - -@item -a -@tab -Punctum -@tab -@code{\[ b \]} - -@item -b -@tab -Punctum Inclinatum -@tab -@code{\[ \inclinatum b \]} - -@item -c -@tab -Punctum Auctum@* -Ascendens -@tab -@code{\[ \auctum \ascendens b \]} - -@item -d -@tab -Punctum Auctum@* -Descendens -@tab -@code{\[ \auctum \descendens b \]} - -@item -e -@tab -Punctum Inclinatum@* -Auctum -@tab -@code{\[ \inclinatum \auctum b \]} - -@item -f -@tab -Punctum Inclinatum@* -Parvum @tab -@code{\[ \inclinatum \deminutum b \]} - -@item -g -@tab -Virga -@tab -@code{\[ \virga b \]} - -@item -h -@tab -Stropha -@tab -@code{\[ \stropha b \]} - -@item -i -@tab -Stropha Aucta -@tab -@code{\[ \stropha \auctum b \]} - -@item -j -@tab -Oriscus -@tab @code{\[ \oriscus b \]} @item -k -@tab -Clivis vel Flexa -@tab -@code{\[ b \flexa g \]} - -@item -l -@tab -Clivis Aucta@* -Descendens -@tab -@code{\[ b \flexa \auctum \descendens g \]} - -@item -m -@tab -Clivis Aucta@* -Ascendens -@tab -@code{\[ b \flexa \auctum \ascendens g \]} - -@item -n -@tab -Cephalicus -@tab -@code{\[ b \flexa \deminutum g \]} - -@item -o -@tab -Podatus vel Pes -@tab -@code{\[ g \pes b \]} - -@item -p -@tab -Pes Auctus@* -Descendens -@tab -@code{\[ g \pes \auctum \descendens b \]} - -@item -q -@tab -Pes Auctus@* -Ascendens -@tab -@code{\[ g \pes \auctum \ascendens b \]} - -@item -r -@tab -Epiphonus -@tab -@code{\[ g \pes \deminutum b \]} - -@item -s +@emph{Pes Quassus} @tab -Pes Quassus +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Pes Quassus + \[ \oriscus g \pes \virga b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab @code{\[ \oriscus g \pes \virga b \]} @item -t -@tab -Pes Quassus@* -Auctus Descendens @tab -@code{\[ \oriscus g \pes \auctum \descendens b \]} - -@item -u -@tab -Quilisma Pes -@tab -@code{\[ \quilisma g \pes b \]} - -@item -v -@tab -Quilisma Pes@* -Auctus Descendens -@tab -@code{\[ \quilisma g \pes \auctum \descendens b \]} - -@item -w -@tab -Pes Initio Debilis -@tab -@code{\[ \deminutum g \pes b \]} - -@item -x -@tab -Pes Auctus Descendens@* -Initio Debilis -@tab -@code{\[ \deminutum g \pes \auctum \descendens b \]} - -@item -y -@tab -Torculus -@tab -@code{\[ a \pes b \flexa g \]} - -@item -z -@tab -Torculus Auctus@* -Descendens -@tab -@code{\[ a \pes b \flexa \auctum \descendens g \]} - -@item -A -@tab -Torculus Deminutus -@tab -@code{\[ a \pes b \flexa \deminutum g \]} - -@item -B -@tab -Torculus Initio Debilis -@tab -@code{\[ \deminutum a \pes b \flexa g \]} - -@item -C -@tab -Torculus Auctus@* -Descendens Initio Debilis -@tab -@code{\[ \deminutum a \pes b \flexa \auctum \descendens g \]} - -@item -D -@tab -Torculus Deminutus@* -Initio Debilis -@tab -@code{\[ \deminutum a \pes b \flexa \deminutum g \]} - -@item -E -@tab -Porrectus -@tab -@code{\[ a \flexa g \pes b \]} - -@item -F -@tab -Porrectus Auctus@* -Descendens -@tab -@code{\[ a \flexa g \pes \auctum \descendens b \]} - -@item -G -@tab -Porrectus Deminutus -@tab -@code{\[ a \flexa g \pes \deminutum b \]} - -@item -H -@tab -Climacus -@tab -@code{\[ \virga b \inclinatum a \inclinatum g \]} - -@item -I +@emph{Pes Quassus Auctus Descendens} @tab -Climacus Auctus +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Pes Quassus Auctus Descendens + \[ \oriscus g \pes \auctum \descendens b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ \virga b \inclinatum a \inclinatum \auctum g \]} +@code{\[ \oriscus g \pes \auctum \descendens b \]} @item -J +@b{Salicus} @tab -Climacus Deminutus +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Salicus + \[ g \oriscus a \pes \virga b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ \virga b \inclinatum a \inclinatum \deminutum g \]} +@code{\[ g \oriscus a \pes \virga b \]} @item -K +@emph{Salicus Auctus Descendens} @tab -Scandicus +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Salicus Auctus Descendens + \[ g \oriscus a \pes \auctum \descendens b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ g \pes a \virga b \]} +@code{\[ g \oriscus a \pes \auctum \descendens b \]} @item -L +@b{(Apo)stropha} @tab -Scandicus Auctus@* -Descendens +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Stropha + \[ \stropha b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ g \pes a \pes \auctum \descendens b \]} +@code{\[ \stropha b \]} @item -M +@emph{Stropha Aucta} @tab -Scandicus Deminutus +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Stropha Aucta + \[ \stropha \auctum b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ g \pes a \pes \deminutum b \]} +@code{\[ \stropha \auctum b \]} @item -N +@b{Bistropha} @tab -Salicus +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Bistropha + \[ \stropha b \stropha b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ g \oriscus a \pes \virga b \]} +@code{\[ \stropha b \stropha b \]} @item -O +@b{Tristropha} @tab -Salicus Auctus Descendens +@lilypond[staffsize=26,line-width=1.0\cm] +\include "gregorian.ly" +\score { + \transpose c c' { + % Tristropha + \[ \stropha b \stropha b \stropha b \] + } +\layout { \neumeDemoLayout }} +@end lilypond @tab -@code{\[ g \oriscus a \pes \auctum \descendens b \]} +@code{\[ \stropha b \stropha b \stropha b \]} @item -P -@tab -Trigonus +@emph{Trigonus} @tab -@code{\[ \stropha b \stropha b \stropha a \]} -@end multitable - -Les ligatures que nous venons de voir, bien que rudimentaires, donnent -un aperçu des possibilités de former des ligatures grégoriennes. En -théorie, vous pouvez inclure entre les délimiteurs @code{\[} et -@code{\]}, autant de sons que nécessaires à la ligature, ainsi que de -préfixes tels que @code{\pes}, @code{\flexa}, @code{\virga}, -@code{\inclinatum}, @dots{} Bien sûr, les règles de construction -présentées ci-dessus peuvent se combiner, ce qui permet la création -d'une infinité de ligatures. - -Les points d'@emph{augmentum}, ou @emph{morae}, s'obtiennent avec la -fonction @code{\augmentum}. Notez que cette fonction @code{\augmentum} -est implémentée en tant que fonction unaire plutôt que comme un préfixe -de note. Par conséquent, @code{\augmentum \virga c} ne donnera rien de -particulier. Il faut l'utiliser avec la syntaxe @code{\virga \augmentum -c} ou @code{\augmentum @{\virga c@}}. Par ailleurs, l'expression -@code{\augmentum @{a g@}} constitue une forme abrégée de -@code{\augmentum a \augmentum g}. - -@lilypond[quote,ragged-right,verbatim] +@lilypond[staffsize=26,line-width=1.0\cm] \include "gregorian.ly" \score { - \new VaticanaVoice { - \[ \augmentum a \flexa \augmentum g \] - \augmentum g + \transpose c c' { + % Trigonus + \[ \stropha b \stropha b \stropha a \] } + \layout { \neumeDemoLayout } } @end lilypond +@tab +@code{\[ \stropha b \stropha b \stropha a \]} +@end multitable @predefined -LilyPond dispose des préfixes suivants@tie{}: +LilyPond dispose des préfixes suivants : @funindex \virga @code{\virga}, @funindex \stropha @@ -2002,7 +2417,6 @@ LilyPond dispose des préfixes suivants@tie{}: @code{\linea}. @endpredefined - Les préfixes de note peuvent s'agglutiner, modulo quelques restrictions. Par exemple, on peut appliquer un @code{\descendens} ou un @code{\ascendens} à une note, mais pas les deux simultanément à une même @@ -2010,204 +2424,497 @@ note. @funindex \pes @funindex \flexa + Deux notes adjacentes peuvent être reliées grâce aux commandes @code{\pes} ou @code{\flexa} pour marquer une ligne mélodique respectivement ascendante ou descendante. @funindex \augmentum + Utilisez la fonction musicale unaire @code{\augmentum} pour ajouter des points d'augmentum. -@knownissues +@seealso +Glossaire musicologique : +@rglos{ligature}. + +Manuel de notation : +@ref{Ligatures mensurales}, +@ref{Ligatures}. +@knownissues Lorsqu'un @code{\augmentum} apparaît dans une ligature en fin de portée, son placement vertical peut être erroné. Pour y remédier, -ajoutez un silence invisible, @code{s8} par exemple, comme dernière note -de cette portée. +ajoutez un silence invisible, @code{s8} par exemple, comme dernière note de +cette portée. L'@code{\augmentum} devrait être implémenté en tant que préfixe plutôt qu'en tant que fonction unaire, afin qu'@code{\augmentum} puisse s'intégrer avec d'autres préfixes dans n'importe quel ordre. +@node Typographie de notation kiévienne +@subsection Typographie de notation kiévienne +@translationof Typesetting Kievan square notation - -@node Contextes prédéfinis -@subsection Contextes prédéfinis -@translationof Pre-defined contexts - -@untranslated - +@cindex kiévien +@cindex slavon @menu -* Contextes du chant grégorien:: -* Les contextes de la musique mensurale:: +* Contextes de notation kiévienne:: +* Clefs kiéviennes:: +* Têtes de note kiéviennes:: +* Altérations kiéviennes:: +* Barre de mesure kiévienne:: @end menu -@node Contextes du chant grégorien -@unnumberedsubsubsec Contextes du chant grégorien -@translationof Gregorian chant contexts -@cindex VaticanaVoiceContext -@cindex VaticanaStaffContext +@node Contextes de notation kiévienne +@unnumberedsubsubsec Contextes de notation kiévienne +@translationof Kievan contexts -Les contextes @code{VaticanaVoiceContext} et -@code{VaticanaStaffContext} permettent de graver le chant grégorien -dans le style des éditions vaticanes. Ces contextes initialisent +@cindex KievanVoiceContext +@cindex KievanStaffContext + +Tout comme pour les notations grégorienne et mensurale, les contextes +prédéfinis @code{KievanVoice} et @code{KievanStaff} permettent de +générer une partition en notation carrée. Ces contextes initialisent les propriétés de tous les autres contextes et objets graphiques à des valeurs adéquates, de telle sorte que vous pouvez tout de suite vous -lancer dans la saisie de votre chant, comme ci-dessous@tie{}: +lancer dans la saisie de votre chant, comme ci-dessous : @lilypond[quote,ragged-right,verbatim] -\include "gregorian.ly" \score { << - \new VaticanaVoice = "cantus" { - \[ c'\melisma c' \flexa a \] - \[ a \flexa \deminutum g\melismaEnd \] - f \divisioMinima - \[ f\melisma \pes a c' c' \pes d'\melismaEnd \] - c' \divisioMinima \break - \[ c'\melisma c' \flexa a \] - \[ a \flexa \deminutum g\melismaEnd \] f \divisioMinima + \new KievanVoice = "melody" \transpose c c' { + \cadenzaOn + c4 c c c c2 b,\longa + \bar "kievan" } - \new Lyrics \lyricsto "cantus" { - San- ctus, San- ctus, San- ctus + \new Lyrics \lyricsto "melody" { + Го -- спо -- ди по -- ми -- луй. } >> } @end lilypond +@seealso +Glossaire musicologique : +@rglosnamed{kievan notation, notation kiévienne}. +@knownissues +LilyPond prend en charge la notation kiévienne du style synodal, +correspondant au corpus du saint synode russe des années 1910, récemment +réédité par les éditions du patriarcat de Moscou. LilyPond ne prend pas +en charge les formes plus anciennes et moins répandues de notation +kiévienne que l'on trouvait en Galicie pour noter le plain-chant Rus'. -@node Les contextes de la musique mensurale -@unnumberedsubsubsec Les contextes de la musique mensurale -@translationof Mensural contexts +@node Clefs kiéviennes +@unnumberedsubsubsec Clefs kiéviennes +@translationof Kievan clefs +@cindex kiévienne, clef -@cindex MensuralVoiceContext -@cindex MensuralStaffContext +La notation kiévienne n'utilise qu'une seule clef -- la clef +« Tse-fa-ut » -- qui indique la position du do : -Les contextes @code{MensuralVoiceContext} et -@code{MensuralStaffContext} permettent de graver des chants dans le -style mesuré. Ces contextes initialisent les propriétés de tous les -autres contextes et objets graphiques à des valeurs adéquates, de telle -sorte que vous pouvez tout de suite vous lancer dans la saisie de votre -chant comme ci-après@tie{}: +@lilypond[quote,relative=1,notime,verbatim] + \clef "kievan-do" + \override NoteHead #'style = #'kievan + c +@end lilypond -@lilypond[quote,ragged-right,verbatim] -\score { - << - \new MensuralVoice = "discantus" \transpose c c' { - \override Score.BarNumber #'transparent = ##t { - c'1\melisma bes a g\melismaEnd - f\breve - \[ f1\melisma a c'\breve d'\melismaEnd \] - c'\longa - c'\breve\melisma a1 g1\melismaEnd - fis\longa^\signumcongruentiae - } - } - \new Lyrics \lyricsto "discantus" { - San -- ctus, San -- ctus, San -- ctus - } - >> -} +@seealso +Glossaire musicologique : +@rglosnamed{kievan notation, notation kiévienne}, +@rglos{clef}. + +Manuel de notation : +@ref{Clef}. + + +@node Têtes de note kiéviennes +@unnumberedsubsubsec Têtes de note kiéviennes +@translationof Kievan note heads + +@cindex kiéviennnes, têtes de note + +La notation kiévienne requiert l'utilisation du style de tête de note +approprié. Vous devrez affecter @code{kievan} à la propriété +@code{style} de l'objet @code{NoteHead}. + +En notation kiévienne, la note finale d'une pièce apparaît souvent sous +la forme d'une @code{\longa}. L'indication d'un récitatif -- plusieurs +syllabes sont chantées sur une même hauteur -- s'effectue à l'aide d'une +@code{\breve}. Voici ce à quoi ressemblent les différentes notes +kiéviennes : + +@lilypond[quote,fragment,ragged-right,verbatim] +\autoBeamOff +\cadenzaOn +\override NoteHead #'style = #'kievan +b'1 b'2 b'4 b'8 b'\breve b'\longa +@end lilypond + +@seealso +Glossaire musicologique : +@rglosnamed{kievan notation, notation kiévienne}, +@rglosnamed{note head, tête de note}. + +Manuel de notation : +@ref{Styles de tête de note}. + +@knownissues +LilyPond détermine automatiquement l'orientation des hampes. Il est +cependant d'usage, en notation carrée, que les hampes des différentes +notes d'un même mélisme aillent toutes dans le même sens ; il faudra +donc en pareil cas définir manuellement la propriété @code{direction} de +l'objet @code{Stem}. + + +@node Altérations kiéviennes +@unnumberedsubsubsec Altérations kiéviennes +@translationof Kievan accidentals + +@cindex kiéviennes, altérations + +Le style d'altération propre à la notation kiévienne est accessible au +travers de la propriété @code{glyph-name-alist} de l'objet +@code{Accidental}. Le style @code{kievan} dispose d'un dièse et d'un +bémol, tous deux différents du style par défaut ; il n'y a pas de +bécarre en notation kiévienne. Bien que le dièse soit pas utilisé en +notation synodale, on peut le trouver dans certains manuscrits plus +anciens. + +@lilypond[quote,relative=1,notime,verbatim] +\clef "kievan-do" +\override NoteHead #'style = #'kievan +\override Accidental #'glyph-name-alist = + #alteration-kievan-glyph-name-alist +bes' dis, @end lilypond +@seealso +Glossaire musicologique : +@rglosnamed{kievan notation, notation kiévienne}, +@rglosnamed{accidental, altération}. + +Manuel de notation : +@ref{Altérations}, +@ref{Altérations accidentelles automatiques}, +@ref{La fonte Feta} + + +@node Barre de mesure kiévienne +@unnumberedsubsubsec Barre de mesure kiévienne +@translationof Kievan bar line + +Les pièces en notation kiévienne sont habituellement terminées par une +décoration qui fait office de barre finale. Elle s'obtient à l'aide +d'un @code{\bar "kievan"}. + +@lilypond[quote,relative=1,notime,verbatim] + \clef "kievan-do" + \override NoteHead #'style = #'kievan + c \bar "kievan" +@end lilypond +@seealso +@ref{Barres de mesure}, +@ref{La fonte Feta} -@node Transcription de musique mensurale -@subsection Transcription de musique mensurale -@translationof Transcribing ancient music -@untranslated +@node Réédition de musique ancienne +@subsection Réédition de musique ancienne +@translationof Working with ancient music---scenarios and solutions @menu -* Éditions ancienne et moderne à partir d'une même source:: * Des incipits:: * Mise en forme de la musique mensurale:: * Transcription de chant grégorien:: +* Éditions ancienne et moderne à partir d'une même source:: +* Notation éditoriale:: @end menu -@node Éditions ancienne et moderne à partir d'une même source -@unnumberedsubsubsec Éditions ancienne et moderne à partir d'une même source -@translationof Ancient and modern from one source +Travailler sur de la musique ancienne requiert bien souvent des tâches +particulières et qui s'éloignent fortement de la notation moderne pour +laquelle LilyPond est conçu. Nous allons aborder, au fil des +paragraphes qui suivent, un certain nombre de cas particuliers et vous +proposer des suggestions, voire des solutions aux problèmes que vous +ne manquerez pas de rencontrer. Ceci inclut entre autres : + +@itemize +@item comment réaliser un incipit, autrement dit un court extrait +montrant ce à quoi ressemblait l'original, en introduction à la +transcription d'une œuvre médiévale ; +@item comment obtenir une présentation @emph{Mensurstriche} comme on +peut le voir dans nombre de transcriptions de musique +polyphonique ; +@item comment transcrire du grégorien en notation moderne ; +@item comment obtenir à la fois une reproduction en notation ancienne et +une édition en notation moderne à partir d'une même source. +@end itemize -@untranslated @node Des incipits @unnumberedsubsubsec Des incipits @translationof Incipits -@untranslated +@c TODO Add text +@c clefs, mensuration signs etc from lsr and -user +@c use snippet Transcription-of-ancient-music-with-incipit +@emph{En cours de rédaction} + +@seealso +@c ... and reference to other sections ... +Morceaux choisis: +@rlsrnamed{Ancient notation,Notations anciennes}. @node Mise en forme de la musique mensurale @unnumberedsubsubsec Mise en forme de la musique mensurale @translationof Mensurstriche layout -@untranslated +@emph{Mensurstriche}, pour @qq{lignes de mensuration}, est le terme +consacré lorsque les barres de mesure apparaissent uniquement entre les +portées d'un système. Cette présentation permet de préserver l'aspect +rythmique de l'original -- par exemple sans couper une syncope par +l'apparition d'une barre -- tout en procurant l'aide que peuvent +constituer les barres de mesure. + +@lilypondfile[verbatim,quote,texidoc] +{mensurstriche-layout-bar-lines-between-the-staves.ly} + +@c This simple setup will take care of the +@c TODO Add text about lyrics to the lowest line, to be placed +@c outside the StaffGroup. +@c from lsr and -user +@c TBC + +@c @seealso +@c ... and reference to other sections ... + @node Transcription de chant grégorien @unnumberedsubsubsec Transcription de chant grégorien @translationof Transcribing Gregorian chant -@untranslated +Une transcription d'un chant grégorien en notation moderne s'obtient +grâce à quelques simples artifices. +@b{Hampes}. La gravure des hampes s'annule en supprimant le graveur +@code{Stem_engraver} du contexte de voix : -@node Notation éditoriale -@subsection Notation éditoriale -@translationof Editorial markings - -@untranslated +@example +\layout @{ + ... + \context @{ + \Voice + \remove "Stem_engraver" + @} +@} +@end example -@menu -* Altérations accidentelles suggérées:: -* Notation du rythme dans la musique baroque:: -@end menu +Certaines transcriptions laissent néanmoins apparaître +occasionnellement des hampes, notamment pour indiquer la transition +entre un récitatif monodique et une phrase mélodique. Il suffit en +pareil cas d'utiliser plutôt @code{\override Stem #'transparent = ##t} +ou @code{\override Stem #'length = #0} puis, en cas de besoin, recourir +à une clause @code{\once \override Stem #'transparent = ##f} comme dans +l'exemple ci-dessous. N'oubliez pas que les crochets aussi doivent +disparaître, grâce à un @code{\override Flag #'transparent = ##t}. + +@b{Temps}. En matière de chant non mesuré, plusieurs alternatives +s'offrent à vous. + +La suppression du @code{Time_signature_engraver} du contexte +@code{Staff} ne produit aucun effet négatif. Une alternative serait de +rendre la métrique transparente, ce qui par contre préservera l'espace +qu'elle occupe. + +Dans de nombreux cas, une clause @code{\set Score.timing = ##f} donne de +bons résultats. On pourrait aussi utiliser @code{\CadenzaOn} et +@code{\CadenzaOff}. + +Rien de plus radical que de supprimer du contexte @code{Staff} le +@code{Bar_engraver} pour ne pas voir de barre de mesure. Là aussi, une +clause @code{\override BarLine #'transparent = ##t} vous permettra d'en +afficher une au besoin. + +Dans de nombreuses transcriptions, le récitatif fait apparaître une +brève au lieu de la répétition d'une même note. Le texte psalmodié se +présente alors sous la forme d'une unique syllabe alignée à +gauche : + +@lilypond[verbatim,ragged-right] +\include "gregorian.ly" +chant = \relative c' { + \clef "G_8" + c\breve c4 b4 a c2 c4 \divisioMaior + c\breve c4 c f, f \finalis +} -@node Altérations accidentelles suggérées -@unnumberedsubsubsec Altérations accidentelles suggérées -@translationof Annotational accidentals +verba = \lyricmode { + \once \override LyricText #'self-alignment-X = #-1 + "Noctem quietam et" fi -- nem per -- fec -- tum + \once \override LyricText #'self-alignment-X = #-1 + "concedat nobis Dominus" om -- ni -- po -- tens. +} +\score { + \new Staff << + \new Voice = "melody" \chant + \new Lyrics = "one" \lyricsto melody \verba + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + \remove "Bar_engraver" + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + } + } +} +@end lilypond +Ceci fonctionne bien tant que le texte ne risque pas de déborder de la +ligne. Si tel était le cas, on pourrait plutôt ajouter des notes +masquées, ici en jouant aussi sur la visibilité des hampes : -@cindex MensuralVoiceContext -@cindex MensuralStaffContext +@lilypond[verbatim,ragged-right] +\include "gregorian.ly" +chant = \relative c' { + \clef "G_8" + \set Score.timing = ##f + c\breve \override NoteHead #'transparent = ##t c c c c c + \revert NoteHead #'transparent + \override Stem #'transparent = ##f \stemUp c4 b4 a + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t c2 c4 \divisioMaior + c\breve \override NoteHead #'transparent = ##t c c c c c c c + \revert NoteHead #'transparent c4 c f, f \finalis +} -Les contextes @code{MensuralVoiceContext} et -@code{MensuralStaffContext} permettent de graver des chants -dans le style mesuré. Ces contextes initialisent -les propriétés de tous les autres contextes et objets graphiques à des -valeurs adéquates, de telle sorte que vous pouvez tout de suite vous -lancer dans la saisie de votre chant comme ci-après@tie{}: +verba = \lyricmode { + No -- ctem qui -- e -- tam et fi -- nem per -- fec -- tum + con -- ce -- dat no -- bis Do -- mi -- nus om -- ni -- po -- tens. +} -@lilypond[quote,ragged-right,verbatim] \score { - << - \new MensuralVoice = "discantus" \transpose c c' { - \override Score.BarNumber #'transparent = ##t { - c'1\melisma bes a g\melismaEnd - f\breve - \[ f1\melisma a c'\breve d'\melismaEnd \] - c'\longa - c'\breve\melisma a1 g1\melismaEnd - fis\longa^\signumcongruentiae - } - } - \new Lyrics \lyricsto "discantus" { - San -- ctus, San -- ctus, San -- ctus + \new Staff << + \new Voice = "melody" \chant + \new Lyrics \lyricsto "melody" \verba + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + \override BarLine #'transparent = ##t + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } + } +} +@end lilypond + +Autre situation courante, la transcription de chant neumatique contenant +des mélismes, autrement dit, une psalmodie dans laquelle le nombre de +syllabes varie selon les notes. Vous pourriez alors avoir envie +d'indiquer clairement le découpage des groupes de syllabes ainsi que +les subdivisions d'un mélisme. Le moyen pour y parvenir consiste à +utiliser une métrique fixe, mettons @code{\time 1/4}, et de faire +en sorte que chaque syllabe ou groupe de notes tienne dans une mesure, à +l'aide de triolets ou de durées inférieures. Tant que les barres de +mesure et autres éléments rythmiques restent transparents, et que +l'espacement en regard des barres est accru, la représentation en +notation moderne devrait être tout à fait satisfaisante. + +Pour une répartition plus homogène de syllabes de longueur différente -- +telles que @qq{-ri} et @qq{-rum} -- selon les groupes de note, une +solution consiste à figer la propriété @code{'X-extent} de l'objet +@code{LyricText}. Ceci s'avère moins fastidieux que d'ajouter des +syllabes sous forme de @emph{markup}. Des ajustements supplémentaires +peuvent se réaliser avec des @qq{notes silencieuses} (@code{s}). + +@lilypond[verbatim,quote] +spiritus = \relative c' { + \time 1/4 + \override Lyrics.LyricText #'X-extent = #'(0 . 3) + d4 \times 2/3 { f8 a g } g a a4 g f8 e + d4 f8 g g8 d f g a g f4 g8 a a4 s + \times 2/3 { g8 f d } e f g a g4 +} + +spirLyr = \lyricmode { + Spi -- ri -- _ _ tus _ Do -- mi -- ni _ re -- ple -- _ vit _ + or -- _ bem _ ter -- ra -- _ rum, al -- _ _ le -- _ lu + -- _ ia. +} +\score { + \new Staff << + \new Voice = "chant" \spiritus + \new Lyrics = "one" \lyricsto "chant" \spirLyr >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + \override BarLine #'X-extent = #'(-1 . 1) + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \override Beam #'transparent = ##t + \override BarLine #'transparent = ##t + \override TupletNumber #'transparent = ##t + } + } } @end lilypond +@c extract from 1.6.1.1 + +@c @seealso +@c ... and reference to other sections ... + + +@node Éditions ancienne et moderne à partir d'une même source +@unnumberedsubsubsec Éditions ancienne et moderne à partir d'une même source +@translationof Ancient and modern from one source + +@c TODO Add text +@c Here among others the snippets about reducing note length +@emph{En cours de rédaction} + +@c @seealso +@c ... and reference to other sections ... + + +@node Notation éditoriale +@unnumberedsubsubsec Notation éditoriale +@translationof Editorial markings + +@emph{En cours de rédaction} + + +@c @node Baroque rhythmic notation +@c @unnumberedsubsubsec Baroque rhythmic notation + +@c TODO Add text +@c try Till Rettig +@c Add example of white note heads: +@c In the french baroque some composers used white note heads in slow pieces, +@c mainly in 3/2-time. A quarter looks there like a eighth with a white +@c note head. (Franz-Rudolf Kuhnen) + +@c TODO Add example of this: +@c I was referring to e.g. notated a8. a16, which should, if I +@c remember correctly, be interpreted more like a8.. a32 (in the french +@c style). The editor might want to show that rythmic figure above the +@c staff as an hint to performers. (Karl Hammer) -@node Notation du rythme dans la musique baroque -@unnumberedsubsubsec Notation du rythme dans la musique baroque -@translationof Baroque rhythmic notation +@c TBC -@untranslated +@c @seealso +@c ... and reference to other sections ... diff --git a/Documentation/fr/notation/changing-defaults.itely b/Documentation/fr/notation/changing-defaults.itely index 05bb50dad7..2ffa01bf4f 100644 --- a/Documentation/fr/notation/changing-defaults.itely +++ b/Documentation/fr/notation/changing-defaults.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: Gilles Thibault @@ -22,12 +21,12 @@ LilyPond est conçu pour engendrer, par défaut, des partitions de la plus haute qualité. Cependant, on peut parfois avoir à modifier cette mise en forme par défaut. Celle-ci est réglée par tout un ensemble de @qq{leviers et manettes} plus connus sous le terme de @qq{propriétés}, -dont ce chapitre ne cherche pas à faire l'inventaire exhaustif -- vous -en trouverez un @rlearningnamed{Retouche de partition,apperçu} dans le -manuel d'initiation. Le propos est plutôt ici de mettre en évidence les -différents groupes auxquels s'apparentent ces contrôles, et d'expliquer -comment trouver le bon levier pour obtenir tel ou tel effet en -particulier. +dont ce chapitre ne cherche pas à faire l'inventaire exhaustif -- le +chapitre @rlearning{Retouche de partition} du manuel d'initiation vous +en propose un aperçu. Le propos est plutôt ici de mettre en évidence +les différents groupes auxquels s'apparentent ces contrôles, et +d'expliquer comment trouver le bon levier pour obtenir tel ou tel effet +en particulier. @cindex Référence des propriétés internes @@ -36,45 +35,19 @@ document séparé, @rinternalsnamed{Top,la référence des propriétés internes}. Ce guide répertorie toutes les variables, fonctions et autres options que LilyPond met à votre disposition. Il est consultable @c leave the @uref as one long line. -@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en@tie{}ligne}, -au format HTML, mais est également inclus dans la documentation +@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,en ligne}, +au format HTML ; il est également inclus dans la documentation fournie avec le logiciel. En sous-main, LilyPond se sert du langage Scheme (un dérivé du LISP) comme infrastructure. Modifier les choix de mise en page revient à pénétrer dans les entrailles du programme, et de ce fait requiert l'emploi du Scheme. Les fragments de Scheme, dans un fichier -@file{.ly}, sont introduits par le caractère @emph{hash}, (@code{#}, -improprement surnommé @qq{dièse}). -@footnote{Le @rextend{Tutoriel Scheme} fournit quelques notions de -base pour saisir des nombres, des listes, des chaînes de caractères ou -des symboles, en Scheme.} - -Il est quatre domaines dans lesquels on peut modifier les réglages par -défaut@tie{}: - -@itemize @bullet -@item -La notation automatique, ce qui revient à modifier la manière dont les -éléments de notation sont automatiquement créés -- par exemple, les -règles de ligature. - -@item -L'apparence, qui se rapporte aux objets pris individuellement -- ainsi -de la direction des hampes, du placement des indications textuelles. - -@item -Les contextes, qui recouvrent la manière dont les évènements musicaux -sont représentés sous forme de notation -- par exemple, le fait -d'attribuer un chiffre de mesure distinct à chaque portée. - -@item -La mise en page, autrement dit les marges, l'espacement, la taille du -papier@tie{}; tous ces facteurs font l'objet des chapitres -@ref{Généralités en matière d'entrée et sortie} et -@ref{Gestion de l'espace}. -@end itemize - +@file{.ly}, sont introduits par le caractère @emph{hash} (@code{#}), +improprement surnommé @qq{dièse}. +@footnote{Le @rextend{Tutoriel Scheme} fournit quelques notions de base +pour saisir des nombres, des listes, des chaînes de caractères ou des +symboles, en Scheme.} @menu * Contextes d'interprétation:: @@ -85,6 +58,7 @@ papier@tie{}; tous ces facteurs font l'objet des chapitres * Utilisation de fonctions musicales:: @end menu + @node Contextes d'interprétation @section Contextes d'interprétation @translationof Interpretation contexts @@ -98,10 +72,9 @@ Cette section traite des contextes. * Modification des greffons de contexte:: * Modification des réglages par défaut d'un contexte:: * Définition de nouveaux contextes:: -* Alignement des contextes:: +* Ordonnancement des contextes:: @end menu - @seealso Manuel d'initiation : @rlearning{Contextes et graveurs}. @@ -111,7 +84,7 @@ Fichiers d'initialisation : @file{ly/performer-init.ly}. Morceaux choisis : -@rlsr{Contexts and engravers}. +@rlsrnamed{Contexts and engravers, Contextes et graveurs}. Référence des propriétés internes : @rinternals{Contexts}, @@ -147,6 +120,7 @@ further explanation and with links to the IR. @c TODO Describe propagation of property values -td +Les contextes sont hiérarchisés : @menu * Score -- le père de tous les contextes:: @@ -155,61 +129,484 @@ further explanation and with links to the IR. * Contextes de bas niveau -- les voix:: @end menu + @node Score -- le père de tous les contextes @unnumberedsubsubsec Score -- le père de tous les contextes @translationof Score - the master of all contexts -@untranslated +Il s'agit en l'occurrence du contexte le plus élevé, autrement dit le +plus important, en matière de notation. En effet, c'est au niveau de la +partition -- @emph{score} en anglais -- que se gèrent le temps et la +tonalité ; c'est donc là qu'il faut s'assurer que les différents +éléments, tels les clefs, métriques et armures sont bien répercutés sur +toutes les portées. + +Dès lors que LilyPond rencontre un bloc @code{\score @{@dots{}@}} +ou @code{\layout @{@dots{}@}}, se crée implicitement un contexte +@code{Score}. @node Contextes de haut niveau -- les systèmes @unnumberedsubsubsec Contextes de haut niveau -- les systèmes @translationof Top-level contexts - staff containers -@untranslated +De nombreuses partitions sont écrites sur plus d'une portée. Ces +portées peuvent être regroupées de différentes manières. + +@strong{@emph{StaffGroup}} + +Le groupe de portées est attaché par un crochet, et les barres de mesure +sont d'un seul tenant, de la première à la dernière portée. Le +@code{StaffGroup} constitue le regroupement le plus simple. + +@strong{@emph{ChoirStaff}} + +Ce regroupement est identique au @code{StaffGroup}, à ceci près que les +barres de mesure ne traversent pas l'espace inter-portées. + +@strong{@emph{GrandStaff}} + +Le groupe de portées est attaché par une accolade sur la gauche, et les +barres de mesure sont d'un seul tenant. + +@strong{@emph{PianoStaff}} + +Ce regroupement est identique au @code{GrandStaff}, à ceci près que le +nom de l'instrument sera directement attaché au système. @node Contextes de niveau intermédiaire -- les portées @unnumberedsubsubsec Contextes de niveau intermédiaire -- les portées @translationof Intermediate-level contexts - staves -@untranslated +@strong{@emph{Staff}} + +La portée prend en charge les clefs, barres de mesure, armures et les +altérations accidentelles. Un contexte @code{Staff} peut contenir +plusieurs contextes @code{Voice}. + +@strong{@emph{RhythmicStaff}} + +De même nature qu'un @code{Staff}, mais destiné à n'imprimer que du +rythme. Quelle que soit la hauteur, les notes seront imprimées sur une +même et unique ligne. + +@strong{@emph{TabStaff}} + +Ce contexte permet de générer des tablatures. La mise en forme par +défaut correspond à une tablature pour guitare, sur six lignes. + +@strong{@emph{DrumStaff}} + +Contexte dévolu tout spécialement aux parties de percussion ; il +peut contenir plusieurs @code{DrumVoice}. + +@strong{@emph{VaticanaStaff}} + +Identique au contexte @code{Staff}, à ceci près qu'il est tout +particulièrement adapté au grégorien. + +@strong{@emph{MensuralStaff}} + +Identique au contexte @code{Staff}, à ceci près qu'il est tout +particulièrement adapté au style mensural de musique ancienne. @node Contextes de bas niveau -- les voix @unnumberedsubsubsec Contextes de bas niveau -- les voix @translationof Bottom-level contexts - voices -@untranslated +Les contextes de niveau @qq{voix} initialisent un certain nombre de +propriétés et activent les graveurs appropriés. S'agissant de contextes +du plus bas niveau, ils ne sauraient contenir d'autre contexte. + +@strong{@emph{Voice}} + +Correspond à une voix positionnée sur une portée. Le contexte +@code{Voice} s'occupe des indications de nuance, des hampes, des +ligatures, des scripts placés au-dessus ou au-dessous de la portée, des +différentes liaisons et des silences. Lorsque plusieurs voix doivent +cohabiter sur la même portée, il est indispensable de les instancier +explicitement. + +@strong{@emph{VaticanaVoice}} + +Fonctionnant comme le contexte @code{Voice}, il est tout +particulièrement destiné à gérer le grégorien. + +@strong{@emph{MensuralVoice}} + +Fonctionnant comme le contexte @code{Voice}, il est tout +particulièrement adapté aux musiques anciennes. + +@strong{@emph{Lyrics}} + +Correspond à une voix contenant des paroles. Le contexte @code{Lyrics} +gère l'impression d'une ligne de paroles. + +@strong{@emph{DrumVoice}} + +Contexte de voix dévolu à une portée de percussions. + +@strong{@emph{FiguredBass}} + +Contexte prenant en charge les objets @code{BassFigure} -- la basse +chiffrée -- créés à partir de ce qui a été saisi en mode +@code{\figuremode}. + +@strong{@emph{TabVoice}} + +Contexte de voix dévolu au contexte @code{TabStaff}, il est +habituellement créé implicitement. + +@strong{@emph{CueVoice}} + +Contexte de voix utilisé essentiellement dans le cadre de citations +ajoutées à une portée -- voir @ref{Mise en forme d'une citation}. Il +est habituellement créé implicitement. + +@strong{@emph{ChordNames}} + +Permet d'imprimer des noms d'accord. + +@ignore +TODO + +Then the following, which I don't know what to do with: + + * GregorianTranscriptionVoice + * GregorianTranscriptionStaff + + * FretBoards + Engraves fretboards from chords. Not easy... Not +documented. + There is now some documentation on FretBoards in the NR, under + instrument-specific notation -- cds. + + * NoteNames + + * Global + Hard coded entry point for LilyPond. Cannot be tuned. + * Devnull + Silently discards all musical information given to this +context. + +@end ignore @node Création d'un contexte @subsection Création d'un contexte @translationof Creating contexts -@untranslated +@c TODO more complete descriptions rather than learning style + +Lorsqu'une partition ne comporte qu'une portée avec une seule voix, les +contextes sont créés automatiquement. Dès que la structure s'étoffe, il +devient nécessaire de les créer explicitement, en suivant l'une des +trois méthodes suivantes : + +@itemize + +@item +La commande la plus simple à utiliser est @code{\new} ; c'est aussi +la plus courte. Elle se place juste avant une expression musicale et se +libelle ainsi : + +@funindex \new +@cindex nouveau contexte +@cindex contexte, création + +@example +\new @var{type} @var{expression_musicale} +@end example + +@noindent +où @var{type} est le nom d'un contexte (par ex. @code{Staff} ou +@code{Voice}). Cette commande crée un nouveau contexte et y interprète +le contenu de l'@var{expression_musicale}. + +C'est ce qui se passe lorsqu'une partition comporte plusieurs portées : +chaque partie qui doit apparaître sur une portée spécifique est précédée +d'un @code{\new Staff}. + +@lilypond[quote,verbatim,relative=2,ragged-right] +<< + \new Staff { c4 c } + \new Staff { d4 d } +>> +@end lilypond + +La commande @code{\new} vous permet aussi d'attribuer un nom au +contexte que vous créez. + +@example +\new @var{type} = @var{nom} @var{musique} +@end example +Le nom que vous spécifiez ne pourra être utilisé que s'il n'a pas déjà +été attribué à un autre contexte. + +@funindex \context +@item +Tout comme @code{\new}, la commande @code{\context} affectera une +expression musicale à un objet contextuel ; elle lui attribuera de +surcroît un nom. La commande @code{\context} s'emploie de la façon +suivante : + +@example +\context @var{type} = @var{nom} @var{musique} +@end example + +LilyPond va dans un premier temps vérifier l'existence d'un contexte du +type @var{type} appelé @var{nom}. En l'absence d'un tel contexte, +LilyPond crée un nouveau contexte du nom que vous avez spécifié. Cette +procédure est tout à fait pertinente lorsque vous faites appel à ce +contexte particulier par la suite. Prenons le cas d'un chant : +nous commençons par nommer la ligne mélodique, + +@example +\context Voice = "@b{tenor}" @var{musique} +@end example + +@noindent +de telle sorte que le texte s'aligne correctement sur les notes : + +@example +\new Lyrics \lyricsto "@b{tenor}" @var{paroles} +@end example + +@noindent + +L'une des autres utilisations de contextes explicitement nommés consiste +à fusionner deux expressions musicales dans un même contexte. Dans +l'exemple qui suit, notes et articulations sont saisies indépendamment. + +@example +music = @{ c4 c4 @} +arts = @{ s4-. s4-> @} +@end example + +Elles sont ensuite fusionnées par affectation au même contexte +@code{Voice} : + +@example +<< + \new Staff \context Voice = "A" \music + \context Voice = "A" \arts +>> +@end example +@lilypond[quote,ragged-right] +music = { c4 c4 } +arts = { s4-. s4-> } +\relative c'' << + \new Staff \context Voice = "A" \music + \context Voice = "A" \arts +>> +@end lilypond + +Grâce à ce mécanisme, vous pouvez tout à fait générer une version +@qq{Urtext} (édition originale) et optionnellement ajouter distinctement +des articulations à ces mêmes notes. + +@cindex création de contextes + +@item +Voici une troisième manière de créer un contexte : + +@example +\context @var{type} @var{musique} +@end example + +@noindent +Très comparable à une déclaration @code{\context = @var{nom}}, +cette méthode permet de s'affranchir du type de contexte. + +Cette variante s'utilise lorsque les expression musicales peuvent être +interprétées à différents niveaux, comme par exemple lorsque intervient +la commande @code{\applyOutput} -- pour de plus amples détails, voir +@rextend{Application d'une fonction à tous les objets de mise en forme}. +En l'absence de @code{\context} explicite, LilyPond considère qu'il +s'agit de @code{Voice}. + +@example +\applyOutput #'@var{contexte} #@var{fonction} % s'applique à Voice +@end example + +Vous devrez respecter ces formulations si la fonction doit +s'interpréter au niveau @code{Score} ou @code{Staff} : + +@example +\applyOutput #'Score #@var{fonction} +\applyOutput #'Staff #@var{fonction} +@end example + +@end itemize @node Conservation d'un contexte @subsection Conservation d'un contexte @translationof Keeping contexts alive -@untranslated +@cindex contextes, maintien actif +@cindex contextes, durée de vie + +En règle générale, un contexte disparaît dès qu'il n'y a plus rien à +faire. Autrement dit, un contexte @code{Voice} disparaît dès après le +dernier événement qu'il contient, et un contexte @code{Staff} dès que +les contextes @code{Voice} qu'il supporte ne contiennent plus rien. +Ceci peut avoir des conséquences néfastes lorsqu'il est fait référence à +un contexte alors disparu, comme dans le cas d'un changement de portée +introduit par la commande @code{\change}, l'association de paroles à +l'aide de la commande @code{\lyricsto} ou si des événements surviennent +à nouveau pour ce contexte précédemment actif. + +Une exception cependant à cette règle : en présence d'un contexte +@code{Staff} ou dans une construction @code{<<...>>}, un seul des +contextes @code{Voice} inclus restera actif jusqu'à la fin du contexte +@code{Staff} ou de la construction @code{<<...>>}, y compris s'il y +a des @qq{trous}. Le contexte alors persistant sera le premier +rencontré dans la construction @code{@{...@}} sans tenir compte des +éventuels @code{<<...>>} qu'elle pourrait contenir. + +Un contexte restera actif dès lors qu'il s'y passera toujours quelque +chose. Un contexte @code{Staff} restera actif si l'une des voix qu'il +supporte est toujours active. L'un des moyens de s'en assurer +consiste à ajouter des silences invisibles parallèlement à la musique. +Vous devrez les ajouter dans tous les contextes @code{Voice} qui doivent +rester actifs. Nous vous conseillons, lorsque plusieurs voix +interviennent de manière sporadique, de toutes les maintenir actives +plutôt que de vous fier aux exceptions mentionnées plus haut. + +Dans l'exemple suivant, les deux voix A et B sont maintenues actives +jusqu'à la fin du morceau : + +@lilypond[quote,verbatim] +musicA = \relative c'' { d4 d d d } +musicB = \relative c'' { g4 g g g } +keepVoicesAlive = { + << + \new Voice = "A" { s1*5 } % Keep Voice "A" alive for 5 bars + \new Voice = "B" { s1*5 } % Keep Voice "B" alive for 5 bars + >> +} + +music = { + \context Voice = "A" { + \voiceOneStyle + \musicA + } + \context Voice = "B" { + \voiceTwoStyle + \musicB + } + \context Voice = "A" { \musicA } + \context Voice = "B" { \musicB } + \context Voice = "A" { \musicA } +} + +\score { + \new Staff << + \keepVoicesAlive + \music + >> +} +@end lilypond + +@cindex paroles, alignement sur une mélodie épisodique + +L'exemple suivant illustre la manière d'écrire selon cette méthode une +mélodie discontinue à laquelle se rattachent des paroles. Dans la +réalité, mélodie et accompagnement feraient l'objet de portées séparées. + +@lilypond[quote,verbatim] +melody = \relative c'' { a4 a a a } +accompaniment = \relative c' { d4 d d d } +words = \lyricmode { These words fol -- low the mel -- o -- dy } +\score { + << + \new Staff = "music" { + << + \new Voice = "melody" { + \voiceOne + s1*4 % Keep Voice "melody" alive for 4 bars + } + { + \new Voice = "accompaniment" { + \voiceTwo + \accompaniment + } + << + \context Voice = "melody" { \melody } + \context Voice = "accompaniment" { \accompaniment } + >> + \context Voice = "accompaniment" { \accompaniment } + << + \context Voice = "melody" { \melody } + \context Voice = "accompaniment" { \accompaniment } + >> + } + >> + } + \new Lyrics \with { alignAboveContext = #"music" } + \lyricsto "melody" { \words } + >> +} +@end lilypond + +Une autre méthode, qui s'avère plus productive dans nombre de cas, +consiste à maintenir active la ligne mélodique en y insérant des +silences invisibles tout au long de l'accompagnement : + +@lilypond[quote,verbatim] +melody = \relative c'' { + s1 % skip a bar + a4 a a a + s1 % skip a bar + a4 a a a +} +accompaniment = \relative c' { + d4 d d d + d4 d d d + d4 d d d + d4 d d d +} +words = \lyricmode { These words fol -- low the mel -- o -- dy } + +\score { + << + \new Staff = "music" { + << + \new Voice = "melody" { + \voiceOne + \melody + } + \new Voice = "accompaniment" { + \voiceTwo + \accompaniment + } + >> + } + \new Lyrics \with { alignAboveContext = #"music" } + \lyricsto "melody" { \words } + >> +} +@end lilypond @node Modification des greffons de contexte @subsection Modification des greffons de contexte @translationof Modifying context plug-ins +@c TODO Should this be Modifying engravers or Modifying contexts? + Les contextes, tels que @code{Score} ou @code{Staff}, ne contiennent -pas que des propriétés@tie{}; ils mettent également en œuvre certains +pas que des propriétés ; ils mettent également en œuvre certains sous-programmes (@emph{plug-ins} pour employer le terme consacré) nommés @qq{graveurs} (@emph{engravers} pour reprendre le terme anglais). Ces sous-programmes sont chargés de créer les différents éléments de -notation@tie{}: on trouve ainsi dans le contexte @code{Voice} un graveur +notation : on trouve ainsi dans le contexte @code{Voice} un graveur @code{Note_heads_engraver}, chargé des têtes de notes et, dans le -contexte @code{Staff}, un graveur @code{Key_signature_engraver}, chargé -de l'armure. +contexte @code{Staff}, un graveur @code{Key_engraver}, chargé de +l'armure. Vous trouverez une description exhaustive de chaque graveur dans @ifhtml @@ -227,15 +624,14 @@ Référence des propriétés internes @expansion{} Translation @expansion{} Cont @end ifnothtml répertorie les graveurs mis en œuvre. - On peut faire, au moyen de ces graveurs, sa propre @qq{cuisine}, en modifiant les contextes à volonté. -Lorsque un contexte est créé, par la commande @code{\new} ou +Lorsqu'un contexte est créé, par la commande @code{\new} ou @code{\context}, on peut y adjoindre un bloc @code{\with} (en anglais -@q{avec}), dans lequel il est possible d'ajouter (commande +@qq{avec}), dans lequel il est possible d'ajouter (commande @code{\consists}) ou d'enlever (commande @code{\remove}) des -graveurs@tie{}: +graveurs : @funindex \with @@ -253,10 +649,10 @@ graveurs@tie{}: @end example @noindent -Ici les points de suspension @dots{} devront être remplacés par les noms +Ici les points de suspension @dots{} devront être remplacés par le nom des graveurs désirés. Dans l'exemple suivant, on enlève du contexte @code{Staff}, la métrique (graveur @code{Time_signature_engraver}) -et la clé (graveur @code{Clef_engraver}). +et la clef (graveur @code{Clef_engraver}). @lilypond[quote,relative=1,verbatim] << @@ -272,12 +668,12 @@ et la clé (graveur @code{Clef_engraver}). >> @end lilypond -La clé et le chiffre de mesure ont disparu de la deuxième portée. C'est -une méthode quelque peu radicale, puisqu'elle affectera toute la portée -jusqu'à la fin de la partition. L'espacement s'en trouve également -affecté, ce qui peut être ou non l'effet recherché. Une méthode plus -sophistiquée aurait été de rendre ces objets transparents (voir -@rlearning{Visibilité et couleur des objets}). +La clef et le chiffre de mesure ont disparu de la deuxième portée. +C'est une méthode quelque peu radicale, puisqu'elle affectera toute la +portée jusqu'à la fin de la partition. L'espacement s'en trouve +également affecté, ce qui peut être ou non l'effet recherché. Une +méthode plus sophistiquée aurait été de rendre ces objets transparents +(voir @rlearning{Visibilité et couleur des objets}). Dans l'exemple suivant, voici une mise en pratique plus utile. En temps normal, les barres de mesure et la métrique sont synchronisées @@ -318,225 +714,389 @@ peut désormais avoir sa propre métrique. } @end lilypond +@knownissues + +L'ordre dans lequel les graveurs sont spécifiés correspond à leur ordre +d'apparition dans le processus d'élaboration de la partition. En règle générale, l'ordre dans lequel les graveurs sont mentionnés importe peu. Il se peut toutefois qu'un graveur écrive une propriété qui sera interprétée par un autre, ou qu'un graveur crée un objet -graphique qui sera traité par un autre@tie{}; l'ordre d'apparition de -ces graveurs prendra lors tout son importance. - -Pour information, les ordonnancements suivants sont importants@tie{}: -le @code{Bar_engraver} devrait toujours être le premier@tie{}; le -@code{New_fingering_engraver} doit toujours précéder le -@code{Script_column_engraver}. Nous vous conseillons, pour les autres, -de vérifier les évenntuelles dépendances. +graphique qui sera traité par un autre ; l'ordre d'apparition de +ces graveurs prendra alors tout son importance. -@c deprecated node: delete. --fv -@ignore -@n ode Retouches de mise en forme au sein des contextes -@s ubsection Retouches de mise en forme au sein des contextes -@t ranslationof Layout tunings within contexts +Pour information, les ordonnancements suivants sont importants : -Chaque contexte est chargé de créer plusieurs types d'objets graphiques. -Il contient également les réglages nécessaires pour chacun de ces -objets. Si l'on modifie ces réglages, les objets n'auront plus la même -apparence. +@itemize +@item +le @code{Bar_engraver} devrait toujours être le premier ; -La syntaxe employée pour ce faire est +@item +le @code{New_fingering_engraver} doit toujours précéder le +@code{Script_column_engraver}, -@example -\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} -@end example +@item +le @code{Timing_translator} doit toujours précéder le +@code{Bar_number_engraver}. -Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes) -ou @code{NoteHead} (les têtes de note)@tie{}; @var{propriété} est une -variable (désignée par un symbole, ce qui explique l'apostrophe) -employée par le système de mise en page. La sous-section -@ref{Élaboration d'une retouche} vous aidera à savoir quoi mettre à la -place de @var{objet}, @var{propriété} et @var{valeur}@tie{}; notre -propos n'est ici que d'examiner l'emploi de cette commande. +@end itemize -La commande suivante@tie{}: +@seealso +Fichiers d'initialisation : +@file{ly/engraver-init.ly}. -@verbatim -\override Staff.Stem #'thickness = #4.0 -@end verbatim -@noindent -rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui -signifie qu'elles sont 1,3 fois plus épaisses que les lignes de la -portée). Dans la mesure où nous avons indiqué @code{Staff} comme -contexte, ce réglage ne s'appliquera qu'à la portée courante@tie{}; les -autres portées demeureront intactes. +@node Modification des réglages par défaut d'un contexte +@subsection Modification des réglages par défaut d'un contexte +@translationof Changing context default settings -@lilypond[quote,verbatim,relative=2,fragment] -c4 -\override Staff.Stem #'thickness = #4.0 -c4 -c4 -c4 -@end lilypond +@cindex réglages par défaut, modification +@cindex contexte, modification des propriétés par défaut -La commande @code{\override} modifie donc la définition de l'objet -@code{Stem} dans le contexte @code{Staff}@tie{}; toutes les hampes qui -suivent seront affectées. Tout comme avec la commande @code{\set}, -l'argument @var{contexte} peut être omis, auquel cas le contexte par -défaut (ici, @code{Voice}) sera employé. La commande @code{\once} -permet de n'appliquer la modification qu'une seule fois. +Les propriétés des contextes et objets graphiques se modifient à l'aide +des commandes @code{\set} et @code{\override}, comme indiqué à la +rubrique @ref{Modification de propriétés}. Ces commandes créent des +événements musicaux qui feront que la modification produira ses effets +dès l'instant où la musique est traitée. -@lilypond[quote,fragment,verbatim,relative=2] -c4 -\once \override Stem #'thickness = #4.0 -c4 -c4 -@end lilypond +Le propos est ici de voir comment modifier les valeurs @emph{par défaut} +des propriétés de contexte ou d'objet graphique dès la création de ces +contextes. Deux manières de procéder sont envisageables : l'une +consiste à modifier les valeurs pour tous les contextes d'un même type, +l'autre s'attache à adapter les valeurs par défaut d'une instance +particulière d'un contexte. -La commande @code{\override} doit être entrée @emph{avant} l'objet -concerné. Ainsi, lorsque l'on veut altérer un objet qui se prolonge, -tel qu'une liaison, une ligature ou tout autre objet dit @emph{Spanner}, -la commande @code{\override} doit être saisie avant que l'objet soit -créé. +@menu +* Modification de tous les contextes d'un même type:: +* Modification d'un contexte particulier:: +* Ordre de préséance:: +@end menu -@lilypond[quote,fragment,verbatim,relative=2] -\override Slur #'thickness = #3.0 -c8[( c -\override Beam #'beam-thickness = #0.6 -c8 c]) -@end lilypond -@noindent -Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la -ligature (@emph{Beam}). En effet, le code qui lui est relatif n'a pas -été inséré avant le début de la ligature, et demeure donc sans effet. +@node Modification de tous les contextes d'un même type +@unnumberedsubsubsec Modification de tous les contextes d'un même type +@translationof Changing all contexts of the same type -De même que la commande @code{\unset}, la commande @code{\revert} défait -ce qui a été fait par une commande @code{\override}. Tout comme avec -@code{\unset}, elle ne peut annuler que les réglages effectués dans le -même contexte. Ainsi dans l'exemple suivant, la commande @code{\revert} -est sans effet. +@cindex \context dans un bloc \layout -@example -\override Voice.Stem #'thickness = #4.0 -\revert Staff.Stem #'thickness -@end example +@funindex \context +@funindex \layout -Il existe, à l'intérieur même de certaines propriétés, des options que -l'on nomme @q{sous-propriétés}. La syntaxe est alors +La personnalisation des réglages par défaut d'un contexte, qu'il +s'agisse de @code{Score}, @code{Staff} ou @code{Voice}, peut se réaliser +indépendamment de la musique dans un bloc @code{\layout} -- placé dans +le bloc @code{\score} auquel ces modifications doivent s'appliquer -- au +moyen d'un bloc @code{\context}. -@c leave this as a long long @example -\override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur} +\layout @{ + \context @{ + \Voice + [réglage de contexte pour tous les contextes @emph{Voice}] + @} + \context @{ + \Staff + [réglage de contexte pour tous les contextes @emph{Staff}] + @} +@} @end example -@noindent -Ainsi, par exemple@tie{}: - -@example -\override Stem #'(details beamed-lengths) = #'(4 4 3) -@end example +La spécification des adaptations peut se faire de différentes manières : +@itemize +@item +à l'aide d'une commande @code{\override}, sans lui adjoindre le nom du +contexte : -@seealso -Référence des propriétés internes : -@rinternals{OverrideProperty}, -@rinternals{RevertProperty}, -@rinternals{PropertySet}, -@rinternals{Backend}, -@rinternals{All layout objects}. +@c KEEP LY +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Hampes épaisses" a a a + a4 a a\ff a + } + \layout { + \context { + \Staff + \override Stem #'thickness = #4.0 + } + } +} +@end lilypond +@item +en définissant directement une propriété de contexte : -@knownissues +@c KEEP LY +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Fontes plus petites" a a a + a4 a a\ff a + } + \layout { + \context { + \Staff + fontSize = #-4 + } + } +} +@end lilypond -La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon -très stricte. Des références cycliques dans des valeurs Scheme peuvent -de ce fait interrompre, ou faire planter le programme -- ou bien les -deux. -@end ignore -@node Modification des réglages par défaut d'un contexte -@subsection Modification des réglages par défaut d'un contexte -@translationof Changing context default settings +@item +à l'aide d'une commande prédéfinie comme @code{\dynamicUp}, ou bien une +expression musicale telle que @code{\accidentalStyle "dodecaphonic"} : + +@c KEEP LY +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Nuance en surplomb" a a a + a4 a a\ff a + } + \layout { + \context { + \Voice + \dynamicUp + } + \context { + \Staff + \accidentalStyle "dodecaphonic" + } + } +} +@end lilypond -Les réglages montrés dans les sous-sections -@ref{La commande de fixation (set)}, -@ref{Modification des greffons de contexte} -@c et @c r ef{Retouches de mise en forme au sein des contextes} -peuvent également être saisis indépendamment de la musique dans le bloc -@code{\layout}, au moyen de la commande @code{\context}@tie{}: +@item +à l'aide d'une variable personnalisée contenant un bloc @code{\with} : +pour de plus amples iformations sur le bloc @code{\with}, voir +@ref{Modification d'un contexte particulier}. -@example -\layout @{ - @dots{} - \context @{ - \Staff +@c KEEP LY +@lilypond[quote,verbatim] +StaffDefauts = \with { + fontSize = #-4 +} - \set fontSize = #-2 - \override Stem #'thickness = #4.0 - \remove "Time_signature_engraver" - @} -@} -@end example +\score { + \new Staff { + \relative c'' { + a4^"Petite police" a a a + a4 a a a + } + } + \layout { + \context { + \Staff + \StaffDefauts + } + } +} +@end lilypond -Le raccourci @code{\Staff} invoque les définitions inhérentes au -contexte @code{Staff}, de façon à ce qu'elles puissent être modifiées. +@end itemize -Les lignes suivantes affecteront toutes les portées (tous les contextes -@code{Staff}) dans la partition. -@example -\set fontSize = #-2 -\override Stem #'thickness = #4.0 -\remove "Time_signature_engraver" -@end example +Les instructions destinées à modifier les propriétés peuvent se placer +dans un bloc @code{\layout} sans pour autant être incluses dans un bloc +@code{\context}. Expliciter des réglages de la sorte équivaut à inclure +les commandes de modification des propriétés au début de chacun des +contextes du type en question. Lorsque le contexte n'est pas spécifié, +@emph{tous} les contextes de bas niveau seront affectés -- voir +@ref{Contextes de bas niveau -- les voix}. La syntaxe appropriée répond +aux mêmes critères que si la commande était écrite dans le flot +musical. -@noindent -Les autres contextes peuvent être modifiés de même manière. +@c KEEP LY +@lilypond[quote,verbatim] +\score { + \new Staff { + \relative c'' { + a4^"Petite police" a a a + a4 a a a + } + } + \layout { + \accidentalStyle "dodecaphonic" + \set fontSize = #-4 + \override Voice.Stem #'thickness = #4.0 + } +} +@end lilypond -La commande @code{\set}, dans le bloc @code{\layout}, est -facultative@tie{}; aussi les lignes suivantes produiront-elles le même -effet. + +@node Modification d'un contexte particulier +@unnumberedsubsubsec Modification d'un contexte particulier +@translationof Changing just one specific context + +@cindex \with +@funindex \with + +Dans le cas d'un contexte pris individuellement, ses propriétés se +modifient à l'aide d'un bloc @code{\with}. Toutes les autres instances +de contexte appartenant au même type seront affectés des réglages +prédéfinis par LilyPond, modifiés le cas échéant par un bloc +@code{\layout}. Le bloc @code{\with} se place directement à la suite de +la commande @code{\new} @var{type-de-contexte}. @example -\context @{ - @dots{} - fontSize = #-2 +\new Staff +\with @{ + [réglages pour ce contexte pris individuellement] +@} @{ +... @} @end example +La spécification des adaptations peut se faire de différentes manières : -@knownissues +@itemize +@item +à l'aide d'une commande @code{\override}, sans lui adjoindre le nom du +contexte : -Il est impossible de stocker des modifications de contexte dans un -identificateur. +@c KEEP LY +@lilypond[quote,verbatim] +\score { + \new Staff { + \new Voice + \with { + \override Stem #'thickness = #4.0 + } + { + \relative c'' { + a4^"Hampes épaisses" a a a + a4 a a a + } + } + } +} +@end lilypond -Le raccourci @code{\Staff \RemoveEmptyStaves} détruit tous les réglages -du contexte @code{\Staff}. Pour modifier des propriétés de portées -gouvernées par @code{\Staff \RemoveEmptyStaves}, il faut le faire -impérativement @strong{après} avoir invoqué @code{\Staff -\RemoveEmptyStaves}@tie{}: +@item +en définissant directement une propriété de contexte : -@example -\layout @{ - \context @{ - \Staff \RemoveEmptyStaves +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \relative c'' { + a4^"Default font" a a a + a4 a a a + } + } + \new Staff + \with { + fontSize = #-4 + } { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + >> +} +@end lilypond - \override Stem #'thickness = #4.0 - @} -@} -@end example +@item +à l'aide d'une commande prédéfinie comme @code{\dynamicUp} : + +@c KEEP LY +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \new Voice { + \relative c'' { + a4^"Nuances en dessous" a a a + a4 a a\ff a + } + } + } + \new Staff + \with { \accidentalStyle "dodecaphonic" } + { + \new Voice + \with { \dynamicUp } + { + \relative c'' { + a4^"Nuances en surplomb" a a a + a4 a a\ff a + } + } + } + >> +} +@end lilypond + +@end itemize + + +@node Ordre de préséance +@unnumberedsubsubsec Ordre de préséance +@translationof Order of precedence + +La valeur d'une propriété qui doit s'appliquer à un instant particulier +est déterminée comme suit : + +@itemize +@item +s'il y a une instruction @code{\override} ou @code{\set} active dans le +flot d'information, sa valeur s'applique, + +@item +en l'absence de quoi sera utilisée la valeur par défaut telle que +définie dans une clause @code{\with} stipulée à l'initialisation du +contexte, + +@item +en l'absence de quoi sera retenue la valeur par défaut issue du bloc +@code{\context} approprié le plus récent dans le bloc @code{\layout}, + +@item +en l'absence de quoi s'appliqueront les réglages prédéfinis de LilyPond. +@end itemize + +@seealso +Manuel d'initiation : +@rlearning{Modification des propriétés d'un contexte}. + +Manuel de notation : +@ref{Tout savoir sur les contextes}, +@ref{Contextes de bas niveau -- les voix}, +@ref{La commande de fixation (set)}, +@ref{La commande de dérogation (override)}, +@ref{Le bloc \layout}. @node Définition de nouveaux contextes @subsection Définition de nouveaux contextes @translationof Defining new contexts +@cindex contexte, création +@cindex graveur, affectation à un contexte + +@funindex \alias +@funindex alias +@funindex \name +@funindex name +@funindex \type +@funindex type +@funindex \consists +@funindex consists +@funindex \accepts +@funindex accepts +@funindex \denies +@funindex denies + Les contextes tels que @code{Staff} ou @code{Voice} sont faits -de briques de constructions empilées. En combinant divers graveurs, +de briques de construction empilées. En combinant divers graveurs, il est possible de créer de nouveaux types de contextes. -Dans l'exemple suivant, on construit, de zéro, un nouveau contexte très +Dans l'exemple suivant on construit, de zéro, un nouveau contexte très semblable à @code{Voice}, mais qui n'imprime que des têtes de notes en -forme de barres obliques au centre de la portée. Un tel contexte, par -exemple, peut servir à indiquer un passage improvisé dans un morceau de +forme de barre oblique au centre de la portée. Un tel contexte peut +servir, par exemple, à indiquer un passage improvisé dans un morceau de jazz. @c KEEP LY @@ -551,6 +1111,7 @@ jazz. squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice } \context { \Staff @@ -564,9 +1125,8 @@ jazz. } @end lilypond - -On a rassemblé les réglages dans un bloc @code{\context}, lui-même dans -le bloc @code{\layout}@tie{}: +On a rassemblé les réglages dans un bloc @code{\context}, lui-même placé +dans le bloc @code{\layout} : @example \layout @{ @@ -576,68 +1136,63 @@ le bloc @code{\layout}@tie{}: @} @end example -En lieu et place des points (@dots{}), voici les éléments à -saisir@tie{}: +En lieu et place des points (@dots{}), voici les éléments à saisir : -@itemize @bullet -@item Tout d'abord, il convient de donner un nom @code{\name} à notre -nouveau contexte@tie{}: +Tout d'abord, il convient de donner un nom à notre nouveau contexte : @example \name ImproVoice @end example -@item Comme il est très semblable à @code{Voice}, nous souhaitons que -toutes les commandes associées au @code{Voice} déjà existant, restent +Comme il est très semblable à @code{Voice}, nous souhaitons que +toutes les commandes associées au @code{Voice} déjà existant restent valables. D'où nécessité de la commande @code{\alias}, qui va -l'associer au contexte @code{Voice}@tie{}: +l'associer au contexte @code{Voice} : @example \alias Voice @end example -@item Ce contexte doit pouvoir imprimer des notes, et des indications -textuelles@tie{}; on ajoute donc les graveurs appropriés. +Ce contexte doit pouvoir imprimer des notes et des indications +textuelles ; on ajoute donc les graveurs appropriés : @example \consists Note_heads_engraver \consists Text_engraver @end example -@item Cependant, on veut que les notes s'affichent toutes au centre de -la portée@tie{}: +Cependant, on veut que les notes s'affichent toutes au centre de +la portée : @example \consists Pitch_squash_engraver squashedPosition = #0 @end example -@noindent Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes -créées par @rinternals{Note_heads_engraver}, et les @qq{écrase} pour +créées par le @rinternals{Note_heads_engraver}, et les @qq{écrase} pour qu'elles aient toutes la même position verticale, définie par -@code{squashedPosition}@tie{}: ici il s'agit de la valeur@tie{}@code{0}, +@code{squashedPosition} : ici il s'agit de la valeur @code{0}, c'est-à-dire la ligne du milieu. -@item On veut que les notes aient la forme d'une barre oblique, sans -aucune hampe@tie{}: +On veut que les notes aient la forme d'une barre oblique, sans +aucune hampe : @example \override NoteHead #'style = #'slash \override Stem #'transparent = ##t +\override Flag #'transparent = ##t @end example -@item Afin que tous ces graveurs puissent travailler de concert, on leur +Afin que tous ces graveurs puissent travailler de concert, on leur adjoint un sous-programme spécial, introduit par la commande -@code{\type}@tie{}: il s'agit de @code{Engraver_group}, +@code{\type} : il s'agit de @code{Engraver_group}, @example \type "Engraver_group" @end example -@end itemize - -Récapitulons -- on se retrouve avec le bloc suivant@tie{}: +Récapitulons ; on se retrouve avec le bloc suivant : @example \context @{ @@ -649,6 +1204,7 @@ Récapitulons -- on se retrouve avec le bloc suivant@tie{}: squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice @} @end example @@ -659,7 +1215,7 @@ Ce n'est pas tout. En effet, on veut intégrer le nouveau contexte @code{ImproVoice} dans la hiérarchie des contextes. Tout comme le contexte @code{Voice}, sa place est au sein du contexte @code{Staff}. Nous allons donc modifier le contexte @code{Staff}, -au moyen de la commande @code{\accepts}@tie{}: +au moyen de la commande @code{\accepts} : @example \context @{ @@ -670,12 +1226,11 @@ au moyen de la commande @code{\accepts}@tie{}: @funindex \denies -Le contraire de @code{\accepts} est @code{\denies}, -qui est parfois utile lorsque l'on recycle des définitions de -contextes déjà existantes. +Le contraire de @code{\accepts} est @code{\denies} ; il est parfois +utile lorsque l'on recycle des définitions de contextes déjà existantes. Enfin, tout cela doit prendre place dans le bloc @code{\layout}, -comme suit@tie{}: +comme ici : @example \layout @{ @@ -690,7 +1245,7 @@ comme suit@tie{}: @} @end example -On peut alors saisir la musique, comme dans l'exemple plus haut@tie{}: +On peut alors saisir la musique, comme dans l'exemple plus haut : @example \relative c'' @{ @@ -705,39 +1260,116 @@ On peut alors saisir la musique, comme dans l'exemple plus haut@tie{}: @end example -@node Alignement des contextes -@subsection Alignement des contextes -@translationof Aligning contexts - +@node Ordonnancement des contextes +@subsection Ordonnancement des contextes +@translationof Context layout order -Il est possible d'aligner verticalement chaque nouveau contexte, -en-dessous ou au-dessus, par exemple dans le cas de musique vocale -(@rlearning{Ensemble vocal}) ou d'@emph{ossias}. +@cindex contextes, ordonnancement -@cindex ossia +@funindex \accepts +@funindex \denies -@findex alignAboveContext -@findex alignBelowContext +Les contextes viennent en principe se positionner selon leur ordre +d'apparition dans le fichier source. Lorsque plusieurs contextes sont +imbriqués, le contexte englobant supportera les différents contextes +mentionnés dans le fichier source, à la stricte condition qu'ils soient +dûment @qq{agréés}. Les contextes imbriqués qui ne font pas partie de +la @qq{liste d'agréments} du contexte englobant se retrouveront en +dessous de celui-ci au lieu d'y être imbriqués. + +La liste des @qq{agréments} d'un contexte se gère à l'aide des +instructions @code{\accepts} et @code{\denies} -- @code{\accepts} pour +ajouter un contexte à la liste, et @code{\denies} pour retirer +l'agrément. Il est par exemple peu conventionnel que les accords nommés +apparaissent dans un contexte @code{Staff} ; autrement dit, le +contexte @code{ChordNames} ne fait pas partie de la @qq{liste +d'agréments} du contexte @code{Staff} par défaut. Néanmoins, et s'il +devait en être ainsi, vous pourriez le spécifier. + +@lilypond[verbatim,quote] +\score { + \new Staff { + c' d' e' f' + \chords { d1:m7 b1:min7.5- } + } +} +@end lilypond -@lilypond[quote,ragged-right] -ossia = { f4 f f f } -\score{ - \relative c' \new Staff = "main" { - c4 c c c - << - \new Staff \with { alignAboveContext = #"main" } \ossia - { d8 f d f d f d f } - >> +@lilypond[verbatim,quote] +\score { + \new Staff { + c' d' e' f' + \chords { d1:m7 b1:min7.5- } + } + \layout { + \context { + \Staff + \accepts "ChordNames" + } } } @end lilypond +L'instruction @code{\denies} permet, lorsqu'un nouveau contexte reprend +les définitions d'un contexte existant, d'en ajuster les composantes. +C'est par exemple le cas du contexte @code{VaticanaStaff}, réplique du +contexte @code{Staff} au sein duquel le contexte @code{VaticanaVoice} se +substitue au contexte @code{Voice} dans la @qq{liste d'agrément}. + +Gardez à l'esprit que, face à une instruction qui ne s'appliquerait à +aucun contexte déjà existant, LilyPond créera un nouveau contexte +implicite. Ceci peut engendrer une nouvelle portée ou une autre +partition. + +@cindex alignAboveContext +@cindex alignBelowContext +@funindex alignAboveContext +@funindex alignBelowContext + +Il arrive qu'un contexte ne doive exister que pendant un court instant, +ce qui est le cas par exemple pour une @emph{ossia}. Le plus simple +consiste alors à initialiser la définition d'un contexte à l'endroit +approprié, en parallèle avec le fragment correspondant dans la musique +principale. Ce contexte temporaire sera par défaut positionné sous les +autres contextes existants. Le repositionner au-dessus du contexte +« principal » demande de le définir ainsi : + +@example +@code{\new Staff \with @{ alignAboveContext = #"principal" @} } +@end example + +Il en va de même pour les contextes temporaires de paroles au sein d'un +système à plusieurs portées comme un @code{ChoirStaff} lorsque, par +exemple, un couplet supplémentaire apparaît à l'occasion d'une +reprise. Ce contexte de paroles temporaire se place par défaut sous les +portées inférieures. Lui adjoindre une instruction +@code{alignBelowContext} dès son initialisation permet de l'accoler au +contexte de paroles (nommé) qui contient le premier couplet. + +Des exemples de repositionnement de contexte temporaire sont disponibles +aux rubriques @rlearning{Expressions musicales imbriquées}, +@ref{Modification de portées individuelles} et +@ref{Situations particulières en matière de paroles}. + +@seealso +Manuel d'initiation : +@rlearning{Expressions musicales imbriquées}. + +Manuel de notation : +@ref{Modification de portées individuelles}, +@ref{Situations particulières en matière de paroles}. + +Manuel d'utilisation : +@rprogram{Apparition d'une portée supplémentaire}. + +Fichiers d'initialisation : +@file{ly/engraver-init.ly}. + @node En quoi consiste la référence des propriétés internes @section En quoi consiste la référence des propriétés internes @translationof Explaining the Internals Reference - @menu * Navigation dans les références du programme:: * Interfaces de rendu:: @@ -745,11 +1377,15 @@ ossia = { f4 f f f } * Conventions de nommage:: @end menu + @node Navigation dans les références du programme @subsection Navigation dans les références du programme @translationof Navigating the program reference -Comment, par exemple, déplacer le doigté dans le fragment suivant@tie{}? +@c TODO remove this (it's in the LM) +@c Replace with more factual directions + +Comment, par exemple, déplacer le doigté dans le fragment suivant ? @lilypond[quote,relative=2,verbatim] c-2 @@ -758,13 +1394,13 @@ f @end lilypond Sur la page de la documentation relative aux doigtés, c'est-à-dire -@ref{Doigtés}, se trouve l'indication suivante@tie{}: - +@ref{Doigtés}, se trouve l'indication suivante : -@seealso -Référence des propriétés internes : -@rinternals{Fingering}. +@quotation +@strong{Voir aussi} +Référence des propriétés internes : @rinternals{Fingering}. +@end quotation @c outdated info; probably will delete. @ignore @@ -823,10 +1459,9 @@ En d'autres termes, @emph{Les indications de doigtés} @rinternals{Fingering_engraver} et @rinternals{New_fingering_engraver}.} En suivant derechef les liens propres à la référence du programme, on -suit en fait le cheminement qui aboutit à la création de la -partition@tie{}: +suit en fait le cheminement qui aboutit à la création de la partition : -@itemize @bullet +@itemize @item @rinternals{Fingering}: @rinternals{Fingering} objects are created by: @@ -840,10 +1475,10 @@ Music event type @code{fingering-event} is in Music expressions named @rinternals{FingeringEvent} @end itemize -Ce cheminement se produit, bien sûr, en sens inverse@tie{}: nous sommes +Ce cheminement se produit, bien sûr, en sens inverse : nous sommes ici partis du résultat, et avons abouti aux évènements (en anglais @emph{Events}) engendrés par le fichier d'entrée. L'inverse est -également possible@tie{}: on peut partir d'un évènement, et suivre le +également possible : on peut partir d'un évènement, et suivre le cheminement de LilyPond qui aboutit à la création d'un ou plusieurs objets graphiques. @@ -860,12 +1495,11 @@ chapitre recense toutes les définitions employées, et les propriétés sujettes à ajustements. @c -- what about adding a link to the glossary here ? -vv -@ignore -La Référence du programme n'est pas traduite en français -- notamment du -fait qu'elle est en évolution constante, tout comme LilyPond. En -revanche, les termes musicaux font l'objet d'un -@commentfairelelien{glossaire} fort utile pour les utilisateurs francophones. -@end ignore +La Référence des propriétés internes n'est pas traduite en français -- +notamment du fait qu'elle est en évolution constante, tout comme +LilyPond. En revanche, les termes musicaux font l'objet d'un +@rglosnamed{Top, glossaire} fort utile pour les utilisateurs +francophones. @node Interfaces de rendu @@ -879,13 +1513,13 @@ revanche, les termes musicaux font l'objet d'un Tous les éléments de notation sont considérés comme des objets graphiques (en anglais @emph{Graphical Object}, d'où le diminutif @emph{Grob}). Chaque objet est doté d'un certain nombre de propriétés -(l'épaisseur du trait, l'orientation, etc.), et lié à d'autres objets. +(l'épaisseur du trait, l'orientation etc.), et lié à d'autres objets. Le fonctionnement de ces objets est décrit en détail dans @rinternals{grob-interface}. Prenons l'exemple des doigtés (en anglais @emph{Fingering}). La page @code{Fingering} de la Référence des propriétés internes établit une -liste de définitions propres à ce type d'objet@tie{}: +liste de définitions propres à ce type d'objet : @quotation @code{padding} (dimension, in staff space): @@ -895,15 +1529,14 @@ liste de définitions propres à ce type d'objet@tie{}: @noindent Ce qui signifie que les doigtés doivent être maintenus à une certaine -distance (@emph{padding}) des notes@tie{}: 0,5 unités @emph{staff-space} +distance (@emph{padding}) des notes : 0,5 unités @emph{staff-space} (espace de portée). Chaque objet peut avoir plusieurs attributs, en tant qu'élément typographique ou musical. Ainsi, un doigté (objet @emph{Fingering}) -possède les attributs suivants@tie{}: - +possède les attributs suivants : -@itemize @bullet +@itemize @item Sa taille ne dépend pas de l'espacement horizontal, contrairement aux liaisons ou ligatures. @@ -925,7 +1558,7 @@ portée. @item Sur l'axe vertical encore, il doit également s'ordonner avec les -éventuels autres symboles, ponctuations, ou éléments textuels. +éventuels autres symboles, ponctuations ou éléments textuels. @end itemize Faire appliquer ces différents attributs est le rôle des @@ -945,11 +1578,11 @@ This object supports the following interfaces: En français, @quotation -Cet objet admet les interfaces suivantes@tie{}: +Cet objet admet les interfaces suivantes : @end quotation Suit la liste des interfaces en question, présentées comme autant de -liens, qui conduisent sur les pages dédiées à chacune d'entre elles. +liens qui conduisent aux pages dédiées à chacune d'entre elles. Chaque interface est dotée d'un certain nombre de propriétés, dont certaines peuvent être modifiées, et d'autres non (les @emph{Internal properties}, ou propriétés internes). @@ -957,8 +1590,8 @@ properties}, ou propriétés internes). Pour aller encore plus loin, plutôt que de simplement parler de l'objet @code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller explorer son âme même, dans les fichiers source de LilyPond (voir -@rlearning{Autres sources de documentation}), en l'occurence le fichier -@file{scm/define-grobs.scm}@tie{}: +@rlearning{Autres sources de documentation}), en l'occurrence le fichier +@file{scm/define-grobs.scm} : @example (Fingering @@ -985,17 +1618,20 @@ explorer son âme même, dans les fichiers source de LilyPond (voir @noindent @dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus -qu'un amas de variables et de réglages. La page de la Référence du -programme est en fait directement engendrée par cette définition. +qu'un amas de variables et de réglages. La page de la Référence des +propriétés internes est en fait directement engendrée par cette +définition. @node Détermination de la propriété d'un objet graphique (grob) @subsection Détermination de la propriété d'un objet graphique (grob) @translationof Determining the grob property +@c TODO remove this (it's in the LM) +@c Replace with more factual directions Nous voulions changer la position du chiffre @b{2} dans le fragment -suivant@tie{}: +suivant : @lilypond[quote,relative=2,verbatim] c-2 @@ -1007,7 +1643,7 @@ Dans la mesure où le @b{2} est placé, verticalement, à proximité de la note qui lui correspond, nous allons devoir trouver l'interface en charge de ce placement, qui se trouve être @code{side-position-interface}. Sur la page de cette interface, on peut -lire@tie{}: +lire : @quotation @code{side-position-interface} @@ -1023,14 +1659,14 @@ Ce qui signifie @code{side-position-interface} Placer l'objet affecté à proximité d'autres objets. La propriété -@code{direction} indique où placer l'objet (à droite ou à gauche, +@code{direction} indique où positionner l'objet (à droite ou à gauche, en haut ou en bas). @end quotation @cindex padding @noindent -En-dessous de cette description se trouve décrite la variable -@code{padding}@tie{}: +En dessous de cette description se trouve décrite la variable +@code{padding} : @quotation @table @code @@ -1051,7 +1687,7 @@ autres. @noindent En augmentant la valeur de @code{padding}, on peut donc éloigner le doigté de la note. La commande suivante insère trois unités d'espace -vide entre la note et le doigté@tie{}: +vide entre la note et le doigté : @example \once \override Voice.Fingering #'padding = #3 @@ -1059,7 +1695,7 @@ vide entre la note et le doigté@tie{}: En ajoutant cette commande avant la création du doigté (de l'objet @code{Fingering}), donc avant @code{c2}, on obtient le résultat -suivant@tie{}: +suivant : @lilypond[quote,relative=2,verbatim] \once \override Voice.Fingering #'padding = #3 @@ -1068,10 +1704,10 @@ c-2 f @end lilypond - Dans le cas présent, le réglage intervient dans le contexte @code{Voice}, -ce qui pouvait également se déduire de la Référence du programme, où la -page du graveur @rinternals{Fingering_engraver} indique@tie{}: +ce qui pouvait également se déduire de la Référence des propriétés +internes, où la page du graveur @rinternals{Fingering_engraver} +indique : @quotation Fingering_engraver is part of contexts: @dots{} @rinternals{Voice} @@ -1080,7 +1716,7 @@ Fingering_engraver is part of contexts: @dots{} @rinternals{Voice} @noindent Ce qui signifie @quotation -Le graveur Fingering_engraver fait partie des contextes@tie{}: @dots{} +Le graveur Fingering_engraver fait partie des contextes : @dots{} @rinternals{Voice} @end quotation @@ -1089,7 +1725,35 @@ Le graveur Fingering_engraver fait partie des contextes@tie{}: @dots{} @subsection Conventions de nommage @translationof Naming conventions -@untranslated +Afin de s'y retrouver plus aisément et d'éviter les erreurs de frappe, +voici quelques conventions en matière de nommage : + +@itemize +@item fonctions scheme : + minuscule-avec-trait-d-union (y compris noms en mot-unique) +@item fonctions scheme : + ly:plus-style-scheme +@item événements, classes et propriétés musicaux : + identique-aux-fonctions-scheme +@item interfaces d'objet graphique : + style-scheme +@item propriétés d'arrière plan : + style-scheme (mais X et Y pour les axes) +@item contextes (ainsi que MusicExpressions et grobs) : + Capitale initiale ou Camélisation (CamelCase) +@item propriétés de contexte : + minusculeSuivieDeCamélisation +@item graveurs : + Capitale_initiale_puis_minuscules_séparées_par_un_souligné +@end itemize + +Les questions que vous devez vous poser sont : +@itemize +@item Qu'est-ce qui relève des conventions, et qu'est-ce qui relève de +la règle ? +@item Qu'est-ce qui relève des règles du langage sous-jacent, et +qu'est-ce qui est propre à LilyPond ? +@end itemize @node Modification de propriétés @@ -1110,125 +1774,266 @@ Le graveur Fingering_engraver fait partie des contextes@tie{}: @dots{} * Modification de listes associatives:: @end menu + @node Vue d'ensemble de la modification des propriétés @subsection Vue d'ensemble de la modification des propriétés @translationof Overview of modifying properties -@untranslated - - -@node La commande de fixation (set) -@subsection La commande @code{@bs{}set} -@translationof The set command +Chaque contexte est chargé de créer plusieurs types d'objets graphiques. +Il contient également les réglages nécessaires pour chacun de ces +objets. Si l'on modifie ces réglages, les objets n'auront plus la même +apparence. -@cindex propriétés -@funindex \set -@cindex modifier des propriétés +Les contextes comportent deux types différents de propriétés : des +propriétés de contexte et des propriétés d'objet graphique. Les +propriétés de contexte sont celles qui s'appliqueront globalement au +contexte en tant que tel ; elles gèrent la manière dont le contexte +apparaîtra. Les propriétés d'objet graphique, par contre, s'appliquent +à des types particuliers d'objet qui apparaissent dans le contexte en +question. + +Les commandes @code{\set} et @code{\unset} permettent de modifier les +valeurs des propriétés de contexte. Les commandes @code{\override} et +@code{\revert} permettent de modifier les valeurs des propriétés des +objets graphiques. -Chaque contexte peut avoir plusieurs @emph{propriétés}, c'est-à-dire -des variables qu'il inclut. Ces dernières peuvent être modifiées @qq{à -la volée}, c'est-à-dire pendant que la compilation s'accomplit. C'est -là le rôle de la commande @code{\set}. +@ignore +La syntaxe employée pour ce faire est @example -\set @var{contexte}.@var{propriété} = #@var{valeur} +\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} @end example -Ainsi@tie{}: -@lilypond[quote,verbatim,relative=2] -R1*2 -\set Score.skipBars = ##t -R1*2 -@end lilypond - -Cette commande permet de condenser les mesures vides de notes, en des -silences multimesures. Il s'agit d'un objet Scheme, auquel on attribue -la valeur booléenne @qq{vrai}, c'est-à-dire la lettre @code{#t} pour -@qq{True} en anglais. - -Ce changement étant appliqué @qq{à la volée}, il n'affecte que le second -groupe de notes. +Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes) +ou @code{NoteHead} (les têtes de note) ; @var{propriété} est une +variable (désignée par un symbole, ce qui explique l'apostrophe) +employée par le système de mise en page. La sous-section +@ref{Élaboration d'une retouche} vous aidera à savoir quoi mettre à la +place de @var{objet}, @var{propriété} et @var{valeur} ; notre propos +n'est ici que d'examiner l'emploi de cette commande. -Si l'argument @var{contexte} n'est pas spécifié, alors la propriété -cherchera à s'appliquer dans le contexte le plus restreint où elle est -employée@tie{}: le plus souvent @code{ChordNames}, @code{Voice}, ou -@code{Lyrics}. Dans l'exemple suivant, +La commande suivante : -@lilypond[quote,verbatim,relative=2] -c8 c c c -\set autoBeaming = ##f -c8 c c c -@end lilypond +@verbatim +\override Staff.Stem #'thickness = #4.0 +@end verbatim @noindent -aucun argument @var{contexte} n'a été donné à la commande @code{\set}. -De ce fait, les ligatures automatiques sont désactivées dans le contexte -actuel, c'est-à-dire @rinternals{Voice}. Notez que le contexte le plus -restreint n'est pas toujours le bon, et peut ne pas contenir la -propriété qui vous intéresse@tie{}: ainsi, la propriété @code{skipBars}, -évoquée plus haut, ne relève pas du contexte @code{Voice}, et le code -suivant ne fonctionnera pas. +rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui +signifie qu'elles sont 1,3 fois plus épaisses que les lignes de la +portée). Dans la mesure où nous avons indiqué @code{Staff} comme +contexte, ce réglage ne s'appliquera qu'à la portée courante ; les +autres portées demeureront intactes. -@lilypond[quote,verbatim,relative=2] -R1*2 -\set skipBars = ##t -R1*2 +@lilypond[quote,verbatim,relative=2,fragment] +c4 +\override Staff.Stem #'thickness = #4.0 +c4 +c4 +c4 @end lilypond -Les contextes s'organisent de façon hiérarchique@tie{}: aussi, lorsqu'un -contexte de niveau supérieur est spécifié (par exemple @code{Staff}), la -propriété sera modifée dans tous les contextes inférieurs (tous les -contextes @code{Voice}, par exemple) qu'il contient. +La commande @code{\override} modifie donc la définition de l'objet +@code{Stem} dans le contexte @code{Staff} ; toutes les hampes qui +suivent seront affectées. -@funindex \unset +Tout comme avec la commande @code{\set}, l'argument @var{contexte} peut +être omis, auquel cas le contexte par défaut (ici, @code{Voice}) sera +employé. La commande @code{\once} permet de n'appliquer la modification +qu'une seule fois. -La commande @code{\unset} permet d'annuler la définition d'une -propriété@tie{}: +@lilypond[quote,fragment,verbatim,relative=2] +c4 +\once \override Stem #'thickness = #4.0 +c4 +c4 +@end lilypond -@example -\unset @var{contexte}.@var{propriété} -@end example +La commande @code{\override} doit être entrée @emph{avant} l'objet +concerné. Ainsi, lorsque l'on veut altérer un objet qui se prolonge, +tel qu'une liaison, une ligature ou tout autre objet dit @emph{Spanner}, +la commande @code{\override} doit être saisie avant que l'objet soit +créé. + +@lilypond[quote,fragment,verbatim,relative=2] +\override Slur #'thickness = #3.0 +c8[( c +\override Beam #'beam-thickness = #0.6 +c8 c]) +@end lilypond @noindent -si et seulement si cette propriété à été définie dans ce @var{contexte} -précis@tie{}; ainsi, +Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la +ligature (@emph{Beam}). En effet, le code qui lui est relatif n'a pas +été inséré avant le début de la ligature, et demeure donc sans effet. + +De même que la commande @code{\unset}, la commande @code{\revert} défait +ce qui a été fait par une commande @code{\override}. Tout comme avec +@code{\unset}, elle ne peut annuler que les réglages effectués dans le +même contexte. Ainsi dans l'exemple suivant, la commande @code{\revert} +est sans effet. @example -\set Staff.autoBeaming = ##f +\override Voice.Stem #'thickness = #4.0 +\revert Staff.Stem #'thickness @end example -@noindent -même s'il s'applique à tous les contextes @code{Voice} contenus dans le -contexte @code{Staff}, ne peut être annulé au niveau @code{Voice}. Le -code suivant sera sans effet. +Il existe, à l'intérieur même de certaines propriétés, des options que +l'on nomme @qq{sous-propriétés}. La syntaxe est alors +@c leave this as a long long @example -\unset Voice.autoBeaming +\override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur} @end example @noindent -En d'autres termes, la commande @code{\unset} doit impérativement être -accompagnée du même contexte que la commande @code{\set} d'origine. -Pour annuler l'effet, dans notre exemple, de -@w{@code{Staff.autoBeaming@tie{}=@tie{}##f}}, il faut donc entrer@tie{}: +Ainsi, par exemple : + +@example +\override Stem #'(details beamed-lengths) = #'(4 4 3) +@end example + +@end ignore + +@seealso +Référence des propriétés internes : +@rinternals{Backend}, +@rinternals{All layout objects}, +@rinternals{OverrideProperty}, +@rinternals{RevertProperty}, +@rinternals{PropertySet}. + +@knownissues +La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon +très stricte. Des références cycliques dans des valeurs Scheme peuvent +de ce fait interrompre ou faire planter le programme -- ou bien les +deux. + + +@node La commande de fixation (set) +@subsection La commande de fixation @code{@bs{}set} +@translationof The set command + +@cindex propriétés +@cindex modifier des propriétés +@funindex \set + +Chaque contexte peut avoir plusieurs @strong{propriétés}, c'est-à-dire +des variables qu'il inclut. Ces dernières peuvent être modifiées @qq{à +la volée}, c'est-à-dire pendant que la compilation s'accomplit. C'est +ici le rôle de la commande @code{\set}. + +@example +\set @var{contexte}.@var{propriété} = #@var{valeur} +@end example + +Dans la mesure où @var{valeur} est constituée d'un objet Scheme, elle +doit être précédée du caractère @code{#}. + +Les propriétés des contextes se libellent sous la forme +@code{minusculeMajuscule}. Leur rôle consiste principalement à traduire +la musique en notation : par exemple, @code{localKeySignature} +déterminera quand imprimer une altération accidentelle, et +@code{measurePosition} quand imprimer une barre de mesure. La valeur +des propriétés des contextes peuvent évoluer au fur et à mesure que l'on +avance dans le morceau -- @code{measurePosition} en est l'illustration +parfaite. + +Ainsi la propriété de contexte @code{skipBars} permet de condenser les +mesures vides de notes, en des silences multimesures. Il s'agit d'un +objet Scheme, auquel on attribue la valeur booléenne @qq{vrai}, +c'est-à-dire la lettre @code{#t} pour @qq{True} en anglais : + +@lilypond[quote,verbatim,relative=2] +R1*2 +\set Score.skipBars = ##t +R1*2 +@end lilypond + +Si l'argument @var{contexte} n'est pas spécifié, alors la propriété +cherchera à s'appliquer dans le contexte le plus restreint où elle est +employée : le plus souvent @code{ChordNames}, @code{Voice} ou +@code{Lyrics}. + +@lilypond[quote,verbatim,relative=2] +\set Score.autoBeaming = ##f +<< + { + e8 e e e + \set autoBeaming = ##t + e8 e e e + } \\ { + c8 c c c c8 c c c + } +>> +@end lilypond + +Ce changement étant appliqué @qq{à la volée}, il n'affecte que le second +groupe de notes. + +Notez que le contexte le plus restreint n'est pas toujours le bon, et +peut ne pas contenir la propriété qui vous intéresse : ainsi, la +propriété @code{skipBars}, évoquée plus haut, ne relève pas du contexte +@code{Voice}, mais du contexte @code{Score} -- le code suivant ne +fonctionnera pas. + +@lilypond[quote,verbatim,relative=2] +R1*2 +\set skipBars = ##t +R1*2 +@end lilypond + +Les contextes s'organisent de façon hiérarchique : aussi, lorsqu'un +contexte de niveau supérieur est spécifié (par exemple @code{Staff}), la +propriété sera modifiée dans tous les contextes inférieurs (tous les +contextes @code{Voice}, par exemple) qu'il contient. + +@funindex \unset + +La commande @code{\unset} permet d'annuler la définition d'une +propriété : @example -\unset Staff.autoBeaming +\unset @var{contexte}.@var{propriété} @end example +@noindent +si et seulement si cette @var{propriété} a été définie dans ce +@var{contexte} précis. En d'autres termes, la commande @code{\unset} +doit impérativement affecter le même contexte que la commande +@code{\set} d'origine, même en cas d'imbrication. + +@lilypond[quote,verbatim,relative=2] +\set Score.autoBeaming = ##t +<< + { + \unset autoBeaming + e8 e e e + \unset Score.autoBeaming + e8 e e e + } \\ { + c8 c c c c8 c c c + } +>> +@end lilypond + Si l'on se trouve dans le contexte le plus restreint, il n'est pas obligatoire, là encore, de spécifier le @var{contexte}. Ainsi, les deux -lignes suivantes sont équivalentes. +lignes suivantes @example \set Voice.autoBeaming = ##t \set autoBeaming = ##t @end example +@noindent +sont équivalentes elles apparaissent dans un contexte @code{Voice}. + @cindex \once -Pour modifier une propriété de façon à ce qu'elle ne s'applique qu'une -seule fois, il convient d'employer la commande @code{\once}@tie{}: +Pour modifier une propriété de façon à ce que l'accommodement ne +s'applique qu'une seule fois, il convient d'adjoindre l'instruction +@code{\once} à la commande @code{\set} : @lilypond[quote,verbatim,relative=2] c4 @@ -1239,8 +2044,8 @@ c4 Ici le changement de taille est annulé aussitôt après la note concernée. -La référence du programme contient une description exhaustive de toutes -les propriétés contexte par contexte@tie{}: voir +La référence des propriétés internes contient une description exhaustive +de toutes les propriétés, contexte par contexte : voir @ifhtml @rinternals{Tunable context properties}. @end ifhtml @@ -1249,27 +2054,137 @@ Translation @expansion{} Tunable context properties. @end ifnothtml +@seealso +Référence des propriétés internes : +@rinternals{Tunable context properties}. + + @node La commande de dérogation (override) -@subsection La commande @code{@bs{}override} +@subsection La commande de dérogation @code{@bs{}override} @translationof The override command +@cindex grob, propriétés +@cindex objet graphique, propriétés +@cindex propriétés d'un grob +@cindex propriétés d'objet graphique + +@funindex \override + +La commande @code{\override} permet de modifier la mise en forme des +objets graphiques. Les descriptions d'objet graphique, dont les noms +commencent par une majuscule, puis comprennent une ou plusieurs +majuscules (de style @code{TotoTata}), contiennent les réglages @qq{par +défaut} pour les objets graphiques. Ces réglages sont sous forme de +liste Scheme ; on peut les consulter dans le fichier +@file{scm/define-grobs.scm}. -La commande @code{\override} permet de modifier la mise en page -en détail. Examinons son utilisation concrètementet dans les détails. -La syntaxe de cette commande ressemble généralement à@tie{}: +@code{\override} est en fait un raccourci : @example -\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} +\override @var{contexte}.@var{NomObjet} #'@var{propriété} = #@var{valeur} @end example -La propriété @var{propriété} de l'objet @var{objet}, appartenant au -contexte @var{contexte}, se voit ainsi attribuer la valeur @var{valeur}. +@noindent +plus ou moins équivalent à + +@c leave this long line -gp +@example +\set @var{contexte}.@var{NomObjet} = + #(cons (cons '@var{propriété} @var{valeur}) + ) +@end example + +La valeur de @var{contexte}.@var{NomObjet} (une liste associative, ou +@emph{alist}) permet d'initialiser les propriétés des objets un par un. +Les objets eux-mêmes ont leurs propriétés, dont les noms, dans la +tradition du langage Scheme, comprennent un trait d'union +(@code{toto-titi}). Ces propriétés internes changent constamment au +cours de la mise en page : en fait, la gravure d'une page n'est autre +que le calcul de toutes ces propriétés au moyen de fonctions de rappel. + +Nous pouvons donc par exemple accroître l'épaisseur des hampes en jouant +sur la propriété @code{thickness} de l'objet @code{stem} : + +@lilypond[quote,verbatim,relative=2] +c4 c +\override Voice.Stem #'thickness = #3.0 +c4 c +@end lilypond + +Lorsqu'aucun contexte n'est spécifié dans une clause @code{\override}, +celle-ci s'appliquera au contexte le plus bas : + +@lilypond[quote,verbatim,relative=2] +{ \override Staff.Stem #'thickness = #3.0 + << + { + e4 e + \override Stem #'thickness = #0.5 + e4 e + } \\ { + c4 c c c + } + >> +} +@end lilypond + +@cindex annulation d'un override +@cindex override, annulation des effets +@funindex \revert + +Les effets d'un @code{\override} prennent fin à l'aide de l'instruction +@code{\revert} : + +@lilypond[quote,verbatim,relative=2] +c4 +\override Voice.Stem #'thickness = #3.0 +c4 c +\revert Voice.Stem #'thickness +c4 +@end lilypond + +Les effets d'un @code{\override} ou d'un @code{\revert} s'appliquent dès +l'endroit où ils apparaissent, et à tous les objets dans le contexte +mentionné : + +@lilypond[quote,verbatim,relative=2] +{ + << + { + e4 + \override Staff.Stem #'thickness = #3.0 + e4 e e + } \\ { + c4 c c + \revert Staff.Stem #'thickness + c4 + } + >> +} +@end lilypond + +@cindex override ponctuel +@funindex \once + +L'instruction @code{\override} doit être précédée d'un @code{\once} dès +lors que les effets de l'accommodement ne concernent que l'événement qui +la suit directement : +@lilypond[quote,verbatim,relative=2] +{ + << + { + \override Stem #'thickness = #3.0 + e4 e e e + } \\ { + c4 + \once \override Stem #'thickness = #3.0 + c4 c c + } + >> +} +@end lilypond -@c deprecated node. Delete. --fv -@c @n ode Élaboration d'une retouche -@c @s ubsection Élaboration d'une retouche -@c @t ranslationof Constructing a tweak @ignore Les commandes permettant de modifier l'apparence de la partition ressemblent en général à @@ -1280,19 +2195,18 @@ ressemblent en général à @noindent Pour élaborer un réglage de ce type, on a besoin de connaître -précisément@tie{}: +précisément : @itemize -@item le contexte@tie{}: ici @code{Voice} (la voix). -@item l'objet à affecter@tie{}: ici @code{Stem} (les hampes). -@item la propriété à modifier@tie{}: ici @code{thickness} (l'épaisseur +@item le contexte : ici @code{Voice} (la voix). +@item l'objet à affecter : ici @code{Stem} (les hampes). +@item la propriété à modifier : ici @code{thickness} (l'épaisseur du trait). -@item la valeur désirée@tie{}: ici @code{3.0} (par défaut, elle est de -1.3). +@item la valeur désirée : ici @code{3.0} (par défaut, elle est de 1.3). @end itemize -Certaines @q{sous-propriétés} sont parfois contenues dans une propriété. -La commande devient alors@tie{}: +Certaines @qq{sous-propriétés} sont parfois contenues dans une +propriété. La commande devient alors : @example \override Stem #'(details beamed-lengths) = #'(4 4 3) @@ -1305,45 +2219,72 @@ La commande devient alors@tie{}: @funindex \override Pour bien des propriétés, quel que soit le type de valeur requise, -attribuer la valeur @q{faux} (@code{##f} en Scheme) reviendra à +attribuer la valeur @qq{faux} (@code{##f} en Scheme) reviendra à désactiver complètement l'action de la propriété qui se trouve ainsi purement ignorée par LilyPond. Cela peut s'avérer fort utile pour des propriétés causant des désagréments. @end ignore +@seealso +Référence des propriétés internes : +@rinternals{Backend} + @node La commande d'affinage (tweak) -@subsection La commande @code{@bs{}tweak} +@subsection La commande d'affinage @code{@bs{}tweak} @translationof The tweak command - +@cindex retouche (tweak) +@cindex affinage (tweak) +@cindex ajustement (tweak) +@cindex tweak (retouche, affinage) @funindex \tweak +L'utilisation d'un @code{\override} pour modifier les propriétés d'un +objet graphique affectera toutes les instances de l'objet en question au +sein du contexte, et ce dès son apparition. Il peut parfois être +préférable de n'affecter qu'un seul objet en particulier plutôt que tous +les objets du contexte. C'est là rôle de l'instruction @code{\tweak}, +dont la syntaxe est : + +@example +\tweak @var{objet-de-rendu} #'@code{objet-propriété} @code{valeur} +@end example + +Mention de l'@var{objet-de-rendu} est optionnel. +La commande @code{\tweak} s'applique à l'objet qui apparaît +immédiatement après @code{valeur}. + +@ignore Dans certains cas, on peut passer par un raccourci pour arranger les objets graphiques. Lorsqu'un objet est directement engendré par un élément distinct du fichier source, on peut utiliser la commande @code{\tweak}. -Dans l'accord suivant, les notes sont modifiées une par une@tie{}: +Dans l'accord suivant, les notes sont modifiées une par une : @lilypond[relative=2,verbatim,ragged-right] < c - \tweak #'color #red d + \tweak #'color #red + d g - \tweak #'duration-log #1 a ->4-\tweak #'padding #10 -. + \tweak #'duration-log #1 + a +>4 +-\tweak #'padding #8 +-^ @end lilypond Comme on peut le voir, les propriétés sont ici modifiées directement en même temps que les objets sont saisis. Il n'est plus besoin de spécifier ni le nom de l'objet (@emph{grob}), ni le contexte dans lequel cela doit s'appliquer. Ce procédé ne marche que pour des objets -directement liés aux évènements (@rinternals{Event}) du fichier source. -Par exemple@tie{}: +directement liés aux événements (@rinternals{Event}) du fichier source. +Par exemple : -@itemize @bullet +@itemize @item Les têtes de notes au sein d'un accord, qui sont directement engendrées par les hauteurs indiquées @@ -1351,158 +2292,943 @@ engendrées par les hauteurs indiquées ponctuation. @end itemize -En revanche, les hampes ou les altérations sont engendrées par les têtes -de notes, et non par des évènements dans le fichier source. De même -pour les clés, qui ne sont pas directement engendrées par le fichier -source, mais plutôt par le changement d'une propriété interne. +En revanche, les hampes ou les altérations sont engendrées par les têtes +de notes, et non par des évènements dans le fichier source. De même +pour les clés, qui ne sont pas directement engendrées par le fichier +source, mais plutôt par le changement d'une propriété interne. + +En fait, très peu d'objets passent @emph{directement} du code source à +la partition. Une note toute simple, par exemple @code{c4}, fait l'objet +d'un traitement et n'est donc pas directement rendue ; c'est +pourquoi le code suivant ne sera d'aucun effet : + +@example +\tweak #'color #red c4 +@end example + +@noindent +Voir pour plus de détails +@rextend{Affichage d'expressions musicales}. +@end ignore + +Pour une introduction à la syntaxe et l'utilisation des retouches, voir +le chapitre @rlearning{Méthodes de retouche}. + +Lorsque plusieurs éléments de même nature surviennent au même instant, +il devient impossible d'utiliser l'instruction @code{\override} pour +n'en modifier qu'un seul individuellement, d'où l'intérêt de la commande +@code{\tweak}. Entre autres éléments qui sont susceptibles de se +produire au même instant, nous citerons : + +@c TODO expand to include any further uses of \tweak +@itemize +@item les têtes de notes au sein d'un accord, +@item les signes d'articulation, +@item les liaisons de prolongation sur des notes d'un accord, +@item les crochets de nolets démarrant au même instant +@end itemize + +@c TODO add examples of these + +Dans l'exemple suivant, l'une des têtes de note de l'accord est +colorisée, et l'aspect d'une autre est changé. + +@lilypond[relative=2,verbatim,quote] +< c + \tweak #'color #red + d + g + \tweak #'duration-log #1 + a +> 4 +@end lilypond + +L'instruction @code{\tweak} permet aussi de modifier l'aspect d'une +liaison : + +@lilypond[verbatim,quote,relative=1] +c-\tweak #'thickness #5 ( d e f) +@end lilypond + +La commande @code{\tweak} ne sera pleinement fonctionnelle que si elle +est directement rattachée à l'objet auquel elle doit s'appliquer alors +que le fichier source est converti en flux musical. Vouloir modifier la +globalité d'un accord est sans résultat dans la mesure où il ne +constitue qu'un conteneur pour des événements musicaux et que tous les +objets seront créés à partir d'événements appartenant à un +@code{EventChord} (un événement d'accord) : + +@lilypond[relative=2,verbatim,quote] +\tweak #'color #red c4 +\tweak #'color #red 4 +<\tweak #'color #red c>4 +@end lilypond + +La commande @code{\tweak} simple ne saurait servir à modifier un élément +qui ne serait pas explicitement mentionné dans le fichier source. C'est +notamment le cas des hampes, ligatures automatiques ou altérations, dans +la mesure où elles seront ultérieurement générées et après les têtes de +note (objets @code{NoteHead}, plutôt qu'au fil des éléments musicaux +saisis. + +De tels objets créés indirectement peuvent être ajustés que par une +forme dévelppée de la commande @code{\tweak} : + +@lilypond[relative=2,verbatim,quote] +\tweak Stem #'color #red +\tweak Beam #'color #green c8 e +4 +@end lilypond + +La commande @code{\tweak} ne peut non plus servir à modifier clefs ou +métriques, puisqu'elles seront immanquablement séparées du @code{\tweak} +par l'insertion automatique d'autres éléments requis pour spécifier le +contexte. + +Plusieurs commandes @code{\tweak} en enfilade permettent d'affecter un +même élément de notation : + +@lilypond[verbatim,quote,relative=1] +c +-\tweak #'style #'dashed-line +-\tweak #'dash-fraction #0.2 +-\tweak #'thickness #3 +-\tweak #'color #red + \glissando +f' +@end lilypond + +Vous pouvez examiner le flux musical généré par une portion d'un +fichier source, y compris les éléments automatiquement insérés, en +suivant les indications portées à la rubrique +@rextend{Affichage d'expressions musicales}. Ceci s'avère tout à fait +approprié pour déterminer ce qui peut se modifier à l'aide d'un +@code{\tweak} ou bien aider à rectifier votre source de telle sorte +que le @code{\tweak} produise ses effets. + +@seealso +Manuel d'initiation : +@rlearning{Méthodes de retouche}. + +Manuel d'extension : +@rextend{Affichage d'expressions musicales}. + +@knownissues + +@cindex tweak et points de contrôle +@cindex points de contrôle et tweak + +Lorsqu'il y a plusieurs liaisons de prolongation dans un accord, la +commande @code{\tweak} ne permet de modifier les points de contrôle que +pour la première rencontrée dans le fichier source. + + +@node set ou override +@subsection @code{\set} ou @code{\override} +@translationof set versus override + +@c TODO -- This section is probably unnecessary now. + +@ignore +Si les propriétés peuvent être modifiées de deux façons, par les +commandes @code{\set} et @code{\override}, c'est qu'il y a deux types de +propriétés. + +La propriété @code{fontSize} est une exception : c'est un raccourci, qui +équivaudrait à saisir @w{@code{\override @dots{} #'font-size}} pour tous +les objets textuels. Dans la mesure où il s'agit d'une manipulation +très courante, une propriété spéciale a été créée. Elle doit être +modifiée avec la commande @code{\set}. + +@end ignore + + +@node Modification de listes associatives +@subsection Modification de listes associatives +@translationof Modifying alists + +Certaines propriétés configurables par l'utilisateur se présentent en +interne comme étant des listes associatives -- les puristes diront des +@emph{alists}. Une @emph{alist} est en fait constituée de plusieurs +paires de @emph{clés} et @emph{valeurs} ; sa structure ressemble à : + +@example +'((@var{clé1} . @var{valeur1}) + (@var{clé2} . @var{valeur2}) + (@var{clé3} . @var{valeur3}) + @dots{}) +@end example + +Dans le cas où cette liste représente les propriétés d'un objet +graphique ou bien l'une des variables du bloc @code{\paper}, chaque clé +peut être modifiée individuellement sans que cela n'affecte les autres. + +Par exemple, pour réduire l'espacement entre deux portées adjacentes +d'un même système, on utilisera la propriété @code{staff-staff-spacing} +qui est attachée à l'objet graphique @code{StaffGrouper}. Cette +propriété est constituée d'une liste de quatre clés : +@code{basic-distance}, @code{minimum-distance}, @code{padding} et +@code{stretchability}. Ses réglages par défaut tels que mentionnés à la +rubrique @emph{Backend} de la référence des propriétés internes -- voir +@rinternals{StaffGrouper} -- sont : + +@example +'((basic-distance . 9) + (minimum-distance . 7) + (padding . 1) + (stretchability . 5)) +@end example + +Afin de rapprocher nos deux portées, il suffit de réduire la valeur +(@code{9}) de la clé @code{basic-distance} au niveau de celle de la clé +@code{minimum-distance} (@code{7}). La modification d'une seule clé +individuellement peut se réaliser sous la forme d'une @emph{déclaration +imbriquée} : + +@lilypond[quote,verbatim] +% default space between staves +\new PianoStaff << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> + +% reduced space between staves +\new PianoStaff \with { + % this is the nested declaration + \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7 +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +Le recours à une déclaration imbriquée touchera la clé indiquée +(@code{basic-distance} dans l'exemple ci-dessus) sans pour autant +modifier les autres clés de la propriété considérée. + +Considérons maintenant que nous souhaitions que les portées soient le +plus proche possible les unes des autres, à la limite du chevauchement. +Il suffirait de mettre les quatre clés à zéro. Nous pourrions saisir +quatre déclarations, chacune d'elles touchant une clé. Nous pouvons +tout aussi bien redéfinir la propriété en une seule clause, sous la +forme d'une liste associative : + +@lilypond[quote,verbatim] +\new PianoStaff \with { + \override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 0) + (minimum-distance . 0) + (padding . 0) + (stretchability . 0)) +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +N'oubliez pas que dès lors qu'une clé n'apparaît pas dans la liste, elle +retourne à sa valeur @emph{sauf-mention-contraire}. Autrement dit, dans +le cas de @code{staff-staff-spacing} qui nous occupe, toutes les clés +non mentionnées seront ramenées à zéro -- à l'exception de +@code{stretchability} qui prend par défaut la valeur de +@code{basic-distance}. Les deux assertions suivantes sont donc +équivalentes. + +@example +\override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 7)) + +\override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 7) + (minimum-distance . 0) + (padding . 0) + (stretchability . 7)) +@end example + +L'une des conséquences, parfois involontaire, de ceci est la suppression +de réglages standards effectués par un fichier d'initialisation chargé à +chaque compilation d'un fichier source. Dans l'exemple précédent, les +réglages standards de @code{padding} et @code{minimum-distance}, tels +que déterminés par @file{scm/define-grobs.scm}, se voient ramenés à leur +valeur @emph{si-non-définie} ; autrement dit, les deux clés sont mises à +zéro. La définition d'une propriété ou d'une variable sous forme de +liste associative, quelle qu'en soit la taille, réinitialisera toujours +les clés non mentionnées à leur valeur @emph{si-non-définie}. Si telle +n'est pas votre intention, nous vous recommandons alors de régler la +valeur des clés individuellement par des déclarations imbriquées. + +@warning{Les déclarations imbriquées ne sont pas fonctionnelles dans le +cas des listes associatives des propriétés de contexte -- telles +@code{beamExceptions}, @code{keySignature}, +@code{timeSignatureSettings}, etc. Ces propriétés ne sont modifiables +qu'au travers d'une complète redéfinition de leur liste associative.} + + +@node Propriétés et contextes utiles +@section Propriétés et contextes utiles +@translationof Useful concepts and properties + +@menu +* Modes de saisie:: +* Direction et positionnement:: +* Distances et unités de mesure:: +* Propriétés des symboles de la portée:: +* Extenseurs et prolongateurs:: +* Visibilité des objets:: +* Styles de ligne:: +* Rotation des objets:: +@end menu + + +@node Modes de saisie +@subsection Modes de saisie +@translationof Input modes + +La manière dont sera interprétée la notation contenue dans un fichier +source dépend du mode affecté à la saisie. + +@strong{Mode accords} + +Ce mode, activé par la commande @code{\chordmode}, permet d'interpréter +les saisies comme étant des accords, qui seront imprimés sous forme +de notes sur une portée -- voir @ref{Notation des accords}. + +Le mode accords s'active aussi par la commande @code{\chords}, qui +créera un contexte @code{ChordNames}. Les saisies, interprétées comme +étant des accords, seront alors rendues sous forme nominale dans ce +contexte @code{ChordNames} -- voir @ref{Impression des noms d'accord}. + +@strong{Mode percussions} + +Ce mode, activé par la commande @code{\drummode}, permet d'interpréter +les saisies comme étant de la notation pour percussions -- voir +@ref{Notation de base pour percussions}. + +Le mode percussions s'active aussi par la commande @code{\drums}, qui +créera un contexte @code{DrumStaff}. Les saisies, interprétées comme +étant de la notation pour percussions, seront alors rendues sous +forme symbolique sur une portée de percussions -- voir +@ref{Notation de base pour percussions}. + +@strong{Mode figures} + +Ce mode, activé par la commande @code{\figuremode}, permet d'interpréter +les saisies comme étant de la basse chiffrée (ou figurée) -- voir +@ref{Saisie de la basse chiffrée}. + +Le mode figures s'active aussi par la commande @code{\figures}, qui +créera un contexte @code{FiguredBass}. Les saisies interprétées comme +étant de la basse chiffrée, seront alors rendues sous forme symbolique +dans le contexte @code{FiguredBass} -- voir +@ref{Introduction à la basse chiffrée}. + +@strong{Mode frets et tablatures} + +Il n'existe pas de mode spécifique pour saisir des symboles de fret ou +de tablature. + +Notes ou accords saisis en mode note puis affectés à un contexte +@code{TabStaff} seront rendus sous forme de diagramme de tablature -- +voir @ref{Tablatures par défaut}. + +Deux options différentes permettent d'obtenir des diagrammes de fret en +surplomb d'une portée : directement à l'aide d'un contexte +@code{FretBoards} -- voir @ref{Tablatures automatiques} -- ou en +attachant aux notes des @emph{markups} créés par la commande +@code{\fret-diagram} -- voir @ref{Tablatures sous forme d'étiquette}. + +@strong{Mode paroles} + +Ce mode, activé par la commande @code{\lyricmode}, permet d'interpréter +les saisies comme étant des syllabes, ayant éventuellement une durée, et +des indications habituelles aux paroles -- voir @ref{Musique vocale}. + +Le mode paroles s'active aussi par la commande @code{\addlyrics}, qui +créera un contexte @code{Lyrics} et ajoutera implicitement une commande +@code{\lyricsto} afin d'associer les paroles qui suivent à la musique +précédemment saisie. + +@strong{Mode @emph{markup}} + +Ce mode, activé par la commande @code{\markup}, permet d'interpréter les +saisies comme étant des @emph{markups} (annotations ou étiquettes) -- +voir @rusernamed{Text markup commands,Commandes pour le mode markup}. + + +@c silly work-around for texinfo broken-ness +@c (@strong{Note...} causes a spurious cross-reference in Info) +@b{Mode notes} + +Le mode notes est le mode par défaut dans LilyPond. Il peut aussi +s'activer par la commande @code{\notemode}. Les saisies seront +interprétées comme étant des hauteurs, durées, @emph{markups} etc. qui +seront rendues sous forme de notation musicale sur une portée. + +Nul n'est besoin de spécifier le mode notes de manière explicite, hormis +dans certaines situations particulières, notamment lorsque vous êtes en +mode paroles, accords, ou tout autre mode, et que vous deviez insérer +un élément qui ne serait disponible que grâce à la syntaxe du mode +notes. + +Il en va ainsi lorsque, par exemple, vous voulez ajouter une indication +de nuance au numéro de couplet d'un chant choral : + +@lilypond[verbatim,relative=2,quote] +{ c4 c4 c4 c4 } +\addlyrics { + \notemode{\set stanza = \markup{ \dynamic f 1. } } + To be sung loudly +} +\addlyrics { + \notemode{\set stanza = \markup{ \dynamic p 2. } } + To be sung quietly +} +@end lilypond + + +@node Direction et positionnement +@subsection Direction et positionnement +@translationof Direction and placement + +En matière de typographie musicale, l'orientation et le positionnement +de nombreux éléments est affaire de goût. Par exemple, les hampes +peuvent être ascendantes ou descendantes, les paroles, nuances ou autres +indications d'expression peuvent apparaître au-dessus ou en dessous de +la portée, les indications textuelles s'alignent tantôt par la gauche, +tantôt par la droite, ou être centrées. La plupart de ces choix peuvent +être laissés à l'appréciation de LilyPond. Il peut être préférable, +dans certains cas, d'imposer l'orientation ou le positionnement des +éléments. + +@strong{Indicateurs de position d'une articulation} + +Certains positionnements sont opérés par défaut -- toujours au-dessus ou +toujours en dessous (nuances ou points d'orgue) -- alors que d'autres +alterneront selon l'orientation des hampes (liaisons ou accents). + +@c TODO Add table showing these + +Le positionnement par défaut peut être outrepassé à l'aide d'un +@emph{indicateur de positionnement}, qui vient s'insérer juste avant +l'articulation. LilyPond met à votre disposition trois indicateurs de +positionnement : @code{^} (pour @qq{au-dessus}), @code{_} (pour +@qq{au-dessous}), et @code{-} (pour @qq{appliquer le positionnement par +défaut}). L'indicateur de positionnement n'est pas obligatoire ; +LilyPond considère alors qu'il y a un @code{-}. Un indicateur de +positionnement est cependant @strong{obligatoire} dans les cas +suivants : + +@itemize +@item une commande @code{\tweak}, +@item une commande @code{\markup}, +@item une commande @code{\tag}, +@item les indications de corde, par exemple @code{-"corde"}, +@item les indications de doigté, par exemple @w{@code{-1}}, +@item les raccourcis d'articulation, par exemple @w{@code{-.}}, +@w{@code{->}} ou @w{@code{--}}. +@end itemize + +Les indicateurs de positionnement n'affectent que la note qui suit : + +@lilypond[verbatim,quote,relative=2] +c2( c) +c2_( c) +c2( c) +c2^( c) +@end lilypond + +@strong{La propriété @code{direction}} + +Le positionnement ou l'orientation de nombreux objets de rendu sont +gérés par la propriété @code{direction}. + +La propriété @code{direction} peut prendre la valeur @code{1}, qui +signifie @qq{ascendant} ou @qq{au-dessus}, ou @w{@code{-1}}, qui +signifie @qq{descendant} ou @qq{au-dessous}. Les symboliques @code{UP} +et @code{DOWN} peuvent remplacer respectivement @code{1} et +@w{@code{-1}}. Les valeurs @code{0} ou @code{CENTER} permettent de +réaffecter à la propriété @code{direction} son comportement par défaut. +Certaines commandes prédéfinies permettent par ailleurs de spécifier un +comportement en matière d'orientation ou positionnement ; elles +sont de la forme + +@example +@code{\xxxUp}, @code{\xxxDown} et @code{\xxxNeutral} +@end example + +@noindent +auquel cas @code{\xxxNeutral} signifie @qq{retour au comportement par +défaut} -- voir @rlearning{Objets inclus dans la portée}. + +Dans quelques cas particuliers, comme l'indication d'un @emph{arpeggio}, +la valeur affectée à la propriété @code{direction} déterminera si +l'objet doit se placer à gauche ou à droite de son parent. Un +@w{@code{-1}} ou @code{LEFT} signifiera alors @qq{sur la gauche}, et un +@code{1} ou @code{RIGHT} @qq{sur la droite}. Comme de bien entendu, un +@code{0} ou @code{CENTER} signifiera @qq{appliquer le positionnement par +défaut}. + +@ignore +These all have side-axis set to #X +AmbitusAccidental - direction has no effect +Arpeggio - works +StanzaNumber - not tried +TrillPitchAccidental - not tried +TrillPitchGroup - not tried +@end ignore + +Notez que ces commandes resteront effectives jusqu'à ce qu'elles soient +annulées. + +@lilypond[verbatim,quote,relative=2] +c2( c) +\slurDown +c2( c) +c2( c) +\slurNeutral +c2( c) +@end lilypond + +En matière de musique polyphonique, il est souvent plus judicieux +d'utiliser des contextes @code{Voice} explicites que de modifier +l'orientation des objets. Pour de plus amples informations, voir +@ref{Plusieurs voix}. + +@seealso +Manuel d'initiation : +@rlearning{Objets inclus dans la portée}. + +Manuel de notation : +@ref{Plusieurs voix}. + + +@node Distances et unités de mesure +@subsection Distances et unités de mesure +@translationof Distances and measurements + +@cindex distance absolue +@cindex distance relative +@cindex distance extensible + +@funindex \mm +@funindex \cm +@funindex \in +@funindex \pt + +LilyPond considère deux types de distances : les distances absolues +et les distances relatives ou extensibles. + +Les distances absolues permettent de spécifier les marges, indentations +et autres détails de mise en page ; elles s'expriment par défaut en +millimètres. Vous pouvez utiliser d'autres systèmes de mesure, dès lors +que la quantité est suivie de la mesure : @code{\mm}, @code{\cm}, +@code{\in} (pouces) ou @code{\pt} (points, 1/72,27 pouce). +Les mesures de mise en page peuvent aussi s'exprimer en unité extensible +de portée @code{\staff-space} (voir ci-après). Pour plus d'information +concernant la mise en page, voir la rubrique +@ref{Mise en forme de la page}. + +Les distances relatives ou extensibles s'expriment toujours en +@qq{espace de portée} ou, plus rarement, en @qq{demi espace de portée}. +L'espace de portée correspond à la distance qui sépare deux lignes +adjacentes d'une portée. Sa valeur par défaut est déterminée +globalement par la taille de portée. Elle peut aussi s'ajuster +ponctuellement en jouant sur la propriété @code{staff-space} de l'objet +@code{StaffSymbol}. Les distances relatives s'ajustent automatiquement +dès qu'une modification de la taille globale de portée ou bien de la +propriété @code{staff-space} du @code{StaffSymbol} intervient. +Cependant, les tailles de fonte ne s'ajusteront automatiquement que si +la modification touche la taille globale des portées. La taille globale +de portée permet ainsi de gérer l'aspect général de la partition -- +voir @ref{Définition de la taille de portée}. + +@funindex magstep + +Lorsque seulement une portion de partition doit apparaître dans une +taille, comme par exemple une portée d'ossia ou une note de bas de page, +influer sur la taille globale de portée affecterait l'intégralité de la +partition. Il convient donc dans ce cas de modifier à la fois la +propriété @code{staff-space} du @code{StaffSymbol} et la taille des +fontes. La fonction Scheme @code{magstep} est tout spécialement chargée +d'adapter une modification du @code{staff-space} aux fontes. Pour de +plus amples informations, reportez-vous à la rubrique +@rlearning{Longueur et épaisseur des objets}. + +@seealso +Manuel d'initiation : +@rlearning{Longueur et épaisseur des objets}. + +Manuel de notation : +@ref{Définition de la taille de portée}, +@ref{Mise en forme de la page}. + + +@node Propriétés des symboles de la portée +@subsection Propriétés des symboles de la portée +@translationof Staff symbol properties + +@cindex ajustement des symboles de portée +@cindex dessin des symboles de portée +@cindex symboles de portée, dessin + +@c TODO Extend or remove this section. See also NR 1.6.2 Staff symbol +@c Need to think of uses for these properties. Eg 'line-positions +@c is used in a snippet to thicken centre line. +@c If retained, add @ref to here in 1.6.2 -td + +L'emplacement vertical et le nombre de lignes d'une portée se +définissent conjointement. Comme l'illustre l'exemple suivant, le +positionnement des notes n'est en rien influencé par le positionnement +des lignes de la portée. + +@warning{La propriété @code{'line-positions} écrase la propriété +@code{'line-count}. Le nombre de lignes d'une portée est implicitement +défini par le nombre d'éléments dans la liste des valeurs de +@code{'line-positions}.} + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7) +} +{ a4 e' f b | d1 } +@end lilypond + +La largeur d'une portée, exprimée en espace de portée, peut être figée. +L'espacement des objets inclus dans cette portée ne sera en rien affecté +par ce réglage. + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'width = #23 +} +{ a4 e' f b | d1 } +@end lilypond + + +@node Extenseurs et prolongateurs +@subsection Extenseurs et prolongateurs +@translationof Spanners + +De nombreux objets de notation musicale s'étendent sur plusieurs notes, +voire même sur plusieurs mesures. Il en va ainsi des liaisons, +ligatures, crochets de nolet, crochets de reprise, crescendos, trilles +ou glissandos. Ces objets, que l'on englobe sous l'appellation +@qq{d'extenseur}, sont pourvus de propriétés spécifiques destinées à +contrôler leur apparence et leur comportement. Un certain nombre de ces +propriétés sont communes à tous les extenseurs, d'autres n'affectent que +certains d'entre eux. + +Tout extenseur dispose de la @code{spanner-interface}. Quelques uns, +tout particulièrement ceux chargés de dessiner une ligne droite entre +deux objets, disposent aussi de la @code{line-spanner-interface}. + -En fait, très peu d'objets passent @emph{directement} du code source à -la partition. Une note toute simple, par exemple @code{c4}, fait l'objet -d'un traitement et n'est donc pas directement rendue@tie{}; c'est -pourquoi le code suivant ne sera d'aucun effet@tie{}: +@unnumberedsubsubsec Utilisation de @code{spanner-interface} +@translationof Using the @code{spanner-interface} -@example -\tweak #'color #red c4 -@end example +Cette interface fournit deux propriétés qui s'appliquent à certains +extenseurs. -@noindent -Voir pour plus de détails -@rextendnamed{Displaying music expressions,Affichage d'expressions musicales}. +@strong{@i{La propriété @code{minimum-length}}} +La longueur minimale d'un extenseur est déterminée par la propriété +@code{minimum-length}. Au plus sa valeur est élevée, au plus +l'espacement des notes qui le bornent sera grand. Forcer sa valeur +restera néanmoins sans effet pour un certain nombre d'extenseurs dont la +longueur dépend d'autres considérations. Voici quelques exemples de +mise en œuvre de cette propriété. -@node set ou override -@subsection @code{\set} ou @code{\override} -@translationof set versus override +@ignore +Cette propriété est pleinement fonctionnelle pour : + Tie (liaison de prolongation) + MultiMeasureRest (silence multimesures) + Hairpin (soufflet) + Slur (liaison d'articulation) + PhrasingSlur (liaison de phrasé) + +Cette propriété est fonctionnelle en présence d'un @emph{callback} : + Glissando + Beam (ligature) + +Cette propriété est sans effet sur : + LyricSpace + LyricHyphen + LyricExtender + TextSpanner + System +@end ignore -Si les propriétés peuvent être modifiées de deux façons, par les -commandes @code{\set} et @code{\override}, c'est qu'il y a deux types de -propriétés. +@lilypond[verbatim,quote,relative=2] +a~a +a +% increase the length of the tie +-\tweak #'minimum-length #5 +~a +@end lilypond -Les contextes peuvent avoir des propriétés, dont les noms commencent par -une minuscule puis comprennent une ou plusieurs majuscules (de style -@code{totoTutu}). Elles ont surtout trait à la notation des éléments -musicaux@tie{}: par exemple, @code{localKeySignature} permet de choisir -s'il faut ou non imprimer une altération, ou @code{measurePosition} -permet de choisir quand il faut imprimer une barre de mesure. Ces -propriétés de contextes sont appelées à changer au long de -l'interprétation de la partition@tie{}: @code{measurePosition} en est un -exemple évident. Ces propriétés doivent être modifiées avec la commande -@code{\set}. - -Il existe un type particulier de propriété@tie{}@tie{}: les descriptions -d'éléments. Ces propriétés, dont les noms commencent par une majuscule, -puis comprennent une ou plusieurs majuscules (de style @code{TotoTata}), -contiennent les réglages @qq{par défaut} pour les objets graphiques. -Ces réglages sont sous forme de liste Scheme@tie{}; on peut les -consulter dans le fichier @file{scm/define-grobs.scm}. - -Les descriptions d'éléments doivent être modifiées avec la commande -@code{\override}. - -@code{\override} est en fait un raccourci@tie{}: +@lilypond[verbatim,quote,relative=2] +a1 +\compressFullBarRests +R1*23 +% increase the length of the rest bar +\once \override MultiMeasureRest #'minimum-length = #20 +R1*23 +a1 +@end lilypond -@example -\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} -@end example +@lilypond[verbatim,quote,relative=2] +a \< a a a \! +% increase the length of the hairpin +\override Hairpin #'minimum-length = #20 +a \< a a a \! +@end lilypond -@noindent -est plus ou moins l'équivalent de +Cette propriété permet aussi de jouer sur l'envergure d'une liaison +d'articulation ou de phrasé. -@c leave this long line -gp -@example -\set @var{contexte}.@var{objet} #'@var{propriété} = #(cons (cons '@var{propriété} @var{valeur}) } +>> +@end lilypond + +L'un des moyens d'améliorer cette liaison consiste à modifier +manuellement ses quatre points de contrôle. + +Les coordonnées des points de contrôle sont données en unités d'espace +de portée. L'abscisse est relative au point de référence de la note de +départ de la liaison ; l'ordonnée est relative à la ligne médiane +de la portée. Les différentes coordonnées sont entrées sous la forme +d'une liste de quatre paires de nombres décimaux (ou nombres réels). +L'une des manières de procéder consiste à tout d'abord estimer les +coordonnées des deux extrémités puis, par tâtonnement, déterminer les +deux points intermédiaires. + +Remarque intéressante au sujet des courbes : une courbe sera +symétrique si ses points de contrôle sont symétriques. L'une des +propriétés avantageuses des courbes de Bézier est que leur +transformation -- déplacement, rotation ou échelonnement -- est +réalisable en simplement corrigeant de manière identique ses points de +contrôle. + +Pour l'exemple qui nous occupe, l'adaptation suivante nous permet +d'obtenir un résultat plutôt satisfaisant. Notez bien l'endroit où +cette adaptation est stipulée : juste avant la note de départ de la +liaison. + +@lilypond[verbatim,quote,relative=1] +<< + { + \once \override Tie + #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) + e1 ~ e + } +\\ + { r4 } +>> +@end lilypond + +@knownissues +Lorsque plusieurs liaisons, quelle qu'en soit la nature, commencent au +même moment, jouer sur la propriété @code{control-points} est +impossible, et la commande @code{\tweak} inefficace. Vous pouvez +néanmoins influer sur la propriété @code{tie-configuration} de l'objet +@code{TieColumn} pour déterminer la ligne de départ et l'orientation. + +@seealso +Référence des propriétés internes : +@rinternals{TieColumn}. + + +@node Conteneurs requalifiants +@subsection Conteneurs requalifiants +@translationof Unpure-pure containers + +@cindex Scheme, pure containers +@cindex Scheme, unpure containers +@cindex pure containers, Scheme +@cindex unpure containers, Scheme +@cindex espacement horizontal, affinage + +Les conteneurs requalifiants permettent de faciliter le calcul des +espacements en cas de modification du @emph{Y-axis} -- plus +particulièrement les composantes @code{Y-offset} et @code{Y-extent} -- à +l'aide d'une fonction scheme en lieu et place de valeurs. + +L'envergure verticale (@code{Y-extent}) de certains objets dépend de la +propriété @code{stencil} ; jouer sur leur stencil requiert alors une +intervention supplémentaire au niveau du @code{Y-extent} à l'aide d'un +conteneur transitoire. Lorsqu'une fonction affecte un @code{Y-offset} ou +un @code{Y-extent}, cela déclenche la détermination des sauts de ligne +de manière anticipée dans la séquence des traitements. Il en résulte +que cette opération n'est en fait pas exécutée ; elle renvoie +habituellement @code{0} ou @code{'(0 . 0)}, ce qui peut engendrer des +collisions. Une fonction @qq{pure} évitera d'avorter la construction +des propriétés ou objets, qui de ce fait verront leurs arguments liés à +la verticalité (@code{Y-axis}) correctement évalués. + +Il existe actuellement une trentaine de fonctions que l'on peut +qualifier de @qq{pures}. Le recours à un conteneur transitoire permet +de requalifier une fonction de telle sorte qu'elle soit reconnue comme +@qq{pure} et soit donc évaluée @strong{avant} détermination des sauts de +ligne -- l'espacement horizontal sera de fait ajusté en temps et en heure. +La fonction @qq{impure} sera ensuite évaluée @strong{après} le +positionnement des sauts de ligne. + +@warning{Il n'est pas toujours facile d'avoir l'assurance qu'une +fonction soit qualifiée de @qq{pure} ; aussi nous vous recommandons +d'éviter d'utiliser les objets @code{Beam} or @code{VerticalAlignment} +lorsque vous désirez en créer une.} + +Un conteneur requalifiant se construit selon la syntaxe + +@code{(ly:make-unpure-pure-container f0 f1)} + +où @code{f0} est une fonction prenant @var{n} arguments (@var{n_>=_1}), +le premier devant être l'objet en question ; il s'agit de la +fonction dont le résultat sera réutilisé. @var{f1} est la fonction qui +sera qualifiée de @qq{pure}. Elle prend @var{n_+_2} arguments, le +premier devant être lui aussi l'objet en question, et les second et +troisième étant respectivement les @qq{point de départ} (@var{start}) et +@qq{point d'arrivée} (@var{end}). + +@var{start} et @var{end} sont dans tous les cas des valeurs fictives qui +trouveront leur utilité dans le cas d'objets de type @code{Spanner}, +tels les soufflets (@code{Hairpin}) ou barres de ligature (@code{Beam}), +en retournant les différentes estimations de hauteur basées sur leurs +début et fin d'extension. + +Viennent ensuite les autres arguments de la fonction initiale @code{f0} +-- autrement dit aucun si @var{n_=_1}. + +Les résultats de la deuxième fonction (@code{f1}) permettent une +approximation des valeurs qui seront ensuite utilisées par la fonction +initiale aux fins d'ajustement lors des phases ultérieures d'espacement. + +@lilypond[verbatim,quote,ragged-right] +#(define (square-line-circle-space grob) +(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch)) + (notename (ly:pitch-notename pitch))) + (if (= 0 (modulo notename 2)) + (make-circle-stencil 0.5 0.0 #t) + (make-filled-box-stencil '(0 . 1.0) + '(-0.5 . 0.5))))) + +squareLineCircleSpace = { + \override NoteHead #'stencil = #square-line-circle-space +} + +smartSquareLineCircleSpace = { + \squareLineCircleSpace + \override NoteHead #'Y-extent = + #(ly:make-unpure-pure-container + ly:grob::stencil-height + (lambda (grob start end) (ly:grob::stencil-height grob))) +} + +\new Voice \with { \remove "Stem_engraver" } +\relative c'' { + \squareLineCircleSpace + cis4 ces cisis c + \smartSquareLineCircleSpace + cis4 ces cisis c +} +@end lilypond + +La première mesure de l'exemple ci-dessus ne fait pas appel à un +conteneur requalifiant ; le moteur d'espacement n'a donc aucune +connaissance de la largeur des têtes de note et ne peut empêcher +qu'elles chevauchent les altérations. Dans la deuxième mesure, par +contre, le recours à un conteneur requalifiant informe le moteur +d'espacement de la largeur des têtes de note ; les collisions sont +alors évitées du fait de l'espace réservé à chacune des têtes. + +Lorsqu'il s'agit de calculs simples, les fonctions, tant pour la partie +@qq{pure} que pour la partie @qq{impure}, peuvent être identiques au +détail près du nombre d'arguments utilisés ou du domaine d'intervention. + +@warning{Le fait de qualifier une fonction de @qq{pure} alors qu'elle ne +l'est pas peut générer des résultats imprévisibles.} @node Utilisation de fonctions musicales @section Utilisation de fonctions musicales @translationof Using music functions +@c TODO -- add @seealso, etc. to these subsections + +Une adaptation ou un affinage qui devient récurrent parce que doit +s'appliquer à différentes expressions musicales peut faire l'objet d'une +@emph{fonction musicale}. Nous ne traiterons ici que des fonctions de +@emph{substitution}, dont le but est de substituer une variable en un +bout de code LilyPond. D'autres fonctions, plus complexes, sont +abordées au chapitre @rextend{Fonctions musicales}. + @menu * Syntaxe d'une fonction de substitution:: * Exemples de fonction de substitution:: @end menu + @node Syntaxe d'une fonction de substitution @subsection Syntaxe d'une fonction de substitution @translationof Substitution function syntax -@untranslated +La rédaction d'une fonction chargée de substituer du code LilyPond à une +variable est chose relativement aisée. Une telle fonction est de la +forme + +@example +fonction = +#(define-music-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{type1?} @var{type2?} @dots{}) + #@{ + @var{@dots{}musique@dots{}} + #@}) +@end example + +@noindent +où + +@multitable @columnfractions .33 .66 +@item @code{@var{argN}} +@tab @var{n}ième argument. + +@item @code{@var{typeN?}} +@tab un @emph{type de prédicat} Scheme pour lequel @code{@var{argN}} +doit renvoyer @code{#t}. + +@item @code{@var{@dots{}musique@dots{}}} +@tab du code LilyPond tout ce qu'il y a de plus ordinaire, avec des +@code{$} (là où seule une construction LilyPond est autorisée) et des +@code{#} (lorsqu'il s'agit d'une valeur en Scheme, d'un argument de +fonction musicale ou de musique faisant partie d'une liste) pour +référencer les arguments (par ex. @samp{#arg1}). +@end multitable + +Les arguments @code{parser} et @code{location} sont obligatoires ; +ils sont utilisés dans certaines situations évoluées, comme indiqué dans +le manuel d'extension des fonctionnalités à au chapitre +@rextend{Fonctions musicales}. Assurez-vous bien de ne pas les omettre +dans vos fonctions de substitution. + +La liste des types de prédicat est elle aussi obligatoire. Voici +quelques uns des types de prédicat les plus utilisés dans les fonctions +musicales : + +@example +boolean? +cheap-list? @emph{(au lieu de }@qq{list?}@emph{, pour accélérer le traitement)} +ly:duration? +ly:music? +ly:pitch? +markup? +number? +pair? +string? +symbol? +@end example + +@noindent +Une liste plus fournie est disponible à l'annexe +@ref{Types de prédicats prédéfinis}. Vous pouvez par ailleurs définir +vos propres types de prédicat. + +@seealso +Manuel de notation : +@ref{Types de prédicats prédéfinis}. + +Manuel d'extension : +@rextend{Fonctions musicales}. + +Fichiers d'initialisation : +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm}. @node Exemples de fonction de substitution @subsection Exemples de fonction de substitution @translationof Substitution function examples -@untranslated +La présente rubrique regroupe quelques exemples de fonction +substitutive. Le propos est ici d'illustrer les possibilités qu'offrent +les fonctions de substitution simple. + +Dans ce premier exemple, nous définissons une fonction dans le but de +simplifier le réglage du décalage d'une annotation (un +@code{TextScript}). + +@lilypond[quote,verbatim,ragged-right] +padText = +#(define-music-function + (parser location padding) + (number?) + #{ + \once \override TextScript #'padding = #padding + #}) + +\relative c''' { + c4^"piu mosso" b a b + \padText #1.8 + c4^"piu mosso" d e f + \padText #2.6 + c4^"piu mosso" fis a g +} +@end lilypond + +Nous pouvons utiliser autre chose que des nombres au sein d'une +fonction, y compris une expression musicale : + +@lilypond[quote,verbatim,ragged-right] +custosNote = +#(define-music-function + (parser location note) + (ly:music?) + #{ + \tweak NoteHead #'stencil #ly:text-interface::print + \tweak NoteHead #'text + \markup \musicglyph #"custodes.mensural.u0" + \tweak Stem #'stencil ##f + #note + #}) + +\relative c' { c4 d e f \custosNote g } +@end lilypond + +Une fonction de substitution peut traiter plusieurs arguments : + +@lilypond[quote,verbatim,ragged-right] +tempoPadded = +#(define-music-function + (parser location padding tempotext) + (number? markup?) + #{ + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } + #}) + +\relative c'' { + \tempo \markup { "Low tempo" } + c4 d e f g1 + \tempoPadded #4.0 "High tempo" + g4 f e d c1 +} +@end lilypond +@c TODO: add appropriate @@ref's here. diff --git a/Documentation/fr/notation/cheatsheet.itely b/Documentation/fr/notation/cheatsheet.itely index 587ec08f71..247ddae626 100644 --- a/Documentation/fr/notation/cheatsheet.itely +++ b/Documentation/fr/notation/cheatsheet.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7 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" +@c \version "2.16.0" @c Translators: Valentin Villenave @c Translation checkers: Jean-Charles Malahieude diff --git a/Documentation/fr/notation/chords.itely b/Documentation/fr/notation/chords.itely index 1a13551611..af80c1c283 100644 --- a/Documentation/fr/notation/chords.itely +++ b/Documentation/fr/notation/chords.itely @@ -1,23 +1,27 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 3f4496001441e0b1b27d7bc5395c4520f4f2088c + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a 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" +@c \version "2.16.0" -@c Translators: Valentin Villenave +@c Translators: Valentin Villenave,Jean-Charles Malahieude @c Translation checkers: Jean-Charles Malahieude, John Mandereau @node Notation des accords @section Notation des accords @translationof Chord notation -@untranslated +@lilypondfile[quote]{chords-headword.ly} + +Les accords se saisissent soit comme des notes normales, soit à l'aide +d'un mode dédié, et seront rendus selon l'une des diverses nomenclatures +occidentales. Les accords peuvent aussi se présenter sous forme +nominale, ou bien en basse figurée. @menu * Mode accords:: @@ -25,213 +29,409 @@ * Basse chiffrée:: @end menu + @node Mode accords @subsection Mode accords @translationof Chord mode -@untranslated +@cindex chordmode +@cindex accords, mode + +Le mode accords permet de saisir des accords en indiquant leur structure +plutôt que les notes qui les composent. @menu * Généralités sur le mode accords:: * Accords courants:: -* Extensions et altération d'accords:: +* Extension et altération d'accords:: @end menu -@c This material comes from 'Entering chord names' -FV + @node Généralités sur le mode accords @unnumberedsubsubsec Généralités sur le mode accords @translationof Chord mode overview -@cindex accords, chiffrage jazz +@cindex accords, noms +@cindex accords, chiffrage -LilyPond permet de désigner les accords par leur chiffrage jazz. -S'il est possible d'entrer un accord sous sa forme musicale, avec -@code{<@dots{}>}, on peut aussi le saisir par son nom. Le logiciel -traite les accords comme des ensembles de hauteurs, donc les accords -peuvent être transposés. +Un accord peut se saisir en tant que musique simultanée, comme nous +l'avons vu à la rubrique @ref{Notes en accords}. -@lilypond[quote,ragged-right,verbatim] -twoWays = \transpose c c' { - \chordmode { - c1 f:sus4 bes/f - } - - - -} +LilyPond dispose aussi d'un @qq{mode accords} au sein duquel sera +considérée la structure des accords, tels qu'ils se présentent dans les +traditions occidentales, plutôt que les différentes hauteurs qui les +composent. Ce mode est tout à fait adapté pour ceux qui sont plus +habitués aux accords nommés. Pour plus d'information quant aux +différentes façons de libeller votre code, voir @ref{Modes de saisie}. -<< \new ChordNames \twoWays - \new Voice \twoWays >> +@lilypond[verbatim,quote,ragged-right] +\chordmode { c1 g a g c } @end lilypond -Cet exemple montre également que les jeux d'instructions qui permettent -à LilyPond d'imprimer des accords ne cherchent pas à se montrer -intelligents. Ici, le dernier accord n'est pas interprété comme étant -renversé. +Tout accord saisi dans ce mode dédié constitue un élément musical à +part entière@tie{}; il pourra donc par exemple être transposé comme +n'importe quel ensemble de hauteurs simultanées. @code{\chordmode} +travaille en absolu@tie{}; une instruction @code{\relative} restera sans +effet au sein d'un bloc @code{chordmode}. Notez toutefois que les +hauteurs absolues sont une octave plus haut en @code{\chordmode} qu'en +mode notes traditionnel. + +Mode notes et mode accords peuvent tout à fait cohabiter dans une +séquence musicale@tie{}: + +@lilypond[verbatim,quote,ragged-right,relative=1] +2 +\chordmode { c2 f } +2 +\chordmode { f2 g } +@end lilypond -Notez bien que la valeur rythmique des accords doit être indiquée -@emph{à l'extérieur} des symboles @code{<>}. +@seealso +Glossaire musicologique : +@rglosnamed{chord,Accord}. + +Manuel de notation : +@ref{Notes en accords}, +@ref{Modes de saisie}. + +Morceaux choisis : +@rlsrnamed{Chords,Accords}. + +@knownissues +Les raccourcis d'articulation ou d'ornementation ne sont pas disponibles +en mode accord -- voir @ref{Articulations et ornements}. + +Lorsque vous mélangez mode accords et mode notes dans une séquence +musicale qui démarre par le mode accords, le mode notes créera un +nouveau contexte @code{Staff}@tie{}: + +@lilypond[verbatim,quote,ragged-right,relative=1] +\chordmode { c2 f } +2 +@end lilypond + +@noindent +La solution consiste à créer explicitement le contexte @code{Staff} dès +le départ@tie{}: + +@lilypond[verbatim,quote,ragged-right,relative=1] +\new Staff { + \chordmode { c2 f } + 2 +} +@end lilypond -@example -2 -@end example -@c This material comes from 'Chords mode' -FV @node Accords courants @unnumberedsubsubsec Accords courants @translationof Common chords +@cindex triades +@cindex septième +@cindex fondamentale +@cindex accords, modificateur +@cindex qualité d'accord + Dans le mode accords, introduit par la commande @code{\chordmode}, les -accords ne sont indiqués que par leur note fondamentale. +accords ne sont indiqués que par leur note fondamentale, à laquelle on +peut adjoindre une durée. + +@lilypond[verbatim,quote,ragged-right] +\chordmode { c2 f4 g } +@end lilypond + +On peut cependant obtenir des accords différents -- mineur, augmenté ou +diminué -- en utilisant le caractère deux points (@code{:}). + +@lilypond[verbatim,quote,ragged-right] +\chordmode { c2:m f4:aug g:dim } +@end lilypond + +Les accords de septième sont aisément stipulables@tie{}: @lilypond[quote,ragged-right,verbatim] -\chordmode { es4. d8 c2 } +\chordmode { c1:7 c:m7 c:maj7 c:dim7 c:aug7 } @end lilypond -@cindex saisir des accords -@cindex mode accords +@funindex aug +@funindex dim +@funindex maj +@funindex m -On peut cependant obtenir des accords différents, en utilisant le -caractère deux points (@code{:}). +Voici les différents modificateurs d'accord de trois sons ou de +septième. Par défaut, la septième ajoutée sera mineure@tie{}; la +septième de dominante est donc l'accord de septième de base. Toutes les +altérations sont relatives à la septième de dominante. Une table +étendue des modificateurs et de leur utilisation est à l'annexe +@ref{Modificateurs d'accord usuels}. + +@c @table @code +@multitable @columnfractions .2 .4 .3 + +@item +@b{Modificateur} +@tab +@b{Action} +@tab +@b{Exemple} + +@item +Néant +@tab +Action par défaut@tie{}; produit une triade majeure. +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1 +} +@end lilypond -@lilypond[quote,verbatim] -\chordmode { e1:m e1:7 e1:m7 } +@item +m, m7 +@tab +Accord mineur. Ce modificateur abaisse la tierce, et la septième s'il y +en a une. +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:m c:m7 +} @end lilypond -Le nombre accolé à la note fondamentale est considéré comme chiffrage -jazz de l'accord, qui est de ce fait construit par un empilement de -tierces. Notez l'exception que constitue @code{c:13} dans lequel la -onzième est délibérément omise. +@item +dim, dim7 +@tab +Accord diminué. Ce modificateur minorise la tierce, diminue la quinte et +la septième s'il y en a. +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:dim c:dim7 +} +@end lilypond -@lilypond[quote,verbatim] -\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 c:13 } +@item +aug +@tab +Accord augmenté. Ce modificateur augmente la quinte. +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:aug +} +@end lilypond + +@item +maj, maj7 +@tab +Accord de septième majeure. Ce modificateur majorise la septième. Le +@code{7} à la suite du est @code{maj} facultatif. Ce modificateur ne +sert pas à créer une triade majeure. +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:maj c:maj7 +} @end lilypond -@cindex note fondamentale -@cindex notes ajoutées -@cindex accords incomplets +@end multitable -Des accords encore plus complexes peuvent être élaborés en plusieurs -étapes séparées. Ainsi, on peut enrichir l'accord par des notes -ajoutées, que l'on indique après le chiffrage principal et que l'on -sépare par des points@tie{}: +@seealso +Manuel de notation : +@ref{Extension et altération d'accords}, +@ref{Modificateurs d'accord usuels}. -@lilypond[quote,verbatim] -\chordmode { c:5.6 c:3.7.8 c:3.6.13 } +Morceaux choisis : +@rlsrnamed{Chords,Accords}. + +@knownissues +Un accord ne devrait comporter qu'un seul modificateur de qualité. La +présence de plusieurs modificateurs ne déclenchera ni avertissement, ni +erreur, mais le résultat pourrait être surprenant. Un accord qui n'est +pas constructible à l'aide d'un unique modificateur devra faire l'objet +d'une altération de ses composantes, comme indiqué à la rubrique +@ref{Extension et altération d'accords}. + + +@node Extension et altération d'accords +@unnumberedsubsubsec Extension et altération d'accords +@translationof Extended and altered chords + +Le mode accords permet d'élaborer des accords complexes. Ainsi, on peut +enrichir l'accord par des notes ajoutées, enlever certaines notes, +augmenter ou diminuer certains intervalles, ajouter la note de basse ou +créer un renversement. + +Le premier nombre qui suit le caractère deux-points (@code{:}) permet de +déterminer l'étendue d'un accord. L'accord sera construit par ajout à +la fondamentale, d'autant de tierces consécutives que nécessaire pour +atteindre le nombre spécifié. N'oubliez pas que la septième ajoutée à +un accord est minorée par défaut. Lorsque le dernier degré ne +correspond pas à une tierce -- la sixte par exemple -- les tierces +seront empilées jusqu'à celle directement inférieure au degré mentionné, +qui sera alors ajouté pour conclure l'accord. L'étendue maximale +autorisée est la treizième@tie{}; toute étendue plus élevée sera +interprétée comme un accord de treizième. + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1:2 c:3 c:4 c:5 + c1:6 c:7 c:8 c:9 + c1:10 c:11 c:12 c:13 + c1:14 +} @end lilypond -On peut augmenter ou diminuer certains intervalles au moyen des -signes @code{-} ou @code{+}@tie{}: +@noindent +Notez bien que @code{c:5} et @code{c} produisent tous deux une triade de +do majeur. + +Dans la mesure où un accord de treizième majeure ne sonne pas très bien +avec la onzième, la onzième est automatiquement enlevée, sauf à l'avoir +explicitement spécifiée. + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1:13 c:13.11 c:m13 +} +@end lilypond + +@cindex additions à un accord +@cindex accord, additions + +On peut enrichir l'accord par des notes ajoutées, que l'on indique après +le chiffrage principal et que l'on sépare par des points, sans oublier +que si l'on y ajoute une septième, celle-ci sera minorée et non majeure. @lilypond[quote,verbatim] -\chordmode { c:7+ c:5+.3- c:3-.5-.7- } +\chordmode { + c1:5.6 c:3.7.8 c:3.6.13 +} @end lilypond -On peut aussi enlever certaines notes de l'accord, en les spécifiant -après un signe @code{^} -- les notes ajoutées doivent être indiquées -@emph{avant} les notes à enlever. +Les notes ajoutées peuvent monter aussi haut que de besoin. @lilypond[quote,verbatim] -\chordmode { c^3 c:7^5 c:9^3.5 } +\chordmode { + c4:5.15 c:5.20 c:5.25 c:5.30 +} @end lilypond -Voici les différents chiffrages disponibles, en plus des nombres que -nous venons de voir@tie{}: +@cindex accord, altération d'un degré -@table @code -@item m -Accord mineur. Ce chiffrage minorise la tierce, et la septième s'il y -en a une. +On peut augmenter ou diminuer certains intervalles au moyen des +signes @code{-} ou @code{+} au degré considéré. L'altération de l'un +des degrés automatiquement inclus dans la structure de base d'un accord +s'effectue de la même manière. -@item dim -Accord diminué. Ce chiffrage minorise la tierce, diminue la quinte et -la septième s'il y en a. +@lilypond[quote,verbatim] +\chordmode { + c1:7+ c:5+.3- c:3-.5-.7- +} +@end lilypond -@item aug -Accord augmenté. Ce chiffrage augmente la quinte. +@cindex accord, suppression d'un degré -@item maj -Accord de septième majeure. Ce chiffrage majorise la septième s'il y -en a une (dans le cas d'un accord parfait, ce chiffrage est facultatif). +@funindex ^ -@item sus -Accord de suspension. Ce chiffrage supprime la tierce, et y ajoute, -suivant que vous spécifiez @code{2} ou @code{4}, la seconde ou la -quarte. -@end table +Après avoir ajouté des notes à un accord, on peut aussi en enlever +certaines, en les spécifiant derrière un signe @code{^} -- les séparer +par un point lorsqu'il y en a plus d'une. -Il est bien sûr possible de mélanger ces chiffrages avec des notes -ajoutées. @lilypond[quote,verbatim] - \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } +\chordmode { + c1^3 c:7^5 c:9^3 c:9^3.5 c:13.11^3.7 +} @end lilypond -@cindex chiffrages des accords -@funindex aug -@funindex dim -@funindex maj @funindex sus -@funindex m -Dans la mesure où un accord de treizième majeure ne sonne pas très bien -avec la onzième, la onzième est enlevée automatiquement, à moins que -vous ne le spécifiez explicitement. +L'ajout du modificateur @code{sus} permet de créer un accord de +suspension. Ceci aura pour effet de supprimer la tierce et y ajouter, +suivant que vous spécifiez @code{2} ou @code{4}, la seconde ou la +quarte. @code{sus} est équivalent à @code{^3}@tie{}; @code{sus4} est +équivalent à @code{.4^3}. @lilypond[quote,ragged-right,verbatim] -\chordmode { c:13 c:13.11 c:m13 } +\chordmode { + c1:sus c:sus2 c:sus4 c:5.4^3 +} @end lilypond @funindex / +@cindex accord, inversion +@cindex accord, spécifier la basse +@cindex basse d'un accord Les accords peuvent être renversés ou combinés avec une note étrangère à -la basse, au moyen de @code{@var{accord}/}@var{note} +la basse, au moyen de @code{@var{accord}/}@var{hauteur}. + @lilypond[quote,ragged-right,verbatim] -\chordmode { c1 c/g c/f } +\chordmode { + c1 c/g c/f +} @end lilypond + @funindex /+ Si la note de basse précisée appartient à l'accord, la doublure supérieure sera supprimée. Pour l'éviter, utilisez la syntaxe -@code{/+}@var{note}. +@code{/+}@var{hauteur}. @lilypond[quote,ragged-right,verbatim] -\chordmode { c1 c/+g c/+f } +\chordmode { + c1 c/g c/+g +} @end lilypond -Le mode accords est semblable à @code{\lyricmode} ou autre, c'est-à-dire -que la plupart des commandes sont encore disponibles@tie{}; ainsi, -@code{r} ou @code{\skip} peuvent servir à insérer des silences ou des -silences invisibles. De plus, les propriétés des objets peuvent être -ajustées ou modifiées. +Une table étendue des modificateurs et de leur utilisation est à +l'annexe @ref{Modificateurs d'accord usuels}. -@knownissues +@seealso +Manuel de notation : +@ref{Modificateurs d'accord usuels}. + +Morceaux choisis : +@rlsrnamed{Chords,Accords}. +@knownissues Aucun nom de note ne peut être indiqué deux fois dans un accord. Ainsi, dans l'accord suivant, seule la quinte augmentée est prise en compte, -car elle est indiquée en dernier@tie{}: +parce qu'elle est indiquée en dernier@tie{}: -@cindex agrégats @lilypond[quote,ragged-right,verbatim] -\chordmode { c:5.5-.5+ } +\chordmode { c1:5.5-.5+ } @end lilypond -@node Extensions et altération d'accords -@unnumberedsubsubsec Extensions et altération d'accords -@translationof Extended and altered chords +Seul le deuxième renversement peut être obtenu par adjonction de la +basse. Le premier renversement requiert de changer la fondamentale de +l'accord. + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c'1: c':/g e:6-3-^5 e:m6-^5 +} +@end lilypond -@untranslated @node Gravure des accords @subsection Gravure des accords @translationof Displaying chords -@untranslated +Les accords peuvent se présenter aussi bien sous forme nominative que +comme un empilement de notes sur une portée. @menu * Impression des noms d'accord:: * Personnalisation des noms d'accord:: @end menu + @node Impression des noms d'accord @unnumberedsubsubsec Impression des noms d'accord @translationof Printing chord names @@ -239,164 +439,295 @@ car elle est indiquée en dernier@tie{}: @cindex chiffrages d'accords @cindex accords -Les chiffrages d'accords sont liés au contexte -@rinternals{ChordNames}. Les accords peuvent être saisis soit au -moyen de la notation indiquée ci-dessus, soit directement avec les -symboles @code{<} et @code{>}. +Les chiffrages d'accords sont liés au contexte @code{ChordNames}@tie{}: -@lilypond[quote,verbatim,ragged-right] -harmonies = { - \chordmode {a1 b c} +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + \chordmode { + c2 f4. g8 + } } +@end lilypond + +Les accords peuvent être saisis soit en tant que hauteurs simultanées, +soit au moyen du mode accords. Le chiffrage affiché sera identique quel +que soit le mode de saisie, à moins qu'il n'y ait inversion ou ajout de +la basse. + +@lilypond[verbatim,quote,relative=1] << - \new ChordNames \harmonies - \new Staff \harmonies + \new ChordNames { + 2 + 1 + \chordmode { + c2 f:sus4 c1:/f + } + } + { + 2 + 1 + \chordmode { + c2 f:sus4 c1:/f + } + } >> @end lilypond -Vous pouvez faire ressortir les chiffrages d'accords en assignant la -valeur vrai à la propriété @code{chordChanges} dans le contexte -@rinternals{ChordNames}. De cette façon, les chiffrages ne sont -imprimés qu'aux changements d'accord ou en début de ligne. +@cindex no chord, symbole +@cindex N.C., symbole +@cindex accords, No Chord -@lilypond[quote,verbatim,ragged-right] -harmonies = \chordmode { - c1:m c:m \break c:m c:m d -} +L'apparition de silences dans un contexte @code{ChordNames} déclenchera +l'impression d'un @emph{markup} @code{noChordSymbol}. + +@lilypond[verbatim, quote, relative=1] << - \new ChordNames { - \set chordChanges = ##t - \harmonies } - \new Staff \transpose c c' \harmonies + \new ChordNames \chordmode { + c1 + r1 + g1 + c1 + } + \chordmode { + c1 + r1 + g1 + c1 + } >> @end lilypond -Les exemples précédents montrent des chiffrages placés au-dessus de la -portée, mais ce n'est pas obligatoire@tie{}: les accords peuvent également -être imprimés séparément -- auquel cas vous aurez peut-être besoin -d'ajouter le @rinternals{Volta_engraver} et le -@rinternals{Bar_engraver} afin que les éventuelles barres de reprises -s'affichent correctement. +@funindex \chords -@lilypond[ragged-right,verbatim] -\new ChordNames \with { - \override BarLine #'bar-extent = #'(-2 . 2) - \consists Bar_engraver - \consists "Volta_engraver" -} -\chordmode { \repeat volta 2 { - f1:maj7 f:7 bes:7 - c:maj7 -} \alternative { - es e +@code{\chords @{ ... @}} est un raccourci de +@code{\new ChordNames @{ \chordmode @{ ... @} @}}. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c2 f4.:m g8:maj7 } +@end lilypond + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + \chordmode { + c2 f4.:m g8:maj7 + } } @end lilypond -Le modèle par défaut des chiffrages d'accord est celui de Klaus Ignatzek -pour le jazz (cf. @ressay{Références bibliographiques}). Il s'agit -d'une notation anglo-saxonne@tie{}; cependant vous pouvez indiquer vos -chiffrages en notation française au moyen de la commande -@code{\frenchChords} (voir plus bas). +@snippets -Il est possible de créer votre propre modèle de chiffrages en -réglant les propriétés suivantes@tie{}: +@c Keep index entries with following snippet +@cindex accords, suppression des répétitions +@funindex chordChanges -@table @code -@funindex chordNameExceptions -@item chordNameExceptions -C'est la liste des accords mis en forme de manière particulière. - -Cette liste d'exceptions s'indique de la façon suivante. -On commence par créer une expression musicale telle que -@example -@code{chExceptionMusic} = @{ 1 \markup @{ \super "7" "wahh" @} @} -@end example -puis on la transforme en liste d'exceptions au moyen du code -@example -(sequential-music-to-chord-exceptions chExceptionMusic #t) -@end example -Pour qu'elles soient effectives, on ajoute ces exceptions aux exceptions -par défaut définies dans @file{ly/chord-modifier-init.ly}@tie{}: -@example -(append - (sequential-music-to-chord-exceptions chExceptionMusic #t) - ignatzekExceptions) -@end example +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{showing-chords-at-changes.ly} -@cindex exceptions, chiffrage d'accords -@cindex chiffrage d'accords, exceptions -@cindex accords chiffrés, exceptions -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{chord-name-exceptions.ly} +@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +@c {adding-bar-lines-to-chordnames-context.ly} -@funindex majorSevenSymbol -@item majorSevenSymbol -Cette propriété définit l'objet employé pour indiquer une septième -majeure. Les options prédéfinies sont @code{whiteTriangleMarkup} -(triangle blanc) et @code{blackTriangleMarkup} (triangle noir). +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{simple-lead-sheet.ly} -@funindex chordNameSeparator -@item chordNameSeparator -Les différents termes d'un chiffrage jazz (par exemple les notes de -l'accord et la basse) sont habituellement séparés par une barre oblique. -La propriété @code{chordNameSeparator} permet d'indiquer un autre -séparateur, par exemple -@lilypond[quote,ragged-right,verbatim] -\new ChordNames \chordmode { - c:7sus4 - \set chordNameSeparator - = \markup { \typewriter "|" } - c:7sus4 +@seealso +Glossaire musicologique : +@rglosnamed{chord,Accord}. + +Manuel de notation : +@ref{Saisie de musique en parallèle}. + +Morceaux choisis : +@rlsrnamed{Chords,Accords}. + +Référence des propriétés internes : +@rinternals{ChordNames}, +@rinternals{ChordName}, +@rinternals{Chord_name_engraver}, +@rinternals{Volta_engraver}, +@rinternals{Bar_engraver}. + +@knownissues +Un accord contenant un renversement ou dont la basse est changée ne sera +pas chiffré correctement s'il est saisi en tant que musique simultanée. + + +@node Personnalisation des noms d'accord +@unnumberedsubsubsec Personnalisation des noms d'accord +@translationof Customizing chord names + +@cindex accord, personnalisation du chiffrage +@cindex chiffrage d'accords, personnalisation + +Il existe plus d'un système de chiffrage d'accords. Le nom des accords +varie selon les traditions musicales, et plusieurs symboles représentent +un même accord. LilyPond vous permet de créer votre propre nomenclature +d'accords, tant au niveau des noms que des symboles qui les +représenteront. + +@cindex jazz, accords +@cindex accords jazz + +Le modèle par défaut des chiffrages d'accord est celui de Klaus Ignatzek +pour le jazz (cf. @ressay{Références bibliographiques}).Il est possible +de créer votre propre modèle de chiffrages à l'aide des différentes +propriétés mentionnées ci-dessous. LilyPond dispose d'un système +alternatif de chiffrage jazz qui a été élaboré grâce à ces même +propriétés. Les deux notations, Ignatzek et alternative, sont illustrés +à l'annexe @ref{Table des noms d'accord}. + +@c TODO -- Change this so we don't have a non-verbatim example. +@c Make short example in docs, then move longer example to +@c appendix, where the length of the snippet won't matter. + +En plus des différents systèmes de nommage, le nom de la fondamentale +varie selon la langue utilisée. Les instructions @code{\germanChords}, +@code{\semiGermanChords}, @code{\italianChords} et @code{\frenchChords} +permettent de définir la langue, comme vous pouvez le constater@tie{}: + +@lilypondfile[ragged-right] +{chord-names-languages.ly} + +@funindex chordNameLowercaseMinor +Nombre de carnets de chant allemands indiquent un accord mineur par +l'emploi de caractères en minuscule, sans le suffixe @code{m}. Cette +fonctionnalité est gérée par la propriété +@code{chordNameLowercaseMinor}@tie{}: + +@lilypond[verbatim,quote,ragged-right] +\chords { + \set chordNameLowercaseMinor = ##t + c2 d:m e:m f } @end lilypond +Lorsqu'aucun des systèmes prédéfinis ne vous permet de représenter +l'accord voulu, les propriétés suivantes vous permettront de le +construire. + +@table @code + @funindex chordRootNamer + @item chordRootNamer Dans les chiffrages d'accord jazz, la note fondamentale de chaque accord est exprimée par une lettre capitale, parfois suivie d'une altération, correspondant à la notation anglo-saxonne de la musique. Cette propriété a pour valeur la fonction qui transforme la hauteur de la note -foncdamentale en nom de note@tie{}; c'est donc en assignant une nouvelle +fondamentale en nom de note@tie{}; c'est donc en assignant une nouvelle fonction à cette propriété que l'on peut produire des noms de note spéciaux, adaptés par exemple aux systèmes de notation d'autres pays. +@funindex majorSevenSymbol + +@item majorSevenSymbol +Cette propriété définit l'objet ajouté au @code{chordRootNamer} pour +indiquer une septième majeure. Les options prédéfinies sont +@code{whiteTriangleMarkup} (triangle blanc) et +@code{blackTriangleMarkup} (triangle noir). + +@funindex additionalPitchPrefix + +@item additionalPitchPrefix +Lorsqu'un chiffrage contient des notes ajoutées, vous pouvez le préfixer +d'une annotation. LilyPond n'en ajoute pas par défaut, dans le but de +ne pas trop surcharger la partition@tie{}; vous pouvez cependant les +faire apparaître si elles sont visuellement efficaces. + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + % add9 + \set additionalPitchPrefix = #"add" + % add9 +} +@end lilypond + @funindex chordNoteNamer + @item chordNoteNamer Lorsqu'un chiffrage mentionne une note ajoutée (par exemple la basse), les règles utilisées sont par défaut celles définies par la propriété -@code{chordRootNamer} ci-dessus. Cependant, la propriété @code{chordNoteNamer} -permet de régler cet élément indépendamment, par exemple pour imprimer la basse -en caractères minuscules. +@code{chordRootNamer} ci-dessus. Cependant, la propriété +@code{chordNoteNamer} permet de régler cet élément indépendamment, par +exemple pour imprimer la basse en caractères minuscules. -@funindex chordPrefixSpacer -@item chordPrefixSpacer -Le petit @code{m} qui indique un accord mineur est, dans la notation -anglo-saxonne, attaché à la lettre de l'accord. Cependant il est -possible d'ajouter un espace en assignant la valeur vrai à la propriété -@code{chordPrefixSpacer}. Cet espace sera omis si une altération est -présente. +@funindex chordNameSeparator -@end table +@item chordNameSeparator +Les différents termes d'un chiffrage jazz (par exemple les notes de +l'accord et la basse) sont habituellement légèrement espacés. La +propriété @code{chordNameSeparator} permet d'indiquer un autre +séparateur. Le séparateur entre un chiffrage et sa basse est géré par +la propriété @code{slashChordSeparator}. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set chordNameSeparator = \markup { "/" } + \break + c4:7.9- c:7.9-/g +} +@end lilypond -Les propriétés ci-dessus font l'objet de commandes prédéfinies -adaptées aux notations de différents pays@tie{}: @code{\germanChords} et -@code{\semiGermanChords} pour la notation allemande, -@code{\italianChords} pour la notation italienne et enfin -@code{\frenchChords} pour la notation française. +@funindex slashChordSeparator + +@item slashChordSeparator +La note basse d'un accord n'est pas forcément la fondamentale. L'accord +est alors @qq{renversé} -- certains diront @qq{barré} parce que son +chiffrage est habituellement flanqué d'une barre oblique entre l'accord +de base et sa basse. La propriété @code{slashChordSeparator} permet de +modifier ce séparateur -- par défaut la barre de fraction. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set slashChordSeparator = \markup { " over " } + \break + c4:7.9- c:7.9-/g +} +@end lilypond + +@funindex chordNameExceptions + +@item chordNameExceptions +Cette propriété recense, sous forme de paire, les accords mis en forme +de manière particulière. Le premier élément de chacune des paires +répertorie les différentes hauteurs qui constituent l'accord. Le second +élément est un @emph{markup} qui sera ajouté au @code{chordRootNamer} +lors de l'impression du chiffrage. + +@funindex minorChordModifier + +@item minorChordModifier +Les accords mineurs sont habituellement identifiés par un @code{m} après +leur fondamentale. Certaines nomenclatures ont cependant adopté un +autre suffixe, comme le signe moins. + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:min f:min7 + \set minorChordModifier = \markup { "-" } + \break + c4:min f:min7 +} +@end lilypond -@lilypondfile[ragged-right]{chord-names-languages.ly} +@funindex chordPrefixSpacer -@cindex Banter -@cindex jazz, chiffrages d'accords -@cindex accords jazz, chiffrage -LilyPond intègre également deux autres modèles de chiffrages@tie{}: une -notation Jazz alternative, et un modèle systématique appelé système -Banter. Pour la mise en œuvre de ces modèles, voir -@ref{Table des noms d'accord}. +@item chordPrefixSpacer +Le modificateur pour accord mineur, géré par la propriété +@code{minorChordModifier}, est en principe accolé la fondamentale. Vous +pouvez cependant l'espacer de la fondamentale à l'aide de la propriété +@code{chordPrefixSpacer}. Notez bien que cet espacement sera réduit à +néant si la fondamentale est altérée. +@end table @predefined +@funindex symboles de septième majeure +@code{\whiteTriangleMarkup}, +@code{\blackTriangleMarkup}, @funindex \germanChords @code{\germanChords}, @funindex \semiGermanChords @@ -408,34 +739,70 @@ Banter. Pour la mise en œuvre de ces modèles, voir @endpredefined +@snippets + +@cindex exceptions, chiffrage d'accords +@cindex chiffrage d'accords, exceptions +@cindex accords chiffrés, exceptions +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chord-name-exceptions.ly} + +@c TODO - tweak snippet to use \blackTriangleMarkup as well +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chord-name-major7.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-bar-lines-to-chordnames-context.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{volta-below-chords.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-chord-separator.ly} + @seealso -Morceaux choisis : -@rlsrnamed{Chords,Accords}. +Manuel de notation : +@ref{Table des noms d'accord}, +@ref{Modificateurs d'accord usuels}. + +Essai sur la gravure musicale automatisée : +@ressay{Références bibliographiques}. -Fichiers internes : +Fichiers d'initialisation : @file{scm/chords-ignatzek.scm}, -@file{scm/chord-entry.scm}. +@file{scm/chord-entry.scm}, +@file{ly/chord-modifier-init.ly}. +Morceaux choisis : +@rlsrnamed{Chords,Accords}. @knownissues - Les chiffrages d'accords ne sont déterminés que par la succession des hauteurs de notes. En d'autres termes, les accords inversés ne sont pas reconnus, ni les notes ajoutées à la basse. C'est pourquoi les accords saisis au moyen de la syntaxe @code{<@dots{}>} peuvent produire des chiffrages étranges. -@node Personnalisation des noms d'accord -@unnumberedsubsubsec Personnalisation des noms d'accord -@translationof Customizing chord names +@lilypond[quote,ragged-right,verbatim] +myChords = \relative c' { + \chordmode { c1 c/g c/f } + 1 +} +<< + \new ChordNames { \myChords } + \new Staff { \myChords } +>> +@end lilypond -@untranslated @node Basse chiffrée @subsection Basse chiffrée @translationof Figured bass -@untranslated +@c Line width hack because of instrument names +@lilypondfile[quote,staffsize=18,line-width=14.5\cm]{figured-bass-headword.ly} + +LilyPond permet de générer des parties de continuo. @menu * Introduction à la basse chiffrée:: @@ -443,7 +810,7 @@ chiffrages étranges. * Gravure de la basse chiffrée:: @end menu -@c This material comes from 'Figured bass', needs redistribution by translator --FV + @node Introduction à la basse chiffrée @unnumberedsubsubsec Introduction à la basse chiffrée @translationof Introduction to figured bass @@ -472,194 +839,382 @@ LilyPond gère la basse chiffrée. @lilypond[quote,ragged-right,verbatim] << \new Voice { \clef bass dis4 c d ais g fis} - \new FiguredBass \figuremode { - < 6 >4 < 7\+ >8 < 6+ [_!] > - < 6 >4 <6 5 [3+] > - < _ >4 < 6 5/>4 + \new FiguredBass { + \figuremode { + < 6 >4 < 7\+ >8 < 6+ [_!] > + < 6 >4 <6 5 [3+] > + < _ >4 < 6 5/>4 + } } >> @end lilypond La gestion de la basse chiffrée se décompose en deux parties. Dans un premier temps, le mode @code{\figuremode} permet de saisir les accords -sous forme chiffrée. Le contexte @rinternals{FiguredBass} s'occupera -ensuite de gérer les objets @rinternals{BassFigure}. +sous forme chiffrée. Le contexte @code{FiguredBass} s'occupera ensuite +de gérer les objets @code{BassFigure}. La basse chiffrée pourra être +attachée à un contexte @code{Staff}. + +L'expression @code{\figures@{ ... @}} constitue une raccourci à +@code{\new FiguredBass @{ \figuremode @{ ... @} @}}. + +Bien que la gestion de la basse chiffrée ressemble beaucoup à celle +des accords, elle est beaucoup plus simpliste. Le mode +@code{\figuremode} ne fait que stocker des chiffres que le contexte +@code{FiguredBass} se chargera d'imprimer tels quels. En aucune manière +ils ne sont transformés en son, et ils ne sont pas rendus dans un +fichier MIDI. + +@ignore +En interne, ce code produit des étiquettes de texte que vous +pouvez formater à votre convenance grâce aux propriétés des +étiquettes. Par exemple, l'espacement vertical des chiffrages est +déterminé par la propriété @code{baseline-skip}. +@end ignore + + +@seealso +Glossaire musicologique : +@rglosnamed{figured bass, basse chifrée}. + +Morceaux choisis : +@rlsrnamed{Chords,Accords}. + + +@node Saisie de la basse chiffrée +@unnumberedsubsubsec Saisie de la basse chiffrée +@translationof Entering figured bass + +@code{\figuremode} permet de faire la relation entre ce qui est saisi et +le mode de chiffrage. De plus amples informations quant aux différents +modes sont regroupées à la rubrique @ref{Modes de saisie}. En mode de saisie, un chiffrage est délimité par @code{<} et @code{>}. La durée est indiquée après le @code{>}@tie{}: -@example -<4 6> -@end example -@lilypond[quote,ragged-right] -\new FiguredBass -\figuremode { <4 6> } +@lilypond[verbatim,quote,ragged-right] +\new FiguredBass { + \figuremode { + <6 4>2 + } +} @end lilypond -Les altérations s'obtiennent en ajoutant aux chiffres les caractères -@code{-}, @code{!} ou @code{+}. Un signe plus s'obtient grâce à -@code{\+}, et une quinte ou septième diminuée par @code{5/} ou -@code{7/} respectivement. +Une altération -- y compris un bécarre -- peut s'attacher à un +chiffre@tie{}: -@example -<4- 6+ 7!> <5++> <3--> <7/> r <6\+ 5/> -@end example -@lilypond[quote,ragged-right] -\figures { <4- 6+ 7!> <5++> <3--> <7/> r <6\+ 5/> } +@lilypond[verbatim,quote,ragged-right] +\figures { + <7! 6+ 4-> <5++> <3--> +} @end lilypond -Le caractère @code{_} insère un espace, et l'on peut imprimer des -crochets avec @code{[} et @code{]}. Vous pouvez aussi ajouter des -chaînes de caractères ou des étiquettes --- cf. @ref{Text markup commands}. +Vous pouvez stipuler un intervalle augmenté ou diminué@tie{}: -@example -<[4 6] 8 [_! 12] > <5 \markup @{ \number 6 \super (1) @} > -@end example -@lilypond[quote,ragged-right] -\new FiguredBass -\figuremode { < [4 6] 8 [_! 12] > < 5 \markup{ \tiny \number 6 \super (1)} > } +@lilypond[verbatim,quote,ragged-right] +\figures { + <6\+ 5/> <7/> +} @end lilypond +Vous pouvez barrer un chiffre d'une oblique inversée, typiquement pour +une @qq{petite sixte}@tie{}: + +@lilypond[verbatim,quote,ragged-right] +\figures { + <6> <6\\> +} +@end lilypond + +Vous pouvez insérer un espace ou ajouter des crochets@tie{}: + +@lilypond[verbatim,quote,ragged-right] +\figures { + <[12 _!] 8 [6 4]> +} +@end lilypond + +Vous pouvez aussi ajouter des chaînes de caractères ou des étiquettes -- +cf. @ref{Text markup commands}. + +@lilypond[verbatim,quote,ragged-right] +\figures { + <\markup { \tiny \number 6 \super (1) } 5> +} +@end lilypond + +@c NOTE: We need to include notes any time we use extenders to +@c avoid extraneous staff creation due to Staff.use... in +@c \bassFigureExtendersOn + Lorsque des chiffrages se répètent, vous pouvez utiliser des lignes de prolongation. -@lilypond[verbatim,relative=1] +@lilypond[verbatim,quote,ragged-right] << - \new Staff { + { \clef bass - c4 c c + e4 d c b, + e4 d c b, } \figures { - \set useBassFigureExtenders = ##t - <4 6> <3 6> <3 7> + \bassFigureExtendersOn + <6 4>4 <6 3> <7 3> <7 3> + \bassFigureExtendersOff + <6 4>4 <6 3> <7 3> <7 3> } >> @end lilypond @noindent En pareil cas, la ligne de prolongation masquera toujours le chiffre -qu'elle rappelle dans le chiffrage suivant. +qu'elle rappelle dans le chiffrage suivant à moins d'avoir été +explicitement interrompue. -Le contexte @code{FiguredBass} ne tient aucun compte de la ligne de -basse. Par conséquent, il vous faudra peut être insérer des chiffrages -supplémentaires pour imprimer les prolongations, ou utiliser des -@code{\!} pour les éviter, comme dans l'exemple suivant@tie{}: - -@lilypond[relative=1] +@lilypond[verbatim,quote,ragged-right] << - \new Voice \figures { - \set useBassFigureExtenders = ##t - <6 4->4. <6 4->16. <6 4->32 <5>8. r16 <6>8 <6\! 5-> + \bassFigureExtendersOn + <6 4>4 <6 4> <6\! 4\!> <6 4> } { \clef bass - f16. g32 f16. g32 f16. g32 f16. g32 f8. es16 d8 es + d4 d c c } >> @end lilypond -Lorsque vous utilisez des lignes de prolongation, les chiffres communs -seront verticalement alignés. Pour l'éviter, insérez un silence avec -@code{r} afin de réinitialiser l'alignement. Par exemple, saisissez - -@example - <4 6>8 r8 -@end example +Voici, de manière synthétique, les différents modificateurs +disponibles@tie{}: + +@multitable @columnfractions .1 .5 .4 + +@item +@b{Modificateur} +@tab +@b{Utilisation} +@tab +@b{Exemple} + +@item ++, -, ! +@tab +Altérations +@tab +@lilypond[line-width=4\cm] +\figures { + <7! 6+ 4-> <5++> <3--> +} +@end lilypond -@noindent -au lieu de -@example - <4 6>4 -@end example +@item +\+, / +@tab +Augmentation ou diminution d'un degré +@tab +@lilypond[line-width=4\cm] +\figures { + <6\+ 5/> <7/> +} +@end lilypond -On peut choisir d'impriemr les altérations et signes plus aussi bien -avant qu'après les chiffres, en réglant les propriétés -@code{figuredBassAlterationDirection} et -@code{figuredBassPlusDirection}. +@item +\\ +@tab +Petite sixte +@tab +@lilypond[line-width=4\cm] +\figures { + <6\\> +} +@end lilypond -@lilypond +@item +\! +@tab +Terminaison d'une prolongation +@tab +@lilypond[line-width=4\cm] +<< \figures { - <6\+> <5+> <6 4-> r - \set figuredBassAlterationDirection = #1 - <6\+> <5+> <6 4-> r - \set figuredBassPlusDirection = #1 - <6\+> <5+> <6 4-> r - \set figuredBassAlterationDirection = #-1 - <6\+> <5+> <6 4-> r + \bassFigureExtendersOn + <6 4> <6 4> <6\! 4\!> <6 4> } + { + \clef bass + d d c c + } +>> @end lilypond -Bien que la gestion de la basse chiffrée ressemble beaucoup à celle -des accords, elle est beaucoup plus simpliste. Le mode -@code{\figuremode} ne fait que stocker des chiffres que le contexte -@rinternals{FiguredBass} se chargera d'imprimer tels quels. En -aucune manière ils ne sont transformés en son, et ils ne sont pas -rendus dans un fichier MIDI. +@end multitable -En interne, ce code produit des étiquettes de texte que vous -pouvez formater à votre convenance grâce aux propriétés des -étiquettes. Par exemple, l'espacement vertical des chiffrages est -déterminé par la propriété @code{baseline-skip}. +@predefined +@cindex basse chiffrée, lignes d'extension +@code{\bassFigureExtendersOn}, +@code{\bassFigureExtendersOff}. +@endpredefined + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-positions-of-figured-bass-alterations.ly} + +@seealso +Morceaux choisis : +@rlsrnamed{Chords,Accords}. + +Référence des propriétés internes : +@rinternals{BassFigure}, +@rinternals{BassFigureAlignment}, +@rinternals{BassFigureLine}, +@rinternals{BassFigureBracket}, +@rinternals{BassFigureContinuation}, +@rinternals{FiguredBass}. -On peut également ajouter une basse chiffrée directement à un contexte -@code{Staff}. L'alignement vertical est alors automatiquement ajusté. -@lilypond[ragged-right,quote] +@node Gravure de la basse chiffrée +@unnumberedsubsubsec Gravure de la basse chiffrée +@translationof Displaying figured bass + +Une ligne de basse chiffrée s'imprime soit dans un contexte +@code{FiguredBass}, soit dans la plupart des autres contextes du niveau +de la portée. + +Le contexte @code{FiguredBass} ne tient aucun compte des notes qui +apparaissent sur la portée. + +@lilypond[verbatim,ragged-right,quote] << - \new Staff = someUniqueName \relative c'' { c4 c'8 r8 c,4 c' } - - %% send to existing Staff. - \context Staff = someUniqueName - \figuremode { - <4>4 <6 10>8 s8 - - \set Staff.useBassFigureExtenders = ##t - <4 6>4 <4 6> + \new FiguredBass { + \figuremode { + <4>4 <10 6>8 s8 + <6 4>4 <6 4> + } } >> @end lilypond -@commonprop +@noindent +Il est impératif, dans cet exemple, d'instancier explicitement le +contexte @code{FiguredBass} pour éviter l'apparition d'une portée +supplémentaire vide. -Par défaut, les chiffres sont imprimés au-dessus de la portée. Pour les -imprimer dessous, ajoutez +On peut ajouter une basse chiffrée directement à un contexte +@code{Staff}. L'alignement vertical est alors automatiquement ajusté. -@example -\override Staff.BassFigureAlignmentPositioning #'direction = #DOWN -@end example +@lilypond[verbatim,ragged-right,quote] +<< + \new Staff = myStaff + \figuremode { + <4>4 <10 6>8 s8 + <6 4>4 <6 4> + } + %% Put notes on same Staff as figures + \context Staff = myStaff + { + \clef bass + c4 c'8 r8 c4 c' + } +>> +@end lilypond -@knownissues +La basse chiffrée attachée à un contexte @code{Staff} peut se +positionner au-dessus ou en dessous de la portée. -Si vous positionnez la basse chiffrée au dessus de la portée en ayant -recours aux lignes d'extension et @code{implicitBassFigures}, les lignes -peuvent se mélanger. Préserver l'ordre des prolongateurs peut s'avérer -impossible lorsque plusieurs chiffrages qui se chevauchent en possèdent. -Ce problème peut être contourné en jouant sur l'empilement, avec la -propriété @code{stacking-dir} de l'objet @code{BassFigureAlignment}. +@lilypond[verbatim,ragged-right,quote] +<< + \new Staff = myStaff + \figuremode { + <4>4 <10 6>8 s8 + \bassFigureStaffAlignmentDown + <6 4>4 <6 4> + } + %% Put notes on same Staff as figures + \context Staff = myStaff + { + \clef bass + c4 c'8 r8 c4 c' + } +>> +@end lilypond +@predefined +@cindex basse chiffrée, alignement +@code{\bassFigureStaffAlignmentDown}, +@code{\bassFigureStaffAlignmentUp}, +@code{\bassFigureStaffAlignmentNeutral}. +@endpredefined @seealso -Référence des pripriétés internes : les objets +Morceaux choisis : +@rlsrnamed{Chords,Accords}. + +Référence des propriétés internes : @rinternals{BassFigure}, @rinternals{BassFigureAlignment}, @rinternals{BassFigureLine}, -@rinternals{BassFigureBracket} et -@rinternals{BassFigureContinuation}, ainsi que le contexte +@rinternals{BassFigureBracket}, +@rinternals{BassFigureContinuation}, @rinternals{FiguredBass}. +@knownissues +Les lignes de prolongation seront correctes dès lors que notes et +chiffrages adoptent des durées identiques. -@node Saisie de la basse chiffrée -@unnumberedsubsubsec Saisie de la basse chiffrée -@translationof Entering figured bass +@lilypond[verbatim,ragged-right,quote] +<< + { + \clef bass + \repeat unfold 4 { f16. g32 } f8. es16 d8 es + } + \figures { + \bassFigureExtendersOn + % The extenders are correct here, with the same rhythm as the bass + \repeat unfold 4 { <6 4->16. <6 4->32 } + <5>8. r16 <6>8 <6\! 5-> + } +>> +<< + { + \clef bass + \repeat unfold 4 { f16. g32 } f8. es16 d8 es + } + \figures { + \bassFigureExtendersOn + % The extenders are incorrect here, even though the timing is the same + <6 4->4 <6 4->4 + <5>8. r16 <6>8 <6\! 5-> + } +>> +@end lilypond -@untranslated +Préserver l'ordre des prolongateurs peut s'avérer impossible lorsque +plusieurs chiffrages qui se chevauchent en possèdent. -@node Gravure de la basse chiffrée -@unnumberedsubsubsec Gravure de la basse chiffrée -@translationof Displaying figured bass +@lilypond[verbatim,ragged-right,quote,relative=1] +<< + { fis4 g g, e' } + \figures { + \bassFigureExtendersOn + <6 5>4 <5\! 4> < 5 _!> <6> + } +>> +@end lilypond + +Ce problème peut être contourné en activant les prolongateurs derrière +le chiffrage qui l'entame, puis en les désactivant derrière leur fin. -@untranslated +@lilypond[verbatim,ragged-right,quote,relative=1] +<< + { fis4 g g, e' } + \figures { + <6 5>4 <5 4> + \bassFigureExtendersOn + < 5 _!>4 <6> + \bassFigureExtendersOff + } +>> +@end lilypond diff --git a/Documentation/fr/notation/contemporary.itely b/Documentation/fr/notation/contemporary.itely new file mode 100644 index 0000000000..f26f784ad3 --- /dev/null +++ b/Documentation/fr/notation/contemporary.itely @@ -0,0 +1,249 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- +@ignore + Translation of GIT committish: 7a046582ce0730883f973c3ae56f2abe6c3262dc + + 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.16.0" + +@c Translators: Jean-Charles Malahieude +@c Translation checkers: + + +@node Musique contemporaine +@section Musique contemporaine +@translationof Contemporary music + +L'aube du XXe siècle a vu bourgeonner nombre de techniques et de styles +de composition. Qu'il s'agisse des nouveaux développements autour de +l'harmonie et du rythme, de l'expansion du spectre des hauteurs et de +l'évolution de nombreuses techniques instrumentales, tous ces +différents phénomènes ont participé à l'évolution de la notation +musicale. Les paragraphes qui suivent sont là pour vous proposer des +références et informations quant à ces nouvelles techniques de notation. + +@menu +* Hauteur et harmonie en musique contemporaine:: +* Approches du rythme en musique contemporaine:: +* Notation graphique:: +* Techniques de partition contemporaine:: +* Nouvelles techniques instrumentales:: +* Informations complémentaires et exemples pertinents:: +@end menu + + +@node Hauteur et harmonie en musique contemporaine +@subsection Hauteur et harmonie en musique contemporaine +@translationof Pitch and harmony in contemporary music + +Intéressons-nous tout d'abord à ce qui relève de la notation des +hauteurs et à l'harmonie en musique contemporaine. + +@menu +* Généralités en matière de hauteur et d'harmonie:: +* Notation microtonale:: +* Armures contemporaines et harmonie:: +@end menu + + +@node Généralités en matière de hauteur et d'harmonie +@unnumberedsubsubsec Généralités en matière de hauteur et d'harmonie +@translationof References for pitch and harmony in contemporary music + +@itemize +@item La notation habituelle des quarts de tons est abordée à la +rubrique @ref{Nom des notes dans d'autres langues}. + +@item Les tonalités inhabituelles sont abordées à la rubrique +@ref{Armure}. + +@item Les pratiques contemporaines en matière d'altération sont +abordées à la rubrique @ref{Altérations accidentelles automatiques}. + +@end itemize + + +@node Notation microtonale +@unnumberedsubsubsec Notation microtonale +@translationof Microtonal notation + +@ignore + Discussion of microtones other than quarter-tones, + alternative notations (arrows, slash-flats), etc. +@end ignore + + +@node Armures contemporaines et harmonie +@unnumberedsubsubsec Armures contemporaines et harmonie +@translationof Contemporary key signatures and harmony + +@ignore + Discussion of contemporary key signatures: + non-standard, polytonality, etc. +@end ignore + + +@node Approches du rythme en musique contemporaine +@subsection Approches du rythme en musique contemporaine +@translationof Contemporary approaches to rhythm + +Abordons à présent certaines particularités de la notation du rythme en +musique contemporaine. + +@menu +* Généralités sur le rythme en musique contemporaine:: +* Nolets et musique contemporaine:: +* Métriques contemporaines:: +* Notation polymétrique étendue:: +* Ligatures et musique contemporaine:: +* Barres de mesure et musique contemporaine:: +@end menu + + +@node Généralités sur le rythme en musique contemporaine +@unnumberedsubsubsec Généralités sur le rythme en musique contemporaine +@translationof References for contemporary approaches to rhythm + +@itemize +@item Les métrique composites sont abordées à la rubrique +@ref{Métrique}. + +@item Les bases de la polymétrie sont abordées à la rubrique +@ref{Notation polymétrique}. + +@item Certaines particularités en matière de ligature sont abordées à la +rubrique @ref{Liens de croches en soufflet}. + +@item Les lignes de mensuration (barres de mesures uniquement entre les +portées) sont abordées à la rubrique @ref{Regroupement de portées}. + +@end itemize + + +@node Nolets et musique contemporaine +@unnumberedsubsubsec Nolets et musique contemporaine +@translationof Tuplets in contemporary music + +@ignore + Extended discussion of modern tuplets, including + non-standard ratios, nested tuplets and customising + the appearance of tuplets (ratios, note values etc.) + Also how to provide an ossia RhythmicStaff to help + players break down a complicated tuplet. +@end ignore + + +@node Métriques contemporaines +@unnumberedsubsubsec Métriques contemporaines +@translationof Contemporary time signatures + +@ignore + Extended discussion of compound time signatures + including Graham P.'s work; non-standard time + signatures such as 7/10, 5/6; alternative + notations such as Orff-esque 4/note, placing a + single time signature across multiple staves, or + placing time signatures at the top of StaffGroups + or systems rather than in the stave. +@end ignore + + +@node Notation polymétrique étendue +@unnumberedsubsubsec Notation polymétrique étendue +@translationof Extended polymetric notation + +@ignore + Extended examples e.g. different instruments + or ensembles with independent tempi +@end ignore + + +@node Ligatures et musique contemporaine +@unnumberedsubsubsec Ligatures et musique contemporaine +@translationof Beams in contemporary music + +@ignore + Beaming practises, stemlets, Boulez-esque displaying + of beamed notes with flags +@end ignore + + +@node Barres de mesure et musique contemporaine +@unnumberedsubsubsec Barres de mesure et musique contemporaine +@translationof Bar lines in contemporary music + +@ignore + Mensurstriche barlines, tick barlines, etc. +@end ignore + + +@node Notation graphique +@subsection Notation graphique +@translationof Graphical notation + + +@node Techniques de partition contemporaine +@subsection Techniques de partition contemporaine +@translationof Contemporary scoring techniques + + +@node Nouvelles techniques instrumentales +@subsection Nouvelles techniques instrumentales +@translationof New instrumental techniques + + +@node Informations complémentaires et exemples pertinents +@subsection Informations complémentaires et exemples pertinents +@translationof Further reading and scores of interest + +Vous trouverez ici une sélection d'ouvrages de référence, d'exemples et +autres ressources qui vous permettront d'étudier plus avant la notation +contemporaine. + +@menu +* Ouvrages et articles sur la notation en musique contemporaine:: +* Partitions et exemples:: +@end menu + + +@node Ouvrages et articles sur la notation en musique contemporaine +@unnumberedsubsubsec Ouvrages et articles sur la notation en musique contemporaine +@translationof Books and articles on contemporary musical notation + +@itemize +@item +@emph{Music Notation in the Twentieth Century: A Practical Guidebook} +par Kurt Stone [W. W. Norton, 1980] + +@item +@emph{Music Notation: A Manual of Modern Practice} par Gardner Read +[Taplinger, 1979] + +@item +@emph{Instrumentation and Orchestration} par Alfred Blatter [Schirmer, +2de ed. 1997] + +@end itemize + + +@node Partitions et exemples +@unnumberedsubsubsec Partitions et exemples +@translationof Scores and musical examples + +@ignore + Rough list of composers whose work could be included + (in alphabetical order, perhaps with suggested work): + + Pierre Boulez (Le Marteau Sans Maître?) + John Cage (Freeman Etudes?) + George Crumb (Black Angels?) + Brian Ferneyhough (Transit? Time & Motion Studies?) + Ben Johnston (extended just intonation example) + György Ligeti (several, including Hamburg Concerto) + Krzysztof Penderecki (Threnody to the Victims of Hiroshima?) + Karlheinz Stockhausen (Gruppen?) +@end ignore + diff --git a/Documentation/fr/notation/editorial.itely b/Documentation/fr/notation/editorial.itely index 58ed26b71e..0c5fb5ba70 100644 --- a/Documentation/fr/notation/editorial.itely +++ b/Documentation/fr/notation/editorial.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @@ -42,11 +42,12 @@ l'intérieur même de la portée. * Hampes:: @end menu + @node Indication de la taille de fonte musicale @unnumberedsubsubsec Indication de la taille de fonte musicale @translationof Selecting notation font size -@cindex selection de la taille (notation) +@cindex sélection de la taille (notation) @cindex notes, taille @cindex taille des notes @cindex têtes de note @@ -67,7 +68,6 @@ l'intérieur même de la portée. @funindex tiny @funindex teeny - Le plus sûr moyen de régler la taille de la police, quel que soit le contexte, consiste à définir la propriété @code{fontSize}. Ceci ne modifiera en rien la taille des différents symboles tels que @@ -96,7 +96,7 @@ de définir la propriété @code{font-size} pour tous les objets de rendu. La valeur de @code{font-size} est un entier représentant la taille proportionnellement à la hauteur standard de la portée en cours. Chaque incrément correspond à une augmentation d'environ -12@tie{}% de la taille de la police. Un pas de six aboutit exactement +12 % de la taille de la police. Un pas de six aboutit exactement au doublement de la taille. La fonction Scheme @code{magstep} convertit le nombre affecté à @code{font-size} en facteur d'échelle. Vous pouvez aussi définir directement la propriété @code{font-size} de @@ -122,14 +122,13 @@ c4.-> d8---3 Pour changer la taille des caractères, LilyPond met à l'échelle la fonte dont la taille est la plus proche de la taille voulue. La taille standard (pour laquelle @w{@code{font-size = #0}}) dépend de la hauteur -de la portée. À une portée de 20@tie{}points correspond une police de -10@tie{}points. +de la portée. À une portée de 20 points correspond une police de +10 points. La propriété @code{font-size} ne peut intervenir que pour les objets qui utilisent des polices, autrement dit ceux qui disposent de l'interface de rendu @code{font-interface}. - @predefined @code{\teeny}, @code{\tiny}, @@ -139,7 +138,6 @@ l'interface de rendu @code{font-interface}. @code{\huge}. @endpredefined - @seealso Morceaux choisis : @rlsrnamed{Editorial annotations,Annotations éditoriales}. @@ -158,7 +156,7 @@ Référence des propriétés internes : @funindex \finger @funindex finger -Les doigtés peuvent être indiqués comme suit@tie{}: +Les doigtés peuvent être indiqués comme suit : @var{note}-@var{chiffre_du_doigt} @lilypond[verbatim,quote,relative=2] @@ -201,22 +199,21 @@ la portée -- voir @ref{Direction et positionnement} à ce sujet. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {avoiding-collisions-with-chord-fingerings.ly} - @seealso Manuel de notation : -@ref{Direction et positionnement} +@ref{Direction et positionnement}. Morceaux choisis : -@rlsrnamed{Editorial annotations,Annotations éditoriales}. +@rlsrnamed{Editorial annotations, Annotations éditoriales}. Référence des propriétés internes : @rinternals{FingeringEvent}, @@ -225,6 +222,10 @@ Référence des propriétés internes : @rinternals{New_fingering_engraver}, @rinternals{Fingering}. +@knownissues +La syntaxe @samp{@var{note}-@var{digit}} ne prend pas en charge, par +défaut, les chiffres supérieurs à 9. + @node Dictée à trous @unnumberedsubsubsec Dictée à trous @@ -256,22 +257,22 @@ b c @end lilypond +Têtes de note, hampes, crochets et silences sont invisibles. Une +ligature sera invisible si elle démarre sur une note invisible. Les objets de notation attachés à une note invisible ne seront pas masqués pour autant. @lilypond[verbatim,quote,relative=2] -c4( d) +e8(\p f g a)-- \hideNotes -e4(\p f)-- +e8(\p f g a)-- @end lilypond - @predefined @code{\hideNotes}, @code{\unHideNotes}. @endpredefined - @seealso Manuel d'initiation : @rlearning{Visibilité et couleur des objets}. @@ -378,7 +379,6 @@ gis8 a gis4 a @end lilypond - @seealso Manuel de notation : @ref{Liste des couleurs}, @@ -387,7 +387,6 @@ Manuel de notation : Morceaux choisis : @rlsrnamed{Editorial annotations,Annotations éditoriales}. - @cindex x11, couleur @cindex couleur, notes d'un accord @cindex notes colorisées dans un accord @@ -401,14 +400,12 @@ normale ayant un nom similaire. Les couleurs de X11 ne sont pas toutes perceptibles dans un navigateur internet. Aussi nous vous recommandons, dans le cadre d'une -présentation multimedia, d'utiliser des couleurs de base @code{#blue}, -@code{#green}, @code{#red} -- bleu, vert, rouge. - +présentation multimédia, d'utiliser des couleurs de base @code{blue}, +@code{green}, @code{red} -- bleu, vert, rouge. Vous ne pouvez pas coloriser des notes à l'intérieur d'un accord avec -@code{\override}. Si besoin est, utilisez @code{\tweak}. -Pour plus de détails, consultez -@ref{La commande d'affinage (tweak)}. +@code{\override}. Si besoin est, utilisez @code{\tweak}. Pour plus de +détails, consultez @ref{La commande d'affinage (tweak)}. @node Parenthèses @@ -418,6 +415,7 @@ Pour plus de détails, consultez @cindex fantômes, notes @cindex notes fantômes @cindex parenthèses, notes entre +@cindex crochets, notes entre @funindex \parenthesize @funindex parenthesize @@ -443,7 +441,6 @@ c2-\parenthesize -. d c2 \parenthesize r @end lilypond - @seealso Morceaux choisis : @rlsrnamed{Editorial annotations,Annotations éditoriales}. @@ -453,9 +450,7 @@ Référence des propriétés internes : @rinternals{ParenthesesItem}, @rinternals{parentheses-interface}. - @knownissues - Lorsqu'un accord est mis entre parenthèses, celles-ci s'appliquent individuellement à chacune des notes le composant, alors qu'on attendrait une seule paire de parenthèses encadrant tout l'accord. @@ -469,6 +464,10 @@ attendrait une seule paire de parenthèses encadrant tout l'accord. @cindex hampes invisibles @cindex visibilité des hampes @cindex masquage des hampes +@cindex hampe, orientation +@cindex hampe montante +@cindex hampe descendante +@cindex hampe neutre @funindex \stemUp @funindex stemUp @@ -476,10 +475,6 @@ attendrait une seule paire de parenthèses encadrant tout l'accord. @funindex stemDown @funindex \stemNeutral @funindex stemNeutral -@cindex stem, direction -@cindex stem, up -@cindex stem, down -@cindex stem, neutral Dès qu'une note est rencontrée, un objet @code{Stem} se crée automatiquement. Pour les rondes et les silences, ils sont aussi @@ -488,17 +483,15 @@ créés, mais en mode invisible. L'orientation des hampes peut être définie manuellement -- voir @ref{Direction et positionnement} à ce sujet. - @predefined @code{\stemUp}, @code{\stemDown}, @code{\stemNeutral}. @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {default-direction-of-stems-on-the-center-line-of-the-staff.ly} @@ -528,6 +521,7 @@ la portée par des éléments qui lui seront externes. * Crochets d'analyse:: @end menu + @node Info-bulle @unnumberedsubsubsec Info-bulle @translationof Balloon help @@ -566,13 +560,13 @@ En voici un exemple : Vous disposez de deux fonctions musicales, @code{balloonGrobText} et @code{balloonText}. @code{balloonGrobText} prend en argument l'objet graphique à agrémenter et s'utilise comme -@code{\once@tie{}\override}. @code{balloonText}, quant à lui, s'utilise +@code{\once \override}. @code{balloonText}, quant à lui, s'utilise comme une simple articulation et fonctionne comme @code{\tweak} pour attacher du texte à l'une des notes d'un accord. Les autres arguments sont le décalage et le texte de la bulle. Les info-bulles ont une influence sur les espacements, que l'on peut -gérer ainsi@tie{}: +gérer ainsi : @c KEEP LY @lilypond[verbatim,quote,relative=2] @@ -588,13 +582,11 @@ gérer ainsi@tie{}: } @end lilypond - @predefined @code{\balloonLengthOn}, @code{\balloonLengthOff}. @endpredefined - @seealso Morceaux choisis : @rlsrnamed{Editorial annotations,Annotations éditoriales}. @@ -620,7 +612,7 @@ Vous pouvez tracer des lignes entre les portées, synchronisées avec les notes. LilyPond a recours à deux graveurs distincts afin d'afficher le -quadrillage@tie{}: le @code{Grid_point_engraver} se charge de +quadrillage : le @code{Grid_point_engraver} se charge de déterminer l'envergure du crochet, alors que le @code{Grid_line_span_engraver} se consacrera au tracé des lignes. Les lignes sont par défaut centrées horizontalement sous les notes et @@ -660,10 +652,9 @@ spécifie quant à elle l'espace de temps entre chaque ligne. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {grid-lines--changing-their-appearance.ly} - @seealso Morceaux choisis : @rlsrnamed{Editorial annotations,Annotations éditoriales}. @@ -708,7 +699,7 @@ structure d'une pièce. } @end lilypond -Les crochets d'analyses sont susceptibles d'être imbriqués@tie{}: +Les crochets d'analyses sont susceptibles d'être imbriqués : @lilypond[verbatim,quote] \layout { @@ -725,7 +716,6 @@ Les crochets d'analyses sont susceptibles d'être imbriqués@tie{}: } @end lilypond - @seealso Morceaux choisis : @rlsrnamed{Editorial annotations,Annotations éditoriales}. diff --git a/Documentation/fr/notation/expressive.itely b/Documentation/fr/notation/expressive.itely index 25db5c3efd..5127176128 100644 --- a/Documentation/fr/notation/expressive.itely +++ b/Documentation/fr/notation/expressive.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: eccc513d15d19b03ed8a9ae776c828fff4dbfbee 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: Jean-Charles Malahieude, John Mandereau @@ -43,6 +43,7 @@ et aborderons la manière de générer vos propres signes. * Personnalisation des indications de nuance:: @end menu + @node Articulations et ornements @unnumberedsubsubsec Articulations et ornements @translationof Articulations and ornamentations @@ -155,7 +156,7 @@ c4-> c-. c2-_ Même si LilyPond place automatiquement ces symboles, selon les règles contenues dans le fichier @file{scm/script.scm}, il est possible de -l'obliger à les positionner au-dessus ou en-dessous de la note, comme +l'obliger à les positionner au-dessus ou en dessous de la note, comme indiqué au chapitre @ref{Direction et positionnement}. Les articulations sont des objets de type @code{script}@tie{}; les @@ -163,12 +164,12 @@ propriétés de ces objets sont abordées plus en détail au chapitre @rinternals{Script}. Une articulation peut se rattacher aussi bien à un silence qu'à une -note, mais @strong{pas à un silence multi-mesures}. Il existe cependant +note, mais @strong{pas à un silence multimesures}. Il existe cependant un cas particulier@tie{}: le point d'orgue -- ou point d'arrêt -- attaché à un silence valant l'intégralité de la mesure. LilyPond dispose à cet effet de la commande @code{\fermataMarkup}, qui créera un objet @code{MultiMeasureRestText} rattaché à ce @qq{silence -multi-mesures}. +multimesures}. @lilypond[verbatim,quote,relative=2] \override Script #'color = #red @@ -187,13 +188,13 @@ Pour plus d'information sur la manière d'ordonner @code{Scripts} et @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {modifying-default-values-for-articulation-shorthand-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-vertical-ordering-of-scripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-a-delayed-turn.ly} @seealso @@ -212,7 +213,7 @@ Manuel de notation : @ref{Liste des signes d'articulation}, @ref{Trilles}. -Fichiers installés : +Fichiers d'initialisation : @file{scm/script.scm}. Morceaux choisis : @@ -410,12 +411,11 @@ Pour créer des indications de nuance qui restent alignées avec les nuances habituelles, reportez-vous au chapitre @ref{Personnalisation des indications de nuance}. -@cindex dynamics, vertical positioning -@cindex vertical positioning of dynamics +@cindex nuances, positionnement vertical +@cindex vertical, positionnement des nuances @funindex DynamicLineSpanner - Le positionnement vertical des nuances est géré par le @rinternals{DynamicLineSpanner}. @funindex \dynamicUp @@ -461,31 +461,29 @@ avec ou sans extenseur, ainsi que les indications de pédale. @code{\dimHairpin}. @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} @cindex al niente @cindex niente, al -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-hairpins-using-al-niente-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligned-dynamics-and-textscripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {hiding-the-extender-line-for-text-dynamics.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-text-and-spanner-styles-for-text-dynamics.ly} - @seealso Glossaire musicologique : @rglos{al niente}, @@ -577,7 +575,7 @@ caractères @code{f,m,p,r,s} et @code{z}, et que les marques de nuance possèdent des propriétés particulières et prédéfinies quant à leur police. Aussi, lorsque vous créez du texte en pareille situation, nous vous recommandons d'utiliser @code{\normal-text} pour annuler ces -propriétés. L'intérêt majeur de recourrir à la fonction +propriétés. L'intérêt majeur de recourir à la fonction @code{make-dynamic-script} plutôt qu'à un simple @emph{markup} réside dans l'assurance que ces objets personnalisés et les soufflets seront alignés lorsqu'attachés à une même note. @@ -602,10 +600,10 @@ mfEspressDynamic = #(make-dynamic-script mfEspress) } @end lilypond -La constrution d'une indication de nuance personnalisée peut aussi se +La construction d'une indication de nuance personnalisée peut aussi se faire en langage Scheme@tie{}; voir -@rextendnamed{Markup construction in Scheme,Construction Scheme d'un marqueur} -pour en connaître les modalités. +@rextend{Construction d'un markup en Scheme} pour en connaître les +modalités. @lilypond[verbatim,quote] moltoF = #(make-dynamic-script @@ -620,7 +618,6 @@ moltoF = #(make-dynamic-script L'utilisation des fontes en mode @emph{markup} est abordée au chapitre @ref{Sélection de la fonte et de la taille}. - @seealso Manuel de notation : @ref{Mise en forme du texte}, @@ -632,7 +629,7 @@ Morceaux choisis : @rlsrnamed{Expressive marks,Signes d'interprétation}. Manuel d'extension : -@rextendnamed{Markup construction in Scheme,Construction Scheme d'un marqueur}. +@rextend{Construction d'un markup en Scheme}. @node Signes d'interprétation sous forme de courbe @@ -652,6 +649,7 @@ et sauts. * Chutes et sauts:: @end menu + @node Liaisons d'articulation @unnumberedsubsubsec Liaisons d'articulation @translationof Slurs @@ -663,7 +661,7 @@ Une liaison d'articulation indique que les notes doivent être jouées liées, ou @emph{legato}. Ces liaisons s'indiquent au moyen de parenthèses. -@warning{Lorsque la musique est polyphonique, la liaison doît se +@warning{Lorsque la musique est polyphonique, la liaison doit se terminer dans la voix où elle a été entamée.} @lilypond[verbatim,quote,relative=2] @@ -762,12 +760,9 @@ c4( e g2) g4( e c2) @end lilypond - - @funindex \slurUp @funindex slurUp - @predefined @code{\slurUp}, @code{\slurDown}, @@ -780,19 +775,17 @@ g4( e c2) @code{\slurSolid}. @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-double-slurs-for-legato-chords.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-text-markups-inside-slurs.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-slurs-with-complex-dash-structure.ly} - @seealso Glossaire musicologique : @rglosnamed{slur,liaison}. @@ -935,7 +928,6 @@ détails, référez-vous aux morceaux choisis de la section @code{\phrasingSlurSolid}. @endpredefined - @seealso Manuel d'initiation : @rlearning{Non-imbrication des crochets et liaisons}. @@ -951,7 +943,6 @@ Référence des propriétés internes : @rinternals{PhrasingSlur}. - @node Signes de respiration @unnumberedsubsubsec Signes de respiration @translationof Breath marks @@ -981,18 +972,16 @@ LilyPond gère les @emph{divisiones}, signes utilisés en notation ancienne pour indiquer les respirations. Pour de plus amples détails, voir @ref{Divisions}. - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-breath-mark-symbol.ly} @cindex césure -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {inserting-a-caesura.ly} - @seealso Glossaire musicologique : @rglosnamed{caesura,césure}. @@ -1025,24 +1014,19 @@ signes plus (vers le haut) ou moins (vers le bas). Le chiffre indique l'intervalle avec la note de départ. @lilypond[verbatim,quote,relative=2] -c2-\bendAfter #+4 -c2-\bendAfter #-4 -c2-\bendAfter #+6.5 -c2-\bendAfter #-6.5 -c2-\bendAfter #+8 -c2-\bendAfter #-8 +c2\bendAfter #+4 +c2\bendAfter #-4 +c2\bendAfter #+6.5 +c2\bendAfter #-6.5 +c2\bendAfter #+8 +c2\bendAfter #-8 @end lilypond -Lorsque vous saisissez des chutes ou des sauts, @strong{n'oubliez pas} -le tiret (@code{-}) qui précède la commande @code{\bendAfter}. - - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adjusting-the-shape-of-falls-and-doits.ly} - @seealso Glossaire musical : @rglosnamed{fall,chute}, @@ -1067,6 +1051,7 @@ d'aspect linéaire, tels les glissandos, arpèges et trilles. * Trilles:: @end menu + @node Glissando @unnumberedsubsubsec Glissando @translationof Glissando @@ -1088,12 +1073,13 @@ c2\glissando c, Un glissando est indiqué graphiquement, par une ligne ou des vaguelettes -- voir @ref{Styles de ligne}. - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{contemporary-glissando.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{glissandi-can-skip-grobs.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{contemporary-glissando.ly} @seealso Glossaire musicologique : @@ -1108,9 +1094,7 @@ Morceaux choisis : Référence des propriétés internes : @rinternals{Glissando}. - @knownissues - Il n'est pas possible d'imprimer un texte (tel que @notation{gliss.}) le long de la ligne de glissando. @@ -1190,7 +1174,6 @@ Un arpège peut parfois s'écrire de manière explicite, à l'aide de liaisons de tenue. Pour plus d'information, voir @ref{Liaisons de prolongation}. - @predefined @code{\arpeggio}, @code{\arpeggioArrowUp}, @@ -1201,19 +1184,17 @@ liaisons de tenue. Pour plus d'information, voir @code{\arpeggioParenthesisDashed}. @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-a-piano-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-other-contexts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-arpeggios-across-notes-in-different-voices.ly} - @seealso Glossaire musicologique : @rglos{arpeggio}. @@ -1230,9 +1211,7 @@ Référence des propriétés internes : @rinternals{Slur}, @rinternals{PianoStaff}. - @knownissues - @cindex arpège, style parenthèse Il est impossible de mêler au même instant, dans un contexte @@ -1259,7 +1238,6 @@ forme de parenthèse. Les trilles brefs s'indiquent comme n'importe quelle ponctuation, avec un simple @code{\trill}@tie{}; voir @ref{Articulations et ornements}. - Les trilles plus longs sont délimités par @code{\startTrillSpan} et @code{\stopTrillSpan}@tie{}: @@ -1270,7 +1248,7 @@ c2\stopTrillSpan r2 @end lilypond Lorsqu'un saut de ligne intervient alors qu'une prolongation de trille -est présente, l'indication de trille et sa prolongation sont rappellées +est présente, l'indication de trille et sa prolongation sont rappelées sur la première note de la nouvelle ligne@tie{}: @lilypond[ragged-right,verbatim,quote,relative=2] @@ -1342,13 +1320,11 @@ eis4\startTrillSpan fis! eis4\stopTrillSpan @end lilypond - @predefined @code{\startTrillSpan}, @code{\stopTrillSpan}. @endpredefined - @seealso Glossaire musicologique : @rglosnamed{trill,trille}. diff --git a/Documentation/fr/notation/fretted-strings.itely b/Documentation/fr/notation/fretted-strings.itely index cf663fcee4..08d87640fc 100644 --- a/Documentation/fr/notation/fretted-strings.itely +++ b/Documentation/fr/notation/fretted-strings.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 3f4496001441e0b1b27d7bc5395c4520f4f2088c + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Matthieu Jacquot @c Translation checkers: Jean-Charles Malahieude @@ -34,11 +33,13 @@ instruments à cordes frettées. * Banjo:: @end menu + @node Vue d'ensemble des cordes frettées @subsection Vue d'ensemble des cordes frettées @translationof Common notation for fretted strings -Vue d'ensemble de la notation pour les instruments à cordes frettées. +Nous allons aborder, dans les paragraphes qui suivent, les +particularités communes aux différents instruments à cordes frettées. @menu * Références en matière de cordes frettées:: @@ -51,6 +52,7 @@ Vue d'ensemble de la notation pour les instruments à cordes frettées. * Doigtés pour la main droite:: @end menu + @node Références en matière de cordes frettées @unnumberedsubsubsec Références en matière de cordes frettées @translationof References for fretted strings @@ -62,9 +64,10 @@ d'utiliser des diagrammes d'accord au-dessus de la portée traditionnelle. La guitare et le banjo sont des instruments transpositeurs, sonnant une octave au-dessous de ce qui est écrit. Les partitions pour ces instruments utilisent donc la clé de sol ottava -bassa @code{"treble_8"}. Vous pourrez trouver ailleurs dans la +bassa @code{"treble_8"} -- ou une instruction @code{\transposition c} +pour un rendu MIDI correct. Vous pourrez trouver ailleurs dans la documentation d'autres éléments aussi utilisés par les instruments à -cordes frettées@tie{}: +cordes frettées : @itemize @item Les doigtés s'obtiennent comme indiqué au chapitre @@ -82,7 +85,6 @@ chapitre @ref{Résolution des collisions}. @end itemize - @seealso Manuel de notation : @ref{Doigtés}, @@ -108,35 +110,38 @@ Une corde sur laquelle une note doit être jouée peut être indiquée en attachant @code{\@var{numéro}} à cette note prise dans une construction de type accord @code{<>}. -@warning{Les numéros de cordes @strong{doivent} être définis dans une +@warning{Les numéros de corde @strong{doivent} être définis dans une construction de type accord même s'il n'y a qu'une seule note.} @lilypond[verbatim,quote,relative=0] \clef "treble_8" -4 2 +c4\5 e\4 g2\3 1 @end lilypond Quand les indications de doigté et de numéro de corde sont attachées à une même note, leur positionnement se fera en fonction de l'ordre dans -lequel ils apparaissent dans le code@tie{}: - +lequel elles apparaissent dans le code et @strong{uniquement} si elles +interviennent au sein d'une construction d'accord : le positionnement +des doigtés est géré différemment selon qu'ils s'appliquent à l'accord +entier ou à des notes isolées indépendantes d'un accord. @lilypond[verbatim,quote,relative=1] \clef "treble_8" +g4\3-0 +g-0\3 2 @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} - @seealso Manuel de notation : @ref{Doigtés}. @@ -161,21 +166,21 @@ Référence des propriétés internes : La notation en tablature est utilisée pour certains instruments à cordes pincées. Les hauteurs n'y sont pas indiquées par des têtes de note, -mais par des chiffres ou autres symboles, qui indiquent sur quelle -corde, et à quelle case chaque note doit être jouée. Dans certaines -limites, LilyPond vous permet d'écrire des tablatures. - -Chaque numéro de corde associé à une note doit être précédé d'une barre -oblique inverse (ou @qq{antislash}) suivi d'un nombre. Par défaut, la -première corde est la plus aiguë, et les cordes suivent l'accordage -traditionnel d'une guitare (à six cordes). Les notes sont imprimées -sous forme de tablature, dans les contextes @code{TabStaff} et -@code{TabVoice}. - -@lilypond[quote,ragged-right,fragment,verbatim] +mais par des chiffres ou autres symboles qui indiquent sur quelle +corde et à quelle case chaque note doit être jouée. Des notes devant +être jouées simultanément seront alors alignées verticalement. + +Par défaut, la première corde est la plus aiguë et correspond à la ligne +supérieure du @code{TabStaff}. Les cordes suivent par défaut +l'accordage traditionnel d'une guitare (à six cordes). Les notes sont +imprimées sous forme de tablature, dans les contextes @code{TabStaff} et +@code{TabVoice} qui comportent une clef spécifique ajoutée +automatiquement. + +@lilypond[quote,ragged-right,verbatim] \new TabStaff \relative c' { - a,8 a' a - d, a' a + a,8 a' a + d,8 a' a } @end lilypond @@ -226,19 +231,27 @@ symbols = { } @end lilypond -@funindex minimumFret - @cindex cases @cindex frets -Quand aucune corde n'est précisée, LilyPond choisit automatiquement la -corde pour laquelle la position est la moins élevée et qui donne un -numéro de case supérieur ou égal à la valeur de la propriété -@code{minimumFret}. La valeur par défaut de cette propriété est fixée à -0, ce qui correspond aux cordes à vide. +@funindex minimumFret +@funindex restrainOpenStrings +Quand aucune corde n'est précisée, LilyPond choisit automatiquement la +corde pour laquelle la position est la moins élevée, avec une préférence +pour une corde à vide. Vous pouvez préférer qu'une note donnée soit +jouée sur une corde particulière, auquel cas l'affectation directe du +numéro de corde suffit. L'absence d'indication des numéros de +corde en notation traditionnelle se gère au niveau des stencils. Il est +cependant plus facile de jouer sur la propriété @code{minimumFret}, dont +la valeur par défaut est fixée à 0, ce qui correspond aux cordes à vide. + +Cependant, et en dépit d'une affectation de @code{minimumFret}, une +corde à vide aura toujours préséance. Ce comportement se modifie par +l'activation de @code{restrainOpenStrings}. @lilypond[quote,ragged-right,verbatim] +\layout { \override Voice.StringNumber #'stencil = ##f } \new StaffGroup << \new Staff \relative c { \clef "treble_8" @@ -251,36 +264,73 @@ numéro de case supérieur ou égal à la valeur de la propriété c16 d e f g4 c,16\5 d\5 e\4 f\4 g4\4 \set TabStaff.minimumFret = #5 + \set TabStaff.restrainOpenStrings = ##t c,16 d e f g4 } >> @end lilypond -Lorsqu'un liaison de prolongation intervient lors d'un saut de ligne, la -note est répétée, entre parenthèses. Il en va de même pour la seconde -alternative d'une répétition. +@funindex \tabChordRepeats +@funindex \chordRepeats + +@cindex accord, répétition +@cindex répétition, utilisation de @code{q} + +La répétition d'une construction en accord s'indique par un @code{q} -- +voir @ref{Répétition d'accords}. Cette fonctionnalité, bien +qu'opérationnelle en mode tablature, supprime entre autres les numéros +de corde et doigtés. Il vous faudra donc préalablement recourir +explicitement à l'instruction +@example +\chordRepeats #'(string-number-event fingering-event) +@end example +si vous utilisez la répétition d'accords dans vos tablatures. Cette +instruction est abrégée en @code{\tabChordRepeats}. + +@lilypond[quote,verbatim] +guitar = \relative c' { + r8 ~ q4 q8~ q q4 +} + +\new StaffGroup << + \new Staff { + \clef "treble_8" + \guitar + } + \new TabStaff { + \tabChordRepeats \guitar + } +>> +@end lilypond + +Lorsqu'une liaison de prolongation intervient à l'occasion d'un saut de +ligne, la note est répétée, entre parenthèses. Il en va de même pour la +seconde alternative d'une répétition. @lilypond[quote,ragged-right,verbatim] ties = \relative c' { - \repeat volta 2 { - e2. f4~ - f2 g2~ } - \alternative { - { g4 f2. } - { g4\repeatTie c,2. } - } - b1~\break - b1 \bar "|." + \repeat volta 2 { + e2. f4~ + f2 g2~ + } + \alternative { + { g4 f2. } + { g4\repeatTie c,2. } + } + b1~ + \break + b1 + \bar "|." } \score { << \new StaffGroup << - \context Staff { + \context Staff { \clef "treble_8" \ties - } - \context TabStaff { + } + \context TabStaff { \ties } >> @@ -299,25 +349,27 @@ ces cases entre parenthèses. @lilypond[quote,ragged-right,verbatim] ties = \relative c' { - \repeat volta 2 { - e2. f4~ - f2 g2~ } - \alternative { - { g4 f2. } - { g4\repeatTie c,2. } - } - b1~\break - b1 \bar "|." + \repeat volta 2 { + e2. f4~ + f2 g2~ } + \alternative { + { g4 f2. } + { g4\repeatTie c,2. } + } + b1~ + \break + b1 + \bar "|." } \score { << \new StaffGroup << - \context Staff { + \context Staff { \clef "treble_8" \ties - } - \context TabStaff { + } + \context TabStaff { \hideSplitTiedTabNotes \ties } @@ -335,31 +387,93 @@ ties = \relative c' { @cindex glissando, indication en tablature @cindex tablature et glissando +@funindex \harmonic +@funindex \harmonicByFret +@funindex \harmonicByRatio + Les indications de sons harmoniques ainsi que les glissandi peuvent être ajoutés aux tablatures. +@lilypond[verbatim,quote] +\layout { \override Voice.StringNumber #'stencil = ##f } +firstHarmonic = { + d'4\4\harmonic + g'4\3\harmonic + b'2\2\harmonic +} +\score { + << + \new Staff { \firstHarmonic } + \new TabStaff { \firstHarmonic } + >> +} +@end lilypond -@lilypond[fragment, verbatim, quote, relative=1] -\new TabStaff { - \new TabVoice { - d\2\glissando e\2 - } +Vous noterez que la commande @code{\harmonic} s'attache toujours à une +note unique (parfois contenue dans un accord) et non à l'ensemble d'un +accord. Ceci ne fonctionne donc que pour une harmonique au douzième +fret d'une corde à vide. Toute autre harmonique devrait être définie +directement par LilyPond. Vous pouvez l'y aider en indiquant la case où +le doigt viendrait se placer sur le manche. + +@lilypond[verbatim,quote] +fretHarmonics = { + \harmonicByFret #5 d16\4 + \harmonicByFret #4 d16\4 + \harmonicByFret #3 d8\4 + \harmonicByFret #5 2. +} +\score { + << + \new Staff { \fretHarmonics } + \new TabStaff { \fretHarmonics } + >> } @end lilypond +Une harmonique peut accessoirement se calculer à partir de la longueur +de corde par rapport au doigté de cette harmonique. -@snippets +@lilypond[verbatim,quote] +ratioHarmonics = { + \harmonicByRatio #1/2 4 + \harmonicByRatio #1/3 4 + \harmonicByRatio #1/4 { g8\3 b8\2 e'4\1 } +} +\score { + << + \new Staff { \ratioHarmonics } + \new TabStaff { \ratioHarmonics } + >> +} +@end lilypond -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] {stem-and-beam-behavior-in-tablature.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {polyphony-in-tablature.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{open-string-harmonics-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{fretted-string-harmonics-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{slides-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chord-glissando-in-tablature.ly} @seealso Manuel de notation : -@ref{Hampes}. +@ref{Hampes}, +@ref{Harmoniques}, +@ref{Glissando}, +@ref{Répétition d'accords}, +@ref{Répétitions explicites}. Morceaux choisis : @rlsrnamed{Fretted strings,Cordes frettées}. @@ -370,15 +484,13 @@ Référence des propriétés internes : @rinternals{TabVoice}, @rinternals{Beam}. - @knownissues - -Les accords ne subissent aucun traitement particulier@tie{}; de ce fait, +Les accords ne subissent aucun traitement particulier ; de ce fait, la sélection automatique des cordes peut attribuer une même corde pour deux notes différentes de l'accord. Afin que @code{\partcombine} fonctionne avec des tablatures, on doit -ajouter au contexte @code{TabStaff} des voix fantômes@tie{}: +ajouter au contexte @code{TabStaff} des voix fantômes : @lilypond[quote,ragged-right,verbatim] melodia = \partcombine { e4 g g g }{ e4 e e e } @@ -396,6 +508,7 @@ melodia = \partcombine { e4 g g g }{ e4 e e e } Le support des modes de jeu propres à la guitare se limite aux sons harmoniques et aux glissandi. + @node Tablatures personnalisées @unnumberedsubsubsec Tablatures personnalisées @translationof Custom tablatures @@ -404,32 +517,37 @@ harmoniques et aux glissandi. @cindex banjo, tablature @cindex mandoline, tablature @cindex guitare basse, tablature +@cindex ukulele, tablature @cindex tablature, accordages prédéfinis @cindex cordes frettés et accordages prédéfinis @cindex accordages prédéfinis et cordes frettées -@funindex StringTunings +@funindex stringTunings Sous LilyPond, la case correspondant à une note jouée sur une corde donnée est calculée automatiquement. Pour ce faire, l'accordage doit être spécifié. L'accordage des cordes est donné par la propriété -@code{StringTunings}. +@code{stringTunings}. -LilyPond possède des accordages prédéfinis pour banjo, mandoline, guitare -et guitare basse. Lilypond calcule automatiquement la transposition +LilyPond possède des accordages prédéfinis pour le banjo, la mandoline, +la guitare et la guitare basse ainsi que le ukulele et les cordes +d'orchestre. Lilypond calcule automatiquement la transposition correspondant à ces accordages. L'exemple ci-dessous est pour guitare basse, il sonnera donc une octave en dessous de ce qui est écrit. @lilypond[quote,ragged-right,verbatim] << - \new Staff { + \new Voice \with { + \override StringNumber #'stencil = ##f + } { \clef "bass_8" \relative c, { c4 d e f } } - \new TabStaff { - \set TabStaff.stringTunings = #bass-tuning + \new TabStaff \with { + stringTunings = #bass-tuning + } { \relative c, { c4 d e f } @@ -437,40 +555,64 @@ basse, il sonnera donc une octave en dessous de ce qui est écrit. >> @end lilypond -L'accordage par défaut est @code{guitar-tuning}@tie{}; il correspond à +L'accordage par défaut est @code{guitar-tuning}_; il correspond à l'accordage standard d'une guitare@tie{}: mi la ré sol si mi (EADGBE). -D'autres accordages prédéfinis sont disponibles@tie{}: +D'autres accordages prédéfinis sont disponibles : @code{guitar-open-g-tuning}, @code{mandolin-tuning} et @code{banjo-open-g-tuning}. Les accordages prédéfinis sont répertoriés -dans le fichier @file{scm/output-lib.scm}. +dans le fichier @file{ly/string-tunings-init.ly}. -L'accordage est constitué par une liste Scheme des hauteurs de notes -correspondant aux cordes à vide, une note pour chaque corde, classée par -numéro de corde de 1 à n, où la corde 1 est la plus haute dans la -tablature et n la plus basse. Cela revient généralement à classer les -cordes de la plus aiguë à la plus grave, mais certains instruments -(comme le ukulele) n'ont pas les cordes classées par hauteur. +@cindex accordage personnalisé -Dans cette liste, la hauteur des notes est représentée par l'intervalle, -exprimé en demi-tons, du do central jusqu'à la note de la corde à vide. -Elle doit donc être représentée par un nombre entier. LilyPond calcule -la note correspondant à chaque corde en ajoutant cet intervalle au do -central. +@funindex stringTuning +@funindex \stringTuning -Lilypond calcule automatiquement le nombre de cordes à représenter dans -la tablature (@code{TabStaff}) en comptant le nombre d'éléments définis -dans le @code{stringTunings}. +LilyPond vous permet de créer n'importe quel accordage. L'accordage du +contexte en cours se détermine à l'aide de la fonction +@code{\stringTuning}. Celle-ci prend deux arguments : une +représentation symbolique qui gardera l'accordage en mémoire, et une +construction d'accord définissant la hauteur des différentes cordes. +Les hauteurs fournies s'expriment impérativement en mode absolu -- voir +@ref{Hauteurs avec octave absolue}. La corde ayant le numéro le plus +élevé (généralement la note la plus basse) est mentionnée en premier. -N'importe quel accordage peut donc être créé. Par exemple, nous pouvons -définir l'accordage d'un instrument à quatre cordes accordées do sol ré -la, donc de la plus aiguë à la plus grave et en anglais@tie{}: -@code{a''}, @code{d''}, @code{g'}, et @code{c'}@tie{}: +Nous pouvons ainsi définir par exemple l'accordage d'un instrument à +quatre cordes accordées do sol ré la, et en anglais : +@code{a''}, @code{d''}, @code{g'}, et @code{c'} : +@lilypond[quote,verbatim] +mynotes = { + c'4 e' g' c'' | + e''4 g'' b'' c''' +} + +<< + \new Staff { + \clef treble + \mynotes + } + \new TabStaff { + #(define custom-tuning #{ \stringTuning #}) + \set Staff.stringTunings = #custom-tuning + \mynotes + } +>> +@end lilypond + +La propriété @code{stringTunings} permet aussi au @code{FretBoards} de +calculer automatiquement les diagrammes de frets. + +L'accordage fait partie de la clé permettant d'identifier les +diagrammes prédéfinis -- voir @ref{Tablatures prédéfinies}. + +Nous pourrions donc écrire l'exemple précédent ainsi : @lilypond[quote,verbatim] +custom-tuning = \stringTuning + mynotes = { - c'4 e' g' c'' | - e'' g'' b'' c''' + c'4 e' g' c'' | + e''4 g'' b'' c''' } << @@ -479,22 +621,73 @@ mynotes = { \mynotes } \new TabStaff { - \set TabStaff.stringTunings = #`(,(ly:make-pitch 1 5 0) - ,(ly:make-pitch 1 1 0) - ,(ly:make-pitch 0 4 0) - ,(ly:make-pitch 0 0 0)) + \set TabStaff.stringTunings = #custom-tuning \mynotes } >> @end lilypond +L'accordage est constitué, en interne, par une liste Scheme des hauteurs +de note correspondant aux cordes à vide, une note pour chaque corde, +classée par numéro de corde de 1 à n, où la corde 1 est la plus haute +dans la tablature et n la plus basse. Cela revient généralement à +classer les cordes de la plus aiguë à la plus grave, mais certains +instruments (comme le ukulele) n'ont pas les cordes classées par hauteur. + +Chaque hauteur de corde incluse dans un accordage est un objet LilyPond +de type @emph{pitch}. Les objets @emph{pitch} sont créés par la fonction +@code{ly:make-pitch} -- voir @ref{Fonctions Scheme}. + +La fonction @code{\stringTuning} permet de créer de tels objets à partir +de la saisie d'un accord. + +Lilypond calcule automatiquement le nombre de cordes à représenter dans +la tablature (@code{TabStaff}) ainsi que dans le @code{FretBoard} en +comptant le nombre d'éléments définis dans le @code{stringTunings}. + +Les différents contextes @code{TabStaff} utiliseront par défaut un même +accordage personnalisé dès lors que votre fichier comportera une clause + +@example +\layout @{ + \context @{ + \TabStaff + stringTunings = \stringTuning \notemode @{ @} + @} +@} +@end example + +@cindex moderntab, clef +@cindex clef moderntab +@cindex clef de tablature +@cindex tablature, clef + +LilyPond dispose d'une clef de tablature moderne. + +@lilypond[quote,ragged-right,verbatim] +\new TabStaff { + \clef moderntab + 1 + \break + \clef tab + 1 +} +@end lilypond + +Cette clef moderne prend en charge les tablatures de quatre à sept cordes. @seealso +Manuel de notation : +@ref{Hauteurs avec octave absolue}, +@ref{Tablatures prédéfinies}, +@ref{Fonctions Scheme}. + Fichiers d'initialisation : -@file{scm/output-lib.scm}. +@file{ly/string-tunings-init.ly}, +@file{scm/tablature.scm}. Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@rlsrnamed{Fretted strings, Cordes frettées}. Référence des propriétés internes : @rinternals{Tab_note_heads_engraver}. @@ -516,33 +709,35 @@ hauteurs, comme le ukulele. @cindex fret, diagrammes personnalisés @cindex diagrammes personnalisés de fret -On peut ajouter des diagrammes d'accords au-dessus de n'importe quelle +On peut ajouter des diagrammes d'accord au-dessus de n'importe quelle note, en tant qu'objets @code{\markup}. Ces objets contiennent toutes les informations du diagramme d'accord. Il y a pour les définir trois -interfaces "diagramme d'accord" (@emph{fret-diagram} en anglais)@tie{}: -@var{standard}, @var{terse} et @var{verbose}. +interfaces @qq{diagramme d'accord} (@emph{fret-diagram} en +anglais) : @var{standard}, @var{terse} et @var{verbose}. Ces trois interfaces produiront des diagrammes similaires mais permettent des niveaux de personnalisation différents. Des détails à propos des interfaces de type @code{\markup} -peuvent être trouvés dans @ref{Text markup commands}. +peuvent être trouvés à l'annexe @ref{Instrument Specific Markup}. -Dans l'interface standard des diagrammes d'accords, on indiquera le +Dans l'interface standard des diagrammes d'accord, on indiquera le numéro de corde et le numéro de case pour chaque point placé sur une corde. Les cordes à vide et étouffées peuvent aussi être indiquées. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - c1 d:m - } + \chordmode { + c1 d:m + } } \context Staff { \clef "treble_8" - < c e g c' e' > 1 ^\markup + 1^\markup { \fret-diagram #"6-x;5-3;4-2;3-o;2-1;1-o;" - < d a d' f'> ^\markup + } + 1^\markup { \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-1;" + } } >> @end lilypond @@ -551,7 +746,7 @@ Les cordes à vide et étouffées peuvent aussi être indiquées. @cindex indication du barré Les indications de barré peuvent aussi être ajoutées au diagramme -d'accord dans l'interface standard@tie{}: +d'accord dans l'interface standard : @lilypond[quote, verbatim] << @@ -562,16 +757,19 @@ d'accord dans l'interface standard@tie{}: } \context Staff { \clef "treble_8" - < f, c f a c' f'>1 ^\markup + 1^\markup { \fret-diagram #"c:6-1-1;6-1;5-3;4-3;3-2;2-1;1-1;" - < g, d g b d' g'> ^\markup + } + 1^\markup { \fret-diagram #"c:6-1-3;6-3;5-5;4-5;3-4;2-3;1-3;" + } } >> @end lilypond @cindex fret-diagram et markup @cindex markup et fret-diagram +@cindex ukulele @funindex fret-diagram @funindex \fret-diagram @@ -588,10 +786,12 @@ représentées peuvent aussi être modifiés dans l'interface standard. } \context Staff { \clef "treble_8" - < f, c f a c' f'>1 ^\markup + 1^\markup { \fret-diagram #"s:1.5;c:6-1-1;6-1;5-3;4-3;3-2;2-1;1-1;" - < g, b, d g b g'> ^\markup + } + 1^\markup { \fret-diagram #"h:6;6-3;5-2;4-o;3-o;2-o;1-3;" + } } >> @end lilypond @@ -603,13 +803,15 @@ banjo et le ukulele. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - a1 - } + \chordmode { + a1 + } } \context Staff { - %% A chord for ukulele - a'1 ^\markup \fret-diagram #"w:4;4-2-2;3-1-1;2-o;1-o;" + % An 'A' chord for ukulele + a'1^\markup { + \fret-diagram #"w:4;4-2-2;3-1-1;2-o;1-o;" + } } >> @end lilypond @@ -620,16 +822,18 @@ de ces doigtés peut être modifié dans l'interface standard. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - c1 d:m - } + \chordmode { + c1 d:m + } } \context Staff { \clef "treble_8" - < c e g c' e' > 1 ^\markup + 1^\markup { \fret-diagram #"f:1;6-x;5-3-3;4-2-2;3-o;2-1-1;1-o;" - < d a d' f'> ^\markup + } + 1^\markup { \fret-diagram #"f:2;6-x;5-x;4-o;3-2-2;2-3-3;1-1-1;" + } } >> @end lilypond @@ -640,16 +844,18 @@ l'interface standard. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - c1 d:m - } + \chordmode { + c1 d:m + } } \context Staff { \clef "treble_8" - < c e g c' e' > 1 ^\markup + 1^\markup { \fret-diagram #"d:0.35;6-x;5-3;4-2;3-o;2-1;1-o;" - < d a d' f'> ^\markup + } + 1^\markup { \fret-diagram #"p:0.2;6-x;5-x;4-o;3-2;2-3;1-1;" + } } >> @end lilypond @@ -659,8 +865,8 @@ l'interface standard. @funindex fret-diagram-terse @funindex \fret-diagram-terse -Dans l'interface @code{fret-diagram-terse}, les numéros de cordes sont -omis@tie{}; les numéros de cordes sont induits par la présence de +Dans l'interface @code{fret-diagram-terse}, les numéros de corde sont +omis ; les numéros de corde sont induits par la présence de points-virgules. Il y a un point-virgule pour chaque corde du diagramme. Le premier point-virgule correspondant au plus haut numéro de corde, le dernier à la première corde. Les cordes étouffées, les @@ -669,16 +875,18 @@ cordes à vide ainsi que les numéros de case peuvent y être indiqués. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - c1 d:m - } + \chordmode { + c1 d:m + } } \context Staff { \clef "treble_8" - < c e g c' e' > 1 ^\markup + 1^\markup { \fret-diagram-terse #"x;3;2;o;1;o;" - < d a d' f'> ^\markup + } + 1^\markup { \fret-diagram-terse #"x;x;o;2;3;1;" + } } >> @end lilypond @@ -689,16 +897,18 @@ Les indications de barré peuvent être incluses dans l'interface @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - f1 g - } + \chordmode { + f1 g + } } \context Staff { \clef "treble_8" - < f, c f a c' f'>1 ^\markup + 1^\markup { \fret-diagram-terse #"1-(;3;3;2;1;1-);" - < g, d g b d' g'> ^\markup + } + 1^\markup { \fret-diagram-terse #"3-(;5;5;4;3;3-);" + } } >> @end lilypond @@ -710,18 +920,20 @@ Les indications de doigtés peuvent être inclus dans l'interface @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - c1 d:m - } + \chordmode { + c1 d:m + } } \context Staff { \override Voice.TextScript #'(fret-diagram-details finger-code) = #'below-string \clef "treble_8" - < c e g c' e' > 1 ^\markup + 1^\markup { \fret-diagram-terse #"x;3-3;2-2;o;1-1;o;" - < d a d' f'> ^\markup + } + 1^\markup { \fret-diagram-terse #"x;x;o;2-2;3-3;1-1;" + } } >> @end lilypond @@ -731,6 +943,7 @@ utilisant la commande @code{\override} dans l'interface @code{fret-diagram-terse}. @cindex fret-diagram-verbose markup +@cindex capo @funindex fret-diagram-verbose @funindex \fret-diagram-verbose @@ -740,14 +953,15 @@ Scheme. Chaque élément de la liste décrit un objet devant être placé dans le diagramme d'accord. @lilypond[quote, verbatim] -<< \context ChordNames { - \chordmode { - c1 d:m - } - } +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } \context Staff { \clef "treble_8" - < c e g c' e' > 1 ^\markup + 1^\markup { \fret-diagram-verbose #'( (mute 6) (place-fret 5 3) @@ -756,7 +970,8 @@ dans le diagramme d'accord. (place-fret 2 1) (open 1) ) - < d a d' f'> ^\markup + } + 1^\markup { \fret-diagram-verbose #'( (mute 6) (mute 5) @@ -765,31 +980,31 @@ dans le diagramme d'accord. (place-fret 2 3) (place-fret 1 1) ) + } } >> @end lilypond Les indications de doigté et de barré peuvent être décrits dans l'interface @code{fret-diagram-verbose}. Particularité propre à -l'interface @code{fret-diagram-verbose}@tie{}: l'indication -de capodastre dans le diagramme d'accord. L'indication de capodastre -est une petite ligne transversale aux cordes. La case avec le -capodastre est la case la plus basse du diagramme d'accord. +l'interface @code{fret-diagram-verbose} : l'indication de capodastre +dans le diagramme d'accord. L'indication de capodastre est une petite +ligne transversale aux cordes. La case avec le capodastre est la case +la plus basse du diagramme d'accord. @c \override is necessary to make fingering visible @lilypond[quote, verbatim] << - \context ChordNames { - \chordmode { - f1 g c - } - } + \context ChordNames { + \chordmode { + f1 g c + } + } \context Staff { \clef "treble_8" \override Voice.TextScript #'(fret-diagram-details finger-code) = #'below-string - - < f, c f a c' f'>1 ^\markup + 1^\markup { \fret-diagram-verbose #'( (place-fret 6 1) (place-fret 5 3) @@ -799,7 +1014,8 @@ capodastre est la case la plus basse du diagramme d'accord. (place-fret 1 1) (barre 6 1 1) ) - < g, b, d g b g'> ^\markup + } + 1^\markup { \fret-diagram-verbose #'( (place-fret 6 3 2) (place-fret 5 2 1) @@ -808,7 +1024,8 @@ capodastre est la case la plus basse du diagramme d'accord. (open 2) (place-fret 1 3 3) ) - < c e g c' e'> ^\markup + } + 1^\markup { \fret-diagram-verbose #'( (capo 3) (mute 6) @@ -816,7 +1033,8 @@ capodastre est la case la plus basse du diagramme d'accord. (place-fret 3 5 2) (place-fret 2 5 3) ) - } + } + } >> @end lilypond @@ -874,17 +1092,18 @@ un diagramme d'accord, les propriétés de l'interface dépendent de @code{Voice.TextScript}. @snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-fret-orientations.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {customizing-markup-fret-diagrams.ly} - @seealso Manuel de notation : -@ref{Text markup commands}. +@ref{Instrument Specific Markup}. Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@rlsrnamed{Fretted strings, Cordes frettées}. Référence des propriétés internes : @rinternals{fret-diagram-interface}. @@ -894,16 +1113,15 @@ Référence des propriétés internes : @unnumberedsubsubsec Tablatures prédéfinies @translationof Predefined fret diagrams - @cindex fret, diagrammes @cindex accord, diagrammes @funindex FretBoards @funindex stringTunings -Les diagrammes d'accords peuvent être affichés en utilisant le contexte +Les diagrammes d'accord peuvent être affichés en utilisant le contexte @code{FretBoards}. Par défaut le contexte @code{FretBoards} affichera -des diagrammes d'accords stockés dans une table de correspondance@tie{}: +des diagrammes d'accord stockés dans une table de correspondance : @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" @@ -917,7 +1135,7 @@ des diagrammes d'accords stockés dans une table de correspondance@tie{}: Les diagrammes d'accord définis par défaut sont dans le fichier @file{predefined-guitar-fretboards.ly}. Les diagrammes d'accord sont stockés en fonction des notes de l'accord ainsi que de l'accordage -(@code{stringTunings}) utilisé. +(@code{stringTunings}) utilisé. Le fichier d'initialisation @file{predefined-guitar-fretboards.ly} contient les diagrammes d'accord prédéfinis uniquement pour l'accordage standard (@code{guitar-tuning}). Des diagrammes d'accords peuvent être définis pour d'autres instruments @@ -937,7 +1155,25 @@ myChords = \chordmode { a1 a:m a:aug } } \new FretBoards { - \set stringTunings = #ukulele-tuning + \set Staff.stringTunings = #ukulele-tuning + \myChords +} +@end lilypond + +Les diagrammes de fret propres à la mandoline se trouvent dans le +fichier @file{predefined-mandolin-fretboards.ly}. + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-mandolin-fretboards.ly" + +myChords = \chordmode { c1 c:m7.5- c:aug } + +\new ChordNames { + \myChords +} + +\new FretBoards { + \set Staff.stringTunings = #mandolin-tuning \myChords } @end lilypond @@ -962,9 +1198,9 @@ simultanée qu'en utilisant le mode accord (voir @funindex \chordmode Il est courant d'afficher simultanément le nom des accords et les -diagrammes d'accords correspondants. -Ceci s'obtient en mettant en parallèle un contexte @code{ChordNames} avec -un contexte @code{FretBoards} et en affectant aux deux la même musique. +diagrammes d'accord correspondants. Ceci s'obtient en mettant en +parallèle un contexte @code{ChordNames} et un contexte +@code{FretBoards}, tout en affectant aux deux la même musique. @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" @@ -986,9 +1222,9 @@ mychords = \chordmode{ @cindex fret et transposition @cindex diagrammes de fret et transposition -Les diagrammes d'accords prédéfinis sont transposables tant qu'il y a +Les diagrammes d'accord prédéfinis sont transposables tant qu'il y a un diagramme correspondant à l'accord transposé dans la base des -diagrammes d'accords. +diagrammes d'accord. @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" @@ -998,7 +1234,7 @@ mychords = \chordmode{ mychordlist = { \mychords - \transpose c e { \mychords} + \transpose c e { \mychords } } << \context ChordNames { @@ -1013,7 +1249,7 @@ mychordlist = { La table des diagrammes d'accord contient sept types d'accord (majeur, mineur, augmenté, diminué, septième de dominante, majeur sept, mineur sept) pour chacune des 17 fondamentales possibles. Une liste complète -des diagrammes d'accords prédéfinis se trouve dans +des diagrammes d'accords prédéfinis se trouve à l'annexe @ref{Tablatures prédéfinies}. S'il n'y a pas d'entrée dans la table pour un accord donné, le graveur @code{Fretboard_engraver} calculera le diagramme d'accord en utilisant la fonctionnalité automatique décrite @@ -1022,7 +1258,7 @@ dans @ref{Tablatures automatiques}. @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" mychords = \chordmode{ - c1 c:9 + c1 c:maj9 } << @@ -1047,12 +1283,13 @@ aussi bien de type @var{terse} que @var{verbose}. @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" -\storePredefinedDiagram #default-fret-table \chordmode {c:9} +\storePredefinedDiagram #default-fret-table + \chordmode { c:maj9 } #guitar-tuning - #"x;3-2;2-1;3-3;3-4;x;" + #"x;3-2;o;o;o;o;" -mychords = \chordmode{ - c1 c:9 +mychords = \chordmode { + c1 c:maj9 } << @@ -1065,18 +1302,19 @@ mychords = \chordmode{ >> @end lilypond -On peut enregistrer différents diagrammes pour un même accord -en les définissant à des octaves différentes. Notez qu'il faut un -intervalle de deux octaves, le premier servant à la transposition. +On peut enregistrer différents diagrammes pour un même accord en les +définissant à des octaves différentes. Notez qu'il faut un intervalle +de deux octaves, le premier servant à la transposition. @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" -\storePredefinedDiagram #default-fret-table \chordmode { c'' } +\storePredefinedDiagram #default-fret-table + \chordmode { c'' } #guitar-tuning #(offset-fret 2 (chord-shape 'bes guitar-tuning)) -mychords = \chordmode{ +mychords = \chordmode { c1 c'' } @@ -1094,7 +1332,7 @@ mychords = \chordmode{ @cindex accord, carrures pour cordes frettées @funindex \addChordShape -@funindex add ChordShape +@funindex addChordShape @funindex storePredefinedDiagram @funindex \storePredefinedDiagram @@ -1113,21 +1351,23 @@ définies grâce aux interfaces @code{fret-diagram-terse} ou @lilypond[verbatim, ragged-right, quote] \include "predefined-guitar-fretboards.ly" -% add a new chord shape +% Add a new chord shape \addChordShape #'powerf #guitar-tuning #"1-1;3-3;3-4;x;x;x;" % add some new chords based on the power chord shape -\storePredefinedDiagram #default-fret-table \chordmode {f'} +\storePredefinedDiagram #default-fret-table + \chordmode { f'' } #guitar-tuning #(chord-shape 'powerf guitar-tuning) -\storePredefinedDiagram #default-fret-table \chordmode {g'} +\storePredefinedDiagram #default-fret-table + \chordmode { g'' } #guitar-tuning #(offset-fret 2 (chord-shape 'powerf guitar-tuning)) mychords = \chordmode{ - f1 f' g g' + f1 f'' g g'' } << @@ -1142,19 +1382,23 @@ mychords = \chordmode{ La disposition graphique d'un diagramme d'accord peut être modifiée suivant les préférences de l'utilisateur grâce aux propriétés de -l'interface @code{fret-diagram-interface}. Pour plus d'information, +l'interface @code{fret-diagram-interface}. Pour plus d'information, consultez @rinternals{fret-diagram-interface}. Pour un diagramme d'accord donné, les propriétés de l'interface dépendent de @code{FretBoards.FretBoard}. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {customizing-fretboard-fret-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {defining-predefined-fretboards-for-other-instruments.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chordchanges-for-fretboards.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{fretboards-alternate-tables.ly} @seealso Manuel de notation : @@ -1164,14 +1408,16 @@ Manuel de notation : @ref{Tablatures prédéfinies}. Fichiers d'initialisation : -@file{ly/predefined-guitar-fretboards.ly}, -@file{ly/predefined-guitar-ninth-fretboards.ly}. +@file{ly/predefined-guitar-fretboards.ly}, @* +@file{ly/predefined-guitar-ninth-fretboards.ly}, +@file{ly/predefined-ukulele-fretboards.ly},@* +@file{ly/predefined-mandolin-fretboards.ly}. Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@rlsrnamed{Fretted strings, Cordes frettées}. Référence des propriétés internes : -@rinternals {fret-diagram-interface}. +@rinternals{fret-diagram-interface}. @node Tablatures automatiques @@ -1183,7 +1429,7 @@ Référence des propriétés internes : @cindex automatique, diagramme de fret @cindex automatique, diagramme d'accord -Les diagrammes d'accord peuvent être créés automatiquement@tie{}; il +Les diagrammes d'accord peuvent être créés automatiquement ; il suffit d'affecter les notes à un contexte @code{FretBoards}. Si aucun diagramme prédéfini n'est disponible pour les notes entrées avec l'accordage actuel (@code{stringTunings}), les cordes et cases @@ -1192,18 +1438,18 @@ correspondant aux notes seront automatiquement calculées. @lilypond[quote,ragged-right,verbatim] << \context ChordNames { - \chordmode { - f1 g - } + \chordmode { + f1 g + } } \context FretBoards { - < f, c f a c' f'>1 - < g,\6 b, d g b g'> + 1 + 1 } \context Staff { \clef "treble_8" - < f, c f a c' f'>1 - < g, b, d g b' g'> + 1 + 1 } >> @end lilypond @@ -1217,39 +1463,40 @@ Dans la mesure où aucun diagramme prédéfini n'est chargé par défaut, le calcul automatique des diagrammes d'accord est le comportement par défaut. Dès que les diagrammes par défaut sont chargés, le calcul automatique peut être activé ou désactivé par des commandes -prédéfinies@tie{}: +prédéfinies : @lilypond[quote,ragged-right,verbatim] -\storePredefinedDiagram #default-fret-table +\storePredefinedDiagram #default-fret-table + #guitar-tuning - #"x;3-1-(;5-2;5-3;5-4;3-1-1);" + #"x;3-1-(;5-2;5-3;5-4;3-1-1-);" << \context ChordNames { - \chordmode { - c1 c c - } + \chordmode { + c1 c c + } } \context FretBoards { 1 \predefinedFretboardsOff - + 1 \predefinedFretboardsOn - + 1 } \context Staff { \clef "treble_8" 1 - - + 1 + 1 } >> @end lilypond -Parfois le calculateur se trouvera incapable de trouver un diagramme +Le calculateur se trouvera parfois incapable de trouver un diagramme d'accord convenable. On peut souvent y remédier en assignant les notes aux cordes. Dans bien des cas, il suffit de placer manuellement une -seule note pour que les autres soient alors placées de maniére +seule note pour que les autres soient alors placées de manière appropriée par le contexte @code{FretBoards}. @cindex fret, ajout de doigtés aux diagrammes @@ -1261,18 +1508,18 @@ fret. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - c1 d:m - } + \chordmode { + c1 d:m + } } \context FretBoards { - < c-3 e-2 g c'-1 e' > 1 - < d a-2 d'-3 f'-1> + 1 + 1 } \context Staff { \clef "treble_8" - < c e g c' e' > 1 - < d a d' f'> + 1 + 1 } >> @end lilypond @@ -1283,19 +1530,19 @@ servira à calculer les cordes et les cases du contexte @code{FretBoard}. @lilypond[quote, verbatim] << \context ChordNames { - \chordmode { - d1:m d:m - } + \chordmode { + d1:m d:m + } } \context FretBoards { - < d a d' f'> + 1 \set FretBoards.minimumFret = #5 - < d a d' f'> + 1 } \context Staff { \clef "treble_8" - < d a d' f'> - < d a d' f'> + 1 + 1 } >> @end lilypond @@ -1309,25 +1556,23 @@ propriété @code{stringTunings}. La disposition graphique d'un diagramme d'accord peut être modifiée suivant les préférences de l'utilisateur au travers des propriétés de l'interface @code{fret-diagram-interface}. Pour un diagramme -d'accord, les propriétés de l'interface dépendent de -@code{FretBoards.FretBoard}. - +d'accord @code{FretBoards} donné, les propriétés de l'interface +dépendent de @code{FretBoards.FretBoard}. @predefined @code{\predefinedFretboardsOff}, @code{\predefinedFretboardsOn}. @endpredefined - @seealso Manuel de notation : @ref{Tablatures personnalisées}. Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@rlsrnamed{Fretted strings, Cordes frettées}. Référence des propriétés internes : -@rinternals {fret-diagram-interface}. +@rinternals{fret-diagram-interface}. @knownissues Le calcul automatique des diagrammes de fret se révèle inapproprié pour @@ -1346,44 +1591,41 @@ hauteurs. @funindex rightHandFinger @funindex \rightHandFinger -Les doigtés de main droite @var{p-i-m-a} doivent être entrés dans une -construction de type accord @code{<>} même s'il n'y a qu'une seule note. - -@warning{Un trait d'union @strong{doit} suivre la note et une espace -@strong{doit} précéder la fermeture de la construction par un @code{>}.} +Les doigtés de main droite @var{p-i-m-a} doivent être entrés à l'aide de +l'instruction @code{\rightHandFinger} suivie d'un nombre. +@warning{Lorsque vous utilisez l'instruction @code{@bs{}rightHandFinger} +dans un accord, une espace @strong{doit} précéder la fermeture de la +construction par un @code{>}.} @lilypond[quote,verbatim,relative=0] \clef "treble_8" -4 - - - -1 +c4\rightHandFinger #1 +e\rightHandFinger #2 +g\rightHandFinger #3 +c\rightHandFinger #4 +1 @end lilypond Pour plus de clarté, vous pouvez traduire ou abréger la commande -@code{\rightHandFinger}, par exemple en @code{\doigtMainDroite} ou -même @code{\MD}@tie{}: +@code{\rightHandFinger}, par exemple en @code{doigtMainDroite} ou +même @code{MD} : @example -#(define MD rightHandFinger) +MD=#rightHandFinger @end example - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {placement-of-right-hand-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingerings,-string-indications,-and-right-hand-fingerings.ly} - @seealso Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@rlsrnamed{Fretted strings, Cordes frettées}. Référence des propriétés internes : @rinternals{StrokeFinger}. @@ -1395,46 +1637,49 @@ Référence des propriétés internes : La plupart des aspects en matière de notation pour guitare sont traités dans la partie commune aux instruments frettés. Il subsiste cependant -quelques particularités que nous allons maintenant examiner. Parfois -l'utilisateur aimerait créer des documents de type recueil de chansons, -où l'on ne trouve que des accords au-dessus des paroles. Dans la mesure -où LilyPond est un éditeur de partitions, il n'est pas l'outil optimal -pour des documents sans partition. Une meilleure alternative serait de -recourrir à un traitement de texte, un éditeur de texte ou, pour les -utilisateurs experimentés, un logiciel typographique tel que GuitarTex. +quelques particularités que nous allons maintenant examiner. + +Parfois l'utilisateur aimerait créer des documents de type recueil de +chansons, où l'on ne trouve que des accords au-dessus des paroles. Dans +la mesure où LilyPond est un éditeur de partitions, il n'est pas l'outil +optimal pour des documents sans partition. Une meilleure alternative +serait de recourir à un traitement de texte, un éditeur de texte ou, +pour les utilisateurs expérimentés, un logiciel typographique tel que +GuitarTex. @menu * Indication de la position et du barré:: * Indication des harmoniques et notes étouffées:: +* Indication de power chord:: @end menu + @node Indication de la position et du barré @unnumberedsubsubsec Indication de la position et du barré @translationof Indicating position and barring -@cindex indication de la position et du barré pour cordes frettées +@cindex barré, indication de la position @cindex cordes frettées, indication de la position et du barré -Cet exemple montre comment indiquer les positions et les barrés@tie{}: +Cet exemple montre comment indiquer les positions et les barrés : -@lilypond[quote,ragged-right,fragment,verbatim,relative=0] +@lilypond[quote,ragged-right,verbatim,relative=0] \clef "treble_8" b16 d g b e \textSpannerDown \override TextSpanner #'(bound-details left text) = #"XII " - g16\startTextSpan - b16 e g e b g\stopTextSpan +g16\startTextSpan +b16 e g e b g\stopTextSpan e16 b g d @end lilypond - @seealso Manuel de notation : @ref{Indication textuelle avec extension}. Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}, -@rlsrnamed{Expressive marks,Signes d'interprétation}. +@rlsrnamed{Fretted strings, Cordes frettées}, +@rlsrnamed{Expressive marks, Signes d'interprétation}. @node Indication des harmoniques et notes étouffées @@ -1446,29 +1691,158 @@ Morceaux choisis : @cindex notes étouffées et cordes frettées @cindex harmoniques et cordes frettées -Des têtes de note spéciales peuvent servir à indiquer les -notes étouffées et les sons harmoniques. Les sons harmoniques sont -souvent détaillés grâce à des indications textuelles. +Des têtes de note spéciales peuvent servir à indiquer les notes +étouffées et les sons harmoniques. Les sons harmoniques sont souvent +détaillés grâce à des indications textuelles. -@lilypond[quote,ragged-right,fragment,verbatim] +@lilypond[quote,ragged-right,verbatim] \relative c' { \clef "treble_8" - \override Staff.NoteHead #'style = #'cross - g8 a b c b4 \override Staff.NoteHead #'style = #'harmonic-mixed d^\markup { \italic { \fontsize #-2 { "harm. 12" }}} 1 } @end lilypond +Les notes étouffées, ou @notation{notes fantômes}, se rencontrent aussi +bien sur une portée normale que dans une tablature : -@seealso -Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@lilypond[quote,ragged-right,verbatim] +music = \relative c' { + < a\3 \deadNote c\2 a'\1 >4 + < b\3 \deadNote d\2 b'\1 > + < c\3 \deadNote e\2 c'\1 > + \deadNotesOn + \times 2/3 { g8 b e } + \deadNotesOff + < a,\3 c\2 e\1 >1 +} +\new StaffGroup << + \new Staff { + \clef "treble_8" + \music + } + \new TabStaff { + \music + } +>> +@end lilypond + +Le @emph{palm mute}, appelé aussi parfois @emph{chop}, est une technique +de jeu pour la guitare électrique ; elle est connue sous le nom de +pizzicato par les joueurs de guitare classique. Elle consiste à poser +la main droite sur les cordes juste au-dessus du chevalet, de façon à +étouffer plus ou moins légèrement les notes. LilyPond permet d'indiquer +ce style de jeu en affectant un profil spécifique aux têtes de note. +@lilypond[quote,ragged-right,verbatim] +\new Voice { % Warning: explicit Voice instantiation is + % required to have palmMuteOff work properly + % when palmMuteOn comes at the beginning of + % the piece. + \relative c, { + \clef "G_8" + \palmMuteOn + e8^\markup { \musicglyph #"noteheads.u2do" = palm mute } + < e b' e > e + \palmMuteOff + e e \palmMute e e e | + e8 \palmMute { e e e } e e e e | + < \palmMute e b' e >8 \palmMute { e e e } < \palmMute e b' e >2 + } +} +@end lilypond + +@seealso Manuel de notation : @ref{Têtes de note spécifiques}, @ref{Têtes de note}. +Morceaux choisis : +@rlsrnamed{Fretted strings, Cordes frettées}. + + +@node Indication de power chord +@unnumberedsubsubsec Indication de @emph{power chord} +@translationof Indicating power chords + +@funindex powerChords +@funindex \powerChords + +@cindex power chords +@cindex chord, power + +Les @emph{power chords} -- terme anglais signifiant littéralement +@qq{accords de puissance} -- s'indiquent aussi bien en mode accord que +dans une construction en accord : + +@lilypond[quote,ragged-right,verbatim] +ChordsAndSymbols = { + \chordmode { + \powerChords + e,,1:1.5 + a,,1:1.5.8 + \set minimumFret = #8 + c,1:1.5 + f,1:1.5.8 + } + \set minimumFret = #5 + 1 + 1 +} +\score { + << + \new ChordNames { + \ChordsAndSymbols + } + \new Staff { + \clef "treble_8" + \ChordsAndSymbols + } + \new TabStaff { + \ChordsAndSymbols + } + >> +} +@end lilypond + +Le symbole de @emph{power chord} est désactivé dès lors que survient un +accord traditionnel : + +@lilypond[quote,ragged-right,verbatim] +mixedChords = \chordmode { + c,1 + \powerChords + b,,1:1.5 + fis,,1:1.5.8 + g,,1:m +} +\score { + << + \new ChordNames { + \mixedChords + } + \new Staff { + \clef "treble_8" + \mixedChords + } + \new TabStaff { + \mixedChords + } + >> +} +@end lilypond + +@seealso +Glossaire musicologique : +@rglos{power chord}. + +Manuel de notation : +@ref{Extension et altération d'accords}, +@ref{Impression des noms d'accord}. + +Morceaux choisis : +@rlsrnamed{Fretted strings, Cordes frettées}. + @node Banjo @subsection Banjo @@ -1478,6 +1852,7 @@ Manuel de notation : * Tablatures pour banjo:: @end menu + @node Tablatures pour banjo @unnumberedsubsubsec Tablatures pour banjo @translationof Banjo tablatures @@ -1487,7 +1862,7 @@ Manuel de notation : LilyPond permet d'écrire des tablatures de base pour le banjo à cinq cordes. Pour ce faire, pensez à utiliser le format de tablature pour -banjo, afin d'avoir le bon nombre de cordes et le bon accordage@tie{}: +banjo, afin d'avoir le bon nombre de cordes et le bon accordage : @c due to crazy intervals of banjo music, absolute pitch is recommended @@ -1520,16 +1895,16 @@ banjo@tie{}: @code{banjo-c-tuning} sol,do,sol,si,ré (gCGBD), @code{banjo-open-dm-tuning} la,ré,fa,la,ré (aDFAD). Ces accordages peuvent être convertis pour banjo à quatre cordes au -moyen de la fonction @code{four-string-banjo}@tie{}: +moyen de la fonction @code{four-string-banjo} : @example \set TabStaff.stringTunings = #(four-string-banjo banjo-c-tuning) @end example - @seealso +Fichiers d'initialisation : +@file{ly/string-tunings-init.ly}. + Morceaux choisis : -@rlsrnamed{Fretted strings,Cordes frettées}. +@rlsrnamed{Fretted strings, Cordes frettées}. -Les accordages prédéfinis du banjo sont contenus dans le fichier -@file{scm/output-lib.scm}. diff --git a/Documentation/fr/notation/input.itely b/Documentation/fr/notation/input.itely index c51ce226d7..3f80483f27 100644 --- a/Documentation/fr/notation/input.itely +++ b/Documentation/fr/notation/input.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: f77212d801fa4603bf596a19cecf5a068f1d9d85 + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude, Valentin Villenave @@ -20,15 +19,16 @@ Nous n'allons pas, dans ce chapitre, parler directement de notation, mais plutôt du contenu des fichiers source et du résultat produit par LilyPond. - @menu * Agencement du code:: * Titres et entêtes:: * Travail sur des fichiers texte:: * Contrôle des sorties:: * Sortie MIDI:: +* Extraction d'informations musicales:: @end menu + @node Agencement du code @section Agencement du code @translationof Input structure @@ -36,7 +36,6 @@ LilyPond. LilyPond traite des fichiers textuels. Ces fichiers portent par convention une extension @code{.ly}. - @menu * Structure d'une partition:: * Plusieurs partitions dans un même ouvrage:: @@ -45,6 +44,7 @@ convention une extension @code{.ly}. * Structure de fichier:: @end menu + @node Structure d'une partition @subsection Structure d'une partition @translationof Structure of a score @@ -52,7 +52,7 @@ convention une extension @code{.ly}. @funindex \score Un bloc @code{\score} contient obligatoirement une seule expression -musicale délimitée par des accolades@tie{}: +musicale délimitée par des accolades : @example \score @{ @@ -66,7 +66,7 @@ bornée par une paire d'accolades.} Cette unique expression musicale peut être de n'importe quelle taille et contenir d'autres expressions musicales aussi complexes soient elles. -Voici quelques exemples d'expression musicale@tie{}: +Voici quelques exemples d'expression musicale : @example @{ c'4 c' c' c' @} @@ -112,19 +112,20 @@ contenue dans un bloc @code{\score}. Lorsqu'un fichier ne comprend qu'un bloc @code{\score}, celui-ci est implicitement inclus dans un bloc @code{\book}. Le bloc @code{\book} d'un fichier source permet la production d'au moins un fichier dont le -nom sera, par défaut, déduit du fichier source@tie{}: le traitement de +nom sera, par défaut, déduit du fichier source : le traitement de @file{fandangopourelephants.ly} produira donc -@file{fandangopourelephants.pdf}. Pour de plus amples informations à -propos du bloc @code{\book}, lisez +@file{fandangopourelephants.pdf}. + +Pour de plus amples informations à propos du bloc @code{\book}, lisez @ref{Plusieurs partitions dans un même ouvrage}, @ref{Plusieurs éditions pour une même source} et @ref{Structure de fichier}. @seealso Manuel d'initiation : -@rlearning{Travail sur les fichiers d'entrée}, +@rlearning{La partition est une (unique) expression musicale composée}, @rlearning{Les expressions musicales en clair}, -@rlearning{La partition est une (unique) expression musicale composée}. +@rlearning{Travail sur les fichiers d'entrée}. @node Plusieurs partitions dans un même ouvrage @@ -173,15 +174,15 @@ résultant. @} @end example -Attention cependant si vous travaillez avec lilypond-book@tie{}: il vous +Attention cependant si vous travaillez avec lilypond-book : il vous faudra explicitement mentionner le bloc @code{\book}, en l'absence de quoi seul le premier @code{\score} ou @code{\markup} apparaîtra après traitement. -L'entête de chaque pièce peut se placer au sein du bloc -@code{\score}@tie{}; le contenu du champ @code{piece} viendra s'imprimer -avant chaque mouvement. De même, le titre de l'ouvrage peut se placer -au sein du bloc @code{\book}. Dans le cas contraire, le contenu du bloc +L'entête de chaque pièce peut se placer au sein du bloc @code{\score} ; +le contenu du champ @code{piece} viendra s'imprimer avant chaque +mouvement. De même, le titre de l'ouvrage peut se placer au sein du +bloc @code{\book}. Dans le cas contraire, le contenu du bloc @code{\header} placé en début de fichier sera utilisé. @example @@ -208,9 +209,9 @@ au sein du bloc @code{\book}. Dans le cas contraire, le contenu du bloc @funindex \bookpart Plusieurs pièces seront regroupées dans un même @qq{chapitre} à l'aide -d'un bloc @code{\bookpart}. Les différentes parties sont séparées par -un saut de page et peuvent comporter un titre à l'instar de l'ouvrage -dès lors que vous y insérez un bloc @code{\header}. +d'un bloc @code{\bookpart}. Ces différents @qq{chapitres} sont séparés +par un saut de page et peuvent comporter un titre à l'instar de +l'ouvrage dès lors que vous y insérez un bloc @code{\header}. @example \bookpart @{ @@ -266,7 +267,7 @@ Ainsi, le fichier @file{huitminiatures.ly} qui contiendrait @} @end example -génèrera +générera @itemize @item @@ -282,6 +283,9 @@ génèrera @subsection Nom des fichiers de sortie @translationof Output file names +@funindex \bookOutputSuffix +@funindex \bookOutputName + LilyPond vous permet de prendre le contrôle dans la dénomination des fichiers que vous voulez générer, quel que soit le moteur de rendu utilisé. @@ -314,7 +318,7 @@ de chaque bloc @code{\book}. @end example La déclaration @code{\bookOutputName} vous permet de définir vous-même -le nom du fichier généré pour un bloc @code{\book}@tie{}: +le nom du fichier généré pour un bloc @code{\book} : @example \book @{ @@ -334,7 +338,7 @@ le nom du fichier généré pour un bloc @code{\book}@tie{}: @} @end example -Le traitement de ce fichier produira@tie{}: +Le traitement de ce fichier produira : @itemize @item @@ -358,20 +362,24 @@ Le traitement de ce fichier produira@tie{}: @funindex \book @funindex \bookpart -Un fichier @code{.ly} peut contenir un certain nombre d'expression de -haut niveau. Les expressions de haut niveau sont les suivantes@tie{}: +Un fichier @code{.ly} peut contenir un certain nombre d'expressions de +haut niveau. Les expressions de haut niveau sont les suivantes : @itemize @item Une définition de sortie, comme @code{\paper}, @code{\midi} et @code{\layout}. Ces définitions, lorsqu'elles se trouvent à un niveau supérieur, s'appliqueront à l'intégralité de l'ouvrage. Si l'une de ces -expression apparaît à plusieurs reprises, la dernière aura préséance. +expression apparaît à plusieurs reprises à un niveau supérieur, les +différents contenus seront combinés, à ceci près qu'en cas de +déclarations conflictuelles, la dernière aura préséance. Des +informations complémentaires sont disponibles à la rubrique +@ref{Le bloc \layout}. @item -Une expression scheme pure, telle que -@w{@code{#(set-default-paper-size@tie{}"a7"@tie{}'landscape)}} ou -@w{@code{#(ly:set-option@tie{}'point-and-click@tie{}#f)}}. +Une expression Scheme pure, telle que +@w{@code{#(set-default-paper-size "a7" 'landscape)}} ou +@w{@code{#(ly:set-option 'point-and-click #f)}}. @item Un bloc @code{\header}, dont le contenu sera de portée globale -- ce qui @@ -390,16 +398,16 @@ The default handler is defined in the init file @file{../scm/lily.scm}. @item Un bloc @code{\book} permet de regrouper naturellement plusieurs mouvements -- autrement dit plusieurs blocs @code{\score} -- dans un -même document. Lorsqu'il y a plusieurs @code{\score}s, LilyPond génère +même document. Lorsqu'il y a plusieurs @code{\score}, LilyPond génère un seul fichier dans lequel les mouvements sont mis les uns à la suite des autres, ce pour chacun des blocs @code{\book} rencontrés. La seule raison qui peut vous demander d'expliciter plusieurs blocs @code{\book} dans un fichier @file{.ly} est lorsque vous avez besoin de générer différents documents à partir d'une même source. La présence explicite d'un bloc @code{\book} est aussi nécessaire lorsque vous travaillez sur -un document lilypond-book qui reprendrait plusieurs @code{\score}s ou -@code{\markup}s dans un même extrait. Vous pouvez modifier ce -comportement à l'aide de la variable @code{toplevel-score-handler} +un document lilypond-book qui reprendrait plusieurs @code{\score} ou +@code{\markup} dans un même extrait. Vous pouvez modifier ce +comportement à l'aide de la variable @code{toplevel-book-handler} placée en tête. @ignore @c FIXME - I cannot read "toplevel-book-handler" in scm/lily.scm -jcm @@ -419,7 +427,7 @@ Une expression musicale telle que @end example Ce bout de code sera placé dans un @code{\score} et intégré à l'ouvrage -en même temps que tous les autres @code{\score}s ou expressions +en même temps que tous les autres @code{\score} ou expressions musicales. En d'autres termes, un fichier qui ne contiendrait que cette simple expression musicale sera traduit en @@ -431,9 +439,10 @@ simple expression musicale sera traduit en @{ c'4 d' e'2 @} @} @} + \layout @{ @} @} - \layout @{ @} - \header @{ @} + \paper @{ @} + \header @{ @} @} @end example @@ -465,13 +474,13 @@ toto = @{ c4 d e d @} @end example Vous pourrez la réutiliser plus loin dans votre fichier en saisissant -simplement @code{\toto}. Le nom des indentificateurs ne doit être +simplement @code{\toto}. Le nom des identificateurs ne doit être formés que de caractères alphabétiques -- sans chiffre ni caractère souligné ou tiret. @end itemize -Voici trois éléments que vous pouvez placer à un niveau supérieur@tie{}: +Voici trois éléments que vous pouvez placer à un niveau supérieur : @example \layout @{ @@ -486,8 +495,8 @@ Voici trois éléments que vous pouvez placer à un niveau supérieur@tie{}: @{ c'4 d' e2 @} @end example -Vous pouvez placer, n'importe où dans votre fichier, les instruction -suivantes@tie{}: +Vous pouvez placer, n'importe où dans votre fichier, les instructions +suivantes : @itemize @item @code{\version} @@ -508,347 +517,1005 @@ Un bloc de commentaire, délimité par @code{%@{ .. %@}}. Vous pouvez insérer des espaces dans votre fichier source afin de lui apporter une meilleure lisibilité. Les espaces superflus sont normalement ignorés. Notez cependant qu'il est des cas où l'espace est -requis pour éviter tout risque d'erreur@tie{}: +requis pour éviter tout risque d'erreur : @itemize @item -Autour d'une accolade, qu'elle soit ouvrant ou fermante ; +Autour d'une accolade, qu'elle soit ouvrant ou fermante ; @item Après chaque commande ou variable, autrement dit tout élément qui -commence par un @code{\}@tie{}; +commence par un @code{\} ; @item Après tout élément qui sera interprété comme une expression Scheme, -autrement dit tout élément qui commence par un @code{#}@tie{}; +autrement dit tout élément qui commence par un @code{#} ; @item -Pour séparer les éléments d'une expression Scheme ; +Pour séparer les éléments d'une expression Scheme ; @item En mode parole -- @code{lyricmode} -- pour séparer les termes des commandes @code{\override} et @code{\set}. Précisons à ce sujet qu'en plus d'ajouter une espace avant et après l'intégralité de la commande, -vous devrez encadrer d'espace le point et le signe égal qu'elle peut +vous devrez encadrer d'espaces le point et le signe égal qu'elle peut contenir, comme dans -@w{@code{\override Score . LyricText #'font-size = #5}}. +@w{@code{\override Score . LyricText #'font-size = #5}}. @end itemize - @seealso Manuel d'initiation : @rlearning{Organisation des fichiers LilyPond}. +Manuel de notation : +@ref{Le bloc \layout}. + @node Titres et entêtes @section Titres et entêtes @translationof Titles and headers La plupart de la musique qui est éditée comporte un titre et le nom de -son compositeur@tie{}; certains ouvrages divulguent beaucoup plus +son compositeur ; certains ouvrages divulguent beaucoup plus d'information. - @menu -* Création de titres:: +* Création de titres et entête ou pied de page:: * Titrages personnalisés:: +* Notes de bas de page:: * Référencement des numéros de page:: * Table des matières:: @end menu -@node Création de titres -@subsection Création de titres -@translationof Creating titles -Des éléments de titrage peuvent s'attacher à un bloc @code{\score}, une -partie -- créée par un bloc @code{\bookpart} -- ou bien un ouvrage -entier créé par un bloc @code{\book}. +@node Création de titres et entête ou pied de page +@subsection Création de titres et entête ou pied de page +@translationof Creating titles headers and footers + +@menu +* Contenu des blocs de titrage:: +* Mise en forme par défaut des titrages:: +* Mise en forme par défaut des entête et pied de page:: +@end menu + -Les différents éléments du titrage sont contenus dans un bloc -@code{\header}. Un ouvrage complet peut comporter@tie{}: +@node Contenu des blocs de titrage +@unnumberedsubsubsec Contenu des blocs de titrage +@translationof Title blocks explained +@c TODO: figure out how \bookpart titles work -@table @code -@funindex dedication -@item dedication -Le dédicataire de l'œuvre, centré en haut de la première page. +Il existe en fait deux types de blocs de titrage : un bloc pour +contenir le titre principal qui doit apparaître avant le tout premier +@code{\score} d'un ouvrage, et un autre attaché à chacun des blocs +@code{\score} qui le composent. Dans les deux cas, les champs qui +composent un bloc de titrage se saisissent dans un bloc @code{\header}. -@funindex title -@item title -Le titre de l'œuvre, centré en dessous de la dédicace. +Lorsque l'ouvrage ne comporte qu'un seul morceau, le bloc @code{\header} +peut se placer en dehors ou au sein même du bloc @code{\score}. -@funindex subtitle -@item subtitle -Le sous-titre, centré sous le titre. +Dans le cas où le bloc @code{\header} est défini à l'intérieur du bloc +@code{\score}, seuls les champs @code{piece} et @code{opus} seront +imprimés. -@funindex subsubtitle -@item subsubtitle -Un niveau supplémentaire de sous-titre, centré en dessous du sous-titre. +@lilypond[papersize=a5,quote,verbatim,noragged-right] +\score { + { c'4 } + \header { + title = "title" % not printed + piece = "piece" + opus = "opus" + } +} +@end lilypond -@funindex poet -@item poet -Le poète, parolier ou librétiste, aligné à gauche en dessous du -deuxième sous-titre. +@funindex print-all-headers +@noindent +Vous pouvez modifier ce comportement et imprimer tous les champs d'un +bloc @code{\header} défini dans un bloc @code{\score} en ajoutant -@funindex instrument -@item instrument -L'instrument, centré en dessous du deuxième sous-titre. Il sera rappelé -sur les pages suivant la première, centré sur la ligne d'entête. +@example +\paper@{ + print-all-headers = ##t +@} +@end example -@funindex composer -@item composer -Le compositeur, aligné à droite en dessous du deuxième sous-titre. +@warning{N'oubliez pas que lorsqu'il est placé à l'intérieur d'un bloc +@code{@bs{}score}, le bloc @code{@bs{}header} doit impérativement se +trouver @strong{à la suite} de l'expression musicale.} -@funindex meter -@item meter -Le libellé du tempo, aligné à gauche sous le poète. +@lilypond[papersize=a5,quote,verbatim,noragged-right] +\header { + title = "SUITE I." + composer = "J. S. Bach." +} -@funindex arranger -@item arranger -L'arrangeur, aligné à droite sous le compositeur. +\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 piece -@item piece -La pièce ou le mouvement, aligné à gauche sous le tempo. +\score { + \new Staff \relative b { + \clef bass + \key g \major + \partial 16 b16 | + 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 opus -@item opus -L'opus ou le numéro au catalogue, aligné à droite sous l'arrangeur. +Tous les champs appartenant au titrage principal d'un ouvrage peuvent se +reporter dans chaque bloc @code{\score} ou être supprimés manuellement : -@cindex page breaks, forcing -@funindex breakbefore -@item breakbefore -Ce commutateur (activé par ##t@tie{}; ##f pour le désactiver) permet de -forcer le saut de page avant d'afficher les titres. +@c KEEP LY +@lilypond[papersize=a5,quote,verbatim,noragged-right] +\book { + \paper { + print-all-headers = ##t + } + \header { + title = "DAS WOHLTEMPERIRTE CLAVIER" + subtitle = "TEIL I" + % Pas de mention spéciale pour cet ouvrage + tagline = ##f + } + \markup { \vspace #1 } + \score { + \new PianoStaff << + \new Staff { s1 } + \new Staff { \clef "bass" s1 } + >> + \header { + title = "PRAELUDIUM I" + opus = "BWV 846" + % Pas de sous-titre pour ce morceau + subtitle = ##f + } + } + \score { + \new PianoStaff << + \new Staff { s1 } + \new Staff { \clef "bass" s1 } + >> + \header { + title = "FUGA I" + subsubtitle = "A 4 VOCI" + opus = "BWV 846" + % Pas de sous-titre pour ce morceau + subtitle = ##f + } + } +} +@end lilypond -@funindex copyright -@item copyright -La notice de droits d'auteur, centrée en pied de la première page. Pour -imprimer le symbole @emph{copyright}, consultez la rubrique -@ref{Codage du texte}. +@seealso +Manuel de notation : +@ref{Structure de fichier}, +@ref{Mise en forme personnalisée des blocs de titrage}. -@funindex tagline -@item tagline -Mention spéciale imprimée en pied de la dernière page. -@end table +@node Mise en forme par défaut des titrages +@unnumberedsubsubsec Mise en forme par défaut des titrages +@translationof Default layout of book and score title blocks -Voici ce que cela peut donner lorsque tout ces champs sont utilisés. -Les différentes commandes mentionnées à la rubrique -@ref{Mise en forme du texte} sont opérationnelles pour tous ces -éléments. +Voici les différentes variables attachées au bloc @code{\header} : @c KEEP LY -@lilypond[quote,verbatim,line-width=11.0\cm] -\paper { - line-width = 9.0\cm - paper-height = 10.0\cm +@lilypond[papersize=a7,quote,verbatim,noragged-right] +\book { + \header { + % Les champs suivants sont centrés + dedication = "Dédicace" + title = "Titre" + subtitle = "Sous-titre" + subsubtitle = "Sous-sous-titre" + % Les champs suivants sont répartis sur une même ligne, et + % le champ "instrument" apparaîtra sue les pages suivantes + instrument = \markup \with-color #green "Instrument" + poet = "Librettiste" + composer = "Compositeur" + % Les champs suivants sont en opposition sur la même ligne + meter = "Tempo" + arranger = "Arrangeur" + % Les champs suivants sont centrés en bas de page + tagline = "« tagline » ou mention spéciale en pied de dernière page" + copyright = "copyright en pied de première page" + } + \score { + { s1 } + \header { + % Les champs suivants sont en opposition sur la même ligne + piece = "Pièce 1" + opus = "Opus 1" + } + } + \score { + { s1 } + \header { + % Les champs suivants sont en opposition sur la même ligne + piece = "Pièce 2 sur la même page" + opus = "Opus 2" + } + } + \pageBreak + \score { + { s1 } + \header { + % Les champs suivants sont en opposition sur la même ligne + piece = "Pièce 3 sue une nouvelle page" + opus = "Opus 3" + } + } } +@end lilypond + +Quelques précisions : + +@itemize +@item +Le nom de l'instrument sera répété en tête de chaque page. + +@item +Seuls seront imprimés les champs @code{piece} et @code{opus} inclus dans +un bloc @code{\score} dès lors que la variable @code{print-all-headers} +reste désactivée (valeur à @code{##f}). + +@item +@c Is the bit about \null markups true? -mp +Les champs d'un bloc @code{\header} qui n'auront pas été alimentés +seront remplacés par un @emph{markup} @code{\null} de façon à ne pas +gaspiller d'espace. + +@item +Par défaut, @code{scoreTitleMarkup} place les champs @code{piece} et +@code{opus} de part et d'autre sur une même ligne. + +@end itemize + +Les possibilités de modifier la mise en forme par défaut sont abordées à +la rubrique @ref{Mise en forme personnalisée des blocs de titrage}. + +@cindex breakbefore +La variable @code{breakbefore} activée dans un bloc @code{\header} situé +dans un bloc @code{\score} force le saut de page avant le morceau +contenu dans ce @code{\score}. Vous pourrez ainsi séparer le titre +principal de la musique. + +@lilypond[papersize=a8landscape,verbatim,noragged-right] \book { \header { - dedication = "dédié à moi-même" - title = \markup \center-column { "Première ligne de titre" "Deuxième - ligne de titre, plus longue" } - subtitle = "un sous-titre," - subsubtitle = #(string-append "sous-sous-titre LilyPond version " -(lilypond-version)) - poet = "Auteur" - composer = \markup \center-column { "compositeur" \small "(1847-1973)" } - texttranslator = "Traduit par" - 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 "ngeur" } - instrument = \markup \bold \italic "instrument" - piece = "Pièce" + title = "This is my Title" + subtitle = "This is my Subtitle" + copyright = "This is the bottom of the first page" + } + \score { + \repeat unfold 4 { e'' e'' e'' e'' } + \header { + piece = "This is the Music" + breakbefore = ##t + } } +} +@end lilypond + +@seealso +Manuel d'initiation : +@rlearning{Organisation des fichiers LilyPond}. + +Manuel de notation : +@ref{Mise en forme personnalisée des blocs de titrage}, +@ref{Structure de fichier}. + +Fichiers d'initialisation : +@file{ly/titling-init.ly}. + + +@node Mise en forme par défaut des entête et pied de page +@unnumberedsubsubsec Mise en forme par défaut des entête et pied de page +@translationof Default layout of headers and footers +Les entête et pied -- @emph{headers} et @emph{footers} -- sont des +lignes de textes qui apparaissent en haut et en bas de chaque page, +indépendamment du texte de l'ouvrage. Ils sont contrôlés par les +variables suivantes, attachées au bloc @code{\paper} : + +@itemize +@item @code{oddHeaderMarkup} -- entête de page impaire +@item @code{evenHeaderMarkup} -- entête de page paire +@item @code{oddFooterMarkup} -- pied de page impaire +@item @code{evenFooterMarkup} -- pied de page paire +@end itemize + +Ces variables @emph{markup} n'accèdent qu'au contenu des champs du bloc +@code{\header} principal, celui qui s'appliquera à tous les blocs +@code{\score} du document. Ces variables sont définies dans le fichier +@file{ly/titling-init.ly}, et sont par défaut : + +@itemize + +@item +les numéros sont placés en haut à gauche (si pair) ou à droite (si +impair) de chaque page à compter de la deuxième ; + +@item +le contenu du champ @code{instrument} est centré en haut de chaque page +à compter de la deuxième ; + +@item +le texte du @code{copyright} est centré au bas de la première page ; + +@item +le @code{tagline} -- mention spéciale -- se place au bas de la dernière +page, ou bien sous le @code{copyright} s'il n'y a qu'une seule page. + +@end itemize + +@lilypond[papersize=a8landscape] +\book { \score { - { c'1 } + \relative c' { + c4 d e f + } + } +} +@end lilypond + +La mention spéciale se modifie en alimentant le champ @code{tagline} au +niveau du bloc @code{\header} principal. + +@lilypond[papersize=a8landscape,verbatim] +\book { + \header { + tagline = "... music notation for Everyone" + } + \score { + \relative c' { + c4 d e f + } + } +} +@end lilypond + +Pour supprimer le @code{tagline}, il suffit de lui assigner la valeur +@code{##f}. + + +@node Titrages personnalisés +@subsection Titrages personnalisés +@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 +* Mise en forme personnalisée des champs de titrage:: +* Mise en forme personnalisée des blocs de titrage:: +* Mise en forme personnalisée des entête et pied de page:: +@end menu + + +@node Mise en forme personnalisée des champs de titrage +@unnumberedsubsubsec Mise en forme personnalisée des champs de titrage +@translationof Custom text formatting for title blocks + +Toutes les commandes de mise en forme d'un @code{\markup} permettent de +personnaliser le texte des entête, pied de page et éléments de titre +contenus dans un bloc @code{\header}. + +@lilypond[quote,verbatim,noragged-right] +\score { + { s1 } + \header { + piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" } + opus = \markup { \italic "(Excerpt)" } + } +} +@end lilypond + +@seealso +Manuel de notation : +@ref{Mise en forme du texte}. + + +@node Mise en forme personnalisée des blocs de titrage +@unnumberedsubsubsec Mise en forme personnalisée des blocs de titrage +@translationof Custom layout for title blocks + +@cindex bookTitleMarkup +@cindex scoreTitleMarkup +@funindex bookTitleMarkup +@funindex scoreTitleMarkup + +L'utilisation de commandes @code{\markup} au sein d'un bloc +@code{\header} permet de modifier aisément l'apparence du texte, +mais n'influence en rien le positionnement précis des éléments de +titrage. L'accès au positionnement des champs de titrage est géré par +les deux variables suivantes, attachées au bloc @code{\paper} : + +@itemize +@item @code{bookTitleMarkup} +@item @code{scoreTitleMarkup} +@end itemize + +Le positionnement des titres, avec les valeurs par défaut de ces +variables @code{\markup}, est illustré à la rubrique +@ref{Mise en forme par défaut des titrages}. + +Voici les réglages par défaut de @code{scoreTitleMarkup}, tels que +définis dans le fichier @file{ly/titling-init.ly} : + +@example +scoreTitleMarkup = \markup @{ \column @{ + \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @} + \fill-line @{ + \fromproperty #'header:piece + \fromproperty #'header:opus + @} +@} +@} +@end example + +Ceci aura donc pour effet de positionner les champs @code{piece} et +@code{opus} sur la même ligne, en opposition : + +@lilypond[quote,verbatim,noragged-right] +\score { + { s1 } + \header { + piece = "PRAELUDIUM I" + opus = "BWV 846" + } +} +@end lilypond + +Voici comment positionner le champ @code{piece}, dont nous modifions +la taille et la graisse, au centre de cette ligne : + +@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 = "pièce1" - opus = "opus1" + piece = "PRAELUDIUM I" + opus = "BWV 846" } } - \markup { - et puis... +} +@end lilypond + +Les champs normalement réservés au bloc de titrage principal seront +reportés au niveau inférieur dès lors que vous aurez activé +l'instruction @code{print-all-headers} au sein du bloc @code{\paper}. +Le principal inconvénient de cette fonction réside dans le fait que les +champs réservés au bloc @code{\header} principal devront être supprimés +dans chacun des blocs @code{\score} de votre fichier source -- voir +@ref{Contenu des blocs de titrage}. + +Afin d'éviter ce désagrément, ajoutez le champ que vous désirez voir +apparaître à la définition de @code{scoreTitleMarkup}. Nous allons, +dans l'exemple suivant, ajouter au @code{scoreTitleMarkup} le champ +@code{composer}, normalement associé au @code{bookTitleMarkup} ; +chaque @code{\score} pourra mentionner un compositeur différent. + +@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 { - { c'1 } + { s1 } \header { - piece = "pièce2" - opus = "opus2" + piece = "MENUET" + composer = "Christian Petzold" + } + } + \score { + { s1 } + \header { + piece = "RONDEAU" + composer = "François Couperin" + } + } +} +@end lilypond + +Rien ne vous empêche de créer votre propre champ personnalisé, puis d'y +faire référence dans la définition du @emph{markup}. + +@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 + +@seealso +Manuel de notation : +@ref{Contenu des blocs de titrage}. + + +@node Mise en forme personnalisée des entête et pied de page +@unnumberedsubsubsec Mise en forme personnalisée des entête et pied de page +@translationof Custom layout for headers and footers + +@c can make-header and make-footer be removed from +@c paper-defaults-init.ly? -mp + +L'utilisation de commandes @code{\markup} au sein d'un bloc +@code{\header} permet de modifier aisément l'apparence du texte, +mais n'influence en rien le positionnement précis des entête et pied +de page. L'accès au positionnement des champs concernés est géré par +les quatre variables suivantes, attachées au bloc @code{\paper} : + +@itemize +@item @code{oddHeaderMarkup} +@item @code{evenHeaderMarkup} +@item @code{oddFooterMarkup} +@item @code{evenFooterMarkup} +@end itemize + +@cindex markup conditionnel +@cindex condition et markup +@cindex on-the-fly +@funindex \on-the-fly + +L'instruction @code{\on-the-fly} au sein d'un @code{\markup} permet +d'ajouter, lorsque certaines conditions sont respectées, des éléments +au texte des entête et pied de page définis dans le bloc @code{\paper}. +En voici la syntaxe : + +@example +@code{variable} = @code{\markup} @{ + ... + @code{\on-the-fly} #@var{procédure} @var{markup} + ... +@} +@end example + +La @var{procédure} est appelée à chaque fois que la commande +@code{\markup} où elle apparaît est évaluée. La @var{procédure} +effectuera un test de conformité particulière et interprètera, autrement +dit imprimera l'argument @var{markup} si et seulement si cette +condition est remplie. + +LilyPond dispose d'ores et déjà d'un certain nombre de procédures : + +@quotation +@multitable {print-page-number-check-first-----} {ce n'est la première page du book--} + +@headitem Nom de la procédure @tab Condition testée + +@item print-page-number-check-first @tab il faut imprimer ce numéro de page. +@item create-page-number-stencil @tab 'print-page-numbers est vrai. +@item print-all-headers @tab 'print-all-headers est vrai. +@item first-page @tab c'est la première page du @emph{book}. +@item (on-page nombre) @tab page number = nombre +@item last-page @tab c'est la dernière page du @emph{book}. +@item not-first-page @tab ce n'est la première page du @emph{book}. +@item part-first-page @tab c'est la première page de la partie. +@item part-last-page @tab c'est la dernière page de la partie. +@item not-single-page @tab cette partie fait plus d'une page. + +@end multitable +@end quotation + +L'exemple suivant illustre la manière de centrer son numéro au bas de +chaque page. Il nous faut tout d'abord annuler la définition de +@code{oddHeaderMarkup} et @code{evenHeaderMarkup} à l'aide d'un +@emph{markup} @code{\null}. Nous redéfinissons ensuite +@code{oddFooterMarkup} pour qu'il contienne le numéro de page, centré. +Enfin, nous appliquons le même paramétrage au @code{\oddFooterMarkup}. + +@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 + +Plusieurs conditions @code{\on-the-fly} mentionnées l'une à la suite de +l'autre se cumulent. Ainsi, par exemple, + +@example + @code{\on-the-fly #first-page} + @code{\on-the-fly #last-page} + @code{@{ \markup ... \fromproperty #'header: ... @}} +@end example + +teste si la sortie tient sur une page unique. + +@seealso +Manuel de notation : +@ref{Contenu des blocs de titrage}, +@ref{Mise en forme par défaut des titrages}. + +fichiers d'initialisation : +@file{../ly/titling-init.ly}. + + +@node Notes de bas de page +@subsection Notes de bas de page +@translationof Creating footnotes + +LilyPond dispose de deux méthodes pour créer des notes de bas de page, +l'une automatisée, et l'autre manuelle. + +@menu +* Considérations générales en matière de note de bas de page:: +* Notes de bas de page automatiques:: +* Notes de bas de page manuelles:: +@end menu + + +@node Considérations générales en matière de note de bas de page +@unnumberedsubsubsec Considérations générales en matière de note de bas de page +@translationof Footnotes overview + +Il est parfois judicieux, notamment lorsqu'une annotation ou un +commentaire gênerait la lecture de la partition, de les reporter en bas +de page. + +Les notes de bas de page automatiques font appel à un compteur +numérique incrémenté automatiquement ; les notes de bas de page +manuelles vous laissent le libre choix de l'appel (l'indicateur). Une +note de bas de page s'applique comme un @code{\tweak} ; elle peut donc +s'attacher directement à un objet graphique créé par la plupart des +éléments musicaux ou événements rattachés. Lorsque ce n'est pas +possible, par exemple sur une barre de mesure ou un changement de +métrique -- l'objet étant alors le résultat d'une modification de +propriété --, les notes de bas de page peuvent être spécifiées en tant +qu'événement musical indépendant et affectant tous les objets d'un +type particulier à un instant particulier. + +Examinons la forme développée d'une commande de note de bas de page : + +@example +\footnote @var{marque} @var{décalage} @var{nom-grob} @var{annotation} +@var{musique} +@end example + +Ses arguments peuvent se définir ainsi : + +@table @var +@item marque +un @emph{markup} ou une chaîne de caractères identifiant l'annotation +tant au niveau de l'appel que de la note qui apparaîtra au bas de la +page. L'absence de cet élément -- ou une valeur de @code{\default} -- +incrémentera le compteur. + +@item décalage +une paire de nombres -- @samp{#(2 . 1)} par exemple -- spécifiant le +décalage de la marque, en abscisse et en ordonnée, par rapport au point +de référence. + +@item nom-grob +le type d'objet à annoter -- @samp{#'Flag} par exemple. Lorsque cet +élément est spécifié, c'est l'objet en question qui servira de point de +référence, même s'il trouve son origine non pas directement dans +l'élément @var{musique} mais dans un objet en résultant. Son absence ou +une valeur de @code{\default} ne permet d'annoter que des objets +directement créés. + +@item annotation +un @emph{markup} ou une chaîne de caractères qui sera reporté au bas de +la page. + +@item musique +l'élément qui fait l'objet du commentaire, qu'il s'agisse d'un +événement musical, de l'un des constituants d'un accord ou d'un +événement rattaché. Bien qu'il ne puisse être omis, il peut être +remplacé par @code{\default}, auquel cas l'annotation ne sera pas +rattachée à une expression musicale particulière, mais plutôt à un +instant précis. L'argument @var{nom-grob} est alors obligatoire pour +sélectionner le type d'objet affecté -- @samp{#'TimeSignature} par +exemple. +@end table + +Tout comme pour la commande @code{\tweak}, lorsqu'un @code{\footnote} +s'applique à un événement rattaché ou à une articulation, il devra être +précédé d'un @code{-} de telle sorte que l'analyseur syntaxique en +attache le résultat à la note ou au silence précédant. + + +@node Notes de bas de page automatiques +@unnumberedsubsubsec Notes de bas de page automatiques +@translationof Automatic footnotes + +@cindex note de bas de page automatique +@cindex bas de page, note automatique + +@funindex \footnote +@funindex footnote + +La commande @code{\footnote} permet de générer automatiquement des notes +de bas de page. Elle requiert quatre arguments : la position +@samp{(x . y)} de l'appel de note, le @var{nom-grob} optionnel +spécifiant l'objet de rendu auquel s'applique le commentaire, +l'@var{annotation} qui apparaîtra au bas de la page, et enfin la +@var{musique} à laquelle se rapporte l'annotation. + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote #'(0.5 . -2) + \markup { La première note } + a'4 b8 + \footnote #'(0.5 . 1) #'Flag + \markup { La troisième note } + e\noBeam c4 d4 + } +} +@end lilypond + +L'annotation d'un accord suit la même règle : + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote #'(1 . -1.25) "Voici un do" c + \footnote #'(2 . -0.25) \markup { \italic "Un mi bémol" } es + \footnote #'(2 . 3) \markup { \bold "Ceci est un sol" } g + >1 } } @end lilypond -Comme nous venons de la voir, vous pouvez multiplier les blocs -@code{\header}. Lorsqu'un même champ apparaît dans plusieurs blocs, -LilyPond utilisera le dernier mentionné@tie{}: +@warning{Lorsque plusieurs notes de bas de page se rapportent à un même +empilement vertical, les notes apparaîtront dans l'ordre vertical des +appels, autrement dit celui positionné le plus haut en premier, et ainsi +de suite.} -@example -\header @{ - composer = "Compositeur" -@} -\header @{ - piece = "Morceau" -@} -\score @{ - \new Staff @{ c'4 @} - \header @{ - piece = "Nouveau morceau" % remplace le précédent - @} -@} -@end example +Voici quelques exemples d'objets annotés automatiquement. Vous pouvez +constater l'agencement des annotations correspondantes avec le copyright +et le pied de page. + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { copyright = \markup { "Copyright 1970" } } + \relative c' { + a'4-\footnote #'(-3 . 0) \markup { \bold Forte } \f + -\footnote #'(0 . 1.5) \markup { A slur } ( + b8)-\footnote #'(0 . -2) \markup { Beam } [ e] + \footnote #'(1 . -1) #'Stem + \markup { \teeny { This is a stem } } + c4 + \footnote #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { A cautionary accidental } + \footnote #'(1 . 1) "The note itself" + dis?4-\footnote #'(0.5 . -0.5) \markup \italic { Slow Down } + _"rit." + } +} +@end lilypond -Lorsque le bloc @code{\header} est défini à l'intérieur du bloc -@code{\score}, seul les champs @code{piece} et @code{opus} seront -imprimés. Attention cependant à toujours placer le bloc @code{\header} -après l'expression musicale. +Une note de bas de page affectant un @code{\markup} de haut niveau +s'introduit par la commande @code{\auto-footnote} : -@lilypond[quote,verbatim,line-width=11.0\cm] -\score { - { c'4 } - \header { - title = "title" % not printed - piece = "piece" - opus = "opus" +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { \auto-footnote "A simple tune" \italic "By me" } + \relative c' { + a'4 b8 e c4 d } } @end lilypond -@funindex print-all-headers -@noindent -Vous pouvez modifer ce comportement et imprimer tous les champs d'un -bloc @code{\header} défini dans un bloc @code{\score} en ajoutant -@example -\paper@{ - print-all-headers = ##t -@} -@end example +@node Notes de bas de page manuelles +@unnumberedsubsubsec Notes de bas de page manuelles +@translationof Manual footnotes -@cindex copyright -@cindex tagline +@cindex note de bas de page manuelle +@cindex bas de page, note manuelle -Les pieds de page sont vides, hormis pour la première page qui portera -la champ @code{copyright} du @code{\header}, et pour la dernière page où -apparaîtra le @code{tagline}. Celui-ci est par défaut @qq{Music -engraving by LilyPond (@var{version})}.@footnote{Afin que l'on sache qui -est capable d'une telle qualité, nous vous saurons gré de ne pas -suprimer cette mention spéciale, autant que faire se peut.} +LilyPond permet aussi de créer des notes de bas de page manuelles : +la commande @code{\footnote} prend alors un argument supplémentaire : +la @var{marque}, qui contient l'appel qui s'attache à la note ou à +l'objet référencé. Contrairement aux notes de bas de page automatiques, +l'annotation en bas de page ne sera pas précédée de la @var{marque} ; +l'indicateur visuel est laissé à l'appréciation de l'utilisateur. +LilyPond ne s'attache ici qu'à faire apparaître l'annotation au bas de +la même page. -Un champ de titrage peut être désactivé@tie{}: +La commande @code{\footnote} s'utilise de la même manière que dans le +cas de notes automatiques. -@example -\header @{ - tagline = ##f - composer = ##f -@} -@end example +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote + "1" #'(0.5 . -2) + \markup { \italic "1. The first note" } + a'4 + b8 + \footnote + \markup { \bold "2" } #'(0.5 . 1) + "2. The second note" + e + c4 + d-\footnote "3" #'(0.5 . -1) "3. Piano" \p + } +} +@end lilypond +L'annotation d'un accord suit la même règle : -@node Titrages personnalisés -@subsection Titrages personnalisés -@translationof Custom headers footers and titles +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote "1" #'(1 . -1.25) "1. C" c + \footnote + \markup { \bold "b" } #'(2 . -0.25) "b. E-flat" es + \footnote "3" #'(2 . 3) \markup { \italic "iii. G" } g + >1 + } +} +@end lilypond -Vous pouvez personnaliser, dans le bloc @code{\paper}, la définition des -variables listées ci-dessous. Leur mise en forme par défaut est -inscrite dans le fichier d'initialisation @file{../ly/titling-init.ly}. +@warning{Lorsque plusieurs notes de bas de page se rapportent à un même +empilement vertical, les notes apparaîtront dans l'ordre vertical des +appels, autrement dit celui positionné le plus haut en premier, et ainsi +de suite.} -@table @code -@funindex bookTitleMarkup -@item bookTitleMarkup -Ce titre est apposé au début du document final. Il comprend normalement -le compositeur et le titre de l'œuvre. +Voici quelques exemples d'objets annotés manuellement. Vous pouvez +constater l'agencement des annotations correspondantes avec le copyright +et le pied de page. -@funindex scoreTitleMarkup -@item scoreTitleMarkup -Ce titre est attaché à un bloc @code{\score}. Il comprend normalement -le nom du mouvement -- le champ @code{piece}. - -@funindex oddHeaderMarkup -@item oddHeaderMarkup -L'entête des pages impaires. - -@funindex evenHeaderMarkup -@item evenHeaderMarkup -L'entête des pages paires. Lorsqu'il n'est pas défini, LilyPond utilise -celui des pages impaires. - -Les entêtes comportent par défaut le nom de l'instrument, au centre, et -le numéro de page, sur le bord extérieur de la page. - -@funindex oddFooterMarkup -@item oddFooterMarkup -Le pied de page impaire. - -@funindex evenFooterMarkup -@item evenFooterMarkup -Le pied de page paire. Lorsqu'il n'est pas défini, LilyPond utilise -celui des pages impaires. - -Par défaut, le pied de la première page comporte la notice de droits -d'auteur, et celui de la dernière page la @qq{mention spéciale} -- le -@code{tagline}. -@end table +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + a'4-\footnote + \markup { \teeny 1 } #'(-3 . 0) + \markup { 1. \bold Forte } \f + -\footnote + \markup { \teeny b } #'(0 . 1.5) + \markup { b. A slur } ( + b8)-\footnote + \markup { \teeny 3 } #'(0 . -2) + \markup { 3. Beam } [ + e] + \footnote + \markup { 4 } #'(1 . -1) #'Stem + \markup { \bold 4. { This is a stem } } + c4 + \footnote + \markup \concat \teeny { "sharp (v)" } + #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { v. A cautionary accidental } + dis?4-\footnote + \markup \concat \teeny { "a" } #'(0.5 . -0.5) + \markup \italic { a. Slow Down } _"rit." + \footnote + \markup { \teeny \musicglyph #"rests.4" } + #'(1.5 . -0.25) + \markup { \null } \breathe + } +} +@end lilypond +L'annotation manuelle d'un @code{\markup} de haut niveau répond à la +syntaxe suivante : -@cindex \paper -@cindex header -@cindex entête -@cindex footer -@cindex pied de page -@cindex mise en page -@cindex titres +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { "A simple tune" \footnote "*" \italic "* By me" } + \relative c' { + a'4 b8 e c4 d4 + } +} +@end lilypond -La définition suivante permt d'obtenir, sur la même ligne, le titre -aligné à gauche et le compositeur aligné à droite. +@seealso +Manuel d'initiation : +@rlearning{Objets et interfaces}. -@example -\paper @{ - bookTitleMarkup = \markup @{ - \fill-line @{ - \fromproperty #'header:title - \fromproperty #'header:composer - @} - @} -@} -@end example +Manuel de notation : +@ref{Commentaires textuels}, +@ref{Indications textuelles}, +@ref{Info-bulle}, +@ref{Mise en forme de la page}, +@ref{Titres et entêtes}. + +Référence des propriétés internes : +@rinternals{FootnoteEvent}, +@rinternals{FootnoteItem}, +@rinternals{FootnoteSpanner}, +@rinternals{Footnote_engraver}. -Les entêtes et pieds de page sont créés respectivement par les fonctions -@code{make-header} and @code{make-footer}, que vous pouvez définir au -sein du bloc @code{\paper}. Leur implémentation est contenue dans les -fichiers d'initialisation @file{ly/paper-defaults-init.ly} et -@file{ly/titling-init.ly}. +@knownissues +Un silence multimesures ne peut se voir affecter une note de bas de +page. -Voici comment centrer le numéro en pied de chaque page@tie{}: +Les notes de bas de page ne peuvent que s'empiler l'une au-dessus de +l'autre ; elles ne seront jamais présentées à la queue leu leu. +Les notes de bas de page peuvent générer des chevauchements quand elles +sont trop nombreuses sur une même page. -@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 +Dès lors que vous utilisez une commande de note de bas de page manuelle, +le bloc @code{\paper} doit contenir la mention +@w{@code{footnote-auto-number = ##f}}. @node Référencement des numéros de page @@ -858,11 +1525,11 @@ Voici comment centrer le numéro en pied de chaque page@tie{}: LilyPond vous permet, à l'aide de la commande @code{\label}, d'insérer des points de référence dans un ouvrage, aussi bien en dehors qu'au fil de la musique. Ce point de référence pourra être ensuite repris à -l'intérieur d'un @emph{markup}@tie{}; vous pourrez même y ajouter le +l'intérieur d'un @emph{markup} ; vous pourrez même y ajouter le numéro de page grâce à la commande de @emph{markup} @code{\page-ref}. @c KEEP LY -@lilypond[verbatim,line-width=11.0\cm] +@lilypond[verbatim,papersize=a8landscape] \header { tagline = ##f } \book { \label #'firstScore @@ -879,15 +1546,15 @@ numéro de page grâce à la commande de @emph{markup} @code{\page-ref}. } @end lilypond -L'instruction @code{\page-ref} prend trois arguments@tie{}: +L'instruction @code{\page-ref} prend trois arguments : @enumerate @item -le point de référence, sous la forme d'un symbole scheme, comme par +le point de référence, sous la forme d'un symbole Scheme, comme par exemple @code{#'firstScore}, @item un @qq{emporte-pièce} afin d'estimer la longueur totale du -@emph{markup}, +@emph{markup}, et @item un texte de remplacement au cas où la référence ne serait pas retrouvée. @@ -900,7 +1567,6 @@ déterminé, LilyPond doit connaître les dimensions de ce @emph{markup}. Vous pouvez, lorsque l'ouvrage contiendra plus de dix pages, stipuler un emporte-pièce sur deux caractères -- soit @code{"00"}. - @predefined @funindex \label @code{\label}, @@ -913,13 +1579,13 @@ emporte-pièce sur deux caractères -- soit @code{"00"}. @subsection Table des matières @translationof Table of contents -La commande @code{\markuplines \table-of-contents} vous permettra de +La commande @code{\markuplist \table-of-contents} vous permettra de générer une table des matières. Les éléments qui la composeront sont créés par la commande @code{\tocItem}, insérée indépendamment ou au sein d'une expression musicale. @verbatim -\markuplines \table-of-contents +\markuplist \table-of-contents \pageBreak \tocItem \markup "Premier mouvement" @@ -943,8 +1609,7 @@ Les @emph{markups} dévolus à la mise en forme de la table des matières se définissent dans le bloc @code{\paper}. Il s'agit par défaut de @code{tocTitleMarkup} pour le titre de la table, et de @code{tocItemMarkup} pour ses éléments -- composés de leur libellé et -numéro de page. Vous pouvez bien entendu personnaliser ces -variables@tie{}: +numéro de page. Vous pouvez bien entendu personnaliser ces variables : @verbatim \paper { @@ -964,7 +1629,7 @@ Notez bien la manière de référencer le libellé et le numéro de page dans la définition de @code{tocItemMarkup}. N'hésitez pas à définir vous-même d'autres commandes et @emph{markups} -afin de construire une table plus élaborée@tie{}: +afin de construire une table plus élaborée : @itemize @item commencez par définir une nouvelle variable de type @code{markup} au @@ -976,8 +1641,7 @@ table à partir de cette variable. @end itemize Dans l'exemple qui suit, nous avons créé un nouveau style d'élément dans -le but de mentionner les actes dans la table des matières d'un -opéra@tie{}: +le but de mentionner les actes dans la table des matières d'un opéra : @verbatim \paper { @@ -993,7 +1657,7 @@ tocAct = (add-toc-item! 'tocActMarkup text)) @end verbatim -@lilypond[line-width=11.0\cm] +@lilypond[line-width=10.0\cm] \header { tagline = ##f } \paper { tocActMarkup = \markup \large \column { @@ -1008,7 +1672,7 @@ tocAct = (add-toc-item! 'tocActMarkup text)) \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \tocAct \markup { Atto Primo } \tocItem \markup { Coro. Viva il nostro Alcide } \tocItem \markup { Cesare. Presti omai l'Egizzia terra } @@ -1020,28 +1684,22 @@ tocAct = @end lilypond L'élément et son numéro de page peuvent se rejoindre par une ligne -pointillée@tie{}: +pointillée : -@lilypond[verbatim,quote] +@lilypond[verbatim,line-width=10.0\cm] \header { tagline = ##f } \paper { tocItemMarkup = \tocItemWithDotsMarkup } \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \tocItem \markup { Allegro } \tocItem \markup { Largo } \markup \null } @end lilypond - -@seealso -Fichiers d'initialisation : -@file{../ly/toc-init.ly}. - - @predefined @funindex \table-of-contents @code{\table-of-contents}, @@ -1049,6 +1707,10 @@ Fichiers d'initialisation : @code{\tocItem}. @endpredefined +@seealso +Fichiers d'initialisation : +@file{../ly/toc-init.ly}. + @node Travail sur des fichiers texte @section Travail sur des fichiers texte @@ -1057,10 +1719,10 @@ Fichiers d'initialisation : @menu * Insertion de fichiers LilyPond:: * Différentes éditions à partir d'une même source:: -* Codage du texte:: -* Affichage de notation au format LilyPond:: +* Caractères spéciaux:: @end menu + @node Insertion de fichiers LilyPond @subsection Insertion de fichiers LilyPond @translationof Including LilyPond files @@ -1069,7 +1731,7 @@ Fichiers d'initialisation : @cindex inclusion de fichiers Lorsqu'un projet prend de l'importance en volume, il est judicieux de le -scinder en plusieurs fichiers, auxquels vous fereez référence avec un +scinder en plusieurs fichiers, auxquels vous ferez référence avec un simple @example @@ -1084,7 +1746,7 @@ pour former le fichier @qq{conducteur}. Les différentes variables définies dans les fichiers séparés seront normalement reprises et utilisables dans le fichier formant le conducteur. Les sections balisées dans les fichiers individuels peuvent être réutilisées en -différents endroit de la partition , comme expliqué à la rubrique +différents endroit de la partition, comme expliqué à la rubrique @ref{Différentes éditions à partir d'une même source}. Lorsque le fichier auquel il est fait référence se trouve dans le même @@ -1092,12 +1754,12 @@ répertoire, donner seulement son nom en argument à la commande @code{\include} suffit. S'il se trouve ailleurs, vous devrez indiquer le chemin d'accès, absolu ou relatif, en respectant toutefois la syntaxe UNIX -- autrement dit, le séparateur de répertoire est une oblique -normale @code{/} et non l'oblique inverse @code{\} de DOS/Windows. Par -exemple, si le fichier @file{truc.ly} se trouve dans le répertoire +normale @code{/} et non l'oblique inverse @code{\} de DOS ou Windows. +Par exemple, si le fichier @file{truc.ly} se trouve dans le répertoire supérieur au répertoire de travail, la ligne devra être @example -\include "../stuff.ly" +\include "../truc.ly" @end example @noindent @@ -1111,22 +1773,23 @@ répertoire courant, vous devrez mentionner ... etc. @end example -Les fichiers à inclure peuvent eux-même contenir des instructions +Les fichiers à inclure peuvent eux-mêmes contenir des instructions @code{\include}. Ces instructions @code{\include} de second niveau ne pourront, par défaut, être interprétées qu'une fois intégrées dans le -fichier principal@tie{}; leur argument doit donc comporter le chemin -relativement au fichier principal et non par rapport au fichier dan -lesquel cette inclusion est mentionnée. Vous pouvez toutefois influer -sur ce comportement à l'aide de l'option @code{-drelative-includes} en -ligne de commande ou en ajoutant une clause -@code{@w{#(ly:set-option 'relative-includes #t)}} en tête du fichier +fichier principal ; leur argument doit donc comporter le chemin +relativement au fichier principal et non par rapport au fichier dans +lequel cette inclusion est mentionnée. Vous pouvez toutefois influer +sur ce comportement à l'aide de l'option @w{@code{-drelative-includes}} +en ligne de commande ou en ajoutant une clause +@code{#(ly:set-option 'relative-includes #t)} en tête du fichier principal. Une fois @code{relative-include} activé, le chemin à suivre pour chacune des commandes @code{\include} sera pris relativement au -fichier qui la contient. +fichier qui la contient. Cette option est vouée à être activée par +défaut dans une future version de LilyPond. Vous pouvez inclure des fichiers dont vous spécifierez le chemin d'accès -sur la ligne de commande au moment de lancer la compilation. L'appel à -ces fichiers ne mentionnerra alors que leur nom. Par exemple, si vous +sur la ligne de commande au moment de lancer la compilation. L'appel à +ces fichiers ne mentionnera alors que leur nom. Par exemple, si vous voulez compiler avec cette méthode le fichier @file{principal.ly} qui inclut des fichiers situés dans le sous-répertoire @file{parties}, placez vous dans le répertoire contenant @file{principal.ly}, puis tapez @@ -1145,17 +1808,17 @@ tout en ayant bien dans @file{principal.ly} Lorsqu'un fichier est voué à être inclus dans nombre de partitions, vous pouvez le placer dans le répertoire de LilyPond @file{../ly}. -Attention@tie{}: ce répertoire varie selon votre installation, comme +Attention : ce répertoire varie selon votre installation, comme indiqué au chapitre @rlearning{Autres sources de documentation}. Ce fichier sera inclus dès lors que vous fournirez uniquement son nom en argument à la fonction @code{\include}. C'est par exemple le cas du fichier de définition particulier @file{gregorian.ly}. Au moment où vous lancez LilyPond, un certain nombre de fichiers se -retrouvent inclus par défaut@tie{}; il suffit d'activer le mode verbeux -en faisant @code{lilypond --verbose} pour s'en rendre compte. Vous +retrouvent inclus par défaut ; il suffit d'activer le mode verbeux +en faisant @w{@code{lilypond --verbose}} pour s'en rendre compte. Vous verrez ainsi défiler, en plus de nombreuses informations, le nom d'un -certain nombre de fichier et de chemins d'accès. Les fichiers les plus +certain nombre de fichiers et de chemins d'accès. Les fichiers les plus important sont mentionnés au chapitre @rlearning{Autres sources de documentation}. Si vous venez à les modifier, rappelez-vous qu'ils seront écrasés à l'installation d'une @@ -1164,15 +1827,12 @@ nouvelle version de LilyPond. Vous trouverez quelques exemples simples d'utilisation de la commande @code{\include} au chapitre @rlearning{Conducteurs et parties}. - @seealso Manuel d'initiation : @rlearning{Autres sources de documentation}, @rlearning{Conducteurs et parties}. - @knownissues - Lorsque vous incluez un fichier qui porte le même nom que l'un des fichiers d'initialisation de LilyPond, le fichier de la distribution de LilyPond aura préséance. @@ -1182,15 +1842,17 @@ LilyPond aura préséance. @subsection Différentes éditions à partir d'une même source @translationof Different editions from one source -Différents mécanismes permettent de générer plusieurs versions d'une +Plusieurs méthodes permettent de générer différentes versions d'une partition à partir d'une même source. Les variables -- ou -idendificateurs -- sont sûrement le moyen le plus simple de combiner de +identificateurs -- sont sûrement le moyen le plus simple de combiner de différente manière des passages relativement longs, alors que les balises permettront de sélectionner de courts fragments selon leur -utilisation. Quelle que soit la méthode utilisée, séparer la notation -de la structure de la partition vous donnera plus de liberté dans -l'agencement de l'ouvrage final, puisque vous ne reviendrez pas sur la -musique qui le compose. +utilisation. + +Quelle que soit la méthode utilisée, séparer la notation de la structure +de la partition vous donnera plus de liberté dans l'agencement de +l'ouvrage final, puisque vous ne reviendrez pas sur la musique qui le +compose. @menu * Utilisation de variables:: @@ -1198,6 +1860,7 @@ musique qui le compose. * Globalisation des réglages:: @end menu + @node Utilisation de variables @unnumberedsubsubsec Utilisation de variables @translationof Using variables @@ -1208,12 +1871,11 @@ Un fragment musical identifié par une variable est réutilisable à divers endroits de la partition, comme nous l'avons vu à la rubrique @rlearning{Organisation du code source avec des variables}. Par exemple, une partition pour chœur @notation{a cappella} comporte souvent -une réduction pour piano reprenant toutes les voix@tie{}; il s'agit de +une réduction pour piano reprenant toutes les voix ; il s'agit de la même musique, et vous ne devrez donc la saisir qu'une seule fois. D'autre part, la musique issue de deux variables peut se combiner sur une seule portée, comme nous l'avons vu à la rubrique -@ref{Regroupement automatique de parties}. Prenons l'exemple -suivant@tie{}: +@ref{Regroupement automatique de parties}. Prenons l'exemple suivant : @lilypond[verbatim,quote] sopranoMusic = \relative c'' { a4 b c b8( a) } @@ -1271,15 +1933,16 @@ rappellerez ensuite, comme indiqué à la rubrique @funindex \tag @funindex \keepWithTag @funindex \removeWithTag +@funindex \pushToTag +@funindex \appendToTag @cindex tag @cindex balise La commande @code{\tag #'@var{partieA}} affecte à une expression musicale le nom @var{partieA}. Les expressions ainsi balisées pourront -être filtrées par la suite, à l'aide de -@code{\keepWithTag@tie{}#'@var{nom}} ou -@code{\removeWithTag@tie{}#'@var{nom}}. Ces filtres fonctionnent de la -manière suivante@tie{}: +être filtrées par la suite, à l'aide de @code{\keepWithTag #'@var{nom}} +ou @code{\removeWithTag #'@var{nom}}. Ces filtres fonctionnent de la +manière suivante : @multitable @columnfractions .5 .5 @headitem Filtre @@ -1287,16 +1950,16 @@ manière suivante@tie{}: @item Musique balisée précédée de @code{\keepWithTag #'@var{nom}} - @tab Musique non balisée et musique balisée par @var{nom} seront - incluses@tie{}; la musique balisée autrement est exclue. + @tab Musique non balisée et musique balisée par @var{nom} seront + incluses ; la musique balisée autrement est exclue. @item Musique balisée précédée de @code{\removeWithTag #'@var{nom}} @tab Musique non balisée et fragments appelés autrement que @var{nom} - seront inclus@tie{}; la musique balisée par @var{nom} est exclue. + seront inclus ; la musique balisée par @var{nom} est exclue. @item -Musiqeu balisée non précédée de @code{\keepWithTag} ou +Musique balisée non précédée de @code{\keepWithTag} ou @code{\removeWithTag} @tab Musique balisée et non balisée seront incluses. @@ -1308,7 +1971,7 @@ Les arguments des commandes @code{\tag}, @code{\keepWithTag} et musicale. Dans l'exemple qui suit, nous obtenons deux versions du même extrait, -l'une pour le conducteur, l'autre pour l'instrumentiste, et qui +l'une pour le conducteur, l'autre pour l'instrumentiste qui, elle, comportera les ornements développés. @lilypond[verbatim,quote] @@ -1328,7 +1991,7 @@ music = \relative g' { @end lilypond @noindent -Il est parfois plus aisé d'exclure des fragments@tie{}: +Il est parfois plus aisé d'exclure des fragments : @lilypond[verbatim,quote] music = \relative g' { @@ -1348,7 +2011,7 @@ music = \relative g' { } @end lilypond -Ce principe de filtrage peut s'appliquer aux articulations, textes, etc. +Ce principe de filtrage peut s'appliquer aux articulations, textes etc. Il suffit de positionner @example @@ -1356,7 +2019,7 @@ Il suffit de positionner @end example @noindent -avant l'articulation ou le texte, comme ici@tie{}: +avant l'articulation ou le texte, comme ici : @example c1-\tag #'doigt ^4 @@ -1368,7 +2031,7 @@ Ceci définira une note avec une indication conditionnelle de doigté ou un texte. Vous pouvez baliser différemment la même expression musicale en -saisissant plusieurs @code{\tag}@tie{}: +saisissant plusieurs @code{\tag} : @lilypond[quote,verbatim] music = \relative c'' { @@ -1383,7 +2046,7 @@ music = \relative c'' { @end lilypond L'application concomitante de plusieurs filtres @code{\removeWithTag} à -la même expression musicale permet d'exclure plusieurs balisages@tie{}: +la même expression musicale permet d'exclure plusieurs balisages : @lilypond[verbatim,quote] music = \relative c'' { @@ -1404,7 +2067,32 @@ expression musicale aboutit à l'exclusion de @b{tous} les balisages. En effet, si le premier filtre exclut tous les autres balisages, l'application du second exclura les effets du premier. +Il peut arriver que vous ayez besoin de raccorder quelque chose en un +point particulier d'une expression musicale. Les commandes +@code{\pushToTag} et @code{\appendToTag} permettent d'insérer du +matériau, qu'il soit antérieur ou postérieur, à des @code{éléments} +d'une construction musicale existante. La musique séquentielle ou +simultanée comporte assurément des @code{éléments} : + +@lilypond[verbatim,quote] +test = { \tag #'here { \tag #'here <> } } + +{ + \pushToTag #'here c' + \pushToTag #'here e' + \pushToTag #'here g' \test + \appendToTag #'here c' + \appendToTag #'here e' + \appendToTag #'here g' \test +} +@end lilypond +Ces deux instructions sont affectées d'une balise, le matériau à +raccorder à chaque instance de la balise, et l'expression balisée. +Ces instructions prennent soin de recopier tout ce qui doit être +modifié, de telle sorte que l'expression @code{\test} originale conserve +tout son sens. + @seealso Manuel d'initiation : @rlearning{Organisation du code source avec des variables}. @@ -1420,7 +2108,6 @@ Manuel de notation : @c Should be deleted? -td @knownissues - Lorsqu'elles comportent des silences, ceux-ci ne seront pas fusionnés si vous imprimez une partition avec les deux sections balisées. @@ -1434,7 +2121,7 @@ si vous imprimez une partition avec les deux sections balisées. @cindex include-settings Vous pouvez regrouper dans un fichier indépendant vos réglages -personnels que vous incluerez au besoin@tie{}: +personnels que vous inclurez au besoin : @example lilypond -dinclude-settings=MES_REGLAGES.ly MA_PARTITION.ly @@ -1446,7 +2133,7 @@ particulières. Selon le fichier de réglages que vous mentionnerez, vous obtiendrez facilement différentes éditions à partir d'une même source quelle qu'elle soit. -Ceete technique peut s'utiliser en combinaison avec des feuilles de +Cette technique peut s'utiliser en combinaison avec des feuilles de styles, comme indiqué au chapitre @rlearning{Feuilles de style}. @seealso @@ -1458,16 +2145,28 @@ Manuel de notation : @ref{Insertion de fichiers LilyPond}. +@node Caractères spéciaux +@subsection Caractères spéciaux +@translationof Special characters + +@cindex caractères spéciaux +@cindex non-ASCII, caractères + +@menu +* Codage du texte:: +* Unicode:: +* Équivalents ASCII:: +@end menu + + @node Codage du texte -@subsection Codage du texte +@unnumberedsubsubsec Codage du texte @translationof Text encoding -@cindex Unicode @cindex UTF-8 -@cindex non-ASCII characters LilyPond utilise le jeu de caractères défini par le consortium Unicode -et la norme ISO/CEI@tie{}10646. Chaque caractère est identifié par un +et la norme ISO/CEI 10646. Chaque caractère est identifié par un nom unique et associé à un point de code, ce qui permet dans l'absolu de couvrir tous les langages. Unicode permet de coder tous les caractères utilisés par toutes les langues écrites du monde. LilyPond utilise le @@ -1482,14 +2181,14 @@ sous-ensemble de points de code unicode en glyphes. LilyPond recourt à la bibliothèque Pango pour assurer le rendu des textes multilingues. LilyPond n'effectue aucune conversion d'encodage que ce soit. Ceci -implique donc que tout texte, qu'il s'agisse d'un titre, de paroles ou -même d'instruction musicale, comportant des caractères non ASCII soit +implique donc que tout texte -- un titre, des paroles ou même une +instruction musicale -- comportant des caractères non ASCII soit codé en UTF-8. Le plus sûr moyen de saisir du texte de la sorte consiste à utiliser un éditeur supportant l'unicode et à enregistrer vos fichier en UTF-8. C'est le cas pour la plupart des éditeurs actuels, que ce soit vim, Emacs, jEdit et GEdit. Tous les systèmes Windows -postérieurs à NT utilisent Unicode en natif@tie{}; même Notepad est -capable d'éditer et sauvegarder un fichie en UTF-8 -- sans parler de +postérieurs à NT utilisent Unicode en natif ; même Notepad est +capable d'éditer et sauvegarder un fichier en UTF-8 -- sans parler de l'excellente alternative qu'est BabelPad. La compilation d'un fichier LilyPond comportant des caractères non ASCII @@ -1500,7 +2199,7 @@ l'erreur FT_Get_Glyph_Name () erreur : invalid argument @end example -Voici un exemple utilisant du texte en cyrilique, en hébreux et en +Voici un exemple utilisant du texte en cyrillique, en hébreux et en portugais. @lilypond[quote] @@ -1528,15 +2227,22 @@ portuguese = \lyricmode { \addlyrics { \portuguese } @end lilypond + +@node Unicode +@unnumberedsubsubsec Unicode +@translationof Unicode + +@cindex Unicode + Lorsque vous avez besoin d'un caractère dont vous connaissez le point de code mais que votre éditeur ne permet pas de saisir directement, vous -pouvez utitliser les instructions @code{\char@tie{}##xhhhh} ou -@code{\char@tie{}#dddd} au sein d'un bloc @code{\markup} -- @code{hhhh} +pouvez utiliser les instructions @code{\char ##xhhhh} ou +@code{\char #dddd} au sein d'un bloc @code{\markup} -- @code{hhhh} et @code{dddd} correspondant respectivement à la valeur hexadécimale ou décimale. Même s'il est inutile de saisir les zéros superflus, il est de bon ton de stipuler les quatre caractères formant la représentation hexadécimale. Évitez cependant l'encodage UTF-8 d'un point de code -après un @code{\char}@tie{}; les encodages UTF-8 comprennent un bit +après un @code{\char} ; les encodages UTF-8 comprennent un bit supplémentaire indiquant le nombre d'octets. Une table de correspondance entre les codes Unicode et le nom des caractères ainsi que leur code hexadécimal est disponible sur le site du consortium @@ -1563,13 +2269,13 @@ dans des paroles et dans du texte indépendant. } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } -\markup { "Copyright 2008--2011" \char ##x00A9 } +\markup { "Copyright 2008--2012" \char ##x00A9 } @end lilypond @cindex copyright Le signe @emph{copyright} dans le champ de titrage consacré s'inscrit de -la manière suivante@tie{}: +la manière suivante : @example \header @{ @@ -1578,36 +2284,58 @@ la manière suivante@tie{}: @end example -@node Affichage de notation au format LilyPond -@subsection Affichage de notation au format LilyPond -@translationof Displaying LilyPond notation +@node Équivalents ASCII +@unnumberedsubsubsec Équivalents ASCII +@translationof ASCII aliases -@funindex \displayLilyMusic +Dès lors que vous aurez inclus la liste de leur équivalent ASCII, +LilyPond reconnaîtra un certain nombre de caractères spéciaux : -La fonction musicale @code{\displayLilyMusic}, disponible uniquement -pour un traitement en ligne de commande, permet d'afficher en -notation LilyPond une expression musicale. Par exemple, +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} -@example -@{ - \displayLilyMusic \transpose c a, @{ c4 e g a bes @} -@} -@end example +\markup "&flqq; – &OE;uvre incomplète… &frqq;" -affichera +\score { + \new Staff { \repeat unfold 9 a'4 } + \addlyrics { + This is al -- so wor -- kin'~in ly -- rics: –_&OE;… + } +} -@example -@{ a,4 cis e fis g @} -@end example +\markup \column { + "The replacement can be disabled:" + "– &OE; …" + \override #'(replacement-alist . ()) "– &OE; …" +} +@end lilypond -LilyPond affichera le résultat sous forme de message en console, au -milieu de toutes les informations de compilation. Afin d'isoler ces -messages et enregistrer le résultat de la fonction -@code{\display@{STUFF@}}, pensez à rediriger la sortie vers un fichier. +L'extension de cette liste est possible aussi bien de manière globale : -@example -lilypond fichier.ly >display.txt -@end example +@lilypond[quote,verbatim] +\paper { + #(add-text-replacements! + '(("100" . "hundred") + ("dpi" . "dots per inch"))) +} +\markup "A 100 dpi." +@end lilypond + +qu'en un point particulier de votre source : + +@lilypond[quote,verbatim] +\markup \replace #'(("100" . "hundred") + ("dpi" . "dots per inch")) "A 100 dpi." +@end lilypond + +@seealso +Manuel de notation : +@ref{Liste des caractères spéciaux}. + +Fichiers d'initialisation : +@file{ly/text-replacements.ly}. @node Contrôle des sorties @@ -1621,13 +2349,13 @@ lilypond fichier.ly >display.txt * Changement des fontes musicales:: @end menu + @node Extraction de fragments musicaux @subsection Extraction de fragments musicaux @translationof Extracting fragments of music -LilyPond vous permet d'extraire des fragments d'une partition à l'instar -du choriste amateur qui alimente son album avec des coupures de -journaux. +LilyPond permet d'extraire des fragments d'une partition à l'instar du +choriste amateur qui alimente son album avec des coupures de journaux. Vous devrez pour cela définir les mesures à découper. La définition suivante, incluse dans votre fichier source, @@ -1645,17 +2373,17 @@ suivante, incluse dans votre fichier source, @noindent vous permettra d'extraire un fragment compris entre le milieu de la cinquième mesure et quelque part dans la septième. Le triplet -@code{5@tie{}1@tie{}2} signifie@tie{}: après la durée d'une blanche dans -la mesure 5@tie{}; le @code{7@tie{}3@tie{}4} signifie quant à lui que -l'on s'arrête à la mesure 7, après la durée de trois noires. +@code{5 1 2} signifie : après la durée d'une blanche dans la mesure 5 ; +le @code{7 3 4} signifie quant à lui que l'on s'arrête à la mesure 7, +après la durée de trois noires. Rien ne vous empêche d'extraire plusieurs fragments, dès lors que vous -définissez dans la liste d'autres paires d'emplacements ryhtmiques. +définissez dans la liste d'autres paires d'emplacements rythmiques. Cette fonctionnalité n'est toutefois effective que lorsque vous lancez -LilyPond avec l'option @code{-dclip-systems}. Les @qq{coupures} seront -générées sous la forme de fichiers EPS, convertis en PDF ou PNG selon le -format que vous aurez stipulé. +LilyPond avec l'option @w{@code{-dclip-systems}}. Les @qq{coupures} +seront générées sous la forme de fichiers EPS, convertis en PDF ou PNG +selon le format que vous aurez stipulé. Pour de plus amples informations quant au format des résultats, consultez le chapitre @rprogram{Lancement de lilypond}. @@ -1689,13 +2417,13 @@ générer. Vous pourriez aussi être amené à retravailler le début d'une œuvre, pour y ajouter une partie par exemple, auquel cas c'est la propriété @code{showFirstLength} que vous utiliserez. -Vous pouvez contrôler très finement les parties à escamoter, grâce u -commutateur @code{Score.skipTypesetting}@tie{}: lorsqu'il est activé, +Vous pouvez contrôler très finement les parties à escamoter, grâce au +commutateur @code{Score.skipTypesetting} : lorsqu'il est activé, aucune gravure n'est réalisée. Ce commutateur agit aussi sur la sortie MIDI. Notez bien que tous les événements seront escamotés, y compris les changements de tempo ou -d'instrument -- vous voilà prévenu@tie{}! +d'instrument -- vous voilà prévenu ! @lilypond[quote,relative=2,ragged-right,verbatim] c8 d @@ -1720,31 +2448,31 @@ de temps. @cindex EPS, format de sortie En matière de partition imprimable, LilyPond génère par défaut des -documents au format PstScript (PS) et Portable Document Format (PDF). +documents au format PostScript (PS) et Portable Document Format (PDF). Vous pouvez aussi obtenir des documents au format Scalable Vector Graphics (SVG), Encapsulated PostScript (EPS) ou Portable Network Graphics (PNG) dès lors que vous aurez lancé LilyPond en ligne de -commande avec l'option @i{ad hoc} -- voir -@rprogram{Options en ligne de commande pour lilypond} à ce sujet. +commande avec l'option @i{ad hoc} -- voir +@rprogram{Utilisation en ligne de commande} à ce sujet. @node Changement des fontes musicales @subsection Changement des fontes musicales @translationof Replacing the notation font -Gonville est ube alternative à la fonte Feta que LilyPond utilise par +Gonville est une alternative à la fonte Feta que LilyPond utilise par défaut. Vous pouvez la télécharger à partir de @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example -Voici quelques mesures utilisant la police Gonville@tie{}: +Voici quelques mesures utilisant la police Gonville : @c NOTE: these images are a bit big, but that's important @c for the font comparison. -gp @sourceimage{Gonville_after,,,} -Et ces même mesures avec la police de LilyPond, Feta@tie{}: +Et ces même mesures avec la police de LilyPond, Feta : @sourceimage{Gonville_before,,,} @@ -1755,43 +2483,46 @@ Et ces même mesures avec la police de LilyPond, Feta@tie{}: Téléchargez puis décompressez l'archive zip. Recopiez le répertoire @code{lilyfonts} dans @file{@var{SHARE_DIR}/lilypond/current} -- voir @rlearning{Autres sources de documentation} à ce sujet. Renommez le -répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis les +répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis le répertoire @code{lilyfonts} en @code{fonts}. Il vous suffira, pour retrouver la fonte Feta, de renommer @code{fonts_orig} en @code{fonts}. - @seealso Manuel d'initiation : @rlearning{Autres sources de documentation}. @knownissues - -Gonville ne permet pas de générer de la notation ancienne. Consultez le -site de l'auteur pour de plus amples informations ainsi qu'à propos des -conditions d'utilisation. +Gonville ne permet pas de générer de la notation ancienne, et certains +glyphes ajoutés depuis lors aux jeux de caractères en soient absent. +Consultez le site de l'auteur pour de plus amples informations ainsi +qu'à propos des conditions d'utilisation. @node Sortie MIDI @section Sortie MIDI @translationof MIDI output +@cindex son +@cindex MIDI + MIDI (Musical Instrument Digital Interface) constitue un standard en matière de connexion et de contrôle des instruments électroniques. Un fichier MIDI contient une série de notes réparties dans différentes -pistes. Il ne s'agit en rien d'un fichier sonore@tie{}; il vous faudra -un logiciel capable de traduire ces séries de notes en sons. +pistes. Il ne s'agit en rien d'un fichier sonore ; il vous faudra +un logiciel capable de traduire ces séries de notes en sons réels. Vous pouvez convertir vos partition en fichier MIDI de manière à entendre ce que vous avez saisi. Ceci vous permet de contrôler aisément -ce que vous avez saisi@tie{}: octaves et altérations erronées heuteront +ce que vous avez saisi : octaves et altérations erronées heurteront votre oreille avertie grâce au MIDI. -@c TODO Check this -Dans une sortie MIDI, LilyPond alloue un canal à chaque portée, plus un -pour les réglages globaux. Par voie de conséquence, un fichier MIDI ne -peut comporter au maximmum que quinze portées (quatorze en l'absence de -percussions)@tie{}; les portées supplémentaires seront tout simplement -silencieuses. +Le fichier MIDI généré par LilyPond est relativement brut. Vous pouvez +cependant obtenir un meilleur rendu avec @ref{Le script Articulate}. + +Dans une sortie MIDI, LilyPond alloue un canal à chaque portée, tout en +réservant le canal 10 aux percussions. Dans la mesure ou un +périphérique MIDI ne comprend que 16 canaux, un fichier MIDI qui +comportera plus de quinze portées verra le même canal réutilisé. @menu * Création de fichiers MIDI:: @@ -1800,6 +2531,7 @@ silencieuses. * Répétitions et MIDI:: * Gestion des nuances en MIDI:: * MIDI et percussions:: +* Le script Articulate:: @end menu @@ -1807,8 +2539,8 @@ silencieuses. @subsection Création de fichiers MIDI @translationof Creating MIDI files -LilyPond génèrera un fichier MIDI dès que vous ajouterez un bloc -@code{\midi} à la structure de votre partition, comme ici@tie{}: +LilyPond générera un fichier MIDI dès que vous ajouterez un bloc +@code{\midi} à la structure de votre partition, comme ici : @example \score @{ @@ -1833,17 +2565,17 @@ un bloc @code{\layout}. Hauteurs, durées, liaisons de prolongation, nuances et changements de tempo seront interprétés et traduits en événements MIDI. Les indications de nuances, crescendos et decrescendos sont traduits en -niveau de volume@tie{}; les indications sous la forme d'une fraction +niveau de volume ; les indications sous la forme d'une fraction déterminée du volume disponible, et crescendos et decrescendos sous la forme d'une progression linéaire entre les deux extrêmes. Le rendu des indications de nuance peut être désactivé pour le MIDI -- voir @ref{Le bloc MIDI}. Le tempo initial ainsi que ses changements sont normalement indiqués au -fil de la notation à l'aide de la commande @code{\tempo}@tie{}; ils -seront retranscrits dans le fichier MIDI. La commande @code{\tempo} -donne lieu à l'impression d'une indication métronomique que vous pouvez -toutefois rendre invisible, comme indiqué à la rubrique +fil de la notation à l'aide de la commande @code{\tempo} ; ils seront +retranscrits dans le fichier MIDI. La commande @code{\tempo} donne lieu +à l'impression d'une indication métronomique que vous pouvez toutefois +rendre invisible, comme indiqué à la rubrique @ref{Indication métronomique}. Une autre manière de spécifier le tempo initial pour un fichier MIDI est indiquée plus avant -- voir @ref{Le bloc MIDI}. @@ -1852,7 +2584,7 @@ En raison de certaines limitations de Windows, les fichiers MIDI doivent y porter l'extension @code{.mid}. D'autres systèmes utilisent l'extension @code{.midi}. Si besoin est, placez la ligne suivante au début de votre fichier source, avant l'ouverture de tout bloc -@code{\book}, @code{\bookpart} ou @code{\score}@tie{}: +@code{\book}, @code{\bookpart} ou @code{\score} : @example #(ly:set-option 'midi-extension "midi") @@ -1861,7 +2593,7 @@ début de votre fichier source, avant l'ouverture de tout bloc Cette ligne déterminera @code{.midi} comme extension par défaut pour les fichiers MIDI. -Vous pouvez aussi le faire en ligne de commande@tie{}: +Vous pouvez aussi le faire en ligne de commande : @example lilypond … -dmidi-extension=midi fichierLily.ly @@ -1875,7 +2607,7 @@ lilypond … -dmidi-extension=midi fichierLily.ly @funindex Staff.midiInstrument L'instrument MIDI affecté à un canal particulier est déterminé par la -propiété @code{Staff.midiInstrument}. Vous pouvez choisr l'un des +propriété @code{Staff.midiInstrument}. Vous pouvez choisir l'un des instruments répertoriés à l'annexe @ref{Instruments MIDI}. @example @@ -1895,14 +2627,11 @@ Lorsque l'instrument choisi ne correspond pas exactement à l'une des dénominations consacrées, LilyPond le replacera par un piano de concert (@code{"acoustic grand"}). - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-midi-output-to-one-channel-per-voice.ly} @knownissues - @c In 2.11 the following no longer seems to be a problem -td @ignore Un (de)crescendo non terminé ne sera pas correctement rendu en MIDI -- @@ -1941,7 +2670,7 @@ est comparable à ce lui du bloc @code{\layout}, voire plus simple. Si le bloc @code{\midi} est la plupart du temps laissé vide, il peut contenir des aménagements pour certains contextes, la définition de contextes particuliers ou du code permettant de déterminer la valeur de -certianes propriétés. L'exemple suivant détermine le tempo initial du +certaines propriétés. L'exemple suivant détermine le tempo initial du fichier MIDI tout en se passant de son indication sur la partition imprimée. @@ -1949,19 +2678,16 @@ imprimée. \score @{ @var{...musique...} \midi @{ - \context @{ - \Score - tempoWholesPerMinute = #(ly:make-moment 72 4) - @} + \tempo 4 = 72 @} @} @end example Ici, le tempo est fixé à 72 noires à la minute. Spécifier un tempo de -la sorte ne permet pas de doner une valeur pour une note pointée. Vous +la sorte ne permet pas de donner une valeur pour une note pointée. Vous devrez, en pareil cas, subdiviser la note pointée en durée plus courte. Par exemple, indiquer 90 à la noire pointée est équivalent à spécifier -270 croches à la minute@tie{}: +270 croches à la minute : @example tempoWholesPerMinute = #(ly:make-moment 270 8) @@ -1991,7 +2717,7 @@ suffit d'insérer les lignes suivantes dans votre bloc @} @end example -LilyPond ne génèrera de sortie MIDI que si vous incluez un bloc +LilyPond ne générera de sortie MIDI que si vous incluez un bloc @code{\midi} dans la structure de la partition, initialisée par la commande @code{\score}. @@ -2023,10 +2749,14 @@ commande @code{\score}. @cindex MIDI, accords nommés @cindex Rythme en MIDI @cindex MIDI, Rythme +@cindex articulations et MIDI +@cindex MIDI et articulations +@cindex trilles et MIDI +@cindex MIDI et trilles @c TODO etc Un fichier MIDI généré par LilyPond comprendra les éléments de notation -suivants@tie{}: +suivants : @itemize @item @@ -2034,7 +2764,7 @@ les hauteurs ; @item les microtonalités -- voir @ref{Altérations}. Leur rendu nécessite -cependant un lecteur qui prenne en charge la modulation@tie{}; +cependant un lecteur qui prenne en charge la modulation ; @item les accords nommés ; @@ -2043,25 +2773,34 @@ les accords nommés ; le rythme en tant que durée de note, y compris les nolets ; @item -les tremolos, exceptés ceux utilisant la syntaxe -@qq{@code{:}[@var{nombre}]}@tie{}; +les trémolos, exceptés ceux utilisant la syntaxe +@qq{@code{:}[@var{nombre}]} ; @item les liaisons de prolongation ; @item -les indications de nuance +les indications de nuance ; @item -les crescendos et decrescendos s'étalant sur plusieurs notes@tie{}; +les crescendos et decrescendos s'étalant sur plusieurs notes ; @item -les changements de tempo indiqués par un @code{\tempo}@tie{}; +les changements de tempo indiqués par un @code{\tempo} ; @item les paroles. @end itemize +Si vous utilisez @ref{Le script Articulate}, d'autres éléments seront +alors inclus : + +@itemize +@item articulations (lié, staccato, etc.), +@item trilles et groupettos, +@item rallentando et accelerando. +@end itemize + @unnumberedsubsubsec Éléments non pris en compte dans le MIDI @translationof Unsupported in MIDI @@ -2069,30 +2808,30 @@ les paroles. @c TODO index as above LilyPond ne peut générer d'événement MIDI pour les éléments -suivant@tie{}: +suivant, sauf à utiliser @ref{Le script Articulate} : @itemize @item -le rythme indiqué sous forme d'annotation (p.ex. @emph{swing})@tie{}; +le rythme indiqué sous forme d'annotation (par ex. @emph{swing}) ; @item les changements de tempo indiqués sous forme d'annotation (sans -@code{\tempo})@tie{}; +@code{\tempo}) ; @item -les staccatos et autres articulations ou ornementations@tie{}; +les staccatos et autres articulations ou ornementations ; @item -les liaisons d'articulation et de prhasé@tie{}; +les liaisons d'articulation et de phrasé ; @item -les crescendos ou decrescendos sur une sele note@tie{}; +les crescendos ou decrescendos sur une seule note ; @item -les tremolos indiqués par la syntaxe @qq{@code{:}[@var{nombre}]}@tie{}; +les trémolos indiqués par la syntaxe @qq{@code{:}[@var{nombre}]} ; @item -la basse chiffrée +la basse chiffrée ; @item les accords en microtonalité. @@ -2104,6 +2843,7 @@ les accords en microtonalité. @translationof Repeats in MIDI @cindex reprises développées +@cindex MIDI et reprises @funindex \unfoldRepeats Au prix de quelques réglages, les reprises de toutes sortes peuvent être @@ -2126,8 +2866,12 @@ en reprises de type @code{unfold}. \bar "|." @end lilypond +Dans une partition comportant plusieurs voix, le développement des +reprises ne sera effectif en MIDI qu'à la condition que ces reprises +soient mentionnée correctement dans @strong{toutes} les voix. + Lorsque l'on veut utiliser @code{\unfoldRepeats} seulement pour le rendu -MIDI, il faut établir deux blocs @code{\score}@tie{}: un pour le MIDI, +MIDI, il faut établir deux blocs @code{\score} : un pour le MIDI, avec des reprises explicites, et l'autre pour la partition, avec des reprises notées sous forme de barres de reprise, de trémolo ou de symboles de pourcentage. Par exemple @@ -2172,7 +2916,7 @@ que vous avez indiqué par @code{\rfz}. Cette indication de nuance n'étant pas répertoriée dans le jeu par défaut, elle ne produira aucun effet en MIDI. Il en sera d'ailleurs de même pour toute indication créée de toute pièce à l'aide de l'instruction -@code{make-dynamic-script}. Voici comment procéder pour ajuster le +@w{@code{make-dynamic-script}}. Voici comment procéder pour ajuster le volume MIDI de ce @notation{rinforzando} que le compositeur a indiqué. La fonction Scheme définit une fraction de 0,9 en cas de @notation{rfz}, et demande d'utiliser la fonction par défaut dans les autre cas. @@ -2201,8 +2945,8 @@ et demande d'utiliser la fonction par défaut dans les autre cas. Si vous étiez amené à devoir modifier l'intégralité du jeu des correspondances, nous vous conseillons d'utiliser la procédure @command{default-dynamic-absolute-volume} contenue dans le fichier -@file{../scm/midi.scm} ansi que la table d'association comme base. Le -dernier exemple de cette partie illustre la manière de procéder. +@file{../scm/midi.scm} ainsi que la table d'association comme base. +Le dernier exemple de cette partie illustre la manière de procéder. @unnumberedsubsubsec Amplitude du volume en MIDI @@ -2211,7 +2955,7 @@ dernier exemple de cette partie illustre la manière de procéder. Les valeurs extrêmes du volume MIDI des nuances se contrôlent à l'aide des propriétés @code{midiMinimumVolume} et @code{midiMaximumVolume} qui agissent au niveau @code{Score}. Ces propriétés sont effectives dès -lors qu'une nuance est indiquée@tie{}; une nuance de départ est donc +lors qu'une nuance est indiquée ; une nuance de départ est donc requise pour que le volume soit ajusté dès le début de la partition. Vous pouvez alors modifier la fraction correspondant à chaque nuance à l'aide de la formule @@ -2221,7 +2965,7 @@ midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction @end example Voici comment ajuster les nuances tout en limitant l'amplitude du volume -entre 0,2 et 0,5@tie{}: +entre 0,2 et 0,5 : @lilypond[verbatim,quote] \score { @@ -2301,10 +3045,7 @@ indication de nuance. >> \layout {} \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } @end lilypond @@ -2325,9 +3066,9 @@ procédure Scheme @code{instrumentEqualizer} au sein du contexte instrument MIDI et renverra une paire de fractions correspondant au minimum et maximum de volume alloué à cet instrument. Cette substitution fonctionne selon le même principe que celui que nous avons -vu en dédut de chapitre avec @code{dynamicAbsoluteVolumeFunction}. +vu en début de chapitre avec @code{dynamicAbsoluteVolumeFunction}. L'égaliseur par défaut, @notation{default-instrument-equalizer}, est -défini dans le fichier @file{../scm/midi.scm}@tie{}; son analyse vous +défini dans le fichier @file{../scm/midi.scm} ; son analyse vous aidera à construire votre propre procédure. Nous allons, dans l'exemple suivant, régler le volume relatif de la @@ -2373,10 +3114,7 @@ flûte et de la clarinette -- au même niveau que dans le précédent. >> \layout { } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } @end lilypond @@ -2418,20 +3156,20 @@ copied out and compiled to test microtones in your MIDI player. La notation pour percussions recourt généralement à un contexte particulier -- le @code{DrumStaff} -- qui permet d'affecter directement -les instruments concernés au canal@tie{}10 qui leur est réservé. +les instruments concernés au canal 10 qui leur est réservé. Certains instruments, tels le xylophone, le marimba, le vibraphone ou les timbales, se traitent cependant comme des instruments @qq{classiques} puisqu'ils sont capables d'émettre des hauteurs -différentes@tie{}; leurs notation relève donc d'un contexte @code{Staff} +différentes ; leurs notation relève donc d'un contexte @code{Staff} standard, et non d'un @code{DrumStaff} pour pouvoir être rendus correctement en MIDI. D'autres percussions, bien que n'émettant qu'un seul son et inclus dans le standard @emph{general MIDI}, comme le tom mélodique ou le tambour -taiko, ne sont pas attachés au canal@tie{}10. Ces instruments doivent +taiko, ne sont pas attachés au canal 10. Ces instruments doivent donc être saisi dans un contexte @code{Staff}, en utilisant la hauteur -appropiée. +appropriée. De nombreux instruments de la famille des percussions, les castagnettes par exemple, n'existent pas dans le standard @emph{general MIDI}. @@ -2441,7 +3179,170 @@ son le plus proche dans la banque standard. @c TODO Expand with examples, and any other issues @knownissues +Le standard @emph{general MIDI} ne dispose pas du @emph{rim shot} ; +LilyPond lui substitue un @emph{sidestick}. + + +@node Le script Articulate +@subsection Le script Articulate +@translationof The Articulate script + +Vous obtiendrez un rendu MIDI plus @qq{réaliste} grâce au script +@code{articulate}. Celui-ci va tout faire pour d'une part prendre en +compte les articulations (liaisons, staccato etc.) -- en ajoutant un +blanc aux notes raccourcies -- et, d'autre part, développer les trilles +ou groupettos ainsi que tenir compte des éventuels rallentando et +accelerando. + +L'utilisation du script @code{articulate} se fait en deux temps. Vous +devez dans un premier temps inclure son fichier d'initialisation en +ajoutant en tête de votre fichier la ligne + +@example +\include "articulate.ly" +@end example + +puis, dans le bloc @code{\score}, indiquer que toutes les répétitions +seront développées et appliquer la commande à votre musique : + +@example +\unfoldRepeats \articulate << + tout le reste du bloc contenant la partition... +>> +@end example + +Une fois votre fichier modifié de la sorte, vous constaterez que la +version imprimable aura été modifiée en profondeur. Le bloc +@code{\midi} produira par contre un fichier MIDI de bien meilleure +qualité. + +Bien que cela ne gène en rien le fonctionnement du script +@code{articulate}, lui adjoindre la commande @code{\unfoldRepeats} comme +illustré ci-dessus permettra le rendu d'un certain nombre +d'articulations tels les trilles. + +@knownissues +Dans la mesure où le script @code{articulate} tend à raccourcir les +accords, certaines musiques, notamment pour l'orgue, paraîtront de moins +bonne qualité. + + +@node Extraction d'informations musicales +@section Extraction d'informations musicales +@translationof Extracting musical information + +En plus de générer du graphisme et du MIDI, LilyPond peut présenter +l'information musicale sous forme textuelle. + +@menu +* Affichage de notation au format LilyPond:: +* Affichage de la musique sous forme d'expression Scheme:: +* Enregistrement d'événements musicaux dans un fichier:: +@end menu + + +@node Affichage de notation au format LilyPond +@subsection Affichage de notation au format LilyPond +@translationof Displaying LilyPond notation + +@funindex \displayLilyMusic + +La fonction musicale @code{\displayLilyMusic} permet d'afficher en +notation LilyPond une expression musicale. Le résultat défilera dans le +terminal après avoir lancé LilyPond en ligne de commande. Par exemple, + +@example +@{ + \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + +affichera + +@example +@{ a,4 cis e fis g @} +@end example -Le standard @emph{general MIDI} ne dispose pas du @emph{rim shot}@tie{}; -LilyPond lui subtitue un @emph{sidestick}. +LilyPond affichera le résultat sous forme de message en console, au +milieu de toutes les informations de compilation. Afin d'isoler ces +messages et enregistrer le résultat de la fonction +@code{\display@{MATÉRIAU@}}, pensez à rediriger la sortie vers un +fichier. + +@example +lilypond fichier.ly > affichage.txt +@end example + +@funindex \void + +Vous noterez que LilyPond ne se contente pas de simplement afficher +l'expression musicale, mais procède aussi à son interprétation -- du +fait que @code{\displayLilyMusic} renvoie l'expression tout en +l'affichant. S'il est bien pratique d'insérer un +@code{\displayLilyMusic} dans une expression musicale pour en obtenir +des informations, l'interprétation de cette expression peut toutefois +être évitée en ajoutant un @code{\void} avant l'instruction : + +@example +@{ + \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + + +@node Affichage de la musique sous forme d'expression Scheme +@subsection Affichage de la musique sous forme d'expression Scheme +@translationof Displaying scheme music expressions + +Voir @rextend{Affichage d'expressions musicales}. + +@node Enregistrement d'événements musicaux dans un fichier +@subsection Enregistrement d'événements musicaux dans un fichier +@translationof Saving music events to a file + +LilyPond vous permet de sauvegarder dans un fichier séparé, sur la base +de la portée, les événements musicaux. Vous devrez pour ce faire +inclure dans votre fichier maître un fichier d'initialisation +spécifique : + +@example +\include "event-listener.ly" +@end example + +Pour chaque portée que comporte votre partition, vous obtiendrez un +fichier @file{NOMFICHIER-PORTÉENOMMÉE.notes} ou +@file{NOMFICHIER-unnamed-staff.notes}. Notez bien que si plusieurs +portées ne sont pas explicitement nommées, tous leurs événements seront +regroupés et mélangés dans le même fichier. Le résultat ressemblera à +ceci : + +@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 + +Il s'agit d'un tableau dont les colonnes sont délimitées par une +tabulation. Chaque ligne comporte deux champs fixes suivis d'un certain +nombre de paramètres optionnels. + +@example +@var{temps} @var{type} @var{...paramètres...} +@end example + +Ces informations peuvent faire l'objet d'un retraitement par d'autres +programmes, comme des scripts python, aux fins de recherche en analyse +musicologique ou des expériences à partir du rendu de LilyPond. + +@knownissues +Tous les événements ne sont pas pris en charge par +@file{event-listener.ly}. Il s'agit en premier lieu d'une +démonstration, un @qq{proof of concept} du potentiel de LilyPond. Si +certains des éléments que vous cherchez à obtenir n'apparaissent pas, +recopiez le fichier @file{event-listener.ly} dans votre répertoire et +modifiez-le de telle sorte qu'il travaille selon vos attentes. diff --git a/Documentation/fr/notation/keyboards.itely b/Documentation/fr/notation/keyboards.itely index 9a0ed9e987..70407804d2 100644 --- a/Documentation/fr/notation/keyboards.itely +++ b/Documentation/fr/notation/keyboards.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: Jean-Charles Malahieude, John Mandereau @@ -33,6 +32,7 @@ multiples concerne aussi des instruments qui en sont dépourvus. * Harpe:: @end menu + @node Vue d'ensemble des claviers @subsection Vue d'ensemble des claviers @translationof Common notation for keyboards @@ -48,14 +48,11 @@ de notation pour la plupart des instrument à cordes multiples. * Hampes et changements de portée:: @end menu + @node Généralités sur les instruments à clavier @unnumberedsubsubsec Généralités sur les instruments à clavier @translationof References for keyboards -@c untranslated -@c ifnothtml -@c englishref -@c end ifnothtml @cindex piano, système pour @cindex portées pour piano @cindex portées pour instrument à clavier @@ -135,7 +132,6 @@ qui passent d'une voix à l'autre, comme le montre @end itemize - @seealso Manuel d'initiation : @rlearning{Exemple concret}, @@ -147,18 +143,18 @@ Manuel de notation : @ref{Résolution des collisions}, @ref{Saisie de musique en parallèle}, @ref{Doigtés}, -@ref{List of articulations}, +@ref{Liste des signes d'articulation}, @ref{Quadrillage temporel}, @ref{Liaisons de prolongation}, @ref{Arpèges}, @ref{Répétitions en trémolo}. -Référence des propriétés internes : -@rinternals{PianoStaff}. - Morceaux choisis : @rlsrnamed{Keyboards, Claviers}. +Référence des propriétés internes : +@rinternals{PianoStaff}. + @node Changement de portée manuel @unnumberedsubsubsec Changement de portée manuel @@ -232,16 +228,19 @@ Une voix qui change de portée peut entraîner des collisions@tie{}: \voiceOne % Make space for fingering in the cross-staff voice \once\override DynamicLineSpanner #'staff-padding = #3.4 - e''2\p\< d''\> s1*0\! + e''2\p\< d''\> + c1\! } \new Staff = "down" << { \clef bass s4. e,8\rest g,2\rest + c1 } \\ { c8\( g c' \change Staff = "up" e' g' b'-3 a' g'\) + f'1 } >> >> @@ -255,7 +254,6 @@ portée. Lorsque des collisions surviennent en pareil cas, il vous faudra les résoudre, en suivant les directives du chapitre @rlearning{Correction des collisions d'objets}. - @seealso Manuel d'initiation : @rlearning{Correction des collisions d'objets}. @@ -266,12 +264,17 @@ Manuel de notation : @ref{Conservation d'un contexte}. Morceaux choisis : -@rlsr{Keyboards}. +@rlsrnamed{Keyboards,Claviers}. Référence des propriétés internes : @rinternals{Beam}, @rinternals{ContextChange}. +@knownissues +Dans la mesure où l'évitement de collision des ligatures ne fonctionne +pas lorsqu'une ligature automatique prend fin juste avant un changement +de portée, utilisez alors une ligature manuelle. + @node Changement de portée automatique @unnumberedsubsubsec Changement de portée automatique @@ -348,7 +351,6 @@ portée inférieure@tie{}: >> @end lilypond - @seealso Manuel de notation : @ref{Changement de portée manuel}. @@ -409,13 +411,11 @@ commande @code{\showStaffSwitch}@tie{}: >> @end lilypond - @predefined @code{\showStaffSwitch}, @code{\hideStaffSwitch}. @endpredefined - @seealso Morceaux choisis : @rlsrnamed{Keyboards, Claviers}. @@ -433,48 +433,24 @@ Référence des propriétés internes : @cindex distance entre deux portées de piano @funindex Stem -@funindex cross-staff -@funindex length -@funindex flag-style +@funindex \crossStaff +@funindex \autoBeamOff +@funindex Span_stem_engraver -Pour écrire des accords qui enjambent deux portées, on allonge la hampe -de l'accord de l'une des deux portées de façon à ce qu'elle rejoigne -celle de l'autre portée. +Pour écrire des accords qui enjambent deux portées, on allonge, à l'aide +du @code{Span_stem_engraver}, la hampe de l'accord de l'une des deux +portées de façon à ce qu'elle rejoigne celle de l'autre portée. La +gestion des ligatures automatiques requiert alors une attention +particulière ; en effet, une seule portée devrait alors comporter des +ligatures. -@lilypond[verbatim,quote] -\new PianoStaff << - \new Staff { - \relative c' { - f8 e4 d8 d f e4 - } - } - \new Staff { - \relative c' { - << { - \clef bass - % stems may overlap the other staff - \override Stem #'cross-staff = ##t - % extend the stems to reach the other staff - \override Stem #'length = #12 - % do not print extra flags - \override Stem #'flag-style = #'no-flag - % prevent beaming as needed - a8 g4 f8 f bes\noBeam g4 - } - \\ - { - f,2 bes4 c - } >> - } - } ->> -@end lilypond +@lilypondfile[verbatim,quote] +{cross-staff-stems.ly} @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {indicating-cross-staff-chords-with-arpeggio-bracket.ly} - @seealso Morceaux choisis : @rlsrnamed{Keyboards, Claviers}. @@ -493,6 +469,7 @@ Ce chapitre traîte des aspects de la notation directement liés au piano. * Pédales de piano:: @end menu + @node Pédales de piano @unnumberedsubsubsec Pédales de piano @translationof Piano pedals @@ -521,7 +498,6 @@ Ce chapitre traîte des aspects de la notation directement liés au piano. @funindex \treCorde @funindex treCorde - Le piano possède deux pédales, parfois trois, permettant de modifier l'émission du son@tie{}: une pédale de @notation{tenue} (@emph{sustain}), une pédale de @notation{sourdine} (@emph{una corda} ou @@ -605,6 +581,7 @@ Référence des propriétés internes : * Symboles de jeux:: @end menu + @node Symboles de jeux @unnumberedsubsubsec Symboles de jeux @translationof Discant symbols @@ -624,14 +601,12 @@ de symbole a fini par voir le jour afin de faciliter les instructions pour exécuter un morceau. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {accordion-discant-symbols.ly} - @seealso Morceaux choisis : -@rlsr{Keyboards}. +@rlsr{Keyboards, Claviers}. @node Harpe @@ -665,7 +640,7 @@ d'autres chapitres, telles que@tie{}: @item Les harmoniques naturelles sont présentées dans @ref{Harmoniques}. -@item For directional arpeggios and non-arpeggios, see @ref{Arpèges}. +@item L'interprétation des arpeggios est abrodée dans @ref{Arpèges}. @end itemize diff --git a/Documentation/fr/notation/notation-appendices.itely b/Documentation/fr/notation/notation-appendices.itely index e6e8a4c7db..9653d907e3 100644 --- a/Documentation/fr/notation/notation-appendices.itely +++ b/Documentation/fr/notation/notation-appendices.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a 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" +@c \version "2.16.0" @c Translators: Frédéric Chiasson, Jean-Charles Malahieude @@ -19,19 +18,23 @@ @menu * Table des noms d'accord:: * Modificateurs d'accord usuels:: +* Accordages prédéfinis:: * Diagrammes d'accord prédéfinis:: +* Formats de papier prédéfinis:: * Instruments MIDI:: * Liste des couleurs:: * La fonte Feta:: * Styles de tête de note:: -* Text markup commands:: -* Text markup list commands:: +* Commandes pour markup:: +* Commandes pour liste de markups:: +* Liste des caractères spéciaux:: * Liste des signes d'articulation:: * Notes utilisées en percussion:: * Glossaire technique:: * Liste des propriétés de contexte:: * Propriétés de mise en forme:: -* Fonctions musicales:: +* Fonctions musicales prédéfinies:: +* Identificateurs de modification de contexte:: * Types de prédicats prédéfinis:: * Fonctions Scheme:: @end menu @@ -55,7 +58,7 @@ Le tableau suivant indique les différents modificateurs utilisables en mode accords (@code{\chordmode}) qui permettent d'obtenir les structures habituelles d'un certain nombre d'accords. -@multitable @columnfractions .2 .3 .2 .2 +@multitable {Treizieme de dominante} {Treizieme de dominante} {Modificateur(s)} {ExempleExemple} @item @b{Type d'accord} @@ -70,11 +73,11 @@ habituelles d'un certain nombre d'accords. @item Majeur @tab -Tierce mejeure et quinte juste +Tierce majeure et quinte juste @tab @code{5} ou rien @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:5 } @@ -83,11 +86,11 @@ Tierce mejeure et quinte juste @item Mineur @tab -Tierce minaure et quinte juste +Tierce mineure et quinte juste @tab @code{m} ou @code{m5} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m } @@ -100,7 +103,7 @@ Tierce majeure et quinte augmentée @tab @code{aug} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:aug } @@ -113,7 +116,7 @@ Tierce mineure et quinte diminuée @tab @code{dim} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:dim } @@ -126,7 +129,7 @@ Triton majeur et septième mineure @tab @code{7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:7 } @@ -137,9 +140,9 @@ Septième majeure @tab Triton majeur et septième majeure @tab -@code{maj7} or @code{maj} +@code{maj7} ou @code{maj} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj7 } @@ -152,7 +155,7 @@ Triton mineur et septième mineure @tab @code{m7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m7 } @@ -165,7 +168,7 @@ Triton diminué et septième diminuée @tab @code{dim7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:dim7 } @@ -178,7 +181,7 @@ Triton augmenté et septième mineure @tab @code{aug7} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:aug7 } @@ -191,7 +194,7 @@ Triton diminué et septième mineure @tab @code{m7.5-} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m7.5- } @@ -202,11 +205,11 @@ Accord mineur avec septième majeure @tab Triton mineur et septième majeure @tab -@code{maj7.3-} +@code{m7+} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { - c1:maj7.3- + c1:m7+ } @end lilypond @@ -217,7 +220,7 @@ Triton majeur et sixte @tab @code{6} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:6 } @@ -230,7 +233,7 @@ Triton mineur et sixte @tab @code{m6} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m6 } @@ -243,7 +246,7 @@ Septième de dominante et neuvième majeure @tab @code{9} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:9 } @@ -256,7 +259,7 @@ Septième majeure et neuvième majeure @tab @code{maj9} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj9 } @@ -269,7 +272,7 @@ Septième mineure et neuvième majeure @tab @code{m9} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m9 } @@ -282,7 +285,7 @@ Neuvième de dominante et onzième juste @tab @code{11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:11 } @@ -295,7 +298,7 @@ Neuvième majeure et onzième juste @tab @code{maj11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj11 } @@ -308,59 +311,59 @@ Neuvième mineure et onzième juste @tab @code{m11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m11 } @end lilypond @item -Trézième de dominante +Treizième de dominante @tab -Neuvième de dominante et trézième majeure +Neuvième de dominante et treizième majeure @tab @code{13} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:13 } @end lilypond @item -Trézième de dominante +Treizième de dominante @tab -Onzième de dominante et trézième majeure +Onzième de dominante et treizième majeure @tab @code{13.11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:13.11 } @end lilypond @item -Trézième majeure +Treizième majeure @tab -Onzième majeure et trézième majeure +Onzième majeure et treizième majeure @tab @code{maj13.11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:maj13.11 } @end lilypond @item -Trézième mineure +Treizième mineure @tab -Onzièmem mineure et trézième majeure +Onzième mineure et treizième majeure @tab @code{m13.11} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:m13.11 } @@ -373,7 +376,7 @@ Seconde majeure et quinte juste @tab @code{sus2} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:sus2 } @@ -382,31 +385,326 @@ Seconde majeure et quinte juste @item Quarte suspendue @tab -Quarte juste et quqinte juste +Quarte juste et quinte juste @tab @code{sus4} @tab -@lilypond[line-width=3\cm,noragged-right, notime] +@lilypond[line-width=2.8\cm,noragged-right, notime] \chordmode { c1:sus4 } @end lilypond +@item +Power chord (deux voix) +@tab +Quinte juste +@tab +@code{1.5} +@tab +@lilypond[line-width=2.8\cm,noragged-right, notime] +\chordmode { + \powerChords + c1:1.5 +} +@end lilypond + +@item +Power chord (trois voix) +@tab +Quinte juste et octave +@tab +@code{1.5.8} +@tab +@lilypond[line-width=2.8\cm,noragged-right, notime] +\chordmode { + \powerChords + c1:1.5.8 +} +@end lilypond @end multitable +@node Accordages prédéfinis +@appendixsec Accordages prédéfinis +@translationof Predefined string tunings + +La liste suivante répertorie les différents accordages dont LilyPond +dispose. + +@lilypondfile{display-predefined-string-tunings.ly} + + @node Diagrammes d'accord prédéfinis @appendixsec Diagrammes d'accord prédéfinis @translationof Predefined fretboard diagrams La liste suivante répertorie les tablatures prédéfinies pour la guitare. -@lilypondfile{display-predefined-fretboards.ly} +@lilypondfile[line-width=15.5\cm]{display-predefined-fretboards.ly} La liste suivante répertorie les tablatures prédéfinies pour le ukulele. -@lilypondfile{display-predefined-ukulele-fretboards.ly} +@lilypondfile[line-width=15.5\cm]{display-predefined-ukulele-fretboards.ly} + +La liste suivante répertorie les tablatures prédéfinies pour la +mandoline. + +@lilypondfile[line-width=15.5\cm]{display-predefined-mandolin-fretboards.ly} + + +@node Formats de papier prédéfinis +@appendixsec Formats de papier prédéfinis +@translationof Predefined paper sizes + +Les formats de page sont définis dans le fichier @file{scm/paper.scm}. + +@noindent +@strong{La série A @qq{ISO 216}} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "a10" +@tab (26 x 37 mm) +@item "a9" +@tab (37 x 52 mm) +@item "a8" +@tab (52 x 74 mm) +@item "a7" +@tab (74 x 105 mm) +@item "a6" +@tab (105 x 148 mm) +@item "a5" +@tab (148 x 210 mm) +@item "a4" +@tab (210 x 297 mm) +@item "a3" +@tab (297 x 420 mm) +@item "a2" +@tab (420 x 594 mm) +@item "a1" +@tab (594 x 841 mm) +@item "a0" +@tab (841 x 1189 mm) +@end multitable + +@noindent +@strong{La série B @qq{ISO 216}} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "b10" +@tab (31 x 44 mm) +@item "b9" +@tab (44 x 62 mm) +@item "b8" +@tab (62 x 88 mm) +@item "b7" +@tab (88 x 125 mm) +@item "b6" +@tab (125 x 176 mm) +@item "b5" +@tab (176 x 250 mm) +@item "b4" +@tab (250 x 353 mm) +@item "b3" +@tab (353 x 500 mm) +@item "b2" +@tab (500 x 707 mm) +@item "b1" +@tab (707 x 1000 mm) +@item "b0" +@tab (1000 x 1414 mm) +@end multitable + +@noindent +@strong{Deux tailles étendues, définies par la @qq{DIN 476}} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "4a0" +@tab (1682 x 2378 mm) +@item "2a0" +@tab (1189 x 1682 mm) +@end multitable + +@noindent +@strong{La série C standard @qq{ISO 269}} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "c10" +@tab (28 x 40 mm) +@item "c9" +@tab (40 x 57 mm) +@item "c8" +@tab (57 x 81 mm) +@item "c7" +@tab (81 x 114 mm) +@item "c6" +@tab (114 x 162 mm) +@item "c5" +@tab (162 x 229 mm) +@item "c4" +@tab (229 x 324 mm) +@item "c3" +@tab (324 x 458 mm) +@item "c2" +@tab (458 x 648 mm) +@item "c1" +@tab (648 x 917 mm) +@item "c0" +@tab (917 x 1297 mm) +@end multitable + +@noindent +@strong{Formats nord américains} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "junior-legal" +@tab (8.0 x 5.0 in) +@item "legal" +@tab (8.5 x 14.0 in) +@item "ledger" +@tab (17.0 x 11.0 in) +@item "letter" +@tab (8.5 x 11.0 in) +@item "tabloid" +@tab (11.0 x 17.0 in) +@item "11x17" +@tab (11.0 x 17.0 in) +@item "17x11" +@tab (17.0 x 11.0 in) +@end multitable + +@noindent +@strong{Government-letter, défini par le @emph{IEEE Printer Working +Group}, à l'usage des enfants} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "government-letter" +@tab (8 x 10.5 in) +@item "government-legal" +@tab (8.5 x 13.0 in) +@item "philippine-legal" +@tab (8.5 x 13.0 in) +@end multitable + +@noindent +@strong{Formats ANSI} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "ansi a" +@tab (8.5 x 11.0 in) +@item "ansi b" +@tab (17.0 x 11.0 in) +@item "ansi c" +@tab (17.0 x 22.0 in) +@item "ansi d" +@tab (22.0 x 34.0 in) +@item "ansi e" +@tab (34.0 x 44.0 in) +@item "engineering f" +@tab (28.0 x 40.0 in) +@end multitable + +@noindent +@strong{Formats nord américains pour l'architecture} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "arch a" +@tab (9.0 x 12.0 in) +@item "arch b" +@tab (12.0 x 18.0 in) +@item "arch c" +@tab (18.0 x 24.0 in) +@item "arch d" +@tab (24.0 x 36.0 in) +@item "arch e" +@tab (36.0 x 48.0 in) +@item "arch e1" +@tab (30.0 x 42.0 in) +@end multitable + +@noindent +@strong{Formats anciens, toujours en vigueur dans le Royaume Uni} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "statement" +@tab (5.5 x 8.5 in) +@item "half letter" +@tab (5.5 x 8.5 in) +@item "quarto" +@tab (8.0 x 10.0 in) +@item "octavo" +@tab (6.75 x 10.5 in) +@item "executive" +@tab (7.25 x 10.5 in) +@item "monarch" +@tab (7.25 x 10.5 in) +@item "foolscap" +@tab (8.27 x 13.0 in) +@item "folio" +@tab (8.27 x 13.0 in) +@item "super-b" +@tab (13.0 x 19.0 in) +@item "post" +@tab (15.5 x 19.5 in) +@item "crown" +@tab (15.0 x 20.0 in) +@item "large post" +@tab (16.5 x 21.0 in) +@item "demy" +@tab (17.5 x 22.5 in) +@item "medium" +@tab (18.0 x 23.0 in) +@item "broadsheet" +@tab (18.0 x 24.0 in) +@item "royal" +@tab (20.0 x 25.0 in) +@item "elephant" +@tab (23.0 x 28.0 in) +@item "double demy" +@tab (22.5 x 35.0 in) +@item "quad demy" +@tab (35.0 x 45.0 in) +@item "atlas" +@tab (26.0 x 34.0 in) +@item "imperial" +@tab (22.0 x 30.0 in) +@item "antiquarian" +@tab (31.0 x 53.0 in) +@end multitable + +@noindent +@strong{Formats de base PA4} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "pa0" +@tab (840 x 1120 mm) +@item "pa1" +@tab (560 x 840 mm) +@item "pa2" +@tab (420 x 560 mm) +@item "pa3" +@tab (280 x 420 mm) +@item "pa4" +@tab (210 x 280 mm) +@item "pa5" +@tab (140 x 210 mm) +@item "pa6" +@tab (105 x 140 mm) +@item "pa7" +@tab (70 x 105 mm) +@item "pa8" +@tab (52 x 70 mm) +@item "pa9" +@tab (35 x 52 mm) +@item "pa10" +@tab (26 x 35 mm) +@end multitable + +@noindent +@strong{Format utilisé en Asie du Sudest et en Australie} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "f4" +@tab (210 x 330 mm) +@end multitable + +@noindent +@strong{Format spécifique aux courts exemples @code{@@lilypond} de la +documentation, basé sur un A8 à l'italienne.} +@multitable {@code{"government-letter "}} { (abcd x abcd mm)} +@item "a8landscape" +@tab (74 x 52 mm) +@end multitable @node Instruments MIDI @@ -469,13 +767,14 @@ cello lead 6 (voice) @appendixsec Liste des couleurs @translationof List of colors + @subsubheading Couleurs de base La syntaxe appropriée à la gestion des couleurs est traitée au chapitre @ref{Coloration d'objets}. -@cindex Liste des couleurs -@cindex Couleurs, liste +@cindex liste des couleurs +@cindex couleurs, liste @verbatim black white red green @@ -490,13 +789,13 @@ darkcyan darkmagenta darkyellow Les noms de couleur X peuvent s'employer de différentes manières. Un nom de couleur peut s'écrire sous la forme d'un mot composé et sans -espace auquel chaque élément prend un initiale capitalisée (p.ex. +espace auquel chaque élément prend un initiale capitalisée (p. ex. @code{LightSlateBlue}). Il peut aussi s'exprimer sous la forme d'une suite de mots, auquel cas les initiales ne sont pas capitalisées -(p.ex. @code{light@tie{}slate@tie{}blue}). +(p. ex. @code{light slate blue}). Le @emph{gris} accepte aussi bien l'orthographe @qq{grey} que -@qq{gray} (p.ex. @code{DarkSlateGray}). +@qq{gray} (p. ex. @code{DarkSlateGray}). Certains noms peuvent prendre un suffixe numérique, comme @code{LightSalmon4}. @@ -539,7 +838,7 @@ LightGreen @subsubheading Noms de couleur avec suffixe numérique Les couleurs suivantes acceptent un suffixe numérique @var{N} compris -entre 1 et 4. +entre 1 et 4. @verbatim snowN seashellN AntiqueWhiteN bisqueN PeachPuffN @@ -577,17 +876,16 @@ où @var{N} est compris entre 0 et 100. @appendixsec La fonte Feta @translationof The Feta font -@cindex Feta font -@cindex Font, Feta +@cindex Feta, fonte +@cindex fonte Feta Voici, regroupés par type, les différents symboles de la fonte Emmentaler qui peuvent s'inclure directement dans un objet @emph{markup}. Pour ce faire, il suffit d'employer le nom du glyphe, -comme dans @w{@code{g^\markup @{\musicglyph #"scripts.segno" @}}} ou -@w{@code{\markup @{\musicglyph #"five"@}}}. Pour de plus amples +comme dans @code{g^\markup @{\musicglyph #"scripts.segno" @}} ou +@code{\markup @{\musicglyph #"five"@}}. Pour de plus amples informations, reportez-vous au chapitre @ref{Mise en forme du texte}. - @menu * Glyphes de clef:: * Glyphes de métrique:: @@ -605,6 +903,7 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. * Glyphes d'extrémité d'accolade:: * Glyphes de pédale:: * Glyphes d'accordéon:: +* Glyphes de liaison:: * Glyphes de style vaticana:: * Glyphes de style medicaea:: * Glyphes de style Hufnagel:: @@ -612,6 +911,7 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. * Glyphes de style néomensural:: * Glyphes de style Petrucci:: * Glyphes de style Solesmes:: +* Glyphes de style kiévien:: @end menu @@ -621,8 +921,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #clefs +\markuplist \override-lines #'(word-space . 4) + \doc-chars #clefs @end lilypond @@ -632,8 +932,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #timesig +\markuplist \override-lines #'(word-space . 4) + \doc-chars #timesig @end lilypond @@ -643,8 +943,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #numbers +\markuplist \override-lines #'(word-space . 4) + \doc-chars #numbers @end lilypond @@ -654,8 +954,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #accidentals +\markuplist \override-lines #'(word-space . 4) + \doc-chars #accidentals @end lilypond @@ -665,8 +965,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #default-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #default-noteheads @end lilypond @@ -676,8 +976,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #special-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #special-noteheads @end lilypond @@ -687,8 +987,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #shape-note-noteheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #shape-note-noteheads @end lilypond @@ -698,8 +998,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #rests +\markuplist \override-lines #'(word-space . 4) + \doc-chars #rests @end lilypond @@ -709,8 +1009,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #flags +\markuplist \override-lines #'(word-space . 4) + \doc-chars #flags @end lilypond @@ -720,8 +1020,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #dots +\markuplist \override-lines #'(word-space . 4) + \doc-chars #dots @end lilypond @@ -731,8 +1031,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #dynamics +\markuplist \override-lines #'(word-space . 4) + \doc-chars #dynamics @end lilypond @@ -742,8 +1042,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #scripts +\markuplist \override-lines #'(word-space . 4) + \doc-chars #scripts @end lilypond @@ -753,8 +1053,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #arrowheads +\markuplist \override-lines #'(word-space . 4) + \doc-chars #arrowheads @end lilypond @@ -764,8 +1064,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #brackettips +\markuplist \override-lines #'(word-space . 4) + \doc-chars #brackettips @end lilypond @@ -775,8 +1075,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #pedal +\markuplist \override-lines #'(word-space . 4) + \doc-chars #pedal @end lilypond @@ -786,8 +1086,19 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #accordion +\markuplist \override-lines #'(word-space . 4) + \doc-chars #accordion +@end lilypond + + +@node Glyphes de liaison +@unnumberedsubsec Glyphes de liaison +@translationof Tie glyphs + +@lilypond[quote] +\include "font-table.ly" +\markuplist \override-lines #'(word-space . 4) + \doc-chars #ties @end lilypond @@ -797,8 +1108,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #vaticana +\markuplist \override-lines #'(word-space . 4) + \doc-chars #vaticana @end lilypond @@ -808,8 +1119,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #medicaea +\markuplist \override-lines #'(word-space . 4) + \doc-chars #medicaea @end lilypond @@ -819,8 +1130,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #hufnagel +\markuplist \override-lines #'(word-space . 4) + \doc-chars #hufnagel @end lilypond @@ -830,8 +1141,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #mensural +\markuplist \override-lines #'(word-space . 4) + \doc-chars #mensural @end lilypond @@ -841,8 +1152,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #neomensural +\markuplist \override-lines #'(word-space . 4) + \doc-chars #neomensural @end lilypond @@ -852,8 +1163,8 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #petrucci +\markuplist \override-lines #'(word-space . 4) + \doc-chars #petrucci @end lilypond @@ -863,11 +1174,22 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}. @lilypond[quote] \include "font-table.ly" -\markuplines \override-lines #'(word-space . 4) - \doc-chars #solesmes +\markuplist \override-lines #'(word-space . 4) + \doc-chars #solesmes @end lilypond +@node Glyphes de style kiévien +@unnumberedsubsec Glyphes de style kiévien +@translationof Kievan Notation glyphs + +@lilypond[quote] +\include "font-table.ly" +\markuplist \override-lines #'(word-space . 4) + \doc-chars #kievan +@end lilypond + + @node Styles de tête de note @appendixsec Styles de tête de note @translationof Note head styles @@ -877,36 +1199,58 @@ Voici les différents styles de tête de note disponibles. @lilypondfile[noindent]{note-head-style.ly} -@node Text markup commands -@appendixsec Text markup commands +@node Commandes pour markup +@appendixsec Commandes pour markup @translationof Text markup commands Les commandes suivantes peuvent être utilisées dans un bloc -@code{\markup @{ @}}. +@code{\markup @{ @}}. @include markup-commands.tely -@node Text markup list commands -@appendixsec Text markup list commands +@node Commandes pour liste de markups +@appendixsec Commandes pour liste de markups @translationof Text markup list commands Les commandes suivantes peuvent être utilisées dans un -bloc @code{\markuplines @{ @}}. +bloc @code{\markuplist @{ @}}. @include markup-list-commands.tely +@node Liste des caractères spéciaux +@appendixsec Liste des caractères spéciaux +@translationof List of special characters + +Voici une table des caractères spéciaux disponibles. Pour plus de +précisions, voir @ref{Équivalents ASCII}. + +Cette liste utilise la syntaxe HTML, à l'instar de la plupart des +caractères qui la composent ; les autres sont inspirés du langage +@LaTeX{}. + +Les caractères sont ici inclus dans une boîte, de façon à mettre leur +taille en évidence, et un léger décalage a été appliqué pour les +décoller de l'encadrement. + +@lilypond[quote] +\include "special-characters.ly" +@end lilypond + + @node Liste des signes d'articulation @appendixsec Liste des signes d'articulation @translationof List of articulations @cindex accent +@cindex circulus @cindex marcato @cindex staccatissimo @cindex espressivo @cindex point d'orgue @cindex point d'arrêt +@cindex flageolet @cindex staccato @cindex portato @cindex tenuto @@ -914,7 +1258,7 @@ bloc @code{\markuplines @{ @}}. @cindex pousser l'archet @cindex bouché @cindex sourdine -@cindex orgue, marque de pédale d' +@cindex orgue, marque de pédale @cindex grupetto @cindex ouvert @cindex flageolet @@ -925,12 +1269,13 @@ bloc @code{\markuplines @{ @}}. @cindex pouce @cindex segno @cindex coda +@cindex snappizzicato @cindex varcoda @cindex pointe @cindex talon Voici la liste exhaustive des symboles prédéfinis et que vous pouvez -attacher à une note (p.ex. @code{c\accent})@tie{}: +attacher à une note (p. ex. @code{c\accent}) : @c Articulations and ornamentations @c Fingering instructions (for "thumb") @@ -941,7 +1286,6 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: @c Custom percussion staves (for "halfopen" -- not yet funindexed) @c References for wind instruments (for "open"/"stopped" -- not yet funindexed) - @menu * Scripts d'articulation:: * Scripts d'ornement:: @@ -961,6 +1305,7 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: \new RhythmicStaff { \scriptStaff #articulations } @end lilypond + @node Scripts d'ornement @unnumberedsubsec Scripts d'ornement @translationof Ornament scripts @@ -970,6 +1315,7 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: \new RhythmicStaff { \scriptStaff #ornaments } @end lilypond + @node Scripts de point d'orgue et point d'arrêt @unnumberedsubsec Scripts de point d'orgue et point d'arrêt @translationof Fermata scripts @@ -979,6 +1325,7 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: \new RhythmicStaff { \scriptStaff #fermatas } @end lilypond + @node Scripts spécifiques à certains instruments @unnumberedsubsec Scripts spécifiques à certains instruments @translationof Instrument-specific scripts @@ -988,6 +1335,7 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: \new RhythmicStaff { \scriptStaff #instrument-specific } @end lilypond + @node Scripts de reprise et de répétition @unnumberedsubsec Scripts de reprise et de répétition @translationof Repeat sign scripts @@ -997,6 +1345,7 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: \new RhythmicStaff { \scriptStaff #repeats } @end lilypond + @node Scripts pour musique ancienne @unnumberedsubsec Scripts pour musique ancienne @translationof Ancient scripts @@ -1012,28 +1361,393 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: @appendixsec Notes utilisées en percussion @translationof Percussion notes +@cindex percussions, nom des notes @lilypondfile[quote]{percussion-chart.ly} - @node Glossaire technique @appendixsec Glossaire technique @translationof Technical glossary -@untranslated +Ce glossaire regroupe les termes techniques et concepts utilisés en +interne par LilyPond. Ils apparaissent aussi bien dans les manuels, que +sur les listes de diffusion et dans le code source. + +@menu +* alist (liste associative):: +* callback (rappel):: +* closure (clôture):: +* glyphe:: +* grob (objet graphique):: +* inaltérable:: +* interface:: +* lexer (analyseur lexical):: +* altérable:: +* output-def (définition de sortie):: +* parser (analyseur syntaxique):: +* variable de l'analyseur grammatical:: +* prob (objet de propriété):: +* clôture simple:: +* smob (objet Scheme):: +* stencil:: +@end menu + + +@node alist (liste associative) +@unnumberedsubsec alist (liste associative) +@translationof alist + +@cindex alist +@cindex liste associative + +Une liste associative -- @strong{alist} pour @emph{association list} -- +est une paire Scheme qui associe une valeur à une clé : +@code{(clé . valeur)}. Le fichier @file{scm/lily.scm} contient par +exemple une @emph{alist} @w{@qq{type-p-name-alist}} qui associe certains +types de prédicat (p. ex. @code{ly:music?}) à des noms (p. ex. +@qq{music}) de telle sorte qu'une erreur lors d'un contrôle de typage +puisse être rapportée en console avec mention du type de prédicat +attendu. + + +@node callback (rappel) +@unnumberedsubsec callback (rappel) +@translationof callback + +@cindex callback +@cindex rappel + +Un @strong{rappel}, @emph{callback} en anglais, est une routine, +fonction ou méthode qui est passée en argument à une autre fonction. +Cette dernière peut alors faire usage de cette fonction de rappel comme +de n'importe quelle autre fonction, alors qu'elle ne la connaît pas par +avance. Cette façon de procéder permet à des couches logicielles de bas +niveau d'appeler des fonctions définies à des niveaux plus élevés. +LilyPond utilise abondamment les @emph{callbacks} afin que le code +Scheme saisi par l'utilisateur puisse définir les actions de bas niveau +à opérer. + + +@node closure (clôture) +@unnumberedsubsec closure (clôture) +@translationof closure + +@cindex clôture +@cindex simple closure + +En Scheme, une @strong{clôture} (en anglais, @emph{closure}) est créée +lorsqu'une fonction, généralement une expression lambda, est passée en +tant que variable. La clôture comporte, en plus du code de la fonction, +des références à des variables libres dans l'environnement lexical -- +variables utilisées dans l'expression mais définies ailleurs. Lorsque +la fonction est par la suite appliquée aux différents arguments, les +références aux variables libres, capturées par la clôture, permettent +d'obtenir la valeur de ces variables libres qui sera utilisée lors des +calculs. L'une des propriétés intéressantes des clôtures est la +rétention de la valeur de variables internes tout au long des +différentes invocations, leur état étant alors persistant. + +Une @strong{clôture simple} -- @emph{simple closure} en anglais -- est +une clôture ne comportant pas de variable libre, et donc pas de +référence à des variables libres. + +Une clôture simple est représentée dans LilyPond par un objet Scheme +(un @emph{smob}) contenant l'expression et la méthode pour appliquer +cette expression à la liste d'arguments qui lui est passée. + + +@node glyphe +@unnumberedsubsec glyphe +@translationof glyph + +@cindex glyphe +@cindex fonte +@cindex type de caractère + +Un @strong{glyphe} est une représentation graphique particulière d'un +caractère typographique ou d'une combinaison de deux caractères formant +une ligature. Un jeu de glyphes aux mêmes style et allure constitue une +fonte ; un jeu de fontes comprenant plusieurs styles et tailles constitue +un type de caractère. + +@seealso +Manuel de notation : +@ref{Fontes}, +@ref{Caractères spéciaux}. + + +@node grob (objet graphique) +@unnumberedsubsec grob (objet graphique) +@translationof grob + +@cindex grob +@cindex graphique, objet +@cindex rendu, objets de +@cindex objets de rendu + +Dans LilyPond, les objets représentants les différents éléments de +notation, comme les têtes de note, hampes, liaisons, doigtés, clefs etc. +sont appelés « objets de rendu » ou objet graphique -- en anglais +@emph{GRaphical OBjects} couramment abrégé en @strong{grob}. Ils sont +représentés par des instances de la classe @code{grob}. + +@seealso +Manuel d'initiation : +@rlearning{Objets et interfaces}, +@rlearning{Conventions de nommage des objets et propriétés}, +@rlearning{Propriétés des objets de rendu}. + +Référence des propriétés internes : +@rinternals{grob-interface}, +@rinternals{All layout objects}. + + +@node inaltérable +@unnumberedsubsec inaltérable +@translationof immutable + +@cindex inaltérables, objets +@cindex inaltérables, propriétés +@cindex propriétés communes + +Un objet est dit @strong{inaltérable} -- @emph{immutable} en anglais -- +dès lors que son état ne peut être modifié après sa création ; les +objets altérables, à l'inverse, peuvent être modifiés après création. + +Pour LilyPond, une propriété est inaltérable ou commune lorsqu'elle +définit les style ou le comportement par défaut d'objets graphiques ; +une telle propriété est partagée par un certain nombre de @emph{grobs}. +En apparente contradiction avec ce que leur nom laisse accroire, de +telles propriétés peuvent être adaptées par @code{\override} et +@code{\revert}. + +@seealso +Manuel de notation : +@ref{altérable}. -@unnumberedsubsec callback -@unnumberedsubsec glyph -@unnumberedsubsec grob + +@node interface @unnumberedsubsec interface -@unnumberedsubsec lexer -@unnumberedsubsec output-def -@unnumberedsubsec parser -@unnumberedsubsec parser variable -@unnumberedsubsec prob -@unnumberedsubsec simple-closure -@unnumberedsubsec smob +@translationof interface + +@cindex interface +@cindex grob-interface +@cindex objet graphique, interface + +Les actions et propriétés communes à plusieurs objets graphiques sont +regroupées dans un objet appelé @code{grob-interface}, ou « interface » +pour faire court. + +@seealso +Manuel d'initiation : +@rlearning{Objets et interfaces}, +@rlearning{Conventions de nommage des objets et propriétés}, +@rlearning{Propriétés listées par interface}. + +Manuel de notation : +@ref{Interfaces de rendu}. + +Référence des propriétés internes : +@rinternals{Graphical Object Interfaces}. + + +@node lexer (analyseur lexical) +@unnumberedsubsec lexer (analyseur lexical) +@translationof lexer + +@cindex lexer +@cindex analyse lexicale +@cindex Flex + +Un @strong{lexer} est un programme chargé de convertir une séquence de +caractères en une séquence de jetons. Cette opération s'appelle +l'analyse lexicale. L'analyseur lexical de LilyPond convertit le flot +d'information contenu dans un fichier @file{.ly} en flot de jetons qui +pourront être traités lors de l'étape suivant, l'analyse +grammaticale abordée à la rubrique @ref{parser (analyseur syntaxique)}. +L'analyseur lexical de LilyPond repose sur @code{Flex} ; les règles +lexicales sont regroupées dans le fichier @file{lily/lexer.ll}. Ce +fichier, partie intégrante des sources, n'est pas distribué avec les +programmes binaires de LilyPond. + + +@node altérable +@unnumberedsubsec altérable +@translationof mutable + +@cindex altérables, objets et propriétés +@cindex propriétés altérables +@cindex objets altérables + +Un objet est dit @strong{altérable} -- @emph{mutable} en anglais -- +lorsque son état est sujet à modification après sa création, à l'inverse +des objets inaltérables dont l'état est figé dès leur création. + +Les propriétés altérables contiennent, pour LilyPond, des valeurs +spécifiques à un objet graphique. En particulier, les listes d'autres +objets ou résultats de calculs sont enregistrés sous dorme de propriétés +altérables. + +@seealso +Manuel de notation : +@ref{inaltérable}. + + +@node output-def (définition de sortie) +@unnumberedsubsec output-def (définition de sortie) +@translationof output-def + +@cindex output-def +@cindex sortie, définition +@cindex définition de sortie + +Une instance de la classe @code{Output-def} contient les méthodes et +structures des données associées à un bloc de sortie. Ces instances +sont créées par les blocs @code{\midi}, @code{\layout} et @code{\paper}. + + +@node parser (analyseur syntaxique) +@unnumberedsubsec parser (analyseur syntaxique) +@translationof parser + +@cindex parser +@cindex analyseur syntaxique +@cindex Bison +@cindex grammaire de LilyPond +@cindex BNF + +Un analyseur syntaxique -- @strong{parser} en anglais -- est un +programme qui analyse la séquence de jetons produite par l'analyseur +lexical pour en déterminer la structure grammaticale. Les jetons sont, +pour ce faire, regroupés progressivement en tronçons plus importants, +selon des règles grammaticales. Lorsque la séquence de jetons est +valide, les produit final est une arborescence de jetons ayant à sa base +le symbole grammatical de début. Dès lors que cette étape n'est pas +concluante, le fichier est déclaré invalide ; un message approprié est +alors émis. Les différents regroupements syntaxiques ainsi que les +règles de construction des regroupements relatifs à la grammaire de +LilyPond sont définis dans le fichier @file{lily/parser.yy} et présentés +selon la forme de Backus-Naur (BNF) à l'annexe +@ref{Grammaire de LilyPond}. Ce fichier est utilisé par le +générateur de @emph{parser} Bison lors de la construction du programme. +Partie intégrante des sources, il n'est pas distribué avec les +programmes binaires de LilyPond. + + +@node variable de l'analyseur grammatical +@unnumberedsubsec variable de l'analyseur grammatical +@translationof parser variable + +@cindex parser, variable +@cindex Scheme, variable +@cindex globale, variable +@cindex afterGraceFraction +@cindex musicQuotes +@cindex mode +@cindex output-count +@cindex output-suffix +@cindex parseStringResult +@cindex partCombineListener +@cindex pitchnames +@cindex toplevel-bookparts +@cindex toplevel-scores +@cindex showLastLength +@cindex showFirstLength + +Il s'agit de variables définies directement en Scheme. Dans la mesure +où leur champ sémantique peut porter à confusion, il est fortement +déconseillé de les utiliser tels quels. + +La modification des valeurs de l'une de ces variables dans un fichier +@file{.ly} sera effective de manière globale. Les valeurs modifiées, +sauf à être explicitement remises à leur état d'origine, affecteront +tous les blocs @code{\score} rencontrés, y compris s'ils proviennent +d'autres fichiers ajoutés par une commande @code{\include}. Ceci peut +avoir des conséquences inattendues et les erreurs qui pourraient en +découler difficiles à localiser dans le cadre d'un projet d'envergure. + +LilyPond utilise les variables suivantes : + +@itemize +@item afterGraceFraction +@item musicQuotes +@item mode +@item output-count +@item output-suffix +@item parseStringResult +@item partCombineListener +@item pitchnames +@item toplevel-bookparts +@item toplevel-scores +@item showLastLength +@item showFirstLength +@end itemize + + +@node prob (objet de propriété) +@unnumberedsubsec prob (objet de propriété) +@translationof prob + +@cindex prob +@cindex propriété objet +@cindex objet de propriété + +Les objets de propriété -- @strong{probs} pour @emph{PRoperty OBjects} +-- sont des instances de la classe @code{Prob}, une classe de base +simple pour les objets qui disposent de de listes associatives de +propriétés altérables et inaltérables ainsi que les méthodes pour les +manipuler. Les classes @code{Music} et @code{Stream_event} dérivent +d'un @code{prob}. Les instances de la classe @code{prob} se créent +aussi pour garder trace du contenu des systèmes une fois formatés et +des blocs de titrage lors de la phase de mise en forme des pages. + + +@node clôture simple +@unnumberedsubsec clôture simple +@translationof simple closure + +Voir @ref{closure (clôture)}. + + +@node smob (objet Scheme) +@unnumberedsubsec smob (objet Scheme) +@translationof smob + +@cindex smob +@cindex Scheme, objet +@cindex objet Scheme + +Les objets Scheme -- @strong{Smobs} pour @emph{ScheMe OBjects} -- font +partie du mécanisme utilisé par l'interpréteur Guile pour exporter en +code Scheme les objets C ou C++. Dans LilyPond, les @emph{smobs} sont +créés, grâce à des macros, à partir d'objets C++. On peut distinguer +deux types d'objets @emph{smob} : des @emph{smobs} simples destinés aux +objets inaltérables comme les nombres par exemples, et des @emph{smobs} +complexes utilisés pour des objets possédant une identité. De plus +amples informations sont disponibles dans les sources de LilyPond, au +sein du fichier @file{lily/includes/smob.hh}. + + +@node stencil @unnumberedsubsec stencil +@translationof stencil + +@cindex stencil + +Une instance de la classe @strong{stencil} comporte l'information +nécessaire à l'impression d'un objet typographique. Il s'agit d'un +@emph{smob} simple qui contient un espace de confinement qui définit +l'envergure verticale et horizontale de l'objet ainsi qu'une expression +Scheme qui imprimera l'objet après évaluation. Les stencils peuvent se +combiner et adopter une forme plus complexe définie par une arborescence +d'expressions Scheme des stencils qui la composent. + +La propriété @code{stencil}, qui permet de connecter un @emph{grob} à +son stencil, est définie par l'interface @code{grob-interface}. + +@seealso +Référence des propriétés internes : +@rinternals{grob-interface}. @node Liste des propriétés de contexte @@ -1050,13 +1764,23 @@ attacher à une note (p.ex. @code{c\accent})@tie{}: @include layout-properties.tely -@node Fonctions mucicales -@appendixsec Fonctions mucicales +@node Fonctions musicales prédéfinies +@appendixsec Fonctions musicales prédéfinies @translationof Available music functions @include identifiers.tely +@node Identificateurs de modification de contexte +@appendixsec Identificateurs de modification de contexte +@translationof Context modification identifiers + +Les commandes suivantes permettent de modifier des contextes au sein +d'un bloc @code{\layout} ou @code{\with}. + +@include context-mod-identifiers.tely + + @node Types de prédicats prédéfinis @appendixsec Types de prédicats prédéfinis @translationof Predefined type predicates diff --git a/Documentation/fr/notation/notation.itely b/Documentation/fr/notation/notation.itely index eefb9d653d..ae468687c1 100644 --- a/Documentation/fr/notation/notation.itely +++ b/Documentation/fr/notation/notation.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 531484474ef15eb237ae185373bc95c37d0c0127 + Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7 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" +@c \version "2.16.0" @node Notation musicale générale @chapter Notation musicale générale diff --git a/Documentation/fr/notation/percussion.itely b/Documentation/fr/notation/percussion.itely index 3724d56c74..0a3ab77eb3 100644 --- a/Documentation/fr/notation/percussion.itely +++ b/Documentation/fr/notation/percussion.itely @@ -1,17 +1,17 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: ddf2c9d0e18c6ada1d14d5554f3adb8d972d84d5 + Translation of GIT committish: 8afb2adf0bab372f845ff3eae30e1e950b5c63ca 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" +@c \version "2.16.0" -@c Translators: Valentin Villenave -@c Translation checkers: Jean-Charles Malahieude, John Mandereau +@c Translators: Valentin Villenave, Jean-Charles Malahieude +@c Translation checkers: John Mandereau @node Percussions @section Percussions @@ -21,6 +21,7 @@ * Vue d'ensemble des percussions:: @end menu + @node Vue d'ensemble des percussions @subsection Vue d'ensemble des percussions @translationof Common notation for percussion @@ -29,56 +30,187 @@ La notation rythmique sert avant tout aux parties de percussions ou de batterie, mais on peut aussi s'en servir à des fins pédagogiques, pour montrer le rythme d'une mélodie. - @menu * Références en matière de notation pour percussions:: * Notation de base pour percussions:: +* Roulements de tambour:: +* Hauteurs en percussions:: * Portées de percussion:: +* Personnalisation de portées de percussion:: * Notes fantômes:: @end menu + @node Références en matière de notation pour percussions @unnumberedsubsubsec Références en matière de notation pour percussions @translationof References for percussion -@untranslated +@c TODO add more references. + +@itemize + +@item Certains instruments à percussion se notent sur une portée +rythmique. Vous trouverez des informations détaillées à ce sujet aux +rubriques @ref{Gravure de lignes rythmiques} et +@ref{Initialisation de nouvelles portées}. + +@item Le rendu MIDI des percussions fait l'objet d'une rubrique +dédiée@tie{}: @ref{MIDI et percussions}. + +@end itemize + +@seealso +Manuel de notation : +@ref{Gravure de lignes rythmiques}, +@ref{Initialisation de nouvelles portées}, +@ref{MIDI et percussions}. + +Morceaux choisis : +@rlsr{Percussion}. @node Notation de base pour percussions @unnumberedsubsubsec Notation de base pour percussions @translationof Basic percussion notation - @cindex percussions @cindex batterie -Les parties de percussions peuvent être saisies avec le mode @code{\drummode}, -qui est l'équivalent du mode standard utilisé pour les notes à hauteur -déterminée. Chaque instrument de percussion peut avoir, dans le -fichier LilyPond, un nom complet et un nom raccourci. +Les parties de percussions peuvent être saisies avec le mode +@code{\drummode}, qui est l'équivalent du mode standard utilisé pour les +notes à hauteur déterminée. Le moyen plus simple pour saisir une partie +de percussion est d'utiliser la commande @code{\drums}, qui crée un +contexte spécifique@tie{}: +@lilypond[quote,verbatim] +\drums { + hihat4 hh bassdrum bd +} +@end lilypond + +Il s'agit en fait d'un raccourci pour + +@lilypond[quote,verbatim] +\new DrumStaff { + \drummode { + hihat4 hh bassdrum bd + } +} +@end lilypond + +Chaque instrument de percussion peut avoir, dans le fichier LilyPond, un +nom complet et un nom raccourci. Ces noms sont inventoriés à l'annexe +@ref{Notes utilisées en percussion}. + +@cindex clef, percussion +@cindex percussion, clef + +Notez bien que l'utilisation de hauteurs (comme un @code{cis4}) dans un +contexte @code{DrumStaff} déclenchera immanquablement une erreur. Un +contexte @code{DrumStaff} fait automatiquement appel à une clef +spécifique@tie{}; vous pouvez la spécifier explicitement ou utiliser une +autre clef. @lilypond[quote,ragged-right,verbatim] \drums { - hihat hh bassdrum bd + \clef percussion + bd4 bd bd bd + \clef treble + hh4 hh hh hh +} +@end lilypond + +Certains instruments à percussion connaissent quelques problèmes quant à +leur prise en charge au niveau de la génération de fichiers MIDI@tie{}; +de plus amples informations sont disponibles à la rubrique +@ref{MIDI et percussions}. + +@seealso +Manuel de notation : +@ref{MIDI et percussions}, +@ref{Notes utilisées en percussion}. + +Fichiers d'initialisation : +@file{ly/drumpitch-init.ly} + +Morceaux choisis : +@rlsr{Percussion}. + + +@node Roulements de tambour +@unnumberedsubsubsec Roulements de tambour +@translationof Drum rolls + +Les roulements de tambour s'indiquent par une triple barre en travers +des hampes. Qu'il s'agisse d'une noire ou d'une durée plus longue, +cette triple barre s'affiche explicitement. Dans le cas de croches, +seules deux barres traversent les hampes (la troisième faisant office de +ligature). Si ce roulement s'applique à des notes plus courtes que la +croche, LilyPond fait apparaître une seule barre en travers des hampes +en supplément du nombre de barres de ligature. Ces différents +graphismes s'obtiennent à l'aide d'une notation de trémolo, en suivant +les préceptes mentionnés à la rubrique @ref{Répétitions en trémolo}. + +@lilypond[quote,verbatim] +\drums { + \time 2/4 + sn16 sn8 sn16 sn8 sn8:32 ~ + sn8 sn8 sn4:32 ~ + sn4 sn8 sn16 sn16 + sn4 r4 } @end lilypond +Les coups de baguette peuvent s'indiquer à l'aide de @emph{markups} +@code{"D"} et @code{"G"} au-dessus ou en dessous des notes comme indiqué +à la rubrique @ref{Direction et positionnement}. Vous devrez peut-être +jouer sur la propriété @code{staff-padding} pour obtenir une ligne de +base satisfaisante. -Ces noms sont inventoriés dans le fichier d'initialisation -@file{ly/drumpitch-init.ly}. -@c TODO: properly document this. +@c KEEP LY +@lilypond[quote,verbatim] +\drums { + \repeat unfold 2 { + sn16^"G" sn^"D" sn^"G" sn^"G" sn^"D" sn^"G" sn^"D" sn^"D" + \stemUp + sn16_"G" sn_"D" sn_"G" sn_"G" sn_"D" sn_"G" sn_"D" sn_"D" + } +} +@end lilypond + +@seealso +Manuel de notation : +@ref{Direction et positionnement}, +@ref{Répétitions en trémolo}. + +Morceaux choisis : +@rlsr{Percussion}. + + +@node Hauteurs en percussions +@unnumberedsubsubsec Hauteurs en percussions +@translationof Pitched percussion +Certains instruments à percussion émettent des hauteurs, comme le +xylophone, le vibraphone ou les timbales@tie{}; ils utilisent donc des +portées classiques. Cette possibilité est abordée dans d'autres parties +du manuel. @seealso -Référence du Programme : @rinternals{note-event}. +@c TODO: possibly link to an alternate section of NR 3.5, if +@c "percussion in MIDI" gets a separate subsubsection for +@c pitched percussion sounds. -gp +Manuel de notation : +@ref{MIDI et percussions}. + +Morceaux choisis : +@rlsr{Percussion}. @node Portées de percussion @unnumberedsubsubsec Portées de percussion @translationof Percussion staves - @cindex percussions @cindex batterie @@ -87,45 +219,48 @@ général une portée de plusieurs lignes, où chaque hauteur sur la portée représente un instrument à percussion. Pour saisir cette musique, il faut que les notes soient situées dans -des contextes @rinternals{DrumStaff} et @rinternals{DrumVoice}. +des contextes @code{DrumStaff} et @code{DrumVoice}. -@lilypond[quote,ragged-right,verbatim] -up = \drummode { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat } -down = \drummode { bassdrum4 snare8 bd r bd sn4 } - \new DrumStaff << - \new DrumVoice { \voiceOne \up } - \new DrumVoice { \voiceTwo \down } - >> +@lilypond[quote,verbatim] +up = \drummode { + crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat +} +down = \drummode { + bassdrum4 snare8 bd r bd sn4 +} +\new DrumStaff << + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } +>> @end lilypond L'exemple ci-dessus montre une notation polyphonique détaillée. La -notation polyphonique abrégée peut être employée lorsque le contexte -@rinternals{DrumVoice} est spécifié explicitement : +notation polyphonique abrégée peut être employée -- voir la rubrique +@rlearning{J'entends des Voix} -- comme ici@tie{}: -@lilypond[quote,ragged-right,verbatim] +@lilypond[quote,verbatim] \new DrumStaff << - \new DrumVoice = "1" { s1 *2 } - \new DrumVoice = "2" { s1 *2 } \drummode { bd4 sn4 bd4 sn4 - << - { \repeat unfold 16 hh16 } - \\ - { bd4 sn4 bd4 sn4 } - >> + << { + \repeat unfold 16 hh16 + } \\ { + bd4 sn4 bd4 sn4 + } >> } >> @end lilypond On peut choisir d'autres mises en forme si l'on définit la propriété -@code{drumStyleTable} dans le contexte @rinternals{DrumVoice}. -Quelques variables prédéfinies sont disponibles : +@code{drumStyleTable} dans le contexte @code{DrumVoice}. +Quelques variables prédéfinies sont disponibles@tie{}: +@c TODO: decide what to do about this table. (ie verbatim or not) @table @code + @item drums-style La notation par défaut : une batterie standard, sur une portée de cinq lignes. - @lilypond[quote,line-width=10.0\cm] nam = \lyricmode { cymc cyms cymr hh hhc hho hhho hhp @@ -138,8 +273,8 @@ mus = \drummode { \remove Bar_engraver \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f - \override VerticalAxisGroup #'minimum-Y-extent = #'(-4.0 . 5.0) } \mus \new Lyrics \nam >> @@ -155,8 +290,8 @@ mus = \drummode { Le plan de la batterie peut inclure jusqu'à six toms différents. Bien sûr, vous n'êtes pas obligé de tous les utiliser si la musique en -prévoit moins ; par exemple, les trois toms des lignes du milieu sont -@code{tommh}, @code{tomml}, et @code{tomfh}. +prévoit moins@tie{}; par exemple, les trois toms des lignes du milieu +sont @code{tommh}, @code{tomml}, et @code{tomfh}. @item timbales-style Ce style permet de saisir une partie de timbales, sur une portée à deux @@ -171,6 +306,7 @@ mus = \drummode { timh ssh timl ssl cb s16 } \remove Bar_engraver \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f \override StaffSymbol #'line-count = #2 \override StaffSymbol #'staff-space = #2 @@ -201,6 +337,7 @@ mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } %% this sucks; it will lengthen stems. \override StaffSymbol #'staff-space = #2 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -213,7 +350,6 @@ mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } @item bongos-style Ce style produit une portée à deux lignes pour une partie de bongos. - @lilypond[quote,ragged-right] nam = \lyricmode { boh boho bohm ssh bol bolo bolm ssl } mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } @@ -228,6 +364,7 @@ mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } %% this sucks; it will lengthen stems. \override StaffSymbol #'staff-space = #2 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -252,6 +389,7 @@ mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } \override StaffSymbol #'line-count = #1 \remove Time_signature_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'Y-extent = ##f } \mus \new Lyrics { @@ -262,10 +400,15 @@ mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } @end lilypond @end table + +@node Personnalisation de portées de percussion +@unnumberedsubsubsec Personnalisation de portées de percussion +@translationof Custom percussion staves + Cependant, si aucun des styles prédéfinis ne vous convient, il est aisé de définir le vôtre en début de fichier. -@lilypond[quote,ragged-right,verbatim] +@lilypond[quote,verbatim] #(define mydrums '( (bassdrum default #f -1) (snare default #f 0) @@ -283,46 +426,219 @@ down = \drummode { bd4 sn bd toml8 toml } >> @end lilypond +@snippets -@seealso -Fichier d'initialisation : @file{ly/drumpitch-init.ly}. +@c TODO: MOVE ALL THESE TO LSR! -gp + +Voici quelques exemples. + +Deux @emph{woodblocks} saisis comme @code{wbh} (woodblock aigu) et +@code{wbl} (woodblock grave)@tie{}: + +@lilypond[quote,verbatim] +% These lines define the position of the woodblocks in the stave; +% if you like, you can change it or you can use special note heads +% for the woodblocks. +#(define mydrums '((hiwoodblock default #t 3) + (lowoodblock default #t -2))) + +woodstaff = { + % This defines a staff with only two lines. + % It also defines the positions of the two lines. + \override Staff.StaffSymbol #'line-positions = #'(-2 3) + + % This is necessary; if not entered, the barline would be too short! + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) +} -Référence du programme : @rinternals{DrumStaff}, @rinternals{DrumVoice}. +\new DrumStaff { + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + + % with this you load your new drum style table + \woodstaff + + \drummode { + \time 2/4 + wbl8 wbl16 wbl wbh8-> wbl | + wbl8 wbl16 wbh-> ~ wbh wbl16 r8 | + } +} +@end lilypond + +Vous aurez remarqué ici l'allongement des barres de mesures par +l'instruction +@w{@code{\override Staff.BarLine #'bar-extent #'(de . à)}}. Il faut +aussi définir la position des deux lignes de la portée -- voir à ce +sujet la rubrique @ref{Symbole de la portée}. + +Un tambourin, saisi avec un @qq{tamb}@tie{}: + +@lilypond[quote,verbatim] +#(define mydrums '((tambourine default #t 0))) + +tambustaff = { + \override Staff.StaffSymbol #'line-positions = #'( 0 ) + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) + \set DrumStaff.instrumentName = #"Tambourine" +} + +\new DrumStaff { + \tambustaff + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + + \drummode { + \time 6/8 + tamb8. tamb16 tamb8 tamb tamb tamb | + tamb4. tamb8 tamb tamb | + % the trick with the scaled duration and the shorter rest + % is neccessary for the correct ending of the trill-span! + tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | + } +} +@end lilypond + +Un peu de tam tam, abrégé @qq{tt}@tie{}: + +@lilypond[quote,verbatim] +#(define mydrums '((tamtam default #t 0))) + +tamtamstaff = { + \override Staff.StaffSymbol #'line-positions = #'( 0 ) + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) + \set DrumStaff.instrumentName = #"Tamtam" +} + +\new DrumStaff { + \tamtamstaff + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + + \drummode { + tt 1 \pp \laissezVibrer + } +} +@end lilypond + +Deux cloches, une sonnaille -- @qq{cb} pour @emph{cowbell} -- et une +cloche de quart -- @qq{rb} pour @emph{ridebell}@tie{}: + +@lilypond[quote,verbatim] +#(define mydrums '((ridebell default #t 3) + (cowbell default #t -2))) + +bellstaff = { + \override DrumStaff.StaffSymbol #'line-positions = #'(-2 3) + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) + \set DrumStaff.instrumentName = #"Different Bells" +} +\new DrumStaff { + \bellstaff + \drummode { + \time 2/4 + rb8 rb cb cb16 rb-> ~ | + rb16 rb8 rb16 cb8 cb | + } +} +@end lilypond + +Et pour finir un extrait tiré de @qq{L'histoire du Soldat} de +Stravinsky@tie{}: -@knownissues +@lilypond[quote,verbatim] +#(define mydrums '((bassdrum default #t 4) + (snare default #t -4) + (tambourine default #t 0))) -La bibliothèque MIDI générale ne contient pas les @emph{rimshots} --- coups -sur le bord de la caisse claire --- donc ils sont remplacés par des -@emph{sidesticks,} largement équivalents. +global = { + \time 3/8 s4. + \time 2/4 s2*2 + \time 3/8 s4. + \time 2/4 s2 +} + +drumsA = { + \context DrumVoice << + { \global } + { \drummode { + \autoBeamOff + \stemDown sn8 \stemUp tamb s8 | + sn4 \stemDown sn4 | + \stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 | + \stemDown sn8 \stemUp tamb s8 | + \stemUp sn4 s8 \stemUp tamb + } + } + >> +} +drumsB = { + \drummode { + s4 bd8 s2*2 s4 bd8 s4 bd8 s8 + } +} +\layout { + indent = #40 +} +\score { + \new StaffGroup << + \new DrumStaff { + \set DrumStaff.instrumentName = \markup { + \column { + "Tambourine" + "et" + "caisse claire s. timbre" + } + } + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \drumsA + } + + \new DrumStaff { + \set DrumStaff.instrumentName = #"Grosse Caisse" + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \drumsB } + >> +} +@end lilypond + +@seealso +Morceaux choisis : +@rlsr{Percussion}. + +Référence des propriétés internes : +@rinternals{DrumStaff}, +@rinternals{DrumVoice}. + + +@c TODO: check name -gp @node Notes fantômes @unnumberedsubsubsec Notes fantômes @translationof Ghost notes - Des notes fantômes peuvent être créées pour les parties de percussion, -grâce à la commande @code{\parenthesize} décrite dans -@ref{Parenthèses}. Cependant, le mode @code{\drummode} n'inclut pas par +grâce à la commande @code{\parenthesize} décrite à la rubrique +@ref{Parenthèses}. Cependant, le mode @code{\drummode} n'inclut pas par défaut le graveur @code{Parenthesis_engraver} qui permet d'imprimer ces -signes. Il faut donc l'ajouter explicitement dans la définition du -contexte, suivant la manœuvre indiquée dans @ref{La commande set}. +signes. @lilypond[quote,ragged-right,verbatim] \new DrumStaff \with { \consists "Parenthesis_engraver" -} << - \context DrumVoice = "1" { s1 *2 } - \context DrumVoice = "2" { s1 *2 } +} +<< + \context DrumVoice = "1" { s1 } + \context DrumVoice = "2" { s1 } \drummode { << { hh8[ hh] hh16 - < \parenthesize sn > hh < \parenthesize - sn > hh8 hh - } \\ { + < \parenthesize sn > hh + < \parenthesize sn > hh8 hh + } \\ + { bd4 r4 bd8 bd r8 bd } >> @@ -332,8 +648,8 @@ contexte, suivant la manœuvre indiquée dans @ref{La commande set}. @noindent Notez que les commandes @code{\parenthesize} obligent à ajouter des -accords --- sous la forme @code{< >} --- autour de chaque élément. - - - +accords -- sous la forme @code{< >} -- autour de chaque élément. +@seealso +Morceaux choisis : +@rlsr{Percussion}. diff --git a/Documentation/fr/notation/pitches.itely b/Documentation/fr/notation/pitches.itely index 1f76c53db4..761797b6ba 100644 --- a/Documentation/fr/notation/pitches.itely +++ b/Documentation/fr/notation/pitches.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 20a4e530e15d5e9d3a679067aa6124a2740031de + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Frédéric Chiasson @c Translation checkers: Valentin Villenave, Jean-Charles Malahieude @@ -19,7 +19,7 @@ @lilypondfile[quote]{pitches-headword.ly} Cette section détaille la façon d'indiquer la hauteur des notes, sous -trois aspects@tie{}: la saisie des hauteurs, la modification des +trois aspects : la saisie des hauteurs, la modification des hauteurs et les options de gravure. @menu @@ -35,7 +35,7 @@ hauteurs et les options de gravure. @translationof Writing pitches Cette section explique la manière d'indiquer les hauteurs de note. Deux -modes permettent d'indiquer l'octave des notes@tie{}: le mode absolu, et le +modes permettent d'indiquer l'octave des notes : le mode absolu, et le mode relatif. Ce dernier est le plus pratique lors de la saisie d'un fichier source au clavier de l'ordinateur. @@ -46,6 +46,7 @@ fichier source au clavier de l'ordinateur. * Nom des notes dans d'autres langues:: @end menu + @node Hauteurs avec octave absolue @unnumberedsubsubsec Hauteurs avec octave absolue @translationof Absolute octave entry @@ -77,9 +78,9 @@ do central. @funindex , L'octave peut être précisée sous forme d'une série -d'apostrophes@tie{}@code{'} ou d'une série de virgules@tie{}@code{,}. -Chaque@tie{}@code{'} hausse la note d'une octave@tie{}; -chaque@tie{}@code{,} baisse la note d'une octave. +d'apostrophes @code{'} ou d'une série de virgules @code{,}. +Chaque @code{'} hausse la note d'une octave ; +chaque @code{,} baisse la note d'une octave. @lilypond[verbatim,quote] { @@ -92,7 +93,6 @@ chaque@tie{}@code{,} baisse la note d'une octave. } @end lilypond - @seealso Glossaire musicologique : @rglosnamed{Pitch names,Noms des notes}. @@ -111,24 +111,21 @@ Morceaux choisis : @funindex \relative @funindex relative -@funindex \transpose -@funindex transpose -On spécifie les octaves en ajoutant@tie{}@code{'} ou@tie{}@code{,} aux +On spécifie les octaves en ajoutant @code{'} ou @code{,} aux noms de hauteur. En recopiant de la musique, on a vite fait de mettre -une note à la mauvaise octave@tie{}; ce genre d'erreur est difficile à +une note à la mauvaise octave ; ce genre d'erreur est difficile à retrouver. Le mode d'écriture en octave relative prévient ces erreurs -dans la mesure où elles deviennent beaucoup plus évidentes@tie{}: une +dans la mesure où elles deviennent beaucoup plus évidentes : une seule erreur décale le reste de la pièce à une mauvaise octave. - @example \relative @var{hauteur_de_référence} @var{expression_musicale} @end example En mode relatif, chaque note est considérée comme étant le plus proche possible de celle qui la précède. L'octave des notes mentionnées dans -@var{expression_musicale} va être calculée de la manière suivante@tie{}: +@var{expression_musicale} va être calculée de la manière suivante : @itemize @item @@ -137,13 +134,13 @@ base entre la note actuelle et la précédente sera toujours au plus d'une quarte. Cet intervalle est déterminé sans tenir compte des altérations. @item -Un signe de changement d'octave@tie{}@code{'} ou@tie{}@code{,} peut être +Un signe de changement d'octave @code{'} ou @code{,} peut être ajouté pour hausser ou baisser la note d'une octave par rapport à la hauteur calculée sans spécification. @item Ces signes de changement d'octave peuvent être multipliés. Par exemple, -@code{''}@tie{}ou@tie{}@code{,,} ajouteront une octave supplémentaire. +@code{''} ou @code{,,} ajouteront une octave supplémentaire. @item Lorsque l'on entre en mode @code{\relative}, une hauteur absolue de @@ -196,9 +193,6 @@ dernière clause @code{\relative} qui est prise en compte. } @end lilypond -@funindex \chordmode -@funindex chordmode - @code{\relative} est sans effet sur un bloc @code{\chordmode}. @lilypond[verbatim,quote] @@ -212,12 +206,6 @@ dernière clause @code{\relative} qui est prise en compte. @code{\relative} n'est pas permis au sein d'un bloc @code{\chordmode}. -@cindex octave relative et transposition -@cindex transposition et mode octave relative - -@funindex \transpose -@funindex transpose - Pour utiliser le mode d'octave relative dans de la musique transposée, une clause @code{\relative} additionnelle doit être placée au sein du bloc @code{\transpose}. @@ -234,11 +222,9 @@ bloc @code{\transpose}. } @end lilypond - @cindex accords et octave relative @cindex octave relative et accords - Si l'expression précédente est un accord, c'est la première note de l'accord qui détermine l'emplacement de la première note du prochain accord. À l'intérieur de l'accord, les notes sont placées relativement @@ -271,6 +257,9 @@ et la quinte diminuée de seulement six demi-tons. } @end lilypond +L'une des conséquences de toutes ces règles est que la première note +rencontrée dans un fragment balisé par @code{@w{\relative f}} sera +interprétée tout comme si elle avait été saisie en mode absolu. @seealso Glossaire musicologique : @@ -299,19 +288,19 @@ Référence des propriétés internes : @c duplicated in Key signature and in Accidentals @warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion des altérations et de l'armure. Pour LilyPond, une hauteur n'est que du -matériau brut@tie{}; l'armure et la clef ne feront que déterminer -comment ce matériau sera retranscrit. Un simple@tie{}@code{c} signifie -tout bonnement @w{@qq{do naturel}} quelles que soient l'armure et la clef +matériau brut ; l'armure et la clef ne feront que déterminer +comment ce matériau sera retranscrit. Un simple @code{c} signifie +tout bonnement « do naturel » quelles que soient l'armure et la clef en question. Pour plus d'information, reportez-vous au chapitre @rlearning{Altérations et armure}.} @cindex noms de note, hollandais @cindex noms de note, par défaut +@cindex hauteur, nom par défaut @cindex dièse @cindex bémol @cindex double dièse @cindex double bémol -@cindex flat, double @cindex naturel @cindex bécarre @@ -328,7 +317,7 @@ ais1 aes aisis aeses Un bécarre annule l'effet d'une altération, qu'elle soit accidentelle ou à l'armure. Cependant, dans la syntaxe des noms de note, les -bécarres ne s'écrivent pas avec un suffixe@tie{}; un simple nom de note +bécarres ne s'écrivent pas avec un suffixe ; un simple nom de note donnera une note bécarre. @lilypond[verbatim,quote,relative=2] @@ -341,7 +330,7 @@ a4 aes a2 Les demi-bémols et demi-dièses s'écrivent en ajoutant respectivement @code{eh} et @code{ih}. Voici une série de dos altérés en hauteurs -croissantes@tie{}: +croissantes : @lilypond[verbatim,quote,relative=2] ceseh1 ces ceh c cih cis cisih @@ -349,7 +338,6 @@ ceseh1 ces ceh c cih cis cisih Les micro-intervalles sont aussi exportés dans le fichier MIDI. - @cindex altération de précaution @cindex altération entre parenthèses @cindex précaution, altération de @@ -360,10 +348,10 @@ Les micro-intervalles sont aussi exportés dans le fichier MIDI. Normalement, les altérations sont imprimées automatiquement, mais il se peut que vous vouliez les imprimer manuellement. On peut forcer -l'impression d'une altération, dite @qq{de précaution}, en ajoutant un -point d'exclamation@tie{}@code{!} après la hauteur de note. Une +l'impression d'une altération, dite « de précaution », en ajoutant un +point d'exclamation @code{!} après la hauteur de note. Une altération entre parenthèses peut être obtenue en ajoutant un point -d'interrogation@tie{}@code{?} après la hauteur de note. Ces signes +d'interrogation @code{?} après la hauteur de note. Ces signes peuvent aussi être utilisés pour imprimer des bécarres. @lilypond[verbatim,quote,relative=2] @@ -382,16 +370,13 @@ cis1 ~ cis ~ cis @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right] +@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right] {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} -@lilypondfile[verbatim,lilyquote,texidoc, doctitle] +@lilypondfile[verbatim,quote,texidoc, doctitle] {preventing-extra-naturals-from-being-automatically-added.ly} - @seealso Glossaire musicologique : @rglosnamed{sharp,dièse}, @@ -406,7 +391,7 @@ Manuel d'initiation : Manuel de notation : @ref{Altérations accidentelles automatiques}, -@ref{Altérations accidentelles suggérées}, +@ref{Altérations suggérées (musica ficta)}, @ref{Nom des notes dans d'autres langues}. Morceaux choisis : @@ -418,18 +403,15 @@ Références des propriétés internes : @rinternals{AccidentalCautionary}, @rinternals{accidental-interface}. - @cindex accidentel, quart de ton @cindex quart de ton @knownissues - Il n'y a pas de standard universellement accepté pour noter le bémol et demi (qui abaisse la hauteur trois quarts de ton), le symbole de LilyPond n'est donc conforme à aucun standard. - @node Nom des notes dans d'autres langues @unnumberedsubsubsec Nom des notes dans d'autres langues @translationof Note names in other languages @@ -441,7 +423,7 @@ LilyPond n'est donc conforme à aucun standard. Vous disposez de jeux prédéfinis de noms de note et altérations pour plusieurs autres langues. Pour les utiliser, il suffit de déclarer, en début de fichier, la langue que vous utilisez. Voici comment, par -exemple, utiliser l'italien pour votre saisie@tie{}: +exemple, utiliser l'italien pour votre saisie : @lilypond[quote,verbatim] \language "italiano" @@ -452,7 +434,7 @@ exemple, utiliser l'italien pour votre saisie@tie{}: @end lilypond Les langues disponibles ainsi que les noms de note utilisés -sont les suivants@tie{}: +sont les suivants : @quotation @multitable {@code{nederlands}} {do re mi fa sol la sib si} @@ -484,7 +466,7 @@ sont les suivants@tie{}: @end quotation @noindent -et les suffixes d'altération correspondants@tie{}: +et les suffixes d'altération correspondants : @quotation @multitable {@code{nederlands}} {-s/-sharp} {-ess/-es} {-ss/-x/-sharpsharp} {-essess/-eses} @@ -528,7 +510,6 @@ linguistiques, seules ces formes abrégées ont été définies. a2 as e es a ases e eses @end lilypond - @cindex microtonalités @cindex demi-dièse @cindex demi-bémol @@ -537,7 +518,7 @@ a2 as e es a ases e eses @noindent Certaines musiques utilisent des microtonalités, pour lesquelles les -altérations sont des fractions de dièse ou bémol @qq{normaux}. Le +altérations sont des fractions de dièse ou bémol « normaux ». Le tableau suivant répertorie les noms de note en quart de ton, tels que définis dans plusieurs fichiers linguistiques. Les préfixes @emph{semi-} et @emph{sesqui-} correspondent au @emph{demi-} et @emph{trois demis}. @@ -567,8 +548,7 @@ La plupart des langues dont nous venons de parler correspondent à la musique classique occidentale au tempérament égal -- le concept de @emph{Common Practice Period} en anglais. LilyPond prend néanmoins en charge d'autres systèmes de notation, comme indiqué au chapitre -@ref{Noms de note et altérations non-occidentaux}. - +@ref{Noms des notes et altérations non-occidentaux}. @seealso Glossaire musicologique : @@ -576,7 +556,7 @@ Glossaire musicologique : @rglos{Common Practice Period}. Manuel de notation : -@ref{Noms de note et altérations non-occidentaux}. +@ref{Noms des notes et altérations non-occidentaux}. Fichiers d'initialisation : @file{scm/define-note-names.scm}. @@ -594,8 +574,12 @@ Cette partie traite de la manière de modifier les hauteurs de note. @menu * Vérifications d'octave:: * Transposition:: +* Inversion:: +* Rétrogradation:: +* Transformations modales:: @end menu + @node Vérifications d'octave @unnumberedsubsubsec Vérifications d'octave @translationof Octave checks @@ -609,10 +593,9 @@ Cette partie traite de la manière de modifier les hauteurs de note. @funindex octaveCheck @funindex controlpitch - Les tests d'octave rendent la correction d'erreurs d'octave plus facile -dans le mode d'octave @code{relative} -- un@tie{}@code{,} ou -un@tie{}@code{'} oublié, ça n'arrive pas qu'aux autres@tie{}! +dans le mode d'octave @code{relative} -- un @code{,} ou +un @code{'} oublié, ça n'arrive pas qu'aux autres ! Une note peut être suivie de @w{@code{=}@var{apostrophes/virgules}} pour indiquer à quelle @strong{octave absolue} elle devrait être. Dans @@ -631,11 +614,11 @@ fonction de ce @code{d'} et non de @code{d''}. Il existe aussi une vérification d'octave qui ne produit pas de musique imprimée, ayant pour syntaxe -@code{\octaveCheck}@tie{}@var{hauteur_référence} -- +@code{\octaveCheck @var{hauteur_référence}} -- @code{@var{hauteur_référence}} étant spécifiée en mode absolu. Cette commande vérifie que l'intervalle entre la note qui précède et @code{@var{hauteur_référence}} est inférieur à la quinte comme il se -doît en mode relatif. Dans le cas contraire, un message sera émis et la +doit en mode relatif. Dans le cas contraire, un message sera émis et la note précédente ne sera pas modifiée. Les notes suivantes seront, par contre, positionnées relativement à @code{@var{hauteur_référence}}. @@ -664,7 +647,6 @@ Dans les deux mesures qui suivent, les premier et troisième } @end lilypond - @seealso Morceaux choisis : @rlsrnamed{Pitches,Hauteurs}. @@ -684,7 +666,7 @@ Référence des propriétés internes : @funindex transpose Une expression musicale peut être transposée avec @code{\transpose}. -En voici la syntaxe@tie{}: +En voici la syntaxe : @example \transpose @var{note_de_départ} @var{note_d_arrivée} @var{expression_musicale} @@ -693,13 +675,13 @@ En voici la syntaxe@tie{}: @noindent Cela signifie que @code{@var{expression_musicale}} est transposé de l'intervalle séparant @code{@var{note_de_départ}} et -@code{@var{note_d_arrivée}}@tie{}: toute note dont la hauteur était -@code{note_de_départ} est changée en @code{note_d_arrivée}@tie{}; les +@code{@var{note_d_arrivée}} : toute note dont la hauteur était +@code{note_de_départ} est changée en @code{note_d_arrivée} ; les autres notes seront changées selon le même intervalle. Les deux hauteurs s'expriment en octave absolue. @warning{La musique contenue dans un bloc @code{@bs{}transpose} est en -octaves absolus, sauf à inclure dans ce même bloc une clause +octaves absolues, sauf à inclure dans ce même bloc une clause @code{@bs{}relative}.} Prenons comme exemple une pièce écrite en ré majeur. Si cette pièce est @@ -737,7 +719,7 @@ La présence de @w{@code{\key c \major}} s'explique par le fait que, bien que les notes soient effectivement transposées, l'armure ne sera imprimée que dans la mesure où elle est explicitement mentionnée. -@code{\transpose} fait la distinction entre les notes enharmoniques@tie{}: +@code{\transpose} fait la distinction entre les notes enharmoniques : @w{@code{\transpose c cis}} et @w{@code{\transpose c des}} transposeront la pièce un demi-ton plus haut, au détail près que la première version écrira des dièses et la deuxième des bémols. @@ -754,7 +736,7 @@ On peut aussi utiliser @code{\transpose} pour entrer des notes écrites pour un instrument transpositeur. Normalement, les hauteurs dans LilyPond sont écrites en ut, c'est à dire en sons réels, mais elles peuvent être écrites dans un autre ton. Prenons l'exemple d'un morceau -pour trompette en si bémol commençant sur un ré à l'oreille@tie{}; on +pour trompette en si bémol commençant sur un ré à l'oreille ; on pourrait écrire @example @@ -765,7 +747,7 @@ musiqueEnSiBemol = @{ e4 @dots{} @} @noindent Pour imprimer cette musique en fa -- et de ce fait produire une partie de cor au lieu d'un conducteur en notes réelles -- on utilisera un -deuxième @code{\transpose}@tie{}: +deuxième @code{\transpose} : @example musiqueEnSiBemol = @{ e4 @dots{} @} @@ -776,25 +758,24 @@ musiqueEnSiBemol = @{ e4 @dots{} @} Pour plus d'information à ce sujet, consultez @ref{Instruments transpositeurs}. - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {transposing-pitches-with-minimum-accidentals-smart-transpose.ly} - @seealso Manuel de notation : @ref{Octaves relatives}, -@ref{Instruments transpositeurs}. +@ref{Instruments transpositeurs}, +@ref{Inversion}, +@ref{Transformations modales}, +@ref{Rétrogradation}. Morceaux choisis : -@rlsrnamed{Pitches,Hauteurs}. +@rlsrnamed{Pitches, Hauteurs}. Référence des propriété internes : @rinternals{TransposedMusic}. - @funindex \transpose @funindex transpose @funindex \chordmode @@ -803,11 +784,231 @@ Référence des propriété internes : @funindex relative @knownissues +Si vous voulez utiliser en même temps @code{\transpose} et +@code{\relative}, vous devez mettre @code{\transpose} en dehors de +@code{\relative}, puisque @code{\relative} n'aura aucun effet sur la +musique apparaissant dans un @code{\transpose}. + +La fonction @code{\transpose} ne permet pas d'imprimer des altérations +triples ; elle les remplacera par un « équivalent enharmonique » +-- par exemple ré bémol au lieu de mi triple bémol. + + +@node Inversion +@unnumberedsubsubsec Inversion +@translationof Inversion + +@cindex inversion + +@funindex \inversion + +Une expression musicale peut s'inverser et être transposée à l'aide de +l'instruction + +@example +\inversion @var{hauteur-pivot} @var{hauteur-arrivée} @var{expression_musicale} +@end example + +L'@code{@var{expression_musicale}} sera alors inversée, intervalle par +intervalle, puis transposée de telle sorte que +@code{@var{hauteur-pivot}} devienne @code{@var{hauteur-arrivée}}. + +@lilypond[verbatim,quote] +music = \relative c' { c d e f } +\new Staff { + \music + \inversion d' d' \music + \inversion d' ees' \music +} +@end lilypond + +@warning{Le motif à inverser doit être exprimé en hauteur absolue, à +moins d'avoir été préalablement inclus explicitement dans un bloc +@code{@bs{}relative}.} + +@seealso +Manuel de notation : +@ref{Transformations modales}, +@ref{Rétrogradation}, +@ref{Transposition}. + + +@node Rétrogradation +@unnumberedsubsubsec Rétrogradation +@translationof Retrograde + +@cindex rétrograde, transformation +@cindex transformation rétrograde + +@funindex \retrograde +@funindex retrograde + +Une expression musicale peut se renverser et se présenter sous forme +rétrograde : + +@lilypond[verbatim,quote] +music = \relative c' { c8. ees16( fis8. a16 b8.) gis16 f8. d16 } + +\new Staff { + \music + \retrograde \music +} +@end lilypond + +@knownissues +Une liaison de prolongation à l'intérieur d'un bloc @code{\retrograde} +sera de fait rompue, ce qui générera un message d'avertissement. +Des liaisons de prolongation seront toutefois générées automatiquement +dès lors qu'est activé le @ref{Découpage automatique des notes}. + +@seealso +Manuel de notation : +@ref{Inversion}, +@ref{Transformations modales}, +@ref{Transposition}. + + +@node Transformations modales +@unnumberedsubsubsec Transformations modales +@translationof Modal transformations + +@cindex modales, transformations + +Dans une composition basée sur une gamme, un même motif est transformé à +plusieurs reprises et selon des schémas différents. Il peut être +@notation{transposé} pour partir de différents points de la gamme ou +bien être @notation{inversé} à partir d'une note pivot dans la gamme. +Il peut aussi être renversé pour produire une rétrogradation. + +@warning{Toute note qui ne ferait pas partie de la gamme en question ne +sera pas transformée.} + + +@subsubheading Transposition modale +@translationof Modal transposition + +@cindex modale, transposition + +@funindex \modalTranspose +@funindex modalTranspose + +Un motif peut se transposer selon une gamme donnée : + +@example +\modalTranspose @var{hauteur-départ} @var{hauteur-arrivée} @var{gamme} @var{motif} +@end example + +Les notes de @var{motif} seront décalées à l'intérieur de la @var{gamme} +selon leur degré, déterminé par l'intervalle entre @var{hauteur-départ} +et @var{hauteur-arrivée} : + +@lilypond[verbatim,quote] +diatonicScale = \relative c' { c d e f g a b } +motif = \relative c' { c8 d e f g a b c } + +\new Staff { + \motif + \modalTranspose c f \diatonicScale \motif + \modalTranspose c b, \diatonicScale \motif +} +@end lilypond + +Il est ainsi possible de déterminer une gamme ascendante, quels qu'en soient +l'amplitude et les différents intervalles : + +@lilypond[verbatim,quote] +pentatonicScale = \relative c' { ges aes bes des ees } +motif = \relative c' { ees8 des ges,4 } + +\new Staff { + \motif + \modalTranspose ges ees' \pentatonicScale \motif +} +@end lilypond + +L'utilisation de @code{\modalTranspose} avec une gamme chromatique +produit les mêmes effets qu'un @code{\transpose}, à ceci près que les +notes seront alors prédéterminées : + +@lilypond[verbatim,quote] +chromaticScale = \relative c' { c cis d dis e f fis g gis a ais b } +motif = \relative c' { c8 d e f g a b c } + +\new Staff { + \motif + \transpose c f \motif + \modalTranspose c f \chromaticScale \motif +} +@end lilypond + + +@subsubheading Inversion modale +@translationof Modal inversion + +@cindex modale, inversion + +@funindex \modalInversion +@funindex modalInversion + +Un motif peut s'inverser selon une certaine gamme et à partir d'un pivot +déterminé, puis transposé, le tout en une seule opération : + +@example +\modalInversion @var{hauteur-pivot} @var{hauteur-arrivée} @var{gamme} @var{motif} +@end example + +Les notes de @var{motif} se retrouvent au même degré par rapport à +@var{hauteur-pivot} dans la @var{gamme}, toutefois dans le sens opposé, +puis décalées dans cette même @var{gamme} de l'intervalle séparant +@var{hauteur-départ} et @var{hauteur-arrivée}. + +Il est donc possible de simplement inverser à partir d'une des notes de +la gamme en donnant la même valeur à @var{hauteur-départ} et +@var{hauteur-arrivée} : + +@lilypond[verbatim,quote] +octatonicScale = \relative c' { ees f fis gis a b c d } +motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 } + +\new Staff { + \motif + \modalInversion fis' fis' \octatonicScale \motif +} +@end lilypond + +Pour permuter deux notes de la gamme, il suffit donc d'inverser à partir +de l'une des notes et de transposer d'un degré de la gamme. Les deux +notes spécifiées peuvent s'interpréter comme étant les bornes du pivot. + +@lilypond[verbatim,quote] +scale = \relative c' { c g' } +motive = \relative c' { c c g' c, } + +\new Staff { + \motive + \modalInversion c' g' \scale \motive +} +@end lilypond + +L'opération conjointe d'une inversion et d'une rétrogradation produit +une rétrogradation inversée : + +@lilypond[verbatim,quote] +octatonicScale = \relative c' { ees f fis gis a b c d } +motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 } + +\new Staff { + \motif + \retrograde \modalInversion c' c' \octatonicScale \motif +} +@end lilypond + +@seealso +Manuel de notation : +@ref{Inversion}, +@ref{Rétrogradation}, +@ref{Transposition}. -Si vous voulez utiliser en même temps @code{@bs{}transpose} et -@code{@bs{}relative}, vous devez mettre @code{@bs{}transpose} en dehors de -@code{@bs{}relative}, puisque @code{@bs{}relative} n'aura aucun effet sur la -musique apparaissant dans un @code{@bs{}transpose}. @node Gravure des hauteurs @subsection Gravure des hauteurs @@ -825,6 +1026,7 @@ hauteurs. * Ambitus:: @end menu + @node Clefs @unnumberedsubsubsec Clefs @translationof Clef @@ -832,13 +1034,14 @@ hauteurs. @cindex clé de sol @cindex clé de fa @cindex clé d'ut +@cindex clés anciennes @funindex \clef @funindex clef La clef indique quelles lignes de la portée correspondent à quelles hauteurs. Elle peut changer au fil du morceau, comme dans l'exemple -suivant qui indique le do médium dans différentes clefs@tie{}: +suivant qui indique le do médium dans différentes clefs : @lilypond[verbatim,quote,relative=1] \clef treble @@ -851,7 +1054,7 @@ c2 c c2 c @end lilypond -LilyPond met à votre disposition d'autres clefs@tie{}: +LilyPond met à votre disposition d'autres clefs : @lilypond[verbatim,quote,relative=1] \clef french @@ -885,8 +1088,8 @@ c2 c @cindex transposition et clef @cindex clef et transposition @cindex octave et clef -@cindex chorale, clef de tenor -@cindex tenor, clef +@cindex chorale, clef de ténor +@cindex ténor, clef En ajoutant @code{_8} ou @code{^8} au nom de la clé, celle-ci est transposée à l'octave respectivement inférieure ou supérieure, et @@ -911,22 +1114,23 @@ c2 c @end lilypond Il existe d'autres clefs, destinées à un usage particulier. Voir à ce -sujet @ref{Notations anciennes} -@c r ef{Mensural clefs}, @c r ef{Gregorian clefs}, -@ref{Tablatures par défaut} et @ref{Tablatures personnalisées}. - +sujet @ref{Notations anciennes}, @ref{Clefs anciennes}, +@ref{Clefs grégoriennes}, @ref{Tablatures par défaut} et @ref{Tablatures +personnalisées}. La nécessité de recourir à d'autres clefs dans le cas +où la partition comprend des petites notes est abordée au chapitre +@ref{Mise en forme d'une citation} -- voir les fonctions @code{\cueClef} +et @code{\cueDuringWithClef}. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-clef-properties.ly} - @seealso Manuel de notation : @ref{Notations anciennes}, -@c r ef{Mensural clefs}, -@c r ef{Gregorian clefs}, +@ref{Clefs anciennes}, +@ref{Clefs grégoriennes}, +@ref{Mise en forme d'une citation}, @ref{Tablatures par défaut}, @ref{Tablatures personnalisées}. @@ -952,9 +1156,9 @@ Référence des propriétés internes : @c duplicated in Key signature and in Accidentals @warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion des altérations et de l'armure. Pour LilyPond, une hauteur n'est que du -matériau brut@tie{}; l'armure et la clef ne feront que déterminer -comment ce matériau sera retranscrit. Un simple@tie{}@code{c} signifie -tout bonnement @w{@qq{do naturel}} quelles que soient l'armure et la +matériau brut ; l'armure et la clef ne feront que déterminer +comment ce matériau sera retranscrit. Un simple @code{c} signifie +tout bonnement « do naturel » quelles que soient l'armure et la clef en question. Pour plus d'information, reportez-vous au chapitre @rlearning{Altérations et armure}.} @@ -966,7 +1170,7 @@ morceau. On définit ou modifie l'armure avec la commande @code{\key} @example -@code{\key} @var{hauteur} @var{mode} +\key @var{hauteur} @var{mode} @end example @funindex \major @@ -1014,16 +1218,13 @@ f fis @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} - @seealso Glossaire musicologique : @rglosnamed{church mode,mode d'église}, @@ -1078,11 +1279,9 @@ a2 b @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ottava-text.ly} - @seealso Glossaire musicologique : @rglosnamed{octavation,octaviation}. @@ -1124,7 +1323,7 @@ correspondre à la note entendue lorsqu'un @code{do} écrit sur la portée est joué par l'instrument transpositeur. Cette hauteur doit être mentionnée en @notation{mode absolu}. Par exemple, lorsque vous saisissez une partition en notes réelles, toutes les voix -devraient être en ut@tie{}; si un instrument joue un ton au dessus, il +devraient être en ut ; si un instrument joue un ton au dessus, il faudra lui ajouter un @w{@code{\transposition d'}}. La commande @code{\transposition} s'utilise @strong{si et seulement si} les notes à saisir @strong{ne sont pas} dans la tonalité de concert. @@ -1160,7 +1359,7 @@ conducteur. Les deux instruments sont à l'unisson. @end lilypond La @code{\transposition} peut évoluer au cours d'un morceau. Un -clarinettiste peut être amené à jongler entre une clarinette en la et +clarinettiste peut être amené à jongler avec une clarinette en la et une autre en si bémol. @lilypond[verbatim,quote,relative=2] @@ -1169,7 +1368,7 @@ une autre en si bémol. \transposition a c d e f \textLengthOn -s1*0^\markup { Switch to B\flat clarinet } +<>^\markup { Switch to B\flat clarinet } R1 \key bes \major @@ -1177,7 +1376,6 @@ R1 c2 g @end lilypond - @seealso Glossaire musicologique : @rglosnamed{concert pitch,tonalité de concert}, @@ -1202,18 +1400,17 @@ Morceaux choisis : @cindex automatiques, altérations accidentelles @cindex style d'accidentelle -@funindex set-accidental-style +@funindex \accidentalStyle @funindex voice @funindex default - LilyPond dispose d'une fonction chargée de regrouper les règles suivant lesquelles s'impriment les altérations. Elle s'invoque de la manière -suivante@tie{}: +suivante : @example \new Staff << - #(set-accidental-style 'voice) + \accidentalStyle "voice" @{ @dots{} @} >> @end example @@ -1224,21 +1421,21 @@ La règle de gestion des altérations s'applique par défaut au contexte accepte un éventuel argument supplémentaire chargé de spécifier le champ d'action de la règle à suivre. À titre d'exemple, il faudra utiliser, pour que toutes les portées d'un même système -- contexte -@code{StaffGroup} -- soient soumises à la même règle@tie{}: +@code{StaffGroup} -- soient soumises à la même règle : @example -#(set-accidental-style 'voice 'StaffGroup) +\accidentalStyle #'StaffGroup "voice" @end example -Nous vous présentons ci-après les différentes régles d'altération prises +Nous vous présentons ci-après les différentes règles d'altération prises en charge. Pour les besoins de la démonstration, nous partirons de -l'exemple suivant@tie{}: +l'exemple suivant : @lilypond[verbatim,quote] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1253,11 +1450,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1270,11 +1467,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1289,7 +1486,7 @@ dernières lignes de cet exemple nous intéressent. << \context Staff = "haut" @{ %%% voici la ligne à modifier en conséquence : - #(set-accidental-style 'default 'Score) + \accidentalStyle #'Score "default" \musicA @} \context Staff = "bas" @{ @@ -1310,7 +1507,7 @@ dernières lignes de cet exemple nous intéressent. @funindex default C'est la règle d'impression par défaut, qui se rapporte à l'usage -en vigueur au XVIIIe siècle@tie{}: les altérations accidentelles sont +en vigueur au XVIIIe siècle : les altérations accidentelles sont valables tout une mesure, et uniquement à leur propre octave. C'est la raison pour laquelle il n'y a pas de bécarre avant le @notation{si} de la deuxième mesure, ni avant le dernier @notation{do}. @@ -1319,7 +1516,7 @@ la deuxième mesure, ni avant le dernier @notation{do}. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1334,11 +1531,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1351,11 +1548,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1383,7 +1580,7 @@ voix, ce qui peut donner lieu à un résultat malencontreux. Dans l'exemple suivant, il est difficile de dire si le deuxième @notation{la} est dièse ou naturel. La règle @code{voice} n'est donc à envisager que dans le cas de voix devant être lues par des musiciens différents. S'il -s'agit d'un @qq{conducteur}, ou d'une portée destinée à un seul +s'agit d'un « conducteur », ou d'une portée destinée à un seul musicien, il vaut mieux utiliser @code{modern} ou @code{modern-cautionary}. @@ -1391,7 +1588,7 @@ musicien, il vaut mieux utiliser @code{modern} ou musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1406,11 +1603,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1423,11 +1620,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicB } >> @@ -1441,9 +1638,12 @@ musicB = { @funindex modern -Cette règle est la plus courante au XXe siècle. Les altérations -accidentelles sont imprimées comme avec le style @code{default}, mais -lorsqu'une note non-altérée apparaît à une octave différente, ou bien +Cette règle est la plus courante au XXe siècle. Certains bécarres ne +sont pas imprimés, comme il était d'usage lorsqu'une note diésée suit +cette même note flanquée d'un double dièse, ou bien un bémol un double +bémol. Le style @code{modern} suit la même règle que le style +@code{default}, avec deux additions afin de lever les ambiguïtés : +lorsqu'une note non altérée apparaît à une octave différente, ou bien dans la mesure suivante, des bécarres de précaution sont ajoutés. Dans l'exemple suivant, notez ainsi les deux bécarres dans la deuxième mesure de la main droite. @@ -1452,7 +1652,7 @@ de la main droite. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1467,11 +1667,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1484,11 +1684,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicB } >> @@ -1506,7 +1706,7 @@ musicB = { Cette règle est équivalente à @code{modern}, mais les bécarres de précaution (absents dans la règle @code{default}) sont imprimés de façon -particulière@tie{}: soit plus petit, soit (par défaut) entre parenthèses +particulière : soit plus petit, soit (par défaut) entre parenthèses -- il est possible de le définir au moyen de la propriété @code{cautionary-style} de l'objet @code{AccidentalSuggestion}. @@ -1514,7 +1714,7 @@ particulière@tie{}: soit plus petit, soit (par défaut) entre parenthèses musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1529,11 +1729,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1546,11 +1746,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicB } >> @@ -1562,7 +1762,7 @@ musicB = { @cindex @emph{modern}, style d'altération @cindex style d'altération @emph{modern} @cindex altérations multivoix -@cindex modern accidental style +@cindex style d'altération @emph{modern accidental} @cindex voix multiples et altérations @cindex multivoix, altérations @@ -1575,13 +1775,13 @@ voix d'un même contexte @code{Staff} en @emph{tiennent compte} cette fois. C'est pourquoi le @notation{la} de la dernière mesure est affublé d'un bécarre bien qu'il y en ait déjà eu un dans la mesure précédente, et que le @notation{ré} de la main gauche en ait un alors -qu'il avait auparavant concerné la main droite. +que le dièse qu'il avait auparavant concernait la main droite. @lilypond[quote] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1596,11 +1796,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1613,11 +1813,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicB } >> @@ -1627,21 +1827,21 @@ musicB = { @item modern-voice-cautionary @cindex altération de précaution style @emph{modern voice} -@cindex @emph{modern voice}, styme d'altération de précaution +@cindex @emph{modern voice}, style d'altération de précaution @funindex modern-voice-cautionary -Cette régle est similaire à la précédente, mais les altérations de +Cette règle est similaire à la précédente, mais les altérations de précaution (celles que n'aurait pas ajoutées @code{voice}), sont imprimées de façon particulière. On retrouve donc toutes les altérations qu'imprimerait @code{default}, mais certaines sont -considérées comme étant @qq{de précaution}. +considérées comme étant « de précaution ». @lilypond[quote] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1656,11 +1856,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1673,11 +1873,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicB } >> @@ -1690,7 +1890,7 @@ musicB = { @cindex altérations style @emph{piano} @cindex piano et altérations -@funindex piano accidentals +@funindex piano Cette règle est communément employée pour les partitions de piano au XXe siècle. Très similaire à @code{modern} de par son comportement, @@ -1704,7 +1904,7 @@ Cette règle s'applique par défaut dans un @code{GrandStaff} et dans un musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1719,11 +1919,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1736,7 +1936,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano) + \accidentalStyle "piano" \musicA } \context Staff = "down" { @@ -1761,7 +1961,7 @@ imprimées différemment. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1776,11 +1976,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1793,7 +1993,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano-cautionary) + \accidentalStyle "piano-cautionary" \musicA } \context Staff = "down" { @@ -1810,8 +2010,8 @@ musicB = { @funindex neo-modern -Cette règle suit les pratiques de la musique contemporaine@tie{}: les -altérations accidentelles apparaîssent comme dans le style +Cette règle suit les pratiques de la musique contemporaine : les +altérations accidentelles apparaissent comme dans le style @code{modern}, à ceci près qu'elles sont répétées dans la même mesure -- sauf si elles concernent deux notes consécutives. @@ -1819,7 +2019,7 @@ sauf si elles concernent deux notes consécutives. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1834,11 +2034,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1851,11 +2051,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicB } >> @@ -1876,7 +2076,7 @@ sont imprimées différemment. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1891,11 +2091,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1908,11 +2108,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicB } >> @@ -1924,7 +2124,6 @@ musicB = { @cindex @emph{neo-modern-voice}, style d'altération @cindex style d'altération @emph{neo-modern-voice} @cindex altérations multivoix -@cindex neo-modern-voice accidental style @cindex voix multiples et altérations @cindex multivoix, altérations @@ -1940,7 +2139,7 @@ en tiennent aussi compte. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1955,11 +2154,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1972,11 +2171,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicB } >> @@ -1987,7 +2186,7 @@ musicB = { @funindex neo-modern-voice-cautionary -Cette règle est indentique à @code{neo-modern-voice}, +Cette règle est identique à @code{neo-modern-voice}, mais les altérations de précaution sont imprimées soit entre parenthèses (par défaut), soit en plus petit. @@ -1995,7 +2194,7 @@ soit entre parenthèses (par défaut), soit en plus petit. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2010,11 +2209,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2027,11 +2226,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicB } >> @@ -2054,7 +2253,7 @@ altération, même si elle est naturelle. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2069,11 +2268,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2086,11 +2285,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicA } \context Staff = "down" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicB } >> @@ -2105,17 +2304,17 @@ musicB = { @funindex teaching -Cette règle est à usage pédagogique@tie{}: l'impression d'une simple +Cette règle est à usage pédagogique : l'impression d'une simple gamme fera apparaître une altération de précaution pour toute note altérée. Les altérations accidentelles sont imprimées selon le style @code{modern}, et une altération de précaution est ajoutée pour chaque dièse ou bémol à la clef -- sauf dans le cas de notes consécutives. -@lilypond[quote] +@lilypond[quote,staffsize=18] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2130,11 +2329,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2148,12 +2347,12 @@ musicB = { << \context Staff = "up" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicA } \context Staff = "down" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicB } >> @@ -2174,7 +2373,7 @@ accidentelles ne cesse jamais, même dans les mesures suivantes. musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2189,11 +2388,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2206,11 +2405,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicA } \context Staff = "down" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicB } >> @@ -2224,17 +2423,16 @@ musicB = { @funindex forget -Tout le contraire de @code{no-reset}@tie{}: l'effet des altérations -cesse aussitôt@tie{}; toutes les altérations, quelque soit leur place +Tout le contraire de @code{no-reset} : l'effet des altérations +cesse aussitôt ; toutes les altérations, quelque soit leur place dans la mesure, sont de ce fait imprimées en fonction de l'éventuelle -armure. À l'inverse du style @code{dodecaphonic}, aucun bécarre ne sera -ici imprimé. +armure. @lilypond[quote] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2249,11 +2447,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2266,11 +2464,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicA } \context Staff = "down" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicB } >> @@ -2298,28 +2496,26 @@ Référence des propriétés internes : @cindex altérations et accords @cindex accords et altérations - @knownissues - Les notes simultanées sont considérées comme des évènements séquentiels. Ceci implique que, dans un accord, les altérations accidentelles seront imprimées comme si les notes de l'accord apparaissaient l'une après l'autre, en fonction de l'ordre dans lequel elles ont été saisies -- ce qui peut poser problème lorsqu'au sein d'un accord certaines altérations dépendent les unes des autres. -Ce problème est à résoudre manuellement, en insérant des@tie{}@code{!} -et des@tie{}@code{?} après les notes concernées. +Ce problème est à résoudre manuellement, en insérant des @code{!} +et des @code{?} après les notes concernées, tel @samp{}. L'absence d'altération de précaution est déterminée par l'examen de la mesure précédente. Néanmoins, lorsqu'un bloc @code{\alternative} suit -une section @code{\repeat@tie{}volta@tie{}N}, la logique voudrait que +une section @code{\repeat volta N}, la logique voudrait que l'on regarde la dernière mesure @emph{jouée} plutôt que la dernière @emph{imprimée}. Dans l'exemple qui suit, vous conviendrez que le do de la seconde alternative ne nécessite pas son bécarre. @lilypond[quote] { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2336,12 +2532,12 @@ L'astuce suivante, qui définit temporairement le recours au style @lilypond[verbatim,quote] forget = #(define-music-function (parser location music) (ly:music?) #{ - #(set-accidental-style 'forget) - $music - #(set-accidental-style 'modern) + \accidentalStyle "forget" + #music + \accidentalStyle "modern" #}) { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2369,8 +2565,9 @@ début des partitions vocales, afin que les exécutants puissent voir au premier coup d'œil s'ils sont en mesure de tenir la partie en question. Pour exprimer l'@emph{ambitus} d'une pièce, on indique avant la clef -deux notes représentant la hauteur la plus basse et la plus haute. Les -éventuelles altérations accidentelles seront automatiquement ajoutées. +deux têtes de note représentant la hauteur la plus basse et la plus +haute. Les éventuelles altérations accidentelles seront automatiquement +ajoutées. @lilypond[verbatim,quote] \layout { @@ -2386,19 +2583,16 @@ deux notes représentant la hauteur la plus basse et la plus haute. Les } @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-ambitus-per-voice.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ambitus-with-multiple-voices.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-ambitus-gap.ly} - @seealso Glossaire musicologique : @rglos{ambitus}. @@ -2416,9 +2610,7 @@ Référence des propriétés internes : @rinternals{AmbitusNoteHead}, @rinternals{ambitus-interface}. - @knownissues - LilyPond ne gère pas les collisions entre plusieurs @emph{ambitus} présents sur une même portée. @@ -2437,6 +2629,7 @@ note. * Improvisation:: @end menu + @node Têtes de note spécifiques @unnumberedsubsubsec Têtes de note spécifiques @translationof Special note heads @@ -2451,7 +2644,7 @@ note. @funindex cross -L'apparence des têtes de note peut évoluer au cours de la partition@tie{}: +L'apparence des têtes de note peut évoluer au cours de la partition : @lilypond[verbatim,quote,relative=2] c4 b @@ -2470,7 +2663,7 @@ Pour une liste exhaustive des styles de tête de note, consultez Certains instruments utilisent des têtes de note différentes à des fins spécifiques -- des croix (style @code{cross}) pour le -@emph{parlato} des chanteurs ou les notes étouffées des guitares@tie{}: +@emph{parlato} des chanteurs ou les notes étouffées des guitares : @lilypond[verbatim,quote,relative=2] c4 b @@ -2482,7 +2675,7 @@ c4 d Cette commande opère aussi bien sur des notes isolées qu'au sein d'un accord, dans une portée traditionnelle ou dans un contexte de -tablature@tie{}: +tablature : @lilypond[verbatim,quote,relative=2] c4 b @@ -2494,15 +2687,13 @@ Vous pouvez utiliser, en lieu et place de @code{\xNote}, @code{\xNotesOn} et @code{\xNotesOff}, les commandes @code{\deadNote}, @code{\deadNotesOn} et @code{\deadNotesOff}. - Il existe un raccourci pour les notes en losange qui indiquent les -harmoniques des cordes@tie{}: +harmoniques des cordes : @lilypond[verbatim,quote,relative=2] 2 4 @end lilypond - @predefined @code{\harmonic}, @code{\xNotesOn}, @@ -2510,16 +2701,15 @@ harmoniques des cordes@tie{}: @code{\xNote}. @endpredefined - @seealso -Morceaux choisis : -@rlsrnamed{Pitches,Hauteurs}. - Manuel de notation : @ref{Styles de tête de note}, @ref{Notes en accords}, @ref{Indication des harmoniques et notes étouffées}. +Morceaux choisis : +@rlsrnamed{Pitches,Hauteurs}. + Référence des propriétés internes : @rinternals{note-event}, @rinternals{Note_heads_engraver}, @@ -2544,7 +2734,7 @@ Référence des propriétés internes : @funindex \easyHeadsOff @funindex easyHeadsOff -Les notes @qq{easy play} comportent le nom de la note à l'intérieur de +Les notes « easy play » comportent le nom de la note à l'intérieur de la tête. On l'utilise dans des partitions pour débutants. L'impression doit être de plus grande taille, afin que les lettres soient lisibles. Voir à ce propos @ref{Définition de la taille de portée}. @@ -2560,19 +2750,15 @@ Voir à ce propos @ref{Définition de la taille de portée}. } @end lilypond - @predefined @code{\easyHeadsOn}, @code{\easyHeadsOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {numbers-as-easy-note-heads.ly} - @seealso Manuel de notation : @ref{Définition de la taille de portée}. @@ -2632,7 +2818,7 @@ Référence des propriétés internes : En notation profilée, le profil d'une tête de note correspond à la fonction harmonique de cette note dans la gamme. Ce style de notation était très en vogue dans les recueils de chansons américains du XIXe -siècle. Voici comment procéder@tie{}: +siècle. Voici comment procéder : @lilypond[verbatim,quote,relative=2] \aikenHeads @@ -2649,7 +2835,7 @@ c,4 d e f g2 a b1 c \break Les profils sont déterminés par la hauteur dans la gamme, le premier degré étant défini par la commande @code{\key}. Pour une tonalité -mineure, les degrés sont déterminés par rapport au relatif majeur@tie{}: +mineure, les degrés sont déterminés par rapport au relatif majeur : @lilypond[verbatim,quote,relative=2] \key a \minor @@ -2667,8 +2853,6 @@ a2 b c d \break a2 b c d \break @end lilypond - - @predefined @code{\aikenHeads}, @code{\aikenHeadsMinor}, @@ -2682,23 +2866,20 @@ a2 b c d \break @code{\walkerHeadsMinor}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {applying-note-head-styles-depending-on-the-step-of-the-scale.ly} Pour une liste exhaustive des styles de tête de note, consultez @ref{Styles de tête de note}. - @seealso -Morceaux choisis : -@rlsrnamed{Pitches,Hauteurs}. - Manuel de notation : @ref{Styles de tête de note}. +Morceaux choisis : +@rlsrnamed{Pitches,Hauteurs}. + Référence des propriétés internes : @rinternals{note-event}, @rinternals{Note_heads_engraver}, @@ -2723,7 +2904,7 @@ Référence des propriétés internes : L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme allongée (@emph{slash}). L'interprète jouera alors les notes qu'il veut, en respectant toutefois le rythme affiché. Ces têtes de notes sont -créées ainsi@tie{}: +créées ainsi : @lilypond[verbatim,quote,relative=2] \new Voice \with { @@ -2739,13 +2920,11 @@ créées ainsi@tie{}: } @end lilypond - @predefined @code{\improvisationOn}, @code{\improvisationOff}. @endpredefined - @seealso Morceaux choisis : @rlsrnamed{Pitches,Hauteurs}. @@ -2756,3 +2935,9 @@ Référence des propriétés internes : @rinternals{RhythmicStaff}. +@c LocalWords: lilypondfile subsection translationof seealso funindex +@c LocalWords: unnumberedsubsubsec rglosnamed rlsrnamed itemize quote +@c LocalWords: rinternals rlearning snippets texidoc doctitle +@c LocalWords: ragged-right knownissues quotation multitable headitem +@c LocalWords: noindent Staff.instrumentName Staff.midiInstrument +@c LocalWords: accidentalStyle PianoStaff GrandStaff predefined diff --git a/Documentation/fr/notation/repeats.itely b/Documentation/fr/notation/repeats.itely index 236f6d70fd..f04b14bec8 100644 --- a/Documentation/fr/notation/repeats.itely +++ b/Documentation/fr/notation/repeats.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: Jean-Charles Malahieude, John Mandereau @@ -23,7 +23,7 @@ La répétition est une notion essentielle en musique, et il existe de nombreuses façons de mettre en œuvre et noter ce concept. LilyPond -prend en charge les types de répétition suivants@tie{}: +prend en charge les types de répétition suivants : @table @code @item volta @@ -53,14 +53,15 @@ Ce type permet de réaliser des trémolos sous forme de liens de croches. * Autres types de répétition:: @end menu + @node Répétition d'un long passage @subsection Répétition d'un long passage @translationof Long repeats Cette section présente la syntaxe des répétitions longues -- c'est-à-dire plusieurs mesures. Ces répétitions peuvent prendre deux -formes@tie{}: encadrées par des barres de reprises, ou bien développées -dans la partition. Les barres et autres signes de reprise peuvent être +formes : encadrées par des barres de reprises, ou bien développées dans +la partition. Les barres et autres signes de reprise peuvent être contrôlés manuellement. @menu @@ -87,7 +88,7 @@ contrôlés manuellement. @unnumberedsubsubsec Répétitions courantes @translationof Normal repeats -On peut indiquer une répétition de la façon suivante@tie{}: +On peut indiquer une répétition de la façon suivante : @example \repeat volta @var{nombre_de_fois} @var{expression_musicale} @@ -96,7 +97,7 @@ On peut indiquer une répétition de la façon suivante@tie{}: @noindent où @code{@var{expression_musicale}} représente ce qui doît être répété. -Les reprises courantes, sans alternative, s'indiquent comme ceci@tie{}: +Les reprises courantes, sans alternative, s'indiquent comme ceci : @lilypond[verbatim,quote,relative=2] \repeat volta 2 { c4 d e f } @@ -106,8 +107,7 @@ c2 d On peut ajouter une fin alternative à l'aide de la commande @code{\alternative}. Chaque @code{@var{alternative}} est une expression -musicale en elle-même@tie{}; il faudra donc les regrouper par des -accolades. +musicale en elle-même ; il faudra donc les regrouper par des accolades. @example \repeat volta @var{nombre_de_fois} @var{expression_musicale} @@ -148,8 +148,8 @@ qu'aucun caractère n'apparaisse entre l'accolade fermant une alternative et l'accolade ouvrant la suivante, au risque de ne pas obtenir le nombre voulu d'alternatives.} -@warning{Une clause @code{@bs{}relative} ne doît jamais se trouver à -l'intérieur d'une section @code{@bs{}repeat}@tie{}: vous aurez +@warning{Une clause @code{@bs{}relative} ne doit jamais se trouver à +l'intérieur d'une section @code{@bs{}repeat} : vous aurez immanquablement des portées parasites. Voir @rprogram{Apparition d'une portée supplémentaire}.} @@ -163,9 +163,9 @@ immanquablement des portées parasites. Voir Lorsqu'une reprise sans fins alternatives débute au milieu d'une mesure, elle devrait se terminer aussi au milieu d'une mesure, de telle sorte que les mesures soient complètes. En pareil cas, les indications de -reprise ne constituent pas des barres de mesure à proprement -parler@tie{}; il n'est donc pas nécessaire de faire appel à la commande -@code{\partial} ou à des contrôles d'intégrité de mesure. +reprise ne constituent pas des barres de mesure à proprement parler ; il +n'est donc pas nécessaire de faire appel à la commande @code{\partial} +ou à des contrôles d'intégrité de mesure. @lilypond[verbatim,quote,relative=1] % no \partial here @@ -186,7 +186,7 @@ g1 | Il est possible de créer des reprises en début de morceau avec une levée. Le cas est similaire à ce que nous venons de voir. Toutefois, l'utilisation d'un @code{\partial} est ici nécessaire pour respecter -cette entâme. +cette entame. @lilypond[verbatim,quote,relative=1] \partial 4 % required @@ -204,7 +204,7 @@ g1 | Lorsqu'une reprise débute par une mesure incomplète et a des fins alternatives, il est indispensable d'ajuster manuellement la propriété -@code{Timing.measureLength} selon les préceptes suivants@tie{}: +@code{Timing.measureLength} selon les préceptes suivants : @itemize @item @@ -236,14 +236,32 @@ g1 | La propriété @code{measureLength} est abordée plus en détail au chapitre @ref{Gestion du temps}. +@funindex \inStaffSegno + +La commande @code{\inStaffSegno} permet d'adjoindre un symbole de +@emph{segno} à une commande @code{\repeat volta}. Des symboles +alternatifs de barre de mesure peuvent sont accessibles, dans un +contexte @code{Score}, à l'aide des propriétés @code{segnoType}, +@code{startRepeatSegnoType}, @code{endRepeatSegnoType} ou +@code{doubleRepeatSegnoType} selon les besoins. + +@lilypond[verbatim,quote,relative=1] +e1 +\repeat volta 2 { + \inStaffSegno + f2 g a b +} +c1_"D.S." \bar "|." +@end lilypond + @cindex reprise et liaison de prolongation @cindex alternative et liaison de prolongation -@cindex liaison de prolongationt et reprise +@cindex liaison de prolongation et reprise @cindex liaison de prolongation et alternative @funindex \repeatTie -Des liaisons de tenue peuvent être ajoutées à toute alternative@tie{}: +Des liaisons de tenue peuvent être ajoutées à toute alternative : @lilypond[verbatim,quote,relative=2] c1 @@ -255,16 +273,21 @@ c1 @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {shortening-volta-brackets.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-volta-brackets-to-additional-staves.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-double-repeat-default-for-volte.ly} +@cindex reprises et numéros de mesure +@cindex numéro de mesure et reprise +@cindex mesure, numérotation et reprises + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} @seealso Glossaire musicologique : @@ -285,9 +308,7 @@ Référence des propriétés internes : @rinternals{VoltaRepeatedMusic}, @rinternals{UnfoldedRepeatedMusic}. - @knownissues - @cindex reprises ambigües @cindex reprises imbriquées @cindex imbrication de reprises @@ -334,7 +355,7 @@ de clarté. @warning{Les méthodes présentées dans les lignes qui suivent ne devraient servir à indiquer que des constructions de répétition -inhabituelles. En règle générale, il vaut mieux recourrir à la fonction +inhabituelles. En règle générale, il vaut mieux recourir à la fonction @code{@bs{}repeat} pour créer une reprise ou bien insérer la barre de mesure adéquate. Pour plus d'information, voir le chapitre @ref{Barres de mesure}.} @@ -369,7 +390,7 @@ c1 @item (volta @var{nombre}) @dots{} (volta #f) Pour obtenir un crochet indiquant le numéro de l'alternative. Pour que le crochet s'imprime effectivement, il faut spécifier explicitement -l'endroit où il doît se terminer. +l'endroit où il doit se terminer. @lilypond[verbatim,quote,relative=2] f4 g a b @@ -381,7 +402,7 @@ c1 @end table -Plusieurs commande de reprise peuvent intervenir au même moment@tie{}: +Plusieurs commandes de reprise peuvent intervenir au même moment : @lilypond[verbatim,quote,relative=2] f4 g a b @@ -400,13 +421,14 @@ Le crochet indiquant une alternative peut contenir aussi du texte. Il peut s'agir d'un ou plusieurs nombres ou bien d'une indication textuelle (@emph{markup}) -- voir @ref{Mise en forme du texte}. Le plus simple, dans le cas d'une indication textuelle, est de tout d'abord définir ce -@code{markup}, puis de l'inclure dans une liste Scheme. +@emph{markup}, puis de l'inclure dans une liste Scheme. @lilypond[verbatim,quote] voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } \relative c'' { c1 - \set Score.repeatCommands = #(list(list 'volta voltaAdLib) 'start-repeat) + \set Score.repeatCommands = + #(list(list 'volta voltaAdLib) 'start-repeat) c4 b d e \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat) f1 @@ -414,13 +436,10 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } } @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly} - @seealso Manuel de notation : @ref{Barres de mesure}, @@ -448,7 +467,7 @@ Référence des propriétés internes : Adjoindre à la commande @code{\repeat} l'opion @code{unfold} permet de s'affranchir de ressaisir de la musique répétitive. En voici la -syntaxe@tie{}: +syntaxe : @example \repeat unfold @var{nombre_de_fois} @var{expression_musicale} @@ -463,7 +482,22 @@ que stipulé par @var{nombre_de_fois}. c1 @end lilypond -Une répétition expansée peut aussi avoir une fin alternative@tie{}: +Dans certains cas, et tout particulièrement dans un contexte +@code{\relative}, la fonction @code{\repeat unfold} ne revient pas à +écrire littéralement la même expression musicale plusieurs fois. +Ainsi : + +@example +\repeat unfold 2 @{ a'4 b c @} +@end example + +n'est pas équivalent à + +@example +a'4 b c | a'4 b c +@end example + +Une répétition expansée peut aussi avoir une fin alternative : @lilypond[verbatim,quote,relative=2] \repeat unfold 2 { g4 f e d } @@ -503,7 +537,7 @@ c1 @end lilypond Vous pouvez imbriquer plusieurs fonctions @code{unfold}, qu'elles -comportent ou non des fins alternatives@tie{}: +comportent ou non des fins alternatives : @lilypond[verbatim,quote,relative=2] \repeat unfold 2 { @@ -516,14 +550,18 @@ comportent ou non des fins alternatives@tie{}: c1 @end lilypond +Une construction en accord peut se répéter à l'aide du symbole @code{q} +-- voir @ref{Répétition d'accords}. @warning{L'insertion d'un @code{@bs{}relative} dans une section @code{@bs{}repeat} sans déclaration explicite du contexte @code{Voice} génèrera une portée supplémentaire -- voir @rprogram{Apparition d'une portée supplémentaire}.} - @seealso +Manuel de notation : +@ref{Répétition d'accords}. + Morceaux choisis : @rlsrnamed{Repeats,Répétitions}. @@ -546,6 +584,7 @@ trémolos. * Répétitions en trémolo:: @end menu + @node Répétitions de mesure @unnumberedsubsubsec Répétitions de mesure @translationof Percent repeats @@ -559,21 +598,24 @@ trémolos. @funindex \repeat percent @funindex percent -Le style de @qq{reprise en pourcent} sert à répéter une séquence de +Le style de « reprise en pourcent » sert à répéter une séquence de notes. Elle sera imprimée une fois, puis remplacée par un symbole spécial. -En voici la syntaxe@tie{}: +En voici la syntaxe : @example \repeat percent @var{nombre} @var{expression_musicale} @end example - Les séquences inférieures à une mesure sont remplacées par une barre oblique. @lilypond[verbatim,quote,relative=2] +\repeat percent 4 { c128 d e f } +\repeat percent 4 { c64 d e f } +\repeat percent 5 { c32 d e f } +\repeat percent 4 { c16 d e f } \repeat percent 4 { c8 d } \repeat percent 4 { c4 } \repeat percent 2 { c2 } @@ -583,26 +625,33 @@ Les séquences d'une ou deux mesures sont remplacées par un symbole qui ressemble au symbole de pourcentage. @lilypond[verbatim,quote,relative=2] -\repeat percent 3 { c4 d e f } -\repeat percent 4 { c2 d } +\repeat percent 2 { c4 d e f } +\repeat percent 2 { c2 d } +\repeat percent 2 { c1 } @end lilypond @lilypond[verbatim,quote,relative=2] \repeat percent 3 { c4 d e f | c2 g' } @end lilypond -@snippets +Les séquences inférieures à la mesure et qui contiennent des durées +différentes sont remplacées par un double symbole de pourcentage. + +@lilypond[verbatim,quote,relative=2] +\repeat percent 4 { c8. 16 } +\repeat percent 2 { \times 2/3 { r8 c d } e4 } +@end lilypond -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-counter.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-count-visibility.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {isolated-percent-repeats.ly} - @seealso Glossaire musicologique : @rglos{percent repeat}, @@ -613,23 +662,21 @@ Morceaux choisis : Référence des propriétés internes : @rinternals{RepeatSlash}, +@rinternals{RepeatSlashEvent}, +@rinternals{DoubleRepeatSlash}, @rinternals{PercentRepeat}, +@rinternals{PercentRepeatCounter}, +@rinternals{PercentRepeatedMusic}, +@rinternals{Percent_repeat_engraver}, +@rinternals{DoublePercentEvent}, @rinternals{DoublePercentRepeat}, @rinternals{DoublePercentRepeatCounter}, @rinternals{PercentRepeatCounter}, @rinternals{PercentRepeatedMusic}. +@rinternals{Double_percent_repeat_engraver}, +@rinternals{Slash_repeat_engraver}. -@knownissues - -LilyPond ne dispose que de trois signes différents pour indiquer une -répétition @qq{en pourcent}@tie{}: une simple barre oblique qui -représente un seul temps quelle que soit la durée des notes -répétées@tie{}; une barre oblique simple entourée de points qui -représente une mesure entière@tie{}; une double barre oblique entourée -de points et placée sur la barre de mesure pour indiquer une répétition -de deux mesures. - @node Répétitions en trémolo @unnumberedsubsubsec Répétitions en trémolo @translationof Tremolo repeats @@ -640,7 +687,7 @@ de deux mesures. @funindex \repeat tremolo @funindex tremolo -Il y a deux formes de trémolo@tie{}: la répétition alernative de deux +Il y a deux formes de trémolo : la répétition alernative de deux notes ou accords, et la répétition rapide d'une seule note ou d'un accord. Lorsqu'il est constitué d'une alternance répétitive, le trémolo s'indique en ajoutant des barres de ligature entre les deux notes ou @@ -648,7 +695,7 @@ accords concernés. Lorsqu'il s'agit d'une répétition rapide, des barres de ligature penchées sont ajoutées à la note en question. On peut placer une notation de trémolo entre deux notes, avec la -commande @code{\repeat} suivie du style trémolo@tie{}: +commande @code{\repeat} suivie du style trémolo : @lilypond[quote,verbatim,relative=2] \repeat tremolo 8 { c16 d } @@ -656,26 +703,25 @@ commande @code{\repeat} suivie du style trémolo@tie{}: \repeat tremolo 2 { c16 d } @end lilypond -La syntaxe de @code{\repeat tremolo} requiert espressément deux notes +La syntaxe de @code{\repeat tremolo} requiert expressément deux notes encadrées par des accolades, et le nombre de répétitions exprimé en durée d'une note (pointée ou non). Ainsi, dans l'exemple ci-dessus, -@code{\repeat@tie{}tremolo@tie{}7} est valide car correspond à une note -doublement pointée, à l'inverse de @code{\repeat@tie{}tremolo@tie{}9}. +@code{\repeat tremolo 7} est valide car correspond à une note +doublement pointée, à l'inverse de @code{\repeat tremolo 9}. La durée d'un trémolo est égale à la durée de l'expression entre -accolades multipliée par le nombre de fois à répéter@tie{}: -@code{\repeat@tie{}tremolo@tie{}8@tie{}@{@tie{}c16@tie{}d16@tie{}@}} -correspond donc à la valeur d'une ronde, et sera représenté par deux -rondes séparées par des barres de trémolo. +accolades multipliée par le nombre de fois à répéter : +@code{\repeat tremolo 8 @{ c16 d16 @}} correspond donc à la valeur d'une +ronde, et sera représenté par deux rondes séparées par des barres de +trémolo. On peut indiquer de la même manière un trémolo sur une seule note, qu'il -faudra alors laisser sans accolades@tie{}: +faudra alors laisser sans accolades : @lilypond[quote,verbatim,ragged-right] \repeat tremolo 4 c'16 @end lilypond - @cindex trémolo, indication de @funindex tremoloFlags @@ -683,8 +729,8 @@ faudra alors laisser sans accolades@tie{}: Le même résultat s'obtient en faisant suivre la note considérée de deux points et d'un nombre (@w{@code{note:@var{nombre}}}). -Le nombre en question correspond à la valeur de la subdivision@tie{}; -il doit être au moins de 8, auquel cas la hampe sera barrée par un +Le nombre en question correspond à la valeur de la subdivision ; +il doit être au moins de 8, auquel cas la hampe sera barrée par un seul trait de ligature. Si ce nombre est omis, la dernière valeur -- telle que mémorisée dans @code{tremoloFlags} -- sera utilisée. @@ -694,11 +740,9 @@ c: c: @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {cross-staff-tremolos.ly} - @seealso Morceaux choisis : @rlsrnamed{Repeats,Répétitions}. diff --git a/Documentation/fr/notation/rhythms.itely b/Documentation/fr/notation/rhythms.itely index 1d2cdda386..c0b86a3845 100644 --- a/Documentation/fr/notation/rhythms.itely +++ b/Documentation/fr/notation/rhythms.itely @@ -1,17 +1,16 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 1f655fba7d94feb67f846785f47ab6fb20dc2e59 + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Frédéric Chiasson, Jean-Charles Malahieude -@c Translation checkers: Valentin Villenave, Jean-Charles Malahieude, -@c François Martin, Xavier Scheuer +@c Translation checkers: Valentin Villenave, François Martin, Xavier Scheuer @node Rythme @section Rythme @@ -19,7 +18,7 @@ @lilypondfile[quote]{rhythms-headword.ly} -Cette section traite du rythme@tie{}: durées, silences, barres de +Cette section traite du rythme : durées, silences, barres de ligature et de mesure. @menu @@ -43,6 +42,7 @@ ligature et de mesure. * Liaisons de prolongation:: @end menu + @node Durées @unnumberedsubsubsec Durées @translationof Durations @@ -59,7 +59,7 @@ ligature et de mesure. @funindex maxima Dans les modes de notes, d'accords et de paroles, les durées sont -écrites avec des chiffres et des points@tie{}: les durées sont indiquées +écrites avec des chiffres et des points : les durées sont indiquées par leur valeur fractionnaire par rapport à la durée d'une ronde. Une noire, par exemple, qui équivaut à un 1/4 de ronde -- @emph{quarter note} en anglais -- s'écrit @code{4}, alors qu'une blanche -- @@ -144,7 +144,6 @@ sauf dans certaines polyphonies. Des commandes prédéfinies permettent de manuellement forcer une orientation particulière, comme indiqué au chapitre @ref{Direction et positionnement}. - @predefined @code{\autoBeamOn}, @code{\autoBeamOff}, @@ -153,13 +152,13 @@ chapitre @ref{Direction et positionnement}. @code{\dotsNeutral}. @endpredefined - @snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{alternative-breve-note.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-number-of-augmentation-dots-per-note.ly} - @seealso Glossaire musicologique : @rglos{breve}, @@ -185,9 +184,7 @@ Référence des propriétés internes : @rinternals{Dots}, @rinternals{DotColumn}. - @knownissues - @c Deliberately duplicated in Durations and Rests. -gp Il n'existe pas à proprement parler de limite (inférieure ou supérieure) en terme de durée d'un silence. Cependant, le nombre de glyphes @@ -205,7 +202,7 @@ soupir à la maxime (valant huit pauses). @funindex \times @funindex times -Les nolets -- triolets, quintolets, etc. -- sont obtenus en +Les nolets -- triolets, quintolets etc. -- sont obtenus en multipliant toutes les durées d'une expression musicale par une fraction. @@ -217,7 +214,7 @@ fraction. La durée de l'@code{@var{expression_musicale}} sera multipliée par la fraction. Le dénominateur de cette fraction sera imprimé au-dessus ou au-dessous des notes, parfois avec un crochet. Le nolet le plus courant -est le triolet, dans lequel 3 notes ont la durée de 2, et où les notes +est le triolet, dans lequel 3 notes ont la durée de 2, et où les notes durent donc 2/3 de leur valeur écrite. @lilypond[quote,verbatim,relative=2] @@ -238,7 +235,7 @@ Des commandes prédéfinies permettent de déroger au positionnement automatique du crochet en surplomb ou au-dessous des notes -- voir le chapitre @ref{Direction et positionnement}. -Les nolets peuvent être imbriqués@tie{}; par exemple, +Les nolets peuvent être imbriqués ; par exemple, @lilypond[quote,verbatim,relative=2] \autoBeamOff @@ -251,7 +248,6 @@ vous faut recourir à la commande @code{\tweak}. Vous pouvez interférer sur la durée des notes sans imprimer de crochet, comme indiqué au chapitre @ref{Changement d'échelle des durées}. - @predefined @code{\tupletUp}, @code{\tupletDown}, @@ -266,26 +262,25 @@ comme indiqué au chapitre @ref{Changement d'échelle des durées}. @funindex tupletNumberFormatFunction @funindex tupletSpannerDuration -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {entering-several-tuplets-using-only-one--times-command.ly} @cindex nolet, modification du chiffre @funindex TupletNumber -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-tuplet-number.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {non-default-tuplet-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-tuplet-bracket-visibility.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {permitting-line-breaks-within-beamed-tuplets.ly} - @seealso Glossaire musicologique : @rglosnamed{triplet,triolet}, @@ -309,7 +304,6 @@ Références des propriétés internes : @rinternals{TupletNumber}, @rinternals{TimeScaledMusic}. - @cindex notes d'ornement et crochet de nolet @knownissues @@ -333,12 +327,15 @@ comme indiqué au chapitre @rlearning{Les voix contiennent la musique}. @cindex échelonnement des durées @cindex durées, échelonnement -Vous pouvez altérer la durée des notes, silences ou accords en leur -joignant une fraction @var{N/D}, donnant @qq{@code{*}@var{N/D}} -- ou +La durée des notes, silences ou accords peu se modifier en leur +adjoignant une fraction @var{N/D}, donnant @qq{@code{*}@var{N/D}} -- ou @qq{@code{*}@var{N}} si @var{D=1}. Ceci ne modifiera en rien l'apparence des notes ou silences produits, mais affectera le positionnement de l'objet dans la mesure, ainsi que le rendu MIDI. Cette -fraction peut elle-même être multipliée du style @code{*M*N/D}. +fraction peut elle-même être multipliée, ce qui donne quelque chose du +style @code{*M*N/D}. Ce facteur d'échelonnement est partie intégrante +de la durée : en l'absence de durée explicite à la note suivante, +cette durée échelonnée est considérée comme valeur par défaut. Dans l'exemple suivant, les trois premières notes prennent exactement deux temps, mais aucun triolet n'est imprimé. @@ -346,9 +343,9 @@ deux temps, mais aucun triolet n'est imprimé. @lilypond[quote,relative=2,verbatim] \time 2/4 % Alter durations to triplets -a4*2/3 gis4*2/3 a4*2/3 +a4*2/3 gis a % Normal durations -a4 a4 +a4 a % Double the duration of chord 4*2 % Duration of quarter, appears like sixteenth @@ -369,22 +366,21 @@ tout simplement de sauter plusieurs mesures, comme par exemple un Il est tout à fait possible d'échelonner des fragments musicaux plus ou moins longs à l'aide d'une simple fraction, comme si chaque note, accord ou silence était affecté de ce même quotient. L'apparence de cette -musique ne sera en rien modifiée@tie{}; seule la durée des notes est +musique ne sera en rien modifiée ; seule la durée des notes est multipliée en interne par la fraction -@emph{numérateur}/@emph{dénominateur}. N'oubliez pas de préserver les -espaces de part et d'autre du point. Voici un exemple illustrant la -manière de comprimer ou étirer de la musique@tie{}: +@emph{numérateur}/@emph{dénominateur}. Voici un exemple illustrant la +manière de comprimer ou étirer de la musique : @lilypond[quote,relative=2,verbatim] \time 2/4 % Normal durations 4 c8 a % Scale music by *2/3 -\scaleDurations #'(2 . 3) { +\scaleDurations 2/3 { 4. c8 a f } % Scale music by *2 -\scaleDurations #'(2 . 1) { +\scaleDurations 2/1 { 4 c8 b } @end lilypond @@ -393,7 +389,6 @@ manière de comprimer ou étirer de la musique@tie{}: Cette technique est tout à fait appropriée à la notation polymétrique -- voir @ref{Notation polymétrique}. - @seealso Manuel de notation : @ref{Nolets}, @@ -429,8 +424,7 @@ a2 ~ a Les liaisons de tenue sont utilisées soit lorsque la note dépasse de la mesure, soit quand les points ne suffisent pas à donner la bonne durée. Lorsque l'on utilise ces liaisons, les valeurs rythmiques les plus -longues doivent s'aligner sur les subdivisions de la mesure, comme -ici@tie{}: +longues doivent s'aligner sur les subdivisions de la mesure, comme ici : @c KEEP LY @lilypond[verbatim,quote] @@ -469,7 +463,7 @@ accords. @funindex repeatTie Lorsqu'une mesure @qq{de seconde fois} après une reprise commence sur -une note liée, la liaison doit être répétée, comme ici@tie{}: +une note liée, la liaison doit être répétée, comme ici : @lilypond[quote,relative=2,verbatim] \repeat volta 2 { c g 2 ~ } @@ -489,7 +483,7 @@ une note liée, la liaison doit être répétée, comme ici@tie{}: Les liaisons @qq{Laissez vibrer} (@notation{L.v.}) sont utilisées pour le piano, la harpe, et certains instruments de percussion. Elles indiquent à l'instrumentiste de laisser sonner la note ou l'accord au -lieu de l'étouffer. Elles s'indiquent de la manière suivante@tie{}: +lieu de l'étouffer. Elles s'indiquent de la manière suivante : @lilypond[quote,verbatim,relative=1] 1\laissezVibrer @@ -535,7 +529,7 @@ c2 ~ c c2 ~ c @end lilypond -Il est même possible d'en personnaliser l'allure@tie{}: +Il est même possible d'en personnaliser l'allure : @lilypond[quote, verbatim, relative=1] \tieDashPattern #0.3 #0.75 @@ -551,6 +545,22 @@ discontinue formant une liaison se définit de la même manière. Pour de plus amples détails à ce sujet, reportez vous au chapitre @ref{Liaisons d'articulation}. +Dans le cas où une liaison est recouverte par d'autres éléments de la +portée, une adaptation des propriétés @var{whiteout} et @var{layer} +permet d'obtenir une meilleur lisibilité. + +@lilypond[verbatim,quote,ragged-right,relative=2] +\override Tie #'layer = #-2 +\override Staff.TimeSignature #'layer = #-1 +\override Staff.KeySignature #'layer = #-1 +\override Staff.TimeSignature #'whiteout = ##t +\override Staff.KeySignature #'whiteout = ##t +b2 b~ +\time 3/4 +\key a \major +b r4 +@end lilypond + @predefined @code{\tieUp}, @code{\tieDown}, @@ -563,16 +573,13 @@ plus amples détails à ce sujet, reportez vous au chapitre @code{\tieSolid}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-ties-with-arpeggios.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {engraving-ties-manually.ly} - @seealso Glossaire musicologique : @rglosnamed{tie,liaison de tenue}, @@ -583,7 +590,8 @@ Manuel de notation : @ref{Découpage automatique des notes}. Morceaux choisis : -@rlsrnamed{Rhythms,Rythme}. +@rlsrnamed{Expressive marks, Signes d'interprétation}, +@rlsrnamed{Rhythms, Rythme}. Référence des propriétés internes : @rinternals{LaissezVibrerTie}, @@ -591,8 +599,6 @@ Référence des propriétés internes : @rinternals{TieColumn}, @rinternals{Tie}. - - @knownissues Un changement de portée, lorsqu'une liaison de tenue est active, ne peut produire une liaison oblique. @@ -615,6 +621,7 @@ notes. * Silences valant une mesure:: @end menu + @node Silences @unnumberedsubsubsec Silences @translationof Rests @@ -635,7 +642,7 @@ notes. Les silences sont écrits comme des notes avec le nom de note @code{r} -- premier caractère du mot @emph{rest}. Les durées supérieures à la pause -s'indiquent à l'aide de commandes prédéfinies@tie{}: +s'indiquent à l'aide de commandes prédéfinies : @c \time 16/1 is used to avoid spurious bar lines @c and long tracts of empty measures @@ -664,6 +671,7 @@ leur utilisation est expliquée dans la section @ref{Silences valant une mesure}. @cindex silence, spécification du positionnement vertical +@cindex note silencieuse Pour spécifier explicitement la position verticale d'un silence, écrivez une note suivie de @code{\rest}. Un silence de même durée sera placé @@ -676,11 +684,9 @@ a4\rest d4\rest @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {rest-styles.ly} - @seealso Glossaire musicologique : @rglos{breve}, @@ -696,9 +702,7 @@ Morceaux choisis : Référence des propriétés internes : @rinternals{Rest}. - @knownissues - @c Deliberately duplicated in Durations and Rests. -gp Il n'existe pas à proprement parler de limite (inférieure ou supérieure) en terme de durée d'un silence. Cependant, le nombre de glyphes @@ -720,7 +724,7 @@ soupir à la maxime (équivalant à huit pauses). Un silence invisible -- que l'on pourrait appeler un @qq{saut} -- peut être entré comme une note avec le nom de note @code{s} ou avec -@code{\skip@tie{}@var{durée}}@tie{}: +@code{\skip @var{durée}} : @lilypond[verbatim,quote,relative=2] c4 c s c @@ -733,7 +737,7 @@ s2 c La syntaxe @code{s} est seulement disponible pour les modes d'entrée de notes et d'accords. Dans les autres situations, pour l'entrée de paroles par exemple, vous devrez utiliser la commande @code{\skip}, qui -requiert une durée explicite@tie{}; cette durée ne sera pas prise en +requiert une durée explicite ; cette durée ne sera pas prise en considération dès lors que les paroles suivent le rythme des notes de la mélodie à laquelle vous les aurez associées à l'aide des commandes @code{\addlyrics} ou @code{\lyricsto}. @@ -753,7 +757,7 @@ mélodie à laquelle vous les aurez associées à l'aide des commandes Gardez à l'esprit que @code{\skip} est une commande, et de ce fait n'affectera en rien la durée des notes qui suivent, contrairement à -un@tie{}@code{s}. +un @code{s}. @lilypond[quote,verbatim,relative=2] << @@ -769,14 +773,13 @@ un@tie{}@code{s}. La commande de saut génère simplement une case musicale vide. Le code de saut @code{s} crée tout de même les contextes @code{Staff} et -@code{Voice} lorsque nécessaire, à l'instar des notes ou des -silences@tie{}: +@code{Voice} lorsque nécessaire, à l'instar des notes ou des silences : @lilypond[quote,verbatim,relative=2] s1 s s @end lilypond -Un @code{\skip} ne fait que sauter du temps musical@tie{}; il ne produit +Un @code{\skip} ne fait que sauter du temps musical ; il ne produit rien du tout, pas même un symbole transparent. @lilypond[quote,verbatim,relative=2] @@ -784,7 +787,6 @@ rien du tout, pas même un symbole transparent. \skip 1 \skip1 \skip 1 @end lilypond - @seealso Manuel d'initiation : @rlearning{Visibilité et couleur des objets}. @@ -827,7 +829,7 @@ b2^"Tutti" b4 a4 Ceci ne peut être utile que pour une mesure complètement vide. Sa durée doit donc correspondre à la longueur de la mesure telle que définie par la métrique. C'est la raison pour laquelle on utilisera aussi des -points d'augmentation ou des fractions@tie{}: +points d'augmentation ou des fractions : @lilypond[quote,verbatim,relative=2] \compressFullBarRests @@ -843,7 +845,7 @@ R4*5*4 | Un @code{R} qui s'étend sur une seule mesure s'imprime tantôt comme une pause, tantôt comme une brève -- ou @qq{bâton de pause} -- et -sera centré sur la mesure quelle qu'en soit la métrique@tie{}: +sera centré sur la mesure quelle qu'en soit la métrique : @lilypond[quote,verbatim,relative=2] \time 4/4 @@ -864,7 +866,7 @@ R1*2 | Par défaut, un silence multimesures sera répété sur autant de mesures que nécessaire. Il peut aussi n'être imprimé qu'une seule fois, -surplombé du nombre de mesures vides -- ou @qq{à compter}@tie{}: +surplombé du nombre de mesures vides -- ou @qq{à compter} : @lilypond[quote,verbatim,relative=2] % Default behavior @@ -880,7 +882,6 @@ r1 | R1*17 | R1*4 | R2.*2 | @end lilypond - @cindex texte indiquant le nombre de mesures vides @cindex silence multimesure, ajout de texte @cindex script et silence multimesure @@ -897,7 +898,7 @@ R2.*2 | Vous pouvez aussi ajouter du texte à un silence multimesures en utilisant la syntaxe @w{@var{note}-@code{markup}} (cf. @ref{Mise en forme du texte}). La variable @code{\fermataMarkup} quant -à elle permet d'ajouter un point d'orgue@tie{}: +à elle permet d'ajouter un point d'orgue : @lilypond[quote,verbatim,relative=2] \compressFullBarRests @@ -925,7 +926,6 @@ Un silence multimesures placé directement après une commande @code{\partial} risque fort de perturber le vérificateur de limites et numéros de mesure. - @funindex \textLengthOn @funindex textLengthOn @funindex \textLengthOff @@ -945,25 +945,23 @@ numéros de mesure. @code{\expandFullBarRests}. @endpredefined - @snippets @cindex silence d'église @cindex kirchenpausen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-form-of-multi-measure-rests.ly} @cindex silence multimesure, positionnement @cindex positionnement des silences multimesure -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {positioning-multi-measure-rests.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {multi-measure-rest-markup.ly} - @seealso Glossaire musicologique : @rglosnamed{multi-measure rest,silence multimesures}. @@ -982,12 +980,10 @@ Référence des propriétés internes : @rinternals{MultiMeasureRestNumber}, @rinternals{MultiMeasureRestText}. - @cindex doigtés et silences multimesure @cindex silences multimesure et doigtés @knownissues - Vous ne pouvez pas utiliser de doigtés (p. ex. @code{R1*10-4}) pour positionner des nombres au dessus d'un silence multimesure, le numéro de doigt (4) risquant de chevaucher le nombre de mesures à compter (10). @@ -1018,6 +1014,7 @@ silences. * Gravure de lignes rythmiques:: @end menu + @node Métrique @unnumberedsubsubsec Métrique @translationof Time signature @@ -1029,9 +1026,9 @@ silences. @funindex \time @funindex time -Le chiffre de mesure indique le mètre d'une pièce@tie{}: une alternance +Le chiffre de mesure indique le mètre d'une pièce : une alternance régulière de temps forts et de temps faibles. Il est indiqué par une -fraction au début de la portée@tie{}: +fraction au début de la portée : @lilypond[quote,verbatim,relative=2] \time 2/4 c2 @@ -1065,7 +1062,7 @@ c c c c @funindex defaultTimeSignature Le symbole de métrique utilisé pour les mesures à 2/2 et 4/4 peut être -changé pour un style numérique@tie{}: +changé pour un style numérique : @lilypond[quote,verbatim,relative=2] % Default style @@ -1081,7 +1078,6 @@ changé pour un style numérique@tie{}: \time 2/2 c1 @end lilypond - Les métriques anciennes font l'objet d'un @rusernamed{Métriques anciennes, chapitre particulier}. @@ -1096,14 +1092,14 @@ En plus de déterminer la métrique qui sera imprimée, la commande @code{baseMoment}, @code{beatStructure} et @code{beamExceptions}. Les valeurs prédéterminées par défaut de ces différentes propriétés sont inscrites dans le fichier @file{scm/time-signature-settings.scm}. Vous -pouvez les modifier de la manière suivante@tie{}: +pouvez les modifier de la manière suivante : @lilypond[quote,verbatim] \score { \relative c' { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1112,18 +1108,17 @@ pouvez les modifier de la manière suivante@tie{}: } @end lilypond -@code{\overrideTimeSignatureSettings} prend quatre arguments@tie{}: +@code{\overrideTimeSignatureSettings} prend quatre arguments : @enumerate @item -@code{@var{timeSignatureFraction}}, un doublet Scheme indiquant la +@code{@var{timeSignatureFraction}}, une fraction indiquant la métrique, @item -@code{@var{baseMomentFraction}}, un doublet Scheme comprenant les -numérateur et dénominateur de la fraction indiquant la base de la -pulsation, +@code{@var{baseMomentFraction}}, une fraction comprenant les numérateur +et dénominateur de la fraction indiquant la base de la pulsation, @item @code{@var{beatStructure}}, une liste Scheme indiquant la structure de @@ -1148,8 +1143,8 @@ musical. \relative c' { % This call will fail because the context isn't yet instantiated \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1157,8 +1152,8 @@ musical. \repeat unfold 7 { c8 } | % This call will succeed \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1173,20 +1168,20 @@ musical. @funindex \revertTimeSignatureSettings Vous pouvez revenir à tout moment aux réglages prédéterminés d'une -métrique@tie{}: +métrique : @lilypond[quote,verbatim] \score{ \relative c' { \repeat unfold 8 { c8 } | \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 \repeat unfold 8 { c8 } | - \revertTimeSignatureSettings #'(4 . 4) + \revertTimeSignatureSettings 4/4 \time 4/4 \repeat unfold 8 { c8 } | } @@ -1196,16 +1191,15 @@ métrique@tie{}: Le fait de déplacer du contexte @code{Score} au contexte @code{Staff} à la fois le @code{Timing_translator} et le @code{Default_bar_line_engraver} permet d'obtenir des réglages -particuliers pour les différentes portées d'un regroupement@tie{}: - +particuliers pour les différentes portées d'un regroupement : @lilypond[quote, verbatim] \score { \new StaffGroup << \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1213,8 +1207,8 @@ particuliers pour les différentes portées d'un regroupement@tie{}: } \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(1 3) % beatStructure #'() % beamExceptions \time 4/4 @@ -1241,22 +1235,10 @@ particuliers pour les différentes portées d'un regroupement@tie{}: @code{\defaultTimeSignature}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{changing-the-time-signature-without-affecting-the-beaming.ly} - -@cindex métriques composites -@cindex métriques décomposées - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly} - @seealso Glossaire musicologique : @rglosnamed{time signature,métrique}. @@ -1284,7 +1266,7 @@ Références des propriétés internes : @funindex \tempo @funindex tempo -Une indication métronomique s'insère tout simplement comme ceci@tie{}: +Une indication métronomique s'insère tout simplement comme ceci : @lilypond[verbatim,quote,relative=1] \tempo 4 = 120 @@ -1293,7 +1275,7 @@ e4. d8 c2 @end lilypond Lorsque le réglage précis du métronome est laissé à l'appréciation de -l'exécutant, vous pouvez cependant lui fournir une plage@tie{}: +l'exécutant, vous pouvez cependant lui fournir une plage : @lilypond[verbatim,quote,relative=1] \tempo 4 = 40 ~ 46 @@ -1301,7 +1283,7 @@ c4. e8 a4 g b,2 d4 r @end lilypond -Vous pouvez préférer une indication textuelle@tie{}: +Vous pouvez préférer une indication textuelle : @lilypond[verbatim,quote,relative=2] \tempo "Allegretto" @@ -1310,7 +1292,7 @@ b4. a16 b c4 r4 @end lilypond Lorsque vous combinez des indications métronomiques sous forme textuelle -et numérique, l'indication numérique sera placée entre parenthèses@tie{}: +et numérique, l'indication numérique sera placée entre parenthèses : @lilypond[verbatim,quote,relative=2] \tempo "Allegro" 4 = 160 @@ -1319,7 +1301,7 @@ d4 b g2 @end lilypond En matière d'indication textuelle, vous pouvez utiliser n'importe quel -objet de type @emph{markup}, comme ici@tie{}: +objet de type @emph{markup}, comme ici : @lilypond[verbatim,quote,relative=2] \tempo \markup { \italic Faster } 4 = 132 @@ -1327,31 +1309,28 @@ a8-. r8 b-. r gis-. r a-. r @end lilypond Mentionner une indication textuelle vide vous permet de mettre entre -parenthèses l'indication numérique@tie{}: +parenthèses l'indication numérique : @lilypond[verbatim,quote,relative=2] \tempo "" 8 = 96 d4 g e c @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-metronome-and-rehearsal-marks-below-the-staff.ly} @c perhaps also an example of how to move it horizontally? -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-tempo-without-a-metronome-mark.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-metronome-marks-in-markup-mode.ly} Pour de plus amples détails, veuillez consulter @ref{Mise en forme du texte}. - @seealso Glossaire musicologique : @rglosnamed{metronome,métronome}, @@ -1377,7 +1356,7 @@ Référence des propriétés internes : @cindex anacrouse @cindex levée @cindex mesure incomplète -@cindex mesure, changement de longueur +@cindex incomplète, mesure @funindex measurePosition @funindex \partial @@ -1392,38 +1371,42 @@ commande est @end example @noindent -où @code{@var{durée}} correspond à la valeur rythmique devant être -ajoutée avant la première mesure complète@tie{}: +où @var{durée} correspond à la valeur rythmique @strong{restante} +dans la mesure et @strong{avant} la première mesure complète : -@lilypond[quote,verbatim,relative=2] -\partial 4 e4 | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 8 +e8 | a4 c8 b c4 | @end lilypond -Une mesure incomplète peut être de n'importe quelle longueur inférieure -à la mesure complète@tie{}: +La @var{durée} peut être de n'importe quelle longueur inférieure +à la mesure complète : -@lilypond[quote,verbatim,relative=2] -\partial 8*3 c8 d e | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 4. +r4 e8 | a4 c8 b c4 | @end lilypond -Le programme traduit cette commande @code{\partial @var{durée}} en +Cette commande @code{\partial @var{durée}} peut aussi s'écrire : @example \set Timing.measurePosition = -@var{durée} @end example -Par exemple, @code{\partial 8*3} est traduit en@tie{}: +De fait, @code{\partial 8*3} équivaut à : -@example -\set Timing.measurePosition = #(ly:make-moment -3 8) -@end example +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\set Timing.measurePosition = #(ly:make-moment -1 8) +e8 | a4 c8 b c4 | +@end lilypond La propriété @code{measurePosition} contient un nombre rationnel qui indique, à ce point précis, où l'on en est de la mesure. Notez qu'il -s'agit du résultat d'une soustraction@tie{}; @code{\partial 4} -signifie, pour le programme@tie{}: @qq{Dans cette mesure, il reste juste +s'agit du résultat d'une soustraction ; @code{\partial 4} +signifie, pour le programme : @qq{Dans cette mesure, il reste juste une noire}. @seealso @@ -1441,11 +1424,18 @@ Références des propriétés internes : @knownissues - @code{\partial} n'est destiné à être utilisé qu'en début de pièce. -Si on l'utilise ailleurs qu'au début, des messages d'erreurs peuvent -s'afficher. Utilisez plutôt @code{\set@tie{}Timing.measurePosition} en -pareil cas. +Si on l'utilise ailleurs qu'au début, des messages d'erreur peuvent +s'afficher, voire des problèmes inopinés surgir. Utilisez plutôt +@code{\set Timing.measurePosition} en pareil cas. + +@lilypond[quote,verbatim,relative=1] +\time 6/8 +\partial 8 +e8 | a4 c8 b[ c b] | +\set Timing.measurePosition = #(ly:make-moment -1 4) +r8 e,8 | a4 c8 b[ c b] | +@end lilypond @node Musique sans métrique @@ -1454,7 +1444,14 @@ pareil cas. @cindex barres de mesure, suppression @cindex numérotation des mesures, suppression -@cindex cadence +@cindex cadence et ligatures +@cindex ligature et cadence +@cindex cadence et altérations +@cindex altérations et cadence +@cindex cadence et barres de mesure +@cindex barres de mesure et cadence +@cindex cadence et numéros de mesure +@cindex numéro de mesure et cadence @cindex musique non mesurée @funindex \cadenzaOn @@ -1462,11 +1459,11 @@ pareil cas. @funindex \cadenzaOff @funindex cadenzaOff -Les barres de mesure et les numéros de mesure sont calculés -automatiquement, ce qui n'est pas souhaitable dans le cas d'une musique -non mesurée -- les cadences par exemple. Les commandes -@code{\cadenzaOn} et @code{\cadenzaOff} permettent de désactiver et de -rétablir ce comportement automatique. +En matière de musique mesurée, le positionnement des barres et la +numérotation sont calculés automatiquement. Ceci n'est pas souhaitable +dans le cas d'une musique non mesurée -- les cadences par exemple -- et +peut être désactivé à l'aide de la commande @code{\cadenzaOn}, puis +réactivé par un @code{\cadenzaOff} à l'endroit approprié. @lilypond[verbatim,relative=2,quote] c4 d e d @@ -1477,8 +1474,7 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -La numérotation reprend dès la fin d'une cadence, comme si celle-ci -n'avait pas existé@tie{}: +La numérotation reprend dès la fin d'une cadence. @lilypond[verbatim,relative=2,quote] % Show all bar numbers @@ -1491,50 +1487,60 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -@cindex ligature et cadence -@cindex ligature et musique non mesurée -@cindex cadence et ligature -@cindex musique non mesurée et ligature +Une cadence représente un fragment détaché de la notion de mesure, en +dépit des différentes commandes @code{\bar} qu'il pourra comporter. +Ceci a pour conséquence que toute altération supplémentaire prarapport à +l'armure devra être rappelée manuellement -- voir @ref{Altérations}. -L'instruction @code{\cadenzaOn} désative les ligatures -automatiques@tie{}; elles seront réactivées après un @code{\cadenzaOff}. +@lilypond[verbatim,relative=2,quote] +c4 d e d +\cadenzaOn +cis4 d cis d +\bar "|" +cis4 d cis! d +\cadenzaOff +\bar "|" +@end lilypond + +L'instruction @code{\cadenzaOn} désactive les ligatures +automatiques ; elles seront réactivées après un @code{\cadenzaOff}. Toutes les ligatures devront donc être indiquées de manière explicite tout au long de la cadence -- voir @ref{Barres de ligature manuelles}). @lilypond[verbatim,relative=2,quote] \repeat unfold 8 { c8 } \cadenzaOn -\repeat unfold 5 { c8 } +cis8 c c c c \bar"|" +c8 c c \cadenzaOff \repeat unfold 8 { c8 } @end lilypond -Notez bien que ces commandes prédéfinies affecteront toutes les portées -de la partition, même si vous ne les placez que dans un simple contexte +Ces commandes prédéfinies affecteront toutes les portées de la +partition, même si vous ne les placez que dans un simple contexte @code{Voice}. Pour éviter ce désagrément, transférez le @code{Timing_translator} du contexte @code{Score} au contexte @code{Staff}, comme indiqué au chapitre @ref{Notation polymétrique}. - @predefined @code{\cadenzaOn}, @code{\cadenzaOff}. @endpredefined - @seealso Glossaire musicologique : @rglosnamed{cadenza,cadence}. Manuel de notation : @ref{Visibilité des objets}, -@ref{Notation polymétrique}. +@ref{Notation polymétrique}, +@ref{Barres de ligature manuelles}, +@ref{Altérations}. Morceaux choisis : @rlsrnamed{Rhythms,Rythme}. - @cindex cadence et saut de ligne @cindex cadence et saut de page @cindex musique non mesurée et saut de ligne @@ -1544,20 +1550,16 @@ Morceaux choisis : @cindex sauts de ligne et musique non mesurée @cindex sauts de page et musique non mesurée - @knownissues - -LilyPond ne change de ligne ou de page qu'au niveau des barres de -mesure. Si votre musique non mesurée s'étend sur plus d'une ligne, il -vous faudra insérer des barres de mesure invisibles, +Sauts de ligne ou de page ne peuvent intervenir qu'au niveau d'une barre +de mesure. Si votre musique non mesurée s'étend sur plus d'une ligne, il +vous faudra insérer des barres de mesure @qq{invisibles} pour indiquer +où des sauts de ligne peuvent prendre place : @example \bar "" @end example -@noindent -pour indiquer où des sauts de ligne peuvent prendre place. - Au risque d'obtenir des messages d'erreur inhabituels, il est fortement recommandé de créer explicitement un contexte @code{Voice} lorsqu'un morceau débute par un @code{\cadenzaOn}. @@ -1597,54 +1599,55 @@ LilyPond gère les métriques composites, aussi bien de manière explicite que de manière détournée -- modification de l'indicateur de métrique et échelonnement de la durée des notes. -@strong{@i{Portées aux métriques différentes, mesures d'égale longueur}} + +@subsubheading Métriques différentes et mesures d'égale longueur +@translationof Different time signatures with equal-length measures Il suffit, pour obtenir cette forme de notation, de tout d'abord -affecter une même métrique aux différentes portées. L'indicateur de -métrique sera ensuite remplacé dans chacune des portées par un quotient -donné en argument à la propriété @code{timeSignatureFraction}. La durée -des notes sera enfin proratisée selon la métrique commune (voir -@ref{Métrique}) grâce à la fonction @code{\scaleDurations}, qui -s'utilise tout comme la commande @code{\times} -- sans toutefois créer -de crochet de nolet (voir @ref{Changement d'échelle des durées}). +affecter une même métrique aux différentes portées. Cette métrique sera +ensuite remplacée dans chacune des portées par un quotient fourni en +argument à la propriété @code{timeSignatureFraction}. La durée des +notes sera enfin proratisée selon la métrique commune grâce à la +fonction @code{\scaleDurations}. @cindex ligature et musique polymétrique @cindex polymétrie et ligature L'exemple suivant utilise parallèlement des mesures à 3/4, 9/8 et 10/8. Pour la deuxième portée les durées sont multipliées par 2/3 -de telle sorte que 2/3@tie{}*@tie{}9/8@tie{}=@tie{}3/4@tie{}; pour la -troisième elles sont multipliées par 3/5, de telle sorte que -3/5@tie{}*@tie{}10/8@tie{}=@tie{}3/4. Les ligatures devront être -explicites, la fonction d'échelonnement venant perturber les règles de -ligature automatique. +de telle sorte que 2/3 * 9/8 = 3/4 ; pour la troisième elles sont +multipliées par 3/5, de telle sorte que 3/5 * 10/8 = 3/4. Les ligatures +devront être explicites, la fonction d'échelonnement venant perturber +les règles de ligature automatique. @lilypond[quote,verbatim] \relative c' << \new Staff { \time 3/4 c4 c c | - c c c | + c4 c c | } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(9 . 8) - \scaleDurations #'(2 . 3) - \repeat unfold 6 { c8[ c c] } + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 + \repeat unfold 6 { c8[ c c] } } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(10 . 8) - \scaleDurations #'(3 . 5) { + \set Staff.timeSignatureFraction = 10/8 + \scaleDurations 3/5 { \repeat unfold 2 { c8[ c c] } \repeat unfold 2 { c8[ c] } | - c4. c4. \times 2/3 { c8[ c c] } c4 + c4. c \times 2/3 { c8[ c c] } c4 } } >> @end lilypond -@strong{@i{Portées aux métriques différentes, mesures de longueur inégale}} + +@subsubheading Métriques différentes et mesures de longueur inégale +@translationof Different time signatures with unequal-length measures Il arrive aussi que chaque portée ait sa propre métrique. Vous y parviendrez en déplaçant le @code{Timing_translator} et le @@ -1670,13 +1673,13 @@ parviendrez en déplaçant le @code{Timing_translator} et le \new Staff { \time 3/4 c4 c c | - c c c | + c4 c c | } \new Staff { \time 2/4 c4 c | - c c | - c c | + c4 c | + c4 c | } \new Staff { \time 3/8 @@ -1688,11 +1691,48 @@ parviendrez en déplaçant le @code{Timing_translator} et le >> @end lilypond -@snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{compound-time-signatures.ly} +@subsubheading Métriques complexes +@translationof Compound time signatures + +@cindex métrique composite +@cindex complexe, métrique +@funindex \compoundMeter + +Une métrique composite se crée à l'aide de la fonction +@code{\compoundMeter}, en suivant la syntaxe : + +@example +\compoundMeter #'@code{(liste de listes)} +@end example + +La construction la plus simple est constituée d'une seule liste, dans +laquelle le @emph{dernier} nombre indique le @qq{dénominateur} de la +métrique, les précédents représentent le @qq{numérateur}. + +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((2 2 2 8)) + \repeat unfold 6 c8 \repeat unfold 12 c16 +} +@end lilypond + +Une métrique plus élaborée s'obtient en ajoutant d'autres listes. Bien +entendu, les ligatures automatiques s'ajusteront aux différentes +valeurs. + +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((1 4) (3 8)) + \repeat unfold 5 c8 \repeat unfold 10 c16 +} + +\relative c' { + \compoundMeter #'((1 2 3 8) (3 4)) + \repeat unfold 12 c8 +} +@end lilypond @seealso Glossaire musicologique : @@ -1701,11 +1741,13 @@ Glossaire musicologique : @rglosnamed{meter,métrique}. Manuel de notation : +@ref{Barres de ligature automatiques}, +@ref{Barres de ligature manuelles}, @ref{Métrique}, @ref{Changement d'échelle des durées}. Morceaux choisis : -@rlsrnamed{Rhythms,Rythme}. +@rlsrnamed{Rhythms, Rythme}. Références des propriétés internes : @rinternals{TimeSignature}, @@ -1713,10 +1755,8 @@ Références des propriétés internes : @rinternals{Default_bar_line_engraver}, @rinternals{Staff}. - @knownissues - -L'utilisation de métriques différentes en parallèle entraine un +L'utilisation de métriques différentes en parallèle entraîne un alignement vertical. De ce fait, les barres de mesure ont tendance à fausser l'espacement régulier entre les différentes portées. @@ -1727,30 +1767,37 @@ fausser l'espacement régulier entre les différentes portées. @cindex notes, division @cindex division de notes +@cindex silences, division +@cindex division de silences @funindex Note_heads_engraver @funindex Completion_heads_engraver +@funindex Completion_rest_engraver On peut convertir automatiquement les notes longues en notes liées. Il suffit pour cela de remplacer le graveur @code{Note_heads_engraver} -par le graveur @code{Completion_heads_engraver}. Dans l'exemple -suivant, les notes qui dépassent de la mesure sont divisées et liées. +par le graveur @code{Completion_heads_engraver}. Il en va de la même +manière pour des silences ; le @code{Completion_rest_engraver} devra +alors remplacer le @code{Rest_engraver}. Dans l'exemple suivant, les +notes ou silences qui dépassent de la mesure sont divisées et au besoin +liées. @lilypond[quote,verbatim,relative=1] \new Voice \with { \remove "Note_heads_engraver" \consists "Completion_heads_engraver" + \remove "Rest_engraver" + \consists "Completion_rest_engraver" } -{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 } +{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 r1*2 } @end lilypond -Ce graveur divise toutes les notes qui sortent de la mesure, et insère -des liaisons de prolongation. Dans la pratique, cette fonctionnalité -permet de déboguer des partitions complexes@tie{}: si les mesures ne -sont pas entièrement remplies, alors les liaisons de prolongation -montrent exactement la durée des décalages de mesure. - +Ces graveurs divisent toutes les notes et silences qui sortent de la +mesure, et insèrent des liaisons de prolongation. Dans la pratique, +cette fonctionnalité permet de déboguer des partitions complexes : +si les mesures ne sont pas entièrement remplies, alors les liaisons de +prolongation montrent exactement la durée des décalages de mesure. @seealso Glossaire musicologique : @@ -1766,11 +1813,11 @@ Morceaux choisis : Références des propriétés internes : @rinternals{Note_heads_engraver}, @rinternals{Completion_heads_engraver}, +@rinternals{Rest_engraver}, +@rinternals{Completion_rest_engraver}, @rinternals{Forbid_line_break_engraver}. - @knownissues - Bien que toutes les durées -- particulièrement celles contenant des nolets -- ne puissent être exactement représentées avec des notes normales et des points, le graveur @code{Completion_heads_engraver} @@ -1788,8 +1835,8 @@ divise pas les silences. @cindex rythmique d'une mélodie Au moyen d'une portée rythmique -- @emph{rhythmic staff} en anglais -- -on peut montrer seulement le rythme d'une mélodie@tie{}: toutes les -notes sont ramenées à la même hauteur, sur une portée d'une seule ligne. +on peut montrer seulement le rythme d'une mélodie : toutes les notes +sont ramenées à la même hauteur, sur une portée d'une seule ligne. @lilypond[quote,relative=1,verbatim] << @@ -1822,7 +1869,7 @@ notes sont ramenées à la même hauteur, sur une portée d'une seule ligne. L'utilisation combinée du @code{Pitch_squash_engraver} et de @code{\improvisationOn} permet d'afficher la structure rythmique d'une -grille d'accords@tie{}: +grille d'accords : @lilypond[quote,verbatim] << @@ -1843,19 +1890,15 @@ grille d'accords@tie{}: >> @end lilypond - @predefined @code{\improvisationOn}, @code{\improvisationOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {guitar-strum-rhythms.ly} - @seealso Morceaux choisis : @rlsrnamed{Rhythms,Rythme}. @@ -1876,6 +1919,7 @@ Référence des propriétés internes : * Liens de croches en soufflet:: @end menu + @node Barres de ligature automatiques @unnumberedsubsubsec Barres de ligature automatiques @translationof Automatic beams @@ -1905,7 +1949,7 @@ explicitement les début et fin de la ligature. Lorsque les ligatures automatiques ne sont pas nécessaires, il suffit de désactiver la fonctionnalité par un @code{\autoBeamOff} -- réactivation -par @code{\autoBeamOn}@tie{}: +par @code{\autoBeamOn} : @lilypond[quote,relative=1,verbatim] c4 c8 c8. c16 c8. c16 c8 @@ -1920,44 +1964,40 @@ c16 c8 @warning{Si des ligatures sont utilisées dans les paroles d'une chanson (pour indiquer des mélismes), les ligatures automatiques doivent être -désactivées, avec @code{\autoBeamOff}, et indiquées manuellement.} - -@warning{L'utilisation conjointe de @code{@bs{}partcombine} et de +désactivées, avec @code{\autoBeamOff}, et indiquées manuellement.@* +L'utilisation conjointe de @code{@bs{}partcombine} et de @code{@bs{}autoBeamOff} peut produire des résultats quelque peu -surprenants@tie{}; ceci fait l'objet d'un exemple particulier à la +surprenants ; ceci fait l'objet d'un exemple particulier à la rubrique morceaux choisis.} Des règles de dérogation au comportement automatique par défaut sont -possibles@tie{}; voir +possibles ; voir @ref{Définition des règles de ligature automatique}. - @predefined @code{\autoBeamOff}, @code{\autoBeamOn}. @endpredefined - -@snippets - @cindex saut de ligne et ligature @cindex ligature et saut de ligne +@cindex ligature coudée @funindex breakable -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beams-across-line-breaks.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-beam-knee-gap.ly} -@cindex \partcombine et \autoBeamOff -@cindex \autoBeamOff et \partcombine +@cindex ligature, \partcombine et \autoBeamOff +@cindex voix, \autoBeamOff et \partcombine -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {partcombine-and-autobeamoff.ly} - @seealso Manuel de notation : @ref{Barres de ligature manuelles}, @@ -1978,21 +2018,18 @@ Références des propriétés internes : @rinternals{beam-interface}, @rinternals{unbreakable-spanner-interface}. - @knownissues - -Les ligatures peuvent générer des collisions avec des têtes de note ou -altérations appartenant à d'autres voix. +Les propriétés d'un ligature sont déterminées @strong{dès le début} de +sa construction ; toute adaptation qui interviendrait avant sa +terminaison ne sera prise en compte qu'à l'occasion de la +@strong{prochaine} ligature. @node Définition des règles de ligature automatique @unnumberedsubsubsec Définition des règles de ligature automatique @translationof Setting automatic beam behavior -@cindex ligatures automatiques, personnalisation -@cindex réglage des ligatures automatiques -@cindex ligatures automatiques, génération de -@cindex autobeam +@cindex ligatures te paroles @cindex paroles et ligatures @funindex autoBeaming @@ -2011,8 +2048,8 @@ et @code{beatStructure} qui détermineront là où prend fin la pulsation. La propriété @code{beatStructure} est constituée d'une liste d'éléments Scheme qui définit la longueur de chaque pulsation, prenant @code{baseMoment} comme unité. L'unité de base (le @code{baseMoment}) -correspond par défaut au dénominateur de la métrique. D'autre part, -chaque unité de @code{baseMoment} constitue une seule pulsation. +correspond par défaut à l'inverse du dénominateur de la métrique. +D'autre part, chaque unité de @code{baseMoment} constitue une seule pulsation. @lilypond[quote,relative=2,verbatim] \time 5/16 @@ -2051,7 +2088,7 @@ supérieur s'appliqueront. Lorsque plusieurs voix cohabitent sur une même portée et que les règles de ligature doivent s'appliquer sans distinction, il faut spécifier que -ces règles affectent le contexte @code{Staff}@tie{}: +ces règles affectent le contexte @code{Staff} : @lilypond[quote,verbatim,relative=2] \time 7/8 @@ -2088,9 +2125,9 @@ La pulsation -- @emph{baseMoment} en anglais -- découle directement de la métrique telle que définie par la commande @code{\time}. Elle est par défaut égale à un sur le dénominateur de la métrique. Les exceptions à cette règle par défaut sont répertoriées dans le fichier -@file{scm/time-signature-settings.scm}. Pour savoir comment -jouer avec la valeur de @code{baseMoment} selon la métrique, reportez -vous au chapitre @ref{Métrique}. +@file{scm/time-signature-settings.scm}. Pour savoir comment jouer avec +la valeur de @code{baseMoment} selon la métrique, reportez vous au +chapitre @ref{Métrique}. Les règles de ligature et de subdivision spécifiques sont enregistrées dans la propriété @code{beamExceptions}. Ses valeurs par défaut, @@ -2117,7 +2154,7 @@ c16 c c | @code{beamExceptions} contient la liste des règles de ligature selon leur type. -Le seul type de règle pris en charge à ce jour est @code{#'end}, qui +Le seul type de règle pris en charge à ce jour est @code{'end}, qui concerne les terminaisons. Chaque règle est constituée d'une liste de doublets associatifs en @@ -2131,14 +2168,14 @@ de base et sa règle de regroupement. @end example @var{durée-type} est constitué d'une paire indiquant la durée de base -- -par exemple @code{(1@tie{}.@tie{}16)} pour une double croche. +par exemple @code{(1 . 16)} pour une double croche. @var{groupement} est constitué d'une liste Scheme qui indique le regroupement à effectuer, en unité de type de ligature. @warning{La propriété @code{beamExceptions} doit contenir absolument @strong{toutes} les exceptions. Il n'est en effet pas possible d'en -ajouter, modifier ou suprimer @emph{a posteriori}. Cela peut paraître +ajouter, modifier ou supprimer @emph{a posteriori}. Cela peut paraître fastidieux, mais toutes les règles de ligature devraient être appréciées avant de les spécifier.} @@ -2164,14 +2201,11 @@ métrique, dans le fichier @file{scm/time-signature-settings.scm}. Les manières de déroger à ce comportement sont abordées au chapitre @ref{Métrique}. -@cindex ligature, mesure à 4/4 -@cindex mesure à 3/4 et ligature - De nombreuses règles de ligature automatique comportent une clé @code{beamExceptions}. Par exemple, s'il n'y a que des croches dans une -mesure à 4/4, celles-ci seront réparties en deux groupes. Le fait de ne +mesure à 4/4, celles-ci seront réparties en deux groupes. Le fait de ne pas réinitialiser @code{beamExceptions} lors d'un aménagement de la -pulsation -- l'élément @code{beatStructure} -- empèchera l'application +pulsation -- l'élément @code{beatStructure} -- empêchera l'application de cette dérogation. @lilypond[quote,verbatim,relative=2] @@ -2185,19 +2219,35 @@ de cette dérogation. \repeat unfold 8 {c8} @end lilypond -De la même manière, les croches d'une mesure à 3/4 sont par défaut -ligaturées sur la mesure entière. Réinitialiser @code{beamExceptions} -vous permettra alors de ligaturer les croches sur la base du temps. +De la même manière, les croches d'une mesure à 3/4 sont ligaturées sur +la mesure par défaut. Ligaturer sur le temps requiert un appel à +@code{beamExceptions}. @lilypond[quote,verbatim,relative=2] \time 3/4 -% by default we beam in (3) due to beamExceptions +% by default we beam in (6) due to beamExceptions \repeat unfold 6 {a8} | % This will beam (1 1 1) due to beatLength \set Timing.beamExceptions = #'() \repeat unfold 6 {a8} @end lilypond +Certaines partitions de la période romantique ou classique font +apparaître des ligatures sur la moitié d'une mesure à 3/4 (ou à 3/8), +ce qui va à l'encontre de la règle établie -- comme le fait remarquer +Gould à la page 153 de son ouvrage -- puisque donne l'impression d'une +mesure à 6/8. Il en va de même pour une mesure à 3/8. La reproduction +d'un tel comportement se contrôle à l'aide de la propriété de contexte +@code{beamHalfMeasure}, qui d'ailleurs ne sera effective que lorsque le +numérateur de la métrique est un 3. + +@lilypond[quote,verbatim,relative=2] +\time 3/4 +r4. a8 a a | +\set Timing.beamHalfMeasure = ##f +r4. a8 a a | +@end lilypond + @i{@strong{Principes de la ligature automatique}} Lorsqu'elle est activée, la gestion automatisée des ligatures est @@ -2205,22 +2255,22 @@ directement liée aux propriétés @code{baseMoment}, @code{beatStructure} et @code{beamExceptions}. Les règles déterminant le positionnement des ligatures automatiques -s'appliquent dans l'ordre suivant de priorité@tie{}: +s'appliquent dans l'ordre suivant de priorité : @itemize @item Une ligature explicite -- indiquée par @code{[@dots{}]} -- sera toujours -respectée@tie{}; sinon +respectée ; sinon @item si une règle explicite de terminaison a été définie grâce à la propriété @code{beamExceptions} pour un type de ligature spécifique dans la -métrique en cours, c'est elle qui s'appliquera@tie{}; sinon +métrique en cours, c'est elle qui s'appliquera ; sinon @item si une règle explicite de terminaison a été définie grâce à la propriété @code{beamExceptions} pour un type de ligature plus large, c'est elle -qui s'appliquera@tie{}; sinon +qui s'appliquera ; sinon @item utilisation des valeurs de @code{baseMoment} et @code{beatStructure} @@ -2228,35 +2278,39 @@ pour regrouper les notes par des ligatures. @end itemize -Le type de ligature correspond à la durée la plus courte dans le groupe. - -Pour information, les règles de ligature par défaut sont répertoriées -dans le fichier @file{scm/time-signature-settings.scm}. +Le @emph{type de ligature} correspond à la durée la plus courte dans le +groupe. +Les règles de ligature par défaut sont répertoriées dans le fichier +@file{scm/time-signature-settings.scm}. @snippets @cindex ligatures, subdivision @cindex subdivision de ligature -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {subdividing-beams.ly} +@cindex sous-ligature, orientation + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{strict-beat-beaming.ly} + @cindex groupement de mesures @cindex groupement de pulsations @cindex pulsation, regroupement @cindex mesure, subdivision -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {conducting-signs,-measure-grouping-signs.ly} @cindex ligature en fin de partition @cindex ligature en fin de voix polyphonique -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beam-endings-in-score-context.ly} - @seealso Fichiers d'initialisation : @file{scm/beam-settings.scm}. @@ -2270,12 +2324,11 @@ Référence des propriétés internes : @rinternals{BeamForbidEvent}, @rinternals{beam-interface}. - @knownissues Si une partition se termine alors qu'une ligature automatique est restée inachevée, cette dernière ligature ne sera pas imprimée du tout. C'est également valable dans le cas d'une musique polyphonique saisie avec la -syntaxe @w{@code{<< @dots{} \\ @dots{} >>}}, où une voix se terminerait +syntaxe @w{@code{<< @dots{} \\ @dots{} >>}}, où une voix se terminerait sans que la dernière ligature ne soit achevée. Le plus simple, en pareil cas, est de spécifier manuellement les dernières ligatures. @@ -2311,8 +2364,8 @@ ligature automatiques sont abordées au chapitre @ref{Métrique}. << \new Staff { \overrideTimeSignatureSettings - #'(3 . 4) % timeSignatureFraction - #'(1 . 8) % baseMomentFraction + 3/4 % timeSignatureFraction + 1/8 % baseMomentFraction #'(1 5) % beatStructure #'() % beamExceptions \time 3/4 @@ -2341,7 +2394,7 @@ supplanter l'algorithme de groupement automatique des notes, par exemple pour prolonger une ligature par-dessus un silence ou une barre de mesure, ou bien pour suivre le rythme des paroles plutôt que celui des notes. Le début et la fin de la ligature sont alors indiqués -respectivement par @code{[} et @code{]}. +respectivement par @code{[} et @code{]}. @lilypond[quote,relative=1,verbatim] r4 r8[ g' a r] r8 g[ | a] r @@ -2351,7 +2404,7 @@ r4 r8[ g' a r] r8 g[ | a] r @cindex ligature manuelle et notes d'ornement Le positionnement des ligature manuelles se détermine comme pour toute -indication attachée à une note@tie{}: +indication attachée à une note : @lilypond[quote,relative=2,verbatim] c8^[ d e] c,_[ d e f g] @@ -2361,7 +2414,7 @@ c8^[ d e] c,_[ d e f g] @funindex noBeam Le fait d'affubler une note particulière d'un @code{\noBeam} aura pour -effet de l'empêcher d'être ligaturée@tie{}: +effet de l'empêcher d'être ligaturée : @lilypond[quote,verbatim,relative=2] \time 2/4 @@ -2369,7 +2422,7 @@ c8 c\noBeam c c @end lilypond Notes d'ornement et normales font l'objet d'un traitement distinct. Il -est dont possible de ligaturer ou non des notes d'ornement sans géner ce +est dont possible de ligaturer ou non des notes d'ornement sans gêner ce qui est en place au niveau de la notation normale. @lilypond[quote,verbatim,relative=2] @@ -2390,7 +2443,7 @@ toujours optimal. Les propriétés @code{stemLeftBeamCount} et Lorsque l'une ou l'autre de ces propriétés est définie, elle ne s'applique qu'une seule fois, après quoi sa définition est effacée. Dans l'exemple qui suit, le dernier @code{fa} n'a de ligature -supplémentaire que sur sa gauche@tie{}; autrement dit, c'est la ligature +supplémentaire que sur sa gauche ; autrement dit, c'est la ligature à la croche qui est importante. @lilypond[quote,relative=2,verbatim] @@ -2403,18 +2456,14 @@ f16 g16 a] @end lilypond - @predefined @code{\noBeam}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {flat-flags-and-beam-nibs.ly} - @seealso Manuel de notation : @ref{Direction et positionnement}, @@ -2445,7 +2494,7 @@ Référence des propriétés internes : Les ligatures en soufflet permettent d'indiquer qu'un petit groupe de notes se joue en accélérant ou en ralentissant sans pour autant modifier le tempo du morceau. L'étendue du soufflet s'indique par -@code{[} et @code{]}, et son orientation est déterminée par la propriété +@code{[} et @code{]}, et son orientation est déterminée par la propriété @code{grow-direction} de l'objet @code{Beam}. Lorsque la sortie MIDI doit refléter les @emph{ritardando} ou @@ -2483,7 +2532,6 @@ Si le résultat imprimable ne reflète les durées que de manière approximative, la sortie MIDI sera quant à elle parfaitement @qq{ponctuelle}. - @predefined @code{\featherDurations}. @endpredefined @@ -2492,10 +2540,7 @@ approximative, la sortie MIDI sera quant à elle parfaitement Morceaux choisis : @rlsrnamed{Rhythms,Rythme}. - - @knownissues - La commande @code{\featherDurations} ne permet de traiter que de très courts extraits, avec une faible amplitude. @@ -2504,7 +2549,6 @@ courts extraits, avec une faible amplitude. @subsection Mesures @translationof Bars - @menu * Barres de mesure:: * Numéros de mesure:: @@ -2512,6 +2556,7 @@ courts extraits, avec une faible amplitude. * Indications de repère:: @end menu + @node Barres de mesure @unnumberedsubsubsec Barres de mesure @translationof Bar lines @@ -2530,14 +2575,14 @@ en respectant la métrique en vigueur. Il est possible de forcer l'impression d'une barre de mesure spéciale, avec la commande @code{\bar} -- c'est d'ailleurs l'habitude en fin de -morceau, où l'on voit une double barre@tie{}: +morceau, où l'on voit une double barre : @lilypond[quote,relative=1,verbatim] e4 d c2 \bar "|." @end lilypond Rien ne s'oppose à ce que la dernière note d'une mesure ne s'arrête -avant la barre de mesure@tie{}; on considère simplement qu'elle se +avant la barre de mesure ; on considère simplement qu'elle se prolonge sur la mesure suivante. Des débordements à répétition finissent par générer une musique comprimée ou qui sort de la page, pour la simple et bonne raison que les sauts de ligne automatiques ne peuvent @@ -2552,7 +2597,7 @@ conduit à une musique compressée, voire à un débordement de la page.} @cindex invisible, barre de mesure Il est possible d'autoriser un saut de ligne même s'il n'y a pas -de barre de mesure visible, en utilisant@tie{}: +de barre de mesure visible, en utilisant : @example \bar "" @@ -2580,7 +2625,7 @@ Lorsqu'une barre manuelle est insérée à l'endroit où viendrait se placer une barre normale, seul l'effet visuel en sera modifié. Vous disposez de deux types de barres simples et de cinq différentes -doubles barres@tie{}: +doubles barres : @lilypond[quote,relative=1,verbatim] f1 \bar "|" @@ -2594,7 +2639,7 @@ e1 @end lilypond @noindent -ainsi que d'une barre en pointillé et d'une discontinue@tie{}: +ainsi que d'une barre en pointillé et d'une discontinue : @lilypond[quote,relative=1,verbatim] f1 \bar ":" @@ -2603,7 +2648,7 @@ a1 @end lilypond @noindent -et de cinq types de barre de reprise@tie{}: +et de cinq types de barre de reprise : @lilypond[quote,relative=1,verbatim] f1 \bar "|:" @@ -2614,23 +2659,21 @@ c1 \bar ":|" e1 @end lilypond -De plus, une barre de mesure peut s'imprimer sous la forme d'une -coche@tie{}: +De plus, une barre de mesure peut s'imprimer sous la forme d'une coche : @lilypond[quote,relative=1,verbatim] f1 \bar "'" @end lilypond -On rencontre habituellement ces signes dans le chant grégorien@tie{}; -nous vous invitons dans ce cadre particulier à plutôt utiliser +On rencontre habituellement ces signes dans le chant grégorien ; nous +vous invitons dans ce cadre particulier à plutôt utiliser @code{\divisioMinima}, comme indiqué au paragraphe @ref{Divisions} du chapitre consacré au grégorien. @cindex segno L'insertion d'un @emph{segno} directement sur la portée s'obtient à -l'aide de trois types de barre de mesure, comme indiqué -ci-dessous@tie{}: +l'aide de trois types de barre de mesure, comme indiqué ci-dessous : @lilypond[quote,relative=2,verbatim] c4 c c c @@ -2658,7 +2701,7 @@ différentes commandes de reprise (voir @ref{Répétitions et reprises}) qui se chargeront d'imprimer le type de barre approprié. Dans les faits, un @code{"||:"} équivaut à un @code{"|:"} sauf s'il -intervient à un saut de ligne@tie{}: une double barre sera alors +intervient à un saut de ligne : une double barre sera alors imprimée en fin de portée, et la barre de reprise au début de la nouvelle. @@ -2671,7 +2714,7 @@ c4 c c c @end lilypond LilyPond dispose de six différents moyens de combiner une barre de -reprise avec un signe @emph{segno}@tie{}: +reprise avec un signe @emph{segno} : @lilypond[quote,relative=2,verbatim] c4 c c c @@ -2701,6 +2744,10 @@ c4 c c c \break c1 @end lilypond +Par ailleurs, la commande @code{\inStaffSegno} crée une barre de mesure +surmontée d'un @emph{segno}, et sait coopérer avec l'instruction +@code{\repeat volta}. + Dans une partition comprenant plusieurs portées, la commande @code{\bar} placée sur une portée s'applique automatiquement à toutes les portées. Les barres de mesure que l'on obtient alors sont d'un seul tenant sur @@ -2721,11 +2768,10 @@ les portées d'un @code{StaffGroup}, d'un @code{PianoStaff} ou d'un >> @end lilypond - @cindex barre de mesure par défaut, modification du style @cindex modification du style par défaut des barres de mesure -@snippets +@c snippets @funindex whichBar @funindex defaultBarType @@ -2733,16 +2779,13 @@ les portées d'un @code{StaffGroup}, d'un @code{PianoStaff} ou d'un @funindex bar @funindex bartype - La commande @samp{\bar @var{type_de_barre}} sert de raccourci pour -@samp{\set Timing.whichBar = @var{type_de_barre}}. Dès -que l'on définit @code{whichBar}, une barre de mesure est créée selon le -style défini. +@samp{\set Timing.whichBar = @var{type_de_barre}}. Dès que l'on définit +@code{whichBar}, une barre de mesure est créée selon le style défini. Le type de barre de mesure par défaut utilisé pour l'insertion -automatique est @code{"|"}. Vous pouvez en changer à tout moment grâce -à @samp{\set Timing.defaultBarType = @var{type_de_barre}}. - +automatique est @code{"|"}. Vous pouvez en changer à tout moment grâce +à @samp{\set Timing.defaultBarType = @var{type_de_barre}}. @seealso Manuel de notation : @@ -2771,7 +2814,7 @@ Référence des propriétés internes : Les numéros de mesure sont imprimés par défaut à chaque début de ligne, sauf la première. Ce nombre est stocké par la propriété @code{currentBarNumber} qui sera mise à jour à chaque mesure. Vous -pouvez aussi le définir de manière arbitraire@tie{}: +pouvez aussi le définir de manière arbitraire : @lilypond[verbatim,quote,fragment,relative=1] c1 c c c @@ -2792,10 +2835,10 @@ temps annuler le comportement par défaut afin que les numéros puissent la propriété @code{break-visibility} du @code{BarNumber}. Elle se compose de trois commutateurs -- définis à @qq{vrai} (@code{#t}) ou @qq{faux} (@code{#f}) -- pour spécifier si le numéro de mesure est -visible ou non. Les valeurs sont rangées dans l'ordre suivant@tie{}: +visible ou non. Les valeurs sont rangées dans l'ordre suivant : @code{visible en fin de ligne}, @code{visible en cours de ligne}, @code{visible en début de ligne}. Voici comment imprimer partout les -numéros de mesure@tie{}: +numéros de mesure : @lilypond[verbatim,quote,relative=1] \override Score.BarNumber #'break-visibility = #'#(#t #t #t) @@ -2807,31 +2850,35 @@ c1 | c | c | c c1 | c | c | c @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-the-bar-number-for-the-first-measure.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-at-regular-intervals.ly} @cindex numéro de mesure, formatage @cindex formatage du numéro de mesure -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-inside-boxes-or-circles.ly} +@cindex reprises et numéros de mesure +@cindex numéro de mesure et reprise +@cindex mesure, numérotation et reprises + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + @cindex alignement du numéro de mesure @cindex numéro de mesure, alignement -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {aligning-bar-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {removing-bar-numbers-from-a-score.ly} - @seealso Morceaux choisis : @rlsrnamed{Rhythms,Rythme}. @@ -2840,11 +2887,9 @@ Référence des propriétés internes : @rinternals{BarNumber}, @rinternals{Bar_number_engraver}. - +@knownissues @cindex numéro de mesure et collision @cindex collision et numéro de mesure - -@knownissues Les numéros de mesure peuvent entrer en collision avec les crochets d'un @rinternals{StaffGroup}. La propriété @code{padding} -- décalage -- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur @@ -2863,7 +2908,7 @@ positionnement. Les tests de limite de mesure (ou tests de mesure) aident à détecter les erreurs dans les durées. Un test de mesure s'écrit avec une barre -verticale, @code{|}. Lors du traitement, elle doit correspondre à une +verticale, @code{|}. Lors du traitement, elle doit correspondre à une barre de mesure. Sinon, un avertissement est émis qui indique le numéro de ligne où est détectée l'erreur. Dans l'exemple suivant, le deuxième test de mesure signale une erreur. @@ -2873,7 +2918,7 @@ test de mesure signale une erreur. @end example Le test de mesure peut être aussi utilisé dans les paroles, par -exemple@tie{}: +exemple : @example \lyricmode @{ @@ -2897,7 +2942,7 @@ L'origine du problème est de fait plus évidente. Il est aussi possible d'attribuer une autre valeur au symbole @code{|}, en assignant une expression musicale à @code{pipeSymbol}. -Dans l'exemple suivant, le @code{|} servira à insérer une double barre +Dans l'exemple suivant, le @code{|} servira à insérer une double barre là où il apparaît, au lieu de simplement vérifier que la fin de la mesure est atteinte. @@ -2924,8 +2969,7 @@ l'on recopie. Cela se fait avec @code{\barNumberCheck}. Par exemple, @noindent affiche un avertissement lors du traitement si le numéro de mesure à ce -point (variable @code{currentBarNumber}) n'est pas@tie{}123. - +point (variable @code{currentBarNumber}) n'est pas 123. @seealso Morceaux choisis : @@ -2952,7 +2996,7 @@ c1 \mark \default @noindent Lorsque vous utilisez @code{\mark \default}, le repère s'incrémente -automatiquement@tie{}; toutefois donner un nombre en argument permet de +automatiquement ; toutefois donner un nombre en argument permet de spécifier manuellement le repère en question. La valeur à utiliser est enregistrée dans la propriété @code{rehearsalMark}. @@ -2965,10 +3009,10 @@ c1 \mark \default @end lilypond @noindent -La lettre@tie{}@strong{I} n'est pas utilisée, conformément aux usages de -la gravure. Cependant, vous pourrez intégrer la lettre @strong{I} en +La lettre @strong{I} n'est pas utilisée, conformément aux usages de +la gravure. Cependant, vous pourrez intégrer la lettre @strong{I} en utilisant l'une des commandes suivantes selon que ce repère doive être -simple, inclus dans un rectangle ou dans un cercle@tie{}: +simple, inclus dans un rectangle ou dans un cercle : @example \set Score.markFormatter = #format-mark-alphabet @@ -3019,10 +3063,10 @@ définitions de @code{format-mark-numbers} (comportement par défaut), d'autres fonctions de formatage. @code{format-mark-barnumbers}, @code{format-mark-box-barnumbers} et -@code{format-mark-circle-barnumbers} permettent d'imprimer le numéro +@code{format-mark-circle-barnumbers} permettent d'imprimer le numéro de mesure au lieu des compteurs alphabétique ou numérique. -On peut aussi spécifier manuellement une marque de repère@tie{}: +On peut aussi spécifier manuellement une marque de repère : @example \mark "A1" @@ -3045,7 +3089,7 @@ définis. Un @code{\markup} peut néanmoins s'utiliser en argument. @funindex \musicglyph @funindex musicglyph -Un @code{\mark} peut contenir un glype musical tel que le signe +Un @code{\mark} peut contenir un glyphe musical tel que le signe @emph{segno}. @lilypond[quote,verbatim,relative=1] @@ -3064,6 +3108,10 @@ Pour affiner le positionnement des repères, veuillez vous référer à la @code{break-alignable-interface} au chapitre @ref{Alignement des objets}. +Les définitions @code{format-mark-numbers} et @code{format-mark-letters} +sont inscrites dan le fichier @file{scm/translation-functions.scm}. +Elles seront une source d'inspiration en matière de fonctions de +formatage. @seealso Manuel de notation : @@ -3072,9 +3120,7 @@ Manuel de notation : @ref{Alignement des objets}. Fichiers d'initialisation : -@file{scm/translation-functions.scm} contient les définitions de -@code{format-mark-numbers} et @code{format-mark-letters}. Elles seront -source d'inspiration pour d'autres fonctions de formatage. +@file{scm/translation-functions.scm}. Morceaux choisis : @rlsrnamed{Rhythms,Rythme}. @@ -3089,13 +3135,13 @@ Référence des propriétés internes : @subsection Fonctionnalités rythmiques particulières @translationof Special rhythmic concerns - @menu * Notes d'ornement:: * Alignement et cadences:: * Gestion du temps:: @end menu + @node Notes d'ornement @unnumberedsubsubsec Notes d'ornement @translationof Grace notes @@ -3108,27 +3154,34 @@ Référence des propriétés internes : @cindex petite note @funindex \grace -@funindex grace +@funindex \slashedGrace +@funindex \acciaccatura +@funindex \appoggiatura Les petites notes sont des ornements entièrement écrits. Leur taille est un peu plus petite que celle des notes normales et elles n'occupent pas de temps dans la mesure. @lilypond[quote,relative=2,verbatim] -c4 \grace c16 c4 -\grace { c16[ d16] } c2 +c4 \grace b16 a4( +\grace { b16[ c16] } a2) @end lilypond Les plus courantes sont les acciaccatures, qui doivent se jouer très vite, et qui s'écrivent sous forme d'une petite note barrée (sur la hampe) et liée. L'appoggiature est une petite note non barrée, qui vole -une fraction à la durée de la note réelle qui la suit. +une fraction à la durée de la note réelle qui la suit. LilyPond dispose +aussi, grâce à la fonction @code{\slashedGrace}, d'une petite note +barrée et dépourvue de liaison, qui viendra s'insérer entre deux notes +déjà liées. @lilypond[quote,relative=2,verbatim] -\grace c8 b4 \acciaccatura d8 c4 \appoggiatura e8 d4 -\acciaccatura { g16[ f] } e4 +\acciaccatura { g16[ f] } e2 +\slashedGrace a,8 g4 +\slashedGrace b16 a4( +\slashedGrace b8 a2) @end lilypond Les petites notes se placent de façon synchrone entre les différentes @@ -3148,9 +3201,9 @@ pour chaque petite croche. @funindex afterGrace La commande @code{\afterGrace} sert à placer une petite note après une -note réelle -- et non @i{avant} comme d'ordinaire. Cette commande -requiert deux arguments@tie{}: la note réelle, et la ou les petites -notes qui suivent. +note réelle -- et non @emph{avant} comme d'ordinaire. Cette commande +requiert deux arguments : la note réelle, et la ou les petites notes qui +s'y rattachent. @lilypond[quote,verbatim,relative=2] c1 \afterGrace d1 { c16[ d] } c1 @@ -3180,7 +3233,7 @@ moitié de la durée de base. Des silences invisibles permettent d'ajuster l'espace entre les petites notes et la note réelle. Nous pourrions positionner ces petites notes à -sept huitièmes de la durée de la note de base@tie{}: +sept huitièmes de la durée de la note de base : @lilypond[quote,verbatim,relative=2] \new Voice { @@ -3197,10 +3250,10 @@ sept huitièmes de la durée de la note de base@tie{}: @cindex notes d'ornement, mise en forme Les expressions @code{\grace} obéissent à des règles typographiques -particulières, notamment pour régler l'orientation et la taille des +particulières, notamment en matière d'orientation et de taille des objets. De ce fait, toute subtilité de mise en forme devra être indiquée @strong{à l'intérieur} de l'expression introduite par -@code{\grace}@tie{}; ces réglages additionnels doivent également être +@code{\grace} ; ces réglages additionnels doivent également être désactivés dans cette même expression. @lilypond[quote,verbatim,relative=2] @@ -3214,24 +3267,21 @@ désactivés dans cette même expression. } @end lilypond - @cindex hampe barrée @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-grace-note-slashes-with-normal-heads.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-grace-layout-within-music.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {redefining-grace-note-global-defaults.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-grace-notes-with-floating-space.ly} - @seealso Glossaire musicologique : @rglosnamed{grace notes,ornements}, @@ -3250,14 +3300,13 @@ Référence des propriétés internes : @rinternals{Grace_engraver}, @rinternals{Grace_spacing_engraver}. - @knownissues @cindex acciaccature, multi-note @cindex note d'ornement, synchronisation @cindex synchronisation des notes d'ornement -Un groupe de notes ligaturées consituant une @emph{acciaccatura} +Un groupe de notes ligaturées constituant une @emph{acciaccatura} apparaîtra comme une @emph{appoggiatura}, c'est-à-dire sans trait. @c TODO Add link to LSR snippet to add slash when available @@ -3265,7 +3314,7 @@ apparaîtra comme une @emph{appoggiatura}, c'est-à-dire sans trait. La synchronisation des petites notes se fait de façon parfois surprenante, car les autres objets de la portée -- barre de mesure, armure, etc. -- sont eux aussi synchrones. Pensez-y lorsque vous -mêlez des portées comprenant des petites notes et d'autres sans@tie{}: +mêlez des portées comprenant des petites notes et d'autres sans : @lilypond[quote,relative=2,verbatim] << @@ -3277,7 +3326,7 @@ mêlez des portées comprenant des petites notes et d'autres sans@tie{}: @noindent Il est possible de remédier à cela en insérant, sur les autres portées, des silences invisibles dans une expression précédée de @code{\grace} et -correspondant à la durée des petites notes@tie{}: +correspondant à la durée des petites notes : @lilypond[quote,relative=2,verbatim] << @@ -3286,11 +3335,64 @@ correspondant à la durée des petites notes@tie{}: >> @end lilypond +Lorsque des petites notes font l'objet d'un contexte de voix, cela +perturbe la présentation des voix normales. Vous pourrez y remédier en +insérant un silence ou une note entre la commande affectant la voix et +les petites notes. + +@lilypond[quote,verbatim] +accMusic = { + \acciaccatura { f8 } e8 r8 \acciaccatura { f8 } e8 r4 +} + +\new Staff { + << + \new Voice { + \relative c'' { + r8 r8 \voiceOne \accMusic \oneVoice r8 | + r8 \voiceOne r8 \accMusic \oneVoice r8 | + } + } + \new Voice { + \relative c' { + s8 s8 \voiceTwo \accMusic \oneVoice s8 | + s8 \voiceTwo r8 \accMusic \oneVoice s8 | + } + } + >> +} +@end lilypond + Seules des expressions musicales séquentielles peuvent être utilisées -pour des petites notes@tie{}; il n'est pas possible d'imbriquer ni de +pour des petites notes ; il n'est pas possible d'imbriquer ni de juxtaposer des sections de petites notes, faute de quoi le traitement du code peut échouer ou produire des erreurs. +En ce qui concerne la sortie MIDI, les petites notes ont une durée du +quart de la valeur que vous leur attribuez. Par voie de conséquence, si +la durée globale d'une succession de petites notes venait à dépasser la +durée de la note qui précède, vous déclencheriez une erreur du type +@qq{@code{Going back in MIDI time}}. Il vous faudra donc raccourcir les +petites notes. Par exemple, + +@example +\acciaccatura @{ c'8[ d' e' f' g'] @} +@end example + +deviendrait : + +@example +\acciaccatura @{ c'16[ d' e' f' g'] @} +@end example + +ou bien modifier explicitement l'échelle des durées : + +@example +\acciaccatura @{ \scaleDurations 1/2 @{ c'8[ d' e' f' g'] @} @} +@end example + +Voir @ref{Changement d'échelle des durées}. + @node Alignement et cadences @unnumberedsubsubsec Alignement et cadences @@ -3324,15 +3426,14 @@ MyCadenza = \relative c' { \MyCadenza c'1 } \new Staff { - #(ly:export (mmrest-of-length MyCadenza)) + #(mmrest-of-length MyCadenza) c'1 - #(ly:export (skip-of-length MyCadenza)) + #(skip-of-length MyCadenza) c'1 } >> @end lilypond - @seealso Glossaire musicologique : @rglos{cadenza}. @@ -3372,14 +3473,14 @@ chapitre @ref{Numéros de mesure}. @item measureLength La longueur de la mesure, dans la métrique en cours. Pour une mesure -à 4/4, elle est de@tie{}1, et de 3/4 pour une mesure à 6/8. Sa valeur +à 4/4, elle est de 1, et de 3/4 pour une mesure à 6/8. Sa valeur détermine où peut s'insérer une barre et comment seront générées les ligatures automatiques. @item measurePosition Le moment où l'on en est dans la mesure en cours. Cette quantité est -remise à@tie{}0 dès lors qu'on dépasse @code{measureLength}@tie{}; la -variable @code{currentBarNumber} est alors incrémentée. +remise à 0 dès lors qu'on dépasse @code{measureLength} ; la variable +@code{currentBarNumber} est alors incrémentée. @item timing Lorsqu'on lui assigne la valeur @emph{vrai}, les valeurs ci-dessus @@ -3390,10 +3491,10 @@ graveur restera indéfiniment dans la mesure en cours. Le calage peut être modifié en réglant explicitement l'une de ces variables. Dans l'exemple qui suit, nous réglons la métrique à 4/4, -tout en fixant @code{measureLength} à 5/4. Arrivé à 4/8 dans la -troisième mesure, nous avançons de 1/8, en assignant 5/8 à +tout en fixant @code{measureLength} à 5/4. Arrivé à 4/8 dans la +troisième mesure, nous avançons de 1/8, en assignant 5/8 à @code{measurePosition}, raccourcissant donc cette mesure d'une croche. -La barre de mesure suivante tombera donc à 9/8 et non à 5/8. +La barre de mesure suivante tombera donc à 9/8 et non à 5/8. @lilypond[quote,verbatim] \new Voice \relative c' { @@ -3409,11 +3510,9 @@ La barre de mesure suivante tombera donc à 9/8 et non à 5/8. @noindent Comme le montre cet exemple, @code{ly:make-moment n d} construit une -durée de n/d fois une ronde. -Par conséquent, @code{ly:make-moment@tie{}1@tie{}8} correspond à une -croche, et @code{ly:make-moment@tie{}7@tie{}16} à la durée de sept -doubles croches. - +durée de n/d fois une ronde. Par conséquent, @code{ly:make-moment 1 8} +correspond à une croche, et @code{ly:make-moment 7 16} à la durée de +sept doubles croches. @seealso Manuel de notation : diff --git a/Documentation/fr/notation/simultaneous.itely b/Documentation/fr/notation/simultaneous.itely index f52a2480f8..1e6693e693 100644 --- a/Documentation/fr/notation/simultaneous.itely +++ b/Documentation/fr/notation/simultaneous.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: ec35c10a93b45b1f0dd721c54197a79d4207a92c + Translation of GIT committish: 0 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" +@c \version "2.16.0" @c Translators: Frédéric Chiasson, Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: Jean-Charles Malahieude, John Mandereau @@ -16,7 +16,7 @@ @section Notes simultanées @translationof Simultaneous notes -@lilypondfile[quote]{simultaneous-headword.ly} +@lilypondfile[quote,ragged-right,line-width=16\cm]{simultaneous-headword.ly} La notion musicale de polyphonie fait référence au fait d'avoir plus d'une voix simultanément dans une pièce. Dans LilyPond, la notion de @@ -43,6 +43,7 @@ même voix. * Clusters:: @end menu + @node Notes en accords @unnumberedsubsubsec Notes en accords @translationof Chorded notes @@ -73,7 +74,8 @@ Certaines notes, au sein même d'un accord, peuvent être affectées d'une articulation ou d'un ornement@tie{}: @lilypond[verbatim,quote,relative=2] -1 c-^ e>2 4 8. 16 +1 c-^ e>2 4 +8. 16 @end lilypond Certains éléments de notation, tels que nuances, soufflets et liaisons, @@ -81,7 +83,24 @@ ne peuvent se rattacher qu'à l'accord et non aux notes qui le composent, sous peine de ne les voir s'imprimer. @lilypond[verbatim,quote,relative=2] -1 \f ( ) \< \! +1 \f ( ) +\< \! +@end lilypond + +@cindex accord vide +@cindex placeholder events + +Un accord peut se voir comme un conteneur de notes, articulations et +autres éléments rattachés. Par voie de conséquence, un accord dépourvu +de note n'a pas de durée ; toute articulation qui lui serait attachée +interviendra au même moment que la note ou l'accord qui le suit et lui +sera donc combiné -- pour des combinaisons plus complexes, voir +@ref{Expressions simultanées}. + +@lilypond[verbatim,quote,relative=2] +\grace { g8[( a b] } +<> ) \p \< -. -\markup \italic "sempre staccato" +\repeat unfold 4 { c4 e } c1\f @end lilypond @cindex accord et mode relatif @@ -101,22 +120,21 @@ positionnent relativement à la précédente. Pour plus d'information à propos des accords, voir @ref{Notation des accords}. - @seealso -Glossaire musical : +Glossaire musicologique : @rglosnamed{chord,accord}. Manuel d'initiation : @rlearning{Combinaison de notes en accords}. Manuel de notation : -@ref{Notation des accords}. @ref{Articulations et ornements}, +@ref{Notation des accords}. @ref{Octaves relatives}, @ref{Plusieurs voix}. Morceaux choisis : -@rlsrnamed{Simultaneous notes,Notes simultanées}. +@rlsrnamed{Simultaneous notes, Notes simultanées}. @knownissues Un accord comportant plus de deux notes dans le même @qq{espace de @@ -144,6 +162,9 @@ des @ref{Clusters}. @unnumberedsubsubsec Répétition d'accords @translationof Chord repetition +@cindex accord, répétition +@cindex répétition, utilisation de @code{q} + Dans le but de vous épargner de la saisie, LilyPond dispose d'un raccourci -- symbolisé par la lettre @code{q} -- qui a pour effet de répéter le dernier accord saisi@tie{}: @@ -167,7 +188,8 @@ l'utiliser même après une succession de notes individuelles et de silences@tie{}: @lilypond[verbatim,quote,relative=2] -1 c4 q2 r8 q8 +1 c'4 q2 r8 q8 | +q2 c, | @end lilypond Le symbole de répétition d'accord ne prend en charge que les hauteurs, @@ -175,13 +197,57 @@ en aucun cas les nuances, articulations ou ornementations, qu'elles aient été attachées aux notes le composant ou à l'ensemble. @lilypond[verbatim,quote,relative=2] -1\sfz c4 q2 r8 q8 +1\sfz c4 q2 r8 q8 | +q2 c, | +@end lilypond + +Le seul moyen de les reproduire consiste à utiliser explicitement la +fonction @code{\chordRepeats}, en lui adjoignant un argument +supplémentaire qui recense les @var{types d'événement} à répéter et qui +seraient absents de l'accord construit par un @code{q}. + +@lilypond[verbatim,quote] +\relative c'' { + \chordRepeats #'(articulation-event) + { 1\sfz c'4 q2 r8 q8-. } | + q2 c, | +} @end lilypond +Comme vous pouvez le constater, l'utilisation de @code{\chordRepeats} au +sein d'un bloc @code{\relative} ne produit pas le résultat +escompté@tie{}: les événements de l'accord expansés sont identiques à la +saisie traditionnelle d'un accord, ce qui a pour conséquence que l'octave +affectée par @code{\relative} repose sur le contexte en cours. + +Dans la mesure où l'imbrication de clauses @code{\relative} n'est pas +source d'interférence, l'ajout d'un @code{\relative} à ce qui sera +concerné par l'instruction @code{\chordRepeats} permet d'établir une +relation d'octave entre les accords dès avant leur expansion. Dans le +cas présent, l'intégralité du bloc @code{\relative} intérieur n'affecte +en rien ce qui l'entoure, ce qui explique la spécification d'octave +attachée à la dernière note. + +@c Without \new Voice, implicit voice creation does the dumbest thing. +@lilypond[verbatim,quote] +\new Voice +\relative c'' { + \chordRepeats #'(articulation-event) + \relative c'' + { 1\sfz c'4 q2 r8 q8-. } | + q2 c | +} +@end lilypond + +Les interactions avec @code{\relative} ne se produisent que lors d'un +appel explicite de @code{\chordRepeats}@tie{}: l'expansion implicite en +début de saisie intervient à un moment où toutes les instances de +@code{\relative} ont déjà été interprétées. + @seealso Manuel de notation : -@ref{Notation des accords}, -@ref{Articulations et ornements}. +@ref{Articulations et ornements}, +@ref{Notation des accords}. Fichiers d'initialisation : @file{ly/chord-repetition-init.ly}. @@ -215,16 +281,56 @@ a << { a4 b g } { d4 g c, } >> Cette manière de procéder est utile lorsque les éléments de l'expression ont des rythmes identiques. Dès que vous tenterez d'attacher sur une même hampe des notes de durée différente, vous générerez des erreurs. +Notes, articulations et modifications de propriétés au sein d'un même +@code{Voice} sont enregistrés et gravés selon l'ordre musical : + +@lilypond[quote,verbatim,relative=2] +4-. <>-. << c a >> << { c-. } { a s-. } >> +@end lilypond + +La présence de plusieursdifférentes hampes, ligatures, durées ou +propriétés au même instant musical nécessite l'utilisation de plusieurs +voix. Dans l'exemple suivant, l'expression simultanée génère implicitement -plusieurs portées@tie{}: +plusieurs portées : @lilypond[quote,verbatim,relative=2] % no single first note << { a4 b g2 } { d4 g2 c,4 } >> @end lilypond -En pareil cas, des rythmes différents ne sont source d'aucun problème. +En pareil cas, des rythmes différents ne sont source d'aucun problème +puisqu'ils sont interprétés dans des voix différentes. + +@cindex collision sur empilement de notes +@cindex collisions, ignorer + +@knownissues +Des notes, bien qu'appartenant à des voix différentes, mais dont les +hampes ont la même orientation, peuvent se retrouver au même endroit +sur la portée, ce quelque soit le décalage que vous auriez pu leur +appliquer. Ceci ne manque pas de faire apparaître un message + +@example +warning: ignoring too many clashing note columns + +@emph{en français :} +Avertissement : trop d'empilements de notes se chevauchent. On fera au mieux. +@end example + +lors de la compilation. Le déclenchement de cet avertissement peut être +désactivé par une clause + +@example +\override NoteColumn #'ignore-collision = ##t +@end example + +Ceci n'aura pas pour seule conséquence que ce message ne sera plus +émis@tie{}; les procédures d'évitement de collision de quelqu'ordre que +ce soit seront désactivées, ce qui peut conduire à quelques effets +inattendus (voir aussi @emph{Problèmes connus et avertissements} à la +rubrique @ref{Résolution des collisions}). @node Clusters @@ -247,15 +353,14 @@ séquence d'accords, comme Des notes ordinaires et des clusters peuvent cohabiter sur une même portée, y compris simultanément -- en pareil cas, rien ne sera fait -pour tenter d'empécher les chevauchements entre notes et clusters. - +pour tenter d'empêcher les chevauchements entre notes et clusters. @seealso Glossaire musicologique : @rglos{cluster}. Morceaux choisis : -@rlsrnamed{Simultaneous notes,Notation simultanée}. +@rlsrnamed{Simultaneous notes, Notation simultanée}. Référence des propriétés internes : @rinternals{ClusterSpanner}, @@ -263,8 +368,7 @@ Référence des propriétés internes : @rinternals{Cluster_spanner_engraver}. @knownissues - -L'apparence d'un cluster sera extrèmement resserrée s'il ne comporte au +L'apparence d'un cluster sera extrêmement resserrée s'il ne comporte au moins deux accords. Dans la mesure où un cluster ne possède pas de hampe, il n'y a aucun @@ -312,7 +416,7 @@ portées. @strong{@i{Instanciation explicite des voix}} La manière la plus facile d'entrer des fragments avec plus d'une voix -sur une portée est est la suivante@tie{}: +sur une portée est la suivante@tie{}: @lilypond[quote,relative=3,verbatim] \new Staff << @@ -324,7 +428,7 @@ sur une portée est est la suivante@tie{}: @end lilypond @noindent -Vous constaterez que les voix sont créées explicitement et qu'elles +Vous constaterez que les voix sont créées explicitement et qu'elles sont nommées. Les commandes @code{\voiceOne} @dots{} @code{\voiceFour} déterminent les voix de telle sorte que les première et troisième auront des hampes vers le haut, et les deuxième et quatrième vers le @@ -351,7 +455,7 @@ perdurera après ce fragment. Les autres expressions entre doubles chevrons seront assignées à des voix temporaires distinctes. C'est la raison pour laquelle les paroles qui suivaient la voix avant la polyphonie continueront à le faire durant ce passage polyphonique et -après lui. +après lui@tie{}: @lilypond[quote, verbatim, relative=2] << @@ -389,8 +493,8 @@ permettent d'obtenir des réglages différents pour chacune des voix. Une construction de la forme @code{<< @{...@} \\ @{...@} >>}, dans laquelle plusieurs expressions sont séparées par des doubles obliques -inversées, se comporte différemment de celle sans séparateurs@tie{}: -@strong{tous} les membres de cette contruction seront assignés à de +inversées, se comporte différemment de celle sans séparateur@tie{}: +@strong{tous} les membres de cette construction seront assignés à de nouveaux contextes de voix. Ces contextes de voix, créés implicitement, portent les noms @code{"1"}, @code{"2"}, etc. Dans chacun de ces contextes, le positionnement des liaisons, la direction des hampes, etc. @@ -410,7 +514,7 @@ ces voix créées implicitement sont les mêmes que si elles avaient été créées à l'aide des commandes @code{\voiceOne} à @code{\voiceFour}, dans leur ordre d'apparition. -Dans l'exemple qui suit, la voix intermédiaire à des hampes vers le +Dans l'exemple qui suit, la voix intermédiaire a des hampes vers le haut. Nous la plaçons donc en troisième position, de telle sorte qu'elle adopte les réglages de @code{\voiceThree} qui correspondent à ce que nous voulons. Grâce à des espaces invisibles, nous évitons de @@ -431,9 +535,49 @@ les contextes de voix de manière explicite. Voir à ce sujet @rlearning{Contextes et graveurs} et @rlearning{Instanciation explicite des voix}. +@strong{@i{Ordre des voix}} + +L'ordre dans lequel doivent apparaître les voix d'une construction +simultanée suit le schéma suivant@tie{}: + +@example +Voix 1: la plus haute +Voix 2: la plus basse +Voix 3: deuxième plus haute +Voix 4: deuxième plus basse +Voix 5: troisième plus haute +Voix 6: troisième plus basse +etc. +@end example + +Cette présentation en entonnoir peut sembler quelque peu +contre-intuitive@tie{}; elle simplifie cependant grandement le processus +de mise en forme. Vous noterez que les hampes des voix au numéro impair +vont vers le haut, celles des voix paires vers le bas@tie{}: + +@lilypond[quote,verbatim] +\new Staff << + \time 2/4 + { f''2 } % 1: highest + \\ + { c'2 } % 2: lowest + \\ + { d''2 } % 3: second-highest + \\ + { e'2 } % 4: second-lowest + \\ + { b'2 } % 5: third-highest + \\ + { g'2 } % 6: third-lowest +>> +@end lilypond + +@warning{Paroles et objets étendus (liaisons, soufflets etc.) ne peuvent +passer d'une voix à l'autre.} + @strong{@i{Identité rythmique}} -Lorsque l'on doît saisir des fragments de musique parallèle qui ont le +Lorsque l'on doit saisir des fragments de musique parallèle qui ont le même rythme, on peut les combiner dans un contexte de voix unique et par voie de conséquence former des accords. Il suffit pour cela de les regrouper dans une construction de musique simultanée simple au sein @@ -450,7 +594,6 @@ Prenez garde que les différents éléments doivent impérativement avoir la même structure rythmique, sous peine de ligature aléatoire et de messages d'avertissement. - @predefined @code{\voiceOne}, @code{\voiceTwo}, @@ -459,19 +602,18 @@ messages d'avertissement. @code{\oneVoice}. @endpredefined - @seealso Manuel d'initiation : -@rlearning{Les voix contiennent la musique}, -@rlearning{Instanciation explicite des voix}. +@rlearning{Instanciation explicite des voix}, +@rlearning{Les voix contiennent la musique}. Manuel de notation : +@ref{Hampes}, @ref{Portées de percussion}, -@ref{Silences invisibles}, -@ref{Hampes}. +@ref{Silences invisibles}. Morceaux choisis : -@rlsrnamed{Simultaneous notes,Notation simultanée}. +@rlsrnamed{Simultaneous notes, Notation simultanée}. @node Styles de voix @@ -479,7 +621,7 @@ Morceaux choisis : @translationof Voice styles @cindex voix, styles -@cindex styles de voix +@cindex style de voix @cindex colorier des voix @cindex têtes de note, styles @@ -507,7 +649,6 @@ permet de les identifier plus facilement@tie{}: La commande @code{\voiceNeutralStyle} permet de revenir à la présentation normale. - @predefined @code{\voiceOneStyle}, @code{\voiceTwoStyle}, @@ -516,14 +657,13 @@ présentation normale. @code{\voiceNeutralStyle}. @endpredefined - @seealso Manuel d'initiation : -@rlearning{J'entends des Voix}, -@rlearning{Autres sources de documentation}. +@rlearning{Autres sources de documentation}, +@rlearning{J'entends des Voix}. Morceaux choisis : -@rlsrnamed{Simultaneous notes,Notation simultanée}. +@rlsrnamed{Simultaneous notes, Notation simultanée}. @node Résolution des collisions @@ -533,11 +673,12 @@ Morceaux choisis : @cindex fusion de notes @cindex collision de notes @cindex collisions -@cindex shift note +@cindex décalage de note +@cindex note, décalage @cindex multiples voix @cindex voix multiples @cindex polyphonie -@cindex décélage de voix +@cindex décalage de voix @cindex voix, décalage @cindex silences, décalage automatique @@ -558,10 +699,9 @@ Morceaux choisis : @funindex \mergeDifferentlyHeadedOff @funindex mergeDifferentlyHeadedOff - Les notes de hauteur identique appartenant à des voix différentes, même si leur hampe sont opposées, verront leur tête automatiquement -fusionnér. Les notes dont la tête diffère ou bien qui ont la hampe +fusionner. Les notes dont la tête diffère ou bien qui ont la hampe dans la même direction ne seront pas automatiquement fusionnées. Les silences, lorsqu'ils sont dans une autre voix et à l'opposé des hampes seront décalés verticalement. Vous constaterez, dans l'exemple @@ -606,7 +746,7 @@ première mesure ont bien fusionné@tie{}: @end lilypond De même, vous pouvez fusionner les têtes de notes pointées et -non-pointées comme au troisième temps de la première mesure@tie{}: +non pointées comme au troisième temps de la première mesure@tie{}: @lilypond[quote,relative=2,verbatim] << @@ -653,19 +793,58 @@ alors comme il faut. >> @end lilypond -Les commandes @code{\shiftOn}, @code{\shiftOnn}, et @code{\shiftOnnn} -déterminent le niveau de décalage des accords de la voix en cours. -Les voix externes -- habituellement, les voix une et deux -- sont +La commande @code{\shiftOn} permet, sans pour autant le forcer, un +décalage des notes d'une voix en particulier. Une note ou un accord +appartenant à cette voix ne seront décalés que si leur hampe menaçait +d'entrer en collision avec une hampe appartenant à une autre voix allant +dans la même direction. La commande @code{\shiftOff} interdit +l'apparition de décalage. + +Les voix externes -- habituellement les voix une et deux -- sont affectées de @code{\shiftOff}, alors que les voix internes -- trois et -quatre -- sont affectées de @code{\shiftOn}. @code{\shiftOnn} et -@code{\shiftOnnn} sont des niveaux supplémentaires de décalage. +quatre -- sont affectées de @code{\shiftOn}. Lorsqu'un décalage +intervient, les notes dont les hampes sont ascendantes (voix impaire) +iront vers la droite, et les notes à hampe descendante (voix paire) +iront vers la gauche. + +Voici un exemple qui vous permettra de bien visualiser ce qui se passe +en interne. + +@warning{Lorsqu'il y a trois voix ou plus, prenez garde au fait que +l'ordre d'apparition des voix dans votre fichier ne correspond pas à +l'ordre vertical des voix tel qu'il apparaîtra sur la portée.} + +@c KEEP LY +@lilypond[quote,verbatim] +\new Staff \relative c'' { + %% saisie abrégée + << + { f2 } % 1: extrême haute + \\ + { g,2 } % 2: extrême basse + \\ + { d'2 } % 3: intermédiaire haute + \\ + { b2 } % 4: intermédiaire basse + >> + %% expansion en interne de ce qui précède + << + \new Voice = "1" { \voiceOne \shiftOff f'2 } + \new Voice = "2" { \voiceTwo \shiftOff g,2 } + \new Voice = "3" { \voiceThree \shiftOn d'2 } % décale à droite + \new Voice = "4" { \voiceFour \shiftOn b2 } % décale à gauche + >> +} +@end lilypond +Les commandes @code{\shiftOnn} et @code{\shiftOnnn} sont des niveaux +supplémentaires de décalage qui peuvent s'adopter temporairement dans +certaines situations complexes -- voir @rlearning{Exemple concret}. Les têtes de notes ne fusionneront que dans la mesure où leur hampe sont opposées -- implicitement parce qu'appartenant aux voix une ou deux, ou bien explicitement. - @predefined @code{\mergeDifferentlyDottedOn}, @code{\mergeDifferentlyDottedOff}, @@ -678,34 +857,43 @@ bien explicitement. @code{\shiftOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {additional-voices-to-avoid-collisions.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {forcing-horizontal-shift-of-notes.ly} - @seealso Glossaire musicologique : @rglosnamed{polyphony,polyphonie}. Manuel d'initiation : -@rlearning{Notes simultanées}, +@rlearning{Exemple concret}, @rlearning{Les voix contiennent la musique}, -@rlearning{Exemple concret}. +@rlearning{Notes simultanées}. Morceaux choisis : -@rlsrnamed{Simultaneous notes,Notation simultanée}. +@rlsrnamed{Simultaneous notes, Notation simultanée}. Référence des propriétés internes : @rinternals{NoteColumn}, @rinternals{NoteCollision}, @rinternals{RestCollision}. +@cindex collisions, ignorer +@knownissues +Une clause @code{\override NoteColumn #'ignore-collision = ##t} aura +pour effet une fusion incorrecte des têtes de note différentes à partir +de voix différentes. + +@lilypond[quote,relative=1,verbatim] +\mergeDifferentlyHeadedOn +<< { c16 a' b a } \\ { c,2 } >> +\override NoteColumn #'ignore-collision = ##t +<< { c16 a' b a } \\ { c,2 } >> +@end lilypond @ignore @c TODO investigate! Sometimes it works, sometimes not. --FV @@ -720,6 +908,7 @@ are at the same time differently dotted are not clear. @cindex regroupement automatique de parties @cindex parties, combiner des +@cindex combinaison de parties @cindex a due @cindex solo @@ -742,24 +931,24 @@ Voici la syntaxe qui permet de combiner des parties@tie{}: L'exemple suivant illustre les fonctionnalités élémentaires du combinateur de parties@tie{}: positionner les parties sur une portée, -gérer la direction des hampes et de la polyphonie. Les identificateurs +gérer la direction des hampes et de la polyphonie. Les identifiants sont les mêmes pour la combinaison et les parties séparées. @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 | } << @@ -770,7 +959,7 @@ instrumentTwo = \relative g' { @end lilypond Les notes de la troisième mesure n'apparaissent qu'une seule fois, -alors qu'elles ont été spécifiés deux fois (une fois dans chacune des +alors qu'elles ont été spécifiées deux fois (une fois dans chacune des parties). La direction des hampes et des liaisons de tenue ou de phrasé est gérée automatiquement, selon qu'il s'agisse d'un solo ou d'un unisson. La première partie, dont le contexte s'appellera @code{one}, @@ -796,16 +985,91 @@ restera sans effet sur les hauteurs de @code{@var{expression_musicale_1}} ou de @code{@var{expression_musicale_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 matière d'édition professionnelle, les voix sont souvent maintenues +séparément et sur une durée conséquente, bien que les notes des +différentes voix soient les mêmes et pourraient donc être présentées à +l'unisson. Dans la mesure où @code{\partcombine} considère les notes +séparément, combiner des notes en accord ou indiquer un solo ne serait +pas optimal en pareil cas. LilyPond dispose alors de certaines +commandes qui permettent d'influencer le comportement de la fonction +@code{\partcombine}@tie{}: + +Les commandes se terminant par @code{...Once} n'affectent que la note +qui les suit directement dans l'expression musicale. -@snippets +@itemize +@item +@code{\partcombineApart} et @code{\partcombineApartOnce} maintiennent +les notes dans des voix séparées même si elles peuvent se combiner en +accord ou en unisson. -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@item +@code{\partcombineChords} et @code{\partcombineChordsOnce} combinent les +notes en accords. + +@item +@code{\partcombineUnisono} et @code{\partcombineUnisonoOnce} combinent +les voix en un @qq{unisson}. + +@item +@code{\partcombineSoloI} et @code{\partcombineSoloIOnce} affichent +exclusivement la première voix et l'affublent d'un @qq{Solo}. + +@item +@code{\partcombineSoloII} et @code{\partcombineSoloIIOnce} affichent +exclusivement la deuxième voix et l'affublent d'un @qq{Solo}. + +@item +@code{\partcombineAutomatic} et @code{\partcombineAutomaticOnce} +annulent les effets des dérogations précédentes et activent le +comportement standard de la fonction @code{\partcombine}. +@end itemize + +@lilypond[quote,verbatim] +instrumentOne = \relative c' { + \partcombineApart c2^"apart" e | + \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 | + e2 e | + a,2 c | + c2 c' | + c2 c | + c2 c | +} + +<< + \new Staff { \instrumentOne } + \new Staff { \instrumentTwo } + \new Staff { \partcombine \instrumentOne \instrumentTwo } +>> +@end lilypond + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] {combining-two-parts-on-the-same-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-partcombine-texts.ly} - @seealso Glossaire musicologique : @rglos{a due}, @@ -815,37 +1079,37 @@ Manuel de notation : @ref{Écriture de parties séparées}. Morceaux choisis : -@rlsrnamed{Simultaneous notes,Notation simultanée}. +@rlsrnamed{Simultaneous notes, Notation simultanée}. Référence des propriétés internes : @rinternals{PartCombineMusic}, @rinternals{Voice}. - @knownissues +Les différentes commandes @code{\partcombine...} ne prennent en charge +que deux voix. De la même manière, le combinateur n'est pas conçu pour +travailler avec des paroles@tie{}; il s'arrête dès qu'il est +explicitement fait appel à l'une des voix pour y attacher des paroles. -@code{\partcombine} ne prend en charge que deux voix. +@code{\partcombine...} ne peut s'inscrire ni dans un bloc @code{\times}, +ni dans un bloc @code{\relative}. Lorsque @code{printPartCombineTexts} est actif et que les deux voix jouent souvent les mêmes notes, le combinateur peut afficher @code{a2} plus d'une fois par mesure. -@code{\partcombine} ne peut s'inscrire dans un bloc @code{\times}. - -@code{\partcombine} ne peut s'inscrire dans un bloc @code{\relative}. +@code{\partcombine} n'examine que l'attaque des notes. Il n'est donc +pas en mesure de déterminer si une note attaquée précédemment est encore +jouée ou non, ce qui peut engendrer quelques problèmes. En interne, @code{\partcombine} interprète les deux arguments en tant que @code{Voice}s, dénommées @code{one} et @code{two}, puis décide de quand les parties seront fusionnées. Par conséquent, si les arguments changent pour d'autres noms de contexte @rinternals{Voice}, les -événements qu'ils contiendraient seront ignorés. De la même manière, le -combinateur n'est pas conçu pour travailler avec des paroles@tie{}; il -s'arrête dès qu'il est explicitement fait appel à l'une des voix pour y -attacher des paroles. +événements qu'ils contiendraient seront ignorés. -@code{\partcombine} n'examine que l'attaque des notes. Il n'est donc -pas en mesure de déterminer si une note attaquée précédemment est encore -jouée ou non, ce qui peut engendrer quelques problèmes. +Certaines considérations apparaissent aussi dans les chapitres +@ref{Tablatures par défaut} et @ref{Barres de ligature automatiques}. @node Saisie de musique en parallèle @@ -866,7 +1130,7 @@ l'expression musicale deviennent les valeurs des variables respectives que vous pourrez ensuite utiliser pour imprimer la partition. @warning{Les contrôles de barre de mesure @code{|} sont obligatoires et -le mesures doivent être de longueur identique.} +les mesures doivent être de longueur identique.} @lilypond[quote,verbatim] \parallelMusic #'(voiceA voiceB voiceC) { @@ -959,7 +1223,6 @@ global = { } @end lilypond - @seealso Manuel d'initiation : @rlearning{Organisation du code source avec des variables}. diff --git a/Documentation/fr/notation/spacing.itely b/Documentation/fr/notation/spacing.itely index 91a1e36fae..47eb8af9b5 100644 --- a/Documentation/fr/notation/spacing.itely +++ b/Documentation/fr/notation/spacing.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 657b89ab28b463ccda7991070242353cf38dc25d + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a 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" +@c \version "2.16.0" @c Translators: Frédéric Chiasson, Jean-Charles Malahieude @@ -27,23 +26,18 @@ In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it states: "@code{layout-set-staff-size} does not change the distance between -the -staff lines." +the staff lines." Could we add a sentence: -"Use instead the pair fontSize = #@var{N} - \override StaffSymbol #'staff-space = #(magstep -@var{N}) +"Use instead the pair fontSize = #@var{N} + \override StaffSymbol #'staff-space = #(magstep @var{N}) inside the Staff context to change the size of the font and the -distance between -staff lines accordingly." +distance between staff lines accordingly." Actually I found, that the @internalsref{StaffSymbol} at line 481 -sends to an incomplete -documentation. The property staff-space is not explained here. I -thought Y-extent might be of -help, but it is in turn explained by x-space which again is -missing from the list. Who has the +sends to an incomplete documentation. The property staff-space is not +explained here. I thought Y-extent might be of help, but it is in turn +explained by x-space which again is missing from the list. Who has the knowledge to fix this? @@ -58,11 +52,11 @@ http://code.google.com/p/lilypond/issues/detail?id=68 @translationof Spacing issues L'agencement général d'une partition dépend de trois facteurs -interdépendants@tie{}: la mise en page, les sauts de ligne et -l'espacement. Les choix faits en matière d'espacement détermineront la -densité de chacun des systèmes, ce qui influera sur le positionnement -des sauts de lignes et, par voie de conséquence, sur le nombre de pages -de la partition. +interdépendants : la mise en page, les sauts de ligne et l'espacement. +Les choix faits en matière d'espacement détermineront la densité de +chacun des systèmes, ce qui influera sur le positionnement des sauts de +ligne et, par voie de conséquence, sur le nombre de pages de la +partition. En pratique, cette procédure comporte quatre étapes. Dans un premier temps, des distances élastiques @emph{(springs)} sont déterminées sur la @@ -76,11 +70,11 @@ Les réglages qui influencent la mise en forme se placent dans deux blocs différents. Le bloc @w{@code{\paper @{@dots{}@}}} étudié à la rubrique @ref{Mise en forme de la page} contient les réglages applicables à l'intégralité du document -- à toutes les partitions d'un ouvrage -- -tels que format du papier, impression ou non des numéros de page, etc. +tels que format du papier, impression ou non des numéros de page etc. Quant au bloc @w{@code{\layout @{@dots{}@}}}, qui fait l'objet de la rubrique @ref{Mise en forme de la partition}, il détermine la mise en -forme de la musique@tie{}: le nombre de systèmes utilisés, l'espacement -des regroupements de portées, etc. +forme de la musique : le nombre de systèmes utilisés, l'espacement des +regroupements de portées, etc. @menu * Mise en forme de la page:: @@ -96,9 +90,9 @@ des regroupements de portées, etc. @warning{Vous verrez au fil de ce chapitre apparaître certains termes dont la traduction vous semblera assurément erronée. Il n'en est -cependant rien@tie{}: certains termes techniques ont une histoire -particulière selon leur langue d'origine. Ainsi, le vocable anglais -@emph{Ragged} signifie en lambeau, en loques@tie{}; dans l'univers +cependant rien : certains termes techniques ont une histoire +particulière selon leur langue d'origine. Ainsi le vocable anglais +@emph{Ragged} signifie en lambeau, en loques ; dans l'univers typographique, un maître français voit un alignement à gauche -- il dira @qq{au fer à gauche} -- alors que son homologue anglophone constate un @emph{ragged-right} -- donc du vide à droite.} @@ -125,25 +119,24 @@ pages attachées au bloc @code{\paper}. @subsection Le bloc @code{\paper} @translationof The @code{\paper} block -Un bloc @code{\paper} peut apparaître au sein d'un bloc -@code{\book}. Les réglages effectués à l'aide du bloc @code{\paper} -s'appliqueront à l'intégralité d'un ouvrage, qui peut comporter -plusieurs partitions (des blocs @emph{score})@tie{}; il ne doit donc en -aucun cas se trouver dans un bloc @code{\score}. Peuvent apparaître -dans un bloc @code{\paper}@tie{}: +Un bloc @code{\paper} peut apparaître au sein d'un bloc @code{\book}. +Les réglages effectués à l'aide du bloc @code{\paper} s'appliqueront à +l'intégralité d'un ouvrage, qui peut comporter plusieurs partitions (des +blocs @emph{score}) ; il ne doit donc en aucun cas se trouver dans un +bloc @code{\score}. Peuvent apparaître dans un bloc @code{\paper} : @itemize @item -la fonction scheme @code{set-paper-size}, +la fonction Scheme @code{set-paper-size}, @item des variables propres au bloc @code{\paper} qui viendront adapter la -mise en page, et +mise en page, @item la définition des différents @emph{markups} qui personnaliseront la mise -en forme des entêtes, pied de page et titrages. +en forme des entêtes et pieds de page ainsi que des titrages. @end itemize @@ -163,7 +156,7 @@ Sauf mention contraire, toutes les variables du bloc @code{\paper} qui correspondent à des dimensions sont exprimées en millimètre -- vous pouvez bien entendu spécifier un autre système de mesure. Voici comment, par exemple, définir la marge haute (@code{top-margin}) à dix -millimètres@tie{}: +millimètres : @example \paper @{ @@ -171,8 +164,8 @@ millimètres@tie{}: @} @end example -Si vous préférez lui affecter une valeur de 0,5@tie{}pouce, vous devrez -mentionner le suffixe d'unité @code{\in}@tie{}: +Si vous préférez lui affecter une valeur de 0,5 pouce, vous devrez +mentionner le suffixe d'unité @code{\in} : @example \paper @{ @@ -188,7 +181,7 @@ ce ne soit pas techniquement requis, nous vous conseillons d'ajouter @code{\mm} à votre code lorsque vous travaillez en millimètres. Vous pouvez aussi définir les valeurs du bloc @code{\paper} à l'aide de -fonctions Scheme. Voici l'équivalent de l'exemple précédent@tie{}: +fonctions Scheme. Voici l'équivalent de l'exemple précédent : @example \paper @{ @@ -223,60 +216,74 @@ Fichiers d'initialisation : @node Format du papier @unnumberedsubsubsec Format du papier -@translationof Setting paper size +@translationof Setting the paper size -Le format du papier est déterminé par deux fonctions différentes@tie{}: -@code{set-default-paper-size} et @code{set-paper-size}. -@code{set-default-paper-size} se place en tête de fichier, alors que -@code{set-paper-size} se place à l'intérieur d'un bloc -@code{\paper}@tie{}: +LilyPond génère par défaut, et en l'absence de mention explicite d'un +format de papier, un fichier imprimable au format A4. Vous pouvez +cependant utiliser un autre format à l'aide des deux fonctions +@code{set-default-paper-size}, alors que @code{set-paper-size} se place +à l'intérieur d'un bloc @code{\paper} : @example -#(set-default-paper-size "a4") +#(set-default-paper-size "quarto") @end example +qui se place en début de fichier, ou @code{set-paper-size}, + @example \paper @{ - #(set-paper-size "a4") + #(set-paper-size "tabloid") @} @end example +qui s'inscrit au sein d'un bloc @code{\paper}. + + @noindent La seule restriction à l'utilisation isolée de la fonction @code{set-default-paper-size} est qu'elle doit intervenir avant le -premier bloc @code{\paper}. À l'intérieur d'un bloc @code{\paper}, il -vaut mieux utiliser la fonction @code{set-paper-size}, avant toute autre -variables. Les raisons à ceci sont abordées dans la rubrique -@ref{Adaptation automatique au format}. - -@code{set-default-paper-size} fixe le format pour toutes les pages, -alors que @code{set-paper-size} détermine le format des feuilles -rattachées à un bloc @code{\paper} particulier. Ainsi, lorsque le bloc -@code{\paper} se trouve en tête de fichier, le format du papier -s'appliquera à toutes les pages@tie{}; si @code{\paper} apparaît dans un -bloc @code{\book}, la taille ne s'appliquera qu'au @emph{book} en -question. - -Les formats @code{a4}, @code{letter}, @code{legal} et @code{11x17} (ou -tabloïd) sont couramment utilisés pour les éditions musicales. Bien -d'autres formats sont disponibles et sont répertoriés à la rubrique -@code{paper-alist} du fichier d'initialisation @file{scm/paper.scm}. - -@c TODO add a new appendix for paper sizes (auto-generated) -pm +premier bloc @code{\paper}. @code{set-default-paper-size} fixe le +format pour toutes les pages, alors que @code{set-paper-size} détermine +le format des feuilles rattachées à un bloc @code{\paper} particulier. +Ainsi, lorsque le bloc @code{\paper} se trouve en tête de fichier, le +format du papier s'appliquera à toutes les pages ; si @code{\paper} +apparaît dans un bloc @code{\book}, la taille ne s'appliquera qu'au +@emph{book} en question. + +À l'intérieur d'un bloc @code{\paper}, la fonction @code{set-paper-size} +doit intervenir avant toute autre variable. Les raisons à ceci sont +abordées dans la rubrique @ref{Adaptation automatique au format}. + +Différents formats de papier sont définis dans le fichier +@file{scm/paper.scm}. Bien que vous puissiez y ajouter votre propre +format, sachez cependant que celui-ci est écrasé à chaque mise à jour de +LilyPond. + +@c An appendix entry exists for paper sizes but is not auto-generated + +La commande suivante, inscrite dans votre fichier, vous permettra +d'ajouter votre format personnalisé à ceux déjà connus, puis d'y faire +appel à l'aide des fonctions @code{set-default-paper-size} et +@code{set-paper-size} : -@warning{Par défaut, le papier est au format A4 (codé @code{a4}).} +@example +#(set! paper-alist (cons '("mon format" . (cons (* 15 in) (* 3 in))) paper-alist)) -Rien ne vous empêche d'ajouter un format de papier inhabituel à la -rubrique @code{paper-alist} du fichier @file{scm/paper.scm}. Sachez -cependant que celui-ci est écrasé à chaque mise à jour de LilyPond. +\paper @{ + #(set-paper-size "mon format") +@} +@end example + +Les unités peuvent s'exprimer aussi bien en @code{in} (pouces), qu'en +@code{cm} (centimètres) ou en @code{mm} (millimètres). -@cindex orientation -@cindex landscape +@cindex papier, orientation +@cindex landscape, papier @cindex paysage, papier @cindex à l'italienne, papier Le fait d'ajouter l'argument @code{'landscape} à l'instruction -@code{set-default-paper-size} permet d'obtenir une présentation à +stipulant le format du papier, permet d'obtenir une présentation à l'italienne -- ou paysage si vous préférez -- et donc des lignes plus longues. @@ -284,10 +291,12 @@ longues. #(set-default-paper-size "a6" 'landscape) @end example +C'est bien la feuille qui sera basculée, et non la musique. @seealso -Notation Reference: -@ref{Adaptation automatique au format}. +Manuel de notation : +@ref{Adaptation automatique au format}, +@ref{Formats de papier prédéfinis}. Fichiers d'initialisation : @file{scm/paper.scm}. @@ -297,7 +306,7 @@ Fichiers d'initialisation : @unnumberedsubsubsec Adaptation automatique au format @translationof Automatic scaling to paper size -Toute modification du format de papier à l'aide des fonctions scheme +Toute modification du format de papier à l'aide des fonctions Scheme @code{set-default-paper-size} ou @code{set-paper-size}, que nous avons vues à la rubrique @ref{Format du papier}, se traduira automatiquement par l'ajustement d'un certain nombre de variables attachées au bloc @@ -309,12 +318,12 @@ de papier utilisé. Notez bien que le simple fait d'affecter une valeur l'étalonnage automatique, bien que spécifier une largeur de papier @emph{(@code{paper-width})} peut influencer d'autres valeurs -- mais c'est une autre histoire dont nous parlerons plus tard et qui n'a rien à -voir avec la mise à l'echelle. +voir avec la mise à l'échelle. L'adaptation automatique affecte les dimensionnements verticaux @code{top-margin} et @code{bottom-margin} -- voir @ref{Variables d'espacement vertical fixe} --, ainsi que les -dimmensionnements horizontaux @code{left-margin}, @code{right-margin}, +dimensionnements horizontaux @code{left-margin}, @code{right-margin}, @code{inner-margin}, @code{outer-margin}, @code{binding-offset}, @code{indent} et @code{short-indent} -- voir @ref{Variables d'espacement horizontal}. @@ -340,7 +349,7 @@ Fichiers d'initialisation : @subsection Variables d'espacement vertical fixe @translationof Fixed vertical spacing @code{\paper} variables -@warning{Certains dimmensionnements attachés au bloc @code{@bs{}paper} +@warning{Certains dimensionnements attachés au bloc @code{@bs{}paper} sont automatiquement ajustés selon le format du papier, ce qui peut conduire à un résultat inattendu -- voir @ref{Adaptation automatique au format}.} @@ -354,21 +363,21 @@ Les valeurs par défaut (avant étalonnage) sont définies dans le fichier La hauteur de la feuille. Il s'agit par défaut de la dimension du papier utilisé. Notez bien que cette variable n'affectera pas -l'ajustement automatique d'un certain nombre de dimmensionnement -vertical. +l'ajustement automatique d'un certain nombre de dimensionnements +verticaux. @item top-margin @funindex top-margin La marge entre le bord supérieur de la feuille et la surface imprimable. -Elle est fixée par défaut à@tie{}@code{5\mm} et s'ajustera selon le +Elle est fixée par défaut à @code{5\mm} et s'ajustera selon le format de papier. @item bottom-margin @funindex bottom-margin La marge entre la surface imprimable et le bord inférieur de la feuille. -Elle est fixée par défaut à@tie{}@code{6\mm} et s'ajustera selon le +Elle est fixée par défaut à @code{6\mm} et s'ajustera selon le format de papier. @item ragged-bottom @@ -376,7 +385,7 @@ format de papier. L'activation de cette variable permet de ne pas répartir verticalement les systèmes sur les pages hormis la dernière. La valeur par défaut -est@tie{}@code{##f}. Lorsque la partition ne comporte que deux ou trois +est @code{#f}. Lorsque la partition ne comporte que deux ou trois systèmes par page, comme pour un conducteur d'orchestre, nous vous conseillons d'activer cette variable. @@ -385,15 +394,14 @@ conseillons d'activer cette variable. La désactivation de cette variable permet de répartir verticalement les systèmes de la dernière page d'une partition. La valeur par défaut -est@tie{}@code{##t}. Nous vous conseillons, lorsque des pièces couvrent -deux pages ou plus, d'activer cette variable.@* +est @code{#t}. Nous vous conseillons, lorsque des pièces couvrent +deux pages ou plus, de désactiver cette variable.@* Notez bien que la variable @code{ragged-last-bottom} affecte aussi la dernière page de chacune des parties -- créées à l'aide d'un bloc @code{\bookpart} -- d'un même ouvrage. @end table - @seealso Manuel de notation : @ref{Adaptation automatique au format}. @@ -405,12 +413,14 @@ Morceaux choisis : @rlsrnamed{Spacing, Espacements}. @knownissues - Les titrages (contenus dans le bloc @code{\header@{@}}) sont considérés -comme des systèmes à part entière@tie{}; ils seront donc affectés par +comme des systèmes à part entière ; ils seront donc affectés par @code{ragged-bottom} et @code{ragged-last-bottom}, qui éventuellement ajouteront de l'espace avant le premier système de la partition. +La définition explicite d'un format de papier annulera tout réglage des +marges haute et basse. + @node Variables d'espacement vertical fluctuant @subsection Variables d'espacement vertical fluctuant @@ -429,22 +439,21 @@ attachées à des objets graphiques (@emph{grobs}) qui, elles, se définissent au niveau du bloc @code{\score} -- voir à ce sujet @ref{Espacement vertical au sein d'un système}. - @menu * Structure des variables d'espacement vertical fluctuant:: * Liste des variables d'espacement vertical fluctuant:: @end menu + @node Structure des variables d'espacement vertical fluctuant @unnumberedsubsubsec Structure des variables d'espacement vertical fluctuant @translationof Structure of flexible vertical spacing alists Chacune de ces variables attachées au bloc @code{\paper} est constituée -d'une liste associative @emph{(alist)} à quatre @i{clés}@tie{}: +d'une liste associative @emph{(alist)} à quatre @i{clés} : @itemize - @item @code{basic-distance} @emph{(distance de base)} -- la grandeur d'espace par défaut, exprimée en hauteur de portée, séparant les @i{points de @@ -484,12 +493,12 @@ Par exemple, lorsque le coefficient de dilatation d'une dimension est double de celui d'une autre, elle pourra s'étirer deux fois plus que cette dernière. Il ne saurait être négatif. La valeur @code{+inf.0} provoque une @code{programming_error} (erreur de programmation) et est -ignorée@tie{}; vous pouvez toutefois utiliser @code{1.0e7} pour obtenir +ignorée ; vous pouvez toutefois utiliser @code{1.0e7} pour obtenir une valeur proche de l'infini. Lorsque cette @i{clé} n'est pas définie, sa valeur est par défaut égale à @code{space}. Notez bien que -l'utilisateur ne peut définir une propension à la compression@tie{}; +l'utilisateur ne peut définir une propension à la compression ; elle est en fait égale à -(@code{basic-distance}@tie{}@minus{}@tie{}@code{minimum-distance}). +(@code{basic-distance} @minus{} @code{minimum-distance}). @end itemize @@ -510,6 +519,9 @@ chevauchements. @end itemize +Cependant, lorsque la partition fait plusieurs pages, la dernière page +reprendra dans la mesure du possible l'espacement de la page précédente. + Les manières de modifier des listes associatives font l'objet d'un @rusernamed{Modification de listes associatives, chapitre spécifique}. L'exemple suivant indique deux façons de modifier une liste associative. @@ -605,7 +617,6 @@ page. @end table - @seealso Manuel de notation : @ref{Espacement vertical au sein d'un système}. @@ -613,7 +624,7 @@ Manuel de notation : Morceaux choisis : @rlsrnamed{Spacing,Espacements}. -Snippets: +Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -621,7 +632,7 @@ Snippets: @subsection Variables d'espacement horizontal @translationof Horizontal spacing \paper variables -@warning{Certains dimmensionnements attachés au bloc @code{@bs{}paper} +@warning{Certains dimensionnements attachés au bloc @code{@bs{}paper} sont automatiquement ajustés selon le format du papier, ce qui peut conduire à un résultat inattendu -- voir @ref{Adaptation automatique au format}.} @@ -669,14 +680,14 @@ centrés. Voir aussi @code{check-consistency}. La variable @funindex left-margin la marge entre le bord gauche de la feuille et le début de chaque -système. La valeur par défaut est de@tie{}@code{10\mm}@tie{}; elle sera +système. La valeur par défaut est de @code{10\mm} ; elle sera ajustée selon le format du papier. Lorsque vous définissez @code{line-width} et @code{right-margin}, sans modifier la valeur de @code{left-margin}, cette dernière sera alors égale à -@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)}. +@code{(paper-width @minus{} line-width @minus{} right-margin)}. Lorsque seule @code{line-width} est définie, les deux marges correspondent à -@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}, ce +@code{((paper-width @minus{} line-width) / 2)}, ce qui a pour effet de centrer les systèmes sur la page. Voir aussi @code{check-consistency}. @@ -685,13 +696,13 @@ qui a pour effet de centrer les systèmes sur la page. Voir aussi La marge entre le bord droit de la page et la fin des systèmes en pleine largeur (non @emph{ragged}). La valeur par défaut est -de@tie{}@code{10\mm} et s'ajustera selon le format du papier. Lorsque +de @code{10\mm} et s'ajustera selon le format du papier. Lorsque vous définissez @code{line-width} et @code{left-margin}, sans modifier la valeur de @code{right-margin}, cette dernière sera alors égale à -@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)}. +@code{(paper-width @minus{} line-width @minus{} left-margin)}. Lorsque seule @code{line-width} est définie, les deux marges correspondent à -@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}, ce +@code{((paper-width @minus{} line-width) / 2)}, ce qui a pour effet de centrer les systèmes sur la page. Voir aussi @code{check-consistency}. @@ -701,18 +712,18 @@ qui a pour effet de centrer les systèmes sur la page. Voir aussi Lorsqu'elle est activée, cette variable vérifie que @code{left-margin}, @code{line-width} et @code{right-margin} sont en cohérence, et que l'addition de ces trois éléments ne dépassera pas la largeur du papier -(@code{paper-width}). La valeur par défaut est@tie{}@code{##t}. Dans +(@code{paper-width}). La valeur par défaut est @code{#t}. Dans le cas d'une incohérence, un message d'avertissement est émis et les trois variables -- marges et longueur de ligne -- rétablies à leur -valeur par défaut (ajustées selon le fromat du papier). +valeur par défaut (ajustées selon le format du papier). @item ragged-right @funindex ragged-right Lorsque cette variable est activée, les systèmes ne s'étendront pas sur la longueur de la ligne, mais s'arrêteront à leur longueur normale. -La valeur par défaut est @code{##f} mais, si la partition ne comporte -qu'un seul système, elle passe à @code{##t}. Cette variable peut aussi +La valeur par défaut est @code{#f} mais, si la partition ne comporte +qu'un seul système, elle passe à @code{#t}. Cette variable peut aussi se gérer au sein d'un bloc @code{\layout}. @item ragged-last @@ -720,18 +731,22 @@ se gérer au sein d'un bloc @code{\layout}. Lorsqu'elle est activée, cette variable permet de ne pas étendre le dernier système de façon à occuper toute la longueur de la ligne. La -valeur par défaut est@tie{}@code{##f}. Cette variable peut aussi +valeur par défaut est @code{#f}. Cette variable peut aussi se gérer au sein d'un bloc @code{\layout}. @end table @seealso -Notation Reference: +Manuel de notation : @ref{Adaptation automatique au format}. Fichiers d'initialisation : @file{ly/paper-defaults-init.ly}. +@knownissues +La définition explicite d'un format de papier annulera tout réglage des +marges gauche et droite. + @node Variables spécifiques pour l'impression recto-verso @unnumberedsubsubsec Variables spécifiques pour l'impression recto-verso @@ -753,7 +768,7 @@ Lorsqu'elle est activée, les réglages affectés à @code{inner-margin}, @code{outer-margin} ainsi que @code{binding-offset} détermineront les différentes marges selon qu'il s'agit d'une page paire ou impaire. Cette variable s'applique en lieu et place de @code{left-margin} et -@code{right-margin}. La valeur par défaut est@tie{}@code{##f}. +@code{right-margin}. La valeur par défaut est @code{#f}. @item inner-margin @funindex inner-margin @@ -762,7 +777,7 @@ La marge que toutes les pages d'une partie ou de tout un ouvrage devront avoir du côté intérieur. Bien entendu, cette variable n'est effective que lorsque vous comptez générer un fichier imprimable en recto-verso -- propriété @code{two-sided} définie à vrai. La valeur par -défaut est de@tie{}@code{10\mm} et s'ajustera selon le format du papier. +défaut est de @code{10\mm} et s'ajustera selon le format du papier. @item outer-margin @funindex outer-margin @@ -771,7 +786,7 @@ la marge que toutes les pages d'une partie ou de tout un ouvrage devront avoir du côté extérieur -- opposé à la reliure. Bien entendu, cette variable n'est effective que lorsque vous comptez générer un fichier imprimable en recto-verso -- propriété @code{two-sided} définie à vrai. -La valeur par défaut est de@tie{}@code{20\mm} et s'ajustera selon le +La valeur par défaut est de @code{20\mm} et s'ajustera selon le format du papier. @item binding-offset @@ -782,7 +797,7 @@ valeur de la marge intérieure @code{inner-margin} de telle sorte que rien ne soit masqué par la reliure. Bien entendu, cette variable n'est effective que lorsque vous comptez générer un fichier imprimable en recto-verso -- propriété @code{two-sided} définie à vrai. La valeur par -défaut est de@tie{}@code{0} et s'ajustera selon le format du papier. +défaut est de @code{0} et s'ajustera selon le format du papier. @end table @@ -810,13 +825,13 @@ Les valeurs par défaut (avant étalonnage) sont définies dans le fichier Tous les systèmes, ainsi que les titres et séparateurs de systèmes, seront poussés d'autant vers la droite. la valeur par défaut est -de@tie{}@code{0.0}. +de @code{0.0}. @item indent @funindex indent Le niveau d'indentation du premier système d'une partition. La valeur -par défaut est de@tie{}@code{15\mm} et s'ajustera selon le format du +par défaut est de @code{15\mm} et s'ajustera selon le format du papier. Cette variable peut aussi se gérer au sein d'un bloc @code{\layout}. @@ -824,7 +839,7 @@ papier. Cette variable peut aussi se gérer au sein d'un bloc @funindex short-indent Le niveau d'indentation de tous les systèmes hormis le premier. La -valeur par défaut est de@tie{}@code{0}, et s'ajustera selon le format du +valeur par défaut est de @code{0}, et s'ajustera selon le format du papier dès lors que vous lui affecterez une valeur. Cette variable peut aussi se gérer au sein d'un bloc @code{\layout}. @@ -837,8 +852,8 @@ Manuel de notation : Fichiers d'initialisation : @file{ly/paper-defaults-init.ly}. -Snippets: -@rlsr{Spacing}. +Morceaux choisis : +@rlsrnamed{Spacing, Espacements}. @node Autres variables du bloc \paper @@ -911,14 +926,14 @@ Les valeurs par défaut sont définies dans le fichier Pénalité pour apparition d'une page blanche entre deux partitions. Sa valeur est par défaut inférieure à celle de -@code{blank-page-force}@tie{}; nous préférons q'une page blanche +@code{blank-page-force} ; nous préférons qu'une page blanche s'insère après la fin de la partition plutôt qu'au milieu. @item blank-last-page-force @funindex blank-last-page-force Pénalité pour fin de partition intervenant sur une page impaire. La -valeur par défaut est de@tie{}@code{0}. +valeur par défaut est de @code{0}. @item blank-page-force @funindex blank-page-force @@ -926,7 +941,7 @@ valeur par défaut est de@tie{}@code{0}. Pénalité pour apparition d'une page blanche en cours de partition. L'algorithme @code{ly:optimal-breaking} n'en tiendra pas compte puisqu'il ne conçoit pas la présence d'une page blanche au milieu d'une -partition. La valeur par défaut est de@tie{}@code{5}. +partition. La valeur par défaut est de @code{5}. @item page-breaking @funindex page-breaking @@ -958,11 +973,13 @@ Manuel de notation : @ref{Sauts de page}, @ref{Optimisation des sauts de page}, @ref{Optimisation des tournes}, -@ref{Minimisation des sauts de page}. +@ref{Minimisation des sauts de page}, +@ref{Présentation en rouleau}. Fichiers d'initialisation : @file{ly/paper-defaults-init.ly}. + @node Variables de gestion des numéros de page @unnumberedsubsubsec Variables de gestion des numéros de page @translationof @code{\paper} variables for page numbering @@ -980,25 +997,25 @@ premier numéro de page soit pair ou impair. Lorsque cette fonctionnalité est activée, l'algorithme des sauts de page décidera de lui-même si le premier numéro sera pair ou impair, ce qui se traduira par un éventuel incrément de un. La valeur par défaut -est@tie{}@code{##f}. +est @code{#f}. @item first-page-number @funindex first-page-number Le numéro de la première page. La valeur par défaut est -de@tie{}@code{#1}. +de @code{#1}. @item print-first-page-number @funindex print-first-page-number Cette variable permet d'imprimer le numéro de page y compris sur la -première. La valeur par défaut est@tie{}@code{##f}. +première. La valeur par défaut est @code{#f}. @item print-page-number @funindex print-page-number La désactivation de cette variable permet d'obtenir des pages non -numérotées. La valeur par défaut est@tie{}@code{##t}. +numérotées. La valeur par défaut est @code{#t}. @end table @@ -1024,7 +1041,7 @@ sorte que la page une se retrouve à droite. Cette variable définit l'importance relative des espacements entre la page (verticalité) et la ligne (horizontalité). Une valeur élevée privilégiera l'espacement au niveau de la page. La valeur par défaut -est de@tie{}@code{#10}. +est de @code{10}. @item print-all-headers @funindex print-all-headers @@ -1032,7 +1049,7 @@ est de@tie{}@code{#10}. Lorsque cette variable est activée, l'intégralité des champs d'entête sera imprimée pour chaque bloc @code{\score}, plutôt que les seuls champs @code{piece} et @code{opus}. La valeur par défaut -est@tie{}@code{##f}. +est @code{#f}. @item system-separator-markup @funindex system-separator-markup @@ -1042,7 +1059,7 @@ chaque système, comme on le voit dans nombre de partitions orchestrales. Cette variable n'est pas définie par défaut. La commande @code{\slashSeparator} -- définie dans le fichier @file{ly/titling-init.ly} -- fournit un @emph{markup} relativement -courant@tie{}: +courant : @lilypond[quote,verbatim,noragged-right,line-width=30\mm] #(set-default-paper-size "a8") @@ -1062,7 +1079,6 @@ courant@tie{}: @end table - @seealso Fichiers d'initialisation : @file{ly/titling-init.ly}. @@ -1070,9 +1086,7 @@ Fichiers d'initialisation : Morceaux choisis : @rlsrnamed{Spacing,Espacements}. - @knownissues - L'entête par défaut, formé d'une seule ligne, est constitué du numéro de page et du champ @code{instrument} contenu dans le bloc @code{\header}. @@ -1104,29 +1118,29 @@ concerner toutes les partitions d'un même ouvrage, auquel cas un bloc @code{\layout} indépendant se placera en tête de fichier. Dans le cas où la mise en forme concerne une partition en particulier, un bloc @code{\layout} se placera au sein du bloc @code{\score} en question. -Sont susceptibles d'apparître dans un bloc @code{\layout}@tie{}: +Sont susceptibles d'apparaître dans un bloc @code{\layout} : @itemize @item -la fonction scheme @code{layout-set-staff-size}, +la fonction Scheme @code{layout-set-staff-size}, @item -dans des blocs @code{\contexte}, les modifications apportées aux +dans des blocs @code{\context}, les modifications apportées aux différents contextes, et @item les variables normalement attachées au bloc @code{\paper} qui -affacteront la mise en forme de la partition. +affecteront la mise en forme de la partition. @end itemize La fonction @code{layout-set-staff-size} fait l'objet de la rubrique suivante, @ref{Définition de la taille de portée}. La modification des contextes est abordée dans d'autres chapitres -- voir -@ref{Modification des propriétés d'un contexte} et +@ref{Modification des greffons de contexte} et @ref{Modification des réglages par défaut d'un contexte}. Les variables du bloc @code{\paper} que l'on peut retrouver dans un bloc -@code{\layout} sont@tie{}: +@code{\layout} sont : @itemize @@ -1136,11 +1150,11 @@ du bloc @code{\paper} que l'on peut retrouver dans un bloc @item @code{indent} et @code{short-indent} -(see @ref{Variables d'indentation et de décalage}) +(voir @ref{Variables d'indentation et de décalage}) @item @code{system-count} -(see @ref{Variables de gestion des sauts de ligne}) +(voir @ref{Variables de gestion des sauts de ligne}) @end itemize @@ -1151,7 +1165,7 @@ Voici un exemple de bloc @code{\layout} : indent = 2\cm \context @{ \StaffGroup - \override StaffGrouper #'staff-staff-spacing #space = #8 + \override StaffGrouper #'staff-staff-spacing #'basic-distance = #8 @} \context @{ \Voice @@ -1161,6 +1175,105 @@ Voici un exemple de bloc @code{\layout} : @} @end example +Il est tout à fait possible que plusieurs blocs @code{\layout} +cohabitent en tant qu'expressions de niveau supérieur. Ceci se révèle +particulièrement utile lorsque différents réglages sont stockés dans des +fichiers séparés qui sont inclus au besoin. Lorsqu'un bloc +@code{\layout} est évalué, une copie de la configuration du +@code{\layout} actuel est réalisée en interne, augmentée des +aménagements apportés. Bien qu'on puisse considérer que le contenu des +différents blocs @code{\layout} se cumule, c'est la dernière adaptation +qui aura préséance en cas de situation conflictuelle -- cas typique +d'une même propriété modifiée dans différents blocs. + +Par exemple, placer le bloc suivant + +@example +\layout @{ + \context @{ + \Voice + \override TextScript #'color = #magenta + \override Glissando #'thickness = #1.5 + @} +@} +@end example + +après celui de l'exemple précédent aura pour effet de cumuler les +adaptations de @code{'padding} et @code{'color} pour l'objet +@code{TextScript}, mais la dernière adaptation apportée à la propriété +@code{'thickness} de @code{Glissando} remplace, ou masque, celle +précédemment établie. + +Les blocs @code{\layout} peuvent faire l'objet de variables, aux fins de +les utiliser ultérieurement. Ceci requiert toutefois une attention +particulière dans la mesure où cette manière de procéder n'est pas +équivalente à un définition complète et globale. + +Lorsque nous définissons la variable suivante, + +@example +layoutVariable = \layout @{ + \context @{ + \Voice + \override NoteHead #'font-size = #4 + @} +@} +@end example + +qui contient une configuration de @code{\layout} avec +l'adaptation @code{NoteHead #'font-size}, cette combinaison n'est pas +enregistrée en tant que configuration courante. Notez bien que la +« configuration courante » est lue lorsque la variable est définie, non +lorsqu'elle est utilisée ; par voie de conséquence, le contenu de la +variable dépend de l'endroit où elle se trouve dans le code source. + +Notre variable peut alors être utilisée au sein d'un autre bloc +@code{\layout}, comme par exemple : + +@example +\layout @{ + \layoutVariable + \context @{ + \Voice + \override NoteHead #'color = #red + @} +@} +@end example + +Un bloc @code{\layout} qui contient une variable comme ci-dessus, ne +recopie pas la configuration actuelle ; il utilise en fait le contenu de +@code{layoutVariable} en tant que configuration de base pour les +adaptations ultérieures, en conséquence de quoi toute modification +intervenant entre la définition et l'utilisation de la variable sera +perdue. + +Si @code{layoutVariable} est définie, ou rapatriée par un +@code{\indude}, juste avant d'être utilisée, son contenu devient la +configuration actuelle augmentée des adaptations que la variable +contient. Considérant l'exemple d'utilisation de @code{layoutVariable} +ci-dessus, le bloc @code{\layout} final contiendra donc : + +@example + TextScript #'padding = #1 + TextScript #'color = #magenta + Glissando #'thickness = #1.5 + NoteHead #'font-size = #4 + NoteHead #'color = #red +@end example + +ainsi que les adaptations à @code{indent} et @code{StaffGrouper}. + +Cependant, si la variable avait été définie bien avant le premier bloc +@code{\layout}, la configuration actuelle ne contiendrait que + +@example + NoteHead #' font-size= #4 % (written in the variable definition) + NoteHead #' color = #red % (added after the use of the variable) +@end example + +Une gestion attentive des variables de @code{\layout} se révèle être un +outil précieux dans la mise en forme des sources et le retour à une +configuration donnée. @seealso Manuel de notation : @@ -1179,7 +1292,7 @@ Morceaux choisis : @funindex layout file La @strong{taille de portée} @emph{(staff size)} est fixée par défaut à -20@tie{}points. Il existe deux manières de la modifier@tie{}: +20 points. Il existe deux manières de la modifier : La taille des portées peut se définir globalement pour toutes les partitions d'un même fichier, ou plus précisément d'un bloc @@ -1190,12 +1303,12 @@ partitions d'un même fichier, ou plus précisément d'un bloc @end example @noindent -Ceci définit donc la hauteur des portées à 14@tie{}points par -défaut@tie{}; toutes les fontes seront ajustées en conséquence. +Ceci définit donc la hauteur des portées à 14 points par +défaut ; toutes les fontes seront ajustées en conséquence. Vous pouvez aussi spécifier une taille à une partition en particulier en -procédant comme ci-dessous@tie{}: +procédant comme ci-dessous : @example \score@{ @@ -1208,7 +1321,7 @@ procédant comme ci-dessous@tie{}: La fonte Feta fournit les symboles musicaux dans huit tailles différentes. Chaque fonte correspond à une hauteur particulière de -portée@tie{}; les petites tailles comportent des symboles plus épais +portée ; les petites tailles comportent des symboles plus épais pour être cohérent avec l'épaisseur relativement plus importante des lignes de la portée. Le tableau suivant répertorie les différentes tailles de police. @@ -1271,7 +1384,6 @@ contexte @code{fontSize} ainsi que la propriété de mise en forme individuellement la taille de chaque portée. La taille de chacune des portées est relative à la taille globale. - @seealso Manuel de notation : @ref{Indication de la taille de fonte musicale}. @@ -1279,9 +1391,7 @@ Manuel de notation : Morceaux choisis : @rlsrnamed{Spacing,Espacements}. - @knownissues - @code{layout-set-staff-size} ne modifie en rien l'espacement entre les lignes d'une portée. @@ -1296,6 +1406,7 @@ lignes d'une portée. * Optimisation des sauts de page:: * Optimisation des tournes:: * Minimisation des sauts de page:: +* Présentation en rouleau:: * Sauts explicites:: * Recours à une voix supplémentaire pour gérer les sauts:: @end menu @@ -1315,7 +1426,7 @@ densité. Vous pouvez cependant insérer l'instruction @code{\break} à l'endroit où vous le jugez utile pour @qq{forcer} le passage à la ligne -suivante@tie{}: +suivante : @lilypond[quote,ragged-right,relative=2,verbatim] c4 c c c | \break @@ -1323,10 +1434,10 @@ c4 c c c | @end lilypond Par défaut, un saut de ligne ne saurait intervenir au beau milieu d'une -mesure@tie{}; LilyPond vous le signalera par un message si tel était le +mesure ; LilyPond vous le signalera par un message si tel était le cas. Si d'aventure vous voulez forcer un saut de ligne en l'absence de barre de mesure, vous devrez auparavant insérer une barre invisible -- à -l'aide de @code{\bar@tie{}""}. +l'aide de @code{\bar ""}. @lilypond[quote,ragged-right,relative=2,verbatim] c4 c c @@ -1341,7 +1452,7 @@ typiquement le cas lorsqu'un nolet est à cheval sur deux mesures. L'instruction @code{\break} sera alors opérationnelle si vous avez auparavant désactivé le @code{Forbid_line_break_engraver} du contexte @code{Voice} concerné. Notez bien que les sauts de ligne forcés doivent -être saisis au sein d'une expression polyphonique@tie{}: +être saisis au sein d'une expression polyphonique : @lilypond[quote,ragged-right,verbatim] \new Voice \with { @@ -1391,16 +1502,14 @@ Le commutateur @code{ragged-last} est équivalent à @code{ragged-right}, @} @end example - - @cindex sauts de ligne réguliers @cindex portée à quatre mesures L'utilisation conjointe de @code{\break} et de blancs dans une section @code{\repeat} vous permettra de positionner des sauts de ligne à intervalle régulier. Par exemple, les 28 mesures de ce qui suit, si -'lon est à 4/4, seront coupées toutes les quatre mesures, pas -ailleurs@tie{}: +l'on est à 4/4, seront coupées toutes les quatre mesures, pas +ailleurs : @example << @@ -1408,7 +1517,7 @@ ailleurs@tie{}: s1 \noBreak s1 \noBreak s1 \noBreak s1 \break @} - @{ @var{the actual music@dots{}} @} + @{ @var{et ici la musique@dots{}} @} >> @end example @@ -1431,9 +1540,8 @@ complicated. More details are available in @code{\noBreak}. @endpredefined - @seealso -Notation Reference: +Manuel de notation : @ref{Variables de gestion des sauts de ligne}. Référence des propriétés internes : @@ -1461,18 +1569,18 @@ trouver à des niveaux supérieurs, entre deux partitions ou Tout comme @code{ragged-right} et @code{ragged-last} qui permettent de gérer la répartition horizontale, LilyPond dispose de commutateurs -équivalents au niveau de la verticalité@tie{}: @code{ragged-bottom} et +équivalents au niveau de la verticalité : @code{ragged-bottom} et @code{ragged-last-bottom}. Lorsqu'ils sont tous deux activés -- -affectés de @code{##t} -- les systèmes ne seront pas répartis sur les +affectés de @code{#t} -- les systèmes ne seront pas répartis sur les pages y compris la dernière. Pour de plus amples détails, reportez-vous à @ref{Variables d'espacement vertical fixe}. Les sauts de page sont générés par la fonction @code{page-breaking}. -LilyPond dispose de trois différents algorithmes en la matière@tie{}: +LilyPond dispose de trois différents algorithmes en la matière : @code{ly:optimal-breaking}, @code{ly:page-turn-breaking} et @code{ly:minimal-breaking}. C'est @code{ly:optimal-breaking} qui est activé par défaut, mais rien ne vous empêche d'en changer, par -l'intermédiaire du bloc @code{\paper}@tie{}: +l'intermédiaire du bloc @code{\paper} : @example \paper @{ @@ -1486,7 +1594,7 @@ Lorsqu'un ouvrage contient plusieurs partitions et un certain nombre de pages, la gestion des sauts de page finit par devenir très gourmande, tant au niveau du processeur que de la mémoire. Vous pouvez cependant alléger la charge en recourant à des blocs @code{\bookpart} afin de -sectionner l'ouvrage que vous traitez@tie{}; les sauts de pages seront +sectionner l'ouvrage que vous traitez ; les sauts de page seront alors gérés individuellement au niveau de chacune des parties. Par ailleurs, cela vous autorisera une gestion différente selon les sections. @@ -1515,7 +1623,6 @@ sections. @} @end example - @predefined @funindex \pageBreak @code{\pageBreak}, @@ -1523,7 +1630,6 @@ sections. @code{\noPageBreak}. @endpredefined - @seealso Manuel de notation : @ref{Variables de gestion des sauts de page}. @@ -1544,7 +1650,6 @@ rupture qui évite d'obtenir à la fois une page trop dense ou exagérément aérée. Contrairement à la fonction @code{ly:page-turn-breaking}, elle n'a aucune notion de ce qu'est une @qq{tourne}. - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -1578,7 +1683,7 @@ de l'œuvre. Vous pouvez alors recourir au @code{Page_turn_engraver} que vous mentionnerez dans un contexte de voix ou de portée. Ce graveur de tournes recherchera dans le contexte en question les passages sans note. Notez bien qu'il ne recherche pas des silences, mais l'absence de -notes@tie{}; autrement dit, il ne restera pas inactif dans la cadre +notes ; autrement dit, il ne restera pas inactif dans le cadre d'une portée polyphonique dont l'une des parties contiendrait des silences. Lorsqu'il rencontre un fragment suffisamment long ne contenant aucune note, il insère un @code{\allowPageTurn} à la barre @@ -1592,8 +1697,8 @@ Le @code{Page_turn_engraver} examine la propriété de contexte @code{minimumPageTurnLength} pour déterminer quelle doit être la longueur d'un fragment sans note avant une tourne. La valeur par défaut de @code{minimumPageTurnLength} est -@code{#(ly:make-moment@tie{}1@tie{}1)}, soit une ronde, et s'ajuste de -la manière suivante@tie{}: +@code{(ly:make-moment 1 1)}, soit une ronde, et s'ajuste de +la manière suivante : @example \new Staff \with @{ \consists "Page_turn_engraver" @} @@ -1623,7 +1728,6 @@ Les commandes de tourne -- @code{\pageTurn}, @code{\noPageTurn} et @code{\allowPageTurn} -- peuvent s'utiliser à des niveaux supérieurs, entre des blocs @code{\score} ou des @emph{markups} de haut niveau. - @predefined @funindex \pageTurn @code{\pageTurn}, @@ -1633,14 +1737,11 @@ entre des blocs @code{\score} ou des @emph{markups} de haut niveau. @code{\allowPageTurn}. @endpredefined - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. - @knownissues - Une partition ne devrait contenir qu'une seule instance du @code{Page_turn_engraver}, au risque de se contredire les uns les autres. @@ -1658,7 +1759,7 @@ donc la préférer lorsque la partition s'étend sur beaucoup de pages ou lorsque les autres fonctions de gestion des sauts de page ralentissent nettement le traitement, sont trop gourmandes en mémoire ou qu'il y a beaucoup de texte. Il suffit de la mentionner au sein du bloc -@code{\paper}@tie{}: +@code{\paper} : @example \paper @{ @@ -1666,19 +1767,38 @@ beaucoup de texte. Il suffit de la mentionner au sein du bloc @} @end example - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. +@node Présentation en rouleau +@subsection Présentation en rouleau +@translationof One-line page breaking + +@funindex ly:one-line-breaking + +La fonction @code{ly:one-line-breaking} constitue un algorithme de +calcul des sauts de pages particulier en ceci que chaque partition fait +l'objet d'une page unique, d'une seule ligne. Cette fonctionnalité +s'affranchit de l'impression des titres et marges ; seule la partition +est affichée. + +La largeur de page est ajustée de telle sorte que la pièce la plus +longue tienne sur une seule ligne. En particulier, les variables +@code{paper-width}, @code{line-width} et @code{indent} du bloc +@code{\paper} seront ignorées ; les @code{left-margin} et +@code{right-margin} seront honorées. La hauteur de page ne sera pas +modifiée. + + @node Sauts explicites @subsection Sauts explicites @translationof Explicit breaks Il arrive parfois que LilyPond rejette des @code{\break} ou des @code{\pageBreak} explicites. Vous pouvez alors prendre le contrôle -avec ces deux instructions dérogatoires@tie{}: +avec ces deux instructions dérogatoires : @example \override NonMusicalPaperColumn #'line-break-permission = ##f @@ -1722,7 +1842,6 @@ musique = \relative c'' { c8 c c c } } @end lilypond - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -1814,7 +1933,6 @@ music = \relative c'' { c4 c c c } } @end lilypond - @seealso Manuel de notation : @ref{Espacement vertical}. @@ -1830,7 +1948,7 @@ Morceaux choisis : @cindex vertical, espacement @cindex espacement vertical -L'espacement vertical dépend de trois éléments@tie{}: la surface +L'espacement vertical dépend de trois éléments : la surface disponible -- par exemple format de papier et marges --, l'espace qui doit séparer les systèmes, et l'espace qui sépare les portées d'un même système. @@ -1841,6 +1959,7 @@ système. * Résolution des collisions verticales:: @end menu + @node Espacement vertical au sein d'un système @subsection Espacement vertical au sein d'un système @translationof Flexible vertical spacing within systems @@ -1851,7 +1970,7 @@ système. @cindex espacement au sein d'un système LilyPond dispose de trois différents mécanismes permettant de contrôler -l'espacement au sein d'un système selon trois catégories@tie{}: +l'espacement au sein d'un système selon trois catégories : @itemize @@ -1905,19 +2024,19 @@ abordées en fin de section. Le nom de ces propriétés, sauf @code{staff-affinity}, suit le schéma @code{@var{item1}-@var{item2}-spacing} -- @code{@var{item1}} et @code{@var{item2}} étant les éléments à espacer. Notez bien que -@code{@var{item2}} n'est pas forcément placé au-dessous@tie{}: c'est le +@code{@var{item2}} n'est pas forcément placé au-dessous : c'est le cas pour la propriété @code{nonstaff-relatedstaff-spacing} qui spécifie la distance entre une ligne de non-portée alors que sa -@code{staff-affinity} a été déterminée à @code{#UP}. +@code{staff-affinity} a été déterminée à @code{UP}. Toutes ces distances sont mesurées entre les points de référence -respectifs de éléments considérés. +respectifs des éléments considérés. Le @i{point de référence} d'une portée est le centre vertical du @code{StaffSymbol} -- la ligne médiane si @code{line-count} est impair, l'interligne médian si @code{line-count} est pair. Quant aux lignes rattachées à des portées -- lignes de non-portée -- le -tableau suivant présente le @i{point de référence} pour chacun d'entre -eux@tie{}: +tableau suivant présente le @i{point de référence} pour chacune +d'elles : @multitable {Non-staff line} {Reference point} @headitem Ligne de non-portée @tab Point de référence @@ -1929,7 +2048,7 @@ eux@tie{}: @item @code{FretBoards} @tab ligne supérieure @end multitable -En voici une représentation graphique@tie{}: +En voici une représentation graphique : @c KEEP LY @lilypond[quote,noragged-right,line-width=110\mm] @@ -1949,14 +2068,16 @@ labelContext = #(define-music-function (parser location context) (string?) - #{ s1*0^\markup { \typewriter $context } #}) + #{ s1*0^\markup { \typewriter #context } #}) \layout { \context { \Dynamics \alignToZero } \context { \FiguredBass \alignToZero } \context { \Lyrics \alignToZero } - \context { \NoteNames \alignToZero } - \context { \ChordNames \alignToZero \lowerCaseChords } + \context { \NoteNames \alignToZero \staffAffinityDown } + \context { \ChordNames \alignToZero + \staffAffinityDown + \lowerCaseChords } \context { \FretBoards \alignToZero \staffAffinityDown } \context { \Score \override BarLine #'stencil = ##f @@ -1990,7 +2111,7 @@ labelContext = \set RhythmicStaff.instrumentName = #"centre vertical " \labelContext "Dynamics" s1*3 } - \new Dynamics { s2\mp s\fp } + \new Dynamics { s1\mp s\fp } >> %% Le point de référence de FiguredBass est son point le plus haut @@ -2044,7 +2165,7 @@ alors que la seconde redéfinit la propriété dans son intégralité. @end example La modification d'un espacement au niveau global se mentionne au sein du -bloc @code{\layout}@tie{}: +bloc @code{\layout} : @example \layout @{ @@ -2079,17 +2200,17 @@ pas à la dernière portée d'un système. En tout état de cause, la fonction Scheme @code{staff-staff-spacing} d'un @code{VerticalAxisGroup} affectera les propriétés du -@code{StaffGrouper} si la portée est incluse dans un regroupement@tie{}; +@code{StaffGrouper} si la portée est incluse dans un regroupement ; elle s'appliquera au @code{default-staff-staff-spacing} en l'absence de regroupement. Les portées peuvent donc s'aligner différemment selon qu'elles sont ou non regroupées. Pour obtenir le même espacement sans -tenir compte dees éventuels regroupements, cette fonction peut faire +tenir compte des éventuels regroupements, cette fonction peut faire place à une complète redéfinition des espacements fluctuants à l'aide de règles dérogatoires comme vu précédemment. @item default-staff-staff-spacing Il s'agit de la distance qui s'appliquera par défaut aux portées -isolées, à loins que @code{staff-staff-spacing} n'ait été redéfini +isolées, à moins que @code{staff-staff-spacing} n'ait été redéfini explicitement par un @code{\override}. @item staff-affinity @@ -2105,9 +2226,9 @@ Une ligne de non-portée en dessous d'un système devrait avoir sa @code{staff-affinity} définie à @code{UP}. De la même manière, lorsque cette ligne surplombe un système, sa @code{staff-affinity} devrait être définie à @code{DOWN}. Prenez garde à la valeur que vous affectez à -@code{staff-affinity}@tie{}: si vous lui affectez la valeur @code{#f} à +@code{staff-affinity} : si vous affectez la valeur @code{#f} à une ligne de non-portée, cette ligne sera considérée comme étant une -portée@tie{}; à l'inverse, utiliser la propriété @code{staff-affinity} +portée ; à l'inverse, utiliser la propriété @code{staff-affinity} pour une portée lui fera perdre cette qualité. @c TODO: verify last clause below ("even if other...") @@ -2124,9 +2245,9 @@ non-portée est présente (quelque soit le côté). @item nonstaff-nonstaff-spacing Il s'agit de la distance entre deux lignes de non-portée selon -l'orientation définie par @code{staff-affinity} et qu'elles ont la même -orientation. Bien entendu, ceci ne peut concerner que les valeurs -@code{UP} et @code{DOWN} de @code{staff-affinity}. +l'orientation définie par @code{staff-affinity} et dès lors qu'elles ont +la même orientation. Bien entendu, ceci ne peut concerner que les +valeurs @code{UP} et @code{DOWN} de @code{staff-affinity}. @item nonstaff-unrelatedstaff-spacing Il s'agit de la distance entre une ligne de non-portée et la portée à @@ -2149,7 +2270,7 @@ d'un @code{\override} au niveau d'un contexte @code{StaffGroup} (ou son @item staff-staff-spacing Il s'agit de la distance entre deux portées consécutives d'un même système. La propriété @code{staff-staff-spacing} de l'objet -@code{VerticalAxisGroup} d'un portée en particulier peut se redéfinir à +@code{VerticalAxisGroup} d'une portée en particulier peut se redéfinir à l'aide de règles dérogatoires. @item staffgroup-staff-spacing @@ -2162,7 +2283,6 @@ regroupement a été ajustée au niveau de son propre @code{VerticalAxisGroup}, cette dernière aura préséance. @end table - @seealso Fichiers d'initialisation : @file{ly/engraver-init.ly}, @@ -2183,7 +2303,7 @@ des contextes de @qq{portée} pouvant contenir plusieurs voix, mais pas une portée. L'espacement de ces @i{portées isolées} est géré par les propriétés -suivantes@tie{}: +suivantes : @itemize @item Propriétés du @code{VerticalAxisGroup} : @@ -2203,8 +2323,8 @@ ces portées sont regroupées -- voir L'exemple suivant illustre la manière de gérer l'espacement de portées isolées à l'aide de la propriété @code{default-staff-staff-spacing}. Les mêmes règles appliquées de manière dérogatoire au -@code{staff-staff-spacing} produiront les mêmes effets, y comris au sein -de regroupements. +@code{staff-staff-spacing} produiront les mêmes effets, y compris au +sein de regroupements. @lilypond[verbatim,quote,staffsize=16] \layout { @@ -2240,7 +2360,6 @@ de regroupements. >> @end lilypond - @seealso Fichiers d'initialisation : @file{scm/define-grobs.scm}. @@ -2261,12 +2380,12 @@ souvent que des portées soient regroupées. L'espacement est alors plus important entre deux regroupements qu'entre les portées d'un même groupe. -Les @i{regroupement de portées} tels le @code{StaffGroup} ou le +Les @i{regroupements de portées} tels le @code{StaffGroup} ou le @code{ChoirStaff} sont des contextes qui peuvent contenir simultanément une ou plusieurs portées. L'espacement entre les portées d'un même regroupement est géré par les -propriétés suivantes@tie{}: +propriétés suivantes : @itemize @item Propriétés du @code{VerticalAxisGroup} : @@ -2284,8 +2403,8 @@ Ces propriétés d'objet graphique sont expliquées une à une au chapitre @ref{Propriétés d'espacement au sein d'un système}. L'exemple suivant illustre la manière de gérer l'espacement de portées -regroupes, à l'aide des propriétés de l'objet graphique -@code{StaffGrouper}@tie{}: +regroupées, à l'aide des propriétés de l'objet graphique +@code{StaffGrouper} : @lilypond[verbatim,quote,staffsize=16] \layout { @@ -2335,7 +2454,7 @@ En fait, les lignes de non-portée sont des contextes qui vont créer un objet de rendu @code{VerticalAxisGroup}. L'espacement des lignes de non-portée est géré par les propriétés -suivantes@tie{}: +suivantes : @itemize @item Propriétés du @code{VerticalAxisGroup} : @@ -2382,7 +2501,6 @@ Vous noterez que la valeur élevée attribuée à la clé >> @end lilypond - @seealso Fichiers d'initialisation : @file{ly/engraver-init.ly}, @@ -2416,7 +2534,7 @@ Une autre approche de l'espacement vertical est le recours à positionnement vertical absolu sur la page. @code{NonMusicalPaperColumn #'line-break-system-details} prend en charge -une liste associative de trois mises au point@tie{}: +une liste associative de trois mises au point : @itemize @item @code{X-offset} @@ -2426,7 +2544,7 @@ une liste associative de trois mises au point@tie{}: Les dérogations en matière d'objet graphique, y compris celles concernant les @code{NonMusicalPaperColumn} ci-dessus, peuvent se placer -à trois différents endroits de votre fichier source@tie{}: +à trois différents endroits de votre fichier source : @itemize @item directement au beau milieu des notes @@ -2439,7 +2557,7 @@ simple commande @code{\override} au sein d'un bloc @code{\context} ou @code{\with}. Dans le cas ou il est stipulé au fil des notes, c'est la commande spécifique @code{\overrideProperty} qui doit intervenir. Voici quelques exemples de réglages de @code{NonMusicalPaperColumn} à l'aide -de la commande @code{\overrideProperty}@tie{}: +de la commande @code{\overrideProperty} : @example \overrideProperty NonMusicalPaperColumn @@ -2491,7 +2609,7 @@ Commençons par examiner un exemple dépourvu de toute mise au point. Cette partition isole les informations de saut de ligne ou de page dans une voix spécifique. La mise en forme est ainsi séparée des événements -musicaux@tie{}; ceci nous permettra d'y voir plus clair au fur et à +musicaux ; ceci nous permettra d'y voir plus clair au fur et à mesure que nous avancerons. Pour plus de précisions, relisez @ref{Recours à une voix supplémentaire pour gérer les sauts}. @@ -2500,7 +2618,7 @@ mesures chacune. L'espacement vertical est celui que LilyPond attribue par défaut. Nous pouvons, afin de fixer explicitement le point d'attache vertical de chacun des systèmes, définir un doublet @code{Y-offset} en tant qu'attribut du @code{line-break-system-details} -de l'objet @code{NonMusicalPaperColumn}@tie{}: +de l'objet @code{NonMusicalPaperColumn} : @lilypond[verbatim,quote,staffsize=16] \header { tagline = ##f } @@ -2614,7 +2732,7 @@ d'un regroupement de portées. } @end lilypond -Quelques points à prendre en considération@tie{}: +Quelques points à prendre en considération : @itemize @item @@ -2628,16 +2746,14 @@ distance entre des portées adjacentes. Des valeurs positives remontent les portées et paroles, des valeurs négatives les descendent. @item -Dans la mesure où @code{NonMusicalPaperColumn -#'line-break-system-details} permet de positionner systèmes et portées -n'importe où sur une page, vous pourriez être en contradiction avec les -dimensionnements de la feuille ou bien aboutir à des surimpressions. -Soyez donc raisonnables quant aux différentes valeurs que vous affectez -à ces réglages. +Dans la mesure où @code{NonMusicalPaperColumn #'line-break-system-details} +permet de positionner systèmes et portées n'importe où sur une page, +vous pourriez être en contradiction avec les dimensionnements de la +feuille ou bien aboutir à des surimpressions. Soyez donc raisonnable +quant aux différentes valeurs que vous affectez à ces réglages. @end itemize - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -2655,13 +2771,13 @@ Vous savez de manière intuitive qu'un certain nombre d'objets en matière de notation musicale appartiennent à la portée, et que d'autres se placent en dehors de la portée. Entre autres objets externes, nous avons les marques repères, les textes et les -nuances@tie{}; nous les appellerons @qq{objets extérieurs à la portée}. -La règle qu'applique LilyPond pour positionner verticalement ces +nuances ; nous les appellerons @qq{objets extérieurs à la portée}. +La règle adoptée par LilyPond pour positionner verticalement ces objets extérieurs consiste à les placer au plus près de la portée tout en prenant garde d'éviter qu'il y ait chevauchement. LilyPond utilise la propriété @code{outside-staff-priority} afin de -déterminer si un objet est ou non un objet extérieur à la portée@tie{}: +déterminer si un objet est ou non un objet extérieur à la portée : lorsque la valeur de @code{outside-staff-priority} est numérique, il s'agit d'un objet extérieur à la portée. De plus, la propriété @code{outside-staff-priority} indique à LilyPond l'ordre dans lequel ces @@ -2693,7 +2809,7 @@ Le décalage vertical entre un objet extérieur à la portée et celui qui le précède se contrôle par la propriété @code{outside-staff-padding}. @c KEEP LY -@lilypond[quote,ragged-right,relative=2,verbatim] +@lilypond[quote,ragged-right,relative=2,verbatim,staffsize=18] \once \override TextScript #'outside-staff-padding = #0 a'^"Ce texte est placé au plus près de la note" \once \override TextScript #'outside-staff-padding = #3 @@ -2723,7 +2839,6 @@ c4 c''2 @end lilypond - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -2744,6 +2859,7 @@ Morceaux choisis : * Notation proportionnelle:: @end menu + @node Généralités sur l'espacement horizontal @subsection Généralités sur l'espacement horizontal @translationof Horizontal spacing overview @@ -2754,12 +2870,12 @@ durées importantes prennent ainsi plus de place que des durées moins longues. Les durées les plus courtes se verront attribuer un espace fixe, contrôlé par la propriété @code{shortest-duration-space} de l'objet @rinternals{SpacingSpanner}. Au plus la durée s'allonge, au -plus elle prendra d'espace@tie{}: le doublement d'une durée attribuera à +plus elle prendra d'espace : le doublement d'une durée attribuera à la note un espace fixé d'après la propriété @code{spacing-increment}. L'exemple suivant comporte des blanches, des noires et un certain nombre de croches. La croche est suivie d'un espace de la largeur d'une tête -de note@tie{}; pour la noire , cette espace est de deux têtes@tie{}; il +de note ; pour la noire , cet espace est de deux têtes ; il est de trois pour la blanche. @lilypond[quote,verbatim,relative=1] @@ -2767,17 +2883,17 @@ c2 c4. c8 c4. c8 c4. c8 c8 c8 c4 c4 c4 @end lilypond -@code{spacing-increment} est normalement défini à 1,2@tie{}espace de +@code{spacing-increment} est normalement défini à 1,2 espace de portée -- ce qui correspond à peu près à la largeur d'une tête de note -- et @code{shortest-duration-space} à 2,0. La note la plus courte -s'étendra donc sur l'équivalent de 2,4@tie{}espaces de portée (2 fois le +s'étendra donc sur l'équivalent de 2,4 espaces de portée (2 fois le @code{spacing-increment}). Le point de départ de cet espace se situe à -l'extrémité gauche du symbole@tie{}; la note la plus courte est donc +l'extrémité gauche du symbole ; la note la plus courte est donc suivie en général d'un espace égal à la largeur d'une tête de note. Si l'on suit à la lettre ce qui précède, ajouter une simple triple croche à une partition qui comporte déjà des croches et des doubles -augmentera considérablement son volume@tie{}: la durée la plus +augmentera considérablement son volume : la durée la plus courte n'est plus la double mais la triple croche, ce qui aura pour conséquence d'ajouter une largeur de tête à chacune des notes. Pour s'affranchir de cet effet quelque peu pervers, la durée la plus @@ -2790,7 +2906,7 @@ plus courte de chaque mesure. C'est elle qui servira de base pour l'espacement, à cette nuance près que la plus courte durée ne saurait être strictement supérieure à la croche. Cette @qq{durée de référence} est d'ailleurs affichée lorsque vous lancez @code{lilypond} avec l'option -@code{--verbose}. +@option{--verbose}. Ces durées peuvent être adaptées. Vous pouvez définir la durée de base pour les espacements grâce à la propriété @@ -2806,13 +2922,12 @@ propriété @code{base-shortest-duration}. Les notes plus courtes que la note témoin sont suivies d'un espace proportionnel à la durée témoin. Si donc nous ajoutions quelques doubles croches à l'exemple précédent, elles seraient suivies d'une -demie largeur de tête@tie{}: +demie largeur de tête : @lilypond[quote,verbatim,relative=2] c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4 @end lilypond - Dans notre @emph{Essai sur la gravure musicale automatisée}, nous avons vu comment la direction des hampes peut influencer l'espacement -- voir @ressay{Espacement}. Ceci est contrôlé par la propriété @@ -2837,26 +2952,23 @@ les réglages par défaut, puis avec des corrections forcées. L'espacement spécifique à la notation proportionnelle fait l'objet d'une @rusernamed{Notation proportionnelle,rubrique dédiée}. - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. +Essai sur la gravure musicale automatisée : +@ressay{Espacement}. + Référence des propriétés internes : @rinternals{SpacingSpanner}, @rinternals{NoteSpacing}, @rinternals{StaffSpacing}, @rinternals{NonMusicalPaperColumn}. -Essai sur la gravure musicale automatisée : -@ressay{Espacement}. - - @knownissues - Il n'existe pas de mécanisme simple et efficace qui permette de forcer manuellement l'espacement. La solution ci-dessous permet -cependant @qq{d'aérer} artificiellement une partition@tie{}; il vous +cependant @qq{d'aérer} artificiellement une partition ; il vous suffit d'ajuster la valeur du décalage @emph{(padding)} autant que de besoin. @example @@ -2876,8 +2988,8 @@ commande @code{newSpacingSection} permet alors de réinitialiser les paramètres d'espacement. Dans l'exemple qui suit, le changement de métrique marque le début -d'une nouvelle partie@tie{}; remarquez comme les doubles-croches sont -alors plus espacées@tie{}: +d'une nouvelle partie ; remarquez comme les doubles-croches sont +alors plus espacées : @lilypond[relative,verbatim,quote] \time 2/4 @@ -2892,7 +3004,6 @@ La commande @code{\newSpacingSection} crée un nouvel objet @code{SpacingSpanner}, ce qui permet d'appliquer de nouveaux @code{\override}s à partir de ce point. - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -2911,7 +3022,7 @@ suivent, toutes deux montrant la même musique. La première partition applique les réglages par défaut, alors que la seconde bénéficie d'ajustement de la propriété @code{base-shortest-duration}. Au plus la valeur de @code{ly:make-moment} est grande, au plus la musique sera -resserrée. En effet, @code{ly:make-moment} construit une durée@tie{}: +resserrée. En effet, @code{ly:make-moment} construit une durée : @w{@code{1 4}} est plus long que @w{@code{1 16}}. @lilypond[verbatim,line-width=12\cm] @@ -2943,9 +3054,7 @@ resserrée. En effet, @code{ly:make-moment} construit une durée@tie{}: } @end lilypond - @snippets - L'espacement au sein d'un nolet dépend par défaut d'un certain nombre de facteurs qui ne sont pas liés à la durée (altération, changement de clef, etc.). @w{@code{Score.SpacingSpanner #'uniform-stretching}} @@ -2981,14 +3090,13 @@ s'appliquera à toute la partition, puisque mentionnée au sein d'un bloc L'activation du commutateur @code{strict-note-spacing} permet d'espacer les notes sans tenir compte des clefs, barres de mesure ou notes -d'ornement qui pourraient apparaître@tie{}: +d'ornement qui pourraient apparaître : @lilypond[quote,ragged-right,relative=2,verbatim] \override Score.SpacingSpanner #'strict-note-spacing = ##t \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } @end lilypond - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -3012,14 +3120,14 @@ Morceaux choisis : @c Bit verbose and vague, use examples? Deux réglages de bases ont une influence considérable sur -l'espacement@tie{}: @code{line-width} et @code{indent}. Tous deux se +l'espacement : @code{line-width} et @code{indent}. Tous deux se placent dans le bloc @code{\layout}. Ils contrôleront la longueur des lignes et l'indentation de la première. L'activation du commutateur @code{ragged-right} au sein du bloc @code{\layout} permet de terminer les systèmes naturellement plutôt que de les voir s'étirer sur toute la largeur de la page. Cette option est -particulièrement utile lorsque vous traitez de courts fragment, ou bien +particulièrement utile lorsque vous traitez de courts fragments, ou bien pour vérifier ce que donnerait l'espacement naturel. Bien qu'il soit désactivé par défaut, il sera activé si la partition ne comporte qu'un seul système. @@ -3046,7 +3154,6 @@ paragraphe de texte, la dernière ligne s'arrête au dernier caractère. @} @end example - @seealso Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -3109,7 +3216,7 @@ n'en occupent pas la moitié de l'espace horizontal. En matière de gravure traditionnelle, cet espacement correspond tout à fait à nos attentes, puisque nous pouvons rogner l'espace sur la -blanche et ainsi en gagner en largeur sur toute la mesure qui fait une +blanche et ainsi gagner en largeur sur toute la mesure qui fait une ronde. Par contre, si nous avons besoin d'insérer une indication temporelle ou @@ -3142,31 +3249,30 @@ la mesure occupent maintenant exactement le même espace horizontal. Nous pourrions donc y insérer, au-dessus ou au-dessous, une indication temporelle ou autre graphisme. - @code{proportionalNotationDuration} est une propriété attachée au contexte @code{Score}. Rappelez-vous que vous pouvez régler les propriétés d'un contexte à trois différents endroits de votre -fichier@tie{}: dans un bloc @code{\with}, dans un bloc @code{\context} +fichier : dans un bloc @code{\with}, dans un bloc @code{\context} ou au beau milieu de la musique à l'aide de la commande @code{\set}. Vous pouvez donc définir @code{proportionalNotationDuration} selon l'une -de ces trois façons, à l'instar de n'importe quel définition de +de ces trois façons, à l'instar de n'importe quelle définition de contexte. La propriété @code{proportionalNotationDuration} prend en unique argument la durée de référence qui servira de base pour espacer toute la -musique. La fonction scheme @code{make-moment} intégrée à LilyPond -prend deux arguments@tie{}: un numérateur et un dénominateur qui +musique. La fonction Scheme @code{make-moment} intégrée à LilyPond +prend deux arguments : un numérateur et un dénominateur qui représentent une fraction de ronde. L'appel de -@w{@code{#(ly:make-moment 1 20)}} produit donc une durée de référence +@w{@code{(ly:make-moment 1 20)}} produit donc une durée de référence égale à un vingtième de ronde. Vous pourriez tout aussi bien utiliser -@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)} ou -@code{#(ly:make-moment 3 97)}. +@code{(ly:make-moment 1 16)}, @code{(ly:make-moment 1 8)} ou +@code{(ly:make-moment 3 97)}. Se pose alors le problème de fournir la juste durée de référence à @code{proportionalNotationDuration}. Il faut en l'occurrence procéder par tâtonnement, en commençant par une valeur proche de la note la plus rapide (la durée la plus courte) du morceau. Au plus la durée de -référence est petite, au plus la musique sera étalée@tie{}; à l'inverse, +référence est petite, au plus la musique sera étalée ; à l'inverse, une durée de référence élevée produira une musique resserrée. @lilypond[quote,verbatim,ragged-right] @@ -3228,7 +3334,7 @@ une durée de référence élevée produira une musique resserrée. Vous ne manquerez pas de noter qu'une durée de référence trop grande, comme la croche pour la première ligne, a pour conséquence de resserrer la musique, ce qui peut aboutir à des chevauchements de têtes. Vous -remarquez aussi que , par principe, la notation proportionnelle occupe +remarquez aussi que, par principe, la notation proportionnelle occupe beaucoup plus d'espace horizontal que l'espacement traditionnel. La notation proportionnelle met en évidence le rythme au détriment de l'espacement horizontal. @@ -3337,7 +3443,7 @@ Le @code{SpacingSpanner} est en fait un objet graphique abstrait attaché au contexte @code{Score}. Tout comme pour la propriété @code{proportionalNotationDuration}, les réglages du @code{SpacingSpanner} peuvent se faire à trois différents endroits de -votre fichier@tie{}: dans un bloc @code{\with}, dans un bloc +votre fichier : dans un bloc @code{\with}, dans un bloc @code{\context} ou au beau milieu de la musique à l'aide de la commande @code{\set}. @@ -3349,11 +3455,10 @@ comportement en cours de partition, et recourir alors à l'instruction @code{\newSpacingSection} -- pour de plus amples détails, voir la rubrique @ref{Changement d'espacement en cours de partition}. - Intéressons-nous maintenant au @code{Separating_line_group_engraver}, qui est désactivé pour la plupart des partitions en notation proportionnelle. Voici ce qui apparaît dans une partition -traditionnelle@tie{}: il y a toujours un @qq{espace préservé} juste +traditionnelle : il y a toujours un @qq{espace préservé} juste avant la première note de chaque portée. @lilypond[quote,verbatim,ragged-right] @@ -3393,8 +3498,8 @@ qu'aucune notion de durée ne leur soit attachée, ces éléments @qq{consomment} de l'espace. Différentes approches permettent cependant de gérer ce problème. -Éviter les problèmes d'espacement avec l'armure est chose aisée@tie{}: -il suffit qu'il n'y en ait pas@tie{}! C'est bien souvent le cas en +Éviter les problèmes d'espacement avec l'armure est chose aisée : +il suffit qu'il n'y en ait pas ! C'est bien souvent le cas en musique contemporaine, où l'on trouve le plus d'ouvrages en notation proportionnelle. Il en va de même pour la métrique, et tout particulièrement lorsque la partition comporte un quadrillage temporel @@ -3406,7 +3511,7 @@ impossible de se passer de clef et d'altération. L'une des options permettant de s'affranchir de l'espacement dû aux éléments non musicaux consiste en l'activation de la propriété @code{strict-note-spacing} attachée au @code{SpacingSpanner}. Observons -les deux portées suivantes@tie{}: +les deux portées suivantes : @lilypond[quote,verbatim,ragged-right] \new Staff { @@ -3440,8 +3545,8 @@ pouvez le constater, l'activation de @code{strict-note-spacing} a pour conséquence que l'algorithme d'espacement ignore tout bonnement la largeur des métriques, armures, clefs et altérations. -En plus ceux que nous venons de voir, vous trouverez d'autres réglages -en usage dans la notation proportionnelle comme, entre autres, +En plus de ceux que nous venons de voir, vous trouverez d'autres +réglages en usage dans la notation proportionnelle comme, entre autres, @itemize @item @code{\override SpacingSpanner #'strict-grace-spacing = ##t} @@ -3458,7 +3563,6 @@ d'ornement, d'étendre les indications de nolet afin d'indiquer de façon l'occasion d'un saut de ligne ou de page. Nous vous renvoyons aux différentes rubriques associées du manuel pour chacun de ces réglages. - @seealso Manuel de notation : @ref{Changement d'espacement en cours de partition}. @@ -3471,13 +3575,13 @@ Morceaux choisis : @section Réduction du nombre de pages de la partition @translationof Fitting music onto fewer pages -Vous pourriez un jour être confronté au problème suiven@tie{}: l'une +Vous pourriez un jour être confronté au problème suivant : l'une des pages de votre partition ne comporte que deux portées alors que -- ce qui est d'autant plus frustrant -- l'espace libre sur les autres pages aurait permis une distribution différente. L'instruction @code{annotate-spacing} se révèle être un outil -indispensable pour pour l'analyse des problèmes de mise en forme. Cette +indispensable pour l'analyse des problèmes de mise en forme. Cette commande met en surimpression la valeur des différentes variables d'espacement et de mise en forme, comme nous allons le voir dans la rubrique @ref{Mise en évidence de l'espacement}. @@ -3487,6 +3591,7 @@ rubrique @ref{Mise en évidence de l'espacement}. * Modification de l'espacement:: @end menu + @node Mise en évidence de l'espacement @subsection Mise en évidence de l'espacement @translationof Displaying spacing @@ -3497,7 +3602,7 @@ rubrique @ref{Mise en évidence de l'espacement}. Le meilleur moyen d'appréhender les différentes variables de dimensionnement vertical sur lesquelles vous pouvez jouer au niveau de la mise en page, consiste à activer, au sein du bloc @code{\paper}, la -fonction @code{annotate-spacing}@tie{}: +fonction @code{annotate-spacing} : @c need to have \book{} otherwise we get the separate systems. -hwn @lilypond[verbatim,quote] @@ -3512,9 +3617,9 @@ fonction @code{annotate-spacing}@tie{}: Toutes les dimensions sont exprimées en espace de portée @emph{(staff-space)} quelle que soit l'unité mentionnée dans les blocs @code{\paper} ou @code{\layout}. Dans cet exemple, la hauteur de la -feuille (@code{paper-height}) est de 59,75@tie{}espaces de portée +feuille (@code{paper-height}) est de 59,75 espaces de portée (@code{staff-spaces}) et la taille de portée (@code{staff-size}) de -20@tie{}points -- sa valeur par défaut. Notez que@tie{}: +20 points -- sa valeur par défaut. Notez que : @multitable {1 staff-space} {staff-size)/4 * (25,4/72,27) mm} @@ -3530,13 +3635,12 @@ feuille (@code{paper-height}) est de 59,75@tie{}espaces de portée @noindent Dans le cas qui nous occupe, un @code{staff-space} égale environ -1,757@tie{}millimètres. Les 59,75@tie{}@code{staff-spaces} de -@code{paper-height} correspondent donc à 105@tie{}millimètres, soit la +1,757 millimètres. Les 59,75 @code{staff-spaces} de +@code{paper-height} correspondent donc à 105 millimètres, soit la hauteur d'une feuille au format A6 à l'italienne. Les paires @code{(@var{a},@var{b})} sont des intervalles, @var{a} en étant l'extrémité inférieure et @var{b} l'extrémité supérieure. - @seealso Manuel de notation : @ref{Définition de la taille de portée}. @@ -3555,7 +3659,7 @@ les manières de modifier marges et autres variables connexes, consultez la rubrique @ref{Mise en forme de la page}. En dehors des marges, vous disposez de quelques moyens supplémentaires -pour gagner de l'espace@tie{}: +pour gagner de l'espace : @itemize @item @@ -3578,7 +3682,7 @@ même s'il est égal à la valeur par défaut -- peut aboutir à plus de systèmes par page dans la mesure où l'une des étapes d'estimation des hauteurs est tout simplement sautée. D'autre part, réduire le nombre de systèmes par page permet d'en disposer plus sur les suivantes. Par -exemple, avec un nombre par défaut de 11@tie{}systèmes par pages, +exemple, avec un nombre par défaut de 11 systèmes par pages, l'instruction suivante le force à 10. @example @@ -3587,13 +3691,23 @@ l'instruction suivante le force à 10. @} @end example +@item +Forcer le nombre de pages. L'instruction suivante forcera la musique à +se répartir sur deux pages. + +@example +\paper @{ + page-count = #2 +@} +@end example + @item Éviter ou réduire les objets qui augmentent la hauteur des systèmes. Par exemple, un crochet de reprise ou d'alternative consomme de l'espace. Le fait de les reporter sur plusieurs systèmes regroupés diminue d'autant l'espace disponible que si seul le premier ne comportait l'indication. Autre exemple, les indications de nuance qui -se @qq{détachent} d'un système peuvent être rapprochés de la portée@tie{}: +se @qq{détachent} d'un système peuvent être rapprochés de la portée : @lilypond[verbatim,quote,relative=1] e4 c g\f c @@ -3604,7 +3718,7 @@ e4 c g-\tweak #'X-offset #-2.7 -\tweak #'Y-offset #2.5 \f c Modifier l'espacement horizontal à l'aide du @code{SpacingSpanner}, comme indiqué à la rubrique @ref{Modification de l'espacement horizontal}. Voici ce que donne -l'espacement par défaut@tie{}: +l'espacement par défaut : @lilypond[verbatim,quote] \score { @@ -3622,7 +3736,7 @@ l'espacement par défaut@tie{}: Par contre, le fait de modifier la valeur de la propriété @code{common-shortest-duration} en passant de @code{1/4} à @code{1/2} -- bien que la noire soit la durée la plus courante, nous prenons une -valeur plus longue -- donnera un effet @qq{resserré} à la musique@tie{}: +valeur plus longue -- donnera un effet @qq{resserré} à la musique : @lilypond[verbatim,quote] \score { @@ -3650,7 +3764,6 @@ s'applique à l'intégralité de la partition. @end itemize - @seealso Manuel de notation : @ref{Mise en forme de la page}, @@ -3659,4 +3772,3 @@ Manuel de notation : Morceaux choisis : @rlsrnamed{Spacing,Espacements}. - diff --git a/Documentation/fr/notation/specialist.itely b/Documentation/fr/notation/specialist.itely index 864be49f6c..272918aff9 100644 --- a/Documentation/fr/notation/specialist.itely +++ b/Documentation/fr/notation/specialist.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 3faf62234050ba9fad88827a8ffb9e8e902ebf6a 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" +@c \version "2.16.0" @node Notation spécialisée @chapter Notation spécialisée @@ -24,7 +24,7 @@ spécifique à certains intruments ou certaines époques. * Percussions:: * Instruments à vent:: * Notation des accords:: -* Notation contemporaine:: +* Musique contemporaine:: * Notations anciennes:: * Musiques du monde:: @end menu diff --git a/Documentation/fr/notation/staff.itely b/Documentation/fr/notation/staff.itely index 56f381440d..3c256b9058 100644 --- a/Documentation/fr/notation/staff.itely +++ b/Documentation/fr/notation/staff.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 1dac524e3d3c5a6ee2aef6d11d4b18e014a53e4f + Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: John Mandereau @@ -16,7 +16,9 @@ @section Notation sur la portée @translationof Staff notation -@lilypondfile[quote]{staff-headword.ly} +@c The line width is a bit of a hack to allow space for the +@c instrument names. +@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly} Cette section aborde les détails de gravure de la portée, la réalisation de partitions comprenant plusieurs portées et l'ajout @@ -58,7 +60,7 @@ Nous allons voir ici comment créer des portées et comment les regrouper. @cindex batterie, portée @cindex percussion, portée @cindex portée, transcription de grégorien -@cindex portée rhytmique +@cindex portée rythmique @cindex portée de tablature @cindex tablature @@ -76,7 +78,7 @@ au pluriel) -- sont créées à l'aide des commandes @code{\new} ou @code{\context}. Pour de plus amples détails, consultez @ref{Création d'un contexte}. -Le contexte de portée standard s'appelle @code{Staff}@tie{}: +Le contexte de portée standard s'appelle @code{Staff} : @lilypond[verbatim,quote,relative=2] \new Staff { c4 d e f } @@ -104,7 +106,7 @@ durées. Pour de plus amples détails, consultez \new RhythmicStaff { c4 d e f } @end lilypond -Un @code{TabStaff} crée une portée de tablature correpondant aux six +Un @code{TabStaff} crée une portée de tablature correspondant aux six cordes d'une guitare standard. Pour de plus amples détails, consultez @ref{Tablatures par défaut}. @@ -112,8 +114,8 @@ cordes d'une guitare standard. Pour de plus amples détails, consultez \new TabStaff { c4 d e f } @end lilypond -Lilypond dispose aussi de deux contextes dédiés à la musique -ancienne@tie{}: @code{MensuralStaff} et @code{VaticanaStaff}. Ils sont +LilyPond dispose aussi de deux contextes dédiés à la musique +ancienne : @code{MensuralStaff} et @code{VaticanaStaff}. Ils sont abordés plus en détails au chapitre @ref{Contextes prédéfinis}. Le contexte @code{GregorianTranscriptionStaff} permet d'obtenir des @@ -128,7 +130,6 @@ Vous pourrez toujours définir d'autres contextes de portée selon vos besoins, en suivant les indications fournies au chapitre @ref{Définition de nouveaux contextes}. - @seealso Glossaire musicologique : @rglos{staff}, @@ -142,11 +143,11 @@ Manuel de notation : @ref{Contextes prédéfinis}, @ref{Symbole de la portée}, @ref{Contextes du chant grégorien}, -@ref{Les contextes de la musique mensurale}, +@ref{Contextes de musique mensurale}, @ref{Définition de nouveaux contextes}. Morceaux choisis : -@rlsrnamed{Staff notation,Notation sur la portée}. +@rlsrnamed{Staff notation, Notation sur la portée}. Référence des propriétés internes : @rinternals{Staff}, @@ -178,12 +179,12 @@ Référence des propriétés internes : LilyPond dispose de différents contextes permettant de regrouper des portées individuelles et d'obtenir ainsi des @qq{systèmes}. Chacun de -ces contextes définira le style de regoupement, avec son signe +ces contextes définira le style de regroupement, avec son signe particulier en début de portée et ses règles de gestion des barres de mesure. Lorsqu'aucun contexte particulier n'est spécifié, les propriétés -suivantes s'appliqueront par défaut@tie{}: les portées du groupe ne sont +suivantes s'appliqueront par défaut : les portées du groupe ne sont pas reliées, hormis par une simple ligne verticale en début de ligne, et les barres de mesure sont indépendantes. @@ -224,7 +225,7 @@ accolade sur la gauche, et les barres de mesure sont d'un seul tenant. >> @end lilypond -Le contexte @code{PianoStaff} est indentique au @code{GrandStaff}, sauf +Le contexte @code{PianoStaff} est identique au @code{GrandStaff}, sauf qu'il gère automatiquement l'affichage du nom d'instrument -- voir @ref{Noms d'instrument} pour plus de détails. @@ -246,13 +247,11 @@ doit quant à lui être spécifié de manière explicite. Vous pouvez aussi créer vos propres contextes de regroupement, comme l'explique @ref{Définition de nouveaux contextes}. - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @cindex présentation mensurale @@ -260,10 +259,9 @@ l'explique @ref{Définition de nouveaux contextes}. @cindex transcription de musique ancienne @cindex musique ancienne, transcription -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} - @seealso Glossaire musicologique : @rglosnamed{brace,accolade}, @@ -275,7 +273,7 @@ Manuel de notation : @ref{Définition de nouveaux contextes}. Morceaux choisis : -@rlsrnamed{Staff notation,Notation sur la portée}. +@rlsrnamed{Staff notation, Notation sur la portée}. Référence des propriétés internes : @rinternals{Staff}, @@ -324,13 +322,10 @@ délimiteur, en plus de celui du niveau supérieur. Vous pouvez aussi créer vos propres contextes d'imbrication, comme l'explique @ref{Définition de nouveaux contextes}. - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso Manuel de notation : @ref{Regroupement de portées}, @@ -355,8 +350,8 @@ Référence des propriétés internes : @cindex système, indicateur de séparation -Le nombre de systèmes peut varier d'une page à l'autre@tie{}; vous -povez, en pareil cas, rendre plus évidente la séparation entre les +Le nombre de systèmes peut varier d'une page à l'autre ; vous +pouvez, en pareil cas, rendre plus évidente la séparation entre les systèmes en l'indiquant visuellement. Ce @qq{séparateur} est absent par défaut, mais vous pouvez l'activer par une option au sein du bloc @code{\paper}. @@ -406,11 +401,10 @@ Morceaux choisis : @translationof Modifying single staves Cette section explique le réglage de la gravure de chaque portée, -comme la taille de portée ou le nombre de lignes@tie{}; sont aussi +comme la taille de portée ou le nombre de lignes ; sont aussi décrits la suspension et la reprise de portées, ainsi que les portées d'@emph{ossia}. - @menu * Symbole de la portée:: * Portées d'ossia:: @@ -432,6 +426,25 @@ d'@emph{ossia}. @cindex lignes de portée, épaisseur @cindex ligne supplémentaire +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff + +Les commandes @code{\stopStaff} et @code{\startStaff} permettent +respectivement de clôturer et (re)démarrer une portée n'importe où dans +une partition. + +@lilypond[verbatim,quote,relative=2] +\stopStaff f4 d \startStaff g, e +f'4 d \stopStaff g, e +f'4 d \startStaff g, e +@end lilypond + +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined Les notes, nuances, etc. sont regroupées dans un assemblage de lignes horizontales, que l'on nomme la portée (en anglais @emph{staff}, et @@ -441,22 +454,40 @@ moyen d'un objet graphique (@emph{grob}) à part entière, nommé @code{StaffSymbol} changera l'apparence de la portée, dès lors qu'elles auront été définies avant de créer la portée en question. -Vous pouvez modifier le nombre de lignes d'une portée. Néanmoins, la -position de la clef et celle du do médium demanderont parfois un -ajustement afin d'être en phase avec cette nouvelle portée. Pour plus -d'explications, reportez-vous aux exemples du chapitre @ref{Clefs}. +Vous pouvez modifier le nombre de lignes d'une portée. @lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } +f4 d \stopStaff +\override Staff.StaffSymbol #'line-count = #2 +\startStaff g, e | + +f'4 d \stopStaff +\revert Staff.StaffSymbol #'line-count +\startStaff g, e | @end lilypond +Le positionnement de chacune des lignes de la portée est modifiable. +Les valeurs s'expriment en @emph{demi} espace de portée, et la nouvelle +position est déterminée par rapport à la ligne médiane. Une ligne sera +donc imprimée pour chaque valeur exprimée ; le nombre de lignes, +ainsi que leur position dans la portée, peut donc se modifier à l'aide +d'une seule commande. + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(1 3 5 -1 -3) +\startStaff g, e | +f'4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(8 6.5 -6 -8 -0.5) +\startStaff g, e +@end lilypond + +La position de la clef et celle du do médium demanderont parfois un +ajustement afin d'être en phase avec cette nouvelle portée. Pour plus +d'explications, reportez-vous aux exemples du chapitre @ref{Clefs}. + Lorsque vous modifierez l'épaisseur des lignes, gardez à l'esprit que -les lignes supplémentaires et les hampes seront aussi modifiées. En -effet, elles dépendent directement de l'épaisseur des lignes de la -portée. +les lignes supplémentaires et les hampes seront aussi modifiées. @lilypond[verbatim,quote,relative=1] \new Staff \with { @@ -471,80 +502,70 @@ suivant, les deux nombres constituent des coefficients multiplicateurs de l'épaisseur de la ligne. Ils sont fournis en argument pour déterminer l'épaisseur des lignes supplémentaires. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol #'thickness = #2 + \override StaffSymbol #'ledger-line-thickness = #'(0.5 . 0.4) } -{ e4 d c b } +{ f'4 a, a,, f } @end lilypond -Modifier l'équidistance des lignes de la portée affectera aussi les -lignes supplémentaires. +L'emplacement des lignes supplémentaires est réglable : -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol #'ledger-positions = #'(-3 -2 -1 2 5 6) } -{ a4 b c d } +{ f'4 a, a,, f } @end lilypond -Vous trouverez de plus amples détails sur les propriétés du -@code{StaffSymbol} au chapitre @rinternals{staff-symbol-interface}. - -@cindex fin de portée -@cindex début de portée -@cindex portée, début -@cindex portée, fin - -@funindex \startStaff -@funindex startStaff -@funindex \stopStaff -@funindex stopStaff - -Les propriétés d'une portée peuvent être modifiées en cours de partition -à l'aide des commandes @code{\stopStaff} et @code{\startStaff}@tie{}: +Vous pouvez faire apparaître des lignes supplémentaires additionnelles +au-dessus ou en dessous des têtes de note selon le positionnement +relatif aux autres notes, qu'elles aient ou non elles-mêmes des lignes +supplémentaires. @lilypond[verbatim,quote,relative=2] -c2 c -\stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +\new Staff \with { + \override StaffSymbol #'ledger-extra = #4 +} +{ f'4 a, d, f, } @end lilypond -@noindent -En règle générale, @code{\startStaff} et @code{\stopStaff} permettent -d'entamer puis clôturer une portée n'importe où dans une partition. - -@lilypond[verbatim,quote,relative=2] -c4 b a2 +Des lignes supplémentaires peuvent apparaître y compris au sein d'une +portée, notamment lorsque vous l'avez personnalisée. L'exemple suivant +illustre deux cas de figure quant au positionnement des lignes +supplémentaires selon que la propriété @code{legder-position} est +définie explicitement ou non. La présence du @code{stopStaff} est ici +rendue nécessaire pour annuler les effets de la commande +@code{\override} qui s'applique à l'intégralité du @code{StaffSymbol}. + +@lilypond[fragment,quote,relative=1] +\override Staff.StaffSymbol #'line-positions = #'(-8 0 2 4) +d4 e f g \stopStaff -b4 c d2 \startStaff -e4 d c2 +\override Staff.StaffSymbol #'ledger-positions = #'(-8 -6 (-4 -2) 0) +d4 e f g @end lilypond +Modifier l'équidistance des lignes de la portée affectera aussi les +lignes supplémentaires. -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined - +@lilypond[verbatim,quote,relative=2] +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 +} +{ f'4 d, g, e, } +@end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Glossaire musicologique : @rglosnamed{line,ligne}, -@rglosnamed{ledger line,ligne suplémentaire}, +@rglosnamed{ledger line,ligne supplémentaire}, @rglosnamed{staff,portée}. Manuel de notation : @@ -574,7 +595,7 @@ Référence des propriétés internes : @funindex stopStaff Une portée d'@notation{ossia} -- ou de variante -- s'obtient en créant, -à l'endroit approprié, une nouvelle portée simultanée@tie{}: +à l'endroit approprié, une nouvelle portée simultanée : @lilypond[verbatim,quote] \new Staff \relative c'' { @@ -593,7 +614,7 @@ plus. Afin que cette ossia se place au-dessus de la portée à laquelle elle se réfère, étant par ailleurs dépourvue de métrique et de clef, et d'une taille légèrement inférieure, vous devrez avoir recours à quelques retouches. Le manuel d'initiation aborde une technique particulière -pour obternir ce résultat au chapitre +pour obtenir ce résultat au chapitre @rlearning{Expressions musicales imbriquées}. L'exemple qui suit utilise, pour aligner la portée d'ossia, la propriété @@ -622,7 +643,7 @@ lorsqu'il y a un nombre restreint d'ossias. Dans le cas où de nombreux et courts fragments d'ossia affecteraient une même portée, il est judicieux de créer un contexte @code{Staff} vide -auquel sera attribué un @emph{identificateur}. Il suffira alors, pour +auquel sera attribué un @emph{identifiant}. Il suffira alors, pour entamer un fragment d'ossia, de @emph{faire appel} à ce contexte grâce aux commandes @code{\startStaff} et @code{\stopStaff}. Vous vous rendrez compte à l'utilisation des avantages que procure cette façon de @@ -660,7 +681,6 @@ procéder, bien plus que dans l'exemple suivant. >> @end lilypond - Vous pourriez aussi recourir à la commande @code{\Staff \RemoveEmptyStaves} pour créer votre portée d'ossia. Cependant, cette méthode reste limitée à l'apparition de ces ossias en @@ -698,13 +718,10 @@ début de ligne. Pour plus d'information au sujet de la commande } @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} - @seealso Glossaire musicologique : @rglos{ossia}, @@ -739,7 +756,6 @@ Référence des propriétés internes : @funindex \stopStaff @funindex stopStaff - Désactiver le graveur @code{Staff_symbol_engraver} dans un contexte @code{Staff} permet de masquer des lignes. La commande @code{\stopStaff} aura le même effet. @@ -802,20 +818,16 @@ portées vides dans les contextes de musique ancienne. Pour des contextes @code{RhythmicStaff}, il faudra utiliser @code{\RhythmicStaff \RemoveEmptyStaves}. - @predefined @code{\Staff \RemoveEmptyStaves}, @code{\VaticanaStaff \RemoveEmptyStaves}, @code{\RhythmicStaff \RemoveEmptyStaves}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso Glossaire musicologique : @rglos{Frenched staff}. @@ -841,13 +853,11 @@ Référence des propriétés internes : @rinternals{VerticalAxisGroup}, @rinternals{Staff_symbol_engraver}. - @knownissues - Supprimer le @code{Staff_symbol_engraver} aura pour effet de masquer les barres de mesure. Forcer leur visibilité peut entraîner des problèmes -de formattage. En pareil cas il vaut mieux, au lieu de supprimer le -graveur, recourrir aux dérogations suivantes@tie{}: +de formatage. En pareil cas il vaut mieux, au lieu de supprimer le +graveur, recourir aux dérogations suivantes : @example \override StaffSymbol #'stencil = ##f @@ -863,7 +873,7 @@ l'instruction @code{\Staff \RemoveEmptyStaves}, consultez @subsection Écriture de parties séparées @translationof Writing parts -Nous allons voir au fil des lignes qui suivent, comment insérer des +Nous allons voir, au fil des lignes qui suivent, comment insérer des indications de tempo ou des noms d'instrument dans une partition. Nous aborderons aussi la citation d'autres voix, et comment la mettre en forme. @@ -891,21 +901,25 @@ chacune des portées, qu'il s'agisse d'un contexte @code{Staff}, @code{shortInstrumentName}. @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"Violin " -\set Staff.shortInstrumentName = #"Vln " -c4.. g'16 c4.. g'16 -\break -c1 +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} +{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond Le recours à la commande @code{\markup} permet de construire des noms -d'instruments particuliers, tels que +d'instrument particuliers, tels que @lilypond[verbatim,quote,relative=2] -\set Staff.instrumentName = \markup { - \column { "Clarinetti" - \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} +{ c4 c,16 d e f g2 } @end lilypond @cindex noms d'instrument, centrés @@ -913,21 +927,22 @@ c4 c,16 d e f g2 Lorsque plusieurs contextes de portée sont regroupés, les noms d'instrument, que ce soit sous leur forme développée ou abrégée, sont par défaut centrés. Si l'un d'entre eux est libellé sur plusieurs -lignes, il faudra recourrir à l'instruction @code{\center-column}@tie{}: +lignes, il faudra reccourrir à l'instruction +@code{\center-column} : @lilypond[verbatim,quote,indent=1.5\cm,relative=2] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f + \new Staff \with { + instrumentName = #"Flute" } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet + { f2 g4 f } + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" } \line { "in B" \smaller \flat } } - c4 b c2 } + { c4 b c2 } >> @end lilypond @@ -941,30 +956,36 @@ d'augmenter les retraits -- @emph{indent} -- au sein du bloc reportez-vous au chapitre @ref{Variables d'indentation et de décalage}. @lilypond[verbatim,quote,ragged-right] +\relative c'' { + << + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } + { + f2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } + { + c,4 b c2 \break + c2 b4 c + } + >> +} + \layout { indent = 3.0\cm short-indent = 1.5\cm } - -\relative c'' << - \new Staff { - \set Staff.instrumentName = #"Alto Flute in G" - \set Staff.shortInstrumentName = #"Fl." - f2 g4 f \break - g4 f g2 - } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break - c2 b4 c - } ->> @end lilypond @cindex noms d'instrument, autres contextes -Des noms d'instruments peuvent s'utiliser dans d'autres contextes, tels +Des noms d'instrument peuvent s'utiliser dans d'autres contextes, tels que @code{ChordNames} ou @code{FiguredBass}, dès lors qu'on leur adjoint le graveur @code{Instrument_name_engraver}. Pour de plus amples informations sur la manière d'activer ou désactiver un graveur, voir @@ -975,17 +996,21 @@ informations sur la manière d'activer ou désactiver un graveur, voir Vous pouvez changer le nom d'un instrument en cours de morceau. Notez cependant que la valeur de @code{instrumentName} ne s'affichera que sur -la première portée@tie{}: +la première portée : @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"First" -\set Staff.shortInstrumentName = #"one" -c1 c c c \break -c1 c c c \break -\set Staff.instrumentName = #"Second" -\set Staff.shortInstrumentName = #"two" -c1 c c c \break -c1 c c c \break +\new Staff \with { + instrumentName = #"Flute" + shortInstrumentName = #"Flt." +} +{ + c1 c c c \break + c1 c c c \break + \set Staff.instrumentName = #"Clarinet" + \set Staff.shortInstrumentName = #"Clt." + c1 c c c \break + c1 c c c \break +} @end lilypond @cindex instrument, changement @@ -996,16 +1021,16 @@ c1 c c c \break @funindex \instrumentSwitch @funindex instrumentSwitch -Lorsqu'un musicien doît changer d'instrument -- piccolo et flûte, basson +Lorsqu'un musicien doit changer d'instrument -- piccolo et flûte, basson et contrebasson --, la commande @code{\addInstrumentDefinition}, couplée à l'instruction @code{\instrumentSwitch} permet de spécifier en détail les modifications intervenant lors du changement. La commande -@code{\addInstrumentDefinition} prend deux arguments@tie{}: une chaîne -de caractères qui servira d'identificateur, et une liste d'associations +@code{\addInstrumentDefinition} prend deux arguments : une chaîne +de caractères qui servira d'identifiant, et une liste d'association de valeurs aux propriétés de ce nouvel instrument. Ces définitions devront être déclarées avant tout autre élément musical. L'instruction @code{\instrumentSwitch} se placera dans la musique au moment de la -subtitution@tie{}: +subtitution : @lilypond[verbatim,quote,ragged-right] \addInstrumentDefinition #"contrabassoon" @@ -1031,7 +1056,6 @@ subtitution@tie{}: } @end lilypond - @seealso Manuel de notation : @ref{Variables d'indentation et de décalage}, @@ -1064,135 +1088,149 @@ Référence des propriétés internes : Il est assez courant qu'une voix soit doublée par une autre. Par exemple, les premiers et seconds violons peuvent jouer les mêmes notes durant un moment. LilyPond gère parfaitement ces situations où une -voix est la réplique d'une autre, et vous évite de ressaisir la musique -en question. +voix est la @emph{réplique} d'une autre, sans devoir ressaisir la +musique en question. -Avant qu'une partie ne puisse être mentionnée ailleurs, elle doit être -considérée comme reproductible. C'est le but de l'instruction -@code{\addQuote} qui prend en argument une chaîne d'identification et -une expression musicale. Elle se place au niveau le plus haut, c'est à -dire en dehors de tout bloc de musique@tie{}: - -@example -flute = \relative c'' @{ - a4 gis g gis -@} -\addQuote "flute" @{ \flute @} -@end example +L'instruction @code{\addQuote}, placée au niveau le plus haut -- c'est à +dire en dehors de tout bloc de musique -- définit le musique dont il +sera possible de répliquer des fragments. Au cours d'une partie, des extraits de répliques peuvent être cités en utilisant la commande @code{\quoteDuring}. Cette commande prend deux -arguments@tie{}: le nom de la voix reproduite, tel que défini par +arguments : le nom de la voix reproduite, tel que défini par @code{\addQuote}, et une expression musicale qui indique la durée de -cette citation -- silences invisibles ou multimesures. Viendra alors -s'insérer dans l'expression musicale le fragment correspondant de la -voix originelle, avec tous ses attributs (articulations, nuances, -annotations, etc.). +cette citation. @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 Si l'expression musicale utilisée pour @code{\quoteDuring} contenait autre chose que du silence, il en résulterait une situation -polyphonique, ce qui n'est pas le but recherché@tie{}: +polyphonique, ce qui n'est pas le but recherché : @lilypond[verbatim,quote] -flute = \relative c'' { - a4 gis g gis -} -\addQuote "flute" { \flute } +fluteNotes = \relative c'' { + a4 gis g gis | b4^"quoted" r8 ais\p a4( f) + } -\relative c' { - c4 cis \quoteDuring #"flute" { c4 b } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a } } -@end lilypond -Les citations tiennent compte des transpositions, aussi bien celle de -l'instrument d'origine que celle de la partie où elle intervient, dans -la mesure où elles sont spécifiées par la commande -@code{\transposition}. Voir @ref{Instruments transpositeurs} pour plus -de détails. +\addQuote "flute" { \fluteNotes } -@lilypond[verbatim,quote] -clarinet = \relative c'' { - \transposition bes - a4 gis g gis -} -\addQuote "clarinet" { \clarinet } - -\relative c' { - c4 cis \quoteDuring #"clarinet" { s2 } +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -Les citations peuvent être @qq{balisées} par un nom particulier afin de -les utiliser de différentes manières. Pour de plus amples détails à ce -propos, consultez le chapitre @ref{Utilisation de balises}. - -La propriété @code{quotedEventTypes} permet de définir précisément quels -éléments de la voix originelle seront reproduits. Sa valeur par défaut -est @code{#'(StreamEvent)}@tie{}; autrement dit, tout sera recopié. Lui -affecter la valeur @code{#'(note-event@tie{}rest-event@tie{}tie-event)} -fera que LilyPond reproduira les notes, silences et liaisons de -prolongation, mais pas les articulations, annotations ni nuances. +L'instruction @code{\quoteDuring} prendra en compte les réglages d'une +commande @code{\transposition}, qu'elle apparaisse au niveau de la voix +répliquée ou dans celle qui réplique. @lilypond[verbatim,quote] -clarinet = \relative c'' { - a4 gis g->\f gis^\markup{quoted} +clarinetNotes = \relative c'' { + \transposition bes + \key d \major + b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } -\addQuote "clarinet" { \clarinet } -\relative c' { - \set Score.quotedEventTypes = #'(note-event rest-event tie-event) - c4 cis \quoteDuring #"clarinet" { s2 } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"clarinet" { s1 } + } +\addQuote "clarinet" { \clarinetNotes } + +\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} +LilyPond répliquera, par défaut, tous les éléments -- articulations, +nuances, @emph{markups}, etc. La propriété @code{quotedEventTypes} +permet de définir plus précisément quels éléments de la voix originelle +seront reproduits. + +@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 + +Les citations peuvent être @qq{balisées} par un nom particulier afin de +les utiliser de différentes manières. Pour de plus amples détails à ce +propos, consultez le chapitre @ref{Utilisation de balises}. @seealso Manuel de notation : @ref{Instruments transpositeurs}, @ref{Utilisation de balises}. +Fichiers d'initialisation : +@file{scm/define-event-classes.scm}. + Morceaux choisis : -@rlsrnamed{Staff notation,Notation sur la portée}. +@rlsrnamed{Staff notation, Notation sur la portée}. Référence des propriétés internes : +@rinternals{Music classes}, @rinternals{QuoteMusic}, @rinternals{Voice}. - @knownissues - Seul le contenu de la première @code{Voice} rencontrée dans la partie marquée d'une commande @code{\addQuote} pourra être retenu. Par voie de conséquence, @code{@var{musique}} ne saurait comprendre de -@code{\new} ou une instance @code{\context@tie{}Voice} qui la ferait +@code{\new} ou une instance @code{\context Voice} qui la ferait passer à une autre voix. Citer des notes d'ornement ne fonctionne pas, et peut même entraîner @@ -1201,9 +1239,6 @@ un blocage de LilyPond. Citer des triolets imbriqués peut entraîner un résultat de piètre qualité. -Dans les versions précédentes de LilyPond (avant 2.11), @code{addQuote} -était écrit entièrement en minuscules@tie{}: @code{\addquote}. - @node Mise en forme d'une citation @unnumberedsubsubsec Mise en forme d'une citation @@ -1211,62 +1246,127 @@ Dans les versions précédentes de LilyPond (avant 2.11), @code{addQuote} @cindex petites notes, formater des @cindex répliques, formatage +@cindex voix, citation +@cindex voix, réplication +@cindex CueVoice @funindex \cueDuring @funindex cueDuring +@funindex \cueClef +@funindex cueClef +@funindex \cueDuringWithClef +@funindex cueDuringWithClef @funindex \quoteDuring @funindex quoteDuring -La section précédente indiquait comment insérer des notes d'une autre -voix. Nous allons maintenant voir une fonction musicale avancée, -@code{\cueDuring}, qui facilite le formatage des petites notes. +Le moyen le plus simple pour mettre en forme des notes provenant d'une +autre voix consiste à déclarer explicitement un contexte @code{CueVoice} +au sein de la voix où elle apparaît. + +@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 + +L'instruction @code{\cueClef}, utilisée conjointement à un contexte +@code{CueVoice} explicite permet d'indiquer la clef, dans une taille +réduite, propre à la voix citée. Le retour à la clef d'origine +s'effectue à l'aide de l'instruction @code{\cueClefUnset}. + +@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 + +Notez que les deux instructions @code{\cueClef} et @code{\cueClefUnset} +sont disponibles si nécessaire en dehors d'un @code{CueVoice}. + +@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 + +Lorsque la situation est plus complexe, instrument transpositeur ou +citations de plusieurs sources, vous disposez des instructions +@code{\cueDuring} et @code{\cueDuringWithClef}, versions spécifiques de +la commande @code{\quoteDuring} -- voir la rubrique précédente +(@ref{Citation d'autres voix}). -Sa syntaxe est@tie{}: +Leur syntaxe est : @example -\cueDuring #@var{origine} #@var{voix} @var{musique} +\cueDuring #@var{origine} #@var{position} #@var{musique} @end example -Des mesures issues de la partie d'@code{@var{origine}} seront recopiées -dans un contexte de @code{CueVoice}, créé implicitement, et -synchronisées avec @code{@var{musique}} -- habituellement un silence. -L'apparition des petites notes initialise une polyphonie temporaire pour -la portée concernée. L'argument @code{@var{voix}} détermine si ces -petites notes seront attachées à la première ou à la seconde voix -- -@code{UP} pour la première ou @code{DOWN} pour la seconde. +et +@example +\cueDuringWithClef #@var{origine} #@var{position} #@var{clef} #@var{musique} +@end example + +Des mesures issues de la partie d'@code{@var{origine}} seront recopiées +dans un contexte de @code{CueVoice} et synchronisées avec +@code{@var{musique}} -- habituellement un silence. L'apparition des +petites notes initialise une polyphonie temporaire pour la portée +concernée. L'argument @code{@var{position}} détermine si ces petites +notes seront attachées à la première ou à la seconde voix -- @code{UP} +pour la première, @code{DOWN} pour la seconde. @lilypond[verbatim,quote] -oboe = \relative c'' { - r2 r8 d16 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 + \new CueVoice { \set instrumentCueName = "flute" } + \cueDuring #"flute" #UP { R1 } g2 c, } + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \oboeNotes +} @end lilypond @noindent -Dans cet exemple, il était nécessaire de déclarer explicitement le -contexte @code{Voice}, sinon l'intégralité de l'expression musicale se -serait retrouvée dans le contexte @code{CueVoice}. - La propriété @code{quotedCueEventTypes} permet de définir précisément quels éléments de la voix originelle seront reproduits. Sa valeur par -défaut est @w{@code{#'(note-event rest-event tie-event beam-event -tuplet-span-event)}}. LilyPond reproduira donc les notes, silences, +défaut est @code{'(note-event rest-event tie-event beam-event +tuplet-span-event)}. LilyPond reproduira donc les notes, silences, liaisons de prolongation, ligatures et nolets, mais pas les articulations, annotations ni nuances. +@warning{Dans l'exemple précédent, il était nécessaire de déclarer +explicitement le contexte @code{Voice}, sinon l'intégralité de +l'expression musicale se serait retrouvée dans le contexte +@code{CueVoice}.} + @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 @@ -1277,101 +1377,85 @@ oboe = \relative c'' { } @end lilypond -Le nom de l'instrument qui est répliqué sera imprimé à l'aide d'une -annotation (un @emph{markup}). Par ailleurs, si la citation nécessite -l'apparition d'une clef différente, l'originale devrait être rappelée en -fin de citation. +Le nom de l'instrument qui est répliqué sera imprimé dès lors qu'aura +été définie la propriété @code{instrumentCueName} d'un contexte +@code{CueVoice} temporaire. Le positionnement et le style adopté par +@code{instrumentCueName} dépendent de l'objet @code{\instrumentSwitch} +-- voir @ref{Noms d'instrument}. Par ailleurs, si la citation nécessite +l'apparition d'une clef différente, celle-ci devra être introduite +manuellement, tout comme l'originale qui devra être rappelée en fin de +citation. @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 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } \clef bass g4. b8 d2 } -\addQuote "flute" { \flute } + +\addQuote "flute" { \fluteNotes } + \new Staff { - \bassoon + \bassoonNotes } @end lilypond -@cindex citation, fin -@cindex fin de citation -@cindex réplique, fin -@cindex fin de réplique - -@funindex \killCues -@funindex killCues - -La commande @code{killCues} permet de supprimer les notes d'une -citation. Ceci est utile lorsque cette citation n'est pas imprimée dans -le conducteur entre autres. @code{killCues} supprimera les notes et -autres événements pris en charge par @code{\cueDuring}. Pour les -autres annotations telles que changement de clef ou instrument concerné, -faites appel à des balises -- voir @ref{Utilisation de balises} à ce -sujet. +L'instruction @code{\cueDuringWithClef} se chargera quant à elle, et +grâce à un argument supplémentaire, de gérer le changement de clef +nécessaire à la citation et le retour à la clef originelle. @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 + \new CueVoice { \set instrumentCueName = "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 -Lorsque la citation comporte une étiquette indiquant l'instrument qui -joue et un changement de clef, ces éléments peuvent se regrouper à -l'aide de la commande @code{\addInstrumentDefinition}. Pour plus -d'information, reportez-vous au chapitre @ref{Noms d'instrument}. - - @funindex \transposedCueDuring @funindex transposedCueDuring +L'instruction @code{\cueDuring}, à l'instar de la commande +@code{\quoteDuring}, tient compte des instruments transpositeurs. La +citation s'effectue aux hauteurs correspondant à l'instrument où elles +apparaissent. + L'instruction @code{\transposedCueDuring} est particulièrement adaptée pour des instrument ayant une tessiture éloignée, comme dans le cas d'un piccolo cité dans une partie de clarinette basse. Sa syntaxe est identique à celle de @code{\cueDuring}, à ceci près qu'elle nécessite un -argument supplémentaire afin de spécifier la transposition à effectuer. -Pour de plus amples informations sur la transposition, reportez-vous au -chapitre @ref{Instruments transpositeurs}. +argument supplémentaire afin de spécifier la transposition à effectuer +en hauteur absolue. @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 @@ -1379,53 +1463,91 @@ 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 notes, petites -@cindex petites notes +@cindex citation, fin +@cindex fin de citation +@cindex réplique, fin +@cindex fin de réplique -Un contexte @code{CueVoice} créé explicitement permet d'afficher des -notes dans une taille plus petite dans le but, par exemple, d'indiquer -des notes alternatives pour une voix un peu plus haute ou basse. +@funindex \killCues +@funindex killCues +@funindex \addInstrumentDefinition +@funindex addInstrumentDefinition -@lilypond[verbatim,quote,relative=2] -\time 12/8 -\key ees \major -g4 ees8 f4 g8 -\stemDown -<< - { d4. bes4 c8 } - \new CueVoice - { g'4. f4 ees8 } +La commande @code{killCues} permet de supprimer les notes d'une +citation. Ceci est utile lorsque cette citation n'est pas imprimée dans +le conducteur entre autres. @code{killCues} supprimera les notes et +autres événements pris en charge par @code{\cueDuring}. Pour les +autres annotations telles que changement de clef ou instrument concerné, +faites appel à des balises -- voir @ref{Utilisation de balises} à ce +sujet. + +@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 + \new CueVoice { \set instrumentCueName = "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 +Lorsque la citation comporte une étiquette indiquant l'instrument qui +joue et un changement de clef, ces éléments peuvent se regrouper à +l'aide de la commande @code{\addInstrumentDefinition}. Pour plus +d'information, reportez-vous au chapitre @ref{Noms d'instrument}. @seealso Manuel de notation : +@ref{Citation d'autres voix}, @ref{Instruments transpositeurs}, @ref{Noms d'instrument}, -@ref{Musical cues}, +@ref{Clefs}, +@ref{Citation-repère}, @ref{Utilisation de balises}. Morceaux choisis : -@rlsrnamed{Staff notation,Notation sur la portée}. +@rlsrnamed{Staff notation, Notation sur la portée}. Référence des propriétés internes : @rinternals{CueVoice}, @rinternals{Voice}. - @knownissues - La commande @code{\cueDuring} ne sait pas gérer les collisions de silence entre les contextes @code{Voice} et @code{CueVoice}. +Dans le cadre d'un @code{\cueDuringWithClef} ou d'un +@code{\transposedCueDuring}, l'argument supplémentaire doit intervenir +après l'origine et la position. + diff --git a/Documentation/fr/notation/text.itely b/Documentation/fr/notation/text.itely index 7d487ab2ab..ee0983f719 100644 --- a/Documentation/fr/notation/text.itely +++ b/Documentation/fr/notation/text.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 0f93dd92ffa0319328e58148458d22c5448b3d58 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @c Translation checkers: Valentin Villenave, John Mandereau @@ -32,6 +32,7 @@ chapitres qui leur sont dédiés. C'est le cas de la * Fontes:: @end menu + @node Ajout de texte @subsection Ajout de texte @translationof Writing text @@ -52,6 +53,7 @@ d'informations, voir @ref{Codage du texte}.} * Texte indépendant:: @end menu + @node Commentaires textuels @unnumberedsubsubsec Commentaires textuels @translationof Text scripts @@ -60,7 +62,7 @@ d'informations, voir @ref{Codage du texte}.} @cindex blocs de texte @cindex ajout de texte -Vous pouvez ajouter à une partition des indications sous forme texuelle, +Vous pouvez ajouter à une partition des indications sous forme textuelle, comme dans l'exemple suivant. Ces indications se placeront manuellement au-dessus ou au-dessous de la portée selon la syntaxe utilisée -- cf. @ref{Direction et positionnement}. @@ -108,7 +110,6 @@ textuelles et articulations, reportez-vous au chapitre @code{\textLengthOff}. @endpredefined - @seealso Manuel d'initiation : @rlearning{Positionnement des objets}. @@ -124,22 +125,18 @@ Morceaux choisis : Référence des propriétés internes : @rinternals{TextScript}. - @cindex texte hors marges @cindex marges, texte qui dépasse @cindex texte, maintien dans les marges @cindex texte, maintien dans les marges - @knownissues - S'assurer que tous les éléments textuels et les paroles respectent les marges du document requiert des calculs relativement lourds@tie{}; -c'est la raison pour laquelle LilyPond, par défaut, ne s'en préoccupe -pas. Vous pouvez cependant l'y forcer en définissant +vous pouvez toutefois vous en affranchir en ajoutant @example -\override Score.PaperColumn #'keep-inside-line = ##t +\override Score.PaperColumn #'keep-inside-line = ##f @end example @@ -192,22 +189,17 @@ Les détails concernant la syntaxe à utiliser sont expliqués au chapitre @funindex \textSpannerNeutral @funindex textSpannerNeutral - @predefined @code{\textSpannerUp}, @code{\textSpannerDown}, @code{\textSpannerNeutral}. @endpredefined -@knownissues -LilyPond ne peut traiter qu'un seul extenseur à la fois par voix. - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-text-spanner-postfix.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-custom-text-spanner-postfix.ly} @seealso @@ -223,6 +215,9 @@ Morceaux choisis : Référence des propriétés internes : @rinternals{TextSpanner}. +@knownissues +LilyPond ne peut traiter qu'un seul extenseur à la fois par voix. + @node Indications textuelles @unnumberedsubsubsec Indications textuelles @@ -293,19 +288,16 @@ c1 c c c @end lilypond - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-at-the-end-of-a-line.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {aligning-marks-with-various-notation-objects.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-on-every-staff.ly} - @seealso Manuel de notation : @ref{Indications de repère}, @@ -329,8 +321,8 @@ Référence des propriétés internes : @cindex texte indépendant @cindex texte isolé @cindex texte en préambule -@cindex top-level text -@cindex text, top-level +@cindex top-level, texte +@cindex texte, top-level @cindex indépendant, texte @funindex \markup @@ -369,24 +361,20 @@ de générer des ouvrages complets uniquement grâce à LilyPond. Cette fonctionnalité, ainsi que la syntaxe appropriée, est abordée plus en détail au chapitre @ref{Texte avec sauts de page}. - @funindex \markup @funindex markup -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @predefined @code{\markup}, -@code{\markuplines}. +@code{\markuplist}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {stand-alone-two-column-markup.ly} - @seealso Manuel de notation : @ref{Mise en forme du texte}, @@ -417,6 +405,7 @@ forme du texte à l'aide de la syntaxe propre au mode @code{\markup}. * Texte avec sauts de page:: @end menu + @node Introduction au formatage de texte @unnumberedsubsubsec Introduction au formatage de texte @translationof Text markup introduction @@ -446,7 +435,7 @@ d'être mis entre accolades. Contrairement aux indications simples, du type "entre guillemets", les blocs @code{\markup} peuvent contenir des expressions imbriquées ou d'autres commandes @emph{markup}, dès lors qu'elles sont précédées du -caractère @code{\}. Ces commandes n'affecteront que la première +caractère@tie{}@code{\}. Ces commandes n'affecteront que la première expression qui les suit. @lilypond[quote,verbatim,relative=2] @@ -468,12 +457,13 @@ c @cindex mode markup et guillemets Un bloc @code{\markup} peut contenir du texte entre guillemets. De -telles chaines seront considérées comme des expressions textuelles +telles chaînes seront considérées comme des expressions textuelles minimales@tie{}; à ce titre, toute commande de type @emph{markup} ou -tout caractère spécial -- tel un @code{\} ou un @code{#} -- sera imprimé -littéralement et sans influer sur le formatage du texte. Il est de ce -fait possible d'imprimer des guillemets informatiques @code{"} dès lors -qu'ils sont précédés d'une oblique inverse. +tout caractère spécial -- tel un@tie{}@code{\} ou un@tie{}@code{#} -- +sera imprimé littéralement et sans influer sur le formatage du texte. +Il est de ce fait possible d'imprimer des guillemets +informatiques@tie{}@code{"} dès lors qu'ils sont précédés d'une oblique +inverse. @c repeat double quote for pairing " @c KEEP LY @@ -515,20 +505,17 @@ Pour une liste des différentes commandes spécifiques au mode @code{\markup}, consultez l'annexe @ref{Text markup commands} (en anglais). - @seealso Manuel de notation : @ref{Text markup commands}. -Morceaux choisis : -@rlsrnamed{Text,Texte}. - Fichiers d'initialisation : @file{scm/markup.scm}. +Morceaux choisis : +@rlsrnamed{Text,Texte}. @knownissues - Les erreurs de syntaxe en mode @emph{markup} sont peu explicites. @@ -562,9 +549,10 @@ d,_\markup { \italic quasi \smallCaps Tromba } f1 d2 r @end lilypond -@cindex caratères, taille +@cindex caractères, taille @cindex texte, taille +@funindex \abs-fontsize @funindex \fontsize @funindex fontsize @funindex \smaller @@ -574,38 +562,41 @@ f1 d2 r @funindex \magnify @funindex magnify -La taille des caractères se modifie de différentes manières@tie{}: -@itemize -@item -à partir de l'une des tailles standard prédéfinies, +La taille des caractères se modifie, relativement à la taille globale +des portées, de différentes manières. -@item -en étant définie en valeur absolue, +Vous pouvez adopter l'une des tailles prédéfinies, comme ici@tie{}: -@item -en adoptant une valeur relative à celle précédemment définie. -@end itemize +@lilypond[quote,verbatim,relative=2] +b1_\markup { \huge Sinfonia } +b1^\markup { \teeny da } +b1-\markup { \normalsize camera } +@end lilypond -@noindent -Voici une illustration de ces trois différentes méthodes@tie{}: +Vous pouvez la modifier relativement à sa valeur précédente@tie{}: -@lilypond[quote,verbatim,relative=1] -f1_\markup { - \tiny espressivo - \large e - \normalsize intenso -} -a^\markup { - \fontsize #5 Sinfonia - \fontsize #2 da - \fontsize #3 camera -} -bes^\markup { (con - \larger grande - \smaller emozione - \magnify #0.6 { e sentimento } ) -} -d c2 r8 c bes a g1 +@lilypond[quote,verbatim,relative=2] +b1_\markup { \larger Sinfonia } +b1^\markup { \smaller da } +b1-\markup { \magnify #0.6 camera } +@end lilypond + +Vous pouvez l'augementer ou la diminuer par rapport à la taille globale +de portée@tie{}: + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \fontsize #-2 Sinfonia } +b1^\markup { \fontsize #1 da } +b1-\markup { \fontsize #3 camera } +@end lilypond + +Vous pouvez lui attribuer une valeur arbitraire quelle que soit la +taille de portée globale@tie{}: + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \abs-fontsize #20 Sinfonia } +b1^\markup { \abs-fontsize #8 da } +b1-\markup { \abs-fontsize #14 camera } @end lilypond @cindex indice @@ -615,6 +606,8 @@ d c2 r8 c bes a g1 @funindex super @funindex \sub @funindex sub +@funindex \normal-size-super +@funindex normal-size-super Vous pouvez imprimer du texte en indice ou en exposant. Celui-ci sera dans un taille plus petite, mais rien ne s'oppose à ce que vous lui @@ -701,7 +694,6 @@ Pour savoir comment personnaliser des fontes, reportez-vous au chapitre @funindex \larger @funindex larger - @predefined @code{\teeny}, @code{\tiny}, @@ -713,7 +705,6 @@ Pour savoir comment personnaliser des fontes, reportez-vous au chapitre @code{\larger}. @endpredefined - @seealso Manuel de notation : @ref{Font}, @@ -721,15 +712,15 @@ Manuel de notation : @ref{Indications de reprise manuelles}, @ref{Fontes}. +Fichiers d'initialisation : +@file{scm/define-markup-commands.scm}. + Morceaux choisis : @rlsrnamed{Text,Texte}. Référence des propriétés internes : @rinternals{TextScript}. -Fichiers d'initialisation : -@file{scm/define-markup-commands.scm}. - @knownissues Le recours aux commandes @code{\teeny}, @code{\tiny},@code{\small}, @code{\normalsize}, @code{\large} et @code{\huge} produiront des @@ -817,7 +808,7 @@ solution consiste alors à déplacer l'intégralité de ces objets L'alignement vertical est quant à lui un peu plus compliqué. Comme nous l'avons vu ci-avant, les objets @emph{markup} peuvent être déplacés dans -leur intégralité. Il est néanmois possible de déplacer certains +leur intégralité. Il est néanmoins possible de déplacer certains éléments spécifiques au sein d'un bloc @emph{markup}. En pareil cas, l'élément à déplacer doit être précédé d'un @qq{point d'ancrage} -- un autre élément du @emph{markup} ou un objet invisible. L'exemple qui @@ -872,10 +863,10 @@ d,^\markup { a'4 a g2 a @end lilypond -@cindex multi-ligne, markup -@cindex markup multi-ligne -@cindex multi-ligne, texte -@cindex texte multi-ligne +@cindex multiligne, markup +@cindex markup multiligne +@cindex multiligne, texte +@cindex texte multiligne @cindex texte en colonnes @cindex colonnes de texte @@ -914,7 +905,7 @@ sa propre ligne, tantôt alignée à gauche, tantôt centrée. Pareillement, une liste d'éléments ou d'expressions sera répartie sur une ligne entière, voire même centrée sur toute la page s'il n'y a qu'un seul élément. De telles expressions peuvent à leur tour contenir du -texte multi-ligne ou une autre expression @emph{markup}. +texte multiligne ou une autre expression @emph{markup}. @lilypond[quote,verbatim] \markup { @@ -983,7 +974,6 @@ le montre l'exemple suivant@tie{}: Une liste des différentes commandes permettant d'aligner du texte en mode @emph{markup} est disponible à l'annexe @ref{Align}. - @seealso Manuel d'initiation : @rlearning{Déplacement d'objets}. @@ -992,15 +982,15 @@ Manuel de notation : @ref{Align}, @ref{Indications textuelles}. +Fichiers d'initialisation : +@file{scm/define-markup-commands.scm}. + Morceaux choisis : @rlsrnamed{Text,Texte}. Référence des propriétés internes : @rinternals{TextScript}. -Fichiers d'initialisation : -@file{scm/define-markup-commands.scm}. - @node Éléments graphiques dans du texte formaté @unnumberedsubsubsec Éléments graphiques dans du texte formaté @@ -1009,7 +999,7 @@ Fichiers d'initialisation : @cindex graphisme, tracé @cindex tracé d'objets graphiques @cindex graphiques, tracé d'objets -@cindex embedding graphic objects +@cindex intégration d'objet graphique @cindex objets graphiques, tracé Vous pouvez, grâce aux mode @emph{markup}, ajouter divers objets @@ -1171,23 +1161,22 @@ c L'annexe @ref{Graphic} répertorie les différentes commandes en matière de graphisme. - @seealso Manuel de notation : @ref{Graphic}, @ref{Annotations éditoriales}, @ref{Align}. +Fichiers d'initialisation : +@file{scm/define-markup-commands.scm}, +@file{scm/stencil.scm}. + Morceaux choisis : @rlsrnamed{Text,Texte}. Référence des propriétés internes : @rinternals{TextScript}. -Fichiers d'initialisation : -@file{scm/define-markup-commands.scm}, -@file{scm/stencil.scm}. - @node Notation musicale dans du texte formaté @unnumberedsubsubsec Notation musicale dans du texte formaté @@ -1255,7 +1244,7 @@ c16 c2^\markup { \musicglyph #"timesig.neomensural94" } @end lilypond -Le sous-chapitre @ref{Tout savoir sur les fontes} contient d'autres +La rubrique @ref{Tout savoir sur les fontes} contient d'autres informations sur l'impression de glyphes non alphabétiques, tels que des crochets ou accolades. @@ -1306,24 +1295,23 @@ c d e f Les différentes commandes @emph{markup} relatives à la notation musicale sont répertoriées à l'annexe @ref{Music}. - @seealso Manuel de notation : @ref{Music}, @ref{La fonte Feta}, @ref{Tout savoir sur les fontes}. +Fichiers d'initialisation : +@file{scm/define-markup-commands.scm}, +@file{scm/fret-diagrams.scm}, +@file{scm/harp-pedals.scm}. + Morceaux choisis : @rlsrnamed{Text,Texte}. Référence des propriétés internes : @rinternals{TextScript}. -Fichiers d'initialisation : -@file{scm/define-markup-commands.scm}, -@file{scm/fret-diagrams.scm}, -@file{scm/harp-pedals.scm}. - @node Texte avec sauts de page @unnumberedsubsubsec Texte avec sauts de page @@ -1334,21 +1322,21 @@ Fichiers d'initialisation : @cindex markup, texte multi-page @cindex plusieurs pages de texte -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @funindex \justified-lines @funindex justified-lines @funindex \wordwrap-lines @funindex wordwrap-lines Alors que @code{\markup} s'utilise pour traiter un bloc de texte -insécable, @code{\markuplines} permet, employé en tête de partition, +insécable, @code{\markuplist} permet, employé en tête de partition, d'obtenir un bloc de lignes réparties différemment et, le cas échéant, sur plusieurs pages. @c KEEP LY @lilypond[quote,verbatim] -\markuplines { +\markuplist { \justified-lines { Un long texte constitué de lignes justifiées. ... @@ -1375,31 +1363,28 @@ d'une liste d'étiquettes. Les différentes commandes permettant de générer des listes de lignes se trouve dans l'annexe @ref{Text markup list commands}. +@funindex \markuplist +@funindex markuplist + +@predefined +@code{\markuplist}. +@endpredefined @seealso Manuel de notation : @ref{Text markup list commands}, -Morceaux choisis : -@rlsrnamed{Text,Texte}. - -@c TODO en attendant redécoupage et création de "extending" -jcm -@c Extension : -@c @rextend{New markup list command definition}. - -Référence des propriétés internes : -@rinternals{TextScript}. +Manuel d'extension : +@rextend{Définition d'une nouvelle commande de liste de markups}. Fichiers d'initialisation : @file{scm/define-markup-commands.scm}. +Morceaux choisis : +@rlsrnamed{Text,Texte}. -@funindex \markuplines -@funindex markuplines - -@predefined -@code{\markuplines}. -@endpredefined +Référence des propriétés internes : +@rinternals{TextScript}. @node Fontes @@ -1416,6 +1401,7 @@ partition. * Choix des fontes par défaut:: @end menu + @node Tout savoir sur les fontes @unnumberedsubsubsec Tout savoir sur les fontes @translationof Fonts explained @@ -1462,7 +1448,7 @@ auquel est accolé un numéro d'ordre. Lorsque vous désirez imprimer une accolade, vous devez la @qq{chercher} par son numéro d'ordre -- d'où la fonction @code{\lookup} de l'exemple ci-dessus --, tout en sachant qu'il est compris entre @code{0} (la plus petite) et @code{575} (la plus -grande). Vous serez souvent amené à procéder par tatonnement pour +grande). Vous serez souvent amené à procéder par tâtonnement pour arriver au résultat optimal. Par ailleurs, @code{fetaBraces} ne comporte que des accolades ouvrantes. Pour obtenir une accolade fermante, il suffit d'appliquer une rotation au glyphe sélectionné, @@ -1523,7 +1509,6 @@ deux prochaines parties@tie{}: @ref{Attribution d'une fonte en particulier} et @ref{Choix des fontes par défaut}. - @seealso Manuel de notation : @ref{La fonte Feta}, @@ -1566,7 +1551,6 @@ lilypond -dshow-available-fonts toto @noindent (quel qu'il soit, le dernier argument est obligatoire). - @seealso Manuel de notation : @ref{Tout savoir sur les fontes}, @@ -1616,7 +1600,6 @@ d'explications sur les fontes, relisez @ref{Tout savoir sur les fontes}. @c we don't do Helvetica / Courier, since GS incorrectly loads @c Apple TTF fonts - @seealso Manuel de notation : @ref{Tout savoir sur les fontes}, diff --git a/Documentation/fr/notation/unfretted-strings.itely b/Documentation/fr/notation/unfretted-strings.itely index 0988fd9ea1..7dad507d42 100644 --- a/Documentation/fr/notation/unfretted-strings.itely +++ b/Documentation/fr/notation/unfretted-strings.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 24370ed49745de7a9dd734ae5e6066b365054904 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Matthieu Jacquot @c Translation checkers: Jean-Charles Malahieude, John Mandereau @@ -32,6 +32,7 @@ cordes d'orchestre. * Vue d'ensemble de la notation pour cordes non frettées:: @end menu + @node Vue d'ensemble de la notation pour cordes non frettées @subsection Vue d'ensemble de la notation pour cordes non frettées @translationof Common notation for unfretted strings @@ -49,6 +50,7 @@ notes ou des divisions. * Snap (Bartók) pizzicato:: @end menu + @node Références en matière de cordes non frettées @unnumberedsubsubsec Références en matière de cordes non frettées @translationof References for unfretted strings @@ -76,7 +78,6 @@ exemples de code. @end itemize - @seealso Manuel d'initiation : @rlearning{Quatuor à cordes}. @@ -88,7 +89,8 @@ Manuel de notation : @ref{Arpèges}. Morceaux choisis : -@rlsr{Unfretted strings}. +@rlsrnamed{Unfretted strings, Cordes non frettées}. + @node Indications d'archet @unnumberedsubsubsec Indications d'archet @@ -130,12 +132,12 @@ a2^\markup { \small "sul A" } @code{\open}. @endpredefined - @seealso Manuel de notation : @ref{Articulations et ornements}, @ref{Liaisons d'articulation}. + @node Harmoniques @unnumberedsubsubsec Harmoniques @translationof Harmonics @@ -167,7 +169,7 @@ d8 e e @end lilypond Une autre façon de procéder consiste à faire surmonter la note normale -d'un petit cercle. Ceci indique que la note écrite doît être jouée en +d'un petit cercle. Ceci indique que la note écrite doit être jouée en harmonique : @lilypond[verbatim,quote,relative=2] diff --git a/Documentation/fr/notation/vocal.itely b/Documentation/fr/notation/vocal.itely index bd3f5afc64..b148b7b287 100644 --- a/Documentation/fr/notation/vocal.itely +++ b/Documentation/fr/notation/vocal.itely @@ -1,17 +1,16 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 40c0295431d0732747d0e37b7911f03fb9daca16 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" +@c \version "2.16.0" @c Translators: Valentin Villenave, Jean-Charles Malahieude -@c Translation checkers: Jean-Charles Malahieude, Jean-Jacques Gerbaud +@c Translation checkers: Jean-Jacques Gerbaud @node Musique vocale @section Musique vocale @@ -19,7 +18,7 @@ @lilypondfile[quote]{vocal-headword.ly} -Ce chapitre traite de la musique vocale@tie{}: comment la saisir et comment +Ce chapitre traite de la musique vocale : comment la saisir et comment s'assurer que les paroles s'alignent avec les notes de la mélodie correspondante. @@ -53,11 +52,12 @@ particuliers en terme de musique vocale. * Traits d'union et de prolongation:: @end menu + @node Références en matière de musique vocale @unnumberedsubsubsec Références en matière de musique vocale @translationof References for vocal music and lyrics -Graver de la musique vocale soulève plusieurs problèmes@tie{}; ils +Graver de la musique vocale soulève plusieurs problèmes ; ils sont abordés soit dans ce chapitre, soit dans d'autres parties de la documentation de LilyPond. @@ -109,6 +109,7 @@ Morceaux choisis : @cindex ponctuation @cindex espaces, dans les paroles @cindex guillemets, dans les paroles +@cindex paroles, mise en forme @cindex ponctuation et paroles @funindex \lyricmode @@ -119,17 +120,17 @@ Il existe un mode de saisie spécialement adapté aux paroles. On l'introduit avec le mot-clé @code{\lyricmode}, ou en utilisant @code{\addlyrics} ou @code{\lyricsto}. Ce mode vous permet de saisir des paroles ainsi que leur ponctuation, de telle sorte que le -caractère@tie{}@code{a} ne sera plus interprété comme une note, un +caractère @code{a} ne sera plus interprété comme une note, un @notation{la} pour les non latinistes, mais comme une syllabe. Les syllabes sont saisies comme des notes, mais les hauteurs sont alors -remplacées par du texte. Exemple avec une comptine anglaise@tie{}: +remplacées par du texte. Exemple avec une comptine anglaise : @example \lyricmode @{ Three4 blind mice,2 three4 blind mice2 @} @end example Il y a deux manières principales de préciser la place exacte des -syllabes@tie{}: soit en spécifiant explicitement la durée de chaque +syllabes : soit en spécifiant explicitement la durée de chaque syllabe -- comme dans l'exemple ci-dessus -- soit en alignant automatiquement les paroles sur les notes d'une mélodie ou d'une voix en utilisant @code{\addlyrics} ou @code{\lyricsto}. La première méthode @@ -141,17 +142,17 @@ Dans les paroles, un mot ou une syllabe commence par une lettre de l'alphabet, et se termine par une espace. Toute syllabe doit donc être séparée d'une autre par une espace, tout autre caractère -- chiffre ou ponctuation -- étant considéré comme partie intégrante de cette même -syllabe. L'exemple suivant comporte une faute de frappe évidente@tie{}: +syllabe. L'exemple suivant comporte une faute de frappe évidente : @example \lyricmode @{ lah lah lah@} @end example @noindent -la dernière syllabe contient une @code{@}}@tie{}; il y a de fait un +la dernière syllabe contient une @code{@}} ; il y a de fait un défaut de parité avec l'accolade ouvrante, et la compilation échouera fort probablement. Prenez dès à présent l'habitude de toujours encadrer -d'espaces une accolade@tie{}: +d'espaces une accolade : @example \lyricmode @{ lah lah lah @} @@ -179,7 +180,7 @@ mais plutôt Pour utiliser des lettres accentuées ou des caractères spéciaux -- cœurs ou guillemets inversés par exemple -- il suffit de les insérer dans le fichier et de veiller à le sauvegarder avec le codage UTF-8. -Voir à ce sujet @ref{Codage du texte} pour plus de détails. +Voir à ce sujet @ref{Caractères spéciaux} pour plus de détails. @lilypond[quote,verbatim] \relative c'' { d8 c16 a bes8 f e' d c4 } @@ -188,7 +189,7 @@ Voir à ce sujet @ref{Codage du texte} pour plus de détails. Pour utiliser des guillemets informatiques standard, faites-les précéder d'une barre oblique inverse et encadrez d'une paire de -guillemets la syllabe ainsi composée@tie{}: +guillemets la syllabe ainsi composée : @lilypond[quote,verbatim] \relative c' { \time 3/4 e4 e4. e8 d4 e d c2. } @@ -197,24 +198,35 @@ guillemets la syllabe ainsi composée@tie{}: Expliquer exactement comment LilyPond repère le début d'un mot en mode paroles (@emph{Lyrics}) est quelque peu compliqué. En mode -@emph{Lyrics}, un mot peut commencer par@tie{}: tout caractère +@emph{Lyrics}, un mot peut commencer par : tout caractère alphabétique, @code{_}, @code{?}, @code{!}, @code{:}, @code{'}, un des codes de contrôle @code{^A} à @code{^F} et @code{^Q} à @code{^W}, @code{^Y}, @code{^^}, tout caractère ASCII de code strictement supérieur -à@tie{}127, ou enfin l'un des symboles @code{`}, @code{'}, @code{"}, ou +à 127, ou enfin l'un des symboles @code{`}, @code{'}, @code{"}, ou @code{^}, s'il est précédé d'une barre oblique inverse. @c " to balance double quotes for not-so-bright context-sensitive editors +LilyPond permet de contrôler très finement le rendu des paroles grâce au +mode @code{\markup}, utilisable y compris au sein du mode +@code{\lyricmode}. Des explications complètes sont disponibles au +chapitre @ref{Mise en forme du texte}. + +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{formatting-lyrics-syllables.ly} + @seealso Manuel d'initiation : @rlearning{Chansons} Manuel de notation : +@ref{Caractères spéciaux}, @ref{Durée automatique des syllabes}, @ref{Durée explicite des syllabes}, @ref{Fontes}, -@rusernamed{Input modes,Modes de saisie}. +@ref{Mise en forme du texte}, +@ref{Modes de saisie}. Référence des propriétés internes : @rinternals{LyricText}. @@ -238,14 +250,14 @@ contexte @code{Lyrics} -- voir @ref{Tout savoir sur les contextes}. @end example Vous disposez de deux méthodes pour aligner des paroles sur une -mélodie@tie{}: +mélodie : @itemize @item Les paroles peuvent s'aligner automatiquement, la durée des syllabes étant déterminée à partir d'un contexte de voix ou, dans certaines -circonstance, une mélodie associée, grâce aux commandes +circonstances, une mélodie associée, grâce aux commandes @code{\addlyrics} et @code{\lyricsto} ou en définissant la propriété @code{associatedVoice}. Ceci est détaillé à la rubrique @ref{Durée automatique des syllabes}. @@ -313,19 +325,19 @@ explicitement leur durée à chaque syllabe. @end lilypond La première ligne de paroles ne s'aligne pas vraiment sur les notes -parce qu'aucune durée n'a été spécifiée. En fait, Lilypond adopte la -dernière durée mentionnée, un@tie{}2, et l'applique à chaque mot. +parce qu'aucune durée n'a été spécifiée. En fait, LilyPond adopte la +dernière durée mentionnée, un 2, et l'applique à chaque mot. La deuxième ligne illustre la manière d'aligner des paroles sans tenir compte de la durée des notes. Cette façon de procéder permet de traiter un alignement différent selon les couplets lorsqu'il n'y a pas moyen de -déduire les durées à partir d'un contexte musical@tie{}; la rubrique +déduire les durées à partir d'un contexte musical ; la rubrique @ref{Durée explicite des syllabes} aborde ceci plus en détails. Cette technique permet aussi d'ajouter des dialogues, comme indiqué à la rubrique @ref{Dialogue et musique}. Des paroles saisies de cette manière s'aligneront par défaut sur la -gauche des notes@tie{}; elles seront centrées sur les notes de la +gauche des notes ; elles seront centrées sur les notes de la mélodie dès lors que vous pourrez les associer à une voix. Tout ceci est abordé plus en détails à la rubrique @ref{Durée explicite des syllabes}. @@ -352,7 +364,7 @@ Référence des propriétés internes : @funindex \lyricsto Les paroles peuvent être automatiquement alignées sous -une mélodie, de trois manières différentes@tie{}: +une mélodie, de trois manières différentes : @itemize @@ -378,8 +390,7 @@ syllabe. Ceci fait l'objet de la rubrique Le contexte @code{Voice} contenant la mélodie sur laquelle les paroles vont s'aligner doit rester actif, au risque de voir la suite du texte disparaître. Ceci peut se produire lorsqu'il y a des moments où l'on ne -chante pas. La rubrique @rusernamed{Keeping contexts alive, -Conservation d’un contexte} vous indiquera +chante pas. La rubrique @ref{Conservation d'un contexte} vous indiquera comment maintenir un contexte actif. @@ -391,7 +402,7 @@ comment maintenir un contexte actif. Vous pouvez aligner automatiquement des paroles sous une mélodie en spécifiant à l'aide de la commande @code{\lyricsto} le contexte de voix -qui contient cette mélodie@tie{}: +qui contient cette mélodie : @c KEEP LY @lilypond[quote,verbatim,relative=2] @@ -410,9 +421,9 @@ Cette commande adapte les paroles aux notes de la voix (contexte @code{Voice} dans le jargon LilyPond) @var{melodie}. Ce contexte @code{Voice} doit exister avant l'affectation des paroles par @code{\lyricsto}. La commande @code{\lyricsto} introduit -automatiquement le mode @code{\lyricmode}@tie{}; il n'est alors pas +automatiquement le mode @code{\lyricmode} ; il n'est alors pas nécessaire de rajouter @code{\lyricmode}. Les paroles viendront par -défaut se placer en dessous des notes@tie{}; la rubrique +défaut se placer en dessous des notes ; la rubrique @ref{Positionnement vertical des paroles} vous donnera des indications pour d'autres options. @@ -439,7 +450,7 @@ revient au même que \new Lyrics \lyricsto "blah" @{ PAROLES @} @end example -En voici un exemple@tie{}: +En voici un exemple : @lilypond[verbatim,quote] { @@ -472,7 +483,7 @@ constructions polyphoniques. Dans ce cas, mieux vaut employer La propriété @code{associatedVoice} permet de basculer de mélodie pour la synchronisation des paroles. Elle s'emploie de la manière -suivante@tie{}: +suivante : @example \set associatedVoice = #"lala" @@ -483,7 +494,7 @@ La valeur que vous attribuez à cette propriété (ici @code{"lala"}) doit désigner un contexte @code{Voice} nommé, sans quoi les mélismes ne seront pas imprimés correctement. -Voici un exemple de cette manière de procéder@tie{}: +Voici un exemple de cette manière de procéder : @lilypond[quote,ragged-right,verbatim] << @@ -528,7 +539,7 @@ Par défaut, les syllabes seront alignées par la gauche sur l'instant musical. Les traits d'union seront imprimés entre les syllabes, à l'inverse des mélismes puisqu'il n'y a pas de voix associée. -Voici deux illustrations de cette technique@tie{}: +Voici deux illustrations de cette technique : @lilypond[relative=1,verbatim,quote] << @@ -611,25 +622,18 @@ Référence des propriétés internes : Pour attribuer plus d'une syllabe à une même note, vous pouvez soit les mettre entre guillemets, soit utiliser le caractère souligné (@code{_}) pour obtenir une espace, ou bien encore utiliser un tilde -(@code{~}) pour obtenir une liaison entre les syllabes. Cette -liaison adaptée aux paroles correspond au caractère Unicode -@code{U+203F}, et n'apparaîtra dans la partition que si le système -dispose d'une police installée qui contient ce symbole. Un certain -nombre de fontes librement disponibles en disposent, comme FreeSerif -(un clone de Times), `DejaVuSans' (mais pas DejaVuSerif) ou -TeXGyreSchola (un clone de Century Schoolbook). +(@code{~}) pour obtenir une liaison entre les syllabes. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran- de_a- mi- go } - \addlyrics { pu- "ro y ho-" nes- to } - \addlyrics { pu- ro~y~ho- nes- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond - @seealso Référence des propriétés internes : @rinternals{LyricCombineMusic}. @@ -652,8 +656,8 @@ notes correspondent à une même syllabe. Ces vocalises sont appelées traditionnellement alignée sur la gauche de la première note du mélisme. Lorsqu'un mélisme tombe sur une syllabe autre que la dernière d'un mot, -un trait d'union étiré, indiqué par un double tiret @code{--} dans le -fichier source, reliera cette syllabe à la suivante. +un trait d'union étiré, indiqué par un double tiret @w{@code{--}} dans +le fichier source, reliera cette syllabe à la suivante. Lorsqu'un mélisme tombe sur la dernière syllabe d'un mot ou que ce mot n'en comporte qu'une, l'usage est d'indiquer la @qq{tenue} jusqu'à la @@ -661,12 +665,12 @@ dernière note de la vocalise. Ceci s'obtient en ajoutant un double caractère souligné @code{__} après cette syllabe. Vous disposez de cinq méthodes pour indiquer la présence d'un -mélisme@tie{}: +mélisme : @itemize @item -Une liaison de prolongation constitue de fait un mélisme@tie{}: +Une liaison de prolongation constitue de fait un mélisme : @lilypond[quote,relative=2,verbatim] << @@ -686,7 +690,7 @@ Une liaison de prolongation constitue de fait un mélisme@tie{}: LilyPond considère une liaison d'articulation comme un mélisme -- il s'étendra de la première à la dernière note couvertes par cette liaison. Il s'agit là de la façon traditionnelle de saisir des -paroles@tie{}: +paroles : @lilypond[quote,relative=2,verbatim] << @@ -701,6 +705,9 @@ paroles@tie{}: >> @end lilypond +Notez bien qu'une liaison de phrasé -- indiquée par @code{\(@dots{}\)} +-- n'a aucune incidence sur la gestion des mélismes. + @item LilyPond considère des notes regroupées par une ligature manuelle comme un mélisme, si tant est que la procédure de ligature automatique a été @@ -726,7 +733,7 @@ plus longues que la croche. @item LilyPond considère un groupe de notes non liées, mais encadrées par @code{\melisma} et @code{\melismaEnd}, comme constituant un -mélisme@tie{}: +mélisme : @lilypond[quote,relative=2,verbatim] << @@ -743,14 +750,11 @@ mélisme@tie{}: } >> @end lilypond -@ignore I don't see why -jcm -Note that this method cannot be used to indicate two melismata if -the first one is immediately followed by another. -@end ignore + @item Vous pouvez indiquer un mélisme directement dans les paroles, à l'aide d'un caractère souligné simple @code{_}, pour chaque note faisant partie -de la vocalise@tie{}: +de la vocalise : @lilypond[verbatim, quote, relative=2] << @@ -770,7 +774,7 @@ de la vocalise@tie{}: Vous pouvez totalement désactiver l'interprétation des liaisons de prolongation ou d'articulation et des ligatures apparaissant dans une mélodie comme fait générateur d'un mélisme. Il suffit en ce cas de -définir @code{melismaBusyProperties}@tie{}: +définir @code{melismaBusyProperties} : @lilypond[relative=1,verbatim,quote] << @@ -799,7 +803,7 @@ ignorées, il vous faudra alors activer @code{ignoreMelismata} -- voir Lorsque, dans un passage où la propriété @code{melismaBusyProperties} est active, survient un mélisme, vous pouvez l'indiquer dans les paroles -par un simple caractère souligné pour chaque note à inclure@tie{}: +par un simple caractère souligné pour chaque note à inclure : @lilypond[relative=1,verbatim,quote] << @@ -815,9 +819,7 @@ par un simple caractère souligné pour chaque note à inclure@tie{}: >> @end lilypond - @predefined - @code{\autoBeamOff}, @code{\autoBeamOn}, @code{\melisma}, @@ -842,8 +844,7 @@ Référence des propriétés internes : @rinternals{Tunable context properties}. @knownissues - -Certains mélismes ne sont pas détectés automatiquement@tie{}; vous devrez +Certains mélismes ne sont pas détectés automatiquement ; vous devrez alors prolonger vous-même les syllabes concernées à l'aide d'un double caractère souligné. @@ -883,7 +884,6 @@ imprimés. Cet inconvénient peut être contrôlé par les propriétés et @code{minimum-length}, seuil en deçà duquel il n'y a pas de trait d'union, toutes deux attachées à l'objet @code{LyricHyphen}. - @seealso Référence des propriétés internes : @rinternals{LyricExtender}, @@ -892,7 +892,7 @@ Référence des propriétés internes : @node Situations particulières en matière de paroles @subsection Situations particulières en matière de paroles -@translationof Specific uses of lyrics +@translationof Techniques specific to lyrics @c FIXME This whole section is to be reorganized @@ -904,6 +904,7 @@ Référence des propriétés internes : * Paroles alternatives:: @end menu + @node Travail avec des paroles et variables @unnumberedsubsubsec Travail avec des paroles et variables @translationof Working with lyrics and variables @@ -912,7 +913,7 @@ Référence des propriétés internes : @cindex paroles, identificateurs Vous pouvez créer des variables pour contenir les paroles, dès lors que -vous faites appel au mode approprié@tie{}: +vous faites appel au mode approprié : @lilypond[quote,verbatim] musicOne = \relative c'' { @@ -945,7 +946,7 @@ paroles, puis définir la hiérarchie des portées et des lignes de paroles, et enfin combiner correctement mélodies et paroles à l'aide de la commande @code{\context}. Vous serez ainsi assuré que la voix à laquelle il est fait référence par @code{\lyricsto} aura bien été -préalablement définie, comme dans l'exemple suivant@tie{}: +préalablement définie, comme dans l'exemple suivant : @lilypond[quote,verbatim] sopranoMusic = \relative c'' { c4 c c c } @@ -981,7 +982,6 @@ contraltoWords = \lyricmode { Con -- tral -- to words } } @end lilypond - @seealso Manuel de notation : @ref{Positionnement vertical des paroles}. @@ -1001,8 +1001,8 @@ Référence des propriétés internes : Selon le type de musique, les paroles apparaîtront au-dessus ou au-dessous d'une portée ou bien entre deux portées. Positionner des paroles en dessous de la portée à laquelle elles se rattachent est de -loin la chose la plus simple@tie{}: il suffit de mentionner le contexte -de paroles après le contexte de portée@tie{}: +loin la chose la plus simple : il suffit de mentionner le contexte +de paroles après le contexte de portée : @lilypond[quote,verbatim] \score { @@ -1024,7 +1024,7 @@ de paroles après le contexte de portée@tie{}: Positionner les paroles au-dessus de la portée se fait de deux manières différentes, le plus simple étant d'utiliser la même syntaxe que ci-dessus, à ceci près que la ligne de paroles sera positionnée de -manière explicite@tie{}: +manière explicite : @lilypond[quote,verbatim] \score { @@ -1048,7 +1048,7 @@ par déclarer un contexte @code{Lyrics} que nous laissons vide, puis les contextes @code{Staff} et @code{Voice}. Dans un deuxième temps, nous ajoutons l'instruction @code{\context} et la commande @code{\lyricsto} pour affecter les paroles au contexte de voix en -question. Voici comment cela se présente@tie{}: +question. Voici comment cela se présente : @lilypond[quote,verbatim] \score { @@ -1074,7 +1074,7 @@ question. Voici comment cela se présente@tie{}: Lorsque deux voix sont isolées chacune sur une portée, vous pouvez placer les paroles entre les deux portées en utilisant l'une des méthodes que nous venons de voir. En voici un exemple, basé sur la -deuxième méthode@tie{}: +deuxième méthode : @lilypond[quote,verbatim] \score { @@ -1114,16 +1114,15 @@ de ces exemples, ou en examinant les d'initiation. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{lyrics-old-spacing-settings.ly} - +@lilypondfile[verbatim,quote,texidoc,doctitle] +{obtaining-2.12-lyrics-spacing-in-newer-versions.ly} @seealso Manuel d'initiation : @rlearning{Ensemble vocal}. Manuel de notation : -@ref{Alignement des contextes}, +@ref{Ordonnancement des contextes}, @ref{Création d'un contexte}. @@ -1173,18 +1172,18 @@ dans le bloc @code{\layout}. @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {lyrics-alignment.ly} @c TODO: move to LSR -vv L'assurance que tous les scripts textuels et les paroles resteront bien à l'intérieur des marges requiert des ressources non négligeables. -Afin de réduire le temps de traitement, LilyPond n'effectue pas ces -calculs par défaut@tie{}; pour l'y obliger, vous devrez ajouter +Afin de réduire le temps de traitement, vous pouvez désactiver cette +fonctionnalité en ajoutant @example -\override Score.PaperColumn #'keep-inside-line = ##t +\override Score.PaperColumn #'keep-inside-line = ##f @end example Pour s'assurer que les paroles ne seront pas traversées par des barres @@ -1201,17 +1200,6 @@ de mesure, il faut ajouter @} @end example -@c TODO Create and add lsr example of lyricMelismaAlignment -@c It's used like this to center-align all lyric syllables, -@c even when notes are tied. -td - -@ignore -\layout -{ - \context { \Score lyricMelismaAlignment = #0 } -} -@end ignore - @node Paroles et reprises @unnumberedsubsubsec Paroles et reprises @@ -1224,6 +1212,7 @@ La répétition de @i{fragments musicaux} est abordée de manière détaillée dans un @rusernamed{Répétitions et reprises,chapitre spécifique}. Nous nous intéresserons ici aux moyens d'ajouter des paroles à des reprises. + @subheading Reprises simples @c VO: Simple repeats @@ -1278,7 +1267,7 @@ Les mots seront alors correctement répétés si la reprise est développée. @end lilypond Lorsque la reprise est développée et que les paroles diffèrent, -saisissez le texte normalement@tie{}: +saisissez le texte normalement : @lilypond[verbatim,quote,ragged-right] \score { @@ -1303,9 +1292,9 @@ saisissez le texte normalement@tie{}: @end lilypond Lorsque les paroles diffèrent pour une reprise non développée -- -utiliation de @code{volta} au lieu de @code{unfold} -- les paroles en +utilisation de @code{volta} au lieu de @code{unfold} -- les paroles en question doivent être saisies dans des contextes @code{Lyrics} -séparés@tie{}; ils seront combinés dans une section parallèle@tie{}: +séparés ; ils seront combinés dans une section parallèle : @lilypond[verbatim,quote] \score { @@ -1332,7 +1321,7 @@ séparés@tie{}; ils seront combinés dans une section parallèle@tie{}: } @end lilypond -Et ce quel que soit le nombre de @qq{couplets}@tie{}: +Et ce quel que soit le nombre de @qq{couplets} : @lilypond[verbatim,quote] \score { @@ -1366,6 +1355,52 @@ Et ce quel que soit le nombre de @qq{couplets}@tie{}: @end lilypond +@cindex alignBelowContext +@funindex alignBelowContext + +Cependant, lorsque la partition comporte plusieurs portées, cas typique +d'un @code{ChoirStaff}, les paroles des deuxième et troisième couplets +seront repoussées sous la dernière portée. L'instruction +@code{alignBelowContext} permet alors de les repositionner correctement : + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 3 { b4 b b b } + c4 c c c + } + } + } + \new Lyrics = "firstVerse" \lyricsto "melody" { + Not re -- peat -- ed. + << + { The first time words. } + \new Lyrics = "secondVerse" + \with { alignBelowContext = #"firstVerse" } { + \set associatedVoice = "melody" + Sec -- ond time words. + } + \new Lyrics = "thirdVerse" + \with { alignBelowContext = #"secondVerse" } { + \set associatedVoice = "melody" + The third time words. + } + >> + The end sec -- tion. + } + \new Voice = "harmony" { + \relative c' { + f4 f f f \repeat volta 2 { g8 g g4 g2 } a4 a8. a16 a2 + } + } + >> +} +@end lilypond + @c TODO positioning a common line of lyrics @@ -1377,7 +1412,7 @@ Et ce quel que soit le nombre de @qq{couplets}@tie{}: @cindex alternative et paroles Les paroles d'un fragment répété, lorsqu'elles sont identiques, peuvent -adopter la même construction que la musique@tie{}: +adopter la même construction que la musique : @lilypond[quote,verbatim] \score { @@ -1408,8 +1443,8 @@ paroles sont différentes. Des instructions @code{\skip} devront venir s'insérer dans les paroles pour @qq{sauter} les notes des alternatives qui ne les concernent pas. -N'utilisez pas de simple caratère souligné pour sauter une note. -N'oubliez pas qu'un caractère souligné indique un mélisme@tie{}; la +N'utilisez pas de simple caractère souligné pour sauter une note. +N'oubliez pas qu'un caractère souligné indique un mélisme ; la syllabe précédente sera donc alignée à gauche. @warning{La commande @code{@bs{}skip} doit comporter une durée quelle @@ -1460,8 +1495,9 @@ puisque la longueur de l'alternative est accrue en raison de la liaison. D'autre part, une liaison de prolongation crée un mélisme qui sera effectif pour la première alternative, mais pas pour les autres. La -solution pour recaler les paroles, consiste à désactiver temporairement -la détection automatique de mélismes et insérer des @qq{blancs}. +solution pour @qq{recaler} les paroles consiste à désactiver +temporairement la détection automatique de mélismes et insérer des +@qq{blancs}. @lilypond[quote,verbatim] \score { @@ -1497,8 +1533,8 @@ Notez bien que l'utilisation conjointe de @code{\unfoldRepeats} et de supprimer les @code{\repeatTie}. Lorsque les paroles sont différentes sur le fragment répété, la -construction avec @code{\repeat} est inefficace@tie{}; vous devrez alors -insérer des blancs@tie{}: +construction avec @code{\repeat} est inefficace ; vous devrez alors +insérer des blancs : @lilypond[quote,verbatim] \score { @@ -1531,7 +1567,7 @@ insérer des blancs@tie{}: @end lilypond Les indications de mélisme et traits d'union en début d'alternative -doivent être insérés manuellement@tie{}: +doivent être insérées manuellement : @lilypond[quote,verbatim] \score { @@ -1563,7 +1599,6 @@ doivent être insérés manuellement@tie{}: } @end lilypond - @seealso Manuel de notation : @ref{Conservation d'un contexte}, @@ -1581,7 +1616,7 @@ Manuel de notation : Il arrive parfois, dans un fragment répété, qu'une note soit divisée pour répondre au texte. Vous pouvez indiquer cette adaptation rythmique en désactivant temporairement la détection automatique des mélismes tout -en spécifiant ces mélismes au niveau des paroles@tie{}: +en spécifiant ces mélismes au niveau des paroles : @lilypond[quote,verbatim] \score { @@ -1607,8 +1642,8 @@ en spécifiant ces mélismes au niveau des paroles@tie{}: @end lilypond En donnant un nom à chaque voix et en leur attribuant spécifiquement -des paroles, vous pourez traiter le cas où notes et rythme diffèrent -d'une fois sur l'autre@tie{}: +des paroles, vous pourrez traiter le cas où notes et rythme diffèrent +d'une fois sur l'autre : @lilypond[verbatim,ragged-right,quote] \score { @@ -1662,7 +1697,7 @@ d'une fois sur l'autre@tie{}: @cindex numéro de couplet On peut ajouter un numéro aux couplets en définissant la variable -@code{stanza}@tie{}: +@code{stanza} : @lilypond[quote,ragged-right,verbatim,relative=2] \new Voice { @@ -1748,7 +1783,7 @@ text = { @cindex nom du chanteur @cindex rôle -On peut également ajouter le nom de chaque rôle@tie{}; ils s'imprimeront +On peut également ajouter le nom de chaque rôle ; ils s'imprimeront au début de chaque ligne comme les noms d'instrument. Il faut pour cela définir @code{vocalName}, et @code{shortVocalName} pour une version abrégée. @@ -1785,9 +1820,9 @@ couplets, mais plusieurs syllabes pour d'autres. Une solution consiste syllabes. Il suffit pour cela de définir la propriété @code{ignoreMelismata} à l'intérieur du contexte @code{Lyrics}. -Petit détail qui a son importance@tie{}: l'activation de +Petit détail qui a son importance : l'activation de @code{ignoreMelismata} doit @strong{précéder} la syllabe à partir de -laquelle elle s'appliquera@tie{}: +laquelle elle s'appliquera : @lilypond[verbatim,ragged-right,quote] << @@ -1814,7 +1849,7 @@ laquelle elle s'appliquera@tie{}: @knownissues Contrairement aux autres utilisations de l'instruction @code{\set}, il n'est pas possible de la faire précéder d'un @code{\once} dans le cas de -@code{\set@tie{}ignoreMelismata}. Les paroles affectées par la +@code{\set ignoreMelismata}. Les paroles affectées par la propriété @code{ignoreMelismata} @strong{doivent} être encadrées respectivement d'un @code{\set} et d'un @code{\unset}. @@ -1828,7 +1863,7 @@ respectivement d'un @code{\set} et d'un @code{\unset}. L'utilisation de la commande @code{\lyricsto} ne permet pas, par défaut, d'assigner une syllabe à des notes d'ornement -- introduites par la commande @code{\grace}. Vous pouvez cependant y parvenir grâce à la -propriété @code{includeGraceNotes}@tie{}: +propriété @code{includeGraceNotes} : @lilypond[verbatim,ragged-right,quote] << @@ -1858,7 +1893,7 @@ Tout comme pour la propriété @code{associatedVoice}, la propriété @code{includeGraceNotes} doit être activée au moins une syllabe avant celle qui viendra s'attacher à la note d'ornement. Dans le cas où cette note se trouve être la première de la pièce, vous devrez recourir à une -clause @code{\with} ou @code{\context}@tie{}: +clause @code{\with} ou @code{\context} : @lilypond[verbatim,ragged-right,quote] << @@ -1886,7 +1921,7 @@ plusieurs voix. Les paroles peuvent suivre l'une ou l'autre des lignes mélodiques, et même basculer de l'une à l'autre si l'on modifie la propriété @code{associatedVoice}. Dans cet exemple, -@lilypond[ragged-right,quote] +@lilypond[verbatim,quote] << \relative c' \new Voice = "lahlah" { \set Staff.autoBeaming = ##f @@ -1961,11 +1996,11 @@ Il peut parfois s'avérer opportun d'aligner un seul couplet sur la mélodie, et de présenter tous les autres en bloc à la fin du morceau. Ces couplets additionnels peuvent être inclus dans une section @code{\markup} en dehors du bloc @code{\score} principal. -Vous en trouverez un exemple ci-dessous@tie{}; notez également les deux +Vous en trouverez un exemple ci-dessous ; notez également les deux méthodes différentes employées pour indiquer les sauts de ligne, entre les couplets (@emph{verses} en anglais) 2 et 3. -@c KEEPLY +@c KEEP LY @lilypond[ragged-right,verbatim,quote] melody = \relative c'' { \time 2/4 @@ -2010,7 +2045,7 @@ sur plusieurs colonnes. L'exemple suivant vous montre comment procéder pour que le numéro du couplet soit en retrait à gauche, comme c'est traditionnellement le cas. -@c KEEPLY +@c KEEP LY @lilypond[ragged-right,quote,verbatim] melody = \relative c'' { \time 2/4 @@ -2033,15 +2068,15 @@ text = \lyricmode { \markup { \fill-line { \hspace #0.1 % décalage par rapport à la marge de gauche - % peut être supprimé si l'espace sur la page est réduit - \column { + % peut être supprimé si l'espace sur la page est réduit + \column { \line { \bold "2." \column { "Sous les feuilles d'un chêne" "Je me suis fait sécher..." } } - \hspace #0.1 % ajout d'espace vertical entre les couplets + \vspace #0.1 % ajout d'espace vertical entre les couplets \line { \bold "3." \column { "Chante, rossignol, chante," @@ -2050,16 +2085,14 @@ text = \lyricmode { } } \hspace #0.1 % ajout d'espace horizontal entre les colonnes - % si elles sont toujours trop proches, ajouter d'autres paires de " " - % jusqu'à ce que le résultat soit acceptable. - \column { + \column { \line { \bold "4." \column { "J'ai perdu mon ami" "Sans l'avoir mérité..." } } - \hspace #0.1 % ajout d'espace vertical entre les couplets + \vspace #0.1 % ajout d'espace vertical entre les couplets \line { \bold "5." \column { "Je voudrais que la rose" @@ -2067,13 +2100,12 @@ text = \lyricmode { } } } - \hspace #0.1 % décalage par rapport à la marge de droite - % peut être supprimé si l'espace sur la page est réduit + \hspace #0.1 % décalage par rapport à la marge de droite + % peut être supprimé si l'espace sur la page est réduit } } @end lilypond - @seealso Référence des propriétés internes : @rinternals{LyricText}, @@ -2089,21 +2121,22 @@ Référence des propriétés internes : * Feuille de chant:: @end menu + @node Références en matière de chanson @unnumberedsubsubsec Références en matière de chanson @translationof References for songs Une chanson se présente la plupart du temps sous la forme de trois -portées@tie{}: une pour la mélodie surmontant un système pianistique -pour l'accompagnement@tie{}; les paroles du premier couplet s'accolent +portées : une pour la mélodie surmontant un système pianistique +pour l'accompagnement ; les paroles du premier couplet s'accolent sous la mélodie. S'il n'y a que deux ou trois couplets, et que cela -n'est pas génant au niveau de l'aspect général, tous peuvent prendre +n'est pas gênant au niveau de l'aspect général, tous peuvent prendre place entre la mélodie et l'accompagnement. Dans le cas contraire, le premier couplet sera imprimé sous la mélodie et les suivants après la partition, sous forme de blocs de texte indépendants. Tous les éléments qui permettent d'imprimer des chansons sont examinés à -différents endroits de la documentation de LilyPond@tie{}: +différents endroits de la documentation de LilyPond : @itemize @@ -2164,10 +2197,9 @@ son harmonisation. La syntaxe appropriée est expliquée en détails au chapitre @ref{Notation des accords}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {simple-lead-sheet.ly} - @seealso Manuel de notation : @ref{Notation des accords}. @@ -2193,6 +2225,7 @@ partie de chœur. * Division de voix:: @end menu + @node Références en matière de chorale @unnumberedsubsubsec Références en matière de chorale @translationof References for choral @@ -2200,7 +2233,7 @@ partie de chœur. Une partition pour chœur comporte habituellement de deux à quatre portées regroupées dans un @code{ChoirStaff}. L'accompagnement, s'il y en a un, se présente sous la forme d'un système pianistique -- un -@code{PianoStaff} -- en dessous du chœur@tie{}; il s'agira d'une simple +@code{PianoStaff} -- en dessous du chœur ; il s'agira d'une simple réduction dans le cas d'une œuvre @emph{a capella}. Les notes de chaque pupitre font l'objet d'un contexte @code{Voice} distinct. Ces contextes @code{Voice} peuvent se voir groupés ou non sur une même portée. @@ -2209,13 +2242,13 @@ Les paroles sont traitées dans des contextes @code{Lyrics} qui viendront se placer tantôt sous la portée, tantôt au-dessus et au-dessous de la portée si elle contient deux voix. -Un certain nombre de composantes d'une partition pour chœur sont -examinés à différents endroits de la documentation de LilyPond@tie{}: +Certaines composantes d'une partition pour chœur sont examinées à +différents endroits de la documentation de LilyPond : @itemize @item -La création pas à pas d'une partition pour chœur se trouve dans la +La création pas à pas d'une partition pour chœur se trouve dans le manuel d'initiation, au chapitre @rlearning{Partition pour chœur à quatre voix mixtes}. @@ -2229,8 +2262,8 @@ Des informations détaillées sur les contextes @code{ChoirStaff} et @ref{Regroupement de portées}. @item -Les formes de notation particulière, telles que celle utilisée en -@emph{Sacred Harp} et assimilées, sont abrodées au chapitre +Les formes de notation particulière, telle que celle utilisée en +@emph{Sacred Harp} et assimilées, sont abordées au chapitre @ref{Têtes de note à forme variable}. @item @@ -2253,7 +2286,7 @@ Manuel d'initiation : @rlearning{Ensemble vocal}. Manuel de notation : -@ref{Ordre des contextes de mise en forme}, +@ref{Ordonnancement des contextes}, @ref{Regroupement de portées}, @ref{Têtes de note à forme variable}, @ref{Polyphonie sur une portée}. @@ -2275,7 +2308,7 @@ Une partition pour chœur sur quatre portées, avec ou sans accompagnement, présente traditionnellement deux systèmes par page. Selon la taille du papier, vous pourrez être amené à effectuer quelques ajustements aux réglages par défaut, notamment en raison des points -suivants@tie{}: +suivants : @itemize @@ -2367,7 +2400,7 @@ Référence des propriétés internes : @cindex voix, division -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-arpeggiobracket-to-make-divisi-more-visible.ly} @seealso @@ -2381,7 +2414,7 @@ Manuel de notation : Tout ce qui permet d'exécuter un opéra ou une œuvre scénique accompagnée de musique se présente généralement sous l'une ou plusieurs des formes -suivantes@tie{}: +suivantes : @itemize @@ -2407,7 +2440,7 @@ Une @emph{partition de choriste} qui ne comprend que les parties vocales @item Un @emph{livret} contenant l'intégralité des dialogues et le texte des -passsages chantés. On y trouve aussi très souvent les indications de +passages chantés. On y trouve aussi très souvent les indications de mise en scène. Bien que LilyPond soit capable de @qq{typographier} un livret, n'oubliez pas qu'il n'y a dans ce cas pas de musique, et que d'autres outils pourraient être mieux appropriés. @@ -2428,6 +2461,7 @@ opératique et scénique. * Dialogue et musique:: @end menu + @node Références en matière d'opéra et musique de scène @unnumberedsubsubsec Références en matière d'opéra et musique de scène @translationof References for opera and stage musicals @@ -2451,7 +2485,7 @@ La génération d'un matériel d'orchestre fait l'objet de la rubrique @ref{Écriture de parties séparées}. D'autres parties du chapitre consacré à la notation spécialisée vous seront utiles selon l'orchestration de la pièce. Tous les instruments ne sont pas accordés -pareil@tie{}; vous trouverez des informations à ce sujet à la rubrique +pareil ; vous trouverez des informations à ce sujet à la rubrique @ref{Instruments transpositeurs}. @item @@ -2466,9 +2500,10 @@ répertoriées au chapitre @ref{Mise en forme de la page}. @item L'insertion de dialogues et d'indications de mise en scène peuvent se réaliser à l'aide de @emph{markups}, en suivant les directives fournies -au chapitre @ref{Texte}. Les indications de mise en scène peuvent -s'intercaler entre deux blocs @code{\score} selon les préceptes de la -rubrique @ref{Texte indépendant}. +aux chapitres @ref{Notes de bas de page} et @ref{Texte}. Les +indications de mise en scène peuvent s'intercaler entre deux blocs +@code{\score} selon les préceptes de la rubrique +@ref{Texte indépendant}. @end itemize @@ -2479,15 +2514,16 @@ Glossaire musicologique : @rglosnamed{transposing instrument,instrument transpositeur}. Manuel de notation : -@ref{Regroupement de portées}, -@ref{Masquage de portées}, -@ref{Instruments transpositeurs}, +@ref{Ajout de texte}, @ref{Imbrication de regroupements de portées}, +@ref{Instruments transpositeurs}, +@ref{Masquage de portées}, @ref{Mise en forme de la page}, +@ref{Notes de bas de page}, +@ref{Regroupement de portées}, @ref{Séparation des systèmes}, @ref{Transposition}, -@ref{Écriture de parties séparées}, -@ref{Ajout de texte}. +@ref{Écriture de parties séparées}. Morceaux choisis : @rlsrnamed{Vocal music,Musique vocale}. @@ -2501,7 +2537,7 @@ Morceaux choisis : @cindex personnage, indication Lorsqu'un rôle est distribué sur une portée spécifique, vous pouvez -l'indiquer en regard de cette portée@tie{}: +l'indiquer en regard de cette portée : @lilypond[quote,verbatim,ragged-right] \score { @@ -2532,7 +2568,7 @@ l'indiquer en regard de cette portée@tie{}: Lorsque la même portée sert à plusieurs personnages, leur nom est généralement imprimé en surplomb de la portée, à chaque changement de rôle. L'utilisation d'un @emph{markup} -- dans une fonte réservée à cet -effet -- vous permettra de générer ces indications@tie{}: +effet -- vous permettra de générer ces indications : @lilypond[quote,verbatim,relative=1] \clef "G_8" @@ -2549,8 +2585,8 @@ c c c Dans le cas où les changements de personnage se multiplient, il peut s'avérer pratique de détourner l'utilisation de la fonction @code{\instrumentSwitch} pour gérer les différentes interventions de -l'un ou de l'autre@tie{}; vous devrez auparavant avoir établi la -définition d'un @qq{instrument} pour chacun des rôles en question@tie{}: +l'un ou de l'autre ; vous devrez auparavant avoir établi la +définition d'un @qq{instrument} pour chacun des rôles en question : @lilypond[quote,verbatim] \addInstrumentDefinition #"kaspar" @@ -2591,7 +2627,7 @@ Manuel de notation : @ref{Text markup commands}. Manuel d'extension des fonctionnalités : -@rextendnamed{Markup construction in Scheme,Construction d'un markup en Scheme}. +@rextend{Construction d'un markup en Scheme}. @node Citation-repère @@ -2605,7 +2641,7 @@ Manuel d'extension des fonctionnalités : Les citations d'instruments insérées dans les parties vocales, les partitions de chœur ou les partitions d'un pupitre permettent d'indiquer ce qui se passe ailleurs juste avant une entrée. On les retrouve -souvent dans la réduction pour piano, ce qui fournit au chef de choœur +souvent dans la réduction pour piano, ce qui fournit au chef de chœur de précieuses indications sur qui joue quoi, lorsqu'il ne dispose pas d'un conducteur en bonne et due forme. @@ -2613,8 +2649,8 @@ Les mécanismes de base permettant d'insérer des citations sont expliqués en détail aux rubriques @ref{Citation d'autres voix} et @ref{Mise en forme d'une citation}. Dans le cas où les citations concernent différents instruments, faire mention de celui qui intervient -devient une nécessité@tie{}; voici une illustration de la manière de -procéder en pareil cas@tie{}: +devient une nécessité ; voici une illustration de la manière de +procéder en pareil cas : @lilypond[quote,verbatim] flute = \relative c'' { @@ -2626,7 +2662,10 @@ pianoRH = \relative c'' { c4. g8 % position name of cue-ing instrument just before the cue notes, % and above the staff - s1*0^\markup { \right-align { \tiny "Flute" } } + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \set instrumentCueName = "Flute" + } \cueDuring "flute" #UP { g4 bes4 } } pianoLH = \relative c { c4 e, } @@ -2649,11 +2688,11 @@ faudra mentionner sa tonalité dans sa définition, afin que ses hauteurs soient automatiquement converties dans la réplique. Ceci est illustré par l'exemple ci-dessous, dans lequel il est fait appel à une clarinette en si bémol. Dans la mesure où les notes citées se trouvent vers le bas -de la portée, nous ajoutons un @code{#DOWN} à la commande +de la portée, nous affectons un @code{DOWN} à la commande @code{\cueDuring}, de telle sorte que les hampes aillent vers le bas et que le nom de l'instrument cité soit en dessous de la portée. Vous noterez que la voix contenant la main droite du piano est explicitement -déclarée@tie{}; ceci tient au fait que la citation se produit dès le +déclarée ; ceci tient au fait que la citation se produit dès le début de la première mesure -- si nous ne le faisions pas, l'intégralité de la main droite se verrait placée dans un contexte @code{CueVoice}. @@ -2667,7 +2706,11 @@ clarinet = \relative c' { pianoRH = \relative c'' { \transposition c' % position name of cue-ing instrument below the staff - s1*0_\markup { \right-align { \tiny "Clar." } } + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \override InstrumentSwitch #'direction = #DOWN + \set instrumentCueName = "Clar." + } \cueDuring "clarinet" #DOWN { c4. g8 } g4 bes4 } @@ -2698,7 +2741,7 @@ musicale dans le but de vous épargner de la saisie tout en améliorant la lisibilité des notes du piano. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {adding-orchestral-cues-to-a-vocal-score.ly} @seealso @@ -2721,7 +2764,7 @@ Référence des propriétés internes : @knownissues @code{\cueDuring} crée automatiquement un contexte @code{CueVoice} qui -accueillera toutes les notes répliquées. Il est par conséquenet +accueillera toutes les notes répliquées. Il est par conséquent impossible de faire se superposer des citations à l'aide de la technique simplifiée telle que nous venons de le voir. La superposition de fragments cités requiert que les contextes @code{CueVoice} soient @@ -2737,7 +2780,7 @@ explicitement déclarés, ainsi que l'utilisation de la commande @cindex Sprechgesang Le @emph{parlato} -- ou @emph{Sprechgesang} pour les germanistes -- est -du texte scandé en rythme, mais sans hauteurs définies@tie{}; il est +du texte scandé en rythme, mais sans hauteurs définies ; il est indiqué par des notes en croix, à l'instar des percussions -- voir @ref{Têtes de note spécifiques}. @@ -2752,12 +2795,12 @@ indiqué par des notes en croix, à l'instar des percussions -- voir @unnumberedsubsubsec Dialogue et musique @translationof Dialogue over music -Les dialogues que l'on ajoute à la musiqua sont traditionnellement +Les dialogues que l'on ajoute à la musique sont traditionnellement imprimés en italique au-dessus des portées, au moment même où ils surviennent. Une courte intervention peut se formuler à l'aide d'un simple -@emph{markup}@tie{}: +@emph{markup} : @lilypond[quote,verbatim,relative=2] a4^\markup { \smallCaps { Alex - } \italic { He's gone } } a a a @@ -2773,7 +2816,7 @@ devrez probablement ajuster vous même la mise en forme. Dans le cas d'une phrase entière ou de passages relativement denses, le recours à un contexte @code{Lyrics} peut donner de meilleurs résultats. Le contexte @code{Lyrics} en question ne doit être rattaché à aucune -voix musicale@tie{}; chaque fragment de dialogue devra donc comporter +voix musicale ; chaque fragment de dialogue devra donc comporter des durées explicites. Lorsque les dialogues comportent des pauses, le dernier mot devra être séparé du reste et les durées individualisées pour obtenir un espacement harmonieux de la musique. @@ -2783,7 +2826,7 @@ insérer des @code{\break} et ajuster leur placement pour éviter qu'ils ne débordent dans la marge droite. Le dernier mot de la dernière mesure d'une ligne doit être saisi sur une ligne à part. -Voici une illustration de tout ce que nous venons de voir@tie{}: +Voici une illustration de tout ce que nous venons de voir : @c This should be a snippet, but it can't be as it needs to be @c manually adjusted to suit the imposed line length. -td @@ -2852,6 +2895,7 @@ l'obédience. * Mesure incomplète et musique liturgique:: @end menu + @node Références en matière de chant liturgique @unnumberedsubsubsec Références en matière de chant liturgique @translationof References for chants and psalms @@ -2877,8 +2921,8 @@ anciennes. Nous allons examiner quelques uns de ces éléments et la méthode consacrée pour les mettre en œuvre. Les cantiques utilisent souvent des noires dépourvues de hampe pour -indiquer les hauteurs@tie{}; le rythme de la mélodie est donné par le -rythme et l'accentuation des paroles elles-même. +indiquer les hauteurs ; le rythme de la mélodie est donné par le +rythme et l'accentuation des paroles elles-mêmes. @lilypond[verbatim,quote] stemOff = { \override Staff.Stem #'transparent = ##t } @@ -2887,13 +2931,12 @@ stemOff = { \override Staff.Stem #'transparent = ##t } \stemOff a'4 b c2 | } - @end lilypond -Les barres de mesure sont absentes dans la plupart des cas@tie{}; celles +Les barres de mesure sont absentes dans la plupart des cas ; celles que vous rencontrerez seront raccourcies ou en pointillé, dans le but d'indiquer une @qq{respiration}. Le fait de supprimer le graveur de -barres de mesure produira des portées sans barre@tie{}: +barres de mesure produira des portées sans barre : @lilypond[verbatim,quote] \score { @@ -2923,7 +2966,7 @@ barres de mesure produira des portées sans barre@tie{}: @end lilypond L'absence de barre de mesure peut ne concerner que certaines -portées@tie{}: +portées : @lilypond[verbatim, quote] \score { @@ -2949,7 +2992,7 @@ portées@tie{}: L'absence de barre de mesure sur un fragment seulement s'obtient en traitant ce fragment comme une cadence. S'il est relativement long, -pensez à y insérer des barres fantômes -- un simple @code{\bar@tie{}""} +pensez à y insérer des barres fantômes -- un simple @code{\bar ""} -- pour indiquer à LilyPond où serait susceptible de se produire un saut de ligne. @@ -2967,7 +3010,7 @@ a4 b c2 | @end lilypond Dans la mélodie d'un cantique, les silences ou pauses s'indiquent à -l'aide de barres de mesure spécifiques@tie{}: +l'aide de barres de mesure spécifiques : @lilypond[verbatim, quote,relative=2] a4 @@ -2987,7 +3030,7 @@ a4 b c2 Vous pouvez accessoirement, bien qu'il s'agisse de notation moderne, emprunter au grégorien des indications de pause et silence. Il vous suffit pour cela d'adapter la commande @code{\breathe} selon vos -besoins@tie{}: +besoins : @lilypond[verbatim,quote] divisioMinima = { @@ -3140,8 +3183,7 @@ D'autres approches d'une telle mise en forme font l'objet du premier des exemples qui suivent. @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {chant-or-psalms-notation.ly} Cantiques et autres textes liturgiques peuvent être mis en forme avec @@ -3150,7 +3192,7 @@ ancienne. Le texte apparaît souvent sous la mélodie, les mots alors alignés sur les notes. En pareil cas, les notes sont espacées selon les syllabes et non leur durée. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @seealso @@ -3162,7 +3204,7 @@ Manuel de notation : @ref{Notations anciennes}, @ref{Barres de mesure}, @ref{Modification des greffons de contexte}, -@ref{Typesetting Gregorian chant}, +@ref{Typographie du chant grégorien}, @ref{Musique sans métrique}, @ref{Visibilité des objets}. @@ -3174,7 +3216,7 @@ Manuel de notation : Les versets d'un psaume anglican sont habituellement centrées sous la mélodie. -Dans le cas d'un chant simple, les sept mesures sui le composent sont +Dans le cas d'un chant simple, les sept mesures qui le composent sont répétées pour chaque verset. Dans le cas d'un chant double, les quatorze mesures se répètent par couple de versets. Des marques insérées dans le texte indiquent comment il s'articule par rapport à la @@ -3206,7 +3248,7 @@ mesure. Vous pourriez tout à fait utiliser d'autres symboles disponibles au travers des glyphes de la fonte @code{fetaMusic} -- voir le chapitre -@ref{Fontes} pour plus de détatils. +@ref{Fontes} pour plus de détails. @lilypond[verbatim,quote] tick = \markup { @@ -3230,7 +3272,7 @@ tick = \markup { Lorsqu'une mesure ne comporte qu'une ronde, le texte correspondant à cette mesure est chanté sur cette même note, selon le rythme naturel de la phrase. Lorsque la mesure comporte deux notes, celles-ci -correspondent en général à une ou deux syllabes@tie{}; dans le cas +correspondent en général à une ou deux syllabes ; dans le cas contraire, le changement de note est indiqué par un point. @lilypond[verbatim,quote] @@ -3285,7 +3327,7 @@ tick = \markup { } @end lilypond -D'autres psautiers indiquent une syllabe accentuées en la surchargeant +D'autres psautiers indiquent une syllabe accentuée en la surchargeant d'un accent. @lilypond[verbatim,quote] @@ -3334,14 +3376,14 @@ Manuel de notation : @unnumberedsubsubsec Mesure incomplète et musique liturgique @translationof Partial measures in hymn tunes -Il arrive fréquemment que les chants liturgiques coportent des mesures +Il arrive fréquemment que les chants liturgiques comportent des mesures incomplètes aussi bien en début qu'en fin de ligne, de telle sorte qu'à une portée corresponde une ligne de texte. Ceci requiert donc l'utilisation de la commande @code{\partial} en début de partition et -d'une commande @code{\bar@tie{}"|"} ou @code{\baràtie{}"||"} à la fin de +d'une commande @code{\bar "|"} ou @code{\bar "||"} à la fin de chaque ligne. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {hymn-template.ly} @@ -3350,14 +3392,13 @@ chaque ligne. @translationof Ancient vocal music LilyPond prend en charge la musique vocale ancienne. Elle est abordée -en détails au chapite @ref{Notations anciennes}. +en détails au chapitre @ref{Notations anciennes}. @c TODO @c Add "Printing both the ancient and the modern clef in vocal music" snippet, @c and "Transcription of Ancient music with incipit" snippet. -vv - @seealso Manuel de notation : @ref{Notations anciennes}. diff --git a/Documentation/fr/notation/wind.itely b/Documentation/fr/notation/wind.itely index 0dcc91e68e..4e36ec0747 100644 --- a/Documentation/fr/notation/wind.itely +++ b/Documentation/fr/notation/wind.itely @@ -1,16 +1,15 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a 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" +@c \version "2.16.0" -@c Translators: Valentin Villenave, Jean-Charles Malahieuse +@c Translators: Valentin Villenave, Jean-Charles Malahieude @c Translation checkers: Jean-Charles Malahieude, John Mandereau @node Instruments à vent @@ -28,6 +27,7 @@ notation pour instruments à vent. * Bois:: @end menu + @node Vue d'ensemble des instruments à vent @subsection Vue d'ensemble des instruments à vent @translationof Common notation for wind instruments @@ -40,6 +40,7 @@ instruments à vent. * Doigtés pour vents:: @end menu + @node Références en matière d'instruments à vent @unnumberedsubsubsec Références en matière d'instruments à vent @translationof References for wind instruments @@ -48,7 +49,7 @@ instruments à vent. @cindex vents Ce qui caractérise les partitions pour instruments à vent a trait -principalement à la respiration et à l'attaque@tie{}: +principalement à la respiration et à l'attaque : @itemize @item Les respirations s'indiquent par des silences ou des @@ -70,20 +71,20 @@ attachée à la note concernée. Voir à ce sujet @end itemize D'autres aspects de la notation s'appliquent aussi aux instruments à -vent@tie{}: +vent : @itemize -@item De nombreux instruments à vent sont transpositeurs@tie{}; voir +@item De nombreux instruments à vent sont transpositeurs ; voir @ref{Instruments transpositeurs}. @item Les glissandos sont l'une des caractéristiques du trombone à -coulisse, bien que d'autres instruments puisssent y parvenir en jouant -sur les pistons ou des clés@tie{}; consulter @ref{Glissando}. +coulisse, bien que d'autres instruments puissent y parvenir en jouant +sur les pistons ou des clés ; consulter @ref{Glissando}. @item Des glissandos harmoniques sont réalisables par les cuivres. Ils sont traditionnellement indiqués par des @ref{Notes d'ornement}. -@item Les inflections en fin de note sont abordées au chapitre +@item Les inflexions en fin de note sont abordées au chapitre @ref{Chutes et sauts}. @item Les @qq{bruitages} de clé ou de piston s'indiquent souvent par le @@ -93,9 +94,9 @@ style @code{cross} ou des @ref{Têtes de note spécifiques}. registre. On les indique avec un @code{flageolet} -- voir @ref{Liste des signes d'articulation}. -@item En ce qui concerne les cuivres, la sourdine s'indique en pricipe +@item En ce qui concerne les cuivres, la sourdine s'indique en principe par une étiquette textuelle. Cependant, lorsque les changements sont -nombreux et rapides, il est d'usage de recourrir aux articulations +nombreux et rapides, il est d'usage de recourir aux articulations @code{stopped} et @code{open}. Pour de plus amples détails, voir @ref{Articulations et ornements} et @ref{Liste des signes d'articulation}. @@ -105,11 +106,9 @@ Voir le chapitre @ref{Articulations et ornements}. @end itemize @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing--flageolet-mark-size.ly} - @seealso Manuel de notation : @ref{Signes de respiration}, @@ -121,7 +120,7 @@ Manuel de notation : @ref{Glissando}, @ref{Notes d'ornement}, @ref{Chutes et sauts}, -@ref{Têtes de note spécifiques}, +@ref{Têtes de note spécifiques}. Morceaux choisis : @rlsrnamed{Winds,Vents}. @@ -133,25 +132,23 @@ Morceaux choisis : Tout instrument à vent, hormis le trombone à coulisse, fait appel à plusieurs doigts pour produire un son. Les exemples ci-dessous vous -donnent un apperçu de différentes manières d'indiquer des doigtés. +donnent un aperçu de différentes manières d'indiquer des doigtés. La gestion des diagrammes de doigté spécifiques aux bois est abordée plus en profondeur au chapitre @ref{Diagrammes pour bois}. @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingering-symbols-for-wind-instruments.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {recorder-fingering-chart.ly} @seealso - Manuel de notation : @ref{Diagrammes pour bois}. -Snippets: +Morceaux choisis : @rlsrnamed{Winds,Vents}. @@ -166,6 +163,7 @@ Voici quelques informations spécifiques à la cornemuse. * Exemple pour la cornemuse:: @end menu + @node Définitions pour la cornemuse @unnumberedsubsubsec Définitions pour la cornemuse @translationof Bagpipe definitions @@ -182,7 +180,7 @@ Voici quelques informations spécifiques à la cornemuse. @funindex showKeySignature LilyPond inclut des définitions spécifiques destinées à la notation pour -cornemuse écossaise@tie{}; pour les utiliser, il suffit d'ajouter +cornemuse écossaise ; pour les utiliser, il suffit d'ajouter @example \include "bagpipe.ly" @@ -190,7 +188,7 @@ cornemuse écossaise@tie{}; pour les utiliser, il suffit d'ajouter @noindent en début de fichier. Ainsi, vous bénéficierez de commandes courtes pour -les appogiatures spéciales et idiomatiques de la cornemuse. Par +les appoggiatures spéciales et idiomatiques de la cornemuse. Par exemple, @code{\taor} est un raccourci pour @example @@ -198,7 +196,7 @@ exemple, @code{\taor} est un raccourci pour @end example @file{bagpipe.ly} prend également en charge les définitions de hauteurs -pour la cornemuse@tie{}; vous n'avez donc pas à vous soucier d'employer +pour la cornemuse ; vous n'avez donc pas à vous soucier d'employer @code{\relative} ou @code{\transpose}. @lilypond[ragged-right,verbatim,quote,notime] @@ -215,15 +213,15 @@ tenez à afficher l'armure. Des compositions actuelles peuvent ne pas respecter cette tonalité traditionnelle, auquel cas les do et fa devraient être abaissés en -utilisant @code{cflat} ou @code{fflat}@tie{}; ils seront représentés par +utilisant @code{cflat} ou @code{fflat} ; ils seront représentés par une note en forme de croix. Lorsqu'on joue des œuvres moins cérémonieuses que pour une parade ou un défilé, peut survenir un sol aigu, au doux nom de @qq{piobaireachd}, et que l'on indiquera par @code{gflat}. - @seealso +Morceaux choisis : @rlsrnamed{Winds,Vents}. @@ -274,8 +272,8 @@ Et voici en guise d'exemple, à quoi ressemble le chant populaire } @end lilypond - @seealso +Morceaux choisis : @rlsrnamed{Winds,Vents} @@ -289,13 +287,14 @@ Nous allons ici nous intéresser aux spécificités de la section des bois. * Diagrammes pour bois:: @end menu + @node Diagrammes pour bois @subsubsection Diagrammes pour bois @translationof Woodwind diagrams Les doigtés pour obtenir une note particulière peuvent s'afficher sous forme graphique. LilyPond dispose de diagrammes pour la plupart des -bois, et tout particulièrement les instruments suivants@tie{}: +bois, et tout particulièrement les instruments suivants : @itemize @item piccolo @@ -310,7 +309,7 @@ bois, et tout particulièrement les instruments suivants@tie{}: @noindent Les diagrammes sont générés en tant qu'objet de type -@emph{markup}@tie{}: +@emph{markup} : @lilypond[verbatim,quote,relative=2] c1^\markup @@ -319,7 +318,7 @@ c1^\markup (rh . (ees))) @end lilypond -Les clés ou trous peuvent être partiellement enfoncés ou bouchés@tie{}: +Les clés ou trous peuvent être partiellement enfoncés ou bouchés : @c KEEP LY @lilypond[verbatim, quote, relative=2] @@ -371,7 +370,7 @@ c1^\markup { @end lilypond L'indication du doigté permettant de triller s'obtient en grisant une -position@tie{}: +position : @lilypond[verbatim,quote,relative=2] c1^\markup { @@ -383,7 +382,7 @@ c1^\markup { @end lilypond Certaines combinaisons particulières en matière de trille sont -possibles@tie{}: +possibles : @c KEEP LY @lilypond[verbatim,quote,relative=2] @@ -434,39 +433,35 @@ c1^\markup { } @end lilypond -Bien que cela ne produise pas de notation, vous pouvez obtenir à l'écran -ou dans un fichier de journalisation la liste de toutes les possibilités -pour un instrument donné, en utilisant dans un fichier - -@lilypond[verbatim,quote] - -#(print-keys-verbose 'flute) - -@end lilypond - -De nouveaux diagrammes sont réalisables, en suivant les directives -contenues dans les fichiers @file{scm/define-woodwind-diagrams.scm} et -@file{scm/display-woodwind-diagrams.scm}. Ceci requiert toutefois la -maîtrise du langage Scheme. - +Bien que cela ne produise pas de notation, vous pouvez obtenir la liste +de toutes les possibilités pour un instrument donné, en utilisant dans +un fichier les instructions +@code{#(print-keys-verbose@tie{}'@var{vent})} -- affichage à l'écran -- +@code{#(print-keys-verbose@tie{}'@var{vent}@tie{}(current-error-port))} +-- génération d'un fichier de journalisation. + +De nouveaux diagrammes sont réalisables, bien que ceci requiert de +maîtriser le langage Scheme et n'est pas à la portée de tous les +utilisateurs. Des gabarits sont contenus dans les fichiers +@file{scm/define-woodwind-diagrams.scm} et +@file{scm/display-woodwind-diagrams.scm}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-listing.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {graphical-and-text-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-size-of-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-key-lists.ly} @seealso - Fichiers d'initialisation : -@file{scm/define-woodwind-diagrams.scm}, +@file{scm/define-woodwind-diagrams.scm}, @* @file{scm/display-woodwind-diagrams.scm}. Morceaux choisis : diff --git a/Documentation/fr/notation/world.itely b/Documentation/fr/notation/world.itely index bba365b308..27f0fca00d 100644 --- a/Documentation/fr/notation/world.itely +++ b/Documentation/fr/notation/world.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 3f4496001441e0b1b27d7bc5395c4520f4f2088c + Translation of GIT committish: 0512fcc5db9b050be664413ba0f79a3dcfc1028a 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" +@c \version "2.16.0" @c Translators: Jean-Jacques Gerbaud, Valentin Villenave @c Translation checkers: Jean-Charles Malahieude @@ -20,75 +20,87 @@ Ce chapitre a pour objet la notation des musiques traditionnelles autres qu'occidentales. @menu -* Noms de note et altérations non-occidentaux:: +* Noms des notes et altérations non-occidentaux:: * Musique arabe:: * Musique classique turque:: @end menu -@node Noms de note et altérations non-occidentaux -@subsection Noms de note et altérations non-occidentaux +@node Noms des notes et altérations non-occidentaux +@subsection Noms des notes et altérations non-occidentaux @translationof Common notation for non-Western music +Nous allons voir ici comment saisir et imprimer des partitions dans +d'autres formes que la musique occidentale, que les anglophones +appellent aussi @emph{Common practice period}. + +@menu +* Extension des systèmes de notation et d'accordage:: +@end menu + + +@node Extension des systèmes de notation et d'accordage +@unnumberedsubsubsec Extension des systèmes de notation et d'accordage +@translationof Extending notation and tuning systems + +Les formes de notation propres à la musique classique traditionnelle +sont employées dans toutes sortes de musique autres que le +@qq{classique}. Nous en avons déjà parlé dans le chapitre +@ref{Écriture des hauteurs de note}, et plus particulièrement à la +rubrique @ref{Nom des notes dans d'autres langues}. + De nombreuses musiques autres qu'occidentales -- et même certaines -formes de musique traditionnelle occidentales -- ont recours à des -systèmes de notation alternatifs ou étendus, qui ne s'intègrent pas +formes de musique traditionnelle occidentales -- ont cependant recours à +des systèmes de notation alternatifs ou étendus, qui ne s'intègrent pas forcément dans notre système standard. -Sans certains cas où la notation standard est utilisée, ces différences -de hauteurs seront implicites. Par exemple, la musique arabe est -reproduite en notation standard, et utilise des quarts de ton, -l'altération réelle dépendant du contexte. D'autres, par contre, font -appel à une notation étendue, voire toute particulière. - -La @notation{musique classique turque}, ou musique ottomane, utilise des -formes mélodiques appelées @notation{makamlar}, dans laquelle les -tons sont divisés en 9 intervalles. Du point de vue actuel des -pratiques de notation, il est possible d'utiliser les notes occidentales -(do, ré, mi@dots{}) auxquelles on ajoutera l'atlération spécifique à la -musique turque. Ces différentes altérations sont définies dans le -fichier @file{makam.ly} -- reportez vous au chapitre -@rlearning{Autres sources de documentation} pour le localiser sur votre -système. Vous trouverez, dans le tableau suivant, le nom de ces -altérations, le suffixe à utiliser, ainsi que la fraction de ton entier -à laquelle elles conrrespondent. +Dans certains cas où la notation standard est utilisée, ces différences +de hauteur seront implicites. Par exemple, la musique arabe est +reproduite en notation standard et utilise des quarts de ton, +l'altération réelle dépendant du contexte. Elle utilise +traditionnellement la dénomination italienne, étendue dans le fichier +@file{arabic.ly} par un certain nombre de macros -- voir +@ref{Musique arabe} pour plus de détails. -@c TODO: can we include the actual accidentals in this table? -@quotation -@multitable {@b{büyük mücenneb (dièse)}} {@b{suffixe}} {@b{altération}} -@headitem Nom d'altération - @tab suffixe @tab altération +@cindex accordage non occidental -@item büyük mücenneb (dièse) - @tab -bm @tab +8/9 -@item kücük mücenneb (dièse) - @tab -k @tab +5/9 -@item bakiye (dièse) - @tab -b @tab +4/9 -@item koma (dièse) - @tab -c @tab +1/9 +D'autres, par contre, font appel à une notation étendue, voire toute +particulière. La @notation{musique classique turque}, ou musique +ottomane, utilise des formes mélodiques appelées @notation{makamlar}, +dans laquelle les tons sont divisés en neuf intervalles. Du point de +vue actuel des pratiques de notation, il est possible d'utiliser les +notes occidentales (do, ré, mi@dots{}) auxquelles on ajoutera +l'altération spécifique à la musique turque. Ces différentes +altérations sont définies dans le fichier @file{makam.ly}. Pour de plus +amples informations, reportez-vous à la rubrique +@ref{Musique classique turque}. -@item koma (bémol) - @tab -fc @tab -1/9 -@item bakiye (bémol) - @tab -fb @tab -4/9 -@item kücük mücenneb (bémol) - @tab -fk @tab -5/9 -@item büyük mücenneb (bémol) - @tab -fbm @tab -8/9 -@end multitable -@end quotation - -Pour plus d'information sur la musique classique turque et les -makamlar, reportez-vous au chapitre @ref{Musique classique turque}. +Pour savoir où se trouvent les fichiers @file{arabic.ly} et +@file{makam.ly} sur votre système, reportez vous au chapitre +@rlearning{Autres sources de documentation}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {makam-example.ly} +@seealso +Glossaire musicologique : +@rglos{Common Practice Period}, +@rglos{makamlar}. + +Manuel d'initiation : +@rlearning{Autres sources de documentation}. + +Notation Reference: +@ref{Écriture des hauteurs de note}, +@ref{Musique arabe}, +@ref{Musique classique turque}, +@ref{Nom des notes dans d'autres langues}. + + @node Musique arabe @subsection Musique arabe @translationof Arabic music @@ -141,7 +153,7 @@ ailleurs@tie{}: @itemize @item Les noms des notes et altérations (y compris les quarts de tons) peuvent être adaptés comme l'explique -@ref{Nom des notes dans d'autres langues}. +@ref{Noms des notes et altérations non-occidentaux}. @item Les armures peuvent également être adaptées comme expliqué dans @ref{Armure}. @@ -156,12 +168,13 @@ façon indiquée dans @ref{Musique sans métrique}. @seealso Manuel de notation : -@ref{Nom des notes dans d'autres langues}, +@ref{Noms des notes et altérations non-occidentaux}, @ref{Armure}, @ref{Barres de ligature manuelles}. Morceaux choisis : -@rlsrnamed{World music,Musiques du monde}. +@rlsrnamed{World music, Musiques du monde}. + @node Noms des notes en arabe @unnumberedsubsubsec Noms des notes en arabe @@ -210,10 +223,11 @@ l'aspect du demi-bémol dans l'armure. @seealso Manuel de notation : +@ref{Noms des notes et altérations non-occidentaux}, @ref{Nom des notes dans d'autres langues} Morceaux choisis : -@rlsrnamed{World music,Musiques du monde}. +@rlsrnamed{World music, Musiques du monde}. @node Armures arabes @@ -277,7 +291,7 @@ de base. Voici une suggestion de groupement qui relie les maqams les plus courants à leur armure@tie{}: -@multitable @columnfractions 0.1 0.1 0.1 0.6 +@multitable @columnfractions 0.15 0.1 0.1 0.6 @headitem groupe maqam @tab Armure @tab Tonique @@ -322,11 +336,19 @@ courants à leur armure@tie{}: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} @seealso +Glossaire musicologique : +@rglos{maqam}, +@rglos{bayati}, +@rglos{rast}, +@rglos{sikah}, +@rglos{iraq}, +@rglos{kurd}. + Manuel de notation : @ref{Armure}. @@ -337,8 +359,8 @@ Référence des propriétés internes : @rinternals{KeySignature}. Morceaux choisis : -@rlsrnamed{World music,Musiques du monde}, -@rlsrnamed{Pitches,Hauteurs}. +@rlsrnamed{World music, Musiques du monde}, +@rlsrnamed{Pitches, Hauteurs}. @node Métriques arabes @@ -362,24 +384,26 @@ chiffres de mesure composés. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {arabic-improvisation.ly} @seealso +Glossaire musicologique : +@rglos{semai}, +@rglos{taqasim}. + Manuel de notation : -@ref{Barres de ligature manuelles}, -@ref{Barres de ligature automatiques}, -@ref{Musique sans métrique}, @ref{Altérations accidentelles automatiques}, +@ref{Barres de ligature automatiques}, +@ref{Barres de ligature manuelles}, @ref{Définition des règles de ligature automatique}, -@ref{Métrique}. +@ref{Métrique}, +@ref{Musique sans métrique}. Morceaux choisis : -@rlsrnamed{World music,Musiques du monde}. +@rlsrnamed{World music, Musiques du monde}. + @node Exemple de musique arabe @unnumberedsubsubsec Exemple de musique arabe @@ -415,9 +439,11 @@ intermédiaires et des modes inhabituels traités dans ce chapitre. } @end lilypond + @seealso Morceaux choisis : -@rlsrnamed{World music,Musiques du mondes}. +@rlsrnamed{World music, Musiques du mondes}. + @node Lectures complémentaires pour la musique arabe @unnumberedsubsubsec Lectures complémentaires pour la musique arabe @@ -463,17 +489,17 @@ Ibrahim Ali Darwish Al-masri @end itemize @end enumerate + @node Musique classique turque @subsection Musique classique turque @translationof Turkish classical music - Ce chapitre met en évidence des questions propres à la notation de la musique classique turque. @menu * Références pour la musique classique turque:: -* Noms des notes en turc:: +* Noms de note en turc:: @end menu @@ -492,7 +518,7 @@ musique classique turque. La musique classique turque s'est développée dans l'Empire Ottoman à peu près à la même période que la musique classique en Europe, et a continué jusqu'au XXe et XXIe siècle comme une tradition vibrante et distincte -avec sa propre théorie, ses propres formes, et styles d'interprétation. +avec sa propre théorie, ses propres formes et styles d'interprétation. Parmi ses caractéristiques remarquables, se trouve l'usage de micro-intervalles fondés sur des @qq{commas} d'un neuvième de ton, dont sont dérivées les formes mélodiques @notation{makam} (pluriel @@ -504,12 +530,13 @@ traitées dans d'autres chapitres@tie{}: @itemize @item Les noms de notes et altérations sont mentionnés dans -@ref{Noms de note et altérations non-occidentaux}. +@ref{Noms des notes et altérations non-occidentaux}. @end itemize -@node Noms des notes en turc -@unnumberedsubsubsec Noms des notes en turc + +@node Noms de note en turc +@unnumberedsubsubsec Noms de note en turc @translationof Turkish note names @cindex turc, noms des notes @@ -519,7 +546,7 @@ traitées dans d'autres chapitres@tie{}: La musique classique turque attribue traditionnellement un nom unique à chaque hauteur, et du fait de la division du ton en neuf parts, les makamlar emploient une échelle de hauteurs complètement différente des -gammes et modes d'occident@tie{}: +gammes et modes d'occident@tie{}:@* @notation{koma} de 1/9 de ton entier, @notation{eksik bakiye} (3/9), @notation{bakiye} (4/9), @notation{kücük mücenneb} (5/9), @notation{büyük mücenneb} (8/9), @notation{tanîni} (un ton entier) @@ -529,8 +556,46 @@ D'un point de vue de notation moderne, il est pratique d'utiliser positions occidentales des notes sur la portée (do, ré, mi@dots{}) avec des altérations spéciales qui haussent ou baissent les notes par intervalles de 1/9, 4/9, 5/9 et 8/9 de ton. Ces altérations sont -définies dans le dossier @file{makam.ly} (pour trouver l'emplacement de -ce dossier dans votre système, voir -@rlearning{Autres sources de documentation}). Une description plus -détaillée se trouve dans -@ref{Noms de note et altérations non-occidentaux}. +définies dans le fichier @file{makam.ly}. + +Vous trouverez, dans le tableau suivant, le nom de ces +altérations, le suffixe à utiliser, ainsi que la fraction de ton entier +à laquelle elles correspondent. + +@quotation +@multitable {@b{büyük mücenneb (dièse)}} {@b{suffixe}} {@b{altération}} +@headitem Nom d'altération + @tab suffixe @tab altération + +@item büyük mücenneb (dièse) + @tab -bm @tab +8/9 +@item kücük mücenneb (dièse) + @tab -k @tab +5/9 +@item bakiye (dièse) + @tab -b @tab +4/9 +@item koma (dièse) + @tab -c @tab +1/9 + +@item koma (bémol) + @tab -fc @tab -1/9 +@item bakiye (bémol) + @tab -fb @tab -4/9 +@item kücük mücenneb (bémol) + @tab -fk @tab -5/9 +@item büyük mücenneb (bémol) + @tab -fbm @tab -8/9 +@end multitable +@end quotation + +Pour plus d'information sur les formes de notation non-occidentales, +reportez-vous au chapitre +@ref{Noms des notes et altérations non-occidentaux}. + + +@seealso +Glossaire musicologique : +@rglos{makam}, +@rglos{makamlar}. + +Manuel de notation : +@ref{Noms des notes et altérations non-occidentaux}. diff --git a/Documentation/fr/search-box.ihtml b/Documentation/fr/search-box.ihtml index 889c3432ab..0017b60ffc 100644 --- a/Documentation/fr/search-box.ihtml +++ b/Documentation/fr/search-box.ihtml @@ -1,18 +1,26 @@ + + diff --git a/Documentation/fr/texidocs/accordion-discant-symbols.texidoc b/Documentation/fr/texidocs/accordion-discant-symbols.texidoc new file mode 100644 index 0000000000..c60bb45e41 --- /dev/null +++ b/Documentation/fr/texidocs/accordion-discant-symbols.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les symboles spécifiques au clavier main droite d'un accordéon +s'indiquent à l'aide de @code{\\markup}. Le positionnement de tels +symboles s'ajuste grâce à des arguments @code{\\raise}. + +" + doctitlefr = "Symboles de chant pour accordéon" diff --git a/Documentation/fr/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc b/Documentation/fr/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc index 2f42adea2f..32fc7348ad 100644 --- a/Documentation/fr/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc +++ b/Documentation/fr/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc @@ -1,2 +1,16 @@ -%% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une ligne de basse chiffrée peut se positionner au-dessus ou en dessous +d'une partie de basse, grâce à la propriété +@code{BassFigureAlignmentPositioning #'direction} attachée à un contexte +@code{Staff}. Les possibilités sont @code{#UP} (ou @code{#1}) pour +au-dessus, @code{#CENTER} (ou @code{#0}) pour centrée, et @code{#DOWN} +(ou @code{#-1}) pour en dessous. + +Cette propriété peut être sujette à modification au cours de la +partition. Il vous faudra insérer un @code{\\once \\override} si ce +changement devait être temporaire. + +" doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes" + diff --git a/Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc b/Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc index cdf3c73a02..70255f519f 100644 --- a/Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc +++ b/Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'@code{ambitus} peut être individualisé par voix. Il faut en pareil cas éviter qu'ils se chevauchent. diff --git a/Documentation/fr/texidocs/adding-an-extra-staff-at-a-line-break.texidoc b/Documentation/fr/texidocs/adding-an-extra-staff-at-a-line-break.texidoc new file mode 100644 index 0000000000..1b0d158de7 --- /dev/null +++ b/Documentation/fr/texidocs/adding-an-extra-staff-at-a-line-break.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsqu'une nouvelle portée vient s'ajouter après un saut de ligne, +LilyPond préserve un espace juste avant le saut de ligne -- pour un +éventuel changement d'armure qui, quoi qu'il en soit, ne sera pas +imprimé. L'astuce consiste alors, comme indiqué dans l'exemple suivant, +à ajuster @code{Staff.explicitKeySignatureVisibility}. + +" + doctitlefr = "Ajout d'une portée supplémentaire après un saut de ligne" diff --git a/Documentation/fr/texidocs/adding-an-extra-staff.texidoc b/Documentation/fr/texidocs/adding-an-extra-staff.texidoc new file mode 100644 index 0000000000..9bf8cd59a6 --- /dev/null +++ b/Documentation/fr/texidocs/adding-an-extra-staff.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Vous pouvez ajouter une nouvelle portée, éventuellement de manière +temporaire, après le début d'un morceau. + +" + doctitlefr = "Ajout d'une portée supplémentaire" + diff --git a/Documentation/fr/texidocs/adding-bar-lines-to-chordnames-context.texidoc b/Documentation/fr/texidocs/adding-bar-lines-to-chordnames-context.texidoc new file mode 100644 index 0000000000..d1b404af10 --- /dev/null +++ b/Documentation/fr/texidocs/adding-bar-lines-to-chordnames-context.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'ajout du graveur @code{Bar_engraver} à un contexte @code{ChordNames} +permet d'imprimer les barres de mesure entre les chiffrages. + +" + doctitlefr = "Chiffrages et barres de mesure" diff --git a/Documentation/fr/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc b/Documentation/fr/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc new file mode 100644 index 0000000000..eb6cad568d --- /dev/null +++ b/Documentation/fr/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La syntaxe de LilyPond demande parfois un positionnement inhabituel des +parenthèses, crochets etc. qui peuvent s'entrelacer. Par exemple, le +crochet ouvrant une ligature manuelle se place à la suite de la note +de départ et sa durée, non pas avant. De même, le crochet fermant se +place à la fin de la ligature, y compris lorsque la dernière note se +trouve incluse dans un nolet. Cet extrait illustre la manière de +combiner ligatures manuelles, liaisons d'articulation, de prolongation +ou de phrasé, avec des nolets bornés par des parenthèses. + +" + doctitlefr = "Coexistence de ligatures et liaisons avec des rythmes comprenant des nolets" diff --git a/Documentation/fr/texidocs/adding-drum-parts.texidoc b/Documentation/fr/texidocs/adding-drum-parts.texidoc index 2131b61b07..1e76721c3a 100644 --- a/Documentation/fr/texidocs/adding-drum-parts.texidoc +++ b/Documentation/fr/texidocs/adding-drum-parts.texidoc @@ -1,14 +1,13 @@ -%% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Grâce à la puissance des outils préconfigurés tels que la fonction @code{\\drummode} et le contexte @code{DrumStaff}, la saisie de -parties pour percussions est extrêmement simplifiée : chaque composant -d'une batterie trouve sa place sur une portée dédiée (avec une clef -spécifique) et les têtes de note sont spécifiques à chaque élément. +parties pour percussions est extrêmement simplifiée@tie{}: chaque +composant d'une batterie trouve sa place sur une portée dédiée (avec une +clef spécifique) et les têtes de note sont spécifiques à chaque élément. Il est également possible d'affecter un symbole particulier à chaque élément, tout comme de restreindre le nombre de lignes de la portée. " - doctitlefr = "Ajout de parties de batterie" diff --git a/Documentation/fr/texidocs/adding-extra-fingering-with-scheme.texidoc b/Documentation/fr/texidocs/adding-extra-fingering-with-scheme.texidoc new file mode 100644 index 0000000000..a865b11668 --- /dev/null +++ b/Documentation/fr/texidocs/adding-extra-fingering-with-scheme.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Il est possible, à l'aide de la fonction @code{make-music}, d'ajouter +divers éléments à des notes. Voici comment attacher un doigté +supplémentaire à une note. + +En règle générale, réaliser préalablement un @code{display} (affichage) +de la musique que vous souhaitez créer vous aidera à écrire la fonction +chargée de structurer votre musique. + +" + doctitlefr = "Ajout d'un doigté supplémentaire avec scheme" diff --git a/Documentation/fr/texidocs/adding-fingerings-to-a-score.texidoc b/Documentation/fr/texidocs/adding-fingerings-to-a-score.texidoc new file mode 100644 index 0000000000..fe2858295d --- /dev/null +++ b/Documentation/fr/texidocs/adding-fingerings-to-a-score.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les instructions de doigtés se saisissent selon une syntaxe très simple. + +" + doctitlefr = "Ajout de doigtés à une partition" diff --git a/Documentation/fr/texidocs/adding-fingerings-to-tablatures.texidoc b/Documentation/fr/texidocs/adding-fingerings-to-tablatures.texidoc index 0e4b4bfb70..95f713906f 100644 --- a/Documentation/fr/texidocs/adding-fingerings-to-tablatures.texidoc +++ b/Documentation/fr/texidocs/adding-fingerings-to-tablatures.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 96ee692447057131395fe4c1f9fe55805b710aa6 - texidocfr = "Ajout de doigtés à des tablatures" - - doctitlefr = " +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " L'ajout de doigtés à des tablatures s'obtient en conjuguant des @code{\\markup} et des @code{\\finger}. + " + doctitlefr = "Ajout de doigtés à des tablatures" diff --git a/Documentation/fr/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc b/Documentation/fr/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc new file mode 100644 index 0000000000..e1095b00b5 --- /dev/null +++ b/Documentation/fr/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Dans cet extrait est définie la commande @code{\\splitStaffBarLine} qui +ajoute une double flèche après la dernière barre de mesure d'une portée, +indiquant par là que ses différentes voix disposeront de leur propre +portée à la ligne suivante. + +" + doctitlefr = "Ajout d'indicateurs à une portée dédoublée après un saut de ligne" diff --git a/Documentation/fr/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc b/Documentation/fr/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc index 0e60f7e1ea..984f79968e 100644 --- a/Documentation/fr/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc +++ b/Documentation/fr/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc @@ -1,12 +1,11 @@ -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Lorsque le nombre d'instruments cités dans la réduction pour piano se multiplie, vous pourriez avoir intérêt à créer votre propre fonction pour gérer ces repères. La fonction musicale @code{\\cueWhile} prend quatre arguments@tie{}: la musique d'où provient la citation, telle que définie par @code{\\addQuote}, le nom qui sera mentionné en regard de -cette citation, son positionnement -- @code{#UP} ou @code{#DOWN} selon +cette citation, son positionnement -- @code{UP} ou @code{DOWN} selon qu'il sera attribué à @code{\\voiceOne} et placé au-dessus ou @code{\\voiceTwo} et placé en dessous -- et enfin la musique du piano qui interviendra en parallèle. Le nom de l'instrument en question @@ -14,6 +13,5 @@ viendra s'aligner sur la gauche de la citation. Bien que vous puissiez effectuer plusieurs citations, elle ne peuvent être simultanées. " - doctitlefr = "Indication de l'instrument cité dans l'accompagnement d'une -partition pour chœur" + doctitlefr = "Indication de l'instrument cité dans l'accompagnement d'une partition pour chœur" diff --git a/Documentation/fr/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc b/Documentation/fr/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc new file mode 100644 index 0000000000..fb7133461d --- /dev/null +++ b/Documentation/fr/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La fonction @code{\\parenthesize}, qui permet de mettre un objet entre +parenthèses, a ceci de particulier qu'elle est associée à un objet +graphique @code{ParenthesesItem}. + +" + doctitlefr = "Mise entre parenthèses d'un signe d'interprétation ou d'une note d'un accord" diff --git a/Documentation/fr/texidocs/adding-the-current-date-to-a-score.texidoc b/Documentation/fr/texidocs/adding-the-current-date-to-a-score.texidoc index fdfaeca7c8..6106367961 100644 --- a/Documentation/fr/texidocs/adding-the-current-date-to-a-score.texidoc +++ b/Documentation/fr/texidocs/adding-the-current-date-to-a-score.texidoc @@ -1,7 +1,6 @@ -%% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Avec un peu de code Scheme, voici comment ajouter facilement la date du jour à votre partition. " - doctitlefr = "Ajout de la date du jour à une partition" diff --git a/Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc b/Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc index a5b3412662..9d6c6965fc 100644 --- a/Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc +++ b/Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte -@code{Score} ; les crochets précédant une reprise s'impriment donc +@code{Score}@tie{}; les crochets précédant une reprise s'impriment donc seulement au-dessus de la portée du haut. On peut ajuster cela en déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui doivent comporter ces crochets. diff --git a/Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc b/Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc index 7a7ae54b38..8621b82887 100644 --- a/Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc +++ b/Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc @@ -1,10 +1,9 @@ -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Dans certains cas de musique polyphonie complexe, une voix +Dans certains cas de musique polyphonique complexe, une voix supplémentaire peut permettre d'éviter les risques de collision. Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme -@code{context-spec-music} permet d'ajouter des d'autres voix. +@code{context-spec-music} permet d'ajouter encore d'autres voix. " doctitlefr = "Ajout de voix pour éviter les collisions" - diff --git a/Documentation/fr/texidocs/adjusting-grace-note-spacing.texidoc b/Documentation/fr/texidocs/adjusting-grace-note-spacing.texidoc new file mode 100644 index 0000000000..61fdfc3691 --- /dev/null +++ b/Documentation/fr/texidocs/adjusting-grace-note-spacing.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La propriété @code{spacing-increment} de @code{Score.GraceSpacing} +permet d'ajuster l'espacement d'un groupe de notes d'ornement. + +" + doctitlefr = "Ajustement de l'espacement des notes d'ornement" diff --git a/Documentation/fr/texidocs/adjusting-lyrics-vertical-spacing.texidoc b/Documentation/fr/texidocs/adjusting-lyrics-vertical-spacing.texidoc index 357fe34ce1..d4373b81d4 100644 --- a/Documentation/fr/texidocs/adjusting-lyrics-vertical-spacing.texidoc +++ b/Documentation/fr/texidocs/adjusting-lyrics-vertical-spacing.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Cet extrait illustre la manière de rapprocher la ligne de paroles -de la portée. +Cet extrait illustre la manière de réduire l'espace entre la ligne de +paroles et la portée. " doctitlefr = "Ajustement de l'espacement vertical des paroles" diff --git a/Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc b/Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc index b59a009648..09befbdfeb 100644 --- a/Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc +++ b/Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La propriété @code{shortest-duration-space} peut devoir être retouchée pour ajuster l'apparence des chutes ou sauts. diff --git a/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc b/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc new file mode 100644 index 0000000000..e6f1575b17 --- /dev/null +++ b/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'alignement horizontal des noms d'instrument se gère à l'aide de la +propriété @code{Staff.InstrumentName #'self-alignment-X}. Les variables +@code{indent} et @code{short-indent}, attachées au bloc @code{\\layout}, +déterminent l'espace alloué à l'alignement des noms d'instrument, +respectivement dans leurs formes développée et abrégée. + +" + doctitlefr = "Alignement des noms d'instrument" diff --git a/Documentation/fr/texidocs/aligning-bar-numbers.texidoc b/Documentation/fr/texidocs/aligning-bar-numbers.texidoc index e10b0fcac1..bb7aa8d1d4 100644 --- a/Documentation/fr/texidocs/aligning-bar-numbers.texidoc +++ b/Documentation/fr/texidocs/aligning-bar-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les numéros de mesure s'alignent en principe sur la droite de l'objet dont ils dépendent. C'est normalement le coin gauche de la portée ou, diff --git a/Documentation/fr/texidocs/aligning-marks-with-various-notation-objects.texidoc b/Documentation/fr/texidocs/aligning-marks-with-various-notation-objects.texidoc index a69a72f022..de7506caca 100644 --- a/Documentation/fr/texidocs/aligning-marks-with-various-notation-objects.texidoc +++ b/Documentation/fr/texidocs/aligning-marks-with-various-notation-objects.texidoc @@ -1,23 +1,17 @@ -%% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les indications textuelles peuvent s'aligner par rapport à d'autres objets que des barres de mesure, tels que @code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar}, -@code{left-edge}, @code{key-cancellation}, @code{key-signature}, ou +@code{left-edge}, @code{key-cancellation}, @code{key-signature} ou @code{time-signature}. - - -Par défaut, les indications textuelles sont alignées avec le milieu -des objets de notation. Bien entendu, vous pouvez modifier les -propriétés des objets en question pour obtenir un autre -résultat comme l'illustre la deuxième ligne de l'exemple. Dans le cas -de portées multiples, ces réglages doivent être faits pour chacune -d'entre elles. - - +Par défaut, les indications textuelles sont alignées sur le milieu +des objets de notation. Bien entendu, vous pouvez modifier les +propriétés des objets en question pour obtenir un autre résultat comme +l'illustre la deuxième ligne de l'exemple. Dans le cas de portées +multiples, ces réglages doivent être faits pour chacune d'entre elles. " - doctitlefr = "Alignement des indications par rapport à divers objets -de notation" + doctitlefr = "Alignement des indications par rapport à divers objets de notation" diff --git a/Documentation/fr/texidocs/aligning-objects-created-with-the--mark-command.texidoc b/Documentation/fr/texidocs/aligning-objects-created-with-the--mark-command.texidoc new file mode 100644 index 0000000000..42a07db708 --- /dev/null +++ b/Documentation/fr/texidocs/aligning-objects-created-with-the--mark-command.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Par défaut, la commande @code{\\mark} centre les objets sur la barre de +mesure. Ce comportement peut se modifier pour un alignement par la +gauche ou par la droite. + +" + doctitlefr = "Alignement des objets créés par la commande @code{\\mark}" diff --git a/Documentation/fr/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc b/Documentation/fr/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc index 1316257d82..fcd0da84be 100644 --- a/Documentation/fr/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc +++ b/Documentation/fr/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'empilement des indications de doigté se fait par défaut à l'extérieur de la portée. Néanmoins, il est possible d'annuler ce comportement. diff --git a/Documentation/fr/texidocs/altering-the-length-of-beamed-stems.texidoc b/Documentation/fr/texidocs/altering-the-length-of-beamed-stems.texidoc new file mode 100644 index 0000000000..7b5fca0b22 --- /dev/null +++ b/Documentation/fr/texidocs/altering-the-length-of-beamed-stems.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La hauteur de hampe des notes ligaturées est gérée par la sous-propriété +@code{beamed-lengths} des @code{details} de l'objet @code{Stem}. +Lorsqu'elle ne comporte qu'une seule valeur, cette hauteur s'appliquera +à toutes les hampes. En présence de plusieurs arguments, le premier +affectera les crochet, le second les doubles croches, et ainsi de suite. +Le dernier argument s'appliquera aussi aux notes de plus courte durée. +Les arguments peuvent être des valeurs décimales. + +" + doctitlefr = "Modification de la hauteur de hampes ligaturées" diff --git a/Documentation/fr/texidocs/alternative-bar-numbering.texidoc b/Documentation/fr/texidocs/alternative-bar-numbering.texidoc new file mode 100644 index 0000000000..a3d5c3228f --- /dev/null +++ b/Documentation/fr/texidocs/alternative-bar-numbering.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Deux méthodes alternatives vous permettent de gérer la numérotation des +mesures en cas de reprises. + +" + doctitlefr = "Numérotation des mesures et alternatives" diff --git a/Documentation/fr/texidocs/alternative-breve-note.texidoc b/Documentation/fr/texidocs/alternative-breve-note.texidoc new file mode 100644 index 0000000000..cfb53d45dd --- /dev/null +++ b/Documentation/fr/texidocs/alternative-breve-note.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment obtenir une brève -- aussi appelée note carée -- +flanquée de deux barres verticales, au lieu d'une comme habituellement. + +" + doctitlefr = "Brève alternative, avec deux barres verticales" diff --git a/Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc b/Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc index 16003263a2..c1ed0a3015 100644 --- a/Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc +++ b/Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Si plusieurs voix se trouvent sur une même portée, on peut attribuer le graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir diff --git a/Documentation/fr/texidocs/ambitus.texidoc b/Documentation/fr/texidocs/ambitus.texidoc new file mode 100644 index 0000000000..bd12af4223 --- /dev/null +++ b/Documentation/fr/texidocs/ambitus.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un @emph{ambitus} indique la tessiture, autrement dit les hauteurs +extrêmes d'une voix. + +Seules seront affichées les altérations non comprises dans l'armure. +Les objets @code{AmbitusNoteHead} peuvent avoir des lignes +supplémentaires. + +" + doctitlefr = "Ambitus" diff --git a/Documentation/fr/texidocs/analysis-brackets-above-the-staff.texidoc b/Documentation/fr/texidocs/analysis-brackets-above-the-staff.texidoc new file mode 100644 index 0000000000..d8bc45e089 --- /dev/null +++ b/Documentation/fr/texidocs/analysis-brackets-above-the-staff.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les crochets d'analyse viennent par défaut se positionner au-dessous de +la portée. L'exemple suivant vous indique comment les faire apparaître +en surplomb de la portée. + +" + doctitlefr = "Crochets d'analyse au-dessus de la portée" diff --git a/Documentation/fr/texidocs/ancient-fonts.texidoc b/Documentation/fr/texidocs/ancient-fonts.texidoc index 7451c0a387..a1c217e12c 100644 --- a/Documentation/fr/texidocs/ancient-fonts.texidoc +++ b/Documentation/fr/texidocs/ancient-fonts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr =" Voici comment graver la plupart, sinon tous les symboles que LilyPond prend en charge en matière de musique ancienne. diff --git a/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc b/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc index 73084296cb..8ca9752ad7 100644 --- a/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc +++ b/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Voici comment vous pourriez transcrire du grégorien. Pour mémoire, il -n'y a en grégorien ni de découpage en mesure, ni de hampe ; seules +n'y a en grégorien ni de découpage en mesure, ni de hampe@tie{}; seules sont utilisées des têtes de note blanches ou noires, ainsi que des signes spécifiques permettant d'indiquer des silences de différentes durées. diff --git a/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc b/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc index 12ca456601..9184ae7131 100644 --- a/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc +++ b/Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet d'indiquer la tonalité et le tempo d'origine. Si les musiciens sont de -nos jours habitués aux barres de mesures qui présentent la structure +nos jours habitués aux barres de mesure qui présentent la structure rythmique d'une œuvre, elles n'étaient pas en vigueur à l'époque où ces pièces ont été composées, d'autant plus que la @qq{métrique} pouvait changer au fil des notes. Un compromis consiste à imprimer des barres diff --git a/Documentation/fr/texidocs/ancient-time-signatures.texidoc b/Documentation/fr/texidocs/ancient-time-signatures.texidoc new file mode 100644 index 0000000000..6b2b542fde --- /dev/null +++ b/Documentation/fr/texidocs/ancient-time-signatures.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La métrique peut s'imprimer dans un style ancien. + +" + doctitlefr = "Métrique ancienne" + diff --git a/Documentation/fr/texidocs/anglican-psalm-template.texidoc b/Documentation/fr/texidocs/anglican-psalm-template.texidoc index 89b1ec477e..4531830492 100644 --- a/Documentation/fr/texidocs/anglican-psalm-template.texidoc +++ b/Documentation/fr/texidocs/anglican-psalm-template.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: 092f85605dcea69efff5ef31de4ff100346d6ef8 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Cet exemple illustre la manière de présenter un cantique tel qu'on le trouve dans l'église anglicane. Vous noterez comment sont ajoutés les diff --git a/Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc b/Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc index 0b7df88212..ea90115b48 100644 --- a/Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc +++ b/Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc @@ -1,20 +1,19 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La propriété @code{shapeNoteStyles} permet d'affecter un profil particulier à chaque degré de la gamme -- à partir de l'armure ou de la propriété @code{tonic}. Ses valeurs sont constituées d'une liste de symboles, qu'il s'agisse de formes géométriques (@code{triangle}, -@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs +@code{cross} ou @code{xcircle}) ou basés sur la tradition des graveurs américains (avec quelques noms de note latins). -LilyPond dispose de deux raccourcis, @code{\aikenHeads} et -@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de +LilyPond dispose de deux raccourcis, @code{\\aikenHeads} et +@code{\\sacredHarpHeads}, permettant de reproduire d'anciens recueils de chansons américaines. L'exemple suivant montre plusieurs manières de profiler les têtes de -note, ainsi que la capacité de trnsposer tout en respectant la fonction +note, ainsi que la capacité de transposer tout en respectant la fonction harmonique de chaque note dans la gamme. " doctitlefr = "Profilage des notes selon leur degré dans la gamme" - diff --git a/Documentation/fr/texidocs/arabic-improvisation.texidoc b/Documentation/fr/texidocs/arabic-improvisation.texidoc new file mode 100644 index 0000000000..c4e2ce9cbc --- /dev/null +++ b/Documentation/fr/texidocs/arabic-improvisation.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsque les improvisations ou @emph{taqasim} sont temporairement libres, +la métrique peut ne pas apparaître, auquel cas on utilisera un +@code{\\cadenzaOn}. Les altérations accidentelles devront alors être +répétées en raison de l'absence de barre de mesure. Voici comment +pourrait débuter une improvisation de @emph{hijaz}. + +" + doctitlefr = "Improvisation en musique arabe" + diff --git a/Documentation/fr/texidocs/asymmetric-slurs.texidoc b/Documentation/fr/texidocs/asymmetric-slurs.texidoc new file mode 100644 index 0000000000..e4cc620a23 --- /dev/null +++ b/Documentation/fr/texidocs/asymmetric-slurs.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une liaison peut adopter une courbe asymétrique afin de s'adapter au +mieux à la ligne mélodique. + +" + doctitlefr = "Liaison asymétrique" diff --git a/Documentation/fr/texidocs/automatic-beam-subdivisions.texidoc b/Documentation/fr/texidocs/automatic-beam-subdivisions.texidoc new file mode 100644 index 0000000000..14d856f63f --- /dev/null +++ b/Documentation/fr/texidocs/automatic-beam-subdivisions.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Dès lors que la propriété @code{subdivideBeams} aura été activée, une +ligature sera subdivisée selon les préceptes de @code{beatLength}. + +" + doctitlefr = "Subdivision de ligatures automatiques" diff --git a/Documentation/fr/texidocs/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.texidoc b/Documentation/fr/texidocs/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.texidoc deleted file mode 100644 index 04556f52a0..0000000000 --- a/Documentation/fr/texidocs/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.texidoc +++ /dev/null @@ -1,11 +0,0 @@ -%% Translation of GIT committish: 27047b46391c50161f4937699af6200cc156c753 - texidocfr = " -Dans une métrique simple comme 4/4 ou 2/2, les croches sont ligaturées -par défaut en deux groupes de quatre. - -En utilisant une macro qui modifie le comportement des ligatures -automatiques, voici comment obtenir des ligatures basées sur la valeur -d'une noire. - -" - doctitlefr = "Ligature automatique deux par deux, aussi bien en 4/4 qu'en 2/2" diff --git a/Documentation/fr/texidocs/automatically-change-durations.texidoc b/Documentation/fr/texidocs/automatically-change-durations.texidoc new file mode 100644 index 0000000000..142a19cfaa --- /dev/null +++ b/Documentation/fr/texidocs/automatically-change-durations.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +@code{shiftDurations} permet de modifier la longueur des notes d'un +morceau. Cette instruction prend deux arguments@tie{}: un coefficient +d'échelonnement (une puissance de deux) et un nombre de points +d'augmentation (entier positif). + +" + doctitlefr = "Changement automatique des durées" diff --git a/Documentation/fr/texidocs/avoiding-collisions-with-chord-fingerings.texidoc b/Documentation/fr/texidocs/avoiding-collisions-with-chord-fingerings.texidoc new file mode 100644 index 0000000000..fe30356649 --- /dev/null +++ b/Documentation/fr/texidocs/avoiding-collisions-with-chord-fingerings.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Doigtés et numéros de corde, lorsque affectés à des notes individuelles, +évitent les hampes et ligatures. Cette fonctionnalité n'est pas activée +par défaut en ce qui concernes les notes appartenant à un accord. Voici +comment mettre en place la dérogation appropriée en pareil cas. + +" + doctitlefr = "Évitement de collision des doigtés d'un accord" diff --git a/Documentation/fr/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc b/Documentation/fr/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc new file mode 100644 index 0000000000..02646c1674 --- /dev/null +++ b/Documentation/fr/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment imprimer un accord développé sur une mesure ou une demie +mesure (décommenter la ligne appropriée). + +La syntaxe est @code{\\bbarre #\"@var{numéro de fret}\" @{ notes @} }. + +" + doctitlefr = "Notation d'accords barré développé (avec extension de texte)" diff --git a/Documentation/fr/texidocs/beam-endings-in-score-context.texidoc b/Documentation/fr/texidocs/beam-endings-in-score-context.texidoc index fbb0e9db38..50e4edb9e9 100644 --- a/Documentation/fr/texidocs/beam-endings-in-score-context.texidoc +++ b/Documentation/fr/texidocs/beam-endings-in-score-context.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les règles de ligatures définies au niveau du contexte @code{Score} +Les règles de ligature définies au niveau du contexte @code{Score} s'appliqueront à toutes les portées. Il est toutefois possible de moduler au niveau @code{Staff} ou @code{Voice}@tie{}: diff --git a/Documentation/fr/texidocs/beam-grouping-in-7-8-time.texidoc b/Documentation/fr/texidocs/beam-grouping-in-7-8-time.texidoc index 98a75239a6..ac526e1feb 100644 --- a/Documentation/fr/texidocs/beam-grouping-in-7-8-time.texidoc +++ b/Documentation/fr/texidocs/beam-grouping-in-7-8-time.texidoc @@ -1,5 +1,5 @@ -%% Translation of GIT committish: 548076f550a2b7fb09f1260f0e5e2bb028ad396c -texidocfr = " +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " Aucune règle de ligature automatique n'est disponible pour une mesure à 7/8. Il faudra donc, en pareil cas, définir vous-même les règles de regroupement. Pour, par exemple, ligaturer sur la base de 2/8-3/8-2/8, diff --git a/Documentation/fr/texidocs/beams-across-line-breaks.texidoc b/Documentation/fr/texidocs/beams-across-line-breaks.texidoc index af47ea4039..e1849e3943 100644 --- a/Documentation/fr/texidocs/beams-across-line-breaks.texidoc +++ b/Documentation/fr/texidocs/beams-across-line-breaks.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Il est normalement impensable qu'un saut de ligne tombe au milieu d'une ligature. LilyPond permet néanmoins de l'obtenir. diff --git a/Documentation/fr/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc b/Documentation/fr/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc new file mode 100644 index 0000000000..4b5243a13d --- /dev/null +++ b/Documentation/fr/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'instruction @code{\\whiteout} intercale un rectangle blanc contenant +un @emph{markup}. Dans la mesure où les lignes de la portée sont à un +niveau inférieur à la plupart des autres objets graphiques, ce cache ne +devrait pas masquer d'autres éléments. + +" + doctitlefr = "Blanchiment de lignes de portée avec la commande \\whiteout" diff --git a/Documentation/fr/texidocs/book-parts.texidoc b/Documentation/fr/texidocs/book-parts.texidoc new file mode 100644 index 0000000000..d137310189 --- /dev/null +++ b/Documentation/fr/texidocs/book-parts.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +@code{\\bookpart} permet de découper un ouvrage en plusieurs parties. +La dernière page de chaque partie peut être affectée d'un +@code{ragged-last-bottom}. Les routines de formatage font la +distinction entre les @emph{markups} d'entête et de pied de page selon +qu'ils se rattachent à une partie ou bien à l'ouvrage entier. + +" + doctitlefr = "Partitionnement d'un ouvrage" diff --git a/Documentation/fr/texidocs/breathing-signs.texidoc b/Documentation/fr/texidocs/breathing-signs.texidoc new file mode 100644 index 0000000000..21d6d0810d --- /dev/null +++ b/Documentation/fr/texidocs/breathing-signs.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les indications de respiration sont disponibles sous différentes +formes : virgule (par défaut), trait, en V et @qq{voie de chemin de fer} +(césure). + +" + doctitlefr = "Signes de respiration" diff --git a/Documentation/fr/texidocs/broken-crescendo-hairpin.texidoc b/Documentation/fr/texidocs/broken-crescendo-hairpin.texidoc new file mode 100644 index 0000000000..83b2919f2b --- /dev/null +++ b/Documentation/fr/texidocs/broken-crescendo-hairpin.texidoc @@ -0,0 +1,19 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une portion d'un soufflet de crescendo peut être rendue invisible. +Il suffit pour cela de dessiner un rectangle par dessus cette partie, ce +qui aura pour effet de la rendre invisible. Le rectangle est défini par +un @emph{markup} contenant du code PostScript. + +La taille et le positionnement de ce @emph{markup} sont ajustables grâce +à certaiins composants du code PostScript@tie{}: le nombre précédant +@code{setgray} donnera du gris s'il est inérieur à@tie{}1@tie{}; les +deux nombres précédant @code{scale} définissent la largeur et la hauteur +du rectangle@tie{}; les deux nombres précédant @code{translate} +modifient le point d'ancrage (en abscisse et en ordonnée) du rectangle. + +Le soufflet doit se trouver à un niveau inférieur à celui du @emph{markup} +afin que le dessin du rectangle puisse effectivement le recouvrir. + +" + doctitlefr = "Soufflet de crescendo partiellement interrompu" diff --git a/Documentation/fr/texidocs/caesura-railtracks-with-fermata.texidoc b/Documentation/fr/texidocs/caesura-railtracks-with-fermata.texidoc new file mode 100644 index 0000000000..8021a0a940 --- /dev/null +++ b/Documentation/fr/texidocs/caesura-railtracks-with-fermata.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une césure peut parfois s'indiquer par une double respiration surmontée +d'un point d'orgue. Le code ci-dessous permet d'obtenir la combinaison +répondant à cette esthétique. + +" + doctitlefr = "Césure en forme de \"voie de chemin de fer\" avec point d'orgue" diff --git a/Documentation/fr/texidocs/center-text-below-hairpin-dynamics.texidoc b/Documentation/fr/texidocs/center-text-below-hairpin-dynamics.texidoc new file mode 100644 index 0000000000..9d2a120db8 --- /dev/null +++ b/Documentation/fr/texidocs/center-text-below-hairpin-dynamics.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La fonction comprise dans l'extrait suivant permet d'ajouter du texte +-- comme @qq{molto} o @qq{poco} -- en dessous d'un soufflet de +(de)crescendo. Cet exemple présente aussi comment, à l'aide de code +Scheme, influencer la manière dont un objet est normalement imprimé. + +" + doctitlefr = "Texte centré sous un soufflet" diff --git a/Documentation/fr/texidocs/centering-markup-on-note-heads-automatically.texidoc b/Documentation/fr/texidocs/centering-markup-on-note-heads-automatically.texidoc new file mode 100644 index 0000000000..38ed7627f3 --- /dev/null +++ b/Documentation/fr/texidocs/centering-markup-on-note-heads-automatically.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Des raisons techniques sont à l'origine de la difficulté de centrer des +scripts textuels attachés à des têtes de note, ce qui n'est pas le cas +des articulations. + +Plutôt que de procéder par tâtonnement, voici comment élaborer un +graveur en Scheme, chargé de redéfinir le parent horizontal de chaque +@emph{markup} sur un empilement de notes (un @code{NoteColumn}). Il +permet aussi au texte de suivre les têtes ayant été décalées par un +@code{force-hshift}. +" + doctitlefr = "Centrage automatique d'un @emph{markup} sur la tête de note" diff --git a/Documentation/fr/texidocs/changing--flageolet-mark-size.texidoc b/Documentation/fr/texidocs/changing--flageolet-mark-size.texidoc index aaaa147eea..edd4359915 100644 --- a/Documentation/fr/texidocs/changing--flageolet-mark-size.texidoc +++ b/Documentation/fr/texidocs/changing--flageolet-mark-size.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: 5b980ee07bba23d3633de1d371fb2926f164e295 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Il est possible de rapetisser le cercle d'un @code{\\flageolet} grâce à une fonction Scheme. diff --git a/Documentation/fr/texidocs/changing-a-single-notes-size-in-a-chord.texidoc b/Documentation/fr/texidocs/changing-a-single-notes-size-in-a-chord.texidoc new file mode 100644 index 0000000000..5a685f2e23 --- /dev/null +++ b/Documentation/fr/texidocs/changing-a-single-notes-size-in-a-chord.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La commande @code{\\tweak} permet de modifier la propriété +@code{font-size} d'une note particulière d'un accord. + +Il s'agit de placer, à l'intérieur même de l'accord (dans la +construction @code{<@tie{}>}) et avant la note considérée, +l'instruction @code{\\tweak} suivie de @code{#'font-size} et de définir +la taille voulue -- comme @code{#-2} pour une petite tête. + +" + doctitlefr = "Modification de la taille d'une note particulière d'un accord" diff --git a/Documentation/fr/texidocs/changing-beam-knee-gap.texidoc b/Documentation/fr/texidocs/changing-beam-knee-gap.texidoc index 71a4ebb633..f53fdb767a 100644 --- a/Documentation/fr/texidocs/changing-beam-knee-gap.texidoc +++ b/Documentation/fr/texidocs/changing-beam-knee-gap.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -LilyPond insère automatiquement des ligatures coudées --- certaines -hampes vers le haut, d'autres vers le bas --- lorsqu'il détecte un -intervalle important entre des têtes de notes. Ce comportement peut être -changé par l'intermédiaire de l'objet @code{auto-knee-gap} --- défini -par défaut à @samp{5,5} espace, plus la largeur et la pente de la +LilyPond insère automatiquement des ligatures coudées -- certaines +hampes vers le haut, d'autres vers le bas -- lorsqu'il détecte un +intervalle important entre des têtes de notes. Ce comportement peut +être changé par l'intermédiaire de l'objet @code{auto-knee-gap} -- +défini par défaut à @samp{5,5} espace, plus la largeur et la pente de la ligature en question. " diff --git a/Documentation/fr/texidocs/changing-chord-separator.texidoc b/Documentation/fr/texidocs/changing-chord-separator.texidoc new file mode 100644 index 0000000000..12cac81652 --- /dev/null +++ b/Documentation/fr/texidocs/changing-chord-separator.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le séparateur de termes d'un chiffrage peut adopter n'importe quelle +forme à l'aide d'un @emph{markup}. + +" + doctitlefr = "Personnalisation du séparateur d'accords" diff --git a/Documentation/fr/texidocs/changing-form-of-multi-measure-rests.texidoc b/Documentation/fr/texidocs/changing-form-of-multi-measure-rests.texidoc index d084a5cf6e..9a9bae1310 100644 --- a/Documentation/fr/texidocs/changing-form-of-multi-measure-rests.texidoc +++ b/Documentation/fr/texidocs/changing-form-of-multi-measure-rests.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 -texidocfr = " +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur -la portée des @qq{ silences d'église } -- @emph{Kirchenpause} en +la portée des @qq{silences d'église} -- @emph{Kirchenpause} en allemand -- et qui sont une simple suite de rectangles. La propriété -@code{expand-limit} permet d'obtenir un silence unique : +@code{expand-limit} permet d'obtenir un silence unique@tie{}: " doctitlefr = "Modifier l'apparence d'un silence multi-mesures" diff --git a/Documentation/fr/texidocs/changing-fret-orientations.texidoc b/Documentation/fr/texidocs/changing-fret-orientations.texidoc new file mode 100644 index 0000000000..bf01bd49ec --- /dev/null +++ b/Documentation/fr/texidocs/changing-fret-orientations.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les diagrammes de fret peuvent s'orienter de trois manières différentes. +Ils s'aligneront par défaut sur la corde du haut ou le sommet du fret. + +" + doctitlefr = "Orientation des diagrammes de fret" + diff --git a/Documentation/fr/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc b/Documentation/fr/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc index da9f872cf6..cf28d3bbda 100644 --- a/Documentation/fr/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc +++ b/Documentation/fr/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: d7cf09411ee80eaf0092af0aa532de64c0c6248e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Lorsque LilyPond génère un fichier MIDI, chaque portée sera par défaut affectée à un canal, quel que soit le nombre de voix qu'elle contient. diff --git a/Documentation/fr/texidocs/changing-partcombine-texts.texidoc b/Documentation/fr/texidocs/changing-partcombine-texts.texidoc index c9eba93ffd..ba33fe8f56 100644 --- a/Documentation/fr/texidocs/changing-partcombine-texts.texidoc +++ b/Documentation/fr/texidocs/changing-partcombine-texts.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Lorsque vous regroupez automatiquement des parties, vous pouvez modifier le texte qui sera affiché pour les solos et pour les parties à -l'unisson : +l'unisson@tie{}: " doctitlefr = "Modification des indications de parties combinées" diff --git a/Documentation/fr/texidocs/changing-properties-for-individual-grobs.texidoc b/Documentation/fr/texidocs/changing-properties-for-individual-grobs.texidoc new file mode 100644 index 0000000000..a00229bafe --- /dev/null +++ b/Documentation/fr/texidocs/changing-properties-for-individual-grobs.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La commande @code{\\applyOutput} permet de personnaliser n'importe quel +objet de rendu. Elle requiert une fonction Scheme à trois arguments. + +" + doctitlefr = "Modification des propriétés d'objets particuliers" diff --git a/Documentation/fr/texidocs/changing-stanza-fonts.texidoc b/Documentation/fr/texidocs/changing-stanza-fonts.texidoc new file mode 100644 index 0000000000..9fa19a4dd7 --- /dev/null +++ b/Documentation/fr/texidocs/changing-stanza-fonts.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Chaque couplet peut disposer de sa propre fonte, y compris son numéro. + +" + doctitlefr = "Changement de fontes des couplets" diff --git a/Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc b/Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc index a45b6657a9..9ffeb1f76d 100644 --- a/Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc +++ b/Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le texte par défaut des crescendos et decrescendos se change en modifiant les propriétés de contexte @code{crescendoText} et -@code{decrescendoText}. L'aspect de la ligne d'extension est fonction +@code{decrescendoText}. L'aspect de la ligne d'extension est fonction de la propriété @code{'style} du @code{DynamicTextSpanner}. Sa valeur par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles, comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}. diff --git a/Documentation/fr/texidocs/changing-the-ambitus-gap.texidoc b/Documentation/fr/texidocs/changing-the-ambitus-gap.texidoc index 3d40d129a2..2e14cfa4de 100644 --- a/Documentation/fr/texidocs/changing-the-ambitus-gap.texidoc +++ b/Documentation/fr/texidocs/changing-the-ambitus-gap.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 31097723b2b816696ad61696630a80ff17a39557 - texidocfr = "L'affichage d'un @emph{ambitus} peut s'affiner pour - répondre à vos préférences en matière d'esthétique. +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'affichage d'un @emph{ambitus} peut s'affiner pour répondre à vos +préférences en matière d'esthétique. " - doctitlefr = "Réglage de l'affichage d'un ambitus" diff --git a/Documentation/fr/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc b/Documentation/fr/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc new file mode 100644 index 0000000000..8157437348 --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une liaison d'articulation peut se présenter sous la forme d'un trait +continu ou discontinu, voire en pointillé. + +" + doctitlefr = "Modification de l'aspect des liaisons d'articulation" diff --git a/Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc b/Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc index 959ce40ee1..7311de5938 100644 --- a/Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc +++ b/Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " On peut choisir le glyphe imprimé par cette commande, en modifiant la propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter diff --git a/Documentation/fr/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc b/Documentation/fr/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc new file mode 100644 index 0000000000..accf560b79 --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +LilyPond adpote par défaut la dénomination anglaise pour le nom et +chiffrage des accords. L'instruction @code{\\germanChords} permet +d'afficher @code{H} et @code{B} en lieu et place de @code{B} et +@code{Bes}. L'instruction @code{\\semiGermanChords} leur substituera +@code{H} et @code{Bb}. + +" + doctitlefr = "Adoption de la dénomination germanique ou semi-germanique des accords" diff --git a/Documentation/fr/texidocs/changing-the-default-text-font-family.texidoc b/Documentation/fr/texidocs/changing-the-default-text-font-family.texidoc new file mode 100644 index 0000000000..b09432305b --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-default-text-font-family.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les familles de fontes par défaut pour le texte peuvent être changées à +l'aide de la fonction @code{make-pango-font-tree}. + +" + doctitlefr = "Changement des fontes textuelles par défaut" diff --git a/Documentation/fr/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc b/Documentation/fr/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc new file mode 100644 index 0000000000..f18bef395b --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +@code{staffLineLayoutFunction} permet de changer le positionnement des +notes. Dans cet exemple, la valeur qui lui est attribuée -- +@code{ly:pitch-semitones} -- génère une gamme chromatique où l'écart +entre chaque ligne et interligne de la portée est ramené au demi ton. + +" + doctitlefr = "Modification de l'intervalle des lignes de la portée" diff --git a/Documentation/fr/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc b/Documentation/fr/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc index a9c81e132f..c709a52c01 100644 --- a/Documentation/fr/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc +++ b/Documentation/fr/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - - texidocfr = "Voici comment modifier le nombre de points d'augmentation +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment modifier le nombre de points d'augmentation affectés à une note en particulier. " diff --git a/Documentation/fr/texidocs/changing-the-number-of-lines-in-a-staff.texidoc b/Documentation/fr/texidocs/changing-the-number-of-lines-in-a-staff.texidoc new file mode 100644 index 0000000000..09187d5008 --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-number-of-lines-in-a-staff.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le nombre de lignes d'un portée se modifie par adaptation de la +propriété @code{line-count} du @code{StaffSymbol}. + +" + doctitlefr = "Modification du nombre de lignes de la portée" diff --git a/Documentation/fr/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc b/Documentation/fr/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc new file mode 100644 index 0000000000..e13afe5ff7 --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +On peut choisir d'imprimer les altérations et signes plus aussi bien +avant qu'après les chiffres, en réglant les propriétés +@code{figuredBassAlterationDirection} et +@code{figuredBassPlusDirection}. + +" + doctitlefr = "Emplacement des altération en basse continue" diff --git a/Documentation/fr/texidocs/changing-the-size-of-woodwind-diagrams.texidoc b/Documentation/fr/texidocs/changing-the-size-of-woodwind-diagrams.texidoc index 0c0b9763f0..084483a344 100644 --- a/Documentation/fr/texidocs/changing-the-size-of-woodwind-diagrams.texidoc +++ b/Documentation/fr/texidocs/changing-the-size-of-woodwind-diagrams.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La taille et l'épaisseur des diagrammes de doigté pour bois est modifiable à souhait. " - doctitlefr = "Modification de la taille d'un diagramme pour bois" diff --git a/Documentation/fr/texidocs/changing-the-staff-size.texidoc b/Documentation/fr/texidocs/changing-the-staff-size.texidoc new file mode 100644 index 0000000000..f03e4bbb4f --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-staff-size.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Bien que le meilleur moyen de définir la taille des portées consiste à +utiliser @code{#(set-global-staff-size xx)}, une portée en particulier +peut se redimensionner en affectant d'un coefficient ses propriétés +@code{'staff-space} et @code{fontSize}. + +" + doctitlefr = "Modification de la taille d'une portée" diff --git a/Documentation/fr/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc b/Documentation/fr/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc index a0216a49e5..71adaa4bf3 100644 --- a/Documentation/fr/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc +++ b/Documentation/fr/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Vous pouvez indiquer un changement de tempo pour le fichier MIDI sans pour autant l'imprimer. Il suffit alors de le rendre invisible aux diff --git a/Documentation/fr/texidocs/changing-the-text-for-sustain-markings.texidoc b/Documentation/fr/texidocs/changing-the-text-for-sustain-markings.texidoc new file mode 100644 index 0000000000..fd3097d702 --- /dev/null +++ b/Documentation/fr/texidocs/changing-the-text-for-sustain-markings.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +@code{Staff.pedalSustainStrings} permet de définir le texte affiché pour +les instructions de pédale. Les seuls caractères autorisés sont les +glyphes particuliers de pédale, comme vous pouvez le constater ici. + +" + doctitlefr = "Modification du texte des indications de pédale" diff --git a/Documentation/fr/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc b/Documentation/fr/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc deleted file mode 100644 index 9f015aea2e..0000000000 --- a/Documentation/fr/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc +++ /dev/null @@ -1,12 +0,0 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -La commande @code{\\time} gère les propriétés -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} -et @code{measureLength} dans le contexte @code{Timing}, normalement -rattaché à @code{Score}. Le fait de modifier la valeur de -@code{timeSignatureFraction} aura pour effet de changer l'apparence du -symbole affiché sans pour autant affecter les autres propriétés de la -métrique : - -" - doctitlefr = "Changement de métrique sans affecter les règles de ligature" diff --git a/Documentation/fr/texidocs/changing-the-tuplet-number.texidoc b/Documentation/fr/texidocs/changing-the-tuplet-number.texidoc index 3c00ba6d77..e2235c094a 100644 --- a/Documentation/fr/texidocs/changing-the-tuplet-number.texidoc +++ b/Documentation/fr/texidocs/changing-the-tuplet-number.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'apparence du chiffre est déterminée par la propriété @code{text} dans @code{TupletNumber}. La valeur par défaut imprime seulement le diff --git a/Documentation/fr/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc b/Documentation/fr/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc new file mode 100644 index 0000000000..581f6adc1c --- /dev/null +++ b/Documentation/fr/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La propriété @code{measureLength}, conjointement avec +@code{measurePosition}, détermine l'endroit où une barre de mesure est +requise. L'utilisation d'un @code{\\scaleDurations} a ceci +d'inconvénient que l'échelonnement des durées rend compliqués les +changements de métrique. Il est nécessaire en pareil cas de définir +manuellement @code{measureLength}, avec un appel à +@code{ly:make-moment}. Le second argument devra être identique au +deuxième argument de @code{\\scaleDurations}. + +" + doctitlefr = "Modification de la métrique au sein d'un fragment polymétrique à l'aide de @code{\\scaleDurations}" diff --git a/Documentation/fr/texidocs/chant-or-psalms-notation.texidoc b/Documentation/fr/texidocs/chant-or-psalms-notation.texidoc index f7ac3ac810..cb6ea4a2da 100644 --- a/Documentation/fr/texidocs/chant-or-psalms-notation.texidoc +++ b/Documentation/fr/texidocs/chant-or-psalms-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce style de notation permet d'indiquer la mélodie d'une psalmodie lorsque les strophes sont de longueur inégale. diff --git a/Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc b/Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc new file mode 100644 index 0000000000..ec1f63bbc3 --- /dev/null +++ b/Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un glissando sur des accords s'indique dans un @code{TabStaff} de la +même manière que dans un @code{Staff}, à ceci près que nous aurons +besoin des numéros de corde afin de déterminer correctement les frets +d'arrivée. + +" + doctitlefr = "Glissando d'accords et tablature" + diff --git a/Documentation/fr/texidocs/chord-name-exceptions.texidoc b/Documentation/fr/texidocs/chord-name-exceptions.texidoc new file mode 100644 index 0000000000..9d19b83652 --- /dev/null +++ b/Documentation/fr/texidocs/chord-name-exceptions.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Il est possible de créer votre propre modèle de chiffrages en +réglant la propriété @code{chordNameExceptions}. + +" + doctitlefr = "Modèles de chiffrage d'accords" diff --git a/Documentation/fr/texidocs/chord-name-major7.texidoc b/Documentation/fr/texidocs/chord-name-major7.texidoc new file mode 100644 index 0000000000..1a625257b3 --- /dev/null +++ b/Documentation/fr/texidocs/chord-name-major7.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La représentation d'un accord de septième majeure se gère par le +@code{majorSevenSymbol}. + +" + doctitlefr = "Chiffrage d'un maj7" diff --git a/Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc b/Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc new file mode 100644 index 0000000000..20a4179723 --- /dev/null +++ b/Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Vous pouvez opter pour n'imprimer les diagrammes de fret qu'à l'occasion +d'un changement d'accord ou de saut de ligne. + +" + doctitlefr = "Changement d'accord et diagramme de fret" + diff --git a/Documentation/fr/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc b/Documentation/fr/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc new file mode 100644 index 0000000000..420a8a5d4d --- /dev/null +++ b/Documentation/fr/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les clefs peuvent être transposées d'un intervalle différent de l'octave. + +" + doctitlefr = "Transposition arbitraire d'une clef" diff --git a/Documentation/fr/texidocs/clip-systems.texidoc b/Documentation/fr/texidocs/clip-systems.texidoc new file mode 100644 index 0000000000..c5e852c54e --- /dev/null +++ b/Documentation/fr/texidocs/clip-systems.texidoc @@ -0,0 +1,24 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le code ci-dessous permet de réaliser des découpes à l'emporte pièce, +autrement dit d'extraire des fragments, au sein d'une partition. + +Dans la mesure où le rendu inclus dans ce manuel pourrait ne pas être +des plus évidents, nous vous conseillons de traiter ce fichier +individuellement, avec l'option @code{-dclip-systems}. + +Les fichiers résultants sont de la forme +@samp{base-from-début-to-fin[-compteur].eps}. + + +Lorsque sont inclus le début ou la fin d'un système, l'extraction +comportera les objets rattachés au système, comme le nom d'instrument. + +Les notes d'ornement qui se trouveraient en fin de fragment ne sont pas +incluses. + +La découpe peut couvrir plusieurs systèmes, auquel cas seront générés +plusieurs fichiers EPS. + +" + doctitlefr = "Découpe de systèmes" diff --git a/Documentation/fr/texidocs/clusters.texidoc b/Documentation/fr/texidocs/clusters.texidoc new file mode 100644 index 0000000000..302900b2e9 --- /dev/null +++ b/Documentation/fr/texidocs/clusters.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un cluster indique à l'instrumentiste qu'il doit jouer tout une suite de +sons. + +" + doctitlefr = "Clusters" diff --git a/Documentation/fr/texidocs/coloring-notes-depending-on-their-pitch.texidoc b/Documentation/fr/texidocs/coloring-notes-depending-on-their-pitch.texidoc new file mode 100644 index 0000000000..e5b5bbe5d8 --- /dev/null +++ b/Documentation/fr/texidocs/coloring-notes-depending-on-their-pitch.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les têtes de note peuvent adopter une couleur différenete selon leur +hauteur ou leur nom : la fonction utilisée ici fait même la distinction +entre enharmoniques. + +" + doctitlefr = "Coloration des notes selon leur hauteur" diff --git a/Documentation/fr/texidocs/combining-dynamics-with-markup-texts.texidoc b/Documentation/fr/texidocs/combining-dynamics-with-markup-texts.texidoc new file mode 100644 index 0000000000..ed33a10ff8 --- /dev/null +++ b/Documentation/fr/texidocs/combining-dynamics-with-markup-texts.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Certaines indications de nuance peuvent requérir un complément textuel, +comme @qq{più forte} ou @qq{piano subito}. Elles se réalisent aisément +à l'aide d'un bloc @code{\\markup}. + +" + doctitlefr = "Combinaison de nuance et de texte" diff --git a/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc b/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc index 4dae4ab67e..a740904eaa 100644 --- a/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc +++ b/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'outil de combinaison de parties (la commande @code{\\partcombine}) permet d'avoir deux parties différentes sur une même portée. LilyPond @@ -11,7 +11,7 @@ utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel à de la musique polyphonique standard. -Voici trois moyens d'imprimer deux parties sur un même portée : en +Voici trois moyens d'imprimer deux parties sur une même portée@tie{}: en polyphonie normale, avec @code{\\partcombine} sans indication supplémentaire, et avec @code{\\partcombine} commentée. diff --git a/Documentation/fr/texidocs/compound-time-signatures.texidoc b/Documentation/fr/texidocs/compound-time-signatures.texidoc index 331600da00..e31b5ab402 100644 --- a/Documentation/fr/texidocs/compound-time-signatures.texidoc +++ b/Documentation/fr/texidocs/compound-time-signatures.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Des métriques telles que @qq{5/8} peuvent s'interpréter sous une forme décomposée --- @qq{3/8 + 2/8} par exemple --- qui combine plusieurs métriques. LilyPond est capable de rendre ce type de notation, plus - facile à lire et à interpréter, en imprimant cette métrique composite - et en adaptant les règles de ligature automatique en conséquence. +facile à lire et à interpréter, en imprimant cette métrique composite +et en adaptant les règles de ligature automatique en conséquence. " doctitlefr = "Métrique décomposée" diff --git a/Documentation/fr/texidocs/conducting-signs,-measure-grouping-signs.texidoc b/Documentation/fr/texidocs/conducting-signs,-measure-grouping-signs.texidoc index 57db1cb500..2df93382c2 100644 --- a/Documentation/fr/texidocs/conducting-signs,-measure-grouping-signs.texidoc +++ b/Documentation/fr/texidocs/conducting-signs,-measure-grouping-signs.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les règles de ligature par mesure sont gérées par la propriété @code{beatStructure}. Ses valeurs par défaut sont répertoriées, par -métrique, dans le fichier @code{scm/@/time-@/signature@/-settings@/.scm}. Elles +métrique, dans le fichier @code{scm/time-signature-settings.scm}. Elles sont modifiables grâce à la commande @code{\\set}. La fonction Scheme @code{set-time-signature} permet quant à elle de définir à la fois la métrique et la pulsation. Celle-ci prend trois @@ -10,15 +10,17 @@ arguments@tie{}: le nombre de pulsations, la durée de la pulsation et le regroupement des pulsations dans la mesure. @code{\\time} et @code{set-time-signature} s'appliquent tous deux au contexte @code{Timing}@tie{}; ils ne redéfiniront donc pas les valeurs de -@code{beatStructure} ou @code{baseMoment} lorsque qu'elles sont +@code{beatStructure} ou @code{baseMoment} lorsqu'elles sont modifiées dans un contexte de niveau inférieur comme @code{Voice} par exemple. + Si l'on fait appel au @code{Measure_grouping_engraver}, la fonction @code{set-time-signature} créera aussi des symboles @code{MeasureGrouping}. Ces symboles aident à la lecture des œuvres modernes à la rythmique complexe. Dans l'exemple qui suit, la mesure à 9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux -règles par défaut contenues dans le fichier @w{@code{scm/@/beam@/-settings@/.scm}}. +règles par défaut contenues dans le fichier +@w{@code{scm/beam-settings.scm}}. " doctitlefr = "Signes de direction, signes de sous-groupe" diff --git a/Documentation/fr/texidocs/contemporary-glissando.texidoc b/Documentation/fr/texidocs/contemporary-glissando.texidoc index f6e028b50a..a60d90e421 100644 --- a/Documentation/fr/texidocs/contemporary-glissando.texidoc +++ b/Documentation/fr/texidocs/contemporary-glissando.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " De nos jours, il peut arriver que la note d'arrivée d'un glissando soit absente de la partition. Pour ce faire, il vous faudra utiliser une -cadence et « masquer » la note d'arrivée. +cadence et @qq{masquer} la note d'arrivée. " doctitlefr = "Glissando contemporain" diff --git a/Documentation/fr/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc b/Documentation/fr/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc new file mode 100644 index 0000000000..5a6b0af02e --- /dev/null +++ b/Documentation/fr/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc @@ -0,0 +1,16 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La visibilité des extensions qui se terminent sur la première note après +un saut de ligne est contrôlé par un appel de @code{after-line-breaking} +à la fonction @code{ly:spanner::kill-zero-spanned-time}. + +Pour des objets tels qu'un glissando ou un soufflet, le comportement +par défaut est de ne pas être reportés après un saut de ligne. +L'extension sera donc reprise dès lors que l'appel aura été désactivé. + +Il en va inversement pour les extensions qui, par défaut pour les textes +notamment, sont reportées après un saut de ligne@tie{}; il faudra alors +activer l'appel pour empêcher leur report. + +" + doctitlefr = "Contrôle de la visibilité des extensions d'objet après saut de ligne" diff --git a/Documentation/fr/texidocs/controlling-the-placement-of-chord-fingerings.texidoc b/Documentation/fr/texidocs/controlling-the-placement-of-chord-fingerings.texidoc index 03b0ee54cc..030c5ae653 100644 --- a/Documentation/fr/texidocs/controlling-the-placement-of-chord-fingerings.texidoc +++ b/Documentation/fr/texidocs/controlling-the-placement-of-chord-fingerings.texidoc @@ -1,9 +1,10 @@ -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le positionnement des doigtés peut être contrôlé de manière très précise. Afin que l'orientation soit prise en compte, il est nécessaire d'utiliser -une syntaxe d'accord @code{< >}, même s'il ne s'agit que d'une seule note. +une syntaxe d'accord @code{<@tie{}>}, même s'il ne s'agit que d'une +seule note. + " doctitlefr = "Contrôler la position des doigtés dans un accord" diff --git a/Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc b/Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc index fa3db4484d..2cd07fdc39 100644 --- a/Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc +++ b/Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc @@ -1,14 +1,14 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les symboles s'ordonnent verticalement suivant la propriété -@code{script-priority}. Plus sa valeur numérique est faible, plus le +@code{script-priority}. Plus sa valeur numérique est faible, plus le symbole sera proche de la note. Dans l'exemple suivant, l'objet @code{TextScript} -- le dièse -- a d'abord la propriété la -plus basse, et il est donc placé plus près de la note ; ensuite c'est -l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse, -et il se place alors sous le dièse. Lorsque deux objets ont la même -priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine -lequel sera placé en premier. +plus basse, et il est donc placé plus près de la note@tie{}; ensuite +c'est l'objet @code{Script} -- le mordant -- qui a la propriété la plus +basse, et il se place alors sous le dièse. Lorsque deux objets ont la +même priorité, c'est l'ordre dans lequel ils sont indiqués qui +détermine lequel sera placé en premier. " doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements" diff --git a/Documentation/fr/texidocs/controlling-tuplet-bracket-visibility.texidoc b/Documentation/fr/texidocs/controlling-tuplet-bracket-visibility.texidoc index ab3d0b901a..1bca26c35f 100644 --- a/Documentation/fr/texidocs/controlling-tuplet-bracket-visibility.texidoc +++ b/Documentation/fr/texidocs/controlling-tuplet-bracket-visibility.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Selon la tradition, les crochets indicateurs de nolet sont toujours -imprimés sauf dans le cas où ils seraient de la même longuer qu'une +imprimés, sauf dans le cas où ils seraient de la même longueur qu'une ligature. LilyPond permet, au travers de la propriété @code{'bracket-visibility}, de contôler précisément leur affichage@tie{}: déterminée à @code{#t}, ils seront toujours diff --git a/Documentation/fr/texidocs/creating-a-delayed-turn.texidoc b/Documentation/fr/texidocs/creating-a-delayed-turn.texidoc index 159f4eb6b1..e151053115 100644 --- a/Documentation/fr/texidocs/creating-a-delayed-turn.texidoc +++ b/Documentation/fr/texidocs/creating-a-delayed-turn.texidoc @@ -1,11 +1,11 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse est altérée requiert quelques surcharges. La propriété -@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour +@w{@code{outside-staff-priority}} doit être désactivée (@code{#f}) pour éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}. La -valeur assignée à @code{halign} permet de gérer horizonalement le -@w{« retard »}. +valeur assignée à @code{halign} permet de gérer horizontalement le +@qq{retard}. " diff --git a/Documentation/fr/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc b/Documentation/fr/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc new file mode 100644 index 0000000000..b2369b95db --- /dev/null +++ b/Documentation/fr/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsque la musique comporte à de nombreuses reprises une même séquence +sur des hauteurs différentes, la fonction musicale ci-dessous peut +s'avérer fort utile. Elle considère une note dont seule la hauteur est +utilisée. Cet exemple reproduit le rythme utilisé tout au long de +@qq{Mars}, l'une des pièces de l'œuvre de Gustav Holst @qq{Les planètes}. + +" + doctitlefr = "Création d'une séquence de notes de même hauteur" diff --git a/Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc b/Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc index 2749017f29..a1c80b9ebb 100644 --- a/Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc +++ b/Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc @@ -1,7 +1,8 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la -portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix : +portée (@code{Staff}) permet de distribuer un arpège sur plusieurs +voix@tie{}: " doctitlefr = "Arpège distribué sur plusieurs voix" diff --git a/Documentation/fr/texidocs/creating-blank-staves.texidoc b/Documentation/fr/texidocs/creating-blank-staves.texidoc new file mode 100644 index 0000000000..758cb73237 --- /dev/null +++ b/Documentation/fr/texidocs/creating-blank-staves.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Rien n'est plus simple, pour obtenir une feuille blanche avec des +portées, que de générer des mesures vides, de supprimer le +@code{Bar_number_engraver} du contexte @code{Score}, et les +@code{Time_signature_engraver}, @code{Clef_engraver} et +@code{Bar_engraver} du contexte @code{Staff}. + +" + doctitlefr = "Impression de papier à musique" diff --git a/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc b/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc index d6a284d55d..8771409fad 100644 --- a/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc +++ b/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Dans une double portée pour piano (@code{PianoStaff}), un arpège peut s'étendre sur les deux portées grâce à la propriété diff --git a/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc b/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc index 723060c62c..03cc8d7f17 100644 --- a/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc +++ b/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Il est possible de distribuer un arpège sur plusieurs portées d'un système autre que le @code{PianoStaff} dès lors que vous incluez le diff --git a/Documentation/fr/texidocs/creating-double-digit-fingerings.texidoc b/Documentation/fr/texidocs/creating-double-digit-fingerings.texidoc new file mode 100644 index 0000000000..caba68c022 --- /dev/null +++ b/Documentation/fr/texidocs/creating-double-digit-fingerings.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Il est impossible, par défaut, de noter un doigté sur deux caractères -- +autrement dit supérieur à 9. C'est gravé dans le marbre. + +Voici cependant deux méthodes pour créer des doigtés plus grands que 9. + +" + doctitlefr = "Création de doigtés sur deux caractères" diff --git a/Documentation/fr/texidocs/creating-metronome-marks-in-markup-mode.texidoc b/Documentation/fr/texidocs/creating-metronome-marks-in-markup-mode.texidoc index f63bcae606..996c22235a 100644 --- a/Documentation/fr/texidocs/creating-metronome-marks-in-markup-mode.texidoc +++ b/Documentation/fr/texidocs/creating-metronome-marks-in-markup-mode.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Vous pouvez créer des indications de tempo sous la forme d'étiquettes -textuelles -- des objets @code{markup} -- notamment des équivalences. +textuelles -- des objets @emph{markup} -- notamment des équivalences. Cependant, elles n'apparaîtront pas dans le fichier MIDI. " diff --git a/Documentation/fr/texidocs/creating-real-parenthesized-dynamics.texidoc b/Documentation/fr/texidocs/creating-real-parenthesized-dynamics.texidoc new file mode 100644 index 0000000000..8e7d4ba2e4 --- /dev/null +++ b/Documentation/fr/texidocs/creating-real-parenthesized-dynamics.texidoc @@ -0,0 +1,16 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Bien que le moyen le plus simple pour ajouter des parenthèses à une +indication de nuance consiste à utiliser un bloc @code{\\markup}, cette +pratique a un inconvénient@tie{}: les objets ainsi créés seront +considérés comme des annotations textuelles, non comme des nuances. + +Il est néanmoins possible de créer des objets particuliers en partant de +code Scheme -- comme expliqué dans le manuel de notation -- avec la +fonction @code{make-dynamic-script}. Les @emph{markups} ainsi créés +seront alors considérés comme étant des indications de nuance, et de ce +fait pourront se voir appliquer les effets des commandes +@code{\\dynamicUp} et @code{\\dynamicDown}. + +" + doctitlefr = "Indications de nuance vraiment entre parenthèses" diff --git a/Documentation/fr/texidocs/creating-simultaneous-rehearsal-marks.texidoc b/Documentation/fr/texidocs/creating-simultaneous-rehearsal-marks.texidoc new file mode 100644 index 0000000000..1ba7859955 --- /dev/null +++ b/Documentation/fr/texidocs/creating-simultaneous-rehearsal-marks.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les indications de repère, à la différence des scripts textuels, ne +peuvent s'empiler en un même endroit de la partition@tie{}: il n'est +possible de créer qu'un seul objet @code{RehearsalMark} à la fois. Le +recours à une mesure invisible et à une barre de mesure permet cependant +d'ajouter une autre indication de repère, donnant ainsi l'impression +d'un double repère sur la même colonne. cette méthode permet aussi +de positionner un repère en fin de ligne et un autre au début de la +ligne suivante. + +" + doctitlefr = "Création de repères simultanés" diff --git a/Documentation/fr/texidocs/creating-slurs-across-voices.texidoc b/Documentation/fr/texidocs/creating-slurs-across-voices.texidoc new file mode 100644 index 0000000000..f941c41426 --- /dev/null +++ b/Documentation/fr/texidocs/creating-slurs-across-voices.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Dans certaines situations, il peut être nécessaire de lier des notes +appartenant à des voix différentes. + +La solution consiste à ajouter une note invisible dans l'une des voix, à +l'aide de la commande @code{\\hideNotes}. + +Voici par exemple la mesure 235 de la chaconne de la seconde partita +pour violon solo, BWV 1004, de Bach. + +" + doctitlefr = "Création d'une liaison entre plusieurs voix" diff --git a/Documentation/fr/texidocs/creating-text-spanners.texidoc b/Documentation/fr/texidocs/creating-text-spanners.texidoc new file mode 100644 index 0000000000..f5058fbec6 --- /dev/null +++ b/Documentation/fr/texidocs/creating-text-spanners.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les commandes @code{\\startTextSpan} et @code{\\stopTextSpan} permettent +d'ajouter une ligne de prolongation aux indications textuelles, à +l'instar des indications de pédale ou d'octaviation. Jouer sur les +propriétés de l'objet @code{TextSpanner} permet d'en modifier le rendu. + +" + doctitlefr = "Création d'extensions de texte" diff --git a/Documentation/fr/texidocs/cross-staff-chords---beaming-problems-workaround.texidoc b/Documentation/fr/texidocs/cross-staff-chords---beaming-problems-workaround.texidoc new file mode 100644 index 0000000000..60036bdace --- /dev/null +++ b/Documentation/fr/texidocs/cross-staff-chords---beaming-problems-workaround.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Il est parfois préférable d'utiliser les hampes de la portée supérieure +pour créer des accords distribués, afin d'éviter tout risque de +collision au niveau des ligatures automatiques. Dans l'exemple suivant, +le fait de partir des hampes de la portée inférieure aurait rendu +nécessaire l'adaptation du détecteur de collision des ligatures, par une +clause @code{\\override Staff.Beam #'collision-voice-only = ##t}, afin +qu'il ne tienne pas compte des collisions entre portées. + +" + doctitlefr = "Accord distribué et problème de hampe - solution" diff --git a/Documentation/fr/texidocs/cross-staff-tremolos.texidoc b/Documentation/fr/texidocs/cross-staff-tremolos.texidoc index e63d23e708..50a7f745ac 100644 --- a/Documentation/fr/texidocs/cross-staff-tremolos.texidoc +++ b/Documentation/fr/texidocs/cross-staff-tremolos.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Dans la mesure où @code{\\repeat tremolo} requiert deux arguments musicaux pour un trémolo d'accords, la note ou l'accord de la -portée opposée doît être encadré par des accolades et se voir adjoindre +portée opposée doit être encadré par des accolades et se voir adjoindre la commande @code{\\change Staff}. " diff --git a/Documentation/fr/texidocs/custodes.texidoc b/Documentation/fr/texidocs/custodes.texidoc new file mode 100644 index 0000000000..383324c12f --- /dev/null +++ b/Documentation/fr/texidocs/custodes.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les guidons peuvent adopter différents styles. + +" + doctitlefr = "Guidons" diff --git a/Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc b/Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc new file mode 100644 index 0000000000..9cf5795afb --- /dev/null +++ b/Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les propriétés d'un diagramme de fret sont définies par les +@code{'fret-diagram-details}. En matière de diagramme de fret, les +adaptations s'appliquent à l'objet @code{FretBoards.FretBoard}. Un +@code{FretBoards} est comparable à un @code{Voice}@tie{}: il s'agit +d'un contexte du plus bas niveau, et il n'est donc pas primordial de +l'instancier de manière explicite pour adapter ses propriétés. + +" + doctitlefr = "Personnalisation de diagrammes de fret" + diff --git a/Documentation/fr/texidocs/customizing-markup-fret-diagrams.texidoc b/Documentation/fr/texidocs/customizing-markup-fret-diagrams.texidoc index 3516e4ebf1..9886dba4f3 100644 --- a/Documentation/fr/texidocs/customizing-markup-fret-diagrams.texidoc +++ b/Documentation/fr/texidocs/customizing-markup-fret-diagrams.texidoc @@ -1,11 +1,10 @@ -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les propriétés d'un diagramme de fret sont modifiables grâce au @code{'fret-diagram-details}. Lorsqu'ils sont générés sous forme -de @code{\markup}, rien n'empêche de les modifier en jouant sur les -réglages de l'objet @code{Voice.TextScript} ou bien directement sur -le @qq{markup}. +de @code{\markup}, rien n'empêche de modifier les diagrammes en jouant +sur les réglages de l'objet @code{Voice.TextScript} ou bien directement +sur le @emph{markup}. " doctitlefr = "Personnalisation des diagrammes de fret" diff --git a/Documentation/fr/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc b/Documentation/fr/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc new file mode 100644 index 0000000000..a2c0f2fddf --- /dev/null +++ b/Documentation/fr/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La direction des hampes des notes placées sur la ligne médiane de la +portée est gérée par la propriété @code{neutral-direction} de l'objet +@code{Stem}. + +" + doctitlefr = "Direction par défaut des hampes de la ligne médiane" diff --git a/Documentation/fr/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc b/Documentation/fr/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc new file mode 100644 index 0000000000..41a5feffe1 --- /dev/null +++ b/Documentation/fr/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Cet exemple démontre comment définir son propre graveur de tessiture à +base de code Scheme. + +Il s'agit d'une réécriture en Scheme du code contenu dans le fichier +@file{lily/ambitus-engraver.cc}. + +" + doctitlefr = "Définition d'un graveur en Scheme : graveur d'ambitus" diff --git a/Documentation/fr/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc b/Documentation/fr/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc index 5f2ad7c755..3049b1e774 100644 --- a/Documentation/fr/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc +++ b/Documentation/fr/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La liste des diagrammes standards prédéfinis pour la guitare peut être augmentée d'autres définitions spécifiques à d'autres instruments. @@ -7,8 +6,9 @@ Voici comment définir un nouvel accordage ainsi que quelques diagrammes prédéfinis pour le @qq{cuatro vénézuélien}. Cet exemple illustre aussi la manière d'ajouter des doigtés aux -accords ; ils serviront de référence pour la boucle d'accord et seront -indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique. +accords@tie{}; ils serviront de référence pour la boucle d'accord et +seront indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans +la musique. Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils contiennent des informations sur les cordes. Ceci est amené à évoluer. diff --git a/Documentation/fr/texidocs/demo-midiinstruments.texidoc b/Documentation/fr/texidocs/demo-midiinstruments.texidoc new file mode 100644 index 0000000000..7d86ac63dc --- /dev/null +++ b/Documentation/fr/texidocs/demo-midiinstruments.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Partant du problème que l'on ignore quel @code{midiInstrument} serait le +plus adapté à sa composition, voici un fichier LilyPond de démonstration. + +" + doctitlefr = "Démonstration de MidiInstrument" diff --git a/Documentation/fr/texidocs/demonstrating-all-headers.texidoc b/Documentation/fr/texidocs/demonstrating-all-headers.texidoc new file mode 100644 index 0000000000..3832b0272b --- /dev/null +++ b/Documentation/fr/texidocs/demonstrating-all-headers.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici la liste de tous les champs d'entête : + +" + doctitlefr = "Champs d'entête" diff --git a/Documentation/fr/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc b/Documentation/fr/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc index 687c336f29..0801e2bb5c 100644 --- a/Documentation/fr/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc +++ b/Documentation/fr/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Lorsque, dans des regoupements de type @code{ChoirStaff} ou +Lorsque, dans des regroupements de type @code{ChoirStaff} ou @code{StaffGroup}, une seule portée est active, aucune indication n'est donnée en début de ligne. Surcharger la propriété adéquate permet de modifier ce comportement par défaut. @@ -8,7 +8,7 @@ modifier ce comportement par défaut. Notez bien que dans le cas des @code{PianoStaff} et @code{GrandStaff}, pour lesquels le délimiteur de système est une accolade et non un crochet, il ne s'agit pas de la même propriété -- voir le deuxième -@emph{système} de l'exemple. +système de l'exemple. " doctitlefr = "Indicateur de regroupement et portée unique" diff --git a/Documentation/fr/texidocs/displaying-complex-chords.texidoc b/Documentation/fr/texidocs/displaying-complex-chords.texidoc new file mode 100644 index 0000000000..9e45d81248 --- /dev/null +++ b/Documentation/fr/texidocs/displaying-complex-chords.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment obtenir l'impression d'un accord au sein duquel une même +note est jouée deux fois avec des altérations différentes. + +" + doctitlefr = "Impression d'accords complexes" diff --git a/Documentation/fr/texidocs/displaying-grob-ancestry.texidoc b/Documentation/fr/texidocs/displaying-grob-ancestry.texidoc new file mode 100644 index 0000000000..4108d10506 --- /dev/null +++ b/Documentation/fr/texidocs/displaying-grob-ancestry.texidoc @@ -0,0 +1,58 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsque l'on manipule des rappels d'objet (@emph{grob callbacks}), il +peut être intéressant d'en maîtriser les « ascendants ». La plupart des +objets graphiques ont des parents, lesquels auront une influence sur le +positionnement de l'objet en question. Ainsi, les parents des côtés X +et Y influenceront respectivement les positions horizontale et verticale +de l'objet. De plus, chacun des parents peut avoir ses propres parents. + +Certains aspects de la lignée d'un objet peuvent toutefois porter à +confusion : + +-- Les types de parents d'un @emph{grob} peuvent dépendre du contexte. + +-- Dans le cas de certains @emph{grobs}, les parents X et Y peuvent être + le même. + +-- Un « ascendant » particulier peut dépendre d'un @emph{grob} de + différentes manières. + +-- Le concept de « génération » est trompeur. + +Par exemple, l'objet @code{System} peut, vis à vis d'un objet +@code{VerticalAlignment}, être à la fois parent (par son +côté Y) et grand parent (par deux fois du côté X). + +La macro ci-dessous affiche à l'écran une représentation textuelle de +l'ascendance d'un @emph{grob}. + + +Elle se lance ainsi : + +@example +@{ + \\once \\override NoteHead #'before-line-breaking = #display-ancestry + c4 +@} +@end example + +et génère la sortie suivante : + +@example +------------------------------------ + +NoteHead X,Y: NoteColumn + X: PaperColumn + X,Y: System + Y: VerticalAxisGroup + X: NonMusicalPaperColumn + X,Y: System + Y: VerticalAlignment + X: NonMusicalPaperColumn + X,Y: System + Y: System +@end example + +" + doctitlefr = "Affichage de la généalogie d'un objet" diff --git a/Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc b/Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc index e6574b5653..05854631d6 100644 --- a/Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc +++ b/Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde » +Au début du XXe siècle, Schoenberg, Berg et Webern -- la « Seconde » école de Vienne -- imaginèrent de donner une importance comparable aux douze notes de la gamme chromatique, et éviter ainsi toute tonalité. Pour ce faire, ces compositions font apparaître une altération à chaque diff --git a/Documentation/fr/texidocs/dotted-harmonics.texidoc b/Documentation/fr/texidocs/dotted-harmonics.texidoc new file mode 100644 index 0000000000..3d04d2a356 --- /dev/null +++ b/Documentation/fr/texidocs/dotted-harmonics.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les notes harmoniques artificielles, obtenues grâce à @code{\\harmonic}, +ne sont pas pointées. Ce comportement peut être modifié en activant la +propriété de contexte @code{harmonicDots}. + +" + doctitlefr = "Harmoniques pointées" diff --git a/Documentation/fr/texidocs/double-glissando.texidoc b/Documentation/fr/texidocs/double-glissando.texidoc new file mode 100644 index 0000000000..1f1517304f --- /dev/null +++ b/Documentation/fr/texidocs/double-glissando.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La connection d'accords par des glissandos s'obtient par l'ajout d'un +deuxième glissando dans une voix masquée. + +" + doctitlefr = "Double glissando" diff --git a/Documentation/fr/texidocs/drawing-boxes-around-grobs.texidoc b/Documentation/fr/texidocs/drawing-boxes-around-grobs.texidoc new file mode 100644 index 0000000000..b18ffadbcd --- /dev/null +++ b/Documentation/fr/texidocs/drawing-boxes-around-grobs.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La fonction @code{print} peut se modifier pour obtenir l'encadrement de +n'importe quel objet. + +" + doctitlefr = "Encadrement d'objets" diff --git a/Documentation/fr/texidocs/drawing-circles-around-note-heads.texidoc b/Documentation/fr/texidocs/drawing-circles-around-note-heads.texidoc new file mode 100644 index 0000000000..699fd88750 --- /dev/null +++ b/Documentation/fr/texidocs/drawing-circles-around-note-heads.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment entourer d'un cercle une note : + +" + doctitlefr = "Encerclement de notes" diff --git a/Documentation/fr/texidocs/drawing-circles-around-various-objects.texidoc b/Documentation/fr/texidocs/drawing-circles-around-various-objects.texidoc new file mode 100644 index 0000000000..46443b5eb6 --- /dev/null +++ b/Documentation/fr/texidocs/drawing-circles-around-various-objects.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La commande de @emph{markup} @code{\\circle} permet de dessiner un +cercle autour de différents objets comme des indications de doigté. +D'autres objets nécessitent de faire appel à des techniques spécifiques. +Cet exemple illustre deux manières de procéder, pour les repères, et +pour les numéros de mesure. + +" + doctitlefr = "Encercler divers objets" diff --git a/Documentation/fr/texidocs/dynamics-custom-text-spanner-postfix.texidoc b/Documentation/fr/texidocs/dynamics-custom-text-spanner-postfix.texidoc index 41eb594125..9b7cdbea20 100644 --- a/Documentation/fr/texidocs/dynamics-custom-text-spanner-postfix.texidoc +++ b/Documentation/fr/texidocs/dynamics-custom-text-spanner-postfix.texidoc @@ -1,11 +1,11 @@ -%% Translation of GIT committish: a06cb0b0d9593ba110e001f2b0f44b8bef084693 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Il s'agit de fonctions postfix pour personnaliser l'extension des -crescendos textuels. L'extension devrait débuter sur la première notte -de la mesure. Il faut utiliser @code{-\mycresc} -- comme une +crescendos textuels. L'extension devrait débuter sur la première note +de la mesure. Il faut utiliser @w{@code{-\mycresc}} -- comme une articulation -- sous peine que le départ de l'extension n'apparaisse qu'à la note suivante. + " doctitlefr = "Personnalisation des extenseurs de nuance postfix" diff --git a/Documentation/fr/texidocs/dynamics-text-spanner-postfix.texidoc b/Documentation/fr/texidocs/dynamics-text-spanner-postfix.texidoc index 5638b8b359..8ee56ba204 100644 --- a/Documentation/fr/texidocs/dynamics-text-spanner-postfix.texidoc +++ b/Documentation/fr/texidocs/dynamics-text-spanner-postfix.texidoc @@ -1,13 +1,12 @@ -%% Translation of GIT committish: a06cb0b0d9593ba110e001f2b0f44b8bef084693 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les lignes d'extension des commandes \cresc, \dim et \decresc peuvent -désormais être personnalisées facilement sous forme d'opérateurs -postfix. Soufflets et (de)crescendos peuvent cohabiter. \< et \> -produiront par défaut des soufflets, alors que \cresc etc. produiront -une indication textuelle avec extension. +Les lignes d'extension des commandes @code{\\cresc}, @code{\\dim} et +@code{\\decresc} peuvent désormais être personnalisées facilement sous +forme d'opérateurs postfix. Soufflets et (de)crescendos peuvent +cohabiter. @code{\\<} et @code{\\>} produiront par défaut des +soufflets, alors que @code{\\cresc} etc. produiront une indication +textuelle avec extension. " - doctitlefr = "Extensions de nuance postfix" diff --git a/Documentation/fr/texidocs/embedding-native-postscript-in-a--markup-block.texidoc b/Documentation/fr/texidocs/embedding-native-postscript-in-a--markup-block.texidoc new file mode 100644 index 0000000000..858d6fef74 --- /dev/null +++ b/Documentation/fr/texidocs/embedding-native-postscript-in-a--markup-block.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Du code PostScript peut directement être intégré dans un bloc +@code{\\markup}. + +" + doctitlefr = "Intégration de PostScript dans un markup" diff --git a/Documentation/fr/texidocs/engravers-one-by-one.texidoc b/Documentation/fr/texidocs/engravers-one-by-one.texidoc new file mode 100644 index 0000000000..b2aa739639 --- /dev/null +++ b/Documentation/fr/texidocs/engravers-one-by-one.texidoc @@ -0,0 +1,26 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Pour appréhender la notation, nous l'avons disséquée en éléments +simples : chaque type de symbole est géré par un module différent. +Chaque module est appelé @qq{graveur}. Dans cet exemple, chaque graveur +est appelé à son tour, dans l'ordre suivant : + +-- têtes de note, + +-- symboles de la portée, + +-- clef, + +-- hampes, + +-- ligatures, liaisons, accents, + +-- altérations, barres de mesure, métrique et armure. + +Les graveurs se regroupent. Par exemple, têtes de note, liaisons, +ligature etc. forment un contexte de voix (@code{Voice}). Les graveurs +chargés de la métrique, des altérations, des barres de mesure etc. +forment un contexte de portée (@code{Staff}). + +" + doctitlefr = "Les graveurs un par un" diff --git a/Documentation/fr/texidocs/engraving-ties-manually.texidoc b/Documentation/fr/texidocs/engraving-ties-manually.texidoc index 952f1ec19a..e2ae292543 100644 --- a/Documentation/fr/texidocs/engraving-ties-manually.texidoc +++ b/Documentation/fr/texidocs/engraving-ties-manually.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Il est possible de graver manuellement les liaisons de tenue, en modifiant la propriété @code{tie-configuration}. Pour chaque paire, le diff --git a/Documentation/fr/texidocs/engraving-tremolos-with-floating-beams.texidoc b/Documentation/fr/texidocs/engraving-tremolos-with-floating-beams.texidoc new file mode 100644 index 0000000000..e324cd26c8 --- /dev/null +++ b/Documentation/fr/texidocs/engraving-tremolos-with-floating-beams.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsque la durée totale d'un trémolo est inférieur à la noire, égale une +blanche, ou bien entre une blanche et une ronde, il est d'usage que +toutes les ligatures soient en contact avec les hampes. Certains styles +de gravure font cependant apparaître des ligatures détachées, centrées +entre les hampes. Pour ce type de trémolo, le nombre de hampes +flottantes se gère au travers de la propriété @code{'gap-count} de +l'objet @code{Beam}, et l'écart entre ligature et hampe se définit par +la propriété @code{'gap}. + +" + doctitlefr = "Impression de trémolo avec ligature flottante" diff --git a/Documentation/fr/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc b/Documentation/fr/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc index 20e8a97f1e..78a8451a69 100644 --- a/Documentation/fr/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc +++ b/Documentation/fr/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de chaque crochet. Avec elle, vous pouvez faire plusieurs nolets en ne diff --git a/Documentation/fr/texidocs/faking-a-hammer-in-tablatures.texidoc b/Documentation/fr/texidocs/faking-a-hammer-in-tablatures.texidoc new file mode 100644 index 0000000000..e9f56a6777 --- /dev/null +++ b/Documentation/fr/texidocs/faking-a-hammer-in-tablatures.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +En mode tablature, un @emph{hammer}, ou lié ascendant, peut se simuler à +l'aide d'une liaison. + +" + doctitlefr = "Simulation d'un hammer en tablature" diff --git a/Documentation/fr/texidocs/fine-tuning-pedal-brackets.texidoc b/Documentation/fr/texidocs/fine-tuning-pedal-brackets.texidoc new file mode 100644 index 0000000000..14a9651054 --- /dev/null +++ b/Documentation/fr/texidocs/fine-tuning-pedal-brackets.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les crochets d'indication de pédale peuvent se modifier de différentes +manières. + +" + doctitlefr = "Affinage des indications de pédale" diff --git a/Documentation/fr/texidocs/fingering-symbols-for-wind-instruments.texidoc b/Documentation/fr/texidocs/fingering-symbols-for-wind-instruments.texidoc index 884e709ece..65cbd36ba2 100644 --- a/Documentation/fr/texidocs/fingering-symbols-for-wind-instruments.texidoc +++ b/Documentation/fr/texidocs/fingering-symbols-for-wind-instruments.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Des sumboles spécifiques peuvent être obtenus en combinant les glyphes +Des symboles spécifiques peuvent être obtenus en combinant les glyphes disponibles, ce qui est tout à fait indiqué en matière d'instrument à vent. " diff --git a/Documentation/fr/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc b/Documentation/fr/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc index 80b093819e..4225417c50 100644 --- a/Documentation/fr/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc +++ b/Documentation/fr/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'exemple suivant illustre comment combiner des doigtés pour la main -gauche, des indications de corrde et des doigtés pour la main droite. +gauche, des indications de corde et des doigtés pour la main droite. " - doctitlefr = "Doigtés, indications de cordeet doigtés main droite" + doctitlefr = "Doigtés, indications de corde, et doigtés main droite" diff --git a/Documentation/fr/texidocs/flamenco-notation.texidoc b/Documentation/fr/texidocs/flamenco-notation.texidoc new file mode 100644 index 0000000000..0ab6883a0a --- /dev/null +++ b/Documentation/fr/texidocs/flamenco-notation.texidoc @@ -0,0 +1,32 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La guitare flamenco fait appel à des éléments de notation particuliers : + +-- le @emph{golpe} : coup frappé sur la caisse de résonance avec + l'ongle de l'annulaire, + +-- une flèche pour indiquer le sens des butés (@emph{strokes}), + +-- les doigtés : @qq{p} pouce, @qq{i} index, @qq{m} majeur, @qq{a} + annulaire et @qq{x} auriculaire, + +-- les @emph{rasgueados} sur trois ou quatre doigts : grattage des + cordes en étendant les doigts rapidement les uns après les autres + dans un mouvement continu, se terminant sur l'index, + +-- les @emph{abanicos} : séries de butés du pouce, index et auriculaire. + Il existe aussi un @emph{abanico 2} pour lequel l'index et + l'annulaire remplacent l'auriculaire. + +-- @emph{alza púa} : jeu rapide du pouce. + +La plupart de ces symboles utilisent une flèche en plus des doigtés. +Dans le cas d'un @emph{abanico}, les têtes de note ne sont imprimées que +pour le premier accord. + +Le début du code ci-dessous répertorie le paramétrage de ces différents +symboles, que vous pouvez copier dans un fichier @file{flamenco.ly} +pour inclusion dans vos propres compositions. + +" + doctitlefr = "Notation de flamenco" diff --git a/Documentation/fr/texidocs/flat-flags-and-beam-nibs.texidoc b/Documentation/fr/texidocs/flat-flags-and-beam-nibs.texidoc index 3de1fcd754..15b0d346d5 100644 --- a/Documentation/fr/texidocs/flat-flags-and-beam-nibs.texidoc +++ b/Documentation/fr/texidocs/flat-flags-and-beam-nibs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des paires de @code{[]}, vous pourrez obtenir des crochets rectilignes et @@ -6,23 +6,23 @@ des ligatures qui débordent à leurs extrémités. Pour des crochets rectilignes à droite sur des notes isolées, il suffit d'ajouter une paire d'indicateurs de ligature @code{[]} et de déterminer -@code{stemLeftBeamCount} à zéro, comme dans l'exemple@tie{}1. +@code{stemLeftBeamCount} à zéro, comme dans l'exemple 1. Pour des crochets rectiligne à gauche, c'est @code{stemRightBeamCount} -qu'il faudra déterminer (exemple@tie{}2). +qu'il faudra déterminer (exemple 2). Pour que les barres de ligature débordent sur la droite, -@code{stemRightBeamCount} doit avoir une valeur positive@tie{}; pour un -débrodement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut -jouer. Tout ceci est illustré par l'exemple@tie{}3. +@code{stemRightBeamCount} doit avoir une valeur positive ; pour un +débordement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut +jouer. Tout ceci est illustré par l'exemple 3. Il est parfois judicieux, lorsqu'une note est encadrée de silences, de l'affubler de crochets rectilignes de part et d'autre. L'exemple@tie{}4 montre qu'il suffit d'adjoindre à cette note un @code{[]}. -(Notez bien que @code{\\set@tie{}stemLeftBeamCount} sera toujours -synonyme de @code{\\once@tie{}\\set}. Autrement dit, la détermination -des ligatures n'est pas @qq{permanente}@tie{}; c'est la raison pour +(Notez bien que @code{\\set stemLeftBeamCount} sera toujours +synonyme de @code{\\once \\set}. Autrement dit, la détermination +des ligatures n'est pas @qq{permanente} ; c'est la raison pour laquelle les crochets du @code{c'16[]} isolé du dernier exemple n'ont rien à voir avec le @code{\\set} indiqué deux notes auparavant.) diff --git a/Documentation/fr/texidocs/flute-slap-notation.texidoc b/Documentation/fr/texidocs/flute-slap-notation.texidoc new file mode 100644 index 0000000000..a629ea81ef --- /dev/null +++ b/Documentation/fr/texidocs/flute-slap-notation.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'indication d'une technique particulière d'articulation, telle le +@qq{coup de langue} des flûtistes, en remplaçant la tête de note par un +glyphe approprié. + +" + doctitlefr = "Coup de langue à la flûte" diff --git a/Documentation/fr/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc b/Documentation/fr/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc new file mode 100644 index 0000000000..63ff0d30e3 --- /dev/null +++ b/Documentation/fr/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsqu'une clef a déjà été imprimée et qu'aucune autre clef n'a depuis +été imprimée, LilyPond ignorera toute réitération de la commande +@code{\\clef}. Forcer la réimpression de la clef s'obtient à l'aide de +la commande @code{\\set Staff.forceClef = ##t}. + +" + doctitlefr = "Réimpression forcée de la clef" diff --git a/Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc b/Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc index ed352bc7d6..afa1fdf95d 100644 --- a/Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc +++ b/Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet @code{NoteColumn}, et des silences à hauteur déterminée, peuvent diff --git a/Documentation/fr/texidocs/forcing-hyphens-to-be-shown.texidoc b/Documentation/fr/texidocs/forcing-hyphens-to-be-shown.texidoc new file mode 100644 index 0000000000..a505ad2bfb --- /dev/null +++ b/Documentation/fr/texidocs/forcing-hyphens-to-be-shown.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +LilyPond n'imprimera de tiret entre deux syllabes que s'il juge qu'il y +a suffisamment d'espace. Ce comportement peut être modifié grâce à la +propriété @code{minimum-distance} de @code{LyricHyphen}. + +" + doctitlefr = "Impression forcée de tirets entre syllabes" diff --git a/Documentation/fr/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc b/Documentation/fr/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc new file mode 100644 index 0000000000..6663e3de6d --- /dev/null +++ b/Documentation/fr/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Par défaut, les indications métronomiques n'influencent en rien +l'espacement horizontal. Dans le cas où elles se suivent sur des silences +multimesures, elle peuvent se retrouver trop proche l'une de l'autre, et +donc paraître quelque peu imbriquées comme dans la première partie de +l'exemple ci-dessous. La solution consiste alors à appliquer une simple +dérogation comme dans la deuxième partie. + +" + doctitlefr = "Adaptation de la largeur de mesure selon le MetronomeMark" diff --git a/Documentation/fr/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc b/Documentation/fr/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc new file mode 100644 index 0000000000..074e757935 --- /dev/null +++ b/Documentation/fr/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment initialiser arbitrairement une indication automatique de +repère, qu'elle soit alphabétique ou numérique : + +" + doctitlefr = "Fixation arbitraire du numéro de repère de départ" diff --git a/Documentation/fr/texidocs/formatting-lyrics-syllables.texidoc b/Documentation/fr/texidocs/formatting-lyrics-syllables.texidoc new file mode 100644 index 0000000000..8e7f49611a --- /dev/null +++ b/Documentation/fr/texidocs/formatting-lyrics-syllables.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le mode @emph{markup} permet d'individualiser la mise en forme de +certaines syllabes. + +" + doctitlefr = "Mise en forme individuelle de syllabes" diff --git a/Documentation/fr/texidocs/fret-diagrams-explained-and-developed.texidoc b/Documentation/fr/texidocs/fret-diagrams-explained-and-developed.texidoc new file mode 100644 index 0000000000..0f2c28d340 --- /dev/null +++ b/Documentation/fr/texidocs/fret-diagrams-explained-and-developed.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici différentes manières d'obtenir et de personnaliser des diagrammes +de fret : + +" + doctitlefr = "Construction et développement de diagrammes de fret" diff --git a/Documentation/fr/texidocs/fretboards-alternate-tables.texidoc b/Documentation/fr/texidocs/fretboards-alternate-tables.texidoc new file mode 100644 index 0000000000..e6d8f16608 --- /dev/null +++ b/Documentation/fr/texidocs/fretboards-alternate-tables.texidoc @@ -0,0 +1,19 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Vous pouvez tout à fait créer des tables de diagrammes de fret +supplémentaires, notamment dans l'optique d'un fret alternatif pour un +accord donné. + +Avant de pouvoir utiliser un diagramme alternatif, vous devrez alimenter +une table à cet effet. Les différents diagrammes seront ajoutés à cette +table. + +Il peut aussi bien s'agir d'une table vide, que de la recopie d'une +table existante. + +La table servant de base pour les diagrammes prédéfinis est sélectionnée +par la propriété @code{\\predefinedDiagramTable}. + +" + doctitlefr = "Diagrammes de fret alternatifs" + diff --git a/Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc b/Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc new file mode 100644 index 0000000000..6d5c7a8d37 --- /dev/null +++ b/Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Harmoniques et tablature (harmoniques artificielles). + +" + doctitlefr = "Harmoniques et tablature" + diff --git a/Documentation/fr/texidocs/generating-custom-flags.texidoc b/Documentation/fr/texidocs/generating-custom-flags.texidoc new file mode 100644 index 0000000000..0a67a06fb0 --- /dev/null +++ b/Documentation/fr/texidocs/generating-custom-flags.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une fonction Scheme personnalisée permet de redéfinir la propriété +@code{stencil} de l'objet @code{Flag}, de sorte à modifier le glyphe +utilisé pour les crochets de croche. + +" + doctitlefr = "Génération de crochets personnalisés" diff --git a/Documentation/fr/texidocs/generating-random-notes.texidoc b/Documentation/fr/texidocs/generating-random-notes.texidoc new file mode 100644 index 0000000000..d59daa6f97 --- /dev/null +++ b/Documentation/fr/texidocs/generating-random-notes.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le fragment de code Scheme ci-dessous génère aléatoirement 24 notes +(ou autant que nécessaire), à partir de l'heure courante (ou un nombre +quelconque donné en argument, afin d'obtenir toujours les mêmes notes +aléatoires). Pour obtenir une autre série de notes, il suffit de +changer ce nombre. + +" + doctitlefr = "Génération de notes aléatoires" diff --git a/Documentation/fr/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc b/Documentation/fr/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc new file mode 100644 index 0000000000..ee17dee890 --- /dev/null +++ b/Documentation/fr/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc @@ -0,0 +1,35 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une partition LilyPond, de manière interne, n'est rien d'autre qu'une +expression Scheme générée par l'analyseur syntaxique de lilypond. Il +est donc possible, à l'aide de Scheme, de générer automatiquement une +partition sans fichier source. Une expression musicale en Scheme sera +transformée en partition par un appel à +@code{(scorify-music music parser)}. Ceci aura pour effet de générer +un objet @code{score} auquel sera appliqué un bloc @code{layout} +comportant la fonction + +@example +(let* ((layout (ly:output-def-clone $defaultlayout))) + ; modification de la mise en forme, puis assignation : + (ly:score-add-output-def! score layout) + ) +@end example + +Il suffit alors de transmettre ce @code{score} à lilypond pour qu'il le +grave. Les trois fonctions -- @code{(add-score parser score)}, +@code{(add-text parser text)} et @code{(add-music parser music)} -- +définies dans le code ci-dessous permettent de transmettre à lilypond, +aux fins de les graver, une partition complète, un @emph{markup} ou +simplement de la musique. + +Cet exemple permet aussi de graver les pièces contenues dans un bloc +@code{\\book@{@dots{}@}} ainsi que des partitions de niveau supérieur. +Chaque partition destinée à être gravée est alors ajoutée à la liste des +partitions de niveau supérieur ; le @code{toplevel-book-handler} -- +fonction Scheme appelée pour traiter un @emph{book} dès que le bloc +@code{\\book@{@dots{}@}} est clôturé -- s'adapte pour prendre en charge +tous les @code{score} jusque là collectés dans l'ouvrage. + +" + doctitlefr = "Génération en Scheme de partitions complètes (y compris des parties d'ouvrage) sans utiliser l'analyseur" diff --git a/Documentation/fr/texidocs/glissandi-can-skip-grobs.texidoc b/Documentation/fr/texidocs/glissandi-can-skip-grobs.texidoc new file mode 100644 index 0000000000..87539c6248 --- /dev/null +++ b/Documentation/fr/texidocs/glissandi-can-skip-grobs.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un glissando peut sauter un objet @code{NoteColumn}. + +" + doctitlefr = "Glissando par dessus un objet graphique" diff --git a/Documentation/fr/texidocs/graphical-and-text-woodwind-diagrams.texidoc b/Documentation/fr/texidocs/graphical-and-text-woodwind-diagrams.texidoc index f3ed70927f..1a2fe24669 100644 --- a/Documentation/fr/texidocs/graphical-and-text-woodwind-diagrams.texidoc +++ b/Documentation/fr/texidocs/graphical-and-text-woodwind-diagrams.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Dans certains cas, vous pouvez opter pour l'affichage textuel d'une clé située à côté d'un trou plutôt que sa représentation graphique. -" +" doctitlefr = "Ajout de texte à un diagramme de doigté" diff --git a/Documentation/fr/texidocs/grid-lines--changing-their-appearance.texidoc b/Documentation/fr/texidocs/grid-lines--changing-their-appearance.texidoc index 15f95b62e3..9b011c62ee 100644 --- a/Documentation/fr/texidocs/grid-lines--changing-their-appearance.texidoc +++ b/Documentation/fr/texidocs/grid-lines--changing-their-appearance.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 9ccf7f0f5e52e074f3b7852416ad5b78718395c8 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Modifier certaines des propriétés du quadrillage temporel aura pour effet d'en changer l'apparence. diff --git a/Documentation/fr/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc b/Documentation/fr/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc new file mode 100644 index 0000000000..5dc60113ef --- /dev/null +++ b/Documentation/fr/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Des lignes verticales entre les portées peuvent s'ajouter dans le but +d'indiquer la synchronisation entre des notes. Dans le cas de musique +monophonique, on peut toutefois créer une deuxième portée, invisible, et +raccourcir les lignes comme ici. + +" + doctitlefr = "Quadrillage temporel : mise en évidence du rythme et synchronisation des notes" diff --git a/Documentation/fr/texidocs/grouping-beats.texidoc b/Documentation/fr/texidocs/grouping-beats.texidoc deleted file mode 100644 index 545765ba0f..0000000000 --- a/Documentation/fr/texidocs/grouping-beats.texidoc +++ /dev/null @@ -1,7 +0,0 @@ -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 - texidocfr = " -La manière de gérer les ligatures est influencée par la propriété -@code{beatGrouping} : - -" - doctitlefr = "Regroupement selon la pulsation" diff --git a/Documentation/fr/texidocs/guitar-slides.texidoc b/Documentation/fr/texidocs/guitar-slides.texidoc new file mode 100644 index 0000000000..3fcf04e223 --- /dev/null +++ b/Documentation/fr/texidocs/guitar-slides.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: 0 + texidocfr = " +Contrairement au glissando, un @qq{slide} peut aller d'un point non +précisé du manche jusqu'à un fret spécifique. Ceci peut s'indiquer à +l'aide d'une note d'ornement masquée précédant la note effectivement +jouée, comme dans l'exemple suivant. + +" + doctitlefr = "Indication d'un glissé de guitare" diff --git a/Documentation/fr/texidocs/guitar-strum-rhythms.texidoc b/Documentation/fr/texidocs/guitar-strum-rhythms.texidoc index 6db16d6515..a68360434d 100644 --- a/Documentation/fr/texidocs/guitar-strum-rhythms.texidoc +++ b/Documentation/fr/texidocs/guitar-strum-rhythms.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " En matière de notation pour guitare, il arrive que soient indiqués les @qq{coups de gratte} en plus de la mélodie, grilles d'accords et diff --git a/Documentation/fr/texidocs/hairpins-with-different-line-styles.texidoc b/Documentation/fr/texidocs/hairpins-with-different-line-styles.texidoc new file mode 100644 index 0000000000..289574fbff --- /dev/null +++ b/Documentation/fr/texidocs/hairpins-with-different-line-styles.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les lignes d'un soufflet peuvent adopter tous les styles permis par la +@code{line-interface} : discontinu, pointillé, continu, ondulé ou en +zigzag. + +" + doctitlefr = "Stylisation des lignes de soufflet" diff --git a/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc b/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc new file mode 100644 index 0000000000..328ce174a4 --- /dev/null +++ b/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Bien que la métrique complexe ne soit pas l'élément primordial de cet +exemple, elle permet d'indiquer la pulsation de cette pièce qui, par +ailleurs, constitue le canevas d'une chanson traditionnelle des +Balkans. + +" + doctitlefr = "Indication personnalisée d'une polymétrie complexe" diff --git a/Documentation/fr/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc b/Documentation/fr/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc index d94f3e04dc..3d7d74237c 100644 --- a/Documentation/fr/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc +++ b/Documentation/fr/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc @@ -1,8 +1,9 @@ -%% Translation of GIT committish: 31097723b2b816696ad61696630a80ff17a39557 - texidocfr = "Cet exemple illustre comment, lorsqu'une note affublée - d'une altération accidentelle est prolongée, ne pas répéter cette - altération après un saut de ligne. +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Cet exemple illustre comment, lorsqu'une note affublée d'une altération +accidentelle est prolongée, ne pas répéter cette altération après un +saut de ligne. + " - doctitlefr = "Non répétition de l'altération après saut de ligne - sur liaison de prolongation" + doctitlefr = "Non répétition de l'altération après saut de ligne sur liaison de prolongation" diff --git a/Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc b/Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc index 0c492d0e12..4a9e02620f 100644 --- a/Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc +++ b/Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les crescendos et decrescendos indiqués textuellement -- tels que @emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent -leur étendue. On peut empêcher l'impression de ces pointillés avec : +leur étendue. On peut empêcher l'impression de ces pointillés. " doctitlefr = "Masquage de l'extension des nuances textuelles" diff --git a/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc b/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc new file mode 100644 index 0000000000..ec4167ad05 --- /dev/null +++ b/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc @@ -0,0 +1,46 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Certaines indication de nuance requièrent un complément textuel, comme +« sempre pp ». Dans la mesure où les nuances sont habituellement +centrées sous la note, le @emph{pp} se trouvera repoussé loin après la +note à laquelle il s'applique. + +Différentes approches permettent de correctement aligner horizontalement +ce « sempre pp » : + +-- Un simple @code{\\once \\override DynamicText #'X-offset = #-9.2} + avant la note considérée de telle sorte que la nuance soit décalée + manuellement à la bonne place. Inconvénient : il faut le faire + manuellement à chaque fois qu'intervient ce @emph{markup}. + +-- L'intégration d'un rembourrage (@code{#:hspace 7.1}) à la définition + de cette nuance personnalisée afin qu'une fois centrée par lilypond + elle soit correctement alignée. Inconvénient : le rembourrage + occupera exactement cet espace et ne permettra à aucun autre + @emph{markup} ou nuance d'apparaître à cet endroit. + +-- L'application d'un décalage au script de nuance + @code{\\once \\override @dots{} #'X-offset = @dots{}}. + Inconvénient : là aussi il faut le faire à chaque fois. + +-- L'attribution arbitraire d'une dimension à 0 du texte additionnel à + l'aide d'un @code{#:with-dimensions '(0 . 0) '(0 . 0)}. + Inconvénient : lilypond considère que « sempre » n'occupe pas + d'espace, et donc pourra mettre à cet endroit d'autres éléments, ce + qui pourrait générer des collisions qui ne seront pas détectées par + les routines @emph{ad hoc}. D'autre part, il semble persister un + espacement, ce qui laisse l'impression d'un alignement différent en + l'absence de texte additionnel. + +-- L'ajout, explicite, du décalage directement dans la fonction Scheme + du script de nuance. + +-- La définition d'un alignement explicite au sein du script de nuance. + Ceci ne sera suivi d'effet, par défaut, qu'en jouant sur + @code{X-offset}. Inconvénient : il faut définir + @code{DynamicText #'X-offset}, ce qui s'appliquera à toutes les + nuances textuelles. Par ailleurs, l'alignement sera réalisé sur le + bord droit du texte additionnel, non sur le milieu de @emph{pp}. + +" + doctitlefr = "Alignement de nuances personnalisées comme \"sempre pp\" \"più f\" \"subito p\"" diff --git a/Documentation/fr/texidocs/how-to-change-fret-diagram-position.texidoc b/Documentation/fr/texidocs/how-to-change-fret-diagram-position.texidoc new file mode 100644 index 0000000000..f9abbe4d5d --- /dev/null +++ b/Documentation/fr/texidocs/how-to-change-fret-diagram-position.texidoc @@ -0,0 +1,18 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Différents moyens permettent de repositionner un diagramme de fret pour +éviter des collisions ou le placer entre deux notes : + +-- La modification des valeurs de @code{#'padding} ou de + @code{#'extra-offset}comme pour le second diagramme; + +-- L'adjonction d'une voix invisible dans laquelle les diagrammes sont + attachés à des notes invisibles comme pour le troisième diagramme. + +Lorsque le diagramme doit correspondre à une position rythmique dans la +mesure, comme au troisième temps de la deuxième mesure, la seconde +méthode est plus appropriée, puisque le diagramme sera aligné sur le +temps. + +" + doctitlefr = "Repositionnement d'un diagramme de fret" diff --git a/Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc b/Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc new file mode 100644 index 0000000000..b5d843e9d0 --- /dev/null +++ b/Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc @@ -0,0 +1,26 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Cette méthode permet d'imprimer deux marques-repères l'un au dessus de +l'autre. Le repère inférieur est décalé sous la portée, puis s'insère +au-dessus de lui un espace pour positionner le repère supérieur +au-dessus de la portée. + +L'ajustement des valeurs de @code{extra-offset} et @code{baseline-skip} +permet d'accroître ou réduire globalement l'espace entre le repère et la +portée. + +La capacité de pratiquement tout type de glyphe ou chaîne de caractère à +faire l'objet d'un repère les rend capable de venir se centrer au-dessus +ou en dessous d'une barre de mesure. + +L'adjonction de la propriété @code{break-visibility}, comme dans le +troisième cas, permet de placer un double repère en fin de ligne. + +Cette première méthode, bien que moins compliquée que la seconde, ne +permet pas d'ajuster le positionnement d'un repère indépendamment de +l'autre. Elle peut aussi générer quelques problèmes quant à +l'espacement vertical, puisque le recours à @code{extra-offset} ne +modifie en rien la valeur originelle de la boîte englobant le repère. + +" + doctitlefr = "Impression d'un double repère sur une même barre (méthode 1)" diff --git a/Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc b/Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc new file mode 100644 index 0000000000..3f0d77c8be --- /dev/null +++ b/Documentation/fr/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Cette méthode permet d'imprimer deux marques-repères -- l'un au-dessus de +la portée et l'autre en dessous -- à l'aide de deux voix séparées. Le +graveur de repères est ensuite déplacé dans chacune des voix, sans quoi +aucun repère ne sera imprimé. Enfin, chaque voix se voit attribuer un +positionnement pour les repères. + +Cette méthode, bien que plus complexe que la première, apporte plus de +flexibilité dans l'ajustement individuel des deux composants du repère. + +" + doctitlefr = "Impression d'un double repère sur une même barre (méthode 2)" diff --git a/Documentation/fr/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc b/Documentation/fr/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc new file mode 100644 index 0000000000..0c9a217428 --- /dev/null +++ b/Documentation/fr/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Des mots monosyllabiques peuvent s'attacher par une liaison à l'aide +d'un tilde. + +" + doctitlefr = "Séparation de syllables par une liaison" diff --git a/Documentation/fr/texidocs/hymn-template.texidoc b/Documentation/fr/texidocs/hymn-template.texidoc index 602fa6ee03..f829b6836d 100644 --- a/Documentation/fr/texidocs/hymn-template.texidoc +++ b/Documentation/fr/texidocs/hymn-template.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le code ci-dessous illustre la manière d'agencer un cantique liturgique dans lequel chaque ligne débute et se termine par une mesure incomplète. diff --git a/Documentation/fr/texidocs/incipit.texidoc b/Documentation/fr/texidocs/incipit.texidoc new file mode 100644 index 0000000000..57e6a6625d --- /dev/null +++ b/Documentation/fr/texidocs/incipit.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les « incipits » peuvent faire partie de l'objet @code{InstrumentName}, +tout en définissant de manière indépendante le nom de l'instrument et +l'incipit. + +" + doctitlefr = "Incipit" diff --git a/Documentation/fr/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc b/Documentation/fr/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc new file mode 100644 index 0000000000..c6f24ed82a --- /dev/null +++ b/Documentation/fr/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc @@ -0,0 +1,12 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un crochet d'arpège peut indiquer que des notes réparties sur deux +portées différentes doivent être jouées par la même main. Le contexte +@code{PianoStaff} doit accepter des arpèges « distribués », et les +indications d'arpège du contexte @code{PianoStaff} adopter une allure de +crochet. + +(Debussy, Les collines d’Anacapri, mesure 65) + +" + doctitlefr = "Indication d'un accord à cheval sur deux portées par un crochet d'arpège" diff --git a/Documentation/fr/texidocs/inserting-a-caesura.texidoc b/Documentation/fr/texidocs/inserting-a-caesura.texidoc index 72dd74ef0c..e0ad1c053a 100644 --- a/Documentation/fr/texidocs/inserting-a-caesura.texidoc +++ b/Documentation/fr/texidocs/inserting-a-caesura.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Une surcharge de la propriété @code{'text} de l'objet @code{BreathingSign} permet de créer une marque de césure. LilyPond diff --git a/Documentation/fr/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc b/Documentation/fr/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc new file mode 100644 index 0000000000..2d82b147ae --- /dev/null +++ b/Documentation/fr/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La commande @code{\\markup} est polyvalente. Dans cet exemple, elle +contient un bloc @code{\\score} plutôt que du texte ou une marque. + +" + doctitlefr = "Insertion d'un fragment au-dessus de la portée" diff --git a/Documentation/fr/texidocs/isolated-percent-repeats.texidoc b/Documentation/fr/texidocs/isolated-percent-repeats.texidoc index 9aeed610d1..f031d1d838 100644 --- a/Documentation/fr/texidocs/isolated-percent-repeats.texidoc +++ b/Documentation/fr/texidocs/isolated-percent-repeats.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Des symboles de pourcentage isolés peuvent aussi être obtenus, au -moyen d'un silence multi-mesures dont on modifie l'aspect : +moyen d'un silence multimesure dont on modifie l'aspect : " doctitlefr = "Répétition en pourcent isolée" diff --git a/Documentation/fr/texidocs/jazz-combo-template.texidoc b/Documentation/fr/texidocs/jazz-combo-template.texidoc index c9c2c698fe..3793ca09c5 100644 --- a/Documentation/fr/texidocs/jazz-combo-template.texidoc +++ b/Documentation/fr/texidocs/jazz-combo-template.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Bien que compliqué de prime abord, voici un canevas tout à fait indiqué pour les ensembles de jazz. Vous noterez que tous les instruments sont -notés en ut (@code{\key c \major}), la tonalité de concert. Les notes +notés en ut (@code{\key c \major}), la tonalité de concert. Les notes seront automatiquement transposée dès lors qu'elles seront inscrites dans une section @code{\\transpose}. diff --git a/Documentation/fr/texidocs/keep-change-clefs-full-sized.texidoc b/Documentation/fr/texidocs/keep-change-clefs-full-sized.texidoc new file mode 100644 index 0000000000..605b0d1c52 --- /dev/null +++ b/Documentation/fr/texidocs/keep-change-clefs-full-sized.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le symbole imprimé lors d'un changement de clef est plus petit que la +clef initiale. La taille s'ajuste à l'aide de la propriété +@code{full-size-change}. + +" + doctitlefr = "Maintien de la taille de clef lors d'un changement" diff --git a/Documentation/fr/texidocs/laissez-vibrer-ties.texidoc b/Documentation/fr/texidocs/laissez-vibrer-ties.texidoc new file mode 100644 index 0000000000..ad0d1f59b8 --- /dev/null +++ b/Documentation/fr/texidocs/laissez-vibrer-ties.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les indication de « laisser vibrer » ont une taille fixe. Leur +formatage est accessible au travers de la propriété +@code{'tie-configuration}. + +" + doctitlefr = "Liaison « Laissez vibrer »" diff --git a/Documentation/fr/texidocs/letter-tablature-formatting.texidoc b/Documentation/fr/texidocs/letter-tablature-formatting.texidoc new file mode 100644 index 0000000000..91fdf1f885 --- /dev/null +++ b/Documentation/fr/texidocs/letter-tablature-formatting.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une tablature peut comporter des lettres en lieu et place des chiffres. + +" + doctitlefr = "Tablature en lettres" diff --git a/Documentation/fr/texidocs/line-arrows.texidoc b/Documentation/fr/texidocs/line-arrows.texidoc new file mode 100644 index 0000000000..482373306a --- /dev/null +++ b/Documentation/fr/texidocs/line-arrows.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les extensions de texte, tout comme les indications sous forme de ligne +tel un glissando, peuvent se voir pourvues d'une extrémité en flèche. + +" + doctitlefr = "Terminaison de ligne en flèche" diff --git a/Documentation/fr/texidocs/lyrics-alignment.texidoc b/Documentation/fr/texidocs/lyrics-alignment.texidoc index 29b104fe1d..476653d475 100644 --- a/Documentation/fr/texidocs/lyrics-alignment.texidoc +++ b/Documentation/fr/texidocs/lyrics-alignment.texidoc @@ -1,11 +1,10 @@ -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'alignement horizontal des paroles peut se gérer à l'aide de la propriété @code{self-alignment-X} de l'objet @code{LyricText}. -Les valeurs @code{#-1} ou @code{#LEFT} produiront un alignement par la -gauche, les valeurs @code{#0} ou @code{#CENTER} un alignement centré, et -les valeurs @code{#1} ou @code{#RIGHT} un alignement par la droite. +Les valeurs @code{-1} ou @code{LEFT} produiront un alignement par la +gauche, les valeurs @code{0} ou @code{CENTER} un alignement centré, et +les valeurs @code{1} ou @code{RIGHT} un alignement par la droite. " doctitlefr = "Alignement des syllabes" - diff --git a/Documentation/fr/texidocs/makam-example.texidoc b/Documentation/fr/texidocs/makam-example.texidoc index b732d97259..da5dd90f48 100644 --- a/Documentation/fr/texidocs/makam-example.texidoc +++ b/Documentation/fr/texidocs/makam-example.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le « makam » est une forme de mélodie turque qui utilise des altérations d'un neuvième de ton. Consultez le fichier d'initialisation diff --git a/Documentation/fr/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc b/Documentation/fr/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc new file mode 100644 index 0000000000..fc90323c74 --- /dev/null +++ b/Documentation/fr/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc @@ -0,0 +1,17 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une modification de la propriété @code{transparent} permet d'imprimer un +objet à « l'encre sympathique » : l'objet n'est pas affiché bien que tous +ses attributs soient préservés. L'objet en question occupe donc sa +place, est pris en compte lors de collisions, et peut se voir attaché +liaisons ou ligatures. + +Cet exemple illustre la manière de connecter deux voix par une liaison +de prolongation. Les liaisons de prolongation ne peuvent normalement +intervenir que dans la même voix. Dès lors que la liaison est entamée +dans une autre voix et que la première hampe ascendante est rendue +transparente dans cette même voix, la liaison semble passer d'une voix à +l'autre. + +" + doctitlefr = "Recours à la propriété 'transparent pour rendre des objets invisibles" diff --git a/Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc b/Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc index ae252b1980..707166f59a 100644 --- a/Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc +++ b/Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Grâce à la propriété @code{dash-definition}, une liaison d'articulation peut être formée de traits discontinus variables. @@ -8,13 +8,13 @@ peut être formée de traits discontinus variables. déterminent le comportement du trait pour une section de la liaison. Cette liaison se définit selon le paramètre de Bézier @code{t} qui est -compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité +compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité droite de la liaison). Chaque @code{segment-discontinu} se composera selon la liste @code{(t-début t-fin segment-style segment-taille)}. La portion de liaison allant de @code{t-début} à @code{t-fin} aura un trait @code{segment-style} de longueur @code{segment-taille}. -@code{segment-taille} est exprimé en espace de portée ; un -@code{segment-style} à 1 donnera un trait plein. +@code{segment-taille} est exprimé en espace de portée ; un +@code{segment-style} à 1 donnera un trait plein. " doctitlefr = "Dessin d'une liaison d'articulation au trait discontinu" diff --git a/Documentation/fr/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc b/Documentation/fr/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc index 73e157225e..46d9780218 100644 --- a/Documentation/fr/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc +++ b/Documentation/fr/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Vous pourriez avoir envie, dans un but pédagogique, de rendre certaines -lignes d'une portée plus épaisses que les autres, comme la ligne médiane -ou bien pour mettre en exergue la ligne portant la clé de sol. Il -suffit pour cela d'ajouter une ligne qui sera accolée à celle qui doît +lignes d'une portée plus épaisses que les autres, comme la ligne médiane, +ou bien pour mettre en exergue la ligne portant la clef de sol. Il +suffit pour cela d'ajouter une ligne qui sera accolée à celle qui doit être mise en évidence, grâce à la propriété @code{line-positions} de l'objet @code{StaffSymbol}. diff --git a/Documentation/fr/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc b/Documentation/fr/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc new file mode 100644 index 0000000000..011b7fe556 --- /dev/null +++ b/Documentation/fr/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La basse chiffrée utilise fréquemment des lignes pour indiquer la +prolongation jusqu'à un certain point. LilyPond est alors dispendieux +en ce sens qu'il place le plus de prolongateurs possible. +L'interruption d'un prolongateur particulier s'obtient en affectant +d'un @code{\\!} le chiffre qui doit être réimprimé ; ceci interrompra de +fait la ligne de prolongation juste avant ce chiffre. + +" + doctitlefr = "Interruption manuelle des prolongations de certains chiffrages" diff --git a/Documentation/fr/texidocs/manually-controlling-beam-positions.texidoc b/Documentation/fr/texidocs/manually-controlling-beam-positions.texidoc new file mode 100644 index 0000000000..2b0a3c2e5a --- /dev/null +++ b/Documentation/fr/texidocs/manually-controlling-beam-positions.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le positionnement et la pente des ligatures peuvent être contrôlés +manuellement à l'aide d'une adaptation de la propriété +@code{positions} de l'objet @code{Beam}. + +" + doctitlefr = "Contrôle manuel du positionnement des ligatures" diff --git a/Documentation/fr/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc b/Documentation/fr/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc new file mode 100644 index 0000000000..d84bd1036d --- /dev/null +++ b/Documentation/fr/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment ajouter une croix aux hampes. Le début du fragment parlé +est stipulé par une commande @code{\\speakOn}, et la fin par une +commande @code{\\speakOff}. + +" + doctitlefr = "Adjonction d'une croix sur la hampe des notes d'un fragment parlé" diff --git a/Documentation/fr/texidocs/markup-lines.texidoc b/Documentation/fr/texidocs/markup-lines.texidoc new file mode 100644 index 0000000000..b2b301bbfb --- /dev/null +++ b/Documentation/fr/texidocs/markup-lines.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un bloc de texte conséquent peut se répartir sur plusieurs pages à +l'aide de la commande @code{\\markuplist}. + +" + doctitlefr = "Répartition de lignes de texte (markup)" diff --git a/Documentation/fr/texidocs/measure-counter.texidoc b/Documentation/fr/texidocs/measure-counter.texidoc new file mode 100644 index 0000000000..6f0164c14c --- /dev/null +++ b/Documentation/fr/texidocs/measure-counter.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le code ci-dessous permet, de façon détournée, d'afficher un compteur de +mesures à l'aide d'une répétition en pourcent rendue transparente. + +" + doctitlefr = "Compteur de mesures" diff --git a/Documentation/fr/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc b/Documentation/fr/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc index 32efd6fcac..4a9ba42258 100644 --- a/Documentation/fr/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc +++ b/Documentation/fr/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " En musique mensurale, les barres de mesure ne traversent pas les portées. Pour obtenir ce résultat avec un @code{StaffGroup} plutôt -qu'en utilisant un @code{ChoirStaff}, il faudra rendre « transparentes » -les portions de barre qui recouvrent les portées. +qu'en utilisant un @code{ChoirStaff}, il faudra rendre +@qq{transparentes} les portions de barre qui recouvrent les portées. " doctitlefr = "Présentation à l'ancienne (barres de mesure entre les portées)" diff --git a/Documentation/fr/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc b/Documentation/fr/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc new file mode 100644 index 0000000000..be82922e5e --- /dev/null +++ b/Documentation/fr/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Dans le cadre d'un portée polyphonique, les silences multimesures sont +positionnés différemment selon la voix à laquelle ils appartiennent. +Le réglage suivant permet néanmoins de les imprimer sur une même ligne. + +" + doctitlefr = "Fusion de silences multimesures dans une partie polyphonique" diff --git a/Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc b/Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc index ef5a60788f..dccaad01a3 100644 --- a/Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc +++ b/Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc @@ -1,14 +1,14 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les raccourcis sont répertoriés dans le fichier @file{ly/script-init.ly}, dans lequel on retrouve les variables @code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar}, @code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos -besoins. Il suffit par exemple, pour affecter au raccourci @code{-+} +besoins. Il suffit par exemple, pour affecter au raccourci @w{@code{-+}} (@code{dashPlus}) le symbole du trille en lieu et place du @code{+} (caractère plus), d'assigner la valeur @code{trill} à la variable -@code{dashPlus} : +@code{dashPlus}@tie{}: " doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation" diff --git a/Documentation/fr/texidocs/modifying-tuplet-bracket-length.texidoc b/Documentation/fr/texidocs/modifying-tuplet-bracket-length.texidoc new file mode 100644 index 0000000000..16192dc3f8 --- /dev/null +++ b/Documentation/fr/texidocs/modifying-tuplet-bracket-length.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les crochets indiquant un nolet peuvent être prolongés jusqu'à un +élément de rupture ou jusqu'à la note suivante. LilyPond termine un +crochet de nolet sur la droite de sa dernière tête de note par défaut ; +un crochet de pleine longueur s'étendra plus avant, soit jusqu'à le note +suivante et en traversant tous les éléments non rythmiques, soit sur +tout l'espace précédant le prochain élément de notation, que ce soit une +clef, une métrique, une armure ou une autre note. L'exemple suivant +illustre la manière d'activer ces deux fonctionnalités. + +" + doctitlefr = "Modification de la longueur d'un crochet de nolet" diff --git a/Documentation/fr/texidocs/moving-dotted-notes-in-polyphony.texidoc b/Documentation/fr/texidocs/moving-dotted-notes-in-polyphony.texidoc new file mode 100644 index 0000000000..f4c9ffade1 --- /dev/null +++ b/Documentation/fr/texidocs/moving-dotted-notes-in-polyphony.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une note pointée appartenant à la voix supérieure d'une portée +polyphonie sera par défaut décalée vers la droite afin d'éviter les +collisions avec les autres voix. Ce comportement peut être outrepassé à +l'aide de la propriété @code{prefer-dotted-right} de +@code{NoteCollision}. + +" + doctitlefr = "Déplacement des notes pointées dans une polyphonie" diff --git a/Documentation/fr/texidocs/moving-slur-positions-vertically.texidoc b/Documentation/fr/texidocs/moving-slur-positions-vertically.texidoc new file mode 100644 index 0000000000..ff6827ee49 --- /dev/null +++ b/Documentation/fr/texidocs/moving-slur-positions-vertically.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le positionnement vertical d'une liaison se contrôle par la propriété +@code{positions} de l'objet @code{Slur}. Cette propriété dispose de +deux paramètres : le premier affecte l'extrémité gauche de liaison, le +second son extrémité droite. La valeur des paramètres n'aura aucune +influence sur le galbe de la liaison. LilyPond ne s'en servira que pour +adapter le positionnement de la courbe. Des valeurs positives décalent +la liaison vers le haut et s'utilisent pour des hampes descendantes. +Des valeurs négatives entraînent un décalage vers le bas. + +" + doctitlefr = "Déplacement vertical des liaisons d'articulation" diff --git a/Documentation/fr/texidocs/multi-measure-rest-markup.texidoc b/Documentation/fr/texidocs/multi-measure-rest-markup.texidoc index 8ebda5a3d3..6ce085bdbf 100644 --- a/Documentation/fr/texidocs/multi-measure-rest-markup.texidoc +++ b/Documentation/fr/texidocs/multi-measure-rest-markup.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Lorsque du texte est attaché à un silence multi-mesures, il sera centré +Lorsque du texte est attaché à un silence multimesure, il sera centré dans la mesure, au-dessus ou en dessous de la portée. Afin d'étirer la mesure dans le cas ou ce texte est relativement long, il suffit d'insérer un silence invisible auquel on attache le texte en question, -avant le silence multi-mesures. +avant le silence multimesure. Rappelez-vous qu'un silence invisible génère une barre de mesure. Le texte attaché à ce silence invisible sera alors aligné sur la gauche de @@ -12,4 +12,4 @@ là où serait positionnée la note. Cependant, si la taille de la mesure est déterminée par la longueur du texte, il apparaîtra comme centré. " - doctitlefr = "Ajout de texte à un silence multi-mesures" + doctitlefr = "Ajout de texte à un silence multimesure" diff --git a/Documentation/fr/texidocs/nesting-staves.texidoc b/Documentation/fr/texidocs/nesting-staves.texidoc index b1cf8a868b..11795243e4 100644 --- a/Documentation/fr/texidocs/nesting-staves.texidoc +++ b/Documentation/fr/texidocs/nesting-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La propriété @code{systemStartDelimiterHierarchy} permet de créer des regroupements imbriqués complexes. La commande diff --git a/Documentation/fr/texidocs/non-default-tuplet-numbers.texidoc b/Documentation/fr/texidocs/non-default-tuplet-numbers.texidoc index 213ee7f55e..abb521a66c 100644 --- a/Documentation/fr/texidocs/non-default-tuplet-numbers.texidoc +++ b/Documentation/fr/texidocs/non-default-tuplet-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " LilyPond sait aussi gérer des nolets dont le chiffrage imprimé ne correspond pas exactement à la fraction de mesure à laquelle ils se diff --git a/Documentation/fr/texidocs/non-traditional-key-signatures.texidoc b/Documentation/fr/texidocs/non-traditional-key-signatures.texidoc index c762d0cc25..5d77d8791f 100644 --- a/Documentation/fr/texidocs/non-traditional-key-signatures.texidoc +++ b/Documentation/fr/texidocs/non-traditional-key-signatures.texidoc @@ -1,27 +1,24 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La commande @code{\\key} détermine la propriété @code{keySignature} d'un contexte @code{Staff}. Des armures inhabituelles peuvent être spécifiées en modifiant -directement cette propriété. Il s'agit en l'occurence de définir une -liste : +directement cette propriété. Il s'agit en l'occurrence de définir une +liste : -@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave -. pas) . altération) @dots{})} +@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave . pas) . altération) @dots{})} dans laquelle, et pour chaque élément, -@code{octave} spécifie l'octave (0@tie{}pour celle allant du -do@tie{}médium au si supérieur), @code{pas} la note dans cette octave -(0@tie{}pour@tie{}do et 6@tie{}pour@tie{}si), et @code{altération} sera -@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (attention à la virgule en -préfixe). +@code{octave} spécifie l'octave (0 pour celle allant du do médium au si +supérieur), @code{pas} la note dans cette octave (0 pour do et 6 pour +si), et @code{altération} sera @code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. +(attention à la virgule en préfixe). Une formulation abrégée -- @code{(pas . altération)} -- signifie que l'altération de l'élément en question sera valide quel que soit l'octave. - -Voici, par exemple, comment générer une gamme par ton : +Voici, par exemple, comment générer une gamme par ton : " doctitlefr = "Armures inhabituelles" diff --git a/Documentation/fr/texidocs/numbers-as-easy-note-heads.texidoc b/Documentation/fr/texidocs/numbers-as-easy-note-heads.texidoc new file mode 100644 index 0000000000..31929e69a0 --- /dev/null +++ b/Documentation/fr/texidocs/numbers-as-easy-note-heads.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +En mode @qq{easy play}, les têtes de note utilisent la propriété +@code{note-names} attachée à l'objet @code{NoteHead} pour déterminer ce +qui apparaîtra dans la tête. Intervenir sur cette propriété permet +d'imprimer un chiffre correspondant au degré dans la gamme. + +La création d'un graveur dédié permet de traiter toutes les notes. +" + doctitlefr = "Easy play -- chiffre en lieu et place des lettres" diff --git a/Documentation/fr/texidocs/lyrics-old-spacing-settings.texidoc b/Documentation/fr/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc similarity index 84% rename from Documentation/fr/texidocs/lyrics-old-spacing-settings.texidoc rename to Documentation/fr/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc index 9f70acf566..17197d3a2a 100644 --- a/Documentation/fr/texidocs/lyrics-old-spacing-settings.texidoc +++ b/Documentation/fr/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La version 2.14 a donné naissance à un nouveau moteur pour l'espacement vertical des paroles. Celles-ci peuvent donc se retrouver positionnées @@ -7,6 +7,5 @@ que vous aurez réglé certaines propriétés des contextes @code{Lyric} et @code{Staff}. " - doctitlefr = "Espacement des paroles selon les pratiques de la version 2.12" diff --git a/Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc b/Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc new file mode 100644 index 0000000000..20eb2d4bf6 --- /dev/null +++ b/Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Table des harmoniques sur corde à vide (harmoniques naturelles) : + +" + doctitlefr = "Table des harmoniques sur corde à vide" + + diff --git a/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc index 01069c24f0..f1d7634e31 100644 --- a/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc +++ b/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour regrouper les instruments selon leur famille, imbriqués dans un diff --git a/Documentation/fr/texidocs/ottava-text.texidoc b/Documentation/fr/texidocs/ottava-text.texidoc index 5e9eae8372..227fb56e42 100644 --- a/Documentation/fr/texidocs/ottava-text.texidoc +++ b/Documentation/fr/texidocs/ottava-text.texidoc @@ -1,12 +1,11 @@ -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " En interne, la fonction @code{\\ottava} détermine les -propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"}) +propriétés @code{ottavation} (par ex. en @code{\"8va\"} ou @code{\"8vb\"}) et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque d'octaviation en définissant @code{ottavation} après avoir fait appel -à @code{ottava} : +à @code{ottava} : " - doctitlefr = "Texte des marques d'octaviation" diff --git a/Documentation/fr/texidocs/outputting-the-version-number.texidoc b/Documentation/fr/texidocs/outputting-the-version-number.texidoc new file mode 100644 index 0000000000..c4f83d1513 --- /dev/null +++ b/Documentation/fr/texidocs/outputting-the-version-number.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'insertion du résultat de @code{lilypond-version} dans des paroles +permet d'ajouter à la partition ou au document généré par +@code{lilypond-book} le numéro de la version de LilyPond utilisée. Une +autre possibilité consiste à l'ajouter à une chaîne textuelle comme +ci-dessous. + +" + doctitlefr = "Impression du numéro de version" diff --git a/Documentation/fr/texidocs/page-label.texidoc b/Documentation/fr/texidocs/page-label.texidoc new file mode 100644 index 0000000000..17c72729b1 --- /dev/null +++ b/Documentation/fr/texidocs/page-label.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Des références de page peuvent prendre place aussi bien dans la +musique qu'en tête de partition, puis reprises dans un @emph{markup}. + +" + doctitlefr = "Référencement de page" diff --git a/Documentation/fr/texidocs/partcombine-and-autobeamoff.texidoc b/Documentation/fr/texidocs/partcombine-and-autobeamoff.texidoc index 7b5399c1f8..3887a74db9 100644 --- a/Documentation/fr/texidocs/partcombine-and-autobeamoff.texidoc +++ b/Documentation/fr/texidocs/partcombine-and-autobeamoff.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: e1a149d0cc60b02e86209387958f4028567dd366 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Le fonction @code{@bs{}autoBeamOff} dans le cadre d'un -@code{@bs{}partcombine} agit de façon bien particulière@tie{}; c'est -pourquoi il vaut mieux tout d'abord recourir à +La fonction @code{\\autoBeamOff} dans le cadre d'un +@code{\\partcombine} agit de façon bien particulière ; c'est pourquoi il +vaut mieux tout d'abord recourir à @example \set Staff.autobeaming = ##f @@ -12,20 +12,20 @@ pourquoi il vaut mieux tout d'abord recourir à pour désactiver les ligatures automatiques pour l'ensemble de la portée concernée. -L'instruction @code{\partcombine} fonctionne apparament sur la base de -trois voix@tie{}: solo hampes montantes, solo hampes descendantes et -ensemble hampes montantes. +L'instruction @code{\\partcombine} fonctionne apparemment sur la base de +trois voix : solo hampes montantes, solo hampes descendantes et ensemble +hampes montantes. -Lorsque @code{\autoBeamOff} apparaît dans le premier argument de la +Lorsque @code{\\autoBeamOff} apparaît dans le premier argument de la combinaison, il s'applique à la voix active à ce moment précis, qu'il s'agisse du solo hampes montantes ou du combiné hampes montantes. Lorsqu'elle est introduite dans le second argument, la commande -@code{\autoBeamOff} s'appliquera au solo hampes descendantes. +@code{\\autoBeamOff} s'appliquera au solo hampes descendantes. -Vous devrez donc, afin que @code{\autoBeamOff} soit pleinement -opérationnel dans le cadre d'un @code{\partcombine}, l'introduire aux +Vous devrez donc, afin que @code{\\autoBeamOff} soit pleinement +opérationnel dans le cadre d'un @code{\\partcombine}, l'introduire aux @strong{trois} niveaux. " -doctitlefr = "Partcombine et autoBeamOff" + doctitlefr = "Partcombine et autoBeamOff" diff --git a/Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc b/Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc index cad0716894..5efc233476 100644 --- a/Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc +++ b/Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le numéro de mesure répétée sera imprimé à intervalle régulier si vous déterminez la propriété de contexte @code{repeatCountVisibility}. " doctitlefr = "Affichage du numéro de répétition en pourcent" - diff --git a/Documentation/fr/texidocs/percent-repeat-counter.texidoc b/Documentation/fr/texidocs/percent-repeat-counter.texidoc index 4f2bf4ab9c..7b6472204d 100644 --- a/Documentation/fr/texidocs/percent-repeat-counter.texidoc +++ b/Documentation/fr/texidocs/percent-repeat-counter.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les répétitions de plus de 2 mesures sont surmontées d'un compteur, +Les répétitions de plus de deux mesures sont surmontées d'un compteur, si l'on active la propriété @code{countPercentRepeats} comme le montre -l'exemple suivant : +l'exemple suivant : " doctitlefr = "Compteur de répétition en pourcent" - diff --git a/Documentation/fr/texidocs/percussion-beaters.texidoc b/Documentation/fr/texidocs/percussion-beaters.texidoc new file mode 100644 index 0000000000..4f80033733 --- /dev/null +++ b/Documentation/fr/texidocs/percussion-beaters.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La représentation graphique des instruments à percussion n'est pas prise +en charge nativement. De tels symboles peuvent cependant être inclus, +soit à l'aide de fichiers EPS indépendants, soit à l'aide d'un +@emph{markup} contenant le code PostScript correspondant comme dans cet +exemple. + +" + doctitlefr = "Baguettes pour percussion" diff --git a/Documentation/fr/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc b/Documentation/fr/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc index d8d306a39f..426cba4274 100644 --- a/Documentation/fr/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc +++ b/Documentation/fr/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Cet exemple peu académique démontre comment il est possible d'insérer un saut de ligne dans un nolet portant une ligature. Ces ligatures doivent toutefois diff --git a/Documentation/fr/texidocs/piano-template-simple.texidoc b/Documentation/fr/texidocs/piano-template-simple.texidoc index 66dea7a7c7..1d4cc73c14 100644 --- a/Documentation/fr/texidocs/piano-template-simple.texidoc +++ b/Documentation/fr/texidocs/piano-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Voici une simple partition pour piano avec quelques notes. diff --git a/Documentation/fr/texidocs/piano-template-with-centered-dynamics.texidoc b/Documentation/fr/texidocs/piano-template-with-centered-dynamics.texidoc deleted file mode 100644 index ff82f1815e..0000000000 --- a/Documentation/fr/texidocs/piano-template-with-centered-dynamics.texidoc +++ /dev/null @@ -1,8 +0,0 @@ -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 - texidocfr = " -Nombre d'ouvrages pour piano font apparaître les nuances entre les deux -portées. Bien que cela nécessite quelques subtilités, voici de quoi -obtenir un tel résultat. - -" - doctitlefr = "Piano et nuances entre les portées" diff --git a/Documentation/fr/texidocs/piano-template-with-centered-lyrics.texidoc b/Documentation/fr/texidocs/piano-template-with-centered-lyrics.texidoc index a0d2db1ba1..c4f1cbef8f 100644 --- a/Documentation/fr/texidocs/piano-template-with-centered-lyrics.texidoc +++ b/Documentation/fr/texidocs/piano-template-with-centered-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément une portée spécifique. Les paroles peuvent s'insérer entre les deux diff --git a/Documentation/fr/texidocs/piano-template-with-melody-and-lyrics.texidoc b/Documentation/fr/texidocs/piano-template-with-melody-and-lyrics.texidoc index 8094e95490..7433dc87e7 100644 --- a/Documentation/fr/texidocs/piano-template-with-melody-and-lyrics.texidoc +++ b/Documentation/fr/texidocs/piano-template-with-melody-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Il s'agit du format classique pour le chant : une portée pour la mélodie et les paroles au-dessus de l'accompagnement au piano. diff --git a/Documentation/fr/texidocs/placement-of-right-hand-fingerings.texidoc b/Documentation/fr/texidocs/placement-of-right-hand-fingerings.texidoc index 08c0423f2c..eee12237e8 100644 --- a/Documentation/fr/texidocs/placement-of-right-hand-fingerings.texidoc +++ b/Documentation/fr/texidocs/placement-of-right-hand-fingerings.texidoc @@ -1,10 +1,8 @@ -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Vous disposez d'une propriété spécifique qui permet de contrôler plus -finement le positionnement des doigtés main droite, comme l'indique -l'exemple suivant. +Le positionnement des doigtés main droite, grâce à une propriété +spécifique, peut se contrôler finement, comme l'indique +l'exemple suivant. N'oubliez pas la construction de type accord. " doctitlefr = "Positionnement des doigtés main droite" - diff --git a/Documentation/fr/texidocs/polyphony-in-tablature.texidoc b/Documentation/fr/texidocs/polyphony-in-tablature.texidoc index dd11816a00..47cef04d72 100644 --- a/Documentation/fr/texidocs/polyphony-in-tablature.texidoc +++ b/Documentation/fr/texidocs/polyphony-in-tablature.texidoc @@ -1,9 +1,7 @@ -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Une section polyphonique s'obtient dans un @code{TabStaff} de la -même manière que dans une portée normale. +Une section polyphonique s'obtient dans un @code{TabStaff} de la même + manière que dans une portée normale. " doctitlefr = "Polyphonie en mode tablature" - diff --git a/Documentation/fr/texidocs/positioning-arpeggios.texidoc b/Documentation/fr/texidocs/positioning-arpeggios.texidoc new file mode 100644 index 0000000000..7ae95246a7 --- /dev/null +++ b/Documentation/fr/texidocs/positioning-arpeggios.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'ajustement de la taille d'une indication d'arpeggio s'effectue au +travers du positionnement de ses extrémités haute ou basse. + +" + doctitlefr = "Positionnement des arpeggios" diff --git a/Documentation/fr/texidocs/positioning-fingering-indications-precisely.texidoc b/Documentation/fr/texidocs/positioning-fingering-indications-precisely.texidoc new file mode 100644 index 0000000000..62b0474c43 --- /dev/null +++ b/Documentation/fr/texidocs/positioning-fingering-indications-precisely.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les options par défaut en matière de positionnement des doigtés d'un +accord donnent généralement de bons résultats. Il se peut néanmoins +qu'un ajustement soit nécessaire dans certains cas particuliers, +notamment en présence d'un intervalle de seconde. L'astuce ici +présentée permet d'obtenir un meilleur rendu. + +" + doctitlefr = "Positionnement précis des indications de doigté" diff --git a/Documentation/fr/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc b/Documentation/fr/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc new file mode 100644 index 0000000000..d7c9327e50 --- /dev/null +++ b/Documentation/fr/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La ligature de notes se trouvant sur des lignes supplémentaires est +généralement centrée sur la portée. Les notes d'ornement ayant une +hampe raccourcie, leur ligature peut se retrouver en dehors de la portée +lorsqu'elles sont sur des lignes supplémentaires. LilyPond permet de +rallonger les hampes en pareil cas. + +" + doctitlefr = "Positionnement des ligatures de notes d'ornement à la hauteur de celles des notes normales" diff --git a/Documentation/fr/texidocs/positioning-grace-notes-with-floating-space.texidoc b/Documentation/fr/texidocs/positioning-grace-notes-with-floating-space.texidoc index c42fc97d1a..cc75854436 100644 --- a/Documentation/fr/texidocs/positioning-grace-notes-with-floating-space.texidoc +++ b/Documentation/fr/texidocs/positioning-grace-notes-with-floating-space.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Lorsque vous activez la propriété @code{'strict-grace-spacing}, -l'espacement des notes d'ornement se fera de manière @qq{élastique}. -Autrement dit, elles seront décollées de leur note de rattachement : +Lorsqu'est activée la propriété @code{'strict-grace-spacing}, +l'espacement des notes d'ornement se fera de manière « élastique ». +Autrement dit, elles seront décollées de leur note de rattachement : LilyPond commence par espacer les notes normales, puis les ornements -sont placés à la gauche de leur note de rattachement. +sont placés à la gauche de leur note de rattachement. " doctitlefr = "Positionnement des notes d'ornement avec espace flottant" diff --git a/Documentation/fr/texidocs/positioning-multi-measure-rests.texidoc b/Documentation/fr/texidocs/positioning-multi-measure-rests.texidoc index 33ad7d8048..aeb77f6175 100644 --- a/Documentation/fr/texidocs/positioning-multi-measure-rests.texidoc +++ b/Documentation/fr/texidocs/positioning-multi-measure-rests.texidoc @@ -1,10 +1,11 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Si l'on peut positionner verticalement un silence simple en le rattachant à une note, il n'en va pas de même pour un silence -multi-mesures. Néanmoins, et uniquement dans le cadre de musique -polyphonique, les silences multi-mesures sont positionnés différemment +multimesure. Néanmoins, et uniquement dans le cadre de musique +polyphonique, les silences multimesures sont positionnés différemment selon qu'ils appartiennent à une voix au numéro pair ou impair. Le -positionnement des silences multi-mesures peut se contrôler ainsi : +positionnement des silences multimesures peut se contrôler ainsi : + " - doctitlefr = "Positionnement des silences multi-mesures" + doctitlefr = "Positionnement des silences multimesures" diff --git a/Documentation/fr/texidocs/positioning-segno-and-coda-with-line-break.texidoc b/Documentation/fr/texidocs/positioning-segno-and-coda-with-line-break.texidoc new file mode 100644 index 0000000000..de7f5ecb24 --- /dev/null +++ b/Documentation/fr/texidocs/positioning-segno-and-coda-with-line-break.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le code ci-dessous permet d'adjoindre à un signe @emph{segno} un texte +@emph{D.S. al Coda}, là où se trouverait normalement un bout de portée. +La @emph{coda} entamera une nouvelle ligne. Une variante, indiquée ici +même, permet de laisser la @emph{coda} sur la même ligne. + +" + doctitlefr = "Positionnement des segno et coda (avec saut de ligne)" diff --git a/Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc b/Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc index 7478c4cf0d..aee0664b57 100644 --- a/Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc +++ b/Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison, -la propriété @code{outside-staff-priority} doît être désactivée. +Lorsqu'une annotation doit s'incrire à l'intérieur d'une liaison, la +propriété @code{outside-staff-priority} doit être désactivée. " doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison" - diff --git a/Documentation/fr/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc b/Documentation/fr/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc index d1d8595812..2a1e557e07 100644 --- a/Documentation/fr/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc +++ b/Documentation/fr/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc @@ -1,9 +1,10 @@ -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " En accord avec les règles standards de l'écriture musicale, on grave un bécarre avant un dièse ou un bémol si on a besoin d'annuler une -altération précédente. Pour modifier ce comportement, assignez la propriété -@code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux). -" +altération précédente. Pour modifier ce comportement, la propriété +@code{extraNatural} du contexte @code{Staff} doit se voir attribuer la +valeur @code{##f} (faux). +" doctitlefr = "Suppression des bécarres superflus" diff --git a/Documentation/fr/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc b/Documentation/fr/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc new file mode 100644 index 0000000000..2cfc123719 --- /dev/null +++ b/Documentation/fr/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'ajout d'une marque-repère en fin de pièce peut entraîner la perte de +la dernière indication de nolet. La désactivation de @code{TupletBracket +#'full-length-to-extent} pallie ce problème. + +" + doctitlefr = "Préservation de l'indication de nolet lors d'un repère final" diff --git a/Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc b/Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc index 79f99c6ff9..2f3ed46259 100644 --- a/Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc +++ b/Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc @@ -1,11 +1,8 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Après un changement de tonalité, un bécarre est imprimé pour annuler -toute altération précédente. Ceci peut être supprimé en réglant à -@code{\"false\"} la propriété @code{printKeyCancellation} du contexte -@code{Staff}. +toute altération précédente. Ce comportement s'annule en désactivant la +propriété @code{printKeyCancellation} du contexte @code{Staff}. " - - doctitlefr = "Suppression des bécarres superflus après un changement de -tonalité" + doctitlefr = "Suppression des bécarres superflus après un changement de tonalité" diff --git a/Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc b/Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc index 2a033af22b..e4dc4559f4 100644 --- a/Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc +++ b/Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Bien qu'allant à l'encontre des usages en matière de gravure, vous -imprimerez une barre de reprise (@code{|:}) en début de partition si -vous surchargez la propriété adéquate : +Bien qu'allant à l'encontre des usages en matière de gravure, une barre +de reprise (@code{|:}) s'imprimera en début de partition après surcharge +de la propriété adéquate : " doctitlefr = "Impression d'une barre de reprise en début de morceau" diff --git a/Documentation/fr/texidocs/printing-bar-numbers-at-regular-intervals.texidoc b/Documentation/fr/texidocs/printing-bar-numbers-at-regular-intervals.texidoc index bdefed2e36..b5e455df34 100644 --- a/Documentation/fr/texidocs/printing-bar-numbers-at-regular-intervals.texidoc +++ b/Documentation/fr/texidocs/printing-bar-numbers-at-regular-intervals.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt -qu'en tête de chaque ligne seulement, en recourrant à la propriété +qu'en tête de chaque ligne seulement, en recourant à la propriété @code{barNumberVisibility}. Voici comment afficher le numéro toutes les deux mesures sauf en fin de ligne. diff --git a/Documentation/fr/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc b/Documentation/fr/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc index 772faee95c..4036b0bc37 100644 --- a/Documentation/fr/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc +++ b/Documentation/fr/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les numéros de mesures peuvent être encadrés ou entourés d'un cercle. +Les numéros de mesure peuvent être encadrés ou entourés d'un cercle. " doctitlefr = "Inscrire le numéro de mesure dans un cadre ou un cercle" diff --git a/Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc b/Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc index 1316661186..9a2b2e2c6d 100644 --- a/Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc +++ b/Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de -manière graphique, en assignant @emph{vrai} (@code{#t}) à la +manière graphique, en assignant @emph{vrai} (@code{#t}) à la propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité. " doctitlefr = "Impression de soufflets « al niente »" - diff --git a/Documentation/fr/texidocs/printing-marks-at-the-end-of-a-line.texidoc b/Documentation/fr/texidocs/printing-marks-at-the-end-of-a-line.texidoc index 090acadced..155bb34f6d 100644 --- a/Documentation/fr/texidocs/printing-marks-at-the-end-of-a-line.texidoc +++ b/Documentation/fr/texidocs/printing-marks-at-the-end-of-a-line.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les indications textuelles peuvent être imprimées à la fin d'une ligne -plutôt qu'en tête de la suivante. Pensez alors à aligner l'extrémité -droite de l'indication sur la barre de mesure. +plutôt qu'en tête de la suivante. L'alignement sur la barre de mesure +devra alors s'effectuer par l'extrémité droite de l'indication. " - doctitlefr = "Indication texuelle en fin de ligne" - + doctitlefr = "Indication textuelle en fin de ligne" diff --git a/Documentation/fr/texidocs/printing-marks-on-every-staff.texidoc b/Documentation/fr/texidocs/printing-marks-on-every-staff.texidoc index 7604cb2cb5..1e6653969b 100644 --- a/Documentation/fr/texidocs/printing-marks-on-every-staff.texidoc +++ b/Documentation/fr/texidocs/printing-marks-on-every-staff.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Bien que ces indications textuelles ne soient habituellement imprimées -qu'au niveau de la portée supérieure, vous pouvez forcer leur -affectation à chacune des portées. +qu'au niveau de la portée supérieure d'un système, leur affectation peut +être répecutée à chacune des portées. " doctitlefr = "Impression des indications sur toutes les portées d'un système" - diff --git a/Documentation/fr/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc b/Documentation/fr/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc index 1a236235f7..09dd56724b 100644 --- a/Documentation/fr/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc +++ b/Documentation/fr/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les indications de tempo et les marques de repère s'impriment par défaut au-dessus de la portée. Le fait de régler en conséquence la propriété @@ -7,4 +7,3 @@ les placera au-dessous de la portée. " doctitlefr = "Impression du métronome et des repères sous la portée" - diff --git a/Documentation/fr/texidocs/printing-music-with-different-time-signatures.texidoc b/Documentation/fr/texidocs/printing-music-with-different-time-signatures.texidoc new file mode 100644 index 0000000000..26221dc84a --- /dev/null +++ b/Documentation/fr/texidocs/printing-music-with-different-time-signatures.texidoc @@ -0,0 +1,16 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Bien qu'ayant des métriques bien différentes, les deux parties +ci-dessous présentées restent synchrones. Les barres de mesure ne +peuvent plus être gérées au niveau du contexte @code{Score} ; les +@code{Default_barline_engraver} et @code{Timing_translator} doivent être +déplacés du contexte @code{Score} au contexte @code{Staff} afin de +permettre des barres de mesure individualisées. + +Le @code{Bar_number_engraver} devra lui aussi être déplacé, puisqu'il +dépend de propriétés attachées au @code{Timing_translator}, afin de +numéroter les mesures. L'utilisation d'un bloc @code{\\with} dans la +portée concernée permettra un affichage des numéros de mesure. + +" + doctitlefr = "Impression de musique aux métriques différentes" diff --git a/Documentation/fr/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc b/Documentation/fr/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc new file mode 100644 index 0000000000..76320efca7 --- /dev/null +++ b/Documentation/fr/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le contexte @code{NoteNames} permet d'imprimer le nom des notes. La +propriété @code{printOctaveNames}, une fois activée, leur adjoindra une +indication d'octave. + +" + doctitlefr = "Impression des noms de notes avec ou sans indication d'octave" diff --git a/Documentation/fr/texidocs/printing-text-from-right-to-left.texidoc b/Documentation/fr/texidocs/printing-text-from-right-to-left.texidoc new file mode 100644 index 0000000000..ee3262246b --- /dev/null +++ b/Documentation/fr/texidocs/printing-text-from-right-to-left.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Du texte, inclus dans un objet @emph{markup}, peut s'imprimer de droite à +gauche, comme illustré ci-dessous. + +" + doctitlefr = "Impression de texte de droite à gauche" diff --git a/Documentation/fr/texidocs/printing-the-bar-number-for-the-first-measure.texidoc b/Documentation/fr/texidocs/printing-the-bar-number-for-the-first-measure.texidoc index 89ebb663ba..60599ac190 100644 --- a/Documentation/fr/texidocs/printing-the-bar-number-for-the-first-measure.texidoc +++ b/Documentation/fr/texidocs/printing-the-bar-number-for-the-first-measure.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est -inférieur à 2. Le fait de définir @code{barNumberVisibility} à +inférieur à@tie{}2. Le fait de définir @code{barNumberVisibility} à @code{all-bar-numbers-visible} vous permettra d'imprimer n'importe quel -numéro pour la première mesure. À noter que l'impression d'un numéro +numéro pour la première mesure. Notez que l'impression d'un numéro de mesure ne peut intervenir que s'il y a une barre. Aussi, pour pouvoir le faire au début d'un morceau, devrez-vous ajouter une barre vide avant la première note. diff --git a/Documentation/fr/texidocs/proportional-strict-notespacing.texidoc b/Documentation/fr/texidocs/proportional-strict-notespacing.texidoc new file mode 100644 index 0000000000..13c74cf7d4 --- /dev/null +++ b/Documentation/fr/texidocs/proportional-strict-notespacing.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsque la propriété @code{strict-note-spacing} est activée, +l'espacement des notes dans un système ne tient compte ni des barres de +mesure ni des clefs, qui se retrouvent placées juste avant la note qui +tombe au même moment. Ceci peut entraîner certaines collisions. + +" + doctitlefr = "Espacement strictement proportionnel des notes" diff --git a/Documentation/fr/texidocs/putting-lyrics-inside-the-staff.texidoc b/Documentation/fr/texidocs/putting-lyrics-inside-the-staff.texidoc new file mode 100644 index 0000000000..01f49f040a --- /dev/null +++ b/Documentation/fr/texidocs/putting-lyrics-inside-the-staff.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Des paroles peuvent venir s'inscrire dans la portée même. Ces paroles +sont décalées par la dérogation @code{\\override LyricText +#'extra-offset = #'(0 . dimension)} ; des commandes similaires +s'occuperont des extenseurs et des tirets. Le décalage optimal ne peut +s'obtenir qu'en procédant à tâtons. + +" + doctitlefr = "Impression des paroles dans la portée" diff --git a/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc b/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc index 1c4a1cc74d..f9111307a4 100644 --- a/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc +++ b/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc @@ -1,13 +1,12 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les citations tiennent compte de la transposition, aussi bien celle de -l'instrument d'origine que celle de la partie où elle intervient. Dans -l'exemple suivant, tous les instruments sont en tonalité de concert et -seront repris par un instrument en fa. Le destinataire de la citation +l'instrument d'origine que celle de la partie où elles interviennent. +Dans l'exemple suivant, tous les instruments sont en tonalité de concert +et seront repris par un instrument en fa. Le destinataire de la citation peut à son tour transposer à l'aide de la commande @code{\\transpose}. -En pareil cas, toutes les hauteurs, y compris celle de la citation, +En pareil cas, toutes les hauteurs, y compris celles de la citation, seront transposées. " doctitlefr = "Citation d'une autre voix et transposition" - diff --git a/Documentation/fr/texidocs/quoting-another-voice.texidoc b/Documentation/fr/texidocs/quoting-another-voice.texidoc index 90be0e5394..bfe993a6ff 100644 --- a/Documentation/fr/texidocs/quoting-another-voice.texidoc +++ b/Documentation/fr/texidocs/quoting-another-voice.texidoc @@ -1,16 +1,15 @@ -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les types d'événement pris en charge pour la citation peuvent se régler -avec la propriété @code{quotedEventTypes}. Par défaut, sa valeur est -fixée à @code{(note-event rest-event tie-event beam-event -tuplet-span-event)}, ce qui signifie que seuls les notes, silences, -liaisons, ligatures et nolets seront mentionnés par @code{\quoteDuring}. -Dans l'exemple suivant, le quart de soupir n'est pas reproduit puisqu'il -n'est pas mentionné parmi les @code{quotedEventTypes}. +Les types d'événement pris en charge pour la citation sont déterminés par +la propriété @code{quotedEventTypes}. Par défaut, sa valeur est fixée à +@code{(note-event rest-event tie-event beam-event tuplet-span-event)}, +ce qui signifie que seuls les notes, silences, liaisons, ligatures et +nolets seront mentionnés par @code{\\quoteDuring}. Dans l'exemple +suivant, le quart de soupir n'est pas reproduit puisqu'il n'est pas +mentionné parmi les @code{quotedEventTypes}. -Pour connaître la liste des types d'événements, reportez-vous au -chapitre @emph{Music classes} de la référence des propriétés internes. +Pour connaître la liste des types d'événements, reportez-vous à la +rubrique @emph{Music classes} de la référence des propriétés internes. " doctitlefr = "Citation d'une autre voix" - diff --git a/Documentation/fr/texidocs/recorder-fingering-chart.texidoc b/Documentation/fr/texidocs/recorder-fingering-chart.texidoc index 60e1f31375..8fab71cfbd 100644 --- a/Documentation/fr/texidocs/recorder-fingering-chart.texidoc +++ b/Documentation/fr/texidocs/recorder-fingering-chart.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Cet exemple illustre la manière de créer et afficher des indications de doigté pour instrument à vent. " doctitlefr = "Doigtés pour flûte à bec" - diff --git a/Documentation/fr/texidocs/redefining-grace-note-global-defaults.texidoc b/Documentation/fr/texidocs/redefining-grace-note-global-defaults.texidoc index 085d202687..b7fc1782b3 100644 --- a/Documentation/fr/texidocs/redefining-grace-note-global-defaults.texidoc +++ b/Documentation/fr/texidocs/redefining-grace-note-global-defaults.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Vous pouvez modifier les valeurs des variables @code{startGraceMusic}, @code{stopGraceMusic}, @code{startAcciaccaturaMusic}, -@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, et +@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic} et @code{stopAppoggiaturaMusic} afin d'en personnaliser les effets. Pour plus de détails, voir le fichier @file{ly/grace-init.ly}. diff --git a/Documentation/fr/texidocs/removing-bar-numbers-from-a-score.texidoc b/Documentation/fr/texidocs/removing-bar-numbers-from-a-score.texidoc index 932317c182..51ad12e6d6 100644 --- a/Documentation/fr/texidocs/removing-bar-numbers-from-a-score.texidoc +++ b/Documentation/fr/texidocs/removing-bar-numbers-from-a-score.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Désactiver le graveur concerné --- @code{Bar_number_engraver} --- -donnera une partition --- contexte @code{Score} --- sans numéros de +Désactiver le graveur concerné -- @code{Bar_number_engraver} -- +donnera une partition -- contexte @code{Score} -- sans numéros de mesure. " - doctitlefr = "Supprimer les numéros de mesure d'une partition" - + doctitlefr = "Suppression des numéros de mesure d'une partition" diff --git a/Documentation/fr/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc b/Documentation/fr/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc new file mode 100644 index 0000000000..0eba25341f --- /dev/null +++ b/Documentation/fr/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les barres de mesure des regroupements @code{StaffGroup}, +@code{PianoStaff} et @code{GrandStaff} sont par défaut d'un seul tenant. +La portion entre les portées peut néanmoins être supprimée, portée par +portée. + +" + doctitlefr = "Suppression de la partie inter-portée des barres de mesure d'un regroupement autre que ChoirStaff" diff --git a/Documentation/fr/texidocs/removing-the-first-empty-line.texidoc b/Documentation/fr/texidocs/removing-the-first-empty-line.texidoc index 3b66dbee55..ad1aad5981 100644 --- a/Documentation/fr/texidocs/removing-the-first-empty-line.texidoc +++ b/Documentation/fr/texidocs/removing-the-first-empty-line.texidoc @@ -1,11 +1,11 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Par défaut, le premier système comportera absolument toutes les portées. -Si vous voulez masquer les portées vides y compris pour le premier +Si vous préférez masquer les portées vides y compris pour le premier système, vous devrez activer la propriété @code{remove-first} du @code{VerticalAxisGroup}. Mentionnée dans un bloc @code{\\layout}, cette commande agira de manière globale. Pour qu'elle ne soit effective -que pour une portée individuelle, vous devrez également spécifier le +que pour une portée particulière, vous devrez également spécifier le contexte (@code{Staff} pour qu'il ne concerne que la portée en cours) en préfixe de la propriété. @@ -15,4 +15,3 @@ qu'à la portée dans laquelle il a été inscrit. " doctitlefr = "Masquage de la première ligne si elle est vide" - diff --git a/Documentation/fr/texidocs/rest-styles.texidoc b/Documentation/fr/texidocs/rest-styles.texidoc index d9dd6fcf4a..5def74e93f 100644 --- a/Documentation/fr/texidocs/rest-styles.texidoc +++ b/Documentation/fr/texidocs/rest-styles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les silences peuvent être gravés selon différents styles. diff --git a/Documentation/fr/texidocs/reverting-default-beam-endings.texidoc b/Documentation/fr/texidocs/reverting-default-beam-endings.texidoc index c8932945da..ba898fa17f 100644 --- a/Documentation/fr/texidocs/reverting-default-beam-endings.texidoc +++ b/Documentation/fr/texidocs/reverting-default-beam-endings.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 548076f550a2b7fb09f1260f0e5e2bb028ad396c +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Pour obtenir des ligatures en groupes de @code{3-4-3-2} croches, dans une mesure à 12/8, il faudra préalablement annuler les réglages par -défaut relatifs à 12/8, puis ajouter nos propres règles : +défaut relatifs à 12/8, puis ajouter les règles adaptées : " doctitlefr = "Annulation des règles de ligature par défaut" diff --git a/Documentation/fr/texidocs/rhythmic-slashes.texidoc b/Documentation/fr/texidocs/rhythmic-slashes.texidoc new file mode 100644 index 0000000000..6688fd75c4 --- /dev/null +++ b/Documentation/fr/texidocs/rhythmic-slashes.texidoc @@ -0,0 +1,16 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Il arrive, dans une feuille de chant « simple », que les notes soient +remplacées par une « pulsation » et que la structure de la chanson soit +indiquées par les accords au-dessus des mesures. Ceci peut être utile +lorsque l'on crée ou retranscrit la structure d'une chanson, ainsi que +pour donner au guitariste et musiciens de jazz une pseudo partition. Le +fonctionnement standard d'un @code{\\repeat percent} n'est pas ici +applicable puisque le premier temps doit être une note ou un silence. +Le code ci-dessous propose deux alternatives à ce problème en +redéfinissant l'aspect d'un silence. Si la durée d'un temps ne +correspond pas à la noire, le @code{r4} inclus dans la définition devra +être remplacé par un silence de durée appropriée. + +" + doctitlefr = "Barres rythmiques" diff --git a/Documentation/fr/texidocs/satb-choir-template---four-staves.texidoc b/Documentation/fr/texidocs/satb-choir-template---four-staves.texidoc index 6bc7eeec2e..8a056fac93 100644 --- a/Documentation/fr/texidocs/satb-choir-template---four-staves.texidoc +++ b/Documentation/fr/texidocs/satb-choir-template---four-staves.texidoc @@ -1,9 +1,7 @@ -%% Translation of GIT committish: 092f85605dcea69efff5ef31de4ff100346d6ef8 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Modèle pour chœur à quatre voix mixtes, chaque pupitre ayant sa propre portée. " doctitlefr = "Modèle pour chœur SATB, sur quatre portées" - diff --git a/Documentation/fr/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc b/Documentation/fr/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc new file mode 100644 index 0000000000..52f8423997 --- /dev/null +++ b/Documentation/fr/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc @@ -0,0 +1,17 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Les altérations supprimées lors d'un changement de tonalité sont par +défaut accolés à la nouvelle armure. Ce comportement peut s'adapter +grâce à la propriété @code{'break-align-orders} de l'objet +@code{BreakAlignment}. + +La valeur de @code{'break-align-orders} est constituée d'un vecteur à +trois composantes listant l'ordre des éléments à l'occasion d'une +rupture. Seule la deuxième liste est ici modifiée, +@code{key-cancellation} étant déplacé avant @code{staff-bar}. En ne +modifiant que la deuxième liste, cette modification dans l'ordre +d'apparition des éléments sera effective seulement en cours de système, +et non en début ou fin de ligne. + +" + doctitlefr = "Séparation entre altérations annulées et nouvelle armure" diff --git a/Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc b/Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc index d7b515890e..dfd9cbad3c 100644 --- a/Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc +++ b/Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc @@ -1,12 +1,11 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " En principe, un soufflet -- (de)crescendo imprimé sous forme graphique -- commence au bord gauche de la note de départ, et se termine au bord droit de la note d'arrivée. Cependant, si la note d'arrivée est sur un premier temps, le soufflet s'arrêtera au niveau de la barre de mesure qui la précède. Ce comportement peut être annulé -en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} : +en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline}. " doctitlefr = "Soufflets et barres de mesure" - diff --git a/Documentation/fr/texidocs/setting-system-separators.texidoc b/Documentation/fr/texidocs/setting-system-separators.texidoc new file mode 100644 index 0000000000..d014b6d2db --- /dev/null +++ b/Documentation/fr/texidocs/setting-system-separators.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La séparation entre deux systèmes consécutifs peut être mise en +évidence par n'importe quel @emph{markup}. LilyPond dispose à cet effet +d'une double oblique inversée : @code{\\slashSeparator}. + +" + doctitlefr = "Séparation visuelle entre les systèmes" diff --git a/Documentation/fr/texidocs/setting-the-double-repeat-default-for-volte.texidoc b/Documentation/fr/texidocs/setting-the-double-repeat-default-for-volte.texidoc index fbed734891..4f05981ad1 100644 --- a/Documentation/fr/texidocs/setting-the-double-repeat-default-for-volte.texidoc +++ b/Documentation/fr/texidocs/setting-the-double-repeat-default-for-volte.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 158658dc75b6f6553e77ff53119ac802eb91f50c - texidocfr = "LilyPond dispose de trois styles de barre différents -pour indiquer une succession de reprises. Vous devez opter pour un - style par défaut, à l'aide de la propriété @code{doubleRepeatType}. +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +LilyPond dispose de trois différents styles de barre pour indiquer une +succession de reprises. Vous devez opter pour un style par défaut, à +l'aide de la propriété @code{doubleRepeatType}. " - doctitlefr = "Succession de reprise et style de barre par défaut" - diff --git a/Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc b/Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc index 69a0483226..15f811e0c0 100644 --- a/Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc +++ b/Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Si un soufflet est trop court, il suffit d'ajuster la propriété @code{minimum-length} de l'objet @code{Hairpin} pour l'allonger. " doctitlefr = "Ajustement de la longueur d'un soufflet" - diff --git a/Documentation/fr/texidocs/shortening-volta-brackets.texidoc b/Documentation/fr/texidocs/shortening-volta-brackets.texidoc index 491459670f..8777438eee 100644 --- a/Documentation/fr/texidocs/shortening-volta-brackets.texidoc +++ b/Documentation/fr/texidocs/shortening-volta-brackets.texidoc @@ -1,10 +1,9 @@ -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les crochets indiquant les fins alternatives s'étalent tout au long ce -celle-ci. On peut les raccourcir en définissant la propriété +Les crochets indiquant les fins alternatives s'étalent tout au long de +celles-ci. On peut les raccourcir en jouant sur la propriété @code{voltaSpannerDuration}. Dans l'exemple suivant, le crochet ne se -prolonge que sur une mesure à 3/4. +prolonge que sur une mesure à 3/4. " doctitlefr = "Diminution de la taille du crochet d'alternative" - diff --git a/Documentation/fr/texidocs/showing-chords-at-changes.texidoc b/Documentation/fr/texidocs/showing-chords-at-changes.texidoc new file mode 100644 index 0000000000..faf1564f81 --- /dev/null +++ b/Documentation/fr/texidocs/showing-chords-at-changes.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Vous pouvez faire ressortir les chiffrages d'accords s'ils ne sont +imprimés qu'aux changements d'accord ou en début de ligne. + +" + doctitlefr = "Impression des accords si changement" diff --git a/Documentation/fr/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc b/Documentation/fr/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc new file mode 100644 index 0000000000..fb51dfcd30 --- /dev/null +++ b/Documentation/fr/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc @@ -0,0 +1,20 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +LilyPond ne permet pas, par défaut, qu'une même articulation (accent, +flageolet, point d'orgue etc.) se retrouve à la fois au-dessus et +au-dessous d'une note. Par exemple, @code{c4_\\fermata^\\fermata} ne +donnera qu'un seul point d'orgue en dessous du do ; celui du dessus sera +tout bonnement ignoré. On peut néanmoins accoler des scripts, tels des +doigtés, à l'intérieur d'un accord ; il peut donc y avoir autant +d'articulations que de besoin, ce qui, par voie de conséquence, permet +de s'affranchir de la présence de hampes et de positionner l'articulation +relativement à la tête de note comme dans le cas du flageolet +ci-dessous. L'imitation du traitement d'un script externe à un accord +requérant un @code{'add-stem-support}, la solution consiste à libeller +la note comme étant un accord et ajouter les articulations au sein de la +construction @code{<...>}. Un simple amendement permettra de rectifier +le positionnement habituel en surplomb : +@code{} + +" + doctitlefr = "Impression d'une même articulation des deux côtés d'une note ou d'un accord" diff --git a/Documentation/fr/texidocs/simple-lead-sheet.texidoc b/Documentation/fr/texidocs/simple-lead-sheet.texidoc index 5cfa9e1a8d..21a6dfb00c 100644 --- a/Documentation/fr/texidocs/simple-lead-sheet.texidoc +++ b/Documentation/fr/texidocs/simple-lead-sheet.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 9594a4569164407a146bbc4aad8be3a60a4725cf +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Assembler des noms d'accords, une mélodie et des paroles permet -d'obtenir la partition d'un chanson : +d'obtenir la partition d'un chanson@tie{}: " doctitlefr = "Chanson simple" diff --git a/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc b/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc index a87d3b4862..9b680680cc 100644 --- a/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc +++ b/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Ce cannevas comporte tous les éléments d'une chanson : la mélodie, +Ce canevas comporte tous les éléments d'une chanson : la mélodie, les paroles, les accords. " diff --git a/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc b/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc new file mode 100644 index 0000000000..34a892d806 --- /dev/null +++ b/Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Ce canevas comporte, en plus de la mélodie, des paroles et des accords, +les diagrammes de fret. + +" + doctitlefr = "Paroles, musique, accords et diagrammes de fret" diff --git a/Documentation/fr/texidocs/single-staff-template-with-notes-and-chords.texidoc b/Documentation/fr/texidocs/single-staff-template-with-notes-and-chords.texidoc index 185505ffa8..6c0cd14a70 100644 --- a/Documentation/fr/texidocs/single-staff-template-with-notes-and-chords.texidoc +++ b/Documentation/fr/texidocs/single-staff-template-with-notes-and-chords.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Vous avez besoin de la partition d'une mélodie avec les accords ? -N'allez pas plus loin ! +Vous avez besoin de la partition d'une mélodie avec les accords@tie{}? +N'allez pas plus loin@tie{}! " - -doctitlefr = "Mélodie simple et accords" + doctitlefr = "Mélodie simple et accords" diff --git a/Documentation/fr/texidocs/single-staff-template-with-notes-and-lyrics.texidoc b/Documentation/fr/texidocs/single-staff-template-with-notes-and-lyrics.texidoc index a81c6866b7..a6d38869d1 100644 --- a/Documentation/fr/texidocs/single-staff-template-with-notes-and-lyrics.texidoc +++ b/Documentation/fr/texidocs/single-staff-template-with-notes-and-lyrics.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce canevas comporte une simple ligne mélodique agrémentée de paroles. Recopiez-le, ajoutez-y d'autres notes et paroles. Les ligatures diff --git a/Documentation/fr/texidocs/single-staff-template-with-only-notes.texidoc b/Documentation/fr/texidocs/single-staff-template-with-only-notes.texidoc index 3a1d14a0da..44cb86b739 100644 --- a/Documentation/fr/texidocs/single-staff-template-with-only-notes.texidoc +++ b/Documentation/fr/texidocs/single-staff-template-with-only-notes.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Cet exemple simpliste se compose d'une portée agrémentée de quelques notes. Il convient tout à fait pour un instrument seul ou un fragment mélodique. Recopiez-le dans un nouveau fichier, ajoutez-y -d'autres notes et c'est pret ! +d'autres notes et c'est prêt ! " doctitlefr = "Portée unique avec quelques notes" diff --git a/Documentation/fr/texidocs/skips-in-lyric-mode-2.texidoc b/Documentation/fr/texidocs/skips-in-lyric-mode-2.texidoc new file mode 100644 index 0000000000..5183b212bd --- /dev/null +++ b/Documentation/fr/texidocs/skips-in-lyric-mode-2.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Sachant qu'un @code{s} au sein d'un bloc @code{\\lyricmode} est +interprété non comme de l'espace mais comme un mot, l'utilisation de +paires de guillemets informatiques (@code{\"\"}) ou un caractère +souligné simple (@code{_}) permet de « sauter » une note. + +" + doctitlefr = "Sauts de notes en mode paroles (2)" diff --git a/Documentation/fr/texidocs/skips-in-lyric-mode.texidoc b/Documentation/fr/texidocs/skips-in-lyric-mode.texidoc new file mode 100644 index 0000000000..9fd87ab27e --- /dev/null +++ b/Documentation/fr/texidocs/skips-in-lyric-mode.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La syntaxe @code{s} qui permet de « faire un saut dans le temps » n'est +disponible qu'en mode notes et en mode accords. Dans les autres +situations, comme en mode paroles par exemple, la commande @code{\\skip} +produit les mêmes effets. + +" + doctitlefr = "Sauts de notes en mode paroles" diff --git a/Documentation/fr/texidocs/slides-in-tablature.texidoc b/Documentation/fr/texidocs/slides-in-tablature.texidoc new file mode 100644 index 0000000000..b2ee5652ee --- /dev/null +++ b/Documentation/fr/texidocs/slides-in-tablature.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un glissando s'indique dans un @code{TabStaff} tout comme dans un +@code{Staff}. + +" + doctitlefr = "Glissando et tablature" diff --git a/Documentation/fr/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc b/Documentation/fr/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc new file mode 100644 index 0000000000..1f8e75dc5c --- /dev/null +++ b/Documentation/fr/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Un @emph{slap}, aussi appelé @emph{pizzicato à la Bartók}, est un +pizzicato où, au lieu de tirer la corde de côté comme à l'accoutumée, +« on la pince en la soulevant plus fortement, et à la verticale, en la +lâchant violemment. Celle-ci frappe alors la touche, et produit à la fois la +note et le son percussif » (Wikipedia). Il s'indique par un cercle +flanqué d'un trait vertical. + +" + doctitlefr = "Slap ou pizzicato Bartok" diff --git a/Documentation/fr/texidocs/specifying-context-with-beatgrouping.texidoc b/Documentation/fr/texidocs/specifying-context-with-beatgrouping.texidoc index eab901a541..499be83f32 100644 --- a/Documentation/fr/texidocs/specifying-context-with-beatgrouping.texidoc +++ b/Documentation/fr/texidocs/specifying-context-with-beatgrouping.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le fait de spécifier un contexte à @code{beatGrouping} permet d'en limiter les effets. Par voie de conséquence, il sera possible d'outrepasser les règles définies à un niveau supérieur. La commande @code{\\set} destinée à en modifier les valeurs doit se placer après la -commande @code{\\time} : +commande @code{\\time}. " doctitlefr = "Spécification du contexte auquel s'appliquera beatGrouping" diff --git a/Documentation/fr/texidocs/stand-alone-two-column-markup.texidoc b/Documentation/fr/texidocs/stand-alone-two-column-markup.texidoc index 952d8a32be..666d1db617 100644 --- a/Documentation/fr/texidocs/stand-alone-two-column-markup.texidoc +++ b/Documentation/fr/texidocs/stand-alone-two-column-markup.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " L'utilisation de la commande @code{\\markup} permet de distribuer un bloc de texte indépendant sur plusieurs colonnes. " doctitlefr = "Bloc de texte indépendant sur deux colonnes" - diff --git a/Documentation/fr/texidocs/stem-and-beam-behavior-in-tablature.texidoc b/Documentation/fr/texidocs/stem-and-beam-behavior-in-tablature.texidoc index a97a5cc9ec..2d93b667c7 100644 --- a/Documentation/fr/texidocs/stem-and-beam-behavior-in-tablature.texidoc +++ b/Documentation/fr/texidocs/stem-and-beam-behavior-in-tablature.texidoc @@ -1,5 +1,4 @@ -%% Translation of GIT committish: 718fa63a806b2ae307f320e250bc83236e9cd136 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La direction des hampes se gère dans les tablatures tout comme en notation traditionnelle. Les ligatures peuvent être mises à l'horizontale @@ -7,4 +6,3 @@ comme le montre cet exemple. " doctitlefr = "Hampes et ligatures en mode tablature" - diff --git a/Documentation/fr/texidocs/stem-cross-staff-engraver.texidoc b/Documentation/fr/texidocs/stem-cross-staff-engraver.texidoc new file mode 100644 index 0000000000..c8968fa783 --- /dev/null +++ b/Documentation/fr/texidocs/stem-cross-staff-engraver.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Le code ci-dessous illustre la manière de concevoir un graveur en +Scheme, ici chargé de connecter des hampes entre les portées. Nul n'est +besoin de spécifier la taille des hampes ; la fonction tient compte de +la distance relative des têtes de note avec les portées. + +" + doctitlefr = "Graveur de hampes inter-portées" diff --git a/Documentation/fr/texidocs/stemlets.texidoc b/Documentation/fr/texidocs/stemlets.texidoc new file mode 100644 index 0000000000..ee7c87e71a --- /dev/null +++ b/Documentation/fr/texidocs/stemlets.texidoc @@ -0,0 +1,18 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Certaines conventions en matière de notation autorisent les ligatures à +enjamber des silences. Dans certains cas, des moignons de hampe +accrochés à la ligature offrent une meilleure visibilité du rythme, et +certaines éditions modernes vont même alors jusqu'à omettre le silence. + +Cet exemple illustre la progression : notation traditionnelle, ligature +enjambant le silence, silence surplombé d'un moignon et enfin seule une +hampe tronquée. Les moignons s'obtiennent par amendement de la +propriété @code{'stemlet-length} de l'objet @code{Stem}, alors que les +silences sont masqués par activation de la propriété de transparence. + +Les @emph{markups} ajoutés au code ci-dessous mettent en exergue les +différentes notations. + +" + doctitlefr = "Moignons de hampe" diff --git a/Documentation/fr/texidocs/strict-beat-beaming.texidoc b/Documentation/fr/texidocs/strict-beat-beaming.texidoc new file mode 100644 index 0000000000..b11c0132e5 --- /dev/null +++ b/Documentation/fr/texidocs/strict-beat-beaming.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une sous-ligature tronquée peut pointer en direction de la pulsation à +laquelle elle se rattache. Dans l'exemple suivant, la première ligature +évite toute troncature (comportement par défaut), alors que la deuxième +respecte rigoureusement la pulsation. + +" + doctitlefr = "Ligature à la pulsation" diff --git a/Documentation/fr/texidocs/string-number-extender-lines.texidoc b/Documentation/fr/texidocs/string-number-extender-lines.texidoc new file mode 100644 index 0000000000..f4d92691fa --- /dev/null +++ b/Documentation/fr/texidocs/string-number-extender-lines.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment ajouter une ligne de prolongation à une indication de +numéro de corde, afin de stipuler que les notes qui suivent doivent être +jouées sur la corde en question. + +" + doctitlefr = "Ligne de prolongation pour numéro de corde" diff --git a/Documentation/fr/texidocs/string-quartet-template-simple.texidoc b/Documentation/fr/texidocs/string-quartet-template-simple.texidoc index fd383e22d7..35b60d726e 100644 --- a/Documentation/fr/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/fr/texidocs/string-quartet-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Voici un canevas pour quatuor à cordes. Notez l'utilisation de la variable @code{\\global} pour traiter la métrique et la tonalité. diff --git a/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc index 854f30f4e2..7113aea0a8 100644 --- a/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Grâce à ce canevas, vous pouvez obtenir une partition d'excellente facture pour quatuor à cordes mais aussi, si le besoin s'en faisait @@ -6,15 +6,14 @@ sentir, une partie séparée par instrument. Par ailleurs, cet exemple illustre l'utilisation de la fonction @code{\\tag} dans le but d'extraire des parties séparées. -Il vous faudra découper ce canevas en plusieurs fichiers séparés ; leur -nom respectif est indiqué en commentaire : @file{piece.ly} comporte tout +Il vous faudra découper ce canevas en plusieurs fichiers séparés ; leur +nom respectif est indiqué en commentaire : @file{piece.ly} comporte tout ce qui a trait à la musique, les autres fichiers -- @file{score.ly}, -@file{vn1.ly}, @file{vn2.ly}, @file{vla.ly}, et @file{vlc.ly} -- vous +@file{vn1.ly}, @file{vn2.ly}, @file{vla.ly} et @file{vlc.ly} -- vous permettront d'obtenir les parties selon le pupitre. - N'oubliez pas de supprimer les commentaires superflus des fichiers -individualisés ! +individualisés ! " doctitlefr = "Quatuor à cordes, avec parties séparées" diff --git a/Documentation/fr/texidocs/subdividing-beams.texidoc b/Documentation/fr/texidocs/subdividing-beams.texidoc index 70426d22d4..87ee5967ba 100644 --- a/Documentation/fr/texidocs/subdividing-beams.texidoc +++ b/Documentation/fr/texidocs/subdividing-beams.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Les ligatures d'une succession de notes de durée inférieure à la croche ne sont pas subdivisées par défaut. Autrement dit, tous les traits de -ligature ( deux ou plus) seront continus. Ce comportement peut être +ligature (deux ou plus) seront continus. Ce comportement peut être modifié afin de diviser la ligature en sous-groupes grâce à la propriété @code{subdivideBeams}. Lorsqu'elle est activée, les ligatures seront subdivisées selon un intervalle défini par @code{baseMoment}@tie{}; il n'y diff --git a/Documentation/fr/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc b/Documentation/fr/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc new file mode 100644 index 0000000000..4e54f3bc3f --- /dev/null +++ b/Documentation/fr/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc @@ -0,0 +1,15 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidoc = " +Lorsque des notes simultanées appartenant à des voix différentes ont la +même orientation de hampe et qu'aucun décalage n'a été appliqué ou qu'il +est identique, LilyPond émettra l'avertissement « @emph{ignoring too +many clashing note columns} » (trop d'empilements de notes se +chevauchent. On fera au mieux). On peut s'exonérer de cet avertissement +en activant la propriété @code{'ignore-collision} de l'objet +@code{NoteColumn}. Notez bien que ceci n'aura pas pour seul effet de +supprimer les avertissement ; les routines de résolution de collisions +sont par la même occasion déactivées, ce qui peut engendrer certains +désagréments si vous en abusez. + +" + doctitlefr = "Suppression des avertissements de chevauchement" diff --git a/Documentation/fr/texidocs/table-of-contents.texidoc b/Documentation/fr/texidocs/table-of-contents.texidoc new file mode 100644 index 0000000000..5232ed85c0 --- /dev/null +++ b/Documentation/fr/texidocs/table-of-contents.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'instruction @code{\\markuplist \\table-of-contents} permet d'inclure +une table des matières. Ses éléments sont ajoutés à l'aide de la +commande @code{\\tocItem}. + +" + doctitlefr = "Table des matières" diff --git a/Documentation/fr/texidocs/three-sided-box.texidoc b/Documentation/fr/texidocs/three-sided-box.texidoc new file mode 100644 index 0000000000..9113c6de35 --- /dev/null +++ b/Documentation/fr/texidocs/three-sided-box.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici comment construire une commande de @emph{markup} chargée +d'agrémenter du texte ou autre annotation, d'une bordure sur trois +côtés. + +" + doctitlefr = "Encadrement sur trois côtés" diff --git a/Documentation/fr/texidocs/tick-bar-lines.texidoc b/Documentation/fr/texidocs/tick-bar-lines.texidoc new file mode 100644 index 0000000000..fad813b092 --- /dev/null +++ b/Documentation/fr/texidocs/tick-bar-lines.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Lorsque les barres de mesure ne sont là que dans un but de coordination +et non pour accentuer le rythme, il arrive souvent qu'elles se +présentent sous la forme d'une simple encoche. + +" + doctitlefr = "Barre de mesure en encoche" diff --git a/Documentation/fr/texidocs/time-signature-in-parentheses---method-3.texidoc b/Documentation/fr/texidocs/time-signature-in-parentheses---method-3.texidoc new file mode 100644 index 0000000000..220af51f88 --- /dev/null +++ b/Documentation/fr/texidocs/time-signature-in-parentheses---method-3.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Autre manière de mettre la métrique entre parenthèses. + +" + doctitlefr = "Métrique entre parenthèses - méthode 3" diff --git a/Documentation/fr/texidocs/time-signature-in-parentheses.texidoc b/Documentation/fr/texidocs/time-signature-in-parentheses.texidoc new file mode 100644 index 0000000000..92c88a56db --- /dev/null +++ b/Documentation/fr/texidocs/time-signature-in-parentheses.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une métrique peut être mise entre parenthèses. + +" + doctitlefr = "Métrique entre parenthèses" diff --git a/Documentation/fr/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc b/Documentation/fr/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc index 2d18aff1dc..8ae9ab029e 100644 --- a/Documentation/fr/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc +++ b/Documentation/fr/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc @@ -1,16 +1,13 @@ -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -La métrique est parfois indiquée non pas par une fraction (p.ex. 7/4) +La métrique est parfois indiquée non pas par une fraction (par ex. 7/4) mais simplement par son numérateur (7 dans ce cas). L'instruction @code{\\override Staff.TimeSignature #'style = #'single-digit} permet de déroger au style par défaut de manière permanente -- un @code{\\revert -Staff.TimeSignature #'style} d'annuler ces modifications. Lorsque cette -métrique sous le forme d'une seul chiffre ne se présente qu'une seule +Staff.TimeSignature #'style} annulera ces modifications. Lorsque cette +métrique sous la forme d'un seul chiffre ne se présente qu'une seule fois, il suffit de faire précéder l'instruction @code{\\override} d'un simple @code{\\once}. " - doctitlefr = "Affichage seulement du numérateur d'une métrique (au -lieu d'une fraction)" - + doctitlefr = "Affichage seulement du numérateur d'une métrique (au lieu d'une fraction)" diff --git a/Documentation/fr/texidocs/transcription-of-ancient-music-with-incipit.texidoc b/Documentation/fr/texidocs/transcription-of-ancient-music-with-incipit.texidoc new file mode 100644 index 0000000000..3be4ba03ae --- /dev/null +++ b/Documentation/fr/texidocs/transcription-of-ancient-music-with-incipit.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Voici une méthode alternative pour ajouter un @emph{incipit} +indépendamment de la partition principale. Pour ce faire, il est inclus +sous forme de @emph{markup} dans le champ dévolu au nom d'instrument. +Les paroles ne peuvent, à ce jour, être ajoutées que sous forme +d'annotation directe, ce qui donne un espacement des paroles loin +d'égaler celui de la partition réelle. + +" + doctitlefr = "Transcription de musique ancienne avec incipit" diff --git a/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc index 4a998d1ad3..77d5f4671a 100644 --- a/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc +++ b/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Cet exemple, grâce à un peu de code Scheme, donne la priorité aux -enharmoniques afin de limiter le nombre d'altérations supplémentaires. -La règle appliquable est : +enharmoniques afin de limiter le nombre d'altérations supplémentaires. +La règle applicable est : @itemize @item @@ -25,5 +25,4 @@ Fa bémol -> Mi Cette façon de procéder aboutit à plus d'enharmoniques naturelles. " - - doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles" + doctitlefr = "Transposition et réduction du nombre d'altérations accidentelles" diff --git a/Documentation/fr/texidocs/tweaking-clef-properties.texidoc b/Documentation/fr/texidocs/tweaking-clef-properties.texidoc index 8dd27f105c..7e939fd646 100644 --- a/Documentation/fr/texidocs/tweaking-clef-properties.texidoc +++ b/Documentation/fr/texidocs/tweaking-clef-properties.texidoc @@ -1,34 +1,31 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph}, -@code{clefPosition} -- qui contrôle la position verticale de la clé -- -@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée +@code{clefPosition} -- qui contrôle la position verticale de la clef -- +@code{middleCPosition} et @code{clefOctavation}. Une clef est imprimée lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est modifiée. Les exemples suivant font apparaître des possibilités de réglage manuel de ces propriétés. - Modifier le glyphe, la position de la clef ou son octaviation ne -changera pas la position des notes ; il faut pour y parvenir modifier -aussi la position du do médium. Le positionnement est relatif à la -ligne médiane, un nombre positif faisant monter, chaque ligne ou -interligne comptant pour 1. La valeur de @code{clefOctavation} devrait -être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter -une autre valeur. - +changera pas la position des notes ; il faut pour y parvenir +modifier aussi la position du do médium. Le positionnement est relatif +à la ligne médiane, un nombre positif faisant monter, chaque ligne ou +interligne comptant pour 1. La valeur de @code{clefOctavation} +devrait être de 7, -7, 15 ou -15, bien que rien n'empêche de lui +affecter une autre valeur. Lorsqu'un changement de clef intervient en même temps qu'un saut de -ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au -début de la suivante. Vous pouvez toujours supprimer cette « clef de -précaution » en affectant la valeur @code{end-of-line-invisible} à la +ligne, la nouvelle clef est imprimée à la fois en fin de ligne et au +début de la suivante. Vous pouvez toujours supprimer cette « clef de +précaution » en affectant la valeur @code{end-of-line-invisible} à la propriété @code{explicitClefVisibility} du contexte @code{Staff}. Le comportement par défaut sera réactivé par -@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}. - +@code{\\unset Staff.explicitClefVisibility}. Les exemples qui suivent illustrent les différentes possibilités de définir ces propriétés manuellement. Sur la première ligne, la -position relative des notes par rapport aux clefs sont préservées, ce +position relative des notes par rapport aux clefs est préservée, ce qui n'est pas le cas pour la deuxième ligne. " diff --git a/Documentation/fr/texidocs/tweaking-grace-layout-within-music.texidoc b/Documentation/fr/texidocs/tweaking-grace-layout-within-music.texidoc index 2e7327f0ff..722d855faf 100644 --- a/Documentation/fr/texidocs/tweaking-grace-layout-within-music.texidoc +++ b/Documentation/fr/texidocs/tweaking-grace-layout-within-music.texidoc @@ -1,11 +1,11 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Il est possible de changer globalement la mise en forme des petites -notes dans un morceau, au moyen de la fonction -@code{add-grace-property}. Ici, par exemple, on ôte la définition de -l'orientation des objets @code{Stem} pour toutes les petites notes, -afin que les hampes ne soient pas toujours orientées vers le haut, et on -leur préfère des têtes en forme de croix. +Il est possible de changer globalement la mise en forme des notes d'ornement +dans un morceau, au moyen des fonctions @code{add-grace-property} et +@code{remove-grace-property}. Ici, par exemple, on ôte la définition de +l'orientation des objets @code{Stem} pour toutes les petites notes, afin +que les hampes ne soient pas toujours orientées vers le haut, et on leur +préfère des têtes en forme de croix. " doctitlefr = "Mise en forme des notes d'ornement" diff --git a/Documentation/fr/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc b/Documentation/fr/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc index 187e3f4aab..6aa3a30ebb 100644 --- a/Documentation/fr/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc +++ b/Documentation/fr/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc @@ -1,10 +1,9 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Un regroupement de portées sera indiqué par un simple rectangle -- @code{SystemStartSquare} -- en début de ligne dès lors que vous le mentionnerez explicitement au sein d'un contexte @code{StaffGroup} ou -@code{ChoirStaffGroup}. +@code{ChoirStaff}. " doctitlefr = "Indication de regroupement de portées par un rectangle" - diff --git a/Documentation/fr/texidocs/using-alternative-flag-styles.texidoc b/Documentation/fr/texidocs/using-alternative-flag-styles.texidoc new file mode 100644 index 0000000000..ecdedbd742 --- /dev/null +++ b/Documentation/fr/texidocs/using-alternative-flag-styles.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Une dérogation à la propriété @code{stencil} de l'objet @code{Flag} +permet aux croches et notes de durée inférieure d'adopter une autre +forme de crochet. Sont disponibles les variantes +@code{modern-straight-flag} et @code{old-straight-flag}. + +" + doctitlefr = "Crochets de style alternatif" diff --git a/Documentation/fr/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc b/Documentation/fr/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc index ab23c72a24..aca8f8a2df 100644 --- a/Documentation/fr/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc +++ b/Documentation/fr/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc @@ -1,11 +1,8 @@ -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les crochets d'arpegio (@code{arpeggioBracket}) permettent de mettre en +Un crochet d'arpège (@code{arpeggioBracket}) permet de mettre en évidence les divisions d'un pupitre en l'absence de hampe, comme on le voit régulièrement dans les partitions pour chœur. " - - doctitlefr = "Utilisation d'un arpeggioBracket pour rendre les -divisions plus évidentes" - + doctitlefr = "Utilisation d'un arpeggioBracket pour rendre les divisions plus évidentes" diff --git a/Documentation/fr/texidocs/using-beatlength-and-beatgrouping.texidoc b/Documentation/fr/texidocs/using-beatlength-and-beatgrouping.texidoc index 39f82d9f76..b2f1f5f3a3 100644 --- a/Documentation/fr/texidocs/using-beatlength-and-beatgrouping.texidoc +++ b/Documentation/fr/texidocs/using-beatlength-and-beatgrouping.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " La propriété @code{measureLength} détermine la pulsation et, combinée à @code{beatLength} et @code{beatGrouping}, comment générer les ligatures diff --git a/Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc b/Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc index 126ea09e38..33dc9d4f19 100644 --- a/Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc +++ b/Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc @@ -1,9 +1,8 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Certains auteurs utilisent deux liaisons lorsqu'ils veulent -lier des accords. Dans LilyPond, il faut pour cela activer -la propriété @code{doubleSlurs} : +Certains auteurs utilisent deux liaisons lorsqu'ils veulent lier des +accords. Dans LilyPond, il faut pour cela activer la propriété +@code{doubleSlurs}. " doctitlefr = "Accords et double liaison d'articulation" - diff --git a/Documentation/fr/texidocs/using-grace-note-slashes-with-normal-heads.texidoc b/Documentation/fr/texidocs/using-grace-note-slashes-with-normal-heads.texidoc index cb550186da..eac4c50896 100644 --- a/Documentation/fr/texidocs/using-grace-note-slashes-with-normal-heads.texidoc +++ b/Documentation/fr/texidocs/using-grace-note-slashes-with-normal-heads.texidoc @@ -1,8 +1,7 @@ -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Le trait que l'on trouve sur les hampes des acciaccatures peut être appliqué dans d'autres situations. " - doctitlefr = "Utilisation de hampe barrée pour une note normale" diff --git a/Documentation/fr/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc b/Documentation/fr/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc new file mode 100644 index 0000000000..4b4fb82102 --- /dev/null +++ b/Documentation/fr/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc @@ -0,0 +1,28 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Certains objets graphiques ne sont accessibles que par le biais d'un +@emph{callback} à partir d'un autre @code{grob}. Ils sont normalement +listés dans les « @emph{layout objects} » au sein de la section +« Propriétés internes » d'une @emph{grob-interface}. La fonction +@code{ly:grob-object} permet d'accéder à ces objets. + +Voici plusieurs moyens d'accéder aux objets par un @emph{callback} sur +@code{NoteHead}. D'autres biais sont naturellement possible ; +@code{NoteHead} a cependant l'avantage incontestable d'être utilisé +implicitement par la commande @code{\\tweak}. + +La fonction @code{display-grobs} définie ci-dessous n'est probablement +pas très utile. Elle indique toutefois qu'il est tout à fait possible +d'accéder aux objets. + +Voici par exemple ce qui sera émis dans la console : + +@example +-------------------- +# +# +# +@end example + +" + doctitlefr = "Utilisation de ly:grob-object pour accéder aux grobs avec \\tweak" diff --git a/Documentation/fr/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc b/Documentation/fr/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc index 30825ae56a..8557de8bfa 100644 --- a/Documentation/fr/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc +++ b/Documentation/fr/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 5a898cf43a2a78be6c3a58e4359dccd82196fbe7 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Lorsqu'il est impossible d'obtenir facilement une allure particulière pour les têtes de note en recourant à la technique du @code{\\markup}, un -code Postscript peut vous tirer d'embarras. Voici comment générer des +code PostScript peut vous tirer d'embarras. Voici comment générer des têtes ressemblant à des parallélogrammes. " - doctitlefr = "Utilisation de Postscript pour générer des têtes de note à l'allure particulière" + doctitlefr = "Utilisation de PostScript pour générer des têtes de note à l'allure particulière" diff --git a/Documentation/fr/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc b/Documentation/fr/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc new file mode 100644 index 0000000000..14a6be0249 --- /dev/null +++ b/Documentation/fr/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La commande @code{\\tweak} permet de retoucher directement n'importe +quel objet graphique. En voici quelques exemples : + +" + doctitlefr = "Utilisation de \\tweak pour retoucher des objets particuliers" diff --git a/Documentation/fr/texidocs/using-the-whiteout-property.texidoc b/Documentation/fr/texidocs/using-the-whiteout-property.texidoc new file mode 100644 index 0000000000..fc4eb18362 --- /dev/null +++ b/Documentation/fr/texidocs/using-the-whiteout-property.texidoc @@ -0,0 +1,20 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Tout objet graphique peut s'imprimer sur un fond blanc afin de masquer +une partie des objets qu'il recouvre. Ceci trouve toute son utilité +pour améliorer certaines collisions, notamment dans des situations où un +repositionnement d'objets est irréaliste. Il faut alors explicitement +définir la propriété @code{layer} afin de contrôler quels objets seront +masqués par le fond blanc. + +Dans l'exemple ci-dessous, la liaison est en collision avec la +métrique ; la situation est améliorée dès lors que la portion de liaison +qui traverse la métrique est masquée par l'affectation de la propriété +@code{whiteout} à l'objet @code{TimeSignature}. Pour ce faire, +@code{TimeSignature} est déplacé sur un calque au-dessus de celui de +@code{Tie} -- il reste sur le calque par défaut (1) --, puis le +@code{StaffSymbol} est placé sur un calque supérieur à celui de +@code{TimeSignature} pour ne pas être masqué. + +" + doctitlefr = "Utilisation de la propriété whiteout" diff --git a/Documentation/fr/texidocs/using-ties-with-arpeggios.texidoc b/Documentation/fr/texidocs/using-ties-with-arpeggios.texidoc index ba8f28c5c8..4f7417dcf8 100644 --- a/Documentation/fr/texidocs/using-ties-with-arpeggios.texidoc +++ b/Documentation/fr/texidocs/using-ties-with-arpeggios.texidoc @@ -1,9 +1,10 @@ -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans +Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans ce cas, les notes liées ne sont pas toutes consécutives. Il faut alors assigner à la propriété @code{tieWaitForNote} la valeur @code{#t} -(@emph{true} pour @qq{vrai}). Cette même méthode peut servir, par +(@emph{true} pour « vrai »). Cette même méthode peut servir, par exemple, à lier un trémolo à un accord. + " doctitlefr = "Liaison de tenue et arpège" diff --git a/Documentation/fr/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc b/Documentation/fr/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc new file mode 100644 index 0000000000..348435c4ab --- /dev/null +++ b/Documentation/fr/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +On trouve régulièrement, en musique baroque, cette courte ligne +verticale. Sa signification peut varier, mais elle indique le plus +souvent une note plus « appuyée ». Voici comment générer ce signe +particulier. + +" + doctitlefr = "Articulation baroque en forme de coche" diff --git a/Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc b/Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc index 6d9112d5ce..a687b862d4 100644 --- a/Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc +++ b/Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les -différents objets @code{DynamicLineSpanner} (souflets ou textuels) +différents objets @code{DynamicLineSpanner} (soufflets ou textuels) quelle que soit leur étendue, par rapport à un même point de référence. Tous les éléments seront alors centrés sur une même ligne, ce qui sera visuellement plus agréable. @@ -11,4 +11,3 @@ une ligne de référence. " doctitlefr = "Alignement vertical des nuances indications textuelles" - diff --git a/Documentation/fr/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc b/Documentation/fr/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc new file mode 100644 index 0000000000..fe8f2b98e0 --- /dev/null +++ b/Documentation/fr/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Des nuances qui commencent, finissent ou se produisent sur une même note +auront le même alignement vertical. L'augmentation de la propriété +@code{staff-padding} de l'objet @code{DynamicLineSpanner} permet +d'aligner différentes nuances affectées à différentes notes. + +" + doctitlefr = "Alignement vertical des nuances sur plusieurs notes" diff --git a/Documentation/fr/texidocs/vertically-aligning-ossias-and-lyrics.texidoc b/Documentation/fr/texidocs/vertically-aligning-ossias-and-lyrics.texidoc index 0d3c0387f7..af23230a80 100644 --- a/Documentation/fr/texidocs/vertically-aligning-ossias-and-lyrics.texidoc +++ b/Documentation/fr/texidocs/vertically-aligning-ossias-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Cet exemple illustre la manière de positionner une portée d'ossia et des paroles à l'aide des propriétés de contexte @code{alignBelowContext} @@ -6,4 +6,3 @@ et @code{alignAboveContext}. " doctitlefr = "Positionnement d'une ossia et des paroles" - diff --git a/Documentation/fr/texidocs/vertically-centered-common-lyrics.texidoc b/Documentation/fr/texidocs/vertically-centered-common-lyrics.texidoc new file mode 100644 index 0000000000..da15b4e3fd --- /dev/null +++ b/Documentation/fr/texidocs/vertically-centered-common-lyrics.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +Il arrive, dans certaines partitions vocales, que quelques paroles +soient communes à tous les couplets. Cette partie commune peut peut se +présenter verticalement centrée, comme dans l'exemple suivant. + +" + doctitlefr = "Centrage vertical de paroles communes" diff --git a/Documentation/fr/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc b/Documentation/fr/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc new file mode 100644 index 0000000000..7cbfcbb3ff --- /dev/null +++ b/Documentation/fr/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'activation de la propriété @code{useBassFigureExtenders} permet +d'afficher des lignes de prolongation pour les chiffres qui se répètent. +Deux chiffres prolongés sur la même durée se verront affublés d'un +unique prolongateur, verticalement centré entre eux, dès lors que la +propriété @code{figuredBassCenterContinuations} aura elle aussi été +activée. + +" + doctitlefr = "Prolongateur commun de basse figurée" diff --git a/Documentation/fr/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc b/Documentation/fr/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc index edb62dbf93..7da7a515bb 100644 --- a/Documentation/fr/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc +++ b/Documentation/fr/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce canevas ajoute une réduction pour piano à une partition standard pour chœur à quatre voix mixtes. Ceci illustre l'un des avantages de -LilyPond : une expression musicale peut être réutilisée sans effort. +LilyPond : une expression musicale peut être réutilisée sans effort. Toute modification apportée à l'une des voix, mettons @code{tenorMusique}, sera automatiquement reportée dans la réduction pour piano. diff --git a/Documentation/fr/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc b/Documentation/fr/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc index 809fde2c7c..fed2196fba 100644 --- a/Documentation/fr/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc +++ b/Documentation/fr/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes. La différence réside dans le fait que les paroles sont positionnées en diff --git a/Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc b/Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc index 3bd9398c1b..018d1e9600 100644 --- a/Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc +++ b/Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37 - +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce canevas illustre la manière d'agencer une œuvre vocale où le couplet est chanté en solo et le refrain à deux voix. Vous noterez le recours -aux silences invisibles dans la variable @code{\global}@tie{}; ils +aux silences invisibles dans la variable @code{\\global} ; ils permettent de positionner les changements de métrique et autres éléments -communs à toutes les parties et pour l'intégralité du morceau. +communs à toutes les parties, ce pour l'intégralité du morceau. + " doctitlefr = "Ensemble vocal avec couplet et refrain" diff --git a/Documentation/fr/texidocs/vocal-ensemble-template.texidoc b/Documentation/fr/texidocs/vocal-ensemble-template.texidoc index f3393b8381..3e78cc982c 100644 --- a/Documentation/fr/texidocs/vocal-ensemble-template.texidoc +++ b/Documentation/fr/texidocs/vocal-ensemble-template.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441 +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " Ce fichier constitue un canevas standard de partition pour chœur à quatre voix mixtes. Lorsque les ensembles s'étoffent, il est judicieux -de recourrir à une section spécifique incluse dans chacune des parties, +de recourir à une section spécifique incluse dans chacune des parties, tout particulièrement pour gérer la métrique et la tonalité qui, la plupart du temps, sont communes à tous les pupitres. Comme il est d'usage pour les hymnes, les quatre voix sont réparties sur deux diff --git a/Documentation/fr/texidocs/volta-below-chords.texidoc b/Documentation/fr/texidocs/volta-below-chords.texidoc new file mode 100644 index 0000000000..faaaef49e3 --- /dev/null +++ b/Documentation/fr/texidocs/volta-below-chords.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'ajout du @code{Volta_engraver} à la bonne portée permet d'imprimer les +crochets de reprise entre les chiffrages et la portée. + +" + doctitlefr = "Crochet de reprise sous les chiffrages d'accord" diff --git a/Documentation/fr/texidocs/volta-multi-staff.texidoc b/Documentation/fr/texidocs/volta-multi-staff.texidoc new file mode 100644 index 0000000000..5b6971229a --- /dev/null +++ b/Documentation/fr/texidocs/volta-multi-staff.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +L'ajout du @code{Volta_engraver} à la portée appropriée permet de +répéter les indications de reprise qui normalement n'apparaissent que +sur la portée supérieure de la partition. + +" + doctitlefr = "Volta multiportée" diff --git a/Documentation/fr/texidocs/volta-text-markup-using-repeatcommands.texidoc b/Documentation/fr/texidocs/volta-text-markup-using-repeatcommands.texidoc new file mode 100644 index 0000000000..1ea8511abd --- /dev/null +++ b/Documentation/fr/texidocs/volta-text-markup-using-repeatcommands.texidoc @@ -0,0 +1,16 @@ +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + texidocfr = " +La commande @code{\\repeat volta} permet d'indiquer facilement des +reprises. Il est certains cas où l'adjonction d'un texte sous forme de +@code{\markup} nécessite cependant de recourir à la propriété de +contexte @code{repeatCommands}. + +Dans la mesure où l'argument de @code{repeatCommands} est constitué +d'une liste, le plus simple est de définir le texte dans une variable +qui sera ensuite incorporée dans la liste en respectant la syntaxe Scheme +@code{#(list (list 'volta texteIdentificateur))}. Les commandes de +début et de fin de reprise peuvent s'ajouter séparément à la liste des +éléments. + +" + doctitlefr = "Indication de reprise avec texte grâce à repeatCommands" diff --git a/Documentation/fr/texidocs/woodwind-diagrams-key-lists.texidoc b/Documentation/fr/texidocs/woodwind-diagrams-key-lists.texidoc index 22ee648eea..4059cc1cdc 100644 --- a/Documentation/fr/texidocs/woodwind-diagrams-key-lists.texidoc +++ b/Documentation/fr/texidocs/woodwind-diagrams-key-lists.texidoc @@ -1,9 +1,11 @@ -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Le code suivant vous permettra d'obtenir une liste de toutes les -possibilités en matière de doigtés pour bois, tels qu'ils sont définis -dans le fichier @file{scm/define-woodwind-diagrams.scm}. Cette liste -sera produite en console et dans le fichier de journalisation, mais pas -sous forme de musique. +Le code suivant permet d'obtenir une liste de toutes les possibilités en +matière de doigtés pour bois, tels qu'ils sont définis dans le fichier +@file{scm/define-woodwind-diagrams.scm}. Cette liste sera produite en +dans le fichier de journalisation, mais pas sous forme de musique. Pour +un affichage en console, supprimez la partie @code{(current-error-port)} +des commandes. + " doctitlefr = "Liste des différents diagrammes de doigtés pour bois" diff --git a/Documentation/fr/texidocs/woodwind-diagrams-listing.texidoc b/Documentation/fr/texidocs/woodwind-diagrams-listing.texidoc index a9c8d89cd6..2fd5b411cd 100644 --- a/Documentation/fr/texidocs/woodwind-diagrams-listing.texidoc +++ b/Documentation/fr/texidocs/woodwind-diagrams-listing.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d +%% Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 texidocfr = " -Voici la liste des différents instruments à vent de la section des bois -dont les doigtés sont disponibles à ce jour. +Voici les différents instruments à vent de la section des bois pour +lesquels LilyPond peut, à ce jour, afficher des doigtés. + " doctitlefr = "Liste des diagrammes de doigtés pour bois" - diff --git a/Documentation/fr/translations.itexi b/Documentation/fr/translations.itexi index cd7cd48e69..82836d355b 100644 --- a/Documentation/fr/translations.itexi +++ b/Documentation/fr/translations.itexi @@ -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 Thu May 31 09:12:39 UTC 2012 } @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 @@ -134,11 +134,133 @@ partiellement (92 %) @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui +@end ifnothtml +@tab pré-GDP +@end multitable + + +@multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 + +@headitem +GNU LilyPond -- Extension des fonctionnalités +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations +@item +Titre des chapitres +@* +107 +@tab Jean-Charles Malahieude +@tab +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab pré-GDP +@item +LilyPond --- \TITLE\ +@* +1139 +@tab Jean-Charles Malahieude +@tab +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab pré-GDP +@item +1 Tutoriel Scheme +@* +6041 +@tab Jean-Charles Malahieude +@tab +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab pré-GDP +@item +2 Interfaces pour programmeurs +@* +5250 +@tab Valentin Villenave +@* +Jean-Charles Malahieude +@tab Gilles Thibault +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui @end ifnothtml @tab pré-GDP @end multitable @@ -249,7 +371,7 @@ oui @item 2 Bases de notation musicale @* -4184 +4187 @tab Nicolas Grandclaude @* Ludovic Sardain @@ -284,7 +406,7 @@ oui @item 3 Concepts fondamentaux @* -11139 +11130 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -313,7 +435,7 @@ oui @item 4 Retouche de partition @* -15408 +15468 @tab Valentin Villenave @* Nicolas Klutchnikoff @@ -346,7 +468,7 @@ partiellement @item A Modèles @* -225 +219 @tab Jean-Charles Malahieude @tab @tab @@ -462,17 +584,17 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 1.1 Hauteurs @* -4479 +4530 @tab Frédéric Chiasson @tab Valentin Villenave @* @@ -491,25 +613,25 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 1.2 Rythme @* -6048 +6352 @tab Frédéric Chiasson @* Jean-Charles Malahieude @tab Valentin Villenave @* -Jean-Charles Malahieude +François Martin @* - +Xavier Scheuer @tab @ifhtml @@ -524,17 +646,17 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 1.3 Signes d'interprétation @* -1726 +1712 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -565,7 +687,7 @@ oui @item 1.4 Répétitions et reprises @* -930 +1011 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -596,7 +718,7 @@ oui @item 1.5 Notes simultanées @* -2163 +2640 @tab Frédéric Chiasson @* Valentin Villenave @@ -619,17 +741,17 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 1.6 Notation sur la portée @* -2056 +2392 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -658,7 +780,7 @@ oui @item 1.7 Annotations éditoriales @* -931 +949 @tab Jean-Charles Malahieude @tab @tab @@ -675,17 +797,17 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 1.8 Texte @* -2716 +2729 @tab Jean-Charles Malahieude @tab Valentin Villenave @* @@ -743,13 +865,11 @@ oui @item 2.1 Musique vocale @* -4807 +4758 @tab Valentin Villenave @* Jean-Charles Malahieude -@tab Jean-Charles Malahieude -@* -Jean-Jacques Gerbaud +@tab Jean-Jacques Gerbaud @tab @ifhtml @@ -774,7 +894,7 @@ oui @item 2.2 Instruments utilisant des portées multiples @* -838 +862 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -836,7 +956,7 @@ oui @item 2.4 Instruments à cordes frettées @* -2640 +2675 @tab Matthieu Jacquot @tab Jean-Charles Malahieude @tab @@ -853,49 +973,49 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 2.5 Percussions @* -806 +812 @tab Valentin Villenave -@tab Jean-Charles Malahieude @* -John Mandereau +Jean-Charles Malahieude +@tab John Mandereau @tab @ifhtml @html -partiellement (46 %) +oui @end html @end ifhtml @ifnothtml -partiellement (46 %) +oui @end ifnothtml @tab @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 2.6 Instruments à vent @* -312 +321 @tab Valentin Villenave @* -Jean-Charles Malahieuse +Jean-Charles Malahieude @tab Jean-Charles Malahieude @* John Mandereau @@ -923,8 +1043,10 @@ oui @item 2.7 Notation des accords @* -1855 +2022 @tab Valentin Villenave +@* +Jean-Charles Malahieude @tab Jean-Charles Malahieude @* John Mandereau @@ -932,25 +1054,52 @@ John Mandereau @ifhtml @html -partiellement (48 %) +oui @end html @end ifhtml @ifnothtml -partiellement (48 %) +oui @end ifnothtml @tab @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item -2.8 Notations anciennes +2.8 Musique contemporaine +@* +475 +@tab Jean-Charles Malahieude +@tab +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab pré-GDP +@item +2.9 Notations anciennes @* 4752 @tab Jean-Charles Malahieude @@ -959,25 +1108,25 @@ partiellement @ifhtml @html -partiellement (47 %) +oui @end html @end ifhtml @ifnothtml -partiellement (47 %) +oui @end ifnothtml @tab @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item -2.9 Musiques du monde +2.10 Musiques du monde @* 1446 @tab Jean-Jacques Gerbaud @@ -998,17 +1147,17 @@ oui @ifhtml @html -partiellement +oui @end html @end ifhtml @ifnothtml -partiellement +oui @end ifnothtml @tab pré-GDP @item 3 Généralités en matière d'entrée et sortie @* -7069 +8701 @tab Jean-Charles Malahieude @* Valentin Villenave @@ -1027,17 +1176,17 @@ oui @ifhtml @html -oui +partiellement @end html @end ifhtml @ifnothtml -oui +partiellement @end ifnothtml @tab pré-GDP @item 4 Gestion de l'espace @* -11017 +11234 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -1066,7 +1215,7 @@ oui @item 5 Modification des réglages prédéfinis @* -12248 +12679 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -1075,27 +1224,27 @@ Jean-Charles Malahieude @ifhtml @html -partiellement (31 %) +oui @end html @end ifhtml @ifnothtml -partiellement (31 %) +oui @end ifnothtml @tab @ifhtml @html -oui +partiellement @end html @end ifhtml @ifnothtml -oui +partiellement @end ifnothtml @tab pré-GDP @item A Tables du manuel de notation @* -1989 +2177 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -1104,11 +1253,11 @@ Jean-Charles Malahieude @ifhtml @html -partiellement (85 %) +partiellement (95 %) @end html @end ifhtml @ifnothtml -partiellement (85 %) +partiellement (95 %) @end ifnothtml @tab @ifhtml @@ -1221,7 +1370,7 @@ oui @item 1 Exécution de @command{lilypond} @* -3622 +4615 @tab Jean-Charles Malahieude @tab @tab @@ -1248,7 +1397,7 @@ oui @item 2 Mise à jour avec @command{convert-ly} @* -1189 +1209 @tab Jean-Charles Malahieude @tab @tab @@ -1275,7 +1424,7 @@ oui @item 3 Association musique-texte avec @command{lilypond-book} @* -3764 +4137 @tab Jean-Charles Malahieude @tab @tab @@ -1292,17 +1441,17 @@ oui @ifhtml @html -N/A +oui @end html @end ifhtml @ifnothtml -N/A +oui @end ifnothtml @tab pré-GDP @item 4 Programmes externes @* -2170 +2390 @tab Jean-Charles Malahieude @tab @tab @@ -1327,7 +1476,7 @@ oui @end ifnothtml @tab pré-GDP @item -5 Suggestions pour la saisie de fichiers +5 Suggestions pour la saisie de fichiers LilyPond @* 2694 @tab Ludovic Sardain @@ -1376,7 +1525,7 @@ LilyPond -- la notation musicale pour tous @item Titre des chapitres @* -585 +616 @tab John Mandereau @tab @tab @@ -1430,7 +1579,7 @@ oui @item Introduction @* -4506 +4753 @tab Gauvain Pocentek @* Jean-Charles Malahieude @@ -1461,7 +1610,7 @@ oui @item Téléchargement @* -1183 +1211 @tab Jean-Charles Malahieude @* John Mandereau @@ -1490,7 +1639,7 @@ oui @item Manuels @* -1200 +1214 @tab John Mandereau @tab Jean-Charles Malahieude @tab @@ -1517,7 +1666,7 @@ oui @item Communauté @* -1755 +3006 @tab Jean-Charles Malahieude @* John Mandereau @@ -1536,11 +1685,11 @@ oui @ifhtml @html -oui +partiellement @end html @end ifhtml @ifnothtml -oui +partiellement @end ifnothtml @tab pré-GDP @end multitable diff --git a/Documentation/fr/usage.tely b/Documentation/fr/usage.tely index d4e14102fa..5cc71f37d7 100644 --- a/Documentation/fr/usage.tely +++ b/Documentation/fr/usage.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: c299f84d574ac9b97ab7ffbb640b5c3a1cdca5cc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -23,7 +23,7 @@ pratiques} pour une utilisation plus efficace. @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 par les auteurs. +Copyright @copyright{} 1999--2012 par les auteurs. @end macro @set FDL @@ -53,7 +53,7 @@ Copyright @copyright{} 1999--2011 par les auteurs. @c maybe add a "Tasks" or "Specific tasks" or something like @c that, after Suggestions -gp @menu -* Exécution de LilyPond:: mode d'emploi. +* Exécution de lilypond:: mode d'emploi. * Mise à jour avec convert-ly:: mise à jour d'anciens fichiers. * lilypond-book:: intégration de texte et musique. * Programmes externes:: associer LilyPond à d'autres programmes. diff --git a/Documentation/fr/usage/external.itely b/Documentation/fr/usage/external.itely index 597bba4413..f30d3675b0 100644 --- a/Documentation/fr/usage/external.itely +++ b/Documentation/fr/usage/external.itely @@ -1,14 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 446dc1f3ac9bfff6bfee31de929698b0425da6fe 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @@ -32,7 +31,21 @@ manières. @section Pointer-cliquer @translationof Point and click +Le pointer-cliquer ajoute des liens au sein des documents PDF, pour +certains événements musicaux. + +@menu +* Activation du pointer-cliquer:: +* Pointer-cliquer sélectif:: +@end menu + + +@node Activation du pointer-cliquer +@unnumberedsubsec Activation du pointer-cliquer +@translationof Enabling point and click + @cindex pointer-cliquer +@cindex point and click Le pointer-cliquer (@emph{point and click}) permet de se retrouver directement dans le fichier source, à la note que l'on pointe dans le @@ -61,7 +74,7 @@ urlCommand "lilypond-invoke-editor %s" se charge d'appeler un éditeur pour les identifants de ressource (@emph{URI}) de type @code{textedit}, et un navigateur pour les autres. Il teste en outre la variable d'environnement @code{EDITOR} pour les cas -suivant@tie{}: +suivant : @table @code @item emacs @@ -86,7 +99,7 @@ gvim --remote +:@var{line}:norm@var{column} @var{file} La variable d'environnement @code{LYEDITOR} permet d'anticiper cette affectation, puisqu'elle contient la commande qui permet de lancer l'éditeur en tenant compte des valeurs respectives de @code{%(file)s}, -@code{%(column)s} et@code{%(line)s}. Par exemple, +@code{%(column)s} et@code{%(line)s}. Par exemple, @example emacsclient --no-wait +%(line)s:%(column)s %(file)s @@ -98,7 +111,6 @@ client emacs standard. @cindex ficher de sortie, taille - @cindex taille du ficher de sortie L'option pointer-cliquer accroît la taille des fichiers de manière @@ -118,7 +130,7 @@ explicite grâce à @end example Le pointer-cliquer peut aussi être désactivé au moment de la compilation -en ligne de commande@tie{}: +en ligne de commande : @example lilypond -dno-point-and-click file.ly @@ -130,6 +142,83 @@ d'accès et autres informations propres à votre système ne se retrouvent pas inclus dans le fichier @file{.pdf}.} +@node Pointer-cliquer sélectif +@unnumberedsubsec Pointer-cliquer sélectif +@translationof Selective point-and-click + +Pour certaines applications interactives, il est parfois préférable de +limiter la fonctionnalité du pointer-cliquer à quelques éléments +seulement. Par exemple, si vous avez l'intention de créer une +application lançant l'audio et la vidéo à partir d'une note en +particulier, il serait mal venu qu'un clic sur la note vous amène à +l'altération ou une liaison qui l'affecterait. + +Les événements générateurs de lien peuvent se gérer : + +@itemize +@item +En dur dans votre fichier @file{.ly} : + +@example +\pointAndClickTypes #'note-event +\relative c' @{ + c2\f( f) +@} +@end example + +ou + +@example +#(ly:set-option 'point-and-click 'note-event) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +En ligne de commande : + +@example +lilypond -dpoint-and-click=note-event example.ly +@end example + +@end itemize + +Plusieurs types d'événement peuvent être mentionnés : + +@itemize +@item +En dur dans votre fichier @file{.ly} : + +@example +\pointAndClickTypes #'(note-event dynamic-event) +\relative c' @{ + c2\f( f) +@} +@end example + +ou + +@example +#(ly:set-option 'point-and-click '(note-event dynamic-event)) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +En ligne de commande : + +@smallexample +lilypond \ + -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ + example.ly +@end smallexample + + +@end itemize + + @node LilyPond et les éditeurs de texte @section LilyPond et les éditeurs de texte @translationof Text editor support @@ -162,16 +251,16 @@ consulter les manuels de LilyPond en mode info. Si le comme ci-dessous. Le répertoire @file{elisp} inclus dans les sources contient aussi un -mode pour saisir la musique et lancer LilyPond. Faites @command{make -install} pour l'installer dans votre @var{elispdir}. Le fichier -@file{lilypond-init.el} devrait trouver sa place dans +mode pour saisir la musique et lancer LilyPond. Faites +@command{make install} pour l'installer dans votre @var{elispdir}. Le +fichier @file{lilypond-init.el} devrait trouver sa place dans @var{load-path}@file{/site-start.d/} ou bien ajouté à votre @file{~/.emacs} ou @file{~/.emacs.el}. En tant que simple utilisateur, vous pouvez toujours ajouter votre propre répertoire (par exemple @file{~/site-lisp/}) à votre @var{load-path} en ajoutant la ligne suivante -- modifiée en conséquence --- à votre @file{~/.emacs}@tie{}: +-- à votre @file{~/.emacs} : @c any reason we do not advise: (push "~/site-lisp" load-path) @example @@ -185,9 +274,9 @@ propre répertoire (par exemple @file{~/site-lisp/}) à votre En ce qui concerne @uref{http://@/www@/.vim@/.org,Vim}, LilyPond fournit tout le nécessaire pour gérer la coloration syntaxique et l'indentation. -Le mode spécifique à Vim doît être indiqué dans le fichier +Le mode spécifique à Vim doit être indiqué dans le fichier @file{$HOME/.vimrc}. Localisez ce fichier, ou créez-le, et -ajoutez-y les trois lignes suivantes@tie{}: +ajoutez-y les trois lignes suivantes : @example filetype off @@ -226,12 +315,12 @@ de détails, rendez-vous sur le @uref{http://@/lilypond@/.org,site}. Il s'agit de programmes distincts de @command{lilypond} qui se lancent en ligne de commande. Pour plus de précisions, reportez-vous au chapitre @ref{Utilisation en ligne de commande}. Si vous utilisez MacOS -10.3 ou 10.4 et recontrez quelque problème avec l'un de ces scripts, +10.3 ou 10.4 et rencontrez quelque problème avec l'un de ces scripts, comme @code{convert-ly}, reportez-vous à la page @rweb{MacOS X}. @knownissues -Les développeurs ne sont malheureusement pas suffisament nombreux et +Les développeurs ne sont malheureusement pas suffisamment nombreux et disponibles pour maintenir à jour ces programmes, considérez-les donc @emph{en l'état}. Nous acceptons les patches avec plaisir, mais il y a peu de chance pour que nous soyons en mesure de résoudre les bogues de @@ -246,14 +335,13 @@ ces programmes. @end menu - @node Utilisation de midi2ly -@subsection Utilisation de @command{midi2ly} +@subsection Utilisation de @code{midi2ly} @translationof Invoking midi2ly @cindex MIDI -@command{midi2ly} traduit un fichier MIDI de Type@tie{}1 en un fichier +@command{midi2ly} traduit un fichier MIDI de Type 1 en un fichier source LilyPond. MIDI (Music Instrument Digital Interface) constitue un standard pour @@ -272,23 +360,23 @@ Vous pouvez enregistrer un fichier MIDI grâce à un clavier électronique et ensuite le convertir en fichier @file{.ly}. Néanmoins le rythme humain n'a pas une précision suffisante pour qu'une conversion MIDI à ly ne se fasse sans surprise. En le couplant à une -quantisation (options @code{-s} et @code{-d}), @command{midi2ly} tente -de compenser dans la mesure du possible ces problèmes de +quantisation (options @option{-s} et @option{-d}), @command{midi2ly} +tente de compenser dans la mesure du possible ces problèmes de temporisation. C'est la raison pour laquelle le recours à @command{midi2ly} n'est pas recommandé pour des fichiers midi générés manuellement. -Pour le lancer en ligne de commande, procédez ainsi@tie{}: +Pour le lancer en ligne de commande, procédez ainsi : @example midi2ly [@var{option}]@dots{} @var{fichier-midi} @end example -Notez bien que, par @qq{ligne de commande}, nous parlons de la ligne de +Notez bien que, par « ligne de commande », nous parlons de la ligne de commande du système. Pour plus de précisions, reportez-vous à @ref{Conversion à partir d'autres formats}. -@command{midi2ly} accepte les options suivantes@tie{}: +@command{midi2ly} accepte les options suivantes : @table @code @item -a, --absolute-pitches @@ -306,7 +394,7 @@ Afficher un résumé des utilisations. @item -k, --key=@var{acc}[:@var{minor}] Déterminer la tonalité par défaut. @math{@var{acc} > 0} fixe le nombre de dièses, @math{@var{acc} < 0} le nombre de bémols. Une -tonalité mineure est spécifiée par l'emploi de @code{:1}. +tonalité mineure est spécifiée par l'emploi de @code{:1}. @item -o, --output=@var{file} Générer le résultat dans le fichier @var{file}. @@ -330,16 +418,14 @@ Afficher les mentions de garantie et de copyright. Interpréter le texte comme des paroles. @end table - @knownissues - Le tuilage en arpège ne sera pas rendu correctement. La première note sera lue et les suivantes ignorées. Affectez-leur une durée unique et ajoutez une indication de phrasé ou de pédale. @node Utilisation de musicxml2ly -@subsection Utilisation de @command{musicxml2ly} +@subsection Utilisation de @code{musicxml2ly} @translationof Invoking musicxml2ly @cindex MusicXML @@ -357,14 +443,14 @@ Pour le lancer en ligne de commande, procédez ainsi : musicxml2ly [@var{option}]@dots{} @var{fichier-xml} @end example -Notez bien que, par @qq{ligne de commande}, nous parlons de la ligne de +Notez bien que, par « ligne de commande », nous parlons de la ligne de commande du système. Pour plus de précisions, reportez-vous à @ref{Conversion à partir d'autres formats}. Si le nom du fichier est @file{-}, @command{musicxml2ly} lira directement à partir de la ligne de commande. -@command{musicxml2ly} accepte les options suivantes@tie{}: +@command{musicxml2ly} accepte les options suivantes : @table @code @item -a, --absolute @@ -374,12 +460,20 @@ Rendu en hauteurs absolues. Afficher un résumé des utilisations. @item -l, --language=LANG -Utiliser une autre définition liguistique (LANG), comme par exemple +Utiliser une autre définition linguistique (LANG), comme par exemple @var{deutsch} pour des noms de notes en allemand. +@item --loglevel=@var{loglevel} +Détermine le degré de verbosité à @var{loglevel}. Les valeurs +autorisées sont @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (par défaut) et @code{DEBUG}. + @item --lxml Utiliser le paquetage Python @code{lxml.etree}, moins gourmand en -mémoire et temps de calcul, pour effectuer l'annalyse XML. +mémoire et temps de calcul, pour effectuer l'analyse XML. + +@item -m, --midi +Ajouter un bloc @code{\midi}. @item --nd --no-articulation-directions Ne pas convertir la direction (@code{^}, @code{_} ou @code{-}) des @@ -391,7 +485,7 @@ gérer les ligatures automatiquement. @item -o,--output=@var{file} Générer le résultat dans le fichier @var{fichier}. S'il n'est pas -déterminé, ce sera @var{fichier-xml}@file{.ly}@tie{}; @file{-} +déterminé, ce sera @var{fichier-xml}@file{.ly} ; @file{-} produira le résultat sur la sortie standard (@var{stdout}). @item -r,--relative @@ -409,11 +503,11 @@ Le fichier d'entrée est un fichier MusicXML zippé. @node Utilisation d'abc2ly -@subsection Utilisation de @command{abc2ly} +@subsection Utilisation de @code{abc2ly} @translationof Invoking abc2ly @warning{Ce programme ne bénéficie d'aucune maintenance. Il est -susceptible d'être suprimé des versions futures de LilyPond.} +susceptible d'être supprimé des versions futures de LilyPond.} @cindex ABC @@ -424,7 +518,7 @@ d'ABC}. @command{abc2ly} traduit du format ABC au format LilyPond. -Pour le lancer en ligne de commande, procédez ainsi@tie{}: +Pour le lancer en ligne de commande, procédez ainsi : @example abc2ly [@var{option}]@dots{} @var{fichier-abc} @@ -456,7 +550,7 @@ source ABC. Ainsi, l'assertion %%LY voices \set autoBeaming = ##f @end example -aura pour conséquence d'insérer le texte qui suit le mot-clé @qq{voices} +aura pour conséquence d'insérer le texte qui suit le mot-clé « voices » dans la voix correspondante du fichier LilyPond. De la même manière, @@ -465,30 +559,30 @@ De la même manière, %%LY slyrics more words @end example -placera le texte suivant le mot-clé @qq{slyrics} dans une ligne de +placera le texte suivant le mot-clé « slyrics » dans une ligne de paroles. @knownissues -Le standard ABC n'est pas si @qq{standard} que cela. Pour des +Le standard ABC n'est pas si « standard » que cela. Pour des fonctionnalités étendues, comme la polyphonie, existent différentes conventions. Un fichier comportant plusieurs morceaux ne peut être converti. -ABC synchronise paroles et musique en début de ligne@tie{}; -@command{abc2ly} ne le fait pas. +ABC synchronise paroles et musique en début de ligne ; @command{abc2ly} +ne le fait pas. @command{abc2ly} ignore les ligatures ABC. @node Utilisation d'etf2ly -@subsection Utilisation de @command{etf2ly} +@subsection Utilisation de @code{etf2ly} @translationof Invoking etf2ly @warning{Ce programme ne bénéficie d'aucune maintenance. Il est -susceptible d'être suprimé des versions futures de LilyPond.} +susceptible d'être supprimé des versions futures de LilyPond.} @cindex ETF @cindex enigma @@ -499,18 +593,17 @@ ETF (Enigma Transport Format) est l'un des formats utilisés par le logiciel Finale, édité par Coda Music Technology. @command{etf2ly} convertit partiellement les fichiers ETF en fichiers source LilyPond. - -Pour le lancer en ligne de commande, procédez ainsi@tie{}: +Pour le lancer en ligne de commande, procédez ainsi : @example etf2ly [@var{option}]@dots{} @var{fichier-etf} @end example -Notez bien que, par @qq{ligne de commande}, nous parlons de la ligne de +Notez bien que, par « ligne de commande », nous parlons de la ligne de commande du système. Pour plus de précisions, reportez-vous à @ref{Conversion à partir d'autres formats}. -@command{etf2ly} accepte les options suivantes@tie{}: +@command{etf2ly} accepte les options suivantes : @table @code @item -h,--help @@ -523,7 +616,6 @@ Générer le résultat dans le fichier @var{file}. Afficher le numéro de version. @end table - @knownissues La liste des scripts d'articulation est incomplète. Les mesures vides @@ -582,14 +674,14 @@ d'insérer directement des partitions LilyPond dans OpenOffice.org. @translationof Inserting LilyPond output into other programs Dans le cas où vous cherchez à insérer le résultat de LilyPond dans -d'autres programmes, utilisez @code{lilypond} plutôt que -@code{lilypond-book}. Chaque extrait devra être généré séparément avant -d'être inséré dans votre document. De très nombreux programmes sont -capables de contenir le résultat de LilyPond, que ce soit au format +d'autres programmes, utilisez @command{lilypond} plutôt que +@command{lilypond-book}. Chaque extrait devra être généré séparément +avant d'être inséré dans votre document. De très nombreux programmes +sont capables de contenir le résultat de LilyPond, que ce soit au format @file{PNG}, @file{EPS} ou @file{PDF}. Les options suivantes vous permettront de réduire notablement les -contours de l'image LilyPond@tie{}: +contours de l'image LilyPond : @example \paper@{ @@ -604,16 +696,21 @@ contours de l'image LilyPond@tie{}: @{ c1 @} @end example -En procédant comme ci-après, vous obtiendrez un fichier @file{EPS}@tie{}: +En procédant comme ci-après, vous obtiendrez des fichiers images : @example +EPS + lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts monfichier.ly -@end example -ou @file{PNG} : +PNG -@example lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png monfichier.ly + +PNG avec transparence + +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \ + -dpixmap-format=pngalpha --png monfichier.ly @end example @@ -627,7 +724,6 @@ où elles pourraient faire partie intégrante de LilyPond, vous pouvez toujours les télécharger et les utiliser avec la commande @code{\include}. - @menu * MIDI et articulations:: @end menu @@ -638,14 +734,14 @@ toujours les télécharger et les utiliser avec la commande @translationof MIDI articulation LilyPond sait produire des fichiers MIDI, principalement dans le but de -@qq{contrôle-qualité} -- heureux détenteurs d'une oreille absolue -- de +« contrôle qualité » -- heureux détenteurs d'une oreille absolue -- de ce qui a été saisi. Ne seront toutefois reproduits, en plus des notes et durées, que les nuances et tempi explicites. Le projet @emph{articulate} (site en anglais) s'est donné pour objectif de reproduire plus d'informations dans le MIDI. Les notes qui ne sont -pas liées sont ainsi raccourcies dans le but @qq{d'articuler}. Ce -raccourcissement dépend de l'articulation appliquée à la note@tie{}: un +pas liées sont ainsi raccourcies dans le but « d'articuler ». Ce +raccourcissement dépend de l'articulation appliquée à la note : un @emph{staccato} raccourcira la note de moitié, un @emph{tenuto} lui gardera sa durée entière@dots{} Ce script réalise aussi les trilles et @emph{grupettos} et compte bien traiter d'autres ornements tels que les @@ -658,8 +754,8 @@ mordants. @knownissues -Ce projet ne peut traiter que ce qu'il connaît@tie{}: tout ce qui peut +Ce projet ne peut traiter que ce qu'il connaît : tout ce qui peut ressembler à un @emph{markup} -- et donc pas à la propriété d'une note -- sera ignoré. - +@c LocalWords: noindent unnumberedsubsec knownissues diff --git a/Documentation/fr/usage/lilypond-book.itely b/Documentation/fr/usage/lilypond-book.itely index 16e625b84d..1453f6134e 100644 --- a/Documentation/fr/usage/lilypond-book.itely +++ b/Documentation/fr/usage/lilypond-book.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 8e1f0e01b3665bfd8e53ef646ad8fd627d09a41b + Translation of GIT committish: 0f93dd92ffa0319328e58148458d22c5448b3d58 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -9,7 +9,7 @@ @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @c Translation checkers: @@ -32,24 +32,24 @@ pour correspondre à la mise en forme de votre document. @command{lilypond-book} est un script indépendant de @command{lilypond} et se lance en ligne de commande -- pour plus de précisions, consultez -@ref{Utilisation en ligne de commande}. Si vous utilisez MacOS 10.3 ou -10.4 et rencontrez quelque difficulté avec @code{lilypond-book}, -référez-vous à @rwebnamed{MacOS X,cette page}. +@ref{Utilisation en ligne de commande}. Si vous utilisez MacOS ou +Windows et rencontrez quelque difficulté avec @code{lilypond-book}, +référez-vous à @rweb{MacOS X} ou @rweb{Windows}. @command{lilypond-book} s'applique aux documents @LaTeX{}, HTML, Texinfo et DocBook. @cindex texinfo -@cindex latex +@cindex LaTex @cindex texinfo @cindex texi -@cindex html +@cindex HTML @cindex docbook @cindex documents, ajout de musique @cindex HTML, musique et @cindex Texinfo, musique et @cindex DocBook, musique et -@cindex @LaTeX{}, musique et +@cindex LaTeX, musique et @menu @@ -87,7 +87,6 @@ abstiendrons de le commenter. @subheading Fichier d'entrée -@translationof Input @quotation @verbatim @@ -114,9 +113,9 @@ Les options sont indiquées entre crochets. Des extraits plus conséquents peuvent faire l'objet d'un fichier indépendant, alors inclus avec \verb+\lilypondfile+. -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(Si besoin, remplacez @file{screech-boink.ly} par +(Si besoin, remplacez @file{screech-and-boink.ly} par n'importe quel fichier @file{.ly} qui se trouve dans le même répertoire que le présent fichier.) @@ -126,7 +125,6 @@ le même répertoire que le présent fichier.) @subheading Traitement -@translationof Processing Enregistrez ces lignes dans un fichier nommé @file{lilybook.lytex} puis, dans un terminal, lancez @@ -148,7 +146,7 @@ xpdf lilybook Le traitement par @command{lilypond-book} puis @command{latex} va générer un certain nombre de fichiers temporaires susceptibles d'encombrer inutilement votre répertoire de travail, aussi nous vous -recommandons d'utiliser l'option @code{--output=@var{répertoire}} afin +recommandons d'utiliser l'option @option{--output=@var{répertoire}} afin que les fichiers créés soient isolés dans le sous-répertoire @file{répertoire}. @@ -160,7 +158,6 @@ la mise en forme diverge quelque peu.} @page @subheading Résultat -@translationof Output Un document destiné à être traité par @command{lilypond-book} peut tout à fait mélanger de la musique et du texte. @@ -181,8 +178,23 @@ c'4 f16 Des extraits plus conséquents peuvent faire l'objet d'un fichier indépendant, alors inclus avec @code{\lilypondfile}. -@lilypondfile[quote,noindent]{screech-boink.ly} +@lilypondfile[quote,noindent]{screech-and-boink.ly} +Lorsque vous désirez y inclure un @code{tagline}, personnalisé ou non, +l'intégralité de l'extrait devra apparaître dans une construction de +type @code{\book @{ @}}. + +@lilypond[papersize=a8,verbatim] +\book{ + \header{ + title = "LilyPond fait ses gammes" + } + + \relative c' { + c d e f g a b c + } +} +@end lilypond @page @@ -214,27 +226,47 @@ Consultez @emph{The Not So Short Introduction to @LaTeX{}} en français} pour un aperçu des possibilités de @LaTeX{}. -Il suffit, pour inclure de la musique, d'utiliser +Afin d'insérer de la musique dans vos fichiers @LaTeX{}, +@code{lilypond-book} dispose des environnements et commandes +suivantes@tie{}: + +@itemize + +@item +la commande @code{\lilypond@{...@}} qui permet de directement saisir du +code LilyPond simple@tie{}; + +@item +l'environnement @code{\begin@{lilypond@}...\end@{lilypond@}} qui permet +de saisir directement du code LilyPond plus élaboré@tie{}; + +@item +la commande @code{\lilypondfile@{...@}} qui permet d'insérer un fichier +LilyPond@tie{}; + +@item +la commande @code{\musicxmlfile@{...@}} qui permet d'insérer un fichier +MusicXML qui sera alors traité par @code{musicxml2ly} puis @code{lilypond}. + +@end itemize + + +Il suffit, pour inclure de la musique, d'utiliser l'une des instructions +suivantes@tie{}: @example \begin@{lilypond@}[liste,des,options] VOTRE CODE LILYPOND \end@{lilypond@} -@end example -@noindent -ou +\lilypond[liste,des,options]@{ VOTRE CODE LILYPOND @} -@example \lilypondfile[liste,des,options]@{@var{fichier}@} + +\musicxmlfile[liste,des,options]@{@var{fichier}@} @end example @noindent -ou encore - -@example -\lilypond[liste,des,options]@{ VOTRE CODE LILYPOND @} -@end example Par ailleurs, la commande @code{\lilypondversion} vous permet d'afficher le numéro de version de LilyPond. @@ -271,7 +303,7 @@ produit Dans l'état actuel des choses, il n'est pas possible d'inclure des accolades -- @code{@{} ou @code{@}} -- dans un @code{\lilypond@{@}}@tie{}; cette commande n'est donc pertinente que -lorsque conjuguée à l'option @code{fragment}. +lorsque conjuguée à l'option @option{fragment}. La longueur par défaut des portées sera ajustée en fonction des commandes contenues dans le préambule du document -- ce qui précède la @@ -282,7 +314,7 @@ algorithme heuristique n'est pas infaillible@tie{}; vous devrez alors recourir à l'option @code{line-width}. @cindex titrage et lilypond-book -@cindex \header et documents @LaTeX{} +@cindex \header et document @LaTeX{} Dès lors qu'elles auront été définies dans votre document, les macros suivantes seront appelées avant chaque extrait musical@tie{}: @@ -295,7 +327,7 @@ suivantes seront appelées avant chaque extrait musical@tie{}: @item @code{\betweenLilyPondSystem[1]} entre les systèmes, si tant est que @code{lilypond-book} a découpé la partition en plusieurs fichiers PostScript. Elle requiert un paramètre et reçoit le nombre de fichiers -inclus dans l'extrait. Par défaut, elle insert simplement un +inclus dans l'extrait. Par défaut, elle insère simplement un @code{\linebreak}. @end itemize @@ -417,26 +449,44 @@ GNU. À titre d'exemple, toute la documentation de LilyPond -- qu'il s'agisse des versions HTML, PDF ou info -- est générée à partir de documents Texinfo. -Dans le fichier source, on spécifie qu'il s'agit de musique avec +Afin d'insérer de la musique dans vos fichiers Texinfo, +@code{lilypond-book} dispose des environnements et commandes +suivantes@tie{}: + +@itemize + +@item +la commande @code{@@lilypond@{...@}} qui permet de directement saisir du +code LilyPond simple@tie{}; + +@item +l'environnement @code{@@lilypond...@@endlilypond} qui permet +de saisir directement du code LilyPond plus élaboré@tie{}; + +@item +la commande @code{@@lilypondfile@{...@}} qui permet d'insérer un fichier +LilyPond@tie{}; + +@item +la commande @code{@@musicxmlfile@{...@}} qui permet d'insérer un fichier +MusicXML qui sera alors traité par @code{musicxml2ly} puis @code{lilypond}. + +@end itemize + + +Il suffit, pour inclure de la musique, d'utiliser l'une des instructions +suivantes dans votre fichier source@tie{}: @example @@lilypond[liste,des,options] VOTRE CODE LILYPOND -@@end lilypond -@end example +@@endlilypond -@noindent -ou - -@example @@lilypond[liste,des,options]@{ VOTRE CODE LILYPOND @} -@end example - -@noindent -ou bien encore -@example @@lilypondfile[liste,des,options]@{@var{fichier}@} + +@@musicxmlfile[liste,des,options]@{@var{fichier}@} @end example Par ailleurs, l'utilisation d'un @code{@@lilypondversion} permet @@ -483,6 +533,47 @@ intégrer d'image dans le document, mais générer un paragraphe. @subsection HTML @translationof HTML +Afin d'insérer de la musique dans vos fichiers Texinfo, +@code{lilypond-book} dispose des environnements et commandes +suivantes@tie{}: + +@itemize + +@item +la commande @code{} qui permet de directement saisir du +code LilyPond simple@tie{}; + +@item +l'environnement @code{...} qui permet de saisir +directement du code LilyPond plus élaboré@tie{}; + +@item +la commande @code{...} qui permet d'insérer +un fichier LilyPond@tie{}; + +@item +la commande @code{...} qui permet d'insérer +un fichier MusicXML qui sera alors traité par @code{musicxml2ly} puis +@code{lilypond}. + +@end itemize + + +Il suffit, pour inclure de la musique, d'utiliser l'une des instructions +suivantes dans votre fichier source@tie{}: + +@example + + VOTRE CODE LILYPOND + + + + +@var{fichier} + +@var{fichier} +@end example + Il suffit, pour inclure de la musique, d'utiliser @example @@ -507,18 +598,22 @@ caractère deux points, comme ici@tie{}: De la musique au milieu d'une ligne de texte. @end example -Lorsque l'inclusion concerne des fichiers indépendants, utilisez +Lorsque l'inclusion concerne des fichiers indépendants, utilisez @example @var{fichier} @end example +La syntaxe pour @code{>musicXmlfile>} est identique à celle de +@code{}, à ceci près qu'elle fait référence à un fichier +MusicXML plutôt qu'à un fichier LilyPond. + Une liste des différentes options utilisables avec les balises @code{lilypond} et @code{lilypondfile} est disponible, à la rubrique @ref{Options applicables aux fragments de musique}. -Par ailleurs, la commande @code{\lilypondversion} vous permet d'afficher -le numéro de version de LilyPond. +Par ailleurs, la commande @code{} vous permet +d'afficher le numéro de version de LilyPond. @cindex titrage et HTML @cindex prévisualisation d'image @@ -537,7 +632,6 @@ respecterons plutôt les conventions des éléments standards de DocBook. @subheading Conventions communes -@translationof Common conventions Quel que soit le type d'extrait à inclure, nous utiliserons les éléments @code{mediaobject} et @code{inlinemediaobject}, de telle sorte @@ -551,7 +645,6 @@ Les fichiers DocBook destinés à un traitement par @subheading Inclusion d'un fichier LilyPond -@translationof Including a LilyPond file Il s'agit en fait du cas le plus simple. Le fichier à inclure doit avoir une extension @file{.ly} et sera inséré comme n'importe quel @@ -570,7 +663,6 @@ Vous pouvez utiliser, en tant que balise externe, aussi bien @subheading Inclusion de code LilyPond -@translationof Including LilyPond code L'inclusion de code LilyPond se réalise à l'aide d'un @code{programlisting} auquel on associe le langage @code{lilypond}. En @@ -595,7 +687,6 @@ Comme vous le remarquez, la balise externe -- qu'il s'agisse d'un @subheading Génération du document DocBook -@translationof Processing the DocBook document @command{lilypond-book} génère, à partir d'un fichier @file{.lyxml}, un document DocBook tout à fait valide -- extension @file{.xml} -- que vous @@ -632,7 +723,7 @@ d'autres termes, sera ajoutée la commande de mise en forme @w{@code{ragged-right = ##t}}. Il s'agit de l'option par défaut de la commande @code{\lilypond@{@}} en l'absence d'option @code{line-width}. C'est aussi l'option par défaut pour l'environnement @code{lilypond} -lorsque l'option @code{fragment} est activée sans avoir défini +lorsque l'option @option{fragment} est activée sans avoir défini explicitement de longueur de ligne. @item noragged-right @@ -654,7 +745,16 @@ par défaut telle que calculée par un algoritme heuristique. Lorsque l'option @code{line-width} n'est pas utilisée, @command{lilypond-book} tentera de déterminer des valeurs par défaut pour les cas où les environnements @code{lilypond} ne font pas appel à -@code{ragged-right}. +@option{ragged-right}. + +@item papersize=@var{chaîne} +Détermine le format du papier à @var{chaîne} tel que défini dans le +fichier @file{scm/paper.scm} -- @code{a5}, @code{quarto}, @code{11x17}, +etc. + +Toute valeur non mentionnée dans @file{scm/paper.scm} sera rejetée. +@code{lilypond-book} émettra un message d'avertissement et l'extrait +utilisera le format par défaut, à savoir @code{a4}. @item notime Désactive l'impression des métriques et barres de mesure pour @@ -691,11 +791,11 @@ où il s'agit du comportement par défaut, point n'est besoin de spécifier Réduit la longueur des lignes musicales de @math{2*0.4}@dmn{in} (soit @math{2 * 10,16}@tie{}@dmn{mm}) pour renvoyer l'extrait dans un bloc de citation. La valeur @qq{0,4@tie{}pouce} est contrôlée par l'option -@code{exampleindent}. +@option{exampleindent}. @item exampleindent Détermine la valeur de l'indentation qui sera utilisée par l'option -@code{quote}. +@option{quote}. @item relative @itemx relative=@var{n} @@ -703,9 +803,10 @@ Utilise le mode d'octave relative. Les notes sont donc par défaut positionnées relativement au do central. L'argument -- un nombre entier -- fourni à l'option @code{relative} spécifie l'octave de départ de l'extrait@tie{}; @code{1} correspond au do central. Cette option -@code{relative} n'a d'effet que si elle est utilisée en combinaison avec -l'option @code{fragment}@tie{}; autrement dit, l'option @code{fragment} -est implicite dès lors que @code{relative} est explicité. +@option{relative} n'a d'effet que si elle est utilisée en combinaison +avec l'option @option{fragment}@tie{}; autrement dit, l'option +@option{fragment} est implicite dès lors que @code{relative} est +explicité. @end table @@ -720,7 +821,7 @@ fichier généré, avant l'image de la partition. Cependant, cette option n'est pas pleinement opérationnelle lorsqu'un @code{\lilypond@{@}} se trouve au milieu d'un paragraphe. -L'utilisation conjointe d'un @code{verbatim} et de la commande +L'utilisation conjointe d'un @option{verbatim} et de la commande @code{lilypondfile} permet de n'inclure textuellement qu'une seule partie du fichier source. @code{lilypond-book} reproduira alors textuellement la partie du fichier source comprise entre les @@ -753,17 +854,18 @@ messages -- fichiers d'extension @code{.mo} -- du domaine @code{lilypond-doc}. @item addversion -Cette option, effective uniquement pour Texinfo, permet d'ajouter une +Cette option, effective uniquement avec Texinfo, permet d'ajouter une ligne @code{\version @@w@{"@@version@{@}"@}} au @code{verbatim}. @item texidoc -Option disponible uniquement pour Texinfo.@* +Option disponible uniquement avec Texinfo.@* Dès lors qu'un fichier @file{toto.ly} contient dans sa section -@code{\header} la variable @code{texidoc}, l'appel de @command{lilypond} +@code{\header} un champ @code{texidoc}, l'appel de @command{lilypond} avec l'option @option{--header=@/texidoc} créera le fichier @file{toto.texidoc}. Par ailleurs, c'est le contenu de ce @file{toto.texidoc} qui sera ensuite recopié par -@command{lilypond-book} en préambule de l'extrait de partition. +@command{lilypond-book} en préambule de l'extrait de partition -- soit +avant l'environnement @code{example} créé par un @code{quote}. Prenons par exemple le fichier @file{toto.ly} dont le contenu est @@ -796,22 +898,13 @@ Cette option est fort utile dans le cadre de l'adaptation en langue étrangère. En effet, s'il est spécifié dans le document Texinfo une clause @code{@@documentlanguage@tie{}@var{LANGUE}}, la présence d'une variable @code{texidoc@var{LANGUE}} dans l'entête du fichier -@file{foo.ly} entraînera la reproduction -- par l'appel +@file{toto.ly} entraînera la reproduction -- par l'appel @code{lilypond}@tie{}@option{--header=@/texidoc@var{LANGUE}} -- du contenu de @file{toto.texidoc@var{LANGUE}} en lieu et place de celui de @file{toto.texidoc}. -@item lilyquote -Option disponible uniquement pour Texinfo.@* -Cette option est équivalente à l'option @code{quote} à ceci près que -seule l'image de la partition -- ainsi que les éventuels blocs -@emph{verbatim} si vous la couplez à l'option @code{verbatim} -- fera -l'objet d'une citation. Cette option permet l'inclusion de la partition -en omettant les commentaires contenus dans le bloc @code{texidoc} du -fichier source. - @item doctitle -Option disponible uniquement pour Texinfo.@* +Option disponible uniquement avec Texinfo.@* Cette option fonctionne selon le même principe que l'option @code{texidoc}@tie{}: lorsqu'un fichier @file{toto.ly} contient dans son @code{\header} une variable @code{doctitle} et que @code{lilypond} @@ -850,11 +943,9 @@ nécessitent un traitement complémentaire. @subheading Instructions spécifiques à certains formats -@translationof Format-specific instructions @subsubheading @LaTeX{} -@translationof @LaTeX{} Un document @LaTeX{} destiné à l'impression ou à la publication peut se traiter de deux manières différentes@tie{}: générer directement un PDF @@ -897,19 +988,30 @@ lors de la génération du @file{.ps} puis dans le @file{.pdf}. La commande @command{dvips} peut déclencher certains messages concernant des fontes, que vous pouvez ignorer sans scrupule.@* Si vous utilisez @command{latex} en mode colonnage, n'oubliez pas -d'ajouter @option{-t landscape} aux options de @command{dvips}. +d'ajouter @option{-t@tie{}landscape} aux options de @command{dvips}. + +@knownissues +La commande @code{\pageBreak} est inopérante dans un environnement +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}}. + +Il en va de même pour un certain nombre de variables appartenant au bloc +@code{\paper}. Utilisez, entre autres, un @code{\newcommand} avec la +macrocommande @code{\betweenLilyPondSystem} dans le préambule. + +@example +\newcommand@{\betweenLilyPondSystem@}[1]@{\vspace@{36mm@}\linebreak@} +@end example @subsubheading Texinfo -@translationof Texinfo La génération d'un document Texinfo -- quel que soit le format final -- s'obtient grâce aux commandes Texinfo habituelles, c'est à dire @command{texi2pdf}, @command{texi2dvi} ou @command{makeinfo} selon le résultat que vous désirez obtenir. @ifinfo -@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, et @ref{Creating -an Info File, , , texinfo, GNU Texinfo}. +@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, et +@ref{Creating an Info File, , , texinfo, GNU Texinfo}. @end ifinfo @ifnotinfo Pour plus de détails, consultez la documentation de Texinfo. @@ -917,7 +1019,6 @@ Pour plus de détails, consultez la documentation de Texinfo. @subheading Options en ligne de commande -@translationof Command line options @command{lilypond-book} accepte les options suivantes@tie{}: @@ -955,10 +1056,18 @@ Affiche un bref résumé des options. @itemx --include=@var{répertoire} Ajoute @var{répertoire} au chemin des inclusions. Si des extraits ont déjà été compilés dans l'un des répertoires inclus, -@command{lilypond-book} ne les rééecria pas dans le répertoire de +@command{lilypond-book} ne les rééecria pas dans le répertoire de sortie@tie{}; il sera donc nécessaire, dans la suite du traitement par @command{makeinfo} ou @command{latex}, de penser à utiliser cette même -option @code{-I @var{répertoire}}. +option @code{-I@tie{}@var{répertoire}}. + +@item -l @var{loglevel} +@itemx --loglevel=@var{loglevel} +Détermine le degré de verbosité à @var{loglevel}. Les différentes +valeurs admises sont @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (par défaut) et @code{DEBUG}. Lorsque cette option n'est +pas activée, c'est le niveau déterminé par la variable d'environnement +@code{LILYPOND_BOOK_LOGLEVEL} qui sera utilisé. @item -o @var{dir} @itemx --output=@var{répertoire} @@ -991,6 +1100,14 @@ d'économiser du temps lors de la génération de documents qui se trouvent dans différents répertoires et partagent un certain nombre d'extraits identiques. +@itemx --lily-loglevel=@var{loglevel} +Détermine le degré de verbosité lors des appels à @command{lilypond}. +Les valeurs autorisée de @var{loglevel} sont@tie{}: @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{BASIC_PROGRESS}, @code{PROGRESS}, +@code{INFO} (par défaut) et @code{DEBUG}. Lorsque cette option n'est +pas activée, c'est le niveau déterminé par la variable d'environnement +@code{LILYPOND_LOGLEVEL} qui sera utilisé. + @itemx --info-images-dir=@var{répertoire} Formate la sortie Texinfo de telle sorte que Info cherche les images de musique dans @var{répertoire}. @@ -1015,11 +1132,16 @@ la droite, de la distance donnée en argument. Traite les extraits LilyPond avec @var{commande}. Par défaut, il s'agit de @code{lilypond}.@* Rappelez-vous que @code{lilypond-book} ne peut en même temps traiter -l'option @code{--filter} et l'option @code{--process}. +l'option @option{--filter} et l'option @option{--process}. @item --pdf Crée des fichiers PDF pour les retraiter avec PDF@LaTeX{}. +@item --redirect-lilypond-output +Le résultat des commandes est habituellement affiché dans le terminal. +Cette option permet de rediriger tout le verbiage dans un journal situé +dans le même répertoire que le fichier source. + @itemx --use-source-file-names Cette option permet d'affecter aux fichiers correspondant aux extraits de musique le même nom que leur source. Elle n'est fonctionnelle que @@ -1029,7 +1151,8 @@ et que les répertoires mentionnés par les options @code{--output-dir} et @item -V @itemx --verbose -@command{lilypond-book} sait être volubile@tie{}! +@command{lilypond-book} sait être volubile@tie{}! Cette option est +éqivalente à @code{--loglevel=DEBUG}. @item -v @itemx --version @@ -1054,10 +1177,10 @@ premier sera traité. Vous pouvez affecter à votre fichier source n'importe quelle extension. Nous vous recommandons cependant un certain nombre d'extensions selon le -format de sortie désiré. Une extension hors du commun vous obligera à -spécifier le format de sortie, alors que @code{lilpond-book} est en -mesure de déterminer le format de sortie en fonction de l'extension du -fichier source. +format de sortie désiré -- voir @ref{Utilisation de lilypond-book}. Une +extension hors du commun vous obligera à spécifier le format de sortie, +alors que @code{lilpond-book} est en mesure de déterminer le format de +sortie en fonction de l'extension du fichier source. @quotation @multitable @columnfractions .2 .5 @@ -1082,7 +1205,7 @@ Lorsque le fichier source a la même extension que celle que lancez @code{lilypond-book} à partir du répertoire le contenant, vous verrez assurément un message du type @qq{La sortie va écraser le fichier d'entrée}. Aussi ne saurions-nous trop vous conseiller d'utiliser -l'option @code{--output}. +l'option @option{--output}. @node Modèles pour lilypond-book @@ -1093,8 +1216,7 @@ Voici quelques canevas dédiés à @code{lilypond-book}. Si vous ne savez pas de quoi il retourne, lisez le chapitre @ref{lilypond-book}. -@subsection LaTeX -@translationof LaTeX +@subsection @LaTeX{} Vous pouvez inclure des partitions LilyPond dans un document LaTeX. @@ -1121,7 +1243,6 @@ d4 c b a @subsection Texinfo -@translationof Texinfo Un document Texinfo est tout à fait capable de comporter des fragments de partition LilyPond. Si vous ne le savez pas encore, sachez que @@ -1132,7 +1253,7 @@ l'intégralité de ce manuel est rédigée en Texinfo. @@node Top @@top -Du verbiage en mode Texinfo +Du verbiage à la mode Texinfo @@lilypond \relative c' @{ @@ -1151,7 +1272,6 @@ d4 c b a @subsection html -@translationof html @example @@ -1185,7 +1305,6 @@ a4 b c d @subsection xelatex -@translationof xelatex @verbatim \documentclass{article} @@ -1245,7 +1364,7 @@ werden. @section Gestion de la table des matières @translationof Sharing the table of contents -Les fonctions qui sint ici mentionnées sont incluses dans le paquetage +Les fonctions ici mentionnées sont incluses dans le paquetage OrchestralLily, disponible sur @example @@ -1258,7 +1377,6 @@ la récupèrent dans @LaTeX{}. @subsubheading Export de la table à partir de LilyPond -@translationof Exporting the ToC from LilyPond Nous partons du principe que LilyPond a généré un seul fichier comportant tous les mouvement de la partition. @@ -1290,8 +1408,7 @@ comportant tous les mouvement de la partition. @end smallexample -@subsubheading Import de la table dans LaTeX -@translationof Importing the ToC into LaTeX +@subsubheading Import de la table dans @LaTeX{} L'entête de votre fichier @LaTeX{} doit comporter les lignes @@ -1355,7 +1472,7 @@ où @code{\includescore} est défini ainsi@tie{}: @node Autres méthodes d'association texte-musique @section Autres méthodes d'association texte-musique -@translationof Alternative methods of mixing text and music +@translationof Alternate methods of mixing text and music D'autres moyens de mélanger musique et texte sans recourir à @command{lilypond-book} sont abordés au chapitre diff --git a/Documentation/fr/usage/running.itely b/Documentation/fr/usage/running.itely index 17b7f4d5af..a501184bf7 100644 --- a/Documentation/fr/usage/running.itely +++ b/Documentation/fr/usage/running.itely @@ -1,19 +1,18 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- - @ignore - Translation of GIT committish: 79165c00e7aadfefb0748ff55b29a1927cb87acd + Translation of GIT committish: c610645cc9a77cba1a2798280965db142d649ac5 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @c Translation checkers: -@node Exécution de LilyPond +@node Exécution de lilypond @chapter Exécution de @command{lilypond} @translationof Running lilyPond @@ -62,7 +61,8 @@ nombreuses documentations que vous pourrez trouver sur ce sujet. @menu * Lancement de lilypond:: -* Options en ligne de commande pour lilypond:: +* Options basiques de lilypond:: +* Options avancées de lilypond:: * Variables d'environnement:: * Exécution de LilyPond en mode protégé:: @end menu @@ -136,9 +136,9 @@ Notez bien qu'il s'agit ici de commandes internes à l'interpréteur et qui n'ont rien à voir avec LilyPond. -@node Options en ligne de commande pour lilypond -@unnumberedsubsec Options en ligne de commande pour @command{lilypond} -@translationof Command line options for lilypond +@node Options basiques de lilypond +@unnumberedsubsec Options basiques de @command{lilypond} +@translationof Basic command line options for LilyPond @cindex lancement de @command{lilypond} @cindex ligne de commande, options pour @command{lilypond} @@ -146,13 +146,18 @@ qui n'ont rien à voir avec LilyPond. @cindex switches @cindex commutateurs -Voici les différentes options disponibles à la ligne de commande@tie{}: +Différentes options sont disponibles en ligne de commande@tie{}: @table @code +@item -d,--define-default=@var{variable}=@var{valeur} +Voir @ref{Options avancées de lilypond}. + +@cindex Scheme, évaluation d'expression +@cindex expression Scheme, évaluation @item -e,--evaluate=@var{expr} Évalue l'expression Scheme @var{expr} avant d'analyser tout fichier -@file{.ly}. Lorsque vous spécifiez l'option @code{-e} à plusieurs +@file{.ly}. Lorsque vous spécifiez l'option @option{-e} à plusieurs reprises, l'évaluation sera faite en séquence. Dans la mesure où l'expression est évaluée par le module @@ -173,246 +178,55 @@ en ligne de commande, et ajouter la ligne @noindent en tête de votre fichier @file{.ly}. +@warning{Les utilisateurs de Windows doivent utiliser des guillemets +doubles @code{"} en lieu et place des guillemets simples @code{'}.} +@c Match " in context-sensitive editors +@cindex sortie, format +@cindex format de sortie @item -f,--format=@var{format} Détermine le format à produire. Il peut s'agir de @code{ps}, @code{pdf} ou @code{png}. Exemple : @code{lilypond -fpng @var{monfichier}.ly} - -@item -d,--define-default=@var{var}=@var{val} -Affecte la valeur Scheme @var{val} à l'option interne @var{var} du -programme. En l'absence de @var{val}, le programme utilisera @var{#t}. -Préfixer @var{var} d'un @code{no-} vous permet de désactiver une option. -Ainsi, - -@cindex point and click, ligne de commande - -@example --dno-point-and-click -@end example - -@noindent -revient au même que -@example --dpoint-and-click='#f' -@end example - - -Voici quelques options des plus intéressantes. - -@cindex help, ligne de commande - -@table @samp -@item help -Lancer @code{lilypond -dhelp} affichera la liste de toutes les options -@code{-d} disponibles. - - -@cindex paper-size, ligne de commande - -@item paper-size -Détermine la taille par défaut du papier, par exemple -@example --dpaper-size=\"letter\" -@end example - -@noindent -Veillez à ne pas oublier d'encadrer la valeur par des guillemets -échappés ( @code{\"} ). -@c Match " in previous line to help context-sensitive editors - - -@cindex safe, ligne de commande - -@item safe -Ne pas avoir une confiance aveugle dans le code @file{.ly}. - -Lorsque LilyPond est accessible au travers d'un serveur web, il est -@strong{impératif} d'utiliser les options @code{--safe} ou -@code{--jail}. L'option @code{--safe} aura pour effet d'empêcher tout -code Scheme inclus de mettre en péril votre installation grâce à quelque -chose du style - -@quotation -@verbatim -#(system "rm -rf /") -{ - c4^#(ly:export (ly:gulp-file "/etc/passwd")) -} -@end verbatim -@end quotation - -L'option @code{-dsafe} forcera l'évaluation, au fil de l'eau et par un -module sécurisé, des expressions Scheme contenues dans le fichier -source. Ce module sécuritaire, dérivé du module GUILE @file{safe-r5rs}, -ajoute un certain nombre de fonctions -- listées dans -@file{scm/safe-lily.scm} -- à l'API de LilyPond. - -De plus, le mode @emph{safe} ne permet ni l'utilisation de directives -@code{\include} ni le recours aux obliques inversées (@emph{backslash}) -dans les chaînes @TeX{}. - -L'import de variables LilyPond dans du code Scheme n'est pas possible -en mode sécuritaire. - -L'option @code{-dsafe} @strong{ne détecte pas} l'utilisation abusive des -ressources. Il est donc possible que le programme finisse par rester -sans réponse si on lui envoie une boucle sans fin. C'est la raison pour -laquelle nous recommandons, lorsque LilyPond tourne sur un serveur -accessible au public, d'en limiter aussi bien les ressources processeur -que mémoire. - -Notez bien que l'utilisation du mode sécuritaire empêchera aussi la -compilation d'un certain nombre de fragments LilyPond. L'option -@code{--jail} est dans ce cas une excellente alternative en terme de -sécurité, même si elle requiert plus de temps à mettre en place. - - -@cindex format de sortie, définition - -@item backend -Détermine le format de sortie à utiliser par le moteur de traitement. -Les types de @code{format} reconnus sont -@table @code -@item ps -@cindex PostScript output - pour du PostScript. - -Les fichiers PostScript incluent les polices TTF, Type1 et OTF, et -aucune substitution ne sera opérée pour ces fontes. Si vous utilisez -des caractères orientaux, le fichier aura vite fait d'atteindre une -taille conséquente. - - -@item eps -@cindex Postscript encapsulé -@cindex EPS (Encapsulated PostScript) - pour du PostScript encapsulé. - -Chaque page (système) fera l'objet d'un fichier @file{EPS} particulier, -sans fontes, auquel sera associé un fichier @file{EPS} qui, lui, -contiendra toutes les pages (systèmes) et les fontes. - -Notez qu'il s'agit du mode que @command{lilypond-book} utilise par défaut. - -@item svg -@cindex SVG (Scalable Vector Graphics) - pour du SVG (@emph{Scalable Vector Graphics}). - -Cette option permet de créer un fichier SVG par page, sans incorporation -des fontes. Nous vous recommandons d'installer les fontes Century -Schoolbook comprises dans le paquetage LilyPond afin d'obtenir le -meilleur rendu possible. Sous UNIX, il suffit de les recopier, à partir -du répertoire @file{/usr/share/lilypond/VERSION/fonts/otf/}, dans -@file{~/.fonts/}. Les fichiers SVG alors générés devraient être -lisibles par votre éditeur SVG habituel. - -@item scm -@cindex Scheme dump - pour une recopie brute des commandes Scheme internes de formatage. - -@item null - permet de ne pas générer de partition imprimable. Cette option est - équivalente à @code{-dno-print-pages}. - -@end table - -Exemple : @code{lilypond -dbackend=svg @var{monfichier}.ly} - - -@item preview -@cindex preview, ligne de commande -Génère un fichier comprenant le titrage et le premier système. S'il -existe plusieurs sections @code{\bookpart}, ce fichier contiendra les -titrage et premier système de chacun des @code{\bookpart}. Cette -option fonctionne pour les moteurs de traitement @code{ps}, @code{eps} -et @code{svg}. - - -@item print-pages -Génère l'intégralité des pages de la partition. L'option -@code{-dno-print-pages} est particulièrement utile lorsqu'utilisée -conjointement avec l'option @code{-dpreview}. - -@end table - - - @item -h,--help Affiche un résumé des commandes. - @item -H,--header=@var{CHAMP} Recopie le champ d'entête dans le fichier @file{RACINE.@var{CHAMP}}. +@item -i,--init=@var{fichier} +Définit @var{fichier} (par défaut @file{init.ly}) en tant que fichier +d'initialisation. -@item --include, -I=@var{répertoire} @cindex recherche de fichier -@cindex search path - +@cindex chemin de recherche +@item -I,--include=@var{répertoire} Ajoute @var{répertoire} au chemin de recherche pour les inclusions. -Vous pouvez mentionner plusieurs fois l'option @code{-I}, auquel cas le +Vous pouvez mentionner plusieurs fois l'option @option{-I}, auquel cas la recherche commencera dans le premier répertoire inclus et, si le fichier en question ne s'y trouve pas, les répertoires suivants seront examinés l'un après l'autre. - -@item -i,--init=@var{fichier} -Définit @var{fichier} (par défaut @file{init.ly}) en tant que fichier -d'initialisation. - - -@item -o,--output=@var{FICHIER} ou @var{RÉP} -@cindex répertoire de destination -@cindex fichier de destination - -Détermine le nom par défaut du fichier résultant à @var{FICHIER}@tie{}; -lorsque l'argument @var{RÉP} correspond à un répertoire déjà existant, -c'est là que les fichiers résultants seront déposés. Le suffixe adéquat -sera ajouté (p.ex. @file{.pdf} pour du pdf) dans tous les cas. - - -@cindex PostScript output - -@item --ps -Génère du PostScript. - - -@cindex Portable Network Graphics (PNG) output - -@item --png -Génère une image par page, au format PNG@tie{}; ceci sous-entend -l'utilisation de @code{--ps}. La résolution de l'image, en DPI, peut se -régler en ajoutant par exemple -@example --dresolution=110 -@end example - - -@cindex Portable Document Format (PDF) output - -@item --pdf -Génère du PDF. Ceci sous-entend l'utilisation de @code{--ps}. - - +@cindex chroot jail, fonctionnement @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir} Lance @command{lilypond} dans un environnement protégé. -L'option @code{--jail} est une alternative qui offre plus de flexibilité -que l'option @code{--safe} lorsque LilyPond est installé sur un serveur -web ou traite des fichiers externes. +L'option @option{--jail} est une alternative qui offre plus de +flexibilité que l'option @option{--safe} lorsque LilyPond est installé +sur un serveur web ou traite des fichiers externes -- voir +@ref{Options avancées de lilypond}. -L'option @code{--jail} va détourner la racine de @command{lilypond} sur -@code{jail} juste avant d'effectuer la compilation à proprement parler. -L'utilisateur et le groupe sont modifiés en conséquence, et le -répertoire en cours devient @code{dir}. Ces réglages assurent -- du +L'option @option{--jail} va détourner la racine de @command{lilypond} +sur @var{jail} juste avant d'effectuer la compilation à proprement +parler. L'utilisateur et le groupe sont modifiés en conséquence, et le +répertoire en cours devient @var{dir}. Ces réglages assurent -- du moins en théorie -- l'impossibilité de s'échapper de la cellule. Notez -cependant que, pour que l'option @code{--jail} soit fonctionnelle, -@code{lilypond} doit être lancé en tant qu'administrateur -- ce qui se -réalise aisément à l'aide de la commande @command{sudo}. +cependant que, pour que l'option @option{--jail} soit fonctionnelle, +@command{lilypond} doit être lancé en tant qu'administrateur -- ce qui +se réalise aisément à l'aide de la commande @command{sudo}. La création d'un environnement sécurisé requiert quelques précautions dans la mesure où LilyPond doit disposer de tout ce dont il a besoin @@ -421,6 +235,7 @@ L'ermitage, avant d'être viable, requiert donc les étapes suivantes@tie{}: @table @asis + @item Création d'un système de fichiers indépendant L'intérêt d'un système de fichiers dédié à LilyPond réside dans le fait qu'on peut le brider à l'aide des options @code{noexec}, @code{nodev} et @@ -435,9 +250,9 @@ dévolu à LilyPond. @item Création d'un utilisateur spécifique L'utilisation de LilyPond au sein de la cellule devrait être réservé à un utilisateur aux droits restreints. Il faudra donc créer un -utilisateur et un groupe spécifiques -- disons @code{lily}/@code{lily} --- qui n'aura accès en écriture qu'à un unique répertoire déterminé par -la valeur de @var{dir}. +utilisateur et un groupe spécifiques -- disons +@w{@code{lily}/@code{lily}} -- qui n'aura accès en écriture qu'à un +unique répertoire déterminé par la valeur de @var{dir}. @item Agencement des lieux LilyPond a besoin d'un certain nombre de fichiers pour pouvoir tourner @@ -446,38 +261,484 @@ l'environnement protégé, distribués selon la même arborescence que dans le système d'origine. Ainsi l'intégralité de l'installation de LilyPond (en principe @file{/usr/share/lilypond}) doit y être dupliquée. -En cas de problème, lancer LilyPond en utilisant @code{strace} devrait -vous permettre de déterminer quels fichiers manquent à l'appel. +En cas de problème, lancer LilyPond en utilisant @command{strace} +devrait vous permettre de déterminer quels fichiers manquent à l'appel. @item Lancement de LilyPond -Dans un environnement protégé monté avec l'option @code{noexec}, il est -impossible de lancer un quelconque programme extérieur. LilyPond ne +Dans un environnement protégé monté avec l'option @code{noexec}, il +est impossible de lancer un quelconque programme extérieur. LilyPond ne saurait donc avoir recours à un moteur de traitement qui le mettrait dans cette situation. Comme nous l'avons vu plus haut, LilyPond sera lancé avec les privilèges de l'administrateur -- privilèges qu'il perdra aussitôt --, ce qui peut nécessiter le recours à la commande @code{sudo}. Il est par ailleurs judicieux de limiter le temps -processeur aloué à LilyPond -- grâce à @command{ulimit@tie{}-t} par +processeur alloué à LilyPond -- grâce à @command{ulimit@tie{}-t} par exemple -- ainsi que, si votre système le permet, la taille de la -mémoire. +mémoire. Voir aussi @ref{Exécution de LilyPond en mode protégé}. @end table +@cindex loglevel +@cindex verbosité, définir le degré de +@item -l,--loglevel=@var{DEGRÉ} +Règle le niveau de verbosité des messages console à @var{DEGRÉ}. Les +différentes valeurs sont@tie{}: + +@table @code +@item NONE +Aucun verbiage, même pas les messages d'erreur. + +@item ERROR +Uniquement les messages d'erreur@tie{}; pas de message d'avertissement +ni de progression. + +@item WARN +Messages d'avertissement ou d'erreur@tie{}; pas d'information de +progression. + +@item BASIC_PROGRESS +Information de progression basique (réussite) et avertissements ou erreurs. + +@item PROGRESS +Toutes les informations de progression, avertissements et erreurs. + +@item INFO (par défaut) +Informations de progression, avertissements et erreurs, ainsi que +d'autres informations quant à l'exécution. + +@item DEBUG +Tout ce qui peut être affiché, y compris le verbiage utile au débogage. + +@end table + +@cindex redirection +@cindex répertoire de destination +@cindex fichier de destination +@item -o,--output=@var{FICHIER} ou @var{RÉPERTOIRE} +Détermine le nom par défaut du fichier résultant à @var{FICHIER}@tie{}; +lorsque l'argument @var{RÉPERTOIRE} correspond à un répertoire déjà +existant, c'est là que les fichiers résultants seront déposés. Le +suffixe adéquat sera ajouté (par ex. @code{.pdf} pour du pdf) dans tous +les cas. + +@cindex PostScript, output +@cindex PS (PostScript), output +@item --ps +Génère du PostScript. + +@cindex Portable Network Graphics (PNG), output +@cindex PNG (Portable Network Graphics), output +@item --png +Génère une image par page, au format PNG@tie{}; ceci sous-entend +l'utilisation de @option{--ps}. La résolution de l'image, en DPI, peut +se régler en ajoutant par exemple +@example +-dresolution=110 +@end example + +@cindex Portable Document Format (PDF), output +@cindex PDF (Portable Document Format), output +@item --pdf +Génère du PDF. Ceci sous-entend l'utilisation de @option{--ps}. @item -v,--version Affiche le numéro de version. - @item -V,--verbose Active le mode verbeux@tie{}: affichage de l'intégralité du chemin d'accès de chaque fichier, et information des temps de traitement. - @item -w,--warranty -Affiche les informations de garantie appliquables à GNU LilyPond -- il +Affiche les informations de garantie applicables à GNU LilyPond -- il est livré @strong{SANS GARANTIE}@tie{}! + @end table +@node Options avancées de lilypond +@unnumberedsubsec Options avancées de @command{lilypond} +@translationof Advanced command line options for LilyPond + +@table @code + +@item -d@var{[nom-option]}=@var{[valeur]},--define-default=@var{[nom-option]}=@var{[valeur]} +Affecte la valeur Scheme @var{valeur} à l'option interne @var{nom-option} du +programme. En l'absence de @var{valeur}, le programme utilisera @var{#t}. +Préfixer @var{nom-option} d'un @code{no-} vous permet de désactiver une option. +Ainsi, + +@cindex point and click, ligne de commande +@cindex pointer-cliquer, ligne de commande + +@example +-dno-point-and-click +@end example + +@noindent +revient au même que +@example +-dpoint-and-click=#f +@end example +@end table + +@noindent Voici les différentes options disponibles, ainsi que leur +valeur par défaut. + +@multitable @columnfractions .33 .16 .51 +@item @strong{Symbole} +@tab @strong{Valeur} +@tab @strong{Observations} + + +@item @code{anti-alias-factor} +@tab @code{1} +@tab Adopte une résolution supérieure (selon le facteur donné),puis +réduit au niveau du résultat afin d'éviter les @qq{distorsions} des +images @code{PNG}. + +@item @code{aux-files} +@tab @code{#t} +@tab Génère les fichiers @code{.tex}, @code{.texi} et @code{.count} +pour le moteur de rendu @code{EPS}. + +@item @code{backend} +@tab @code{'ps} +@tab Détermine le format de sortie à utiliser par le moteur de +traitement. Les fichiers PostScript (format par défaut) incluent les +fontes @code{TTF}, @code{Type1} et @code{OTF}, et aucune substitution ne +sera opérée pour ces fontes. Si vous utilisez des jeux de caractères +orientaux, le fichier aura vite fait d'atteindre une taille conséquente. + +@item +@tab @code{'eps} +@tab Génère du PostScript encapsulé. Chaque page (système) fera l'objet +d'un fichier @file{EPS} particulier, sans fontes, auquel sera associé un +fichier @file{EPS} qui, lui, contiendra toutes les pages (systèmes) et +les fontes. Notez qu'il s'agit du mode que @command{lilypond-book} +utilise par défaut. + +@item +@tab @code{'null} +@tab Ne génère aucun fichier imprimable. Cette option est équivalente à +@code{-dno-print-pages}. + +@item +@tab @code{'svg} +@tab Génère du@emph{Scalable Vector Graphics}. Cette option permet de +créer un fichier @code{SVG} par page, sans incorporation des fontes. +Nous vous recommandons d'installer les fontes Century Schoolbook +comprises dans le paquetage LilyPond afin d'obtenir le meilleur rendu +possible. Sous UNIX, il suffit de les recopier, à partir du répertoire +@file{/usr/share/lilypond/VERSION/fonts/otf/}, dans @file{~/.fonts/}. +Les fichiers @code{SVG} alors générés devraient être lisibles par votre +éditeur SVG habituel. L'option @code{svg-woff} -- voir ci-après -- +permet d'utiliser les fontes @code{woff} avec le moteur @code{SVG}. + +@item +@tab @code{'scm} +@tab Recopie littéralement les commandes Scheme internes de formatage. + +@item @code{check-internal-types} +@tab @code{#f} +@tab Vérifie qu'à chaque propriété est bien affecté un type. + +@item @code{clip-systems} +@tab @code{#f} +@tab Génère des typons à partir d'une partition. + +@item @code{datadir} +@tab +@tab Détermine le préfixe des fichiers de données (lecture seule). + +@item @code{debug-gc} +@tab @code{#f} +@tab Génère une copie brute de la mémoire, aux fins de débogage. + +@item @code{debug-gc-assert-parsed-dead} +@tab @code{#f} +@tab Pour débogage de la mémoire@tie{}: s'assure que toute référence à +des objets analysés est effacée. Il s'agit d'une option interne qui +est automatiquement activée par l'option @code{`-ddebug-gc'}. + +@item @code{debug-lexer} +@tab @code{#f} +@tab Débogage de l'analyseur lexical @emph{flex}. + +@item @code{debug-page-breaking-scoring} +@tab @code{#f} +@tab Purge les calculs des configurations de saut de page. + +@item @code{debug-parser} +@tab @code{#f} +@tab Débogage de l'analyseur @emph{bison}. + +@item @code{debug-property-callbacks} +@tab @code{#f} +@tab Débogage des chaînes de @emph{callback} cycliques. + +@item @code{debug-skylines} +@tab @code{#f} +@tab Débogage des lignes d'horizon. + +@item @code{delete-intermediate-files} +@tab @code{#t} +@tab Supprime les fichiers @code{.ps} inutiles crées lors de la +compilation. + +@item @code{dump-cpu-profile} +@tab @code{#f} +@tab Génère une copie brute des informations de timing (dépend du +système). + +@item @code{dump-profile} +@tab @code{#f} +@tab Génère une copie brute de la mémoire et des temps de traitement +pour chaque fichier. + +@item @code{dump-signatures} +@tab @code{#f} +@tab Génère une copie des signatures de chaque système. Cette option +est utilisée pour les tests de régression. + +@item @code{eps-box-padding} +@tab @code{#f} +@tab Décale le bord gauche du typon EPS d'une valeur donnée en +millimètres. + +@item @code{gs-load-fonts} +@tab @code{#f} +@tab Charge les fontes grâce à Ghostscript. + +@item @code{gs-load-lily-fonts} +@tab @code{#f} +@tab Limites les fontes chargées par Ghostscript aux seules fontes +LilyPond. + +@item @code{gui} +@tab @code{#f} +@tab Travaille silencieusement, et redirige tout le verbiage dans un +fichier journal. +@end multitable + +@noindent +@strong{Note à l'attention des utilisateurs de Windows@tie{}:} toutes +les informations concernant le traitement apparaissent au fur et à +mesure dans l'interpréteur de commandes lorsque vous lancez le programme +@code{lilypond.exe}, à l'inverse de @w{@code{lilypond-windows.exe}} qui +vous renvoie simplement la main. L'option @option{-dgui} vous permettra +alors de rediriger ces informations dans un fichier journal. + +@multitable @columnfractions .33 .16 .51 +@item @code{help} +@tab @code{#f} +@tab Affiche cette aide. + +@item @code{include-book-title-preview} +@tab @code{#t} +@tab Inclut les titres de l'ouvrage dans les images de prévisualisation. + +@item @code{include-eps-fonts} +@tab @code{#t} +@tab Inclut les fontes dans chaque fichier EPS contenant un système. + +@item @code{include-settings} +@tab @code{#f} +@tab Inclut un fichier contenant les réglages globaux. Ce fichier sera +inclus avant traitement de la partition. + +@item @code{job-count} +@tab @code{#f} +@tab Traite plusieurs fichiers en parallèle, selon le nombre de +@emph{jobs}. + +@item @code{log-file} +@tab @code{#f [fichier]} +@tab Fournir @code{TOTO} en second argument redirigera la sortie dans le +fichier journal @code{TOTO.log}. + +@item @code{max-markup-depth} +@tab @code{1024} +@tab Profondeur maximale de l'arborescence de @emph{markups}. Si un +@emph{markup} était plus profond, part du principe qu'on aboutira pas, +émet un avertissement et renvoie alors un @emph{markup} vide. + +@item @code{midi-extension} +@tab @code{"midi"} +@tab Détermine l'extension par défaut des fichiers MIDI, selon la chaîne +donnée en argument. + +@item @code{music-strings-to-paths} +@tab @code{#f} +@tab Convertit les chaînes textuelles en chemins lorsque les glyphes +font partie d'une fonte musicale. + +@item @code{old-relative} +@tab @code{#f} +@tab Affecte au mode @code{\relative} le même comportement pour de la +musique simultanée que celui d'une syntaxe d'accords. + +@cindex paper-size, ligne de commande +@item @code{paper-size} +@tab @code{\"a4\"} +@tab Détermine la taille par défaut du papier. Veillez à ne pas oublier +d'encadrer la valeur par des guillemets échappés (@code{\"}). +@c Match " in context-sensitive editors + +@item @code{pixmap-format} +@tab @code{png16m} +@tab Détermine le format de sortie en images pixélisées pour +Ghostscript. + +@item @code{point-and-click} +@tab @code{#f} +@tab Ajoute les liens @qq{point & click} à la sortie @code{PDF}. Voir +@ref{Pointer-cliquer}. + +@cindex format de sortie, définition +@cindex preview, ligne de commande +@item @code{preview} +@tab @code{#f} +@tab Génère une prévisualisation en plus de la sortie normale. +@end multitable + +@noindent +Cette option, disponible dans tous les formats de sortie imprimables -- +@code{pdf}, @code{png}, @code{ps}, @code{eps} et @code{svg} -- génère +un fichier de la forme @code{monFichier.preview.extension} comprenant le +titrage et le premier système. S'il existe plusieurs sections +@code{\book}, @code{\bookpart}, ce fichier contiendra les titrage et +premier système de chacun des @code{\book}, @code{\bookpart} et +@code{\score}, dès lors que la variable @code{print-all-headers} du bloc +@code{\paper} est activée. + +Pour l'éviter, utilisez conjointement l'une des options +@option{-dprint-pages} ou @option{-dno-print-pages} selon vos besoins. + +@multitable @columnfractions .33 .16 .51 +@item @code{print-pages} +@tab @code{#t} +@tab Génère l'intégralité des pages de la partition. L'option +@option{-dno-print-pages} est particulièrement utile lorsqu'utilisée +conjointement avec l'option @option{-dpreview}. + +@item @code{profile-property-accesses} +@tab @code{#f} +@tab Enregistre des statistiques des appels à la fonction +@code{get_property()}. + +@item @code{protected-scheme-parsing} +@tab @code{#t} +@tab Continue en dépit des erreurs que l'analyseur syntaxique +détecterait dans du code Scheme inclus. Lorsque basculé sur @code{#f}, +stoppe le traitement s'il y a erreur et affiche une trace de la pile. + +@item @code{read-file-list} +@tab @code{#f [fichier]} +@tab Spécifie un fichier listant les différents fichier sources à +traiter. + +@item @code{relative-includes} +@tab @code{#f} +@tab Face à une instruction @code{\include}, recherche les fichiers à +inclure relativement à l'endroit où se trouve le fichier en cours de +traitement plutôt que par rapport au fichier maître. + +@item @code{resolution} +@tab @code{101} +@tab Détermine, en @code{dpi}, la résolution des pixmaps @code{PNG} à +générer selon la valeur donnée. + +@item @code{safe} +@tab @code{#f} +@tab Ne pas avoir une confiance aveugle dans le code @file{.ly}. +@end multitable + +@noindent +Lorsque LilyPond est accessible au travers d'un serveur web, il est +@strong{impératif} d'utiliser les options @option{--safe} ou +@option{--jail}. L'option @option{--safe} aura pour effet d'empêcher +tout code Scheme inclus de mettre en péril votre installation grâce à +quelque chose du style + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^$(ly:gulp-file "/etc/passwd") +} +@end verbatim +@end quotation + +L'option @code{-dsafe} forcera l'évaluation, au fil de l'eau et par un +module sécurisé, des expressions Scheme contenues dans le fichier +source. Ce module sécuritaire, dérivé du module GUILE @file{safe-r5rs}, +ajoute un certain nombre de fonctions -- listées dans +@file{scm/safe-lily.scm} -- à l'API de LilyPond. + +De plus, le mode @emph{safe} ne permet ni l'utilisation de directives +@code{\include} ni le recours aux obliques inversées (@emph{backslash}) +dans les chaînes @TeX{}. L'import de variables LilyPond dans du code +Scheme n'est pas possible en mode sécuritaire. + +L'option @code{-dsafe} @strong{ne détecte pas} l'utilisation abusive des +ressources. Il est donc possible que le programme finisse par rester +sans réponse si on lui envoie une boucle sans fin. C'est la raison pour +laquelle nous recommandons, lorsque LilyPond tourne sur un serveur +accessible au public, d'en limiter aussi bien les ressources processeur +que mémoire. + +Notez bien que l'utilisation du mode sécuritaire empêchera aussi la +compilation d'un certain nombre de fragments LilyPond. L'option +@code{--jail} est dans ce cas une excellente alternative en terme de +sécurité, même si elle requiert plus de temps à mettre en place -- voir +@ref{Options basiques de lilypond}. + +@multitable @columnfractions .33 .16 .51 +@item @code{separate-log-files} +@tab @code{#f} +@tab Pour les fichiers @code{FICHIER1.ly}, @code{FICHIER2.ly} etc. +enregistre le déroulement dans les journaux @code{FICHIER1.log}, +@code{FICHIER2.log}@dots{} + +@item @code{show-available-fonts} +@tab @code{#f} +@tab Liste le nom des fontes disponibles. + +@item @code{strict-infinity-checking} +@tab @code{#f} +@tab Force le crash en présence des points d'exception de virgule +flottante @code{Inf} ou @code{NaN} -- infini ou non-nombre. + +@item @code{strip-output-dir} +@tab @code{#t} +@tab Supprime, lors du nommage des fichiers résultant, la partie +correspondant au répertoire des fichiers sources. + +@item @code{svg-woff} +@tab @code{#f} +@tab Utilise, avec le moteur SVG, les fontes @code{woff}. + +@item @code{trace-memory-frequency} +@tab @code{#f} +@tab Enregistre l'utilisation de la cellule Scheme plusieurs fois par +seconde, dans les fichiers @code{FICHIER.stacks} et +@code{FICHIER.graph}. + +@item @code{trace-scheme-coverage} +@tab @code{#f} +@tab Enregistre la couverture des fichiers Scheme dans @code{FILE.cov}. + +@item @code{verbose} +@tab @code{#f} +@tab Passe en mode verbeux, ce qui correspond à un niveau de +journalisation @code{DEBUG} (lecture seule). + +@item @code{warning-as-error} +@tab @code{#f} +@tab Considère tous les messages d'avertissement et @qq{erreur de +programmation} comme étant de véritables erreurs. +@end multitable + + @node Variables d'environnement @unnumberedsubsec Variables d'environnement @translationof Environment variables @@ -487,6 +748,7 @@ est livré @strong{SANS GARANTIE}@tie{}! @command{lilypond} reconnaît les variables d'environnement suivantes@tie{}: + @table @code @item LILYPOND_DATADIR Cette variable spécifie le répertoire où seront recherchés par défaut @@ -498,6 +760,12 @@ sous-répertoires @file{ly/}, @file{ps/}, @file{tex/}, etc. Cette variable détermine la langue dans laquelle seront émis les messages. +@item LILYPOND_LOGLEVEL +Cette variable détermine le niveau par défaut de verbosité. En +l'absence de niveau explicite -- autrement dit la ligne de commande ne +comporte pas de @option{--loglevel} -- c'est cette valeur qui sera +utilisée. + @item LILYPOND_GC_YIELD Cette variable permet d'ajuster l'empreinte mémoire et le rendement de la machine. Il s'agit en fait d'un pourcentage d'allocation de @@ -520,10 +788,10 @@ nécessiteront l'utilisation de @code{sudo} autant que de besoin. @itemize -@item Installation des paquetages nécessaires@tie{}: LilyPond, GhostScript et +@item Installation des paquetages nécessaires@tie{}: LilyPond, Ghostscript et ImageMagick. -@item Création de l'utilisateur @code{lily}: +@item Création de l'utilisateur @code{lily} : @example adduser lily @@ -612,7 +880,7 @@ cp -L /bin/sh /bin/rm bin cp -L /usr/bin/convert /usr/bin/gs usr/bin cp -L /usr/share/fonts/truetype usr/share/fonts -# la formule magique de recopie des biblothèques +# la formule magique de recopie des bibliothèques for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \ "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \ \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \ @@ -670,7 +938,7 @@ défectueuse des fontes. @cindex Scheme error Les erreurs qui interviennent lors de l'exécution de code Scheme sont gérées par l'interpréteur Scheme. L'utilisation du mode verbeux -(options @code{-V} ou @code{--verbose}) vous permettra de localiser +(options @option{-V} ou @option{--verbose}) vous permettra de localiser l'appel de fonction délictueux. @item Programming error -- Erreur de programmation @@ -709,7 +977,7 @@ test.ly:2:19: erreur: n'est pas une durée: 5 Notez que ces coordonnées constituent l'approximation au mieux par LilyPond dans le code ayant déclenché l'avertissement ou l'erreur. En -règle générale, erreurs et avertissement surviennent lorsque LilyPond +règle générale, erreurs et avertissements surviennent lorsque LilyPond rencontre quelque chose d'inattendu. Lorsque la ligne indiquée ne vous semble pas comporter d'élément litigieux, remontez de quelques lignes dans votre code. @@ -727,7 +995,6 @@ qu'elles ne soient pas évidentes ni facilement localisables. Nous espérons que ces explications vous aideront à les résoudre plus facilement. - @menu * La musique déborde de la page:: * Apparition d'une portée supplémentaire:: @@ -737,6 +1004,7 @@ facilement. * staff-affinities devraient aller en ordre décroissant:: @end menu + @node La musique déborde de la page @unnumberedsubsec La musique déborde de la page @translationof Music runs off the page @@ -760,7 +1028,7 @@ Une erreur de durée sera bien plus facilement localisable si vous positionnez régulièrement des contrôles de barre de mesure -- voir @ruser{Vérification des limites et numéros de mesure}. -Si vous tenez absolument à enchainer de tels débordements, vous devrez +Si vous tenez absolument à enchaîner de tels débordements, vous devrez insérer des barres de mesure invisibles là où vous souhaitez positionner un saut de ligne. Consultez le chapitre @ruser{Barres de mesure} pour plus de détails. @@ -777,7 +1045,7 @@ que les contextes soient automatiquement créés rend bien des services, et c'est d'ailleurs le cas pour la majorité des exemples contenus dans les manuels de LilyPond. Cependant, la création implicite d'un contexte peut aboutir à l'apparition d'une portée @qq{parasite}. On s'attend par -exemple, en lisant le code qui suit, à ce que toutes les têtes de notes +exemple, en lisant le code qui suit, à ce que toutes les têtes de note soient en rouge, alors que le résultat nous présente deux portées et que les notes, placées sur la portée inférieure, restent en noir. @@ -801,21 +1069,25 @@ ces notes en rouge@tie{}: @end lilypond Autre exemple : la présence d'une commande @code{\relative} à -l'intérieur d'une section @code{\repeat} génèrera obligatoirement une +l'intérieur d'une section @code{\repeat} générera obligatoirement une portée intempestive. Cela tient au fait que la commande @code{\repeat} va créer deux blocs @code{\relative} qui, chacun à leur tour, créeront implicitement un bloc @code{Staff} assorti d'un bloc @code{Voice}. @lilypond[quote,verbatim] -\repeat unfold 2 \relative { c d e f } +\repeat unfold 2 { + \relative c' { c4 d e f } +} @end lilypond La manière adéquate de procéder consiste à inverser les commandes @code{\repeat} et @code{\relative}, comme ceci@tie{}: @lilypond[quote,verbatim] -\relative { - \repeat unfold 2 { c d e f } +\new Voice { + \repeat unfold 2 { + \relative c' { c4 d e f } + } } @end lilypond @@ -830,7 +1102,7 @@ formaté. Cela se produit notamment lors d'un défaut de parité de bornages ou de guillemets. L'erreur la plus courante est la simple omission d'une accolade -fermante (@code{@}} à la fin du bloc @code{Score}. La solution est +fermante (@code{@}}) à la fin du bloc @code{Score}. La solution est évidente en pareil cas@tie{}: il suffit de vérifier que le bloc @code{Score} est bien clôturé. La structure des fichiers LilyPond est abordée plus en détails au chapitre @@ -839,19 +1111,27 @@ laquelle nous vous invitons à utiliser un éditeur de texte qui prenne en charge le contrôle de parité des parenthèses, crochets et accolades afin de vous éviter de telles erreurs. +Autre erreur courante, l'absence d'espace entre la dernière syllabe et +l'accolade (@code{@}}) clôturant un bloc de paroles. Lorsqu'il n'y a +pas séparation, l'accolade est considérée comme faisant partie +intégrante de la syllabe. C'est la raison pour laquelle nous vous +invitons à insérer une espace avant et après @strong{chaque} accolade. +D'autres informations à ce sujets sont mentionnées au chapitre +@ruser{Saisie des paroles}. + Lorsqu'il s'agit d'un guillemet fermant (@code{"}) omis, le message d'erreur devrait vous indiquer un numéro de ligne avoisinant. L'erreur se situe la plupart du temps une ou deux lignes au-dessus de celle indiquée. - +@c Match quote character " @node Message d'erreur Unbound variable % -@unnumberedsubsec Message d'erreur « Unbound variable % » +@unnumberedsubsec Message d'erreur Unbound variable % @translationof Error message Unbound variable % Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de fichier journal, est associé à un message du type @qq{GUILE a signalé -une erreur @dots{}}. Il survient à chaque fois qu'un commentaire +une erreur@dots{}}. Il survient à chaque fois qu'un commentaire @emph{LilyPond} est indûment placé dans une routine @emph{Scheme}. Un commentaire LilyPond est introduit par le signe pourcent (@code{%}) @@ -860,14 +1140,14 @@ les commentaires s'introduisent par un point-virgule (@code{;}). @node Message d'erreur FT_Get_Glyph_Name -@unnumberedsubsec Message d'erreur « FT_Get_Glyph_Name » +@unnumberedsubsec Message d'erreur FT_Get_Glyph_Name @translationof Error message FT_Get_Glyph_Name Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de fichier journal, survient lorsqu'un fichier source contient des caractères non ASCII et qu'il n'a pas été enregistré avec un encodage UTF-8. Pour plus de détails, reportez-vous au chapitre -@ruser{Codage du texte}. +@ruser{Caractères spéciaux}. @node staff-affinities devraient aller en ordre décroissant @@ -885,6 +1165,6 @@ portée, à l'aide de l'instruction @end example @noindent -que vous insérerez dès sa création. Pouur plus d'information, +que vous insérerez dès sa création. Pour plus d'information, reportez-vous à la rubrique @ruser{Espacement des lignes rattachées à des portées}. diff --git a/Documentation/fr/usage/suggestions.itely b/Documentation/fr/usage/suggestions.itely index 11f6441b94..297ce9ca0f 100644 --- a/Documentation/fr/usage/suggestions.itely +++ b/Documentation/fr/usage/suggestions.itely @@ -1,19 +1,19 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: c299f84d574ac9b97ab7ffbb640b5c3a1cdca5cc 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" +@c \version "2.16.0" @c Translators: Ludovic Sardain, Jean-Charles Malahieude @c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude @node Suggestions pour la saisie de fichiers LilyPond -@chapter Suggestions pour la saisie de fichiers +@chapter Suggestions pour la saisie de fichiers LilyPond @translationof Suggestions for writing files Maintenant vous êtes prêt à travailler sur de plus gros fichiers @@ -271,7 +271,7 @@ d'un @rwebnamed{Exemples minimaux,exemple minimaliste}. @node De la commande make et des fichiers Makefile -@section De la commande @command{make} et des fichiers @code{Makefile} +@section De la commande make et des fichiers Makefile @translationof Make and Makefiles @cindex makefiles diff --git a/Documentation/fr/usage/updating.itely b/Documentation/fr/usage/updating.itely index 0a34fa8f0d..2e84fc8781 100644 --- a/Documentation/fr/usage/updating.itely +++ b/Documentation/fr/usage/updating.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: c299f84d574ac9b97ab7ffbb640b5c3a1cdca5cc 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" +@c \version "2.16.0" @c Translators: Jean-Charles Malahieude @c Translation checkers: @@ -28,7 +28,7 @@ mettre ces fichiers en conformité au fur et à mesure que de nouvelles versions de LilyPond sont disponibles. @menu -* LilyPond une langue vivante:: +* LilyPond est une langue vivante:: * Exécution de convert-ly:: * Options en ligne de commande pour convert-ly:: * Problèmes d'exécution de convert-ly:: @@ -36,8 +36,8 @@ versions de LilyPond sont disponibles. @end menu -@node LilyPond une langue vivante -@section LilyPond, une langue vivante +@node LilyPond est une langue vivante +@section LilyPond est une langue vivante @translationof Why does the syntax change? @cindex convert-ly @@ -158,6 +158,12 @@ s'utilise sous la forme@tie{}: @code{--to=2.12.2} @item -h, --help visualiser l'aide et quitter. + +@item -l @var{loglevel}, --loglevel=@var{loglevel} +pour régler le degré de verbosité à @var{loglevel}. Les différentes +valeurs sont @code{NONE}, @code{ERROR}, @code{WARNING}, @code{PROGRESS} +(par défaut) et @code{DEBUG}. + @end table Lorsqu'il s'agit de fragments inclus dans un fichier texinfo, il diff --git a/Documentation/fr/web.texi b/Documentation/fr/web.texi index 92701f936a..755354b770 100644 --- a/Documentation/fr/web.texi +++ b/Documentation/fr/web.texi @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 2f50167dc8769e690b985c3b92cabdc35a725344 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -15,7 +15,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 par les auteurs. +@c Copyright @copyright{} 2009--2012 par les auteurs. @c @end macro @set FDL @@ -37,7 +37,7 @@ @c Translators checkers: Jean-Charles Malahieude @copying -Copyright @copyright{} 2009--2011 par les auteurs. +Copyright @copyright{} 2009--2012 par les auteurs. @c next line is necessary for broken pre-4.13 texinfo's @c install-info, so leave it there until we officially @@ -148,6 +148,48 @@ Plus sur LilyPond dans notre @ref{Introduction} ! @divEnd +@ifclear web_version + @c do nothing +@end ifclear +@ifset web_version + @c make the box: +@divId{wildCardBox} +@subheading Dépêches +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html + + @ifclear web_version @c do nothing @end ifclear @@ -219,30 +261,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (HTML multipages)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML multipages),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (HTML page unique)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML page unique),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.fr.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.fr.pdf,\base\.pdf,\webLink\} @end macro diff --git a/Documentation/fr/web/community.itexi b/Documentation/fr/web/community.itexi index 04904918ce..b7bb8006f6 100644 --- a/Documentation/fr/web/community.itexi +++ b/Documentation/fr/web/community.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage : fr -*- @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 254e2df1ab4e0fb8d1b517e7e11ffb545363ee48 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,6 @@ @divClass{column-center-top} @subheading Échanger avec la communauté -@translationof Interacting with the community @itemize @@ -30,26 +29,33 @@ @ref{Contact} : obtenir de l'aide, discuter et rester en contact. @item -@ref{Exemples minimaux} : une nécessité lorsque l'on discute de LilyPond. +@ref{Exemples minimaux} : une nécessité lorsque l'on discute de +LilyPond. @item -@ref{Signalement de bogue} : disfonctionnement du programme. +@ref{Signalement de bogue} : dysfonctionnement du programme. @end itemize @divEnd @divClass{column-left-bottom} @subheading Rendre LilyPond encore meilleur -@translationof Making LilyPond better @itemize @item -@ref{Participation} : pour les bonnes volontés qui se sentent concernées. +@ref{Participation} : pour les bonnes volontés qui se sentent +concernées. + +@item +@ref{Mécénat} : pour ceux qui veulent contribuer financièrement. @item @ref{Développement} : pour ceux qui veulent contribuer et tester. +@item +@ref{GSoC 2012}: liste des projets pour le Google Summer of Code 2012. + @item @ref{Auteurs} : ceux qui ont permis à LilyPond d'être ce qu'il est aujourd'hui. @@ -59,15 +65,19 @@ aujourd'hui. @divClass{column-right-bottom} @subheading Divers -@translationof Miscellaneous @itemize @item -@ref{Publications} : ce que nous avons écrit, et ce que l'on dit de nous. +@ref{Publications} : ce que nous avons écrit, et ce que l'on dit de +nous. + +@item +@ref{Archives} : archives des dépêches. @item -@ref{Archives} : archives des dépèches. +@ref{Grenier} : annonces et recensement des modifications intervenues +aux cours des versions précédentes. @end itemize @divEnd @@ -80,10 +90,13 @@ aujourd'hui. * Exemples minimaux:: * Signalement de bogue:: * Participation:: +* Mécénat:: * Développement:: +* GSoC 2012:: * Auteurs:: * Publications:: * Archives:: +* Grenier:: @end menu @divEnd @@ -95,7 +108,6 @@ aujourd'hui. @divClass{column-left-bottom} @subheading Discuter entre utilisateurs et demander de l'aide -@translationof Discussions and Help @subsubheading Liste de diffusion des utilisateurs : @code{lilypond-user@@gnu.org} @@ -118,15 +130,15 @@ poster sur lilypond-user à l'aide de gmane} @end quotation @warning{Lorsque vous posez une question, merci de fournir des -@ref{Exemples minimaux}@tie{}!} +@ref{Exemples minimaux} !} @subsubheading LilyPond Snippet Repository Le LilyPond Snippet Repository regroupe des exemples de situations -particulières auxquelles ont été confontés les utilisateurs de LilyPond. +particulières auxquelles ont été confrontés les utilisateurs de LilyPond. Ils sont librement réutilisables dans vos propres travaux. N'hésitez -pas à apporter votre concours à cette banque de trucs et astuces@tie{}! +pas à apporter votre concours à cette banque de trucs et astuces ! @example @uref{http://lsr.dsi.unimi.it} @@ -139,7 +151,7 @@ sont directement inclus dans la documentation, volume @subsubheading IRC -Vous pouvez obtenir quelque support au travers de notre canal IRC@tie{}: +Vous pouvez obtenir quelque support au travers de notre canal IRC : @example @uref{irc://irc.freenode.net/lilypond, #lilypond@@irc.freenode.net} @@ -199,8 +211,12 @@ Forum hollandais} @subsubheading LilyPond Report -Le @uref{http://news.lilynet.net/, LilyPond Report} est le bulletin de -la communauté. À lire pour savoir ce qui se passe. +Le LilyPond Report est le bulletin de la communauté. À lire pour savoir +ce qui se passe. + +@example +@uref{http://news.lilynet.net} +@end example @subsubheading Liste de diffusion des versions : @code{info-lilypond@@gnu.org} @@ -221,7 +237,6 @@ archive3} @c don't include gmane posting here. -gp @end quotation - @divEnd @@ -232,7 +247,7 @@ archive3} C'est sur cette liste que se tiennent la plupart des discussions ayant trait au développement. C'est aussi à cette liste que doivent être -adressés les patches. +adressés les patchs. @quotation @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel, @@ -275,6 +290,15 @@ liste sont répertoriées dans @ref{Signalement de bogue}.} @divEnd +@divClass{column-right-bottom} +@subheading Courriels sensibles + +Lorsque cela touche la sphère privée, contactez Graham Percival qui, en +tant qu'administrateur du projet, en discutera avec les personnes +appropriées. + +@divEnd + @node Exemples minimaux @unnumberedsec Exemples minimaux @@ -283,7 +307,8 @@ liste sont répertoriées dans @ref{Signalement de bogue}.} @divClass{column-center-top} @subheading Exemple minimal@dots{} mais qu'est-ce donc que cela ? -Un exemple minimal est un bout de code duquel plus rien ne peut être retiré. +Un exemple minimal est un bout de code duquel @strong{plus rien} ne peut +être retiré. @divEnd @divClass{column-left-bottom} @@ -299,15 +324,16 @@ aider comprendront votre propos et vous apporteront une réponse. @item Réduire l'exemple à sa plus simple expression indique que vous avez déjà tenté par vous-même de trouver une solution. Des tonnes de lignes -laissent à penser que celui qui les envoie se soucie peu de ce qui arrive. +laissent à penser que celui qui les envoie se soucie peu de ce qui +arrive. @item La génération d'un exemple minimaliste permet de comprendre ce qui se passe et évite la plupart du temps de signaler un problème qui, en -réalité, n'existe pas@tie{}: lorsqu'un @qq{bogue} ne peut être -reproduit dans le cadre d'un exemple minimal, il y a de fortes -présomptions qu'il s'agisse d'une inadéquation entre l'utilisateur et -LilyPond plutôt que réellement d'un @qq{bogue}. +réalité, n'existe pas : lorsqu'un @qq{bogue} ne peut être reproduit dans +le cadre d'un exemple minimal, il y a de fortes présomptions qu'il +s'agisse d'une inadéquation entre l'utilisateur et LilyPond plutôt que +réellement d'un @qq{bogue}. @end itemize @divEnd @@ -322,19 +348,20 @@ LilyPond plutôt que réellement d'un @qq{bogue}. @itemize @item -Inclure une mention \version pour indiquer le numéro de version utilisée. +Inclure une mention @code{\version} pour indiquer le numéro de version +utilisée. @item Être aussi bref et concis que possible. Si des problèmes concernant les espacements ou la mise en page peuvent nécessiter un certain nombre de -mesures, la plupart des litiges peuvent se cantonner à une seule mesure. +mesures, la plupart des litiges peuvent se cantonner à moins d'une +mesure. @item Lorsque vous créez un exemple minimal à partir de votre code, commencez par commenter des portions de votre fichier -- à l'aide de @w{@code{%} -ou @code{%@{ @dots{} %@}}}. Tout ce que vous mettez en commentaire et -qui ne nuit pas à la démonstration est superflu@tie{}; -suprimez-le@tie{}! +ou @code{%@{ @dots{} %@}}}. Tout ce que vous mettez en commentaire et +qui ne nuit pas à la démonstration est superflu ; suprimez-le ! @item Évitez autant que faire se peut toute notation, tonalité ou métrique @@ -345,32 +372,75 @@ litige. N'utilisez pas les commandes @code{\override} ou @code{\set} à moins que le problème ne soit directement lié à leur utilisation. +@item +Le cas échéant, joignez une image de ce à quoi vous voulez arriver. + @end itemize @divEnd @divEnd +@divClass{column-center-bottom} +@subheading Jusqu'où pousser le minimalisme@tie{}? +En voici un exemple : + +@example +\version "2.14.1" +\include "english.ly" + +\score @{ + \new Staff @{ + \key d \major + \numericTimeSignature + \time 2/4 + 16 8. + %% Ici : la liaison des ré est bizarre. + %% Trop haute ? Extrémité gauche décalée par rapport à celle du si ? + ~ + 8 [ ] + @} +@} +@end example + +C'est vrai, ce n'est pas très long. Mais on peut encore le réduire : + +@example +\version "2.14.1" +@{ + % la liaison du milieu est bizarre : + 8. ~ 8 +@} +@end example + +Les exemples minimaux dépassant les dix lignes de code ne sont pas +légion -- quatre lignes suffisent bien souvent à indiquer le problème. + +@divEnd @node Signalement de bogue @unnumberedsec Signalement de bogue @translationof Bug reports +@divClass{heading-center} +Si votre saisie entraîne un crash ou une sortie erronée, c'est un bogue. +@divEnd + + @divClass{column-center-top} @subheading Étape 1 : Le bogue est-il déjà recensé ? -Si votre saisie entraine un crash ou une sortie erronée, c'est un bogue. Un recensement des bogues non encore résolus est disponible sur notre -@emph{google bug tracker}@tie{}; suivez le lien +@emph{google bug tracker} ; suivez le lien @example @uref{http://code.google.com/p/lilypond/issues/list} @end example -@warning{Nous vous remercions de ne pas ajouter directement de +@warning{Nous vous saurons gré de ne pas ajouter directement de signalement sur le traceur de bogues. Vous pourrez toujours, une fois -qu'il aura été duement répertorié, y apporter vos commentaires et +qu'il aura été dûment répertorié, y apporter vos commentaires et compléments d'information.} @divEnd @@ -379,16 +449,16 @@ compléments d'information.} @divClass{column-left-bottom} @subheading Étape 2 : Génération d'un signalement de bogue -Lorsque le disfonctionnement que vous avez repéré n'est pas répertorié, +Lorsque le dysfonctionnement que vous avez repéré n'est pas répertorié, faites-le nous savoir en créant un signalement de bogue. @warning{Nous n'acceptons les signalements de bogue que s'ils sont rédigés sous la forme d'@ref{Exemples minimaux}. Nous ne disposons pas de suffisamment de ressources pour traiter les rapports de bogue, aussi tout exemple non minimaliste sera rejeté. Dans la plupart des -cas, seules quelques notes suffisent à démontrer le disfonctionnement.} +cas, seules quelques notes suffisent à démontrer le dysfonctionnement.} -Voici ce à quoi devrait ressembler tout signalement de bogue@tie{}: +Voici ce à quoi devrait ressembler tout signalement de bogue : @example % Dans une liaison de prolongation @@ -420,7 +490,7 @@ Si vous êtes déjà inscrit à la liste de diffusion courriel comme à l'accoutumée. @item -Si vous néavez pas souscrit à la liste de diffusion, vous pouvez +Si vous n'avez pas souscrit à la liste de diffusion, vous pouvez cependant transmettre votre rapport de bogue au travers de @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs, l'interface gmane de lilypond.bugs}. @@ -435,13 +505,14 @@ ligne @end example @noindent -sans oublier le @code{>} au tout début de votre message@tie{}; c'est +sans oublier le @code{>} au tout début de votre message ; c'est @strong{impératif}. Si vous ne voulez ou ne pouvez pas envoyer un rapport de bogue selon les instructions et en anglais, envoyez votre rapport ou posez votre -question sur la @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr, -liste francophone}@tie{}; nous nous chargerons de transmettre un rapport +question sur la +@uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr, +liste francophone} ; nous nous chargerons de transmettre un rapport à la liste anglophone et assurerons le suivi. @end itemize @@ -454,13 +525,14 @@ liste francophone}@tie{}; nous nous chargerons de transmettre un rapport Une fois le message reçu, nos @qq{exterminateurs de bogues} analyseront votre rapport et vous demanderont peut-être des informations -supplémentaires avant de l'ajouter au traceur. Dans la mesure où -l'équipe est réduite, merci de leur laisser une bonne journée avant +complémentaires avant de l'ajouter au traceur. Dans la mesure où +l'équipe est réduite, merci de leur laisser quelques jours avant qu'ils ne vous transmettent le numéro de référence de votre signalement une fois qu'il aura été ajouté à la base. -Vous serez automatiquement notifié du traitement apporté à ce bogue, dès -lors que vous avez une compte chez google. +Vous pourrez alors, après l'avoir @qq{marqué}, y apporter vos +commentaires et être automatiquement notifié du traitement apporté à ce +bogue, dès lors que vous avez un compte chez google. @divEnd @divClass{column-center-bottom} @@ -468,7 +540,7 @@ lors que vous avez une compte chez google. Une fois votre requête enregistrée, n'hésitez pas à nous indiquer le résultat que vous escomptiez. Qu'il s'agisse d'un bout de code ou d'une -image -- réalisée à partir de n'importe quel outil --, tant qu'il nous +image -- réalisée à partir de n'importe quel outil --, tant que cela nous aide à voir ce que vous désirez obtenir. @divEnd @@ -484,16 +556,96 @@ aide à voir ce que vous désirez obtenir. @divClass{column-left-top} @divClass{keep-bullets} -@helpusTasks +@helpusSimple + +@divEnd +@divEnd + +@divClass{column-right-top} +@helpusAdvanced @divEnd + + +@node Mécénat +@unnumberedsec Mécénat +@translationof Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading Primes + +Il fut un temps où + +@itemize +@item des utilisateurs ont payé pour de nouvelles fonctionnalités, +@item des développeurs ont ajouté des fonctionnalités moyennant finances. +@end itemize + +Le projet LilyPond ne dispose d'aucune organisation quant à ces +@qq{efforts} ; il n'est en aucun cas partie prenante dans ces +transactions ni ne saurait les interdire. Tout contrat qui pourrait +intervenir entre personnes privées ne saurait nous impliquer. + @divEnd @divClass{column-right-top} -@helpusProjects +@subheading Principes généraux + +Tout utilisateur désireux de rétribuer un travail doit avoir à l'esprit +les points suivants : + +@itemize +@item +Les développeurs de LilyPond peuvent parfois proposer leurs services +sur les différentes listes de diffusion. + +@item +Tout entendement entre personnes privées requiert les mêmes précautions +de base que n'importe quelle transaction : qui paye, combien, par quel +moyen et dans quelles conditions. Nous vous invitons à lever tout doute +ou ambiguïté à ce sujet, avant même que les travaux soient entamés. + +@end itemize @divEnd +@divClass{column-center-bottom} +@subheading Développeurs intéressés + +Vous trouverez ci-dessous une liste des personnes ayant exprimé leur +intérêt pour une rémunération. Notez bien que la somme de travail varie +selon les gens et dans le temps. Nous ne saurions garantir que cette +liste soit à jour, ni les capacités des intéressés. Le seul critère est +@qq{XYZ a demandé à être mentionné sur cette page}. + +Un aperçu de l'historique des sources de LilyPond peut vous aider à +déterminer l'activité et l'expérience des développeurs. Les +statistiques s'arrêtent à la version @versionDevel{}. + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, depuis les origines} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, sur un an} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, sur un trimestre} +@end multitable + +Développeurs intéressés : +@table @asis +@item @email{dak@@gnu.org, David Kastrup (le contacter en anglais)} +Vos contributions me permettront de continuer mon activité à temps plein +sur LilyPond. Je me concentre sur la modélisation des interfaces entre +l'utilisateur et le programme -- cohérence, implémentation, +simplification, documentation et débogage. + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + @node Développement @unnumberedsec Développement @@ -508,22 +660,24 @@ aide à voir ce que vous désirez obtenir. @end ifset +@c we normally don't allow named references, but in this case +@c it's good to emphasize the "stable" part. -gp @warning{Il s'agit des versions @emph{instables et de développement}. Si vous avez le moindre doute quant à l'utilisation ou l'installation de LilyPond, nous vous enjoignons à utiliser le -@ref{Téléchargement,téléchargement de la version stable} et la -lecture des @ref{Manuels,manuels pour la version stable}.} +@ref{Téléchargement, téléchargement de la version stable} et la +lecture des @ref{Manuels, manuels pour la version stable}.} @divEnd @divClass{column-center-top} @subheading Numérotation des versions -Il existe deux jeux de version pour LilyPond@tie{} des versions stables +Il existe deux jeux de version pour LilyPond : des versions stables et des versions instables de développement. Les versions stables -comportent, en versionnage @qq{mineur}, un numéro pair (p.ex. 2.8, 2.10, -ou 2.12). Les versions de développement, quant à elles, comportent un -versionnage @qq{mineur} impair (p.ex. 2.7, 2.9 ou 2.11). +comportent, en versionnage @qq{mineur}, un numéro pair (par ex. 2.8, +2.10 ou 2.12). Les versions de développement, quant à elles, +comportent un versionnage @qq{mineur} impair (par ex. 2.7, 2.9 ou 2.11). @divEnd @@ -538,8 +692,8 @@ dans le Guide du contributeur. @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git, dépôt git de LilyPond} @end quotation -Les rédacteurs de la documentation ainsi que les testeurs préfèreront -travailler à partir des binaires les plus à jour@tie{}: +Les rédacteurs de la documentation ainsi que les testeurs préféreront +travailler à partir des binaires les plus à jour : @quotation @@ -574,7 +728,7 @@ d'aider les nouveaux contributeurs, et dans le but de préserver au mieux la stabilité de ce système, nous avons rédigé un manuel dédié aux activités de développement. -@warning{Dans la mesure où le développement de LilyPond est disséminé +@warning{Dans la mesure où les développeurs de LilyPond sont disséminés sur la planète, il n'est pas prévu que ce document soit un jour traduit@dots{}} @@ -613,7 +767,7 @@ relatifs à ce niveau de mise à jour @item @uref{../../input/regression/lilypond-book/collated-files.html, Test de lilypond-book} relatifs à ce niveau de mise à jour -(@uref{../../input/regression/lilypond-book/collated-files.pdf, versionpdf}). +(@uref{../../input/regression/lilypond-book/collated-files.pdf, version pdf}). @end itemize @end ifclear @@ -648,8 +802,11 @@ Test de lilypond-book} relatifs à ce niveau de mise à jour @subsubheading Toutes versions @itemize -@item @uref{http://lilypond.org/test, Archives des tests de régression} : -Comparaisons entre différentes versions. +@item @uref{http://lilypond.org/test, +Comparaison entre différentes versions} + +@item @uref{http://lilypond.org/download/binaries/test-output/, +Archive de tous les tests de régression} @end itemize @@ -657,12 +814,11 @@ Comparaisons entre différentes versions. @divEnd - @divClass{column-center-bottom} @subheading Manuels @ifclear web_version -@warning{Il s'agit des manuels pour LilyPond @version{}@tie{}; la +@warning{Il s'agit des manuels pour LilyPond @version{} ; la dernière mouture est consultable sur @url{http://lilypond.org}} @end ifclear @@ -677,11 +833,11 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @docLinkPdf{Initiation,learning,@manualDevelLearningPdf-fr} @item -@docLinkSplit{Glossaire,music-glossary,@manualDevelGlossarySplit-fr} +@docLinkSplit{Glossaire,music-glossary,@manualDevelGlossarySplit} @tab -@docLinkBig{Glossaire,music-glossary,@manualDevelGlossaryBig-fr} +@docLinkBig{Glossaire,music-glossary,@manualDevelGlossaryBig} @tab -@docLinkPdf{Glossaire,music-glossary,@manualDevelGlossaryPdf-fr} +@docLinkPdf{Glossaire,music-glossary,@manualDevelGlossaryPdf} @item @docLinkSplit{Essai,essay,@manualDevelEssaySplit-fr} @@ -707,11 +863,11 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @docLinkPdf{Utilisation,usage,@manualDevelUsagePdf-fr} @item -@docLinkSplit{Morceaux choisis,snippets,@manualDevelSnippetsSplit-fr} +@docLinkSplit{Morceaux choisis,snippets,@manualDevelSnippetsSplit} @tab -@docLinkBig{Morceaux choisis,snippets,@manualDevelSnippetsBig-fr} +@docLinkBig{Morceaux choisis,snippets,@manualDevelSnippetsBig} @tab -@docLinkPdf{Morceaux choisis,snippets,@manualDevelSnippetsPdf-fr} +@docLinkPdf{Morceaux choisis,snippets,@manualDevelSnippetsPdf} @headitem Utilisation ponctuelle @@ -723,11 +879,11 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @docLinkPdf{Web,web,@manualDevelWebPdf-fr} @item -@docLinkSplit{Nouveautés,changes,@manualDevelChangesSplit-fr} +@docLinkSplit{Nouveautés,changes,@manualDevelChangesSplit} @tab -@docLinkBig{Nouveautés,changes,@manualDevelChangesBig-fr} +@docLinkBig{Nouveautés,changes,@manualDevelChangesBig} @tab -@docLinkPdf{Nouveautés,changes,@manualDevelChangesPdf-fr} +@docLinkPdf{Nouveautés,changes,@manualDevelChangesPdf} @item @docLinkSplit{Extension,extending,@manualDevelExtendingSplit-fr} @@ -737,11 +893,11 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @docLinkPdf{Extension,extending,@manualDevelExtendingPdf-fr} @item -@docLinkSplit{Références internes,internals,@manualDevelInternalsSplit-fr} +@docLinkSplit{Références internes,internals,@manualDevelInternalsSplit} @tab -@docLinkBig{Références internes,internals,@manualDevelInternalsBig-fr} +@docLinkBig{Références internes,internals,@manualDevelInternalsBig} @tab -@docLinkPdf{Références internes,internals,@manualDevelInternalsPdf-fr} +@docLinkPdf{Références internes,internals,@manualDevelInternalsPdf} @ifset web_version @headitem En téléchargement @@ -756,6 +912,186 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @divEnd +@node GSoC 2012 +@unnumberedsec GSoC 2012 +@translationof GSoC 2012 + + +@divClass{column-center-top} +@subheading Le Google Summer of Code + +Le Google Summer of Code est un programme global qui rémunère des +étudiants durant la période estivale, pour teavailler au profit de +projets @emph{open source}. + +L'équipe LilyPond considère qu'il s'agit là d'une excellente opportunité +pour recruter de nouveaux contributeurs, encourager et motiver des +étudiants qui participent déjà au développement de LilyPond. L'un de +nos contributeurs a été reçu pour participer à l'édition 2012 du +programme, sous l'égide du @uref{http://www.gnu.org/, projet GNU}, et +nous comptons bien participer aux éditions futures. + +@divEnd + + +@divClass{column-center-bottom} +@subheading Recensement de nos idées pour 2012 + +Voici les projets que nous avons proposés aux étudiants du GSoC 2012. +Bien que la période de candidature soit close, nous avons décidé de +maintenir en ligne cette page du site, comme source d'inspiration pour +ceux qui seraient intéressés au développement de LilyPond. Des membres +de l'équipe de développement aideront volontiers ceux qui aimeraient +s'attaquer à l'un de ces projets. + +Il y a naturellement bien d'autres choses à améliorer dans LilyPond, y +compris dans les détails. Une liste exhaustive des problèmes est +disponible @uref{http://code.google.com/p/lilypond/issues/list, ici}. + + +@subheading Notes d'ornement @emph{(grace notes)} + +Résolution des problèmes de synchronisation des notes d'ornement, tout +en tenant compte de l'architecture sous-jacente (voir +@uref{http://code.google.com/p/lilypond/issues/detail?id=34, +le numéro 34 de notre traceur}). Les notes d'ornement perturbent +LilyPond dans sa gestion du temps, dans la mesure où elles correspondent +quelque peu à un retour en arrière. Ceci entraîne des effets +indésirables tout particulièrement lorsqu'elles interviennent dans une +portée seulement. + +@strong{Difficulté :} moyenne + +@strong{Préalables :} C++, MIDI + +@strong{Recommandé :} familiarité avec les arcanes de LilyPond + +@strong{Mentors :} Mike Solomon, Carl Sorensen + + +@subheading MusicXML + +Ajout d'une fonctionnalité d'export au format MusiXML et amélioration de +l'import, tout en fournissant des tests de performance. Selon le temps +imparti, ceci pourrait se restreindre à : + +@divClass{keep-bullets} +@itemize + +@item +L'exportation d'un minimum d'informations musicales tel que cela se +pratique déjà au niveau du MIDI, autrement dit à l'aide de classes +d'exportateurs dérivées de la classe @emph{translator} ; + +@item +Construction de l'arborescence XML d'après le contenu musical de base, et +connexion des éléments musicaux à des balises XML ; + +@item +Faire en sorte que tous les graveurs LilyPond restent pleinement +opérationnels ; + +@item +Ajout d'une capacité de lier tout objet de rendu -- autrement dit chaque +stencil ou groupe de stencils -- à l'élément musical qui en est la +cause et, par voie de conséquence, à la balise correspondante dans +l'arborescence XML ; + +@item +Ajout d'un moteur de rendu XML qui pourrait alors inclure l'information +de mise en forme pour tout objet de rendu dans les balises XML. + +@end itemize +@divEnd + +Le but sera considéré atteint dès lors qu'une partition en XML aura été +importée, puis ré-exportée dans ce même format sans perte non +intentionnelle de donnée. + +@strong{Difficulté :} moyenne + +@strong{Préalables :} MusicXML, Python, les bases de LilyPond + +@strong{Mentors :} Reinhold Kainhofer, Mike Solomon + +La connaissance d'autres éditeurs de partition, dans un but de tests +comparatifs, constituerait un plus. + + +@subheading Amélioration des liaisons + +Le galbe par défaut des liaisons n'est souvent pas pleinement +satisfaisant. Il est par ailleurs impossible de marquer une liaison de +prolongation entre des enharmoniques (@code{@{ cis'~ des' @}}), et la +@qq{coupure} d'une liaison par un changement de clef ou de ligne n'est +pas totalement fonctionnelle. Ce projet comporte entre autres un +recensement d'exemples de résultats défectueux, l'appréciation du +résultat optimal et l'écriture du code approprié. + +@strong{Difficulté :} difficile + +@strong{Préalables :} C++, expérience dans l'écriture d'heuristiques + +@strong{Connaissances appréciées :} LilyPond, sens de l'esthétique + +@strong{Mentor :} Mike Solomon + + +@subheading Ajout de variantes spécifiques pour certains glyphes + +Il s'agit ici de pouvoir disposer de variantes, sur la ligne ou entre +deux lignes, plus courts ou plus étroits, pour certains glyphes -- les +altérations par exemple -- ainsi que d'une infrastructure générique de +gestion. Autre exemple, dans le domaine de la notation ancienne, avec +deux variantes de la brève, l'une avec un évidement plus important que +l'autre. + +@strong{Difficulté :} facile + +@strong{Préalables :} MetaFont, C++, une bonne vue pour les détails + +@strong{Connaissance appréciée :} les bases de LilyPond + +@strong{Mentor :} Werner Lemberg + + +@subheading Amélioration des ligatures + +Le positionnement des ligatures, qu'elles soient rectilignes, passent +d'une portée à l'autre, discontinues ou coudées, n'est pas optimal. +Une ligature devrait dépendre du contexte et des notes adjacentes (voir +@uref{http://icking-music-archive.org/lists/sottisier/sottigra.pdf, +la section 2.2 de cet article}). Dans la mesure du possible, raccourcir +le temps de calcul nécessaire à la génération des ligatures. + +@strong{Difficulté :} moyenne + +@strong{Préalables :} C++, expérience dans l'écriture d'heuristiques + +@strong{Connaissance appréciée :} sens de l'esthétique + +@strong{Mentors :} Mike Solomon, Carl Sorensen + + +@subheading Nettoyage des messages en cours de compilation + +Il s'agit d'assainir les messages du compilateur, l'analyse du code +statique, ainsi que les messages de @emph{valgrind}. Les outils +d'analyse automatique du code (messages en @code{g++} ou @code{clang}) +ainsi que les outils d'analyse comme @emph{valgrind} pour les +éventuelles fuites de mémoire ou @emph{callgrind} pour le profilage du +code, fournissent des informations précieuses quant à d'éventuelles +faiblesses du code C++. Faire le ménage dans tous ces messages nous +permettrait de rejeter tout patch qui introduirait des messages +superflus. + +@strong{Difficulté :} moyenne + +@strong{Préalable :} C++ + +@strong{Mentors :} Joe Neeman, Reinhold Kainhofer + +@divEnd @node Auteurs @@ -771,7 +1107,7 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @divEnd @divClass{column-right-top} -@subheading Ceux qui ont participé +@subheading Ceux qui ont participé dans le passé @divClass{keep-bullets} @developersPrevious @@ -853,78 +1189,91 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @subheading Ce que nous avons écrit @divClass{keep-bullets} -@itemize - -@item -Han-Wen Nienhuys, @emph{LilyPond, Automated music formatting and -the Art of Shipping}. Forum international du logiciel libre 2006 -(FISL7.0) (@uref{http://lilypond.org/web/images/FISL7-slides.pdf, -PDF 1095k}) -@item -Erik Sandberg, @emph{Séparer le langage source et le système de -formatage dans GNU LilyPond (Separating input language and formatter in -GNU LilyPond)}. Thèse de master, université d'Uppsala, Département des -technologies de l'information, mars@tie{}2006. -(@uref{http://lilypond.org/web/images/thesis-erik-sandberg.pdf, -PDF 750k}) - -@item -Han-Wen Nienhuys et Jan Nieuwenhuizen, @emph{LilyPond, un système de -gravure musicale automatisée}. Actes du 14e Colloque d'informatique -musicale (XIV CIM 2003), Florence, Itale, mai@tie{}2003. -(@uref{ http://lilypond.org/web/images/xivcim.pdf, PDF 95k}) - -@end itemize +@include we-wrote.itexi @divEnd @divEnd @divClass{column-center-bottom} - @subheading Ce que certains ont fait avec LilyPond - @divClass{keep-bullets} -@itemize -@item -Graham Percival, Tosten Anders et George Tzanetakis, -@emph{Generating Targeted Rhythmic Exercises for Music Students -with Constraint Satisfaction Programming}, International Computer -Music Conference 2008. - -@item -Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra, -@emph{Functional Harmonic Analysis and Computational Musicology -in Rameau}, Proceedings of the 12th Brazilian Symposium on Computer -Music, 2009, p. 207-210. - -@item -Alberto Simões, Anália Lourenço et José João Almeida, -@emph{Using Text Mining Techniques for Classical Music Scores Analysis}, -New Trends in Artificial Intelligence, 2007 J. Neves et al ed. - -@item -Kevin C. Baird 2005, -@emph{Real-time generation of music notation via audience interaction using -python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces -For Musical Expression (Vancouver, Canada, May 26 - 28, 2005). -New Interfaces For Musical Expression. National University of Singapore, -Singapore, 240-241. - -@end itemize +@include others-did.itexi @divEnd @divEnd +@contactUsAbout{publications universitaires} + @node Archives @unnumberedsec Archives @translationof Old news +@divClass{heading-center} +@warning{Le vieilles annonces et informations de version sont rangées au +@rwebnamed{Grenier,grenier}.} +@divEnd + @include web/news-front.itexi @include web/news.itexi + +@node Grenier +@unnumberedsec Grenier +@translationof Attic + +@divClass{column-center-top} +@subheading Annonces + +Annonces et nouvelles, par version : +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2 (2)}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +Liste descriptive des évolutions, par version : +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading Journal des modifications + +Notes des développeurs, par version : +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/fr/web/download.itexi b/Documentation/fr/web/download.itexi index 5d10ed7148..c095a7f8a3 100644 --- a/Documentation/fr/web/download.itexi +++ b/Documentation/fr/web/download.itexi @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of web.texi @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 446dc1f3ac9bfff6bfee31de929698b0425da6fe When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -214,6 +214,14 @@ Dans un terminal, tapez : uninstall-lilypond @end example +@subsubheading Aide + +Dans un terminal, tapez : + +@example +sh lilypond-@versionStable{}-OS-TYPE.sh --help +@end example + @divEnd @@ -236,22 +244,22 @@ mettre à jour ces versions. @item @sourceimage{logo-fedora,,,} @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447, -Fedora: LilyPond 2.12.3} +Fedora: LilyPond 2.14.2} @item @sourceimage{logo-ubuntu,,,} @uref{http://packages.ubuntu.com/search?keywords=lilypond, -Ubuntu: LilyPond 2.12.2} +Ubuntu: LilyPond 2.14.2} @item @sourceimage{logo-slackware,,,} @uref{http://www.johannes-schoepfer.de/lilypond/, -Slackware: LilyPond 2.12.3} +Slackware: LilyPond 2.14.2} @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,,,} @@ -301,12 +309,16 @@ protégés par le droit d’auteur. Pour MacOS X 10.4 ou supérieur tournant sur un processeur Intel (dans le doute, prenez celui-ci). +MacOS C 10.7 lion n'est à ce jour pas supporté. + @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC Pour MacOS X 10.4 ou supérieur tournant sur un processeur G3 ou G4 (anciens ordinateurs Apple). +MacOS C 10.7 lion n'est à ce jour pas supporté. + @end itemize @subsubheading Installation @@ -315,7 +327,7 @@ Double-cliquez sur le fichier téléchargé, puis déplacez-le où vous voulez. @subsubheading Désinstallation -Supprimez le répertoire LilyPond.app. +Supprimez le répertoire @code{LilyPond.app}. @divEnd @@ -336,13 +348,13 @@ ce qui suit.} @subsubheading MacOS X et la ligne de commande -Le moyen le plus pratique d'utiliser les scripts lilypond est de vous -créer des @qq{lanceurs}. +Le moyen le plus pratique d'utiliser les scripts LilyPond est de vous +créer des « lanceurs ». @enumerate @item -Créez un répertoire pour stocker ces différents scripts : +Créez un répertoire pour stocker ces différents scripts : @example mkdir -p ~/bin @@ -355,6 +367,7 @@ Créez un fichier @command{lilypond} qui contiendra @divClass{h-scroll-auto} @example +#!/bin/bash exec @var{RÉP}/LilyPond.app/Contents/Resources/bin/lilypond "$@@" @end example @divEnd @@ -378,9 +391,9 @@ chmod u+x lilypond @item -Ajoutez ce répertoire à votre chemin de recherche (@i{path}). Modifiez, -ou bien créez un fichier @code{.profile} à la racine de votre répertoire -personnel de telle sorte qu'il contienne +Ajoutez ce répertoire à votre chemin de recherche (@emph{path}). +Modifiez, ou bien créez un fichier @code{.profile} à la racine de votre +répertoire personnel de telle sorte qu'il contienne @example export PATH=$PATH:~/bin @@ -395,9 +408,9 @@ Ce fichier doit se terminer par une ligne vide. Les scripts -- aussi bien @command{lilypond-book}, @command{convert-ly}, @command{abc2ly}, que @command{lilypond} lui-même -- sont inclus dans un -fichier @code{.app} pour MacOS@tie{}X. +fichier @code{.app} pour MacOS X. -Ces scripts peuvent se lancer directement en ligne de commande : +Ces scripts peuvent se lancer directement en ligne de commande : @divClass{h-scroll-auto} @example @@ -454,7 +467,7 @@ Pour Windows ME, NT, 2000, XP, Vista, et Windows 7. Faites un double clic sur le fichier téléchargé, puis suivez les instructions de l'installateur. Nous vous conseillons de conserver les paramètres proposés par défaut -- options et répertoire d'installation. -À la fin de la procédure, cliquez sur @qq{Terminé}. LilyPond est installé. +À la fin de la procédure, cliquez sur « Terminé ». LilyPond est installé. @end enumerate @@ -465,14 +478,14 @@ Pour désinstaller LilyPond, vous pouvez au choix : @enumerate @item -À partir du répertoire LilyPond présent dans le menu @qq{Démarrer}, -cliquer sur l'icone @qq{Supprimer}. Cliquez ensuite sur le bouton -@qq{Terminé} une fois la désinstallation effectuée. +À partir du répertoire LilyPond présent dans le menu « Démarrer », +cliquer sur l'icone « Supprimer ». Cliquez ensuite sur le bouton +« Terminé » une fois la désinstallation effectuée. @item À partir du gestionnaire de programmes accessible depuis le Panneau de -configuration, choisissez LilyPond, puis prenez l'option @qq{Supprimer}. -Cliquez ensuite sur le bouton @qq{Terminé} une fois la désinstallation +configuration, choisissez LilyPond, puis prenez l'option « Supprimer ». +Cliquez ensuite sur le bouton « Terminé » une fois la désinstallation effectuée. @end enumerate @@ -502,21 +515,21 @@ I don't have English version of Windows. @end ignore Le moyen le plus pratique d'utiliser les programmes de LilyPond est -d'ajouter à la variable d'environnement @qq{path} le chemin vers le -répertoire contenant les exécutebles de LilyPond. +d'ajouter à la variable d'environnement « path » le chemin vers le +répertoire contenant les exécutables de LilyPond. @enumerate @item -Ouvrez le panneau de configuration et accédez aux @qq{Propriétés -système}. Dans l'onglet @qq{Avancé}, actionnez le bouton -@qq{Variables@tie{}d'environnement}. +Ouvrez le panneau de configuration et accédez aux « Propriétés +système ». Dans l'onglet « Avancé », actionnez le bouton +« Variables d'environnement ». @item -Dans la liste des variables système, sélectionnez @qq{Path} et cliquez -sur le bouton @qq{Modifier}. Dans la fenêtre qui s'est ouverte, ajoutez -aux @qq{Valeurs de la variable} le chemin au répertoire contenant les -fichiers exécutables de LilyPond, comme suit : +Dans la liste des variables système, sélectionnez « Path » et cliquez +sur le bouton « Modifier ». Dans la fenêtre qui s'est ouverte, ajoutez +aux « Valeurs de la variable » le chemin au répertoire contenant les +fichiers exécutables de LilyPond, comme suit : @example [@var{chemins déjà définis}];@var{RÉP}\LilyPond\usr\bin @@ -525,14 +538,15 @@ fichiers exécutables de LilyPond, comme suit : @warning{@var{RÉP} sera en règle générale @code{C:@bs{}Program Files}.} @noindent -puis cliquez le bouton @qq{OK} pour fermer la fenêtre. +puis cliquez le bouton « OK » pour fermer la fenêtre. @end enumerate @subsubheading Lancement des exécutables -Les exécutables de LilyPond -- tels que lilypond, lilypond-book et -convert-ly entre autres -- peuvent se lancer en ligne de commande : +Les exécutables de LilyPond -- tels que @command{lilypond}, +@command{lilypond-book} et @command{convert-ly} entre autres -- peuvent +se lancer en ligne de commande : @example lilypond test.ly @@ -564,7 +578,7 @@ protégés par le droit d’auteur. @divEnd @warning{Nous vous @strong{déconseillons} de compiler LilyPond par -vous-même ; les versions pré-compilées contiennent tout ce dont un +vous-même ; les versions précompilées contiennent tout ce dont un utilisateur a besoin.} @divClass{column-left-bottom} @@ -610,7 +624,6 @@ téléchargement}. @divClass{column-center-top} @subheading Licence logicielle -@translationof GPL GNU LilyPond est distribué selon la @ref{GPL,Licence Publique Générale GNU GPL}. Pour une introduction à diff --git a/Documentation/fr/web/introduction.itexi b/Documentation/fr/web/introduction.itexi index e8a2ae4740..81ca3502e2 100644 --- a/Documentation/fr/web/introduction.itexi +++ b/Documentation/fr/web/introduction.itexi @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of web.texi @ignore - Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682 + Translation of GIT committish: 84db10d9ea5ce6b86807fcb0bf4e1864d5ff5d52 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -24,13 +24,13 @@ L'inspiration pour LilyPond provient de deux musiciens qui s'étaient lassés de l'aspect fade et ennuyeux des partitions musicales produites avec un ordinateur. Tous les musiciens préfèrent lire de belles partitions de musique, pourquoi donc les programmeurs ne -développeraient-ils pas un logiciel pouvant en produire@tie{}? +développeraient-ils pas un logiciel capable d'en produire ? -C'est justement ce que fait LilyPond : ce logiciel grave de la musique +C'est justement ce que fait LilyPond : ce logiciel grave de la musique selon le meilleur de la tradition typographique avec un minimum de bricolage. Ne perdez pas de temps à ajuster l'espacement, déplacer des symboles un par un ou remodeler des liaisons. Vous impressionnerez vos -amis et collègues avec des partitions soignées@tie{}! +amis et collègues avec des partitions soignées ! @divEnd @@ -45,7 +45,7 @@ amis et collègues avec des partitions soignées@tie{}! @ref{Fonctionnalités} : de quoi LilyPond est capable. @item -@ref{Exemples} : je veux voir des partitions ! +@ref{Exemples} : je veux voir des partitions ! @item @ref{Liberté} : LilyPond est un logiciel libre. @@ -65,7 +65,7 @@ amis et collègues avec des partitions soignées@tie{}! @ref{Productions} : cas d'utilisation de LilyPond. @item -@ref{Témoignages} : que disent les gens sur LilyPond ? +@ref{Témoignages} : que disent les gens sur LilyPond ? @end itemize @divEnd @@ -77,7 +77,7 @@ amis et collègues avec des partitions soignées@tie{}! @item @ref{Entrée sous forme de texte} : vous écrivez de la musique comme du -@emph{texte} ? +@emph{texte} ? @item @ref{Facilités d'édition} : autres façons de travailler avec LilyPond. @@ -133,11 +133,11 @@ tend à déterminer la meilleure mise en page dès le départ, en déterminant l'espacement, les sauts de système et de page, afin de produire une mise en page compacte et homogène. Le logiciel résout les collisions entre paroles, notes et accords, et calcule la -courbure des liaisons, tout cela automatiquement@tie{}! - +courbure des liaisons, tout cela automatiquement ! @divEnd + @divClass{color2} @subheading Simplicité d'utilisation @@ -148,7 +148,7 @@ courbure des liaisons, tout cela automatiquement@tie{}! LilyPond prend en entrée du texte brut, que vous pouvez écrire dans votre éditeur de texte préféré, rapidement et confortablement. Vous pouvez oublier les prises de tête avec la souris. Le fichier texte -d'entrée contient toute la description de la musique à graver@tie{}; +d'entrée contient toute la description de la musique à graver ; ainsi, il n'est pas nécessaire de se rappeler de complexes séquences de commandes, il suffit de relire du texte d'entrée existant pour retrouver ce que l'on a déjà réussi à faire. @@ -167,8 +167,8 @@ partitions dans un document OpenOffice.org. Le format de fichier de LilyPond, qui décrit la musique sous forme de texte, permet également son utilisation par des utilisateurs ayant certains handicaps physiques. Les personnes ne pouvant saisir au -clavier ou contrôler une souris peuvent utiliser la reconnaissance vocale -pour éditer des fichiers LilyPond. Même des personnes aveugles +clavier ou contrôler une souris peuvent utiliser la reconnaissance +vocale pour éditer des fichiers LilyPond. Même des personnes aveugles peuvent utiliser des outils de lecture d'écran pour écrire des fichiers LilyPond, ce qui est quasiment impossible avec les logiciels de gravure musicale fonctionnant avec une interface graphique. @@ -182,9 +182,9 @@ intégré Scheme, un dialecte du puissant langage LISP, offre beaucoup de possibilités. Les paramètres, variables et fonctions sont tous documentés dans les manuels de référence. - @divEnd + @divClass{color3} @subheading Environnement @@ -193,20 +193,20 @@ documentés dans les manuels de référence. @subsubheading Un logiciel libre -LilyPond peut être téléchargé gratuitement ! Si si, c'est vrai. Vous +LilyPond peut être téléchargé gratuitement ! Si si, c'est vrai. Vous pouvez le récupérer depuis la page de téléchargement. Ce logiciel est également et avant tout libre : son code source est également disponible, et il est possible sous certaines conditions de le copier, de le modifier et de le redistribuer. Êtes-vous irrité par un -bogue, ou désirez-vous une fonctionnalité@tie{}? Ajoutez-la vous-même, +bogue, ou désirez-vous une fonctionnalité ? Ajoutez-la vous-même, ou payez quelqu'un d'autre pour le faire. @subsubheading Excellent support -LilyPond fonctionne sur les plateformes les plus courantes : GNU/Linux, -MacOS@tie{}X et Windows. Le logiciel est accompagné d'une large +LilyPond fonctionne sur les plateformes les plus courantes : GNU/Linux, +MacOS X et Windows. Le logiciel est accompagné d'une large documentation et des centaines d'exemples. Une communauté active répond aux questions via les listes d'utilisateurs, en particulier la liste anglophone et la liste francophone, tandis que l'équipe de développement @@ -215,7 +215,7 @@ assure une prompte résolution des problèmes. @subsubheading Éditeurs avancés -Plusieurs développeurs, eux-même utilisateurs de LilyPond, ont créé des +Plusieurs développeurs, eux-mêmes utilisateurs de LilyPond, ont créé des outils spécifiques dans le but de travailler plus rapidement et avec plus d'efficacité leurs fichiers LilyPond. Quelques exemples sont répertoriés à la rubrique @ref{Facilités d'édition}. @@ -224,7 +224,7 @@ répertoriés à la rubrique @ref{Facilités d'édition}. @divClass{column-center-bottom} -@subheading Et ensuite? +@subheading Et ensuite ? Si vous n'êtes toujours pas convaincu(e), jetez un coup d'œil à quelques @ref{Exemples}. Si vous êtes déjà décidé(e) à essayer LilyPond, nous @@ -239,13 +239,13 @@ vous invitons à lire d'abord @ref{Entrée sous forme de texte}. LilyPond est un outil puissant et flexible, adapté à beaucoup de styles et systèmes de notation. Parcourez notre galerie d'exemples et -inspirez-vous en@tie{}! +inspirez-vous en ! @newsItem @subsubheading Musique classique -Cette pièce pour orgue de J.S. Bach est représentative d'un travail +Cette pièce pour orgue de J.-S. Bach est représentative d'un travail basique de gravure avec LilyPond. @exampleImage{bach-bwv610} @@ -256,7 +256,7 @@ basique de gravure avec LilyPond. Cet exemple extrait de @emph{Goyescas} de Enrique Granados montre quelques-unes des fonctionnalités de gravure les plus avancées, -notamment les liens coudés, les hampes traversant la portée, et les +notamment les liens coudés, les hampes traversant les portées, et les lignes de suivi de voix. @exampleImage{granados} @@ -306,7 +306,7 @@ vocales, et une partie de violon. LilyPond prend en charge la notation de tablature, qui peut être personnalisée pour n'importe quel instrument utilisant ce type de notation. La notation des tablatures est calculée automatiquement par -LilyPond en fonction des hauteurs de notes. +LilyPond en fonction des hauteurs des notes. @exampleImage{tab-example} @newsEnd @@ -331,7 +331,7 @@ chant sacré à l'opéra. Voici un motet médiéval qui présente quelques particularités. La voix de ténor est écrite dans une métrique différente de celle des autres voix, mais doit tout de même se synchroniser avec elles. LilyPond gère élégamment cette difficulté. -Remarquez également les @emph{incipits} avec des clés de style Vatican, +Remarquez également les @emph{incipits} avec des clefs de style vatican, les hampes barrées indiquant des notes plicaturées, et les crochets de ligature sur certains groupes de notes. @@ -342,7 +342,7 @@ ligature sur certains groupes de notes. @subsubheading Applications pédagogiques LilyPond est également adapté à une utilisation à des fins -pédagogiques. Voici en exemple un exercice de contrepoint. +pédagogiques. Voici par exemple un exercice de contrepoint. @exampleImage{theory} @newsEnd @@ -371,9 +371,9 @@ extrait de l'œuvre de Hu Haipeng, compositeur aveugle. @divClass{column-center-bottom} -@subheading Et ensuite ? +@subheading Et ensuite ? -Vous n'êtes toujours pas convaincu(e) ? LilyPond est un logiciel libre, +Vous n'êtes toujours pas convaincu(e) ? LilyPond est un logiciel libre, vous garantissant de la @ref{Liberté}. Si vous êtes déjà décidé(e) à utiliser LilyPond, nous vous recommandons de lire d'abord @ref{Entrée sous forme de texte}. @@ -393,7 +393,7 @@ communauté de passionnés. Ce logiciel est distribué selon la @ref{FDL, Licence Libre de Documentation GNU FDL}, accordant à tous la liberté de le corriger, le modifier et étendre ses fonctionnalités. La gravure musicale de qualité ne devrait pas vous coûter des centaines -d'euros dépensés pour acheter une licence de logiciel@tie{}! +d'euros dépensés pour acheter une licence de logiciel ! @divEnd @@ -405,21 +405,21 @@ d'euros dépensés pour acheter une licence de logiciel@tie{}! @itemize @item -Aucun coût d'essai : téléchargez-le et essayez-le sans aucune -restriction@tie{}! Qu'avez-vous à perdre@tie{}? +Aucun coût d'essai : téléchargez-le et essayez-le sans aucune +restriction ! Qu'avez-vous à perdre ? @item -Partage : si vous appréciez ce logiciel, donnez-en une copie à vos amis, -professeurs, étudiants et collègues@tie{}! +Partage : si vous appréciez ce logiciel, donnez-en une copie à vos amis, +professeurs, étudiants et collègues ! @item -Code source disponible : si vous êtes curieux du fonctionnement interne +Code source disponible : si vous êtes curieux du fonctionnement interne de LilyPond, vous avez le droit de le connaître exactement grâce à la disponibilité du code source et de toute l'infrastructure de compilation. @item -Extensible : vous pouvez ajouter des fonctionnalités, corriger des +Extensible : vous pouvez ajouter des fonctionnalités, corriger des bogues et modifier le fonctionnement. Si vous n'êtes pas un programmeur, vous pouvez embaucher quelqu'un pour le faire à votre place. @@ -430,14 +430,12 @@ potentiellement importante pour un compositeur exigeant sur la notation, une entreprise ou un milieu de recherche. @item -Indépendance par rapport aux éditeurs de logiciel : si une entreprise +Indépendance par rapport aux éditeurs de logiciel : si une entreprise fait faillite, qu'advient-il des logiciels et fichiers dans le format de -ces logiciels que cette entreprise développait et éditait@tie{}? Ce -n'est pas un problème avec LilyPond@tie{}; même si toute l'équipe de -développement laissait ce logiciel à l'abandon, il serait encore -légalement et effectivement disponible afin d'être copié, modifié et -distribué. - +ces logiciels que cette entreprise développait et éditait ? Ce n'est +pas un problème avec LilyPond ; même si toute l'équipe de développement +laissait ce logiciel à l'abandon, il serait encore légalement et +effectivement disponible afin d'être copié, modifié et distribué. @end itemize @@ -448,23 +446,23 @@ distribué. @c @divClass{column-right-top} @divClass{color3} @divClass{keep-bullets} -@subheading Pourquoi les développeurs de LilyPond @qq{donnent-ils} leur travail gratuitement ? +@subheading Pourquoi les développeurs de LilyPond « donnent-ils » leur travail gratuitement ? La plupart d'entre nous conçoivent le développement de LilyPond comme un passe-temps ou un travail bénévole, c'est pourquoi cette question serait -mieux formulée ainsi@tie{}: pourquoi des gens contribuent bénévolement à -LilyPond@tie{}? +mieux formulée ainsi : pourquoi des gens contribuent bénévolement à +LilyPond ? @itemize @item -Pour le plaisir : travailler pour un but particulier peut être motivant, -d'autant plus que le travail d'équipe apporte de l'entraide@tie{}! +Pour le plaisir : travailler pour un but particulier peut être motivant, +d'autant plus que le travail d'équipe apporte de l'entraide ! @item -Des objectifs communs : nous voulons tous produire des partitions de +Des objectifs communs : nous voulons tous produire des partitions de musique de qualité, mais peu de gens ont l'expertise -- et personne n'a -le temps@tie{}! -- de créer un logiciel qui gère toutes les situations. +le temps ! -- de créer un logiciel qui gère toutes les situations. En travaillant tous ensemble -- l'un améliore le code des ligatures automatiques, un autre corrige le galbe des liaisons, et un troisième écrit de la documentation expliquant l'utilisation de ces @@ -472,29 +470,29 @@ fonctionnalités -- nous pouvons tendre bien plus vite vers ce but. @item -@qq{Culture du don} : le mouvement du logiciel libre a créé de nombreux +« Culture du don » : le mouvement du logiciel libre a créé de nombreux grands projets logiciels tels que @uref{http://kernel.org/, GNU/Linux}, @uref{http://www.getfirefox.com/, Mozilla Firefox} et @uref{http://www.wesnoth.org/, Battle for Wesnoth}. Ayant bénéficié de -ces projets en tant qu'utilisateurs, certains souhaitent donner en -retour à la communauté en contribuant à un logiciel libre. +ces projets en tant qu'utilisateurs, certains souhaitent « donner en +retour » à la communauté en contribuant à un logiciel libre. @item -Expérience professionnelle : la contribution à des projets de logiciel +Expérience professionnelle : la contribution à des projets de logiciel libre est une excellente manière de pratiquer la programmation, l'édition de documentation et la conception. Cette expérience a aidé quelques développeurs à décrocher un emploi ou une bourse d'études. - @end itemize @divEnd @divEnd + @divClass{column-center-bottom} -@subheading Et ensuite ? +@subheading Et ensuite ? -Vous n'êtes toujours pas convaincu(e) ? Lisez notre essai exposant nos +Vous n'êtes toujours pas convaincu(e) ? Lisez notre essai exposant nos conceptions de la typographie musicale à la section @ref{Contexte}. Si vous êtes déjà décidé(e) à utiliser LilyPond, nous vous recommandons de lire d'abord @ref{Entrée sous forme de texte}. @@ -513,13 +511,13 @@ conceptions de la typographie musicale informatisée. Si vous voulez une introduction rapide à LilyPond et préférez l'essayer au plus vite, la lecture de l'essai serait trop longue. Si toutefois -vous préférez le lire maintenant, allez à la section @ref{Essai}. +vous préférez le lire maintenant, allez à la rubrique @ref{Essai}. @divEnd @divClass{column-center-bottom} -@subheading Et ensuite ? +@subheading Et ensuite ? -Vous n'êtes toujours pas convaincu(e) ? Découvrez quelques +Vous n'êtes toujours pas convaincu(e) ? Découvrez quelques @ref{Productions} de nos utilisateurs et sources de partitions de musique. Si vous êtes déjà décidé(e) à utiliser LilyPond, nous vous recommandons de lire d'abord @ref{Entrée sous forme de texte}. @@ -541,26 +539,62 @@ mentionnons que quelques-uns. @itemize @item -@emph{Affaire Étrangère}, un opéra de -@uref{http://valentin.villenave.net/,Valentin Villenave}, livret -de @uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim}, -dont la première a eu lieu le 1er@tie{}février@tie{}2009 en France à -@uref{http://www.orchestre-montpellier.com/, l'Opéra de Montpellier}. +Après les avoir réorchestrés, @uref{http://www.aurelienbello.com/, +Aurélien Bello} a donné plusieurs représentations, entre octobre 2011 et +avril 2012, des @emph{Tableaux d'une exposition} de Mussorgsky à la tête +de @uref{http://www.junge-philharmonie-brandenburg.de/, l'orchestre +philharmonique des jeunes de Brandenbourg}. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, compositeur et +directeur musical. Ses travaux les plus récents incluent @emph{Go Thy Way}, +donné par les @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} en mars 2012, la @emph{Just Out of Reach +Suite}, donnée par le +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Duo Chrysalis} ainsi que @emph{thrafsmata} en juillet 2011 par le +@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh +New Music Ensemble}. + +@item +@emph{Anonymous Student Compliment or Complaint} a permis à +@uref{http://www.mikesolomon.org, Mike Solomon} de gagner le +@uref{http://leftcoastensemble.org/contest, Concours de composition de +la côte Est 2011}, regroupant 172 participants de 22 nationalités. +Parmi ses autres œuvres, nous citerons Norman (un an) pour clarinette +solo, donnée en octobre 2010 à l'occasion du Festival de musique +électro-acoustique (FEMF) de +@uref{http://emu.music.ufl.edu/fems_concerts.html, l'Université de Floride}. @item -L'exécution d'@emph{Armide} de Lully, les 15 et 16@tie{}mai@tie{}2009, à -Houston, Texas, par -@uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury Baroque}, -avec un matériel gravé par +Une édition moderne de la @emph{Serenata Erminia} d'Alessandro +Scarlatti, réalisée par le musicologue italien Thomas Griffin. Celle-ci +a servi le 22 octobre 2010 dans la gallerie du palais Zevallos +Stigliano à Naples lors des célébrations organisées pour le +350e anniversaire de la naissance du compositeur -- voir +@uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}. + +@item +L'exécution d'@emph{Armide} de Lully, les 15 et 16 mai 2009, à Houston, +Texas, par @uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury +Baroque}, avec un matériel gravé par @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}. @item Des passages instrumentaux @emph{d'Hippolyte et Aricie} de Rameau ont -été joués le 8@tie{}mai@tie{}2009 en l'église Saint-James de Manhattan, -par Frederick Renz et son ensemble +été joués le 8 mai 2009 en l'église Saint-James de Manhattan, par +Frederick Renz et son ensemble @uref{http://www.earlymusicny.org/, Early Music New York}, avec des partitions gravées par Nicolas Sceaux. +@item +@emph{Affaire Étrangère}, un opéra de +@uref{http://valentin.villenave.net/, Valentin Villenave}, livret +de @uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim}, +dont la première a eu lieu le 1er février 2009 en France à +@uref{http://www.orchestre-montpellier.com/, l'Opéra national de +Montpellier}. + @end itemize @divEnd @@ -575,13 +609,13 @@ partitions gravées par Nicolas Sceaux. @item Le @uref{http://www.mutopiaproject.org/index.html, projet Mutopia} -propose en téléchargement libre des partitions de plus de 1@tie{}500 -pièces de musique classique@tie{}; c'est la plus grande vitrine de +propose en téléchargement libre des partitions de plus de 1 500 +pièces de musique classique ; c'est la plus grande vitrine de partitions LilyPond. @c don't make this "Mutopia" a link, since that looks silly. @item -@uref{http://etudeapp.com, Etude}, @qq{sheet music on steroids} est une +@uref{http://etudeapp.com, Etude}, « sheet music on steroids » est une application pour iPhone qui affiche des partitions pour piano générées par LilyPond, dont certaines proviennent de Mutopia. Cette application comporte un clavier virtuel qui indique aux pianiste lecteur débutant @@ -593,8 +627,8 @@ partitions de musique sacrée de grande qualité, disponibles immédiatement en téléchargement ou sous forme de partition imprimable. @item -@uref{http://http://www.shadylane.fr/, The Shady Lane Publishing}, -est un @qq{micro-éditeur de partitions musicales} qui a pour but de +@uref{http://www.shadylane.fr/, The Shady Lane Publishing}, +est un « micro-éditeur de partitions musicales » qui a pour but de promouvoir une nouvelle forme de pratique économique, plus proche des musiciens et amoureux de la musique. @@ -605,9 +639,9 @@ musiciens et amoureux de la musique. @divClass{column-center-bottom} -@subheading Et ensuite ? +@subheading Et ensuite ? -Vous n'êtes toujours pas convaincu(e) ? Lisez quelques +Vous n'êtes toujours pas convaincu(e) ? Lisez quelques @ref{Témoignages} de nos utilisateurs. Si vous êtes déjà décidé(e) à utiliser LilyPond, nous vous recommandons de lire d'abord @ref{Entrée sous forme de texte}. @@ -624,11 +658,23 @@ utiliser LilyPond, nous vous recommandons de lire d'abord @divClass{keep-bullets} @itemize + @item +Avril 2011 + +@uref{http://www.linux-magazine.com,Linux Magazine} publie un +article sur trois projets en pleine évolution, +@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf, +Projects on the Move}. Dans cette présentation de MuseScore, LilyPond +et Chordii, Carla Schroder indique que @qq{même si LilyPond se base sur +la ligne de commande, l'absence d'interface graphique n'est en rien +rebutante ; son langage est agréable et facile à apprendre}, et +fournit un exemple simple et concret. + @item Mai 2010 Peter Kirn publie, sur le site Create Digital Music, une -@uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,critique de LilyPond}. +@uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/, critique de LilyPond}. Son approche reste objective et il invite à essayer LilyPond pour la qualité de son rendu. @@ -672,23 +718,23 @@ main. Juin 2006 @uref{http://distrowatch.com,DistroWatch} récompense LilyPond et -@uref{http://distrowatch.com/weekly.php?issue=20060605,écrit}@tie{}: -@qq{Mesdames et Messieurs, nous avons l'immense plaisir de vous annoncer +@uref{http://distrowatch.com/weekly.php?issue=20060605,écrit} : +« Mesdames et Messieurs, nous avons l'immense plaisir de vous annoncer que, à la demande de nombreux lecteurs, les récompenses du DistroWatch -de mai@tie{}2006 sont attribuées à LilyPond (190@tie{}@euro{}) et Lua -(250@tie{}US$).} +de mai 2006 sont attribuées à LilyPond (190 @euro{}) et Lua +(250 US$). » @item Décembre 2005 -@uref{http://linuxjournal.com,Linux Journal} publie un article sur de +@uref{http://linuxjournal.com, Linux Journal} publie un article sur de stupéfiants graphiques [d'analyse Schenkerienne] avec GNU LilyPond ( -@uref{http://www.linuxjournal.com/article/8364,(Stunning [Schenker] -Graphics with GNU LilyPond)}, cité en couverture. Il s'agit d'un article +@uref{http://www.linuxjournal.com/article/8364, Stunning [Schenker] +Graphics with GNU LilyPond}), cité en couverture. Il s'agit d'un article détaillé mais pratique, proposant des extraits musicaux édités avec -LilyPond. Son auteur, Kris Shaffer, note que @qq{GNU LilyPond génère +LilyPond. Son auteur, Kris Shaffer, note que « GNU LilyPond génère des beaux graphiques, reléguant au second plan ses alternatives -commerciales.} +commerciales. » @item 20 août 2005 @@ -697,7 +743,7 @@ Le journal belge De Standaard enquête sur les motivations des auteurs de logiciels libres dans un article intitulé @uref{http://www.standaard.be/Artikel/Detail.aspx?artikelId=G42H5GD6, Delen van KENNIS zonder WINSTBEJAG} (Libre partage des connaissances) -dans son @qq{DS2 bijlage}. L'exemple de LilyPond illustre cet article, +dans son « DS2 bijlage ». L'exemple de LilyPond illustre cet article, qui cite également des extraits d'un entretien par courriel avec Jan Nieuwenhuizen. Il s'agit de la première citation de LilyPond dans la presse généraliste. @@ -712,17 +758,17 @@ Un article français sur LilyPond 2.6 est paru sur Octobre 2004 Les éditeurs de @emph{Computer!Totaal}, magazine informatique -hollandais, @uref{http://lilypond.org/web/images/computer-totaal.jpeg, -décrivent LilyPond} dans leur numéro d'octobre 2004 comme@tie{}: @qq{un +hollandais, @uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, +décrivent LilyPond} dans leur numéro d'octobre 2004 comme « un merveilleux logiciel libre [@dots{}] Les partitions qu'il génère sont extrêmement belles [@dots{}] Un système très puissant permettant -presque tout.} +presque tout. » @item Juillet--août 2004 Dave Phillips a écrit un article d'introduction à LilyPond pour le -@uref{http://linuxjournal.com,Linux Journal}@tie{}: @emph{At the +@uref{http://linuxjournal.com,Linux Journal} : @emph{At the sounding edge: LilyPond}, @uref{http://www.linuxjournal.com/article/7657, première} et @uref{http://www.linuxjournal.com/article/7719, deuxième} partie. @@ -741,10 +787,10 @@ Février 2004 La chanteuse de Jazz Gail Selkirk a écrit sur son @uref{http://www.songbirdofswing.com/editorial_page/lilypond/, -plongeon dans la Mare-aux-Nénuphars}@tie{}: @qq{@dots{} vous pouvez -créer des conducteurs et du matériel pour orchestre, et le résultat peut -être étonnant.} @uref{http://www.computermusic.co.uk/, Computer Music Special}, -issue CMS06. +plongeon dans la Mare-aux-Nénuphars} : « @dots{} vous pouvez créer des +conducteurs et du matériel pour orchestre, et le résultat peut être +étonnant. » @uref{http://www.computermusic.co.uk/, Computer Music Special}, +numéro CMS06. @end itemize @@ -760,9 +806,9 @@ issue CMS06. @subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, premier violoncelle, Philharmonique de New York @qq{@dots{} J'avais écrit avec Encore quelques pièces pour violoncelle - solo. Je les ai imprimées avec LilyPond avant de les soumettre à - Schirmer en vue de les publier. J'en mettrais ma main à couper que - leur édition ne sera jamais aussi pointue que la mienne@tie{}!} +solo. Je les ai imprimées avec LilyPond avant de les soumettre à +Schirmer en vue de les publier. J'en mettrais ma main à couper que leur +édition ne sera jamais aussi pointue que la mienne !} @divEnd @@ -771,10 +817,10 @@ issue CMS06. @subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professeur de composition, Musikhochschule Freiburg @qq{Bien que ma maîtrise [de LilyPond] soit pour l'instant imparfaite, - je suis néanmoins @emph{très} impressionné. J'ai utilisé ce programme - pour un motet de Josquin Desprez en notation mensurale et je dois dire - que lilypond dépasse de loin tous les autres programmes de notation - tant au niveau de la rapidité que de l'ergonomie et du résultat@tie{}!} +je suis néanmoins @emph{très} impressionné. J'ai utilisé ce programme +pour un motet de Josquin Desprez en notation mensurale et je dois dire +que lilypond dépasse de loin tous les autres programmes de notation, +tant au niveau de la rapidité que de l'ergonomie et du résultat !} @divEnd @@ -783,10 +829,10 @@ issue CMS06. @subsubheading Darius Blasband, compositeur (Bruxelles) @qq{[Après la première répétition d'orchestre,] j'ai reçu de nombreux - compliments concernant la qualité des partitions. Plus important, - bien que l'apparence des partitions puisse être améliorée par le biais - de nombreuses commandes, c'est le résultat d'un code basique, sans - retouches, que les musiciens ont utilisé.} +compliments concernant la qualité des partitions. Plus important, +bien que l'apparence des partitions puisse être améliorée par le biais +de nombreuses commandes, c'est le résultat d'un code basique, sans +retouches, que les musiciens ont utilisé.} @divEnd @@ -794,21 +840,21 @@ issue CMS06. @subsubheading Kieren MacMillan, compositeur (Toronto, Canada) @qq{Merci et encore merci à l'équipe des développeurs pour leur - admirable travail. Je n'ai jamais rien vu qui approche le résultat que - j'obtiens avec Lilypond — je suis absolument convaincu que mes besoins - en terme d'édition musicale seront largement satisfaits par cette - superbe application. [@dots{}] une partition de base générée par - Lilypond [@dots{}] a meilleure mine que la plupart des publications - @qq{professionnelles} auxquelles je l'ai comparée, aussi bien de chez - Warner Bros., que même les plus récentes productions des @qq{bonnes - vieilles maisons}. [@dots{}]} - -@qq{Faites donc mieux que Finale/Sibelius/Igor et consorts@tie{}!!!} +admirable travail. Je n'ai jamais rien vu qui approche le résultat que +j'obtiens avec Lilypond — je suis absolument convaincu que mes besoins +en terme d'édition musicale seront largement satisfaits par cette +superbe application. [@dots{}] une partition de base générée par +Lilypond [@dots{}] a meilleure mine que la plupart des publications +« professionnelles » auxquelles je l'ai comparée, aussi bien de chez +Warner Bros., que même les plus récentes productions des « bonnes +vieilles maisons. » [@dots{}]} + +@qq{Faites donc mieux que Finale/Sibelius/Igor et consorts !} @divEnd @divClass{testimonial-item} -@subsubheading Chris Cannam, programmeur en chef du projet @uref{http://www.rosegardenmusic.com/,RoseGarden} +@subsubheading Chris Cannam, programmeur en chef du projet @uref{http://www.rosegardenmusic.com/, RoseGarden} @qq{Lilypond est clairement le ténor brillantissime [de la gravure musicale de qualité].} @@ -841,7 +887,7 @@ qu'aucun produit commercial ne peut approcher cela.} @subsubheading David Bobroff, trombone basse, Orchestre symphonique d'Islande @qq{LilyPond est tout simplement génial [@dots{}] Plus j'en - apprends sur LilyPond, plus je l'apprécie@tie{}!} + apprends sur LilyPond, plus je l'apprécie !} @divEnd @@ -850,31 +896,30 @@ qu'aucun produit commercial ne peut approcher cela.} @qq{Je suis super impressionné par LilyPond [@dots{}]} -@qq{C'EST LE MEILLEUR PROGRAMME DE TOUS LES TEMPS !!!} +@qq{C'EST LE MEILLEUR PROGRAMME DE TOUS LES TEMPS !} @qq{Un GRAND merci à tous pour votre dur travail et votre -investissement@tie{}!} +investissement !} @divEnd @divClass{testimonial-item} -@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, contributeur au @uref{http://www.mutopiaproject.org/,projet Mutopia} +@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, contributeur au @uref{http://www.mutopiaproject.org/, projet Mutopia} @qq{J'avais une sorte de passion conflictuelle avec lui. Passion parce - que la première partition que j'en ai vu m'a vraiment émerveillé ! Le - descriptif de LilyPond ne dit pas tout de ses capacités, il est trop - modeste@tie{}! [@dots{}] au fur et à mesure que LilyPond s'améliore, et - que je regarde de plus près comment cela se passe avec Scheme, je suis - de moins en moins frustré. En fait, ce que je veux dire, c'est un - grand merci de nous fournir LilyPond, c'est vraiment un bon - programme.} +que la première partition que j'en ai vu m'a vraiment émerveillé ! Le +descriptif de LilyPond ne dit pas tout de ses capacités, il est trop +modeste ! [@dots{}] au fur et à mesure que LilyPond s'améliore, et +que je regarde de plus près comment cela se passe avec Scheme, je suis +de moins en moins frustré. En fait, ce que je veux dire, c'est un +grand merci de nous fournir LilyPond, c'est vraiment un bon programme.} @divEnd @divClass{testimonial-item} @subsubheading @uref{http://www.troff.org/whoswho.html#werner, Werner Lemberg}, Chef au Théâtre de Coblence (Allemagne) et éminent hacker GNU -@qq{À vrai dire, LilyPond fait un boulot des plus étonnants@tie{}!} +@qq{À vrai dire, LilyPond fait un boulot des plus étonnants !} @divEnd @@ -882,9 +927,9 @@ investissement@tie{}!} @subsubheading Paul Davis, développeur de @uref{http://jackaudio.org/, JACK} et @uref{http://www.ardour.org/, Ardour} @qq{Je considère [que LilyPond est] un programme incroyable, et qu'il - produit des résultats vraiment merveilleux. Après avoir lu une - interview à son sujet l'an dernier, j'ai déliré avec plusieurs de mes - amis sur son potentiel.} +produit des résultats vraiment merveilleux. Après avoir lu une +interview à son sujet l'an dernier, j'ai déliré avec plusieurs de mes +amis sur son potentiel.} @divEnd @divClass{testimonial-item} @@ -910,7 +955,7 @@ tout spécialement quand cela sort des standards.} @divEnd @divClass{column-center-bottom} -@subheading Et ensuite ? +@subheading Et ensuite ? Lisez @ref{Entrée sous forme de texte}. @divEnd @@ -924,11 +969,11 @@ Lisez @ref{Entrée sous forme de texte}. @c TRANSLATORS, so far it's mostly from @c http://lilypond.org/web/switch/howto -@subheading @qq{Compilation} de la musique +@subheading « Compilation » de la musique @imageClickable{nereid-shot-small,png, (cliquez pour agrandir), nereid-shot,png, right} -LilyPond est un système de @emph{compilation} : il opère sur un fichier +LilyPond est un système de @emph{compilation} : il opère sur un fichier texte contenant les notes. Le résultat produit en sortie peut être vu à l'écran ou imprimé. De ce point de vue, LilyPond est plus proche d'un langage de programmation qu'un logiciel d'édition de partition avec une @@ -942,12 +987,13 @@ musique. Cette façon de faire peut demander aux habitués des interfaces graphiques l'apprentissage d'une nouvelle façon de travailler, mais les -résultats en valent vraiment la peine@tie{}! +résultats en valent vraiment la peine ! @warning{nous ne présentons ici qu'un rapide aperçu du langage de -LilyPond -- ce n'est pas si compliqué que ça en a l'air@tie{}! Ce n'est pas -la peine de comprendre ces exemples en détail, notre manuel d'initiation -aborde d'une façon progressive tout ceci et bien d'autres choses encore.} +LilyPond -- ce n'est pas si compliqué que ça en a l'air ! Ce n'est +pas la peine de comprendre ces exemples en détail, notre manuel +d'initiation aborde d'une façon progressive tout ceci et bien d'autres +choses encore.} @subsubheading C'est simple comme bonjour @@ -958,9 +1004,10 @@ commandes spéciales commencent par un antislash. @imageFloat{text-input-1-annotate-fr,png,center} @imageFloat{text-input-1-output,png,center} -Les altérations sont obtenues avec différents suffixes : @code{-is} pour dièse, -@code{-es} pour bémol -- ce sont des noms de note hollandais, d'autres langues -sont disponibles. LilyPond détermine où placer les signes d'altération. +Les altérations sont obtenues avec différents suffixes : @code{is} pour +dièse, @code{es} pour bémol -- ce sont des noms de note hollandais, +d'autres langues sont disponibles. LilyPond détermine où placer les +signes d'altération. @imageFloat{text-input-2-annotate-fr,png,center} @imageFloat{text-input-2-output,png,center} @@ -974,11 +1021,10 @@ Ajoutez des accords et des paroles pour obtenir une chanson : @imageFloat{text-input-pop-output,png,center} - @subsubheading Matériel d'orcheste Le fichier source contient les notes de la pièce. Le conducteur et les -parties séparées peuvent être réalisés à partir de la même source@tie{}; +parties séparées peuvent être réalisés à partir de la même source ; ainsi, la modification d'une note se répercute toujours à la fois sur les parties et le conducteur. Pour pouvoir utiliser la même musique à plusieurs endroits, celle-ci est stockée dans une variable, c'est-à-dire @@ -1007,8 +1053,8 @@ façon de saisir la musique. Pour cette raison, nous avons écrit une documentation complète d'initiation, à commencer par le manuel d'@ref{Initiation}. -S'il-vous-plaît, lisez le manuel d'initiation avant de vous plaindre -de l'existance d'un bogue@tie{}! Il arrive que de nouveaux utilisateurs +S'il vous plaît, lisez le manuel d'initiation avant de vous plaindre +de l'existence d'un bogue ! Il arrive que de nouveaux utilisateurs pensent que LilyPond fonctionne incorrectement, alors qu'il n'en est rien et que quelque détail leur a simplement échappé. @@ -1046,6 +1092,14 @@ Si vous n'êtes toujours pas convaincu(e), examinez les @unnumberedsec Facilités d'édition @translationof Easier editing +@ignore +La politique de GNU interdit de mentionner des logiciels non-libres, en +vertu de quoi aucun lien vers de tels logiciel n'apparaît. + +C'est le cas, en particulier, pour : +- l'interface LilyPond TextMate (éditeur payant pour MacOS). + +@end ignore @divClass{column-center-top} @subheading LilyPondTool @@ -1060,7 +1114,7 @@ Si vous n'êtes toujours pas convaincu(e), examinez les @uref{http://lilypondtool.organum.hu} -Greffon de l'éditeur de texte @uref{http://www.jedit.org,jEdit}, +Greffon de l'éditeur de texte @uref{http://www.jedit.org, jEdit}, LilyPondTool est l'un des outils d'édition en mode texte le plus riche pour éditer des partitions LilyPond. Ses fonctionnalités comprennent un assistant de création de partition avec prise en charge des paroles, @@ -1077,13 +1131,14 @@ visonneuse de PDF intégrée avec un excellent pointer-cliquer. @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} Frescobaldi est un éditeur de texte dédié à LilyPond, avec visionneuse PDF intégrée, un assistant de création de partition et beaucoup de -fonctionnalités d'édition. Il repose sur les bibliothèques KDE@tie{}4 -et fonctionne actuellement sur toutes les variantes d'Unix dont GNU/Linux. +fonctionnalités d'édition. Il fonctionne actuellement sur la plupart +des systèmes d'exploitation (GNU/Linux, MacOS X et Windows). @divEnd @@ -1109,11 +1164,11 @@ Un déplacement du curseur dans le fichier LilyPond sera répercuté dans la vue graphique et toute erreur de syntaxe dans votre code sera mise en évidence. - @divEnd + @divClass{column-center-top} -@subheading Emacs et Vim +@subheading Éditeurs de texte @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} @@ -1125,10 +1180,12 @@ la vue graphique et toute erreur de syntaxe dans votre code sera mise en Emacs est un éditeur de texte avec des fontionnalités spécifiques pour un grand nombre de langages de programmation et de documents. C'est un éditeur très extensible, qui peut être utilisé comme un environnement de -développement intégré (IDE). Il existe un @emph{mode LilyPond} qui offre -quelques fonctionnalités spécifiques pour travailler avec des fichiers -source LilyPond. L'un des développeurs a même écrit un mode majeur pour -Emacs, @uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}. +développement intégré (IDE). Il existe un @emph{mode LilyPond} qui +offre quelques fonctionnalités spécifiques pour travailler avec des +fichiers source LilyPond. L'un des développeurs a même écrit un mode +majeur pour Emacs, +@uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}. + @uref{http://www.vim.org} @@ -1142,18 +1199,8 @@ travailler sur des fichiers source LilyPond. Vous trouverez plus d'information quant au paramétrage d'Emacs et Vim au chapitre @rprogram{LilyPond et les éditeurs de texte}. -@divEnd - -@ignore these may not need to be here at all, as they are purely -MacOS scripts. - -@divClass{column-center-top} -@subheading Autres - -@subsubheading TexShop @sourceimage{logo-macosx,,,} - @uref{http://www.uoregon.edu/~koch/texshop} L'éditeur TexShop pour MacOS@tie{}X peut être muni d'une extension pour @@ -1163,22 +1210,19 @@ disponible à @uref{http://www.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example -@subsubheading TextMate @sourceimage{logo-macosx,,,} +@uref{http://www.uoregon.edu/~koch/texshop} -TextMate dispose d'un paquetage complémentaire pour LilyPond. Pour -l'installer, lancez les commandes suivantes@tie{}: +TexShop, éditeur pour MacOS X, dispose de scripts complémentaires +permettant de lancer directement @command{lilypond-book} et +@command{convert-ly}. Ils sont disponibles ici : @example -mkdir -p /Library/Application\ Support/TextMate/Bundles -cd /Library/Application\ Support/TextMate/Bundles -svn co http://svn.textmate.org/trunk/Bundles/LilyPond.tmbundle/ +@uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example @divEnd -@end ignore - @divClass{column-center-top} @@ -1189,57 +1233,63 @@ svn co http://svn.textmate.org/trunk/Bundles/LilyPond.tmbundle/ @itemize @item -@uref{http://www.rosegardenmusic.com,Rosegarden}, séquenceur audio et -MIDI, comporte aussi un éditeur pour portée unique. +@uref{http://canorus.org,Canorus}, éditeur de partitions, peut également +exporter vers LilyPond, mais est encore au stade de développement beta. +Les testeurs sont les bienvenus. @item -@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, -basé sur la bibliothèque @uref{http://cairographics.org, Cairo}, dispose -d'une fonction expérimentale d'export pour LilyPond. +@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml, +NtEd}, basé sur la bibliothèque @uref{http://cairographics.org, Cairo}, +dispose d'une fonction expérimentale d'export pour LilyPond. @item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar} est un éditeur de -tablatures multi-pistes. Il permet d'afficher tablatures et partitions, -et il peut exporter du code LilyPond. +@uref{http://musescore.org, MuseScore} est un éditeur de partition. Il +exporte dans une certaine mesure au format LilyPond. -@item -@uref{http://musescore.org,MuseScore} produit du code LilyPond. +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY}, programme en C#, permet de convertir une chanson écrite avec +@c @uref{http://www.noteworthysoftware.com/, NoteWorthy} +NoteWorthy au format LilyPond. @item -@uref{http://canorus.org,Canorus} peut également exporter vers LilyPond, -mais est encore au stade de développement beta. Les testeurs sont les -bienvenus. +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple} est un assistant à la création de conducteur et parties. Il +permet de mixer plusieurs parties en un conducteur. @item -@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, un -convertisseur monophonique temps-réel MIDI vers LilyPond. +@uref{http://www.rosegardenmusic.com,Rosegarden}, séquenceur audio et +MIDI, comporte aussi un éditeur pour portée unique. @item -@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm,NW2LY}, -programme en C#, permet de convertir une chanson écrite avec -@uref{http://www.noteworthysoftware.com/, NoteWorthy} au format LilyPond. +@uref{http://launchpad.net/rumor/,Rumor}, un convertisseur monophonique +temps-réel MIDI vers LilyPond. +@item +@uref{http://www.tuxguitar.com.ar/,TuxGuitar} est un éditeur de +tablatures multi-pistes. Il permet d'afficher tablatures et partitions, +et il peut exporter du code LilyPond. @end itemize + @subsubheading Générateurs de code @itemize @item @uref{http://www.projectabjad.org/,Abjad}, API de contrôle -formaliste de partition pour @uref{http://www.python.org/,Python}, +formaliste de partition pour @uref{http://www.python.org/, Python}, permet aux compositeurs de gérer du code LilyPond complexe. +@item +@uref{http://common-lisp.net/project/fomus/,FOMUS}, bibliothèque LISP +qui permet de générer de la notation à partir de logiciels de musique. + @item @uref{http://strasheela.sourceforge.net,Strasheela} est un système de composition musicale basé sur le projet @uref{http://www.mozart-oz.org/,Mozart/Oz}. -@item -@uref{http://common-lisp.net/project/fomus/,FOMUS}, bibliothèque LISP -qui permet de générer de la notation à partir de logiciels de musique. - @end itemize @divEnd @@ -1253,17 +1303,17 @@ qui permet de générer de la notation à partir de logiciels de musique. @item @uref{http://lilykde.googlecode.com/,LilyKDE} a été remplacé par @uref{http://www.frescobaldi.org/,Frescobaldi}. Il reste cependant -disponible en version LilyKDE3 pour KDE@tie{}3.5 et lilypond-KDE4 pour -KDE@tie{}4.1. +disponible en version LilyKDE3 pour KDE 3.5 et lilypond-KDE4 pour +KDE 4.1. @item @uref{http://noteedit.berlios.de,NoteEdit}, qui importait -@uref{http://www.musicxml.com/xml.html,MusicXML}, s'est scindé en +@uref{http://www.musicxml.com/xml.html, MusicXML}, s'est scindé en @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} et @uref{http://canorus.org,Canorus}. @item -@uref{http://lilycomp.sourceforge.net, LilyComp} permet de saisir +@uref{http://lilycomp.sourceforge.net,LilyComp} permet de saisir graphiquement des notes. Il fonctionne comme un pavé numérique permettant de produire de la notation LilyPond. @@ -1273,7 +1323,7 @@ permettant de produire de la notation LilyPond. @divClass{column-center-bottom} -@subheading Et ensuite ? +@subheading Et ensuite ? Vous êtes prêt(e) à @ref{Téléchargement,télécharger LilyPond}. @@ -1281,7 +1331,7 @@ Vous êtes toujours incrédule ? Beaucoup de compositeurs, musiciens et chefs ont appris à écrire de la musique dans notre format texte. Des utilisateurs expérimentés nous font savoir qu'ils parviennent à entrer une partition LilyPond complète plus rapidement qu'avec un clavier MIDI -ou la souris dans une interface graphique@tie{}! Peut-être souhaitez-vous +ou la souris dans une interface graphique ! Peut-être souhaitez-vous relire les @ref{Fonctionnalités}, les @ref{Exemples}, la @ref{Liberté} donnée par LilyPond, ou revoir les @ref{Témoignages} ou @ref{Productions} des utilisateurs. De plus, nous expliquons notre @@ -1306,3 +1356,5 @@ sont protégés par le droit d'auteur. @divEnd @divEnd + +@c LocalWords: subsubheading itemize diff --git a/Documentation/fr/web/manuals.itexi b/Documentation/fr/web/manuals.itexi index def0a2e94b..fd8fe010b6 100644 --- a/Documentation/fr/web/manuals.itexi +++ b/Documentation/fr/web/manuals.itexi @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of web.texi @ignore - Translation of GIT committish: 0ab366a101ef8c3439dd8d6ff6c634f70fa5f63b + Translation of GIT committish: 24f9636ac779b4c0de197f60bf4f922c16be5ec4 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -135,14 +135,18 @@ particulier pour élaborer des retouches. @itemize +@item +@ref{Tous}@tie{}: +liens rapides, manuels téléchargeables, et documentation des anciennes +versions. + @item @ref{Traductions}@tie{}: état des traductions pour les lecteurs non anglophones. @item -@ref{Tous}@tie{}: -liens rapides, manuels téléchargeables, et documentation des anciennes -versions. +@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}@tie{}: +user-created examples, hints and tips. @item @ref{Développement}@tie{}: @@ -317,8 +321,8 @@ recommandée avant d'aborder de grands projets. @docLinks{Utilisation des programmes, usage, @rprogramnamed{Top,Utilisation des programmes}, @manualStableUsageSplit-fr, - @manualStableUsageBig-fr, 300 KB, - @manualStableUsagePdf-fr, 400 KB} + @manualStableUsageBig-fr, 400 KB, + @manualStableUsagePdf-fr, 600 KB} @divEnd @@ -395,7 +399,7 @@ C'est expliqué dans @rprogram{Résolution de problèmes}. @subsubheading Pourquoi changez-vous la syntaxe ? -C'est expliqué dans @rprogram{LilyPond une langue vivante}. +C'est expliqué dans @rprogram{LilyPond est une langue vivante}. @divEnd @@ -474,9 +478,9 @@ programmation avancée d’ajustements et retouches dans LilyPond. @docLinks{Extension, extending, @rextendnamed{Top,Extension}, - @manualStableExtendingSplit, - @manualStableExtendingBig, 200 KB, - @manualStableExtendingPdf, 400 KB} + @manualStableExtendingSplit-fr, + @manualStableExtendingBig-fr, 200 KB, + @manualStableExtendingPdf-fr, 400 KB} @divEnd diff --git a/Documentation/hu/GNUmakefile b/Documentation/hu/GNUmakefile index 983c7b43b6..2205f934ad 100644 --- a/Documentation/hu/GNUmakefile +++ b/Documentation/hu/GNUmakefile @@ -1,9 +1,7 @@ ISOLANG = hu depth = ../.. -SUBDIRS = web learning texidocs usage -STEPMAKE_TEMPLATES = documentation +SUBDIRS = web learning texidocs usage included +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root -EXTRA_DIST_FILES = web.texi - include $(depth)/make/stepmake.make diff --git a/Documentation/hu/included/GNUmakefile b/Documentation/hu/included/GNUmakefile new file mode 100644 index 0000000000..afe7a4d738 --- /dev/null +++ b/Documentation/hu/included/GNUmakefile @@ -0,0 +1,10 @@ +depth = ../../.. + +STEPMAKE_TEMPLATES=documentation + +EXTRA_DIST_FILES+=$(call src-wildcard,*.ly) +EXTRA_DIST_FILES+=$(call src-wildcard,*.ily) +EXTRA_DIST_FILES+=$(call src-wildcard,*.itexi) +EXTRA_DIST_FILES+=$(call src-wildcard,*.itely) + +include $(depth)/make/stepmake.make diff --git a/Documentation/hu/learning.tely b/Documentation/hu/learning.tely index af7864ae2c..3477a361cc 100644 --- a/Documentation/hu/learning.tely +++ b/Documentation/hu/learning.tely @@ -20,7 +20,7 @@ Ez a tankönyv a LilyPond @version{} verziójába nyújt bevezetést. @end macro @macro copyrightDeclare -Copyright @copyright{} 1999--2011 a szerzők. +Copyright @copyright{} 1999--2012 a szerzők. @end macro @set FDL diff --git a/Documentation/hu/learning/common-notation.itely b/Documentation/hu/learning/common-notation.itely index cd311401ca..70fc1f520a 100644 --- a/Documentation/hu/learning/common-notation.itely +++ b/Documentation/hu/learning/common-notation.itely @@ -9,7 +9,7 @@ @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Elemi kottaírás @chapter Elemi kottaírás @@ -1185,6 +1185,8 @@ Az alábbi példa a fenti változókat hasznosítja újra: @subsection Verziószám @translationof Version number +@untranslated + @cindex verzió @cindex verziószám @cindex frissítés diff --git a/Documentation/hu/learning/fundamental.itely b/Documentation/hu/learning/fundamental.itely index 5c4718283e..14cb01a3b6 100644 --- a/Documentation/hu/learning/fundamental.itely +++ b/Documentation/hu/learning/fundamental.itely @@ -10,7 +10,7 @@ @c -*- coding: utf-8; mode: texinfo; -*- -@c \version "2.14.0" +@c \version "2.16.0" @node Alapfogalmak @chapter Alapfogalmak @translationof Fundamental concepts @@ -1696,7 +1696,7 @@ Notation Reference: @ruser{Kontextusok létrehozása}. @node Az ábrázoló fogalma @subsection Az ábrázoló fogalma -@subsection Az ábrázoló fogalma +@translationof Engravers explained @cindex engravers @@ -1864,7 +1864,7 @@ is specified, no error message is produced, but the expected action will not take place. For example, the @code{instrumentName} clearly lives in the @code{Staff} context, since it is the staff that is to be named. -In this example the first staff is labelled, but not the second, +In this example the first staff is labeled, but not the second, because we omitted the context name. @lilypond[quote,verbatim,ragged-right] @@ -3122,7 +3122,7 @@ can think of these as functions). padText = #(define-music-function (parser location padding) (number?) #{ - \once \override TextScript #'padding = #$padding + \once \override TextScript #'padding = #padding #}) \relative c''' { diff --git a/Documentation/hu/learning/templates.itely b/Documentation/hu/learning/templates.itely index b10b96d359..7041334a8d 100644 --- a/Documentation/hu/learning/templates.itely +++ b/Documentation/hu/learning/templates.itely @@ -10,7 +10,7 @@ @c -*- coding: utf-8; mode: texinfo; -*- -@c \version "2.14.0" +@c \version "2.16.0" @node Sablonok @appendix Sablonok @translationof Templates @@ -71,7 +71,7 @@ @untranslated -@appendixsubsec Négyszólamú vegyeskar +@appendixsubsec Négyszólamú vegyeskar sablonok @appendixsubsec Négyszólamú vegyeskar és automatikus zongorakivonat @appendixsubsec Négyszólamú vegyeskar igazított kontextusokkal diff --git a/Documentation/hu/learning/tutorial.itely b/Documentation/hu/learning/tutorial.itely index de36576343..ae6aac8be2 100644 --- a/Documentation/hu/learning/tutorial.itely +++ b/Documentation/hu/learning/tutorial.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Első lecke @chapter Első lecke @@ -558,7 +558,7 @@ A következő részlet a megjegyzések használatára mutat példát: @node Hogyan olvassuk a dokumentációt? @section Hogyan olvassuk a dokumentációt? -@translationof How to read the manual +@translationof How to read the manuals @menu * Kapcsos zárójelek elhagyása:: @@ -568,7 +568,7 @@ A következő részlet a megjegyzések használatára mutat példát: @node Kapcsos zárójelek elhagyása @subsection Kapcsos zárójelek elhagyása -@translationof Omitting braces +@translationof Omitted material @cindex hogyan olvassuk a kézikönyvet @cindex kézikönyv diff --git a/Documentation/hu/learning/tweaks.itely b/Documentation/hu/learning/tweaks.itely index 5e304eba94..d5b2da7c7d 100644 --- a/Documentation/hu/learning/tweaks.itely +++ b/Documentation/hu/learning/tweaks.itely @@ -10,7 +10,7 @@ @c -*- coding: utf-8; mode: texinfo; -*- -@c \version "2.14.0" +@c \version "2.16.0" @node A kimenet finomhangolása @chapter A kimenet finomhangolása @translationof Tweaking output diff --git a/Documentation/hu/macros.itexi b/Documentation/hu/macros.itexi index 7c747c4a31..78cf9a3fa7 100644 --- a/Documentation/hu/macros.itexi +++ b/Documentation/hu/macros.itexi @@ -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). @@ -707,7 +707,7 @@ A LilyPond @version{} verziójához @end html @iftex -@image{examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/hu/translations.itexi b/Documentation/hu/translations.itexi index 058cb51fd5..764140b377 100644 --- a/Documentation/hu/translations.itexi +++ b/Documentation/hu/translations.itexi @@ -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 Thu May 31 09:12:39 UTC 2012 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -111,18 +111,18 @@ partially @item 2 Elemi kottaírás @* -4184 +4187 @tab Harmath Dénes @tab @tab @ifhtml @html -yes +partially (93 %) @end html @end ifhtml @ifnothtml -yes +partially (93 %) @end ifnothtml @tab @ifhtml @@ -138,7 +138,7 @@ partially @item 3 Alapfogalmak @* -11139 +11130 @tab Harmath Dénes @tab @tab @@ -155,7 +155,7 @@ yes @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -165,7 +165,7 @@ partially @item 4 A kimenet finomhangolása @* -15408 +15468 @tab Harmath Dénes @tab @tab @@ -182,7 +182,7 @@ no @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -192,7 +192,7 @@ partially @item A Sablonok @* -225 +219 @tab Harmath Dénes @tab @tab @@ -209,7 +209,7 @@ no @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -285,24 +285,24 @@ partially @item 1 A @command{lilypond} használata @* -3622 +4615 @tab Team-hu @tab @tab @ifhtml @html -partially (96 %) +partially (95 %) @end html @end ifhtml @ifnothtml -partially (96 %) +partially (95 %) @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -312,7 +312,7 @@ partially @item 2 A @command{convert-ly} használata @* -1189 +1209 @tab Team-hu @tab @tab @@ -329,7 +329,34 @@ yes @ifhtml @html -partially +partially +@end html +@end ifhtml +@ifnothtml +partially +@end ifnothtml +@tab pre-GDP +@item +3 A @command{lilypond-book} használata +@* +4137 +@tab Team-hu +@tab +@tab +@ifhtml + +@html +partially (13 %) +@end html +@end ifhtml +@ifnothtml +partially (13 %) +@end ifnothtml +@tab +@ifhtml + +@html +partially @end html @end ifhtml @ifnothtml @@ -351,7 +378,7 @@ LilyPond -- kottaszedés mindenkinek @item Section titles @* -585 +616 @tab Harmath Dénes @tab @tab @@ -368,11 +395,11 @@ yes @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @item @@ -405,7 +432,7 @@ partially @item Bevezetés @* -4506 +4753 @tab Harmath Dénes @tab @tab @@ -422,17 +449,17 @@ yes @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @item Letöltés @* -1183 +1211 @tab Harmath Dénes @tab @tab @@ -449,17 +476,17 @@ yes @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @item Dokumentáció @* -1200 +1214 @tab Harmath Dénes @tab @tab @@ -476,38 +503,38 @@ yes @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @item Közösség @* -1755 +3006 @tab Harmath Dénes @tab @tab @ifhtml @html -yes +partially (96 %) @end html @end ifhtml @ifnothtml -yes +partially (96 %) @end ifnothtml @tab @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/hu/usage.tely b/Documentation/hu/usage.tely index 03c6277c7f..c576311844 100644 --- a/Documentation/hu/usage.tely +++ b/Documentation/hu/usage.tely @@ -23,7 +23,7 @@ használatához. @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 a szerzők. +Copyright @copyright{} 1999--2012 a szerzők. @end macro @set FDL @@ -51,14 +51,14 @@ Copyright @copyright{} 1999--2011 a szerzők. @menu * A lilypond használata:: A kottaszedő alkalmazás futtatása. * A convert-ly használata:: Bemeneti fájlok frissítése. -* A lilypond-book használata:: Szöveg és zene integrációja. -* Külső programok:: A LilyPond és más programok együttműködése. -* Hasznos tanácsok:: Célravezető tippek. +* lilypond-book:: Szöveg és zene integrációja. +* External programs:: A LilyPond és más programok együttműködése. +* Suggestions for writing files:: Célravezető tippek. Függelék * GNU Free Documentation License:: E dokumentum licence. -* LilyPond tárgymutató:: +* LilyPond index:: LilyPond tárgymutató. @end menu @docMain diff --git a/Documentation/hu/usage/lilypond-book.itely b/Documentation/hu/usage/lilypond-book.itely index b331b8a85f..64bb8a37e1 100644 --- a/Documentation/hu/usage/lilypond-book.itely +++ b/Documentation/hu/usage/lilypond-book.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.13.36" +@c \version "2.16.0" @c Note: keep this node named so that `info lilypond-book' brings you here. @node lilypond-book @@ -98,7 +98,7 @@ A beállításokat szögletes zárójelbe kell tenni: 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} +\lilypondfile[quote,noindent]{screech-and-boink.ly} \end{document} @end verbatim @@ -154,13 +154,15 @@ c'4 f16 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} +@lilypondfile[quote,noindent]{screech-and-boink.ly} @page -@node Integrating music and text -@section Integrating music and text +@node Zene és szöveg integrációja +@section Zene és szöveg integrációja +@translationof Integrating music and text +@untranslated Here we explain how to integrate LilyPond with various output formats. @@ -173,6 +175,7 @@ Here we explain how to integrate LilyPond with various output formats. @node LaTeX @subsection @LaTeX{} +@untranslated @LaTeX{} is the de-facto standard for publishing layouts in the exact sciences. It is built on top of the @TeX{} typesetting engine, @@ -375,6 +378,7 @@ other details to know when processing @LaTeX{} documents, see @node Texinfo @subsection Texinfo +@untranslated 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 @@ -443,6 +447,7 @@ in-line image. It always gets a paragraph of its own. @node HTML @subsection HTML +@untranslated Music is entered using @@ -486,6 +491,7 @@ of lilypond. @node DocBook @subsection DocBook +@untranslated For inserting LilyPond snippets it is good to keep the conformity of our DocBook document, thus allowing us to use DocBook editors, validation @@ -554,8 +560,10 @@ stylesheets, however, it is possible that you have to make some customization for it. -@node Music fragment options -@section Music fragment options +@node Kottapéldák paraméterei +@section Kottapéldák paraméterei +@translationof Music fragment options +@untranslated In the following, a @q{LilyPond command} refers to any command described in the previous sections which is handled by @command{lilypond-book} to @@ -737,13 +745,6 @@ 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 @@ -770,8 +771,10 @@ directory part of the file path is stripped. @end table -@node Invoking lilypond-book -@section Invoking @command{lilypond-book} +@node A lilypond-book futtatása +@section A @command{lilypond-book} futtatása +@translationof Invoking lilypond-book +@untranslated @command{lilypond-book} produces a file with one of the following extensions: @file{.tex}, @file{.texi}, @file{.html} or @file{.xml}, @@ -958,8 +961,10 @@ are ignored. Only the first @code{\score} of a LilyPond block is processed. -@node Filename extensions -@section Filename extensions +@node Fájlkiterjesztések +@section Fájlkiterjesztések +@translationof Filename extensions +@untranslated 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 @@ -993,8 +998,10 @@ directory, you must use @code{--output} option to make message like @qq{Output would overwrite input file}. -@node lilypond-book templates -@section lilypond-book templates +@node lilypond-book sablonok +@section lilypond-book sablonok +@translationof lilypond-book templates +@untranslated These templates are for use with @code{lilypond-book}. If you're not familiar with this program, please refer to @@ -1140,8 +1147,10 @@ unterst__tzt werden. @end verbatim -@node Sharing the table of contents -@section Sharing the table of contents +@node Közös tartalomjegyzék +@section Közös tartalomjegyzék +@translationof Sharing the table of contents +@untranslated These functions already exist in the OrchestralLily package: @@ -1246,8 +1255,10 @@ where @code{\includescore} is defined as: @end smallexample -@node Alternate methods of mixing text and music -@section Alternative methods of mixing text and music +@node További módszerek zene és szöveg kombinálására +@section További módszerek zene és szöveg kombinálására +@translationof Alternate methods of mixing text and music +@untranslated Other means of mixing text and music (without @command{lilypond-book}) are discussed in diff --git a/Documentation/hu/usage/running.itely b/Documentation/hu/usage/running.itely index 1808f69c46..26b8a10f0b 100644 --- a/Documentation/hu/usage/running.itely +++ b/Documentation/hu/usage/running.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node A lilypond használata @@ -183,7 +183,7 @@ kárt okozzon. Például: @verbatim #(system "rm -rf /") { - c4^#(ly:export (ly:gulp-file "/etc/passwd")) + c4^$(ly:gulp-file "/etc/passwd") } @end verbatim @end quotation diff --git a/Documentation/hu/usage/updating.itely b/Documentation/hu/usage/updating.itely index 0c8e5af348..ccf924e161 100644 --- a/Documentation/hu/usage/updating.itely +++ b/Documentation/hu/usage/updating.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node A convert-ly használata diff --git a/Documentation/hu/web.texi b/Documentation/hu/web.texi index 857678b4a7..b3136d49a3 100644 --- a/Documentation/hu/web.texi +++ b/Documentation/hu/web.texi @@ -17,7 +17,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -37,7 +37,7 @@ @end ignore @copying -Copyright @copyright{} 2009--2011 by the authors. +Copyright @copyright{} 2009--2012 by the authors. @c next line is necessary for broken pre-4.13 texinfo's @c install-info, so leave it there until we officially @@ -217,30 +217,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (HTML oldalak)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML oldalak),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (egy nagy HTML oldal)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (egy nagy HTML oldal),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro diff --git a/Documentation/hu/web/community.itexi b/Documentation/hu/web/community.itexi index f3c1cbbb17..17be338147 100644 --- a/Documentation/hu/web/community.itexi +++ b/Documentation/hu/web/community.itexi @@ -857,21 +857,21 @@ Archívum} @item Han-Wen Nienhuys: @emph{LilyPond, automatikus kottaformázás és a szoftvertermék kiadásának művészete}. A szabad szoftver nemzetközi fóruma 2006 -(FISL7.0) (@uref{http://lilypond.org/web/images/FISL7-slides.pdf, +(FISL7.0) (@uref{http://lilypond.org/website/pdf/FISL7-slides.pdf, PDF 1095k}) @item Erik Sandberg: @emph{A bemeneti nyelv és a formázó szétválasztása a GNU Lilypondban}. Diplomaterv, Uppsalai Egyetem, Információtechnológiai Tanszék, 2006. március -(@uref{http://lilypond.org/web/images/thesis-erik-sandberg.pdf, +(@uref{http://lilypond.org/website/pdf/thesis-erik-sandberg.pdf, PDF 750k}) @item Han-Wen Nienhuys, Jan Nieuwenhuizen: @emph{LilyPond, egy automatizált kottaszedő rendszer}. Jegyzőkönyv a XIV. zenei informatikai kollokviumról (XIV CIM 2003), Firenze, Olaszország, 2003. május -(@uref{http://lilypond.org/web/images/xivcim.pdf, PDF 95k}) +(@uref{http://lilypond.org/website/pdf/xivcim.pdf, PDF 95k}) @end itemize @@ -937,7 +937,7 @@ A LilyPond 2.6-os verziójának kiadásáról megjelenik egy francia cikk a 2004. október A @emph{Computer!Totaal} holland informatikai magazin szerkesztői -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, azt írják a +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, azt írják a LilyPondról} a 2004. októberi számban: @qq{A LilyPond egy csodálatos szabad (nyílt forrású) szoftver! [...] A LilyPonddal szedett kotta kivételesen szép. [...] Egy sokrétű rendszerrel állunk szemben, ami szinte mindenre képes!} diff --git a/Documentation/hu/web/download.itexi b/Documentation/hu/web/download.itexi index 7fd0edaedc..b88e7a0ed5 100644 --- a/Documentation/hu/web/download.itexi +++ b/Documentation/hu/web/download.itexi @@ -249,10 +249,14 @@ Minden logó és termékábrázolás szerzői joggal védett. @downloadStableDarwinNormal Intel processzorokra (ha bizonytalan vagy afelől, hogy melyiket töltsd le, ezt válaszd) +A grafikus felület nem működik Mac OS X 10.7 Lion alatt! Ha a grafikus felületet szeretnéd használni, töltsd le a legújabb @ref{Fejlesztés, fejlesztői verziót}! + @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC -G3 és G4 processzorokra (régi Apple gépekben találhatóak) +PowerPC processzorokra (régi Apple gépekben találhatóak) + +Csak 2006 előtti Apple gépeken fut! @end itemize diff --git a/Documentation/hu/web/introduction.itexi b/Documentation/hu/web/introduction.itexi index fdd3c438aa..211d111d84 100644 --- a/Documentation/hu/web/introduction.itexi +++ b/Documentation/hu/web/introduction.itexi @@ -526,7 +526,7 @@ LilyPondot, először olvasd el a tudnivalókat a @node Ajánlások @unnumberedsec Ajánlások -@translationof Testimonials +@translationof Reviews @divClass{testimonial-item} @imageFloat{carter-brey,jpg, right} @@ -790,6 +790,7 @@ gyors begépeléséhez. @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} diff --git a/Documentation/hu/web/manuals.itexi b/Documentation/hu/web/manuals.itexi index e63cf9f2c5..054f76c9b0 100644 --- a/Documentation/hu/web/manuals.itexi +++ b/Documentation/hu/web/manuals.itexi @@ -428,7 +428,7 @@ az előző stabil verzió óta. @node Bővítés @unnumberedsec Bővítés -@translationof Extend +@translationof Extending @divClass{column-left-top} @subheading A LilyPond bővítése diff --git a/Documentation/included/README b/Documentation/included/README index 6252de2399..ef7b0eef32 100644 --- a/Documentation/included/README +++ b/Documentation/included/README @@ -10,4 +10,4 @@ direction and listed here. Do not use @ref{} in files in Documentation/included/; cross-references should be made with specific macros such as @rcontrib{}, @rextend{}, etc. See Documentation/macros.itexi for a -complete list. \ No newline at end of file +complete list. diff --git a/Documentation/included/authors.itexi b/Documentation/included/authors.itexi index b77ff39fad..9af9e2649d 100644 --- a/Documentation/included/authors.itexi +++ b/Documentation/included/authors.itexi @@ -35,18 +35,31 @@ @itemize +@item Bertrand Bordage: +@email{bordage.bertrand@@gmail.com}, +Core developer, font designer + @item Trevor Daniels: @email{t.daniels@@treda.co.uk}, Assistant documentation editor +@item Phil Holmes: +@email{mail@@philholmes.net} +@uref{http://www.philholmes.net} +Build unentangler, Bug squad member + +@item Ian Hulin: +Core developer + @item Reinhold Kainhofer: @email{reinhold@@kainhofer.com}, @uref{http://reinhold.kainhofer.com}, Core developer, Music2xml wrangler @item David Kastrup: -@email{dak@@gnu.org} -Code worrier, support fighter, accordionist +@email{dak@@gnu.org}, +hard core developer, user and programming interfaces, bug squashing and +swamp drainage. @item Jonathan Kulp: Assistant documentation editor @@ -88,11 +101,11 @@ Core developer @item Mike Solomon: @email{mike@@apollinemike.com}, -Contemporary music attaché +Core developer, Frog meister @item Carl Sorensen: @email{c_sorensen@@byu.edu}, -Core developer, Frog meister +Core developer @item Francisco Vila: Translation Meister @@ -100,6 +113,9 @@ Translation Meister @item Valentin Villenave: LSR editor and Bug squad member +@item Jan Warchoł: +happy nitpicker + @end itemize @end macro @@ -148,32 +164,20 @@ Core developer, Schemer extraordinaire @c use commas not colons +Aleksandr Andreev, 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, +Karin Hoethker, +Mark Hohl, +Justin Ohmie, +Benkő Pál, Julien Rioux, -Boris Shingarov, Patrick Schmidt, -Owen Tuz, -Jan Warchoł, -Andrew Wilson, -Rodolfo Zitellini +Adam Spiers, +Heikki Taurainen, +Piers Titus van der Torren, +Jan-Peter Voigt, +Janek Warchol @c no comma for last entry @@ -185,11 +189,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 +199,10 @@ Carsten Steger @c use commas not colons -Colin Campbell, -Andrew Hawryluk, James Lowe, -Mike Moral, -Ralph Palmer, -David Pounder, -Patrick Schmidt +Pavel Roskin, +Alberto Simoes, +Stefan Weil @c no comma for last entry @@ -215,13 +211,12 @@ Patrick Schmidt @macro bugsquadCurrent -James E. Bailey, Colin Campbell, +Eluze, Phil Holmes, -Urs Liska, +Marek Klein, Ralph Palmer, -Kieren MacMillan, -Dmytro O. Redchuk +James Lowe @c no comma for last entry @@ -232,7 +227,9 @@ Dmytro O. Redchuk @c use commas not colons -Christian Hitz +Colin Campbell, +Christian Hitz, +Phil Holmes @c no comma for last entry @@ -244,13 +241,8 @@ 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 +259,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 +332,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 @@ -344,29 +353,30 @@ Rune Zedeler Erlend Aasland, Trevor Bača, Alard de Boer, +Colin Campbell, Jay Hamilton, -Andrew Hawryluk, Joseph Harfouch, +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, 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 +386,13 @@ Rune Zedeler @macro bugsquadPrevious -@c nobody here yet +@c use commas not colons +James E. Bailey, +Derek Klinge, +Urs Liska, +Kieren MacMillan, +Ralph Palmer, +Dmytro O. Redchuk @c no comma for last entry @end macro @@ -386,13 +402,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 +417,39 @@ 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}, Adrian Mariano, Christian Mondrup, Tineke de Munnik, -@c @email{tdm@@dds.nl}, 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, 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 diff --git a/Documentation/included/chord-names-jazz.ly b/Documentation/included/chord-names-jazz.ly index 5be2e57a56..aff509ea92 100644 --- a/Documentation/included/chord-names-jazz.ly +++ b/Documentation/included/chord-names-jazz.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " Chord names are generated from a list pitches. The @@ -15,50 +15,52 @@ are turned off for brevity. chs = \transpose c' c' { - 1 - % m = minor triad - - \break - - - % triangle = maj - - \break - - - - \break - % 6 = major triad with added sixth - % m6 = minor triad with added sixth - - \break - - - - \break - - - - \break - - - - \break - - - - \break - - - - \break - - - - \break - - % add9 - + 1 + % m = minor triad + + \break + + + % triangle = maj + + \break + + + + \break + % 6 = major triad with added sixth + % m6 = minor triad with added sixth + + \break + + + + \break + + + + \break + + + + \break + + + + \break + + + + \break + + + + \break + + % add9 + + % Lydian + % altered chord } @@ -68,9 +70,11 @@ chs = \transpose c' c' efullmusicJazzAlt = { 1-\markup { "+" } - -\markup { \normal-size-super - % \override #'(font-family . math) "N" } - \override #'(font-family . math) "M" } + -\markup { + \normal-size-super + % \override #'(font-family . math) "N" + \override #'(font-family . math) "M" + } %%c:3.5.7 = \markup { \override #'(font-family . math) "M" } %%c:3.5.7 = \markup { \normal-size-super "maj7" } @@ -103,50 +107,49 @@ jazzAltProperties = \sequential { } banterProperties = \sequential { - \set chordNameFunction = #banter-chord-names + \set chordNameFunction = #banter-chord-names } \score{ << - \new ChordNames { - \set instrumentName = #"Ignatzek (default)" - \set shortInstrumentName = #"Def" - \chs - } - - \new ChordNames { - \jazzAltProperties - \set instrumentName = #"Alternative" - \set shortInstrumentName = #"Alt" - \chs - } + \new ChordNames { + \set instrumentName = #"Ignatzek (default)" + \set shortInstrumentName = #"Def" + \chs + } + + \new ChordNames { + \jazzAltProperties + \set instrumentName = #"Alternative" + \set shortInstrumentName = #"Alt" + \chs + } %{ - %% This is the Banter (1987) style. It gives exceedingly - %% verbose (wide) names, making the output file take up to 4 pages. - %% (TODO: how big is is now?) - %% Turned off by default. + %% This is the Banter (1987) style. It gives exceedingly + %% verbose (wide) names, making the output file take up to 4 pages. + %% (TODO: how big is is now?) + %% Turned off by default. - %% TODO: use smaller font for Banter (or remove some esoteric - %% chords). + %% TODO: use smaller font for Banter (or remove some esoteric + %% chords). - \new ChordNames { - \banterProperties - \set instrumentName = #"Banter" - \set shortInstrumentName = #"Ban" - \chs - } + \new ChordNames { + \banterProperties + \set instrumentName = #"Banter" + \set shortInstrumentName = #"Ban" + \chs + } %} - \new Staff \transpose c c' { \chs } + \new Staff \transpose c c' { \chs } >> \layout { - indent = 3.\cm - \context { - \ChordNames - \consists Instrument_name_engraver - } + \context { + \ChordNames + \consists Instrument_name_engraver + } } } diff --git a/Documentation/included/chord-names-languages.ly b/Documentation/included/chord-names-languages.ly index ade0409d0a..504005a5e1 100644 --- a/Documentation/included/chord-names-languages.ly +++ b/Documentation/included/chord-names-languages.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@cindex Chord Names German The English naming of chords (default) can be changed to German diff --git a/Documentation/included/compile.itexi b/Documentation/included/compile.itexi index 8f9a237608..eb24c59180 100644 --- a/Documentation/included/compile.itexi +++ b/Documentation/included/compile.itexi @@ -43,7 +43,7 @@ without compiling}. Attempts to compile LilyPond natively on Windows have been unsuccessful, though a workaround is available (see -@rcontrib{Lilydev}). +@rcontrib{LilyDev}). @node Requirements @@ -396,7 +396,7 @@ directory. Here are the relevant lines taken from the output of By default, `@command{make@tie{}install}' will install all the files in @file{/usr/local/bin}, @file{/usr/local/lib} etc. You can specify an installation prefix other than @file{/usr/local} -using `@code{--prefix}', for instance `@code{--prefix=$HOME}'. +using `@option{--prefix}', for instance `@option{--prefix=$HOME}'. @end quotation A typical installation prefix is @file{$HOME/usr}: @@ -458,6 +458,10 @@ make help TODO: Describe what @command{make} actually does. +@seealso +@ref{Generating documentation} provides more info on the @command{make} targets +used to build the LilyPond documentation. + @node Saving time with the -j option @subsection Saving time with the @option{-j} option @@ -483,9 +487,9 @@ that case, running @samp{make} without the @option{-j} is advised. If you want to build multiple versions of LilyPond with different configuration settings, you can use the -@code{--enable-config=@var{CONF}} option of @command{configure}. -You should use @code{make@tie{}conf=@var{CONF}} to generate the -output in @file{out-@var{CONF}}. For example, suppose you want to +@option{--enable-config=@var{conf}} option of @command{configure}. +You should use @code{make@tie{}conf=@var{conf}} to generate the +output in @file{out-@var{conf}}. For example, suppose you want to build with and without profiling, then use the following for the normal build @@ -576,6 +580,7 @@ re-install. See @ref{Configuring target directories}. @menu * Documentation editor's edit/compile cycle:: * Building documentation:: +* Building a single document:: * Saving time with CPU_COUNT:: * AJAX search:: * Installing documentation:: @@ -592,7 +597,8 @@ Initial documentation build: @example make [-j@var{X}] -make [-j@var{X} CPU_COUNT=@var{X}] doc @emph{## can take an hour or more} +make [-j@var{X} CPU_COUNT=@var{X}] doc @emph{## can take an hour or more} +make [-j@var{X} CPU_COUNT=@var{X}] doc-stage-1 @emph{## to build only PDF documentation} @end example @item @@ -604,16 +610,17 @@ Edit/compile cycle: make [-j@var{X}] @emph{## needed if editing outside} @emph{## Documentation/, but useful anyway} @emph{## for finding Texinfo errors.} -touch Documentation/*te?? @emph{## bug workaround} make [-j@var{X} CPU_COUNT=@var{X}] doc @emph{## usually faster than initial build.} @end example @item Reset: -In some cases, it is possible to clean the compiled documentation -with @samp{make@tie{}doc-clean}, but this method is not guaranteed -to fix everything. Instead, we recommend that you delete your +It is generally possible to remove the compiled documentation from +your system +with @samp{make@tie{}doc-clean}, but this method is not 100% +guaranteed. Instead, if you want to be sure you have a clean +system, we recommend that you delete your @file{build/} directory, and begin compiling from scratch. Since the documentation compile takes much longer than the non-documentation compile, this does not increase the overall time @@ -631,11 +638,20 @@ documentation can be built by issuing: make doc @end example -The first time you run @command{make@tie{}doc}, the process can -easily take an hour or more. After that, @command{make@tie{}doc} -only makes changes to the pre-built documentation where needed, -so it may only take a minute or two to test changes if the -documentation is already built. +or, to build only the PDF documentation and not the HTML, + +@example +make doc-stage-1 +@end example + +@warning{The first time you run @command{make@tie{}doc}, the +process can easily take an hour or more with not much output +on the command line.} + +After this initial build, @command{make@tie{}doc} only makes +changes to the documentation where needed, so it may only take +a minute or two to test changes if the documentation is already +built. If @command{make@tie{}doc} succeeds, the HTML documentation tree is available in @file{out-www/offline-root/}, and can be browsed @@ -646,56 +662,70 @@ the docs. Please do not complain about anything which is broken in those places; the only complete set of documentation is in @file{out-www/offline-root/} from the top of the source tree. -Compilation of documentation in Info format with images can be -done separately by issuing: +@command{make@tie{}doc} sends the output from most of the +compilation to logfiles. If the build fails for any reason, it +should prompt you with the name of a logfile which will provide +information to help you work out why the build failed. These +logfiles are not deleted with @command{make@tie{}doc-clean}. To +remove all the logfiles generated by the compilation process, use: @example -make info +make log-clean @end example -@knownissues +@code{make@tie{}doc} compiles the documents for all languages. To +save some compile time, the English language documents can be +compiled on their own with: + +@example +make LANGS='' doc +@end example -If source files have changed since the last documentation build, -output files that need to be rebuilt are normally rebuilt, even if -you do not run @code{make@tie{}doc-clean} first. However, build -dependencies in the documentation are so complex that some -newly-edited files may not be rebuilt as they should be; a -workaround is to @command{touch} the top source file for any -manual you've edited. For example, if you make changes to a file -in @file{notation/}, do: +@noindent Similarly, it is possible to compile a subset of the +translated documentation by specifying their language codes on the +command line. For example, the French and German translations are +compiled with: @example -touch Documentation/notation.tely +make LANGS='de fr' doc @end example -@noindent -The top sources possibly affected by this are: +@noindent Note that this will also compile the English version. + +Compilation of documentation in Info format with images can be +done separately by issuing: @example -Documentation/extend.texi -Documentation/changes.tely -Documentation/contributor.texi -Documentation/essay.tely -Documentation/extending.tely -Documentation/learning.tely -Documentation/notation.tely -Documentation/snippets.tely -Documentation/usage.tely -Documentation/web.texi +make info @end example @noindent -You can @command{touch} all of them at once with: +An issue when switching branches between master and translation +is the appearance/disappearance of translated versions of some manuals. +If you see such a warning from make: @example -touch Documentation/*te?? +No rule to make target `X', needed by `Y' @end example @noindent -However, this will rebuild all of the manuals -indiscriminately---it is more efficient to @command{touch} only -the affected files. +Your best bet is to delete the file Y.dep and to try again. + +@node Building a single document +@unnumberedsubsubsec Building a single document +It's possible to build a single document. For example, to rebuild +only @file{contributor.pdf}, do the following: + +@example +cd build/ +cd Documentation/ +touch ../../Documentation/contributor.texi +make out=www out-www/contributor.pdf +@end example +If you are only working on a single document, test-building it in +this way can give substantial time savings - recreating +@file{contributor.pdf}, for example, takes a matter of seconds. @node Saving time with CPU_COUNT @unnumberedsubsubsec Saving time with @code{CPU_COUNT} diff --git a/Documentation/included/display-predefined-fretboards.ly b/Documentation/included/display-predefined-fretboards.ly index 03d91d79d2..0167c24c21 100644 --- a/Documentation/included/display-predefined-fretboards.ly +++ b/Documentation/included/display-predefined-fretboards.ly @@ -1,5 +1,5 @@ \include "predefined-guitar-fretboards.ly" -\version "2.14.0" +\version "2.16.0" mychords = \chordmode {c1 c:m c:aug c:dim c:dim7 c:7 c:maj7 c:m7 c:9 \break } @@ -57,18 +57,15 @@ chordsline = { } \score { -<< - \context ChordNames { - \chordsline - } - \context FretBoards { - \chordsline - } - \context Staff { - \chordsline - } ->> - \layout { - indent = 0 - } + << + \context ChordNames { + \chordsline + } + \context FretBoards { + \chordsline + } + \context Staff { + \chordsline + } + >> } diff --git a/Documentation/included/display-predefined-mandolin-fretboards.ly b/Documentation/included/display-predefined-mandolin-fretboards.ly index ab948f2215..df7675b52f 100644 --- a/Documentation/included/display-predefined-mandolin-fretboards.ly +++ b/Documentation/included/display-predefined-mandolin-fretboards.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \include "./predefined-mandolin-fretboards.ly" @@ -65,7 +65,7 @@ chordsline = { \chordsline } \context FretBoards { - \set stringTunings = #mandolin-tuning + \set Staff.stringTunings = #mandolin-tuning \chordsline } \context Staff { diff --git a/Documentation/included/display-predefined-string-tunings.ly b/Documentation/included/display-predefined-string-tunings.ly index 6216fbe123..642993fe8a 100644 --- a/Documentation/included/display-predefined-string-tunings.ly +++ b/Documentation/included/display-predefined-string-tunings.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(define (filter-instrument instrument-name tuning-alist) (filter (lambda (entry) @@ -7,30 +7,18 @@ tuning-alist)) #(define (chord-display tuning-alist-entry) - (let* ((ch-mus (cdr tuning-alist-entry)) - (tuning-symbol (car tuning-alist-entry)) - (ev-chord (car (extract-named-music - ch-mus - 'EventChord))) - (elts (ly:music-property ev-chord 'elements))) - (music-map (lambda (m) - (begin - (if (not (null? (ly:music-property m 'duration))) - (ly:music-set-property! - m - 'duration - (ly:make-duration 0 0 1 1))) - m)) - ev-chord) - (let ((elts (ly:music-property ev-chord 'elements)) - (script (make-music 'TextScriptEvent - 'direction 1 - 'text (symbol->string tuning-symbol)))) - (ly:music-set-property! - ev-chord - 'elements - (cons script elts))) - ev-chord)) + (let* ((tuning-symbol (car tuning-alist-entry)) + (pitches (cdr tuning-alist-entry))) + (make-music 'EventChord + 'elements + (cons (make-music 'TextScriptEvent + 'direction 1 + 'text (symbol->string tuning-symbol)) + (map (lambda (pitch) + (make-music 'NoteEvent + 'duration (ly:make-duration 0 0 1 1) + 'pitch pitch)) + pitches))))) displayInstrumentDefaultTunings = #(define-music-function (parser location instrument) (string?) diff --git a/Documentation/included/display-predefined-ukulele-fretboards.ly b/Documentation/included/display-predefined-ukulele-fretboards.ly index f6acacdd6f..fe7c795385 100644 --- a/Documentation/included/display-predefined-ukulele-fretboards.ly +++ b/Documentation/included/display-predefined-ukulele-fretboards.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \include "predefined-ukulele-fretboards.ly" @@ -65,7 +65,7 @@ chordsline = { \chordsline } \context FretBoards { - \set stringTunings = #ukulele-tuning + \set Staff.stringTunings = #ukulele-tuning \chordsline } \context Staff { diff --git a/Documentation/included/engraver-example.ily b/Documentation/included/engraver-example.ily index f099874d3b..e9278d3e52 100644 --- a/Documentation/included/engraver-example.ily +++ b/Documentation/included/engraver-example.ily @@ -1,5 +1,5 @@ %% texidoc = "Include file for engraver example." -\version "2.11.61" +\version "2.16.0" topVoice = \relative c' { \key d\major es8([ g] a[ fis]) diff --git a/Documentation/included/font-table.ly b/Documentation/included/font-table.ly index 35b835cdd9..1b3f65d7c0 100644 --- a/Documentation/included/font-table.ly +++ b/Documentation/included/font-table.ly @@ -32,6 +32,7 @@ (define hufnagel (get-group glyph-list "^.*hufnagel.*$")) (define petrucci (get-group glyph-list "^.*petrucci.*$")) (define solesmes (get-group glyph-list "^.*solesmes.*$")) + (define kievan (get-group glyph-list "^.*kievan.*$")) ;; remove ancient-music groups from the glyph-list (for-each @@ -42,7 +43,8 @@ mensural neomensural petrucci - solesmes)) + solesmes + kievan)) ;; define all remaining groups (define numbers @@ -76,6 +78,7 @@ (define brackettips (get-group glyph-list "^brackettips\\.")) (define pedal (get-group glyph-list "^pedal\\.")) (define accordion (get-group glyph-list "^accordion\\.")) + (define ties (get-group glyph-list "^ties\\.")) ;; remove all remaining groups from the glyph-list (for-each @@ -95,7 +98,8 @@ arrowheads brackettips pedal - accordion)) + accordion + ties)) ;;;;;;;;; @@ -116,7 +120,7 @@ evenFooterMarkup = \markup {} } -\version "2.14.0" +\version "2.16.0" #(define-markup-command (doc-char layout props name) (string?) (interpret-markup layout props diff --git a/Documentation/included/generating-output.itexi b/Documentation/included/generating-output.itexi index 86827e474a..de9fd0c876 100644 --- a/Documentation/included/generating-output.itexi +++ b/Documentation/included/generating-output.itexi @@ -210,6 +210,7 @@ Solving 1 page-breaking chunks...[1: 1 pages] Drawing systems... Layout output to `test.ps'... Converting to `./test.pdf'... +Success: compilation successfully completed @end example @subsubheading Step 3. View output diff --git a/Documentation/included/gonville.ly b/Documentation/included/gonville.ly index 8878819083..84bade14f2 100644 --- a/Documentation/included/gonville.ly +++ b/Documentation/included/gonville.ly @@ -7,7 +7,7 @@ path)." } -\version "2.14.0" +\version "2.16.0" \paper { myStaffSize = 20 diff --git a/Documentation/included/helpus.itexi b/Documentation/included/helpus.itexi index 22ab4ea4fe..c53c3d1ff7 100644 --- a/Documentation/included/helpus.itexi +++ b/Documentation/included/helpus.itexi @@ -5,21 +5,27 @@ @macro helpusNeed @subheading We need you! -The LilyPond development team is quite small; we really want to -get more people involved. Please consider helping your fellow -LilyPond users by contributing! +Thank you for your interest in helping us --- we would love to see +you get involved! Your contribution will help a large group of users +make beautifully typeset music. Even working on small tasks can have a big impact: taking care of them allows experienced developers work on advanced tasks, instead of spending time on those simple tasks. +For a multi-faceted project like LilyPond, sometimes it's tough to know +where to begin. In addition to the avenues proposed below, you can send +an e-mail to the @email{mike@@mikesolomon.org, Frog meister} +letting him know your skill set and asking how you can help or proposing a +project. He'll be able to give you guidance on how to get started. + @end macro -@macro helpusTasks +@macro helpusSimple @subheading Simple tasks -No source code or compiling required! +@strong{No programming skills} required! @itemize @item @@ -29,6 +35,11 @@ Mailing list support: answer questions from fellow users. Bug reporting: help users create proper @rweb{Bug reports}, and/or join the Bug Squad to organize @rcontrib{Issues}. +@item +@rcontrib{Grand Regression Test Checking}: verify that LilyPond works correctly +by examining output of test snippets. Checking one snippet takes less +than a minute! + @item Documentation: small changes can be proposed by following the guidelines for @rcontrib{Documentation suggestions}. @@ -45,6 +56,10 @@ testing new features. Please contribute to these discussions! @end itemize +@end macro + + +@macro helpusAdvanced @subheading Advanced tasks These jobs generally require that you have the source code and can @@ -58,6 +73,8 @@ Contributors using Linux or FreeBSD may also use Lilydev, but if they prefer their own development environment, they should read @rcontrib{Working with source code}, and @rcontrib{Compiling}. +Begin by reading @rcontrib{Summary for experienced developers}. + @itemize @item Documentation: for large changes, see @@ -80,7 +97,7 @@ Frogs, and read @rcontrib{Programming work}. @end macro - +@ignore @macro helpusProjects @subheading Projects @@ -114,7 +131,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 +148,7 @@ 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 +@end ignore diff --git a/Documentation/included/note-head-style.ly b/Documentation/included/note-head-style.ly index 471b79d9ee..cd3be73994 100644 --- a/Documentation/included/note-head-style.ly +++ b/Documentation/included/note-head-style.ly @@ -1,29 +1,35 @@ -\version "2.14.0" -\header{ +\version "2.16.0" + +\header { texidoc=" -Note head shapes may be set from several choices. -The stem endings should be adjusted according to the note head. +Note head shapes may be set from several choices. +The stem endings should be adjusted according to the note head. If you want different note head styles on one stem, you must create a special context. Harmonic notes have a different shape and different -dimensions. +dimensions. " } \layout { indent = 0.0 ragged-right = ##t + + \context { + \Score + \remove "Bar_number_engraver" + } } pattern = << \new Voice { - \override Stem #'direction = #UP - e'4 e'2. e'1 e'\breve*1/2 e'\longa*1/4 + \override Stem #'direction = #UP + e'4 e'2. e'1 e'\breve*1/2 e'\longa*1/4 \bar "||" } \new Voice { - \override Stem #'direction = #DOWN - a4 a2. a1 a\breve*1/2 a\longa*1/4 + \override Stem #'direction = #DOWN + a4 a2. a1 a\breve*1/2 a\longa*1/4 \bar "||" } >> @@ -99,6 +105,3 @@ pattern = << s1*0^\markup { "slash" } \pattern } - - - diff --git a/Documentation/included/percussion-chart.ly b/Documentation/included/percussion-chart.ly index 666ccd1a26..7a01b1fbf8 100644 --- a/Documentation/included/percussion-chart.ly +++ b/Documentation/included/percussion-chart.ly @@ -1,12 +1,9 @@ -\version "2.14.0" - -% yes, I know this is a mess. But I'm not going to fuss with -% it one day before I leave. -gp +\version "2.16.0" % this chart is used in the manual too. \header { - texidoc ="@cindex Percussion notes + texidoc ="@cindex Percussion notes This chart shows all percussion and drum notes." } @@ -14,56 +11,126 @@ This chart shows all percussion and drum notes." myBreak = { \bar " " \break } \score { - \new DrumStaff \with { - \remove "Time_signature_engraver" -} \context DrumVoice { + \new DrumStaff \with { + \remove "Time_signature_engraver" + } \context DrumVoice { %% this stuff set up nice || bar lines to divide percussion notes %% into related fields, but it should be placed in the actual %% music, not as a separate voice. -gp %{ -barlines = { -\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" -\repeat "unfold" 2 { s 1 \bar" " s 1 \bar" " s 1 \bar "||" } -\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" -\repeat "unfold" 7 {s 1 \bar" " } s 1 \bar "||" -s 1 \bar" " s 1 \bar "||" -\repeat "unfold" 2 { \repeat "unfold" 5 {s 1 \bar" " } s 1 \bar "||" } -\repeat "unfold" 2 { s 1 \bar" " s 1 \bar "||" } -\repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||" -\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" -s 1 \bar" " s 1 \bar "||" -\repeat "unfold" 3 {s 1 \bar" " } s 1 \bar "||" -\repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||" -\repeat "unfold" 3 {\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" } -} + barlines = { + \repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" + \repeat "unfold" 2 { s 1 \bar" " s 1 \bar" " s 1 \bar "||" } + \repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" + \repeat "unfold" 7 {s 1 \bar" " } s 1 \bar "||" + s 1 \bar" " s 1 \bar "||" + \repeat "unfold" 2 { \repeat "unfold" 5 {s 1 \bar" " } s 1 \bar "||" } + \repeat "unfold" 2 { s 1 \bar" " s 1 \bar "||" } + \repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||" + \repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" + s 1 \bar" " s 1 \bar "||" + \repeat "unfold" 3 {s 1 \bar" " } s 1 \bar "||" + \repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||" + \repeat "unfold" 3 {\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" } + } %} -\drummode { -\textLengthOn -\cadenzaOn -bda1 ^"acousticbassdrum: bda" bd ^"bassdrum: bd" sn ^"snare: sn" sne ^"electricsnare: sne" sna ^"acousticsnare: sna" \myBreak -tomfl ^"lowfloortom: tomfl" tomfh ^"highfloortom: tomfh" toml ^"lowtom: toml" tomh ^"hightom: tomh" -tomml ^"lowmidtom: tomml" tommh ^"himidtom: tommh" \myBreak -hhc ^"closedhihat: hhc" hh ^"hihat: hh" hhp ^"pedalhihat: hhp" hho ^"openhihat: hho" hhho ^"halfopenhihat: hhho" \myBreak -cymca ^"crashcymbala: cymca" cymc ^"crashcymbal: cymc" cymra ^"ridecymbala: cymra" cymr ^"ridecymbal: cymr" \myBreak cymch ^"chinesecymbal: cymch" cyms ^"splashcymbal: cyms" -cymcb ^"crashcymbalb: cymcb" cymrb ^"ridecymbalb: cymrb" -rb ^"ridebell: rb" cb ^"cowbell: cb" \myBreak -bohm ^"mutehibongo: bohm" boh ^"hibongo: boh" boho ^"openhibongo: boho" bolm ^"mutelobongo: bolm" bol ^"lobongo: bol" bolo ^"openlobongo: bolo"\myBreak -cghm ^"mutehiconga: cghm" cglm ^"muteloconga: cglm" cgho ^"openhiconga: cgho" cgh ^"hiconga: cgh" cglo ^"openloconga: cglo" cgl ^"loconga: cgl" \myBreak -timh ^"hitimbale: timh" timl ^"lotimbale: timl" -agh ^"hiagogo: agh" agl ^"loagogo: agl" \myBreak -ssh ^"hisidestick: ssh" ss ^"sidestick: ss" ssl ^"losidestick: ssl" \myBreak -guis ^"shortguiro: guis" guil ^"longguiro: guil" gui ^"guiro: gui" cab ^"cabasa: cab" mar ^"maracas: mar" \myBreak -whs ^"shortwhistle: whs" whl ^"longwhistle: whl" \myBreak -hc ^"handclap: hc" tamb ^"tambourine: tamb" vibs ^"vibraslap: vibs" tt ^"tamtam: tt" \myBreak -cl ^"claves: cl" wbh ^"hiwoodblock: wbh" wbl ^"lowoodblock: wbl" \myBreak -cuim ^"mutecuica: cuim" cuio ^"opencuica: cuio" -trim ^"mutetriangle: trim" tri ^"triangle: tri" trio ^"opentriangle: trio" \myBreak -ua ^"oneup: ua" ub ^"twoup: ub" uc ^"threeup: uc" ud ^"fourup: ud" ue ^"fiveup: ue" \myBreak -da ^"onedown: da" db ^"twodown: db" dc ^"threedown: dc" dd ^"fourdown: dd" de ^"fivedown: de" \myBreak -} -} + \drummode { + \cadenzaOn + + bda1^\markup { \center-align "acousticbassdrum: bda" } + bd _\markup { \center-align "bassdrum: bd" } + sn ^\markup { \center-align "snare: sn" } + sne _\markup { \center-align "electricsnare: sne" } + sna ^\markup { \center-align "acousticsnare: sna" } \myBreak + + tomfl^\markup { \center-align "lowfloortom: tomfl" } + tomfh_\markup { \center-align "highfloortom: tomfh" } + toml ^\markup { \center-align "lowtom: toml" } + tomh _\markup { \center-align "hightom: tomh" } + tomml^\markup { \center-align "lowmidtom: tomml" } + tommh_\markup { \center-align "himidtom: tommh" } \myBreak + + hhc ^\markup { \center-align "closedhihat: hhc" } + hh _\markup { \center-align "hihat: hh" } + hhp ^\markup { \center-align "pedalhihat: hhp" } + hho _\markup { \center-align "openhihat: hho" } + hhho^\markup { \center-align "halfopenhihat: hhho" } \myBreak + + cymca^\markup { \center-align "crashcymbala: cymca" } + cymc _\markup { \center-align "crashcymbal: cymc" } + cymra^\markup { \center-align "ridecymbala: cymra" } + cymr _\markup { \center-align "ridecymbal: cymr" } \myBreak + + cymch^\markup { \center-align "chinesecymbal: cymch" } + cyms _\markup { \center-align "splashcymbal: cyms" } + cymcb^\markup { \center-align "crashcymbalb: cymcb" } + cymrb_\markup { \center-align "ridecymbalb: cymrb" } + rb ^\markup { \center-align "ridebell: rb" } + cb _\markup { \center-align "cowbell: cb" } \myBreak + + bohm^\markup { \center-align "mutehibongo: bohm" } + boh _\markup { \center-align "hibongo: boh" } + boho^\markup { \center-align "openhibongo: boho" } + bolm_\markup { \center-align "mutelobongo: bolm" } + bol ^\markup { \center-align "lobongo: bol" } + bolo_\markup { \center-align "openlobongo: bolo" } \myBreak + + cghm^\markup { \center-align "mutehiconga: cghm" } + cglm_\markup { \center-align "muteloconga: cglm" } + cgho^\markup { \center-align "openhiconga: cgho" } + cgh _\markup { \center-align "hiconga: cgh" } + cglo^\markup { \center-align "openloconga: cglo" } + cgl _\markup { \center-align "loconga: cgl" } \myBreak + + timh^\markup { \center-align "hitimbale: timh" } + timl_\markup { \center-align "lotimbale: timl" } + agh ^\markup { \center-align "hiagogo: agh" } + agl _\markup { \center-align "loagogo: agl" } \myBreak + + ssh^\markup { \center-align "hisidestick: ssh" } + ss _\markup { \center-align "sidestick: ss" } + ssl^\markup { \center-align "losidestick: ssl" } \myBreak + + guis^\markup { \center-align "shortguiro: guis" } + guil_\markup { \center-align "longguiro: guil" } + gui ^\markup { \center-align "guiro: gui" } + cab _\markup { \center-align "cabasa: cab" } + mar ^\markup { \center-align "maracas: mar" } \myBreak + + whs^\markup { \center-align "shortwhistle: whs" } + whl_\markup { \center-align "longwhistle: whl" } \myBreak + + hc ^\markup { \center-align "handclap: hc" } + tamb_\markup { \center-align "tambourine: tamb" } + vibs^\markup { \center-align "vibraslap: vibs" } + tt _\markup { \center-align "tamtam: tt" } \myBreak + + cl ^\markup { \center-align "claves: cl" } + wbh_\markup { \center-align "hiwoodblock: wbh" } + wbl^\markup { \center-align "lowoodblock: wbl" } \myBreak + + cuim^\markup { \center-align "mutecuica: cuim" } + cuio_\markup { \center-align "opencuica: cuio" } + trim^\markup { \center-align "mutetriangle: trim" } + tri _\markup { \center-align "triangle: tri" } + trio^\markup { \center-align "opentriangle: trio" } \myBreak + + ua^\markup { \center-align "oneup: ua" } + ub_\markup { \center-align "twoup: ub" } + uc^\markup { \center-align "threeup: uc" } + ud_\markup { \center-align "fourup: ud" } + ue^\markup { \center-align "fiveup: ue" } \myBreak + + da^\markup { \center-align "onedown: da" } + db_\markup { \center-align "twodown: db" } + dc^\markup { \center-align "threedown: dc" } + dd_\markup { \center-align "fourdown: dd" } + de^\markup { \center-align "fivedown: de" } \myBreak + } + } + \layout { \context { \Score @@ -71,4 +138,3 @@ da ^"onedown: da" db ^"twodown: db" dc ^"threedown: dc" dd ^"fourdown: dd" d } } } - diff --git a/Documentation/included/script-chart.ly b/Documentation/included/script-chart.ly index c30def0cb5..5bf05a87eb 100644 --- a/Documentation/included/script-chart.ly +++ b/Documentation/included/script-chart.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="@cindex Feta scripts diff --git a/Documentation/included/simple.ly b/Documentation/included/simple.ly index a2390859cc..5c7458f2a2 100644 --- a/Documentation/included/simple.ly +++ b/Documentation/included/simple.ly @@ -3,5 +3,6 @@ c d e f g a b c } -%% Optional helper for automatic updating by convert-ly. May be omitted. -\version "2.14.0" +%% Optional helper for automatic updating by convert-ly. +%% May be omitted. +\version "2.16.0" diff --git a/Documentation/included/special-characters.ly b/Documentation/included/special-characters.ly new file mode 100644 index 0000000000..4fe5a29a2d --- /dev/null +++ b/Documentation/included/special-characters.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\paper { + #(include-special-characters) +} + +#(define-markup-list-command (show-special-characters layout props) () + (let ((defs (ly:output-def-lookup layout 'text-font-defaults))) + (interpret-markup-list layout props + (map (lambda (pair) + (markup #:override '(line-width . 18) + #:fill-line + (#:override '(replacement-alist . ()) (car pair) + #:override '(thickness . 0.1) #:box (cdr pair)))) + (list-tail (assoc-get 'replacement-alist defs) 3))))) + +\markuplist \justified-lines \show-special-characters diff --git a/Documentation/it/GNUmakefile b/Documentation/it/GNUmakefile index df35c4cf1b..ac7545e342 100644 --- a/Documentation/it/GNUmakefile +++ b/Documentation/it/GNUmakefile @@ -1,9 +1,7 @@ ISOLANG = it depth = ../.. -SUBDIRS = learning texidocs web usage -STEPMAKE_TEMPLATES = documentation +SUBDIRS = learning texidocs web usage included notation +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root -EXTRA_DIST_FILES = web.texi - include $(depth)/make/stepmake.make diff --git a/Documentation/it/included/GNUmakefile b/Documentation/it/included/GNUmakefile new file mode 100644 index 0000000000..425cc1d8e2 --- /dev/null +++ b/Documentation/it/included/GNUmakefile @@ -0,0 +1,5 @@ +depth = ../../.. + +LOCALSTEPMAKE_TEMPLATES = ly + +include $(depth)/make/stepmake.make diff --git a/Documentation/it/included/generating-output.itexi b/Documentation/it/included/generating-output.itexi new file mode 100644 index 0000000000..226642f581 --- /dev/null +++ b/Documentation/it/included/generating-output.itexi @@ -0,0 +1,227 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- +@c This file is part of web/download.itexi and +@c learning/tutorial.itely +@ignore + Translation of GIT committish: 66194168b6d61bee8aac10552f029817eb41d835 + + 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 This is about "compiling" a lilypond file +@c (Learning 1 Tutorial), **not** compiling the +@c source code. + +@macro lilypadOSX +@warning{Queste istruzioni presumono che tu stia usando il programma +LilyPond. Se stai usando uno dei programmi descritti in +@rweb{Editing facilitato}, in caso di problemi consulta la documentazione +di quei programmi.} + + +@subsubheading Passo 1. Crea il tuo file @file{.ly} + +Clicca due volte su @command{LilyPond.app}, si aprirà un file di esempio. + +@sourceimage{Learning_Macos_welcome,,,} + +Dai menu in cima a sinistra dello schermo seleziona +@w{@code{File > Save}}. + +@sourceimage{Learning_Macos_Save_menu,,,} + +Scegli un nome per il tuo file, ad esempio @file{test.ly}. + +@sourceimage{Learning_Macos_Save_file_with_name,,,} + + +@subsubheading Passo 2. Compila (con LilyPad) + +Dagli stessi menu seleziona +@w{@code{Compile > Typeset}}. + +@sourceimage{Learning_Macos_Typeset_menu,,,} + +Si aprirà una nuova finestra che mostra i messaggi di log della compilazione +del file che hai appena salvato. + +@sourceimage{Learning_Macos_Compiling_log,,,} + + +@subsubheading Passo 3. Visualizza l'output + +Quando la compilazione è finita, un file PDF con lo stesso nome del file +originale viene creato e automaticamente aperto nel visualizzatore +PDF predefinito, che lo mostrerà sullo schermo. + +@sourceimage{Learning_Macos_pdf_output,,,} + + +@subsubheading Altri comandi + +Per creare nuovi file per LilyPond, comincia col selezionare +@w{@code{File > New}} + +@sourceimage{Learning_Macos_New_menu,,,} + +oppure @w{@code{File > Open}} per aprire e modificare file esistenti che +hai salvato precedentemente. + +@sourceimage{Learning_Macos_Open_menu,,,} + +Devi salvare qualsiasi nuova modifica fatta al file prima di cliccare +@w{@code{Compile > Typeset}} e se il file PDF non compare controlla se +ci sono degli errori nella finestra dei messaggi di log. + +Se non stai usando il visualizzatore d'anteprima PDF incluso nel sistema +operativo del Mac e un file PDF generato da una compilazione precedente +è aperto, qualsiasi compilazione successiva potrebbe non riuscire a +generare un PDF aggiornato finché non chiudi l'originale. + + + +@end macro + + +@macro lilypadWindows +@warning{Queste istruzioni presumono che tu stia usando l'editor LilyPad +incluso nel programma. Se stai usando uno dei programmi descritti in +@rweb{Editing facilitato}, in caso di problemi nel compilare un file consulta +la documentazione di quei programmi.} + + +@subsubheading Passo 1. Crea il tuo file @file{.ly} + +Clicca due volte sull'icona di LilyPond sulla scrivania, si aprirà un file di esempio. + +@sourceimage{Learning_Win7_Welcome_File_Whole,,,} + +Dai menu che appaiono in cima al file di esempio seleziona +@w{@code{File > Save as}}. Non usare @w{@code{File > Save}} +per il file di esempio perché non funzionerà finché non gli darai +un nome di file valido per LilyPond. + +@sourceimage{Learning_Win7_Save_Menu,,,} + +Scegli un nome per il tuo file, ad esempio @file{test.ly}. + +@sourceimage{Learning_Win7_Save_File_With_Name,,,} + + +@subsubheading Passo 2a. Compila (con drag-and-drop) + +A seconda di quel che preferisci, per compilare il file puoi: + +Trascinare e rilasciare (drag-and-drop) il file direttamente sull'icona di LilyPond. + +@sourceimage{Learning_Win7_Open_Dragndrop,,,} + +Cliccare col tasto destro sul file e dal menu contestuale a comparsa scegliere +@w{@code{Open with > LilyPond}}. + +@sourceimage{Learning_Win7_Open_Context_Menu,,,} + + +@subsubheading Passo 2b. Compilare (con doppio clic) + +O semplicemente clicca due volte su @file{test.ly}. + + +@subsubheading Passo 3. Visualizza l'output + +Durante la compilazione del file @file{test.ly}, una finestra dei comandi +si aprirà per breve tempo e poi si chiuderà. Nel corso di questo processo +verranno creati tre ulteriori file. + +@sourceimage{Learning_Win7_All_Files_Created,,,} + +Il file PDF contiene il file @file{test.ly} compilato. + +@sourceimage{Learning_Win7_Pdf_Output,,,} + + +@subsubheading Altri comandi + +Per creare un nuovo file, per prima cosa seleziona @w{@code{File > New}} se +hai aperto un file creato in precedenza. + +@sourceimage{Learning_Win7_New_Menu,,,} + +@noindent +oppure @w{@code{File > Open}} per aprire e modificare i file che hai +salvato prima. + +@sourceimage{Learning_Win7_Open_Menu,,,} + +Devi salvare qualsiasi nuovo modifica prima di compilare. Se il file +PDF non viene creato, controlla se ci sono degli errori nel file di log che +sarà stato creato durante il tentativo di compilazione. + +@sourceimage{Learning_Win7_Log_File,,,} + +Questo file di log viene sovrascritto ogni volta che compili il file LilyPond. + +Il file PS viene usato da LilyPond per creare il file PDF e può essere +ignorato. Anch'esso viene sovrascritto ogni volta che compili il file. + +Se visualizzi il file in un lettore PDF, devi chiudere il PDF se desideri +fare una nuova compilazione, perché potrebbe non riuscire a creare il +nuovo file PDF mentre è ancora aperto per la visualizzazione. + + +@end macro + + +@c not lilypad at all, but I ran out of names. :( +@macro lilypadCommandLine +@warning{Queste istruzioni presumono che tu abbia familiarità con i +programmi a linea di comando. Se stai usando uno dei programmi descritti in +@rweb{Editing facilitato}, in caso di problemi nel compilare un file consulta +la documentazione di quei programmi.} + + +@subsubheading Passo 1. Crea il tuo file @file{.ly} + +Crea un file di testo chiamato @file{test.ly} e scrivi: + +@c double \\ required because this is inside a macro! +@example +\\version "@w{@versionStable{}}" +@{ + c' e' g' e' +@} +@end example + + +@subsubheading Passo 2. Compila (da linea di comando) + +Per elaborare @file{test.ly}, scrivi il seguente comando nel terminale: + +@example +lilypond test.ly +@end example + +@noindent +Vedrai qualcosa di simile a questo: + +@example +GNU LilyPond @w{@versionStable{}} +Processing `test.ly' +Parsing... +Interpreting music... +Preprocessing graphical objects... +Solving 1 page-breaking chunks...[1: 1 pages] +Drawing systems... +Layout output to `test.ps'... +Converting to `./test.pdf'... +Success: compilation successfully completed +@end example + +@subsubheading Passo 3. Visualizza l'output + +Puoi visualizzare o stampare il file @file{test.pdf}. + +@end macro + + diff --git a/Documentation/it/included/helpus.itexi b/Documentation/it/included/helpus.itexi new file mode 100644 index 0000000000..5f51c3846b --- /dev/null +++ b/Documentation/it/included/helpus.itexi @@ -0,0 +1,161 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- +@c This file is part of web/community.itexi and +@c contributor/introduction.itely + +@ignore + Translation of GIT committish: 4c7bdf42ee240fdbb3c3dab2b1c201eae04253fa + + 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 + +@macro helpusNeed +@subheading Abbiamo bisogno di te! + +Ti ringraziamo per l'interesse nel darci una mano --- ci farebbe molto +piacere vederti partecipare! Il tuo contributo aiuterà tanti utenti a +scrivere belle partiture. + +Anche lavorare su piccoli compiti può avere un grande impatto: occuparsi di +questi compiti permette agli sviluppatori esperti di lavorare sui compiti +complessi, invece di impiegare il tempo in quelli semplici. + +In un progetto complesso come LilyPond, talvolta è difficile sapere da dove +iniziare. Oltre alle possibilità proposte sotto, puoi inviare un +email al @email{mike@@mikesolomon.org, Frog meister} +per informarlo sulle tue competenze e chiedergli come aiutare oppure per +proporre un progetto. Ti farà da guida nel tuo percorso iniziale. + +@end macro + + +@macro helpusSimple +@subheading Compiti semplici + +@strong{Non è necessario} saper programmare! + +@itemize +@item +Supporto nelle mailing list: rispondi alle domande degli utenti. + +@item +Segnalazione bug: aiuta gli utenti a creare una @rweb{Segnalazione bug} +corretta e/o entra nel Bug Squad per l'organizzazione dei @rcontribnamed{Issues, Problemi}. + +@item +@rcontrib{Grand Regression Test Checking}: verifica che LilyPond funzioni +correttamente esaminando l'output dei test. Controllare un frammento di codice +richiede meno di un minuto! + +@item +Documentazione: puoi proporre piccole modifiche seguendo le linee +guida per i @rcontribnamed{Documentation suggestions,Consigli per la documentazione}. + +@item +LilyPond Snippet Repository (LSR): crea e correggi i frammenti di codice +seguendo le linee guida in +@rcontribnamed{Adding and editing snippets, Aggiungere e modificare i frammenti di codice}. + +@item +Discussioni, revisioni e prove: gli sviluppatori chiedono spesso +delle opinioni sulla documentazione, possibili cambiamenti di sintassi +e il test di nuove funzionalità. Contribuisci a queste discussioni! + +@end itemize +@end macro + +@macro helpusAdvanced +@subheading Compiti avanzati + +Questi compiti di solito richiedono il codice sorgente e la capacità di +compilare LilyPond. + +@warning{Consigliamo ai collaboratori che usano Windows o MacOS X di +@strong{non} cercare di configurare il proprio ambiente di sviluppo; +si consiglia invece di usare Lilydev come spiegato in @rcontribnamed{Quick start,Avvio rapido}.} + +Anche i collaboratori che usano Linux o FreeBSD possono usare Lilydev, ma se +preferiscono il proprio ambiente di sviluppo, devono leggere +@rcontribnamed{Working with source code,Lavorare col codice sorgente} e +@rcontribnamed{Compiling,Compilare}. + +Si consiglia di iniziare con la lettura +del @rcontribnamed{Summary for experienced developers,Sommario per programmatori esperti}. + +@itemize +@item +Documentazione: per ampie modifiche si veda +@rcontribnamed{Documentation work,Lavorare sulla documentazione}. + +@item +Sito web: il sito web viene creato dai sorgenti della +documentazione. Si vedano le informazioni relative alla documentazione e anche +@rcontribnamed{Website work,Lavorare sul sito web}. + +@item +Traduzioni: si veda @rcontribnamed{Translating the documentation,Tradurre la documentazione} +e @rcontribnamed{Translating the website,Tradurre il sito web}. + +@item +Correzioni di bug o nuove funzionalità: il miglior modo per iniziare è unirsi +ai Frogs e leggere @rcontribnamed{Programming work,Lavori di programmazione}. + +@end itemize + +@end macro + +@ignore +@macro helpusProjects +@subheading Progetti + +@subsubheading Frogs + +Sito web e mailing list: + +@example +@uref{http://frogs.lilynet.net} +@end example + +I Frogs sono comuni utenti LilyPond che hanno scelto di impegnarsi +nello sviluppo del loro software preferito. Correggere i bug, +implementare nuove funzionalità, documentare il codice sorgente: c'è +molto da fare. Ma soprattutto si tratta di un'occasione per tutti +per acquisire maggiori conoscenze su LilyPond, il Software Libero e +la programmazione... e per divertirsi. Se uno di questi punti +ti incuriosisce, allora il monito è: @emph{Join the Frogs!} + + + +@subsubheading Grand LilyPond Input Syntax Standardization + +Sito web: +@rcontrib{Grand LilyPond Input Syntax Standardization (GLISS)}. + +GLISS renderà stabile la sintassi di input (esclusi i tweak) per il futuro +LilyPond 3.0. Dopo l'aggiornamento alla versione 3.0, la sintassi di input per +la musica senza tweak rimarrà stabile nell'immediato futuro. + +Ci sarà un ampio periodo di discussione per determinare la specifica finale +per l'input. + +@warning{GLISS inizierà poco dopo il rilascio della versione 2.16.} + +@subsubheading Grand Organizing Project + +Sito web: @rcontrib{Grand Organization Project (GOP)}. + +GOP sarà la nostra grande iniziativa di reclutamento di nuovi collaboratori. Abbiamo +un disperato bisogno di distribuire tra più persone i compiti di sviluppo (inclusi +i @qq{compiti semplici} che non richiedono di dover programmare o avere a che +fare col codice sorgente!). Abbiamo anche bisogno di documentare la conoscenza +degli attuali sviluppatori in modo che non vada persa. + +Diversamente dalla maggior parte dei @qq{Grand Projects}, GOP non aggiungerà +nuove funzionalità né riprogetterà completamente le cose. Il suo scopo è darci +delle fondamenta più stabili in modo da poter andare avanti con compiti più +grandi in futuro. + +@end macro +@end ignore + diff --git a/Documentation/it/learning.tely b/Documentation/it/learning.tely index 8506e46951..38e3b33326 100644 --- a/Documentation/it/learning.tely +++ b/Documentation/it/learning.tely @@ -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: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -20,7 +20,7 @@ Questo file fornisce un'introduzione alla versione di LilyPond @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 by the authors. +Copyright @copyright{} 1999--2012 by the authors. @end macro @set FDL diff --git a/Documentation/it/learning/common-notation.itely b/Documentation/it/learning/common-notation.itely index 6f73613190..c354205c86 100644 --- a/Documentation/it/learning/common-notation.itely +++ b/Documentation/it/learning/common-notation.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: d6b6b53d09a0fb8e137e7cfcec39fe22dc7b6872 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -9,7 +9,7 @@ @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @ignore Tutorial guidelines: (different from policy.txt!) @@ -201,7 +201,7 @@ aes4 c b c Se l'esempio precedente sembra poco chiaro, considera questo: se tu stessi suonando un pianoforte, quale tasto premeresti? Se premi un tasto nero, -allora @emph{devi} aggiungere @code{-is} o @code{-es} al nome della +allora @emph{devi} aggiungere @w{@code{-is}} o @w{@code{-es}} al nome della nota! Aggiungere esplicitamente tutte le alterazioni richiederà un po' più @@ -869,7 +869,8 @@ parentesi angolari. @lilypond[verbatim,quote,relative=2] r4 ~ 2 | -8[ ] \>[ ]\! | +8[ ] + 8\>[ ]\! | r4 8.\p 16( 4-. ) | @end lilypond @@ -1338,7 +1339,7 @@ posto sotto il numero di versione. Quando il file viene elaborato, sopra la musica vengono visualizzati il titolo e il compositore. Si possono trovare maggiori informazioni -sui titoli in @ruser{Creating titles}. +sui titoli in @ruser{Creating titles headers and footers}. @node Nomi assoluti delle note diff --git a/Documentation/it/learning/fundamental.itely b/Documentation/it/learning/fundamental.itely index 9f1e17502c..d1f532aca0 100644 --- a/Documentation/it/learning/fundamental.itely +++ b/Documentation/it/learning/fundamental.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: 6b9b2c2e3e701852485c24bc71f404effc6d83ec 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" +@c \version "2.16.0" @node Concetti fondamentali @chapter Concetti fondamentali @@ -583,10 +583,10 @@ Il livello o contesto della voce è l'unico che può contenere la musica. Se un contesto della voce non è dichiarato esplicitamente, ne viene creato uno automaticamente, come abbiamo visto all'inizio di questo capitolo. Alcuni strumenti, come ad esempio un oboe, possono produrre una -sola nota per volta. La musica scritta per tali strumenti è monofonica e -necessita di una sola voce. Invece gli strumenti che possono produrre più -di una nota contemporaneamente, come ad esempio il pianoforte, richiederanno -spesso voci multiple per codificare le diverse note e ritmi simultanei che +sola nota per volta. La musica scritta per tali strumenti necessita di +una sola voce. Invece gli strumenti che possono produrre più di una nota +contemporaneamente, come ad esempio il pianoforte, richiederanno spesso +voci multiple per codificare le diverse note e ritmi simultanei che sono capaci di riprodurre. Ovviamente, una singola voce può contenere molte note in un accordo, @@ -620,7 +620,7 @@ e poi combinarle in simultanea tramite le doppie parentesi angolari, @code{<<... Per collocarli in voci distinte, i frammenti devono essere separati da un doppio backslash, @code{\\}. Senza di esso, le note sarebbero inserite in un'unica voce, e questo normalmente causerebbe degli errori. Questa tecnica è -particolarmente adatta ai brani che sono in gran parte monofonici ma +particolarmente adatta ai brani che sono in gran parte omofonici ma con brevi e occasionali sezioni polifoniche. Ecco come suddividere gli accordi precedenti in due voci e aggiungere sia @@ -673,8 +673,11 @@ Questo esempio ha solo due voci, ma si potrebbe usare lo stesso costrutto per scrivere tre o più voci aggiungendo più backslash. 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. +I primi contesti impostano le voci @emph{più esterne}, la voce +più alta nel contesto @code{"1"} e la più bassa nel @code{"2"}. Le voci +più interne vanno nei contesti @code{"3"} e @code{"4"}. In ogni +contesto, la direzione verticale di legature di portamento, gambi, +legature di valore, dinamica, etc., è impostata correttamente. @lilypond[quote,verbatim] \new Staff \relative c' { @@ -796,16 +799,19 @@ più complesse saranno spiegate tutte in sezioni successive. << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } - \\ % No voice three - \\ % Voice four { % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 + \once \override NoteColumn #'ignore-collision = ##t + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ % No voice three + \\ % Voice four + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -842,16 +848,17 @@ ignora quel che non capisci. } \\ % Voice two { \voiceTwoStyle - aes2 f4 fes + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'ignore-collision = ##t + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 } \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle - % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes } >> | 1 | @@ -861,16 +868,16 @@ ignora quel che non capisci. Proviamo a scrivere il codice di questa musica da zero. Come vedremo, questo pone alcune difficoltà. Come abbiamo imparato, -iniziamo usando il costrutto @code{<< \\ >>} per inserire la musica +iniziamo usando il costrutto @code{<< \\ >>} per inserire la musica della prima battuta in tre voci: @lilypond[quote,verbatim,ragged-right] \new Staff \relative c'' { \key aes \major << - { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des2 } - >> - 1 + { c2 aes4. bes8 } \\ { 2 des } \\ { aes'2 f4 fes } + >> | + 1 | } @end lilypond @@ -884,39 +891,37 @@ gambi in su e le voci pari i gambi in giù. I gambi per le voci 1 e 2 sono giusti, ma in questo brano i gambi della voce 3 dovrebbero essere in 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 {\\}: +paio di @code{\\}: @lilypond[quote,verbatim,ragged-right] \new Staff \relative c'' { \key aes \major - << % Voice one + << % Voice one { c2 aes4. bes8 } - \\ % Voice two - { aes2 f4 fes } - \\ % Omit Voice three - \\ % Voice four - { 2 des2 } + \\ % Voice two + { 2 des } + \\ % Omit Voice three + \\ % Voice four + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -Possiamo vedere che questo corregge la direzione del gambo, ma espone -a un problema talvolta presente con le voci multiple: i gambi delle note -in una voce possono collidere con le teste delle note di un'altra voce. Nel -disporre le note, LilyPond permette alle note o agli accordi di due diverse -voci di occupare la stessa colonna verticale della nota purché i gambi siano -in direzioni opposte, ma le note della terza e quarta voce vengono -spostate, se necessario, per evitare la collisione tra le teste. Questo -di solito funziona bene, ma in questo esempio le note della voce più bassa, -con le impostazioni predefinite, appaiono chiaramente disposte in una posizione -non ottimale. LilyPond fornisce molti modi per aggiustare la collocazione +Possiamo vedere che questo corregge la direzione del gambo, ma il posizionamento +orizzontale delle note non è quello che desideriamo. LilyPond sposta le note +più interne quando queste o i loro gambi collidono con le voci più +esterne, ma questo non è appropriato nella musica per pianoforte. In altre +situazioni, gli spostamenti applicati da LilyPond potrebbero non riuscire +a evitare le collisioni. LilyPond fornisce molti modi per aggiustare la collocazione orizzontale delle note. Per ora, non siamo ancora pronti a cercare di correggere questo problema, dunque dovremo aspettare fino a una prossima sezione -- si veda la proprietà @code{force-hshift} in @ref{Fixing overlapping notation}. +@warning{Il testo e gli @emph{spanner} (come le legature di portamento e di valore, le +forcelle, etc.) non possono essere create @q{attraverso} le voci.} @seealso Guida alla notazione: @ruser{Multiple voices}. @@ -941,7 +946,7 @@ Guida alla notazione: @ruser{Multiple voices}. I contesti della voce possono anche essere creati manualmente, all'interno di un blocco @code{<< >>} che crea musica polifonica, usando -@code{\voiceOne} ... @code{\voiceFour} per indicare le direzioni desiderate +@code{\voiceOne} @dots{} @code{\voiceFour} per indicare le direzioni desiderate per gambi, legature, etc. Nelle partiture più grandi questo metodo è più chiaro, perché fa sì che le voci possano essere separate e nominate in modo più descrittivo. @@ -990,7 +995,7 @@ di evitare collisioni tra le teste. Il comando @code{\oneVoice} riporta i valori alle normali impostazioni di una singola voce. Vediamo tramite alcuni semplici esempi quali effetti esattamente -@code{\oneVoice}, @code{\voiceOne} e @code{voiceTwo} hanno su +@code{\oneVoice}, @code{\voiceOne} e @code{\voiceTwo} hanno su markup, legature di valore, legature di portamento, e dinamica: @lilypond[quote,ragged-right,verbatim] @@ -1033,7 +1038,7 @@ sì che sia possibile disegnare una legatura di frase sopra di esse. @lilypond[quote,ragged-right,verbatim] \new Staff \relative c' { \voiceOneStyle - % The following notes are monophonic + % This section is homophonic c16^( d e f % Start simultaneous section of three voices << @@ -1770,11 +1775,11 @@ Quindi in questo modo si disattiva il bequadro su un rigo: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1785,11 +1790,11 @@ e in questo modo si disattiva in tutti i righi: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1859,12 +1864,12 @@ così: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -1903,7 +1908,7 @@ nel blocco @code{\score} o @code{\book} nel quale il blocco \score { \new Staff { \relative c'' { - cis4 e d ces + cisis4 e d cis } } \layout { @@ -1915,6 +1920,31 @@ nel blocco @code{\score} o @code{\book} nel quale il blocco } @end lilypond +Se si vuole che la modifica della proprietà venga applicata a tutti i righi +della partitura: + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \relative c'' { + gisis4 gis aeses aes + } + } + \new Staff { + \relative c'' { + gisis4 gis aeses aes + } + } + >> + \layout { + \context { + \Score extraNatural = ##f + } + } +} +@end lilypond + @noindent Le proprietà di contesto impostate in questo modo possono essere sovrascritte per alcuni particolari contesti attraverso asserzioni in un blocco @code{\with}, e tramite diff --git a/Documentation/it/learning/preface.itely b/Documentation/it/learning/preface.itely index 7694b3597d..92d2d4a564 100644 --- a/Documentation/it/learning/preface.itely +++ b/Documentation/it/learning/preface.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Prefazione @unnumbered Prefazione diff --git a/Documentation/it/learning/templates.itely b/Documentation/it/learning/templates.itely index dc1bf82286..a7ac2b1601 100644 --- a/Documentation/it/learning/templates.itely +++ b/Documentation/it/learning/templates.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: f71ede90de06fdc16dad9ed75f38558efe819080 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" +@c \version "2.16.0" @node Modelli @appendix Modelli @@ -25,7 +25,7 @@ LilyPond e goderti dei belli spartiti! * Quartetto d'archi:: * Gruppi vocali:: * Modelli per orchestra:: -* Modelli per la notazione antica:: +* Modelli per notazione antica:: * Altri modelli:: @end menu @@ -36,23 +36,23 @@ LilyPond e goderti dei belli spartiti! @appendixsubsec Solo note -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec Note e testo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec Note e accordi -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec Note, testo e accordi. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -62,37 +62,32 @@ LilyPond e goderti dei belli spartiti! @appendixsubsec Solo pianoforte -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec Pianoforte e melodia con testo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec Pianoforte con testo al centro -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,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 +@appendixsubsec Quartetto d'archi semplice -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec Parti di un quartetto d'archi -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -102,37 +97,37 @@ LilyPond e goderti dei belli spartiti! @appendixsubsec Partitura vocale SATB -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec Partitura vocale SATB e automatica riduzione per pianoforte -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} @appendixsubsec SATB con contesti allineati -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,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] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {satb-choir-template---four-staves.ly} @appendixsubsec Strofa sola e ritornello a due parti -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} @appendixsubsec Inni -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {hymn-template.ly} @appendixsubsec Salmi -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {anglican-psalm-template.ly} @@ -141,7 +136,7 @@ LilyPond e goderti dei belli spartiti! @translationof Orchestral templates @appendixsubsec Orchestra, coro e pianoforte -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -152,12 +147,13 @@ LilyPond e goderti dei belli spartiti! @appendixsubsec Transcrizione di musica mensurale -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Trascrizione di musica Gregoriana -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @@ -167,7 +163,8 @@ LilyPond e goderti dei belli spartiti! @appendixsubsec Combo jazz -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {jazz-combo-template.ly} @@ -192,7 +189,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print @ The `line-width' is for \header. @li lypond[quote,verbatim,ragged-right,line-width] -\version "2.14.0" +\version "2.16.0" \header { dedication = "dedication" title = "Title" diff --git a/Documentation/it/learning/tutorial.itely b/Documentation/it/learning/tutorial.itely index a2dc7712b6..c031aee055 100644 --- a/Documentation/it/learning/tutorial.itely +++ b/Documentation/it/learning/tutorial.itely @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @node Tutorial @chapter Tutorial diff --git a/Documentation/it/macros.itexi b/Documentation/it/macros.itexi index f37afbcafd..5847b695e2 100644 --- a/Documentation/it/macros.itexi +++ b/Documentation/it/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 52f98b4061e0eb74b7c1dbcc29e74538b374752f + Translation of GIT committish: 13d24779fd6b71e8130f785063dd112bfd9f8511 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -158,9 +158,8 @@ Questo documento è stato posto nel pubblico dominio. @c ***** Title page ***** @ifnottex -@node Su +@node Top @top LilyPond --- \TITLE\ -@translationof Top @cartouche @manualIntro{} @@ -757,7 +756,7 @@ Per la versione di LilyPond @version{} @end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/it/notation.tely b/Documentation/it/notation.tely new file mode 100644 index 0000000000..cab85b411b --- /dev/null +++ b/Documentation/it/notation.tely @@ -0,0 +1,127 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- +@ignore + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc + + 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 + +@setfilename lilypond-notation.info +@settitle Guida alla Notazione di LilyPond +@documentencoding UTF-8 +@documentlanguage it +@afourpaper + +@macro manualIntro +Questo manuale costituisce la guida di riferimento per tutti gli aspetti +relativi alla notazione musicale in LilyPond versione @version{}. Si +presuppone che il lettore conosca il materiale esposto nel +@rlearningnamed{Top,Manuale di Apprendimento}. +@end macro + +@c `Notation Reference' was born 1999-10-11 with git commit 940dda0... +@macro copyrightDeclare +Copyright @copyright{} 1999--2012 degli autori. +@end macro + + +@set FDL +@include macros.itexi + +@c don't remove this comment. +@ignore +@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival +@omfdescription Notation Reference of the LilyPond music engraving system +@omftype user manual +@omfcategory Applications|Publishing +@omflanguage Italian +@end ignore + +@c Translators: Federico Bruni +@c Translation checkers: Luca Rossetto Casel + +@lilyTitlePage{Guida alla Notazione} + + +@ifnottex + +@c Keep english titles of file not yet translated -- fb +@menu +* Notazione musicale:: Notazione usata in quasi tutti i progetti. +* Specialist notation:: Notazione usata solo in contesti specifici. @c Notazione specialistica +* General input and output:: Informazioni generali su input e output. @c Input e output +* Spacing issues:: Impaginazione della musica sul foglio. @c Gestione dello spazio +* Changing defaults:: Aggiustamento dell'output. @c Modifica delle impostazioni predefinite + +Appendici + +* Notation manual tables:: Tabelle e diagrammi. @c Tabelle del manuale di notazione +* Cheat sheet:: Sommario della sintassi di LilyPond. +* Grammatica di LilyPond:: Diagramma della sintassi per l'analizzatore sintattico di LilyPond. +* GNU Free Documentation License:: Licenza di questo documento. +* Indice dei comandi di LilyPond:: +* Indice di LilyPond:: +@end menu + +@docMain +@end ifnottex + +@contents + +@allowcodebreaks false + +@include notation/notation.itely +@include notation/specialist.itely + +@include notation/input.itely +@include notation/spacing.itely + +@include notation/changing-defaults.itely + + +@include notation/notation-appendices.itely +@include notation/cheatsheet.itely + + + +@node Grammatica di LilyPond +@appendix Grammatica di LilyPond +@translationof LilyPond grammar + +Questa appendice contiene una descrizione della grammatica di LilyPond, come +generata dall'analizzatore sintattico. + +@verbatiminclude ly-grammar.txt + + +@include fdl.itexi + + +@node Indice dei comandi di LilyPond +@appendix Indice dei comandi di LilyPond +@translationof LilyPond command index + +Questo indice elenca tutti i comandi e le parole chiave di LilyPond +con dei collegamenti alle sezioni del manuale che descrivono il +loro uso. Ogni collegamento è composto da due parti. La prima parte +porta al punto esatto del manuale in cui compaiono il comando o la +parola chiave; la seconda parte porta all'inizio della sezione del +manuale in cui compaiono il comando o la parola. + +@printindex ky + +@node Indice di LilyPond +@appendix Indice di LilyPond +@translationof LilyPond index + +Oltre a tutti i comandi e le parole chiave di LilyPond, questo indice +elenca i termini musicali e le espressioni che si riferiscono a ognuno di +essi, corredati di collegamenti alle relative sezioni del manuale. Ogni +collegamento è composto da due parti. La prima parte porta al punto esatto +del manuale in cui compare l'argomento; la seconda parte porta all'inizio +della sezione del manuale in cui l'argomento è trattato. + +@printindex cp + +@bye diff --git a/Documentation/it/notation/GNUmakefile b/Documentation/it/notation/GNUmakefile new file mode 100644 index 0000000000..425cc1d8e2 --- /dev/null +++ b/Documentation/it/notation/GNUmakefile @@ -0,0 +1,5 @@ +depth = ../../.. + +LOCALSTEPMAKE_TEMPLATES = ly + +include $(depth)/make/stepmake.make diff --git a/Documentation/it/notation/notation.itely b/Documentation/it/notation/notation.itely new file mode 100644 index 0000000000..c95b0bfb5e --- /dev/null +++ b/Documentation/it/notation/notation.itely @@ -0,0 +1,37 @@ +@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.16.0" + +@node Notazione musicale +@chapter Notazione musicale +@translationof Musical notation + +Questo capitolo spiega come creare la notazione musicale. + +@menu +* Altezze:: Scrittura e aspetto delle altezze delle note. +* Rhythms:: Writing and displaying the durations of notes. +* Expressive marks:: Adding expression to notes. +* Repeats:: Repeat music. +* Simultaneous notes:: More than one note at once. +* Staff notation:: Displaying staves. +* Editorial annotations:: Special notation to increase legibility. +* Text:: Adding text to scores. +@end menu + +@include notation/pitches.itely +@include notation/rhythms.itely +@include notation/expressive.itely +@include notation/repeats.itely +@include notation/simultaneous.itely +@include notation/staff.itely +@include notation/editorial.itely +@include notation/text.itely + diff --git a/Documentation/it/notation/pitches.itely b/Documentation/it/notation/pitches.itely new file mode 100644 index 0000000000..37475599e1 --- /dev/null +++ b/Documentation/it/notation/pitches.itely @@ -0,0 +1,3002 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- +@ignore + Translation of GIT committish: 844e5387a003bde2c10389ad863184defe893b6c + + 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.16.0" + + +@node Altezze +@section Altezze +@translationof Pitches + +@lilypondfile[quote]{pitches-headword.ly} + +Questa sezione tratta il modo in cui si determina l'altezza delle note. Occorre +considerare tre aspetti: input, modifica e output. + +@menu +* Inserimento delle altezze:: +* Modifica di più altezze:: +* Aspetto delle altezze:: +* Teste di nota:: +@end menu + + +@node Inserimento delle altezze +@subsection Inserimento delle altezze +@translationof Writing pitches + +Questa sezione spiega come indicare l'altezza delle note. Ci sono due +modi di collocare le note in una determinata ottava: il modo assoluto e il +modo relativo. Nella maggioranza dei casi il modo relativo è più funzionale. + +@menu +* Ottava assoluta:: +* Ottava relativa:: +* Alterazioni:: +* Nomi delle note in altre lingue:: +@end menu + + +@node Ottava assoluta +@unnumberedsubsubsec Ottava assoluta +@translationof Absolute octave entry + +@cindex nomi delle altezze +@cindex altezze +@cindex assoluto +@cindex ottava assoluta +@cindex assoluta, ottava + +Le altezze, se non si adotta una lingua diversa, sono scritte in +notazione olandese, che usa le lettere minuscole dalla @code{a} (La) +alla @code{g} (Sol). Le note @code{c} (Do) e @code{b} (Si) vengono scritte +un'ottava sotto il Do centrale. + +@c don't use c' here. +@lilypond[verbatim,quote] +{ + \clef bass + c4 d e f + g4 a b c + d4 e f g +} +@end lilypond + +@cindex segno di modifica dell'ottava + +@funindex ' +@funindex , + +Si possono indicare altre ottave con l'apice singolo@tie{}(@code{'}) +o la virgola@tie{}(@code{,}). Ogni@tie{}@code{'} alza l'altezza di +un'ottava; ogni@tie{}@code{,} abbassa l'altezza di un'ottava. + +@lilypond[verbatim,quote] +{ + \clef treble + c'4 c'' e' g + d''4 d' d c + \clef bass + c,4 c,, e, g + d,,4 d, d c +} +@end lilypond + +@seealso +Glossario musicale: +@rglosnamed{Pitch names,Nomi delle altezze}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + + +@node Ottava relativa +@unnumberedsubsubsec Ottava relativa +@translationof Relative octave entry + +@cindex relativo +@cindex ottava relativa +@cindex relativa, ottava + +@funindex relative +@funindex \relative + +Quando si indicano le ottave in modalità assoluta è facile +collocare un'altezza nell'ottava sbagliata. Il metodo d'inserimento in ottava +relativa riduce questi errori, perché il più delle volte non è +necessario specificare alcuna ottava. Inoltre, in modalità assoluta +un singolo errore può essere difficile da individuare, mentre in +modalità relativa un singolo errore sposta tutto il resto del pezzo +di un'ottava. + +@example +\relative @var{altezza_di_riferimento} @var{espressione_musicale} +@end example + +In modalità relativa ogni nota è collocata il più vicino +possibile a quella precedente. Questo significa che l'ottava +di ogni altezza all'interno di @code{@var{espressione_musicale}} viene +calcolata nel modo seguente: + +@itemize +@item +In assenza di segni di cambiamento d'ottava, l'ottava +di un'altezza viene calculata in modo che l'intervallo con la nota +precedente sia inferiore a una quinta. Tale intervallo è +determinato senza considerare gli accidenti. + +@item +Si può aggiungere un segno di cambiamento d'ottava@tie{}@code{'} o@tie{}@code{,} +per collocare l'altezza di una nota all'ottava superiore o inferiore a +quella di riferimento. + +@item +È possibile usare più di un segno di cambiamento d'ottava. Per esempio, +@code{''}@tie{}e@tie{}@code{,,} modificano l'altezza di due +ottave. + +@item +L'altezza della prima nota è relativa a +@code{@var{altezza_di_riferimento}}. @code{@var{altezza_di_riferimento}} è +specificato nel modo di ottava assoluta. Vi raccomandiamo di fare riferimento +a un Do (@code{c}). +@end itemize + +Ecco il modo relativo in azione: + +@lilypond[verbatim,quote] +\relative c { + \clef bass + c d e f + g a b c + d e f g +} +@end lilypond + +I segni di cambiamento d'ottava si impiegano per gli intervalli più ampi +di quello di quarta: + +@lilypond[verbatim,quote] +\relative c'' { + c g c f, + c' a, e'' c +} +@end lilypond + +Una sequenza di note senza segni di ottava può tuttavia +comprendere intervalli di grande estensione: + +@lilypond[verbatim,quote] +\relative c { + c f b e + a d g c +} +@end lilypond + +Nel caso di blocchi @code{\relative} annidati, si +considera il blocco @code{\relative} più interno. + +@lilypond[verbatim,quote] +\relative c' { + c d e f + \relative c'' { + c d e f + } +} +@end lilypond + +@code{\relative} non ha effetto sui blocchi @code{\chordmode}. + +@lilypond[verbatim,quote] +\new Staff { + \relative c''' { + \chordmode { c1 } + } + \chordmode { c1 } +} +@end lilypond + +@code{\relative} non può essere inserito all'interno dei blocchi @code{\chordmode}. + +La musica all'interno di un blocco @code{\transpose} è considerata in +notazione d'ottava assoluta, a meno che non sia incluso il +blocco @code{\relative}. + +@lilypond[verbatim,quote] +\relative c' { + d e + \transpose f g { + d e + \relative c' { + d e + } + } +} +@end lilypond + + +@cindex accordi e ottava relativa +@cindex ottava relativa e accordi + +Se l'elemento precedente è un accordo, il posizionamento dell'ottava della +nota o dell'accordo che segue è riferito alla prima nota dell'accordo +stesso. All'interno degli accordi la nota successiva è sempre relativa a +quella precedente. Esaminate con attenzione l'esempio seguente, e in +particolare le note @code{c}. + +@lilypond[verbatim,quote] +\relative c' { + c + + + +} +@end lilypond + +Come spiegato sopra, il riferimento delle altezze a un'ottava è calcolato in +base ai soli nomi delle note, senza considerare le alterazioni. Dunque un +Mi doppio diesis che segue un Si verrà posizionato sopra, mentre un Fa +doppio bemolle sarà posizionato sotto. In altre parole, un intervallo di +quarta aumentata due volte viene considerato più piccolo di una quinta +diminuita due volte, indipendentemente dal numero di semitoni contenuto +in ogni intervallo. + +@lilypond[verbatim,quote] +\relative c'' { + c2 fis + c2 ges + b2 eisis + b2 feses +} +@end lilypond + +Ne consegue che la prima nota di un blocco @code{@w{\relative f}} venga +interpretata come se fosse scritta nel modo di ottava assoluta. + +@seealso +Glossario musicale: +@rglosnamed{fifth,quinta}, +@rglosnamed{interval,intervallo}, +@rglosnamed{Pitch names,Nomi delle altezze}. + +Guida alla notazione: +@ref{Octave checks}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{RelativeOctaveMusic}. + +@cindex ottava relativa e trasposizione +@cindex trasposizione e ottava relativa + +@funindex \transpose +@funindex transpose +@funindex \chordmode +@funindex chordmode +@funindex \relative +@funindex relative + +@c DEPRECATED +Se non viene specificata una @code{@var{altezza_di_riferimento}} per @code{\relative}, +allora si assume che corrisponda a @tie{}@code{c'}. Tuttavia, questa è un'opzione +deprecata e potrebbe essere tolta nelle future versioni; il +suo impiego è quindi sconsigliato. + + +@node Alterazioni +@unnumberedsubsubsec Alterazioni +@translationof Accidentals + +@cindex alterazione +@cindex armatura di chiave +@cindex chiave + +@c duplicated in Key signature and Accidentals +@warning{I nuovi utenti sono talvolta confusi dalla gestione delle +alterazioni e delle armature di chiave. In LilyPond i nomi delle +note costituiscono l'input grezzo; le armature e le chiavi determinano +come questo input grezzo venga mostrato. +Una nota non alterata come@tie{}@code{c} significa @q{Do naturale}, +indipendentemente dall'armatura o dalla chiave. Per maggiori informazioni +si veda @rlearning{Alterazioni e armature di chiave}.} + +@cindex nomi delle note, olandese +@cindex nomi delle note, predefinito +@cindex nomi delle note predefiniti +@cindex diesis +@cindex bemolle +@cindex doppio diesis +@cindex diesis, doppio +@cindex doppio bemolle +@cindex bemolle, doppio +@cindex segno di bequadro +@cindex altezza naturale + +Nella modalità di notazione predefinita un @notation{diesis} si ottiene aggiungendo @code{is} +al nome della nota, un @notation{bemolle} aggiungendo @code{es}. Come potete +immaginare, un @notation{doppio diesis} o @notation{doppio bemolle} +si ottengono aggiungendo @code{isis} o @code{eses}. Questa sintassi è +desunta dalla notazione olandese. Per usare altri nomi +per le alterazioni, si veda @ref{Note names in other languages}. + +@lilypond[verbatim,quote,relative=2] +ais1 aes aisis aeses +@end lilypond + +Un bequadro cancella l'effetto di un'alterazione o di un'armatura +di chiave. Tuttavia, nella sintassi di Lilypond, non occorre specificare i +bequadri mediante l'aggiunta di un particolare suffisso: un'altezza naturale +è indicata con il semplice nome della nota: + +@lilypond[verbatim,quote,relative=2] +a4 aes a2 +@end lilypond + +@cindex quarto di tono +@cindex semi-bemolle +@cindex semi-diesis + +È possibile indicare alterazioni di quarti di tono. Ecco una serie di Do +con altezza crescente: + +@lilypond[verbatim,quote,relative=2] +ceseh1 ces ceh c cih cis cisih +@end lilypond + + + +@cindex alterazione, di sicurezza +@cindex alterazione, di cortesia +@cindex alterazione, tra parentesi +@cindex alterazione di sicurezza +@cindex alterazione di cortesia +@cindex alterazione tra parentesi + +@funindex ? +@funindex ! + + +Di norma le alterazioni vengono mostrate automaticamente, ma è +possibile anche inserirle manualmente. Si può forzare l'inserimento di +un'alterazione di sicurezza aggiungendo il punto esclamativo@tie{}@code{!} +dopo l'altezza. Un'alterazione di cortesia (ovvero un'alterazione compresa +tra parentesi) si ottiene aggiungendo il punto interrogativo@tie{}@code{?} dopo +l'altezza. Questi segni possono essere usati anche per produrre dei bequadri. + +@lilypond[verbatim,quote,relative=2] +cis cis cis! cis? c c c! c? +@end lilypond + +@cindex alterazione e legatura di valore +@cindex legatura di valore e alterazione + +Se una nota è prolungata attraverso una legatura di valore, l'alterazione +viene ripetuta solo all'inizio di un nuovo sistema: + +@lilypond[verbatim,quote,relative=2] +cis1~ cis~ +\break +cis +@end lilypond + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right] +{hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{preventing-extra-naturals-from-being-automatically-added.ly} + +@seealso +Glossario musicale: +@rglosnamed{sharp,diesis}, +@rglosnamed{flat,bemolle}, +@rglosnamed{double sharp,doppio diesis}, +@rglosnamed{double flat,doppio bemolle}, +@rglosnamed{Pitch names,Nomi delle altezze}, +@rglosnamed{quarter tone,quarto di tono}. + +Manuale di apprendimento: +@rlearning{Alterazioni e armature di chiave}. + +Guida alla notazione: +@ref{Automatic accidentals}, +@ref{Annotational accidentals (musica ficta)}, +@ref{Note names in other languages}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{Accidental_engraver}, +@rinternals{Accidental}, +@rinternals{AccidentalCautionary}, +@rinternals{accidental-interface}. + +@cindex alterazione, quarto di tono +@cindex alterazione di un quarto di tono + +@knownissues +Poiché non esistono standard universalmente accettati per indicare +le alterazioni di quarto di tono, il simbolo impiegato da LilyPond +non si riferisce ad alcuno standard. + + +@node Nomi delle note in altre lingue +@unnumberedsubsubsec Nomi delle note in altre lingue +@translationof Note names in other languages + +@cindex nomi delle note, altre lingue +@cindex nomi delle altezze, altre lingue +@cindex lingua, nomi delle note in un'altra +@cindex lingua, nomi delle altezze in un'altra + +Lilypond comprende insiemi predefiniti di nomi di note e alterazioni in +altre lingue. La scelta della lingua si fa solitamente all'inizio del +file; l'esempio seguente è scritto in notazione italiana: + +@lilypond[quote,verbatim] +\language "italiano" + +\relative do' { + do re mi sib +} +@end lilypond + +Le lingue disponibili e i tipi di notazione che definiscono sono: + +@quotation +@multitable {@code{nederlands}} {do re mi fa sol la sib si} +@headitem Lingua + @tab Nomi delle note +@item @code{nederlands} + @tab c d e f g a bes b +@item @code{catalan} + @tab do re mi fa sol la sib si +@item @code{deutsch} + @tab c d e f g a b h +@item @code{english} + @tab c d e f g a bf b +@item @code{espanol} + @tab do re mi fa sol la sib si +@item @code{italiano} + @tab do re mi fa sol la sib si +@item @code{norsk} + @tab c d e f g a b h +@item @code{portugues} + @tab do re mi fa sol la sib si +@item @code{suomi} + @tab c d e f g a b h +@item @code{svenska} + @tab c d e f g a b h +@item @code{vlaams} + @tab do re mi fa sol la sib si +@end multitable +@end quotation + +Oltre ai nomi delle note, anche i suffissi per le alterazioni +possono variare a seconda della lingua adottata: + +@quotation +@multitable {@code{nederlands}} {-s/-sharp} {-ess/-es} {-ss/-x/-sharpsharp} {-essess/-eses} +@headitem Lingua + @tab diesis @tab bemolle @tab doppio diesis @tab doppio bemolle +@item @code{nederlands} + @tab -is @tab -es @tab -isis @tab -eses +@item @code{catalan} + @tab -d/-s @tab -b @tab -dd/-ss @tab -bb +@item @code{deutsch} + @tab -is @tab -es @tab -isis @tab -eses +@item @code{english} + @tab -s/-sharp @tab -f/-flat @tab -ss/-x/-sharpsharp + @tab -ff/-flatflat +@item @code{espanol} + @tab -s @tab -b @tab -ss/-x @tab -bb +@item @code{italiano} + @tab -d @tab -b @tab -dd @tab -bb +@item @code{norsk} + @tab -iss/-is @tab -ess/-es @tab -ississ/-isis + @tab -essess/-eses +@item @code{portugues} + @tab -s @tab -b @tab -ss @tab -bb +@item @code{suomi} + @tab -is @tab -es @tab -isis @tab -eses +@item @code{svenska} + @tab -iss @tab -ess @tab -ississ @tab -essess +@item @code{vlaams} + @tab -k @tab -b @tab -kk @tab -bb +@end multitable +@end quotation + +In olandese, @code{aes} viene contratto in @code{as}, ma entrambe le +forme sono accettate in LilyPond. Analogalmente, sia @code{es} che +@code{ees} sono accettati. Lo stesso vale per +@code{aeses}@tie{}/@tie{}@code{ases} e +@code{eeses}@tie{}/@tie{}@code{eses}. Talvolta solo questi nomi +contratti sono definiti nei corrispondenti file della lingua. + +@lilypond[verbatim,quote,relative=2] +a2 as e es a ases e eses +@end lilypond + + +@cindex microtoni +@cindex semi-diesis +@cindex semi-bemolle +@cindex sesqui-diesis +@cindex sesqui-bemolle + +In alcune forme musicali vengono usati i microtoni, le cui alterazioni sono +frazioni di un @q{normale} diesis o bemolle. La seguente tabella elenca i +nomi delle note per le alterazioni di un quarto di tono in varie lingue; i +prefissi @notation{semi-} e @notation{sesqui-} significano rispettivamente +@q{metà} e @q{uno e mezzo}. Le lingue che non compaiono in questa tabella +non hanno ancora dei nomi per le note speciali. + +@quotation +@multitable {@code{nederlands}} {@b{semi-sharp}} {@b{semi-flat}} {@b{sesqui-sharp}} {@b{sesqui-flat}} +@headitem Lingua + @tab semi-diesis @tab semi-bemolle @tab sesqui-diesis @tab sesqui-bemolle + +@item @code{nederlands} + @tab -ih @tab -eh @tab -isih @tab -eseh +@item @code{deutsch} + @tab -ih @tab -eh @tab -isih @tab -eseh +@item @code{english} + @tab -qs @tab -qf @tab -tqs @tab -tqf +@item @code{espanol} + @tab -cs @tab -cb @tab -tcs @tab -tcb +@item @code{italiano} + @tab -sd @tab -sb @tab -dsd @tab -bsb +@item @code{portugues} + @tab -sqt @tab -bqt @tab -stqt @tab -btqt +@end multitable +@end quotation + +Gran parte delle lingue presentate qui sono comunemente associate +alla musica classica occidentale, nota anche come +@notation{Common Practice Period}. Sono tuttavia supportati +anche altezze e sistemi di accordatura alternativi: si veda +@ref{Common notation for non-Western music}. + +@seealso +Glossario musicale: +@rglosnamed{Pitch names,Nomi delle altezze}, +@rglosnamed{Common Practice Period,Periodo di pratica comune}. + +Guida alla notazione: +@ref{Common notation for non-Western music}. + +File installati: +@file{scm/define-note-names.scm}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + + +@node Modifica di più altezze +@subsection Modifica di più altezze +@translationof Changing multiple pitches + +Questa sezione tratta il modo di modificare le altezze delle note. + +@menu +* Controlli di ottava:: +* Trasposizione:: +* Inversione:: +* Retrogradazione:: +* Trasposizioni modali:: +@end menu + +@node Controlli di ottava +@unnumberedsubsubsec Controlli di ottava +@translationof Octave checks + +@cindex correzione dell'ottava +@cindex controllo dell'ottava +@cindex ottava, controllo +@cindex controllo delle altezze + +@funindex = +@funindex \octaveCheck +@funindex octaveCheck +@funindex controlpitch + +In modalità relativa è facile dimenticare un segno di cambiamento d'ottava. +I controlli di ottava permettono di rilevare questi errori più facilmente: infatti, +generano un avviso e correggono l'ottava se una nota si trova in un'ottava +diversa dal previsto. + +Per controllare l'ottava di una nota, occorre specificare l'ottava assoluta +dopo il simbolo@tie{}@code{=}. Questo esempio genererà un avviso +(e cambierà l'altezza) perché la seconda nota è l'ottava assoluta +@code{d''} invece di @code{d'}, come indicato dalla correzione di ottava. + +@lilypond[verbatim,quote] +\relative c'' { + c2 d='4 d + e2 f +} +@end lilypond + +L'ottava in cui si trovano le note può essere controllata anche col +comando @code{\octaveCheck@tie{}@var{altezza_di_controllo}}. +L'@code{@var{altezza_di_controllo}} è specificata in modo assoluto. Questo +comando controlla che l'intervallo tra la nota precedente e +l'@code{@var{altezza_di_controllo}} sia compresa in una quinta (ovvero secondo +il normale calcolo della modalità relativo). Se il controllo fallisce, compare +un avviso, ma la nota precedente non viene modificata. Le note successive +sono relative all'@code{@var{altezza_di_controllo}}. + +@lilypond[verbatim,quote] +\relative c'' { + c2 d + \octaveCheck c' + e2 f +} +@end lilypond + +Nelle due battute che seguono, il primo e il terzo @code{\octaveCheck} +falliscono, mentre il secondo non fallisce. + +@lilypond[verbatim,quote] +\relative c'' { + c4 f g f + + c4 + \octaveCheck c' + f + \octaveCheck c' + g + \octaveCheck c' + f +} +@end lilypond + +@seealso +Frammenti di codice: +@rlsr{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{RelativeOctaveCheck}. + + +@node Trasposizione +@unnumberedsubsubsec Trasposizione +@translationof Transpose + +@cindex trasporre +@cindex trasposizione +@cindex trasposizione delle altezze +@cindex trasposizione delle note +@cindex altezze, trasposizione delle +@cindex note, trasposizione delle + +@funindex \transpose +@funindex transpose + +Un'espressione musicale può essere trasposta con @code{\transpose}. La +sintassi è + +@example +\transpose @var{altezza_di_partenza} @var{altezza_di_arrivo} @var{espressione_musicale} +@end example + +@noindent +Significa che @code{@var{espressione_musicale}} viene trasposto +dell'intervallo compreso tra le altezze @code{@var{altezza_di_partenza}} e +@code{@var{altezza_di_arrivo}}: qualsiasi nota che presenti un'altezza +corrispondente all'@code{@var{altezza_di_partenza}} viene modificata +in @code{@var{altezza_di_arrivo}}, e qualsiasi altra nota viene +trasposta dello stesso intervallo. Entrambe le altezze sono inserite +in modalità assoluta. + +@warning{La musica all'interno di un blocco @code{@bs{}transpose} è assoluta +a meno che il blocco non includa un @code{@bs{}relative}.} + +Prendiamo come esempio un brano scritto in Re maggiore. Possiamo +trasportarlo in Mi maggiore; si noti come anche l'armatura di chiave +venga trasposta automaticamente. + +@lilypond[verbatim,quote] +\transpose d e { + \relative c' { + \key d \major + d4 fis a d + } +} +@end lilypond + +@cindex strumenti traspositori +@cindex traspositori, strumenti + +Se una parte scritta in Do (l'@notation{intonazione reale} abituale) deve +essere suonata su un clarinetto in La (per il quale un La viene rappresentato +da un Do e dunque suona una terza minore più basso), la trasposizione +sarà ottenuta con: + +@lilypond[verbatim,quote] +\transpose a c' { + \relative c' { + \key c \major + c4 d e g + } +} +@end lilypond + +@noindent +Si noti che @w{@code{\key c \major}} è specificato esplicitamente. Se +non si specifica un'armatura di chiave, le note verranno trasposte ma +non apparirà alcuna armatura. + +@code{\transpose} fa distinzione tra altezze enarmoniche: sia +@w{@code{\transpose c cis}} che @w{@code{\transpose c des}} traspongono +un brano di un semitono più alto. La prima versione mostrerà i diesis e +le note rimarranno sullo stesso grado della scala, mentre la seconda +versione mostrerà i bemolle sul grado superiore della scala. + +@lilypond[verbatim,quote] +music = \relative c' { c d e f } +\new Staff { + \transpose c cis { \music } + \transpose c des { \music } +} +@end lilypond + + +@code{\transpose} può essere usato anche in un altro modo, ovvero +per inserire note scritte per uno strumento traspositore. Gli esempi +precedenti mostrano come inserire altezze in Do (o @notation{intonazione reale}) +e mostrare le note di uno strumento traspositore, ma è possibile anche +il contrario: per esempio, se da un insieme di parti strumentali +si volesse ricavare una partitura per il direttore. Così, per inserire +la parte per una tromba in Si bemolle che inizia con un Mi (intonazione reale +Re), si può scrivere: + +@example +musicInBflat = @{ e4 @dots{} @} +\transpose c bes, \musicInBflat +@end example + +@noindent +Per stampare questa musica in Fa (ad esempio per riarrangiarla per corno) si +può avvolgere la musica esistente in un altro @code{\transpose}: + +@example +musicInBflat = @{ e4 @dots{} @} +\transpose f c' @{ \transpose c bes, \musicInBflat @} +@end example + +@noindent +Per maggiori informazioni sugli strumenti traspositori, +si veda @ref{Instrument transpositions}. + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{transposing-pitches-with-minimum-accidentals-smart-transpose.ly} + +@seealso +Guida alla notazione: +@ref{Instrument transpositions}, +@ref{Inversion}, +@ref{Modal transformations}, +@ref{Relative octave entry}, +@ref{Retrograde}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{TransposedMusic}. + +@funindex \transpose +@funindex transpose +@funindex \chordmode +@funindex chordmode +@funindex \relative +@funindex relative + +@knownissues +La conversione relativa non avrà effetto sulle sezioni @code{\transpose}, +@code{\chordmode} e @code{\relative} comprese all'interno di un +blocco @code{\relative}. Per usare la modalità relativa all'interno +di musica trasposta, occorre inserire un ulteriore blocco @code{\relative} +all'interno di @code{\transpose}. + +Il comando @code{\transpose} impedisce di stampare le alterazioni triple. Le +sostituisce con un'altezza @q{enarmonicamente equivalente} (per esempio, +Re bemolle al posto di Mi triplo bemolle). + + +@node Inversione +@unnumberedsubsubsec Inversione +@translationof Inversion + +@cindex inversione +@cindex operazione, inversione +@funindex \inversion + +Un'espressione musicale può essere invertita e trasposta in una singola +operazione con: + +@example +\inversion @var{altezza-di-riferimento} @var{altezza-di-arrivo} @var{espressione_musicale} +@end example + +L'@code{@var{espressione_musicale}} viene invertita intervallo per intervallo +intorno all'@code{@var{altezza-di-riferimento}} e poi trasposta in modo che +ci sia una corrispondenza tra @code{@var{altezza-di-riferimento}} e +@code{@var{altezza-di-arrivo}}. + +@lilypond[verbatim,quote] +music = \relative c' { c d e f } +\new Staff { + \music + \inversion d' d' \music + \inversion d' ees' \music +} +@end lilypond + +@warning{I motivi da invertire devono essere scritti in forma assoluta +oppure devono essere prima convertiti in forma assoluta racchiudendoli +in un blocco @code{\relative}.} + +@seealso +Guida alla notazione: +@ref{Modal transformations}, +@ref{Retrograde}, +@ref{Transpose}. + + +@node Retrogradazione +@unnumberedsubsubsec Retrogradazione +@translationof Retrograde + +@cindex trasformazione retrograda +@cindex retrogradazione, trasformazione +@cindex operazione, retrogradazione +@funindex \retrograde +@funindex retrograde + +Un'espressione musicale può essere invertita in modo da produrre il proprio +retrogrado: + +@lilypond[verbatim,quote] +music = \relative c' { c8. ees16( fis8. a16 b8.) gis16 f8. d16 } + +\new Staff { + \music + \retrograde \music +} +@end lilypond + +@knownissues +Le legature di valore manuali in @code{\retrograde} saranno spezzate e +genereranno degli avvisi. Alcune legature di valore possono essere +generate automaticamente abilitando @ref{Automatic note splitting}. + +@seealso +Guida alla notazione: +@ref{Inversion}, +@ref{Modal transformations}, +@ref{Transpose}. + + +@node Trasposizioni modali +@unnumberedsubsubsec Trasposizioni modali +@translationof Modal transformations + +@cindex trasposizioni modali +@cindex modali, trasposizioni +@cindex operazioni, modali + +In una composizione musicale basata su una scala, un motivo viene +frequentemente trasportato in differenti modi. Può essere +@notation{trasposto} per iniziare in punti diversi della scala o +può essere @notation{invertito} rispetto a un punto cardine della scala. +Può anche essere rovesciato per produrre il @notation{retrogrado}, si veda +@ref{Retrograde}. + +@warning{Le note che non si trovano all'interno della scala definita non +vengono trasformate.} + +@subsubheading Trasposizione modale + +@cindex trasposizione modale +@cindex modale, trasposizione +@cindex operazone, trasposizione +@funindex \modalTranspose +@funindex modalTranspose + +Un motivo può essere trasposto entro una certa scala con: + +@example +\modalTranspose @var{altezza-di-partenza} @var{altezza-di-arrivo} @var{scala} @var{motif} +@end example + +Le note di @var{motif} vengono spostate, se all'interno della @var{scala}, del +numero di gradi della scala dati dall'intervallo tra @var{altezza-di-arrivo} +e @var{altezza-di-partenza}: + +@lilypond[verbatim,quote] +diatonicScale = \relative c' { c d e f g a b } +motif = \relative c' { c8 d e f g a b c } + +\new Staff { + \motif + \modalTranspose c f \diatonicScale \motif + \modalTranspose c b, \diatonicScale \motif +} +@end lilypond + +È possibile indicare una scala ascendente di qualsiasi lunghezza e con qualsiasi +intervallo: + +@lilypond[verbatim,quote] +pentatonicScale = \relative c' { ges aes bes des ees } +motif = \relative c' { ees8 des ges,4 } + +\new Staff { + \motif + \modalTranspose ges ees' \pentatonicScale \motif +} +@end lilypond + +Se usato con una scala cromatica, @code{\modalTranspose} ha un +effetto simile a @code{\transpose}, con in più la possibilità +di specificare i nomi delle note da usare: + +@lilypond[verbatim,quote] +chromaticScale = \relative c' { c cis d dis e f fis g gis a ais b } +motif = \relative c' { c8 d e f g a b c } + +\new Staff { + \motif + \transpose c f \motif + \modalTranspose c f \chromaticScale \motif +} +@end lilypond + +@subsubheading Inversione modale + +@cindex inversione modale +@cindex modale, inversione +@cindex operazione, inversione modale +@funindex \modalInversion +@funindex modalInversion + +Una sequenza di note può essere invertita all'interno di una data scala intorno +a una determinata nota cardine e quindi trasposto, in un'unica operazione, con: + +@example +\modalInversion @var{altezza-cardine} @var{altezza-di-arrivo} @var{scala} @var{motif} +@end example + +Le note di @var{motif} vengono spostate dello stesso numero di gradi dalla nota +dell'@var{altezza-cardine} all'interno della @var{scala}, ma nella direzione +opposta, e il risultato viene poi spostato all'interno della @var{scala} per +il numero di gradi dato dall'intervallo tra @var{altezza-di-arrivo} e +@var{altezza-cardine}. + +Dunque, per invertire intorno a una particolare nota della scala, è necessario +usare il medesimo valore per @var{altezza-cardine} e @var{altezza-di-arrivo}: + +@lilypond[verbatim,quote] +octatonicScale = \relative c' { ees f fis gis a b c d } +motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 } + +\new Staff { + \motif + \modalInversion fis' fis' \octatonicScale \motif +} +@end lilypond + +Per invertire intorno a una nota cardine posta tra altre due note, si inverte +intorno a una della note e poi si traspone di un grado della scala. Le due +note specificate possono essere interpretate come parentesi del punto cardine: + +@lilypond[verbatim,quote] +scale = \relative c' { c g' } +motive = \relative c' { c c g' c, } + +\new Staff { + \motive + \modalInversion c' g' \scale \motive +} +@end lilypond + +L'operazione combinata di inversione e retrogradazione produce la +retrogradazione inversa: + +@lilypond[verbatim,quote] +octatonicScale = \relative c' { ees f fis gis a b c d } +motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 } + +\new Staff { + \motif + \retrograde \modalInversion c' c' \octatonicScale \motif +} +@end lilypond + +@seealso +Guida alla notazione: +@ref{Inversion}, +@ref{Retrograde}, +@ref{Transpose}. + + +@node Aspetto delle altezze +@subsection Aspetto delle altezze +@translationof Displaying pitches + +Questa sezione tratta il modo di modificare l'aspetto delle altezze delle note. + +@menu +* Chiave:: +* Armatura di chiave:: +* Segni di ottavazione:: +* Trasporto strumentale:: +* Alterazioni automatiche:: +* Ambitus:: +@end menu + + +@node Chiave +@unnumberedsubsubsec Chiave +@translationof Clef + +@cindex chiave di Sol +@cindex chiave di Do +@cindex chiave di Fa +@cindex chiave di violino +@cindex chiave di contralto +@cindex chiave di tenore +@cindex chiave di basso +@cindex chiave francese +@cindex chiave di soprano +@cindex chiave di mezzosoprano +@cindex chiave di baritono +@cindex chiave di varbaritono +@cindex chiave di subbasso +@cindex chiave +@cindex chiave antica +@cindex antica, chiave +@cindex Sol, chiave di +@cindex Do, chiave di +@cindex Fa, chiave di +@cindex violino, chiave di +@cindex alto, chiave di +@cindex tenore, chiave di +@cindex basso, chiave di +@cindex francese, chiave +@cindex soprano, chiave di +@cindex mezzosoprano, chiave di +@cindex baritono, chiave di +@cindex varbaritono, chiave di +@cindex subbasso, chiave di + + +@funindex \clef +@funindex clef + +È possibile cambiare la chiave impiegata. Negli esempi seguenti mostriamo il Do +centrale. I seguenti nomi di chiave possono (ma non devono) essere +racchiusi tra virgolette. + +@lilypond[verbatim,quote,relative=1] +\clef treble +c2 c +\clef alto +c2 c +\clef tenor +c2 c +\clef bass +c2 c +@end lilypond + +Altre chiavi: + +@lilypond[verbatim,quote,relative=1] +\clef french +c2 c +\clef soprano +c2 c +\clef mezzosoprano +c2 c +\clef baritone +c2 c + +\break + +\clef varbaritone +c2 c +\clef subbass +c2 c +\clef percussion +c2 c + +\break + +\clef G % synonym for treble +c2 c +\clef F % synonym for bass +c2 c +\clef C % synonym for alto +c2 c +@end lilypond + +@cindex chiave traspositrice +@cindex trasposizione, chiave +@cindex trasposizione dell'ottava +@cindex chiave di tenore per coro + +Aggiungendo@tie{}@code{_8} o@tie{}@code{^8} al nome della chiave, la sua +adozione comporta il trasporto all'ottava rispettivamente inferiore o +superiore, mentre@tie{}@code{_15} e@tie{}@code{^15} traspongono di due ottave. +È possibile usare altri numeri interi, se necessario. I nomi di chiave +contenenti caratteri non alfabetici devono essere racchiusi tra virgolette + +@lilypond[verbatim,quote,relative=1] +\clef treble +c2 c +\clef "treble_8" +c2 c +\clef "bass^15" +c2 c +\clef "alto_2" +c2 c +\clef "G_8" +c2 c +\clef "F^5" +c2 c +@end lilypond + +Alcune chiavi particolari sono descritte in @ref{Mensural clefs}, +@ref{Gregorian clefs}, @ref{Default tablatures} e @ref{Custom +tablatures}. Per alternare chiavi diverse nelle citazioni in corpo più piccolo +all'interno di una partitura, si vedano le funzioni @code{\cueClef} e +@code{\cueDuringWithClef} in @ref{Formatting cue notes}. + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{tweaking-clef-properties.ly} + +@seealso +Guida alla notazione: +@ref{Mensural clefs}, +@ref{Gregorian clefs}, +@ref{Default tablatures}, +@ref{Custom tablatures}, +@ref{Formatting cue notes}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{Clef_engraver}, +@rinternals{Clef}, +@rinternals{OctavateEight}, +@rinternals{clef-interface}. + + +@node Armatura di chiave +@unnumberedsubsubsec Armatura di chiave +@translationof Key signature + +@cindex armatura di chiave + +@funindex \key +@funindex key + +@c duplicated in Key signature and Accidentals +@warning{I nuovi utenti sono talvolta confusi dalla gestione delle +alterazioni e delle armature di chiave. In LilyPond i nomi delle +note costituiscono l'input grezzo; le armature e le chiavi determinano +come questo venga mostrato. Una nota non alterata come@tie{}@code{c} +significa @q{Do naturale}, indipendentemente dall'armatura o dalla +chiave. Per maggiori informazioni si veda @rlearning{Alterazioni e armature di chiave}.} + +L'armatura di chiave indica la tonalità di un brano. È costituita da un +insieme di alterazioni (bemolle o diesis) all'inizio del rigo. L'armatura +di chiave può essere modificata: + +@example +\key @var{altezza} @var{modo} +@end example + +@funindex \major +@funindex major +@funindex \minor +@funindex minor +@funindex \ionian +@funindex ionian +@funindex \locrian +@funindex locrian +@funindex \aeolian +@funindex aeolian +@funindex \mixolydian +@funindex mixolydian +@funindex \lydian +@funindex lydian +@funindex \phrygian +@funindex phrygian +@funindex \dorian +@funindex dorian + +@cindex modi ecclesiastici +@cindex modi +@cindex maggiore +@cindex minore +@cindex ionio +@cindex locrio +@cindex eolio +@cindex misolidio +@cindex lidio +@cindex frigio +@cindex dorico + +@noindent +@code{@var{modo}} deve essere @code{\major} o @code{\minor} +per ottenere rispettivamente un'armatura di @code{@var{altezza}}-maggiore o +@code{@var{altezza}}-minore. È anche possibile usare i nomi tradizionali +dei modi, chiamati anche @notation{modi ecclesiastici}: +@code{\ionian}, @code{\dorian}, @code{\phrygian}, @code{\lydian}, +@code{\mixolydian}, @code{\aeolian} e @code{\locrian}. + +@lilypond[verbatim,quote,relative=2] +\key g \major +fis1 +f +fis +@end lilypond + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{non-traditional-key-signatures.ly} + +@seealso +Glossario musicale: +@rglos{church mode}, +@rglos{scordatura}. + +Manuale di apprendimento: +@rlearning{Alterazioni e armature di chiave}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{KeyChangeEvent}, +@rinternals{Key_engraver}, +@rinternals{Key_performer}, +@rinternals{KeyCancellation}, +@rinternals{KeySignature}, +@rinternals{key-cancellation-interface}, +@rinternals{key-signature-interface}. + + +@node Segni di ottavazione +@unnumberedsubsubsec Segni di ottavazione +@translationof Ottava brackets + +@cindex ottava +@cindex 15ma +@cindex 8va +@cindex 8ve +@cindex ottavazione + +@funindex set-octavation +@funindex \ottava +@funindex ottava + +I @notation{segni di ottavazione} introducono un'ulteriore trasposizione di +ottava nel rigo: + +@lilypond[verbatim,quote,relative=2] +a2 b +\ottava #-2 +a2 b +\ottava #-1 +a2 b +\ottava #0 +a2 b +\ottava #1 +a2 b +\ottava #2 +a2 b +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{ottava-text.ly} + +@seealso +Glossario musicale: +@rglosnamed{octavation,ottavazione}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{Ottava_spanner_engraver}, +@rinternals{OttavaBracket}, +@rinternals{ottava-bracket-interface}. + + +@node Trasporto strumentale +@unnumberedsubsubsec Trasporto strumentale +@translationof Instrument transpositions + +@cindex trasposizione, MIDI +@cindex trasposizione, strumento +@cindex strumento traspositore +@cindex MIDI +@cindex trasposizione MIDI + +@funindex \transposition +@funindex transposition + +Quando si scrivono partiture che comprendono strumenti traspositori, alcune +parti possono essere scritte a un'altezza diversa dall'@notation{intonazione reale}. +In questi casi, è necessario specificare la chiave dello @notation{strumento traspositore}, +altrimenti l'output MIDI e le citazioni in altre parti produrranno +altezze errate. Per maggiori informazioni sulle citazioni, si veda +@ref{Quoting other voices}. + +@example +\transposition @var{altezza} +@end example + +L'altezza da usare per @code{\transposition} deve corrispondere al suono +effettivamente prodotto quando un@tie{}@code{c'} scritto sul rigo viene +suonato dallo strumento traspositore. Tale altezza viene inserita in +modalità assoluta; dunque, uno strumento che produce un suono reale un +tono sopra la notazione deve usare @w{@code{\transposition d'}}. +@code{\transposition} va usato @emph{soltanto} se le altezze @emph{non} +sono scritte in intonazione reale. + +Ecco un frammento per violino e clarinetto in Si bemolle, le cui +parti sono inserite usando le note e l'armatura di chiave che appaiono +nei rispettivi righi sulla partitura del direttore. I due strumenti suonano +all'unisono. + +@lilypond[verbatim,quote] +\new GrandStaff << + \new Staff = "violin" { + \relative c'' { + \set Staff.instrumentName = #"Vln" + \set Staff.midiInstrument = #"violin" + % not strictly necessary, but a good reminder + \transposition c' + + \key c \major + g4( c8) r c r c4 + } + } + \new Staff = "clarinet" { + \relative c'' { + \set Staff.instrumentName = \markup { Cl (B\flat) } + \set Staff.midiInstrument = #"clarinet" + \transposition bes + + \key d \major + a4( d8) r d r d4 + } + } +>> +@end lilypond + +@code{\transposition} può essere modificato nel corso di un brano. Ad +esempio, un clarinettista potrebbe passare da un clarinetto in La a uno +in Si bemolle. + +@lilypond[verbatim,quote,relative=2] +\set Staff.instrumentName = #"Cl (A)" +\key a \major +\transposition a +c d e f +\textLengthOn +<>^\markup { Switch to B\flat clarinet } +R1 + +\key bes \major +\transposition bes +c2 g +@end lilypond + +@seealso +Glossario musicale: +@rglosnamed{concert pitch,intonazione reale}, +@rglosnamed{transposing instrument,strumento traspositore}. + +Guida alla notazione: +@ref{Quoting other voices}, +@ref{Transpose}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + + +@node Alterazioni automatiche +@unnumberedsubsubsec Alterazioni automatiche +@translationof Automatic accidentals + +@cindex stile di alterazione +@cindex stile di alterazione predefinito +@cindex alterazioni +@cindex alterazioni automatiche + +@funindex \accidentalStyle +@funindex voice +@funindex default + +Esistono diverse convenzioni sul modo di scrivere le +alterazioni. LilyPond ha una funzione per specificare +lo stile di gestione delle alterazioni adottato. Questa funzione viene +richiamata nel modo seguente: + +@example +\new Staff << + \accidentalStyle "voice" + @{ @dots{} @} +>> +@end example + +La gestione delle alterazioni si applica di norma all'attuale @code{Staff} (con +l'eccezione degli stili @code{piano} e @code{piano-cautionary}, che sono +spiegati dopo). Questa funzione accetta un secondo argomento opzionale che +determina in quale ambito debba essere cambiato lo stile. Ad esempio, per +usare lo stesso stile in tutti i righi dell'attuale @code{StaffGroup}, si usa: + +@example +\accidentalStyle #'StaffGroup "voice" +@end example + +Sono supportati i seguenti modi di gestire le alterazioni. Il seguente esempio +mostra tutti gli stili: + + +@lilypond[verbatim,quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "default" + \musicA + } + \context Staff = "down" { + \accidentalStyle "default" + \musicB + } + >> +} +@end lilypond + +Si noti che le ultime linee di questo esempio possono essere sostituite dal +seguente frammento, se si vuole usare lo stesso stile in entrambi i righi. + +@example +\new PianoStaff @{ + << + \context Staff = "up" @{ + %%% change the next line as desired: + \accidentalStyle #'Score "default" + \musicA + @} + \context Staff = "down" @{ + \musicB + @} + >> +@} +@end example + + +@c don't use verbatim in this table. +@table @code +@item default + +@cindex stile delle alterazioni @emph{default} + +@funindex default + +Questo è il comportamento predefinito del compositore tipografico. Corrisponde +alla pratica comunemente impiegata dal diciottesimo secolo: le alterazioni +vengono ricordate fino alla fine della misura in cui si trovano, limitatamente +all'ottava di appartenenza. Quindi, nell'esempio seguente non compare alcun +segno di bequadro prima del@tie{}@code{b} nella seconda misura o prima +dell'ultimo@tie{}@code{c}: + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "default" + \musicA + } + \context Staff = "down" { + \accidentalStyle "default" + \musicB + } + >> +} +@end lilypond + +@item voice + +@cindex stile delle alterazioni @emph{voice} +@cindex stile delle alterazioni @emph{modern} +@cindex stile delle alterazioni @emph{modern-cautionary} +@cindex @emph{voice}, stile delle alterazioni +@cindex @emph{modern}, stile delle alterazioni +@cindex @emph{modern-cautionary}, stile delle alterazioni + +@funindex voice + +Normalmente le alterazioni mantengono la propria validità a livello di +@code{Staff}. Tuttavia in questo stile le alterazioni +vengono gestite individualmente per ogni voce. Al di fuori di quest'aspetto, +lo stile è analogo a @code{default}. + +Di conseguenza, le alterazioni relative a una voce non vengono cancellate nelle +altre voci. Un risultato spesso non desiderabile: nell'esempio seguente è +difficile capire se il secondo@tie{}@code{a} sia naturale o diesis. L'opzione +@code{voice} deve essere quindi usata solo se ogni voce è destinata a un +esecutore diverso. Se la partitura deve essere letta da un unico musicista +(come nel caso della partitura del direttore, o di uno spartito per pianoforte), +allora è preferibile usare @code{modern} o @code{modern-cautionary}. + + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "voice" + \musicA + } + \context Staff = "down" { + \accidentalStyle "voice" + \musicB + } + >> +} +@end lilypond + +@item modern + +@cindex alterazioni, stile moderno delle +@cindex stile moderno delle alterazioni + +@funindex modern + +Questa regola corrisponde alla pratica comune del ventesimo +secolo. Omette i segni di bequadro supplementari che in passato +erano di norma anteposti al diesis che segue un doppio +diesis o a un bemolle che segue un doppio bemolle. La regola +@code{modern} presenta le stesse alterazioni di @code{default}, con +due aggiunte che servono a evitare ambiguità: i segni di annullamento +delle alterazioni temporanee sono anteposti alle note sulla stessa +ottava della misura successiva e alle note in ottave diverse nella +stessa misura. In questo esempio, dunque, i bequadri del@tie{}@code{b} +e del@tie{}@code{c} nella seconda misura del rigo superiore: + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "modern" + \musicA + } + \context Staff = "down" { + \accidentalStyle "modern" + \musicB + } + >> +} +@end lilypond + +@item modern-cautionary + +@cindex alterazioni, stile @emph{modern-cautionary} +@cindex @emph{modern-cautionary}, stile delle alterazioni +@cindex alterazioni in stile moderno +@cindex alterazioni di precauzione in stile moderno + +@funindex modern-cautionary + +Questa regola è simile a @code{modern}, ma le alterazioni @q{supplementari} +(quelle non mostrate da @code{default}) sono segnate come alterazioni +di precauzione. Di norma, sono poste tra parentesi; altrimenti, possono +essere ridotte in corpo più piccolo definendo la proprietà @code{cautionary-style} +di @code{AccidentalSuggestion}. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "modern-cautionary" + \musicA + } + \context Staff = "down" { + \accidentalStyle "modern-cautionary" + \musicB + } + >> +} +@end lilypond + +@item modern-voice + +@cindex @emph{modern}, stile delle alterazioni +@cindex stile delle alterazioni @emph{modern} +@cindex alterazioni su più voci +@cindex alterazioni moderne + +@funindex modern-voice + +Questa regola viene usata per le alterazioni su più voci destinate sia agli +esecutori che suonano una singola voce sia a quelli che suonano tutte +le voci. Le alterazioni sono mostrate su tutte le voci, ma @emph{sono annullate} +su ogni voce dello stesso rigo (@code{Staff}). Quindi, l'alterazione +dell'@tie{}@code{a} nell'ultima misura viene annullata perché l'annullamento +precedente si trovava in una voce diversa, mentre quella del@tie{}@code{d} +nel rigo inferiore viene annullata a causa dell'alterazione in un'altra +voce della misura precedente: + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "modern-voice" + \musicA + } + \context Staff = "down" { + \accidentalStyle "modern-voice" + \musicB + } + >> +} +@end lilypond + +@cindex stile delle alterazioni di precauzione @emph{modern voice} +@cindex stile delle alterazioni @emph{modern-voice-cautionary} +@cindex @emph{modern-voice-cautionary}, stile delle alterazioni + +@funindex modern-voice-cautionary + +@item modern-voice-cautionary + +Questa regola è analoga a @code{modern-voice}, ma con le alterazioni +supplementari (quelle non mostrate da @code{voice}) segnate come +alterazioni di precauzione. Tutte le alterazioni mostrate +da @code{default} @emph{sono} mostrate con questa regola, ma alcune di +esse sono indicate come alterazioni di precauzione. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "modern-voice-cautionary" + \musicA + } + \context Staff = "down" { + \accidentalStyle "modern-voice-cautionary" + \musicB + } + >> +} +@end lilypond + +@item piano + +@cindex stile delle alterazioni @emph{piano} +@cindex @emph{piano}, stile delle alterazioni +@cindex piano e alterazioni + +@funindex piano + +Questa regola riflette la pratica del ventesimo secolo per la notazione per +pianoforte. Il suo comportamento è molto simile allo stile @code{modern}, ma +in questo caso le alterazioni vengono annullate in tutti i righi che +si trovano nello stesso @code{GrandStaff} o @code{PianoStaff}, dunque tutte +gli annullamenti delle note finali. + +È lo stile predefinito per gli attuali @code{GrandStaff} e @code{PianoStaff}. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "piano" + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + +@item piano-cautionary + +@cindex @emph{piano-cautionary}, stile delle alterazioni +@cindex stile delle alterazioni @emph{piano-cautionary} +@cindex piano e alterazioni + +@funindex piano-cautionary + +È uguale a @code{piano} ma con le alterazioni supplementari +mostrate come alterazioni di precauzione. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "piano-cautionary" + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + + +@item neo-modern + +@cindex stile delle alterazioni @emph{neo-modern} +@cindex @emph{neo-modern}, stile delle alterazioni + +@funindex neo-modern + +Questa regola si riferisce a una pratica tipica della musica contemporanea: +le alterazioni sono mostrate come in @code{modern}, ma vengono ripetute se +la stessa nota appare in seguito nella stessa misura -- a meno che la +seconda occorrenza non segua direttamente la prima. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "neo-modern" + \musicA + } + \context Staff = "down" { + \accidentalStyle "neo-modern" + \musicB + } + >> +} +@end lilypond + +@item neo-modern-cautionary + +@cindex stile delle alterazioni @emph{neo-modern-cautionary} +@cindex @emph{neo-modern-cautionary}, stile delle alterazioni + +@funindex neo-modern-cautionary + +Questa regola è simile a @code{neo-modern}, ma le alterazioni +supplementari sono mostrate come alterazioni di precauzione. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "neo-modern-cautionary" + \musicA + } + \context Staff = "down" { + \accidentalStyle "neo-modern-cautionary" + \musicB + } + >> +} +@end lilypond + + +@item neo-modern-voice + +@cindex stile delle alterazioni, @emph{neo-modern-voice} +@cindex @emph{neo-modern-voice}, stile delle alterazioni + +@funindex neo-modern-voice + +Questa regola viene usata per le alterazioni su più di una voce che devono +essere lette sia da musicisti che suonano una singola voce sia da musicisti che +suonano tutte le voci. Le alterazioni per ogni voce sono mostrate come +nello stile @code{neo-modern}, ma vengono annullate attraverso le +voci nello stesso rigo (@code{Staff}). + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "neo-modern-voice" + \musicA + } + \context Staff = "down" { + \accidentalStyle "neo-modern-voice" + \musicB + } + >> +} +@end lilypond + +@item neo-modern-voice-cautionary + +@cindex stile delle alterazioni @emph{neo-modern-voice-cautionary} +@cindex @emph{neo-modern-voice-cautionary}, stile delle alterazioni + +@funindex neo-modern-voice-cautionary + +Questa regola è simile a @code{neo-modern-voice}, ma le alterazioni +supplementari sono indicate come alterazioni di precauzione. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "neo-modern-voice-cautionary" + \musicA + } + \context Staff = "down" { + \accidentalStyle "neo-modern-voice-cautionary" + \musicB + } + >> +} +@end lilypond + +@item dodecaphonic + +@cindex stile delle alterazioni @emph{dodecaphonic} +@cindex @emph{dodecaphonic}, stile delle alterazioni + +@funindex dodecaphonic + +Questa regola riflette una regola introdotta dai compositori +all'inizio del ventesimo secolo nel tentativo di abolire la +gerarchia tra suoni naturali e non naturali. Con questo +stile, @emph{ogni} nota presenta un segno di alterazione, anche i suoni +naturali. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "dodecaphonic" + \musicA + } + \context Staff = "down" { + \accidentalStyle "dodecaphonic" + \musicB + } + >> +} +@end lilypond + + +@item teaching + +@cindex stile delle alterazioni @emph{teaching} +@cindex @emph{teaching}, stile delle alterazioni + +@funindex teaching + +Questa regola è pensata per gli studenti: permette di generare facilmente degli +spartiti di scale con le alterazioni di precauzione inserite in modo automatico. +Alle alterazioni, indicate come nello stile @code{modern}, vengono +aggiunte ulteriori segni di precauzione per tutti i diesis e bemolle +specificati dall'armatura di chiave, fuorché nel caso di ripetizioni +immediatamente successive di una stessa nota. + +@lilypond[quote,staffsize=18] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \key fis \minor + \accidentalStyle "teaching" + \musicA + } + \context Staff = "down" { + \key fis \minor + \accidentalStyle "teaching" + \musicB + } + >> +} +@end lilypond + + + +@item no-reset + +@cindex stile delle alterazioni @emph{no-reset} +@cindex @emph{no-reset}, stile delle alterazioni + +@funindex no-reset + +È identico a @code{default}, ma le alterazioni mantengono la propria validità +@q{per sempre}, non solo all'interno della singola misura: + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "no-reset" + \musicA + } + \context Staff = "down" { + \accidentalStyle "no-reset" + \musicB + } + >> +} +@end lilypond + +@item forget + +@cindex stile delle alterazioni @emph{forget} +@cindex @emph{forget}, stile delle alterazioni + +@funindex forget + +È il contrario di @code{no-reset}: le alterazioni non vengono +ricordate affatto -- pertanto, tutte le alterazioni si +riferiscono all'armatura di chiave, indipendentemente dal +materiale musicale precedente. + +@lilypond[quote] +musicA = { + << + \relative c' { + cis'8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative c' { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative c' { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle "forget" + \musicA + } + \context Staff = "down" { + \accidentalStyle "forget" + \musicB + } + >> +} +@end lilypond +@end table + +@seealso +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{Accidental}, +@rinternals{Accidental_engraver}, +@rinternals{GrandStaff}, +@rinternals{PianoStaff}, +@rinternals{Staff}, +@rinternals{AccidentalSuggestion}, +@rinternals{AccidentalPlacement}, +@rinternals{accidental-suggestion-interface}. + +@cindex alterazioni e note simultanee +@cindex note simultanee e alterazioni +@cindex alterazioni negli accordi +@cindex accordi, alterazioni in + +@knownissues +Le note simultanee non vengono considerate nell'individuazione +automatica delle alterazioni; vengono prese come riferimento solo +le note precedenti e l'armatura di chiave. Se la stessa nota +occorre simultaneamente con alterazioni diverse, può essere necessario +forzare le alterazioni con@tie{}@code{!} o@tie{}@code{?}: @samp{}. + +L'annullamento di precauzione delle alterazioni avviene in relazione alla +misura precedente. Tuttavia, nel blocco @code{\alternative} che segue +una sezione @code{\repeat volta N}, è auspicabile che l'annullamento sia +calcolato in base alla precedente misura @emph{eseguita}, non alla precedente +misura @emph{stampata}. Nell'esempio seguente il Do naturale della seconda +volta non richiede il segno di bequadro: + +@lilypond[quote] +{ + \accidentalStyle "modern" + \time 2/4 + \repeat volta 2 { + c'2 + } + \alternative { + cis' + c' + } +} +@end lilypond + +Si può usare il seguente espediente: si definisce una funzione che +imposti localmente lo stile delle alterazioni su @code{forget}: + +@lilypond[verbatim,quote] +forget = #(define-music-function (parser location music) (ly:music?) #{ + \accidentalStyle "forget" + $music + \accidentalStyle "modern" +#}) +{ + \accidentalStyle "modern" + \time 2/4 + \repeat volta 2 { + c'2 + } + \alternative { + cis' + \forget c' + } +} +@end lilypond + + +@node Ambitus +@unnumberedsubsubsec Ambitus +@translationof Ambitus + +@cindex ambitus +@cindex ambito delle altezze +@cindex estensione + +Il termine @notation{ambitus} (pl. ambitus) indica l'ambito di +altezze di una determinata voce all'interno di una composizione +musicale. Può indicare anche l'estensione di uno strumento +musicale, ovvero l'intera gamma di suoni che può produrre. +L'ambitus viene usato nelle parti vocali in modo che gli esecutori +possano capire facilmente se siano adeguate alle loro possibilità. + +L'ambitus viene indicato all'inizio del brano, prima della +chiave iniziale. L'intervallo è individuato graficamente da due +teste di nota che rappresentano l'altezza più bassa e più alta. +Le alterazioni sono mostrate solo se non fanno parte dell'armatura +di chiave. + +@lilypond[verbatim,quote] +\layout { + \context { + \Voice + \consists "Ambitus_engraver" + } +} + +\relative c'' { + aes c e2 + cis,1 +} +@end lilypond + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-ambitus-per-voice.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{ambitus-with-multiple-voices.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-ambitus-gap.ly} + +@seealso +Glossario musicale: +@rglos{ambitus}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{Ambitus_engraver}, +@rinternals{Voice}, +@rinternals{Staff}, +@rinternals{Ambitus}, +@rinternals{AmbitusAccidental}, +@rinternals{AmbitusLine}, +@rinternals{AmbitusNoteHead}, +@rinternals{ambitus-interface}. + +@knownissues +Le collisioni non vengono gestite in presenza di un ambitus multiplo su +più di una voce. + + +@node Teste di nota +@subsection Teste di nota +@translationof Note heads + +Questa sezione suggerisce i modi in cui modificare la testa di una nota. + +@menu +* Teste di nota speciali:: +* Testa di nota con nome della nota:: +* Teste di nota a forma variabile:: +* Improvvisazione:: +@end menu + +@node Teste di nota speciali +@unnumberedsubsubsec Teste di nota speciali +@translationof Special note heads + +@cindex speciali, teste di nota +@cindex note heads, cross +@cindex note heads, diamond +@cindex note heads, parlato +@cindex note heads, harmonic +@cindex note heads, guitar +@cindex teste di nota speciali +@cindex cross note heads +@cindex diamond note heads +@cindex parlato note heads +@cindex harmonic note heads +@cindex guitar note heads +@cindex note head styles +@cindex styles, note heads + +@funindex cross + +L'aspetto delle teste delle note può essere modificato: + +@lilypond[verbatim,quote,relative=2] +c4 b +\override NoteHead #'style = #'cross +c4 b +\revert NoteHead #'style +a b +\override NoteHead #'style = #'harmonic +a b +\revert NoteHead #'style +c4 d e f +@end lilypond + +L'elenco di tutti gli stili per le teste di nota è in @ref{Note head styles}. + +Lo stile barrato (@code{cross}) viene usato per rappresentare varie +intenzioni musicali. I seguenti comandi generici predefiniti modificano +la testa della nota nei contesti del rigo e dell'intavolatura e possono +essere usati per rappresentare qualsiasi significato musicale: + +@lilypond[verbatim,quote,relative=2] +c4 b +\xNotesOn + a b c4 b +\xNotesOff +c4 d +@end lilypond + +Questo comando può essere usato all'interno e all'esterno degli accordi per +generare teste barrate sia nel contesto del rigo che in +quello dell'intavolatura: + +@lilypond[verbatim,quote,relative=2] +c4 b +\xNote { e f } +c b < g \xNote c f > b +@end lilypond + +Potete utilizzare, al posto di @code{\xNote}, @code{\xNotesOn} e +@code{\xNotesOff}, i comandi @code{\deadNote}, @code{\deadNotesOn} e +@code{\deadNotesOff}. Il termine @notation{dead note} è di uso comune +tra i chitarristi. + +Esiste anche una scorciatoia per le forme a diamante. Può essere usata +solo all'interno di un accordo: + +@lilypond[verbatim,quote,relative=2] +2 4 +@end lilypond + +@predefined +@code{\harmonic}, +@code{\xNotesOn}, +@code{\xNotesOff}, +@code{\xNote}. +@endpredefined + +@seealso +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida alla notazione: +@ref{Note head styles}, +@ref{Chorded notes}, +@ref{Indicating harmonics and dampened notes}. + +Guida al funzionamento interno: +@rinternals{note-event}, +@rinternals{Note_heads_engraver}, +@rinternals{Ledger_line_engraver}, +@rinternals{NoteHead}, +@rinternals{LedgerLineSpanner}, +@rinternals{note-head-interface}, +@rinternals{ledger-line-spanner-interface}. + + +@node Testa di nota con nome della nota +@unnumberedsubsubsec Testa di nota con nome della nota +@translationof Easy notation note heads + +@cindex teste di nota, esercizio +@cindex practice note heads +@cindex teste di nota, notazione semplificata +@cindex notazione semplificata +@cindex musica per principianti +@cindex principianti, musica +@cindex teste di nota facili da suonare + +@funindex \easyHeadsOn +@funindex easyHeadsOn +@funindex \easyHeadsOff +@funindex easyHeadsOff + +La nota @q{easy play} inserisce il nome della nota dentro la testa. +Viene usata nella musica per principianti. Per rendere le lettere +leggibili, occorrerebbe usare un carattere più grande. A questo +proposito si veda @ref{Setting the staff size}. + +@lilypond[verbatim,quote] +#(set-global-staff-size 26) +\relative c' { + \easyHeadsOn + c2 e4 f + g1 + \easyHeadsOff + c,1 +} +@end lilypond + + +@predefined +@code{\easyHeadsOn}, +@code{\easyHeadsOff}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{numbers-as-easy-note-heads.ly} + +@seealso +Guida alla notazione: +@ref{Setting the staff size}. + +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{note-event}, +@rinternals{Note_heads_engraver}, +@rinternals{NoteHead}, +@rinternals{note-head-interface}. + + +@node Teste di nota a forma variabile +@unnumberedsubsubsec Teste di nota a forma variabile +@translationof Shape note heads + +@cindex note a forma variabile +@cindex testa di nota, forma +@cindex testa di nota, Aiken +@cindex Aiken, testa di nota +@cindex testa di nota, Sacred Harp +@cindex Sacred Harp, testa di nota +@cindex testa di nota, Southern Harmony +@cindex Southern Harmony, testa di nota +@cindex Funk, testa di nota +@cindex testa di nota, Funk +@cindex testa di nota, Harmonica Sacra +@cindex Harmonica Sacra, testa di nota +@cindex Christian Harmony, testa di nota +@cindex testa di nota, Christian Harmony +@cindex Walker, testa di nota +@cindex testa di nota, Walker + +@funindex \aikenHeads +@funindex aikenHeads +@funindex \sacredHarpHeads +@funindex sacredHarpHeads +@funindex \southernHarmonyHeads +@funindex southernHarmonyHeads +@funindex \funkHeads +@funindex funkHeads +@funindex \walkerHeads +@funindex walkerHeads + +In alcune notazioni, la forma della testa della nota corrisponde +alla funzione armonica di una nota nella scala. Questa notazione +era comune nei canzonieri americani del diciannovesimo secolo. +Gli stili possibili sono Sacred Harp, Southern Harmony, +Funk (Harmonica Sacra), Walker e Aiken (Christian Harmony): + +@lilypond[verbatim,quote,relative=2] +\aikenHeads +c, d e f g2 a b1 c \break +\sacredHarpHeads +c,4 d e f g2 a b1 c \break +\southernHarmonyHeads +c,4 d e f g2 a b1 c \break +\funkHeads +c,4 d e f g2 a b1 c \break +\walkerHeads +c,4 d e f g2 a b1 c \break +@end lilypond + +@funindex \key +@funindex key +@funindex \aikenHeadsMinor +@funindex aikenHeadsMinor +@funindex \sacredHarpHeadsMinor +@funindex sacredHarpHeadsMinor +@funindex \southernHarmonyHeadsMinor +@funindex southernHarmonyHeadsMinor +@funindex \funkHeadsMinor +@funindex funkHeadsMinor +@funindex \walkerHeadsMinor +@funindex walkerHeadsMinor + +Le forme variano in base al grado della scala; la +scala è determinata dal comando @code{\key}. Se si scrive in +tonalità minore, il grado della scala può essere determinato +in base alla relativa maggiore: + +@lilypond[verbatim,quote,relative=2] +\key a \minor +\aikenHeads +a b c d e2 f g1 a \break +\aikenHeadsMinor +a,4 b c d e2 f g1 a \break +\sacredHarpHeadsMinor +a,2 b c d \break +\southernHarmonyHeadsMinor +a2 b c d \break +\funkHeadsMinor +a2 b c d \break +\walkerHeadsMinor +a2 b c d \break + +@end lilypond + + +@predefined +@code{\aikenHeads}, +@code{\aikenHeadsMinor}, +@code{\funkHeads}, +@code{\funkHeadsMinor}, +@code{\sacredHarpHeads}, +@code{\sacredHarpHeadsMinor}, +@code{\southernHarmonyHeads}, +@code{\southernHarmonyHeadsMinor}, +@code{\walkerHeads}, +@code{\walkerHeadsMinor}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{applying-note-head-styles-depending-on-the-step-of-the-scale.ly} + +La lista completa di tutti gli stili delle teste si trova in @ref{Note head styles}. + +@seealso +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida alla notazione: +@ref{Note head styles}. + +Guida al funzionamento interno: +@rinternals{note-event}, +@rinternals{Note_heads_engraver}, +@rinternals{NoteHead}, +@rinternals{note-head-interface}. + + +@node Improvvisazione +@unnumberedsubsubsec Improvvisazione +@translationof Improvisation + +@cindex improvvisazione +@cindex testa di nota tagliata +@cindex testa di nota, improvvisazione +@cindex tagliata, testa di nota + +@funindex \improvisationOn +@funindex improvisationOn +@funindex \improvisationOff +@funindex improvisationOff + +L'improvvisazione viene talvolta indicata con teste tagliate: +l'esecutore può scegliere qualsiasi nota ma deve seguire il ritmo +indicato. Si possono creare queste teste: + +@lilypond[verbatim,quote,relative=2] +\new Voice \with { + \consists "Pitch_squash_engraver" +} { + e8 e g a a16( bes) a8 g + \improvisationOn + e8 ~ + e2 ~ e8 f4 f8 ~ + f2 + \improvisationOff + a16( bes) a8 g e +} +@end lilypond + +@predefined +@code{\improvisationOn}, +@code{\improvisationOff}. +@endpredefined + +@seealso +Frammenti di codice: +@rlsrnamed{Pitches, Altezze}. + +Guida al funzionamento interno: +@rinternals{Pitch_squash_engraver}, +@rinternals{Voice}, +@rinternals{RhythmicStaff}. diff --git a/Documentation/it/search-box.ihtml b/Documentation/it/search-box.ihtml index 86fba3328b..cc7ddf3824 100644 --- a/Documentation/it/search-box.ihtml +++ b/Documentation/it/search-box.ihtml @@ -1,18 +1,25 @@ + diff --git a/Documentation/it/texidocs/adding-ambitus-per-voice.texidoc b/Documentation/it/texidocs/adding-ambitus-per-voice.texidoc new file mode 100644 index 0000000000..2efd4766f6 --- /dev/null +++ b/Documentation/it/texidocs/adding-ambitus-per-voice.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +L'ambitus può essere specificato per voce. In tal caso occorre +spostarlo manualmente per evitare collisioni. + +" + doctitleit = "Un ambitus per voce" diff --git a/Documentation/it/texidocs/ambitus-with-multiple-voices.texidoc b/Documentation/it/texidocs/ambitus-with-multiple-voices.texidoc new file mode 100644 index 0000000000..596345d4c4 --- /dev/null +++ b/Documentation/it/texidocs/ambitus-with-multiple-voices.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Se si aggiunge l'incisore @code{Ambitus_engraver} al contesto @code{Staff} viene +creato un solo ambitus per il rigo, anche nel caso di righi che hanno più +voci. + +" + doctitleit = "Ambitus su più voci" 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 index 56e558fcba..c516dbf1dc 100644 --- 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 @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Questo esempio mostra come realizzare una trascrizione moderna di musica gregoriana. La musica gregoriana non presenta suddivisione in misure né gambi; 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 index 95eeae4747..fb80b61d08 100644 --- 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 @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 diff --git a/Documentation/it/texidocs/anglican-psalm-template.texidoc b/Documentation/it/texidocs/anglican-psalm-template.texidoc index 94b18e2ba1..ca89a1fbab 100644 --- a/Documentation/it/texidocs/anglican-psalm-template.texidoc +++ b/Documentation/it/texidocs/anglican-psalm-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 diff --git a/Documentation/it/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc b/Documentation/it/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc new file mode 100644 index 0000000000..02de8d8d66 --- /dev/null +++ b/Documentation/it/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc @@ -0,0 +1,21 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +La proprietà @code{shapeNoteStyles} può essere usata per definire vari +stili di teste di nota per ogni grado della scala (definita dall'armatura +di chiave o dalla proprietà @code{tonic}). Questa proprietà richiede un +insieme di simboli, che può essere puramente arbitrario (sono permesse +espressioni geometriche come @code{triangle}, @code{cross} e @code{xcircle}) +o basato sull'antica tradizione tipografica americana (sono consentiti +anche alcuni nomi di nota latini). + +Detto questo, per imitare gli antichi canzionieri americani, ci sono vari +stili predefiniti disponibili attraverso dei comodi comandi come +@code{\\aikenHeads} o @code{\\sacredHarpHeads}. + +Questo esempio mostra modi diversi di ottenere teste di nota di varie +forme e illustra la possibilità di trasporre una melodia senza +perdere la corrispondenza tra le funzioni armoniche e gli stili delle +teste. + +" + doctitleit = "Applicazione degli stili delle teste di nota in base al grado della scala" diff --git a/Documentation/it/texidocs/changing-the-ambitus-gap.texidoc b/Documentation/it/texidocs/changing-the-ambitus-gap.texidoc new file mode 100644 index 0000000000..6b691ac1ec --- /dev/null +++ b/Documentation/it/texidocs/changing-the-ambitus-gap.texidoc @@ -0,0 +1,7 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +È possibile cambiare le impostazioni predefinite dell'intervallo +dell'ambitus. + +" + doctitleit = "Modifica dell'intervallo dell'ambitus" diff --git a/Documentation/it/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc b/Documentation/it/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc new file mode 100644 index 0000000000..cc1d2ef838 --- /dev/null +++ b/Documentation/it/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Questo frammento mostra come nascondere le alterazioni delle note con +legatura di valore all'inizio di un nuovo sistema + +" + doctitleit = "Nascondere le alterazioni delle note con legatura di valore + all'inizio di un nuovo sistema" diff --git a/Documentation/it/texidocs/hymn-template.texidoc b/Documentation/it/texidocs/hymn-template.texidoc index 1cd756b251..c1205508b5 100644 --- a/Documentation/it/texidocs/hymn-template.texidoc +++ b/Documentation/it/texidocs/hymn-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 diff --git a/Documentation/it/texidocs/jazz-combo-template.texidoc b/Documentation/it/texidocs/jazz-combo-template.texidoc index 7205ca70e5..161dd94477 100644 --- a/Documentation/it/texidocs/jazz-combo-template.texidoc +++ b/Documentation/it/texidocs/jazz-combo-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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à diff --git a/Documentation/it/texidocs/non-traditional-key-signatures.texidoc b/Documentation/it/texidocs/non-traditional-key-signatures.texidoc new file mode 100644 index 0000000000..83d41d060f --- /dev/null +++ b/Documentation/it/texidocs/non-traditional-key-signatures.texidoc @@ -0,0 +1,24 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Il comando @code{\\key} comunemente usato imposta la proprietà +@code{keySignature}, che fa parte del contesto @code{Staff}. + +Per creare armature di chiave non standard, tale proprietà va +impostata esplicitamente. Il formato di questo comando è +una lista: + +@code{\\set Staff.keySignature = #`(((ottava . grado) . alterazione) ((ottava +. grado) . alterazione) ...)} dove, per ogni elemento della lista, +@code{ottava} indica l'ottava (0@tie{}è l'ottava dal Do@tie{}centrale +al Si precedente), @code{grado} indica la nota all'interno +dell'ottava (0@tie{}significa@tie{}Do e 6@tie{}significa@tie{}Si) e @code{alterazione} +può essere @code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (Si noti la virgola iniziale.) + +Altrimenti, usando, per ogni elemento della lista, il formato breve +@code{(grado . alterazione)}, ciò indica che la stessa alterazione deve +essere presente in tutte le ottave. + +Ecco un esempio di una possibile armatura per generare una scala +a tono intero: +" + doctitleit = "Armature di chiave non tradizionali" diff --git a/Documentation/it/texidocs/numbers-as-easy-note-heads.texidoc b/Documentation/it/texidocs/numbers-as-easy-note-heads.texidoc new file mode 100644 index 0000000000..e184416a76 --- /dev/null +++ b/Documentation/it/texidocs/numbers-as-easy-note-heads.texidoc @@ -0,0 +1,11 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Le teste di nota con nome della nota usano la proprietà @code{note-names} +dell'oggetto @code{NoteHead} per determinare cosa appaia +all'interno della testa. È possibile sovrascrivere questa proprietà +e mostrare numeri che corrispondano ai gradi della scala. + +Si può creare un semplice incisore che faccia questo per oggni +oggetto testa di nota che incontra. +" + doctitleit = "Numeri dentro le teste di nota" diff --git a/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc index 02880b3122..1befb919e6 100644 --- a/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc +++ b/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Questo modello mostra come usare i contesti annidati @code{StaffGroup} e @code{GrandStaff} per creare sottogruppi degli strumenti dello stesso diff --git a/Documentation/it/texidocs/ottava-text.texidoc b/Documentation/it/texidocs/ottava-text.texidoc new file mode 100644 index 0000000000..a721e16162 --- /dev/null +++ b/Documentation/it/texidocs/ottava-text.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Internamente, @code{\\ottava} imposta le proprietà @code{ottavation} (ad +esempio, su @code{8va} o @code{8vb}) e @code{middleCPosition}. Per +sovrascrivere il testo della parentesi, occorre specificare @code{ottavation} +dopo il comando @code{\\ottava}. + +" + doctitleit = "Testo dell'ottava" diff --git a/Documentation/it/texidocs/piano-template-simple.texidoc b/Documentation/it/texidocs/piano-template-simple.texidoc index 6194f97004..66d957b661 100644 --- a/Documentation/it/texidocs/piano-template-simple.texidoc +++ b/Documentation/it/texidocs/piano-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Ecco un comune doppio pentagramma per pianoforte con un po' di note. diff --git a/Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc b/Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc deleted file mode 100644 index 760408d9c0..0000000000 --- a/Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc +++ /dev/null @@ -1,8 +0,0 @@ -%% 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 index ccea656ed9..961272a976 100644 --- a/Documentation/it/texidocs/piano-template-with-centered-lyrics.texidoc +++ b/Documentation/it/texidocs/piano-template-with-centered-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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. diff --git a/Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc b/Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc index 54e200b030..82e51db382 100644 --- a/Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc +++ b/Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Ecco un tipico formato per canzoni: un rigo con linea melodica e testo, e sotto l'accompagnamento per pianoforte. diff --git a/Documentation/it/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc b/Documentation/it/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc new file mode 100644 index 0000000000..a65e439b48 --- /dev/null +++ b/Documentation/it/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Secondo le norme tipografiche standard, un segno di bequadro viene +inserito prima di un diesis o di un bemolle se un'alterazione +precedente sulla stessa nota deve essere cancellata. Per cambiare +questo comportamento si imposta la proprietà @code{extraNatural} su +@code{f} (falso) nel contesto @code{Staff}. + +" + doctitleit = "Impedire l'inserimento automatico dei bequadri supplementari" diff --git a/Documentation/it/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc b/Documentation/it/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc new file mode 100644 index 0000000000..3988f04437 --- /dev/null +++ b/Documentation/it/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc @@ -0,0 +1,9 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Quando l'armatura di chiave cambia, vengono inseriti automaticamente i +segni di bequadro per annulare le alterazioni di precedenti armature. Si +può evitare questo comportamento impostando su @code{f} (falso) la proprietà +@code{printKeyCancellation} nel contesto @code{Staff}. + +" + doctitleit = "Impedire l'inserimento dei segni di bequadro quando cambia l'armatura di chiave" diff --git a/Documentation/it/texidocs/satb-choir-template---four-staves.texidoc b/Documentation/it/texidocs/satb-choir-template---four-staves.texidoc index fcb3308a31..5447713a1b 100644 --- a/Documentation/it/texidocs/satb-choir-template---four-staves.texidoc +++ b/Documentation/it/texidocs/satb-choir-template---four-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " 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 index ac0eec5430..f80941b139 100644 --- 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 @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Ecco il modello di un comune spartito semplificato (lead sheet): include linea melodica, testo vocale, sigle degli accordi e relativi diagrammi 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 index 90c534265e..c31fa32e3f 100644 --- a/Documentation/it/texidocs/single-staff-template-with-notes-and-chords.texidoc +++ b/Documentation/it/texidocs/single-staff-template-with-notes-and-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Vuoi preparare uno spartito semplificato (lead sheet) con melodia e accordi? La tua ricerca è finita! 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 index a65a6aaba4..d78055f372 100644 --- a/Documentation/it/texidocs/single-staff-template-with-notes-and-lyrics.texidoc +++ b/Documentation/it/texidocs/single-staff-template-with-notes-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 diff --git a/Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc b/Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc index 92ff692ba8..6ebbcc9a7d 100644 --- a/Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc +++ b/Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 +quindi adatto per uno strumento non accompagnato o per un frammento melodico. Copialo e incollalo in un file, aggiungi le note e hai finito! " diff --git a/Documentation/it/texidocs/string-quartet-template-simple.texidoc b/Documentation/it/texidocs/string-quartet-template-simple.texidoc index e589624271..79bab628fc 100644 --- a/Documentation/it/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/it/texidocs/string-quartet-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Questo modello presenta un semplice quartetto d'archi. Impiega anche una sezione @code{\\global} per definire il tempo e l'armatura di chiave. diff --git a/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc index a3537808b7..fc912b2c7a 100644 --- a/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,5 +1,5 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 - texidoc = " +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + 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 @@ -15,4 +15,4 @@ creano ciascuna parte. Non dimenticare di togliere i commenti quando usi i file separati! " - doctitle = "Modello per quartetto d'archi con parti separate" + doctitleit = "Modello per quartetto d'archi con parti separate" diff --git a/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc new file mode 100644 index 0000000000..8a2de74c22 --- /dev/null +++ b/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc @@ -0,0 +1,25 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Questo esempio usa del codice Scheme per imporre delle modifiche +enarmoniche alle note che permettano di avere il numero minimo di +alterazioni. In questo caso si applica la seguente regola: + +Le doppie alterazioni devono essere eliminate + + +Si diesis -> Do + + +Mi diesis -> Fa + + +Do bemolle -> Si + + +Fa bemolle -> Mi + + +In questo modo vengono scelti i suoni enarmonici più semplici. + +" + doctitleit = "Trasposizione delle altezze con numero minimo di alterazioni" diff --git a/Documentation/it/texidocs/tweaking-clef-properties.texidoc b/Documentation/it/texidocs/tweaking-clef-properties.texidoc new file mode 100644 index 0000000000..610d0f9a16 --- /dev/null +++ b/Documentation/it/texidocs/tweaking-clef-properties.texidoc @@ -0,0 +1,35 @@ +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f + texidocit = " +Il comando @code{\\clef \"treble_8\"} equivale a impostare +@code{clefGlyph}, @code{clefPosition} (che regola la posizione +verticale della chiave), @code{middleCPosition} e +@code{clefOctavation}. Viene stampata una chiave quando cambia una +di queste proprietà, eccetto @code{middleCPosition}. + + +La modifica del glifo, della posizione della chiave o +dell'ottavazione non è sufficiente per cambiare la posizione delle +note che seguono sul rigo: bisogna anche specificare la posizione +del Do centrale (middle C). I parametri di posizione sono relativi +alla linea centrale del rigo, con i numeri positivi che indicano +la parte superiore: ogni linea e spazio valgono uno. Il valore +@code{clefOctavation} di norma è impostato su 7, -7, 15 +o -15, ma altri valori sono considerati validi. + + +Quando un cambio di chiave avviene in corrispondenza di un'interruzione di +linea, di norma il simbolo della nuova chiave viene inserito sia alla fine +del rigo precedente sia all'inizio di quello successivo. Se la +chiave di avvertimento a fine rigo non fosse necessaria, +può essere nascosta impostando la proprietà @code{explicitClefVisibility} +del contesto @code{Staff} su @code{end-of-line-invisible}. Il comportamento +predefinito può essere ripristinato con @code{\\unset Staff.explicitClefVisibility}. + +Gli esempi seguenti mostrano le possibilità date dall'impostazione +manuale di tali proprietà. Sulla prima linea le modifiche manuali preservano +il posizionamento relativo standard di chiavi e note, mentre sulla seconda +linea non lo fanno. + + +" + doctitleit = "Modifiche manuali della proprietà della chiave" 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 index f66e6f7794..75c9272cb2 100644 --- a/Documentation/it/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc +++ b/Documentation/it/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Questo modello aggiunge una riduzione automatica per pianoforte alla tipica partitura vocale SATB illustrata in @qq{Modello per complesso vocale}. Si 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 index 19bea7c328..9eed00f089 100644 --- 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 @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f texidocit = " Questo modello è fondamentalmente analogo al semplice modello @qq{Complesso vocale}, con l'unica differenza che qui tutti i versi del testo sono posizionati 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 index a96795d386..e0db19f26b 100644 --- a/Documentation/it/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc +++ b/Documentation/it/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 diff --git a/Documentation/it/texidocs/vocal-ensemble-template.texidoc b/Documentation/it/texidocs/vocal-ensemble-template.texidoc index c34a63f398..eedfdc74e5 100644 --- a/Documentation/it/texidocs/vocal-ensemble-template.texidoc +++ b/Documentation/it/texidocs/vocal-ensemble-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56 +%% Translation of GIT committish: 5f0c17184930f3fbeb94ee5f59658d22c85de80f 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 diff --git a/Documentation/it/translations.itexi b/Documentation/it/translations.itexi index 2d1a1eb5a3..2e8825463f 100644 --- a/Documentation/it/translations.itexi +++ b/Documentation/it/translations.itexi @@ -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 Thu May 31 09:12:39 UTC 2012 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -37,21 +37,21 @@ Section titles @ifhtml @html -partially (93 %) +yes @end html @end ifhtml @ifnothtml -partially (93 %) +yes @end ifnothtml @tab @ifhtml @html -partially +yes @end html @end ifhtml @ifnothtml -partially +yes @end ifnothtml @tab pre-GDP @item @@ -74,11 +74,11 @@ yes @ifhtml @html -partially +yes @end html @end ifhtml @ifnothtml -partially +yes @end ifnothtml @tab pre-GDP @item @@ -111,7 +111,7 @@ yes @item 2 Notazione comunemente utilizzata @* -4184 +4187 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -138,7 +138,7 @@ yes @item 3 Concetti fondamentali @* -11139 +11130 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -155,11 +155,359 @@ yes @ifhtml @html -partially +yes @end html @end ifhtml @ifnothtml -partially +yes +@end ifnothtml +@tab pre-GDP +@item +A Modelli +@* +219 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@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 +Guida alla Notazione di LilyPond +@tab Translators +@tab Translation checkers +@tab Translated +@tab Up to date +@tab Other info +@item +Section titles +@* +355 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +LilyPond --- \TITLE\ +@* +1139 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +1 Notazione musicale +@* +91 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +1.1 Altezze +@* +4530 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@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: manuale d'uso del programma +@tab Translators +@tab Translation checkers +@tab Translated +@tab Up to date +@tab Other info +@item +Section titles +@* +135 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +LilyPond --- \TITLE\ +@* +1139 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +1 Eseguire @command{lilypond} +@* +4615 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +2 Aggiornare i file con @command{convert-ly} +@* +1209 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +3 Eseguire @command{lilypond-book} +@* +4137 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab pre-GDP +@item +4 Programmi esterni +@* +2390 +@tab Federico Bruni +@tab Luca Rossetto Casel +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@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 +yes +@end html +@end ifhtml +@ifnothtml +yes +@end ifnothtml +@tab +@ifhtml + +@html +yes +@end html +@end ifhtml +@ifnothtml +yes @end ifnothtml @tab pre-GDP @end multitable @@ -177,7 +525,7 @@ LilyPond -- Notazione musicale per tutti @item Section titles @* -585 +616 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -194,11 +542,11 @@ yes @ifhtml @html -partially +yes @end html @end ifhtml @ifnothtml -partially +yes @end ifnothtml @tab pre-GDP @item @@ -221,17 +569,17 @@ yes @ifhtml @html -partially +yes @end html @end ifhtml @ifnothtml -partially +yes @end ifnothtml @tab pre-GDP @item Introduzione @* -4506 +4753 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -258,7 +606,7 @@ yes @item Download @* -1183 +1211 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -285,7 +633,7 @@ yes @item Manuali @* -1200 +1214 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -312,7 +660,7 @@ yes @item Comunità @* -1755 +3006 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -329,7 +677,7 @@ yes @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml diff --git a/Documentation/it/usage.tely b/Documentation/it/usage.tely index 08e4169431..bb46a612ad 100644 --- a/Documentation/it/usage.tely +++ b/Documentation/it/usage.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + Translation of GIT committish: 08560a1b8076630c4fc6cb9b902614d8b74fd6fc When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -24,7 +24,7 @@ LilyPond versione @version{}. Inoltre, suggerisce alcune delle @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 degli autori. +Copyright @copyright{} 1999--2012 degli autori. @end macro @set FDL diff --git a/Documentation/it/usage/external.itely b/Documentation/it/usage/external.itely index 8bcd600884..ed52247469 100644 --- a/Documentation/it/usage/external.itely +++ b/Documentation/it/usage/external.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: da632500cfc55fcd3660f72b39c7dbcd7542f9bc 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 \version "2.16.0" @node Programmi esterni @chapter Programmi esterni @@ -29,6 +29,18 @@ LilyPond può interagire con altri programmi in vari modi. @section Punta e clicca @translationof Point and click +Il "punta e clicca" aggiunge dei collegamenti ai documenti pdf per certi +elementi musicali. + +@menu +* Abilitare il punta e clicca:: +* Punta e clicca selettivo:: +@end menu + +@node Abilitare il punta e clicca +@unnumberedsubsec Abilitare il punta e clicca +@translationof Enabling point and click + @cindex punta e clicca Il "punta e clicca" (@emph{point and click}) permette di individuare gli elementi @@ -44,8 +56,8 @@ in modo che segua i collegamenti ipertestuali usando lo script @file{lilypond-in 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.} +@file{xpdfrc}. Su UNIX, questo file si trova in +@file{/etc/xpdfrc} o @file{$HOME/.xpdfrc}. @example urlCommand "lilypond-invoke-editor %s" @@ -115,6 +127,84 @@ lilypond -dno-point-and-click file.ly 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 Punta e clicca selettivo +@unnumberedsubsec Punta e clicca selettivo +@translationof Selective point-and-click + +Per alcune applicazioni interattive, si potrebbe voler includere +soltanto alcuni elementi punta e clicca. Ad esempio, se qualcuno +volesse creare un'applicazione che riproduca audio o video a partire +da una nota in particolare, sarebbe inopportuno che il clic sulla +nota portasse alla posizione di un'alterazione o di una legatura +che si trovi sopra quella nota. + +Questo può essere controllato indicando quali eventi includere: + +@itemize +@item +Codice interno al file @file{.ly}: + +@example +\pointAndClickTypes #'note-event +\relative c' @{ + c2\f( f) +@} +@end example + +oppure + +@example +#(ly:set-option 'point-and-click 'note-event) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Linea di comando: + +@example +lilypond -dpoint-and-click=note-event example.ly +@end example + +@end itemize + +Si può includere più di un evento: + +@itemize +@item +Codice interno al file @file{.ly}: + +@example +\pointAndClickTypes #'(note-event dynamic-event) +\relative c' @{ + c2\f( f) +@} +@end example + +oppure + +@example +#(ly:set-option 'point-and-click '(note-event dynamic-event)) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Linea di comando: + +@smallexample +lilypond \ + -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ + example.ly +@end smallexample + + +@end itemize + + @node LilyPond e gli editor di testo @section LilyPond e gli editor di testo @translationof Text editor support @@ -246,7 +336,7 @@ 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}) +ritmico. Se lanciata con la quantizzazione (opzioni @option{-s} e @option{-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. @@ -350,10 +440,17 @@ mostra una sintesi dell'utilizzo e delle opzioni. usa LANG per i nomi delle altezze, ad esempio 'deutsch' per i nomi delle note in tedesco. +@item --loglevel=@var{loglevel} +Imposta la verbosità dell'output su @var{loglevel}. I valori possibili sono @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (predefinito) e @code{DEBUG}. + @item --lxml usa il pacchetto Python lxml.etree per l'analisi della sintassi XML; usa meno memoria e tempo del processore. +@item -m, --midi +attiva il blocco midi. + @item --nd --no-articulation-directions non converte le direzioni (@code{^}, @code{_} o @code{-}) per articolazioni, dinamiche, etc. @@ -563,13 +660,21 @@ le seguenti opzioni @{ c1 @} @end example -Per creare un file @file{EPS}, si usa +Per creare file immagine utili, si usa @example -lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts miofile.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 miofile.ly + +Un file PNG transparente + +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \ + -dpixmap-format=pngalpha --png miofile.ly @end example diff --git a/Documentation/it/usage/lilypond-book.itely b/Documentation/it/usage/lilypond-book.itely index 81f0d77717..bd9450a896 100644 --- a/Documentation/it/usage/lilypond-book.itely +++ b/Documentation/it/usage/lilypond-book.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: f71ede90de06fdc16dad9ed75f38558efe819080 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 \version "2.16.0" @c Note: keep this node named so that `info lilypond-book' brings you here. @node lilypond-book @@ -27,23 +27,23 @@ 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}. +usage}. In caso di problemi nell'eseguire @code{lilypond-book} da linea di +comando su Windows o Mac OS X, si veda @rweb{Windows} o @rweb{MacOS X}. Questo procedimento può essere applicato ai documenti @LaTeX{}, HTML, Texinfo o DocBook. @cindex texinfo -@cindex latex +@cindex LaTex @cindex texinfo @cindex texi -@cindex html +@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 +@cindex documenti, aggiungere musica +@cindex HTML, aggiungere musica +@cindex Texinfo, aggiungere musica +@cindex DocBook, aggiungere musica +@cindex LaTeX, aggiungere musica @menu * Un esempio di documento musicologico:: @@ -100,9 +100,9 @@ Le opzioni vengono specificate tra parentesi quadre. Se l'esempio è più grande, è possibile metterlo in un file separato e inserirlo con \verb+\lilypondfile+. -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(Se vuoi provare, sostituisci @file{screech-boink.ly} con qualsiasi file @file{.ly} +(Se vuoi provare, sostituisci @file{screech-and-boink.ly} con qualsiasi file @file{.ly} che si trovi nella stessa directory di questo file.) \end{document} @@ -160,7 +160,7 @@ c'4 f16 Se l'esempio è più grande, è possibile riportarlo in un file a parte e inserirlo con \verb+\lilypondfile+. -@lilypondfile[quote,noindent]{screech-boink.ly} +@lilypondfile[quote,noindent]{screech-and-boink.ly} Perché sia visibile la @code{tagline}, predefinita o personalizzata, l'intero frammento deve essere compreso in un costrutto @code{\book @{ @}}. @@ -204,27 +204,43 @@ Si veda @emph{The Not So Short Introduction to @LaTeX{}}} per una panoramica sull'uso di @LaTeX{}. -La musica si inserisce in vari modi: +@code{lilypond-book} fornisce i seguenti comandi e ambienti per includere +la musica nei file @LaTeX{}: + +@itemize + +@item +il comando @code{\lilypond@{...@}}, dove si può inserire direttamente del +codice lilypond corto + +@item +l'ambiente @code{\begin@{lilypond@}...\end@{lilypond@}}, dove si può inserire +direttamente del codice lilypond più lungo + +@item +il comando @code{\lilypondfile@{...@}} per inserire un file lilypond + +@item +il comando @code{\musicxmlfile@{...@}} per inserire un file MusicXML, che +sarà elaborato da @code{musicxml2ly} e da @code{lilypond}. + +@end itemize + +Nel file di input, la musica viene specificata con uno dei seguenti comandi: @example \begin@{lilypond@}[le,opzioni,vanno,qui] CODICE LILYPOND \end@{lilypond@} -@end example -@noindent -oppure +\lilypond[le,opzioni,vanno,qui]@{ CODICE LILYPOND @} -@example \lilypondfile[le,opzioni,vanno,qui]@{@var{nomefile}@} + +\musicxmlfile[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. @@ -402,26 +418,40 @@ 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 +@code{lilypond-book} fornisce i seguenti comandi e ambienti per includere +musica nei file Texinfo: + +@itemize + +@item +il comando @code{\lilypond@{...@}}, dove si può inserire direttamente del +codice lilypond corto + +@item +l'ambiente @code{\begin@{lilypond@}...\end@{lilypond@}}, dove si può inserire +direttamente del codice lilypond più lungo + +@item +il comando @code{\lilypondfile@{...@}} per inserire un file lilypond + +@item +il comando @code{\musicxmlfile@{...@}} per inserire un file MusicXML, che +sarà elaborato da @code{musicxml2ly} e da @code{lilypond}. + +@end itemize + +Nel file di input, la musica viene specificata con uno dei seguenti comandi @example -@@lilypond[options,go,here] +@@lilypond[le,opzioni,vanno,qui] 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}@} + +@@musicxmlfile[le,opzioni,vanno,qui]@{@var{nomefile}@} @end example Inoltre, @code{@@lilypondversion} mostra la versione di @@ -467,7 +497,52 @@ nel testo. Prende sempre un paragrafo proprio. @subsection HTML @translationof HTML -La musica si inserisce in questo modo +@code{lilypond-book} fornisce i seguenti comandi e ambienti per includere +musica nei file HTML: + +@itemize + +@item +il comando @code{\lilypond@{...@}}, dove si può inserire direttamente del +codice lilypond corto + +@item +l'ambiente @code{\begin@{lilypond@}...\end@{lilypond@}}, dove si può inserire +direttamente del codice lilypond più lungo + +@item +il comando @code{\lilypondfile@{...@}} per inserire un file lilypond + +@item +il comando @code{\musicxmlfile@{...@}} per inserire un file MusicXML, che +sarà elaborato da @code{musicxml2ly} e da @code{lilypond}. + +@end itemize + +Nel file di input, la musica viene specificata con uno dei seguenti comandi: + +\begin@{lilypond@}[le,opzioni,vanno,qui] + CODICE LILYPOND +\end@{lilypond@} + +\lilypond[le,opzioni,vanno,qui]@{ CODICE LILYPOND @} + +\lilypondfile[le,opzioni,vanno,qui]@{@var{nomefile}@} + +\musicxmlfile[le,opzioni,vanno,qui]@{@var{nomefile}@} +@example + + CODICE LILYPOND + + + + +@var{nomefile} + +@var{nomefile} +@end example + +Ad esempio, puoi scrivere @example @@ -496,6 +571,9 @@ Per includere file separati, si usa @var{filename} @end example +@code{} usa la stessa sintassi di @code{}, ma semplicemente +si riferisce a un file MusicXML invece che a un file LilyPond. + Per una lista di opzioni da usare con gli elementi @code{lilypond} e @code{lilypondfile}, si veda @ref{Music fragment options}. @@ -597,11 +675,9 @@ 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. +viene aggiunto @code{ragged-right = ##t} al frammento LilyPond. Frammenti +con un solo rigo avranno sempre il margine destro irregolare, a meno che +non venga specificato esplicitamente @code{noragged-right}. @item noragged-right Per i frammenti di una sola linea, fa sì che la lunghezza del rigo venga estesa @@ -737,7 +813,8 @@ 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. +di musica (ma fuori dall'ambiente @code{example} generato da un'opzione +@code{quote}).. Se il file @file{foo.ly} contiene @@ -773,13 +850,6 @@ 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 @@ -858,7 +928,20 @@ 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}. +di aggiungere @option{-t landscape} alle opzioni di @command{dvips}. + +@knownissues +Il comando @code{\pageBreak} non funziona all'interno dell'ambiente +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}}. + +Molte variabili del blocco @code{\paper} non funzionano all'interno dell'ambiente +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}}. Usa +@code{\newcommand} con @code{\betweenLilyPondSystem} nel preambolo; + +@example +\newcommand@{\betweenLilyPondSystem@}[1]@{\vspace@{36mm@}\linebreak@} +@end example + @subsubheading Texinfo @@ -914,7 +997,14 @@ 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}}. +opzioni @option{-I @var{dir}}. + +@item -l @var{loglevel} +@itemx --loglevel=@var{loglevel} +Imposta la verbosità dell'output su @var{loglevel}. I valori possibili sono @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (predefinito) e @code{DEBUG}. Se +questa opzione non viene usata e la variabile d'ambiente @code{LILYPOND_BOOK_LOGLEVEL} +è impostata, il suo valore viene usato come loglevel. @item -o @var{dir} @itemx --output=@var{dir} @@ -941,10 +1031,17 @@ 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 +directory @option{--output}. Si usa questa opzione per risparmiare tempo nella compilazione di documenti situati in directory diverse che condividono molti identici frammenti. +@itemx --lily-loglevel=@var{loglevel} +Set the output verbosity of the invoked @command{lilypond} calls to @var{loglevel}. +I valori possibili sono @code{NONE}, @code{ERROR}, @code{WARNING}, @code{BASIC_PROGRESS}, +@code{PROGRESS}, @code{INFO} (predefinito) e @code{DEBUG}. Se questa opzione +non viene usata e la variabile d'ambiente @code{LILYPOND_LOGLEVEL} è +impostata, il suo valore viene usato come loglevel. + @itemx --info-images-dir=@var{dir} Formatta l'output di Texinfo in modo che Info cerchi le immagini della musica in @var{dir}. @@ -966,21 +1063,26 @@ 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. +@code{lilypond}. @code{lilypond-book} non userà @option{--filter} e +@option{--process} contemporaneamente. @item --pdf Crea file PDF da usare con PDF@LaTeX{}. +@item --redirect-lilypond-output +Per impostazione predefinita, l'output viene mostrato sul terminale. Questa +opzione redirige tutto l'output in dei file di log nella stessa directory dei +file sorgente. + @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. +@code{lilypondfile} e solo se le directory indicate da @option{--output-dir} e +@option{--lily-output-dir} sono diverse. @item -V @itemx --verbose -Mostra un output dettagliato. +Mostra un output dettagliato. Questo è equivalente a @code{--loglevel=DEBUG}. @item -v @itemx --version @@ -1026,7 +1128,7 @@ automaticamente il formato di output in base all'estensione del file di input. 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} +in cui lavora @command{lilypond-book}, bisogna usare l'opzione @option{--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}. diff --git a/Documentation/it/usage/running.itely b/Documentation/it/usage/running.itely index f8ab162584..4569f4ecd7 100644 --- a/Documentation/it/usage/running.itely +++ b/Documentation/it/usage/running.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: c610645cc9a77cba1a2798280965db142d649ac5 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" +@c \version "2.16.0" @node Eseguire lilypond @@ -56,7 +56,8 @@ questo argomento se non si conosce la linea di comando. @menu * Utilizzo di lilypond:: -* Opzioni della linea di comando per lilypond:: +* Opzioni di base della linea di comando per LilyPond:: +* Opzioni avanzate della linea di comando per LilyPond:: * Variabili d'ambiente:: * LilyPond in una gabbia chroot:: @end menu @@ -124,22 +125,28 @@ opzioni o se la sintassi è diversa. Nota che questi sono comandi shell e non hanno niente a che fare con lilypond. -@node Opzioni della linea di comando per lilypond -@unnumberedsubsec Opzioni della linea di comando per @command{lilypond} -@translationof Command line options for lilypond +@node Opzioni di base della linea di comando per LilyPond +@unnumberedsubsec Opzioni di base della linea di comando per LilyPond +@translationof Basic command line options for LilyPond @cindex Utilizzo di @command{lilypond} @cindex opzioni della linea di comando per @command{lilypond} @cindex linea di comando, opzioni di -@cindex switches +@cindex switch Sono contemplate le seguenti opzioni: @table @code +@item -d,--define-default=@var{variabile}=@var{valore} +Si veda @ref{Advanced command line options for LilyPond}. + +@cindex Scheme, valutazione dell'espressione +@cindex valutazione dell'espressione, Scheme + @item -e,--evaluate=@var{espressione} Valuta l'@var{espressione} di Scheme prima di analizzare qualsiasi file @file{.ly}. -Si possono specificare varie opzioni @code{-e}; saranno analizzate in modo +Si possono specificare varie opzioni @option{-e}; saranno analizzate in modo sequenziale. L'espressione sarà analizzata nel modulo @code{guile-user}, dunque se vuoi @@ -159,223 +166,52 @@ nella linea di comando, e includi @noindent in cima al file @code{.ly}. +@warning{Gli utenti Windows devono usare i doppi apici invece dei singoli apici.} + +@cindex output, formato +@cindex formato, output + @item -f,--format=@var{formato} Formati di output. Come @code{formato} si può scegliere tra -@code{ps}, @code{pdf}, e @code{png}. +@code{ps}, @code{pdf} e @code{png}. Esempio: @code{lilypond -fpng @var{file}.ly} - - -@item -d,--define-default=@var{variabile}=@var{valore} -Imposta l'opzione interna del programma, @var{variabile}, al valore di Scheme -@var{valore}. Se @var{valore} non viene specificato, allora viene usato -@var{#t}. Per disabilitare un'opzione, si può usare il prefisso @code{no-} -prima della @var{variabile}, ad esempio - -@cindex punta e clicca, linea di comando - -@example --dno-point-and-click -@end example - -@noindent -è equivalente a -@example --dpoint-and-click='#f' -@end example - -Di seguito alcune opzioni interessanti. - -@cindex aiuto, linea di comando - -@table @samp -@item help -L'esecuzione di @code{lilypond -dhelp} mostrerà tutte le opzioni disponibili -di @code{-d}. - -@cindex paper-size, linea di comando - -@item paper-size -Questa opzione imposta la dimensione predefinita del foglio, -@example --dpaper-size=\"letter\" -@end example - -@noindent -Nota che la stringa deve essere compresa tra virgolette precedute dal -segno di escape ( @code{\"} ). -@c Match " in previous line to help context-sensitive editors - -@cindex safe, linea di comando - -@item safe -Non si fida dell'input nel file @code{.ly}. - -Quando la formattazione di LilyPond viene messa a disposizione tramite un server -web, si @b{DEVE} passare l'opzione @code{--safe} o l'opzione @code{--jail}. L'opzione -@code{--safe} impedirà che il codice Scheme presente nell'input possa fare uno -scempio, ad esempio - -@quotation -@verbatim -#(system "rm -rf /") -{ - c4^#(ly:export (ly:gulp-file "/etc/passwd")) -} -@end verbatim -@end quotation - -L'opzione @code{-dsafe} serve a valutare le espressioni Scheme presenti nell'input -in uno speciale modulo di sicurezza. Questo modulo di sicurezza è derivato dal -modulo GUILE @file{safe-r5rs}, ma aggiunge alcune funzioni del -LilyPond API. Queste funzioni sono elencate in @file{scm/safe-lily.scm}. - -Inoltre, la modalità sicura non permette le direttive @code{\include} e -disabilita l'uso del backslash nelle stringhe @TeX{}. - -In modalità sicura, non è possibile importare le variabili di LilyPond -in Scheme. - -@code{-dsafe} @emph{non} rileva il sovrautilizzo di risorse. È ancora possibile -far sì che il programma rimanga in sospeso per un tempo indefinito, ad esempio -alimentando il backend con strutture di dati cicliche. Dunque se si vuole usare -LilyPond su un server web pubblicamente accessibile, si deve limitare il processo -nell'uso della CPU e della memoria. - -La modalità sicura bloccherà la compilazione di molti utili frammenti di codice -LilyPond. L'opzione @code{--jail} è un'alternativa più sicura, ma richiede -più lavoro per configurarla. - -@cindex formato di output, impostare il -@item backend -il formato di output da usare per il back-end. Per il @code{formato} si può -scegliere tra -@table @code -@item ps -@cindex PostScript, output - per PostScript. - - I file Postscript includono i tipi di carattere TTF, Type1 e OTF. Non vengono - inclusi i sottoinsiemi di questi tipi. Se si usa un set di caratteri orientali, - si possono ottenere file di grosse dimensioni. - -@item eps - -@cindex Postscript, incapsulato -@cindex EPS (Encapsulated PostScript) - - per PostScript incapsulato. Invia ogni pagina (sistema) in un file -@file{EPS} separato, senza font, e in un unico file @file{EPS} con -tutte le pagine (sistemi) inclusi i font. - -Questa è la modalità predefinita di @command{lilypond-book}. - -@item svg - -@cindex SVG (Scalable Vector Graphics) - - per ottenere SVG (Scalable Vector Graphics). - - Crea un singolo file SVG, senza font incorporati, per ogni pagina - dell'output. Si raccomanda di installare i font Century - Schoolbook, inclusi nell'installazione di LilyPond, per una resa - ottimale. In UNIX basta copiare questi font dalla directory di - LilyPond (solitamente - @file{/usr/share/lilypond/VERSION/fonts/otf/}) in - @file{~/.fonts/}. L'output SVG dovrebbe essere compatibile con qualsiasi - editor SVG o user agent. - -@item scm - -@cindex Scheme, estrazione di - - per estrarre i comandi di disegno grezzi e interni, basati su Scheme. - -@item null - non produce la stampa della partitura; ha lo stesso effetto di @code{-dno-print-pages}. -@end table - -Esempio: @code{lilypond -dbackend=svg @var{filename}.ly} - -@item preview -@cindex preview, linea di comando -Genera un file di output che contiene i titoli e il primo sistema -del brano musicale. Se si usano i blocchi @code{\bookpart}, i titoli e il -primo sistema di ogni @code{\bookpart} apparirà nell'output. -I backend @code{ps}, @code{eps}, e @code{svg} supportano questa -opzione. - -@item print-pages -Genera tutte le pagine, come da impostazione predefinita. @code{-dno-print-pages} è -utile in combinazione con @code{-dpreview}. - -@end table - - - @item -h,--help Mostra una sintesi dell'utilizzo. @item -H,--header=@var{CAMPO} Estrae un campo dell'intestazione nel file @file{NOME.@var{CAMPO}}. +@item -i,--init=@var{file} +Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}). + @cindex ricerca dei file @cindex percorso di ricerca -@item --include, -I=@var{directory} + +@item -I, --include=@var{directory} Aggiunge @var{directory} al percorso di ricerca per i file di input. È possibile assegnare più opzioni -I. La ricerca inizierà nella prima directory definita, e se il file da includere non viene trovato la ricerca continuerà nelle directory seguenti. -@item -i,--init=@var{file} -Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}). - -@cindex cartella, dirigere l'output in -@cindex nome del file di output, impostare - -@item -o,--output=@var{FILE} or @var{CARTELLA} -Imposta il file di output predefinito @var{FILE} oppure, se una cartella con -quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome -del file dal file di input. In entrambi i casi verrà aggiunto il suffisso -appropriato (ad esempio @code{.pdf} per il pdf). - - -@cindex PostScript - -@item --ps -Genera PostScript. - -@cindex Portable Network Graphics (PNG) - -@item --png -Genera immmagini di ogni pagina in formato PNG. Questo implica -@code{--ps}. La risoluzione in DPI dell'immagine può essere impostata con -@example --dresolution=110 -@end example - -@cindex Portable Document Format (PDF) - -@item --pdf -Genera PDF. Questo implica @code{--ps}. - - +@cindex gabbia chroot, esecuzione all'interno di @item -j,--jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory} Esegue @command{lilypond} in una gabbia chroot. -L'opzione @code{--jail} fornisce un'alternativa più flessibile a -@code{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso -un server web o quando LilyPond esegue sorgenti provenienti dall'esterno. +L'opzione @option{--jail} fornisce un'alternativa più flessibile a +@option{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso +un server web o quando LilyPond esegue sorgenti provenienti dall'esterno +(si veda @ref{Advanced command line options for LilyPond}). -L'opzione @code{--jail} modifica la radice di @command{lilypond} in +L'opzione @option{--jail} modifica la radice di @command{lilypond} in @var{gabbia} appena prima di iniziare il vero processo di compilazione. L'utente e il gruppo vengono poi modificati per corrispondere a quelli forniti, e la directory corrente viene spostata in @var{directory}. Questa configurazione garantisce che non sia possibile (almeno in teoria) uscire dalla gabbia. Si noti -che perché @code{--jail} funzioni @command{lilypond} deve essere eseguito come root; +che perché @option{--jail} funzioni @command{lilypond} deve essere eseguito come root; di solito questo si fa in modo sicuro col comando @command{sudo}. Configurare una gabbia è una questione un po' delicata, perché bisogna essere @@ -384,6 +220,7 @@ sorgente @emph{dentro la gabbia}. Una configurazione tipica comprende i seguent elementi: @table @asis + @item Impostare un filesystem distinto Si dovrebbe creare un filesystem separato LilyPond, così che possa essere montato con opzioni di sicurezza come @code{noexec}, @code{nodev}, e @@ -403,7 +240,7 @@ una sola directory scrivibile da questo utente, che dovrebbe essere passata in LilyPond ha bisogno di leggere alcuni file quando viene lanciato. Tutti questi file devono essere copiati nella gabbia, sotto lo stesso percorso in cui appaiono nel vero filesystem principale. Si deve copiare l'intero contenuto dell'installazione -LilyPond installation (ad esempio, @file{/usr/share/lilypond}). +LilyPond (ad esempio, @file{/usr/share/lilypond}). Se c'è un problema, il modo più semplice per individuarlo è lanciare LilyPond usando @command{strace}, che permetterà di scoprire quali @@ -415,24 +252,442 @@ programma esterno. Dunque LilyPond deve essere eseguito con un backend che non richieda tale programma. Come è già stato detto, deve essere eseguito con privilegi di superutente (che ovviamente perderà immediatamente), possibilmente con l'uso di @command{sudo}. È una buona idea limitare il -numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con @command{ulimit --t}), e, se il sistema operativo lo permette, la quantità di memoria che -può essere allocata. +numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con +@command{ulimit -t}), e, se il sistema operativo lo permette, la quantità di +memoria che può essere allocata. Si veda anche @ref{LilyPond in chroot jail}. @end table +@cindex loglevel +@cindex output dettagliato + +@item -l,--loglevel=@var{LIVELLO} +Imposta la verbosità dell'output della console su @var{LIVELLO}. I valori possibili sono: +@table @code + +@item NONE +Nessun output, nemmeno i messaggi di errore. + +@item ERROR +Solo i messaggi di errore, niente avvisi o messaggi di elaborazione. + +@item WARN +Avvisi e nessaggi di errore, nessun messaggio di elaborazione. + +@item BASIC_PROGRESS +Messaggi di elaborazione di base (riuscita), avvisi e errori. + +@item PROGRESS +Tutti i messaggi di elaborazione, avvisi e errori. + +@item INFO (predefinito) +Messaggi di elaborazione, avvisi, errori e ulteriori informazioni di esecuzione. + +@item DEBUG +Tutti i messaggi possibili, incluso l'output verboso di debug. + +@end table + +@cindex directory, dirigere l'output in +@cindex output, impostare il nome del file +@cindex output, directory + +@item -o,--output=@var{FILE} o @var{CARTELLA} +Imposta il file di output predefinito @var{FILE} oppure, se una cartella con +quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome +del file dal file di input. In entrambi i casi verrà aggiunto il suffisso +appropriato (ad esempio @code{.pdf} per il pdf). + +@cindex PS (Postscript), output +@cindex Postscript (PS), output +@cindex output, PS (Postscript) + +@item --ps +Genera PostScript. + +@cindex PNG (Portable Network Graphics), output +@cindex output, PNG (Portable Network Graphics) + +@item --png +Genera immmagini di ogni pagina in formato PNG. Questo implica +@option{--ps}. La risoluzione in DPI dell'immagine può essere impostata con +@example +-dresolution=110 +@end example + +@cindex PDF (Portable Document Format), output +@cindex output, PDF (Portable Document Format) + +@item --pdf +Genera PDF. Questo implica @option{--ps}. @item -v,--version Mostra informazioni sulla versione. @item -V,--verbose -Aumenta la prolissità: mostra i percorsi completi di tutti i file letti, e dà +Aumenta la prolissità: mostra i percorsi completi di tutti i file letti e dà informazioni sui tempi. @item -w,--warranty Mostra la garanzia con cui viene distribuito GNU LilyPond. (Distribuito con @strong{NESSUNA GARANZIA}!) + +@end table + + +@node Opzioni avanzate della linea di comando per LilyPond +@unnumberedsubsec Opzioni avanzate della linea di comando per @command{lilypond} +@translationof Advanced command line options for LilyPond + +@table @code + +@item -d@var{[nome-opzione]}=@var{[valore]},--define-default=@var{[nome-opzione]}=@var{[valore]} +Imposta l'equivalente funzione interna di Scheme su @var{valore}. Se non +viene specificato un @var{valore}, viene usato il valore predefinito. Per disabilitare +un'opzione, si può usare il prefisso @code{no-} prima di @var{nome-opzione}, ad esempio + +@cindex punta e clicca, linea di comando + +@example +-dpoint-and-click=#f +@end example + +@noindent +è equivalente a +@example +-dno-point-and-click +@end example @end table +@noindent Sono supportate le seguenti opzioni insieme ai loro rispettivi +valori predefiniti: + +@multitable @columnfractions .33 .16 .51 +@item @strong{Simbolo} +@tab @strong{Valore} +@tab @strong{Spiegazione/Opzioni} + +@item @code{anti-alias-factor} +@tab @code{1} +@tab Elabora a una risoluzione più alta (usando un certo fattore) e ridimensiona +il risultato per evitare gli @q{artefatti} nelle immagini @code{PNG}. + +@item @code{aux-files} +@tab @code{#t} +@tab Crea i file @code{.tex}, @code{.texi}, @code{.count} nel backend +@code{EPS}. + +@item @code{backend} +@tab @code{'ps} +@tab Seleziona il backend. I file Postscript (predefinito) includono i tipi di +carattere @code{TTF}, @code{Type1} e @code{OTF}. Non vengono inclusi i sottoinsiemi +di questi tipi. Se si usa un set di caratteri @q{orientali}, si possono ottenere +file di grosse dimensioni. + +@item +@tab @code{'eps} +@tab Encapsulated PostScript. Invia ogni pagina (sistema) in un file +@file{EPS} separato, senza font, e in un unico file @file{EPS} con +tutte le pagine (sistemi) inclusi i font. Questa è la modalità +predefinita di @command{lilypond-book}. + +@item +@tab @code{'null} +@tab non produce la stampa della partitura; ha lo stesso +effetto di @code{-dno-print-pages}. + +@item +@tab @code{'svg} +@tab Scalable Vector Graphics. Crea un singolo file SVG, senza font +incorporati, per ogni pagina dell'output. Si raccomanda di installare i +font Century Schoolbook, inclusi nell'installazione di LilyPond, per una +resa ottimale. In UNIX basta copiare questi font dalla directory di +LilyPond (solitamente @file{/usr/share/lilypond/VERSION/fonts/otf/}) in +@file{~/.fonts/}. L'output SVG dovrebbe essere compatibile con qualsiasi +editor SVG o user agent. C'è anche un'opzione @code{svg-woff} (sotto) per +poter usare i file di font woff nel backend SVG. + +@item +@tab @code{'scm} +@tab Estrae i comandi di disegno grezzi e interni, basati su Scheme. + +@item @code{check-internal-types} +@tab @code{#f} +@tab Controlla l'assegnazione di ogni proprietà per i tipi. + +@item @code{clip-systems} +@tab @code{#f} +@tab Genera frammenti ritagliati di una partitura. + +@item @code{datadir} +@tab +@tab Prefisso per i file di dati (sola lettura). + +@item @code{debug-gc} +@tab @code{#f} +@tab Scarica le statistiche sul debug della memoria. + +@item @code{debug-gc-assert-parsed-dead} +@tab @code{#f} +@tab Per il debug della memoria: Assicura che tutti i riferimenti agli oggetti +analizzati siano eliminati. Questa è un'opzione interna e viene abilitata +automaticamente da @code{`-ddebug-gc'}. + +@item @code{debug-lexer} +@tab @code{#f} +@tab Debug dell'analizzatore lessicale flex. + +@item @code{debug-page-breaking-scoring} +@tab @code{#f} +@tab Crea le partiture per diverse configurazioni di interruzione di pagina. + +@item @code{debug-parser} +@tab @code{#f} +@tab Debug dell'analizzatore bison. + +@item @code{debug-property-callbacks} +@tab @code{#f} +@tab Debug delle catene cicliche di callback. + +@item @code{debug-skylines} +@tab @code{#f} +@tab Debug skylines. + +@item @code{delete-intermediate-files} +@tab @code{#t} +@tab Cancella i file @code{.ps} intermedi e inutilizzabili creati durante +la compilazione. + +@item @code{dump-cpu-profile} +@tab @code{#f} +@tab Scarica l'informazione sui tempi (dipendente dal sistema). + +@item @code{dump-profile} +@tab @code{#f} +@tab Scarica l'informazione sulla memoria e il tempo per ogni file. + +@item @code{dump-signatures} +@tab @code{#f} +@tab Scarica le firme dell'output di ogni sistema. Usato per testare le regressioni. + +@item @code{eps-box-padding} +@tab @code{#f} +@tab Sposta il margine sinistro della cornice EPS dell'output della quantità +specificata (in mm). + +@item @code{gs-load-fonts} +@tab @code{#f} +@tab Carica i font attraverso Ghostscript. + +@item @code{gs-load-lily-fonts} +@tab @code{#f} +@tab Carica solo i font LilyPond attraverso Ghostscript. + +@item @code{gui} +@tab @code{#f} +@tab Esegue il programma senza stampare messaggi e redirige tutto l'output in un file di log. +@end multitable + +@noindent +@strong{Nota per gli utenti Windows:} Per impostazione predefinita @code{lilypond.exe} +stampa tutta l'informazione sull'avanzamento nella finestra dei comandi. +@code{lilypond-windows.exe} non lo fa e riporta un prompt, privo di +informazioni sull'avanzamento, subito nella linea di comando. L'opzione +@option{-dgui} può essere usata in questo caso per redirigere l'output in +un file di log. + +@multitable @columnfractions .33 .16 .51 +@item @code{help} +@tab @code{#f} +@tab Mostra questo aiuto. + +@item @code{include-book-title-preview} +@tab @code{#t} +@tab Include i titoli dei libri nelle immagini di anteprima. + +@item @code{include-eps-fonts} +@tab @code{#t} +@tab Include i font in file EPS con sistemi separati. + +@item @code{include-settings} +@tab @code{#f} +@tab Include il file per le impostazioni globali, questo viene incluso prima +che la partitura sia elaborata. + +@item @code{job-count} +@tab @code{#f} +@tab Elabora in parallelo, usando il dato numero di lavori. + +@item @code{log-file} +@tab @code{#f [file]} +@tab Se la stringa @code{FOO} viene assegnata come secondo argomento, +redirige l'output nel file @code{FOO.log}. + +@item @code{max-markup-depth} +@tab @code{1024} +@tab Maximum depth for the markup tree. If a markup has more levels, +assume it will not terminate on its own, print a warning and return a +null markup instead. + +@item @code{midi-extension} +@tab @code{"midi"} +@tab Imposta l'estensione predefinita per il file MIDI sulla stringa specificata. + +@item @code{music-strings-to-paths} +@tab @code{#f} +@tab Converte le stringhe di testo in percorsi quando i glifi appartengono a +un font musicale. + +@item @code{old-relative} +@tab @code{#f} +@tab Fa sì che il modo @code{\relative} per la musica simultanea funzioni in +modo simile alla sintassi degli accordi. + +@item @code{paper-size} +@tab @code{\"a4\"} +@tab Imposta la dimensione predefinita del foglio. Nota che la stringa deve +essere compresa tra virgolette precedute dal segno di escape. + +@item @code{pixmap-format} +@tab @code{png16m} +@tab Imposta il formato di output di GhostScript per le immagini raster. + +@item @code{point-and-click} +@tab @code{#f} +@tab Aggiunge i collegamenti @q{punta e clicca} all'output @code{PDF}. Si veda +@ref{Point and click}. + +@item @code{preview} +@tab @code{#f} +@tab Crea immagini di anteprima oltre al normale output. +@end multitable + +@noindent +Questa opzione è supportata da tutti i backend; @code{pdf}, @code{png}, +@code{ps}, @code{eps} e @code{svg}, ma non @code{scm}. Genera un file +di output nella forma @code{mioFile.preview.estensione}, contenente i +titoli e il primo sistema. Se vengono usati i blocchi @code{\book} o +@code{\bookpart}, i titoli di @code{\book}, @code{\bookpart} o @code{\score} +appariranno nell'output, incluso il primo sistema di ogni blocco @code{\score} +se la variabile @code{print-all-headers} di @code{\paper} è impistata +su @code{#t}. + +Per impedire il normale output, si usano le opzioni @option{-dprint-pages} o +@option{-dno-print-pages} in base alle proprie esigenze. + +@multitable @columnfractions .33 .16 .51 +@item @code{print-pages} +@tab @code{#t} +@tab Genera le pagine complete (predefinito). @option{-dno-print-pages} è +utile in combinazione con @option{-dpreview}. + +@item @code{profile-property-accesses} +@tab @code{#f} +@tab Mantiene una statistica delle chiamate di funzione @code{get_property()}. + +@item @code{protected-scheme-parsing} +@tab @code{#t} +@tab Continua se l'analizzatore coglie degli errori nel codice scheme interno +al file di input. Se impostato su @code{#f}, in caso di errore si ferma e +mostra la traccia di stack. + +@item @code{read-file-list} +@tab @code{#f [file]} +@tab Specifica il nome di un file che contiene una lista di file di input da +elaborare. + +@item @code{relative-includes} +@tab @code{#f} +@tab Quando elabora un comando @code{\include}, cerca il file incluso +in posizione relativa al file corrente (invece che in posizione assoluta). + +@item @code{resolution} +@tab @code{101} +@tab Imposta la risoluzione per generare immagini @code{PNG} su un certo +valore (in dpi). + +@item @code{safe} +@tab @code{#f} +@tab Non si fida dell'input nel file @code{.ly}. +@end multitable + +@noindent +Quando la formattazione di LilyPond viene messa a disposizione tramite un server +web, si @b{DEVE} passare l'opzione @option{--safe} o l'opzione @option{--jail}. L'opzione +@option{--safe} impedirà che il codice Scheme presente nell'input possa fare uno +scempio, ad esempio + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^$(ly:gulp-file "/etc/passwd") +} +@end verbatim +@end quotation + +L'opzione @option{-dsafe} serve a valutare le espressioni Scheme presenti nell'input +in uno speciale modulo di sicurezza. Questo modulo di sicurezza è derivato dal +modulo GUILE @file{safe-r5rs}, ma aggiunge alcune funzioni del +LilyPond API. Queste funzioni sono elencate in @file{scm/safe-lily.scm}. + +Inoltre, la modalità sicura non permette le direttive @code{\include} e +disabilita l'uso del backslash nelle stringhe @TeX{}. In modalità sicura, +non è possibile importare le variabili di LilyPond in Scheme. + +@option{-dsafe} @emph{non} rileva il sovrautilizzo di risorse. È ancora possibile +far sì che il programma rimanga in sospeso per un tempo indefinito, ad esempio +alimentando il backend con strutture di dati cicliche. Dunque se si vuole usare +LilyPond su un server web pubblicamente accessibile, si deve limitare il processo +nell'uso della CPU e della memoria. + +La modalità sicura bloccherà la compilazione di molti utili frammenti di codice +LilyPond. + +L'opzione @option{--jail} è un'alternativa più sicura, ma richiede più lavoro +per configurarla. Si veda @ref{Basic command line options for LilyPond}. + +@multitable @columnfractions .33 .16 .51 +@item @code{separate-log-files} +@tab @code{#f} +@tab Per i file di input @code{FILE1.ly}, @code{FILE2.ly}, etc. salva i dati di +log nei file @code{FILE1.log}, @code{FILE2.log}, ... + +@item @code{show-available-fonts} +@tab @code{#f} +@tab Elenca i nomi di font disponibili. + +@item @code{strict-infinity-checking} +@tab @code{#f} +@tab Forza il blocco del programma quando si incontrano eccezioni @code{Inf} e +@code{NaN} sui numeri in virgola mobile. + +@item @code{strip-output-dir} +@tab @code{#t} +@tab Non usa le directory dei file di input per costruire i nomi dei file +di output. + +@item @code{svg-woff} +@tab @code{#f} +@tab Usa i file di font woff nel backend SVG. + +@item @code{trace-memory-frequency} +@tab @code{#f} +@tab Registra molte volte al secondo l'uso delle celle da parte di Scheme. Salva i +risultati in @code{FILE.stacks} e @code{FILE.graph}. + +@item @code{trace-scheme-coverage} +@tab @code{#f} +@tab Registra la copertura dei file Scheme in @code{FILE.cov}. + +@item @code{verbose} +@tab @code{#f} +@tab Output dettagliato, ovvero livello di log DEBUG (sola lettura). + +@item @code{warning-as-error} +@tab @code{#f} +@tab Trasforma tutti i messaggi di avviso e di @q{errore di programmazione} in errori. +@end multitable + @node Variabili d'ambiente @unnumberedsubsec Variabili d'ambiente @@ -451,6 +706,11 @@ sottodirectory chiamate @file{ly/}, @file{ps/}, @file{tex/}, etc. @item LANG Determina la lingua per i messaggi di avviso. +@item LILYPOND_LOGLEVEL +Il livello di log (loglevel) predefinito. Se LilyPond viene chiamato senza un +livello di log esplicito (ovvero senza l'opzione @option{--loglevel} della +linea di comando), viene usato questo valore. + @item LILYPOND_GC_YIELD Una variabile, in forma di percentuale, che regola il modo in cui viene gestita la memoria. Con valori più alti il programma usa più memoria, con valori @@ -613,7 +873,7 @@ carattere. @cindex errore Scheme Gli errori che capitano mentre si esegue del codice Scheme sono individuati dall'interprete Scheme. Se si esegue con l'opzione di prolissità (@code{-V} o -@code{--verbose}), viene stampata una traccia della chiamata di funzione +@option{--verbose}), viene stampata una traccia della chiamata di funzione responsabile dell'errore. @item Errore di programmazione @@ -795,7 +1055,7 @@ non chiusa sarà solitamente una o due righe sopra. @translationof Error message Unbound variable % Questo messaggio di errore comparirà in fondo alla console di -output o nel file di log insieme al messaggio @qq{GUILE signalled an error ...} +output o nel file di log insieme al messaggio @qq{GUILE signalled an error @dots{}} ogni volta che viene chiamata una routine di Scheme che contenga (erroneamente) un commento @emph{LilyPond} invece di un commento @emph{Scheme}. diff --git a/Documentation/it/usage/suggestions.itely b/Documentation/it/usage/suggestions.itely index 5b1c967632..933bfbce3a 100644 --- a/Documentation/it/usage/suggestions.itely +++ b/Documentation/it/usage/suggestions.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: de9ddc8183a93f28d167af8f195be95e5fbc91b9 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" +@c \version "2.16.0" @node Consigli su come scrivere i file @chapter Consigli su come scrivere i file @@ -95,7 +95,7 @@ variabili. Se specifichi @code{c4 d e} all'inizio di una frase 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 +musicali. Vedi @rlearning{Ridurre l'input grazie a variabili e funzioni}, e @rlearning{Style sheets}. @end itemize @@ -325,7 +325,7 @@ nella directory @file{Notes}: @example %%% inizio del file "symphony-cello.ly" -\include ../definitions.ily +\include ../symphonyDefs.ily \include ../Notes/cello.ily @end example diff --git a/Documentation/it/usage/updating.itely b/Documentation/it/usage/updating.itely index f38736b1f7..77be9f70c9 100644 --- a/Documentation/it/usage/updating.itely +++ b/Documentation/it/usage/updating.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + Translation of GIT committish: 2aeac5e3815effa47427dad86d6be811c7b0d8a2 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" +@c \version "2.16.0" @node Aggiornare i file con convert-ly @@ -135,7 +135,7 @@ l'originale. @item -f,--from=@var{from-patchlevel} Imposta la versione da cui convertire. Se non viene impostata, @command{convert-ly} la ricaverà dalla stringa @code{\version} presente nel file. -Esempio: @code{--from=2.10.25} +Esempio: @option{--from=2.10.25} @item -n,--no-version Normalmente @command{convert-ly} aggiunge un indicatore @code{\version} @@ -146,10 +146,14 @@ Mostra tutte le conversioni conosciute ed esce. @item --to=@var{to-patchlevel} Imposta la versione obiettivo della conversione. L'impostazione predefinita -è l'ultima versione disponibile. Esempio: @code{--to=2.12.2} +è l'ultima versione disponibile. Esempio: @option{--to=2.12.2} @item -h, --help Mostra la schermata di aiuto. + +@item -l @var{loglevel}, --loglevel=@var{loglevel} +Imposta la verbosità dell'output su @var{loglevel}. I valori possibili sono @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (predefinito) e @code{DEBUG}. @end table Per aggiornare i frammenti LilyPond presenti nei file texinfo, si usa diff --git a/Documentation/it/web.texi b/Documentation/it/web.texi index 2e9719de71..e40e43b884 100644 --- a/Documentation/it/web.texi +++ b/Documentation/it/web.texi @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 4d852ef65fc654e4ed02413926fc0cb78a1da1be + Translation of GIT committish: a8841c7b9212700f2ebac56e0713afa78a8f0ca0 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -15,7 +15,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -23,7 +23,6 @@ @include macros.itexi @include weblinks.itexi -@afourpaper @c don't remove this comment. @ignore @@ -38,7 +37,7 @@ @c Translation checkers: Luca Rossetto Casel @copying -Copyright @copyright{} 2009--2011 degli autori. +Copyright @copyright{} 2009--2012 degli autori. @quotation Permission is granted to copy, distribute and/or modify this @@ -53,9 +52,8 @@ License''. @c TITLE PAGE @ifnottex -@node Su +@node Top @top LilyPond... notazione musicale per tutti -@translationof Top @end ifnottex @@ -126,6 +124,44 @@ Maggiori informazioni nella nostra @ref{Introduzione}! @ifclear web_version @c do nothing @end ifclear +@ifset web_version + @c make the box: +@divId{wildCardBox} +@subheading Pondings +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html + @ifset web_version @c make the box: @divId{latestVersion} @@ -216,30 +252,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (split HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML multipagina),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (big HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (HTML pagina unica),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro @@ -250,15 +271,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @item @docLinkSplit{\name\,\base\,\split\} @minus{} il manuale è diviso in tante pagine HTML. - @*@ @ @emph{(small download for each page)} + @*@ @ @emph{(piccolo download per ogni pagina)} @item @docLinkBig{\name\,\base\,\big\} @minus{} leggi questo manuale in un'unica grande pagina HTML. - @*@ @ @emph{(large single download, \bigsize\)} + @*@ @ @emph{(un solo grande download, \bigsize\)} @item @docLinkPdf{\name\,\base\,\pdf\} @minus{} scarica come file PDF. - @*@ @ @emph{(large single download, \pdfsize\)} + @*@ @ @emph{(un solo grande download, \pdfsize\)} @end itemize diff --git a/Documentation/it/web/community.itexi b/Documentation/it/web/community.itexi index 476c897f12..d3f2fe759a 100644 --- a/Documentation/it/web/community.itexi +++ b/Documentation/it/web/community.itexi @@ -1,6 +1,6 @@ -@c -*- coding: utf-8; mode: texinfo; -*- +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2 + Translation of GIT committish: 7f8a93a6c044fcbb3c7aeb3aa5cba0c921dc7691 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -42,9 +42,15 @@ quando si discute di LilyPond. @item @ref{Aiutaci}: è richiesto il tuo aiuto. +@item +@ref{Sponsor}: contributi finanziari. + @item @ref{Sviluppo}: per i collaboratori e i tester. +@item +@ref{GSoC 2012}: le nostre idee per l'edizione 2012 del Google Summer of Code. + @item @ref{Autori}: le persone che hanno reso LilyPond quello che è oggi. @@ -62,6 +68,9 @@ quando si discute di LilyPond. @item @ref{Notizie vecchie}: un archivio. +@item +@ref{Attic}: annunci e changelog delle versioni precedenti. + @end itemize @divEnd @@ -73,10 +82,13 @@ quando si discute di LilyPond. * Esempi minimi:: * Segnalazione bug:: * Aiutaci:: +* Sponsor:: * Sviluppo:: +* GSoC 2012:: * Autori:: * Pubblicazioni:: * Notizie vecchie:: +* Soffitta:: @end menu @divEnd @@ -259,6 +271,13 @@ linee guida per la @ref{Segnalazione bug}.} @divEnd +@divClass{column-right-bottom} +@subheading Email delicate + +Le questioni private devono essere inviate a Graham Percival (project +manager), che ne discuterà con gli interessati. + +@divEnd @node Esempi minimi @@ -268,7 +287,7 @@ linee guida per la @ref{Segnalazione bug}.} @divClass{column-center-top} @subheading Cosa sono gli @qq{Esempi minimi}? -Un esempio minimo è un esempio dal quale niente può essere tolto. +Un esempio minimo è un esempio dal quale @strong{niente} può essere tolto. @divEnd @divClass{column-left-bottom} @@ -282,16 +301,16 @@ Più l'esempio è semplice, più rapidamente potenziali solutori possono comprenderlo e aiutarti. @item -Un esempio semplice dimostra che hai tentato di risolvere il problema -da solo. Quando le persone inviano grandi porzioni di input, sembra -che non si preoccupino che noi li possiamo aiutare o no. +Un esempio minimo dimostra che hai tentato di risolvere il problema +da solo. Quando le persone inviano grandi porzioni di codice, sembra +che non si preoccupino che li possiamo aiutare o no. @item -Creare un esempio minimo ti spinge a capire cosa sta +Creare un esempio minimo ti aiuta a capire cosa sta succedendo. Molte segnalazioni di un falso problema possono essere evitate se si prova a creare un esempio minimo; se non riesci a ricreare un @qq{bug} in un esempio minimo, allora probabilmente il problema è -una comprensione di LilyPond insufficiente, non un vero bug! +una conoscenza di LilyPond insufficiente, non un vero bug! @end itemize @divEnd @@ -300,19 +319,18 @@ una comprensione di LilyPond insufficiente, non un vero bug! @divClass{column-right-bottom} -@subheading Come li creo? +@subheading Come crearli? @divClass{keep-bullets} @itemize @item -Includi il numero di versione nel comando \version. +Includi il numero di versione nel comando @code{\version}. @item Crea un esempio piccolo! Gli esempi che riguardano la spaziatura o la formattazione di pagina potrebbero richiedere molte battute, ma la maggior -parte dei problemi può essere ricreata in una singola -battuta. +parte dei problemi può essere riprodotta con meno di una battuta. @item Durante la preparazione di un esempio, cerca di commentare @w{(@code{%} @@ -321,31 +339,73 @@ commentare una porzione di codice riuscendo a mantenere chiara l'idea principale allora elimina il materiale commentato! @item -Evita di usare note, tonalità, o segni di tempo complicati a meno che +Evita di usare note, tonalità o segni di tempo complessi a meno che il malfunzionamento non riguardi proprio il comportamento di questi elementi. @item -Non usare i comandi @code{\override} o @code{\set} a meno che il malfunzionamento +Non usare i comandi @code{\override} o @code{\set}, a meno che il malfunzionamento non riguardi questi comandi in particolare. +@item +Eventualmente, allega un'immagine che mostri il risultato grafico desiderato. + @end itemize @divEnd @divEnd +@divClass{column-center-bottom} +@subheading Quanto piccoli devono essere? +Il codice seguente è un esempio minimo? + +@example +\version "2.14.1" +\include "english.ly" + +\score @{ + \new Staff @{ + \key d \major + \numericTimeSignature + \time 2/4 + 16 8. + %% Here: the tie on the D's looks funny + %% Too tall? Left-hand endpoint is not aligned with the B tie? + ~ + 8 [ ] + @} +@} +@end example + +Non è poi così grande, ma un vero esempio minimo è il seguente: + +@example +\version "2.14.1" +@{ + % middle tie looks funny here: + 8. ~ 8 +@} +@end example + +Sono pochi gli esempi minimi che superano 10 righe di codice - +spesso 4 righe sono sufficienti per illustrare il problema! + +@divEnd @node Segnalazione bug @unnumberedsec Segnalazione bug @translationof Bug reports +@divClass{heading-center} +Se hai un codice di input che produce un crash o un output sbagliato, +allora si tratta di un bug. +@divEnd + @divClass{column-center-top} @subheading Passo 1: Bug noti -Se hai un codice di input che produce un crash o un output sbagliato, -allora si tratta di un bug. Sul nostro bug tracker su google c'è una -lista dei bug aperti, +Potremmo già essere a conoscenza di questo bug. Controlla qui: @example @uref{http://code.google.com/p/lilypond/issues/list} @@ -361,26 +421,24 @@ pure maggiori informazioni nella segnalazione.} @divClass{column-left-bottom} @subheading Passo 2: Creare una segnalazione bug -Se hai scoperto un bug che non è elencato, puoi aiutarci creando +Se hai scoperto un bug che non è ancora stato riportato, puoi aiutarci creando una segnalazione bug. @warning{Accettiamo segnalazioni bug esclusivamente nella forma di @ref{Esempi -minimi}. Abbiamo risorse molto limitate da dedicare alle segnalazioni -bug, quindi qualsiasi esempio non minimo sarà scartato. Quasi -ogni bug può essere dimostrato con quattro note o meno!} +minimi}. Abbiamo risorse molto limitate, quindi qualsiasi esempio non minimo +sarà scartato. Quasi ogni bug può essere dimostrato con quattro note o meno!} Ecco un esempio di una valida segnalazione bug: @example -%% il comando di ottavazione -%% non modifica l'output! - -\version "2.10.0" -\paper@{ ragged-right=##t @} -\relative c''' @{ - c1 - #(set-octavation 1) - c1 +% Le alterazioni dovrebbero comparire solo nella +% prima nota di una legatura di valore, ma questa +% versione mostra il bemolle accanto a entrambe le note. +\version "2.10.1" + +\relative c'' @{ + bes1 ~ + bes1 @} @end example @@ -418,18 +476,33 @@ Per evitarlo, aggiungi @end itemize @divEnd +@divEnd + +@divClass{column-center-bottom} +@subheading Passo 4: Attendi una risposta -Una volta che il bug è stato inviato alla lista, la nostra Squadra Bug esaminerà -la segnalazione. Una risposta può richiedere fino a 24 ore, perché abbiamo -un numero limitato di volontari per questo compito. Potrebbero chiederti maggiori -informazioni, oppure aggiungere la segnalazione al tracker e comunicartene il -numero di riferimento. +Una volta che la segnalazione bug è stata inviata alla lista, la nostra Squadra +Bug la esaminerà e forse ti chiederà maggiori informazioni. Verrai avvisato +quando la segnalazione viene aggiunta al bug tracker. Una risposta può richiedere +fino a 4 giorni, perché abbiamo un numero limitato di volontari per questo compito. -Puoi contrassegnare il bug in modo da ricevere automaticamente delle email -ogni volta capiti un'attività relativa al bug. Per fare questo occorre -avere un account google. +Una volta che un bug è stato aggiunto al tracker, puoi commentarlo per aggiungere +informazioni a riguardo. Puoi anche contrassegnare il bug in modo da ricevere +automaticamente delle email ogni volta capiti un'attività relativa al bug. Per +fare questo occorre avere un account google. @divEnd +@divClass{column-center-bottom} +@subheading Aiuto facoltativo: mostra il comportamento desiderato + +Dopo che il problema è stato aggiunto al tracker, può essere molto +utile poter vedere l'output desiderato. Aggiungi pure del codice di +input e/o delle immagini (se possibile, create con altri strumenti) che +mostrino come dovrebbe apparire secondo te! + +@divEnd + + @node Aiutaci @unnumberedsec Aiutaci @@ -442,17 +515,98 @@ avere un account google. @divClass{column-left-top} @divClass{keep-bullets} -@helpusTasks +@helpusSimple @divEnd @divEnd @divClass{column-right-top} -@helpusProjects +@helpusAdvanced @divEnd +@node Sponsor +@unnumberedsec Sponsor +@translationof Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading Remunerazioni + +In passato, + +@itemize +@item alcuni utenti hanno pagato per avere nuove funzionalità +@item alcuni sviluppatori hanno aggiunto nuove funzionalità a pagamento +@end itemize + +Il progetto LilyPond non coordina queste iniziative; non appoggiamo +né scoraggiamo tali accordi. Qualsiasi contratto tra individui +privati è affar loro, non nostro. + +@divEnd + +@divClass{column-right-top} +@subheading Linee guida + +Gli utenti che desiderano offrire del denato in cambio di lavoro devono +tenere a mente i seguenti punti: + +@itemize +@item +Gli sviluppatori di LilyPond talvolta pubblicizzano i propri servizi sulle +liste email di lilypond. + +@item +Qualsiasi accordo tra singoli individui deve includere le normali +precauzioni da prendere quando si conduce un affare: chi paga, quanto +paga, con quale metodo di pagamento e in base a quali +condizioni. Suggeriamo di risolvere qualsiasi ambiguità o incertezza +su tali questioni prima che il lavoro inizi. + +@end itemize + +@divEnd + +@divClass{column-center-bottom} +@subheading Sviluppatori interessati + +Di seguito riportiamo una lista di persone interessate a lavorare +dietro remunerazione. Si noti che la quantità di lavoro fatto da parte dei +singoli varia nel corso degli anni. Non garantiamo che questa lista +sia aggiornata, né che le persone qui elencate abbiano particolari +abilità. L'unico criterio è "XYZ ha chiesto di essere +inserito in questa pagina". + +Un buon modo per sapere quali sono gli sviluppatori più attivi e preparati +è guardare la storia del repository git. Statistiche fino alla versione +@versionDevel{}: + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, storia complessiva} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, ultimo anno} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, ultimi tre mesi} +@end multitable + +Sviluppatori interessati: +@table @asis +@item @email{dak@@gnu.org, David Kastrup} +Le remunerazioni sono necessarie per poter continuare il mio lavoro a tempo +pieno su LilyPond. Mi occupo in particolare di progettazione, coerenza, +implementazione, semplificazione, documentazione e debug dell'interfaccia +utente e programmatore. + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + + @node Sviluppo @unnumberedsec Sviluppo @translationof Development @@ -478,10 +632,9 @@ di usare il @ref{Download, download per la versione stabile}, e leggere i @subheading Numeri di versione LilyPond viene distribuito in due versioni: la versione stabile e quella -di sviluppo o instabile. Le versioni stabili hanno un numero pari -per numero di versione @q{minore} (e.g., 2.8, 2.10, 2.12). -Le versioni di sviluppo hanno un numero dispari per numero di versione -@q{minore} (e.g., 2.7, 2.9, 2.11). +di sviluppo o instabile. Le versioni stabili hanno un numero di versione +@q{minore} pari (per esempio 2.8, 2.10, 2.12). Le versioni di sviluppo +hanno un numero di versione @q{minore} dispari (per esempio 2.7, 2.9, 2.11). @divEnd @@ -708,6 +861,166 @@ manuali sono reperibili su @url{http://lilypond.org}} @divEnd +@node GSoC 2012 +@unnumberedsec GSoC 2012 +@translationof GSoC 2012 + +@divClass{column-center-top} +@subheading Che cos'è il Google Summer of Code? + +È un programma internazionale organizzato da Google che offre agli studenti +degli stipendi per lavorare a progetti di software libero durante le +vacanze estive. + +Il team di LilyPond ha deciso che si tratta di un'ottima opportunità per trovare +nuovi collaboratori e stimolare gli studenti che già partecipano allo sviluppo di +LilyPond ad essere più coinvolti. Uno dei nostri sviluppatori è stato accettato +per l'edizione 2012 sotto l'egida del @uref{http://www.gnu.org/, progetto GNU}; +speriamo di partecipare anche a future edizioni. + +@divEnd + +@divClass{column-center-bottom} +@subheading La nostra lista delle idee per il 2012 + +Ecco una lista di progetti che suggeriamo per gli studenti del GSoC 2012. +Sebbene il periodo delle domande sia finito, abbiamo deciso di tenere questa +pagina online come fonte di ispirazione per chiunque sia interessato a +contribuire allo sviluppo di LilyPond. +Alcuni membri del team di sviluppo sono disponibili a aiutare chi volesse +affrontare questi progetti. + +Ci sono certamente molte altre cose da migliorare in LilyPond, inclusi +progetti molto piccoli. Una lista completa di tutti i problemi si trova +@uref{http://code.google.com/p/lilypond/issues/list, qui}. + +@subheading Abbellimenti + +Correggere i problemi di sincronizzazione degli abbellimenti, +insieme a tutta l'architettura sottostante (si veda il +@uref{http://code.google.com/p/lilypond/issues/detail?id=34, numero 34 del nostro tracker}). +Gli abbellimenti confondono il tempo di LilyPond perché è come se portassero +indietro il tempo. Questo causa strani effetti, specialmente quando un rigo +ha un abbellimento e l'altro non ce l'ha. + +@strong{Difficoltà:} media + +@strong{Requisiti:} C++, MIDI + +@strong{Consigliato:} familiarità col funzionamento interno di LilyPond + +@strong{Mentore/i:} Mike Solomon, Carl Sorensen + +@subheading MusicXML + +Aggiungere un'esportazione a MusicXML completa e migliorare l'importazione, +insieme a dei test che verifichino il funzionamento. A seconda del tempo a +disposizione, implementare alcune o tutte le seguenti funzionalità: + +@divClass{keep-bullets} +@itemize + +@item +Gestire l'esportazione del contenuto musicale principale come l'esportazione +MIDI (ovvero usando classi dedicate dell'esportatore, derivate dalla classe +del traduttore) + +@item +Costruire l'albero XML del contenuto musicale di base, +aggiungere un collegamento dall'evento musicale al tag XML + +@item +Far sì che tutti gli incisori di LilyPond facciano il loro lavoro + +@item +Aggiungere la capacità di collegare ogni oggetto dell'output +(in pratica ogni stampo (stencil) / gruppo di stampi) alla sua causa musicale +(e quindi al tag XML nell'albero XML) + +@item +Aggiungere un backend di outoput XML, che possa aggiungere le informazioni di +formattazione per ogni oggetto di output ai tag XML + +@end itemize +@divEnd + +L'obiettivo sarà considerato raggiunto quando una partitura (scelta precedentemente) +può essere importata da MusicXML e riesportata senza una perdita di dati +indesiderata. + +@strong{Difficoltà:} media + +@strong{Requisiti:} MusicXML, Python, conoscenza di base di LilyPond + +@strong{Mentore/i:} Reinhold Kainhofer, Mike Solomon + +è auspicabile una certa familiarità con altri software di notazione musicale (a +fine comparativo). + +@subheading Migliorare le legature di portamento e di valore + +La forma predefinita delle curve delle legature di portamento e di valore è spesso +non soddisfacente. Non sono supportate né le legature di valore su note +enarmoniche @code{@{ cis'~ des' @}} né le legature di valore "spezzate" da +una chiave o da un cambio di rigo. Il progetto include la raccolta e la classificazione +di esempi di output scadente, la decisione sull'output desiderato e la scrittura +del codice vero e proprio. + +@strong{Difficoltà:} difficile + +@strong{Requisiti:} C++, esperienza con la scrittura di euristica + +@strong{Conoscenze consigliate:} conoscenza di LilyPond, senso estetico + +@strong{Mentore/i:} Mike Solomon + +@subheading Aggiungere una variante speciale dei glifi dei tipi di carattere +Aggiungere varianti sulla linea del rigo, tra le linee dei righi, più corte e +più strette di alcuni glifi, come ad esempio le alterazioni, insieme a un'infrastruttura +generica per supportarle. Un esempio è la testa della nota breve nella notazione +antica che ha due varianti, con un buco più piccolo e più grande. + +@strong{Difficoltà:} facile + +@strong{Requisiti:} MetaFont, C++, buon occhio per il dettaglio + +@strong{Conoscenze consigliate:} conoscenza di base di LilyPond + +@strong{Mentore/i:} Werner Lemberg + +@subheading Migliorare la disposizione delle travature + +Il posizionamento predefinito delle travature normali, tra i righi, spezzate e angolari +deve essere migliorato. La disposizione delle travature deve dipendere dal contesto +e dalle note vicine (si veda la +@uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, sezione 2.2 qui}). +Se possibile, ridurre il tempo di elaborazione della disposizione delle travature. + +@strong{Difficoltà:} media + +@strong{Requisiti:} C++, esperienza con la scrittura di euristiche + +@strong{Conoscenze consigliate:} senso estetico + +@strong{Mentore/i:} Mike Solomon, Carl Sorensen + +@subheading Semplificare vari avvisi durante la compilazione + +Semplificare gli avvisi del compilatore e di valgrind e l'analisi del codice statico. +Strumenti di analisi automatica del codice (avvisi in @code{g++} e @code{clang}) +e strumenti di analisi come il rilevamento di perdite di memoria di valgrind e +i profilatori di codice di callgrind forniscono informazioni utili per individuare +possibili errori nel codice C++. +Pulire questi avvisi ci permetterebbe di rifiutare automaticamente qualsiasi +patch che introduca avvisi ulteriori. + +@strong{Difficoltà:} media + +@strong{Requisiti:} C++ + +@strong{Mentore/i:} Joe Neeman, Reinhold Kainhofer + +@divEnd @node Autori @@ -813,7 +1126,6 @@ manuali sono reperibili su @url{http://lilypond.org}} @divClass{column-center-bottom} - @subheading Cosa altri hanno fatto con LilyPond @divClass{keep-bullets} @@ -829,6 +1141,67 @@ manuali sono reperibili su @url{http://lilypond.org}} @unnumberedsec Notizie vecchie @translationof Old news +@divClass{heading-center} +@warning{Molti dei vecchi annunci e changelog si possono trovare +in @ref{Soffitta}} +@divEnd + @include web/news-front.itexi @include web/news.itexi + + +@node Soffitta +@unnumberedsec Soffitta +@translationof Attic + +@divClass{column-center-top} +@subheading Annunci + +Annunci e notizie ordinati per versione: +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14} +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +Elenco descrittivo dei cambiamenti per ogni versione: ++@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, ++@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, ++@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, ++@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, ++@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, ++@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, ++@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, ++@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, ++@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, ++@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, ++@miscLink{NEWS-1.4,v1.4}, ++@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading Changelog + +Changelog degli sviluppatori per ogni versione: +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/it/web/download.itexi b/Documentation/it/web/download.itexi index 98d056084f..26908b9da5 100644 --- a/Documentation/it/web/download.itexi +++ b/Documentation/it/web/download.itexi @@ -1,6 +1,6 @@ -@c -*- coding: utf-8; mode: texinfo; -*- +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2 + Translation of GIT committish: 9d3a999b3ae3502633858c50185c0180949d405c When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -201,12 +201,20 @@ sh lilypond-@versionStable{}-SISTEMA-OPERATIVO.sh @subsubheading Disinstallazione -Digita in un terminale: +Digita nel terminale: @example uninstall-lilypond @end example +@subsubheading Aiuto + +Digita nel terminale: + +@example +sh lilypond-@versionStable{}-OS-TYPE.sh --help +@end example + @divEnd @@ -230,22 +238,22 @@ aggiornare a queste versioni. @item @sourceimage{logo-fedora,,,} @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447, -Fedora: LilyPond 2.12.3} +Fedora: LilyPond 2.14.2} @item @sourceimage{logo-ubuntu,,,} @uref{http://packages.ubuntu.com/search?keywords=lilypond, -Ubuntu: LilyPond 2.12.2} +Ubuntu: LilyPond 2.14.2} @item @sourceimage{logo-slackware,,,} @uref{http://www.johannes-schoepfer.de/lilypond/, -Slackware: LilyPond 2.12.3} +Slackware: LilyPond 2.14.2} @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,,,} @@ -291,11 +299,15 @@ Si riconoscono il copyright e i marchi di tutti i loghi e le immagini dei prodot Per MacOS X 10.4 o superiori, con processore Intel (se hai dei dubbi, usa questo). +MacOS X 10.7 Lion non è ancora supportato. + @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC Per MacOS X 10.4 o superiori, con processori G3 e G4 (vecchi computer Apple). +MacOS X 10.7 Lion non è ancora supportato. + @end itemize @subsubheading Installazione @@ -343,6 +355,7 @@ Crea un file chiamato @command{lilypond} che contiene @divClass{h-scroll-auto} @example +#!/bin/bash exec @var{DIR}/LilyPond.app/Contents/Resources/bin/lilypond "$@@" @end example @divEnd @@ -509,7 +522,7 @@ che contiene i file eseguibili di LilyPond, in questo modo: [@var{pre-set paths}];@var{DIR}\LilyPond\usr\bin @end example -@warning{@var{DIR} generalmente è @code{C:\Program Files}.} +@warning{@var{DIR} generalmente è @code{C:@bs{}Program Files}.} @noindent e clicca il bottone @qq{OK} per chiudere la finestra. diff --git a/Documentation/it/web/introduction.itexi b/Documentation/it/web/introduction.itexi index d0fe234fa2..327a8be588 100644 --- a/Documentation/it/web/introduction.itexi +++ b/Documentation/it/web/introduction.itexi @@ -1,6 +1,6 @@ -@c -*- coding: utf-8; mode: texinfo; -*- +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: cd0fa693cd2297298aabfdc2d2d9d8b0d7746a5c + Translation of GIT committish: d8d7985d6027b374744a7c88250b856c4ef7e619 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -430,7 +430,7 @@ spiegando come usare queste funzionalità -- possiamo raggiungere il nostro obiettivo usando solo una frazione dello sforzo individuale. @item -@qq{Cultura del dono}: il movimento del Software Libero (o @qq{Open Source}) +@qq{Cultura del dono}: il movimento del Software Libero ha creato vari grandi progetti software, come @uref{http://kernel.org/, GNU/Linux}, @uref{http://www.getfirefox.com/, Mozilla Firefox}, e @@ -439,7 +439,7 @@ tratto vantaggio da questi progetti, alcuni sviluppatori vogliono @qq{dare in cambio} qualcosa alla comunità. @item -Esperienza di lavoro: contribuire a progetti open source è un ottimo modo +Esperienza di lavoro: contribuire a progetti di software libero è un ottimo modo per esercitarsi nel programmare, scrivere la documentazione, o progettare. Questa esperienza ha aiutato alcuni sviluppatori ad ottenere offerte di lavoro o borse di studio. @@ -498,13 +498,37 @@ In evidenza: @itemize @item -@emph{Affaire étrangère}, un opera di -@uref{http://valentin.villenave.net/,Valentin Villenave} -basata su un libretto francese di -@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis -Trondheim}. La prima rappresentazione ha avuto luogo il 1 Febbraio 2009 presso -@uref{http://www.orchestre-montpellier.com/, L'Opéra National di -Montpellier}, Francia. +@emph{Pictures at an exhibition} di Mussorgsky, riorchestrata e diretta +da @uref{http://www.aurelienbello.com/,Aurélien Bello} con +la @uref{http://www.junge-philharmonie-brandenburg.de/,Junge Philharmonie Brandenburg} +il 10 Ottobre 2011 e di nuovo il 15-16 Aprile 2012. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, compositore e +direttore musicale. Le sue opere recenti sono: @emph{Go Thy Way}, +eseguita da @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} nel Marzo 2012; @emph{Just Out of Reach Suite} +eseguita dal +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Chrysalis Duo} ; @emph{thrafsmata} eseguita nel Luglio 2011 dal +@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh +New Music Ensemble}. + +@item +@emph{Anonymous Student Compliment or Complaint}, di +@uref{http://www.mikesolomon.org, Mike Solomon}, che ha vinto il +@uref{http://leftcoastensemble.org/contest, Left Coast Composition Contest del 2011}, +a cui hanno partecipato 172 opere provenienti da 22 paesi. +Altre opere comprendono Norman (age 1) per clarinetto solo, eseguita all'Electroacoustic +Music Festival (FEMF) della @uref{http://emu.music.ufl.edu/fems_concerts.html, University of Florida} +nell'Ottobre 2010. + +@item +Edizione moderna della @emph{Serenata Erminia} di Alessandro Scarlatti, +curata da Thomas Griffin, Musicologo (Roma, Italia). Eseguita il 22 +Ottobre 2010 presso la Galleria di Palazzo Zevallos Stigliano, Napoli, +Italia. @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}, +per celebrare il 350° compleanno del compositore. @item Esecuzione dell' @emph{Armide} di Lully da parte della @@ -518,6 +542,15 @@ la St. James's Church a Manhattan, 8 Maggio 2009, di Frederick Renz e il suo complesso @uref{http://www.earlymusicny.org/, Early Music New York} (spartiti realizzati da Nicolas Sceaux). +@item +@emph{Affaire étrangère}, un opera di +@uref{http://valentin.villenave.net/,Valentin Villenave} +basata su un libretto francese di +@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis +Trondheim}. La prima rappresentazione ha avuto luogo il 1 Febbraio 2009 presso +@uref{http://www.orchestre-montpellier.com/, L'Opéra National di +Montpellier}, Francia. + @end itemize @divEnd @@ -576,7 +609,19 @@ nostro @ref{Input testuale}. @itemize @item -May 2010 +Aprile 2011 + +@uref{http://www.linux-magazine.com,Linux Magazine} pubblica un +articolo intitolato +@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf, +Projects on the Move}. È un articolo introduttivo a MuseScore, +LilyPond e Chordii. L'autrice Carla Schroder afferma @qq{LilyPond è un +programma a linea di comando, ma non lasciatevi spaventare dalla mancanza +dell'interfaccia grafica; LilyPond è facile da usare e da imparare}, e fornisce +anche un esempio pratico. + +@item +Maggio 2010 Peter Kirn, sul sito Create Digital Music, pubblica una @uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,recensione @@ -591,7 +636,7 @@ La rivista tedesca LinuxUser ha scritto un articolo su LilyPond}. @item -August 2009 +Agosto 2009 Ann Drinan, sul sito @uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org}, presenta @@ -599,7 +644,7 @@ i commenti di due bibliotecari di un'orchestra che parlano dell'uso del software per gestire le loro biblioteche. @item -June 2009 +Giugno 2009 In un @uref{http://news.lilynet.net/Free-Music-Now, articolo} pubblicato nella rivista annuale francese @emph{National Conservatory Parent @@ -639,7 +684,7 @@ Kris Shaffer commenta @qq{GNU Lilypond genera una grafica splendida che fa sembrare le alternative commerciali di second'ordine.} @item -August 20, 2005 +20 Agosto 2005 La rivista belga De Standaard fa un'indagine sulle motivazioni degli autori di Software Libero in un articolo intitolato @@ -661,9 +706,9 @@ Ottobre 2004 Gli editor di Computer!Totaal, una rivista olandese di computer, nel numero di Ottobre 2004 -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, descrivono LilyPond} come: @qq{Meraviglioso software -libero (open source) [..] Gli spartiti prodotti da +libero [..] Gli spartiti prodotti da LilyPond sono incredibilmente belli [..] un sistema molto potente che può fare praticamente qualsiasi cosa.} @@ -904,8 +949,8 @@ inseriti con barre inverse (backslash). @imageFloat{text-input-1-annotate-it,png,center} @imageFloat{text-input-1-output,png,center} -Le alterazioni si ottengono con nomi diversi: si aggiunge @code{-is} per -il diesis, e @code{-es} per il bemolle (questi sono i nomi delle note in +Le alterazioni si ottengono con nomi diversi: si aggiunge @w{@code{-is}} per +il diesis, e @w{@code{-es}} per il bemolle (questi sono i nomi delle note in olandese, ma sono disponibili altre lingue). LilyPond calcola dove mettere le alterazioni. @@ -993,6 +1038,15 @@ ancora convinto? Leggi a proposito dell' @ref{Editing facilitato}. @unnumberedsec Editing facilitato @translationof Easier editing +@ignore +GNU policy forbids us from linking to non-Free software, so don't +add such links. + +In particular, don't link to: +- the LilyPond bundle for TextMate (a commercial editor for MacOS). + +@end ignore + @divClass{column-center-top} @subheading LilyPondTool @@ -1023,13 +1077,13 @@ facilmente, e un lettore di PDF incorporato con supporto avanzato al punta-e-cli @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} -Frescobaldi è un editor di testo e musica progettato per LilyPond. Ha un -lettore PDF incorporato, una potente procedura guidata per la creazione di -partiture e molte funzionalità di scrittura. È basato sulle librerie KDE4 -e attualmente gira su tutte le distro Linux e altri sistemi operativi UNIX. +Frescobaldi è un editor di testo e musica leggero ma potente; è progettato +specificamente per LilyPond e ha un lettore PDF incluso. È facile da usare +e funziona su tutti i principali sistemi operativi (Linux, Mac OS X e Windows). @divEnd @@ -1044,17 +1098,17 @@ e attualmente gira su tutte le distro Linux e altri sistemi operativi UNIX. @uref{http://denemo.org} -Denemo è un editor grafico che genera codice sorgente LilyPond, -nella versione 2.8.7, e permette anche la riproduzione audio. Consente -agli utenti di vedere il codice sorgente LilyPond in parallelo alla -visualizzazione grafica. Modifiche manuali del codice possono essere attaccate a note, -accordi etc. e vengono salvate nel file di Denemo, così che gli utenti possano -continuare a modificare il documento tramite l'interfaccia grafica. +Denemo è un editor grafico che genera codice sorgente LilyPond +e permette anche la riproduzione audio. Consente agli utenti di vedere +il codice sorgente LilyPond in parallelo alla visualizzazione grafica. Modifiche +manuali del codice possono essere attaccate a note, accordi etc. e vengono +salvate nel file di Denemo, così che gli utenti possano continuare a +modificare il documento tramite l'interfaccia grafica. Se si muove il cursore nel codice LilyPond si muove anche il cursore nella visualizzazione grafica, e qualsiasi errore di sintassi nelle tue modifiche manuali al codice LilyPond viene evidenziato nella visualizzazione testuale -quando stampi da lì. +quando elaborato da lì. @divEnd @@ -1088,7 +1142,7 @@ Vim, allora probabilmente vorrai usare un editor diverso per scrivere i file di input di LilyPond. Puoi trovare maggiori informazioni sulla configurazione di Emacs e Vim in -@rprogram{Text editor support}. +@rprogram{LilyPond e gli editor di testo}. @sourceimage{logo-macosx,,,} @@ -1102,16 +1156,6 @@ usando le estensioni disponibili presso: @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example -@sourceimage{logo-macosx,,,} -Esiste un bundle LilyPond per TextMate, un editor commerciale per MacOS. -Può essere installato eseguendo questi comandi: - -@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 @@ -1124,8 +1168,9 @@ git clone http://github.com/textmate/lilypond.tmbundle.git @itemize @item -@uref{http://www.rosegardenmusic.com,Rosegarden}, un sequencer audio -e MIDI, che ha anche un editor per le partiture con un solo rigo. +@uref{http://www.canorus.org,Canorus}, un editor di partiture, può anche +esportare in formato LilyPond, ma è un software ancora in beta. Gli utenti +che vogliono provarlo sono benvenuti. @item @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, @@ -1134,28 +1179,33 @@ un editor di partiture basato sulla libreria l'esportazione in formato LilyPond. @item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, un editor e riproduttore multitraccia -per tablatura, include un visualizzatore della partitura e può esportare +@uref{http://www.musescore.org,MuseScore}, un editor di partiture, ha un'esportazione +in formato LilyPond incompleta ma è in attivo sviluppo. + +@item +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY} è un programma scritto in C# che converte una canzone di NoteWorthy +@c @uref{http://www.noteworthysoftware.com/,NoteWorthy} in formato LilyPond. @item -@uref{http://www.musescore.org,MuseScore}, un editor di partiture, ha un'esportazione -in formato LilyPond incompleta ma è in attivo sviluppo. +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple} è un programma che aiuta a creare partiture e parti; include un +modo per mischiare insieme opere musicali diverse in una singola partitura +o parte. @item -@uref{http://www.canorus.org,Canorus}, un editor di partiture, può anche -esportare in formato LilyPond, ma è un software ancora in beta. Gli utenti -che vogliono provarlo sono benvenuti. +@uref{http://www.rosegardenmusic.com,Rosegarden}, un sequencer audio +e MIDI, che ha anche un editor per le partiture con un solo rigo. @item -@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, un convertitore +@uref{https://launchpad.net/rumor/,Rumor}, un convertitore realtime monofonico da MIDI a LilyPond. @item -@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, -NW2LY} è un programma scritto in C# che converte una canzone di -@uref{http://www.noteworthysoftware.com/, NoteWorthy} in formato -LilyPond. +@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, un editor e riproduttore +multitraccia per tablatura, include un visualizzatore della partitura e può +esportare in formato LilyPond. @end itemize @@ -1189,8 +1239,8 @@ ambiente costruito sul linguaggio di programmazione a vincoli @itemize @item -@uref{http://lilykde.googlecode.com/,LilyKDE} è stato sosituito da -@uref{http://www.frescobaldi.org/,Frescobaldi}, e esiste soltanto come +@uref{http://lilykde.googlecode.com/,LilyKDE} è stato sostituito da +@uref{http://www.frescobaldi.org/,Frescobaldi}; esiste soltanto come LilyKDE3 per KDE 3.5 e lilypond-KDE4 per KDE 4.1. @item diff --git a/Documentation/it/web/manuals.itexi b/Documentation/it/web/manuals.itexi index cae713fd7f..23c77980ee 100644 --- a/Documentation/it/web/manuals.itexi +++ b/Documentation/it/web/manuals.itexi @@ -1,6 +1,6 @@ -@c -*- coding: utf-8; mode: texinfo; -*- +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2 + Translation of GIT committish: c7175b7e8387655964d9c9a975e9789fe581043c When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -41,21 +41,21 @@ LilyPond è un compositore tipografico musicale @strong{basato su testo}. Leggi prima questo! @item -@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}} +@ifWebLinks{@manualStableLearningSplitNoName-it,@rlearningnamed{Top,Apprendimento}} un'introduzione a LilyPond leggera e @qq{imprescindibile}. -@details{Learning} +@details{Apprendimento} @item -@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}} +@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossario}} @emph{(lettura opzionale)} termini musicali e traduzioni. -@details{Glossary} +@details{Glossario} @item -@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}} +@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Saggio}} @emph{(lettura opzionale)} informazioni sull'incisione realizzata dal computer. -@details{Essay} +@details{Saggio} @end itemize @@ -67,17 +67,17 @@ informazioni sull'incisione realizzata dal computer. @itemize -@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notation}} +@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notazione}} guida alla sintassi. -@details{Notation} +@details{Notazione} -@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Usage}} +@item @ifWebLinks{@manualStableUsageSplitNoName-it,@rprogramnamed{Top,Uso}} eseguire i programmi. -@details{Usage} +@details{Uso} -@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}} +@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Frammenti}} brevi trucchi e consigli. -@details{Snippets} +@details{Frammenti} @end itemize @@ -96,17 +96,17 @@ Domande frequenti (Frequently Asked Questions). questo documento. @details{Web} -@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}} +@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Cambiamenti}} cosa c'è di nuovo? -@details{Changes} +@details{Cambiamenti} -@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}} +@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Estendere}} tweak interessanti. -@details{Extending} +@details{Estendere} -@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}} +@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Funzionamento interno}} guida ai tweak. -@details{Internals} +@details{Funzionamento interno} @end itemize @@ -118,11 +118,16 @@ guida ai tweak. @itemize +@item +@ref{Tutti}: +versioni stabili precedenti e quella attuale in un archivio compresso. + @item @ref{Tradotti}: stato delle traduzioni per i lettori di lingua non inglese. -@item @ref{Tutti}: -manuali vecchi e scaricabili. +@item +@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}: +esempi, consigli e trucchi creati dagli utenti. @item @ref{Sviluppo}: manuali per la versione non stabile. @@ -145,11 +150,11 @@ License. * Saggio:: Saggio. * Notazione:: Riferimento. * Uso:: Utilizzo. -* Frammenti di codice:: Frammenti di codice. +* Frammenti:: Frammenti di codice. * FAQ:: FAQ. * Web:: Web. * Cambiamenti:: Novità. -* Estensioni:: Programmazione. +* Estendere:: Programmazione. * Funzionamento interno:: Funzionamento interno. * Tradotti:: Traduzione. * Tutti:: Tutti i manuali. @@ -183,8 +188,8 @@ e seguire questi riferimenti incrociati per maggiori informazioni. @divClass{column-right-bottom} -@docLinks{Learning, learning, - @rlearningnamed{Top,Learning}, +@docLinks{Apprendimento, learning, + @rlearningnamed{Top,Apprendimento}, @manualStableLearningSplit, @manualStableLearningBig, 1.5 MB, @manualStableLearningPdf, 3 MB} @@ -208,8 +213,8 @@ si raccomanda vivamente di consultare il glossario. @divClass{column-right-bottom} -@docLinks{Music glossary, music-glossary, - @rglosnamed{Top,Music glossary}, +@docLinks{Glossario musicale, music-glossary, + @rglosnamed{Top,Glossario musicale}, @manualStableGlossarySplit, @manualStableGlossaryBig, 1 MB, @manualStableGlossaryPdf, 1.5 MB} @@ -235,8 +240,8 @@ nella versione PDF a causa della sua maggiore risoluzione.} @divClass{column-right-bottom} -@docLinks{Essay, essay, - @ressaynamed{Top,Essay}, +@docLinks{Saggio, essay, + @ressaynamed{Top,Saggio}, @manualStableEssaySplit, @manualStableEssayBig, 2 MB, @manualStableEssayPdf, 2.5 MB} @@ -262,8 +267,8 @@ musicali inglesi presentati nel Glossario.} @divClass{column-right-bottom} -@docLinks{Notation, notation, - @rusernamed{Top,Notation}, +@docLinks{Notazione, notation, + @rusernamed{Top,Notazione}, @manualStableNotationSplit, @manualStableNotationBig, 7 MB, @manualStableNotationPdf, 18 MB} @@ -276,7 +281,7 @@ musicali inglesi presentati nel Glossario.} @translationof Usage @divClass{column-left-top} -@subheading Usage manual +@subheading Manuale d'uso Questo libro spiega come eseguire i programmi, come integrare la notazione di LilyPond in altri programmi, e suggerisce le @qq{migliori @@ -287,21 +292,21 @@ intraprendere un progetto impegnativo. @divClass{column-right-bottom} -@docLinks{Usage, usage, - @rprogramnamed{Top,Usage}, +@docLinks{Uso, usage, + @rprogramnamed{Top,Uso}, @manualStableUsageSplit, - @manualStableUsageBig, 300 KB, - @manualStableUsagePdf, 400 KB} + @manualStableUsageBig, 400 KB, + @manualStableUsagePdf, 600 KB} @divEnd -@node Frammenti di codice -@unnumberedsec Frammenti di codice +@node Frammenti +@unnumberedsec Frammenti @translationof Snippets @divClass{column-left-top} -@subheading Frammenti di codice +@subheading Frammenti Questo manuale presenta una selezione di frammenti di codice LilyPond tratti dal @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository} @@ -319,8 +324,8 @@ ha un collegamento alla lista dei relativi frammenti di codice. @divClass{column-right-bottom} -@docLinks{Snippets, snippets, - @rlsrnamed{Top,Snippets}, +@docLinks{Frammenti, snippets, + @rlsrnamed{Top,Frammenti}, @manualStableSnippetsSplit, @manualStableSnippetsBig, 2.5 MB, @manualStableSnippetsPdf, 8 MB} @@ -343,7 +348,7 @@ Per usare LilyPond devi scrivere musica in formato testo. Leggi cosa @subsubheading C'è un sacco di documentazione! Devo leggerla? -Devi leggere @ref{Learning, il Manuale di Apprendimento}. Per quanto +Devi leggere il @ref{Learning, Manuale di Apprendimento}. Per quanto riguarda il resto della documentazione, puoi leggere solo le sezioni sul tipo di notazione che vuoi creare. @@ -351,7 +356,7 @@ sul tipo di notazione che vuoi creare. @subsubheading C'è ancora molto da leggere! Ne vale la pena? Tocca a te decidere; le ragioni per cui potresti voler usare -LilyPond sono esposte nell' @ref{Introduzione}. +LilyPond sono esposte nell'@ref{Introduzione}. @divEnd @@ -360,12 +365,12 @@ LilyPond sono esposte nell' @ref{Introduzione}. @subsubheading Qualcosa non funziona! Come posso risolvere? -Questo viene spiegato in @rprogram{Troubleshooting}. +Questo viene spiegato in @rprogram{Risoluzione dei problemi}. @subsubheading Perché cambiate la sintassi? -Questo viene spiegato in @rprogram{Why does the syntax change?}. +Questo viene spiegato in @rprogram{Perché la sintassi cambia?}. @divEnd @@ -419,8 +424,8 @@ funzionalità di LilyPond rispetto alla versione stabile precedente. @divClass{column-right-bottom} -@docLinks{Changes, changes, - @rchangesnamed{Top,Changes}, +@docLinks{Cambiamenti, changes, + @rchangesnamed{Top,Cambiamenti}, @manualStableChangesSplit, @manualStableChangesBig, 6 KB, @manualStableChangesPdf, 200 KB} @@ -428,8 +433,8 @@ funzionalità di LilyPond rispetto alla versione stabile precedente. @divEnd -@node Estensioni -@unnumberedsec Estensioni +@node Estendere +@unnumberedsec Estendere @translationof Extending @divClass{column-left-top} @@ -442,8 +447,8 @@ funzionalità di LilyPond. @divClass{column-right-bottom} -@docLinks{Extending, extending, - @rextendnamed{Top,Extending}, +@docLinks{Estendere, extending, + @rextendnamed{Top,Estendere}, @manualStableExtendingSplit, @manualStableExtendingBig, 200 KB, @manualStableExtendingPdf, 400 KB} @@ -475,8 +480,8 @@ che si riferisce alla documentazione generata. @divClass{column-right-bottom} -@docLinks{Internals, internals, - @rinternalsnamed{Top,Internals}, +@docLinks{Funzionamento interno, internals, + @rinternalsnamed{Top,Funzionamento interno}, @manualStableInternalsSplit, @manualStableInternalsBig, 2.5 MB, @manualStableInternalsPdf, 2.8 MB} diff --git a/Documentation/it/web/news-front.itexi b/Documentation/it/web/news-front.itexi deleted file mode 100644 index 4f31bd80db..0000000000 --- a/Documentation/it/web/news-front.itexi +++ /dev/null @@ -1,70 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- -@ignore - Translation of GIT committish: 61fed596442d47e96c10ac3c9c0c696e5dfd22cf - - 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 This file is part of lilypond-web.texi and community.itexi - -@c when you add a new item, consider moving the lowest item(s) -@c into news-old.itexi. - -@c keep two blank lines between news entries - -@c used for news about the upcoming release; see CG 10.2 - - -@newsItem -@subsubheading Rilasciato LilyPond 2.13.40! @emph{21 Novembre 2010} - -Siamo felici di annunciare il rilascio di LilyPond 2.13.40. Questo -rilascio contiene come sempre un certo numero di correzioni. Tuttavia rimangono -ancora alcuni problemi critici: questo rilascio è dunque destinato solo -agli sviluppatori. - -Si noti che questa @strong{non} è la seconda versione beta test. A causa di -varie modifiche non verificate al processo di compilazione, non possiamo essere -del tutto sicuri della qualità di questo rilascio. - -@newsEnd - - -@newsItem -@subsubheading Prima versione beta test della 2.14 -- Rilasciato LilyPond 2.13.39! @emph{15 Novembre 2010} - -LilyPond 2.13.39 è disponibile; questa è la prima beta test della prossima -versione stabile, la 2.14. Si invitano gli utenti a provare questa -versione. Le nuove funzionalità introdotte rispetto alla versione 2.12.3 sono -elencate nel manuale @qq{Changes} della sezione del sito sullo -@ref{Sviluppo}. - -Ci sono ancora alcuni problemi critici in questo rilascio: la -spaziatura verticale è sospetta in due casi, e lilypond può -bloccarsi se l'input è strano. Se decidi di provare la 2.13.39, non -stupirti se incontrerai dei problemi, ma inviaci una cortese -@ref{Segnalazione bug}. - -@newsEnd - - -@newsItem -@subsubheading LilyPond Report #22. @emph{3 Novembre 2010} - -Il @emph{LilyPond Report} è tornato, con alcune sorprese ed esaltanti -notizie per tutta la comunità di LilyPond! In questo numero troverete -una lista completa e aggiornata di tutte le mailing list e i forum su -LilyPond in tutto il mondo. Inoltre, per la prima volta il nostro ospite -speciale è il co-fondatore e sviluppatore principale di LilyPond, -@strong{Jan Nieuwenhuizen}, che è stato impegnato negli ultimi tre mesi -- -continua a leggere per scoprire in cosa! - -@uref{http://news.lilynet.net/The-LilyPond-Report-22, Leggi il -LilyPond Report 22} ora; commenti e contributi sono ben accetti! - -@newsEnd - - - diff --git a/Documentation/ja/GNUmakefile b/Documentation/ja/GNUmakefile index e6e9466271..24cff45d25 100644 --- a/Documentation/ja/GNUmakefile +++ b/Documentation/ja/GNUmakefile @@ -1,10 +1,8 @@ ISOLANG = ja depth = ../.. SUBDIRS = web learning texidocs usage included notation -STEPMAKE_TEMPLATES = documentation +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root NO_PDF_FILES = 1 -EXTRA_DIST_FILES = web.texi - include $(depth)/make/stepmake.make diff --git a/Documentation/ja/dedication.itely b/Documentation/ja/dedication.itely index 6881627cc0..5a498bd5fc 100644 --- a/Documentation/ja/dedication.itely +++ b/Documentation/ja/dedication.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP diff --git a/Documentation/ja/included/generating-output.itexi b/Documentation/ja/included/generating-output.itexi index 7f0bb53ff0..dde1cd42b2 100644 --- a/Documentation/ja/included/generating-output.itexi +++ b/Documentation/ja/included/generating-output.itexi @@ -2,7 +2,7 @@ @c This file is part of web/download.itexi and @c learning/tutorial.itely @ignore - Translation of GIT committish: 063071aea23c225d488485c4b34722df18880638 + Translation of GIT committish: f7630a9232be374298d88e1b8bdb85ead17a7572 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -182,7 +182,7 @@ PDF ファイルを PDF ビュー他で閲覧している場合、 @c double \\ required because this is inside a macro! @example -\\version "@w{@version{}}" +\\version "@w{@versionStable{}}" @{ c' e' g' e' @} @@ -201,7 +201,7 @@ lilypond test.ly 以下のようなものが表示されます: @example -GNU LilyPond @w{@version{}} +GNU LilyPond @w{@versionStable{}} Processing `test.ly' Parsing... Interpreting music... @@ -210,6 +210,7 @@ Solving 1 page-breaking chunks...[1: 1 pages] Drawing systems... Layout output to `test.ps'... Converting to `./test.pdf'... +Success: compilation successfully completed @end example @subsubheading ステップ 3. 出力を閲覧する diff --git a/Documentation/ja/learning.tely b/Documentation/ja/learning.tely index bdcff5494d..d7782a2523 100644 --- a/Documentation/ja/learning.tely +++ b/Documentation/ja/learning.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: c028761d49ac4820206806dbc58e9704a87b4a8e + Translation of GIT committish: dadabdfc4537ef85adb9159d46eda5a0ff180835 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -20,7 +20,7 @@ @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2010 by the authors. +Copyright @copyright{} 1999--2012 by the authors. @end macro @set FDL diff --git a/Documentation/ja/learning/common-notation.itely b/Documentation/ja/learning/common-notation.itely index 085cf13722..44f77490e1 100644 --- a/Documentation/ja/learning/common-notation.itely +++ b/Documentation/ja/learning/common-notation.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: c028761d49ac4820206806dbc58e9704a87b4a8 + Translation of GIT committish: f7630a9232be374298d88e1b8bdb85ead17a7572 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" +@c \version "2.16.0" @ignore Tutorial guidelines: (different from policy.txt!) @@ -215,8 +215,8 @@ aes4 c b c 混乱してしまいましたか?@c 以下のように考えてみてください: あなたがピアノを弾いているとします。@c -黒鍵を押したいのであれば、音符名に @code{-is} や @code{-es} を付ける@c -必要があるのです! +黒鍵を押したいのであれば、音符名に @w{@code{-is}} や @w{@code{-es}} +を付ける必要があるのです! すべての変化を明示的に付け加えることは入力時にちょっとした努力を@c 要するかもしれません。@c @@ -890,7 +890,8 @@ r4 2 @lilypond[verbatim,quote,relative=2] r4 ~ 2 | -8[ ] \>[ ]\! | +8[ ] + 8\>[ ]\! | r4 8.\p 16( 4-. ) | @end lilypond @@ -1420,7 +1421,8 @@ aFivePaper = \paper @{ paperheight = 21.0 \cm @} @end example ファイルが処理されると、タイトルと作曲者は楽譜の上に譜刻されます。@c -タイトルについての更なる情報は、@ruser{Creating titles} を参照してください。 +タイトルについての更なる情報は、@ruser{Creating titles headers and footers} +を参照してください。 @node 絶対音符名 diff --git a/Documentation/ja/learning/fundamental.itely b/Documentation/ja/learning/fundamental.itely index 7d9a6b84d9..b5c44fcbe3 100644 --- a/Documentation/ja/learning/fundamental.itely +++ b/Documentation/ja/learning/fundamental.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: c028761d49ac4820206806dbc58e9704a87b4a8 + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -636,8 +636,7 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、 ボイス コンテキストが明示的に宣言されていない場合、この章の始めで@c 見てきたようにボイス コンテキストが 1 つ自動的に生成されます。@c オーボエなどといった楽器は同時に 1 つの音符だけを演奏できます。@c -そのような楽器のために書かれた音楽は単声であり、ボイスを 1 つだけを@c -必要とします。@c +そのような楽器のために書かれた楽譜はボイスを 1 つだけを必要とします。@c ピアノのように同時に複数の音符を演奏することができる楽器はしばしば、@c それらが演奏することのできる同時進行の異なる音符やリズムを@c エンコードするために、複数のボイスを必要とします。 @@ -677,8 +676,8 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、 ダブル バックスラッシュ @code{\\} で区切られなければなりません。@c ダブル バックスラッシュが無ければ、すべての音符は単一のボイスの中に挿入され、@c 通常はエラーとなります。@c -このテクニックは、大部分が単声であり、@c -時々短い部分で多声になる楽曲に特に適しています。 +このテクニックは、大部分が同じ音で、時々短い部分で多声になる楽曲に特に@c +適しています。 以下では、上記の例の和音を 2 つのボイスに分け、経過音とスラーを付け加えています: @@ -692,7 +691,6 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、 今度はもう 1 つ簡単な例を挙げてみます: - @lilypond[quote,verbatim,fragment,ragged-right,relative=2] \key d \minor % Voice "1" Voice "2" @@ -733,8 +731,12 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、 付け加えることによって、3 つかそれ以上のボイスを持たせることが可能です。 ボイス コンテキストは @code{"1"}, @code{"2"} などの名前を持ちます。@c -各コンテキストの中では、スラー、符幹、タイ、強弱記号などの@c -垂直方向の向きは適切にセットされます。 +最初の 2 つのコンテキストは @emph{外側} のボイスをセットして、@c +上のボイスはコンテキスト @code{"1"}、下のボイスはコンテキスト @code{"2"} +になります。@c +内側のボイスはコンテキスト @code{"3"} と @code{"4"} になります。@c +これらの各コンテキストでは、スラー、符幹、タイ、強弱記号などの垂直方向の@c +向きは適切にセットされます。 @lilypond[quote,verbatim,fragment] \new Staff \relative c' { @@ -856,16 +858,19 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、 << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } - \\ % No voice three - \\ % Voice four { % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 + \once \override NoteColumn #'ignore-collision = ##t + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ % No voice three + \\ % Voice four + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -903,16 +908,17 @@ A フラットは付点 4 分音符であり、F は 4 分音符、D フラッ } \\ % Voice two { \voiceTwoStyle - aes2 f4 fes + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'ignore-collision = ##t + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 } \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle - % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes } >> | 1 | @@ -930,7 +936,7 @@ A フラットは付点 4 分音符であり、F は 4 分音符、D フラッ \new Staff \relative c'' { \key aes \major << - { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des2 } + { c2 aes4. bes8 } \\ { 2 des } \\ { aes'2 f4 fes } >> 1 } @@ -954,10 +960,10 @@ A フラットは付点 4 分音符であり、F は 4 分音符、D フラッ << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } + { 2 des } \\ % Omit Voice three \\ % Voice four - { 2 des2 } + { aes'2 f4 fes } >> | 1 | } @@ -965,22 +971,19 @@ A フラットは付点 4 分音符であり、F は 4 分音符、D フラッ @noindent これにより符幹の向きが修正されました。@c -しかしながら、@c -複数のボイスを持つ場合にしばしば発生する問題に遭遇してしまいました --- あるボイスの中にある音符の符幹が他のボイスの中にある符頭と衝突しています。@c -音符をレイアウトするときに、LilyPond は 2 つのボイスの符幹の向きを@c -反対にすることによって 2 つのボイスの音符や和音が@c -同じ垂直方向の音符列に位置することを可能にします。@c -しかしながら、3 番目や 4 番目のボイスは符頭の衝突を避けるために@c -必要があれば移動させられます。@c -これは普通はうまくいきますが、この例では一番下のボイスの音符は@c -デフォルトの状態では明らかにうまくいっていません。@c -LilyPond は音符の水平方向位置を調節するためにいくつかの手段を提供します。@c -我々はまだこの問題を修正するための方法を見ていく準備が整っていないので、@c -この問題は後に残しておくことにします --- @ref{表記の重なりを修正する} の @code{force-hshift} プロパティを@c -参照してください。 +しかしながら、音符の水平方向の配置が望んだとおりになっていません。@c +内側の音符の符頭や符幹が外側のボイスと衝突する場合 LilyPond は内側の@c +音符の位置をずらしますが、これはピアノ譜では不適切です。@c +他の状況でも、LilyPond が音符の位置をずらしても衝突が解決されない場合が@c +あります。@c +LilyPond は音符の水平方向の位置を調節するための手段をいくつか提供します。@c +しかしながら、我々はまだこの問題を修正するための方法を見ていく準備が@c +整っていないので、この問題は後に残しておくことにします +-- @ref{Fixing overlapping notation} の @code{force-hshift} プロパティ@c +を参照してください。 +@warning{歌詞、スパナ (スラー、タイ、強弱のヘアピン記号など) をボイスを@c +@q{またいで} 作成することはできません。} @seealso 記譜法リファレンス: @@ -1007,7 +1010,7 @@ LilyPond は音符の水平方向位置を調節するためにいくつかの 多声部音楽を作成するためにボイス コンテキストを手動で @code{<< >>} ブロックの中に作成することもできます。@c 符幹、スラーなどの向きを示すために -@code{\voiceOne} ... @code{\voiceFour} を使用します。@c +@code{\voiceOne} @dots{} @code{\voiceFour} を使用します。@c この手法は各ボイスを別々にして、より記述的な名前を与えることを可能にするため、@c 長い楽譜ではわかりやすいものになります。 @@ -1095,7 +1098,7 @@ LilyPond は音符の水平方向位置を調節するためにいくつかの @lilypond[quote,ragged-right,verbatim] \new Staff \relative c' { \voiceOneStyle - % The following notes are monophonic + % This section is homophonic c16^( d e f % Start simultaneous section of three voices << @@ -1846,11 +1849,11 @@ LilyPond 入力ファイルに対する特別なサポートを持つ@c @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1861,11 +1864,11 @@ LilyPond 入力ファイルに対する特別なサポートを持つ@c @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1939,12 +1942,12 @@ like this: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -1990,7 +1993,7 @@ like this: \score { \new Staff { \relative c'' { - cis4 e d ces + cisis4 e d cis } } \layout { @@ -2009,12 +2012,12 @@ like this: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -3173,7 +3176,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { diff --git a/Documentation/ja/learning/preface.itely b/Documentation/ja/learning/preface.itely index 387a8852cd..c990c68e43 100644 --- a/Documentation/ja/learning/preface.itely +++ b/Documentation/ja/learning/preface.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: c028761d49ac4820206806dbc58e9704a87b4a8 + Translation of GIT committish: f7630a9232be374298d88e1b8bdb85ead17a7572 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP diff --git a/Documentation/ja/learning/templates.itely b/Documentation/ja/learning/templates.itely index 0a86faecc9..091ad9b7d7 100644 --- a/Documentation/ja/learning/templates.itely +++ b/Documentation/ja/learning/templates.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: fcec8015634fd7665b8df57b630994ba4919b12c 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -41,22 +41,22 @@ @appendixsubsec 音符のみ -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec 音符と歌詞 -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec 音符とコード -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec 音符、歌詞それにコード -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -66,38 +66,32 @@ @appendixsubsec ソロ ピアノ -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec ピアノと歌詞を持つ旋律 -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec 歌詞が中央に配置されたピアノ譜 -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-centered-lyrics.ly} -@appendixsubsec 強弱記号が中央に配置されたピアノ譜 - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -{piano-template-with-centered-dynamics.ly} - @node 弦楽四重奏 @appendixsec 弦楽四重奏 @translationof String quartet @appendixsubsec 弦楽四重奏 -@translationof String quartet -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec 弦楽四重奏パート -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -107,39 +101,39 @@ @appendixsubsec SATB ボーカル譜 -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec SATB ボーカル譜と自動ピアノ譜 -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} @appendixsubsec 整列されたコンテキストを持つ SATB -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly} @appendixsubsec 4 つの譜に配置された SATB -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {satb-choir-template---four-staves.ly} @appendixsubsec ソロと 2 パートのリフレイン -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} -@appendixsubsec Hymn tunes +@appendixsubsec 賛美歌 @c Hymn tunes -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {hymn-template.ly} -@appendixsubsec 賛美歌 +@appendixsubsec 聖歌 @c Psalms -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {anglican-psalm-template.ly} @@ -148,7 +142,7 @@ @translationof Orchestral templates @appendixsubsec オーケストラ、合唱それにピアノ -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -159,12 +153,12 @@ @appendixsubsec Transcription of mensural music -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Gregorian transcription template -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @@ -172,9 +166,10 @@ @appendixsec その他のテンプレート @translationof Other templates -@appendixsubsec Jazz コンボ +@appendixsubsec ジャズ バンド -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc] {jazz-combo-template.ly} @@ -197,7 +192,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print @ The `line-width' is for \header. @li lypond[quote,verbatim,ragged-right,line-width] -\version "2.14.0" +\version "2.16.0" \header { dedication = "dedication" title = "Title" diff --git a/Documentation/ja/learning/tutorial.itely b/Documentation/ja/learning/tutorial.itely index 61bbd759c0..a87377f084 100644 --- a/Documentation/ja/learning/tutorial.itely +++ b/Documentation/ja/learning/tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: c028761d49ac4820206806dbc58e9704a87b4a8e + Translation of GIT committish: f7630a9232be374298d88e1b8bdb85ead17a7572 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -785,9 +785,9 @@ LilyPond で発生する問題をトラブルシュートすることは、@c @ignore -@node キーボード ナビゲーション -@unnumberedsubsec キーボード ナビゲーション -@translationof Keyboard navigation +@n ode キーボード ナビゲーション +@u nnumberedsubsec キーボード ナビゲーション +@t ranslationof Keyboard navigation @end ignore @@ -824,4 +824,3 @@ LilyPond にはたくさんのドキュメントがあります。@c @rprogram{LilyPond 入力ファイルの記述に対する提案} を読んでください。 @end itemize - diff --git a/Documentation/ja/learning/tweaks.itely b/Documentation/ja/learning/tweaks.itely index 929cebe429..11329a5567 100644 --- a/Documentation/ja/learning/tweaks.itely +++ b/Documentation/ja/learning/tweaks.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: b5a7328d19ebb2e40c3fbb7f1715b6023dc8329d + Translation of GIT committish: c95106f1c57562c3f863edb0221cb7892438f6db 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -227,9 +227,10 @@ LilyPond が @code{\new Staff} のようなコマンドに遭遇した場合、@ この後の例の多くでも省略します。@c 後ほど、コンテキストを指定しなければならない場合について見ていきます。 -これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います。@c -しかしながら、そのフォーマットとそれらのコマンドの使用方法を示すためには、@c -容易に理解できる簡単なプロパティと値を 2, 3 使用してみるだけです。 +これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います +-- @ref{Types of properties} を参照してください。@c +しかしながら、このセクションではそれらのフォーマットとコマンドの使い方を示す@c +ために、容易に理解できる簡単なプロパティと値をいくつか使用してみるだけです。 今や、レイアウト プロパティの前に置かれなければならない @code{#'} や@c プロパティ値の前に置かれなければならない @code{#} について心配する必要は@c @@ -304,10 +305,12 @@ b4 c | @lilypond[quote,fragment,ragged-right,verbatim,relative=1] c4 d -\once \override NoteHead #'color = #red +\override NoteHead #'color = #red e4 f | \once \override NoteHead #'color = #green -g4 a b c | +g4 a +\revert NoteHead #'color +b c | @end lilypond @strong{\overrideProperty コマンド} @@ -331,9 +334,10 @@ g4 a b c | @funindex tweak 利用可能な最後の調整コマンドは @code{\tweak} です。@c -これは同じタイミングで起こるオブジェクト --- 和音の中にある音符などのように -- -のプロパティを変更するために使用されます。@c +これは同じ音楽タイミングで発生するいくつかのオブジェクトのうち、@c +1 つのオブジェクトだけを選択してプロパティを変更したい場合に@c +使用します +-- 例えば、和音の中にある 1 つの音符のプロパティを変更する場合です。@c @code{\override} コマンドを使用すると和音の中にあるすべての音符に@c 影響を与えます。@c 一方、@code{\tweak} は入力ストリームの中でその @code{\tweak} の@c @@ -361,16 +365,9 @@ C メジャー コードの中にある真ん中の音符 (ミドル E) の符 @code{\tweak} コマンドはこれとは異なるやり方で処理されます。@c これは入力ストリームの中ですぐ後に続く要素にだけ作用します。@c -しかしながら、これは入力ストリームから直接作成されるオブジェクト +最もシンプルな形式の @code{\tweak} コマンドは、@c +コマンドの直後にある要素から直接作成されるオブジェクト -- 本質的に符頭とアーティキュレーション -- にだけ効果を持ちます。@c -符幹や臨時記号などのオブジェクトは後で作成されるため、@c -この方法では調整できません。@c -さらに、@code{\tweak} が符頭に適用される場合、@c -それらは和音の内部になければ @emph{なりません} --- つまり、単一山括弧 @code{< .. >} の内部です。@c -そのため、単一の音符 (和音ではない音符) を調整するには、@c -@code{\tweak} コマンドはその音符とともに@c -単一の山括弧で囲わなければなりません。 それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します: @@ -384,11 +381,11 @@ C メジャー コードの中にある真ん中の音符 (ミドル E) の符 @code{\tweak} の構文は @code{\override} コマンドの構文とは@c 異なるということに注意してください。@c -コンテキストもレイアウト オブジェクトも指定されません。@c -実際、それらを指定するとエラーになります。@c -これらは両方とも入力ストリームの中で後に続く要素によって示されます。@c +コンテキストを指定しません -- 実際、指定するとエラーになります。@c +コンテキストとレイアウト オブジェクトはどちらも入力ストリームの中で@c +後に続く要素によって示されます。@c さらに、イコール記号を使うべきではないということに注意してください。@c -そのため、@code{\tweak} コマンドの一般的な構文は単純に以下のようになります: +そのため、簡単な形式の @code{\tweak} コマンドは以下のようになります: @example \tweak #'@var{layout-property} #@var{value} @@ -408,9 +405,32 @@ a4^"Black" @end lilypond @noindent -@code{\tweak} コマンドは、まるでそれがアーティキュレーションの@c -一部であるかのように、アーティキュレーション マークの前に@c -置かれなければならないということに注意してください。 +@code{\tweak} コマンドはアーティキュレーション マークの前に配置する@c +必要があることに注意してください。@c +なぜなら、調整された表記がアーティキュレーションとして適用される必要がある@c +ためです。@c +複数の向き記号 (@code{^} または @code{_}) で上書きした場合、@c +最後に適用される左端の記号が勝ち残ります。 + ++@cindex @code{\tweak}, Accidental ++@cindex @code{\tweak}, specific layout object + +符幹や臨時記号などのオブジェクトは後になってから作成されるもので、@c +@code{\tweak} コマンドの後に続くイベントから直接作成されません。@c +そのような直接作成されないオブジェクトの場合、明示的にレイアウト +オブジェクト名を指定して LilyPond がそれらのオブジェクトの起源を@c +追跡できるようにすることで、@code{\tweak} で調整することができます: + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +<\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> +@end lilypond + +この長い形式の @code{\tweak} コマンドは以下のように記述することができます: +@example +\tweak @var{layout-object} #'@var{layout-property} @var{value} +@end example @cindex tuplets, nested (ネストされた連符) @cindex triplets, nested (ネストされた 3 連符) @@ -979,7 +999,7 @@ Slur へのリンクを選択すると、Slur のプロパティがリスト ア @tab 有効な向きを表す定数またはそれと等価な数値 (-1 から 1 までの小数が@c 許可されます) @tab @code{LEFT}, @code{CENTER}, @code{UP}, - @code{1}, @code{-1} + @code{1}, @w{@code{-1}} @item Integer @tab 正の整数 @tab @code{3}, @code{1} @@ -997,7 +1017,7 @@ Slur へのリンクを選択すると、Slur のプロパティがリスト ア @code{(ly:make-moment 3 8)} @item Number @tab 正または負の小数 - @tab @code{3.5}, @code{-2.45} + @tab @code{3.5}, @w{@code{-2.45}} @item (数の) Pair @tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で@c 囲まれた 2 つの数値 @@ -1814,7 +1834,7 @@ a4 g c a | @end lilypond ここで定数 @code{DOWN} と @code{UP} を使っています。@c -これらはそれぞれ値 @code{-1} と @code{+1} を持ち、定数の代わりに@c +これらはそれぞれ値 @w{@code{-1}} と @code{+1} を持ち、定数の代わりに@c それらの数値を使うこともできまはす。@c さらに値 @code{0} を使う場合もあります。@c この値は符幹では @code{UP} を意味するものとして扱われますが、@c @@ -1999,7 +2019,7 @@ LilyPond はこれらの制約を受け取り、 運指法記号が少し込み合っているように見える場合は、@c @code{font-size} でサイズを下げることができます。@c デフォルト値は内部リファレンスの @code{Fingering} オブジェクトのページから -@code{-5} であることがわかるので、@code{-7} にセットしてみましょう: +@w{@code{-5}} であることがわかるので、@w{@code{-7}} にセットしてみましょう: @lilypond[quote,fragment,ragged-right,verbatim,relative=1] \override Fingering #'font-size = #-7 @@ -2035,21 +2055,28 @@ LilyPond はこれらの制約を受け取り、 @code{#f} にセットされていて、譜外部オブジェクトが作成されたときに@c その譜外部オブジェクトの @code{outside-staff-priority} に適当な数値が@c セットされます。@c -以下の表はデフォルトで @code{Staff} コンテキストまたは -@code{Voice} コンテキストの中に配置される@c -いくつかの一般的な譜外部オブジェクトのデフォルトの +以下の表はいくつかの一般的な譜外部オブジェクトのデフォルトの @code{outside-staff-priority} 値を示しています。 @multitable @columnfractions .3 .3 .3 @headitem レイアウト オブジェクト @tab 優先度 @tab 以下のオブジェクトの配置を制御する: -@item @code{MultiMeasureRestText} - @tab @code{450} - @tab 全休符上のテキスト +@item @code{RehearsalMark} + @tab @code{1500} + @tab リハーサル記号 +@item @code{MetronomeMark} + @tab @code{1000} + @tab メトロノーム記号 +@item @code{VoltaBracketSpanner} + @tab @code{600} + @tab Volta (番号付きのリピート) の囲み @item @code{TextScript} @tab @code{450} @tab マークアップ テキスト +@item @code{MultiMeasureRestText} + @tab @code{450} + @tab 全休符上のテキスト @item @code{OttavaBracket} @tab @code{400} @tab オッターバ (オクターブを上下させる記号) の囲み @@ -2059,9 +2086,9 @@ LilyPond はこれらの制約を受け取り、 @item @code{DynamicLineSpanner} @tab @code{250} @tab すべての強弱記号 -@item @code{VoltaBracketSpanner} +@item @code{BarNumber} @tab @code{100} - @tab Volta (番号付きのリピート) の囲み + @tab 小節番号 @item @code{TrillSpanner} @tab @code{50} @tab トリル記号 @@ -2119,26 +2146,6 @@ c,4 c c c | @cindex tweaking rehearsal mark placement (リハーサル記号の配置を調節する) @cindex rehearsal marks, tweaking placement (リハーサル記号の配置を調節する) -小節番号、メトロノーム記号、リハーサル記号は示されていないということに@c -注意してください。@c -デフォルトでは、それらは @code{Score} コンテキストの中で作成され、@c -それらの @code{outside-staff-priority} は @code{Staff} コンテキストの中で@c -作成されるレイアウト オブジェクトとは異なり無視されます。@c -小節番号、メトロノーム記号あるいはリハーサル記号を@c -それらの @code{outside-staff-priority} に従って配置したいのなら、@c -@code{Score} コンテキストからそれぞれ @code{Bar_number_engraver}, -@code{Metronome_mark_engraver}, @code{Mark_engraver} を削除して最上位の -@code{Staff} コンテキストに置く必要があります。@c -そうした場合、それらの記号には@c -以下のデフォルトの @code{outside-staff-priority} 値が与えられます: - -@multitable @columnfractions .3 .3 -@headitem レイアウト オブジェクト @tab 優先度 -@item @code{RehearsalMark} @tab @code{1500} -@item @code{MetronomeMark} @tab @code{1000} -@item @code{BarNumber} @tab @code{ 100} -@end multitable - @code{outside-staff-priority} のデフォルト値による配置が@c あなたの望みに合わない場合、いずれかのオブジェクトの優先度を@c オーバライドすることになるかもしれません。@c @@ -2151,6 +2158,7 @@ c,4 c c c | @cindex TextSpanner, example of overriding (TextSpanner をオーバライドする例) @cindex bound-details property, example (bound-details プロパティの例) +@c KEEP LY @lilypond[quote,fragment,ragged-right,verbatim,relative=1] % 以降のテキスト スパナの詳細を設定します \override TextSpanner #'(bound-details left text) @@ -2176,6 +2184,12 @@ c4\ff c \stopTextSpan | c,4 c c c | @end lilypond +これらのオブジェクトのいくつか +-- 特に、小節番号、メトロノーム記号、それにリハーサル記号 -- +はデフォルトでは @code{Score} コンテキストの中にあるため、@c +それらのプロパティをオーバライドする場合は適切なコンテキストを@c +指定する必要があることに注意してください。 + @cindex slurs and outside-staff-priority (スラーと outside-staff-priority) @cindex slurs and articulations (スラーとアーティキュレーション) @cindex articulations and slurs (アーティキュレーションとスラー) @@ -2545,13 +2559,13 @@ LilyPond がレイアウト オブジェクトを配置するときに使用す オブジェクトすべてに対して使用することができます。@c 一般に、テキストを保持するオブジェクトです。@c 値は @code{Left}, @code{RIGHT}, @code{CENTER} です。@c -代替手段として、@code{-1} から @code{+1} までの数値を@c +代替手段として、@w{@code{-1}} から @code{+1} までの数値を@c 指定することもできます。@c @code{-1} は左揃えであり、@code{+1} は右揃え、@c その間の数値は左揃えから右揃えへのテキストを移動させます (訳者: @code{-0.5} であれば、左揃えと中央揃えの中間ということ)。@c @code{1} よりも大きな数値を指定することでテキストをさらに左へ、@c -@code{-1} よりも小さな数値を指定することでテキストを@c +@w{@code{-1}} よりも小さな数値を指定することでテキストを@c さらに右へ移動させることができます。@c この値を @code{1} 増減することによる移動量はそのテキストの長さの半分です。 @@ -2854,7 +2868,7 @@ LilyPond がそれと衝突するかもしれない音符を突き止めるの @code{MultiMeasureRest} の @code{staff-position} は @code{-4} に@c セットされています。@c そのため、そのプロパティを、例えば半譜スペース 4 つ分押し下げるには、@c -@code{-8} に変更する必要があります。 +@w{@code{-8}} に変更する必要があります。 @cindex MultiMeasureRest, example of overriding (MultiMeasureRest をオーバライドする例) @cindex staff-position property, example (staff-position プロパティの例) @@ -2936,20 +2950,25 @@ r4 \acciaccatura e8\( d8 c~ c d c d\) @end lilypond -さらに、Chopin の 前奏曲 Op 28 No. 2 の左手の譜の開始部分から取った@c -例を挙げます。@c -連桁が上部にある音符と衝突しています: @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 -これは、譜の中央線から 2 譜スペース上の位置にある連桁の両端を、例えば、3 +これは、譜の中央線から 1.81 譜スペース上の位置にある連桁の両端を、例えば、1 に手動で上げることによって解決することができます: @cindex Beam, example of overriding (Beam をオーバライドする例) @@ -2957,21 +2976,27 @@ r4 @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 -オーバライドの効果は継続して 2 番目のブロックのボイス 1 にも@c -適用されていますが、ボイス 2 の連桁にはまったく適用されていないということに@c -注意してください。 +オーバライドの効果は継続して第 2 小節のボイス 1 の 8 分音符にも@c +適用されていますが、@c +ボイス 2 の連桁にはまったく適用されていないということに注意してください。 @subheading force-hshift プロパティ @@ -2985,22 +3010,25 @@ r4 << { c2 aes4. bes8 } \\ - { aes2 f4 fes } + { 2 des } \\ - { - \voiceFour - 2 des - } + \\ + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -最初の和音の下の方にある 2 つの音符 (つまり、3 番目のボイス (ボイス 4) の音符) -を上の方にある 2 つの音符の音符列からずらすべきではありません。@c +最初の和音の内声の音 (つまり、4 番目のボイスにある A-フラット) を上の音符の@c +音符列からずらす必要はありません。@c これを修正するには、下の音符の @code{force-hshift} -- これは @code{NoteColumn} のプロパティです -- を 0 にセットします。@c + +2 番目の和音では、F を A に揃えて、符幹の衝突を避けるために最下段の音符を@c +少し右に移動させるべきでしょう。@c +そうするには、D-フラットの @code{NoteColumn} の @code{force-hshift} +を設定して譜スペースの半分だけ右にずらします。 2 番目の和音の下の方の音符は、上の方の音符のすぐ右に置くのが最良です。@c そうするには、この音符の @code{force-hshift} を 0.5 にセットします -- つまり、上の方の音符の音符列から符頭の幅の半分だけ右にずらします。 @@ -3016,15 +3044,17 @@ r4 << { c2 aes4. bes8 } \\ - { aes2 f4 fes } - \\ { - \voiceFour - \once \override NoteColumn #'force-hshift = #0 - 2 + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ + \\ + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -3071,7 +3101,8 @@ rhMusic = \relative c'' { c,8~ % マージされる音符の右にある c2 を再配置します \once \override NoteColumn #'force-hshift = #1.0 - % c2 をメインの音符列から外したため、マージが機能します + % c2 をメインの音符列から外したため、 + % マージが機能します \shiftOnn c2 } @@ -3081,7 +3112,8 @@ rhMusic = \relative c'' { % マージさせるために d2 の符幹を下向きにする必要があります \stemDown % d2 の符幹を不可視にします - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3451,7 +3483,8 @@ rhMusic = \relative c'' { { c,8 d fis bes a } % メイン ボイスの続き \new Voice { \voiceTwo - % c2 をメインの音符列から外したため、マージが機能します + % c2 をメインの音符列から外したため、 + % マージが機能します c,8~ \shiftOnn c2 } \new Voice { @@ -3536,7 +3569,8 @@ rhMusic = \relative c'' { % マージさせるために d2 の符幹を下向きにする必要があります \stemDown % d2 の符幹を不可視にします - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3582,7 +3616,6 @@ lhMusic = \relative c' { * 調整のために変数を使用する:: * スタイル シート:: * その他の情報源:: -* 処理に時間のかかる調整を避ける:: * Scheme を用いた高度な調整:: @end menu @@ -3620,7 +3653,8 @@ lhMusic = \relative c' { @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t b8~ b\noBeam } \\ @@ -3634,8 +3668,9 @@ lhMusic = \relative c' { @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t - \once \override Stem #'length = #8 + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t + \tweak Stem #'length #8 b8~ b\noBeam } \\ @@ -3793,7 +3828,7 @@ VerseOne = \lyrics { } VerseTwo = \lyricmode { - O | \emphasize Christ, \normal whose voice the | wa -- ters heard, + O | \once \emphasize Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { @@ -3842,19 +3877,17 @@ LilyPond が作り出す出力にはさまざまな変更を加えることが @lilypond[quote,verbatim,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3866,12 +3899,8 @@ inst = } @end lilypond -この例には出力が重なり合うという問題がいくつかあり、@c -@ref{オブジェクトを移動させる} のテクニックを使ってそれらを修正しています。@c -そこで、さらに @code{mpdolce} 定義と @code{tempoMark} 定義に関して@c -何かしてみましょう。@c -それらは望みの出力を作り出していますが、@c -それらを別の楽曲で使いたいとします。@c +@code{mpdolce} と @code{tempoMark} の定義に手を加えてみることにします。@c +それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。@c 単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、@c わずらわしいです。@c その方法では定義は依然として入力ファイルの中にあり、@c @@ -3882,19 +3911,17 @@ inst = %%% これを "definitions.ily" というファイル名で保存してください mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) @end example 音楽ファイルの先頭付近で @code{\include} コマンドを使ってこのファイルを@c @@ -3923,19 +3950,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3962,19 +3987,17 @@ inst = %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) \layout@{ \context @{ @@ -3997,19 +4020,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \layout{ \context { @@ -4051,19 +4072,17 @@ inst = %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) #(set-global-staff-size 23) @@ -4087,19 +4106,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) #(set-global-staff-size 23) @@ -4184,11 +4201,16 @@ LilyPond の内部ファイルを調べることによって@c @itemize @bullet @item Linux -@file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/} に進んでください +@example +@file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/} +@end example +に進んでください @item MacOS X +@example @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/} +@end example に進んでください。@c ターミナルからこのディレクトリへ @code{cd} で移動するか、@c LilyPond アプリケーション上でコントロール クリックして @@ -4196,8 +4218,10 @@ LilyPond アプリケーション上でコントロール クリックして @item Windows -@file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/} に@c -進んでください。Windows Explorer を使います。 +@example +@file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/} +@end example +に進んでください。Windows Explorer を使います。 @end itemize @@ -4290,41 +4314,6 @@ Scheme 言語とこれらのファイルを理解するには、十分な知識 @end multitable -@node 処理に時間のかかる調整を避ける -@subsection 処理に時間のかかる調整を避ける -@translationof Avoiding tweaks with slower processing - -LilyPond は入力ファイルの処理中に追加のチェックを行うことができます。@c -これらのチェックは実行時間を伸ばしますが、適切な結果を得るのに必要とされる@c -手動調整を減らすかもしれません。@c -テキスト スクリプトや歌詞の一部が余白まではみ出す場合、これらのチェックは@c -楽譜のその行を縮めてマージンの内側に収まるようにします。 - -すべての状況下で有効にするには、以下のように、音楽の中の行ではなく -@code{Score} の @code{\with} ブロックの中に@c -これらのチェックのオーバライドを置くことによって、@c -動作可能な状態にする必要があります: - -@example -\score @{ - @{ @dots{}notes@dots{} @} - \layout @{ - \context @{ - \Score - % テキスト スクリプトと歌詞が紙面のマージン内に納まることを保証します - \override PaperColumn #'keep-inside-line = ##t - \override NonMusicalPaperColumn #'keep-inside-line = ##t - @} - @} -@} -@end example - -しかしながら、@code{keep-inside-line} は処理時間を伸ばすため、@c -最終バージョンを作るまでは有効化しないことをお勧めします。@c -この機能を用いると、手動で @code{\break} コマンドを入力しなくても@c -テキストがページの右端からはみ出すことを防げます。 - - @node Scheme を用いた高度な調整 @subsection Scheme を用いた高度な調整 @translationof Advanced tweaks with Scheme diff --git a/Documentation/ja/macros.itexi b/Documentation/ja/macros.itexi index ca205399f7..b15306d257 100644 --- a/Documentation/ja/macros.itexi +++ b/Documentation/ja/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: d2e5da205b22062ef806481b3bb6a27a1807569a + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -737,7 +737,7 @@ LilyPond バージョン @version{} 用 @end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/ja/notation.tely b/Documentation/ja/notation.tely index 572f63e6e1..d1a8c83951 100644 --- a/Documentation/ja/notation.tely +++ b/Documentation/ja/notation.tely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 2c3bd5e85d39155e3e6804f9818722bef483056d + Translation of GIT committish: dadabdfc4537ef85adb9159d46eda5a0ff180835 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @@ -21,7 +21,7 @@ @c `Notation Reference' was born 1999-10-11 with git commit 940dda0... @macro copyrightDeclare -Copyright @copyright{} 1999--2009 by 著作者一同 +Copyright @copyright{} 1999--2012 by 著作者一同 @end macro @@ -47,15 +47,15 @@ Copyright @copyright{} 1999--2009 by 著作者一同 @menu * 音楽記譜法:: ほとんどすべての楽譜作成で使用される記譜法 -* Specialist notation:: 特別な目的でのみ使用される記譜法 -* General input and output:: LilyPond 入力についての一般的な情報 -* Spacing issues:: 出力の表示 -* Changing defaults:: 出力の調整 +* 専門的な記譜法:: 特別な目的でのみ使用される記譜法 +* 入出力全般:: LilyPond 入力についての一般的な情報 +* スペースの問題:: 出力の表示 +* デフォルトを変更する:: 出力の調整 付録 * Notation manual tables:: 表と図 -* Cheat sheet:: LilyPond 構文についての要約 +* カンニング ペーパー:: LilyPond 構文についての要約 * LilyPond 文法:: LilyPond 構文解析プログラムのための構文ダイアグラム * GNU Free Documentation License:: このドキュメントの使用許諾書 * LilyPond コマンド インデックス:: @@ -64,11 +64,6 @@ Copyright @copyright{} 1999--2009 by 著作者一同 @ignore @menu -* 音楽記譜法:: ほとんどすべての楽譜作成で使用される記譜法 -* 専門的な記譜法:: 特別な目的でのみ使用される記譜法 -* 入出力全般:: LilyPond 入力についての一般的な情報 -* スペースの問題:: 出力の表示 -* デフォルトを変更する:: 出力の調整 付録 diff --git a/Documentation/ja/notation/changing-defaults.itely b/Documentation/ja/notation/changing-defaults.itely new file mode 100644 index 0000000000..809223b24e --- /dev/null +++ b/Documentation/ja/notation/changing-defaults.itely @@ -0,0 +1,4455 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- + +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node デフォルトを変更する +@chapter デフォルトを変更する +@translationof Changing defaults + +LilyPond はデフォルトで最高品質の出力を提供できるよう設計されています。@c +それにもかかわらず、@c +デフォルトのレイアウトを変更する必要が発生する場合もあります。@c +レイアウトは、@q{プロパティ} と呼ばれる多数の @q{つまみとスイッチ} によって@c +制御されています。@c +これらのプロパティにアクセスし、変更するための手引は学習マニュアルの中にあります +-- @rlearning{出力を調整する} を参照してください。@c +まずはこれを読むべきです。@c +本章は同様の内容をカバーしていますが、@c +よりリファレンス マニュアルに適したスタイルで提供します。 + +@cindex Internals Reference (内部リファレンス) + +調整のために利用できる制御の定義についての説明は、@c +別のドキュメントの中にあります: @rinternalsnamed{Top,内部リファレンス} です。@c +このマニュアルは利用可能なすべての変数、関数、それにオプションを@c +リストアップしています。@c +これは HTML ドキュメントとして記述されていて、@c +@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,オンライン} +で入手可能であり、@c +LilyPond ドキュメント パッケージにも含まれています。 + +内部的には、LilyPond は Scheme (LISP 派生語) を用いて機能を提供しています。@c +レイアウトについての決定をオーバライドすることは、@c +プログラムの内部にアクセスすることであり、@c +Scheme 入力が必要になります。@c +Scheme の要素は、@code{.ly} の中で、@c +ハッシュ記号 @code{#} を付けて記述します。@footnote{@rextend{Scheme tutorial} +の中に、Scheme 形式で数、リスト、文字列、それに記号を入力するための@c +簡単な手引きがあります。} + + +@menu +* コンテキストを理解する:: +* 内部リファレンスの説明:: +* プロパティを変更する:: +* 役に立つコンセプトとプロパティ:: +* 高度な調整:: +* 音楽関数を使用する:: +@end menu + + +@node コンテキストを理解する +@section コンテキストを理解する +@translationof Interpretation contexts + +このセクションでは、コンテキストとは何なのか、@c +それをどのように変更するのかについて説明します。 + +@menu +* コンテキストの説明:: +* コンテキストを作成する:: +* コンテキストを残しておく:: +* コンテキストのプラグインを変更する:: +* コンテキストのデフォルト設定を変更する:: +* 新しいコンテキストを定義する:: +* コンテキストの配置順序:: +@end menu + +@seealso +学習マニュアル: +@rlearning{コンテキストとエングラーバ} + +インストールされているファイル: +@file{ly/@/engraver@/-init@/.ly}, +@file{ly/@/performer@/-init@/.ly} + +コード断片集: +@rlsr{Contexts and engravers} + +内部リファレンス: +@rinternals{Contexts}, +@rinternals{Engravers and Performers} + + +@node コンテキストの説明 +@subsection コンテキストの説明 +@translationof Contexts explained + +@ignore +@c TODO Rethink and rewrite + +>> > > - list of contexts: my *danger unmaintainable* +>> > > alarm just went off. I'm + +I knew it would... And leaving out some of them is perfectly fine +with me. +I do think that a list like this, with the main contexts and a +brief +description of what they do (perhaps also with a note about what +default +behavior is associated with each of them, but this may be +unmanageable), +should be there, and then we could simply list the remaining ones +without +further explanation and with links to the IR. +@end ignore + +@c TODO Improve layout, order and consistency of wording -td + +@c TODO Add introduction which explains contexts in generality -td + +@c TODO Describe propagation of property values -td + +コンテキストは階層的に配置されます: + +@menu +* Score - すべてのコンテキストのマスタ:: +* 上位コンテキスト - 譜コンテナ:: +* 中位コンテキスト - 譜:: +* 下位コンテキスト - ボイス:: +@end menu + +@node Score - すべてのコンテキストのマスタ +@unnumberedsubsubsec Score - すべてのコンテキストのマスタ +@translationof Score - the master of all contexts + +これは最上位の記譜コンテキストです。@c +他のコンテキストが Score コンテキストを保持することはできません。@c +デフォルトでは、Score コンテキストが拍子記号の管理を扱い、@c +音部記号、拍子記号、調号などのアイテムが譜間で揃っていることを保証します。 + +Score コンテキストは、@code{\score @{@dots{}@}} や @code{\layout @{@dots{}@}} +ブロックが処理されたときに暗黙的にインスタンス化されます。@c +@c また、@code{\new Score} コマンドが実行されたときに@c +@c 明示的にインスタンス化されます。 + + +@node 上位コンテキスト - 譜コンテナ +@unnumberedsubsubsec 上位コンテキスト - 譜コンテナ +@translationof Top-level contexts - staff containers + +@strong{@emph{StaffGroup}} + +譜をグループ化して、左端に角括弧を付けます。@c +このコンテキストに保持されている譜の小節線は垂直につながります。@c +@code{StaffGroup} は譜のコレクション、@c +それに左端の角括弧と延長された小節線だけを保持します。 + +@strong{@emph{ChoirStaff}} + +保持されている譜の小節線が垂直につながらないことを除けば、@c +@code{StaffGroup} と同じです。 + +@strong{@emph{GrandStaff}} + +譜をグループ化して、左端に波括弧を付けます。@c +このコンテキストに保持されている譜の小節線は垂直につながります。@c + +@strong{@emph{PianoStaff}} + +@code{GrandStaff} と似ていますが、@c +各システムの左端に楽器名を付けることができます。 + + +@node 中位コンテキスト - 譜 +@unnumberedsubsubsec 中位コンテキスト - 譜 +@translationof Intermediate-level contexts - staves + +@strong{@emph{Staff}} + +音部記号、小節線、調、臨時記号を扱います。@c +このコンテキストは @code{Voice} コンテキストを保持することができます。 + +@strong{@emph{RhythmicStaff}} + +@code{Staff} と似ていますが、リズムを表示するためのものです。@c +ピッチは無視され、音符は線として表示されます。 + +@strong{@emph{TabStaff}} + +タブ譜を生成するためのコンテキストです。@c +デフォルトでは、音楽表記を 6 線のギター タブ譜として配置します。 + +@strong{@emph{DrumStaff}} + +打楽器の譜刻を扱います。@c +@code{DrumVoice} を保持することができます。 + +@strong{@emph{VaticanaStaff}} + +@code{Staff} と同じですが、@c +グレゴリア形式の楽曲を譜刻するためにデザインされている点が異なります。 + +@strong{@emph{MensuralStaff}} + +@code{Staff} と同じでが、@c +定量形式の楽曲を譜刻するためにデザインされている点が異なります。 + +@node 下位コンテキスト - ボイス +@unnumberedsubsubsec 下位コンテキスト - ボイス +@translationof Bottom-level contexts - voices + +Voice レベルのコンテキストはある特定のプロパティを初期化し、@c +適切なエングラーバを開始させます。@c +下位コンテキストであるため、他のコンテキストを保持することはできません。 + +@strong{@emph{Voice}} + +譜の上にあるボイスに相当します。@c +このコンテキストは、強弱記号、符幹、連桁、上付き/下付き文字、タイ、@c +それに休符の変換を扱います。@c +1 つの譜に複数のボイスを配置する必要がある場合、@c +ボイスを明示的にインスタンス化する必要があります。 + +@strong{@emph{VaticanaVoice}} + +@code{Voice} と同じですが、@c +グレゴリア形式の楽曲を譜刻するためにデザインされている点が異なります。 + +@strong{@emph{MensuralVoice}} + +@code{Voice} と同じですが、@c +定量形式の楽曲を譜刻するためにデザインされている点が異なります。 + +@strong{@emph{Lyrics}} + +歌詞を保持するボイスに相当します。単一行の歌詞の表示を扱います。 + +@strong{@emph{DrumVoice}} + +打楽器譜で使用されるボイス コンテキストです。 + +@strong{@emph{FiguredBass}} + +このコンテキストの中で、@c +@code{\figuremode} モードで記述された入力から +@code{BassFigure} オブジェクトが作成されます。 + +@strong{@emph{TabVoice}} + +@code{TabStaff} コンテキスト内部で使用されるボイス コンテキストです。@c +通常、暗黙的に作成されます。 + +@strong{@emph{CueVoice}} + +小さなサイズの音符を描画するために使用されるボイス コンテキストです。@c +主に合図音符を譜に付け加えることを目的としています。@c +@ref{合図音符をフォーマットする} を参照してください。@c +通常、暗黙的に作成されます。 + +@strong{@emph{ChordNames}} + +コード ネームを譜刻します。 + +@ignore +TODO + +Then the following, which I don't know what to do with: + + * GregorianTranscriptionVoice + * GregorianTranscriptionStaff + + * FretBoards + Engraves fretboards from chords. Not easy... Not +documented. + There is now some documentation on FretBoards in the NR, under + instrument-specific notation -- cds. + + * NoteNames + + * Global + Hard coded entry point for LilyPond. Cannot be tuned. + * Devnull + Silently discards all musical information given to this +context. + +@end ignore + +@node コンテキストを作成する +@subsection コンテキストを作成する +@translationof Creating contexts + +@c TODO more complete descriptions rather than learning style + +ボイスと譜が 1 つだけの楽譜では、コンテキストは自動的に作成されます。@c +もっと複雑な楽譜では、手動でコンテキストを作成する必要があります。@c +コンテキスを作成するために 3 つのコマンドがあります。 + +@itemize + +@item +もっとも簡単なコマンドは @code{\new} であり、@c +もっとも素早く入力できるコマンドでもあります。@c +このコマンドは音楽表記の前に置きます。例えば、以下のように: + +@funindex \new +@cindex new contexts (新しいコンテキスト) +@cindex Context, creating (コンテキストを作成する) + +@example +\new @var{type} @var{music expression} +@end example + +@noindent +ここで、@var{type} はコンテキスト名 (@code{Staff} や @code{Voice} など) です。@c +このコマンドは新しいコンテキストを作成し、@c +そのコンテキストに付属する @var{音楽表記} の解釈を開始します。 + +@code{\new} の実際的な使用例には、多くの譜を持つ楽譜があります。@c +それぞれの譜に配置される各パートの前に @code{\new Staff} を記述します。 + +@lilypond[quote,verbatim,relative=2,ragged-right,fragment] +<< + \new Staff { c4 c } + \new Staff { d4 d } +>> +@end lilypond + +@code{\new} コマンドは、コンテキストに名前を与えることもできます: + +@example +\new @var{type} = @var{id} @var{music} +@end example + +しかしながら、ユーザが指定したコンテキスト名は、 +そのコンテキスト以前に同じ名前を与えられたコンテキストが無い場合にのみ、@c +使用できます。 + + +@funindex \context + +@item +@code{\new} と同様に、@c +@code{\context} コマンドも音楽表記をコンテキスト オブジェクトに代入します。@c +しかしながら、このコマンドはコンテキストに明示的に名前を与えます。@c +構文は以下の通りです: + +@example +\context @var{type} = @var{id} @var{music} +@end example + +この構文は @var{id} という名前の @var{type} タイプのコンテキストが@c +すで存在していないか検索します。@c +コンテキストがまだ存在していなければ、@c +指定された名前を持つコンテキストが新たに作成されます。@c +これは、コンテキストを後で参照する場合に有用です。@c +例えば、以下のように名前を付けられたメロディ: + +@example +\context Voice = "@b{tenor}" @var{music} +@end example + +@noindent +に、以下のように歌詞を設定すると、テキストは適切に音符に揃えられます: + +@example +\new Lyrics \lyricsto "@b{tenor}" @var{lyrics} +@end example + +@noindent + +名前付きコンテキストの他の使用例として、2 つの音楽表記をつなげて +1 つのコンテキストにすることができます。@c +以下の例では、アーティキュレーションと音符は別々に入力されています: + +@example +music = @{ c4 c4 @} +arts = @{ s4-. s4-> @} +@end example + +これらを同じ @code{Voice} コンテキストに送ることによって@c +組み合わせることができます: + +@example +<< + \new Staff \context Voice = "A" \music + \context Voice = "A" \arts +>> +@end example +@lilypond[quote,ragged-right] +music = { c4 c4 } +arts = { s4-. s4-> } +\relative c'' << + \new Staff \context Voice = "A" \music + \context Voice = "A" \arts +>> +@end lilypond + +このメカニズムを用いることで、原典版 (オリジナル版) を定義し、@c +オプションとしてそれに異なるアーティキュレーションを付けることができます。 + +@cindex creating contexts (コンテキストを作成する) + +@item +コンテキストを作成する 3 つ目のコマンドは以下の通りです: + +@example +\context @var{type} @var{music} +@end example + +@noindent +これは @code{= @var{id}} を持つ @code{\context} に似ていますが、@c +タイプ @var{type} のすべてのコンテキストに適用されます +-- そのコンテキストに与えられた名前とは関係なく適用されます。@c + +この構文の変形版は、@c +異なる階層で解釈される可能性がある音楽表記に対して使用されます。@c +例えば、@code{\applyOutput} コマンド +(@rextend{Running a function on all layout objects} を参照してください) +です。@c +明示的に @code{\context} を指定しなければ、通常は @code{Voice} に適用されます。 + +@example +\applyOutput #'@var{context} #@var{function} % Voice に適用されます +@end example + +@code{Score} レベルや @code{Staff} レベルで解釈させるには、以下のようにします: + +@example +\applyOutput #'Score #@var{function} +\applyOutput #'Staff #@var{function} +@end example + +@end itemize + + +@node コンテキストを残しておく +@subsection コンテキストを残しておく +@translationof Keeping contexts alive + +@cindex contexts, keeping alive (コンテキストを残しておく) +@cindex contexts, lifetime (コンテキストのライフタイム) + +通常、コンテキストは何もすることが無くなった最初の音楽的タイミングで@c +消滅させられます。@c +そのため、@code{Voice} コンテキストはすべてのイベントを終えるとすぐに消滅し、@c +@code{Staff} コンテキストは保持しているすべての @code{Voice} コンテキストの@c +イベントが終了するとすぐに消滅する、などとなっています。@c +このことは、早い段階のすでに消滅したコンテキスを参照する必要がある場合に、@c +障害となります。@c +例えば、@code{\change} コマンドで譜を変更する場合、@c +@code{\lyricsto} コマンドで歌詞をボイスに結び付ける場合、@c +あるいは、早い段階で登場したコンテキストに音楽イベントを追加する場合に@c +障害となります。 + +この規則には 1 つ例外があります: +@code{Staff} コンテキストや @code{<<...>>} 構造の中にある @code{Voice} +コンテキストのうち 1 つだけは、例え途中ですることが無くなったとしても、@c +@code{Staff} コンテキストあるいは +@code{<<...>>} 構造の終わりまで維持されます。@c +このように維持されるコンテキストは、最初の @code{@{...@}} 構造の中にある@c +最初のコンテキストであり、@code{<<...>>} 構造の中にあるものは無視されます。 + +各音楽タイミングで何かすることを持たせることにより、@c +任意のコンテキストを残しておくことができます。@c +@code{Staff} コンテキストを残しておくには、それに含まれるボイスの 1 つが@c +維持されることを保証する必要があります。@c +ボイスを残しておく方法の 1 つに、ボイスに含まれる実際の音楽と並列に、@c +空白休符をそのボイスに付け加えるという方法があります。@c +残しておく必要があるすべての @code{Voice} コンテキストに対して、@c +空白休符を付け加える必要があります。@c +ところどころで使用されるボイスがある場合、@c +前述の例外によって必要なボイスを残そうとするよりは、@c +それらのボイスすべてを残しておく方が安全です。 + +以下の例では、空白休符の追加を用いる方法で、@c +ボイス A とボイス B の両方が楽曲全体を通して維持されます: + +@c KEEP LY +@lilypond[quote,verbatim] +musicA = \relative c'' { d4 d d d } +musicB = \relative c'' { g4 g g g } +keepVoicesAlive = { + << + \new Voice = "A" { s1*5 } % Voice "A" を 5 小節の間、維持する + \new Voice = "B" { s1*5 } % Voice "B" を 5 小節の間、維持する + >> +} + +music = { + \context Voice = "A" { + \voiceOneStyle + \musicA + } + \context Voice = "B" { + \voiceTwoStyle + \musicB + } + \context Voice = "A" { \musicA } + \context Voice = "B" { \musicB } + \context Voice = "A" { \musicA } +} + +\score { + \new Staff << + \keepVoicesAlive + \music + >> +} +@end lilypond + +@cindex lyrics, aligning with sporadic melody (途切れ途切れのメロディに歌詞を揃える) + +以下の例は、空白休符を用いる方法で、@c +途切れ途切れのメロディに歌詞を持たせる方法を示しています。@c +もちろん、実際に楽譜を書く場合は、@c +メロディや伴奏は複数のセクションによって構成されることになります。 + +@c KEEP LY +@lilypond[quote,verbatim] +melody = \relative c'' { a4 a a a } +accompaniment = \relative c' { d4 d d d } +words = \lyricmode { These words fol -- low the mel -- o -- dy } +\score { + << + \new Staff = "music" { + << + \new Voice = "melody" { + \voiceOne + s1*4 % Voice "melody" を 4 小節の間、残します + } + { + \new Voice = "accompaniment" { + \voiceTwo + \accompaniment + } + << + \context Voice = "melody" { \melody } + \context Voice = "accompaniment" { \accompaniment } + >> + \context Voice = "accompaniment" { \accompaniment } + << + \context Voice = "melody" { \melody } + \context Voice = "accompaniment" { \accompaniment } + >> + } + >> + } + \new Lyrics \with { alignAboveContext = #"music" } + \lyricsto "melody" { \words } + >> +} +@end lilypond + +これに代わる方法として、メロディに直接空白休符を付け加えて、@c +メロディが伴奏と揃うようにする方法があります +-- 多くの場合、こちらの方法の方が良いかもしれません: + +@c KEEP LY +@lilypond[quote,verbatim] +melody = \relative c'' { + s1 % 1 小節スキップします + a4 a a a + s1 % 1 小節スキップします + a4 a a a +} +accompaniment = \relative c' { + d4 d d d + d4 d d d + d4 d d d + d4 d d d +} +words = \lyricmode { These words fol -- low the mel -- o -- dy } + +\score { + << + \new Staff = "music" { + << + \new Voice = "melody" { + \voiceOne + \melody + } + \new Voice = "accompaniment" { + \voiceTwo + \accompaniment + } + >> + } + \new Lyrics \with { alignAboveContext = #"music" } + \lyricsto "melody" { \words } + >> +} +@end lilypond + + +@node コンテキストのプラグインを変更する +@subsection コンテキストのプラグインを変更する +@translationof Modifying context plug-ins + +@c TODO Should this be Modifying engravers or Modifying contexts? + +記譜コンテキスト (@code{Score} や @code{Staff} のような) は@c +プロパティを保存するだけなく、@c +@q{エングラーバ} と呼ばれる記譜要素を作成するプラグインを保持します。@c +例えば、@code{Voice} コンテキストは @code{Note_head_engraver} を保持し、@c +@code{Staff} コンテキストは @code{Key_engraver} を保持します。 + +各プラグインについての説明は、 +@ifhtml +@rinternals{Engravers and Performers}. +@end ifhtml +@ifnothtml +Internals Reference @expansion{} Translation @expansion{} Engravers. +@end ifnothtml +を参照してください。@c +@ifhtml +@rinternals{Contexts} +@end ifhtml +@ifnothtml +Internals Reference @expansion{} Translation @expansion{} Context. +@end ifnothtml +の中にある各コンテキストについての説明では、@c +そのコンテキストで使用されるエングラーバがリストアップされています。 + +これらのプラグインを入れ換えると有用な場合があります。@c +プラグインを入れ換えるには、新たに作成するコンテキストを +@code{\new} あるいは @code{\context} で開始し、@c +そのコンテキストを以下のように変更します: + +@funindex \with + +@example +\new @var{context} \with @{ + \consists @dots{} + \consists @dots{} + \remove @dots{} + \remove @dots{} + @emph{etc.} +@} +@{ + @emph{..music..} +@} +@end example + +@noindent +ここで、@dots{} はエングラーバの名前になります。@c +ここで、@code{Staff} コンテキストから @code{Time_signature_engraver} と +@code{Clef_engraver} を削除する簡単な例を示します: + +@lilypond[quote,relative=1,verbatim,fragment] +<< + \new Staff { + f2 g + } + \new Staff \with { + \remove "Time_signature_engraver" + \remove "Clef_engraver" + } { + f2 g2 + } +>> +@end lilypond + +2 番目の譜には、拍子記号と音部記号がありません。@c +この方法は、オブジェクトを不可視にするよりも乱暴な方法です。@c +なぜなら、譜全体に影響を与えるからです。@c +さらに、望む望まないに係わらず、この方法はスペースにも影響を与えます。@c +オブジェクトを消すもっと洗練された方法については、@c +@rlearning{オブジェクトの可視性と色} を参照してください。 + +次の例は、ある実用的な応用です。@c +通常、小節線と拍子記号は楽譜全体で同期されます。@c +これは @code{Timing_translator} と @code{Default_bar_line_engraver} +によって行われます。@c +このプラグインは拍子記号の管理や、小節内の配置の管理などを行います。@c +これらのエングラーバを @code{Score} コンテキストから +@code{Staff} コンテキストへ異動させることにより、@c +楽譜の各譜に独自の拍子記号を持たせることが可能になります。 + +@cindex polymetric scores (多拍子の楽譜) +@cindex Time signatures, multiple (複数の拍子記号) + +@lilypond[quote,relative=1,ragged-right,verbatim,fragment] +\new Score \with { + \remove "Timing_translator" + \remove "Default_bar_line_engraver" +} << + \new Staff \with { + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } { + \time 3/4 + c4 c c c c c + } + \new Staff \with { + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } { + \time 2/4 + c4 c c c c c + } +>> +@end lilypond + +@knownissues + +エングラーバを指定する順序は、エングラーバが処理を行う順序です。@c +通常、エングラーバが指定される順序は問題にはなりません。@c +しかしながら、いくつかの特殊なケースでは、この順序が重要になります。@c +例えば、あるエングラーバがプロパティを記述して、@c +それを他のエングラーバが読む場合、あるいは、@c +あるエングラーバがグラフィカル オブジェクトを作成し、@c +それを他のエングラーバが処理しなければならない場合です。@c + +以下の順序は重要です: + +@itemize +@item +通常、@code{Bar_engraver} を最初にする必要があります。 + +@item +@code{New_fingering_engraver} を @code{Script_column_engraver} の前に@c +配置する必要があります。 + +@item +@code{Timing_translator} を @code{Bar_number_engraver} の前に配置する@c +必要があります。 + +@end itemize + +@seealso +インストールされているファイル: +@file{ly/engraver-init.ly} + + +@node コンテキストのデフォルト設定を変更する +@subsection コンテキストのデフォルト設定を変更する +@translationof Changing context default settings + +@cindex default context properties, changing (デフォルトのコンテキスト プロパティを変更する) +@cindex context properties, changing defaults (デフォルトのコンテキスト プロパティを変更する) + +@ref{Modifying properties} で説明したように、コンテキストとグラフィカル +オブジェクトのプロパティを @code{\set} コマンドや @code{\override} +コマンドで変更することができます。@c +これらのコマンドは音楽イベントを生成して、楽譜処理中にコマンドが出現する@c +ポイントで変更に効果を発揮させます。 + +対照的に、このセクションではコンテキストが作成された時点でコンテキストと@c +グラフィカル オブジェクトのプロパティの @emph{デフォルト} 値を変更する@c +方法を説明します。@c +これを行う方法は 2 つあります。@c +1 つはある特定のタイプの全コンテキストのデフォルト値を変更する方法で、@c +もう 1 つはただ 1 つのコンテキストのインスタンスのデフォルト値を変更する@c +方法です。 + +@menu +* 同じタイプの全コンテキストを変更する:: +* 指定したコンテキストだけを変更する:: +* 適用順序:: +@end menu + +@node 同じタイプの全コンテキストを変更する +@unnumberedsubsubsec 同じタイプの全コンテキストを変更する +@translationof Changing all contexts of the same type + +@cindex \context in \layout block (\layout ブロックの中の \context) +@funindex \context +@funindex \layout + +@code{Score}, @code{Staff}, @code{Voice}, その他のコンテキストにおいて@c +デフォルトで使用されるコンテキスト設定は、@code{\layout} ブロックの中の@c +@code{\context} ブロックでで指定することができます。@c +@code{\layout} ブロックは、それを適用する @code{\score} ブロックの中で、@c +かつ、音楽表記の後に配置する必要があります。 + +@example +\layout @{ + \context @{ + \Voice + [すべての Voice コンテキストのコンテキスト設定] + @} + \context @{ + \Staff + [context settings for all Staff contexts] + @} +@} +@end example + +以下のタイプの設定を指定することができます: + +@itemize +@item +@code{\override} コマンド -- コンテキスト名を省略します + +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Thicker stems" a a a + a4 a a\ff a + } + \layout { + \context { + \Staff + \override Stem #'thickness = #4.0 + } + } +} +@end lilypond + +@item +コンテキスト プロパティを直接設定します + +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Smaller font" a a a + a4 a a\ff a + } + \layout { + \context { + \Staff + fontSize = #-4 + } + } +} +@end lilypond + +@item +@code{\dynamicUp} や @code{\accidentalStyle "dodecaphonic"} のような音楽@c +表記等、あらかじめ定義されているコマンド + +@lilypond[quote,verbatim] +\score { + \relative c'' { + a4^"Dynamics above" a a a + a4 a a\ff a + } + \layout { + \context { + \Voice + \dynamicUp + } + \context { + \Staff + \accidentalStyle "dodecaphonic" + } + } +} +@end lilypond + +@item +@code{\with} ブロックを有するユーザ定義変数 -- @code{\with} ブロックの@c +詳細は @ref{Changing just one specific context} を参照してください。 + +@lilypond[quote,verbatim] +StaffDefaults = \with { + fontSize = #-4 +} + +\score { + \new Staff { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + \layout { + \context { + \Staff + \StaffDefaults + } + } +} +@end lilypond + +@end itemize + +プロパティ設定コマンドは、@code{\context} ブロックで囲まずに、@c +@code{\layout} ブロックの中に配置することができます。@c +そのような設定は、指定されたタイプの任意のコンテキストの開始時に@c +プロパティ設定コマンドをインクルードするのと等価です。@c +コンテキストを指定しない場合、@emph{すべての} 下位コンテキストに影響を@c +与えます -- @ref{Bottom-level contexts - voices} を参照してください。@c +@code{\layout} ブロックの中でのプロパティ設定コマンドの構文は、@c +音楽ストリームの中で同じコマンドを記述するのと同じです。 + +@lilypond[quote,verbatim] +\score { + \new Staff { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + \layout { + \accidentalStyle "dodecaphonic" + \set fontSize = #-4 + \override Voice.Stem #'thickness = #4.0 + } +} +@end lilypond + + +@node 指定したコンテキストだけを変更する +@unnumberedsubsubsec 指定したコンテキストだけを変更する +@translationof Changing just one specific context + +@cindex \with +@funindex \with + +@code{\with} ブロックで指定したコンテキスト インスタンスのコンテキスト +プロパティだけを変更することができます。@c +他の全ての同じタイプのコンテキスト インスタンスは、LilyPond に組み込まれて@c +スコープ内の @code{\layout} ブロックによって変更されたデフォルト設定の@c +ままです。@c +@code{\with} ブロックは @code{\new} @var{context-type} コマンドの直後に@c +配置する必要があります: + +@example +\new Staff +\with @{ + [このコンテキスト インスタンスだけに適用されるコンテキスト設定] +@} @{ +... +@} +@end example + +以下のタイプの設定を指定することができます: + +@itemize +@item +@code{\override} コマンド -- コンテキスト名を省略します + +@lilypond[quote,verbatim] +\score { + \new Staff { + \new Voice + \with { + \override Stem #'thickness = #4.0 + } + { + \relative c'' { + a4^"Thick stems" a a a + a4 a a a + } + } + } +} +@end lilypond + +@item +コンテキスト プロパティを直接設定します + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \relative c'' { + a4^"Default font" a a a + a4 a a a + } + } + \new Staff + \with { + fontSize = #-4 + } { + \relative c'' { + a4^"Smaller font" a a a + a4 a a a + } + } + >> +} +@end lilypond + +@item +@code{\dynamicUp} 等のあらかじめ定義されているコマンド + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \new Voice { + \relative c'' { + a4^"Dynamics below" a a a + a4 a a\ff a + } + } + } + \new Staff + \with { \accidentalStyle "dodecaphonic" } + { + \new Voice + \with { \dynamicUp } + { + \relative c'' { + a4^"Dynamics above" a a a + a4 a a\ff a + } + } + } + >> +} +@end lilypond + +@end itemize + +@node 適用順序 +@unnumberedsubsubsec 適用順序 +@translationof Order of precedence + +ある特定のタイミングで適用されるプロパティの値は以下のように決定されます: + +@itemize +@item +入力ストリームの中の @code{\override} コマンドや @code{\set} コマンドが +ある場合、その値が用いられます。 + +@item +さもなければ、コンテキスト初期宣言の @code{\with} から取得したデフォルト値@c +が用いられます。 + +@item +さもなければ、@code{\layout} ブロックの中にある直近で適切な @code{\context} +ブロックから取得したデフォルト値が用いられます。 + +@item +さもなければ、LilyPond の組み込みデフォルト値が用いられます。 +@end itemize + +@seealso +学習マニュアル: +@rlearning{Modifying context properties} + +記譜法リファレンス: +@ref{Contexts explained}, +@ref{Bottom-level contexts - voices}, +@ref{The set command}, +@ref{The override command}, +@ref{The \layout block} + + +@node 新しいコンテキストを定義する +@subsection 新しいコンテキストを定義する +@translationof Defining new contexts + +@cindex contexts, defining new (新しいコンテキストを定義する) +@cindex engravers, including in contexts (エングラーバをコンテキストに含める) + +@funindex \alias +@funindex alias +@funindex \name +@funindex name +@funindex \type +@funindex type +@funindex \consists +@funindex consists +@funindex \accepts +@funindex accepts +@funindex \denies +@funindex denies + +@code{Staff} や @code{Voice} のようなコンテキストは、@c +簡単なブロックの組み合わせで構成されています。 +エングラーバ プラグインの組み合わせを変えることで、@c +新しいタイプのコンテキスを作成することができます。 + +次の例は、ゼロからタイプの異なる @code{Voice} コンテキストを作り上げる方法を@c +示しています。@c +このコンテキストは @code{Voice} コンテキストに似ていますが、@c +音符の代わりにスラッシュを譜の中央に譜刻します。@c +これはジャズで即興を表すのに使うことができます。 + +@lilypond[quote,ragged-right] +\layout { \context { + \name ImproVoice + \type "Engraver_group" + \consists "Note_heads_engraver" + \consists "Rhythmic_column_engraver" + \consists "Text_engraver" + \consists Pitch_squash_engraver + squashedPosition = #0 + \override NoteHead #'style = #'slash + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \alias Voice +} +\context { \Staff + \accepts "ImproVoice" +}} + +\relative c'' { + a4 d8 bes8 \new ImproVoice { c4^"ad lib" c + c4 c^"undress" c_"while playing :)" c } + a1 +} +@end lilypond + + +これらの設定は @code{\layout} ブロック内部の @code{\context} ブロック@c +の中で定義します: + +@example +\layout @{ + \context @{ + @dots{} + @} +@} +@end example + +以下では、上記の例の @dots{} に入るべき入力について議論します。 + +最初に、新しいコンテキストの名前を定義する必要があります: + +@example +\name ImproVoice +@end example + +このコンテキストは @code{Voice} に似せる必要があるため、@c +(既存の) @code{Voice} と同じ機能を実現するコマンドが必要です。@c +これは、新しいコンテキストにエイリアス @code{Voice} を与えることで実現できます。 + +@example +\alias Voice +@end example + +このコンテキストは音符と指示テキストを譜刻しますので、@c +それらの機能を提供するエングラーバを付け加える必要があります: + +@example +\consists Note_heads_engraver +\consists Text_engraver +@end example + +しかしながら、音符の代わりにスラッシュを譜の中央線上に配置します: + +@example +\consists Pitch_squash_engraver +squashedPosition = #0 +@end example + +@rinternals{Pitch_squash_engraver} は +(@rinternals{Note_heads_engraver} によって作成される) 符頭を変更し、@c +符頭の垂直位置を @code{squashedPosition} にセットします +-- 今回は @code{0}、つまり中央線上です。 + +音符はスラッシュで、符幹を持ちません: + +@example +\override NoteHead #'style = #'slash +\override Stem #'transparent = ##t +\override Flag #'transparent = ##t +@end example + +これらのプラグインすべてが共同する必要があり、@c +それには特殊なプラグインが必要です。@c +このプラグインは常に @code{Engraver_group} であり、@c +キーワード @code{\type} を付ける必要があります。 + +@example +\type "Engraver_group" +@end example + +まとめると、以下のようになります: + +@example +\context @{ + \name ImproVoice + \type "Engraver_group" + \consists "Note_heads_engraver" + \consists "Text_engraver" + \consists Pitch_squash_engraver + squashedPosition = #0 + \override NoteHead #'style = #'slash + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \alias Voice +@} +@end example + +@funindex \accepts +コンテキストは階層を構成します。c +通常の @code{Voice} と同様に、@c +@code{ImproVoice} を @code{Staff} の下に置く必要があります。@c +それゆえ、@code{Staff} 定義を @code{\accepts} コマンドで変更します: + +@example +\context @{ + \Staff + \accepts ImproVoice +@} +@end example + +@funindex \denies +@code{\accepts} の反対は @code{\denies} です。@c +これは既存のコンテキスト定義を再利用する場合に必要となります。 + +以下のように、両方を @code{\layout} ブロックの中に置きます: + +@example +\layout @{ + \context @{ + \name ImproVoice + @dots{} + @} + \context @{ + \Staff + \accepts "ImproVoice" + @} +@} +@end example + +それから、このサブセクションの最初にあった出力を入力します: + +@example +\relative c'' @{ + a4 d8 bes8 + \new ImproVoice @{ + c4^"ad lib" c + c4 c^"undress" + c c_"while playing :)" + @} + a1 +@} +@end example + + +@node コンテキストの配置順序 +@subsection コンテキストの配置順序 +@translationof Context layout order + +@cindex contexts, layout order (コンテキストの配置順序) +@funindex \accepts +@funindex \denies + +通常、コンテキストは入力ファイルの中で記述した順に楽譜の段の上から下に@c +配置されます。@c +コンテキストがネストされている場合、外側のコンテキストは入力ファイルの@c +中で指定されたコンテキストを内側に保持して、内側のコンテキストは外側の@c +コンテキストの @qq{accepts} リストに含まれます。@c +ネストされたコンテキストのうち外側のコンテキストの @qq{accepts} リスト@c +に含まれないものは、ネストされずに外側のコンテキストの下に再配置されます。 + +コンテキストの @qq{accepts} リストを @code{\accepts} コマンドと +@code{\denies} コマンドで変更することができます。@c +@code{\accepts} はコンテキストを @qq{accepts} リストに追加して、@c +@code{\denies} は @qq{accepts} リストからコンテキストを削除します。@c +例えば、通常、コード ネームは @code{Staff} コンテキストの中にネスト@c +されないため、@code{ChordNames} コンテキストはデフォルトでは @code{Staff} +コンテキストの @qq{accepts} リストには含まれませんが、リストに含める必要が@c +あれば含めることができます: + +@lilypond[verbatim,quote] +\score { + \new Staff { + c' d' e' f' + \chords { d1:m7 b1:min7.5- } + } +} +@end lilypond + +@lilypond[verbatim,quote] +\score { + \new Staff { + c' d' e' f' + \chords { d1:m7 b1:min7.5- } + } + \layout { + \context { + \Staff + \accepts "ChordNames" + } + } +} +@end lilypond + +@code{\denies} は主に、他のコンテキストをベースに新しいコンテキストを@c +作成した時に、中にネストするコンテキストを変更するために用いられます。 + +例えば、@code{VaticanaStaff} コンテキストは @code{Staff} コンテキストを@c +ベースにしていますが、@qq{accepts} リストでは @code{Voice} コンテキスト@c +の代わりに @code{VaticanaVoice} コンテキストを保持しています。 + +コンテキストに保持されるべきコマンドが出現して、それを保持するための@c +適切なコンテキストが存在しない場合、コンテキストが暗黙的に作成される@c +ということに注意してください。@c +これは予期しない譜や楽譜を生み出す可能性があります。 + +@cindex alignAboveContext +@cindex alignBelowContext +@funindex alignAboveContext +@funindex alignBelowContext + +短い期間、あるコンテキストを存在させる必要がある場合があります。@c +オッシアの譜コンテキストが良い例です。@c +通常、これは主音楽の対応するセクションと並列に、適切な場所でコンテキスト@c +定義を行うことで実現します。@c +デフォルトでは、一時コンテキストは既存のすべてのコンテキストの下に配置@c +されます。@c +@qq{main} というコンテキストの上に配置し直すには以下のようにします: + +@example +@code{\new Staff \with @{ alignAboveContext = #"main" @} } +@end example + +@code{ChoirStaff} のような複数の譜のレイアウトで一時的な歌詞を配置する場合 +-- 例えば、繰り返しセクションに 2 番目の歌詞を追加する場合 -- +にも同様な状況が発生します。@c +デフォルトでは、一時的な歌詞は下段の譜の下に配置されます。@c +一時的な歌詞コンテキストを @code{alignBelowContext} で定義することにより、@c +1 番目の歌詞を保持する (名前付きの) 歌詞コンテキストの下に配置することが@c +できます。 + +一時コンテキストを再配置する例は他にもあります +-- @rlearning{Nesting music expressions}、+@ref{Modifying single staves}、@c +それに @ref{Techniques specific to lyrics} を参照してください。 + +@seealso +学習マニュアル: +@rlearning{Nesting music expressions} + +記譜法リファレンス: +@ref{Modifying single staves}, +@ref{Techniques specific to lyrics} + +アプリケーション使用方法: +@rprogram{An extra staff appears} + +インストールされているファイル: +@file{ly/engraver-init.ly} + + +@node 内部リファレンスの説明 +@section 内部リファレンスの説明 +@translationof Explaining the Internals Reference + + +@menu +* 内部リファレンスを使いこなす:: +* レイアウト インターフェイス:: +* グラフィカル オブジェクト プロパティを決定する:: +* 命名規約:: +@end menu + +@node 内部リファレンスを使いこなす +@subsection 内部リファレンスを使いこなす +@translationof Navigating the program reference + +@c TODO remove this (it's in the LM) +@c Replace with more factual directions + +以下の譜面の運指記号を移動させたいとします: + +@lilypond[quote,relative=2,verbatim] +c-2 +\stemUp +f +@end lilypond + +運指指示のドキュメント (@ref{運指の指示}) を見ると、@c +以下のようなセクションがあることに気付くはずです: + +@quotation +@strong{参照} + +内部リファレンス: @rinternals{Fingering} + +@end quotation + + +@c outdated info; probably will delete. +@ignore +This fragment points to two parts of the program reference: a page +on @code{FingeringEvent} and one on @code{Fingering}. + +The page on @code{FingeringEvent} describes the properties of the music +expression for the input @code{-2}. The page contains many links +forward. For example, it says + +@quotation +Accepted by: @rinternals{Fingering_engraver}, +@end quotation + +@noindent +That link brings us to the documentation for the Engraver, the +plug-in, which says + +@quotation +This engraver creates the following layout objects: @rinternals{Fingering}. +@end quotation + +In other words, once the @code{FingeringEvent}s are interpreted, the +@code{Fingering_engraver} plug-in will process them. +@end ignore + +@ignore +@c I can't figure out what this is supposed to mean. -gp + +The @code{Fingering_engraver} is also listed to create +@rinternals{Fingering} objects, + +@c old info? it doesn't make any sense to me with our current docs. +This is also the +second bit of information listed under @b{See also} in the Notation +manual. +@end ignore + +@ifnothtml +内部リファレンスは HTML ドキュメント形式で入手可能です。@c +内部リファレンスは、オンラインか HTML ドキュメントをダウンロードするかして、@c +HTML 形式で読むことを強く推奨します。@c +PDF マニュアルを使用していると、@c +このセクションを理解するのはずっと困難になります。@c +(訳者: 日本語では PDF 形式での提供はありません。) +@end ifnothtml + +@rinternals{Fingering} へのリンクを辿ってください。@c +ページの先頭に、以下のような記述があります: + +@quotation +Fingering objects are created by: @rinternals{Fingering_engraver} and +@rinternals{New_fingering_engraver}. +@end quotation + +内部リファレンスの中にある関連リンクを辿っていくことで、@c +プログラム内部の情報フローを追っていくことができます: + +@itemize + +@item @rinternals{Fingering}: +@rinternals{Fingering} objects are created by: +@rinternals{Fingering_engraver} + +(@rinternals{Fingering}: +@rinternals{Fingering} オブジェクトを作成するのは: +@rinternals{Fingering_engraver}) + + +@item @rinternals{Fingering_engraver}: +Music types accepted: +@rinternals{fingering-event} + +(@rinternals{Fingering_engraver}: +受け取る音楽タイプは: @rinternals{fingering-event}) + +@item @rinternals{fingering-event}: +Music event type @code{fingering-event} is in +Music expressions named @rinternals{FingeringEvent} + +(@rinternals{fingering-event}: +音楽イベント タイプ @code{fingering-event} は +@rinternals{FingeringEvent} という名前の音楽表記の中にあります) +@end itemize + +このパスは、プログラム内部での情報フローとは逆向きです: +出力からスタートして、入力イベントで終わっています。@c +入力イベントからスタートして、情報フローを読み進め、@c +最後は出力オブジェクトに辿り着くこともできます。 + +内部リファレンスを通常のドキュメントのように読むこともできます。@c +内部リファレンスに含まれる章は、 +@ifhtml +@rinternals{Music definitions}, +@end ifhtml +@ifnothtml +@code{Music definitions}, +@end ifnothtml +@rinternals{Translation}, それに @rinternals{Backend} です。 +各章は、使用されているすべての定義と調整可能なすべてのプロパティを@c +リストアップしています。 + + +@node レイアウト インターフェイス +@subsection レイアウト インターフェイス +@translationof Layout interfaces + +@cindex interface, layout (レイアウト インターフェイス) +@cindex layout interface (レイアウト インターフェイス) +@cindex grob (グラフィカル オブジェクト) + +前のセクションで見た HTML ページには、@c +@rinternals{Fingering} と呼ばれるレイアウト オブジェクトについての@c +記述がありました。@c +そのようなオブジェクトは楽譜で記号となります。@c +レイアウト オブジェクトは (太さや向きのような) 数値を保持する@c +プロパティを持っていますが、@c +関連オブジェクトへのポインタも持っています。@c +レイアウト オブジェクトは @emph{Grob} +-- これはグラフィカル オブジェクトを縮めたものです -- +とも呼ばれます。@c +Grob についての詳細は、@rinternals{grob-interface} を参照してください。 + +@code{Fingering} のページは、@c +@code{Fingering} オブジェクトの定義をリストアップしています。@c +例えば、このページには以下のような記述があります: + +@quotation +@code{padding} (dimension, in staff space): + +@code{0.5} +@end quotation + +@noindent +これは、この数値は少なくとも符頭の 0.5 倍の距離を保つということを意味します。 + + +各レイアウト オブジェクトは、記譜要素あるいは写植要素としての機能を@c +いくつか持つ場合があります。@c +例えば、@code{Fingering} オブジェクトは以下の側面を持っています: + +@itemize +@item +Its size is independent of the horizontal spacing, unlike slurs or beams. + +(このオブジェクトのサイズは、スラーや連桁と異なり、@c +水平方向のスペースとは無関係です) + +@item +It is a piece of text. Granted, it is usually a very short text. + +(このオブジェクトはテキストです。通常、これは非常に短いテキストです。) + +@item +That piece of text is typeset with a font, unlike slurs or beams. + +(このテキストは、スラーや連桁と異なり、フォントで写植されます。) + +@item +Horizontally, the center of the symbol should be aligned to the +center of the note head. + +(水平方向では、この記号の中心は符頭の中心に揃えられます。) + +@item +Vertically, the symbol is placed next to the note and the staff. + +(垂直方向では、この記号は音符や譜の近く配置されます。) + +@item +The vertical position is also coordinated with other superscript +and subscript symbols. + +(また、垂直方向の位置は、他の上付き記号や下付き記号との調整によって決まります。) +@end itemize + +これらの側面はそれぞれ、いわゆる @emph{インターフェイス} +として捉ええられます。@c +それらは、@rinternals{Fingering} ページの最下部でリストアップされています。 + +@quotation +This object supports the following interfaces: + +(このオブジェクトは以下のインターフェイスをサポートします:) + +@rinternals{item-interface}, +@rinternals{self-alignment-interface}, +@rinternals{side-position-interface}, @rinternals{text-interface}, +@rinternals{text-script-interface}, @rinternals{font-interface}, +@rinternals{finger-interface}, and @rinternals{grob-interface}. +@end quotation + +リンクのいずれかをクリックすると、@c +それぞれのオブジェクト インターフェイスのページに行くことができます。@c +各インターフェイスはいくつかのプロパティを持ちます。@c +それらプロパティの中には、ユーザにとって役に立たないもの +(@q{内部プロパティ}) もありますが、それ以外は変更可能です。 + +これまで @code{Fingering} オブジェクトについて話してきましたが、@c +これは実際にはそれほど多くのことをしているわけではありません。@c +初期化ファイル (@rlearning{その他の情報源} を参照してください) +@file{scm/define-grobs.scm} がこの @q{オブジェクト} の本質を示しています: + +@example +(Fingering + . ((padding . 0.5) + (avoid-slur . around) + (slur-padding . 0.2) + (staff-padding . 0.5) + (self-alignment-X . 0) + (self-alignment-Y . 0) + (script-priority . 100) + (stencil . ,ly:text-interface::print) + (direction . ,ly:script-interface::calc-direction) + (font-encoding . fetaText) + (font-size . -5) ; don't overlap when next to heads. + (meta . ((class . Item) + (interfaces . (finger-interface + font-interface + text-script-interface + text-interface + side-position-interface + self-alignment-interface + item-interface)))))) +@end example + +@noindent +見て取ることができるように、@c +@code{Fingering} オブジェクトは変数設定の塊に過ぎず、@c +内部リファレンスの中にある Web ページは、@c +この定義から直接生成されたに過ぎません。 + + +@node グラフィカル オブジェクト プロパティを決定する +@subsection グラフィカル オブジェクト プロパティを決定する +@translationof Determining the grob property + +@c TODO remove this (it's in the LM) +@c Replace with more factual directions + +以下の @b{2} の位置を変更しようとしていたことを思い出してください: + +@lilypond[quote,fragment,relative=2,verbatim] +c-2 +\stemUp +f +@end lilypond + +垂直方向で見て、@b{2} は元の音符の隣に配置されるのですから、@c +この配置に関連するインターフェイスに干渉する必要があります。@c +これは @code{side-position-interface} を用いて行います。@c +このインターフェイスについてのページには、以下のように記述されています: + +@quotation +@code{side-position-interface} + +Position a victim object (this one) next to other objects (the +support). The property @code{direction} signifies where to put the +victim object relative to the support (left or right, up or down?) + +(対象オブジェクトを他のオブジェクト (サポート オブジェクト) +の隣に配置します。@c +このプロパティ @code{direction} は、@c +対象オブジェクトをどこに配置するかを@c +サポート オブジェクトからの相対位置で示します +(左あるいは右、上あるいは下?)) +@end quotation + +@cindex padding +@noindent +この記述の下に、以下のような変数 @code{padding} についての記述があります: + +@quotation +@table @code +@item padding +(dimension, in staff space) +(譜スペースを単位とする距離) + +Add this much extra space between objects that are next to each other. +(隣り合うオブジェクトの間にスペースを付け加えます) +@end table +@end quotation + +@code{padding} の値を増やすことで、@c +運指記号を符頭から離すことができます。@c +以下のコマンドは、音符と運指記号の間に 3 譜スペースを挿入します: + +@example +\once \override Voice.Fingering #'padding = #3 +@end example + +このコマンドを @code{Fingering} オブジェクトが作成される前に挿入する +-- つまり @code{c2} の前に挿入する -- と、以下のような結果が得られます: + +@lilypond[quote,relative=2,fragment,verbatim] +\once \override Voice.Fingering #'padding = #3 +c-2 +\stemUp +f +@end lilypond + + +このケースでは、調整されるコンテキストは @code{Voice} です。@c +このことは、内部リファレンスの @rinternals{Fingering_engraver} +プラグインについてのページからわかります。@c +このページには、以下のような記述があります: + +@quotation +Fingering_engraver is part of contexts: @dots{} @rinternals{Voice} + +(Fingering_engraver は次のコンテキストの一部です: @dots{} @rinternals{Voice}) +@end quotation + + +@node 命名規約 +@subsection 命名規約 +@translationof Naming conventions + +内部リファレンスについて他に説明しておくべき事柄として、@c +さまざまな命名規約についての概要があります: + +@itemize +@item Scheme スタイル: 小文字の単語をハイフンでつなぎます +(1 単語の名前を含みます) -- 例: lowercase-with-hyphens +@item Scheme 関数: Scheme スタイルの先頭に @code{ly:} を付けます +-- 例: ly:plus-scheme-style +@item 音楽イベント、音楽クラス、それに音楽プロパティ: Scheme スタイルです +-- 例: as-scheme-functions +@item グラフィカル オブジェクト インターフェイス: Scheme スタイルです +-- 例: scheme-style +@item バックエンド プロパティ: Scheme スタイルです (が、X と Y があります!) +@item コンテキスト (それに、音楽表記とグラフィカル オブジェクト): +大文字で始まる単語、あるいはそれらをつなげます +-- 例: Capitalized, CamelCase +@item コンテキスト プロパティ: +小文字で始まる単語に、大文字で始まる単語をつなげます +-- 例: lowercaseFollowedByCamelCase +@item エングラーバ: +大文字で始まる単語に、小文字で始まる単語をアンダスコアでつなげます +-- 例: Capitalized_followed_by_lowercase_and_with_underscores +@end itemize + +疑問: +@itemize +@item 命名規約のうち、慣習なのはどれで、規則なのはどれか? +@item 命名規約のうち、どれが基本言語の規則で、@c +どれが LP (訳者: LilyPond?) 特有の規則なのか? +@end itemize + + +@node プロパティを変更する +@section プロパティを変更する +@translationof Modifying properties + +@c TODO change the menu and subsection node names to use +@c backslash once the new macro to handle the refs +@c is available. Need to find and change all refs at +@c the same time. -td + +@menu +* プロパティ変更の概要:: +* set コマンド:: +* override コマンド:: +* tweak コマンド:: +* set 対 override:: +* 連想配列を変更する:: +@end menu + + +@node プロパティ変更の概要 +@subsection プロパティ変更の概要 +@translationof Overview of modifying properties + +各コンテキストは、ある特定のタイプのグラフィカル オブジェクトを作成することに@c +ついて責任を持ちます。@c +それらのオブジェクトを表示するために使用される設定も、@c +コンテキストによって保存されます。@c +それらの設定を変更することにより、オブジェクトの見た目を変えることができます。 + +コンテキストに保存されるプロパティには 2 種類あります: +コンテキスト プロパティとグラフィカル オブジェクト プロパティです。@c +コンテキスト プロパティは、コンテキスト全体に適用され、@c +コンテキスト自体をどのように表示するかを制御します。@c +対照的に、グラフィカル オブジェクト プロパティは、コンテキストの中に表示される@c +ある特定のタイプのグラフィカル オブジェクトに適用されます。 + +@code{\set} コマンドと @code{\unset} コマンドは、@c +コンテキスト プロパティの値を変更するために使用されます。@c +@code{\override} コマンドと @code{\revert} コマンドは、@c +グラフィカル オブジェクト プロパティの値を変更するために使用されます。 + +@ignore +The syntax for this is + +@example +\override @var{context}.@var{name} #'@var{property} = #@var{value} +@end example + +Here @var{name} is the name of a graphical object, like +@code{Stem} or @code{NoteHead}, and @var{property} is an internal +variable of the formatting system (@q{grob property} or @q{layout +property}). The latter is a symbol, so it must be quoted. The +subsection @ref{Modifying properties}, explains what to fill in +for @var{name}, @var{property}, and @var{value}. Here we only +discuss the functionality of this command. + +The command + +@verbatim +\override Staff.Stem #'thickness = #4.0 +@end verbatim + +@noindent +makes stems thicker (the default is 1.3, with staff line thickness as a +unit). Since the command specifies @code{Staff} as context, it only +applies to the current staff. Other staves will keep their normal +appearance. Here we see the command in action: + +@lilypond[quote,verbatim,relative=2,fragment] +c4 +\override Staff.Stem #'thickness = #4.0 +c4 +c4 +c4 +@end lilypond + +The @code{\override} command changes the definition of the @code{Stem} +within the current @code{Staff}. After the command is interpreted +all stems are thickened. + +Analogous to @code{\set}, the @var{context} argument may be left out, +causing the default context @code{Voice} to be used. Adding +@code{\once} applies the change during one timestep only. + +@lilypond[quote,fragment,verbatim,relative=2] +c4 +\once \override Stem #'thickness = #4.0 +c4 +c4 +@end lilypond + +The @code{\override} must be done before the object is +started. Therefore, when altering @emph{Spanner} objects such as slurs +or beams, the @code{\override} command must be executed at the moment +when the object is created. In this example, + +@lilypond[quote,fragment,verbatim,relative=2] +\override Slur #'thickness = #3.0 +c8[( c +\override Beam #'thickness = #0.6 +c8 c]) +@end lilypond + +@noindent +the slur is fatter but the beam is not. This is because the command for +@code{Beam} comes after the Beam is started, so it has no effect. + +Analogous to @code{\unset}, the @code{\revert} command for a context +undoes an @code{\override} command; like with @code{\unset}, it only +affects settings that were made in the same context. In other words, the +@code{\revert} in the next example does not do anything. + +@example +\override Voice.Stem #'thickness = #4.0 +\revert Staff.Stem #'thickness +@end example + +Some tweakable options are called @q{subproperties} and reside inside +properties. To tweak those, use commands of the form + +@c leave this as a long long +@example +\override @var{context}.@var{name} #'@var{property} #'@var{subproperty} = #@var{value} +@end example + +@noindent +such as + +@example +\override Stem #'(details beamed-lengths) = #'(4 4 3) +@end example + +@end ignore + +@seealso +内部リファレンス: +@rinternals{Backend}, +@rinternals{All layout objects}, +@rinternals{OverrideProperty}, +@rinternals{RevertProperty}, +@rinternals{PropertySet} + + +@knownissues + +バックエンドはオブジェクト プロパティのタイプ チェックを@c +それほど厳密には行いません。@c +Scheme 値の循環参照は、ハング アップまたはクラッシュ、@c +あるいは両方を引き起こす可能性があります。 + + + +@node set コマンド +@subsection @code{\set} コマンド +@translationof The set command + +@cindex properties (プロパティ) +@funindex \set +@cindex changing properties (プロパティを変更する) + +各コンテキストは @emph{プロパティ} の集合を持ちます。@c +プロパティとは、コンテキストの中に保持されている変数です。@c +コンテキスト プロパティは、@code{\set} コマンドによって変更されます。@c +@code{\set} コマンドは以下のような構文を持ちます: + +@example +\set @var{context}.@var{property} = #@var{value} +@end example + +@var{value} は Scheme オブジェクトですので、@c +@code{#} 文字を前に置く必要があります。 + +通常、コンテキスト プロパティの名前は、@c +小文字で始まる単語に大文字で始まる単語をつなげたものです。@c +これらはたいてい音楽から記譜への翻訳を制御します +-- 例えば、@code{localKeySignature} (臨時記号を表示するかどうかを決定します) +や、@code{measurePosition} (小節線を表示するタイミングを決定します) です。@c +コンテキスト プロパティは、楽曲の解釈をしている間、@c +ずっと値を変更しておくことができます。@c +@code{measurePosition} がその良い例です。@c +コンテキスト プロパティは @code{\set} で変更されます。 + +例えば、コンテキスト プロパティ @code{skipBars} が +@code{#t} にセットされていれば、@c +複小節休符は 1 つの小節に統合されます: + +@lilypond[quote,verbatim,relative=2,fragment] +R1*2 +\set Score.skipBars = ##t +R1*2 +@end lilypond + +@var{context} 引数が省略されている場合、@c +プロパティはカレントの最下位のコンテキストにセットされます +(一般に、@code{ChordNames}, @code{Voice}, @code{TabVoice}, +あるいは @code{Lyrics} です)。 + +@lilypond[quote,verbatim,relative=2] +\set Score.autoBeaming = ##f +<< + { + e8 e e e + \set autoBeaming = ##t + e8 e e e + } \\ { + c8 c c c c8 c c c + } +>> +@end lilypond + +変更は @q{オンザフライ} (その場、その時々) で適用されるため、@c +設定 @code{\set autoBeaming = ##t} は 2 番目の 8 分音符グループだけに@c +効果を持ちます。 + +最下位コンテキストが常に変更しようとしているプロパティを持っているとは@c +限らないということに注意してください +-- 例えば、@code{skipBars} プロパティをデフォルトの最下位コンテキスト +(この場合は、@code{Voice} です) にセットしようと試みても、効果はありません。@c +なぜなら、@code{skipBars} は @code{Score} コンテキストのプロパティだからです。 + +@lilypond[quote,verbatim,relative=2] +R1*2 +\set skipBars = ##t +R1*2 +@end lilypond + +コンテキストは階層構造をとるため、音楽表記を囲っているコンテキスト +-- 例えば、@code{Staff} -- が指定された場合、@c +変更はカレントの @code{Staff} の中にあるすべての @code{Voice} に適用されます。 + +@funindex \unset + +@code{\unset} コマンド: + +@example +\unset @var{context}.@var{property} +@end example + +@noindent +は、@var{context} から @var{property} の定義を削除するために使用されます。@c +このコマンドは、@var{context} の中にセットされた場合にのみ、定義を削除します。@c +音楽表記を囲っているコンテキストにセットされたプロパティは、@c +囲まれているコンテキストの中にある @code{\unset} では変更されません: + +@lilypond[quote,verbatim,relative=2] +\set Score.autoBeaming = ##t +<< + { + \unset autoBeaming + e8 e e e + \unset Score.autoBeaming + e8 e e e + } \\ { + c8 c c c c8 c c c + } +>> +@end lilypond + +@code{\set} と同様に、 +最下位コンテキストに対しては @var{context} 引数を指定する必要はありません。@c +ですから、以下の 2 つの記述: + +@example +\set Voice.autoBeaming = ##t +\set autoBeaming = ##t +@end example + +@noindent +は、カレントの最下位コンテキストが @code{Voice} であれば、等価です。 + + +@cindex \once +@code{\set} の前に @code{\once} を置くと、@c +その設定は単一の時間ステップにだけ適用されます: + +@lilypond[quote,verbatim,relative=2] +c4 +\once \set fontSize = #4.7 +c4 +c4 +@end lilypond + +利用可能なすべてのコンテキスト プロパティについての完全な記述は、@c +内部リファレンスにあります。@c +以下を参照してください: +@ifhtml +@rinternals{Tunable context properties}. +@end ifhtml +@ifnothtml +Translation @expansion{} Tunable context properties. +@end ifnothtml + +@seealso +内部リファレンス: +@rinternals{Tunable context properties} + +@cindex grob properties (グラフィカル オブジェクト プロパティ) +@cindex properties, grob (グラフィカル オブジェクト プロパティ) +@funindex \override + + +@node override コマンド +@subsection @code{\override} コマンド +@translationof The override command + +特殊なタイプのコンテキスト プロパティがあります: +グラフィカル オブジェクト記述です。@c +グラフィカル オブジェクト記述には @code{StudlyCaps} という名前 +(大文字で始まります) が付けられています。@c +これらは、関連リストとして、ある特定の種類のグラフィカル オブジェクト用の +@q{デフォルト設定} を保持します。@c +各グラフィカル オブジェクト記述の設定を調べるには、@c +@file{scm/define-grobs.scm} を参照してください。@c +各グラフィカル オブジェクト記述は @code{\override} を用いて変更します。 + +@code{\override} は、実際のところ、簡略化した記述です。 + +@example +\override @var{context}.@var{GrobName} #'@var{property} = #@var{value} +@end example + +@noindent +これは、以下と等価です: + +@c leave this long line -gp +@example +\set @var{context}.@var{GrobName} = + #(cons (cons '@var{property} @var{value}) + ) +@end example + +@code{context}.@code{GrobName} (alist) の値は、@c +個々のグラフィカル オブジェクトのプロパティを初期化するために使用されます。@c +グラフィカル オブジェクトは、Scheme スタイルの名前 +(小文字の単語を @code{-} でつないだもの) のプロパティを持ちます。@c +グラフィカル オブジェクト プロパティの値は、@c +フォーマット処理の間ずっと変更されています: +基本的に、フォーマット処理は、@c +コールバック関数を用いてプロパティを計算することに他なりません。@c + +例えば、@code{Stem} オブジェクトの @code{thickness} プロパティを@c +オーバライドすることによって、符幹の太さを太くすることができます: + +@lilypond[quote,verbatim,relative=2] +c4 c +\override Voice.Stem #'thickness = #3.0 +c4 c +@end lilypond + +If no context is specified in an @code{\override}, the bottom +context is used: + +@lilypond[quote,verbatim,relative=2] +{ \override Staff.Stem #'thickness = #3.0 + << + { + e4 e + \override Stem #'thickness = #0.5 + e4 e + } \\ { + c4 c c c + } + >> +} +@end lilypond + +@funindex \revert +@cindex reverting overrides (オーバライドを元に戻す) +@cindex overrides, reverting (オーバライドを元に戻す) + +@code{\override} の効果は、@code{\revert} によって元に戻すことができます: + +@lilypond[quote,verbatim,relative=2] +c4 +\override Voice.Stem #'thickness = #3.0 +c4 c +\revert Voice.Stem #'thickness +c4 +@end lilypond + +@code{\override} と @code{\revert} の効果は、@c +その時点から影響を受けるコンテキストの中にある@c +すべてのグラフィカル オブジェクトに適用されます: + +@lilypond[quote,verbatim,relative=2] +{ + << + { + e4 + \override Staff.Stem #'thickness = #3.0 + e4 e e + } \\ { + c4 c c + \revert Staff.Stem #'thickness + c4 + } + >> +} +@end lilypond + +@funindex \once +@cindex overriding for only one moment (一時的にオーバライドする) + +@code{\once} を @code{\override} と共に用いることで、@c +カレントの時間ステップだけに効果を与えることができます: + +@lilypond[quote,verbatim,relative=2] +{ + << + { + \override Stem #'thickness = #3.0 + e4 e e e + } \\ { + c4 + \once \override Stem #'thickness = #3.0 + c4 c c + } + >> +} +@end lilypond + + +@ignore +Commands which change output generally look like + +@example +\override Voice.Stem #'thickness = #3.0 +@end example + +@noindent +To construct this tweak we must determine these bits of information: + +@itemize +@item the context: here @code{Voice}. +@item the layout object: here @code{Stem}. +@item the layout property: here @code{thickness}. +@item a sensible value: here @code{3.0}. +@end itemize + +Some tweakable options are called @q{subproperties} and reside inside +properties. To tweak those, use commands in the form + +@example +\override Stem #'(details beamed-lengths) = #'(4 4 3) +@end example + +@cindex internal documentation +@cindex finding graphical objects +@cindex graphical object descriptions +@cindex tweaking +@funindex \override +@cindex internal documentation + +For many properties, regardless of the data type of the property, setting the +property to false ( @code{##f} ) will result in turning it off, causing +LilyPond to ignore that property entirely. This is particularly useful for +turning off grob properties which may otherwise be causing problems. + +We demonstrate how to glean this information from the notation manual +and the program reference. +@end ignore + +@seealso +内部リファレンス: +@rinternals{Backend} + + +@node tweak コマンド +@subsection @code{\tweak} コマンド +@translationof The tweak command + +@funindex \tweak +@cindex tweaking (調整) + +@code{\tweak} を用いたグラフィカル オブジェクト プロパティの変更は、@c +コンテキストの中にあるすべてのグラフィカル オブジェクトに適用されます。@c +しかしながら、@c +影響を受けるコンテキストの中にあるすべてのグラフィカル オブジェクトではなく、@c +1 つのグラフィカル オブジェクトだけに変更を適用したい場合もあります。@c +そうするには、@code{\tweak} コマンドを用います。@c +@code{\tweak} コマンドは以下のような構文を持ちます: + +@example +\tweak @var{layout-object} #'@var{grob-property} @var{value} +@end example + +@code{layout-object} の指定はオプションです。@c +@code{\tweak} コマンドは、音楽の流れの中で +@code{value} のすぐ後に現れる音楽オブジェクトに変更を適用します。 + +@ignore +In some cases, it is possible to take a short-cut for tuning +graphical objects. For objects that are created directly from +an item in the input file, you can use the @code{\tweak} command. +For example: + +@lilypond[relative=2,verbatim,quote] +< c + \tweak #'color #red + d + g + \tweak #'duration-log #1 + a +> 4 +-\tweak #'padding #8 +-^ +@end lilypond + + + +But the main use of the @code{\tweak} command is to modify just +one of a number of notation elements which start at the same musical +moment, like the notes of a chord, or tuplet brackets which start +at the same time. + +The @code{\tweak} command sets a property in the following object +directly, without requiring the grob name or context to be +specified. For this to work, it is necessary for the @code{\tweak} +command to remain immediately adjacent to the object to which it is +to apply after the input file has been converted to a music stream. +This is often not the case, as many additional elements are inserted +into the music stream implicitly. For example, when a note which is +not part of a chord is processed, LilyPond implicitly inserts a +@code{ChordEvent} event before the note, so separating the tweak +from the note. However, if chord symbols are placed round the +tweak and the note, the @code{\tweak} command comes after the +@code{ChordEvent} in the music stream, so remaining adjacent to the +note, and able to modify it. + +So, this works: + +@lilypond[relative=2,verbatim,quote] +<\tweak #'color #red c>4 +@end lilypond + +@noindent +but this does not: + +@lilypond[relative=2,verbatim,quote] +\tweak #'color #red c4 +@end lilypond + +@end ignore + +調整コマンドの構文と使用方法についての紹介は、@c +@rlearning{調整手段} を参照してください。 + +同じようなオブジェクトがいくつか、同じ音楽タイミングで配置されている場合、@c +@code{\override} コマンドでそれらの 1 つだけを変更することはできません +-- @code{\tweak} コマンドを用いる必要があります。@c +同じ音楽タイミングで複数出現する可能性があるオブジェクトには、@c +以下のようなものがあります: + +@c TODO expand to include any further uses of \tweak +@itemize +@item 和音の中にある音符の符頭 +@item 1 つの音符に付けられるアーティキュレーション記号 +@item 和音の中にある音符の間に付けられるタイ +@item 同時に始まる連符の囲み +@end itemize + +@c TODO add examples of these + +@cindex chord, modifying one note in (和音の中にある音符の 1 つを変更する) + +以下の例では、和音の中にある符頭の 1 つの色を変更し、@c +さらに他の符頭のタイプを変更しています: + +@lilypond[relative=2,verbatim,quote] +< c + \tweak #'color #red + d + g + \tweak #'duration-log #1 + a +> 4 +@end lilypond + +@code{\tweak} を用いて、スラーを変更することができます: + +@lilypond[verbatim,quote,relative=1] +c-\tweak #'thickness #5 ( d e f) +@end lilypond + + +@code{\tweak} コマンドが機能するためには、@c +入力ファイルが音楽の流れに変換されたときに、@c +@code{\tweak} コマンドのすぐ後に@c +変更が適用されるオブジェクトが配置されている必要があります。 +和音全体に対する調整は何の効果もありません。@c +なぜなら、和音の音楽イベントはコンテナと機能するだけで、すべてのレイアウト +オブジェクトは @code{EventChord} の内部にあるイベントによって作成される@c +からです: + +@lilypond[relative=2,verbatim,quote] +\tweak #'color #red c4 +\tweak #'color #red 4 +<\tweak #'color #red c e>4 +@end lilypond + +単純な @code{\tweak} コマンドでは入力から直接作成されないオブジェクトを@c +変更することはできません。@c +特に、符幹、自動連桁、それに臨時記号には効果を持ちません。@c +なぜなら、それらは入力ストリームの中の音楽要素によって生成される@c +のではなく、後になって @code{NoteHead} レイアウト オブジェクトによって@c +生成されるからです。 + +そのような直接作成されないレイアウト オブジェクトは、明示的な形式の +@code{\tweak} コマンドを用いることで調整することができます: + +@lilypond[relative=2,verbatim,quote] +\tweak Stem #'color #red +\tweak Beam #'color #green c8 e +4 +@end lilypond + +@code{\tweak} コマンドで音部記号や拍子記号を変更することはできません。@c +なぜなら、コンテキストを指定するために必要とされる追加要素の自動挿入に@c +より、それらは前に配置された @code{\tweak} コマンドとは分離されるから@c +です。 + +記譜要素の前に複数の @code{\tweak} コマンドを配置することができます +-- それらはすべて効果を持ちます: + +@lilypond[verbatim,quote,relative=1] +c +-\tweak #'style #'dashed-line +-\tweak #'dash-fraction #0.2 +-\tweak #'thickness #3 +-\tweak #'color #red + \glissando +f' +@end lilypond + +入力ファイルのあるセクションから生成される音楽の流れ +-- 自動的に挿入される要素も含めて -- +が、検証されます。@c +@rextend{Displaying music expressions} を参照してください。@c +これは、@code{\tweak} コマンドによって変更されるオブジェクトを決定するとき、@c +あるいは、@c +@code{\tweak} の適用で入力を調整する方法を決定するときに役に立つかもしれません。 + +@seealso +学習マニュアル: +@rlearning{調整手段} + +拡張: +@rextend{Displaying music expressions} + +@knownissues +@code{\tweak} コマンドで和音の中にある複数のタイのうち 1 つだけの位置を@c +変更することはできません。@c +入力ファイルの中で最初に遭遇したタイの位置を変更してしまいます。 + +@node set 対 override +@subsection @code{\set} 対 @code{\override} +@translationof set versus override + +@c TODO -- This section is probably unnecessary now. + +@ignore +We have seen two methods of changing properties: @code{\set} and +@code{\override}. There are actually two different kinds of +properties. + +@code{fontSize} is a special property: it is equivalent to +entering @code{\override ... #'font-size} for all pertinent +objects. Since this is a common change, the special +property (modified with @code{\set}) was created. + +@end ignore + + +@node 連想配列を変更する +@subsection 連想配列を変更する +@translationof Modifying alists + +ユーザが変更可能なプロパティの中には、@c +内部的には @emph{連想配列} として存在しているものがあります +-- 連想配列は @emph{キー} と @emph{値} のペアの配列を保持します。@c +連想配列の構造は下記のとおりです: + +@example +'((@var{キー1} . @var{値1}) + (@var{キー2} . @var{値2}) + (@var{キー3} . @var{値3}) + @dots{}) +@end example + +ある連想配列がグラフィカル オブジェクト プロパティまたは +@code{\paper} 変数である場合、@c +その連想配列の個々のキーを、他のキーに影響を与えることなく、@c +変更することができます。 + +例えば、譜グループの中にある隣り合う譜間のスペースを減らすには、@c +@code{StaffGrouper} グラフィカル オブジェクトの +@code{staff-staff-spacing} プロパティを使用します。@c +このプロパティは 4 つのキー +-- @code{basic-distance}, @code{minimum-distance}, +@code{padding}, それに @code{stretchability} -- +を持つ連想配列です。@c +このプロパティの標準設定は、@c +内部リファレンスの @qq{Backend} セクションでリストアップされています +(@rinternals{StaffGrouper} を参照してください): + +@example +'((basic-distance . 9) + (minimum-distance . 7) + (padding . 1) + (stretchability . 5)) +@end example + +譜間のスペースを小さくする方法の 1 つは、@c +@code{basic-distance} キーの値 (@code{9}) を +@code{minimum-distance} キーの値 (@code{7}) 近くまで減らすことです。@c +個々のキーを変更するには、@emph{ネストされた宣言} を使います: + +@c KEEP LY +@lilypond[quote,verbatim] +% デフォルトの譜間スペース +\new PianoStaff << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> + +% 譜間スペースを減らします +\new PianoStaff \with { + % this is the nested declaration + \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7 +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +ネストされた宣言は、プロパティの他のキーに変更を加えることなく、@c +指定されたキー (上の例では @code{basic-distance}) を更新します。 + +今度は、譜を重ならない範囲でできる限り近づけたいとします。@c +最も簡単な方法は、連想配列の 4 つのキーすべてを 0 にセットすることです。@c +しかしながら、4 つのネストされた宣言を記述する必要はありません。@c +1 つの宣言でプロパティを丸ごと再定義することができます: + +@lilypond[quote,verbatim] +\new PianoStaff \with { + \override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 0) + (minimum-distance . 0) + (padding . 0) + (stretchability . 0)) +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +連想配列の再定義でリストアップされなかったキーは、@c +@emph{セットされなかった場合のデフォルト値} にリセットされます。@c +@code{staff-staff-spacing} の場合、@c +セットされなかったキーは 0 にリセットされます +(@code{stretchability} は例外で、セットされなかった場合、@c +@code{basic-distance} にリセットされます)。@c +このため、以下の 2 つの宣言は等価です: + +@example +\override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 7)) + +\override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 7) + (minimum-distance . 0) + (padding . 0) + (stretchability . 7)) +@end example + +連想配列の再定義でリストアップされなかったキーがあることにより、@c +初期化ファイルでセットされたり、@c +入力ファイルがコンパイルされるときに読み込まれた@c +標準設定が (意図せずに) 削除される可能性があります。@c +上の例では、@code{padding} と @code{minimum-distance} の標準設定 +(@file{scm/define-grobs.scm} で定義されます) は、@c +@emph{セットされなかった場合のデフォルト値} (両方とも 0) にリセットされます。@c +プロパティや (任意のサイズ) 連想配列を定義した場合、@c +セットされなかったキー値はすべて @emph{セットされなかった場合のデフォルト値} +にリセットされます。@c +そうすることを意図しているのでない限り、@c +ネストされた宣言を用いてキー値を個々に更新する方が安全です。 + +@warning{ネストされた宣言は、コンテキスト プロパティ連想配列 +(@code{beamExceptions}, @code{keySignature}, @code{timeSignatureSettings} 等) +に対しては機能しません。@c +これらのプロパティを変更するには、@c +連想配列として丸ごと再定義するしかありません。} + + +@node 役に立つコンセプトとプロパティ +@section 役に立つコンセプトとプロパティ +@translationof Useful concepts and properties + +@menu +* 入力モード:: +* 向きと配置:: +* 距離と距離の単位:: +* 譜記号プロパティ:: +* スパナ:: +* オブジェクトの可視性:: +* ライン スタイル:: +* オブジェクトを回転させる:: +@end menu + + +@node 入力モード +@subsection 入力モード +@translationof Input modes + +入力ファイルの中に保持されている記譜を解釈する方法は、@c +カレントの入力モードによって決定されます。 + +@strong{和音モード} + +このモードは @code{\chordmode} コマンドで有効になり、@c +入力はコード記譜法の構文で解釈されるようになります。@c +@ref{Chord notation} を参照してください。@c +コードは、譜面上に音符として描画されます。 + +和音モードは @code{\chords} コマンドでも有効になります。@c +このコマンドは新たに @code{ChordNames} コンテキストも作成します。@c +入力はコード記譜法の構文で解釈され、@c +さらに @code{ChordNames} コンテキストの中にコード ネームとして描画されます。@c +@ref{Printing chord names} を参照してください。 + +@strong{ドラム モード} + +このモードは @code{\drummode} コマンドで有効になり、@c +入力はドラム記譜法の構文で解釈されるようになります。@c +@ref{Basic percussion notation} を参照してください。 + +また、ドラム モードは @code{\drums} コマンドでも有効になります。@c +このモードも新たに @code{DrumStaff} コンテキストを作成し、@c +コマンドの後に続く入力をドラム記譜法の構文で解釈して、@c +ドラム譜上にドラム記号として描画します。@c +@ref{Basic percussion notation} を参照してください。 + +@strong{音型モード} + +このモードは @code{\figuremode} コマンドで有効になり、@c +入力は通奏低音の構文で解釈されるようになります。@c +@ref{Entering figured bass} を参照してください。 + +また、音型モードは @code{\figures} コマンドでも有効になります。@c +このモードも新たに @code{FiguredBass} コンテキストを作成し、@c +コマンドの後に続く入力を通奏低音の構文で解釈して、@c +@code{FiguredBass} コンテキストの中に通奏低音記号として描画します。@c +@ref{Introduction to figured bass} を参照してください。 + +@strong{フレットとタブ モード} + +フレット記号とタブ記号を入力するための特別な入力モードはありません。 + +タブ図を作成するには、音符モードで音符や和音を入力して、@c +それらを @code{TabStaff} コンテキストの中に描画します。@c +@ref{Default tablatures} を参照してください。 + +譜の上にフレット図を作成するには、2 つの方法があります。@c +@code{FretBoards} コンテキスト +(@ref{Automatic fret diagrams} を参照してください) を用いるか、@c +あるいは、音符の上に @code{\fret-diagram} コマンド +(@ref{Fret diagram markups}) を用いてフレット図をマークアップとして@c +入力するかのどちらかになります。 + +@strong{歌詞モード} + +このモードは @code{\lyricmode} コマンドで有効になり、@c +入力はオプションで演奏時間を持つ歌詞音節として解釈され、@c +歌詞識別子に関連付けされます。@c +通奏低音の構文で解釈されるようになります。@c +@ref{Vocal music} を参照してください。 + +また、歌詞モードは @code{\addlyrics} コマンドでも有効になります。@c +このモードも新たに @code{Lyrics} コンテキストを作成し、@c +暗黙的に @code{lyricsto} コマンドを作成します。@c +@code{lyricsto} は、後に続く歌詞を、前にある音楽に関連付けします。 + +@strong{マークアップ モード} + +このモードは @code{\markup} コマンドで有効になり、@c +入力はマークアップの構文で解釈されるようになります。@c +@ref{Text markup commands} を参照してください。 + +@c silly work-around for texinfo broken-ness +@c (@strong{Note...} causes a spurious cross-reference in Info) +@strong{音符モード} + +このモードはデフォルトのモードであり、@c +@code{\notemode} コマンドで有効にすることもできます。@c +入力はピッチ、演奏時間、マークアップなどとして解釈され、@c +譜面上に音楽記譜として写植されます。 + +通常、音符モードを明示的に指定する必要はありません。@c +しかしながら、ある特定の状況 +-- 例えば、歌詞モード、和音モード、あるいは他のモードを使っていて、@c +音符モードの構文でしか入力できないものを入力しようとしている場合 -- +では、音符モードを明示的に指定することが有用な場合があります。 + +例えば、合唱曲で節ごとに強弱記号を指定するには、@c +音符モードで入力して記号を解釈させる必要があります: + +@lilypond[verbatim,relative=2,quote] +{ c4 c4 c4 c4 } +\addlyrics { + \notemode{\set stanza = \markup{ \dynamic f 1. } } + To be sung loudly +} +\addlyrics { + \notemode{\set stanza = \markup{ \dynamic p 2. } } + To be sung quietly +} +@end lilypond + + +@node 向きと配置 +@subsection 向きと配置 +@translationof Direction and placement + +楽譜を写植しているとき、多くの要素の向きと配置には選択の余地があります。@c +例えば、音符の符幹は上向きあるいは下向きにすることができ、@c +歌詞、強弱記号、他の表現記号は譜の上あるいは下に配置することができ、@c +テキストは左揃え、右揃え、あるいは中央揃えにすることができる、などです。@c +これらの選択のほとんどは LilyPond によって自動的に決定されますが、@c +強制的に向きや配置を指定することが望ましい場合もあります。 + +@strong{アーティキュレーションの方向指示子} + +デフォルトでは、アーティキュレーションのいくつかの向きは常に上または下に@c +なっています (例えば、強弱記号やフェルマータ)。@c +一方、他のアーティキュレーションは、符幹の向きによって、@c +向きが上下します (スラーやアクセントなど)。 + +@c TODO Add table showing these + +アーティキュレーションの前に @emph{方向指示子} を置くことで、@c +デフォルトの向きをオーバライドすることができます。@c +3 つの方向指示子があります: @code{^} (@qq{上向き} を意味します)、@c +@code{_} (@qq{下向き} を意味します)、@c +それに @code{-} (@qq{デフォルトの向き} を意味します) です。@c +通常、方向指示子は省略することができ、その場合は @code{-} と見なされます。@c +しかしながら、以下のものの前には @strong{常に} 方向指示子を置く必要があります: + +@itemize +@item @code{\tweak} コマンド +@item @code{\markup} コマンド +@item @code{\tag} コマンド +@item 文字列マークアップ。例えば、-"string" +@item 運指指示。例えば、@code{-1} +@item アーティキュレーションの短縮記法。例えば、@code{-.}, @code{->}, @code{--} +@end itemize + +方向指示子は、その後にくる音符だけに効果を持ちます: + +@lilypond[verbatim,quote,relative=2] +c2( c) +c2_( c) +c2( c) +c2^( c) +@end lilypond + +@strong{方向プロパティ} + +多くのレイアウト オブジェクトの位置や向きは、@c +@code{direction} プロパティによって制御されます。 + +@code{direction} プロパティの値は、@c +@code{1} (@qq{上向き} あるいは @qq{上} を意味します)、@c +@code{-1} (@qq{下向き} あるいは @qq{下} を意味します) +にセットすることができます。@c +記号 @code{UP} と @code{DOWN} は、@c +それぞれ @code{1} と @code{-1} の代わりに用いることができます。@c +デフォルトの向きを指定するには、@c +@code{direction} を @code{0} あるいは @code{CENTER} にセットします。@c +このような方法を用いる代わりに、@c +多くの場合で、向きを指定するための前置コマンドが存在しています。@c +それらはすべて以下のような形式をとります: + +@noindent +@code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral} + +@noindent +ここで、@code{xxxNeutral} は @qq{デフォルトの向きを使用する} +ことを意味します。@c +@rlearning{譜内部オブジェクト} を参照してください。 + +いくつかのケースでは +-- 一般的な例としてはアルペジオしかありません -- +@code{direction} プロパティの値は、@c +オブジェクトが親オブジェクトの左右どちらに配置されるかを指定します。 +この場合、@code{-1} あるいは @code{LEFT} は @qq{左側} を意味し、@c +@code{1} あるいは @code{RIGHT} は @qq{右側} を意味します。@c +@code{0} あるいは @code{CENTER} は、前のケースと同様に、@c +@qq{デフォルトの向きを使用する} ことを意味します。 + +@ignore +These all have side-axis set to #X +AmbitusAccidental - direction has no effect +Arpeggio - works +StanzaNumber - not tried +TrillPitchAccidental - not tried +TrillPitchGroup - not tried +@end ignore + +これらの指示子は、キャンセルされるまで効果を持ちます。 + +@lilypond[verbatim,quote,relative=2] +c2( c) +\slurDown +c2( c) +c2( c) +\slurNeutral +c2( c) +@end lilypond + +多声の音楽では、一般的にオブジェクトの向きを変えるよりも明示的に +@code{voice} を指定した方が良いです。@c +更なる情報は、@ref{Multiple voices} を参照してください。 + +@seealso +学習マニュアル: +@rlearning{Within-staff objects} + +記譜法リファレンス: +@ref{Multiple voices} + + +@node 距離と距離の単位 +@subsection 距離と距離の単位 +@translationof Distances and measurements + +@cindex distances, absolute (絶対距離) +@cindex distances, scaled (相対距離) + +@funindex \mm +@funindex \cm +@funindex \in +@funindex \pt + +LilyPond における距離には 2 つのタイプがあります: 絶対距離と相対距離です。 + +絶対距離は、マージン、インデント、それにその他の詳細なページ レイアウトを@c +指定するために使用され、デフォルトではミリメートルで指定されます。 +距離は以下の単位で指定することもできます: @code{\mm}, @code{\cm}, +@code{\inch} (インチ), それに @code{\pt} (ポイント。1/73.27 インチ) です。@c +また、ページ レイアウトにおける距離は、@c +値の後ろに @code{\staff-space} を付けることにより、 +比率で指定することもできます (次の段落を参照してください)。@c +ページ レイアウトについての詳細は、@c +@ref{ページ レイアウト} に記述されています。 + +相対距離は常に譜スペースを単位として指定されます + -- 稀に、半譜スペースが使用されます。@c +譜スペースは隣り合う 2 本の譜線間の距離です。@c +グローバル譜サイズを設定することにより、@c +デフォルト値をグローバルに変更することができます。@c +また、@code{StaffSymbol} の @code{staff-space} プロパティを@c +変更することにより、譜スペースをローカルにオーバライドすることもできます。@c +相対距離は、グローバル譜サイズや @code{StaffSymbol} の @code{staff-space} +プロパティのいずれかが変更されると、自動的に変更されます。@c +しかしながら、フォントの比率はグローバル譜サイズが変更された場合にのみ、@c +自動的に変更されます。@c +そのため、グローバル譜サイズは@c +容易に描画される楽譜全体のサイズを変更することができます。@c +グローバル譜サイズを設定するための手段については、@c +@ref{譜サイズを設定する} を参照してください。 + +@funindex magstep + +楽譜のある部分だけの比率を変更したいのなら +-- 例えば、オッシア セクションや脚注で -- +単純にグローバル譜サイズを変更するわけにはいきません。@c +なぜなら、グローバル譜サイズを変更すると、楽譜全体が影響を受けるからです。@c +そのような場合、@code{StaffSymbol} の @code{staff-space} プロパティと@c +フォントのサイズをオーバライドすることにより、サイズを変更します。@c +フォント サイズの変更を @code{staff-space} 単位の変更に変換するには、@c +Scheme 関数 @code{magstep} を使用することができます。@c +この関数の説明と使用例については、@c +@rlearning{オブジェクトの長さと太さ} を参照してください。 + +@seealso +学習マニュアル: +@rlearning{オブジェクトの長さと太さ} + +記譜法リファレンス: +@ref{ページ レイアウト}, +@ref{譜サイズを設定する} + + +@node 譜記号プロパティ +@subsection 譜記号プロパティ +@translationof Staff symbol properties + +@cindex adjusting staff symbol (譜記号を調節する) +@cindex drawing staff symbol (譜記号を描画する) +@cindex staff symbol, setting of (譜記号の設定) + +@c TODO Extend or remove this section. See also NR 1.6.2 Staff symbol +@c Need to think of uses for these properties. Eg 'line-positions +@c is used in a snippet to thicken centre line. +@c If retained, add @ref to here in 1.6.2 -td + +譜線の垂直位置と譜線の本数を同時に定義することができます。@c +以下の例が示すように、音符の位置は譜線の位置には影響されません。 + +@warning{@code{'line-positions} プロパティは @code{'line-count} を@c +オーバライドします。@c +譜線の本数は、@code{'line-positions} の値リストの中にある要素数によって、@c +暗黙的に定義されます。} + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7) +} +{ a4 e' f b | d1 } +@end lilypond + +譜の幅を変更することができます。@c +単位は譜スペースです。@c +譜内部のオブジェクトのスペースは、この設定によって影響を受けません。 + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'width = #23 +} +{ a4 e' f b | d1 } +@end lilypond + + +@node スパナ +@subsection スパナ +@translationof Spanners + +多くの音楽記譜オブジェクトは、複数の音符あるいは複数の小節にまたがって、@c +広がりを持ちます。@c +例としては、スラー、連桁、連譜の囲み、volta 繰り返しの囲み、クレッシェンド、@c +トリル、それにグリッサンドがあります。@c +そのようなオブジェクトは総称して @qq{スパナ} と呼ばれ、@c +それらの見た目と振る舞いを制御するための特殊なプロパティを持ちます。@c +これらのプロパティのいくつかは、すべてのスパナに共通しています。@c +他のプロパティはスパナの部分集合に限定されています。 + +すべてのスパナは @code{spanner-interface} をサポートします。@c +いくつかのスパナ -- 2 つのオブジェクトの間に直線を描くもの -- は、さらに、@c +@code{line-spanner-interface} をサポートします。 + +@unnumberedsubsubsec @code{spanner-interface} を使用する + +このインターフェイスは、@c +いくつかのスパナに適用される 2 つのプロパティを提供します。 + +@strong{@i{@code{minimum-length} プロパティ}} + +スパナの最短の長さは、@code{minimum-length} プロパティによって指定されます。@c +通常、このプロパティを増加させると、@c +スパナの両端の間にある音符の間隔は増加します。@c +しかしながら、このオーバライドは多くのスパナで効果を持ちません。@c +なぜなら、それらの長さは他の要素によって決定されるからです。@c +以下に効果を持つ例を 2, 3 示します。 + +@ignore +Works for: + Tie + MultiMeasureRest + Hairpin + Slur + PhrasingSlur + +Works as long as callback is made: + Glissando + Beam + +Works not at all for: + LyricSpace + LyricHyphen + LyricExtender + TextSpanner + System + +@end ignore + +@c KEEP LY +@lilypond[verbatim,quote,relative=2] +a~a +a +% タイの長さを増加させます +-\tweak #'minimum-length #5 +~a +@end lilypond + +@c KEEP LY +@lilypond[verbatim,quote,relative=2] +a1 +\compressFullBarRests +R1*23 +% 休符バーの長さを増加させます +\once \override MultiMeasureRest #'minimum-length = #20 +R1*23 +a1 +@end lilypond + +@c KEEP LY +@lilypond[verbatim,quote,relative=2] +a \< a a a \! +% ヘアピンの長さを増加させます +\override Hairpin #'minimum-length = #20 +a \< a a a \! +@end lilypond + +さらに、このオーバライドはスラーとフレージング スラーの長さを@c +増加させるためにも使用されます: + +@lilypond[verbatim,quote,relative=2] +a( a) +a +-\tweak #'minimum-length #5 +( a) + +a\( a\) +a +-\tweak #'minimum-length #5 +\( a\) +@end lilypond + +いくつかのレイアウト オブジェクトでは、@c +@code{minimum-length} プロパティは、@c +@code{set-spacing-rods} プロシージャが明示的に呼び出された場合にのみ@c +効果を持ちます。@c +このプロシージャを呼び出すには、@code{springs-and-rods} プロパティに@c +@code{ly:spanner::set-spacing-rods} をセットしておく必要があります。@c +例えば、グリッサンドの最短長は、@c +@code{springs-and-rods} プロパティが設定されていない限り、@c +効果を持ちません: + +@c KEEP LY +@lilypond[verbatim,quote,relative=1] +% デフォルト +e \glissando c' + +% 単独では効果を持ちません +\once \override Glissando #'minimum-length = #20 +e, \glissando c' + +% 以下の両方のオーバライドが存在する場合にのみ、効果を持ちます +\once \override Glissando #'minimum-length = #20 +\once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods +e, \glissando c' +@end lilypond + +@code{Beam} オブジェクトでも同じことが言えます: + +@c KEEP LY +@lilypond[verbatim,quote,relative=1] +% 単独では効果を持ちません +\once \override Beam #'minimum-length = #20 +e8 e e e + +% 以下の両方のオーバライドが存在する場合にのみ、効果を持ちます +\once \override Beam #'minimum-length = #20 +\once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods +e8 e e e +@end lilypond + +@strong{@i{@code{to-barline} プロパティ}} + +@code{spanner-interface} の 2 番目に有用なプロパティは +@code{to-barline} です。@c +デフォルトではこのプロパティは真であり、@c +小節の最初の音符のところで終了するヘアピンや他のスパナは@c +直前の小節線のところで終了させられます。@c +偽に設定すると、スパナは小節線を越えて、音符のところで終了します: + +@lilypond[verbatim,quote,relative=2] +a \< a a a a \! a a a \break +\override Hairpin #'to-barline = ##f +a \< a a a a \! a a a +@end lilypond + +このプロパティはすべてのスパナに対して効果を持つわけではありません。@c +例えば、スラーやフレージング スラー、@c +あるいは小節線で終了させることに意味が無い他のスパナに対して、@c +このプロパティを @code{#t} に設定しても効果がありません。 + +@unnumberedsubsubsec @code{line-spanner-interface} を使用する + +@code{line-spanner-interface} をサポートするオブジェクトには@c +以下のものがあります: + +@itemize +@item @code{DynamicTextSpanner} +@item @code{Glissando} +@item @code{TextSpanner} +@item @code{TrillSpanner} +@item @code{VoiceFollower} +@end itemize + +これらのスパナのステンシルを描画する責任を持つルーチンは +@code{ly:line-interface::print} です。@c +このルーチンはスパナの両端の位置を綿密に決定し、@c +求めに応じたスタイルでそれらの間に線を描きます@c +スパナの両端の位置はオンザフライ (その場、その時々) で算出されますが、@c +それらの Y 座標をオーバライドすることができます。@c +指定する必要のあるプロパティは、@c +プロパティ階層内で 2 階層下にネストされていますが、@c +この @code{\override} コマンドは非常にシンプルです: + +@lilypond[relative=2,quote,verbatim] +e2 \glissando b +\once \override Glissando #'(bound-details left Y) = #3 +\once \override Glissando #'(bound-details right Y) = #-2 +e2 \glissando b +@end lilypond + +@code{Y} プロパティの単位は @code{staff-space} であり、@c +譜の中央線が 0 位置です。@c +グリッサンドでは、スパナの両端は各符頭の中心であり、@c +@code{Y} はそれらの点を上下させます。 + +@code{Y} が設定されていない場合、@c +値はスパナの両端の垂直位置から算出されます。 + +改行の場合、終点の @code{Y} の値は @code{bound-details} の@c +部分リスト @code{left-broken} や @code{right-broken} のによって指定されます。@c +例を示します: + +@lilypond[relative=2,ragged-right,verbatim,fragment] +\override Glissando #'breakable = ##t +\override Glissando #'(bound-details right-broken Y) = #-3 +c1 \glissando \break +f1 +@end lilypond + + +@code{bound-details} プロパティの部分リスト @code{left} や @code{right} の@c +下位プロパティのいくつかは、@code{Y} と同じ方法で変更することができます: + +@table @code +@item Y +終点の Y 座標を、@c +譜の中央線からの @code{staff-space} オフセットで、設定します。@c +デフォルトでは、終点オブジェクトの中心です。@c +ですから、グリッサンドは符頭の中心に向かって進みます。 + +水平方向に広がるスパナ -- テキスト スパナやトリル スパナなど -- +では、この値は 0 に固定されています。 + +@item attach-dir +スパナのラインがオブジェクトの左右どちらから始まり、終わるのかを決定します。@c +@code{-1} (あるいは @code{LEFT}) であれば、@c +ラインは符頭の左側から開始あるいは終了します。 + +@item X +終点の絶対 X 座標です。@c +通常、オンザフライ (その場、その時々) で算出され、@c +これをオーバライドしてもあまり意味がありません。 + +@item stencil +ライン スパナは開始点や終了点で記号を持つ場合があり、@c +その記号はこのサブ プロパティに保持されています。@c +このサブ プロパティは内部で使用するためのものです。@c +このサブ プロパティの代わりに @code{text} を使用することを推奨します。 + +@item text +ステンシルを作成するために評価されるマークアップです。@c +水平スパナに @i{cresc.}, @i{tr} それに他のテキストを配置するために使用されます。 + +@lilypond[quote,ragged-right,fragment,relative=2,verbatim] +\override TextSpanner #'(bound-details left text) + = \markup { \small \bold Slower } +c2\startTextSpan b c a\stopTextSpan +@end lilypond + +@item stencil-align-dir-y +@item stencil-offset +これらの 1 つを設定しなければ、@c +ステンシルは、@code{X} と @code{Y} サブ プロパティで定義されたとおりに、@c +ラインに中央揃えで、終点に配置されます。@c +@code{stencil-align-dir-y} あるいは @code{stencil-offset} の@c +どちらかを設定すると、@c +記号が上下します: + +@lilypond[relative=1,fragment,verbatim] +\override TextSpanner + #'(bound-details left stencil-align-dir-y) = #-2 +\override TextSpanner + #'(bound-details right stencil-align-dir-y) = #UP + +\override TextSpanner + #'(bound-details left text) = #"ggg" +\override TextSpanner + #'(bound-details right text) = #"hhh" +c4^\startTextSpan c c c \stopTextSpan +@end lilypond + +予期される結果とは逆に、@c +負の値はテキストを @emph{上げる} ということに注意してください。@c +なぜなら、@code{-1} あるいは @code{DOWN} は@c +テキストの @emph{下端} をスパナ ラインに揃え、 +@code{1} あるいは @code{UP} は@c +テキストの @emph{上端} をスパナ ラインに揃えるからです。 + +@item arrow +このサブ プロパティに @code{#t} をセットするとラインの終点に矢印が描かれます。 + +@item padding +このサブ プロパティはラインの終点と実際の終点の間のスペースを制御します。@c +パディングがなければ、グリッサンドは両端の符頭の中心から描かれます。 + +@end table + +音楽関数 @code{\endSpanners} は@c +直後の音符から始まるスパナをすぐに終了させます。@c +ちょうど 1 音符分でスパナを終了させますが、@c +@code{to-barline} が真で、かつ、次の音符の前に小節線がある場合は@c +その小節線のところでスパナを終了させます。 + +@lilypond[verbatim,quote,ragged-right,relative=2,fragment] +\endSpanners +c2 \startTextSpan c2 c2 +\endSpanners +c2 \< c2 c2 +@end lilypond + +@code{\endSpanners} を使用している場合、@c +@code{\startTextSpan} を @code{\endTextSpan} で閉じる必要はなく、@c +ヘアピンを @code{\!} で閉じる必要もありません。 + +@seealso +内部リファレンス: +@rinternals{TextSpanner}, +@rinternals{Glissando}, +@rinternals{VoiceFollower}, +@rinternals{TrillSpanner}, +@rinternals{line-spanner-interface} + + +@node オブジェクトの可視性 +@subsection オブジェクトの可視性 +@translationof Visibility of objects + +@cindex objects, visibility of (オブジェクトの可視性) +@cindex grobs, visibility of (グラフィカル オブジェクトの可視性) +@cindex visibility of objects (オブジェクトの可視性) + +レイアウト オブジェクトの可視性を制御する主な方法は 4 つあります: +オブジェクトのステンシルを削除する方法、オブジェクトを透明にする方法、@c +オブジェクトの色を白にする方法、あるいは、@c +オブジェクトの @code{break-visibility} プロパティをオーバライドする方法です。 +最初の 3 つの方法はすべてのレイアウト オブジェクトに適用されますが、@c +最後の方法はいくつかの -- @emph{改行可能な} オブジェクト -- +だけに適用されます。@c +学習マニュアルでは、これら 4 つのテクニックについて紹介しています。@c +@rlearning{オブジェクトの可視性と色} を参照してください。 + +さらに、特定のレイアウト オブジェクト特有のテクニックがいくつかあります。@c +それらについては、特別な考慮でカバーされています。 + +@menu +* ステンシルを削除する:: +* オブジェクトを透明にする:: +* オブジェクトを白で描く:: +* break-visibility を用いる:: +* 特別な考慮を必要とするもの:: +@end menu + + +@node ステンシルを削除する +@unnumberedsubsubsec ステンシルを削除する +@translationof Removing the stencil + +@cindex stencil, removing (ステンシルを削除する) + +レウアウト オブジェクトはそれぞれステンシル プロパティを持ちます。@c +デフォルトでは、@c +このプロパティはそのオブジェクトを描画する特殊な関数にセットされています。@c +このプロパティが @code{#f} にオーバライドされた場合、@c +関数は呼び出されず、そのオブジェクトは描画されません。@c +@code{\rever} でデフォルトの動作に戻すことができます。 + +@lilypond[quote,verbatim,relative=1] +a1 a +\override Score.BarLine #'stencil = ##f +a a +\revert Score.BarLine #'stencil +a a a +@end lilypond + +@node オブジェクトを透明にする +@unnumberedsubsubsec オブジェクトを透明にする +@translationof Making objects transparent + +@cindex transparent, making objects (オブジェクトを透明にする) + +レイアウト オブジェクトはそれぞれ @code{transparent} プロパティを持っていて、@c +デフォルトでは @code{#f} にセットされています。@c +@code{#t} にセットされると、そのオブジェクトはスペースを占めたままですが、@c +不可視になります。 + +@lilypond[quote,verbatim,relative=2] +a4 a +\once \override NoteHead #'transparent = ##t +a a +@end lilypond + +@node オブジェクトを白で描く +@unnumberedsubsubsec オブジェクトを白で描く +@translationof Painting objects white + +@cindex objects, coloring (オブジェクトに色を付ける) +@cindex coloring objects (オブジェクトに色を付ける) +@cindex layers (レイヤ) +@cindex printing order (描画の順番) +@cindex overwriting objects (オブジェクトを上書きする) +@cindex objects, overwriting (オブジェクトを上書きする) +@cindex grobs, overwriting (グラフィカル オブジェクトを上書きする) + +レイアウト オブジェクトはそれぞれ @code{color} プロパティを持っていて、@c +デフォルトでは @code{black} にセットされています。@c +このプロパティが @code{white} にセットされてると、@c +そのオブジェクトは白い背景と区別が付かなくなります。@c +しかしながら、そのオブジェクトが他のオブジェクトと交差している場合、@c +交差している場所の色はオブジェクトの描画順序によって決定されます。@c +これにより、以下に示すように、@c +白いオブジェクトの画像が幽霊のように浮かび上がることがあります: + +@lilypond[quote,verbatim,relative=2] +\override Staff.Clef #'color = #white +a1 +@end lilypond + +オブジェクトの描画順序を変更することにより、これを回避することができます。@c +すべてのレイアウト オブジェクトは @code{layer} プロパティを持っており、@c +このプロパティには整数がセットされています。@c +より小さな値の @code{layer} を持つオブジェクトが最初に描画され、@c +より大きな値の @code{layer} を持つオブジェクトが後になってから描画されます。@c +このため、@c +より大きな値を持つオブジェクトがより小さな値を持つオブジェクトを上書きします。@c +デフォルトでは、@c +たいていのオブジェクトの @code{layer} には @code{1} が代入されています。@c +しかしながら、いくつかのオブジェクト +-- @code{StaffSymbol} や @code{BarLine} など -- +には @code{0} が代入されています。@c +同じ値の @code{layer} を持つオブジェクトを描画する順番は不確定です。 + +上記の例において、白い音部記号 +(この @code{layer} のデフォルト値は @code{1} です) +は譜線 @c +(この @code{layer} のデフォルト値は @code{0} です) +の後に描画されます。@c +そのため、音部記号は譜線を上書きしています。@c +これを変更するには、@code{Clef} オブジェクトの @code{layer} に@c +より小さな値 -- 例えば、@code{-1} -- を与えて、@c +音部記号を先に描画させる必要があります: + +@lilypond[quote,verbatim,relative=2] +\override Staff.Clef #'color = #white +\override Staff.Clef #'layer = #-1 +a1 +@end lilypond + +@node break-visibility を用いる +@unnumberedsubsubsec break-visibility を用いる +@translationof Using break-visibility + +@c TODO Add making other objects breakable + +@cindex break-visibility + +たいていのレイアウト オブジェクトは 1 回だけ描画されます。@c +しかしながら、小節線、音部記号、拍子記号、それに調号などのオブジェクトは、@c +改行が起こると 2 回描画する必要があります +-- 行の最後で 1 回、次の行の最初でもう 1 回。@c +そのようなオブジェクトは @emph{改行可能} と呼ばれ、@c +それらのオブジェクトが描画される可能性がある 3 つの場所 +-- 行の先頭、行の途中 (それらが変更された場合)、@c +それに、行の最後 (そこで変更が行われた場合) -- +における可視性を制御する @code{break-visibility} プロパティを持ちます。 + +例えば、デフォルトでは拍子記号は最初の行の先頭で描画されますが、@c +変更されない限り他の場所には描画されません。@c +変更された場合、拍子記号は変更が行われた場所に描画されます。@c +この変更が行の最後で行われた場合、新しい拍子記号は次の行の先頭に描画され、@c +その前の行の最後にも忠告の拍子記号が描画されます。 + +この振る舞いは @code{break-visibility} プロパティによって制御されます。@c +このプロパティについての説明は +@c Leave this ref on a newline - formats incorrectly otherwise -td +@rlearning{オブジェクトの可視性と色} +を参照してください。@c +このプロパティは 3 つのブール値からなるベクトルをとり、@c +順に、そのオブジェクトが行の最後で描画されるかどうか、@c +行の途中で描画されるかどうか、@c +そして、行の先頭で描画されるかどうかを決定します。@c +より正確には、改行の前、改行がない場合、改行の後です。 + +@code{break-visibility} プロパティによって制御する代わりに、@c +これら 8 通りの組み合わせを @file{scm/output-lib.scm} で定義されている@c +定義済み関数によって指定することもできます。@c +このファイルの中で、最後の 3 列がその列のヘッダで示される場所での@c +可視性を表しています: + +@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {改行前} {改行なし} {改行後} +@headitem 関数形式 @tab ベクトル形式 @tab 改行前 @tab 改行なし @tab 改行後 + +@item @code{all-visible} @tab @code{'#(#t #t #t)} @tab yes @tab yes @tab yes +@item @code{begin-of-line-visible} @tab @code{'#(#f #f #t)} @tab no @tab no @tab yes +@item @code{center-visible} @tab @code{'#(#f #t #f)} @tab no @tab yes @tab no +@item @code{end-of-line-visible} @tab @code{'#(#t #f #f)} @tab yes @tab no @tab no +@item @code{begin-of-line-invisible} @tab @code{'#(#t #t #f)} @tab yes @tab yes @tab no +@item @code{center-invisible} @tab @code{'#(#t #f #t)} @tab yes @tab no @tab yes +@item @code{end-of-line-invisible} @tab @code{'#(#f #t #t)} @tab no @tab yes @tab yes +@item @code{all-invisible} @tab @code{'#(#f #f #f)} @tab no @tab no @tab no +@end multitable + +@code{break-visibility} のデフォルト設定は@c +レイアウト オブジェクトによって異なります。@c +以下の表は、@code{break-visibility} によって影響をうける@c +すべてのレイアウト オブジェクトと、そのプロパティのデフォルト設定を示しています: + +@multitable @columnfractions .3 .3 .4 + +@headitem レイアウト オブジェクト @tab 通常のコンテキスト @tab デフォルト設定 + +@c omit Ambitus as it appears not to be affected by break-visibility -td +@c @item @code{Ambitus} @tab as specified @tab @code{begin-of-line-visible} +@item @code{BarLine} @tab @code{Score} @tab calculated +@item @code{BarNumber} @tab @code{Score} @tab @code{begin-of-line-visible} +@c omit the following item until it can be explained -td +@c @item @code{BreakAlignGroup} @tab @code{Score} @tab calculated +@item @code{BreathingSign} @tab @code{Voice} @tab @code{begin-of-line-invisible} +@item @code{Clef} @tab @code{Staff} @tab @code{begin-of-line-visible} +@item @code{Custos} @tab @code{Staff} @tab @code{end-of-line-visible} +@item @code{DoublePercentRepeat} @tab @code{Voice} @tab @code{begin-of-line-invisible} +@c omit KeyCancellation until it can be explained -td +@c @item @code{KeyCancellation} @tab ?? @tab @code{begin-of-line-invisible} +@item @code{KeySignature} @tab @code{Staff} @tab @code{begin-of-line-visible} +@c omit LeftEdge until it can be explained -td +@c @item @code{LeftEdge} @tab @code{Score} @tab @code{center-invisible} +@item @code{OctavateEight} @tab @code{Staff} @tab @code{begin-of-line-visible} +@item @code{RehearsalMark} @tab @code{Score} @tab @code{end-of-line-invisible} +@item @code{TimeSignature} @tab @code{Staff} @tab @code{all-visible} + +@end multitable + +以下の例は、小節線の可視性を制御するベクトルの使用方法を示しています: + +@c KEEP LY +@lilypond[quote,verbatim,relative=1,ragged-right] +f4 g a b +f4 g a b +% カレント行の最後で小節線を削除します +\once \override Score.BarLine #'break-visibility = #'#(#f #t #t) +\break +f4 g a b +f4 g a b +@end lilypond + +@code{break-visibility} をオーバライドするために使用される@c +ベクトルの要素 3 つをすべて記述する必要がありますが、@c +それらすべてが各レイアウト オブジェクトに対して効果を持つわけではなく、@c +組み合わせによってはエラーになる場合もあります。@c +以下の制限があります: + +@itemize @bullet +@item 小節線を行の先頭に描画することはできません。 +@item 小節番号は 1 から始まるのでなければ、@c +最初の行の先頭に描画することはできません。 +@item 音部記号 -- 以下を参照してください +@item 2 重線のパーセント繰り返しはすべて描画するか、@c +すべて描画しないかのどちらかです。@c +描画するには @code{begin-of-line-invisible} を用い、@c +描画しないのなら @code{all-invisible} を用います。 +@item Key signature -- 以下を参照してください +@item OctavateEight -- 以下を参照してください +@end itemize + +@node 特別な考慮を必要とするもの +@unnumberedsubsubsec 特別な考慮を必要とするもの +@translationof Special considerations + +@strong{@emph{明示的な変更の後の可視性}} + +@cindex key signature, visibility following explicit change (明示的な変更の後の調号の可視性) +@cindex explicitKeySignatureVisibility +@cindex clef, visibility following explicit change (明示的な変更の後の音部記号の可視性) +@cindex explicitClefVisibility + +@code{break-visibility} プロパティが調号の可視性と音部記号の変更を@c +制御するのは、行の先頭 -- つまり、改行の後 -- においてだけです。@c +行の途中や終わりでの明示的な調の変更や音部記号の変更の後に出現する@c +調合や音部記号の可視性には効果を持ちません。@c +以下の例では、@code{all-invisible} がセットされていますが、@c +B フラット メジャーへの明示的な変更の後に出現する調号は可視のままです。 + +@c KEEP LY +@lilypond[quote,verbatim,relative=1,ragged-right] +\key g \major +f4 g a b +% すべての調号を削除しようと試みます +\override Staff.KeySignature #'break-visibility = #all-invisible +\key bes \major +f4 g a b +\break +f4 g a b +f4 g a b +@end lilypond + +そのような明示的な調号や音部記号の変更の可視性は +@code{explicitKeySignatureVisibility} プロパティや +@code{explicitClefVisibility} プロパティによって制御されます。@c +これらは @code{break-visibility} プロパティと等価であり、@c +どちらも @code{break-visibility} と同様に 3 つのブール値からなるベクトルか@c +上でリストアップした定義済み関数をとります。@c +どちらも @code{Staff} コンテキストのプロパティであり、@c +レイアウト オブジェクト自体のプロパティではありません。@c +ですから、これらは @code{\set} コマンドでセットします。@c +どちらもデフォルトでは @code{all-visible} がセットされています。@c +これらのプロパティは明示的な変更の結果として生じる@c +調号と音部記号の可視性だけを制御し、@c +行の先頭での調号や音部記号には効果を持ちませんので、@c +オブジェクトを削除するには適切な @code{break-visibility} +をオーバライドする必要があります。 + +@lilypond[quote,verbatim,relative=1,ragged-right] +\key g \major +f4 g a b +\set Staff.explicitKeySignatureVisibility = #all-invisible +\override Staff.KeySignature #'break-visibility = #all-invisible +\key bes \major +f4 g a b \break +f4 g a b +f4 g a b +@end lilypond + +@strong{@emph{忠告の臨時記号の可視性}} + +明示的な調の変更で描画される忠告の臨時記号を削除するには、@c +@code{Staff} コンテキスト プロパティ @code{printKeyCancellation} に +@code{#f} をセットします: + +@lilypond[quote,verbatim,relative=1,ragged-right] +\key g \major +f4 g a b +\set Staff.explicitKeySignatureVisibility = #all-invisible +\set Staff.printKeyCancellation = ##f +\override Staff.KeySignature #'break-visibility = #all-invisible +\key bes \major +f4 g a b \break +f4 g a b +f4 g a b +@end lilypond + +このオーバライドによって、調の変更を示す臨時記号だけが残ります。 + +@c TODO Add visibility of cautionary accidentals before notes + +@strong{@emph{自動小節線}} + +@cindex automaticBars +@cindex bar lines, suppressing (小節線を消す) + +特殊なケースとして、@c +@code{Score} コンテキストの @code{automaticBars} プロパティを@c +設定することにより、小節線の描画を Off にすることもできます。@c +@code{#f} をセットされた場合、小節線は自動的には描画されなくなり、@c +@code{\bar} コマンドで明示的に作成しなければならなくなります。@c +定義済みコマンド @code{\cadenzaOn} とは異なり、小節数はカウントされ続けます。@c +後になってこのプロパティに @code{#t} がセットされると、@c +このカウントに従って小節線の生成が再開されます。@c +@code{#f} がセットされている場合、@c +改行が起こりえるのは明示的な @code{\bar} コマンドがある場所でだけになります。 + +@c TODO Add example + +@strong{@emph{オクターブ移調付きの音部記号}} + +@cindex octavated clefs, visibility of (オクターブ移調付きの音部記号の可視性) +@cindex visibility of octavated clefs (オクターブ移調付きの音部記号の可視性) +@cindex clefs, visibility of octavation (オクターブ移調付きの音部記号の可視性) + +オクターブ移調付きの音部記号上の小さなオクターブ記号は +@code{OctavateEight} レイアウト オブジェクトによって作り出されます。@c +このオブジェクトの可視性は +@code{Clef} オブジェクトの可視性とは独立して制御されます。@c +そのため、各行の先頭においてそのような音部記号を完全に消そうとするなら、@c +@code{Clef} オブジェクトと @code{OctavateEight} オブジェクトの両方に対して@c +必要な @code{break-visibility} のオーバライドを行う必要があります。 + +明示的な音部記号の変更では、@c +@code{explicitClefVisibility} プロパティが@c +音部記号とそれに関連するオクターブ記号の両方を制御します。 + +@seealso +学習マニュアル: +@rlearning{オブジェクトの可視性と色} + + +@node ライン スタイル +@subsection ライン スタイル +@translationof Line styles + +いくつかの演奏指示子 +-- 例えば、@i{rallentando}, @i{accelerando} それに @i{trills} など -- +はテキストとして記述され、@c +線で (点線や波線の場合もあります) でいくつもの小節にわたって広がります。 + +これらはすべてグリッサンドと同じルーチンを用いてテキストと線を描きます。@c +そのため、それらの振る舞いの調整も同じように行います。@c +これらはスパナによって実現され、スパナを描くルーチンは +@code{ly:line-interface::print} です。@c +このルーチンは 2 つの @i{スパン ポイント} の位置を決定し、@c +要求されたスタイルに応じてそれら 2 点の間に線を描きます。 + +利用可能なライン スタイルと、それらをどのように調整するかを示す例を挙げます。 + +@lilypond[relative=2,ragged-right,verbatim,fragment] +d2 \glissando d'2 +\once \override Glissando #'style = #'dashed-line +d,2 \glissando d'2 +\override Glissando #'style = #'dotted-line +d,2 \glissando d'2 +\override Glissando #'style = #'zigzag +d,2 \glissando d'2 +\override Glissando #'style = #'trill +d,2 \glissando d'2 +@end lilypond + +スパナの終点の位置は各グラフィック オブジェクトごとに@c +オンザフライ (その場、その時々) で計算されますが、@c +それらをオーバライドすることもできます: + +@c TODO Complete +@lilypond[relative=2,ragged-right,verbatim,quote] +e2 \glissando f +\once \override Glissando #'(bound-details right Y) = #-2 +e2 \glissando f +@end lilypond + +グリッサンドの終点の @code{Y} には @code{-2} がセットされています。@c +@code{right} の代わりに @code{left} を指定することにより、@c +始点も同じように調整することができます。 + +@code{Y} がセットされていない場合、@c +その値はスパナが取り付けられるポイントの垂直位置から算出されます。 + +スパナに他の調整を行うことも可能です。@c +詳細は @ref{スパナ} を参照してください。 + + +@node オブジェクトを回転させる +@subsection オブジェクトを回転させる +@translationof Rotating objects + +レイアウト オブジェクトとマークアップ テキストの要素はどちらも@c +任意のポイントを中心にして任意の角度で回転させることができます。@c +しかしながら、回転させる方法はまったく異なります。 + +@menu +* レイアウト オブジェクトを回転させる:: +* マークアップを回転させる:: +@end menu + +@node レイアウト オブジェクトを回転させる +@unnumberedsubsubsec レイアウト オブジェクトを回転させる +@translationof Rotating layout objects + +@cindex rotating objects (オブジェクトを回転させる) +@cindex objects, rotating (オブジェクトを回転させる) + +@code{grob-interface} をサポートするすべてのレイアウト オブジェクトは、@c +それらのオブジェクトの @code{rotation} プロパティを設定することにより、@c +回転させることができます。@c +これは 3 要素のリストをとります: 反時計回りの回転の角度、@c +オブジェクトの参照ポイントからの相対座標 x と y +(この座標が回転の中心になります) です。@c +回転の角度は @q{°}で指定し、座標は譜スペースで指定します。 + +回転の角度と回転の中心座標は、トライ&エラーで決定する必要があります。 + +@cindex hairpins, angled (回転させられたヘアピン) +@cindex angled hairpins (回転させられたヘアピン) + +レイアウト オブジェクトを回転させることが有用な状況はあまりありません。@c +以下の例は、有用であるかもしれないシチュエーションの 1 つを示しています: + +@lilypond[quote,verbatim,relative=1] +g4\< e' d' f\! +\override Hairpin #'rotation = #'(20 -1 0) +g,,4\< e' d' f\! +@end lilypond + +@node マークアップを回転させる +@unnumberedsubsubsec マークアップを回転させる +@translationof Rotating markup + +すべてのマークアップ テキストは、@code{\rotate} コマンドを前に置くことにより、@c +任意の角度に回転させることができます。@c +このコマンドは 2 つの引数をとります: 反時計回りの回転の角度 @q{°} と、@c +回転させられるテキストです。@c +テキストの領域は回転しません: +テキストの領域は回転させられるテキストの四隅になります。@c +以下の例では、自動衝突回避を不可にするために@c +テキストの @code{outside-staff-priority} プロパティに @code{#f} を@c +セットしています。@c +そうしなければテキストのいくつかは高く押し上げられてしまいます。 + +@lilypond[quote,verbatim,relative=1] +\override TextScript #'outside-staff-priority = ##f +g4^\markup { \rotate #30 "a G" } +b^\markup { \rotate #30 "a B" } +des^\markup { \rotate #30 "a D-Flat" } +fis^\markup { \rotate #30 "an F-Sharp" } +@end lilypond + + +@node 高度な調整 +@section 高度な調整 +@translationof Advanced tweaks + +このセクションでは、@c +楽譜の見た目を細かく調節するためのさまざまなアプローチについて議論します。 + +@menu +* オブジェクトを揃える:: +* グラフィカル オブジェクトを垂直方向にグループ化する:: +* ステンシルを変更する:: +* 形状を変更する:: +* unpure-pure コンテナ:: +@end menu + +@seealso +学習マニュアル: +@rlearning{出力を調整する}, +@rlearning{その他の情報源} + +記譜法リファレンス: +@ref{内部リファレンスの説明}, +@ref{プロパティを変更する} + +拡張: +@rextend{Interfaces for programmers} + +インストールされているファイル: +@file{scm/define-grobs.scm} + +コード断片集: +@rlsr{Tweaks and overrides} + +内部リファレンス: +@rinternals{All layout objects} + + +@node オブジェクトを揃える +@subsection オブジェクトを揃える +@translationof Aligning objects + +@code{self-alignment-interface} と/あるいは @code{side-position-interface} を@c +サポートするグラフィカル オブジェクトは、@c +さまざまな形式で配置済みのオブジェクトに揃えることができます。@c +そのようなオブジェクトのリストは、@rinternals{self-alignment-interface} と +@rinternals{side-position-interface} を参照してください。@c + +すべてのグラフィカル オブジェクトは参照ポイント、水平方向の広がり、@c +それに垂直方向の広がりを持ちます。@c +水平方向の広がりは、@c +参照ポイントから左端と右端までの距離を意味する数値のペアであり、@c +左端は負値です。@c +垂直方向の広がりは、@c +参照ポイントから下端と上端までの距離を意味する数値のペアであり、@c +下端は負値です。@c + +あるオブジェクトの譜面上の位置は、@code{X-offset} プロパティと +@code{Y-offset} プロパティの値によって与えられます。@c +@code{X-offset} の値は、親オブジェクトの参照ポイントの X 座標からの@c +距離を意味します。@c +@code{Y-offset} の値は、譜の中央線からの距離を意味します。@c +@code{X-offset} と @code{Y-offset} の値は直接設定されることもありますし、@c +いくつかの形式で親オブジェクトと揃えるために@c +プロシージャによって算出されることもあります。 + +@c positioning considerations: 配置のための考慮 -> 配置規則 +@warning{多くのオブジェクトは特殊な配置規則を持っています。@c +そのため、そのオブジェクトが @code{self-alignment-interface} を@c +サポートしていたとしても、@c +@code{X-offset} あるいは @code{Y-offset} の設定は無視されたり、@c +変更されることがあります。} + +例えば、臨時記号は @code{Y-offset} を設定することにより@c +垂直方向の位置を変更することができますが、@code{X-offset} は効果を持ちません。 + +リハーサル記号は、小節線、音部記号、拍子記号それに調号などの@c +改行可能なオブジェクトに揃えることができます。@c +リハーサル記号をそのようなオブジェクトに合わせて配置するために、@c +@code{break-aligned-interface} の中に特別なプロパティがあります。 + +@seealso +記譜法リファレンス: +@ref{break-alignable-interface を使用する}, + +拡張: +@rextend{Callback functions} + +@menu +* X-offset と Y-offset を直接設定する:: +* side-position-interface を使用する:: +* self-alignment-interface を使用する:: +* break-alignable-interface を使用する:: +@end menu + +@node X-offset と Y-offset を直接設定する +@unnumberedsubsubsec @code{X-offset} と @code{Y-offset} を直接設定する +@translationof Setting X-offset and Y-offset directly + +多くのオブジェクトの @code{X-offset} プロパティと @code{Y-offset} プロパティに@c +数値を与えることができます。@c +以下の例は、3 つの音符を示していて、1 つはデフォルト配置の運指記号を持ち、@c +他の 2 つの運指記号は @code{X-offset} と @code{Y-offset} が変更されています。 + +@lilypond[verbatim,quote,relative=2] +a-3 +a +-\tweak #'X-offset #0 +-\tweak #'Y-offset #0 +-3 +a +-\tweak #'X-offset #-1 +-\tweak #'Y-offset #1 +-3 +@end lilypond + +@c TODO write more + +@node side-position-interface を使用する +@unnumberedsubsubsec @code{side-position-interface} を使用する +@translationof Using the @code{side-position-interface} + +@code{side-position-interface} をサポートするオブジェクトは、@c +その親オブジェクトの隣に配置することができ、@c +それにより、@c +それら 2 つのオブジェクトの指定された端をくっつけることができます。@c +オブジェクトを親オブジェクトの上、下、右、あるいは左に配置することができます。@c +親オブジェクトを指定することはできません: +親オブジェクトは入力ストリームの中での要素の順序によって決定されます。@c +たいていのオブジェクトの親オブジェクトは、@c +そのオブジェクトに関連する符頭となります。 + +@code{side-axis} プロパティと @code{direction} プロパティの値は、@c +以下のように、オブジェクトが配置される場所を決定します: + +@c TODO add an example of each to the table + +@multitable @columnfractions .3 .3 .3 +@headitem @code{side-axis} @tab @code{direction} @tab +@headitem property @tab property @tab Placement + +@item @code{0} @tab @code{-1} @tab å·¦ +@item @code{0} @tab @code{1} @tab 右 +@item @code{1} @tab @code{-1} @tab 下 +@item @code{1} @tab @code{1} @tab 上 + +@end multitable + +@code{side-axis} が @code{0} である場合、@code{X-offset} には@c +プロシージャ @code{ly:side-position-interface::x-aligned-side} を@c +セットする必要があります。@c +このプロシージャは、@code{direction} の値に基づいて@c +親オブジェクトの左あるいは右にオブジェクトを配置するための適切な値を +@code{X-offset} に返します。 + +@code{side-axis} が @code{1} である場合、@code{Y-offset} には@c +プロシージャ @code{ly:side-position-interface::y-aligned-side} を@c +セットする必要があります。@c +このプロシージャは、@code{direction} の値に基づいて@c +親オブジェクトの上あるいは下にオブジェクトを配置するための適切な値を +@code{Y-offset} に返します。 + +@c TODO Add examples + +@node self-alignment-interface を使用する +@unnumberedsubsubsec @code{self-alignment-interface} を使用する +@translationof Using the @code{self-alignment-interface} + +@emph{オブジェクトを自動的に水平方向に揃える} + +@code{self-alignment-interface} をサポートするオブジェクトの水平方向の揃えは、@c +@code{self-alignment-X} プロパティの値によって制御され、@c +そのオブジェクトの @code{X-offset} プロパティには@c +任意の実数値を与えることができる +@code{ly:self-alignment-interface::x-aligned-on-self}. +@code{self-alignment-X} がセットされます。@c +与える実数値は、そのオブジェクトの X 方向の広がりの半分を単位とします。@c +負値はオブジェクトを右に移動させ、正値はオブジェクトを左に移動させます。@c +値が @code{0} であればそのオブジェクトは親オブジェクトの参照ポイントに@c +中央揃えされ、@c +値が @code{-1} であればそのオブジェクトの左端が親オブジェクトの参照ポイントに@c +揃えられ、@c +値が @code{1} であればそのオブジェクトの右端が親オブジェクトの参照ポイントに@c +揃えられます。@c +記号 @code{LEFT}, @code{CENTER}, それに @code{RIGHT} は@c +それぞれ @w{@code{-1}, @code{0}, それに @code{1}} に対応します。 + +通常、@code{\override} コマンドを用いて @code{self-alignment-X} の値を@c +変更しますが、@c +@code{\tweak} コマンドを用いることで@c +単一の音符に付けられている複数の注釈を個別に揃えることができます: + +@lilypond[quote,verbatim,relative=1] +a' +-\tweak #'self-alignment-X #-1 +^"left-aligned" +-\tweak #'self-alignment-X #0 +^"center-aligned" +-\tweak #'self-alignment-X #RIGHT +^"right-aligned" +-\tweak #'self-alignment-X #-2.5 +^"aligned further to the right" +@end lilypond + +@emph{オブジェクトを自動的に垂直方向に揃える} + +オブジェクトの @code{Y-offset} プロパティに +@code{ly:self-alignment-interface::y-aligned-on-self} がセットされていれば、@c +水平方向の揃えと同じように、垂直方向に揃えることができます。@c +しかしながら、垂直方向の揃えには他のメカニズムも関与します: +@code{Y-offset} の値は、垂直方向の揃えに関与する変数の 1 つに過ぎません。@c +このことにより、いくつかのオブジェクトの @code{Y-offset} 値の調整は@c +ややこしくなります。@c +単位はそのオブジェクトの垂直方向の広がりの半分です。@c +通常これは非常に小さいため、非常に大きな数値が必要になる可能性があります。@c +値が @code{-1} であればそのオブジェクトの下端が親オブジェクトの参照ポイントに@c +揃えられ、@c +値が @code{0} であればそのオブジェクトの中央が親オブジェクトの参照ポイントに@c +揃えられ、@c +値が @code{1} であればそのオブジェクトの上端が親オブジェクトの参照ポイントに@c +揃えられます。@c +記号 @code{DOWN}, @code{CENTER}, それに @code{UP} は@c +それぞれ @w{@code{-1}, @code{0}, それに @code{1}} に対応します。 + +@emph{オブジェクトを自動的に両方向に揃える} + +@code{X-offset} と @code{Y-offset} の両方の設定を行うことで、@c +オブジェクトの水平方向と垂直方向の揃えを同時に行うことができます。 + +以下の例は、運指記号を符頭に近づけるための調整方法を示しています。 + +@c KEEP LY +@lilypond[quote,verbatim,relative=2] +a +-\tweak #'self-alignment-X #0.5 % 左方向に移動させます +-\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self +-\tweak #'self-alignment-Y #-1 % 上方向に移動させます +-3 % 3 の指 +@end lilypond + +@ignore +@unnumberedsubsubsec Using the @code{aligned-on-parent} procedures + +@c Cannot document as they do not seem to operate consistently on all objects -td +@c TODO investigate further + +The @code{aligned-on-parent} procedures are used in the same way +as the @code{aligned-on-self} procedures, they difference being +that they permit an object to be aligned with the @emph{edges} of +the parent rather than the parent's reference point. The following +example shows the difference: + +@c TODO Add example + +@lilypond[verbatim,quote] +@end lilypond + +@end ignore + +@ignore +@unnumberedsubsubsec Using the @code{centered-on-parent} procedures + +@c Cannot document as they do not seem to operate consistently on all objects -td +@c TODO investigate further + +@end ignore + +@c TODO The align-interface, BassFigureAlignment and VerticalAlignment + +@node break-alignable-interface を使用する +@unnumberedsubsubsec @code{break-alignable-interface} を使用する +@translationof Using the @code{break-alignable-interface} + +@cindex align to objects (オブジェクトに揃える) +@cindex break-align-symbols + +リハーサル記号と小節番号を小節線ではなく、@c +記譜オブジェクトに揃えることができます。@c +対象となる記譜オブジェクトには、@code{ambitus}, +@code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar}, +@code{left-edge}, @code{key-cancellation}, @code{key-signature}, それに +@code{time-signature} があります。 + +デフォルトでは、@c +リハーサル記号と小節番号はオブジェクトの上で水平方向に中央揃えされます: + +@c KEEP LY +@lilypond[verbatim,quote,relative=1] +% リハーサル記号は音部記号の上に中央揃えされます +\override Score.RehearsalMark #'break-align-symbols = #'(clef) +\key a \major +\clef treble +\mark "↓" +e1 +% リハーサル記号は拍子記号の上に中央揃えされます +\override Score.RehearsalMark #'break-align-symbols = #'(time-signature) +\key a \major +\clef treble +\time 3/4 +\mark "↓" +e2. +% リハーサル記号はブレス記号の上に中央揃えされます +\override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign) +\key a \major +\clef treble +\time 4/4 +e1 +\breathe +\mark "↓" +@end lilypond + +揃えの対象となり得るオブジェクトのリストを指定することができます。@c +揃えを行う時点で対象リストの中にあるオブジェクトのいくつかが不可視である +-- @code{break-visibility} の設定や、@c +調号と音部に対する明示的な可視性の設定により -- +場合、リハーサル記号あるいは小節番号はリストの中にある@c +最初の可視のオブジェクトに揃えられます。@c +リストの中にあるオブジェクトがすべて不可視である場合、小節線に揃えられます。@c +小節線が不可視である場合、小節線があるはずの場所に揃えられます。 + +@c KEEP LY +@lilypond[verbatim,quote,relative=1] +% リハーサル記号は調号の上に中央揃えされます +\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) +\key a \major +\clef treble +\mark "↓" +e1 +% リハーサル記号は音部記号の上に中央揃えされます +\set Staff.explicitKeySignatureVisibility = #all-invisible +\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) +\key a \minor +\clef bass +\mark "↓" +gis,,1 +% リハーサル記号は小節線の上に中央揃えされます +\set Staff.explicitKeySignatureVisibility = #all-invisible +\set Staff.explicitClefVisibility = #all-invisible +\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) +\key a \major +\clef treble +\mark "↓" +e''1 +@end lilypond + +以下の例で示すように、@c +記譜オブジェクトに対するリハーサル記号の揃えを変更することができます。@c +複数の譜を持つ楽譜では、この設定はすべての譜に適用されます。 + +@c KEEP LY +@lilypond[verbatim,quote,relative=1] +% RehearsalMark は KeySignature の上に中央揃えされます +\override Score.RehearsalMark #'break-align-symbols = #'(key-signature) +\key a \major +\clef treble +\time 4/4 +\mark "↓" +e1 +% RehearsalMark は KeySignature の左端に揃えられます +\once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT +\mark "↓" +\key a \major +e +% RehearsalMark は KeySignature の右端に揃えられます +\once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT +\key a \major +\mark "↓" +e +@end lilypond + +また、リハーサル記号を左端に揃えて、@c +さらに任意の量だけ右あるいは左にずらすことができます。@c +単位は譜スペースです: + +@c KEEP LY +@lilypond[verbatim,quote,relative=1] +% リハーサル記号は調号の左端に揃えられて +% さらに 3.5 譜スペース右にずらされます +\override Score.RehearsalMark #'break-align-symbols = #'(key-signature) +\once \override Score.KeySignature #'break-align-anchor = #3.5 +\key a \major +\mark "↓" +e1 +% リハーサル記号は調号の左端に揃えられて +% さらに 2 譜スペース左にずらされます +\once \override Score.KeySignature #'break-align-anchor = #-2 +\key a \major +\mark "↓" +e1 +@end lilypond + + +@node グラフィカル オブジェクトを垂直方向にグループ化する +@subsection グラフィカル オブジェクトを垂直方向にグループ化する +@translationof Vertical grouping of grobs + +@c FIXME Expand this section + +VerticalAlignment グラフィカル オブジェクトと +VerticalAxisGroup グラフィカル オブジェクトは対で機能します。@c +VerticalAxisGroup は Staff, Lyrics, 等のような@c +異なるグラフィカル オブジェクトをグループにまとめます。@c +それから、VerticalAlignment が +VerticalAxisGroup によってグループ化されたグラフィカル オブジェクトを@c +垂直方向に揃えます。@c +通常、楽譜には VerticalAlignment は 1 つしかありませんが、@c +Staff, Lyrics 等はそれ自体でそれぞれに VerticalAxisGroup を持ちます。 + + +@node ステンシルを変更する +@subsection ステンシルを変更する +@translationof Modifying stencils + +すべてのレイアウト オブジェクトは、@c +@code{grob-interface} の一部である @code{stencil} プロパティを持ちます。@c +通常、デフォルトでこのプロパティには、@c +出力でそのオブジェクトを具現化する記号を描画するための@c +特有の関数がセットされています。@c +例えば、@code{MultiMeasureRest} オブジェクトの @code{stencil} プロパティに@c +対する標準設定は、@code{ly:multi-measure-rest::print} です。 + +@code{stencil} プロパティを変更して異なる描画関数を参照させることにより、@c +オブジェクトの標準記号を置き換えることができます。@c +これには LilyPond 内部機能についての高い知識が求められます。@c +しかしながら、多くの場合にまずまずの結果を生み出すもっと簡単な方法があります。 + +簡単な方法では、@code{stencil} プロパティにテキストを描画する関数 +-- @code{ly:text-interface::print} -- をセットし、@c +必要な記号を生み出すマークアップ テキストを保持するよう設定された + @code{text} プロパティ与えます。@c +マークアップの自由度の高さにより、多くのことを達成できます。@c +詳細は、@ref{マークアップ内部でのグラフィック記譜法} を参照してください。 + +以下の例では、この方法を用いて符頭記号を内部に×を持つ円に変更しています。 + +@lilypond[verbatim,quote] +XinO = { + \once \override NoteHead #'stencil = #ly:text-interface::print + \once \override NoteHead #'text = \markup { + \combine + \halign #-0.7 \draw-circle #0.85 #0.2 ##f + \musicglyph #"noteheads.s2cross" + } +} +\relative c'' { + a a \XinO a a +} +@end lilypond + +@code{\musicglyph} マークアップ コマンドには、@c +Feta フォントに含まれる任意の図柄を提供することができます。@c +@ref{The Feta font} を参照してください。 + +@c TODO Add inserting eps files or ref to later + +@c TODO Add inserting Postscript or ref to later + +@seealso +記譜法リファレンス: +@ref{マークアップ内部でのグラフィック記譜法}, +@ref{テキストをフォーマットする}, +@ref{Text markup commands}, +@ref{The Feta font} + + +@node 形状を変更する +@subsection 形状を変更する +@translationof Modifying shapes + +@menu +* タイとスラーの形状を変更する:: +@end menu + +@node タイとスラーの形状を変更する +@unnumberedsubsubsec タイとスラーの形状を変更する +@translationof Modifying ties and slurs + +@cindex slurs, modifying (スラーの形状を変更する) +@cindex ties, modifying (タイの形状を変更する) +@cindex Bézier curves (ベジエ曲線) +@cindex Bézier control points (ベジエ曲線の制御ポイント) + +タイ、スラー、それにフレージング スラーは 3 次のベジエ曲線として描かれます。@c +自動的に算出されるタイあるいはスラーの形状が最適ではない場合、@c +3 次ベジエ曲線を定義するのに必要な 4 つの制御ポイントを@c +明示的に指定することによって、形状を変更することができます。 + +3 次あるいは 3 乗のベジエ曲線は、4 つの制御ポイントによって定義されます。@c +1 番目と 4 番目の制御ポイントは曲線の始点と終点になります。@c +間にある 2 つの制御ポイントは曲線の形状を定義します。@c +Web でベジエ曲線が描かれる様子を示すアニメーションを@c +見つけることができるでしょう。@c +しかしながら、以下の記述も役に立つかもしれません。@c +ベジエ曲線は最初の制御ポイントから 2 番目の制御ポイントに進み、@c +徐々に 3 番目の制御ポイントの方へ向きを変えながら +4 番目の制御ポイントの方へ向かい続け、@c +3 番目の制御ポイントから 4 番目の制御ポイントに到達します。@c +ベジエ曲線は 4 つの制御ポイントからなる四角形の中に納まります。 + +ここで、@c +タイが最適化されず、@code{\tieDown} が役に立たないケースを例として挙げます。 + +@lilypond[verbatim,quote,relative=1] +<< + { e1 ~ e } +\\ + { r4 } +>> +@end lilypond + +以下のようにタイの制御ポイントを手動で変更することにより、@c +このタイの形状を改善することができます。 + +ベジエ制御ポイントの座標は譜スペースを単位として指定されます。@c +X@tie{}座標はそのタイあるいはスラーを取り付けられる音符の参照ポイントからの@c +相対座標であり、Y@tie{}座標は譜の中央線からの相対座標です。@c +制御ポイント座標は 10 進数 (実数) のペアを 4 つ持つリストとして設定されます。@c +最適な制御ポイントを決定するための手順は、 +2 つの終点の座標を見積もり、それから 2 つの中間ポイントを推測することで、@c +制御ポイントの座標を決定します。@c +最適値はトライ&エラーで見つけ出します。 + +左右対称の曲線にするには制御ポイントを左右対称に配置する必要があるということを@c +覚えておくと役に立ちます。@c +また、ベジエ曲線の制御ポイントに平行移動、回転、それに拡大縮小などの変換を@c +適用することにより、@c +その曲線を変換できるという特性があるとも覚えておいてください。 + +上記の実例として、以下の例のオーバライドで満足のいくタイが得られています。@c +オーバライドを配置する場所 +-- タイ (あるいはスラー) が開始する音符の直前に配置する必要があります -- +に注意してください。 + +@lilypond[verbatim,quote,relative=1] +<< + { + \once \override Tie + #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) + e1 ~ e + } +\\ + { r4 } +>> +@end lilypond + +@knownissues +同じ音楽タイミングに複数のタイあるいはスラーが存在する場合、@c +@code{control-points} プロパティを変更しても@c +それらの形状を変更することはできません。@c +@code{\tweak} コマンドを用いたとしても変更できません。@c +しかしながら、@code{TieColumn} の @code{tie-configuration} プロパティを@c +オーバライドすることで、タイの垂直方向の位置と領域を変更することができます。 + +@seealso +内部リファレンス: +@rinternals{TieColumn} + +@cindex Scheme, pure containers (Scheme pure コンテナ) +@cindex Scheme, unpure containers (Scheme unpure コンテナ) +@cindex pure containers, Scheme (Scheme pure コンテナ) +@cindex unpure containers, Scheme (Scheme unpure コンテナ) +@cindex horizontal spacing, overriding (水平方向のスペースを上書きする) + + +@node unpure-pure コンテナ +@subsection unpure-pure コンテナ +@translationof Unpure-pure containers + +unpure-pure コンテナは @emph{Y-axis} スペース - 特に @code{Y-offset} と +@code{Y-extent} - の算出を文字 (つまり、数字やペア) ではなく、Scheme 関数で@c +上書きする際に有用です。 + +ある特定のグラフィカル オブジェクトでは、@code{Y-extent} は @code{stencil} +プロパティをベースにしていて、それらの @code{stencil} プロパティを上書きする場合は +unpure-pure コンテナで @code{Y-extent} も上書きする必要があります。@c +関数が @code{Y-offset} と/または @code{Y-extent} を上書きした場合、@c +その関数はコンパイルの最中に改行の算出を早すぎるタイミングで引き起こすと見なされます。@c +そのため、その関数はまったく評価されず (通常、@samp{0} または @samp{'(0 . 0)} の@c +値を返します)、結果として衝突を引き起こすことがあります。@c +@q{pure} 関数はプロパティ、オブジェクト、あるいはグラフィカル オブジェクトの消失に@c +影響を与えないため、その関数の Y-axis に関する評価は常に正しく行われます。 + +現在のところ @q{pure} と見なされる関数が約 30 あり、Unpure-pure コンテナを用いて +@q{pure} ではない関数を @q{pure} な関数としてセットすることができます。@c +@q{pure} 関数は改行の @emph{前に} 評価されるため、水平方向のスペースを +@q{正しいタイミングで} 調節することができます。@c +@q{unpure} 関数は改行の @emph{後に} 評価されます。 + +@warning{@q{pure} な関数を常に把握していることは困難なので、作成する @q{pure} +関数ではグラフィカル オブジェクト @code{Beam} や @code{VerticalAlignment} を@c +使わないことをおすすめします。} + +unpure-pure コンテナは以下のように構築します: + +@code{(ly:make-unpure-pure-container f0 f1)} + +ここで @code{f0} は @var{n} (@var{n >= 1}) 個の引数を取る関数であり、最初の引数@c +は常にグラフィカル オブジェクトである必要があります。@c +これが実際に結果を返す関数です。@c +@code{f1} は @q{pure} であると見なされる関数であり、@var{n + 2} 個の引数を@c +取ります。@c +@code{f1} も最初の引数は常にグラフィカル オブジェクトである必要があり、2 番目と +3 番目の引数は @q{start} と @q{end} です。 + +@q{start} と @q{end} は事実上、@code{Spanners} (つまり、@code{Hairpin} や +@code{Beam}) だけで問題となるダミー値であり、 +@var{start} and @var{end} are, for all intents and purposes, dummy +values that only matter for @code{Spanners} (i.e @code{Hairpin} or +@code{Beam}), that can return different height estimations based on a +starting and ending column. + +@code{f1} の残りの引数は @code{f0} の引数と同じです (@var{n = 1} である場合は@c +残りの引数はありません)。 + +関数 @code{f1} の結果は概算であり、@code{f0} が実際の値を得るのに用いられます。@c +@code{f0} の結果はもっと後のスペースの処理で微調整に用いられます。 + +@lilypond[verbatim,quote,ragged-right] +#(define (square-line-circle-space grob) +(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch)) + (notename (ly:pitch-notename pitch))) + (if (= 0 (modulo notename 2)) + (make-circle-stencil 0.5 0.0 #t) + (make-filled-box-stencil '(0 . 1.0) + '(-0.5 . 0.5))))) + +squareLineCircleSpace = { + \override NoteHead #'stencil = #square-line-circle-space +} + +smartSquareLineCircleSpace = { + \squareLineCircleSpace + \override NoteHead #'Y-extent = + #(ly:make-unpure-pure-container + ly:grob::stencil-height + (lambda (grob start end) (ly:grob::stencil-height grob))) +} + +\new Voice \with { \remove "Stem_engraver" } +\relative c'' { + \squareLineCircleSpace + cis4 ces cisis c + \smartSquareLineCircleSpace + cis4 ces cisis c +} +@end lilypond + +最初の小節では unpure-pure コンテナを用いていないため、スペース算出エンジンは符頭の@c +幅を知ることができず、符頭と臨時記号が衝突しています。@c +次の小節では unpure-pure コンテナを用いているため、スペース算出エンジンは符頭の幅を@c +知ることができ、それに応じて小節の幅を増やすことで衝突を回避しています。 + +通常、簡単な計算では、unpure-pure コンテナの @q{unpure} パートと @q{pure} パート@c +の両方に、引数の数とスコープを変えただけのほとんど同じ関数を用いることができます。 + +@warning{@q{pure} と見なした関数が @q{pure} でなかった場合、予期しない結果となる@c +ことがあります。} + + +@node 音楽関数を使用する +@section 音楽関数を使用する +@translationof Using music functions + +@c TODO -- add @seealso, etc. to these subsections + +調整を異なる音楽表記に再利用する必要がある場合、@c +その調整を音楽関数にしておくと便利です。@c +このセクションでは、@emph{置換} 関数についてだけ議論します。@c +置換関数は変数を LilyPond 入力コードに置き換えます。@c +他のもっと複雑な関数については、@rextend{Music functions} で記述されています。 + +@menu +* 置換関数の構文:: +* 置換関数の例:: +@end menu + +@node 置換関数の構文 +@subsection 置換関数の構文 +@translationof Substitution function syntax + +変数を LilyPond コードに置換する関数を作成することは簡単にできます。@c +置換関数の一般的な形式は以下のようなものです: + +@example +function = +#(define-music-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{type1?} @var{type2?} @dots{}) + #@{ + @var{@dots{}music@dots{}} + #@}) +@end example + +@noindent +ここで + +@multitable @columnfractions .33 .66 +@item @code{@var{argN}} +@tab @var{n} 番目の引数 + +@item @code{@var{typeN?}} +@tab @code{@var{argN}} が @code{#t} を返す Scheme の @emph{型述語} (type predicate)。 + +@item @code{@var{@dots{}music@dots{}}} +@tab 通常の LilyPond 入力。引数を参照するには @code{$} (LilyPond 構造が@c +許可されている場合のみ) や @code{#} (引数を Scheme 値、音楽関数の引数、@c +あるいは音楽リスト内部の音楽として使う場合) を用います +(例: @samp{#arg1})。 +@end multitable + +です。 + +引数 @code{parser} と @code{location} を省略することはできず、@c +@rextend{Music functions} で記述されている高度な状況で@c +使用されることがあります。 +置換関数において、必ずこれらの引数を記述してください。 + +引数として、型述語のリストも必須です。@c +音楽関数で用いられる一般的な型述語には下記のものがあります: + +@example +boolean? +cheap-list? @emph{(}@q{list?}@emph{ の代わりに用いることで、処理を高速にします)} +ly:music? +markup? +number? +pair? +string? +symbol? +@end example + +@noindent +利用可能な型述語のリストは、@c +@ref{Predefined type predicates} を参照してください。@c +ユーザが型述語を定義することもできます。 + +@seealso +記譜法リファレンス: +@ref{Predefined type predicates} + +拡張: +@rextend{Music functions} + +インストールされているファイル: +@file{lily/music-scheme.cc}, +@file{scm/c++.scm}, +@file{scm/lily.scm} + + +@node 置換関数の例 +@subsection 置換関数の例 +@translationof Substitution function examples + +このセクションでは、置換関数の例をいくつか紹介します。@c +高度なことはしていませんが、シンプルな置換関数を実現する方法を示しています。 + +最初の例では、@c +@code{TextScript} のパディング設定を容易にするための関数が定義されています: + +@lilypond[quote,verbatim,ragged-right] +padText = +#(define-music-function + (parser location padding) + (number?) + #{ + \once \override TextScript #'padding = $padding + #}) + +\relative c''' { + c4^"piu mosso" b a b + \padText #1.8 + c4^"piu mosso" d e f + \padText #2.6 + c4^"piu mosso" fis a g +} +@end lilypond + +数値のほかに、音符などの音楽表記を音楽関数への引数にすることができます: + +@lilypond[quote,verbatim,ragged-right] +custosNote = +#(define-music-function + (parser location note) + (ly:music?) + #{ + \tweak NoteHead #'stencil #ly:text-interface::print + \tweak NoteHead #'text + \markup \musicglyph #"custodes.mensural.u0" + \tweak Stem #'stencil ##f + #note + #}) + +\relative c' { c4 d e f \custosNote g } +@end lilypond + +複数の引数をとる置換関数を定義することもできます: + +@lilypond[quote,verbatim,ragged-right] +tempoPadded = +#(define-music-function + (parser location padding tempotext) + (number? markup?) + #{ + \once \override Score.MetronomeMark #'padding = $padding + \tempo \markup { \bold #tempotext } + #}) + +\relative c'' { + \tempo \markup { "Low tempo" } + c4 d e f g1 + \tempoPadded #4.0 "High tempo" + g4 f e d c1 +} +@end lilypond + +@c TODO: add appropriate @@ref's here. diff --git a/Documentation/ja/notation/cheatsheet.itely b/Documentation/ja/notation/cheatsheet.itely new file mode 100644 index 0000000000..4bf1892660 --- /dev/null +++ b/Documentation/ja/notation/cheatsheet.itely @@ -0,0 +1,306 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- + +@ignore + Translation of GIT committish: 45329bd378eedfebca34c746fff9e53b46cf2fe5 + + 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.16.0" + + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + + +@c TODO: add tablature. + +@node カンニング ペーパー +@appendix カンニング ペーパー +@translationof Cheat sheet + + +@multitable @columnfractions .35 .3 .35 + +@item @b{構文} +@tab @b{説明} +@tab @b{例} + +@item @code{1 2 8 16} +@tab 演奏時間 +@tab +@lilypond[fragment,relative=2,notime] +\set Staff.autoBeaming = ##f +\override Staff.Clef #'break-visibility = #all-invisible +c1 c2 c8 c16 +@end lilypond + +@item @code{c4. c4..} +@tab 増音の付点 +@tab +@lilypond[relative=2,notime] +\override Staff.Clef #'break-visibility = #all-invisible +c4. c4.. +@end lilypond + +@item @code{c d e f g a b } +@tab 音階 +@tab +@lilypond[fragment,relative=1,notime] +c d e f g a b +@end lilypond + +@c 保留: alteration -- 変音? +@item @code{fis bes} +@tab 変音 +@tab +@lilypond[fragment,relative=1,notime] +fis bes +@end lilypond + +@item @code{\clef treble \clef bass } +@tab 音部記号 +@tab +@lilypond[fragment,notime] +\clef treble +s4_" " +\clef bass +s4_" " +@end lilypond + +@item @code{\time 3/4 \time 4/4 } +@tab 拍子記号 +@tab +@lilypond[fragment] +\override Staff.Clef #'transparent = ##t +\time 3/4 +s4_" " +\time 4/4 +s16_" " +@end lilypond + + +@item @code{r4 r8} +@tab 休符 +@tab +@lilypond[relative=2,notime,fragment] +\override Staff.Clef #'break-visibility = #all-invisible +r4 r8 +@end lilypond + +@item @code{d ~ d} +@tab タイ +@tab +@lilypond[relative=2,notime,fragment] +\set Score.timing = ##f +\set Staff.autoBeaming = ##f +d ~ d +@end lilypond + +@item @code{\key es \major } +@tab 調号 +@tab +@lilypond[notime,relative=1] +\clef treble +\key es \major +\hideNotes +c128 +@end lilypond + +@item @var{note}@code{'} +@tab 1 オクターブ上げる +@tab +@lilypond[relative=2,notime,fragment] +\set Score.timing = ##f +\set Staff.autoBeaming = ##f +a a' +@end lilypond + +@item @var{note}@code{,} +@tab 1 オクターブ下げる +@tab +@lilypond[relative=2,notime,fragment] +\set Score.timing = ##f +\set Staff.autoBeaming = ##f +c c, +@end lilypond + + +@item @code{c( d e)} +@tab スラー +@tab +@lilypond[fragment,relative=2] +\set Score.timing = ##f +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\set Staff.autoBeaming = ##f +c( d e) +@end lilypond + + +@item @code{c\( c( d) e\)} +@tab プレージング スラー +@tab +@lilypond[fragment,relative=2] +\set Score.timing = ##f +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\set Staff.autoBeaming = ##f +c\( c( d) e\) +@end lilypond + + +@item @code{a8[ b]} +@tab 連桁 +@tab +@lilypond[fragment,relative=2] +\set Score.timing = ##f +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\set Staff.autoBeaming = ##f +a8-[ b-] +@end lilypond + + +@item @code{<< \new Staff ... >>} +@tab 複数の譜 +@tab +@lilypond[fragment] +<< \new Staff { + \set Staff.implicitTimeSignatureVisibility = #all-invisible + c'1 + } + \new Staff { + \set Staff.implicitTimeSignatureVisibility = #all-invisible + c'1 + } >> +@end lilypond + + +@item @code{c-> c-.} +@tab アーティキュレーション +@tab +@lilypond[fragment,relative=2] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +c-> c-. +@end lilypond + + +@item @code{c2\mf c\sfz} +@tab 強弱記号 +@tab +@lilypond[fragment,relative=2] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +c2\mf c\sfz +@end lilypond + + +@item @code{a\< a a\!} +@tab クレッシェンド +@tab +@lilypond[fragment,relative=2] +\set Score.timing = ##f +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\set Staff.autoBeaming = ##f +a\< a a\! +@end lilypond + +@item @code{a\> a a\!} +@tab デクレッシェンド +@tab +@lilypond[fragment,relative=2] +\set Score.timing = ##f +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\set Staff.autoBeaming = ##f +a\> a a\! +@end lilypond + + +@item @code{< >} +@tab 和音 +@tab +@lilypond[fragment,relative=2] +\set Staff.implicitTimeSignatureVisibility = #all-invisible + +@end lilypond + + +@item @code{\partial 8} +@tab 上拍 +@tab +@lilypond[fragment,relative=2] +\partial 8 +f8 c2 d e +@end lilypond + + +@item @code{\times 2/3 @{f g a@}} +@tab 3 連符 +@tab +@lilypond[relative=1,fragment] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\times 2/3 { f8 g a } +@end lilypond + + +@item @code{\grace} +@tab 装飾小音符 +@tab +@lilypond[relative=2,fragment] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\context Voice { \grace b16 c4 } +@end lilypond + +@item @code{\lyricmode @{ twinkle @}} +@tab 歌詞を入力する +@tab +twinkle + + +@item @code{\new Lyrics} +@tab 歌詞を譜刻する +@tab +@lilypond[fragment] +\new Lyrics \lyricmode { twinkle } +@end lilypond + +@item @code{twin -- kle} +@tab 歌詞のハイフン +@tab +@lilypond[fragment,relative=2] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +<< + { g'1 g } + \new Lyrics \lyricsto "" { twin -- kle } +>> +@end lilypond + +@item @code{\chordmode @{ c:dim f:maj7 @}} +@tab コード +@tab +@lilypond[fragment,relative=2] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\chordmode { c:dim f:maj7 } +@end lilypond + +@item @code{\context ChordNames} +@tab コード ネームを譜刻する +@tab +@lilypond[fragment,relative=2] +\chords { c:dim f:maj7 } +@end lilypond + +@item @code{<<@{e f@} \\ @{c d@}>>} +@tab 多声 +@tab +@lilypond[fragment,relative=2] +\set Staff.implicitTimeSignatureVisibility = #all-invisible +\context Staff <<{e f} \\ {c d}>> +@end lilypond + + +@item @code{s4 s8 s16} +@tab 空白休符 +@tab + +@end multitable + diff --git a/Documentation/ja/notation/chords.itely b/Documentation/ja/notation/chords.itely new file mode 100644 index 0000000000..c878007780 --- /dev/null +++ b/Documentation/ja/notation/chords.itely @@ -0,0 +1,1230 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node 和音記譜法 +@section 和音記譜法 +@translationof Chord notation + +@lilypondfile[quote]{chords-headword.ly} + +和音を通常の音符として入力したり、和音モードで入力したりすることができ、@c +様々な従来のヨーロッパの和音命名規則を用いて表示することができます。@c +和音ネームと通奏低音記譜を表示させることもできます。 + +@menu +* 和音モード:: +* 和音を表示する:: +* 通奏低音:: +@end menu + + +@node 和音モード +@subsection 和音モード +@translationof Chord mode + +@cindex chord chords (和音) + +和音モードでは、和音のピッチではなく、@c +和音構造の指示子を用いてコードを入力します。 + +@menu +* 和音モードの概要:: +* 一般的な和音:: +* 和音の拡張と変形:: +@end menu + +@node 和音モードの概要 +@unnumberedsubsubsec 和音モードの概要 +@translationof Chord mode overview + +@cindex chord names (コード ネーム) +@cindex chord mode (和音モード) + +和音を @ref{和音の音符} で説明しているように、@c +同時進行する音として入力することができます。 + +和音を @qq{和音モード} で入力することもできます。 +和音モードは、ピッチではなく、@c +従来のヨーロッパ音楽での和音構造に焦点を当てた入力モードです。@c +これは、コード ネームを使うことに慣れているユーザにとって、@c +和音を記述するのに便利な機能です。@c +他の入力モードについて更なる情報は、@ref{入力モード} を参照してください。 + +@lilypond[verbatim,quote,ragged-right] +\chordmode { c1 g a g c } +@end lilypond + +和音モードを用いて入力される和音は音楽要素であり、@c +同時進行する音として入力される和音と同様に移調させることができます。@c +@code{\chordmode} は絶対モードであり、@c +@code{\chordmode} ブロックでは @code{\relative} は効果を持ちません。@c +しかしながら、@code{\chordmode} での絶対ピッチは音符モードよりも +1 オクターブ高くなります。 + +一連の音楽の中で、和音モードと音符モードを切り替えることができます: + +@lilypond[verbatim,quote,ragged-right,relative=1] +2 +\chordmode { c2 f } +2 +\chordmode { f2 g } +@end lilypond + +@seealso +音楽用語集: +@rglos{chord} + +記譜法リファレンス: +@ref{Chorded notes}, +@ref{Input modes} + +コード断片集: +@rlsr{Chords} + +@knownissues + +あらかじめ定義されているアーティキュレーションと装飾の短縮形を@c +和音モードで使うことはできません。@c +@ref{アーティキュレーションと装飾} を参照してください。 + +一連の音楽の中で和音モードと音符モードが混じっていて、@c +和音モードから始まる場合、@c +音符モードは新たに @code{Staff} コンテキストを作成します: + +@lilypond[verbatim,quote,ragged-right,relative=1] +\chordmode { c2 f } +2 +@end lilypond + +@noindent +これを避けるには、@code{staff} コンテキストを明示的に作成します: + +@lilypond[verbatim,quote,ragged-right,relative=1] +\new Staff { + \chordmode { c2 f } + 2 +} +@end lilypond + +@node 一般的な和音 +@unnumberedsubsubsec 一般的な和音 +@translationof Common chords + +@cindex triads (三和音、トライアド) +@cindex seventh chords (七の和音、セブンス コード) +@cindex root of chord (和音の根音) +@cindex modifiers, in chords (和音での修飾子) +@cindex chord quality (コード クオリティー) + +長三和音 (メジャー トライアド) を入力するには、@c +根音とオプションで演奏時間を示します: + +@lilypond[verbatim,quote,ragged-right] +\chordmode { c2 f4 g } +@end lilypond + +短三和音、増三和音、それに減三和音 +(マイナー、オーグメンテッド、ディミニッシュト トライアド) +は、演奏時間の後に @code{:} とクオリティー修飾子を配置することにより@c +入力します: + +@lilypond[verbatim,quote,ragged-right] +\chordmode { c2:m f4:aug g:dim } +@end lilypond + +七の和音 (セブンス コード) を作成することができます: + +@lilypond[quote,ragged-right,verbatim] +\chordmode { c1:7 c:m7 c:maj7 c:dim7 c:aug7 } +@end lilypond + +@funindex aug +@funindex dim +@funindex maj +@funindex m + +以下に示す表は、三和音と七の和音に付けられるクオリティー修飾子を@c +示しています。@c +和音に付けくわえられる第 7 音は短 7 度またはフラットの 7 度で、@c +基本となる七の和音は属七の和音となります。@c +すべての変化は属七の和音からの変化です。@c +修飾子の使い方についてのより完全な表は @ref{Common chord modifiers} +にあります。 + +@c @table @code +@multitable @columnfractions .2 .4 .3 + +@item +@b{修飾子} +@tab +@b{動作} +@tab +@b{例} + +@item +無し +@tab +デフォルトの動作で、長三和音を作り出します。 +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1 +} +@end lilypond + +@item +m, m7 +@tab +短和音。この修飾子は第 3 音を下げます。 +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:m c:m7 +} +@end lilypond + + +@item +dim, dim7 +@tab +減和音。この修飾子は 3 度と 5 度 (と存在する場合は 7 度) の音を下げます。 +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:dim c:dim7 +} +@end lilypond + +@item +aug +@tab +増和音。この修飾子は第 5 音を上げます。 +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:aug +} +@end lilypond + +@item +maj, maj7 +@tab +長七和音。この修飾子は第 7 音を上げます。@c +@code{maj} の後の @code{7} はオプションです。@c +長三和音を作り出す時にこの修飾子は @b{使いません}。 +@tab +@lilypond[line-width=4\cm, noragged-right] +\chordmode { + \override Staff.TimeSignature #'stencil = ##f + c1:maj c:maj7 +} +@end lilypond + +@end multitable + +@seealso +記譜法リファレンス: +@ref{Common chord modifiers}, +@ref{和音の拡張と変形} + +コード断片集: +@rlsr{Chords} + +@knownissues +和音に付けるクオリティー修飾子は 1 つだけ +-- 通常は和音の最も高い音に対して -- +にしてください。@c +複数のクオリティー修飾子を持つ和音は、エラーや警告無しで構文解析されますが、@c +結果は予測できません。@c +1 つのクオリティー修飾子では実現できない和音は、@c +個々のピッチに分解してください +-- @ref{和音の拡張と変形} で説明しています。 + + +@node 和音の拡張と変形 +@unnumberedsubsubsec 和音の拡張と変形 +@translationof Extended and altered chords + +@cindex extended chords (和音の拡張) +@cindex altered chords (和音の変形) + +和音モードで様々な複雑さの和音構造を作ることができます。@c +修飾子文字列を使って和音を拡張したり、和音の音を追加 / 削除したり、@c +和音の音を上げ / 下げしたり、低音を付け加えたり、@c +転回を作り出したりすることができます。 + +@code{:} のすぐ後にくる数字は和音の拡張となります。@c +和音は、根音から指定された数に達するまで 3 度毎に音を@c +付け加えることによって構成されます。@c +和音の拡張として付け加えられる第 7 音は短 7 度またはフラットの 7 度@c +であることに注意してください。@c +拡張で指定された音が 3 度毎の音ではない場合 (例えば 6)、@c +拡張を超えない範囲で 3 度毎に音が付け加えられ、@c +最後に拡張の音が付け加えられます。@c +拡張で取り得る最大値は 13 です。@c +それよりも大きな値は 13 と解釈されます。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1:2 c:3 c:4 c:5 + c1:6 c:7 c:8 c:9 + c1:10 c:11 c:12 c:13 + c1:14 +} +@end lilypond + +@noindent +@code{c:5} と @code{c} はどちらも +C の長三和音を作り出すということに注意してください。 + +第 11 音が第 13 音と組み合わされると響きが良くないため、@c +@code{:13} 和音から第 11 音は削除されます +(明示的に第 11 音が付け加えられない限りは)。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1:13 c:13.11 c:m13 +} +@end lilypond + +@cindex additions, in chords (和音への音の追加) + +個々の音を和音に付けくわえることができます。@c +追加は拡張の後にドット (@code{.}) を前置して記述します。@c +和音に付けくわえられる第 7 音は、長 7 度ではなく、@c +短 7 度またはフラットの 7 度です。 + +@lilypond[quote,verbatim] +\chordmode { + c1:5.6 c:3.7.8 c:3.6.13 +} +@end lilypond + +追加する音の高さは望みの高さにすることができます。 + +@lilypond[quote,verbatim] +\chordmode { + c4:5.15 c:5.20 c:5.25 c:5.30 +} +@end lilypond + +@cindex chord steps, altering (和音の音を変化させる) + +和音の音は、数字の後ろに @code{+} または@code{-] を置くことで@c +変化させることができます。@c +和音構造の一部として自動的に含まれる音を変化させるには、@c +その音を追加して変化させます。 + +@lilypond[quote,verbatim] +\chordmode { + c1:7+ c:5+.3- c:3-.5-.7- +} +@end lilypond + +@cindex removals, in chords (和音の音の削除) + +@funindex ^ + +和音に音を追加できるだけでなく、@c +@code{^} を前置させた修飾子文字列で音を削除することができます。@c +複数の音を削除する場合は、@c +最初の @code{^} の後に削除する音を @code{.} で区切って記述します。 + +@lilypond[quote,verbatim] +\chordmode { + c1^3 c:7^5 c:9^3 c:9^3.5 c:13.11^3.7 +} +@end lilypond + +@funindex sus + +修飾子 @code{sus} を修飾子文字列に付け加えることにより、@c +サスペンド コードを作り出すことができます。@c +これは和音から第 3 音を削除します。@c +さらに @code{sus} の後に @code{2} または @code{4} を付け加えると、@c +和音に第 2 音または第 4 音が追加されます。@c +@code{sus} は @code{^3} と等価であり、@c +@code{sus4} は @code{.4^3} と等価です。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1:sus c:sus2 c:sus4 c:5.4^3 +} +@end lilypond + +@funindex / +@cindex chord inversions (和音の転回) +@cindex bass note, for chords (和音に対する低音) + +転回 (根音ではないピッチを和音の下に配置します) と低音の追加は、@c +和音の後に @code{/}@var{pitch} を記述することで指定できます。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1 c/g c/f +} +@end lilypond + +@funindex /+ + +転回として音を移動させる代わりに、@c +@code{/+}@var{pitch} を用いて和音に低音を付け加えることができます。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c1 c/g c/+g +} +@end lilypond + +様々な標準和音を作り出すために使用される和音修飾子を +@ref{Common chord modifiers} で示しています。 + +@seealso +記譜法リファレンス: +@ref{Common chord modifiers} + +コード断片集: +@rlsr{Chords} + +@knownissues +和音で各音を 1 度だけ使うことができます。@c +以下の例では、最後の @code{5+} が解釈されるため、@c +増和音が作り出されます。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { c1:5.5-.5+ } +@end lilypond + +第二転回和音を作り出すには、低音を追加するしかありません。@c +最初の転回 (2 つ目の和音) を第二転回和音にするには、@c +和音の根音を変える必要があります。 + +@lilypond[quote,ragged-right,verbatim] +\chordmode { + c'1: c':/g e:6-3-^5 e:m6-^5 +} +@end lilypond + +@node 和音を表示する +@subsection 和音を表示する +@translationof Displaying chords + +譜に音符を表示させるという標準の表示に加えて、@c +コード ネームを表示させることができます。 + +@menu +* コード ネームを譜刻する:: +* コード ネームをカスタマイズする:: +@end menu + +@node コード ネームを譜刻する +@unnumberedsubsubsec コード ネームを譜刻する +@translationof Printing chord names + +@cindex printing chord names (コード ネームを譜刻する) +@cindex chord names (コード ネーム) +@cindex chords (コード、和音) + +コード ネームは @code{ChordNames} コンテキストに譜刻されます: + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + \chordmode { + c2 f4. g8 + } +} +@end lilypond + +和音は同時進行する音符としてか、@c +和音モードを使用することで入力することができます。@c +転回や低音の追加が無い限り入力モードに関係なく、@c +和音と同じコード ネームが表示されます: + +@lilypond[verbatim,quote,relative=1] +<< + \new ChordNames { + 2 + 1 + \chordmode { + c2 f:sus4 c1:/f + } + } + { + 2 + 1 + \chordmode { + c2 f:sus4 c1:/f + } + } +>> +@end lilypond + +@cindex no chord symbol (無和音記号) +@cindex N.C. symbol (N.C. 記号) +@cindex indicating No Chord in ChordNames (ChordNames で無和音を記述する) + +@code{ChordNames} コンテキストに休符が渡されると、@c +@code{noChordSymbol} マークアップが表示されます。 + +@lilypond[verbatim, quote, relative=1] +<< + \new ChordNames \chordmode { + c1 + r1 + g1 + c1 + } + \chordmode { + c1 + r1 + g1 + c1 + } +>> +@end lilypond + +@funindex{\chords} + +@code{\chords @{ ... @}} は @code{\new ChordNames @{ \chordmode @{ ... @} @}} +の短縮形です。 + +@lilypond[verbatim,quote,ragged-right] +\chords { + c2 f4.:m g8:maj7 +} +@end lilypond + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + \chordmode { + c2 f4.:m g8:maj7 + } +} +@end lilypond + +@snippets + +@c Keep index entries with following snippet +@cindex chords, suppressing repeated (和音の繰り返しを抑制する) +@funindex chordChanges + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{showing-chords-at-changes.ly} + +@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +@c {adding-bar-lines-to-chordnames-context.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{simple-lead-sheet.ly} + +@seealso +音楽用語集: +@rglos{chord} + +記譜法リファレンス: +@ref{音楽を並列に記述する} + +コード断片集: +@rlsr{Chords} + +内部リファレンス: +@rinternals{ChordNames}, +@rinternals{ChordName}, +@rinternals{Chord_name_engraver}, +@rinternals{Volta_engraver}, +@rinternals{Bar_engraver} + +@knownissues +同時進行する音として和音を入力している場合、@c +転回や低音の追加を含む和音のコード ネームは正しく表示されません。 + + +@node コード ネームをカスタマイズする +@unnumberedsubsubsec コード ネームをカスタマイズする +@translationof Customizing chord names (コード ネームをカスタマイズする) + +@cindex customizing chord names (コード ネームをカスタマイズする) + +和音の命名規則は 1 つではありません。@c +流儀が異なれば、同じ和音に対して異なるコード ネームを使います。@c +コード ネームで表示される記号にも違いがあります。@c +コード ネームで表示される名前と記号をカスタマイズすることができます。 + +@cindex jazz chords (ジャズ コード) +@cindex chords, jazz (ジャズ コード) + +基本となるコード ネーム命名規則はジャズ音楽用のものです。@c +これは Klaus Ignatzek によって提唱されたものです +(@ressay{Literature list} を参照してください)。@c +コード ネーム命名規則を変更することができます。@c +以下で説明する変更方法を用いてジャズ コード命名規則を改造することができます。@c +Ignatzek のジャズ コードと変形コードを @ref{Chord name chart} の表で@c +示しています。 + +@c TODO -- Change this so we don't have a non-verbatim example. +@c Make short example in docs, then move longer example to +@c appendix, where the length of the snippet won't matter. + +命名規則の変更に加えて、@c +根音の音符名の言語を変更することができます。@c +あらかじめ定義されているコマンド @code{\germanChords}, +@code{\semiGermanChords}, @code{\italianChords} +それに @code{\frenchChords} が言語を設定します。 +これらのコマンドの効果を以下に示します: + +@lilypondfile[ragged-right]{chord-names-languages.ly} + + +@funindex chordNameLowercaseMinor + +ドイツ歌集では短和音を@c +接尾辞 @var{m} を伴わない小文字で記述する場合があります。@c +これは @code{chordNameLowercaseMinor} プロパティを設定することで実現できます: + +@lilypond[verbatim,quote,ragged-right] +\chords { + \set chordNameLowercaseMinor = ##t + c2 d:m e:m f +} +@end lilypond + +既存の設定では望みの出力を得られない場合、@c +コード ネームの表示を以下のプロパティを通じて調整することができます。 + +@table @code + +@funindex chordRootNamer + +@item chordRootNamer + +通常、コード ネームは根音の文字にオプションの変化を付けて表示されます。@c +この関数がピッチから文字に変換します。@c +新しい関数をこのプロパティにセットすることで特殊な音符名 +(例えば、B コードを表すドイツ語の @q{H}) を作り出すことができます。 + +@funindex majorSevenSymbol + +@item majorSevenSymbol + +このプロパティは @code{chordRootNamer} の出力に続けて@c +長七和音を示すために使用されるマークアップ オブジェクトを保持します。@c +あらかじめ定義されている選択肢は +@code{whiteTriangleMarkup} と @code{blackTriangleMarkup} です。 + +@funindex additionalPitchPrefix + +@item additionalPitchPrefix + +コード ネームが追加のピッチを保持している場合、@c +追加ピッチの前にテキストを付けることができます。@c +見た目が雑然となることを避けるため、@c +デフォルトでは追加ピッチの前にテキストは付きません。@c +しかしながら、追加ピッチが少数の場合はテキストを付けると効果的です。 + +@lilypond[verbatim,quote,ragged-right] +\new ChordNames { + % add9 + \set additionalPitchPrefix = #"add" + % add9 +} +@end lilypond + +@funindex chordNoteNamer + +@item chordNoteNamer + +コード ネームが根音以外の追加ピッチを保持している場合 (例えば追加の低音)、@c +この関数が追加ピッチを譜刻するのにを用いられます。@c +デフォルトでは、ピッチは @code{chordRootNamer} を用いて譜刻されます。@c +@code{chordNoteNamer} にカスタマイズした関数をセットすることで、@c +この振る舞いを変えることができます。@c +例えば、低音を小文字で譜刻させることができます。 + +@funindex chordNameSeparator + +@item chordNameSeparator + +通常、コード ネームはパート毎に小さなスペースで区切られます。@c +@code{chordNameSeparator} を設定することにより、@c +区切りをお望みのマークアップに変更することができます。@c +これはコード ネームと低音名の間の区切りには影響を与えません +-- この区切りをカスタマイズする場合は、@code{slashChordSeparator} を設定します。 + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set chordNameSeparator = \markup { "/" } + \break + c4:7.9- c:7.9-/g +} +@end lilypond + +@funindex slashChordSeparator + +@item slashChordSeparator + +和音に通常の根音とは異なる低音を持たせることができます。@c +これは @qq{転回} と呼ばれ、@c +デフォルトの記譜法では主和音と低音符の間をシュラッシュで区切るため@c +スラッシュ @qq{スラッシュ コード} とも呼ばれます。@c +@code{slashChordSeparator} のデフォルト値はスラッシュですが、@c +お望みのマークアップに変更することができます。 + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:7.9- c:7.9-/g + \set slashChordSeparator = \markup { " over " } + \break + c4:7.9- c:7.9-/g +} +@end lilypond + +@funindex chordNameExceptions + +@item chordNameExceptions + +このプロパティはペアのリストです。@c +各ペアの最初の要素は和音の中に存在する音を指定するピッチのセットです。@c +次の要素は、最初の要素で指定された和音のコード ネームを作り出すために、@c +@code{chordRootNamer} の出力の後に記譜されるマークアップです。 + +@funindex minorChordModifier + +@item minorChordModifier + +短和音は和音の根音の右側に接尾辞 @q{m} を配置することによって@c +記述されることが多いです。@c +しかしながら、マイナス記号等の他の接尾辞を使う場合もあります。 + +@lilypond[verbatim,quote,ragged-right] +\chords { + c4:min f:min7 + \set minorChordModifier = \markup { "-" } + \break + c4:min f:min7 +} +@end lilypond + +@funindex chordPrefixSpacer + +@item chordPrefixSpacer + +通常、@code{minorChordModifier} で指定される短和音の修飾子は@c +和音の根音のすぐ右に譜刻されます。@c +@code{chordPrefixSpacer} を設定することにより、@c +根音と修飾子の間にスペースを置くことができます。@c +根音が変化した場合、このスペースは配置されません。 + +@end table + + +@predefined +@funindex major seven symbols +@code{\whiteTriangleMarkup}, +@code{\blackTriangleMarkup}, +@funindex \germanChords +@code{\germanChords}, +@funindex \semiGermanChords +@code{\semiGermanChords}, +@funindex \italianChords +@code{\italianChords}, +@funindex \frenchChords +@code{\frenchChords} +@endpredefined + + +@snippets + +@cindex exceptions, chord names. +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chord-name-exceptions.ly} + +@c TODO - tweak snippet to use \blackTriangleMarkup as well +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chord-name-major7.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-bar-lines-to-chordnames-context.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{volta-below-chords.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-chord-separator.ly} + +@seealso +記譜法リファレンス: +@ref{Chord name chart}, +@ref{Common chord modifiers} + +楽譜譜刻の自動化についてのエッセー: +@ressay{Literature list} + +インストールされているファイル: +@file{scm/chords-ignatzek.scm}, +@file{scm/chord-entry.scm}, +@file{ly/chord-modifier-init.ly} + +コード断片集: +@rlsr{Chords} + +@knownissues +コード ネームは、和音に含まれるピッチと +@code{\chordmode} で入力される和音構造についての情報の両方から決定されます。@c +和音の入力手段として同時進行するピッチを用いた場合、@c +転回や低音により予期しないコード ネームとなります。 + +@lilypond[quote,ragged-right,verbatim] +myChords = \relative c' { + \chordmode { c1 c/g c/f } + 1 +} +<< + \new ChordNames { \myChords } + \new Staff { \myChords } +>> +@end lilypond + + +@node 通奏低音 +@subsection 通奏低音 +@translationof Figured bass + +@c Line width hack because of instrument names +@lilypondfile[quote,staffsize=18,line-width=14.5\cm]{figured-bass-headword.ly} + +通奏低音を譜刻することができます。 + +@menu +* 通奏低音の導入部:: +* 通奏低音を入力する:: +* 通奏低音を表示する:: +@end menu + +@node 通奏低音の導入部 +@unnumberedsubsubsec 通奏低音の導入部 +@translationof Introduction to figured bass + +@cindex Basso continuo +@cindex Thorough bass +@cindex Figured bass (通奏低音) +@cindex Bass, thorough +@cindex Bass, figured (通奏低音) + +@c TODO: musicological blurb about FB + + +LilyPond は通奏低音 +(figured bass -- thorough bass や basso continuo とも呼ばれます) +をサポートします: + +@lilypond[quote,ragged-right,verbatim] +<< + \new Voice { \clef bass dis4 c d ais g fis} + \new FiguredBass { + \figuremode { + < 6 >4 < 7\+ >8 < 6+ [_!] > + < 6 >4 <6 5 [3+] > + < _ >4 < 6 5/>4 + } + } +>> +@end lilypond + +通奏低音のサポートには 2 つのパートがあります: +1 つは入力モード @code{\figuremode} で、@c +通奏低音の入力を受け入れます。@c +もう 1 つはコンテキスト @code{FiguredBass} で、@c +@code{BassFigure} オブジェクトの表示を扱います。@c +@code{Staff} でも通奏低音を表示させることができます。 + +@code{\figures@{ ... @}} は +@code{\new FiguredBass @{ \figuremode @{ ... @} @}} の短縮記譜法です。 + +通奏低音のサポートの外見は和音サポートに似ていますが、@c +もっとシンプルです。@c +@code{\figuremode} モードは通奏低音を保持し、@c +@code{FiguredBass} コンテキストははそれらを入力されたとおりに@c +譜刻するだけです。@c +ピッチへの変換は行いません。 + +@ignore +Figures are created as markup texts. Any of the standard markup +properties can be used to modify the display of figures. For +example, the vertical spacing of the figures may be set with +@code{baseline-skip}. +@end ignore + +@seealso +音楽用語集: +@rglos{figured bass} + +コード断片集: +@rlsr{Chords} + + +@node 通奏低音を入力する +@unnumberedsubsubsec 通奏低音を入力する +@translationof Entering figured bass + + +@code{\figuremode} は入力モードを通奏低音モードに切り替えるのに用いられます。@c +他の入力モードについての更なる情報は @ref{入力モード} で見つかります。 + +通奏低音モードでは、通奏低音のグループを @code{<} と @code{>} で囲みます。@c +演奏時間は @code{>} の後に入力します。 + +@lilypond[verbatim,quote,ragged-right] +\new FiguredBass { + \figuremode { + <6 4>2 + } +} +@end lilypond + +通奏低音にナチュラル記号を含む臨時記号を付け加えることができます: + +@lilypond[verbatim,quote,ragged-right] +\figures { + <7! 6+ 4-> <5++> <3--> +} +@end lilypond + +増音と減音を記述することができます: + +@lilypond[verbatim,quote,ragged-right] +\figures { + <6\+ 5/> <7/> +} +@end lilypond + +通奏低音にバックスラッシュを付けることができます +( 通常、6 度上げるのに用いられます): + +@lilypond[verbatim,quote,ragged-right] +\figures { + <6> <6\\> +} +@end lilypond + +通奏低音に垂直方向のスペースや囲みを含ませることができます: + +@lilypond[verbatim,quote,ragged-right] +\figures { + <[12 _!] 8 [6 4]> +} +@end lilypond + +通奏低音として任意のテキスト マークアップを挿入することができます: + +@lilypond[verbatim,quote,ragged-right] +\figures { + <\markup { \tiny \number 6 \super (1) } 5> +} +@end lilypond + +@c NOTE: We need to include notes any time we use extenders to +@c avoid extraneous staff creation due to Staff.use... in +@c \bassFigureExtendersOn + +継続線で通奏低音の繰り返しを示すことができます: + +@lilypond[verbatim,quote,ragged-right] +<< + { + \clef bass + e4 d c b, + e4 d c b, + } + \figures { + \bassFigureExtendersOn + <6 4>4 <6 3> <7 3> <7 3> + \bassFigureExtendersOff + <6 4>4 <6 3> <7 3> <7 3> + } +>> +@end lilypond + +@noindent +以下の例のように、@c +継続線は明示的に停止されない限り連続する通奏低音に置き換わります。 + +@lilypond[verbatim,quote,ragged-right] +<< + \figures { + \bassFigureExtendersOn + <6 4>4 <6 4> <6\! 4\!> <6 4> + } + { + \clef bass + d4 d c c + } +>> +@end lilypond + +以下の表は利用可能な通奏低音の修飾子を要約しています。 + +@multitable @columnfractions .1 .5 .4 + +@item +@b{修飾子} +@tab +@b{用途} +@tab +@b{例} + +@item ++, -, ! +@tab +臨時記号 +@tab +@lilypond[line-width=4\cm] +\figures { + <7! 6+ 4-> <5++> <3--> +} +@end lilypond + +@item +\+, / +@tab +増音と減音 +@tab +@lilypond[line-width=4\cm] +\figures { + <6\+ 5/> <7/> +} +@end lilypond + +@item +\\ +@tab +音を 6 度上げる +@tab +@lilypond[line-width=4\cm] +\figures { + <6\\> +} +@end lilypond + +@item +\! +@tab +継続線を終わらせる +@tab +@lilypond[line-width=4\cm] +<< + \figures { + \bassFigureExtendersOn + <6 4> <6 4> <6\! 4\!> <6 4> + } + { + \clef bass + d d c c + } +>> +@end lilypond + +@end multitable + + +@predefined +@cindex figured bass extender lines (通奏低音の継続線) +@code{\bassFigureExtendersOn}, +@code{\bassFigureExtendersOff} +@endpredefined + + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-positions-of-figured-bass-alterations.ly} + +@seealso +コード断片集: +@rlsr{Chords} + +内部リファレンス: +@rinternals{BassFigure}, +@rinternals{BassFigureAlignment}, +@rinternals{BassFigureLine}, +@rinternals{BassFigureBracket}, +@rinternals{BassFigureContinuation}, +@rinternals{FiguredBass} + + +@node 通奏低音を表示する +@unnumberedsubsubsec 通奏低音を表示する +@translationof Displaying figured bass + +@code{FiguredBass} コンテキストを用いて通奏低音を表示させることができます。@c +たいていの譜コンテキストでも表示させることができます。 + +@code{FiguredBass} コンテキストに表示させる場合、@c +通奏低音の垂直方向の位置は譜上にある音符の位置とは無関係です。 + +@lilypond[verbatim,ragged-right,quote] +<< + \relative c'' { + c4 c'8 r8 c,4 c' + } + \new FiguredBass { + \figuremode { + <4>4 <10 6>8 s8 + <6 4>4 <6 4> + } + } +>> +@end lilypond + +@noindent +上記の例では、余分な (空の) 譜が作成されるのを避けるために、@c +@code{FiguredBass} コンテキストを明示的に作成する必要があります。 + + +通奏低音を直接 @code{Staff} コンテキストに付け加えることもできます。@c +この場合、通奏低音の垂直方向の位置は自動的に調節されます。 + +@lilypond[verbatim,ragged-right,quote] +<< + \new Staff = myStaff + \figuremode { + <4>4 <10 6>8 s8 + <6 4>4 <6 4> + } + %% Put notes on same Staff as figures + \context Staff = myStaff + { + \clef bass + c4 c'8 r8 c4 c' + } +>> +@end lilypond + + +通奏低音を @code{Staff} コンテキストに追加した場合、@c +譜の上にも下にも表示される可能性があります。 + +@lilypond[verbatim,ragged-right,quote] +<< + \new Staff = myStaff + \figuremode { + <4>4 <10 6>8 s8 + \bassFigureStaffAlignmentDown + <6 4>4 <6 4> + } + %% Put notes on same Staff as figures + \context Staff = myStaff + { + \clef bass + c4 c'8 r8 c4 c' + } +>> +@end lilypond + +@predefined +@cindex figured bass alignment (通奏低音の垂直揃えのベース) +@code{\bassFigureStaffAlignmentDown}, +@code{\bassFigureStaffAlignmentUp}, +@code{\bassFigureStaffAlignmentNeutral} +@endpredefined + +@seealso +コード断片集: +@rlsr{Chords} + +内部リファレンス: +@rinternals{BassFigure}, +@rinternals{BassFigureAlignment}, +@rinternals{BassFigureLine}, +@rinternals{BassFigureBracket}, +@rinternals{BassFigureContinuation}, +@rinternals{FiguredBass} + +@knownissues +継続線が正しく機能することを保証するために、@c +通奏低音のリズムをバス パートに合わせた方が安全です。 + +@c KEEP LY +@lilypond[verbatim,ragged-right,quote] +<< + { + \clef bass + \repeat unfold 4 { f16. g32 } f8. es16 d8 es + } + \figures { + \bassFigureExtendersOn + % バスと同じリズムなので、継続線は正しく機能します + \repeat unfold 4 { <6 4->16. <6 4->32 } + <5>8. r16 <6>8 <6\! 5-> + } +>> +<< + { + \clef bass + \repeat unfold 4 { f16. g32 } f8. es16 d8 es + } + \figures { + \bassFigureExtendersOn + % タイミングは同じですが、継続線は正しく機能しません + <6 4->4 <6 4->4 + <5>8. r16 <6>8 <6\! 5-> + } +>> +@end lilypond + +@c 保留 +継続線を用いた場合、@c +通奏低音内での位置が異なる同じ番号の通奏低音が隣接すると、@c +位置が反転する可能性があります。 +(訳者: 2 つ目の音符の通奏低音で 4 と 5 が入れ替わる例を示したいのだと@c +思いますが、うまくいっていないようです。@c +解決の例もコマンドの位置が違うと思います。) + +@ignore +When using extender lines, adjacent figures with the same number in +a different figure location can cause the figure positions to invert. +@end ignore + +@lilypond[verbatim,ragged-right,quote,relative=1] +<< + { fis4 g g, e' } + \figures { + \bassFigureExtendersOn + <6 5>4 <5\! 4> < 5 _!> <6> + } +>> +@end lilypond + +この問題を回避するには、継続線を始める通奏低音の後で継続線を On にして、@c +継続線の終わりで Off にします。 + +@ignore +To avoid this problem, simply turn on extenders after the figure that +begins the extender line and turn them off at the end of the extender line. +@end ignore + +@lilypond[verbatim,ragged-right,quote,relative=1] +<< + { fis4 g g, e' } + \figures { + <6 5>4 <5 4> + \bassFigureExtendersOn + < 5 _!>4 <6> + \bassFigureExtendersOff + } +>> +@end lilypond diff --git a/Documentation/ja/notation/contemporary.itely b/Documentation/ja/notation/contemporary.itely new file mode 100644 index 0000000000..8f2cf1cf02 --- /dev/null +++ b/Documentation/ja/notation/contemporary.itely @@ -0,0 +1,239 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: c19213c8cef68c0f2d8903cff16e0772acc9411a + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node 現代音楽 +@section 現代音楽 +@translationof Contemporary music + +20 世紀の始めから、作曲のスタイルとテクニックは大幅に拡張されました。@c +新しい調和音とリズムの開発、ピッチ スペクトルの拡張、@c +広範囲な楽器技術の開発が並行して進展し、@c +音楽記譜法も拡張されました。@c +このセクションの目的は、@c +これらの新しい記譜テクニックに関するリファレンスと情報を提供することです。 + +@menu +* 現代音楽でのピッチと調和音:: +* 現代音楽のリズムへのアプローチ:: +* グラフィカル記譜法:: +* 現代音楽の楽譜作成技術:: +* 新しい楽器技術:: +* 現代音楽に関する本と楽譜:: +@end menu + + +@node 現代音楽でのピッチと調和音 +@subsection 現代音楽でのピッチと調和音 +@translationof Pitch and harmony in contemporary music + +このセクションでは、@c +現代音楽でのピッチと調和音の記譜に関係する問題をハイライトします。 + +@menu +* 現代音楽でのピッチと調和音のためのリファレンス:: +* 微分音記譜法:: +* 現代音楽の調号と和声:: +@end menu + + +@node 現代音楽でのピッチと調和音のためのリファレンス +@unnumberedsubsubsec 現代音楽でのピッチと調和音のためのリファレンス +@translationof References for pitch and harmony in contemporary music + +@itemize +@item 標準の 4 分音記譜法は @ref{他の言語での音符名} を参照してください。 + +@item 非標準の調号は @ref{調号} を参照してください。 + +@item 現代音楽での臨時記号の表示は @ref{自動臨時記号} を参照してください。 + +@end itemize + + +@node 微分音記譜法 +@unnumberedsubsubsec 微分音記譜法 +@translationof Microtonal notation + +@ignore + Discussion of microtones other than quarter-tones, + alternative notations (arrows, slash-flats), etc. +@end ignore + + +@node 現代音楽の調号と和声 +@unnumberedsubsubsec 現代音楽の調号と和声 +@translationof Contemporary key signatures and harmony + +@ignore + Discussion of contemporary key signatures: + non-standard, polytonality, etc. +@end ignore + + +@node 現代音楽のリズムへのアプローチ +@subsection 現代音楽のリズムへのアプローチ +@translationof Contemporary approaches to rhythm + +このセクションでは、@c +現代音楽のリズムの記譜法に関係する問題をハイライトします。 + +@menu +* 現代音楽のリズムへのアプローチのためのリファレンス:: +* 現代音楽の連符:: +* 現代音楽の拍子:: +* 多拍子記譜法の拡張:: +* 多拍子記譜法の連桁:: +* 多拍子記譜法の小節線:: +@end menu + + +@node 現代音楽のリズムへのアプローチのためのリファレンス +@unnumberedsubsubsec 現代音楽のリズムへのアプローチのためのリファレンス +@translationof References for contemporary approaches to rhythm + +@itemize +@item 複合拍子は @ref{拍子} を参照してください。 + +@item 基本的な多拍子記譜法 @ref{多拍子記譜法} を参照してください。 + +@item 羽状の連桁は @ref{羽状の連桁} を参照してください。 + +@item Mensurstriche 小節線 (譜の間だけの小節線) は @ref{譜をグループ化する} +を参照してください。 + +@end itemize + + +@node 現代音楽の連符 +@unnumberedsubsubsec 現代音楽の連符 +@translationof Tuplets in contemporary music + +@ignore + Extended discussion of modern tuplets, including + non-standard ratios, nested tuplets and customising + the appearance of tuplets (ratios, note values etc.) + Also how to provide an ossia RhythmicStaff to help + players break down a complicated tuplet. +@end ignore + + +@node 現代音楽の拍子 +@unnumberedsubsubsec 現代音楽の拍子 +@translationof Contemporary time signatures + +@ignore + Extended discussion of compound time signatures + including Graham P.'s work; non-standard time + signatures such as 7/10, 5/6; alternative + notations such as Orff-esque 4/note, placing a + single time signature across multiple staves, or + placing time signatures at the top of StaffGroups + or systems rather than in the stave. +@end ignore + + +@node 多拍子記譜法の拡張 +@unnumberedsubsubsec 多拍子記譜法の拡張 +@translationof Extended polymetric notation + +@ignore + Extended examples e.g. different instruments + or ensembles with independent tempi +@end ignore + + +@node 多拍子記譜法の連桁 +@unnumberedsubsubsec 多拍子記譜法の連桁 +@translationof Beams in contemporary music + +@ignore + Beaming practises, stemlets, Boulez-esque displaying + of beamed notes with flags +@end ignore + + +@node 多拍子記譜法の小節線 +@unnumberedsubsubsec 多拍子記譜法の小節線 +@translationof Bar lines in contemporary music + +@ignore + Mensurstriche barlines, tick barlines, etc. +@end ignore + + +@node グラフィカル記譜法 +@subsection グラフィカル記譜法 +@translationof Graphical notation + + +@node 現代音楽の楽譜作成技術 +@subsection 現代音楽の楽譜作成技術 +@translationof Contemporary scoring techniques + + +@node 新しい楽器技術 +@subsection 新しい楽器技術 +@translationof New instrumental techniques + + +@node 現代音楽に関する本と楽譜 +@subsection 現代音楽に関する本と楽譜 +@translationof Further reading and scores of interest + +このセクションでは現代音楽記譜法を学ぶ際に有用な本、楽譜例、その他の情報源を@c +提示します。 + +@menu +* 現代音楽記譜法についての本と記事:: +* 楽譜例:: +@end menu + + +@node 現代音楽記譜法についての本と記事 +@unnumberedsubsubsec 現代音楽記譜法についての本と記事 +@translationof Books and articles on contemporary musical notation + +@itemize +@item +@emph{Music Notation in the Twentieth Century: A Practical Guidebook} +by Kurt Stone [W. W. Norton, 1980] + +@item +@emph{Music Notation: A Manual of Modern Practice} by Gardner Read +[Taplinger, 1979] + +@item +@emph{Instrumentation and Orchestration} by Alfred Blatter [Schirmer, +2nd ed. 1997] + +@end itemize + + +@node 楽譜例 +@unnumberedsubsubsec 楽譜例 +@translationof Scores and musical examples + +@ignore + Rough list of composers whose work could be included + (in alphabetical order, perhaps with suggested work): + + Pierre Boulez (Le Marteau Sans Maître?) + John Cage (Freeman Etudes?) + George Crumb (Black Angels?) + Brian Ferneyhough (Transit? Time & Motion Studies?) + Ben Johnston (extended just intonation example) + György Ligeti (several, including Hamburg Concerto) + Krzysztof Penderecki (Threnody to the Victims of Hiroshima?) + Karlheinz Stockhausen (Gruppen?) +@end ignore diff --git a/Documentation/ja/notation/editorial.itely b/Documentation/ja/notation/editorial.itely index f9aeb39776..cea3f2159f 100644 --- a/Documentation/ja/notation/editorial.itely +++ b/Documentation/ja/notation/editorial.itely @@ -1,12 +1,13 @@ -@c -*- coding: utf-8; mode: texinfo; -*- +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 192439e23bf243634b52f77dd7b084cac7a8d48c + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -140,7 +141,6 @@ c4.-> d8---3 @code{\huge} @endpredefined - @seealso コード断片集: @rlsr{Editorial annotations} @@ -206,13 +206,13 @@ c4-1 d-2 f-4 c^\markup { \finger "2 - 3" } @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-the-placement-of-chord-fingerings.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {allowing-fingerings-to-be-printed-inside-the-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {avoiding-collisions-with-chord-fingerings.ly} @@ -267,12 +267,14 @@ b c @end lilypond -不可視の音符に取り付けられた記譜オブジェクトは可視のままです。 +符頭、符幹、旗、それに休符は不可視です。@c +連桁は、隠された音符から始まる場合は、不可視です。 +不可視の音符に取り付けられたオブジェクトは可視のままです。 @lilypond[verbatim,quote,relative=2] -c4( d) +e8(\p f g a)-- \hideNotes -e4(\p f)-- +e8(\p f g a)-- @end lilypond @@ -281,7 +283,6 @@ e4(\p f)-- @code{\unHideNotes} @endpredefined - @seealso 学習マニュアル: @rlearning{オブジェクトの可視性と色} @@ -386,7 +387,6 @@ gis8 a gis4 a @end lilypond - @seealso 記譜法リファレンス: @ref{List of colors}, @@ -395,7 +395,6 @@ gis4 a コード断片集: @rlsr{Editorial annotations} - @cindex x11 color (X11 カラー) @cindex colored notes in chords (和音の中にある色付きの音符) @cindex notes, colored in chords (和音の中にある色付きの音符) @@ -408,10 +407,10 @@ X11 カラーは必ずしも同様の名前を持つノーマル カラーと@c まったく同じとなるわけではありません。 すべての X11 カラーが Web ブラウザで見分けられるわけではありません。@c -つまり、ある Web ブラウザは @code{'LineGreen} と @code{'ForestGreen} を@c +つまり、ある Web ブラウザは @code{LineGreen} と @code{ForestGreen} を@c 同じ色で表示するかもしれません。@c Web 向けでは、ノーマル カラーを使用することを推奨します -(つまり、@code{#blue}, @code{#green}, @code{#red})。 +(つまり、@code{blue}, @code{green}, @code{red})。 和音の中にある音符には @code{\override} で色を付けることはできません。@c @code{\override} の代わりに @code{\tweak} を使用してください @@ -427,6 +426,7 @@ Web 向けでは、ノーマル カラーを使用することを推奨します @cindex notes, ghost (ゴースト音符) @cindex notes, parenthesized (括弧で囲まれた音符) @cindex parentheses (括弧) +@cindex brackets (囲み) @funindex \parenthesize @funindex parenthesize @@ -452,7 +452,6 @@ c2-\parenthesize -. d c2 \parenthesize r @end lilypond - @seealso コード断片集: @rlsr{Editorial annotations} @@ -462,9 +461,7 @@ c2 \parenthesize r @rinternals{ParenthesesItem}, @rinternals{parentheses-interface} - @knownissues - 和音に括弧を付けると、和音全体に単一の大きな括弧が付くのではなく、@c それぞれの音符に個別に括弧が付きます。 @@ -506,10 +503,9 @@ c2 \parenthesize r @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {default-direction-of-stems-on-the-center-line-of-the-staff.ly} - @seealso 記譜法リファレンス: @ref{Direction and placement} @@ -596,13 +592,11 @@ altered: } @end lilypond - @predefined @code{\balloonLengthOn}, @code{\balloonLengthOff} @endpredefined - @seealso コード断片集: @rlsr{Editorial annotations} @@ -665,10 +659,9 @@ altered: @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {grid-lines--changing-their-appearance.ly} - @seealso コード断片集: @rlsr{Editorial annotations} @@ -734,7 +727,6 @@ Analysis brackets may be nested. } @end lilypond - @seealso コード断片集: @rlsr{Editorial annotations} diff --git a/Documentation/ja/notation/expressive.itely b/Documentation/ja/notation/expressive.itely index 5f8bdce6bc..eae0922e42 100644 --- a/Documentation/ja/notation/expressive.itely +++ b/Documentation/ja/notation/expressive.itely @@ -1,12 +1,12 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: fe4f33aca60ea7c58bc9196eac43b4acca1d4437 + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. -@end ignore + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes..@end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -194,13 +194,13 @@ R1\fermataMarkup @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {modifying-default-values-for-articulation-shorthand-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {controlling-the-vertical-ordering-of-scripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-a-delayed-turn.ly} @seealso @@ -473,29 +473,27 @@ c4\< d\! e\> d\! | @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} -@c 未訳 @cindex al niente (アル ニエンテ) @cindex niente, al (アル ニエンテ) -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-hairpins-using-al-niente-notation.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligned-dynamics-and-textscripts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {hiding-the-extender-line-for-text-dynamics.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-text-and-spanner-styles-for-text-dynamics.ly} - @seealso 音楽用語集: @rglos{al niente}, @@ -625,7 +623,6 @@ moltoF = #(make-dynamic-script マークアップ モードでのフォント設定は @ref{Selecting font and font size} で記述されています。 - @seealso 記譜法リファレンス: @ref{Formatting text}, @@ -633,6 +630,9 @@ moltoF = #(make-dynamic-script @ref{What goes into the MIDI output?}, @ref{Controlling MIDI dynamics} +LilyPond の拡張: +@rextend{Markup construction in Scheme} + コード断片集: @rlsrnamed{Expressive marks,発想記号} @@ -778,13 +778,13 @@ g4( e c2) @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-double-slurs-for-legato-chords.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-text-markups-inside-slurs.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-slurs-with-complex-dash-structure.ly} @seealso @@ -927,7 +927,6 @@ g4\( e c2\) @code{\phrasingSlurSolid} @endpredefined - @seealso 学習マニュアル: @rlearning{ネストされない括弧とタイ} @@ -973,7 +972,7 @@ divisiones (ディビジョン: 区切り) がサポートされています。@ @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-breath-mark-symbol.ly} @c 未訳 @@ -981,10 +980,9 @@ divisiones (ディビジョン: 区切り) がサポートされています。@ @cindex railroad tracks @c 未訳 -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {inserting-a-caesura.ly} - @seealso 音楽用語集: @rglos{caesura} @@ -1016,21 +1014,19 @@ Fall あるいは Doit の向きはプラスあるいはマイナス (上ある 指示の数は Fall あるいは Doit の主音符を展開させるピッチの幅を示します。 @lilypond[verbatim,quote,relative=2] -c2-\bendAfter #+4 -c2-\bendAfter #-4 -c2-\bendAfter #+8 -c2-\bendAfter #-8 +c2\bendAfter #+4 +c2\bendAfter #-4 +c2\bendAfter #+6.5 +c2\bendAfter #-6.5 +c2\bendAfter #+8 +c2\bendAfter #-8 @end lilypond -Fall と Doit を記述する際、@c -@code{\bendAfter} コマンドの直前にダッシュ @code{-} を置く必要があります。 - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adjusting-the-shape-of-falls-and-doits.ly} - @seealso 音楽用語集: @rglos{fall}, @@ -1074,10 +1070,9 @@ c2\glissando c, @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {contemporary-glissando.ly} - @seealso 音楽用語集: @rglos{glissando} @@ -1091,10 +1086,7 @@ c2\glissando c, 内部リファレンス: @rinternals{Glissando} - @knownissues - -@c 未訳 線の上にテキストを譜刻する (@notation{グリッサンド} など) ことは@c サポートされていません。 @@ -1188,16 +1180,15 @@ c2\glissando c, @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-a-piano-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-cross-staff-arpeggios-in-other-contexts.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-arpeggios-across-notes-in-different-voices.ly} - @seealso 音楽用語集: @rglos{arpeggio} @@ -1214,9 +1205,7 @@ c2\glissando c, @rinternals{Slur}, @rinternals{PianoStaff} - @knownissues - @cindex cross-staff parenthesis-style arpeggio (譜を跨ぐ括弧スタイルのアルペジオ) @cindex arpeggio, parenthesis-style, cross-staff (譜を跨ぐ括弧スタイルのアルペジオ) @cindex arpeggio, cross-staff parenthesis-style (譜を跨ぐ括弧スタイルのアルペジオ) @@ -1329,7 +1318,6 @@ eis4\startTrillSpan fis! eis4\stopTrillSpan @end lilypond - @predefined @code{\startTrillSpan}, @code{\stopTrillSpan} diff --git a/Documentation/ja/notation/fretted-strings.itely b/Documentation/ja/notation/fretted-strings.itely new file mode 100644 index 0000000000..27f44dc8f6 --- /dev/null +++ b/Documentation/ja/notation/fretted-strings.itely @@ -0,0 +1,1932 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node フレットのある弦楽器 +@section フレットのある弦楽器 +@translationof Fretted string instruments + +@lilypondfile[quote]{fretted-headword.ly} + +このセクションでは、@c +フレットのある弦楽器に特有の記譜法のいくつかの側面について説明します。 + +@cindex tablature (タブ譜) +@cindex tablature, guitar (ギター タブ譜) +@cindex tablature, banjo (バンジョー タブ譜) +@cindex guitar tablature (ギター タブ譜) +@cindex banjo tablature (バンジョー タブ譜) + +@menu +* フレットのある弦楽器で共通の記譜法:: +* ギター:: +* バンジョー:: +@end menu + +@node フレットのある弦楽器で共通の記譜法 +@subsection フレットのある弦楽器で共通の記譜法 +@translationof Common notation for fretted strings + +このセクションでは、フレットのある弦楽器で共通する記譜法について説明します。 + +@menu +* フレットのある弦楽器のためのリファレンス:: +* 弦番号の指示:: +* デフォルトのタブ譜:: +* カスタム タブ譜:: +* フレット ダイアグラム マークアップ:: +* あらかじめ定義されたフレット ダイアグラム:: +* 自動フレット ダイアグラム:: +* 右手の運指:: +@end menu + +@node フレットのある弦楽器のためのリファレンス +@unnumberedsubsubsec フレットのある弦楽器のためのリファレンス +@translationof References for fretted strings + +フレットのある弦楽器の演奏は通常、単一の譜で、@c +伝統的な音楽記譜法あるいはタブ譜で記譜されます。@c +これら 2 つが組み合わされることがあり、@c +特にポピュラー音楽では伝統的な記譜法の譜の上に@c +コード ダイアグラムを配置することが一般的です。@c +ギターとバンジョーは移調楽器であり、楽譜よりも 1 オクターブ下の音を出します。@c +これらの楽器のための楽譜は音部記号 @code{"treble_8"} +(あるいは、正しい MIDI 出力を得るために @code{\transposition c}) +を使うべきです。@c +フレットのある弦楽器に関係する他のいくつかの要素は他の場所でカバーされています: + +@itemize +@item 運指は @ref{Fingering instructions} で説明しています。 + +@item @notation{レセ ヴィブレ} (@notation{Laissez vibrer}) タイは、@c +アルペジオとトレモロで使われるタイと同様に、@ref{Ties} で説明しています。 + +@item 複数のボイスを処理するための説明は、@ref{Collision resolution} +にあります。 + +@item ハーモニクス指示についての説明は、@ref{Harmonics} にあります。 + +@end itemize + +@seealso +記譜法リファレンス: +@ref{Fingering instructions}, +@ref{Ties}, +@ref{Collision resolution}, +@ref{Instrument names}, +@ref{Writing music in parallel}, +@ref{Arpeggio}, +@ref{List of articulations}, +@ref{Clef}, +@ref{Instrument transpositions} + + +@node 弦番号の指示 +@unnumberedsubsubsec 弦番号の指示 +@translationof String number indications + +@cindex string numbers (弦番号) +@cindex string vs. fingering numbers (弦 vs. 指番号) +@cindex fingering vs. string numbers (運指 vs. 弦番号) + +音符の後に @code{\@var{number}} を付けることによって、演奏する音符の弦を@c +指示することができます。 + +@lilypond[verbatim,quote,relative=0] +\clef "treble_8" +c4\5 e\4 g2\3 +1 +@end lilypond + +運指と弦の指示を一緒に使う場合、@c +明示的に作成された和音の中にある場合に @emph{のみ}、 +それら 2 要素を記述する順序で配置を制御することができます: +和音全体や和音の @emph{中にない} 単独の音符に適用される場合、@c +運指記号は異なるメカニズムで配置されます。 + +@lilypond[verbatim,quote,relative=1] +\clef "treble_8" +g4\3-0 +g-0\3 + + +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{controlling-the-placement-of-chord-fingerings.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{allowing-fingerings-to-be-printed-inside-the-staff.ly} + +@seealso +記譜法リファレンス: +@ref{Fingering instructions} + +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals{StringNumber}, +@rinternals{Fingering} + + +@node デフォルトのタブ譜 +@unnumberedsubsubsec デフォルトのタブ譜 +@translationof Default tablatures + +@cindex tablatures, basic (基本的なタブ譜) +@cindex tablatures, default (デフォルトのタブ譜) + +@funindex TabStaff +@funindex TabVoice + +弦をはじく楽器の楽譜は、しばしばタブ譜で記譜されます。@c +伝統的な記譜法ではピッチが符頭で記述されるのに対して、@c +数字 (あるいは、歴史上存在する楽譜では文字のような記号) で記述されます。@c +タブ譜では、譜線は演奏される音符の弦を意味し、@c +譜線上に配置される数字は対応する弦で押さえるべきフレットを意味します。@c +同時に弾く音符は垂直方向に揃えられていることに注意してください。 + +デフォルトでは、弦 1 は一番上の弦であり、@c +@code{TabStaff} の一番上の線に対応します。@c +@code{TabStaff} のチューニングは、デフォルトでは、@c +標準ギター (6 弦) のチューニングです。@c +音符は、@code{TabStaff} コンテキストと @code{TabVoice} コンテキストを用いて、@c +タブ譜として譜刻されます。@c +筆記体のタブ譜の音部記号が自動的に付け加えられます。 + +@lilypond[quote,ragged-right,verbatim] +\new TabStaff \relative c' { + a,8 a' a + d,8 a' a +} +@end lilypond + +デフォルトのタブ譜は、音符の演奏時間や他の音楽記号 +-- 例えば、表現記号など -- +を保持しません。 + +@lilypond[quote,ragged-right,verbatim] +symbols = { + \time 3/4 + c4-.^"Allegro" d( e) + f4-.\f g a^\fermata + \mark \default + c8_.\<\( c16 c~ c2\! + c'2.\prall\) +} + +\score { + << + \new Staff { \clef "G_8" \symbols } + \new TabStaff { \symbols } + >> +} +@end lilypond + +@funindex \tabFullNotation + +伝統的な記譜法で用いられるすべての音楽記号をタブ譜に表示させるには、@c +@code{TabStaff} コンテキスト内でコマンド @code{\tabFullNotation} を適用@c +する必要があります。@c +四分音符と区別するために、@c +半音符には 2 重線の符幹が付けられるということを覚えておいてください。 + +@lilypond[quote,ragged-right,verbatim] +symbols = { + \time 3/4 + c4-.^"Allegro" d( e) + f4-.\f g a^\fermata + \mark \default + c8_.\<\( c16 c~ c2\! + c'2.\prall\) +} + +\score { + \new TabStaff { + \tabFullNotation + \symbols + } +} +@end lilypond + +@cindex fret + +@funindex minimumFret +@funindex restrainOpenStrings + +デフォルトでは、ピッチはフレット ボードの最も低い演奏ポジション +(ファースト ポジション) に割り当てられます。@c +自動的に開放弦が優先されます。@c +ピッチを弾く弦を指定したい場合は、ピッチ名に弦番号指示を付け加えます。@c +弦番号指示を伝統的な記譜法の譜に譜刻したくないのであれば、@c +弦番号指示のステンシルを上書きすることでそうできます。@c +通常、@code{minimumFret} の値を使って演奏ポジションを定義する方が@c +入力しやすいです。@c +@code{minimumFret} のデフォルト値は 0 です。 + +@code{minimumFret} がセットされている場合であっても、可能であれば開放弦が@c +用いられます。@c +この振る舞いは、@code{restrainOpenStrings} に @code{#t} をセットすることで@c +変更することができます。 + +@lilypond[quote,ragged-right,verbatim] +\layout { \override Voice.StringNumber #'stencil = ##f } +\new StaffGroup << + \new Staff \relative c { + \clef "treble_8" + \time 2/4 + c16 d e f g4 + c,16\5 d\5 e\4 f\4 g4\4 + c,16 d e f g4 + } + \new TabStaff \relative c { + c16 d e f g4 + c,16\5 d\5 e\4 f\4 g4\4 + \set TabStaff.minimumFret = #5 + \set TabStaff.restrainOpenStrings = ##t + c,16 d e f g4 + } +>> +@end lilypond + +@funindex \tabChordRepeats +@funindex \chordRepeats +@cindex Chord, repetition (和音の繰り返し) +@cindex repetition, using @code{q} (@code{q} を用いた繰り返し) + +和音繰り返し記号 @code{q} を使って和音構造を繰り返すことができます。@c +この機能をタブ譜で用いる場合、弦の削除や運指番号等のイベントがやっかいです。@c +そのため、@ref{Chord repetition} を用いたタブ譜の音楽表記で@c +以下を明示的に実行したいと思うでしょう: +@example +\chordRepeats #'(string-number-event fingering-event) +@end example +このコマンドは共通するものなので、@c +@code{\tabChordRepeats} でも用いることができます。 + +@lilypond[quote,verbatim] +guitar = \relative c' { + r8 ~ q4 q8~ q q4 +} + +\new StaffGroup << + \new Staff { + \clef "treble_8" + \guitar + } + \new TabStaff { + \tabChordRepeats \guitar + } +>> +@end lilypond + +デフォルトでは、改行されるタイには括弧が付けられます。@c +繰り返しの差し替え部分でも同様です。 + +@lilypond[quote,ragged-right,verbatim] +ties = \relative c' { + \repeat volta 2 { + e2. f4~ + f2 g2~ + } + \alternative { + { g4 f2. } + { g4\repeatTie c,2. } + } + b1~ + \break + b1 + \bar "|." +} + +\score { + << + \new StaffGroup << + \context Staff { + \clef "treble_8" + \ties + } + \context TabStaff { + \ties + } + >> + >> + \layout { + indent = #0 + ragged-right = ##t + } +} +@end lilypond + +@funindex \hideSplitTiedTabNotes + +コマンド @code{\hideSplitTiedTabNotes} は、@c +括弧付きフレット番号の譜刻をキャンセルします: + +@lilypond[quote,ragged-right,verbatim] +ties = \relative c' { + \repeat volta 2 { + e2. f4~ + f2 g2~ } + \alternative { + { g4 f2. } + { g4\repeatTie c,2. } + } + b1~ + \break + b1 + \bar "|." +} + +\score { + << + \new StaffGroup << + \context Staff { + \clef "treble_8" + \ties + } + \context TabStaff { + \hideSplitTiedTabNotes + \ties + } + >> + >> + \layout { + indent = #0 + ragged-right = ##t + } +} +@end lilypond + +@cindex harmonic indications in tablature notation (タブ譜の記譜法でのハーモニック指示) +@cindex tablature and harmonic indications (タブ譜とハーモニック指示) +@cindex slides in tablature notation (タブ譜の記譜法でのスライド) +@cindex tablature and slides (タブ譜とスライド) +@cindex chord glissandi (和音のグリッサンド) +@funindex \harmonic +@funindex \harmonicByFret +@funindex \harmonicByRatio + +ハーモニック指示を演奏するピッチとしてタブ譜に付け加えることができます: + +@lilypond[verbatim,quote] +\layout { \override Voice.StringNumber #'stencil = ##f } +firstHarmonic = { + d'4\4\harmonic + g'4\3\harmonic + b'2\2\harmonic +} +\score { + << + \new Staff { \firstHarmonic } + \new TabStaff { \firstHarmonic } + >> +} +@end lilypond + +コマンド @code{\harmonic} は常に和音ではなく単一の音符 +(和音の中にあることもあり得ます) にくっつける必要があります。@c +12 フレットの開放弦ハーモニクス (ナチュラル ハーモニクス) でのみ@c +意味をなします。@c +他の全てのハーモニクスは LilyPond によって算出されます。@c +これは、フレットを行う手の指が触れる弦のフレットを指示することにより@c +実現されます。 + +@lilypond[verbatim,quote] +fretHarmonics = { + \harmonicByFret #5 d16\4 + \harmonicByFret #4 d16\4 + \harmonicByFret #3 d8\4 + \harmonicByFret #5 2. +} +\score { + << + \new Staff { \fretHarmonics } + \new TabStaff { \fretHarmonics } + >> +} +@end lilypond + +上記の方法の代わりに、@c +ハーモニクスの運指に弦の長さの比率を指定することによって@c +ハーモニクスを算出させることもできます。 + +@lilypond[verbatim,quote] +ratioHarmonics = { + \harmonicByRatio #1/2 4 + \harmonicByRatio #1/3 4 + \harmonicByRatio #1/4 { g8\3 b8\2 e'4\1 } +} +\score { + << + \new Staff { \ratioHarmonics } + \new TabStaff { \ratioHarmonics } + >> +} +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{stem-and-beam-behavior-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{polyphony-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{open-string-harmonics-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{fretted-string-harmonics-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{slides-in-tablature.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chord-glissando-in-tablature.ly} + +@seealso +記譜法リファレンス: +@ref{Chord repetition}, +@ref{Glissando}, +@ref{Harmonics}, +@ref{Stems}, +@ref{Written-out repeats} + +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals{TabNoteHead}, +@rinternals{TabStaff}, +@rinternals{TabVoice}, +@rinternals{Beam} + +@knownissues +和音は特殊な方法では処理できません。@c +そのため、自動弦セレクタは和音の中にある 2 つの音符に対して@c +同じ弦を選択することが容易に起こり得ます。 + +@code{\partcombine} を処理するには、@c +@code{TabStaff} は特別なやり方で作成されたボイスを使う必要があります: + +@lilypond[quote,ragged-right,verbatim] +melodia = \partcombine { e4 g g g } { e4 e e e } +<< + \new TabStaff << + \new TabVoice = "one" s1 + \new TabVoice = "two" s1 + \new TabVoice = "shared" s1 + \new TabVoice = "solo" s1 + { \melodia } + >> +>> +@end lilypond + +ギターの特殊効果はハーモニクスとスライドに制限されています。 + + +@node カスタム タブ譜 +@unnumberedsubsubsec カスタム タブ譜 +@translationof Custom tablatures + +@cindex tablatures, custom (カスタム タブ譜) +@cindex tablature, banjo (バンジョー タブ譜) +@cindex tablature, mandolin (マンドリン タブ譜) +@cindex tablature, guitar (ギター タブ譜) +@cindex tablature, bass guitar (バス ギター タブ譜) +@cindex tablature, ukulele (ウクレレ タブ譜) +@cindex tablature, predefined string tunings (あらかじめ定義された弦チューニングのタブ譜) +@cindex fretted instruments, predefined string tunings (あらかじめ定義された弦チューニングのフレットのある楽器) +@cindex predefined string tunings for fretted instruments (フレットのある楽器のためにあらかじめ定義された弦チューニング) +@cindex tablature, violin (バイオリン タブ譜) +@cindex tablature, viola (ビオラ タブ譜) +@cindex tablature, cello (チェロ タブ譜) +@cindex tablature, bass (バス タブ譜) +@cindex tablature, double bass (ダブル バス タブ譜) + +@funindex stringTunings + +LilyPond のタブ譜は、音符に対するフレットを、@c +その音符が割り当てられている弦に基づいて、自動的に算出します。@c +フレットの算出を行うために、弦のチューニングを指定する必要があります。@c +弦のチューニングは @code{stringTunings} プロパティで指定します。 + +LilyPond にはあらかじめ定義された弦チューニングが用意されています +-- バンジョー、マンドリン、ギター、バス ギター、ウクレレ、バイオリン、@c +ビオラ、チェロ、それにダブル バス用があります。@c +LilyPond は、あらかじめ定義されたチューニングに対して、@c +適切な移調をセットします。@c +以下の例はバス ギター用であり、@c +記述されている音符よりも 1 オクターブ低く演奏されます。 + +@lilypond[quote,ragged-right,verbatim] +<< + \new Voice \with { + \override StringNumber #'stencil = ##f + } { + \clef "bass_8" + \relative c, { + c4 d e f + } + } + \new TabStaff \with { + stringTunings = #bass-tuning + } { + \relative c, { + c4 d e f + } + } +>> +@end lilypond + +デフォルトの弦チューニングは @code{guitar-tuning} で、@c +これは標準の EADGBE チューニングです。@c +他のあらかじめ定義されたチューニングには、@c +@code{guitar-open-g-tuning}, @code{mandolin-tuning} それに +@code{banjo-open-g-tuning} があります。@c +あらかじめ定義された弦チューニングは @file{ly/string-tunings-init.ly} の中に@c +あります。 + +@funindex stringTunings +@funindex \stringTunings +@cindex tablature, custom string tunings (カスタム弦チューニングのタブ譜) +@cindex custom string tunings (カスタム弦チューニング) + +望みに応じて任意の弦チューニングを作成することができます。@c +@code{\stringTuning} 関数を用いて弦チューニングを定義し、@c +カレント コンテキストの @code{stringTunings} としてセットすることができます。 + +@code{\stringTuning} の引数は、@c +チューニングにおける各弦のピッチを定義する和音構造です。@c +和音構造は絶対オクターブ モードにする必要があります +-- @ref{Absolute octave entry} を参照してください。@c +和音の中で、@c +一番大きな番号を持つ弦 (一般的に低い音の弦) が最初に来る必要があります。@c +例えば、@code{a''}, @code{d''}, @code{g'}, それに @code{c'} のピッチを持つ +4 弦の楽器用の弦チューニングを定義することができます: + +@lilypond[quote,verbatim] + +mynotes = { + c'4 e' g' c'' | + e''4 g'' b'' c''' +} + +<< + \new Staff { + \clef treble + \mynotes + } + \new TabStaff { + \set Staff.stringTunings = \stringTuning + \mynotes + } +>> +@end lilypond + +@code{FretBoards} で @code{stringTunings} プロパティ用いることで、@c +自動的にフレット ダイアグラムを算出させることもできます。 + +弦チューニングは、@c +あらかじめ定義されたフレット ダイアグラムに対するハッシュ キーの一部@c +として使われます + +上記の例を、以下のように書き換えることができます: + +@lilypond[quote,verbatim] +custom-tuning = \stringTuning + +mynotes = { + c'4 e' g' c'' | + e''4 g'' b'' c''' +} + +<< + \new Staff { + \clef treble + \mynotes + } + \new TabStaff { + \set TabStaff.stringTunings = #custom-tuning + \mynotes + } +>> +@end lilypond + +内部的には、弦チューニングは弦ピッチの Scheme リストです +-- それぞれの弦ピッチは各弦に対するピッチで、@c +弦番号 1 から N の順に並んでいて、@c +弦 1 はタブ譜の最上段、弦 N はタブ譜の最下段となります。@c +通常、このリストは高いピッチから低いピッチの順になりますが、@c +いくつかの楽器 (例えば、ウクレレ) の弦はピッチの高低順に並んでいません。@c + +弦チューニング リストの中の弦ピッチは 1 つ 1 つが +LilyPond ピッチ オブジェクトです。@c +ピッチ オブジェクトは Scheme 関数 @code{ly:make-pitch} +(@ref{Scheme functions} を参照してください) で作成されます。@c + +@code{\stringTuning} は和音構造から弦チューニング リストを作成します。 + +LilyPond は、@code{TabStaff} の行数と自動的に算出される @code{FretBoard} の弦数 +(これは @code{stringTunings} の要素数です) を自動的に算出します。 + +すべての @code{TabStaff} コンテキストに同じカスタム チューニングを@c +適用するには、@c +下記のようにします: + +@example +\layout @{ + \context @{ + \TabStaff + stringTunings = \stringTuning \notemode @{ @} + @} +@} +@end example + + +@cindex moderntab clef (現代タブ譜の音部記号) +@cindex clef, moderntab (現代タブ譜の音部記号) +@cindex clef, tab (タブ譜の音部記号) +@cindex tab clef (タブ譜の音部記号) + +現代タブ譜の音部記号を使うこともできます。 + +@lilypond[quote,ragged-right,verbatim] +\new TabStaff { + \clef moderntab + 1 + \break + \clef tab + 1 +} +@end lilypond + +現代タブ譜の音部記号は、4 から 7 弦までのタブ譜をサポートします。 + +@seealso +記譜法リファレンス: +@ref{Absolute octave entry}, +@ref{Predefined fret diagrams}, +@ref{Scheme functions} + +インストールされているファイル: +@file{ly/string-tunings-init.ly} +@file{scm/tablature.scm} + +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals{Tab_note_heads_engraver} + +@knownissues +ウクレレなどのように弦がピッチ順に並んでいない楽器では、大抵の場合、 +タブ譜の自動算出は正しく機能しません。 + + +@node フレット ダイアグラム マークアップ +@unnumberedsubsubsec フレット ダイアグラム マークアップ +@translationof Fret diagram markups + +@cindex fret diagrams (フレット ダイアグラム) +@cindex chord diagrams (コード ダイアグラム) +@cindex diagrams, fret (フレット ダイアグラム) +@cindex diagrams, chord for fretted instruments (フレットのある楽器のためのコード ダイアグラム) +@cindex fret diagrams, custom (カスタム フレット ダイアグラム) +@cindex custom fret diagrams (カスタム フレット ダイアグラム) + +フレット ダイアグラムを注釈のマークアップとして楽譜に追加することができます。@c +このマークアップは記譜するフレット ダイアグラムについての情報を保持します。@c +fret-diagram マークアップ インターフェイスは 3 種類あります: +標準、簡易、それに冗長です。@c +これら 3 種類のインターフェイスが作り出すマークアップは等価ですが、@c +そのマークアップ文字列が持つ情報量は異なります。@c +フレット ダイアグラムを定義するのに用いられるマークアップ文字列の文法@c +についての詳細は、@ref{Instrument Specific Markup} を参照してください。 + +標準フレット ダイアグラムのマークアップ文字列は、@c +弦の上に配置されるドットの弦番号とフレット番号を示します。@c +さらに、開放弦と消音 (ミュート) 弦を示すこともできます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram #"6-x;5-3;4-2;3-o;2-1;1-o;" + } + 1^\markup { + \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-1;" + } + } +>> +@end lilypond + +@cindex barre indications (バレー指示) + +fret-diagram マークアップ文字列のダイアグラムに、@c +バレー指示を追加することができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + f1 g + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram #"c:6-1-1;6-1;5-3;4-3;3-2;2-1;1-1;" + } + 1^\markup { + \fret-diagram #"c:6-1-3;6-3;5-5;4-5;3-4;2-3;1-3;" + } + } +>> +@end lilypond + +@cindex fret-diagram markup (フレット ダイアグラムのマークアップ) +@cindex ukulele (ウクレレ) + +@funindex fret-diagram +@funindex \fret-diagram + +フレット ダイアグラムのサイズ、それにダイアグラムの中のフレット数を@c +fret-diagram マークアップ文字列の中で変更することができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + f1 g + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram #"s:1.5;c:6-1-1;6-1;5-3;4-3;3-2;2-1;1-1;" + } + 1^\markup { + \fret-diagram #"h:6;6-3;5-2;4-o;3-o;2-o;1-3;" + } + } +>> +@end lilypond + +バンジョーやウクレレなどの弦数に合わせて、@c +fret-diagram マークアップ文字列で@c +フレット ダイアグラムの弦数を変更することができます。 + +@c KEEP LY +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + a1 + } + } + \context Staff { + % ウクレレの 'A' コード + a'1^\markup { + \fret-diagram #"w:4;4-2-2;3-1-1;2-o;1-o;" + } + } +>> +@end lilypond + +fret-diagram マークアップ文字列で運指の指示を追加して、@c +配置を制御することができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram #"f:1;6-x;5-3-3;4-2-2;3-o;2-1-1;1-o;" + } + 1^\markup { + \fret-diagram #"f:2;6-x;5-x;4-o;3-2-2;2-3-3;1-1-1;" + } + } +>> +@end lilypond + +fret-diagram マークアップ文字列でドットの大きさと位置を制御することができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram #"d:0.35;6-x;5-3;4-2;3-o;2-1;1-o;" + } + 1^\markup { + \fret-diagram #"p:0.2;6-x;5-x;4-o;3-2;2-3;1-1;" + } + } +>> +@end lilypond + +@cindex fret-diagram-terse markup (fret-diagram-terse マークアップ) + +@funindex fret-diagram-terse +@funindex \fret-diagram-terse + +fret-diagram-terse マークアップ文字列は弦番号を省略します。@c +弦番号はセミコロンで示します。@c +ダイアグラムの弦毎にセミコロンを記述します。@c +最初のセミコロンは最高の弦番号に対応し、@c +最後のセミコロンは第 1 弦に対応します。@c +消音弦、開放弦、それにフレット番号を示すことができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram-terse #"x;3;2;o;1;o;" + } + 1^\markup { + \fret-diagram-terse #"x;x;o;2;3;1;" + } + } +>> +@end lilypond + +fret-diagram-terse マークアップ文字列にバレー指示を含めることができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + f1 g + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram-terse #"1-(;3;3;2;1;1-);" + } + 1^\markup { + \fret-diagram-terse #"3-(;5;5;4;3;3-);" + } + } +>> +@end lilypond + +fret-diagram-terse マークアップ文字列に運指の指示を含めることができます。 + +@c Need to use override to enable fingerings to show this -- can we do so? +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context Staff { + \override Voice.TextScript + #'(fret-diagram-details finger-code) = #'below-string + \clef "treble_8" + 1^\markup { + \fret-diagram-terse #"x;3-3;2-2;o;1-1;o;" + } + 1^\markup { + \fret-diagram-terse #"x;x;o;2-2;3-3;1-1;" + } + } +>> +@end lilypond + +fret-diagram-terse マークアップを使っている時、@c +他のフレット ダイアグラム プロパティの調節には +@code{\override} を用いる必要があります。 + +@cindex fret-diagram-verbose markup (fret-diagram-verbose マークアップ) +@cindex capo (カポ) + +@funindex fret-diagram-verbose +@funindex \fret-diagram-verbose + +fret-diagram-verbose マークアップ文字列のフォーマットは Scheme リストです。@c +リストの各要素はフレット ダイアグラム上に配置する要素を示しています。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context Staff { + \clef "treble_8" + 1^\markup { + \fret-diagram-verbose #'( + (mute 6) + (place-fret 5 3) + (place-fret 4 2) + (open 3) + (place-fret 2 1) + (open 1) + ) + } + 1^\markup { + \fret-diagram-verbose #'( + (mute 6) + (mute 5) + (open 4) + (place-fret 3 2) + (place-fret 2 3) + (place-fret 1 1) + ) + } + } +>> +@end lilypond + +fret-diagram-verbose マークアップ文字列に運指の指示とバレー指示を@c +含めることができます。@c +fret-diagram-verbose インターフェイスに特有なこととして、 +カポ指示をフレット ダイアグラム上に配置することができます。@c +カポ指示はすべての弦に重なる太い線です。@c +カポを持つフレットは、フレット ダイアグラムの中の最も低いフレットです。 + +@c \override is necessary to make fingering visible +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + f1 g c + } + } + \context Staff { + \clef "treble_8" + \override Voice.TextScript + #'(fret-diagram-details finger-code) = #'below-string + 1^\markup { + \fret-diagram-verbose #'( + (place-fret 6 1) + (place-fret 5 3) + (place-fret 4 3) + (place-fret 3 2) + (place-fret 2 1) + (place-fret 1 1) + (barre 6 1 1) + ) + } + 1^\markup { + \fret-diagram-verbose #'( + (place-fret 6 3 2) + (place-fret 5 2 1) + (open 4) + (open 3) + (open 2) + (place-fret 1 3 3) + ) + } + 1^\markup { + \fret-diagram-verbose #'( + (capo 3) + (mute 6) + (place-fret 4 5 1) + (place-fret 3 5 2) + (place-fret 2 5 3) + ) + } + } +>> +@end lilypond + +fret-diagram-verbose マークアップを使っている時、@c +他のフレット ダイアグラム プロパティの調節には +@code{\override} を用いる必要があります。 + + +@ignore +The following example shows the three fret-diagram markup +interfaces, along with examples of common tweaks. For example, +the size of the verbose fret diagram is reduced to 0.75, and the +finger indications are specified to appear below the diagram. The +terse diagram includes tweaks to specify placement of finger code +and color of dots. + +@lilypond[verbatim,ragged-right,quote] +\new Voice { + \clef "treble_8" + d4^\markup { + \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-2;" + } + d4 d d + fis^\markup { + \override #'(size . 0.75) { + \override #'(finger-code . below-string) { + \fret-diagram-verbose #'((place-fret 6 2 1) (barre 6 1 2) + (place-fret 5 4 3) + (place-fret 4 4 4) + (place-fret 3 3 2) + (place-fret 2 2 1) + (place-fret 1 2 1)) + } + } + } + fis4 fis fis + c^\markup { + \override #'(dot-radius . 0.35) { + \override #'(finger-code . in-dot) { + \override #'(dot-color . white) { + \fret-diagram-terse #"x;3-1-(;5-2;5-3;5-4;3-1-);" + } + } + } + } + c4 c c +} +@end lilypond +@end ignore + +@cindex customized fret diagram (カスタマイズされたフレット ダイアグラム) +@cindex fret diagram, customized (カスタマイズされたフレット ダイアグラム) +@cindex diagram, fret, customized (カスタマイズされたフレット ダイアグラム) + +@funindex fret-diagram-interface + +ユーザの好みに応じて、@c +@code{fret-diagram-interface} プロパティで@c +フレット ダイアグラムのグラフィック レイアウトをカスタマイズすることが可能です。 +詳細は、@rinternals{fret-diagram-interface} を参照してください。@c +フレット ダイアグラム マークアップ用のインターフェイス プロパティは +@code{Voice.TextScript} に属します。 + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-fret-orientations.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{customizing-markup-fret-diagrams.ly} + +@seealso +記譜法リファレンス: +@ref{Instrument Specific Markup} + +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals{fret-diagram-interface} + + +@node あらかじめ定義されたフレット ダイアグラム +@unnumberedsubsubsec あらかじめ定義されたフレット ダイアグラム +@translationof Predefined fret diagrams + +@cindex fret diagrams (フレット ダイアグラム) +@cindex fret diagrams, ukulele (ウクレレのフレット ダイアグラム) +@cindex fret diagrams, mandolin (マンドリンのフレット ダイアグラム) +@cindex chord diagrams (コード ダイアグラム) + +@funindex FretBoards +@funindex stringTunings + +フレット ダイアグラムを @code{FretBoards} コンテキストを用いて表示させる@c +ことができます。@c +デフォルトでは、 @code{FretBoards} コンテキストは@c +参照テーブルに保存されいているフレット ダイアグラムを表示します: + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" +\context FretBoards { + \chordmode { + c1 d + } +} +@end lilypond + +あらかじめ定義されたフレット ダイアグラムのデフォルトは +ファイル @file{predefined-guitar-fretboards.ly} の中にあります。 +フレット ダイアグラムは、@c +コードのピッチと現在使われている @code{stringTunings} の値@c +に基づいて保存されます。@c +@file{predefined-guitar-fretboards.ly} が保持している@c +あらかじめ定義されたフレット ダイアグラムは、ギター用だけです。@c +@file{predefined-guitar-fretboards.ly} の中にある例に従って、@c +他の楽器あるいは他のチューニング用の@c +あらかじめ定義されたフレット ダイアグラムを追加することができます。 + +ウクレレ用のフレット ダイアグラムはファイル +@file{predefined-ukulele-fretboards.ly} の中にあります。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-ukulele-fretboards.ly" + +myChords = \chordmode { a1 a:m a:aug } + +\new ChordNames { + \myChords +} + +\new FretBoards { + \set Staff.stringTunings = #ukulele-tuning + \myChords +} +@end lilypond + +マンドリン用のフレット ダイアグラムはファイル +@file{predefined-mandolin-fretboards.ly} の中にあります。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-mandolin-fretboards.ly" + +myChords = \chordmode { c1 c:m7.5- c:aug } + +\new ChordNames { + \myChords +} + +\new FretBoards { + \set Staff.stringTunings = #mandolin-tuning + \myChords +} +@end lilypond + +コードのピッチを入力する方法は、同時進行する音楽として入力するか、@c +コード モード (@ref{Chord mode overview} を参照してください) +を用いて入力するかのどちらかです。 + +@lilypond[verbatim, ragged-right,quote] +\include "predefined-guitar-fretboards.ly" +\context FretBoards { + \chordmode { c1 } + 1 +} +@end lilypond + +@cindex chord names with fret diagrams +@cindex fret diagrams with chord names + +@funindex ChordNames +@funindex chordmode +@funindex \chordmode + +コード ネームとフレット ダイアグラムを一緒に表示させることが@c +一般的に行われます。@c +これを実現するには、@c +@code{ChordNames} コンテキストを @code{FretBoards} コンテキストと並列に@c +配置して、@c +両方のコンテキストに同じ音楽を与えます。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" +mychords = \chordmode{ + c1 f g +} + +<< + \context ChordNames { + \mychords + } + \context FretBoards { + \mychords + } +>> +@end lilypond + +@cindex transposing fret diagrams (フレット ダイアグラムを移調させる) +@cindex fret diagrams, transposing (フレット ダイアグラムを移調させる) +@cindex diagrams, fret, transposing (フレット ダイアグラムを移調させる) + +あらかじめ定義されたフレット ダイアグラムは、c +移調されたコードに対するダイアグラムがフレット ダイアグラム テーブルに@c +保存されていれば、移調可能です。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" +mychords = \chordmode{ + c1 f g +} + +mychordlist = { + \mychords + \transpose c e { \mychords } +} +<< + \context ChordNames { + \mychordlist + } + \context FretBoards { + \mychordlist + } +>> +@end lilypond + + +ギター用のあらかじめ定義されたフレット ダイアグラム テーブルは、@c +17 キーのそれぞれに対して 8 つのコード +(major, minor, augmented, diminished, dominant seventh, major seventh, +minor seventh, dominant ninth) +を保持しています。@c +ウクレレ用のあらかじめ定義されたフレット ダイアグラム テーブルは、@c +上記のコードに加えて、3 つのコード +(major sixth, suspended second, それに suspended fourth) +を保持しています。@c +あらかじめ定義されたフレット ダイアグラムの完全なリストは +@ref{Predefined fretboard diagrams} で示されています。@c +テーブルにエントリされていないコードがある場合、@c +FretBoards エングラーバは @ref{Automatic fret diagrams} で説明する@c +自動フレット ダイアグラム機能を用いて fret-diagram を算出します。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" +mychords = \chordmode{ + c1 c:maj9 +} + +<< + \context ChordNames { + \mychords + } + \context FretBoards { + \mychords + } +>> +@end lilypond + +@cindex fret diagrams, adding custom (カスタム フレット ダイアグラムを追加する) +@cindex custom fret diagrams, adding (カスタム フレット ダイアグラムを追加する) +@cindex adding custom fret diagrams (カスタム フレット ダイアグラムを追加する) + +フレット ダイアグラムをフレット ダイアグラム テーブルに@c +追加することができます。@c +ダイアグラムを追加するには、ダイアグラムのハッシュ テーブル、@c +ダイアグラムのコード、使用するチューニング、それにダイアグラムの定義を@c +指定する必要があります。@c +通常、ハッシュ テーブルは @var{default-fret-table} です。@c +ダイアグラムの定義は @code{fret-diagram-terse} 定義文字列または@c +@code{fret-diagram-verbose} マーキング リストのどちらかです。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" + +\storePredefinedDiagram #default-fret-table + \chordmode { c:maj9 } + #guitar-tuning + #"x;3-2;o;o;o;o;" + +mychords = \chordmode { + c1 c:maj9 +} + +<< + \context ChordNames { + \mychords + } + \context FretBoards { + \mychords + } +>> +@end lilypond + +ピッチのオクターブを変えることで、@c +同じコード ネームに対して異なるフレット ダイアグラムを保存することができます。@c +オクターブを変える場合は、@c +デフォルトのオクターブに対して少なくとも 2 オクターブ@c +上げるか下げる必要があります。@c +デフォルトの 1 オクターブ上または下のオクターブは、@c +フレットボードの移調に使用されるためです。 + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" + +\storePredefinedDiagram #default-fret-table + \chordmode { c'' } + #guitar-tuning + #(offset-fret 2 (chord-shape 'bes guitar-tuning)) + +mychords = \chordmode { + c1 c'' +} + +<< + \context ChordNames { + \mychords + } + \context FretBoards { + \mychords + } +>> +@end lilypond + +@cindex fretted instruments, chord shapes (フレットのある楽器のコード シェイプ) +@cindex chord shapes for fretted instruments (フレットのある楽器のコード シェイプ) + +@funindex \addChordShape +@funindex addChordShape +@funindex storePredefinedDiagram +@funindex \storePredefinedDiagram + +@ignore +LilyPond はフレット ダイアグラムに加えて、@c +コード シェイプの内部リストを保存します。@c +@end ignore + +@c 未訳 +In addition to fret diagrams, LilyPond stores an internal list of chord +shapes. The chord shapes are fret diagrams that can be shifted along +the neck to different positions to provide different chords. Chord +shapes can be added to the internal list and then used to define +predefined fret diagrams. Because they can be moved to various +positions on the neck, chord shapes will normally not contain +any open strings. Like fret diagrams, chord shapes can be +entered as either fret-diagram-terse strings or fret-diagram-verbose +marking lists. + +@lilypond[verbatim, ragged-right, quote] +\include "predefined-guitar-fretboards.ly" + +% Add a new chord shape + +\addChordShape #'powerf #guitar-tuning #"1-1;3-3;3-4;x;x;x;" + +% add some new chords based on the power chord shape + +\storePredefinedDiagram #default-fret-table + \chordmode { f'' } + #guitar-tuning + #(chord-shape 'powerf guitar-tuning) +\storePredefinedDiagram #default-fret-table + \chordmode { g'' } + #guitar-tuning + #(offset-fret 2 (chord-shape 'powerf guitar-tuning)) + +mychords = \chordmode{ + f1 f'' g g'' +} + +<< + \context ChordNames { + \mychords + } + \context FretBoards { + \mychords + } +>> +@end lilypond + +@code{fret-diagram-interface} のプロパティを通じて、@c +フレット ダイアグラムのグラフィカル レイアウトをユーザの好みに応じて@c +カスタマイズすることができます。@c +詳細は @rinternals{fret-diagram-interface} を参照してください。@c +あらかじめ定義されたフレット ダイアグラムのインターフェイス プロパティは@c +@code{FretBoards.FretBoard} に属します。 + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{customizing-fretboard-fret-diagrams.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{defining-predefined-fretboards-for-other-instruments.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{chordchanges-for-fretboards.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{fretboards-alternate-tables.ly} + +@seealso +記譜法リファレンス: +@ref{Custom tablatures}, +@ref{Automatic fret diagrams}, +@ref{Chord mode overview}, +@ref{Predefined fretboard diagrams} + +インストールされているファイル: +@file{ly/predefined-guitar-fretboards.ly}, @* +@file{ly/predefined-guitar-ninth-fretboards.ly}, @* +@file{ly/predefined-ukulele-fretboards.ly}, @* +@file{ly/predefined-mandolin-fretboards.ly} + +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals {fret-diagram-interface} + + +@node 自動フレット ダイアグラム +@unnumberedsubsubsec 自動フレット ダイアグラム +@translationof Automatic fret diagrams + +@cindex fret diagrams, automatic (自動フレット ダイアグラム) +@cindex chord diagrams, automatic (自動コード ダイアグラム) +@cindex automatic fret diagrams (自動フレット ダイアグラム) +@cindex automatic chord diagrams (自動コード ダイアグラム) + +@code{FretBoards} コンテキストを用いて、@c +入力された音符からフレット ダイアグラムを自動的に作成することができます。@c +アクティブな @code{stringTunings} で入力された音符に対して@c +あらかじめ定義されたダイアグラムが用意されていない場合、@c +このコンテキストはその音符を演奏するために使用する弦とフレットを算出します。 + +@lilypond[quote,ragged-right,verbatim] +<< + \context ChordNames { + \chordmode { + f1 g + } + } + \context FretBoards { + 1 + 1 + } + \context Staff { + \clef "treble_8" + 1 + 1 + } +>> +@end lilypond + +@funindex predefinedFretboardsOff +@funindex \predefinedFretboardsOff +@funindex predefinedFretboardsOn +@funindex \predefinedFretboardsOn + +デフォルトではあらかじめ定義されたダイアグラムは読み込まれないため、@c +フレット ダイアグラムの自動算出がデフォルトの振る舞いとなります。@c +一旦デフォルトのダイアグラムが読み込まれると、@c +あらかじめ定義されたコマンドで自動算出を有効または無効にすることができます: + +@lilypond[quote,ragged-right,verbatim] + +\storePredefinedDiagram #default-fret-table + + #guitar-tuning + #"x;3-1-(;5-2;5-3;5-4;3-1-1-);" +<< + \context ChordNames { + \chordmode { + c1 c c + } + } + \context FretBoards { + 1 + \predefinedFretboardsOff + 1 + \predefinedFretboardsOn + 1 + } + \context Staff { + \clef "treble_8" + 1 + 1 + 1 + } +>> +@end lilypond + + +フレットボード算出機能が適切なダイアグラムを算出できないことがあります。@c +これは、手動で音符を弦に割り当てることにより修復できることがあります。@c +多くの場合、手動で割り当てる必要のある音符は 1 つだけです。@c +その音符を手動で割り当てると、@c +他の音符は @code{FretBoards} コンテキストにより適切に配置されます。 + +@cindex fret diagrams, adding fingerings (フレット ダイアグラムに運指を追加する) +@cindex fingerings, adding to fret diagrams (フレット ダイアグラムに運指を追加する) + +@code{FretBoard} フレット ダイアグラムに運指を追加することができます。 + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + c1 d:m + } + } + \context FretBoards { + 1 + 1 + } + \context Staff { + \clef "treble_8" + 1 + 1 + } +>> +@end lilypond + +@funindex minimumFret + +@code{FretBoard} コンテキストの弦とフレットを算出する際に使用される@c +最小フレットを @code{minimumFret} プロパティでセットすることができます。 +property. + +@lilypond[quote, verbatim] +<< + \context ChordNames { + \chordmode { + d1:m d:m + } + } + \context FretBoards { + 1 + \set FretBoards.minimumFret = #5 + 1 + } + \context Staff { + \clef "treble_8" + 1 + 1 + } +>> +@end lilypond + +@code{TabStaff} コンテキストと同様に、@c +@code{FretBoards} コンテキストの弦とフレットは +@code{stringTunings} プロパティに依存します。@c +@code{stringTunings} プロパティについての情報は、@c +@ref{Custom tablatures} を参照してください。 + +@code{fret-diagram-interface} のプロパティを通じて、@c +フレット ダイアグラムのグラフィカル レイアウトをユーザの好みに応じて@c +カスタマイズすることができます。@c +詳細は @rinternals{fret-diagram-interface} を参照してください。@c +@code{FretBoards} フレット ダイアグラムののインターフェイス プロパティは@c +@code{FretBoards.FretBoard} に属します。 + +@predefined +@code{\predefinedFretboardsOff}, +@code{\predefinedFretboardsOn} +@endpredefined + +@seealso +記譜法リファレンス: +@ref{Custom tablatures} + +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals {fret-diagram-interface} + +@knownissues +自動フレットボード算出機能は、@c +モノトーン チューニングではない楽器では適切に機能しません。 + + +@node 右手の運指 +@unnumberedsubsubsec 右手の運指 +@translationof Right-hand fingerings + +@cindex fretted instruments, right hand fingerings (フレットのある楽器での右手の運指) +@cindex fingerings, right hand for fretted instruments (フレットのある楽器での右手の運指) +@cindex right hand fingerings for fretted instruments (フレットのある楽器での右手の運指) + +@funindex rightHandFinger +@funindex \rightHandFinger + +右手の運指 @var{p-i-m-a} は後に数字が続く @code{\rightHandFinger} を用いて@c +入力する必要があります。 + +@warning{Scheme 表記で数字を入力する場合、数字の後にくるもの (閉じ括弧 @code{>} +等であっても) の前にスペースを置くことを忘れないで下さい。} + +@lilypond[quote,verbatim,relative=0] +\clef "treble_8" +c4\rightHandFinger #1 +e\rightHandFinger #2 +g\rightHandFinger #3 +c\rightHandFinger #4 +1 +@end lilypond + +入力しやすくするために、@code{\rightHandFinger} を短縮することができます。 +例えば、@code{RH} に短縮します: + +@example +RH=#rightHandFinger +@end example + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{placement-of-right-hand-fingerings.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{fingerings,-string-indications,-and-right-hand-fingerings.ly} + +@seealso +コード断片集: +@rlsr{Fretted strings} + +内部リファレンス: +@rinternals{StrokeFinger} + + +@node ギター +@subsection ギター +@translationof Guitar + +ギターに関する記譜の問題の大部分は、@c +フレットのある楽器全般のセクションで十分にカバーされています。@c +しかしながら、ここでは 2, 3 の価値のあることをカバーします。@c +歌詞の上にコード指示を配置しただけの歌集タイプのドキュメントを@c +作成したいと望むユーザが時々います。@c +LilyPond は楽譜譜刻プログラムなので、@c +音楽記譜を持たないドキュメントの作成には推奨できません。@c +ワード プロセッサ、テキスト エディタ、@c +経験のあるユーザであれば GuitarTeX のような譜刻プログラムの方が適しています。 + +@menu +* ポジションとバレーの指示:: +* ハーモニクスとデッド ノートの指示:: +* パワー コードの指示:: +@end menu + +@node ポジションとバレーの指示 +@unnumberedsubsubsec ポジションとバレーの指示 +@translationof Indicating position and barring + +@cindex indicating position and barring for fretted instruments (フレットのある楽器でのポジションとバレーの指示) +@cindex fretted instruments, indicating position and barring (フレットのある楽器でのポジションとバレーの指示) + +以下の例は、楽譜にギターのポジションとバレーの指示を含める方法を示しています。 + +@lilypond[quote,ragged-right,verbatim,relative=0] +\clef "treble_8" +b16 d g b e +\textSpannerDown +\override TextSpanner #'(bound-details left text) = #"XII " +g16\startTextSpan +b16 e g e b g\stopTextSpan +e16 b g d +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Text spanners} + +コード断片集: +@rlsr{Fretted strings}, +@rlsr{Expressive marks} + + +@node ハーモニクスとデッド ノートの指示 +@unnumberedsubsubsec ハーモニクスとデッド ノートの指示 +@translationof Indicating harmonics and dampened notes + +@cindex fretted instruments, dampened notes (フレットのある楽器のデッド ノート) +@cindex fretted instruments, harmonics (フレットのある楽器のハーモニクス) +@cindex dampened notes on fretted instruments (フレットのある楽器のデッド ノート) +@cindex harmonics on fretted instruments (フレットのある楽器のハーモニクス) + +デッド ノートやハーモニクスを示すための特殊な符頭を使うことができます。@c +通常、ハーモニクスにはテキスト マークアップによる説明も付け加えます。 + +@lilypond[quote,ragged-right,verbatim] +\relative c' { + \clef "treble_8" + \override Staff.NoteHead #'style = #'harmonic-mixed + d^\markup { \italic { \fontsize #-2 { "harm. 12" }}} 1 +} +@end lilypond + +デッド ノート (ゴースト ノートとも呼ばれます) が@c +通常の譜とタブ譜でサポートされます: + +@lilypond[quote,ragged-right,verbatim] +music = \relative c' { + < a\3 \deadNote c\2 a'\1 >4 + < b\3 \deadNote d\2 b'\1 > + < c\3 \deadNote e\2 c'\1 > + \deadNotesOn + \times 2/3 { g8 b e } + \deadNotesOff + < a,\3 c\2 e\1 >1 +} +\new StaffGroup << + \new Staff { + \clef "treble_8" + \music + } + \new TabStaff { + \music + } +>> +@end lilypond + +もう 1 つの演奏テクニックに @notation{パーム ミュート} +(特に、エレキ ギターで使用されます) があります。@c +弦を弾く手の平で弦にミュートをかけます (訳者: 手の平=パーム(palm))。@c +LilyPond は、符頭を三角形に変更することで、@c +パーム ミュートの音符記譜をサポートします。 + +@c KEEP LY +@lilypond[quote,ragged-right,verbatim] +\new Voice { % 警告: 楽曲の先頭に palmMuteOn がある場合、 + % palmMuteOff を正しく機能させるには Voice を + % 明示的にインスタンス化する必要があります。 + \relative c, { + \clef "G_8" + \palmMuteOn + e8^\markup { \musicglyph #"noteheads.u2do" = palm mute } + < e b' e > e + \palmMuteOff + e e \palmMute e e e | + e8 \palmMute { e e e } e e e e | + < \palmMute e b' e >8 \palmMute { e e e } < \palmMute e b' e >2 + } +} +@end lilypond + +@seealso +コード断片集: +@rlsr{Fretted strings} + +記譜法リファレンス: +@ref{Special note heads}, +@ref{Note head styles} + + +@node パワー コードの指示 +@unnumberedsubsubsec パワー コードの指示 +@translationof Indicating power chords + +@funindex powerChords +@funindex \powerChords + +@cindex power chords (パワー コード) +@cindex chords, power (パワー コード) + +パワー コードのそのシンボルをコード モードの中、あるいは和音構造として@c +譜刻することができます: + +@lilypond[quote,ragged-right,verbatim] +ChordsAndSymbols = { + \chordmode { + \powerChords + e,,1:1.5 + a,,1:1.5.8 + \set minimumFret = #8 + c,1:1.5 + f,1:1.5.8 + } + \set minimumFret = #5 + 1 + 1 +} +\score { + << + \new ChordNames { + \ChordsAndSymbols + } + \new Staff { + \clef "treble_8" + \ChordsAndSymbols + } + \new TabStaff { + \ChordsAndSymbols + } + >> +} +@end lilypond + +パワー コードのシンボルは、@c +他の一般的な和音修飾子が使用されると自動的に Off になります: + +@lilypond[quote,ragged-right,verbatim] +mixedChords = \chordmode { + c,1 + \powerChords + b,,1:1.5 + fis,,1:1.5.8 + g,,1:m +} +\score { + << + \new ChordNames { + \mixedChords + } + \new Staff { + \clef "treble_8" + \mixedChords + } + \new TabStaff { + \mixedChords + } + >> +} +@end lilypond + +@seealso +音楽用語集: +@rglos{power chord} + +記譜法リファレンス: +@ref{Extended and altered chords}, +@ref{Printing chord names} + +コード断片集: +@rlsr{Fretted strings} + + +@node バンジョー +@subsection バンジョー +@translationof Banjo + +@menu +* バンジョーのタブ譜:: +@end menu + +@node バンジョーのタブ譜 +@unnumberedsubsubsec バンジョーのタブ譜 +@translationof Banjo tablatures + +@cindex banjo tablatures (バンジョーのタブ譜) +@cindex tablature, banjo (バンジョーのタブ譜) + +LilyPond は 5 弦バンジョーの基本的なサポートを提供します。@c +5 弦バンジョーのタブ譜を作成するときは、@c +5 番目の弦のフレット番号を正しく取得するために@c +バンジョー タブ譜フォーマット関数を使用してください: + +@c due to crazy intervals of banjo music, absolute pitch is recommended + +@lilypond[quote,ragged-right,verbatim] +\new TabStaff << + \set TabStaff.tablatureFormat = #fret-number-tablature-format-banjo + \set TabStaff.stringTunings = #banjo-open-g-tuning + { + \stemDown + g8 d' g'\5 a b g e d' | + g4 d''8\5 b' a'\2 g'\5 e'\2 d' | + g4 + } +>> +@end lilypond + +@cindex banjo tunings (バンジョーのチューニング) +@cindex tunings, banjo (バンジョーのチューニング) + +@funindex banjo-c-tuning +@funindex banjo-modal-tuning +@funindex banjo-open-d-tuning +@funindex banjo-open-dm-tuning +@funindex four-string-banjo + +5 弦バンジョーの一般的なチューニングのいくつかは、あらかじめ定義されています: +@code{banjo-c-tuning} (gCGBD), @code{banjo-modal-tuning} (gDGCD), +@code{banjo-open-d-tuning} (aDF#AD) それに @code{banjo-open-dm-tuning} +(aDFAD) です。 + +@code{four-string-banjo} 関数を用いて、@c +これらを 4 弦バンジョーのチューニングに変換することができます: + +@example +\set TabStaff.stringTunings = #(four-string-banjo banjo-c-tuning) +@end example + +@seealso +インストールされているファイル: +@file{ly/string-tunings-init.ly} + +コード断片集: +@rlsr{Fretted strings} diff --git a/Documentation/ja/notation/input.itely b/Documentation/ja/notation/input.itely new file mode 100644 index 0000000000..76484d3446 --- /dev/null +++ b/Documentation/ja/notation/input.itely @@ -0,0 +1,3328 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + + +@node 入出力全般 +@chapter 入出力全般 +@translationof General input and output + +このセクションでは、特定の記譜法ではなく、@c +LilyPond の一般的な入出力の問題について扱います。 + +@menu +* 入力の構造:: +* タイトルとヘッダ:: +* 入力ファイルに取り組む:: +* 出力を制御する:: +* MIDI 出力:: +* 音楽情報を抽出する:: +@end menu + + +@node 入力の構造 +@section 入力の構造 +@translationof Input structure + +LilyPond の入力の主となるフォーマットはテキスト ファイルです。@c +習慣として、それらのファイルの最後には @file{.ly} を付けます。 + +@menu +* score の構造:: +* book の中にある複数の score:: +* 1 つの入力ファイルから複数の出力ファイルを生成する:: +* 出力ファイル名:: +* ファイル構造:: +@end menu + + +@node score の構造 +@subsection score の構造 +@translationof Structure of a score + +@funindex \score + +@code{\score} ブロックは、波括弧で囲まれた単一の音楽表記を@c +含んでいなければなりません: + +@example +\score @{ +... +@} +@end example + +@warning{@code{\score} ブロックの中には、@c +最上位の音楽表記が @strong{1 つだけ} 存在していなければならず、@c +その音楽表記は波括弧で囲まれていなければ@strong{なりません}。} + +この単一の音楽表記は任意のサイズになり得ます。@c +そして、それは他の音楽表記を保持して任意の複雑さを持ち得ます。@c +以下の例はすべて音楽表記です: + +@example +@{ c'4 c' c' c' @} +@end example + +@lilypond[verbatim,quote] +{ + { c'4 c' c' c' } + { d'4 d' d' d' } +} +@end lilypond + +@lilypond[verbatim,quote] +<< + \new Staff { c'4 c' c' c' } + \new Staff { d'4 d' d' d' } +>> +@end lilypond + +@example +@{ + \new GrandStaff << + \new StaffGroup << + \new Staff @{ \flute @} + \new Staff @{ \oboe @} + >> + \new StaffGroup << + \new Staff @{ \violinI @} + \new Staff @{ \violinII @} + >> + >> +@} +@end example + +この一般規則の例外の 1 つにコメントがあります。@c +(他の例外は、@ref{File structure} を参照してください。)@c +単一行コメントと複数行コメント (@code{%@{ .. %@}} で囲まれます) は@c +どちらも入力ファイルの任意の場所に配置することができます。@c +コメントは @code{\score} ブロックの内側あるいは外側に@c +配置することができ、@code{\score} ブロックの中にある単一の音楽表記の@c +内側あるいは外側に配置することができます。 + +たとえ @code{\score} ブロックだけを保持しているファイルであっても、@c +暗黙的に @code{\book} ブロックで囲まれるということを覚えておいてください。@c +ソース ファイルの中にある @code{\book} は少なくとも 1 つの@c +出力ファイルを作り出し、@c +デフォルトでは出力ファイル名は入力ファイル名から派生します。@c +@file{fandangoforelephants.ly} は @file{fandangoforelephants.pdf} を@c +作り出します。 + +(@code{\book} ブロックについての詳細は、@c +@ref{Multiple scores in a book}、@c +@ref{Multiple output files from one input file}、@c +@ref{File structure} を参照してください。) + +@seealso +学習マニュアル: +@rlearning{Working on input files}, +@rlearning{Music expressions explained}, +@rlearning{Score is a (single) compound musical expression} + + +@node book の中にある複数の score +@subsection book の中にある複数の score +@translationof Multiple scores in a book + +@funindex \book +@cindex movements, multiple (複数の楽章) + +ドキュメントは複数の楽曲とテキストを含むことができます。@c +そのようなドキュメントの例には練習曲集や、@c +複数の楽章を持つオーケストラのパート譜があります。@c +楽章はそれぞれ @code{\score} ブロックで入力され、 + +@example +\score @{ + @var{..music..} +@} +@end example + +テキストは @code{\markup} ブロックで入力されます。 + +@example +\markup @{ + @var{..text..} +@} +@end example + +@funindex \book + +同じ @file{.ly} ファイルの中にあるすべての楽章とテキストは、@c +通常、単一の出力ファイルとして譜刻されます。 + +@example +\score @{ + @var{..} +@} +\markup @{ + @var{..} +@} +\score @{ + @var{..} +@} +@end example + +重要な例外として lilypond-book ドキュメントがあります。@c +lilypond-book ドキュメントでは、明示的に @code{\book} ブロックを追加する@c +必要があります。@c +さもなければ、最初の @code{\score} あるいは @code{\markup} だけが出力に@c +表示されます。 + +音楽の各節のヘッダはその節の @code{\score} ブロックの中に置くことができます。@c +そのヘッダからの @code{piece} 名がそれぞれの楽章の前に譜刻されます。@c +book 全体のタイトルは @code{\book} の中に置くことができます。@c +しかしながら、@code{\book} が存在しない場合は、@code{\header} を@c +入力ファイルの先頭に挿入します。 + +@example +\header @{ + title = "Eight miniatures" + composer = "Igor Stravinsky" +@} +\score @{ + @dots{} + \header @{ piece = "Romanze" @} +@} +\markup @{ + ..text of second verse.. +@} +\markup @{ + ..text of third verse.. +@} +\score @{ + @dots{} + \header @{ piece = "Menuetto" @} +@} +@end example + +@funindex \bookpart + +@code{\bookpart} ブロックを用いて、 +複数の楽曲を book のパートとしてグループ化することができます。 + +book パートは改ページで区切られ、book 自体と同様に +@code{\header} ブロックによりタイトルを持つことができます。 + +@example +\bookpart @{ + \header @{ + title = "Book title" + subtitle = "First part" + @} + \score @{ @dots{} @} + @dots{} +@} +\bookpart @{ + \header @{ + subtitle = "Second part" + @} + \score @{ @dots{} @} + @dots{} +@} +@end example + + +@node 1 つの入力ファイルから複数の出力ファイルを生成する +@subsection 1 つの入力ファイルから複数の出力ファイルを生成する +@translationof Multiple output files from one input file + +1 つの @file{.ly} ファイルから複数の出力ファイルを得たいのであれば、@c +@file{.ly} ファイルに複数の @code{\book} ブロックを記述します。@c +各 @code{\book} ブロックが個々に出力ファイルになります。@c +入力ファイルで @code{\book} ブロックを記述しなければ、@c +LilyPond は暗黙的にファイル全体を単一の @code{\book} として扱います。@c +@ref{File structure} を参照してください。 + +単一のソース ファイルから複数のファイルを作り出す時、@c +LilyPond は、@code{\book} ブロックが作り出す出力ファイルが@c +同じ入力ファイル内にある他の @code{\book} ブロックが作り出した出力ファイルを@c +上書きしないことを保証します。 + +入力ファイルから派生するデフォルトの出力ファイル名に +@code{\book} 毎の接尾辞を付け加えることによって上書きされないことを保証します。 + +出力が上書きされないよう、@c +デフォルトでは出力ファイル名にバージョン番号の接尾辞を付け加えます。@c +ソース ファイル @file{eightminiatures.ly} 内の以下の記述 + +@example +\book @{ + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +\book @{ + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +\book @{ + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +@end example + +は、下記の出力ファイルを作り出します。 + +@itemize +@item +@file{eightminiatures.pdf}, +@item +@file{eightminiatures-1.pdf} and +@item +@file{eightminiatures-2.pdf}. +@end itemize + + +@node 出力ファイル名 +@subsection 出力ファイル名 +@translationof Output file names + +@funindex \bookOutputSuffix +@funindex \bookOutputName + +LilyPond は、@c +出力ファイルを作り出す時に出力ファイル名を制御するための様々な機能を提供します。 + +前のセクションでは、@c +LilyPond がどのように単一のソース ファイルから作り出される複数の出力ファイルが@c +上書きされることを防ぐかを見てきました。@c +@code{\book} ブロック毎の出力ファイル名に付け加えられる接尾辞を@c +指定することもできます。@c +各 @code{\book} ブロックの内部に @code{\bookOutputSuffix} 宣言を@c +記述することにより、例えば +@file{eightminiatures-Romanze.pdf}, @file{eightminiatures-Menuetto.pdf} +それに @file{eightminiatures-Nocturne.pdf} といった名前の出力ファイルを@c +作り出すことができます。 + +@example +\book @{ + \bookOutputSuffix "Romanze" + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +\book @{ + \bookOutputSuffix "Menuetto" + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +\book @{ + \bookOutputSuffix "Nocturne" + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +@end example + +@code{\bookOutputName} 宣言を用いることにより、@c +@code{\book} ブロックに入力ファイル名とは異なる出力ファイル名を@c +指定することもできます。 + +@example +\book @{ + \bookOutputName "Romanze" + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +\book @{ + \bookOutputName "Menuetto" + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +\book @{ + \bookOutputName "Nocturne" + \score @{ @dots{} @} + \layout @{ @dots{} @} +@} +@end example + +上記のファイルは下記の出力ファイルを作り出します: + +@itemize +@item +@file{Romanze.pdf} +@item +@file{Menuetto.pdf} +@item +@file{Nocturne.pdf} +@end itemize + + +@node ファイル構造 +@subsection ファイル構造 +@translationof File structure + +@funindex \paper +@funindex \midi +@funindex \layout +@funindex \header +@funindex \score +@funindex \book +@funindex \bookpart + +@file{.ly} ファイルは最上位の表記を任意の数だけ保持することができます +-- ここで、最上位の表記とは以下の中の 1 つです: + +@itemize @bullet +@item +@code{\paper}, @code{\midi}, @code{\layout} などの出力定義。@c +最上位にある出力定義はブック全体のデフォルト設定を変更します。@c +最上位に同じタイプの出力定義が複数ある場合は組み合わされますが、@c +衝突した場合は後ろの方にある出力定義が優先されます。@c +出力定義が @code{\layout} ブロックにどのような影響を与えるかの詳細は +@ref{The \layout block} を参照してください。 + + +@item +@code{#(set-default-paper-size "a7" 'landscape)} や +@code{#(ly:set-option 'point-and-click #f)} などの Scheme 表記。 + +@item +@code{\header} ブロック。これはグローバル ヘッダ ブロックになります。@c +このブロックは、作曲者、曲名などのブック全体の設定定義を保持します。 + +@item +@code{\score} ブロック。@c +この score は他の最上位の score とともに単一の @code{\book} にまとめられます。@c +この振る舞いは、@c +変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c +変更することができます。@c +デフォルトのハンドラは@c +初期化ファイル @file{../scm/lily.scm} で定義されています。 + +@item +@code{\book} ブロックは複数の楽章 (すなわち、複数の @code{\score} ブロック) を@c +論理的に 1 つのドキュメントにまとめます。@c +複数の @code{\score} が存在する場合、@c +それぞれの @code{\book} ブロックに対して 1 つずつ出力ファイルが作成され、@c +それぞれの出力ファイルの中では該当するすべての楽章が連結されます。@c +@file{.ly} ファイルの中で明示的に @code{\book} ブロックを@c +指定する必要があるケースはただ 1 つ、@c +単一の入力ファイルから複数の出力ファイルを作成することを望む場合です。@c +例外の 1 つに lilypond-book ドキュメントがあります +-- そこでは、同じ例の中に複数の @code{\socre} あるいは @code{\markup} を@c +配置したければ、明示的に @code{\book} ブロックを追加する必要があります。@c +この振る舞いは、@c +変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c +変更することができます。@c +デフォルトのハンドラは@c +初期化ファイル @file{../scm/lily.scm} で定義されています。 + +@item +@code{\bookpart} ブロック。@c +改ページを簡単にするため、@c +あるいは異なるパートで別々の @code{\paper} 設定を使用するために、@c +book は +-- @code{\bookpart} を用いて -- +いくつかのパートに分割される可能性があります。 + +@item +以下のような複合音楽表記: +@example +@{ c'4 d' e'2 @} +@end example + +これは楽節を @code{\score} に付け加え、@c +その楽節を他のすべての最上位 @code{\score} や音楽表記とともに@c +単一のブックにフォーマットにします。@c +言い換えると、上記の音楽表記だけを保持しているファイルは@c +以下のように翻訳されます: + +@example +\book @{ + \score @{ + \new Staff @{ + \new Voice @{ + @{ c'4 d' e'2 @} + @} + @} + \layout @{ @} + @} + \paper @{ @} + \header @{ @} +@} +@end example + +この振る舞いは、@c +変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c +変更することができます。@c +デフォルトのハンドラは@c +初期化ファイル @file{../scm/lily.scm} で定義されています。 + +@item +マークアップ テキスト。@c +例として以下の歌詞を挙げます: +@example +\markup @{ + 2. The first line verse two. +@} +@end example + +マークアップ テキストは、それが出現した場所で、@c +score あるいは音楽表記の上、間、あるいは下に描かれます。 + +@cindex variables (変数) + +@item +以下のような変数: +@example +foo = @{ c4 d e d @} +@end example + +これは後で使用することができます。@c +使用するには、入力ファイルの中で @code{\foo} と入力します。@c +変数の名前はアルファベットだけで構成すべきです。@c +数字、アンダスコアあるいはダッシュを使うことができません。 + +@end itemize + +以下の例は最上位の階層で入力される可能性がある 3 つのものを示しています: + +@example +\layout @{ + % Don't justify the output + ragged-right = ##t +@} + +\header @{ + title = "Do-re-mi" +@} + +@{ c'4 d' e2 @} +@end example + + +ファイルの任意の場所で、以下の編集指示のいずれかが入力される可能性があります: + +@itemize +@item @code{\version} +@item @code{\include} +@item @code{\sourcefilename} +@item @code{\sourcefileline} +@item +@code{%} 記号で始まる単一行コメント。 + +@item +@code{%@{ .. %@}} で囲まれる複数行コメント。 + +@end itemize + +@cindex whitespace + +通常、入力の要素間にある空白は無視され、@c +可読性を良くするために自由に削除あるいは追加することができます。@c +しかしながら、以下の状況ではエラーを避けるために空白を挿入する必要があります: + +@itemize +@item 波括弧の前後。 +@item コマンドあるいは変数 -- すなわち、@code{\} 記号で始まる要素 -- の後。 +@item Scheme 表記として解釈される要素 +-- すなわち、@code{#} 記号で始まる要素 -- の後。 +@item Scheme 表記要素を区切る空白。 +@item @code{lyricmode} モードの @code{\override} と @code{\set} コマンドの@c +中にある単語を区切る空白。@c +特に、@code{\override Score . LyricText #'font-size = #5} のように、@c +コマンドの中のドットとイコール記号の前後、コマンド全体の前後に@c +空白を挿入することを忘れないで下さい。 + +@end itemize + +@seealso +学習マニュアル: +@rlearning{How LilyPond input files work} + +記譜法リファレンス: +@ref{The \layout block} + + +@node タイトルとヘッダ +@section タイトルとヘッダ +@translationof Titles and headers + +ほとんどすべての楽譜にはタイトルと作曲者名が含まれます。@c +楽譜の中にはさらに多くの情報を含むものもあります。 + +@menu +* タイトル、ヘッダ、フッタを作成する:: +* カスタム ヘッダ、フッタ、タイトル:: +* 脚注を作成する:: +* ページ番号の参照:: +* 目次:: +@end menu + + +@node タイトル、ヘッダ、フッタを作成する +@subsection タイトル、ヘッダ、フッタを作成する +@translationof Creating titles headers and footers + +@menu +* タイトル ブロックの説明:: +* book と score のタイトル ブロックのデフォルト レイアウト:: +* ヘッダとフッタのデフォルト レウアウト:: +@end menu + +@node タイトル ブロックの説明 +@unnumberedsubsubsec タイトル ブロックの説明 +@translationof Title blocks explained + +@c TODO: figure out how \bookpart titles work + +タイトル ブロックには 2 つのタイプがあります: +book の最初の @code{\score} の上に表示されるメインのタイトル ブロックと、@c +各 @code{\score} ブロック内に表示される個々のタイトル ブロックです。@c +両タイプのテキスト フィールドは @code{\header} ブロックを用いて挿入します。 + +book が単一の score しか持たない場合、@c +@code{\header} ブロックを配置する場所は @code{\score} ブロックの内側でも@c +外側でも構いません。 + +@warning{@bs{}@code{score} ブロックの内側に @bs{}@code{header} ブロックを@c +追加する場合、@c +@bs{}@code{header} ブロックの前に音楽表記を配置する必要があります。} + +@lilypond[papersize=a5,quote,verbatim,noragged-right] +\header { + title = "SUITE I." + composer = "J. S. Bach." +} + +\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." + } +} + +\score { + \new Staff \relative b { + \clef bass + \key g \major + \partial 16 b16 | + 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 + +book のメイン タイトル ブロックのテキスト フィールドはすべての @code{\score} +ブロックに表示させることができ、手動で表示を抑制することもできます: + +@c KEEP LY +@lilypond[papersize=a5,quote,verbatim,noragged-right] +\book { + \paper { + print-all-headers = ##t + } + \header { + title = "DAS WOHLTEMPERIRTE CLAVIER" + subtitle = "TEIL I" + % この book では tagline を表示しません + tagline = ##f + } + \markup { \vspace #1 } + \score { + \new PianoStaff << + \new Staff { s1 } + \new Staff { \clef "bass" s1 } + >> + \header { + title = "PRAELUDIUM I" + opus = "BWV 846" + % この score では subtitle を表示しません + subtitle = ##f + } + } + \score { + \new PianoStaff << + \new Staff { s1 } + \new Staff { \clef "bass" s1 } + >> + \header { + title = "FUGA I" + subsubtitle = "A 4 VOCI" + opus = "BWV 846" + % この score では subtitle を表示しません + subtitle = ##f + } + } +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{File structure}, +@ref{Custom layout for title blocks} + + +@node book と score のタイトル ブロックのデフォルト レイアウト +@unnumberedsubsubsec book と score のタイトル ブロックのデフォルト レイアウト +@translationof Default layout of book and score title blocks + +タイトル ブロックのレイアウトとフォーマットは 2 つの @code{\paper} +変数によって制御されます。@c +メインの @code{\header} タイトル ブロックのための @code{bookTitleMarkup} と、@c +@code{\score} 内部の個々の @code{\header} ブロックのための +@code{scoreTitleMarkup} です。 + +以下の例は @code{\header} のすべての変数の使用例です: + +@c KEEP LY +@lilypond[papersize=a7,quote,verbatim,noragged-right] +\book { + \header { + % 以下のフィールドは中央揃えされます。 + dedication = "Dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + % 以下のフィールドは 1 行に配置されます + % フィールド "instrument" は 2 ページ以降にも表示されます + instrument = \markup \with-color #green "Instrument" + poet = "Poet" + composer = "Composer" + % 以下のフィールドは同一行の両端に配置されます + meter = "Meter" + arranger = "Arranger" + % 以下のフィールドは最下段の中央に配置されます + tagline = "tagline goes at the bottom of the last page" + copyright = "copyright goes at the bottom of the first page" + } + \score { + { s1 } + \header { + % 以下のフィールドは同一行の両端に配置されます + piece = "Piece 1" + opus = "Opus 1" + } + } + \score { + { s1 } + \header { + % 以下のフィールドは同一行の両端に配置されます + piece = "Piece 2 on the same page" + opus = "Opus 2" + } + } + \pageBreak + \score { + { s1 } + \header { + % 以下のフィールドは同一行の両端に配置されます + piece = "Piece 3 on a new page" + opus = "Opus 3" + } + } +} +@end lilypond + +以下に注意してください: + +@itemize +@item +楽器名は各ページに繰り返し表示されます。 + +@item +紙面変数 @code{print-all-headers} に @code{##f} がセットされている場合 +(デフォルトの設定です)、@code{\score} には @code{piece} と @code{opus} +だけが表示されます。 + +@item +@c Is the bit about \null markups true? -mp +@code{\header} ブロックでセットされなかったテキスト フィールドには@c +@code{\null} マークアップがセットされ、スペースを無駄にしません。 + +@item +デフォルト設定では、@code{scoreTitleMarkup} は +@code{piece} テキスト フィールドと @code{opus} テキスト フィールドを@c +同一行の両端に配置します。 + +@end itemize + +デフォルトのレイアウトを変更するには @ref{Custom layout for title blocks} +を参照してください。 + +@cindex breakbefore + +最上位の @code{\header} ブロックのタイトルを最初のページに配置して、@c +@code{\score} ブロックで定義される楽譜を次のページから始めるするには、@c +@code{\score} ブロックの中にある @code{\header} ブロック内で@c +@code{breakbefore} 変数を使用します。 + +@lilypond[papersize=a8landscape,verbatim,noragged-right] +\book { + \header { + title = "This is my Title" + subtitle = "This is my Subtitle" + copyright = "This is the bottom of the first page" + } + \score { + \repeat unfold 4 { e'' e'' e'' e'' } + \header { + piece = "This is the Music" + breakbefore = ##t + } + } +} +@end lilypond + +@seealso +学習マニュアル: +@rlearning{How LilyPond input files work} + +記譜法リファレンス: +@ref{Custom layout for title blocks}, +@ref{File structure} + +インストールされているファイル: +@file{ly/titling-init.ly} + + +@node ヘッダとフッタのデフォルト レウアウト +@unnumberedsubsubsec ヘッダとフッタのデフォルト レウアウト +@translationof Default layout of headers and footers + +@emph{ヘッダ} と @emph{フッタ} は、book のテキストとは別の、@c +ページの最初と最後に表示されるテキスト行です。@c +ヘッダとフッタは以下の @code{\paper} 変数によって制御されます: + +@itemize +@item @code{oddHeaderMarkup} +@item @code{evenHeaderMarkup} +@item @code{oddFooterMarkup} +@item @code{evenFooterMarkup} +@end itemize + +これらのマークアップ変数は、最上位の @code{\header} ブロック +(これは book のすべての score に適用されます) から、@c +テキスト フィールドのみにアクセスすることができ、@c +@file{ly/titling-init.ly} で定義されています。@c +デフォルトでは以下のようになっています: + +@itemize + +@item +ページ番号は、2 ページ目から、ページ最上段の左端 (偶数ページの場合) +または右端 (奇数ページの場合) に自動的に配置されます。 + +@item +@code{instrument} テキスト フィールドは、2 ページ目から、@c +各ページの中央に配置されます。 + +@item +@code{copyright} テキストは最初のページの最下段中央に配置されます。 + +@item +@code{tagline} は最後のページの最下段中央に配置されます。@c +1 ページしかない場合は @code{copyright} の下に配置されます。 + +@end itemize + +@lilypond[papersize=a8landscape] +\book { + \score { + \relative c' { + c4 d e f + } + } +} +@end lilypond + +最上位の @code{\header} ブロックの中に @code{tagline} を追加することで、@c +デフォルトのタグラインを変更することができます。 + +@lilypond[papersize=a8landscape,verbatim] +\book { + \header { + tagline = "... music notation for Everyone" + } + \score { + \relative c' { + c4 d e f + } + } +} +@end lilypond + +タグラインを削除するには、@code{tagline} に @code{##f} をセットします。 + + +@node カスタム ヘッダ、フッタ、タイトル +@subsection カスタム ヘッダ、フッタ、タイトル +@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 +* タイトル ブロックのカスタム テキスト フォーマット:: +* タイトル ブロックのカスタム レイアウト:: +* ヘッダとフッタのカスタム レイアウト:: +@end menu + +@node タイトル ブロックのカスタム テキスト フォーマット +@unnumberedsubsubsec タイトル ブロックのカスタム テキスト フォーマット +@translationof Custom text formatting for title blocks + +標準の @code{\markup} コマンドを使って @code{\header} ブロックの中にある@c +ヘッダ、フッタ、それにタイトル テキストをカスタマイズすることができます。 + +@lilypond[quote,verbatim,noragged-right] +\score { + { s1 } + \header { + piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" } + subtitle = \markup { \italic "(Excerpt)" } + } +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Formatting text} + + +@node タイトル ブロックのカスタム レイアウト +@unnumberedsubsubsec タイトル ブロックのカスタム レイアウト +@translationof Custom layout for title blocks + +@cindex bookTitleMarkup +@cindex scoreTitleMarkup +@funindex bookTitleMarkup +@funindex scoreTitleMarkup + +@code{\header} ブロックの中に @code{\markup} コマンドを配置することにより、@c +シンプルなテキストをフォーマットすることができます。@c +しかしながら、タイトルの配置を精密に制御することはできません。@c +テキスト フィールドの配置をカスタマイズするには、以下の @code{\paper} +変数のどちらか、あるいは両方を変更します: + +@itemize +@item @code{bookTitleMarkup} +@item @code{scoreTitleMarkup} +@end itemize + +これらの @code{\markup} のデフォルト値を用いた場合のタイトルの配置は +@ref{Default layout of book and score title blocks} の中にある例で@c +示しています。 + +@file{ly/titling-init.ly} で定義されている @code{scoreTitleMarkup} +のデフォルト設定は以下のとおりです: + +@example +scoreTitleMarkup = \markup @{ \column @{ + \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @} + \fill-line @{ + \fromproperty #'header:piece + \fromproperty #'header:opus + @} +@} +@} +@end example + +これは、@code{piece} テキスト フィールドと @code{opus} テキスト フィールドを@c +同一行の両端に配置します: + +@lilypond[quote,verbatim,noragged-right] +\score { + { s1 } + \header { + piece = "PRAELUDIUM I" + opus = "BWV 846" + } +} +@end lilypond + +以下の例では、@code{scoreTitleMarkup} を再定義することにより、@c +@code{piece} テキスト フィールドを中央に配置して、フォントを大きく、@c +太字にしています。 + +@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 + +@code{print-all-headers} を @code{\paper} ブロックの中に配置することにより、@c +メイン タイトル ブロックのテキスト フィールドを個々の score タイトル ブロック@c +に表示させることができます。@c +この方法の欠点は、個々の @code{\score} ブロックで、@c +最上位の @code{\header} ブロックだけに表示させるテキスト フィールドを@c +手動で抑制する必要があることです。@c +@ref{Title blocks explained} を参照してください。 + +この欠点を回避するには、個々の @code{\score} ブロックに表示させたい@c +テキスト フィールドを @code{scoreTitleMarkup} 定義に追加します。@c +以下の例では、@code{composer} テキスト フィールド +(通常、これは @code{bookTitleMarkup} に関連付けされています) +を @code{scoreTitleMarkup} に追加することにより、@c +各 score は異なる作曲者を表示しています: + +@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 + +あなた自身のカスタム テキスト フィールドを作成して、@c +それをマークアップ定義で参照することもできます。 + +@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 + +@seealso +記譜法リファレンス: +@ref{Title blocks explained} + + +@node ヘッダとフッタのカスタム レイアウト +@unnumberedsubsubsec ヘッダとフッタのカスタム レイアウト +@translationof Custom layout for headers and footers + +@c can make-header and make-footer be removed from +@c paper-defaults-init.ly? -mp + +@code{\header} ブロックの中に @code{\markup} コマンドを配置することにより、@c +シンプルなテキストをフォーマットすることができます。@c +しかしながら、ヘッダとフッタの配置を精密に制御することはできません。@c +テキスト フィールドの配置をカスタマイズするために、@c +以下の @code{\paper} 変数のいずれか、あるいはいくつかを使用します: + +@itemize +@item @code{oddHeaderMarkup} +@item @code{evenHeaderMarkup} +@item @code{oddFooterMarkup} +@item @code{evenFooterMarkup} +@end itemize + +@cindex markup, conditional (条件付マークアップ) +@cindex on-the-fly (オンザフライ) +@funindex \on-the-fly + +@code{\markup} コマンド @code{\on-the-fly} を用いて、@code{\paper} +ブロック内部で定義されたヘッダ テキストとフッタ テキストに条件付でマーク@c +アップを追加することができます。@c +以下の構文を用います: + +@example +@code{variable} = @code{\markup} @{ + ... + @code{\on-the-fly} #@var{procedure} @var{markup} + ... +@} +@end example + +@var{procedure} は、それを保持している @code{\markdup} コマンドが評価@c +される度に呼び出されます。@c +@var{procedure} はある特定の条件をテストして、条件が真である場合にのみ@c +@var{markup} 引数を解釈します (つまり、表示します)。 + +様々な条件をテストするためのプロシージャがあらかじめ用意されています: + +@quotation +@multitable {print-page-number-check-first-----} {should this page be printed-----} + +@headitem Procedure name @tab Condition tested + +@item print-page-number-check-first @tab このページ番号は表示されるか? +@item create-page-number-stencil @tab 'print-page-numbers は真か? +@item print-all-headers @tab 'print-all-headers は真か? +@item first-page @tab ブックの最初のページか? +@item (on-page nmbr) @tab ページ番号 = nmbr か? +@item last-page @tab ブックの最後のページか? +@item not-first-page @tab ブックの最初ではないページか? +@item part-first-page @tab ブック パートの最初のページか? +@item part-last-page @tab ブック パートの最後のページか? +@item not-single-page @tab ブック パートのページ数 > 1 か? + +@end multitable +@end quotation + +以下の例では、ページ番号を各ページの最下段中央に配置しています。@c +まず、@code{oddHeaderMarkup} と @code{evenHeaderMarkup} に +@emph{null} を定義することにより、デフォルト設定を削除します。@c +次に、@code{oddFooterMarkup} に中央に配置されたページ番号を再定義します。@c +最後に、@code{evenFooterMarkup} に @code{oddFooterMarkup} を@c +定義することにより、同じレイアウトにします: + +@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 + +複数の @code{\on-the-fly} 条件を @q{and} 演算子で組み合わせることが@c +できます。例えば、 + +@example + @code{\on-the-fly #first-page} + @code{\on-the-fly #last-page} + @code{@{ \markup ... \fromproperty #'header: ... @}} +@end example + +これは、出力が単一のページかどうかを判断します。 + +@seealso +記譜法リファレンス: +@ref{Title blocks explained}, +@ref{Default layout of book and score title blocks} + +インストールされているファイル: +@file{../ly/titling-init.ly} + + +@node 脚注を作成する +@subsection 脚注を作成する +@translationof Creating footnotes + +作成できる脚注には 2 つのタイプがあります。@c +自動脚注と手動脚注です。 + +@menu +* 脚注の概要:: +* 自動脚注:: +* 手動脚注:: +@end menu + +@node 脚注の概要 +@unnumberedsubsubsec 脚注の概要 +@translationof Footnotes overview + +自動脚注は繰り上がっていくページ番号を作り出し、@c +手動脚注はページ番号をカスタマイズすることができます。@c +通常、脚注は @code{\tweak} のように適用されるので、多くの音楽要素や@c +ポスト-イベントによって作成されるグラフィカル オブジェクト上に直接配置@c +することができます。@c +これがうまくいかない場合 (小節線や拍の変更のように、プロパティの変更の結果@c +として作り出されるグラフィカル オブジェクトの場合)、脚注を独立した音楽@c +イベントとして入力することである特定のタイミングにある指定したタイプの@c +すべてのグラフィカルに影響を与えることもできます。 + +脚注コマンドの完全な形式は以下のようなものです: + +@example +\footnote @var{mark} @var{offset} @var{grob-name} @var{footnote} +@var{music} +@end example + +要素は以下の通りです: + +@table @var +@item mark +これは脚注を指定するマークアップや文字列で、参照ポイントとページ下の@c +脚注自体を指すマークになります。@c +これは省略することができ (@code{\default} で置き換えられます)、省略した@c +場合は連続した数字が生成されます。 +@item offset +脚注マークを配置する参照ポイントからの X と Y オフセットを指定する +@samp{#(2 . 1)} のような数字のペアです。 +@item grob-name +脚注マークを付けるグラフィカル オブジェクトのタイプを指定します (例えば +@samp{#'Flag} です)。@c +これが指定された場合、対応するグラフィカル オブジェクトが参照される +@var{music} 自体にあるものでなくても、そこから作成されたものであれば@c +参照ポイントになります。@c +これは省略するができ (@code{\default} で置き換えられます)、その場合は@c +直接作成されたグラフィカル オブジェクトだけに脚注が付けられます。 +@item footnote +このマークアップあるいは文字列はページ下の脚注テキストになります。 +@item music +これは脚注を付ける要素 -- 音楽イベント、和音構成要素、あるいは@c +ポスト-イベントです。@c +これを省略することはできませんが、@code{\default} で置き換えることで@c +脚注をある特定の音楽表記ではなく音楽タイミングに付けることができます。@c +@code{\default} を用いた場合、影響を与えるグラフィカル オブジェクトの@c +タイプを指定する @var{grob-name} 引数を指定する必要があります。 +@end table + +@code{\tweak} と同様に、@code{\footnote} をポスト-イベントや@c +アーティキュレーションに適用する場合、それ自体の前に @code{-} を配置@c +して、構文解析の結果を前にある音符や休符にくっつけさせる必要があります。 + + +@node 自動脚注 +@unnumberedsubsubsec 自動脚注 +@translationof Automatic footnotes + +自動脚注は 4 つの引数を取ります: 脚注マークの位置 @samp{(x . y)}、@c +脚注を付ける @var{レイアウト オブジェクト} を指定するオプションの +@var{grob-name}、ページ下の脚注に表示される @var{footnote} マークアップ、@c +それに脚注を付ける @var{music} です。 + + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote #'(0.5 . -2) + \markup { The first note } + a'4 b8 + \footnote #'(0.5 . 1) #'Flag + \markup { The third note } + e\noBeam c4 d4 + } +} +@end lilypond + +和音の音符でも難しいことはありません: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote #'(1 . -1.25) "これは C です" c + \footnote #'(2 . -0.25) \markup { \italic "E-flat です" } es + \footnote #'(2 . 3) \markup { \bold "これは G です" } g + >1 + } +} +@end lilypond + +@warning { +脚注の垂直方向の位置が同じになる場合、下方向に並べられます。@c +高い位置にある脚注は、リストでも上に来ます。 +} + +ここで、グラフィカル オブジェクト動脚注を付ける例をいくつか挙げ、@c +さらに脚注とタグラインやコピーライトとの位置関係を示します。 + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { copyright = \markup { "Copyright 1970" } } + \relative c' { + a'4-\footnote #'(-3 . 0) \markup { \bold Forte } \f + -\footnote #'(0 . 1.5) \markup { スラー } ( + b8)-\footnote #'(0 . -2) \markup { 連桁 } [ e] + \footnote #'(1 . -1) #'Stem + \markup { \teeny { これは符幹です } } + c4 + \footnote #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { 忠告の臨時記号 } + \footnote #'(1 . 1) "音符自体" + dis?4-\footnote #'(0.5 . -0.5) \markup \italic { スロー ダウン } + _"rit." + } +} +@end lilypond + +最上位の @code{\markup} に脚注を付ける場合、@c +@code{\auto-footnote} コマンドを使う必要があります: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { \auto-footnote "A simple tune" \italic "By me" } + \relative c' { + a'4 b8 e c4 d + } +} +@end lilypond + + +@node 手動脚注 +@unnumberedsubsubsec 手動脚注 +@translationof Manual footnotes + +@cindex footnotes, manual (手動の脚注 + +手動で付ける脚注は追加で最初の引数として参照マークとなる @var{mark} を@c +取ります。@c +自動的に生成される脚注マークとは対照的に、ページ下の @var{footnote} +マークアップの前には表示されません: 見た目のつながりはユーザ自身で作成@c +する必要があります。@c +LilyPond は対応するマークアップを同じページの下に表示するだけです。 + +上記のことを除けば、手動脚注は自動的に付番される脚注と同じです。 + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + \footnote + "1" #'(0.5 . -2) + \markup { \italic "1. 最初の音符" } + a'4 + b8 + \footnote + \markup { \bold "2" } #'(0.5 . 1) + "2. 2 番目の音符" + e + c4 + d-\footnote "3" #'(0.5 . -1) "3. ピアノ" \p + } +} +@end lilypond + +和音に手動脚注を付ける場合、以下のようにします: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + < + \footnote "1" #'(1 . -1.25) "1. C" c + \footnote + \markup { \bold "b" } #'(2 . -0.25) "b. E-フラット" es + \footnote "3" #'(2 . 3) \markup { \italic "iii. G" } g + >1 + } +} +@end lilypond + +@warning { +脚注の垂直方向の位置が同じになる場合、下方向に並べられます。@c +高い位置にある脚注は、リストでも上に来ます。 +} + +ここで、グラフィカル オブジェクトに手動脚注を付ける例をいくつか挙げ、@c +脚注とタグラインやコピーライトとの位置関係を示します。 + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \relative c' { + a'4-\footnote + \markup { \teeny 1 } #'(-3 . 0) + \markup { 1. \bold フォルテ } \f + -\footnote + \markup { \teeny b } #'(0 . 1.5) + \markup { b. スラー } ( + b8)-\footnote + \markup { \teeny 3 } #'(0 . -2) + \markup { 3. 連桁 } [ + e] + \footnote + \markup { 4 } #'(1 . -1) #'Stem + \markup { \bold 4. { これは符幹です } } + c4 + \footnote + \markup \concat \teeny { "sharp (v)" } + #'(0 . 0.5) #'AccidentalCautionary + \markup \italic { v. 忠告の臨時記号 } + dis?4-\footnote + \markup \concat \teeny { "a" } #'(0.5 . -0.5) + \markup \italic { a. スローダウン } _"rit." + \footnote + \markup { \teeny \musicglyph #"rests.4" } + #'(1.5 . -0.25) + \markup { \null } \breathe + } +} +@end lilypond + +最上位の @code{\markup} に脚注を付ける場合、下記のようにします: + +@lilypond[verbatim,quote,ragged-right,papersize=a8] +\book { + \header { tagline = ##f } + \markup { "A simple tune" \footnote "*" \italic "* By me" } + \relative c' { + a'4 b8 e c4 d4 + } +} +@end lilypond + +@seealso +学習マニュアル: +@rlearning{Objects and interfaces} + +記譜法リファレンス: +@ref{Balloon help}, +@ref{Page layout}, +@ref{Text marks}, +@ref{Text scripts}, +@ref{Titles and headers} + +内部リファレンス: +@rinternals{FootnoteEvent}, +@rinternals{FootnoteItem}, +@rinternals{FootnoteSpanner}, +@rinternals{Footnote_engraver} + +@knownissues +同じページにある複数の脚注は上下にしか配置できません。@c +ある脚注が他の脚注の上に配置され、同じ行に配置することはできません。@c +@code{MultiMeasureRests} に脚注を付けることはできず、@c +@code{Staff}、@code{\markup} オブジェクト、それに他の @code{footnote} と@c +衝突する可能性があります。@c +手動の @code{footnote} コマンドを使う場合、@c +containing @code{footnote-auto-number = ##f} を保持している +@code{\paper} ブロックが必要です。 + + +@ignore +@node カスタム タイトル +@subsection カスタム タイトル +@translationof Custom titles + +さらに高度なオプションとして、@c +@code{\paper} ブロックの中にある以下の変数の定義を変更することができます。@c +初期化ファイル @file{../ly/titling-init.ly} が@c +デフォルトのレイアウトの設定リストです。 + +@table @code +@funindex bookTitleMarkup +@item bookTitleMarkup + これは出力ドキュメントの先頭に付け加えられるタイトルです。@c +通常、ここには作品の作曲者名とタイトルが含まれます。 + +@funindex scoreTitleMarkup +@item scoreTitleMarkup + これは @code{\score} ブロックの上に配置されるタイトルです。@c +通常、ここには楽章の名前 (@code{piece} フィールド) が含まれます。 + +@funindex oddHeaderMarkup +@item oddHeaderMarkup + これは奇数番号ページのヘッダです。 + +@funindex evenHeaderMarkup +@item evenHeaderMarkup + これは偶数番号ページのヘッダです。@c +これが指定されていない場合は、奇数番号ページのヘッダが代わりに使用されます。 + + デフォルトのヘッダ定義は、ページ番号は端に配置し、@c +楽器名は中央に配置するようになっています。 + +@funindex oddFooterMarkup +@item oddFooterMarkup + これは奇数番号ページのフッタです。 + +@funindex evenFooterMarkup +@item evenFooterMarkup + これは偶数番号ページのフッタです。@c +これが指定されていない場合は、偶数番号ページのフッタが代わりに使用されます。 + + デフォルトでは、最初のページのフッタには著作権についての注意書きが含まれ、@c +最後のページのフッタにはタグ行が含まれます。 +@end table + + +@cindex \paper +@cindex header (ヘッダ) +@cindex footer (フッタ) +@cindex page layout (ページ レイアウト) +@cindex titles (タイトル) + +以下の定義では、タイトルはページの左側に配置され、@c +作曲者名は同じ行の右側に配置されます。 + +@verbatim +\paper { + bookTitleMarkup = \markup { + \fill-line { + \fromproperty #'header:title + \fromproperty #'header:composer + } + } +} +@end verbatim +@end ignore + +@node ページ番号の参照 +@subsection ページ番号の参照 +@translationof Reference to page numbers + +@code{\label} コマンドを用いて、楽譜のある特定の場所 +-- 楽譜の最上位あるいは内部 -- +に印をつけることができます。@c +このラベルをマークアップの中で参照することできます。@c +ラベルを付けられた場所のページ番号を取得するには、@c +@code{\page-ref} マークアップ コマンドを使います。 + +@lilypond[verbatim,papersize=a8landscape] +\header { tagline = ##f } +\book { + \label #'firstScore + \score { + { + c'1 + \pageBreak \mark A \label #'markA + c'1 + } + } + \markup { The first score begins on page \page-ref #'firstScore "0" "?" } + \markup { Mark A is on page \page-ref #'markA "0" "?" } +} +@end lilypond + +@code{\page-ref} マークアップ コマンドは 3 つの引数をとります: +@enumerate +@item ラベル。@c +これは Scheme シンボルです -- 例: @code{#'firstScore}。 +@item マークアップ。@c +これはマークアップの大きさを推定するためのゲージです。 +@item マークアップ。@c +これは、ラベルが不明な場合にページ番号として用いられます。 +@end enumerate + +ゲージが必要な理由は、@c +マークアップが解釈されているときに改ページはまだ行われておらず、@c +ページ番号はまだわからないからです。@c +この問題を回避するために、@c +実際のマークアップ解釈はもっと後に延期されます。@c +しかしながら、マークアップの大きさは事前に判明している必要があるため、@c +ゲージを使ってマークアップの大きさを決定します。@c +book のページ数が 10 から 99 までの範囲であるのなら、ゲージを "00" +-- つまり、2 桁の数 -- にします。 + + +@predefined +@funindex \label +@code{\label}, +@funindex \page-ref +@code{\page-ref} +@endpredefined + + +@node 目次 +@subsection 目次 +@translationof Table of contents + +目次は @code{\markuplist \table-of-contents} コマンドを用いて挿入します。@c +目次に表示すべき要素は @code{\tocItem} コマンドで挿入されます +-- このコマンドは最上位あるいは音楽表記の内部で使用します。 + +@verbatim +\markuplist \table-of-contents +\pageBreak + +\tocItem \markup "First score" +\score { + { + c'4 % ... + \tocItem \markup "Some particular point in the first score" + d'4 % ... + } +} + +\tocItem \markup "Second score" +\score { + { + e'4 % ... + } +} +@end verbatim + +目次を構成するために使用するマークアップは +@code{\paper} ブロックの中で定義します。@c +デフォルトのマークアップは、@c +目次のタイトルを構成する @code{tocTitleMarkup} と、@c +目次の要素 -- 要素のタイトルとページ番号 -- を構成する +@code{tocItemMarkup} です。@c +これらの変数はユーザによって変更することができます: + +@c KEEP LY +@verbatim +\paper { + %% 目次タイトルをフランス語に翻訳します: + tocTitleMarkup = \markup \huge \column { + \fill-line { \null "Table des matières" \null } + \hspace #1 + } + %% より大きなフォント サイズを使用します + tocItemMarkup = \markup \large \fill-line { + \fromproperty #'toc:text \fromproperty #'toc:page + } +} +@end verbatim + +@code{tocItemMarkup} 定義の中で目次要素のテキストとページ番号を@c +参照する方法に注目してください。 + +より手の込んだ目次を構築するために新しいコマンドとマークアップを@c +定義することもできます: +@itemize +@item まず、@code{\paper} ブロックの中で新しいマークアップ変数を定義します +@item それから、このマークアップ変数を用いて、@c +目次要素を付け加えるための音楽関数を定義します。 +@end itemize + +以下の例では、@c +オペラの目次の中で幕の名前を挿入するために新しい様式を定義しています: + +@verbatim +\paper { + tocActMarkup = \markup \large \column { + \hspace #1 + \fill-line { \null \italic \fromproperty #'toc:text \null } + \hspace #1 + } +} + +tocAct = +#(define-music-function (parser location text) (markup?) + (add-toc-item! 'tocActMarkup text)) +@end verbatim + +@lilypond[line-width=10.0\cm] +\header { tagline = ##f } +\paper { + tocActMarkup = \markup \large \column { + \hspace #1 + \fill-line { \null \italic \fromproperty #'toc:text \null } + \hspace #1 + } +} + +tocAct = +#(define-music-function (parser location text) (markup?) + (add-toc-item! 'tocActMarkup text)) + +\book { + \markuplist \table-of-contents + \tocAct \markup { Atto Primo } + \tocItem \markup { Coro. Viva il nostro Alcide } + \tocItem \markup { Cesare. Presti omai l'Egizzia terra } + \tocAct \markup { Atto Secondo } + \tocItem \markup { Sinfonia } + \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore } + \markup \null +} +@end lilypond + +要素とページ番号の間をドットで埋めることができます: + +@lilypond[verbatim,line-width=10.0\cm] +\header { tagline = ##f } +\paper { + tocItemMarkup = \tocItemWithDotsMarkup +} + +\book { + \markuplist \table-of-contents + \tocItem \markup { Allegro } + \tocItem \markup { Largo } + \markup \null +} +@end lilypond + +@seealso +インストールされているファイル: +@file{ly/toc-init.ly} + +@predefined +@funindex \table-of-contents +@code{\table-of-contents}, +@funindex \tocItem +@code{\tocItem}. +@endpredefined + + +@node 入力ファイルに取り組む +@section 入力ファイルに取り組む +@translationof Working with input files + +@menu +* LilyPond ファイルをインクルードする:: +* 1 つのソースから異なる版を生成する:: +* 特殊文字:: +@end menu + + +@node LilyPond ファイルをインクルードする +@subsection LilyPond ファイルをインクルードする +@translationof Including LilyPond files + +@funindex \include +@cindex including files (ファイルをインクルードする) + +大きなプロジェクトは別々のファイルに分割することができます。@c +他のファイルを参照するには、以下のようにします: + +@example +\include "otherfile.ly" +@end example + +@code{\include "otherfile.ly"} という行は、@c +@file{otherfile.ly} の内容をカレント ファイルの @code{\include} +がある場所に貼り付けるのと等価です。@c +例えば、大きなプロジェクトでは、個々の楽器パートを別々のファイルで記述し、@c +個々の楽器ファイルをまとめる @qq{総譜} ファイルを作成することができます。@c +通常、インクルードされるファイルはいくつかの変数を定義し、@c +それらの変数は総譜ファイルの中で使用されます。@c +インクルードされるファイルの中でタグ付きセクションにマークを付けて、@c +それを楽譜の他の場所で使うことができます +-- @ref{Different editions from one source} を参照してください。 + +カレントのワーキング ディレクトリの中にあるファイルは +@code{\include} コマンドに後にファイル名を指定するだけで@c +参照することができます。@c +他の場所にあるファイルはフル パス参照か相対パス参照 +(ディレクトリ区切りとして、UNIX ではスラッシュ / を使用しますが、@c +DOS/Windows ではバックスラッシュ \ を使用します) によって@c +参照することができます。@c +例えば、@file{stuff.ly} がカレントのワーキング ディレクトリよりも +1 つ上のディレクトリの中にある場合、以下のようにインクルードします: + +@example +\include "../stuff.ly" +@end example + +@noindent +あるいは、インクルードされるオーケストラのすべてのパート ファイルが、@c +カレント ディレクトリ内部の @file{parts} というサブディレクトリの中に@c +配置されている場合、以下のようにインクルードします: + +@example +\include "parts/VI.ly" +\include "parts/VII.ly" +... etc +@end example + +インクルードされるファイルも @code{\include} 文を持つことができます。@c +それら第 2 レベルの @code{\include} 文はそのファイルがメイン ファイルに@c +組み込まれるまで解釈されません。@c +そのため、第 2 レベルの @code{\include} 文で指定するファイル名は@c +すべてメイン ファイルを保持しているディレクトリからの相対参照で@c +指定しなければなりません +-- インクルード ファイルを保持しているディレクトリからではありません。@c +しかしながら、この振る舞いは、オプション @option{-drelative-includes} を@c +コマンド ラインで渡すことによって +(あるいは、メイン入力ファイルの先頭に +@code{#(ly:set-option 'relative-includes #t)} を付け加えることによって) +変更することができます。@c +@code{relative-includes} をセットすることで、@c +各 @code{\include} コマンドのパスは@c +そのコマンドを保持しているファイルからの相対参照になります。@c +この振る舞いを使用することが推奨されていて、@c +lilypond の将来のバージョンではこの振る舞いがデフォルトになります。 + +コマンド ラインから LilyPond を呼び出すときにオプションとして指定した@c +サーチ パスに含まれるディレクトリから@c +ファイルをインクルードすることもできます。@c +サーチ パスを指定した場合、@c +インクルードされるファイルはファイル名だけで指定されます。@c +例えば、サーチ パスで指定する @file{parts} というサブディレクトリの中にある@c +ファイルをインクルードする @file{main.ly} をコンパイルするには、@c +@file{main.ly} を保持しているディレクトリに cd して、以下を入力します: + +@example +lilypond --include=parts main.ly +@end example + +@file{main.ly} の中には以下を記述しておきます: + +@example +\include "VI.ly" +\include "VII.ly" +... etc +@end example + +いくつもの楽譜でインクルードされるファイルは +LilyPond ディレクトリ @file{../ly} の中に置くことになるかもしれません +(このディレクトリが存在する場所はインストールの仕方に依存します +-- @rlearning{Other sources of information} を参照してください)。@c +このディレクトリの中にあるファイルは、@code{\include} 文で@c +ファイル名を指定するだけでインクルードすることができます。@c +この方法で @file{english.ly} のような言語依存のファイルを@c +インクルードしています。 + +LilyPond は、実行開始時に、デフォルトで@c +いくつかのファイルをインクルードします。@c +このインクルードはユーザには明らかにされませんが、@c +コマンド ラインから @code{lilypond --verbose} を実行することによって@c +インクルードされるファイルを明らかにすることができます。@c +@code{--verbose} オプションは、他の多くの情報とともに、@c +LilyPond が使用するパスとファイルのリストを表示します。@c +また、デフォルトでインクルードされるファイルのうち、@c +より重要なファイルについて @rlearning{Other sources of information} +で議論されています。@c +これらのファイルを編集することができますが、@c +これらのファイルに加えられた変更は@c +新しいバージョンの LilyPond をインストールすると失われます。 + +@code{\include} を使用している簡単な例がいくつか +@rlearning{Scores and parts} で示されています。 + + +@seealso +学習マニュアル: +@rlearning{Other sources of information}, +@rlearning{Scores and parts} + + +@knownissues + +インクルードされるファイルに LilyPond のインストール ファイルと同じ名前が@c +与えられている場合、LilyPond のインストール ファイルが優先されます。 + + + +@node 1 つのソースから異なる版を生成する +@subsection 1 つのソースから異なる版を生成する +@translationof Different editions from one source + +同じ音楽ソースから異なるバージョンの楽譜を容易に生成できるようにするために、@c +いくつかの方法が用意されています。@c +長い音楽や注記のセクションをさまざまなやり方で組み合わせる場合には、@c +おそらく変数が最も役に立つでしょう。@c +差し替え用の短い音楽セクションの中から 1 つを選択する場合にはタグが役に立ち、@c +楽曲の一部をいろいろな箇所で組み合わせることもできます。 + +どのような方法をとるにしても、楽譜構造から音楽表記を分離しておくと、@c +音楽表記に手を触れずに楽譜構造を変更することが簡単に行えます。 + +@menu +* 変数を使用する:: +* タグを使用する:: +* グローバル設定を使用する:: +@end menu + +@node 変数を使用する +@unnumberedsubsubsec 変数を使用する +@translationof Using variables + +@cindex variables, use of (変数を使用する) + +音楽のセクションが変数の中で定義されている場合、@c +そのセクションを楽譜の異なる部分で再利用することができます +-- @rlearning{Organizing pieces with variables} を参照してください。@c +例えば、@notation{アカペラ} のボーカル譜はリハーサル目的で@c +すべてのパートをまとめたピアノ譜を持つことがよくあります。@c +これは声楽全般で言えることです。@c +その場合、音楽を入力する必要があるのは 1 回だけです。@c +2 つの変数からの音楽を 1 つの譜に組み込むことができます +-- @ref{Automatic part combining} を参照してください。@c +ここに例を挙げます: + +@lilypond[verbatim,quote] +sopranoMusic = \relative c'' { a4 b c b8( a) } +altoMusic = \relative g' { e4 e e f } +tenorMusic = \relative c' { c4 b e d8( c) } +bassMusic = \relative c' { a4 gis a d, } +allLyrics = \lyricmode {King of glo -- ry } +<< + \new Staff = "Soprano" \sopranoMusic + \new Lyrics \allLyrics + \new Staff = "Alto" \altoMusic + \new Lyrics \allLyrics + \new Staff = "Tenor" { + \clef "treble_8" + \tenorMusic + } + \new Lyrics \allLyrics + \new Staff = "Bass" { + \clef "bass" + \bassMusic + } + \new Lyrics \allLyrics + \new PianoStaff << + \new Staff = "RH" { + \set Staff.printPartCombineTexts = ##f + \partcombine + \sopranoMusic + \altoMusic + } + \new Staff = "LH" { + \set Staff.printPartCombineTexts = ##f + \clef "bass" + \partcombine + \tenorMusic + \bassMusic + } + >> +>> +@end lilypond + +音楽表記には変更を加えずに、楽譜構造の文を変えるだけで、@c +ボーカル パートだけあるいはピアノ パートだけの楽譜を作り出すことができます。 + +長い楽譜では、変数定義をそれぞれ別々のファイルの中に置いて、@c +それらのファイルをインクルードすることになるかもしれません +-- @ref{Including LilyPond files} を参照してください。 + +@node タグを使用する +@unnumberedsubsubsec タグを使用する +@translationof Using tags + +@funindex \tag +@funindex \keepWithTag +@funindex \removeWithTag +@funindex \pushToTag +@funindex \appendToTag +@cindex tag (タグ) +@cindex keep tagged music (タグの付いた音楽を保持する) +@cindex remove tagged music (タグの付いた音楽を排除する) +@cindex splice into tagged music (タグの付いた音楽を組み合わせる) + +@code{\tag #'@var{partA}} コマンドは音楽表記に +@var{partA} という名前を付けます。@c +この方法でタグを付けられた表記は、後で @code{\keepWithTag #'@var{name}} と +@code{\removeWithTag #'@var{name}} のどちらかを用いて、@c +名前によって選択あるいは排除することができます。@c +タグの付いた音楽にそのようなフィルタを適用した結果は以下のようになります: + +@multitable @columnfractions .5 .5 +@headitem フィルタ + @tab 結果 +@item +@code{\keepWithTag #'@var{name}} が前に付くタグ付きの音楽 + @tab タグの付いていない音楽と @var{name} というタグの付いた音楽が@c +インクルードされます。@c +他のタグ名を持つタグ付き音楽は排除されます。 +@item +@code{\removeWithTag #'@var{name}} が前に付くタグ付きの音楽 + @tab タグの付いていない音楽と @var{name} 以外のタグを持つ音楽が@c +インクルードされます。@c +@var{name} というタグの付いた音楽は排除されます。 +@item +@code{\keepWithTag} と @code{\removeWithTag} のどちらも@c +前に付かないタグ付きの音楽 + @tab タグの付いた音楽とタグの付いていない音楽すべてがインクルードされます。 +@end multitable + +@code{\tag}、@code{\keepWithTag} それに @code{\removeWithTag} コマンドの引数は@c +シンボル (@code{#'score} や @code{#'part} など) とその後に続けて@c +音楽表記であるべきです。 + +以下の例では、楽曲を 2 つのバージョンで示しています。@c +1 つはトリルを通常の記譜法で示していて、@c +もう 1 つはトリルを明示的に展開しています: + +@lilypond[verbatim,quote] +music = \relative g' { + g8. c32 d + \tag #'trills {d8.\trill } + \tag #'expand {\repeat unfold 3 {e32 d} } + c32 d + } + +\score { + \keepWithTag #'trills \music +} +\score { + \keepWithTag #'expand \music +} +@end lilypond + +@noindent +@code{\keepWithTag} を使う代わりに、@c +音楽セクションを排除する方が楽な場合もあります: + +@lilypond[verbatim,quote] +music = \relative g' { + g8. c32 d + \tag #'trills {d8.\trill } + \tag #'expand {\repeat unfold 3 {e32 d} } + c32 d + } + +\score { + \removeWithTag #'expand + \music +} +\score { + \removeWithTag #'trills + \music +} +@end lilypond + +タグ フィルタリングはアーティキュレーション、テキストなどにも@c +適用することができます。@c +フィルタリングを行うにはアーティキュレーションの前に + +@example +-\tag #'@var{your-tag} +@end example + +を置きます。@c +例えば、以下は条件付の運指指示を持つ音符と条件付注記を持つ音符を定義しています: + +@example +c1-\tag #'finger ^4 +c1-\tag #'warn ^"Watch!" +@end example + +複数の @code{\tag} エントリで、表記に複数のタグを付ける場合もあります: + +@lilypond[quote,verbatim] +music = \relative c'' { + \tag #'a \tag #'both { a4 a a a } + \tag #'b \tag #'both { b4 b b b } +} +<< +\keepWithTag #'a \music +\keepWithTag #'b \music +\keepWithTag #'both \music +>> +@end lilypond + +単一の音楽表記に複数の @code{\removeWithTag} フィルタを適用することによって、@c +いくつかの異なる名前のタグが付いたセクションを排除することができます: + +@lilypond[verbatim,quote] +music = \relative c'' { +\tag #'A { a4 a a a } +\tag #'B { b4 b b b } +\tag #'C { c4 c c c } +\tag #'D { d4 d d d } +} +{ +\removeWithTag #'B +\removeWithTag #'C +\music +} +@end lilypond + +単一の音楽表記に複数の @code{\keepWithTag} フィルタを適用すると、@c +タグ付きセクションは @emph{すべて} 排除されます。@c +なぜなら、最初のフィルタはあるタグ名以外を持つセクションを排除し、@c +2 番目のフィルタがそのタグ名を持つセクションを排除するからです。 + +既存の音楽表記のある特定の場所にいくつか音を組み込みたいことがあります。@c +@code{\pushToTag} と @code{\appendToTag} を使って、@c +既存の音楽構造の @code{要素} の前または後に素材を追加することができます。@c +すべての音楽構造が @code{要素} を持つわけではありませんが、@c +連続するか同時進行する音楽構造はまず間違いなく @code{要素} を持ちます: + +@lilypond[verbatim,quote] +test = { \tag #'here { \tag #'here <> } } + +{ + \pushToTag #'here c' + \pushToTag #'here e' + \pushToTag #'here g' \test + \appendToTag #'here c' + \appendToTag #'here e' + \appendToTag #'here g' \test +} +@end lilypond + +どちらのコマンドもタグ、組み込む素材、それにタグ付けされた音楽表記を +取り、タグが出現するたびに素材を組み込みます。@c +これらのコマンドは変更するものを全てコピーするので、@c +オリジナルの @code{\test} が元の意味を保持し続けることを保証します。 + +@seealso +学習マニュアル: +@rlearning{Organizing pieces with variables} + +記譜法リファレンス: +@ref{Automatic part combining}, +@ref{Including LilyPond files} + +@ignore +@c This warning is more general than this placement implies. +@c Rests are not merged whether or not they come from tagged sections. +@c Should be deleted? -td + +@knownissues +Multiple rests are not merged if you create a score with more +than one tagged section at the same place. + +複数のタグ付きセクションからを生成した場合、@c +同じ場所にある複数の休符はマージされません。 + +@end ignore + + +@node グローバル設定を使用する +@unnumberedsubsubsec グローバル設定を使用する +@translationof Using global settings + +@cindex include-settings + +別のファイルからグローバル設定をインクルードすることができます: + +@example +lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly +@end example + +ページ サイズ、フォント、書体などのような設定のグループを別々のファイルに@c +保存することができます。@c +こうすることにより、適当な設定ファイルを指定するだけで、@c +同じ楽譜から異なる版を作り出すことができます。 + +このテクニックはスタイル シートでも使えます。@c +@rlearning{Style sheets} を参照してください。 + +@seealso +学習マニュアル: +@rlearning{Organizing pieces with variables}, +@rlearning{Style sheets} + +記譜法リファレンス: +@ref{Including LilyPond files} + + +@node 特殊文字 +@subsection 特殊文字 +@translationof Special characters + +@cindex special characters (特殊文字) +@cindex non-ASCII characters (非 ASCII 文字) + +@menu +* テキスト エンコーディング:: +* Unicode:: +* ASCII エイリアス:: +@end menu + + +@node テキスト エンコーディング +@unnumberedsubsubsec テキスト エンコーディング +@translationof Text encoding + +@cindex UTF-8 + +LilyPond は Unicode 協会と ISO/IEC 10646 によって定義された@c +文字レパートリを使用します。@c +この文字レパートリは、ほとんどすべての現代言語と他の多くの言語で@c +使用される文字セットに対して、固有の名前とコード位置を定義しています。@c +Unicode はいくつかの異なるエンコーディングを用いて実装することができます。@c +LilyPond は UTF-8 エンコーディング +(UTF は Unicode Transformation Format を意味します) を使用します +-- UTF-8 はすべての共通ラテン文字を 1 バイトで表し、@c +他の文字を可変バイト長形式 (最大 4 ビット) で表します。 + +文字の実際の見た目は利用可能なある特定のフォントの中にあるグリフ (図柄) +によって決定されます +-- フォントはグリフを指す Unicode コードのサブセット (部分集合) の写像を@c +定義しています。@c +LilyPond は多言語テキストを、Pango ライブラリを用いて、@c +レイアウトして描画します。 + +Lilypond は入力のエンコーディング変換をまったく行いません。@c +これは非 ASCII 文字を含むすべてのテキスト + -- タイトル、歌詞テキストあるいは演奏指示 -- +を UTF-8 でエンコードして入力する必要があるということを意味します。@c +そのようなテキストを入力する最も容易な方法は Unicode を認識するエディタを@c +用いて、ファイルを UTF-8 で保存することです。@c +人気のある現代的なエディタのほとんどが UTF-8 をサポートします + -- 例えば、vim, Emacs, jEdit, GEdit です。@c +NT より後の MS Windows システムはすべて@c +ネイティブ キャラクタ エンコーディングとして Unicode を使用します。@c +そのため、Notepad でさえ UTF-8 フォーマットのファイルを@c +編集して保存することができます。@c +Windows 用のもっと機能的なエディタに BabelPad があります。 + +非 ASCII 文字を保持している LilyPond 入力ファイルが UTF-8 フォーマットで@c +保存されていない場合、エラー メッセージ + +@example +FT_Get_Glyph_Name () error: invalid argument +@end example + +が表示されます。 + +ここでキリル文字、ヘブライ文字、ポルトガル語のテキストを表示する例を挙げます: + +@c KEEP LY +@lilypond[quote] +%c No verbatim here as the code does not display correctly in PDF +% キリル文字 +bulgarian = \lyricmode { + Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон. +} + +% ヘブライ文字 +hebrew = \lyricmode { + זה כיף סתם לשמוע איך תנצח קרפד ×¢×¥ טוב בגן. +} + +% ポルトガル語 +portuguese = \lyricmode { + à vo -- cê uma can -- ção legal +} + +\relative { + c2 d e f g f e +} +\addlyrics { \bulgarian } +\addlyrics { \hebrew } +\addlyrics { \portuguese } +@end lilypond + + +@node Unicode +@unnumberedsubsubsec Unicode +@translationof Unicode + +@cindex Unicode (ユニコード) + +単一の文字 -- その文字に対する Unicode コード ポイントを知っているが、@c +使用しているエディタではその文字を使用できない -- を入力するには、@c +@code{\markup} ブロック内部で @code{\char ##xhhhh} あるいは +@code{\char ##dddd} を使用します +-- ここで @code{hhhh} はその文字に対する 16 進コードであり、@c +@code{dddd} はそれに対応する 10 進数値です。@c +先頭の 0 は省略可能ですが、16 進表記では 4 文字で指定する方法が一般的です。@c +(@code{\char} の後に UTF-8 エンコーディングのコード ポイントを使うべきでは@c +ありません。@c +なぜなら、UTF-8 エンコーディングはバイト数を表すための余分なビットを@c +保持しているからです。) +任意の文字に対する 16 進のコード ポイントを調べるための、@c +Unicode コード表と文字名インデックスは Unicode コンソーシアム Web サイト +@uref{http://www.unicode.org/} にあります。 + + +例えば、@code{\char ##x03BE} と @code{\char #958} はどちらも +Unicode U+03BE の文字を入力します +-- この文字は Unicode 名 @qq{Greek Small Letter Xi} +(ギリシャ小文字クシー) です。@c + +この方法で任意の Unicode コード ポイントを入力することができます。@c +すべての特殊文字がこの方法で入力されている場合、@c +入力ファイルを UTF-8 フォーマットで保存する必要はありません。@c +もちろん、入力された文字を保持しているフォントがすべて@c +インストールされていて、LilyPond で利用可能になっている必要があります。 + +以下の例は UTF-8 コード化された文字を 4 箇所 +-- リハーサル記号の中、アーティキュレーション テキストとして、歌詞の中、@c +楽譜の下にある独立したテキストの中 -- +で使用しています: + +@lilypond[quote,verbatim] +\score { + \relative c'' { + c1 \mark \markup { \char ##x03EE } + c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } } + } + \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } +} +\markup { "Copyright 2008--2012" \char ##x00A9 } +@end lilypond + +@cindex copyright sign (著作権記号) + +著作権についての注意書きの中で著作権記号を入力するには、以下のようにします: + +@example +\header @{ + copyright = \markup @{ \char ##x00A9 "2008" @} +@} +@end example + + +@node ASCII エイリアス +@unnumberedsubsubsec ASCII エイリアス +@translationof ASCII aliases + +特殊文字の ASCII エイリアスのリストを含めることができます: + +@c KEEP LY +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} + +\markup "&flqq; – &OE;uvre incomplète… &frqq;" + +\score { + \new Staff { \repeat unfold 9 a'4 } + \addlyrics { + This is al -- so wor -- kin'~in ly -- rics: –_&OE;… + } +} + +\markup \column { + "特殊文字への置換を無効にすることができます:" + "– &OE; …" + \override #'(replacement-alist . ()) "– &OE; …" +} +@end lilypond + +また、エイリアスを作ることもできます。@c +グローバルに作るか: + +@lilypond[quote,verbatim] +\paper { + #(add-text-replacements! + '(("100" . "hundred") + ("dpi" . "dots per inch"))) +} +\markup "A 100 dpi." +@end lilypond + +ローカルで作ります: + +@lilypond[quote,verbatim] +\markup \replace #'(("100" . "hundred") + ("dpi" . "dots per inch")) "A 100 dpi." +@end lilypond + +@seealso +記譜法リファレンス: +@ref{List of special characters} + +インストールされているファイル: +@file{ly/text-replacements.ly} + + +@node 出力を制御する +@section 出力を制御する +@translationof Controlling output + +@menu +* 音楽の断片を抽出する:: +* 校正済みの音楽をスキップする:: +* 他の出力フォーマット:: +* 記譜フォントを置換する:: +@end menu + +@node 音楽の断片を抽出する +@subsection 音楽の断片を抽出する +@translationof Extracting fragments of music + +大きな楽譜の中の小さな範囲を、出力から直接引用することができます。@c +これは紙の楽譜の一部をはさみで切り抜くことに相当します。 + +これは切り抜く小節を定義することによって実行されます。@c +例えば、以下の定義は、 + + +@verbatim +\layout { + clip-regions + = #(list + (cons + (make-rhythmic-location 5 1 2) + (make-rhythmic-location 7 3 4))) +} +@end verbatim + +@noindent +第 5 小節の中間から第 7 小節までを抽出します。@c +@code{5 1 2} は第 5 小節の先頭から 1/2 音符の位置を意味し、@c +@code{7 3 4} は第 7 小節の先頭から 4 分音符 3 つ分の位置を意味します。 + +リズムによる位置のペアをリストに追加することによって、@c +更に多くの切り抜き範囲を定義することができます。 + +この機能を使用するには、@c +LilyPond を @option{-dclip-systems} を付けて呼び出す必要があります。@c +切り抜きは EPS ファイルとして出力され、@c +更にフォーマットが指定されている場合には PDF や PNG に変換されます。 + +出力フォーマットについての更なる情報は、@c +@rprogram{lilypond を呼び出す} を参照してください。 + +@node 校正済みの音楽をスキップする +@subsection 校正済みの音楽をスキップする +@translationof Skipping corrected music + +@funindex skipTypesetting +@funindex showFirstLength +@funindex showLastLength + +音楽を入力あるいはコピーしているとき、@c +閲覧、校正する必要があるのは、たいてい終わり近くの音楽 +(そこに音符を追加している場所) だけです。@c +校正プロセスを速めるために、@c +最後の数小節以外の譜刻をスキップすることができます。@c +これはソース ファイルの中に以下を置くことによって実現できます: + +@verbatim +showLastLength = R1*5 +\score { ... } +@end verbatim + +@noindent +これは入力ファイルの中にあるそれぞれの @code{\score} の最後の 5 小節だけを@c +描画します (4/4 拍子と仮定して)。@c +長い楽曲の場合、小さな部分だけを描画するのにかかる時間は@c +楽曲をすべて描画するのにかかる時間よりも非常に短くなります。@c +すでに譜刻済みの楽譜の開始部分に取り掛かる (例えば、新しいパートを追加する) +ときには、@code{showFirstLength} プロパティも役に立つかもしれません。 + +楽譜の中のいくつかのパートをスキップは、プロパティ @code{Score.skipTypesetting} +を用いたより細かなやり方で制御することができます。@c +このプロパティがセットされていると、譜刻はまったく行われません。 + +このプロパティは MIDI ファイルへの出力を制御するためにも用いられます。@c +このプロパティはすべてのイベント -- テンポの変更や楽器の変更を含む -- を@c +スキップするということに注意してください。@c +くれぐれも注意してください。 + +@lilypond[quote,relative=2,ragged-right,verbatim] +c8 d +\set Score.skipTypesetting = ##t +e8 e e e e e e e +\set Score.skipTypesetting = ##f +c8 d b bes a g c2 +@end lilypond + +多声の音楽では、@code{Score.skipTypesetting} はすべてのボイスと譜に@c +影響を与えて、より多くの時間を節約します。 + + +@node 他の出力フォーマット +@subsection 他の出力フォーマット +@translationof Alternative output formats + +@cindex scalable vector graphics output (SVG 出力) +@cindex SVG output (SVG 出力) +@cindex encapsulated postscript output (EPS 出力) +@cindex EPS output (EPS 出力) + +譜刻される楽譜のデフォルト出力フォーマットは、@c +Portable Document Format (PDF) と PostScript (PS) です。@c +コマンド ライン オプションを指定することにより、@c +Scalable Vector Graphics (SVG), Encapsulated PostScript (EPS) それに +Portable Network Graphics (PNG) 出力フォーマットが利用可能です。@c +@rprogram{Basic command line options for LilyPond} を参照してください。 + + +@node 記譜フォントを置換する +@subsection 記譜フォントを置換する +@translationof Replacing the notation font + +LilyPond で使用される Feta フォントの代わりに Gonville に使うことができます。@c +Gonville は以下からダウンロードできます: +@example +@uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} +@end example + +Gonville のサンプル小節です: + +@c NOTE: these images are a bit big, but that's important +@c for the font comparison. -gp +@sourceimage{Gonville_after,,,} + +LilyPond の Feta フォントのサンプル小節です: + +@sourceimage{Gonville_before,,,} + +@subsubheading MacOS でのインストール手順 + +ZIP ファイルをダウンロードして、伸張します。@c +@code{lilyfonts} ディレクトリを @file{@var{SHARE_DIR}/lilypond/current} に@c +コピーします +-- 更なる情報は、@rlearning{Other sources of information} を参照してください。@c +既存の @code{fonts} ディレクトリを @code{fonts_orig} にリネームして、@c +@code{lilyfonts} ディレクトリを @code{fonts} にリネームします。@c +Feta フォントに戻すには、@code{fonts_orig} を @code{fonts} に戻します。 + +@seealso +学習マニュアル: +@rlearning{Other sources of information} + +@knownissues +Gonville では @q{古代の音楽} を記譜することはできません。@c +Gonville フォント ファミリーでは、@c +これからリリースされる LilyPond の新しい図柄は提供されないかもしれません。@c +ライセンス条件等を含む Gonville の更なる情報は、@c +製作者の Web サイトを参照してください。 + + +@node MIDI 出力 +@section MIDI 出力 +@translationof MIDI output + +@cindex Sound (サウンド) +@cindex MIDI + +MIDI (Musical Instrument Digital Interface) はデジタル楽器接続 / 制御の@c +標準インタフェイスです。@c +MIDI ファイルはいくつかのトラックの中にある音符の連なりです。@c +MIDI ファイルは実際はサウンド ファイルではありません。@c +音符の連なりと実際のサウンドの翻訳を行うには専用のソフトウェアが必要になります。 + +LilyPond で記述した音楽は MIDI ファイルに変換することができ、@c +入力されたものを聴くことができます。@c +これは音楽をチェックするのに便利です。オクターブの外れや臨時記号の付け間違いは +MIDI 出力を聴いたときに際立ちます。 + +標準 MIDI 出力には粗雑さがあります。@c +オプションで @ref{The Articulate script} を用いることにより、@c +強化されたリアルな MIDI 出力を得ることができます。 + +MIDI 出力は譜毎に 1 つのチャンネルを割り当て、@c +ドラムのためにチャンネル 10 を予約します。@c +デバイス 1 つにつき MIDI チャンネルは 16 しかないため、@c +楽譜が 16 以上の譜を保持している場合、MIDI チャンネルは再利用されます。 + +@menu +* MIDI ファイルを作り出す:: +* MIDI ブロック:: +* 何が MIDI に出力されるのか?:: +* MIDI での繰り返し:: +* MIDI での音の強弱を制御する:: +* MIDI での打楽器:: +* 奏法スクリプト:: +@end menu + +@node MIDI ファイルを作り出す +@subsection MIDI ファイルを作り出す +@translationof Creating MIDI files + +LilyPond 入力ファイルから MIDI ファイルを作り出すには、@c +score に @code{\midi} ブロックを付け加えます。@c +例えば、以下のように: + +@example +\score @{ + @var{...music...} + \midi @{ @} +@} +@end example + +@code{\layout} ブロックを持たない @code{\score} の中に +@code{\midi} ブロックがある場合、MIDI 出力だけが生成されます。@c +楽譜も必要な場合は、@code{\layout} ブロックも存在している必要があります。 + +@example +\score @{ + @var{...music...} + \midi @{ @} + \layout @{ @} +@} +@end example + +ピッチ、リズム、タイ、強弱記号、テンポの変更は解釈されて@c +正確に MIDI 出力に翻訳されます。@c +強弱記号、クレッシェンド、デクレッシェンドは MIDI ボリューム レベルに@c +翻訳されます。@c +強弱記号は利用可能な MIDI ボリューム レンジ内のある固定値に翻訳されます。@c +クレッシェンドとデクレッシェンドはそれらの開始点と終了点の間でボリュームを@c +線形に変化させます。@c +MIDI 出力における強弱記号の効果を完全に削除することができます + -- @ref{MIDI block} を参照してください。 + +初期のテンポと後のテンポ変化は、音楽記譜内部の @code{\tempo} コマンドで@c +指定することができます。@c +通常このコマンドはメトロノーム記号を表示させますが、@c +表示を抑制することができます +-- @ref{Metronome marks} を参照してください。@c +初期 MIDI テンポあるいは MIDI 全体のテンポを指定するための代替手段が@c +この後で記述されています -- @ref{MIDI block} を参照してください。 + +Windows の制限により、Windows での MIDI ファイルのデフォルトの拡張子は +@code{.mid} です。@c +他の OS では、拡張子は @code{.midi} となります。@c +他の拡張子を使いたいのであれば、入力ファイルの最上位で、@c +@code{\book} ブロック, @code{\bookpart} ブロック、それに @code{\score} +ブロックの前に以下の行を挿入します: + +@example +#(ly:set-option 'midi-extension "midi") +@end example + +上記の行は、MIDI ファイルのデフォルトの拡張子を @code{.midi} にします。 + +上記の方法の代わりとして、@c +コマンド ラインで以下のオプションを与える方法があります: + +@example +lilypond … -dmidi-extension=midi lilyFile.ly +@end example + + +@unnumberedsubsubsec 楽器名 +@c @unnumberedsubsubsec Instrument names + +@cindex instrument names (楽器名) +@funindex Staff.midiInstrument + +@code{Staff.midiInstrument} プロパティに楽器名を設定することで、@c +使用する MIDI 楽器が指定されます。@c +楽器名は @ref{MIDI instruments} にあるリストから選択しなければなりません。 + +@example +\new Staff @{ + \set Staff.midiInstrument = #"glockenspiel" + @var{...notes...} +@} +@end example + +@example +\new Staff \with @{midiInstrument = #"cello"@} @{ + @var{...notes...} +@} +@end example + +選択された楽器が MIDI 楽器のリストにある楽器に一致しない場合、@c +グランド ピアノ (@code{"acoustic grand"}) 楽器が使用されます。 + + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-midi-output-to-one-channel-per-voice.ly} + +@knownissues + +@c In 2.11 the following no longer seems to be a problem -td +@ignore +Unterminated (de)crescendos will not render properly in the midi file, +resulting in silent passages of music. The workaround is to explicitly +terminate the (de)crescendo. For example, + +終端の無い(デ)クレッシェンドは適切に MIDI ファイルを作り出しません。@c +結果として無音の音楽パッセージとなります。@c +回避方法として、明示的に(デ)クレッシェンドを終了させます。@c +例えば、 + +@example +@{ a\< b c d\f @} +@end example + +@noindent +will not work properly but +これは正しく機能しませんが、 + +@example +@{ a\< b c d\!\f @} +@end example + +@noindent +will. +これは正しく機能します。 +@end ignore + +MIDI ボリュームの変化は音符の開始点でのみ起こります。@c +そのため、クレッシェンドとデクレッシェンドは@c +単一の音符のボリューム変化には効果を持ちません。 + +すべての MIDI プレイヤが MIDI 出力の中にあるテンポ変化を@c +正しく処理するわけではありません。@c +正しく機能するプレイヤとして知られているものには MS Windows の Media Player や +@uref{http://@/timidity@/.sourceforge@/.net/,timidity} があります。 + +@node MIDI ブロック +@subsection MIDI ブロック +@translationof MIDI block + +@cindex MIDI block (MIDI ブロック) + +MIDI 出力が必要な場合、@c +score 内部に @code{\midi} ブロックを置く必要があります。@c +MIDI ブロックはレイアウト ブロックに似ていますが、それよりも単純です。@c +しばしば、@code{\midi} ブロックは空のままですが、コンテキストの再編成 +-- 新しいコンテキスト定義やプロパティの値を設定するためのコード -- +を保持することもできます。@c +例えば以下の例は、テンポ指示を譜刻することなしに、@c +MIDI ファイルの初期テンポを設定します: + +@example +\score @{ + @var{...music...} + \midi @{ + \tempo 4 = 72 + @} +@} +@end example + +この例では、テンポは 1 分間あたり 72 個の 4 分音符にセットされています。@c +@code{\tempo} は実際、コンパイルの最中にプロパティを設定する音楽コマンドです: +@code{\midi} ブロックのような出力定義コンテキストの中にある @code{\tempo} は@c +当然のこととして、コンテキストを変更するものとして解釈されます。 + +@cindex MIDI context definitions (MIDI コンテキスト定義) + +@code{\midi} ブロック内部でのコンテキスト定義は、@c +@code{\layout} ブロック内部でのコンテキスト定義の構文とまったく同じです。@c +サウンドのモジュールへの翻訳は performer と呼ばれます。@c +MIDI 出力のためのコンテキストは +@file{../ly/performer-init.ly} で定義されています +-- @rlearning{Other sources of information} を参照してください。@c +例えば、MIDI 出力から強弱記号の効果を削除するには、@c +@code{\midi@{ @}} ブロックの中に以下のコードを挿入します。 + +@example +\midi @{ + ... + \context @{ + \Voice + \remove "Dynamic_performer" + @} +@} +@end example + +MIDI 出力は、@code{\score} コマンドで定義された score ブロック内部に +@code{\midi} ブロックが存在する場合にのみ生成されます。 + +@ignore +@code{\midi} ブロックが明示的にインスタンス化された score コンテキストの中 +(例えば、@code{\new Score} ブロックの中) に配置された場合、@c +その LilyPond ファイルはエラーになります。@c +これを解決するには、@code{\new Score} と @code{\midi} コマンドを +@code{\score} ブロックの中に置きます。 +@end ignore + +@example +\score @{ + @{ @dots{}notes@dots{} @} + \midi @{ @} +@} +@end example + + +@node 何が MIDI に出力されるのか? +@subsection 何が MIDI に出力されるのか? +@translationof What goes into the MIDI output? + +@c TODO Check grace notes - timing is suspect? + +@unnumberedsubsubsec MIDI でサポートされるもの +@c @unnumberedsubsubsec Supported in MIDI + +@cindex Pitches in MIDI (MIDI でのピッチ) +@cindex MIDI, Pitches (MIDI でのピッチ) +@cindex Quarter tones in MIDI (MIDI での4 分音) +@cindex MIDI, quarter tones (MIDI での4 分音) +@cindex Microtones in MIDI (MIDI での微分音) +@cindex MIDI, microtones (MIDI での微分音) +@cindex Chord names in MIDI (MIDI でのコード ネーム) +@cindex MIDI, chord names (MIDI でのコード ネーム) +@cindex Rhythms in MIDI (MIDI でのリズム) +@cindex MIDI, Rhythms (MIDI でのリズム) +@cindex Articlulate scripts (奏法スクリプト) +@cindex MIDI, articulations (MIDI での奏法) +@cindex articulations in MIDI (MIDI での奏法) +@cindex trills in MIDI (MIDI でのトリル) +@cindex turns in MIDI (MIDI でのターン) +@cindex rallentando in MIDI (MIDI でのラレンタンド) +@cindex accelerando in MIDI (MIDI でのアッチェレランド) +@c TODO etc + +以下の記譜要素が MIDI 出力に反映されます: + +@itemize +@item ピッチ +@item 微分音 (@ref{Accidentals} を参照してください。@c +演奏にはピッチ ベンドをサポートするプレイヤが必要になります。) +@item コード名で入力された和音 +@item 音符の演奏時間として入力されたリズム -- 連符を含みます +@item @q{@code{:}[@var{number}]} を使わずに入力されたトレモロ +@item タイ +@item 強弱記号 +@item 複数の音符にかかるクレッシェンド、デクレッシェンド +@item テンポ記号で入力されたテンポ変化 +@item 歌詞 +@end itemize + +@ref{The Articulate script} を用いることで、@c +上記のリストにいくつかの要素が追加されます: + +@itemize +@item アーティキュレーション (スラー、スタッカート等) +@item トリル、ターン +@item ラレンタンドとアッチェレランド +@end itemize + +@unnumberedsubsubsec MIDI でサポートされないもの +@c @unnumberedsubsubsec Unsupported in MIDI + +@c TODO index as above + +以下の記譜要素は MIDI 出力に影響を与えません: + +@itemize +@item 注記 -- 例えば swing -- として入力されたリズム +@item テンポ記号を使わずに注記として入力されたテンポ変化 +@item スタッカートと他のアーティキュレーションや装飾 +@item スラーとフレージング スラー +@item 単一の音符に付けられたクレッシェンド、デクレッシェンド +@item @q{@code{:}[@var{number}]} を使って入力されたトレモロ +@item 通奏低音 +@item 微分音の和音 +@end itemize + + +@node MIDI での繰り返し +@subsection MIDI での繰り返し +@translationof Repeats in MIDI + +@cindex repeats in MIDI (MIDI での繰り返し) +@funindex \unfoldRepeats + +ちょっとした追加で、@c +すべてのタイプの繰り返しを MIDI 出力に反映させることができます。@c +これは @code{\unfoldRepeats} 音楽関数を適用することによって@c +達成することができます。@c +この関数はすべての繰り返しを展開します。 + +@lilypond[quote,verbatim] +\unfoldRepeats { + \repeat tremolo 8 { c'32 e' } + \repeat percent 2 { c''8 d'' } + \repeat volta 2 { c'4 d' e' f' } + \alternative { + { g' a' a' g' } + { f' e' d' c' } + } +} +\bar "|." +@end lilypond + +複数のボイスを持つ score で、繰り返しを正しく MIDI 出力に展開するには、@c +@emph{各ボイス} の繰り返し指示が完全に記譜されている必要があります。 + +MIDI のために @code{\unfoldRepeats} を使用する楽譜ファイルを作成する場合、@c +2 つの @code{\score} ブロックが必要になります: +1 つは MIDI のため (繰り返しを展開します) で、@c +もう 1 つは楽譜のため +(差し替え、トレモロ、パーセント記号の繰り返しを使用します) です。@c +例えば、以下のようにします: + +@example +\score @{ + @var{..music..} + \layout @{ .. @} +@} +\score @{ + \unfoldRepeats @var{..music..} + \midi @{ .. @} +@} +@end example + +@node MIDI での音の強弱を制御する +@subsection MIDI での音の強弱を制御する +@translationof Controlling MIDI dynamics + +@c MIDI dynamics: MIDI での音の強弱? +MIDI での音の強弱は @code{Dynamic_performer} +-- これはデフォルトでは Voice コンテキストの中に存在します -- +によって実装されます。@c +MIDI 全体のボリューム、強弱記号による相対ボリューム、@c +楽器間の相対ボリュームを制御することができます。 + +@unnumberedsubsubsec 強弱記号 +@c @unnumberedsubsubsec Dynamic marks + +強弱記号は利用可能な MIDI ボリューム レンジ内のある固定の分数に翻訳されます。@c +デフォルトでの分数の範囲は、@notation{ppppp} に対する 0.25 から、@c +@notation{fffff} に対する 0.95 までです。@c +強弱記号とそれに対応する分数のセットを @file{../scm/midi.scm} で@c +調べることができます +-- @rlearning{Other sources of information} を参照してください。@c +引数として強弱記号をとり、それに対する分数を返す関数を作成し、@c +その関数を @code{Score.dynamicAbsoluteVolumeFunction} に@c +セットすることによって、分数のセットを変更あるいは拡張することができます。 + +例えば、@notation{リンフォルツァンド} 強弱記号 -- @code{\rfz} -- を@c +使う必要がある場合、@c +この強弱記号はデフォルト セットの中に含まれていないため、@c +MIDI ボリュームに影響を与えません。@c +同様に @code{make-dynamic-script} で新しい強弱記号を定義した場合、@c +その強弱記号もデフォルト セットには含まれません。@c +以下の例は、そのような強弱記号に対する MIDI ボリュームを追加する方法を@c +示しています。@c +以下の Scheme 関数は、rfz の強弱記号があった場合は分数に 0.9 をセットし、@c +そうでない場合はデフォルトの関数を呼び出します。 + +@lilypond[verbatim,quote] +#(define (myDynamics dynamic) + (if (equal? dynamic "rfz") + 0.9 + (default-dynamic-absolute-volume dynamic))) + +\score { + \new Staff { + \set Staff.midiInstrument = #"cello" + \set Score.dynamicAbsoluteVolumeFunction = #myDynamics + \new Voice { + \relative c'' { + a4\pp b c-\rfz + } + } + } + \layout {} + \midi {} +} +@end lilypond + +分数テーブル全体を再定義する必要がある場合、@c +上記の方法の代わりに @file{../scm/midi.scm} の中にある +@notation{default-dynamic-absolute-volume} プロシージャと@c +そのモデルとなる関連テーブルを使用する方が良いでしょう。@c +このセクションの最後の例で、その方法を示しています。 + +@unnumberedsubsubsec MIDI 全体でのボリューム +@c @unnumberedsubsubsec Overall MIDI volume + +強弱記号に対する MIDI 全体の最小ボリュームと最大ボリュームは +@code{Score} レベルでプロパティ @code{midiMinimumVolume} と +@code{midiMaximumVolume} を設定することで制御できます。@c +これらのプロパティは強弱記号に対してのみ効果を発揮します。@c +そのため、楽譜の開始からそれらのプロパティを適用するには、@c +楽譜の開始点に強弱記号を置く必要があります。@c +各強弱記号に対応する分数は以下の式で算出されます: + +@example +midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction +@end example + +以下の例では、MIDI 全体のボリュームの範囲は 0.2 - 0.5 の範囲に制限されています。 + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \key g \major + \time 2/2 + \set Staff.midiInstrument = #"flute" + \new Voice \relative c''' { + r2 g\mp g fis~ + fis4 g8 fis e2~ + e4 d8 cis d2 + } + } + \new Staff { + \key g \major + \set Staff.midiInstrument = #"clarinet" + \new Voice \relative c'' { + b1\p a2. b8 a + g2. fis8 e + fis2 r + } + } + >> + \layout {} + \midi { + \tempo 2 = 72 + \context { + \Score + midiMinimumVolume = #0.2 + midiMaximumVolume = #0.5 + } + } +} +@end lilypond + +@unnumberedsubsubsec 楽器の音の強さを均一化する (i) +@c @unnumberedsubsubsec Equalizing different instruments (i) + +@code{Staff} コンテキストの中で最小 MIDI ボリューム プロパティと@c +最大 MIDI ボリューム プロパティが設定されている場合、@c +MIDI 楽器間の相対ボリュームを制御することができます。@c +これは基本的な楽器イコライザであり、@c +MIDI 出力の品質を著しく高めることができます。 + +以下の例では、クラリネットのボリュームはフルートのボリュームよりも@c +相対的に低く設定されています。@c +これを正しく機能させるには、それぞれの楽器の最初の音符に@c +強弱記号を置く必要があります。 + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \key g \major + \time 2/2 + \set Staff.midiInstrument = #"flute" + \set Staff.midiMinimumVolume = #0.7 + \set Staff.midiMaximumVolume = #0.9 + \new Voice \relative c''' { + r2 g\mp g fis~ + fis4 g8 fis e2~ + e4 d8 cis d2 + } + } + \new Staff { + \key g \major + \set Staff.midiInstrument = #"clarinet" + \set Staff.midiMinimumVolume = #0.3 + \set Staff.midiMaximumVolume = #0.6 + \new Voice \relative c'' { + b1\p a2. b8 a + g2. fis8 e + fis2 r + } + } + >> + \layout {} + \midi { + \tempo 2 = 72 + } +} +@end lilypond + +@unnumberedsubsubsec 楽器の音の強さを均一化する (ii) +@c @unnumberedsubsubsec Equalizing different instruments (ii) + +MIDI 最小/最大ボリューム プロパティが設定されていない場合、@c +デフォルトでは、LilyPond はいくつかの楽器に軽度の均一化を適用します。@c +適用を受ける楽器とその equalization は @file{../scm/midi.scm} の中にある@c +テーブル @notation{instrument-equalizer-alist} に示されています。 + +引数として MIDI 楽器名だけを受け入れて、その楽器に適用する@c +最小/最大ボリュームの分数ペアを返す Scheme プロシージャを +@code{Score} コンテキストの中にある +@code{instrumentEqualizer} にセットすることで、@c +この基本的なデフォルト イコライザを置き換えることができます。@c +この置き換えは、このセクションの始めでの +@code{dynamicAbsoluteVolumeFunction} の再設定の方法とまったく同じです。@c +@file{../scm/midi.scm} の中にあるデフォルト イコライザ +@notation{default-instrument-equalizer} は@c +そのようなプロシージャをどのように記述するのかを示しています。 + +以下の例は、フルートとクラリネットの相対ボリュームを@c +前の例と同じ値にセットしています。 + +@lilypond[verbatim,quote] +#(define my-instrument-equalizer-alist '()) + +#(set! my-instrument-equalizer-alist + (append + '( + ("flute" . (0.7 . 0.9)) + ("clarinet" . (0.3 . 0.6))) + my-instrument-equalizer-alist)) + +#(define (my-instrument-equalizer s) + (let ((entry (assoc s my-instrument-equalizer-alist))) + (if entry + (cdr entry)))) + +\score { + << + \new Staff { + \key g \major + \time 2/2 + \set Score.instrumentEqualizer = #my-instrument-equalizer + \set Staff.midiInstrument = #"flute" + \new Voice \relative c''' { + r2 g\mp g fis ~ + fis4 g8 fis e2 ~ + e4 d8 cis d2 + } + } + \new Staff { + \key g \major + \set Staff.midiInstrument = #"clarinet" + \new Voice \relative c'' { + b1\p a2. b8 a + g2. fis8 e + fis2 r + } + } + >> + \layout { } + \midi { + \tempo 2 = 72 + } +} +@end lilypond + +@ignore +@c Delete when satisfied this is adequately covered elsewhere -td + +@n ode Microtones in MIDI (MIDI での微分音) +@s ubsection Microtones in MIDI (MIDI での微分音) + +@cindex microtones in MIDI (MIDI での微分音) + +半シャープと半フラットからなる微分音は MIDI ファイルにエクスポートされ、@c +ピッチ ベンドをサポートする MIDI プレーヤで正しく演奏されます。@c +@ref{Note names in other languages} を参照してください。@c +以下の例は 1 オクターブの中にあるすべての半シャープと半フラットの音を@c +示しています。@c +この例をコピーしてコンパイルすることで、@c +あなたが持っている MIDI プレイやで微分音をテストすることができます。 + +@lilypond[verbatim,quote] +\score { + \relative c' { + c cih cis cisih + d dih ees eeh + e eih f fih + fis fisih g gih + gis gisih a aih + bes beh b bih + } + \layout {} + \midi {} +} +@end lilypond +@end ignore + + +@node MIDI での打楽器 +@subsection MIDI での打楽器 +@translationof Percussion in MIDI + +打楽器は一般的に @code{DrumStaff} コンテキストの中で記譜され、@c +そのように記譜された場合、その打楽器は正しく MIDI チャンネル 10 に@c +出力されます。@c +しかしながら、いくつかのピッチを持つ打楽器 +-- ザイロフォン、マリンバ、ビブラフォン、ティンパニなど -- +は @qq{通常の} 楽器のように扱われ、正しい MIDI 出力を得るには、@c +それらの楽器のための音楽を@c +通常の @code{Staff} コンテキストに入力する必要があります + -- @code{DrumStaff} には入力しません。 + + +いくつかのピッチを持たない打楽器 +-- メロディック トム、太鼓、シンセドラムなど -- +のサウンドは一般の MIDI 標準に含まれ、MIDI チャネル@tie{}10 経由では@c +使用できません。@c +そのため、そのような楽器の記譜も適切なピッチを使って@c +通常の @code{Staff} コンテキストに入力すべきです。 + +多くの打楽器 -- カスタネットなど -- は一般の MIDI 標準には含まれません。@c +そのような楽器のための記述を行っている場合に MIDI 出力を作り出すための@c +最も容易な -- けれども不十分な -- 方法は、@c +標準セットから最も近いサウンドを代わりに用いることです。 + +@c TODO Expand with examples, and any other issues + +@knownissues + +一般の MIDI 標準はリム ショットを含まないため、@c +代わりにサイドスティックを用います。 + +@node 奏法スクリプト +@subsection 奏法スクリプト +@translationof The Articulate script + +奏法スクリプトを用いることにより、よりリアルな MIDI 出力を得ることができます。@c +奏法スクリプトは、音符を適切な時間比率の音符とスキップで置き換えることにより、@c +アーティキュレーション (スラー、スタッカート等) を考慮に入れようとします。@c +さらに、トリルやターンを展開しようとし、@c +さらにラレンタンドとアッチェレランドを考慮に入れようとします。 + +奏法スクリプトを使うには、@c +入力ファイルの先頭で以下をインクルードする必要があります。 + +@example +\include "articulate.ly" +@end example + +さらに、@code{\score} セクションで以下のようにします。 + +@example +\unfoldRepeats \articulate << + all the rest of the score... +>> +@end example + +この方法で入力ファイルを変更すると、@c +出力される楽譜の見た目は著しく変わってしまいますが、@c +標準の @code{\midi} ブロックはより良い MIDI ファイルを作り出します。 + +奏法スクリプトを機能させるための必須事項ではありませんが、@c +上記の例のように @code{\unfoldRepeats} コマンドを挿入することにより、@c +@notation{トリル} などの短縮記譜の演奏が可能になります。 + +@knownissues + +@c 未訳 +Articulate shortens chords といくつかの音楽 (特にオルガン音楽) の演奏は@c +うまくいかないことがあります。 + + +@node 音楽情報を抽出する +@section 音楽情報を抽出する +@translationof Extracting musical information + +グラフィカルな出力と MIDI を作り出すことに加えて、@c +LilyPond は音楽情報をテキストとして表示することができます。 + +@menu +* LilyPond 記譜法を表示する:: +* Scheme 音楽表記を表示する:: +* 音楽イベントをファイルに保存する:: +@end menu + +@node LilyPond 記譜法を表示する +@subsection LilyPond 記譜法を表示する +@translationof Displaying LilyPond notation + +@funindex \displayLilyMusic + +LilyPond 記譜法で書かれた音楽表記を@c +音楽関数 @code{\displayLilyMusic} で表示することが可能です。@c +出力を見るには、通常、コマンド ラインで LilyPond を実行します。@c +例えば、 + +@example +@{ + \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + +は、以下を表示します: + +@example +@{ a,4 cis e fis g @} +@end example + +デフォルトでは、LilyPond は上記のメッセージを@c +他のすべてのメッセージと一緒にコンソールに表示します。@c +上記のメッセージを分離して @code{\display@{STUFF@}} の結果を保存するには、@c +出力をファイルにリダイレクトします。 + +@example +lilypond file.ly >display.txt +@end example + +@funindex \void + +LilyPond は音楽表記を表示するだけでなく、それを解釈します +(なぜなら、@code{\displayLilyMusic} は追加で音楽表記を表示するために@c +返すだけだからです)。@c +既存の音楽に @code{\displayLilyMusic} を挿入するだけで@c +その音楽の情報を得るられるので便利です。@c +本当に LilyPond に音楽を解釈させたくないのであれば、@c +@code{\void} を使ってその音楽を無視させます: + +@example +@{ + \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @} +@} +@end example + + +@node Scheme 音楽表記を表示する +@subsection Scheme 音楽表記を表示する +@translationof Displaying scheme music expressions + +@rextend{Displaying music expressions} を参照してください。 + + +@node 音楽イベントをファイルに保存する +@subsection 音楽イベントをファイルに保存する +@translationof Saving music events to a file + +以下のファイルをインクルードすることにより、@c +音楽イベントをファイルに保存することができます。 + +@example +\include "event-listener.ly" +@end example + +これは譜毎に @file{FILENAME-STAFFNAME.notes} あるいは +@file{FILENAME-unnamed-staff.notes} というファイルを作成します。@c +複数の名前の無い譜がある場合、 +すべての譜のイベントが同じファイルに出力されるということに注意してください。@c +出力は以下のようになります: + +@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 + +出力はタブ区切り行で、各行には 2 つの固定フィールドがあり、@c +その後にオプション パラメータが続きます。 + +@example +@var{time} @var{type} @var{...params...} +@end example + +この情報は、@c +簡単に Python スクリプト等の他のプログラムに読み込ませることができ、@c +LilyPond で音楽分析や録音再生実験を行おうとする研究者にとってとても有用です。 + + +@knownissues + +lilypond 音楽イベントすべてが @file{event-listener.ly} で@c +サポートされるわけではありません。@c +@file{event-listener.ly} は、良く作られた @qq{概念実証} を意図しています。 + +読み取りたい音楽イベントがサポートされていないのであれば、@c +あなたが作業している lilypond ディレクトリに @file{event-listener.ly} を@c +コピーして、編集することで、望みの情報を出力させることができます。 diff --git a/Documentation/ja/notation/keyboards.itely b/Documentation/ja/notation/keyboards.itely new file mode 100644 index 0000000000..e760f8098f --- /dev/null +++ b/Documentation/ja/notation/keyboards.itely @@ -0,0 +1,689 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + + +@node キーボードと他の複数譜の楽器 +@section キーボードと他の複数譜の楽器 +@translationof Keyboard and other multi-staff instruments + +@lilypondfile[quote]{keyboard-headword.ly} + +このセクションでは、キーボード楽器と複数の譜を用いる他の楽器 +-- ハープやビブラフォン等 -- +に固有の音楽記譜について説明します。@c +キーボードを含む複数の譜を用いる楽器のグループ全体をまとめて +@qq{キーボード} と呼びます。 + +@menu +* キーボードで共通の記譜法:: +* ピアノ:: +* アコーディオン:: +* ハープ:: +@end menu + +@node キーボードで共通の記譜法 +@subsection キーボードで共通の記譜法 +@translationof Common notation for keyboards + +このセクションでは多くのキーボードで生じる記譜の問題について説明します。 + +@menu +* キーボードのためのリファレンス:: +* 譜を手動で変更する:: +* 譜を自動で変更する:: +* 譜変更線:: +* 譜を跨ぐ符幹:: +@end menu + +@node キーボードのためのリファレンス +@unnumberedsubsubsec キーボードのためのリファレンス +@translationof References for keyboards + +@cindex piano staves (ピアノ譜) +@cindex staves, piano (ピアノ譜) +@cindex staves, keyboard instruments (キーボード譜) +@cindex staves, keyed instruments (キーを持つ楽器の譜) +@cindex keyboard instrument staves (キーボード譜) +@cindex keyed instrument staves (キーを持つ楽器の譜) +@cindex keyboard music, centering dynamics (キーボード譜で強弱記号を中央に配置する) +@cindex dynamics, centered in keyboard music (キーボード譜で強弱記号を中央に配置する) +@cindex piano music, centering dynamics (ピアノ譜で強弱記号を中央に配置する) +@cindex centered dynamics in piano music (ピアノ譜で強弱記号を中央に配置する) + +@funindex PianoStaff + +通常、キーボードはピアノ譜で記譜します。@c +これらは波括弧で括られた 2 つ以上の普通の譜です。@c +他のキーを持つ楽器も同じ記譜法を用います。@c +オルガン譜は通常、@code{PianoStaff} グループ内部にある 2 つの譜と、@c +ペダル用の通常の譜によって記述されます。 + +キーボードの譜はそれぞれの独立性が高いですが、@c +ボイスが 2 つの譜を跨ぐこともあります。@c +このセクションではキーボードに特有の記譜テクニックについて説明します。 + +キーボードに共通する問題のいくつかは他の場所でカバーします: + +@itemize + +@item 通常、キーボードは複数のボイスを持ち、@c +ボイスの数はしょっちゅう変わります。@c +このことは @ref{衝突の解決} で説明しています。 + +@item @ref{音楽を並列に記述する} で説明しているように、@c +キーボードは並列に記述することができます。 + +@item 強弱指示を 2 つの @code{Staff} コンテキストの間にある +@code{Dynamics} コンテキストの中に配置して、@c +強弱記号を 2 つの譜の間に配置することができます。@c +@ref{強弱記号} を参照してください。 + +@item 運指は @ref{運指の指示} で説明しています。 + +@item オルガン ペダルの指示はアーティキュレーションとして挿入します。@c +@ref{List of articulations} を参照してください。 + +@item @ref{グリッド ライン} で垂直のグリッド ラインを表示させることができます。 + +@item キーボードはしばしばアルペジオでのタイや、@c +@notation{レセ ヴィブレ} タイを持ちます。@c +@ref{タイ} で説明しています。 + +@item 複数のボイスや譜を跨ぐアルペジオの配置は、@c +@ref{アルペジオ} でカバーしています。 + +@item トレモロ記号は @ref{トレモロの繰り返し} で説明しています。 + +@item キーボードで必要となる可能性がある調整のいくつかを +@rlearning{実際の音楽からの例} で示しています。 + +@item ボイスを跨ぐタイを作り出すために隠れた音符を使うことがあります。@c +@rlearning{調整のその他の使用方法} で示しています。 + +@end itemize + +@c @snippets +@c @lilypondfile[verbatim,quote,texidoc,doctitle] +@c {forcing-visibility-of-systems-with-multi-bar-rests-when-using-\RemoveEmptyStaffContext.ly} +@c http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312 + +@seealso +学習マニュアル: +@rlearning{Real music example}, +@rlearning{Other uses for tweaks} + +記譜法リファレンス: +@ref{Grouping staves}, +@ref{Instrument names}, +@ref{Collision resolution}, +@ref{Writing music in parallel}, +@ref{Fingering instructions}, +@ref{List of articulations}, +@ref{Grid lines}, +@ref{Ties}, +@ref{Arpeggio}, +@ref{Tremolo repeats} + +内部リファレンス: +@rinternals{PianoStaff} + +コード断片集: +@rlsr{Keyboards} + + +@node 譜を手動で変更する +@unnumberedsubsubsec 譜を手動で変更する +@translationof Changing staff manually + +@cindex changing staff manually (譜を手動で変更する) +@cindex manual staff changes (手動の譜の変更) +@cindex staff changes, manual (手動の譜の変更) +@cindex cross-staff notes (譜を跨ぐ音符) +@cindex notes, cross-staff (譜を跨ぐ音符) +@cindex cross-staff beams (譜を跨ぐ連桁) +@cindex beams, cross-staff (譜を跨ぐ連桁) + +@funindex \change +@funindex change + +以下のコマンドを用いて、ボイスの譜を手動で切り換えることができます: + +@example +\change Staff = @var{staffname} +@end example + +@noindent +文字列 @var{staffname} は譜の名前です。@c +このコマンドはボイスをカレント譜から @var{staffname} という譜に切り換えます。@c +@var{staffname} の一般的な値は @code{"up"} と @code{"down"}、@c +あるいは @code{"RH"} と @code{"LH"} です。 + +ボイスの切り換え先となる譜は、切り換え時点で存在している必要があります。@c +必要があれば、譜を @qq{残しておく} べきです。@c +@ref{Keeping contexts alive} を参照してください。 + +譜を跨ぐ音符には自動的に連桁が付けられます: + +@c KEEP LY +@lilypond[verbatim,quote] +\new PianoStaff << + \new Staff = "up" { + 8 + \change Staff = "down" + g8 fis g + \change Staff = "up" + 8 + \change Staff = "down" + e8 dis e + \change Staff = "up" + } + \new Staff = "down" { + \clef bass + % 譜を残しておきます + s1 + } +>> +@end lilypond + +連桁を調整する必要がある場合、符幹の向きの変更を最初に行ってください。@c +連桁の位置は最も近い譜の中央から算出します。@c +連桁の調整の簡単な例が @rlearning{表記の重なりを修正する} にあります。 + +@cindex cross-staff collisions (譜を跨ぐボイスによる衝突) +@cindex collisions, cross-staff voices (譜を跨ぐボイスによる衝突) + +ボイスが譜を跨ぐ時に、記譜要素の重なりが発生することがあります: + +@c KEEP LY +@lilypond[verbatim,quote] +\new PianoStaff << + \new Staff = "up" { + \voiceOne + % 譜を跨ぐボイスの中にある運指記号のためのスペースを作ります + \once\override DynamicLineSpanner #'staff-padding = #3.4 + e''2\p\< d''\> + c''1\! + } + \new Staff = "down" << + { + \clef bass + s4. e,8\rest g,2\rest + c1 + } \\ { + c8\( g c' + \change Staff = "up" + e' g' b'-3 a' g'\) + f'1 + } + >> +>> +@end lilypond + +符幹とスラーは譜の間にある強弱記号と重なります。@c +なぜなら、異なる譜にある音符を結ぶ連桁、スラー、他のスパナに対して、@c +自動衝突解決は抑制されるからです。@c +同様に、@c +譜を跨ぐスパナによって配置に影響を受ける@c +符幹やアーティキュレーションに対しても、@c +自動衝突解決は抑制されます。@c +そのような場合、必要に応じて、手動で衝突を解決する必要があります +-- 解決手段は @rlearning{表記の重なりを修正する} を参照してください。 + +@seealso +学習マニュアル: +@rlearning{Fixing overlapping notation} + +記譜法リファレンス: +@ref{Stems}, +@ref{Automatic beams}, +@ref{Keeping contexts alive} + +コード断片集: +@rlsr{Keyboards} + +内部リファレンス: +@rinternals{Beam}, +@rinternals{ContextChange} + +@knownissues +譜の変更の直前に終了する自動連桁に対して、@c +連桁衝突回避は機能しません。@c +衝突回避を行うには、手動連桁を使用してください。 + + +@node 譜を自動で変更する +@unnumberedsubsubsec 譜を自動で変更する +@translationof Changing staff automatically + +@cindex changing staff automatically (譜を自動で変更する) +@cindex automatic staff changes (譜の自動変更) +@cindex staff changes, automatic (譜の自動変更) + +@funindex \autochange +@funindex autochange +@funindex PianoStaff + +譜の上端と下端の間で、ボイスを自動的に切り換えることができます。@c +構文は以下の通りです: + +@example +\autochange @dots{}@var{music}@dots{} +@end example + +@noindent +これはカレントの譜グループ (普通は、@code{PianoStaff}) 内部に +@code{"up"} と @code{"down"} という 2 つの譜を作成します。@c +デフォルトで下の譜は低音部となります。@c +自動変更は基準ピッチ (ミドル C が切り換えポイントです) で譜を切り換え、@c +次の切り換えまで休符でスキップしていきます。 + +@lilypond[quote,verbatim] +\new PianoStaff { + \autochange { + g4 a b c' + d'4 r a g + } +} +@end lilypond + +@cindex relative music and autochange (相対モードと自動変更) +@cindex autochange and relative music (自動変更と相対モード) + +@funindex \relative +@funindex relative + +@code{\autochange} の外側にある @code{\relative} セクションは、@c +@code{\autochange} の内部にある音符のピッチに影響を与えません。@c +そのため、必要に応じて @code{\autochange} の内部に @code{\relative} を@c +配置します。 + +個々の譜に個別の制御を行う必要がある場合、@c +手動で @code{"up"} と @code{"down"} という名前の譜を作成して、@c +制御を行います。@c +@code{\autochange} コマンドは、作成された譜間で、@c +ボイスを切り換えます。 + +@warning{譜を手動で作成する場合、譜の名前を @code{"up"} と @code{"down"} +にする @emph{必要があります}。} + +例えば、下の譜に調号を配置するには、譜を手動で作成する必要があります: + +@lilypond[quote,verbatim] +\new PianoStaff << + \new Staff = "up" { + \new Voice = "melOne" { + \key g \major + \autochange \relative c' { + g8 b a c b d c e + d8 r fis, g a2 + } + } + } + \new Staff = "down" { + \key g \major + \clef bass + } +>> +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Changing staff manually} + +コード断片集: +@rlsr{Keyboards} + +内部リファレンス: +@rinternals{AutoChangeMusic} + + +@knownissues +@cindex chords, splitting across staves with \autochange + +譜の切り換えが最適な場所で行われない場合もあります。@c +高品位の出力を得るには、譜の切り換えを手動で指定する必要があります。 + +和音は譜を跨って配置されません。@c +和音構造の中にある最初の音符に基づく譜に割り当てられます。 + + +@node 譜変更線 +@unnumberedsubsubsec 譜変更線 +@translationof Staff-change lines + +@cindex staff-change line (譜変更線) +@cindex staff change line (譜変更線) +@cindex cross-staff line (譜跨ぎ線) +@cindex cross staff line (譜跨ぎ線) +@cindex line, staff-change follower (譜変更フォロー線) +@cindex line, cross-staff (譜跨ぎ線) +@cindex line, staff-change (譜変更線) +@cindex follow voice (フォロー ボイス) +@cindex voice, following (フォロー ボイス) +@cindex staff switching (譜の切り換え) +@cindex cross-staff (譜跨ぎ) + +@funindex followVoice +@funindex \showStaffSwitch +@funindex showStaffSwitch +@funindex \hideStaffSwitch +@funindex hideStaffSwitch + +ボイスが他の譜に切り替わる時に、音符を繋げる線を自動的に譜刻することができます: + +@lilypond[quote,verbatim,relative=1] +\new PianoStaff << + \new Staff = "one" { + \showStaffSwitch + c1 + \change Staff = "two" + b2 a + } + \new Staff = "two" { + \clef bass + s1*2 + } +>> +@end lilypond + + +@predefined +@code{\showStaffSwitch}, +@code{\hideStaffSwitch} +@endpredefined + +@seealso +コード断片集: +@rlsr{Keyboards} + +内部リファレンス: +@rinternals{Note_head_line_engraver}, +@rinternals{VoiceFollower} + + +@node 譜を跨ぐ符幹 +@unnumberedsubsubsec 譜を跨ぐ符幹 +@translationof Cross-staff stems + +@cindex cross-staff notes (譜を跨ぐ音符) +@cindex cross staff notes (譜を跨ぐ音符) +@cindex notes, cross-staff (譜を跨ぐ音符) +@cindex cross-staff stems (譜を跨ぐ符幹) +@cindex cross staff stems (譜を跨ぐ符幹) +@cindex stems, cross-staff (譜を跨ぐ符幹) +@cindex chords, cross-staff (譜を跨ぐ和音) +@cindex cross-staff chords (譜を跨ぐ和音) +@cindex cross staff chords (譜を跨ぐ和音) + +@funindex \crossStaff +@funindex \autoBeamOff +@funindex Span_stem_engraver + +@code{Span_stem_engraver} を用いて譜を跨ぐ和音を作ることができます。@c +片方の譜の音符に自動連桁機能が連桁を付けないことを間違いなく確認する@c +よう注意してください。 + +@lilypondfile[verbatim,quote] +{cross-staff-stems.ly} + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{indicating-cross-staff-chords-with-arpeggio-bracket.ly} + +@seealso +コード断片集: +@rlsr{Keyboards} + +内部リファレンス: +@rinternals{Stem} + + +@node ピアノ +@subsection ピアノ +@translationof Piano + +このセクションでは、ピアノに関係する記譜法を説明します。 + +@menu +* ピアノ ペダル:: +@end menu + +@node ピアノ ペダル +@unnumberedsubsubsec ピアノ ペダル +@translationof Piano pedals + +@cindex piano pedals (ピアノ ペダル) +@cindex pedals, piano (ピアノ ペダル) +@cindex sustain pedal (サステイン ペダル) +@cindex pedal, sustain (サステイン ペダル) +@cindex sostenuto pedal (ソステヌート ペダル) +@cindex pedal, sostenuto (ソステヌート ペダル) +@cindex una corda (ウナ コルダ) +@cindex tre corde (トレ コルデ) +@cindex sos. +@cindex U.C. + +@funindex \sustainOn +@funindex sustainOn +@funindex \sustainOff +@funindex sustainOff +@funindex \sostenutoOn +@funindex sostenutoOn +@funindex \sostenutoOff +@funindex sostenutoOff +@funindex \unaCorda +@funindex unaCorda +@funindex \treCorde +@funindex treCorde + +一般的に、ピアノは音を変化させるために 3 本のペダルを持ちます: +@notation{サステイン}, @notation{ソステヌート} (@notation{sos.}), +それに @notation{ウナ コルダ} (@notation{una corda}, @notation{U.C.}) です。@c +サステイン ペダルは、ビブラフォンやチェレスタにもあります。 + +@lilypond[quote,verbatim,relative=2] +c4\sustainOn d e g +1\sustainOff +c4\sostenutoOn e g c, +1\sostenutoOff +c4\unaCorda d e g +1\treCorde +@end lilypond + +@cindex pedal indication styles (ペダル指示スタイル) +@cindex pedal indication, text (ペダル指示テキスト) +@cindex pedal indication, bracket (ペダル指示の囲み) +@cindex pedal indication, mixed (混合ペダル指示) +@cindex pedal sustain style (ペダル サステイン スタイル) +@cindex sustain pedal style (サステイン ペダル スタイル) + +@funindex pedalSustainStyle +@funindex mixed +@funindex bracket +@funindex text + +ペダル指示には 3 つのスタイルがあります: +テキスト、囲み、それにテキストと囲みの混合です。@c +デフォルトで、@c +サステイン ペダルとウナ コルダ ペダルの指示はテキスト スタイルですが、@c +ソステヌート ペダル指示は混合スタイルです。 + +@lilypond[quote,verbatim,relative=2] +c4\sustainOn g c2\sustainOff +\set Staff.pedalSustainStyle = #'mixed +c4\sustainOn g c d +d\sustainOff\sustainOn g, c2\sustainOff +\set Staff.pedalSustainStyle = #'bracket +c4\sustainOn g c d +d\sustainOff\sustainOn g, c2 +\bar "|." +@end lilypond + +ペダル コマンドの配置は、@c +ピアノ演奏中の物理的なサステイン ペダルの動きに一致します。@c +最後の小節線でのペダル指示は、@c +最後のペダル オフ コマンドを省略することで挿入されます。 + +ペダル指示を @code{Dynamics} コンテキストに配置させることができます。 + +@seealso +記譜法リファレンス: +@ref{Ties} + +コード断片集: +@rlsr{Keyboards} + +内部リファレンス: +@rinternals{SustainPedal}, +@rinternals{SustainPedalLineSpanner}, +@rinternals{SustainEvent}, +@rinternals{SostenutoPedal}, +@rinternals{SostenutoPedalLineSpanner}, +@rinternals{SostenutoEvent}, +@rinternals{UnaCordaPedal}, +@rinternals{UnaCordaPedalLineSpanner}, +@rinternals{UnaCordaEvent}, +@rinternals{PianoPedalBracket}, +@rinternals{Piano_pedal_engraver} + + +@node アコーディオン +@subsection アコーディオン +@translationof Accordion + +@cindex accordion (アコーディオン) + +このセクションでは、アコーディオンに特有の記譜法について説明します。 + +@menu +* ディスカント記号:: +@end menu + +@node ディスカント記号 +@unnumberedsubsubsec ディスカント記号 +@translationof Discant symbols + +@cindex accordion discant symbols (アコーディオンのディスカント記号) +@cindex discant symbols, accordion (アコーディオンのディスカント記号) +@cindex accordion shifts (アコーディオン シフト) +@cindex accordion shift symbols (アコーディオンのシフト記号) + +アコーディオン演奏はしばしば、@c +指定されたピッチよりも 1 オクターブ上または下のピッチとユニゾンになる@c +リードのセットで構成されます。@c +各アコーディオン メーカは、@c +さまざまなリードの組み合わせを選択する @notation{シフト} に@c +異なる名前を付けています: +@notation{oboe}, @notation{musette}, あるいは @notation{bandonium} などです。@c +そのため、演奏指示を単純にするための記号システムを用います。 + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{accordion-discant-symbols.ly} + +@seealso +コード断片集: +@rlsr{Keyboards} + + +@node ハープ +@subsection ハープ +@translationof Harp + +このセクションでは、ハープに特有の記譜法について説明します。 + +@menu +* ハープのためのリファレンス:: +* ハープ ペダル:: +@end menu + +@node ハープのためのリファレンス +@unnumberedsubsubsec ハープのためのリファレンス +@translationof References for harps + +@cindex harps (ハープ) +@cindex bisbiglando (ビズビッリャンド) + +ハープ音楽に共通する特性のいくつかが、他の場所でカバーされています: + +@itemize + +@item グリッサンドは最も特徴的なハープのテクニックです +-- @ref{グリッサンド}。 + +@item @notation{ビズビッリャンド} (@notation{bisbigliando}) は@c +トレモロとして記述されます +-- @ref{トレモロの繰り返し}。 + +@item ナチュラル ハーモニクスは @ref{ハーモニクス} でカバーされています。 + +@item アルペジオの向きと非アルペジオについては、@c +@ref{アルペジオ} を参照してください。 + +@end itemize + +@seealso +記譜法リファレンス: +@ref{Tremolo repeats}, +@ref{Glissando}, +@ref{Arpeggio}, +@ref{Harmonics} + + +@node ハープ ペダル +@unnumberedsubsubsec ハープ ペダル +@translationof Harp pedals + +@cindex harp pedals (ハープ ペダル) +@cindex harp pedal diagrams (ハープ ペダル ダイアグラム) +@cindex pedals, harp (ハープ ペダル) +@cindex pedal diagrams, harp (ハープ ペダル ダイアグラム) + +ハープはオクターブ毎に 7 本の弦を持ち、@c +それらはナチュラル ピッチ、フラット ピッチ、あるいはシャープ ピッチの@c +音を出すことができます。@c +レバー ハープは各弦を個別に調整することができますが、@c +ペダル ハープは 1 つのペダルで同じピッチ名を持つすべての弦を制御します。@c +演奏者の左から右に向かって、左のペダル D, C, それに B、@c +右のペダルは E, F, G, それに A です。@c +ペダルのポジションをテキスト記号で指示することがあります: + +@lilypond[quote,verbatim,relative=2] +\textLengthOn +cis1_\markup \concat \vcenter { + [D \flat C \sharp B|E \sharp F \sharp G A \flat] } +c!1_\markup \concat \vcenter { + [ C \natural ] } +@end lilypond + +あるいはペダル ダイアグラムで指示することもあります: + +@lilypond[quote,verbatim,relative=2] +\textLengthOn +cis1_\markup { \harp-pedal #"^v-|vv-^" } +c!1_\markup { \harp-pedal #"^o--|vv-^" } +@end lilypond + +@code{\harp-pedal} コマンドは文字列を受け取ります。@c +@code{^} はペダル ポジションを上 (フラット ピッチ)、@c +@code{-} はペダル ポジションを真ん中 (ナチュラル ピッチ)、@c +@code{v} はペダル ポジションを下 (シャープ ピッチ)、@c +@code{|} 区切り線です。@c +接頭辞 @code{o} は、その後のペダル記号を丸で囲みます。 + +@seealso +記譜法リファレンス: +@ref{テキスト スクリプト}, +@ref{Instrument Specific Markup} diff --git a/Documentation/ja/notation/notation.itely b/Documentation/ja/notation/notation.itely index ff80f7c264..4cb341ef7a 100644 --- a/Documentation/ja/notation/notation.itely +++ b/Documentation/ja/notation/notation.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @c This file is part of notation.tely @ignore - Translation of GIT committish: 2c3bd5e85d39155e3e6804f9818722bef483056d + Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP diff --git a/Documentation/ja/notation/percussion.itely b/Documentation/ja/notation/percussion.itely new file mode 100644 index 0000000000..1e85b9a1e7 --- /dev/null +++ b/Documentation/ja/notation/percussion.itely @@ -0,0 +1,645 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node 打楽器 +@section 打楽器 +@translationof Percussion + +@menu +* 打楽器で共通の記譜法:: +@end menu + +@node 打楽器で共通の記譜法 +@subsection 打楽器で共通の記譜法 +@translationof Common notation for percussion + +リズム音楽は主に打楽器とドラム記譜法で使用されますが、@c +旋律のリズムを示すために使うこともできます。 + +@menu +* 打楽器のためのリファレンス:: +* 基本的な打楽器の記譜法:: +* ドラム ロール:: +* ピッチを持つ打楽器:: +* 打楽器の譜:: +* カスタム打楽器譜:: +* ゴースト ノート:: +@end menu + +@node 打楽器のためのリファレンス +@unnumberedsubsubsec 打楽器のためのリファレンス +@translationof References for percussion + +@c TODO add more references. + +@itemize + +@item 打楽器の音楽はリズム譜で記譜されることがあります。@c +リズム譜は @ref{Showing melody rhythms} と @ref{Instantiating new staves} で@c +説明しています。 + +@item MIDI 出力については、別のセクションで説明します。@c +@ref{Percussion in MIDI} を参照してください。 + +@end itemize + +@seealso +記譜法リファレンス: +@ref{Showing melody rhythms}, +@ref{Instantiating new staves}, +@ref{Percussion in MIDI} + +コード断片集: +@rlsr{Percussion} + + +@node 基本的な打楽器の記譜法 +@unnumberedsubsubsec 基本的な打楽器の記譜法 +@translationof Basic percussion notation + +@cindex percussion (打楽器) +@cindex drums (ドラム) + +打楽器の音符は @code{\drummode} モードで入力することができます。@c +このモードでの音符の入力の仕方は標準モードに似ています。@c +打楽器の音符を入力する最も簡単な方法は、@c +打楽器用のコンテキストとエントリを作成する @code{\drums} コマンドを@c +用いる方法です: + +@lilypond[quote,verbatim] +\drums { + hihat4 hh bassdrum bd +} +@end lilypond + +上記の例は、下記を短縮したものです: + +@lilypond[quote,verbatim] +\new DrumStaff { + \drummode { + hihat4 hh bassdrum bd + } +} +@end lilypond + +打楽器の音符名には完全名と省略名があり、@c +どちらも入力ファイルで使うことができます。@c +打楽器の音符名の完全なリストが @ref{Percussion notes} にあります。 + +@cindex clef, percussion (打楽器の音部記号) +@cindex percussion clef (打楽器の音部記号) + +@code{DrumStaff} コンテキスト内で通常の記譜法でのピッチ (@code{cis4} 等) +を使うとエラーになるということに注意してください。@c +打楽器の音部記号は自動的に @code{DrumStaff} に付け加えられますが、@c +明示的に付け加えることもできます。@c +他の音部記号も使うことができます。 + +@lilypond[quote,ragged-right,verbatim] +\drums { + \clef percussion + bd4 bd bd bd + \clef treble + hh4 hh hh hh +} +@end lilypond + + +打楽器のための MIDI サポートにはいくつか考慮すべき問題があります。@c +@ref{Percussion in MIDI} を参照してください。 + +@seealso +記譜法リファレンス: +@ref{Percussion in MIDI}, +@ref{Percussion notes}. + +インストールされているファイル: +@file{ly/drumpitch-init.ly} + +コード断片集: +@rlsr{Percussion} + + +@node ドラム ロール +@unnumberedsubsubsec ドラム ロール +@translationof Drum rolls + +ドラム ロールは符幹に 3 本のスラッシュを付けて示します。@c +4 分音符以上の長さの音符には 3 本のスラッシュが明示的に示され、@c +8 分音符には 2 本のスラッシュが付けられ +(連桁が 3 本目のスラッシュになります)、@c +8 分音符よりも短い音符には連桁に 1 本のスラッシュが付け加えられます。@c +これは、トレモロ記譜法によって実現されます +-- @ref{トレモロの繰り返し} を参照してください。 + +@lilypond[quote,verbatim] +\drums { + \time 2/4 + sn16 sn8 sn16 sn8 sn8:32 ~ + sn8 sn8 sn4:32 ~ + sn4 sn8 sn16 sn16 + sn4 r4 +} +@end lilypond + +スティックは音符の上または下にマークアップ @code{"R"} または @code{"L"} を@c +配置することによって示すことができます。@c +マークアップの配置については @ref{Direction and placement} +を参照してください。@c +@code{staff-padding} プロパティを上書きして、@c +ベースラインを好みに合わせることができます。 + +@lilypond[quote,verbatim] +\drums { + \repeat unfold 2 { + sn16^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L" sn^"R" sn^"R" + \stemUp + sn16_"L" sn_"R" sn_"L" sn_"L" sn_"R" sn_"L" sn_"R" sn_"R" + } +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Tremolo repeats} + +コード断片集: +@rlsr{Percussion} + + +@node ピッチを持つ打楽器 +@unnumberedsubsubsec ピッチを持つ打楽器 +@translationof Pitched percussion + +ピッチを持つ打楽器 (シロフォン、ビブラフォン、それにティンパニー) +は通常の譜を用いて記述します。@c +通常の譜については、このマニュアルの他のセクションでカバーしています。 + +@seealso +@c TODO: possibly link to an alternate section of NR 3.5, if +@c "percussion in MIDI" gets a separate subsubsection for +@c pitched percussion sounds. -gp +記譜法リファレンス: +@ref{Percussion in MIDI} + +コード断片集: +@rlsr{Percussion} + + +@node 打楽器の譜 +@unnumberedsubsubsec 打楽器の譜 +@translationof Percussion staves + +@cindex percussion (打楽器) +@cindex drums (ドラム) + + +通常、複数の楽器での打楽器パートは複数線の譜を使い、@c +譜の高さで打楽器を指定します。@c +譜刻するには、音符を @code{DrumStaff} コンテキストや +@code{DrumVoice} コンテキスト内に配置する必要があります。 + +@lilypond[quote,verbatim] +up = \drummode { + crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat +} +down = \drummode { + bassdrum4 snare8 bd r bd sn4 +} +\new DrumStaff << + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } +>> +@end lilypond + +上記の例は冗長な多声記譜法です。@c +@rlearning{私はボイスを聴いている} で説明した短い多声記譜法を使うことも@c +できます。@c +例えば、以下のようになります: + +@lilypond[quote,verbatim] +\new DrumStaff << + \drummode { + bd4 sn4 bd4 sn4 + << { + \repeat unfold 16 hh16 + } \\ { + bd4 sn4 bd4 sn4 + } >> + } +>> +@end lilypond + +他のレイアウトでも実現できます。@c +コンテキスト @code{DrumVoice} の中にある プロパティ @code{drumStyleTable} を@c +セットすることによってレイアウトを変更できます。@c +以下の変数があらかじめ定義されています: + +@c TODO: decide what to do about this table. (ie verbatim or not) +@table @code + +@item drums-style +これがデフォルトです。@c +これは五線譜上に通常のドラム キットを刻譜します: + +@lilypond[quote,line-width=10.0\cm] +nam = \lyricmode { + cymc cyms cymr hh hhc hho hhho hhp + cb hc bd sn ss tomh tommh tomml toml tomfh tomfl } +mus = \drummode { + cymc cyms cymr hh hhc hho hhho hhp \break + cb hc bd sn ss tomh tommh tomml toml tomfh tomfl s16 } +\score { + << \new DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \override Stem #'Y-extent = ##f + } \mus + \new Lyrics \nam + >> + \layout { + \context { + \Score + \override LyricText #'font-family = #'typewriter + \override BarNumber #'transparent =##T + } + } +} +@end lilypond + +このドラム構成は 6 種類のタムをサポートします。@c +タムの種類が少ない場合は、望みの結果となるタムを選択してください。@c +例えば、タムを五線譜の中間の 3 本の線に配置するのであれば、@c +@code{tommh}, @code{tomml}, それに @code{tomfh} を使います。 + +@item timbales-style +これは二線譜上にティンバレスを譜刻します: + +@lilypond[quote,ragged-right] +nam = \lyricmode { timh ssh timl ssl cb } +mus = \drummode { timh ssh timl ssl cb s16 } + +<< + \new DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \override Stem #'Y-extent = ##f + \override StaffSymbol #'line-count = #2 + \override StaffSymbol #'staff-space = #2 + \override VerticalAxisGroup #'minimum-Y-extent = #'(-3.0 . 4.0) + drumStyleTable = #timbales-style + } \mus + \new Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> +@end lilypond + +@item congas-style +これは二線譜上にコンガを譜刻します: + +@lilypond[quote,ragged-right] +nam = \lyricmode { cgh cgho cghm ssh cgl cglo cglm ssl } +mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } + +<< + \new DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + drumStyleTable = #congas-style + \override StaffSymbol #'line-count = #2 + + %% this sucks; it will lengthen stems. + \override StaffSymbol #'staff-space = #2 + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \override Stem #'Y-extent = ##f + } \mus + \new Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> +@end lilypond + +@item bongos-style +これは二線譜上にボンゴを譜刻します: + +@lilypond[quote,ragged-right] +nam = \lyricmode { boh boho bohm ssh bol bolo bolm ssl } +mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } + +<< + \new DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override StaffSymbol #'line-count = #2 + drumStyleTable = #bongos-style + + %% this sucks; it will lengthen stems. + \override StaffSymbol #'staff-space = #2 + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \override Stem #'Y-extent = ##f + } \mus + \new Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> +@end lilypond + +@item percussion-style +これは全ての種類の打楽器を一線譜上に譜刻します: + +@lilypond[quote,ragged-right] +nam = \lyricmode { tri trio trim gui guis guil cb cl tamb cab mar hc } +mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } + +<< + \new DrumStaff \with{ + \remove Bar_engraver + drumStyleTable = #percussion-style + \override StaffSymbol #'line-count = #1 + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + \override Stem #'Y-extent = ##f + } \mus + \new Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } +>> +@end lilypond +@end table + + +@node カスタム打楽器譜 +@unnumberedsubsubsec カスタム打楽器譜 +@translationof Custom percussion staves + +あらかじめ定義されている打楽器の音符名リストのいずれも気に入らなければ、@c +入力ファイルの先頭でリストを定義することができます。@c + +@lilypond[quote,verbatim] +#(define mydrums '( + (bassdrum default #f -1) + (snare default #f 0) + (hihat cross #f 1) + (halfopenhihat cross "halfopen" 1) + (pedalhihat xcircle "stopped" 2) + (lowtom diamond #f 3))) +up = \drummode { hh8 hh hhho hhho hhp4 hhp } +down = \drummode { bd4 sn bd toml8 toml } + +\new DrumStaff << + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } +>> +@end lilypond + + +@snippets + +@c TODO: MOVE ALL THESE TO LSR! -gp + +ここでいくつか例を挙げます: + +2 つのウッド ブロックを @q{wbh} (ハイ ウッド ブロック) と +@q{wbl} (ロー ウッド ブロック) で入力します: + +@c KEEP LY +@lilypond[quote,verbatim] +% 以下の行でウッド ブロックの譜の中での位置を定義します。 +% 好みに応じて位置を変更したり、特殊な譜頭を使うすることができます。 +#(define mydrums '((hiwoodblock default #t 3) + (lowoodblock default #t -2))) + +woodstaff = { + % 以下は二線の譜を定義します。 + % また、二線の位置も定義します。 + \override Staff.StaffSymbol #'line-positions = #'(-2 3) + + % 以下の行が必要です。この行を省略すると、小節線は短すぎます! + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) +} + +\new DrumStaff { + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + + % 以下の行で新しく定義したドラム スタイル テーブルを読み込みます。 + \woodstaff + + \drummode { + \time 2/4 + wbl8 wbl16 wbl wbh8-> wbl | + wbl8 wbl16 wbh-> ~ wbh wbl16 r8 | + } +} +@end lilypond + +上記の特殊なケースでは、@c +小節線の長さを @code{\override Staff.BarLine #'bar-extent #'(from . to)} +で変更する必要があります。@c +さもないと、小節線の長さが短すぎます。@c +また、2 本の譜線の位置を定義する必要があります。@c +これらの細かな内容についての更なる情報は @ref{譜シンボル} を参照してください。 + +タンバリンを @q{tamb} で入力します: + +@lilypond[quote,verbatim] +#(define mydrums '((tambourine default #t 0))) + +tambustaff = { + \override Staff.StaffSymbol #'line-positions = #'( 0 ) + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) + \set DrumStaff.instrumentName = #"Tambourine" +} + +\new DrumStaff { + \tambustaff + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + + \drummode { + \time 6/8 + tamb8. tamb16 tamb8 tamb tamb tamb | + tamb4. tamb8 tamb tamb | + % トリルを正しい位置で終了させるために、演奏時間を伸縮して + % 短い空白休符を配置するトリックが必要です! + tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | + } +} +@end lilypond + +タムタムを @q{tt} で入力します: + +@lilypond[quote,verbatim] +#(define mydrums '((tamtam default #t 0))) + +tamtamstaff = { + \override Staff.StaffSymbol #'line-positions = #'( 0 ) + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) + \set DrumStaff.instrumentName = #"Tamtam" +} + +\new DrumStaff { + \tamtamstaff + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + + \drummode { + tt 1 \pp \laissezVibrer + } +} +@end lilypond + +2 種類のベルを @q{cb} (カウベル) と @q{rb} (ライドベル) で入力します: + +@lilypond[quote,verbatim] +#(define mydrums '((ridebell default #t 3) + (cowbell default #t -2))) + +bellstaff = { + \override DrumStaff.StaffSymbol #'line-positions = #'(-2 3) + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5) + \set DrumStaff.instrumentName = #"Different Bells" +} + +\new DrumStaff { + \bellstaff + \drummode { + \time 2/4 + rb8 rb cb cb16 rb-> ~ | + rb16 rb8 rb16 cb8 cb | + } +} +@end lilypond + +ここで Stravinsky の @q{L'histoire du Soldat} からの短い例を挙げます。 + +@lilypond[quote,verbatim] +#(define mydrums '((bassdrum default #t 4) + (snare default #t -4) + (tambourine default #t 0))) + +global = { + \time 3/8 s4. + \time 2/4 s2*2 + \time 3/8 s4. + \time 2/4 s2 +} + +drumsA = { + \context DrumVoice << + { \global } + { \drummode { + \autoBeamOff + \stemDown sn8 \stemUp tamb s8 | + sn4 \stemDown sn4 | + \stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 | + \stemDown sn8 \stemUp tamb s8 | + \stemUp sn4 s8 \stemUp tamb + } + } + >> +} + +drumsB = { + \drummode { + s4 bd8 s2*2 s4 bd8 s4 bd8 s8 + } +} + +\layout { + indent = #40 +} + +\score { + \new StaffGroup << + \new DrumStaff { + \set DrumStaff.instrumentName = \markup { + \column { + "Tambourine" + "et" + "caisse claire s. timbre" + } + } + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \drumsA + } + + \new DrumStaff { + \set DrumStaff.instrumentName = #"Grosse Caisse" + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \drumsB } + >> +} +@end lilypond + +@seealso +コード断片集: +@rlsr{Percussion} + +内部リファレンス: +@rinternals{DrumStaff}, +@rinternals{DrumVoice} + + +@c TODO: check name -gp +@node ゴースト ノート +@unnumberedsubsubsec ゴースト ノート +@translationof Ghost notes + +ドラムと打楽器のゴースト ノートは @code{\parenthesize} コマンドを用いて@c +作ることができます。@c +詳細は @ref{括弧} を参照してください。@c +しかしながら、デフォルトの @code{drummode} は括弧を記譜する +@code{Parenthesis_engraver} プラグインを含みません。 + +@lilypond[quote,ragged-right,verbatim] +\new DrumStaff \with { + \consists "Parenthesis_engraver" +} +<< + \context DrumVoice = "1" { s1 } + \context DrumVoice = "2" { s1 } + \drummode { + << + { + hh8[ hh] hh16 + < \parenthesize sn > hh + < \parenthesize sn > hh8 hh + } \\ + { + bd4 r4 bd8 bd r8 bd + } + >> + } +>> +@end lilypond + +@noindent +また、各 @code{\parenthesize} 表現を和音構造 (@code{< >}) で@c +囲む必要があるということに注意してください。 + +@seealso +コード断片集: +@rlsr{Percussion} diff --git a/Documentation/ja/notation/pitches.itely b/Documentation/ja/notation/pitches.itely index 85073fc983..bac47b7f68 100644 --- a/Documentation/ja/notation/pitches.itely +++ b/Documentation/ja/notation/pitches.itely @@ -1,12 +1,12 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 2c3bd5e85d39155e3e6804f9818722bef483056d + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -92,7 +92,6 @@ } @end lilypond - @seealso 音楽用語集: @rglos{Pitch names} @@ -260,6 +259,9 @@ B の後の F ダブル フラットは B よりも下に配置されます。@c } @end lilypond +これらの規則から導き出される結論の 1 つは、@c +@code{@w{\relative f}} ブロックの中の最初の音符は絶対ピッチ モードで記述された@c +音符と全く同様に解釈されるということです。 @seealso 音楽用語集: @@ -268,7 +270,7 @@ B の後の F ダブル フラットは B よりも下に配置されます。@c @rglos{Pitch names} 記譜法リファレンス: -@ref{オクターブ チェック} +@ref{Octave checks} コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -287,7 +289,6 @@ B の後の F ダブル フラットは B よりも下に配置されます。@c @funindex \relative @funindex relative - @c DEPRECATED @code{\relative} に対して @code{@var{startpitch}} が指定されていない場合、@c @code{c'} であると見なされます。@c @@ -311,7 +312,7 @@ LilyPond では、音符名は未加工の入力です -- 調号と音部記号がこの未加工の入力をどのように表示するかを決定します。@c @code{c} のような変更を加えられていない音符は、調号や音部記号とは無関係に、@c @q{C ナチュラル} を意味します。@c -更なる情報は、@rlearning{臨時記号と調号} を参照してください。} +更なる情報は、@rlearning{Accidentals and key signatures} を参照してください。} @cindex note names, Dutch (オランダ語での音符名) @cindex note names, default (デフォルトの音符名) @@ -333,7 +334,7 @@ LilyPond では、音符名は未加工の入力です 付け加えることによって作られます。@c この構文はオランダ語の音符命名規約から派生しました。@c 臨時記号に他の名前を使うには、@c -@ref{他の言語での音符名} を参照してください。 +@ref{Note names in other languages} を参照してください。 @lilypond[verbatim,quote,relative=2] ais1 aes aisis aeses @@ -397,10 +398,10 @@ cis @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right] +@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right] {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-extra-naturals-from-being-automatically-added.ly} @seealso @@ -413,12 +414,12 @@ cis @rglos{quarter tone} 学習マニュアル: -@rlearning{臨時記号と調号} +@rlearning{Accidentals and key signatures} 記譜法リファレンス: -@ref{自動臨時記号}, +@ref{Automatic accidentals}, @ref{Annotational accidentals (musica ficta)}, -@ref{他の言語での音符名} +@ref{Note names in other languages} コード断片集: @rlsrnamed{Pitches,ピッチ}. @@ -429,12 +430,10 @@ cis @rinternals{AccidentalCautionary}, @rinternals{accidental-interface} - @cindex accidental, quarter-tone (4 分音臨時記号) @cindex quarter-tone accidental (4 分音臨時記号) @knownissues - 4 分音臨時記号の表記の仕方で広く認められた標準はないため、@c LilyPond の記号はいかなる標準にも準拠しません。 @@ -602,9 +601,9 @@ a2 as e es a ases e eses @menu * オクターブ チェック:: * 移調:: -* 転回:: +* 反転:: * 逆行:: -* 様式的な移調:: +* 様式的な変形:: @end menu @@ -676,7 +675,6 @@ a2 as e es a ases e eses } @end lilypond - @seealso コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -794,22 +792,21 @@ musicInBflat = @{ e4 @dots{} @} @noindent 移調楽器についての更なる情報は、@c -@ref{楽器の移調} を参照してください。 +@ref{Instrument transpositions} を参照してください。 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {transposing-pitches-with-minimum-accidentals-smart-transpose.ly} - @seealso 記譜法リファレンス: -@ref{楽器の移調}, -@ref{転回}, -@ref{様式的な移調}, -@ref{相対オクターブ入力}, -@ref{逆行} +@ref{Instrument transpositions}, +@ref{Inversion}, +@ref{Modal transformations}, +@ref{Relative octave entry}, +@ref{Retrograde} コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -817,7 +814,6 @@ musicInBflat = @{ e4 @dots{} @} 内部リファレンス: @rinternals{TransposedMusic} - @funindex \transpose @funindex transpose @funindex \chordmode @@ -826,31 +822,33 @@ musicInBflat = @{ e4 @dots{} @} @funindex relative @knownissues - -相対変換は -@code{\transpose}, @code{\chordmode}, @code{\transpose} の引数である@c -音楽表記の中にある @code{\relative} セクションには影響を及ぼしません。@c +相対変換コマンドはその引数の中にある @code{\transpose}, @code{\chordmode}, +あるいは @code{\relative} セクションには影響を及ぼしません。@c 移調された音楽の中で相対モードを使用するには、@c @code{\transpose} の中に @code{\relative} を置く必要があります。 +@code{\transpose} を使用している場合、3 重の臨時記号は表示されません。@c +代わりに @q{異名等価の} ピッチが表示されます +(例えば e の 3 重フラットの代わりに d フラットが表示されます)。 + -@node 転回 -@unnumberedsubsubsec 転回 +@node 反転 +@unnumberedsubsubsec 反転 @translationof Inversion -@cindex inversion (転回) -@cindex operation, inversion (転回操作) +@cindex inversion (反転) +@cindex operation, inversion (反転操作) @funindex \inversion -以下で音楽表記を転回することができます: +単一の操作で音楽表記を反転して、移調することができます: @example -\inversion @var{from-pitch} @var{to-pitch} @var{musicexpr} +\inversion @var{around-pitch} @var{to-pitch} @var{musicexpr} @end example -@code{@var{musicexpr}} の音程は倒置され、@c -それから @code{@var{from-pitch}} が @code{@var{to-pitch}} になるよう@c -移調されます。 +The @code{@var{musicexpr}} の音程は @code{@var{around-pitch}} を中心に@c +反転され、さらに @code{@var{around-pitch}} が @code{@var{to-pitch}} に@c +マッピングされるように移調されます。 @lilypond[verbatim,quote] music = \relative c' { c d e f } @@ -861,11 +859,15 @@ music = \relative c' { c d e f } } @end lilypond +@warning{反転されるモチーフは絶対オクターブ形式で記述するか、@c +最初に絶対オクターブ形式に変換されるよう @code{\relative} ブロックで囲む@c +必要があります。} + @seealso 記譜法リファレンス: -@ref{様式的な移調}, -@ref{逆行}, -@ref{移調} +@ref{Modal transformations}, +@ref{Retrograde}, +@ref{Transpose} @node 逆行 @@ -896,29 +898,26 @@ music = \relative c' { c8. ees16( fis8. a16 b8.) gis16 f8. d16 } @seealso 記譜法リファレンス: -@ref{転回}, -@ref{様式的な移調}, -@ref{移調} +@ref{Inversion}, +@ref{Modal transformations}, +@ref{Transpose} -@node 様式的な移調 -@unnumberedsubsubsec 様式的な移調 +@node 様式的な変形 +@unnumberedsubsubsec 様式的な変形 @translationof Modal transformations -@c untranslated -@ignore - -@cindex modal transformations (様式的な移調) -@cindex transformations, modal (様式的な移調) -@cindex operations, modal (様式的な移調の操作) +@cindex modal transformations (様式的な変形) +@cindex transformations, modal (様式的な変形) +@cindex operations, modal (様式的な操作) 音階に基づく作曲では、モチーフはさまざまなやり方で頻繁に移調されます。@c -これは、異なる音程に @notation{移調} する場合や、@c -旋回点で @notation{転回} する場合があります。 +これは、モチーフの開始の音程を変えるために @notation{移調} する場合や、@c +旋回点で @notation{反転} する場合があります。 @notation{逆行} するために後戻りする場合もあります@c --- @ref{逆行} を参照してください。 +-- @ref{Retrograde} を参照してください。 -@warning{与えられた音階の中には無い音符は、移調されずに取り残されます。} +@warning{与えられた音階の中に無い音符は、移調されません。} @subsubheading 様式的な移調 @@ -934,45 +933,8 @@ music = \relative c' { c8. ees16( fis8. a16 b8.) gis16 f8. d16 } \modalTranspose @var{from-pitch} @var{to-pitch} @var{scale} @var{motif} @end example -@var{motif} の音符は、@var{scale} @var{to-pitch} と @var{from-pitch} 間の音程によって@c -与えられる度数 -The notes of @var{motif} are shifted within the @var{scale} by the -number of scale degrees given by the interval between @var{to-pitch} -and @var{from-pitch}: -@end ignore - - -@cindex modal transformations -@cindex transformations, modal -@cindex operations, modal - -In a musical composition that is based on a scale, a motif is -frequently transformed in various ways. It may be -@notation{transposed} to start at different places in the scale or -it may be @notation{inverted} around a pivot point in the scale. -It may also be reversed to produce its @notation{retrograde}, see -@ref{Retrograde}. - -@warning{Any note that does not lie within the given scale will be -left untransformed.} - -@subsubheading Modal transposition - -@cindex modal transposition -@cindex transposition, modal -@cindex operation, transposition -@funindex \modalTranspose -@funindex modalTranspose - -A motif can be transposed within a given scale with: - -@example -\modalTranspose @var{from-pitch} @var{to-pitch} @var{scale} @var{motif} -@end example - -The notes of @var{motif} are shifted within the @var{scale} by the -number of scale degrees given by the interval between @var{to-pitch} -and @var{from-pitch}: +@var{motif} の音符は @var{scale} 内を @var{to-pitch} と @var{from-pitch} +間の音程の度数の分だけシフトされます: @lilypond[verbatim,quote] diatonicScale = \relative c' { c d e f g a b } @@ -985,8 +947,7 @@ motif = \relative c' { c8 d e f g a b c } } @end lilypond -An ascending scale of any length and with any intervals may be -specified: +上昇する音階の長さは任意であり、指定する音程も任意です: @lilypond[verbatim,quote] pentatonicScale = \relative c' { ges aes bes des ees } @@ -998,9 +959,9 @@ motif = \relative c' { ees8 des ges,4 } } @end lilypond -When used with a chromatic scale @code{\modalTranspose} has a -similar effect to @code{\transpose}, but with the ability to -specify the names of the notes to be used: +半音階の音階を持つ @code{\modalTranspose} を使った時の効果は +@code{\transpose} と同じですが、使われる音符の名前を特定することが +できます: @lilypond[verbatim,quote] chromaticScale = \relative c' { c cis d dis e f fis g gis a ais b } @@ -1013,29 +974,31 @@ motif = \relative c' { c8 d e f g a b c } } @end lilypond -@subsubheading Modal inversion +@subsubheading 様式的な反転 -@cindex modal inversion -@cindex inversion, modal -@cindex operation, modal inversion +@cindex modal inversion (様式的な反転) +@cindex inversion, modal (様式的な反転) +@cindex operation, modal inversion (様式的な反転操作) @funindex \modalInversion @funindex modalInversion -A motif can be inverted within a given scale around a given pivot -note and transposed in a single operation with: +モチーフを与えられた音階に従って与えられた旋回点 (音符) で反転させて、 +移調させることを 1 つの操作でできます: @example \modalInversion @var{around-pitch} @var{to-pitch} @var{scale} @var{motif} @end example -The notes of @var{motif} are placed the same number of scale degrees -from the @var{around-pitch} note within the @var{scale}, but in the -opposite direction, and the result is then shifted within the -@var{scale} by the number of scale degrees given by the interval between -@var{to-pitch} and @var{around-pitch}. +@var{motif} の音符は @var{scale} 内を @var{to-pitch} と @var{from-pitch} +間の音程の度数の分だけシフトされます: + +@var{motif} の音符は @var{scale} 内を @var{around-pitch} から元の音符までと@c +同じ度数の分だけ逆向きに進んだ位置に配置され、それからその結果は +@var{scale} 内を @var{to-pitch} と @var{around-pitch} 間の音程の度数分だけ@c +シフトされます。 -So to simply invert around a note in the scale use the same value for -@var{around-pitch} and @var{to-pitch}: +そのため、単純に音階をある音符で反転させる場合は、@var{around-pitch} と +@var{to-pitch} で同じ値を使用します: @lilypond[verbatim,quote] octatonicScale = \relative c' { ees f fis gis a b c d } @@ -1047,9 +1010,9 @@ motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 } } @end lilypond -To invert around a pivot between two notes in the scale, invert around -one of the notes and then transpose by one scale degree. The two notes -specified can be interpreted as bracketing the pivot point: +音階の中にある 2 つの音符の中間にある旋回点で反転させるには、@c +2 つの音符の 1 つを旋回点として反転させて、音階の 1 度数分だけ移調させます。@c +指定された 2 つの音符が旋回点を囲んでいると解釈することができます: @lilypond[verbatim,quote] scale = \relative c' { c g' } @@ -1061,8 +1024,7 @@ motive = \relative c' { c c g' c, } } @end lilypond -The combined operation of inversion and retrograde produce the -retrograde-inversion: +反転と逆行の操作を組み合わせると逆行-反転になります: @lilypond[verbatim,quote] octatonicScale = \relative c' { ees f fis gis a b c d } @@ -1075,10 +1037,10 @@ motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 } @end lilypond @seealso -Notation Reference: +記譜法リファレンス: @ref{Inversion}, @ref{Retrograde}, -@ref{Transpose}. +@ref{Transpose} @node ピッチを表示する @@ -1212,21 +1174,24 @@ c2 c @end lilypond 特殊な音部記号については @ref{Mensural clefs}, -@ref{Gregorian clefs}, @ref{Default tablatures}, それに @ref{Custom -tablatures} で説明します。 +@ref{Gregorian clefs}, @ref{Default tablatures}, それに +@ref{Custom tablatures} で説明します。@c +楽譜の中で合図音符を使用するときに音部記号を変更する場合は、@c +@ref{Formatting cue notes} の @code{\cueClef} 関数と +@code{\cueDuringWithClef} 関数を参照してください。 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-clef-properties.ly} - @seealso 記譜法リファレンス: @ref{Mensural clefs}, @ref{Gregorian clefs}, @ref{Default tablatures}, -@ref{Custom tablatures} +@ref{Custom tablatures}, +@ref{Formatting cue notes} コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -1254,7 +1219,7 @@ LilyPond では、音符名は未加工の入力です。@c 調号と音部記号がこの未加工の入力をどのように表示するかを決定します。@c @code{c} のような変更を加えられていない音符は、調号や音部記号とは無関係に、@c @q{C ナチュラル} を意味します。@c -更なる情報は、@rlearning{臨時記号と調号} を参照してください。} +更なる情報は、@rlearning{Accidentals and key signatures} を参照してください。} 調号は楽曲を演奏すべき調性を示します。@c 調号は譜の先頭で変更記号 (フラットやシャープ) のセットによって示されます。@c @@ -1315,20 +1280,19 @@ fis @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} - @seealso 音楽用語集: @rglos{church mode}, @rglos{scordatura} 学習マニュアル: -@rlearning{臨時記号と調号} +@rlearning{Accidentals and key signatures} コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -1340,7 +1304,7 @@ fis @rinternals{KeyCancellation}, @rinternals{KeySignature}, @rinternals{key-cancellation-interface}, -@rinternals{key-signature-interface}. +@rinternals{key-signature-interface} @node オッターバ囲み @@ -1375,15 +1339,9 @@ a2 b @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{ottava-text.ly} - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ottava-text.ly} - @seealso 音楽用語集: @rglos{octavation} @@ -1470,7 +1428,7 @@ a2 b \transposition a c d e f \textLengthOn -s1*0^\markup { Switch to B\flat clarinet } +<>^\markup { Switch to B\flat clarinet } R1 \key bes \major @@ -1478,14 +1436,14 @@ R1 c2 g @end lilypond - @seealso 音楽用語集: @rglos{concert pitch}, @rglos{transposing instrument} 記譜法リファレンス: -@ref{Quoting other voices}, @ref{移調} +@ref{Quoting other voices}, +@ref{Transpose} コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -1502,7 +1460,7 @@ c2 g @cindex automatic accidentals (自動臨時記号) @cindex default accidental style (デフォルトの臨時記号スタイル) -@funindex set-accidental-style +@funindex \accidentalStyle @funindex voice @funindex default @@ -1513,7 +1471,7 @@ LilyPond はどの臨時記号スタイルを使用するのかを指定する @example \new Staff << - #(set-accidental-style 'voice) + \accidentalStyle "voice" @{ @dots{} @} >> @end example @@ -1528,7 +1486,7 @@ LilyPond はどの臨時記号スタイルを使用するのかを指定する 以下のようにします: @example -#(set-accidental-style 'voice 'StaffGroup) +\accidentalStyle #'StaffGroup "voice" @end example サポートされる臨時記号スタイルを以下で示します。@c @@ -1538,7 +1496,7 @@ LilyPond はどの臨時記号スタイルを使用するのかを指定する musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1553,11 +1511,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1570,11 +1528,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1589,7 +1547,7 @@ musicB = { << \context Staff = "up" @{ %%% 次の行を変更したいスタイルに合わせて変更してください: - #(set-accidental-style 'default 'Score) + \accidentalStyle #'Score "default" \musicA @} \context Staff = "down" @{ @@ -1620,7 +1578,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1635,11 +1593,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1652,11 +1610,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicA } \context Staff = "down" { - #(set-accidental-style 'default) + \accidentalStyle "default" \musicB } >> @@ -1692,7 +1650,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1707,11 +1665,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1724,11 +1682,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'voice) + \accidentalStyle "voice" \musicB } >> @@ -1742,14 +1700,19 @@ musicB = { @funindex modern +@c ここから L221 この規則は 20 世紀の一般的な臨時記号の付け方と一致します: -この規則の臨時記号の付け方は、あいまいさを避けるための 2 つの例外 - -- 一時的な臨時記号が使われると、@c +この規則はいくつかの余分なナチュラル記号を省略します +-- 伝統的にダブル シャープの後のシャープに前置されるナチュラル記号と、@c +ダブル フラットの後のフラットに前置されるナチュラル記号を省略します。@c + +@code{modern} 規則の臨時記号の付け方は @code{default} とほぼ同じですが、@c +あいまいさを避けるための 2 つの規則が追加されます + -- 一時的な臨時記号が使われると、 その後の小節で (同じオクターブにある音符に対して) キャンセル記号が@c 譜刻され、@c -臨時記号が使われたのと同じ小節では他のオクターブにある音符にも@c -キャンセル記号が譜刻されます -- -を除いて、@code{default} と同じです。@c +臨時記号が使われた小節では他のオクターブにある音符にもキャンセル記号が@c +譜刻されます。@c そのため、上部譜の第 2 小節の中にある @code{b} と @code{c} の前には@c ナチュラルが付けられています: @@ -1757,7 +1720,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1772,11 +1735,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1789,11 +1752,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \musicB } >> @@ -1821,7 +1784,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1836,11 +1799,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1853,11 +1816,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" \musicB } >> @@ -1889,7 +1852,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1904,11 +1867,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1921,11 +1884,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice) + \accidentalStyle "modern-voice" \musicB } >> @@ -1951,7 +1914,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -1966,11 +1929,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -1983,11 +1946,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \musicB } >> @@ -2017,7 +1980,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2032,11 +1995,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2049,7 +2012,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano) + \accidentalStyle "piano" \musicA } \context Staff = "down" { @@ -2076,7 +2039,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2091,11 +2054,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2108,7 +2071,7 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'piano-cautionary) + \accidentalStyle "piano-cautionary" \musicA } \context Staff = "down" { @@ -2118,7 +2081,6 @@ musicB = { } @end lilypond - @item neo-modern @cindex neo-modern accidental style (neo-modern 臨時記号スタイル) @@ -2140,7 +2102,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2155,11 +2117,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2172,11 +2134,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" \musicB } >> @@ -2197,7 +2159,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2212,11 +2174,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2229,18 +2191,17 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" \musicB } >> } @end lilypond - @item neo-modern-voice @cindex neo-modern-voice accidental style (neo-modern-voice 臨時記号スタイル) @@ -2257,7 +2218,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2272,11 +2233,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2289,11 +2250,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice) + \accidentalStyle "neo-modern-voice" \musicB } >> @@ -2314,7 +2275,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2329,11 +2290,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2346,11 +2307,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicA } \context Staff = "down" { - #(set-accidental-style 'neo-modern-voice-cautionary) + \accidentalStyle "neo-modern-voice-cautionary" \musicB } >> @@ -2376,7 +2337,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2391,11 +2352,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2408,18 +2369,17 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicA } \context Staff = "down" { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" \musicB } >> } @end lilypond - @item teaching @cindex teaching accidental style (teaching 臨時記号スタイル) @@ -2435,11 +2395,11 @@ musicB = { フラット音に対して忠告の臨時記号が譜刻されます -- ただし、前の音符の直後にある同じピッチの音符は例外です。 -@lilypond[quote] +@lilypond[quote,staffsize=18] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2454,11 +2414,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2472,12 +2432,12 @@ musicB = { << \context Staff = "up" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicA } \context Staff = "down" { \key fis \minor - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \musicB } >> @@ -2500,7 +2460,7 @@ musicB = { musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2515,11 +2475,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2532,11 +2492,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicA } \context Staff = "down" { - #(set-accidental-style 'no-reset) + \accidentalStyle "no-reset" \musicB } >> @@ -2554,14 +2514,12 @@ musicB = { 臨時記号はまったく保持されません -- そのため、調号に対応しながら、前にある音楽とは無関係に@c すべての臨時記号が譜刻されます。@c -@code{dodecaphonic} とは異なり、@c -この規則ではナチュラルが譜刻されることはありません。 @lilypond[quote] musicA = { << \relative c' { - cis'8 fis, d'4 8 f bis4 | + cis'8 fis, bes4 8 f bis4 | cis2. 4 | } \\ @@ -2576,11 +2534,11 @@ musicB = { \clef bass \new Voice { \voiceTwo \relative c' { - 8 + 8[ \change Staff = up cis' cis \change Staff = down - + ] \showStaffSwitch \change Staff = up dis'4 | @@ -2593,11 +2551,11 @@ musicB = { \new PianoStaff { << \context Staff = "up" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicA } \context Staff = "down" { - #(set-accidental-style 'forget) + \accidentalStyle "forget" \musicB } >> @@ -2605,12 +2563,6 @@ musicB = { @end lilypond @end table -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{dodecaphonic-style-accidentals-for-each-note-including-naturals.ly} - - @seealso コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -2625,14 +2577,12 @@ musicB = { @rinternals{AccidentalPlacement}, @rinternals{accidental-suggestion-interface} - @cindex accidentals and simultaneous notes (臨時記号と同時発生する音符) @cindex simultaneous notes and accidentals (同時発生する音符と臨時記号) @cindex accidentals in chords (和音の中の臨時記号) @cindex chords, accidentals in (和音の中の臨時記号) @knownissues - 同時発生する音符はシーケンシャル モードで入力されたものと見なされます。@c このことが意味するのは、和音の各音符は入力ファイルの中で記述された順に 1 つずつ発生するものとして、和音の臨時記号は譜刻されるということです。@c @@ -2651,7 +2601,7 @@ musicB = { @lilypond[quote] { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2668,12 +2618,12 @@ musicB = { @lilypond[verbatim,quote] forget = #(define-music-function (parser location music) (ly:music?) #{ - #(set-accidental-style 'forget) - $music - #(set-accidental-style 'modern) + \accidentalStyle "forget" + #music + \accidentalStyle "modern" #}) { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \time 2/4 \repeat volta 2 { c'2 @@ -2685,6 +2635,7 @@ forget = #(define-music-function (parser location music) (ly:music?) #{ } @end lilypond + @node 音域 @unnumberedsubsubsec 音域 @translationof Ambitus @@ -2723,16 +2674,15 @@ forget = #(define-music-function (parser location music) (ly:music?) #{ @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-ambitus-per-voice.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {ambitus-with-multiple-voices.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-ambitus-gap.ly} - @seealso 音楽用語集: @rglos{ambitus} @@ -2750,9 +2700,7 @@ forget = #(define-music-function (parser location music) (ly:music?) #{ @rinternals{AmbitusNoteHead}, @rinternals{ambitus-interface} - @knownissues - 複数のボイスがある場合にボイスごとに音域をとることによって生じる@c 音域の衝突を処理するシステムはありません。 @@ -2910,10 +2858,9 @@ c b < g \xNote c f > b @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {numbers-as-easy-note-heads.ly} - @seealso 記譜法リファレンス: @ref{Setting the staff size} @@ -3015,7 +2962,6 @@ a2 b c d \break @end lilypond - @predefined @code{\aikenHeads}, @code{\aikenHeadsMinor}, @@ -3029,15 +2975,13 @@ a2 b c d \break @code{\walkerHeadsMinor} @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {applying-note-head-styles-depending-on-the-step-of-the-scale.ly} すべての符頭スタイルを調べるには、@ref{Note head styles} を参照してください。 - @seealso コード断片集: @rlsrnamed{Pitches,ピッチ} @@ -3085,13 +3029,11 @@ a2 b c d \break } @end lilypond - @predefined @code{\improvisationOn}, @code{\improvisationOff} @endpredefined - @seealso コード断片集: @rlsrnamed{Pitches,ピッチ} diff --git a/Documentation/ja/notation/repeats.itely b/Documentation/ja/notation/repeats.itely index b41cb45f0b..41a2c5e031 100644 --- a/Documentation/ja/notation/repeats.itely +++ b/Documentation/ja/notation/repeats.itely @@ -1,12 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: fe4f33aca60ea7c58bc9196eac43b4acca1d4437 + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -246,12 +247,31 @@ g1 | g1 | @end lilypond -@code{measureLength} プロパティについての説明は @ref{時間管理} にあります。 +@code{measureLength} プロパティについての説明は @ref{Time administration} +にあります。 -@cindex repeats with ties (タイを持つ繰り返し) -@cindex alternative endings with ties (タイを持つ繰り返しの入れ替え部分) -@cindex ties in repeats (繰り返しの中にあるタイ) -@cindex ties in alternative endings (繰り返しの入れ替え部分の中にあるタイ) +@funindex \inStaffSegno + +@code{\inStaffSegno} コマンドを用いて、セーニョ記号を配置して +@code{\repeat volta} コマンドと連携させることができます。@c +差し替えの小節線記号は Score コンテキストの中でプロパティ @code{segnoType}, +@code{startRepeatSegnoType}, @code{endRepeatSegnoType} あるいは +@code{doubleRepeatSegnoType} を必要に応じてオーバライドすることにより@c +設定することができます。 + +@lilypond[verbatim,quote,relative=1] +e1 +\repeat volta 2 { + \inStaffSegno + f2 g a b +} +c1_"D.S." \bar "|." +@end lilypond + +@cindex repeats, with ties (タイを持つ繰り返し) +@cindex alternative endings, with ties (タイを持つ繰り返しの入れ替え部分) +@cindex ties, in repeats (繰り返しの中にあるタイ) +@cindex ties, alternative endings (繰り返しの入れ替え部分でのタイ) @funindex \repeatTie 繰り返しの 2 回目の部分にタイを付け加えることもできます: @@ -267,24 +287,30 @@ c1 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {shortening-volta-brackets.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {adding-volta-brackets-to-additional-staves.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-double-repeat-default-for-volte.ly} +@cindex repeats, bar numbers letters (繰り返しでの小節番号) +@cindex repeats, alternative bar numbers (入れ替え部分での小節番号) + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + @seealso 音楽用語集: @rglos{repeat}, @rglos{volta} 記譜法リファレンス: -@ref{小節線}, +@ref{Bar lines}, @ref{Modifying context plug-ins}, -@ref{時間管理} +@ref{Time administration} コード断片集: @rlsr{Repeats} @@ -295,9 +321,7 @@ c1 @rinternals{VoltaRepeatedMusic}, @rinternals{UnfoldedRepeatedMusic} - @knownissues - @cindex repeat, ambiguous (あいまいな繰り返し) @cindex nested repeat (ネストされた繰り返し) @cindex repeat, nested (ネストされた繰り返し) @@ -356,7 +380,7 @@ c1 予期しない振る舞いをする可能性があります。@c たいていのケースでは、繰り返しは標準の @code{@bs{}repeat} コマンドを用いるか、@c 適切な小節線を譜刻することによって作成すべきです。@c -更なる情報は、@ref{小節線} を参照してください。} +更なる情報は、@ref{Bar lines} を参照してください。} プロパティ @code{repeatCommands} を用いて繰り返しのレイアウトを@c 制御することができます。@c @@ -425,7 +449,8 @@ b1 voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } \relative c'' { c1 - \set Score.repeatCommands = #(list(list 'volta voltaAdLib) 'start-repeat) + \set Score.repeatCommands = + #(list(list 'volta voltaAdLib) 'start-repeat) c4 b d e \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat) f1 @@ -436,13 +461,12 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly} - @seealso 記譜法リファレンス: -@ref{小節線}, +@ref{Bar lines}, @ref{Formatting text} コード断片集: @@ -459,14 +483,13 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } @translationof Written-out repeats @cindex written-out repeats (繰り返しを描き出す) -@cindex repetitious music (反復の多い音楽) @cindex repeats, written-out (繰り返しを描き出す) -@cindex repeat, unfold (繰り返しを展開する) -@cindex unfold music (音楽を展開する) +@cindex repeats, unfold (繰り返しを展開する) +@cindex repeats, alternative (繰り返しの入れ替え) @cindex unfold repeat (繰り返しを展開する) -@cindex unfold repeat with alternate endings (入れ替え部分のある繰り返しを展開する) -@cindex unfold music with alternate endings (入れ替え部分のある音楽を展開する) -@cindex alternate ending in written-out repeats (描き出される繰り返しの中にある入れ替え部分) +@cindex unfold repeat, with alternate endings (入れ替え部分のある繰り返しを展開する) +@cindex alternate repeats (入れ替えのある繰り返し) +@cindex alternate endings, repeats (繰り返しを入れ替えて終わる) @funindex unfold @code{unfold} コマンドを用いることにより、@c @@ -485,6 +508,20 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } c1 @end lilypond +いくつかのケースでは、特に @code{\relative} コンテキストの中では、@c +@code{\repeat unfold} 関数は音楽表記を複数回記述したものと同じにはなりません。@c +例えば、 + +@example +\repeat unfold 2 @{ a'4 b c @} +@end example + +これは以下と等価ではありません。 + +@example +a'4 b c | a'4 b c +@end example + 入れ替え部分がある繰り返しを展開することもできます。@c @lilypond[verbatim,quote,relative=2] @@ -497,7 +534,8 @@ c1 @end lilypond 繰り返し回数が入れ替え部分の数よりも多い場合、@c -最初の入れ替え部分が複数回使用して、入れ替え数と繰り返し回数を合わせます。 +最初の入れ替え部分だけが適用されます。@c +残りの入れ替えは無視されて譜刻されません。 @lilypond[verbatim,quote,relative=2] \repeat unfold 4 { c4 d e f } @@ -535,6 +573,9 @@ c1 c1 @end lilypond +和音構造は和音の繰り返し記号 @code{q} で繰り返すことができます。@c +@ref{Chord repetition} を参照してください。 + @warning{@code{Voice} コンテキストを明示的にインスタンス化せずに@c @code{@bs{}relative} を @code{@bs{}repeat} の中に配置すると、@c 余計な譜が表示されます。@c @@ -542,6 +583,9 @@ c1 @seealso +記譜法リファレンス: +@ref{Chord repetition} + コード断片集: @rlsr{Repeats} @@ -591,6 +635,10 @@ c1 1 小節よりも短いパターンはスラッシュで置き換えられます。 @lilypond[verbatim,quote,relative=2] +\repeat percent 4 { c128 d e f } +\repeat percent 4 { c64 d e f } +\repeat percent 5 { c32 d e f } +\repeat percent 4 { c16 d e f } \repeat percent 4 { c8 d } \repeat percent 4 { c4 } \repeat percent 2 { c2 } @@ -599,26 +647,34 @@ c1 1 または 2 小節のパターンはパーセントのような記号で置き換えられます。 @lilypond[verbatim,quote,relative=2] -\repeat percent 3 { c4 d e f } -\repeat percent 4 { c2 d } +\repeat percent 2 { c4 d e f } +\repeat percent 2 { c2 d } +\repeat percent 2 { c1 } @end lilypond @lilypond[verbatim,quote,relative=2] \repeat percent 3 { c4 d e f | c2 g' } @end lilypond +1 小節よりも短いけれども異なる演奏時間が含まれるパターンは@c +2 重線のパーセント記号を用います。 + +@lilypond[verbatim,quote,relative=2] +\repeat percent 4 { c8. 16 } +\repeat percent 2 { \times 2/3 { r8 c d } e4 } +@end lilypond + @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-counter.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {percent-repeat-count-visibility.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {isolated-percent-repeats.ly} - @seealso 音楽用語集: @rglos{percent repeat}, @@ -629,23 +685,17 @@ c1 内部リファレンス: @rinternals{RepeatSlash}, +@rinternals{RepeatSlashEvent}, +@rinternals{DoubleRepeatSlash}, @rinternals{PercentRepeat}, +@rinternals{PercentRepeatCounter}, +@rinternals{PercentRepeatedMusic}, +@rinternals{Percent_repeat_engraver}, +@rinternals{DoublePercentEvent}, @rinternals{DoublePercentRepeat}, @rinternals{DoublePercentRepeatCounter}, -@rinternals{PercentRepeatCounter}, -@rinternals{PercentRepeatedMusic} - - -@knownissues - -パーセント繰り返しは 3 種類だけサポートされます: -単一の拍を表す単線のスラッシュ (繰り返される音符の演奏時間とは関係ありません)、@c -1 小節を表す単線の付点スラッシュ、@c -それに 2 小節を表す 2 重線の付点スラッシュ --- これは小節線の上に譜刻されます -- です。@c -16 分音符やそれよりも短い音符から成る単一拍の繰り返しを表す多重線スラッシュや、@c -さまざまな演奏時間の音符から成る単一拍の繰り返しを表す -2 重線の付点スラッシュはサポートされません。 +@rinternals{Double_percent_repeat_engraver}, +@rinternals{Slash_repeat_engraver} @node トレモロの繰り返し @@ -713,10 +763,9 @@ c: c: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {cross-staff-tremolos.ly} - @seealso コード断片集: @rlsr{Repeats} diff --git a/Documentation/ja/notation/rhythms.itely b/Documentation/ja/notation/rhythms.itely index 1ab0753ef2..34183890e8 100644 --- a/Documentation/ja/notation/rhythms.itely +++ b/Documentation/ja/notation/rhythms.itely @@ -1,12 +1,12 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 1f655fba7d94feb67f846785f47ab6fb20dc2e59 + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -149,9 +149,11 @@ a4 b c4. b8 a4. b4.. c8. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{changing-the-number-of-augmentation-dots-per-note.ly} +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{alternative-breve-note.ly} +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-the-number-of-augmentation-dots-per-note.ly} @seealso 音楽用語集: @@ -162,10 +164,11 @@ a4 b c4. b8 a4. b4.. c8. @rglos{Duration names notes and rests} 記譜法リファレンス: -@ref{自動連桁}, -@ref{タイ}, -@ref{リズムを記述する}, -@ref{休符を記述する}, +@ref{Automatic beams}, +@ref{Ties}, +@ref{Stems}, +@ref{Writing rhythms}, +@ref{Writing rests}, @ref{Vocal music}, @ref{Ancient notation}, @ref{Proportional notation} @@ -177,9 +180,7 @@ a4 b c4. b8 a4. b4.. c8. @rinternals{Dots}, @rinternals{DotColumn} - @knownissues - @c Deliberately duplicated in Durations and Rests. -gp 休符の演奏時間には基本的に限界がありません (最大値としても、最小値としても)。@c しかしながら、図柄の数には限界があります: @@ -256,26 +257,25 @@ c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 @funindex tupletNumberFormatFunction @funindex tupletSpannerDuration -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {entering-several-tuplets-using-only-one--times-command.ly} @cindex Tuplet number changes (連符の数の変更) @funindex TupletNumber -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-the-tuplet-number.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {non-default-tuplet-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {controlling-tuplet-bracket-visibility.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {permitting-line-breaks-within-beamed-tuplets.ly} - @seealso 音楽用語集: @rglos{triplet}, @@ -283,23 +283,22 @@ c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 @rglos{polymetric} 学習マニュアル: -@rlearning{調整手段} +@rlearning{Tweaking methods} 記譜法リファレンス: -@ref{時間管理}, -@ref{演奏時間を変更する}, +@ref{Time administration}, +@ref{Scaling durations}, @ref{The tweak command}, -@ref{複合拍子記譜法} +@ref{Polymetric notation} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{TupletBracket}, @rinternals{TupletNumber}, @rinternals{TimeScaledMusic}. - @cindex grace notes within tuplet brackets (連符囲み内の装飾小音符) @knownissues @@ -323,12 +322,14 @@ c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 @cindex durations, scaling (演奏時間を伸縮する) @code{*N/M} (または、@code{M} が 1 の場合は @code{*N}) を演奏時間の後に@c -付け加えることによって、単一の音符、休符、和音の演奏時間を分数 @code{N/M} 倍 -に変更することができます。@c +付け加えることによって、単一の音符、休符、和音の演奏時間を分数 @code{N/M} +倍することができます。@c これは作り出される音符や休符の見た目には影響を与えませんが、@c 変更された演奏時間は小節の中での位置を算出するためと、@c MIDI 出力での演奏時間を決定するために使用されます。@c -掛け合わせる要素は @code{*L*M/N} などのように組み合わせることができます。 +掛け合わせる要素は @code{*L*M/N} のように組み合わせることができます。@c +掛け合わせる要素は演奏時間の一部です: 音符の演奏時間が指定されていない@c +場合、前の音符から取ったデフォルトの演奏時間に要素が掛け合わされます。 以下の例では、最初の 3 つの音符で 2 拍ですが、連符囲みは譜刻されていません。 @@ -336,16 +337,16 @@ MIDI 出力での演奏時間を決定するために使用されます。@c @lilypond[quote,relative=2,verbatim] \time 2/4 % 演奏時間を変更して 3 連符にします -a4*2/3 gis4*2/3 a4*2/3 +a4*2/3 gis a % 通常の演奏時間 -a4 a4 +a4 a % 和音の演奏時間を 2 倍にします 4*2 % 演奏時間は 4 分音符ですが、見た目は 16 分音符です b16*4 c4 @end lilypond -空白音符の演奏時間も掛け算によって変更できます。@c +空白休符の演奏時間も掛け算によって変更できます。@c これは @code{s1*23} のように多くの小節をスキップする場合に役に立ちます。 @cindex compressing music (音楽を圧縮する) @@ -359,7 +360,6 @@ b16*4 c4 分数が掛け合わせられたかのようになります。@c これは楽譜要素の見た目をそのままにして、要素の内部演奏時間に@c @emph{分子}/@emph{分母}を掛け合わせます。@c -ドットの両側にはスペースが必要です。@c ここで、音楽がどのように圧縮され、伸張されるかを示す例を挙げます: @c KEEP LY @@ -368,27 +368,26 @@ b16*4 c4 % 通常の演奏時間 4 c8 a % 2/3 を掛けます -\scaleDurations #'(2 . 3) { +\scaleDurations 2/3 { 4. c8 a f } % 2 を掛けます -\scaleDurations #'(2 . 1) { +\scaleDurations 2/1 { 4 c8 b } @end lilypond -このコマンドの応用例の 1 つは複合拍子表記での使用です。@c -@ref{複合拍子記譜法} を参照してください。 - +このコマンドの応用例の 1 つは多拍子記譜法での使用です。@c +@ref{多拍子記譜法} を参照してください。 @seealso 記譜法リファレンス: -@ref{連符}, -@ref{不可視の休符}, -@ref{複合拍子記譜法} +@ref{Tuplets}, +@ref{Invisible rests}, +@ref{Polymetric notation} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} @node タイ @@ -532,8 +531,23 @@ c2 ~ c @end lilypond タイの破線パターン定義の構造は、スラーの破線パターン定義と同じです。@c -複雑な破線パターンについての更なる情報は @ref{Slurs} にある@c -コード断片集を参照してください。 +複雑な破線パターンについての更なる情報は @ref{Slurs} を参照してください。 + +譜の中で他のオブジェクトと衝突するタイに対しては、@c +@var{whiteout} レイアウト プロパティと @var{layer} レイアウト プロパティを@c +オーバライドしてください。 + +@lilypond[verbatim,quote,ragged-right,relative=2] +\override Tie #'layer = #-2 +\override Staff.TimeSignature #'layer = #-1 +\override Staff.KeySignature #'layer = #-1 +\override Staff.TimeSignature #'whiteout = ##t +\override Staff.KeySignature #'whiteout = ##t +b2 b~ +\time 3/4 +\key a \major +b r4 +@end lilypond @predefined @code{\tieUp}, @@ -547,16 +561,14 @@ c2 ~ c @code{\tieSolid} @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-ties-with-arpeggios.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {engraving-ties-manually.ly} - @seealso 音楽用語集: @rglos{tie}, @@ -564,10 +576,11 @@ c2 ~ c 記譜法リファレンス: @ref{Slurs}, -@ref{自動音符分割} +@ref{Automatic note splitting} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Expressive marks}, +@rlsr{Rhythms} 内部リファレンス: @rinternals{LaissezVibrerTie}, @@ -575,9 +588,7 @@ c2 ~ c @rinternals{TieColumn}, @rinternals{Tie} - @knownissues - タイがアクティブなときに譜を切り換えても斜めのタイは作られません。 タイの最中に音部記号やオクターブを変更することはきちんと定義されていません。@c @@ -661,10 +672,9 @@ a4\rest d4\rest @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {rest-styles.ly} - @seealso 音楽用語集: @rglos{breve}, @@ -672,17 +682,15 @@ a4\rest d4\rest @rglos{maxima} 記譜法リファレンス: -@ref{小節単位の休符} +@ref{Full measure rests} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{Rest} - @knownissues - @c Deliberately duplicated in Durations and Rests. -gp 休符の演奏時間には基本的に限界がありません (最大値としても、最小値としても)。@c しかしながら、図柄の数には限界があります: 128 分から全音符の 8 倍までの@c @@ -765,17 +773,16 @@ s1 s s \skip 1 \skip1 \skip 1 @end lilypond - @seealso 学習マニュアル: -@rlearning{オブジェクトの可視性と色} +@rlearning{Visibility and color of objects} 記譜法リファレンス: @ref{Hidden notes}, @ref{Visibility of objects} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{SkipMusic} @@ -937,38 +944,36 @@ R1^"right" @cindex rest, church @cindex kirchenpausen -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-form-of-multi-measure-rests.ly} @cindex multi-measure rests, positioning @cindex positioning multi-measure rests -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {positioning-multi-measure-rests.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {multi-measure-rest-markup.ly} - @seealso 音楽用語集: @rglos{multi-measure rest} 記譜法リファレンス: -@ref{演奏時間}, +@ref{Durations}, @ref{Text}, @ref{Formatting text}, @ref{Text scripts} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{MultiMeasureRest}, @rinternals{MultiMeasureRestNumber}, @rinternals{MultiMeasureRestText} - @cindex fingerings and multi-measure rests (運指記号と複数小節にまたがる休符) @cindex multi-measure rests and fingerings (運指記号と複数小節にまたがる休符) @@ -995,7 +1000,7 @@ R1^"right" * メトロノーム記号:: * 上拍:: * 無韻律の音楽:: -* 複合拍子記譜法:: +* 多拍子記譜法:: * 自動音符分割:: * 旋律のリズムを示す:: @end menu @@ -1086,8 +1091,8 @@ c c c c \new Staff { \relative c' { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1102,11 +1107,11 @@ c c c c @enumerate @item -@code{@var{timeSignatureFraction}}, 拍子を示す Scheme ペア。 +@code{@var{timeSignatureFraction}}, 拍子を示す分数。 @item @code{@var{baseMomentFraction}}, 拍子の基本タイミングの単位となる@c -分子と分母を保持する Scheme ペア。 +分子と分母を保持する分数。 @item @code{@var{beatStructure}}, 小節の拍構造を示す Scheme リスト。@c @@ -1114,7 +1119,7 @@ c c c c @item @code{@var{beamExceptions}}, 指定された拍子でそれぞれの拍で終了しない@c -連桁のルールを保持する配列リスト。@c +連桁の規則を保持する配列リスト。@c @ref{自動連桁の振る舞いを設定する} に説明があります。 @end enumerate @@ -1131,8 +1136,8 @@ c c c c \relative c' { % コンテキストがまだインスタンス化されていないため、この呼び出しは失敗します \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1140,8 +1145,8 @@ c c c c \repeat unfold 7 { c8 } | % この呼び出しは成功します \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1162,13 +1167,13 @@ c c c c \relative c' { \repeat unfold 8 { c8 } | \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 \repeat unfold 8 { c8 } | - \revertTimeSignatureSettings #'(4 . 4) + \revertTimeSignatureSettings 4/4 \time 4/4 \repeat unfold 8 { c8 } | } @@ -1184,8 +1189,8 @@ c c c c \new StaffGroup << \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -1193,8 +1198,8 @@ c c c c } \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(1 3) % beatStructure #'() % beamExceptions \time 4/4 @@ -1223,30 +1228,19 @@ c c c c @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{changing-the-time-signature-without-affecting-the-beaming.ly} - -@cindex compound time signatures -@cindex time signature, compound - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly} - @seealso 音楽用語集: @rglos{time signature} 記譜法リファレンス: @ref{Mensural time signatures}, -@ref{時間管理} +@ref{Time administration} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{TimeSignature}, @@ -1316,20 +1310,19 @@ d4 g e c @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {printing-metronome-and-rehearsal-marks-below-the-staff.ly} @c perhaps also an example of how to move it horizontally? -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-tempo-without-a-metronome-mark.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {creating-metronome-marks-in-markup-mode.ly} 詳細は @ref{Formatting text} を参照してください。 - @seealso 音楽用語集: @rglos{metronome}, @@ -1356,16 +1349,15 @@ d4 g e c @cindex upbeat (上拍) @cindex partial measure (部分小節) @cindex measure, partial (部分小節) +@cindex measure, pickup (ピックアップ小節) @cindex pickup measure (ピックアップ小節) -@cindex measure, change length (小節の長さの変更) @funindex measurePosition @funindex \partial @funindex partial -弱拍や上拍などのような部分小節またはピックアップ小節は、@c -@code{\partial} コマンドを使って入力します。@c -以下の構文を使用します: +@emph{弱拍} や @emph{上拍} などのような部分小節またはピックアップ小節は、@c +@code{\partial} コマンドを使って入力します:@c @example \partial @var{duration} @@ -1374,87 +1366,104 @@ d4 g e c @noindent @code{duration} は、最初の完全な長さを持つ小節の前に置かれる小節の長さです: -@lilypond[quote,verbatim,relative=2] -\partial 4 e4 | -a2. c,4 | -@end lilypond - -部分小節は、完全な長さを持つ小節よりも短い演奏時間なら、@c -どのような長さでも持つことができます: - -@lilypond[quote,verbatim,relative=2] -\partial 4 e4 | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 8 +e8 | a4 c8 b c4 | @end lilypond -部分小節は 1 小節よりも短い任意の演奏時間にすることができます: +@var{duration} は、完全な長さを持つ小節より短い演奏時間であれば、@c +任意の値を取ることができます: -@lilypond[quote,verbatim,relative=2] -\partial 8*3 c8 d e | -a2. c,4 | +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\partial 4. +r4 e8 | a4 c8 b c4 | @end lilypond -内部的には、@code{\partial @var{duration}} は以下のように翻訳されます: +@code{\partial @var{duration}} を以下のように記述することもできます: @example \set Timing.measurePosition -@var{duration} @end example -例えば、@code{\partial 8*3} は以下のようになります: +この場合、@code{\partial 8} は以下のようになります: -@example -\set Timing.measurePosition = #(ly:make-moment -3 8) -@end example +@lilypond[quote,verbatim,relative=1] +\time 3/4 +\set Timing.measurePosition = #(ly:make-moment -1 8) +e8 | a4 c8 b c4 | +@end lilypond プロパティ @code{measurePosition} は、@c ある時点でその小節はどれくらい演奏済みになっているかを示す有理数を保持します。@c このプロパティは @code{\partial} によって負の数にセットされるということに@c 注意してください: -すなわち、@code{\partial 4} は内部的に @code{-4} に翻訳され、@c +すなわち、@code{\partial 4} は内部的に @w{@code{-4}} に翻訳され、@c @qq{その小節には 4 分音符が残っている} という意味になります。 - @seealso 音楽用語集: @rglos{anacrusis} 記譜法リファレンス: -@ref{装飾小音符} +@ref{Grace notes} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{Timing_translator} @knownissues - -@code{\partial} コマンドは楽曲の開始時で使用されることだけを@c -意図したものです。@c +@code{\partial} コマンドは楽曲の開始時でのみ使用すべきです。@c 楽曲の途中でこのコマンドを使用した場合、@c -奇妙な警告がいくつか発生するかもしれません。@c -曲の途中では @code{\set Timing.measurePosition} を使用してください。 +警告や問題が発生する可能性があります。@c +曲の途中では @code{\partial} の代わりに +@code{\set Timing.measurePosition} を使用してください。 + +@lilypond[quote,verbatim,relative=1] +\time 6/8 +\partial 8 +e8 | a4 c8 b[ c b] | +\set Timing.measurePosition = #(ly:make-moment -1 4) +r8 e,8 | a4 c8 b[ c b] | +@end lilypond + @node 無韻律の音楽 @unnumberedsubsubsec 無韻律の音楽 @translationof Unmetered music -@cindex bar lines, turning off (小節線を付けない) -@cindex bar numbering, turning off (小節の付番を off にする) @cindex cadenza (カデンツァ) +@cindex cadenza, beams (カデンツァでの連桁) +@cindex cadenza, accidentals (カデンツァでの臨時記号) +@cindex cadenza, bar lines (カデンツァでの小節線) +@cindex cadenza, bar numbers (カデンツァでの小節番号) @cindex unmetered music (無韻律の音楽) +@cindex unmetered music, beams (無韻律の音楽での連桁) +@cindex unmetered music, accidentals (無韻律の音楽での臨時記号) +@cindex unmetered music, bar lines (無韻律の音楽での小節線) +@cindex unmetered music, bar numbers (無韻律の音楽での小節番号) +@cindex accidentals, cadenzas (カデンツァでの臨時記号) +@cindex accidentals, unmetered music (無韻律の音楽での臨時記号) +@cindex bar lines, cadenzas (カデンツァでの小節線) +@cindex bar lines, unmetered music (無韻律の音楽での小節線) +@cindex bar numbers, cadenzas (カデンツァでの小節番号) +@cindex bar numbers, unmetered music (無韻律の音楽での小節番号) +@cindex beams, cadenzas (カデンツァでの連桁) +@cindex beams, unmetered music (無韻律の音楽での連桁) @funindex \cadenzaOn @funindex cadenzaOn @funindex \cadenzaOff @funindex cadenzaOff -小節線と小節番号は自動的に算出されます。@c -無韻律の音楽 (例えば、カデンツァの一部) では、この機能は望ましくありません。@c -小節線と小節番号の自動算出を off にするには@c -コマンド @code{\cadenzaOn} を使用し、@c -再び on にするには @code{\cadenzaOff} を使用します。 +韻律のある音楽では、自動的に小節線が挿入され、小節番号が算出されます。@c +無韻律の音楽 (例えばカデンツァ) では、これは望ましくなく、コマンド +@code{\cadenzaOn} を用いて @q{スイッチ off} することができます。@c +@q{スイッチ on} に戻すには、適切な場所で @code{\cadenzaOff} を用います。 @lilypond[verbatim,relative=2,quote] c4 d e d @@ -1465,8 +1474,7 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -小節の付番は、カデンツァが存在しないかのように、@c -カデンツァの終了点で再開されます: +カデンツァが終わると、小節番号が再開されます。 @lilypond[verbatim,relative=2,quote] % すべての小節番号を表示します @@ -1479,65 +1487,82 @@ c4 c d8[ d d] f4 g4. d4 e d c @end lilypond -@cindex beaming in cadenzas (カデンツァでの連桁) -@cindex beaming in unmetered music (無韻律の音楽での連桁) -@cindex cadenza, beaming in (カデンツァでの連桁) -@cindex unmetered music, beaming in (無韻律の音楽での連桁) +カデンツァの中に @code{\bar} コマンドを挿入したとしても、新しい小節が@c +始まることはありません。@c +そのため、注意喚起のための臨時記号は手動で挿入する必要があります。@c +@ref{Accidentals} を参照してください。 自動連桁は @code{\cadenzaOn} で off になり、@c @code{\cadenzaOff} で on になります。@c このため、カデンツァ内の連桁はすべて手動で入力する必要があります (@ref{手動連桁})。 +@lilypond[verbatim,relative=2,quote] +c4 d e d +\cadenzaOn +cis4 d cis d +\bar "|" +cis4 d cis! d +\cadenzaOff +\bar "|" +@end lilypond + +自動連桁は @code{\cadenzaOn} によって off になります。@c +そのため、カデンツァの中に連桁を挿入するには手動で行う必要があります。@c +@ref{Manual beams} を参照してください。 + @lilypond[verbatim,relative=2,quote] \repeat unfold 8 { c8 } \cadenzaOn -\repeat unfold 5 { c8 } +cis8 c c c c \bar"|" +c8 c c \cadenzaOff \repeat unfold 8 { c8 } @end lilypond -これらの定義済みコマンドは、@c -たとえ @code{Voice} コンテキストの 1 つの中に配置したとしても、@c -楽譜のすべての譜に影響を与えるということに注意してください。@c -これを変更するには、@ref{複合拍子記譜法} で示されているように、@c -@code{Timing_translator} を @code{Score} コンテキストから -@code{Staff} コンテキストに移動させます。 ++These predefined commands affect all staves in the score, even when ++placed in just one @code{Voice} context. To change this, move the ++@code{Timing_translator} from the @code{Score} context to the ++@code{Staff} context. See @ref{Polymetric notation}. +これらの定義済みコマンドは、たとえ @code{Voice} コンテキストの 1 つの@c +中に配置したとしても、楽譜の中にあるすべての譜に影響を与えます。@c +これを変更するには、@code{Timing_translator} を @code{Score} コンテキスト@c +から @code{Staff} コンテキストに移動させます。@c +@ref{Polymetric notation} を参照してください。 @predefined @code{\cadenzaOn}, @code{\cadenzaOff} @endpredefined - @seealso 音楽用語集: @rglos{cadenza} 記譜法リファレンス: -@ref{Visibility of objects} +@ref{Visibility of objects}, +@ref{Polymetric notation}, +@ref{Manual beams}, +@ref{Accidentals} コード断片集: -@rlsrnamed{Rhythms,リズム} - +@rlsr{Rhythms} -@cindex cadenza line breaks (カデンツァでの改行) -@cindex cadenza page breaks (カデンツァでの改ページ) +@cindex cadenza, line breaks (カデンツァでの改行) +@cindex cadenza, page breaks (カデンツァでの改ページ) @cindex unmetered music, line breaks (無韻律の音楽での改行) @cindex unmetered music, page breaks (無韻律の音楽での改ページ) @cindex breaks in unmetered music (無韻律の音楽での改行、改ページ) -@cindex line breaks in cadenzas (カデンツァでの改行) -@cindex page breaks in cadenzas (カデンツァでの改ページ) -@cindex line breaks in unmetered music (無韻律の音楽での改行) -@cindex page breaks in unmetered music (無韻律の音楽での改ページ) +@cindex line breaks, cadenzas (カデンツァでの改行) +@cindex page breaks, cadenzas (カデンツァでの改ページ) +@cindex line breaks, unmetered music (無韻律の音楽での改行) +@cindex page breaks, unmetered music (無韻律の音楽での改ページ) @knownissues - -LilyPond は改行と改ページを小節線の箇所にのみ挿入します。@c -無韻律の音楽が譜の行の終わりまでに終了しないのならば、@c -以下のように不可視の小節線を挿入して、@c -改行または改ページを起こすことができる場所であることを示す必要があります: +自動の改行と改ページが挿入されるのは小節線のある場所だけです。@c +そのため、長い無韻律の音楽で改行や改ページを行うには手動で @q{不可視の} +小節線を挿入する必要があります: @example \bar "" @@ -1545,7 +1570,7 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @code{\cadenzaOn} で楽曲を始める場合、@c @code{Voice} コンテキストを明示的に作成すべきです。@c -さもないと、奇妙なエラーが発生する可能性があります。 +さもないと、予期しないエラーが発生する可能性があります。 @example \new Voice @{ @@ -1559,19 +1584,19 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @end example -@node 複合拍子記譜法 -@unnumberedsubsubsec 複合拍子記譜法 +@node 多拍子記譜法 +@unnumberedsubsubsec 多拍子記譜法 @translationof Polymetric notation @c This section necessarily uses \set @c This is acceptable -td @cindex double time signatures (2 重拍子) -@cindex signatures, polymetric (複合韻律) -@cindex time signatures, polymetric (複合拍子) +@cindex signatures, polymetric (多拍子) +@cindex time signatures, polymetric (多拍子) @cindex time signatures, double (2 重拍子) -@cindex polymetric signatures (複合韻律) -@cindex meter, polymetric (複合韻律拍) +@cindex polymetric signatures (多拍子) +@cindex meter, polymetric (多拍子) @funindex timeSignatureFraction @funindex \scaleDurations @@ -1579,59 +1604,57 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @funindex \times @funindex times +多拍子記譜法がサポートされます。 複合拍子記譜法がサポートされます。@c 明示的な複合拍子と、拍子指定を変更して音符の演奏時間を@c 伸縮することによる複合拍子のどちらもです。 -@strong{@i{それぞれの譜は異なる拍子を持ち、小節の長さは等価である場合}} +@subsubheading それぞれの譜は異なる拍子を持ち、小節の長さは等価である場合 -この記譜を作成するには、各譜に共通の拍子をセットし、@c -@code{timeSignatureFraction} に望みの分数をセットすることによって記号を@c -手動で置き換え、各譜の演奏時間を伸縮させて共通の拍子に合わせます --- @ref{拍子} を参照してください。@c -演奏時間の伸縮は @code{\scaleDurations} で行います。@c -このコマンドの使用方法は @code{\times} と同じですが、連符囲みを@c -作成しません -- @ref{演奏時間を変更する} を参照してください。 +各譜共通の拍子記号をセットして、@c +@code{timeSignatureFraction} にお望みの分数をセットします。@c +それから、@code{\scaleDurations} 関数を用いて共通の拍子記号に対する +各譜の音符の演奏時間を伸縮させます。 -@cindex beaming in polymetric music (複合拍子音楽での連桁) -@cindex beaming in polymetric meter (複合拍での連桁) +@cindex beams, with polymetric meters (多拍子での連桁) +@cindex polymetric meters, with beams (多拍子での連桁) -この例では、3/4, 9/8 それに 10/8 の拍子を持つ音楽が並列に並べられています。@c -2 番目の譜では、演奏時間に 2/3 が掛けられ、それによって 2/3 * 9/8 = 3/4 と@c -なっています。@c -3 番目の譜では、演奏時間に 3/5 が掛けられ、それによって 3/5 * 10/8 = 3/4 と@c -なっています。@c -演奏時間の伸縮は自動連桁の規則に影響を与えるため、しばしば手動で連桁を@c -挿入することが必要になります。 +以下の例では、拍子記号 3/4, 9/8, それに 10/8 の音楽が並列しています。@c +2 番目の譜では示された演奏時間に 2/3 が掛けられ +(なぜなら、2/3 * 9/8 = 3/4 だからです)、@c +3 番目の譜では示された演奏時間に 3/5 が掛けられます +(なぜなら、3/5 * 10/8 = 3/4 だからです)。@c +演奏時間の伸縮は自動連桁の規則に影響を与えるため、@c +手動で連桁を付ける必要があるかもしれません。 @lilypond[quote,verbatim] \relative c' << \new Staff { \time 3/4 c4 c c | - c c c | + c4 c c | } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(9 . 8) - \scaleDurations #'(2 . 3) - \repeat unfold 6 { c8[ c c] } + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 + \repeat unfold 6 { c8[ c c] } } \new Staff { \time 3/4 - \set Staff.timeSignatureFraction = #'(10 . 8) - \scaleDurations #'(3 . 5) { + \set Staff.timeSignatureFraction = 10/8 + \scaleDurations 3/5 { \repeat unfold 2 { c8[ c c] } \repeat unfold 2 { c8[ c] } | - c4. c4. \times 2/3 { c8[ c c] } c4 + c4. c \times 2/3 { c8[ c c] } c4 } } >> @end lilypond -@strong{@i{それぞれの譜は異なる拍子を持ち、小節の長さは等価ではない場合}} +@subsubheading それぞれの譜は異なる拍子を持ち、小節の長さは等価ではない場合 @code{Timing_translator} と @code{Default_bar_line_engraver} を @code{Staff} コンテキストに移すことによって、@c @@ -1676,11 +1699,43 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します >> @end lilypond -@snippets +@funindex \compoundMeter +@cindex compound time signatures (複合拍子記号) +@cindex time signature, compound + +@subsubheading 複合拍子記号 + +複合拍子記号は @code{\compoundMeter} を用いて作成します。@c +構文は以下の通りです: + +@example +\compoundMeter #'@code{(list of lists)} +@end example + +最も簡単な構成は単一のリストであり、@c +リストの @emph{最後の} 数字が拍子記号の分母になります。 -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{compound-time-signatures.ly} +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((2 2 2 8)) + \repeat unfold 6 c8 \repeat unfold 12 c16 +} +@end lilypond +リストを追加することでより複雑な拍子を構築することができます。@c +また、この関数で指定された値に基づいて自動連桁の設定は調節されます。 + +@lilypond[quote,verbatim] +\relative c' { + \compoundMeter #'((1 4) (3 8)) + \repeat unfold 5 c8 \repeat unfold 10 c16 +} + +\relative c' { + \compoundMeter #'((1 2 3 8) (3 4)) + \repeat unfold 12 c8 +} +@end lilypond @seealso 音楽用語集: @@ -1689,11 +1744,13 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @rglos{meter} 記譜法リファレンス: -@ref{拍子}, -@ref{演奏時間を変更する} +@ref{Automatic beams}, +@ref{Manual beams}, +@ref{Time signature}, +@ref{Scaling durations} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{TimeSignature}, @@ -1701,9 +1758,7 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @rinternals{Default_bar_line_engraver}, @rinternals{Staff} - @knownissues - 異なる拍子を持つ譜が並列に並べられている場合、@c 同時に起こる音符の水平方向の位置は同じになります。@c しかしながら、それぞれの譜の小節線により、@c @@ -1716,27 +1771,36 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @cindex notes, splitting (音符を分割する) @cindex splitting notes (音符を分割する) +@cindex rests, splitting (休符を分割する) +@cindex splitting rests (休符を分割する) @funindex Note_heads_engraver @funindex Completion_heads_engraver +@funindex Completion_rest_engraver 小節線をまたがる長い音符を自動的にタイで結ばれた音符に変換することができます。@c -これを行うには、@code{Note_heads_engraver} を -@code{Completion_heads_engraver} で置き換えます。@c -以下の例では、小節線をまたがる音符が分割され、タイで結ばれています。 +これを行うには、@code{Note_heads_engraver} を @code{Completion_heads_engraver} +で置き換えます。@c +同様に、小節線をまたがる長い休符を自動的に分割することができます。 +これを行うには、@code{Rest_engraver} を @code{Completion_rest_engraver} +で置き換えます。@c +以下の例では、小節線をまたがる音符と休符は分割され、@c +音符はされにタイで結ばれています。 @lilypond[quote,verbatim,relative=1] \new Voice \with { \remove "Note_heads_engraver" \consists "Completion_heads_engraver" + \remove "Rest_engraver" + \consists "Completion_rest_engraver" } -{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 } +{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 r1*2 } @end lilypond -このエングラーバは進行中の音符をすべて小節線のところで分割して、@c -タイを挿入します。@c -このエングラーバの用途の 1 つに複雑な楽譜のデバッグがあります: +これらのエングラーバは進行中の音符と休符をすべて小節線のところで分割して、@c +音符に対してはタイを挿入します。@c +これらのエングラーバの用途の 1 つに複雑な楽譜のデバッグがあります: 何小節かで音符がきちんと満たされていない場合、@c このエングラーバで挿入されたタイが、それぞれの小節の狂いを示します。 @@ -1745,20 +1809,20 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します 音楽用語集: @rglos{tie} 学習マニュアル: -@rlearning{エングラーバの説明}, -@rlearning{エングラーバを追加 / 削除する} +@rlearning{Engravers explained}, +@rlearning{Adding and removing engravers} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{Note_heads_engraver}, @rinternals{Completion_heads_engraver}, +@rinternals{Rest_engraver}, +@rinternals{Completion_rest_engraver}, @rinternals{Forbid_line_break_engraver} - @knownissues - すべての演奏時間を通常の音符と付点で正確に表すことはできません (特に、連符を含んでいる場合) が、@c @code{Completion_heads_engraver} が連符を挿入することはありません。 @@ -1841,13 +1905,12 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {guitar-strum-rhythms.ly} - @seealso コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{RhythmicStaff}, @@ -1874,8 +1937,7 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します @cindex beams, manual (手動連桁) @cindex manual beams (手動連桁) -@cindex beams, setting rules for (連桁の規則を設定する) -@cindex beams, custom rules for (連桁のためのカスタム規則) +@cindex beams, customizing rules (連桁の規則をカスタマイズする) @funindex \autoBeamOn @funindex autoBeamOn @@ -1905,58 +1967,54 @@ c4 c8 c8. c16 c8. c16 c8 @end lilypond -@cindex melismata, beams (メリスマと連桁) -@cindex beams and melismata (連桁とメリスマ) - -@warning{歌曲の中でメリスマを表すために連桁を使用する場合、 -@code{\autoBeamOff} で自動連桁を off にして、手動で連桁を示すべきです。} +@cindex melismata, with beams (メリスマの連桁) +@cindex beams, with melismata (メリスマの連桁) -@warning{@code{@bs{}partcombine} を @code{@bs{}autoBeamOff} と一緒に@c +@warning{歌曲の中でメリスマを表すために連桁を使用する場合、@c +@code{\autoBeamOff} で自動連桁を off にして、手動で連桁を示すべきです。@c +@code{@bs{}partcombine} を @code{@bs{}autoBeamOff} と一緒に@c 用いると予期しない結果になる可能性があります。@c -詳細は以下のコード断片を参照してください。} +詳細はコード断片集を参照してください。} 自動的に挿入されるデフォルトの連桁とは異なるパターンの連桁を@c 作成することができます -- @ref{自動連桁の振る舞いを設定する} を参照してください。 - @predefined @code{\autoBeamOff}, @code{\autoBeamOn} @endpredefined - -@snippets - -@cindex line breaks and beams (改行と連桁) -@cindex beams and line breaks (連桁と改行) - +@cindex beams, line breaks (連桁と改行) +@cindex line breaks, beams (改行と連桁) +@c 未訳 +@cindex beams, with knee gap +@cindex knee gap, with beams @funindex breakable -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beams-across-line-breaks.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {changing-beam-knee-gap.ly} -@cindex \partcombine and \autoBeamOff (\partcombine と \autoBeamOff) -@cindex \autoBeamOff and \partcombine (\autoBeamOff と \partcombine) +@cindex beams, \partcombine with \autoBeamOff (連桁と \autoBeamOff を伴う \partcombine) +@cindex voices, \partcombine with \autoBeamOff (ボイスと \autoBeamOff を伴う \partcombine) - -@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle] +@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle] {partcombine-and-autobeamoff.ly} - @seealso 記譜法リファレンス: -@ref{手動連桁}, -@ref{自動連桁の振る舞いを設定する} +@ref{Manual beams}, +@ref{Setting automatic beam behavior}. インストールされているファイル: @file{scm/auto-beam.scm} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{Auto_beam_engraver}, @@ -1967,22 +2025,18 @@ c16 c8 @rinternals{beam-interface}, @rinternals{unbreakable-spanner-interface} - @knownissues - -連桁は他のボイスの中にある符頭や臨時記号と衝突する可能性があります。 +連桁のプロパティは連桁構築の開始時に決定され、@c +その後から連桁の完了までの間に追加された連桁プロパティの変更は +@emph{次の} 連桁から影響を与えます。 @node 自動連桁の振る舞いを設定する @unnumberedsubsubsec 自動連桁の振る舞いを設定する @translationof Setting automatic beam behavior - -@cindex automatic beams, tuning (自動連桁を調整する) -@cindex tuning automatic beaming (自動連桁を調整する) -@cindex automatic beam generation (自動連桁生成) -@cindex autobeam (自動連桁) -@cindex lyrics and beaming (歌詞と連桁) +@cindex beams, with lyrics (連桁と歌詞) +@cindex lyrics, with beams (歌詞と連桁) @funindex autoBeaming @funindex baseMoment @@ -1995,11 +2049,11 @@ c16 c8 @funindex set たいていの場合、自動連桁は拍の終わりで終了します。@c -拍の終了点はコンテキスト プロパティ @code{baseMoment} と @code{beatStructure} -によって決定されます。@c -@code{beatStructure} は @code{baseMoment} を単位とする小節の各拍の長さを@c -定義する Scheme リストです。@c -デフォルトでは、@code{baseMoment} は「1/拍子の分母」です。@c +拍の終了点はコンテキスト プロパティ @code{baseMoment} と +@code{beatStructure} によって決定されます。@c +@code{beatStructure} は @code{baseMoment} を単位とする小節の各拍の@c +長さを定義する Scheme リストです。@c +デフォルトでは、@code{baseMoment} は @q{1/拍子の分母} です。@c デフォルトでは、各拍の長さは @code{baseMoment} です。 @lilypond[quote,relative=2,verbatim] @@ -2070,7 +2124,7 @@ c16^"(3+2)" c c c c | @code{beatLength} は @i{moment} -- 演奏時間の単位 -- です。@c タイプ @i{momento} の量は Scheme 関数 @code{ly:make-moment} によって作り出されます。@c -この関数についての更なる情報は @ref{時間管理} を参照してください。 +この関数についての更なる情報は @ref{Time administration} を参照してください。 デフォルトでは、@code{baseMoment} には「1/拍子の分母」がセットされています。@c このデフォルトの例外は @file{scm/time-signature-settings.scm} で見つかります。 @@ -2095,7 +2149,7 @@ c16 c c | @code{beamExceptions} は規則タイプのキーと連桁規則の値を持つ配列リストです。 現時点で、利用可能な唯一の規則タイプの値は、@c -連桁の終わりのための @code{#'end} です。 +連桁の終わりのための @code{'end} です。 連桁規則は、連桁タイプとその連桁タイプの最短演奏時間の音符を保持する連桁に@c 適用されるグループ化の仕方を示す Scheme 配列リスト (あるいはペアのリスト) です。 @@ -2134,10 +2188,10 @@ c16 c c | \repeat unfold 6 { a8 } @end lilypond -ある拍子のデフォルトの自動連桁設定は @file{scm/beam-settings.scm} +ある拍子に対するデフォルトの自動連桁設定は @file{scm/beam-settings.scm} の中で決定されます。@c ある拍子に対する自動連桁のデフォルト設定を変更する方法は -@ref{拍子} で説明しています。 +@ref{Time signature} で説明しています。 ある拍子に対する自動連桁設定の多くには @code{beamExceptions} が登録されています。@c @@ -2158,20 +2212,35 @@ c16 c c | \repeat unfold 8 {c8} @end lilypond -同様に、デフォルトで 8 分音符のみの 3/4 拍子の小節は 1 つの連桁で囲まれます。@c -3/4 拍子での 8分音符を拍毎に連桁で囲むには、@c -@code{beamExceptions} をリセットします。 +同様に、3/4 拍子はデフォルトで 8 分音符しかない小節を 1 つの連桁で囲み@c +ます。@c +3/4 拍子の 8 分音符に拍毎の連桁を付けるには、@code{beamExceptions} を@c +リセットします。 @c KEEP LY @lilypond[quote,verbatim,relative=2] \time 3/4 -% デフォルトでは beamExceptions のため、(3) の連桁になります +% beamExceptions により、デフォルトで (6) の連桁を付けます \repeat unfold 6 {a8} | -% 以下は beatLength のため、(1 1 1) の連桁になります +% beatLength により、これは (1 1 1) の連桁を付けます \set Timing.beamExceptions = #'() \repeat unfold 6 {a8} @end lilypond +ロマン派や古典派時代の譜刻では、3/4 拍子の小節の途中から連桁が始まる@c +ことがありますが、誤った 6/8 拍子の印象を与えるため現代の習慣では@c +用いません (Gould の 153 ページを参照してください)。@c +3/8 拍子でも同様の状況が発生します。@c +この振る舞いはコンテキスト プロパティ @code{beamHalfMeasure} によって@c +制御されます -- これは分子が 3 の拍子記号の場合にのみ効果を持ちます: + +@lilypond[quote,verbatim,relative=2] +\time 3/4 +r4. a8 a a | +\set Timing.beamHalfMeasure = ##f +r4. a8 a a | +@end lilypond + @i{@strong{自動連桁はどのように機能するのか}} 自動連桁が有効である場合、自動連桁の配置はコンテキスト プロパティ @@ -2205,33 +2274,37 @@ c16 c c | @end itemize -上記の規則で、連桁タイプは連桁でグループ化された音符の最短演奏時間です。 +上記の規則で、@emph{連桁タイプ} は連桁でグループ化された音符の最短演奏時間です。 -参考として、@c デフォルトの連桁規則は @file{scm/time-signature-settings.scm} の中にあります。 @snippets @cindex beams, subdividing (連桁をサブ グループ化する) -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {subdividing-beams.ly} +@c 未訳 +@cindex beamlets, orienting + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{strict-beat-beaming.ly} + @cindex measure groupings (小節をグループ化する) @cindex beats, grouping (拍をグループ化する) @cindex grouping beats (拍をグループ化する) @cindex measure sub-grouping (小節をサブ グループ化する) -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {conducting-signs,-measure-grouping-signs.ly} -@cindex beam, last in score (楽譜の最後の連桁) -@cindex beam, last in polyphonic voice (多声ボイスの最後の連桁) +@cindex beam, endings in a score (楽譜の終わりでの連桁) +@cindex beam, endings with multiple voices (複数のボイスの終わりでの連桁) -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {beam-endings-in-score-context.ly} - @seealso インストールされているファイル: @file{scm/beam-settings.scm} @@ -2245,7 +2318,6 @@ c16 c c | @rinternals{BeamForbidEvent}, @rinternals{beam-interface} - @knownissues 自動連桁が終了しておらず、まだ音符を受け付けている最中に楽譜が終了する場合、@c その最後の連桁はまったく譜刻されません。@c @@ -2255,6 +2327,50 @@ c16 c c | ボイスや楽譜の最後の連桁には手動で連桁を付けることにより、@c これらの問題を回避できます。 +デフォルトでは、@code{Timing} コンテキストは @code{Score} コンテキストに@c +エイリアスされています。@c +このことは、ある譜で拍子の設定を行うと、@c +他の譜での連桁の付け方にも影響を与えると言うことを意味します。@c +このため、後で出てくる譜で拍子の設定を行うと、@c +前にある譜でセットしたカスタム連桁はリセットされます。@c +この問題を回避する方法の 1 つは、拍子の設定は 1 つの譜でしか行わないことです。 + +@lilypond[quote,verbatim,relative=2] +<< + \new Staff { + \time 3/4 + \set Timing.baseMoment = #(ly:make-moment 1 8) + \set Timing.beatStructure = #'(1 5) + \repeat unfold 6 { a8 } + } + \new Staff { + \repeat unfold 6 { a8 } + } +>> +@end lilypond + +拍子に対するデフォルトの連桁設定を変更することで、@c +常にお望みの連桁を使うこともできます。@c +ある拍子に対する自動連桁設定を変更する方法は @ref{拍子} で説明しています。 + +@lilypond[quote,verbatim,relative=2] +<< + \new Staff { + \overrideTimeSignatureSettings + 3/4 % timeSignatureFraction + 1/8 % baseMomentFraction + #'(1 5) % beatStructure + #'() % beamExceptions + \time 3/4 + \repeat unfold 6 { a8 } + } + \new Staff { + \time 3/4 + \repeat unfold 6 { a8 } + } +>> +@end lilypond + @node 手動連桁 @unnumberedsubsubsec 手動連桁 @@ -2336,10 +2452,9 @@ g16 a] @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {flat-flags-and-beam-nibs.ly} - @seealso 記譜法リファレンス: @ref{Direction and placement}, @@ -2409,7 +2524,6 @@ ritardando (徐々に緩やかに) や accelerando (次第に速く) を@c 譜刻される音符の間隔は音符の演奏時間を近似的に表しているだけですが、@c MIDI 出力での演奏時間は正確です。 - @predefined @code{\featherDurations} @endpredefined @@ -2418,18 +2532,11 @@ MIDI 出力での演奏時間は正確です。 コード断片集: @rlsr{Rhythms} - @knownissues - @code{\featherDurations} は非常に短い音楽コード断片に対してだけ、@c そして分数の数が小さいときにだけ機能します。 -@seealso -コード断片集: -@rlsrnamed{Rhythms,リズム} - - @node 小節 @subsection 小節 @translationof Bars @@ -2637,6 +2744,10 @@ c4 c c c \break c1 @end lilypond +さらに、@code{\inStaffSegno} コマンドがあります。@c +これは、セーニョ小節線を作り出し、@code{\repeat volta} コマンドと連携@c +します。 + 多くの譜を持つ楽譜では、ある譜の @code{\bar} コマンドは@c 自動的にすべての譜に適用されます。@c @@ -2678,7 +2789,6 @@ c1 これは @samp{\set Timing.defaultBarType = @var{bartype}} でいつでも@c 変更することができます。 - @seealso 記譜法リファレンス: @ref{Line breaking}, @@ -2686,7 +2796,7 @@ c1 @ref{Grouping staves} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{BarLine} (@rinternals{Staff} の階層で作成されます), @@ -2747,37 +2857,40 @@ c1 | c | c | c @end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-the-bar-number-for-the-first-measure.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-at-regular-intervals.ly} -@cindex measure number, format -@cindex bar number, format +@cindex measure number, format (小節番号のフォーマット) +@cindex bar number, format (小節番号のフォーマット) -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-bar-numbers-inside-boxes-or-circles.ly} -@cindex bar number alignment +@cindex bar numbers, with letters (文字付きの小節番号) +@cindex bar numbers, with repeats (繰り返しの小節番号) + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@cindex bar number alignment (小節番号を揃える) + +@lilypondfile[verbatim,quote,texidoc,doctitle] {aligning-bar-numbers.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {removing-bar-numbers-from-a-score.ly} - @seealso コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{BarNumber}, @rinternals{Bar_number_engraver} - @cindex bar number collision (小節番号の衝突) @cindex collision, bar number (小節番号の衝突) @@ -2867,10 +2980,9 @@ pipeSymbol = \bar "||" を使用すると、@code{currentBarNumber} が処理された時に 123 でなければ、@c 警告が表示されます。 - @seealso コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} @node リハーサル記号 @@ -3007,6 +3119,10 @@ c1 更に細かな制御を行う場合は、@c @ref{Aligning objects} の @code{break-alignable-interface} を参照してください。 +ファイル @file{scm/translation-functions.scm} は +@code{format-mark-numbers} と @code{format-mark-letters} の定義を保持@c +しています。@c +ここにある定義を参考にして他のフォーマット関数を作り出すことができます。 @seealso 記譜法リファレンス: @@ -3015,12 +3131,10 @@ c1 @ref{Aligning objects} インストールされているファイル: -@file{scm/translation-functions.scm} は @code{format-mark-numbers} と -@code{format-mark-letters} の定義を保持しています。@c -ここにある定義を参考にして他のフォーマット関数を作り出すことができます。 +@file{scm/translation-functions.scm} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{MarkEvent}, @@ -3049,17 +3163,28 @@ c1 @cindex acciaccatura (アッチャカトゥーラ) @funindex \grace -@funindex grace +@funindex \slashedGrace +@funindex \acciaccatura +@funindex \appoggiatura -装飾小音符は楽譜に書き出される装飾音です。@c -装飾小音符は小さなフォントで譜刻され、@c -小節の中では論理的な時間を持ちません。 +装飾小音符は装飾の音であり、小さなフォントで表示され、@c +論理的には演奏時間を持ちません。 @lilypond[quote,relative=2,verbatim] -c4 \grace c16 c4 -\grace { c16[ d16] } c2 +c4 \grace b16 a4( +\grace { b16[ c16] } a2) @end lilypond +装飾音符には他にも 3 つのタイプがあります。@c +@emph{acciaccatura} (長さを持たない装飾小音符で、@c +スラーでつなげられるスラッシュ付きの符幹を持つ音符) と、 +@emph{appoggiatura} (一定の比率で主音符から演奏時間を取り、@c +スラッシュを持たない音符) +スラーで結ばれた主音符の間に装飾小音符を配置するために、@c +@code{\slashedGrace} 関数を用いて、 +@emph{acciaccatura} のようにスラッシュ付きの符幹を持つが@c +スラーは付かない装飾小音符を譜刻することもできます。 + Lilypond はさらに 2 つ特殊なタイプの装飾小音符をサポートします: @emph{acciaccatura} (長さを持たない装飾小音符で、@c スラッシュ付きの符幹を持つスラーでつなげられる小さな音符) と @@ -3067,10 +3192,12 @@ Lilypond はさらに 2 つ特殊なタイプの装飾小音符をサポート スラッシュを持たない小さな音符で譜刻されます) です。 @lilypond[quote,relative=2,verbatim] -\grace c8 b4 \acciaccatura d8 c4 \appoggiatura e8 d4 -\acciaccatura { g16[ f] } e4 +\acciaccatura { g16[ f] } e2 +\slashedGrace a,8 g4 +\slashedGrace b16 a4( +\slashedGrace b8 a2) @end lilypond 装飾小音符の配置は他の譜と同期されます。@c @@ -3166,19 +3293,18 @@ c1 \afterGrace d1 { c16[ d] } c1 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {using-grace-note-slashes-with-normal-heads.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {tweaking-grace-layout-within-music.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {redefining-grace-note-global-defaults.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {positioning-grace-notes-with-floating-space.ly} - @seealso 音楽用語集: @rglos{grace notes}, @@ -3186,13 +3312,14 @@ c1 \afterGrace d1 { c16[ d] } c1 @rglos{appoggiatura} 記譜法リファレンス: -@ref{手動連桁} +@ref{Scaling durations}, +@ref{Manual beams} インストールされているファイル: @file{ly/grace-init@/.ly} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{GraceMusic}, @@ -3202,7 +3329,6 @@ c1 \afterGrace d1 { c16[ d] } c1 @knownissues - @cindex acciaccatura, multi-note (複数音符のアッチャカトゥーラ) @cindex multi-note acciaccatura (複数音符のアッチャカトゥーラ) @cindex grace-note synchronization (装飾小音符の同期) @@ -3238,10 +3364,61 @@ c1 \afterGrace d1 { c16[ d] } c1 >> @end lilypond +ボイス コンテキストの中で装飾送音符を記述すると、@c +ボイスの譜刻に混乱を招きます。@c +これを克服するには、装飾小音符のセクションを変数に入れます。 + +@lilypond[quote,verbatim] +accMusic = { + \acciaccatura { f8 } e8 r8 \acciaccatura { f8 } e8 r4 +} + +\new Staff { + << + \new Voice { + \relative c'' { + r8 r8 \voiceOne \accMusic \oneVoice r8 | + r8 \voiceOne r8 \accMusic \oneVoice r8 | + } + } + \new Voice { + \relative c' { + s8 s8 \voiceTwo \accMusic \oneVoice s8 | + s8 \voiceTwo r8 \accMusic \oneVoice s8 | + } + } + >> +} +@end lilypond + 装飾小音符セクションはシーケンシャルな音楽表記の中でのみ使用すべきです。@c 装飾小音符セクションのネスト、並置はサポートされておらず、@c クラッシュや他のエラーを引き起こすかもしれません。 +MIDI 出力において装飾小音符はそれぞれ 1/4 の実演奏時間を持ちます。@c +一連の装飾小音符の演奏時間が前の音符の演奏時間よりも長い場合、@c +@qq{@code{Going back in MIDI time}} エラーになります。@c +エラーを避けるには、装飾小音符の演奏時間を短くします。@c +例えば: + +@example +\acciaccatura @{ c'8[ d' e' f' g'] @} +@end example + +を以下のようにします: + +@example +\acciaccatura @{ c'16[ d' e' f' g'] @} +@end example + +あるいは、明示的に演奏時間を変更します: + +@example +\acciaccatura @{ \scaleDurations 1/2 @{ c'8[ d' e' f' g'] @} @} +@end example + +@ref{Scaling durations} を参照してください。 + @node カデンツァに揃える @unnumberedsubsubsec カデンツァに揃える @@ -3275,24 +3452,22 @@ MyCadenza = \relative c' { \MyCadenza c'1 } \new Staff { - #(ly:export (mmrest-of-length MyCadenza)) + #(mmrest-of-length MyCadenza) c'1 - #(ly:export (skip-of-length MyCadenza)) + #(skip-of-length MyCadenza) c'1 } >> @end lilypond - @seealso 音楽用語集: @rglos{cadenza} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} -@c ここから L3219 @node 時間管理 @unnumberedsubsubsec 時間管理 @translationof Time administration @@ -3369,14 +3544,13 @@ MyCadenza = \relative c' { 例えば、@code{ly:make-moment 1 8} は 1 個の 8 分音符の演奏時間であり、@c @code{ly:make-moment 7 16} は 7 個の 16 分音符の演奏時間です。 - @seealso 記譜法リファレンス: -@ref{小節番号}, -@ref{無韻律の音楽} +@ref{Bar numbers}, +@ref{Unmetered music} コード断片集: -@rlsrnamed{Rhythms,リズム} +@rlsr{Rhythms} 内部リファレンス: @rinternals{Timing_translator}, diff --git a/Documentation/ja/notation/simultaneous.itely b/Documentation/ja/notation/simultaneous.itely index 62f598329b..1db44650f4 100644 --- a/Documentation/ja/notation/simultaneous.itely +++ b/Documentation/ja/notation/simultaneous.itely @@ -1,12 +1,12 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 673cef312bbefe407f87a1c2e041980bc61396c6 + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -17,7 +17,7 @@ @section 同時進行する音符 @translationof Simultaneous notes -@lilypondfile[quote]{simultaneous-headword.ly} +@lilypondfile[quote,ragged-right,line-width=16\cm]{simultaneous-headword.ly} 楽譜の中で多声部は楽曲の 1 節の中にある複数のボイスを参照します。@c LilyPond の中で多声部は同じ譜にある複数のボイスを参照します。 @@ -70,7 +70,8 @@ LilyPond の中で多声部は同じ譜にある複数のボイスを参照し 和音の中にある音符自体にもアーティキュレーションや装飾を付けることができます。 @lilypond[verbatim,quote,relative=2] -1 c-^ e>2 4 8. 16 +1 c-^ e>2 4 +8. 16 @end lilypond しかしながら、いくつかの記譜要素 @@ -79,7 +80,25 @@ LilyPond の中で多声部は同じ譜にある複数のボイスを参照し そうしなければ、譜刻されません。 @lilypond[verbatim,quote,relative=2] -1 \f ( ) \< \! +1 \f ( ) +\< \! +@end lilypond + +@c ここから L2100 +@cindex chords, empty (空の和音) +@cindex placeholder events () + +和音は和音に含まれる音符、アーティキュレーション、それに他の付属要素の@c +コンテナにすぎません。@c +従って、音符を持たない和音は演奏時間を持ちません。@c +そのような和音に付属するアーティキュレーションは、後に続く音符や和音の@c +タイミングで発生して、組み合わされます (そのような要素の複雑な組み合わせ@c +については @ref{Simultaneous expressions} を参照してください): + +@lilypond[verbatim,quote,relative=2] +\grace { g8[( a b] } +<> ) \p \< -. -\markup \italic "sempre staccato" +\repeat unfold 4 { c4 e } c1\f @end lilypond @cindex relative pitch, chords (和音と相対ピッチ) @@ -97,19 +116,18 @@ LilyPond の中で多声部は同じ譜にある複数のボイスを参照し 和音についての更なる情報は、@ref{Chord notation} を参照してください。 - @seealso 音楽用語集: @rglos{chord} 学習マニュアル: -@rlearning{音符を組み合わせて和音にする} +@rlearning{Combining notes into chords} 記譜法リファレンス: @ref{Chord notation}, -@ref{アーティキュレーションと装飾}, -@ref{相対オクターブ入力}, -@ref{複数のボイス} +@ref{Articulations and ornamentations}, +@ref{Relative octave entry}, +@ref{Multiple voices} コード断片集: @rlsr{Simultaneous notes} @@ -133,10 +151,14 @@ LilyPond の中で多声部は同じ譜にある複数のボイスを参照し @end itemize + @node 和音の繰り返し @unnumberedsubsubsec 和音の繰り返し @translationof Chord repetition +@cindex Chord, repetition (和音の繰り返し) +@cindex repetition, using @code{q} (@code{q} を用いた繰り返し) + 入力の手間を省くために、前の和音を繰り返すための短縮記法があります。@c 和音を繰り返すためのシンボルは @code{q} です: @@ -157,20 +179,66 @@ LilyPond の中で多声部は同じ譜にある複数のボイスを参照し 和音を繰り返すことができます。 @lilypond[verbatim,quote,relative=2] -1 c4 q2 r8 q8 +1 c'4 q2 r8 q8 | +q2 c, | @end lilypond -しかしながら、和音繰り返しのシンボルは前の和音の強弱記号、@c -アーティキュレーション、あるいは装飾を持ち越しません。 +しかしながら、和音繰り返しのシンボルは前の和音の中にある、あるいは付属している@c +強弱記号、アーティキュレーション、あるいは装飾を持ち越しません。 @lilypond[verbatim,quote,relative=2] -1\sfz c4 q2 r8 q8 +1\sfz c'4 q2 r8 q8 | +q2 c, | +@end lilypond + +それらのイベントを持ち越すには、@code{\chordRepeats} 関数を明示的に呼び出し、@c +引数に持ち越す @var{イベント タイプ} を指定するリストを持たせます。@c +これにより持ち越されるイベントはすでに和音 @code{q} に存在しているものだけです。 + +@lilypond[verbatim,quote] +\relative c'' { + \chordRepeats #'(articulation-event) + { 1\sfz c'4 q2 r8 q8-. } | + q2 c, | +} +@end lilypond + +上記の例では @code{\chordRepeats} を @code{\relative} 構造の内部で使用する@c +ことで予期しない結果になっています: +@code{\chordRepeats} の和音イベントが展開されると、@c +通常どおりに入力された和音と区別が付かず、@c +@code{\relative} はカレントのコンテキストに基づいて音程を割り当てます。 + +ネストされた @code{\relative} のインスタンスは内外のインスタンスに@c +影響を与えないので、@c +@code{\chordRepeats} の内側に @code{\relative} を配置することで@c +@code{\chordRepeats} の和音を展開する前に音程を確定させることができます。@c +今回のケースでは、内側にある @code{\relative} の内容は@c +外側にある @code{\relative} の影響を受けないので、@c +繰り返しの和音は前の和音の音程を維持しています。@c +また、内側の @code{\relative} は外側の @code{\relative} に影響を与えないので、@c +最後の音符のオクターブ入力が変化します。 + +@c Without \new Voice, implicit voice creation does the dumbest thing. +@lilypond[verbatim,quote] +\new Voice +\relative c'' { + \chordRepeats #'(articulation-event) + \relative c'' + { 1\sfz c'4 q2 r8 q8-. } | + q2 c | +} @end lilypond +@code{\chordRepeats} は明示的に呼び出された場合にのみ +@code{\relative} と相互作用します: +暗黙的な繰り返し和音の展開はすべての @code{\relative} インスタンスが@c +処理されてから行われます。 + @seealso 記譜法リファレンス: @ref{Chord notation}, -@ref{アーティキュレーションと装飾} +@ref{Articulations and ornamentations} インストールされているファイル: @file{ly/chord-repetition-init.ly} @@ -202,7 +270,17 @@ a << {a4 b g} {d4 g c,} >> これは同時進行するセクションが同一のリズムを持つ場合に役に立ちます。@c しかしながら、異なる演奏時間を持つ音符を同じ符幹に取り付けようとすると@c -エラーとなります。 +エラーとなります。@c +@emph{単一の} @samp{Voice} の中にある音符、アーティキュレーション、@c +それにプロパティの変更は収集され、音楽的な順序で譜刻されます: + +@lilypond[quote,verbatim,relative=2] +4-. <>-. << c a >> << { c-. } { a s-. } >> +@end lilypond + +同時に複数の符幹や連桁、あるいは異なる音符の演奏時間やプロパティが必要な@c +場合、複数のボイスを使う必要があります。 + 以下の例は、同時進行する表記が暗黙的に複数の譜を生成する様子を示しています: @@ -212,7 +290,32 @@ a << {a4 b g} {d4 g c,} >> << {a4 b g2} {d4 g2 c,4} >> @end lilypond -ここでは、リズムが異なっていても問題ありません。 +ここでは、リズムが異なっていても問題ありません。@c +異なるボイスだと解釈されるからです。 + +@cindex collisions, clashing note columns (音符列の衝突) +@cindex collisions, ignoring (衝突を無視する) + +@knownissues +譜の同じ場所で、同じ向きの符幹を持つ複数のボイスから音符がシフトされずに +(あるいは同じシフトで) 配置された場合、@c +コンパイル中に以下のメッセージが表示されます: + +@example +warning: ignoring too many clashing note columns +@end example + + +以下でこのメッセージを表示させなくすることができます: + +@example +\override NoteColumn #'ignore-collision = ##t +@end example + +しかしながら、これは警告を非表示にするだけでなく、@c +衝突解決に関するすべてのメッセージを非表示にして、@c +他にも意図しない影響を与える可能性があります +(@ref{衝突の解決} の @emph{既知の問題} も参照してください)。 @node クラスタ @@ -240,7 +343,6 @@ a << {a4 b g} {d4 g c,} >> そのようなケースでは、通常の音符とクラスタの衝突を@c 自動的に回避しようとする試みは行われません。 - @seealso 音楽用語集: @rglos{cluster} @@ -253,9 +355,7 @@ a << {a4 b g} {d4 g c,} >> @rinternals{ClusterSpannerBeacon}, @rinternals{Cluster_spanner_engraver} - @knownissues - クラスタは少なくとも 2 つの和音を持つ場合にのみうまく譜刻されます。@c さもなければ、あまりにも狭く譜刻されます。 @@ -266,6 +366,7 @@ a << {a4 b g} {d4 g c,} >> クラスタは MIDI 出力を作り出しません。 + @node 複数のボイス @subsection 複数のボイス @translationof Multiple voices @@ -314,7 +415,7 @@ a << {a4 b g} {d4 g c,} >> @noindent ここでは、ボイスは明示的にインスタンス化されていて、名前を与えられています。@c -@code{\voiceOne} ... @code{\voiceFour} コマンドはボイスをセット アップし、@c +@code{\voiceOne} @dots{} @code{\voiceFour} コマンドはボイスをセット アップし、@c それにより、1 番目と 3 番目のボイスは上向きの符幹を持ち、2 番目と 4 番目の@c ボイスは下向きの符幹を持ち、3 番目と 4 番目のボイスの符頭は水平方向にずれて、@c それぞれのボイスの中の休符は衝突を避けるために自動的に移動させられます。@c @@ -392,7 +493,7 @@ a << {a4 b g} {d4 g c,} >> 一時ボイスが作成され、それから消去されることが問題にならない場合に、@c この構文を使用することができます。@c 暗黙的に作成されるボイスには、それらがコードの中で現れる順番に従って、@c -@code{\voiceOne} ... @code{\voiceFour} コマンドと同じ設定が与えられます。 +@code{\voiceOne} @dots{} @code{\voiceFour} コマンドと同じ設定が与えられます。 以下の例では、真ん中のボイスは上向きの符幹を持ちます。@c そのため、それを 3 番目に置いて、望みどおりに上向きの符幹を持つボイス 3 に@c @@ -450,6 +551,9 @@ etc. >> @end lilypond +@warning{歌詞、スパナ (スラー、タイ、強弱のヘアピン等) はボイスを @q{跨ぐ} +ことはできません。} + @strong{@i{同一のリズム}} 同じリズムを持ち、並行して進行する音楽を譜刻するという特殊なケースでは、@c @@ -477,15 +581,14 @@ etc. @code{\oneVoice} @endpredefined - @seealso 学習マニュアル: -@rlearning{音楽を保持するボイス}, -@rlearning{ボイスを明示的にインスタンス化する} +@rlearning{Voices contain music}, +@rlearning{Explicitly instantiating voices} 記譜法リファレンス: @ref{Percussion staves}, -@ref{不可視の休符}, +@ref{Invisible rests}, @ref{Stems} コード断片集: @@ -530,11 +633,10 @@ etc. @code{\voiceNeutralStyle} @endpredefined - @seealso 学習マニュアル: -@rlearning{私はボイスを聴いている}, -@rlearning{その他の情報源} +@rlearning{I'm hearing Voices}, +@rlearning{Other sources of information}. コード断片集: @rlsr{Simultaneous notes} @@ -636,7 +738,6 @@ etc. >> @end lilypond - 第 2 小節の最初の版音符と 8 分音符は正しくマージされていません。@c なぜなら 3 つ以上の音符が同じ列に並ぶ場合、@c 自動マージは正しく機能できないからです。@c @@ -718,8 +819,6 @@ etc. 明示的に符幹の向きが反対になるよう指定されている場合) にのみマージされます。 - - @predefined @code{\mergeDifferentlyDottedOn}, @code{\mergeDifferentlyDottedOff}, @@ -732,24 +831,21 @@ etc. @code{\shiftOff} @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {additional-voices-to-avoid-collisions.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {forcing-horizontal-shift-of-notes.ly} - @seealso 音楽用語集: @rglos{polyphony} 学習マニュアル: -@rlearning{同時に演奏する複数の音符}, -@rlearning{音楽を保持するボイス}, -@rlearning{オブジェクトの衝突} +@rlearning{Multiple notes at once}, +@rlearning{Voices contain music}, +@rlearning{Real music example} コード断片集: @rlsr{Simultaneous notes} @@ -759,6 +855,18 @@ etc. @rinternals{NoteCollision}, @rinternals{RestCollision} +@cindex collisions, ignoring (衝突を無視する) + +@knownissues +@code{\override NoteColumn #'ignore-collision = ##t} を使うと@c +異なるボイスにある符頭が異なる音符を不適切にマージします。 + +@lilypond[quote,relative=1,verbatim] +\mergeDifferentlyHeadedOn +<< { c16 a' b a } \\ { c,2 } >> +\override NoteColumn #'ignore-collision = ##t +<< { c16 a' b a } \\ { c,2 } >> +@end lilypond @ignore @knownissues @@ -791,40 +899,41 @@ are at the same time differently dotted are not clear. @funindex \partcombine @funindex partcombine -自動パート結合は 1 つの譜上にある 2 つのパートを 1 つに結合するために@c -使用されます。@c -これはオーケストラ譜を譜刻することを目的としています。@c -ある範囲で 2 つのパートが同一である場合、1 つだけが譜刻されます。@c -2 つのパートが異なる箇所では別々のボイスとして譜刻され、@c -符幹の向きは自動的にセットされます。@c -さらに、デフォルトで、ソロ パートと @notation{二重奏 (due)} パートが識別され、@c -デフォルトでマークを付けられます。 +自動パート結合は 2 つのパートに分かれた音楽を単一の譜にマージします。@c +これはオーケストラ譜を譜刻する時に特に有用です。@c +ある範囲で 2 つのパートの音楽が同一である場合、@c +1 つの @code{Voice} だけが譜刻されます。@c +2 つのパートが異なる箇所では第 2 @code{Voice} が譜刻されます。@c +この場合、符幹の向きはそれぞれ上と下ににセットされ、@c +さらにソロ パートと @notation{二重奏 (due)} パートが識別されて@c +適切なマークが付けられます。 -パート結合の構文は以下の通りです: +自動パート結合の構文は以下の通りです: @example \partcombine @var{musicexpr1} @var{musicexpr2} @end example -以下の例はパート結合の基本的な機能を示しています: -パートを 1 つの譜に配置し、符幹の向きと多声をセットします。@c -個々のパートと結合譜で同じ変数が使用されています。 +以下の例は自動パート結合の基本的な機能を示しています: +2 つのパートを単一の譜に多声部として配置し@c +、それぞれの符幹の向きをセットしています。@c +個々のパート譜と結合譜で同じ変数が使用されています。 @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 | } << @@ -834,9 +943,8 @@ instrumentTwo = \relative g' { >> @end lilypond -第 3 小節の音符は、両方のパートで指定されているにもかかわらず、@c -1 パート分だけ譜刻されています。@c -符幹、スラーそれにタイの向きは、ソロなのかあるいは斉奏なのかによって、@c +両パートの第 3 小節の音符は同じなので、片方の音符だけが譜刻されています。@c +符幹、スラー、それにタイの向きは、ソロなのかあるいは斉奏なのかによって、@c 自動的に設定されます。@c 多声が必要になる場合、第 1 パート (@code{one} と呼ばれるコンテキストを持ちます) は常に上向きの符幹を持ち、@c @@ -847,11 +955,11 @@ instrumentTwo = \relative g' { 斉奏 (@notation{二重奏}) パートには、デフォルトで、テキスト @qq{a2} という@c マークが付けられます。 -@code{\partcombine} の引数は 2 つとも @code{Voice} コンテキストとして@c +@code{\partcombine} の 2 つの引数は別個の @code{Voice} コンテキストとして@c 解釈されます。@c -相対オクターブを用いる場合、@code{\relative} を両方の音楽表記に@c -対して指定すべきです。@c -すなわち、 +そのため、相対オクターブを用いる場合、両方のパートで @code{\relative} を@c +記述すべきです。@c +すなわち、以下のように記述します: @example \partcombine @@ -863,56 +971,65 @@ instrumentTwo = \relative g' { @code{\partcombine} の外側にある @code{\relative} セクションは @var{musicexpr1} と @var{musicexpr2} のピッチには影響を与えません。 -プロの楽譜では、@c -1, 2 の音符が同時進行していて容易にユニゾンとして譜刻できる場合であっても、 -長い間ボイスが分かれていることがしばしばあります。@c -@c その場合、音符を結合させて和音にしたり、@c -@c ボイスの 1 つをソロとして見せることは望ましくありません -@c 未訳 -Combining notes into a chord, or showing one voice as solo -is therefore not ideal as the @code{\partcombine} function considers -each note separately. -そのため、以下のコマンドで @code{\partcombine} 関数を@c +@funindex \partcombineChords +@funindex partcombineChords +@funindex \partcombineApart +@funindex partcombineApart +@funindex \partcombineUnisono +@funindex partcombineUnisono +@funindex \partcombineSoloI +@funindex partcombineSoloI +@funindex \partcombineSoloII +@funindex partcombineSoloII +@funindex \partcombineAutomatic +@funindex partcombineAutomatic + +プロの楽譜では長いパッセージで、@c +2 つのボイスの音符のいくつかが同じでユニゾンとして譜刻できる場合であっても、@c +ボイスを分けて譜刻することがあります。 +ですから、音符を和音に組み合わせることと、1 つのボイスをソロとして表示すること@c +は等価ではありません。@c +なぜなら、@code{\partcombine} 関数は各音符を個々に考慮するからです。 +このような場合、@code{\partcombine} 関数を以下のコマンドで@c オーバライドすることができます: +@code{...Once} で終わるコマンドは、コマンドの次に来る音符だけに適用されます。 + @itemize @item -@code{\partcombineApart}, @code{\partcombineApartOnce}: -音符を結合させて和音やユニゾンにすることができる場合であっても、@c -音符を 2 つの別個のボイスに分けて譜刻します。 +@code{\partcombineApart} と @code{\partcombineApartOnce} は@c +音符を 2 つの別個のボイスとして譜刻します +-- たとえ和音やユニゾンにできる場合であっても分けて譜刻します。 @item -@code{\partcombineChords}, @code{\partcombineChordsOnce}: -音符を結合させて、和音として譜刻します。 +@code{\partcombineChords} と @code{\partcombineChordsOnce} は@c +音符を組み合わせて、和音として譜刻します。 @item -@code{\partcombineUnisono}, @code{\partcombineUnisonoOnce}: -2 つのボイスをユニゾンとして譜刻します。 +@code{\partcombineUnisono} と @code{\partcombineUnisonoOnce} は@c +音符を組み合わせて、@qq{ユニゾン} として譜刻します。 @item -@code{\partcombineSoloI}, @code{\partcombineSoloIOnce}: -ボイス 1 だけを譜刻して、ソロのマークを付けます。 +@code{\partcombineSoloI} と @code{\partcombineSoloIOnce} は@c +ボイス 1 だけを譜刻して、@qq{Solo} のマークを付けます。 @item -@code{\partcombineSoloII}, @code{\partcombineSoloIIOnce}: -ボイス 2 だけを譜刻して、ソロのマークを付けます。 +@code{\partcombineSoloII} と @code{\partcombineSoloIIOnce} は@c +ボイス 2 だけを譜刻して、@qq{Solo} のマークを付けます。 @item -@code{\partcombineAutomatic}, @code{\partcombineAutomaticOnce}: -上記の特殊コマンドの効果を終わらせ、デフォルトのパート結合機能に戻します。 - +@code{\partcombineAutomatic} と @code{\partcombineAutomaticOnce}は@c +上記のコマンドの効果を終わらせ、標準の @code{\partcombine} に戻します。 @end itemize -終わりが @code{...Once} のコマンドはすべて、その後の音符にのみ適用されます。 - @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 | @@ -930,16 +1047,14 @@ instrumentTwo = \relative c' { >> @end lilypond - @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {combining-two-parts-on-the-same-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-partcombine-texts.ly} - @seealso 音楽用語集: @rglos{a due}, @@ -955,38 +1070,42 @@ instrumentTwo = \relative c' { @rinternals{PartCombineMusic}, @rinternals{Voice} - @knownissues +すべての @code{\partcombine...} はボイスを 2 つだけ受け取ることができ、@c +歌詞を処理するようには設計されていません。@c +ボイスに歌詞が付けられている場合、パート結合は処理を停止します。 -@code{\partcombine} が受け取れるボイスは 2 つだけです。 +@code{\partcombine} 関数を @code{\times} ブロックや @code{\relative} ブロック@c +の中に置くことはできません。 -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{printPartCombineTexts} がセットされていて、ある小節で 2 つのボイスの@c +音符が同じである場合、@c +パート結合はその小節で @code{a2} を複数譜刻する可能性があります。 -@code{\partcombine} を @code{\times} の中に置くことはできません。 +@code{\partcombine} は @code{Voice} の中の音符の開始だけを検知します。@c +例えば、ある @code{Voice} でパート結合を開始した時に、@c +他の @code{Voice} で音符がすでに開始しているかどうかを知ることはできません。@c +このことは @qq{Solo} や @qq{Unison} が不適切に譜刻されるといった@c +予期しない問題を引き起こす可能性があります -@code{\partcombine} を @code{\relative} の中に置くことはできません。 +@code{\partcombine} はすべてのスパナ (スラー、タイ、強弱のヘアピン等) を@c +同じ @code{Voice} で維持します。@c +そのため、異なる @code{Voice} で始まる / 終わるスパナは@c +不適切にの譜刻されたり、全く譜刻されなかったりする可能性があります。 -内部的には、@code{\partcombine} は 2 つの引数を @code{Voice} として解釈し、@c -2 つのパートを結合することができるかどうかを決定します。@c -2 つのパートが異なる演奏時間を持つ場合、@c -それらを結合させることはできず、@c -それぞれに @code{one}, @code{two} という名前が与えられます。@c -@c 未訳 -Consequently, if the arguments switch to -differently named @rinternals{Voice} contexts, the events in those will -be ignored. -同様に、パート結合は歌詞に対して機能するようには設計されていません。@c -ボイスの 1 つが、歌詞を持つために明示的に名前を付けられた場合、@c -パート結合は機能しなくなります。 +@code{\partcombine} 関数が 2 つのパートを組み合わせることができない場合 +(すなわち、2 つのボイスの演奏時間が異なる場合)、@c +内部的に 2 つのボイスにカスタム名を付与します: +それぞれ @code{one} と @code{two} です。@c +このことは、異なる名前を付けられた @code{Voice} への @qq{切り替え} +があった場合、@c +その @code{Voice} のイベントは無視されることを意味します。 -@code{\partcombine} は @code{\partcombine} の開始後の音符だけを観察します。@c -その前に開始した音符が演奏中であるかどうかを検出することはできません。@c -これはさまざまな問題を引き起こします。 +@ref{Default tablatures} のタブ譜や @ref{Automatic beams} の @emph{音符} +に対して @code{\partcombine} を使う場合は、@c +それぞれの @emph{既知の問題と警告} も参照してください。 -@c ここから L954 @node 音楽を並列に記述する @unnumberedsubsubsec 音楽を並列に記述する @translationof Writing music in parallel @@ -1097,10 +1216,9 @@ global = { } @end lilypond - @seealso 学習マニュアル: -@rlearning{変数を用いて楽曲を編成する} +@rlearning{Organizing pieces with variables} コード断片集: @rlsr{Simultaneous notes} diff --git a/Documentation/ja/notation/spacing.itely b/Documentation/ja/notation/spacing.itely new file mode 100644 index 0000000000..688188bb6b --- /dev/null +++ b/Documentation/ja/notation/spacing.itely @@ -0,0 +1,3752 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- + +@ignore + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + + 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.16.0" + + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + + +@ignore +GDP TODO list + +Negative numbers are allowed: +> Are you sure? The following works well +> \paper{ +> first-page-number = -2 +> } +> and prints page number -1 on the second page, for example. + + +In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it +states: + +"@code{layout-set-staff-size} does not change the distance between +the +staff lines." + +Could we add a sentence: +"Use instead the pair fontSize = #@var{N} + \override StaffSymbol #'staff-space = #(magstep +@var{N}) +inside the Staff context to change the size of the font and the +distance between +staff lines accordingly." + +Actually I found, that the @internalsref{StaffSymbol} at line 481 +sends to an incomplete +documentation. The property staff-space is not explained here. I +thought Y-extent might be of +help, but it is in turn explained by x-space which again is +missing from the list. Who has the +knowledge to fix this? + + +Clarify +http://code.google.com/p/lilypond/issues/detail?id=68 + +@end ignore + + +@node スペースの問題 +@chapter スペースの問題 +@translationof Spacing issues + +紙面全体のレイアウトは 3 つの要素によって決定されます: +ページ レイアウト、改行、そしてスペースです。@c +これらはすべて互いに影響を与え合います。@c +スペース入れ方を選択することは音楽システムを@c +どれくらいの密度で譜刻するかを決定します。@c +これは改行をどこに挿入するかに影響を与え、@c +それゆえ最終的には、@c +楽曲が占めるページ数を決定します + +大雑把に言って、@c +このプロセスには 4 つのステップがあります: +最初に、演奏時間に基づいて可変距離 (@q{スプリング}) が選択されます。@c +とり得る改行の組み合わせがすべて試され、@c +相対的に @q{悪い} 楽譜が算出されます。@c +それから、起こり得るシステムの高さが推定されます。 +最後に、@c +水平方向と垂直方向のスペースが混み合いすぎたり、@c +広がりすぎたりしないように、@c +改ページと改行の組み合わせが選択されます。 + +2 タイプのブロックがレイアウト設定を保持できます: +@code{\paper @{@dots{}@}} と @code{\layout @{@dots{}@}} です。@c +@code{\paper} ブロックは book のすべての score で共通の@c +ページ レイアウト設定を保持します +-- ページの高さやページ番号を表示するか等です。@c +@ref{ページ レイアウト} を参照してください。@c +@code{\layout} ブロックは score のレイアウトを保持します +-- システム数や譜グループ間の間隔等です。@c +@ref{ページ レイアウト} を参照してください。@c + +@menu +* ページ レイアウト:: +* 楽譜レイアウト:: +* 改行/改ページ:: +* 垂直方向のスペース:: +* 水平方向のスペース:: +* 音楽を少ないページに収める:: +@end menu + +@node ページ レイアウト +@section ページ レイアウト +@translationof Page layout + +このセクションでは @code{\paper} ブロックで使用するページ レイアウト +オプションについて説明します。 + +@menu +* \paper ブロック:: +* 紙面サイズと自動拡縮:: +* 固定された垂直方向の \paper スペース変数:: +* 可変な垂直方向の \paper スペース変数:: +* 水平方向の \paper スペース変数:: +* 他の \paper 変数:: +@end menu + + +@node \paper ブロック +@subsection @code{\paper} ブロック +@translationof The \paper block + +@code{\paper} ブロックは、@code{\book} ブロック内に配置することができますが、@c +@code{\score} ブロック内に配置することはできません。@c +@code{\paper} ブロックでの設定は book 全体に適用されます。@c +book が複数の score を含む場合も、すべての score に適用されます。@c +@code{\paper} ブロックで可能な設定には以下のものがあります: + +@itemize + +@item +@code{set-paper-size} Scheme 関数 + +@item +ページ レイアウトをカスタマイズするのに用いられる @code{\paper} 変数 + +@item +ヘッダ、フッタ、それにタイトルのレイアウトを@c +カスタマイズするのに用いられるマークアップ定義 + +@end itemize + +@code{set-paper-size} 関数は次のセクション +@ref{紙面サイズと自動拡縮} +で説明します。@c +ページ レイアウトを扱う @code{\paper} 変数は後のセクションで説明します。@c +ヘッダ、フッタ、それにタイトルを扱うマークアップ定義は +@ref{カスタム ヘッダ、フッタ、タイトル} で説明します。 + +たいていの @code{\paper} 変数は @code{\paper} ブロック内でのみ機能します。@c +@code{\layout} ブロック内でも機能するいくつかの @code{\paper} 変数を@c +@ref{\layout ブロック} でリスト アップしています。 + +ページの長さに関係する @code{\paper} 変数の単位は、@c +ユーザによって他の単位が指定されていなければ、@c +ミリメーターです。@c +例えば、以下の宣言は @code{top-margin} を @code{10mm} に設定します: + +@example +\paper @{ + top-margin = 10 +@} +@end example + +@code{top-margin} を @code{0.5} インチに設定するには、@c +単位接尾辞 @code{\in} を使用します: + +@example +\paper @{ + top-margin = 0.5\in +@} +@end example + +利用可能な単位接尾辞は @code{\mm}, @code{\cm}, @code{\in}, +それに @code{\pt} です。@c +これらの単位はミリメーターから変換するための値であり、@c +@file{ly/paper-defaults-init.ly} で定義されています。@c +技術的には必要はありませんが、明快さのために、@c +ミリメーターを用いる場合であっても @code{\mm} をコードに記述します。 + +Scheme を用いて @code{\paper} の値を定義することも可能です。@c +上の例と等価な Scheme は以下のようになります: + +@example +\paper @{ + #(define top-margin (* 0.5 in)) +@} +@end example + +@seealso +記譜法リファレンス: +@ref{紙面サイズと自動拡縮}, +@ref{カスタム ヘッダ、フッタ、タイトル}, +@ref{\layout ブロック} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + + +@node 紙面サイズと自動拡縮 +@subsection 紙面サイズと自動拡縮 +@translationof Paper size and automatic scaling + +@cindex paper size (紙面サイズ) +@cindex page size (ページ サイズ) + +@funindex \paper + +@menu +* 紙面サイズを設定する:: +* 紙面サイズに応じた自動拡縮:: +@end menu + + +@node 紙面サイズを設定する +@unnumberedsubsubsec 紙面サイズを設定する +@translationof Setting the paper size + +紙面サイズを変更するために 2 つの関数が利用可能です: +@code{set-default-paper-size} と @code{set-paper-size} です。 +@code{set-default-paper-size} は最上位スコープに配置する必要があり、@c +and @code{set-paper-size} は @code{\paper} ブロックの中に@c +配置する必要があります: +@q{A4} が紙面サイズを明示的に設定しなかった場合のデフォルト値です。@c +しかしながら、デフォルト値を変更するために使うことができる関数が 2 つあります。@c +1 つは @code{set-default-paper-size} です: + +@example +#(set-default-paper-size "quarto") +@end example + +この関数は常に最上位スコープに配置する必要があります。@c +もう 1 つは @code{set-paper-size} です: + +@example +\paper @{ + #(set-paper-size "tabloid") +@} +@end example + +この間数は常に @code{\paper} ブロックの中に配置する必要があります。 + +@code{set-default-paper-size} 関数を最上位スコープで用いる場合、@c +どの @code{\paper} ブロックよりも前に配置する必要があります。@c +@code{set-default-paper-size} はすべてのページの紙面サイズを設定しますが、@c +@code{set-paper-size} が設定する紙面サイズは @code{\paper} ブロックが適用@c +されるページだけです。@c +例えば、@code{\paper} ブロックがファイルの最上位に配置されている場合、すべての@c +ページの紙面サイズに摘要されます。@c +@code{\paper} ブロックが @code{\book} の中に配置されている場合、そのブックの@c +ページだけに適用されます。 + +@code{set-paper-size} 関数を用いる場合、同じ @code{\paper} ブロック内で@c +用いられる他のすべての関数よりも @emph{前に} 配置する必要があります。@c +@ref{Automatic scaling to paper size} を参照してください。 + +紙面サイズは @file{scm/paper.scm} で定義されていて、カスタム サイズを追加する@c +ことも可能ですが、追加後のソフトウェア アップデートにより上書きされます。@c +利用可能な紙面サイズは @ref{Predefined paper sizes} でリスト アップされています。 + +@c An appendix entry exists for paper sizes but is not auto-generated + +以下のコマンドを用いてカスタム紙面サイズを追加することができ、追加した紙面サイズは +@code{set-default-paper-size} または @code{set-paper-size} で使用することが@c +でいます。 + + +@example +#(set! paper-alist (cons '("my size" . (cons (* 15 in) (* 3 in))) paper-list)) + +\paper @{ + #(set-paper-size "my size") +@} +@end example + +単位 @code{in} (インチ)、@code{cm} (センチメートル)、それに @code{mm} +(ミリメートル) のすべてを使うことができます。 + +@cindex paper size, orientation (紙面サイズの向き) +@cindex page, orientation (紙面の向き) +@cindex paper size, landscape (横向きの紙面サイズ) + +紙面サイズ関数にシンボル @code{'landscape} を渡すとページは 90°回転し、@c +それに応じてより長い行幅となります。 + +@example +#(set-default-paper-size "a6" 'landscape) +@end example + +紙面が回転するだけで、楽譜は回転 @emph{しません}。 + +@seealso +記譜法リファレンス: +@ref{Automatic scaling to paper size}, +@ref{Predefined paper sizes} + +インストールされているファイル: +@file{scm/paper.scm} + + +@node 紙面サイズに応じた自動拡縮 +@unnumberedsubsubsec 紙面サイズに応じた自動拡縮 +@translationof Automatic scaling to paper size + +Scheme 関数 +(@code{set-default-paper-size} または @code{set-paper-size}) +により紙面サイズが変更された場合、@c +いくつかの @code{\paper} 変数は自動的に新しいサイズに合わせて拡縮されます。@c +特定の変数の自動拡縮をスキップするには、@c +紙面サイズを設定した後にその変数を設定します。@c +@code{paper-height} 変数や @code{paper-width} 変数の変更では、@c +自動拡縮は起こらないということに注意してください。@c +しかしながら @code{paper-width} 変数の変更は他の値に影響を与えます +(これは拡縮とは別のことで、後で説明します)。 +@code{set-default-paper-size} 関数と @code{set-paper-size} 関数については +@ref{Setting the paper size} で説明します。 + +自動拡縮によって影響を受ける垂直方向の長さは +@code{top-margin} と @code{bottom-margin} です +(@ref{固定された垂直方向の \paper スペース変数} を参照してください)。@c +自動拡縮によって影響を受ける水平方向の長さは +@code{right-margin}, @code{inner-margin}, @code{outer-margin}, +@code{binding-offset}, @code{indent}, それに @code{short-indent} です +(@ref{水平方向の \paper スペース変数} を参照してください)。 + +これらの長さに対するデフォルト値は +@code{top-margin-default}, @code{bottom-margin-default} 等の内部変数を@c +用いて @file{ly/paper-defaults-init.ly} で設定されています。@c +これらはデフォルトの紙面サイズ @code{a4} の場合の値です。@c +参考のために、@code{a4} 紙面での +@code{paper-height} は @code{297\mm} であり、@c +@code{paper-width} は @code{210\mm} です。 + +@seealso +記譜法リファレンス: +@ref{固定された垂直方向の \paper スペース変数}, +@ref{水平方向の \paper スペース変数} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly}, +@file{scm/paper.scm} + + +@node 固定された垂直方向の \paper スペース変数 +@subsection 固定された垂直方向の @code{\paper} スペース変数 +@translationof Fixed vertical spacing \paper variables + +@warning{いくつかの @code{@bs{}paper} 変数は紙面サイズに応じて@c +自動的に拡縮され、結果として予期せぬ振る舞いを引き起こすことがあります。@c +@ref{紙面サイズに応じた自動拡縮} を参照してください。} + +(拡縮する前の) デフォルト値は +@file{ly/paper-defaults-init.ly} で定義されています。 + +@table @code +@item paper-height +@funindex paper-height + +ページの高さ -- デフォルトでは設定されていません。@c +これは垂直方向の長さの自動拡縮は影響を与えません。 + +@item top-margin +@funindex top-margin + +ページの上端と印刷可能エリアの上端との間のマージン。@c +紙面サイズが変更されると、それに応じてこの長さのデフォルト値も拡縮されます。 + +@item bottom-margin +@funindex bottom-margin + +印刷可能エリアの下端とページの下端との間のマージン。@c +紙面サイズが変更されると、それに応じてこの長さのデフォルト値も拡縮されます。 + +@item ragged-bottom +@funindex ragged-bottom + +真に設定されている場合、システムはページ下端まで広がりません。@c +これは最後のページには影響しません。@c +ページに 2, 3 しかシステムを持たない楽曲 -- オーケストラ譜等 -- では、@c +この変数を真に設定すべきです。 + +@item ragged-last-bottom +@funindex ragged-last-bottom + +偽に設定されている場合、最後のページでシステムはページ下端まで広がります。@c +2 ページ以上ある楽曲では、この変数を偽に設定すべきです。@c +これは book パート +-- すなわち @code{\bookpart} ブロックによって作成された部分 -- +の最後のページにも影響を与えます。 + +@end table + +@seealso +記譜法リファレンス: +@ref{紙面サイズに応じた自動拡縮} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + +コード断片集: +@rlsr{Spacing} + +@knownissues +(@code{\header} ブロックによって作成された) +タイトルはシステムとして扱われます。@c +このため、@code{ragged-bottom} と @code{ragged-last-bottom} は@c +タイトルと score の最初のシステムとの間にスペースを追加します。 + +明示的に定義された紙面サイズは、ユーザ定義の上または下のマージン設定を上書きします。 + + +@node 可変な垂直方向の \paper スペース変数 +@subsection 可変な垂直方向の @code{\paper} スペース変数 +@translationof Flexible vertical spacing \paper variables + +たいていの場合、ある要素間 +(マージン、タイトル、システム、score 等の間) +の垂直方向の間隔は、状況に応じて伸びたり縮んだりするよう、@c +可変であることが好まれます。@c +いくつかの @code{\paper} 変数 +(以下でリスト アップします) は、長さを微調整することができます。 + +このセクションで説明する @code{\paper} 変数は、@c +個々のシステム内にある譜のスペースを制御しないということに注意してください。@c +システム内のスペースは、@c +普通は @code{\score} ブロックや @code{\score} ブロックの中に配置される設定を@c +通じて、@c +グラフィカル オブジェクトのプロパティによって制御されます。@c +@ref{システム内部の可変な垂直方向のスペース} を参照してください。 + +@menu +* 可変な垂直方向スペース連想リストの構造:: +* 可変な垂直方向の \paper スペース変数のリスト:: +@end menu + + +@node 可変な垂直方向スペース連想リストの構造 +@unnumberedsubsubsec 可変な垂直方向スペース連想リストの構造 +@translationof Structure of flexible vertical spacing alists + +可変な垂直方向の @code{\paper} スペース変数は、@c +それぞれが 4 つの @emph{キー} を保持する連想配列 (association list) です: + +@itemize + +@item +@code{basic-distance} -- 2 つの要素の @emph{参照ポイント} 間の@c +垂直方向の間隔。単位は譜スペースです。@c +衝突が生じない場合は、伸縮されません。@c +(タイトルまたは最上位の) マークアップの参照ポイントは最も上の箇所です。@c +システムの参照ポイントは、@c +譜線を持たない (@code{Lyrics} コンテキスト等) であっても、@c +最も近くにある @code{StaffSymbol} の垂直方向の中心です。@c +@code{basic-distance} の値が @code{padding} や @code{minimum-distance} よりも@c +小さいと無意味になります。@c +なぜなら、間隔が @code{padding} や @code{minimum-distance} よりも@c +小さくなることはないからです。 +@code{minimum-distance} の値が @code{padding} よりも小さいと無意味になります。@c +なぜなら、間隔が @code{padding} よりも小さくなることはないからです。 + +@c TODO: explain skylines somewhere and xref to it from here. + +@item +@code{padding} -- 2 つの要素間の境界ボックス (または輪郭) の間に必要な、@c +垂直方向の最小の間隔。単位は譜スペースです。@c + +@item +@code{stretchability} -- 間隔の伸び率。@c +0 の場合、間隔は広がりません (衝突が生じない限りは)。@c +正の値の場合、ある間隔の @code{stretchability} 値は@c +他の間隔の @code{stretchability} との相対関係になります。@c +例えば、ある間隔の @code{stretchability} 値が@c +もう一つの間隔の @code{stretchability} の 2 倍である場合、@c +間隔の広がり方は 2 倍になります。@c +値は 0 以上の有限数でなければなりません。@c +@code{+inf.0} は @code{programming_error} を引き起こし、無視されます。@c +一方、@code{1.0e7} はほとんど無限の広がり方となります。@c +値が設定されなければ、デフォルト値が設定されます。@c +間隔の @emph{縮み} 率をユーザが直接設定することはできず、@c +(@code{basic-distance}@tie{}@minus{}@tie{}@code{minimum-distance}) +であることに注意してください。 + +@end itemize + +譜がページの下端まで広がらない設定の場合、間隔は以下の中の最大値となります: +largest of: + +@itemize + +@item +@code{basic-distance}, + +@item +@code{minimum-distance}, + +@item +@code{padding} + 衝突を回避するのに必要な最小の距離 + +@end itemize + +複数ページの楽譜で、最後のページの楽譜がページ下端まで広がらない場合、最後の@c +ページのスペースは前のページと同じです。 + +配列リストを変更する方法は、@ref{Modifying alists} で説明します。@c +以下の例は、連想配列を変更する 2 つの方法を提示しています。@c +最初の宣言はキー値を個別に変更していて、2 つ目は変数全体を再定義しています: + +@example +\paper @{ + system-system-spacing #'basic-distance = #8 + score-system-spacing = + #'((basic-distance . 12) + (minimum-distance . 6) + (padding . 1) + (stretchability . 12)) +@} +@end example + + +@node 可変な垂直方向の \paper スペース変数のリスト +@unnumberedsubsubsec 可変な垂直方向の @code{\paper} スペース変数のリスト +@translationof List of flexible vertical spacing \paper variables + +以下の変数の名前は @code{@var{upper}-@var{lower}-spacing} という形式で、@c +@code{@var{upper}} 要素と @code{@var{lower}} 要素との間隔です。@c +間隔の距離は 2 つの要素の参照ポイント間です +(上記の連想配列構造の説明を参照してください)。@c +変数名の中の @q{@code{markup}} は @emph{タイトル マークアップ} +(@code{bookTitleMarkup} や @code{scoreTitleMarkup}) と +@emph{最上位のマークアップ} (@ref{ファイル構造}) の両方を指します。@c +すべての間隔の距離の単位は譜スペースです。 + +デフォルト設定は @file{ly/paper-defaults-init.ly} で定義しています。 + +@c TODO: Where do headers/footers fit in? -mp + +@table @code +@item markup-system-spacing +@funindex markup-system-spacing + +(タイトルまたは最上位の) マークアップと、その後に続くシステムとの間隔。 + +@item score-markup-spacing +@funindex score-markup-spacing + +score の最後のシステムと、その後に続く (タイトルまたは最上位の) +マークアップとの間隔 + +@item score-system-spacing +@funindex score-system-spacing + +score の最後のシステムと、その後に score の最初のシステムとの間隔 +-- score と score の間に (タイトルまたは最上位の) マークアップが無い場合。 + +@item system-system-spacing +@funindex system-system-spacing + +同じ score の中にある 2 つのシステムの間隔。 + +@item markup-markup-spacing +@funindex markup-markup-spacing + +2 つの (タイトルまたは最上位の) マークアップの間隔。 + +@item last-bottom-spacing +@funindex last-bottom-spacing + +ページの最後のシステムまたは最上位のマークアップから、@c +印刷可能エリアの下端 (つまり、ボトム マージンの上端) までの距離。 + +@item top-system-spacing +@funindex top-system-spacing + +印刷可能エリアの上端 (つまり、トップ マージンの下端) から、@c +ページの最初のシステムまでの距離 +-- 間に (タイトルまたは最上位の) マークアップが無い場合。 + +@item top-markup-spacing +@funindex top-markup-spacing + +印刷可能エリアの上端 (つまり、トップ マージンの下端) から、@c +ページの最初の (タイトルまたは最上位の) までの距離 +-- 間にシステムが無い場合。 +@end table + +@seealso +記譜法リファレンス: +@ref{システム内部の可変な垂直方向のスペース} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + +コード断片集: +@rlsr{Spacing} + + +@node 水平方向の \paper スペース変数 +@subsection 水平方向の @code{\paper} スペース変数 +@translationof Horizontal spacing \paper variables + +@warning{いくつかの @code{@bs{}paper} の間隔は紙面サイズに応じて自動的に@c +拡縮され、それにより予期せぬ結果となることがあります。@c +@ref{紙面サイズに応じた自動拡縮} を参照してください。} + +@menu +* 幅とマージンの \paper 変数:: +* 両面モードのための \paper 変数:: +* シフトとインデントのための \paper 変数:: +@end menu + + +@node 幅とマージンの \paper 変数 +@unnumberedsubsubsec 幅とマージンの @code{\paper} 変数 +@translationof \paper variables for widths and margins + +ここでリスト アップされていない (拡縮する前の) デフォルト値は、@c +@file{ly/paper-defaults-init.ly} で定義されています。 + +@table @code + +@item paper-width +@funindex paper-width + +ページの幅 - デフォルトでは、値は設定されていません。@c +@code{paper-width} は水平方向の自動拡縮に影響を与えませんが、@c +@code{line-width} 変数に影響を与えます。@c +@code{paper-width} と @code{line-width} の両方に値が設定された場合、@c +@code{left-margin} と @code{right-margin} が更新されます。@c +@code{check-consistency} も参照してください。 + +@item line-width +@funindex line-width + +この変数に値が設定されていない場合、@c +インデントされず、ページ右端まで広がるシステムの譜線の水平方向の長さは、@c +@code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)} +です。@c +@code{left-margin} と @code{right-margin} に値が設定されていなければ、@c +マージンは自動的に更新されて、@c +システムはページの中央に配置されます。 +@code{check-consistency} も参照してください。@c +この変数は @code{\layout} ブロック内で設定される可能性もあります。 + +@item left-margin +@funindex left-margin + +ページの左端とインデントされていないシステムの譜線開始点との間のマージンです。@c +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +@code{left-margin} に値が設定されず、@c +@code{line-width} と @code{right-margin} の両方に値が設定された場合、@c +@code{left-margin} は +@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)} +に設定されます。@c +@code{line-width} だけに値が設定された場合、@c +左右のマージンは +@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)} +に設定され、@c +結果としてシステムはページの中央に配置されます。@c +@code{check-consistency} も参照してください。@c + +@item right-margin +@funindex right-margin + +ページの右端とページの右端まで広がる譜線終点との間のマージンです。@c +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +@code{right-margin} に値が設定されず、@c +@code{line-width} と @code{left-margin} の両方に値が設定された場合、@c +@code{right-margin} は +@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)} +に設定されます。@c +@code{line-width} だけに値が設定された場合、@c +左右のマージンは +@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)} +に設定され、@c +結果としてシステムはページの中央に配置されます。@c +@code{check-consistency} も参照してください。@c + +@item check-consistency +@funindex check-consistency + +真にセットされた場合、@code{left-margin}, @code{line-width}, +それに @code{right-margin} の和が @code{paper-width} にならなければ警告を@c +表示して、@c +@code{left-margin} と @code{right-margin} をデフォルト値に置き換え +(必要に応じて紙面サイズに合わせて拡宿し) ます。@c +偽にセットされた場合、不一致を無視して、@c +システムがページの左端からはみ出すことを許可します。 + +@item ragged-right +@funindex ragged-right + +真にセットされた場合、システムは譜線の幅いっぱいまで広がらず、@c +本来の長さで終了します。@c +デフォルトでは、1 つだけシステムを持つ score の場合は @code{#t}、@c +複数のシステムを持つ score の場合は @code{#f} です。@c +この変数は @code{\layout} ブロック内でセットされる可能性もあります。 + +@item ragged-last +@funindex ragged-last + +真にセットされた場合、score の最後のシステムは譜線の幅いっぱいまで広がらず、@c +本来の長さで終了します。@c +デフォルトでは @code{#f} です。@c +この変数は @code{\layout} ブロック内でセットされる可能性もあります。 + +@end table + +@seealso +記譜法リファレンス: +@ref{紙面サイズに応じた自動拡縮} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + +@knownissues +明示的に定義された紙面サイズは、ユーザ定義の左または右のマージン設定を上書きします。 + + +@node 両面モードのための \paper 変数 +@unnumberedsubsubsec 両面モードのための @code{\paper} 変数 +@translationof \paper variables for two-sided mode + +(拡縮される前の) デフォルト値は +@file{ly/paper-defaults-init.ly} で定義されています。 + +@table @code + +@item two-sided +@funindex two-sided + +@cindex gutter +@cindex binding gutter + +真にセットされた場合、@c +ページ番号が偶数か奇数かに応じて @code{inner-margin}, @code{outer-margin} +それに @code{binding-offset} を用いてマージンを決定します。@c +これは @code{left-margin} と @code{right-margin} を上書きします。 + +@item inner-margin +@funindex inner-margin + +book の一部であるページすべてが見開きページの内側に持つマージンです。@c +(左ページの場合は右側のマージン、右ページの場合は左側のマージンです。) +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +@code{two-sided} が真にセットされてい場合にのみ、機能します。 + +@item outer-margin +@funindex outer-margin + +book の一部であるページすべてが見開きページの外側に持つマージンです。@c +(左ページの場合は左側のマージン、右ページの場合は右側のマージンです。) +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +@code{two-sided} が真にセットされてい場合にのみ、機能します。 + +@item binding-offset +@funindex binding-offset + +製本により何かが隠れてしまわないように +@code{inner-margin} を増加させる量です。@c +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +@code{two-sided} が真にセットされてい場合にのみ、機能します。 + +@end table + +@seealso +記譜法リファレンス: +@ref{紙面サイズに応じた自動拡縮} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + + +@node シフトとインデントのための \paper 変数 +@unnumberedsubsubsec シフトとインデントのための @code{\paper} 変数 +@translationof \paper variables for shifts and indents + +このにリスト アップされていない (拡縮される前の) デフォルト値は +@file{ly/paper-defaults-init.ly} で定義されています。 + +@table @code + +@item horizontal-shift +@funindex horizontal-shift + +@c This default value is buried in the middle of page.scm. -mp + +(タイトルとシステム セパレータを含む) すべてのシステムを@c +右にシフトさせる量です。@c +デフォルトでは @code{0.0\mm} です。 + +@item indent +@funindex indent + +score の最初のシステムに対するインデントのレベルです。@c +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +この変数は @code{\layout} ブロック内でセットされる可能性もあります。 + +@item short-indent +@funindex short-indent + +最初のシステムを除くすべてのシステムに対するインデントのレベルです。@c +紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c +この変数は @code{\layout} ブロック内でセットされる可能性もあります。 + +@end table + +@seealso +記譜法リファレンス: +@ref{紙面サイズに応じた自動拡縮} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + +コード断片集: +@rlsr{Spacing} + + +@node 他の \paper 変数 +@subsection 他の @code{\paper} 変数 +@translationof Other \paper variables + +@menu +* 改行のための \paper 変数:: +* 改ページのための \paper 変数:: +* ページ番号のための \paper 変数:: +* その他の \paper 変数:: +@end menu + + +@node 改行のための \paper 変数 +@unnumberedsubsubsec 改行のための @code{\paper} 変数 +@translationof \paper variables for line breaking + +@c TODO: Mention that ly:optimal-breaking is on by default? -mp + +@table @code + +@item max-systems-per-page +@funindex max-systems-per-page + +1 ページに配置されるシステムの最大数です。@c +現在、これは @code{ly:optimal-breaking} アルゴリズムでのみサポートされます。@c +デフォルトでは、値は設定されていません。 + +@item min-systems-per-page +@funindex min-systems-per-page + +1 ページに配置されるシステムの最小数です。@c +この値が大きすぎると、システムがページからはみ出す可能性があります。@c +現在、これは @code{ly:optimal-breaking} アルゴリズムでのみサポートされます。@c +デフォルトでは、値は設定されていません。 + +@item systems-per-page +@funindex systems-per-page + +各ページに配置すべきシステム数です。@c +現在、これは @code{ly:optimal-breaking} アルゴリズムでのみサポートされます。@c +デフォルトでは、値は設定されていません。 + +@item system-count +@funindex system-count + +score で使用すべきシステム数です。@c +デフォルトでは、値は設定されていません。@c +この変数は @code{\layout} ブロック内でセットされる可能性もあります。 + +@end table + +@seealso +記譜法リファレンス: +@ref{改行} + + +@node 改ページのための \paper 変数 +@unnumberedsubsubsec 改ページのための @code{\paper} 変数 +@translationof \paper variables for page breaking + +ここでリスト アップされていないデフォルト値は +@file{ly/paper-defaults-init.ly} で定義されています。 + +@table @code + +@item blank-after-score-page-force +@funindex blank-after-score-page-force + +楽譜の後ろ (と次の楽譜の前) に強制的に白紙を挿入します。@c +デフォルトでは、この値は @code{blank-page-force} よりも小さいため、@c +楽譜の途中ではなく後ろに白紙が挿入されます。 + +@item blank-last-page-force +@funindex blank-last-page-force + +楽譜の最後が奇数ページの場合、楽譜の後ろに白紙を挿入します。 + +@item blank-page-force +@funindex blank-page-force + +楽譜の途中に強制的に白紙を挿入します。@c +この値は @code{ly:optimal-breaking} では用いられません。@c +なぜなら、楽譜の途中の白紙を考慮しないからです。 + +@item page-breaking +@funindex page-breaking + +改ページのアルゴリズムを指定します。@c +選択肢は @code{ly:minimal-breaking}, @code{ly:page-turn-breaking}, +それに @code{ly:optimal-breaking} です。 + +@item page-breaking-system-system-spacing +@funindex page-breaking-system-system-spacing + +改ページ アルゴリズムに @code{system-system-spacing} を実際の値とは異なる@c +値だと思わせるトリックです。@c +例えば、@code{page-breaking-system-system-spacing #'padding} を +@code{system-system-spacing #'padding} よりも十分に大きくすると、@c +改ページ アルゴリズムは各ページに数個のシステムしか配置しません。@c +デフォルトではセットされていません。 + +@item page-count +@funindex page-count + +score で使用すべきページ数です。@c +デフォルトでは、値は設定されていません。 + +@end table + +@seealso +記譜法リファレンス: +@ref{改ページ}, +@ref{最適改ページ}, +@ref{最適ページめくり}, +@ref{最小改ページ}, +@ref{1 行の改ページ} + +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + + +@node ページ番号のための \paper 変数 +@unnumberedsubsubsec ページ番号のための @code{\paper} 変数 +@translationof \paper variables for page numbering + +ここでリスト アップされていないデフォルト値は +@file{ly/paper-defaults-init.ly} で定義されています。 + +@table @code + +@cindex page numbers, auto-numbering (ページ番号を自動付番する) +@item auto-first-page-number +@funindex auto-first-page-number + +@c 未訳 +The page breaking algorithm is affected by the first page number +being odd or even. If set to true, the page breaking algorithm +will decide whether to start with an odd or even number. This +will result in the first page number remaining as is or being +increased by one. Default: @code{#f}. + +@cindex page numbers, specify the first (最初のページ番号を指定する) +@item first-page-number +@funindex first-page-number + +最初のページのページ番号の値です。 + +@item print-first-page-number +@funindex print-first-page-number + +真にセットされた場合、最初のページにページ番号が譜刻されます。 + +@cindex page numbers, suppress (ページ番号を抑制する) +@item print-page-number +@funindex print-page-number + +偽にセットされた場合、ページ番号は譜刻されません。 + +@end table + +@seealso +インストールされているファイル: +@file{ly/paper-defaults-init.ly} + +@knownissues +奇数のページ番号は常に右側に配置されます。@c +楽譜をページ 1 から始めたいのであれば、@c +カバー ページの裏にブランク ページ配置して、@c +ページ 1 が右側にくるようにする必要があります。 + + +@node その他の \paper 変数 +@unnumberedsubsubsec その他の @code{\paper} 変数 +@translationof Miscellaneous \paper variables + +@table @code + +@item page-spacing-weight +@funindex page-spacing-weight + +(垂直方向の) ページ スペースと (水平方向の) 行スペースの重要度の関係です。@c +大きな値だと、ページ スペースがより重要になります。@c +デフォルトでは、@code{10} です。 + +@item print-all-headers +@funindex print-all-headers + +真にセットされている場合、@c +出力の各 @code{\score} のすべてのヘッダを譜刻します。@c +通常、@code{piece} ヘッダ変数と @code{opus} ヘッダ変数だけが譜刻されます。@c +デフォルトでは、@code{#f} です。 + +@item system-separator-markup +@funindex system-separator-markup + +しばしばオーケストラ譜で使用される、@c +システム間に挿入されるマークアップ オブジェクトです。@c +デフォルトでは、設定されていません。@c +以下の例のように、@c +@file{ly/titling-init.ly} で定義されている @code{\slashSeparator} マークアップ@c +を使用すると適当です: + +@lilypond[quote,verbatim,noragged-right,line-width=30\mm] +#(set-default-paper-size "a8") + +\book { + \paper { + system-separator-markup = \slashSeparator + } + \header { + tagline = ##f + } + \score { + \relative c'' { c1 \break c1 \break c1 } + } +} +@end lilypond + +@end table + +@seealso +インストールされているファイル: +@file{ly/titling-init.ly} + +コード断片集: +@rlsr{Spacing} + +@knownissues +デフォルトのページ ヘッダは、@c +ページ番号と @code{\header} ブロックの @code{instrument} フィールドを@c +同一の行に配置します。 + + +@node 楽譜レイアウト +@section 楽譜レイアウト +@translationof Score layout + +このセクションでは、@code{\layout} ブロックで使用する@c +楽譜レイアウト オプションについて説明します。 + +@menu +* \layout ブロック:: +* 譜サイズを設定する:: +@end menu + + +@node \layout ブロック +@subsection @code{\layout} ブロック +@translationof The \layout block + +@funindex \layout + +@code{\paper} ブロックがドキュメント全体のページ フォーマットに関係する@c +設定を保持する一方で、@c +@code{\layout} ブロックは楽譜特有のレイアウトに関する設定を保持します。@c +楽譜レイアウト オプションを全体に設定するには、@c +設定を最上位の @code{\layout} ブロックに配置します。@c +個々の楽譜に対してレイアウト オプションを設定するには、@c +音楽表記の後の @code{\score} ブロック内の @code{\layout} ブロックの中に@c +設定を配置します。@c +@code{\layout} ブロックに配置される設定には以下のものがあります: + +@itemize +@item @code{layout-set-staff-size} Scheme 関数、 +@item @code{\context} ブロック内のコンテキスト変更、それに +@item 楽譜レイアウトに影響を与える @code{\paper} 変数 +@end itemize + +@code{layout-set-staff-size} 関数は次のセクション @ref{譜サイズを設定する} +で説明します。@c +コンテキスト変更は @ref{Modifying context plug-ins} と +@ref{Changing context default settings} で説明します。@c +@code{\layout} ブロック内で使用される @code{\paper} には以下のものがあります: + +@itemize + +@item +@code{line-width}, @code{ragged-right} それに @code{ragged-last} +(@ref{幅とマージンの \paper 変数} を参照してください) + +@item +@code{indent} と @code{short-indent} +(@ref{シフトとインデントのための \paper 変数} を参照してください) + +@item +@code{system-count} +(@ref{改行のための \paper 変数} を参照してください) + +@end itemize + +ここで、@code{\layout} ブロックの例を挙げます: + +@example +\layout @{ + indent = 2\cm + \context @{ + \StaffGroup + \override StaffGrouper #'staff-staff-spacing #'basic-distance = #8 + @} + \context @{ + \Voice + \override TextScript #'padding = #1 + \override Glissando #'thickness = #3 + @} +@} +@end example + +最上位の表記として複数の @code{\layout} ブロックを配置することができます。@c +これは、例えば、異なる設定が別個のファイルに保存されていて、任意の方法で@c +インクルードする場合に有用です。@c +内部的には、@code{\layout} ブロックが評価される時、カレントの +@code{\layout} 構成のコピーが作成され、評価する @code{\layout} ブロックの@c +内部で定義されている変更が適用され、その結果が新しいカレントの構成として@c +保存されます。@c +ユーザからは @code{\layout} ブロックが組み合わされたように見えますが、@c +衝突が発生した場合 (複数のブロックで同じプロパティが変更された場合)、@c +最後の定義が有効になります。 + +例えば、下記のブロック: + +@example +\layout @{ + \context @{ + \Voice + \override TextScript #'color = #magenta + \override Glissando #'thickness = #1.5 + @} +@} +@end example + +これが一つ前の例の後に配置された場合、@code{TextScript} の @code{'padding} +設定と @code{'color} 設定は組み合わせれますが、@code{Glissando} の +@code{'thickness} 設定は前の設定と置き換わります (前の設定を上書きします)。 + +@code{\layout} ブロックを後で再利用するために変数に代入することができます。@c +しかしながら、この方法は @code{\layout} ブロックを直接記述した場合とは@c +少しですが重大な違いがあります。 + +変数を以下のように定義した場合: + +@example +layoutVariable = \layout @{ + \context @{ + \Voice + \override NoteHead #'font-size = #4 + @} +@} +@end example + +カレントの @code{\layout} 構成に @code{NoteHead #'font-size} 設定を追加@c +しますが、この組み合わせは新しいカレントの構成として保存され @emph{ません}。@c +@q{カレントの構成} は変数が定義された時に評価されるのであり、変数が使われる@c +時に評価されるのではありません。@c +そのため、変数の効果は変数がソースに配置された位置によって異なります。 + +変数を他の @code{\layout} ブロックの中で使うことができます。@c +例えば、以下のように: + +@example +\layout @{ + \layoutVariable + \context @{ + \Voice + \override NoteHead #'color = #red + @} +@} +@end example + +上記のような変数を含む @code{\layout} ブロックは、カレントの構成をコピー@c +せず、設定を追加するためのベースとなる構成として @code{\layoutVariable} の@c +内容を用います。@c +このことは、変数が定義されてから使われるまでの間に定義された変更は失われる@c +ということを意味します。 + +@code{layoutVariable} が使われる (あるいは @code{\include} される) 直前に@c +定義されている場合、@code{layoutVariable} の内容はカレントの構成に変数内部@c +で定義した設定を加えたものになります。@c +そのため、上で示した @code{\layoutVariable} の使用例の場合、最終的な +@code{\layout} ブロックの構成は以下のようになります: + +@example + TextScript #'padding = #1 + TextScript #'color = #magenta + Glissando #'thickness = #1.5 + NoteHead #' font-size = #4 + NoteHead #' color = #red +@end example + +これに @code{indent} と @code{StaffGrouper} の設定がプラスしたものです。 + +しかしながら、変数が最初の @code{\layout} ブロックより前に定義されていた@c +場合、カレントの構成は以下だけになってしまいます: + +@example + NoteHead #' font-size= #4 % (変数定義で記述されたものです) + NoteHead #' color = #red % (変数が使用された後に追加されたものです) +@end example + +注意深く計画を立てれば、@code{\layout} 変数はソースのレイアウト設計を構築@c +して、@code{\layout} 構成を既知の状態にリセットするための有用なツールに@c +なります。 + +@seealso +記譜法リファレンス: +@ref{Changing context default settings} + +コード断片集: +@rlsr{Spacing} + + +@node 譜サイズを設定する +@subsection 譜サイズを設定する +@translationof Setting the staff size + +@cindex font size, setting (フォント サイズを設定する) +@cindex staff size, setting (譜サイズを設定する) +@funindex layout file + +デフォルトの @strong{譜サイズ} は 20 ポイントに設定されています。@c +これを変更するには 2 つの方法があります: + +譜サイズをファイルの中にあるすべての楽譜 +(正確には @code{book} ブロックの中にあるすべての楽譜) +に設定するには、@c +@code{set-global-staff-size} を使用します。 + +@example +#(set-global-staff-size 14) +@end example + +@noindent +これはグローバルなデフォルトの譜サイズを高さが 14pt になるよう設定し、@c +それに応じてすべてのフォントを拡縮します。 + +それぞれの楽譜に個別に譜サイズを設定するには、@c +以下のようにします: +@example +\score@{ + @dots{} + \layout @{ + #(layout-set-staff-size 15) + @} +@} +@end example + +Feta フォントは 8 つのサイズの音楽シンボルを提供します。 +各フォントは譜サイズに合わせて調整されます: +小さなサイズになるにつれて、@c +相対的に太くなる譜線に対して釣り合いをとるために、@c +太くなります。@c +推奨されるフォント サイズを以下の表にリストアップします: + +@quotation +@multitable @columnfractions .15 .2 .22 .2 + +@item @b{フォント名} +@tab @b{譜の高さ (pt)} +@tab @b{譜の高さ (mm)} +@tab @b{用途} + +@item feta11 +@tab 11.22 +@tab 3.9 +@tab ポケット サイズの楽譜 + +@item feta13 +@tab 12.60 +@tab 4.4 +@tab + +@item feta14 +@tab 14.14 +@tab 5.0 +@tab + +@item feta16 +@tab 15.87 +@tab 5.6 +@tab + +@item feta18 +@tab 17.82 +@tab 6.3 +@tab 歌集 + +@item feta20 +@tab 20 +@tab 7.0 +@tab 標準パート譜 + +@item feta23 +@tab 22.45 +@tab 7.9 +@tab + +@item feta26 +@tab 25.2 +@tab 8.9 +@tab +@c modern レンタルの資料? + +@end multitable +@end quotation + +これらのフォントは任意のサイズで利用可能です。@c +コンテキスト プロパティ @code{fontSize} と@c +レイアウト プロパティ @code{staff-space} +(@rinternals{StaffSymbol} の中にあります) +を使用することで、@c +個々の譜に対してサイズを調整することができます。@c +個々の譜のサイズはグローバル サイズとの相対値です。 + +@seealso +記譜法リファレンス: +@ref{記譜フォント サイズを選択する} + +コード断片集: +@rlsr{Spacing} + +@knownissues +@code{layout-set-staff-size} は譜線の間隔を変更しません。 + + +@node 改行/改ページ +@section 改行/改ページ +@translationof Breaks + +@menu +* 改行:: +* 改ページ:: +* 最適改ページ:: +* 最適ページめくり:: +* 最小改ページ:: +* 1 行の改ページ:: +* 明示的な改行/改ページ:: +* 改行/改ページのために追加のボイスを使用する:: +@end menu + +@node 改行 +@subsection 改行 +@translationof Line breaking + +@cindex line breaks (改行) +@cindex breaking lines (改行する) + +通常、改行は自動的に決定されます。@c +改行は、行が混み合って見えたり散漫に見えたりしないように、@c +連続する行の密度が同じくらいになるように選択されます。 + +小節線が引かれる場所で手動で強制的に改行を入れるには、@c +@code{\break} コマンドを使用します: + +@lilypond[quote,ragged-right,relative=2,verbatim] +c4 c c c | \break +c4 c c c | +@end lilypond + +デフォルトでは、小節の途中での @code{\break} は無視され、@c +警告が表示されます。@c +小節の途中で強制的に改行を入れるには、@c +@w{@samp{\bar ""}} を用いて不可視の小節線を追加します: + +@lilypond[quote,ragged-right,relative=2,verbatim] +c4 c c +\bar "" \break +c | +c4 c c c | +@end lilypond + +連符が開始する小節と終了する小節が異なる場合などのように、@c +前の小節が音符の途中で終わっている場合、@c +前の小節の終わりに @code{\break} を配置しても無視されます。@c +そのような状況で、@code{\break} コマンドを機能させるには、@c +@code{Voisce} コンテキストから @code{Forbid_line_break_engraver} を@c +削除します。@c +音符の途中で強制的に改行を入れるには、@c +音楽と並列に改行コマンドを追加する必要があるということに注意してください: + +@lilypond[quote,ragged-right,verbatim] +\new Voice \with { + \remove Forbid_line_break_engraver +} \relative c'' { + << + { c2. \times 2/3 { c4 c c } c2. | } + { s1 | \break s1 | } + >> +} +@end lilypond + +同様に、通常は連桁が小節線を跨いでいる場合も、改行は禁止されます。@c +この振る舞いは、@code{\override Beam #'breakable = ##t} により、@c +変更することができます: + +@lilypond[quote,ragged-right,relative=2,verbatim] +\override Beam #'breakable = ##t +c2. c8[ c | \break +c8 c] c2. | +@end lilypond + +@code{\noBreak} コマンドは、コマンドが配置された小節線での改行を禁止します。 + +行スペースに影響を与える最も基本的な設定は @code{indent} と +@code{line-width} です。@c +これらは @code{\layout} ブロック内で設定されます。@c +これらは音楽の最初の行のインデントと行の長さを制御します。 + +@code{\layout} ブロック内で @code{ragged-right} が真にセットされた場合、@c +システムは、行全体に広がらずに、本来の長さで終了します。@c +これは短い楽譜の断片を記譜する場合や、@c +本来のスペースがどれくらい密になっているかチェックする場合に有用です。 + +@c TODO Check and add para on default for ragged-right + +オプション @code{ragged-last} は @code{ragged-right} と似ていますが、@c +楽曲の最後の行にだけ効果を持ちます。 + +@example +\layout @{ + indent = 0\mm + line-width = 150\mm + ragged-last = ##t +@} +@end example + + + +@cindex regular line breaks (規則的な改行) +@cindex four bar music (4 小節楽譜) + +規則的な間隔で改行を行うには、@c + +スキップで区切られた @code{\break} を用いて、@c +それを @code{\repeat} で繰り返します。@c +例えば、@c +以下の例は 28 小節 (4/4 拍子と仮定して) であり、@c +4 小節ごとに改行が入ります +(それ以外の場所で改行が入ることはありません): + +@example +<< + \repeat unfold 7 @{ + s1 \noBreak s1 \noBreak + s1 \noBreak s1 \break + @} + @{ @var{実際の音楽@dots{}} @} +>> +@end example + +@c TODO Check this +改行設定を自動的に @file{.ly} ファイルに保存することができます。@c +これにより、@c +2 回目のフォーマット実行時に垂直方向のスペースがページにフィットするよう@c +引き伸ばされます。@c +この機能は本当に新しく、複雑です。@c +詳細は @rlsr{Spacing} を参照してください。 + + +@predefined +@funindex \break +@code{\break}, +@funindex \noBreak +@code{\noBreak} +@endpredefined + +@seealso +記譜法リファレンス: +@ref{改行のための \paper 変数} + +コード断片集: +@rlsr{Spacing} + +内部リファレンス: +@rinternals{LineBreakEvent} + + +@node 改ページ +@subsection 改ページ +@translationof Page breaking + +デフォルトの改ページは、@c +@code{\pageBreak} や @code{\noPageBreak} を挿入することによって@c +上書きすることができます。@c +これらのコマンドは @code{\break} と @code{\noBreak} に似ています。 +これらのコマンドは小節線のところに挿入すべきであり、@c +改ページを強制/禁止します。@c +当然のことですが、@c +@code{\pageBreak} は強制的に改行も行います。 + +@code{\pageBreak} コマンドと @code{\noPageBreak} コマンドは@c +最上位レベルに挿入することができ、@c +score や最上位レベルのマークアップの間に挿入することができます。 + +@code{ragged-right} や @code{ragged-last} と類似で、@c +垂直方向のスペースに対して同じ効果を持つ設定があります: +@code{ragged-bottom} と @code{ragged-last-bottom} です。@c +これらの設定が @code{#t} にセットされている場合、@c +すべてのページあるいは最後のページのシステムは@c +ページの垂直方向全体には広がりません。@c +@ref{固定された垂直方向の \paper スペース変数} を参照してください。 + +改ページは @code{page-breaking} 関数によって算出されます。@c +LilyPond は改ページを算出するために 3 つのアルゴリズムを提供します: +@code{ly:optimal-breaking}, @code{ly:page-turn-breaking}, それに +@code{ly:minimal-breaking} です。@c +デフォルトは @code{ly:optimal-breaking} ですが、@c +@code{\paper} ブロックの中で変更することができます: + +@example +\paper @{ + page-breaking = #ly:page-turn-breaking +@} +@end example + +@funindex \bookpart + +1 つのブックが多くの楽譜とページを持つ場合、@c +改ページを処理するのに多くの処理時間とメモリが必要になり、@c +改ページの問題を解決することが困難になる可能性があります。@c +改ページ処理を簡単にするために、@c +@code{\bookpart} ブロックを用いてブックをいくつかのパートに分割します: +改ページはパートごとに別々に処理されます。@c +異なるブック パートには、@c +異なる改ページ関数を使用することもできます。 + +@example +\bookpart @{ + \header @{ + subtitle = "Preface" + @} + \paper @{ + %% ほとんどテキストしか保持していないパートでは + %% ly:minimal-breaking が適しています + page-breaking = #ly:minimal-breaking + @} + \markup @{ @dots{} @} + @dots{} +@} +\bookpart @{ + %% このパートは音楽を保持しているので、デフォルトの + %% ly:optimal-breaking を使用します + \header @{ + subtitle = "First movement" + @} + \score @{ @dots{} @} + @dots{} +@} +@end example + + +@predefined +@funindex \pageBreak +@code{\pageBreak}, +@funindex \noPageBreak +@code{\noPageBreak} +@endpredefined + +@seealso +記譜法リファレンス: +@ref{改行のための \paper 変数} + +コード断片集: +@rlsr{Spacing} + + +@node 最適改ページ +@subsection 最適改ページ +@translationof Optimal page breaking + +@funindex ly:optimal-breaking + +@code{ly:optimal-breaking} 関数は、@c +LilyPond が改ページを決定するためのデフォルトの手法です。 +この関数は、@c +ページの (水平方向と垂直方向の両方の) 混み合いや広がりすぎを@c +最小にする改ページを見つけ出そうと試みます。@c +@code{ly:page-turn-breaking} とは異なり、@c +この関数はページめくりについて考慮しません。 + +@seealso +コード断片集: +@rlsr{Spacing} + + +@node 最適ページめくり +@subsection 最適ページめくり +@translationof Optimal page turning + +@funindex ly:page-turn-breaking + +しばしば、@c +2 枚目のページ (横書きの本を開いたときの右側のページ) の終わりに@c +休符を置くための改ページ構成が必要になります。@c +こうすることで、@c +演奏者は音符を見失うことなくページをめくることができます。@c +@code{ly:page-turn-breaking} 関数は@c +ページの混み合いや広がりすぎを最小にする改ページを見つけ出そうと試みますが、@c +ページめくりを特定の場所だけに置くための制約を受けます。 + +この改ページ関数を使うには、2 つのステップがあります。@c +最初に、@ref{改ページ} で説明されているように、@c +@code{\paper} ブロックの中でこの関数を有効にする必要があります。@c +次に、この関数に改ページを許可したい場所を教える必要があります。 + +2 番目のステップを達成するには、2 つの方法があります。@c +1 つ目の方法では、@c +入力ファイルの適当な場所に @code{\allowPageTurn} を挿入することによって、@c +潜在的なページめくりを手動で指定します。 + +この方法では手間がかかりすぎる場合は、@c +@code{Page_turn_engraver} を +@code{Staff} あるいは @code{Voice} コンテキストに追加します。@c +@code{Page_turn_engraver} はコンテキストをスキャンして@c +音符の無いセクションを探します +(休符を探すわけではなく、音符の無い部分を探すということに注意してください。@c +単一譜の多声で、ボイスの 1 つが休符を持つ場合に、@c +@code{Page_turn_engraver} に渡されないようにするためです。) +@code{Page_turn_engraver} は音符を持たない十分に長いセクションを見つけると、@c +@q{特殊な} 小節線 (2 重小節線など) がないかぎりは、@c +そのセクションの最後の小節線のところに @code{\allowPageTurn} を挿入します。 + +@funindex minimumPageTurnLength + +@code{Page_turn_engraver} は@c +コンテキスト プロパティ @code{minimumPageTurnLength} を読み込んで、@c +どれくらい音符が無いセクションが続いたらページめくりを考慮するかを決定します。@c +@code{minimumPageTurnLength} のデフォルト値は +@code{(ly:make-moment 1 1)} です。@c +ページめくりを不可にしたいのならば、@c +@code{minimumPageTurnLength} に非常に大きな値をセットします。 + +@example +\new Staff \with @{ \consists "Page_turn_engraver" @} +@{ + a4 b c d | + R1 | % ここでページめくりが許可されます + a4 b c d | + \set Staff.minimumPageTurnLength = #(ly:make-moment 5 2) + R1 | % ここではページめくりは許可されません + a4 b r2 | + R1*2 | % ここでページめくりが許可されます + a1 +@} +@end example + +@funindex minimumRepeatLengthForPageTurn + +@code{Page_turn_engraver} は volta 繰り返しを検出します。@c +繰り返しの開始と終わりにページめくりを行うのに十分な時間がある場合にのみ、@c +その繰り返しの最中でのページめくりが許可されます。@c +繰り返しが非常に短い場合、@c +@code{Page_turn_engraver} はページめくりを不可にする可能性があります。@c +コンテキスト プロパティ @code{minimumRepeatLengthForPageTurn} に値を@c +設定した場合、@c +その値よりも長い演奏時間を持つ繰り返しに対してのみ、@c +@code{Page_turn_engraver} は繰り返しの最中でページめくりを許可します。 + +ページめくりコマンド @code{\pageTurn}, @code{\noPageTurn} +それに @code{\allowPageTurn} は、@c +最上位レベル、score や最上位のマークアップの間で使用される可能性もあります。 + +@predefined +@funindex \pageTurn +@code{\pageTurn}, +@funindex \noPageTurn +@code{\noPageTurn}, +@funindex \allowPageTurn +@code{\allowPageTurn} +@endpredefined + +@seealso +コード断片集: +@rlsr{Spacing} + +@knownissues +score の中に配置する @code{Page_turn_engraver} は 1 つだけにするべきです。@c +複数の @code{Page_turn_engraver} がある場合、@c +互いに干渉し合います。 + + +@node 最小改ページ +@subsection 最小改ページ +@translationof Minimal page breaking + +@funindex ly:minimal-breaking + +The @code{ly:minimal-breaking} 関数は最小限の改ページを算出します: +この関数は 1 ページに可能な限り多くのシステムを配置します。@c +そのため、多くのページを持つ楽譜 +-- そのような場合、他の改ページ関数では時間がかかりすぎたり、@c +メモリ使用量が多くなりすぎたりします -- +や、多くのテキストを持つ楽譜でこの関数を使用すると良いかもしれません。@c +この関数を有効にするには以下のようにします: + +@example +\paper @{ + page-breaking = #ly:minimal-breaking +@} +@end example + +@seealso +コード断片集: +@rlsr{Spacing} + +@node 1 行の改ページ +@subsection 1 行の改ページ +@translationof One-line page breaking + +@funindex ly:one-line-breaking + +@code{ly:one-line-breaking} 関数は特殊な目的のための改ページアルゴリズム@c +で、楽譜をそれぞれ 1 ページに 1 行で配置します。@c +この改ページ関数はタイトルやマージンを譜刻しません。楽譜だけを譜刻します。 + +ページ幅は最も長い楽譜が 1 行に納まるように調節されます。@c +@code{\paper} ブロックの中にある変数 @code{paper-width}, @code{line-width} +それに @code{indent} は無視されますが、@code{left-margin} と +@code{right-margin} は有効です。@c +ページの高さは変更されません。 + +@node 明示的な改行/改ページ +@subsection 明示的な改行/改ページ +@translationof Explicit breaks + +LilyPond はしばしば明示的な @code{\break} や @code{\pageBreak} を@c +却下します。@c +この振る舞いを上書きするための 2 つのコマンドがあります: + +@example +\override NonMusicalPaperColumn #'line-break-permission = ##f +\override NonMusicalPaperColumn #'page-break-permission = ##f +@end example + +@code{line-break-permission} が偽に上書きされた場合、@c +LilyPond は明示的な改行である @code{\break} コマンドのところで改行を行い、@c +他の場所では改行を行いません。@c +@code{page-break-permission} が偽に上書きされた場合、@c +LilyPond は明示的な改ページである +@code{\pageBreak} コマンドのところで改ページを行い、@c +他の場所では改ページを行いません。 + +@lilypond[quote,verbatim] +\paper { + indent = #0 + ragged-right = ##t + ragged-bottom = ##t +} + +music = \relative c'' { c8 c c c } + +\score { + \new Staff { + \repeat unfold 2 { \music } \break + \repeat unfold 4 { \music } \break + \repeat unfold 6 { \music } \break + \repeat unfold 8 { \music } \pageBreak + \repeat unfold 8 { \music } \break + \repeat unfold 6 { \music } \break + \repeat unfold 4 { \music } \break + \repeat unfold 2 { \music } + } + \layout { + \context { + \Score + \override NonMusicalPaperColumn #'line-break-permission = ##f + \override NonMusicalPaperColumn #'page-break-permission = ##f + } + } +} +@end lilypond + +@seealso +コード断片集: +@rlsr{Spacing} + + +@node 改行/改ページのために追加のボイスを使用する +@subsection 改行/改ページのために追加のボイスを使用する +@translationof Using an extra voice for breaks + +通常、改行/改ページ情報は音符入力部分に直接入力します。 + +@example +music = \relative c'' @{ c4 c c c @} + +\score @{ + \new Staff @{ + \repeat unfold 2 @{ \music @} \break + \repeat unfold 3 @{ \music @} + @} +@} +@end example + +この方法では @code{\break} と @code{\pageBreak} コマンドを入力しやすいですが、@c +音楽入力と@c +音楽をどのようにページにレイアウトするかを指定する情報とが混ざってしまいます。@c +改行/改ページ情報を保持するための追加のボイスを導入することによって、@c +音楽入力と改行/改ページ情報を 2 つ場所に分けることができます。@c +この追加のボイスはスキップ、@code{\break}、@code{\pageBreak}、それに、@c +その他の改行/改ページ情報だけを保持します。 + +@lilypond[quote,verbatim] +music = \relative c'' { c4 c c c } + +\score { + \new Staff << + \new Voice { + s1 * 2 \break + s1 * 3 \break + s1 * 6 \break + s1 * 5 \break + } + \new Voice { + \repeat unfold 2 { \music } + \repeat unfold 3 { \music } + \repeat unfold 6 { \music } + \repeat unfold 5 { \music } + } + >> +} +@end lilypond + +@ignore +This pattern becomes especially helpful when overriding +@code{line-break-system-details} and the other useful but long properties of +@code{NonMusicalPaperColumnGrob}, as explained in @ref{垂直方向のスペース}. +@end ignore + +以下の方法は、@ref{垂直方向のスペース} で説明されているように、@c +@code{NonMusicalPaperColumnGrob} の @code{line-break-system-details} と@c +他の有用だが長いプロパティを上書きするときに、非常に役に立ちます。 + +@lilypond[quote,verbatim] +music = \relative c'' { c4 c c c } + +\score { + \new Staff << + \new Voice { + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 0)) + s1 * 2 \break + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 35)) + s1 * 3 \break + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 70)) + s1 * 6 \break + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 105)) + s1 * 5 \break + } + \new Voice { + \repeat unfold 2 { \music } + \repeat unfold 3 { \music } + \repeat unfold 6 { \music } + \repeat unfold 5 { \music } + } + >> +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{垂直方向のスペース} + +コード断片集: +@rlsr{Spacing} + + +@node 垂直方向のスペース +@section 垂直方向のスペース +@translationof Vertical spacing + +@cindex vertical spacing (垂直方向のスペース) +@cindex spacing, vertical (垂直方向のスペース) + +垂直方向のスペースは 3 つの要素によって制御されます: +利用可能なスペースの量 (つまり、紙面サイズとマージン)、@c +システムの間隔、それにシステム内部での譜の間隔です。 + +@menu +* システム内部の可変な垂直方向のスペース:: +* 譜とシステムを明示的に配置する:: +* 垂直方向の衝突回避:: +@end menu + + +@node システム内部の可変な垂直方向のスペース +@subsection システム内部の可変な垂直方向のスペース +@translationof Flexible vertical spacing within systems + +@cindex distance between staves (譜の間隔) +@cindex staff distance (譜の間隔) +@cindex space between staves (譜の間のスペース) +@cindex space inside systems (システム内部のスペース) + +システム内部の可変な垂直方向のスペースを制御する 3 つの仕組みがあり、@c +以下のカテゴリに分けられます: + +@itemize + +@item +@emph{グループ化されていない譜}, + +@item +@emph{グループ化されている譜} +(@code{ChoirStaff} 等のような譜グループ内の譜) + +@item +@emph{譜ではない行} +(@code{Lyrics}, @code{ChordNames} 等) + +@end itemize + +@c TODO: Clarify this. This almost implies that non-staff lines +@c have NO effect on the spacing between staves. -mp + +システムの高さは 2 つのステップで決定されます。@c +最初に、すべての譜が利用可能なスペースの量に応じた間隔で配置されます。@c +次に、譜ではない行が譜の間に配置されます。 + +このセクションでは、@c +システム内部の譜と譜ではない行の垂直方向のスペースを制御する@c +仕組みだけを説明しているということに注意してください。@c +システム、score、マークアップ、それにマージン間の垂直方向のスペースは、@c +@code{\paper} 変数によって制御されます +-- @ref{可変な垂直方向の \paper スペース変数} で説明しています。 + +@menu +* システム内部のスペース プロパティ:: +* グループ化されていない譜のスペース:: +* グループ化されている譜のスペース:: +* 譜ではない行のスペース:: +@end menu + + +@node システム内部のスペース プロパティ +@unnumberedsubsubsec システム内部のスペース プロパティ +@translationof Within-system spacing properties + +@funindex staff-affinity +@funindex staffgroup-staff-spacing +@funindex staff-staff-spacing +@funindex nonstaff-unrelatedstaff-spacing +@funindex nonstaff-relatedstaff-spacing +@funindex nonstaff-nonstaff-spacing +@funindex default-staff-staff-spacing +@funindex minimum-Y-extent +@funindex extra-offset +@funindex self-alignment-X +@funindex X-offset +@funindex VerticalAxisGroup + +システム内部の垂直方向のスペースは、2 セットのグラフィカル オブジェクト +プロパティによって制御されます。@c +1 つ目は @code{VerticalAxisGroup} グラフィカル オブジェクト +-- これは、譜と譜ではない行によって作成されます -- +のプロパティ セットです。@c +2 つ目は @code{StaffGrouper} グラフィカル オブジェクト +-- これは、明示的に呼び出された場合に、譜グループによって作成されます -- +のプロパティ セットです。@c +これらのプロパティは、このセクションの終わりで説明します。 + +これらのプロパティの名前は (@code{staff-affinity} を除いて)、@c +@code{@var{item1}-@var{item2}-spacing} という形式に従います +-- ここで、@code{@var{item1}} と @code{@var{item2}} は、スペースを入れられる@c +要素です。@c +@code{@var{item2}} は必ずしも @code{@var{item1}} の下にある要素ではないという@c +ことに注意してください。@c +例えば、@code{staff-affinity} が @code{UP} である場合、@c +@code{nonstaff-relatedstaff-spacing} は譜ではない行から@c +上向きにスペースをとります。 + +スペースは、2 つの要素の @emph{参照ポイント} 間の距離です。@c +譜の参照ポイントは、その譜の @code{StaffSymbol} +(すなわち、@code{line-count} が奇数の場合は中央の譜線で、@c +@code{line-count} が偶数の場合は中央のスペースです) +の垂直方向の中央です。@c +譜ではない行の参照ポイントは、以下の表のようになります: + +@multitable {Non-staff line} {Reference point} +@headitem 譜ではない行 @tab 参照ポイント +@item @code{ChordNames} @tab ベースライン +@item @code{NoteNames} @tab ベースライン +@item @code{Lyrics} @tab ベースライン +@item @code{Dynamics} @tab 垂直方向の中央 +@item @code{FiguredBass} @tab 最も上のポイント +@item @code{FretBoards} @tab トップ ライン +@end multitable + +以下の画像では、水平方向の線が参照ポイントの位置を示しています: + +@lilypond[quote,noragged-right,line-width=110\mm] +#(define zero-space '((padding . -inf.0) (basic-distance . 0))) + +alignToZero = \with { + \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = #zero-space + \override VerticalAxisGroup #'nonstaff-nonstaff-spacing = #zero-space +} +lowerCaseChords = \with { + chordNameLowercaseMinor = ##t +} +staffAffinityDown = \with { + \override VerticalAxisGroup #'staff-affinity = #DOWN +} +labelContext = +#(define-music-function + (parser location context) + (string?) + #{ s1*0^\markup { \typewriter #context } #}) + +\layout { + \context { \Dynamics \alignToZero } + \context { \FiguredBass \alignToZero } + \context { \Lyrics \alignToZero } + \context { \NoteNames \alignToZero \staffAffinityDown } + \context { \ChordNames \alignToZero + \staffAffinityDown + \lowerCaseChords } + \context { \FretBoards \alignToZero \staffAffinityDown } + \context { \Score + \override BarLine #'stencil = ##f + \override DynamicText #'self-alignment-X = #-1 + \override FretBoard #'X-offset = #1.75 + \override InstrumentName #'minimum-Y-extent = #'(-2 . 2) + \override InstrumentName #'extra-offset = #'(0 . -0.5) + \override TextScript #'minimum-Y-extent = #'(-2 . 3) + \override TimeSignature #'stencil = ##f + } +} + +%% These contexts have reference points at the baseline: +%% ChordNames, NoteNames, and Lyrics +<< + \new ChordNames { \chords { g1:m } } + \new NoteNames { s1 | g1 | } + \new RhythmicStaff { + \set RhythmicStaff.instrumentName = #"baseline " + \textLengthOn + \labelContext "ChordNames " s1 | + \labelContext "NoteNames " s1 | + \labelContext "Lyrics" s1 | + } + \new Lyrics { \lyrics { \skip 1*2 | ghijk1 | } } +>> + +%% The reference point for Dynamics is its vertical center +<< + \new RhythmicStaff { + \set RhythmicStaff.instrumentName = #"vertical center " + \labelContext "Dynamics" s1*3 + } + \new Dynamics { s1\mp s\fp } +>> + +%% The reference point for FiguredBass is its highest point +<< + \new RhythmicStaff { + \set RhythmicStaff.instrumentName = #"highest point " + \labelContext "FiguredBass" s1 + } + \new FiguredBass { \figuremode { <6 5>1 } } +>> + +%% The reference point for FretBoards is the top line +\include "predefined-guitar-fretboards.ly" +<< + \new FretBoards { \chordmode { e1 } } + \new RhythmicStaff { + \set RhythmicStaff.instrumentName = #"top line " + \labelContext "FretBoards " s1 + } +>> +@end lilypond + +垂直方向のスペースのグラフィカル オブジェクト プロパティは +(@code{staff-affinity} を除いて)、@c +@ref{可変な垂直方向の \paper スペース変数} で説明した +@code{\paper} スペース変数と同じ連想配列構造を使用します。 +連想配列を変更する方法は、@ref{Modifying alists} で説明します。@c +グラフィカル オブジェクト プロパティの調節は、@c +@code{\score} ブロックか @code{\layout} ブロックの内部で、@c +@code{\override} を用いて行う必要があります。 + +以下の例は、連想配列を変更する 2 つの方法を示しています。@c +最初の宣言は 1 つのキー値を個別に更新して、@c +2 番目の宣言はプロパティ全体を再定義しています: + +@example +\new Staff \with @{ + \override VerticalAxisGroup #'default-staff-staff-spacing + #'basic-distance = #10 +@} @{ @dots{} @} + +\new Staff \with @{ + \override VerticalAxisGroup #'default-staff-staff-spacing = + #'((basic-distance . 10) + (minimum-distance . 9) + (padding . 1) + (stretchability . 10)) +@} @{ @dots{} @} +@end example + +スペース設定をグローバルに変更するには、@c +そのスペース設定を @code{\layout} ブロックの中に配置します: + +@example +\layout @{ + \context @{ + \Staff + \override VerticalAxisGroup #'default-staff-staff-spacing + #'basic-distance = #10 + @} +@} +@end example + +垂直方向スペースのグラフィカル オブジェクト プロパティの標準設定は +@rinternals{VerticalAxisGroup} と @rinternals{StaffGrouper} でリスト アップ@c +しています。@c +特定のタイプの譜ではない行のデフォルト設定は、@c +@rinternals{Contexts} の中にある関連するコンテキストの説明でリスト アップ@c +しています。 + + +@subsubheading @code{VerticalAxisGroup} グラフィカル オブジェクトのプロパティ + +通常、@code{VerticalAxisGroup} プロパティは、@c +@code{Staff} レベル (あるいはそれと同等のレベル) で、@c +@code{\override} を用いて調節します。 + +@table @code +@item staff-staff-spacing + +カレントの譜とそのすぐ下の譜の間隔 +-- その間に 1 つ以上の譜ではない行 (@code{Lyrics} 等) が配置されている場合で@c +あっても -- +を決定するために使用します。@c +システムの最下段の譜には適用されません。 + +@code{VerticalAxisGroup} の @code{staff-staff-spacing} は、@c +譜がグループの一部である場合は @code{StaffGrouper} の +@code{staff-staff-spacing} プロパティを適用し、@c +グループではない譜の場合はその譜の @code{default-staff-staff-spacing} +を適用する Scheme 関数です。@c +これにより、グループ化されている譜に異なる間隔を入れることが可能です。@c +グループ化されていることとは無関係に同一の間隔を入れるには、@c +上で示したプロパティ再定義を用いて、@c +この関数を可変スペースの連想配列で置き換えます。 + +@item default-staff-staff-spacing +グループ化されていない譜で使用される @code{staff-staff-spacing} を定義している@c +可変スペースの連想配列です。@c +@code{staff-staff-spacing} は @code{\override} を用いて@c +上書きされることがあります。 + +@item staff-affinity +カレントの譜ではない行にスペースを入れるために使用する譜の方向です。@c +選択肢は @code{UP}, @code{DOWN}, それに @code{CENTER} です。@c +@code{CENTER} の場合、衝突や他のスペース上の制約によって妨げられない限り、@c +譜ではない行は上下にある近くの譜から等距離になるよう配置されます。@c +隣接する譜ではない行の @code{staff-affinity} は、@c +方向が下から上へと増加しないようにする必要があります。@c +例えば、@code{DOWN} に設定された譜ではない行のすぐ後に +@code{UP} に設定された譜ではない行を置くべきではありません。@c +システムの最上段にある譜ではない行は @code{DOWN} であるべきで、@c +システムの最下段にある譜ではない行は @code{UP} であるべきです。@c +譜ではない行の @code{staff-affinity} を @code{#f} に設定すると、@c +その行は譜として扱われます。@c +譜に対して @code{UP}, @code{CENTER}, あるいは @code{DOWN} の +@code{staff-affinity} を設定すると、@c +その譜は譜ではない行として扱われます。@c + +@item nonstaff-relatedstaff-spacing +カレントの譜ではない行と @code{staff-affinity} の方向にある@c +最も近い譜との間隔です +-- 2 つの間に譜ではない行が無く、@c +@code{staff-affinity} が @code{UP} と @code{DOWN} のどちらかである場合です。@c +@code{staff-affinity} が @code{CENTER} である場合、@c +@code{nonstaff-relatedstaff-spacing} は最も近くにある @emph{上下両サイド} の@c +譜の間隔になります +-- たとえ、カレントの譜ではない行と上下どちらかの譜の間に、@c +他の譜ではない行があったとしてもです。@c +このことは、譜ではない行の配置は、上下にある譜と譜ではない行の両方に依存する@c +ということを意味します。@c +このスペースの @code{stretchability} に小さな値を設定すると、@c +そのとおりのスペースになりやすくなります。@c +このスペースの @code{stretchability} に大きな値を設定すると、@c +そのとおりのスペースになりにくくなります。@c + +@item nonstaff-nonstaff-spacing +カレントの譜ではない行と @code{staff-affinity} の方向にある@c +次の譜ではない行の間隔です +-- 2 つの間に譜が無く、@c +@code{staff-affinity} が @code{UP} と @code{DOWN} のどちらかである場合です。@c + +@item nonstaff-unrelatedstaff-spacing +カレントの譜ではない行と @code{staff-affinity} とは反対方向にある譜の間隔です +-- 2 つの間に他の譜ではない行が無く、@c +@code{staff-affinity} が @code{UP} と @code{DOWN} のどちらかである場合です。@c +これは、例えば、@c +@code{Lyrics} 行と @code{Lyrics} が属していない譜との間のパディングを@c +最小にする必要がある場合に使用される可能性があります。 +@end table + + +@subsubheading @code{StaffGrouper} グラフィカル オブジェクトのプロパティ + +通常、@code{StaffGrouper} プロパティは、@c +@code{StaffGroup} レベル (あるいはそれと同等のレベル) で、@c +@code{\override} を用いて調節します。 + +@table @code +@item staff-staff-spacing +カレントの譜グループ内部にある隣接する譜の間隔です。@c +個々の譜の @code{VerticalAxisGroup} グラフィカル オブジェクトの +@code{staff-staff-spacing} プロパティは、@c +譜毎のスペース設定で上書きされる可能性があります。 + +@item staffgroup-staff-spacing +カレントの譜グループの最後の譜と、同じシステム内にあるすぐ下の譜の間隔です +-- 2 つの譜の間に 1 つ以上の譜ではない行 (@code{Lyrics} 等) が存在する場合で@c +あってもです。@c +システムの最下段の譜には適用されません。@c +個々の譜の @code{VerticalAxisGroup} グラフィカル オブジェクトの +@code{staff-staff-spacing} プロパティは、@c +譜毎のスペース設定で上書きされる可能性があります。 +@end table + +@seealso +記譜法リファレンス: +@ref{可変な垂直方向の \paper スペース変数}, +@ref{Modifying alists} + +インストールされているファイル: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm} + +内部リファレンス: +@rinternals{Contexts}, +@rinternals{VerticalAxisGroup}, +@rinternals{StaffGrouper} + + +@node グループ化されていない譜のスペース +@unnumberedsubsubsec グループ化されていない譜のスペース +@translationof Spacing of ungrouped staves + +@emph{譜} (@code{Staff}, @code{DrumStaff}, @code{TabStaff} 等) は、@c +1 つ以上のボイス コンテキストを保持することができ、@c +他の譜を保持することはできないコンテキストです。 + +以下のプロパティは、@emph{グループ化されていない} 譜のスペースに影響を与えます: + +@itemize +@item @code{VerticalAxisGroup} プロパティ: +@itemize +@item @code{default-staff-staff-spacing} +@item @code{staff-staff-spacing} +@end itemize +@end itemize + +これらのグラフィカル オブジェクト プロパティは、それぞれ上で説明しています。@c +@ref{システム内部のスペース プロパティ} を参照してください。 + +譜グループの一部である譜には、他にもプロパティがあります。@c +@ref{グループ化されている譜のスペース} を参照してください。 + +以下の例は、@code{default-staff-staff-spacing} プロパティがどのように@c +グループ化されていない譜のスペースに影響を与えるかを示しています。@c +@code{staff-staff-spacing} に同じ上書きを適用すると同じ効果を持ちますが、@c +譜がグループ化されている場合にも適用されます。 + +@c KEEP LY +@lilypond[verbatim,quote,staffsize=16] +\layout { + \context { + \Staff + \override VerticalAxisGroup #'default-staff-staff-spacing = + #'((basic-distance . 8) + (minimum-distance . 7) + (padding . 1)) + } +} + +<< + % 非常に低い位置にある音符は 'basic-distance が提供するよりも + % 大きなスペースを必要とするため、この譜と次の譜の間隔は 'padding + % によって決定されます。 + \new Staff { b,2 r | } + + % ここでは、'basic-distance が十分なスペースを提供していて、 + % ページ上にある他の要素のスペースを確保するためにスペースを + % ('minimum-distance の値に向かって) 縮める必要はありません。 + % そのため、この譜と次の譜の間隔は 'basic-distance によって + % 決定されます。 + \new Staff { \clef bass g2 r | } + + % 'padding に負の値を設定することにより、譜を重ねることができます。 + % 'basic-distance が取り得る最小の値は 0 です。 + \new Staff \with { + \override VerticalAxisGroup #'default-staff-staff-spacing = + #'((basic-distance . 3.5) + (padding . -10)) + } { \clef bass g2 r | } + \new Staff { \clef bass g2 r | } +>> +@end lilypond + +@seealso +インストールされているファイル: +@file{scm/define-grobs.scm} + +コード断片集: +@rlsr{Spacing} + +内部リファレンス: +@rinternals{VerticalAxisGroup} + + +@node グループ化されている譜のスペース +@unnumberedsubsubsec グループ化されている譜のスペース +@translationof Spacing of grouped staves + +オーケストラ譜や他の大きな楽譜では、@c +譜を譜ループ化することが一般的です。@c +通常、グループ間のスペースは、@c +同じグループの譜の間のスペースよりも大きくなります。 + +@emph{譜グループ} (@code{StaffGroup}, @code{ChoirStaff} 等) は、@c +同時進行する 1 つ以上の譜を保持することができるコンテキストです。 + +以下のプロパティは、譜グループの中にある譜のスペースに影響を与えます: + +@itemize +@item @code{VerticalAxisGroup} プロパティ: +@itemize +@item @code{staff-staff-spacing} +@end itemize +@item @code{StaffGrouper} プロパティ: +@itemize +@item @code{staff-staff-spacing} +@item @code{staffgroup-staff-spacing} +@end itemize +@end itemize + +これらのグラフィカル オブジェクト プロパティは、上で個々に説明しています。@c +@ref{システム内部のスペース プロパティ} を参照してください。 + +以下の例は、@code{StaffGrouper} グラフィカル オブジェクトのプロパティが@c +どのようにグループ化された譜のスペースに影響を与えるかを示しています: + +@lilypond[verbatim,quote,staffsize=16] +\layout { + \context { + \Score + \override StaffGrouper #'staff-staff-spacing #'padding = #0 + \override StaffGrouper #'staff-staff-spacing #'basic-distance = #1 + } +} + +<< + \new PianoStaff \with { + \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #20 + } << + \new Staff { c'1 } + \new Staff { c'1 } + >> + + \new StaffGroup << + \new Staff { c'1 } + \new Staff { c'1 } + >> +>> +@end lilypond + +@seealso +インストールされているファイル: +@file{scm/define-grobs.scm} + +コード断片集: +@rlsr{Spacing} + +内部リファレンス: +@rinternals{VerticalAxisGroup}, +@rinternals{StaffGrouper} + + +@node 譜ではない行のスペース +@unnumberedsubsubsec 譜ではない行のスペース +@translationof Spacing of non-staff lines + +@emph{譜ではない行} (@code{Lyrics}, @code{ChordNames} 等) は、@c +それが保持するレイアウト オブジェクトが譜のように譜刻される +(すなわち、システム内部の水平線上での譜刻) コンテキストです。@c +具体的に言うと、@c +譜ではない行は @code{VerticalAxisGroup} レイアウト オブジェクトを@c +作成する譜ではないコンテキストです。 + +以下のプロパティが、譜ではない行のスペースに影響を与えいます: + +@itemize +@item @code{VerticalAxisGroup} プロパティ: +@itemize +@item @code{staff-affinity} +@item @code{nonstaff-relatedstaff-spacing} +@item @code{nonstaff-nonstaff-spacing} +@item @code{nonstaff-unrelatedstaff-spacing} +@end itemize +@end itemize + +これらのグラフィカル オブジェクト プロパティは、上で個々に説明しています。@c +@ref{システム内部のスペース プロパティ} を参照してください。 + +以下の例は、@code{nonstaff-nonstaff-spacing} プロパティが@c +どのように隣接する譜ではない行のスペースに影響を与えるかを示しています。@c +ここでは、@code{stretchability} キーに非常に大きな値を設定することにより、@c +通常よりも歌詞が広がりやすくしています: + +@lilypond[verbatim,quote,staffsize=16] +\layout { + \context { + \Lyrics + \override VerticalAxisGroup + #'nonstaff-nonstaff-spacing #'stretchability = #1000 + } +} + +\new StaffGroup +<< + \new Staff \with { + \override VerticalAxisGroup #'staff-staff-spacing = #'((basic-distance . 30)) + } { c'1 } + \new Lyrics \with { + \override VerticalAxisGroup #'staff-affinity = #UP + } \lyricmode { up } + \new Lyrics \with { + \override VerticalAxisGroup #'staff-affinity = #CENTER + } \lyricmode { center } + \new Lyrics \with { + \override VerticalAxisGroup #'staff-affinity = #DOWN + } \lyricmode { down } + \new Staff { c'1 } +>> +@end lilypond + + +@seealso +インストールされているファイル: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm} + +コード断片集: +@rlsr{Spacing} + +@c @lsr{spacing,page-spacing.ly}, +@c @lsr{spacing,alignment-vertical-spacing.ly} + +内部リファレンス: +@rinternals{Contexts}, +@rinternals{VerticalAxisGroup} + + +@node 譜とシステムを明示的に配置する +@subsection 譜とシステムを明示的に配置する +@translationof Explicit staff and system positioning + +上で説明した可変な垂直方向のスペースの仕組みを理解する方法の 1 つに、@c +譜とシステムの間の垂直方向のパティングの大きさを制御する設定を@c +コレクションすることがあります。 + +@code{NonMusicalPaperColumn #'line-break-system-details} を用いて、@c +垂直方向のスペースに別の方法でアプローチすることができます。@c +可変な垂直方向のスペースの仕組みが垂直方向のパディングを指定するのに対して、@c +@code{NonMusicalPaperColumn #'line-break-system-details} は@c +ページ上の垂直方向の位置を指定することができます。 + +@code{NonMusicalPaperColumn #'line-break-system-details} は +3 つ設定からなる連想配列を受け取ります: + +@itemize +@item @code{X-offset} +@item @code{Y-offset} +@item @code{alignment-distances} +@end itemize + +以下の @code{NonMusicalPaperColumn} に対する上書きを含む、@c +グラフィカル オブジェクトの上書きは、@c +入力ファイルの中の 3 つの場所に配置することができます: + +@itemize +@item 音符入力の途中に直接配置する +@item @code{\context} ブロックの中に配置する +@item @code{\with} ブロックの中に配置する +@end itemize + +@code{NonMusicalPaperColumn} を上書きする場合、@c +通常は @code{\context} ブロックや @code{\with} ブロックの中で@c +@code{\override} コマンドを使用します。@c +一方、音符入力の途中で @code{NonMusicalPaperColumn} を上書きする場合、@c +特殊なコマンド @code{\overrideProperty} を使用します。@c +ここで、@c +特殊なコマンド @code{\overrideProperty} で +@code{NonMusicalPaperColumn} を上書きする例をいくつか挙げます: + +@example +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((X-offset . 20)) + +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((Y-offset . 40)) + +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((X-offset . 20) + (Y-offset . 40)) + +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((alignment-distances . (15))) + +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((X-offset . 20) + (Y-offset . 40) + (alignment-distances . (15))) +@end example + +これらの異なる設定がそれぞれどのように機能するのかを理解するために、@c +まったく上書きを含まない例を見ることから始めます。 + +@c \book { } is required in these examples to ensure the spacing +@c overrides can be seen between systems. -np + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + s1*5 \break + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + +この楽譜は改行/改ページ情報を専用のボイスに孤立させています。@c +この改行/改ページ用のボイスを作成するテクニックは、@c +例がより複雑になっていくときに、@c +レイアウトと音楽入力を分離することを助けてくれます。@c +@ref{改行/改ページのために追加のボイスを使用する} を参照してください。 + +明示的な @code{\breaks} は一様に音楽を 1 行あたり 5 小節に分割しています。@c +垂直方向のスペースは LilyPond のデフォルトです。@c +@code{NonMusicalPaperColumn} グラフィカル オブジェクトの +@code{line-break-system-details} 属性の中にある +@code{Y-offset} を設定することで、@c +各システムの垂直方向の開始位置を設定することができます: + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 0)) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 40)) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 80)) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + +@code{line-break-system-details} は@c +潜在的に多くの値を持つ連想リストをとりますが、@c +ここでは値を 1 つだけしかセットしていないということに注意してください。@c +また、ここでは @code{Y-offset} プロパティは、@c +各システムがページに描画される垂直方向の位置を@c +決定しているということにも注意してください。 + +これまでに各システムの垂直方向の開始位置を明示的に設定しましたが、@c +各システム内部の各譜の垂直方向の開始位置を手動で設定することも可能です。@c +@code{line-break-system-details} のサブプロパティ @code{alignment-offsets} を@c +用います。 + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 20) + (alignment-distances . (15))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 60) + (alignment-distances . (15))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 100) + (alignment-distances . (15))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + +ここでは @code{NonMusicalPaperColumn} グラフィカル オブジェクトの@c +@code{line-break-system-details} 属性に 2 つの値を代入しているということに@c +注意してください。@c +@code{line-break-system-details} 属性の連想配列はもっと多くのスペース パラメータ +(例えば、@code{Y-offset} ペアに相当する @code{X-offset} ペア) +を受け付けますが、@c +システムと譜の垂直方向の開始地点を制御するのに必要な設定は、@c +@code{Y-offset} ペアと @code{alignment-offsets} ペアだけです。 +最後に、@c +@code{alignment-offsets} は譜の垂直方向の位置を指定するのであり、@c +譜グループの位置を指定するわけではないということに注意してください。 + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 0) + (alignment-distances . (30 10))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 60) + (alignment-distances . (10 10))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 100) + (alignment-distances . (10 30))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new StaffGroup << + \new Staff { \repeat unfold 15 { d'4 d' d' d' } } + \new Staff { \repeat unfold 15 { e'4 e' e' e' } } + >> + >> + } +} +@end lilypond + +考慮すべき点がいくつかあります: + +@itemize +@item @code{alignment-offsets} を使用する場合、@c +歌詞と他の譜ではない行は譜としてカウントされません。 + +@item @code{X-offset}, @code{Y-offset} それに @code{alignment-offsets} に@c +渡される数の単位は、@c +譜線間隔の乗数と解釈されます。@c +正の値は譜と歌詞を下または右に移動させ、@c +負の値は譜と歌詞を上または左に移動させます。 + +@item ここで扱った @code{NonMusicalPaperColumn #'line-break-system-details} +設定は譜とシステムを任意の場所に配置することを可能にするため、@c +紙面領域やマージン領域を犯したり、@c +他の譜やシステムの上に譜刻する可能性さえあります。@c +これらの設定に適切な値を渡すことで、そのようなことは避けられます。 +@end itemize + +@seealso +コード断片集: +@rlsr{Spacing} + + +@node 垂直方向の衝突回避 +@subsection 垂直方向の衝突回避 +@translationof Vertical collision avoidance + +@funindex outside-staff-priority +@funindex outside-staff-padding +@funindex outside-staff-horizontal-padding + +直観的に、音楽記譜には譜に属するオブジェクトと、@c +譜の外側に配置されるべきオブジェクトがあります。@c +譜の外側に属するオブジェクトには、リハーサル記号、テキスト、@c +それに強弱記号などがあります +(これからは、それらを譜外部オブジェクトと呼びます)。@c +LilyPond が譜外部オブジェクトの垂直方向の配置を決定するとき、@c +譜外部オブジェクトをできる限り譜の近くに、@c +しかしながら、他のオブジェクトと衝突しない程度の近さに配置します。 + +LilyPond は @code{outside-staff-priority} プロパティを用いて@c +あるグラフィカル オブジェクトが譜外部オブジェクトかどうかを決定します: +@code{outside-staff-priority} が数であれば、@c +そのグラフィカル オブジェクトは譜外部オブジェクトです。@c +さらに、@code{outside-staff-priority} は LilyPond に、@c +そのグラフィカル オブジェクトを配置する順番を教えてくれます。 + +まず最初にに、LilyPond は譜外部オブジェクトには属さないオブジェクトを@c +すべて配置します。@c +次に、譜外部オブジェクトを @code{outside-staff-priority} に従って +(昇順に) ソートします。@c +LilyPond は譜外部オブジェクトを、既に配置済みのオブジェクトと衝突しないよう、@c +一つずつ配置していきます。@c +つまり、2 つの譜外部オブジェクトが同じスペースをめぐって競合する場合、@c +より小さな @code{outside-staff-priority} を持つオブジェクトが@c +譜の近くに配置されます。 + +@c KEEP LY +@lilypond[quote,ragged-right,relative=2,verbatim] +c4_"Text"\pp +r2. +\once \override TextScript #'outside-staff-priority = #1 +c4_"Text"\pp % ここでは、テキストが譜の近くに配置されます +r2. +% outside-staff-priority に数ではない値を設定することにより、 +% 自動衝突回避を無効にします +\once \override TextScript #'outside-staff-priority = ##f +\once \override DynamicLineSpanner #'outside-staff-priority = ##f +c4_"Text"\pp % ここでは、2 つのオブジェクトが衝突します +@end lilypond + +ある譜外部オブジェクトとその前に配置されたグラフィカル オブジェクトとの間に@c +ある垂直方向のパディングは、@c +@code{outside-staff-padding} で制御することができます。 + +@c KEEP LY +@lilypond[quote,ragged-right,relative=2,verbatim,staffsize=18] +\once \override TextScript #'outside-staff-padding = #0 +a'^"このテキストは音符のすぐ近くに配置されます。" +\once \override TextScript #'outside-staff-padding = #3 +c^"このテキストは前のテキストから離れた位置に配置されます" +c^"この手キスとは前にテキストの近くに配置されます" +@end lilypond + + +デフォルトでは、譜外部オブジェクトの配置は、@c +配置済みのグラフィカル オブジェクトとの水平方向の衝突回避だけを考慮します。@c +このことは、@c +オブジェクト同士が水平方向に非常に近く配置される状況を招く可能性があります。@c +譜の垂直方向の間隔を設定した場合も、@c +譜外部オブジェクトが挟み込まれる可能性があります。@c +@code{outside-staff-horizontal-padding} を設定すると、@c +オブジェクトは垂直方向にずれるため、@c +そのような状況は起こらなくなります。 + +@c KEEP LY +@lilypond[quote,ragged-right,relative=2,verbatim] +% マークアップは後に続く音符に近寄りすぎています +c4^"Text" +c4 +c''2 +% outside-staff-horizontal-padding を設定することで修正します +R1 +\once \override TextScript #'outside-staff-horizontal-padding = #1 +c,,4^"Text" +c4 +c''2 +@end lilypond + +@seealso +コード断片集: +@rlsr{Spacing} + + +@node 水平方向のスペース +@section 水平方向のスペース +@translationof Horizontal spacing + +@cindex horizontal spacing (水平方向のスペース) +@cindex spacing, horizontal (水平方向のスペース) + +@menu +* 水平方向のスペースの概要:: +* 新しいスペース領域:: +* 水平方向のスペースを変更する:: +* 行の長さ:: +* プロポーショナル ノーテーション:: +@end menu + + +@node 水平方向のスペースの概要 +@subsection 水平方向のスペースの概要 +@translationof Horizontal spacing overview + +スペース エンジンは異なる演奏時間を異なる長さの可変距離 (@q{スプリング}) に@c +翻訳します。@c +長い演奏時間はより多くのスペースをとり、@c +短い演奏時間はより少ないスペースをとります。@c +最短の演奏時間は固定量のスペース +(これは @rinternals{SpacingSpanner} オブジェクトの中にある +@code{shortest-duration-space} によって制御されます) +をとります。@c +演奏時間が長くなるほど、より多くのスペースをとります: +演奏時間が倍になると、固定量のスペース +(これは @code{spacing-increment} によって制御されます) +がその音符に付け加えられます。 + +例えば、以下の楽曲には多くの 2 分音符、4 分音符、@c +それに 8 分音符が含まれています。 +8 分音符の後には符頭幅 (NHW) 1 つ分が挿入されます。@c +4 分音符の後には 2 NHW が挿入され、2 分音符の後には 3 NHW が挿入されます。 + +@lilypond[quote,verbatim,relative=1] +c2 c4. c8 c4. c8 c4. c8 c8 +c8 c4 c4 c4 +@end lilypond + +通常、@code{spacing-increment} は 1.2 譜スペースに設定されています。@c +これは符頭の幅とだいたい同じです。@c +さらに、@code{shortest-duration-space} は 2.0 に設定されています。@c +つまり、最短の音符は 2.4 譜スペース (@code{spacing-increment} の 2 倍) の@c +水平方向のスペースをとります。@c +このスペースはシンボルの左端からカウントされます。@c +そのため、最短の音符の後には一般に 1 NHW のスペースが挿入されます。 + +上記の手順に正確に従った場合、@c +8 分音符や 16 分音符を含む楽譜に 32 分音符を 1 つ付け加えると、@c +楽譜全体が大きく引き伸ばされます。@c +最短の音符はもはや 16 分音符ではなく、32 分音符であり、@c +それぞれの 16 分音符に 1 NHW が付け加えられます。@c +このことを防ぐため、スペースをとるための最短の演奏時間を、@c +その楽譜の中にある最短の音符ではなく、最も頻繁に出現する音符とします。 + + +最も共通する最短演奏時間は以下のように決定されます: +各小節において、最短の演奏時間が決定されます。@c +スペースの基本として、最も共通する最短演奏時間が選択されます。@c +条件として、この最短演奏時間は常に 8 分音符以上の長さになります。@c +@code{lilypond} を @option{--verbose} オプションを付けて実行すると、@c +最短演奏時間が表示されます。 + +この演奏時間はカスタマイズすることもできます。@c +@rinternals{SpacingSpanner} の中にある @code{common-shortest-duration} を@c +設定した場合、@c +スペースのための基本演奏時間が設定されれます。@c +この基本演奏時間の最大値 (通常、8 分音符) は、@c +@code{base-shortest-duration} によって設定されます。 + +@funindex common-shortest-duration +@funindex base-shortest-duration +@funindex stem-spacing-correction +@funindex spacing + +共通の最短音符よりも短い音符の後には、@c +その音符の演奏時間と共通の最短音符の演奏時間の比を反映した@c +スペースが付けられます。@c +そのため、@c +上記の例に 16 分音符を数個付け加えた場合、@c +16 分音符の後には NHW の半分の幅のスペースが付けられます: + +@lilypond[quote,verbatim,relative=2] +c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4 +@end lilypond + + +@emph{Essay on automated music engraving} において、@c +符幹の向きはスペースに影響を与えるということを説明しました +(@ressay{Optical spacing} を参照してください)。@c +これは、@rinternals{NoteSpacing} オブジェクトの中にある +@code{stem-spacing-correction} プロパティによって制御されます。@c +このオブジェクトは @rinternals{Voice} コンテキストごとに生成されます。@c +@code{StaffSpacing} オブジェクト +(@rinternals{Staff} コンテキストの中で生成されます) +は、符幹/小節線のスペースを制御するために、同様のプロパティを保持します。@c +以下の例は、それらプロパティによる修正の様子を示しています。 +前半はデフォルト設定による修正であり、@c +後半は修正を誇張しています: + +@lilypond[quote,ragged-right] +{ + c'4 e''4 e'4 b'4 | + b'4 e''4 b'4 e''4 | + \override Staff.NoteSpacing #'stem-spacing-correction = #1.5 + \override Staff.StaffSpacing #'stem-spacing-correction = #1.5 + c'4 e''4 e'4 b'4 | + b'4 e''4 b'4 e''4 | +} +@end lilypond + +プロポーショナル ノーテーション (proportional notation) がサポートされます。@c +@ref{プロポーショナル ノーテーション} を参照してください。 + +@seealso +Essay on automated music engraving: +@ressay{Optical spacing} + +コード断片集: +@rlsr{Spacing} + +内部リファレンス: +@rinternals{SpacingSpanner}, +@rinternals{NoteSpacing}, +@rinternals{StaffSpacing}, +@rinternals{NonMusicalPaperColumn} + +@knownissues +スペースを手動で上書きするための、手軽な仕組みはありません。@c +余分なスペースを楽譜に挿入するために、以下の手段があります +-- 必要に応じて、パディングの値を調整しています。 + +@example + \override Score.NonMusicalPaperColumn #'padding = #10 +@end example + +スペースを減らすための手段はありません。 + + +@node 新しいスペース領域 +@subsection 新しいスペース領域 +@translationof New spacing area + +@code{newSpacingSection} を用いることで、@c +異なるスペース パラメータを持つ新しいセクションを開始することができます。@c +これは、音符の長さに関して異なる概念を持つセクションがある場合に、有用です。@c + +以下の例では、@c +拍子記号が新たしいセクションを導入しています。@c +その結果、16 分音符の間隔が広くなっています。 + +@lilypond[relative=1,verbatim,quote] +\time 2/4 +c4 c8 c +c8 c c4 c16[ c c8] c4 +\newSpacingSection +\time 4/16 +c16[ c c8] +@end lilypond + +@code{\newSpacingSection} コマンドは新たに +@code{SpacingSpanner} オブジェクトを作成します。@c +そのため、その場所で新たに @code{\override} が使用される可能性があります。 + +@seealso +コード断片集: +@rlsr{Spacing} + +内部リファレンス: +@rinternals{SpacingSpanner} + + +@node 水平方向のスペースを変更する +@subsection 水平方向のスペースを変更する +@translationof Changing horizontal spacing + +水平方向のスペースを、@code{base-shortest-duration} で@c +変更することができます。@c +ここで、同じ音楽を比較します。@c +1 つではこのプロパティを変更せず、もう 1 つでは変更します。@c +@code{ly:make-moment} の値が大きくなると、@c +楽譜は小さくなります。@c +@code{ly:make-moment} は演奏時間を構成するため、@c +@code{1 4} は @code{1 16} よりも長い演奏時間である@c +ということに注意してください。 + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative c'' { + g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } +} +@end lilypond + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative c'' { + g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } + \layout { + \context { + \Score + \override SpacingSpanner + #'base-shortest-duration = #(ly:make-moment 1 16) + } + } +} +@end lilypond + + +@snippets + +デフォルトでは、連符のスペースは演奏時間とは関係の無い要素 +(臨時記号、音部記号の変化など) +に依存します。@c +そのような記号を無視して、同じ演奏時間に等しいスペースを割り当てるには、@c +@code{Score.SpacingSpanner #'uniform-stretching} を使用します。@c +このプロパティは、楽譜の先頭でのみ、変更することができます。 + +@lilypond[quote,ragged-right,verbatim] +\score { + << + \new Staff { + \times 4/5 { + c8 c8 c8 c8 c8 + } + c8 c8 c8 c8 + } + \new Staff { + c8 c8 c8 c8 + \times 4/5 { + c8 c8 c8 c8 c8 + } + } + >> + \layout { + \context { + \Score + \override SpacingSpanner #'uniform-stretching = ##t + } + } +} +@end lilypond + +@code{strict-note-spacing} がセットされている場合、@c +音部記号、小節線、それに装飾小音符を考慮せずに、@c +音符にスペースが割り当てられます。 + +@lilypond[quote,ragged-right,relative=2,verbatim] +\override Score.SpacingSpanner #'strict-note-spacing = ##t +\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } +@end lilypond + +@seealso +コード断片集: +@rlsr{Spacing} + + +@node 行の長さ +@subsection 行の長さ +@translationof Line length + +@cindex page breaks (改ページ) +@cindex breaking pages (改ページ) + +@funindex indent +@funindex line-width +@funindex ragged-right +@funindex ragged-last + +@c Although line-width can be set in \layout, it should be set in paper +@c block, to get page layout right. +@c Setting indent in \paper block makes not much sense, but it works. + +@c Bit verbose and vague, use examples? +スペースに影響を与える最も基本的な設定は、@c +@code{indent} と @code{line-width} です。@c +これらは @code{\layout} ブロックの中で設定されます。@c +これらの設定は、楽譜の最初の行のインデントと、行の長さを制御します。 + +@code{\layout} ブロックの中で @code{ragged-right} が真にセットされている場合、@c +システムは行全体を埋めるように水平方向に引き伸ばされず、@c +本来の長さで終了します。@c +これは、小さな楽譜の場合や、@c +本来のスペースがどれくらいの密度なのかをチェックする場合に有用です。@c +通常のデフォルト設定は偽ですが、@c +1 つしかシステムを持たない楽譜の場合のデフォルト値は真です。 + +@cindex page layout (ページ レイアウト) +@cindex vertical spacing (垂直方向のスペース) + +@code{ragged-last} オプションは @code{ragged-right} に似ていますが、@c +楽曲の最後の行だけに影響を与えます。@c +最後の行には、何の制限も加えられません。@c +この結果は、文章の段落をフォーマットする場合と同じです。@c +文章の段落において、@c +最後の行は単純にそのままの長さにフォーマットされます。 + +@c Note that for text there are several options for the last line. +@c While Knuth TeX uses natural length, lead typesetters use the same +@c stretch as the previous line. eTeX uses \lastlinefit to +@c interpolate between both these solutions. + +@example +\layout @{ + indent = #0 + line-width = #150 + ragged-last = ##t +@} +@end example + +@seealso +コード断片集: +@rlsr{Spacing} + + +@node プロポーショナル ノーテーション +@subsection プロポーショナル ノーテーション +@translationof Proportional notation + +Lilypond はプロポーショナル ノーテーションをサポートします。@c +この記譜法では、各音符は演奏時間に相当する水平方向のスペースをとります。@c +このタイプの水平スペースは、方眼紙上の水平方向スペースと同等です。@c +20 世紀後半、21 世紀前半の楽譜の中には、@c +複雑なリズムをわかりやすく示すため、@c +あるいは、時間軸や他の図の配置を容易にするために、@c +プロポーショナル ノーテーションを使っているものがあります。 + +LilyPond はプロポーショナル ノーテーション用に 5 つの設定をサポートします。@c +それらの設定は一緒に使われることもありますし、単独で使われることもあります: + +@itemize +@item @code{proportionalNotationDuration} +@item @code{uniform-stretching} +@item @code{strict-note-spacing} +@item @code{\remove Separating_line_group_engraver} +@item @code{\override PaperColumn #'used = ##t} +@end itemize + +以下の例では、@c +これら 5 つのプロポーショナル ノーテーション用の設定を見ていき、@c +それらがどのように相互に作用するかを調べます。 + +以下のような 1 小節の例から始めます。@c +これは、@code{ragged-right} が ON であり、@c +クラシック音楽でのスペースを使用します。 + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> +} +@end lilypond + +小節の始まりに配置された 2 分音符がその小節で占める水平方向のスペースは、@c +半分よりもずっと少ないということに注意してください。@c +そのため、@c +小節の後半に配置された 16 分音符と、16 分音符からなる 5 連符 +(すなわち、20 分音符) がその小節で占める水平方向のスペースは、@c +半分よりもずっと多くなっています。 + +クラシック音楽の譜刻では、このスペースのとり方が望ましいかもしれません。@c +なぜなら、2 分音符から水平方向のスペースを借りてきて、@c +小節全体としてスペースを維持することができるからです。 + +他方で、時間軸や他の図を楽譜の上または下に挿入しようとした場合、@c +プロポーショナル ノーテーションが必要になります。@c +@code{proportionalNotationDuration} 設定でプロポーショナル ノーテーションを@c +有効にします。 + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 20) + } + } +} +@end lilypond + +今度は、@c +小節の前半に配置された 2 分音符と、後半に配置された短い音符の集まりが@c +占める水平方向のスペースは等しくなりました。@c +これで、この例の上または下に、時間軸や他の図を配置することが可能になりました。 + +@code{proportionalNotationDuration} 設定は、@c +@code{Score} の中にあるコンテキスト設定です。@c +入力ファイルの中でコンテキスト設定が出現するのは、@c +3 つの場所のどれかだということを思い出してください +-- @code{\with} ブロックの中、@code{\context} ブロックの中、あるいは、@c +@code{\set} コマンドを前に置いた形で音楽エントリの中に直接配置します。@c +他のすべてのコンテキスト設定と同様に、@c +ユーザはこれら 3 つの場所のどれか 1 つを選択して、@c +そこで @code{proportionalNotationDuration} をセットすることができます。 + +@code{proportionalNotationDuration} 設定は引数を 1 つとります。@c +これはすべての音楽要素へのスペースに関係する参照演奏時間です。@c +LilyPond Scheme 関数 @code{make-moment} は 2 つの引数をとります +-- 全音符の分数を表す分子と分母です。@c +それゆえ、@code{(ly:make-moment 1 20)} という呼び出しは、@c +20 分音符の参照演奏時間となります。@c +@code{(ly:make-moment 1 16)}, @code{(ly:make-moment 1 8)}, それに +@code{(ly:make-moment 3 97)} という値はすべてとり得る値です。 + +では、どのように @code{proportionalNotationDuration} に渡す@c +適切な参照演奏時間を決めるのでしょうか?@c +通常、その楽曲の最速 (あるいは最小) の演奏時間に近い演奏時間から始めて、@c +トライ&エラーで決めます。@c +小さな参照演奏時間にすると疎な楽譜となり、@c +大きな参照演奏時間にすると密な楽譜になります。 + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 8) + } + } +} + +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 16) + } + } +} + +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 32) + } + } +} +@end lilypond + +8 分音符以上などのようなあまりにも大きな演奏時間にすると、@c +楽譜が密になりすぎて、符頭の衝突が発生する可能性があるということに@c +注意してください。@c +さらに、一般にプロポーショナル ノーテーションはクラシック音楽のスペースよりも@c +多くの水平方向スペースをとるということに注意してください。@c +プロポーショナル ノーテーションは、多くの水平方向スペースを使うことで、@c +明快なリズムを提供します。 + +次に、重複する連符に最適なスペースを割り当てる方法を検証します。 + +まず、クラシック音楽のスペースで、異なるタイプの連符を付け加えたときに、@c +何が起こるかを見ていきます。 + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } + >> +} +@end lilypond + +このスペースのとり方は良くありません。@c +なぜなら、下の譜の音符の間隔が一様ではないからです。@c +クラシック音楽の譜刻には複雑な連符はほとんど含まれないため、@c +クラシック音楽の譜刻規則はこのような結果を生み出す可能性があります。@c +@code{proportionalNotationDuration} を設定することにより、@c +この状況はかなり修正されます。 + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 20) + } + } +} +@end lilypond + +しかしながら、注意深く見ると、@c +9 連符の後半の音符の間隔が、@c +前半の音符の間隔よりもわずかに広くなっています。@c +間隔を一様にするため、@c +@code{SpacingSpanner} のプロパティである +@code{uniform-stretching} を ON にします。 + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 20) + \override SpacingSpanner #'uniform-stretching = ##t + } + } +} +@end lilypond + +今度は、適切にスペースが割り当てられました。@c +リズムは視覚的に明快になり、必要があれば時間軸や図を挿入することができます。 + +LilyPond のプロポーショナル ノーテーション パッケージは、@c +すべてのプロポーショナルな楽譜は @code{SpacingSpanner} の +@code{'uniform-stretching} 属性が @code{##t} に設定されているものと@c +見なします。@c +@code{SpacingSpanner} の @code{'uniform-stretching} 属性が @code{##t} +に設定されずに、@c +@code{proportionalNotationDuration} が設定されると、@c +例えば、スキップ (空白音符) の水平方向のスペースが適切に割り当てられません。 + +@code{SpacingSpanner} は @code{Score} コンテキストの中にある@c +抽象的なグラフィカル オブジェクトです。@c +@code{proportionalNotationDuration} の設定と一緒に、@c +@code{SpacingSpanner} をオーバライドする場所は、@c +入力ファイルの 3 つの場所のいずれかになります +-- @code{Score \with} ブロックの中、@code{Score \context} ブロックの中、@c +あるいは音符入力の場所に直接配置するかです。 + +デフォルトでは、@code{Score} ごとに @code{SpacingSpanner} が 1 つあります。@c +つまり、デフォルトでは、@code{uniform-stretching} は楽譜全体で ON であるか、@c +OFF であるかのどちらかであるということです。@c +しかしながら、この振る舞いをオーバライドして、@c +楽譜内の異なる場所で異なるスペース機能を設定することができます。@c +これを実現するには、コマンド @code{\newSpacingSection} を用います。@c +更なる情報は、@ref{新しいスペース領域} を参照してください。 + +次に、@code{Separating_line_group_engraver} の効果を検証し、@c +なぜプロポーショナルな楽譜は頻繁に@c +このエングラーバを削除するのかを見ていきます。@c +以下の例は、各システムの最初の音符の直前に小さな @qq{前置きの} スペースが@c +あることを示しています。@c + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} + +\new Staff { + c'1 + \break + c'1 +} +@end lilypond + + +この前置きのスペースの量は、前にあるのが拍子記号、調号、あるいは音部記号の@c +いずれであっても、同じです。@c +@code{Separating_line_group_engraver} はこのスペースに責任を負います。@c +@code{Separating_line_group_engraver} を削除すると、@c +このスペースはゼロになります。 + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} + +\new Staff \with { + \remove Separating_line_group_engraver +} { + c'1 + \break + c'1 +} +@end lilypond + +拍子記号、調号、音部記号、それに臨時記号のような非音楽要素は、@c +プロポーショナル ノーテーションでは問題になります。@c +これらはすべて演奏時間を持ちません。@c +しかしながら、これらはすべて水平方向のスペースを消費します。@c +この問題に対して、プロポーショナルな楽譜はいくつかの異なるアプローチをとります。 + +調号のスペースの問題は、調号を持たないことで回避できるかもしれません。@c +これは有効な選択肢です。@c +なぜなら、たいていのプロポーショナルな楽譜は現代音楽だからです。@c +拍子記号についても同じことが言えるかもしれません。@c +時間軸や他の図を持つ楽譜であれば特にそうです。@c +しかしながら、そのような楽譜は例外的なものであり、@c +たいていのプロポーショナルな楽譜は少なくともいくつかの拍子記号を持ちます。@c +さらに、音部記号と臨時記号はより必須のものです。 + +それでは、プロポーショナルなコンテキストにおける非音楽要素のスペースに対して@c +どのような解決法が存在するのでしょうか?@c +とり得る選択肢の 1 つに、@code{SpacingSpanner} の @code{strict-note-spacing} +プロパティがあります。@c +以下の 2 つの楽譜を比べてください: + +@lilypond[quote,verbatim,ragged-right] +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) + c''8 + c''8 + c''8 + \clef alto + d'8 + d'2 +} + +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) + \override Score.SpacingSpanner #'strict-note-spacing = ##t + c''8 + c''8 + c''8 + \clef alto + d'8 + d'2 +} +@end lilypond + +どちらの楽譜もプロポーショナルです。@c +しかしながら、最初の楽譜は音部変更があるため広がりすぎています。@c +2 番目の楽譜は、@code{strict-note-spacing} を ON にしているため、@c +プロポーショナルな間隔を維持しています。@c +@code{strict-note-spacing} を ON にすると、@c +拍子記号、調号、音部記号、それに臨時記号の幅は、@c +スペース アルゴリズムの中で何の役割も果たさなくなります。 + +この設定に加えて、他にもプロポーショナルな楽譜で頻出する設定があります。@c +以下のような設定です: + +@itemize +@item @code{\override SpacingSpanner #'strict-grace-spacing = ##t} +@item @code{tupletFullLength = ##t} +@item @code{\override Beam #'breakable = ##t} +@item @code{\override Glissando #'breakable = ##t} +@item @code{\override TextSpanner #'breakable = ##t} +@item @code{\remove Forbid_line_break_engraver in the Voice context} +@end itemize + +これらの設定は、装飾小音符のスペースを厳密にし、@c +連譜の囲みをリズム的な開始点、終了点まで拡張し、@c +(連桁のような) 広がりを持つ要素が、@c +システムやページが改まるときに中断されることを許可します。@c +これらの設定について、本書の関連パートを参照してください。 + +@seealso +記譜法リファレンス: +@ref{新しいスペース領域} + +コード断片集: +@rlsr{Spacing} + + +@node 音楽を少ないページに収める +@section 音楽を少ないページに収める +@translationof Fitting music onto fewer pages + +ときどき、譜の 1 つ、2 つが 2 番目 (あるいは、3 番目、4 番目@dots{}) +のページに配置されてしまうことがあります。@c +これは腹立たしいことです +-- 特に、前のページに十分なスペースがあるように見える場合は。 + +レイアウトの問題を解決しようとしている時、@c +@code{annotate-spacing} は何にも代え難いツールです。@c +このコマンドはさまざまなレイアウト スペース変数の値を表示します。@c +詳細は以下のセクション @ref{スペースを表示する} を参照してください。 + +@menu +* スペースを表示する:: +* スペースを変更する:: +@end menu + + +@node スペースを表示する +@subsection スペースを表示する +@translationof Displaying spacing + +@funindex annotate-spacing +@cindex spacing, display of layout (レイアウト スペースの表示) + +ページ フォーマットのために変更される可能性がある、@c +垂直方向のレイアウト変数の値を表示させるには、@c +@code{\paper} ブロックの中で @code{annotate-spacing} をセットします: + +@c need to have \book{} otherwise we get the separate systems. -hwn +@lilypond[verbatim,quote] +#(set-default-paper-size "a6" 'landscape) +\book { + \score { { c4 } } + \paper { annotate-spacing = ##t } +} +@end lilypond + + +@noindent +すべてのレイアウト値は、@c +@code{\paper} ブロックや @code{\layout} ブロックの中で@c +指定された単位とは無関係に、譜スペースで表示されます。@c +上の例では、@code{paper-height} の値は 59.75 @code{譜スペース} であり、@c +@code{staff-size} は 20 ポイント (デフォルト値) です。@c +以下のことに注意してください: + +@multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm} + +@item 1 ポイント +@tab = (25.4/72.27) mm + +@item 1 譜スペース +@tab = (@code{staff-size})/4 ポイント +@item +@tab = (@code{staff-size})/4 * (25.4/72.27) mm + +@end multitable + +@noindent +この場合、1 譜スペースは約 1.757mm です。@c +それゆえ、59.75 譜スペースである @code{paper-height} は 105mm であり、@c +横置きの @code{A6} 紙の高さと同じです。@c +ペア (@var{a},@var{b}) は間隔を表します。@c +@var{a} は間隔の下端を、@var{b} は上端を表します。 + +@seealso +記譜法リファレンス: +@ref{譜サイズを設定する} + +コード断片集: +@rlsr{Spacing} + + +@node スペースを変更する +@subsection スペースを変更する +@translationof Changing spacing + +@code{annotate-spacing} の出力は、@c +垂直方向のレイアウト変数の値を詳細に取得します。@c +マージンや他のレイアウト変数を変更することについての詳細は、@c +@ref{ページ レイアウト} を参照してください。 + +マージン以外にも、スペースを節約するための選択肢がいくつかあります: + +@itemize +@item + +(1 ページにできるだけ多くのシステムを収めるために) +スペースがある限り、システムを可能な限り近寄せる。@c +それにより、ページの下部に空きスペースが無くなります。 + +@example +\paper @{ + system-system-spacing = #'((basic-distance . 0.1) (padding . 0)) + ragged-last-bottom = ##f + ragged-bottom = ##f +@} +@end example + +@item +システム数を設定する。@c +これは 2 つの意味でスペースを節約します。@c +システム数を設定することで、たとえそれがデフォルト値であっても、@c +各ページにより多くのシステムを収めることができる場合があります。@c +なぜなら、見積もりのステップが迂回され、より正確な適合が得られるからです。@c +さらに、システム数を減らすことで、より多くのページを節約できる場合があります。@c +例えば、デフォルトのレイアウトが 11 システムである場合、@c +以下の指定により、レイアウトは強制的に 10 システムに収められます。 + +@example +\paper @{ + system-count = #10 +@} +@end example + +@item +強制的にページ数を設定する。@c +例えば、以下の設定は強制的に 2 ページにレイアウトさせます。 + +@example +\paper @{ + page-count = #2 +@} +@end example + +@item +オブジェクトがシステムの垂直方向のサイズを増加させるのを避ける +(あるいは減らす)。@c +例えば、volta リピート (または、差し替えの繰り返し) は@c +余分なスペースを必要とします。@c +これらの繰り返しが 2 つのシステムに広がっている場合、@c +1 システムが volta リピートを持ち、もう 1 システムが volta リピートを持たない@c +場合よりも多くのスペースをとります。@c +別の例では、@c +システムから突き出ている強弱記号を譜に近づけることで、@c +スペースを節約することができます: + +@lilypond[verbatim,quote,relative=1] +e4 c g\f c +e4 c g-\tweak #'X-offset #-2.7 -\tweak #'Y-offset #2.5 \f c +@end lilypond + +@item +@code{SpacingSpanner} 経由で水平方向のスペースを変更する。@c +詳細は、@ref{水平方向のスペースを変更する} を参照してください。@c +以下の例は、デフォルトをスペースを示しています: + +@lilypond[verbatim,quote] +\score { + \relative c'' { + g4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } +} +@end lilypond + +@noindent +次の例では、@code{common-shortest-duration} の値を +@code{1/4} から @code{1/2} に変更しています。@c +この例では、4 分音符が最も共通で、最短の演奏時間です。@c +そのため、@code{common-shortest-duration} を長くすることで +@q{詰め込む} 効果を得られます: + +@lilypond[verbatim,quote] +\score { + \relative c'' { + g4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } + \layout { + \context { + \Score + \override SpacingSpanner + #'common-shortest-duration = #(ly:make-moment 1 2) + } + } +} +@end lilypond + +@noindent +@code{common-shortest-duration} プロパティを動的に変更することはできません。@c +そのため、このプロパティは常に @code{\context} ブロックの中に配置して、@c +楽譜全体に適用されるようにする必要があります。 + +@end itemize + +@seealso +記譜法リファレンス: +@ref{ページ レイアウト}, +@ref{水平方向のスペースを変更する} + +コード断片集: +@rlsr{Spacing} diff --git a/Documentation/ja/notation/specialist.itely b/Documentation/ja/notation/specialist.itely new file mode 100644 index 0000000000..e79dbb450f --- /dev/null +++ b/Documentation/ja/notation/specialist.itely @@ -0,0 +1,44 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: 3ef893f1fe182e9f6cf5841cbff0706789bd3361 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node 専門的な記譜法 +@chapter 専門的な記譜法 +@translationof Specialist notation + +この章では、特定のタイプの楽器やスタイル向けの音楽記譜を作成するための方法@c +について説明します。 + +@menu +* 声楽:: +* キーボードと他の複数譜の楽器:: +* フレットの無い弦楽器:: +* フレットのある弦楽器:: +* 打楽器:: +* 管楽器:: +* 和音記譜法:: +* 現代音楽:: +* Ancient notation:: +* 世界の音楽:: +@end menu + +@include notation/vocal.itely +@include notation/keyboards.itely +@include notation/unfretted-strings.itely +@include notation/fretted-strings.itely +@include notation/percussion.itely +@include notation/wind.itely +@include notation/chords.itely +@include notation/contemporary.itely +@include notation/ancient.itely +@include notation/world.itely diff --git a/Documentation/ja/notation/staff.itely b/Documentation/ja/notation/staff.itely index 6c8df354b4..223d64e5cb 100644 --- a/Documentation/ja/notation/staff.itely +++ b/Documentation/ja/notation/staff.itely @@ -1,12 +1,12 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 7cd8c1d1e389edc26c26b7eba8358578329f5881 + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -17,7 +17,9 @@ @section 譜の記譜法 @translationof Staff notation -@lilypondfile[quote]{staff-headword.ly} +@c The line width is a bit of a hack to allow space for the +@c instrument names. +@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly} このセクションでは、譜の見た目を変える方法、複数の譜を持つ楽譜を譜刻する方法、@c それに、テンポ指示と演奏指示楽節の音符を譜に付け加える方法について説明します。 @@ -96,7 +98,7 @@ @code{RhythmicStaff} は、入力のリズム価だけを表示する単線譜を作成します。@c (ピッチは無視されますが) 演奏時間が保持されます。@c -詳細は @ref{旋律のリズムを示す} を参照してください。 +詳細は @ref{Showing melody rhythms} を参照してください。 @lilypond[verbatim,quote,relative=2] \new RhythmicStaff { c4 d e f } @@ -124,7 +126,6 @@ 新たに単一譜コンテキストを定義する場合があります。@c 詳細は @ref{Defining new contexts} を参照してください。 - @seealso 音楽用語集: @rglos{staff}, @@ -133,10 +134,10 @@ 記譜法リファレンス: @ref{Creating contexts}, @ref{Percussion staves}, -@ref{旋律のリズムを示す}, +@ref{Showing melody rhythms}, @ref{Default tablatures}, @ref{Pre-defined contexts}, -@ref{譜シンボル}, +@ref{Staff symbol}, @ref{Gregorian chant contexts}, @ref{Mensural contexts}, @ref{Defining new contexts} @@ -219,7 +220,7 @@ @code{PianoStaff} は @code{GrandStaff} と同一ですが、@c 例外として楽器名を刻譜することができます。@c -詳細は @ref{楽器名} を参照してください。 +詳細は @ref{Instrument names} を参照してください。 @lilypond[verbatim,quote,relative=2] \new PianoStaff << @@ -242,10 +243,10 @@ @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @c 未訳 @@ -254,10 +255,9 @@ @cindex transcription of mensural music @cindex mensural music, transcription of -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} - @seealso 音楽用語集: @rglos{brace}, @@ -265,7 +265,7 @@ @rglos{grand staff} 記譜法リファレンス: -@ref{楽器名}, +@ref{Instrument names}, @ref{Defining new contexts} コード断片集: @@ -324,14 +324,13 @@ @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso 記譜法リファレンス: -@ref{譜をグループ化する}, -@ref{楽器名}, +@ref{Grouping staves}, +@ref{Instrument names}, @ref{Defining new contexts} コード断片集: @@ -345,6 +344,7 @@ @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare} + @c 未訳 @node Separating systems @unnumberedsubsubsec Separating systems @@ -389,10 +389,10 @@ turned on with a @code{\paper} option. @end lilypond @seealso -Notation Reference: -@ref{Page layout}. +記譜法リファレンス: +@ref{Page layout} -Snippets: +コード断片集: @rlsr{Staff notation}. @@ -415,121 +415,138 @@ Snippets: @unnumberedsubsubsec 譜シンボル @translationof Staff symbol -@cindex adjusting staff symbol (譜シンボルを調節する) -@cindex drawing staff symbol (譜シンボルを描く) -@cindex staff symbol, setting of (譜シンボルを設定する) -@cindex staff symbol, drawing (譜シンボルを描く) -@cindex stop staff lines (譜線の譜刻を停止する) -@cindex start staff lines (譜線の譜刻を開始する) -@cindex staff lines, amount of (譜線の本数) -@cindex staff lines, number of (譜線の本数) -@cindex staff line, thickness of (譜線の太さ) -@cindex amount of staff lines (譜線の本数) -@cindex thickness of staff lines (譜線の太さ) -@cindex ledger lines, setting (加線を設定する) -@cindex setting of ledger lines (加線の設定) -@cindex spacing of ledger lines (加線の間隔) -@cindex number of staff lines (譜線の本数) - -譜の線は @code{StaffSymbol} グラフィカル オブジェクトに属します。@c -@code{StaffSymbol} プロパティを変更して、譜の見た目を変えることができます。@c -しかしながら、変更は譜を作成する前に行う必要があります。 - -譜線の本数を変えることもできます。音部記号の位置とミドル C の位置を、@c -新しい譜にフィットさせるために、変更する必要があるかもしれません。@c -具体例は、@ref{音部記号} にあるコード断片集セクションを参照してください。 +@cindex staff symbol (譜シンボル) +@cindex staff lines, stopping and starting (譜線を停止、開始する) +@cindex staff lines, modifying (譜線を変更する) +@cindex ledger lines (加線) +@cindex ledger lines, internal (内部の加線) +@cindex ledger lines, modifying (加線を変更する) + +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff + +@code{\stopStaff} コマンドと @code{\startStaff} コマンドを使って、@c +楽譜内の任意の場所で譜線を停止あるいは (再) 開始させることができます。 @lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } +\stopStaff f4 d \startStaff g, e +f'4 d \stopStaff g, e +f'4 d \startStaff g, e +@end lilypond ++ +@predefined +@code{\startStaff}, +@code{\stopStaff} +@endpredefined + +@code{StaffSymbol} グラフィカル オブジェクト (加線を含む) に属する譜の線は@c +@code{StaffSymbol} プロパティを用いて変更することができます。@c +しかしながら、変更は譜が (再) 開始する前に行う必要があります。 + +譜線の本数を変更することができます: + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-count = #2 +\startStaff g, e | + +f'4 d \stopStaff +\revert Staff.StaffSymbol #'line-count +\startStaff g, e | @end lilypond -譜線の太さを変えることができます。加線 (訳者注: ledger line, 譜の上下に@c -突き出た符頭と符幹に付けられる短い譜線) と符幹の太さも影響を受けます。@c -なぜなら、それらの太さは譜線の太さに基づいているからです。 +各譜線の位置を変更することもできます。@c +値の単位は譜線の間隔の @emph{半分} で、@c +新しい位置は通常の中央線からの相対位置です。@c +1 つの値に対して 1 本の譜線が譜刻されるので、@c +1 つのオーバライドで譜線の位置と本数を変更することができます。 + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(1 3 5 -1 -3) +\startStaff g, e | +f'4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(8 6.5 -6 -8 -0.5) +\startStaff g, e +@end lilypond -@lilypond[verbatim,quote,relative=1] +新しい譜線に対応して、@c +音部記号とミドル C の位置を調節する必要があるかもしれません。@c +@ref{音部記号} を参照してください。 + +譜線の太さを変えることができます。@c +デフォルトでは、加線 (訳者注: ledger line, 譜の上下に突き出た符頭と符幹に@c +付けられる短い譜線) と符幹の太さも影響を受けます。@c + +@lilypond[verbatim,quote,relative=2] \new Staff \with { \override StaffSymbol #'thickness = #3 } -{ e4 d c b } +{ f4 d g, e } @end lilypond -加線の太さを譜線の太さから独立して設定することができます。@c -以下の例では、2 つの数は譜線の太さと譜線の間隔に掛けられる因子です。@c -2 つを足し合わせて加線の太さになります。 +しかしながら、加線の太さを譜線の太さから独立して設定することができます。@c +2 つの値は譜線の太さと譜線の間隔に掛け算され、@c +それらを加算した値が加線の太さになります。 -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol #'thickness = #2 + \override StaffSymbol #'ledger-line-thickness = #'(0.5 . 0.4) } -{ e4 d c b } +{ f'4 a, a,, f } @end lilypond -譜線の間隔を変えることができます。この設定は加線の間隔にも影響を与えます。 +加線の垂直方向の位置を変更することができます: -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol #'ledger-positions = #'(-3 -2 -1 2 5 6) } -{ a4 b c d } +{ f'4 a, a,, f } @end lilypond -@code{StaffSymbol} のプロパティについて更に詳細な説明が -@rinternals{staff-symbol-interface} に記述されています。 - -@cindex stopping a staff (譜の停止) -@cindex starting a staff (譜の開始) -@cindex staff, starting (譜の開始) -@cindex staff, stopping (譜の停止) - -@funindex \startStaff -@funindex startStaff -@funindex \stopStaff -@funindex stopStaff - -楽譜の途中で譜プロパティに変更を加えるには、@c -@code{\stopStaff} と @code{\startStaff} の間で行います。 +符頭の位置と加線を持つ他の符頭との関係に応じて、@c +符頭の上または下に追加の加線を配置することできます。 @lilypond[verbatim,quote,relative=2] -c2 c -\stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +\new Staff \with { + \override StaffSymbol #'ledger-extra = #4 +} +{ f'4 a, d, f, } @end lilypond -@noindent -一般的に言うと、@code{\stopStaff} と @code{\startStaff} を用いることで、@c -楽譜の途中で譜を停止あるいは再開することができます。 +譜の内部に加線を表示させることもできます。@c +この場合、譜線のカスタマイズが必要です。@c +以下の例は明示的に @code{legder-position} をセットしない場合とした場合の@c +加線のデフォルト位置を示しています。@c +以下の例で、@code{StaffSymbol} 全体に対する @code{\override} を元に戻すには@c +@code{\stopStaff} を行う必要があります。 -@lilypond[verbatim,quote,relative=2] -c4 b a2 +@lilypond[fragment,quote,relative=1] +\override Staff.StaffSymbol #'line-positions = #'(-8 0 2 4) +d4 e f g \stopStaff -b4 c d2 \startStaff -e4 d c2 +\override Staff.StaffSymbol #'ledger-positions = #'(-8 -6 (-4 -2) 0) +d4 e f g @end lilypond +譜線の間隔を変えることができます。この設定は加線の間隔にも影響を与えます。 -@predefined -@code{\startStaff}, -@code{\stopStaff} -@endpredefined - +@lilypond[verbatim,quote,relative=2] +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 +} +{ f'4 d, g, e, } +@end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso 音楽用語集: @rglos{line}, @@ -537,7 +554,7 @@ e4 d c2 @rglos{staff} 記譜法リファレンス: -@ref{音部記号} +@ref{Clef} コード断片集: @rlsr{Staff notation} @@ -582,7 +599,7 @@ e4 d c2 しかしながら、上の例は通常は望ましいものではありません。@c オリジナルの譜の上にあり、拍子記号や音部記号を持たず、@c 小さなサイズのフォントを使用するオッシア譜を作成するには調整が必要です。@c -学習マニュアルの @rlearning{音楽表記をネストする} に望ましいオッシア譜を@c +学習マニュアルの @rlearning{Nesting music expressions} に望ましいオッシア譜を@c 作成するための方法が記述されています。 以下の例は、オッシア譜をオリジナルの譜の上に配置するために @@ -691,10 +708,9 @@ e4 d c2 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} - @seealso 音楽用語集: @rglos{ossia}, @@ -702,12 +718,12 @@ e4 d c2 @rglos{Frenched staff} 学習マニュアル: -@rlearning{音楽表記をネストする}, -@rlearning{オブジェクトのサイズ}, -@rlearning{オブジェクトの長さと太さ} +@rlearning{Nesting music expressions}, +@rlearning{Size of objects}, +@rlearning{Length and thickness of objects} 記譜法リファレンス: -@ref{譜を隠す} +@ref{Hiding staves} コード断片集: @rlsr{Staff notation} @@ -806,23 +822,22 @@ e4 d c2 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso 音楽用語集: @rglos{Frenched staff} 学習マニュアル: -@rlearning{オブジェクトの可視性と色} +@rlearning{Visibility and color of objects} 記譜法リファレンス: @ref{Changing context default settings}, -@ref{譜シンボル}, -@ref{オッシア譜} +@ref{Staff symbol}, +@ref{Ossia staves}, @ref{Hidden notes}, -@ref{不可視の休符}, +@ref{Invisible rests}, @ref{Visibility of objects} コード断片集: @@ -836,9 +851,7 @@ e4 d c2 @rinternals{VerticalAxisGroup}, @rinternals{Staff_symbol_engraver} - @knownissues - @code{Staff_symbol_engraver} を削除すると、小節線も隠されます。@c 小節線が強制的に可視になるよう設定されている場合、@c フォーマット エラーが発生するかもしれません。@c @@ -862,101 +875,12 @@ e4 d c2 他のボイスを引用する方法と、演奏指示音符を譜刻する方法についても記述します。 @menu -@c * メトロノーム記号:: * 楽器名:: * 他のボイスを引用する:: * 合図音符をフォーマットする:: @end menu -@ignore -@node メトロノーム記号 -@unnumberedsubsubsec メトロノーム記号 -@translationof Metronome marks - -@cindex tempo (テンポ) -@cindex beats per minute (1 分間あたりの拍数) -@cindex metronome marking (メトロノーム記号) -@cindex metronome marking with text (テキストのメトロノーム記号) - -@funindex \tempo -@funindex tempo - -基本的なメトロノーム記号は単純に以下のように記述します: - -@lilypond[verbatim,quote,relative=1] -\tempo 4 = 120 -c2 d -e4. d8 c2 -@end lilypond - -上記の代わりに、テキストのテンポ指示を用いることもできます: - -@lilypond[verbatim,quote,relative=2] -\tempo "Allegretto" -c4 e d c -b4. a16 b c4 r4 -@end lilypond - -メトロノーム記号とテキストを組み合わせると、メトロノーム記号は自動的に括弧で@c -囲まれます: - -@lilypond[verbatim,quote,relative=2] -\tempo "Allegro" 4 = 160 -g4 c d e -d4 b g2 -@end lilypond - -一般的に、テキストは任意のマークアップ オブジェクトになり得ます: - -@lilypond[verbatim,quote,relative=2] -\tempo \markup { \italic Faster } 4 = 132 -a8-. r8 b-. r gis-. r a-. r -@end lilypond - -テキストの指示無しにメトロノーム記号を括弧で囲むには、入力に空の文字列を@c -含めます: - -@lilypond[verbatim,quote,relative=2] -\tempo "" 8 = 96 -d4 g e c -@end lilypond - - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{printing-metronome-and-rehearsal-marks-below-the-staff.ly} - -@c perhaps also an example of how to move it horizontally? - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{changing-the-tempo-without-a-metronome-mark.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{creating-metronome-marks-in-markup-mode.ly} - -更なる詳細は、@ref{テキストをフォーマットする} を参照してください。 - - -@seealso -音楽用語集: -@rglos{metronome}, -@rglos{metronomic indication}, -@rglos{tempo indication}, -@rglos{metronome mark} - -記譜法リファレンス: -@ref{テキストをフォーマットする}, -@ref{MIDI 出力} - -コード断片集: -@rlsr{Staff notation} - -内部リファレンス: -@rinternals{MetronomeMark} -@end ignore - @node 楽器名 @unnumberedsubsubsec 楽器名 @translationof Instrument names @@ -972,42 +896,48 @@ d4 g e c 行の譜に対して使用されます。 @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"Violin " -\set Staff.shortInstrumentName = #"Vln " -c4.. g'16 c4.. g'16 -\break -c1 +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} +{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond -マークアップ モードを用いて、より複雑な楽器名を作成することができます: +@cindex instrument names, complex (複雑な楽器名) + +@code{\markup} を用いて、より複雑な楽器名を作成することができます: @lilypond[verbatim,quote,relative=2] -\set Staff.instrumentName = \markup { - \column { "Clarinetti" - \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} +{ c4 c,16 d e f g2 } @end lilypond @cindex instrument names, centering (楽器名を中央揃えする) -2 つ以上の譜コンテキストが一緒になってグループ化されている場合、@c +2 つ以上の譜コンテキストがグループ化されている場合、@c デフォルトでは楽器名と短縮楽器名は中央揃えされます。@c 複数行にわたる楽器名を中央揃えするには、@c @code{\center-column} を用いる必要があります: @lilypond[verbatim,quote,indent=1.5\cm,relative=2] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f + \new Staff \with { + instrumentName = #"Flute" } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet + { f2 g4 f } + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" } \line { "in B" \smaller \flat } } - c4 b c2 } + { c4 b c2 } >> @end lilypond @@ -1016,29 +946,35 @@ c4 c,16 d e f g2 しかしながら、楽器名が長い場合、@code{indent} 設定と @code{short-indent} 設定の値を増やさない限り、譜グループの中にある楽器名は中央揃えされません。@c -これらの設定についての詳細は @ref{\paper variables for shifts and indents} +これらの設定についての詳細は @ref{シフトとインデントのための \paper 変数} を参照してください。 @lilypond[verbatim,quote,ragged-right] +\relative c'' { + << + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } + { + f2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } + { + c,4 b c2 \break + c2 b4 c + } + >> +} + \layout { indent = 3.0\cm short-indent = 1.5\cm } - -\relative c'' << - \new Staff { - \set Staff.instrumentName = #"Alto Flute in G" - \set Staff.shortInstrumentName = #"Fl." - f2 g4 f \break - g4 f g2 - } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break - c2 b4 c - } ->> @end lilypond @cindex instrument names, adding to other contexts (楽器名を他のコンテキストに付け加える) @@ -1046,24 +982,28 @@ c4 c,16 d e f g2 楽器名を他のコンテキスト (@code{ChordNames} や @code{FiguredBass} など) に付け加えるには、 そのコンテキストに @code{Instrument_name_engraver} を追加する必要があります。@c -詳細は @ref{Modifying context plug-ins} を参照してください。 +詳細は @ref{コンテキストのプラグインを変更する} を参照してください。 @cindex instrument names, changing (楽器名を変更する) @cindex changing instrument names (楽器名を変更する) -楽曲の途中で楽器名を変更することもできます。@c -しかしながら、@code{instrumentName} は最初の行の譜にしか表示されないため、@c -楽曲の途中では表示されないことを思い出してください: +楽曲の途中で @code{shortInstrumentName} を変更することもできます。@c +しかしながら、@code{instrumentName} は最初のインスタンスが譜刻され、@c +楽曲の途中での変更は無視されます: @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"First" -\set Staff.shortInstrumentName = #"one" -c1 c c c \break -c1 c c c \break -\set Staff.instrumentName = #"Second" -\set Staff.shortInstrumentName = #"two" -c1 c c c \break -c1 c c c \break +\new Staff \with { + instrumentName = #"Flute" + shortInstrumentName = #"Flt." +} +{ + c1 c c c \break + c1 c c c \break + \set Staff.instrumentName = #"Clarinet" + \set Staff.shortInstrumentName = #"Clt." + c1 c c c \break + c1 c c c \break +} @end lilypond @cindex instrument switch (楽器を切り換える) @@ -1125,10 +1065,9 @@ c1 c c c \break @unnumberedsubsubsec 他のボイスを引用する @translationof Quoting other voices -@cindex cues (演奏指示) -@cindex quoting other voices (他のボイスを引用する) -@c 未訳 -@cindex fragments (楽譜の一部分) +@cindex quote, voices (ボイスの引用) +@cindex voices, quoting (ボイスを引用する) +@cindex fragments, quoting (楽曲の断片を引用する) @cindex cue notes (演奏指示音符) @funindex \addQuote @@ -1138,106 +1077,89 @@ c1 c c c \break @funindex \transposition @funindex transposition -あるボイスが他のボイスの音楽の一部を兼ねることはごく一般的なことです。@c -例えば、第 1 バイオリンと第2バイオリンは、音楽のあるパッセージの間、@c -同じ音符を演奏することがあるかもしれません。@c -LilyPond では、あるボイスに他のボイスを @emph{引用} させることによって@c -実現されます。@c -再入力する必要はありません。 +あるボイスが他のボイスと同じ音符を演奏することはごく一般的なことです。@c +例えば、第 1 バイオリンと第2バイオリンがあるパッセージで同じフレーズを@c +演奏することがあります。@c +これは、ボイスに他のボイスを @emph{引用} させることで実現でき、@c +第 2 ボイスの音楽全体を再入力する必要はありません。 -パートを引用するには、@code{\addQuote} コマンドを用いて引用する部分を@c -初期化する必要があります。@c -このコマンドは最上位のスコープで使用しなければなりません。@c -1 番目の引数は識別文字列であり、2 番目の引数は音楽表記です: - -@example -flute = \relative c'' @{ - a4 gis g gis -@} -\addQuote "flute" @{ \flute @} -@end example +最上位レベルのスコープで用いる @code{\addQuote} コマンドは@c +一部を引用することができる音楽を定義します。 @code{\quoteDuring} コマンドを用いて、引用を開始する位置を示します。@c このコマンドは 2 つの引数をとります: @code{\addQuote} で定義した引用するボイスの名前と、@c -引用部分の演奏時間を示す音楽表記 --- 通常、これは空白休符か複数小節にわたる休符 -- です。@c -引用されるボイスの音楽から該当部分の音楽 -(アーティキュレーション、強弱記号、マークアップ等を含みます) -が音楽表記に挿入されます: +引用部分の演奏時間を示す音楽表記です。 @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 -@code{\quoteDuring} で使用される音楽表記に空白休符や複数小節休符以外のものが@c -含まれている場合、多声部になります。@c -これは望まない結果であることがしばしばあります: +@code{\quoteDuring} で使用される音楽表記が空白休符や複数小節休符ではなく@c +音符を保持している場合、@c +引用は多声となり、予期しない結果となる可能性があります。 @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" { e4 r8 ais b4 a } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -@code{\transposition} が使用される場合、@c -引用機能はソースとターゲット両方の楽器の楽器移調設定を考慮します。@c -@code{\transposition} についての詳細は @ref{楽器の移調} を@c -参照してください。 +@code{\quoteDuring} コマンドは引用されるパートと引用するパート両方の +@code{\transposition} を使用して、@c +引用されるパートと同じ響きのピッチに変換して、@c +引用するパートの音符を作り出します。 @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 -引用部分に固有名のタグを付けて、@c -引用部分をさまざまな形で処理することができます。@c -この手法についての詳細は @ref{Using tags} を参照してください。 +\addQuote "clarinet" { \clarinetNotes } -@code{quotedEventTypes} プロパティを変更することで、@c -オリジナル ボイスからどのオブジェクトを引用するか調節することもできます。@c -デフォルトで、このプロパティの値は @code{#'(StreamEvent)} であり、@c -すべてを引用します。@c -例えば、この値を @code{#'(note-event rest-event tie-event)} に変更すると、@c -LilyPond は音符、休符それにタイを引用し、@c -アーティキュレーション、マーックアップあるいは強弱記号は引用しません。 -@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 @@ -1246,63 +1168,156 @@ clarinet = \relative c'' { @funindex quotedEventTypes @funindex quotedCueEventTypes -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice.ly} +デフォルトでは引用される音楽はすべてのアーティキュレーション、強弱記号、@c +マークアップ等を含んでいます。@c +@code{quotedEventTypes} コンテキスト プロパティを用いることで、@c +引用される音楽から引用するオブジェクトを選択することが可能です。 + +@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 + +引用にもタグを付けることができます。@c +@ref{タグを使用する} を参照してください。 @seealso 記譜法リファレンス: -@ref{楽器の移調}, +@ref{Instrument transpositions}, @ref{Using tags} コード断片集: @rlsr{Staff notation} 内部リファレンス: ++@rinternals{Music classes}, @rinternals{QuoteMusic}, @rinternals{Voice} - @knownissues - @code{\addQuote} 中にある最初の @code{Voice} の内容だけが引用されます。@c -そのため、@code{@var{music}} には他の Voice に切り替わる @code{\new} や -@code{\context Voice} を含めることはできません。 - -装飾小音符を引用しようとしてもうまくいかず、@c +そのため、音楽表記が @code{\new} や @code{\context Voice} を含んでいても、@c +それらの内容は引用されません。@c +装飾小音符の引用はサポートされておらず、@c LilyPond がクラッシュする可能性さえあります。 - ネストされた連符を引用しようとしてもうまくいきません。 -以前のバージョンの LilyPond (2.11 よりも前) では、@code{addQuote} はすべて@c -小文字 -- @code{addquote} -- で記述されていました。 - @node 合図音符をフォーマットする @unnumberedsubsubsec 合図音符をフォーマットする @translationof Formatting cue notes -@cindex cues (合図) @cindex cue notes (合図音符) -@cindex cue notes, formatting (合図音符をフォーマットする) -@c 未訳 @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 -前のセクションでは、引用を作成する方法について説明しました。@c -@code{\cueDuring} コマンドは @code{\quoteDuring} コマンドの@c -より特殊な形であり、あるパートに合図音符を挿入する場合に有用です。@c +@cindex notes, smaller (小さな音符) +@cindex smaller notes (小さな音符) +@cindex CueVoice + +合図音符をフォーマットする最も簡単な方法は、@c +パートの中で明示的に @code{CueVoice} コンテキストを作成することです。 + +@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 + +音部記号の変更が必要で、合図音符に適切なサイズの音部記号を譜刻する場合、@c +@code{\cueClef} コマンドは明示的な @code{CueVoice} コンテキストと共に@c +用いられます。@c +その後、@code{\cueClefUnset} コマンドを用いて、@c +オリジナルの音部記号 -- 再度、適切なサイズにされた -- に戻すことができます。 + +@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 + +必要があれば、@code{CueVoice} 無しで +@code{\cueClef} コマンドと @code{\cueClefUnset} コマンドを用いることもできます。 + +@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 + +もっと複雑な合図音符 +-- 例えば、移調を含んでいる、複数の音楽ソースからの合図音符を挿入する -- +の場合、@c +@code{\cueDuring} コマンドや @code{\cueDuringWithClef} コマンドを@c +用いることができます。@c +これらのコマンドは @code{\quoteDuring} を特殊化したものです。@c +@code{\quoteDuring} については、@c +前のセクションの @ref{他のボイスを引用する} を参照してください。 + 構文は以下の通りです: @example -\cueDuring #@var{partname} #@var{voice} @var{music} +\cueDuring #@var{quotename} #@var{direction} #@var{music} +@end example + +と + +@example +\cueDuringWithClef #@var{quotename} #@var{direction} #@var{clef} #@var{music} @end example +@code{@var{quotename}} に対応する小節の音楽は +@code{CueVoice} コンテキストとして追加されて +@code{@var{music}} と同時進行して、@c +多声になります。@c +@code{@var{direction}} は引数 @code{UP} または @code{DOWN} を取り、@c +それぞれ第 1 及び第 2 ボイスと調和して、@c +合図音符が他のボイスに対してどのように譜刻されるかを決定します。 + このコマンドは @code{@var{partname}} の該当する小節から音符と休符だけを @code{CueVoice} にコピーします。@c @code{CueVoice} は暗黙的に作成されて @code{@var{music}} と同時進行し、@c @@ -1312,35 +1327,43 @@ LilyPond がクラッシュする可能性さえあります。 @code{UP} は第 1 ボイスに相当し、@code{DOWN} は第 2 ボイスに相当します。 @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 + \new CueVoice { \set instrumentCueName = "flute" } + \cueDuring #"flute" #UP { R1 } g2 c, } + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \oboeNotes +} @end lilypond @noindent -上の例で、@code{Voice} コンテキストは明示的に宣言されている必要があります。@c -さもなければ、音楽表記全体が @code{CueVoice} コンテキストに属してしまいます。 @code{instrumentCueName} プロパティを設定することによって、@c @code{\cueDuring} で音楽のどの側面を引用するか調節することができます。@c -このプロパティのデフォルト値は @code{#'(note-event rest-event -tie-event beam-event tuplet-span-event)} であり、音符、休符、タイ、連桁@c +このプロパティのデフォルト値は @code{'(note-event rest-event +tie-event beam-event tuplet-span-event)} であり、音符、休符、タイ、連桁、@c それに連符だけが引用され、アーティキュレーション、強弱記号、マークアップ等は@c 引用されません。 +@warning{以下の例のように @code{Voice} が @code{\cueDuring} で始まる場合、@c +@code{Voice} を明示的に宣言する必要があります。@c +そうしないと音楽表記全体が @code{CueVoice} コンテキストに属してしまいます。} + @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 @@ -1351,99 +1374,84 @@ oboe = \relative c'' { } @end lilypond -マークアップを使用して引用される楽器の名前を表示することができます。@c -また、合図音符が音部変更を必要とする場合、@c -合図音符の終わりで元の音部に戻す必要があります。 +@c ここから L2334 +一時的な @code{CueVoice} コンテキストの中の @code{instrumentCueName} +プロパティを設定することで、合図を演奏する楽器の名前を表示させることが@c +できます。@c +@code{instrumentCueName} の位置とスタイルは @code{\instrumentSwitch} +オブジェクトによって制御されます -- @ref{Instrument names} を参照して@c +ください。@c +合図音符が音符記号の変更を必要とする場合、手動で変更することができますが、@c +合図音符が終わったところで手動で元の音部記号に戻す必要がありmす。 @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 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } \clef bass g4. b8 d2 } -\addQuote "flute" { \flute } + +\addQuote "flute" { \fluteNotes } + \new Staff { - \bassoon + \bassoonNotes } @end lilypond -@cindex removing cues (合図を削除する) -@cindex removing cue notes (合図音符を削除する) -@cindex cue notes, removing (合図音符を削除する) - -@funindex \killCues -@funindex killCues - -@code{\killCues} コマンドは音楽表記から合図音符を削除します。@c -これにより、同じ音楽表記を使って合図を持つ楽器パートと総譜を作り出すことが@c -可能です。@c -@code{\killCues} コマンドは @code{\cueDuring} によって引用された@c -音符とイベントだけを削除します。@c -合図に関連する他のマークアップ --- 音部変更と引用元の楽器を識別するラベルなど -- -にはタグを付けて総譜に含めるかどうかを選択することができます。@c -@ref{Using tags} を参照してください。 +あるいはまた、代わりに @code{\cueDuringWithClef} 関数を用いることができます。@c +このコマンドは追加の引数で音部の変更を指定して、@c +合図音符に音部記号を譜刻しますが、@c +合図音部が終了したところで元の音部記号を自動的に譜刻します。 @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 + \new CueVoice { \set instrumentCueName = "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 -あるいはまた、音部変更や楽器ラベルを再利用するために、@c -@code{\addInstrumentDefinition} を用いて楽器の定義に含めることができます。@c -@code{\addInstrumentDefinition} についての説明は -@ref{楽器名} を参照してください。 - @funindex \transposedCueDuring @funindex transposedCueDuring @code{\quoteDuring} と同様に、@code{\cueDuring} は楽器の移調を考慮します。@c -合図音符は、合図を受け取る楽器のピッチで作り出されます。 +合図音符は合図を受け取る楽器のピッチで作り出され、@c +ソース楽器の同じ響きのピッチになります。 合図音符を移調させるには @code{\transposedCueDuring} を使用します。@c このコマンドはコンサート ミドル C の音を表すピッチを (絶対モードで) 指定する@c -追加の引数を取ります。 +追加の引数を取ります。@c +これは、全く別の場所で登録された楽器から合図を取る場合に有用です。 @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 @@ -1451,41 +1459,76 @@ 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 notes, smaller -@cindex smaller notes +@cindex removing cue notes (合図音符を削除する) +@cindex cue notes, removing (合図音符を削除する) + +@funindex \killCues +@funindex killCues +@funindex \addInstrumentDefinition +@funindex addInstrumentDefinition + +@code{\killCues} コマンドは音楽表記から合図音符を削除します。@c +これにより、同じ音楽表記を使って合図を持つ楽器パートと楽譜を作り出すことが@c +可能です。@c +@code{\killCues} コマンドは @code{\cueDuring} によって引用された@c +音符とイベントだけを削除します。@c +合図に関連する他のマークアップ +-- 音部変更と引用元の楽器を識別するラベルなど -- +にはタグを付けて楽譜に含めるかどうかを選択することができます。@c +@ref{タグを使用する} を参照してください。 -小さなサイズの音符が必要な場合、@c -@code{CueVoice} コンテキストを明示的に作成することがあります。@c -例えば、本来の演奏とは異なる音符列をオリジナル ボイスの上または下に@c -セットする場合に適しています。 +@lilypond[verbatim,quote] +fluteNotes = \relative c'' { + r2. c4 d8 c d e fis2 g2 d2 +} -@lilypond[verbatim,relative=2] -\time 12/8 -\key ees \major -g4 ees8 f4 g8 -\stemDown -<< - { d4. bes4 c8 } - \new CueVoice - { g'4. f4 ees8 } +bassoonNotes = \relative c { + \clef bass + R1 + \tag #'part { + \clef treble + \new CueVoice { \set instrumentCueName = "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 +あるいはまた、音部変更や楽器ラベルを再利用するために、@c +@code{\addInstrumentDefinition} を用いて楽器の定義に含めることができます。@c +@code{\addInstrumentDefinition} についての説明は +@ref{Instrument names} を参照してください。 @seealso 記譜法リファレンス: -@ref{楽器の移調}, -@ref{楽器名}, +@ref{Quoting other voices}, +@ref{Instrument transpositions}, +@ref{Instrument names}, +@ref{Clef}, @ref{Musical cues}, @ref{Using tags} @@ -1496,8 +1539,8 @@ d2. d2. @rinternals{CueVoice}, @rinternals{Voice} - @knownissues - @code{\cueDuring} を使用した場合、@code{Voice} コンテキストと @code{CueVoice} -コンテキストの間で休符の衝突が発生する可能性があります。 +コンテキストの間で休符の衝突が発生する可能性があります。@c +@code{\cueDuringWithClef} や @code{\transposedCueDuring} を使用する場合、@c +追加で必要となる引数は引用と向きの後に配置する必要があります。 diff --git a/Documentation/ja/notation/text.itely b/Documentation/ja/notation/text.itely index 7a11517b44..deea70d88c 100644 --- a/Documentation/ja/notation/text.itely +++ b/Documentation/ja/notation/text.itely @@ -1,12 +1,14 @@ -@c -*- coding: utf-8; mode: texinfo; -*- +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- + @ignore - Translation of GIT committish: a35594af4584e56f6dffe15371eeca10449d1a44 + Translation of GIT committish: 6647daf0d6c8459d2b52bfc3a2a40bad4672fc7a When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @@ -114,7 +116,6 @@ a4_"scherzando" f 学習マニュアル: @rlearning{オブジェクトの配置} - 記譜法リファレンス: @ref{テキストをフォーマットする}, @ref{Direction and placement}, @@ -126,13 +127,11 @@ a4_"scherzando" f 内部リファレンス: @rinternals{TextScript} - @cindex text outside margin (マージンからはみ出すテキスト) @cindex margin, text running over (マージンからはみ出すテキスト) @cindex text, keeping inside margin (テキストをマージン内に収める) @cindex lyrics, keeping inside margin (歌詞をマージン内に収める) - @knownissues テキスト スクリプトと歌詞がマージンに収まることを保証するためのチェックは@c 計算量を増やします。@c @@ -199,13 +198,12 @@ LilyPond が処理できるテキスト スパナは 1 ボイスにつき、1 @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-text-spanner-postfix.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-custom-text-spanner-postfix.ly} - @seealso 記譜法リファレンス: @ref{Line styles}, @@ -291,16 +289,15 @@ c c @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-at-the-end-of-a-line.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {aligning-marks-with-various-notation-objects.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-on-every-staff.ly} - @seealso 記譜法リファレンス: @ref{リハーサル記号}, @@ -369,18 +366,17 @@ c c @funindex \markup @funindex markup -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @predefined @code{\markup}, -@code{\markuplines} +@code{\markuplist} @endpredefined - @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {stand-alone-two-column-markup.ly} @seealso @@ -506,22 +502,19 @@ allegro = \markup { \bold \large Allegro } } @end lilypond - @noindent @ref{Text markup commands} に @code{\markup} 特有のコマンドの徹底したリストがあります。 - @seealso 記譜法リファレンス: @ref{Text markup commands} -コード断片集: -@rlsr{Text} - インストールされているファイル: @file{scm/markup.scm} +コード断片集: +@rlsr{Text} @knownissues マークアップ モードの構文エラーは混乱しやすいです。 @@ -557,6 +550,7 @@ f1 d2 r @cindex font size (フォント サイズ) @cindex text size (テキスト サイズ) +@funindex \abs-fontsize @funindex \fontsize @funindex fontsize @funindex \smaller @@ -566,38 +560,40 @@ f1 d2 r @funindex \magnify @funindex magnify -文字のサイズもいくつかの方法で変更することができます: -@itemize -@item -フォント サイズをあらかじめ定義されている標準サイズに設定することができます。 +フォント サイズをいくつかの方法でグローバル譜サイズとの相対値で変更することができます。 -@item -フォント サイズを絶対値で設定することができます。 +フォント サイズをあらかじめ定義されているサイズに設定することができます: -@item -さらに、フォント サイズを現在の値からの相対値で設定することができます。 -@end itemize +@lilypond[quote,verbatim,relative=2] +b1_\markup { \huge Sinfonia } +b1^\markup { \teeny da } +b1-\markup { \normalsize camera } +@end lilypond -@noindent -以下の例は、これら 3 つの方法の使用例です: +フォント サイズを前の値との相対関係で設定することができます: -@lilypond[quote,verbatim,relative=1] -f1_\markup { - \tiny espressivo - \large e - \normalsize intenso -} -a^\markup { - \fontsize #5 Sinfonia - \fontsize #2 da - \fontsize #3 camera -} -bes^\markup { (con - \larger grande - \smaller emozione - \magnify #0.6 { e sentimento } ) -} -d c2 r8 c bes a g1 +@lilypond[quote,verbatim,relative=2] +b1_\markup { \larger Sinfonia } +b1^\markup { \smaller da } +b1-\markup { \magnify #0.6 camera } +@end lilypond + +フォント サイズをグローバル譜サイズによって設定されている値で拡大あるいは縮小させる@c +ことができます: + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \fontsize #-2 Sinfonia } +b1^\markup { \fontsize #1 da } +b1-\markup { \fontsize #3 camera } +@end lilypond + +さらに、フォント サイズをグローバル譜サイズとは無関係に、固定ポイント サイズに設定する@c +ことができます: + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \abs-fontsize #20 Sinfonia } +b1^\markup { \abs-fontsize #8 da } +b1-\markup { \abs-fontsize #14 camera } @end lilypond @cindex subscript (下付き文字) @@ -607,6 +603,8 @@ d c2 r8 c bes a g1 @funindex super @funindex \sub @funindex sub +@funindex \normal-size-super +@funindex normal-size-super テキストを下付き文字あるいは上付き文字として譜刻することができます。@c デフォルトでは、それらは小さなサイズで譜刻されますが、@c @@ -692,7 +690,6 @@ d c2 r8 c bes a g1 @funindex \larger @funindex larger - @predefined @code{\teeny}, @code{\tiny}, @@ -704,7 +701,6 @@ d c2 r8 c bes a g1 @code{\larger} @endpredefined - @seealso 記譜法リファレンス: @ref{フォント}, @@ -712,15 +708,15 @@ d c2 r8 c bes a g1 @ref{手動の繰り返し記号}, @ref{フォント} +インストールされているファイル: +@file{scm/define-markup-commands.scm} + コード断片集: @rlsr{Text} 内部リファレンス: @rinternals{TextScript} -インストールされているファイル: -@file{scm/define-markup-commands.scm} - @knownissues フォントのサイズ コマンド @code{\teeny}, @code{\tiny}, @code{\small}, @code{\normalsize}, @code{\large} それに @code{\huge} を用いると、@c @@ -970,7 +966,6 @@ a'4 a g2 a @ref{Align} にテキスト揃えコマンドの徹底したリストがあります。 - @seealso 学習マニュアル: @rlearning{オブジェクトを移動させる} @@ -979,15 +974,15 @@ a'4 a g2 a @ref{Align}, @ref{テキスト マーク} +インストールされているファイル: +@file{scm/define-markup-commands.scm}. + コード断片集: @rlsr{Text} 内部リファレンス: @rinternals{TextScript} -インストールされているファイル: -@file{scm/define-markup-commands.scm}. - @node マークアップ内部でのグラフィック記譜法 @unnumberedsubsubsec マークアップ内部でのグラフィック記譜法 @@ -1159,23 +1154,22 @@ c @ref{Graphic} にグラフィック特有のコマンドの徹底したリストがあります。 - @seealso 記譜法リファレンス: @ref{Graphic}, @ref{編集者の注釈}, @ref{Align} +インストールされているファイル: +@file{scm/define-markup-commands.scm}, +@file{scm/stencil.scm} + コード断片集: @rlsr{Text} 内部リファレンス: @rinternals{TextScript} -インストールされているファイル: -@file{scm/define-markup-commands.scm}, -@file{scm/stencil.scm} - @node マークアップ内部での音楽記譜法 @unnumberedsubsubsec マークアップ内部での音楽記譜法 @@ -1294,24 +1288,23 @@ c d e f @ref{Music} に、音楽記譜法関連のコマンドの徹底したリストがあります。 - @seealso 記譜法リファレンス: @ref{Music}, @ref{The Feta font}, @ref{フォントの説明} +インストールされているファイル: +@file{scm/define-markup-commands.scm}, +@file{scm/fret-diagrams.scm}, +@file{scm/harp-pedals.scm} + コード断片集: @rlsr{Text} 内部リファレンス: @rinternals{TextScript} -インストールされているファイル: -@file{scm/define-markup-commands.scm}, -@file{scm/fret-diagrams.scm}, -@file{scm/harp-pedals.scm}. - @node 複数ページにわたるマークアップ @unnumberedsubsubsec 複数ページにわたるマークアップ @@ -1322,8 +1315,8 @@ c d e f @cindex markup text, multi-page (複数ページにわたるマークアップ テキスト) @cindex text spread over multiple pages (複数ページに広がるテキスト) -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @funindex \justified-lines @funindex justified-lines @funindex \wordwrap-lines @@ -1335,7 +1328,7 @@ c d e f @c KEEP LY @lilypond[quote,verbatim] -\markuplines { +\markuplist { \justified-lines { 両端揃えされた非常に長いテキスト。 ... @@ -1362,31 +1355,29 @@ c d e f @ref{Text markup list commands} に、@c マークアップ リスト コマンドの徹底したリストがあります。 - @seealso 記譜法リファレンス: -@ref{Text markup list commands}, - -コード断片集: -@rlsr{Text} +@ref{Text markup list commands} 拡張: @rextend{New markup list command definition} +インストールされているファイル: +@file{scm/define-markup-commands.scm} + +コード断片集: +@rlsr{Text} + 内部リファレンス: @rinternals{TextScript} -インストールされているファイル: -@file{scm/define-markup-commands.scm}. - -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @predefined -@code{\markuplines} +@code{\markuplist} @endpredefined - @node フォント @subsection フォント @translationof Fonts @@ -1505,7 +1496,6 @@ c4^smaller 他のフォントを使用する方法は以下のセクションで説明されています: @ref{個々に登録するフォント} と @ref{ドキュメント全体のフォント}。 - @seealso 記譜法リファレンス: @ref{The Feta font}, @@ -1549,7 +1539,6 @@ a1_\markup { lilypond -dshow-available-fonts x @end example - @seealso 記譜法リファレンス: @ref{フォントの説明}, @@ -1598,7 +1587,6 @@ lilypond -dshow-available-fonts x @c we don't do Helvetica / Courier, since GS incorrectly loads @c Apple TTF fonts - @seealso 記譜法リファレンス: @ref{フォントの説明}, diff --git a/Documentation/ja/notation/unfretted-strings.itely b/Documentation/ja/notation/unfretted-strings.itely new file mode 100644 index 0000000000..dd010736c7 --- /dev/null +++ b/Documentation/ja/notation/unfretted-strings.itely @@ -0,0 +1,232 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node フレットの無い弦楽器 +@section フレットの無い弦楽器 +@translationof Unfretted string instruments + + +@lilypondfile[quote] +{unfretted-headword.ly} + +@cindex orchestral strings (オーケストラの弦楽器) +@cindex strings, orchestral (オーケストラの弦楽器) +@cindex strings, writing for (弦楽器のための記譜法) + +このセクションではフレットの無い弦楽器 +-- 主にオーケストラで使用される弦楽器 -- +のための楽譜を記述する際に有用な情報とリファレンスを提供します。 +orchestral strings. + +@menu +* フレットの無い弦楽器で共通の記譜法:: +@end menu + +@node フレットの無い弦楽器で共通の記譜法 +@subsection フレットの無い弦楽器で共通の記譜法 +@translationof Common notation for unfretted strings + +フレットの無い弦楽器のための特殊な記譜法は少ししかありません。@c +フレットの無い弦楽器の演奏は単一の譜で記譜され、@c +通常は 1 つのボイスしか必要としません。@c +ダブル ストップ (重音奏法) やディヴィジ (divisi) パッセージで +2 つのボイスが必要となる場合もあります。 + +@menu +* フレットの無い弦楽器のためのリファレンス:: +* ボーイング指示:: +* ハーモニクス:: +* スナップ (バルトーク) ピッツィカート:: +@end menu + +@node フレットの無い弦楽器のためのリファレンス +@unnumberedsubsubsec フレットの無い弦楽器のためのリファレンス +@translationof References for unfretted strings + +オーケストラの弦楽器や他の弓を使う楽器で用いられる記譜法のほとんどは@c +他の場所でカバーされています。 + +@itemize + +@item @qq{pizz.} や @qq{arco} などのテキスト指示は、@c +単なるテキストとして付け加えます +-- @ref{Text scripts} を参照してください。 + +@item 親指の指示も含めた運指は、@ref{Fingering instructions} で説明しています。 + +@item ダブル ストップは通常、和音として記述します +-- @ref{Chorded notes} を参照してください。@c +和音を弾く方向を付け加えることもできます +-- @ref{Arpeggio} を参照してください。 + +@item @rlearning{String quartet} に弦楽四重奏のテンプレートがあります。@c +他の例はコード断片集で示されています。 + +@end itemize + +@seealso +学習マニュアル: +@rlearning{String quartet} + +記譜法リファレンス: +@ref{Text scripts}, +@ref{Fingering instructions}, +@ref{Chorded notes}, +@ref{Arpeggio} + +コード断片集: +@rlsr{Unfretted strings} + + +@node ボーイング指示 +@unnumberedsubsubsec ボーイング指示 +@translationof Bowing indications + +@funindex \upbow +@funindex \downbow +@funindex \open + +@cindex bowing indications (ボーイング指示) +@cindex up bow indication (アップ ボー指示) +@cindex down bow indication (ダウン ボー指示) +@cindex open string indication (開放弦の指示) +@cindex string, indicating open (開放弦の指示) + +ボーイング指示はアーティキュレーションとして作成します。@c +アーティキュレーションについては、@c +@ref{Articulations and ornamentations} で説明しています。 + +ボーイングのコマンド +-- @code{\upbow} と @code{\downbow} -- +は、以下のようにスラーと一緒に用います: + +@lilypond[verbatim,quote,relative=2] +c4(\downbow d) e(\upbow f) +@end lilypond + +@noindent +以下の例は、バイオリンで A の開放弦を表す 3 つの方法を示しています: + +@lilypond[verbatim,quote,relative=2] +a4 \open +a^\markup { \teeny "II" } +a2^\markup { \small "sul A" } +@end lilypond + + +@predefined +@code{\downbow}, +@code{\upbow}, +@code{\open} +@endpredefined + +@seealso +記譜法リファレンス: +@ref{Articulations and ornamentations}, +@ref{Slurs} + + +@node ハーモニクス +@unnumberedsubsubsec ハーモニクス +@translationof Harmonics + +@funindex \harmonic + +@strong{@i{ナチュラル ハーモニクス}} + +@cindex note heads, diamond-shaped (ダイアモンド形の符頭) +@cindex diamond-shaped note heads (ダイアモンド形の符頭) +@cindex natural harmonics (ナチュラル ハーモニクス) +@cindex harmonics, natural (ナチュラル ハーモニクス) +@funindex \harmonicsOn +@funindex \harmonicsOff + +いくつかの方法でナチュラル ハーモニクスを記譜することができます。@c +一般的に、ダイアモンド形の符頭は、@c +符頭がダイアモンド形ではない場合に押さえる弦に触れることを意味します。 + +@lilypond[verbatim,quote,relative=2] +d4 e4. +\harmonicsOn +d8 e e +d4 e4. +\harmonicsOff +d8 e e +@end lilypond + +一方、鳴らすピッチに通常の符頭を記譜すると共に、@c +小さな丸を付けることでハーモニクスとして演奏することを示す方法もあります: + +@lilypond[verbatim,quote,relative=2] +d2^\flageolet d_\flageolet +@end lilypond + +より小さな丸を描くこともできます。@c +@ref{References for unfretted strings} にある@c +コード断片集を参照してください。 + +@strong{@i{アーティフィシャル ハーモニクス}} + +@cindex artificial harmonics (アーティフィシャル ハーモニクス) +@cindex harmonics, artificial (アーティフィシャル ハーモニクス) + +アーティフィシャル ハーモニクスは 2 つの音符で記譜します +-- 1 つは通常の符頭でストップ ポジションを示し、@c +もう 1 つは中空のダイアモンド形の符頭でハーモニクス ポジションを示します。 + +@c TODO If the default for harmonicDots is changed, change this +@code{\harmonic} で記譜したアーティフィシャル ハーモニクスは符点を持ちません。@c +符点を付ける必要がある場合は、@c +コンテキスト プロパティ @code{harmonicDots} を設定します。 + +@lilypond[verbatim,quote,relative=1] +2. 4 +\set harmonicDots = ##t +2. 4 +@end lilypond + +@warning{@code{@bs{}harmonic} は、単一の音符しかない場合であっても、@c +和音構造の中に配置する @strong{必要があります}。@c +通常、単一の音符のハーモニクスには @code{@bs{}harmonicsOn} を使います。} + +@seealso +音楽用語集: +@rglos{harmonics} + +記譜法リファレンス: +@ref{Special note heads}, +@ref{References for unfretted strings} + + +@node スナップ (バルトーク) ピッツィカート +@unnumberedsubsubsec スナップ (バルトーク) ピッツィカート +@translationof Snap (Bartok) pizzicato + +@cindex pizzicato, Bartók (バルトーク ピッツィカート) +@cindex pizzicato, snap (スナップ ピッツィカート) +@cindex Bartók pizzicato (バルトーク ピッツィカート) +@cindex snap pizzicato (スナップ ピッツィカート) + +@notation{スナップ ピッツィカート} (@notation{snap pizzicato}) +-- @notation{バルトーク ピッツィカート} (@notation{Bartók pizzicato}) とも呼ばれます +-- は、ピッツィカートの 1 つで、@c +故意に弦を上 (フィンガーボードと垂直) に引いて、@c +弦をフィンガーボードにぶつけます。 + +@lilypond[verbatim,quote,relative=1] +c4\snappizzicato +4\snappizzicato +4^\snappizzicato +4_\snappizzicato +@end lilypond diff --git a/Documentation/ja/notation/vocal.itely b/Documentation/ja/notation/vocal.itely new file mode 100644 index 0000000000..6225c140aa --- /dev/null +++ b/Documentation/ja/notation/vocal.itely @@ -0,0 +1,3331 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- + +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node 声楽 +@section 声楽 +@translationof Vocal music + +@lilypondfile[quote]{vocal-headword.ly} + +このセクションでは声楽を譜刻し、歌詞を旋律の音符に揃える方法について説明します。 + +@menu +* 声楽で共通の記譜法:: +* 歌詞に特有のテクニック:: +* 歌詞の節:: +* 歌曲:: +* 合唱:: +* オペラと舞台ミュージカル:: +* 聖歌と賛美歌:: +* 古代の声楽:: + +@end menu + + +@node 声楽で共通の記譜法 +@subsection 声楽で共通の記譜法 +@translationof Common notation for vocal music + +このセクションでは声楽の譜刻に共通する問題について説明します。 + +@menu +* 声楽のためのリファレンス:: +* 歌詞を入力する:: +* 歌詞を旋律に揃える:: +* 歌詞音節の自動演奏時間:: +* 歌詞音節の手動演奏時間:: +* 複数の歌詞音節を 1 つの音符に割り当てる:: +* 複数の音符を 1 つの歌詞音節に割り当てる:: +* 延長線とハイフン:: +@end menu + + +@node 声楽のためのリファレンス +@unnumberedsubsubsec 声楽のためのリファレンス +@translationof References for vocal music + +このセクションでは声楽を譜刻する際に発生する記譜法の問題についての@c +詳細について記述している場所を示します。 + +@itemize + +@item +たいていの声楽では歌詞として記述されたテキストを用います。@c +この記譜法についての導入部は @rlearning{簡単な歌曲を作成する} にあります。 + +@item +声楽はたいてい歌詞や他のテキスト要素 (配役の名前等) のために@c +@code{markup} モードの使用を必要とします。@c +@code{markup} モードの構文は @ref{テキスト マークアップの導入部} で@c +説明しています。 + +@item +声楽譜の最初に @notation{音域} (ambitus) が追加されることがあります。@c +音域について @ref{音域} で説明しています。 + +@item +デフォルトでは強弱記号は譜の下に配置されます。@c +しかしながら、たいていの合唱の楽譜では、@c +@ref{合唱のための楽譜レイアウト} で説明しているように、@c +強弱記号は歌詞を避けるために譜の上に配置されます。 + +@end itemize + +@seealso +音楽用語集: +@rglos{ambitus} + +学習マニュアル: +@rlearning{Setting simple songs} + +記譜法リファレンス: +@ref{Text markup introduction}, +@ref{Ambitus}, +@ref{Score layouts for choral} + +コード断片集: +@rlsr{Vocal music} + + +@node 歌詞を入力する +@unnumberedsubsubsec 歌詞を入力する +@translationof Entering lyrics + +@cindex lyrics, entering (歌詞を入力する) +@cindex entering lyrics (歌詞を入力する) +@cindex formatting in lyrics (歌詞のフォーマット) +@cindex lyrics, formatting (歌詞のフォーマット) +@cindex punctuation in lyrics (歌詞の句読点) +@cindex lyrics punctuation (歌詞の句読点) +@cindex spaces in lyrics (歌詞のスペース) +@cindex quotes in lyrics (歌詞のスペース) +@funindex \lyricmode + +@c TODO should we explain hyphens here + +歌詞は @code{\lyricmode} で始めるか +@code{\addlyrics} または @code{\lyricsto} を用いる@c +特殊な入力モードで入力されます。@c +この特殊な入力モードでは、入力 @code{d} はピッチ @notation{D} とは解釈されず、@c +テキストの 1 文字の歌詞と解釈されます。@c +言い換えると、歌詞を音符のように入力して、@c +ピッチではなくテキストとして譜刻します。 + +例: + +@example +\lyricmode @{ Three4 blind mice,2 three4 blind mice2 @} +@end example + +歌詞の水平方向の配置を指定するための手法は主に 2 つあります +-- 上記の例のように歌詞の各音節の演奏時間を指定するか、@c +@code{\addlyrics} または @code{\lyricsto} を用いて@c +歌詞を自動的に旋律や他のボイスに揃えさせるかのどちらかです。@c +前者は @ref{歌詞音節の手動演奏時間} で説明します。@c +後者は @ref{歌詞音節の自動演奏時間} で説明します。 + +歌詞の単語または音節はアルファベット +(さらに他のいくつかの文字 -- 以下を読んでください) で始まり、@c +空白か数字で終わります。@c +歌詞の音節の頭文字以後の文字は、数字や空白を除く、@c +任意の文字になります。 + +数字や空白ではない文字は歌詞の一部と見なされるため、@c +@code{@}} で終わる単語であっても有効です +-- このことが以下のミスを引き起こします: + +@example +\lyricmode @{ lah lah lah@} +@end example + +上記の例で、@code{@}} は歌詞の最後の音節に含まれるため、@c +波括弧 @code{@{} は閉じられず、@c +入力ファイルはおそらくコンパイルされません。@c +これを避けるため、波括弧の前後に常に空白を記述すべきです: + +@example +\lyricmode @{ lah lah lah @} +@end example + +@cindex overrides in lyric mode (歌詞モードでのオーバライド) +@funindex \override in \lyricmode + +同様に、歌詞モードではピリオドは前のアルファベットの並びに含まれてしまいます。@c +このため、@code{\override} コマンドのピリオドの前後に@c +空白を挿入する必要があります。@c +以下のように記述しないでください + +@example +\override Score.LyricText #'font-shape = #'italic +@end example + +@noindent +以下のように記述してください + +@example +\override Score . LyricText #'font-shape = #'italic +@end example + +句読点、アクセントが付いた文字を持つ歌詞、英語以外の言語の文字、@c +あるいは特殊文字 (ハート記号や引用符等) は、UTF-8 エンコードで保存することで、@c +直接入力することができます。@c +さらなる情報は、@ref{Special characters} を参照してください。 + +@lilypond[quote,verbatim] +\relative c'' { d8 c16 a bes8 f e' d c4 } +\addlyrics { „Schad’ um das schö -- ne grü -- ne Band, } + +@end lilypond + +歌詞モードで通常の引用符を使うことができますが、@c +引用符の前にバックスラッシュを配置し、@c +歌詞の音節全体を追加の引用符で囲む必要があります。@c +例を挙げます: + +@lilypond[quote,verbatim] +\relative c' { \time 3/4 e4 e4. e8 d4 e d c2. } +\addlyrics { "\"I" am so lone -- "ly,\"" said she } +@end lilypond + +歌詞モードでの単語の開始の完全な定義は複雑です。@c +歌詞モードでの単語はアルファベット, @code{_}, @code{?}, @code{!}, + +歌詞モードでの単語の開始の完全な定義は複雑です。@c +歌詞モードで、単語は以下の文字で始まります: +アルファベット, @code{_}, @code{?}, @code{!}, @code{:}, @code{'}, +制御文字 @code{^A} から @code{^F}, @code{^Q} から @code{^W}, @code{^Y}, +@code{^^}, 128 以上の ASCII コードの 8 ビット文字, +バックスラッシュとの組み合わせ @code{\`}, @code{\'}, @code{\"}, +または @code{\^}。 + +@c " to balance double quotes for not-so-bright context-sensitive editors + +歌詞の中で @code{\markup} を用いることで、@c +歌詞の体裁を様々に制御することができます。@c +多くのオプションの説明は、@ref{テキストをフォーマットする} を参照してください。 + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{formatting-lyrics-syllables.ly} + +@seealso +学習マニュアル: +@rlearning{歌曲} + +記譜法リファレンス: +@ref{歌詞音節の自動演奏時間}, +@ref{フォント}, +@ref{テキストをフォーマットする}, +@ref{入力モード}, +@ref{歌詞音節の手動演奏時間}, +@ref{Special characters} + +内部リファレンス: +@rinternals{LyricText} + +コード断片集: +@rlsr{Text} + + +@node 歌詞を旋律に揃える +@unnumberedsubsubsec 歌詞を旋律に揃える +@translationof Aligning lyrics to a melody + +@cindex lyrics, aligning to a melody (歌詞を旋律に揃える) +@cindex @code{associatedVoice} +@funindex \lyricmode +@funindex \addlyrics +@funindex \lyricsto + +歌詞はコンテキスト @code{Lyrics} の中で解釈されることで譜刻されます。@c +@ref{コンテキストの説明} を参照してください。 + +@example +\new Lyrics \lyricmode @{ @dots{} @} +@end example + +歌詞は主に 2 つの方法で歌詞に揃えることができます: + +@itemize + +@item +@code{\addlyric}, @code{\lyricsto} を用いるか、@c +プロパティ @code{associatedVoice} を設定することにより、@c +他のボイスあるいは (特殊な状況ですが) 関連付けされた旋律から@c +歌詞の音節の演奏時間を取ることで、歌詞を自動的に揃えることができます。@c +詳細は @ref{歌詞音節の自動演奏時間} を参照してください。 + +@c KEEP LY +@lilypond[quote,ragged-right,verbatim] +<< + \new Staff << + \time 2/4 + \new Voice = "one" \relative c'' { + \voiceOne + c4 b8. a16 g4. r8 a4 ( b ) c2 + } + \new Voice = "two" \relative c' { + \voiceTwo + s2 s4. f8 e4 d c2 + } + >> + +% "one" の音符に揃えます + \new Lyrics \lyricsto "one" { + Life is __ _ love, live __ life. + } + +% 最初は "one" の音符に揃えて、それから "two" に切り替えます + \new Lyrics \lyricsto "one" { + No more let + \set associatedVoice = "two" % 切り替える音節の前にセットする必要があります + sins and sor -- rows grow. + } +>> +@end lilypond + +歌詞の 1 番は通常の歌詞の入力方法を示しています。 + +歌詞の 2 番は歌詞を揃えるボイスを切り替える方法を示しています。@c +この方法は、歌詞の 1 番と 2 番で音符への単語の揃え方が異なり、@c +単語を揃えるべき音符がすべてボイス コンテキストの中にある場合に有用です。@c +詳細は @ref{歌詞の節} を参照してください。 + +@item +歌詞を @code{Â¥lyricmode} で入力し、音節の演奏時間を明示的に示すことで、@c +歌詞を音符とは独立して揃えることができます。 + +@c KEEP LY +@lilypond[quote,ragged-right,verbatim] +<< + \new Voice = "one" \relative c'' { + \time 2/4 + c4 b8. a16 g4. f8 e4 d c2 + } + +% 前で指定された演奏時間 2 を用います + \new Lyrics \lyricmode { + Joy to the earth! + } + +% 音符とは異なるリズムをセットするために、演奏時間を明示します + \new Lyrics \lyricmode { + Life4 is love,2. live4 life.2 + } +>> +@end lilypond + +歌詞の 1 番は演奏時間が指定されず、各単語には前の値 2 がされるため、@c +音符と揃いません。 + +歌詞の 2 番は音符とは全く独立して単語を揃える方法を示しています。@c +この方法は、歌詞の 1 番と 2 番で音符への単語の揃え方が異なり、@c +単語を揃えるべき音符がボイス コンテキストから得られない場合に有用です。@c +詳細は @ref{歌詞音節の手動演奏時間} を参照してください。@c +このテクニックは譜の上に会話をセットする場合にも有用です +-- これの例は @ref{音楽の中での会話} を参照してください。 + +この方法で入力した音符はデフォルトでは音符に左揃えされますが、@c +関連付されたボイスが存在する場合はそれを指定することで中央揃えされます。@c +詳細は @ref{歌詞音節の手動演奏時間} を参照してください。 + +@end itemize + +@seealso +学習マニュアル: +@rlearning{Aligning lyrics to a melody} + +記譜法リファレンス: +@ref{Contexts explained}, +@ref{Automatic syllable durations}, +@ref{Stanzas}, +@ref{Manual syllable durations}, +@ref{Dialogue over music}, +@ref{Manual syllable durations} + +内部リファレンス: +@rinternals{Lyrics} + + +@node 歌詞音節の自動演奏時間 +@unnumberedsubsubsec 歌詞音節の自動演奏時間 +@translationof Automatic syllable durations + +@cindex syllable durations, automatic (歌詞音節の自動演奏時間) +@cindex lyrics and melodies (歌詞と旋律) +@cindex @code{associatedVoice} +@funindex \addlyrics +@funindex \lyricsto + +以下の 3 つの方法で歌詞を旋律の音符に揃えることができます: + +@itemize + +@item +@code{Â¥lyricsto} で旋律を保持しているボイス コンテキストを指定します。 + +@item +@code{Â¥addlyrics} で歌詞を入力して、@c +それを旋律を保持しているボイス コンテキストの直後に配置します。 + +@item +任意のタイミングで @code{associatedVoice} プロパティを設定することで@c +歌詞の揃えを名前を持つ他のボイス コンテキストに切り替えます。 + +@end itemize + +3 つの方法のいずれでも、単語の音節の間にハイフンを描き、@c +単語の後ろに延長線を描くことができます。@c +詳細は @ref{延長線とハイフン} を参照してください。 + +歌詞を揃える @code{Voice} コンテキストが @qq{消滅} してはいけません。@c +さもないと、その後の歌詞は失われてしまいます。@c +ボイスは何もすることが無くなると消滅する可能性があります +-- @ref{コンテキストを残しておく} を参照してください。 + +@subheading @code{\lyricsto} を用いる + +@cindex \lyricsto +@funindex \lyricsto + +旋律を保持している名前の付いたボイス コンテキストを +@code{Â¥lyricsto} で指定することにより、@c +歌詞を旋律の下に揃えることができます: + +@lilypond[quote,verbatim,relative=2] +<< + \new Voice = "melody" { + a4 a a a + } + \new Lyrics \lyricsto "melody" { + These are the words + } +>> +@end lilypond + +@noindent +これは歌詞を名前の付いた @code{Voice} コンテキストに揃えます +-- @code{Voice} コンテキストは既に存在している必要があります。@c +このため、普通は @code{Voice} コンテキストを先に記述して、@c +その後に @code{Lyrics} コンテキストを記述します。@c +歌詞自体は @code{Â¥lyricsto} コマンドの後に記述します。@c +@code{Â¥lyricsto} コマンドは自動的に歌詞モードを呼び出すため、@c +@code{Â¥lyricmode} の記述は省略できます。@c +デフォルトでは、歌詞は音符の下に配置されます。@c +配置場所を変更する方法は @ref{歌詞の垂直方向の配置} を参照してください。 + +@subheading @code{\addlyrics} を用いる + +@cindex \addlyrics +@funindex \addlyrics + +@code{Â¥addlyrics} コマンドは便利なショートカットで、@c +もっと複雑な LilyPond 構造を使う歌詞のセットアップの代わりとして@c +用いることができます。 + +@example +@{ MUSIC @} +\addlyrics @{ LYRICS @} +@end example + +@noindent +上記は下記と同等です: + +@example +\new Voice = "blah" @{ MUSIC @} +\new Lyrics \lyricsto "blah" @{ LYRICS @} +@end example + +ここで例を挙げます: + +@lilypond[verbatim,quote] +{ + \time 3/4 + \relative c' { c2 e4 g2. } + \addlyrics { play the game } +} +@end lilypond + +@code{Â¥addlyrics} セクションを追加することで、@c +歌詞の 2 番、3 番を追加することができます: + + +@lilypond[ragged-right,verbatim,quote] +{ + \time 3/4 + \relative c' { c2 e4 g2. } + \addlyrics { play the game } + \addlyrics { speel het spel } + \addlyrics { joue le jeu } +} +@end lilypond + +コマンド @code{Â¥addlyrics} は多声を扱うことはできません。@c +そのような場合は @code{Â¥lyricsto} を使うべきです。 + +@subheading associatedVoice を用いる + +@code{associatedVoice} プロパティを設定することで、@c +歌詞を揃える旋律を変更することができます: + +@example +\set associatedVoice = #"lala" +@end example + +@noindent + +プロパティの値 (ここでは "lala" です) は +@code{Voice} コンテキストの名前になります。@c +技術的な理由により、@c +変更を適用する歌詞の音節の前にこの @code{set} コマンドを配置する必要があります。 + +ここで、使用例を挙げます: + +@c KEEP LY +@lilypond[quote,ragged-right,verbatim] +<< + \new Staff << + \time 2/4 + \new Voice = "one" \relative c'' { + \voiceOne + c4 b8. a16 g4. r8 a4 ( b ) c2 + } + \new Voice = "two" \relative c' { + \voiceTwo + s2 s4. f8 e8 d4. c2 + } + >> +% 最初は "one" の音符に揃えます +% それから "two" に切り替えます + \new Lyrics \lyricsto "one" { + No more let + \set associatedVoice = "two" % 切り替える音節の前にセットする必要があります + sins and sor -- rows grow. + } +>> +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Extenders and hyphens}, +@ref{Keeping contexts alive}, +@ref{Placing lyrics vertically} + + +@node 歌詞音節の手動演奏時間 +@unnumberedsubsubsec 歌詞音節の手動演奏時間 +@translationof Manual syllable durations + +複雑な声楽では、@c +歌詞を音符とは完全に独立させて配置する方が望ましい場合があります。@c +そのような場合、@code{\lyricsto} や @code{\addlyrics} を用いたり、@c +@code{associatedVoice} プロパティを設定したりはしません。@c +歌詞の音節を音符のように +-- しかしながら、ピッチをテキストに置き換えて -- +入力し、歌詞の各音節の後には演奏時間を明示的に記述します。 + +デフォルトでは、歌詞の音節は対応する音楽イベントに左揃えされます。@c +音節の間にハイフンを描くことは普通にできますが、@c +延長線を描くには関連付されたボイスが存在する必要があります。 + +ここで、2 つの例を挙げます: + +@lilypond[relative=1,verbatim,quote] +<< + \new Voice = "melody" { + \time 3/4 + c2 e4 g2 f + } + \new Lyrics \lyricmode { + play1 the4 game4 + } +>> +@end lilypond + + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff { + \relative c'' { + c2 c2 + d1 + } + } + \new Lyrics { + \lyricmode { + I2 like4. my8 cat!1 + } + } + \new Staff { + \relative c' { + c8 c c c c c c c + c8 c c c c c c c + } + } +>> +@end lilypond + +このテクニックは、譜の上に会話を書く場合に有用です +-- @ref{音楽の中での会話} を参照してください。 + +歌詞を音符に中央揃えさせるには、@c +@code{associatedVoice} に音符を保持しているボイス コンテキストをセットします。@c +@code{associatedVoice} がセットされると、@c +2 重ハイフンと 2 重アンダースコアを記述することで、@c +メリスマにハイフンと延長線を描くことができます。 + +@lilypond[relative=1,verbatim,quote] +<< + \new Voice = "melody" { + \time 3/4 + c2 e4 g f g + } + \new Lyrics \lyricmode { + \set associatedVoice = #"melody" + play2 the4 game2. __ + } +>> +@end lilypond + +@c TODO see also feature request 707 - show how to do this with manual durations + +@seealso +記譜法リファレンス: +@ref{Dialogue over music} + +内部リファレンス: +@rinternals{Lyrics}, +@rinternals{Voice} + + +@node 複数の歌詞音節を 1 つの音符に割り当てる +@unnumberedsubsubsec 複数の歌詞音節を 1 つの音符に割り当てる +@translationof Multiple syllables to one note + +@funindex _ +@cindex spaces, in lyrics (歌詞の中での空白) +@cindex quotes, in lyrics (歌詞の中での引用符) +@cindex ties, in lyrics (歌詞の中でのタイ) + +1 つの音符にスペースで区切られた複数の音節を割り当てるには、@c +そのフレーズを引用符で囲むか、@code{_} 文字を用います。@c +代替手段として、チルド記号 (@code{~}) を用いて音節をタイで結ぶこともできます。 + +@lilypond[quote,ragged-right,verbatim] +{ + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } +} +@end lilypond + + +@seealso +内部リファレンス: +@rinternals{LyricCombineMusic} + + +@node 複数の音符を 1 つの歌詞音節に割り当てる +@unnumberedsubsubsec 複数の音符を 1 つの歌詞音節に割り当てる +@translationof Multiple notes to one syllable + +@cindex melisma (メリスマ) +@cindex melismata (メリスマ) +@cindex phrasing, in lyrics (歌詞の中でのフレーズ) +@funindex \melisma +@funindex \melismaEnd + +しばしば、特に中世の音楽では、1 つの音節を複数の音符で歌います。@c +そのような歌い方をメリスマ (melismata または @rglos{melisma}) と呼びます。@c +通常、メリスマの音節はメリスマの最初の音符に左揃えされます。 + +メリスマが単語の最後ではない音節で発生する場合、@c +その音節と次の音節をハイフンで結びます。@c +これは音節の直後に 2 重ハイフン @code{--} を配置することで示します。 + +メリスマが単語の最後の音節または音節が 1 つしかない単語で発生する場合、@c +最後の音節からメリスマの最後の音符まで延長線を描きます。@c +これは単語の直後に 2 重アンダースコア @code{__} を配置することで示します。 + +メリスマを示す方法は 5 つあります: + +@itemize + +@item +タイで結ばれた音符には、自動的にメリスマが作成されます: + +@lilypond[quote,relative=2,verbatim] +<< + \new Voice = "melody" { + \time 3/4 + f4 g2 ~ | + g4 e2 ~ | + e8 + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- e __ + } +>> +@end lilypond + +@item +各メリスマの音符にスラーを配置することで、@c +譜から自動的にメリスマを作成することができます。@c +これが歌詞を入力する通常の方法です: + +@lilypond[quote,relative=2,verbatim] +<< + \new Voice = "melody" { + \time 3/4 + f4 g8 ( f e f ) + e8 ( d e2 ) + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- e __ + } +>> +@end lilypond + +フレージング スラーはメリスマの作成には影響を与えないことに注意して@c +ください。 + +@item +自動連桁を off にして、手動で連桁を付けられた音符はメリスマと見なされます。@c +@ref{自動連桁の振る舞いを設定する} を参照してください。 + +@lilypond[quote,relative=2,verbatim] +<< + \new Voice = "melody" { + \time 3/4 + \autoBeamOff + f4 g8[ f e f] + e2. + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- e + } +>> +@end lilypond + +この例はメリスマに 8 分音符よりも長い音符を含めているため、@c +明らかに不適切です。 + +@item +スラーが付いていない音符でも、@c +@code{\melisma} と @code{\melismaEnd} で囲まれていればメリスマとして扱われます。 + +@lilypond[quote,relative=2,verbatim] +<< + \new Voice = "melody" { + \time 3/4 + f4 g8 + \melisma + f e f + \melismaEnd + e2. + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- e + } +>> +@end lilypond + +@item +メリスマに含まれる余分な各音符に対して@c +歌詞の中にアンダースコア @code{_} を記述することで、@c +メリスマを定義することができます。 + +@lilypond[verbatim, quote, relative=2] +<< + \new Voice = "melody" { + \time 3/4 + f4 g8 f e f + e8 d e2 + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- _ _ _ e __ _ _ + } +>> +@end lilypond + +@end itemize + +旋律の中のタイ、スラー、それに手動連桁をメリスマにしないことも可能です。@c +メリスマにしないためには、@code{melismaBusyProperties} を設定します: + +@lilypond[relative=1,verbatim,quote] +<< + \new Voice = "melody" { + \time 3/4 + \set melismaBusyProperties = #'() + c4 d ( e ) + g8 [ f ] f4 ~ f + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- e e -- le -- i -- son + } +>> +@end lilypond + +@code{melismaBusyProperties} に対する設定を変えることで、@c +メリスマの自動検出にタイ、スラー、それに連桁を@c +含める / 除外することができます。@c +@rinternals{Tunable context properties} の @code{melismaBusyProperties} +を参照してください。 + +代替手段として、@code{ignoreMelismata} に真をセットすることで@c +すべてのメリスマを無視することができます。@c +@ref{リズムが異なる歌詞の節} を参照してください。 + +@code{melismaBusyProperties} がアクティブになっているパッセージの中で@c +メリスマを使う必要がある場合、@c +メリスマに含める各音符に対して歌詞の中にアンダースコアを記述します: + +@lilypond[relative=1,verbatim,quote] +<< + \new Voice = "melody" { + \time 3/4 + \set melismaBusyProperties = #'() + c4 d ( e ) + g8 [ f ] ~ f4 ~ f + } + \new Lyrics \lyricsto "melody" { + Ky -- ri -- _ e __ _ _ _ + } +>> +@end lilypond + + +@predefined + +@code{\autoBeamOff}, +@code{\autoBeamOn}, +@code{\melisma}, +@code{\melismaEnd} + +@seealso +音楽用語集: +@rglos{melisma} + +学習マニュアル: +@rlearning{Aligning lyrics to a melody} + +記譜法リファレンス: +@ref{Aligning lyrics to a melody}, +@ref{Automatic syllable durations}, +@ref{Setting automatic beam behavior}, +@ref{Stanzas with different rhythms} + +内部リファレンス: +@rinternals{Tunable context properties} + +@knownissues +メリスマの延長線は自動的には作成されません。@c +手動で 2 重アンダースコアを記述する必要があります。 + + +@node 延長線とハイフン +@unnumberedsubsubsec 延長線とハイフン +@translationof Extenders and hyphens + +@cindex melisma (メリスマ) +@cindex extender (延長線) + +@c TODO cf Multiple notes to one syllable; should this be merged in? + +@c leave this as samp. -gp +しばしば単語の最後の音節で、@c +その音節から次の音節まで長い水平の線を描いてメリスマを示すことがあります。@c +そのような線のことを延長線と呼び、@samp{ __ } で記述します +(2 重アンダースコアの前後にスペースがあることに注意してください)。 + +@warning{ +楽譜の中でメリスマは延長線で示され、@c +延長線は 2 重のアンダースコアとして入力します。@c +しかしながら、個々の音符をスキップすることで短いメリスマを作ることも可能です。@c +音符のスキップには単一のアンダースコアを記述します +-- デフォルトでは、音符のスキップは延長線を作り出しません。 +} + +@cindex hyphens (ハイフン) + +@c leave this as samp. -gp +同じ単語の音節間の中央にハイフンを記譜するには、@c +@samp{ -- } を記述します +(2 重ハイフンの前後にスペースがあることに注意してください)。@c +ハイフンは音節の間の中央に配置され、@c +長さは音節の間のスペースによって調節されます。 + +密に譜刻された楽譜では、ハイフンが削除されることもあります。@c +ハイフンが削除されるかどうかを +@code{LyricHyphen} のプロパティ +@code{minimum-distance} (2 つの音節の間の最小間隔) と +@code{minimum-length} (ハイフンを削除するかどうかの閾値) で@c +制御することができます。 + +@seealso +内部リファレンス: +@rinternals{LyricExtender}, +@rinternals{LyricHyphen} + + +@node 歌詞に特有のテクニック +@subsection 歌詞に特有のテクニック +@translationof Techniques specific to lyrics + +@c TODO this whole section is to be reorganised + +@menu +* 歌詞と変数に取り組む:: +* 歌詞の垂直方向の配置:: +* 歌詞の水平方向の配置:: +* 歌詞と繰り返し:: +* 歌詞のディヴィージ:: +@end menu + + + +@node 歌詞と変数に取り組む +@unnumberedsubsubsec 歌詞と変数に取り組む +@translationof Working with lyrics and variables + +@cindex lyrics, using variables (歌詞に変数を用いる) + +歌詞を保持する変数を作成することができます。@c +歌詞は歌詞モードで入力する必要があります: + +@lilypond[quote,verbatim] +musicOne = \relative c'' { + c4 b8. a16 g4. f8 e4 d c2 +} +verseOne = \lyricmode { + Joy to the world, the Lord is come. +} +\score { + << + \new Voice = "one" { + \time 2/4 + \musicOne + } + \new Lyrics \lyricsto "one" { + \verseOne + } + >> +} +@end lilypond + +変数が @code{\addlyrics} または @code{\lyricsto} で呼び出される場合、@c +歌詞に演奏時間を付ける必要はありません。 + +順序が異なったり、もっと複雑だったりする場合、@c +最も良い方法は最初に音楽と歌詞を保持する変数を定義して、 +譜と歌詞の階層をセットアップして (歌詞自体は省略します) から、@c +@code{\context} を用いて歌詞を追加します。@c +この方法は、@code{\lyricsto} によって参照されるボイスが@c +常に定義済みであることを保証します。@c +例を挙げます: + +@lilypond[quote,verbatim] +sopranoMusic = \relative c'' { c4 c c c } +contraltoMusic = \relative c'' { a4 a a a } +sopranoWords = \lyricmode { Sop -- ra -- no words } +contraltoWords = \lyricmode { Con -- tral -- to words } + +\score { + \new ChoirStaff << + \new Staff { + \new Voice = "sopranos" { + \sopranoMusic + } + } + \new Lyrics = "sopranos" + \new Lyrics = "contraltos" + \new Staff { + \new Voice = "contraltos" { + \contraltoMusic + } + } + \context Lyrics = "sopranos" { + \lyricsto "sopranos" { + \sopranoWords + } + } + \context Lyrics = "contraltos" { + \lyricsto "contraltos" { + \contraltoWords + } + } + >> +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Placing lyrics vertically} + +内部リファレンス: +@rinternals{LyricCombineMusic}, +@rinternals{Lyrics} + + +@node 歌詞の垂直方向の配置 +@unnumberedsubsubsec 歌詞の垂直方向の配置 +@translationof Placing lyrics vertically + +@cindex placement of lyrics (歌詞の配置) +@cindex lyrics, positioning (歌詞を配置する) + +音楽の種類によって、歌詞が譜の上、下、あるいは間に配置されることもあります。@c +歌詞を関連する譜の下に配置することが最も簡単で、@c +@code{Staff} コンテキストの下に @code{Lyrics} コンテキストを定義するだけで@c +実現できます: + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { c4 c c c } + } + } + \new Lyrics { + \lyricsto "melody" { + Here are the words + } + } + >> +} +@end lilypond + +歌詞を譜の上に配置する方法は 2 つあります。@c +簡単な (そして好まれる) のは、@c +上記と同じ構文を用いて歌詞の配置を明示的に指定する方法です: + +@lilypond[quote,verbatim] +\score { + << + \new Staff = "staff" { + \new Voice = "melody" { + \relative c'' { c4 c c c } + } + } + \new Lyrics \with { alignAboveContext = "staff" } { + \lyricsto "melody" { + Here are the words + } + } + >> +} +@end lilypond + +代替手段として、2 ステップのプロセスを用いることもできます。@c +最初に、@code{Staff} コンテキストと @code{Voice} コンテキストより先に +@code{Lyrics} コンテキストを宣言して (内容は記述しません)、@c +それから参照する @code{Voice} コンテキストの宣言の後に +@code{\context} を用いて @code{\lyricsto} コマンドを配置します。@c +以下のようにします: + +@c KEEP LY +@lilypond[quote,verbatim] +\score { + << + \new Lyrics = "lyrics" \with { + % 譜の上に配置する歌詞は以下のオーバライドを行う必要があります + \override VerticalAxisGroup #'staff-affinity = #DOWN + } + \new Staff { + \new Voice = "melody" { + \relative c'' { c4 c c c } + } + } + \context Lyrics = "lyrics" { + \lyricsto "melody" { + Here are the words + } + } + >> +} +@end lilypond + +別々の譜に配置される 2 つのボイスがある場合、@c +上記の方法のいずれかを用いて歌詞を譜の間に配置することができます。@c +ここでは、2 番目の方法を用いる例を挙げます: + +@c KEEP LY +@lilypond[quote,verbatim] +\score { + \new ChoirStaff << + \new Staff { + \new Voice = "sopranos" { + \relative c'' { c4 c c c } + } + } + \new Lyrics = "sopranos" + \new Lyrics = "contraltos" \with { + % 譜の上に配置する歌詞は以下のオーバライドを行う必要があります + % lyrics above a staff should have this override + \override VerticalAxisGroup #'staff-affinity = #DOWN + } + \new Staff { + \new Voice = "contraltos" { + \relative c'' { a4 a a a } + } + } + \context Lyrics = "sopranos" { + \lyricsto "sopranos" { + Sop -- ra -- no words + } + } + \context Lyrics = "contraltos" { + \lyricsto "contraltos" { + Con -- tral -- to words + } + } + >> +} +@end lilypond + +他の歌詞と譜の組み合わせは、上記の例に磨きをかけるか、@c +学習マニュアルの @rlearning{合唱} テンプレートを吟味することによって@c +作り出すことができます。 + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{obtaining-2.12-lyrics-spacing-in-newer-versions.ly} + +@seealso +学習マニュアル: +@rlearning{Vocal ensembles} + +記譜法リファレンス: +@ref{Context layout order}, +@ref{Creating contexts} + + +@node 歌詞の水平方向の配置 +@unnumberedsubsubsec 歌詞の水平方向の配置 +@translationof Placing syllables horizontally + +@cindex Spacing lyrics (歌詞の間隔) +@cindex Lyrics, increasing space between (歌詞の間隔を広げる) + +歌詞の間隔を広げるには +@code{LyricSpace} の @code{minimum-distance} プロパティを設定します。 + +@lilypond[relative=1,verbatim,quote,ragged-right] +{ + c c c c + \override Lyrics.LyricSpace #'minimum-distance = #1.0 + c c c c +} +\addlyrics { + longtext longtext longtext longtext + longtext longtext longtext longtext +} +@end lilypond + +@noindent +この変更を楽譜の全ての歌詞に適用するには、@c +@code{\layout} ブロックの中でプロパティの設定を行います。 + +@lilypond[verbatim,quote,ragged-right] +\score { + \relative c' { + c c c c + c c c c + } + \addlyrics { + longtext longtext longtext longtext + longtext longtext longtext longtext + } + \layout { + \context { + \Lyrics + \override LyricSpace #'minimum-distance = #1.0 + } + } +} +@end lilypond + +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{lyrics-alignment.ly} + +@c TODO: move to LSR -vv + +テキスト スクリプトと歌詞がマージンの中に納まることを確認するチェックは@c +より多くの計算を必要とします。@c +この機能を無効にすることで、処理をわずかにスピードアップすることができます: + +@example +\override Score.PaperColumn #'keep-inside-line = ##f +@end example + +歌詞が小節線を避けるようにするには、以下を使います: + +@example +\layout @{ + \context @{ + \Lyrics + \consists "Bar_engraver" + \consists "Separating_line_group_engraver" + \override BarLine #'transparent = ##t + @} +@} +@end example + + +@node 歌詞と繰り返し +@unnumberedsubsubsec 歌詞と繰り返し +@translationof Lyrics and repeats + +@cindex repeats and lyrics (繰り返しと歌詞) +@cindex lyrics, repeating (歌詞を繰り返す) + +@subheading 1 回の繰り返し + +@emph{音楽} の繰り返しは別の場所で説明しています +-- @ref{繰り返し} を参照してください。@c +このセクションでは、@c +歌詞を繰り返しのある音楽に追加する方法について説明します。 + +繰り返しで歌詞の単語が変わらないのであれば、@c +歌詞を音楽と同じ繰り返し構造にすることで、音楽に歌詞を付けることができます。 + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 2 { b4 b b b } + } + } + } + \new Lyrics { + \lyricsto "melody" { + Not re -- peat -- ed. + \repeat volta 2 { Re -- peat -- ed twice. } + } + } + >> +} +@end lilypond + +繰り返しが展開された場合、歌詞も展開されます。 + +@lilypond[verbatim,quote] +\score { + \unfoldRepeats { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 2 { b4 b b b } + } + } + } + \new Lyrics { + \lyricsto "melody" { + Not re -- peat -- ed. + \repeat volta 2 { Re -- peat -- ed twice. } + } + } + >> + } +} +@end lilypond + +繰り返しが展開されて、異なる歌詞を持つ場合、@c +単に歌詞の全ての単語を記述します: + +@lilypond[verbatim,quote,ragged-right] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat unfold 2 { b4 b b b } + } + } + } + \new Lyrics { + \lyricsto "melody" { + Not re -- peat -- ed. + The first time words. + Sec -- ond time words. + } + } + >> +} +@end lilypond + +繰り返しの歌詞が異なる場合、@c +並列に正しくネストされた別々の @code{Lyrics} コンテキストに@c +各繰り返しの歌詞を入力する必要があります: + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 2 { b4 b b b } + } + } + } + \new Lyrics \lyricsto "melody" { + Not re -- peat -- ed. + << + { The first time words. } + \new Lyrics { + \set associatedVoice = "melody" + Sec -- ond time words. + } + >> + } + >> +} +@end lilypond + +同様の方法でさらに歌詞の行を追加することができます: + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "singleVoice" { + \relative c'' { + a4 a a a + \repeat volta 3 { b4 b b b } + c4 c c c + } + } + } + \new Lyrics \lyricsto "singleVoice" { + Not re -- peat -- ed. + << + { The first time words. } + \new Lyrics { + \set associatedVoice = "singleVoice" + Sec -- ond time words. + } + \new Lyrics { + \set associatedVoice = "singleVoice" + The third time words. + } + >> + The end sec -- tion. + } + >> +} +@end lilypond + +@cindex alignBelowContext +@funindex alignBelowContext + +しかしながら、この構造が @code{ChoirStaff} のような複数の譜を持つ@c +コンテキストに埋め込まれた場合、歌詞の 2 番と 3 番は譜の下に表示されます。 + +歌詞を正しく配置するには @code{alignBelowContext} を用います: + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 3 { b4 b b b } + c4 c c c + } + } + } + \new Lyrics = "firstVerse" \lyricsto "melody" { + Not re -- peat -- ed. + << + { The first time words. } + \new Lyrics = "secondVerse" + \with { alignBelowContext = #"firstVerse" } { + \set associatedVoice = "melody" + Sec -- ond time words. + } + \new Lyrics = "thirdVerse" + \with { alignBelowContext = #"secondVerse" } { + \set associatedVoice = "melody" + The third time words. + } + >> + The end sec -- tion. + } + \new Voice = "harmony" { + \relative c' { + f4 f f f \repeat volta 2 { g8 g g4 g2 } a4 a8. a16 a2 + } + } + >> +} +@end lilypond + + + +@c TODO positioning a common line of lyrics + +@subheading 差し替えのある繰り返し + +@cindex lyrics, repeats with alternative endings (差し替えのある繰り返しの歌詞) +@cindex repeating lyrics with alternative endings (差し替えのある繰り返しの歌詞) +@cindex alternative endings and lyrics (差し替えのある繰り返しと歌詞) + +繰り返し部分の歌詞が同じであれば、@c +歌詞と音楽で同じ構造を使うことができます。 + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \time 2/4 + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 2 { b4 b } + \alternative { { b b } { b c } } + } + } + } + \new Lyrics { + \lyricsto "melody" { + Not re -- peat -- ed. + \repeat volta 2 { Re -- peat -- } + \alternative { { ed twice. } { ed twice. } } + } + } + >> +} +@end lilypond + +@funindex \skip +@cindex skipping notes in lyrics (歌詞の中で音符をスキップする) +@cindex lyrics, skipping notes (歌詞の中で音符をスキップする) + +しかしながら、繰り返し部分の歌詞が異なる場合、@c +歌詞に繰り返し構造を用いることはできず、@c +歌詞を適用しない差し替え部分の音符をスキップするために@c +手動で @code{\skip} コマンドを挿入する必要があります。 + +注意: 音符のスキップにアンダースコア @code{_} を使わないでください +-- アンダースコアはメリスマを意味するため、前の音節が左揃えされてしまいます。 + +@warning{ +@code{@bs{}skip} コマンドの後に数字を記述する必要があります。@c +しかしながら、歌詞は @code{\addlyrics} や @code{\lyricsto} で関連付けた@c +旋律の音符から演奏時間を引き出すため、この数字は無視されます。@c +各 @code{@bs{}skip} は後に続く数字の値に関係なく、@c +任意の音価の音符を 1 つスキップします。 +} + +@lilypond[verbatim,quote,ragged-right] +\score { + << + \new Staff { + \time 2/4 + \new Voice = "melody" { + \relative c'' { + \repeat volta 2 { b4 b } + \alternative { { b b } { b c } } + c4 c + } + } + } + \new Lyrics { + \lyricsto "melody" { + The first time words. + \repeat unfold 2 { \skip 1 } + End here. + } + } + \new Lyrics { + \lyricsto "melody" { + Sec -- ond + \repeat unfold 2 { \skip 1 } + time words. + } + } + >> +} +@end lilypond + +@cindex lyrics and tied notes (歌詞とタイで結ばれた音符) +@funindex \repeatTie + +タイが途中で複数の差し替えに分かれる場合、@c +最初の差し替えの音符がタイで結ばれ、@c +2 番目以降の差し替えには @code{\repeatTie} が使用されます。@c +この構造に歌詞が含まれることにより差し替え部分が長くなると、@c +歌詞を音符に揃えることが困難となり、@c +差し替え部分に含まれるタイの音符が受け入れがたい結果を発生させるかもしれません。 + +タイは最初の差し替えまで続くメリスマを作り出しますが、@c +2 番目以降の差し替えには作りません。@c +このため、歌詞を正しく揃えるには、@c +差し替え部分でメリスマの自動作成を無効にして、@c +手動でスキップを挿入する必要があります。 + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \time 2/4 + \new Voice = "melody" { + \relative c'' { + \set melismaBusyProperties = #'() + \repeat volta 2 { b4 b ~} + \alternative { { b b } { b \repeatTie c } } + \unset melismaBusyProperties + c4 c + } + } + } + \new Lyrics { + \lyricsto "melody" { + \repeat volta 2 { Here's a __ } + \alternative { + { \skip 1 verse } + { \skip 1 sec } + } + ond one. + } + } + >> +} +@end lilypond + +@code{\repeatTie} を含むセクションの周辺で +@code{\unfoldRepeats} が使われると、@c +両方のタイプのタイが譜刻されるの避けるために +@code{\repeatTie} は削除されます。 + +繰り返される部分の歌詞が異なる場合、@c +その歌詞の周囲で @code{\repeat} を使うことはできず、@c +前述のように手動で @code{\skip} コマンドを挿入する必要があります。 + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \time 2/4 + \new Voice = "melody" { + \relative c'' { + \repeat volta 2 { b4 b ~} + \alternative { { b b } { b \repeatTie c } } + c4 c + } + } + } + \new Lyrics { + \lyricsto "melody" { + Here's a __ verse. + \repeat unfold 2 { \skip 1 } + } + } + \new Lyrics { + \lyricsto "melody" { + Here's one + \repeat unfold 2 { \skip 1 } + more to sing. + } + } + >> +} +@end lilypond + +繰り返し部分から差し替え部分に延長線やハイフンを描きたいのであれば、@c +それらを手動で挿入する必要があります。@c +差し替え部分から次の部分に延長線やハイフンを描く場合も同様です。 + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \time 2/4 + \new Voice = "melody" { + \relative c'' { + \repeat volta 2 { b4 b ~} + \alternative { { b b } { b \repeatTie c } } + c4 c + } + } + } + \new Lyrics { + \lyricsto "melody" { + Here's a __ verse. + \repeat unfold 2 { \skip 1 } + } + } + \new Lyrics { + \lyricsto "melody" { + Here's "a_" + \skip 1 + "_" sec -- ond one. + } + } + >> +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Keeping contexts alive}, +@ref{Repeats} + + +@node 歌詞のディヴィージ +@unnumberedsubsubsec 歌詞のディヴィージ +@translationof Divisi lyrics + +@cindex divided lyrics (ディヴィージされた歌詞) +@cindex lyrics, divided (ディヴィージされた歌詞) + +ピッチが同じで歌詞とリズムが異なる 2 つのパートがある場合、@c +一時的にメリスマの自動検出を off にして、@c +歌詞の中でのメリスマ指示する手法を用いると適切な場合があります: + +@lilypond[quote,verbatim] +\score { + << + \new Voice = "melody" { + \relative c' { + \set melismaBusyProperties = #'() + \slurDown + \slurDashed + e4 e8 ( e ) c4 c | + \unset melismaBusyProperties + c + } + } + \new Lyrics \lyricsto "melody" { + They shall not o -- ver -- come + } + \new Lyrics \lyricsto "melody" { + We will _ + } + >> +} +@end lilypond + +2 つのパートの音楽と歌詞の両方が異なる場合、@c +2 つの名前付きボイス コンテキストを作成して、@c +それぞれに歌詞を付属させることで、@c +異なる音楽と歌詞として表示させた方が良いかもしれません: + +@lilypond[verbatim,ragged-right,quote] +\score { + << + \new Voice = "melody" { + \relative c' { + << + { + \voiceOne + e4 e8 e + } + \new Voice = "splitpart" { + \voiceTwo + c4 c + } + >> + \oneVoice + c4 c | + c + } + } + \new Lyrics \lyricsto "melody" { + They shall not o -- ver -- come + } + \new Lyrics \lyricsto "splitpart" { + We will + } + >> +} +@end lilypond + + +@node 歌詞の節 +@subsection 歌詞の節 +@translationof Stanzas + +@menu +* 歌詞の節番号を追加する:: +* 歌詞の節に強弱記号を追加する:: +* 歌詞の節に歌手の名前を追加する:: +* リズムが異なる歌詞の節:: +* 歌詞の節を楽譜の終わりに譜刻する:: +* 歌詞の節を楽譜の終わりに複数の列で譜刻する:: +@end menu + + +@node 歌詞の節番号を追加する +@unnumberedsubsubsec 歌詞の節番号を追加する +@translationof Adding stanza numbers + +@cindex stanza number (歌詞番号) + +@code{stanza} を設定することにより、歌詞の節番号を追加することができます。@c +例を挙げます: + +@lilypond[quote,ragged-right,verbatim,relative=2] +\new Voice { + \time 3/4 g2 e4 a2 f4 g2. +} \addlyrics { + \set stanza = #"1. " + Hi, my name is Bert. +} \addlyrics { + \set stanza = #"2. " + Oh, ché -- ri, je t'aime +} +@end lilypond + + +@noindent +これらの番号は歌詞の前に配置されます。 + +@c TODO Create and add snippet to show how two lines of a +@c stanza can be grouped together, along these lines: +@c (might need improving a bit) -td + +@ignore +leftbrace = \markup { \override #'(font-encoding . fetaBraces) \lookup +#"brace105" } + +stanzaOneOne = { + \set stanza = \markup { "1. " \leftbrace } + \lyricmode { Child, you're mine and I love you. + Lend thine ear to what I say. + + } +} + +stanzaOneThree = { +% \set stanza = \markup { " "} + \lyricmode { Child, I have no great -- er joy + Than to have you walk in truth. + + } +} + +\new Voice { + \repeat volta 2 { c'8 c' c' c' c' c' c'4 + c'8 c' c' c' c' c' c'4 } +} \addlyrics { \stanzaOneOne } + \addlyrics { \stanzaOneThree } + +@end ignore + +@node 歌詞の節に強弱記号を追加する +@unnumberedsubsubsec 歌詞の節に強弱記号を追加する +@translationof Adding dynamics marks to stanzas + +歌詞の前に強弱記号を配置することによって、@c +歌詞の音の大きさの違いを示すことができます。@c +LilyPond では、@c +歌詞の前に配置されるものはすべて @code{StanzaNumber} オブジェクトに@c +格納します -- 強弱記号も同じです。@c +技術的な理由により、歌詞の設定を @code{\lyricmode} の外で行う必要があります: + +@lilypond[quote,ragged-right,verbatim] +text = { + \set stanza = \markup { \dynamic "ff" "1. " } + \lyricmode { + Big bang + } +} + +<< + \new Voice = "tune" { + \time 3/4 + g'4 c'2 + } +\new Lyrics \lyricsto "tune" \text +>> +@end lilypond + +@node 歌詞の節に歌手の名前を追加する +@unnumberedsubsubsec 歌詞の節に歌手の名前を追加する +@translationof Adding singers' names to stanzas + +@cindex singer name (歌手名) +@cindex name of singer (歌手の名前) + +歌手の名前を追加することもできます。@c +歌手の名前は、楽器名と同様に、行の先頭に譜刻されます。@c +@code{vocalName} を設定することにより、歌手名を作成します。@c +@code{shortVocalName} として短縮名を入力することができます。 + +@lilypond[ragged-right,quote,verbatim,relative=2] +\new Voice { + \time 3/4 g2 e4 a2 f4 g2. +} \addlyrics { + \set vocalName = #"Bert " + Hi, my name is Bert. +} \addlyrics { + \set vocalName = #"Ernie " + Oh, ché -- ri, je t'aime +} +@end lilypond + +@node リズムが異なる歌詞の節 +@unnumberedsubsubsec リズムが異なる歌詞の節 +@translationof Stanzas with different rhythms + +しばしば、@c +1 つの歌で歌詞の節によって歌詞を旋律に配置する仕方が若干異なる場合があります。@c +そのような変化も @code{\lyricsto} で対応することができます。 + +@subsubheading メリスマを無視する + +歌詞のある節ではメリスマになっているものが、@c +他の節では複数の音節に分かれている場合があります。@c +これを実現するには、複数音節に分かれるボイスはメリスマを無視するようにします。@c +これは Lyrics コンテキストの中で @code{ignoreMelismata} を設定します。 + +@lilypond[verbatim,ragged-right,quote] +<< + \relative c' \new Voice = "lahlah" { + \set Staff.autoBeaming = ##f + c4 + \slurDotted + f8.[( g16]) + a4 + } + \new Lyrics \lyricsto "lahlah" { + more slow -- ly + } + \new Lyrics \lyricsto "lahlah" { + go + \set ignoreMelismata = ##t + fas -- ter + \unset ignoreMelismata + still + } +>> +@end lilypond + +@knownissues +たいていの @code{\set} コマンドとは異なり、@c +@code{\set ignoreMelismata} は前に @code{\once} があると機能しません。@c +メリスマを無視させる歌詞の範囲を +@code{\set} と @code{\unset} で囲む必要があります。 + +@subsubheading 装飾小音符に音節を割り当てる + +@cindex grace notes and lyrics (装飾小音符と歌詞) +@cindex lyrics on grace notes (装飾小音符の歌詞) + +デフォルトでは、@code{\lyricsto} を用いても装飾小音符 (つまり、@code{\grace}) +には音節は割り当てられません。@c +しかしながら、この振る舞いを変更することができます: + +@lilypond[verbatim,ragged-right,quote] +<< + \new Voice = melody \relative c' { + f4 \appoggiatura a32 b4 + \grace { f16[ a16] } b2 + \afterGrace b2 { f16[ a16] } + \appoggiatura a32 b4 + \acciaccatura a8 b4 + } + \new Lyrics + \lyricsto melody { + normal + \set includeGraceNotes = ##t + case, + gra -- ce case, + after -- grace case, + \set ignoreMelismata = ##t + app. case, + acc. case. + } +>> +@end lilypond + +@knownissues +@code{associatedVoice} と同様に、@c +@code{includeGraceNotes} は少なくとも装飾小音符に割り当てる音節よりも前に@c +設定する必要があります。@c +装飾小音符が音楽の始めにある場合は、@c +@code{\with} または @code{\context} ブロックを使うことを検討してください: + +@lilypond[verbatim,ragged-right,quote] +<< + \new Voice = melody \relative c' { + \grace { c16[( d e f] } + g1) f + } + \new Lyrics \with { includeGraceNotes = ##t } + \lyricsto melody { + Ah __ fa + } +>> +@end lilypond + +@subsubheading 代替の旋律に切り替える + +@cindex associatedVoice +@cindex alternative melody, switching to (代替の旋律に切り替える) + +音楽への歌詞の割り当て方をもっと複雑に変化させることができます。@c +@code{associatedVoice} プロパティを設定することで、@c +歌詞の中で歌詞を割り当てる旋律を変更することができます: + +@c KEEP LY +@lilypond[verbatim,quote] +<< + \relative c' \new Voice = "lahlah" { + \set Staff.autoBeaming = ##f + c4 + << + \new Voice = "alternative" { + \voiceOne + \times 2/3 { + % show associations clearly. + \override NoteColumn #'force-hshift = #-3 + f8 f g + } + } + { + \voiceTwo + f8.[ g16] + \oneVoice + } >> + a8( b) c + } + \new Lyrics \lyricsto "lahlah" { + Ju -- ras -- sic Park + } + \new Lyrics \lyricsto "lahlah" { + % トリック: associatedVoice を 1 音節早く設定する必要があります! + \set associatedVoice = "alternative" % "ran" に適用されます + Ty -- + ran -- + no -- + \set associatedVoice = "lahlah" % "rus" に適用されます + sau -- rus Rex + } >> +@end lilypond + +@noindent +歌詞の 1 番のテキストは通常の方法で旋律 @q{lahlah} に割り当てられます。@c +しかしながら、@c +歌詞の 2 番は最初は @code{lahlah} コンテキストに割り当てられていますが、@c +音節 @q{ran} から @q{sau} までの割り当てが旋律 @code{alternative} に@c +切り替わります: + +@example +\set associatedVoice = "alternative" % "ran" に適用されます +Ty -- +ran -- +no -- +\set associatedVoice = "lahlah" % "rus" に適用されます +sau -- rus Rex +@end example + +@noindent +ここで、@c +@code{alternative} は 3 連符を保持している @code{Voice} コンテキストの名前です。 + +@code{\set associatedVoice} コマンドの配置に注意してください +-- 1 音節早く出現していますが、これで正しく機能します。 + +@warning{ +@code{\set associatedVoice} コマンドは、@c +割り当てが新しいボイスに切り替わる音節の前に配置する必要があります。@c +言い換えると、ボイスの変更は予想よりも 1 音節遅く発生します。@c +これは技術的な理由によるものであり、バグではありません。 +} + + +@node 歌詞の節を楽譜の終わりに譜刻する +@unnumberedsubsubsec 歌詞の節を楽譜の終わりに譜刻する +@translationof Printing stanzas at the end + +しばしば、歌詞の 1 番を音楽にセットして、@c +残りを詩の形式で楽譜の終わりに追加する方が適切な場合があります。@c +これは、2 番以降を score ブロックの外の @code{\markup} セクションに@c +追加することで実現できます。@c +@code{\markup} で 2 つの方法で改行していることに注意してください。 + +@lilypond[ragged-right,verbatim,quote] +melody = \relative c' { +e d c d | e e e e | +d d e d | c1 | +} + +text = \lyricmode { +\set stanza = #"1." Ma- ry had a lit- tle lamb, +its fleece was white as snow. +} + +\score{ << + \new Voice = "one" { \melody } + \new Lyrics \lyricsto "one" \text +>> + \layout { } +} +\markup { \column{ + \line{ Verse 2. } + \line{ All the children laughed and played } + \line{ To see a lamb at school. } + } +} +\markup{ + \wordwrap-string #" + Verse 3. + + Mary took it home again, + + It was against the rule." +} +@end lilypond + + +@node 歌詞の節を楽譜の終わりに複数の列で譜刻する +@unnumberedsubsubsec 歌詞の節を楽譜の終わりに複数の列で譜刻する +@translationof Printing stanzas at the end in multiple columns + +歌詞の節が多い場合、ページを複数の列に分けて歌詞を譜刻することがあります。@c +しばしば、歌詞番号を列の外側に置くこともあります。@c +以下の例は、LilyPond でそのような出力を作り出す方法を示しています。 + +@c KEEP LY +@lilypond[ragged-right,quote,verbatim] +melody = \relative c' { + c4 c c c | d d d d +} + +text = \lyricmode { + \set stanza = #"1." This is verse one. + It has two lines. +} + +\score { + << + \new Voice = "one" { \melody } + \new Lyrics \lyricsto "one" \text + >> + \layout { } +} + +\markup { + \fill-line { + \hspace #0.1 % この列を左マージンから離します + % ページが過密な場合はこの設定を削除します + \column { + \line { \bold "2." + \column { + "This is verse two." + "It has two lines." + } + } + \vspace #0.1 % 次の歌詞との間に垂直方向のスペースを入れます + \line { \bold "3." + \column { + "This is verse three." + "It has two lines." + } + } + } + \hspace #0.1 % 列の間に水平方向のスペースを入れます + \column { + \line { \bold "4." + \column { + "This is verse four." + "It has two lines." + } + } + \vspace #0.1 % 次の歌詞との間に垂直方向のスペースを入れます + \line { \bold "5." + \column { + "This is verse five." + "It has two lines." + } + } + } + \hspace #0.1 % 右マージンに追加のスペースを加えます + % ページが過密な場合はこの設定を削除します + } +} +@end lilypond + +@seealso +内部リファレンス: +@rinternals{LyricText}, +@rinternals{StanzaNumber} + + +@node 歌曲 +@subsection 歌曲 +@translationof Songs + +@menu +* 歌曲のためのリファレンス:: +* リード譜:: +@end menu + +@node 歌曲のためのリファレンス +@unnumberedsubsubsec 歌曲のためのリファレンス +@translationof References for songs + +通常、歌曲は 3 つの譜に記譜され、@c +上の譜を歌の旋律、下の 2 つの譜をピアノ伴奏とします。@c +歌詞の 1 番は旋律の譜の直下に譜刻されます。@c +歌詞の節が少しであれば 2 番以降を 1 番の下に譜刻することができます。@c +しかしながら、歌詞の節が多くて収容し難い場合は、@c +2 番以降の歌詞を楽譜の後に独立したテキストとして譜刻します。 + +歌曲を記述するのに必要とされる記譜要素はすべて別の場所で説明しています: + +@itemize + +@item +譜レイアウトを構築する際は、@ref{譜を表示する} を参照してください。 + +@item +ピアノ譜を記述する際は、@ref{キーボードと他の複数譜の楽器} を参照してください。 + +@item +旋律に沿って歌詞を記述する際は、@ref{声楽で共通の記譜法} を参照してください。 + +@item +歌詞を配置する際は、@ref{歌詞の垂直方向の配置} を参照してください。 + +@item +歌詞の節を入力する際は、@ref{歌詞の節} を参照してください。 + +@item +しばしば、歌曲は譜の上にコード ネームを付けて譜刻されます。@c +これは、@ref{和音を表示する} で説明しています。 + +@item +ギター伴奏や他のフレット楽器による伴奏の和音のフレット ダイアグラムを@c +譜刻する際は、@ref{フレットのある弦楽器で共通の記譜法} の +@qq{フレット ダイアグラム マークアップ} を参照してください。 + +@end itemize + +@seealso +学習マニュアル: +@rlearning{Songs} + +記譜法リファレンス: +@ref{Common notation for vocal music}, +@ref{Displaying chords}, +@ref{Displaying staves}, +@ref{Keyboard and other multi-staff instruments}, +@ref{Placing lyrics vertically}, +@ref{Stanzas} + +コード断片集: +@rlsr{Vocal music} + + +@node リード譜 +@unnumberedsubsubsec リード譜 +@translationof Lead sheets + +ボーカル パートと @q{和音モード} を組み合わせることによって、@c +リード譜を譜刻することができます。@c +和音モードの構文についての説明は @ref{和音記譜法} にあります。 + +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{simple-lead-sheet.ly} + +@seealso +記譜法リファレンス: +@ref{Chord notation} + + +@node 合唱 +@subsection 合唱 +@translationof Choral + +@cindex anthems (賛美歌) +@cindex part songs (パート ソング) +@cindex oratorio (聖譚曲) +@cindex SATB (S: ソプラノ、A: アルト、T: テナー、B: バス) + +このセクションでは、合唱との関連が最も強い記譜法について説明します。@c +合唱には、賛美歌、パート ソング、聖譚曲等が含まれます。 + +@menu +* 合唱のためのリファレンス:: +* 合唱のための楽譜レイアウト:: +* ボイスの分割:: +@end menu + +@node 合唱のためのリファレンス +@unnumberedsubsubsec 合唱のためのリファレンス +@translationof References for choral + +通常、合唱は @code{ChoirStaff} グループ内の 2, 3, +あるいは 4 つの譜に記譜します。@c +伴奏が必要であれば、合唱譜の下に @code{PianoStaff} グループを配置します。@c +@emph{アカペラ} であれば、普通は伴奏譜のサイズを小さくします。@c +各ボーカル パートの音符は @code{Voice} コンテキストの中に配置し、@c +各譜は単一のボーカル パート (つまり、1 つの @code{Voice}) +あるいはボーカル パートのペア (つまり、2 つの @code{Voice}) +を受け持ちます。 + +歌詞は @code{Lyrics} コンテキストの中に配置します。@c +各歌詞は対応するの譜の下に配置するか、 +あるいは譜が 2 パートを保持している場合は 1 つを譜の上、@c + +合唱に共通するいくつかのトピックスは別の場所で説明しています: + +@itemize + +@item +SATB (S: ソプラノ、A: アルト、T: テナー、B: バス) ボーカル譜の導入部は@c +学習マニュアルにあります。@c +@rlearning{4 パート SATB ボーカル譜} を参照してください。 + +@item +学習マニュアルには、@c +様々なスタイルの合唱に適したいくつかのテンプレートもあります。@c +@rlearning{合唱} を参照してください。 + +@item +@code{ChoirStaff} と @code{PianoStaff} についての情報は、@c +@ref{譜をグループ化する} を参照してください。 + +@item +セイクリッド ハープや動揺の記譜法で用いられるシェイプ符頭について、@c +@ref{シェイプ符頭} で説明しています。 + +@item +2 つのボーカル パートが 1 つの譜を共有する場合、@c +上のパートの符幹、タイ、スラー等は上向きになり、@c +下のパートは下向きになります。@c +これを実現するには、@code{\voiceOne} と @code{\voiceTwo} を用います。@c +@ref{単一譜の多声} を参照してください。 + +@end itemize + +@predefined +@code{\oneVoice}, +@code{\voiceOne}, +@code{\voiceTwo} + +@seealso +学習マニュアル: +@rlearning{Four-part SATB vocal score}, +@rlearning{Vocal ensembles} + +記譜法リファレンス: +@ref{Context layout order}, +@ref{Grouping staves}, +@ref{Shape note heads}, +@ref{Single-staff polyphony} + +コード断片集: +@rlsr{Vocal music} + +内部リファレンス: +@rinternals{ChoirStaff}, +@rinternals{Lyrics}, +@rinternals{PianoStaff} + + +@node 合唱のための楽譜レイアウト +@unnumberedsubsubsec 合唱のための楽譜レイアウト +@translationof Score layouts for choral + +通常、4 つの譜を保持している合唱のシステムは、@c +ピアノ伴奏があっても無くても、@c +ページ毎に 2 つ配置されます。@c +ページのサイズによっては、@c +これを実現するためにいくつかのデフォルト設定を変更する@c +必要があるかもしれません。@c +以下の設定を考慮する必要があります: + +@itemize + +@item +グローバル譜サイズを変更することで、@c +楽譜の要素全体のサイズを変更することができます。@c +@ref{譜サイズを設定する} を参照してください。 + +@item +システム、譜、それに歌詞の間隔はすべて独立して調節することができます。@c +@ref{垂直方向のスペース} を参照してください。 + +@item +垂直方向のレイアウト変数の値を表示することで、@c +垂直方向のスペースを調節する手助けとすることができます。@c +少ないページに音楽を収めるための方法として、@c +レイアウト変数の表示と他の事柄を @ref{音楽を少ないページに収める} で@c +説明しています。 + +@item +ページ毎のシステム数を 1 から 2 に変更した場合、@c +そのことを示すために@c +慣例として 2 つのシステムの間にシステム セパレータを配置します。@c +@ref{Separating systems} を参照してください。 + +@item +他のページ フォーマット プロパティについての詳細は +@ref{ページ レイアウト} を参照してください。 + +@end itemize + + +強弱記号はデフォルトでは譜の下に配置されます。@c +しかしながら、合唱では歌詞を避けるために、@c +普通は強弱記号を譜の上に配置します。@c +あらかじめ定義されているコマンド @code{\dynamicUp} は +1 つの @code{Voice} コンテキストの強弱記号の配置を譜の上にします。@c +@code{Voice} コンテキストが複数ある場合、@c +このコマンドを各コンテキスト内に配置する必要があります。@c +代替手段として、強弱記号のプロパティを変更することで、 +楽譜全体ですべての強弱記号を対応する譜の上に配置させることができます。@c +以下に方法を示します: + +@lilypond[verbatim,quote] +\score { + \new ChoirStaff << + \new Staff { + \new Voice { + \relative c'' { g4\f g g g } + } + } + \new Staff { + \new Voice { + \relative c' { d4 d d\p d } + } + } + >> + \layout { + \context { + \Score + \override DynamicText #'direction = #UP + \override DynamicLineSpanner #'direction = #UP + } + } +} +@end lilypond + +@predefined +@code{\dynamicUp}, @code{\dynamicDown}, @code{\dynamicNeutral} + +@seealso +記譜法リファレンス: +@ref{Changing spacing}, +@ref{Displaying spacing}, +@ref{Fitting music onto fewer pages}, +@ref{Page layout}, +@ref{Score layout}, +@ref{Separating systems}, +@ref{Setting the staff size}, +@ref{Using an extra voice for breaks}, +@ref{Vertical spacing} + +内部リファレンス: +@rinternals{VerticalAxisGroup}, +@rinternals{StaffGrouper} + + +@node ボイスの分割 +@unnumberedsubsubsec ボイスの分割 +@translationof Divided voices + +@cindex voices, divided (ボイスの分割) + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{using-arpeggiobracket-to-make-divisi-more-visible.ly} + +@seealso +記譜法リファレンス: +@ref{Expressive marks as lines} + + +@node オペラと舞台ミュージカル +@subsection オペラと舞台ミュージカル +@translationof Opera and stage musicals + +通常、オペラや舞台ミュージカルの音楽、歌詞、それに会話は、@c +以下の形式の 1 つまたは複数により構築されます: + +@itemize + +@item +A @emph{指揮譜} はフル オーケストラとボーカル パート、台詞がある場合は@c +台詞の合図を保持します。 + +@item +@emph{オーケストラ パート} はオーケストラやバンドの個々の楽器の音楽を@c +保持します。 + +@item +@emph{ボーカル譜} は全てのボーカル パートとピアノ伴奏を保持します。@c +通常、伴奏はオーケストラの縮小版であり、@c +しばしばオーケストラのオリジナルの楽器名が示されます。@c +ボーカル譜に舞台指示や台詞の合図が含まれることもあります。 + +@item +@emph{ボーカル ブック} はボーカル パートだけを保持します +(伴奏はありません)。@c +台詞の合図が含まれることもあります。 + +@item +@emph{台詞} はミュージカルの台詞と歌詞を保持します。@c +普通は、舞台指示が含まれます。@c +LilyPond で台詞を譜刻することはできますが、台詞には音楽が無いため、@c +他の手段を用いる方が好ましいかもしれません。 + +@end itemize + +オペラや舞台ミュージカルに共通するスタイルの楽譜を作り出すのに@c +必要なトピックスをカバーしているLilyPond ドキュメントのセクションを@c +以下のリファレンスで示します。@c +その後のセクションでオペラや舞台ミュージカルの譜刻に特有の@c +テクニックをカバーします。 + +@menu +* オペラや舞台ミュージカルのためのリファレンス:: +* 役名:: +* 合図:: +* Spoken music:: +* 音楽の中での会話:: +@end menu + +@node オペラや舞台ミュージカルのためのリファレンス +@unnumberedsubsubsec オペラや舞台ミュージカルのためのリファレンス +@translationof References for opera and stage musicals + +@itemize + +@item +指揮譜は多くのグループ化された譜と歌詞を保持します。@c +譜をグループ化する方法は @ref{譜をグループ化する} で説明しています。@c +譜のグループをネストする方法は @ref{ネストされた譜グループ} を参照してください。 + +@item +指揮譜とボーカル譜では、空の譜の譜刻を抑制することがあります。@c +そのような @qq{Frenched score} を作成する方法は +@ref{譜を隠す} を参照してください。 + +@item +オーケストラ パートを記述する方法は +@ref{パートを記述する} でカバーしています。@c +オーケストラの楽器編成によっては、@c +専門的な記譜法の他のセクションも関係するかもしれません。@c +多くの楽器は移調楽器です -- @ref{楽器の移調} を参照してください。 + +@item +ページのシステム数をページ毎に変える場合、@c +慣習的にシステムの間にシステム分離記号を配置します。@c +@ref{Separating systems} を参照してください。 + +@item +他のページ フォーマット プロパティの詳細は +@ref{ページ レイアウト} を参照してください。 + +@item +台詞の合図、舞台指示、それに脚注を挿入することができます +-- @ref{Creating footnotes} と @ref{テキスト} を参照してください。@c +2 つの @code{\score} の間に独立したセクションとして詳細な舞台指示を@c +追加することもできます -- @ref{独立したテキスト} を参照してください。 + +@end itemize + +@seealso +音楽用語集: +@rglos{Frenched score}, +@rglos{Frenched staves}, +@rglos{transposing instrument} + +記譜法リファレンス: +@ref{Creating footnotes}, +@ref{Grouping staves}, +@ref{Hiding staves}, +@ref{Instrument transpositions}, +@ref{Nested staff groups}, +@ref{Page layout}, +@ref{Separating systems}, +@ref{Transpose}, +@ref{Writing parts}, +@ref{Writing text} + +コード断片集: +@rlsr{Vocal music} + + +@node 役名 +@unnumberedsubsubsec 役名 +@translationof Character names + +@cindex character names (役名) +@cindex names, character (役名) + +通常、1 つの役に割り当てられている譜には左側に役名を示します: + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new Staff { + \set Staff.vocalName = \markup \smallCaps Kaspar + \set Staff.shortVocalName = \markup \smallCaps Kas. + \relative c' { + \clef "G_8" + c4 c c c + \break + c4 c c c + } + } + \new Staff { + \set Staff.vocalName = \markup \smallCaps Melchior + \set Staff.shortVocalName = \markup \smallCaps Mel + \clef "bass" + \relative c' { + a4 a a a + a4 a a a + } + } + >> +} +@end lilypond + +複数の役が 1 つの譜を共有する場合、@c +それぞれの役に適用されるセクションの開始時に、その役名を譜の上に譜刻します。 +これは、マークアップで実現できます。@c +しばしば、この目的のために専用のフォントを用います。 + +@lilypond[quote,verbatim,relative=1] +\clef "G_8" +c4^\markup \fontsize #1 \smallCaps Kaspar +c c c +\clef "bass" +a4^\markup \fontsize #1 \smallCaps Melchior +a a a +\clef "G_8" +c4^\markup \fontsize #1 \smallCaps Kaspar +c c c +@end lilypond + +役の入れ替えが頻繁にある場合、@c +最上位階層でそれぞれの役に対して @qq{楽器} 定義をセットアップして、@c +役の入れ替えを @code{\instrumentSwitch} を用いて示す方が簡単かもしれません。 + +@lilypond[quote,verbatim] +\addInstrumentDefinition #"kaspar" + #`((instrumentTransposition . ,(ly:make-pitch -1 0 0)) + (shortInstrumentName . "Kas.") + (clefGlyph . "clefs.G") + (clefOctavation . -7) + (middleCPosition . 1) + (clefPosition . -2) + (instrumentCueName . ,(markup #:fontsize 1 #:smallCaps "Kaspar")) + (midiInstrument . "voice oohs")) + +\addInstrumentDefinition #"melchior" + #`((instrumentTransposition . ,(ly:make-pitch 0 0 0)) + (shortInstrumentName . "Mel.") + (clefGlyph . "clefs.F") + (clefOctavation . 0) + (middleCPosition . 6) + (clefPosition . 2) + (instrumentCueName . ,(markup #:fontsize 1 #:smallCaps "Melchior")) + (midiInstrument . "voice aahs")) + +\relative c' { + \instrumentSwitch "kaspar" + c4 c c c + \instrumentSwitch "melchior" + a4 a a a + \instrumentSwitch "kaspar" + c4 c c c +} +@end lilypond + +@seealso +記譜法リファレンス: +@ref{Instrument names}, +@ref{Scheme functions}, +@ref{Text}, +@ref{Text markup commands} + +LilyPond の拡張: +@rextend{Markup construction in Scheme} + + +@node 合図 +@unnumberedsubsubsec 合図 +@translationof Musical cues + +@cindex musical cues (合図) +@cindex cues, musical (合図) + +入りの直前にある他のパートの音楽を示すため、@c +合図をボーカル譜、ボーカル ブック、それにオーケストラ パートに@c +挿入することができます。@c +さらに、合図はボーカル譜のピアノ伴奏にもしばしば挿入され、@c +どのオーケストラ楽器が演奏されるのかを示します。@c +これはフルの指揮譜を使用できない場合に、指揮者の助けとなります。 + +合図を挿入する基本的な仕組みはメインのテキストで完全に説明しています +-- @ref{他のボイスを引用する} と @ref{テキストをフォーマットする} を@c +参照してください。@c +しかしながら、多くの合図を挿入する必要がある場合 +-- 例えば、ボーカル譜のピアノ伴奏に楽器名を入れる場合、@c +楽器名を合図音符の直前に注意深く配置する必要があります。@c +以下の例は、これを実現する方法を示しています。 + +@c KEEP LY +@lilypond[quote,verbatim] +flute = \relative c'' { + s4 s4 e g +} +\addQuote "flute" { \flute } + +pianoRH = \relative c'' { + c4. g8 + % 合図音符の楽器名を、合図音符の直前、かつ譜の上に配置します + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \set instrumentCueName = "Flute" + } + \cueDuring "flute" #UP { g4 bes4 } +} +pianoLH = \relative c { c4 e, } + +\score { + \new PianoStaff << + \new Staff { + \pianoRH + } + \new Staff { + \clef "bass" + \pianoLH + } + >> +} +@end lilypond + +移調楽器が引用される場合、@c +その楽器の合図音符が自動的に変換されるよう、@c +楽器パートでキーを指定しておく必要があります。@c +以下の例は B-フラットのクラリネットの移調を示しています。@c +この例では合図音符は譜の下方に配置されるため、@c +@code{\cueDuring} の中で @code{DOWN} を指定し +(これにより、符幹が下向きになります)、@c +楽器名を譜の下に配置しています。@c +ピアノの右手のボイスを明示的に宣言していることにも注意してください。@c +これは、この例の合図音符は最初の小節の先頭から始まるため、@c +明示的に宣言しないとピアノの右手のボイス全体が +@code{CueVoice} コンテキストの中に配置されてしまうからです。 + +@c KEEP LY +@lilypond[quote,verbatim] +clarinet = \relative c' { + \transposition bes + fis4 d d c +} +\addQuote "clarinet" { \clarinet } + +pianoRH = \relative c'' { + \transposition c' + % 合図音符の楽器名を譜の下に配置します + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \override InstrumentSwitch #'direction = #DOWN + \set instrumentCueName = "Clar." + } + \cueDuring "clarinet" #DOWN { c4. g8 } + g4 bes4 +} +pianoLH = \relative c { c4 e, } + +\score { + << + \new PianoStaff << + \new Staff { + \new Voice { + \pianoRH + } + } + \new Staff { + \clef "bass" + \pianoLH + } + >> + >> +} +@end lilypond + +上記の 2 例から、ボーカル譜に多くの合図を挿入することは退屈な作業で、@c +入力ファイルでピアノ パートの音符が不明瞭になることは明白です。@c +しかしながら、以下のコード断片で示すように、@c +タイピングを減らして、ピアノの音符を明瞭にする音楽関数を定義することが可能です。 + +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{adding-orchestral-cues-to-a-vocal-score.ly} + +@seealso +音楽用語集: +@rglos{cue-notes} + +記譜法リファレンス: +@ref{オブジェクトを揃える}, +@ref{向きと配置}, +@ref{合図音符をフォーマットする}, +@ref{他のボイスを引用する}, +@ref{音楽関数を使用する} + +コード断片集: +@rlsr{Vocal music} + +内部リファレンス: +@rinternals{InstrumentSwitch}, +@rinternals{CueVoice} + +@knownissues +@code{\cueDuring} は自動的に @code{CueVoice} コンテキストを挿入し、@c +すべての合図音符がこのコンテキストの中に配置されます。@c +このことは、この方法では 1 つの合図音符の途中には@c +他の合図音符を挿入することはできないということを意味します。@c +これを行うには、@c +別々の @code{CueVoice} コンテキストを明示的に宣言して、@c +合図音符の抽出と挿入に @code{\quoteDuring} を用います。 + +@c 未訳 +@node Spoken music +@unnumberedsubsubsec Spoken music +@translationof Spoken music + +@cindex parlato +@cindex Sprechgesang + +@q{parlato} や @q{Sprechgesang} などのエフェクトは、@c +演者にピッチを持たずに、しかしながらリズムを持ちながら話すことを要求します。@c +これは、@ref{特殊な符頭} で示すように、×の符頭で記譜します。 + +@c TODO add "marking-notes-on-spoken-parts" snippet -vv +@c add "showing the rhythm of a melody" snip +@c add "one staff-line notation" +@c add "improvisation" ref +@c add "lyrics independents of notes" ref + +@node 音楽の中での会話 +@unnumberedsubsubsec 音楽の中での会話 +@translationof Dialogue over music + +通常、音楽の中での会話は譜の上にイタリック体で譜刻され、@c +各フレーズの開始は特定の音楽イベントに紐付けられます。 + +短いフレーズであれば、単純なマークアップ接尾辞を用います。 + +@lilypond[quote,verbatim,relative=2] +a4^\markup { \smallCaps { Alex - } \italic { He's gone } } a a a +a4 a a^\markup { \smallCaps { Bethan - } \italic Where? } a +a4 a a a +@end lilypond + +長いフレーズの場合は、@c +フレーズをきちんと収められるよう楽譜を拡張する必要があるかもしれません。 +LilyPond はこれを完全に自動的に行う機能を備えておらず、@c +ページをレイアウトするために何らかの手作業が必要です。 + +密に詰め込まれた長い会話を持つフレーズやパッセージでは、@c +Lyrics コンテキストを用いると良い結果を得られます。@c +この Lryics コンテキストをボイスに関連付けすべきではなく、@c +代わりに会話の各セクションの演奏時間を明示的に指定します。@c +会話にずれがある場合、@c +会話から最後の言葉を分離させて、それぞれに演奏時間を割り当てることで、@c +下の音楽に対してスムーズに配置されます。 + +会話が複数行に広がる場合、手動で @code{\break} を挿入して、@c +右マージンが不足しないよう会話の配置を調節する必要があります。@c +各行の最終小節に配置される最後の単語も上記と同様に分離させる必要があります。 + +ここで、これまで述べてきたことを行う例を挙げます: + +@c This should be a snippet, but it can't be as it needs to be +@c manually adjusted to suit the imposed line length. -td + +@lilypond[quote,verbatim,ragged-right] +music = \relative c'' { + \repeat unfold 3 { a4 a a a } +} + +dialogue = \lyricmode { + \markup { + \fontsize #1 \upright \smallCaps Abe: + "Say this over measures one and" + }4*7 + "two"4 | + \break + "and this over measure"4*3 + "three"4 | +} + +\score { + << + \new Lyrics \with { + \override LyricText #'font-shape = #'italic + \override LyricText #'self-alignment-X = #LEFT + } + { \dialogue } + \new Staff { + \new Voice { \music } + } + >> +} +@end lilypond + +@c TODO show use of \column to produce dialogue on two lines + +@seealso +記譜法リファレンス: +@ref{歌詞音節の手動演奏時間}, +@ref{テキスト} + +内部リファレンス: +@rinternals{LyricText} + + +@node 聖歌と賛美歌 +@subsection 聖歌と賛美歌 +@translationof Chants psalms and hymns + +@cindex chants (詠唱) +@cindex psalms (聖歌) +@cindex hymns (賛美歌) +@cindex religious music (宗教音楽) + +通常、詠唱、聖歌、それに賛美歌の音楽と言葉は@c +特定の教会で確立されたフォーマットに従います。@c +教会毎にフォーマットが異なりますが、@c +発生する譜刻の問題は概して共通していて、このセクションでカバーします。 + +@menu +* 聖歌と賛美歌のためのリファレンス:: +* 聖歌を設定する:: +* 賛美歌を配置する:: +* 賛美歌での部分小節:: +@end menu + +@node 聖歌と賛美歌のためのリファレンス +@unnumberedsubsubsec 聖歌と賛美歌のためのリファレンス +@translationof References for chants and psalms + +グレゴリオ聖歌を様々なスタイルの古代記譜法で譜刻する方法を +@ref{Ancient notation} で説明しています。 + +@seealso +記譜法リファレンス: +@ref{Ancient notation} + +コード断片集: +@rlsr{Vocal music} + + +@node 聖歌を設定する +@unnumberedsubsubsec 聖歌を設定する +@translationof Setting a chant + +現代の聖歌のための設定では、@c +種々の古代記譜法の要素を加えた現代の記譜法を用います。@c +考慮すべき要素や手法のいくつかを以下で示します。 + +聖歌ではしばしば、符幹の無い 4 分音符でピッチを示します。@c +リズムは単語の音声リズムから取ります。 + +@lilypond[verbatim,quote] +stemOff = { \override Staff.Stem #'transparent = ##t } + +\relative c' { + \stemOff + a'4 b c2 | +} + +@end lilypond + +聖歌ではしばしば小節線を省略したり、@c +短い小節線や点線の小節線を用いて音楽の一時停止を示したりします。@c +譜の小節線をすべて省略するには、小節線エングラーバを完全に削除します: + +@lilypond[verbatim,quote] +\score { + \new StaffGroup << + \new Staff { + \relative c'' { + a4 b c2 | + a4 b c2 | + a4 b c2 | + } + } + \new Staff { + \relative c'' { + a4 b c2 | + a4 b c2 | + a4 b c2 | + } + } + >> + \layout { + \context { + \Staff + \remove Bar_engraver + } + } +} +@end lilypond + +譜毎に小節線を削除することもできます: + +@lilypond[verbatim, quote] +\score { + \new ChoirStaff << + \new Staff + \with { \remove Bar_engraver } { + \relative c'' { + a4 b c2 | + a4 b c2 | + a4 b c2 | + } + } + \new Staff { + \relative c'' { + a4 b c2 | + a4 b c2 | + a4 b c2 | + } + } + >> +} +@end lilypond + +譜の一部の小節線だけを削除するには、@c +その部分を即興 (カデンツァ) として扱います。@c +小節線を削除する範囲が長い場合、@c +改行位置を示すためにダミーの小節線 @code{\bar ""} を挿入する必要が@c +あるかもしれません。 + +@lilypond[verbatim,quote,relative=2] +a4 b c2 | +\cadenzaOn +a4 b c2 +a4 b c2 +\bar "" +a4 b c2 +a4 b c2 +\cadenzaOff +a4 b c2 | +a4 b c2 | +@end lilypond + +小節線を変更することによって、聖歌の休止や一時停止を示すことができます。 + +@lilypond[verbatim, quote,relative=2] +a4 +\cadenzaOn +b c2 +a4 b c2 +\bar "'" +a4 b c2 +a4 b c2 +\bar ":" +a4 b c2 +\bar "dashed" +a4 b c2 +\bar "||" +@end lilypond + +現代の記譜法を用いながらも、@c +休止や一時停止にグレゴリオ聖歌で用いられる記譜法を用いる場合もあります。@c +これには @code{\breathe} 記号を変更して使います: + +@lilypond[verbatim,quote] +divisioMinima = { + \once \override BreathingSign #'stencil = #ly:breathing-sign::divisio-minima + \once \override BreathingSign #'Y-offset = #0 + \breathe +} +divisioMaior = { + \once \override BreathingSign #'stencil = #ly:breathing-sign::divisio-maior + \once \override BreathingSign #'Y-offset = #0 + \breathe +} +divisioMaxima = { + \once \override BreathingSign #'stencil = #ly:breathing-sign::divisio-maxima + \once \override BreathingSign #'Y-offset = #0 + \breathe +} +finalis = { + \once \override BreathingSign #'stencil = #ly:breathing-sign::finalis + \once \override BreathingSign #'Y-offset = #0 + \breathe +} + +\score { + \relative c'' { + g2 a4 g + \divisioMinima + g2 a4 g + \divisioMaior + g2 a4 g + \divisioMaxima + g2 a4 g + \finalis + } + \layout { + \context { + \Staff + \remove Bar_engraver + } + } +} +@end lilypond + +聖歌は通常、拍子記号を省略し、しばしば音部記号も省略します。 + +@lilypond[verbatim,quote] +\score { + \new Staff { + \relative c'' { + a4 b c2 | + a4 b c2 | + a4 b c2 | + } + } + \layout { + \context { + \Staff + \remove Bar_engraver + \remove Time_signature_engraver + \remove Clef_engraver + } + } +} +@end lilypond + +通常、英国教会の伝統的な聖歌は @emph{シングル} -- 7 小節の音楽 -- か、@c +@emph{ダブル} -- 7 小節の音楽を 2 組 -- のどちらかです。@c +歌詞の各節が半分に分けられるのに対応して、@c +7 小節の各グループは半分に分けられ、通常は 2 重小節線で区切られます。@c +使われる音符は全音符と半音符だけです。@c +半分に分けられたグループの最初の小節は常に全音符の和音を保持します。@c +これが @qq{主要音} です。@c +通常、聖歌はページの中央に配置されます。 + +@c KEEP LY +@lilypond[verbatim,quote] +SopranoMusic = \relative g' { + g1 | c2 b | a1 | \bar "||" + a1 | d2 c | c b | c1 | \bar "||" +} + +AltoMusic = \relative c' { + e1 | g2 g | f1 | + f1 | f2 e | d d | e1 | +} + +TenorMusic = \relative a { + c1 | c2 c | c1 | + d1 | g,2 g | g g | g1 | +} + +BassMusic = \relative c { + c1 | e2 e | f1 | + d1 | b2 c | g' g | c,1 | +} + +global = { + \time 2/2 +} + +% マークアップを使って聖歌をページの中央に配置します +\markup { + \fill-line { + \score { % 中央揃え + << + \new ChoirStaff << + \new Staff << + \global + \clef "treble" + \new Voice = "Soprano" << + \voiceOne + \SopranoMusic + >> + \new Voice = "Alto" << + \voiceTwo + \AltoMusic + >> + >> + \new Staff << + \clef "bass" + \global + \new Voice = "Tenor" << + \voiceOne + \TenorMusic + >> + \new Voice = "Bass" << + \voiceTwo + \BassMusic + >> + >> + >> + >> + \layout { + \context { + \Score + \override SpacingSpanner + #'base-shortest-duration = #(ly:make-moment 1 2) + } + \context { + \Staff + \remove "Time_signature_engraver" + } + } + } % score の終わり + } +} % markup の終わり +@end lilypond + +このような聖歌を設定するための他のアプローチを以下の最初のコード断片で示します。 + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{chant-or-psalms-notation.ly} + +雅歌や他の典礼書の設定はもっと自由度が高く、@c +古代音楽の記譜要素を使うかもしれません。@c +しばしば単語を譜の下に音符に揃えて配置します。@c +そのような場合、音符の間隔を音符の演奏時間ではなく、音節に合わせます。 + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{ancient-notation-template----modern-transcription-of-gregorian-music.ly} + +@seealso +学習マニュアル: +@rlearning{オブジェクトの可視性と色}, +@rlearning{合唱} + +記譜法リファレンス: +@ref{Ancient notation}, +@ref{小節線}, +@ref{コンテキストのプラグインを変更する}, +@ref{Typesetting Gregorian chant}, +@ref{無韻律の音楽}, +@ref{オブジェクトの可視性} + + +@node 賛美歌を配置する +@unnumberedsubsubsec 賛美歌を配置する +@translationof Pointing a psalm + +通常、英国教会の聖歌の歌詞は曲とは別に楽譜の下の中央に譜刻されます。 + +シングルの聖歌 (7 小節) は歌詞の節毎に繰り返されます。@c +ダブルの聖歌 (14 小節) は歌詞の節のペア毎に繰り返されます。@c +歌詞をどのように聖歌に当てはめるかを示すために記号が挿入されます。@c +歌詞の各節は 2 つに分割されます。@c +通常、この分割を示すためにコロンが用いられます。@c +これは楽譜の 2 重小節線に対応します。@c +コロンの前にある歌詞は楽譜の最初の 3 小節で歌われ、@c +コロンの後にある歌詞は次の 4 小節で歌われます。 + +楽譜の小節線に対応して、歌詞に単線の小節線 +(あるいはカンマを逆さまにしたような記号) が挿入されます。@c +マークアップ モードでは、@c +小節線を小節チェック記号 @code{|} で挿入することができます。 + +@lilypond[verbatim,quote] +\markup { + \fill-line { + \column { + \left-align { + \line { O come let us sing | unto the | Lord : let } + \line { us heartily rejoice in the | strength of | our } + \line { sal- | -vation. } + } + } + } +} +@end lilypond + +@code{fetaMusic} フォントの図柄を必要とする記号があるかもしれません。@c +詳細は @ref{Fonts} を参照してください。 + +@lilypond[verbatim,quote] +tick = \markup { + \raise #1 \fontsize #-5 \musicglyph #"scripts.rvarcomma" +} +\markup { + \fill-line { + \column { + \left-align { + \line { O come let us sing \tick unto the \tick Lord : let } + \line { + us heartily rejoice in the \tick strength of \tick our + } + \line { sal \tick vation. } + } + } + } +} +@end lilypond + +1 小節に 1 つの全音符が配置されている場合、@c +その小節に対応する歌詞は音読のリズムで朗読されます。@c +1 小節に 2 つの音符が配置されている場合、@c +普通はそれに対応する歌詞には 1 つまたは 2 つの音節しかありません。@c +3 以上の音節がある場合、@c +普通は音符が変わる場所を示すためにドット (中黒) が挿入されます。 + +@lilypond[verbatim,quote] +dot = \markup { + \raise #0.7 \musicglyph #"dots.dot" +} +tick = \markup { + \raise #1 \fontsize #-5 \musicglyph #"scripts.rvarcomma" +} +\markup { + \fill-line { + \column { + \left-align { + \line { + O come let us sing \tick unto \dot the \tick Lord : let + } + \line { + us heartily rejoice in the \tick strength of \tick our + } + \line { sal \tick vation. } + } + } + } +} +@end lilypond + +聖歌の中には朗読セクションの終わりを示すために@c +カンマの代わりにアスタリスクを用いて、@c +強調したり長く伸ばしたりする音節をボールド体で示すものがあります。@c + +@lilypond[verbatim,quote] +dot = \markup { + \raise #0.7 \musicglyph #"dots.dot" +} +tick = \markup { + \raise #1 \fontsize #-5 \musicglyph #"scripts.rvarcomma" +} +\markup { + \fill-line { + \column { + \left-align { + \line { Today if ye will hear his voice * } + \line { + \concat { \bold hard en } + | not your | hearts : as in the pro- + } + \line { vocation * and as in the \bold day of tempt- | } + \line { -ation | in the | wilderness. } + } + } + } +} +@end lilypond + +また、強調する音節の上にアクセント記号を配置する聖歌もあります。 + +@lilypond[verbatim,quote] +tick = \markup { + \raise #2 \fontsize #-5 \musicglyph #"scripts.rvarcomma" +} +\markup { + \fill-line { + \column { + \left-align { + \line { + O come let us \concat { + si \combine \tick ng + } + | unto the | Lord : let + } + \line { + us heartily \concat { + rejo \combine \tick ice + } + in the | strength of | our + } + \line { sal- | -vation. } + } + } + } +} +@end lilypond + +マークアップを使用してテキストを中央に配置し、@c +テキスト行をいくつかの列に配列する方法は、@c +@ref{テキストをフォーマットする} で説明しています。 + +これらの要素のほとんどをテンプレートの歌詞で示しています。@c +@rlearning{合唱} の中の @qq{賛美歌} を参照してください。 + +@seealso +学習マニュアル: +@rlearning{合唱} + +記譜法リファレンス: +@ref{Fonts}, +@ref{テキストをフォーマットする} + + +@node 賛美歌での部分小節 +@unnumberedsubsubsec 賛美歌での部分小節 +@translationof Partial measures in hymn tunes + +しばしば、賛美歌は各行の始めと終わりを部分小節として、@c +楽譜の各行がテキストの各行にうまく対応させます。@c +これを行うには音楽の始めに @code{\partial} コマンドを配置して、@c +各行の終わりに @code{\bar "|"} または @code{\bar "||"} を配置する必要が@c +あります。 + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{hymn-template.ly} + + +@node 古代の声楽 +@subsection 古代の声楽 +@translationof Ancient vocal music + +古代の声楽がサポートされます。@c +@ref{Ancient notation} で説明しています。 + +@c TODO + +@c Add "Printing both the ancient and the modern clef in vocal music" snippet, +@c and "Transcription of Ancient music with incipit" snippet. -vv + +@seealso +記譜法リファレンス: +@ref{Ancient notation} diff --git a/Documentation/ja/notation/wind.itely b/Documentation/ja/notation/wind.itely new file mode 100644 index 0000000000..cd9dea6eff --- /dev/null +++ b/Documentation/ja/notation/wind.itely @@ -0,0 +1,449 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 + + 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.16.0" + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + +@node 管楽器 +@section 管楽器 +@translationof Wind instruments + +@lilypondfile[quote]{wind-headword.ly} + +このセクションでは管楽器の楽譜を記述する際に現れる記譜要素について説明します。 + +@menu +* 管楽器で共通の記譜法:: +* バグパイプ:: +* 木管楽器:: +@end menu + +@node 管楽器で共通の記譜法 +@subsection 管楽器で共通の記譜法 +@translationof Common notation for wind instruments + +このセクションでは多くの管楽器で共通の記譜法について説明します。 + +@menu +* 管楽器のためのリファレンス:: +* 運指:: +@end menu + +@node 管楽器のためのリファレンス +@unnumberedsubsubsec 管楽器のためのリファレンス +@translationof References for wind instruments + +@cindex wind instruments (管楽器) + +管楽器のための多くの記譜の問題は、ブレスとタンギングに関係します: + +@itemize +@item ブレスは休符や @ref{ブレス記号} によって示すことができます。 +@item レガート奏法は @ref{スラー} で示します。 +@item タンギングの種類 -- レガートからノンレガート、スタッカートまでの範囲 -- +は、通常、アーティキュレーション記号で示し、@c +スラーと組み合わせる場合もあります。@c +@ref{アーティキュレーションと装飾} と breathing を参照してください。 +@item フラッター タンギングは、通常、音符の上にトレモロ記号と@c +テキスト マークアップを配置して示します。@c +@ref{トレモロの繰り返し} を参照してください。 +@end itemize + +他の記譜要素を管楽器に適用することができます: + +@itemize +@item 多くの管楽器は移調楽器です。@ref{楽器の移調} を参照してください。 +@item スライド グリッサンドはトロンボーンの特徴ですが、@c +他の管楽器でもキーやバルブのグリッサンドを演奏できます。@c +@ref{グリッサンド} を参照してください。 +@item ハーモニック シリーズ (倍音連鎖) のグリッサンド +-- これは、全ての金管楽器で可能ですが、フレンチ ホルンでよく使われます -- +は、通常、@ref{装飾小音符} として記述します。 +@item 音符の終わりでのピッチの変化は @ref{Fall と Doit} で説明しています。 +@item キー スラップとバルブ スラップはしばしば @ref{特殊な符頭} の +@code{cross} スタイルで示します。 +@item 木管楽器は低い音符をオーバーブローして、@c +ハーモニクスを鳴らすことができます。@c +これは @code{flageolet} アーティキュレーションによって示します。@c +@ref{List of articulations} を参照してください。 +@item 金管楽器のミュートは通常、テキスト マークアップで示しますが、@c +頻繁に変更する場合は、@c +@code{stopped} アーティキュレーションと @code{open} アーティキュレーションを@c +使う方が良いでしょう。@c +@ref{アーティキュレーションと装飾} と @ref{List of articulations} を@c +参照してください。 +@item ホルンのストップット (閉塞音) は @code{stopped} アーティキュレーションで@c +示します。@c +@ref{アーティキュレーションと装飾} を参照してください。 +@end itemize + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing--flageolet-mark-size.ly} + +@seealso +記譜法リファレンス: +@ref{Breath marks}, +@ref{Slurs}, +@ref{Articulations and ornamentations}, +@ref{List of articulations}, +@ref{Tremolo repeats}, +@ref{Instrument transpositions}, +@ref{Glissando}, +@ref{Grace notes}, +@ref{Falls and doits}, +@ref{Special note heads} + +コード断片集: +@rlsr{Winds} + + +@node 運指 +@unnumberedsubsubsec 運指 +@translationof Fingerings + +トロンボーン以外の管楽器は各ピッチを鳴らすために@c +いくつかの指を使う必要があります。@c +以下でいくつかの運指の例を示します。 + +木管楽器のダイアグラムを作り出すことができます。@c +@ref{木管楽器のダイアグラム} で説明します。 + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{fingering-symbols-for-wind-instruments.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{recorder-fingering-chart.ly} + +@seealso +記譜法リファレンス: +@ref{Woodwind diagrams} + +コード断片集: +@rlsr{Winds} + + +@node バグパイプ +@subsection バグパイプ +@translationof Bagpipes + +このセクションではバグパイプで共通の記譜法について説明します。 + +@menu +* バグパイプの定義:: +* バグパイプの例:: +@end menu + +@node バグパイプの定義 +@unnumberedsubsubsec バグパイプの定義 +@translationof Bagpipe definitions + +@cindex bagpipe (バグパイプ) +@cindex Scottish highland bagpipe (スコティッシュ ハイランド バグパイプ) +@cindex grace notes (装飾小音符) +@funindex \taor +@funindex taor +@funindex \hideKeySignature +@funindex hideKeySignature +@funindex \showKeySignature +@funindex showKeySignature + +LilyPond はスコティッシュ、ハイランド バグパイプ音楽のための特殊な定義を@c +保持しています。@c +この定義を使うには、入力ファイルの先頭に以下を付け加えます: + +@example +\include "bagpipe.ly" +@end example + +@noindent +これにより、バグパイプ音楽で共通の特殊な装飾小音符を@c +短いコマンドで付け加えられるようになります。@c +例えば、以下を @code{\taor} と記述することができます: + +@example +\grace @{ \small G32[ d G e] @} +@end example + +さらに、@file{bagpipe.ly} はバグパイプ音符のために、@c +適切なオクターブのピッチ定義を保持しています。@c +そのため、@code{\relative} や @code{\transpose} について@c +配慮する必要はありません。 + +@lilypond[ragged-right,verbatim,quote,notime] +\include "bagpipe.ly" +{ \grg G4 \grg a \grg b \grg c \grg d \grg e \grg f \grA g A } +@end lilypond + +通常、バグパイプ音楽は D メジャーの調を使います +(実際にはその調ではない場合であってもです)。@c +しかしながら、使える調は D メジャーだけであるため、@c +通常は調号を記譜しません。@c +調号を記譜しないために、楽譜を @code{\hideKeySignature} で始めます。@c +何らかの理由で調号を記譜したい場合は、@c +代わりに @code{\showKeySignature} を使います。 + +現代音楽のなかには、@c +C と F をフラットにするためクロス フィンガリングを使うものがあります。@c +これは @code{cflat} や @code{fflat} で示すことができます。@c +同様に、軽音楽のピブロホ ハイ G (piobaireachd high g) は、@c +@code{gflat} で示すことができます。 + +@seealso +コード断片集: +@rlsr{Winds} + + +@node バグパイプの例 +@unnumberedsubsubsec バグパイプの例 +@translationof Bagpipe example + +@cindex bagpipe example (バグパイプの例) +@cindex Amazing Grace bagpipe example (アメージング グレースのバグパイプの例) + +以下の例は、有名なアメージング グレースをバグパイプ記譜法にしたものです。 + +@lilypond[verbatim,quote] +\include "bagpipe.ly" +\layout { + indent = 0.0\cm + \context { \Score \remove "Bar_number_engraver" } +} + +\header { + title = "Amazing Grace" + meter = "Hymn" + arranger = "Trad. arr." +} + +{ + \hideKeySignature + \time 3/4 + \grg \partial 4 a8. d16 + \slurd d2 \grg f8[ e32 d16.] + \grg f2 \grg f8 e + \thrwd d2 \grg b4 + \grG a2 \grg a8. d16 + \slurd d2 \grg f8[ e32 d16.] + \grg f2 \grg e8. f16 + \dblA A2 \grg A4 + \grg A2 f8. A16 + \grg A2 \hdblf f8[ e32 d16.] + \grg f2 \grg f8 e + \thrwd d2 \grg b4 + \grG a2 \grg a8. d16 + \slurd d2 \grg f8[ e32 d16.] + \grg f2 e4 + \thrwd d2. + \slurd d2 + \bar "|." +} +@end lilypond + +@seealso +コード断片集: +@rlsr{Winds} + +@node 木管楽器 +@subsection 木管楽器 +@translationof Woodwinds + +このセクションでは木管楽器に特有の記譜法について説明します。 + +@menu +* 木管楽器のダイアグラム:: +@end menu + +@node 木管楽器のダイアグラム +@subsubsection 木管楽器のダイアグラム +@translationof Woodwind diagrams + +木管楽器のダイアグラムで特定の音符で使用する運指を示すことができ、@c +以下の楽器のダイアグラムが利用可能です: + +@itemize +@item ピッコロ +@item フルート +@item オーボエ +@item クラリネット +@item バス クラリネット +@item サクソフォン +@item バスーン +@item コントラバスーン +@end itemize + +@noindent +木管楽器のダイアグラムはマークアップとして作成します: + + +@lilypond[verbatim,quote,relative=2] +c1^\markup { + \woodwind-diagram #'piccolo #'((lh . (gis)) + (cc . (one three)) + (rh . (ees))) +} +@end lilypond + +キーはオープン、途中まで閉じる、リング キーを閉じる、または完全に閉じることが@c +できます: + +@c KEEP LY +@lilypond[verbatim,quote,relative=2] +\textLengthOn +c1^\markup { + \center-column { + "1/4 閉じる" + \woodwind-diagram #'flute #'((cc . (one1q)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "1/2閉じる" + \woodwind-diagram #'flute #'((cc . (one1h)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "3/4閉じる" + \woodwind-diagram #'flute #'((cc . (one3q)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "リング キーを閉じる" + \woodwind-diagram #'flute #'((cc . (oneR)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "完全に閉じる" + \woodwind-diagram #'flute #'((cc . (oneF two)) + (lh . ()) + (rh . ())) + } +} +@end lilypond + +トリルはグレーで示します: + +@lilypond[verbatim,quote,relative=2] +c1^\markup { + \woodwind-diagram #'bass-clarinet + #'((cc . (threeT four)) + (lh . ()) + (rh . (b fis))) +} +@end lilypond + +様々なトリルを表示させることができます: + +@c KEEP LY +@lilypond[verbatim,quote,relative=2] +\textLengthOn +c1^\markup { + \center-column { + "1/4 閉じるとリング キーを閉じる" + \woodwind-diagram #'flute #'((cc . (one1qTR)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "リング キーを閉じると完全に閉じる" + \woodwind-diagram #'flute #'((cc . (oneTR)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "リング キーを閉じるとオープン" + \woodwind-diagram #'flute #'((cc . (oneRT)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "オープンと完全に閉じる" + \woodwind-diagram #'flute #'((cc . (oneT)) + (lh . ()) + (rh . ())) + } +} + +c1^\markup { + \center-column { + "1/4 閉じると3/4 閉じる" + \woodwind-diagram #'flute #'((cc . (one1qT3q)) + (lh . ()) + (rh . ())) + } +} +@end lilypond + +楽器に対して使用できるすべてのキーと設定のリストを表示させることができます。@c +コンソールに表示させるには @code{#(print-keys-verbose 'flute)} を用い、@c +ログ ファイルに表示させるには +@code{#(print-keys-verbose 'flute (current-error-port))} を用います。@c +楽譜出力に表示させることはできません。 + +新しいダイアグラムを作成することができますが、これには Scheme を使える@c +必要があり、すべてのユーザができるわけではありません。@c +ダイアグラムのパターンは @file{scm/define-woodwind-diagrams.scm} と +@file{scm/display-woodwind-diagrams.scm} にあります。 + +@predefined +@endpredefined + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{woodwind-diagrams-listing.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{graphical-and-text-woodwind-diagrams.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-size-of-woodwind-diagrams.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{woodwind-diagrams-key-lists.ly} + +@seealso +インストールされているファイル: +@file{scm/define-woodwind-diagrams.scm}, @* +@file{scm/display-woodwind-diagrams.scm} + +コード断片集: +@rlsr{Winds} + +内部リファレンス: +@rinternals{TextScript}, +@rinternals{instrument-specific-markup-interface} diff --git a/Documentation/ja/notation/world.itely b/Documentation/ja/notation/world.itely new file mode 100644 index 0000000000..3ec484492a --- /dev/null +++ b/Documentation/ja/notation/world.itely @@ -0,0 +1,596 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +@ignore + Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + + 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.16.0" + + +@c Translators: Yoshiki Sawada +@c Translation status: post-GDP + + +@node 世界の音楽 +@section 世界の音楽 +@translationof World music + +このセクションの目的は、@c +西洋音楽の慣習とは異なる音楽に関する記譜の問題をハイライトすることです。 + +@menu +* 非西洋音楽の一般的な記譜法:: +* アラブ音楽:: +* トルコの伝統音楽:: +@end menu + + +@node 非西洋音楽の一般的な記譜法 +@subsection 非西洋音楽の一般的な記譜法 +@translationof Common notation for non-Western music + +このセクションでは、西洋のクラシック音楽の様式には属さない楽譜を入力し、@c +譜刻する方法を説明します。 + +@menu +* 記譜法とチューニング システムを拡張する:: +@end menu + + +@node 記譜法とチューニング システムを拡張する +@unnumberedsubsubsec 記譜法とチューニング システムを拡張する +@translationof Extending notation and tuning systems + +標準的なクラシック音楽の記譜法 +(@notation{Common Practice Period} -- 16-19世紀のヨーロッパ音楽 -- の記譜法) +は全ての種類の音楽で使われるもので、@c +西洋の @q{クラシック} 音楽に限定されるものではありません。@c +この記譜法は @ref{ピッチを記述する} で説明されていて、@c +様々な音符名が @ref{他の言語での音符名} で説明されています。 + +しかしながら、非西洋音楽の多く +(それに西洋のフォーク ミュージックと伝統音楽のいくつか) +は、異なるあるいは拡張されたチューニングシステムを採用していて、@c +標準的なクラシック音楽の記譜法とは容易に適合しません。 + +ピッチの違いを潜在させながら、標準の記譜法を用いる場合もあります。@c +例えば、@notation{アラブ音楽} は、@c +標準の半音 (訳者: シャープとフラット) と四分音 (訳者: シャープとフラットの半分) +を用いて、@c +精密なピッチの変化をコンテキストに決定させながら記譜します。@c +一般的にはイタリアの音符名が使われますが、@c +初期ファイル @file{arabic.ly} は、@c +標準の記譜法を拡張するアラブ音楽に適したマクロと定義のセットを提供します。@c +詳細は、@ref{アラブ音楽} を参照してください。 + +@cindex tuning, non-Western (非西洋音楽のチューニング) + +他のタイプの音楽は、拡張されたあるいは固有の記譜法を必要とします。@c +例えば、@notation{トルコの伝統音楽} やオスマントルコの音楽は、@c +全音の 1/9 をベースとする音程を持つ @notation{マカーム} と呼ばれる旋律様式を@c +採用しています。@c +標準の西洋音楽の音符を使いますが、@c +ファイル @file{makam.ly} で定義されている@c +トルコ音楽に固有の特殊な臨時記号が用いられます。@c +トルコの伝統音楽とマカームについての詳細は +@ref{トルコの伝統音楽} を参照してください。 + +@file{arabic.ly} や @file{makam.ly} 等の初期ファイルの保存場所については、@c +@rlearning{その他の情報源} を参照してください。 + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{makam-example.ly} + +@seealso +音楽用語集: +@rglos{Common Practice Period}, +@rglos{makamlar} + +学習マニュアル: +@rlearning{その他の情報源} + +記譜法リファレンス: +@ref{ピッチを記述する}, +@ref{他の言語での音符名}, +@ref{アラブ音楽}, +@ref{トルコの伝統音楽} + + +@node アラブ音楽 +@subsection アラブ音楽 +@translationof Arabic music + +このセクションでは、アラブ音楽の記譜に関する問題をハイライトします。 + +@menu +* アラブ音楽のためのリファレンス:: +* アラブ音楽での音符名:: +* アラブ音楽での調号:: +* アラブ音楽での拍子:: +* アラブ音楽の例:: +* アラブ音楽のための更なる知識:: +@end menu + + +@node アラブ音楽のためのリファレンス +@unnumberedsubsubsec アラブ音楽のためのリファレンス +@translationof References for Arabic music + +@cindex Arabic music +@cindex medium intervals +@cindex maqam +@cindex maqams + +アラブ音楽は主に口伝えで伝えられてきました。@c +音楽を記述するときは、演奏者が多くを即興することを前提とした@c +スケッチ形式で記されます。@c +アラブ音楽を伝え、保護するために、@c +いくつかのバリエーションを持つ西洋音楽記譜法を採用することが増えています。 + +和音の記述や独立したパートのような西洋音楽記譜法の要素のいくつかは、@c +伝統的なアラブ音楽を記譜するのに必要としません。@c +しかしながら、それとは異なる問題があります。@c +例えば、西洋音楽で用いられる半音と全音に加えて、@c +半音や全音の間にある中間音程を示す必要があります。@c +さらに、多くのマカーム (旋法) +-- アラブ音楽のパート -- +を示す必要があります。 + +一般的に、アラブ音楽の記譜法は微分音要素を正確に示そうとはしません。 + +アラブ音楽に関係する問題のいくつかは他の場所でカバーされています: + +@itemize +@item 音符名と臨時記号 (四分音を含む) を用意する方法は、@c +@ref{非西洋音楽の一般的な記譜法} で説明しています。 + +@item 追加の調号を用意する方法は、@ref{調号} で説明しています。 + +@item 複雑な拍子は、@ref{手動連桁} で説明されているように、@c +音符を手動でグループ化することを必要とするかもしれません。 + +@item 自由なリズムの即興 -- @notation{タクシーム} -- は、@c +@ref{無韻律の音楽} で説明されているように小節線を省略します。 + +@end itemize + + +@seealso +記譜法リファレンス: +@ref{非西洋音楽の一般的な記譜法}, +@ref{調号}, +@ref{手動連桁} + +コード断片集: +@rlsr{World music} + + +@node アラブ音楽での音符名 +@unnumberedsubsubsec アラブ音楽での音符名 +@translationof Arabic note names + + +@cindex Arabic note names (アラブ音楽での音符名) + +伝統的なアラブ音楽の音符名は非常に長く、@c +音楽を記述するという目的には適さないため、使いません。@c +アラブ音楽の教育では英語の音符名は馴染まれておらず、@c +イタリア語あるいはソルフェージュ音符名 (@code{do, re, mi, fa, sol, la, si}) が@c +用いられます。@c +修飾子 (臨時記号) も用いられます。@c +イタリア語の音符名と臨時記号は、@ref{他の言語での音符名} で説明しています。@c +非西洋音楽の記譜に標準的なクラシック音楽の記譜法を用いる方法は、@c +@ref{非西洋音楽の一般的な記譜法} で説明しています。 + +例えば、アラブ音楽の @notation{マカーム ラースト} を記譜することができます: + +@lilypond[quote,verbatim] +\include "arabic.ly" +\relative do' { + do re misb fa sol la sisb do sisb la sol fa misb re do +} +@end lilypond + + +@cindex Arabic semi-flat symbol (アラブ音楽での半フラット記号) +@cindex Semi-flat symbol appearance (半フラット記号の見た目) + +半フラットの記号は、アラブ音楽の記譜法で用いられる記号と一致しません。@c +特殊なアラブ音楽の半フラット記号を用いることが重要である場合は、@c +半フラットの音符の前に @file{arabic.ly} で定義されている @code{\dwn} を@c +配置します。@c +この方法では、調号の中の半フラット記号の見た目を変えることはできません。 + + +@lilypond[quote,verbatim] +\include "arabic.ly" +\relative do' { + \set Staff.extraNatural = ##f + dod dob dosd \dwn dob dobsb dodsd do do +} +@end lilypond + + +@seealso +記譜法リファレンス: +@ref{他の言語での音符名}, +@ref{非西洋音楽の一般的な記譜法} + +コード断片集: +@rlsr{World music} + + +@node アラブ音楽での調号 +@unnumberedsubsubsec アラブ音楽での調号 +@translationof Arabic key signatures + +@cindex Arabic key signatures (アラブ音楽での調号) + +マイナーとメジャーの調号に加えて、@c +以下の調号が @file{arabic.ly} で定義されています: +@notation{bayati}, @notation{rast}, @notation{sikah}, @notation{iraq}, +それに @notation{kurd} です。@c +これらの調号は、一般的に用いられる多くのマカームではなく、@c +少数のマカームを定義します。 + +一般的に、マカームはそのマカーム グループあるいは隣のグループの調号を使用し、@c +楽曲全体にさまざまな臨時記号が付けられます。 + +例として、マカーム muhayer の調号を示します: + +@example +\key re \bayati +@end example + +@noindent +ここで、@var{re} が muhayer マカームの終止音であり、@c +@var{bayati} がそのグループでの基本となるマカームの名前です。 + +調号がグループを表していますが、@c +一般にタイトルはより具体的なマカームを示します。@c +そのため、上記の例ではマカーム muhayer の名前がタイトルとして表示されます。 + +以下の表で示すように同じ bayati グループに属する他のマカーム +(bayati, hussaini, saba, それに ushaq) も同じ方法で示すことができます。@c +それらがその bayati グループのすべてのバリエーションです。@c +それらは基本的な特質は変わらない兄弟関係にあり、@c +基本となるマカーム (この場合は bayati) とは上方のテトラコードが異なっていたり、@c +詳細の一部分が異なっています。 + +同じグループの他のマカーム (nawa) は bayati を移調したもので、@c +表では移調をマカームの後ろに括弧書きで、@c +基本となるマカームからの移調として記載しています。@c +アラブ音楽のマカームの移調は、アラブ音楽の楽器の性質により、@c +制限されています。@c +nawa は以下のように示すことができます: + +@example +\key sol \bayati +@end example + +アラブ音楽では、bayati のような用語が複数の意味を持ちます +-- マカーム グループを示し、そのグループで最も重要なマカームであり、@c +基本となるマカームでもあります。 + +ここで、一般的なマカームの調号をマッピングしたグループを示します: + +@multitable @columnfractions 0.15 0.1 0.1 0.6 +@headitem マカーム グループ + @tab 調 + @tab 終止音 + @tab グループの他のマカーム (終止音) +@item ajam + @tab major + @tab sib + @tab jaharka (fa) +@item bayati + @tab bayati + @tab re + @tab hussaini, muhayer, saba, ushaq, nawa (sol) +@item hijaz + @tab kurd + @tab re + @tab shahnaz, shad arban (sol), hijazkar (do) +@item iraq + @tab iraq + @tab sisb + @tab - +@item kurd + @tab kurd + @tab re + @tab hijazkar kurd (do) +@item nahawand + @tab minor + @tab do + @tab busalik (re), farah faza (sol) +@item nakriz + @tab minor + @tab do + @tab nawa athar, hisar (re) +@item rast + @tab rast + @tab do + @tab mahur, yakah (sol) +@item sikah + @tab sikah + @tab misb + @tab huzam +@end multitable + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{non-traditional-key-signatures.ly} + + +@seealso +音楽用語集: +@rglos{maqam}, +@rglos{bayati}, +@rglos{rast}, +@rglos{sikah}, +@rglos{iraq}, +@rglos{kurd} + +記譜法リファレンス: +@ref{Key signature} + +学習マニュアル: +@rlearning{臨時記号と調号} + +内部リファレンス: +@rinternals{KeySignature} + +コード断片集: +@rlsr{World music}, +@rlsr{Pitches} + + +@node アラブ音楽での拍子 +@unnumberedsubsubsec アラブ音楽での拍子 +@translationof Arabic time signatures + +@cindex Arabic time signatures (アラブ音楽での拍子記号) +@cindex Semai form (セマーイー形式) +@cindex taqasim (タクシーム) + +アラブ音楽とトルコ音楽の伝統的な形式 +-- @notation{セマーイー} (@notation{Semai}) など -- +は 10/8 のような通常とは異なる拍子を使います。@c +このことは、@c +音符の自動グループ化は拍で音符をグループ化する既存の楽譜とは大きく異なり、@c +自動連桁機能の調節で対応することが困難ということを意味します。@c +代替手段として、自動連桁機能を off にして、@c +手動で音符に連桁を付けることになります。@c +既存の楽譜に合わせることが必要でない場合であっても、@c +自動連桁機能の振る舞いを調整し、複合拍子を用いることが望ましいかもしれません。 + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{arabic-improvisation.ly} + + +@seealso +音楽用語集: +@rglos{semai}, +@rglos{taqasim} + +記譜法リファレンス: +@ref{手動連桁}, +@ref{自動連桁}, +@ref{無韻律の音楽}, +@ref{自動臨時記号}, +@ref{自動連桁の振る舞いを設定する}, +@ref{拍子} + +コード断片集: +@rlsr{World music} + + +@node アラブ音楽の例 +@unnumberedsubsubsec アラブ音楽の例 +@translationof Arabic music example + +@cindex Arabic music example (アラブ音楽の例) +@cindex Arabic music template (アラブ音楽のテンプレート) +@cindex Template Arabic music (アラブ音楽のテンプレート) + + +ここで、トルコの @notation{セマーイー} (@notation{Semai}) の始めの部分を使った@c +テンプレートを挙げます。@c +アラブ音楽教育では、@notation{セマーイー} はアラブ音楽の記譜の特色のいくつか +-- このセクションで説明した中間的な音程や通常では使用しない旋法等 -- +を説明するためにお馴染みのものです。 + +@lilypond[quote,verbatim] +\include "arabic.ly" +\score { + \relative re' { + \set Staff.extraNatural = ##f + \set Staff.autoBeaming = ##f + \key re \bayati + \time 10/8 + + re4 re'8 re16 [misb re do] sisb [la sisb do] re4 r8 + re16 [misb do re] sisb [do] la [sisb sol8] la [sisb] do [re] misb + fa4 fa16 [misb] misb8. [re16] re8 [misb] re [do] sisb + do4 sisb8 misb16 [re do sisb] la [do sisb la] la4 r8 + } + \header { + title = "Semai Muhayer" + composer = "Jamil Bek" + } +} +@end lilypond + + +@seealso +コード断片集: +@rlsr{World music} + + +@node アラブ音楽のための更なる知識 +@unnumberedsubsubsec アラブ音楽のための更なる知識 +@translationof Further reading for Arabic music + +@enumerate + +@item +Habib Hassan Touma 著 @emph{The music of the Arabs} [Amadeus Press, 1996] +にはマカームについての説明と、それらのグループ化手法についての説明があります。 + +マカームについて説明している様々な Web サイトもあり、@c +それらの中には音源による例を提供しているものもあります: + +@itemize @bullet +@item +@uref{http://www.maqamworld.com/} +@item +@uref{http://www.turath.org/} +@end itemize + +マカームのグループ化手法の詳細にはいくつかのバリエーションがありますが、@c +マカームをグループ化する基準 +-- 下方のテトラ コードの共通性や移調に関連付けられます -- +は一致しています。 + +@item +特定のマカームに対してどのように調号を指定するかについては、@c +一貫していません +-- 同じテキスト内でさえも一貫していないことがあります。@c +しかしながら、マカーム毎に調号を指定するのではなく、@c +グループ毎に調号を指定するのが一般的です。 + +以下の著者による @dfn{ウード} (アラブ音楽のリュート) の教本には、@c +主なトルコ音楽とアラブ音楽の作曲についての説明があります。 + + +@itemize @bullet +@item +Charbel Rouhana +@item +George Farah +@item +Ibrahim Ali Darwish Al-masri +@end itemize +@end enumerate + + +@node トルコの伝統音楽 +@subsection トルコの伝統音楽 +@translationof Turkish classical music + +このセクションではトルコの伝統音楽記譜に関係する問題をハイライトします。 + +@menu +* トルコの伝統音楽のためのリファレンス:: +* トルコ音楽の音符名:: +@end menu + + +@node トルコの伝統音楽のためのリファレンス +@unnumberedsubsubsec トルコの伝統音楽のためのリファレンス +@translationof References for Turkish classical music + +@cindex Turkish music (トルコ音楽) +@cindex Ottoman music (オスマン音楽) +@cindex comma intervals (コンマ音程) +@cindex makam (マカーム) +@cindex makamlar (マカーム) + +トルコの伝統音楽はオスマン帝国時代 +-- ヨーロッパでクラシック音楽が開発されたのとほぼ同時期 -- +に発展し、 +それ自体の作曲形式、理論それに演奏スタイルを持つ、@c +活発で西洋音楽とは別個の流儀を持つ音楽として +20 世紀そして 21 世紀へと受け継がれてきました。@c +際立った特徴の 1 つは全音階を 9 等分した @q{コンマ} をベースとする@c +微分音を使用することであり、@c +微分音から +@notation{マカーム} (@notation{makam}、複数形は @notation{makamlar}) と@c +呼ばれる旋律形式が構築されます。 + +トルコの伝統音楽に関する問題のいくつかは他の場所でカバーされています: + +@itemize +@item 特殊な音符名と臨時記号について、@c +@ref{非西洋音楽の一般的な記譜法} で説明しています。 + +@end itemize + + +@node トルコ音楽の音符名 +@unnumberedsubsubsec トルコ音楽の音符名 +@translationof Turkish note names + +@cindex Turkish note names (トルコ音楽の音符名) +@cindex makam (マカーム) +@cindex makamlar (マカーム) + +トルコの伝統音楽におけるピッチは固有の名前を持ちます。@c +全音階の 1/9 をベースとしているため、@c +西洋音楽の音階と旋法とは全く異なる音程のセットを採用しています: +@notation{koma} (全音階の 1/9), +@notation{eksik bakiye} (3/9), @notation{bakiye} (4/9), +@notation{kücük mücenneb} (5/9), @notation{büyük mücenneb} (8/9), +@notation{tanîni} (全音階) それに +@notation{artık ikili} (12/9 または 13/9) です。 + +現代の記譜法の観点から見ると、@c +西洋音楽標準の譜の音符 (ド、レ、ミ @dots{}) に@c +音符を全音階の 1/9, 4/9, 5/9, 8/9 上げ下げする特殊な臨時記号を@c +組み合わせて使うと便利です。@c +これらの臨時記号はファイル @file{makam.ly} で定義されています。 + +以下の表は下記をリストアップしています: +@itemize +@item +特殊な臨時記号の名前 +@item +音符に後ろに付ける臨時記号の接尾辞 +@item +全音階の分数で表すピッチの変化量 +@end itemize + +@quotation +@multitable {@b{büyük mücenneb (sharp)}} {@b{suffix}} {@b{pitch alteration}} +@headitem 臨時記号名 + @tab 接尾辞 @tab ピッチの変化量 + +@item büyük mücenneb (シャープ) + @tab -bm @tab +8/9 +@item kücük mücenneb (シャープ) + @tab -k @tab +5/9 +@item bakiye (シャープ) + @tab -b @tab +4/9 +@item koma (シャープ) + @tab -c @tab +1/9 + +@item koma (フラット) + @tab -fc @tab -1/9 +@item bakiye (フラット) + @tab -fb @tab -4/9 +@item kücük mücenneb (フラット) + @tab -fk @tab -5/9 +@item büyük mücenneb (フラット) + @tab -fbm @tab -8/9 +@end multitable +@end quotation + +@c ここから +非西洋音楽の記譜法についてのもっと一般的な説明は、@c +@ref{非西洋音楽の一般的な記譜法} を参照してください。 + +@seealso +音楽用語集: +@rglos{makam}, +@rglos{makamlar} + +記譜法リファレンス: +@ref{非西洋音楽の一般的な記譜法} diff --git a/Documentation/ja/texidocs/piano-template-simple.texidoc b/Documentation/ja/texidocs/piano-template-simple.texidoc new file mode 100644 index 0000000000..7d4bb7e65c --- /dev/null +++ b/Documentation/ja/texidocs/piano-template-simple.texidoc @@ -0,0 +1,6 @@ +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 + texidocja = " +いくつかの音符を持つシンプルなピアノ譜を示します。 + +" + doctitleja = "ピアノ テンプレート (シンプル)" diff --git a/Documentation/ja/texidocs/piano-template-with-centered-dynamics.texidoc b/Documentation/ja/texidocs/piano-template-with-centered-dynamics.texidoc deleted file mode 100644 index bec33fa9d1..0000000000 --- a/Documentation/ja/texidocs/piano-template-with-centered-dynamics.texidoc +++ /dev/null @@ -1,6 +0,0 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -多くのピアノ譜は、強弱記号を 2 つの譜の間に置きます。これを実現するにはちょっ@c -とした調整が必要ですが、そのテンプレートがここにあるので、あなた自身が調整を行@c -う必要はありません。 -" diff --git a/Documentation/ja/texidocs/piano-template-with-centered-lyrics.texidoc b/Documentation/ja/texidocs/piano-template-with-centered-lyrics.texidoc index 83cc1e7b87..7209924f8f 100644 --- a/Documentation/ja/texidocs/piano-template-with-centered-lyrics.texidoc +++ b/Documentation/ja/texidocs/piano-template-with-centered-lyrics.texidoc @@ -1,4 +1,5 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。 +旋律と歌詞のための総譜ではなく、歌詞をピアノ譜の 2 つの譜の間に配置することができます。 " + doctitleja = "中央に歌詞を配置したピアノ テンプレート" diff --git a/Documentation/ja/texidocs/piano-template-with-melody-and-lyrics.texidoc b/Documentation/ja/texidocs/piano-template-with-melody-and-lyrics.texidoc index bef7ded495..6870e5d940 100644 --- a/Documentation/ja/texidocs/piano-template-with-melody-and-lyrics.texidoc +++ b/Documentation/ja/texidocs/piano-template-with-melody-and-lyrics.texidoc @@ -1,4 +1,5 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。 +これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜と、その下にピアノ伴奏譜があります。 " + doctitleja = "旋律と歌詞を持つピアノ テンプレート" diff --git a/Documentation/ja/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc b/Documentation/ja/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc index 8e8391e7c8..53e9065a95 100644 --- a/Documentation/ja/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc +++ b/Documentation/ja/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc @@ -1,4 +1,5 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。 +これは旋律、歌詞、コードを持つ歌曲の楽譜のためのテンプレートです。 " + doctitleja = "音符、歌詞、コードを持つ単一譜のテンプレート" \ No newline at end of file diff --git a/Documentation/ja/texidocs/single-staff-template-with-notes-and-chords.texidoc b/Documentation/ja/texidocs/single-staff-template-with-notes-and-chords.texidoc index fff7212241..564494f2b1 100644 --- a/Documentation/ja/texidocs/single-staff-template-with-notes-and-chords.texidoc +++ b/Documentation/ja/texidocs/single-staff-template-with-notes-and-chords.texidoc @@ -1,4 +1,5 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " 旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません! " + doctitleja = "音符とコードを持つ単一譜のテンプレート" \ No newline at end of file diff --git a/Documentation/ja/texidocs/single-staff-template-with-notes-and-lyrics.texidoc b/Documentation/ja/texidocs/single-staff-template-with-notes-and-lyrics.texidoc index 357d38339e..13f10c2a67 100644 --- a/Documentation/ja/texidocs/single-staff-template-with-notes-and-lyrics.texidoc +++ b/Documentation/ja/texidocs/single-staff-template-with-notes-and-lyrics.texidoc @@ -1,8 +1,9 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c -を付け加えて、それから歌詞の単語を付け加えてください。この例は自動ビームを off にして@c -います。これはボーカル パートでは一般的なことです。自動ビームを使用するには、対応する@c -行を変更するか、コメント アウトしてください。 +この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&@c +ペーストして、音符を付け加えて、それから歌詞の単語を付け加えてください。@c +この例は自動ビームを off にしています。これはボーカル パートでは一般的な@c +ことです。自動ビームを使用するには、対応する行を変更するか、コメント +アウトしてください。 " - + doctitleja = "音符と歌詞を持つ単一譜のテンプレート" \ No newline at end of file diff --git a/Documentation/ja/texidocs/single-staff-template-with-only-notes.texidoc b/Documentation/ja/texidocs/single-staff-template-with-only-notes.texidoc index 0440d84912..6eab4488c2 100644 --- a/Documentation/ja/texidocs/single-staff-template-with-only-notes.texidoc +++ b/Documentation/ja/texidocs/single-staff-template-with-only-notes.texidoc @@ -1,6 +1,7 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c -これをファイルにカット&ペーストして、音符を付け加えれば完了です! +これは音符を持つ譜を提供するとても簡単なテンプレートであり、ソロの楽器や@c +旋律の楽譜断片に適しています。これをファイルにカット&ペーストして、音符@c +を付け加えれば完了です! " - + doctitleja = "音符だけを持つ単一譜のテンプレート" \ No newline at end of file diff --git a/Documentation/ja/texidocs/string-quartet-template-simple.texidoc b/Documentation/ja/texidocs/string-quartet-template-simple.texidoc index 7b8e7a4686..c810c11522 100644 --- a/Documentation/ja/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/ja/texidocs/string-quartet-template-simple.texidoc @@ -1,5 +1,6 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために -@code{@bs{}global} セクションを使っています。 +これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号の@c +ために @code{\\global} セクションを使っています。 " + doctitleja = "弦楽四重奏テンプレート (シンプル)" \ No newline at end of file diff --git a/Documentation/ja/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/ja/texidocs/string-quartet-template-with-separate-parts.texidoc index d8171cb6a5..6ec49fbe17 100644 --- a/Documentation/ja/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/ja/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,14 +1,18 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -\"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c -パート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは -@code{@bs{}tag} 機能を用いて容易に楽曲を個々のパートに分ける方法を示しています。 +@qq{弦楽四重奏テンプレート} は適切な弦楽四重奏の楽譜を作り出しますが、@c +個々のパート譜を譜刻する必要がある場合はどうでしょうか?今度の新しい@c +テンプレートは @code{\\tag} 機能を用いて容易に楽曲を個々のパートに分ける@c +方法を示しています。 -このテンプレートは別々のファイルに分ける必要があります。ファイル名は各ファイル@c -の開始部分のコメントの中に記述されています。@code{piece.ly} はすべての音楽定義@c -を保持しています。他のファイル - @code{score.ly}, @code{vn1.ly}, @code{vn2.ly}, -@code{vla.ly} それに @code{vlc.ly} - は対応するパートを作り出します。 +このテンプレートは別々のファイルに分ける必要があります。ファイル名は各@c +ファイルの開始部分のコメントの中に記述されています。@code{piece.ly} は@c +すべての音楽定義を保持しています。他のファイル - @code{score.ly}, +@code{vn1.ly}, @code{vn2.ly}, @code{vla.ly} それに @code{vlc.ly} - は@c +対応するパートを作り出します。 -別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください! +別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないで@c +ください! " + doctitleja = "パートを個々に持つ弦楽四重奏テンプレート" \ No newline at end of file diff --git a/Documentation/ja/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc b/Documentation/ja/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc index 3e4a057a7b..74905139a7 100644 --- a/Documentation/ja/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc +++ b/Documentation/ja/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc @@ -1,7 +1,8 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c +このテンプレートは、@qq{合唱テンプレート} で示した標準の SATB ボーカル譜に自動@c ピアノ譜を付け加えています。これは LilyPond の強みの 1 つを示しています - 音楽@c 定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic} の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。 " + doctitleja = "自動ピアノ伴奏譜を持つ合唱譜" diff --git a/Documentation/ja/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc b/Documentation/ja/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc index 3e8301636e..def3a938ad 100644 --- a/Documentation/ja/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc +++ b/Documentation/ja/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc @@ -1,5 +1,7 @@ -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " -このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が -@code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。 +このテンプレートは基本的に単純な @qq{合唱} テンプレートと同じですが、歌詞が +@code{alignAboveContext} と @code{alignBelowContext} を用いて配置@c +されています。 " + doctitleja = "上下に歌詞を配置した合唱譜テンプレート" diff --git a/Documentation/ja/texidocs/vocal-ensemble-template.texidoc b/Documentation/ja/texidocs/vocal-ensemble-template.texidoc index 0273fc12e2..107d59e239 100644 --- a/Documentation/ja/texidocs/vocal-ensemble-template.texidoc +++ b/Documentation/ja/texidocs/vocal-ensemble-template.texidoc @@ -1,6 +1,8 @@ -%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441 +%% Translation of GIT committish: d5647c5fd1c38d4124d2374725b923f4901f3661 texidocja = " これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c -便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c -歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。" +便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。@c +@qq{賛美歌} テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされて@c +います。" + doctitleja = "合唱テンプレート" diff --git a/Documentation/ja/translations.itexi b/Documentation/ja/translations.itexi index 1cd9db36f7..4c70493c44 100644 --- a/Documentation/ja/translations.itexi +++ b/Documentation/ja/translations.itexi @@ -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{最終更新日 Thu May 31 09:12:39 UTC 2012 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -111,7 +111,7 @@ LilyPond --- \TITLE\ @item 2 一般的な記譜法 @* -4184 +4187 @tab Yoshiki Sawada @tab @tab @@ -138,7 +138,7 @@ LilyPond --- \TITLE\ @item 3 基礎となるコンセプト @* -11139 +11130 @tab Yoshiki Sawada @tab @tab @@ -165,7 +165,7 @@ LilyPond --- \TITLE\ @item 4 出力を調整する @* -15408 +15468 @tab Yoshiki Sawada @tab @tab @@ -182,7 +182,7 @@ LilyPond --- \TITLE\ @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -192,7 +192,7 @@ partially @item A テンプレート @* -225 +219 @tab Yoshiki Sawada @tab @tab @@ -312,7 +312,7 @@ LilyPond --- \TITLE\ @item 1.1 ピッチ @* -4479 +4530 @tab Yoshiki Sawada @tab @tab @@ -339,7 +339,7 @@ partially @item 1.2 リズム @* -6048 +6352 @tab Yoshiki Sawada @tab @tab @@ -356,7 +356,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -364,9 +364,9 @@ partially @end ifnothtml @tab post-GDP @item -1.3 表現記号 +1.3 発想記号 @* -1726 +1712 @tab Yoshiki Sawada @tab @tab @@ -393,7 +393,493 @@ partially @item 1.4 繰り返し @* -930 +1011 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +1.5 同時進行する音符 +@* +2640 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +1.6 譜の記譜法 +@* +2392 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +1.7 編集者の注釈 +@* +949 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +1.8 テキスト +@* +2729 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2 専門的な記譜法 +@* +81 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.1 声楽 +@* +4758 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.2 キーボードと他の複数譜の楽器 +@* +862 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.3 フレットの無い弦楽器 +@* +281 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.4 フレットのある弦楽器 +@* +2675 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +partially +@end html +@end ifhtml +@ifnothtml +partially +@end ifnothtml +@tab post-GDP +@item +2.5 打楽器 +@* +812 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.6 管楽器 +@* +321 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.7 和音記譜法 +@* +2022 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.8 現代音楽 +@* +475 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +2.9 世界の音楽 +@* +1446 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +3 入出力全般 +@* +8701 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +partially +@end html +@end ifhtml +@ifnothtml +partially +@end ifnothtml +@tab post-GDP +@item +4 スペースの問題 +@* +11234 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab post-GDP +@item +5 デフォルトを変更する +@* +12679 +@tab Yoshiki Sawada +@tab +@tab +@ifhtml + +@html +はい +@end html +@end ifhtml +@ifnothtml +はい +@end ifnothtml +@tab +@ifhtml + +@html +partially +@end html +@end ifhtml +@ifnothtml +partially +@end ifnothtml +@tab post-GDP +@item +A カンニング ペーパー +@* +252 @tab Yoshiki Sawada @tab @tab @@ -486,7 +972,7 @@ LilyPond --- \TITLE\ @item 1 @command{lilypond} を実行する @* -3622 +4615 @tab Yoshiki Sawada @tab @tab @@ -513,7 +999,7 @@ LilyPond --- \TITLE\ @item 2 @command{convert-ly} を使ってファイルを更新する @* -1189 +1209 @tab Yoshiki Sawada @tab @tab @@ -538,36 +1024,36 @@ LilyPond --- \TITLE\ @end ifnothtml @tab post-GDP @item -3 @command{lilypond-book}: Integrating text and music +3 @command{lilypond-book} を実行する @* -3764 +4137 @tab Yoshiki Sawada @tab @tab @ifhtml @html -いいえ +はい @end html @end ifhtml @ifnothtml -いいえ +はい @end ifnothtml @tab @ifhtml @html -partially +はい @end html @end ifhtml @ifnothtml -partially +はい @end ifnothtml -@tab post-GDP +@tab pre-GDP @item 4 外部プログラム @* -2170 +2390 @tab Yoshiki Sawada @tab @tab @@ -633,7 +1119,7 @@ LilyPond -- みんなの楽譜作成 @item セクション タイトル @* -585 +616 @tab Yoshiki Sawada @* Yoshinobu Ishizaki @@ -652,7 +1138,7 @@ Yoshinobu Ishizaki @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -691,7 +1177,7 @@ Yoshinobu Ishizaki @item 導入部 @* -4506 +4753 @tab Yoshiki Sawada @* Yoshinobu Ishizaki @@ -710,17 +1196,17 @@ Yoshinobu Ishizaki @ifhtml @html -はい +partially @end html @end ifhtml @ifnothtml -はい +partially @end ifnothtml @tab pre-GDP @item ダウンロード @* -1183 +1211 @tab Yoshiki Sawada @tab @tab @@ -747,7 +1233,7 @@ Yoshinobu Ishizaki @item マニュアル @* -1200 +1214 @tab Yoshiki Sawada @tab @tab @@ -774,7 +1260,7 @@ Yoshinobu Ishizaki @item コミュニティ @* -1755 +3006 @tab Yoshiki Sawada @tab @tab @@ -791,11 +1277,11 @@ Yoshinobu Ishizaki @ifhtml @html -はい +partially @end html @end ifhtml @ifnothtml -はい +partially @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/ja/usage.tely b/Documentation/ja/usage.tely index 3091af4cc1..3fa8d617f3 100644 --- a/Documentation/ja/usage.tely +++ b/Documentation/ja/usage.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 3c62ac104645533873bba800f7b0f371089f535a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -21,7 +21,7 @@ @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2010 by the authors. +Copyright @copyright{} 1999--2012 by the authors. @end macro @set FDL diff --git a/Documentation/ja/usage/external.itely b/Documentation/ja/usage/external.itely index 6352a345ba..7afd9bb345 100644 --- a/Documentation/ja/usage/external.itely +++ b/Documentation/ja/usage/external.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -28,11 +28,21 @@ LilyPond は様々な方法で他のプログラムと連携することがで * 独立した include:: @end menu - @node ポイント&クリック @section ポイント&クリック @translationof Point and click +ポイント&クリックは PDF ドキュメントに音楽要素へのリンクを追加します。 + +@menu +* ポイント&クリックを有効にする:: +* 選択的なポイント&クリック:: +@end menu + +@node ポイント&クリックを有効にする +@unnumberedsubsec ポイント&クリックを有効にする +@translationof Enabling point and click + @cindex point and click (ポイント&クリック) ポイント&クリックは PDF ビューアの中で表記をクリックすることで@c @@ -53,6 +63,10 @@ UNIX の Xpdf では、@c ホーム ディレクトリの中の @file{.xpdfrc} としてのどちらかです。} の中に以下の記述が必要です: +以下の記述が @file{xpdfrc} の中に存在している必要があります。 +UNIX において、このファイルは @file{/etc/xpdfrc} の中または +@file{$HOME/.xpdfrc} として存在します。 + @example urlCommand "lilypond-invoke-editor %s" @end example @@ -121,6 +135,81 @@ lilypond -dno-point-and-click file.ly 配布する .pdf ファイルに Path 情報が含まれていると@c セキュリティ リスクとなります。} +@c ここから L47 +@node 選択的なポイント&クリック +@unnumberedsubsec 選択的なポイント&クリック + +インタラクティブなアプリケーションでは、@c +ある特定のポイント&クリック要素だけを含むことが望ましい場合もあります。@c +例えば、誰かがある特定の音符から演奏を開始できるアプリケーションを作りたいと@c +思った場合、@c +音符をクリックした場合にその音符の上にある臨時記号やスラーの@c +ポイント&クリックが開いてしまったのでは不便です。 + +どのイベントをポイント&クリックに含めるか指定することで、これを制御できます: + +@itemize +@item +@file{.ly} ファイルにハード コードする: + +@example +\pointAndClickTypes #'note-event +\relative c' @{ + c2\f( f) +@} +@end example + +あるいは + +@example +#(ly:set-option 'point-and-click 'note-event) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +コマンド ラインで指定する: + +@example +lilypond -dpoint-and-click=note-event example.ly +@end example + +@end itemize + +複数のイベントを含めることができます: + +@itemize +@item +@file{.ly} ファイルにハード コードする: + +@example +\pointAndClickTypes #'(note-event dynamic-event) +\relative c' @{ + c2\f( f) +@} +@end example + +あるいは + +@example +#(ly:set-option 'point-and-click '(note-event dynamic-event)) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +コマンド ラインで指定する: + +@smallexample +lilypond \ + -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ + example.ly +@end smallexample + +@end itemize + @node テキスト エディタ サポート @section テキスト エディタ サポート @@ -261,7 +350,7 @@ MIDI ファイル フォーマットは音楽を他のプログラムにエク それを @file{.ly} ファイルに変換することが可能です。@c しかしながら、人間の演奏者のリズムは LilyPond コンバータにかけられる MIDI を作り出せるほど正確ではありません。@c -量子化オプション (@code{-s} と @code{-d} オプション) を指定して +量子化オプション (@option{-s} と @option{-d} オプション) を指定して @command{midi2ly} を呼び出すと、リズムの誤りを訂正しようとしますが、@c 十分機能するとは言えません。@c このため、人間の演奏で生成された MIDI ファイルを @command{midi2ly} で@c @@ -369,11 +458,19 @@ musicxml2ly [@var{option}]@dots{} @var{xml-file} ピッチ名に LANG を使用します。@c 例えば、ピッチ名にドイツ語を使用するには 'deutsch' を指定します。 +@item --loglevel=@var{loglevel} +出力の饒舌さを @var{loglevel} にセットします。@c +取り得る値は @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (デフォルト), それに @code{DEBUG} です。 + @item --lxml XML 解析に lxml.etree Python パッケージを使用します。@c これはより少ないメモリと CPU 時間で実行されます。 -@item --nd --no-articulation-directions +@item -m, --midi +MIDI ブロックを有効にします。 + +@item -nd --no-articulation-directions アーティキュレーションや強弱等の指示 (@code{^}, @code{_} あるいは @code{-}) を変換しません。 @@ -589,14 +686,21 @@ the following options @{ c1 @} @end example - -@file{EPS} を作り出すには、以下のようにします: +有用な画像ファイルを作り出すには、以下のようにします: @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 + +透過 PNG + +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \ + -dpixmap-format=pngalpha --png myfile.ly @end example diff --git a/Documentation/ja/usage/lilypond-book.itely b/Documentation/ja/usage/lilypond-book.itely index 0d9e18923e..75ce625967 100644 --- a/Documentation/ja/usage/lilypond-book.itely +++ b/Documentation/ja/usage/lilypond-book.itely @@ -1,84 +1,87 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada -@c Translation status: post-GDP @c Note: keep this node named so that `info lilypond-book' brings you here. @node lilypond-book -@chapter @command{lilypond-book}: Integrating text and music +@chapter @command{lilypond-book} を実行する @translationof lilypond-book -@untranslated +ドキュメントに楽譜の画像を追加したければ、他のタイプの画像を追加する@c +のと同じ方法で追加することができます。@c +ドキュメントとは別に画像を作成して、PostScript 出力や PNG 画像@c +として保存して、@LaTeX{} や HTML ドキュメントに組み込みます。 -If you want to add pictures of music to a document, you can simply do it -the way you would do with other types of pictures. The pictures are -created separately, yielding PostScript output or PNG images, and those -are included into a @LaTeX{} or HTML document. +@command{lilypond-book} はこの処理を自動で行うための手段です: +このプログラムはドキュメントから楽譜のコード断片を抽出して、@c +それらに対して @command{lilypond} を実行して、楽譜のコード断片を@c +画像で置き換えたドキュメントを出力します。@c +楽譜の線の太さやフォント サイズはドキュメントのレイアウトに調和@c +するよう調節されます。 -@command{lilypond-book} provides a way to automate this process: This -program extracts snippets of music from your document, runs -@command{lilypond} on them, and outputs the document with pictures -substituted for the music. The line width and font size definitions for -the music are adjusted to match the layout of your document. +@command{lilypond-book} は @command{lilypond} とは別のプログラムであり、@c +コマンド ラインで実行されます。@c +更なる情報は @ref{Command-line usage} を参照してください。@c +Windows や Mac OS X のコマンド ラインを用いて @code{lilypond-book} を@c +実行しようとした際に問題があるようなら、@rweb{Windows} や @rweb{MacOS X} +を参照してください。 -This is a separate program from @command{lilypond} itself, and is run -on the command line; for more information, see @ref{コマンド ラインの使用方法}. If you have MacOS 10.3 or 10.4 and you have trouble running -@code{lilypond-book}, see FIXME FIXME @c @ref{MacOS X のためのセットアップ}. - -This procedure may be applied to @LaTeX{}, HTML, Texinfo or DocBook -documents. +この処理は @LaTeX{}, HTML, Texinfo, または DocBook のドキュメントに@c +適用することができます。 @cindex texinfo -@cindex latex +@cindex LaTex @cindex texinfo @cindex texi -@cindex html +@cindex HTML @cindex docbook -@cindex documents, adding music to -@cindex HTML, music in -@cindex Texinfo, music in -@cindex DocBook, music in -@cindex @LaTeX{}, music in +@cindex documents, adding music (ドキュメントに楽譜を追加する) +@cindex HTML, adding music (HTML に楽譜を追加する) +@cindex Texinfo, adding music (Texinfo に楽譜を追加する) +@cindex DocBook, adding music (DocBook に楽譜を追加する) +@cindex LaTeX, adding music (LaTeX に楽譜を追加する) @menu -* An example of a musicological document:: -* Integrating music and text:: -* Music fragment options:: -* Invoking lilypond-book:: -* Filename extensions:: -* Alternate methods of mixing text and music:: +* 音楽学のドキュメントの例:: +* 楽譜とテキストを統合する:: +* 楽譜断片オプション:: +* lilypond-book を呼び出す:: +* ファイル拡張子:: +* lilypond-book テンプレート:: +* 目次を共有する:: +* テキストと楽譜を組み合わせる他の方法:: @end menu -@node An example of a musicological document -@section An example of a musicological document +@node 音楽学のドキュメントの例 +@section 音楽学のドキュメントの例 @translationof An example of a musicological document -@untranslated - -@cindex musicology -Some texts contain music examples. These texts are musicological -treatises, songbooks, or manuals like this. Such texts can be made by -hand, simply by importing a PostScript figure into the word processor. -However, there is an automated procedure to reduce the amount of work -involved in HTML, @LaTeX{}, Texinfo and DocBook documents. +@cindex musicology (音楽学) +テキストのなかには楽譜の例を保持しているものがあります。@c +そのようなテキストには、音楽学の専門書、歌集、このドキュメントのような@c +マニュアルがあります。@c +そのようなテキストを手作業で作成することができます +-- PostScript 画像をワープロにインポートするといったようにです。@c +しかしながら、HTML, @LaTeX{}, Texinfo, それに DocBook ドキュメント@c +の場合は、作業量を減らすための自動処理を利用することができます。 -A script called @code{lilypond-book} will extract the music fragments, -format them, and put back the resulting notation. Here we show a small -example for use with @LaTeX{}. The example also contains explanatory -text, so we will not comment on it further. +@code{lilypond-book} と呼ばれるスクリプトは楽譜の断片を抽出して、@c +それらをフォーマットして、得られた楽譜をドキュメントに戻します。@c +@LaTeX{} に対するちょっとした使用例を示します。@c +この例には説明文も含まれていますので、それ以上コメントすることはしません。 -@subheading Input +@subheading 入力 @quotation @verbatim @@ -86,8 +89,9 @@ text, so we will not comment on it further. \begin{document} -Documents for \verb+lilypond-book+ may freely mix music and text. -For example, +\verb+lilypond-book+ のドキュメントでは自由に楽譜とテキストを +組み合わせることができます。 +例えば、以下のように: \begin{lilypond} \relative c' { @@ -95,28 +99,28 @@ For example, } \end{lilypond} -Options are put in brackets. +オプションは角括弧の中に配置します。 \begin{lilypond}[fragment,quote,staffsize=26,verbatim] c'4 f16 \end{lilypond} -Larger examples can be put into a separate file, and introduced with -\verb+\lilypondfile+. +大きな楽譜例は別のファイルに配置して、\verb+\lilypondfile+ で +インポートすることができます。 -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(If needed, replace screech-boink.ly by any .ly file you put in the same -directory as this file.) +(必要があれば、@file{screech-and-boink.ly} をこのファイルと同じディレクトリ +にある任意の @file{.ly} に置き換えてください。) \end{document} @end verbatim @end quotation -@subheading Processing +@subheading 処理 -Save the code above to a file called @file{lilybook.lytex}, then in a -terminal run +上記のコードを @file{lilybook.lytex} というファイル名で保存して、@c +ターミナルで以下を実行します: @c keep space after @version{} so TeX doesn't choke @example @@ -129,24 +133,27 @@ cd out pdflatex lilybook @emph{..lots of stuff deleted..} xpdf lilybook -@emph{(replace @command{xpdf} by your favorite PDF viewer)} +@emph{(@command{xpdf} をお好みの PDF ビューアに置き換えてください)} @end example -Running @command{lilypond-book} and @command{latex} creates a lot of -temporary files, which would clutter up the working directory. To -remedy this, use the @code{--output=@var{dir}} option. It will create -the files in a separate subdirectory @file{dir}. +@command{lilypond-book} と @command{latex} を実行すると多くの一時@c +ファイルが作成されて、作業ディレクトリを散らかします。@c +散らかされることを防ぐには @option{--output=@var{dir}} オプションを@c +使います。@c +このオプションを指定すると、一時ファイルはサブディレクトリ @file{dir} +に作成されます。 -Finally the result of the @LaTeX{} example shown above.@footnote{This -tutorial is processed with Texinfo, so the example gives slightly -different results in layout.} This finishes the tutorial section. +以下に上記の @LaTeX{} 例の結果を示します。@footnote{このチュートリアルは +Texinfo で処理されるため、上記の例とはレイアウトが少し異なります。}@c +これでこのチュートリアル セクションを終わります。 @page -@subheading Output +@subheading 出力 -Documents for @command{lilypond-book} may freely mix music and text. -For example, +@command{lilypond-book} のドキュメントでは自由に楽譜とテキストを +組み合わせることができます。 +例えば、以下のように: @lilypond \relative c' { @@ -154,27 +161,39 @@ For example, } @end lilypond -Options are put in brackets. +オプションは角括弧の中に配置します。 @lilypond[fragment,quote,staffsize=26,verbatim] c'4 f16 @end lilypond -Larger examples can be put into a separate file, and introduced with -@code{\lilypondfile}. +大きな楽譜例は別のファイルに配置して、@code{\lilypondfile} で +インポートすることができます。 + +@lilypondfile[quote,noindent]{screech-and-boink.ly} -@lilypondfile[quote,noindent]{screech-boink.ly} +デフォルトあるいはカスタムの @code{tagline} が必要であれば、 +楽譜コード断片全体を @code{\book @{ @}} 構造で囲んでください。 +@lilypond[papersize=a8,verbatim] +\book{ + \header{ + title = "A scale in LilyPond" + } + + \relative c' { + c d e f g a b c + } +} +@end lilypond @page -@node Integrating music and text -@section Integrating music and text +@node 楽譜とテキストを統合する +@section 楽譜とテキストを統合する @translationof Integrating music and text -@untranslated - -Here we explain how to integrate LilyPond with various output formats. +LilyPond をさまざまな出力フォーマットと統合する方法を説明します。 @menu * LaTeX:: @@ -187,45 +206,60 @@ Here we explain how to integrate LilyPond with various output formats. @subsection @LaTeX{} @translationof LaTeX -@untranslated - -@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. +@LaTeX{} は物理学や化学等の出版のデファクト スタンダードです。@c +@LaTeX{} は @TeX{} 植字エンジン上に構築され、最高品位の活版印刷術を@c +提供します。 -See +@LaTeX{} の使い方についての概要は @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{}. +@emph{The Not So Short Introduction to @LaTeX{}}} を参照してください。 + +@code{lilypond-book} は楽譜を @LaTeX{} ファイルに組み込むために以下の@c +コマンドと環境を提供します: + +@itemize + +@item +@code{\lilypond@{...@}} コマンド: ここに直接短い lilypond コードを入力する@c +ことができます + +@item +@code{\begin@{lilypond@}...\end@{lilypond@}} 環境: ここに長い lilypond +コードを入力することができます + +@item +@code{\lilypondfile@{...@}} コマンド: このコマンドで lilypond ファイルを@c +挿入することができます + +@item +@code{\musicxmlfile@{...@}} コマンド: このコマンドで MusicXML ファイルを@c +挿入することができます。@c +挿入されたファイルは @code{musicxml2ly} と @code{lilypond} で処理されます + +@end itemize -Music is entered using +入力ファイルの中では、楽譜は以下のコマンドのいずれかで特定されます: @example \begin@{lilypond@}[options,go,here] YOUR LILYPOND CODE \end@{lilypond@} -@end example -@noindent -or +\lilypond[options,go,here]@{ YOUR LILYPOND CODE @} -@example \lilypondfile[options,go,here]@{@var{filename}@} + +\musicxmlfile[options,go,here]@{@var{filename}@} @end example -@noindent -or -@example -\lilypond@{ YOUR LILYPOND CODE @} -@end example +@noindent -Additionally, @code{\lilypondversion} displays the current version -of lilypond. -Running @command{lilypond-book} yields a file that can be further -processed with @LaTeX{}. +さらに、@code{\lilypondversion} は lilypond のバージョン番号を表示します。@c +@command{lilypond-book} を実行して得られたファイルを更に @LaTeX{} で@c +処理することができます。 -We show some examples here. The @code{lilypond} environment +例をいくつか挙げます。以下の @code{lilypond} 環境 @example \begin@{lilypond@}[quote,fragment,staffsize=26] @@ -234,52 +268,58 @@ We show some examples here. The @code{lilypond} environment @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]@{@} @end example @noindent -produces +これは以下を作り出します @lilypond[quote,fragment,staffsize=11]{} @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: +今のところ @code{\lilypond@{@}} の中で @code{@{} や @code{@}} を@c +記述することはできないため、このコマンドは @code{fragment} オプション@c +を指定した場合にのみ機能します。 + +楽譜のデフォルトの行幅は、ドキュメント前文 +-- @code{\begin@{document@}} より前の部分 -- +のコマンドを検証することにより調節されます。@c +@command{lilypond-book} コマンドはそれらのコマンドを @LaTeX{} に送って@c +テキストの幅を調べます。@c +その後、楽譜断片の行幅はそのテキスト幅に調節されます。@c +試行錯誤なアルゴリズムは容易に失敗する可能性があります +-- そのような場合、@code{line-width} 楽譜断片オプションを使用する必要が@c +あります。 + +@cindex titling and lilypond-book (タイトルと lilypond-book) +@cindex \header in @LaTeX{} documents (@LaTeX{} ドキュメントの中にある \header) + +以下のマクロがユーザによって定義されている場合、各楽譜断片はそれらの@c +マクロを呼び出します: @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}. +@item @code{\preLilyPondExample} は楽譜断片の処理が始まる前に@c +呼び出されます。 + +@item @code{\postLilyPondExample} は楽譜断片の処理が終わった後に@c +呼び出されます。 + +@item @code{\betweenLilyPondSystem[1]} は、@code{lilypond-book} が@c +楽譜断片をいくつかの PostScript ファイルに分けて出力する場合に、@c +ある段と次の段の間で呼び出されます。@c +このマクロはパラメータを 1 つ取るように定義する必要があり、@c +何段数目の処理が終わったらマクロが動作を始めるかを指定する@c +数を渡します。@c +デフォルトでは @code{\linebreak} を挿入するだけです。 @end itemize @ignore @@ -314,16 +354,17 @@ kpsewhich feta20.tex @snippets +@c 未訳 +@c 楽譜要素 (タイやスラー等) を~~かのように +@c 表示することが有用な場合があります。@c 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. +as if they continued after the end of the fragment. +これは譜を改行して、残りの LilyPond 出力を抑制することで実現できます。 -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. +@LaTeX{} の中で @code{\betweenLilyPondSystem} を定義して、必要な楽譜段数@c +が出力された後の出力を抹消するようにします。@c +@code{\betweenLilyPondSystem} が最初に呼び出されるのは @emph{最初の} 段@c +が処理された後なので、最初の段だけを残すことは簡単です。 @example \def\betweenLilyPondSystem#1@{\endinput@} @@ -333,39 +374,43 @@ is trivial. \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, +必要とする段数が多い場合、@code{\endinput} の前で @TeX{} 条件分岐を使う@c +必要があります。@c +以下の例で、@q{2} を必要とする段数に置き換えてください。 @example \def\betweenLilyPondSystem#1@{ - \ifnum##1<2\else\endinput\fi + \ifnum#1<2\else\expandafter\endinput\fi @} @end example -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 +@noindent +(@code{\endinput} は入力ファイルの処理をすぐに停止するため、@c +@code{\endinput} の呼び出しを @code{\fi} 実行後まで遅らせるために +@code{\expandafter} を記述する必要があります。@c +これにより @code{\if}-@code{\fi} 節がバランスします。) + +@code{\betweenLilyPondSystem} の定義は @TeX{} がカレントのグループ +(@LaTeX{} 環境等) を終了するか、他の定義で上書きされる +(これは大抵の場合、ドキュメントの残りの部分に対する定義です) +まで効果を持つということを覚えておいてください。@c +定義をリセットするには、@LaTeX{} に以下を記述します: @example \let\betweenLilyPondSystem\undefined @end example -@noindent -in your @LaTeX{} source. - -This may be simplified by defining a @TeX{} macro +これを簡単にするには、以下の @TeX{} マクロを定義して、 @example \def\onlyFirstNSystems#1@{ - \def\betweenLilyPondSystem##1@{\ifnum##1<#1\else\endinput\fi@} + \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@} @@ -376,53 +421,67 @@ and then saying only how many systems you want before each fragment, @seealso -There are specific @command{lilypond-book} command line options and -other details to know when processing @LaTeX{} documents, see -@ref{Invoking lilypond-book}. +@LaTeX{} ドキュメント専用の @command{lilypond-book} コマンド +オプションがあり、他にも知っておくべき細かなことがあります。@c +@ref{Invoking lilypond-book} を参照してください。 @node Texinfo @subsection Texinfo @translationof Texinfo -@untranslated +Texinfo は GNU プロジェクトのドキュメントのデフォルト フォーマットです。@c +Texinfo ドキュメントの例の 1 つはこのマニュアルです。@c +このマニュアルの HTML, PDF, それに Info 形式は Texinfo ドキュメントから@c +生成されています。 -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. +@code{lilypond-book} は楽譜を Texinfo ファイルに組み込むために以下の@c +コマンドと環境を提供します: -In the input file, music is specified with +@itemize + +@item +@code{@@lilypond@{...@}} コマンド: ここに直接短い lilypond コードを@c +入力することができます + +@item +@code{@@lilypond...@@end lilypond} 環境: ここに長い lilypond +コードを入力することができます + +@item +@code{@@lilypondfile@{...@}} コマンド: このコマンドで lilypond +ファイルを挿入することができます + +@item +@code{@@musicxmlfile@{...@}} コマンド: このコマンドで MusicXML ファイルを@c +挿入することができます。@c +挿入されたファイルは @code{musicxml2ly} と @code{lilypond} で処理されます + +@end itemize + +入力ファイルの中では、楽譜は以下のコマンドのいずれかで特定されます: @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}@} + +@@musicxmlfile[options,go,here]@{@var{filename}@} @end example -Additionally, @code{@@lilypondversion} displays the current version -of lilypond. +さらに、@code{@@lilypondversion} は 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. +@command{lilypond-book} を実行して得られる Texinfo ファイル +(拡張子は @file{.texi} です) は HTML, Info, それに表示出力用の +@code{@@image} タグを保持しています。@c +@command{lilypond-book} は表示出力に対しては EPS と PDF 形式の楽譜を@c +生成して、HTML と Info 出力に対しては PNG 形式の楽譜を生成します。 -We show two simple examples here. A @code{lilypond} environment +2 つの簡単な例を挙げます。以下の @code{lilypond} 環境 @example @@lilypond[fragment] @@ -431,96 +490,137 @@ c' d' e' f' g'2 g' @end example @noindent -produces +これは以下を作り出します @lilypond[fragment] c' d' e' f' g'2 g' @end lilypond -The short version +以下の短いバージョン @example @@lilypond[fragment,staffsize=11]@{@} @end example @noindent -produces +これは以下を作り出します @lilypond[fragment,staffsize=11]{} -Contrary to @LaTeX{}, @code{@@lilypond@{...@}} does not generate an -in-line image. It always gets a paragraph of its own. +@LaTeX{} とは対照的に、@code{@@lilypond@{...@}} はインライン画像を@c +生成しません。@c +生成される画像は常に 1 つの段落を構成します。 @node HTML @subsection HTML @translationof HTML -@untranslated +@code{lilypond-book} は楽譜を HTML ファイルに組み込むために以下の@c +コマンドと環境を提供します: + +@itemize -Music is entered using +@item +@code{} コマンド: ここに直接短い lilypond コードを入力する@c +ことができます + +@item +@code{...} 環境: ここに長い lilypond +コードを入力することができます + +@item +@code{...} コマンド: このコマンドで +lilypond ファイルを挿入することができます + +@item +@code{...} コマンド: このコマンドで +MusicXML ファイルを挿入することができます。@c +挿入されたファイルは @code{musicxml2ly} と @code{lilypond} で処理されます + +@end itemize + +入力ファイルの中では、楽譜は以下のコマンドのいずれかで特定されます: +@example + + YOUR LILYPOND CODE + + + + +@var{filename} + +@var{filename} +@end example + +記述例を挙げます: @example \key c \minor c4 es g2 @end example + @noindent -@command{lilypond-book} then produces an HTML file with appropriate image -tags for the music fragments: +上記のコードから @command{lilypond-book} は楽譜断片に対する適切な@c +画像タグを持つ HTML ファイルを作り出します: @lilypond[fragment,relative=2] \key c \minor c4 es g2 @end lilypond -For inline pictures, use @code{}, where the options -are separated by a colon from the music, for example +インライン画像を得るには、@code{} を使います。@c +以下のように、コロン @code{:} でオプションと楽譜コードを区切ります: @example Some music in a line of text. @end example - -To include separate files, say +HTML ファイルとは別に記述した lilypond ファイルを組み込むには@c +以下のようにします: @example @var{filename} @end example -Additionally, @code{} displays the current version -of lilypond. +@code{} は @code{} と同じ構文を使い、@c +LilyPond ファイルではなく MusicXML ファイルを参照します。 + +@code{lilypond} タグや @code{lilypondfile} タグで使用するオプションの@c +リストは、@ref{Music fragment options} を参照してください。 + +さらに、@code{} は lilypond のバージョン番号を表示します。 -@cindex titling in HTML -@cindex preview image -@cindex thumbnail +@cindex titling in HTML (HTML のタイトル) +@cindex preview image (プレビュー画像) +@cindex thumbnail (サムネイル) @node DocBook @subsection DocBook @translationof DocBook -@untranslated - -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. +LilyPond 断片を組み込む場合、DocBook ドキュメントとの適合を保つべきです。@c +そうすることで、DocBook のエディタや検証機能等を使うことができます。@c +そのため、カスタム タグは使わず、標準 DocBook 要素に基づく約束ごとだけを@c +使います。 @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}. +楽譜断片をインラインあるいはインラインではなく挿入するために、@c +@code{mediaobject} 要素と @code{inlinemediaobject} 要素を使います。@c +楽譜断片フォーマット オプションは常に最も内側の要素の @code{role} +プロパティの中に配置します (次のセクションを参照してください)。@c +タグは DocBook エディタがコンテンツをきれいにフォーマットすることを@c +可能にします。@c +@command{lilypond-book} で処理する DocBook ファイルの拡張子は +@file{.lyxml} にするべきです。 -@subheading Including a LilyPond file +@subheading LilyPond ファイルを組み込む -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: +これが最も簡単な方法です。@c +組み込むファイルの拡張子は @file{.ly} にして、それを以下に示す構造で@c +標準の @code{imageobject} として挿入する必要があります: @example @@ -530,15 +630,15 @@ the following structure: @end example -Note that you can use @code{mediaobject} or @code{inlinemediaobject} -as the outermost element as you wish. - -@subheading Including LilyPond code +必要に応じて、最も外側の要素に @code{mediaobject} または +@code{inlinemediaobject} を使うことができるということに注意してください。 -Including LilyPond code is possible by using a @code{programlisting}, -where the language is set to @code{lilypond} with the following -structure: +@subheading LilyPond コードを組み込む +@code{programlisting} を用いることで、LilyPond コードを@c +組み込むことができます。@c +以下の構造を用いて、@code{programlisting} の言語には @code{lilypond} を@c +セットします: @example @@ -552,139 +652,145 @@ structure: @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. +最も外側の要素は @code{mediaobject} または @code{inlinemediaobject} であり、@c +その中に @code{programlisting} を保持する @code{textobject} がありことが@c +見て取れます。 -@subheading Processing the DocBook document +@subheading DocBook ドキュメントを処理する -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. +@file{.lyxml} ファイルに対して @command{lilypond-book} を実行すると、@c +拡張子が @file{.xml} の有効な DocBook ドキュメントが作成され、@c +それを更に処理にかけることがでいます。@c +@uref{http://@/dblatex@/.sourceforge@/.net@/,dblatex} を使うと、@c +このドキュメントから自動的に PDF ファイルを作成することがでいます。@c +公式 DocBook スタイルシートを用いることで HTML (HTML ヘルプ、JavaHelp 等) +を生成することが可能ですが、カスタマイズが必要かもしれません。 -@node Music fragment options -@section Music fragment options +@node 楽譜断片オプション +@section 楽譜断片オプション @translationof Music fragment options -@untranslated +以下では、@q{LilyPond コマンド} は、これまでのセクションで説明した@c +楽譜断片を作り出すために @command{lilypond-book} によって処理される@c +任意のコマンドを意味します。@c +シンプルにするために、@LaTeX{} 構文の LilyPond コマンドだけを示します。 -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. +オプション文字列は左から右の順で解析されるということに注意してください。@c +あるオプションを複数指定した場合、最後のオプションが有効となります。 -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: +LilyPond コマンドで以下のオプションを使うことができます: @table @code @item staffsize=@var{ht} -Set staff size to @var{ht}, which is measured in points. +譜サイズを @var{ht} にセットします。単位はポイントです。 @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. +デフォルトの間隔を用いるため、行の右端が揃いません。@c +つまり、LilyPond コード断片に @code{ragged-right = ##t} を追加します。@c +明示的に @code{noragged-right} を指定しない限り、@c +1 行の楽譜断片はデフォルトでは常に ragged-right で譜刻されます。 @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. +楽譜断片が 1 行の場合に、譜の長さを行幅まで広げます。@c +つまり、LilyPond コード断片に @code{ragged-right = ##f} を追加します。 @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. +行幅を @var{size} にセットします。@var{unit} は単位です。@c +@var{unit} は以下の文字列のどれかです: @code{cm}, @code{mm}, @code{in}, +あるいは @code{pt}。@c +このオプションは LilyPond 出力 (つまり、楽譜断片の譜の幅に) に影響を@c +与えますが、テキスト レイアウトには影響を与えません。 + +引数無しで使用した場合、行幅はデフォルト値にセットされます +(試行錯誤的なアルゴリズムで算出される値です)。 + +@code{line-width} オプションが指定されなかった場合、@c +@command{lilypond-book} は @code{ragged-right} オプションを使用しない +@code{lilypond} 環境のデフォルトを推測しようと試みます。 -If used without an argument, set line width to a default value (as -computed with a heuristic algorithm). +@item papersize=@var{string} +@var{string} は @file{scm/paper.scm} で定義されている紙面サイズ +-- つまり、@code{a5}, @code{quarto}, @code{11x17} 等 -- です。 -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. +@file{scm/paper.scm} で定義されていない値は無視され、警告が発せられ、@c +楽譜断片はデフォルトの @code{a4} サイズで譜刻されます。 @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, +@command{lilypond-book} が常用コードを追加するので、@code{\layout}, +@code{\score} 等を入力する必要がなく、単に以下のように入力できます: @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. +楽譜断片の LilyPond コードに補完コードを追加しません。@c +これがデフォルトなので、通常、@code{nofragment} は不要です。 @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. +楽譜の最初の段のインデントを @var{size} にセットします。@c +@var{unit} は単位です。@c +@var{unit} は以下の文字列のどれかです: @code{cm}, @code{mm}, @code{in}, +あるいは @code{pt}。@c +このオプションは LilyPond に影響を与えますが、テキスト レイアウトには@c +影響を与えません。 @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. +楽譜の最初の段のインデントを 0 にセットします。@c +このオプションは LilyPond に影響を与えますが、テキスト レイアウトには@c +影響を与えません。@c +これがデフォルトなので、通常、@code{noindent} は不要です。 @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. +楽譜の両端に @math{0.4}@dmn{in} のインデントを挿入して、引用ブロックで@c +囲みます。@c +値 @q{0.4@dmn{in}} は @code{exampleindent} オプションで制御することが@c +できます。 @item exampleindent -Set the amount by which the @code{quote} option indents a music snippet. +@code{quote} オプションが楽譜断片に挿入するインデントの量をセットします。 @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. +相対オクターブ モードを使用します。@c +デフォルトでは、音符はミドル@tie{}C との相対関係で指定します。@c +オプションで指定する整数の引数は開始音符のオクターブを指定します +-- デフォルトの @code{1} はミドル@tie{}C です。@c +@code{relative} オプションは @code{fragment} オプションがセットされている@c +場合にのみ機能するため、@code{relative} オプションがセットされるとソース@c +の中の @code{(no)fragment} オプション有無にかかわらず @code{fragment} が@c +自動的、暗黙的にセットされます。 @end table -LilyPond also uses @command{lilypond-book} to produce its own -documentation. To do that, some more obscure music fragment options are -available. +LilyPond もそれ自体のドキュメントを作り出すのに @command{lilypond-book} +を使います。@c +LilyPond のドキュメントを作るために、さらに細かな楽譜断片オプションが@c +用意されています。 @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. +LilyPond コマンドの引数をそのまま出力ファイルにコピーして、ブロックで@c +囲み、その後に @code{intertext} オプションで与えられた任意のテキストが@c +続きます (@code{intertext} オプションはまだ実装されていません)。@c +それから実際の楽譜が表示されます。@c +段落の一部となっている @code{\lilypond@{@}} でこのオプションを指定@c +しても機能しません。 + +@code{lilypondfile} コマンドで @code{verbatim} を使用した場合、ソース +ファイルの一部だけをそのままコピーして囲むことができます。@c +ソース ファイルが @samp{begin verbatim} (引用符を除く) という文字列を@c +含むコメントを保持している場合、最後の @samp{begin verbatim} より後の@c +ソースが引用されます。@c +同様に、@samp{end verbatim} を含むコメントがあれば、ソースの引用は@c +最初の @samp{end verbatim} の前で終了します。@c +以下のソース ファイル例で、楽譜コードは相対モードで解釈されますが、@c +ソースの引用に @code{relative} ブロックは表示されません。@c +つまり、 @example \relative c' @{ % begin verbatim @@ -694,7 +800,7 @@ verbatim quote will not show the @code{relative} block, i.e. @end example @noindent -will be printed with a verbatim block like +上記のソースは以下のように引用されます。 @example c4 e2 g4 @@ -702,25 +808,27 @@ will be printed with a verbatim block like @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. +ソースの引用の中にあるコメントと変数名を翻訳したけれども、ソース自体の@c +中にあるコメントと変数名は翻訳したくない場合、環境変数 +@code{LYDOC_LOCALEDIR} をディレクトリ パスにセットします +-- セットしたディレクトリはドメインに @code{lilypond-doc} を指定した@c +@file{.mo} メッセージ カタログのツリーを保持する必要があります。 @item addversion -(Only for Texinfo output.) Prepend line @code{\version -@@w@{"@@version@{@}"@}} to @code{verbatim} output. +(Texinfo 出力専用です) @code{verbatim} 出力の先頭に @code{\version +@@w@{"@@version@{@}"@}} という行を追加します。 @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. +(Texinfo 出力専用です) 入力ファイル @file{foo.ly} に対して +@option{--header=@/texidoc} オプションを指定して @command{lilypond} +を呼び出した場合、入力ファイルの @code{\header} に @code{texidoc} +フィールドがあればファイル @file{foo.texidoc} が作成されます。@c +@code{texidoc} オプションは @command{lilypond-book} にそのようなファイル@c +をインクルードさせ、その内容を楽譜断片の直前 +(ただし、@code{quote} オプションによって生成される @code{example} 環境の@c +外側) にドキュメントとして追加させます。 -Assuming the file @file{foo.ly} contains +ファイル @file{foo.ly} は以下を保持していて、 @example \header @{ @@ -730,101 +838,96 @@ Assuming the file @file{foo.ly} contains @end example @noindent -and we have this in our Texinfo document @file{test.texinfo} +Texinfo ドキュメント @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. +たいていの LilyPond テスト ドキュメント (配布ソースの @file{input} +ディレクトリにあります) はこのような形の小さな @file{.ly} ファイルです。 -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. +ローカライズするために Texinfo ドキュメントが +@code{@@documentlanguage @var{LANG}} 保持していて、@file{foo.ly} のヘッダ@c +が @code{texidoc@var{LANG}} フィールドを保持している場合、@c +@option{--header=@/texidoc@var{LANG}} を付けて @command{lilypond} を@c +呼び出すと、@file{foo.texidoc} の代わりに @file{foo.texidoc@var{LANG}} +がインクルードされます。 @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}. +(Texinfo 出力専用です) このオプションは @code{texidoc} オプションと同じ@c +ような働きをします: @code{\header} に @code{doctitle} フィールドを持つ@c +入力ファイル @file{foo.ly} に対して @option{--header=@/doctitle} +オプションを指定して @command{lilypond} を呼び出した場合、@c +@file{foo.doctitle} が生成されます。@c +@code{doctitle} オプションを使用した場合、@file{foo.doctitle} の内容 +-- 1 行のテキスト @var{text} である必要があります -- は Texinfo +ドキュメントに @code{@@lydoctitle @var{text}} として挿入されます。@c +@code{@@lydoctitle} は Texinfo ドキュメントの中で定義されたマクロである@c +必要があります。@c +あとはローカライズされた言語に対する @code{texidoc} 処理と同じ説明@c +になります。 @item nogettext -(Only for Texinfo output.) Do not translate comments and variable -names in the snippet quoted verbatim. +(Texinfo 出力専用です) 楽譜ソース引用の中にあるコメントと変数名を翻訳@c +しません。 @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. +@code{\lilypondfile} で LilyPond 入力ファイルをインクルードした場合、@c +楽譜断片の直前にインクルードしたファイルの名前を表示します。@c +HTML 出力では、これはリンクになります。@c +ファイルのベース名だけが表示されます -- つまり、ファイル パスの@c +ディレクトリ部分は取り除かれます。 @end table -@node Invoking lilypond-book -@section Invoking @command{lilypond-book} +@node lilypond-book を呼び出す +@section @command{lilypond-book} を呼び出す @translationof Invoking lilypond-book -@untranslated - -@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. +@command{lilypond-book} は出力形式に応じて以下の拡張子の 1 つを持つ@c +ファイルを生成します: @file{.tex}, @file{.texi}, @file{.html}, あるいは +@file{.xml}。@c +@file{.tex}, @file{.texi}, それに @file{.xml} のファイルは更なる処理を@c +必要とします。 -@subheading Format-specific instructions +@subheading 各出力形式に特有の説明 @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. +印刷や公開のために @LaTeX{} ドキュメントを処理する方法は 2 つあります: +PDF@LaTeX{} を用いて直接 PDF ファイルを得ることができ、@command{dvips} +のような PostScript への変換プログラムを用いて DVI 経由で PostScript +ファイルを得ることができます。@c +1 つ目の方法は簡単で、お勧めです@footnote{PDF@LaTeX{} と @LaTeX{} の@c +どちらもすべての @LaTeX{} ドキュメントをコンパイルできるとは限らない@c +ことに注意してください。これが 2 つ目の方法を説明する理由です。}。@c +どのような方法を採るにせよ、Ghostscript パッケージに含まれる +@command{ps2pdf} と @command{pdf2ps} のようなツールを用いて PostScript +と PDF 間の変換は容易に行うことができます。 -To produce a PDF file through PDF@LaTeX{}, use +PDF@LaTeX{} を用いて PDF ファイルを作り出すには、以下のようにします: @example -lilypond-book --pdf yourfile.pdftex +lilypond-book --pdf yourfile.lytex pdflatex yourfile.tex @end example -@cindex outline fonts -@cindex type1 fonts +@cindex outline fonts (アウトライン フォント) +@cindex type1 fonts (type1 フォント) @cindex dvips -@cindex invoking dvips -To produce PDF output via @LaTeX{}/@command{dvips}/@command{ps2pdf}, you -should do +@cindex invoking dvips (dvips を呼び出す) +@LaTeX{}/@command{dvips}/@command{ps2pdf} 経由で PDF ファイルを作り出す@c +には、以下のようにします: @example lilypond-book yourfile.lytex @@ -834,53 +937,71 @@ 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. +このプロセスで作成される @file{.dvi} ファイルは符頭を保持していません。@c +それで通常です -- 以下の手順に従うと、@file{.ps} ファイルや @file{.pdf} +ファイルには符頭が含まれます。 + +@command{dvips} を実行するとフォントに関する警告が発せられます: +それらは無害で無視できます。@c +@command{latex} を 2 列モードで実行するのであれば、忘れずに +@command{dvips} のオプションに @option{-t landscape} を付け加えてください。 + +@knownissues +@code{\pageBreak} コマンドは @code{\begin@{lilypond@} @dots{} +\end@{lilypond@}} 環境の中では機能しません。 + +多くの @code{\paper} ブロック変数も @code{\begin@{lilypond@} @dots{} +\end@{lilypond@}} 環境の中では機能しません。@c +ドキュメント前文の中で @code{\betweenLilyPondSystem} を持つ +@code{\newcommand} を使ってください。 + +@example +\newcommand@{\betweenLilyPondSystem@}[1]@{\vspace@{36mm@}\linebreak@} +@end example -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. +(任意の出力形式の) Texinfo ドキュメントを作り出すには、Texinfo の通常の@c +手順を踏みます。@c +つまり、作り出そうとしている出力形式に応じて @command{texi2pdf} か +@command{texi2dvi} のどちらかを呼び出します。 @ifinfo -@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, and @ref{Creating an Info File, , , texinfo, GNU Texinfo}. +@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. +詳細は Texinfo のドキュメントを参照してください。 @end ifnotinfo -@subheading Command line options +@subheading コマンド ライン オプション -@command{lilypond-book} accepts the following command line options: +@command{lilypond-book} は以下のコマンド ライン オプションを受け付けます: @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}. +処理するドキュメントのタイプを指定します: @code{html}, @code{latex}, +@code{texi} (デフォルト), あるいは @code{docbook} です。@c +このオプションが無い場合、@command{lilypond-book} は形式を自動的に@c +検出しようとします -- @ref{Filename extensions} を参照してください。@c +今のところ、@code{texi} は @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. +@code{texi} ドキュメント タイプを指定すると、楽譜断片を持つ Texinfo +ファイルだけが作り出されます。@c +HTML バージョンで使う画像を得るには、@code{texi-html} を指定する必要が@c +あります。 @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, +楽譜ソース断片を @var{filter} に通します。@c +@code{lilypond-book} は @option{--filter} と @option{--process} +を一度に実行することはしません。@c +例を挙げます: @example lilypond-book --filter='convert-ly --from=2.0.0 -' my-book.tely @@ -888,23 +1009,34 @@ lilypond-book --filter='convert-ly --from=2.0.0 -' my-book.tely @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. +インクルード パスに @var{dir} を追加します。@c +@command{lilypond-book} はインクルード パスの中でコンパイル済みの楽譜断片@c +を見つけると、それらを出力ディレクトリに書き出しません。@c +そのため、@command{lilypond-book} を呼び出してから更に @command{makeinfo} +や @command{latex} 等のコマンドを同じ @option{-I @var{dir}} オプションを@c +付けて呼び出す必要がある場合があります。 + +@item -l @var{loglevel} +@itemx --loglevel=@var{loglevel} +出力の饒舌さを @var{loglevel} にセットします。@c +取り得る値は @code{NONE}, @code{ERROR}, @code{WARNING}, @code{PROGRESS} +(デフォルト), それに @code{DEBUG} です。@c +このオプションを使わなかった場合、環境変数 @code{LILYPOND_BOOK_LOGLEVEL} +がセットされ、その値が loglevel として使われます。 @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}. +生成されるファイルをディレクトリ @var{dir} に保存します。@c +@command{lilypond-book} を実行すると LilyPond が処理するための多くの小さな@c +ファイルが生成されます。@c +そのようなゴミがソース ディレクトリに混入することを防ぐには、@c +@option{--output} コマンド ライン オプションを使用して出力ディレクトリを@c +変更して、@command{latex} や @command{makeinfo} を実行する前にその@c +ディレクトリに移動します。 @example lilypond-book --output=out yourfile.lytex @@ -913,81 +1045,106 @@ 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. +lilypond 出力が見つからなくても処理を終了しません。@c +画像を持たない LilyPond Info ドキュメントを作成するために使います。 @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. +EPS ファイルを作成するための PNG 画像が見つからなくても処理を終了しません。@c +画像を持たない LilyPond Info ドキュメントを作成するために使います。 @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. +lily-XXX ファイルをディレクトリ @var{dir} に書き出し、@option{--output} +ディレクトリにリンクさせます。@c +このオプションは別々のディレクトリの中にあり、多くの楽譜断片を共有する@c +ドキュメントをビルドする時間を節約するために使います。 + +@itemx --lily-loglevel=@var{loglevel} +呼び出された @command{lilypond} の出力の饒舌さを @var{loglevel} にセット@c +します。@c +取り得る値は @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{BASIC_PROGRESS}, @code{PROGRESS}, @code{INFO} (デフォルト), +それに @code{DEBUG} です。@c +このオプションを使わなかった場合、環境変数 @code{LILYPOND_LOGLEVEL} +がセットされ、その値が loglevel として使われます。 @itemx --info-images-dir=@var{dir} -Format Texinfo output so that Info will look for images of music in -@var{dir}. +Texinfo 出力をフォーマットして、Info が @var{dir} の中にある楽譜画像を@c +探すようにします。 @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. +@command{latex} の代わりに実行可能な @command{prog} を実行します。@c +これは、例えばドキュメントを @command{xelatex} で処理する場合に有用です。 @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. +EPS ボックスのパディングを指定します。@c +@var{amount} の単位はミリメートルで、デフォルト値は 3.0 です。@c +このオプションは楽譜が右マージンに食い込む場合に使います。 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. +LilyPond コード断片を @var{command} を用いて処理します。@c +デフォルトのコマンドは @code{lilypond} です。@c +@code{lilypond-book} は @option{--filter} と @option{--process} +を一度に実行することはしません。 @item --pdf -Create PDF files for use with PDF@LaTeX{}. +PDF@LaTeX{} で PDF ファイルを作成します。 + +@item --redirect-lilypond-output +デフォルトでは、出力はターミナルに表示されます。@c +このオプションは全ての出力をソース ファイルと同じディレクトリにあるログ +ファイルにリダイレクトします。 + +@itemx --use-source-file-names +楽譜断片出力ファイルにソース ファイルと同じベース名を付けます。@c +このオプションは @code{lilypondfile} でインクルードされた楽譜断片に@c +対してのみ、更に @option{--output-dir} オプションと +@option{--lily-output-dir} オプションで指定されたディレクトリが異なる@c +場合にのみ機能します。 @item -V @itemx --verbose -Be verbose. +出力を饒舌にします。@c +これは @code{--loglevel=DEBUG} と等価です。 @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. +Texinfo コマンド @code{@@pagesizes} は解釈されません。@c +同様に、ドキュメント前文以降にあるマージンと行幅を変更する @LaTeX{} +コマンドも無視されます。 -Only the first @code{\score} of a LilyPond block is processed. +LilyPond ブロックの最初の @code{\score} だけが処理されます。 -@node Filename extensions -@section Filename extensions +@node ファイル拡張子 +@section ファイル拡張子 @translationof Filename extensions -@untranslated - -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. +入力ファイルに対して任意のファイル拡張子を使うことができます。@c +しかしながら、ある形式のファイルに対して推奨する拡張子を使わなかった場合、@c +手動で出力形式を指定する必要があるかもしれません +-- 詳細は @ref{Invoking lilypond-book} を参照してください。@c +推奨する拡張子を使えば、@command{lilypond-book} はその拡張子に基づいて@c +自動的に出力形式を選択します。 @quotation @multitable @columnfractions .2 .5 -@item @strong{extension} @tab @strong{output format} +@item @strong{拡張子} @tab @strong{出力形式} @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{} @@ -1000,85 +1157,271 @@ selects the output format based on the input filename's extension. @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}. +入力ファイルの拡張子を @command{lilypond-book} が出力ファイルに付ける@c +拡張子と同じで、入力ファイルが @command{lilypond-book} の作業ディレクトリ@c +に置かれている場合、@option{--output} オプションを使って +@command{lilypond-book} を実行する必要があります。@c +そうしないと、@qq{Output would overwrite input file} のようなエラー +メッセージが表示されて、終了します。 +@node lilypond-book テンプレート +@section lilypond-book テンプレート +@translationof lilypond-book templates -@node Alternate methods of mixing text and music -@section Alternative methods of mixing text and music -@translationof Alternate methods of mixing text and music +以下に示すテンプレートは @code{lilypond-book} で使います。@c +@code{lilypond-book} に馴染みが無いのであれば、@ref{lilypond-book} を@c +読んで下さい。 -@untranslated +@subsection LaTeX -This section shows methods to integrate text and music, different than -the automated method with @command{lilypond-book}. +LilyPond 断片を LaTex ドキュメントに組み込むことができます。 -@menu -* Many quotes from a large score:: -* Inserting LilyPond output into OpenOffice.org:: -* Inserting LilyPond output into other programs:: -@end menu +@example +\documentclass[]@{article@} -@node Many quotes from a large score -@unnumberedsubsec Many quotes from a large score -@translationof Many quotes from a large score +\begin@{document@} -@untranslated +通常の LaTeX テキスト。 -If you need to quote many fragments from a large score, you can also use -the clip systems feature, see @ruser{Extracting fragments of music}. +\begin@{lilypond@} +\relative c'' @{ + a4 b c d +@} +\end@{lilypond@} +次の LaTeX テキスト。オプションは角括弧の中に入れます。 -@node Inserting LilyPond output into OpenOffice.org -@unnumberedsubsec Inserting LilyPond output into OpenOffice.org -@translationof Inserting LilyPond output into OpenOffice.org +\begin@{lilypond@}[fragment,relative=2,quote,staffsize=26,verbatim] +d4 c b a +\end@{lilypond@} +\end@{document@} +@end example -@untranslated +@subsection Texinfo -@cindex OpenOffice.org +LilyPond 断片を Texinfo に組み込むことができます。@c +実際、このマニュアル全体が Texinfo で記述されています。 -LilyPond notation can be added to OpenOffice.org with -@uref{http://@/ooolilypond@/.sourceforge@/.net@/,OOoLilyPond}. +@example +\input texinfo @c -*-texinfo-*- +@@node Top +@@top +@translationof Top +Texinfo テキスト -@node Inserting LilyPond output into other programs -@unnumberedsubsec Inserting LilyPond output into other programs -@translationof Inserting LilyPond output into other programs +@@lilypond +\relative c' @{ + a4 b c d +@} +@@end lilypond -@untranslated +次の Texinfo テキスト。オプションは角括弧の中に入れます。 -To insert LilyPond output in other programs, use @code{lilypond} -instead of @code{lilypond-book}. Each example must be created -individually and added to the document; consult the documentation for -that program. Most programs will be able to insert LilyPond output in -@file{PNG}, @file{EPS}, or @file{PDF} formats. +@@lilypond[verbatim,fragment,ragged-right] +d4 c b a +@@end lilypond -To reduce the white space around your LilyPond score, use -the following options +@@bye +@end example + + +@subsection html @example -\paper@{ - indent=0\mm - line-width=120\mm - oddFooterMarkup=##f - oddHeaderMarkup=##f - bookTitleMarkup = ##f - scoreTitleMarkup = ##f + + + + + +

+ +以下のように、lilypond-book 用のドキュメントには自由に楽譜と +テキストを組み合わせることができます。 + +\relative c'' @{ + a4 b c d @} + +

+ +

+次の lilypond コードにはオプションをつけます + + +a4 b c d + +

+ + + + -@{ c1 @} @end example -To produce a useful @file{EPS} file, use +@subsection xelatex -@example -lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts myfile.ly +@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. -@file{PNG}: -lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png myfile.ly +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 目次を共有する +@section 目次を共有する +@translationof Sharing the table of contents + +この機能はすでに OrchestralLily パッケージで用意されています: + +@example +@url{http://repo.or.cz/w/orchestrallily.git} @end example +より自由度の高いテキスト処理をするために、lilypond から目次をエクスポート@c +して、@LaTeX{} に読み込ませる方法を好むユーザもいるかもしれません。 + +@subsubheading LilyPond から目次をエクスポートする + +以下のコードは、複数の楽章を 1 つのファイルに出力するものと仮定しています。 + +@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 LaTeX に目次をインポートする + +LaTeX ファイルのヘッダ中に以下を記述します: + +@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 +ここで、@code{\includescore} は以下のように定義されています: + +@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 テキストと楽譜を組み合わせる他の方法 +@section テキストと楽譜を組み合わせる他の方法 +@translationof Alternative methods of mixing text and music + +@command{lilypond-book} を使わずにテキストと楽譜を組み合わせる方法を +@ref{LilyPond output in other programs} で説明しています。. diff --git a/Documentation/ja/usage/running.itely b/Documentation/ja/usage/running.itely index 01c60ad00b..f65dfdc765 100644 --- a/Documentation/ja/usage/running.itely +++ b/Documentation/ja/usage/running.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -60,9 +60,10 @@ OS のコマンド ラインの使用方法についての説明は@c @menu * lilypond を呼び出す:: -* lilypond のコマンド ライン オプション:: +* LilyPond の基本的なコマンド ライン オプション:: +* LilyPond の高度なコマンド ライン オプション:: * 環境変数:: -* LilyPond in chroot jail:: +* chroot jail 環境で LilyPond を実行する:: @end menu @node lilypond を呼び出す @@ -79,7 +80,7 @@ lilypond [@var{option}]@dots{} @var{file}@dots{} 拡張子を持たないファイル名で呼び出された場合、@c @file{.ly} が最初に試されます。@c -sudin から入力を読み込む場合には、@c +stdin から入力を読み込む場合には、@c @var{file} に対してダッシュ (@code{-}) を使用します。 @file{filename.ly} が処理されると、@c @@ -87,7 +88,8 @@ lilypond は出力として @file{filename.ps} と @file{filename.pdf} を作り いくつかのファイルを指定することもできます。@c その場合、それらのファイルは個々に処理されます。@c @footnote{GUILE のステータスは @code{.ly} 処理後にリセットされません。@c -そのため、Scheme 内部からいかなるシステム デフォルトも変更しないよう注意してください。} +そのため、Scheme 内部からいかなるシステム デフォルトも変更しないよう@c +注意してください。} @file{filename.ly} が複数の @code{\score} を含んでいる場合、@c 2 つ目以降の score は @@ -129,9 +131,9 @@ lilypond は出力として @file{filename.ps} と @file{filename.pdf} を作り これらはシェル コマンドであり、lilypond とは無関係です。 -@node lilypond のコマンド ライン オプション -@unnumberedsubsec @command{lilypond} のコマンド ライン オプション -@translationof Command line options for lilypond +@node LilyPond の基本的なコマンド ライン オプション +@unnumberedsubsec Lilypond の基本的なコマンド ライン オプション +@translationof Basic command line options for LilyPond @cindex Invoking @command{lilypond} (@command{lilypond} を呼び出す) @cindex command line options for @command{lilypond} (@command{lilypond} のためのコマンド ライン オプション) @@ -142,232 +144,85 @@ lilypond は出力として @file{filename.ps} と @file{filename.pdf} を作り @table @code +@item -d,--define-default=@var{var}=@var{val} +@ref{Advanced command line options for LilyPond} を参照してください。 + +@cindex Scheme, expression evaluation (Scheme 表記の評価) +@cindex expression evaluation, Scheme (Scheme 表記の評価) + @item -e,--evaluate=@var{expr} @file{.ly} ファイルを解析する前に Scheme @var{expr} を評価します。@c 複数の @code{-e} オプションが与えられた場合、それらは順番に評価されます。 -表記は @code{guile-user} モジュールの中で評価されます。@c +Scheme 表記は @code{guile-user} モジュールの中で評価されます。@c そのため、@var{expr} の中で定義を使いたいのならば、@c -@code{.ly} ファイルに以下をインクルードして: +コマンド ラインで以下を使用して、 @example -#(use-modules (guile-user)) +lilypond -e '(define-public a 42)' @end example @noindent -コマンド ラインで以下を使用します: +@code{.ly} ファイルの先頭に以下を含めます: @example -lilypond -e '(define-public a 42)' +#(use-modules (guile-user)) @end example +@warning{Windows ユーザはシングル クォートではなく、@c +ダブル クォートを使う必要があります。} +@cindex output, format (出力のフォーマット) +@cindex format, output (出力のフォーマット) @item -f,--format=@var{format} フォーマットを指定します。@c -@code{format} には @code{svg}, @code{ps}, @code{pdf}, @code{png} を選択します。 +@code{format} の選択肢は @code{ps}, @code{pdf}, それに @code{png} です。 例: @code{lilypond -fpng @var{filename}.ly} - - -@item -d,--define-default=@var{var}=@var{val} -これは内部プログラム オプション @var{var} に -Scheme 値 @var{val} をセットします。@c -@var{val} が提供されていない場合、@var{#t} が使用されます。@c -オプションを OFF にするには、@var{var} の接頭辞として @code{no-} を付けます。@c -つまり、 - -@cindex point and click, command line (コマンド ラインからポイント&クリックを制御する) - -@example --dno-point-and-click -@end example - -@noindent -は -@example --dpoint-and-click='#f' -@end example -と同じです。 - -ここで興味深いオプションをいくつか挙げます。 - -@table @samp -@item help -@code{lilypond -dhelp} を実行すると@c -使用可能な @code{-d} オプションがすべて表示されます。 - -@cindex paper-size, command line (コマンドラインで paper-size を指定する) - -@item paper-size -このオプションはデフォルトの用紙サイズをセットします。 -@example --dpaper-size=\"letter\" -@end example - -@noindent -文字列はエスケーブされたクォート ( @code{\"} ) で@c -囲まれていなければならないということに注意してください。 -@c Match " in previous line to help context-sensitive editors - -@item safe -@code{.ly} 入力を信用してはいけません。 - -Web サーバを通じて LilyPond フォーマットが利用可能な場合、@c -@code{--safe} オプションか @code{--jail} オプションの@c -どちらかを@b{渡さなければなりません}。@c -@code{--safe} オプションは@c -以下のようなインライン Scheme コードが大混乱をもたらすことを防ぎます: - -@quotation -@verbatim -#(system "rm -rf /") -{ - c4^#(ly:export (ly:gulp-file "/etc/passwd")) -} -@end verbatim -@end quotation - -訳者: #(system "rm -rf /") はルート ディレクトリ以下を削除し、@c -export (ly:gulp-file "/etc/passwd") はパスワード ファイルをエクスポートします。 - -@code{-dsafe} オプションはインライン Scheme 表記を@c -特別なセーフ モジュールの中で評価します。@c -このセーフ モジュールは GUILE @file{safe-r5rs} モジュールから派生したものですが、@c -LilyPond API 関数をいくつか追加しています。@c -これらの関数は @file{scm/safe-lily.scm} でリスト アップされています。 - -さらに、セーフ モードは @code{\include} 指示を却下し、@c -@TeX{} 文字列の中にあるバックスラッシュを無効にします。 - -セーフ モードでは、LilyPond 変数を Scheme にインポートすることはできません。 - -@code{-dsafe} はリソースの乱用を検出@emph{しません}。@c -例えば循環データ構造体をバックエンドに食わせることで、@c -プログラムをハングさせることは可能です。@c -そのため、パブリックにアクセス可能な Web サーバ上で LilyPond を使用する場合、@c -そのプロセスの CPU とメモリの両方の使用は制限されるべきです。 - -セーフ モードは多くの有用な LilyPond 断片がコンパイルされることを妨げます。@c -@code{--jail} はより安全な代替オプションですが、@c -セット アップにより多くの作業を必要とします。 - -@cindex output format, setting (出力フォーマットを設定する) -@item backend -バックエンドに対して使用する出力フォーマットを指定します。@c -@code{format} の選択肢には以下があります: -@table @code -@item ps -@cindex PostScript output (PostScript 出力) - PostScript - - Postscript ファイルは TTF, Type1, OTF フォントを含んでいます。@c -これらのフォントのサブセット化 -(訳者: フォント セットを使用するフォントに限定すること) は行われません。@c -東洋の文字セットを使用する場合、巨大なファイルになる可能性があります。 - -@item eps - 縮約された PostScript (EPS)。@c -これは各ページ (システム) を@c -フォントを持たない個別の @file{EPS} ファイルとして吐き出し、@c -フォントを含めたすべてのページ (システム) を持つ -@file{EPS} ファイルを 1 つ吐き出します。 - -このモードは @command{lilypond-book} でデフォルトで使用されます。 - -@item svg -@cindex SVG (Scalable Vector Graphics) - SVG (Scalable Vector Graphics)。@c -これは各ページを@c -フォントを埋め込まれた個別の @file{SVG} ファイルとして吐き出します。@c -埋め込みフォントをサポートする SVG ビューアか@c -埋め込みフォントを OTF フォントに置き換える機能を持つ SVG ビューアが必要になります。@c -UNIX では、@c -@uref{http://www.inkscape.org,Inkscape} (バージョン 0.42 以降) を@c -使うことになるかもしれません。@c -使用前に、OTF フォントを LilyPond ディレクトリ -(一般には @file{/usr/share/lilypond/VERSION/fonts/otf/}) から -@file{~/.fonts/} にコピーしてください。 -@item scm -@cindex Scheme dump (Scheme ダンプ) - 生データ -- 内部 Scheme ベース描画コマンド -- を吐き出します。 - -@item null - 譜刻された楽譜を出力しません。@c -@code{-dno-print-pages} と同じ効果を持ちます。 -@end table - -例: @code{lilypond -dbackend=svg @var{filename}.ly} - -@item preview -タイトルとファイル システム情報を保持している出力ファイルを生成します。 -@item print-pages - -すべてのページを生成します。@c -デフォルトです。@code{-dno-print-pages} は -@code{-dpreview} と組み合わせて使うと有用です。 - -@end table - - - @item -h,--help 使用方法の要約を表示します。 @item -H,--header=@var{FIELD} ヘッダ フィールドをファイル @file{BASENAME.@var{FIELD}} に吐き出します。 -@item --include, -I=@var{directory} -@var{directory} を入力ファイルのサーチ パスに追加します。 -@cindex file searching (ファイル検索) -@cindex search path (サーチ パス) - @item -i,--init=@var{file} init ファイルとして @var{file} をセットします (デフォルト: @file{init.ly})。 -@item -o,--output=@var{FILE} -デフォルトの出力ファイルとして @var{FILE} をセットします。@c -適切な接尾辞が追加されます (つまり、pdf ならば拡張子 @code{.pdf} が追加されます)。 - -@item --ps -PostScript を生成します。 - -@item --png -各ページの図を PNG フォーマットで生成します。@c -これは内部で @code{--ps} を使用します。@c -画像の DPI 解像度は以下のようにセットします: -@example --dresolution=110 -@end example +@cindex file searching (ファイル サーチ) +@cindex search path (サーチ パス) -@item --pdf -PDF を生成します。@c -これは内部で @code{--ps} を使用します。 +@item -I, --include=@var{directory} +@var{directory} を入力ファイルのサーチ パスに追加します。 +複数の -I オプションを与えることができます。@c +検索は最初に指定されたディレクトリから開始され、@c +入力ファイルが見つからない場合は次に指定されたディレクトリを検索します。 +@cindex chroot jail, running inside (chroot jail 内部で実行する) @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir} @command{lilypond} を chroot jail 環境で実行します。@c (訳者: chroot jail 環境とはセキュリティのために@c カレント プロセスに対してルート ディレクトリの位置を変更すること。) -@code{--jail} オプションは、@c -Web サーバを通じて LilyPond 譜刻を実行するときや -LilyPond が外部から提供されたソースを実行するときに、@c -@code{--safe} よりも自由度の高い代替手段を提供します。 +@option{--jail} オプションは、@c +Web サーバ経由で LilyPond 譜刻を提供する時や +LilyPond が外部ソースから送られてきたコマンドを実行する時に、@c +@code{--dsafe} よりも自由度の高い代替手段を提供します。 @code{--jail} オプションはコンパイル プロセスの開始直前に -@command{lilypond} の ルートを @var{jail} に変更します。@c -それからユーザとグループを提供された環境にマッチするように変更し、@c -カレント ディレクトリは @var{dir} に変更されます。@c -このセットアップは jail (牢獄) から抜け出せないということを -(少なくとも理論的には) 保証します。@c -@code{--jail} を指定した @command{lilypond} の実行は@c -root (ユーザ名) として行われる必要があります。@c -通常、これは @command{sudo} を用いた安全な方法で行われます。 - -jail のセットアップは少々デリケートな問題です。@c +@command{lilypond} のルート ディレクトリを @var{jail} に変更します。@c +それから、ユーザとグループを @var{user} と @var{group} に変更して、@c +カレント ディレクトリを @var{dir} に変更します。@c +これにより、jail (牢獄) から抜け出せないことを (少なくとも理論上は) +保証します。@c +@code{--jail} を指定した @command{lilypond} の実行は root (ユーザ名) +として行う必要があります。@c +通常、これは @command{sudo} を用いた安全な方法で行います。 + +jail のセットアップは比較的複雑な問題です。@c LilyPond がソースをコンパイルするのに必要とされるものすべてを @emph{jail の内部} で見つけられるということを保証しなければならないからです。@c 一般的なセットアップには以下の項目が含まれます: @@ -386,8 +241,9 @@ LilyPond が許可されたディスク容量以上には書き込めないと @item 専用のユーザをセットアップする jail 内部で LilyPond を実行する際、@c -低い権限を持つ専用のユーザとグループ (仮に @code{lily}/@code{lily} とします) で@c -行うべきです。@c +低い権限を持つ専用のユーザとグループ +(仮に @code{lily}/@code{lily} とします) +で行うべきです。@c このユーザが書き込み可能なディレクトリが 1 つだけ存在すべきであり、@c それを @var{dir} に渡します。 @@ -413,11 +269,79 @@ jail モードでの LilyPond の実行はスーパーユーザ権限で行わ (もちろん、その権限はすぐに外されます)、@c たぶん @command{sudo} を使います。@c LilyPond が使用可能な CPU 時間を数秒に制限する -(例えば、@command{ulimit -t} を使って) というのは良いアイディアです。@c +(例えば、@command{ulimit -t} を使って) というのも良い方法です。@c さらに、OS がサポートしているのなら、@c -割り当て可能なメモリ容量を制限するというのも良いアイディアです。 +割り当て可能なメモリ容量を制限するというのも良い方法です。@c +@ref{LilyPond in chroot jail} も参照してください。 +@end table + +@cindex loglevel (ログレベル) +@cindex output, verbosity (出力の饒舌さ) + +@item -l,--loglevel=@var{LEVEL} +コンソール出力の饒舌さを @var{LEVEL} にセットします。@c +取り得る値は以下の通りです: + +@table @code + +@item NONE +何も出力しません。エラー メッセージさえも出力しません。 + +@item ERROR +エラー メッセージだけを出力します。警告や進捗メッセージは出力しません。 + +@item WARN +警告とエラー メッセージを出力し、進捗メッセージは出力しません。 + +@item BASIC_PROGRESS +基本的な進捗メッセージ (成功メッセージ)、警告、それにエラー メッセージを@c +出力します。 + +@item PROGRESS +しべての進捗メッセージ、警告とエラー メッセージを出力します。 + +@item INFO (デフォルト) +進捗メッセージ、警告、エラーそれに追加の実行情報を出力します。 + +@item DEBUG +饒舌なデバッグ出力を含む、出力可能なメッセージをすべて出力します。 + @end table +@cindex directory, redirect output (出力をディレクトリにリダイレクトする) +@cindex output, setting filename (出力のファイル名を設定する) +@cindex output, directory (出力ディレクトリ) + +@item -o,--output=@var{FILE} or @var{FOLDER} +デフォルトの出力ファイルとして @var{FILE} をセットします。@c +セットした名前のフォルダが存在する場合、そのフォルダに出力されます。@c +適切な接尾辞が追加されます +(つまり、pdf ならば拡張子 @code{.pdf} が追加されます)。 + +@cindex PS (Postscript), output (PS (PostScript) 出力) +@cindex Postscript (PS), output (PostScript (PS) 出力) +@cindex output, PS (Postscript) (PS (PostScript) 出力) + +@item --ps +PostScript を生成します。 + +@cindex PNG (Portable Network Graphics), output (PNG 出力) +@cindex output, PNG (Portable Network Graphics) (PNG 出力) + +@item --png +各ページの図を PNG フォーマットで生成します。@c +これは内部で @code{--ps} を使用します。@c +画像の DPI 解像度は以下のようにセットします: +@example +-dresolution=110 +@end example + +@cindex PDF (Portable Document Format), output (PDF 出力) +@cindex output, PDF (Portable Document Format) (PDF 出力) + +@item --pdf +PDF を生成します。@c +これは内部で @code{--ps} を使用します。 @item -v,--version バージョン情報を表示します。 @@ -429,8 +353,375 @@ LilyPond が使用可能な CPU 時間を数秒に制限する @item -w,--warranty GNU LilyPond の保証責任を表示します。@c (GNU LilyPond には@strong{保証責任はありません}!) + +@end table + + +@node LilyPond の高度なコマンド ライン オプション +@unnumberedsubsec LilyPond の高度なコマンド ライン オプション +@translationof Advanced command line options for LilyPond + +@table @code + +@item -d@var{[option-name]}=@var{[value]},--define-default=@var{[option-name]}=@var{[value]} +これは相当する内部 Scheme 関数に @var{value} をセットします。@c +@var{value} が提供されない場合、デフォルト値が使われます。@c +@var{option-name} に接頭辞 @code{no-} を付けてオプションを @q{off} に@c +することができます。例えば、 + +@cindex point and click, command line (コマンド ラインでポイント&クリックを指定する) + +@example +-dpoint-and-click=#f +@end example + +@noindent +は +@example +-dno-point-and-click +@end example +と同じです。 @end table +@noindent 以下にサポートされるオプションをデフォルト値とともに示します: + +@multitable @columnfractions .33 .16 .51 +@item @strong{シンボル} +@tab @strong{値} +@tab @strong{説明/オプション} + +@item @code{anti-alias-factor} +@tab @code{1} +@tab (与えられた因数を用いて) 高解像度で描画して、その結果をスケール +ダウンすることにより、@code{PNG} 画像の輪郭がギザギザになることを防ぎます。 + +@item @code{aux-files} +@tab @code{#t} +@tab @code{EPS} バックエンドの中に @code{.tex}, @code{.texi}, +@code{.count} ファイルを作成します。 + +@item @code{backend} +@tab @code{'ps} +@tab バックエンドを選択します。Postscript ファイル (デフォルト) は@c +@code{TTF}, @code{Type1}, それに @code{OTF} フォントを内包します。@c +フォントのサブセットは作成されません。@c +@q{東洋} の文字セットを用いるとファイルが非常に大きくなる可能性があります。 + +@item +@tab @code{'eps} +@tab Encapsulated PostScript。これはフォントを持たないページ (段) 毎の +@file{EPS} ファイルと、フォントを内包するすべてのページ (段) を 1 つに@c +まとめた @file{EPS} ファイルを吐き出します。@c +@command{lilypond-book} はデフォルトでこのオプションを使用します。 + +@item +@tab @code{'null} +@tab 楽譜を出力しません。@code{-dno-print-pages} と同じ効果を持ちます。 + +@item +@tab @code{'svg} +@tab Scalable Vector Graphics。これはページ毎に埋め込みフォントを持たない +@code{SVG} ファイルを作成します。@c +最適な描画を得るために、Century Schoolbook フォントをインストールすること@c +を推奨します。このフォントは LilyPond のインストールに含まれています。@c +UNIX では、このフォントを LilyPond ディレクトリ (通常は、 +@file{/usr/share/lilypond/VERSION/fonts/otf/}) から @file{~/.fonts/} に@c +コピーするだけです。この @code{SVG} 出力は任意の SVG エディタやユーザ +エージェントと互換性があります。@c +SVG バックエンドの中で woff フォント ファイルを使うためのオプション +@code{svg-woff} (この表の下にあります) もあります。 + +@item +@tab @code{'scm} +@tab 内部的な Scheme ベースの描画コマンドを吐き出します。 + +@c 未訳 +@item @code{check-internal-types} +@tab @code{#f} +@tab Check every property assignment for types. + +@item @code{clip-systems} +@tab @code{#f} +@tab Generate cut-out snippets of a score. + +@item @code{datadir} +@tab +@tab Prefix for data files (read-only). + +@item @code{debug-gc} +@tab @code{#f} +@tab Dump memory debugging statistics. + +@item @code{debug-gc-assert-parsed-dead} +@tab @code{#f} +@tab For memory debugging: Ensure that all references to parsed objects +are dead. This is an internal option, and is switched on automatically +for @code{`-ddebug-gc'}. + +@item @code{debug-lexer} +@tab @code{#f} +@tab Debug the flex lexer. + +@item @code{debug-page-breaking-scoring} +@tab @code{#f} +@tab Dump scores for many different page breaking configurations. + +@item @code{debug-parser} +@tab @code{#f} +@tab Debug the bison parser. + +@item @code{debug-property-callbacks} +@tab @code{#f} +@tab Debug cyclic callback chains. + +@item @code{debug-skylines} +@tab @code{#f} +@tab Debug skylines. + +@item @code{delete-intermediate-files} +@tab @code{#t} +@tab コンパイルの途中で作成される使用しない中間ファイル @code{.ps} を@c +削除します。 + +@item @code{dump-cpu-profile} +@tab @code{#f} +@tab CPU 時間情報を吐き出します (システムに依存します)。 + +@item @code{dump-profile} +@tab @code{#f} +@tab 各ファイルのメモリと CPU 時間情報を吐き出します。 + +@c 未訳 +@item @code{dump-signatures} +@tab @code{#f} +@tab Dump output signatures of each system. Used for regression testing. + +@item @code{eps-box-padding} +@tab @code{#f} +@tab 出力される EPS の左端に与えられた数の余白を追加します +(単位は mm です)。 + +@item @code{gs-load-fonts} +@tab @code{#f} +@tab Ghostscript 経由でフォントを読み込みます。 + +@item @code{gs-load-lily-fonts} +@tab @code{#f} +@tab Ghostscript 経由でフォントだけを読み込みます。 + +@item @code{gui} +@tab @code{#f} +@tab 出力を表示せずに処理を行い、すべての出力をログ ファイルに@c +リダイレクトします。 +@end multitable + +@noindent +@strong{Windows ユーザへの注意:} @code{lilypond.exe} がデフォルトで@c +すべての進捗情報をコマンド ウィンドウに出力するのに対して、@c +@code{lilypond-windows.exe} は進捗情報を出力しません。@c +@option{-dgui} オプションを用いることで、出力をログ ファイルに@c +リダイレクトさせることができます。 + +@multitable @columnfractions .33 .16 .51 +@item @code{help} +@tab @code{#f} +@tab このヘルプを表示します。 + +@item @code{include-book-title-preview} +@tab @code{#t} +@tab プレビュー画像にブック タイトルを含めます。 + +@item @code{include-eps-fonts} +@tab @code{#t} +@tab システム毎の EPS ファイルにフォントを含めます。 + +@item @code{include-settings} +@tab @code{#f} +@tab グローバル設定のファイルをインクルードします。このファイルは楽譜の@c +処理が開始する前にインクルードされます。 + +@item @code{job-count} +@tab @code{#f} +@tab 与えられた数のジョブで、並行して処理します。 + +@item @code{log-file} +@tab @code{#f [file]} +@tab 2 番目の引数として文字列 @code{FOO} が与えられた場合、出力を@c +ログ ファイル @code{FOO} にリダイレクトします。 + +@item @code{max-markup-depth} +@tab @code{1024} +@tab マークアップ ツリーの階層の最大値です。それよりも深い階層を持つ@c +マーックアップがある場合、そのマークアップは終了していないと見なされて、@c +警告が表示され、null マークアップが返されます。 + +@item @code{midi-extension} +@tab @code{"midi"} +@tab MIDI 出力ファイルのデフォルトのファイル拡張子を与えられた文字列に@c +設定します。 + +@c 未訳 +@item @code{music-strings-to-paths} +@tab @code{#f} +@tab Convert text strings to paths when glyphs belong to a music font. + +@item @code{old-relative} +@tab @code{#f} +@tab 同時進行する音楽のための @code{\relative} モードを和音構文と同じように@c +機能させます。 + +@item @code{paper-size} +@tab @code{\"a4\"} +@tab デフォルトの紙面サイズを設定します。文字列をエスケープ記号付の 2 重@c +引用符 @code{\"} で囲む必要があることに注意してください。 + +@item @code{pixmap-format} +@tab @code{png16m} +@tab 画像出力のための GhostScript の出力フォーマットを設定します。 + +@item @code{point-and-click} +@tab @code{#f} +@tab @code{PDF} 出力に @q{ポイント&クリック} リンクを付け加えます。@c +@ref{Point and click} を参照してください。 + +@item @code{preview} +@tab @code{#f} +@tab 通常の出力に加えてプレビュー画像を作成します。 +@end multitable + +@noindent +このオプションはすべてのバックエンド +-- @code{pdf}, @code{png}, @code{ps}, @code{eps}, それに @code{svg} -- +でサポートされますが、@code{scm} ではサポートされません。@c +このオプションはタイトルと楽譜の最初の段を保持するファイル +-- @code{myFile.preview.extension} という形式のファイル名を持ちます -- +を出力します。@c +@code{\book} ブロックや @code{\bookpart} ブロックが使われている場合、@c +@code{\book}, @code{\bookpart}, それに @code{\score} のタイトルが出力@c +に譜刻され、@code{\paper} 変数 @code{print-all-headers} が @code{#t} に@c +セットされている場合は各 @code{\score} ブロックの最初の段も譜刻されます。 + +通常の出力を抑制するには、必要に応じて @option{-dprint-pages} オプション@c +または @option{-dno-print-pages} オプションを使ってください。 + +@multitable @columnfractions .33 .16 .51 +@item @code{print-pages} +@tab @code{#t} +@tab すべてのページを生成します。これがデフォルトです。@option{-dpreview} +を使う場合は @option{-dno-print-pages} を組み合わせると有用です。 + +@item @code{profile-property-accesses} +@tab @code{#f} +@tab @code{get_property()} 関数呼び出しの統計を取ります。 + +@item @code{protected-scheme-parsing} +@tab @code{#t} +@tab パーサでインライン Scheme のエラーが発生しても処理を続けます。@c +@code{#f} に設定されている場合、エラー終了して、スタック トレースを表示@c +します。 + +@item @code{read-file-list} +@tab @code{#f [file]} +@tab 処理する入力ファイルのリストを保持するファイルを指定します。 + +@item @code{relative-includes} +@tab @code{#f} +@tab @code{\include} コマンドを処理するとき、インクルードするファイルを@c +(ルート ファイルからではなく) カレント ファイルからの相対位置で検索します。 + +@item @code{resolution} +@tab @code{101} +@tab 生成する @code{PNG} 画像の解像度を与えられた値に設定します。@c +単位は dpi です。 + +@item @code{safe} +@tab @code{#f} +@tab @code{.ly} 入力ファイルを信用しません。 +@end multitable + +@noindent +Web サーバ経由で LilyPond 譜刻が利用可能な場合、@option{--safe} +オプションか @option{--jail} オプションのどちらかを +@b{指定する必要があります}。@c +@option{--safe} オプションはインライン Scheme コードが無茶をする +-- 例えば、以下のような -- ことを防ぎます。 + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^$(ly:gulp-file "/etc/passwd") +} +@end verbatim +@end quotation + +@option{-dsafe} オプションはインライン Scheme 表記を特別なセーフ +モジュールの中で評価します。@c +これは GUILE @file{safe-r5rs} モジュールに由来しますが、@c +@file{scm/safe-lily.scm} でリスト アップされている LilyPond API 関数の@c +いくつかも追加されています。 + +さらに、セーフ モードでは @code{\include} は許可されず、@TeX{} 文字列の@c +中でバックスラッシュを使うこともできません。@c +また、セーフ モードでは LilyPond 変数を Scheme にインポートすることも@c +できません。 + +@option{-dsafe} はリソースの過使用を検出 @emph{しません} ので、@c +このオプションを指定してもプログラムをハングさせられる可能性があります +-- 例えば、サイクリック (巡回) データ構造をバックエンドに埋め込むことに@c +よってです。 +そのため、LilyPond を一般公開する Web サーバで使用する場合、プロセスの@c +CPU とメモリ使用を制限すべきです。 + +セーフ モードは多くの有用な LilyPond 楽譜断片がコンパイルすることを@c +妨げます。 + +@option{--jail} はさらに安全な代替手段ですが、セットアップにかかる手間も@c +増えます。@ref{Basic command line options for LilyPond} を参照してください。 + +@multitable @columnfractions .33 .16 .51 +@item @code{separate-log-files} +@tab @code{#f} +@tab 入力ファイル @code{FILE1.ly}, @code{FILE2.ly}, ... に対するログ +データをファイル @code{FILE1.log}, @code{FILE2.log}, ... に出力します。 + +@item @code{show-available-fonts} +@tab @code{#f} +@tab 使用可能なフォント名をリスト アップします。 + +@item @code{strict-infinity-checking} +@tab @code{#f} +@tab 浮動小数点の例外 @code{Inf} と @code{NaN} に遭遇した時、@c +強制終了します。 + +@item @code{strip-output-dir} +@tab @code{#t} +@tab 出力ファイル名を構築する時に入力ファイルのディレクトリを使用@c +しません。 + +@item @code{svg-woff} +@tab @code{#f} +@tab SVG バックエンドの中で woff フォントを使用します。 + +@item @code{trace-memory-frequency} +@tab @code{#f} +@tab Scheme セルの 1 秒毎の使用数を記録します。結果を @code{FILE.stacks} +と @code{FILE.graph} に吐き出します。 + +@item @code{trace-scheme-coverage} +@tab @code{#f} +@tab Scheme ファイルの適用範囲を @code{FILE.cov} に記録します。 + +@item @code{verbose} +@tab @code{#f} +@tab 饒舌な出力。つまり、loglevel を DEBUG に設定します。 + +@item @code{warning-as-error} +@tab @code{#f} +@tab すべての警告と @q{プログラミング エラー} をエラーに変更します。 +@end multitable + + @node 環境変数 @unnumberedsubsec 環境変数 @translationof Environment variables @@ -449,7 +740,18 @@ GNU LilyPond の保証責任を表示します。@c @item LANG これは警告メッセージの言語を選択します。 +@item LILYPOND_LOGLEVEL +デフォルトのログレベル。@c +明示的にログレベルが指定されずに LilyPond が呼び出された場合 +(すなわち @option{--loglevel} コマンド ライン オプションが@c +指定されなかった場合)、@c +この値が使用されます。 + @item LILYPOND_GC_YIELD +メモリ管理を調節する変数 (単位はパーセント) です。@c +大きな値は LilyPond に多くのメモリ使用を許し、@c +小さな値だと CPU 使用時間が長くなります。@c +デフォルト値は @code{70} です。 この変数を使ってメモリ使用量とパフォーマンスを調節することができます。@c これはメモリ管理の振る舞いを調整するパーセント値です。@c 高い値にするとプログラムはより多くのメモリを使用し、@c @@ -458,40 +760,44 @@ GNU LilyPond の保証責任を表示します。@c @end table -@c 未訳 -@node LilyPond in chroot jail -@unnumberedsubsec LilyPond in chroot jail +@node chroot jail 環境で LilyPond を実行する +@unnumberedsubsec chroot jail 環境で LilyPond を実行する +@translationof LilyPond in chroot jail -Setting up the server to run LilyPond in a chroot jail is a complicated -task. The steps are listed below. Examples in the steps are from -Ubuntu Linux, and may require the use of @code{sudo} as appropriate. +LilyPond を chroot jail 環境で実行させるようサーバをセットアップすることは@c +複雑な作業です。@c +以下にステップをリスト アップします。@c +各ステップの中にある例は Ubuntu Linux 用であり、@c +@code{sudo} の使用が必要となるかもしれません。 @itemize -@item Install the necessary packages: LilyPond, GhostScript, and ImageMagick. +@item 必要なパッケージをインストールします: +LilyPond, GhostScript, それに ImageMagick。 -@item Create a new user by the name of @code{lily}: +@item @code{lily} という名前のユーザを作成します: @example adduser lily @end example @noindent -This will create a new group for the @code{lily} user as well, and a home folder, -@code{/home/lily} +このコマンドはユーザ @code{lily} のためにホーム フォルダ (@code{/home/lily}) +と新しいグループも作成します。 -@item In the home folder of the @code{lily} user create a file to use as a -separate filesystem: +@item ユーザ @code{lily} のホーム フォルダで、@c +独立したファイルシステムとして使用するファイルを作成します: @example dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 @end example @noindent -This example creates a 200MB file for use as the jail filesystem. +このコマンドは jail ファイルシステムとして使用する +200MB のファイルを作成します。 -@item Create a loop device, make a file system and mount it, then create -a folder that can be written by the @code{lily} user: +@item ループ デバイスを作成し、ファイルシステムを作ってそれをマウントし、@c +それからユーザ @code{lily} が書き込めるフォルダを作成します: @example mkdir /mnt/lilyloop @@ -502,14 +808,13 @@ mkdir /mnt/lilyloop/lilyhome chown lily /mnt/lilyloop/lilyhome @end example -@item In the configuration of the servers, the JAIL will be @code{/mnt/lilyloop} -and the DIR will be @code{/lilyhome}. +@item サーバのコンフィグレーションで、JAIL は @code{/mnt/lilyloop} となり、@c +DIR は @code{/lilyhome} となります。 -@item Create a big directory tree in the jail by copying the necessary files, as -shown in the sample script below. +@item 以下に示すサンプル スクリプトのように必要なファイルをコピーして +jail の中に大きなディレクトリ ツリーを作成します。 -You can use @code{sed} to create the necessary copy commands for a given -executable: +@code{sed} を使うことで必要な実行形式ファイルをコピーすることができます: @example for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ @@ -520,7 +825,7 @@ for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ @end itemize -@subheading Example script for 32-bit Ubuntu 8.04 +@subheading 32-bit Ubuntu 8.04 用のスクリプト例 @example #!/bin/sh @@ -613,7 +918,9 @@ Warning は通常、入力ファイルに何か問題があることを示して @cindex Scheme error (Scheme エラー) Scheme コードの実行中に発生するこのエラーは Scheme インタプリタによって引き起こされます。@c -冗長オプション (@code{-V} または @code{--verbose}) 付きで実行している場合、@c +冗長オプション +(@option{-V} または @option{--verbose}) +付きで実行している場合、@c 問題となっている関数呼び出しの呼び出し追跡が表示されます。 @item Programming error @@ -795,17 +1102,14 @@ LilyPond マニュアルのほとんどの例はこの手法を用いていま @unnumberedsubsec エラー メッセージ Unbound variable % @translationof Error message Unbound variable % -@emph{Scheme} 形式のコメントではなく @emph{LilyPond} 形式のコメント@c -を持つ Scheme ルーチンが呼び出されると、@c -コンソール出力やログ ファイルの最後にエラー メッセージ -@qq{Unbound variable %} が @qq{GUILE signalled an error ...} -と共に表示されます。@c +このエラー メッセージは、@emph{Scheme} 形式ではなく @emph{LilyPond} 形式の@c +コメントを含む Scheme ルーチンが呼び出されるたびに、@c +コンソール出力またはログ ファイルの最後に表示されます。 LilyPond 形式のコメントはパーセント記号 (@code{%}) で始まり、@c Scheme ルーチンの中で使うことはできません。@c Scheme 形式のコメントはセミコロン (@code{;}) で始まります。 - @node エラー メッセージ FT_Get_Glyph_Name @unnumberedsubsec エラー メッセージ FT_Get_Glyph_Name @translationof Error message FT_Get_Glyph_Name @@ -833,5 +1137,5 @@ UTF-8 エンコードで保存されていない場合、@c @end example @noindent -詳細は @ruser{Flexible vertical spacing within systems} の中の -@qq{Spacing of non-staff lines} を参照してください。 +詳細は @ruser{システム内部の可変な垂直方向のスペース} の +@qq{譜ではない行のスペース} を参照してください。 diff --git a/Documentation/ja/usage/suggestions.itely b/Documentation/ja/usage/suggestions.itely index d893e94491..c8d2ba0474 100644 --- a/Documentation/ja/usage/suggestions.itely +++ b/Documentation/ja/usage/suggestions.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: cc3b9e1430f4cc9c54da7252e504f3d274a7ea17 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -354,7 +354,7 @@ Symphony/ @example %%% top of file "symphony-cello.ly" -\include ../definitions.ily +\include ../symphonyDefs.ily \include ../Notes/cello.ily @end example diff --git a/Documentation/ja/usage/updating.itely b/Documentation/ja/usage/updating.itely index 8dc4930faa..ac2aa3534b 100644 --- a/Documentation/ja/usage/updating.itely +++ b/Documentation/ja/usage/updating.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: 3c62ac104645533873bba800f7b0f371089f535a 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" +@c \version "2.16.0" @c Translators: Yoshiki Sawada @c Translation status: post-GDP @@ -139,15 +139,14 @@ convert-ly [@var{option}]@dots{} @var{filename}@dots{} @table @code @item -e,--edit -Apply the conversions direct to the input file, modifying it -in-place. +入力ファイルに直接変換を適用して、それをその場で変更します。 @item -f,--from=@var{from-patchlevel} 変換元のバージョンをセットします。@c これがセットされていない場合、@c @command{convert-ly} は入力ファイルの中にある @code{version} 文字列を基に推測します。@c -例: @code{--from=2.10.25} +例: @option{--from=2.10.25} @item -n,--no-version 通常、@command{convert-ly} は @code{\version} インジケータを@c @@ -160,10 +159,16 @@ in-place. @item --to=@var{to-patchlevel} 変換先のバージョンをセットします。@c デフォルトは利用可能な最新バージョンです。@c -例: @code{--to=2.12.2} +例: @option{--to=2.12.2} @item -h, --help 使用方法についてのヘルプを表示します。 + +@item -l @var{loglevel}, --loglevel=@var{loglevel} +出力の饒舌さを @var{loglevel} にセットします。@c +取り得る値は @code{NONE}, @code{ERROR}, @code{WARNING}, +@code{PROGRESS} (デフォルト), それに @code{DEBUG} です。 + @end table texinfo ファイルの中にある LilyPond 断片を更新するには@c @@ -183,7 +188,7 @@ convert-ly --from=... --to=... -s @node convert-ly の問題点 @section @code{convert-ly} の問題点 -@translationof Problems with convert-ly +@translationof Problems running convert-ly Windows の @q{コマンド プロンプト} ウィンドウから@c スペースを含むファイル名やパスを持つファイルに対して@c diff --git a/Documentation/ja/web.texi b/Documentation/ja/web.texi index 03ee564b39..a44e2854be 100644 --- a/Documentation/ja/web.texi +++ b/Documentation/ja/web.texi @@ -1,14 +1,12 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea + Translation of GIT committish: 8e9d9bb49f057ab81be830a5ac16714490130393 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 Translators: Yoshiki Sawada, Yoshinobu Ishizaki - @setfilename web.info @settitle LilyPond -- みんなの楽譜作成 @documentencoding UTF-8 @@ -17,7 +15,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -25,19 +23,24 @@ @include macros.itexi @include weblinks.itexi -@afourpaper - @c don't remove this comment. @ignore @omfcreator Graham Percival and Patrick McCarty @omfdescription General info about the LilyPond music engraving system @omftype program usage @omfcategory Applications|Publishing -@omflanguage English +@omflanguage Japanese @end ignore +@c Translators: Yoshiki Sawada, Yoshinobu Ishizaki + @copying -Copyright @copyright{} 2009--2011 by the authors. +Copyright @copyright{} 2009--2012 by the authors. + +@c next line is necessary for broken pre-4.13 texinfo's +@c install-info, so leave it there until we officially +@c bump the required version. -gp +このファイルは LilyPond Web サイトのドキュメントです。 @quotation GNU フリー文書利用許諾契約書バージョン 1.1 またはフリー ソフトウェア財団によって @@ -50,27 +53,26 @@ GNU フリー文書利用許諾契約書バージョン 1.1 またはフリー @end copying - @c Info files are no longer installed in a subdirectory, images are @c expected to be found in lilypond/ subdirectory. @dircategory GNU LilyPond --- 楽譜譜刻プログラム @direntry -* LilyPond 学習マニュアル: (lilypond-learning). ここから始めてください。 -* 音楽用語集: (music-glossary). 非英語圏のユーザ向け。 -* LilyPond: (lilypond-notation). LilyPond 記譜法リファレンス。 -* LilyPond コード断片集: (lilypond-snippets). ちょっとしたテクニック、@c +* LilyPond 学習マニュアル: (lilypond-learning). ここから始めてください。 +* 音楽用語集: (music-glossary). 非英語圏のユーザ向け。 +* LilyPond: (lilypond-notation). LilyPond 記譜法リファレンス。 +* LilyPond コード断片集: (lilypond-snippets). ちょっとしたテクニック、@c TIPS、それに例。 -* LilyPond 内部リファレンス: (lilypond-internals). 調整するための定義。 -* LilyPond アプリケーション使用方法: (lilypond-usage). アプリケーションを@c +* LilyPond 内部リファレンス: (lilypond-internals). 調整するための定義。 +* LilyPond アプリケーション使用方法: (lilypond-usage). アプリケーションを@c インスールして、実行する方法。 -* LilyPond Web サイト: (lilypond-web). 新しい Web サイトのプレビュー。 -* lilypond: (lilypond-usage)lilypond を実行する. LilyPond を呼び出す。 -* abc2ly: (lilypond-usage)abc2ly を呼び出す. ABC をインポートする。 +* LilyPond Web サイト: (lilypond-web). 新しい Web サイトのプレビュー。 +* lilypond: (lilypond-usage)lilypond を実行する. LilyPond を呼び出す。 +* abc2ly: (lilypond-usage)abc2ly を呼び出す. ABC をインポートする。 * convert-ly: (lilypond-usage)convert-ly でファイルを更新する. 古い LilyPond バージョン。 -* etf2ly: (lilypond-usage)etf2ly を呼び出す. Finale をインポートする。 -* lilypond-book: (lilypond-usage)lilypond-book. 文章と楽譜を統合する。 -* midi2ly: (lilypond-usage)midi2ly を呼び出す. MIDI をインポートする。 -* musicxml2ly: (lilypond-usage)musicxml2ly を呼び出す. MusicXML をインポートする。 +* etf2ly: (lilypond-usage)etf2ly を呼び出す. Finale をインポートする。 +* lilypond-book: (lilypond-usage)lilypond-book. 文章と楽譜を統合する。 +* midi2ly: (lilypond-usage)midi2ly を呼び出す. MIDI をインポートする。 +* musicxml2ly: (lilypond-usage)musicxml2ly を呼び出す. MusicXML をインポートする。 @end direntry @@ -151,6 +153,44 @@ LilyPond はフリーソフトウェアであり、@uref{http://gnu.org,GNU プ @ifclear web_version @c do nothing @end ifclear +@ifset web_version + @c make the box: +@divId{wildCardBox} +@subheading Pondings +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html + @ifset web_version @c make the box: @divId{latestVersion} @@ -189,6 +229,7 @@ LilyPond はフリーソフトウェアであり、@uref{http://gnu.org,GNU プ @contents +@allowcodebreaks false @c ****************** GENERAL STUFF FOR INFO ************ @ignore @@ -203,8 +244,6 @@ Distributions will want to install lilypond.info in postinstall, doing: * List all commands in direntry. -@c * lilypond: (lilypond-application)Running LilyPond. Invoking the -@c LilyPond program. @end ignore @c FIXME: this still doesn't solve the broken links in pdf and big @@ -219,30 +258,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (ページ毎に分割された HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (ページ毎に分割された HTML),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (1 つの大きな HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (1 つの大きな HTML),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro @macro docLinksBare{name,base,refLink,split,big,bigsize,pdf,pdfsize} diff --git a/Documentation/ja/web/community.itexi b/Documentation/ja/web/community.itexi index b10177a2b3..d196af2d1c 100644 --- a/Documentation/ja/web/community.itexi +++ b/Documentation/ja/web/community.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 2613eed0a13ce118cb11f83057d9d79fc6973a4e + Translation of GIT committish: 40c0295431d0732747d0e37b7911f03fb9daca16 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -27,7 +27,8 @@ @ref{コンタクト}: 援助を求める、議論する、そして交流する! @item -@ref{最小化例}: LilyPond について議論する際に、@emph{強く} 推奨することがあります。 +@ref{最小化例}: LilyPond について議論する際に、@c +@emph{強く} 推奨することがあります。 @item @ref{バグ報告}: 何かうまくいかない。 @@ -44,7 +45,13 @@ @ref{援助が必要です}: あなたの手助けが必要です。 @item -@ref{開発}: 貢献者とテスタ向けです。 +@ref{Sponsoring}: financial contributions. + +@item +@ref{開発}: 貢献者とテスター向けです。 + +@item +@ref{GSoC 2012}: Google Summer of Code 2012 に対する我々のアイデア。 @item @ref{著者}: 現在の LilyPond を作った人々。 @@ -63,24 +70,27 @@ @item @ref{古いニュース}: アーカイブ。 +@item +@ref{物置}: アナウンスと過去のバージョンからの変更ログ。 + @end itemize @divEnd @divEnd - - - @divClass{hide} @menu * コンタクト:: * 最小化例:: * バグ報告:: * 援助が必要です:: +* スポンサー:: * 開発:: +* GSoC 2012:: * 著者:: * 出版物:: * 古いニュース:: +* 物置:: @end menu @divEnd @@ -268,6 +278,14 @@ bug-lilypond への登録と情報} @divEnd +@divClass{column-right-bottom} +@subheading デリケートな内容の email + +プライベートな問題は Graham Percival (プロジェクト マネージャ) に@c +送るべきです。彼はそのことについて関係者と議論します。 + +@divEnd + @node 最小化例 @unnumberedsec 最小化例 @@ -276,7 +294,7 @@ bug-lilypond への登録と情報} @divClass{column-center-top} @subheading @qq{最小化例} とは? -最小化例は、削除可能なものをすべて削除した例です。 +最小化例は、@strong{削除可能なものをすべて} 削除した例です。 @divEnd @divClass{column-left-bottom} @@ -289,12 +307,12 @@ bug-lilypond への登録と情報} 例が簡単なほど、援助者は素早くそれを理解して手助けすることができます。 @item -簡単な例は、あなたが自分自身で問題を解決する努力した証明になります。@c +最小化例は、あなたが自分自身で問題を解決する努力した証明になります。@c 入力ファイルの大部分を送った場合、援助を期待していないかのように@c 見られてしまいます。 @item -最小化例を作ることで、あなたは何が起きているかを理解することになります。@c +最小化例を作ることは、あなたは何が起きているかを理解する手助けにになります。@c 多くの問題報告は最小化例を作る努力をすることで回避できるものです。@c 最小化例の中で @qq{バグ} を再現できないのであれば、それはバグではなく、@c LilyPond への理解不足である可能性が高いです! @@ -312,12 +330,12 @@ LilyPond への理解不足である可能性が高いです! @itemize @item -\version 番号を含めてください。 +@code{\version} 番号を含めてください。 @item 小さくしてください!@c スペースやページ レイアウトについての例は多くの小節を必要とするかも@c -しれませんが、多くの問題は 1 つの小節に作り直すことができます。 +しれませんが、多くの問題は 1 小節以下に作り直すことができます。 @item 例を作ろうとする時、ファイルの部分々々をコメント アウト @@ -332,22 +350,68 @@ LilyPond への理解不足である可能性が高いです! バグと関係がないのであれば、@code{\override} や @code{\set} コマンド@c を使わないでください。 +@item +強制ではありませんが、得ようとしている出力を示す画像を添付してください。 + @end itemize @divEnd @divEnd +@divClass{column-center-bottom} +@subheading 最小化例はどのようなもの? + +以下のコードは最小化例でしょうか? + +@example +\version "2.14.1" +\include "english.ly" + +\score @{ + \new Staff @{ + \key d \major + \numericTimeSignature + \time 2/4 + 16 8. + %% Here: the tie on the D's looks funny + %% Too tall? Left-hand endpoint is not aligned with the B tie? + ~ + 8 [ ] + @} +@} +@end example + +これで大きすぎるわけではありませんが、本当の最小化例は以下のように@c +なります: + +@example +\version "2.14.1" +@{ + % middle tie looks funny here: + 8. ~ 8 +@} +@end example + +最小化例のコードが 10 行を越えることはほとんどありません +-- ほとんどの場合、問題を示すのに 4 行で十分です! + +@divEnd + @node バグ報告 @unnumberedsec バグ報告 @translationof Bug reports + +@divClass{heading-center} +クラッシュや記述どおりの出力を得られない入力があるのなら、@c +それはバグです。 +@divEnd + @divClass{column-center-top} @subheading ステップ 1: 既知のバグ -クラッシュやエラーを引き起こす入力が入力があるのなら、@c -それはバグです。@c -Google バグ トラッカーに現在知られているバグがリスト アップされています。 +すでに把握しているバグがあります。以下をチェックしてください: @example @uref{http://code.google.com/p/lilypond/issues/list} @@ -365,8 +429,7 @@ Google バグ トラッカーに現在知られているバグがリスト ア リスト アップされていないバグを発見した場合、@c 我々がバグを無くすることができるよう、バグ報告を作ってください。 -@warning{我々が受け付けられるバグ報告は、@c -@ref{最小化例} になっているものだけです。@c +@warning{我々が受け付ける報告は、@ref{最小化例} になっているものだけです。@c 我々がバグ報告を扱うために使える資源は非常に限られています。@c そのため、最小化されていない例は受け付けられません。@c ほとんどのバグは 4 つ以下の音符で表すことができます!} @@ -427,16 +490,17 @@ gmane lilypond.bugs web インタフェイス} でバグ報告を送ることが バグ報告がメーリング リストに送られると、@c バグ チームがその報告を検証します。@c +彼らはバグについての更なる情報を得るために質問をする場合があります。@c +報告がバグ トラッカーに追加された場合、通知が来ます。@c この仕事に割り当てられるボランティアの数は限られているため、 -24 時間は待ってください。@c -バグ チームは情報を求めてあなたに何か尋ねるかもしれませんし、@c -バグ トラッカーに報告を追加してあなたにそのバグの問題番号を@c -通知するかもしれません。 +4 日間は待ってください。@c +バグがトラッカーに追加されると、@c +そのバグについての情報を追加するためにコメントすることができます。@c バグにマークを付けて、@c -そのバグに対して何かアクションがあったときに -email を受け取るようにできます。@c -こうするには Google アカウントが必要です。 +そのバグに対して何かアクションがあったときに自動的に +email を受け取ることができます。@c +これには Google アカウントが必要です。 @divEnd @divClass{column-center-bottom} @@ -462,17 +526,97 @@ email を受け取るようにできます。@c @divClass{column-left-top} @divClass{keep-bullets} -@helpusTasks +@helpusSimple @divEnd @divEnd @divClass{column-right-top} -@helpusProjects +@helpusAdvanced @divEnd +@node スポンサー +@unnumberedsec スポンサー +@translationof Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading 報酬 + +過去には以下のようなことがありました: + +@itemize +@item お金を支払って新しい機能を作ってもらったユーザがいました。 +@item お金を受け取って新しい機能を追加した開発者がいました。 +@end itemize + +LilyPond プロジェクトはそのような活動はしません。@c +そのような契約を推奨も妨げもしません。@c +個々の個人的な契約はそこで完結するものであり、我々は関与しません。 + +@divEnd + +@divClass{column-right-top} +@subheading ガイドライン + +作業への報酬としてお金を提供しようとするユーザは以下のポイントを@c +心に留めておく必要があります: + +@itemize +@item +LilyPond 開発者は時々、彼らが行ったサービスを lilypond email リストで@c +宣伝することがあります。 + +@item +プライベートで個人的な合意であっても、ビジネスを行う際の通常の決め事 +-- 支払者、支払額、支払方法、支払条件 -- を取り交わすべきです。@c +それらの事柄について曖昧なことや不明なことは作業を開始する前に解決して@c +おくべきです。 + +@end itemize + +@divEnd + +@divClass{column-center-bottom} +@subheading 興味のある開発者 + +報酬への興味を表明した人々のリストを挙げます。@c +それぞれの行った作業量はここ数年でかなり変化していることに注意して@c +ください。@c +このリストが最新であることを保証しませんし、このリストに挙がっている@c +人々の能力を保証することもしません。@c +このリストの基準は「このページのリストに掲載されることを依頼した者」で@c +あるということだけです。 + +git 履歴を調べることで、活発に活動していて、経験豊富な開発者を探すことが@c +できます。@c +バージョン @versionDevel{} までの統計情報があります: + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, 全体の履歴} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, 過去 1 年の履歴} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, 過去 3 ヶ月の履歴} +@end multitable + +興味のある開発者: +@table @asis +@item @email{dak@@gnu.org, David Kastrup} +私が現在のようにフルタイムで LilyPond に取り組み続けるには寄付が必要です。@c +私が注力している分野は、ユーザ インタフェイスとプログラマ インタフェイス@c +の設計、統一、平易化、ドキュメント化、それにデバッグです。 + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + + @node 開発 @unnumberedsec 開発 @translationof Development @@ -646,9 +790,9 @@ LilyPond の開発手法はかなり複雑です。@c @multitable @columnfractions .3 .3 .3 @headitem 導入部 @item -@docLinkSplit{学習,learning,@manualDevelLearningSplit} +@docLinkSplit{学習,learning,@manualDevelLearningSplit-ja} @tab -@docLinkBig{学習,learning,@manualDevelLearningBig} +@docLinkBig{学習,learning,@manualDevelLearningBig-ja} @tab @docLinkPdf{学習,learning,@manualDevelLearningPdf} @@ -669,16 +813,16 @@ LilyPond の開発手法はかなり複雑です。@c @headitem 常用マニュアル @item -@docLinkSplit{Notation,notation,@manualDevelNotationSplit} +@docLinkSplit{Notation,notation,@manualDevelNotationSplit-ja} @tab -@docLinkBig{Notation,notation,@manualDevelNotationBig} +@docLinkBig{Notation,notation,@manualDevelNotationBig-ja} @tab @docLinkPdf{Notation,notation,@manualDevelNotationPdf} @item -@docLinkSplit{使用方法,usage,@manualDevelUsageSplit} +@docLinkSplit{使用方法,usage,@manualDevelUsageSplit-ja} @tab -@docLinkBig{使用方法,usage,@manualDevelUsageBig} +@docLinkBig{使用方法,usage,@manualDevelUsageBig-ja} @tab @docLinkPdf{使用方法,usage,@manualDevelUsagePdf} @@ -692,9 +836,9 @@ LilyPond の開発手法はかなり複雑です。@c @headitem 時々使用するマニュアル @item -@docLinkSplit{Web,web,@manualDevelWebSplit} +@docLinkSplit{Web,web,@manualDevelWebSplit-ja} @tab -@docLinkBig{Web,web,@manualDevelWebBig} +@docLinkBig{Web,web,@manualDevelWebBig-ja} @tab @docLinkPdf{Web,web,@manualDevelWebPdf} @@ -732,6 +876,167 @@ LilyPond の開発手法はかなり複雑です。@c @divEnd +@node GSoC 2012 +@unnumberedsec GSoC 2012 +@translationof GSoC 2012 + +@divClass{column-center-top} +@subheading Google Summer of Code とは? + +これは Google が運営する世界規模のプログラムで、@c +夏休みにオープン ソース プロジェクトのために働く学生に報酬を提供します。 + +LilyPond チーム GSoC を新しい貢献者を見つけ、@c +すでに LilyPond の開発に参加している学生がより熱心に取り組む動機付けを@c +与える絶好の機会だと捉えました。@c +GSoC 2012 では我々の貢献者の一人が @uref{http://www.gnu.org/, +GNU プロジェクト} の一部として認められました。@c +我々は継続的にこのプログラムに参加したいと思っています。 + +@divEnd + +@divClass{column-center-bottom} +@subheading LilyPond チームからの 2012 年のアイディア リスト + +以下のリストは GSoC 2012 に参加する学生に我々が提案したプロジェクトです。@c +応募期間は終了しましたが、LilyPond の開発に興味を持つ人の激励として@c +この Web ページをオンラインのままにしておくことにしました。@c + +開発チームにはこれらのプロジェクトに挑戦しようとする人々を積極的に@c +支援するメンバーがいます。 + +もちろん、LilyPond には、些細な事も含めてさらに多くに改善すべき事柄があります。@c +既知のすべての問題のリストが +@uref{http://code.google.com/p/lilypond/issues/list, ここ} にあります。 + +@subheading 装飾小音符 + +装飾小音符の同期についての問題を、すべての基本的なアーキテクチャも含めて@c +修正してください (@uref{http://code.google.com/p/lilypond/issues/detail?id=34, +バグ トラッカーの問題 34} を参照してください)。@c +装飾小音符は時間を巻き戻すかのように振舞い、LilyPond のタイミングを@c +混乱させています。@c +これにより予期しない効果 -- 特に、ある譜が装飾小音符を持っていて、他の譜が@c +持っていない場合に -- が引き起こされています。 + +@strong{難易度:} 中 + +@strong{必須スキル:} C++, MIDI + +@strong{推奨スキル:} LilyPond の内部を熟知していること + +@strong{メンター:} Mike Solomon, Carl Sorensen + +@subheading MusicXML + +広範囲にわたる MusicXML エクスポート機能の追加と、インポート機能の改良、@c +それらが機能することのチェックを行ってください。@c +参加時間に応じて以下のいくつか、または全てを実現してください: + +@divClass{keep-bullets} +@itemize + +@item +MIDI エクスポートのような基本的な音楽コンテンツ エクスポート機能@c +(つまり、翻訳クラスから派生したエクスポート専用のクラス) を扱います。 + +@item +基本的な音楽コンテンツの XML ツリーを構築し、音楽イベントと XML タグを@c +結び付けます。 + +@item +すべての LilyPond エングラーバにエクスポート処理を実行させます。 + +@item +各出力オブジェクト (基本的には各ステンシル / ステンシルのグループ) +を音楽イベントにリンクさせる機能を追加します +(そして、それにより、XML ツリーの XML タグにリンクさせます)。 + +@item +XML 出力のバックエンドを追加します。@c +その後、バックエンドには各出力オブジェクトのレイアウト情報を XML タグに@c +追加する機能を持たせます。 + +@end itemize +@divEnd + +ゴールは、MusicXML から楽譜をインポートして、データのロス無しにエクスポート@c +することです。 + +@strong{難易度:} 中 + +@strong{必須スキル:} MusicXML, Python, 基本的な LilyPond の知識 + +@strong{メンター:} Reinhold Kainhofer, Mike Solomon + +他の楽譜ライターの経験 (クロス テストのために) があると尚良しです。 + +@subheading スラーとタイの改良 + +スラーとタイのデフォルトのカーブ形状はしばしば満足いかないものです。@c +同音異名の音符間のタイ (@code{@{ cis'~ des' @}}) はサポートされておらず、@c +音部記号や譜の変更によって「中断」されるタイのサポートも十分ではありません。@c +このプロジェクトでは、不満足な出力例を収集、ソートして、どのような出力に@c +するかを決定して実際にコードを記述します。 + +@strong{難易度:} 高 + +@strong{必須スキル:} C++, 試行錯誤によるコード記述の経験 + +@strong{推奨スキル:} LilyPond の知識, 美的感覚 + +@strong{メンター:} Mike Solomon + +@subheading フォント図柄の特殊な変体を追加する + +譜上の線、譜間の線、いくつかの図柄 (例えば臨時記号) を短く幅を縮めたものを@c +追加して、それらをサポートするための一般的なインフラを整備します。@c +使用例には古代記譜法の breve (全音符の 2 倍の長さ) の符頭があり、@c +これには符頭の穴が小さいものと大きいものの 2 つの変体があります。 + +@strong{難易度:} 低 + +@strong{必須スキル:} MetaFont, C++, 細部を確認できる眼力 + +@strong{推奨スキル:} 基本的な LilyPond の知識 + +@strong{メンター:} Werner Lemberg + +@subheading 連桁の改良 + +連桁 (通常、譜をまたぐ、中断する、符幹が上下に突き出る連桁) のデフォルトの@c +配置を改良する必要があります。@c +連桁はコンテキストと付近の音符に依存します +(@uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, +この PDF のセクション 2.2} を参照してください)。@c +可能であれば、連桁の算出時間を削減してください。 + +@strong{難易度:} 中 + +@strong{必須スキル:} C++, 試行錯誤によるコード記述の経験 + +@strong{推奨スキル:} 美的感覚 + +@strong{メンター:} Mike Solomon, Carl Sorensen + +@subheading 様々なコンパイル警告のクリーン アップ + +コンパイラ、静的コード分析、それに valgrind の警告をクリーン アップして@c +ください。@c +自動コード分析ツール (@code{g++} と @code{clang} の警告)、valgrind メモリ +リーク検出、それに callgrind コード プロファイラは C++ コードの欠陥に@c +ついての有用な情報を提供してくれます。@c +これらの警告をクリーン アップすることで、警告を発生させるパッチを自動的に@c +拒絶することが可能になります。 + +@strong{難易度:} 中 + +@strong{必須スキル:} C++ + +@strong{メンター:} Joe Neeman, Reinhold Kainhofer + +@divEnd + @node 著者 @unnumberedsec 著者 @@ -834,10 +1139,8 @@ LilyPond の開発手法はかなり複雑です。@c @divEnd @divClass{column-center-bottom} - @subheading LilyPond についての活動 - @divClass{keep-bullets} @include others-did.itexi @@ -852,6 +1155,66 @@ LilyPond の開発手法はかなり複雑です。@c @unnumberedsec 古いニュース @translationof Old news +@divClass{heading-center} +@warning{多くの古いアナウンスと変更履歴が @ref{Attic} で見つかります。} +@divEnd + @include web/news-front.itexi @include web/news.itexi + + +@node 物置 +@unnumberedsec 物置 +@translationof Attic + +@divClass{column-center-top} +@subheading アナウンス + +バージョン毎のアナウンスとニュース: +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +バージョン毎の変更についての説明リスト: +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading 変更履歴 + +バージョン毎の開発者による変更履歴: +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/ja/web/download.itexi b/Documentation/ja/web/download.itexi index 8edf198cb8..70abe07a41 100644 --- a/Documentation/ja/web/download.itexi +++ b/Documentation/ja/web/download.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 2613eed0a13ce118cb11f83057d9d79fc6973a4e + Translation of GIT committish: 8e9d9bb49f057ab81be830a5ac16714490130393 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -211,6 +211,14 @@ sh lilypond-@versionStable{}-OS-TYPE.sh uninstall-lilypond @end example +@subsubheading ヘルプを表示する + +シェルで、以下を入力してください: + +@example +sh lilypond-@versionStable{}-OS-TYPE.sh --help +@end example + @divEnd @@ -233,28 +241,28 @@ uninstall-lilypond @item @sourceimage{logo-fedora,,,} -@uref{https://admin.fedoraproject.org/pkgdb/packages/name/lilypond, -Fedora: LilyPond 2.12.0} +@uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447, +Fedora: LilyPond 2.14.2} @item @sourceimage{logo-ubuntu,,,} -@uref{https://launchpad.net/ubuntu/+source/lilypond, -Ubuntu: LilyPond 2.12.1} +@uref{http://packages.ubuntu.com/search?keywords=lilypond, +Ubuntu: LilyPond 2.14.2} @item @sourceimage{logo-slackware,,,} @uref{http://www.johannes-schoepfer.de/lilypond/, -Slackware: LilyPond 2.12.1} +Slackware: LilyPond 2.14.2} @item @sourceimage{logo-debian,,,} @uref{http://packages.debian.org/search?keywords=lilypond, -Debian: LilyPond 2.10.33} +Debian: LilyPond 2.12.3} @item @sourceimage{logo-suse,,,} -@uref{http://opensuse.org/?fixme=urg-no-lilypond-package-page, -openSUSE: LilyPond 2.10.33} +@uref{http://software.opensuse.org/search?baseproject=openSUSE%3A11.2&p=1&q=lilypond, +openSUSE: LilyPond 2.12.3} @end itemize @@ -293,13 +301,17 @@ openSUSE: LilyPond 2.10.33} @item @sourceimage{logo-macosx,,,} @downloadStableDarwinNormal -Intel チップの MacOS X 10.4 以上用 (迷っているのなら、こちらを使ってください) +Intel CPU の MacOS X 10.4 以上用 (迷っているのなら、こちらを使ってください) + +MacOS X 10.7 Lion はまだサポートしていません。 @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC G3 と G4 CPU の MacOS X 10.4 以上用 (古い Apple コンピュータ) +MacOS X 10.7 Lion はまだサポートしていません。 + @end itemize @subsubheading インストール @@ -347,6 +359,7 @@ cd ~/bin @divClass{h-scroll-auto} @example +#!/bin/bash exec @var{DIR}/LilyPond.app/Contents/Resources/bin/lilypond "$@@" @end example @divEnd @@ -512,7 +525,7 @@ LilyPond 実行可能のファイルを保持しているフォルダを、@c [@var{既存の Path}];@var{DIR}\LilyPond\usr\bin @end example -@warning{@var{DIR} は、一般には @code{C:\Program Files} です。} +@warning{@var{DIR} は、一般には @code{C:@bs{}Program Files} です。} @noindent @qq{OK} ボタンをクリックしてウィンドウを閉じます。 diff --git a/Documentation/ja/web/introduction.itexi b/Documentation/ja/web/introduction.itexi index 8de77992dd..f717af2071 100644 --- a/Documentation/ja/web/introduction.itexi +++ b/Documentation/ja/web/introduction.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 2613eed0a13ce118cb11f83057d9d79fc6973a4e + Translation of GIT committish: 3573a92d92728dc8d6452e5cd3cfba73e49e6990 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -104,6 +104,7 @@ LilyPond は、@c @unnumberedsec 特徴 @translationof Features +@divClass{column-center-top} @subheading 優美 @subsubheading すぐれた伝統的な譜刻 @@ -153,8 +154,6 @@ LilyPond は ASCII 入力を受け付けます。@c @subsubheading 楽譜と文章の混合 @c Mix music and text -@imageFloat{lilypond-book,png,right} - 画像のカット&ペーストをせずに、 楽譜の断片をテキストに入れることができます。@c LaTeX や HTML に楽譜を垣根無く統合できますし、@c @@ -321,22 +320,25 @@ LilyPond はタブ譜をサポートします。@c @newsItem @subsubheading Schenker Graphs -Standard output can be modified heavily. Here someone has created -an impressive Schenkerian analysis. +標準出力に様々な変更を加えることができます。@c +@uref{http://www.linuxjournal.com/article/8364 , Linux Journal} +に掲載された Kris Schaffer が作成したみごとな Schenkerian 分析を@c +示します。 @exampleImage{bach-schenker} @newsEnd @newsItem -@subsubheading Vocal Music +@subsubheading 声楽 -Lilypond is excellent for vocal music of all kinds, from sacred -hymns to opera. Here is a medieval motet with slightly unusual -requirements. The tenor voice is written in a different meter -than the others, but must line up as if it were in the same meter. -Lilypond handles this most elegantly. Note also the incipits with -Vaticana style clefs, the slashed stems indicating plicated notes, -and the ligature braces above certain groups of notes. +LilyPond は聖歌からオペラまですべての種類の声楽に対して卓越した@c +性能を発揮します。@c +少し変わった要求をする中世のモテットを示します。@c +テナー ボイスの拍子は他と異なりますが、@c +同じ拍子であるかのように揃っています。@c +Lilypond はこれをすっきりと処理します +ヴァチカン様式の音部記号、ゆらぎのある音符を表すスラッシュ付きの@c +符幹、ある特定の音符グループ上の連結線ににも注目してください。 @exampleImage{aucun-snippet} @newsEnd @@ -468,8 +470,8 @@ LilyPond にはこういったこととは無縁です。@c -- 個人々々ができる努力からゴールを達成することができます。 @item -@qq{与える文化}: フリー ソフトウェア (あるいは @qq{オープン ソース}) -運動は多くの偉大なソフトウェア プロジェクトを生み出してきました +@qq{与える文化}: フリー ソフトウェア運動は多くの偉大なソフトウェア +プロジェクトを生み出してきました -- @uref{http://kernel.org/, GNU/Linux}, @uref{http://www.getfirefox.com/, Mozilla Firefox}, それに @uref{http://www.wesnoth.org/, Battle for Wesnoth} など。 @@ -477,7 +479,7 @@ LilyPond にはこういったこととは無縁です。@c そのコミュニティに @qq{恩返し} をしたいと考えている開発者もいます。 @item -経験: オープン ソース プロジェクトに貢献することは、@c +経験: フリー ソフトウェア プロジェクトに貢献することは、@c プログラミング、ドキュメントの記述、デザインを訓練するための@c 素晴らしい方法です。@c この経験により、仕事の依頼を受けたり、奨学金を得た開発者もいます。 @@ -543,9 +545,40 @@ LilyPond で生成された楽譜は、世界中の演奏で使用されてい @itemize @item -@emph{Affaire Étrangère}, an opera by Valentin Villenave, with -libretto by Lewis Trondheim, premiered February 1, 2009, by -@uref{http://www.orchestre-montpellier.com/, L'Opéra Montpellier}. +Mussorgsky's @emph{Pictures at an exhibition}, re-orchestrated and +conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with +the @uref{http://www.junge-philharmonie-brandenburg.de/, +Junge Philharmonie Brandenburg} +on Oct 10 2011 and again on Apr 15-16 2012. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, composer and +musical director. His many, recent works include; @emph{Go Thy Way}, +performed by the @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} in March 2012; The +@emph{Just Out of Reach Suite} performed +by the +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Chrysalis Duo} ; @emph{thrafsmata} performed in July 2011 by the +@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh +New Music Ensemble}. + + +@item +@emph{Anonymous Student Compliment or Complaint}, by +@uref{http://www.mikesolomon.org, Mike Solomon}, winner chosen from among +172 entries from 22 countries of the +@uref{http://leftcoastensemble.org/contest, 2011 Left Coast Composition Contest}. +Other works include, Norman (age 1) for clarinet solo, performed at the +@uref{http://emu.music.ufl.edu/fems_concerts.html, University of Florida}'s +Electroacoustic Music Festival (FEMF), October 2010. + +@item +A modern edition of the @emph{Serenata Erminia} by Alessandro Scarlatti, +edited by Thomas Griffin, Musicologist (Rome, Italy). Performed on 22 +October 2010 in the Galleria of the Palazzo Zevallos Stigliano, Naples, +Italy. @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}, +in celebration of the composer's 350th birthday. @item @uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury Baroque}'s @@ -559,6 +592,15 @@ St. James's Church in Manhattan, May 8, 2009, by Frederick Renz and his ensemble @uref{http://www.earlymusicny.org/, Early Music New York} (engraving by Nicolas Sceaux). +@item +@emph{Affaire étrangère}, an opera by +@uref{http://valentin.villenave.net/,Valentin Villenave} +to a French libretto by +@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis +Trondheim}, premiered February 1, 2009 at +@uref{http://www.orchestre-montpellier.com/, L'Opéra National de +Montpellier}, France. + @end itemize @divEnd @@ -626,6 +668,18 @@ LilyPond を試してみる決心がついたのなら、@c @divClass{keep-bullets} @itemize +@item +April 2011 + +@uref{http://www.linux-magazine.com,Linux Magazine} publishes an +article titled +@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf, +Projects on the Move}. It is an introductory article on MuseScore, +LilyPond and Chordii. Author Carla Schroder states @qq{LilyPond is +driven from the command line, but don’t let the lack of a GUI scare +you away; LilyPond is user-friendly and easy to learn}, and provides +a hands-on example. + @item May 2010 @@ -711,7 +765,7 @@ A French article on the LilyPond 2.6 release appeared on October 2004 The editors of Computer!Totaal, a Dutch computer magazine, -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, describe LilyPond} in the October 2004 issue as: @qq{Wonderful free (open source) software [..] The sheet music produced by LilyPond is exceptionally pretty [..] a very powerful system that @@ -940,8 +994,8 @@ LilyPond は @emph{コンパイル} システムです: @imageFloat{text-input-1-output,png,center} 臨時記号は違う名前で入力します。@c -シャープには @code{-is} を、フラットには @code{-es} を付けます -(これらは、オランダ語の音符名で、他の言語用もあります)。@c +シャープには @w{@code{-is}} を、フラットには @w{@code{-es}} を@c +付けます (これらは、オランダ語の音符名で、他の言語用もあります)。@c LilyPondがどこに臨時記号を付けるかを判断します。 @imageFloat{text-input-2-annotate,png,center} @@ -1034,6 +1088,15 @@ GUI を提供しているものもあります。@c @unnumberedsec より簡単な編集手段 @translationof Easier editing +@ignore +GNU policy forbids us from linking to non-Free software, so don't +add such links. + +In particular, don't link to: +- the LilyPond bundle for TextMate (a commercial editor for MacOS). + +@end ignore + @divClass{column-center-top} @subheading LilyPondTool @@ -1066,14 +1129,14 @@ LilyPondTool は、LilyPond 楽譜を編集するための最も機能豊富な@ @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} -Frescobaldi は LilyPond 専用の楽譜・テキスト エディタです。@c -ビルドイン PDF プレビューア、強力な楽譜ウイザード、@c -それに多くの編集機能を持ちます。@c -KDE4 ライブラリの最上位階層に組み込まれていて、@c -Linux や UNIX ライクな OS のすべてで実行できます。 +Frescobaldi はビルドイン PDF ビューアを持つ、軽量でパワフルな +LilyPond 用の楽譜・テキストエディタです。@c +簡単に使うことができ、すべての OS (Linux、Mac OS X、それに Windows) +で実行できます。 @divEnd @@ -1148,59 +1211,57 @@ MacOS@tie{}X 用のエディタ TexShop を拡張して、 @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example -@sourceimage{logo-macosx,,,} -MacOS 用の商用エディタ TextMate にバンドルされる LilyPond があります。@c -以下を実行することでインストールされます: - -@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 @divClass{column-center-top} @subheading LilyPond コードをエクスポートできるプログラム -@subsubheading Score, tab and MIDI editors: +@subsubheading 楽譜、タブ、MIDI エディタ: @itemize + @item -@uref{http://www.rosegardenmusic.com,Rosegarden}: -オーディオ・MIDI シーケンサであり、単一譜を扱える楽譜エディタでもあります。 + +@uref{http://www.canorus.org,Canorus}: +楽譜エディタで、LilyPond コードをエクスポートできが、まだベータ版です。@c +テスターを歓迎しています。 @item -@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}: +@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml, +NtEd}: @uref{http://www.cairographics.org,Cairo} ライブラリをベースにした@c 楽譜エディタで、試験的に LilyPond へのエクスポートをサポートしています。 -@item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar}: -マルチトラックなタブ譜のエディタ・プレイヤで、楽譜ビューアを持ち、@c -LilyPond コードのエクスポートが可能です。 - @item @uref{http://www.musescore.org,MuseScore}: 楽譜エディタで、完全ではありませんが LilyPond コードをエクスポートできます。@c 活発に開発が行われています。 @item -@uref{http://www.canorus.org,Canorus}: -楽譜エディタで、LilyPond コードをエクスポートできが、まだベータ版です。@c -テスターを歓迎しています。 +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY}: +@c @uref{http://www.noteworthysoftware.com/,NoteWorthy} +NoteWorthy で記譜した曲を LilyPond に変換する C# プログラムです。 @item -@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}: -リアルタイムにモノラル MIDI を LilyPond に変換します。 +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple}: +総譜とパート譜の作成を支援するプログラムで、異なる楽譜ソースから@c +総譜やパート譜を作成するモードがあります。 @item -@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, -NW2LY}: -@uref{http://www.noteworthysoftware.com/, NoteWorthy} の曲を -LilyPond に変換する C# プログラムです。 +@uref{http://www.rosegardenmusic.com,Rosegarden}: +オーディオ・MIDI シーケンサであり、単一譜を扱える楽譜エディタでもあります。 + +@item +@uref{https://launchpad.net/rumor/,Rumor}: +リアルタイムに単声の MIDI を LilyPond に変換します。 + +@item +@uref{http://www.tuxguitar.com.ar/,TuxGuitar}: +マルチトラックなタブ譜のエディタ・プレイヤで、楽譜ビューアを持ち、@c +LilyPond コードのエクスポートが可能です。 @end itemize diff --git a/Documentation/ja/web/manuals.itexi b/Documentation/ja/web/manuals.itexi index 802fb323f4..1d63b8ffd0 100644 --- a/Documentation/ja/web/manuals.itexi +++ b/Documentation/ja/web/manuals.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + Translation of GIT committish: cf90af135bc70b57f69fd3e09a9b29814c6358e4 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -15,7 +15,7 @@ @macro details{reference} @spanClass{detail} -(@ref{\reference\, \reference\} の詳細) +(@ref{\reference\, \reference\ の詳細}) @spanEnd @end macro @@ -40,7 +40,7 @@ LilyPond は @strong{テキスト ベース} の楽譜作成プログラムです。@c まず最初にこのドキュメントを読んでください! -@item @ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,学習}} +@item @ifWebLinks{@manualStableLearningSplitNoName-ja,@rlearningnamed{Top,学習}} @qq{必読} のやさしい LilyPond 入門書です。 @details{学習} @@ -64,11 +64,11 @@ LilyPond は @strong{テキスト ベース} の楽譜作成プログラムで @itemize -@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,記譜法}} +@item @ifWebLinks{@manualStableNotationSplitNoName-ja,@rusernamed{Top,記譜法}} 構文リファレンス。 @details{記譜法} -@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,使用方法}} +@item @ifWebLinks{@manualStableUsageSplitNoName-ja,@rprogramnamed{Top,使用方法}} このプログラムの実行方法。 @details{使用方法} @@ -115,14 +115,19 @@ LilyPond は @strong{テキスト ベース} の楽譜作成プログラムで @itemize +@item @ref{すべて}: +圧縮したアーカイブとして提供する以前と現在の安定バージョンの@c +ドキュメント。 + @item @ref{翻訳済み}: 非英語圏の読者のための翻訳状況。 -@item @ref{すべて}: -ダウンロード可能なバージョンと古いマニュアル。 +@item +@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}: +ユーザが作成した例、ヒント、それに TIPS。 @item @ref{Development}: -開発バージョンのためのマニュアル。 +不安定な開発バージョンのマニュアル。 @item @ref{FDL}: これらのマニュアルは GNU Free Documentation License に基づいて@c @@ -182,8 +187,8 @@ LilyPond は @strong{テキスト ベース} の楽譜作成プログラムで @docLinks{学習, learning, @rlearningnamed{Top,学習}, - @manualStableLearningSplit, - @manualStableLearningBig, 1.5 MB, + @manualStableLearningSplit-ja, + @manualStableLearningBig-ja, 1.5 MB, @manualStableLearningPdf, 3 MB} @divEnd @@ -262,8 +267,8 @@ LilyPond の譜刻テクニックの例を挙げます。@c @docLinks{記譜法, notation, @rusernamed{Top,記譜法}, - @manualStableNotationSplit, - @manualStableNotationBig, 7 MB, + @manualStableNotationSplit-ja, + @manualStableNotationBig-ja, 7 MB, @manualStableNotationPdf, 18 MB} @divEnd @@ -286,9 +291,9 @@ LilyPond 記譜法を他のプログラムと統合する方法について説 @docLinks{使用方法, usage, @rprogramnamed{Top,使用方法}, - @manualStableUsageSplit, - @manualStableUsageBig, 300 KB, - @manualStableUsagePdf, 400 KB} + @manualStableUsageSplit-ja, + @manualStableUsageBig-ja, 400 KB, + @manualStableUsagePdf, 600 KB} @divEnd @@ -398,8 +403,8 @@ LilyPond を使う理由については、@ref{導入部} に書かれていま @docLinksBare{Web, web, @ref{Top,Web}, - @manualDevelWebSplit, - @manualDevelWebBig, 1 MB, + @manualDevelWebSplit-ja, + @manualDevelWebBig-ja, 1 MB, @manualDevelWebPdf, 2 MB} @divEnd @@ -440,7 +445,7 @@ LilyPond を使う理由については、@ref{導入部} に書かれていま @divClass{column-right-bottom} -@docLinks{拡張, extend, +@docLinks{拡張, extending, @rextendnamed{Top,拡張}, @manualStableExtendingSplit, @manualStableExtendingBig, 200 KB, diff --git a/Documentation/learning.tely b/Documentation/learning.tely index 65b9addbe2..98b329cc49 100644 --- a/Documentation/learning.tely +++ b/Documentation/learning.tely @@ -20,7 +20,7 @@ This file provides an introduction to LilyPond version @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 by the authors. +Copyright @copyright{} 1999--2012 by the authors. @end macro @set FDL diff --git a/Documentation/learning/common-notation.itely b/Documentation/learning/common-notation.itely index 4318925596..044cfcf6df 100644 --- a/Documentation/learning/common-notation.itely +++ b/Documentation/learning/common-notation.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @ignore Tutorial guidelines: (different from policy.txt!) @@ -197,7 +197,7 @@ aes4 c b c If the above seems confusing, consider this: if you were playing a piano, which key would you hit? If you would press a black key, -then you @emph{must} add @code{-is} or @code{-es} to the note +then you @emph{must} add @w{@code{-is}} or @w{@code{-es}} to the note name! Adding all alterations explicitly might require a little more @@ -849,7 +849,8 @@ ties with chords. They must be placed outside the angle brackets. @lilypond[verbatim,quote,relative=2] r4 ~ 2 | -8[ ] \>[ ]\! | +8[ ] + 8\>[ ]\! | r4 8.\p 16( 4-. ) | @end lilypond @@ -1315,7 +1316,7 @@ underneath the version number. When the file is processed, the title and composer are printed above the music. More information on titling can be found in -@ruser{Creating titles}. +@ruser{Creating titles headers and footers}. @node Absolute note names diff --git a/Documentation/learning/fundamental.itely b/Documentation/learning/fundamental.itely index b203fefd6e..661977a464 100644 --- a/Documentation/learning/fundamental.itely +++ b/Documentation/learning/fundamental.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Fundamental concepts @chapter Fundamental concepts @@ -578,10 +578,10 @@ In fact, a Voice layer or context is the only one which can contain music. If a Voice context is not explicitly declared one is created automatically, as we saw at the beginning of this chapter. Some instruments such as an Oboe can play only one note at a time. Music -written for such instruments is monophonic and requires just a single -voice. Instruments which can play more than one note at a time like -the piano will often require multiple voices to encode the different -concurrent notes and rhythms they are capable of playing. +written for such instruments requires just a single voice. Instruments +which can play more than one note at a time like the piano will often +require multiple voices to encode the different concurrent notes and +rhythms they are capable of playing. A single voice can contain many notes in a chord, of course, so when exactly are multiple voices needed? Look first at @@ -616,7 +616,7 @@ The fragments must also be separated with double backward slashes, @code{\\}, to place them in separate voices. Without these, the notes would be entered into a single voice, which would usually cause errors. This technique is particularly suited to pieces of -music which are largely monophonic with occasional short sections +music which are largely homophonic with occasional short sections of polyphony. Here's how we split the chords above into two voices and add both @@ -672,8 +672,11 @@ used to encode three or more voices by adding more back-slash separators. 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. +The first contexts set the @emph{outer} voices, the highest +voice in context @code{"1"} and the lowest voice in context +@code{"2"}. The inner voices go in contexts @code{"3"} and +@code{"4"}. In each of these contexts, the vertical direction +of slurs, stems, ties, dynamics etc., is set appropriately. @lilypond[quote,verbatim] \new Staff \relative c' { @@ -797,16 +800,19 @@ later sections. << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } - \\ % No voice three - \\ % Voice four { % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 + \once \override NoteColumn #'ignore-collision = ##t + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ % No voice three + \\ % Voice four + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -845,16 +851,17 @@ not understand. } \\ % Voice two { \voiceTwoStyle - aes2 f4 fes + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'ignore-collision = ##t + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 } \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle - % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes } >> | 1 | @@ -871,7 +878,7 @@ enter the music of the first bar in three voices: \new Staff \relative c'' { \key aes \major << - { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des } + { c2 aes4. bes8 } \\ { 2 des } \\ { aes'2 f4 fes } >> | 1 | } @@ -896,30 +903,30 @@ adding another pair of @code{\\}. << % Voice one { c2 aes4. bes8 } \\ % Voice two - { aes2 f4 fes } + { 2 des } \\ % Omit Voice three \\ % Voice four - { 2 des } + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -We see that this fixes the stem direction, but exposes a problem -sometimes encountered with multiple voices -- the stems of the notes -in one voice can collide with the note heads in other voices. In -laying out the notes, LilyPond allows the notes or chords from two -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 -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 +We see that this fixes the stem direction, but the horizontal +placement of notes is not what we want. LilyPond shifts the +inner notes when they or their stems would collide with outer +voices, but this is not appropriate for piano music. In other +situations, the shifts LilyPond applies might fail to clear +the collisions. 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}. +@warning{Lyrics, spanners (such as slurs, ties, hairpins etc.) cannot be +created @q{across} voices.} + @seealso Notation Reference: @ruser{Multiple voices}. @@ -943,7 +950,7 @@ Notation Reference: @ruser{Multiple voices}. Voice contexts can also be created manually inside a @code{<< >>} block to create polyphonic music, using -@code{\voiceOne} ... @code{\voiceFour} to indicate the required +@code{\voiceOne} @dots{} @code{\voiceFour} to indicate the required directions of stems, slurs, etc. In longer scores this method is clearer, as it permits the voices to be separated and to be given more descriptive names. @@ -1020,22 +1027,21 @@ markup, ties, slurs, and dynamics: } @end lilypond -Now let's look at three different ways to notate the same passage -of polyphonic music, each of which is advantageous in different +Now let's look at three different ways to notate the same passage of +polyphonic music, each of which is advantageous in different circumstances, using the example from the previous section. -An expression that appears directly inside a @code{<< >>} belongs -to the main voice (but, note, @strong{not} in a @code{<< \\ >>} -construct). This is useful when extra voices appear while the -main voice is playing. Here is a more correct rendition of our -example. The red diamond-shaped notes -demonstrate that the main melody is now in a single voice context, +An expression that appears directly inside a @code{<< >>} belongs to the +main voice (but, note, @strong{not} in a @code{<< \\ >>} construct). +This is useful when extra voices appear while the main voice is playing. +Here is a more correct rendition of our example. The red diamond-shaped +notes demonstrate that the main melody is now in a single voice context, permitting a phrasing slur to be drawn over them. @lilypond[quote,ragged-right,verbatim] \new Staff \relative c' { \voiceOneStyle - % The following notes are monophonic + % This section is homophonic c16^( d e f % Start simultaneous section of three voices << @@ -1711,7 +1717,7 @@ is specified, no error message is produced, but the expected action will not take place. For example, the @code{instrumentName} clearly lives in the @code{Staff} context, since it is the staff that is to be named. -In this example the first staff is labelled, but not the second, +In this example the first staff is labeled, but not the second, because we omitted the context name. @lilypond[quote,verbatim,ragged-right] @@ -1762,11 +1768,11 @@ So this turns off extra naturals in one staff: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1777,11 +1783,11 @@ and this turns them off in all staves: @lilypond[quote,verbatim,ragged-right] << \new Staff \relative c'' { - ais2 aes + aeses2 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f - ais2 aes + aeses2 aes } >> @end lilypond @@ -1852,12 +1858,12 @@ like this: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -1895,7 +1901,7 @@ throughout the @code{\score} or @code{\book} block in which the \score { \new Staff { \relative c'' { - cis4 e d ces + cisis4 e d cis } } \layout { @@ -1915,12 +1921,12 @@ within the score: << \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } \new Staff { \relative c'' { - gis4 ges aes ais + gisis4 gis aeses aes } } >> @@ -3063,7 +3069,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { diff --git a/Documentation/learning/preface.itely b/Documentation/learning/preface.itely index 0cdf383d91..93c5c030eb 100644 --- a/Documentation/learning/preface.itely +++ b/Documentation/learning/preface.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Preface @unnumbered Preface diff --git a/Documentation/learning/templates.itely b/Documentation/learning/templates.itely index e9fc0f21e6..0b6bc00fa4 100644 --- a/Documentation/learning/templates.itely +++ b/Documentation/learning/templates.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Templates @appendix Templates @@ -34,23 +34,23 @@ beautiful printed scores! @appendixsubsec Notes only -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-only-notes.ly} @appendixsubsec Notes and lyrics -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion] +@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion] {single-staff-template-with-notes-and-lyrics.ly} @appendixsubsec Notes and chords -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes-and-chords.ly} @appendixsubsec Notes, lyrics, and chords. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {single-staff-template-with-notes,-lyrics,-and-chords.ly} @@ -59,36 +59,31 @@ beautiful printed scores! @appendixsubsec Solo piano -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-simple.ly} @appendixsubsec Piano and melody with lyrics -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-melody-and-lyrics.ly} @appendixsubsec Piano centered lyrics -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {piano-template-with-centered-lyrics.ly} -@appendixsubsec Piano centered dynamics - -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -{piano-template-with-centered-dynamics.ly} - @node String quartet @appendixsec String quartet @appendixsubsec String quartet -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-simple.ly} @appendixsubsec String quartet parts -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {string-quartet-template-with-separate-parts.ly} @@ -97,37 +92,37 @@ beautiful printed scores! @appendixsubsec SATB vocal score -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template.ly} @appendixsubsec SATB vocal score and automatic piano reduction -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-automatic-piano-reduction.ly} @appendixsubsec SATB with aligned contexts -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly} @appendixsubsec SATB on four staves -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {satb-choir-template---four-staves.ly} @appendixsubsec Solo verse and two-part refrain -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {vocal-ensemble-template-with-verse-and-refrain.ly} @appendixsubsec Hymn tunes -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {hymn-template.ly} @appendixsubsec Psalms -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {anglican-psalm-template.ly} @@ -135,7 +130,7 @@ beautiful printed scores! @appendixsec Orchestral templates @appendixsubsec Orchestra, choir and piano -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {orchestra,-choir-and-piano-template.ly} @@ -145,12 +140,13 @@ beautiful printed scores! @appendixsubsec Transcription of mensural music -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {ancient-notation-template----modern-transcription-of-mensural-music.ly} @appendixsubsec Gregorian transcription template -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,quote,ragged-right,texidoc] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @@ -159,7 +155,8 @@ beautiful printed scores! @appendixsubsec Jazz combo -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@c Line-width below is because of Issue 766. If that's fixed, it can be removed. +@lilypondfile[verbatim,quote,ragged-right,texidoc,line-width=140] {jazz-combo-template.ly} @@ -184,7 +181,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print @ The `line-width' is for \header. @li lypond[quote,verbatim,ragged-right,line-width] -\version "2.14.0" +\version "2.16.0" \header { dedication = "dedication" title = "Title" diff --git a/Documentation/learning/tutorial.itely b/Documentation/learning/tutorial.itely index 6752a3bc40..ea6c4e08e6 100644 --- a/Documentation/learning/tutorial.itely +++ b/Documentation/learning/tutorial.itely @@ -10,7 +10,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @node Tutorial @chapter Tutorial diff --git a/Documentation/learning/tweaks.itely b/Documentation/learning/tweaks.itely index 40f46cf675..107cbaea99 100644 --- a/Documentation/learning/tweaks.itely +++ b/Documentation/learning/tweaks.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Tweaking output @chapter Tweaking output @@ -214,12 +214,13 @@ level contexts, i.e., @code{Voice}, @code{ChordNames} or examples. We shall see later when it must be specified. Later sections deal comprehensively with properties and their -values, but to illustrate the format and use of these commands -we shall use just a few simple properties and values which are -easily understood. +values, see @ref{Types of properties}. But in this section we shall +use just a few simple properties and values which are easily +understood in order to illustrate the format and use of these +commands. For now, don't worry about the @code{#'}, which must precede the -layout property, and the @code{#}, which must precede the value. +layout property, and the@tie{}@code{#}, which must precede the value. These must always be present in exactly this form. This is the most common command used in tweaking, and most of the rest of this chapter will be directed to presenting examples of how it is @@ -278,22 +279,25 @@ b4 c | @funindex \once @funindex once -Both the @code{\override} and the @code{\set} commands may be -prefixed by @code{\once}. This causes the following -@code{\override} or @code{\set} command to be effective only -during the current musical moment before the property reverts -back to its default value. Using the same example, we can -change the color of a single note like this: +Both the @code{\override} and the @code{\set} commands may be prefixed +by @code{\once}. This causes the following @code{\override} or +@code{\set} command to be effective only during the current musical +moment before the property reverts back to its previous value (this can +be different from the default if another @code{\override} is still in +effect). Using the same example, we can change the color of a single +note like this: @cindex color property, example @cindex NoteHead, example of overriding @lilypond[quote,fragment,ragged-right,verbatim,relative=1] c4 d -\once \override NoteHead #'color = #red +\override NoteHead #'color = #red e4 f | \once \override NoteHead #'color = #green -g4 a b c | +g4 a +\revert NoteHead #'color +b c | @end lilypond @strong{\overrideProperty command} @@ -316,11 +320,11 @@ We mention it here for completeness, but for details see @funindex \tweak @funindex tweak -The final tweaking command which is available is @code{\tweak}. -This should be used to change the properties of objects which -occur at the same musical moment, such as the notes within a -chord. Using @code{\override} would affect all the notes -within a chord, whereas @code{\tweak} affects just the following +The final tweaking command which is available is @code{\tweak}. This +should be used when several objects occur at the same musical moment, +but you only want to change the properties of selected ones, such as a +single note within a chord. Using @code{\override} would affect all the +notes within a chord, whereas @code{\tweak} affects just the following item in the input stream. Here's an example. Suppose we wish to change the size of the @@ -344,16 +348,10 @@ apply the override to all layout objects of the type specified which occur at the same musical moment as the @code{\override} command itself. -The @code{\tweak} command operates in a different way. It acts -on the immediately following item in the input stream. However, -it is effective only on objects which are created directly from -the input stream, essentially note heads and articulations; -objects such as stems and accidentals are created later and -cannot be tweaked in this way. Furthermore, when it is applied -to note heads these @emph{must} be within a chord, i.e., within -single angle brackets, so to tweak a single note the @code{\tweak} -command must be placed inside single angle brackets with the -note. +The @code{\tweak} command operates in a different way. It acts on +the immediately following item in the input stream. In its simplest +form, it is effective only on objects which are created directly +from the following item, essentially note heads and articulations. So to return to our example, the size of the middle note of a chord would be changed in this way: @@ -366,13 +364,12 @@ a chord would be changed in this way: 4 @end lilypond -Note that the syntax of @code{\tweak} is different from that -of the @code{\override} command. Neither the context nor the -layout object should be specified; in fact, it would generate -an error to do so. These are both implied by the following -item in the input stream. Note also that an equals sign should -not be present. So the general syntax of the -@code{\tweak} command is simply +Note that the syntax of @code{\tweak} is different from that of the +@code{\override} command. The context should not be specified; in +fact, it would generate an error to do so. Both context and layout +object are implied by the following item in the input stream. Note +also that an equals sign should not be present. So the simple form +of the @code{\tweak} command is @example \tweak #'@var{layout-property} #@var{value} @@ -391,8 +388,30 @@ a4^"Black" @end lilypond @noindent -Note that the @code{\tweak} command must be preceded by an -articulation mark as if it were an articulation itself. +Note that the @code{\tweak} command must be preceded by an articulation +mark since the tweaked expression needs to be applied as an articulation +itself. In case of multiple direction overrides (@code{^} or @code{_}), +the leftmost override wins since it is applied last. + +@cindex @code{\tweak}, Accidental +@cindex @code{\tweak}, specific layout object + +Objects such as stems and accidentals are created later, and not +directly from the following event. It is still possible to use +@code{\tweak} on such indirectly created objects by explicitly naming +the layout object, provided that LilyPond can trace its origin back to +the original event: + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +<\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> +@end lilypond + +This long form of the @code{\tweak} command can be described as +@example +\tweak @var{layout-object} #'@var{layout-property} @var{value} +@end example @cindex tuplets, nested @cindex triplets, nested @@ -584,7 +603,7 @@ at first, so we can be sure the command is working. We get: @end example Don't forget the @code{#'} preceding the -property name and a @code{#} preceding the new value! +property name and a@tie{}@code{#} preceding the new value! The final question is, @q{Where should this command be placed?} While you are unsure and learning, the best @@ -923,7 +942,7 @@ to the front of these values when they are entered in the @tab A valid direction constant or its numerical equivalent (decimal values between -1 and 1 are allowed) @tab @code{LEFT}, @code{CENTER}, @code{UP}, - @code{1}, @code{-1} + @code{1}, @w{@code{-1}} @item Integer @tab A positive whole number @tab @code{3}, @code{1} @@ -942,7 +961,7 @@ make-moment function @code{(ly:make-moment 3 8)} @item Number @tab Any positive or negative decimal value - @tab @code{3.5}, @code{-2.45} + @tab @code{3.5}, @w{@code{-2.45}} @item Pair (of numbers) @tab Two numbers separated by a @q{space . space} and enclosed in brackets preceded by an apostrophe @@ -1090,7 +1109,7 @@ our example we want all bar lines to be suppressed, so the value we need is @code{'#(#f #f #f)}. Let's try that, remembering to include the @code{Staff} context. Note also that in writing this value we have @code{#'#} before the opening bracket. The @code{'#} is required -as part of the value to introduce a vector, and the first @code{#} is +as part of the value to introduce a vector, and the first@tie{}@code{#} is required, as always, to precede the value itself in the @code{\override} command. @@ -1718,7 +1737,7 @@ a4 g c a | @end lilypond Here we use the constants @code{DOWN} and @code{UP}. -These have the values @code{-1} and @code{+1} respectively, and +These have the values @w{@code{-1}} and @code{+1} respectively, and these numerical values may be used instead. The value @code{0} may also be used in some cases. It is simply treated as meaning @code{UP} for stems, but for some objects it means @q{center}. @@ -1901,8 +1920,8 @@ Here are a few examples: @noindent If the fingering seems a little crowded the @code{font-size} could be reduced. The default value can be seen from the -@code{Fingering} object in the IR to be @code{-5}, so let's -try @code{-7}: +@code{Fingering} object in the IR to be @w{@code{-5}}, so let's +try @w{@code{-7}}: @lilypond[quote,fragment,ragged-right,verbatim,relative=1] \override Fingering #'font-size = #-7 @@ -2422,11 +2441,11 @@ reference point. It may be used with all objects which support the @code{self-alignment-interface}. In general these are objects that contain text. The values are @code{LEFT}, @code{RIGHT} or @code{CENTER}. Alternatively, a numerical value between -@code{-1} and @code{+1} may be specified, where @code{-1} is +@w{@code{-1}} and @code{+1} may be specified, where @w{@code{-1}} is left-aligned, @code{+1} is right-aligned, and numbers in between move the text progressively from left-aligned to right-aligned. Numerical values greater than @code{1} may be specified to move -the text even further to the left, or less than @code{-1} to +the text even further to the left, or less than @w{@code{-1}} to move the text even further to the right. A change of @code{1} in the value corresponds to a movement of half the text's length. @@ -2709,7 +2728,7 @@ The best solution here is to move the multimeasure rest down, since the rest is in voice two. The default in @code{\voiceTwo} (i.e. in the second voice of a @code{<<@{...@} \\ @{...@}>>} construct) is that @code{staff-position} is set to -4 for MultiMeasureRest, so we need to -move it, say, four half-staff spaces down to @code{-8}. +move it, say, four half-staff spaces down to @w{@code{-8}}. @cindex MultiMeasureRest, example of overriding @cindex staff-position property, example @@ -2856,26 +2875,26 @@ was left looking like this: << { c2 aes4. bes8 } \\ - { aes2 f4 fes } + { 2 des } \\ - { - \voiceFour - 2 des - } + \\ + { aes'2 f4 fes } >> | 1 | } @end lilypond @noindent -The lower two notes of the first chord (i.e, those in the third voice) -should not be shifted away from the note column of the higher two -notes. To correct this we set @code{force-hshift}, which is a -property of @code{NoteColumn}, of these notes to zero. The lower note -of the second chord is best placed just to the right of the higher -notes. We achieve this by setting @code{force-hshift} of this note to -0.5, ie half a note head's width to the right of the note column of -the higher notes. +The inner note of the first chord (i.e. the A-flat in the fourth +Voice) need not be shifted away from the note column of the higher +note. To correct this we set @code{force-hshift}, which is a property +of @code{NoteColumn}, of this note to zero. + +In the second chord we prefer the F to line up with the A and the +lowest note to be positioned slightly right to avoid a collision of +stems. We achieve this by setting @code{force-hshift} in the +@code{NoteColumn} of the low D-flat to move it to the right by half +a staff-space. Here's the final result: @@ -2888,15 +2907,17 @@ Here's the final result: << { c2 aes4. bes8 } \\ - { aes2 f4 fes } - \\ { - \voiceFour - \once \override NoteColumn #'force-hshift = #0 - 2 + 2 \once \override NoteColumn #'force-hshift = #0.5 des2 } + \\ + \\ + { + \override NoteColumn #'force-hshift = #0 + aes'2 f4 fes + } >> | 1 | } @@ -2941,7 +2962,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -2951,7 +2973,8 @@ rhMusic = \relative c'' { % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3301,7 +3324,8 @@ rhMusic = \relative c'' { { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work c,8~ \shiftOnn c2 } \new Voice { @@ -3373,7 +3397,8 @@ rhMusic = \relative c'' { c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn #'force-hshift = #1.0 - % Move the c2 out of the main note column so the merge will work + % Move the c2 out of the main note column + % so the merge will work \shiftOnn c2 } @@ -3383,7 +3408,8 @@ rhMusic = \relative c'' { % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t d2 } \new Voice { @@ -3465,7 +3491,8 @@ cross voices: @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t b8~ b\noBeam } \\ @@ -3480,8 +3507,9 @@ too much, we can lengthen the stem by setting the @lilypond[quote,fragment,relative=2,verbatim] << { - \once \override Stem #'transparent = ##t - \once \override Stem #'length = #8 + \tweak Stem #'transparent ##t + \tweak Flag #'transparent ##t + \tweak Stem #'length #8 b8~ b\noBeam } \\ @@ -3628,7 +3656,7 @@ VerseOne = \lyrics { } VerseTwo = \lyricmode { - O | \emphasize Christ, \normal whose voice the | wa -- ters heard, + O | \once \emphasize Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { @@ -3676,19 +3704,17 @@ the parts with all the @code{#()}. This is explained in @lilypond[quote,verbatim,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3700,32 +3726,28 @@ inst = } @end lilypond -There are some problems with overlapping output; we'll fix those using -the techniques in @ref{Moving objects}. But let's also -do something about the @code{mpdolce} and @code{inst} -definitions. They produce the output we desire, but we might want -to use them in another piece. We could simply copy-and-paste them -at the top of every file, but that's an annoyance. It also leaves -those definitions in our input files, and I personally find all -the @code{#()} somewhat ugly. Let's hide them in another file: +Let's do something about the @code{mpdolce} and @code{inst} definitions. +They produce the output we desire, but we might want to use them in +another piece. We could simply copy-and-paste them at the top of every +file, but that's an annoyance. It also leaves those definitions in our +input files, and I personally find all the @code{#()} somewhat ugly. +Let's hide them in another file: @example %%% save this to a file called "definitions.ily" mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) @end example We will refer to this file using the @code{\include} command near @@ -3753,19 +3775,17 @@ Now let's modify our music (let's save this file as @file{music.ly}). @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \relative c'' { \tempo 4=50 @@ -3790,19 +3810,17 @@ with this: %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) \layout@{ \context @{ @@ -3825,19 +3843,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) \layout{ \context { @@ -3878,19 +3894,17 @@ overall size of the output. %%% definitions.ily mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #@{ \markup @{ \hspace #0 + \translate #'(5 . 0) + \line @{ \dynamic "mp" + \text \italic "dolce" @} @} + #@}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #@{ ^\markup \bold \box #string #@}) #(set-global-staff-size 23) @@ -3914,19 +3928,17 @@ inst = @lilypond[quote,ragged-right] mpdolce = #(make-dynamic-script - (markup #:hspace 0 - #:translate '(5 . 0) - #:line (#:dynamic "mp" - #:text #:italic "dolce"))) + #{ \markup { \hspace #0 + \translate #'(5 . 0) + \line { \dynamic "mp" + \text \italic "dolce" } } + #}) inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) + #{ ^\markup \bold \box #string #}) #(set-global-staff-size 23) @@ -3997,22 +4009,27 @@ first find the directory appropriate to your system. The location of this directory depends (a) on whether you obtained LilyPond by downloading a precompiled binary from lilypond.org or whether you installed it from a package manager (i.e. -distributed with Linux, or installed under fink or cygwin) or +distributed with GNU/Linux, or installed under fink or cygwin) or compiled it from source, and (b) on which operating system it is being used: @strong{Downloaded from lilypond.org} @itemize @bullet -@item Linux +@item GNU/Linux Navigate to +@example @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/} +@end example @item MacOS X Navigate to +@example @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/} +@end example + by either @code{cd}-ing into this directory from the Terminal, or control-clicking on the LilyPond application and selecting @q{Show Package Contents}. @@ -4020,7 +4037,9 @@ selecting @q{Show Package Contents}. @item Windows Using Windows Explorer, navigate to +@example @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/} +@end example @end itemize diff --git a/Documentation/lily_search.js b/Documentation/lily_search.js index 09516b306b..17cbb53b82 100644 --- a/Documentation/lily_search.js +++ b/Documentation/lily_search.js @@ -98,4 +98,4 @@ function print_search_field (language, manual, bigpage) } if (useAjax) { resObject = erzXMLHttpRequestObject (); -} \ No newline at end of file +} diff --git a/Documentation/lilypond-texi2html.init b/Documentation/lilypond-texi2html.init index 0b542ed777..928366317d 100644 --- a/Documentation/lilypond-texi2html.init +++ b/Documentation/lilypond-texi2html.init @@ -55,6 +55,8 @@ ### makeinfo_like_foot_line_and_ref ### makeinfo_like_foot_lines ### makeinfo_like_paragraph +### -) In tables, don't wrap

around the contents. Implemented in +### makeinfo_like_paragraph ### ### ### Useful helper functions: @@ -114,7 +116,7 @@ $LY_LANGUAGES->{'fr'} = { $LY_LANGUAGES->{'hu'} = { 'Back to Documentation Index' => 'Vissza a dokumentációk jegyzékéhez', - '

Thanks to ${webdev_link} for hosting ${lily_site}.' => 'Köszönet a ${webdev_link} részére a ${lily_site} tárhelyért.', + '

Thanks to ${webdev_link} for hosting ${lily_site}.' => '

Köszönet a ${webdev_link} részére a ${lily_site} tárhelyért.', }; $LY_LANGUAGES->{'it'} = { @@ -124,7 +126,7 @@ $LY_LANGUAGES->{'it'} = { $LY_LANGUAGES->{'ja'} = { 'Back to Documentation Index' => 'ドキュメント インデックスに戻る', - '

Thanks to ${webdev_link} for hosting ${lily_site}.' => '${lily_site} をホスティングしてくれている ${webdev_link} に感謝します。', + '

Thanks to ${webdev_link} for hosting ${lily_site}.' => '

${lily_site} をホスティングしてくれている ${webdev_link} に感謝します。', }; @@ -135,7 +137,7 @@ $LY_LANGUAGES->{'nl'} = { $LY_LANGUAGES->{'zh'} = { 'Back to Documentation Index' => '回到文档索引', - '

Thanks to ${webdev_link} for hosting ${lily_site}.' => '非常感谢 ${webdev_link} 提供 ${lily_site} 的主机空间。', + '

Thanks to ${webdev_link} for hosting ${lily_site}.' => '

非常感谢 ${webdev_link} 提供 ${lily_site} 的主机空间。', }; # FIXME: request the translations below then send them to texi2html/texinfo devs @@ -847,7 +849,7 @@ $Texi2HTML::Config::DOCTYPE = ' "lilypond-website.css", TITLE => "Default style"} @@ -1066,18 +1068,18 @@ sub lilypond_css_lines ($$) foreach my $ref (@CSS_REFS) { $Texi2HTML::THISDOC{'CSS_LINES'} .= - "{TITLE}\" href=\"$ref->{FILENAME}\">\n"; + "{TITLE}\" href=\"css/$ref->{FILENAME}\">\n"; } foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS) { $Texi2HTML::THISDOC{'CSS_LINES'} .= - "{FILENAME}\" title=\"$ref->{TITLE}\">\n"; + "{FILENAME}\" title=\"$ref->{TITLE}\">\n"; } # The ie-fixes stylesheet is needed for the docs, but not the website. if (not ($web_manual)) { $Texi2HTML::THISDOC{'CSS_LINES'} .= - "\n"; + "\n"; } if ($ENV{'AJAX_SEARCH'} == 1) { @@ -1422,11 +1424,10 @@ sub lilypond_external_href($$$) $href = &$default_external_href($node, $node_id, $node_xhtml_id, lc_last($file)); $href = remove_unneeded_anchor($href); - # TODO: very yucky, but will be fixed in issue 1004 if ($web_manual) { - my $only_web = $ENV{ONLY_WEB}; - if ($only_web) { - $href = "../../doc/v2.13/Documentation/web/".$href; + my $only_web_version = $ENV{ONLY_WEB_VERSION}; + if ($only_web_version) { + $href = "../../doc/".$only_web_version."/Documentation/web/".$href; } } @@ -1445,9 +1446,9 @@ sub remove_unneeded_anchor($) for ($i = 0; $i < @hrefsplit; $i++) { $item = @hrefsplit[$i]; if ($item =~ /#/) { - @splitted = split(".html#", $item); - if (@splitted[0] eq @splitted[1]) { - @hrefsplit[$i] = @splitted[0] . ".html"; + @split = split(".html#", $item); + if (@split[0] eq @split[1]) { + @hrefsplit[$i] = @split[0] . ".html"; } } } @@ -1511,7 +1512,7 @@ sub generate_ly_toc_entries($$$$$) 'introduction' => [2, 2, 2, 2, 3, 3, 4, 4], 'download' => [2, 2, 2, 3, 3, 4], 'manuals' => [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4], - 'community' => [1, 1, 1, 2, 2, 2, 3, 3], + 'community' => [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4], ); my $addColor = "colorDefault"; while (($top_section, $color_indices) = each %color_maps) { @@ -2070,6 +2071,13 @@ sub makeinfo_like_paragraph ($$$$$$$$$$$$$) return $text if (($format eq 'itemize' or $format eq 'enumerate') and ($$paragraph_number == 1)); } + # The cells of a table should not be wrapped in a

tag, so just return the text + if (defined($command_stack_at_begin->[0]) and $command_stack_at_begin->[0] eq 'multitable') + { + return $text; + } + + # Adjust all footnotes so that they look like good old makeinfo my $open = ' $@ - + pngtopnm $< | pnmscale -w=600 | pnmtopng > $@ 2> /dev/null diff --git a/Documentation/web/ly-examples/ancient-headword.ly b/Documentation/ly-examples/ancient-headword.ly similarity index 99% rename from Documentation/web/ly-examples/ancient-headword.ly rename to Documentation/ly-examples/ancient-headword.ly index 22640e58dc..a49c4d8d1e 100644 --- a/Documentation/web/ly-examples/ancient-headword.ly +++ b/Documentation/ly-examples/ancient-headword.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \include "example-header.ily" #(set-global-staff-size 15) -\include "gregorian.ly" +\include "gregorian.ly" \score { << @@ -121,4 +121,3 @@ \consists Custos_engraver } } - diff --git a/Documentation/web/ly-examples/aucun-snippet.ly b/Documentation/ly-examples/aucun-snippet.ly similarity index 78% rename from Documentation/web/ly-examples/aucun-snippet.ly rename to Documentation/ly-examples/aucun-snippet.ly index ce484baaee..cf2bf35823 100644 --- a/Documentation/web/ly-examples/aucun-snippet.ly +++ b/Documentation/ly-examples/aucun-snippet.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \include "example-header.ily" \paper { @@ -7,7 +7,7 @@ } % Aucun ont trouvé, from Montpellier Codex -% +% % Put brackets in where the original has ligatures, using % "Analysis Brackets," and adjust the "bracket-flare" property % to make the ends vertical instead of slanted. @@ -22,7 +22,7 @@ incipitGlobal = { \override KeySignature #'style = #'mensural \override Rest #'style = #'mensural % \override Staff.TimeSignature #'style = #'mensural - \cadenzaOn + \cadenzaOn \override Score.Clef #'extra-offset = #'(-0.0 . 0.5) \override Score.Clef #'font-size = #3 \clef "vaticana-do1" @@ -51,7 +51,7 @@ incipitTriplum = \markup{ incipitMotetus = \markup{ \score{ - { + { \set Staff.instrumentName="Motetus" \incipitGlobal s1. @@ -71,7 +71,7 @@ incipitMotetus = \markup{ } incipitTenor = \markup{ - \score{ + \score{ { \set Staff.instrumentName = "Tenor " \incipitGlobal @@ -98,7 +98,7 @@ incipitBassus = \markup{ \override Accidental #'style = #'neomensural \override Rest #'style = #'neomensural \override Staff.TimeSignature #'style = #'neomensural - \cadenzaOn + \cadenzaOn \clef "petrucci-f3" \key f \major \time 3/2 @@ -126,31 +126,31 @@ global = { \time 3/4 \override Staff.BarLine #'transparent = ##t \override HorizontalBracket #'direction = #UP - \override HorizontalBracket #'bracket-flare = #'(0 . 0) + \override HorizontalBracket #'bracket-flare = #'(0 . 0) } %%%%%%%%% MACRO FOR MAKING SLASHES THROUGH STEMS %%%%%%%%%% -MakeSlash = #(define-music-function (parser location angle len-left len-right +MakeSlash = #(define-music-function (parser location angle len-left len-right thick y-factor offset) - (number? number? number? number? number? + (number? number? number? number? number? pair?) #{ \once \override Voice.Stem #'text = \markup { - \postscript #(let ((x-off (car $offset)) - (y-off (cdr $offset))) + \postscript #(let ((x-off (car offset)) + (y-off (cdr offset))) (string-append - (ly:number->string (car $offset)) " " (ly:number->string (cdr $offset)) " + (ly:number->string (car offset)) " " (ly:number->string (cdr offset)) " translate " - (ly:number->string $angle) " rotate " - (ly:number->string (- x-off)) " " + (ly:number->string angle) " rotate " + (ly:number->string (- x-off)) " " (ly:number->string (- y-off)) " translate 0 setlinewidth " - (ly:number->string (- x-off $len-left)) " " (ly:number->string (+ y-off -$thick)) " moveto " - (ly:number->string (- x-off $len-left)) " " (ly:number->string y-off) - " " (ly:number->string $thick) " + (ly:number->string (- x-off len-left)) " " (ly:number->string (+ y-off +thick)) " moveto " + (ly:number->string (- x-off len-left)) " " (ly:number->string y-off) + " " (ly:number->string thick) " 90 270 arc " - (ly:number->string (+ x-off $len-right)) " " (ly:number->string y-off) - " " (ly:number->string $thick) " + (ly:number->string (+ x-off len-right)) " " (ly:number->string y-off) + " " (ly:number->string thick) " 270 90 arc " " gsave fill grestore stroke")) } @@ -162,8 +162,8 @@ $thick)) " moveto " (ly:stencil-add sten1 (ly:stencil-translate sten2 - (cons 0 (+ (* $y-factor (cdr extent1)) - (* (- 1 $y-factor) (car extent1)))))))) + (cons 0 (+ (* y-factor (cdr extent1)) + (* (- 1 y-factor) (car extent1)))))))) #}) @@ -175,7 +175,7 @@ triplumWords = \lyricmode { Au -- cun ont trou -- ve chant par u -- sa -- ge, mes a moi en doune o -- choi -- son __ a -- mours, qui res -- bou -- dist mon cou -- ra -- ge - si que m'ès -- tuet fai -- re _ chan -- _ _ çon + si que m'ès -- tuet fai -- re _ chan -- _ _ çon } triplumNotes = \relative c' { @@ -185,11 +185,11 @@ triplumNotes = \relative c' { \override StemTremolo #'beam-thickness = #.125 \override StemTremolo #'slope = #1.0 f8 f4 e8 d c f f f | % 1 - % the \scaleDurations command below makes 5 notes last the + % the \scaleDurations command below makes 5 notes last the % duration of a dotted quarter - e8 c4 \scaleDurations #'(3 . 2) { \times 4/5{e16[ d e d e]} } e8 f4 | % 2 + e8 c4 \scaleDurations 3/2 { \times 4/5{e16[ d e d e]} } e8 f4 | % 2 g2. ~ g4. | % 3 - f8 d4 f4. \scaleDurations #'(3 . 2) { \times 4/6{ g16[ f e f e f]}} % 4 + f8 d4 f4. \scaleDurations 3/2 { \times 4/6{ g16[ f e f e f]}} % 4 g8 g4 g4. e4. | % 5 fis8 d4 e8\startGroup g4\stopGroup f8[ e d] | % 6 c2. r4. | % 7 @@ -197,7 +197,7 @@ triplumNotes = \relative c' { motetusWords = \lyricmode { lonc tans _ _ me fiu -- te -- nu de chan -- _ _ ter __ - mes or ai _ _ + mes or ai _ _ } motetusNotes = \relative c' { @@ -220,12 +220,12 @@ tenorNotes = \relative c { \new StaffGroup << \new Staff = "triplum" << %\set Staff.instrumentName = "Triplum" - \set Staff.instrumentName = \incipitTriplum + \set Staff.instrumentName = \incipitTriplum \set Staff.shortInstrumentName = "Tr." - \set Staff.timeSignatureFraction = #'(9 . 8) - \scaleDurations #'(2 . 3) + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 \context Voice = "triplum" { \global \triplumNotes } -% \scaleDurations #'(2 . 3) +% \scaleDurations 2/3 % \context Voice = "slashes" { \triplumSkips } \new Lyrics { \lyricsto "triplum" { \triplumWords }} >> @@ -233,16 +233,16 @@ tenorNotes = \relative c { %\set Staff.instrumentName = "Motetus" \set Staff.instrumentName = \incipitMotetus \set Staff.shortInstrumentName = "M." - \set Staff.timeSignatureFraction = #'(9 . 8) - \scaleDurations #'(2 . 3) - \context Voice = "motetus" { \global \motetusNotes } + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 + \context Voice = "motetus" { \global \motetusNotes } \new Lyrics { \lyricsto "motetus" { \motetusWords }} >> - \new Staff = "tenor" { + \new Staff = "tenor" { %\set Staff.instrumentName = "Tenor" - \set Staff.instrumentName = \incipitTenor + \set Staff.instrumentName = \incipitTenor \set Staff.shortInstrumentName = "T." - \global \tenorNotes + \global \tenorNotes } >> %\midi {} diff --git a/Documentation/web/ly-examples/bach-bwv610.ly b/Documentation/ly-examples/bach-bwv610.ly similarity index 98% rename from Documentation/web/ly-examples/bach-bwv610.ly rename to Documentation/ly-examples/bach-bwv610.ly index 27659dfd6b..951e99ff73 100644 --- a/Documentation/web/ly-examples/bach-bwv610.ly +++ b/Documentation/ly-examples/bach-bwv610.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" %\include "example-header.ily" @@ -30,7 +30,7 @@ global = { \key c \minor \time 4/4 - #(set-accidental-style 'default) + \accidentalStyle "default" } halsup = { diff --git a/Documentation/web/ly-examples/bach-schenker.ly b/Documentation/ly-examples/bach-schenker.ly similarity index 90% rename from Documentation/web/ly-examples/bach-schenker.ly rename to Documentation/ly-examples/bach-schenker.ly index a69afab420..721427eacb 100644 --- a/Documentation/web/ly-examples/bach-schenker.ly +++ b/Documentation/ly-examples/bach-schenker.ly @@ -15,7 +15,7 @@ I = \once \override NoteColumn #'ignore-collision = ##t -\version "2.14.0" +\version "2.16.0" staffPiano = \new PianoStaff { \set Score.timing = ##f @@ -57,6 +57,7 @@ staffPiano = \new PianoStaff { % Add color to both Dashed Slurs in top staff \override Slur #'color = #(x11-color "purple") \override Stem #'transparent = ##t + \override Flag #'transparent = ##t s1 \once \override Slur #'height-limit = #6 \once \override Slur #'extra-offset = #'(1.25 . 0) @@ -70,6 +71,7 @@ staffPiano = \new PianoStaff { \once \override NoteHead #'transparent = ##t a4) g2 \revert Stem #'transparent + \revert Flag #'transparent } \\ \override Staff.NoteCollision @@ -93,6 +95,7 @@ staffPiano = \new PianoStaff { \override Slur #'color = #(x11-color "violet") \override PhrasingSlur #'color = #(x11-color "violet") \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Stem #'length = #0 % Add color to text markups in top staff g4_\( fis^(_\markup { \with-color #blue \tiny N } g)\) @@ -100,12 +103,14 @@ staffPiano = \new PianoStaff { b4^(^\markup { \with-color #blue \tiny P } \stemUp \revert Stem #'transparent + \revert Flag #'transparent \override Stem #'length = #10 c8)^( s \override Stem #'length = #14 b4) s s \override Stem #'length = #0 \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \once \override Slur #'extra-offset = #'(0 . 0.35) % Add color to remaining text markup in top staff c4^\( b_(_\markup { \with-color #blue \tiny P } a)\) s2 @@ -114,18 +119,21 @@ staffPiano = \new PianoStaff { \\ { \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override NoteHead #'transparent = ##t \override Stem #'length = #0 s1 s4 e4 s \change Staff = "LH" fis,4 s2 \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent \revert Stem #'length } \\ { \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override NoteHead #'transparent = ##t \override Stem #'length = #0 s1 s s2 @@ -133,6 +141,7 @@ staffPiano = \new PianoStaff { \change Staff = "LH" g,4 s s2 \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent \revert Stem #'length } @@ -165,16 +174,19 @@ staffPiano = \new PianoStaff { \\ { \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \stemDown \override TextScript #'extra-offset = #'(-11.75 . -12.25) \I g'2 s1 s s2 \I d2 g,2 \revert Stem #'transparent + \revert Flag #'transparent } \\ { % Add color to all single-note Slurs in bottom staff \override Slur #'color = #(x11-color "violet") \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \once \override NoteHead #'transparent = ##t \override Stem #'length = #0 g'4 @@ -190,12 +202,14 @@ staffPiano = \new PianoStaff { \once \override Slur #'extra-offset = #'(0 . 0.5) \I fis,4_( \revert Stem #'transparent + \revert Flag #'transparent \override Stem #'length = #10 \stemDown g4) s \once \override Slur #'extra-offset = #'(0 . 0.25) \I c8_( s \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \revert Stem #'length a4) \once \override NoteHead #'transparent = ##t @@ -206,9 +220,11 @@ staffPiano = \new PianoStaff { % Add color to all two-note Slurs in bottom staff \override Slur #'color = #(x11-color "violet") \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override NoteHead #'transparent = ##t \I g'4^( s b) s2 \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent \override Beam #'positions = #'(-4 . 1) \stemDown @@ -221,6 +237,7 @@ staffPiano = \new PianoStaff { b8] s \revert Beam #'positions \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override NoteHead #'transparent = ##t c4^( s d4) s s2 } @@ -229,6 +246,7 @@ staffPiano = \new PianoStaff { % Add color to four-note Slur in bottom staff \override Slur #'color = #(x11-color "violet") \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override NoteHead #'transparent = ##t \override Stem #'length = #0 \stemDown @@ -236,6 +254,7 @@ staffPiano = \new PianoStaff { \once \override Slur #'extra-offset = #'(0 . 0.25) \I g4_( s2. e4) s2. s2 s1 s2 \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent } \\ @@ -243,6 +262,7 @@ staffPiano = \new PianoStaff { % Add color to dashed Slur in bottom staff \override Slur #'color = #(x11-color "purple") \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override NoteHead #'transparent = ##t \slurDashed \once \override Slur #'height-limit = #6.0 @@ -250,6 +270,7 @@ staffPiano = \new PianoStaff { \override Stem #'length = #0 g4_( s2. s1 g,4) s s1 s2 \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent } >> diff --git a/Documentation/web/ly-examples/cary-layout.ily b/Documentation/ly-examples/cary-layout.ily similarity index 77% rename from Documentation/web/ly-examples/cary-layout.ily rename to Documentation/ly-examples/cary-layout.ily index 480426c48c..4d2faf4c1e 100644 --- a/Documentation/web/ly-examples/cary-layout.ily +++ b/Documentation/ly-examples/cary-layout.ily @@ -1,12 +1,12 @@ -\version "2.13.39" +\version "2.16.0" \layout { indent = #0 ragged-right = ##t \context { \Score - + proportionalNotationDuration = #(ly:make-moment 1 64) \override Beam #'breakable = ##t autoBeaming = ##f @@ -26,11 +26,11 @@ \paper { oddHeaderMarkup = \markup \fill-line { " " } evenHeaderMarkup = \markup \fill-line { " " } - oddFooterMarkup = \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 { + evenFooterMarkup = \markup { + \fill-line { \bold \fontsize #3 \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string } } printfirst-page-number = ##t print-page-number = ##t @@ -57,49 +57,48 @@ sffpp = #(make-dynamic-script "sffpp") beam = #(define-music-function (parser location left right) (number? number?) (cond ((and (= left 0) (> right 0)) #{ - \set stemRightBeamCount = #$right + \set stemRightBeamCount = #right #}) ((and (> left 0) (= right 0)) #{ - \set stemLeftBeamCount = #$left + \set stemLeftBeamCount = #left #}) (else #{ - \set stemLeftBeamCount = #$left - \set stemRightBeamCount = #$right + \set stemLeftBeamCount = #left + \set stemRightBeamCount = #right #}) ) ) fraction = #(define-music-function (parser location music) (ly:music?) - #{ \tweak #'text #tuplet-number::calc-fraction-text $music #}) + #{ \tweak #'text #tuplet-number::calc-fraction-text #music #}) triangle = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(do do do do do do do) $music #}) + #{ \once \set shapeNoteStyles = #'#(do do do do do do do) #music #}) semicircle = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(re re re re re re re) $music #}) + #{ \once \set shapeNoteStyles = #'#(re re re re re re re) #music #}) blackdiamond = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(mi mi mi mi mi mi mi) $music #}) + #{ \once \set shapeNoteStyles = #'#(mi mi mi mi mi mi mi) #music #}) tiltedtriangle = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(fa fa fa fa fa fa fa) $music #}) + #{ \once \set shapeNoteStyles = #'#(fa fa fa fa fa fa fa) #music #}) square = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(la la la la la la la) $music #}) + #{ \once \set shapeNoteStyles = #'#(la la la la la la la) #music #}) wedge = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(ti ti ti ti ti ti ti) $music #}) + #{ \once \set shapeNoteStyles = #'#(ti ti ti ti ti ti ti) #music #}) harmonic = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(harmonic harmonic harmonic harmonic harmonic harmonic harmonic) $music #}) + #{ \once \set shapeNoteStyles = #'#(harmonic harmonic harmonic harmonic harmonic harmonic harmonic) #music #}) cross = #(define-music-function (parser location music) (ly:music?) - #{ \once \set shapeNoteStyles = #'#(cross cross cross cross cross cross cross) $music #}) + #{ \once \set shapeNoteStyles = #'#(cross cross cross cross cross cross cross) #music #}) white = #(define-music-function (parser location music) (ly:music?) - #{ \once \override NoteHead #'duration-log = #1 $music #}) - + #{ \once \override NoteHead #'duration-log = #1 #music #}) diff --git a/Documentation/web/ly-examples/cary.ly b/Documentation/ly-examples/cary.ly similarity index 97% rename from Documentation/web/ly-examples/cary.ly rename to Documentation/ly-examples/cary.ly index 1990a690a3..376f9f9bff 100644 --- a/Documentation/web/ly-examples/cary.ly +++ b/Documentation/ly-examples/cary.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" % the example header file caused the head to be chopped off %\include "example-header.ily" @@ -14,7 +14,7 @@ composer = "Trevor Bača" copyright = "Copyright 2006 Trevor Bača, licensed under the FDL 1.1 or higher" - + } % Verbatim from composer's score. @@ -30,9 +30,9 @@ \score { << - + \new StaffGroup << - + \new Staff \with { \override Stem #'direction = #down \override Beam #'positions = #'(-7 . -7) @@ -40,22 +40,22 @@ \override TupletBracket #'staff-padding = #5 \override TupletBracket #'padding = #2.25 } << - + \new Voice { - + \override Score.MetronomeMark #'extra-offset = #'(0 . 6) \override Score.MetronomeMark #'font-size = #3 \tempo 8=42 \time 5/16 s4 ~ s16 \noBreak % measure 6 \time 4/8 s2 \noBreak % measure 7 \time 4/8 s2 \noBreak % measure 8 - + } - + \new Voice \with { \remove Forbid_line_break_engraver } { - + % measure 6 \fraction \times 5/3 { \times 4/5 { @@ -74,7 +74,7 @@ } bf''16 % 46 } - + % measure 7 r8 % 47 \times 4/5 { @@ -85,15 +85,15 @@ b'32 ] % 52 } ef'''4 % 53 - + % measure 8 b''8 [ % 54 g''8 ] % 55 d''4 % 56 - + } >> - + \new Staff \with { \override Clef #'transparent = ##t \override StaffSymbol #'line-positions = #'(-4 -2 2 4) @@ -101,11 +101,11 @@ \override TupletBracket #'staff-padding = #5 \override TupletBracket #'padding = #2.25 } << - + \new Voice \with { \remove Forbid_line_break_engraver \override Stem #'direction = #up - \override Stem #'stroke-style = #"grace" + \override Flag #'stroke-style = #"grace" \override Stem #'font-size = #-3 \override Rest #'transparent = ##t \override NoteHead #'no-ledgers = ##t @@ -113,7 +113,7 @@ \override TupletBracket #'transparent = ##t \override TupletNumber #'transparent = ##t } { - + % measure 6 \fraction \times 5/3 { \square f''16 * 1/8 % 40 @@ -137,7 +137,7 @@ \square f''16 * 1/4 % 55 } } - + % measure 7 s8 % 56 \square g''16 * 2/1 % 57 @@ -151,7 +151,7 @@ f''16 * 1/4 % 64 f''16 * 1/4 % 65 } - + % measure 8 \times 4/5 { \times 4/7 { @@ -170,12 +170,13 @@ \triangle g''16 * 1/2 % 77 \triangle g''16 * 1/2 % 78 } - + } - + \new Voice \with { \remove Forbid_line_break_engraver \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Rest #'transparent = ##t \override Rest #'staff-position = #-0.5 \override Dots #'transparent = ##t @@ -183,7 +184,7 @@ \override TupletBracket #'transparent = ##t \override TupletNumber #'transparent = ##t } { - + % measure 6 \fraction \times 5/3 { \blackdiamond f'128 [ % 40 @@ -207,7 +208,7 @@ \blackdiamond f'64 % 55 } } - + % measure 7 s8 % 56 \harmonic a'8 \glissando % 57 @@ -221,7 +222,7 @@ \harmonic g'64 \glissando % 64 \blackdiamond g'64 % 65 } - + % measure 8 \times 4/5 { \times 4/7 { @@ -240,21 +241,21 @@ \harmonic e'32 \glissando % 77 \blackdiamond e'32 % 78 } - + } - + \new Voice \with { \remove Forbid_line_break_engraver \override Stem #'direction = #down \override Stem #'font-size = #-3 - \override Stem #'stroke-style = #"grace" + \override Flag #'stroke-style = #"grace" \override Rest #'transparent = ##t \override NoteHead #'no-ledgers = ##t \override Dots #'transparent = ##t \override TupletBracket #'transparent = ##t \override TupletNumber #'transparent = ##t } { - + % measure 6 \fraction \times 5/3 { s128 % 40 @@ -278,7 +279,7 @@ \semicircle a16 * 1/4 % 55 } } - + % measure 7 s8 % 56 s8 % 57 @@ -292,7 +293,7 @@ s64 % 64 \triangle a16 * 1/4 % 65 } - + % measure 8 \times 4/5 { \times 4/7 { @@ -311,9 +312,9 @@ s32 % 77 \semicircle a16 * 1/2 % 78 } - + } - + \new Voice \with { \remove Forbid_line_break_engraver \override Stem #'direction = #down @@ -330,7 +331,7 @@ \override TextSpanner #'(bound-details right padding) = #0.5 \override TextSpanner #'staff-padding = #4 } { - + % measure 6 \fraction \times 5/3 { \beam #0 #5 g,128 \sffp \< [ % 40 @@ -354,7 +355,7 @@ \beam #4 #0 g,64 \fX ] % 55 } } - + % measure 7 r8 % 56 g,8 \sf \< [ % 57 @@ -368,7 +369,7 @@ \beam #4 #4 g,64 % 64 \beam #4 #0 g,64 \fX ] % 65 } - + % measure 8 \times 4/5 { \times 4/7 { @@ -387,7 +388,7 @@ \beam #3 #3 g,32 % 77 \beam #3 #0 g,32 \ffX ] % 78 } - + } >> >> diff --git a/Documentation/web/ly-examples/chart.ly b/Documentation/ly-examples/chart.ly similarity index 92% rename from Documentation/web/ly-examples/chart.ly rename to Documentation/ly-examples/chart.ly index 871ea301a6..685d811ed3 100644 --- a/Documentation/web/ly-examples/chart.ly +++ b/Documentation/ly-examples/chart.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \include "example-header.ily" \include "predefined-guitar-fretboards.ly" @@ -22,7 +22,7 @@ melody = \relative c' { } harmonies = \chordmode { - \global + \global s4 g1 | c | a:m | d % 1-3 } @@ -35,10 +35,9 @@ text = \lyricmode { << \new ChordNames { \harmonies } \new FretBoards { \harmonies } - \new Staff { + \new Staff { \context Voice = "vocal" { \melody } } \new Lyrics \lyricsto "vocal" \text >> } - diff --git a/Documentation/web/ly-examples/example-header.ily b/Documentation/ly-examples/example-header.ily similarity index 90% rename from Documentation/web/ly-examples/example-header.ily rename to Documentation/ly-examples/example-header.ily index ab35243579..40e74a41fb 100644 --- a/Documentation/web/ly-examples/example-header.ily +++ b/Documentation/ly-examples/example-header.ily @@ -1,4 +1,4 @@ -\version "2.11.33" +\version "2.16.0" \paper{ indent=0\mm ragged-last=##f @@ -9,4 +9,3 @@ bookTitleMarkup = ##f scoreTitleMarkup = ##f } - diff --git a/Documentation/web/ly-examples/granados.ly b/Documentation/ly-examples/granados.ly similarity index 94% rename from Documentation/web/ly-examples/granados.ly rename to Documentation/ly-examples/granados.ly index 607732e359..31834c1b01 100644 --- a/Documentation/web/ly-examples/granados.ly +++ b/Documentation/ly-examples/granados.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \include "example-header.ily" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -57,14 +57,14 @@ upperVoiceTwo = \relative c'' { s32 s32_\appassmolto s8. \voiceOne r8 -> s4 \override Stem #'cross-staff = ##t \override Stem #'length = #28 - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag s8 \voiceTwo g,8 aes4 s4 } middleVoiceOne = \relative c' { \override Stem #'cross-staff = ##t \override Stem #'length = #32 - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag d!8\noBeam s8 s8 s8_\crmolto s4 % 1 s4 8[ ] \voiceOne e,8( dis16 e) | % 2 \revert Stem #'length @@ -78,7 +78,7 @@ middleVoiceTwo = \relative c' { s2. | % 1 \override Stem #'cross-staff = ##t \override Stem #'length = #24 - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag s2 \voiceTwo e!4 | % 2 s4 \voiceTwo 8 16 d' 8 | % 3 } @@ -140,9 +140,6 @@ lowerVoiceTwo = \relative c, { } } %{\midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 120 4) - } + \tempo 4 = 120 }%} } diff --git a/Documentation/web/ly-examples/orchestra.ly b/Documentation/ly-examples/orchestra.ly similarity index 99% rename from Documentation/web/ly-examples/orchestra.ly rename to Documentation/ly-examples/orchestra.ly index 4f8726da9e..219acafdc9 100644 --- a/Documentation/web/ly-examples/orchestra.ly +++ b/Documentation/ly-examples/orchestra.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { tagline = ##f @@ -571,4 +571,3 @@ R2. | } } } - diff --git a/Documentation/web/ly-examples/sesto-full.ly b/Documentation/ly-examples/sesto-full.ly similarity index 98% rename from Documentation/web/ly-examples/sesto-full.ly rename to Documentation/ly-examples/sesto-full.ly index 7f62973461..6f10964616 100644 --- a/Documentation/web/ly-examples/sesto-full.ly +++ b/Documentation/ly-examples/sesto-full.ly @@ -4,7 +4,7 @@ %%% %%% Nicolas Sceaux -\version "2.14.0" +\version "2.16.0" \include "sesto.ily" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -65,5 +65,3 @@ % \midi { } } } - - diff --git a/Documentation/web/ly-examples/sesto-piano.ly b/Documentation/ly-examples/sesto-piano.ly similarity index 98% rename from Documentation/web/ly-examples/sesto-piano.ly rename to Documentation/ly-examples/sesto-piano.ly index 0d2a5ffdd5..286746b16d 100644 --- a/Documentation/web/ly-examples/sesto-piano.ly +++ b/Documentation/ly-examples/sesto-piano.ly @@ -4,7 +4,7 @@ %%% %%% Nicolas Sceaux -\version "2.14.0" +\version "2.16.0" \include "sesto.ily" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -43,4 +43,3 @@ } } } - diff --git a/Documentation/web/ly-examples/sesto-violin.ly b/Documentation/ly-examples/sesto-violin.ly similarity index 97% rename from Documentation/web/ly-examples/sesto-violin.ly rename to Documentation/ly-examples/sesto-violin.ly index 89970512ab..4de17c8eb0 100644 --- a/Documentation/web/ly-examples/sesto-violin.ly +++ b/Documentation/ly-examples/sesto-violin.ly @@ -4,7 +4,7 @@ %%% %%% Nicolas Sceaux -\version "2.14.0" +\version "2.16.0" \include "sesto.ily" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Documentation/web/ly-examples/sesto.ily b/Documentation/ly-examples/sesto.ily similarity index 99% rename from Documentation/web/ly-examples/sesto.ily rename to Documentation/ly-examples/sesto.ily index 899d3cc0c7..e2c4d9e88d 100644 --- a/Documentation/web/ly-examples/sesto.ily +++ b/Documentation/ly-examples/sesto.ily @@ -4,7 +4,7 @@ %%% %%% Nicolas Sceaux -\version "2.12.2" +\version "2.16.0" \header { title = "Giulio Cesare in Egitto" subtitle = "Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)" @@ -213,7 +213,6 @@ bassi = { global = { \key c \minor \set Score . tempoWholesPerMinute = #(ly:make-moment (/ 80 4) 1 0 1) - \time 4/4 + \time 4/4 %s1*34 \bar "|." } - diff --git a/Documentation/web/ly-examples/tab-example.ly b/Documentation/ly-examples/tab-example.ly similarity index 82% rename from Documentation/web/ly-examples/tab-example.ly rename to Documentation/ly-examples/tab-example.ly index 3f9a8d33c9..60fcf20881 100644 --- a/Documentation/web/ly-examples/tab-example.ly +++ b/Documentation/ly-examples/tab-example.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-global-staff-size 22.45) @@ -14,16 +14,6 @@ (- (ly:pitch-alteration right-pitch) (ly:pitch-alteration left-pitch)) 0 ))) -% Hide fret number: useful to draw slide into/from a casual point of -% the fretboard. -hideFretNumber = { - \once \override TabNoteHead #'transparent = ##t - \once \override TabNoteHead #'whiteout = ##f - \once \override NoteHead #'transparent = ##t - \once \override Stem #'transparent = ##t - \once \override NoteHead #'no-ledgers = ##t -} - \paper { indent= #0 line-width= #180 @@ -35,7 +25,7 @@ upper= \relative c' { \set Staff.midiInstrument = #"acoustic guitar (steel)" \set fingeringOrientations = #'(left) - \partial 4. \acciaccatura c16 \glissando cis8 e4 + \partial 4. cis8 e4 < cis-1 g'-3 >2 s8 \grace a16 ( \glissando < b-2 >8\3 ) < d-1 > ( b ) < e-3 >\2 ( b ) \grace < ais-2 >16 ( \glissando a8 g ) s4. s4. < d'\3 g\2 >8 < gis,\4 d'\3 fis\2 >2\arpeggio ~ @@ -48,7 +38,7 @@ lower= \relative c { \partial 4. s4. s4 e,4 s2 s2 s8 < e'-3 >4. ~ - e4 \hideFretNumber \grace { b8 \glissando s4 } < e-2 >4\5 e,2 ~ + e4 \hideNotes \grace { b8 \glissando s4 } \unHideNotes < e-2 >4\5 e,2 ~ e2 < e'\6\harmonic > } diff --git a/Documentation/web/ly-examples/theory.ly b/Documentation/ly-examples/theory.ly similarity index 69% rename from Documentation/web/ly-examples/theory.ly rename to Documentation/ly-examples/theory.ly index cca033a6df..082317705a 100644 --- a/Documentation/web/ly-examples/theory.ly +++ b/Documentation/ly-examples/theory.ly @@ -1,30 +1,30 @@ -\version "2.14.0" +\version "2.16.0" \include "example-header.ily" #(ly:set-option 'point-and-click #f) global = { - \time 4/4 + \time 4/4 \numericTimeSignature \key c \major #(set-global-staff-size 24) } -cf = \relative c { +cf = \relative c { \clef bass \global - c4 c' b a | - g a f d | - e f g g, | - c1 + c4 c' b a | + g a f d | + e f g g, | + c1 } -upper = \relative c'' { +upper = \relative c'' { \global - r4 s4 s2 | - s1*2 | - s2 s4 s - \bar "||" + r4 s4 s2 | + s1*2 | + s2 s4 s + \bar "||" } bassFigures = \figuremode { @@ -35,14 +35,14 @@ bassFigures = \figuremode { \score { \new PianoStaff << - \new Staff { + \new Staff { \context Voice = "added voice" \with { \consists "Balloon_engraver" } \upper } - \new Staff = lower { + \new Staff = lower { << % \context Voice = "cantus firmus" \with { % \consists "Balloon_engraver" @@ -54,10 +54,6 @@ bassFigures = \figuremode { >> \layout {} %{\midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 120 4) - } + \tempo 4 = 120 }%} } - diff --git a/Documentation/macros.itexi b/Documentation/macros.itexi index ea63eb63d5..6e567a56d5 100644 --- a/Documentation/macros.itexi +++ b/Documentation/macros.itexi @@ -739,7 +739,7 @@ For LilyPond version @version{} @end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/misc/ANNOUNCE-0.1 b/Documentation/misc/ANNOUNCE-0.1 index 8ed22c92be..fa146655bb 100644 --- a/Documentation/misc/ANNOUNCE-0.1 +++ b/Documentation/misc/ANNOUNCE-0.1 @@ -39,7 +39,7 @@ music to a TeX file and (mechanical) performances to MIDI files. We have been working very hard on this system for the past year, and we finally think that it is ready to be used and hacked at by a larger -public than us. +public than us. WHY ? @@ -66,7 +66,7 @@ of BETA quality. WE WANT YOU! -You can become a user, but we'd really appreciate it if you would start +You can become a user, but we'd really appreciate it if you would start hacking at Lily, and help us advance our project more quickly. @@ -76,8 +76,8 @@ For compilation you need Unix. (windows32 is known to work, too) GNU C++ v2.7 or better, with libg++ installed. - GNU make. - Flex (2.5.1 or better). + GNU make. + Flex (2.5.1 or better). Bison. (1.25 or better) For running you need @@ -86,7 +86,7 @@ For running you need MusiXTeX fonts The MusiXTeX fonts are part of the MusiXTeX package version T.73, -available at any CTAN mirror, or http://www.gmd.de/Misc/Music/ +available at any CTAN mirror, or http://www.gmd.de/Misc/Music/ ``WHAT CAN LILYPOND DO?'' @@ -102,7 +102,7 @@ Multiple voices within one staff (up to four handled graciously); beams optionally shared between voices. Multiple scores within one input file. Each score is output to a different file. -Beams, slurs, chords, super/subscripts (accents and text), +Beams, slurs, chords, super/subscripts (accents and text), general n-plet (triplet, quadruplets, etc.), lyrics, transposition, dynamics (both absolute and hairpin style), clef changes, meter changes, cadenza-mode, key changes, repeat bars. @@ -132,15 +132,15 @@ for comments and contributions. LilyPond might have a minor bug if you use glibc-2; we will look into it If you use glibc-2, please try 0.1.0 to see if it works and, download 0.1.1 -when it's available. +when it's available. LilyPond might exhibit a g++ bug on Solaris 1.5 (The stack frame gets corrupted -by a constructor) if you compile with -O2. We don't know workarounds. +by a constructor) if you compile with -O2. We don't know workarounds. --- * --- We would like to dedicate this program to all the friends that we - met through music. + met through music. Those deserving special mention (in no particular order): @@ -151,12 +151,12 @@ Janneke! HWN That's a nice thought, Wendy. I've got a few too, to spread -the credits a bit (Again, no particular order) Michelle, Illushka, -Ruth, Eva, Fro/ydis, Monique, Noor, Sascha, Monique, Ilse, Monique, +the credits a bit (Again, no particular order) Michelle, Illushka, +Ruth, Eva, Fro/ydis, Monique, Noor, Sascha, Monique, Ilse, Monique, Eva, Roos, Judith, Tim and, of course, Wendy! JCN - + Of course, our other friends in the `Eindhovens Jongeren Ensemble' (http://www.stack.nl/~hanwen/eje.html) cannot go unmentioned either. diff --git a/Documentation/misc/ANNOUNCE-1.0 b/Documentation/misc/ANNOUNCE-1.0 index 33190c9cf2..9da539f9c3 100644 --- a/Documentation/misc/ANNOUNCE-1.0 +++ b/Documentation/misc/ANNOUNCE-1.0 @@ -1,4 +1,4 @@ -Keywords: midi notation music typesetting gnu font engraving +Keywords: midi notation music typesetting gnu font engraving Subject: GNU LilyPond 1.0 released - The Music Typesetter GNU LilyPond - The Music Typesetter @@ -13,13 +13,13 @@ performances to a MIDI file. WHAT'S NEW SINCE VERSION 0.1? -* LilyPond now includes a completely new music font: the Feta font. +* LilyPond now includes a completely new music font: the Feta font. We were quite disappointed with available music fonts, so we rolled our own. We did our best to copy the best symbol designs available, and we think that we've succeeded in doing so. We're proud of the result, and we hope you agree, so go check it out! -* More elegant output due to +* More elegant output due to * more sophisticated beam/slur formatting * better spacing @@ -99,4 +99,3 @@ Sources for this project are on More detailed info and examples can be found on the webpage at http://www.cs.uu.nl/~hanwen/lilypond/index.html - diff --git a/Documentation/misc/ANNOUNCE-1.2 b/Documentation/misc/ANNOUNCE-1.2 index ec9bef6cd2..e8ec4e1b19 100644 --- a/Documentation/misc/ANNOUNCE-1.2 +++ b/Documentation/misc/ANNOUNCE-1.2 @@ -1,7 +1,7 @@ -*- text -*- -Keywords: midi notation music typesetting gnu font engraving +Keywords: midi notation music typesetting gnu font engraving Subject: GNU LilyPond 1.2 released - The Music Typesetter GNU LilyPond - The Music Typesetter @@ -21,7 +21,7 @@ Documentation and examples can be found on http://www.cs.uu.nl/~hanwen/lilypond/ - + DOWNLOAD Sources for this project are on @@ -48,15 +48,13 @@ WHAT'S NEW? * Enhanced input: semi-automatic beaming, (nested) tuplets, (nested) repeats, chordnames, automatic Lyrics durations. - -* Grace notes, volta brackets, multiple styles for note heads and - time signatures, breathing signs, lyric extenders, cross staff + +* Grace notes, volta brackets, multiple styles for note heads and + time signatures, breathing signs, lyric extenders, cross staff beaming and slurring. - + * --safe option for the paranoid. * More elegant spacing. Text is spaced exactly. * Lots of bugfixes. - - diff --git a/Documentation/misc/CHANGES-0.0 b/Documentation/misc/CHANGES-0.0 index f936254a1f..20279b3009 100644 --- a/Documentation/misc/CHANGES-0.0 +++ b/Documentation/misc/CHANGES-0.0 @@ -1,10 +1,9 @@ - This file documents changes in version 0.0 august 1 VERSION 0.1.0 - + - bf: output tempo to track 0 too - bf: don't forget to copy id_str_, so moved into Music @@ -18,13 +17,13 @@ pl 78.jcn1 ***** july 31 pl 78 - - bf: Midi_instrument + - bf: Midi_instrument - added enable/disable defaults to help. - - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to + - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to DECLARE_MY_RUNTIME_TYPEINFO; - - \stem -1 -> \stem \down in input + - \stem -1 -> \stem \down in input - bf: slurchar index - - configure warnings + - configure warnings - preliminary stuff for multiarch building - #!/usr/bin/perl fixes (AO) - some Makefile cleanups: now faster. @@ -34,17 +33,17 @@ pl 77.jcn2 ****** july 29 -pl 77 - - some fixes for internal compiler errors +pl 77 + - some fixes for internal compiler errors derive from Pointer_list with default dtor gives error with -O2 - .ini -> .ly - - lyrics fix + - lyrics fix - Performer beautification: got rid of set_track(), midi_output() - pseudo RTTI for midi-items - - bf: Performer*::print() + - bf: Performer*::print() - links.pod - Voice_element -> Request_chord - - fixed flex problems: stdin input works again + - fixed flex problems: stdin input works again - Documentation/Rules.make, make-website via make - spacing: now add basicspace @@ -61,7 +60,7 @@ pl 76 - allowal of breaks handled cleanly - junked Subtle_reqs, junked Request_iterator. Request iteration now by Voice_element_iterator - - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver, + - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver, Span_score_bar - Swallow_performer - removed Staff_engravers, grouping into Line_group_engraver @@ -97,7 +96,7 @@ pl 74pre.jcn1 pl 72pre.jcn1 - naming fixes; some iter*() explicitations - - removed acceptor.hh + - removed acceptor.hh - *performer*: second draft of midi (audio/...) ******* @@ -116,12 +115,12 @@ pl 73pre - some refs doco. - move Input_engraver into Paper_def - junk Interpreter - - naming: Request_engraver -> Engraver, + - naming: Request_engraver -> Engraver, - Music_iterator::next() -> process_and_next() - junk Voice_engravers - Span_bar, Span_bar_engraver - Vertical_align_engraver - + ******* july 2 pl 72pre @@ -143,7 +142,7 @@ july 1 pl 71pre - nested \melodic and \lyric constructs - init id's, Input_register aliases. - - bf: notehead x-swap + - bf: notehead x-swap - bf: auto-keys. - bf: first clef - junked \init_end; construct @@ -178,7 +177,7 @@ pl 69pre - bf: scripts - reg termination - centered bars - - bf: init of Tie::dir_i_ + - bf: init of Tie::dir_i_ - bf: Staff_side depends on staff_sym_ - bf: Script::do_substitute_dependency() now implemented - more print info (also in output) @@ -218,12 +217,12 @@ pl 68pre * align key/Meters/bar across staffs * junked Staff, Staff_column, Staff_walker, Complex_walker, Request_column Pulk_voice, Pulk_voices, Walker_registers, - Voice_element, + Voice_element, Input_score, Input_staff, Input_music and a lot of parserjunk. * mudela: lots of structure changes : now much simpler * generation of pre/postbreak items now in Score_elem with deps. - + - bf: make_patch explanation - bf: make install TeX stuff - mudela: . mandatory for REALs @@ -269,7 +268,7 @@ pl 66 - bf: broken slur - bf: accidental dims - bf: measure bar width - + ****** may 26 @@ -288,14 +287,14 @@ pl 65 * delete unbroken spanners * added a break_processing round. * Super_elem - - junk Complex_staff, + - junk Complex_staff, - clean {lily}?proto.hh - Element_group - Score_elem now as virtual base class everywhere - naming: Staff_elem -> Score_elem - bf: make in toplevel dir - bf: broken tie y-pos - - bf: sharing 4th, 8th and 16th noteheads + - bf: sharing 4th, 8th and 16th noteheads - bf: overlapping chords. <\multivoice c d > pl 64.wl @@ -319,7 +318,7 @@ pl 64 - toplevel Makefile dep from make/Toplevel.make.in - make_website: add version footer - make_website: bf dist *.txt - - bf: fix loose bars : \meter 4/4; c1. + - bf: fix loose bars: \meter 4/4; c1. - Staff_elem -> Score_elem - bf - vbrace lookup @@ -358,10 +357,10 @@ pl 61.jcn2 - bf: zero denominator ********** -may 14 +may 14 pl 62 - - make clean bf: remove lex & yacc files too - - added kludge in case measure too long + - make clean bf: remove lex & yacc files too + - added kludge in case measure too long - added kludge in case of unconnected columns. - kludged columns get error marker - kludged lines get error marker @@ -375,7 +374,7 @@ pl 60.jcn1 - mi2mu handles non-quantified rests, try mi2mu -b wtk-i/fugue2.midi - + ********** pl 61 - scales.ly bugfix: dimensions default to ((0,0), (0,0)) @@ -401,11 +400,11 @@ pl 60.mb pl 57.jcn4 - mi2mu handles rests (quantified only) - fixed configure buglet - - "!date" Fri May 2 02:18:12 MET DST 1997 + - "!date" Fri May 2 02:18:12 MET DST 1997 pl 60 - Request_register::get_feature(), tie direction, Slur direction - - lilypond output is now directly texable. + - lilypond output is now directly texable. - make_website checks return status ******* @@ -422,15 +421,15 @@ pl 58.jcn1 - bf: toccata-fuga-E.ly pl 57.jcn4 - - mi2mu handles rests (quantified only) - - fixed configure buglet - - "!date" Fri May 2 02:18:12 MET DST 1997 - + - mi2mu handles rests (quantified only) + - fixed configure buglet + - "!date" Fri May 2 02:18:12 MET DST 1997 + pl 58 - lexer cleanup - national chars in lyrics - \stem 2; bf - - long comments: %{ %} + - long comments: %{ %} - *.ini mode bf - bf: partial may be everywhere - bf: meterchange not at start of measure @@ -440,7 +439,7 @@ pl 58 pl 57.jcn3 - dank je schat, voor wtk-i - mi2mu tries to handle rests - - "!date" Thu May 1 02:34:04 MET DST 1997 + - "!date" Thu May 1 02:34:04 MET DST 1997 - maak je het niet te laat schat? XXXX HWN @@ -456,9 +455,9 @@ pl 57 - bugfix init of Text_item::pos_i_ pl 56.jcn1 - - toccata-fuga-in-E.ly, excerpts with real-life collisions - - \{l,r}{b,f}{toe,heel} --- using cmsy fonts... - - pedal.ly + - toccata-fuga-in-E.ly, excerpts with real-life collisions + - \{l,r}{b,f}{toe,heel} --- using cmsy fonts... + - pedal.ly pl 55.jcn1 - mi2mu man page @@ -476,7 +475,7 @@ pl 56.mb: ****** pl 56 - Massive Rest/Stem/Collision/Note_column rewrite: resolve -notehead/rest ambiguities and bugs. eg, [c8 r8 c8] +notehead/rest ambiguities and bugs. eg, [c8 r8 c8] pl 54.jcn1 - standchen.ly: repeats; lyricii to end @@ -493,10 +492,10 @@ pl 55 ****** pl 54 - bugfix Colhpos.cc::OK assert fail. - - Inclusion of MusixTeX MF files, + - Inclusion of MusixTeX MF files, - detection of MF dir pl 53.hwn - - stacked lyrics + - stacked lyrics - configure/make buglets. ****** pl 53 @@ -505,7 +504,7 @@ pl 53 - added AUTHORS.pod - convert-mudela auto from guess - include -> \include - - change order of opening parse/init file + - change order of opening parse/init file - Pulk_voice, Pulk_voices - Request_column - revised request-from-voice extraction. Now much faster @@ -515,7 +514,7 @@ april 17 pl 52 - Buildroot RPM - tex-prefix and tex-dir sep'd (here you are jan) - - convert-mudela framework + - convert-mudela framework - Collision_register, Collision - \hshift 1; input - Features changed @@ -545,14 +544,14 @@ pl 49.jcn1 Bugfix - configure[.in], make/Configure_variables.make.in c++ (=doze fix) - "configure; make" ok for doze, win32 target may be removed now - - win32/gcc 2.7.2 compile fixes -- why does this all compile - (without warnings, why can-t i even trigger warnings) under - linux/gcc-2.7.2.1? it's quite a tedious job fixing this + - win32/gcc 2.7.2 compile fixes -- why does this all compile + (without warnings, why can-t i even trigger warnings) under + linux/gcc-2.7.2.1? it's quite a tedious job fixing this shit _on doze_ all the time. * fixed #includes global-regs.cc, staff-info.cc, staff.cc * key.hh:Key() -> Octave_key() * added missing lily/include/input.hh: Input( Input const& ) - + pl 49 - lsm template - clef in cadenza mode. @@ -607,7 +606,7 @@ pl 44.jcn1 * keywords "\lyric" "\melodic" introduced, e.g.: melody = \melodic { c c | g g } * removed level of indirection: - - staff initialisable with music identifier list: + - staff initialisable with music identifier list: \staff{ global melody } - \score and staffs alike - gnu standard(?) help texts @@ -638,7 +637,7 @@ pl 44 ****** pl 43 - transposition. - - $variable&@name + - $variable&@name - warnings if incorrect mode - missing scsii measure - declaration used check. @@ -646,7 +645,7 @@ pl 43 pl 42.jcn4 - lily writes midi meter/key changes from requests - - mi2mu: + - mi2mu: + write mudela 0.1 + write bar change requests + more tunable quantisation @@ -656,7 +655,7 @@ Examples - new mi2mu of bach's wtk pre1/fugue1 pl 42.3 (jcn version) - - oeps, branched source tree + - oeps, branched source tree pl 42.hwn3 - const naming change (T const <-> const T) @@ -669,10 +668,10 @@ pl 42.3 * keyword "music" dropped for horizontal music * keywords "\lyric" " introduced, e.g.: melody = \melodic { c c | g g } - * staff initialisable with music identifier: - \staff{ melody } + * staff initialisable with music identifier: + \staff{ melody } * chords: < c e > - * octavate ''c`` + * octavate ''c`` * \meter{ 2/4 } * \octave{ ''`` } - configure sets CXX (to c++, commonly) @@ -704,10 +703,10 @@ pl 41.hwn2 - detect TeX directory pl 41.hwn1 - - cygnus configure, - - updated versioning - - install.pod - + - cygnus configure, + - updated versioning + - install.pod + pl 41.jn1 Bugfix - doze compile @@ -767,12 +766,12 @@ pl 39-3 - all of the above - m2m renamed to mi2mu - better line breaking in mi2mu - - (somewhat broken) progress indicator for mi2mu + - (somewhat broken) progress indicator for mi2mu - mi2mu output === lily input (in names and durations, always assuming voices > 1 though) Bugfix - - midi: note on/off only once per pitch per track + - midi: note on/off only once per pitch per track (sending all note-on events introduces cool mi2mu feature) - make clean removes deps too - mi2mu notename/accidental/octave, and key fixed @@ -812,7 +811,7 @@ pl 39 * small lily lib * lilypond-x.x.x/.version for toplevel lily version * lilypond-x.x.x//.version for version (eg: flower) - * versioning using additional optional MY_PATCH_LEVEL + * versioning using additional optional MY_PATCH_LEVEL for easy make_patch - bin/cptogen @@ -824,7 +823,7 @@ Bugfix - small fixes, make, dist, configure pl 38-5 - - all of the below, e.g. new filenames and new makefile + - all of the below, e.g. new filenames and new makefile structure patches merged ****** pl 38 @@ -916,7 +915,7 @@ pl pre33-2 Bugfix - midi pitch - + Features - Jan's patches, see below Bugfix @@ -928,7 +927,7 @@ pl pre33-1 (JCN) - midi output using pitches iso notename Examples - added midi output (some midi output files broken?) - - all melodic fixed (except for error.ly:-) + - all melodic fixed (except for error.ly:-) - midi.ly Bugfix - midiwalker line break @@ -946,11 +945,11 @@ Features - simple plet notation (JCN) - lyrics centred, but no fully suppored? (JCN) Internal - - Midi_stream + - Midi_stream - Mididef - Midi_item, Midi_pitch, Midi_duration - Midi_chunk, Midi_header, Midi_track - - preparations for midi output + - preparations for midi output - no exit upon context error (JCN) - converted some "warnings" to errors; no output (JCN) Bugfix: @@ -1016,7 +1015,7 @@ Bugfix - script junking (2x) - empty files - beam::center (plet position!) - + pl 29 - multiplatform Makefile (JN) - context errors: bugfixes (JN) @@ -1033,7 +1032,7 @@ Bugfix - cleaned dependencies for broken spanners - stupid typo in Staff_elem::post_processing() - init of hpos in PCol::PCol - - Word_wrap::solve() bug + - Word_wrap::solve() bug ******* pl 27 - preliminary WIN32 support (JN) @@ -1049,7 +1048,7 @@ Examples pl pre27 -Features +Features - option --init - last_duration_mode: default_duration is last duration entered (\duration{\last}) @@ -1073,7 +1072,7 @@ Internal: - Voice_group_registers, Voice_registers, *_register - Complex_staff ******* - Jan 27 '97 +Jan 27 '97 pl 25 - other clefs added, keys typeset properly (MB) @@ -1094,7 +1093,7 @@ pl 23: Internal changes: - scrapped VPATH - Make dependencies per .o - - Split Input_* parsing steps to enable marking + - Split Input_* parsing steps to enable marking Bugfixes: - unconnected columns @@ -1122,8 +1121,8 @@ Internal changes: - dependencies for Staff_elem's ******* -Dec 23 -pl 20: +Dec 23 +pl 20: - updated doco to .pod - include files from .ly Internal changes: @@ -1164,7 +1163,7 @@ pl 14 - Input_{score/staff} ******* -Dec 2 +Dec 2 pl 13 - Horizontal/Vertical music - Input_commands diff --git a/Documentation/misc/CHANGES-0.1 b/Documentation/misc/CHANGES-0.1 index f5e3562839..e95c55b132 100644 --- a/Documentation/misc/CHANGES-0.1 +++ b/Documentation/misc/CHANGES-0.1 @@ -26,20 +26,20 @@ pl 85.jcn1 ********* pl 85 -july 30 +july 30 pl 84.hwn4 - revamped install directions. pl 84.eb1 - - key undo + - key undo pl 84.hwn3 - misc scsii fixes. - doco fixes pl 84.jcn3 - - bf: titledefs without poet - - scsii fixes + - bf: titledefs without poet + - scsii fixes pl 84.hwn2 - don't make key items if no accs present. @@ -49,21 +49,21 @@ pl 84.hwn2 - 16pt init for yodl-mudela - split span-score-bar.{cc,hh} - junked most experimental_features_global_b stuff - - revised AUTHORS.yo + - revised AUTHORS.yo - dot stuff. Added a Dot_column_engraver (thanks, Mats) pl 84.jcn2 - - ly2dvi fixes - - w32/install doco fixes - - mutopia fixes + - ly2dvi fixes + - w32/install doco fixes + - mutopia fixes pl 84.hwn1 - fixes for ly2dvi + titledefs (Peter Chubb) - merge Span_dynamic_reqs too pl 84.mb1 - - MF: Added breve and longa rests. - + - MF: Added breve and longa rests. + pl 84 jcn1 - top website - ps-to-gifs: TRANSPARENT_IS_BROKEN (ppc hack) @@ -81,20 +81,20 @@ pl 83.jcn5 pl 83.hwn5 - doco fixes - bf: initialise axis_ filed of script - - separate versioning for mi2mu and flowerlib dropped. + - separate versioning for mi2mu and flowerlib dropped. - split bin/ in buildscripts/ and scripts/ pl 83.jcn3 - egcs ICE stuff. pl 83.jbr2 - - lily/midi-stream.cc: added appropriate MODE options to open + - lily/midi-stream.cc: added appropriate MODE options to open midi output as a binary file. This should be pretty harmless. - lily/lexer.ll: added \r as white and black space to enable W32 native editors. This also should be harmless. pl 83.jbr1 - - flower/lgetopt.cc: report method fix. (String + char needs to be + - flower/lgetopt.cc: report method fix. (String + char needs to be fixed) @@ -108,7 +108,7 @@ pl 83.hwn3 - bf: scripts over chords. (thanks, PC) - revamped aligning stuff: Align_element is baseclass for Horizontal_align_item and Vertical_align_spanner - - bf: Clef_item with _8 does new/del correctly. + - bf: Clef_item with _8 does new/del correctly. - more file renaming -elem -> -element pl 83.hwn2 @@ -153,18 +153,18 @@ pl 82.jcn4 - bf: font-body.ly pl 82.jcn3 - - bf's: diff/stepmake - + - bf's: diff/stepmake + pl 82.jcn2 - - bf: slur blow - - tie/slur ydirection - - makeflags / diff fixes - + - bf: slur blow + - tie/slur ydirection + - makeflags / diff fixes + pl 82.jcn1 - rejects: verbatim copy of Coriolan from 81.jcn2 pl 81.jbr2 - - Documentation/README-W32.yo: Additions to section 2 + - Documentation/README-W32.yo: Additions to section 2 ******* @@ -192,7 +192,7 @@ pl 81.hwn2 * derive Axis_group_element from Graphical_axis_group, * derive Graphical_axis_group from Graphical_element - junked input/minimal.ly - + pl 81.hwn1 - cleaned up parser.yy (removed \textstyle from parser, other stuff) @@ -239,8 +239,8 @@ pl 80 pl 79.hwn1 - bf lily/VERSION depends on toplevel VERSION - bf postbreak_only scripts - - Staff_side now is horizontal too - - rm'd \octave in scales.ly + - Staff_side now is horizontal too + - rm'd \octave in scales.ly pl 79.jcn2 - w32 support doco (JBR) @@ -294,7 +294,7 @@ pl 77.hwn1 - articles from CMJ added to computer-notation.bib - doco fixes - syntax of \skip and \partial changed; take only single durations - + pl 77.jcn2 @@ -331,14 +331,14 @@ pl 76.jcn1 pl 75.mb1 - Introduced real key names, \key e; gives E major! - - Previous use of the \key command now called \accidentals, + - Previous use of the \key command now called \accidentals, \accidentals fis cis gis dis; gives E major. - - Support for special keys with different accidentals on + - Support for special keys with different accidentals on different octaves, \specialkey \accidentals Fis Bes gis aiss'; ********** pl 76 - - website examples: + - website examples: * Thread -> Voice * 18 -> 19 * type /consists Engraver vs Line_engraver stuff @@ -349,7 +349,7 @@ pl 76 pl 75.jcn3 - minieme fixes (HWN) - - bf's: node() names have changed: Mudela Book/ Convert Mudela + - bf's: node() names have changed: Mudela Book/ Convert Mudela - bf: lilyponddefs.tex: removed \fi, added braces pl 75.hwn2 @@ -361,14 +361,14 @@ pl 75.hwn2 - bf free mem read Item::Item (Item const &) - bf memleak Midi_walker::do_{stop,start}_note () - bf memleak Spanner::do_brew_molecule () - - bf plet-engraver memleak - - checked input/bugs dir. + - bf plet-engraver memleak + - checked input/bugs dir. pl 75.hwn1 - junked octave (mudela 0.1.19) - - more .bib stuff - - doco fixes. - + - more .bib stuff + - doco fixes. + pl 75.jcn2 - binary releases: * make deb @@ -470,14 +470,14 @@ pl 73.hwn1 - got rid of weird <> semantics * Ties_engraver, Note_heads_engraver * depracated \multi - * depracated Thread context + * depracated Thread context - - wtk1-fugue{1,2} now in relative mode. - - don't create Rest_collision, Collision if no more than one + - wtk1-fugue{1,2} now in relative mode. + - don't create Rest_collision, Collision if no more than one collider (interpreting should be faster, less mem usage) - depracate Line_group_engraver, must use Line_group_engraver_group - + pl 73.jcn1 - tiny topweb.yo fixes (added 'Documentation/out-www/' to some urls) @@ -495,7 +495,7 @@ pl 73 pl 72.hwn1 - count "constraint off" as degeneracy - zet-lily stuff. - - bf: add Meter_engraver + - bf: add Meter_engraver - bfs: tutorial pl 72.jcn3 @@ -514,7 +514,7 @@ pl 72.jcn1 pl 72 pl 71.jcn4 - - try at texinfo: + - try at texinfo: * lilypond.texinfo * stepmake pl 13: texi2man * lilypond.1 now generated from texinfo @@ -525,7 +525,7 @@ pl 71.hwn2 shabbyness of the QLP code - ChoireStaff context - more tutorial doco - - mudela-book: name output files to per section and chapter. + - mudela-book: name output files to per section and chapter. pl 71.jcn3 - bf: convert-mudela: added StaffGroup @@ -544,12 +544,12 @@ pl 71.hwn1 pl 71.jcn2 - msgfmt check - - rpm: crude fix for input dir (urg: should get doc on rpm spec; + - rpm: crude fix for input dir (urg: should get doc on rpm spec; why is that so hard to get hold of in plain text?) - found (bit undocumented) sticky abbrev mode in stem-grav: c8:16 c: c: * bf: enable disabling - * disabled sticky abbrev req + * disabled sticky abbrev req - urg: transposing for midi (should fix audio-items) - sticky abbrev req: a8:16 a a a8: - bit more coriolan @@ -583,7 +583,7 @@ pl 70.jcn5 - bf: coriolan ... almost there - bf's: lilyponddefs: (fixes make website) * moved errordefs (mmm, perhaps \input's should have been moved...) - * moved def of interscoreline + * moved def of interscoreline * moved def of setdynamic - stepmake 0.1.6 - include fixes @@ -595,7 +595,7 @@ pl 70.jcn4 pl 70.jcn3 - make; make dist work (without packaging) stepmake-* - - mv'd outputter* tex-outputter* + - mv'd outputter* tex-outputter* its not so handy to have files with the same prefix as our out dir :-) - verbatim included stepmake-0.1.4 - DOTTEXT->.txt @@ -606,7 +606,7 @@ pl 70.jcn2 - tenuto shorter, thicker and follow into staff - computer{.data,-forms.el} - mark - - by default don't make libintl + - by default don't make libintl - make install for libintl pl 70.jcn1 @@ -652,7 +652,7 @@ pl 68.jcn3 - more coriolan, hara-kiri - add arcs to bracket height to avoid colliding of brackets - HAVE_GETTEXT - - computer.data: modest start of computer-related vocabulary + - computer.data: modest start of computer-related vocabulary - configure (localdir/datadir) fixes pl 68.nenn1 @@ -679,7 +679,7 @@ pl 68.jcn1 pl 68 - AFM file stuff: afm.cc, afm-reader.cc, mf-to-table.py - removed c0 position from get_staff_info () - + pl 67.jcn2 - grace example - bf: sticky plets @@ -689,14 +689,14 @@ pl 67.jcn2 * now used Scalar for all explicit implicit conversions * moved implicit-conversion String constructors to to_str (...) - _f with Strings - - bf: BLUB: re-added empty line + - bf: BLUB: re-added empty line - bf's: reincluded: tar-docxx.sh, topweb.pod.in (me too!) - po: unification/breaking-up of (some) messages - crude get-lily/build-lily scripts - make targets "po-update" "show-po-update LANGUAGE=xxx" - handier internationalisation funcs _(), _f () iso macro - String_convert::form_str (fmt, ...) - + ******* pl 67 (may 27) @@ -758,7 +758,7 @@ pl 65.jcn3 * natural stemlength * forced stemlength shortening - bf: Bar: don't make molecule if invisible; fixes hara-kiri - - robustification of MIDI: never return "", always return sane + - robustification of MIDI: never return "", always return sane string and print warning - bf: typo Key_change_req::sharps(); fixes MIDI - scsii: new relative octave fixes, gigue @@ -793,7 +793,7 @@ pl 64.jcn2 - hara-kiri-* - bf: ctags - preludes-3.lym4 - + ********* pl 64 (may 13) @@ -827,7 +827,7 @@ pl 63 (may 11) - bf: plet-spanner pl 62.jcn11 - - bf: beam::set-stemlen:iterations + - bf: beam::set-stemlen:iterations - knee-bug.ly - use knee in menuetto-ii - bit on slope damping @@ -846,8 +846,8 @@ pl 62.hwn1 - .bib updates - key robustifiction for extreme octaves - ly2dvi 0.11 - - energy "normalisation" removed. - + - energy "normalisation" removed. + pl 62.jcn8 - beam: knee input/test/knee.ly - vimrc init for lily @@ -856,7 +856,7 @@ pl 62.jcn8 - looked at lyric lengthen "mir________." (eerste weigering) - beam: knee [c \stemdown c' \stemup 'c] - expressions parsed at identifier_init - - bf: slur/stem/whole x-adjust: + - bf: slur/stem/whole x-adjust: * use note-col width iso mean note-witdth * note-column:width () - now string variables in paper too -> mudelapapersize @@ -880,7 +880,7 @@ pl 62.jcn8 - bf: relative-octave warning - relative-octave: guess if ambiguous - ambiguity warning for relative mode - - scsii: prelude + - scsii: prelude - bf: slur gap - bf's: scsii: menuetto - .txt -> $(DOTTEXT) @@ -908,7 +908,7 @@ pl 62 pl 61.jcn8 - - mudela relative octave feature: + - mudela relative octave feature: * Documentation/relative-octaves.pod * \octave relative; * lilypond -f for automatically finding new relative quote positions @@ -948,9 +948,9 @@ pl 61.jcn8 - Mudela_version - String_convert::split - bf's: los-toros-oboe - - braindead Break_req with penalty; junked Disallow_break_req and - Break_force_req - + - braindead Break_req with penalty; junked Disallow_break_req and + Break_force_req + pl 61.ag1 - implemented octave-shifted clefs. @@ -968,7 +968,7 @@ pl 61 - ly2dvi 0.10 (JAF) - changed \begin[options]{mudela} to \begin{mudela}[options] - more WWW hacks. - + pl 60.jcn2 - minor adjust for asymmetricity of beam symbol - added TEST beam quantisation; see input/test/beam-pos.ly @@ -1002,7 +1002,7 @@ pl 60 - mats patches: use Latex font stuff. - fixes to the .59 patch release (jcn) - make website|examples target - + pl 59.jcn3 - bf: preludes-5 - no inline compiler warnings by default @@ -1019,7 +1019,7 @@ pl 59.jcn2 - bwv'd preludes - bf: make-patch -d - doc'd rerunning of autoconf - - rest of real standje (rename and move simplified standchen to + - rest of real standje (rename and move simplified standchen to input/test?) - bf: clipping - bit better bar number placement @@ -1035,7 +1035,7 @@ pl 58.jcn7 *************** pl 59 - - ly2dvi 0.9.hwn1, -K switch, + - ly2dvi 0.9.hwn1, -K switch, - doc: moved manpages in separate directory. - do WWW stuff via make - mutopia-index.py @@ -1048,7 +1048,7 @@ pl 59 - rm'd taupin/egler from INSTALL - doc: engraving.bib, colorado.bib - input hierarchy. - + pl 58.jcn6 - multi-measure rests: moved acknowledge from timing-translator @@ -1118,7 +1118,7 @@ pl 57 - solaris/irix patches (AO) - pl 56.jcn5 +pl 56.jcn5 - bezier and slur: cleaning and fixes - bf: removed silly experimental beam feature @@ -1136,19 +1136,19 @@ pl 56.jcn3 - dropped los-toros latex file pl 56.jcn2 - - even nicer excentric slurs; + - even nicer excentric slurs; - input/slur-bug.ly - los-toros with barnumbers ;-) - nice version of height-ajust bezier slurs (see sleur.ly --test) - - bf's beam: - * slope in[c8 c16 c16]; + - bf's beam: + * slope in[c8 c16 c16]; * allow no INTER position for normal quantising pl 56.jcn1 - bezier curves with raaklijnen pl 56.ag1 - - `Makefile.am.wild's now should work correctly with VPATH (AG) + - `Makefile.am.wild's now should work correctly with VPATH (AG) ************ @@ -1198,7 +1198,7 @@ pl 53.jcn1 *********** pl 53 - - bf: c4 \< c4 \< + - bf: c4 \< c4 \< - bfs of spacing stuff @@ -1268,7 +1268,7 @@ pl 49.jcn2 - mf: trill-symbols: feta-slag.mf - shared libs (ugh: hardcoded switch in configure set to static) - some fixes: denneboom.ly, standje.ly/standchen.ly - + ******** march 19 @@ -1281,10 +1281,10 @@ pl 49 - add a nowildcard: stmt to wild-perl pl 48.jcn5 - - ugh: double parser/lexer: - be sure to rm lily/parser.cc lily/lexer.cc or bin/clien + - ugh: double parser/lexer: + be sure to rm lily/parser.cc lily/lexer.cc or bin/clien before re-running autowild! - - V.RSION + - V.RSION - bin/clien bin/meek - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION lib/config.hh bin/convent-mudela @@ -1298,7 +1298,7 @@ pl 48 - some fixes to buildscripts for sgi irix - misc. patches (WL) - move away from libg++: rolled own Rational class.. - - don't make gif files Documentation/ by default + - don't make gif files Documentation/ by default - ly2dvi manpage (JAF) - ly2dvi 0.7 (JAF) - more clefs. (MB) @@ -1345,12 +1345,12 @@ pl 44.jcn7 - set minimum space between columns - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-( - bf's midi ascii-debug output - - bf: property instrument + - bf: property instrument ******* feb 12 pl 45 - - bf: translator switching + - bf: translator switching - SunOS and IRIX patches (AO) - preludes bugfixes; preludes.tex ugh (JCN) - shared lib numbering (AF) @@ -1365,7 +1365,7 @@ pl 44.jcn6 ****** feb 6 pl 44 - - ly2dvi 0.6.hwn1 + - ly2dvi 0.6.hwn1 - ly2dvi 0.6 (JAF) - use ly2dvi for website @@ -1377,7 +1377,7 @@ pl 44.jcn2 - bf: denneboom.ly - preludes-3.ly.m4, standje.ly, preludes-4.ly - make rule for macro ly-files - - pletvisibility (init/property.ly): + - pletvisibility (init/property.ly): * default no bracket with beams * invisible plet bracket feature - finger dir in text-def @@ -1398,7 +1398,7 @@ pl 42.jcn2 - bf: don't try to typeset unterminated plet - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats? - denneboom.ly (half-baked version) - - indent and shape, see ^ + - indent and shape, see ^ pl 42.jcn1 - bf: memmem revisited @@ -1427,7 +1427,7 @@ pl 41.jcn4 - Plet_swallow_engraver for lyrics - bit better plet number placement (NOT) - new plet syntax: combined beam and plet open - - more standje.ly + - more standje.ly - new plet syntax: start: \plet2/3 stop: \telp1/1 - Plet_req, Plet_engraver; removed plet stuff from beam @@ -1486,7 +1486,7 @@ pl 39 - ps-to-gifs.sh - bf: wtk1-fugue2 - python make-website - - higher brace resolution + - higher brace resolution - phased out musixtex stuff - bf: rhythm.ly - PS slurs @@ -1499,7 +1499,7 @@ pl 39 - stafflinethick in PS (crescendi) - continued (de)crescendi (in PS) - bf: spurious beam reqs - - handle unfeasible spacing cleanly. + - handle unfeasible spacing cleanly. - ML-address change - output naming: default to basename[-serialnumber].{midi,tex} - bf: clef width @@ -1508,7 +1508,7 @@ pl 39.jcn2 - make-examples.sh - leftright repeat sign + repeatbar dims - smaller minimum sized rod at end of bar - - bf: spacing.ly + - bf: spacing.ly - less space at begin of bar - experimental whitespace fixes at begin and end of bar - added to beams.ly @@ -1548,7 +1548,7 @@ pl 37 pl 36.jcn2 - feta: small numerals - + ******** dec 9 @@ -1574,7 +1574,7 @@ pl 34.jcn1 - mf: nicening of dyn, klef, rest - fingerfont - bf: 12/8 - + ******** dec 2 @@ -1605,7 +1605,7 @@ pl 32 - this fixes clef bug. - bf: order of breakables: meter comes after bar. - bf: do error iso coredump on unknown symbol-table - - bf: release.py, copy patch too. + - bf: release.py, copy patch too. - bf: add makefile dep for disting MF logs. - bf: don't read font-en-tja*.ly, but feta*.ly @@ -1632,7 +1632,7 @@ pl 31 nov 11 pl 30 - - feta: G clef. + - feta: G clef. - scripts now do relative coords (fixes lyrics + barnumber bug) - bf: Lyrics lexer mode - bf: bass clef @@ -1641,7 +1641,7 @@ pl 30 nov 6 pl 29 - feta: bass clef, bf: dynamics, bf: 64th flag - + ******** oct 30 @@ -1673,7 +1673,7 @@ pl 27 pl 26.jcn1 - bf: numerals - sleur.ly - - embedded slur testing + - embedded slur testing - bf + patch: make-patch release.py / VERSION @@ -1683,12 +1683,12 @@ pl 26 - bf: \transpose - feta: numerals 0 - 9, rewrote flags. - + ******** oct 22 -pl 25 +pl 25 - variable stemlength - feta: 32nd, 64th flags - font.ly @@ -1774,15 +1774,15 @@ pl 18.jcn1 pl 18 - bf: Box[X_AXIS] = b - bin/mf-deps.py script - - moved beams out of font-en-tja into vette-beams. + - moved beams out of font-en-tja into vette-beams. - Made corresponding .cc changes. - + jcn patches - egcs compile (no link yet) - nicer 4rest - beam font (je kunt wel tegen een grapje, eva?) - - mf-to-table: + - mf-to-table: * "breapth" (x-depth) feature * handle generic stuff such as beams - polished noteheads @@ -1794,14 +1794,14 @@ jcn patches ****** sep 24 - + pl 17 - bf: ledgerline width - bf: toccata-fuga-E - took out some hardwiring of tex-beam - + pl 16.jcn1 - - mf-to-table.in: generate mozarella metric info tables + - mf-to-table.in: generate mozarella metric info tables - autometric.mf: write metric info to mf logfile - ital-r.mf, smaller ital-m.mf - variable streepjes length (top/bottomlines); fixed (for 20pt?) @@ -1823,8 +1823,8 @@ pl 16 - bf: rests in beams - bf: textnatural - bf: 20 pt flags - - bf: longarest - + - bf: longarest + pl 15.jcn1 - bf: typos whole and half notehead - de-uglyfied bolletjes.mf @@ -1833,7 +1833,7 @@ pl 15.jcn1 ****** sep 17 - + pl 15 - put top of NEWS file in the webpage - breadth first search for engravers. @@ -1863,15 +1863,15 @@ Stem_engraver * Axis_group_* accept Graphical_elements iso. Score_elems * A dimension cache, hopefully this makes lily a bit faster * TeX output moved out of Score_elem, separate interface Outputter - + - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6) - bf: don't do \multi if \type specified - Translator switching: Change_translator, Change_iterator - + pl 12.jcn4 - fixed dynamic f, magstep bug - - gaps on abbrev-beams + - gaps on abbrev-beams - bf: stem-info - bf: last abbrev - bf: stem: do_width @@ -1883,7 +1883,7 @@ sep 11 pl 13 - big Rest/notehead rewrite: * separated Rest, Note_head and Dots - * Dot_column: dots are now chord-wise aligned + * Dot_column: dots are now chord-wise aligned * Rhythmic_head is base for Rest, Note_head * Merged Note_column and Rest_column * Rest_engraver @@ -1938,7 +1938,7 @@ pl 12 sep 1 pl 11 - - forms for Musical vocabulary + - forms for Musical vocabulary - ignore \r for windows - Now paper{score,def} & midi{def,score} derived of class Music_output[_def]. Score is almost empty. @@ -1982,7 +1982,7 @@ pl 0.1.8.jcn3 ******* aug 18 -pl 9 +pl 9 - declare rhythic_request - preliminary support for real \mudelaheaders - context-sensitive arithmetic spacing. Looks alot better @@ -2004,7 +2004,7 @@ spring-spacer. Fixes spacing problems. - GNU coding: parentheses (here you are, Franc,ois :-) - all macros now UPPERCASE - Identifier blondification: don't use void* - - Identifier doesn't store its name. Much cleaner now. + - Identifier doesn't store its name. Much cleaner now. - bf: Rest_collision_engraver now always announces - bf: announce Staff_sym only once pl 0.1.7.jcn1 @@ -2031,7 +2031,7 @@ pl 6 - bf: main.o (again) - german notenames (RM) - Score_elem::offset_ now relative to its X/Y groups. Slight -speed increase? +speed increase? ******** aug 12 @@ -2040,8 +2040,8 @@ pl 5 - Wordwrap revert - added LilyPond in WWW titles - oops. A quaver is a 8th note, not a 4th - - bf: main.o remaking in lily/Makefile - - unhair Voice_iterator + - bf: main.o remaking in lily/Makefile + - unhair Voice_iterator - bf: error if no music in score - bf: don't create translators if Chord element is empty - bf: ctor of Tempo_req @@ -2062,14 +2062,14 @@ aug 11 pl 4 - correction of GNU Music Manifesto - - moved lowlevel stuff of Source_file to Mapped_file_storage. + - moved lowlevel stuff of Source_file to Mapped_file_storage. Interface via File_storage. (Now using Simple_file_storage) - bf: c4-"A"-"B" - bf: exit status - declarable keys - Engraver_group_engraver::find_simple_engraver() - bf: lily/Makefile - - bf: Midi_note_event ctor + - bf: Midi_note_event ctor - bf: tempo request - popular twinkle twinkle (JV) - mudela: parse tempo requests, \midi{ \tempo 4= 60;} @@ -2081,7 +2081,7 @@ pl 3 - PScore -> Paper_score - bf: Score_elem::extent() init of interval - bfs: {Horizontal,Vertical}_group related - - bf: don't change original Item while doing making + - bf: don't change original Item while doing making multiple copies - bf: configure DATADIR - bf: type of spanbar. @@ -2104,7 +2104,7 @@ pl 2 - bf: don't forget to make mi2mu - Bar_number_grav: measure numbers (experimental) - Bar_column_engraver, Bar_column: scripts on bars - - rewrite of {Horizontal,Vertical}_group. Yes, again. + - rewrite of {Horizontal,Vertical}_group. Yes, again. Now neatly integrated into class hierarchy - Axis, Axis_group - Debian rules (AF) @@ -2126,7 +2126,7 @@ pl 0.1.1 pl 0.1.1.hwn - recode of Break/Colhpos interfaces - - Gourlay_breaking: dynamic-programming optimal solution for + - Gourlay_breaking: dynamic-programming optimal solution for casting off. Word_wrap is still optional - some printing short cuts if no -d specced. - band_matrices for column calcs @@ -2134,8 +2134,5 @@ pl 0.1.1.hwn - retake: INFTY fixes ( now infinity_mom, infinity_f ) pl 78.jcn3 - - configure: ln and zip + - configure: ln and zip - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources - - - diff --git a/Documentation/misc/CHANGES-1.0 b/Documentation/misc/CHANGES-1.0 index 5cff9ea377..9376ee58e3 100644 --- a/Documentation/misc/CHANGES-1.0 +++ b/Documentation/misc/CHANGES-1.0 @@ -2,19 +2,19 @@ pl 17 - fixed RPM building. pl 16.hwn1 - - ridiculous slur dims fixed. - - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old - - use re iso. regex for python stuff. - - bf: mudela-book.py - - updated install directions. Made lilypond-login for csh - - bf: installdirs of MF stuff - - Dictionary implementation using hash tables (LilyPond is 3% faster) - - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster) + - ridiculous slur dims fixed. + - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old + - use re iso. regex for python stuff. + - bf: mudela-book.py + - updated install directions. Made lilypond-login for csh + - bf: installdirs of MF stuff + - Dictionary implementation using hash tables (LilyPond is 3% faster) + - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster) pl 16.uu1 - debian URLs, make/stepmake.make patch - further debian fixes. - + pl 14.tca1 - partitas - prall{mordent,prall} patch. @@ -28,8 +28,8 @@ pl 16 - configure --enable-guile pl 15.jcn1 - - autoconf on mf,mfont mp,mpost - + - autoconf on mf,mfont mp,mpost + pl 15.am - Lots of patches from *Adrian* *Mariano*! @@ -57,7 +57,7 @@ pl 14 pl 13.uu1 - syntax for \translator: (\name "Name") - bfs for footer - - bf: init/{book,center}-fragment.ly, YODL nofooter stuff. + - bf: init/{book,center}-fragment.ly, YODL nofooter stuff. - bf: redeclaration - bf: doc fixes - bfs: egcs 1.1 @@ -99,7 +99,7 @@ pl 13.jcn2 * set: GS_FONT=GS_FONTPATH=$HOME/usr/src/lilypond/mf/out pl 13.jcn1 - - crude postscript type 3 font: + - crude postscript type 3 font: make sure to have mfplain.mem metapost precompiled macros make -C mf ps gv out/feta20.sp @@ -112,11 +112,11 @@ pl 12.mb1 C Use C and stroked C for 4/4,2/2 old Use old style mensuration marks 1 Use single number - Cn/m Set symbol explicitly, n/m=2/2 or 4/4 + Cn/m Set symbol explicitly, n/m=2/2 or 4/4 oldn/m Set symbol explicitly, n/m=2/2,3/2,3/4,4/4,6/4 or 9/4. All other time signatures are typeset with the default two-digit layout. - + pl 12.jcn2 - Lookup abstract base class @@ -137,7 +137,7 @@ pl 12.hwn2 - add VPATH to mutopia - access_Identifier (bool): (non)copy arg now explicit. - bf: lilypond-latex.tex - + pl 12.hwn1 @@ -162,17 +162,17 @@ pl 12.am1 pl 12 pl 11.uu2 - - added Transposed_music for mixing transposition and relative + - added Transposed_music for mixing transposition and relative pl 11.jcn1 - bf: config.make striproff - texinfo pl 11.mb2 - - feta-timesig.mf: Added some flesh on C and C2, - added old-style mensuration marks. - + - feta-timesig.mf: Added some flesh on C and C2, + added old-style mensuration marks. + pl 11.mb1 - - Added feta-timesig.mf, font for C and alla breve. + - Added feta-timesig.mf, font for C and alla breve. pl 11.uu1 @@ -185,16 +185,16 @@ pl 11.uu1 pl 11 pl 10.uu2 - - plet-spanner fix. + - plet-spanner fix. - large doc patch (thanks Adrian) pl 10.jbr1 - - aclocal.m4, stepmake/aclocal.m4: Choose specific python - - stepmake/bin/release.py: Use the same python calling process - - make/lilypond-vars.make: PATH should not use PATHSEP. It is fine - to hard code it to `:' on both Windows NT and UNIX. - - stepmake/bin/package-zip32.sh: Perform configure with a specific - python, ie cygwin32 python on Windows NT + - aclocal.m4, stepmake/aclocal.m4: Choose specific python + - stepmake/bin/release.py: Use the same python calling process + - make/lilypond-vars.make: PATH should not use PATHSEP. It is fine + to hard code it to `:' on both Windows NT and UNIX. + - stepmake/bin/package-zip32.sh: Perform configure with a specific + python, ie cygwin32 python on Windows NT pl 10.uu1 - junked \octave @@ -204,13 +204,13 @@ pl 10.uu1 pl 10.jcn1 - - mf-to-xpms for Harmonia - + - mf-to-xpms for Harmonia + pl 9.jbr1 - - scripts/convert-mudela.py: We must close infile and outfile before - a rename occurs. NT Windows locks open files. - stepmake/bin/package-zip32.sh: renamed all python bins to: - .py in NT Windows distribution. + - scripts/convert-mudela.py: We must close infile and outfile before + a rename occurs. NT Windows locks open files. + stepmake/bin/package-zip32.sh: renamed all python bins to: + .py in NT Windows distribution. ********* @@ -222,7 +222,7 @@ pl 9.jcn1 * 'no gifs due to patent problems' - bumped stepmake version nr (again): please update stepmake/VERSION after making changes to stepmake... - + pl 9.hwn1 - do default midi,paper by toplevel \paper / \midi (mudela 1.0.4) - bf: error if no Score context @@ -231,7 +231,7 @@ pl 9.hwn1 ********* pl 9 - + pl 8.uu1 - junked \staff, \multi - bf Music_list::Music_list (Music_list const&) @@ -256,17 +256,17 @@ pl 8.jcn2 - bf's: package-diff pl 8.jcn1 - - removed tutorial from texinfo, yodl2texinfo is still rather broken - - bf: setlocale NUMERIC to 'C' - - removed ugly space from print-dimen + - removed tutorial from texinfo, yodl2texinfo is still rather broken + - bf: setlocale NUMERIC to 'C' + - removed ugly space from print-dimen ******* pl 8 - make website fixes. pl 7.jcn1 - - minor stepmake/yodl fixes - + - minor stepmake/yodl fixes + pl 7.uu1 - changed separator in vocabulary @@ -276,8 +276,8 @@ pl 7.hwn1 - changed header format. Use a + for concatenation. \header { key = "concat" + "string" } - - (mudela 1.0.2) + + (mudela 1.0.2) - allow computed properties in translator definition GrandStaff = \translator { @@ -304,12 +304,12 @@ because it is changed by Spanner::set_bounds () (thanks Thomas) - split LaTeX and TeX stuff pl 7.tca1 - - more Partita's + - more Partita's pl 7.jbr1 - - aclocal.m4,make/lilypond-vars.make: added PATHSEP as AC_SUBST to - help support Windows NT doco build. - Documentation/ntweb/index.yo: minor spelling changes + - aclocal.m4,make/lilypond-vars.make: added PATHSEP as AC_SUBST to + help support Windows NT doco build. + Documentation/ntweb/index.yo: minor spelling changes ************* @@ -318,24 +318,24 @@ pl 7 pl 6.jbr2 - - scripts/ly2dvi32.py: Fixed bug with lily input including multiple - files. Also, we now stream out lilypond log one line at a time - for better feedback. + - scripts/ly2dvi32.py: Fixed bug with lily input including multiple + files. Also, we now stream out lilypond log one line at a time + for better feedback. pl 6.jbr1 - - scripts/ly2dvi32.py: Added some doco, add postscript option, set - MFINPUTS along with TEXINPUTS, modified initialization sequence. - Made some Python style changes per Han-Wen suggestions. - - Documentation/man/ly2dvi32.yo: Added a manpage for ly2dvi32. - - stepmake/bin/package-zip32.sh: Added doco distribution. Removed - the installation directory after zip operation. - - Documentation/ntweb/index.yo: LILYPOND -> LILYPONDPREFIX and - comments about MiKTeX-1.11. + - scripts/ly2dvi32.py: Added some doco, add postscript option, set + MFINPUTS along with TEXINPUTS, modified initialization sequence. + Made some Python style changes per Han-Wen suggestions. + - Documentation/man/ly2dvi32.yo: Added a manpage for ly2dvi32. + - stepmake/bin/package-zip32.sh: Added doco distribution. Removed + the installation directory after zip operation. + - Documentation/ntweb/index.yo: LILYPOND -> LILYPONDPREFIX and + comments about MiKTeX-1.11. pl 6.tca1 - - First movement of Partita II (BWV 826) in - mutopia/J.S.Bach/Cembalo-Partitas. Lilypond output was so - beautiful that I'll have to write the rest of the partita. + - First movement of Partita II (BWV 826) in + mutopia/J.S.Bach/Cembalo-Partitas. Lilypond output was so + beautiful that I'll have to write the rest of the partita. pl 6.uu2 - mudela-book.py --dependencies @@ -354,7 +354,7 @@ pl 6 - largish rehack: * Super_element is now an `abstract' class, * Paper_score directly contains one Line_of_score. The - breaking/postprocessing/deletion is mixed with the output phase. + breaking/postprocessing/deletion is mixed with the output phase. * Hopefully this will save memory for large scores. (benchmarks, anyone?) * bf: Horizontal_vertical_group_item::do_unlink () should call @@ -368,30 +368,30 @@ pl 6 - mf: ex height added. pl 5.mb1 - - Mudela 1.0.1: Changed \accidentals -> \keysignature - - Identifiers can be used in textual scripts: + - Mudela 1.0.1: Changed \accidentals -> \keysignature + - Identifiers can be used in textual scripts: tempoString="Allegro molto assai"; [...] - c^\tempoString + c^\tempoString pl 5.jbr2 - - aclocal.m4,config.h.in,flower/file-path.cc: Added PATHSEP and - DIRSEP to configuration to support windows style path and pathlists. - - stepmake/bin/package-zip32.sh,stepmake/stepmake/package.make: - zip target now calls package-zip32.sh which creates winnt - binary distribution zip file. xzip target continues to use - package-zip.sh for Jan's cross-compiled version. - - lily/main.cc: Added a search for LILYPOND environment variable to - better facilitate binary distributions. - - Documentation/README-W32.yo: Updated information on running lilypond - on winnt. - + - aclocal.m4,config.h.in,flower/file-path.cc: Added PATHSEP and + DIRSEP to configuration to support windows style path and pathlists. + - stepmake/bin/package-zip32.sh,stepmake/stepmake/package.make: + zip target now calls package-zip32.sh which creates winnt + binary distribution zip file. xzip target continues to use + package-zip.sh for Jan's cross-compiled version. + - lily/main.cc: Added a search for LILYPOND environment variable to + better facilitate binary distributions. + - Documentation/README-W32.yo: Updated information on running lilypond + on winnt. + pl 5.jcn1 @@ -413,8 +413,8 @@ pl 4.jcn1 - texinfo docs, lots of yodl TODO - junked some makefiles - ntweb: use BLURB - - bf: pletvisibility - - adaptions for yodl-1.31.2's automatic texinfo conversion + - bf: pletvisibility + - adaptions for yodl-1.31.2's automatic texinfo conversion - reinclude of 1.jcn2: - renamed -alto -> viola - bf: avant-gardish six preludes @@ -431,13 +431,13 @@ pl 4.jbr1 pl 4 pl 3.mb2 - Changed text script alignment: center -> left - - TeX commands counts as one character when calculating + - TeX commands counts as one character when calculating the length of a Text_def pl 3.jbr2 - - Documentation/topdocs/index.yo: Added link to NT dist page - - Documentation/ntweb/: Added Makefile and index.yo to build the - NT dist page + - Documentation/topdocs/index.yo: Added link to NT dist page + - Documentation/ntweb/: Added Makefile and index.yo to build the + NT dist page pl 3.hwn1 - stepmake hacking @@ -448,15 +448,15 @@ pl 3.uu1 pl 3.jcn1 - - bf: website: empty toplevel readme's - - bf: xs4all (again?) - - can't administer ftp site now: put patch into website + - bf: website: empty toplevel readme's + - bf: xs4all (again?) + - can't administer ftp site now: put patch into website pl 3.jbr1 - stepmake/stepmake/Executable_targets: UNIX cross-compile doesn't work with $(DOTEXE) on source of install command. - - stepmake/Generic_targets: creating multiple dirs with mkdir + - stepmake/Generic_targets: creating multiple dirs with mkdir requires -p option - scripts/ly2dvi32.py: General and Winnt specific fixes @@ -465,11 +465,11 @@ pl 3.jbr1 pl 3 pl 2.uu1 - - solaris 2.6 compile/make website fixes. - - rm'd WWW.make - - stepmake .43 - - pcnov095.win.tue.nl -> ftp.cs.uu.nl - + - solaris 2.6 compile/make website fixes. + - rm'd WWW.make + - stepmake .43 + - pcnov095.win.tue.nl -> ftp.cs.uu.nl + pl 2.hwn1 - mi2mu naming of track output - bf: do key restore sign only once @@ -495,21 +495,22 @@ pl 1.jcn1 - fake msgfmt - make uninstall fixes -pl 1.jbr2 - aclocal.m4,stepmake/aclocal.m4,stepmake/stepmake/Variables.make: - Support install target for unix, unix cross compile, and - Windows NT +pl 1.jbr2 + - aclocal.m4,stepmake/aclocal.m4,stepmake/stepmake/Variables.make: + Support install target for unix, unix cross compile, and + Windows NT -pl 1.jbr1 - stepmake/stepmake/Executable.make: DOTEXE was missplaced - - scripts/convert-mudela.py: program_id should write to stderr +pl 1.jbr1 + - stepmake/stepmake/Executable.make: DOTEXE was missplaced + - scripts/convert-mudela.py: program_id should write to stderr ************** pl 1 - mi2mu fix: \key "D" - \hoffset - - started new NEWS file + - started new NEWS file - lots of stepmake hacking - aclocal.m4 copied from stepmake - ly2dvi 0.12 - build the doco from the source tree. - include website in RPM - diff --git a/Documentation/misc/CHANGES-1.1 b/Documentation/misc/CHANGES-1.1 index b98baa12cf..193f56aefc 100644 --- a/Documentation/misc/CHANGES-1.1 +++ b/Documentation/misc/CHANGES-1.1 @@ -3,7 +3,7 @@ - initialize Script::dir_ pl 69.jcn1 - - doco typos + - doco typos - tex-rules typo - added missing feta-braces*.mf pl 68.lu1 @@ -72,7 +72,7 @@ pl 64.jcn2 - refman updates - Abbreviation.beam -> Chord_tremolo - bf: chord tremolo vs beam over rests - - bf: note width for noteless stem + - bf: note width for noteless stem @@ -113,7 +113,7 @@ pl 63.hwn1 - slurs on grace notes. - paper var stem_default_neutral_direction - bf: dot-columns. - + pl 63.jcn2 - bf: midi2ly/duration-iter/convert: handle durations >= 1 - set reasonable default for text/dynamic paddings @@ -131,7 +131,7 @@ pl 62.jcn4 - fixes coriolan pl 62.hwn1 - - ps-to-pfa.py: use std modules re, find + - ps-to-pfa.py: use std modules re, find - minor input fixes - use mfplain.mp - Metapost does unfill with setgray. This confuses @@ -143,11 +143,11 @@ pl 62.jcn3 pl 62.jcn2 - bf: don't start auto-beam on stem that contains only a rest - - bf: rm .ms yodl output - - bumped stepmake version - + - bf: rm .ms yodl output + - bumped stepmake version + pl 62.uu1 - - don't space rhythmic requests coming from Lyrics. + - don't space rhythmic requests coming from Lyrics. pl 62.jcn1 - bf: auto-beamer: consider starting beam based on new rhythmic head @@ -157,15 +157,15 @@ pl 62.jcn1 - bf: in-band signaling slur snap pl 61.jbr1 - - Documentation/ntweb/GNUmakefile: Made EXTRA_DIST_FILE style fix and - added dist-plain target as dependency to the default target. - - scripts/ly2dvi.py: getpid does not behave very well across platforms - so I am creating temp file names with the Python tempfile module. - The generate lilypond dependency file option was broken and - is now operational. I also changed the dependency switch - from -d or -M to match lilypond. - - stepmake/bin/package-zip32.sh: Added build of ntweb html - documentation + - Documentation/ntweb/GNUmakefile: Made EXTRA_DIST_FILE style fix and + added dist-plain target as dependency to the default target. + - scripts/ly2dvi.py: getpid does not behave very well across platforms + so I am creating temp file names with the Python tempfile module. + The generate lilypond dependency file option was broken and + is now operational. I also changed the dependency switch + from -d or -M to match lilypond. + - stepmake/bin/package-zip32.sh: Added build of ntweb html + documentation *********** pl 61.hwn2 @@ -183,7 +183,7 @@ so explicit \context Staff is often not needed for - regtest lyric-combine.ly - Melisma_playing_req, Melisma_engraver, Busy_playing_req: stuff for syncing music & lyrics. - - simplify Extender_engraver, Hyphen_engraver. Assume lyrics come in from only one voice. + - simplify Extender_engraver, Hyphen_engraver. Assume lyrics come in from only one voice. - docced ambiguities in grammar. - mudela-book -I behavior, verbosity. - state search path when file not found @@ -221,8 +221,8 @@ pl 60.jcn2 - don't typeset unfinished (auto) beams pl 60.jbr1 - - Documentation/ntweb/angels.ly, Documentation/ntweb/guile.patch: added - - Documentation/ntweb/GNUmakefile: add above to EXTRA_DIST_FILES + - Documentation/ntweb/angels.ly, Documentation/ntweb/guile.patch: added + - Documentation/ntweb/GNUmakefile: add above to EXTRA_DIST_FILES pl 59.mb2 - Tempo changes in MIDI output! @@ -247,14 +247,14 @@ pl 59.uu1 - bf: midi2ly outputs \context iso \type pl 59.jbr1 - - lily/colhpos.cc: fixed typo - - Documentation/ntweb: Updated News and added all the files - associated with Windows Distribution web page. - - stepmake/bin/package-zip32.sh: added the ntweb page to formated - distribution. + - lily/colhpos.cc: fixed typo + - Documentation/ntweb: Updated News and added all the files + associated with Windows Distribution web page. + - stepmake/bin/package-zip32.sh: added the ntweb page to formated + distribution. pl 59.jcn1 - - bfs: slur damping + - bfs: slur damping - papervar slur_interstaff_snap_to_stem pl 59.hwn1 @@ -304,11 +304,11 @@ pl 57.jcn2 - bf: ? priority and snap to stem pl 56.jcn4 - - interstaff slur fixes and damping + - interstaff slur fixes and damping pl 56.mk1 - - bf: collision.cc: collisions between chords with different - stem directions and close heads. + - bf: collision.cc: collisions between chords with different + stem directions and close heads. ****************s************** @@ -321,13 +321,13 @@ pl 56.jcn3 pl 56.hwn1 - some spacing tweaks. - - bf: two repeats + alts after each other. + - bf: two repeats + alts after each other. pl 56.jcn2 - tie: bfs + even simpler pl 56.jcn1 - bf: re-added \textflat,sharp to fix chords... - - bf: chord-modifier and mandatory dot: c-maj5 + - bf: chord-modifier and mandatory dot: c-maj5 - tutorial chord fixes - tie fixes and boldifying: * removed sloping (dy!=0) code @@ -362,7 +362,7 @@ pl 54.jcn2 pl 55.mb2 - - Font update: added more mensural style time signatures, + - Font update: added more mensural style time signatures, old2/4, old6/8alt, old4/8 thanks to Christian Mondrup. - bf: correct indentation of first line (removed \leavevmode) plain TeX still gives wrong indentation @@ -375,7 +375,7 @@ pl 55.mb1 - bf: font magnification also in PS output - bf: set the GS_* variables correctly in buildscripts/lilypond-*.sh - bf, lily.scm: errors in (de)crescendo - - bf, lilyponddefs: removed \noindent + - bf, lilyponddefs: removed \noindent pl 55.hwn1 @@ -387,7 +387,7 @@ pl 55.hwn1 **************** pl 53.jbr2 - - Documentation/ntweb/index.html: Updated nt distribution web page + - Documentation/ntweb/index.html: Updated nt distribution web page pl 54.uu1 - bf: Stem lens for beams. @@ -400,7 +400,7 @@ pl 54.jcn1 - mutopia/J.S.Bach/Duette 1&2 pl 54.mb1 - - Renamed \wheel to the \coda + - Renamed \wheel to the \coda - bf: correct gap in tuplet braces pl 53.hwn2 @@ -408,7 +408,7 @@ pl 53.hwn2 - PS cleanup - TeX cleanup. - bf: also make (empty) bar at end of voltabracket. - - bf: don't put slur over rest. + - bf: don't put slur over rest. pl 54.uu1 @@ -418,10 +418,10 @@ pl 54.uu1 pl 54 (july, 8) pl 53.jbr1 - scripts/ly2dvi.py: A fix for the multitude of file systems supported - by windows. As long as the paths that the cygwin apps use are - UNC style and the paths that the native windows apps use are DOS - style everybody is happy. I add quick and dirty unc2dos function - to facilitate this approach. + by windows. As long as the paths that the cygwin apps use are + UNC style and the paths that the native windows apps use are DOS + style everybody is happy. I add quick and dirty unc2dos function + to facilitate this approach. pl 53.hwn1 - bf mudela-book. @@ -429,11 +429,11 @@ pl 53.hwn1 - junk ATOM_SMOB - control tuplet gap size from paper. - bf: output header as PS strings for PS out. - - bf: cached-fontname + - bf: cached-fontname - control volta height from paper block. pl 53.jcn5 - - \rhythm-ified and text bfs: standchen.ly + - \rhythm-ified and text bfs: standchen.ly - walk rhythm through *_iterator::next_music_l () pl 53.jcn4 @@ -461,7 +461,7 @@ pl 53.jcn1 - grace performance - fixed tie-performance - bf: abe - + pl 53.gp1 - added Hyphen-engraver, Hyphen-spanner ************ @@ -484,11 +484,11 @@ pl 52.hwn2 - new-beaming.cc: new beaming code * now does [c8. c32 c32] correct by itself. * beam over barlines - * non-fitting stems handled gracefully (eg. [c8 c4 c8] ) + * non-fitting stems handled gracefully (eg. [c8 c4 c8] ) - junked rhythmic grouping, \grouping and all associated bits. - bf: do try_visibility_lambda for nonbreakable items as well (fixes \nobreak on barline) - - bf: Cons_list::truncate() + - bf: Cons_list::truncate() pl 52.hwn1 - repeat-engraver cleanup @@ -499,7 +499,7 @@ pl 52.mb2 Same syntax as multi-measure rests! - Added \segno and \wheel script symbols pl 52.mb3 - - Added barSize property. Junked barsize variable. + - Added barSize property. Junked barsize variable. ************ pl 51.uu2 @@ -519,7 +519,7 @@ pl 51.uu1 pl 50.jcn2 - filed egcs bug report for powerpc. - - removed unnecessary #ifdef powerpc + - removed unnecessary #ifdef powerpc - grace and other fixes for auto-beamer - grace and other fixes for (beam-)stem-lengths - input/test/bugs/hairy-grace.ly (urg) @@ -557,7 +557,7 @@ pl 50.hwn1 ************ pl 49.mb1 - bf: ly2dvi -N - - Added dynamicPadding property (applies only to dynamic marks, + - Added dynamicPadding property (applies only to dynamic marks, not (de)crescendi. pl 49.jcn4 @@ -628,7 +628,7 @@ pl 45.hwn3 - spacing before clefs. - Spacing_spanner is now on by default - junked most of Spring_spacer - - Tunable space after barline. + - Tunable space after barline. ********* pl 46.mb2 @@ -641,8 +641,8 @@ pl 46.uu1 - bf: {} in texts. pl 45.hwn2 - - more doc updates. - + - more doc updates. + pl 46.mb1 - Added property articulationScriptPadding @@ -654,7 +654,7 @@ pl 45.hwn1 - Audio broadcast & acknowledge. - more advanced spacing for prefatory matter - tuplet appearance tweaking - - bf: ChoirStaff + - bf: ChoirStaff pl 45.uu1 - glossary fixes (thanks Dirk). @@ -671,13 +671,13 @@ pl 45 (may 28) pl 43.hwn2 - - split G_staff_side_item into G_staff_side_element and G_staff_side_item. - - junked old Staff_side - - Crescendo also uses G_staff_side_element - - crescendo_shorten paper var. - - create horizontal groups for break_aligment inside Break_align_item. - - more abc-2-ly fudging - + - split G_staff_side_item into G_staff_side_element and G_staff_side_item. + - junked old Staff_side + - Crescendo also uses G_staff_side_element + - crescendo_shorten paper var. + - create horizontal groups for break_aligment inside Break_align_item. + - more abc-2-ly fudging + pl 44.mb1 - bf, property.ly: change fontsize->fontSize - N.W.Gade: removed old tie behaviour @@ -686,25 +686,25 @@ pl 44.mb1 ********* pl 44 pl 43.jcn2 - - bf: repeat :| placement + core dump - input/test/repeat.ly - input/test/coda-kludge.ly - - bf: mf without ljfour - * feta-accordion fix/hack for feta11 at 300dpi + - bf: repeat :| placement + core dump + input/test/repeat.ly + input/test/coda-kludge.ly + - bf: mf without ljfour + * feta-accordion fix/hack for feta11 at 300dpi pl 43.hwn1 - - half assed attempt at ABC convertor. - - Spacing_spanner: "decentral" spacing stuff. Use -t to try. - - bf: StaffGroup vertical alignment - - \property {slur,tie,}ydirection -> {slurV,tieV,v}erticalDirection (1.0.20) - - Spanner now hangs on left endpoint. - - \property forgetAccidentals: do not remember accidentals. - Every note not in the key triggers typesetting of an accidental. - - \property noResetKey: do not reset key at start of measure: - accidental remain in effect until overriden - - bf: ties & accidentals (fix breaks oldTieBehavior) - - junked Tie::same_pitch_b_ - + - half assed attempt at ABC convertor. + - Spacing_spanner: "decentral" spacing stuff. Use -t to try. + - bf: StaffGroup vertical alignment + - \property {slur,tie,}ydirection -> {slurV,tieV,v}erticalDirection (1.0.20) + - Spanner now hangs on left endpoint. + - \property forgetAccidentals: do not remember accidentals. + Every note not in the key triggers typesetting of an accidental. + - \property noResetKey: do not reset key at start of measure: + accidental remain in effect until overriden + - bf: ties & accidentals (fix breaks oldTieBehavior) + - junked Tie::same_pitch_b_ + pl 43.jcn1 - configure, set-lily.sh, release stuff @@ -712,43 +712,43 @@ pl 42.tca2 - lilypond don't put \interstaffline after last line. This to get really nice vertical spacing for mudela-book. - mudela-book: vertical spacing - - lilyponddefs.tex: commented out \parindent=0pt to get correct + - lilyponddefs.tex: commented out \parindent=0pt to get correct paragraph indent for mudela-book ************ pl 43 pl 41.hwn3 - - reinstated \property inheritance - - \property SkipBars -> skipBars - - \property midi_instrument -> midiInstrument - - \property fontsize -> fontSize (mudela 1.0.18). - - bf: add a space after lyrics. - - junked flower DLL classes - - rewrote repeat music and iterators (mudela 1.0.17) - * Folded_repeat_iterator - * Unfolded_repeat_iterator - * New_repeated_music - * syntax change: \repeat FOLDSTRING NUMBER Music [ALTERNATIVE Music_se + - reinstated \property inheritance + - \property SkipBars -> skipBars + - \property midi_instrument -> midiInstrument + - \property fontsize -> fontSize (mudela 1.0.18). + - bf: add a space after lyrics. + - junked flower DLL classes + - rewrote repeat music and iterators (mudela 1.0.17) + * Folded_repeat_iterator + * Unfolded_repeat_iterator + * New_repeated_music + * syntax change: \repeat FOLDSTRING NUMBER Music [ALTERNATIVE Music_se quence] - - data struct simplification: junked Dynamic_req, + - data struct simplification: junked Dynamic_req, Absolute_dynamic_req, Span_dynamic_req, Slur_req, Beam_req. Use -Span_reqs and Text_script_reqs with type fields instead. +Span_reqs and Text_script_reqs with type fields instead. pl 42.tca1 - - updated mudela-book documentation - - misc mudela-book.py - - accordion: smaller dots + little script renaming + - updated mudela-book documentation + - misc mudela-book.py + - accordion: smaller dots + little script renaming pl 42.jcn1 - bf: hp-u(rg)x: user build; sm 73 - - bf: hp-u(rg)x: sm74 + - bf: hp-u(rg)x: sm74 pl 41.mb1 - convert-mudela: convert textstyle -> textStyle - refman.yo: properties moved to correct contexts. - - mudela-book.py: Added singleline, multiline options. + - mudela-book.py: Added singleline, multiline options. Fixed default line width bug. *************** @@ -756,16 +756,16 @@ pl 41.hwn2 (may 10, 1999) - bf: Score bar line thickness. - more paper writing - website tweaks. - - Graphical_element::dim_cache_ now alloced separately. + - Graphical_element::dim_cache_ now alloced separately. - junked Graphical_element::absgolute_offset - - Musique-de-Table + - Musique-de-Table - mmrest_x_minimum now works at begin-of-line. - junked Span_bar::extra_x_off - \property foo.bar = \stringid + \otherstringid - bf: stop on lexer errors as well. - only do vertical alignment at Score level. - tweaked ledger endings a bit. - + pl 41.hwn1 - small fixes. @@ -812,7 +812,7 @@ Hara_kiri should be working again. (fixes clef^8) - bf: translating molecule without elts but with dims. (bf: accidental spacing.) - + pl 40.mb1 - bf: ly2dvi set MFINPUTS so standard tree is found before lilypond - bf: lilypond-regtest.doc, ls-latex.py; now finds author/title @@ -845,13 +845,13 @@ pl 39 (april 12) pl 38.tca1 - added scm/accordion-script.scm and update ly/accordion-defs.ly - renamed some accordion symbols to make them more english and less - norwenglish. + norwenglish. - removed dot from \accBayanbase pl 37.script4 - bf: molecule - bf: tuplet spanner appearance. - - bf: less spacing after clef. Invisible bar has no dims. + - bf: less spacing after clef. Invisible bar has no dims. - included AIMS. The why of Lily. - warning if duplicate engraver. - warning if no ties could be created. @@ -870,7 +870,7 @@ pl 38.uu1 pl 37.script3 - fixes for spring_spacer, introduced Spacing_engraver - - cleanup for rest-collisions. + - cleanup for rest-collisions. - hacks for GUILE gc - mudela-book \mudelafile - Documentation/tex/lilypond-regtest.doc @@ -897,18 +897,18 @@ pl 37.script1 (todo -> convert-mudela) - Line_of_score is an Axis_group_element, no more overlapping lines, hopefully. - - mf: whole diamond head tweak - + - mf: whole diamond head tweak + pl 37.mb2 - Added property clefStyle: "" / "transparent" / "fullSizeChanges" - New example: input/test/incipit.ly - Documented clefStyle and restStyle in refman.tex - Partial bug fix: octaviated clefs. Still broken!!! - + pl 37.mb1 - - Added property restStyle. - - mensural 4th, 8th and 16th rests. + - Added property restStyle. + - mensural 4th, 8th and 16th rests. pl 37.uu1 - FreeBSD bf @@ -934,12 +934,12 @@ pl 36.hwn1 - junk cruft for detecting upbeam / downbeam. - junk all *{horizontal,vertical}* Score_element derived classes. - G_staff_side_item::padding_f_ now generic property. - - some tweaking of beam & stem. + - some tweaking of beam & stem. - junk pointerlist in Sources - - junk Stem::mult_i_, Stem::beam_gap_i_, G_staff_side_item::padding, + - junk Stem::mult_i_, Stem::beam_gap_i_, G_staff_side_item::padding, Bar::at_line_start_b_, Key_item::c_position_, Note_head::type_str_, Note_head::staff_size, Stem::xdir_ - + pl 36.mb1 - bf: N.W.Gade @@ -988,8 +988,8 @@ pl 34.hwn2 * Item::break_priority_i_, * Item::break_status_dir_, - merge Score_priority_engraver / Score_horizontal_align_engraver - - Use more generic element properties. - - precompute SCM symbols. + - Use more generic element properties. + - precompute SCM symbols. - remove_elt_property (): Try to junk an element property, if not needed anymore. @@ -1046,7 +1046,7 @@ pl 31.hwn3 - junked cautionary_b_ from Musical_pitch pl 32.jcn1 - - set-lily: set weird locale links for $LILYPONDPREFIX + - set-lily: set weird locale links for $LILYPONDPREFIX ********** pl 31.mb2 @@ -1062,12 +1062,12 @@ pl 31.hwn2 - junked various cruft - merged do_substitute_dependen{t,cy} to do_substitute_element_pointer () - - more parser cleanup + - more parser cleanup - Interval uses Drul_array - - bf: I've been drinking too much + - bf: I've been drinking too much - delete break helpers before object breaking/multiplication. Try to save some memory. - + pl 31.jcn4 - bf: toplevel install, kpsewhich - sm 71, require yodl-1.31.11 @@ -1086,7 +1086,7 @@ pl 30.jcn1 - sm fixes, intl/ fixes pl 30.mb1 - - Added support for magnification of TeX fonts ==> + - Added support for magnification of TeX fonts ==> larger dynamics in 20pt scores. (Doesn't work in Postscript) pl 30.hwn1 @@ -1094,14 +1094,14 @@ pl 30.hwn1 - Italian support (thanks, Maurizio) - parser cleanup - minor chord.cc cleanups. - - bf: \rc \rced + - bf: \rc \rced - hara kiri doesn't do suicide with normal rests. - Hara_kiri_vertical_group_spanner generalised - extender engraver rewrite, now __ is like ~ [] |, ie. in between notes/lyrics. - lyric engraver now engraves only single voices. Use separate LyricVoices to get stacked lyrics. - - bf: bar(Non)Auto first barline + - bf: bar(Non)Auto first barline - barAuto -> barNonAuto @@ -1115,7 +1115,7 @@ pl 29.uu1 pl 29.jcn3 - - fix: slur-case3.ly + - fix: slur-case3.ly - init.sly: .fly with linewidt=-1 pl 29.jcn2 @@ -1129,8 +1129,8 @@ pl 29.hwn1 pl 29.jcn1 - - bf: volta sizes - - GNU stuff on home page + - bf: volta sizes + - GNU stuff on home page ******* pl 29 @@ -1151,11 +1151,11 @@ pl 27.jcn5 - outline TODO pl 27.jcn4 - - measure-end hinterfleish patch - - input/test/coda-kludge.ly - - bf: volta-number placement - - volta: support for "1.-2." "3" - + - measure-end hinterfleish patch + - input/test/coda-kludge.ly + - bf: volta-number placement + - volta: support for "1.-2." "3" + pl 27.jcn3 - bf's: zero-length repeats - Auto beamer: @@ -1190,9 +1190,9 @@ Atom is a GUILE smob. Guile takes care of allocation and list stuff. - only make AFMs for feta[0-9]+.mf - using strings for abs loudness. - + pl 27.jcn2 - - grand renaming: Duration vs Moment / Rational + - grand renaming: Duration vs Moment / Rational pl 27.uu1 - extra beam warning @@ -1204,8 +1204,8 @@ pl 27.jcn1 ************* pl 27 (feb 3) -pl 26.uu1 - - make TFMs too. +pl 26.uu1 + - make TFMs too. - bf: dynamics. (Don't hang on spanner!) - read TFM before AFM. - fix din-MF stuff (UGH) @@ -1229,8 +1229,8 @@ pl 26.jcn2 pl 26.jcn1 - tutorial fixes - bf: OrchestralScore should do hara-kiri.. - - bf: makeinfo: - - info in rpm again + - bf: makeinfo: + - info in rpm again - update to yodl pl10, yodl2texinfo fixes - use --force, .info should always be generated @@ -1246,7 +1246,7 @@ pl 26 (feb 1, 99) pl 25.uu2 - junked Scarlatti clef - fixed clef^8 - - Interpretation_context_handle is interface to interpretation context + - Interpretation_context_handle is interface to interpretation context - Staff_switching_translator: automatic staff switching for Piano staffs. pl25.jcn1 @@ -1268,7 +1268,7 @@ pl 23.ms2 pl 23.ms1 - sinfonia.ly: several fixes - - dynamics + - dynamics * increased range pppppp to ffffff * added sp, spp, sff, rfz * example see input/test/tchaikovsky.ly @@ -1278,7 +1278,7 @@ pl 23.ms1 pl 24.jcn2 - website fixes - bf's: chords: - * reverted c1*2, collides with \times {} + * reverted c1*2, collides with \times {} * should use: c\breve, c\longa for long chords * addition: c-9, subtraction: c^5 * multiple -add, ^sub: c-7+.9-^3.5 @@ -1286,7 +1286,7 @@ pl 24.jcn2 - bf: lookup text height - bf's: autobeamer - pl 24.jcn1 +pl 24.jcn1 - bf: rest collisions - separate tfm-reader - bf: :|: should not have thin lines @@ -1305,7 +1305,7 @@ pl 23.jcn9 - bf: lily-version pl 23.jbr1 - - scripts/ly2dvi.py: Windows 95 shell does not support redivrection + - scripts/ly2dvi.py: Windows 95 shell does not support redivrection of stderr. We now distribute ash and use it when needed. - stepmake/bin/package-zip32.sh: distribute ash, and guild ice-9/ directory. We build and distribute manpages in html format instead @@ -1324,7 +1324,7 @@ pl 23.jcn8 pl 23.hwn3 - {Bar numbers|staff margin stuff|marks} fixed using Bar_script_engraver as base class - - bf: PS points != Lily \pt + - bf: PS points != Lily \pt - junked Bar_column_engraver - junked Text_item and some old files. @@ -1339,10 +1339,10 @@ pl 23.jcn7 * nice repeats * removed all beams ifo auto-beamer - bf's: autobeam - - junked dur2real; beamAutoEndx now as rational string: "1/2" + - junked dur2real; beamAutoEndx now as rational string: "1/2" pl 23.hwn2 - - _8 clef + - _8 clef - junked #args symtable def. - junked Text_item. - moved Bar assembling into LilyPond @@ -1376,8 +1376,8 @@ pl 23.jcn2 pl 23.mb1 - bf: Position and possible SIGSEGV in Mark_engraver - Added padding support in G_staff_side_item - - bf: Correct direction of textual scripts. - - bf, lookup.cc: Fewer warnings about missing text styles. + - bf: Correct direction of textual scripts. + - bf, lookup.cc: Fewer warnings about missing text styles. Same units used in all .afm files. pl 22.jcn5 @@ -1405,18 +1405,18 @@ pl 22.jcn1 - bf's: cross-staff slur - bf: gnossienne-4 pl 22.tca1 - - buxfix, \mudela{ \times 2/3{ ...} } works now + - buxfix, \mudela{ \times 2/3{ ...} } works now ****** - + pl 22 - fixed "already have a Beam" error pl 21.jcn2 - - gnossienne: hmm, how to + - gnossienne: hmm, how to * undisplay bars * don't put 'grace notes' in beam - * put separator between "] \translator Staff=x" + * put separator between "] \translator Staff=x" pl 21.jcn1 - gnossienne-4.ly (start of) @@ -1467,8 +1467,8 @@ pl 18.jcn5 pl 18.mb1 - \mark now works, using G_staff_side_item. - - Improved layout of multi-bar rests, including a new - font symbol. + - Improved layout of multi-bar rests, including a new + font symbol. pl 18.jcn4 - beam length adjustments @@ -1480,14 +1480,14 @@ pl 18.jcn3 - bf: separators on cygwin pl 18.jcn2 - - bf: stem-length algorithm - - bf: beam direction algorithm - - bf's: wtk1-fugue2.ly + - bf: stem-length algorithm + - bf: beam direction algorithm + - bf's: wtk1-fugue2.ly pl 18.jcn1 - - stepmake update - - small fixes: spacing.ly, wtk1-fugue2-ly, violino-viola duet. - + - stepmake update + - small fixes: spacing.ly, wtk1-fugue2-ly, violino-viola duet. + ******* pl 18 (jan 4 '99) @@ -1501,7 +1501,7 @@ pl 17.jbr1 - scripts/ly2dvi.py root is now the shared directory path not the root of the lily installation. Environment variable LILYPONDPREFIX is also the path to shared directory. - - lily/main.cc WINNT conditional added to avoid a casting of + - lily/main.cc WINNT conditional added to avoid a casting of main_prog pl 17.hwn1 @@ -1514,12 +1514,12 @@ better. - junked Graphical_element::{width,height} - junked Plet_swallow_engraver, Plet_engraver - Command_tie_engraver -> Tie_engraver, Command_beam_engraver -> Beam_engraver - - naming brew_molecule_p / do_brew_molecule -> output_processing, do_brew_molecule_p + - naming brew_molecule_p / do_brew_molecule -> output_processing, do_brew_molecule_p - experimental Text_item, Staff_side - junked old Beam_engraver and old Tie_engraver. - AFM administration cleanup. - cache brewed molecules. Speed up ? - - rehacked Graphical_element, introduced Dimension_cache + - rehacked Graphical_element, introduced Dimension_cache ******** @@ -1535,34 +1535,34 @@ pl 16.jcn1 pl 16 pl 15.uu1 - - dynamic fix. + - dynamic fix. - junked abbrev stuff from parser. pl15.tca1 - fixed verbatim option behaviour for mudela-book. - - added mudela-book option intertext="some text" + - added mudela-book option intertext="some text" - mudela-book now understand latex \begin{verbatim} - + pl 15.jcn1 - - chord inversion: + - chord inversion: * enter C/E * display chord names according to boolean property - \property Score.chordInversion; + \property Score.chordInversion; ********* pl 15 pl 14.hwn1 - - new beam syntax: { [ ] }, changed in lilypond, + - new beam syntax: { [ ] }, changed in lilypond, parser, lilypond (mudela 1.0.14), manual - - new tie syntax: { ~ } changed in manual, + - new tie syntax: { ~ } changed in manual, parser, lilypond (Mudela 1.0.13) pl 14.jcn1 - bf: get_chord C-m5- - typos: chord-name -pl 14.tca2 +pl 14.tca2 - move option proccing out of main ********** @@ -1570,11 +1570,11 @@ pl 14.tca2 pl 14 pl 13.hwn1 - - tutorial fixes. - - junked find-quarts - - junked various plet goryness. - - preps for ~ syntax - - bib fixes + - tutorial fixes. + - junked find-quarts + - junked various plet goryness. + - preps for ~ syntax + - bib fixes pl 12.jcn3 - bf's: standchen @@ -1587,14 +1587,14 @@ pl 12.jcn2 - new chord syntax, again: TONIC [DURATION] ['-' MODIFIERS/ADDITIONS] - shorthand prefix for note-mode: '@', no shorthand for notes in chord mode... - + pl 11.jcn6 - bf: ly2dvi: better guess LILYPONDPREFIX: ../share/lilypond - chord-table; urg bugs: * note-collisions * accidental-placement - bf: cis m (\textsharpm, urg) - + pl 11.jcn5 - bib entry, twinkle-pop - bf's: chords @@ -1660,10 +1660,10 @@ pl 9.uu2 - removed \output from parser/lexer pl 9.jcn2 - - bf/redo: slur.cc, encompass-info: setting of encompass array. + - bf/redo: slur.cc, encompass-info: setting of encompass array. - switched tuplet-engaver off (core dumps) -pl 9.jcn1 +pl 9.jcn1 - bf (urg): no |: at start of piece - bf?: text defs without width - alignment absolute dynamics @@ -1732,18 +1732,18 @@ pl7.hwn1 pl 7 pl6.jcn5 - - repeatbars, volta-spanner work, alternative iteration still broken - - volta symbol + - repeatbars, volta-spanner work, alternative iteration still broken + - volta symbol pl5.szmulewicz2 - - more GUILE stuff. + - more GUILE stuff. - tutorial doco updates pl6.jcn4 - - volta-spanner - - repeat-engraver - - repeat/alternative music layout (hehe) - + - volta-spanner + - repeat-engraver + - repeat/alternative music layout (hehe) + pl6.uu1 - Doco of music iterators. @@ -1772,7 +1772,7 @@ pl5.jcn2 pl5.jcn1 - tex/lily-ps-defs.tex fixes - - lily.ps + - lily.ps pl 5.hwn1 - Tuplet_engraver @@ -1788,18 +1788,18 @@ pl4.jcn4 pl4.jcn3 - bf: text staff vertical align; see input/test/vertical-text.ly - urg, scaled cmr8 by factor 4/5 - - apart from end/begin of measure spacing urgs, stars-and-stripes.ly + - apart from end/begin of measure spacing urgs, stars-and-stripes.ly is rather cool pl4.jcn2 - - read (cmrxx)afm for text char widths - - tfmtoafm.sh (quite urg) - - alphabet.ly - + - read (cmrxx)afm for text char widths + - tfmtoafm.sh (quite urg) + - alphabet.ly + pl 4.uu1 - read .scm files. No need for GUILE_LOAD_PATH - .ps hack. No need for lily.ps on the printer - + (&$^@M&@^$@^&$@ Damn TeX) @@ -1807,27 +1807,27 @@ pl 4.uu1 pl 3.ms1 - thumb-upgrade - + pl4.jcn1 - bf: dotted slur - bf: text ssb - bf: empty/unknown in ps pl 4.tca1 - - 40% speedup executing mudela-book on mudela-book-doc.doc - - change of lilypond's output filenames. Given multiple input - files, eg. 'm.ly y.ly', output names will now be 'm.tex y.tex' - not 'm.tex y-1.tex', but if m.ly containts two paper definitions - output will be 'm.tex m-1.tex y.tex' + - 40% speedup executing mudela-book on mudela-book-doc.doc + - change of lilypond's output filenames. Given multiple input + files, eg. 'm.ly y.ly', output names will now be 'm.tex y.tex' + not 'm.tex y-1.tex', but if m.ly containts two paper definitions + output will be 'm.tex m-1.tex y.tex' ******* 1.1.4 pl 3.tca1 - - accordion symbols in mf/feta-accordion.mf and - init/accordion-defs.ly. - - small changes to mudela-book and Documentation/man/mudela-book.yo - - mudela-book example file in Documentation/tex/mudela-book-doc.doc + - accordion symbols in mf/feta-accordion.mf and + init/accordion-defs.ly. + - small changes to mudela-book and Documentation/man/mudela-book.yo + - mudela-book example file in Documentation/tex/mudela-book-doc.doc pl 3.jcn5 - bf: dashed-slur @@ -1836,17 +1836,17 @@ pl 3.jcn5 - repeatbar fixes pl 3.jcn3 - - mup-to-ly.py: version 0.0 - - init/test/stars-and-stripes.ly (from star.mup) + - mup-to-ly.py: version 0.0 + - init/test/stars-and-stripes.ly (from star.mup) - GrandStaffContext - + pl 3.hwn1 - junked musical info from key-item - tutorial fixes. pl 3.jcn2 - - bf: font switch - + - bf: font switch + ****** 1.1.3 @@ -1855,11 +1855,11 @@ pl 2.jcn2 pl 2.uu1 - ly2dvi.py -I fix - obsoleted ly2dvi.sh - - removed Note_head_engraver + - removed Note_head_engraver pl 2.hwn1 - - scm cleanups, chop-decimal - - scarlatti clef. + - scm cleanups, chop-decimal + - scarlatti clef. pl 2.jcn1 - commented-out Level-2 PostScript in lily.ps (J. Buehler) @@ -1877,26 +1877,26 @@ pl 1.jcn4 pl 2 pl 1.mb1 - - Support for cautionary accidentals. , i.e. accidentals + - Support for cautionary accidentals. , i.e. accidentals within parantheses. Syntax: 'cis?'. Try input/test/accid.fly Note that the font has changed. - bf: No unnecessary warnings about time signatures - - Added optional second argument of \key. Set to \major or \minor + - Added optional second argument of \key. Set to \major or \minor to get a major or minor key. Default: major. - bf: Compilation error in midi-walker.cc pl 1.jcn2 - - fixes for htmldoc, website - - silly jcn1 fixes - - junked MODULE stuff from lily/GNUmakefile (again) - + - fixes for htmldoc, website + - silly jcn1 fixes + - junked MODULE stuff from lily/GNUmakefile (again) + pl 0.jcn4 - -set: - export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init - - dstream: Score_element, Column_info - - -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a - - init/lily.scm - + -set: + export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init + - dstream: Score_element, Column_info + - -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a + - init/lily.scm + ******** @@ -1929,18 +1929,18 @@ pl 17.jcn7 - added: set*text, timesig, beam - guile-1.3 is fine; my egcs-1.0.2's -O2 is broken pl 17.jbr1 - - stepmake/stepmake/bin/package-zip32.sh: Updated configure statement - and modified win32 specific distribution file names to match - pl 16.hwn1 changes. - - scripts/ly2dvi.py: Modified search paths to match the new lilypond - installation tree. - - scripts/convert-mudela.py: Remove the an existing backup file - before renaming original. This is a WINDOWS32 Python requirement. - - Documentation/ntweb/index.html: Updated documentation to match - new lilypond installation tree. - - lily/main.cc: Fixed LILYPONDPREFIX search paths. - - + - stepmake/stepmake/bin/package-zip32.sh: Updated configure statement + and modified win32 specific distribution file names to match + pl 16.hwn1 changes. + - scripts/ly2dvi.py: Modified search paths to match the new lilypond + installation tree. + - scripts/convert-mudela.py: Remove the an existing backup file + before renaming original. This is a WINDOWS32 Python requirement. + - Documentation/ntweb/index.html: Updated documentation to match + new lilypond installation tree. + - lily/main.cc: Fixed LILYPONDPREFIX search paths. + + ********** @@ -1952,12 +1952,12 @@ pl 18.exp - catalan.ly pl 17.tca1 - - rewrite of mudela-book - + - rewrite of mudela-book + pl 17.ms1 - - added \thumb (used very often in cello music) in - mf/feta-schrift.mf. - - added /input/test/thumb.ly (example) + - added \thumb (used very often in cello music) in + mf/feta-schrift.mf. + - added /input/test/thumb.ly (example) pl 16.jcn1 - dashed-slur through scheme @@ -1983,19 +1983,19 @@ pl 17.jcn5 pl 17.jcn4 - installable stepmake pl57 - - urg, FIXME guile-1.3: + - urg, FIXME guile-1.3: * don't install shared libs! configure can't handle * manually add: EXTRA_LIBS = -lguile -lreadline -ldl * lily's truely broken, downgrade do 1.2 pl 17.jcn3 - - lots of stuff still broken, notably font selection, just try + - lots of stuff still broken, notably font selection, just try a()b or so - tex output support - all output through scheme - option: f, output-format=X - - geile placebox + - geile placebox - mf/mfplain.ini pl 17.jcn2 @@ -2003,4 +2003,3 @@ pl 17.jcn2 pl 17.jcn1 - 16.jcn1 - diff --git a/Documentation/misc/CHANGES-1.2 b/Documentation/misc/CHANGES-1.2 index 7bb36d49aa..4d01013d8b 100644 --- a/Documentation/misc/CHANGES-1.2 +++ b/Documentation/misc/CHANGES-1.2 @@ -1,4 +1,3 @@ - pl 15.hwn1 - reverted MIDI unfold patches. - bf: cross staff beam, cross staff slur (2x) @@ -70,14 +69,14 @@ pl 12.rrr2 - .ly files corrected, Voice.dynamicDir to Voice.dynamicDirection pl 12.rrr1 - - key (K:) with clef, bug fix for abc2ly - - voltaSpannerDuration code added to lilypond + - key (K:) with clef, bug fix for abc2ly + - voltaSpannerDuration code added to lilypond pl 12.hwn1 - junked wordwrap - bf: use position (not pitch) for autochange - mudela-book fixes: --dependencies, --dep-prefix - - mudela.tely more updates. Now absorbed LilyPond manpage. + - mudela.tely more updates. Now absorbed LilyPond manpage. - BUGS now in INSTALL.texi ******* @@ -94,8 +93,8 @@ pl 11.jcn1 - gnossiene with new \autochange pl 11.jbr1 - - Tried to get rid of path and switch dependencies in mf - build process. + - Tried to get rid of path and switch dependencies in mf + build process. pl 11.hwn1 - doco reorganisation: folded glossary and tutorial into manual. @@ -185,7 +184,7 @@ pl 5.hwn1 - sm: rm'd Documentation/tex/ directory. everything in stepmake/INSTALL.texi pl 5.jcn1 - - lily.scm: don't use regex-substitute/global + - lily.scm: don't use regex-substitute/global - website/doco fixes - bf: package-diff.py @@ -202,7 +201,7 @@ pl 4.hwn1 pl 3.hwn1 - mudela-book tweaks for surviving texinfo - - include feta command seqs. in .tex + - include feta command seqs. in .tex - guile 1.3.2 fixes. - include config.h directly. - bf: mudela-book. Now linear in size of document. @@ -211,7 +210,7 @@ pl 3.hwn1 offset removed from public interface, now use relative_coordinate (). extent () is given relative to this. - removed Rhythmic_head::dots_i_ - - bf: Rhythmic_head::do_substitute_element_pointer () + - bf: Rhythmic_head::do_substitute_element_pointer () - Direct access to dim_cache_ replaced by methods in Graphical_element. @@ -224,8 +223,8 @@ pl 2.lec1 - abc2ly fixes. pl 2.hwn1 - - rewrite of mudela-book. Now uses chunks, and you can put -\input, \include and \mudelagraphics in verbatim sections. + - rewrite of mudela-book. Now uses chunks, and you can put +\input, \include and \mudelagraphics in verbatim sections. pl 2.jcn2 @@ -255,14 +254,14 @@ pl 1.uu1 - Getopt_long: support for --help msg. pl 1.mb1 - - bf, scalar.cc: ".3" now detected as numerical + - bf, scalar.cc: ".3" now detected as numerical ******** - + pl 0.uu1 - refman updates by Werner & Mats - now use ChangeLog for changes. - + pl 0.jcn2 - po fixes @@ -276,12 +275,12 @@ pl 0.jcn1 problem with notes that never stop. - Decreased breakable_column_space_strength - Added a few TODO - - bf: "harmonic" and "cross" note heads also for half and + - bf: "harmonic" and "cross" note heads also for half and whole notes. - linewidth and textheight set independent of the font size. - - bf, titledefs.tex: opus and piece are not repeated for + - bf, titledefs.tex: opus and piece are not repeated for every piece unless they are explicitly set again. 0.mb1 - - Changed dynamicDir to dynamicDirection. - - refman and tutorial corrections. + - Changed dynamicDir to dynamicDirection. + - refman and tutorial corrections. diff --git a/Documentation/misc/CHANGES-1.3 b/Documentation/misc/CHANGES-1.3 index 476a69dc15..d6ba0bfc9f 100644 --- a/Documentation/misc/CHANGES-1.3 +++ b/Documentation/misc/CHANGES-1.3 @@ -24,7 +24,7 @@ 1.3.154 ======= -* More brace bugfixes. +* More brace bugfixes. * Revert: simplified TFM and PK logic in ly_init_kpath (). Find feta fonts in datadir (eg /usr/share/) again, rely on environment in the @@ -61,14 +61,14 @@ for reading. * Fixed brace font selection: do pick bigger font when needed. -* Increased number of brace fonts; made size step variable. +* Increased number of brace fonts; made size step variable. 1.3.152.hwn1 ============ * Add lilypond-init.el -* Bugfix: flipped octaves on octaviated clefs _8 +* Bugfix: flipped octaves on octaviated clefs _8 * Prevent dot/flag collisions by lengthening the stem. @@ -156,7 +156,7 @@ when stanza numbers are on. * ly2dvi bugfix: use the maximum linewidth specified. - + 1.3.149.jcn3 ============ @@ -213,7 +213,7 @@ grace notes remains. * spelling: barsize-procedure -> bar-size-procedure -* fixes for input/test/ (thanks, Laura) +* fixes for input/test/ (thanks, Laura) * Bugfix: \version "1.2.4.foo" now doesn't cause a crash. @@ -367,8 +367,8 @@ staff. ======= * Make and ly2dvi fixes. - -* Made feta-timesig C a bit rounder. + +* Made feta-timesig C a bit rounder. * Included flat autogenerated list of grob interfaces into refman. @@ -400,7 +400,7 @@ staff. * Bugfix: LyricsVoice.stz property now works. -* Remove semi-colons from lilypond syntax. +* Remove semi-colons from lilypond syntax. * Removed a grammar ambiguity: '-' DIGIT (fingering, only possible in \notes) now can not be interpreted as a negative number. @@ -477,10 +477,10 @@ Multi_measure_rest_engraver together. * Revised syntax for multiplied durations. Multiplied durations must now directly follow the number +dots. example: - c4*3/4 -\f ( % valid - c4-\f ( *3/4 % invalid + c4*3/4 -\f ( % valid + c4-\f ( *3/4 % invalid -* Halt configure if kpathsea not found. +* Halt configure if kpathsea not found. * Small refman fixes. @@ -718,19 +718,19 @@ remove the target `info: check-info' from Documentation/user/GNUmakefile. * Renamed FollowThread into VoiceFollower, followThread into followVoice. -* lilypond-book: changed nonfragment into nofragment +* lilypond-book: changed nonfragment into nofragment -* Cleanups for ledgered rests. +* Cleanups for ledgered rests. * Bugfix; don't create RhythmicStaff if asking for Staff. -* Bugfix: sparseTies. +* Bugfix: sparseTies. * Reference manual: hara kiri, font selection * changed font-point-size into font-design-size - + 1.3.139 ======= @@ -752,12 +752,12 @@ Removed command-line options -T, -t, -Q, -x. (set! point-and-click line-column-location) -Added convert-ly rule. +Added convert-ly rule. * Bugfix: use aliases not only for creating contexts, but also for referring to them. This fixes \clef "percussion" in rhythmic staffs. -* removed \textscript. +* removed \textscript. 1.3.137.jcn4 ============ @@ -799,7 +799,7 @@ makeinfo groks, but make texi2dvi barf. * changed name of ly-[sg]et-elt-property into ly-[sg]et-grob-property * Added function (ly-music-name ), returns the name of a music objects as a -string. +string. * Bugfix: \relative on \chords is no-op. (Added Un_relativable_music) @@ -823,7 +823,7 @@ RhythmicStaff, \alias Staff is found for \property Staff.XXX * Check whether property definitions are duplicate. -* Percent style repeats. +* Percent style repeats. * Named music creation: (ly-make-music "Note_req") @@ -892,10 +892,10 @@ staccato dots. typically). PK files are put in the right spot automatically, and dirs are also created automatically. -A change to mktexnam is still required -- add +A change to mktexnam is still required -- add MT_DESTROOT=foobar - + before line 161. 1.3.135.jcn3 @@ -1005,7 +1005,7 @@ interface-description.scm * Bugfix: break alignment at right edge. -* Easy-notation: letters in circular note heads. +* Easy-notation: letters in circular note heads. * Debian patch by Anthony Fok. @@ -1051,7 +1051,7 @@ This fixes input/test/orchestscore.ly * Bugfix: x-offset of stem was off by 0.5 stem thickness. -* Add grob-property attachment-angle: angle for stem to attach to note head. +* Add grob-property attachment-angle: angle for stem to attach to note head. 1.3.130.hwn2 ============ @@ -1149,7 +1149,7 @@ are only supported by the note they are on, in absence of crescendi. * Removed duplicated engraver hierarchies from coriolan and orchestral examples. -* Added user control for devnull engravers. Default: switched off +* Added user control for devnull engravers. Default: switched off * Small doco fixes. @@ -1163,7 +1163,7 @@ examples. 1.3.128.mb2 =========== -* Made the percussion clef somewhat fatter, thanks to Rune Zedeler. +* Made the percussion clef somewhat fatter, thanks to Rune Zedeler. Note: font updated! Added this clef to input/regression/clefs.ly. * updated \endincipit macro and the examples input/test/incipit.ly and @@ -1304,7 +1304,7 @@ combinations with auto-change and part-combine. * Bugfix: glissandi with smaller rhythms parallel. -* Add printfilename option to @lilypondfile +* Add printfilename option to @lilypondfile * Include Grobs in Context self-documentation; remove "Grob " from node name for grob documentation. @@ -1330,7 +1330,7 @@ Scheme. See input/test/molecule-hacking.ly ; allows for a kludged 1.3.123 ======= -* Added macro \turnOff to remove volta brackets or any other +* Added macro \turnOff to remove volta brackets or any other graphical objects, see input/test/volta.ly or mutopia/J.S.Bach/pa.ly * Removed the "none" clef, use Clef \override #'transparent = ##t instead. @@ -1471,7 +1471,7 @@ call. This fixes input/bugs/triplet.ly. * Bugfixes: warnings. * More feature examples. - + * Renamed some scm files. * Some more documentation fixes (move hacking.texi into normal @@ -1482,7 +1482,7 @@ documentation.) 1.3.117.mb1 =========== -* Bugfix: fetdefs.tex: don't redefine the standard TeX macros +* Bugfix: fetdefs.tex: don't redefine the standard TeX macros \sharp,\natural or \flat. * Bugfix: ly2dvi: handle the --landscape option. Leave the textheight @@ -1541,7 +1541,7 @@ should now build with plain makeinfo 4.0, some links will be broken. 1.3.116.mb1 =========== -* Bugfix: convert-ly.py: Correct syntax for inserted \version, +* Bugfix: convert-ly.py: Correct syntax for inserted \version, \push -> override happened in 1.3.111 * Bugfix: corrected documentation of timeSignatureStyle, removed all @@ -1554,7 +1554,7 @@ should now build with plain makeinfo 4.0, some links will be broken. * Bugfix: beamed grace notes (reinstate process_music () call in Grace_engraver_group::process() ) -* Rename: Global_translator::process -> Global_translator::one_time_step (). +* Rename: Global_translator::process -> Global_translator::one_time_step (). 1.3.115.jcn2 ============ @@ -1576,7 +1576,7 @@ not exist (ie, empty .texidoc files). 1.3.115.hwn1 ============ -* Bugfix: multi-measure rest ends, chords. +* Bugfix: multi-measure rest ends, chords. * Some back end documentation @@ -1606,7 +1606,7 @@ not exist (ie, empty .texidoc files). * support breves and longas (no abc program that I know of has longas, but a couple of them have breves, and one can always hope.) - * translate text annotations beginning with _ and ^ for above and + * translate text annotations beginning with _ and ^ for above and below the staff. * quote lyrics syllables with ( @@ -1648,13 +1648,13 @@ constructor, and set everything in the parser. * Checksums for AFM fonts: make sure that TFM and AFM files match. One FAQ less to be asked. -* Made point-and-click switchable, default: off +* Made point-and-click switchable, default: off * Bugfix: don't make multimeasure rests from failed span-requests. * Bugfix: mark with string arguments, eg. letters.. -* Bugfix: direction of staccato dots. +* Bugfix: direction of staccato dots. 1.3.113 ======= @@ -1765,7 +1765,7 @@ num_i_}, Rhythmic_req::duration_, Melodic_req::pitch_ 1.3.109 ======= -* Bugfix: resurrected point-and-click. +* Bugfix: resurrected point-and-click. * Use scheme object props for storing type predicates and doc-strings Dump global lists of properties into auto-documentation. @@ -1805,7 +1805,7 @@ an absolute dynamic. * Rename class Crescendo to Hairpin. -* Search/replace: Musical_pitch -> Pitch +* Search/replace: Musical_pitch -> Pitch * More links in the backend documentation. @@ -1826,7 +1826,7 @@ descriptions. * construct Music_iterators decentrally. -* Make smob of Duration +* Make smob of Duration * Make smob of Musical_pitch. @@ -1958,7 +1958,7 @@ staff-space, line-count * \property tremoloFlags can be set anywhere now -* \apply #function music +* \apply #function music * Bugfix: padding of dots. @@ -1975,7 +1975,7 @@ staff-space, line-count * Silly font initialisation fix for paper19 non-feature. -* Automatic engraver/property documentation infrastructure. +* Automatic engraver/property documentation infrastructure. * Fixed system-start braces @@ -1987,7 +1987,7 @@ them. * Bugfix: Tie_column doesn't force Tie directions ties that already have a direction. -* Bugfix: multimeasure rest +* Bugfix: multimeasure rest 1.3.101 ======= @@ -2005,13 +2005,13 @@ settings. Fixes too large time sigs. 1.3.100 ======= -* Tweaks of .scm font-selection. +* Tweaks of .scm font-selection. * Rewrote font management of Score_element and Paper_def. * Introduced outputscale: internally do computation in terms of outputscale. Prepare to deprecate staffspace internally. Rewrote -.scm side of font selectioning. +.scm side of font selectioning. 1.3.99.jcn1 =========== @@ -2190,7 +2190,7 @@ forgotten copies. (X-offset-callbacks . (callback1 callback2 .. .)) (Y-offset-callbacks . (callback1 callback2 .. .)) - (X-extent-callback . callback1) + (X-extent-callback . callback1) (Y-extent-callback . callback1) * naming: basicXXXProperties -> XXX, some other changes in naming; @@ -2268,7 +2268,7 @@ Break_align_item::space-alist, Chord_name::chord-name-function will print a |: and a volta bracket saying X. See also input/test/manual-volta.ly - + * Volta_engraver, Repeat_acknowledge_engraver: new engravers that are controlled by repeatCommands; much cleaner than the Repeat_engraver. @@ -2296,7 +2296,7 @@ number for self-alignment-{X,Y}. 1.3.90.mb1 =========== -* Added an interscorelinefill paper variable. Set to a positive number +* Added an interscorelinefill paper variable. Set to a positive number in order to stretch the inter-line spacing to fill the full pages, except for the last page (where it would look really ugly). @@ -2315,7 +2315,7 @@ number for self-alignment-{X,Y}. 1.3.89.hwn1 =========== -* Only open files, not directories +* Only open files, not directories * bugfix: textNonEmpty. @@ -2324,7 +2324,7 @@ before the note leading to an automatic staff switch are switched as well (improves the looks of scarlatti-test). Associated fixes and additions for Music_iterator::skip () and friends. -* Bugfix: only quantise staccato inside the staff. +* Bugfix: only quantise staccato inside the staff. * cleanups for beam and stem. Removed global GUILE namespace calls from Beam and Stem. @@ -2341,12 +2341,12 @@ from Beam and Stem. * Fixes for ASCII output. * Added feature to part combiner that should allow part-switching only - for entire measures. Currently, it is controlled by a new + for entire measures. Currently, it is controlled by a new property changeMoments (A . B): - only switch when !(A mod now), - decide whether to switch based on music during time period B. -* Made bugfix: Sequential_iterator::get_music (M): mustn't return music +* Made bugfix: Sequential_iterator::get_music (M): mustn't return music later than M. * Added skip (M) to some iterators. @@ -2372,7 +2372,7 @@ update, LaTeX example, landscape support. * Removed C++ support for barNumberScriptPadding, now in generic-property.scm (but they're deprecated anyway) -* Changed threshold in Align_interface to be in staffspace +* Changed threshold in Align_interface to be in staffspace * changed minVerticalAlign and maxVerticalAlign to be in staffspace. A better way: do \push #'threshold = #(cons A B ). (WARNING: @@ -2393,11 +2393,11 @@ INCOMPATIBLE CHANGE) - beam-flag-width-function to Beam. Grace_align_item: - - horizontal-space: spacing of grace notes is configurable + - horizontal-space: spacing of grace notes is configurable - Volta_spanner: + Volta_spanner: - height - - thickness + - thickness Multi_measure_rest: - expand-limit @@ -2408,10 +2408,10 @@ INCOMPATIBLE CHANGE) - height Stem - - thickness + - thickness Collision - - note-width to Collision + - note-width to Collision * removed various obsolete variables from params.ly @@ -2435,7 +2435,7 @@ INCOMPATIBLE CHANGE) * Fixed problem with disappearing crescendi across line break. -* Bugfix: dynamic texts should not be set by text-engraver. +* Bugfix: dynamic texts should not be set by text-engraver. * Rewrote and cleaned up music-iterator. @@ -2470,7 +2470,7 @@ definition out of Translator_group into Translator_def) * pmx2ly.py fixes: now handles text at beginning of block correctly. -* update .spec to include scripts. +* update .spec to include scripts. * Changed syntax of \pushproperty: @@ -2493,7 +2493,7 @@ definition out of Translator_group into Translator_def) file and test case. Some work on Documentation/user/mudela-book.tely * mudela-book.py: any combination of \verb, \begin{verbatim} - @code and @example and mudela should work as expected. + @code and @example and mudela should work as expected. * dropped [].extend that depend on python 1.5.2 @@ -2530,7 +2530,7 @@ prematurely killed. * documentation -* +* * cleaned up Directional_element_interface @@ -2539,7 +2539,7 @@ prematurely killed. * comment in some unprotects for Music in parser. Should bring down cpu time and plug some leaks. -* robustness fixes for etf2ly, tuplets, grace notes. +* robustness fixes for etf2ly, tuplets, grace notes. 1.3.82 ====== @@ -2701,7 +2701,7 @@ syntax is most likely only temporary. * Added a devnull engraver, that junks (notehead) requests of the second stem when combined parts are in unison (a2). -* Part-combine iterator identifies Soli and A2 parts in threads by +* Part-combine iterator identifies Soli and A2 parts in threads by looking at rhythm and pitches. It switches Voice context automagically, and communicates current state using a2/solo/solo2 properties. @@ -2714,9 +2714,9 @@ syntax is most likely only temporary. * fixed problem with dynamicDirection -* fixed problem with nonEmptyText +* fixed problem with nonEmptyText -* `Fixed' chord notation, as per request of David Arnold, ie, +* `Fixed' chord notation, as per request of David Arnold, ie, Added a chord-name-mode, that only displays chord names when there's a change in the chord-name-scheme, Also, a chord name should always be displayed after a line break. See @@ -2735,7 +2735,7 @@ syntax is most likely only temporary. * Midi2ly: output `new' \key syntax, and updated version number. -* Midi2ly bugfix: don't correct quantised durations, don't use tuplets, +* Midi2ly bugfix: don't correct quantised durations, don't use tuplets, double dots etc. when user doesn't want them. It probably used to work like this, a long time ago. For some unknown reason, all corrections made by Duration_convert were junked if the corrected @@ -2745,7 +2745,7 @@ syntax is most likely only temporary. * Update of mudela-book (Tom Cato Amundsen) - --read-lys option, now you can do: - mudela-book file.texi + mudela-book file.texi convert-mudela mudela-book --read-lys - --outdir=DIR will put ALL output into DIR @@ -2793,13 +2793,13 @@ syntax is most likely only temporary. 1.3.74.gp1 ========== -* Improved default handling of Lyric_phrasing_engraver and made it on by +* Improved default handling of Lyric_phrasing_engraver and made it on by default. -* Beginnings of a stanza number engraver (\property LyricVoice.stanza = +* Beginnings of a stanza number engraver (\property LyricVoice.stanza = #"1:" etc.) -* fixed bug in script.cc so fermata (and other scripts) get flipped +* fixed bug in script.cc so fermata (and other scripts) get flipped correctly when they are above the staff. 1.3.74.jcn2 @@ -2819,7 +2819,7 @@ correctly when they are above the staff. support optional for now. * Bugfix: halved width of tremolo-beams. - + * Included compilation fix for guile-1.3.4 (Anthony). * Added: chord inversion and base to regtest. @@ -2903,13 +2903,13 @@ alternative takes its inital octave from the body. * Added Scarlatti sonata test file to input/ -* kpathsea support, courtesy Carsten Block +* kpathsea support, courtesy Carsten Block 1.3.70 ====== * Fixed: long standing problem in optical-illusion code. -* Fixed: stop beam if stem *has* a beam in auto-beam-engraver. +* Fixed: stop beam if stem *has* a beam in auto-beam-engraver. * Made interface of Multi_measure_rest, System_start_delimiter, Spacing_spanner, Separating_group_spanner, Beam, Slur and @@ -2930,11 +2930,11 @@ information. * Fixed: don't invoke Hara_kiri::consider_suicide too early. -* Fixed: property engraver. +* Fixed: property engraver. * Fixed: don't crash on multiple ties. -* Cleanups of Beam, should also be a little faster. +* Cleanups of Beam, should also be a little faster. * Reunite properties and pointers. In implementation we make a distinction between mutable and immutable properties @@ -2944,13 +2944,13 @@ distinction between mutable and immutable properties * Made Side_position_interface and Staff_symbol_interface an all statics class, and stripped _interface suffix. -* Make Align_interface and Axis_group_interface an all-statics class +* Make Align_interface and Axis_group_interface an all-statics class * Rhythmic_head, Staff_symbol, Grace_align_item, Break_align_item, Bar, Span_bar are now interfaces, Staff_bar was removed. Use a callback for determining barsize. -* Removed all GLUE_SCORE_ELEMENT callbacks. +* Removed all GLUE_SCORE_ELEMENT callbacks. * Added test for repeats to trip.ly @@ -3050,7 +3050,7 @@ now. * Various bugfixes hyphen-spanner. -* Bugfix: set appropriate callbacks for Note_head. This fixes +* Bugfix: set appropriate callbacks for Note_head. This fixes problems with dots. * Removed Clef_item as score-element derived type. @@ -3164,7 +3164,7 @@ is now obsolete. 1.3.57.jcn2 =========== -* Cleaned-up scheme list to text conversion for Chord_name and +* Cleaned-up scheme list to text conversion for Chord_name and fixed horizontal kerning. * Added examples for american (slashed o) and jazz (black triangle), @@ -3186,13 +3186,13 @@ Key have been junked in favor of Newkey. 1.3.57 ====== -* Fixed several forgotten molecule-callbacks +* Fixed several forgotten molecule-callbacks * Fixed first clef in score; now F clefs are also possible. 1.3.56.mb1 ========= - + * Updated FAQ with two useful GDB macros. * Several fixes in the documentation. @@ -3216,16 +3216,16 @@ exceptions: Scripts, pedals). Change all Score_element constructors to take a basic-property list. The suffix of a property list may be shared by several score-elements, for instance all default G-clefs in a score share the following settings - + (breakable . #t) (break-align-symbol . Clef_item) - (visibility-lambda . ,begin-of-line-visible) + (visibility-lambda . ,begin-of-line-visible) -This should reduce memory usage further. +This should reduce memory usage further. * Magically fixed the disappearing Lyrics problem. -* Removed used_b_ field from Score_element. +* Removed used_b_ field from Score_element. * Massive search-replace patch: store pointers and properties separately, in preparation of property collapse. @@ -3250,7 +3250,7 @@ order is unique, and sensible. * russian.po (thank you, August.) -* Small cleanups in Molecule interface +* Small cleanups in Molecule interface * Spacing related elements perform suicide after calculating distances. This saves a some memory, approximately 2 to 5 % ? @@ -3287,12 +3287,12 @@ doesn't overestimate the amount of memory available. * Bugfix: don't crash on durations that are not a power of 2. -* Build manpages during `make all' - +* Build manpages during `make all' + * Bugfix: don't do absolute comparisons in Polynomial::clean (). * Bugfix: set visibility-lambda for key signature created by -createKeyOnClefChange. Fixes disappearing key signatures. +createKeyOnClefChange. Fixes disappearing key signatures. * Bugfix: make System_start_delimiter of bar-line type invisible when it spans only one staff. @@ -3304,7 +3304,7 @@ it spans only one staff. separate passes, which makes the code cleaner. This fixes a problem with some items not disappearing from hara-kiri staffs. -* Use Scheme for Key_item data members. +* Use Scheme for Key_item data members. * Don't use regex in chord-names.scm under windows; hybrid chordnames user+calculated will be partly broken. @@ -3365,7 +3365,7 @@ barline. now, banter and american. To get american style, use \property ChordNames.chordNameStyle = "american" - + Most anything should be possible now. See input/test/american-chords.ly * Added isinf check to configure.in, and isinf macro from guile to @@ -3387,11 +3387,11 @@ barline. * Corrected glossary.tely -* Corrected \mark font handling. feta-nummer font only of the +* Corrected \mark font handling. feta-nummer font only of the string is all numeric. * Implemented noteHeadStyle lookup in Guile. Reintroduced the style - "harmonic" and added "baroque" (normal note shapes except for + "harmonic" and added "baroque" (normal note shapes except for brevis and longa which are square). * Simplified ly2dvi using the power of the geometry package. @@ -3432,7 +3432,7 @@ hara-kiri + clef8 problem * Accidentals with chord-names smaller and as superscript. -* Do some extra footify (works only once) while making html docs. +* Do some extra footify (works only once) while making html docs. 1.3.45.hwn1 =========== @@ -3445,7 +3445,7 @@ Mark_engraver are simpler and more robust. * Fixed precedence of \property verticalDirection and dynamicDirection -* Fixed keys without barlines +* Fixed keys without barlines * Fixed StaffGroups: removing `\consistsend "Axis_group_engraver"' puts alignment in function again @@ -3512,7 +3512,7 @@ classes mostly. * Use a more discriptive name for windows setup.zip. -* mf/GNUmakefile: Have logs as last target, so that normally, they're +* mf/GNUmakefile: Have logs as last target, so that normally, they're not made twice. * stepmake/stepmake/metafont-rules.make: Don't remove the .log files. @@ -3526,7 +3526,7 @@ standalone; ie, no need for Cygnus' usertools anymore. 1.3.42.jbr1 =========== - + * Documentation/ntweb: Updated angels.ly to match current syntax. Also updated index.texi. @@ -3604,12 +3604,12 @@ for cross-building to Cygwin. Removed support for "old-style" tremolos. -* Add a convert-mudela function for the conversion "\key A;" to "\key a; +* Add a convert-mudela function for the conversion "\key A;" to "\key a; * Read \property measurePosition within the engraver code, instead of looking up the Timing_translator. -* star-spangled-banner.ly: add Bar_engraver to LyricsVoice +* star-spangled-banner.ly: add Bar_engraver to LyricsVoice * Changed all .fly and .sly files to .ly files. Propose to dump .fly and .sly. @@ -3640,7 +3640,7 @@ and .sly. \property textStyle for lyrics. * Score_element::preset_extent(), used by \property -XXXVerticalExtent, so hard code the size of a vertical group. +XXXVerticalExtent, so hard code the size of a vertical group. * Don't fix up reference points for originals of broken spanners. Fixes spurious "orphaned score-element" warnings. @@ -3656,7 +3656,7 @@ patch for guile. which should fix Windows problems with guile. Also added input directory to zip file. -* stepmake/aclocal.m4: Added decent checking for version of guile, and +* stepmake/aclocal.m4: Added decent checking for version of guile, and fixed warning message. * lily/lexer.ll (My_lily_lexer): Bugfix: lookup chordmodifiers in the @@ -3668,7 +3668,7 @@ chord-modifier table (not in the pitch list). 1.3.38.hwn2 =========== -* General cleanups of My_lily_parser. +* General cleanups of My_lily_parser. * Start of a Chord_tremolo_iterator for the `\repeat 4 "tremolo"' syntax. @@ -3684,7 +3684,7 @@ octave notes. Removed Notename_table. * Extra robustness warning for Side_position_interface::aligned_on_self () * Extra robustness: make sure that first and last columns are breakable. - + 1.3.38.jcn4 =========== @@ -3716,7 +3716,7 @@ config.h, version.hh files file when copying. * stepmake/stepmake/install-targets.make: bugfix, don't fail if directory is not emty when uninstalling. - + * stepmake/stepmake/generic-targets.make: added man target. * buildscripts/make-cygwin-cross.sh: new script for cross-building cygwin @@ -3724,10 +3724,10 @@ config.h, version.hh files file when copying. * Documentation/ntweb/lilypond-manpages.patch: provide pre-built manpages, so that make doesn't fail on help2man trying to execute - a GNU/windows executable. + a GNU/windows executable. * Documentation/ntweb/guile-1.3.4-gnu-windows.patch: new patch for - guile-1.3.4. + guile-1.3.4. * flower/libc-extension.cc (memmem): cygwin compile fix. @@ -3880,7 +3880,7 @@ backend 1.3.35 ====== -* Removed Documentation/programmer directory +* Removed Documentation/programmer directory 1.3.34.jcn3 =========== @@ -3968,7 +3968,7 @@ into do_process_music. * Warn if last column in score is musical. Helps catch programming errors. -* Spanner::spanned_drul_ now is private. +* Spanner::spanned_drul_ now is private. * Rewrote some bar code: moved molecule functions out of Lookup. @@ -4063,10 +4063,10 @@ into do_process_music. 1.3.30.jcn1 =========== -* More Coriolan: flute-1,2; oboe-1,2; clarinet-1,2; +* More Coriolan: flute-1,2; oboe-1,2; clarinet-1,2; fixes and remainder french horn-1,2; trombone-1,2; fagotto-1,2; timpani; and several fixes. - + 1.3.30.uu1 ========== @@ -4083,7 +4083,7 @@ into do_process_music. * Report type errors for \property. Helps with converting 1.2 input -* Use Scheme for Align_element; fixed graceAlignPosition +* Use Scheme for Align_element; fixed graceAlignPosition and removed \property alignmentReference in the process. * Use generic properties for lyrics too. This fixes \property @@ -4126,7 +4126,7 @@ removes the 2nd argument to Translator::get_property() * Added credits for some symbols of as5/9 fonts. -* Bugfix: don't make almost flat slurs, change in de-uglyfy slur. +* Bugfix: don't make almost flat slurs, change in de-uglyfy slur. * Bugfix: midi2ly put out recent version (ugh). @@ -4136,7 +4136,7 @@ removes the 2nd argument to Translator::get_property() * Bugfix: don't forget to process staffSpace and numberOfStaffLines properties. -* Removed Gade score. To appear (shortly?) on Mutopia. +* Removed Gade score. To appear (shortly?) on Mutopia. * Make Bar_script_engraver look for typeVisibilityFunction (eg property barNumberVisibilityFunction). Changed the names of the Scheme @@ -4148,7 +4148,7 @@ plateau. All molecule data is now shared. 1.3.28 ====== -* Update of the glossary by Christian Mondrup +* Update of the glossary by Christian Mondrup * Moved horn-concerto-3 out of tarball to private website, removed W.A.Mozart subdirectory. @@ -4159,7 +4159,7 @@ W.A.Mozart subdirectory. * Bugfix: don't make giant ties if the horizontal part of tie is near the center. -* Small optimizations to be a little more careful with mem usage. +* Small optimizations to be a little more careful with mem usage. * Website change: put all examples in one directory. @@ -4197,9 +4197,9 @@ reduces memory usage for large scores. * Bugfix: font used in volta-spanner calculation. * Added simple selection list to webpage, inspired by sawmill. - + * Devised kludge for ascii 5 character font pitches. - + * Substitutions: interline, 1997,1998, @stack.nl and small typo fixes. 1.3.26.hwn1 @@ -4233,7 +4233,7 @@ property of the output. Example in input/test/generic-output-property.ly 1.3.26 ====== -* lilypond as as2ly: --help and --version to stdout. Regular identify +* lilypond as as2ly: --help and --version to stdout. Regular identify to stderr. This fixes help2man's manpage generation. * configure: substitute full path for perl and guile in scripts. @@ -4268,7 +4268,7 @@ it horizontally on the clef. * Ascii output, minimal support: - AsciiScript Fonts: mf/*.af - - Init files: ly/*-as.*ly + - Init files: ly/*-as.*ly - AsciiScript translation to text: scripts/as2text.scm - input/test/as.fly input/test/as1.fly - Output support: lily/lily.scm @@ -4302,12 +4302,12 @@ does not delete any of the file_ly*.tex. * Added a ROADMAP file explaining the source directory layout. * Minor tweak in the feta 6 and 9 numeral - + * Moved files from lib/ to flower/ * Removed Note_head_side class. -* Updated the webpage to be a little more chatty. +* Updated the webpage to be a little more chatty. * Small Local_key_engraver optimization: only lookup timing engraver once. @@ -4359,7 +4359,7 @@ definitions. Very handy when entering complicated scores. \commandspanrequest \stop "rest" } -* Removed support of percent style repetitions. +* Removed support of percent style repetitions. * Put texts outside the staff. @@ -4423,9 +4423,9 @@ Cleanup mf-to-table.py 1.3.18.uu2 ========== -* lilypond-mode.el for emacs supersedes mudela-mode.el +* lilypond-mode.el for emacs supersedes mudela-mode.el -* Tuplet spanners don't collide with encompassing notes. +* Tuplet spanners don't collide with encompassing notes. * Gobbled Adobe parseAFM* code, for future use. @@ -4479,14 +4479,14 @@ Laurent Martelli. * Partial French translation, courtesy Laurent Martelli. -* Small corrections in NL translation. +* Small corrections in NL translation. 1.3.17.hwn1 =========== * Added mensural note heads (noteHeadStyle = "mensural") Additionally, we have a longa note head. noteHeadStyle = "harmonic" is not -supported anymore. (for now, that is) +supported anymore. (for now, that is) * Reference manual update. Document \properties with examples @@ -4498,7 +4498,7 @@ Key_item::c0_position_ * Clef_engraver general cleanup. Use alists (\property supportedClefTypes, clefPitches) for clef types. -* Use progress_indication () for progress. Don't include directly +* Use progress_indication () for progress. Don't include directly Don't include , from headers. @@ -4513,7 +4513,7 @@ input/test/stem-centered.ly * \property Staff.collisionMergeDotted: merge equal noteheads with different dot count. See input/test/collision-merge-dotted.fly -* Dotted rest bugfix +* Dotted rest bugfix * Don't crash if a slur does not span any notes. @@ -4552,7 +4552,7 @@ gv - bf: knee-stemlengths pl 15.jcn3 - moved poor man's stem arrays to scm - + pl 15.jcn2 - beam quanting using scm lists @@ -4568,17 +4568,17 @@ pl 14.hwn1 - stafflineleading -> staff_space - bf: rod distances. - junk some unused code. - + pl 13.hwn2 - paper/score column cleanups. Junk Score_column type pl 13.hwn1 - Bezier_bow/Bezier cleanups - bf: rest under beam. - + pl 13.jcn2 - untangled Chord_name (item) and Chord (list-of-pitches) - + pl 13.jcn1 - bezier-bow fix @@ -4588,7 +4588,7 @@ pl 12.hwn1 - bf: generic properties - quantise_iv () fix. - bezier cleanup - - class Polynomial + - class Polynomial - use smobs for font metric tables/hashes. - nl.po bf @@ -4602,7 +4602,7 @@ pl 11.hwn1 - revise stem, notehead, rest pl 11.jcn2 - - included missing scm,ly updates + - included missing scm,ly updates - bf: urg to_dir () takes scm.. - bf's: if (Foo b = bar != 1) - beam cleanup @@ -4642,7 +4642,7 @@ pl 8.hwn2 - cascading offset callbacks pl 8.hwn1 - - note-head-side + - note-head-side - naming Staff_sidify -> Side_position_interface *********** @@ -4665,7 +4665,7 @@ pl 6.uu1 - bf: ls-latex - mudela-book --no-pictures - bf: ly2dvi - - convert-mudela: beamAuto moment syntax. + - convert-mudela: beamAuto moment syntax. pl 6.jcn3 - fixed scm output @@ -4677,7 +4677,7 @@ pl 6.jcn2 pl 5.mb1 - bf: version of init.sly, init.fly - Clarify necessary version of texinfo - - bf: texi files, minor errors and syntax compatible with + - bf: texi files, minor errors and syntax compatible with older makeinfo pl 6.jcn1 @@ -4696,7 +4696,7 @@ pl 5.uu1 - bf: smob allocation (thanks David!) pl 5.hwn1 - - junked \shape. Now use #'margin-shape + - junked \shape. Now use #'margin-shape - timing: one_beat -> \property beatLength - bf convert-mudela @@ -4733,7 +4733,7 @@ pl 2.jcn3 * fixes: dim, /no X, tonic != C pl 2.jcn2 - - chords from scm + - chords from scm pl 3.hwn2 @@ -4749,10 +4749,10 @@ pl 3.hwn1 pl 2.hwn1 - bf: dynamic style. - - prepare to move dir_ into SCM. + - prepare to move dir_ into SCM. pl 2.jcn2 - - chord fixes: + - chord fixes: * inversion request: no inversion guessing for chord entry * bass request: c/+b to add bass note not part of chord * -dim modifier works on all thirds @@ -4815,5 +4815,3 @@ pl 15.hwn1 pl 15.jcn4 - direct #... to scm parser (Thanks to Gary Houston) - - diff --git a/Documentation/misc/CHANGES-1.4 b/Documentation/misc/CHANGES-1.4 index af019b8376..d2a511822a 100644 --- a/Documentation/misc/CHANGES-1.4 +++ b/Documentation/misc/CHANGES-1.4 @@ -43,7 +43,7 @@ affects Scheme text markups). * Don't use stdin when no argument specified. -* Naming smobs -> grobs +* Naming smobs -> grobs * Bugfix: ledger lines on easy-notation note heads. @@ -154,4 +154,3 @@ crash. * Bugfix: fixed the problem where dots clash with other notes (Timothy S. Nelson) - diff --git a/Documentation/misc/CHANGES-1.5 b/Documentation/misc/CHANGES-1.5 index 5f42581186..dc37b13c42 100644 --- a/Documentation/misc/CHANGES-1.5 +++ b/Documentation/misc/CHANGES-1.5 @@ -19,11 +19,11 @@ 1.5.22.hwn1 =========== -* Dashed slur bugfix. +* Dashed slur bugfix. * GUILE 1.4 compatibility. - + 1.5.22 ====== @@ -81,7 +81,7 @@ abc2ly fixes: ========== * etf2ly robustness fixes - + * Rewrote outputting backend. Now uses GUILE modules. * Line breaking bugfix. @@ -161,7 +161,7 @@ clefs name characters have in default text fonts. Luckily, textrace * Remove C++ version of midi2ly -* Inline Grob::parent_l (Axis), String::String() speedup 2 % +* Inline Grob::parent_l (Axis), String::String() speedup 2 % * First try at Sketch (sketch.sourceforge.net) output. @@ -304,7 +304,7 @@ music property. * Bugfixes: add-html-footer.py and @MAILADDRESS@. * Some website related fixes (thanks Tiggr). - + * Ugly hack in add-html-footer for disabling tutorial and refman links in sidebar. @@ -356,7 +356,7 @@ work with -O2 yet. add Translator::{name,description} * Junk STL implementation of Scheme_hash_table in favor of GUILE -hashtables with automatic resizing. +hashtables with automatic resizing. 1.5.12.jcn2 @@ -453,8 +453,8 @@ and spacing not necessary in font-locking. where @WEB-TITLE@ is not defined. * Bugfix: stepmake: don't go building executables all over the place, -if NAME is set in environment. Some cleanups. - +if NAME is set in environment. Some cleanups. + * add-html-footer.py: remove href to self. Substitute @at-variables@ defined in html comments. Any occurrence of @@ -473,11 +473,11 @@ in the same html page with `bar'. ========== * Optimizations: - - speed up Rational::operator+= + - speed up Rational::operator+= - speed up Rational::compare () - - don't store origins if point-and-click not set. + - don't store origins if point-and-click not set. -* \figures input mode: \figures { <4 6+> <3- 5>2. } +* \figures input mode: \figures { <4 6+> <3- 5>2. } * Obscure bugfix: call kpsewhich with --format for mfplain. @@ -549,7 +549,7 @@ spacing that much. 1.5.6.jcn2 ========= - + * Use Cygwin included Python; drop Windows Python and workarounds. * Include make/lilypond.mandrake.spec (unchecked!) and README.mandrake. @@ -561,7 +561,7 @@ missing from 1.5.5 distribution. * Add short crescendo bug to input/bugs. -* Update and bit more verbose download instructions in INSTALL, +* Update and bit more verbose download instructions in INSTALL, fix some links on ftp.lilypond.org. @@ -582,7 +582,7 @@ Changes were made to - Simple_spacer, New_spacing_spanner: only look at non-loose columns. - Line_of_score: set horizontal positions for loose columns. - + 1.5.6 ===== @@ -605,7 +605,7 @@ Changes were made to * added enhanced mensural minima/fusa noteheads (30 degrees rhomb style); the former 45 degrees quadratic shapes are now available - under notehead style "neo_mensural"; [WARNING: FONT UPDATE] + under notehead style "neo_mensural"; [WARNING: FONT UPDATE] * minor ancient font corrections (in particular, enhanced set_char_box() arguments). @@ -651,7 +651,7 @@ Changes were made to * New_spacing_spanner: revised spacing generation. -* Default neutral direction set to down. +* Default neutral direction set to down. * Junk hash table from flowerlib @@ -794,7 +794,7 @@ the note before a grace and stopGraceMusic - various engraver fixes to deal with the fact that the main-time-moment may remain the same during several steps. - - Change column creation logic in score-engraver. + - Change column creation logic in score-engraver. * Bugfix: don't crash when \name not set in \translator block. @@ -812,7 +812,7 @@ them (thanks to Juergen Reuter) 1.4.4.jcn3 ========== - + TODO: look at other filledbox'es (stafflines and barlines don't match up). * Testing code off by default. On: -e "(define ps-testing 1)" -fps @@ -826,4 +826,3 @@ output for real testing. - Stems reach to top (or bottom) of beam. - Beam uses correct stem thickness (only right beams, left TODO). - testing code in effect: only outlines are drawn. - diff --git a/Documentation/misc/ChangeLog-1.5 b/Documentation/misc/ChangeLog-1.5 index e8a9939941..80cc56efca 100644 --- a/Documentation/misc/ChangeLog-1.5 +++ b/Documentation/misc/ChangeLog-1.5 @@ -1,6 +1,6 @@ 2002-08-19 Han-Wen Nienhuys - * VERSION: release 1.6.0 + * VERSION: release 1.6.0 * make/lilypond.redhat.spec.in: don't dist input/ separately anymore @@ -14,7 +14,7 @@ * lily/self-aligment-interface.cc (centered_on_parent): only return center if extents not empty. - * scm/music-functions.scm (unfold-repeats): typo, + * scm/music-functions.scm (unfold-repeats): typo, * mf/feta-bolletjes.mf: use resolution independent variables. @@ -69,18 +69,18 @@ * input/test/spacing-regular.ly: * lily/regular-spacing-engraver.cc: Remove. - + 2002-08-19 Han-Wen Nienhuys * input/mutopia/J.S.Bach/wtk1-fugue2.ly: staff switch fixes. * Documentation/user/lilypond-book.itely: small cleanups - * Documentation/user/*.itely: fix overfull hboxes. + * Documentation/user/*.itely: fix overfull hboxes. 2002-08-19 Jan Nieuwenhuizen - * Documentation/user/tutorial.itely (A piano excerpt): + * Documentation/user/tutorial.itely (A piano excerpt): * Documentation/user/introduction.itely (Introduction): Typo fix. * input/test/header-ifelse.ly: Bugfix: call numbers->string only @@ -88,14 +88,14 @@ * input/test/trills.ly: Comment out \comma. - * lily/tab-note-heads-engraver.cc: + * lily/tab-note-heads-engraver.cc: * scm/translator-property-description.scm: Add tablatureFormat. * input/test/staff-bracket.ly: Update. * lily/regular-spacing-engraver.cc: Add regular-distance-to. - * input/test/orchestscore.ly: + * input/test/orchestscore.ly: * input/test/part-combine-moments.ly: * input/test/part-combine-staff.ly: markScriptPadding -> RehearsalMark #'padding. @@ -115,14 +115,14 @@ * lily/mensural-ligature-engraver.cc: * scm/grob-property-description.scm: Add head-width, join-left, primitive. - - * lily/mensural-ligature.cc: - * lily/ligature-bracket.cc: - * scm/grob-property-description.scm: + + * lily/mensural-ligature.cc: + * lily/ligature-bracket.cc: + * scm/grob-property-description.scm: * lily/ligature-head.cc: Add ligature-primitive-callback. - * input/test/beam-control.ly: + * input/test/beam-control.ly: * input/test/bar-script-visibility.ly: Update. * lily/music.cc (internal_set_mus_property): [!NDEBUG] Remove, use @@ -145,14 +145,14 @@ 2002-08-18 Rune Zedeler * mf/feta-klef.mf: (another) white pixels bug in g-clef fixed. - + 2002-08-18 Jan Nieuwenhuizen * lily/include/lily-guile.hh (LY_DEFINE_NOARGS): Remove. * lily/grob-property.cc (internal_set_grob_property): Revert oops. - * lily/input.cc (message): + * lily/input.cc (message): * flower/warn.cc (message): Flush output. * po/lilypond.pot: Run make po-replace. @@ -160,10 +160,10 @@ * Documentation/user/GNUmakefile (LILYPOND_BOOK_FLAGS): be anal with type checks. - * Documentation/GNUmakefile (LILYPOND_BOOK_FLAGS): + * Documentation/GNUmakefile (LILYPOND_BOOK_FLAGS): * input/regression/GNUmakefile (LILYPOND_BOOK_FLAGS): - * input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): - * Documentation/user/invoking.itexi: + * input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): + * Documentation/user/invoking.itexi: * lily/scm-option.cc: * lily/main.cc: Debugging options: ly-set-option (was: set-lily-option). @@ -191,7 +191,7 @@ * ly/engraver-init.ly: s/extraverticalExtent/extraVerticalExtent/. - + 2002-08-18 Jan Nieuwenhuizen * lily/parser.yy (assignment, Simple_music): Warning message fix. @@ -203,7 +203,7 @@ internal_get_grob_property): [!NDEBUG] Remove, use abort instead of assert; we always want this functionality. Uniformise warning message. - + * lily/main.cc (main, main_prog): Bugfix: move exit-upon-files back, until after evaluating init_scheme_code. @@ -217,7 +217,7 @@ 2002-08-18 Han-Wen Nienhuys - * VERSION: 1.5.74 released + * VERSION: 1.5.74 released * lily/break-substitution.cc (fast_fubstitute_grob_list): use realloc() @@ -254,7 +254,7 @@ have many # constructs. * lily/source-file.cc (init_port): add an SCM port to the - sourcefile as well. + sourcefile as well. * lily/include/input-file-results.hh: move from file-results. Rename Input_file_settings to Input_file_results. @@ -272,7 +272,7 @@ * stepmake/stepmake/documentation-targets.make (footify): must depend on all .html files, otherwise rebuilds are broken due to - the time stamps + the time stamps * ly/declarations-init.ly (noBreak): set penalty to 10001 (> 10000). @@ -287,21 +287,21 @@ * scm/pdf.scm, pdftex.scm: pdftex updates * scripts/ly2dvi.py: pdflatex support - + 2002-08-16 Jan Nieuwenhuizen - * Documentation/windows/installing.texi: Include info from Wiki. + * Documentation/windows/installing.texi: Include info from Wiki. 2002-08-16 Mats Bengtsson * scripts/lilypond-book.py (output_dict): Replace - \includegraphics{xxx.eps} -> \includegraphics{xxx} to + \includegraphics{xxx.eps} -> \includegraphics{xxx} to simplify for pdflatex users (makes no difference to latex users). 2002-08-16 Jan Nieuwenhuizen - * Documentation/index.texi: - * Documentation/windows/compiling.texi: + * Documentation/index.texi: + * Documentation/windows/compiling.texi: * Documentation/windows/installing.texi: Update to reflect LilyPond's inclusion into Cygwin. @@ -311,7 +311,7 @@ * scm/grob-property-description.scm (height-limit, ratio): Add. - * lily/slur.cc: + * lily/slur.cc: * scm/grob-description.scm (Slur, PhrasingSlur): Move height-limit and ratio out of details. @@ -345,12 +345,12 @@ encapsulate file settings in a class, Input_file_settings. * lily/scores.cc: new function ly_set_point_and_click_x - + * Documentation/topdocs/README.texi (Top): add note about xdelta * Documentation/topdocs/INSTALL.texi (Top): move kpathsea to problems section. - + 2002-08-14 Jan Nieuwenhuizen * scripts/ly2dvi.py: Remove debug printing. @@ -366,7 +366,7 @@ * scm/output-lib.scm: Support of hammers and pulls in tablature -- Hammers and pulls are inserted exactly like slurs, and a "H" or - a "P" is added over the slur as needed. + a "P" is added over the slur as needed. * ./input/test/tablature-hammer.ly: example of hammer, pull and legato in a tablature. @@ -385,18 +385,18 @@ * Documentation/user/lilypond.tely: Add dir entries for executables. - * Documentation/user/converters.itely: + * Documentation/user/converters.itely: * Documentation/user/invoking.itexi: Fix `invocation' node names, in line with standard dir entries. * Documentation/user/convert-ly.itexi * Documentation/user/ly2dvi.itexi: Remove. - + * scripts/ly2dvi.py: Add pseudo-filter (and stdout output) support. - * lily/main.c: - * lily/paper-score.cc : + * lily/main.c: + * lily/paper-score.cc : * lily/gourlay-breaking.cc: Write info to stderr. * buildscripts/help2man.pl: Update to latest version from Debian. @@ -407,7 +407,7 @@ 2002-08-14 Mats Bengtsson - * Documentation/user/{tutorial.itely, introduction.itely}: + * Documentation/user/{tutorial.itely, introduction.itely}: Small fixes. 2002-08-13 Jan Nieuwenhuizen @@ -452,7 +452,7 @@ * cygwin/README.in: New file. - * input/sondag-morgen/GNUmakefile: + * input/sondag-morgen/GNUmakefile: * input/mutopia/R.Schumann/GNUmakefile: New file. * scm/grob-property-description.scm (beamed-minimum-free-lengths): @@ -471,7 +471,7 @@ (beamed-minimum-free-lengths): (beamed-extreme-minimum-free-lengths): New property. - * input/regression/beam-default-lengths.ly: + * input/regression/beam-default-lengths.ly: * input/regression/beam-shortened-lengths.ly: New file. * lily/stem.cc (get_stem_info): New function. @@ -487,7 +487,7 @@ * input/sondag-morgen/GNUmakefile (examples): add file * input/mutopia/R.Schumann/GNUmakefile (examples): add file - + * lily/lily-guile.cc (to_dir): return CENTER if not a direction. * lily/include/grob.hh: remove remove_grob_property() @@ -500,7 +500,7 @@ * input/test/ : small convert-ly mishaps. - * Documentation/user/preface.itely: small bits + * Documentation/user/preface.itely: small bits * Documentation/user/introduction.itely: add sectioning @@ -508,14 +508,14 @@ * lily/stem.cc (get_default_stem_end_position): use beam_count - 1 as index; this fixes too short forced stem directions. - (calc_stem_info): various minute bugfixes. + (calc_stem_info): various minute bugfixes. * lily/gourlay-breaking.cc (combine_demerits): set uniform tightness constraint back to one. This fixes Baerenreiter sarabande layout. * input: some fixes. Add \version to all files. - + * lily/stem.cc (calc_stem_info): Use get_direction_beam_count. * lily/beam.cc (get_direction_beam_count): New function. @@ -534,7 +534,7 @@ * input/test/add-text-script.ly: Bugfix. How did this ever work? - * Documentation/windows/installing.texi: + * Documentation/windows/installing.texi: * Documentation/windows/compiling.texi: * cygwin/README: Update to reflect new binary release setup and build instructions. @@ -568,14 +568,14 @@ `ly2dvi foo/foo.ly' when foo.ly includes other files from directory foo. Add short option alias '-p' for --pdf. - * input/test/trills.ly: - * input/test/preset-extent.ly: + * input/test/trills.ly: + * input/test/preset-extent.ly: * scm/grob-property-description.scm: more extent renaming. 2002-08-09 Han-Wen Nienhuys * lily/parse-scm.cc (protected_ly_parse_scm): compatibility with - CVS GUILE + CVS GUILE * input/test/preset-extent.ly (texidoc): added file. @@ -587,13 +587,13 @@ * lily/main.cc (main): Remove stale #ifdef for windows. - * stepmake/stepmake/python-module-rules.make: - * stepmake/stepmake/python-module-vars.make: + * stepmake/stepmake/python-module-rules.make: + * stepmake/stepmake/python-module-vars.make: * stepmake/stepmake/shared-library-vars.make: Add Cygwin support. * stepmake/stepmake/generic-vars.make: * cygwin/GNUmakefile: Fix Cygwin build detection. - + * stepmake/stepmake/shared-library-rules.make: Remove version juggling. * stepmake/stepmake/shared-library-targets.make: Default target @@ -603,21 +603,21 @@ from shared Cygwin library. 2002-08-08 Rune Zedeler - + * ly/property-init.ly: Added phrasingSlurUp, phrasingSlurDown and phrasingSlurBoth. * input/mutopia/R.Schumann/romanze-op28-2.ly: Added. * input/sondag-morgen/*: renamed files from input/SondagMorgen/* - + 2002-08-08 Han-Wen Nienhuys * lily/beam.cc (struct Int_set): typo. * mf/feta-beugel.mf (code): braces should start at 0, not 1. - * lily/include/lily-guile.hh (scm_int2num): guile 1.4 compatibility. + * lily/include/lily-guile.hh (scm_int2num): guile 1.4 compatibility. * scm/grob-description.scm (all-grob-descriptions): set X-offset-callbacks for TextScript @@ -651,14 +651,14 @@ * input/test/blank-notes.ly: new file * lily/note-head.cc (head_extent): robustness fix. - + * Documentation/user/preface.itely: add some more. 2002-08-04 Rune Zedeler * Documentation/user/refman.itely * Documentation/user/internals.itely: Documented "Current" property. - + 2002-08-04 Han-Wen * lily/lily-guile.cc: change gh_str02scm to scm_makfrom0str. @@ -666,7 +666,7 @@ 2002-08-04 Werner Lemberg * tex/lilyponddefs.tex: s/filllastpage/lastpagefill/. - + * Documentation/user/refman.itely: Document it. 2002-08-04 Han-Wen @@ -679,10 +679,10 @@ * tex/lilyponddefs.tex: add filllastpage support. - * GNUmakefile.in: barf if config.h is older than configure. + * GNUmakefile.in: barf if config.h is older than configure. + + * VERSION: released 1.5.71 - * VERSION: released 1.5.71 - * lily/beam.cc (consider_auto_knees): rewrite function; now only consider horizontal knees. Fixes input/bugs/bizzarre-beam.ly @@ -730,11 +730,11 @@ "minimumFret". * scm/translator-property-description.scm: Add "minimumFret" - + * mf/feta-eindelijk.mf: Changed layout of 16th and shorter rests to match the 8th rest. slanted 8th rest a bit more. WARNING: 8th rest and classical quarter rest exchanged. - + 2002-08-01 Mats Bengtsson * scm/grob-description.scm (RehearsalMark): Add baseline-skip to @@ -751,7 +751,7 @@ 2002-07-31 Han-Wen Nienhuys - * lily/parser.yy (chord_notes): typo. + * lily/parser.yy (chord_notes): typo. * scm/music-functions.scm (unfold-repeats): bugfix @@ -761,10 +761,10 @@ * lily/translator-group (find_existing_translator): If n=="Current", return this context. - + * lily/rest.cc: * lily/time-signature.cc: spacing for even number of staff lines. - + 2002-07-31 Han-Wen * input/bugs/: remove various files. @@ -780,7 +780,7 @@ * ly/property-init.ly: Use "Current" context in the accidental macros. TODO: Do the same in some of the other macros? - + * scm/output-lib.scm (tablature-stem-attachment-function): add duration argument. Now the function can be called again :-) @@ -798,16 +798,16 @@ to SCM port for parser. 2002-07-28 Rune Zedeler - + * lily/note-spacing.cc (stem_dir_correction) Add property knee_spacing_correction controlling the amount of optical spacing added to knees. - + 2002-07-28 Glen Prideaux - - * lily/syllable-group.cc (set_lyric_align): Only fiddle with - alignment if a note has more than a single lyric so single stanza - songs are aligned correctly. + + * lily/syllable-group.cc (set_lyric_align): Only fiddle with + alignment if a note has more than a single lyric so single stanza + songs are aligned correctly. 2002-07-28 Han-Wen @@ -827,7 +827,7 @@ 2002-07-26 Jan Nieuwenhuizen * VERSION: 1.5.70 released. - + * Documentation/user/lilypond-book.itely (Insert music snippets into your texts using lilypond-book): Briefly mention HTML documents. Started rewrite, but lost inspiration. @@ -837,7 +837,7 @@ * lily, flower: Ran buildscripts/ontgaar.py. See also http://lilypond.org/wiki/?CodingStandards. - + * Documentation/GNUmakefile: Remove regression-test stuff. (deep-WWW-clean): Remove wiki-dump. Fixes web-clean target. @@ -864,16 +864,16 @@ * Documentation/user/internals.itely: move output-formats doco to WikiWiki. - + 2002-07-25 Han-Wen - + * po/fr.po: update from TP * input/template/GNUmakefile (TITLE): add lysdoc target for the templates * Documentation/user/introduction.itely (Introduction): finish - introduction + introduction 2002-07-25 Han-Wen Nienhuys @@ -883,7 +883,7 @@ 2002-07-25 Jan Nieuwenhuizen * buildscripts/ontgaar.py: get_music () -> get_pending_events (). - + * buildscripts/ontgaar.py: New file. * scm/grob-property-description.scm (conditional-elements): Add @@ -930,7 +930,7 @@ * lily/accidental-placement.cc (extent_callback): remove function (position_accidentals): do nothing if not live. Use accidental-grobs property i.s.o. accidentals, to maintain - proper typing. + proper typing. 2002-07-24 Jan Nieuwenhuizen @@ -954,44 +954,44 @@ without overriding prefix. * aclocal.m4: Regenerate. - + * stepmake/aclocal.m4: Don't expand $prefix: fixes install with other $prefix. - * cygwin/GNUmakefile: - * ly/GNUmakefile: - * python/GNUmakefile: - * make/GNUmakefile: - * mf/GNUmakefile: + * cygwin/GNUmakefile: + * ly/GNUmakefile: + * python/GNUmakefile: + * make/GNUmakefile: + * mf/GNUmakefile: * scm/GNUmakefile: * tex/GNUmakefile: use local_package_datadir iso datadir. * make/substitute.make (ATVARIABLES): Add local_lilypond_datadir. * aclocal.m4: Regenerate. - + * config.hh.in: * config.make.in: * stepmake/aclocal.m4: Cleanups and more conventional naming for datadir ($prefix/share), package_datadir ($prefix/$package), and local_package_datadir ($prefix/$package/$version). - + * make/lilypond-vars.make: * scripts/ly2dvi.py: * scripts/lilypond-book.py: * scripts/mup2ly.py: * scripts/midi2ly.py: use local_package_datadir iso datadir. - + * GNUmakefile.in: build_datadir without version. - + * lily/main.cc: Datadir cleanup. - * lily/text-item.cc (lookup_text): - * lily/music-output-def.cc (print_smob): + * lily/text-item.cc (lookup_text): + * lily/music-output-def.cc (print_smob): * lily/mensural-ligature.cc (brew_molecule): * lily/beam-quanting.cc (score_slopes_dy, score_forbidden_quants): Fix warnings. - + 2002-07-23 Jan Nieuwenhuizen * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Warn when not @@ -1025,7 +1025,7 @@ * lily/separating-group-spanner.cc (find_rods): use conditional_width(). - + * scm/sketch.scm: fix roundfilledbox definition * lily/lily-guile.cc (robust_list_ref): be sensible with negative @@ -1054,7 +1054,7 @@ 2002-07-22 Han-Wen * VERSION: 1.5.69 released - + * lily/accidental-placement.cc (position_accidentals): document two bugcases. @@ -1062,14 +1062,14 @@ 2002-07-22 Jan Nieuwenhuizen - * input/regression/abe.ly: + * input/regression/abe.ly: * input/test/transposing.ly: Remove mention of mudela. * scripts/lilypond-book.py (make_pixmap): Don't use quiet_system, ie, don't redirect PNG output to /dev/null. Fixes lys-to-tely documents. - * input/test/mark.ly: + * input/test/mark.ly: * Documentation/user/refman.itely: Re-enable \mark #'() example. * lily/parser.yy: Revert to MARK scalar. @@ -1077,7 +1077,7 @@ 2002-07-21 Han-Wen * lily/accidental.cc (accurate_boxes): add function to represent - flat with 2 boxes. Improves flat-flat accidental spacing. + flat with 2 boxes. Improves flat-flat accidental spacing. * lily/accidental-placement.cc (stagger_apes): try to arrange accs in a C form, with the top accidental closet to the chord. @@ -1106,9 +1106,9 @@ * input/allfontsize.ly, size*.ly: New files, moved from input/regression. - + * input/font20.ly, font-body.ly: New files, moved from input/test. - + * input/font*.ly: New files, moved from input/test. * input/test/*.ly: Remove empty files, fix broken ones. @@ -1119,7 +1119,7 @@ * Documentation/regression-test.tely: Comment-out, add obsolete-marker and url to regression-test-dir. - * input/test/GNUmakefile: + * input/test/GNUmakefile: * input/regression/GNUmakefile: Add rule for lys-to-tely.py. * input/regression/+.ly: @@ -1152,20 +1152,20 @@ 2002-07-18 Jan Nieuwenhuizen * debian/GNUmakefile: Remove lilypond.links. - + * debian/: Debian patch (Anthony Fok). - + * debian/lilypond.links: Remove, as per Anthony's request. * aclocal.m4: Regenerate. - + * stepmake/aclocal.m4: Add --with-kpathsea-include, --with-kpathsea-lib options. * scripts/mup2ly.py: Cut-n-paste include missing lilylib. - * stepmake/stepmake/compile-vars.make: - * stepmake/stepmake/executable-rules.make: + * stepmake/stepmake/compile-vars.make: + * stepmake/stepmake/executable-rules.make: * stepmake/stepmake/python-module-rules.make: * stepmake/stepmake/shared-library-rules.make: Use ALL_LDFLAGS, to guard agains user override of LDFLAGS. @@ -1178,7 +1178,7 @@ * cygwin: New directory. Moved Cygwin stuff from Documentation/windows. - + * Documentation/windows/fix-suffixes.sh: * buildscripts/walk.sh: Junk. @@ -1186,30 +1186,30 @@ * buildscripts/walk.sh: Remove. - * stepmake/stepmake/topdocs-targets.make: - * stepmake/stepmake/help2man-rules.make: - * stepmake/stepmake/generic-vars.make: - * stepmake/make/stepmake.make: - * Documentation/user/GNUmakefile: - * make/stepmake.make: - * make/lilypond-vars.make: - * GNUmakefile.in: + * stepmake/stepmake/topdocs-targets.make: + * stepmake/stepmake/help2man-rules.make: + * stepmake/stepmake/generic-vars.make: + * stepmake/make/stepmake.make: + * Documentation/user/GNUmakefile: + * make/stepmake.make: + * make/lilypond-vars.make: + * GNUmakefile.in: * stepmake/aclocal.m4: Remove builddir cruftyness. - + * stepmake/stepmake/c++-rules.make: Use ALL_CXXFLAGS, to guard agains user override of CXXFLAGS. - + * stepmake/stepmake/c++-vars.make (ALL_CXXFLAGS): Include CXXFLAGS. - + * stepmake/stepmake/c-rules.make: Use ALL_CFLAGS, to guard against user override of CFLAGS. - + * stepmake/stepmake/c-vars.make (ALL_CFLAGS): Include CFLAGS. 2002-07-17 Han-Wen * GNUmakefile.in: distribute lexer-gcc-3.1.sh as well - + * lily/music.cc (LY_DEFINE): change ly-set-mus-property to ly-set-mus-property! @@ -1263,7 +1263,7 @@ stems. * lily/accidental-placement.cc (position_accidentals): add padding - property. Increase default setting to 0.2. + property. Increase default setting to 0.2. 2002-07-15 Han-Wen @@ -1272,7 +1272,7 @@ * lily/separating-line-group-engraver.cc (finalize): don't replace right-items, but add to list. This fixes a bug when a staff ends with cross-staff voice switching away. - + 2002-07-14 Han-Wen * input/mutopia/GNUmakefile: move mutopia/ to input/mutopia/ @@ -1282,14 +1282,14 @@ * lily/beam.cc: use common refpoints throughout. This fixes many cross staff issues. - + * lily/paper-column.cc (before_line_breaking): bug fix. * lily/volta-engraver.cc (process_music): do something sensible if - no staffs found. + no staffs found. * scripts/lilypond-book.py (make_pixmap): opps. Do png conversion - only once. + only once. * Documentation/user/refman.itely (Global layout): made section on global layout, added spacing documentation. @@ -1315,7 +1315,7 @@ 2002-07-13 Han-Wen * VERSION: 1.5.67 released. - + * lily/beam.cc (calc_stem_y): fix beams on quarter notes. * lily/stem-tremolo.cc (brew_molecule): add code for stem tremolos. @@ -1329,7 +1329,7 @@ * Documentation/user/introduction.itely: misc fixes. * scripts/ly2dvi.py (run_latex): show latex error log. Ask for - bugreport if lilypond is killed by a signal. + bugreport if lilypond is killed by a signal. * input/regression/beam-funky.ly: new file @@ -1357,7 +1357,7 @@ * lily/forbid-break-engraver.cc (start_translation_timestep): skip grace notes for break-forbidding. Breaks during grace notes are - handled by Bar_engraver. + handled by Bar_engraver. * lily/unfolded-repeat-iterator.cc: Reimplement Unfolded_repeat_iterator, Volta_repeat_iterator using @@ -1392,13 +1392,13 @@ 2002-07-10 Jan Nieuwenhuizen * config.hh.in: Add HAVE_SSTREAM. - + * configure.in: Add check for sstream header. 2002-07-09 Mats Bengtsson - - * flower/source-file.cc: Fix compatibility with older g++. - + + * flower/source-file.cc: Fix compatibility with older g++. + 2002-07-09 Jan Nieuwenhuizen * input/twinkle.ly: Bugfix: no automaticMelismata. @@ -1418,13 +1418,13 @@ partcombine and repeat * lily/chord-tremolo-iterator.cc (Chord_tremolo_iterator): copy - factor too. + factor too. 2002-07-07 Han-Wen * mutopia/J.S.Bach/pa.ly: remove - * mutopia/J.S.Bach/Duette/: remove - + * mutopia/J.S.Bach/Duette/: remove + * scm/font.scm (change-rhs-size): add support for "paper19.ly" * VERSION: 1.5.66 released @@ -1459,7 +1459,7 @@ subdivideBeams-fixes. * scm/drums.scm: Small changes/fixes in instruments and maps - + 2002-07-05 Jan Nieuwenhuizen * lexer-gcc-3.1.sh: Fixes and more comments. @@ -1483,7 +1483,7 @@ * flower/include/parray.hh: * flower/include/dictionary.hh: * flower/include/array.icc: - * flower/string.cc: + * flower/string.cc: * flower/source-file.cc: * flower/getopt-long.cc: gcc-3.1 fixes. @@ -1498,7 +1498,7 @@ * lexer-gcc-3.1.sh: New file. * aclocal.m4: regenerate. - + * stepmake/aclocal.m4: Version compare fix. 2002-07-05 Han-Wen @@ -1514,16 +1514,16 @@ 2002-07-04 Han-Wen Nienhuys - * VERSION: 1.5.65 released. - + * VERSION: 1.5.65 released. + * scripts/lilypond-book.py: patches by Tom Cato Amundsen. Adds support for the columnsep when using the geometry package. - + 2002-07-04 Jan Nieuwenhuizen * scm/grob-property-description.scm (minimum-space-pair): Remove. - * Documentation/windows/README: + * Documentation/windows/README: * Documentation/windows/guile-1.5.6-1.5.6.jcn2.patch: * Documentation/windows/changelog: New file. @@ -1536,7 +1536,7 @@ try hash tables for mutable properties. * lily/align-interface.cc: remove aligned-interface and props - minimum-space-pair extra-space + minimum-space-pair extra-space * lily/grob-property.cc: new file move grob prop handling here. @@ -1561,7 +1561,7 @@ * Documentation/user/bugs.itexi: move to introduction, remove. * Documentation/user/*.itexi: general carnage/cleanage. - + * Documentation/user/internals.itely: split most of file into internal documentation (.scm and .cc) @@ -1613,7 +1613,7 @@ * Documentation/user/tutorial.itely (Fine tuning a piece): more tut. * scm/grob-description.scm (all-grob-descriptions): sort list - + 2002-06-27 Jan Nieuwenhuizen * Documentation/user/tutorial.itely (A piano excerpt): Bugfix: @@ -1672,7 +1672,7 @@ 2002-06-23 Chris Jackson * lily/text-spanner.cc (setup_pedal_bracket): - * lily/piano-pedal-engraver.cc (create_bracket_grobs): + * lily/piano-pedal-engraver.cc (create_bracket_grobs): Fix the lengths of mixed-style piano pedal brackets. 2002-06-23 Jan Nieuwenhuizen @@ -1739,9 +1739,9 @@ 2002-06-20 Jan Nieuwenhuizen - * lily/fingering-engraver.cc (make_script): - * lily/script-engraver.cc (process_music): - * lily/text-engraver.cc: + * lily/fingering-engraver.cc (make_script): + * lily/script-engraver.cc (process_music): + * lily/text-engraver.cc: (process_acknowledged_grobs): Remove hard coded script-priority. * flower/warn.cc: Cleanup. @@ -1757,31 +1757,31 @@ * lily/include/lily-guile.hh: Only include config.h if necessary. * Changelog: cvs changes ml archive test #8. - + * lily/slur-engraver.cc: Layout fix. 2002-06-19 Han-Wen Nienhuys * ly/engraver-init.ly (RhythmicStaffContext): add - Dot_column_engraver, resurrect barlines - + Dot_column_engraver, resurrect barlines + * VERSION: 1.5.62 released. * lily/engraver-group-engraver.cc (do_announces): rename create_grobs () to process_acknowledged_grobs(). * lily/grob.cc (programming_error): add programming_error with - origin location. + origin location. * lily/tuplet-bracket.cc (parallel_beam): robustness check, don't - fail if a beam doesn't have stems. + fail if a beam doesn't have stems. * lily/engraver-group-engraver.cc (do_announces): scary change in calling convention of create_grobs(): no create_grobs() call before acknowledge_grobs(). * lily/sequential-music-iterator.cc (skip): add support for grace - notes. + notes. * lily/music.cc (Music): fix very subtle and nasty memory corruption bug. Typical symptom: "programming_error: Rhythmic_req @@ -1793,7 +1793,7 @@ * ly/engraver-init.ly (RhythmicStaffContext): add Dot_column_engraver - + * lily/parser.yy: various protection fixes. Less objects are now overprotected. @@ -1819,9 +1819,9 @@ * aclocal.m4: * autogen.sh: Regenerate. - - * Documentation/topdocs/INSTALL.texi: - * configure.in: + + * Documentation/topdocs/INSTALL.texi: + * configure.in: * stepmake/configure.in: * stepmake/aclocal.m4: Revert autoconf upgrade. Autoconf 2.53 has a serious bug wrt AC_CONFIG_AUX_DIR (reported). Creating @@ -1832,14 +1832,14 @@ 2002-06-18 Han-Wen Nienhuys * lily/parser.yy (open_request_parens): add input locations to - open and close parens. + open and close parens. 2002-06-17 Chris Jackson * lily/tuplet-bracket.cc: - * lily/text-spanner.cc: - * lily/piano-pedal-engraver.cc: - * scm/grob-description.scm: + * lily/text-spanner.cc: + * lily/piano-pedal-engraver.cc: + * scm/grob-description.scm: * scm/grob-property-description.scm: Changed the edge-width property of brackets to edge-widen. Changed the sign of the left element of edge-widen so a pair of equal numbers produces @@ -1873,17 +1873,17 @@ * lily/lookup.cc (slur): Invoke bezier-bow. - * scm/tex.scm (bezier-bow): + * scm/tex.scm (bezier-bow): * scm/ps.scm (bezier-bow): Bezier sandwich with rounded endings (Previously named bezier-sandwich). - + * scm/tex.scm (bezier-sandwich): * scm/ps.scm (bezier-sandwich): Plain bezier sandwich. - * make/lilypond.mandrake.spec.in (post): - * make/lilypond.suse.spec.in (post): + * make/lilypond.mandrake.spec.in (post): + * make/lilypond.suse.spec.in (post): * make/lilypond.redhat.spec.in (post): Also remove parmesan fonts. - + * tex/lilyponddefs.tex: Uncomment feta character support. * Documentation/user/refman.itely (Pitches): Add espanol.ly @@ -1900,14 +1900,14 @@ (long-examples): Bugfix for --srcdir build. (top-web): Rewrite weblist find command. - * stepmake/bin/config.sub: + * stepmake/bin/config.sub: * stepmake/bin/config.guess: Update from latest autotools. * aclocal.m4: * autogen.sh: Regenerate. - - * configure.in: - * stepmake/configure.in: + + * configure.in: + * stepmake/configure.in: * stepmake/aclocal.m4: Run autoupdate. Creating ./configure now requires autoconf >= 2.50. @@ -1936,12 +1936,12 @@ to new $datadir convention (/). 2002-06-13 Han-Wen - + * VERSION: 1.5.61 released - + * Document/user/refman.itely: tablature doc and code updates by Jean-Baptiste Lamy - + * input/template/piano-dynamics.ly: bugfixes. * lily/key-engraver.cc (try_music): read request only once. Don't @@ -1956,7 +1956,7 @@ 2002-06-12 Jan Nieuwenhuizen - * stepmake/stepmake/generic-vars.make: + * stepmake/stepmake/generic-vars.make: * make/lilypond-vars.make: * GNUmakefile.in (builddir-setup): New setup for builddir run. Fixes LilyPond run from builddir for --srcdir builds. @@ -1990,7 +1990,7 @@ * GNUmakefile.in: Forward port: Add toplevel target install-html-doc. Bugfixes for --srcdir html-doc build. - + * make/lilypond-vars.make (LILYPOND_BOOK_INCLUDES): Forward port: Bugfix: Include $(builddir)/mf/out (was $(srcdir)/mf/out. @@ -2024,16 +2024,16 @@ add VerticalExtent -> verticalExtent rules. * lily/axis-group-engraver.cc: consistent case for - XxxxVerticalExtent properties. + XxxxVerticalExtent properties. * Documentation/user/refman.itely (Tuplets): update - tuplet-X-visibility properties. + tuplet-X-visibility properties. * input/test/defaultbars.ly: Corrected (thanks Mats) - + 2002-06-05 Han-Wen Nienhuys - * lily/beam.cc (shift_region_to_valid): fix stupido bug. + * lily/beam.cc (shift_region_to_valid): fix stupido bug. * buildscripts/lilypond-profile.sh: override settings if LILYPONDPREFIX is set. @@ -2066,8 +2066,8 @@ 2002-05-31 Han-Wen - * VERSION: 1.5.59 released - + * VERSION: 1.5.59 released + * scripts/musedata2ly.py (Parser.parse_note_line): add dots. Add notice that missing features are exercise for user. @@ -2086,23 +2086,23 @@ 2002-05-30 Han-Wen * lily/stem.cc (calc_stem_info): remove min_y member, rename - stuff. Remove kneeing stuff. + stuff. Remove kneeing stuff. * lily/beam.cc (brew_molecule): remove beam direction. Lots of twiddling 2002-05-29 Jan Nieuwenhuizen - * scm/sketch.scm: - * scm/ps.scm: - * scm/pdftex.scm: - * scm/pdf.scm: + * scm/sketch.scm: + * scm/ps.scm: + * scm/pdftex.scm: + * scm/pdf.scm: * scm/tex.scm: Add check for Guile-1.4.1. Guile includes patch-level of version in minor-version string. Arg. 2002-05-29 Han-Wen - * ly/engraver-init.ly (TabStaffContext): + * ly/engraver-init.ly (TabStaffContext): enable TabStaff by default. * Tablature support by Jean-Baptiste Lamy @@ -2112,14 +2112,14 @@ * config.hh.in: Remove duplicate DIR_DATADIR entry. * aclocal.m4: Regenerate. - + * stepmake/aclocal.m4: Append $FULL_VERSION to datadir. 2002-05-25 Heikki Junes * lilypond-mode.el: Added Deutsch notes and fixed "Quick notes". - * lilypond-mode.el: Write notes with fewer keystrokes trough a + * lilypond-mode.el: Write notes with fewer keystrokes trough a "Quick notes"-interface. 2002-05-26 Jan Nieuwenhuizen @@ -2147,7 +2147,7 @@ 2002-05-22 Han-Wen * VERSION: 1.5.58 - + * Documentation/user/refman.itely: Bugfix: add node Repeats and MIDI. Regenerate menu. Fix @end example. @@ -2161,12 +2161,12 @@ * lily/script.cc (before_line_breaking): postpone setting the X-parent of vertical scripts. This fixes the case of scripts on - chords with seconds + chords with seconds 2002-05-21 Han-Wen * scm/grob-description.scm: fix alignment of barnumber: make sure - it doesn't hit the G-clef. + it doesn't hit the G-clef. * input/mozart-hrn3-defs.ly (startGraceMusic): typo (it's startGraceMusic not startGraceContext). @@ -2189,13 +2189,13 @@ option. * lily/accidental.cc (brew_molecule): support for cautionary - accidentals. + accidentals. * lily/note-head.cc (internal_brew_molecule): warn if note head not found. * lily/time-signature.cc (special_time_signature): remove warning - about time signature. + about time signature. * lily/spacing-spanner.cc (musical_column_spacing): Prevent reverse springs by limiting fixed-note space. @@ -2266,7 +2266,7 @@ * stepmake/configure: * configure: Regenerate. - + * stepmake/stepmake/automatically-generated.sub.make: Keep original first line. @@ -2291,7 +2291,7 @@ * Documentation/windows/GNUmakefile: Avoid collapsed directory constructs '//'. - + * stepmake/bin/install-dot-exe.sh: Filter collapsed directory constructs '//' from arguments. @@ -2301,12 +2301,12 @@ * lily/lily-guile.cc (init_functions): add ly-verbose function. - * lily/main.cc (setup_paths): remove LILYINCLUDE support. + * lily/main.cc (setup_paths): remove LILYINCLUDE support. * flower/include/{pointer,tuple}*: removed. * VERSION: released 1.5.56 - + * scm/music-functions.scm (check-start-chords): function to check for chords without \context. Apply automatically from parser. @@ -2315,7 +2315,7 @@ * lily/bar-line.cc: remove index entries. Texinfo can't handle : in index entries. - * scm/output-lib.scm: fix ez notation stems. + * scm/output-lib.scm: fix ez notation stems. * lily/paper-outputter.cc: various fixes to speed up compilation. @@ -2330,7 +2330,7 @@ * stepmake/bin/install-sh: Include latest from libtool. - * stepmake/configure: + * stepmake/configure: * configure: Regenerate. * config.make.in: Remove dead variables. Add OPTIONAL/REQUIRED lists. @@ -2348,17 +2348,17 @@ 2002-05-16 Han-Wen * lily/score-engraver.cc (typeset_all): sanity check for items - that are Y parent to spanner. + that are Y parent to spanner. * lily/piano-pedal-engraver.cc (create_bracket_grobs): fix broken pedal spanners. 2002-05-15 Han-Wen Nienhuys - * lily/*.cc: remove as many iostream use as possible. + * lily/*.cc: remove as many iostream use as possible. * flower/ : remove text-db, text-stream, data-file. - + 2002-05-15 Han-Wen * scripts/lilypond-book.py: add --no-music option: strip all blocks. @@ -2378,7 +2378,7 @@ * lily/parser.yy (My_lily_parser): comment out code. (Causes problems with recent bison releases). - * make/lilypond.redhat.spec.in: add pfa fonts to X. + * make/lilypond.redhat.spec.in: add pfa fonts to X. 2002-05-07 Heikki Junes @@ -2418,7 +2418,7 @@ * lily/stem-engraver.cc (acknowledge_grob): X_AXIS Parent of stem-tremolo is stem now. - * input/mozart-hrn*.ly: many corrections. + * input/mozart-hrn*.ly: many corrections. * lily/dynamic-engraver.cc (acknowledge_grob): add Scripts to support for dynamic scripts. @@ -2446,7 +2446,7 @@ 2002-05-02 Han-Wen - * lily/slur.cc (add_column): allow slur over rest. + * lily/slur.cc (add_column): allow slur over rest. 2002-04-27 Han-Wen @@ -2456,7 +2456,7 @@ * mf/feta-nummer.mf: scalability fixes. - * mf/feta-nummer-code.mf: fixes for 5, 8. + * mf/feta-nummer-code.mf: fixes for 5, 8. * mf/feta-klef.mf: G clef fixes. @@ -2469,7 +2469,7 @@ 2002-04-24 Jan Nieuwenhuizen - * Documentation/user/lilypond-book.itely: + * Documentation/user/lilypond-book.itely: * scripts/lilypond-book.py: Add options [no]indent, linewidth and noinline. @@ -2490,15 +2490,15 @@ * VERSION: 1.5.54 released - * mf/feta-nummer-code.mf (code): tweaks for three, fixes for 6 - bulb. + * mf/feta-nummer-code.mf (code): tweaks for three, fixes for 6 + bulb. * Documentation/index.texi: add PDF links. * Documentation/user/GNUmakefile (PDF_FILES): add PDF files to website. * lily/system-start-delimiter-engraver.cc (acknowledge_grob): - compare #'glyph as strings. + compare #'glyph as strings. * scripts/lilypond-book.py: fix by Mats. Try to import pre if available. @@ -2511,12 +2511,12 @@ heads too. * lily/accidental-placement.cc (position_accidentals): First - determine refpoints, only then determine extents. + determine refpoints, only then determine extents. 2002-04-22 Han-Wen Nienhuys * lily/accidental-placement.cc (position_accidentals): use all - note heads for note head-skyline. + note heads for note head-skyline. * scripts/lilypond-book.py (re_dict): remove all *? regexps. @@ -2547,7 +2547,7 @@ * lily/misc.cc: remove quantise_iv() * lily/*.cc: pass read-only arrays by reference. - + * lily/grob.cc (common_refpoint_of_array): new function. Try to use common_refpoint_of_{array, list} when possible. @@ -2570,23 +2570,23 @@ of reformatting * lily/new-accidental-engraver.cc (acknowledge_grob): Work - together with new accidental-interface. + together with new accidental-interface. * lily/include/*.hh: remove spurious set_interface() decls. * lily/key-signature-interface.cc (brew_molecule): add padding for natural signs. Make natural typesetting like the sharp. - + * mf/feta-klef.mf: rewrote portion of the G-clef code. Downstroke is now slightly curved, not straight. - + 2002-04-18 Heikki Junes * lilypond-mode.el: Toggles font-lock-multiline (Emacs 21.1 or newer). - * lilypond-font-lock.el: Handles multiline-strings. Fontifies notes + * lilypond-font-lock.el: Handles multiline-strings. Fontifies notes more strictly. Use more clever regular expressions. Commented regexps. 2002-04-16 Heikki Junes @@ -2620,7 +2620,7 @@ * lilypond-font-lock.el: Handle block comments: block comments can have also ordinary comments inside. - + 2002-04-13 Han-Wen * lily/stem.cc (get_default_dir): set direction to CENTER if @@ -2640,14 +2640,14 @@ 2002-04-12 Han-Wen Nienhuys * VERSION: 1.5.52 released - + * lily/*.cc: add some undocced properties. scm/grob-description.scm: idem. 2002-04-12 Heikki Junes * lilypond-font-lock.el: Handle slurs \( and \), numbers, - multi-measure rests like "R1 *4" and scheme (typically has '#' + multi-measure rests like "R1 *4" and scheme (typically has '#' in the beginning). Small fixes. Add few reserved words. 2002-04-12 Jan Nieuwenhuizen @@ -2664,14 +2664,14 @@ windows viewing commands, remove silly comment about Yap. 2002-04-10 Mats Bengtsson - + * Documentation/topdocs/INSTALL.texi: Describe how to learn configure to find kpathsea on for example Slackware 8.0. * scripts/ly2dvi.py (non_path_environment): Set $TEXMF correctly. - * scm/grob-description.scm (MultiMeasureRest): number-threshold=1 - by default: avoid "1" over single bar rests. + * scm/grob-description.scm (MultiMeasureRest): number-threshold=1 + by default: avoid "1" over single bar rests. * scripts/lilypond-book.py (LatexPaper.set_geo_option): Simplify and correct the handling of geometry options. @@ -2702,16 +2702,16 @@ * lily/arpeggio.cc: New function brew_chord_bracket to draw chord brackets using arpeggio requests. - + * ly/property-init.ly: Shorthand \arpeggioBracket defined as the molecule-callback to use for drawing the brackets. - * Documentation/user/refman.itely: + * Documentation/user/refman.itely: * input/test/chord-bracket.ly: Chord brackets documented - + 2002-04-10 Han-Wen - * mf/feta-din-code.mf: tweaks for p, s. New dynamic r sign. + * mf/feta-din-code.mf: tweaks for p, s. New dynamic r sign. * mf/feta-eindelijk.mf: tweak for eighth rest: move bulb up. @@ -2727,7 +2727,7 @@ 2002-04-09 Heikki Junes * lilypond-mode.el: new command: LilyPond-un-comment-region. - Added 2Midi to "Command"-menu. Inspired by latex.el and tex.el: + Added 2Midi to "Command"-menu. Inspired by latex.el and tex.el: separate "Command"-menu and "LilyPond"-menu. Added "Miscellanous"- submenu to "LilyPond"-menu. @@ -2760,7 +2760,7 @@ 2002-04-06 Mats Bengtsson * lily/stem-engraver.cc (acknowledge_grob): Revert to old way of - finding out the duration. Fixes chord tremolo bug. + finding out the duration. Fixes chord tremolo bug. * lily/completion-note-heads-engraver.cc (process_music): Set correct duration for all requests of the broken notes. @@ -2777,9 +2777,9 @@ brackets. * lilypond-indent.el: Support for blinking of matching parentheses - + * lilypond-font-lock.el: Fix fontification of closing > on its own line - + * lily/piano-pedal-engraver.cc, lily/text-spanner.cc: Fixes and cleanups of piano pedal brackets. @@ -2799,7 +2799,7 @@ 2002-04-02 Han-Wen Nienhuys * lily/note-spacing.cc (stem_dir_correction): only do - beam-correction if a beam is there. + beam-correction if a beam is there. * lily/stem.cc (duration_log): change from flag_i (); better naming. @@ -2835,7 +2835,7 @@ * input/mozart-hrn-3.ly: Tweak Slur.beautiful, so that we don't get too curved slurs. - * scm/slur.scm (default-slur-extremity-offset-alist) + * scm/slur.scm (default-slur-extremity-offset-alist) (default-phrasing-slur-extremity-offset-alist): Move slur attachments further away from note-head, vertically. Also, leave a horizontal gap between slur and stem end. @@ -2850,7 +2850,7 @@ for shortest durations. * lily/multi-measure-rest.cc (set_spacing_rods): tune rods to the - extent of the mm rest. + extent of the mm rest. * lily/spacing-spanner.cc (get_duration_space): better spacing for really short notes. @@ -2860,7 +2860,7 @@ if stem has same direction. (parallel_beam): be anal about matching bracket to tuplet. - * lily/lookup.cc (line): new function Lookup::line(). + * lily/lookup.cc (line): new function Lookup::line(). * scm/tex.scm (dashed-line): change -line to -system in names. @@ -2868,7 +2868,7 @@ * flower/include/interval.hh: new function add_point (). new function widen() - + 2002-04-01 Jan Nieuwenhuizen * input/mozart-hrn-3.ly: Mimic Breitkopf fonts and padding. @@ -2908,7 +2908,7 @@ * scm/grob-description.scm (Beam): Add concaveness-gap, default value 2.0 staff-space. - + * scm/grob-property-description.scm (concaveness-gap): Add description. @@ -2973,7 +2973,7 @@ 2002-03-27 Han-Wen * VERSION: 1.5.48 released - + * lily/multi-measure-rest.cc (symbol_molecule): split off from brew_molecule() (set_spacing_rods): Use symbol_molecule() to determine minimum @@ -2981,7 +2981,7 @@ (church_rest): split off from brew_molecule() (big_rest): split off from brew_molecule(). Construct using variable shape. - + * mf/feta-eindelijk.mf: junk multi measure rest. 2002-03-26 Han-Wen @@ -3049,19 +3049,19 @@ (stem_dir_correction): maximal correction for knees. * lily/*.cc: many updates to interface descriptions. - + * lily/grob.cc (internal_set_grob_property): add interface check for every set_grob_property call * lily/*.cc: document interface stuff in C++ - - * lily/grob-interface.cc: new file. Add grob interfaces from C++. + + * lily/grob-interface.cc: new file. Add grob interfaces from C++. * lily/volta-bracket.cc: naming: change volta spanner to volta-bracket. * input/bugs/*.ly: cleanup, remove lots of files. - + * buildscripts/mf-to-table.py (write_ps_encoding): generate .encoding file. WARNING: upgrade to pktrace 1.0.3 @@ -3069,8 +3069,8 @@ 2002-03-23 Mats Bengtsson - * scripts/ly2dvi.py (ly_paper_to_latexpaper): Use the correct unit - also for textheight + * scripts/ly2dvi.py (ly_paper_to_latexpaper): Use the correct unit + also for textheight 2002-03-23 Han-Wen @@ -3089,7 +3089,7 @@ * lily/lily-guile.cc (ly_unit): return internal unit. - * scm/tex.scm (header-end): insert scaling factor, using ly-unit + * scm/tex.scm (header-end): insert scaling factor, using ly-unit * lily/paper-outputter.cc (output_version): output internal unit from Paper_outputter @@ -3098,21 +3098,21 @@ 2002-03-22 Mats Bengtsson - * scripts/ly2dvi.py: clean up old .*pk font caching code. + * scripts/ly2dvi.py: clean up old .*pk font caching code. - * scm/ps.scm: Use uppercase postscript font names for the standard - TeX fonts. + * scm/ps.scm: Use uppercase postscript font names for the standard + TeX fonts. - * scripts/ly2dvi.py, buildscripts/lilypond-{login,profile}.sh, : - Add all available TeX Type1 fonts, including Feta, to the - Ghostscript font path. + * scripts/ly2dvi.py, buildscripts/lilypond-{login,profile}.sh, : + Add all available TeX Type1 fonts, including Feta, to the + Ghostscript font path. - * Documentation/topdocs/INSTALL.texi (Top): Add required pktrace - version (affects the FontName) in lilypond.map. + * Documentation/topdocs/INSTALL.texi (Top): Add required pktrace + version (affects the FontName) in lilypond.map. - * mf/GNUmakefile, Documentation/user/appendices.itely: Rename font - documentation file to fetaNNlist.ly to avoid name collisions between - lilypond generated .tex file and font .tex macros file. + * mf/GNUmakefile, Documentation/user/appendices.itely: Rename font + documentation file to fetaNNlist.ly to avoid name collisions between + lilypond generated .tex file and font .tex macros file. 2002-03-22 Juergen Reuter @@ -3155,9 +3155,9 @@ * VERSION: 1.5.45 released * input/regression/system-extents.ly: new regression test. Test - System extents. + System extents. - * lily/system.cc: rename LineOfScore into System + * lily/system.cc: rename LineOfScore into System * lily/molecule.cc (ly_add_molecule): new Scheme ly-add-molecule. @@ -3165,15 +3165,15 @@ (ly_get_extent): new Scheme function ly-get-extent * ps/lilyponddefs.ps: use output-scale for line-x - definition. + definition. - * scm/ps.scm (font-load-command): + * scm/ps.scm (font-load-command): use output-scale 2002-03-20 Rune Zedeler - + * lily/beaming-info.cc: Stupid typo fixed - + * lily/accidental-engraver.cc: rewrote accidental-routines to get support for cross-context auto-accidentals. Now the engraver can stay in Staff-context and see other contexts @@ -3183,18 +3183,18 @@ * lily/translator-group.cc (set_children_property): Function added recursively setting the same property (deep_copied) for all children of a Translator_group. - + * ly/property-init.ly: added commands \pianoAccidentals \voiceAccidentals \modernVoiceAccidentals \modernVoiceCautionaries * ly/engraver-init.ly: Correct initialization of new accidentals. - + * scm/translator-property-description.scm: Updated - + * input/regression/accidental-voice.ly: Added - - * Documentation/regression-test.tely: Added new test + + * Documentation/regression-test.tely: Added new test 2002-03-19 Han-Wen Nienhuys @@ -3208,7 +3208,7 @@ at 0.4 pt. * tex/feta*.tex: remove. - + * stepmake/aclocal.m4: remove stepmake symlink. It confuses almost all software dealing with it. @@ -3236,16 +3236,16 @@ * mf/feta-schrift.mf: Trill fixes, Vee fixes (upbow, ltoe, rtoe) 2002-03-18 Chris Jackson - - * lily/text-spanner.cc, lily/piano-pedal-engraver.cc: Cleanups. Edge - widths, heights and shortens are now customisable properties. - - * scm/grob-description.scm, scm/grob-property-description.scm: New - properties added to PianoPedalBracket, unnecessary - Y-offset-callbacks removed from *Pedal, undocumented properties - fixed. - - * Documentation/user/refman.itely: Piano pedal updates. + + * lily/text-spanner.cc, lily/piano-pedal-engraver.cc: Cleanups. Edge + widths, heights and shortens are now customisable properties. + + * scm/grob-description.scm, scm/grob-property-description.scm: New + properties added to PianoPedalBracket, unnecessary + Y-offset-callbacks removed from *Pedal, undocumented properties + fixed. + + * Documentation/user/refman.itely: Piano pedal updates. 2002-03-18 Jan Nieuwenhuizen @@ -3256,13 +3256,13 @@ 0.48 (previously 0.42). (Beam): Remove old stuff. - * lily/stem.cc: - * lily/stem-tremolo.cc: - * lily/beam.cc: + * lily/stem.cc: + * lily/stem-tremolo.cc: + * lily/beam.cc: * scm/beam.scm: Remove old stuff. Use Beam::get_interbeam () (previously space-function). - * stepmake/bin/add-html-footer.py: Website title fix. + * stepmake/bin/add-html-footer.py: Website title fix. 2002-03-18 Han-Wen Nienhuys @@ -3294,11 +3294,11 @@ * buildscripts/lilypond-profile.sh (TEXMF): typo. * make/lilypond-vars.make: set TEXMF for the new font setup. - + 2002-03-17 Han-Wen * VERSION: 1.5.42 released - + * mf/feta-schrift.mf: endless twiddling of Tr. * mf/feta-eindelijk.mf: 8th rest: make darker, top of brush lower, and @@ -3308,23 +3308,23 @@ little smaller if there is an accidental. 2002-03-15 Mats Bengtsson - - * buildscripts/lilypond-profile.sh: - - * mf/GNUmakefile (INSTALLATION_OUT_DIR*), - buildscripts/lilypond-login.sh, buildscripts/lilypond-profile.sh: - Implement new font installation strategy - - * Documentation/misc/fontinstallation (TEXMF): Documentation of - the new font installation strategy. - - * lilypond-mode.el (LilyPond-mode-map): Add shortcut "CTRL-c ;" - for comment-region. - - * input/test/staff-size.ly: Simplified using StaffContainer - - * mf/GNUmakefile (ALL_GEN_FILES): Actually generate the - lilypond.map file + + * buildscripts/lilypond-profile.sh: + + * mf/GNUmakefile (INSTALLATION_OUT_DIR*), + buildscripts/lilypond-login.sh, buildscripts/lilypond-profile.sh: + Implement new font installation strategy + + * Documentation/misc/fontinstallation (TEXMF): Documentation of + the new font installation strategy. + + * lilypond-mode.el (LilyPond-mode-map): Add shortcut "CTRL-c ;" + for comment-region. + + * input/test/staff-size.ly: Simplified using StaffContainer + + * mf/GNUmakefile (ALL_GEN_FILES): Actually generate the + lilypond.map file 2002-03-17 Jan Nieuwenhuizen @@ -3349,11 +3349,11 @@ 2002-03-15 Han-Wen Nienhuys * VERSION: 1.5.41 released - + * mf/feta-schrift.mf: make Tr. smaller, smoother and closer. Use optima serifs on top of t, bottom of r. - * mf/feta-bolletjes.mf: make ledger line rounder. + * mf/feta-bolletjes.mf: make ledger line rounder. * mf/feta-toevallig.mf: some smallish fixes for flat sign. @@ -3361,30 +3361,30 @@ parametrization. 2002-03-15 Chris Jackson - - * lily/piano-pedal-engraver.cc: Rewritten to support bracketed as - well as text pedal indications and a combination of both. All - pedal indications are horizontally aligned on a line spanner. - - * lily/text-spanner.cc: Edge-width property added to use in - bracketed piano pedals. Function setup_sustain_pedal added to set - the dimensions of the brackets. - - * scm/grob-description.scm: New *PedalLineSpanner grobs added, and - some of the *Pedal properties tweaked. - - * scm/grob-property-description.scm: New pedal-type (*Pedal) and - edge-width (TextSpanner) properties. - - * ly/engraver-init.ly: Default strings added for SostenutoPedal. - - * lilypond-font-lock.el: sostenuto, unaCorda and treCorde added to - fontified identifiers list. - - * input/test/pedal.ly: New pedal features added. - - * Documentation/user/refman.itely: New pedal features documented. - + + * lily/piano-pedal-engraver.cc: Rewritten to support bracketed as + well as text pedal indications and a combination of both. All + pedal indications are horizontally aligned on a line spanner. + + * lily/text-spanner.cc: Edge-width property added to use in + bracketed piano pedals. Function setup_sustain_pedal added to set + the dimensions of the brackets. + + * scm/grob-description.scm: New *PedalLineSpanner grobs added, and + some of the *Pedal properties tweaked. + + * scm/grob-property-description.scm: New pedal-type (*Pedal) and + edge-width (TextSpanner) properties. + + * ly/engraver-init.ly: Default strings added for SostenutoPedal. + + * lilypond-font-lock.el: sostenuto, unaCorda and treCorde added to + fontified identifiers list. + + * input/test/pedal.ly: New pedal features added. + + * Documentation/user/refman.itely: New pedal features documented. + 2002-03-15 Jan Nieuwenhuizen @@ -3393,10 +3393,10 @@ (least_squares): Bugfix: don't barf on beams with less than two visible stems (tremolos). - * scm/beam.scm: + * scm/beam.scm: * scm/grob-description.scm (Beam): Junk old beam stuff. - - + + 2002-03-14 Han-Wen Nienhuys * VERSION: 1.5.40 @@ -3413,10 +3413,10 @@ * lily/include/new-beam.hh: * lily/new-beam.cc: New file. - * flower/include/interval.hh: + * flower/include/interval.hh: * flower/include/interval.tcc (delta): New method. (swap): Now public (previously private). - + * scm/beam.scm (default-beam-y-quants): Bugfix: lower beam-sit by 1 staff-line-thickness. Sadly, this makes dy quanting problems (dy quants allowed should depend on actual left y) more visible. @@ -3462,38 +3462,38 @@ 2002-03-12 Jan Nieuwenhuizen - * Documentation/topdocs/INSTALL.texi: Add section for MacOS X. + * Documentation/topdocs/INSTALL.texi: Add section for MacOS X. - * darwin.patch: New file. + * darwin.patch: New file. - * lily/beam.cc (set_stem_shorten): Revive deceased stem shorten - code. Shorten stems by fraction of stems to be shortened. + * lily/beam.cc (set_stem_shorten): Revive deceased stem shorten + code. Shorten stems by fraction of stems to be shortened. - * lily/stem.cc (get_default_stem_end_position): Shorten only half - of shorten value for boundary cases. + * lily/stem.cc (get_default_stem_end_position): Shorten only half + of shorten value for boundary cases. - * scm/grob-description.scm (Stem): Set stem-shorten to (1.0 0.5). - (Beam): Set beamed-stem-shorten to (1.0 0.5). + * scm/grob-description.scm (Stem): Set stem-shorten to (1.0 0.5). + (Beam): Set beamed-stem-shorten to (1.0 0.5). 2002-03-11 Jan Nieuwenhuizen - * lily/beam.cc (check_stem_length_f): Try to lenthen more. + * lily/beam.cc (check_stem_length_f): Try to lenthen more. + + * scm/grob-description.scm (Beam): Add concaveness. Replace + Beam::cancel_suspect_slope with Beam::check_concave. - * scm/grob-description.scm (Beam): Add concaveness. Replace - Beam::cancel_suspect_slope with Beam::check_concave. - - * lily/beam.cc (check_concave): Calculate concaveness of beam, and - set slope to horizontal if concaveness > Beam.concaveness. This - handles cases that kludgy cancel_suspect_slope was meant to catch - very well. - (cancel_suspect_slope): Remove. + * lily/beam.cc (check_concave): Calculate concaveness of beam, and + set slope to horizontal if concaveness > Beam.concaveness. This + handles cases that kludgy cancel_suspect_slope was meant to catch + very well. + (cancel_suspect_slope): Remove. 2002-03-12 Rune Zedeler - * lily/beam.cc lily/stem.cc lily/beam-engraver.cc: allow for - stemLeftBeamCount and stemRightBeamCount to equal 0. - Fixes [c8 c4 c8] - + * lily/beam.cc lily/stem.cc lily/beam-engraver.cc: allow for + stemLeftBeamCount and stemRightBeamCount to equal 0. + Fixes [c8 c4 c8] + 2002-03-12 Han-Wen * lily/spacing-spanner.cc (breakable_column_spacing): Only do @@ -3505,18 +3505,18 @@ 2002-03-11 Han-Wen - * VERSION: 1.5.38 released + * VERSION: 1.5.38 released * lily/grob.cc (warning): Use cause tracking to give more - meaningful errors from the backend. + meaningful errors from the backend. * lily/property-iterator.cc (check_grob): Warn if setting grob - property in unknown grob. + property in unknown grob. * mf/feta-toevallig.mf: brushed stems for natural sign. * lily/molecule.cc (align_to): don't translate empty molecule. - (this triggers a very subtle bug in time-signature.) + (this triggers a very subtle bug in time-signature.) 2002-03-10 Han-Wen @@ -3533,7 +3533,7 @@ spacing is now globally determined, using the most common shortest note. Notes that are shorter are spaced geometrically, and with expand hints. This makes spacing more even, and measures that have - very short notes won't be that stretched out. + very short notes won't be that stretched out. * mf/feta-klef.mf: F-clef fixes, documentation on the shape. (WARNING: font changed.) @@ -3542,7 +3542,7 @@ * lily/simple-spacer.cc (add_columns): support for infinitely stiff springs. - + * lily/staff-spacing.cc (get_spacing_params): space after prefatory matter is fixed. @@ -3573,18 +3573,18 @@ * lily/key-signature-interface.cc (brew_molecule): rename from key_item left-align molecule. - + * lily/break-align-interface.cc (do_alignment): completely rewritten. Now it does not use Align_interface anymore, but a separate routine. Like StaffSpacing, it reads space-alist from the breakable grobs. This allows you to set spacing using - - \property Staff.Clef \override #'space-alist = '(....stuff....) - + + \property Staff.Clef \override #'space-alist = '(....stuff....) + * lily/bar-line.cc, lily/include/bar-line.hh: change name from Bar to Bar_line. Move files around as well. - * lily/time-signature.cc (time_signature): left align time signatures. + * lily/time-signature.cc (time_signature): left align time signatures. * mf/feta-timesig.mf: Remove padding from C-style time signatures. Corrections of the glyph shape C. Comments added. @@ -3619,7 +3619,7 @@ * lily/chord.cc: use scm_reverse_x iso. gh_reverse() * lily/note-spacing.cc (stem_dir_correction): correction for - same stem notes as well. + same stem notes as well. * lily/pitch.cc (pitch_transpose): stricter typechecking @@ -3643,12 +3643,12 @@ * lily/translator-group.cc (ly_set_trans_property): typechecking (ly_get_trans_property): typechecking. - * lily/font-metric.cc (ly_text_dimension): typechecking + * lily/font-metric.cc (ly_text_dimension): typechecking (ly_find_glyph_by_name): idem. * scm/bass-figure.scm (brew-complete-figure): support for bracketed numbers. - + * lily/grob.cc (ly_get_paper_var): new function 2002-02-28 Han-Wen Nienhuys @@ -3659,13 +3659,13 @@ (bracket): New function. * lily/stem-engraver.cc (stop_translation_timestep): bugfix, unset - stemLeftBeamCount, stemRightBeamCount in stead of using # + stemLeftBeamCount, stemRightBeamCount in stead of using # * lily/third-try.cc (set_implicit_neighbor_columns): type checking bugfix. * lily/span-arpeggio-engraver.cc (stop_translation_timestep): - typecheck bugfix. + typecheck bugfix. * lily/grob.cc (ly_get_grob_property): be anal about types. (ly_set_grob_property): idem @@ -3674,11 +3674,11 @@ building completely to Scheme * lily/include/musical-request.hh (class Bass_figure_req): Add - class. + class. * lily/parser.yy (bass_figure): add support for space figure. - * lily/molecule.cc (ly_molecule_combined_at_edge): be anal about types + * lily/molecule.cc (ly_molecule_combined_at_edge): be anal about types * lily/font-metric.cc (ly_text_dimension): Scheme function ly-text-dimension @@ -3688,11 +3688,11 @@ * lily/font-interface.cc (ly_font_interface_get_font): new Scheme function ly-get-font - * mf/feta-nummer.mf: include normal-space dimension. + * mf/feta-nummer.mf: include normal-space dimension. * lily/collision.cc (check_meshing_chords): don't merge collisions with whole notes. - + * lily/system-start-delimiter.cc (after_line_breaking): Bugfix: glyph is string. @@ -3747,10 +3747,10 @@ * VERSION: 1.5.33 released. * mf/feta-macros.mf (flare_path): removed draw_flare, replace by - flare_path everywhere (c-clef, numbers). + flare_path everywhere (c-clef, numbers). * lily/bar-number-engraver.cc (process_music): also print bar - number if measure starts with grace note. + number if measure starts with grace note. * input/regression/grace-bar-number.ly: new test. @@ -3766,7 +3766,7 @@ * lily/music-sequence.cc (do_relative_octave): robustification - * scm/music-functions.scm: many utility functions + * scm/music-functions.scm: many utility functions * lily/music.cc (ly_set_mus_property): add type checks to the Scheme property assignment. @@ -3774,7 +3774,7 @@ * buildscripts/lilypond-profile,lilypond-login.sh (TEXCONFIG): dvips fixes - * mf/lilypond.map: .map file from Mats' page. + * mf/lilypond.map: .map file from Mats' page. 2002-02-21 Juergen Reuter @@ -3825,7 +3825,7 @@ * mf/feta-puntje.mf: bugfix 2002-02-19 Juergen Reuter - + * mf/*.mf: tried to fix ancient-font.ly. WARNING: Font changed. 2002-02-18 Jan Nieuwenhuizen @@ -3840,7 +3840,7 @@ * stepmake/bin/add-html-footer.py: Python2.[12] re workarounds. 2002-02-18 Han-Wen - + * VERSION: 1.5.31 released * lily/new-spacing-spanner.cc: remove file. @@ -3864,7 +3864,7 @@ 2002-02-12 Han-Wen Nienhuys - * Documentation/topdocs/INSTALL.texi: remove type3 stuff. + * Documentation/topdocs/INSTALL.texi: remove type3 stuff. * mf/GNUmakefile: remove metapost stuff @@ -3872,7 +3872,7 @@ 2002-02-11 Jan Nieuwenhuizen - * mf/GNUmakefile (FET_FILES): + * mf/GNUmakefile (FET_FILES): (FONT_FILES): Include parmesan. * stepmake/bin/packagepython.py (make_assign_re): Bugfix. Use re @@ -3908,7 +3908,7 @@ * lily/translator-group.cc (add_fresh_group_translator): make new add-translator functions to make distinction between fresh and - used group-translators. Fixes problem with scripts on auto-changing voice + used group-translators. Fixes problem with scripts on auto-changing voice * lily/timing-engraver.cc: make Timing_engraver instantiatable, add to Score_performer. Fixes bar checks in MIDI @@ -3954,34 +3954,34 @@ * mf/parmesan20.mf: split out ancient notation into parmesan ("old cheese") font. WARNING: fonts changed. - + 2002-02-01 Juergen Reuter * mf/*.mf: Fixed some blot_diameter related flaws in some feta symbols - + * mf/*.mf: Added some more vaticana/solesmes style font symbols - + * mf/*.mf: Bugfix: renamed subbipunctum -> inclinatum * mf/*.mf: Fixed a few typos in various .mf files 2002-01-17 Rune Zedeler - + * mf/: added macro soft_penstroke - - softened some glyphs - redrawn triangular noteheads - redrawn tab-clef - added classical quarter rest - + + softened some glyphs + redrawn triangular noteheads + redrawn tab-clef + added classical quarter rest + * lily/stem.cc: Bugfix: Stem-attachment when staff_space!=1 - + * lily/bar.cc: Bugfix: repeat dots when even number of staff - lines and staff_space>=2 - + lines and staff_space>=2 + * lily/rest.cc: Use default rests when current style glyphs not - found - this allows - \property Staff.Rest \override #'style = #'classical + found - this allows + \property Staff.Rest \override #'style = #'classical 2002-01-30 Jan Nieuwenhuizen @@ -3997,7 +3997,7 @@ * lilypond-indent.el: New file providing indentation for parenthesised blocks of lilypond code in Emacs - + * lilypond-font-lock.el: Changes to the syntax table to facilitate indentation and handle block comments properly. Distinguish accents from close-brackets in fontification. @@ -4006,7 +4006,7 @@ 2002-01-22 Jan Nieuwenhuizen - * Documentation/windows/installing.texi: + * Documentation/windows/installing.texi: * Documentation/windows/compiling.texi: Include from 1.4.10. * Documentation/windows/gs-profile.sh: previously lily-gs.sh @@ -4014,39 +4014,39 @@ * input/bugs/first-midi-tie.ly: New file. 2001-12-29 Han-Wen - + * VERSION: 1.5.28 released - * lily/parser.yy (My_lily_parser): Slightly kludgy warning for - illicit beams on [c4 c4] etc. + * lily/parser.yy (My_lily_parser): Slightly kludgy warning for + illicit beams on [c4 c4] etc. - * lily/bar-check-iterator.cc (Bar_check_iterator): new - file. Make separate iterator for Bar_checks. Bar_check now happen - outside engravers, meaning that you can use them with - skipTypesetting. Associated changes in other files. - - * lily/new-spacing-spanner.cc (stem_dir_correction): removed - function - - * lily/spacing-spanner.cc (stem_dir_correction): removed function + * lily/bar-check-iterator.cc (Bar_check_iterator): new + file. Make separate iterator for Bar_checks. Bar_check now happen + outside engravers, meaning that you can use them with + skipTypesetting. Associated changes in other files. - * lily/include/grob.hh (unsmob_item, unsmob_spanner): Add functions + * lily/new-spacing-spanner.cc (stem_dir_correction): removed + function - * lily/bar.cc (before_line_breaking): remove bar-line spacing code. + * lily/spacing-spanner.cc (stem_dir_correction): removed function - * lily/stem.cc (set_spacing_hints): removed function + * lily/include/grob.hh (unsmob_item, unsmob_spanner): Add functions - * lily/note-spacing.cc (stem_dir_correction): new stem-direction - correction for spacing; now take vertical extents of the stem into - account. + * lily/bar.cc (before_line_breaking): remove bar-line spacing code. - * lily/third-try.cc: More hacking to get spacing working. + * lily/stem.cc (set_spacing_hints): removed function - * lily/note-spacing-engraver.cc: new file, Note_spacing_engraver - sits at staff level and creates note spacing objects. Scrap it - again, and document why. + * lily/note-spacing.cc (stem_dir_correction): new stem-direction + correction for spacing; now take vertical extents of the stem into + account. - * lily/include/group-interface.hh: rename functions. + * lily/third-try.cc: More hacking to get spacing working. + + * lily/note-spacing-engraver.cc: new file, Note_spacing_engraver + sits at staff level and creates note spacing objects. Scrap it + again, and document why. + + * lily/include/group-interface.hh: rename functions. 2001-12-27 Jan Nieuwenhuizen @@ -4055,8 +4055,8 @@ 2001-12-25 Jan Nieuwenhuizen - * make/lilypond-vars.make: - * scripts/ly2dvi.py (setup_environment): + * make/lilypond-vars.make: + * scripts/ly2dvi.py (setup_environment): * scripts/lilypond-book.py (setup_environment): Also set tex memory options. @@ -4090,25 +4090,25 @@ stuff. * lily/grob-pq-engraver.cc (class Grob_pq_engraver): New file, new - class. Keep a queue of grobs that are still playing in busyGrobs. + class. Keep a queue of grobs that are still playing in busyGrobs. * lily/lyric-combine-music-iterator.cc (get_busy_status): New function. Use busyGrobs to detect playing notes. - + 2001-12-16 Jan Nieuwenhuizen - + * Documentation/topdocs/INSTALL.texi: Added note about broken python-2.1. Updated note for Debian's broken (well, broken for our use anyway) tex configuration. - + * scripts/lilypond-book.py (re_dict): python2.2 fix. - - * stepmake/stepmake/c++-rules.make ($(outdir)/%.hh): + + * stepmake/stepmake/c++-rules.make ($(outdir)/%.hh): ($(outdir)/%.cc): Adapted to bison-1.30; added bison < 1.30 fix. - + * scripts/lilypond-book.py (bounding_box_dimensions): Bugfix. (But left margin of png's still misses a few pixels. Arg.) - + 2001-12-16 Heikki Junes * lilypond-mode.el (LilyPond-command-next-midi): Make @@ -4120,9 +4120,9 @@ Convert strings with dimensions to numbers. * lily/volta-engraver.cc: only make a bracket for the top staff, - as found in stavesFound. + as found in stavesFound. - * lily/bar-number-engraver.cc: remove staff administration. + * lily/bar-number-engraver.cc: remove staff administration. * lily/mark-engraver.cc (acknowledge_grob): remove staff administration. This breaks support for invisible-staff. @@ -4141,12 +4141,12 @@ * lilypond-mode.el (LilyPond-command-next-midi): Play next (or last) midi section in the Emacs-mode, so it is possible to play certain score in a multiscore lilypond-file. - + 2001-12-09 Rune Zedeler * lily/lily-guile.cc: Added ly_assoc_front_x() and ly_assoc_cdr() (FIXME: not accessible from guile) - + * lily/accidental-engraver.cc: rewrote accidental-routines to get better support for Kurt Stone's suggestions. Removed properties: noResetKey, forgetAccidentals, autoReminders, @@ -4156,18 +4156,18 @@ autoCautionaries. (BUGFIX: broken-tie-support destroyed in 1.5.16) - + * ly/property-init.ly: added commands \defaultAccidentals \modernAccidentals \modernCautionaries \noResetKey \forgetAccidentals * ly/engraver-init.ly: Correct initialization of new accidentals. - + * scm/translator-property-description.scm: The new properties added. - + * input/: Some examples added, some changed. - + * Documentation/regression-test.tely: Added quick test of new accidentals. @@ -4201,7 +4201,7 @@ 2001-12-05 Jan Nieuwenhuizen * 1.4.9.jcn3 forward ports. - + * Really included .cvsignore. * Included Han-Wen's uu1 windows fixes. @@ -4238,8 +4238,8 @@ ledger lines. By default, ledger lines take up width now. * input/regression/fingering.ly: demonstrate auto fingering. - Horizontal placement is still buggy. - + Horizontal placement is still buggy. + * lily/fingering-engraver.cc (class Fingering_engraver): added. Provides support for horizontal fingering scripts @@ -4257,7 +4257,7 @@ * lily/group-interface.cc (add_thing): efficiency tweak: reuse handle when adding. Use precomputed symbols throughout lily. - + * lily/rhythmic-column-engraver.cc: make NoteSpacing grobs to keep track of spacing issues. @@ -4286,4 +4286,3 @@ * CHANGES: Change log instated. * stepmake/add-html-footer.py: @BRANCH@ tag insertion. - diff --git a/Documentation/misc/ChangeLog-2.1 b/Documentation/misc/ChangeLog-2.1 index 81bc13f0f6..362c00a21a 100644 --- a/Documentation/misc/ChangeLog-2.1 +++ b/Documentation/misc/ChangeLog-2.1 @@ -15,7 +15,7 @@ 2004-04-01 Han-Wen Nienhuys * lily/change-iterator.cc (process): search at multiple context - levels. This fixes + levels. This fixes * scm/part-combiner.scm (analyse-spanner-states): use split-index, @@ -124,7 +124,7 @@ * input/wilhelmus.ly: New file. - * Documentation/user/notation.itely: + * Documentation/user/notation.itely: * Documentation/user/introduction.itely: * Documentation/user/tutorial.itely: Use quote ly-option instead of explicit @quotation. This fixes too long lilypond linewidths @@ -166,7 +166,7 @@ 2004-03-29 Jan Nieuwenhuizen - * Documentation/user/introduction.itely: + * Documentation/user/introduction.itely: * Documentation/user/notation.itely: * Documentation/user/tutorial.itely: Up all relative examples. Enclose @lilypond displays in @quotation. Typos and corrections. @@ -180,7 +180,7 @@ 2004-03-29 Heikki Junes - * Documentation/user/changing-defaults.itely, + * Documentation/user/changing-defaults.itely, Documentation/user/lilypond.tely: few fixes. Place no comma between two options: a and b, but commas between three options: a, b, and c. By this manner, grouping is possible: a and b, and c and d. @@ -193,7 +193,7 @@ * Documentation/user/music-glossary.tely: move glossary direntry - * stepmake/stepmake/texinfo-vars.make (INFOINSTALL): + * stepmake/stepmake/texinfo-vars.make (INFOINSTALL): only do mkdir/install-info if INFO_INSTALL_FILES != "". 2004-03-28 Jan Nieuwenhuizen @@ -204,7 +204,7 @@ 2004-03-28 Han-Wen Nienhuys * scripts/lilypond-book.py (Lilypond_snippet.is_outdated): use - glob.glob for .png filenames. This catches multipage pngs. + glob.glob for .png filenames. This catches multipage pngs. * Documentation/user/changing-defaults.itely (Determining the grob property): fix references. @@ -309,7 +309,7 @@ (set-paper-size): new function, to be called inside \paper {} (set-default-paper-size): new function, to be called at toplevel. - * lily/paper-def.cc (LY_DEFINE): ly:paper-def?: new function. + * lily/paper-def.cc (LY_DEFINE): ly:paper-def?: new function. * lily/beam-performer.cc (process_music): idem. @@ -370,7 +370,7 @@ 2004-03-23 Heikki Junes * buildscripts/lilypond.words.py: remove. - * buildscripts/lilypond-words.py: add new, renamed file. + * buildscripts/lilypond-words.py: add new, renamed file. Give generated targets and dirs explicitly in arguments. * GNUmakefile.in, elisp/GNUmakefile, elisp/lilypond-init.el, @@ -488,7 +488,7 @@ * lily/include/stencil.hh (class Stencil): document origin field. * lily/staff-symbol.cc (print): span staff-symbol on column - extents for non-broken columns. + extents for non-broken columns. * ly/engraver-init.ly (breakAlignOrder): put staff-bar behind key-signature. @@ -519,7 +519,7 @@ 2004-03-19 Han-Wen Nienhuys - * scripts/lilypond-book.py (compose_ly): bugfix for relative < 0. + * scripts/lilypond-book.py (compose_ly): bugfix for relative < 0. (compose_ly): default octave should be middle C. * Documentation/user/changing-defaults.itely (Layout tunings @@ -567,7 +567,7 @@ support for descend-only context spec. * lily/note-head.cc (brew_ez_stencil): read vector #'note-names to - determine ez-notation letter. + determine ez-notation letter. * lily/system.cc (get_line): start with dumping layer 3. This fixes ez notation. @@ -621,7 +621,7 @@ * scm/lily.scm (tex-output-expression): new function, eval within drawing API. Guards against eval vulnerabilities. - * scm/output-tex.scm (tex-encoded-fontswitch): idem. + * scm/output-tex.scm (tex-encoded-fontswitch): idem. * scm/output-ps.scm (scm): export lily drawing API. @@ -738,7 +738,7 @@ * lily/paper-book.cc (stencil2line): protect static SCM. * lily/font-interface.cc (text_font_alist_chain): rename function, - and use text-font-defaults. + and use text-font-defaults. * lily/font-select.cc (properties_to_font_size_family): call SCM code. @@ -788,7 +788,7 @@ * lily/stem.cc (get_default_stem_end_position): shorten stems triggered by note-head positions, not by forced-direction. This - fixes a bug with too short stems. + fixes a bug with too short stems. 2004-03-12 Jan Nieuwenhuizen @@ -806,7 +806,7 @@ * lily/figured-bass-engraver.cc (process_music): change calling convention. - * scm/bass-figure.scm (format-bass-figure): rewrite function. + * scm/bass-figure.scm (format-bass-figure): rewrite function. * scm/define-markup-commands.scm (bracketed-y-column): new markup command. @@ -816,7 +816,7 @@ * lily/stencil-scheme.cc (LY_DEFINE): ly:stencil-move-to-edge: new function. - * lily/grob-scheme.cc (LY_DEFINE): ly:grob-alist-chain: new function. + * lily/grob-scheme.cc (LY_DEFINE): ly:grob-alist-chain: new function. * lily/lexer.ll: remove support for \$ and $ in identifiers @@ -936,7 +936,7 @@ * scripts/lilypond.py (make_html_menu_file): remove --psgz option - * Documentation/user/*.itely: user manual edits. + * Documentation/user/*.itely: user manual edits. 2004-03-09 Han-Wen Nienhuys @@ -983,7 +983,7 @@ feta-nummber{5,7,11,13}. * scm/font.scm (paper20-font-vector): bugfix: use din12, not 10 - for 12pt design size. + for 12pt design size. 2004-03-09 Han-Wen Nienhuys @@ -1001,7 +1001,7 @@ * scm/output-ps.scm: Experimental encoding using reencode-font. * scm/font.scm: Add latin1 `font-shape'. - * scm/define-markup-commands.scm (latin-i): New font-shape command. + * scm/define-markup-commands.scm (latin-i): New font-shape command. * ps/lilyponddefs.ps (reencode-font): New function. @@ -1023,7 +1023,7 @@ * scm/lily.scm (make-title): New function. - * lily/paper-book.cc: + * lily/paper-book.cc: * lily/include/paper-book.hh: New file. * lily/include/ly-module.hh: New file, matching ly-module.cc (WAS: @@ -1068,21 +1068,21 @@ * Documentation/user/GNUmakefile (local-install-info): Issue warning (for packager, ie, if not installing in /usr or /usr/local). - * lily/stencil-scheme.cc: - * lily/staff-symbol-referencer.cc: - * lily/script-column.cc: - * lily/pitch.cc: - * lily/music.cc: - * lily/grob-pq-engraver.cc: - * lily/font-interface.cc: - * lily/music-output-def.cc: - * lily/duration.cc: + * lily/stencil-scheme.cc: + * lily/staff-symbol-referencer.cc: + * lily/script-column.cc: + * lily/pitch.cc: + * lily/music.cc: + * lily/grob-pq-engraver.cc: + * lily/font-interface.cc: + * lily/music-output-def.cc: + * lily/duration.cc: * lily/grob-scheme.cc: * lily/context-scheme.cc: Put scheme name on first line in LY_DEFINE to help etags (/ms multiline regexp flag broken?). Stray style cleanups. - * stepmake/stepmake/scm-vars.make: + * stepmake/stepmake/scm-vars.make: * stepmake/stepmake/c++-vars.make (TAGS_HEADERS, TAGS_SOURCES): Rename and split TAGS_FILES. @@ -1098,7 +1098,7 @@ * Documentation/user/changing-defaults.itely (Changing defaults): new file. - * Documentation/user/notation.itely (Notation manual): rename from + * Documentation/user/notation.itely (Notation manual): rename from refman.itely * Documentation/user/notation-appendices.itely (The Feta font): @@ -1189,8 +1189,8 @@ 2004-03-03 Heikki Junes - * input/test/nested-groups.ly: remove. move content (to next). - * input/test/staff-bracket.ly: replace content (from prev), this + * input/test/nested-groups.ly: remove. move content (to next). + * input/test/staff-bracket.ly: replace content (from prev), this has been already in templates. 2004-03-03 Jan Nieuwenhuizen @@ -1261,7 +1261,7 @@ 2004-03-01 Mats Bengtsson * Documentation/user/lilypond-book.itely (Integrating LaTeX and - music), Documentation/user/invoking.itexi (Invoking lilypond): + music), Documentation/user/invoking.itexi (Invoking lilypond): Move documentation of LaTeX packages for latin1 characters to the lilypond-book manual. @@ -1322,7 +1322,7 @@ * VERSION: 2.1.28 released - * scripts/convert-ly.py (conv): + * scripts/convert-ly.py (conv): 2004-02-29 Heikki Junes @@ -1356,11 +1356,11 @@ right beam ends. * lily/side-position-interface.cc (quantised_position): also - quantize staccato position for forced stem directions. + quantize staccato position for forced stem directions. 2004-02-27 Han-Wen Nienhuys - * scm/*.scm: Patch by Nicolas Sceaux: + * scm/*.scm: Patch by Nicolas Sceaux: * scm/music-functions.scm: ly:grob-property and ly:music-property are made procedure with setters. @@ -1433,7 +1433,7 @@ * scripts/lilypond-book.py (output_texinfo): Output @image descriptions for info too. - * input/test/chord-names-jazz.ly: + * input/test/chord-names-jazz.ly: * input/test/embedded-scm.ly: Clarify. * input/test/cautionaries.ly: Typo. @@ -1442,14 +1442,14 @@ 2004-02-27 Han-Wen Nienhuys - * make/lilypond.redhat.spec.in (Group): add/delete music-glossary too. + * make/lilypond.redhat.spec.in (Group): add/delete music-glossary too. * ly/engraver-init.ly: move \grobdescriptions to Global. This fixes problems with system defaults being reverted with \override on Score level. * lily/global-context.cc (Global_context): apply property-ops to - Global_context too. + Global_context too. 2004-02-27 Jan Nieuwenhuizen @@ -1478,7 +1478,7 @@ 2004-02-26 Heikki Junes * input/test/[a-b]*.ly: refresh descriptions -- avoid referring - to a file in printed documentation, instead, refer either to a + to a file in printed documentation, instead, refer either to a syntax or to an output. 2004-02-26 Jan Nieuwenhuizen @@ -1520,7 +1520,7 @@ * scm/output-ps.scm (top-of-file): Add tagline definition. FIXME. - * ps/music-drawing-routines.ps: + * ps/music-drawing-routines.ps: * ps/lilyponddefs.ps: Add end markers. 2004-02-24 Han-Wen Nienhuys @@ -1556,7 +1556,7 @@ * lily/lyric-phrasing-engraver.cc: remove * lily/lyric-engraver.cc: rewrite so lyric-phrasing-engraver no - longer necessary. + longer necessary. * lily/extender-engraver.cc (stop_translation_timestep): rewrite so lyric-phrasing-engraver is no longer necessary. @@ -1570,7 +1570,7 @@ * input/regression/quote-transposition.ly: new file. * lily/recording-group-engraver.cc (stop_translation_timestep): - store instrumentTuning too. + store instrumentTuning too. * lily/quote-iterator.cc (process): transpose events using instrumentTuning. @@ -1627,17 +1627,17 @@ go under beam. * lily/beam-quanting.cc: tune down ROUND_TO_ZERO_SLOPE, this fixes - sarabande beam. + sarabande beam. * flower/warn.cc (programming_error): cross fingers not thumbs. * lily/rest.cc (polyphonic_offset_callback): return 0 when staff-position is set. - * VERSION: release 2.1.26 + * VERSION: release 2.1.26 * scm/chord-entry.scm (construct-chord): process transposition - after processing explicit-11. + after processing explicit-11. 2004-02-22 Han-Wen Nienhuys @@ -1667,7 +1667,7 @@ * lily/sequential-iterator.cc (process): only process if moment >= 0. * lily/parser.yy (command_element): \quote DURATION NAME: support - cue notes. + cue notes. * lily/quote-iterator.cc (class Quote_iterator): new file. @@ -1696,7 +1696,7 @@ makes sure that all ties are noticed at the right moment. (stop_translation_timestep): clear tie only when right-side notehead was seen. - (number_accidentals_from_sig): cleanup. + (number_accidentals_from_sig): cleanup. * input/regression/accidental-tie.ly (mus): new file @@ -1765,7 +1765,7 @@ beam gaps. * lily/note-spacing.cc (get_spacing): less space at EOL in case of - key/clef/time signatures. + key/clef/time signatures. * input/test/ossia.ly: revise example. @@ -1858,15 +1858,15 @@ into Context. * lily/include/context.hh (Translator): new class: put between - Translator and Translator_group. + Translator and Translator_group. * lily/new-accidental-engraver.cc: remove file. 2004-02-16 Heikki Junes - * input/regression/{many}.ly: improve descriptions: use complete - sentences, try to describe what is tested, avoid `we´, do not use - don't, ... + * input/regression/{many}.ly: improve descriptions: use complete + sentences, try to describe what is tested, avoid `we´, do not use + don't, ... 2004-02-15 Heikki Junes @@ -1931,7 +1931,7 @@ * input/test/maximum-rest-count.ly: remove file. * scripts/convert-ly.py (FatalConversionError.subst_in_trans): - conversion rule for \translator { }. Apply everywhere. + conversion rule for \translator { }. Apply everywhere. * lily/parser.yy (music_property_def): set property for \once in the PropertyMusic itself, not the ContextSpec. @@ -1963,7 +1963,7 @@ have taken place. * lily/simple-spacer.cc (solve): cleanup: remove code for linelen - < 0 case. + < 0 case. * VERSION: 2.1.22 released @@ -1972,7 +1972,7 @@ 2004-02-13 Jan Nieuwenhuizen * input/: Convert ly files that still had \property. Fixes make - web. Remove exta spaces around '='. + web. Remove exta spaces around '='. * scripts/convert-ly.py (conv): Redundant space fixes. @@ -1984,7 +1984,7 @@ create scalable PS and PDFs for input/{test,template,regression}. * lily/context.cc (is_alias): move function. - (is_alias): add Bottom as context alias. + (is_alias): add Bottom as context alias. (find_create_translator): add Bottom as a context alias for creation. * lily/stencil.cc: rename Molecule to Stencil. Changes throughout. @@ -1993,7 +1993,7 @@ assignments: \set A.B = #C , \unset A.B - \override A.B #C = #D, \revert A.B #C + \override A.B #C = #D, \revert A.B #C * lily/my-lily-lexer.cc: remove \property @@ -2022,7 +2022,7 @@ markup-commands.tely * scm/define-markup-commands.scm (override): new file. - Move documentation from refman into doc-strings. + Move documentation from refman into doc-strings. * input/test/staff-container.ly: fix example. @@ -2034,7 +2034,7 @@ (get_paper): remove preset_extent. * scm/define-grobs.scm (all-grob-descriptions): remove - point_dimension_callback. + point_dimension_callback. * lily/dynamic-engraver.cc (acknowledge_grob): attach dynamic textscript to head. This makes no-spacing-rods work on @@ -2085,7 +2085,7 @@ * lily/tuplet-engraver.cc: remove tupletInvisible * scm/define-translator-properties.scm: cleanup, separate in - internal and user props. + internal and user props. * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): change LyricsVoice -> Lyrics @@ -2132,7 +2132,7 @@ * scripts/lilypond-book.py (do_file): Look for input_file in include path, or ask kpathsea if LATEX. - * input/template/GNUmakefile (LILYPOND_BOOK_FLAGS): + * input/template/GNUmakefile (LILYPOND_BOOK_FLAGS): * input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): * input/regression/GNUmakefile (LILYPOND_BOOK_FLAGS): Use --header=texidoc. @@ -2185,14 +2185,14 @@ * VERSION: release 2.1.20 - * scm/part-combiner.scm (determine-split-list): robustness fix + * scm/part-combiner.scm (determine-split-list): robustness fix - * lily/paper-score.cc (process): move gc stat stuff to init.ly + * lily/paper-score.cc (process): move gc stat stuff to init.ly * lily/parser.yy (music_output_def_body): plug memory leak. * lily/translator-group.cc (add_fresh_group_translator): plug - memory leak: unprotect Translator_group once added. + memory leak: unprotect Translator_group once added. * lily/span-dynamic-performer.cc (process_music): deprecate span-type. @@ -2236,7 +2236,7 @@ (Lilypond_snippet.__init__): new class (Lilypond_snippet.get_hash): bugfix: use full body for hashing. - * Documentation/user/refman.itely (Sound): + * Documentation/user/refman.itely (Sound): note about number of channels. * scm/music-functions.scm (voicify-music): add \context Staff for @@ -2299,7 +2299,7 @@ 2004-02-06 Han-Wen Nienhuys - * scripts/hw-lilypond-book.py (Snippet.output_print_filename): + * scripts/hw-lilypond-book.py (Snippet.output_print_filename): * scm/define-translator-properties.scm (drumPitchTable): add property. @@ -2337,7 +2337,7 @@ make rest-collision only. * lily/break-substitution.cc (substitute_one_mutable_property): - clear all-elements using scm_assq_remove_x(). + clear all-elements using scm_assq_remove_x(). * lily/rest-collision.cc (do_shift): shift single rests @@ -2356,7 +2356,7 @@ * buildscripts/lilypond.words.py (F): remove drums.scm reference. - * Grand 2003 -> 2004 search replace. + * Grand 2003 -> 2004 search replace. * lily/parser.yy (chord_body_element): add DRUM_PITCH to chords (i.e. < > ) @@ -2377,15 +2377,15 @@ * lily/new-lyric-combine-music-iterator.cc (find_voice): make sure that associatedVoiceContext is always assigned when music & lyrics - are found. + are found. * ly/engraver-init.ly: remove Lyrics context. (TabVoice): add noteheads engraver - * input/test/improv.ly: update: do not use Thread switching. + * input/test/improv.ly: update: do not use Thread switching. * lily/pitch-squash-engraver.cc (acknowledge_grob): only squash if - squashedPosition is a number + squashedPosition is a number * Documentation/user/refman.itely (Automatic note splitting): remove Thread references. @@ -2435,7 +2435,7 @@ * lily/parser.yy (simple_element): add \drums mode. (simple_element): remove \pitchnames , \chordmodifiers. Use - variables to store this. + variables to store this. * lily/lexer.ll (My_lily_lexer): remove support for \PITCHNAME outside \notes. @@ -2455,12 +2455,12 @@ * lily/include/music-iterator.hh (class Music_iterator): remove Music_iterator::skip and Music_iterator::get_pending_events from - interface. Rename report_to -> get_outlet + interface. Rename report_to -> get_outlet * lily/auto-change-iterator.cc: move contents from new-auto-change-iterator.cc from - * scm/part-combiner.scm: determine split-list from Scheme. + * scm/part-combiner.scm: determine split-list from Scheme. * lily/new-auto-change-iterator.cc (process): new file. @@ -2522,7 +2522,7 @@ * lily/slur.cc (height): robustness fix. - * lily/new-part-combine-iterator.cc (process): add apart-spanner. + * lily/new-part-combine-iterator.cc (process): add apart-spanner. * input/mutopia/F.Schubert/morgenlied.ly (melody): revert stemUp/stemDown. @@ -2607,11 +2607,11 @@ * lily/new-lyric-combine-music-iterator.cc (find_context_below): use is_alias() iso. == . This fixes lyrics on - GregorianTranscriptions. + GregorianTranscriptions. 2004-02-02 Mats Bengtsson - * scripts/lilypond.py (ly_paper_to_latexpaper): Add newline before + * scripts/lilypond.py (ly_paper_to_latexpaper): Add newline before \thispagestyle{lastpage} to avoid that it's printed on the second last page when there's only a single score line on the last page. (The page breaking mechanism in TeX played some ugly tricks to us.) @@ -2687,13 +2687,13 @@ * Documentation/topdocs/NEWS.texi: Add note about safe mode. - * input/no-notation/dos-guile.ly: - * input/no-notation/dos-ps.ly: + * input/no-notation/dos-guile.ly: + * input/no-notation/dos-ps.ly: * input/no-notation/dos-tex.ly: New file. These tests still FAIL. * input/no-notation/safe-include.ly: * input/no-notation/safe-guile.ly: - * input/no-notation/safe-ps.ly: + * input/no-notation/safe-ps.ly: * input/no-notation/safe-tex.ly: New file. * scripts/lilypond.py (global_latex_preamble): Add \nofiles for @@ -2702,7 +2702,7 @@ (run_lilypond): When in --safe-mode, pass option to lilypond-bin. When in --safe-mode, set environment openout_any=p[aranoid]. - * tex/ltest.tex: + * tex/ltest.tex: * tex/lilyponddefs.tex: Add \nofiles. * python/lilylib.py (get_bbox, make_ps_images): Add -dSAFER to gs @@ -2712,7 +2712,7 @@ This allows building the user manual using a binary installation and a matching unpacked source tree. - * scm/lily.scm (safe-module): New variable. + * scm/lily.scm (safe-module): New variable. * lily/includable-lexer.cc (new_input): Fix error messages. @@ -2742,7 +2742,7 @@ * scm/music-functions.scm (determine-split-list): bugfix: only use new-active for both voices if both indexes advance. This fixes the - biggest outstanding problem with new-pc. + biggest outstanding problem with new-pc. * lily/new-part-combine-iterator.cc (construct_children): set more directions. @@ -2759,7 +2759,7 @@ * lily/auto-beam-engraver.cc (create_beam): opps. Don't use make_spanner(). - * lily/a2-engraver.cc (process_acknowledged_grobs): + * lily/a2-engraver.cc (process_acknowledged_grobs): * lily/text-engraver.cc: remove scriptHorizontal property. @@ -2802,7 +2802,7 @@ * Documentation/user/{introduction.itely,refman.itely, converters.itely}: fix some text inside parentheses; text should - be readable (even) if parentheses are either replaced with commas + be readable (even) if parentheses are either replaced with commas or dropped out. 2004-01-25 Werner Lemberg @@ -2835,7 +2835,7 @@ for Fingering. * lily/side-position-interface.cc (out_of_staff): don't do - anything if staff-padding not defined. + anything if staff-padding not defined. * mf/feta-params.mf (stafflines): introduce linethickness as general blackness of the font. @@ -2843,7 +2843,7 @@ * lily/stem.cc (position_noteheads): rounding error robustness. * input/regression/rest-collision-beam.ly: move beam/rest stuff - from beam-collision.ly + from beam-collision.ly * lily/beam.cc (rest_collision_callback): remove direction. @@ -2874,7 +2874,7 @@ 2004-01-24 Han-Wen Nienhuys * Documentation/user/refman.itely (Fingering instructions): add - single note chords. + single note chords. * lily/multi-measure-rest-engraver.cc: use a single MultiMeasureEvent for mm rests. This prevents problems with the @@ -2883,7 +2883,7 @@ * scm/music-functions.scm (determine-split-list): analysis has global effect: a difference halfway a phrase makes the entire phrase be typeset as apart. - (make-multi-measure-rest): make mmrest as a single rhythmic event. + (make-multi-measure-rest): make mmrest as a single rhythmic event. 2004-01-23 Han-Wen Nienhuys @@ -2926,7 +2926,7 @@ * VERSION: release 2.1.14 - * Documentation/topdocs/INSTALL.texi (Top): fix FTP url. + * Documentation/topdocs/INSTALL.texi (Top): fix FTP url. * lily/side-position-interface.cc (general_side_position): add Staff_symbol_referencer::staff_space (). @@ -2943,7 +2943,7 @@ * lily/stem.cc (calc_stem_info): use Staff_symbol_referencer::staff_space - * lily/beam-quanting.cc (quanting): scale Stem_info + * lily/beam-quanting.cc (quanting): scale Stem_info * lily/beam.cc (rest_collision_callback): use minimum-distance property for rest/beam collisions. @@ -2956,7 +2956,7 @@ voices, only analyze "one" and "two". * lily/recording-group-engraver.cc (finalize): bugfix: want self, - not parent. + not parent. * lily/new-part-combine-iterator.cc (construct_children): create Devnull from Voice context @@ -2993,7 +2993,7 @@ * lily/new-part-combine-iterator.cc: more states. - * lily/moment.cc (LY_DEFINE): new function ly:moment @@ -3133,7 +3133,7 @@ functionally identical to beam. * lily/mensural-ligature.cc (brew_flexa): replace horizontal_slope - () with beam (). + () with beam (). * Documentation/user/refman.itely (Rehearsal marks): document new functionality. @@ -3170,7 +3170,7 @@ * input/regression/balloon.ly: new file. * lily/balloon.cc (brew_molecule): new file: draw boxes around - objects, and make help texts. + objects, and make help texts. * scm/new-markup.scm (parse-simple-duration): parse duration string to log & dots. (Thanks Nicolas!) @@ -3196,9 +3196,9 @@ * scm/output-ascii-script.scm (bracket): rounding bfs. - * scripts/convert-ly.py (conv): add \include "paper" rule. + * scripts/convert-ly.py (conv): add \include "paper" rule. - * ly/paper*.ly: remove files. + * ly/paper*.ly: remove files. * scm/paper.scm (set-staff-size): new function: set default staff-size. @@ -3209,11 +3209,11 @@ function. * scm/paper.scm: new file. - (set-staff-size): new function + (set-staff-size): new function (set-paper-size): new function * lily/parser.yy (music_output_def_body): restructure definition, - so first Scheme statement in \paper also happens in new scope. + so first Scheme statement in \paper also happens in new scope. * lily/system.cc (post_processing): move uniquify_list () to dumping molecule stage. @@ -3236,9 +3236,9 @@ * VERSION: release 2.1.10 - * input/{test,regression}/: remove old-relative + * input/{test,regression}/: remove old-relative - * lily/lexer.ll: add empty markup signature. + * lily/lexer.ll: add empty markup signature. * scm/new-markup.scm (markup-functions-and-signatures): reinstate strut markup @@ -3255,7 +3255,7 @@ dash-period < 0. * scm/midi.scm (instrument-equalizer-alist): fix equalizer setting - for flute. + for flute. 2004-01-15 Han-Wen Nienhuys @@ -3281,7 +3281,7 @@ * lily/sequential-iterator.cc (run_always): implement run_always(). (also in other files.) - * input/mutopia/F.Schubert/standchen.ly: use newaddlyrics. + * input/mutopia/F.Schubert/standchen.ly: use newaddlyrics. * lily/event.cc (to_relative_octave): add octave-check. @@ -3304,7 +3304,7 @@ * lily/break-align-interface.cc: add doco - * Documentation/user/refman.itely (Rehearsal marks): add index marks. + * Documentation/user/refman.itely (Rehearsal marks): add index marks. 2004-01-13 Han-Wen Nienhuys @@ -3312,7 +3312,7 @@ * scm/document-markup.scm (markup-doc-node): add note about naming. - * scm/new-markup.scm (left-align-markup): bugfix. + * scm/new-markup.scm (left-align-markup): bugfix. * Documentation/user/refman.itely (Ottava brackets): more doco for ottava. @@ -3353,7 +3353,7 @@ string def. * Documentation/user/refman.itely (Rhythmic music): add link to - RhythmicStaff + RhythmicStaff 2004-01-10 Han-Wen Nienhuys @@ -3364,7 +3364,7 @@ * lily/*.cc: remove superfluous start_translation_timestep() calls. - * lily/translator-group.cc (get_simple_trans_list): + * lily/translator-group.cc (get_simple_trans_list): new function; construct simple_trans_list_ lazily. 2004-01-10 Jan Nieuwenhuizen @@ -3411,7 +3411,7 @@ process_music (). Now staffs can be adjusted with \override too. (Jan, you are a brilliant programmer!) - * lily/chord-tremolo-engraver.cc (try_music): fix spurious warning. + * lily/chord-tremolo-engraver.cc (try_music): fix spurious warning. 2004-01-09 Mats Bengtsson @@ -3421,10 +3421,10 @@ 2004-01-08 Han-Wen Nienhuys * lily/translator-def.cc (get_translator_names): accept user - tweaks too. + tweaks too. * mf/feta-bolletjes.mf (overdone_heads): oops, slashes are twice - as big as normal heads. + as big as normal heads. * input/*ly: run convert-ly @@ -3445,13 +3445,13 @@ * lily/translator-def.cc (add_context_mod): rewrite Translator_def to use read-only lists, so additions to the definition can be - prepended easily. + prepended easily. * Documentation/user/invoking.itexi (Editor support): add node on editor support. * Documentation/user/refman.itely (Bar check): add lyrics example - of bar checks. + of bar checks. * input/mutopia/F.Schubert/morgenlied.ly: add bar checks. @@ -3467,7 +3467,7 @@ 2004-01-07 Han-Wen Nienhuys * Documentation/user/refman.itely (Bar lines): clarification of - systemStartDelimiter. + systemStartDelimiter. * input/test/slur-shape.ly (x): remove file. @@ -3490,7 +3490,7 @@ * input/regression/collision-merge-dots.ly: new file. * lily/note-collision.cc (check_meshing_chords): if merging heads, - then kill the dots too. + then kill the dots too. * lily/separating-line-group-engraver.cc (acknowledge_grob): set/unset breakableSeparationItem @@ -3508,7 +3508,7 @@ * input/regression/multi-measure-rest-multi-staff-center.ly: new file. - * lily/system.cc (output_lines): don't suicide Spacing_items. + * lily/system.cc (output_lines): don't suicide Spacing_items. * lily/dot-column.cc (dot_config_badness): new function: select the best scoring dot configuration: dots should go close to @@ -3523,7 +3523,7 @@ * lily/include/scm-hash.hh (class Scheme_hash_table): idem. - * flower/include/interval.hh: rename elem_b to contains + * flower/include/interval.hh: rename elem_b to contains * lily/tie.cc: change 'heads to 'head-pair. @@ -3536,7 +3536,7 @@ * lily/beam-quanting.cc (score_slopes_dy): add extra points for near-zero slopes. - Only do DAMPING_DIRECTION_PENALTY for non-horizontal dy + Only do DAMPING_DIRECTION_PENALTY for non-horizontal dy * lily/dots.cc: remove quantized_position callback. All Y positioning is done by dot-column.cc @@ -3553,7 +3553,7 @@ 2004-01-05 Jan Nieuwenhuizen - * input/mutopia/E.Satie/petite-ouverture-a-danser.ly: + * input/mutopia/E.Satie/petite-ouverture-a-danser.ly: * input/les-nereides.ly: Use latin1 characters for title, like Morgenlied. @@ -3609,7 +3609,7 @@ acknowledge_grob lyric-syllable, not lyric-text. * lily/hyphen-spanner.cc (brew_molecule): rewrite. Make multiple - dashes of length #'length separated by #'dash-period. + dashes of length #'length separated by #'dash-period. * lily/lyric-extender.cc (brew_molecule): idem @@ -3648,7 +3648,7 @@ lyric-extender support: add note-heads to the extender automatically. - * lily/parser.yy: extender is now post_event. + * lily/parser.yy: extender is now post_event. * lily/accidental-engraver.cc (number_accidentals): remove spurious warning about non-parent contexts. @@ -3660,7 +3660,7 @@ fixes. * lily/slur.cc (brew_molecule): don't use stafflinethickness - doubly in slur weight. + doubly in slur weight. * input/regression/prefatory-spacing-matter.ly (TODO): add clef :| combination. @@ -3682,7 +3682,7 @@ * lily/melisma-engraver.cc (try_music): use melisma_busy() - * lily/lyric-engraver.cc (process_music): remove alignment kludge + * lily/lyric-engraver.cc (process_music): remove alignment kludge * lily/lyric-combine-music-iterator.cc (melisma_busy): new function. @@ -3729,7 +3729,7 @@ it is a string or number. * scm/output-lib.scm (note-head-style->attachment-coordinates): - change calling convention of stem-attachment function. + change calling convention of stem-attachment function. * buildscripts/mf-to-table.py: read and dump WX/WY fields @@ -3745,17 +3745,17 @@ * lily/include/font-metric.hh (struct Font_metric): add methods get_indexed_wxwy (), make a distinction between looking up by - index and ASCII + index and ASCII * mf/feta-bolletjes.mf: rewrite note head MF code. - (test_outlines): make heads more rotund for smaller sizes. + (test_outlines): make heads more rotund for smaller sizes. 2003-12-29 Han-Wen Nienhuys * mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt throughout. Font scaling fixes throughout. - * mf/feta-sleur,slur.mf: remove. + * mf/feta-sleur,slur.mf: remove. * mf/feta-slag.mf: rewrite. @@ -3771,7 +3771,7 @@ \default. (backportme) * stepmake/stepmake/automatically-generated.sub.make (default): - use -n for head/tail commands. + use -n for head/tail commands. * lily/tie-engraver.cc (acknowledge_grob): make ties only for note heads with the same pitch. @@ -3781,7 +3781,7 @@ * lily/recording-group-engraver.cc (finalize): set protected_scm member to '() before finalizing. - * lily/translator-group.cc (finalize): remove removal_processing () + * lily/translator-group.cc (finalize): remove removal_processing () * lily/recording-group-engraver.cc: new engraver: record synchronized start & end times for each music object. @@ -3829,7 +3829,7 @@ * VERSION: 2.1.1 released * Documentation/user/refman.itely (Tuning objects): add note about - concurrent tweaks in different contexts. + concurrent tweaks in different contexts. * lily/tie-engraver.cc (acknowledge_grob): use Staff_symbol_referencer::get_position iso. reading staff-position @@ -3860,7 +3860,7 @@ 2003-11-05 Mats Bengtsson - * mf/GNUmakefile (SAUTER_FONTS): Added cmss14, + * mf/GNUmakefile (SAUTER_FONTS): Added cmss14, cmbxti6, cmcsc8, cmss14, cmtt5 and cmtt7. Removed cmbx5, cmbx6 (which are included in teTeX) and cmbxti14 which is not used in fonts.scm. @@ -3964,7 +3964,7 @@ (Lyric_combine_music_iterator): change init order, to prevent GC segfaults. - * lily/context-specced-music-iterator.cc (construct_children): + * lily/context-specced-music-iterator.cc (construct_children): only change translator if found. This fixes a core dump problem. 2003-09-30 Han-Wen Nienhuys @@ -3980,11 +3980,11 @@ * mf/feta-banier.mf: don't draw stem with flag, just small square attachment. - * mf/feta-bolletjes.mf (slash_slope): remove ledger ending + * mf/feta-bolletjes.mf (slash_slope): remove ledger ending * mf/feta-banier.mf: remove upstem/downstem characters. - * mf/feta-params.mf (stafflines): stems are 1.3 SLT. + * mf/feta-params.mf (stafflines): stems are 1.3 SLT. * ly/params-init.ly (blotdiameter): set blotdiameter to 2/3 of stafflinethickness (in the default) @@ -4010,13 +4010,13 @@ 2003-09-29 Jan Nieuwenhuizen - * cygwin/postinstall-lilypond.sh: + * cygwin/postinstall-lilypond.sh: * cygwin/postremove-lilypond.sh: Bugfix for fonts remove command (Volker Zell). 2003-09-29 Han-Wen Nienhuys - * scripts/lilypond-book.py: resurrect 'eps' option. + * scripts/lilypond-book.py: resurrect 'eps' option. (TexiPaper.to_eps): use -Ppdf for EPS files. * VERSION (PATCH_LEVEL): branch off 2.0, go to 2.1 in HEAD @@ -4037,7 +4037,7 @@ * lily/skyline.cc (merge_skyline): new function (heighten_skyline): new function - * lily/accidental-placement.cc (position_accidentals) + * lily/accidental-placement.cc (position_accidentals) (position_accidentals): fix todo. 2003-09-28 Han-Wen Nienhuys @@ -4054,7 +4054,7 @@ * lily/midi-stream.cc (operator <<): rewrite. - * lily/note-head.cc (internal_brew_molecule): + * lily/note-head.cc (internal_brew_molecule): only make ledgers when the Staff symbol has lines. * ly/property-init.ly (arpeggioBracket): simplify @@ -4092,12 +4092,12 @@ 2003-09-27 Han-Wen Nienhuys - * scripts/lilypond.py (escape_path): escape quotes too. + * scripts/lilypond.py (escape_path): escape quotes too. * Documentation/user/lilypond.tely (Unified index): rename Index to accomodate Windows breakage. - * make/lilypond.redhat.spec.in (Group): remove out=www for web-install + * make/lilypond.redhat.spec.in (Group): remove out=www for web-install * mf/GNUmakefile ($(outdir)/%.afm $(outdir)/%.enc $(outdir)/%.tex $(outdir)/%.dep $(outdir)/%list.ly): list.ly is a @@ -4144,7 +4144,7 @@ non-string articulation-type. * lily/new-fingering-engraver.cc (add_script): don't crash on - 0 scripts + 0 scripts (acknowledge_grob): warn about text script events. 2003-09-24 Heikki Junes @@ -4183,7 +4183,7 @@ * input/regression/hairpin-dashed.ly (texidoc): doc string. * lily/parser.yy (step_number): semitones for chord entry too. - (make_chord_step): more robust code, semitones. + (make_chord_step): more robust code, semitones. * input/regression/breathing-sign-ancient.ly (texidoc): new file. @@ -4216,7 +4216,7 @@ 2003-09-23 Han-Wen Nienhuys - * mf/GNUmakefile (pfa_warning): instruct + * mf/GNUmakefile (pfa_warning): instruct * stepmake/aclocal.m4: typo. @@ -4228,9 +4228,9 @@ * GNUmakefile.in (SUBDIRS): Add elisp. - * elisp/lilypond-mode.el: - * elisp/lilypond-init.el: - * elisp/lilypond-indent.el: + * elisp/lilypond-mode.el: + * elisp/lilypond-init.el: + * elisp/lilypond-indent.el: * elisp/lilypond-font-lock.el: Move from top dir. * stepmake/stepmake/elisp-vars.make: New file. @@ -4317,7 +4317,7 @@ * cygwin/mknetrel: Remove PYTHONPATH and manpage workarounds. * stepmake/stepmake/generic-targets.make: - * stepmake/stepmake/bin/make-version.py: + * stepmake/stepmake/bin/make-version.py: * stepmake/aclocal.m4: * make/stepmake.make: * make/toplevel-version.make: Build fixes: remove last traces of @@ -4359,7 +4359,7 @@ * mf/GNUmakefile: always trace pfa fonts. (SAUTER_FONTS): add cmss[567] too fonts - * configure.in: require mftrace. + * configure.in: require mftrace. * lily/staff-performer.cc (new_instrument_string): don't look at instrument property. @@ -4393,7 +4393,7 @@ * lily/parser.yy: Compile fix: add stdio.h for snprintf. - * stepmake/stepmake/help2man-rules.make: + * stepmake/stepmake/help2man-rules.make: * cygwin/mknetrel: Bugfix for manpages. * GNUmakefile.in (SUBDIRS): Use plain srcdir stepmake instead of @@ -4422,7 +4422,7 @@ * cygwin/GNUmakefile: * cygwin/lily-wins.py: - * cygwin/postremove-lilypond.sh: + * cygwin/postremove-lilypond.sh: * cygwin/postinstall-lilypond.sh: Merge from stable. * cygwin/bug-lilypond-cygwin.sh: s/lilypond/lilypond-bin, @@ -4470,16 +4470,16 @@ * lilypond-mode.el: take note names from lilypond.words -file. small fix in the use of string-match. - * lilypond-font-lock.el: use lilypond.words for note names, add + * lilypond-font-lock.el: use lilypond.words for note names, add maxima to note a duration. 2003-09-18 Han-Wen Nienhuys - * lily/breathing-sign.cc: remove railtracks() function. + * lily/breathing-sign.cc: remove railtracks() function. * input/regression/arpeggio-bracket.ly (texidoc): add file. - * lily/arpeggio.cc (brew_chord_bracket): clean-up + * lily/arpeggio.cc (brew_chord_bracket): clean-up (brew_molecule): bugfix don't make arpeggio shorter when arpeggio-direction is set. @@ -4542,7 +4542,7 @@ * ly/LANGUAGEs.ly: use symbols for alterations. - * mf/feta-toevallig.mf: change accidental codes. + * mf/feta-toevallig.mf: change accidental codes. * scm/lily.scm (ly:get-option): switch on debugging only for --verbose. @@ -4601,13 +4601,13 @@ * input/test/explicit.ly: remove file. - * Documentation/user/refman.itely (Pitches): remove \pitch + * Documentation/user/refman.itely (Pitches): remove \pitch \duration command. 2003-09-16 Heikki Junes * buildscripts/lilypond.words.py: add all slur types to Emacs - insertion menu, suppose everything is postfixed by dropping + insertion menu, suppose everything is postfixed by dropping unnecessary `-' -marks. 2003-09-15 Han-Wen Nienhuys @@ -4650,11 +4650,11 @@ * scm/chord-name.scm: remove new-chord-name-brew-molecule ; use ChordNames.SeparationItem #'padding for adjusting space after chords. - * lily/music-output-def.cc (LY_DEFINE): + * lily/music-output-def.cc (LY_DEFINE): new function ly:paper-lookup. * mf/parmesan-clefs.mf: use # quantities for char_box - offsets. Fixes overflow errors in the PFA. + offsets. Fixes overflow errors in the PFA. * scm/new-markup.scm (strut-markup): change calling interface for markup. Pass paper-def, not grob. This would allow \markup to be @@ -4689,7 +4689,7 @@ * input/regression/ottava.ly (texidoc): demo 15ma too. - * GNUmakefile.in ($(outdir)/VERSION): add VERSION target + * GNUmakefile.in ($(outdir)/VERSION): add VERSION target * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly (sarabandeA): octave fixes. @@ -4729,7 +4729,7 @@ * configure.in: release 1.9.5 * scripts/lilypond.py (global_latex_preamble): only set - twosideshift if 'twoside' is in latexoptions + twosideshift if 'twoside' is in latexoptions * stepmake/GNUmakefile.in: remove nested stepmake packaging stuff. @@ -4753,7 +4753,7 @@ * scm/define-grob-properties.scm (remove-first): add remove-first property for orchestral scores. - * Documentation/user/*.itely: switch <<>> and <> + * Documentation/user/*.itely: switch <<>> and <> * lily/glissando-engraver.cc (process_music): bugfix: move line to last_line only once. This fixes the two consecutive glissandi problem. @@ -4888,7 +4888,7 @@ * scripts/convert-ly.py (FatalConversionError.figures_replace): rule for < > <-> << >> substitution - * lily/lexer.ll: exchange meaning of << >> and < > + * lily/lexer.ll: exchange meaning of << >> and < > * VERSION (PACKAGE_NAME): 1.9.3 released @@ -4906,7 +4906,7 @@ * input/regression/tag-filter.ly (texidoc): new file. * lily/parser.yy (post_event): add \tag #'symbol / \tag #'(symbol1 - symbol2 .. ) etc. + symbol2 .. ) etc. * scripts/convert-ly.py (FatalConversionError.conv): fingering convert rule. @@ -4971,7 +4971,7 @@ 2003-08-28 Heikki Junes * lilypond.words: add \new and new graces. Add dynamics to menus - keeping 1.8.x compatibility; after all the engraving relating to + keeping 1.8.x compatibility; after all the engraving relating to notes becomes postfixed `-' marks will be removed. 2003-08-28 Han-Wen Nienhuys @@ -5040,7 +5040,7 @@ * lily/translator-scheme.cc (LY_DEFINE): ly:context-pushpop-property new function. - (LY_DEFINE): new function ly:translator-find + (LY_DEFINE): new function ly:translator-find new function ly:translator? (LY_DEFINE): new function ly:context? @@ -5073,7 +5073,7 @@ 2003-08-26 Han-Wen Nienhuys - * VERSION (PACKAGE_NAME): released 1.9.1 + * VERSION (PACKAGE_NAME): released 1.9.1 * ly/engraver-init.ly (RemoveEmptyStaffContext): don't add Instrument_name_engraver @@ -5131,7 +5131,7 @@ * scripts/convert-ly.py (conv): dashes rule. Apply rule. - * Documentation/user/lilypond-book.itely: syntax fixes. + * Documentation/user/lilypond-book.itely: syntax fixes. 2003-08-25 Han-Wen Nienhuys @@ -5193,14 +5193,14 @@ * input/mutopia/J.S.Bach/bwv940.ly: add 1 petite prelude * input/mutopia/J.S.Bach/GNUmakefile (EXTRA_DIST_FILES): remove - Petites-Preludes + Petites-Preludes * input/test/partial-blank.ly (quickmeasure): syntax * lily/slur.cc (get_attachment): bugfix: don't crash on non-cons attachment property. - * Documentation/user/refman.itely: remove superfluous -'s + * Documentation/user/refman.itely: remove superfluous -'s (Grace notes): ) fixes. * lily/music.cc: generic compress(), transpose() functions. Remove @@ -5255,7 +5255,7 @@ 2003-08-20 Han-Wen Nienhuys - * lily/paper-outputter.cc (write_header_fields_to_file): + * lily/paper-outputter.cc (write_header_fields_to_file): only dump value if it is a string. * flower/include/dictionary.hh: remove. @@ -5385,8 +5385,8 @@ input/mutopia/J.S.Bach/baerenreiter-sarabande.ly input/mutopia/J.S.Bach/wtk1-fugue1.ly input/mutopia/J.S.Bach/wtk1-prelude1.ly - Documentation/topdocs/INSTALL.texi: `bug'fix: a colon `:' is - added (only) after a sentence which is complete; if the sentence is + Documentation/topdocs/INSTALL.texi: `bug'fix: a colon `:' is + added (only) after a sentence which is complete; if the sentence is not ended a comma `,' or nothing is used. fix also spaces. 2003-08-08 Han-Wen Nienhuys @@ -5543,7 +5543,7 @@ * lily/all-font-metrics.cc (find_font): load AFM files first only for feta fonts. This fixes problems with TeXlive and other TeX - distros that include AFM files for the CM fonts. + distros that include AFM files for the CM fonts. * scm/font.scm (qualifiers-to-font-name): remove. @@ -5565,13 +5565,13 @@ * lilypond-mode.el: Add each word to regexps only once. - * lilypond-mode.el (LilyPond-insert-tag): add new function, which - is based on the syntax definitions in lilypond.words. Remove all - LilyPond-insert-tag-* functions. Restructure LilyPond menu. - LilyPond->Insert menu is generated by the entries in lilypond.words + * lilypond-mode.el (LilyPond-insert-tag): add new function, which + is based on the syntax definitions in lilypond.words. Remove all + LilyPond-insert-tag-* functions. Restructure LilyPond menu. + LilyPond->Insert menu is generated by the entries in lilypond.words to which have been given a syntax definition. - * lilypond.words: give syntax definitions (LilyPond-insert-tag) for + * lilypond.words: give syntax definitions (LilyPond-insert-tag) for \notes, \relative, \score, \simultaneous, \transpose. * lilypond-mode.el: allow non-alpha characters only in menu keywords. @@ -5589,7 +5589,7 @@ 2003-07-31 Heikki Junes - * lilypond-mode.el: Junk LilyPond-quick-notes-insert; instruct + * lilypond-mode.el: Junk LilyPond-quick-notes-insert; instruct to use LilyPond Quick Insert Mode by Nicolas Sceaux, instead. * Documentation/user/music-glossary.tely: update legato. @@ -5639,7 +5639,7 @@ on slur/tie endings. * input/regression/font-name.ly: don't use PS fonts for - compatibility reasons. + compatibility reasons. * mutopia/claop.py (accents): update to 1.8 @@ -5657,7 +5657,7 @@ lilypond-internals * Documentation/topdocs/INSTALL.texi (Top): bump GUILE - reqd version to 1.6.4 + reqd version to 1.6.4 * lily/font-interface.cc (get_font): bugfix: take font-name from alist chain too. This fixes font-name override for \markup. @@ -5702,7 +5702,7 @@ 2003-07-27 Heikki Junes - * Documentation/user/{ many }: increase readability (read through + * Documentation/user/{ many }: increase readability (read through User manual from `one big page'). 2003-07-26 Han-Wen Nienhuys @@ -5801,21 +5801,21 @@ * input/test/smart-transpose.ly (texidoc): texidoc compile fix. - * cygwin/changelog: + * cygwin/changelog: * cygwin/mknetrel: Update. * GNUmakefile.in (web-install): Rename (was: install-html-doc). (html-doc): Remove (use: web). - * stepmake/stepmake/script-rules.make: + * stepmake/stepmake/script-rules.make: * stepmake/stepmake/python-module-rules.make ($(outdir)/%.py): Fix $(config_make) dependencies for srcdir build. * stepmake/stepmake/generic-targets.make ($(config_make)): Fix target for srcdir build. - * stepmake/make/stepmake.make: - * make/srcdir.make.in: + * stepmake/make/stepmake.make: + * make/srcdir.make.in: * GNUmakefile.in: * make/stepmake.make (config_make): Rename variable (was: configuration). @@ -5830,7 +5830,7 @@ 2003-07-24 Jan Nieuwenhuizen - * stepmake/GNUmakefile.in (STEPMAKE_TEMPLATES): + * stepmake/GNUmakefile.in (STEPMAKE_TEMPLATES): * stepmake/stepmake/GNUmakefile (STEPMAKE_TEMPLATES): Add www (why do we recurse whole tree?). @@ -5842,7 +5842,7 @@ 2003-07-24 Han-Wen Nienhuys * Documentation/user/refman.itely (Automatic staff changes): - add seealso + add seealso * Documentation/index.html.in: link to bigpage. @@ -5860,7 +5860,7 @@ * Documentation/index.html.in: python style doco index. - * Documentation/{footer,header}.html.in (src): remove, + * Documentation/{footer,header}.html.in (src): remove, * Documentation/pictures: remove all but lelie-logo.xpm. @@ -5874,7 +5874,7 @@ * input/test/bar-number-regular-interval.ly: rename. - * Documentation/user/*: various fixes. + * Documentation/user/*: various fixes. 2003-07-24 Heikki Junes @@ -6041,7 +6041,7 @@ DVIPS_PAPERSIZE variable * stepmake/stepmake/texinfo-rules.make ($(outdir)/%.dvi): add - TEXINFO_PAPERSIZE variable + TEXINFO_PAPERSIZE variable 2003-07-19 Han-Wen Nienhuys @@ -6056,7 +6056,7 @@ * flower/libc-extension.cc (lrint)[!HAVE_LRINT]: Use round () and cast #define. - * configure.in: + * configure.in: * config.hh.in: Check for lrint. 2003-07-19 Han-Wen Nienhuys @@ -6080,7 +6080,7 @@ * Documentation/index.texi (Top): cleanup. * Documentation/user/introduction.itely (Introduction): rewrite - introduction, + introduction, (Music notation and engraving): about notation. Add flat-picture 2003-07-18 Han-Wen Nienhuys @@ -6116,7 +6116,7 @@ 2003-07-18 Heikki Junes - * lilypond-font-lock.el (LilyPond-mode-set-syntax-table, + * lilypond-font-lock.el (LilyPond-mode-set-syntax-table, LilyPond-mode-context-set-syntax-table): new functions to define the syntax table according to context. @@ -6124,7 +6124,7 @@ 2003-07-17 Han-Wen Nienhuys - * Documentation/user/refman.itely (Figured bass): + * Documentation/user/refman.itely (Figured bass): language nit courtesy http://www.vocabula.com * GNUmakefile.in: remove no kpathsea hack. @@ -6135,13 +6135,13 @@ * GNUmakefile.in: remove web-doc target. * lily/all-font-metrics.cc (find_afm): add message about - buildscripts/clean-fonts.sh + buildscripts/clean-fonts.sh * scm/define-music-properties.scm (figure): use string for 'figure - * lily/parser.yy (bass_number): allow strings for bassfigure too. + * lily/parser.yy (bass_number): allow strings for bassfigure too. - * input/regression/ : add raggedright = ##t where applicable. + * input/regression/ : add raggedright = ##t where applicable. * scm/bass-figure.scm (make-bass-figure-markup): add alignBassFigureAccidentals property. @@ -6160,7 +6160,7 @@ * input/test/clef-manual-control.ly: from manual-clef - * input/test/repeat-shorter-bracket.ly: move from coda-kludge + * input/test/repeat-shorter-bracket.ly: move from coda-kludge * input/test/different-time-signatures.ly: move to poly-metric.ly @@ -6225,7 +6225,7 @@ * lily/accidental-engraver.cc: Compile fix: include protected-scm.hh. - * config.hh.in: + * config.hh.in: * python/midi.c: Remove /Python.h ifdef tree. * configure.in: Require PYTHON >= 2.0. @@ -6301,12 +6301,12 @@ m2003-07-15 Han-Wen Nienhuys * scm/define-grobs.scm (all-grob-descriptions): bold tuplet number - * lilypond-indent.el: remove paren matching. + * lilypond-indent.el: remove paren matching. * lily/text-item.cc (interpret_new_markup): new function use iso. text2molecule. - * lily/main.cc (notice): change FSF address + * lily/main.cc (notice): change FSF address * po/de.po: update PO file to 1.6. @@ -6317,7 +6317,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-07-11 Heikki Junes * lilypond-indent.el (LilyPond-paren-set-mode): From XEmacs' paren.el: - Disable buffer-locally default paren hook and make a new one. + Disable buffer-locally default paren hook and make a new one. * lilypond-mode.el: Turn off locally paren-mode, but turn on locally LilyPond-paren-mode. Add todo for mouse double-click. @@ -6325,7 +6325,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-07-10 Heikki Junes * lilypond-indent.el (LilyPond-show-paren-mode): From Emacs' paren.el: - Disable buffer-locally default paren idle timer and make a new one. + Disable buffer-locally default paren idle timer and make a new one. * lilypond-mode.el: Turn off locally show-paren-mode, but turn on locally LilyPond-show-paren-mode. Add to menu a toggle for @@ -6333,7 +6333,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-07-08 Han-Wen Nienhuys - * input/template/jazz-combo.ly (drumNotes): 1.7 fixes + * input/template/jazz-combo.ly (drumNotes): 1.7 fixes 2003-07-09 Heikki Junes @@ -6349,14 +6349,14 @@ m2003-07-15 Han-Wen Nienhuys 2003-07-06 Han-Wen Nienhuys - * mf/feta-toevallig.mf: tweak for bottom of flat sign. + * mf/feta-toevallig.mf: tweak for bottom of flat sign. lo-res fixes. * mf/feta-schrift.mf: bugfix in varcoda sign. WARNING: FONT CHANGED * lily/my-lily-lexer.cc (lookup_identifier): return SCM_UNDEFINED, - in accordance with lexer.ll. + in accordance with lexer.ll. 2003-07-05 Jan Nieuwenhuizen @@ -6378,7 +6378,7 @@ m2003-07-15 Han-Wen Nienhuys * scripts/lilypond-book.py (do_file): put texidoc before image. (TexiPaper.process_ly2dvi_block): make multipage _really_ work. - * input/regression/*.ly: fix snippet octaves + * input/regression/*.ly: fix snippet octaves * input/test/spanner-after-break-tweak.ly: import broken-spanner-adjustment @@ -6397,7 +6397,7 @@ m2003-07-15 Han-Wen Nienhuys * input/test/uniform-breaking.ly: remove file. * lily/gourlay-breaking.cc (combine_demerits): add comment about - uniform spacing density. + uniform spacing density. * input/test/chords.ly (keys): remove file. @@ -6423,13 +6423,13 @@ m2003-07-15 Han-Wen Nienhuys (box-markup): new function. Contributed by Dick Schoeller - * scm/lily.scm: remove reduce-no-unit + * scm/lily.scm: remove reduce-no-unit (list-insert-separator): use fold-right * lily/molecule-scheme.cc (ly_molecule_add): take variable number - of arguments. + of arguments. - * NEWS: more neutral language for ancient notation + * NEWS: more neutral language for ancient notation * lily/chord-tremolo-engraver.cc (acknowledge_grob): only set inside pointing beaming for chord tremolo. @@ -6491,7 +6491,7 @@ m2003-07-15 Han-Wen Nienhuys * VERSION: release 1.7.23 - * scm/new-markup.scm (brew-new-markup-molecule): bugfix + * scm/new-markup.scm (brew-new-markup-molecule): bugfix * python/lilylib.py (make_ps_images): bugfixes. @@ -6509,7 +6509,7 @@ m2003-07-15 Han-Wen Nienhuys * ly/property-init.ly: add all commands to refman. * scm/define-translator-properties.scm: remove - graceAccidentalSpace, graceAlignPosition, keyOctaviation + graceAccidentalSpace, graceAlignPosition, keyOctaviation * mf/parmesan-custodes.mf (dir_down): remove underscore from glyph name. Underscores botch up PS output. @@ -6597,7 +6597,7 @@ m2003-07-15 Han-Wen Nienhuys * scripts/convert-ly.py (FatalConversionError.conv): type -> style conversion - * lily/text-spanner.cc: change 'type grob prop to 'style + * lily/text-spanner.cc: change 'type grob prop to 'style * lily/unfolded-repeat-iterator.cc (process): bugfix: use a "first" flag to decide whether to make a start-repeat @@ -6714,7 +6714,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-06-17 Han-Wen Nienhuys - * scm/music-functions.scm (make-ottava-set): + * scm/music-functions.scm (make-ottava-set): only do ottavation if centralCPosition is set. * lily/translator-scheme.cc (ly:context-property-where-defined): @@ -6743,7 +6743,7 @@ m2003-07-15 Han-Wen Nienhuys * lilypond-indent.el (LilyPond-scan-sexps): new function. Copy definitions of Emacs' show-paren-function and XEmacs' paren-highlight and make minimal changes; - add comments about locality. + add comments about locality. Fix matching first open-paren-char in '<< .. >>'. 2003-06-16 Graham Percival @@ -6768,7 +6768,7 @@ m2003-07-15 Han-Wen Nienhuys * input/regression/size{13--26}.ly: move from input/ * input/{opus-130,praeludium-fuga,scarlatti-*}.ly - input/{star-spangled-banner,twinkle}.ly: remove + input/{star-spangled-banner,twinkle}.ly: remove * lily/slur.cc: remove slur over rest warnings. @@ -6797,7 +6797,7 @@ m2003-07-15 Han-Wen Nienhuys * input/mutopia/F.Schubert/standchen.ly: update syntax. * input/mutopia/E.Satie/petite-ouverture-a-danser.ly (global): - update syntax. + update syntax. * scm/define-grobs.scm (all-grob-descriptions): set knee-spacing-correction to 1.0 @@ -6839,7 +6839,7 @@ m2003-07-15 Han-Wen Nienhuys * input/test/markup.ly: remove * scripts/lilypond-book.py: put printfilename in separate chunk, - so texidoc is printed after the filename. + so texidoc is printed after the filename. 2003-06-12 Heikki Junes @@ -6849,7 +6849,7 @@ m2003-07-15 Han-Wen Nienhuys * input/regression/beam-french.ly: bugfix. - * buildscripts/lys-to-tely.py (name2line): sort filenames. + * buildscripts/lys-to-tely.py (name2line): sort filenames. * input/regression/(various).ly: add raggedright = #t. @@ -6867,9 +6867,9 @@ m2003-07-15 Han-Wen Nienhuys quant penalty for beam just outside staff. * input/regression/beam-quanting-horizontal.ly (texidoc): move - from beam-pos.ly, remove non-horizontal tests. + from beam-pos.ly, remove non-horizontal tests. - * input/test/(various): cleanup header info. + * input/test/(various): cleanup header info. * input/test/tchaikovsky.ly: remove file. @@ -6898,7 +6898,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-06-12 Heikki Junes - * lilypond-indent.el: Fix: match concurrent one-char opening and + * lilypond-indent.el: Fix: match concurrent one-char opening and closing slurs: '()', etc. Add comments. * Documentation/user/music-glossary.tely: fix: change ä to @"a. @@ -6910,8 +6910,8 @@ m2003-07-15 Han-Wen Nienhuys 2003-06-10 Graham Percival * input/test/beam-abbrev.ly input/test/default-neutral-dir.ly - input/test/beam-dir.ly input/test/beam-position.ly - input/test/beam-suspect.ly input/test/beam-trend.ly + input/test/beam-dir.ly input/test/beam-position.ly + input/test/beam-suspect.ly input/test/beam-trend.ly input/test/beams.ly input/test/crescendo-text.ly : deleted * input/test/beam-chord.ly: moved to input/regression/beam-chord.ly * input/test/ beam-pos.ly beam-second.ly : moved to input/regression/ @@ -6939,20 +6939,20 @@ m2003-07-15 Han-Wen Nienhuys * input/ac-extra-voice.ly: Add texidoc. - * ly/chord-modifiers-init.ly: + * ly/chord-modifiers-init.ly: * ly/engraver-init.ly (ScoreContext): Add chordNameExceptionsFull and chordNameExceptionsPartial for new chord names. - * input/test/chord-names-dpnj.ly: + * input/test/chord-names-dpnj.ly: * input/test/dpncnt.ly: Update. - * scm/chord-name.scm: + * scm/chord-name.scm: * scm/double-plus-new-chord-name.scm: Add compatibility for new chord selection and options. - * ly/chord-modifiers-init.ly: Add exceptions + * ly/chord-modifiers-init.ly: Add exceptions - * scm/define-translator-properties.scm (chordNameStyle) + * scm/define-translator-properties.scm (chordNameStyle) (chordNameExceptionsFull, chordNameExceptionsPartial): Add. 2003-06-10 Rune Zedeler @@ -6964,8 +6964,8 @@ m2003-07-15 Han-Wen Nienhuys 2003-06-09 Heikki Junes - * lilypond-indent.el: Use similar parenthesis highlighting for - Emacs and XEmacs through redefinitions of parenthesis highlighting + * lilypond-indent.el: Use similar parenthesis highlighting for + Emacs and XEmacs through redefinitions of parenthesis highlighting functions; removed LilyPond-show-paren-function. Fix indenting. Turn paren-matching on also in XEmacs. @@ -6997,8 +6997,8 @@ m2003-07-15 Han-Wen Nienhuys 2003-06-05 Jan Nieuwenhuizen - * debian/GNUmakefile (EXTRA_DIST_FILES): - * debian/lilypond1.7.dirs: + * debian/GNUmakefile (EXTRA_DIST_FILES): + * debian/lilypond1.7.dirs: * debian/lilypond1.7-doc.dirs: New file. * input/regression/chord-name-exceptions.ly: Add parameter for @@ -7046,7 +7046,7 @@ m2003-07-15 Han-Wen Nienhuys * input/test/[a-c]: more comments in files. * input/test/ac-extra-voice.ly beam-abbrev.ly beam-chord.ly beam-dir.ly - beam-pos.ly beam-position.ly beam-second.ly beam-suspect.ly + beam-pos.ly beam-position.ly beam-second.ly beam-suspect.ly beam-trend.ly beams.ly crescendo-text.ly default-neutral-dir.ly : mark file for proposed deletion. * input/test: renaming files: @@ -7058,7 +7058,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-06-03 Jan Nieuwenhuizen - * input/test/dpncnt.ly: + * input/test/dpncnt.ly: * input/test/chord-names-dpnj.ly: Resurrect. * lily/my-lily-lexer.cc: Remove chordnames keyword. @@ -7081,7 +7081,7 @@ m2003-07-15 Han-Wen Nienhuys * scm/font.scm (as-make-font-list): New function. (as-font-sheet-alist): New variable. - * ly/paper-as9-init.ly: + * ly/paper-as9-init.ly: * ly/paper-as5-init.ly: Update. * ly/paper-as5.ly: @@ -7276,7 +7276,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-05-20 Heikki Junes - * lilypond-mode.el: Remove outdated code. Stress the difference + * lilypond-mode.el: Remove outdated code. Stress the difference between Emacs and XEmacs definitions. * lilypond-mode.el, @@ -7323,7 +7323,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/translator-scheme.cc (LY_DEFINE): new function ly:unset-context-property - (LY_DEFINE) new function ly:context-property-where-defined: + (LY_DEFINE) new function ly:context-property-where-defined: 2003-05-18 Heikki Junes @@ -7336,7 +7336,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-05-17 Han-Wen Nienhuys * scm/define-grobs.scm: uniform naming for definitions and output - routine files. + routine files. * ly/engraver-init.ly (ChoirStaffContext): add \description from scm/context-description.scm @@ -7347,7 +7347,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/ottava-engraver.cc: new file. * scm/chord-name.scm (natural-chord-alteration): replace old - chord stuff. + chord stuff. * input/mutopia/R.Schumann/romanze-op28-2.ly: syntax updates. @@ -7385,7 +7385,7 @@ m2003-07-15 Han-Wen Nienhuys * lilypond-mode.el: Allow Midi on buffer. Use only '.ly'-extension, remove '.sly' and '.fly'. - Allow use of inactive regions. Invoke next Command on Master file, + Allow use of inactive regions. Invoke next Command on Master file, Buffer or Region, if C-cc, C-cb, or C-cr, accordingly, was pressed. 2003-05-14 Han-Wen Nienhuys @@ -7465,7 +7465,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-05-03 Heikki Junes - * lilypond-mode.el: Fix XEmacs: + * lilypond-mode.el: Fix XEmacs: changed [S-iso-lefttab] to [(shift iso-lefttab)], invoke explicitly easy-menu-add (in Emacs done automatically). @@ -7517,7 +7517,7 @@ m2003-07-15 Han-Wen Nienhuys begins. * lily/beam-engraver.cc (acknowledge_grob): set melismata for new - style beams too. + style beams too. * input/regression/lyrics-melisma-beam.ly: new file. @@ -7585,7 +7585,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-04-23 Han-Wen Nienhuys - * Documentation/user/refman.itely: revise + * Documentation/user/refman.itely: revise * Documentation/user/internals.itely: revise @@ -7712,7 +7712,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/new-chord-name-engraver.cc (process_music): use octavation (a number) instead of original-pitch to store inversions. This - fixes a problem with transposed chords with inversions. + fixes a problem with transposed chords with inversions. 2003-04-14 Jan Nieuwenhuizen @@ -7733,7 +7733,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/includable-lexer.cc [!HAVE_FLEXLEXER_YY_CURRENT_BUFFER] (yy_current_buffer): New macro, compile hacks for flex 2.5.29. - * lily/include/includable-lexer.hh: + * lily/include/includable-lexer.hh: * lily/lexer.ll: Hack for multiple include of FlexLexer.h. * config.hh.in (HAVE_FLEXLEXER_YY_CURRENT_BUFFER): Add. @@ -7838,7 +7838,7 @@ m2003-07-15 Han-Wen Nienhuys * Documentation/user/macros.itexi: @fileref macro. * buildscripts/lys-to-tely.py (name2line): add tags for - each file. + each file. 2003-04-04 Juergen Reuter @@ -7883,11 +7883,11 @@ m2003-07-15 Han-Wen Nienhuys 2003-03-28 Han-Wen Nienhuys * scripts/ly2dvi.py (find_pfa_fonts): add --png option - (make_html_menu_file): --html menu. + (make_html_menu_file): --html menu. 2003-03-27 Han-Wen Nienhuys - * scripts/ly2dvi.py (run_dvips): +add the .map file + * scripts/ly2dvi.py (run_dvips): +add the .map file 2003-03-24 Han-Wen Nienhuys @@ -7921,7 +7921,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-03-19 Mats Bengtsson - * Documentation/user/{tutorial.itely,refman.itely,internals.itely}: + * Documentation/user/{tutorial.itely,refman.itely,internals.itely}: Remove all noquote and insert a few quote. * Documentation/user/lilypond-book.itely (Music fragment options), @@ -7936,7 +7936,7 @@ m2003-07-15 Han-Wen Nienhuys * buildscripts/texi2omf.py (omf_vars): include version.date - * make/lilypond.redhat.spec.in: fixes for spec file. + * make/lilypond.redhat.spec.in: fixes for spec file. * stepmake/stepmake/texinfo-vars.make (GENERATE_OMF): replace var by function definition: lily now requires a recent GNU Make. @@ -7975,7 +7975,7 @@ m2003-07-15 Han-Wen Nienhuys * scm/generate-documentation.scm (string-append): add @omf tags. - * stepmake/stepmake/omf-*: new files + * stepmake/stepmake/omf-*: new files * input/regression/multi-measure-rest.ly (texidoc): add doco @@ -8027,11 +8027,11 @@ m2003-07-15 Han-Wen Nienhuys 2003-03-06 Han-Wen Nienhuys - * ly/engraver-init.ly: use Hara kiri by default for - ChordNames, FiguredBass and Lyrics(Voice) context. + * ly/engraver-init.ly: use Hara kiri by default for + ChordNames, FiguredBass and Lyrics(Voice) context. * lily/axis-group-engraver.cc (acknowledge_grob): use - rhythmic-grob-interface for selecting items not to hara-kiri'd + rhythmic-grob-interface for selecting items not to hara-kiri'd * scm/new-markup.scm (markup-function-list): add bracket, vbracket. @@ -8041,11 +8041,11 @@ m2003-07-15 Han-Wen Nienhuys 2003-03-05 Han-Wen Nienhuys - * input/test/time-signature-double.ly: new file + * input/test/time-signature-double.ly: new file * input/regression/collision-head-chords.ly (texidoc): new file. - * lily/type-swallow-translator.cc: add note swallow translator + * lily/type-swallow-translator.cc: add note swallow translator * input/test/time-signature-double.ly: new file. @@ -8056,7 +8056,7 @@ m2003-07-15 Han-Wen Nienhuys * VERSION (MY_PATCH_LEVEL): 1.7.14 released - * input/mutopia/W.A.Mozart/*.ly (romanze): markup syntax updates. + * input/mutopia/W.A.Mozart/*.ly (romanze): markup syntax updates. * buildscripts/mf-to-table.py: add .pfa, .pfb target dependency. @@ -8085,9 +8085,9 @@ m2003-07-15 Han-Wen Nienhuys * scm/new-markup.scm (markup-function-list): add finger-markup - * input/tutorial/brahms-tweaked.ly: new markup + * input/tutorial/brahms-tweaked.ly: new markup - * scm/bass-figure.scm (brew-one-figure): bugfix for large bass figures + * scm/bass-figure.scm (brew-one-figure): bugfix for large bass figures * scm/new-markup.scm (brew-new-markup-molecule): robustness: don't crash when processing '() markup @@ -8096,7 +8096,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/breathing-sign.cc (railtracks): another caesura. - * mf/feta-schrift.mf: caesura symbol. + * mf/feta-schrift.mf: caesura symbol. 2003-03-04 Han-Wen Nienhuys @@ -8117,7 +8117,7 @@ m2003-07-15 Han-Wen Nienhuys * scm/music-functions.scm: remove pitchify scripts. - * lily/music.cc (print_smob): display music name if available + * lily/music.cc (print_smob): display music name if available 2003-03-02 Han-Wen Nienhuys @@ -8145,12 +8145,12 @@ m2003-07-15 Han-Wen Nienhuys 2003-02-25 Jan Nieuwenhuizen - * lily/lexer.ll: - * lily/include/my-lily-lexer.hh: + * lily/lexer.ll: + * lily/include/my-lily-lexer.hh: * lily/include/includable-lexer.hh: Add flex kludge. - * config.hh.in: - * config.make.in: + * config.hh.in: + * config.make.in: * stepmake/aclocal.m4 (STEPMAKE_DATADIR, STEPMAKE_LIBDIR): Junk cruft. @@ -8166,7 +8166,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-02-23 Han-Wen Nienhuys * Documentation/user/refman.itely (Tuning groups of objects): - remove documentation for \turnOff. + remove documentation for \turnOff. * lily/percent-repeat-engraver.cc (try_music): add correct processing moments for double-measure percents as well. @@ -8174,7 +8174,7 @@ m2003-07-15 Han-Wen Nienhuys * input/regression/percent-repeat-skipbars.ly (texidoc): new file * lily/lily-guile.cc (ly:dimension?): add dimension as separate - grob prop type. + grob prop type. * Documentation/user/refman.itely (Printing named chords): add chord name tweak doco. @@ -8200,7 +8200,7 @@ m2003-07-15 Han-Wen Nienhuys * input/tutorial/os-score.ly: update to new markup * Documentation/user/appendices.itely: simply include - chords-ignatzek. + chords-ignatzek. * Documentation/user/refman.itely (Chords mode): add documentation for chord mode. @@ -8214,7 +8214,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-02-17 Heikki Junes * Documentation/user/refman.itely: - * Documentation/user/music-glossary.tely: fix. + * Documentation/user/music-glossary.tely: fix. 2003-02-16 Han-Wen Nienhuys @@ -8296,7 +8296,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-01-19 Han-Wen Nienhuys - * input/regression/ambitus.ly: move file. + * input/regression/ambitus.ly: move file. * lily/include/pitch.hh (class Pitch): make Pitch objects immutable. @@ -8311,7 +8311,7 @@ m2003-07-15 Han-Wen Nienhuys 2003-01-16 Han-Wen Nienhuys - * mf/feta-toevallig.mf: make flat stem shorter + * mf/feta-toevallig.mf: make flat stem shorter 2003-01-16 Heikki Junes @@ -8371,7 +8371,7 @@ m2003-07-15 Han-Wen Nienhuys * lilypond.words: add one. - * lilypond-font-lock.el: add colour groups for horizontal, vertical + * lilypond-font-lock.el: add colour groups for horizontal, vertical and expressional note grouping. Fontify chord modes. 2003-01-09 Heikki Junes @@ -8495,7 +8495,7 @@ m2003-07-15 Han-Wen Nienhuys * input/regression/chord-name-styles.ly: new file * lily/instrument-name-engraver.cc: create instrument names - without barline too. Allows instrument name on ChordNames + without barline too. Allows instrument name on ChordNames * scm/new-markup.scm (interpret-markup): allow simple strings as markup too. @@ -8504,11 +8504,11 @@ m2003-07-15 Han-Wen Nienhuys * scm/chord-name.scm: Super/raise changes and fixes for Banter. (step->markup-accidental): Fix: add accidental. - (chord::inner-name-american): + (chord::inner-name-american): (chord::inner-name-jazz): Ugly fix from inner-name-banter: do not append stray '/' if last superscript addition was 'o'. - * scm/new-markup.scm (normal-size-sub-markup) + * scm/new-markup.scm (normal-size-sub-markup) (normal-size-super-markup): New function. * lily/source-file.cc (Source_file): Add warning for possibly @@ -8529,7 +8529,7 @@ m2003-07-15 Han-Wen Nienhuys fingering support. * scripts/convert-ly.py (FatalConversionError.conv): add style - conversion rule. + conversion rule. * scm/chord-name.scm (set-chord-name-style): new function. (new-chord-name-brew-molecule): revise to interpret markup only @@ -8570,7 +8570,7 @@ m2003-07-15 Han-Wen Nienhuys 2002-12-29 Han-Wen Nienhuys - * scm/new-markup.scm (markup-thrower-typecheck) + * scm/new-markup.scm (markup-thrower-typecheck) (markup-typecheck?): add full typechecking functions. (make-markup-maker): add make-FOO-markup functions. (markup-argument-list-error): nice error checking messages. @@ -8596,8 +8596,8 @@ m2003-07-15 Han-Wen Nienhuys * config.make.in (lilypond_libdir): Add. - * stepmake/stepmake/substitute-rules.make: - * stepmake/stepmake/script-rules.make: + * stepmake/stepmake/substitute-rules.make: + * stepmake/stepmake/script-rules.make: * stepmake/stepmake/python-module-rules.make: * stepmake/aclocal.m4 (STEPMAKE_LIBDIR): Fixes from lilypond-python-module patch. @@ -8619,7 +8619,7 @@ m2003-07-15 Han-Wen Nienhuys * scripts/midi2ly.py (dump_chord): idem - * scripts/etf2ly.py (version): idem + * scripts/etf2ly.py (version): idem * scripts/pmx2ly.py (Slur.calculate): new chord syntax @@ -8639,7 +8639,7 @@ m2003-07-15 Han-Wen Nienhuys * Documentation/user/refman.itely (Text markup): rewrite manual section. - * lily/parser.yy (scalar): allow \markup { } as property value. + * lily/parser.yy (scalar): allow \markup { } as property value. * scm/chord-name.scm: complete new markup usage @@ -8717,7 +8717,7 @@ m2003-07-15 Han-Wen Nienhuys * input/test/script-priority.ly: use new markup - * lily/parser.yy (markup): allow HEAD markup0 markup1 + * lily/parser.yy (markup): allow HEAD markup0 markup1 * lily/molecule-scheme.cc (ly:molecule-translate): new function. @@ -8737,7 +8737,7 @@ m2003-07-15 Han-Wen Nienhuys * lilypond-mode.el: Use LilyPond-command-alist for Midi and MidiAll. Allow only one type of midi process; launching Midi either stops midis or plays the current midi and launching MidiAll stops midis - and starts timidity with "-ia", i.e., XAW-interface. Bind C-c C-return + and starts timidity with "-ia", i.e., XAW-interface. Bind C-c C-return to MidiAll. Choose "timidity-[1-9].ly" etc. files to MidiAll. 2002-12-07 Han-Wen Nienhuys @@ -8760,7 +8760,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/molecule-scheme.cc: move scheme functions to separate file. - * lily/font-metric.cc (ly_get_glyph): new function. + * lily/font-metric.cc (ly_get_glyph): new function. * scm/new-markup.scm (column-markup): use baseline-skip for columns. (italic-markup, dynamic-markup): new functions @@ -8777,8 +8777,8 @@ m2003-07-15 Han-Wen Nienhuys 2002-12-06 Heikki Junes * lilypond.vim: - * lilypond-font-lock.el: Put \longa as duration. Accept only - [a-zA-Z] for user defined identifiers. Separate note cases + * lilypond-font-lock.el: Put \longa as duration. Accept only + [a-zA-Z] for user defined identifiers. Separate note cases with and without a duration (allow cis\longaX). * lilypond.words: Add words from Info. @@ -8799,7 +8799,7 @@ m2003-07-15 Han-Wen Nienhuys * python/GNUmakefile (INSTALLATION_DIR1): install Python module into libdir - * autogen.sh (srcdir): copy aclocal.m4 if newer. + * autogen.sh (srcdir): copy aclocal.m4 if newer. * stepmake/aclocal.m4: STEPMAKE_LIBDIR. @@ -8817,7 +8817,7 @@ m2003-07-15 Han-Wen Nienhuys 2002-12-01 Heikki Junes - * make/lilypond.mandrake.spec.in: set menu-items to lilypond-info + * make/lilypond.mandrake.spec.in: set menu-items to lilypond-info and lilypond-documentation. 2002-12-02 Jan Nieuwenhuizen @@ -8851,7 +8851,7 @@ m2003-07-15 Han-Wen Nienhuys (lookup-markup-command): use markup-signature to store argument format for parser. - * lily/lexer.ll: preliminary \markup syntax. + * lily/lexer.ll: preliminary \markup syntax. 2002-11-30 Heikki Junes @@ -8920,7 +8920,7 @@ m2003-07-15 Han-Wen Nienhuys * lilypond-mode.el: Look shortcuts in menu from keymap, if possible. - * buildscripts/make-font-dir.py: Fix. + * buildscripts/make-font-dir.py: Fix. 2002-11-25 Heikki Junes @@ -8928,12 +8928,12 @@ m2003-07-15 Han-Wen Nienhuys 2002-11-24 Jan Nieuwenhuizen - * buildscripts/make-font-dir.py: + * buildscripts/make-font-dir.py: * mf/GNUmakefile: Make sodipodi font map. * scm/sodipodi.scm: Add more output functions. - * mf/feta-nummer.mf: + * mf/feta-nummer.mf: * mf/feta-beugel.mf: Add font_coding_scheme. * lily/paper-outputter.cc (output_header): Fix creator string. @@ -8956,14 +8956,14 @@ m2003-07-15 Han-Wen Nienhuys * scripts/ly2dvi.py: Add paper sizes. - * lily/timing-engraver.cc: - * lily/time-signature.cc: - * lily/span-bar.cc: + * lily/timing-engraver.cc: + * lily/time-signature.cc: + * lily/span-bar.cc: * lily/grob-scheme.cc: Code formatting fixes. - * scm/sodipodi.scm: + * scm/sodipodi.scm: * scm/sketch.scm: - * buildscripts/mf-to-table.py: + * buildscripts/mf-to-table.py: * buildscripts/make-font-dir.py: Font testing. 2002-11-23 Heikki Junes @@ -8994,8 +8994,8 @@ m2003-07-15 Han-Wen Nienhuys 2002-11-21 Mats Bengtsson - * lily/volta-engraver.cc (process_acknowledged_grobs): - Allow for text markup in repeatCommands. + * lily/volta-engraver.cc (process_acknowledged_grobs): + Allow for text markup in repeatCommands. 2002-11-21 Heikki Junes @@ -9036,12 +9036,12 @@ m2003-07-15 Han-Wen Nienhuys * Documentation/topdocs/INSTALL.texi: separate sections for installing files and adding a load-path. - * lilypond-init.el: Instructions, extracted from - Documentation/topdocs/INSTALL.texi. + * lilypond-init.el: Instructions, extracted from + Documentation/topdocs/INSTALL.texi. 2002-11-19 Han-Wen Nienhuys - * VERSION: 1.7.8 released + * VERSION: 1.7.8 released * lily/grob.cc (warning): better robustness fix. @@ -9082,7 +9082,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/parser.yy (Simple_music): \applycontext #FUNCTION allows code to be executed during interpretation. Possible applications: - smart octavation, more advanced bar checks. + smart octavation, more advanced bar checks. * lily/apply-context-iterator.cc: new file. @@ -9113,11 +9113,11 @@ m2003-07-15 Han-Wen Nienhuys * autogen.sh: * aclocal.m4: Regenerate. - * configure.in: - * config.make.in: - * stepmake/config.make.in: - * stepmake/configure.in: - * stepmake/autogen.sh: + * configure.in: + * config.make.in: + * stepmake/config.make.in: + * stepmake/configure.in: + * stepmake/autogen.sh: * stepmake/aclocal.m4: Update for autoconf 2.56. 2002-11-16 Heikki Junes @@ -9154,7 +9154,7 @@ m2003-07-15 Han-Wen Nienhuys * input/regression/a*.ly (texidoc): syntax updates. * Documentation/user/lilypond-book.itely (Integrating La@TeX{} and - music): elucidations. + music): elucidations. 2002-11-11 Juergen Reuter @@ -9194,7 +9194,7 @@ m2003-07-15 Han-Wen Nienhuys * input/regression/measure-grouping.ly: more elaborate example. * lily/moment.cc: ly:add-moment, ly:mul-moment, - ly:div-moment. New functions + ly:div-moment. New functions * scm/music-functions.scm (set-time-signature): new function, allow inline time sig settings with measure grouping. @@ -9208,7 +9208,7 @@ m2003-07-15 Han-Wen Nienhuys 2002-11-10 Heikki Junes - * emacs-mode.el: Added spanish-note-replacements + * emacs-mode.el: Added spanish-note-replacements (Carlos Betancourt, ). * vimrc: (Un)commenting with <(S-)F12>, tidy. @@ -9264,7 +9264,7 @@ m2003-07-15 Han-Wen Nienhuys * input/tutorial/*.ly: update to new syntax. * lily/parser.yy (Composite_music): new transpose syntax, - \transpose FROM TO MUSIC. + \transpose FROM TO MUSIC. 2002-11-04 Jan Nieuwenhuizen @@ -9371,7 +9371,7 @@ m2003-07-15 Han-Wen Nienhuys * python/GNUmakefile: Bugfix: handle modules. * stepmake/stepmake/python-module-targets.make (default): Add - compiled modules. + compiled modules. * stepmake/stepmake/python-module-rules.make: Add rule for byte compiling modules. @@ -9454,7 +9454,7 @@ m2003-07-15 Han-Wen Nienhuys 2002-10-21 Han-Wen Nienhuys - * VERSION: 1.7.4 released. + * VERSION: 1.7.4 released. * scm/generate-documentation.scm (string-append): add macro definitions. @@ -9479,7 +9479,7 @@ m2003-07-15 Han-Wen Nienhuys (Font_info.set_defaults): pixelsize now also defauts to '0'. (sketch_p): Sketch wants only first four elements of X11 font spec. - * buildscripts/mf-to-table.py (parse_logfile): Bugfix. + * buildscripts/mf-to-table.py (parse_logfile): Bugfix. * mf/feta-autometric.mf: Write foundry and family to log. @@ -9546,7 +9546,7 @@ m2003-07-15 Han-Wen Nienhuys 2002-10-14 Jan Nieuwenhuizen - * scm/tex.scm: + * scm/tex.scm: * scm/ps.scm: Cleanup and remove obsolete junk. * Documentation/user/internals.itely: @@ -9580,7 +9580,7 @@ m2003-07-15 Han-Wen Nienhuys compatibility glue for spanrequest. * lily/parser.yy (verbose_event): remove \spanrequest, - \commandspanrequest, \script. + \commandspanrequest, \script. * lily/identifier-smob.cc (LY_DEFINE): change name to ly-export @@ -9603,10 +9603,10 @@ m2003-07-15 Han-Wen Nienhuys * lily/parser.yy (assignment): allow SCM expression as assignment. * lily/include/music-output-def.hh (class Music_output_def): - * lily/music-output-def.cc: - * lily/paper-def.cc: + * lily/music-output-def.cc: + * lily/paper-def.cc: * scm/font.scm (markup-to-properties): - * lily/parser.yy (music_output_def_body): + * lily/parser.yy (music_output_def_body): remove style_sheet_ 2002-10-12 Han-Wen Nienhuys @@ -9633,7 +9633,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/parser.yy (sup_quotes): use '\'' for sup_quotes. * lily/break-align-interface.cc (do_alignment): right-edge spacing - key adds space at the end of line. + key adds space at the end of line. 2002-10-11 Jan Nieuwenhuizen @@ -9715,8 +9715,8 @@ m2003-07-15 Han-Wen Nienhuys * GNUmakefile.in: Generate builddir locale tree too. * scripts/ly2dvi.py: - * scripts/midi2ly.py: - * scripts/mup2ly.py: + * scripts/midi2ly.py: + * scripts/mup2ly.py: * scripts/update-lily.py: * lily/main.cc (setup_paths): Fix for locales setup. @@ -9774,7 +9774,7 @@ m2003-07-15 Han-Wen Nienhuys 2002-10-19 Han-Wen Nienhuys * lily/stem-engraver.cc (acknowledge_grob): don't crash on - undefined tremolo. + undefined tremolo. 2002-10-15 Werner Lemberg @@ -9881,12 +9881,12 @@ m2003-07-15 Han-Wen Nienhuys 2002-09-26 Jan Nieuwenhuizen - * Documentation/user/refman.itely: - * Documentation/user/tutorial.itely: + * Documentation/user/refman.itely: + * Documentation/user/tutorial.itely: * Documentation/user/music-glossary.tely: Merge changes. - * Documentation/user/glossary.html.in: - * Documentation/index.texi: + * Documentation/user/glossary.html.in: + * Documentation/index.texi: * Documentation/header.html.in: Accomodate renaming of glossary. * Documentation/user/tutorial.itely: Add some glossary references. @@ -10010,7 +10010,7 @@ m2003-07-15 Han-Wen Nienhuys from ^_ for crescendi. Idem for slurs and phrasing slurs. * ly/grace-init.ly: add-to-grace-init: function to portably add - settings to \grace. + settings to \grace. * lily/dynamic-engraver.cc (process_music): finish (de)crescendo if we get an absolute dynamic event. @@ -10018,10 +10018,10 @@ m2003-07-15 Han-Wen Nienhuys * lily/time-signature-engraver.cc (process_music): warn for \time 5/5 * lily/source-file.cc (get_line): oops. All line numbers were off - by 2. Fix that. + by 2. Fix that. * lily/parser.yy (event_that_take_dir): allow () \< \> \! \( \) to - be after the note, combined with -_^, i.e. c4-(-\)-\> + be after the note, combined with -_^, i.e. c4-(-\)-\> * ly/params-init.ly (ledgerlinethickness): use Scheme expressions. @@ -10050,7 +10050,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/parser.yy: remove \dynamicscript. * ly/dynamic-scripts-init.ly: redo the dynamic scripts - definitions. + definitions. * python/midi.c (midi_error): take two arguments. @@ -10119,12 +10119,12 @@ m2003-07-15 Han-Wen Nienhuys 2002-09-26 Jan Nieuwenhuizen - * Documentation/user/refman.itely: - * Documentation/user/tutorial.itely: + * Documentation/user/refman.itely: + * Documentation/user/tutorial.itely: * Documentation/user/music-glossary.tely: Merge changes. - * Documentation/user/glossary.html.in: - * Documentation/index.texi: + * Documentation/user/glossary.html.in: + * Documentation/index.texi: * Documentation/header.html.in: Accomodate renaming of glossary. * Documentation/user/tutorial.itely: Add some glossary references. @@ -10326,7 +10326,7 @@ m2003-07-15 Han-Wen Nienhuys oops. The name symbol is in the cdr of the assoc handle. * lily/: remove Arpeggio_req, Breathing_sign_req, Extender_req, - Hyphen_req, Glissando_req, Break_req, Mark_req + Hyphen_req, Glissando_req, Break_req, Mark_req 2002-09-26 Han-Wen Nienhuys @@ -10400,7 +10400,7 @@ m2003-07-15 Han-Wen Nienhuys * lily/command-request.cc (transpose_key_alist): new function. - * lily/key-performer.cc (create_audio_elements): cleanup. + * lily/key-performer.cc (create_audio_elements): cleanup. 2002-09-22 Han-Wen Nienhuys @@ -10418,8 +10418,8 @@ m2003-07-15 Han-Wen Nienhuys * Documentation/user/tutorial.itely: Fix links. - * Documentation/index.texi: - * Documentation/header.html.in: + * Documentation/index.texi: + * Documentation/header.html.in: * Documentation/topdocs/index.tely: Small website fixes and updates. * debian/: Debian patch by Anthony Fok. @@ -10462,7 +10462,7 @@ m2003-07-15 Han-Wen Nienhuys triggering GC. * lily/*-iterator.cc: be even more careful with smobbed copy - constructors. + constructors. * lily/break-align-engraver.cc (acknowledge_grob): also typeset LeftEdge item. @@ -10537,9 +10537,8 @@ m2003-07-15 Han-Wen Nienhuys 2002-09-16 Han-Wen Nienhuys * lily/my-lily-lexer.cc: use SCM module in stead of - Scheme_hash_table. Changes throughout. + Scheme_hash_table. Changes throughout. 2002-09-15 Han-Wen Nienhuys * VERSION (MY_PATCH_LEVEL): make 1.7.0 - diff --git a/Documentation/misc/ChangeLog-2.10 b/Documentation/misc/ChangeLog-2.10 index ae5f2983ac..c7c8dee7d6 100644 --- a/Documentation/misc/ChangeLog-2.10 +++ b/Documentation/misc/ChangeLog-2.10 @@ -16,57 +16,57 @@ 2006-11-07 Han-Wen Nienhuys - * lily/break-substitution.cc: - * lily/dynamic-text-spanner.cc: + * lily/break-substitution.cc: + * lily/dynamic-text-spanner.cc: nitpicks. - * lily/engraver.cc: - * lily/grob-property.cc: + * lily/engraver.cc: + * lily/grob-property.cc: use SCM_ASSERT_TYPE for graphing functions. - * lily/cluster.cc: + * lily/cluster.cc: formatting. - * lily/all-font-metrics.cc: + * lily/all-font-metrics.cc: excise cmr10 - * input/regression/collision-heads.ly: + * input/regression/collision-heads.ly: trim example. - * lily/note-collision.cc: - * input/regression/collision-merge-differently-headed.ly: + * lily/note-collision.cc: + * input/regression/collision-merge-differently-headed.ly: Examine Stem::duration_log() for preventing merge of quarter and halfnote. Fixes collision-heads.ly. Add separate regtest for that. - * scripts/lilypond-invoke-editor.scm: + * scripts/lilypond-invoke-editor.scm: don't use guile -e main execution. - * scm/define-grobs.scm: + * scm/define-grobs.scm: use stem::calc-duration-log for rest. - * scm/define-markup-commands.scm: + * scm/define-markup-commands.scm: another (sign dir) fix for note markup - * scm/define-markup-commands.scm: + * scm/define-markup-commands.scm: use (sign dir) for computing attachment points. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: run cvs up before patching. 2006-11-06 Han-Wen Nienhuys - * lily/note-head.cc: + * lily/note-head.cc: trim note-head.cc includes. - * lily/easy-notation.cc: - * lily/mensural-ligature-engraver.cc: - * lily/note-collision.cc: - * lily/note-head.cc: - * scm/define-grobs.scm: - * scm/output-lib.scm: + * lily/easy-notation.cc: + * lily/mensural-ligature-engraver.cc: + * lily/note-collision.cc: + * lily/note-head.cc: + * scm/define-grobs.scm: + * scm/output-lib.scm: use Rhythmic_head::duration_log() iso. Note_head::get_balltype(). - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: also barf if file doesn't exist. 2006-11-07 Erlend Aasland @@ -84,40 +84,40 @@ 2006-11-05 Han-Wen Nienhuys - * lily/instrument-name-engraver.cc: - * input/regression/instrument-name-dynamic.ly: + * lily/instrument-name-engraver.cc: + * input/regression/instrument-name-dynamic.ly: ignore dynamic and pedal line spanners. - * Documentation/topdocs/NEWS.tely: - * Documentation/user/advanced-notation.itely: - * THANKS: - * input/regression/balloon.ly: - * lily/balloon.cc: - * ly/music-functions-init.ly: - * scm/define-event-classes.scm: - * scm/define-grobs.scm: - * scm/define-music-properties.scm: - * scm/define-music-types.scm: - * scm/output-lib.scm: - * lily/balloon-engraver.cc: + * Documentation/topdocs/NEWS.tely: + * Documentation/user/advanced-notation.itely: + * THANKS: + * input/regression/balloon.ly: + * lily/balloon.cc: + * ly/music-functions-init.ly: + * scm/define-event-classes.scm: + * scm/define-grobs.scm: + * scm/define-music-properties.scm: + * scm/define-music-types.scm: + * scm/output-lib.scm: + * lily/balloon-engraver.cc: rewrite balloon-text support. This is now a separate grob, with itsvictim as the parent. This involves addingBalloon_engraver, AnnotateOutputEvent, annotate-output-event,\balloonText, \balloonGrobText, and modifying Balloon_interface::print. - * lily/paper-score.cc: + * lily/paper-score.cc: remove progress again - * lily/chord-name-engraver.cc: + * lily/chord-name-engraver.cc: formatting nitpicks. - * lily/paper-score.cc: + * lily/paper-score.cc: some useless statistics. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: update todo/done after rejection due to removal analysis. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: check whether removals from a diff actually apply. 2006-11-05 Joe Neeman @@ -125,7 +125,7 @@ * lily/include/page-turn-page-breaking.hh: remove unused fields in Break_node - * lily/page-turn-page-breaking.cc (calc_demerits): + * lily/page-turn-page-breaking.cc (calc_demerits): * lily/optimal-page-breaking.cc (try_page_spacing): remove uniformity penalties. @@ -143,29 +143,29 @@ 2006-11-05 Han-Wen Nienhuys - * lily/dynamic-engraver.cc: + * lily/dynamic-engraver.cc: formatting cleanup - * input/regression/note-head-harmonic.ly: - * lily/stem.cc: - * input/regression/note-head-harmonic-whole.ly: + * input/regression/note-head-harmonic.ly: + * lily/stem.cc: + * input/regression/note-head-harmonic-whole.ly: Center harmonic heads if stem is invisible. Fixes #140 - * lily/input.cc: + * lily/input.cc: end context snippet with '\n' - * lily/parse-scm.cc: + * lily/parse-scm.cc: catch all GUILE exceptions - * VERSION: + * VERSION: bump version - * lily/include/lily-lexer.hh: - * lily/lily-lexer.cc: - * lily/lily-parser.cc: + * lily/include/lily-lexer.hh: + * lily/lily-lexer.cc: + * lily/lily-parser.cc: Lily_parser* arg for copy ctor too. - * scripts/abc2ly.py: + * scripts/abc2ly.py: abc2ly new tempo syntax 2006-11-04 Heikki Junes @@ -193,102 +193,102 @@ * *: The Joy of Merging. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: sort commits, and use .git-commits-done file. - * GNUmakefile.in: - * elisp/GNUmakefile: + * GNUmakefile.in: + * elisp/GNUmakefile: dist emacs patches too. 2006-11-02 Han-Wen Nienhuys - * scm/autochange.scm: + * scm/autochange.scm: autochange thinko. - * lily/context-def.cc: - * lily/include/parse-scm.hh: - * lily/include/smobs.hh: - * lily/parse-scm.cc: - * lily/prob.cc: - * lily/program-option.cc: - * scm/lily.scm: + * lily/context-def.cc: + * lily/include/parse-scm.hh: + * lily/include/smobs.hh: + * lily/parse-scm.cc: + * lily/prob.cc: + * lily/program-option.cc: + * scm/lily.scm: implement and use ASSERT_LIVE_IS_ALLOWED() - * ly/music-functions-init.ly: - * scm/autochange.scm: + * ly/music-functions-init.ly: + * scm/autochange.scm: set-part-combine fix for autochange. - * lily/include/lily-lexer.hh: - * lily/include/lily-parser.hh: - * lily/lily-lexer.cc: - * lily/lily-parser-scheme.cc: - * lily/lily-parser.cc: + * lily/include/lily-lexer.hh: + * lily/include/lily-parser.hh: + * lily/lily-lexer.cc: + * lily/lily-parser-scheme.cc: + * lily/lily-parser.cc: clear lexer scopes after parsing file. Plugs pseudo memory leak - * ly/declarations-init.ly: - * ly/music-functions-init.ly: - * scm/part-combiner.scm: + * ly/declarations-init.ly: + * ly/music-functions-init.ly: + * scm/part-combiner.scm: Remove set-part-combine-listener. This plugs a memory leak. - * .gitignore: + * .gitignore: more ignores. - * mf/GNUmakefile: + * mf/GNUmakefile: don't delete .scale.pfa; the FF script may not have read themyet. Fixes brace OTF bug - * .gitignore: + * .gitignore: ignore gcstat files. - * lily/part-combine-iterator.cc: + * lily/part-combine-iterator.cc: don't allocate part combine events statically. Plugs small leak. - * lily/lily-parser-scheme.cc: + * lily/lily-parser-scheme.cc: plug memleak in case of failed files. - * lily/include/source.hh: - * lily/source.cc: + * lily/include/source.hh: + * lily/source.cc: clean up Sources - * lily/lexer.ll: + * lily/lexer.ll: hi-bit ascii is also counted as alpha chars. This allows unicodeidentifiers, and fixes premature stop at accented char. (#134) - * lily/include/program-option.hh: - * lily/program-option.cc: + * lily/include/program-option.hh: + * lily/program-option.cc: get_program_option() function - * ly/titling-init.ly: + * ly/titling-init.ly: change naming: print-page-number becomescreate-page-number-stencil. This avoids nameclash withprint-page-number boolean, and fixes page number printing. - * lily/include/translator.hh: - * lily/include/translator.icc: - * lily/translator.cc: + * lily/include/translator.hh: + * lily/include/translator.icc: + * lily/translator.cc: minor cleanups - * lily/figured-bass-engraver.cc: + * lily/figured-bass-engraver.cc: don't use ASSIGN_EVENT_ONCE for Figured_bass_engraver. Fixes #128. - * stepmake/stepmake/compile-vars.make: + * stepmake/stepmake/compile-vars.make: don't do -fPIC for mingw. Suppresses warning about unnecessary -fPIC 2006-11-01 Han-Wen Nienhuys - * python/midi.c: + * python/midi.c: init running_status - * python/midi.c: + * python/midi.c: trim warning messages. - * configure.in: + * configure.in: strip -Werror. - * input/regression/utf-8.ly: + * input/regression/utf-8.ly: document utf-8 meaning of phrases. - * scm/define-markup-commands.scm: + * scm/define-markup-commands.scm: make \caps markup default to smallCaps - * lily/pango-font.cc: - * lily/ttf.cc: + * lily/pango-font.cc: + * lily/ttf.cc: use glyph indexing for glyph name .notdef 2006-11-02 Jan Nieuwenhuizen @@ -307,23 +307,23 @@ 2006-10-31 Han-Wen Nienhuys - * Documentation/user/GNUmakefile: + * Documentation/user/GNUmakefile: don't use ImageMagick, use GS directly. - * mf/GNUmakefile: + * mf/GNUmakefile: otf depends on otf-g?table. Fixes race condition in -j2 build. (cherry picked from b0628c40c47202bddac01e18cd4808b3c9d12faf commit) - * mf/GNUmakefile: + * mf/GNUmakefile: rm fontdir target. - * mf/GNUmakefile: + * mf/GNUmakefile: remove .deb/.rpm downloading. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: bugfixes for git-update-changelog.py - * Documentation/user/GNUmakefile: + * Documentation/user/GNUmakefile: remove .eps rules 2006-10-30 Han-Wen Nienhuys @@ -332,7 +332,7 @@ use position/direction from single tie case too. This fixes overrides and defaults for single laissez-vibrer and repeat ties. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: only prepend header if one patch was successful. 2006-10-31 Jan Nieuwenhuizen @@ -352,24 +352,24 @@ * buildscripts/git-update-changelog.py (main): write .msg and cvs command. - * scm/define-grobs.scm: + * scm/define-grobs.scm: separation-items have width - - * VERSION: + + * VERSION: bump version - - * .gitignore: - * Documentation/topdocs/NEWS.tely: - * lily/separating-group-spanner.cc: - * lily/slur-engraver.cc: - * lily/slur-scoring.cc: - * scm/define-grobs.scm: + + * .gitignore: + * Documentation/topdocs/NEWS.tely: + * lily/separating-group-spanner.cc: + * lily/slur-engraver.cc: + * lily/slur-scoring.cc: + * scm/define-grobs.scm: * input/regression/slur-clef.ly: add breakableSeparationItem to extra encompass for slurs. This fixes slur/clef slur/key collisions etc. Should fix #49 - - * lily/include/slur-scoring.hh: - * lily/slur-scoring.cc: + + * lily/include/slur-scoring.hh: + * lily/slur-scoring.cc: Use X of separation item as slur start. Fixes #120 2006-10-29 Han-Wen Nienhuys @@ -381,56 +381,56 @@ 2006-10-28 Han-Wen Nienhuys - * emacsclient.patch: - * server.el.patch: + * emacsclient.patch: + * server.el.patch: move server/emacsclient to elisp/ * buildscripts/git-update-changelog.py (Commit.note_del_file): apply patches too - * elisp/server.el.patch: + * elisp/server.el.patch: move emacs patches. - * elisp/emacsclient.patch: + * elisp/emacsclient.patch: emacsclient too. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: ignore ChangeLog - * .gitignore: + * .gitignore: update - * ChangeLog: - * buildscripts/git-update-changelog.py: + * ChangeLog: + * buildscripts/git-update-changelog.py: script to update ChangeLog with Git messages. - * lily/beam-engraver.cc: - * input/regression/rest-pitched-beam.ly: + * lily/beam-engraver.cc: + * input/regression/rest-pitched-beam.ly: don't set callback if staff-position set. Fixes #126. - * lily/bar-number-engraver.cc: - * lily/beam.cc: - * lily/fingering-engraver.cc: - * lily/grob-property.cc: - * lily/grob.cc: - * lily/include/grob.hh: - * lily/include/lily-guile-macros.hh: - * lily/mark-engraver.cc: - * lily/melody-engraver.cc: - * lily/script-column.cc: - * lily/tie-formatting-problem.cc: - * lily/tie.cc: + * lily/bar-number-engraver.cc: + * lily/beam.cc: + * lily/fingering-engraver.cc: + * lily/grob-property.cc: + * lily/grob.cc: + * lily/include/grob.hh: + * lily/include/lily-guile-macros.hh: + * lily/mark-engraver.cc: + * lily/melody-engraver.cc: + * lily/script-column.cc: + * lily/tie-formatting-problem.cc: + * lily/tie.cc: internal_get_property_data() using ly_symbol2scm() - * stepmake/stepmake/generic-targets.make: + * stepmake/stepmake/generic-targets.make: create .gitignore in outdir. - * .gitignore: + * .gitignore: new file. 2006-10-28 Jan Nieuwenhuizen - * input/test/vertical-extent.ly: + * input/test/vertical-extent.ly: * python/convertrules.py (conv): verticalExtent -> VerticalAxisGroup. 2006-10-28 Han-Wen Nienhuys @@ -439,7 +439,7 @@ 2006-10-28 Han-Wen Nienhuys - * GNUmakefile.in (install-help2man): install-help2man target. + * GNUmakefile.in (install-help2man): install-help2man target. 2006-10-27 Jan Nieuwenhuizen @@ -450,7 +450,7 @@ * mf/GNUmakefile: explicit dependencies for emmentaler .otf-table files. - * Documentation/topdocs/NEWS.tely (Top): add FretBoards example. + * Documentation/topdocs/NEWS.tely (Top): add FretBoards example. * input/regression/fret-boards.ly: new file. @@ -462,7 +462,7 @@ 2006-10-27 Mats Bengtsson * ly/gregorian-init.ly (neumeDemoLayout): update - minimumVerticalExtent -> VerticalAxisGroup #'minimum-Y-extent + minimumVerticalExtent -> VerticalAxisGroup #'minimum-Y-extent * scm/define-context-properties.scm, ly/engraver-init.ly: Remove obsolete verticalExtent / extraVerticalExtent / minumumVerticalExtent @@ -513,8 +513,8 @@ 2006-10-26 Joe Neeman - * lily/system.cc (get_paper_system): - * lily/paper-book.cc (systems): + * lily/system.cc (get_paper_system): + * lily/paper-book.cc (systems): move most of the backwards compatibility stuff into Paper_book::systems @@ -567,14 +567,14 @@ * lily/source-file.cc (get_counts): use multibyte variable. * scm/translation-functions.scm (determine-frets-mf): new - function: compute fret numbers. + function: compute fret numbers. * scm/output-lib.scm (string-frets->description) new function. (fret-board::calc-stencil): new function * scm/fret-diagrams.scm (fret-diagram-verbose): update doc string. - * scm/define-grobs.scm (all-grob-descriptions): add FretBoard grob. + * scm/define-grobs.scm (all-grob-descriptions): add FretBoard grob. * lily/include/lily-guile.hh (ly_cxx_vector_to_list): new function. @@ -614,7 +614,7 @@ * Documentation/user/advanced-notation.itely (Instrument names): Remove obsolete bug workaround for instrument names on piano - staff. + staff. 2006-10-24 Han-Wen Nienhuys @@ -626,7 +626,7 @@ * INSTALL.txt: gitness. - * .cvsignore: update to force gitness. + * .cvsignore: update to force gitness. 2006-10-23 Han-Wen Nienhuys @@ -642,7 +642,7 @@ * stepmake/stepmake/po-vars.make: more gitness. - * flower/polynomial.cc (check_sol): no empty if bodies. + * flower/polynomial.cc (check_sol): no empty if bodies. 2006-10-30 Jan Nieuwenhuizen @@ -657,24 +657,24 @@ * buildscripts/git-update-changelog.py (main): write .msg and cvs command. - * scm/define-grobs.scm: + * scm/define-grobs.scm: separation-items have width - - * VERSION: + + * VERSION: bump version - - * .gitignore: - * Documentation/topdocs/NEWS.tely: - * lily/separating-group-spanner.cc: - * lily/slur-engraver.cc: - * lily/slur-scoring.cc: - * scm/define-grobs.scm: + + * .gitignore: + * Documentation/topdocs/NEWS.tely: + * lily/separating-group-spanner.cc: + * lily/slur-engraver.cc: + * lily/slur-scoring.cc: + * scm/define-grobs.scm: * input/regression/slur-clef.ly: add breakableSeparationItem to extra encompass for slurs. This fixes slur/clef slur/key collisions etc. Should fix #49 - - * lily/include/slur-scoring.hh: - * lily/slur-scoring.cc: + + * lily/include/slur-scoring.hh: + * lily/slur-scoring.cc: Use X of separation item as slur start. Fixes #120 2006-10-29 Han-Wen Nienhuys @@ -686,56 +686,56 @@ 2006-10-28 Han-Wen Nienhuys - * emacsclient.patch: - * server.el.patch: + * emacsclient.patch: + * server.el.patch: move server/emacsclient to elisp/ * buildscripts/git-update-changelog.py (Commit.note_del_file): apply patches too - * elisp/server.el.patch: + * elisp/server.el.patch: move emacs patches. - * elisp/emacsclient.patch: + * elisp/emacsclient.patch: emacsclient too. - * buildscripts/git-update-changelog.py: + * buildscripts/git-update-changelog.py: ignore ChangeLog - * .gitignore: + * .gitignore: update - * ChangeLog: - * buildscripts/git-update-changelog.py: + * ChangeLog: + * buildscripts/git-update-changelog.py: script to update ChangeLog with Git messages. - * lily/beam-engraver.cc: - * input/regression/rest-pitched-beam.ly: + * lily/beam-engraver.cc: + * input/regression/rest-pitched-beam.ly: don't set callback if staff-position set. Fixes #126. - * lily/bar-number-engraver.cc: - * lily/beam.cc: - * lily/fingering-engraver.cc: - * lily/grob-property.cc: - * lily/grob.cc: - * lily/include/grob.hh: - * lily/include/lily-guile-macros.hh: - * lily/mark-engraver.cc: - * lily/melody-engraver.cc: - * lily/script-column.cc: - * lily/tie-formatting-problem.cc: - * lily/tie.cc: + * lily/bar-number-engraver.cc: + * lily/beam.cc: + * lily/fingering-engraver.cc: + * lily/grob-property.cc: + * lily/grob.cc: + * lily/include/grob.hh: + * lily/include/lily-guile-macros.hh: + * lily/mark-engraver.cc: + * lily/melody-engraver.cc: + * lily/script-column.cc: + * lily/tie-formatting-problem.cc: + * lily/tie.cc: internal_get_property_data() using ly_symbol2scm() - * stepmake/stepmake/generic-targets.make: + * stepmake/stepmake/generic-targets.make: create .gitignore in outdir. - * .gitignore: + * .gitignore: new file. 2006-10-28 Jan Nieuwenhuizen - * input/test/vertical-extent.ly: + * input/test/vertical-extent.ly: * python/convertrules.py (conv): verticalExtent -> VerticalAxisGroup. 2006-10-28 Han-Wen Nienhuys @@ -744,7 +744,7 @@ 2006-10-28 Han-Wen Nienhuys - * GNUmakefile.in (install-help2man): install-help2man target. + * GNUmakefile.in (install-help2man): install-help2man target. 2006-10-27 Jan Nieuwenhuizen @@ -755,7 +755,7 @@ * mf/GNUmakefile: explicit dependencies for emmentaler .otf-table files. - * Documentation/topdocs/NEWS.tely (Top): add FretBoards example. + * Documentation/topdocs/NEWS.tely (Top): add FretBoards example. * input/regression/fret-boards.ly: new file. @@ -767,7 +767,7 @@ 2006-10-27 Mats Bengtsson * ly/gregorian-init.ly (neumeDemoLayout): update - minimumVerticalExtent -> VerticalAxisGroup #'minimum-Y-extent + minimumVerticalExtent -> VerticalAxisGroup #'minimum-Y-extent * scm/define-context-properties.scm, ly/engraver-init.ly: Remove obsolete verticalExtent / extraVerticalExtent / minumumVerticalExtent @@ -818,8 +818,8 @@ 2006-10-26 Joe Neeman - * lily/system.cc (get_paper_system): - * lily/paper-book.cc (systems): + * lily/system.cc (get_paper_system): + * lily/paper-book.cc (systems): move most of the backwards compatibility stuff into Paper_book::systems @@ -872,14 +872,14 @@ * lily/source-file.cc (get_counts): use multibyte variable. * scm/translation-functions.scm (determine-frets-mf): new - function: compute fret numbers. + function: compute fret numbers. * scm/output-lib.scm (string-frets->description) new function. (fret-board::calc-stencil): new function * scm/fret-diagrams.scm (fret-diagram-verbose): update doc string. - * scm/define-grobs.scm (all-grob-descriptions): add FretBoard grob. + * scm/define-grobs.scm (all-grob-descriptions): add FretBoard grob. * lily/include/lily-guile.hh (ly_cxx_vector_to_list): new function. @@ -919,7 +919,7 @@ * Documentation/user/advanced-notation.itely (Instrument names): Remove obsolete bug workaround for instrument names on piano - staff. + staff. 2006-10-24 Han-Wen Nienhuys @@ -931,7 +931,7 @@ * INSTALL.txt: gitness. - * .cvsignore: update to force gitness. + * .cvsignore: update to force gitness. 2006-10-23 Han-Wen Nienhuys @@ -947,7 +947,7 @@ * stepmake/stepmake/po-vars.make: more gitness. - * flower/polynomial.cc (check_sol): no empty if bodies. + * flower/polynomial.cc (check_sol): no empty if bodies. 2006-10-22 Han-Wen Nienhuys @@ -994,7 +994,7 @@ * input/regression/horizontal-bracket-break.ly: new file. * scm/define-grobs.scm (all-grob-descriptions): calc - connect-to-neighbor. + connect-to-neighbor. * lily/horizontal-bracket.cc (make_bracket): support connect-to-neighbor. Fix #118 @@ -1043,7 +1043,7 @@ (Line breaking): add note about Forbid_line_break_engraver * Documentation/user/tweaks.itely (Common tweaks): also set length - to prevent tie squeezing. + to prevent tie squeezing. (Default files): use @var{} * Documentation/user/converters.itely (Invoking abc2ly): remove mup2ly. @@ -1054,22 +1054,22 @@ * scm/define-grobs.scm (all-grob-descriptions): set side-axis and Y-offset for TextScript and Script - * lily/text-engraver.cc (make_item): + * lily/text-engraver.cc (make_item): * lily/script-engraver.cc (make_script_from_event): remove call to Side_position_interface::set_axis since all scripts now have this set by default - * lily/context.cc: + * lily/context.cc: * lily/prob.cc: use variables 2006-10-20 Han-Wen Nienhuys * lily/page-turn-engraver.cc (acknowledge_note_head): don't look - at typography, rather analyse stream event duration. + at typography, rather analyse stream event duration. * Documentation/user/page.itely (Page formatting): set a6 paper for system separator example. - + * lily/arpeggio.cc (Module): idem. * lily/accidental-placement.cc: add script-priority property. @@ -1085,7 +1085,7 @@ global filename -> font mapping. (get_glyph_index_name): new function. (pango_item_string_stencil): use glyphIndexXXXX as glyph name, - only for TTF. + only for TTF. * scripts/lilypond-book.py (main): use -deps-box-padding=-3 @@ -1111,7 +1111,7 @@ * lily/engraver.cc (internal_make_grob): use variables. - * flower/string-convert.cc (dec2double): clean-up warnings. + * flower/string-convert.cc (dec2double): clean-up warnings. * configure.in (CXXFLAGS): add -Werror. @@ -1162,7 +1162,7 @@ * lily/piano-pedal-align-engraver.cc: new class Piano_pedal_align_engraver. Handle side-positioning Y-alignment - for piano pedals. + for piano pedals. 2006-10-18 Heikki Junes @@ -1174,7 +1174,7 @@ compatible page breaking for the old page breaker. 2006-10-17 Erik Sandberg - + * lily/recording-group-engraver.cc: removed * lily/context.cc, lily/translator-group.cc: Don't touch @@ -1234,7 +1234,7 @@ * VERSION (PATCH_LEVEL): bump version. * scm/paper.scm: patch by Arvid Gr"otting, arvidgr@gmail.com: tune - Ax paper sizes. + Ax paper sizes. 2006-10-15 Han-Wen Nienhuys @@ -1254,10 +1254,10 @@ * lily/*.cc, lily/include/*.hh: eliminate dummy arguments from macros ADD_TRANSLATOR, DECLARE_SMOBS and DECLARE_SIMPLE_SMOBS - + 2006-10-15 Han-Wen Nienhuys - * mf/GNUmakefile: remove fc-cache calls; not necessary for fc 2.4; + * mf/GNUmakefile: remove fc-cache calls; not necessary for fc 2.4; * Doxyfile: remove file. @@ -1265,7 +1265,7 @@ string-finger-interface * lily/general-scheme.cc (LY_DEFINE): move - ly_camel_case_to_lisp_identifier to here. Use vector iso. char[] + ly_camel_case_to_lisp_identifier to here. Use vector iso. char[] * Documentation/topdocs/NEWS.tely (Top): add note for string-finger feature. @@ -1354,9 +1354,9 @@ registration to generate documentation for event classes * lily/*: Eliminate accept arg of ADD_TRANSLATOR - + * lily/include/*: Eliminate dummy arg of DECLARE_*SMOBS - + 2006-10-13 Jan Nieuwenhuizen * GNUmakefile.in (SCRIPTS): Remove lexer-gcc-3.1.sh. @@ -1385,7 +1385,7 @@ * Documentation/topdocs/NEWS.tely (Top): doc new clipping feature - * input/regression/clip-systems.ly (Notes): new file. + * input/regression/clip-systems.ly (Notes): new file. * scm/lily.scm (define-scheme-options): add clip-systems option. @@ -1393,7 +1393,7 @@ function (dump-stencil-as-EPS): move bbox calculation from previous dump-stencil-as-EPS - (output-framework): use -dclip-systems + (output-framework): use -dclip-systems * scm/lily-library.scm (filtered-map): new function @@ -1455,7 +1455,7 @@ (lyric-text::print): new function. * lily/new-fingering-engraver.cc (add_fingering): refactor; make - generic for fingering & string number. Use for string-finger. + generic for fingering & string number. Use for string-finger. * scm/define-music-types.scm (music-descriptions): add StringFingerEvent @@ -1601,8 +1601,8 @@ * lily/parenthesis-engraver.cc (acknowledge_grob): set parent of parenthesis item. This fixes premature Y-extent triggering. Fixes - issue #95. - + issue #95. + * VERSION (PATCH_LEVEL): bump version. 2006-10-04 Graham Percival @@ -1732,7 +1732,7 @@ * lily/pango-font.cc (pango_item_string_stencil): use logical_rect. This prevents spaces after words from disappearing, issue #72. - + * VERSION: release 2.9.20 2006-10-02 Han-Wen Nienhuys @@ -1742,10 +1742,10 @@ 2006-10-02 Joe Neeman - * Documentation/user/page.itely (Page formatting): + * Documentation/user/page.itely (Page formatting): document auto-first-page-number - * lily/page-breaking.cc (find_chunks_and_breaks): + * lily/page-breaking.cc (find_chunks_and_breaks): * lily/paper-score.cc (calc_breaking): Follow changes to the Constrained_breaking interface @@ -1756,7 +1756,7 @@ (Constrained_breaking): constructor now takes the Paper_score 2006-10-02 Erik Sandberg - + * lily/lexer.ll, lily/parser.yy: Add EXPECT_NO_MORE_ARGS token, to avoid parser lookahead for 0-ary functions. @@ -1818,16 +1818,16 @@ 2006-09-30 Laura Conrad * abc2ly.py adds segno (S) and Coda (O) to articulations. - + * abc2ly.py fix so that entering " -- " will translate to a -- in the lilypond instead of a " - - " - + 2006-09-30 Han-Wen Nienhuys * lily/align-interface.cc: fix typo * lily/dynamic-text-spanner.cc (print): Add a special case for - trill spanner right sides. + trill spanner right sides. * scm/define-grobs.scm (all-grob-descriptions): set padding to 0.1 @@ -1894,7 +1894,7 @@ (the latter is the same as petrucci-f which is kept for compatibility) 2006-09-26 Erik Sandberg - + * lily/part-combine-iterator.cc: solo1-event -> solo-one-event 2006-09-26 Han-Wen Nienhuys @@ -1937,7 +1937,7 @@ rename make_foo_from_properties to internal_make_foo and move it from context-property.cc to a member function of Engraver. - + * lily/include/lily-guile-macros.hh: overload ly_symbol2scm macro so that there is no more need to use internal_foo @@ -1983,7 +1983,7 @@ * python/convertrules.py: corresponding rule. * Documentation/user/page.itely (Page formatting): Document the - default values of all page layout parameters. + default values of all page layout parameters. 2006-09-22 Erik Sandberg @@ -2024,14 +2024,14 @@ 2006-09-21 Mats Bengtsson * Documentation/user/tweaks.itely (Fitting music onto fewer - pages): Add between-system-space setting. + pages): Add between-system-space setting. 2006-09-21 Han-Wen Nienhuys * lily/accidental-placement.cc (calc_positioning_done): don't trigger Y-extent calculation too early. Use pure_height instead. - * lily/scale.cc (LY_DEFINE): new file. + * lily/scale.cc (LY_DEFINE): new file. 2006-09-20 Joe Neeman @@ -2046,7 +2046,7 @@ 2006-09-20 Han-Wen Nienhuys * lily/accidental-placement.cc (calc_positioning_done): also put - stems into accidental support. + stems into accidental support. * lily/tie-engraver.cc (process_music): also set tieMelismaBusy if event_ detected. @@ -2054,7 +2054,7 @@ * scm/script.scm (default-script-alist): avoid-slur and slur-padding for portato script. - * lily/stem-tremolo.cc (translated_stencil): new function. + * lily/stem-tremolo.cc (translated_stencil): new function. (height): use new function. Fixes tremolos on whole notes. * lily/slur-scoring.cc (get_best_curve): don't crash if no optimal @@ -2070,7 +2070,7 @@ * lily/*.cc: idem. * lily/slur.cc (get_curve): always use scm_is_pair() looping - scheme lists. + scheme lists. 2006-09-18 Graham Percival @@ -2085,7 +2085,7 @@ * elisp/lilypond-mode.el (LilyPond-command-alist): Don't try to figure out midi file names right here. - + 2006-09-17 Han-Wen Nienhuys * scm/framework-ps.scm (dump-stencil-as-EPS): naming pad-eps-boxes. @@ -2102,21 +2102,21 @@ Music::to_event doesn't complain. * lily/accidental-placement.cc (ape_compare): - * lily/semi-tie.cc (compare): + * lily/semi-tie.cc (compare): * lily/note-column.cc (shift_compare): replace by XXX_less - * lily/tie-formatting-problem.cc (set_chord_outline): - * lily/tie-column.cc (calc_positioning_done): + * lily/tie-formatting-problem.cc (set_chord_outline): + * lily/tie-column.cc (calc_positioning_done): * lily/system.cc (post_processing) - (get_paper_system): + (get_paper_system): * lily/stem.cc (note_head_positions) - (calc_positioning_done): + (calc_positioning_done): * lily/spanner.cc (do_break_processing) - (find_broken_piece): - * lily/span-bar.cc (print): - * lily/semi-tie-column.cc (calc_positioning_done): - * lily/rest-collision.cc (calc_positioning_done): - * lily/program-option.cc (get_help_string): + (find_broken_piece): + * lily/span-bar.cc (print): + * lily/semi-tie-column.cc (calc_positioning_done): + * lily/rest-collision.cc (calc_positioning_done): + * lily/program-option.cc (get_help_string): * lily/note-collision.cc (get_clash_groups): * lily/new-fingering-engraver.cc (position_scripts): * lily/keyword.cc (Keyword_table): @@ -2127,7 +2127,7 @@ * lily/beam.cc (get_beam_segments): * lily/grob-array.cc (remove_duplicates): use new vector_sort - + * input/mutopia/W.A.Mozart/mozart-hrn3-defs.ily: ragged-last-bottom = ##f (test the new page breaker) @@ -2168,7 +2168,7 @@ * scm/script.scm (default-script-alist): set paddings for every type here, increase for portato mark. - * scm/lily.scm (define-scheme-options): typo: add s, so it is + * scm/lily.scm (define-scheme-options): typo: add s, so it is -dinclude-eps-fonts 2006-09-16 Han-Wen Nienhuys @@ -2197,7 +2197,7 @@ 2006-09-15 Mats Bengtsson * ly/engraver-init.ly: Make FiguredBass accepted in GrandStaff and - PianoStaff. + PianoStaff. 2006-09-08 Joe Neeman @@ -2227,11 +2227,11 @@ 2006-09-07 Joe Neeman - * lily/spanner.cc (find_broken_piece): - * lily/spacing-spanner.cc (get_columns): - * lily/source-file.cc (get_line): - * lily/simple-spacer.cc (get_column_description): - * lily/keyword.cc (lookup): + * lily/spanner.cc (find_broken_piece): + * lily/spacing-spanner.cc (get_columns): + * lily/source-file.cc (get_line): + * lily/simple-spacer.cc (get_column_description): + * lily/keyword.cc (lookup): use the new binary search. * flower/include/std-vector.hh: replace binary_search with @@ -2336,7 +2336,7 @@ * lily/include/score.hh (class Score): don't derive from Input. - * lily/book.cc (Book): add a copy ctor. + * lily/book.cc (Book): add a copy ctor. * buildscripts/output-distance.py (FileLink.calc_distance): count orphans in distance too. @@ -2345,7 +2345,7 @@ end of string. * ly/performer-init.ly: add Control_track_performer, move - Tempo_performer and Time_signature_performer to Score. + Tempo_performer and Time_signature_performer to Score. * lily/score-performer.cc (acknowledge_audio_elements): override from base class: add to audio-columns @@ -2406,9 +2406,9 @@ 2006-08-24 Phillip Kirlin - * python/musicxml.py: - (Attributes.get_key_signature): now correctly retrieves mode from - MusicXML. + * python/musicxml.py: + (Attributes.get_key_signature): now correctly retrieves mode from + MusicXML. 2006-08-25 Han-Wen Nienhuys @@ -2419,7 +2419,7 @@ update use of \tempo in \midi. * VERSION: release 2.9.16 - + 2006-08-24 Erik Sandberg * input/mutopia/*: upgrade to new midi tempo syntax (repairs make @@ -2474,10 +2474,10 @@ in property definitions. * lily/parser.yy (score_body): protect SCORE_IDENTIFIER result - after getting it from SCM. + after getting it from SCM. * lily/smobs.cc (protect_smob): switch off fancy smob protection - for now. + for now. * lily/include/performer.hh (class Performer): strip get_tempo() method. @@ -2607,7 +2607,7 @@ 2006-08-20 Han-Wen Nienhuys - * make/ly-vars.make (OMF_FILES): strip ps.gz from OMF_FILES + * make/ly-vars.make (OMF_FILES): strip ps.gz from OMF_FILES * scm/documentation-lib.scm (texi-file-head): category LilyPond. @@ -2619,7 +2619,7 @@ * VERSION: release 2.9.15 * lily/spacing-engraver.cc (stop_translation_timestep): use - Dscho's fix for spacing spanner. + Dscho's fix for spacing spanner. * scm/define-music-types.scm (music-descriptions): use apply-output-event for ApplyOutputEvent @@ -2644,10 +2644,10 @@ * lily/include/translator.hh (struct Acknowledge_information): revert: don't use Protected_scm in global objects, as GUILE can't handle gc_unprotect from automated destructors on MacOS X. - + * lily/grob.cc (get_print_stencil): use retval.expr() as base for color, not the original stencil. Fixes combinations of - color/transparency/rotation. + color/transparency/rotation. * scripts/lilypond-book.py (main): add --formats=eps for texinfo/latex. @@ -2879,15 +2879,15 @@ dashed-line. * lily/bar-line.cc (dashed_bar_line): new function. - (compound_barline): support \bar "dashed". + (compound_barline): support \bar "dashed". * lily/lily-parser-scheme.cc (LY_DEFINE): only write - --output=DIR to DIR/BASE if it is a dir. + --output=DIR to DIR/BASE if it is a dir. * flower/file-name.cc (file_part): new function (dir_part): new function - * lily/lily-parser-scheme.cc (LY_DEFINE): + * lily/lily-parser-scheme.cc (LY_DEFINE): * DEDICATION: update @@ -2900,7 +2900,7 @@ 2006-07-25 Joe Neeman * lily/grob.cc: - + * lily/gourlay-breaking.cc: Oops, these should have been included in my last commit @@ -2988,7 +2988,7 @@ * scm/framework-eps.scm (dump-stencils-as-EPSes): just strip .eps extension from includegraphics. - * scripts/lilypond-book.py (main): add support for --pdf. + * scripts/lilypond-book.py (main): add support for --pdf. * lily/spacing-spanner.cc (calc_common_shortest_duration): use callback to compute common shortest duration. @@ -3022,7 +3022,7 @@ music_cause (). * scm/define-music-types.scm: Removed BusyPlayingEvent - + 2006-07-19 Mats Bengtsson * Documentation/user/advanced-notation.itely (Font selection): @@ -3108,7 +3108,7 @@ * scm/paper.scm (internal-set-paper-size): define landscape to #f if unset. - * scm/framework-ps.scm (convert-to-pdf): swap h and w in case of landscape. + * scm/framework-ps.scm (convert-to-pdf): swap h and w in case of landscape. * stepmake/stepmake/texinfo-rules.make: strip DVI support. @@ -3125,7 +3125,7 @@ * lily/main.cc (parse_argv): don't overwrite previous --formats string. - * scm/backend-library.scm (postscript->pdf): strip .eps too. + * scm/backend-library.scm (postscript->pdf): strip .eps too. 2006-07-14 Nicolas Sceaux @@ -3147,7 +3147,7 @@ previously used class is renamed to OldMusicEvent. * lily/stream-event.cc: Stream events are now probs. - + * lily/translator-group.cc, lily/translator.cc: Translators can now listen directly to stream events, by using macros [DECLARE,IMPLEMENT]_TRANSLATOR_LISTENER. @@ -3165,7 +3165,7 @@ * input/manual/ GNUmakefile, SConscript: build files for input/manual/ - * input/test/ various: some files moved to input/manual/ + * input/test/ various: some files moved to input/manual/ * Documentation/user/basic-notation.itely: small updates; thanks Kieren and Charles! @@ -3174,14 +3174,14 @@ * VERSION (PACKAGE_NAME): release 2.9.11 - * Documentation/topdocs/NEWS.tely (Top): update prop value + * Documentation/topdocs/NEWS.tely (Top): update prop value * Documentation/user/basic-notation.itely (Tuplets): new property value. 2006-07-11 Han-Wen Nienhuys - * python/convertrules.py (conv): tweaks. + * python/convertrules.py (conv): tweaks. * VERSION (PATCH_LEVEL): bump version. @@ -3219,10 +3219,10 @@ 2006-07-07 Guido Amoruso - * scm/ps-to-png.scm (Module): - * scm/framework-tex.scm (Module): - * scm/framework-ps.scm (Module): - * scm/backend-library.scm (Module): + * scm/ps-to-png.scm (Module): + * scm/framework-tex.scm (Module): + * scm/framework-ps.scm (Module): + * scm/backend-library.scm (Module): * scm/framework-ps.scm: invoke gs with "-dDEVICEWIDTHPOINTS" and "dDEVICEHEIGHTPOINTS". @@ -3296,7 +3296,7 @@ * po/fr.po: add \n appropriately. - * lily/lexer.ll: remove ? from version-seen? + * lily/lexer.ll: remove ? from version-seen? 2006-06-19 John Mandereau @@ -3319,7 +3319,7 @@ * lily/staff-collecting-engraver.cc (acknowledge_end_staff_symbol): new function - * lily/volta-engraver.cc (acknowledge_end_staff_symbol): new function. + * lily/volta-engraver.cc (acknowledge_end_staff_symbol): new function. * lily/staff-collecting-engraver.cc (acknowledge_end_staff_symbol): new function. @@ -3338,7 +3338,7 @@ (get_line_configuration): don't use cols.resize(); it introduces initialized data. - * scm/framework-ps.scm (dump-page): add setstrokeadjust. + * scm/framework-ps.scm (dump-page): add setstrokeadjust. * ps/music-drawing-routines.ps: remove selectfont L1 hack. @@ -3349,14 +3349,14 @@ add beatLength hack. * scm/music-functions.scm (make-time-signature-set): add - standard-beat-grouping. + standard-beat-grouping. 2006-06-17 Han-Wen Nienhuys * input/regression/tie-whole.ly: new file. * lily/tie-formatting-problem.cc (set_column_chord_outline): don't - cross center of note head in case of invisible stem. + cross center of note head in case of invisible stem. 2006-06-16 Graham Percival @@ -3418,21 +3418,21 @@ format. * lily/stem.cc (calc_stem_end_position): calc quantized-positions - for beamed case. + for beamed case. * lily/note-spacing.cc (stem_dir_correction): don't inspect - stem_end_position, but estimate instead. + stem_end_position, but estimate instead. * lily/tuplet-bracket.cc (calc_positions): look at stem-end-position for tuplet bracket slope. Fixes sloped tuplet - brackets narrower than beams. + brackets narrower than beams. * lily/lexer.ll: set version-seen? even if version is - INVALID. + INVALID. * lily/rest.cc (y_offset_callback): bugfix: decide position override based on scm_is_number(). Fixes \rest on center staff - line. + line. * lily/beaming-pattern.cc (best_splitpoint_index): fix beaming patterns for 16th triplets. @@ -3486,7 +3486,7 @@ * lily/line-spanner.cc: cleanup property list. * scripts/lilypond-book.py (find_toplevel_snippets): don't use - generator expressions (2.3 compat). + generator expressions (2.3 compat). 2006-06-09 Mats Bengtsson @@ -3529,7 +3529,7 @@ * lily/paper-score.cc: cache break_indices and columns * lily/side-position-interface.cc: new pure-Y-extent callbacks - + 2006-06-08 Han-Wen Nienhuys * lily/font-config.cc (init_fontconfig): do the init if @@ -3590,8 +3590,8 @@ * SConstruct: * buildscripts/builder.py: - * lily/SConscript: - * mf/SConscript: + * lily/SConscript: + * mf/SConscript: * Documentation/user/SConscript: More SCons fixes. 2006-06-03 Jan Nieuwenhuizen @@ -3623,7 +3623,7 @@ * GNUmakefile.in (dist-toplevel-txt-files): dist aclocal.m4 directly from srcdir/stepmake/aclocal.m4 - + * Documentation/misc/GNUmakefile (TEXTS): use src-wildcard for disting MISC files. @@ -3683,7 +3683,7 @@ * configure.in (LINK_GXX_STATICALLY): use readlink.py to resolve links. Patch by Karl Hammar - + * buildscripts/readlink.py: add file. Patch by Karl Hammar @@ -3694,7 +3694,7 @@ 2006-06-05 Han-Wen Nienhuys - * scm/stencil.scm (write-system-signature): explicitly + * scm/stencil.scm (write-system-signature): explicitly -well, superfluously- close output port. * buildscripts/output-distance.py (main): oops. Add extra argument. @@ -3747,7 +3747,7 @@ 2006-06-03 Han-Wen Nienhuys * lily/lyric-combine-music-iterator.cc (find_voice): return 0 if - nothing changes. (Erik S) + nothing changes. (Erik S) * lily/percent-repeat-iterator.cc (get_music_list): fix repeat count. (Erik S) @@ -3778,7 +3778,7 @@ * buildscripts/output-distance.py (SystemLink.output_expression_change_count): keep track of changed details, and dump in details html page. - + * input/regression/figured-bass-staff.ly: add note about setting properties in Staff context. @@ -3806,7 +3806,7 @@ 2006-06-02 Han-Wen Nienhuys * buildscripts/output-distance.py (FileLink): new class. collect - info systems from one .ly file. + info systems from one .ly file. (FileLink.link_files_for_html): further tweaks. 2006-06-02 Graham Percival @@ -3899,7 +3899,7 @@ 2006-05-31 Han-Wen Nienhuys - * GNUmakefile.in: simplify local-WWW-post. + * GNUmakefile.in: simplify local-WWW-post. remove -type l from find. * buildscripts/output-distance.py (ComparisonData.compare_trees): @@ -3925,7 +3925,7 @@ 2006-05-30 Han-Wen Nienhuys * VERSION: release 2.9.7 - + 2006-05-30 Jan Nieuwenhuizen * lily/relocate.cc (read_relocation_dir): Do not blindly @@ -3945,7 +3945,7 @@ * scm/define-markup-commands.scm (translate-scaled): new markup. * mf/feta-nummer-code.mf (code): overshoot the topright tip of the - 7 glyph. + 7 glyph. * ly/engraver-init.ly: add Figured_bass_engraver @@ -3981,7 +3981,7 @@ 2006-05-30 Mats Bengtsson * Documentation/user/basic-notation.itely (Bar lines): Document - the "||:" bar type. + the "||:" bar type. 2006-05-30 Jan Nieuwenhuizen @@ -4015,14 +4015,14 @@ 2006-05-29 Han-Wen Nienhuys * BackportmeStart. - + * buildscripts/output-distance.py (ComparisonData.create_html_result_page): new routine: summarise - results in HTML page with images. + results in HTML page with images. (ComparisonData.create_text_result_page): create summary text files too. * GNUmakefile.in (web-ext): package .signature files too. They - compress well. + compress well. * scm/stencil.scm (write-system-signature): typo. @@ -4053,7 +4053,7 @@ * lily/ledger-line-spanner.cc (set_spacing_rods): suicide if no staff. * ly/engraver-init.ly: remove Ledger_line_engraver from Voice - context. This fixes double ledger lines in output. + context. This fixes double ledger lines in output. * lily/system.cc (get_paper_system): remove 3 layer limit. @@ -4083,7 +4083,7 @@ * scm/stencil.scm (write-system-signature): new routine: write python parseable signature of a separate paper system. BackportmeEnd. - + 2006-05-26 Han-Wen Nienhuys * lily/stanza-number-engraver.cc (process_music): use is_markup() @@ -4101,12 +4101,12 @@ * stepmake/aclocal.m4: STEPMAKE_PYTHON(): clear cached value since arg 2 might point us to a new binary (patch by Karl Hammar) - + 2006-05-24 Han-Wen Nienhuys * VERSION (PACKAGE_NAME): release 2.9.6 - * Documentation/topdocs/NEWS.tely (Top): trim explanation. + * Documentation/topdocs/NEWS.tely (Top): trim explanation. * Documentation/user/*.itely: 2nd attempt: replace funindex -> findex globally. @@ -4121,14 +4121,14 @@ 2006-05-24 Han-Wen Nienhuys - * Documentation/user/macros.itexi: comment out funindex expansion. + * Documentation/user/macros.itexi: comment out funindex expansion. * Documentation/user/music-glossary.tely: junk \oldaddlyrics everywhere. * GNUmakefile.in: fix wildcarding for scrips/out/ links. Thanks Karl Hammar. Backportme. - + * Documentation/user/advanced-notation.itely (Balloon help): idem. * Documentation/user/changing-defaults.itely (Creating contexts): idem. @@ -4143,12 +4143,12 @@ remove debugging hook. * configure.in (LINK_GXX_STATICALLY): use "" to allow $ - expansion. + expansion. * Documentation/user/GNUmakefile (TEXI2DVI_FLAGS): add -E. * stepmake/stepmake/texinfo-rules.make ($(outdir)/%.dvi): add - TEXI2DVI_FLAGS to texi2dvi invocation. + TEXI2DVI_FLAGS to texi2dvi invocation. 2006-05-24 Erik Sandberg @@ -4189,7 +4189,7 @@ 2006-05-22 Han-Wen Nienhuys * lily/beaming-info.cc (beamify): new function: read beatLength - and beatGrouping from context. + and beatGrouping from context. * input/regression/beam-beat-grouping.ly (Module): new file. @@ -4210,7 +4210,7 @@ (calc_direction): don't suicide for single stem. * lily/beaming-info.cc (best_splitpoint_index): take bool* - argument, remove 1<<15 hack. Remove clip_edges() + argument, remove 1<<15 hack. Remove clip_edges() * lily/hairpin.cc (print): only do padding for nonmusical bounds @@ -4236,10 +4236,10 @@ 2006-05-19 Han-Wen Nienhuys * lily/beam.cc (set_stem_lengths): trigger 'beaming callback, in - case positions is set manually. + case positions is set manually. 2006-05-18 Erik Sandberg - + * scm/ly-syntax-constructors.scm: New file. Converted a few syntax rules to Scheme. @@ -4250,7 +4250,7 @@ * Documentation/user/GNUmakefile (OUT_PNG_IMAGES): generate PNG out image for illustration too. - ($(outdir)/%.png): add more png <-> eps rules. + ($(outdir)/%.png): add more png <-> eps rules. 2006-05-17 Graham Percival @@ -4269,7 +4269,7 @@ variable. Backportme. 2006-05-17 Erik Sandberg - + * lily/parser.yy: Change all syntax rules of type Music to SCM type 2006-05-17 Werner Lemberg @@ -4292,14 +4292,14 @@ 2006-05-17 Han-Wen Nienhuys * python/lilylib.py (system): move import subprocess to system() - definition. + definition. * python/convertrules.py (conv): fix convert-ly rules for 2.9.4 * VERSION (PATCH_LEVEL): release 2.9.5 - + * Documentation/topdocs/INSTALL.texi (Top): update versions and - build instructions. + build instructions. * ly/engraver-init.ly: switch on hairpinToBarline by default. @@ -4323,7 +4323,7 @@ 2006-05-16 Han-Wen Nienhuys * lily/dynamic-engraver.cc (typeset_all): hang ending on - currentCommandColumn. + currentCommandColumn. * lily/hairpin.cc (print): also add padding for non-neighbor hairpin bounds. @@ -4346,7 +4346,7 @@ * python/musicxml.py (Part.interpret): skip back over chord notes. 2006-05-16 Erik Sandberg - + * lily/percent-repeat-engraver.cc, lily/parser.yy, lily/define-music-types.cc, lily/percent-repeat-iterator.cc, lily/slash-repeat-engraver.cc, @@ -4358,7 +4358,7 @@ * lily/context.cc, lily/music.cc, lily/context-scheme.cc: Add dispatchers event-source and events-below to Context - + 2006-05-15 Graham Percival * Documentation/user/README.txt: update info for doc writers. @@ -4375,10 +4375,10 @@ * Documentation/user/GNUmakefile: dist context-example.eps too. * lily/key-engraver.cc (create_key): use - explicitKeySignatureVisibility for cancellation too. + explicitKeySignatureVisibility for cancellation too. * lily/font-config.cc (init_fontconfig): don't close file if - f==NULL. + f==NULL. 2006-05-15 Erlend Aasland @@ -4400,7 +4400,7 @@ * scm/define-grob-properties.scm: add 'rotation property * scm/define-markup-commands.scm: add rotate markup command - + * scm/output-ps.scm: add rotation support in PostScript backend * scm/output-svg.scm: add rotation support in SVG backend @@ -4446,7 +4446,7 @@ XML attributes. (Xml_node.message): use it. - * scripts/musicxml2ly.py (musicxml_voice_to_lily_voice): + * scripts/musicxml2ly.py (musicxml_voice_to_lily_voice): oops. Add duration argument. 2006-05-10 Joe Neeman @@ -4456,7 +4456,7 @@ in define-grobs.scm instead. 2006-05-09 Graham Percival - + * Documentation/user/changing-defaults.itely: general editing, info about \set and \override. @@ -4500,7 +4500,7 @@ (MusicWrapper.print_ly): new class: support other modes, eg. \drummode (BarCheck.print_ly): new class. Support bar checks, with comments - and fancy barchecks. + and fancy barchecks. (NoteEvent.__init__): also set drum_type for drum notes. (MultiMeasureRest.lisp_expression): dump mm rests. @@ -4599,12 +4599,12 @@ lily/include/stream-event.hh, lily/include/listener.hh, lily/include/scheme-listener.hh, scm/define-event-classes.scm: Created data structures for music streams. - + 2006-05-05 Han-Wen Nienhuys * lily/beam.cc (get_beam_segments): new function. Reorganise the - construction of a beam. - (print): rewrite. + construction of a beam. + (print): rewrite. * flower/include/std-vector.hh (default_compare): use only one comparison. @@ -4619,7 +4619,7 @@ * lily/note-head.cc (get_stem_attachment): new function. * scm/define-markup-commands.scm (note-by-number): read 'style - property. + property. * input/regression/markup-note.ly: show note-head style option. @@ -4690,27 +4690,27 @@ 2006-05-03 Han-Wen Nienhuys * stepmake/aclocal.m4: run python-config for crosscompiling - flags. + flags. * scripts/lilypond-book.py (Lilypond_file_snippet.my_system): add - -f png for HTML, TEXINFO formats. + -f png for HTML, TEXINFO formats. * input/tutorial/lbook-html-test.html: new file. * lily/include/tie-formatting-problem.hh (class Tie_formatting_problem): index Chord_outline_map by Tuple2 for [column, direction]. This fixes laissez vibrer ties. - + * flower/include/tuple.hh (struct Tuple2): new file. * mf/GNUmakefile (FC_FIND): new function. Find ncsb using - $(FCMATCH), only if $(NCSB_DIR) not set. + $(FCMATCH), only if $(NCSB_DIR) not set. * configure.in (LINK_GXX_STATICALLY): only warn if $NCSB_DIR set. - * config.make.in (DOCUMENTATION): set FCMATCH. + * config.make.in (DOCUMENTATION): set FCMATCH. - * autogen.sh (srcdir): don't set --with-ncsb-dir. + * autogen.sh (srcdir): don't set --with-ncsb-dir. 2006-05-03 Graham Percival @@ -4761,7 +4761,7 @@ * buildscripts/pfx2ttf.fontforge (err): create OTF files. - * scripts/abc2ly.py (dump_score): indent of 4 for python code. + * scripts/abc2ly.py (dump_score): indent of 4 for python code. * configure.in (LINK_GXX_STATICALLY): remove locate() call. @@ -4781,7 +4781,7 @@ 2006-04-27 Han-Wen Nienhuys - * mf/GNUmakefile (MFTRACE_FLAGS): add $(outdir) to $(ENCODING_FILE) + * mf/GNUmakefile (MFTRACE_FLAGS): add $(outdir) to $(ENCODING_FILE) * scm/framework-ps.scm (output-framework): remove PageMedia @@ -4802,7 +4802,7 @@ * lily/stem-tremolo.cc (print): fix whole note tremolo placement * input/regression/stem-tremolo.ly: add 2 more whole note examples - + 2006-04-24 Han-Wen Nienhuys * lily/relocate.cc (read_relocation_dir): new function. @@ -4837,7 +4837,7 @@ (read_line): id. (read_relocation_file): id. - * scm/stencil.scm (eps-file->stencil): fix EPS PS embedding code + * scm/stencil.scm (eps-file->stencil): fix EPS PS embedding code 2006-04-21 Erlend Aasland @@ -4885,7 +4885,7 @@ 2006-04-18 Heikki Junes - * scripts/GNUmakefile: bugfix: run help2man only after scripts have + * scripts/GNUmakefile: bugfix: run help2man only after scripts have been generated. Fixes "can't get `--help'" bug after make clean. * THANKS: alphabetize contributors. @@ -4922,7 +4922,7 @@ (get_working_directory): Move from relocate.cc. * lily/relocate.cc (setup_paths): Remove rogue stat calls. - + * lily/relocate.cc: Encapsulate sys/stat.h in HAVE_STAT_H. @@ -4971,7 +4971,7 @@ 2006-04-09 Jan Nieuwenhuizen - * scm/define-context-properties.scm (all-user-translation-properties): + * scm/define-context-properties.scm (all-user-translation-properties): * Documentation/user/global.itely (Page formatting): Compile fix. 2006-04-09 Mats Bengtsson @@ -5016,7 +5016,7 @@ * music-drawing-routines.ps (draw_round_box): removed testing artifact. (draw_circle): Hopefully fixed regression. Improved documentation for several procedures. - + 2006-03-04 Werner Lemberg * ly/engraver-init.ly (\Score): Add beam-event to quotedEventTypes. @@ -5024,7 +5024,7 @@ 2006-04-05 Han-Wen Nienhuys * scripts/musicxml2ly.py (bindir): add dynamic - relocation. + relocation. 2006-04-04 Graham Percival @@ -5076,32 +5076,32 @@ * scm/define-grob-properties.scm: add circled-tip parameter * scm/define-grobs.scm: init circled-tip to false - + 2006-04-03 Han-Wen Nienhuys * scm/music-functions.scm (quote-substitute): set - iterators-ctor. + iterators-ctor. 2006-03-31 Han-Wen Nienhuys * Documentation/bibliography/GNUmakefile ($(outdir)/%.html): set - BSTINPUTS. + BSTINPUTS. * Documentation/topdocs/AUTHORS.texi (Top): add David Feuer. * scm/output-ps.scm (glyph-string): revert cid selectfont. 2006-03-31 David Feuer - + * scm/framework-ps.scm: - + * scm/output-ps.scm: glyph-string now produces smaller, more readable, and probably faster PostScript. Several findfont scalefont setfont instances changed to selectfont Hacked-up string-appends changed to formats. * ps/music-drawing-routines.ps: add print_letter, print_glyphs. - + 2006-03-30 Graham Percival * scm/lily-library.scm: make "no version" warning message more polite. @@ -5143,7 +5143,7 @@ Corrected reference to the font-family-override.ly example. 2006-03-30 Joe Neeman - + * lily/chord-tremolo-engraver.cc (acknowledge_stem): set the stem-tremolo object in the stem (or else the stem might not be long enough). @@ -5159,7 +5159,7 @@ * input/regression/stem-tremolo.ly: add example of unbeamed eighth notes and update the texidoc line with the new positioning rules. - + 2006-03-30 Han-Wen Nienhuys * lily/ttf.cc (print_trailer): don't always use uXXX glyphname. @@ -5197,16 +5197,16 @@ * scm/define-grobs.scm: make calc_width the default beam-width callback for stem-tremolo and add the style callback - + 2006-03-29 Han-Wen Nienhuys * lily/tuplet-bracket.cc (calc_control_points): handle suicide - case. + case. 2006-03-29 Han-Wen Nienhuys * lily/ttf.cc (make_index_to_charcode_map): restore old - cmap. + cmap. 2006-03-28 Werner Lemberg @@ -5224,7 +5224,7 @@ 2006-03-28 Han-Wen Nienhuys * mf/feta-bolletjes.mf: match width of solfa notes with normal - note heads. + note heads. * lily/ttf.cc (print_trailer): use it. @@ -5232,7 +5232,7 @@ * lily/ttf.cc (make_index_to_charcode_map): move function from open-type-font.cc - (print_trailer): substitute uniXXXX name if applicable. + (print_trailer): substitute uniXXXX name if applicable. * lily/pango-font.cc (get_index_to_charcode_map): new function. (pango_item_string_stencil): use it to generate uniXXXX names. @@ -5246,10 +5246,10 @@ * Documentation/topdocs/INSTALL.texi (Top): update versions. * lily/note-collision.cc (get_clash_groups): only consider when - Note_column::dir <> CENTER. + Note_column::dir <> CENTER. * scripts/lilypond-book.py (get_option_parser): init output_name - to ''. + to ''. 2006-03-24 Graham Percival @@ -5308,7 +5308,7 @@ * lily/slur-configuration.cc (add_score): disallow negative slur scores. - + 2006-03-21 Han-Wen Nienhuys * scm/framework-ps.scm (dump-stencil-as-EPS): remove debugging code. @@ -5389,7 +5389,7 @@ 2006-03-17 Han-Wen Nienhuys * Documentation/user/tutorial.itely (First steps): change example - to verbatim. + to verbatim. 2006-03-17 Graham Percival @@ -5402,7 +5402,7 @@ * python/lilylib.py (system): revert have_select kludge. * Documentation/user/tutorial.itely (Commenting input files): - update version numbers in doc. + update version numbers in doc. * scm/define-grob-interfaces.scm (multi-measure-interface): add bound-padding to multi-measure-interface @@ -5420,10 +5420,10 @@ staff-position wasn't set before. * lily/bar-number-engraver.cc: add support for - barNumberAlignSymbol. + barNumberAlignSymbol. add ADD_ACKNOWLEDGER() call for break_aligned. Fixes bar-number-breathe - * lily/pointer-group-interface.cc (set_ordered): new function. + * lily/pointer-group-interface.cc (set_ordered): new function. (add_unordered_grob): new function. * lily/grob-array.cc (Grob_array): grob-arrays are always assumed @@ -5435,7 +5435,7 @@ * lily/tie-formatting-problem.cc (generate_configuration): multiply y-shift for dot with direction. - + * scm/define-markup-commands.scm (note-by-number): put (magstep size) in y-attach too. @@ -5443,7 +5443,7 @@ * scm/define-grobs.scm (all-grob-descriptions): reinstate neutral direction for stems. - + 2006-03-15 Graham Percival * Documentation/user/ changing-defaults, global: minor @@ -5500,7 +5500,7 @@ 2006-03-13 Han-Wen Nienhuys * stepmake/bin/add-html-footer.py (mail_address_url): don't add - mailto: to http:// + mailto: to http:// * python/lilylib.py (print_environment): move ps_page_count to lilypond-book.py @@ -5518,7 +5518,7 @@ * Documentation/user/instrument-notation.itely (Setting simple songs): Added \book{...} around the full example, so the separate - markups are included in the printed example. + markups are included in the printed example. 2006-03-12 Han-Wen Nienhuys @@ -5551,20 +5551,20 @@ * lily/audio-column.cc, lily/score-performer.cc: MIDI output now respects the Score.skipTypesetting property. - + 2006-03-09 Han-Wen Nienhuys * scm/framework-ps.scm (ps-embed-cff): no Setup section in Prolog. No %%EOF after CFF file. 2006-03-08 Joe Neeman - + * lily/constrained-breaking.cc (get_max_systems): used to return a much too big value (combine_demerits): use pointers to reduce copying data (calc_subproblem): idem (get_page_penalty): add page turn penalties - + 2006-03-09 Han-Wen Nienhuys * Documentation/user/invoking.itely (Invoking lilypond): better @@ -5603,7 +5603,7 @@ (set_text_rods): idem. (calculate_spacing_rods): new function: share code between set_text_rods and set_spacing_rods. - (set_text_rods): take extents of bounds into account. + (set_text_rods): take extents of bounds into account. 2006-03-07 Han-Wen Nienhuys @@ -5616,7 +5616,7 @@ * ly/drumpitch-init.ly (drumPitchNames): add tamtam. - * scm/paper.scm (paper-alist): no decimals for Ax paper sizes. + * scm/paper.scm (paper-alist): no decimals for Ax paper sizes. * ly/engraver-init.ly: init vocalName to nil. @@ -5708,12 +5708,12 @@ * lily/volta-bracket.cc (modify_edge_height): change from after_line_breaking_callback. Suicide last bracket if appropriate. - + * python/lilylib.py: strip getopt support * scripts/etf2ly.py (do_options): use optparse - * scripts/midi2ly.py: optparse, strip lilylib copy. + * scripts/midi2ly.py: optparse, strip lilylib copy. * scripts/abc2ly.py (voices): use optparse. @@ -5762,7 +5762,7 @@ 2006-02-26 Nicolas Sceaux - * scm/framework-ps.scm: + * scm/framework-ps.scm: * scm/lily-library.scm (nan?, inf?): Move guile 1.6 compatibility layer for inf? and nan? from framework-ps to lily-library. @@ -5806,7 +5806,7 @@ 2006-02-25 Han-Wen Nienhuys - * scripts/lilypond-book.py (main): write Makefile dependencies file. + * scripts/lilypond-book.py (main): write Makefile dependencies file. (output): add comments to lp-book latex output. * GNUmakefile.in (footifymail): use gmane address for webpage bug @@ -5872,7 +5872,7 @@ * VERSION (PATCH_LEVEL): release 2.7.36 * lily/slur.cc: add avoid-slur (ugh.) - + * lily/slur-configuration.cc (fit_factor): oops, skip point if intersection gets smaller. This fixes slurs over extreme points. @@ -5919,7 +5919,7 @@ * Documentation/user/examples.itely (Ancient notation templates): typo. (Jazz combo): typo. - * scripts/lilypond-book.py (main): scrap invokes_lilypond(). + * scripts/lilypond-book.py (main): scrap invokes_lilypond(). * Documentation/user/basic-notation.itely (Ties): document \repeatTie. @@ -5977,7 +5977,7 @@ * lily/tie-formatting-problem.cc (generate_extremal_tie_variations): factor out. - (score_ties_configuration): annotate all tie + (score_ties_configuration): annotate all tie (print_ties_configuration): new routine. (generate_configuration): nudge extremal ties outside of the head Y extents. @@ -6028,7 +6028,7 @@ 2006-02-19 Han-Wen Nienhuys * lily/tie-formatting-problem.cc (score_configuration): use - sliding score for min-length. + sliding score for min-length. * Documentation/pictures/GNUmakefile (local-dist): loose the rule spaghetti for icons. @@ -6036,7 +6036,7 @@ * buildscripts/genicon.py (program_name): new file. * lily/tie-formatting-problem.cc (set_chord_outline): put dots - in outline too. + in outline too. (generate_configuration): for small ties, also look for collisions at Y + DIR*h + DELTA_Y. (get_variations): consider variation for dot positions too. @@ -6090,7 +6090,7 @@ * stepmake/stepmake/c++-rules.make ($(outdir)/%.cc $(outdir)/%.hh): generate h and c in one rule; otherwise -jX - builds don't work. + builds don't work. * VERSION: release 2.7.35 @@ -6102,7 +6102,7 @@ * VERSION (PATCH_LEVEL): bump VERSION. * mf/GNUmakefile: explicit rules for emmentaler/aybabtu - dependencies. Necessary for -jX builds. + dependencies. Necessary for -jX builds. 2006-02-17 Jan Nieuwenhuizen @@ -6135,7 +6135,7 @@ for stem direction. * lily/tie.cc (get_default_dir): only look directions for visible - stems. + stems. * lily/side-position-interface.cc (aligned_side): oops. Don't mutiply with direction. This fixes quantized (staccato, tenuto) @@ -6192,10 +6192,10 @@ make get_system_specs() public. * scm/layout-page-layout.scm (optimal-page-breaks): only consider - the force=10000 case if we don't have a current-best. + the force=10000 case if we don't have a current-best. * lily/tuplet-bracket.cc (get_bounds): don't do (size() - 1) for - vsize + vsize * flower/include/flower-proto.hh: remove outdated templates. @@ -6218,7 +6218,7 @@ * config.hh.in: remove all Kpathsea related defines. * lily/dot-column.cc (side_position): reach stem via dots-> - head->stem. Inspect all stems for dot collisions. + head->stem. Inspect all stems for dot collisions. * lily/dot-column-engraver.cc (class Dot_column_engraver): excise stem handling. @@ -6261,7 +6261,7 @@ * GNUmakefile.in: remove $(VERSION) symlink. - * lily/relocate.cc (setup_paths): add + + * lily/relocate.cc (setup_paths): add + 2006-02-13 Heikki Junes @@ -6275,11 +6275,11 @@ system-start-delimiter text support. * input/**ly: replace \context with \new where appropriate. - + * THANKS: add Don. * lily/slur-scoring.cc (get_base_attachments): use - robust_relative_extent. This fixes problems with empty paper-columns. + robust_relative_extent. This fixes problems with empty paper-columns. 2006-02-12 Han-Wen Nienhuys @@ -6313,7 +6313,7 @@ 2006-02-11 Jan Nieuwenhuizen - * flower/include/std-string.hh: + * flower/include/std-string.hh: * flower/include/std-vector.hh: Finish std:: conversion; move flower extensions from std:: namespace. Update users. @@ -6339,19 +6339,19 @@ ly:grob-common* functions. * lily/grob-scheme.cc (LY_DEFINE): - ly:grob-common-refpoint-of-array: new function - ly:grob-common-refpoint: new function - ly:grob-relative-coordinate: new function + ly:grob-common-refpoint-of-array: new function + ly:grob-common-refpoint: new function + ly:grob-relative-coordinate: new function * lily/instrument-name-engraver.cc (process_music): use - Text_interface::is_markup(). This fixes \markup on instrument names. + Text_interface::is_markup(). This fixes \markup on instrument names. * scm/define-grobs.scm (all-grob-descriptions): set line-thickness for ties and slurs. * lily/slur.cc (print): idem. - * lily/tie.cc: add line-thickness for ties. + * lily/tie.cc: add line-thickness for ties. 2006-02-10 Jan Nieuwenhuizen @@ -6393,7 +6393,7 @@ iso. TOPLEVEL_VERSION for share/lilypond/ suffix. This makes changing VERSION in a lily tree less painful. - * input/regression/parenthesize.ly: new file. + * input/regression/parenthesize.ly: new file. * scm/output-lib.scm (parenthesize-element): new function. @@ -6402,7 +6402,7 @@ * lily/parenthesis-engraver.cc (acknowledge_grob): new file. * lily/accidental-engraver.cc (make_standard_accidental): reroute - cause: accidentals are caused by note heads, not note events. + cause: accidentals are caused by note heads, not note events. 2006-02-08 Graham Percival @@ -6491,7 +6491,7 @@ * configure.in (std_vector): On by default. * lily/include/font-metric.hh: - * lily/include/tfm-reader.hh: + * lily/include/tfm-reader.hh: * lily/include/spanner.hh: Use unsigned for indices and sizes. Update users. @@ -6503,7 +6503,7 @@ * scm/framework-ps.scm (dump-stencil-as-EPS): don't hardcode left EPS edge at 0, but take minimum with left-overshoot. This fixes - cut off system start delims. + cut off system start delims. * lily/instrument-name-engraver.cc (stop_translation_timestep): hack: add to axis group if not added yet. This fixes hara kiri'd @@ -6518,7 +6518,7 @@ 2006-02-04 Jan Nieuwenhuizen * Remove trailing whitespace from makefiles. - + * flower/include/std-vector.hh: Add binary_search_bounds workaround for earlier gcc. @@ -6556,7 +6556,7 @@ 2006-02-03 Han-Wen Nienhuys - * flower/include/array.hh: typo. + * flower/include/array.hh: typo. 2006-02-02 Graham Percival @@ -6592,7 +6592,7 @@ * flower/include/array.hh (reverse, swap): Detach from class. Update users. - + * flower/include/std-vector.hh * flower/include/array.hh (concat): Globally change to insert (). @@ -6615,7 +6615,7 @@ * flower/include/array.icc (insert): Change signature to match std::vector interface. - + * flower/include/array.icc (vector_sort): Bugfix. 2006-02-02 Han-Wen Nienhuys @@ -6657,7 +6657,7 @@ 2006-02-01 Han-Wen Nienhuys * lily/include/lily-guile-macros.hh (MAKE_SCHEME_CALLBACK): use - std::string not String. + std::string not String. * lily/context-def.cc (path_to_acceptable_context): use INT_MAX iso UINT_MAX. @@ -6780,7 +6780,7 @@ * lily/*.cc: various fixes for substr(ARG). - * lily/sustain-pedal.cc (print): + * lily/sustain-pedal.cc (print): * flower/file-name.cc (slashify): use std strings. @@ -6848,16 +6848,16 @@ Use NPOS for `not found' (iso -1), use ssize for length () and pos type. - * flower/rational.cc: - * flower/include/rational.hh: + * flower/rational.cc: + * flower/include/rational.hh: - * flower/offset.cc: - * flower/include/offset.hh: + * flower/offset.cc: + * flower/include/offset.hh: - * flower/interval.cc: - * flower/include/interval.hh: + * flower/interval.cc: + * flower/include/interval.hh: - * flower/string-convert.cc: + * flower/string-convert.cc: * flower/include/string-convert.hh: Use std::string [interface]. Update callers. @@ -6909,7 +6909,7 @@ * lily/paper-system.cc (LY_DEFINE): derive from Prob. * lily/prob.cc (Module): Implement Prob (Property Object), object - with shared and r/w property alists. + with shared and r/w property alists. * lily/include/prob.hh (Module): new file. Declare Prob. @@ -6932,10 +6932,10 @@ 2006-01-23 Jan Nieuwenhuizen - * flower/international.cc: - * flower/include/international.hh: + * flower/international.cc: + * flower/include/international.hh: - * flower/getopt-long.cc: + * flower/getopt-long.cc: * flower/include/getopt-long.hh: Use std::string [interface]. Update callers. @@ -6946,16 +6946,16 @@ 2006-01-22 Jan Nieuwenhuizen - * flower/file-path.cc: + * flower/file-path.cc: * flower/include/file-path.hh: Use std::string [interface]. Update callers. - * flower/direction.cc: + * flower/direction.cc: * flower/axis.cc: Unused. Remove. * configure.in (--enable-std-string): New option. - * flower/std-string.cc: + * flower/std-string.cc: * flower/include/std-string.hh: New file. * flower/file-name.cc[STD_STRING]: @@ -6963,7 +6963,7 @@ 2006-01-22 Han-Wen Nienhuys - * scm/output-svg.scm (placebox): no GNU coding standards in SVG output. + * scm/output-svg.scm (placebox): no GNU coding standards in SVG output. * scm/define-markup-commands.scm (with-dimensions): with-dimensions markup command. @@ -7006,7 +7006,7 @@ * input/test/font-table.ly: new file. Generate font table within lily. * Documentation/user/notation-appendices.itely (The Feta font): - use new font-table.ly file. + use new font-table.ly file. * stepmake/stepmake/install-out-targets.make (local-install-outfiles): only create directory if @@ -7024,7 +7024,7 @@ This fixes problems with TTF files in dfonts that don't match their PostScript names. - + * lily/ttf.cc (LY_DEFINE): ly:ttf-ps-name: new routine to extract PS name from TTF font. @@ -7042,7 +7042,7 @@ 2006-01-20 Han-Wen Nienhuys - * lily/tie-formatting-problem.cc (generate_configuration) + * lily/tie-formatting-problem.cc (generate_configuration) (set_manual_tie_configuration): skip non-pair manual tie-configuration, so you can set individual ties as @@ -7052,7 +7052,7 @@ simplify file. * lily/tie-formatting-problem.cc (peak_around): new function. - (score_configuration): use sliding criterion for staff line collisions. + (score_configuration): use sliding criterion for staff line collisions. (score_configuration): idem for dot collisions. (generate_configuration): use separate stem_gap for gap to stem. @@ -7072,7 +7072,7 @@ * lily/staff-symbol-referencer.cc (on_staff_line): new function * lily/staff-symbol-referencer.cc (on_line): rename from - on_staffline + on_staffline 2006-01-18 Han-Wen Nienhuys @@ -7120,7 +7120,7 @@ explicitly. * lily/font-config-scheme.cc (LY_DEFINE): also display font and - config dirs. Aids debugging. + config dirs. Aids debugging. (display_config): also display config files. 2006-01-07 Han-Wen Nienhuys @@ -7173,7 +7173,7 @@ * Documentation/user/GNUmakefile ($(outdir)/interfaces.itexi): remove absolute path to lilypond binary. - + 2006-01-05 Pedro Kroeger * configure.in (NCSB_DIR): fix --with-ncsb-dir option. @@ -7186,7 +7186,7 @@ 2006-01-04 Jan Nieuwenhuizen - * lily/main.cc: + * lily/main.cc: * configure.in: Cosmetic fixes. 2006-01-04 Mats Bengtsson @@ -7200,7 +7200,7 @@ init. Fixes verbose printing of .scm files. * stepmake/aclocal.m4: add spaces before - options. - + 2006-01-03 Jan Nieuwenhuizen * lily/relocate.cc (setup_paths): Bugfix: do not store result @@ -7211,11 +7211,11 @@ * configure.in (NCSB_DIR): --enable-ncsb-dir (LINK_GXX_STATICALLY): denko. - * mf/GNUmakefile ($(NCSB_TTFS)): NCSB_DIR iso. NCSB_PATH. + * mf/GNUmakefile ($(NCSB_TTFS)): NCSB_DIR iso. NCSB_PATH. + + * configure.in (LINK_GXX_STATICALLY): --enable-ncsb-path option. + use locate to find c059033l.pfb. - * configure.in (LINK_GXX_STATICALLY): --enable-ncsb-path option. - use locate to find c059033l.pfb. - 2006-01-02 Jan Nieuwenhuizen * lily/tie-formatting-problem.cc @@ -7246,15 +7246,15 @@ * lily/program-option.cc (LY_DEFINE): special support for --verbose, so it works before option init too. - + * mf/GNUmakefile (local-install): oops. * lily/lyric-hyphen.cc (print): oops. * buildscripts/pfx2ttf.fontforge: new file. - + * mf/GNUmakefile (NCSB_PATH): add vars for NCSB. - ($(outdir)/%.ttf): new rule. + ($(outdir)/%.ttf): new rule. * scm/define-grobs.scm (all-grob-descriptions): add font-interface to LyricHyphen. @@ -7265,16 +7265,16 @@ 2005-12-31 Han-Wen Nienhuys * VERSION: release 2.7.26 - + * mf/GNUmakefile (install-fc-cache): remove old font.cache-1 files. 2005-12-30 Han-Wen Nienhuys * lily/font-config.cc (init_fontconfig): verbosity. - * THANKS: add Muziekacademie Lede. + * THANKS: add Muziekacademie Lede. - * scripts/musicxml2ly.py (print_voice_definitions): new function + * scripts/musicxml2ly.py (print_voice_definitions): new function (print_score_setup): new function (convert): read part definition to output staves properly. @@ -7350,7 +7350,7 @@ 2005-12-27 Heikki Junes - * Documentation/user/invoking.itely: describe how to view SVG + * Documentation/user/invoking.itely: describe how to view SVG output using Inkscape which replace embedded fonts with OTF fonts. 2005-12-25 Han-Wen Nienhuys @@ -7389,10 +7389,10 @@ Stem::get_default_direction, use default-direction with callback instead. - * lily/melody-spanner.cc (calc_neutral_stem_direction): + * lily/melody-spanner.cc (calc_neutral_stem_direction): * lily/melody-engraver.cc: new file. Acknowledge stems for - interpolated stem directions. + interpolated stem directions. * lily/melody-spanner.cc: new file. Interpolate stem directions. @@ -7406,7 +7406,7 @@ * lily/slur-configuration.cc (score_extra_encompass): don't use bound->column() == avoid->column() for checking extents, as this - doesn't work for accidentals. + doesn't work for accidentals. * lily/slur-engraver.cc (acknowledge_extra_object): remove DynamicText hardcoding. @@ -7445,7 +7445,7 @@ * stepmake/bin/install.py: Remove file before copying. - * config.make.in: + * config.make.in: * stepmake/aclocal.m4: Do not substitute INSTALL. 2005-12-21 Han-Wen Nienhuys @@ -7508,7 +7508,7 @@ * lily/script-column-engraver.cc (stop_translation_timestep): delay adding to script-column. - * lily/tuplet-bracket.cc (print): suicide if no control-points. + * lily/tuplet-bracket.cc (print): suicide if no control-points. * python/convertrules.py (conv): rule for number-visibility @@ -7523,7 +7523,7 @@ * input/regression/slur-tuplet.ly: new file. - * lily/slur-engraver.cc (acknowledge_tuplet_number): new function. + * lily/slur-engraver.cc (acknowledge_tuplet_number): new function. * flower/include/offset.hh (class Offset): new operator /= @@ -7537,7 +7537,7 @@ (print): remove text handling for tuplet numberdef. * lily/tuplet-engraver.cc (struct Tuplet_description): create - TupletNumbers too. + TupletNumbers too. * lily/lily-guile.cc (robust_scm2booldrul): new function @@ -7551,7 +7551,7 @@ * lily/dimension-cache.cc (clear): new function. * lily/grob.cc (extent): swap order of min-extent and extent - calculations. This fixes hara kiri staves. + calculations. This fixes hara kiri staves. 2005-12-19 Jan Nieuwenhuizen @@ -7600,7 +7600,7 @@ 2005-12-16 Han-Wen Nienhuys - * ly/music-functions-init.ly: add \bar and \clef music function + * ly/music-functions-init.ly: add \bar and \clef music function * lily/lily-lexer.cc: idem. @@ -7620,7 +7620,7 @@ * lily/tie.cc: remove get_default_attachments() * VERSION (PACKAGE_NAME): release 2.7.23 - + * lily/chord-tremolo-engraver.cc (acknowledge_stem): use ultimate_music_cause(). This fixes core dumps in unfold-all-repeats.ly @@ -7639,8 +7639,8 @@ (score_ties_configuration): new function. (generate_ties_configuration): new function. (generate_base_chord_configuration): new function. - (set_ties_config_standard_directions): Move body from tie-column-format.cc - (set_manual_tie_configuration): Move body from tie-column-format.cc + (set_ties_config_standard_directions): Move body from tie-column-format.cc + (set_manual_tie_configuration): Move body from tie-column-format.cc * input/regression/tie-dot.ly: new file. @@ -7652,14 +7652,14 @@ * Documentation/topdocs/NEWS.tely (Top): strip out-www. * stepmake/stepmake/python-module-vars.make (SHARED_FLAGS): use - -undefined suppress iso. -framework Python + -undefined suppress iso. -framework Python * scm/define-grobs.scm (all-grob-descriptions): set springs-and-rods (thanks Joe Neeman!) 2005-12-12 Nicolas Sceaux - * input/no-notation/display-lily-tests.ly (test): + * input/no-notation/display-lily-tests.ly (test): * scm/display-lily.scm (tag->lily-string): the syntax for tags has changed from \tag #'(a b) to \tag #'a \tag #'b @@ -7690,18 +7690,18 @@ * python/midi.c (pymidi_parse): use memcmp() iso. strcmp(). * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove - Span_arpeggio_engraver, add Tweak_engraver to Score context. + Span_arpeggio_engraver, add Tweak_engraver to Score context. * lily/parser.yy: reorganize file layout. * ly/music-functions-init.ly: add tweak music function. * lily/grob-info.cc (ultimate_music_cause): new function: - recursively lookup causes. + recursively lookup causes. * lily/parser.yy (chord_body_element): allow music functions for - post-events, allow music functions for chord elements. - + post-events, allow music functions for chord elements. + * lily/font-config-scheme.cc (display_fontset): add cast. * python/convertrules.py (FatalConversionError.sub_syms): \tag @@ -7807,9 +7807,9 @@ option formatting, lilypond style. * python/musicexp.py: grab from Ikebana: a library for composing - ly music expressions. + ly music expressions. (Output_printer): class for advanced .ly printing. - (eg. tupletting) + (eg. tupletting) * python/musicxml.py: new file. Read MusicXML MiniDOM tree, and convert to pythonesque structure. @@ -7821,7 +7821,7 @@ 2005-12-04 Erik Sandberg * lily/part-combine-iterator.cc: Minor bugfix - + * THANKS: Update bughunters 2005-12-02 Werner Lemberg @@ -7840,7 +7840,7 @@ 2005-12-01 Jan Nieuwenhuizen * lily/GNUmakefile ($(outdir)/FlexLexer.h): - ($(outdir)/parser.cc): + ($(outdir)/parser.cc): ($(outdir)/lexer.cc): Bugfix: depend on config.h. 2005-11-30 Pedro Kröger @@ -7885,7 +7885,7 @@ * scripts/*.py: gmane address for bugs. 2005-11-28 Pal Benko - + * make/ly-rules.make: add -f switch to mv * scm/output-libs.scm: add new bar symbol "." for punctus divisionis @@ -7925,12 +7925,12 @@ 2005-11-25 Han-Wen Nienhuys * VERSION: release 2.7.19 - + * lily/figured-bass-engraver.cc (process_music): check figuredBassCenterContinuations first. * scm/translation-functions.scm (format-bass-figure): make double - sharp larger. + sharp larger. * lily/mark-engraver.cc: read rehearsalMarkAlignSymbol to determine X-parent. @@ -8000,7 +8000,7 @@ (struct Bracket_nesting_group): new class (struct Bracket_nesting_staff): new class. (process_music): create hierarchy of grobs. This allows separate - tuning of different SSDs. + tuning of different SSDs. * scm/define-grobs.scm (all-grob-descriptions): new Grob SystemStartSquare (all-grob-descriptions): remove old NestedSystemStartDelimiter. @@ -8069,7 +8069,7 @@ 2005-11-17 Mats Bengtsson - * python/midi.c: PyMIDINIT_FUNC isn't defined in Python < 2.3 + * python/midi.c: PyMIDINIT_FUNC isn't defined in Python < 2.3 add dummy definition that works in Linux and add information in INSTALL.texi on the specific Python requirements for Cygwin/Mingw. @@ -8087,7 +8087,7 @@ 2005-11-16 Han-Wen Nienhuys * VERSION: release 2.7.17 - + * Documentation/topdocs/NEWS.tely (Top): add note about refactoring. @@ -8099,7 +8099,7 @@ (get_configuration): new function. (Tie_formatting_problem): new function - * input/regression/page-top-space.ly: a6 for page-top-space demo. + * input/regression/page-top-space.ly: a6 for page-top-space demo. * stepmake/aclocal.m4: use $(if ) for config-FOOF.make @@ -8152,7 +8152,7 @@ 2005-11-13 Han-Wen Nienhuys - * python/convertrules.py (conv): add warning about drums. + * python/convertrules.py (conv): add warning about drums. * make/stepmake.make: include toplevel-version.make after config.make. @@ -8194,7 +8194,7 @@ * lily/tie.cc (get_configuration): only shift tie by a whole staff space inside the staff. (get_configuration): shift another position if necessary in case - of left head tie + of left head tie 2005-11-12 Han-Wen Nienhuys @@ -8214,7 +8214,7 @@ * lily/grob-closure.cc (add_offset_callback): only encaps in simple_closure if it's a procedure. - + * lily/span-bar.cc (calc_glyph_name): read glyph-name, not glyph from bar-line. @@ -8235,9 +8235,9 @@ 2005-11-10 Han-Wen Nienhuys * VERSION: release 2.7.16 - + * scripts/lilypond-book.py (main): use commands.mkarg () to quote - shell arguments. + shell arguments. 2005-11-10 Mats Bengtsson @@ -8292,7 +8292,7 @@ * make/lilypond.fedora.spec.in (Group): add %clean section. * lily/tuplet-bracket.cc (print): change check: remove bracket if - less then 1/5th of total length. + less then 1/5th of total length. (print): use gap too. Fixes tupletUp-single-bracket.ly * scm/music-functions.scm (glue-mm-rest-texts): also put other @@ -8316,7 +8316,7 @@ offset callbacks. This fixes alignment for Fingering objects. * scm/define-grobs.scm (all-grob-descriptions): tiny bit less - space for key - timesig combination. + space for key - timesig combination. * input/regression/script-stem-tremolo.ly (Module): new file. @@ -8325,18 +8325,18 @@ * lily/dynamic-engraver.cc (acknowledge_stem_tremolo): new function. Fixes: c-tremolo-script.ly. - + * lily/text-engraver.cc (acknowledge_stem_tremolo): new function. * lily/script-engraver.cc (acknowledge_stem_tremolo): new function. - + * scm/define-grobs.scm (all-grob-descriptions): remove self-X-offset. Fixes alignment of octavate-8. * scripts/lilypond-book.py (datadir): look in LILYPONDPREFIX/share/lilypond/current/ - * GNUmakefile.in: symlink current to . + * GNUmakefile.in: symlink current to . 2005-11-07 Pedro Kroger @@ -8353,7 +8353,7 @@ * lily/beam.cc (set_stem_lengths): force direction callback. (print): read quantized-positions, so we can force Beam::set_stem_lengths to occur. - (rest_collision_callback): use common X parent. + (rest_collision_callback): use common X parent. 2005-11-03 Jan Nieuwenhuizen @@ -8384,7 +8384,7 @@ 2005-11-02 Han-Wen Nienhuys - * GNUmakefile.in: bugfix: encapsulate mkdir && cd in parens. + * GNUmakefile.in: bugfix: encapsulate mkdir && cd in parens. * lily/staff-performer.cc (process_music): add audio elements. This makes MIDI instrument changes work once again. @@ -8422,11 +8422,11 @@ * lily/side-position-interface.cc (set_axis): new function. * lily/new-fingering-engraver.cc (position_scripts): use drul for - generic code. + generic code. * scm/define-grob-properties.scm (all-user-grob-properties): remove [XY]-offset-callbacks add [YX]-offset - + 2005-11-02 Mats Bengtsson * scm/define-grobs.scm (all-grob-descriptions): Added space-alist @@ -8464,7 +8464,7 @@ * lily/rest-collision.cc (force_shift_callback_rest): change to chained callback. - * lily/rest.cc (y_offset_callback): merge function of 3 callbacks. + * lily/rest.cc (y_offset_callback): merge function of 3 callbacks. * lily/grob.cc (y_parent_positioning): remove axis argument from parent_positioning callbacks. @@ -8502,13 +8502,13 @@ * scm/script.scm (default-script-alist): set quantize-position appropriately. - * lily/script-engraver.cc: remove follow_into_staff_ special coding. + * lily/script-engraver.cc: remove follow_into_staff_ special coding. * lily/side-position-interface.cc (aligned_side): move staff position quantization from Side_position_interface::quantised_position(). (quantised_position): remove - + 2005-10-31 Han-Wen Nienhuys * input/regression/beam-quant-standard.ly: reindent, set @@ -8550,7 +8550,7 @@ * Documentation/topdocs/INSTALL.texi (Top): add perl flex bison. 2005-10-25 John Mandereau - + * Documentation/user/instrument-notation.itely (Figured bass): describe new features @@ -8560,7 +8560,7 @@ * lily/beam-concave.cc (calc_concaveness): use property callback. - * ly/paper-defaults.ly: move fixed dimensions from paper.scm + * ly/paper-defaults.ly: move fixed dimensions from paper.scm 2005-10-25 Jan Nieuwenhuizen @@ -8571,21 +8571,21 @@ * scm/layout-page-layout.scm (page-headfoot): annotate pagetopspace too. - * scm/stencil.scm (dimension-arrows): shorten arrowed lines a bit. + * scm/stencil.scm (dimension-arrows): shorten arrowed lines a bit. * scm/layout-page-layout.scm (annotate-y-interval): y-annotation doesn't take y-space. - * scm/paper.scm (paper-alist): fix A7 dimensions. + * scm/paper.scm (paper-alist): fix A7 dimensions. 2005-10-24 Jan Nieuwenhuizen * stepmake/stepmake/generic-vars.make (DIST_FILES): Fix src-wildcard, remove $(wildcard). - * po/GNUmakefile (PO_FILES): - * ps/GNUmakefile (PS_FILES): - * tex/GNUmakefile (TEX_FILES): + * po/GNUmakefile (PO_FILES): + * ps/GNUmakefile (PS_FILES): + * tex/GNUmakefile (TEX_FILES): * cygwin/GNUmakefile (POSTINSTALLS): * vim/GNUmakefile (EXTRA_DIST_FILES): Bugfix: [etags sr?] missed some wildcard calls. @@ -8601,13 +8601,13 @@ * scripts/midi2ly.py (datadir): Add libdir iso datadir to path, for alternative installations kludging s/share/lib/g - LILYPONDPREFIX. + LILYPONDPREFIX. * SConstruct (libdir_package_version): Define. - * python/SConscript: + * python/SConscript: * python/GNUmakefile (INSTALLATION_OUT_DIR): Install binary .so - module in libdir. + module in libdir. 2005-10-22 Han-Wen Nienhuys @@ -8616,7 +8616,7 @@ 2005-10-21 Han-Wen Nienhuys * VERSION: release 2.7.14 - + * Documentation/user/*.itely: remove minimumVerticalExtent. * scm/define-grobs.scm (all-grob-descriptions): remove @@ -8684,7 +8684,7 @@ extraVerticalExtent, minimumVerticalExtent verticalExtent. * lily/grob.cc (Grob): don't set extent from ctor. - (extent): use property callbacks. + (extent): use property callbacks. * lily/axis-group-interface.cc: remove set_axes() function. @@ -8693,7 +8693,7 @@ 2005-10-21 Han-Wen Nienhuys * lily/font-config.cc (init_fontconfig): resurrect mf/out/ check. - + 2005-10-20 Jan Nieuwenhuizen * stepmake/stepmake/script-vars.make (PYTHON_SCRIPTS_IN): Oops. Add. @@ -8725,7 +8725,7 @@ 2005-10-19 Han-Wen Nienhuys * lily/tuplet-bracket.cc (print): use dy iso. positions[RIGHT] for - Y coordinate. + Y coordinate. * lily/paper-book.cc (add_score_title): put Paper_score title into systems_ list. @@ -8740,7 +8740,7 @@ * lily/note-collision.cc (check_meshing_chords): don't wipe stencil, merely set transparent. - * Documentation/topdocs/NEWS.tely (Top): mention John Mandereau. + * Documentation/topdocs/NEWS.tely (Top): mention John Mandereau. (Top): document #'callbacks. (Top): document nested \override. @@ -8780,7 +8780,7 @@ * input/regression/override-nest.ly: new function. * lily/parser.yy (music_property_def): allow \override #'a #'b = - #c too. + #c too. * lily/context-property.cc (lookup_nested_property): new function. (evict_from_alist): new function. @@ -8825,7 +8825,7 @@ document details for stem. remove Stem::get_direction() - * lily/grob-scheme.cc (LY_DEFINE): new function ly:grob-set-callback! + * lily/grob-scheme.cc (LY_DEFINE): new function ly:grob-set-callback! * lily/grob-property.cc (set_callback): new function. @@ -8846,12 +8846,12 @@ * lily/script-interface.cc (calc_direction): use callback for direction. * lily/side-position-interface.cc (aligned_side): don't use - Side_position_interface::get_direction directly. Use callback. + Side_position_interface::get_direction directly. Use callback. * lily/grob.cc (get_stencil): simplify: use callback mechanism to calculate stencil. (get_print_stencil): rename from get_stencil: create stencil with - transparency, color and cause. + transparency, color and cause. * scm/define-grobs.scm: change print-function to stencil callback everywhere. @@ -8919,7 +8919,7 @@ * lily/beam.cc (calc_direction): use pseudo-property for beam direction callback. - (calc_positions): use callback + (calc_positions): use callback * lily/align-interface.cc (calc_positioning_done): use callback. Fold fixed distance and normal alignment in one function. @@ -8930,7 +8930,7 @@ (calc_stem_end_position): idem (calc_stem_info): idem. - * lily/grob-property.cc (get_property_data): new function: + * lily/grob-property.cc (get_property_data): new function: (try_callback): new function. * scm/define-grob-properties.scm (all-user-grob-properties): doc @@ -8943,13 +8943,13 @@ * lily/tie.cc (get_position): robustness fix. Don't crash if a tie has no heads. - + * lily/include/*.hh (Module): compile fixes. 2005-10-14 Heikki Junes - * elisp/lilypond-font-lock.el, elisp/lilypond-indent.el: Avoid nil - as an argument for char-syntax: use (char-syntax (or nil 0)) + * elisp/lilypond-font-lock.el, elisp/lilypond-indent.el: Avoid nil + as an argument for char-syntax: use (char-syntax (or nil 0)) instead of (char-syntax nil), thanks to Milan Zamazal. 2005-10-14 Han-Wen Nienhuys @@ -8979,7 +8979,7 @@ * ly/titling-init.ly (evenHeaderMarkup): use space in header on even header too. - + * scm/define-markup-commands.scm (wordwrap-string): bugfix for MacOS 9 users. @@ -9044,7 +9044,7 @@ * lily/new-figured-bass-engraver.cc (process_music): add implicitBassFigures property. - + * scm/define-markup-commands.scm (pad-x): new markup. * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): set @@ -9057,7 +9057,7 @@ * flower/file-name.cc (dos_to_posix)[__CYGWIN__]: Return unconverted value if cygwin_conv_to_posix_path () fails. Fixes - absolute file name bug. + absolute file name bug. 2005-10-07 Han-Wen Nienhuys @@ -9088,7 +9088,7 @@ New_figured_bass_engraver): add new_music_found_ member. * lily/lilypond-version.cc (Lilypond_version): deal with - incorrectly formatted version strings. + incorrectly formatted version strings. * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): switch on New_figured_bass_engraver by default. @@ -9117,9 +9117,9 @@ actual score for LaTeX documents. * scm/define-grobs.scm (all-grob-descriptions): Change - collapse-height of the SystemStartBracket grob to 5.0, + collapse-height of the SystemStartBracket grob to 5.0, so the bracket disappears for single stave score lines (similarly - to SystemStartBraces). + to SystemStartBraces). * Documentation/user/advanced-notation.itely (Polymetric notation): Clarify the use of compressMusic. @@ -9148,22 +9148,22 @@ * lily/lily-guile.cc (robust_scm2dir): new function. * scm/page-layout.scm (page-headfoot): annotate headsep and footsep. - (annotate-space-left): new function. Annotate space left on page. + (annotate-space-left): new function. Annotate space left on page. (annotate-y-interval): new function. (paper-system-annotate-last): new function. Annotate bottom-space. - * mf/feta-beugel.mf (y): + * mf/feta-beugel.mf (y): 2005-10-02 Han-Wen Nienhuys * VERSION (PACKAGE_NAME): release 2.7.11 * scm/lily-library.scm (interval-translate): new function - (interval-center): new function. + (interval-center): new function. * scm/page-layout.scm (paper-system-annotate): new function. Add arrows for dimensions. - + * scm/stencil.scm (dimension-arrows): new function. * Documentation/user/global.itely (Vertical spacing): mention annotatespacing @@ -9226,7 +9226,7 @@ * scm/lily-library.scm (paper-system-title?): new function. - * lily/book.cc (process): bugfix: flip ?: cases. + * lily/book.cc (process): bugfix: flip ?: cases. * Documentation/user/changing-defaults.itely (Difficult tweaks): add outputProperty. @@ -9257,7 +9257,7 @@ * lily/paper-system.cc (read_left_bound): new function. Read line-break-system-details from left bound to determine extents. - + * Documentation/user/programming-interface.itely (Using LilyPond syntax inside Scheme): change applyxxx -> applyXxx. @@ -9304,7 +9304,7 @@ * VERSION: release 2.7.10 * stepmake/stepmake/python-module-rules.make - ($(outdir)/%$(SHARED_MODULE_SUFFIX)): SHARED_FLAGS at the end. + ($(outdir)/%$(SHARED_MODULE_SUFFIX)): SHARED_FLAGS at the end. * lily/*.cc: remove everywhere. is included from real.hh @@ -9322,11 +9322,11 @@ * input/regression/laissez-vibrer-ties.ly: new file. - * lily/laissez-vibrer-engraver.cc: new file. + * lily/laissez-vibrer-engraver.cc: new file. * lily/include/tie-column-format.hh: new file. - * lily/tie-column-format.cc: new file. + * lily/tie-column-format.cc: new file. * lily/tie-column.cc (set_manual_tie_configuration): new function. @@ -9374,24 +9374,24 @@ 2005-09-08 Jan Nieuwenhuizen - * Documentation/user/lilypond.tely: Spell Baßtuba in UTF-8 (Werner). + * Documentation/user/lilypond.tely: Spell Baßtuba in UTF-8 (Werner). * lily, flower: Include C++ iso C headers. Import namespace std throughout. - * lily/side-position-interface.cc: - * lily/scm-hash.cc: - * lily/note-head.cc: - * lily/include/includable-lexer.hh: + * lily/side-position-interface.cc: + * lily/scm-hash.cc: + * lily/note-head.cc: + * lily/include/includable-lexer.hh: * flower/include/string-data.icc: Remove using std::*. * lily, flower: Include C++ iso C headers. Import namespace std throughout. - * lily/side-position-interface.cc: - * lily/scm-hash.cc: - * lily/note-head.cc: - * lily/include/includable-lexer.hh: + * lily/side-position-interface.cc: + * lily/scm-hash.cc: + * lily/note-head.cc: + * lily/include/includable-lexer.hh: * flower/include/string-data.icc: Remove using std::*. * Documentation/user/instrument-notation.itely (Entering lyrics): @@ -9417,7 +9417,7 @@ * lily/general-scheme.cc: remove my_{isinf,isnan}. * flower/include/real.hh: using std::{isnan,isinf} - + * VERSION (PATCH_LEVEL): release 2.7.9 2005-09-05 Graham Percival @@ -9452,7 +9452,7 @@ 2005-09-01 Han-Wen Nienhuys * scm/define-markup-commands.scm (strut): swap X and Y dims. - + 2005-09-03 Jan Nieuwenhuizen * .cvsignore: Add auto-generated configure files and then some. @@ -9471,7 +9471,7 @@ * scm/framework-eps.scm (dump-stencils-as-EPSes): Insert a \linebreak between each .eps file if \betweenLilyPondSystem is - undefined. + undefined. * Documentation/user/lilypond-book.itely (Integrating LaTeX and music): Document the \linebreak @@ -9490,7 +9490,7 @@ * scripts/lilypond-book.py (PREAMBLE_LY): define inside-lilypond-book (modify_preamble): new function. Insert \RequirePackage{graphics} - when no {graphics found in preamble. + when no {graphics found in preamble. 2005-08030 Graham Percival @@ -9505,7 +9505,7 @@ 2005-08-30 Han-Wen Nienhuys * lily/tie-column.cc (new_directions): put Tie down on center - staff line. + staff line. * lily/script-interface.cc (before_line_breaking): use Grob::programming_error @@ -9561,19 +9561,19 @@ string. * scripts/lilypond-book.py (output_name): remove - latex_filter_cmd. Non-portable to non-Unix systems. + latex_filter_cmd. Non-portable to non-Unix systems. (get_latex_textwidth): use File.write and os.unlink() instead. * THANKS: add Vicente & Trevor. * lily/grob.cc (discretionary_processing): look up origin for - programming_error too. + programming_error too. * input/regression/tie-broken.ly: new file. * lily/tie-column.cc (set_chord_outlines): set outline for line break case too. - + 2005-08-25 Han-Wen Nienhuys * lily/pango-font.cc (text_stencil): don't translate glyphs in @@ -9628,7 +9628,7 @@ preventing random vertical reordering of staves. * scm/define-grob-interfaces.scm (dynamic-line-spanner-interface): - add avoid-slur property. + add avoid-slur property. * Documentation/user/basic-notation.itely (Measure repeats): add countPercentRepeats example. @@ -9664,7 +9664,7 @@ 2005-08-22 Han-Wen Nienhuys - * make/lilypond-vars.make: set -dgs-font-load for "make web" + * make/lilypond-vars.make: set -dgs-font-load for "make web" * Documentation/topdocs/INSTALL.texi (Top): add GS bugfix requirement. @@ -9677,12 +9677,12 @@ * scm/ps-to-png.scm: remove dir-re function. (make-ps-images): generate page names, instead of globbing them. This brings down LilyPond memory usage for make web by a factor - 10. + 10. * scripts/lilypond-book.py (Lilypond_snippet.png_is_outdated): don't use glob. With 3000 files, globbing - Documentation/user/out-www/ can take too much time. - + Documentation/user/out-www/ can take too much time. + * lily/lily-guile.cc (gulp_file_to_string): take size argument. * lily/general-scheme.cc (LY_DEFINE): take optional size argument. @@ -9691,9 +9691,9 @@ * input/regression/tie-chord.ly: update. - * flower/include/interval.hh (struct Interval_t): + * flower/include/interval.hh (struct Interval_t): - * lily/tie.cc (distance): new function + * lily/tie.cc (distance): new function (height): new function. (init): new function (Tie_details): new struct. @@ -9704,13 +9704,13 @@ (new_directions): read tie-configuration * lily/skyline.cc: fix ASCII art. - + 2005-08-22 Mats Bengtsson * python/convertrules.py (string_or_scheme): Fix spelling error 2005-08-22 Han-Wen Nienhuys - + * lily/tie-column.cc (set_directions): set directions only once. (add_configuration): new function. @@ -9736,7 +9736,7 @@ * lily/tie.cc: remove minimum-length * scm/define-grob-properties.scm (all-user-grob-properties): - remove staffline-clearance, y-offset + remove staffline-clearance, y-offset * input/regression/tie-dots.ly (Module): remove. @@ -9757,7 +9757,7 @@ signature of baseclass. * lily/engraver-group.cc (do_announces): move recursion call out - of while loop. + of while loop. * lily/drum-note-performer.cc (class Drum_note_performer): use process_music everywhere. @@ -9765,7 +9765,7 @@ * ly/performer-init.ly: add default children everywhere. * lily/paper-book.cc (output): call paper-book-write-midis - directly: always write MIDI, even if no \layout {} block. + directly: always write MIDI, even if no \layout {} block. 2005-08-19 Han-Wen Nienhuys @@ -9860,7 +9860,7 @@ * lily/context-def.cc (instantiate): check for Engraver_group_engraver and Performer_group_performer not Engraver/Performer. Fixes crashes when doing \with { \consists .. } - + 2005-08-18 Jan Nieuwenhuizen * input/les-nereides.ly: Remove three fingering tweaks, update @@ -9907,7 +9907,7 @@ * input/regression/spacing-stick-out.ly: specify Score context for \override - * input/regression/clefs.ly: remove spurious {}s + * input/regression/clefs.ly: remove spurious {}s 2005-08-17 Heikki Junes @@ -9952,7 +9952,7 @@ * input/proportional.ly: tune staff-padding. - * input/regression/repeat-percent-count.ly: new file. + * input/regression/repeat-percent-count.ly: new file. 2005-08-16 Nicolas Sceaux @@ -9981,7 +9981,7 @@ staff-padding support. * input/proportional.ly: set staff-padding. - + * VERSION (PATCH_LEVEL): release 2.7.5 * input/mutopia/J.S.Bach/wtk1-fugue2.ly (bassdux): text formatting @@ -10052,7 +10052,7 @@ (eps-header): idem. * mf/feta-bolletjes.mf: swap d0 and u0 fa heads. - + 2005-08-13 Graham Percival * Documentation/user/global.itely: add "fit as much as @@ -10072,11 +10072,11 @@ 2005-08-12 Mats Bengtsson * Documentation/user/basic-notation.itely (Ties): Add example of - tying a tremolo to a chord. Thanks to Steve Doonan. + tying a tremolo to a chord. Thanks to Steve Doonan. * lily/tie-engraver.cc: Add tieWaitForNote to the list of read properties and move tieMelismaBusy to the list of written - properties. + properties. 2005-08-12 Heikki Junes @@ -10141,7 +10141,7 @@ * scm/define-markup-commands.scm (normal-text): Added 2 new markup commands, \normal-text and \medium (the latter thanks to - Bruce Fairchild). + Bruce Fairchild). 2005-08-08 Graham Percival @@ -10221,7 +10221,7 @@ (staffKind): updates by Trevor Baca. * scm/define-grobs.scm (all-grob-descriptions): remove arrows as - default layout. + default layout. * lily/tuplet-bracket.cc (print): check whether edge-text is a pair. @@ -10277,12 +10277,12 @@ * input/regression/spacing-strict-notespacing.ly: new file. * lily/spacing-spanner.cc (generate_springs): rename from - do_measure. + do_measure. (generate_pair_spacing): new function. (init, generate_pair_spacing): set between-cols for floating nonmusical columns. - * lily/spaceable-grob.cc (get_spring): new function. + * lily/spaceable-grob.cc (get_spring): new function. * lily/tuplet-bracket.cc (print): on the left, the overshoot is relative to the right edge of the prefatory matter. @@ -10324,7 +10324,7 @@ heavily nested tuplets. * lily/auto-beam-engraver.cc (derived_mark): new method. Yes. We - have to protect even those unlikely to be corrupted data members. + have to protect even those unlikely to be corrupted data members. 2005-08-04 Graham Percival @@ -10366,7 +10366,7 @@ * scm/define-markup-commands.scm (arrow-head): arrow-head markup command. * scm/define-grobs.scm (all-grob-descriptions): set arrows as - default + default * lily/tuplet-bracket.cc: add edge-text property. add break-overshoot. @@ -10381,7 +10381,7 @@ * Documentation/user/lilypond-book.itely (An example of a musicological document): Added flag -o to dvips for people who use - the default setting in teTeX where output is sent to the printer. + the default setting in teTeX where output is sent to the printer. * Documentation/user/global.itely (Vertical spacing): Added reference to the Axis_group_engraver which documents the *Extent @@ -10390,14 +10390,14 @@ 2005-08-03 Han-Wen Nienhuys * Documentation/user/basic-notation.itely (Tuplets): add note - about nested tuplets. Remove BUG. + about nested tuplets. Remove BUG. - * input/regression/tuplet-nest.ly: update: remove manual hack. + * input/regression/tuplet-nest.ly: update: remove manual hack. * lily/tuplet-bracket.cc (print): use robust_scm2drul (print): manually call print() for subtuplets. (calc_position_and_height): add subtuplets to the - support. Vertically shift outer tuplet + support. Vertically shift outer tuplet * ly/engraver-init.ly (RemoveEmptyRhythmicStaffContext): set remove-first for Lyrics, ChordNames and FiguredBass @@ -10444,14 +10444,14 @@ * ly/init.ly: * scm/lily-library.scm (print-score-with-defaults): renamed $globalheader to $defaultheader - + * Documentation/user/global.itely (Creating titles): added short explanation that multiple headers are useable. 2005-08-01 Han-Wen Nienhuys - * lily/module-scheme.cc (LY_DEFINE): new file. + * lily/module-scheme.cc (LY_DEFINE): new file. * Documentation/user/advanced-notation.itely (Font selection): add doco for make-pango-font-tree. @@ -10492,7 +10492,7 @@ Clarify chord durations, more bagpipe stuff. 2005-07-27 Han-Wen Nienhuys - + * lily/accidental-engraver.cc: formatting fixes. * lily/spacing-spanner.cc (prune_loose_columns): right-items is a @@ -10510,7 +10510,7 @@ * lily/main.cc (sane_setenv)[!ARGV0_RELOCATION]: Also define. (setup_guile_env): Use it instead of nonstandard setenv. Fixes mingw build. - + 2005-07-25 Han-Wen Nienhuys * scm/lily.scm (lilypond-all): clear anonymous modules after @@ -10531,14 +10531,14 @@ * lily/main.cc (setup_guile_env): new function. Set GC min_yields higher. This increases memory footprint, but provides overall - speedup of 15 to 20%. + speedup of 15 to 20%. * lily/include/translator.hh (class Translator): remove PRECOMPUTED_VIRTUAL everywhere. * lily/include/lily-guile.hh: inline scm_c[ad]r, scm_is_pair. - * lily/context.cc (now_mom): non-recursive now_mom() + * lily/context.cc (now_mom): non-recursive now_mom() * lily/include/profile.hh: new file. @@ -10584,8 +10584,8 @@ * lily/font-size-engraver.cc (process_music): read fontSize only once per timestep. - * lily/engraver*cc: use throughout. - + * lily/engraver*cc: use throughout. + * lily/include/translator.icc (ADD_ACKNOWLEDGER): new macro. * lily/translator.cc (add_acknowledger): new file. Directly jump @@ -10602,7 +10602,7 @@ * lily/translator-group.cc (mark_smob): idem for acceptHashTable. * lily/engraver-group-engraver.cc (Engraver_group_engraver): - change acknowledgeHashTable to C++ member. + change acknowledgeHashTable to C++ member. * lily/rest-collision.cc (do_shift): use extract_grob_set(). @@ -10642,7 +10642,7 @@ 2005-07-21 Han-Wen Nienhuys - * Documentation/texinfo.css: revert 760px hack. + * Documentation/texinfo.css: revert 760px hack. * VERSION: release 2.7.2 @@ -10721,7 +10721,7 @@ non-static get_rank() member. * VERSION: release 2.7.1 - + * scm/framework-null.scm: new file, used for benchmarking. 2005-07-20 Heikki Junes @@ -10731,7 +10731,7 @@ * Documentation/index.html.in, Documentation/texinfo.css, stepmake/bin/text2html.py, buildscripts/mutopia-index.py, - Documentation/bibliography/index.html.in, + Documentation/bibliography/index.html.in, Documentation/bibliography/html-long.bst: optimize width of html for a 800x600 screen (width:760), increases printability when 'fit to page' is not set and readability in wide screens. @@ -10777,11 +10777,11 @@ * lily/include/grob-array.hh (class Grob_array): ordered_ member. * lily/parser.yy: revert $globalheader patch. - + * lily/include/translator.icc (IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS): directly jump into Translator methods, without _static helper. - + * lily/grob-smob.cc (derived_mark): rename from do_derived_mark(). Return void. @@ -10796,9 +10796,9 @@ * Documentation/topdocs/NEWS.tely (Top): add note about engravers. - * python/convertrules.py (conv): rule for Timing_translator. + * python/convertrules.py (conv): rule for Timing_translator. - * lily/include/translator.icc: new file. + * lily/include/translator.icc: new file. * lily/paper-column-engraver.cc (process_music): new file. Separate Paper_column factory from Score_engraver. @@ -10830,7 +10830,7 @@ rid of virtual inheritance for Engravers/Performers. * lily/staff-performer.cc (class Staff_performer): derive - Staff_performer from Performer, not Performer_group_performer + Staff_performer from Performer, not Performer_group_performer * Lily/translator-group.cc (precomputed_recurse_over_translators): new function. @@ -10843,7 +10843,7 @@ recurse_down_engravers () * lily/note-head.cc (internal_print): only call - glyph-name-procedure if style != default. + glyph-name-procedure if style != default. 2005-07-16 Graham Percival @@ -10854,7 +10854,7 @@ 2005-07-16 Han-Wen Nienhuys * lily/system.cc (do_derived_mark): don't mark from object_alist_ - anymore, but do it centrally. + anymore, but do it centrally. * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove hammer hack. @@ -10891,7 +10891,7 @@ * lily/bezier.cc (init_polynomial_cache): new function: cache binom(3,j) t^j (1-t)^{3-j} - (curve_point): opps, actually use the cache for t^j , (1-t)^j! + (curve_point): opps, actually use the cache for t^j , (1-t)^j! * lily/*.cc: substitution throughout. @@ -10912,7 +10912,7 @@ 2005-07-15 Nicolas Sceaux - * Documentation/user/global.itely (Creating titles): + * Documentation/user/global.itely (Creating titles): * Documentation/user/examples.itely (All headers): change the place of \header in \score blocks (after music block) to make examples compile (cf. changes on parser.yy on 2005-07-10) @@ -10932,9 +10932,9 @@ 2005-07-13 Han-Wen Nienhuys - * scm/output-socket.scm (grob-bbox): don't use inf? + * scm/output-socket.scm (grob-bbox): don't use inf? - * flower/include/rational.hh: add operator bool() + * flower/include/rational.hh: add operator bool() * scm/define-music-types.scm (music-descriptions): remove internal-class-name properties. @@ -10972,7 +10972,7 @@ * lily/lookup.cc (beam): use round_filled_polygon() for beam. * flower/include/guile-compatibility.hh (scm_from_locale_string): - add scm_from_locale_string compatibility glue. + add scm_from_locale_string compatibility glue. 2005-07-13 Yoshinobu Ishizaki @@ -10996,7 +10996,7 @@ 2005-07-12 Han-Wen Nienhuys - * scm/define-markup-commands.scm (justify-field): add. + * scm/define-markup-commands.scm (justify-field): add. * scm/define-grobs.scm (all-grob-descriptions): decrease font size. @@ -11023,12 +11023,12 @@ * lily/paper-outputter-scheme.cc (LY_DEFINE): take port argument. - * scm/framework-texstr.scm (output-framework): + * scm/framework-texstr.scm (output-framework): * input/regression/repeat-fold.ly (texidoc): remove TeX strings. * scm/output-lib.scm (tablature-stem-attachment-function): - tablature stem attachment fix. + tablature stem attachment fix. 2005-07-10 Han-Wen Nienhuys @@ -11041,10 +11041,10 @@ * lily/paper-column.cc (print): print moment too. - * scripts/mup2ly.py (cp_to_dir): remove 1.5.2 compat glue. + * scripts/mup2ly.py (cp_to_dir): remove 1.5.2 compat glue. remove compatibility cruft. - * lily/parser.yy (score_body): \score can only begin with Music. + * lily/parser.yy (score_body): \score can only begin with Music. * lily/score-scheme.cc (LY_DEFINE): rename scorify to make-score. Take music argument only. Move parser interaction to @@ -11065,7 +11065,7 @@ strength. This prevents division by zero. * VERSION: release 2.7.0 - + * lily/include/music.hh (class Music): remove Music::duration_log() * lily/stem-engraver.cc (make_stem): take duration log from event. @@ -11098,7 +11098,7 @@ * lily/axis-group-interface-scheme.cc (LY_DEFINE): new file. * lily/note-head.cc (internal_print): if style is not a symbol, - set style to 'default. + set style to 'default. (internal_print): no style suffix if glyph-name-procedure not set. Default to quarter head. @@ -11139,7 +11139,7 @@ 2005-07-01 Han-Wen Nienhuys * lily/ly-module.cc (ly_make_anonymous_module): define - %module-public-interface of module. + %module-public-interface of module. * lily/lily-parser.cc (print_smob): allow printing of parser smob without lexer. @@ -11186,7 +11186,7 @@ * scm/define-markup-commands.scm (wordwrap-string): new function: split string in paras and words. (wordwrap-markups): new function. - (wordwrap-stencils): new function. + (wordwrap-stencils): new function. (justify): use it. (wordwrap): use it. (wordwrap-string): use it @@ -11194,7 +11194,7 @@ * scm/lily-library.scm (regexp-split): new function. - * scm/define-markup-commands.scm: remove encoded-simple. + * scm/define-markup-commands.scm: remove encoded-simple. remove font-markup. (fontsize): remove old version of fontsize. (wordwrap): new markup function. Wrap into paragraphs. @@ -11229,7 +11229,7 @@ * Documentation/user/advanced-notation.itely (Font selection): remove CMR note. - * scm/framework-ps.scm (write-preamble): ly:warning iso. ly:warn + * scm/framework-ps.scm (write-preamble): ly:warning iso. ly:warn 2005-06-28 Jan Nieuwenhuizen @@ -11284,7 +11284,7 @@ * Documentation/user/examples.itely (Module): 2.4.0 -> 2.6.0 - * input/*.ly (Module): 2.4 -> 2.6 grand convert-ly s/r. + * input/*.ly (Module): 2.4 -> 2.6 grand convert-ly s/r. * python/convertrules.py (do_conversion): don't print program_name from within a module @@ -11317,7 +11317,7 @@ temporary file in the current directory since latex doesn't understand the path name to the default TMP in Cygwin (at least on win XP). - + * Documentation/user/global.itely (Creating titles): Correct misprint in example. Thanks to Rob Vlasaty. @@ -11339,7 +11339,7 @@ whiteout for markups. * buildscripts/substitute-encoding.py (note_glyph): include _ in - regex too. This fixes change clef appearance in PDF. + regex too. This fixes change clef appearance in PDF. * ttftool/include/*: remove. @@ -11354,7 +11354,7 @@ * GNUmakefile.in (SUBDIRS): remove ttftool subdirectory. * lily/ttf.cc (print_header): new file. Convert to type42, using - FreeType to parse the TTF. + FreeType to parse the TTF. * ttftool/parse.c (readPostTable): ugh. Kludge: nglyphs in maxp and post table may differ. Pass around post_nglyphs as well. @@ -11362,8 +11362,8 @@ 2005-06-20 Han-Wen Nienhuys * ly/music-functions-init.ly (musicMap): new music function - musicMap. - + musicMap. + 2005-06-19 Han-Wen Nienhuys * make/mutopia-rules.make: anti-alias-factor = 2 @@ -11383,10 +11383,10 @@ end. * scm/framework-ps.scm (write-preamble): downcase filename before - string-matching. Should fix .TTF files (as opposed to ttf files) + string-matching. Should fix .TTF files (as opposed to ttf files) * Documentation/user/tutorial.itely (Running LilyPond for the - first time): separate subsections for windows, macos and unix. + first time): separate subsections for windows, macos and unix. * Documentation/user/invoking.itely (Updating files with convert-ly): add MacOS X note. @@ -11452,7 +11452,7 @@ 2005-06-15 Han-Wen Nienhuys * make/mutopia-rules.make: switch off ps, p&c for lilypond runs. - + * scm/framework-ps.scm (write-preamble): remove status check. * Documentation/user/invoking.itely (Updating files with @@ -11475,7 +11475,7 @@ 2005-06-14 Mats Bengtsson * Documentation/topdocs/NEWS.tely (Top): Corrected name of - \musicDisplay + \musicDisplay * Documentation/user/instrument-notation.itely (More stanzas): Add reference to StanzaNumber. @@ -11497,7 +11497,7 @@ color names into an appendix. 2005-06-14 Han-Wen Nienhuys - + * lily/program-option.cc (LY_DEFINE): new function ly_add_option. * scm/lily.scm (lambda): initialize program options from here. @@ -11510,11 +11510,11 @@ * scm/backend-library.scm (postprocess-output): process 'delete-intermediate-files after running convert-to-*. This fixes PNG generation when 'delete-intermediate-files is set. - + 2005-06-13 Han-Wen Nienhuys * buildscripts/mutopia-index.py (list_item): thinko. Fixes png - links on website. + links on website. 2005-06-13 Graham Percival @@ -11535,11 +11535,11 @@ * input/sakura-sakura.ly: add \midi. * buildscripts/mutopia-index.py (find): use /usr/bin/find - iso. python find. + iso. python find. * ttftool/test.c (main): cosmetics. - * ttftool/util.c (surely_lseek): use stdio FILE's for I/O + * ttftool/util.c (surely_lseek): use stdio FILE's for I/O * ttftool/test.c: new file. If compiled with -DTEST_TTFTOOL, create a ttf2ps binary. @@ -11567,7 +11567,7 @@ * ttftool/util.c (surely_read): return nbytes - * stepmake/bin/text2html.py (txt2html): add utf-8 marker. + * stepmake/bin/text2html.py (txt2html): add utf-8 marker. * VERSION (PACKAGE_NAME): release 2.5.30 @@ -11580,7 +11580,7 @@ {book,score}-print functions. * scm/ly-from-scheme.scm (ly:parse-string-result): use new setup: - pass results via parseStringResult, lookup via ly:parser-lookup. + pass results via parseStringResult, lookup via ly:parser-lookup. * lily/lily-parser.cc (Lily_parser): only clone lexer in constructors. @@ -11620,7 +11620,7 @@ * lily/include/lily-parser.hh (class Lily_parser): remove beam_check(). * scm/backend-library.scm (postscript->pdf): use - delete-intermediate-files iso. running-from-gui? + delete-intermediate-files iso. running-from-gui? * ttftool/util.c (surely_read): robustness. Allow read() to return less bytes than requested, as per posix standards. @@ -11643,7 +11643,7 @@ * lily/scm-option.cc: remove command-line-settings option. Fold all command-line options plus default settings in a generic - interface. + interface. * flower/getopt-long.cc (table_string): indent 2nd lines of help texts too. @@ -11667,7 +11667,7 @@ * lily/include/lily-proto.hh: add Context_def. This fixes FC4 compile. - * lily/parser.yy (Repeated_music): remove >? + * lily/parser.yy (Repeated_music): remove >? * scm/backend-library.scm (postscript->pdf): Support for -dgs-font-load=1 @@ -11687,7 +11687,7 @@ * scm/editor.scm: add char argument. - * scripts/lilypond-invoke-editor.scm (dissect-uri): add char. + * scripts/lilypond-invoke-editor.scm (dissect-uri): add char. * ttftool/util.c (syserror): use errno for better error reporting. @@ -11716,7 +11716,7 @@ * Documentation/user/GNUmakefile (TEXINPUTS): set TEXINPUTS so our texinfo.tex is always used. - + 2005-06-07 Han-Wen Nienhuys * flower/include/axis.hh: rename from axes.hh @@ -11765,26 +11765,26 @@ 2005-06-06 Han-Wen Nienhuys - * ly/engraver-init.ly: add \defaultchild to InnerStaffGroup. + * ly/engraver-init.ly: add \defaultchild to InnerStaffGroup. * scm/ps-to-png.scm (gulp-port): rename from read. Don't redefine system primitives. (gulp-port): using read-string!/partial. We don't want to read an - entire PS file (GUILE 1.6 limits strings to 16M) + entire PS file (GUILE 1.6 limits strings to 16M) * scm/define-grobs.scm (all-grob-descriptions): remove arch-* - properties. Add font-interface. + properties. Add font-interface. * scm/define-grob-properties.scm (all-user-grob-properties): remove old bracket properties. - * scm/x11-color.scm: reformat. + * scm/x11-color.scm: reformat. * lily/ledger-line-engraver.cc (acknowledge_grob): create new - LedgerLineSpanner if new StaffSymbol is found. + LedgerLineSpanner if new StaffSymbol is found. * lily/staff-symbol-engraver.cc (acknowledge_grob): also set - staff-symbol for finishing staff. + staff-symbol for finishing staff. * lily/GNUmakefile (OUT_DIST_FILES): don't dist Flex output @@ -11801,7 +11801,7 @@ * scm/output-ps.scm: remove white-dot and white-text - * scm/fret-diagrams.scm (sans-serif-stencil-white): removed -- + * scm/fret-diagrams.scm (sans-serif-stencil-white): removed -- using ly:stencil-in-color instead (draw-dots) : remove call to white-dot @@ -11810,12 +11810,12 @@ * flower/memory-stream.cc (Memory_out_stream): remove fopencookie support. - * ttftool/ttfps.c: use lily_cookie functions everywhere. + * ttftool/ttfps.c: use lily_cookie functions everywhere. - * flower/include/file-cookie.hh: new file. lily_cookie extension + * flower/include/file-cookie.hh: new file. lily_cookie extension * flower/file-cookie.cc: new file. lily_cookie extension. - + 2005-06-06 Jan Nieuwenhuizen * scm/editor.scm (editor-command-template-alist): Add syn @@ -11862,7 +11862,7 @@ 2005-06-02 Han-Wen Nienhuys * scm/backend-library.scm (postscript->pdf): set resolution to - 1200, so bitmap fonts aren't that ugly. + 1200, so bitmap fonts aren't that ugly. * Documentation/topdocs/NEWS.tely (Top): add entry about font family. @@ -11965,7 +11965,7 @@ 2005-05-31 Han-Wen Nienhuys - * lily/pfb.cc (LY_DEFINE): show file name when loading PFB. + * lily/pfb.cc (LY_DEFINE): show file name when loading PFB. * input/regression/alignment-order.ly: add Staff example. @@ -12024,7 +12024,7 @@ numerical overflow error. 2005-05-29 Laura Conrad - + * abc2ly.py: fix to syntax error in multi-part output. 2005-05-30 Han-Wen Nienhuys @@ -12033,7 +12033,7 @@ with disappearing span bars when alignAboveContext is active * lily/property-iterator.cc (check_grob): use is-grob? - object-property. Fixes crash-key-sig-font-size.ly. + object-property. Fixes crash-key-sig-font-size.ly. 2005-05-29 Han-Wen Nienhuys @@ -12048,7 +12048,7 @@ * lily/lilypond.rc.in: Add ly-icon. - * lily/GNUmakefile: + * lily/GNUmakefile: * Documentation/pictures/GNUmakefile (OUT_DIST_FILES): Add ly-icon rules. @@ -12056,7 +12056,7 @@ * lily/stencil-scheme.cc (LY_DEFINE): ly:stencil-in-color - * ps/music-drawing-routines.ps: + * ps/music-drawing-routines.ps: * scm/output-ps.scm: remove draw ez_ball. @@ -12077,9 +12077,9 @@ * scm/output-svg.scm (filledbox): idem. - * scm/output-ps.scm (lily-def): remove horizontal-line. + * scm/output-ps.scm (lily-def): remove horizontal-line. - * lily/lookup.cc (horizontal_line): use draw-line. + * lily/lookup.cc (horizontal_line): use draw-line. * lily/system-start-delimiter.cc: remove old staff bracket code. @@ -12089,10 +12089,10 @@ * mf/feta-generic.mf: include feta-haak. - * mf/feta-haak.mf: rewrite. Make separate glyphs for the tips + * mf/feta-haak.mf: rewrite. Make separate glyphs for the tips * scm/framework-ps.scm (write-preamble): only load fonts if their - filename is a string. + filename is a string. 2005-05-27 Han-Wen Nienhuys @@ -12122,7 +12122,7 @@ * VERSION: 2.5.26 released. - * scm/titling.scm (marked-up-headfoot): revert Pedro's patch. + * scm/titling.scm (marked-up-headfoot): revert Pedro's patch. 2005-05-25 Pedro Kroger @@ -12135,7 +12135,7 @@ cache warning. * lily/tie.cc (print): support dotted ties. - + 2005-05-25 Han-Wen Nienhuys * scm/define-grobs.scm (all-grob-descriptions): switch off @@ -12146,7 +12146,7 @@ length-callback and start-callback as "read-only". * scm/music-functions.scm (unfold-repeats): rewrite. Cannot set - length-callback after creation. + length-callback after creation. * scripts/convert-ly.py (conv): unfoldrepeats -> unfoldRepeats, compressmusic -> compressMusic. @@ -12196,7 +12196,7 @@ * lily/general-scheme.cc (ly:stderr-redirect): Rename from ly:port-move. Needs to be stderr-specific on mingw. - Run fixcc. + Run fixcc. 2005-05-20 Jan Nieuwenhuizen @@ -12209,8 +12209,8 @@ variables. This eliminates the need for a gs.bat wrapper, which opens a console. - * scripts/lilypond-invoke-editor.scm (running-from-gui?): - * scm/lily.scm (running-from-gui?): + * scripts/lilypond-invoke-editor.scm (running-from-gui?): + * scm/lily.scm (running-from-gui?): * lily/main.cc[MINGW]: Remove isatty inversion, this is an artifact of not compiling with -mwindows. @@ -12219,7 +12219,7 @@ 2005-05-23 Han-Wen Nienhuys * scripts/lilypond-book.py (PREAMBLE_LY): add marker, where people - can start to cut & paste lilypond-book fragments. + can start to cut & paste lilypond-book fragments. * scm/define-music-types.scm (music-descriptions): remove UntransposableMusic @@ -12337,7 +12337,7 @@ 2005-05-16 Mats Bengtsson * lily/horizontal-bracket.cc (print): Take care of the direction - property so brackets above the stave point downwards. + property so brackets above the stave point downwards. * scm/define-grobs.scm (all-grob-descriptions): Set staff-padding for HorizontalBracket so it doesn't end up within the stave. @@ -12350,7 +12350,7 @@ * scm/framework-ps.scm (write-preamble)[MINGW]: Use load-font-via-GS, ttftool or fopencookie is broken on windows. - + * scm/backend-library.scm (postscript->pdf)[MINGW]: Do not use -dSAFER, that is broken on windows. @@ -12395,7 +12395,7 @@ function. Figure out where FlexLexer.h lives * lily/GNUmakefile (OUT_DIST_FILES): dist lexer.cc and FlexLexer.h - + 2005-05-14 Jan Nieuwenhuizen * scripts/lilypond-invoke-editor.scm (dissect-uri): Handle URIs @@ -12522,7 +12522,7 @@ * lily/instrument-name-engraver.cc (class Instrument_name_engraver): data member first_. Create - InstrumentName on start. + InstrumentName on start. 2005-05-12 Graham Percival @@ -12553,7 +12553,7 @@ * lily/main.cc: update help string for `lilypond -H'. * po/fi.po: update. - + 2005-05-10 Graham Percival * Documentation/user/advanced-notation.itely: minor fixes. @@ -12631,13 +12631,13 @@ Add link to the program reference for MetronomeMark * Documentation/user/lilypond-book.itely (An example of a - musicological document): Correct the example using psfonts + musicological document): Correct the example using psfonts 2005-05-09 Heikki Junes * po/fi.po: update after a lesson how to update entries against source. - + * po/TODO: document the lesson. 2005-05-09 Han-Wen Nienhuys @@ -12649,10 +12649,10 @@ 2005-05-09 Mats Bengtsson - * scripts/convert-ly.py: In the conversion to version 1.9.0, + * scripts/convert-ly.py: In the conversion to version 1.9.0, keep Scheme expressions and strings unmodified when doing the conversion to postfix notation for slurs and beams. Should - hopefully solve most related conversion problems. + hopefully solve most related conversion problems. * Documentation/user/lilypond-book.itely : Clarify and correct how to call dvips with -h psfonts. @@ -12684,7 +12684,7 @@ * lily/include/grob-info.hh (class Grob_info): make data member private. Changes throughout. - * input/regression/alignment-order.ly: new file. + * input/regression/alignment-order.ly: new file. * lily/vertical-align-engraver.cc (acknowledge_grob): read alignAboveContext and alignBelowContext @@ -12714,7 +12714,7 @@ 2005-05-06 Han-Wen Nienhuys * scm/x11-color.scm (make-x11-color-handler): don't use - #\sp. Apparently doesn't work on all platforms. + #\sp. Apparently doesn't work on all platforms. 2005-05-06 Graham Percival @@ -12770,7 +12770,7 @@ 2005-05-04 Mats Bengtsson - * scripts/convert-ly.py: Attempt to do a smarter update of + * scripts/convert-ly.py: Attempt to do a smarter update of text markups from versions < 1.9.0 with arbitrary nesting. 2005-05-04 Heikki Junes @@ -12788,7 +12788,7 @@ 2005-05-04 Heikki Junes - * input/regression/GNUmakefile (local_delete): use `find` together + * input/regression/GNUmakefile (local_delete): use `find` together with `xargs` to avoid too long argument-lists in cmd line. 2005-05-04 Graham Percival @@ -12800,7 +12800,7 @@ 2005-05-04 Han-Wen Nienhuys - * COPYING: add font exception. Update FSF address. + * COPYING: add font exception. Update FSF address. * lily/context-def.cc (path_to_acceptable_context): bugfix, depth should be taken without child context. @@ -12823,7 +12823,7 @@ * mf/GNUmakefile: remove cff/cff.ps/.map install rules. * lily/grace-engraver.cc (consider_change_grace_settings): use - is_alias(). Fixes problem with CueVoice grace notes. + is_alias(). Fixes problem with CueVoice grace notes. * lily/simultaneous-music-iterator.cc (construct_children): call Music_iterator::quit() for iterators that start out invalid. This @@ -12832,7 +12832,7 @@ * buildscripts/substitute-encoding.py: new file * Documentation/user/basic-notation.itely (Basic polyphony): fix - missing @end + missing @end * scripts/lilypond-book.py (write_if_updated): print file name. @@ -12840,7 +12840,7 @@ instantiating voices): idem. * Documentation/user/advanced-notation.itely (Text spanners): - remove stray { } + remove stray { } * lily/context.cc (default_child_context_name): the default child is now first in accepts_list_. @@ -12851,7 +12851,7 @@ (Probably also fixes similar problems with ancient transcriptions getting CueVoices instead of the desired voices.) - + * lily/context-def.cc (get_default_child): new function. (get_accepted): place default child in front of list. @@ -12916,7 +12916,7 @@ ($(outdir)/Fontmap.lily): idem. * buildscripts/gen-emmentaler-scripts.py (i): load fetaXX encoding - for PFAEmmentaler-XXX.pfa. + for PFAEmmentaler-XXX.pfa. * Documentation/user/music-glossary.tely (accidental): NL translation of accidental. @@ -12937,7 +12937,7 @@ * Documentation/user/changing-defaults.itely (Common tweaks): Added example where the context has to be specified explicitly - (MetronomeMark). + (MetronomeMark). 2005-05-01 Han-Wen Nienhuys @@ -12947,7 +12947,7 @@ * scripts/convert-ly.py (conv): typo. * flower/*.cc: remove ? - + * lily/*.cc: remove ? * lily/tweak-registration.cc (insert_tweak_from_file): Make sure @@ -13082,15 +13082,15 @@ * lily/GNUmakefile (OUT_DIST_FILES): don't dist lexer.cc 2005-04-22 Laura Conrad - + * scripts/abc2ly: second title line append with punctuation dash character; encode abc2ly python strings in utf-8 - + 2005-04-21 Laura Conrad * scripts/abc2ly fix chords (again) - + 2005-04-22 Bernard Hurley * scm/x11-color.scm: new file @@ -13173,8 +13173,8 @@ * lily/ledger-line-spanner.cc: some more words of explanation. -2005-04-20 John Williams - +2005-04-20 John Williams + * scripts/lilypond-book.py: htmlquote bugfix. Allow snippets to be given distinct filenames. Allow the default alt text to be overridden. @@ -13205,7 +13205,7 @@ note column if no other bound is set. * python/lilylib.py (make_ps_images): switch back to png16m. - + 2005-04-19 Jan Nieuwenhuizen * scripts/lilypond-book.py (write_if_updated): Bugfix for not @@ -13313,9 +13313,9 @@ finishing command. * lily/paper-score-scheme.cc (LY_DEFINE): new file. - (LY_DEFINE): ly:paper-score-paper-systems: new function + (LY_DEFINE): ly:paper-score-paper-systems: new function - * lily/score-scheme.cc (LY_DEFINE): require music argument. + * lily/score-scheme.cc (LY_DEFINE): require music argument. * lily/score.cc (default_rendering): use Music_output too. @@ -13324,7 +13324,7 @@ * lily/text-spanner.cc: add bound-padding. * lily/paper-book.cc (systems): accept Paper_score - iso. Paper_system vector. + iso. Paper_system vector. * input/regression/line-arrows.ly: new file. @@ -13334,14 +13334,14 @@ 2005-04-18 Jonatan Liljedahl - * lily/line-interface.cc (make_arrow): new function. + * lily/line-interface.cc (make_arrow): new function. (arrows): idem. 2005-04-18 Mathieu Giraud * input/test/chord-names-german.ly: update for italian/french chords. - + * Documentation/user/instrument-notation.itely (Printing chord names): update. @@ -13353,7 +13353,7 @@ * lily/book.cc (process): add -COUNT to midi output. * lily/score.cc (book_rendering): remove outname argument - (book_rendering): return list of Music_outputs. + (book_rendering): return list of Music_outputs. * lily/global-context-scheme.cc (LY_DEFINE): remove outname argument. @@ -13361,7 +13361,7 @@ Score::book_rendering(). * lily/*.cc (width_callback): remove spurious "unused" warnings - for assert (axis==[XY]_AXIS); + for assert (axis==[XY]_AXIS); * lily/include/music-output.hh (class Music_output): smobify class. @@ -13384,9 +13384,9 @@ a space defined by chordPrefixSpacer when the root name is direclty followed by a prefix. - * ly/engraver-init.ly : chordPrefixSpacer + * ly/engraver-init.ly : chordPrefixSpacer * scm/define-context-properties.scm : chordPrefixSpacer - * ly/property-init.ly : italianChords, frenchChords + * ly/property-init.ly : italianChords, frenchChords 2005-04-17 Jan Nieuwenhuizen @@ -13454,7 +13454,7 @@ * python/lilylib.py (make_ps_images): use -dEPSCrop - * VERSION (PACKAGE_NAME): release 2.5.19 + * VERSION (PACKAGE_NAME): release 2.5.19 * Documentation/user/lilypond-book.itely (Invoking lilypond-book): only put xrefs in info documentation. @@ -13478,7 +13478,7 @@ document font-name. * input/regression/font-name.ly: show Pango fonts for - font-name. Update example. + font-name. Update example. * lily/pango-select.cc (properties_to_pango_description): don't convert symbol font-size to number, but use to lookup. @@ -13486,7 +13486,7 @@ * python/fontextract.py (write_extracted_fonts): add VMusage 0. * scm/framework-ps.scm (write-preamble): use (NAME . CONTENTS) and - (NAME . FILE-NAME) tuples for font descriptions. + (NAME . FILE-NAME) tuples for font descriptions. (write-preamble): display BeginFont DSC comments. * python/fontextract.py (write_extracted_fonts): new file. Extract @@ -13601,7 +13601,7 @@ 2005-04-09 Nicolas Sceaux - * scm/music-functions.scm (music->make-music): generate + * scm/music-functions.scm (music->make-music): generate a (make-music ...) sexpr from a music expression. (display-scheme-music): use guile pretty printer to display the make-music sexpr. @@ -13619,7 +13619,7 @@ * lily/moment-scheme.cc (LY_DEFINE): new methods ly:moment-grace-{numerator,denominator} - * lily/context-handle.cc: remove quit() method. + * lily/context-handle.cc: remove quit() method. * lily/font-config.cc (init_fontconfig): be verbose about font path. (init_fontconfig): success is 0, not !0 @@ -13638,7 +13638,7 @@ * scm/define-markup-commands.scm (with-color): with-color markup command. - (whiteout): new markup command + (whiteout): new markup command (filled-box): new markup command 2005-04-07 Jan Nieuwenhuizen @@ -13648,7 +13648,7 @@ * mf/GNUmakefile (lilypond.map): Add PFAEmmentaler, PFAAybabtu-Regular. Fixes feta font in PDFs. - + Notes for tetex-3.0 make web: psclean.map: s/uhv8a/uhvr8a/ config.ps add: @@ -13667,7 +13667,7 @@ 2005-04-06 Han-Wen Nienhuys - * scripts/lilypond-book.py (Lilypond_snippet.__init__): + * scripts/lilypond-book.py (Lilypond_snippet.__init__): only process options if they're there. (write_file_map): add version-seen? to snippet-map.ly @@ -13684,9 +13684,9 @@ * scm/framework-ps.scm (ps-font-command): don't hash, just use name directly. - * lily/main.cc (setup_paths): either add mf/out to search path or + * lily/main.cc (setup_paths): either add mf/out to search path or fonts/{otf,type1,etc} - + * lily/font-config.cc (init_fontconfig): either add mf/out to FontConfig or fonts/{otf,type1,etc} @@ -13714,10 +13714,10 @@ * buildscripts/gen-emmentaler-scripts.py (i): generate PFAEmmentaler.pfa aswell. -2005-04-06 John Williams - +2005-04-06 John Williams + * scripts/lilypond-book.py: refactor the compose_ly procedure. - + 2005-04-06 Han-Wen Nienhuys * scm/page-layout.scm (default-page-make-stencil): always combine @@ -13821,7 +13821,7 @@ * Documentation/user/GNUmakefile (local-WWW): Do not generate .ps.gz. - + 2005-04-02 Jan Nieuwenhuizen * GNUmakefile.in: Add newline. @@ -13900,16 +13900,16 @@ use box-stencil. Remove y-padding argument. (make-stencil-circler): New function. - * buildscripts/lilypond-words.py (F): - * elisp/SConscript (a): + * buildscripts/lilypond-words.py (F): + * elisp/SConscript (a): * elisp/GNUmakefile (LILYPOND_WORDS_DEPENDS): - * vim/SConscript (a): + * vim/SConscript (a): * vim/GNUmakefile (LILYPOND_WORDS_DEPENDS): Update. * lily/general-scheme.cc: Build fix. * scm/markup.scm: - * input/regression/markup-scheme.ly: + * input/regression/markup-scheme.ly: * input/regression/markup-syntax.ly: Drop 'new-' from name. * scm/stencil.scm (make-circle-stencil): New function. @@ -13933,7 +13933,7 @@ 2005-03-29 Han-Wen Nienhuys * scripts/convert-ly.py (conv): add stencil-aligned-to! rule. - + * VERSION (PACKAGE_NAME): release 2.5.17 2005-03-29 Jan Nieuwenhuizen @@ -13960,7 +13960,7 @@ 2005-03-28 Jan Nieuwenhuizen - * SConstruct (symlink): + * SConstruct (symlink): * GNUmakefile.in (link-tree): Add scripts to prefix. * lily/general-scheme.cc (ly:effective-prefix): New function. @@ -13970,7 +13970,7 @@ 2005-03-28 Han-Wen Nienhuys * lily/paper-score.cc (process): don't delete grobs after - producing stencils. + producing stencils. * scm/part-combiner.scm (determine-split-list): switch off debugging info. @@ -14000,7 +14000,7 @@ * input/regression/new-markup-syntax.ly (texidoc): add circle. - * lily/new-fingering-engraver.cc (add_string): new function. + * lily/new-fingering-engraver.cc (add_string): new function. (acknowledge_grob): accept string-number-event as well. * scm/define-markup-commands.scm (circle): new markup command. @@ -14017,7 +14017,7 @@ * lily/GNUmakefile (MODULE_LDFLAGS): Only if not HAVE_KPATHSEA_SO, add KPATHSEA_LIBS. - * debian/watch: + * debian/watch: * debian/control: Update. 2005-03-28 Han-Wen Nienhuys @@ -14057,7 +14057,7 @@ documentencoding. * ly/chord-modifiers-init.ly (whiteTriangleMarkup): use the greek - Delta, not the Symbol one. + Delta, not the Symbol one. * mf/GNUmakefile ($(outdir)/lilypond.map): add -Regular to Aybabtu for the .map file. @@ -14097,17 +14097,17 @@ * scripts/abc2ly.py (dump_voices): use alphabet(). 2005-03-27 Jeff Smith - - * mf/GNUmakefile (depth): use $(FONTFORGE). + + * mf/GNUmakefile (depth): use $(FONTFORGE). 2005-03-27 Matthias Neeracher - + * flower/include/virtual-methods.hh: simplify. Patch by -2005-03-25 John Williams +2005-03-25 John Williams * scripts/lilypond-book.py (main): add png for HTML too, guess - only if necessary. + only if necessary. 2005-03-25 Graham Percival @@ -14134,8 +14134,8 @@ 2005-03-23 Mats Bengtsson * lily/parser.yy (bass_number), - Documentation/user/instrument-notation.itely (Figured bass): - Add the possibility to use text markup in figured bass. + Documentation/user/instrument-notation.itely (Figured bass): + Add the possibility to use text markup in figured bass. 2005-03-19 Graham Percival @@ -14176,18 +14176,18 @@ 2005-03-18 Han-Wen Nienhuys - * python/lilylib.py (make_ps_images): add x to -g argument. + * python/lilylib.py (make_ps_images): add x to -g argument. * lily/key-performer.cc (create_audio_elements): don't use scm_eval_string. Check for minor 3rd directly. - + * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly (sarabandeCelloGlobal): key is D minor, not F major. 2005-03-17 Jan Nieuwenhuizen Fix truncated --png output (Peter Danenberg). - + * python/lilylib.py (make_ps_images): * scripts/ps2png.py (copyright): Grok --papersize option. @@ -14197,7 +14197,7 @@ * scm/output-gnome.scm (music-font?): Bugfix: use "Emmentaler". Fixes symbol placement. - * lily/spanner.cc: + * lily/spanner.cc: * lily/stencil.cc: Use "libc-extension.hh" (WAS: ). @@ -14239,8 +14239,8 @@ 2005-03-14 Jan Nieuwenhuizen - * make/ly-rules.make: - * stepmake/aclocal.m4: + * make/ly-rules.make: + * stepmake/aclocal.m4: * Documentation/user/GNUmakefile: Remove old makeinfo compatibility. * buildscripts/fixcc.py (rules): Leave space after operator. @@ -14281,7 +14281,7 @@ 2005-03-12 Han-Wen Nienhuys * scm/define-grobs.scm (all-grob-descriptions): switch off - Hyphen_spanner::set_spacing_rods + Hyphen_spanner::set_spacing_rods * lily/lyric-hyphen.cc (print): add padding between syllable and hyphen. @@ -14308,7 +14308,7 @@ 2005-03-12 Jan Nieuwenhuizen - * input/sakura-sakura.ly: + * input/sakura-sakura.ly: * input/xiao-haizi-guai-guai.ly: Add from Debian package (Anthony). * buildscripts/guile-gnome.sh: Update. @@ -14321,7 +14321,7 @@ * lily/separating-group-spanner.cc (find_rods): oops. Fix the real culprit: always exit the loop if we find a rod, even if it has - distance < 0. + distance < 0. * lily/ledger-line-spanner.cc (set_spacing_rods): rewrite to O(n) algorithm. @@ -14330,7 +14330,7 @@ $(outdir)/%.svg $(outdir)/%.pfa): add --simplify. * scm/output-svg.scm (dashed-line): new function body. - + * GNUmakefile.in: create .htaccess. 2005-03-11 Jan Nieuwenhuizen @@ -14345,7 +14345,7 @@ * scm/framework-svg.scm (output-framework): put scaling in document header. Apply scaling only once. - (output-framework): dump page size in px, not mm. + (output-framework): dump page size in px, not mm. * scm/lily-library.scm (modified-font-metric-font-scaling): rename from font-size. @@ -14379,18 +14379,18 @@ 2005-03-10 Han-Wen Nienhuys - * lily/accidental.cc: special bboxes for natural. + * lily/accidental.cc: special bboxes for natural. * mf/feta-toevallig.mf: make stems heavier. * lily/dynamic-text-spanner.cc (print): add bound padding for edge texts as well. - * mf/feta-klef.mf: revise. + * mf/feta-klef.mf: revise. * mf/feta-schrift.mf: make thinning of accent less pronounced. - * mf/feta-klef.mf: add rounded curve at top. + * mf/feta-klef.mf: add rounded curve at top. make thinnib a little heavier. 2005-03-10 Jan Nieuwenhuizen @@ -14419,7 +14419,7 @@ don't crash on stemlet (visible stem without heads). * scm/define-grobs.scm (all-grob-descriptions): junk LeftEdge for - unbroken situations. + unbroken situations. * scm/output-lib.scm (center-invisible): new function. @@ -14434,9 +14434,9 @@ * mf/GNUmakefile (Module): install all fonts under otf/ * scm/framework-ps.scm (Module): read fonts from fonts/extension, - replace /fonts/otf/ by /ps/ + replace /fonts/otf/ by /ps/ + - 2005-03-09 Jan Nieuwenhuizen * lily/paper-book.cc (classic_output): Reinstate header_0_ hack. @@ -14511,7 +14511,7 @@ * lily/parser.yy (book_body): (toplevel_expression): Grok \markup texts. - * lily/score-scheme.cc (ly:music-scorify): + * lily/score-scheme.cc (ly:music-scorify): * scm/lily-library.scm (collect-music-for-book): Take texts parameter. @@ -14601,7 +14601,7 @@ * scm/lily-library.scm: remove ps-embed-cff. * scm/framework-ps.scm (write-preamble): don't use kpathsea for - font loading. + font loading. * scm/font.scm (add-music-fonts): load dynamics/numbers through fontconfig as well. @@ -14617,7 +14617,7 @@ prefix/{otf,type1,mf/out} to fontconfig path. * lily/main.cc: only look at one prefix directory, LILYPONDPREFIX - overrides all. + overrides all. * configure.in (gui_b): remove ec mftrace check @@ -14649,7 +14649,7 @@ command. Also set baseline-skip 2005-03-06 Sebastiano Vigna . - + * lily/main.cc (do_chroot_jail): paranoia security for webserver use. @@ -14694,7 +14694,7 @@ * ly/titling-init.ly (tagline): Use Engraving. Add comment about what link to use best. - * Documentation/user/instrument-notation.itely (Ancient accidentals): + * Documentation/user/instrument-notation.itely (Ancient accidentals): * Documentation/user/tutorial.itely (Automatic and manual beams): Fix @ref. @@ -14736,7 +14736,7 @@ 2005-03-01 Jan Nieuwenhuizen - * lily/kpath.cc: + * lily/kpath.cc: * lily/pdf.cc (Pdf_file): Use more generic error messages. * scm/lily-library.scm (version-not-seen-message): New function. @@ -14754,7 +14754,7 @@ * ly/titling-init.ly (bookTitleMarkup): Add baseline skips from 2.4. * tex/GNUmakefile $(outdir)/latin1.enc: Build fix: - merge stderr with stdout. + merge stderr with stdout. 2005-03-01 Jan Nieuwenhuizen @@ -14774,7 +14774,7 @@ 2005-02-28 Jan Nieuwenhuizen - * flower/memory-stream.cc: + * flower/memory-stream.cc: * flower/libc-extension.cc: Remove obsolete #undefs. * flower/include/libc-extension.hh: Bugfix for BSD, place #ifdef @@ -14822,14 +14822,14 @@ * scm/output-ps.scm (grob-cause): only do mark_URI if non-empty. * scm/framework-ps.scm (write-preamble): remove pdf-viewer code. - + * THANKS: add sponsor. * scm/define-markup-commands.scm (with-url): new markup command. * scm/page-layout.scm (TAGLINE): add www.lilypond.org with URL to tagline. - + * scm/output-tex.scm (url-link): stub. * scm/output-ps.scm (url-link): new function. @@ -14888,7 +14888,7 @@ 2005-02-26 Yuval Harel * Documentation/user/notation.itely: revamped Polyphony section - + 2005-02-26 Han-Wen Nienhuys * Documentation/user/lilypond-book.itely (Music fragment options): @@ -14911,7 +14911,7 @@ * scripts/lilypond-latex.py (Module): remove script. * cygwin/lily-wins.py (stat): write to .lylog, so as not to - overwrite .log. + overwrite .log. * lily/main.cc: remove -m, --no-layout @@ -14920,7 +14920,7 @@ 2005-02-26 Jan Nieuwenhuizen - * cygwin/lilypond.hint: + * cygwin/lilypond.hint: * cygwin/README.in: Update dependencies. * stepmake/aclocal.m4 (STEPMAKE_PANGO, STEPMAKE_PANGO_FT2): @@ -14928,8 +14928,8 @@ * cygwin/mknetrel (extras): Cross compile fixes. - * ttftool/util.c: - * ttftool/ttfps.c: + * ttftool/util.c: + * ttftool/ttfps.c: * ttftool/ps.c: #include libc-extension.hh * flower/include/libc-extension.hh: @@ -15003,14 +15003,14 @@ "timesig.*x/y" -> "timesig.*xy". 2005-02-21 Han-Wen Nienhuys - + * VERSION (PACKAGE_NAME): release 2.5.12 2005-02-20 Han-Wen Nienhuys * ly/engraver-init.ly: set tieWaitForNote to #t by default - * configure.in (gui_b): bump GUILE requirement to 1.6.5 + * configure.in (gui_b): bump GUILE requirement to 1.6.5 * Documentation/topdocs/NEWS.tely: add inputfileref macro. @@ -15029,7 +15029,7 @@ 2005-02-20 Han-Wen Nienhuys * Documentation/topdocs/NEWS.tely (Top): only mention 2.5 - NEWS. Refer to website for older news. + NEWS. Refer to website for older news. * stepmake/bin/add-html-footer.py (i18n): don't strip .PNG / .HTML. This should be done for specific servers only. @@ -15050,7 +15050,7 @@ * lily/tie-column.cc (before_line_breaking): new function. (werner_directions): take into account ties that start on - different columns. + different columns. * lily/score-engraver.cc (set_columns): move add_column() so we have column rank available. @@ -15158,12 +15158,12 @@ instead of manually setting safe-objects in safe-lily.scm. 2005-02-11 Han-Wen Nienhuys - + * lily/slur.cc: Slur-dash patch by Bertalan. * ly/engraver-init.ly (EasyNotation): glyph name dash -> period. - * stepmake/bin/add-html-footer.py (do_file): do i18n only once. + * stepmake/bin/add-html-footer.py (do_file): do i18n only once. 2005-02-10 Jan Nieuwenhuizen @@ -15179,7 +15179,7 @@ 2005-02-08 Jan Nieuwenhuizen - * GNUmakefile.in: + * GNUmakefile.in: * SConstruct (symlink): teTeX-3.0 build fix: add map symlink. * tex/GNUmakefile: teTeX-3.0 fix: install .enc in fonts/enc. Add @@ -15245,7 +15245,7 @@ * lily/general-scheme.cc (LY_DEFINE): new function ly:wide-char->utf-8. * lily/drum-note-performer.cc: remove unused (thanks Michael - Welsh Duggan). + Welsh Duggan). 2005-02-06 Jan Nieuwenhuizen @@ -15264,7 +15264,7 @@ * scm/backend-library.scm (postscript->png): space before --verbose. - + 2005-02-05 Werner Lemberg * mf/feta-autometric.mf (fet_beginchar): Check whether `feta_group' @@ -15311,7 +15311,7 @@ * input/regression/fill-line-test.ly: new file. * buildscripts/gen-emmentaler-scripts.py (i): insert dash in - emmentaler name, eg. emmentaler-23. + emmentaler name, eg. emmentaler-23. 2005-02-04 Christian Hitz @@ -15326,7 +15326,7 @@ * mf/GNUmakefile ($(outdir)/lilypond.map): add aybabtu to .map file. * lily/note-column.cc (translate_rests): call flush_extent_cache() - of parents when translating rests. Fixes: c-chord-rest.ly + of parents when translating rests. Fixes: c-chord-rest.ly * lily/include/dimension-cache.hh (struct Dimension_cache): add dimension_callback_ member. @@ -15340,10 +15340,10 @@ 2005-02-04 Han-Wen Nienhuys - * lily/*: add space after , + * lily/*: add space after , * scm/music-functions.scm (has-request-chord): don't use - ly:music-name anywhere. Fixes <<\\>> notation. + ly:music-name anywhere. Fixes <<\\>> notation. * scm/define-markup-commands.scm (box): use font-size for padding. Fixes boxed-rehearsal-marks.ly @@ -15355,14 +15355,14 @@ * lily/paper-def.cc (find_pango_font): new routine; Store pango_fonts in hash tab too. This is necessary for retrieving Pango_fonts::physical_font_tab() later on. - + * lily/pango-font.cc (pango_item_string_stencil): bugfix: don't crash if psname is null. * lily/lily-guile.cc (ly_hash2alist): new function * Documentation/user/changing-defaults.itely (Text encoding): - rewrite. + rewrite. * lily/pango-font.cc (physical_font_tab): new member. Store PSname -> font_filename mapping. @@ -15398,7 +15398,7 @@ 2005-01-31 Han-Wen Nienhuys * scripts/lilypond-book.py (Module): revert @include. - + 2005-01-31 Jan Nieuwenhuizen * scripts/lilypond-book.py: Resurrect HTML links to .ly source. @@ -15421,7 +15421,7 @@ now default. * VERSION: release 2.5.10 - + * mf/GNUmakefile (INSTALLATION_OUT_FILES4): install cff.ps files. * make/ly-rules.make ($(outdir)/%.texi): detect new EOF marker. @@ -15432,7 +15432,7 @@ 2005-01-30 Han-Wen Nienhuys * scm/chord-name.scm (alteration->text-accidental-markup): change - - to . + - to . * scm/output-ps.scm (utf8-string): add utf8-string for completeness. @@ -15450,7 +15450,7 @@ * scm/safe-lily.scm (safe-objects): add {begin,end}-of-line-(in)?visible as safe. - + 2005-01-30 Graham Percival * Documentation/user/changing-defaults.itely: fixed example @@ -15491,12 +15491,12 @@ * scm/framework-ps.scm (output-classic-framework): dump a -systems.texi too (output-classic-framework): dump multiple systems on an "infinite" - page EPS including fonts. + page EPS including fonts. * scripts/lilypond-book.py (Lilypond_snippet.ly_is_outdated): use .eps files for both texi and tex formats. Use PNG coming from lilypond. - + 2005-01-28 Graham Percival * Docuemntation/user/invoking.itely: fix info about -o=FILE. @@ -15540,7 +15540,7 @@ 2005-01-27 Han-Wen Nienhuys - * lily/*.cc: Scheme deprecation of SCM_VECTOR_* + * lily/*.cc: Scheme deprecation of SCM_VECTOR_* 2005-01-27 Han-Wen Nienhuys @@ -15629,7 +15629,7 @@ 2005-01-22 Jan Nieuwenhuizen - * scm/output-gnome.scm: + * scm/output-gnome.scm: * scm/output-svg.scm: * scm/lily-library.scm (font-name-style): Update font name kludging for fontconfig use. @@ -15684,7 +15684,7 @@ 2005-01-18 Han-Wen Nienhuys * VERSION: release 2.5.9 - + 2005-01-18 Erlend Aasland * scm/auto-beam.scm: Simplify score-override-auto-beam-setting @@ -15738,7 +15738,7 @@ * python/lilylib.py (make_ps_images): don't do final showpage for multi-page documents. - + * VERSION (MY_PATCH_LEVEL): release 2.5.8 2005-01-16 Graham Percival @@ -15793,7 +15793,7 @@ * lily/include/music.hh (class Music): replace Music::start_mom() by start-callback property - * lily/include/grace-music.hh: remove file. + * lily/include/grace-music.hh: remove file. * lily/stem.cc (height): robustness fix. @@ -15933,7 +15933,7 @@ suffix for main_input_b_. * scm/music-functions.scm (toplevel-music-functions): - precompute music lengths for music expressions. + precompute music lengths for music expressions. 2005-01-11 Nicolas Sceaux @@ -15946,14 +15946,14 @@ (set_location): method used by bison to propagate input locations (YYLLOC_DEFAULT). (end_line_number, end_column_number, step_forward): new methods - + * lily/input-scheme.cc (ly:input-both-locations): new function, similar to ly:input-location, but also return the end line and column. - * lily/include/includable-lexer.hh: - * lily/includable-lexer.cc: - * lily/include/lily-lexer.hh (class Lily_lexer): + * lily/include/includable-lexer.hh: + * lily/includable-lexer.cc: + * lily/include/lily-lexer.hh (class Lily_lexer): * lily/lily-lexer.cc (add_lexed_char): Move add_lexed_char from Includable_lexer to Lily_lexer, in order to update lexloc (the yylloc), a new slot of Lily_lexer. @@ -15965,7 +15965,7 @@ forward in order to skip the sharp sign before parsing the scheme expression) - * lily/include/lily-parser.hh (class Lily_parser): + * lily/include/lily-parser.hh (class Lily_parser): * lily/lily-parser.cc: Remove push_spot(), pop_spot() and here_input() (parser_error): overload for more precise locations of errors. @@ -16075,7 +16075,7 @@ 2005-01-08 Jan Nieuwenhuizen - * scm/output-svg.scm: + * scm/output-svg.scm: * scm/output-gnome.scm: s/bigcheese/emmentaler. * lily/score-engraver.cc (MUSIC_FONT): Use emmentaler20. @@ -16098,7 +16098,7 @@ * lily/pango-select-scheme.cc (LY_DEFINE): new file. - * lily/general-scheme.cc: new file. + * lily/general-scheme.cc: new file. * lily/font-select.cc (get_font_by_design_size): retrieve PangoFont for (designsize . "pango-descr") entries. @@ -16145,7 +16145,7 @@ * Documentation/user/notation.itely (Setting simple songs): Correct several errors in the equivalent formulation of - \addlyrics. + \addlyrics. (The Lyrics context): Corrected link to the SATB example. 2005-01-05 Han-Wen Nienhuys @@ -16154,7 +16154,7 @@ (postprocess-output): new function * lily/paper-book.cc (classic_output): change calling - convention. Give basename as first argument. + convention. Give basename as first argument. remove Paper_book::post_processing(). * lily/lily-guile.cc (LY_DEFINE): ly:output-backend, new function. @@ -16183,7 +16183,7 @@ CVS source installations (but break other non-default but correct PKG_CONFIG_PATH setups), as this is no longer developer-only. - * SConstruct: + * SConstruct: * ps/GNUmakefile (INSTALLATION_FILES): teTeX-3.0 compatibility (backportme). @@ -16293,11 +16293,11 @@ 2005-01-01 Han-Wen Nienhuys * VERSION: 2.5.6 released. - + * ps/lilyponddefs.ps: put mm -> pt scaling in here. * input/regression/new-markup-scheme.ly: oops. font-family=music - -> font-encoding fetaMusic. + -> font-encoding fetaMusic. * lily/main.cc: put default to PS. @@ -16323,7 +16323,7 @@ * lily/lexer.ll: remove encoding * scm/framework-ps.scm (output-variables): separately scale the - page to mm + page to mm * lily/pango-font.cc (Pango_font): fix scaling. @@ -16333,7 +16333,7 @@ 2004-12-31 Han-Wen Nienhuys * mf/GNUmakefile ($(outdir)/%.otf-table): use findstring. Fixes - brace generation. + brace generation. * lily/text-metrics.cc (LY_DEFINE): use scm_c_make_hash_table(). @@ -16397,14 +16397,14 @@ * scm/framework-texstr.scm (header): dump in new format. * tex/lilypond-tex-metrics: new file. - + 2004-12-27 Jan Nieuwenhuizen * lily/pango-font.cc (text_stencil): Quick try at glyph->charcode mapping. (index_to_charcode): New method. - * scm/output-ps.scm (glyph-string): + * scm/output-ps.scm (glyph-string): * scm/output-gnome.scm (glyph-string): Add FONT parameter. 2004-12-26 Jan Nieuwenhuizen @@ -16424,17 +16424,17 @@ 2004-12-25 Han-Wen Nienhuys * VERSION: release 2.5.5 - + * lily/main.cc: use TeX as default output format. * flower/file-path.cc (find): try to open directly as well, so we - find absolute path files. + find absolute path files. * lily/pango-select.cc: new file. - * scm/framework-ps.scm: remove all encoding code. + * scm/framework-ps.scm: remove all encoding code. load pfb/pfa for PangoFont too. - + * lily/lily-guile.cc (ly_chain_assoc_get): new function. 2004-12-22 Werner Lemberg @@ -16570,7 +16570,7 @@ * VERSION (PACKAGE_NAME): release 2.5.4 - * scm/framework-texstr.scm (output-framework): new file. + * scm/framework-texstr.scm (output-framework): new file. * scm/output-texstr.scm: new file. Collect (TEXT . ) calls for TeX processing. @@ -16599,7 +16599,7 @@ (dump-fonts): New function. (output-framework): Use it. - * mf/GNUmakefile: + * mf/GNUmakefile: * buildscripts/gen-bigcheese-scripts.py: Also generate SVG font. 2004-12-18 Han-Wen Nienhuys @@ -16608,7 +16608,7 @@ 2004-12-17 Jan Nieuwenhuizen - * GNUmakefile.in: + * GNUmakefile.in: * SConstruct (symlink): Replace afm by otf. * scm/framework-gnome.scm (gnome-main): Remove invocation of @@ -16631,7 +16631,7 @@ 2004-12-17 Han-Wen Nienhuys - * lily/main.cc (setup_paths): replace afm by otf for path. + * lily/main.cc (setup_paths): replace afm by otf for path. * lily/pangofc-afm-decoder.cc: remove. @@ -16684,7 +16684,7 @@ * lily/include/virtual-font-metric.hh (Module): remove file * lily/virtual-font-metric.cc (Module): remove file. - + * lily/open-type-font.cc (LY_DEFINE): ly:otf-font-glyph-info (get_indexed_char): read bbox from lily table if present. @@ -16724,7 +16724,7 @@ * Documentation/topdocs/INSTALL.texi (Top): Point to buildscripts/out/clean-fonts instead of - buildscripts/clean-fonts.sh. + buildscripts/clean-fonts.sh. 2004-12-13 Graham Percival @@ -16737,7 +16737,7 @@ 2004-12-13 Han-Wen Nienhuys - * buildscripts/gen-bigcheese-scripts.py (i): load .subfonts table. + * buildscripts/gen-bigcheese-scripts.py (i): load .subfonts table. * lily/open-type-font.cc (LY_DEFINE): new function ly:font-sub-fonts @@ -16747,7 +16747,7 @@ * lily/vaticana-ligature-engraver.cc (transform_heads): replace . with - in add.stem. - + 2004-12-13 Jan Nieuwenhuizen * scm/encoding.scm (coding-alist): Fix encodings for fetaNumber @@ -16775,7 +16775,7 @@ * lily/open-type-font.cc (load_scheme_table): new function - * lily/dots.cc (print): replace - + * lily/dots.cc (print): replace - * lily/open-type-font.cc (attachment_point): new function. (load_table): read LILC table @@ -16984,7 +16984,7 @@ 2004-12-02 Han-Wen Nienhuys * VERSION: release 2.5.3 - + 2004-11-29 Arno Waschk * mf/feta-schrift.mf: added <>-like articulation mark as "espressivo" @@ -17008,15 +17008,15 @@ before are also flattened, ie \line must be explicitely used. * Documentation/user/changing-defaults.itely: - * Documentation/user/notation.itely: - * input/wilhelmus.ly: - * input/regression/instrument-name-markup.ly: - * input/regression/markup-score.ly: - * input/regression/new-markup-scheme.ly: - * input/regression/new-markup-syntax.ly: + * Documentation/user/notation.itely: + * input/wilhelmus.ly: + * input/regression/instrument-name-markup.ly: + * input/regression/markup-score.ly: + * input/regression/new-markup-scheme.ly: + * input/regression/new-markup-syntax.ly: * input/test/coriolan-margin.ly: use \line in markups where appropriate - + 2004-11-28 Nicolas Sceaux * scm/new-markup.scm (map-markup-command-list): helper function @@ -17027,23 +17027,23 @@ * lily/lexer.ll: remove < > from markup lexer mode. - * scripts/convert-ly.py (conv): add rule for converting + * scripts/convert-ly.py (conv): add rule for converting \markup < > to \markup { } - * ly/titling-init.ly: - * input/test/coriolan-margin.ly: - * input/regression/new-markup-syntax.ly: - * input/regression/new-markup-scheme.ly: - * input/regression/multi-measure-rest-text.ly: - * input/regression/markup-stack.ly: - * input/regression/markup-score.ly: - * input/regression/instrument-name-markup.ly: - * input/mutopia/W.A.Mozart/mozart-hrn-3.ly: - * input/mutopia/R.Schumann/romanze-op28-2.ly: - * input/mutopia/J.S.Bach/wtk1-fugue2.ly: - * input/wilhelmus.ly: - * Documentation/user/notation.itely: - * Documentation/user/music-glossary.tely: + * ly/titling-init.ly: + * input/test/coriolan-margin.ly: + * input/regression/new-markup-syntax.ly: + * input/regression/new-markup-scheme.ly: + * input/regression/multi-measure-rest-text.ly: + * input/regression/markup-stack.ly: + * input/regression/markup-score.ly: + * input/regression/instrument-name-markup.ly: + * input/mutopia/W.A.Mozart/mozart-hrn-3.ly: + * input/mutopia/R.Schumann/romanze-op28-2.ly: + * input/mutopia/J.S.Bach/wtk1-fugue2.ly: + * input/wilhelmus.ly: + * Documentation/user/notation.itely: + * Documentation/user/music-glossary.tely: * Documentation/user/changing-defaults.itely: change < > to { } in markups @@ -17057,9 +17057,9 @@ * scm/define-grob-properties.scm (all-user-grob-properties): fixed typo s/ly:dimension ?/ly:dimension?/ - * input/regression/lily-in-scheme.ly: - * input/regression/music-function.ly: - * ly/spanners-init.ly (assertBeamSlope): + * input/regression/lily-in-scheme.ly: + * input/regression/music-function.ly: + * ly/spanners-init.ly (assertBeamSlope): * scm/music-functions.scm (def-grace-function): add the paper argument to music function definitions. @@ -17100,10 +17100,10 @@ * scm/define-markup-commands.scm (note-by-number): add "s" to "noteheads-" glyphname. - + * lily/parser.yy (Generic_prefix_music): supply parser argument to music function as well. - + 2004-11-26 Han-Wen Nienhuys * VERSION: release 2.5.2 @@ -17115,7 +17115,7 @@ penalty_ based on breakBefore setting * lily/context-specced-music-iterator.cc (construct_children): - interpret special context id $uniqueContextId + interpret special context id $uniqueContextId * lily/context.cc (create_unique_context): new method. Move creation of unique (\new) contexts into interpreting phase. This @@ -17125,7 +17125,7 @@ << \foo \foo >> produce 2 staves. - + * scm/define-music-properties.scm (all-music-properties): add quoted-voice-direction @@ -17133,7 +17133,7 @@ * ly/music-functions-init.ly: killCues function. * scm/music-functions.scm (cue-substitute): move creation of voice - contexts further to the back. + contexts further to the back. 2004-11-25 Werner Lemberg @@ -17148,10 +17148,10 @@ * lily/lexer.ll: add < > to markup lexer mode (backportme) - * scripts/abc2ly.py (dump_slyrics): add ord(). + * scripts/abc2ly.py (dump_slyrics): add ord(). * lily/note-heads-engraver.cc (process_music): add shapeNoteStyles - to regular engraver. + to regular engraver. 2004-11-22 Han-Wen Nienhuys @@ -17196,7 +17196,7 @@ 2004-11-21 Han-Wen Nienhuys - * lily/grob.cc (Grob): idem. Plugs mem leaks. + * lily/grob.cc (Grob): idem. Plugs mem leaks. * lily/context.cc (Context): unprotect key from ctor. @@ -17212,7 +17212,7 @@ * lily/ly-module.cc (LY_DEFINE): rename ly:import-module to ly:module-copy - + * scm/page-layout.scm (marked-up-headfoot): remove old functions. * scm/titling.scm: remove old titling functions @@ -17230,7 +17230,7 @@ (fromproperty): new markup command. Read markup from props argument. * scm/titling.scm (marked-up-title): create title via - user-specified markup. + user-specified markup. * scm/define-markup-commands.scm (column): remove empty stencils from column. @@ -17242,7 +17242,7 @@ 2004-11-21 Jan Nieuwenhuizen - * scm/encoding.scm (coding-alist): + * scm/encoding.scm (coding-alist): * scm/font.scm (add-ec-fonts): * ly/paper-defaults.ly: Use actual name for EC fontencoding: Extended-TeX-Font-Encoding---Latin. @@ -17254,8 +17254,8 @@ block. * lily/font-select.cc (select_encoded_font) - (get_font_by_mag_step, get_font_by_design_size): - * lily/modified-font-metric.cc (Modified_font_metric): + (get_font_by_mag_step, get_font_by_design_size): + * lily/modified-font-metric.cc (Modified_font_metric): * lily/paper-def.cc (find_scaled_font): Add font_encoding parameter. * scm/encoding.scm (coding-alist): Add fetaDynamic. @@ -17295,7 +17295,7 @@ * scripts/convert-ly.py (conv): add warning about set-global-staff-size. - * Doxyfile: add. + * Doxyfile: add. * scripts/convert-ly.py (conv): add raggedlastbottom rule (conv): warn for TextSpanner split. @@ -17311,7 +17311,7 @@ 2004-11-18 Jan Nieuwenhuizen * Debian lmodern support. Note that LilyPond will issue warnings - + no such encoding: "FontSpecific" The font selection mechanism wants to get the encoding from the @@ -17319,7 +17319,7 @@ different encodings, ie, Lily should get the encoding from the font tree, rather than the font itself. This would require some more work. - + * configure.in: Test for and accept lmodern if EC fonts not found. * scm/framework-tex.scm (font-load-command): TeX font name @@ -17337,7 +17337,7 @@ * lily/kpath.cc (ly_kpathsea_find_file): Rename. Do not use path for absolute file name, that is silly. - * lily/score-engraver.cc (initialize): + * lily/score-engraver.cc (initialize): * Documentation/user/GNUmakefile (local-install-info): Invoke install-info --remove first. @@ -17378,7 +17378,7 @@ * scm/lily-library.scm (char->unicode-index): New function. - * scm/output-gnome.scm: + * scm/output-gnome.scm: * scm/output-svg.scm: Cleanup. Map custom fonts to PUA. * Proper naming of file name throughout; s/filename/file[-_]name/. @@ -17435,7 +17435,7 @@ * lily/system.cc (apply_tweaks): new function. Run tweaks on all grobs that have tweaks specced. - + 2004-11-14 Heikki Junes * Documentation/user/sound-output.itexi: add code snippets for MIDI. @@ -17488,9 +17488,9 @@ * lily/object-key-dumper.cc (Object_key_dumper): idem. Provide SCM bindings. - * lily/include/object-key-dumper.hh (class Object_key_dumper): + * lily/include/object-key-dumper.hh (class Object_key_dumper): new file. Serialize object keys. - + * lily/object-key.cc (dump): new function. (as_scheme): new virtual function (undump): new function @@ -17509,7 +17509,7 @@ * lily/context.cc (Context): take key argument in ctor. (create_context): new function - * lily/grob.cc (Grob): take key argument in ctor. + * lily/grob.cc (Grob): take key argument in ctor. * lily/lilypond-key.cc (do_compare): new file. @@ -17535,7 +17535,7 @@ cmdline, use xargs instead (backportme) 2004-11-10 Andreas Scherer - + * Documentation/user/: Numerous fixes in the user manual. 2004-11-13 Han-Wen Nienhuys @@ -17545,7 +17545,7 @@ addlyrics-second-staff.ly * VERSION: 2.5.0 released. - + 2004-11-12 Jan Nieuwenhuizen * Documentation/index.html.in: Fix url to one big page. (backportme) @@ -17583,7 +17583,7 @@ * scm/define-context-properties.scm (all-internal-translation-properties): Add tweakRank and tweakCount. - * lily/grob.cc: + * lily/grob.cc: * scm/define-grob-properties.scm (all-internal-grob-properties): Add tweak-rank and tweak-count. @@ -17640,14 +17640,14 @@ * lily/slur.cc: add 'positions to interface - * lily/main.cc: reinstate PS as standard output format. + * lily/main.cc: reinstate PS as standard output format. * scm/framework-tex.scm (output-preview-framework): print systems up to first non title system. * lily/grace-engraver.cc (start_translation_timestep): split scm_cadddr - + 2004-11-07 Han-Wen Nienhuys * lily/quote-iterator.cc (Module): remove old quote-iterator @@ -17677,7 +17677,7 @@ * scm/music-functions.scm (add-grace-property): use list iso. vector for graceSettings - remove set-{start,stop}-grace-properties. + remove set-{start,stop}-grace-properties. * lily/new-quote-iterator.cc (construct_children): set quote_outlet_ if no quoted-context-{id,type} specified. @@ -17687,7 +17687,7 @@ * lily/parser.yy (command_element): remove \quote. * ly/music-functions-init.ly (location): add quoteDuring music - function. + function. * lily/lexer.ll: allow \encoding in lyrics as well. Remove optional semicolon. (backportme) @@ -17703,7 +17703,7 @@ quoted-context-type, quoted-context-id. * scm/lily.scm (type-check-list): new function. - + * scm/lily-library.scm: new file. Generic library routines. * lily/parser.yy (Generic_prefix_music): move typechecking out of @@ -17796,7 +17796,7 @@ stemlet-length * lily/stem.cc: store rests as well. - + * input/regression/new-slur.ly: mention forcing. 2004-11-04 Werner Lemberg diff --git a/Documentation/misc/ChangeLog-2.3 b/Documentation/misc/ChangeLog-2.3 index 31277740b0..b98aa285b4 100644 --- a/Documentation/misc/ChangeLog-2.3 +++ b/Documentation/misc/ChangeLog-2.3 @@ -21,7 +21,7 @@ downslur/downstem. * lily/quote-iterator.cc (process): use <= for comparisons. Fixes - quote problem if for last note of quoted sequence. + quote problem if for last note of quoted sequence. * input/regression/part-combine-text.ly (comm): add expect strings. @@ -49,15 +49,15 @@ * input/regression/accidentals.ly (Module): remove from regtest. - * lily/parser.yy (Prefix_composite_music): + * lily/parser.yy (Prefix_composite_music): oops. Chords should be unrelativable, not bass figures untransposable. * VERSION: 2.3.26 released. - + * lily/completion-note-heads-engraver.cc (try_music): only return - something when is_first_ is true. Fixes lyrics with completion_heads. + something when is_first_ is true. Fixes lyrics with completion_heads. - * make/lilypond-vars.make: add scripts/out/ to PATH, to find ps2png. + * make/lilypond-vars.make: add scripts/out/ to PATH, to find ps2png. * scm/lily.scm (ly:system): new function. Catches uninstalled ps2png. @@ -84,7 +84,7 @@ extent, since the stencil is translated later on. * lily/ledger-line-spanner.cc (print): swap linear_combination - arguments, effectively shortens ledger line. + arguments, effectively shortens ledger line. * Documentation/user/GNUmakefile ($(outdir)/lilypond/lilypond.html): use find to remove files. @@ -99,10 +99,10 @@ 2004-10-29 Han-Wen Nienhuys * Documentation/user/notation.itely (Automatic note splitting): - note about lyrics. + note about lyrics. * Documentation/user/converters.itely (Invoking convert-ly): note - about version numbers. + about version numbers. * scripts/abc2ly.py (dump_score): revise lyric dumping @@ -154,7 +154,7 @@ (classic_lilypond_book_compatibility): Take key/value pair as parameter. Return key/value pair. - (compose_ly): Rewritten, taking the snippet type as third parameter. + (compose_ly): Rewritten, taking the snippet type as third parameter. The default values are now set more sensible, and a `linewidth' option is no longer overwritten under some circumstances. @@ -197,7 +197,7 @@ 2004-10-25 Han-Wen Nienhuys * VERSION: 2.3.24 - + * scm/define-context-properties.scm (all-user-translation-properties): add verticallySpacedContexts. @@ -225,10 +225,10 @@ 2004-10-24 Han-Wen Nienhuys * input/mutopia/F.Schubert/morgenlied.ly (pianoLH): tune - minimumVerticalExtent tweaks. - + minimumVerticalExtent tweaks. + * mf/feta-schrift.mf: include size of thumb appendix in - bbox. Fixes: c-thumb-notehead.ly + bbox. Fixes: c-thumb-notehead.ly * THANKS: add Meisters to the Development team. @@ -243,7 +243,7 @@ * stepmake/stepmake/texinfo-vars.make (MAKEINFO): add --enable-encoding - * Documentation/user/lilypond.tely: add -*- coding: latin-1 -*- everywhere. + * Documentation/user/lilypond.tely: add -*- coding: latin-1 -*- everywhere. * Documentation/user/changing-defaults.itely (Text encoding): change to latin1. @@ -275,7 +275,7 @@ * Documentation/user/tutorial.itely (A lead sheet): use \chords for tutoring chord names. - + * Documentation/user/lilypond.tely: remove @authors. 2004-10-23 Werner Lemberg @@ -379,7 +379,7 @@ * elisp/lilypond-init.el (auto-mode-alist): Add .ily to auto-mode-alist. - * input/test/engraver-example.ily: + * input/test/engraver-example.ily: * input/regression/allfontstyle.ily: Rename, update users. 2004-10-16 Graham Percival @@ -480,7 +480,7 @@ * VERSION (MY_PATCH_LEVEL): release 2.3.22 * scm/part-combiner.scm (determine-split-list): reinstate - playing+resting case. + playing+resting case. * Documentation/user/invoking.itely (Reporting bugs): rename. @@ -491,7 +491,7 @@ * lily/phrasing-slur-engraver.cc (acknowledge_grob): do something with normal slurs too. - + * lily/slur-scoring.cc (move_away_from_staffline): new function. (get_base_attachments): move away attachment point for breaks similar to attachment points on slurs (staffline collision, and @@ -501,10 +501,10 @@ force twice. * lily/simple-spacer.cc (LY_DEFINE): if line too long in ragged - mode, return #f. + mode, return #f. * scm/page-layout.scm (ly:optimal-page-breaks): set force = 0.0 - for last page if raggedlast. + for last page if raggedlast. * lily/parser.yy (Prefix_composite_music): untransposable is for FiguredBass, not ChordNames @@ -528,7 +528,7 @@ function. Define dimension-variables explicitly in \paper too. This allows overriding linewidth inside \score { \paper { } } blocks - + * scm/framework-tex.scm (convert-to-ps): invoke dvips with -t landscape. (header): add landscape and papersize options. @@ -542,7 +542,7 @@ * scm/titling.scm (default-score-title): remove caps for piece. * VERSION: 2.3.21 released. - + * lily/include/slur-scoring.hh (struct Slur_score_state): new file * lily/include/slur-configuration.hh (class Slur_configuration): @@ -554,7 +554,7 @@ * lily/slur-scoring.cc (Slur_score_state): change static functions to methods of Slur_score_state. - * lily/bezier-bow.cc (Message): + * lily/bezier-bow.cc (Message): * flower/include/interval-set.hh (Message): new file. @@ -591,7 +591,7 @@ 2004-10-05 Han-Wen Nienhuys * scm/framework-tex.scm (convert-to-dvi): set extra_mem_top to 1M. - + 2004-10-04 Han-Wen Nienhuys * lily/slur-scoring.cc (struct Slur_score_state): add @@ -620,7 +620,7 @@ * lily/lyric-extender.cc (print): don't take common refpoint of null object if right_text isn't there. - + * lily/slur-scoring.cc (struct Slur_score_state): new struct. Collect scoring function arguments. (struct Slur_score_state): add musical_dy_ @@ -642,13 +642,13 @@ measure-length. This fixes spacing-whole-rest.ly * VERSION (PACKAGE_NAME): release 2.3.20 - + * input/regression/quote-transposition.ly: update example * scm/define-music-properties.scm (all-music-properties): change meaning of instrumentTransposition. It is now the pitch played that sounds as middle C. This means that instrumentTransposition - can be \transposed. + can be \transposed. Fixes: transpose-quote.ly * lily/parser.yy (command_element): reverse setting of @@ -662,7 +662,7 @@ * lily/music.cc (transpose): fold Event::transpose() in. - * lily/event.cc: remove Transpose. + * lily/event.cc: remove Transpose. * lily/recording-group-engraver.cc: cleanup. @@ -671,7 +671,7 @@ * make/lilypond.fedora.spec.in: rename file. * lily/lily-lexer.cc (mark_smob): don't use ly_cdr() for getting - to-be-marked objects. Use SCM_CELL_WORD_1 instead. + to-be-marked objects. Use SCM_CELL_WORD_1 instead. * Documentation/user/changing-defaults.itely (Changing context properties on the fly): typo. @@ -719,7 +719,7 @@ * lily/slur.cc (outside_slur_callback): epsilon-delta management for slur edges. Fixes: progerror-no-bezier-intersection.ly - + * scm/framework-tex.scm (dump-page): put stencil height in dumped page. @@ -748,7 +748,7 @@ 2004-09-27 Jan Nieuwenhuizen - * stepmake/stepmake/texinfo-rules.make: + * stepmake/stepmake/texinfo-rules.make: * Documentation/GNUmakefile: --srcdir build fixes. * input/test/coriolan-margin.ly: Put papersize settings in \bookpaper. @@ -849,7 +849,7 @@ next property. * lily/lyric-engraver.cc: remove get_current_rest(). - + 2004-09-23 Jan Nieuwenhuizen * input/regression/lyric-extender.ly: Fix and add test. @@ -903,7 +903,7 @@ start to note-column. * lily/hairpin.cc (print): check text-interface, to attach to - dynamic texts. + dynamic texts. * lily/include/text-item.hh (class Text_interface): rename Text_item -> Text_interface @@ -927,9 +927,9 @@ * lily/beam-concave.cc (calc_concaveness): take absolute value of dy for scaling. This fixes various downbeams. - - * lily/beam-quanting.cc (best_quant_score_idx): + + * lily/beam-quanting.cc (best_quant_score_idx): 2004-09-22 Jan Nieuwenhuizen @@ -992,9 +992,9 @@ * input/test/mensural-ligatures.ly (voice): move linethickness settings to bookpaper. - * lily/simple-spacer.cc (Module): use force to stretch to + * lily/simple-spacer.cc (Module): use force to stretch to line length as force measure for ragged spacing. - + * lily/lily-parser.cc (get_paper): don't set parent for \paper blocks in the parser. This eliminates ordering dependency for \bookpaper and \paper @@ -1004,10 +1004,10 @@ * lily/includable-lexer.cc (new_input): elucidate message. * VERSION: 2.3.18 released. - + 2004-09-19 Jan Nieuwenhuizen - * input/mutopia/E.Satie/petite-ouverture-a-danser.ly: + * input/mutopia/E.Satie/petite-ouverture-a-danser.ly: * input/mutopia/R.Schumann/romanze-op28-2.ly: * input/mutopia/F.Schubert/standchen.ly: Remove obsolete #'Slur.attachment setting. @@ -1021,7 +1021,7 @@ * scm/page-layout.scm (ly:optimal-page-breaks): use non-ragged layout to determine force. - + 2004-09-18 Werner Lemberg * ly/engraver-init.ly [quotedEventTypes]: Add tuplets and @@ -1043,7 +1043,7 @@ slur touching. * lily/parser.yy (direction_less_char): soft code \< \> \! \( \) ( - ) + ) * input/regression/tie.ly (texidoc): cleanup. @@ -1051,7 +1051,7 @@ and ~ * lily/slur-scoring.cc (score_extra_encompass): check if extra - objects are on boundary column. + objects are on boundary column. * lily/main.cc (parse_argv): process --tex too. @@ -1175,7 +1175,7 @@ * scripts/convert-ly.py (conv): change Both to Neutral in property settings. - * ly/engraver-init.ly: increase extent of Staff. + * ly/engraver-init.ly: increase extent of Staff. 2004-09-13 Graham Percival @@ -1207,7 +1207,7 @@ document them. * scm/page-layout.scm (ly:optimal-page-breaks): use new parameters - to get sane spaces for titles. + to get sane spaces for titles. * ly/book-paper-defaults.ly: new parameters aftertitlespace, beforetitlespace, betweentitlespace. @@ -1225,7 +1225,7 @@ * input/tutorial/brahms*.ly: remove. * input/*: update all .ly files. - + * ly/a4-init.ly (vsize): remove papersize init files. * scripts/convert-ly.py (conv): add conversion. @@ -1240,7 +1240,7 @@ * scm/page-layout.scm (ly:optimal-page-breaks): add betweensystempadding also to fixed distance for the spring. - + * scm/define-grobs.scm (all-grob-descriptions): fix order of key-cancellation. @@ -1252,7 +1252,7 @@ measures how concave beams are that are not caught by 1. This fixes: morgenlied.ly and input/regression/beam-concave.ly - + * lily/new-fingering-engraver.cc (stop_translation_timestep): new property: add-stem-support @@ -1308,7 +1308,7 @@ that voice-2 plays solo, and voice-1 has an mmrest that starts earlier. In that case, we switch to voice-2, so we catch the mmrest of voice-2. This fixes: partcombine-rest.ly. - + 2004-09-10 Han-Wen Nienhuys * scm/define-grob-properties.scm (all-internal-grob-properties): @@ -1323,7 +1323,7 @@ * Documentation/user/notation.itely: small fixes to docs. 2004-09-10 Han-Wen Nienhuys - + * VERSION (PACKAGE_NAME): release 2.3.15 * make/lilypond.redhat.spec.in (Requires): bump requirement for @@ -1360,9 +1360,9 @@ * Documentation/user/changing-defaults.itely (Paper size): doc landscape - - * scm/framework-ps.scm (eps-header): bugfixes. + + * scm/framework-ps.scm (eps-header): bugfixes. * scm/titling.scm (default-score-title): remove opus from the \score title. @@ -1422,7 +1422,7 @@ 2004-09-06 Han-Wen Nienhuys * scm/define-grobs.scm (all-grob-descriptions): unset - threshold. This fixes morgenlied. + threshold. This fixes morgenlied. * scm/page-layout.scm (ly:optimal-page-breaks): whoops. Thinko in rod calculation. @@ -1479,11 +1479,11 @@ * lily/simple-spacer.cc (LY_DEFINE): return something sensible for 0 springs - * lily/system.cc (post_processing): + * lily/system.cc (post_processing): * scm/page-layout.scm (ly:optimal-page-breaks): implement uniform density for vertical spacing by means of force penalty. - + * scm/paper.scm (paper-set-staff-size): add betweensystemspace as dimension-variables @@ -1582,15 +1582,15 @@ * input/regression/slur-extreme.ly: new file. * ly/engraver-init.ly (Score): set bassStaffProperties to \clef - bass. Obviates \clef bass in the bass staff, when using \autochange + bass. Obviates \clef bass in the bass staff, when using \autochange * lily/auto-change-iterator.cc (construct_children): instantiate up/down Staff, create Voice on up staff initially. Obviates - explicit instantiation of up/down contexts for \autochange. + explicit instantiation of up/down contexts for \autochange. * lily/slur-quanting.cc (get_bezier): new functionality, blow up slur depending on extents of note heads. - + 2004-08-28 Graham Percival * Documentation/user/tutorial.itely: minor editing. @@ -1617,7 +1617,7 @@ * Documentation/user/point-and-click.texi (Point and click): new file. put point & click in appendix. - + * Documentation/user/changing-defaults.itely (Vertical spacing): corrections @@ -1675,16 +1675,16 @@ * input/regression/phrasing-slur-slur-avoid.ly: new file. * lily/ottava-bracket.cc (print): always start from right edge of - a broken bound. This fixes ottava-clef.ps + a broken bound. This fixes ottava-clef.ps 2004-08-24 Han-Wen Nienhuys * input/regression/slur-script-inside.ly: new file. * lily/new-slur.cc (outside_slur_callback): new function, to make - scripts avoid slurs + scripts avoid slurs - * lily/slur-engraver.cc (finalize): + * lily/slur-engraver.cc (finalize): * lily/script-interface.cc: add inside-slur property. @@ -1708,11 +1708,11 @@ * lily/slur-quanting.cc (score_extra_encompass): make score depend on distance. This fixes slur-tenuto.ly and slur-tie.ly - + * flower/include/interval.hh (T>): add distance() function * lily/ottava-bracket.cc (print): add dots to extent. Fixes - octaviation-dot.ly + octaviation-dot.ly * lily/context-scheme.cc: ly_context_grob_definition: new function. @@ -1722,7 +1722,7 @@ 2004-08-22 Han-Wen Nienhuys - * input/regression/slur-double.ly: new file. + * input/regression/slur-double.ly: new file. * lily/slur-engraver.cc: add doubleSlurs property @@ -1763,19 +1763,19 @@ 2004-08-22 Han-Wen Nienhuys * lily/slur-engraver.cc (class Slur_engraver): simplify: remove - nested slurs. + nested slurs. * scripts/convert-ly.py (lilypond_version_re_str): handle \version "bar" % "foo" * lily/completion-note-heads-engraver.cc (process_music): set duration-log before announcing object. - + * lily/staff-symbol.cc (print): subtract thickness from staff line length * lily/parser.yy (book_body): disallow { ..music.. } inside \book - + 2004-08-21 Carl Sorensen * scm/stencil.scm: remove fontify-text and fontify-text-white @@ -1801,7 +1801,7 @@ 2004-08-19 Carl Sorensen - * scm/fret-diagrams.scm: Eliminate use of fontify-text; make + * scm/fret-diagrams.scm: Eliminate use of fontify-text; make font calls for diagrams based on paper and props 2004-08-19 Graham Percival @@ -1827,8 +1827,8 @@ 2004-08-18 Nicolas Sceaux - * scm/framework-tex.scm (output-preview-framework) - (output-classic-framework): + * scm/framework-tex.scm (output-preview-framework) + (output-classic-framework): * scm/framework-ps.scm (output-preview-framework): s/ly:paper-book-lines/ly:paper-book-systems/g @@ -1872,7 +1872,7 @@ * scm/define-markup-commands.scm (box): add box-padding and thickness props for the box command. - + * Documentation/user/changing-defaults.itely (Text encoding): elucidate use of \encoding for \header strings. @@ -1977,7 +1977,7 @@ 2004-08-08 Carl Sorensen - * scm/fret-diagrams.scm : change sans-serif font encoding from + * scm/fret-diagrams.scm : change sans-serif font encoding from TeX-text to ec (uses ecss fonts instead of cmss fonts) * scm/define-grob-interfaces.scm (fret-diagram-interface): add @@ -2024,7 +2024,7 @@ * lily/text-spanner.cc (print): only take linear_combination of nonempty interval. - + 2004-08-02 Pedro Kroger @@ -2041,7 +2041,7 @@ * lily/lily-parser.cc (parse_string): don't overwrite keytable_. * lily/slur-quanting.cc (enumerate_attachments): apply center on - stem-X in more cases. + stem-X in more cases. * lily/stem.cc (dim_callback): solve todo. @@ -2064,7 +2064,7 @@ * Documentation/user/GNUmakefile: fix symlinks. * VERSION: 2.3.10 released. - + * input/test/lyrics-skip-notes.ly: remove * input/test/stem-cross-staff.ly (noFlag): fold into manual @@ -2089,10 +2089,10 @@ * input/regression/lyric-hyphen-retain.ly: move to regression. * input/regression/harmonic.ly: fold into manual - + * input/test/{hshift,move-accidentals,crescendi,feathered-beam, stem-length,chord-names-no-inversions}.ly: remove - + * input/test/tie-cross-voice.ly: move to regression. * Documentation/user/notation.itely (Running trills): new node. @@ -2110,7 +2110,7 @@ * input/test/time.ly: remove * input/test/trill.ly: remove - + * input/test/time-signature-double.ly: fold into manual * input/test/separate-staccato.ly: remove @@ -2120,7 +2120,7 @@ * input/test/script-priority.ly: fold into manual. * input/test/scheme-interactions.ly: remove. - + * input/test/unfold-all-repeats.ly (mel), input/test/repeat.ly,input/test/repeat-shorter-bracket.ly, input/test/polymetric-differing-notes.ly input/test/polymetric.ly: @@ -2131,13 +2131,13 @@ * input/regression/markup-score.ly: move from input/test/ * input/test/lyrics-melisma-faster.ly: fold into manual - + * input/test/lyrics-melisma-variants.ly: fold into manual - * Documentation/user/notation.itely (Popular music): new node. + * Documentation/user/notation.itely (Popular music): new node. * input/test/gourlay.ly: remove - + * input/test/improv.ly: fold into manual. * input/test/figured-bass-alternate.ly (fl): remove @@ -2151,7 +2151,7 @@ grob into a child context. * lily/dynamic-engraver.cc (acknowledge_grob): add accidentals to - + 2004-07-31 Han-Wen Nienhuys * scm/define-markup-commands.scm (postscript): new markup command @@ -2194,7 +2194,7 @@ spurious flag not found warning for 128th rest. * input/regression/rest-dot-position.ly: new file. - + * input/test/rest-dot-positions.ly: remove * lily/staff-symbol-referencer.cc (get_position): emergency @@ -2204,7 +2204,7 @@ * scm/define-markup-commands.scm (score): remove debugging code. - * input/test/incipit.ly (violin): remove. + * input/test/incipit.ly (violin): remove. * lily/system-start-delimiter.cc (print): only draw system delimiter to staves that reach up to left bound of the delimiter. @@ -2216,7 +2216,7 @@ * input/no-notation/dynamic-absolute-volume.ly: move from test/. * input/test/drarn*: remove - + * input/test/count-systems.ly: remove. * lily/bar-line.cc (compound_barline): fix : for staff without @@ -2232,7 +2232,7 @@ * input/test/*.ly: clean up directory: move examples into manual or regtest. - + * stepmake/stepmake/metafont-rules.make ($(outdir)/%.log): add mode as well. This fixes resolution errors. @@ -2262,12 +2262,12 @@ 2004-07-30 Mats Bengtsson * Documentation/user/changing-defaults.itely (Horizontal spacing): - Correct the documentation of the spacing parameters. + Correct the documentation of the spacing parameters. - * Documentation/user/tutorial.itely (Integrating text and music), + * Documentation/user/tutorial.itely (Integrating text and music), Documentation/user/lilypond-book.itely (Integrating LaTeX and music): Document that you need to add the map file ec-mftrace.map - in the dvips command. + in the dvips command. 2004-07-30 Han-Wen Nienhuys @@ -2291,7 +2291,7 @@ * lily/modified-font-metric.cc (text_dimension): support coding scheme "" - + 2004-07-28 Han-Wen Nienhuys * lily/tie-engraver.cc (stop_translation_timestep): remember tie @@ -2315,7 +2315,7 @@ 2004-07-27 Heikki Junes * input/regression/{stanza-number,volta-multi-staff}.ly: fix docs. - + 2004-07-26 Han-Wen Nienhuys * lily/include/lily-guile.hh (scm_is_int): compat glue. @@ -2365,7 +2365,7 @@ * scripts/lilypond-latex.py (run_dvips): remove -bin everywhere. - * lily/GNUmakefile (NAME): create lilypond, not lilypond-bin + * lily/GNUmakefile (NAME): create lilypond, not lilypond-bin * scripts/lilypond-latex.py: move from lilypond.py @@ -2388,12 +2388,12 @@ * scm/framework-ps.scm (convert-to-pdf): new function. Call ps2pdf. (output-preview-framework): new function. Generate a preview .ps - + 2004-07-23 Han-Wen Nienhuys * VERSION: release 2.3.8 - + * lily/note-head.cc: remove ledger line handling. * lily/ambitus.cc (print): strip away accidental / note head code, @@ -2402,7 +2402,7 @@ * lily/ambitus-engraver.cc (create_ambitus): change name to AmbitusLine. Create AmbitusAccidental and AmbitusNoteHead for other ambitus parts. - (create_ambitus): group grobs in Ambitus grouping object. + (create_ambitus): group grobs in Ambitus grouping object. * lily/include/pitch-interval.hh (Pitch>): new file. @@ -2434,7 +2434,7 @@ * lily/slur-quanting.cc (score_extra_encompass): add break ; (score_extra_encompass): process scripts at edges too, by checking - control points directly. + control points directly. 2004-07-20 Jan Nieuwenhuizen @@ -2525,11 +2525,11 @@ * input/mutopia/W.A.Mozart/mozart-hrn-3.ly: remove texttagline. - + * lily/new-slur.cc: cleanup, split in functions. * lily/parser.yy (chord_body_element): allow octave-check = inside - chord body. + chord body. * lily/new-slur.cc (score_encompass): variable head-distance penalty. @@ -2540,7 +2540,7 @@ * lily/new-slur.cc (print): use debug-slur-quanting paper var. - * input/regression/font-postscript.ly: invoke afm2tfm. + * input/regression/font-postscript.ly: invoke afm2tfm. 2004-07-18 Jan Nieuwenhuizen @@ -2573,7 +2573,7 @@ * scripts/lilypond-book.py (compose_ly): make fragment mandatory for fragment snippets. This fixes inclusion of toplevel-music examples (such as new-slur.ly) - + 2004-07-16 Jan Nieuwenhuizen * scripts/lilypond-book.py: Remove second import of stat. @@ -2593,7 +2593,7 @@ * buildscripts/bib2html.py (stat): fail if bibtex fails. - * make/stepmake.make: use usescons for using scons. + * make/stepmake.make: use usescons for using scons. 2004-07-16 Jan Nieuwenhuizen @@ -2603,9 +2603,9 @@ 2004-07-16 Han-Wen Nienhuys * make/mutopia-vars.make ($(addprefix $(outdir)/,$(LYM4_FILES): - bypass dvi. + bypass dvi. - * input/regression/font-postscript.ly: new file. + * input/regression/font-postscript.ly: new file. * scm/framework-ps.scm (load-fonts): load pfb files too. @@ -2644,9 +2644,9 @@ * SConstruct: Further development. - * input/test/SConscript: - * input/template/SConscript: - * input/regression/SConscript: + * input/test/SConscript: + * input/template/SConscript: + * input/regression/SConscript: * Documentation/bibliography/SConscript: * Documentation/bibliography/index.html.in: New file. @@ -2655,8 +2655,8 @@ * buildscripts/builder.py: Add new builders. - * make/stepmake.make: - * stepmake/stepmake/*.make: + * make/stepmake.make: + * stepmake/stepmake/*.make: * configure.in: * lily/*: * flower*: Use config.hh (Was config.h). @@ -2667,7 +2667,7 @@ 2004-07-15 Han-Wen Nienhuys * lily/new-slur.cc (score_slopes): strong sloping score only when - stems point in same dir. + stems point in same dir. 2004-07-14 Han-Wen Nienhuys @@ -2694,7 +2694,7 @@ 2004-07-12 Han-Wen Nienhuys - * lily/staff-symbol-referencer.cc (on_staffline): bugfix + * lily/staff-symbol-referencer.cc (on_staffline): bugfix * lily/scm-hash.cc (get): SCM_MAKINUM is deprecated. Use scm_from_int instead. @@ -2722,7 +2722,7 @@ * buildscripts/builder.py: Add LilyPond, Abc2ly and MF builders. - * input/SConscript: + * input/SConscript: * Documentation/user/SConscript: New file. 2004-07-10 Han-Wen Nienhuys @@ -2758,29 +2758,29 @@ * elisp/lilypond-mode.el, * elisp/lilypond-what-beat.el: Added LilyPond-what-beat function to count beats between last measure stop | and point in emacs. - + 2004-07-09 Han-Wen Nienhuys * tex/GNUmakefile (TEX_FILES): don't dist - music-drawing-routines.ps, latin1.enc + music-drawing-routines.ps, latin1.enc * scripts/lilypond.py (include_path): remove --no-lily, --no-ps , --no-pdf, --pdftex (copyright): add --latex option (ic_p.make_include_option): use direct PS as default. - * scm/beam.scm (check-slope-callbacks): check sign of slope. + * scm/beam.scm (check-slope-callbacks): check sign of slope. * input/regression/beam-concave.ly (rossFourBeams): add cases from Ross * scm/script.scm (default-script-alist): marcato should follow into staff - + 2004-07-09 Jan Nieuwenhuizen * buildscripts/builder.py: - + * Documentation/SConscript (outdir): New file. Add *list.ly dependencies. Fixes PDF doc build. @@ -2851,7 +2851,7 @@ * buildscripts/guile-gnome.sh (OPT): only compile pango if not installed. - * tex/latin1.enc: new file, from a2ps. + * tex/latin1.enc: new file, from a2ps. 2004-07-06 Heikki Junes @@ -2935,19 +2935,19 @@ * lily/axis-group-engraver.cc (process_acknowledged_grobs): catch cyclic parents when two axis-group-engravers are - present. Fixes: crash-axis-group-engraver.ly. - + present. Fixes: crash-axis-group-engraver.ly. + * input/test/volta-chord-names.ly: new file. * scm/define-context-properties.scm (all-user-translation-properties): change voltaOnThisStaff - definition. + definition. * lily/volta-engraver.cc (stop_translation_timestep): set bounds if necessary. * lily/volta-bracket.cc (print): handle volta brackets without - bars. + bars. 2004-07-01 Jan Nieuwenhuizen @@ -2973,7 +2973,7 @@ * scm/output-ps.scm: added white-text - * scm/lily.scm (ly:all-stencil-expressions): Added white-text to + * scm/lily.scm (ly:all-stencil-expressions): Added white-text to list of stencil expressions * scm/stencil.scm: Added fontify-text-white @@ -3002,7 +3002,7 @@ 2004-06-24 Han-Wen Nienhuys * VERSION: 2.3.5 released. - + * lily/my-lily-parser.cc (parse_string): switch module too. 2004-06-24 Jan Nieuwenhuizen @@ -3020,7 +3020,7 @@ 2004-06-22 Jan Nieuwenhuizen - * scm/output-gnome.scm: + * scm/output-gnome.scm: * buildscripts/guile-gnome.sh: Update wrt fixed GUILE CVS. * debian/: Apply Debian patch (Anthony Fok). @@ -3062,7 +3062,7 @@ * scm/output-tex.scm (scm): Remove define-origin from exports list. (define-origin): Remove. - * scm/output-gnome.scm (define-origin): + * scm/output-gnome.scm (define-origin): * scm/lily.scm (ly:all-output-backend-commands): Remove define-origin. Add grob-cause. @@ -3116,7 +3116,7 @@ * Documentation/user/programming-interface.itely (Using LilyPond syntax inside Scheme): documentation for #{ ... #} syntax. -2004-06-19 Heikki Junes +2004-06-19 Heikki Junes * Documentation/index.html.in: use black thin


. @@ -3159,7 +3159,7 @@ 2004-06-18 Jan Nieuwenhuizen - * lily/pangofc-afm-decoder.cc (pango_fc_afm_get_glyph) + * lily/pangofc-afm-decoder.cc (pango_fc_afm_get_glyph) (pango_fc_afm_get_charset): Update iaw Pango CVS update. * buildscripts/guile-gnome.sh: Add pango to recipe. Resolve @@ -3167,7 +3167,7 @@ 2004-06-17 Jan Nieuwenhuizen - * lily/lily-guile.cc: + * lily/lily-guile.cc: * lily/pangofc-afm-decoder.cc: * lily/include/pangofc-afm-decoder.hh: Use #if HAVE_* iso #ifdef. Fixes build without Pango CVS. Use "pangofc-afm-decoder.hh". @@ -3186,7 +3186,7 @@ * scm/framework-gnome.scm: Add pango decoders. - * lily/include/pangofc-afm-decoder.hh: + * lily/include/pangofc-afm-decoder.hh: * lily/pangofc-afm-decoder.cc: New file. * lily/lily-guile.cc (ly:pango-add-afm-decoder): New function. @@ -3330,9 +3330,9 @@ * lily/include/paper-book.hh: doc class. - * lily/paper-book.cc (c_ragged_page_breaks): remove functions. + * lily/paper-book.cc (c_ragged_page_breaks): remove functions. - * scm/page-layout.scm (plain-footer): add tagline/copyright. + * scm/page-layout.scm (plain-footer): add tagline/copyright. (plain-header): add instrument-name. (default-page-make-stencil): bugfixes. @@ -3342,7 +3342,7 @@ interactions with Page * scm/page-layout.scm (ly:optimal-page-breaks): move back breaking - here, + here, (default-page-make-stencil): new function (default-page-music-height): new function (page-headfoot): new function @@ -3362,7 +3362,7 @@ 2004-06-13 Han-Wen Nienhuys * input/mutopia/W.A.Mozart/mozart-hrn3-rondo.ly (rondo): - octavation compatibility fixes. Backportme. + octavation compatibility fixes. Backportme. * scm/page-breaking.scm (ly:optimal-page-breaks): allow overfull pages. @@ -3394,7 +3394,7 @@ index entries * scm/page-breaking.scm (ly:optimal-page-breaks): new - file. Rewrite function. + file. Rewrite function. * lily/paper-book.cc (pages): new interface: page-breaking returns list of line-list. @@ -3444,7 +3444,7 @@ * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove override of Beam::position-callbacks. Why would grace beams not be - quantized? Fixes: weird-stem-size-grace. + quantized? Fixes: weird-stem-size-grace. * lily/new-lyric-combine-music-iterator.cc (find_voice): issue warning only once. Backportme. @@ -3488,22 +3488,22 @@ * lily/paper-line.cc (Paper_line): construct from Stencil directly. No futzing with the dimensions. - * lily/include/paper-line.hh (class Paper_line): + * lily/include/paper-line.hh (class Paper_line): * lily/stencil.cc (interpret_stencil_expression): combine-stencil takes arbitrary number of arguments. - * input/test/markup-score.ly (tuning): simplify example. + * input/test/markup-score.ly (tuning): simplify example. 2004-05-31 Han-Wen Nienhuys - * lily/score.cc (LY_DEFINE): ly:score-embedded-format, new function. + * lily/score.cc (LY_DEFINE): ly:score-embedded-format, new function. * scm/define-markup-commands.scm (score): define score-markup * lily/parser.yy (markup): use score-markup. - * lily/score.cc: add ly:score? + * lily/score.cc: add ly:score? 2004-05-30 Carl Sorensen @@ -3578,7 +3578,7 @@ framework-tex.scm * scm/framework-tex.scm (dump-line): new file. High level - interface for output (pages, systems, header). + interface for output (pages, systems, header). * lily/include/page.hh (class Page): add is_last_ field. @@ -3597,7 +3597,7 @@ * lily/main.cc (parse_argv): don't set extension for output. * lily/clef-engraver.cc (create_clef): remove - Staff_symbol_referencer::set_position() call. + Staff_symbol_referencer::set_position() call. 2004-05-30 Nicolas Sceaux @@ -3661,7 +3661,7 @@ 2004-05-27 Han-Wen Nienhuys - * lily/include/book-paper-def.hh: derive from Output_def + * lily/include/book-paper-def.hh: derive from Output_def * lily/include/paper-def.hh: move all functionality out of class. Junk header. @@ -3669,7 +3669,7 @@ * lily/include/music-output-def.hh: rename Music_output_def to Output_def. - * input/wilhelmus.ly: only set space for Paper formatting. + * input/wilhelmus.ly: only set space for Paper formatting. * lily/include/midi-def.hh: remove file, remove class. Move functions to Music-output-def. @@ -3680,7 +3680,7 @@ \context { \Staff - .. + .. } @@ -3704,7 +3704,7 @@ * lily/parser.yy (book_body): set default bookpaper. - * scm/output-tex.scm (header): kludge: hard code linewidth. + * scm/output-tex.scm (header): kludge: hard code linewidth. * lily/my-lily-parser.cc (My_lily_parser): don't delete lexer. @@ -3762,7 +3762,7 @@ * lily/book-paper-def.cc (Book_paper_def): add copy ctor. - * lily/parser.yy (book_paper_head): \bookpaper {} + * lily/parser.yy (book_paper_head): \bookpaper {} * python/midi.c: remove config.h @@ -3804,13 +3804,13 @@ \acciaccatura \grace \partcombine \autochange \applycontext \applyoutput and \breathe are now defined here thanks to it. - * lily/parser.yy: + * lily/parser.yy: * lily/my-lily-lexer.cc: \addlyrics \appoggiatura \acciaccatura \grace \partcombine \autochange \applycontext \applyoutput and \breathe keywords removed from the parser. - * lily/parser.yy: - * lily/music-function.cc (ly_make_music_function): + * lily/parser.yy: + * lily/music-function.cc (ly_make_music_function): * lily/lexer.ll (music_function_type): added a case for 0-arg music functions. @@ -3829,7 +3829,7 @@ 2004-05-14 Han-Wen Nienhuys - * lily/parser.yy (My_lily_lexer): bugfix; op should be tag. + * lily/parser.yy (My_lily_lexer): bugfix; op should be tag. 2004-05-10 Han-Wen Nienhuys @@ -3873,7 +3873,7 @@ * VERSION: release 2.3.1 - * mf/feta-klef.mf: + * mf/feta-klef.mf: * mf/feta-bolletjes.mf: Oops. Comment-out canvast test code. * Documentation/user/programming-interface.itely: Use @emph (was: @@ -3966,7 +3966,7 @@ * lily/parser.yy (Generic_prefix_music_scm): add more music_function symbols. - (Prefix_composite_music): change \apply to music-function + (Prefix_composite_music): change \apply to music-function * lily/include/music-function.hh: rename to music-function @@ -3977,7 +3977,7 @@ * input/regression/music-head.ly (texidoc): new file. * lily/parser.yy (Generic_prefix_music): allow generic - music-transformation functions. + music-transformation functions. * lily/include/music-head.hh (is_music_head): new file. @@ -4001,7 +4001,7 @@ of this is that improperly written spanner handling will result in invalid spanner bounds. (announce_grob): add to elems_ from here - (typeset_grob): comment out. + (typeset_grob): comment out. * lily/include/engraver.hh (make_spanner): new calling interface for make_{item,spanner}. This obviates most calls to @@ -4099,7 +4099,7 @@ * lily/my-lily-parser.cc (distill_inname): Remove. - * flower/include/file-name.hh: + * flower/include/file-name.hh: * flower/file-name.cc: New file. Update users. * flower/file-path.cc [CYGWIN]: Junk testing code. Remove Path. @@ -4295,7 +4295,7 @@ * lily/include/lily-guile.hh: is_x -> ly_c_X_p naming. - * lily/lexer.ll: change is_string -> ly_c_string_p + * lily/lexer.ll: change is_string -> ly_c_string_p * input/mutopia/J.S.Bach/wtk1-fugue2.ly (bassdux): use \book. @@ -4315,13 +4315,13 @@ * lily/include/translator.hh (class Translator): make daddy_context_ protected. - (class Translator): clean up. + (class Translator): clean up. * lily/include/context.hh (class Context): make daddy_context_ private. * lily/lyric-engraver.cc (get_voice_to_lyrics): recursively go - higher for finding Voice. (backportme) + higher for finding Voice. (backportme) * lily/include/context.hh (class Context): remove find_context_below() as a method. @@ -4355,7 +4355,7 @@ * ly/declarations-init.ly: run convert-ly * lily/my-lily-parser.cc (LY_DEFINE): move parse-file function - from input-file-results. Remove input-file-results.* + from input-file-results. Remove input-file-results.* 2004-04-11 Jan Nieuwenhuizen @@ -4402,7 +4402,7 @@ * lily/ly-module.cc (ly_make_anonymous_module): don't protect anonymous modules globally. Let's hope they get GCd - * scripts/lilypond.py (run_dvips): add sauter-mftrace.map + * scripts/lilypond.py (run_dvips): add sauter-mftrace.map 2004-04-11 Jan Nieuwenhuizen @@ -4450,7 +4450,7 @@ * scm/font.scm (add-cmr-fonts): caps is eccc, ecsc is slanted caps. * scm/output-ps.scm (text): split string into spaces, use moveto - for setting space. + for setting space. 2004-04-10 Jan Nieuwenhuizen @@ -4472,7 +4472,7 @@ 2004-04-10 Jan Nieuwenhuizen - * lily/paper-book.cc (classic_output): + * lily/paper-book.cc (classic_output): * tex/lilyponddefs.tex (lybox): Add height, and proper raising. Fixes classic output. (lilypondstart): @@ -4506,11 +4506,11 @@ * lily/paper-outputter.cc (output_header): Uniquify list of fonts passed to define-fonts. - * lily/paper-column.cc: + * lily/paper-column.cc: * lily/system.cc (get_line): - * ly/property-init.ly (newpage): + * ly/property-init.ly (newpage): * scm/define-grob-properties.scm: - * scm/output-ps.scm: + * scm/output-ps.scm: * scm/output-tex.scm: Remove between-system-string kludge. * scm/output-ps.scm (define-fonts, font-command, @@ -4534,7 +4534,7 @@ * lily/parser.yy: Handle \book. - * lily/include/book.hh: + * lily/include/book.hh: * lily/book.cc: New file. 2004-04-10 Han-Wen Nienhuys @@ -4570,7 +4570,7 @@ 2004-04-09 Han-Wen Nienhuys * scripts/convert-ly.py: limited old-style markup convert. (Thanks - to Erik Sandberg) + to Erik Sandberg) * lily/font-metric.cc (LY_DEFINE): new function, return fontName. @@ -4611,7 +4611,7 @@ * lily/paper-def.cc (find_scaled_font): change to inputencoding. - * mf/cmr.enc: new file, without hi-bit ascii info. + * mf/cmr.enc: new file, without hi-bit ascii info. * lily/bezier-bow.cc (slur_shape): make indent dependent on width. This removes the 'hook' at the end of a long slur. @@ -4631,7 +4631,7 @@ * buildscripts/mf-to-table.py (parse_logfile): remove spaces from encoding field. - * lily/stencil-scheme.cc: remove ly:fontify-atom + * lily/stencil-scheme.cc: remove ly:fontify-atom * ly/portuges.ly (pitchnames): new file. @@ -4663,7 +4663,7 @@ * mf/feta-autometric.mf: take encoding argument - * lily/afm.cc (read_afm_file): bugfix, read global info too. + * lily/afm.cc (read_afm_file): bugfix, read global info too. * lily/my-lily-lexer.cc (set_identifier): remove gh_scm2newstr use. @@ -4692,7 +4692,7 @@ * lily/tfm.cc (name_to_index): new function, use encoding_table_. * lily/scaled-font-metric.cc (text_dimension): init - coding_{permutation,table}_ too + coding_{permutation,table}_ too (LY_DEFINE): ly:font-encoding, new function return * lily/paper-def.cc (find_scaled_font): take input coding from @@ -4713,7 +4713,7 @@ 2004-04-06 Jan Nieuwenhuizen - * lily/kpath.cc (kpathsea_gulp_file_to_string): + * lily/kpath.cc (kpathsea_gulp_file_to_string): (ly:kpathsea-gulp-file): New function. * scm/encoding.scm (read-encoding-file): Use it. @@ -4775,7 +4775,7 @@ * po/fr.po: update. (backportme). - * po/nl.po: update. (backportme). + * po/nl.po: update. (backportme). * mf/feta-beugel.mf: document why design size is not fixed. @@ -4874,4 +4874,3 @@ 2004-04-01 Han-Wen Nienhuys * VERSION (PACKAGE_NAME): release 2.2.0 - diff --git a/Documentation/misc/GNUmakefile b/Documentation/misc/GNUmakefile index 17eb63922e..b617fc99cd 100644 --- a/Documentation/misc/GNUmakefile +++ b/Documentation/misc/GNUmakefile @@ -6,6 +6,7 @@ STEPMAKE_TEMPLATES = documentation texinfo TEXTS = $(call src-wildcard,ANNOUNCE-*[0-9]) $(call src-wildcard,CHANGES-*[0-9]) $(call src-wildcard,ChangeLog*[0-9]) $(call src-wildcard,NEWS-*[0-9]) EXTRA_DIST_FILES = $(TEXTS) +EXTRA_DIST_FILES += $(call src-wildcard,*.html) include $(depth)/make/stepmake.make diff --git a/Documentation/misc/NEWS-1.2 b/Documentation/misc/NEWS-1.2 index bc03e6e5a0..d2c32a8372 100644 --- a/Documentation/misc/NEWS-1.2 +++ b/Documentation/misc/NEWS-1.2 @@ -1,6 +1,6 @@ WHAT'S NEW SINCE 1.2.0 -* Much faster spacing engine. +* Much faster spacing engine. * Features: automatic staff switching @@ -22,11 +22,11 @@ WHAT'S NEW SINCE 1.0.17 * Enhanced input: semi-automatic beaming, (nested) tuplets, (nested) repeats, chordnames, automatic Lyrics durations. - -* Grace notes, volta brackets, multiple styles for note heads and - time signatures, breathing signs, lyric extenders, cross staff + +* Grace notes, volta brackets, multiple styles for note heads and + time signatures, breathing signs, lyric extenders, cross staff beaming and slurring. - + * --safe option for the paranoid. * More elegant spacing. Text is spaced exactly. diff --git a/Documentation/misc/NEWS-1.4 b/Documentation/misc/NEWS-1.4 index 12c621b564..e8a80f2f05 100644 --- a/Documentation/misc/NEWS-1.4 +++ b/Documentation/misc/NEWS-1.4 @@ -1,4 +1,3 @@ - New features in 1.4 @@ -34,14 +33,14 @@ ERGONOMICS * Rewritten Emacs mode -* Cleaned up syntax details +* Cleaned up syntax details * Comprehensive documentation, including a rewritten tutorial. * All properties have doc strings, and internal documentation is generated automatically. -* Windows point-and-click installer +* Windows point-and-click installer NOTATION FEATURES @@ -56,7 +55,7 @@ shapes, Medieval clefs, custodes. * Easy-play note heads -* ASCIIScript: ASCII-art output +* ASCIIScript: ASCII-art output * Improved standalone postscript layout. @@ -75,4 +74,3 @@ MISCELLANEOUS * Translations into Japanese, French and Russian * Many many many bugfixes. - diff --git a/Documentation/misc/announce-v2.0.html b/Documentation/misc/announce-v2.0.html new file mode 100644 index 0000000000..8b72cf4a26 --- /dev/null +++ b/Documentation/misc/announce-v2.0.html @@ -0,0 +1,214 @@ + + + +
+Subject: LilyPond 2.0  - make beautiful music prints
+
+
+Dear music enthousiasts,
+
+
+LilyPond version 2.0 was released today. LilyPond is an automated
+music notation system: it is used to make gorgeous sheet music.  It is
+libre software ("open source"), and available for most Unix flavors,
+including Linux and MacOS X, and MS Windows.
+
+Use it for your music too!
+
+For this version, we have dramatically simplified many parts of the
+syntax, making it easier to use than ever before.  Other improvements
+include quarter-tone accidentals, and conditional inclusion of music
+fragments. With version 2.0, we have a solid platform for working on
+notation and typography features for coming versions.
+
+Downloads, examples and documentation are available from the website,
+
+	http://lilypond.org
+
+A big thank-you goes out to our hackers and bughunters: Mats
+Bengtsson, Heikki Junes, Juergen Reuter, Antonio Palama, Benjamin
+Milde, Daniel Berjon Diez, David Bobroff, David Rayleigh Arnold, Erik
+Ronstroem, Fabio dos Santos, Fodor Bertalan, Frederic Bron, Graham
+Percival, Ian Bailey-Mortimer, John Williams, Josza Marton, Marco
+Caliari, Matthieu Amiguet, Michael Welsh Duggan, Patrick Atamaniuk,
+Paul Scott, Pedro Kroeger, Peter Lutek, Richard Schoeller, Thorkil
+Wolvendans, and Werner Trobin
+
+
+Happy music printing,
+
+
+
+Han-Wen Nienhuys & Jan Nieuwenhuizen
+(core development team)
+
+ + +

New features in 2.0 since 1.8

+ +
    + +
  • Crescendos can now be drawn dotted or dashed. + +
  • Quarter tones are now supported. They are entered by suffixing +ih for a half-sharp and eh for a half-flat. Hence, the +following is an ascending list of pitches: + +
                ceses ceseh ces ceh c cih cis cisih cisis
    +          
    + +
  • The following constructs have been removed from the syntax: + +
                \duration #SCHEME-DURATION
    +            \pitch #SCHEME-PITCH
    +            \outputproperty func symbol = value
    +          
    + +

    For \outputproperty, the following may be substituted: + +

                 \applyoutput #(outputproperty-compatibility func
    +                            symbol value)
    +          
    + +

  • Clefs may now be transposed arbitrarily, for example + +
                \clef "G_8"
    +            \clef "G_15"
    +            \clef "G_9"
    +          
    + +
  • The syntax for chords and simultaneous music have changed. +Chords are entered as + +
                 <pitches>
    +          
    + +

    while simultaneous music is entered as + +

                 <<..music list..>>
    +          
    + +

    In effect, the meanings of both have been swapped relative to their 1.8 +definition. The syntax for lists in \markup has changed +alongside, but figured bass mode was not changed, i.e.: + +

                \markup { \center <..list of markups..> }
    +            \figure { <figures> }
    +          
    + +

    As chords the more often used than simultaneous music, this change will +save keystrokes. + +

  • Each music expression can now be tagged, to make different printed +versions from the same music expression. In the following example, +we see two versions of a piece of music, one for the full score, and +one with cue notes for the instrumental part: + +
              << \tag #'part <<
    +            { c4 f2 g4 }      % in the part, we have cue-notes
    +            \\ R1 >>
    +            \tag #'score R1  % in the score: only a rest
    +          >>
    +          
    + +

    The same can be applied to articulations, texts, etc.: they are +made by prepending + +

                      -\tag #your-tags
    +          
    + +

    to an articulation, for example, + +

                      c4-\tag #'with-fingerings -4 -\tag #'with-strings \6
    +          
    + +

    This defines a note, which has a conditional fingering and a +string-number indication. + +

  • The settings for chord-fingering are more flexible. You can specify a +list where fingerings may be placed, eg. + +
                \property Voice.fingeringOrientations = #'(left down)
    +          
    + +

    This will put the fingering for the lowest note below the chord, and the +rest to the left. + +

  • The script previously known as ly2dvi has been renamed to +lilypond. The binary itself is now installed as +lilypond-bin. + +
  • Markup text (ie. general text formatting) may now be used for lyrics too. + +
  • Two new commands for grace notes have been added, \acciaccatura +and \appoggiatura, + +
                \appoggiatura f8 e4
    +            \acciaccatura g8 f4
    +          
    + +

    Both reflect the traditional meanings of acciaccatura and appogiatura, +and both insert insert a slur from the first grace note to the main +note. + +

  • Layout options for grace notes are now stored in a context property, +and may now be set separately from musical content. + +
  • The \new command will create a context with a unique +name automatically. Hence, for multi-staff scores, it is no longer +necessary to invent arbitrary context names. For example, a two-staff +score may be created by + +
                \simultaneous {
    +              \new Staff { notes for 1st staff }
    +              \new Staff { notes for 2nd staff }
    +            }
    +          
    + +
  • Octave checks make octave errors easier to correct. +The syntax is + +
                \octave pitch
    +          
    + +

    This checks that pitch (without octave) yields pitch (with +octave) in \relative mode. If not, a warning is printed, and the +octave is corrected. + +

  • All articulations must now be entered postfix. For example, + +
                c8[( d8])
    +          
    + +

    is a pair of beamed slurred eighth notes. + +

  • The definition of \relative has been simplified. Octaves are +now always propagated in the order that music is entered. In the +following example, + +
                PRE
    +            \repeat "unfold" 3  BODY \alternative { ALT1 ALT2 }
    +            POST
    +          
    + +

    the octave of BODY is based on PRE, the starting octave of ALT1 on +BODY, the starting octave of ALT2 on ALT1, and the starting octave of +POST on ALT2. + +

    The same mechanism is used for all other music expressions, except the +chord. Backwards compatibility is retained through a special program option, +which is set through + +

                #(ly:set-option 'old-relative)
    +          
    + +

  • Windows users can double click a .ly file to process and view +it automagically through the new lily-wins frontend. + +
diff --git a/Documentation/misc/announce-v2.10.html b/Documentation/misc/announce-v2.10.html new file mode 100644 index 0000000000..a13e390e97 --- /dev/null +++ b/Documentation/misc/announce-v2.10.html @@ -0,0 +1,105 @@ +LilyPond 2.10 now available + +

LilyPond version 2.10 available—10 years anniversary release

+ +Utrecht the Netherlands—November, 2006. +

+The initial inspiration for LilyPond came ten years ago when two +musician friends grew disappointed with the bland and boring look of +computer formatted scores. Every musician prefers to read beautiful +music, so couldn't we programmers solve that printing problem? +

+ +LilyPond just does that: it prints music in the best traditions of +classical engraving with minimum fuss. Don't waste time on tuning +spacing, moving around symbols, or shaping slurs. Impress friends and +colleagues with sharp sheet music! +

+We are proud to announce the 10-year anniversary release, LilyPond +version 2.10. + + +

New stuff

+ + + +
    +
  • Better page turns. +

    + Horizontal and vertical spacing is tuned simultaneously to put page + turns at rests or explicitly marked places. +

  • Flat music export format. +

    +A much simpler intermediate input/output format has been added. In the + long term, this will enable other programs to read LilyPond music. +

  • + Small features and improvements. +

    + This release adds falls and doits, dashed barlines, al niente + hairpins, right hand fingerings for guitar, better formatting of + tied chords, automatic beaming and nested tuplets.

+ + +A full list of new features is at + http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html + + + +

+ + +

+Enjoy! +

+ +Han-Wen Nienhuys - Core development
+Jan Nieuwenhuizen - Core development
+Graham Percival - Documentation Editor and Bug Meister
+Mats Bengtsson - Support Guru
+ + + +

Contributors

+ + +Angelo Contardi, David Feuer, Erik Sandberg, Erlend Aasland, Guido +Amoruso, Heikki Junes, and Joe Neeman. + + +

Sponsors

+ + +Andrew Sidwell, Anthony Youngman , Chris Sawer, David Griffel, Jamie +Bullock, Kieren MacMillan, Michael Meixner , Paul Scott, Rick Hansen, +Steve Doonan, Trent Johnston, Trevor Bača, Vivian Barty-Taylor and +William Wilson. + + +

Documentation helpers

+ + + +Cameron Horsburgh, Dave Luttinen, Eduardo Vieira, Erlend Aasland, +Geoff Horton, and Juergen Reuter. + +

Bughunters

+ + +Albert Frantz, Arvid Grøtting, Anthony Youngman, Aurèle Duda, Ben +Hoefer, Bernie Arai, Cameron Horsburgh, Charles Cave, Christian Hitz, +Christopher Ellis, Claude Routhier, Colin Wilding, Daniel Tonda +Castillo, David Rogers, Francisco Vila, Harald Wellmann, Henrik Frisk, +Johannes Schindelin, John Williams, J. Leung, Karim Haddad, Karl +Hammar, Keith Packard, Kieren MacMillan, Lee T. Wilkirson, Lieke van +der Meer, Luc Wehli, Manuzhai, Mark Dewey, Marcus Macauley, Markus +Schneider, Matti Aaltonen, Michael Meixner, Michael Welsh Duggan, +Milan Zamazal, Orm Finnendahl, Paul Scott, Phillip Kirlin, Quentin +Spencer, Rainer Typke, Rick Hansen, Rutger Helmers, Ruud van Silfhout, +Sietse Brouwer, Stephen Carter, Stephen Kress, Thies Albrecht, Toine +Schreurs, Trent Johnston, Trevor Bača, Trevor Daniels, Vaclav +Smilauer, Vicente Solsona Dellá, Victor Eijkhout, Villum Sejersen, +Werner Lemberg, Will Oram, and Zoltan V. Laszlo. diff --git a/Documentation/misc/announce-v2.12.de.html b/Documentation/misc/announce-v2.12.de.html new file mode 100644 index 0000000000..d47582599b --- /dev/null +++ b/Documentation/misc/announce-v2.12.de.html @@ -0,0 +1,103 @@ + +LilyPond 2.12 „Rune“ erhältlich + +

LilyPond Version 2.12 erhältlich — Die 12-Jahre-Jubiläumsversion

+ +Dezember 2008. + +

Wir sind stolz, das Programm GNU/LilyPond 2.12 „Rune“ präsentieren zu können. +

+ +

Unsere Freude ist jedoch getrübt durch Trauer über den Tod unseres langjähren Mitentwicklers und Freundes Rune Zedeler am 2. Juli 2008. +

+ +

Mit Rune verloren wir einen Programmierer, Musiker und wertvollen Entwickler von LilyPond, der die letzten sechs Jahre enthusiastisch in dem Projekt engagiert war. Wir werden ihn sehr in unserer Gemeinschaft vermissen und möchten diese Version ihm und seinem Gedenken widmen. +

+ +

Bedeutende Neuerungen

+ +
    +
  • Die Vermeidung von Zusammenstößen wurde sehr stark verbessert. Objekte außerhalb des Notensystems vermeiden jetzt automatisch Zusammenstöße, sodass weniger Anpassungen nötig sind, um einen schönen Notensatz zu erhalten.
  • + +
  • Die Dokumentation wurde im Zuge des mehr als ein Jahr dauernden "Großen Dokumentationsprojekts" fast vollständig neu geschrieben und umorganisiert. Zusätzlich hat die Online-Dokumentation nun ein neues, übersichtlicheres Layout erhalten. Das Programm selbst ist mittlerweile in 15 Sprachen erhältlich und die Dokumentation wurde teilweise auf Deutsch, Französisch und Spanisch übersetzt. Es war noch nie so einfach, die ersten perfekt gesetzten Noten mit LilyPond zu erstellen.
  • + +
  • Beinahe 30 neue Eigenschaften wurden dem Programm hinzugefügt, unter Anderem transponierbare Bund-Diagramme, Versetzungszeichen für Mikrotöne sowie eine vielfach verbesserte Importmöglichkeit von MusicXML-Dateien (musicxml2ly), und über 200 Fehler wurden beseitigt. Eine vollständige Liste der Änderungen findet sich unter http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html. +
  • +
+
+ +

Viel Vergnügen beim Notensatz!

+ +

LilyPond wird Ihnen zur Verfügung gestellt von...

+ +

Entwicklungsteam

+ +

Han-Wen Nienhuys – Hauptentwicklung
+Jan Nieuwenhuizen – Hauptentwicklung
+Joe Neeman – Hauptentwicklung
+Graham Percival – Dokumentationsredaktion und Verwaltung der Fehlermeldungen
+Valentin Villenave – Redaktion des Schnipseldepots und Verwaltung der Fehlermeldungen
+Mats Bengtsson – Unterstützungsguru
+John Mandereau – Redaktion und Implementierung der Übersetzungen

+ +

Mitwirkende

+ +

Rune Zedeler, +Maximilian Albert, +Milan Zamazal, +Reinhold Kainhofer (musicxml2ly-Entwicklung), +Erlend Aasland, +Stan Sanderson (Regressionsüberprüfung), +Neil Puttock.

+ +

Das Große DokumenationsProjekt

+ +

Trevor Daniels – Dokumentationsredation
+Andrew Hawryluk, Carl Sorensen, Eyolf Østrem, Francisco Vila, +Jay Hamilton, Jonathan Kulp, Joseph Harfouch, Patrick McCarty, +Ralph Palmer, Till Rettig – Arbeit an der Notationsreferenz
+Kurt Kroon – Aktualisierung des Glossars, Arbeit and der Notationsreferenz
+Alard de Boer – Formatierung
+Michael Rasmussen – Formatierung
+Trevor Bača – Inspirierende Notenbeispiele
+Reinhold Kainhofer – Technische Hilfe
+Neil Puttock – Schnipselredation, technische Hilfe.

+ +

Übersetzung

+ +

Clytie Siddall, Damien Heurtebise, Francisco Vila, Heikki Junes, +Jean-Charles Malahieude, John Mandereau, Nicolas Klutchnikoff, Till +Rettig, Valentin Villenave.

+ +

Sponsoren

+ +

Mike Amundsen, Trevor Bača.

+ +

Fehlerjäger und Anregungen

+ +

Adam James Wilson, Alard de Boer, Alex Rolex, Andy Haupt, Arvid +Grøtting, Bertalan Fodor, Benjamin Drung, Cameron Horsburgh, Carl +Sorensen, Christian Hitz, Christian Herzberg, David Bobroff, David +Griffel, Daniel Hulme, Daniel Johnson, Dominic Neumann, Eduardo +Vieira, Frédéric Chiasson, Georg Dummer, Georg Romstorfer, Gilles +Thibault, Hernán J. González, Hu Haipeng, Jay Anderson, James +Kilfinger, Jean-Marie Mouchel, Jean-Yves Baudais, Jesús Guillermo +Andrade, Jonathan Henkelman, Kazuhiro Suzuki, Kevin Dalley, Laura +Conrad, Luc Wehli, Maarten Hijzelendoorn, Marc Lanoiselée, Mark +Polesky, Matthijs Frankeno, Martijn Vromans, Marnen Laibow-Koser, +Maximilian Albert, Mirosław Doroszewski, Mike Coleman, Neil Puttock, +Nicolas Mayencourt, Nicolas Sceaux, Orm Finnendahl, Peter Budny, +Phillip Kirlin, Pierre-Emmanuel Brame, Ralph Palmer, Renaud Flavigny, +Rick Hansen, Risto Vääräniemi, Robin Bannister, Roland Goretzki, Rune +Zedeler, Ruud van Silfhout, Sean Reed, Steven Weber, Tomas Sauer, +Thomas Scharkowski, Trevor Bača, Vivian Barty-Taylor, Werner Lemberg, +Wilbert Berendsen, William Oram, Yota Moteuchi, Zack Charter, and +Zoltan Selyem.

diff --git a/Documentation/misc/announce-v2.12.es.html b/Documentation/misc/announce-v2.12.es.html new file mode 100644 index 0000000000..df4fbba3d7 --- /dev/null +++ b/Documentation/misc/announce-v2.12.es.html @@ -0,0 +1,122 @@ + + +Está disponible LilyPond 2.12 “Rune” + +

Ya está disponible LilyPond versión 2.12: la edición del duodécimo aniversario

+ +Diciembre de 2008. + +

Nos llena de orgullo anunciar el lanzamiento de GNU/LilyPond 2.12 +“Rune”. +

+ +

Nuestra alegría está teñida de tristeza, pues el que fue durante +mucho tiempo colaborador del proyecto LilyPond y amigo, Rune Zedeler, +falleció el pasado 2 de julio de 2008. Esta edición está dedicada a su +memoria. +

+ +

Rune era programador y músico, e hizo valiosos aportes a +LilyPond. Había estado implicado en el proyecto durante los últimos +seis años, y nuestra comunidad le echará de menos con gran añoranza. +

+ +

Principales novedades

+ +
    +
  • Se ha mejorado enormemente la detección de colisiones. Los objetos +fuera del pentagrama ahora se evitan automáticamente, de forma que se +necesitan muchos menos ajustes manuales para obtener un resultado +satisfactorio.
  • + +
  • La documentación también se ha reescrito casi por completo durante + el "Proyecto Magno de Documentación" (GDP) que ha durado un año, y la + documentación en línea es ahora mucho más atractiva visualmente y + también se navega por ella mucho más fácilmente. El programa está + traducido a 6 idiomas, y la documentación completa está disponible + en español, y parcialmente en francés y alemán. ¡Nunca ha sido tan + fácil empezar con 'Pond!
  • + +
  • Se han incorporado casi 30 nuevas funcionalidades, entre ellas los + diagramas transportables de posiciones de guitarra, alteraciones + microtonales y un conversor musicxml2ly muy mejorado, y se han + corregido casi 200 bugs. Para ver los detalles de estas nuevas + posibilidades, diríjase + a http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html. +
  • +
+
+ +

¡Feliz tipografía musical!

+ +

LilyPond le llega por cortesía de...

+ +

Equipo de desarrollo

+ +

Han-Wen Nienhuys – Desarrollos esenciales
+Jan Nieuwenhuizen – Desarrollos esenciales
+Joe Neeman – Desarrollos esenciales
+Graham Percival – Editor de la documentación y Maestro desinsectador
+Valentin Villenave – Editor del repositorio LSR y Maestro desinsectador
+Mats Bengtsson – Gurú de apoyo
+John Mandereau – Maestro de la infraestructura de traducción

+ +

Colaboradores

+ +

Rune Zedeler, +Maximilian Albert, +Milan Zamazal, +Reinhold Kainhofer (desarrollo de musicxml2ly), +Erlend Aasland, +Stan Sanderson (revisor de las regresiones), +Neil Puttock.

+ +

Proyecto Magno de Documentación

+ +

Trevor Daniels – Editor adjunto de la documentación
+Andrew Hawryluk, Carl Sorensen, Eyolf Østrem, Francisco Vila, +Jay Hamilton, Jonathan Kulp, Joseph Harfouch, Patrick McCarty, +Ralph Palmer, Till Rettig – trabajos en la Referencia de la Notación
+Kurt Kroon – Actualizaciones del glosario, trabajos en la Referencia de la Notación
+Alard de Boer – Formato
+Michael Rasmussen – Formato
+Trevor Bača – Encabezamientos evocadores
+Reinhold Kainhofer – Asistencia técnica
+Neil Puttock – Editor de fragmentos de código, asistencia técnica.

+ +

Traductores

+ +

Clytie Siddall, Damien Heurtebise, Francisco Vila, Heikki Junes, +Jean-Charles Malahieude, John Mandereau, Nicolas Klutchnikoff, Till +Rettig, Valentin Villenave.

+ +

Patrocinadores

+ +

Mike Amundsen, Trevor Bača.

+ +

Cazadores de fallos; sugerencias

+ +

Adam James Wilson, Alard de Boer, Alex Rolex, Andy Haupt, Arvid +Grøtting, Bertalan Fodor, Benjamin Drung, Cameron Horsburgh, Carl +Sorensen, Christian Hitz, Christian Herzberg, David Bobroff, David +Griffel, Daniel Hulme, Daniel Johnson, Dominic Neumann, Eduardo +Vieira, Frédéric Chiasson, Georg Dummer, Georg Romstorfer, Gilles +Thibault, Hernán J. González, Hu Haipeng, Jay Anderson, James +Kilfinger, Jean-Marie Mouchel, Jean-Yves Baudais, Jesús Guillermo +Andrade, Jonathan Henkelman, Kazuhiro Suzuki, Kevin Dalley, Laura +Conrad, Luc Wehli, Maarten Hijzelendoorn, Marc Lanoiselée, Mark +Polesky, Matthijs Frankeno, Martijn Vromans, Marnen Laibow-Koser, +Maximilian Albert, Mirosław Doroszewski, Mike Coleman, Neil Puttock, +Nicolas Mayencourt, Nicolas Sceaux, Orm Finnendahl, Peter Budny, +Phillip Kirlin, Pierre-Emmanuel Brame, Ralph Palmer, Renaud Flavigny, +Rick Hansen, Risto Vääräniemi, Robin Bannister, Roland Goretzki, Rune +Zedeler, Ruud van Silfhout, Sean Reed, Steven Weber, Tomas Sauer, +Thomas Scharkowski, Trevor Bača, Vivian Barty-Taylor, Werner Lemberg, +Wilbert Berendsen, William Oram, Yota Moteuchi, Zack Charter, and +Zoltan Selyem.

diff --git a/Documentation/misc/announce-v2.12.fr.html b/Documentation/misc/announce-v2.12.fr.html new file mode 100644 index 0000000000..0e6c3da832 --- /dev/null +++ b/Documentation/misc/announce-v2.12.fr.html @@ -0,0 +1,123 @@ + +LilyPond 2.12 « Rune » + +

LilyPond version 2.12 disponible — 12 ans d'âge

+ +Décembre 2008. + +

Nous sommes ravis d'annoncer la sortie de GNU LilyPond 2.12 +« Rune ».

+ +

Notre enthousiasme est terni par la tritesse causée par la + disparition le 2 juillet 2008 de Rune Zedeler, un ami et un + contributeur de longue date de Lilypond. Nous lui dédions cette + mouture 2.12. +

+ +

Rune était développeur informatique, musicien et un contributeur + précieux pour LilyPond. Il était impliqué avec enthousiasme dans le + projet depuis six ans, il sera profondément regretté par toute la + communauté. +

+ +

Nouveautés majeures

+ +
    +
  • La détection des collisions s'est grandement améliorée : les + objets en dehors de la portée n'entrent plus jamais en collision, + désormais seules des retouches mineures sont parfois nécessaires + pour obtenir une gravure très satisfaisante.
  • + +
  • La documentation a été presque entièrement réécrite pendant le + Grand Projet de Documentation (Grand Documentation Project), et la + documentation en ligne est mieux présentée et plus facile à + parcourir. Le programme est disponible en 6 langues, et la + documentation est partiellement traduite en français, allemand et + espagnol. Débuter n'a jamais été aussi facile !
  • + +
  • L'équipe de développement et les contributeurs ont ajouté une + trentaine de fonctionnalités, dont des tablatures pour guitare + transposables et des altérations microtonales, et ont grandement + amélioré musicxml2ly ; par ailleurs, plus de 200 bogues ont + été corrigés depuis la version 2.10. Pour une liste complète des + nouvelles fonctionnalités, consultez http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html. +
  • +
+
+ +

Bonne gravure musicale !

+ +

LilyPond vous est proposé par...

+ +

Équipe de développement

+ +

Han-Wen Nienhuys – développeur principal
+Jan Nieuwenhuizen – développeur principal
+Joe Neeman – développeur principal
+Graham Percival – éditeur de la documentation et chef des bogues
+Valentin Villenave – éditeur LSR et chef des bogues
+Mats Bengtsson – gourou du support utilisateur
+John Mandereau – chef des traductions

+ +

Contributeurs

+ +

Rune Zedeler, +Maximilian Albert, +Milan Zamazal, +Reinhold Kainhofer (développement de musicxml2ly), +Erlend Aasland, +Stan Sanderson (vérification des tests de régression), +Neil Puttock.

+ +

Grand Projet de Documentation

+ +

Trevor Daniels – assistant éditeur de la documentation
+Andrew Hawryluk, Carl Sorensen, Eyolf Østrem, Francisco Vila, +Jay Hamilton, Jonathan Kulp, Joseph Harfouch, Patrick McCarty, +Ralph Palmer, Till Rettig – travail sur le manuel de notation
+Kurt Kroon – mise à jour du glossaire, travail sur le + manuel de notation
+Alard de Boer – formatage
+Michael Rasmussen – formatage
+Trevor Bača – en-têtes musicaux
+Reinhold Kainhofer – aide technique
+Neil Puttock – éditeur d'extraits de code, aide technique

+ +

Traducteurs

+ +

Clytie Siddall, Damien Heurtebise, Francisco Vila, Heikki Junes, +Jean-Charles Malahieude, John Mandereau, Nicolas Klutchnikoff, Till +Rettig, Valentin Villenave.

+ +

Sponsors

+ +

Mike Amundsen, Trevor Bača.

+ +

Chasseurs de bogues et suggestions

+ +

Adam James Wilson, Alard de Boer, Alex Rolex, Andy Haupt, Arvid +Grøtting, Bertalan Fodor, Benjamin Drung, Cameron Horsburgh, Carl +Sorensen, Christian Hitz, Christian Herzberg, David Bobroff, David +Griffel, Daniel Hulme, Daniel Johnson, Dominic Neumann, Eduardo +Vieira, Frédéric Chiasson, Georg Dummer, Georg Romstorfer, Gilles +Thibault, Hernán J. González, Hu Haipeng, Jay Anderson, James +Kilfinger, Jean-Marie Mouchel, Jean-Yves Baudais, Jesús Guillermo +Andrade, Jonathan Henkelman, Kazuhiro Suzuki, Kevin Dalley, Laura +Conrad, Luc Wehli, Maarten Hijzelendoorn, Marc Lanoiselée, Mark +Polesky, Matthijs Frankeno, Martijn Vromans, Marnen Laibow-Koser, +Maximilian Albert, Mirosław Doroszewski, Mike Coleman, Neil Puttock, +Nicolas Mayencourt, Nicolas Sceaux, Orm Finnendahl, Peter Budny, +Phillip Kirlin, Pierre-Emmanuel Brame, Ralph Palmer, Renaud Flavigny, +Rick Hansen, Risto Vääräniemi, Robin Bannister, Roland Goretzki, Rune +Zedeler, Ruud van Silfhout, Sean Reed, Steven Weber, Tomas Sauer, +Thomas Scharkowski, Trevor Bača, Vivian Barty-Taylor, Werner Lemberg, +Wilbert Berendsen, William Oram, Yota Moteuchi, Zack Charter, and +Zoltan Selyem.

diff --git a/Documentation/misc/announce-v2.12.html b/Documentation/misc/announce-v2.12.html new file mode 100644 index 0000000000..cc28e2b6a5 --- /dev/null +++ b/Documentation/misc/announce-v2.12.html @@ -0,0 +1,110 @@ +LilyPond 2.12 “Rune” available + +

LilyPond version 2.12 available — 12 year anniversary +release

+ +December, 2008. + +

We are proud to announce the release of GNU LilyPond 2.12 “Rune”. +

+ +

Our joy is tinged with sadness, as long-time LilyPond contributor +and friend Rune Zedeler passed away on the 2nd of July, 2008. This +release is dedicated to him. +

+ +

Rune was a computer programmer, a musician and a valued contributor +to LilyPond. He had been enthusiastically involved in the project +for the past six years, and he will be sorely missed in our community. +

+ +

Major updates

+ +
    +
  • Collision detection has been vastly improved. Outside-staff objects + now avoid each other automatically, so far fewer manual tweaks are + required to obtain a pleasing layout.
  • + +
  • The documentation has been almost entirely rewritten during the + year-long "Grand Documentation Project", and the online documentation + is both much better-looking and far easier to browse. The program + is now available in 6 languages, and the documentation is partially + available in French, Spanish and German. It has never been easier to + get started with 'Pond!
  • + +
  • Almost 30 new features, among others transposable fret diagrams, + microtonal accidentals, and a much improved musicxml2ly, have been + implemented and nearly 200 bugs have been fixed. For a complete + overview surf to http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html. +
  • +
+
+ +

Happy music typesetting!

+ +

LilyPond was brought to you by...

+ +

Development team

+ +

Han-Wen Nienhuys – Core development
+Jan Nieuwenhuizen – Core development
+Joe Neeman – Core development
+Graham Percival – Documentation Editor and Bug Meister
+Valentin Villenave – LSR Editor and Bug Meister
+Mats Bengtsson – Support Guru
+John Mandereau – Translation Meister

+ +

Contributors

+ +

Rune Zedeler, +Maximilian Albert, +Milan Zamazal, +Reinhold Kainhofer (musicxml2ly development), +Erlend Aasland, +Stan Sanderson (Regression Checker), +Neil Puttock.

+ +

Grand Documentation Project

+ +

Trevor Daniels – Assistant Documentation Editor
+Andrew Hawryluk, Carl Sorensen, Eyolf Østrem, Francisco Vila, +Jay Hamilton, Jonathan Kulp, Joseph Harfouch, Patrick McCarty, +Ralph Palmer, Till Rettig – Notation Reference work
+Kurt Kroon – Glossary Updates, Notation Reference work
+Alard de Boer – Formatting
+Michael Rasmussen – Formatting
+Trevor Bača – Inspirational Headwords
+Reinhold Kainhofer – Technical Aid
+Neil Puttock – Snippet Editor, Technical Aid.

+ +

Translators

+ +

Clytie Siddall, Damien Heurtebise, Francisco Vila, Heikki Junes, +Jean-Charles Malahieude, John Mandereau, Nicolas Klutchnikoff, Till +Rettig, Valentin Villenave.

+ +

Sponsors

+ +

Mike Amundsen, Trevor Bača.

+ +

Bug hunters and suggestions

+ +

Adam James Wilson, Alard de Boer, Alex Rolex, Andy Haupt, Arvid +Grøtting, Bertalan Fodor, Benjamin Drung, Cameron Horsburgh, Carl +Sorensen, Christian Hitz, Christian Herzberg, David Bobroff, David +Griffel, Daniel Hulme, Daniel Johnson, Dominic Neumann, Eduardo +Vieira, Frédéric Chiasson, Georg Dummer, Georg Romstorfer, Gilles +Thibault, Hernán J. González, Hu Haipeng, Jay Anderson, James +Kilfinger, Jean-Marie Mouchel, Jean-Yves Baudais, Jesús Guillermo +Andrade, Jonathan Henkelman, Kazuhiro Suzuki, Kevin Dalley, Laura +Conrad, Luc Wehli, Maarten Hijzelendoorn, Marc Lanoiselée, Mark +Polesky, Matthijs Frankeno, Martijn Vromans, Marnen Laibow-Koser, +Maximilian Albert, Mirosław Doroszewski, Mike Coleman, Neil Puttock, +Nicolas Mayencourt, Nicolas Sceaux, Orm Finnendahl, Peter Budny, +Phillip Kirlin, Pierre-Emmanuel Brame, Ralph Palmer, Renaud Flavigny, +Rick Hansen, Risto Vääräniemi, Robin Bannister, Roland Goretzki, Rune +Zedeler, Ruud van Silfhout, Sean Reed, Steven Weber, Tomas Sauer, +Thomas Scharkowski, Trevor Bača, Vivian Barty-Taylor, Werner Lemberg, +Wilbert Berendsen, William Oram, Yota Moteuchi, Zack Charter, and +Zoltan Selyem.

diff --git a/Documentation/misc/announce-v2.2.html b/Documentation/misc/announce-v2.2.html new file mode 100644 index 0000000000..00ed1eda4f --- /dev/null +++ b/Documentation/misc/announce-v2.2.html @@ -0,0 +1,400 @@ + + +LilyPond version 2.2 released +
+
+Dear music enthusiasts,
+
+
+LilyPond is a program for making beautiful music notation.  It is
+free/open source software, and is available for all popular operating
+systems. It runs on most Unix flavors --including Linux and MacOS X-- and MS
+Windows. Use it for your music too!
+
+
+
+LilyPond version 2.2 was released today!
+
+This release has completely revamped support for for orchestral score
+formatting, cue notes, font size management, lyric formatting, drum
+notation/playback and document integration.
+
+In addition, it has numerous syntax simplifications, proper support
+for 8va brackets, and a completely updated manual.
+
+Go and grab it at
+
+  http://lilypond.org
+
+
+A big thank-you goes out to our contributors:
+
+David Bobroff, Edward Sanford Sutton, Heikki Junes, and Nicolas
+Sceaux.
+
+Also thanks to our bug-hunters:
+
+Alexandre Beneteau, Andrew McNabb, Atte Andre Jensen , Bertalan Fodor,
+Bruce McIntyre, Dave Symonds, David Bobroff, Darius, Delma Avers, Doug
+Linhardt, Eric Wurbel, Erik Sandberg, Ferenc Wagner, Hans Forbrich,
+John Williams, José Luis Cruz, Juergen Reuter, Kieren Richard
+MacMillan, Laurent Martelli, Mats Bengtsson, Matthias Kilian, Nancho
+Alvarez, Nick Busigin, Nicolas Sceaux , Olivier Guery, Patrick
+Atamaniuk, Paul Scott, Pawel D, Pedro Kroger, Ray McKinney, Reuben
+Thomas, Rob V, Stef Epardaud, Thomas Willhalm, Thomas Scharkowski, Tom
+Bäckström, Werner Lemberg, and Will Oram.
+
+
+
+Happy music printing,
+
+
+
+
+Han-Wen Nienhuys & Jan Nieuwenhuizen
+(core development team)
+
+
+ + +

New features in 2.2

+ +
    +
  • Setting raggedlast = ##t in the \paper block +causes the last line to be set flush-left instead of justified. + +
  • The Timing_engraver now sets the Timing alias on +its containing context automatically. + +
  • The code for font selection has been rewritten. In addition to +existing font selection properties, the property font-encoding +has been added, which makes the switch between normal text and +other encodings like braces, music and math. + +
  • The pmx2ly script has been removed from the distribution. + +
  • Pedal brackets will now run to the last bar of a piece if they are not +explicitly ended. + +
  • Context definitions now use the word \context instead of \translator. + +
  • Property functions may be used as an argument to set!, +for example + +
                (set! (ly:grob-property grob 'beam) ... )
    +     
    + +
  • In anticipation of Emacs 21.4 or 22.1, the info documentation contains +images. + +
  • Cue notes can be quoted directly from the parts that +contain them. This will take into account transposition of source and target +instrument. For example, + +
    +     \addquote clarinet \notes\relative c' {
    +       \transposition bes
    +       fis4 fis fis fis
    +     }
    +
    +     \score {
    +         \notes \relative c'' {
    +             c8 d8 \quote 2 oboe es8 gis
    +         }
    +     }
    +
    + +
  • The transposition of an instrument can be specified using the +\transposition command. An +E-flat alto saxophone is specified as + +
                \transposition es'
    +     
    + +
  • The naming of exported Scheme functions now follows Scheme conventions. +Changes be applied to Scheme files with + +
                      convert-ly -e -n --from=2.1.24 --to=2.1.26 *.scm
    +     
    + +
  • Notes can be excluded from auto-beaming, by marking them with +\noBeam +
                c8 c \noBeam c c
    +     
    + +

    will print two separate eighth notes, and two beamed notes. + +

  • Translators and contexts have been split. The result of this +internal cleanup is that Score no longer is the top context; +Score is contained in the Global context. Consequently, +it is possible to tweak Score as follows: + +
                \context Score \with {
    +              ...
    +            }
    +     
    + +
  • The number of staff lines in Tablature notation is now +automatically deduced from the stringTunings property. + +
  • The program reference has been cleaned up and revised. + +
  • The syntax for setting properties has been simplified: +the following table lists the differences: + +
                    (old)                           (new)
    +
    +          \property A.B = #C                \set A.B = #C
    +          \property A.B \unset              \unset A.B
    +          \property A.B \set #C = #D        \override A.B #C = #D
    +          \property A.B \override #C = #D   (removed)
    +          \property A.B \revert #C          \revert A.B #C
    +     
    + +

    Furthermore, if A is left out, the bottommost context is used +by default. In other words, it is no longer necessary to explicitly +mention Voice, Lyrics or ChordNames. + +

    Old: + +

                 \property Voice.autoBeaming = ##f
    +             \property Staff.TimeSignature \set #'style = #'C
    +     
    + +

    New: + +

                 \set autoBeaming = ##f
    +             \override Staff.TimeSignature #'style = #'C
    +     
    + +
  • Tweaks made with \override and \revert no longer +hide tweaks at higher context levels. + +
  • Melismata in lyrics are also properly handled in the MIDI output. + +
  • The lilypond-book script has been rewritten. +It is shorter, cleaner and faster. The special construct +mbinclude has been removed, plain @include or +\input can be used now. + +

    It now supports running convert-ly on the lilypond snippets, +

                  lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
    +     
    + +
  • The LyricsVoice context has been removed. Lyrics should only +be constructed in Lyrics. + +
  • The Thread context has been removed. Note heads and rests +are now constructed at Voice level. + +
  • Harmonic notes can now be entered as + +
                 <c' g''\harmonic>
    +     
    + +
  • Drum notation is now supported as a regular feature: +percussion may be entered in \drums mode, and printed or +performed in a DrumStaff context: + +
                \score {
    +              \drums \new DrumStaff { hihat4 cowbell8 }
    +            }
    +     
    + +
  • The automatic staff changer was internally rewritten. As a +result, the syntax has been simplified as well: + +
                \autochange the-music
    +     
    + +
  • The ergonomic syntax of \markup now has an equivalent in +Scheme. The markup* macro creates such objects; the following +two markup commands are equivalent: +
               f4^#(markup* #:raise 0.2 #:bold "hi")
    +           f4^\markup { \raise #0.2 \bold hi  }
    +     
    + +
  • Voice names, for vocal lines, have been added. They are similar +to instrument names. They can be set by defining vocalName +and vocNam. + +
  • Safe mode has been reinstated for lilypond. +When lilypond is invoked with --safe-mode, TeX and +PostScript file output is disallowed, and lilypond-bin is invoked with +--safe-mode, the user's Guile expressions are evaluated in a +safe environment and file inclusion is not allowed. + +

    Warning: this does not protect against denial-of-service attacks using +Guile, TeX or PostScript. + +

    (This feature is still experimental.) + +

  • There is now a Scheme macro for defining markup +commands. Special mark-up commands can be defined in user-files too. + +
  • Many fixes for dimension scaling have been made, +resulting in correct results for scores that mix staves in different +sizes. + +
  • Improved robustness when layout properties are accidentally removed. + +
  • A more cleanly constructed part combiner has been installed. +It is more robust and less buggy. The part-combiner can be used with +
                \partcombine mus1 mus2
    +     
    + +

    See input/regression/new-part-combine.ly for an example. + +

  • Formatting of rehearsal marks has been improved. The \mark +command now only does automatic incrementing for marks specified as +integer. For example, \mark #1 will print an A in the default +style. See input/regression/rehearsal-mark-letter.ly, +input/regression/rehearsal-mark-number.ly. + +
  • Formatting of ottava brackets has been much improved. + +
  • Objects in the output can now be documented: the following fragment + boxes the note head, and adds the text “heads or tails?” three +spaces below the box. + +
                     \context Voice \applyoutput #(add-balloon-text
    +                                             'NoteHead "heads, or tails?"
    +                                             '(0 . -3))
    +
    +
    +                 c8
    +     
    + +
  • Default staff sizes are now scalable. There are two new mechanisms for +setting staff sizes. Both are demonstrated in this fragment: + +
                #(set-global-staff-size 15)
    +            \paper {
    +              #(paper-set-staff-size (* 15 pt))
    +            }
    +     
    + +

    Both have the same effect on the global layout of a piece. Similarly, +the paper size may be changed as follows + +

                #(set-default-paper-size "a4")
    +            \paper {
    +              #(set-paper-size "a4")
    +            }
    +     
    + +
  • Warnings for bar check errors are more cleverly printed. This +makes barCheckSynchronize superfluous, so it is now switched +off by default. + +

    Warning: this will cause problems in scores that use bar checks to +shorten measures. + +

  • The black note head was made a little rounder, which causes a less + frantic graphic impression. + +
  • A more concise syntax for checking octaves was introduced. A note may +be followed by =quotes which indicates what its absolute +octave should be. In the following example, + +
                \relative c'' { c='' b=' d,='' }
    +     
    + +

    the d will generate a warning, because a d” is +expected, but a d' is found. + + +

  • There is a new mechanism for putting lyrics to melodies. +With this mechanism, Lyrics lines can be put melodies +individually, allowing for different melismatic sections in every +Lyrics. See input/regression/lyric-combine-new.ly. + +
  • Bar lines may now be dotted. + +
  • The documentation now has links to a wiki, where everyone can +add personal comments to the manual. + +
  • Contexts may now be changed locally for an isolated music +expression. For example, + +
                \new Voice \with {
    +               \consists "Pitch_squash_engraver"
    +            } {
    +              c'4
    +            }
    +     
    + +
  • The syntax for changing staffs has changed. The keyword +\change should now be used, e.g. + +
                \change Staff = up
    +     
    + +
  • Features of spanner contexts, like Staff, can now be changed + using \set, eg. + +
                \new Staff {
    +                 \override Staff.StaffSymbol #'line-count = #4
    +                 c'4
    +            }
    +     
    + +

    puts a quarter note C on a staff with 4 lines. + +

  • Multi measure rests are now truly centered between the +clefs/barlines of the staff, their position is independent of symbols +on the other staffs. + +
  • Collision resolution for dots in chords has been improved greatly. + +
  • Spacing following barlines was improved for widely stretched lines. + +
  • Lyric hyphens and extenders now conform to standard typesetting +practice. + +
  • Lyrics are now aligned under note heads conforming to engraving +standards. The responsible code has been rewritten, and is drastically +simpler from the previous version. To aid this rewrite, the syntactic +function of the extender line ( __ ) has been changed: it is now +attached to the lyric syllable. + +
  • When redefining a context, the associated identifier is also +updated. For example, after reading + +
               \translator {
    +                  \ScoreContext
    +                  autoBeaming = ##f
    +           }
    +     
    + +

    the definition of ScoreContext is updated to include the changed +setting. + +

  • The weight of the stafflines is now heavier at smaller staff sizes. +The font has been modified to match this look: at smaller sizes, the +font is heavier and the note heads are more rounded. + +
  • Processing scores is now done while parsing the file. New +Scheme functions give more flexibility: for example, it is now possible +interpret a score, collecting synchronized musical events in a list, and +manipulate that information using inline Scheme. For an example, see +input/no-notation/recording.ly. + +
  • Font sizes can now truly be scaled continuously: the font-size +is similar to the old font-relative-size, but may be set to +fractional values; the closest design size will be scaled to achieve +the desired size. As a side-effect, there are now no longer +limitations in using smaller fonts (eg. grace notes) at small staff +sizes. + +
  • Stem tips are now also engraved with rounded corners. + +
  • The placement of accidentals on chords and ledgered notes is improved. + +
diff --git a/Documentation/misc/announce-v2.4.html b/Documentation/misc/announce-v2.4.html new file mode 100644 index 0000000000..bdc037e061 --- /dev/null +++ b/Documentation/misc/announce-v2.4.html @@ -0,0 +1,86 @@ + + +LilyPond version 2.4 released +
+
+
+Dear music enthusiasts,
+
+
+LilyPond version 2.4 was released today!
+
+
+LilyPond is a program for making beautiful music notation.  It is
+open source/free software, and is available for all popular operating
+systems. It runs on most Unix flavors --including Linux and MacOS X--
+and MS Windows. Use it for your music too!
+
+With this release, LilyPond does not rely anymore on TeX to do titling
+and page layout, but distributes page breaks optimally to produce
+evenly spaced pages, while respecting user specified turning points.
+
+The slur formatting code has been completely rewritten, and now yields
+classical engraving quality results for most cases.
+
+In addition, version 2.4 adds fret diagrams, a safe execution mode for
+webserver use, a further simplified input format, better typography
+for ledger lines, many bugfixes and a fully revised and updated
+manual.
+
+Go and grab it at
+
+  http://lilypond.org
+
+
+
+A big thank-you goes out to our contributors:
+
+Carl Sorensen
+David Svoboda
+Guy Gascoigne-Piggford
+Heikki Junes
+Hendrik Maryns
+Kristof Bastiaensen
+Lisa Opus Goldstein
+Mats Bengtsson
+Michael Welsh Duggan
+Peter Lutek
+Werner Lemberg
+
+
+Also thanks to our bug-hunters:
+
+Antti Kaihola, Bertalan Fodor, Brian Clements, Christian Hitz,
+Christoph Ludwig, Christophe Papazian, Daniel Berjón Díez, Dave
+Phillips, David Bobroff, David Brandon, Doug Asherman, Ed Jackson,
+Heinz Stolba, Jefferson dos Santos Felix, Karl Hammar, Marco Gusy,
+Martin Norbäck, Matthias Neeracher, Maurizio Tomasi, Michael
+Kiermaier, Pascal Legris, Peter Rosenbeck, Russ Ross, Stephen Pollei,
+Thomas Scharlowski, Will Oram, Yuval Harel,
+
+
+Happy music printing,
+
+
+
+The LilyPond development team,
+
+Han-Wen Nienhuys & Jan Nieuwenhuizen
+Core development
+
+Graham Percival
+Documentation Editor
+
+Erik Sandberg
+Bugmeister
+
+Pedro Kroeger
+Build meister
+
+
diff --git a/Documentation/misc/announce-v2.6.html b/Documentation/misc/announce-v2.6.html new file mode 100644 index 0000000000..3884867d8f --- /dev/null +++ b/Documentation/misc/announce-v2.6.html @@ -0,0 +1,57 @@ + + +LilyPond version 2.6 now available for download +
+LilyPond - Music Notation for Everyone.
+
+
+
+LilyPond is a free/open source package to create beautiful music
+notation.  With version 2.6, LilyPond is now truly for everyone.
+
+- For every platform
+
+  LilyPond now installs in a snap on Windows, MacOS X, and any version
+  of Linux.  Get up and running in minutes!
+
+- For every language
+
+  Pango text formatting lets you print Unicode lyrics in your favorite
+  script and font.
+
+- For every application
+
+  Create SVG files, and edit them in Inkscape.
+
+
+
+In addition, version 2.6 adds support for
+
+ - staves starting anywhere on the page
+ - solfa notation
+ - arrowed lines
+ - better auto-beaming
+ - circled text
+ - string-number notation
+ - better ledger line formatting
+ - score separators
+ - cleaner syntax for text markup
+ - pagebreaks around titles
+ - stemlets on beams
+ - easier titles customization
+ - direct PostScript or SVG output
+ - (te)TeX no longer necessary
+ - revised manual
+ - website now translated into Dutch and French
+
+Grab it at
+
+  http://lilypond.org
+
+
diff --git a/Documentation/misc/announce-v2.8.html b/Documentation/misc/announce-v2.8.html new file mode 100644 index 0000000000..5da36b82b8 --- /dev/null +++ b/Documentation/misc/announce-v2.8.html @@ -0,0 +1,119 @@ +LilyPond 2.8 now available + +

LilyPond version 2.8 available - prettier music than ever

+ +Utrecht the Netherlands--March 21, 2006. +

+After 9 months of backbreaking hacking, the LilyPond Development Team +is proud to announce LilyPond 2.8.0, software for better looking music +notation. +

+ +The inspiration for LilyPond came when two befriended musicians got +annoyed with the bland and boring look of computer print-out. Every +musician prefers reading beautiful music, so couldn't we programmers +solve that printing problem? +

+ +LilyPond just does that: it prints music in the best traditions of +classical engraving with minimum fuss. Don't waste time on tuning +spacing, moving around symbols, or shaping slurs. Impress friends and +colleagues with sharp sheet music! + + +

New stuff

+ +Version 2.8 replaces the latest "stable" release 2.6. The newest +version adds three major typographical improvements + +
    +
  • Page Layout Options +

    + + Creating good page layout has never been easier: tune vertical + spacing per system, set the total number of systems, visualize page + parameters. + +

  • Exact proportional spacing +

    + + Algorithmic notation buffs will love this option, where mixed exotic + rhythms and nested tuplets still produce mathematically consistent + spacing. + +

  • Vastly improved formatting for ties +

    + + Get the best tied chord formatting anywhere, and if that doesn't + satisfy you, just override each offending tie configuration. +

+ +That's not all, check out +
+   
+   http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS.html
+   
+
+for all changes. + + +

Style your own pond

+ +Most of the new features have been implemented at user's requests. By +ordering custom code from the designers of LilyPond you too can get +your favorite gripe fixed. Read the sponsorship pages to learn +more. +

+Download your ready-to-run binary from +

+lilypond.org
+
+We have them for MacOS X (ppc), Windows, Linux and FreeBSD. +

+ +Happy music printing! + +

Development team

+ + +Han-Wen Nienhuys - Core development
+ +Jan Nieuwenhuizen - Core development
+Erik Sandberg - Bug Meister
+Pedro Kroger - Build Meister
+Graham Percival - Documentation Editor
+Mats Bengtsson - Support Guru
+ +

Contributors

+ +Erlend Aasland, Heikki Junes, Joe Neeman, Johannes Schindelin, Nicolas +Sceaux, Werner Lemberg, Yoshinobu Ishizaki. + +

Sponsors

+ +Aaron Mehl, Basil Crow, Bertalan Fodor, Christian Ebert, Henrik Frisk, +Jay Hamilton, Jamie Bullock, John Mandereau, D. Josiah Boothby, Kieren +MacMillan, Kris Shaffer, Mark van den Borre, Mike Rolish, +Muziekacademie Lede, Nancho Alvarez, Nicolas Sceaux, Sean Reed, Steve +Doonan, Sven Axelsson, Trent Johnston, Trevor Bača, Yoshinobu +Ishizaki, and Vicente Solsona Dellá. + +

Bug hunters and suggestions

+ +Alan Stern, Andrea Valle, Bertalan Fodor, Bob Broadus, Bruce +Fairchild, Cameron Horsburgh, Chris Sawer, Christian Ebert, Christian +Hitz, Darius Blasband, David Bobroff, David Raleigh Arnold, Donald +Axel, Don Blaheta, Dunstan Vavasour, Edward Neeman, Eduardo Vieira, +Ernesto Gancedo, François Vion, Frédéric Bron, Geoff Horton, Gianluca +D., Hans Forbrich, Hoang Nguyen, Joe Neeman, Jordi Nadal, Jukka +Akkanen, Kieren Richard MacMillan, Lambros Lambrou, Laura Conrad, +Libero Mureddu, Marcus Macauley, Mark Steinheuser, Matevž Jekovec, +Michael Kiermaier, Michael Welsh Duggan, Milan Zamazal, Nicolas +Mayencourt, Orm Finnendahl, Patrick K Welton, Paul Scott, Ralph +Little, Richard Schoeller, Robert Vlatasy, Roman Kurakin, Russell +Lang, Scott Russell, Sean Reed, Seng Liang, Steve Doonan, Steven +Weber, Sven Axelsson, Thomas Scharkowski, Thomas Bushnell BSG, Toine +Schreurs, Trent Johnston, Trevor Bača, Vicente Solsona Dellá, Vincenzo +Colonnella, Will Oram, and Wolfgang Hoffmann. diff --git a/Documentation/misc/browser-language.de.html b/Documentation/misc/browser-language.de.html new file mode 100644 index 0000000000..1909a25688 --- /dev/null +++ b/Documentation/misc/browser-language.de.html @@ -0,0 +1,141 @@ + + +

Benutzung der automatischen Sprachauswahl

+ +

+ Damit die Sprache automatisch ausgewählt wird, muss die + Standardsprache vorher im Browser festgelegt werden. + Die Einstellung hängt vom Browser ab. +

+ + +
+ +
+Mozilla/Netscape 4.x und neuer
+ +
+
+    Edit -> Preferences -> Navigator -> Languages
+
+Beachten Sie: Mit Netscape 4.x müssen Sie sich vergewissern, dass Sie die +Sprache aus den verfügbaren Wahlmöglichkeiten ausgewählt haben. Einige Leute +haben schon Probleme +gemeldet, wenn sie die Sprache von Hand eingegeben haben.
+ +
Mozilla Firefox
+ +Version 1.5 und neuer:
+Linux: +
+     Bearbeiten -> Einstellungen -> Erweitert -> Allgemein -> Sprachen bearbeiten
+
+ +Windows: +
+     Tools -> Options -> Advanced -> General -> Edit Languages
+
+Bei älteren Versionen müssen Sie zu about:config gehen und den Wert von + +intl.accept_languages ändern. + + +
Internet Explorer
+ +
Windows: +
+     Tools oder View oder Extras -> Internet Options -> (General) Languages
+
+ +
MacOS: +
+     Edit -> Preferences -> Web Browser -> Language/Fonts
+
+ +
Opera
+
Die meisten Versionen: +
+     File -> Preferences -> Languages
+
+
+
Linux/*BSD Versionen 5.x und 6.x: +
+     File -> Preferences -> Document -> Languages
+
+
+ +
Safari
+
Safari benutzt die Mac OS X Systemeinstellungen, um die bevorzugte +Sprache zu bestimmen: +
+    System preferences -> International -> Language
+
+
+
+ + + + + + +
+ +
+Das Original dieser Seite stammt von +Debian, alle Rechte vorbehalten, + + © 1997-2005 +SPI; Siehe die Lizenzbedingungen. +
+Debian is a registered trademark of Software in the Public Interest, Inc. diff --git a/Documentation/misc/browser-language.es.html b/Documentation/misc/browser-language.es.html new file mode 100644 index 0000000000..af7fe15235 --- /dev/null +++ b/Documentation/misc/browser-language.es.html @@ -0,0 +1,72 @@ + + +

Uso de la selección automática de idioma

+ +

+ Para obtener selección automática del idioma, debe indicarle al + navegador cuál es su idioma preferido. La forma de hacerlo depende + del navegador que esté utilizando. +

+ + + +
+ +
Mozilla Firefox versión 0.9 y posteriores
+
+ GNU/Linux +
+      Editar -> Preferencias -> Avanzado -> General -> Idiomas
+    
+
+
+ Microsoft Windows +
+      Herramientas -> Opciones -> General -> Idiomas
+    
+ En versiones anteriores debe ir a about:config y cambiar el valor + de intl.accept_languages. +
+ +
Mozilla / Netscape 4.x y posteriores
+
+
+      Edit -> Preferences -> Navigator -> Languages
+    
+ Nota: con Netscape 4.x debe asegurarse de seleccionar + el idioma a partir de las alternativas posibles. Algunas personas + han comunicado problemas por que escribieron el idioma a mano. +
+ +
Microsoft Internet Explorer
+
+ Microsoft Windows +
+      Herramientas (o Vista o Extras) -> Opciones de Internet -> (General) Idiomas
+    
+
+
+ MacOS +
+      Editar -> Preferencias -> Navegador Web -> Idioma/Fuentes
+    
+
+
+ +
+Esta página está tomada de +Debian, y como tal, está sujeta a + +Copyright © 1997-2005 +SPI; Consulte los términos de la licencia. +
+Debian es una marca registrada de Software in the Public Interest, Inc. diff --git a/Documentation/misc/browser-language.fr.html b/Documentation/misc/browser-language.fr.html new file mode 100644 index 0000000000..04c654ef23 --- /dev/null +++ b/Documentation/misc/browser-language.fr.html @@ -0,0 +1,79 @@ + + +

Utilisation de la sélection automatique de la langue

+ +

+ Pour obtenir la sélection automatique de la langue, vous devez + indiquer à votre navigateur quel est votre langue préférée. La + manière de le faire dépend du navigateur. +

+ +

+ NB : certaines pages n'étant pas encore + traduites, vous ne pourrez les voir qu'en anglais. +

+ + + +
+ +
Mozilla Firefox version 0.9 et suivantes
+
+ GNU/Linux +
+      Edition -> Préferences -> Général -> Langues
+    
+
+
+ Microsoft Windows +
+      Outils -> Options -> Général -> Langues
+    
+ Dans les versions plus anciennes, allez à about:config + et changez la valeur de intl.accept_languages. +
+ +
Mozilla / Netscape 4.x et suivants
+
+
+      Edition -> Préférences -> Navigateur -> Langues
+    
+ Note : avec Netscape 4.x, assurez-vous que vous sélectionnez + la langue à partir des choix disponibles. Des utilisateurs ont + signalé des problèmes parce qu'ils avaient saisi la langue + manuellement. +
+ +
Microsoft Internet Explorer
+
+ Microsoft Windows +
+      Outils (ou Affichage ou Extras) -> Options Internet -> (Général) Langues
+    
+
+
+ MacOS +
+      Edition -> Préférences -> Navigateur Web -> Langue/Police
+    
+
+
+ +
+Cette page est extraite de +Debian, et donc sous +Copyright © 1997-2005 +SPI; lisez les termes de la licence. +
+Debian est une marque déposée de Software in the Public Interest, Inc. diff --git a/Documentation/misc/browser-language.html b/Documentation/misc/browser-language.html new file mode 100644 index 0000000000..1f97652510 --- /dev/null +++ b/Documentation/misc/browser-language.html @@ -0,0 +1,72 @@ + + +

Using automatic language selection

+ +

+ To get automatic language selection, you must tell your web browser + what your preferred language is. How you can do that depends on the + browser you are using. +

+ + + +
+ +
Mozilla Firefox version 0.9 and newer
+
+ GNU/Linux +
+      Edit -> Preferences -> General -> Languages
+    
+
+
+ Microsoft Windows +
+      Tools -> Options -> General -> Languages
+    
+ In older version you have to go to about:config and change + the value of intl.accept_languages. +
+ +
Mozilla / Netscape 4.x and newer
+
+
+      Edit -> Preferences -> Navigator -> Languages
+    
+ Note: with Netscape 4.x you need to make sure you select the + language from the available choices. A number of people reported + problems because they typed in the language by hand. +
+ +
Microsoft Internet Explorer
+
+ Microsoft Windows +
+      Tools (or View or Extras) -> Internet Options -> (General) Languages
+    
+
+
+ MacOS +
+      Edit -> Preferences -> Web Browser -> Language/Fonts
+    
+
+
+ +
+This page taken from +Debian, and as such is + +Copyright © 1997-2005 +SPI; See license terms. +
+Debian is a registered trademark of Software in the Public Interest, Inc. diff --git a/Documentation/misc/browser-language.hu.html b/Documentation/misc/browser-language.hu.html new file mode 100644 index 0000000000..b4ab35d6bb --- /dev/null +++ b/Documentation/misc/browser-language.hu.html @@ -0,0 +1,242 @@ + + +

Az automatikus nyelvválasztás használata

+ +

+Ahhoz, hogy a honlap az anyanyelveden jelenjen meg, be kell állítanod alapértelmezett nyelvként a böngésződben. +Ehhez keresd meg a böngésző beállításai között a nyelvek listáját. A beállítás konkrét módja böngészőfüggő. +

+ +
+
+Mozilla +/ +Netscape 4.x + és későbbi +verziók
+
+
+   Edit -> Preferences -> Navigartor -> Languages
+
+
+Megjegyzés: Netscape 4.x esetén csak a felkínált nyelvek közül lehet +választani. Néhányan jeleztek, hogy problémák merültek fel, +amikor kézzel gépelték be a nyelvet. +
+
+Mozilla +Firefox +
+
+0.9-es verzió és annál újabb:
+Linux: +
+	Edit -> Preferences -> General -> Languages
+
+
+Windows: +
+	Tools -> Options -> General -> Languages
+
+
+1.5-ös verzió és annál újabb:
+Linux: +
+
+     Edit -> Preferences -> Advanced -> General -> Edit Languages
+
+Windows: +
+     Tools -> Options -> Advanced -> General -> Edit Languages
+
+
+A régebbi verziókban az about:config oldalon kell megváltoztatni a +intl.accept_languages értékét. +
+
+Internet +Explorer +
+
Windowson: +
+     Tools vagy View vagy Extras -> Internet Options -> (General) Languages
+
+
+
+
MacOS-en: +
+   Edit -> Preferences -> Web Browser -> Language/Fonts
+
+
+
+Pocket Internet Explorer + +
+
+
+ Hozd létre az AcceptLanguage registry kulcsot a
+ HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\
+ kulcs alatt hu; q=1.0, en; q=0.5 értékkel (az idézőjelek nélkül).
+
+
+
+Opera +
+ +
A legtöbb verzióban: +
+     File -> Preferences -> Languages
+
+
+
Linux/*BSD 5.x és 6.x verziók: +
+     File -> Preferences -> Document -> Languages
+
+
+
+
A Nokia 770 böngészője: +A /home/user/.opera/opera.ini fájl [Adv User Prefs] szekciójához add hozzá a +következő sort: +
+ HTTP Accept Language=hu;q=1.0,en;q=0.5
+
+
+
+Galeon +
+
+
+     Settings -> Preferences -> Rendering -> Languages
+
+
+
+
+Epiphany +
+
+
+ Edit -> Preferences -> Language -> Languages
+
+ +
+
+Konqueror +
+
+ Ha csak egy nyelvet akarsz beállítani, azt elegendő a KDE Control Centerben + kiválasztani (amint a #358459 + számú hibát kijavítják). +
+ Ha több nyelvet akarsz beállítani, vagy a fenti hibát akarod megkerülni, jelenleg a + ~/.kde/share/config/kio_httprc fájlba kell az alábbihoz + hasonló sort beírni: + +
+     Language=hu;q=1.0, en;q=0.5
+
+
+
+lynx +
+
Állítsd be a preferred_language változót a .lynxrc +fájlban, vagy nyomd le az 'O' billentyűt a lynxben. +

Például a következő sor kerülhet a .lynxrc-be:

+ +
+preferred_language=hu; q=1.0, en; q=0.5
+
+
+
+W3 + (emacs alapú +böngésző)
+
+
(setq url-mime-language-string "preferred_language=hu; q=1.0, en;
+q=0.5")
+vagy a testreszabó csomag használatával (URL p4.0pre.14 verziót feltételezve): +
Hypermedia -> URL -> Mime -> Mime Language String...
+ +
+
+iCab +
+
+
+     Edit -> Preferences -> Browser -> Fonts,Languages
+
+
+ +
+W3M +
+
+
+     Options (o) -> Other Behavior -> Accept-Language
+
+
+
+Safari + +
+
A Safari a MacOS X rendszerbeállításaiból állapítja meg a preferált +nyelvet: +
+    System preferences -> International -> Language
+
+
+
+ELinks +
+
A felület nyelvét a +
+
+    Setup -> Language
+
+menüpontban állíthatod be. Ezzel együtt beállítódik a weboldalak kívánt +nyelve is. Megváltoztathatod ezt az alapbeállítást az accepted languages +HTTP-változó kézi beállításával a +
+    Setup -> Options manager -> Protocols -> HTTP
+
+menüpontban. + +
+
+Netscape +3.x +
+
Add hozzá a +
+     *httpAcceptLanguage: [a nyelv kódja]
+
+sort a Netscape app-defaults fájljához vagy a ~/.Xresources-hez. +
+
+IBrowse + +
+
Menj a Preferences-be, aztán Settings, azután Network. Az "Accept +language" alatt valószínűleg egy "*" látszik alapból. Ha a "Locale" gombra +kattintasz, a kívánt nyelv állítódik be. Ha mégsem így lenne, gépeld be. Azután +nyomj "OK"-t. +
+
+Voyager +
+
Menj a Settings-be, aztán a Languages-be. Megadhatod kézzel, vagy kattints +a "Get from locale"-ra. Nyomj "OK"-t, ha kész. +
+
+ +
+Az oldal szövege a Debian megfelelő oldaláról lett kimásolva, és így a következő jogvédelem alatt áll: +
+Copyright © 1997-2009 + SPI; Lásd a licencfeltételeket
+ Debian is a registered trademark of Software in the Public Interest, Inc. \ No newline at end of file diff --git a/Documentation/misc/browser-language.ja.html b/Documentation/misc/browser-language.ja.html new file mode 100644 index 0000000000..7bdb52a4b6 --- /dev/null +++ b/Documentation/misc/browser-language.ja.html @@ -0,0 +1,85 @@ + + + +

自動言語選択について

+

+ + + + 自動言語選択を使うためには、ブラウザにどの言語を使用するのか指定しないとなりません。 + その方法はお使いのブラウザによって違います。 +

+ + + +
+ + +
Mozilla Firefox version 0.9 以上
+
+ GNU/Linux +
+
+      編集 -> 設定 -> 一般 -> 言語
+    
+
+
+ Microsoft Windows +
+      
+      ツール -> オプション -> 一般 -> 言語
+    
+ + + 古いバージョンでは、about:configを開いてintl.accept_languagesの値を変更しないとなりません。 +
+ +
Mozilla / Netscape 4.x 以上
+
+
+      
+      編集 -> 設定 -> ナヴィゲータ -> 言語
+    
+ + + + 注意:Netcape 4.xでは、選択項目から言語を選ぶ必要があります。 + それを直接入力してしまったことによるトラブルが複数寄せられています。 +
+ +
Microsoft Internet Explorer
+
+ Microsoft Windows +
+      
+      ツール -> インターネットオプション -> 全般タブ -> 言語
+    
+
+
+ MacOS +
+      
+      編集 -> 設定 -> Webブラウザ -> 言語/フォント
+    
+
+
+ +
+ +このページは +Debianに基づき、 + +Copyright © 1997-2005 +SPI; 権利については license termsを御覧下さい。 +
+ +DebianはSoftware in the Public Interest, Inc.のトレードマークです。 diff --git a/Documentation/misc/browser-language.nl.html b/Documentation/misc/browser-language.nl.html new file mode 100644 index 0000000000..75e03d64e8 --- /dev/null +++ b/Documentation/misc/browser-language.nl.html @@ -0,0 +1,76 @@ + + +

Gebruik van automatische taalkeuze

+ +

+ Voor het gebruik van automatische taalkeuze moet u uw webbrowser + vertellen wat uw voorkeurstaal is. Hoe u dat moet doen, is afhankelijk + van de browser die u gebruikt. +

+ + + +
+ +
Mozilla Firefox versie 0.9 en nieuwer
+
+ Linux +
+      Edit -> Preferences -> General -> Languages
+    
+
+
+ Microsoft Windows
+
+      Tools -> Options -> General -> Languages
+    
+ In oudere versies moet u naar about:config gaan en de + waarde van intl.accept_languages wijzigen. +
+ +
Mozilla / Netscape 4.x en nieuwer
+
+
+      Edit -> Preferences -> Navigator -> Languages
+    
+ NB: in Netscape 4.x moet u de talen uit de beschikbare opties kiezen. + Een aantal mensen hebben problemen gemeld omdat zij de taal handmatig + hadden ingetikt. +
+ +
Microsoft Internet Explorer
+
+ Microsoft Windows +
+      Extra (Tools) -> Internet-opties -> (Algemeen) Talen
+    
+
+
+ MacOS +
+      Edit -> Preferences -> Web Browser -> Language/Fonts
+    
+
+
+
+ +Deze pagina is overgenomen van +Debian, en als zodanig +Copyright © 1997-2005 +SPI; +Zie de licentievoorwaarden +
+Debian is een geregisteerd handelsmerk van Software in the Public Interest, Inc. diff --git a/Documentation/music-glossary.tely b/Documentation/music-glossary.tely index d822de1dfe..a57dffbe63 100644 --- a/Documentation/music-glossary.tely +++ b/Documentation/music-glossary.tely @@ -14,7 +14,7 @@ terms used in the documentation manuals for LilyPond version @c `Music Glossary' was born 1999-10-04 with git commit 280a0bb... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 by the authors +Copyright @copyright{} 1999--2012 by the authors @end macro @set FDL @@ -254,6 +254,7 @@ Languages in this order. * just intonation:: * key:: * key signature:: +* kievan notation:: * laissez vibrer:: * largo:: * leading note:: @@ -539,7 +540,7 @@ principal note to which it is attached. The acciaccatura is drawn as a small eighth note (quaver) with a line drawn through the flag and stem. @seealso -@ref{appoggiatura}, @ref{grace notes}, @ref{ornament}. +@ref{appoggiatura}, @ref{grace notes}, @ref{mordent}, @ref{ornament}. @node accidental @@ -1998,7 +1999,7 @@ Another name for @ref{common time}. ES: ?, I: ?, F: ?, -D: ?, +D: Kunstmusik, NL: ?, DK: ?, S: ?, @@ -2102,29 +2103,16 @@ A meter that includes a triplet subdivision within the beat: see @ref{compound meter}. @item -A time signature that additively combines two or more unequal meters, e.g., -@q{3/8 + 2/8} instead of @q{5/8}. Sometimes called additive time signatures. +A time signature that additively combines two or more unequal meters, +e.g., @q{3/8 + 2/8} instead of @q{5/8}. Sometimes called additive time +signatures. @end enumerate -@lilypond[quote,line-width=13.0\cm] -#(define ((compound-time one two three num) grob) - (grob-interpret-markup grob - (markup - #:override '(baseline-skip . 0) - #:number - #:line ( - #:left-column (one num) - #:vcenter "+" - #:left-column (two num) - #:vcenter "+" - #:left-column (three num))))) - +@lilypond[quote,verbatim] \relative c' { \key f \major - #(set-time-signature 8 8 '(3 2 3)) - \override Staff.TimeSignature #'stencil = - #(compound-time "3" "2" "3" "8") + \compoundMeter #'((3 8) (2 8) (3 8)) c8 d e f4 d8 c bes c4 g'8 e c f4. \bar "||" @@ -2132,7 +2120,9 @@ A time signature that additively combines two or more unequal meters, e.g., @end lilypond @seealso -@ref{compound meter}, @ref{meter}, @ref{polymetric time signature}. +@ref{compound meter}, +@ref{meter}, +@ref{polymetric time signature}. @node concert pitch @@ -4001,8 +3991,7 @@ Notes printed in small types to indicate that their time values are not counted in the rhythm of the bar. @seealso -@ref{acciaccatura}, @ref{appoggiatura}, @ref{grace notes}, -@ref{ornament}. +@ref{acciaccatura}, @ref{appoggiatura}, @ref{mordent}, @ref{ornament}. @node grand staff @@ -4542,6 +4531,14 @@ key of the music. @seealso @ref{accidental}. +@node kievan notation +@section kievan notation + +A form of medieval music notation used predominantly in the chantbooks +of the Russian Orthodox Church as well as Carpatho-Russian and Ukrainian +jurisdictions of Orthodoxy and Byzantine-rite Catholicism. It is +characterized by the square shape of its noteheads. + @node laissez vibrer @section laissez vibrer @@ -5544,6 +5541,7 @@ S: mordent, FI: mordent, korukuvio. @seealso +@ref{acciaccatura}, @ref{appoggiatura}, @ref{grace notes}, @ref{ornament}. @@ -5674,7 +5672,7 @@ FI: ?. @seealso @ref{acciaccatura}, @ref{appoggiatura}, @ref{grace notes}, -@ref{ornament}. +@ref{mordent}, @ref{ornament}. @node ninth @@ -5893,7 +5891,7 @@ or bracket) to indicate that the music is to be played in a different octave: For longer passages, it may be more practical to mark the octave change at the beginning with a phrase (see the list below for examples), but without a bracket or extender line. Then, when the music returns to the written pitch, the octave -change is cancelled with the word @notation{loco} (q.v.). +change is canceled with the word @notation{loco} (q.v.). To parallel the list above: @@ -6002,7 +6000,8 @@ the @emph{prall} (inverted mordent). @end lilypond @seealso -@ref{acciaccatura}, @ref{appoggiatura}, @ref{grace notes}. +@ref{acciaccatura}, @ref{appoggiatura}, @ref{grace notes}, +@ref{mordent}. @node ossia @@ -6654,7 +6653,10 @@ DK: rallentando, S: rallentando, FI: rallerdando, hidastuen. -[Italian] A performance indication, abbreviated @notation{rall.} +[Italian: @q{slowing down}] + +Slackening in speed, more gradual than @ref{ritardando}. Abbreviated +to @notation{rall.} @seealso @ref{ritardando}. @@ -6780,11 +6782,13 @@ DK: ritardando, S: ritardando, FI: ritardando, hidastuen, -Gradually slackening in speed. Mostly abbreviated to @notation{rit.} or -@notation{ritard}. +[Italian: @q{lagging}] + +Gradual slowing down, more pronounced than @ref{rallentando}. Mostly +abbreviated to @notation{rit.} or @notation{ritard}. @seealso -No cross-references. +@ref{rallentando}. @node ritenuto @@ -6842,10 +6846,8 @@ scale as roots of chords. The most important are degrees I = tonic \new Staff \relative c' { c1 d e f g a b c } - \lyrics { - << { I II III IV V VI VII I } - { T "" "" S D } >> -} + \lyrics { I II III IV V VI VII I } + \lyrics { T "" "" S D } >> @end lilypond diff --git a/Documentation/nl/GNUmakefile b/Documentation/nl/GNUmakefile index 8f0d832563..f4072b845c 100644 --- a/Documentation/nl/GNUmakefile +++ b/Documentation/nl/GNUmakefile @@ -1,11 +1,9 @@ ISOLANG = nl depth = ../.. SUBDIRS = included web learning texidocs -STEPMAKE_TEMPLATES = documentation +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root -NO_PDF_FILES = 1 - -EXTRA_DIST_FILES = web.texi +# NO_PDF_FILES = 1 include $(depth)/make/stepmake.make diff --git a/Documentation/nl/included/generating-output.itexi b/Documentation/nl/included/generating-output.itexi index 1259b05c7c..f2f5c13aac 100644 --- a/Documentation/nl/included/generating-output.itexi +++ b/Documentation/nl/included/generating-output.itexi @@ -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... diff --git a/Documentation/nl/learning.tely b/Documentation/nl/learning.tely index 89eb6e8670..d2ce06ad95 100644 --- a/Documentation/nl/learning.tely +++ b/Documentation/nl/learning.tely @@ -26,7 +26,7 @@ This file provides an introduction to LilyPond version @c `Learning Manual' was born 1999-10-10 with git commit b9abaac... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 door de auteurs. +Copyright @copyright{} 1999--2012 door de auteurs. @end macro @set FDL diff --git a/Documentation/nl/learning/common-notation.itely b/Documentation/nl/learning/common-notation.itely index d12808b24f..b5de751e9b 100644 --- a/Documentation/nl/learning/common-notation.itely +++ b/Documentation/nl/learning/common-notation.itely @@ -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' @@ -12,7 +12,7 @@ @c Translation checker: @c Translation checker committish: -@c \version "2.14.0" +@c \version "2.16.0" @ignore Tutorial guidelines: (different from policy.txt!) @@ -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 8[ ]~ 2 | -r4 8( \> 4 \!) | +r4 ~ 2 | +8[ ] \>[ ]\! | +r4 8.\p 16( 4-. ) | @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. diff --git a/Documentation/nl/learning/fundamental.itely b/Documentation/nl/learning/fundamental.itely index 05557e40cc..a91a8ca8f1 100644 --- a/Documentation/nl/learning/fundamental.itely +++ b/Documentation/nl/learning/fundamental.itely @@ -12,7 +12,7 @@ @c Translation checker: @c Translation checker committish: -@c \version "2.14.0" +@c \version "2.16.0" @node Fundamentele concepten @translationof Fundamental concepts @@ -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 4 @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 @@ -1743,7 +1736,7 @@ is specified, no error message is produced, but the expected action will not take place. For example, the @code{instrumentName} clearly lives in the @code{Staff} context, since it is the staff that is to be named. -In this example the first staff is labelled, but not the second, +In this example the first staff is labeled, but not the second, because we omitted the context name. @lilypond[quote,verbatim,ragged-right] @@ -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 - diff --git a/Documentation/nl/learning/tutorial.itely b/Documentation/nl/learning/tutorial.itely index 0b08b426b0..ad9191151c 100644 --- a/Documentation/nl/learning/tutorial.itely +++ b/Documentation/nl/learning/tutorial.itely @@ -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' @@ -13,7 +13,7 @@ @include included/generating-output.itexi -@c \version "2.14.0" +@c \version "2.16.0" @node Leerboek @translationof Tutorial @@ -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. @@ -631,7 +658,7 @@ het oplossen van problemen die je tegen zou kunnen komen. @node Algemene tips voor het oplossen van problemen @subsection Algemene tips voor het oplossen van problemen -@node General troubleshooting tips +@translationof General troubleshooting tips Het oplossen van LilyPond-problemen kan een uitdaging als je gewend bent aan een grafische gebruikers interface, omdat diff --git a/Documentation/nl/macros.itexi b/Documentation/nl/macros.itexi index a7e20d7b5f..da7ef9c801 100644 --- a/Documentation/nl/macros.itexi +++ b/Documentation/nl/macros.itexi @@ -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 +
+@end html +@strong{Advanced note:} \TEXT\ +@c keep the space for proper nesting of

+ +@html +
+@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 @@ -734,7 +764,7 @@ Voor LilyPond versie @version{} @end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/nl/search-box.ihtml b/Documentation/nl/search-box.ihtml index b28d1a7ee8..51687b7765 100644 --- a/Documentation/nl/search-box.ihtml +++ b/Documentation/nl/search-box.ihtml @@ -1,5 +1,5 @@ 8. 16 +1 c-^ e>2 4 +8. 16 @end lilypond However some notation, such as dynamics, hairpins and slurs must be @@ -75,7 +76,24 @@ attached to the chord, rather than notes within the chord, otherwise they will not print. @lilypond[verbatim,quote,relative=2] -1 \f ( ) \< \! +1 \f ( ) +\< \! +@end lilypond + +@cindex chords, empty +@cindex placeholder events + +A chord acts merely as a container for its notes, its articulations and +other attached elements. Consequently, a chord without notes inside +does not actually have a duration. Any attached articulations will +happen at the same musical time as the next following note or chord and +be combined with them (for more complex possibilities of combining such +elements, see @ref{Simultaneous expressions}): + +@lilypond[verbatim,quote,relative=2] +\grace { g8[( a b] } +<> ) \p \< -. -\markup \italic "sempre staccato" +\repeat unfold 4 { c4 e } c1\f @end lilypond @cindex relative pitch, chords @@ -130,9 +148,13 @@ enharmonic transcription of one or more pitches, @end itemize + @node Chord repetition @unnumberedsubsubsec Chord repetition +@cindex Chord, repetition +@cindex repetition, using @code{q} + In order to save typing, a shortcut can be used to repeat the preceding chord. The chord repetition symbol is @code{q}: @@ -153,16 +175,60 @@ a chord so it is possible to repeat the most recent chord even if other non-chorded notes or rests have been added since. @lilypond[verbatim,quote,relative=2] -1 c4 q2 r8 q8 +1 c'4 q2 r8 q8 | +q2 c, | @end lilypond However, the chord repetition symbol does not retain any dynamics, -articulation or ornamentation within, or attached to the previous chord. +articulation or ornamentation within, or attached to, the previous +chord. @lilypond[verbatim,quote,relative=2] -1\sfz c4 q2 r8 q8 +1\sfz c'4 q2 r8 q8 | +q2 c, | @end lilypond +To have some of them retained, the @code{\chordRepeats} function can be +be called explicitly with an extra argument specifying a list of +@var{event types} to keep unless events of that type are already +present on the @code{q} chord itself. + +@lilypond[verbatim,quote] +\relative c'' { + \chordRepeats #'(articulation-event) + { 1\sfz c'4 q2 r8 q8-. } | + q2 c, | +} +@end lilypond + +Here using @code{\chordRepeats} inside of a @code{\relative} construction +produces unexpected results: once chord events have been expanded, they +are indistinguishable from having been entered as regular chords, making +@code{\relative} assign an octave based on their current context. + +Since nested instances of @code{\relative} don't affect one another, +another @code{\relative} inside of @code{\chordRepeats} can be used for +establishing the octave relations before expanding the repeat chords. +In that case, the whole content of the inner @code{\relative} does not +affect the outer one; hence the different octave entry of the final note +in this example. + +@c Without \new Voice, implicit voice creation does the dumbest thing. +@lilypond[verbatim,quote] +\new Voice +\relative c'' { + \chordRepeats #'(articulation-event) + \relative c'' + { 1\sfz c'4 q2 r8 q8-. } | + q2 c | +} +@end lilypond + +Interactions with @code{\relative} occur only with explicit calls of +@code{\chordRepeats}: the implicit expansion at the start of typesetting +is done at a time where all instances of @code{\relative} have already +been processed. + @seealso Notation Reference: @ref{Chord notation}, @@ -196,8 +262,17 @@ a << { a4 b g } { d4 g c, } >> @end lilypond This can be useful if the simultaneous sections have identical -rhythms, but attempts to attach notes with different durations -to the same stem will cause errors. +rhythms, but attempts to attach notes with different durations to +the same stem will cause errors. Notes, articulations, and property +changes in a @emph{single} @samp{Voice} are collected and engraved in +musical order: + +@lilypond[quote,verbatim,relative=2] +4-. <>-. << c a >> << { c-. } { a s-. } >> +@end lilypond + +Multiple stems or beams or different note durations or properties at +the same musical time require the use of multiple voices. The following example shows how simultaneous expressions can generate multiple staves implicitly: @@ -207,7 +282,30 @@ generate multiple staves implicitly: << { a4 b g2 } { d4 g2 c,4 } >> @end lilypond -Here different rhythms cause no problems. +Here different rhythms cause no problems because they are +interpreted in different voices. + +@cindex collisions, clashing note columns +@cindex collisions, ignoring + +@knownissues +If notes from two or more voices, with stems in the same direction, are +placed at the same position on the staff and have no shift (or have the +same shift specified), the message: + +@example +warning: ignoring too many clashing note columns +@end example + +will appear during compilation. This message can be suppressed by: + +@example +\override NoteColumn #'ignore-collision = ##t +@end example + +However, this not only suppresses the warning but will prevent any +collision resolution whatsover and may have other unintended effects +(also see @emph{Known Issues} in @ref{Collision resolution}). @node Clusters @@ -232,7 +330,6 @@ Ordinary notes and clusters can be put together in the same staff, even simultaneously. In such a case no attempt is made to automatically avoid collisions between ordinary notes and clusters. - @seealso Music Glossary: @rglos{cluster}. @@ -245,9 +342,7 @@ Internals Reference: @rinternals{ClusterSpannerBeacon}, @rinternals{Cluster_spanner_engraver}. - @knownissues - Clusters look good only if they span at least two chords; otherwise they appear too narrow. @@ -258,6 +353,7 @@ separating rest between them. Clusters do not produce MIDI output. + @node Multiple voices @subsection Multiple voices @@ -304,7 +400,7 @@ voices in a single staff is illustrated in the following example: @noindent Here, voices are instantiated explicitly and are given names. The -@code{\voiceOne} ... @code{\voiceFour} commands set up the voices +@code{\voiceOne} @dots{} @code{\voiceFour} commands set up the voices so that first and third voices get stems up, second and fourth voices get stems down, third and fourth voice note heads are horizontally shifted, and rests in the respective voices are @@ -382,7 +478,7 @@ The first example could be typeset as follows: This syntax can be used where it does not matter that temporary voices are created and then discarded. These implicitly created voices are given the settings equivalent to the effect of the -@code{\voiceOne} ... @code{\voiceFour} commands, in the order in +@code{\voiceOne} @dots{} @code{\voiceFour} commands, in the order in which they appear in the code. In the following example, the intermediate voice has stems up, @@ -440,6 +536,9 @@ upstems, and the even-numbered voices are given downstems: >> @end lilypond +@warning{Lyrics, spanners (such as slurs, ties, hairpins etc.) cannot be +created @q{across} voices.} + @strong{@i{Identical rhythms}} In the special case that we want to typeset parallel pieces of music @@ -466,7 +565,6 @@ music do not have the same rhythm. @code{\oneVoice}. @endpredefined - @seealso Learning Manual: @rlearning{Voices contain music}, @@ -520,7 +618,6 @@ standard presentation. @code{\voiceNeutralStyle}. @endpredefined - @seealso Learning Manual: @rlearning{I'm hearing Voices}, @@ -626,7 +723,6 @@ also be merged: >> @end lilypond - The half note and eighth note at the start of the second measure are incorrectly merged because the automatic merge cannot successfully complete the merge when three or more notes line up in @@ -709,7 +805,6 @@ Notes are only merged if they have opposing stem directions (as they have, for example, in voices one and two by default or when the stems are explicitly set in opposite directions). - @predefined @code{\mergeDifferentlyDottedOn}, @code{\mergeDifferentlyDottedOff}, @@ -722,16 +817,13 @@ the stems are explicitly set in opposite directions). @code{\shiftOff}. @endpredefined - @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {additional-voices-to-avoid-collisions.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {forcing-horizontal-shift-of-notes.ly} - @seealso Music Glossary: @rglos{polyphony}. @@ -749,6 +841,18 @@ Internals Reference: @rinternals{NoteCollision}, @rinternals{RestCollision}. +@cindex collisions, ignoring + +@knownissues +Using @code{\override NoteColumn #'ignore-collision = ##t} will cause +differently headed notes in different voices to merge incorrectly. + +@lilypond[quote,relative=1,verbatim] +\mergeDifferentlyHeadedOn +<< { c16 a' b a } \\ { c,2 } >> +\override NoteColumn #'ignore-collision = ##t +<< { c16 a' b a } \\ { c,2 } >> +@end lilypond @ignore @knownissues @@ -757,6 +861,7 @@ The requirements for successfully merging different note heads that are at the same time differently dotted are not clear. @end ignore + @node Automatic part combining @unnumberedsubsubsec Automatic part combining @@ -917,13 +1022,12 @@ instrumentTwo = \relative c' { @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {combining-two-parts-on-the-same-staff.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-partcombine-texts.ly} - @seealso Music Glossary: @rglos{a due}, @@ -940,7 +1044,6 @@ Internals Reference: @rinternals{Voice}. @knownissues - 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 @@ -1085,7 +1188,6 @@ global = { } @end lilypond - @seealso Learning Manual: @rlearning{Organizing pieces with variables}. diff --git a/Documentation/notation/spacing.itely b/Documentation/notation/spacing.itely index b07668b4f6..6ca9b40ceb 100644 --- a/Documentation/notation/spacing.itely +++ b/Documentation/notation/spacing.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @ignore GDP TODO list @@ -191,74 +191,86 @@ Installed Files: @funindex \paper @menu -* Setting paper size:: +* Setting the paper size:: * Automatic scaling to paper size:: @end menu -@node Setting paper size -@unnumberedsubsubsec Setting paper size +@node Setting the paper size +@unnumberedsubsubsec Setting the paper size -Two functions are available for changing the paper size: -@code{set-default-paper-size} and @code{set-paper-size}. -@code{set-default-paper-size} must be placed in the toplevel -scope, and @code{set-paper-size} must be placed in a @code{\paper} -block: +@q{A4} is the default value when no explicit paper size is set. However, +there are two functions that can be used to change it +@code{set-default-paper-size}, @example -#(set-default-paper-size "a4") +#(set-default-paper-size "quarto") @end example +which must always be placed at the toplevel scope. and +@code{set-paper-size}, + @example \paper @{ - #(set-paper-size "a4") + #(set-paper-size "tabloid") @} @end example -@noindent -In the toplevel scope, the @code{set-default-paper-size} function -can safely be called anywhere before the first @code{\paper} -block. Within a @code{\paper} block, the safest place to call -@code{set-paper-size} is at the top, above the list of variable -declarations. The reasons for this are discussed in -@ref{Automatic scaling to paper size}. +which must always be placed in a @code{\paper} block. -@code{set-default-paper-size} sets the size of all pages, whereas -@code{set-paper-size} only sets the size of the pages that the -@code{\paper} block applies to. For example, if the @code{\paper} -block is at the top of the file, then it will apply the paper size -to all pages. If the @code{\paper} block is inside a +If the @code{set-default-paper-size} function is used in the toplevel +scope, it must come before the any @code{\paper} block. +@code{set-default-paper-size} sets the paper size for all pages, +whereas @code{set-paper-size} only sets the paper size for the pages +that the @code{\paper} block applies to. For example, if the +@code{\paper} block is at the top of the file, then it will apply the +paper size to all pages. If the @code{\paper} block is inside a @code{\book}, then the paper size will only apply to that book. -Common paper sizes are available, including @code{a4}, -@code{letter}, @code{legal}, and @code{11x17} (also known as -tabloid). Many more paper sizes are supported by default. For -details, see @file{scm/paper.scm}, and search for the -definition of @code{paper-alist}. +When the @code{set-paper-size} function is used, it must be +placed @emph{before} any other functions used within the same +@code{\paper} block. See @ref{Automatic scaling to paper size}. + +Paper sizes are defined in @file{scm/paper.scm}, and while it is +possible to add custom sizes, they will be overwritten on subsequent +software updates. The available paper sizes are listed in +@ref{Predefined paper sizes}. -@c TODO add a new appendix for paper sizes (auto-generated) -pm +@c An appendix entry exists for paper sizes but is not auto-generated + +The following command can be used in the file to add a custom paper size +which can then be used with @code{set-default-paper-size} or +@code{set-paper-size} as appropriate, + +@example +#(set! paper-alist (cons '("my size" . (cons (* 15 in) (* 3 in))) paper-alist)) -@warning{The default paper size is @code{a4}.} +\paper @{ + #(set-paper-size "my size") +@} +@end example -Extra sizes may be added by editing the definition of -@code{paper-alist} in the initialization file -@file{scm/paper.scm}, however they will be overridden on a -subsequent install. +The units @code{in} (inches), @code{cm} (centimeters) and @code{mm} +(millimeters) can all be used. -@cindex orientation -@cindex landscape +@cindex paper size, orientation +@cindex page, orientation +@cindex paper size, landscape -If the symbol @code{'landscape} is supplied as an argument to -@code{set-default-paper-size}, pages will be rotated by 90 -degrees, and wider line widths will be set accordingly. +If the symbol @code{'landscape} is added to the paper size function, +pages will be rotated by 90 degrees, and wider line widths will be set +accordingly. @example #(set-default-paper-size "a6" 'landscape) @end example +The music output will @emph{not} be rotated, just the paper size. + @seealso Notation Reference: -@ref{Automatic scaling to paper size}. +@ref{Automatic scaling to paper size}, +@ref{Predefined paper sizes}. Installed Files: @file{scm/paper.scm}. @@ -277,7 +289,7 @@ that the automatic scaling is not triggered by setting the @code{paper-width} can influence other values (this is separate from scaling and is discussed below). The @code{set-default-paper-size} and @code{set-paper-size} functions -are described in @ref{Setting paper size}. +are described in @ref{Setting the paper size}. The vertical dimensions affected by automatic scaling are @code{top-margin} and @code{bottom-margin} (see @@ -349,7 +361,7 @@ example orchestral scores. If set to false, systems will spread vertically down the last page. Pieces that amply fill two pages or more should have this -set to true. It also affects the last page of book parts, i.e. +set to false. It also affects the last page of book parts, i.e. parts of a book created with @code{\bookpart} blocks. @end table @@ -365,11 +377,13 @@ Snippets: @rlsr{Spacing}. @knownissues - The titles (from the @code{\header} block) are treated as a system, so @code{ragged-bottom} and @code{ragged-last-bottom} will add space between the titles and the first system of the score. +Explicitly defined paper-sizes will override any user-defined top or +bottom margin settings. + @node Flexible vertical spacing \paper variables @subsection Flexible vertical spacing @code{\paper} variables @@ -465,6 +479,10 @@ collisions. @end itemize +For multi-page scores with a ragged bottom on the last page, the last +page uses the same spacing as the preceding page, provided there is +enough space for that. + Specific methods for modifying alists are discussed in @ref{Modifying alists}. The following example demonstrates the two ways these alists can be modified. The first declaration @@ -672,6 +690,10 @@ Notation Reference: Installed Files: @file{ly/paper-defaults-init.ly}. +@knownissues +Explicitly defined paper-sizes will override any user-defined left or +right margin settings. + @node \paper variables for two-sided mode @unnumberedsubsubsec @code{\paper} variables for two-sided mode @@ -881,7 +903,8 @@ Notation Reference: @ref{Page breaking}, @ref{Optimal page breaking}, @ref{Optimal page turning}, -@ref{Minimal page breaking}. +@ref{Minimal page breaking}, +@ref{One-line page breaking}. Installed Files: @file{ly/paper-defaults-init.ly}. @@ -944,7 +967,7 @@ of the cover page so that page 1 is on the right hand side. The relative importance of page (vertical) spacing and line (horizontal) spacing. High values will make page spacing more -important. Default: @code{#10}. +important. Default: @code{10}. @item print-all-headers @funindex print-all-headers @@ -979,7 +1002,6 @@ sensible default, for example: @end table - @seealso Installed Files: @file{ly/titling-init.ly}. @@ -987,9 +1009,7 @@ Installed Files: Snippets: @rlsr{Spacing}. - @knownissues - The default page header puts the page number and the @code{instrument} field from the @code{\header} block on a line. @@ -1066,6 +1086,102 @@ Here is an example @code{\layout} block: @} @end example +Multiple @code{\layout} blocks can be entered as toplevel expressions. +This can, for example, be useful if different settings are stored in +separate files and included optionally. Internally, when +a @code{\layout} block is evaluated, a copy of the current +@code{\layout} configuration is made, then any changes defined within +the block are applied and the result is saved as the new current +configuration. From the user's perspective the @code{\layout} blocks +are combined, but in conflicting situations (when the same property +is changed in different blocks) the later definitions take precedence. + +For example, if this block: + +@example +\layout @{ + \context @{ + \Voice + \override TextScript #'color = #magenta + \override Glissando #'thickness = #1.5 + @} +@} +@end example + +is placed after the one from the preceding example the @code{'padding} +and @code{'color} overrides for @code{TextScript} are combined, but +the later @code{'thickness} override for @code{Glissando} replaces +(or hides) the earlier one. + +@code{\layout} blocks may be assigned to variables for reuse later, +but the way this works is slightly but significantly different from +writing them literally. + +If a variable is defined like this: + +@example +layoutVariable = \layout @{ + \context @{ + \Voice + \override NoteHead #'font-size = #4 + @} +@} +@end example + +it will hold the current @code{\layout} configuration with the +@code{NoteHead #'font-size} override added, but this combination +is @emph{not} saved as the new current configuration. Be aware +that the @q{current configuration} is read when the variable is +defined and not when it is used, so the content of the variable +is dependent on its position in the source. + +The variable can then be used inside another @code{\layout} block, +for example: + +@example +\layout @{ + \layoutVariable + \context @{ + \Voice + \override NoteHead #'color = #red + @} +@} +@end example + +A @code{\layout} block containing a variable, as in the example above, +does @emph{not} copy the current configuration but instead uses the +content of @code{\layoutVariable} as the base configuration for the +further additions. This means that any changes defined between the +definition and the use of the variable are lost. + +If @code{layoutVariable} is defined (or @code{\include}d) immediately +before being used, its content is just the current configuration plus +the overrides defined within it. So in the example above showing the +use of @code{\layoutVariable} the final @code{\layout} block would +consist of: + +@example + TextScript #'padding = #1 + TextScript #'color = #magenta + Glissando #'thickness = #1.5 + NoteHead #' font-size = #4 + NoteHead #' color = #red +@end example + +plus the @code{indent} and the @code{StaffGrouper} overrides. + +But if the variable had already been defined before the first +@code{\layout} block the current configuration would now contain +only + +@example + NoteHead #' font-size= #4 % (written in the variable definition) + NoteHead #' color = #red % (added after the use of the variable) +@end example + +If carefully planned, @code{\layout} variables can be a valuable tool +to structure the layout design of sources, and also to reset the +@code{\layout} configuration to a known state. @seealso Notation Reference: @@ -1168,7 +1284,6 @@ These fonts are available in any sizes. The context property @rinternals{StaffSymbol}) can be used to tune the size for individual staves. The sizes of individual staves are relative to the global size. - @seealso Notation Reference: @ref{Selecting notation font size}. @@ -1176,9 +1291,7 @@ Notation Reference: Snippets: @rlsr{Spacing}. - @knownissues - @code{layout-set-staff-size} does not change the distance between the staff lines. @@ -1192,6 +1305,7 @@ staff lines. * Optimal page breaking:: * Optimal page turning:: * Minimal page breaking:: +* One-line page breaking:: * Explicit breaks:: * Using an extra voice for breaks:: @end menu @@ -1317,7 +1431,6 @@ complicated. More details are available in @code{\noBreak}. @endpredefined - @seealso Notation Reference: @ref{\paper variables for line breaking}. @@ -1345,7 +1458,7 @@ inserted at top-level, between scores and top-level markups. There are also analogous settings to @code{ragged-right} and @code{ragged-last} which have the same effect on vertical spacing: @code{ragged-bottom} and @code{ragged-last-bottom}. If set to -@code{##t} the systems on all pages or just the last page +@code{#t} the systems on all pages or just the last page respectively will not be justified vertically. See @ref{Fixed vertical spacing \paper variables}. @@ -1402,7 +1515,6 @@ book parts. @code{\noPageBreak}. @endpredefined - @seealso Notation Reference: @ref{\paper variables for page breaking}. @@ -1421,7 +1533,6 @@ determining page breaks. It attempts to find a page breaking that minimizes cramping and stretching, both horizontally and vertically. Unlike @code{ly:page-turn-breaking}, it has no concept of page turns. - @seealso Snippets: @rlsr{Spacing}. @@ -1463,7 +1574,7 @@ the section. The @code{Page_turn_engraver} reads the context property @code{minimumPageTurnLength} to determine how long a note-free section must be before a page turn is considered. The default value for -@code{minimumPageTurnLength} is @code{#(ly:make-moment 1 1)}. If you want +@code{minimumPageTurnLength} is @code{(ly:make-moment 1 1)}. If you want to disable page turns, you can set it to something very large. @example @@ -1492,7 +1603,6 @@ The page turning commands, @code{\pageTurn}, @code{\noPageTurn} and @code{\allowPageTurn}, may also be used at top-level, between scores and top-level markups. - @predefined @funindex \pageTurn @code{\pageTurn}, @@ -1502,14 +1612,11 @@ top-level markups. @code{\allowPageTurn}. @endpredefined - @seealso Snippets: @rlsr{Spacing}. - @knownissues - There should only be one @code{Page_turn_engraver} in a score. If there is more than one, they will interfere with each other. @@ -1531,11 +1638,27 @@ too slow or memory demanding, or a lot of texts. It is enabled using: @} @end example - @seealso Snippets: @rlsr{Spacing}. +@node One-line page breaking +@subsection One-line page breaking + +@funindex ly:one-line-breaking + +The @code{ly:one-line-breaking} function is a special-purpose +page breaking algorithm that puts each score on its own page, +and on a single line. This page breaking function does not +typeset titles or margins; only the score will be displayed. + +The page width will be adjusted so that +the longest score fits on one line. In particular, +@code{paper-width}, @code{line-width} and @code{indent} +variables in the @code{\paper} block will be ignored, although +@code{left-margin} and @code{right-margin} will +still be honored. The height of the page will +be left unmodified. @node Explicit breaks @subsection Explicit breaks @@ -1583,7 +1706,6 @@ music = \relative c'' { c8 c c c } } @end lilypond - @seealso Snippets: @rlsr{Spacing}. @@ -1670,7 +1792,6 @@ music = \relative c'' { c4 c c c } } @end lilypond - @seealso Notation Reference: @ref{Vertical spacing}. @@ -1776,7 +1897,7 @@ follow the format @code{@var{item1}-@var{item2}-spacing}, where spaced. Note that @code{@var{item2}} is not necessarily below @code{@var{item1}}; for example, @code{nonstaff-relatedstaff-spacing} will measure upwards from the -non-staff line if @code{staff-affinity} is @code{#UP}. +non-staff line if @code{staff-affinity} is @code{UP}. Each distance is measured between the @emph{reference points} of the two items. The reference point for a staff is the vertical @@ -1815,7 +1936,7 @@ labelContext = #(define-music-function (parser location context) (string?) - #{ s1*0^\markup { \typewriter $context } #}) + #{ s1*0^\markup { \typewriter #context } #}) \layout { \context { \Dynamics \alignToZero } @@ -2031,15 +2152,15 @@ Notation Reference: @ref{Flexible vertical spacing \paper variables}, @ref{Modifying alists}. +Installed Files: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm}. + Internals Reference: @rinternals{Contexts}, @rinternals{VerticalAxisGroup}, @rinternals{StaffGrouper}. -Installed Files: -@file{ly/engraver-init.ly}, -@file{scm/define-grobs.scm}. - @node Spacing of ungrouped staves @unnumberedsubsubsec Spacing of ungrouped staves @@ -2241,7 +2362,6 @@ able to stretch much more than usual: >> @end lilypond - @seealso Installed Files: @file{ly/engraver-init.ly}, @@ -2485,7 +2605,6 @@ to print staves or systems on top of one another. Reasonable values passed to these different settings will avoid this. @end itemize - @seealso Snippets: @rlsr{Spacing}. @@ -2539,7 +2658,7 @@ The vertical padding between an outside-staff object and the previously-positioned grobs can be controlled with @code{outside-staff-padding}. -@lilypond[quote,ragged-right,relative=2,verbatim] +@lilypond[quote,ragged-right,relative=2,verbatim,staffsize=18] \once \override TextScript #'outside-staff-padding = #0 a'^"This text is placed very close to the note" \once \override TextScript #'outside-staff-padding = #3 @@ -2570,7 +2689,6 @@ c4 c''2 @end lilypond - @seealso Snippets: @rlsr{Spacing}. @@ -2633,7 +2751,7 @@ measure, the shortest duration is determined. The most common shortest duration is taken as the basis for the spacing, with the stipulation that this shortest duration should always be equal to or shorter than an 8th note. The shortest duration is printed when you run -@code{lilypond} with the @code{--verbose} option. +@code{lilypond} with the @option{--verbose} option. These durations may also be customized. If you set the @code{common-shortest-duration} in @rinternals{SpacingSpanner}, then @@ -2679,8 +2797,10 @@ once with exaggerated corrections: Proportional notation is supported; see @ref{Proportional notation}. - @seealso +Essay on automated music engraving: +@ressay{Optical spacing}. + Snippets: @rlsr{Spacing}. @@ -2690,15 +2810,11 @@ Internals Reference: @rinternals{StaffSpacing}, @rinternals{NonMusicalPaperColumn}. -Essay on automated music engraving: -@ressay{Optical spacing}. - - @knownissues - There is no convenient mechanism to manually override spacing. The following work-around may be used to insert extra space into a score, adjusting the padding value as necessary. + @example \override Score.NonMusicalPaperColumn #'padding = #10 @end example @@ -2729,7 +2845,6 @@ The @code{\newSpacingSection} command creates a new @code{SpacingSpanner} object, and hence new @code{\override}s may be used in that location. - @seealso Snippets: @rlsr{Spacing}. @@ -2821,7 +2936,6 @@ regard for clefs, bar lines, and grace notes, \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } @end lilypond - @seealso Snippets: @rlsr{Spacing}. @@ -2875,7 +2989,6 @@ paragraph, the last line simply takes its natural horizontal length. @} @end example - @seealso Snippets: @rlsr{Spacing}. @@ -2975,10 +3088,10 @@ The @code{proportionalNotationDuration} setting takes a single argument, which is the reference duration against that all music will be spaced. The LilyPond Scheme function @code{make-moment} takes two arguments -- a numerator and denominator which together express some fraction of -a whole note. The call @code{#(ly:make-moment 1 20)} therefore produces +a whole note. The call @code{(ly:make-moment 1 20)} therefore produces a reference duration of a twentieth note. Values such as -@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, and -@code{#(ly:make-moment 3 97)} are all possible as well. +@code{(ly:make-moment 1 16)}, @code{(ly:make-moment 1 8)}, and +@code{(ly:make-moment 3 97)} are all possible as well. How do we select the right reference duration to pass to @code{proportionalNotationDuration}? Usually by a process of trial @@ -3262,7 +3375,6 @@ mark both rhythmic start- and stop-points, and allow spanning elements to break across systems and pages. See the respective parts of the manual for these related settings. - @seealso Notation Reference: @ref{New spacing area}. @@ -3275,7 +3387,7 @@ Snippets: @section Fitting music onto fewer pages Sometimes you can end up with one or two staves on a second -(or third, or fourth...) page. This is annoying, especially +(or third, or fourth@dots{}) page. This is annoying, especially if you look at previous pages and it looks like there is plenty of room left on those. @@ -3337,7 +3449,6 @@ of @code{a6} paper in landscape orientation. The pairs (@var{a},@var{b}) are intervals, where @var{a} is the lower edge and @var{b} the upper edge of the interval. - @seealso Notation Reference: @ref{Setting the staff size}. @@ -3385,6 +3496,16 @@ assignment will force a layout with 10 systems. @} @end example +@item +Force the number of pages. For example, the following +assignment will force a layout with 2 pages. + +@example +\paper @{ + page-count = #2 +@} +@end example + @item Avoid (or reduce) objects that increase the vertical size of a system. For example, volta repeats (or alternate repeats) require @@ -3447,7 +3568,6 @@ block so that it applies to the whole score. @end itemize - @seealso Notation Reference: @ref{Page layout}, diff --git a/Documentation/notation/specialist.itely b/Documentation/notation/specialist.itely index d57f50fdfd..1dffdfe279 100644 --- a/Documentation/notation/specialist.itely +++ b/Documentation/notation/specialist.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Specialist notation @chapter Specialist notation diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index 514e18239f..c7d799e47a 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -7,12 +7,14 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Staff notation @section Staff notation -@lilypondfile[quote]{staff-headword.ly} +@c The line width is a bit of a hack to allow space for the +@c instrument names. +@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly} This section explains how to influence the appearance of staves, how to print scores with more than one staff, and how to add tempo @@ -116,7 +118,6 @@ notate modern Gregorian chant. It does not show bar lines. New single staff contexts may be defined. For details, see @ref{Defining new contexts}. - @seealso Music Glossary: @rglos{staff}, @@ -235,10 +236,10 @@ New staff group contexts may be defined. For details, see @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @cindex mensurstriche layout @@ -246,10 +247,9 @@ New staff group contexts may be defined. For details, see @cindex transcription of mensural music @cindex mensural music, transcription of -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} - @seealso Music Glossary: @rglos{brace}, @@ -315,10 +315,9 @@ New nested staff group contexts can be defined. For details, see @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso Notation Reference: @ref{Grouping staves}, @@ -336,6 +335,7 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. + @node Separating systems @unnumberedsubsubsec Separating systems @@ -404,125 +404,139 @@ sections are also described. @node Staff symbol @unnumberedsubsubsec Staff symbol -@cindex adjusting staff symbol -@cindex drawing staff symbol -@cindex staff symbol, setting of -@cindex staff symbol, drawing -@cindex stop staff lines -@cindex start staff lines -@cindex staff lines, amount of -@cindex staff lines, number of -@cindex staff line, thickness of -@cindex amount of staff lines -@cindex thickness of staff lines -@cindex ledger lines, setting -@cindex setting of ledger lines -@cindex spacing of ledger lines -@cindex number of staff lines - -The lines of a staff belong to the @code{StaffSymbol} grob. -@code{StaffSymbol} properties can be modified to change the -appearance of a staff, but they must be modified before the staff -is created. - -The number of staff lines may be changed. The clef position and -the position of middle C may need to be modified to fit the new -staff. For an explanation, refer to the snippet section in -@ref{Clef}. +@cindex staff symbol +@cindex staff lines, stopping and starting +@cindex staff lines, modifying +@cindex ledger lines +@cindex ledger lines, internal +@cindex ledger lines, modifying + +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff + +The @code{\stopStaff} and @code{\startStaff} commands can be used to +stop or (re)start the staff lines respectively, from being printed at +any point witin a score. @lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } +\stopStaff f4 d \startStaff g, e +f'4 d \stopStaff g, e +f'4 d \startStaff g, e +@end lilypond + +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined + +The lines of a staff belong to the @code{StaffSymbol} grob (including +ledger lines) can be modified using @code{StaffSymbol} properties, but +these modifications must be made before the staff is (re)started. + +The number of staff lines can be altered, + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-count = #2 +\startStaff g, e | + +f'4 d \stopStaff +\revert Staff.StaffSymbol #'line-count +\startStaff g, e | @end lilypond -Staff line thickness can be modified. The thickness of ledger -lines and stems are also affected, since they depend on staff line -thickness. +The position of each the staff lines can also be altered. The values +used are @emph{half} staff line spaces and the new position is relative +to the normal center line. A single staff line is printed for every +value entered so that the number of staff lines, as well as their +position in the staff, can be changed with a single override. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(1 3 5 -1 -3) +\startStaff g, e | +f'4 d \stopStaff +\override Staff.StaffSymbol #'line-positions = #'(8 6.5 -6 -8 -0.5) +\startStaff g, e +@end lilypond + +The clef position and the position of middle C may need to be adjusted +accordingly to fit the new lines. See @ref{Clef}. + +Staff line thickness can be altered. Ledger lines and note stems, by +default, are also affected. + +@lilypond[verbatim,quote,relative=2] \new Staff \with { \override StaffSymbol #'thickness = #3 } -{ e4 d c b } +{ f4 d g, e } @end lilypond -Ledger line thickness can be set independently of staff line -thickness. In the example the two numbers are factors multiplying -the staff line thickness and the staff line spacing. The two -contributions are added to give the ledger line thickness. +However, it is possible to set ledger line thickness independently of +staff lines. The two values required multiply the staff line thickness +with the staff line spacing and are then added together to give the +ledger line thickness. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol #'thickness = #2 + \override StaffSymbol #'ledger-line-thickness = #'(0.5 . 0.4) } -{ e4 d c b } +{ f'4 a, a,, f } @end lilypond -The distance between staff lines can be changed. This setting -affects the spacing of ledger lines as well. +The vertical positions of ledger lines can be altered, -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol #'ledger-positions = #'(-3 -2 -1 2 5 6) } -{ a4 b c d } +{ f'4 a, a,, f } @end lilypond -Further details about the properties of @code{StaffSymbol} can be -found in @rinternals{staff-symbol-interface}. - -@cindex stopping a staff -@cindex starting a staff -@cindex staff, starting -@cindex staff, stopping - -@funindex \startStaff -@funindex startStaff -@funindex \stopStaff -@funindex stopStaff - -Modifications to staff properties in the middle of a score can be -placed between @code{\stopStaff} and @code{\startStaff}: +Additional ledger lines can be made to appear above or below note heads +depending on the current position relative to other note heads that +also have their own ledger lines. @lilypond[verbatim,quote,relative=2] -c2 c -\stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +\new Staff \with { + \override StaffSymbol #'ledger-extra = #4 +} +{ f'4 a, d, f, } @end lilypond -@noindent -In general, @code{\startStaff} and @code{\stopStaff} can be used -to stop or start a staff in the middle of a score. +Legder lines can also be made to appear inside the staff where custom +staff lines are required. The example shows the default position of +ledger lines when the explicit @code{legder-position} is and is not set. +The @code{stopStaff} is needed in the example to revert the +@code{\override} for the whole @code{StaffSymbol}. -@lilypond[verbatim,quote,relative=2] -c4 b a2 +@lilypond[fragment,quote,relative=1] +\override Staff.StaffSymbol #'line-positions = #'(-8 0 2 4) +d4 e f g \stopStaff -b4 c d2 \startStaff -e4 d c2 +\override Staff.StaffSymbol #'ledger-positions = #'(-8 -6 (-4 -2) 0) +d4 e f g @end lilypond +The distance between staff lines can be altered. This affects ledger +line spacing as well. -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined - +@lilypond[verbatim,quote,relative=2] +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 +} +{ f'4 d, g, e, } +@end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Music Glossary: @rglos{line}, @@ -680,10 +694,9 @@ break. For more information about @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} - @seealso Music Glossary: @rglos{ossia}, @@ -790,10 +803,9 @@ hide empty staves in ancient music contexts. Similarly, @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso Music Glossary: @rglos{Frenched staff}. @@ -820,9 +832,7 @@ Internals Reference: @rinternals{VerticalAxisGroup}, @rinternals{Staff_symbol_engraver}. - @knownissues - Removing @code{Staff_symbol_engraver} also hides bar lines. If bar line visibility is forced, formatting errors may occur. In this case, use the following overrides instead of removing the @@ -837,6 +847,7 @@ For the Known issues and warnings associated with @code{\Staff \RemoveEmptyStaves} see @ref{Changing context default settings}. + @node Writing parts @subsection Writing parts @@ -863,100 +874,112 @@ and @code{ChoirStaff} contexts. The value of of @code{shortInstrumentName} is used for all succeeding staves. @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"Violin " -\set Staff.shortInstrumentName = #"Vln " -c4.. g'16 c4.. g'16 -\break -c1 +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} +{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond -Markup mode can be used to create more complicated instrument -names: +@cindex instrument names, complex + +@code{\markup} can be used to create more complex instrument names: @lilypond[verbatim,quote,relative=2] -\set Staff.instrumentName = \markup { - \column { "Clarinetti" - \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} +{ c4 c,16 d e f g2 } @end lilypond @cindex instrument names, centering -When two or more staff contexts are grouped together, the -instrument names and short instrument names are centered by -default. To center multi-line instrument names, -@code{\center-column} must be used: +When two or more staff contexts are grouped together, the instrument +names and short instrument names are centered by default. To center +multi-line instrument names, @code{\center-column} must be used: @lilypond[verbatim,quote,indent=1.5\cm,relative=2] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f + \new Staff \with { + instrumentName = #"Flute" } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet + { f2 g4 f } + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" } \line { "in B" \smaller \flat } } - c4 b c2 } + { c4 b c2 } >> @end lilypond @funindex indent @funindex short-indent -However, if the instrument names are longer, the instrument names -in a staff group may not be centered unless the @code{indent} and -@code{short-indent} settings are increased. For details about -these settings, see @ref{\paper variables for shifts and indents}. +However, if the instrument names are longer, the instrument names in a +staff group may not be centered unless the @code{indent} and +@code{short-indent} settings are increased. For details about these +settings, see @ref{\paper variables for shifts and indents}. @lilypond[verbatim,quote,ragged-right] +\relative c'' { + << + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } + { + f2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } + { + c,4 b c2 \break + c2 b4 c + } + >> +} + \layout { indent = 3.0\cm short-indent = 1.5\cm } - -\relative c'' << - \new Staff { - \set Staff.instrumentName = #"Alto Flute in G" - \set Staff.shortInstrumentName = #"Fl." - f2 g4 f \break - g4 f g2 - } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break - c2 b4 c - } ->> @end lilypond @cindex instrument names, adding to other contexts -To add instrument names to other contexts (such as -@code{ChordNames} or @code{FiguredBass}), -@code{Instrument_name_engraver} must be added to that context. -For details, see @ref{Modifying context plug-ins}. +To add instrument names to other contexts (such as @code{ChordNames} or +@code{FiguredBass}), @code{Instrument_name_engraver} must be added to +that context. For details, see @ref{Modifying context plug-ins}. @cindex instrument names, changing @cindex changing instrument names -Instrument names may be changed in the middle of a piece. -However, remember that @code{instrumentName} will not be -displayed in the middle of the piece, as it only appears -on the first staff: +The @code{shortInstrumentName} may be changed in the middle of a piece. +However, only the first instance of @code{instrumentName} will be +printed and subsequent changes will be ignored: @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"First" -\set Staff.shortInstrumentName = #"one" -c1 c c c \break -c1 c c c \break -\set Staff.instrumentName = #"Second" -\set Staff.shortInstrumentName = #"two" -c1 c c c \break -c1 c c c \break +\new Staff \with { + instrumentName = #"Flute" + shortInstrumentName = #"Flt." +} +{ + c1 c c c \break + c1 c c c \break + \set Staff.instrumentName = #"Clarinet" + \set Staff.shortInstrumentName = #"Clt." + c1 c c c \break + c1 c c c \break +} @end lilypond @cindex instrument switch @@ -1001,7 +1024,6 @@ expression to declare the instrument switch: } @end lilypond - @seealso Notation Reference: @ref{\paper variables for shifts and indents}, @@ -1113,6 +1135,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,28 +1176,14 @@ 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}, @ref{Using tags}. +Installed Files: +@file{scm/define-event-classes.scm}. + Snippets: @rlsr{Staff notation}. @@ -1174,25 +1192,13 @@ Internals Reference: @rinternals{QuoteMusic}, @rinternals{Voice}. -Installed Files: -@file{scm/define-event-classes.scm}. - - @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 if the music +expression contains @code{\new} or @code{\context Voice} +statements, their contents will not be quoted. Quoting grace notes +is unsupported and may cause LilyPond to crash whereas quoting nested +triplets may result in poor notation. @node Formatting cue notes @@ -1234,7 +1240,7 @@ d,4 r a r 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} +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. @@ -1264,7 +1270,7 @@ d,,4 r a r 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 +@code{\cueDuringWithClef} commands can be used. These are more specialized form of @code{\quoteDuring}, see @ref{Quoting other voices} in the previous section. @@ -1281,10 +1287,10 @@ and @end example The music from the corresponding measures of the @code{@var{quote name}} -is added as @code{CueVoice} context and occurs simultaneously with the -@code{@var{music}}, which creates a polyphonic situation. The +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 first and second voices respectively determining how +corresponds to the first and second voices respectively, determining how the cue notes are printed in relation to the other voice. @lilypond[verbatim,quote] @@ -1294,7 +1300,7 @@ fluteNotes = \relative c'' { oboeNotes = \relative c'' { R1 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } g2 c, } @@ -1307,23 +1313,26 @@ oboeNotes = \relative c'' { @end lilypond @noindent -In the above example, the @code{Voice} context had to be -explicitly declared, or else the entire music expression would -belong to the @code{CueVoice} context. + It is possible to adjust which aspects of the music are quoted with @code{\cueDuring} by setting the @code{quotedCueEventTypes} -property. Its default value is @code{#'(note-event rest-event +property. Its default value is @code{'(note-event rest-event tie-event beam-event tuplet-span-event)}, which means that only notes, rests, ties, beams and tuplets are quoted, but not articulations, dynamic marks, markup etc. +@warning{When a @code{Voice} starts with @code{\cueDuring}, as in the +following example, the @code{Voice} context must be explicitly declared, +or else the entire music expression would belong to the @code{CueVoice} +context.} + @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 @@ -1334,9 +1343,13 @@ oboe = \relative c'' { } @end lilypond -Markup can be used to show the name of the quoted instrument. Also, -if the cue notes require a change in clef, the original clef should -be restored at the end of the cue notes. +The name of the instrument playing the cue can be printed by setting +the @code{instrumentCueName} property in a temporary @code{CueVoice} +context. The placement and style of the @code{instrumentCueName} is +controlled by the @code{\instrumentSwitch} object, see +@ref{Instrument names}. If the cue notes require a change in clef, +this can be done manually but the original clef should also be +restored manually at the end of the cue notes. @lilypond[verbatim,quote] fluteNotes = \relative c'' { @@ -1347,7 +1360,7 @@ bassoonNotes = \relative c { \clef bass R1 \clef treble - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } \clef bass g4. b8 d2 @@ -1360,20 +1373,10 @@ bassoonNotes = \relative c { } @end lilypond -@cindex removing cues -@cindex removing cue notes -@cindex cue notes, removing - -@funindex \killCues -@funindex killCues - -The @code{\killCues} command removes cue notes from a music -expression, so the same music expression can be used to produce -the instrument part with cues and the score. The @code{\killCues} -command removes only the notes and events that were quoted by -@code{\cueDuring}. Other markup associated with cues, such as clef -changes and a label identifying the source instrument, can be -tagged for selective inclusion in the score; see @ref{Using tags}. +Alternatively, the @code{\cueDuringWithClef} function can be used +instead. This command takes an extra argument to specify the change of +clef that needs to be printed for the cue notes but will automatically +print the original clef once the cue notes have finished. @lilypond[verbatim,quote] fluteNotes = \relative c'' { @@ -1383,12 +1386,8 @@ fluteNotes = \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 + \new CueVoice { \set instrumentCueName = "flute" } + \cueDuringWithClef #"flute" #UP #"treble" { R1 } g4. b8 d2 } @@ -1397,21 +1396,8 @@ bassoonNotes = \relative c { \new Staff { \bassoonNotes } -\new StaffGroup << - \new Staff { - \fluteNotes - } - \new Staff { - \removeWithTag #'part { \killCues { \bassoonNotes } } - } ->> @end lilypond -Alternatively, Clef changes and instrument labels can be -collected into an instrument definition for repeated use, using -@code{\addInstrumentDefinition} described in -@ref{Instrument names}. - @funindex \transposedCueDuring @funindex transposedCueDuring @@ -1427,7 +1413,7 @@ represent the sound of a concert middle C. This is useful for taking cues from an instrument in a completely different register. @lilypond[verbatim,quote] -piccolo = \relative c''' { +piccoloNotes = \relative c''' { \clef "treble^8" R1 c8 c c e g2 @@ -1442,10 +1428,10 @@ bassClarinetNotes = \relative c' { d4 r a r } -\addQuote "piccolo" { \piccolo } +\addQuote "piccolo" { \piccoloNotes } << - \new Staff \piccolo + \new Staff \piccoloNotes \new Staff \bassClarinetNotes >> @end lilypond @@ -1476,7 +1462,7 @@ bassoonNotes = \relative c { R1 \tag #'part { \clef treble - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } } \cueDuring #"flute" #UP { R1 } \tag #'part \clef bass @@ -1503,12 +1489,12 @@ Alternatively, Clef changes and instrument labels can be collected into an instrument definition for repeated use, using @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}. @@ -1519,9 +1505,10 @@ Internals Reference: @rinternals{CueVoice}, @rinternals{Voice}. - @knownissues - Collisions can occur with rests, when using @code{\cueDuring}, -between @code{Voice} and @code{CueVoice} contexts. +between @code{Voice} and @code{CueVoice} contexts. When using +@code{\cueDuringWithClef} or @code{\transposedCueDuring} the extra +argument required for each case must come after the quote and the +direction. diff --git a/Documentation/notation/text.itely b/Documentation/notation/text.itely index d9ee4c52e5..7b056dbdbd 100644 --- a/Documentation/notation/text.itely +++ b/Documentation/notation/text.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Text @section Text @@ -98,7 +98,6 @@ articulations, see @rlearning{Placement of objects}. @code{\textLengthOff}. @endpredefined - @seealso Learning Manual: @rlearning{Placement of objects}. @@ -114,13 +113,11 @@ Snippets: Internals Reference: @rinternals{TextScript}. - @cindex text outside margin @cindex margin, text running over @cindex text, keeping inside margin @cindex lyrics, keeping inside margin - @knownissues Checking to make sure that text scripts and lyrics are within the margins requires additonal calculations. In cases where slightly faster @@ -186,10 +183,10 @@ LilyPond is only able to handle one text spanner per voice. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-text-spanner-postfix.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-custom-text-spanner-postfix.ly} @seealso @@ -274,16 +271,15 @@ c c @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-at-the-end-of-a-line.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {aligning-marks-with-various-notation-objects.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {printing-marks-on-every-staff.ly} - @seealso Notation Reference: @ref{Rehearsal marks}, @@ -348,21 +344,20 @@ requires, are described in @ref{Multi-page markup}. @funindex \markup @funindex markup -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @predefined @code{\markup}, -@code{\markuplines}. +@code{\markuplist}. @endpredefined @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {stand-alone-two-column-markup.ly} - @seealso Notation Reference: @ref{Formatting text}, @@ -441,7 +436,7 @@ c A @code{\markup} block may also contain quoted text strings. Such strings are treated as minimal text expressions, and therefore any -markup command or special character (such as @code{\} and @code{#}) +markup command or special character (such as @code{\} and@tie{}@code{#}) will be printed verbatim without affecting the formatting of the text. Double quotation marks themselves may be printed by preceding them with backslashes. @@ -482,7 +477,6 @@ allegro = \markup { \bold \large Allegro } An exhaustive list of @code{\markup}-specific commands can be found in @ref{Text markup commands}. - @seealso Notation Reference: @ref{Text markup commands}. @@ -493,7 +487,6 @@ Snippets: Installed Files: @file{scm/markup.scm}. - @knownissues Syntax errors for markup mode can be confusing. @@ -527,6 +520,7 @@ f1 d2 r @cindex font size @cindex text size +@funindex \abs-fontsize @funindex \fontsize @funindex fontsize @funindex \smaller @@ -536,38 +530,41 @@ f1 d2 r @funindex \magnify @funindex magnify -The size of the characters can also be altered in different ways: -@itemize -@item -the font size can be set to predefined standard sizes, +The font size can be altered, relative to the global staff size, in a +number of different ways -@item -the font size can be set to an absolute value, +It can be set to predefined size, -@item -the font size can also be changed relatively to its previous value. -@end itemize +@lilypond[quote,verbatim,relative=2] +b1_\markup { \huge Sinfonia } +b1^\markup { \teeny da } +b1-\markup { \normalsize camera } +@end lilypond -@noindent -The following example demonstrates these three methods: +It can be set relative to its previous value, -@lilypond[quote,verbatim,relative=1] -f1_\markup { - \tiny espressivo - \large e - \normalsize intenso -} -a^\markup { - \fontsize #5 Sinfonia - \fontsize #2 da - \fontsize #3 camera -} -bes^\markup { (con - \larger grande - \smaller emozione - \magnify #0.6 { e sentimento } ) -} -d c2 r8 c bes a g1 +@lilypond[quote,verbatim,relative=2] +b1_\markup { \larger Sinfonia } +b1^\markup { \smaller da } +b1-\markup { \magnify #0.6 camera } +@end lilypond + +It can be increased or decreased relative to the value set by the +global staff size, + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \fontsize #-2 Sinfonia } +b1^\markup { \fontsize #1 da } +b1-\markup { \fontsize #3 camera } +@end lilypond + +It can also be set to a fixed point-size, regardless of the global staff +size, + +@lilypond[quote,verbatim,relative=2] +b1_\markup { \abs-fontsize #20 Sinfonia } +b1^\markup { \abs-fontsize #8 da } +b1-\markup { \abs-fontsize #14 camera } @end lilypond @cindex subscript @@ -577,6 +574,8 @@ d c2 r8 c bes a g1 @funindex super @funindex \sub @funindex sub +@funindex \normal-size-super +@funindex normal-size-super Text may be printed as subscript or superscript. By default these are printed in a smaller size, but a normal size can be used as well: @@ -671,7 +670,6 @@ Defining custom font sets is also possible, as explained in @code{\larger}. @endpredefined - @seealso Notation Reference: @ref{Font}, @@ -679,15 +677,15 @@ Notation Reference: @ref{Manual repeat marks}, @ref{Fonts}. +Installed Files: +@file{scm/define-markup-commands.scm}. + Snippets: @rlsr{Text}. Internals Reference: @rinternals{TextScript}. -Installed Files: -@file{scm/define-markup-commands.scm}. - @knownissues Using the font sizing commands @code{\teeny}, @code{\tiny}, @code{\small}, @code{\normalsize}, @code{\large}, and @@ -933,7 +931,6 @@ as shown in the following example. An exhaustive list of text alignment commands can be found in @ref{Align}. - @seealso Learning Manual: @rlearning{Moving objects}. @@ -942,15 +939,15 @@ Notation Reference: @ref{Align}, @ref{Text marks}. +Installed Files: +@file{scm/define-markup-commands.scm}. + Snippets: @rlsr{Text}. Internals Reference: @rinternals{TextScript}. -Installed Files: -@file{scm/define-markup-commands.scm}. - @node Graphic notation inside markup @unnumberedsubsubsec Graphic notation inside markup @@ -1117,23 +1114,22 @@ c An exhaustive list of graphics-specific commands can be found in @ref{Graphic}. - @seealso Notation Reference: @ref{Graphic}, @ref{Editorial annotations}, @ref{Align}. +Installed Files: +@file{scm/define-markup-commands.scm}, +@file{scm/stencil.scm}. + Snippets: @rlsr{Text}. Internals Reference: @rinternals{TextScript}. -Installed Files: -@file{scm/define-markup-commands.scm}, -@file{scm/stencil.scm}. - @node Music notation inside markup @unnumberedsubsubsec Music notation inside markup @@ -1250,24 +1246,23 @@ c d e f An exhaustive list of music notation related commands can be found in @ref{Music}. - @seealso Notation Reference: @ref{Music}, @ref{The Feta font}, @ref{Fonts explained}. +Installed Files: +@file{scm/define-markup-commands.scm}, +@file{scm/fret-diagrams.scm}, +@file{scm/harp-pedals.scm}. + Snippets: @rlsr{Text}. Internals Reference: @rinternals{TextScript}. -Installed Files: -@file{scm/define-markup-commands.scm}, -@file{scm/fret-diagrams.scm}, -@file{scm/harp-pedals.scm}. - @node Multi-page markup @unnumberedsubsubsec Multi-page markup @@ -1277,8 +1272,8 @@ Installed Files: @cindex markup text, multi-page @cindex text spread over multiple pages -@funindex \markuplines -@funindex markuplines +@funindex \markuplist +@funindex markuplist @funindex \justified-lines @funindex justified-lines @funindex \wordwrap-lines @@ -1289,7 +1284,7 @@ makes it possible to enter lines of text that can spread over multiple pages: @lilypond[quote,verbatim] -\markuplines { +\markuplist { \justified-lines { A very long text of justified lines. ... @@ -1315,29 +1310,27 @@ a list of markup lists. An exhaustive list of markup list commands can be found in @ref{Text markup list commands}. - @seealso Notation Reference: -@ref{Text markup list commands}, - -Snippets: -@rlsr{Text}. +@ref{Text markup list commands}. -Extending: +Extending LilyPond: @rextend{New markup list command definition}. -Internals Reference: -@rinternals{TextScript}. - Installed Files: @file{scm/define-markup-commands.scm}. +Snippets: +@rlsr{Text}. -@funindex \markuplines -@funindex markuplines +Internals Reference: +@rinternals{TextScript}. + +@funindex \markuplist +@funindex markuplist @predefined -@code{\markuplines}. +@code{\markuplist}. @endpredefined @@ -1450,7 +1443,6 @@ Although it is easy to switch between preconfigured fonts, it is also possible to use other fonts, as explained in the following sections: @ref{Single entry fonts} and @ref{Entire document fonts}. - @seealso Notation Reference: @ref{The Feta font}, @@ -1491,7 +1483,6 @@ operating system: lilypond -dshow-available-fonts x @end example - @seealso Notation Reference: @ref{Fonts explained}, @@ -1539,7 +1530,6 @@ explanation of fonts, see @ref{Fonts explained}. @c we don't do Helvetica / Courier, since GS incorrectly loads @c Apple TTF fonts - @seealso Notation Reference: @ref{Fonts explained}, diff --git a/Documentation/notation/unfretted-strings.itely b/Documentation/notation/unfretted-strings.itely index 76bf1ceb79..a112331f14 100644 --- a/Documentation/notation/unfretted-strings.itely +++ b/Documentation/notation/unfretted-strings.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Unfretted string instruments @section Unfretted string instruments @@ -65,7 +65,6 @@ added, see @ref{Arpeggio}. @end itemize - @seealso Learning Manual: @rlearning{String quartet}. @@ -120,7 +119,6 @@ a2^\markup { \small "sul A" } @code{\open}. @endpredefined - @seealso Notation Reference: @ref{Articulations and ornamentations}, @@ -189,7 +187,6 @@ dots are required. chord construct even if there is only a single note. Normally @code{@bs{}harmonicsOn} would be used in this situation.} - @seealso Music Glossary: @rglos{harmonics}. diff --git a/Documentation/notation/vocal.itely b/Documentation/notation/vocal.itely index b8f13106e3..0f315c340a 100644 --- a/Documentation/notation/vocal.itely +++ b/Documentation/notation/vocal.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Vocal music @section Vocal music @@ -91,6 +91,7 @@ Notation Reference: Snippets: @rlsr{Vocal music}. + @node Entering lyrics @unnumberedsubsubsec Entering lyrics @@ -171,7 +172,7 @@ Punctuation, lyrics with accented characters, characters from non-English languages, or special characters (such as the heart symbol or slanted quotes), may simply be inserted directly into the input file, providing it is saved with UTF-8 encoding. -For more information, see @ref{Text encoding}. +For more information, see @ref{Special characters}. @lilypond[quote,verbatim] \relative c'' { d8 c16 a bes8 f e' d c4 } @@ -204,7 +205,7 @@ options, see @ref{Formatting text}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {formatting-lyrics-syllables.ly} @@ -218,13 +219,14 @@ Notation Reference: @ref{Formatting text}, @ref{Input modes}, @ref{Manual syllable durations}, -@ref{Text encoding}. +@ref{Special characters}. Internals Reference: @rinternals{LyricText}. Snippets: -@rlsr{Text} +@rlsr{Text}. + @node Aligning lyrics to a melody @unnumberedsubsubsec Aligning lyrics to a melody @@ -339,7 +341,7 @@ Learning Manual: Notation Reference: @ref{Contexts explained}, -@ref{Automatic syllable durations}. +@ref{Automatic syllable durations}, @ref{Stanzas}, @ref{Manual syllable durations}, @ref{Dialogue over music}, @@ -348,6 +350,7 @@ Notation Reference: Internals Reference: @rinternals{Lyrics}. + @node Automatic syllable durations @unnumberedsubsubsec Automatic syllable durations @@ -513,6 +516,7 @@ Notation Reference: @ref{Keeping contexts alive}, @ref{Placing lyrics vertically}. + @node Manual syllable durations @unnumberedsubsubsec Manual syllable durations @@ -609,25 +613,18 @@ Internals Reference: In order to assign more than one syllable to a single note with spaces between the syllables, you can surround the phrase with quotes or use a @code{_} character. Alternatively, you can use -code the tilde symbol (@code{~}) to get a lyric tie. The lyric -tie is implemented with the Unicode character U+203F, so be -sure to use a font for this glyph which actually contains it. -Freely available fonts with a lyric tie are, for example, -`FreeSerif' (a Times clone), `DejaVuSans' (but not -`DejaVuSerif'), or `TeXGyreSchola' (a Century Schoolbook -clone). +the tilde symbol (@code{~}) to get a lyric tie. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran- de_a- mi- go } - \addlyrics { pu- "ro y ho-" nes- to } - \addlyrics { pu- ro~y~ho- nes- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond - @seealso Internals Reference: @rinternals{LyricCombineMusic}. @@ -650,7 +647,7 @@ left-aligned with the first note of the melisma. When a melisma occurs on a syllable other that the last one in a word, that syllable is usually joined to the following one with a hyphenated line. This is indicated by placing a double hyphen, -@code{--}, immediately after the syllable. +@w{@code{--}}, immediately after the syllable. Alternatively, when a melisma occurs on the last or only syllable in a word an extender line is usually drawn from the end of the syllable @@ -697,6 +694,8 @@ entering lyrics: >> @end lilypond +Note that phrasing slurs do not affect the creation of melismata. + @item Notes are considered a melisma if they are manually beamed, providing automatic beaming is switched off. See @@ -739,9 +738,6 @@ are bracketed between @code{\melisma} and @code{\melismaEnd}. >> @end lilypond -Note that this method cannot be used to indicate two melismata if -the first one is immediately followed by another. - @item A melisma can be defined entirely in the lyrics by entering a single underscore character, @code{_}, for every extra note that has @@ -833,7 +829,6 @@ Internals Reference: @rinternals{Tunable context properties}. @knownissues - Extender lines under melismata are not created automatically; they must be inserted manually with a double underscore. @@ -874,7 +869,6 @@ distance between two syllables) and the @code{minimum-length} (threshold below which hyphens are removed) properties of @code{LyricHyphen}. - @seealso Internals Reference: @rinternals{LyricExtender}, @@ -968,7 +962,6 @@ contraltoWords = \lyricmode { Con -- tral -- to words } } @end lilypond - @seealso Notation Reference: @ref{Placing lyrics vertically}. @@ -1097,17 +1090,18 @@ elaborating these examples, or by examining the @rlearning{Vocal ensembles} templates in the Learning Manual. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{lyrics-old-spacing-settings.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{obtaining-2.12-lyrics-spacing-in-newer-versions.ly} @seealso Learning Manual: @rlearning{Vocal ensembles}. Notation Reference: -@ref{Aligning contexts}, +@ref{Context layout order}, @ref{Creating contexts}. + @node Placing syllables horizontally @unnumberedsubsubsec Placing syllables horizontally @@ -1153,7 +1147,7 @@ To make this change for all lyrics in the score, set the property in the @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {lyrics-alignment.ly} @c TODO: move to LSR -vv @@ -1179,18 +1173,6 @@ To make lyrics avoid bar lines as well, use @} @end example -@c TODO Create and add lsr example of lyricMelismaAlignment -@c It's used like this to center-align all lyric syllables, -@c even when notes are tied. -td - -@ignore -\layout -{ - \context { \Score lyricMelismaAlignment = #0 } -} -@end ignore - - @node Lyrics and repeats @unnumberedsubsubsec Lyrics and repeats @@ -1341,6 +1323,54 @@ More verses may be added in a similar way: } @end lilypond +@cindex alignBelowContext +@funindex alignBelowContext + +However, if this construct is embedded within a multi-staved +context such as a @code{ChoirStaff} the lyrics of the second and +third verses will appear beneath the bottom staff. + +To position them correctly use @code{alignBelowContext}: + +@lilypond[verbatim,quote] +\score { + << + \new Staff { + \new Voice = "melody" { + \relative c'' { + a4 a a a + \repeat volta 3 { b4 b b b } + c4 c c c + } + } + } + \new Lyrics = "firstVerse" \lyricsto "melody" { + Not re -- peat -- ed. + << + { The first time words. } + \new Lyrics = "secondVerse" + \with { alignBelowContext = #"firstVerse" } { + \set associatedVoice = "melody" + Sec -- ond time words. + } + \new Lyrics = "thirdVerse" + \with { alignBelowContext = #"secondVerse" } { + \set associatedVoice = "melody" + The third time words. + } + >> + The end sec -- tion. + } + \new Voice = "harmony" { + \relative c' { + f4 f f f \repeat volta 2 { g8 g g4 g2 } a4 a8. a16 a2 + } + } + >> +} +@end lilypond + + @c TODO positioning a common line of lyrics @@ -1959,7 +1989,7 @@ output in LilyPond. @lilypond[ragged-right,quote,verbatim] melody = \relative c' { - c c c c | d d d d + c4 c c c | d d d d } text = \lyricmode { @@ -1978,7 +2008,7 @@ text = \lyricmode { \markup { \fill-line { \hspace #0.1 % moves the column off the left margin; - % can be removed if space on the page is tight + % can be removed if space on the page is tight \column { \line { \bold "2." \column { @@ -1986,7 +2016,7 @@ text = \lyricmode { "It has two lines." } } - \hspace #0.1 % adds vertical spacing between verses + \vspace #0.1 % adds vertical spacing between verses \line { \bold "3." \column { "This is verse three." @@ -1994,17 +2024,15 @@ text = \lyricmode { } } } - \hspace #0.1 % adds horizontal spacing between columns; - % if they are still too close, add more " " pairs - % until the result looks good - \column { + \hspace #0.1 % adds horizontal spacing between columns; + \column { \line { \bold "4." \column { "This is verse four." "It has two lines." } } - \hspace #0.1 % adds vertical spacing between verses + \vspace #0.1 % adds vertical spacing between verses \line { \bold "5." \column { "This is verse five." @@ -2013,7 +2041,7 @@ text = \lyricmode { } } \hspace #0.1 % gives some extra space on the right margin; - % can be removed if page space is tight + % can be removed if page space is tight } } @end lilypond @@ -2093,6 +2121,7 @@ Notation Reference: Snippets: @rlsr{Vocal music}. + @node Lead sheets @unnumberedsubsubsec Lead sheets @@ -2100,7 +2129,7 @@ Lead sheets may be printed by combining vocal parts and @q{chord mode}; this syntax is explained in @ref{Chord notation}. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {simple-lead-sheet.ly} @seealso @@ -2194,6 +2223,7 @@ Internals Reference: @rinternals{Lyrics}, @rinternals{PianoStaff}. + @node Score layouts for choral @unnumberedsubsubsec Score layouts for choral @@ -2289,7 +2319,7 @@ Internals Reference: @cindex voices, divided -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-arpeggiobracket-to-make-divisi-more-visible.ly} @seealso @@ -2378,10 +2408,10 @@ For details of other page formatting properties, see @ref{Page layout}. @item -Dialogue cues and stage directions can be inserted with markup. -See @ref{Text}. Extensive stage directions can be inserted with -a section of stand-alone markup between two @code{\score} blocks. -See @ref{Separate text}. +Dialogue cues, stage directions and footnotes can be inserted, see +@ref{Creating footnotes} and @ref{Text}. Extensive stage directions +can also be added with a section of stand-alone markups between two +@code{\score} blocks, see @ref{Separate text}. @end itemize @@ -2392,6 +2422,7 @@ Musical Glossary: @rglos{transposing instrument}. Notation Reference: +@ref{Creating footnotes}, @ref{Grouping staves}, @ref{Hiding staves}, @ref{Instrument transpositions}, @@ -2504,6 +2535,7 @@ Notation Reference: Extending LilyPond: @rextend{Markup construction in Scheme}. + @node Musical cues @unnumberedsubsubsec Musical cues @@ -2535,7 +2567,10 @@ pianoRH = \relative c'' { c4. g8 % position name of cue-ing instrument just before the cue notes, % and above the staff - s1*0^\markup { \right-align { \tiny "Flute" } } + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \set instrumentCueName = "Flute" + } \cueDuring "flute" #UP { g4 bes4 } } pianoLH = \relative c { c4 e, } @@ -2557,7 +2592,7 @@ If a transposing instrument is being quoted the instrument part should specify its key so the conversion of its cue notes will be done automatically. The example below shows this transposition for a B-flat clarinet. The notes in this example are low on the staff so -@code{#DOWN} is specified in @code{\cueDuring} (so the stems are +@code{DOWN} is specified in @code{\cueDuring} (so the stems are down) and the instrument name is positioned below the staff. Note also that the piano right-hand voice is explicitly declared. This is because the cue notes in this example begin at the start of the @@ -2574,7 +2609,11 @@ clarinet = \relative c' { pianoRH = \relative c'' { \transposition c' % position name of cue-ing instrument below the staff - s1*0_\markup { \right-align { \tiny "Clar." } } + \new CueVoice { + \override InstrumentSwitch #'self-alignment-X = #RIGHT + \override InstrumentSwitch #'direction = #DOWN + \set instrumentCueName = "Clar." + } \cueDuring "clarinet" #DOWN { c4. g8 } g4 bes4 } @@ -2604,7 +2643,7 @@ possible to define a music function to reduce the amount of typing and to make the piano notes clearer. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {adding-orchestral-cues-to-a-vocal-score.ly} @seealso @@ -3025,7 +3064,7 @@ of the following snippets. @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {chant-or-psalms-notation.ly} Canticles and other liturgical texts may be set more freely, and @@ -3034,7 +3073,7 @@ are shown underneath and aligned with the notes. If so, the notes are spaced in accordance with the syllables rather than the notes' durations. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {ancient-notation-template----modern-transcription-of-gregorian-music.ly} @seealso @@ -3219,7 +3258,7 @@ with a line of text. This requires a @code{\partial} command at the start of the music and @code{\bar "|"} or @code{\bar "||"} commands at the end of each line. -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {hymn-template.ly} diff --git a/Documentation/notation/wind.itely b/Documentation/notation/wind.itely index 9a86ca6d67..dfb0d585ff 100644 --- a/Documentation/notation/wind.itely +++ b/Documentation/notation/wind.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Wind instruments @section Wind instruments @@ -80,10 +80,9 @@ See @ref{Articulations and ornamentations}. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing--flageolet-mark-size.ly} - @seealso Notation Reference: @ref{Breath marks}, @@ -113,14 +112,13 @@ Woodwind diagrams can be produced and are described in @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {fingering-symbols-for-wind-instruments.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {recorder-fingering-chart.ly} @seealso - Notation Reference: @ref{Woodwind diagrams}. @@ -188,8 +186,8 @@ This can be indicated by @code{cflat} or @code{fflat}. Similarly, the piobaireachd high g can be written @code{gflat} when it occurs in light music. - @seealso +Snippets: @rlsr{Winds}. @@ -239,10 +237,11 @@ notation. } @end lilypond - @seealso +Snippets: @rlsr{Winds}. + @node Woodwinds @subsection Woodwinds @@ -393,43 +392,40 @@ c1^\markup { @end lilypond The list of all possible keys and settings for a given instrument -can be displayed on the console or in the log file, although they -will not show up in the music output: - -@lilypond[verbatim,quote] - -#(print-keys-verbose 'flute) - -@end lilypond - -New diagrams can be created by following the patterns in +can be displayed on the console using +@code{#(print-keys-verbose 'flute)} or in the log file using +@code{#(print-keys-verbose 'flute (current-error-port))}, although +they will not show up in the music output. + +Creating new diagrams is possible, although this will require +Scheme ability and may not be accessible to all users. The +patterns for the diagrams are in @file{scm/define-woodwind-diagrams.scm} and -@file{scm/display-woodwind-diagrams.scm}. However, this will -require Scheme ability and may not be accessible to all users. +@file{scm/display-woodwind-diagrams.scm}. @predefined @endpredefined @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-listing.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {graphical-and-text-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {changing-the-size-of-woodwind-diagrams.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {woodwind-diagrams-key-lists.ly} @seealso - Installed Files: -@file{scm/define-woodwind-diagrams.scm}, +@file{scm/define-woodwind-diagrams.scm}, @* @file{scm/display-woodwind-diagrams.scm}. -Snippets: @rlsr{Winds}. +Snippets: +@rlsr{Winds}. Internals Reference: @rinternals{TextScript}, diff --git a/Documentation/notation/world.itely b/Documentation/notation/world.itely index d8bbbd406b..741d6702ac 100644 --- a/Documentation/notation/world.itely +++ b/Documentation/notation/world.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node World music @section World music @@ -79,7 +79,7 @@ To locate init files such as @file{arabic.ly} or @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {makam-example.ly} @seealso @@ -280,7 +280,7 @@ maqam. Here is one suggested grouping that maps the more common maqams to key signatures: -@multitable @columnfractions 0.1 0.1 0.1 0.6 +@multitable @columnfractions 0.15 0.1 0.1 0.6 @headitem maqam group @tab key @tab finalis @@ -325,7 +325,7 @@ key signatures: @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {non-traditional-key-signatures.ly} @@ -371,10 +371,7 @@ the automatic beaming behaviour and/or use compound time signatures. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{compound-time-signatures.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {arabic-improvisation.ly} @@ -535,7 +532,7 @@ Western scales and modes: @notation{koma} (1/9 of a tone), @notation{artık ikili} (12/9 or 13/9 of a tone). From a modern notational point of view it is convenient to -use the standard Western staff notes (c, d, e, ...) with +use the standard Western staff notes (c, d, e, @dots{}) with special accidentals that raise or lower notes by intervals of 1/9, 4/9, 5/9 and 8/9 of a tone. These accidentals are defined in the file @file{makam.ly}. diff --git a/Documentation/pictures/Learning_Macos_welcome.png b/Documentation/pictures/Learning_Macos_welcome.png index fe6dc27184fb8fd6d206f6653538031f60b45896..f37ea9a95b8ee1d85b084da1ec0cee294d3efc56 100644 GIT binary patch literal 55395 zcmb??V{m0n)b0r;wv&k_nb@{%+Y{S%GO=yjwr$%sPBbxY-mmKZ`hMN2+oyJ&+FiT5 zx>v8Y`srt_4wIJ^gNMO^0RRB-65_&&002nr_p=TK@m)jfMKBBizzCWP3CT+c2@%>k z*qWGI83O=rx>*UP$_b`FM`}*o>mjLrfimJhGE)Bl4UMcNA`~(TlN1O2i~L8NADJyb z09`}`oJJA_x>R*zdy`xI|!t3hoe2Fz&`*0xW5-S8|Ny)=itVM9{{kq8!Wuf z{_blQaR@^KK!FA%48?0B0~Eml8ZVMz{vpmXrk-vS&Xt&B(RA9z&q}XU=TBnPS{4MmAxq< zB0fIR*i1Zm(x!MGxl$?8!F#4vn|w2pex)e@Fgq57@Hq0r-;2!@k&Uf7BJh5N`6ZiT@eBFj~QQZnh*f9YG!yy zz^>THE>RMZ?W7n0KnM!Y><|B{4|l8&rfmn}dIPEl_4f=3gdrB-C;)yI3lB3IBB+iq zBoFgbA6B`Kwls*-%#U~$j%=4&+mFf)-lh*sUWlO6@0S}aF;qY-GHJiy12XC$N}ZTC z54aD(Rn27d_kDFBykGGXysp?v7CpVhwKg*ZGWAJpJMTi055nip?}E1 zj0;3d(a%Hg1=0W^Xu1xaS`9#GbTGx=(>TBSJN{s@MCa|{S3;r0yp z!y`ns!qn(W`ckzhm7o=UIJK&kU>*Ktbpn@Q{=)jmcAzP{B2d33i9(_7p{1ZMpj7^X z{UsIT+Jndop%;D@G(v$7dlZ(-_rsEtCO$@u2tyzA9yA=hAJiJ;-Pb}18~mk_uqpAY z5L^+$9N8St9I`CVDR@!loCH2$%*eZ*XDtI)03$x>@XsCV-LE_IJ7))i7oH$lhP+n! z0P-+2Y~vqA0S>Va;SO2za@ctm3N&Tei%{jM?XjAoRYlE;HHvSg#LU*|EK?a6LKC?( zB`WhcW+&!|<~3(d?bus^_#!FuDRWe3A!nFpJP(L)c)@sqGva?ru`aORuuZX^uxiqz zi_sTS(nggTSC}qRPf}yjfGp}b2sohdb;F8L7Ez>87dUh*W$DT3KIx7uu*_7J5V%bTJtx8`t`P0YD0#mr1CYZiD*y(Qk#5Hv<4$>hZ#Ej3T_8FVKkzytcnT{DxJ1}gUHxsEt|fF>AP>~-!8564 zu}`2*SWgbX3!r^af1@tTnx)!#_j7fHd31ZAbfI*Kc4>JK{Imby|B(KOdYyWWfrEl@ zflz>Wf#8Cl{s|{*B=?X`p03V#J39ClT$-0<(6~o5&=s5&JRmwO+9&EzU@dwQ2@%CH z+&zpvoDn65jhI?1U7RK^!K=Wu@8gD{8`g3lR2*FVtC(_ur&y<$*kswHVNx}f zC7p+{B<+4uX^JhQB@Iy{RsF9Pn&zU`W=o;w9rXfDi>8ZucSC)1c!Q?(lGVRS%^6L7 z9eo|!kJ(`J14E{r;^E_Bnz3Zl4D*hG$8R{Q?6PF#q0D%fO9Z#22lbw{)#_7`TegE)0@ksgNp;u$Xz5O2MMD=7x z=Tcjkc8QjajEM|VMwheA_^yKDQR%mmi)`D)xC6Ya&ei(y>)O#ogS_GS0h z2SUtL#9`He&I6&xvnTaG_PyJ_g(;;o_rZHMx@xuJ6@eO4rK%Fi;$_*Zf2{Wy9>7~w zxq%WAxeXqfE5mc*hq7DueamaA$E}kMpy@@*p6e*Es3)PP|10&2tDDT1;Y%8TfrKlM zGK*e{%1%{Fd1D`|A+IU#Ju6>pd6U1(^lLD7Ha6;)E4V0VT&^rV^OpDP{@GPt1bWt0GW5aQFW(kKJJJ5`gfrIu%|BlSyZ>=bMCXx7B zHskO8h~{wJQ179PAutqMiMB$%C9Wp!e;Vno>&1=!PB{onROwLOHTyBi{ZMe;?ggNlPDU_CM3Xto=` zHR9_Ft;=5K^NYME0#fkQWwo-~-b>JBsm9ehHLzRin?_5`G!%g4yDI;NaE8M7xhlF; zfto_<#5xO2E_dtJmOY7~QnV?YNverHnq-=;FF#LgDSNPWa@xBqCabJYAm$;~f;WD8 zv*MGl(9)3ux6r!F%$d5|jP5gN?whsCQx)qhsjMq3D%u$<>y0ypn&CHiRf^QM${%ZN zHf>tHuO3~w2Dz$%4_j-s6J}~>)iE7K9l&eo?FD5+6{WhAMmAgE!uslZw5|Kj@)gsn zT08LGXU*rI|0&p&^R=@xBs^mBQo+CSSAQXikZNzt8yzXI76UorlDY?aTva@uPw%^@ zmYBcz=3L`k>o>T7#;WZNiM@0bqB?s5Bd+TVuI6TN`hMVH-r z=zjKWynS>`WuunPslyfXarnAWN83_eTyd?YRqd{Ad6m8HecnFvuYnEJM!S`w)%|EW zQfsTlbgSEw>@51V`uV!SQ{zc@Yo>$mPJc~ke;{5=GlmlXCvWx3+T)36Q^u>29KYO2 zLYf@@L%4_Dd;Hr(Nq2t9WC{8Q>4)=-c6JsP6i(}-*W-OR<{c(+;82gnSNliN)C7Ug z{YRA}xlbuDX@BVyc%ggIv;AcHb$e0nR!L=&4xw z0Ps!wJb9>HcWtY9(i}Oo#S0(i5Z%!gDRUwB_5N3Kc_k@?jZzdXiWSd)L=>BU!9fJZ z1i^;@&N1KV|0~a)MEssbi^LcaBFY*XYqT;8>l8&eEclXmC|~RNlGZxU&aXWpEC2Pi zizpy0oHljLbH3XbC>WU?QhlMUqEcr#f^c_#4>HRf_5AF%-eN0vv0PQRaRpEL5^5tO z1K;6tMMOu3D6;^l)vRi?-bik?-ax^`3>h;DFT42XF*Y@2{B*qq4(cNeo-ii;-PU}k zn3G2Hvr!+gWz=WE z$oUWA%MmJfl5NXrf%zO85jihEKR~5I6&VWrbhVCntHZTKBmyH8s;#ZftxI=)VSyoI z3f`-_y4vJwz3F=%bJaRr?XEz{3)ZSSb?VEF6gd%*AK2K~>Q&1S?f5YvQ9s!fm6e6R z2Y9yK#bv$TIJ8%*BriYe4+c3pIXP(4!Zyo751>zTa;eeox8VsqE^~46pYN187b2KMaqo7L%IjZ949Vq-_QyF4jqX^UktSe>0@NKuQ5ik`iAIbE-% zwY70g8laIyJUk$7Z=umJFyeD^!fepvR{ei-FF4z)k*HIJX9IZe zT&_r%7y$-ANrblwTB`z!=O|v%< zbufh&=A3`Yw?&BP+4{9E!~I-_q{0E;qSmXAl+1}%_LRWn!G%1~V0qplKIX3u)o;@L zR;@W-(gf&+HQX*)adAQ{IM&iZ;uV*UuITD9qhSl^7wm7_C^lzsCcdY}i1<;l6uxFP zY{e>efXYA}d<&IluIVH`YsGqS{}Q@H{>+8!&P>!5F`5%g-TUe;Xa5$m!BMRSi!t?? zD5*onK@pTJ!)UfsK}KPZ6S3o)lJA!`X;L*>yLRg3Bo%*ET1u4*NhR(nP1u9i5=D?r}%yDE(5;z=> zcU?NLS*@_XS5!gh%~hBJUS^?=98YFp&S}Yy5jPU(QcGv4cTZzKrdN^oY{RIULk#gddGC!2g<-tCn#p|rH@?@6Ky~{$B@8U= zPaTq{9$9&|h2K(j?V2xCtCi20EN+8Rgl7FjoIX8>F{!t2o%#s> zqMhe%-n`s?3<8PGmI~m1>0nB;a#5t6sWUR2I%uy74-!HJ1z1y9JL!ujs7b|ZMMu?YzSxdMSV9$mgt#QBz_ znh)GKKrN={yd@fD6_LudWU(B4Vq|FHdul=XUL4y3qqC>OM;oyTWmv+z9vpI#%Sjr- zE^k>gdTGQz*2{qy9VxXn)Z#VEVTo#Laj^@3kL_P7wOfL+&1HGDo>|D8I7v7YP4sVi zg4dfY)h5X{fKN)Qs-oYH=KBgLLJ#z;?1X(S`Fb~MJ#Z<&ft*U8nTamd4=jSt*~tOL*rX;SPZyIOEzA&)@I53 zy(rwh`9+rY9)DGJ+84UKEv2(jlB=E(TEa`DGECGn8jIb->mpZneNmenPo`62T#U@d z4sLfH+Ri7r3X6+H;l&IIz{15F=VP$K_3715-eQKGh;68-s4n0PNXW>gq;s*?egor6GBUN>ko} zi`NvPP~Rp3)nymuJY{$WI+vuyw?Y*CY+k2+-pYl$)$=nBKXl~4V6)YJ)rvKskC4aX z0igfAReis0+PE%0<6vQ7z2mFx`f^;pSMte783nQeKVzRqGc<#h$Y zeQubgi`v^WfI%V{eQy+%IvvTVa@=tdbls^#5tvM#k5=CseOOFPO#|-6e+Z_9kf@Z! za(VQ2gn$6u!*$yDywdvNoGmnrSWf?HlWR52{s$^#Q~piH69=%IO#FH-3o_dy?b@90 zprh~Wr@Om*qs>-&5GNQGz=&d`Q!&(!H$frPmDGYK8scd_HlQdUzlY}xn*K&w{G zr)=*3G#X4~J`kb1HaTyRA-cFSUTnPvH3FSTw?0rOR+>Pal6@Ybh46i%JY_F%@&7Pt zHhjql3+i2KRjD>xtqG1q|EI%+B_#`0T5Q>#*BqkJxM4d$zDol!FtETLx^Io=C-hUK z)YKE^rH-M_45yBtXRi8GB^8{lsV(`PaJfBwmPXuqa?f$74k8VAx|Z3pd~+N zOx-#Eue*2E^U6AOLd)5s&Q)tfV!dwkJCry9ckT{-61)_i;lvWv`?bfCe%dJfQQwSL zsdQqhs`~nRaT%E?+Ja~=DMM<1)^EtlQ?>yHU6Yx`>&`4>+m(_$Aa}gUJEEXen^MPg zEdMZvp2=xR5q$gXD8J(tD(>`#88U#pg}g?O4*>z;3-0VeDA_meD7Ra^>`J_XIO1+Y z#_2m7pvI>TIJH`HkA>}Mg6UxO_~py$GcAubJn*eHPsQ6N$^z??sWI6J{!rX^Hoszo zZNg;J^k(m#pA)6`Bd@SJ=%K&I_&rL)^MCwAZ*oKHgmv34 zWboBr?~B{I6_2`Ficg|}-mSvFU0(m#{C5A%VgH-+zXo4A=U7NZXvRTr?_7NQ zk+8abn4ism4pM3y2M#H?-)`IGJq$g?XD^I^(|A@J-3f|n0QP|Ub&)++^!vVm87Le` zvHzA;#H_Y&>`nnJt-d-P(v~AbD;e!(YhKOG>lzcDMTN3}G)u;O8^;CRvtKZ5jht_j zvaZ`^GMrtzuZLZpq2%|Sh}QtVpkdPUwpw=Xix8|O7kKaAz(uQH4tHh?k0XxL&;r#t zb$QVpvok__=+^0CCEF!-CoHI=l9GGVPd=dxad=#`3S|NOD#(bPEFpdd{QrrUh?$-+ zYq)W@KdwM1h(MOZ9BMPQ{s-YNB~RQe_xN>E z&fP4J>-{LIt4jRY$i+U;jSOud6Ii)7z%QA68D zw3xcqZWOIlmCVCDYFKA9DNNAtIU>Q{bO*lSQFDE2JD@x*OxOHT6LhFg$1?3HFy`kM zOFBCMxqjWH=qpq}o?O8-qx&U5(6lrq&xtK(S}$zje7DnAcO*p5C+4jqZPLvU0Wg%o zcaZl6+$(D778T2Lms-130@>*CNQcaJi|eHHEmcFUG}yamayva!tIN2AhaLRS=gCP1 zzEXBrs&PAF#Ba6}lT37*xHd%`U)5{asW4@~Z}#oFKw{II(I5TQ-0#+Jox=b8%r*P0 z%5~x%}vTNy9OEr4w_!*Y5&n?deBrtyN!lN=Eu%J3<`6=IAleT{*2aJYZ{O zvN1u%a9R%^iM1Yy+RRrVEU* z)kW#FlnZp7m7_58r}1!_B7-9bZ1}tLZlUcTz8+d;KF$vw*CG;(cf%dOU*^~LcRJ*U zweK@WKQRv%p&JTyCZyXwyU_0r5O>C#ZbyUkk|Yf~9dPT(vAXTh$0f)jliqKRl0zUv z+us|oG~2CwUCW(%Ol4`}@Lzi_ttGgR|Fus?Y@NjqOK z0yBiWiIklm!=FIxn?yqc1n8CzGljO^ws}NnAfu|r&39`{Op-UBP z3l~YQsmoMh!%(M4rD5981GlAcsPQ-K5c;T=OJ1Nb+4Y9{Tjya=ed zXZXwbm4hdabDSM`82sf93PYrZP!r#lLMJrvI-V^d)sQq9UB!MK84E~v5K6Z zO1-alB)ru@kS~!AFfJ^Q)~;xFM&nj00`WxW#CTgTb(T?Gx3cj}Tkqp1D3q9oPWWoxBoE3BP>Uee&yPmYb+45y(Eerq87DYL@D$Njbaoy?1JB4cQ zKK>$|N&kcDhW`kEy()8jG|tfN<=(rHG#E}i2A`vo>x0xLs|nh#Z-Mph`7b*yHe2#f z0{0+mr$VAH&*UwpxV)3CDXj}B?6m?CHvAnpOGPOU7fu){P1j&Jo8iCcKi#SCg{HAw zU{?5A!d2H8;KW-UzD`aoM?F3?MYDYIw7l#)A3n)ayS);BmB{P|kaZsx8(!rh;$M`N zIPqjpc<jX1!t zY{O3~e~uVHpfG7N70Shwei8L6jOa`&9dI$;M(%kv_dqw;a$(k)ESU0RO8e2YK_|Sq z4!BGjbMuvfrRecSm1+6x=Q(=lGj`81f8&yfT-7Q~l8@JausUIcrNMe>V##Vt=<~Y= z{k0u><)9aqqSc1aSP1O~?C?g5_e`SNe@F`yTK*a1RGjn-bj55-4VBH*-%alghTqaD zQlW_DTI=iU--IY=YKBi7^_w(^#56XkQ!~i@)^4%U>6$|GJq~Qc>c^T!sNt*xN-n+i zJZ7ou4sTjN+HEqUbPa5DEemfS6JYxsXi4){d`IV8)EDPDK&`>Pks}}cKbHfR&?v(E zRJ*r=y$R8F#{a<`#E~L=AtGJbvj%Vr*#CLT8bd6k?*?Fj#QpSy|9t`>CQQ81_Vb;M zLGqho+^ym70xLqhwuWsz3L;sh{0)<;{Dgtyk}3s-ldsVu{lAPo#2H z8$Z2f_FcVQZvXciO1HWmil#u(%U_ zGoba54O8H$n2YwkmPP0BNWGAn7$`dnIt&cyTaBZJ$tgWNh8WoouJS!(ff}4;wQA~)x zZOwWHMNSJV98?b2rsVzZ}v4k{Lt~i zWPyr7i^rs;c#Q?~1Z^RkG6M9ZqB+tb85;?jG?Jv|GTq0-=TNJc(hStI%{F+K1O^e? zZyo)bv3)}Tx3kt6EkngGHhrQ!B~r$_arlraXx(crIo+;;<&eG{xh^b|Ju+-YfvQ z*i6IxvNCX)bC2}cczo(-zCn7K!i^wB&}TUzn%LiYCDxf>GP@sghW4T)kVX&O6h2#% zo3jPNH75@lFlNvLxBIu_n6T9Tf$kjp4_WkOc0^qblsFchv0zv|=(lXp19ygw`w;Eb zUb!YU6+{IEagY1CSs%MH$krzh!hXC-$Vl`nXU-sQmE1_ikVt2BWmQHhOB+MJ?4A1F zPvV8=~++xS@A2Z)Dn+ur_2?{PEaA-#IgA@dBfo?p} zZ!nP}pZKju5W}L9>d-ZDDO{(35t;sraxKpdHiSY+KRNjNn{BJh3j01c`v&c7f-z`R zEv{EA|Ht6>5|R#ERr!CHK4gRcW!HcI2R6gOMMDkveVhJ&hreKu|3*U3P6P+`=i3+Q z+X-Vq{D&2KcSGsnzE9@=?;ZWYK?);zPmt%c>3PI`;=C4lPC6G8zvLG_oW+X^HZSx3 z!aNd-Pi{A0O=s&-;$4C{bG@x$_&jBd){qU+a&gA{xVC>Y47*)ik}|D)x^L-jfbi8l z$BDHwxVTo__ImfJZrj(q_IQSd$<(yE;`7V5wk$(n_0ju5+4i;W%dl6e)Orx*oYyer z8$5qyNq$Svt}3~w>CQK%1MDq8`{FZYqiE!Z2hMzkTJ-pcm!p*%;bF^=)v8e>DuTQC zjE;GS*j+xq-BOB7o>BzGGj6+CanAHSaL4f7!&o+_5cY7=b~)cGQY4li z_M=V{16{|-(8&+#?Gs++p5C5Uup}u!f941sX$M_E?O#)_%lI_a%)LocXlLvkCw>N= zIbS<9+O55~diBYMkN835h3pkbh1~2v z*=xI=Ohs~(5vw{5UA*waWzeVt>u5k{w zW!sK_yUg#Nq^hEl!nMP*Jk~?!VW(2Hx#42}4os zzoxRz+Pcfw4lD#z&PbEbkf#RQiX3r=$|^b2?ah(W)e4t6{Rtf>x1 z6dOK!R85M?;#2!|!yOZ_zAq<+6GE7xw<#W);Ob=U#P%EeA3vNsLaae!P_lUo0}Ie3 z{~7fyJ4lx&W{B-f?YloE7^r66&i30)w1#8WV1>yv8EtYLys+xk0Y5g{T&Hn9w|bZ) zDR@`Ug~}{UWH}H!#*KE(4>Xi;b33_H{!9tXWp`a}wt=;DWLi%5L}huD20fk8VA2Eq z(h9-3ZlTRniRrQw$&XGVFl~v2G)`A9(2kE@ZrNeU7poG1)5NYTE|NU`8^5es4Up~k=5PVh7nR4CgeL7@Rm3U$|2@4T-9PU1M_Iau*8-0~@ zWgL;JCQwCa6y}dY*wtwJ+oOZLS*;GQ0jG1ZB9xy)`;F!W2a|xlM3#dc1j{CGEGF zCip2H__1Sh*x*7GH|t3PO_J3qka2H04y#@fulCWvYRG{ zFgx2xnM=gVvgiA1KO3cqQ}ND}zZwIOY0!1(JmYf}$yKH*wZ!rg(SGBGa?_G-ur^Fx8BR}zytuUti^c5pCH}PiP!K8KZ$ugfX_z^4%{c)w~5i+jO(w@2~f|RcO|^>q>bROVHmSvCR zvH%logXrjZlH`JEgoQ^t9EC5JyBHIUbf=yp2oAGJ+MG1)!4kU3_XoJd?(DXOg*%^f z@JDp`JT#tHe_wC9Q4(>Q6X*;jHqk2Y5d~+tW0Oryo{Tpxb+$J%s**RJG5M$9;|y#N z5QL6{CT+CZ^}83!t_@{iHXlt5Y294y^k(Id)$fpjH+xIukcM5pyc(NKzWEo`$ej%T zv^Cs*wSGqM8qqk>?v>F4nrviRmaW%On6$#n^V8=z%KjWF$VpMW9jMy$>U(kPEYfy5 zpZl%L6L=oZleu4-TO6nQIiDeGnF?y%}N}&ZU5hgz$a?M{}ubgFBx{z||EwDmRI}7KT`{J0T@nYxj(q zSKo1f2Efo`34VH;77||d{KDctsYsh)a5N{G(Dm`tDwZ~=P&#;%xhRAAyRZ4W#eMg| zr}VaheNpcq?SY+ON&~rjkKM9Qz?AHSb48Eyj;-+@?_}@=nXf1pPl=2?Cn8+vFgEpv z^IuYF0-G&9X$`H`cbMlP#oA!)gN$_C@}e6EQdpzb9$AWh^RUq z^cJluJ~8<#`MkDc%{%r9A=rm+n@m8pt)I>7$9%y`FbYvyN- zNFJMneXvK#$V}$5s_lU zt9jl|Lj7li2II$vt%$JEh9#T$v0;R8Bc=OmJw8fG=C1)V9wHSV8R3;9JE&H~(Y6EG zg#L5+&U}w-8VBW;kPFVo%Vb$^g2Y_$La4(o^Ma#x*X}s5`{{%Qx*RGZcL$=;Qz_Dk zz?i9cyd$EboDV6K;coPQ$72<8339&L#AGCh;mKoDWCSER*4n>QIi&;!w z#nUq5SoymV^?2B@+I;%d;@9sa!_ek7Mu-U#!`)n{;~27#q`b)7?-sK1GXC8U>ro4N z=1}XY1RYAzjwUC6tx>DRT#zjfqK!?8WBzcs<S=lCoCTvO;y2ntU%|hCCP5V4W{qp6G<19O{&;&kyrgb3HaFsfk6$!8{)0$#iIwG0MJ{`* z%Z%P)r!CD_*k`N`(TfH%QuBXqIzp-=R-_a~gRLHZ7;nbj)>n`wLWVqvV!tCNCMJs8 z*i@sTp^2NDm$7Hb+IMX2KfQ@8FwZf|fcpDAfB0y$ITS5sfPthV?mFGKbaq?t#gPUM zWk+^DdRhQxUu>q>3QvCLm9e7`jZ2C{S@=aGxV8B7A4E_y*9GVyqNF5&@C%wKO|l%F zvOt!CymMhN+QT!4F&_uwsOa*8hU$sY@BJXx9$1^uF%l7jLzs#<1>xJC*DePGDKvt` z^l6K+vLrXh&?#Aj&OP`S(!ofyh!4`D+PbEOW-(=>c~3Jo!a9V37GIesekM732ib=< zlEmcOt5YB4a>UfO_u-sp-@^~T(QG|%_V!Y&Bo8U$^d0}~8~q(`S30KBaYllI4@8K9 z&T-lPNA32{WjN;ZuO-1x_|wu!6Yh_5IGc_$BF;kprMLj!t6+Jby`#6O3kj(hF=bqP z1KTM-p#^@yBjt|)NbZ(J+2W*BGs@`08(W24JB)(12tnhP52a~6SeZ#Av-ubft)RQ5 zC&v$Lyi`x5KT#s5>JpCRvv=+vj;Wh0koFz!&O#ISHr*NWEVy|N6@S^@w2v%W(fun}0auJ$ArGdaFM)`6#z^J|8zozo-pKC}7>YCvU zq33DCff{$P9Uv~}q8jam(B0|`pm&lo`T-jRZ*=i+;8gF3FdHF3DG-jIv+aCzWn zo3Q)-32lSt2?s0w463h`ledKPeMy#$~ISS|`Yuh1Q#~C)AJm7^q9!&X53{P2l|LQ>|)TB#Z)UEX=Hq@Ez5oR$y`6{Ptjz`s0L3 z4(pmC0$YERB*oF^&9&2gD@TiyG`gA)yigSul%VPEZu*ax)@CF9fVS=LcA#fnX+je1 zO4rCi!G@nY`Kt}g2i^8e{)+8hzh#a7&C$ud{e@F=3i$K;hXT7=XTS_fdG6pzu_V}v z+&z}>kl|{*R&4`w!Ufj}AQzY}bwZo)yyDAx+aIJ879~3t1IuyoV6fUq7)aNX6!OUc zQ;Wp?Oe!Q+bF$MivzysHB|jdi`U)~I^Bf(f#y56U(nNfA3L?##WC!HaH5P{P3-0NR zq+~-P@SsTukv$qVFg)eBQP%w7g2Lv-`H@kyUs)cVoUo%3%~nOGmaRR$tNU@f(gu6Q z#dT{|7mV*zPL(OVylYNN-@=z>39&7nvmJQ0-OZBF-d~Rgx%ROCqf^VQplmC!>;$Xb zc=!e(=z3@9s3bdjNsB*YBIhXBkg2r$fEFU!Y(z^ZW++K(96qONcUud%`}el%IoFYn z+nq$4#T0q}X@5m9Dcr66j9^_}b5V7IW#>-o;x41`bD_j&Ku(+;99<&ETEy65LN zGI_)k-z6An1ke4bU2wBpG`o9cCN{q5d6@}nanL`-l0A22)2QlD%0@0PRlsZ?HMu-lZDbMD$ZL#(J@slYFhT-%&E=P^rQ%j%M`#D#CA53Ygj?e7hoC0QHj z*T>BBKXc5ZXYjQJf1)~S@V*7l2B2?EexkE6?rv&#dpxnC_@U}%PK=e4jPSj3kE3O? zO=L)I$fCMiCuI0KMKOEBeMXjkXKG6H_kvW zHp|Gy{e@`xmaUW(Q0w~=GIqI%@(K<}o|34z7_6j3!gjU|_M;E~QFj!n4QP`t;-Kn8Oj710_8T$!L#5-FZzqkRrOQ{+ zD3MB&{_sbEc)}mslIl4)bOH#hI32&Bln zTllagp)aW?%!^02h;h-k_XO9&5Kv&3ty06-%COjM325e{>-;`EF-Xi}q)0q%%{+1g z!%$>Wq^AnPxKU6+C8Qw%DZG7OVS!gO=HNvaGtnfHq;Qfc$gg)%3+@r!@KEvuf`hu<_#zB3>nd&J)B=o(s#7&PXbEYXhf2@9MZFQd?E`Ur%~ z%_(S8U^AwIw`@jC8Vu^xYt^Y!r}D0gsxLyJz7u*a&G>iajg{YUoXu2ZKHe0{R~)@^ z?BOz==^iJ)puTcLQttlWky{K_riXPAe;EKNfIf_sW z@4X&+=y<^9)nQG^d`&tA_J*e+-p#LM)IIU!tWaJ>`4aYbGqe;Hz33-_t+ zQw37S1bL?w+Gu43P0=VWUgmh<`%y=~hPw*#Nhp+-xRqIWxQH*t|~^Rvc2SL(_QUn2A3RNPExaDYsdcWHWLN3x5N z1I33zE_zn$zf36(XSh&Bn4`_{3tO7rD!~(4FP{KCXPS5mI`o5S_Q>xnWHL9Sa)lQgzaC0xI2D7K}7zEUjIf)oXg`CjFs6=7JO zWgm80{f&AL3M<#q+vQQ81&NVXGR#FHHo1T-L+&%{P z6R!j6^XV~n3=&O`=n}VP_NX_5?pt_0z9VeDSnwgW7A|&UKMLFqCIb0m*{)l|r;>V( zX`+{Y%6Gbb0$kn@+sgE4zO<=cqL?^q^EuBMO(NE^TH^lLZn?2uVhzf}P2i5`j?QggSc2v zR&_W#L^d)@>#^53@jdarQ7fg`_IKEVnYvC0QlPHLcElKnnKI}9%m{5rJMg?oV578d z#JnF)!+RcHYVF9OO8CxN-2K=uy}5C^*!)`C2+@)Ko>rZ?8NYPieRj^?UB((g0G%uNh)1b(oaV37|Y=I{)xmBbuWp?eA? zH7dGQOpq^7yCGf{yzBEG*}xZ_ujs?*Jk?viVK|6p1}&)w($gY*UopCybZ4&&kN&XD zT`VYo{OG)2w!C~lmPw}=g8s_h&TT17?AKEfus8mZeFrlx1;ehc3kDVT=){}D3u;_< ze}l<|R8&f#F_KHGL2fD6y?$Z2`W7z_EG@L7)6_)O{0$8`ULF?XXg?sa)%rZ0Qu+YS zFK7UCe?rhzZ}k68RwJdQ$tZdQf66|}+~!#P8P#J?D+w*D2BLx@Hst^3TU2(CDuJDI zU?3LUL&}t})BTDtcf`ggM^PKo!W3L9-OVsXXdcG2D=|=6*QL{`!PRKGavbR60dM>a zkg!imXO>vOiZCtY8-yU2iM4`C4&lv>Deq5i03!D9|Kj z?4+2#pLqIw)Jl`0p(p!XPxX zH8Ux`$EuuN){TcU<7-f4o`Oeq{gFoj;_-r*Y2`YiOsn3oEpz*fJWt0Ko72vZyX%>3 zOpjBC6R}+|9E`}3fJg6j=b`Hbs}vbo(Rua^pGefy+IyH86?s(d_U=q)4&hLg;M1s0Pi$@I{?gEqhk4 zUb7_@Brte%4O547=ri~5dNk=LnH~w1OR|{GwcC-j|MA^tJD$T%EVH{;3~56wn(WI{5OI-reth;`y_UwWyJhFC zqNULm;X*}-VPd(XFsoMgR(kW~(9p}ZY^qN`sbV<}v1nPvdGlTg##}kuv;<5h`~3+m zA~B6PffK%8db}Qa%lJ3vgC1>pr|XmHSP8o~HzJZXN`53QT# zmd8}$W!&`l#i{K4?dri%MN2iR^Z0}UnXNR327dPkioNz{B)9X2+u6?%yj&8SI8KMj&J~en!}s~O3s!xXQL&t1R=5B#`^5NI4)u*Mc9@u zVuWD5+%%tPF_1Gcc>S!b>O#XOW)=VI7p3m|vt1guWkF~tI6`I0qY#-?)bnA^iVmUH zI2e&n%q5?l{5k4vkN(;Q0dvIzlG1W<%iS}jS<)|%p~ z7u)p>n|eC~c4!|CYu+nTbv4&lXRbSBJ2q4ix~RU=>|dySI~Fv{e{H3EN}_y&Rrt+!1oe6u**D21NH4@RF0Jo%<`27k+Fj=f#)K z8MSK%afEKWusb`AcRcGkj_iHuE47;rTnh|agM&A}VUK z0$2I8-fma-M@9JAa>i+*|6D-}_FUR-)ss;cUH+|(4;CNcnL?frP`-HI(UsPPU~aDg znX&xZJ$WO~T&=T0lt(`PDO8yxrUhapX8uJG-XyhB<{YAo4|NV78rHw^?GK?v^sCtd zqx>0zSnw^N>s8rhUo>tJ4Ta8sN$4Rf$;gOm-m7&;&mW)C%C{?Nv92DpuiK6V(IEE2bG5YTH#?f zCJiF=Hzqx*)m?CQR_ZQzLMAW?pEr!d0?r&Tccz6yU|I2Y7c4hqGof#4*5Q}nx-Tco zZ^`;K)9HWx2Uk0DtFKT5;-209@t-f;Xgk4mcc8q)Qblh872cFn>;7iAv;4FDHDAqL zFL}c$zXhH-d&NG>iD_ldVjHrq1 zP&MLW?N0XC!2>2s(Hj;0y-zR8id_DWCg|IrQv=?PXQt=kSk9iVu6RY-R(8JLRors- zuXroTx{NbcM^^JF{=fbCTx1A6$)(c*^d%)Qp0{2iGSOhCK6{|DTql3%>C*-R@Gsi- zQq+}%@MBk^eX$O%EvsV9_6{$oc5cC!DYo3tru$m6uH!sV`+lp4$vxzEa<*fV%43Vg zs$u^-l;?dMr7Pl42Gfg$?DCzxw%PQ&`iti_&1$BzjeF#@2eYW9Rb1|I`B`TzWvKvb z#kH(gXo<|P&C%op`OW1E!neR1)%rz8;VeUeQKf)0zEn7JYseztQ_?ww>$W9Z)2;iq znTrPNxNg7v)HwGUc+&dvs0RP3uI2x0 zCO;T@w#^)ppz{WYy_+iOYLpatHptf-85HMM83&F5o<>i|Y#Pu3EQ#n)2+M{5WX7xi zU3w!(ISc$Ikd&$g=C(D5ZyqF*ZI3MgeQSLZ)ncC+HiJ+|Ms-q#VMi|-Kck=~Z`-Tv zgrfR;?53is7)6jPDz65i7MO%_qH^6l+xez6xG@;KfQ&Bf*mH-*+(eLkw%{%I^tLO0BJ#Q1IAycn?wz0r*;c1eXrbR9gyXeZo5YEN61{k}*z5 z6ISsdhLKRdxwx?-v12)sj-BXJC;e6tlzlkVVtpr$%1W9-a=o(8N?c^zl~jTcUYr^l zQOA;bQfd(FPG8WUTBhpmNV!8ouC5peugaNF5By>T5g%YnP(TR2EM-|rMPRwM{= zWd{B{xjW2G_8iq+0N&uos?9gci(8l|%vkY|8Mve=$hI$ zjjwwRY2S)Vvj_2|z#7jN9#K)QN#Ny4gvNY5QONIvKHz2Ey%yVp^f>M&E9TVkF3p}- z;+t61n^f?tR_dgx^DN6k6X5#d3Hd68VQfLx zKiv|G%W0ZkWkUh)d7ZMjQ$T6lEloh}jr|)MK^8W_p-50RVje-RaOp?GmQy_xF@gu_ za^mltjK%sY$g{XW76mcqn8|Z{0lsX%UBwYB0uzDjiK+~m9s^e@gk3R8WPZUZ>J1Fo zP#3xNd6R<~$8z5G2=D2MRnKTK82ip_T_0a)KOyzo1ImIQV>!{JT#9Jz3|9u;22j`f zlmC@wz6dL!9sMjUG=HiolN94FStW~AuqnS=uJcj@b5Pji4CngLEZ8opR`W`WLTNCz z0@-~V?yFiuEj3U5DPceOZ!W-5z8zDH{C7xnY^7#t_cuwbp7q3Wor{N)6-!ZP-?UIu znh%fD08O-mH%k%dPB!bk%}dB)xn^XO8w!+to6rOfJk{+OxE3xu)0rR{y58x~ik-UQ zxgAGk`rqB}@858IdYM$lAo(znvX3q#9GhBtbZXx_{K(w^64@UPf2T>L}5vY(d zbKlNX2RNz)qRG;y1h^{qCpGsVB3<42(np@or)&w(g^}h2dI>1G_jIcb-e`J#*-#!W z%H!p|=jaX*e8R3M47O%3OH>73Z2bwhX_7t1X>=&MY7fmc5e2*wc(6n$NXz;(mT^!U zVor{rR_xe}GVq?1A49Oc*3G-;>KQ@;)s*x#yFt;Va~Z75#6_np&O8Q2i3q>Cd7}FX z(adM_V!ZDM+)kzXldwkmyG|_91)3%+ukoRv9UKJt!-q(i_N4E;uYs_F|AJs>&oXLC zZXwSe!J5ox$awn*1aISK-a9<~k+snMC9=1CMNWYoKRoz&A&X%pWN_tDyhzs+n(uO# zrxodnx82UX;l%(r-ZP{CuL2}#u>DVA&COSU(zg8}{u}2C(nk_h05ipBJ_PaFZTGrh zPxCO=bo_RXmr4UFHuz$aW-*M8Z{y*B@MgAY1__38Ge2J75+=OFbU^UJA%Jb=Lr-e;nS}*VEaOYHG@cXyd7{-+4lcSyOlG8xpQ)yBo7E=b@@*lDx zrI3NZd4~Hl+$&W?QGg!>b2yzP z#zsR+QsL&A4Bly#!vm=TYM52*tzp#jgpbc(X|oy^NiMK#hdPra*y)}g(#|J?!5sfx z9+umJJKQRf)#DuGEheoZh%1&Q0|dU=r~&5?%r7ZRCsEPrMRv=2pVO!id<}F}n0(8yZ+Vy9l!7 zL*+|FDw?(-n>A=9si6@Nd{clDk{1a}OK{tyQbpIlw8It+slt=izWBu7347N+xUA2| z7o~Zp6iiqE!LhR~)li^;lm0(30#*T65bpzBtywvhqsa0i z@uP&xc)fHi(+m4q1soCJ!-c*>{wrL5V*W3L&Hs7Cbzt-#m34{(bxmC(uS!%Z)+ZZF z<596}qtgcj;d7O};ucBcJoiFw?Ea8jpwQz9@Z1 zIKvaE#{OG>H_zuhk<#hOHAm$1%zG9_+(gET)D8ZR(^~KL z&%7urm&->LP>t&k)&Y@_D|j3piEQs&Y^Q_X>|@;`8+dhq`5mV4qvRm)XF>!KLVlm>!F*qnXk4Vh~31G$26V z+OmJC>@Pq?1V)vTmq*H!G}1x46AwW86$nUFKG6Z*%Q7UB*07XH<4KNx^TD5l1oK6x z2y8R0@!QL+1-|HnqX!koMi5Hly@ZhP(oRBo(X9IqUhg~QGA)M8d6ANEZwkZ3oR1;; zK1!hGdJA*p0I|`82~5jZaBhvb{lzTVU?QdWGDBEwEY4f26!qs9h=wO=0A5M1G9ais zN~NlRbQCo{gSASuAb`FdzVLP89>#ZA>i-p#mI`BzEUL_gT z_9ox@s3bwGJ$NNuXPaQGX}@DyXqGrgHK*xnzY?bC4+-Lkr&+lhT8>%>l{3XWXMS#gXwy&i;B6|yDIyV|w4YHrvY(Q;V>f~7@+RP1p z^MAVtOnZP6;=@52^TM**=EXFCM@|~yXy*5&Va-%VYg^>(WXKmXJq*C~z2O=vQYySp zX%bN*NcLy|*7p!!2L^?RqSI-$mp_|F27;!vxLvbePeL^KX_mX>c8>}?y4b&{HeEYa zbJqGybK_oWO4K9@GaNp3z-x63iu3Vfd~?QADUHgPSp1#g!%66719x%q9ay;#gF=Ah z<%DTmVn-J8$y%)v^Bxk)O2~|?enQ6n!<>3rj(@r^nrPSYa%2)1@}Q0Bq^er1=fFTB z(tJ0(snQyHePXYy87Tcv5|FqW0W>UlA%cLb)FS`m6_yI-ER?^6&TS%QXB7wYMM6y! z6%}1g*Ucji4%a5qtjG3>1f!n0uC2BL%LK?(C@m*l&LYq54A73oRG+$wR(d@#BvY z1M$hKHd;MR1iYTF4*=>*c)YE-*&PVTmMEG6b+0uE)d4fzb*aj6ueUgS6JSJHU9Tor z=)p*|*c@?pemPA9nZXy2*2_8aU3$h7>57Lt-JpPcrzYnDh$NWk`*x-k(|Q~LDVAlL z^Z8|YWl`%^*96!^mq~;#N8x^vXl?9==!P<#EO1Y1`*Il1TNmqPn=ee%Hr1rA_zq+0 z`w4wOz`Gw5)?j};)sWpt#dPK9JojJHqkR-{S2RgS}kcP3?uUE(R-DsHX?~uFCHna9B&X{lK-(=|WuV*v<5EeCl$GDQFa&koo6S(@fGOmcqc2M2e zVx*u*k8R}PC=xzh+Yx0Y$oyU`Q?Mjd^ln0;N>ksO2=W~qS$jHFpW^1Ecbgh*MjI=( zB?Yy`jI74CU1G>H+r5f9>gx?8&MbktL6(OFJ--k3--;LP#&j0N&ybXN(@n`%egiBG zB+6_pX~)bq$(#i+GZ@YWV|p@hP*NKFvK#t&ios?Wzi0;0_a3?#{;KrepiC#vu2?s` z)%Z+qW6@8XA=x#$8!lJDln~GF>oGskh#vO)>>1(Kw4FVw4qq&W()XX2d>UjkHf-qI=`F7oU%KEBy)0d07v;Q~dMzL9tBs_JQ`J|Di&#HT` zV`xOG^Ce6Yv~#u!^g_TVI<|W!OrgvOsV=$(q4z711)IfOKrfa6`L_pI$e{f&oX6j^ zG^}bo0m(d>k~@l`$$@gnc-hZ#$d8*5B-ay)BOS7%isVwyGG+_Z`ZGDQEz?117E_Se zhdpx^YS>DycdCm=K$<~w>L`8tGtPw=tz*kX{6b2%Hbh;!%ci3N86e;351%>``@uGYKVkEY5#*<|8pWhRoT~ zYAOw2=FZh`W zP6G4rqGInd@$OCyfTwP=UIckxZRgChPEmUg$unP__E=N4p7RzW=Nhr^`Eb9}q$YMY zHJ=TwXv4#S(%>lK5=19CEekbYE||^yJ}6X3te6W`kge*JMOKqtCN&!njmPa1Q_?bV zUplo)^yQCR=sMn?+02v93jla|`DJHM*2;b1hEFP-nJNtoe)e^s{HIb|;nkQlv*o75%mFc? zdma`Z9Q$EFJ8mQsKeA9$;0q{6ulg19dia?*deo}JwnR~zot8>6A=2x77^czWK$!uB zEe8tN!>ZBfhFigvum=Jd-9nk7W{W%J4_8=X%}-eBvew=q?)h`u{Zk13Aw!&5ygdc` zbn0D$o{VOZ(^$|nwSdS;PN7F~0g!jSA0$unH3_ql#1(hbY#Um>+f7OEX6$af6Z-NL zZaB^Dan4uLT4(wPQ$qQZK3Na!DOE4SgIV3lDfr{JDb?oMcM31~<5|j*)epq0 zzVJczdd0uRMghCF+)(cvAh0Qo>F+HoE}s)^R3I_U=vk2b&c4vMmqs3}g4lXaF z^lBtZ7xEX*X8%NF$UkR@riuFIcp;m)a5sW@)SOPFo=kF%qL%VBU-onXP zMyYG+B6|1hUsY5Q3DZvBG_(L*_Q<37e+z2sTH5uRdD16Or}w>;`JV!&{!SKH6pB$) zr%)oD#G>;nz3~C#zQ#KwG0Bp`JfWF#8As!B3r!d_wrEhrjFg$}SwB?#&J&WGBWLt8%0mLkY%jVf* zfx<82>OU)Ga$*P;2|~e|IiZ;C>_1wn;buK3*7{=_dSTRkIdUF+^vDAA$T;y40zbUh zT42zv9uIGQSc3HpkK!99zyGoM<#5f6mdI(kzZ;f#{3;q+=Y*}osKSmC2SvHHrwI%_ z0?u_~Q1}VIunvF-{CN$GNIri!2!Rbd94RcNo3TE=-M*^CUJ2oUh^aqZ$dA%+Kp_TO zah)pgd}{Y*bYUTC_4#H^wc9p78`Wy`K5!z)*i*Y@cg5=oM@qPj6S3|>dgqv`$_Hc| zpH8&?Q2vyihv(C7sA@`Oc|70b(oVmHFQ0xlQsIWRE#WS<_T)Svx11hmMit7P)Vhev zoPS)bV!KASWT+XIHbc~?*#s*@7SMh_sg_Ko5#$v6wt08@ZOY;b;CptlSP^n6^*`YK z=KUO7@Pgp!xtD|O!L131{DP?4|_8KFrP&tvzabAD-tm}){ z6B}xNqWE=mMZ4A=qfHaS_+^a-z2c_W)+%5H(o?K+DNkYDGo0;|x$1ci0fbEHR(o<^ zCF`OF032%UY5gU`lipTs8SmcQK-)4b_V==JlTe7FpjC0}lIHld=T08V8a-;WcR(fT zzMqId0`<&KMiXQ+>LLeQmh0RVMcQL>Mj^Y-6VOszWyi>6u0S~F}`j+h1251zdhnxJnqmmZ1y&v=xA*P(@`z@P5k76&bPp>RQZ@4~XS* zf8=$T2JU<`a^YopssRh=_62(dQ!Y1Qib$bRNFN7Yv|UWAW_!Zp_KuKD#GJxeBFQu0 z{{;CQJ2?vBj|E6>Q_DS#{~p669L5hq+>!kVfe8S9^=uD7Yek1EGV9_-yPGxJ{0Bg| z1cd)zVFm^T5fKsOPz3x0At9l)D0MB$pGa43PhJ88f^(BVm|A;z-ORB%Wn%D zn+h$-aM8XP8yMgU|2d&De9WOZ@-n-Tim@{y)br0npNc&VegRoC?YZ zv$=E&9W_hwXdOMa$*-HU`X7-`hG&@)o)iTy0>JM$aia2vB6fGYK`2$oJ^p-q2oBCV z*=z%}`a7pu2D-_0IGDEI+hSf(vVCydRWqx*LsCHyHzBMql+5qo=a#1x*D zjY1VNdauQoCk(#JYB1J6BH-4V{#`pg>=-2yTS zBYMgoAD1B@taislGJ6lfJvvV z_OWs)Qg^#+3frCb-rMUZs$I>DLC8Kh?>2A&>$Zqm-J>5aA2PYj7vmLt7U3{i_`F&< zOI&n^Ncy1dfq_DzV(E|CtJJ&CdY-6r)5v__A~l6EX7aM%#mpI07fB8C?1&?6@B*`q znv};^oo0Tx%8m{@FckEB;#=IwbJ}hYv{Kf&EJ@2%8*}?zQoQWxEZ~^LU~a+)4)4Q0 z%RbxjzJem&2S&q(Bf9WacF(5E1nDO zy6VF}?YP8X;jzM4t2Hz}5WW(@bM4t3ls|_}1U8mCO_Y)Hp`^h?pPv{IPqreV^1A5` ztc#vQcAmXyZtrvX7n0ROrSiu0wx6ZWXPfDyQXbTC6*&Pe7K%`-TzLxz*hYuBu<(TS(k6*cI2#{k?$ zr#wzmIx}u6@EG?+i7%hZ{r*a}c06@OeZxS1O*8h>-06K1MZ0%E!ofSP(VaAJ6mQs4 zJ+AwppZK?fUPjZ~YfE9i>tTeM_P%@tq| zyZcg$GIp>mUg!Qn6mJ*)X|sAe1p90yR@(VYxHiO1oepKH^^ZDs`}y50_0&`T!*rBB%T&^O_t+s zL8rsDKd=3LNs{uo!&IEzkG)`y*27=gt$*23iOTdo9sZRYrnS6Io*kFUt(Cm?0%O{+Cy0^a^RHM^^lL^KFtIZJuAs;o_9BWYQkCuBc}TJ^wZ_ z9i_WZLcINU4lX(J0Pd`RAQbTkpcH=C<@I7BDjFOW6O(dxcQ+3ZY;9Phoib}+#fb(O zqd|~}+pHN7cMGx2P0OP&j_*Gh^5jm8+O(oMK-ux)ADAvl*q&y-5Q|g zUfQ2Du$Qj+$w=gMAi8^-g7TTSJFT!r0_C~0k=|iAl7Zd2BVL&$9W=jTMgUFGq%)?| z4r24BIUMrhgBl7cGSKUF^=sSZn#g<_Yh4H@JpoAEx9vNce2)Wj*g$kv!g6-*qExaGux8&X;d_7rKBk3exX3IS`ssGg)+||q=KJM z3yQU%VnD6^l*C%kXT(}60TcnttaYAJs_taAw&YaRpkYQ!z*IjDCHsIlhG>6EAjv(S za2?VxWHg*`?2@K0=37B9>R+R_pD_~21Igh;Opyr~f}j30*0VfbULw8Z@uHMFplow{ zp!$f_2hD~gT&bDye>o=ZdO&qC6Y%PXJUxC$tJ9hq{4fwOQZFWSckL>-1!&34iT6j$7@Ki2G zUKfkJpyv3!NStEBA0@LSuiE9ANcytx&_rhcy2&PbiA~|%1Gc9fe%-}=cYA027=H40 zT>+lE)+E_ZNUB+w^F3Mb2g(Ab-9cpY zl}0Ymd(SKLe_GWLSN_1D!x;2BoTbj1j;;=ck_MI$hc95P?(QeW%2zO)paePFslG7{2TdiS*yh-Ht(FOTq2_qFNhhsVDc7bf2F24I zKh=R~|DBIo$d4r^*v-q!-IX5Qfna|gldhB-m7msvD+l3n^n8te$>oZy@Drh0wGhS+ zA6aYmg{+tR!c(&}tsq!-?tTgoPA5ExJc5qGUnN`Ei$e)cMC{5;HavL$dVGDS-1ZwI zjMk@n%-yI(hZ9Y4L|F8_&ce!y_TQWW-E>Xq2P=8){N|pDxUrsdWB}zJA$K$>_o{@3 zVd_@;{vt|*ek@rbRb9FWscjpgxe>c~$G7CQuQ^?0t=wuPIG`%g$$u-s+G@d?rm1t$ zvzRuK`6$)IGWPdyCw43o_RB&ut?^dzTJHzL%AnV+^l+ytg)!SgHbaMq4)%1Zi_-B! z!8eAe()Zf`6R9Z%Lj{T)3QS7a-Q6|sfJ|s^lU#8(vB*o*FDMA8wt7fshq|A@qgN5MW5YKW#s^u4XRZ6Vc z_3#Ks&sWIy^<6^`zl#$6bR;0T_%nkh_$^bE z1);{ScCTcyUeFuVt{V7bvMzfjH4_2{S1suETYHx()NOv~?JuTnQe?A7;3K~%FU%w) zrBq+}=yP}`*5V=uC6R>h$@cj%XL867_t~_C1Bm$}Xi|kay^d+k6|(n_ja8}%xv7E$ zx3}bvAoP*wa=LT;*es)tf`|#7_8m}!p#~EV9{;R_8XA|NVA$2tM{Bzhz z_G=m)SP64^p-IfLh{n;&rt89; zZ+ncBu?!9$O3Ee7L>Dw4o6iRI3aKu}#=6-Zu*k%MgIh)EJq&iTaD`zW*q|vnd4Cjf zLtLgN($-F@plvqhxjz(JaulR}y<8ZF_>NC=v+7@eToTdf2M-`g57BK#U~JSW#^t z)mqDT{wzT$f4MePCE;L+v37&Krk~QOh~(!fK>DITmK8=D({tbA_+RJ}e`R#oVKjoS zM!P9*UB@$0rb>6EWVqecc2*be!~jjEyUVUc4sW>GLc!kaDeN9eVH#IE2dY|jt&isJ zXEWF1*$0M|0$=Sj2(!;Un7HL$1$LxH(*WyZb1=~lpt+_$;=h*}*2=U~lepB!)77GzliU!8a&gfQ{%;)_FJ-4%UV5yCM zuz&090URNBn!*UfP}t$>cyh2d86*b7k!!;4b$H>X6iQk_HRJmiaVLi-d#v0t&GZB% zBFfV(OfDi;@2iKO5u<5kdeMw<=&qqHi5AWGftJ%qHL_VTb3TRZ zzZS2;eA36Tg67T33hi&Rc|!Q(uNWd$^*>Fh!bEV0Z#HL!Bm)W$XS3?BSEqa%=sv7H zJ`1_sUjhf0BCx{Z4US8O1;%zP-&@_Eogd{*Ok?))!CV106>hh));8AFmpT(~lv0-) z4oOr8sK?RQ6T!)$mGQ(KK#8*b$8V_akMo?i1Ya3Bh3vIATb`V6DMg-z?G^;9<4A#{ z8-1Uh_gK2z979_v>QKNAZg0M)nU8+PSTfH#!lg?@tT=)O-rnh&J$8d>cm1PkEu*lw z?slVA-i)r$;r@&QhqKd2^tL!Nd4{B1t_%p&U@1i(-XCW?a31C;h7ip9d>es4N|;~1VNlN(VdspgkJD)jc40^%6Mi7koY#oK*lV-3)V>e1DDwF8L za5p2HTO2CgJRK?C3c0?doLGPAKemwjNBiIv2v9mt;J2=+m2cgIxszH}d?g^l3Y7(ZKLL}P zPW{a`VO?$+3=jzWg*9d<-V7MTU?CDKZ+BAxQChVbF#X(hb8U12OcuL>@390kP5(qk z==GA#_ceg(vOkL|tj<=7feB0@7;k2Ud3)<7{8{z?ou*l!z=dPcqA()wy2fO9e1%hQ z#4!1sH_(GrGn`8&cN2Rvwqt^3V3_-LW-}B=51U+d<86DTjyK5^GU0}Y*XgCYT&;$y zz`7FarTXg`1gM*i?K>|K^Yd%iCc?Y8IkYaL3F zHwbGJN~Q3zoPE)~m!Lg*VC&#y%)>0b-YS{l`NHmC$ihB2K~6y%*`UMOTX83Pg26N0 zT_vmq+A!;mX;JWsaI@~)Z;}aTHqF}69VkNv)o>sUDNEcgz9CHI^f91;oC)4nuSa?C z`wD^#r`Sj(s7+(kB5SV010yO1FI)pz^SO#L>|`lIKRSOYu-=k>w9$y!im!|MrIJwA zcoLM;tx9*@y$KKlEo`lP;`}?pN(?Mz*1#4BU=k^{7l^qWF2MyXu{f! z(kwXxM+BSsd0dJ&I$rkCo2(2->h%!IWpoPljS5-%f^X$)+i_vh2^+UhD;;?Y*E2Bw zxjIR?F9$!?Y)Z#V;j9Hv70q-;hx534Cf3WmNfx#yOh6R3bYcqOZNGmk6?%ieEujLa z6ID>g@BJfF=*IHH!MHhn1Bl^fY8lzNYv&3K>6Mjj3MOL)K`1ac%LDzO*5RAkhEL5u z?ABr^@vP2wX5YbUhYMEJYHjQ-@aZ!e{bQP^+4sz5OTZDWmSYzeGr!Mb7&`uGRLl&`H zJWS-koz3?YTHXrFli(xV=0@QAY=VkT8EPRn#1&WUULe^1G9l7`u9!-Zg#W(IZ=^pT z@jQ99&gIWqJ3$FU$dNiqiNt=r>!|!}#+9)nL-9LO_?2oUzCB&D>*q@Dr{@WTT>4MH zjjS%(Yqm<53yxxUnyFo3b6}%T;_go(PV1<%kNA-vAd4|N0I2kehT2K4<+Zfh zk!(DVBHz`Chu9z-1*v;A+>7y9$?qI(ah;rTms1$75YEbx-7kf7xIP>^xEemxsJxo3 zT6q(0C-I3?pd?yIYu30(12vxNWR12s(dWi~1sal?*|V@egerl^bs!oX)F%VU>emHW zl5z)Z=TdBG8@3tCP!W9&{)suFjyZnT)XDzTY}orXHLPYhHs6FsuO8t9V6ZSN&;ev8 zjO5c0w;fg_?O_h@<0I3^$if0Axf?^jZMYfRy|j57EfLDE{?wh7F1;CV(FZrg(6FRB zFl+4}sALRhZ>S7U5LS@}@S;i?b%tPf%q-j_BWf&?rRb}D_c?nym^iDKH+p7Xf%3gs zEc@;s$a?n(BoTk@nAzZt&6ty3CQ&kKOIpS~rPUFIM@sJw;J>{6vG-GRMKn;h|CinQ zY&l!Fq!lV(|9L7EuHJ{jdbNylAg9fU5$HvnISUbOrjvWD`fnvdiSNQ7DPfhT!;&~+ zx9gLvkUM315gSEt)Xw z8e~MU$GeC=;(iSiyRR$|GM++(Qop~dRwMeh@_X?CCqA6jHG`x+b0k=f?+ zj3xGTMnhUW*tMLA6=gR3Vl5lBChIJURV+#ZK#Yd%_+?_RLDTd}Q;f}PW1?uSbNE5YH#O5hw1>5zRGS zPk|q-2E>D~smZ@U6R}u+s2I9bGQ(szEDHZJS>r9&Q46>^P4WbJazG2ui%2uR6ppB1XD)@ zIk2k-NQ~;hru5HjY+c)D-M=_e`IE)kS#^Szy$GXjYquwFk6_k+8qr$TfaZP$Yq`s6 zzO#>l3U<;23q%b^#Sf!LU|p>d|T-ojxsZ zb=Q8QbWhO`73`1g+<0NoekS{Dlq!+tsvL`pNPE+C3C?Y7ynfyCSL-v*HY?}3m=-{@ zmW9q|B?+GOzuitAh}8{eYrJc^-K$#<^&=iL+P-1n{Ppe?(*>aqhknI;B=hsNgGs3# z2+ZXdXXsU4&8-*f6uOYE*{<0=Pda8@tH$`c=$u?*8lc)R$H?ta*!?)-xuZD*rXYog z6g93;Sidulu5FMdWu}!8$zZxDe-K8#*g&Ps%W6U8j#igO;ZP4}r7&1jJubdqp0&Sh z4bR{wNS|oX08-D=0YXXlActm%9u#y~hkOIEKX-s>rh4~x+_KTe;G*TsN!*n#|4 zPSGo8R+ldH?Nq3G-~4BzJ5G1?`s7jizQc0KbxUL-bR?^xR0J^-fBXow5T#F=>=oaj zF_U%}6GcrOQgNAh=KS&#(=-w`cF7U#R|x6_8KEvWB`l5js6MQd2+|=7u9nxSW>Rj2TTy3?_W+95p+|CM1e^yfkXG zMV{a8-FWlyH|*JU2qVR62MiW|Nm-m|f|WhjZKD7Uv#_x6qw{9Mv}8(u`6FJSzL1;u zyLqn%M>aS^^^6DlBJjkk4pQ2Lj+{3v?P3s-o*lV2&nIdmpG1||D@^0&v@z{gDzOOg zIBx|_N)%3~L(UI1xq^#Hy3ad#Qj~-!4cRk03iI-Iq`ZldL8hrQl^W#wFOJs^a>{w( zPZ#>l9tq(D@SXE3sdYDCxw!~cn9+&99f;H#-{74f_sZ)${vlhq%EY;-^uKu&-_H36 zS~2sr%1AalF+;#FZk1gLeW4YriP7m|?|!Lg+YWddc%aAuGhD!{MN=ma-#cCnzPSAMj-;=v@cuZ>nx4ez_gG{k_L-N@cYii6Z-dc|rTCR?Ww+Uwwg9XKk6tE(f&OCc(d%y=wt zQBv?nvZ=hKzWBFeLb=PuuBSjSO`WEBUvwLpGKUkz39Z2@3ftLy4 zOMN%G8!h#Mcw#G~{lj=9z=_jbNVe~uCC1qP2UsxO67G}PhJ+@i+Ti7l3gfdas6J;I z_4&|&6A?yrw|HF4iE0qRvTul-@Q5Z!oV3@1QKi|{w3F4JI$SzAbMA79e=$a9EVid| zf7L~5g@A6<+}zbIdM!%f>`&6@NkaXkTxRb!9WIye%p{M%mwaRafd*sY6GEQ6RL|t! zB4Xg1`XxzL3+(4-}4T{>b=6{``Jq(4ZfC}1GfC~_meUg?2?artrR z7#gj_=ai4)wHR=g%3{=@oR2dr^_z0+Uw$pp7-z%kT6Ir^{I+VPrkVX0@dTq_1#P@= zzNEvNly3>o^I;2T{)reF9^O8|w^MDc!;hl=2#32Fgf8GamAf%>|75pesrf4adjS&_ z!#5FE{^`|eDfMtgs%Y{RRhd$23C?7y)8n+f<@h7#_Z_WvCMs@dd5zh&ZFRZ*ygw8N0MaG8%XYu23jLo_3Q@}gSU;)g(vWRm(cGsS|a$e}39 z)#-=pbIt01l&RPpPZ2RC8!)Y$mY@zQo zSRX%J^Rquy=FQf(mE*6%&fO=cI<1z-fK#RV9qBohF*pCgnpnzUc9RaZ?(7{t+*IM@ zF(Un}zfx;(EFpRZGgsvzQxH>QK5!=?o57Vr0!&_pooD_Om`?lQ#5dweJ` zhcCfDmvqh5@D~{Z_faKNM-;fXz1bl9?puoU- z8kWSxot+@SAb|yIGj79jU?OQx(*0RANP=Iqkxya?a6aWAgLt+;z}2rk84f|TM?+_g}oEiGO&I0Ok&+!LJQ5L|QeJI{CSzKe75 zf1Y!f%uF(~XRn#P*88rtUf!q%NjA#lNX5_K>>;SMqhJ~2e;8t!@<>&a= zM0p#ujG(p$Y6(zdtQ;4bpO$o%9T!WaeK=Do;o13s9FarYZvc-pwy;U%xK4nC*~o5( zEdrPW4>v492;B+Rssr5{wQ^kir8y}PM$gj71cn`$HnMpUR4B0CG=?)&!rAX+);-rp z99RyHhrj!24A?8Xs6bMD@~;R6YkZA7mMkNxy5V8V*9c^#`r(ToKU*TUV1g26N7MAv z^rcZkuj4*{w_+qBvyX^~OQ89bP!{zW>vh6gtj}-hiON2||J9@t(9g5dsecoM$X&`U zGO-E2H=W!oDH6MB+uMci75mseP9#qT*j3B|ei{c@vsYy5<;!O3sgWkK5+FYhmSHNe zR~Xbgq3Eiyf8hFmunT}fm{zvwjVfxU!uRS>>QD&lJW*!SYf|$}d@?{9@zF7V%?biX z)cb}%H)GeF`6lLHwt-*WVrN4T;cx54c!hZ<5QrMj%Mz(Q1O(A}?|7z852oPh^MwvBhZ!N7i0QF_XusOV{PC#hdgh!;|B(y7Gq5QwDXv!+%9F9f^mH)^f4! zkaXbDm9{E?F4`}Thwfa*UnY(4n!U59nCUL;rxAgU_(?r9+*{c|o8N)?dKg z@z}TCQzUPcDH2RE7_B6=DtYeGFk!zPhVni3!<+}{z4oLd6{C5=evx-zvs{4#KqIld z<|$tUJ+}Iy9g7O+4?C??on|n^y1bav3iE!f6c9^*b&22yl6*JZ4#!&KiI`m=o^;!p z*PI6Vt#=sGPhO1xljW|fkmk!O&}lFEQuy;lb8MVQJ5r-YTUztXcQv^yVCZ(#Wui+%b#E-MNn1 z3a&`!Gj2A&=*;z*LCbYiUa)z<%F|K2y7j{~KrDaPZfJMhbrlrt+j29;bl-R1RBQI~ ztT?aS-E3?Q7ncESg&uk!CC?$m3l_ayKVNCR%U;QATn3^$woy|{v=>G4h&BarQY|3V z%qQBKk`f$}7&iOzXMZoGvi|1T>HDX{d?>Va(urov+e_MM$;!U+g>!>|sVZdjKwF8( z4X4QRiFJK!l%gMuU%Vb4D{d<;HAL=#U*Ww_#RneTtPju;A63c<4rmbMK_#@l-Zr}1 zfUwUB#kA9ZHnaUdxd2kdJ^O@szaKIae`YeYyPAb9=8yzlJK%t+H=diX+RisxMy|G{llumYV@`3wn#t&5*qh?!CADeCQqn5=w!-U;_QYASL54qr3C0QfJ zlqt{mTUO`mSeyUyIfP%mOX(6UT9L@Iy>x7J^1xvV7mYbDw0ewOW4Gp*shJrcC>-7R zTgpxC9aZOXVJQ3ypq)Q7I9uA;x<4rm$h_dC{t`r&_I zQ{TEuUH3|v(U-_kC?buWL6_@KM=6u%Co<uH}zBafY%GI64?U_fHC{t&(Y;UFQQ_K?gbA@p+Sz^FuWshOhH#alibl+jbh=K z#eFHH;6iIRZMVC|`9ub1Bwd$DPi3I-)fKhFWd30M(O0GtL7)OfEO}=yQkHqbEfip9 zmS5-eIP>fGJE9he$c}2nz*R;VqtLX?U3Da7;}xSJZ%ASwFe0oSMIgP))-kVOzvUUX zlIDk!n0`EJcarVxG`47}`}sH(ZrfI#(aXg@N2oEOL_-Pk-MV{nR1A3?`*SyxyRIr5 z1Itwu&%-*?7QOjoSrk$?E^>{l#zBs@G29TafJ`-2eZ7Qg5r3|6P6nMr_{fCR(4F`E z9@n$`t0gwWzwid5K2DL?eT3vG z2u^C7jkkBEEfHAf^KRbYNIspq^sso48ltv&7=(SxJuw(?vBwuML9MkD<-G?H40 z4=&cmciHP(n3WTE;~7Qboxv|N8ff<{en!8$?&~^ z=V!fUFNuTaN6{M|O>`@}?g*iym5j(ku%O+Tc1Zgknr2w==LmIwZ|xk6?_wten@gIT z<%ewnL0sN}(o(Tu!|F1uUdoTkV@t<&8;cKt{`N#Nc5TMNX12}fE1`1`Yjs5K8x*c-aEyZDDgvGqCUkV`f(dNQx>39Ft(F;IYHJj!}1nJLiB@K-v zH1Cm2jE)hA3@toVhSeymT`l>pOUmy9OWsxgklYTk(`oK%SLQ%@e4OZZmOJ;3iq;8% zIu|7U(Zg~{*{0km6z%6I72p((JC?$E`_6xyVjuDNrrY{dSiVbZEb+1cd?)^REHQm_ z{$q1gEoY!y$SZ!>Y|=M_S7az5PUZTvM9sKhVQ_SrbG#%(pNsIkl{!6d3&#`|U|W;9 za9x;Ar7oNIIx^#K-wkWs@jbB@Ls0jRy8PcrPxVud$~R6 zyr^H1AEdP@zyI*W!aZ~>^AZBDQFbg_oqhVC>J1D*#T%I;H|K@6`Hy_%@!Rgmz^gCJ z^FAFe^=9lh)4o4QlUr~OnhTZMd=nJZ>$P-qLh3zOg`uc0ke0>3Ud^U5yol@Vd!-R{ zF;l_|aQTi{rGe5;~PO z5C|cx>iWl)6&%80dqTqnA*Nwugs*k_l^;09Zm$}r*KcvM1Auj{+fC-cnK^GR$PNvO zgmT}(9`Cmul`MQZcb=#y^^TK%mXQs!su4)^8{*LS(4gcXw@)~LP@(Wu`iE>bx1!ax zEyWSCv`gE93KLlDzy_IEQ%Jj{j87Wi=!YKwa*^S%O-_Aht~S>tucx5EtbcMauO`eA zcvG?JY?95A&9XTr$y(H5$*DX;y}352$fcd`dm57GnmBo#efRUpYK*hNRsL51;*6B1 z@cw7W^_n&Nznn?sk(H9u5rpIFb6PI;!RUU!PZWGIUgfh;4KT~~?AQ?Io018pt4W0f z<7IHc-m>jor*U*jXG}fOrk`ejF1j91O!c;Air|5#RQBimr^$8K=Va55{cC!;_Cebt zy`A>Q)~BY!aY5>>M{a3R@AQsGelRj_dhM!Is@sihm%<;}WRTJ>rM!SNb$|(hPRYIP zz|ar`*$ZHMAf7lqHI?4k**QHci$$wSUy?Q@P?FZG%^cZn)Bbq*kN56MAog{d&5iIy zgbr11x#;ksCWoifejqKB=>0x{hn;_ABp3FX=&)A;z-Q(~T;lc_`q&DS=(X17lG&R& zp@_aJogjc>RG(C(u*g8=%huuHYpbO94aAELVc2*#LDwl*i;R8s%1Zh*uBu0}f!VR0 zv05+AR+a&8SAKGUcNm!4(a`Ib`ri`Lnks~%(2BSN?bVjhQtSySO(KZRni*v`&!x&0 z+TzfE)#>yd3G)dv%HdvPy>s$arP4FkGIvk>#_32vWB48as}*_5YeQ%-anH$NGhtuE z8Ay8nv1|VmEq8RR3Hvv z7r4&;Yr~L44cnDy^}HM73Js{+oKN8$C|;U8WUwd_Q0cx!YY<;Y{<;n>Exz{GW7=V$ zNLGE4y7>O1x;sml*9(Ttjla&PikC;Oj%jNw42u`d@?sqUG%Ev}fu94+tNJ(G6ygTi zVTwU5X0m7n^@J}6+@F*5hd%1Q8^yEna$WGC7A@L8P8U4ea=Fnzy(cu_q>PDcaUK6I zy;w`FxP?Xd3DHI0)g6S8c%5DQi~c+VPG}>rZ#|fuxb@DWx?U>x8xSzO%3W@v)AexmBOfl7v>vKjqp9#;!hK9w4 z1IJB)rH8o?Ck6t?ITs~@>%5IOTmm>Z(bBR2;%KLQrd?v&}?TZ%t&}2%c)6#MK-}^FK z1c}8Rq@0`uO~2?N`f=QBMZ*LVhTd3O^n*nTohx7+>1(F^rjPP_5+&~_eD<_t^DuVzLxwpwl z5!TQ1X0A2&Wk%RW+I*dz*_#*R!2yo4jrT$xzL<3Gni#U?CS!qD!3Wnx$?Tzobf6%q zV;*;fL)NRnl?!@xI%h?18;&+H*r-OYeb7zEK#7u<{Yt^Dm&bFF;wwr*`lNWeuD+ZM zHm|EsFBjn`{az zq4J()nMuLCxesine1}30Z(^&V64#l}lPo3tOgf7Zr&SXME+FqHUoB9@$lycG)27^svlstqw->kDfpEEBM!Uu~AsN2A zs-Ddo9)Ndx5{Y>;(dybac6`gZ$F`O$5XVNQU}u__ySfBz)jPBgH6 zs?rae){?e2VXu92WQ>sog3wB;Jg&7_Du{HNZ+PX!0wH+g7jsB=PUYlf&!#k3PD1nT zS+uvk4y$?bH_EuR$IN24SV>XQ@r_hKpq5g$C^td?mh*UTZjxS{Mr>>;yRmQbYOi-E z)zzq1R9%l)pQS~9uaM-(68qmrA9b~lKU=Xr1Xi9je6lv|?anT*s@NU(;cMIKpr%aE z%UV$+3ki-^e`?X+`1jeX%bmz5rriD^XD3YBEXPXAp&fSVv$eJ)mcDh)%So}dBEdW; zveEZox-t3fq~(|#}OEklp-%HP&^*!~C z97v3_b7WRe?q|=A8v}ZMN-}P;_&h?x!Xn%&a=Z?V;8?!%w0azN>brkl9C;}-6x3y3ea4JT#%GMtXKlGmb z`COt%KrFYfSMdU|BRWGv9}%Fj6Gnh0?>o|S|Je8CJ=&4AE|f=}@RUa2Wm<%Ku8{@d z`JETI<+<#wGk#%CBcK*wqL;| zQsk15jPX&@HpRqc8LW$mlrP`uR~o;r29emtCE!i+Uf^Rr=dC`02|oNpTQ9)7%_7u` zNp|~4;`B`AZKPRV`=F%o_CuRq7!8=7QNie^icrKwIL{$NorY+qBh9HMBJ&i#HBaJ@ z2Y}6!+01=NaC{g%S}-r>Ek$G7e%TixPH zSEFf1i-y_p+VdCV>KpdgTD86v@UR)fa9UzwVkWnhW+}5mJ;W(j4l0B;d982=vsWf! zhjqo8kdX44oHuLTOH4%-!ur$Knej*%&`0d;Z62i-;%OYp>*cVVBX2tAE}R6T zDQ~fA0B+x%9KqTUcXvXa*7QTkG#i61)eUwR_3Q7Dc=WwCrV2gV*0=o-KZ&0?YCG58 zD_13eEPiS+R&}E3y6Mfh96&0re z_{y8Q3-xhLM_=e{^2g^sY%3J3&of&9Kqf+4*Q5t!x@AA zq-pct(KKP011}_sPsXL{*HZIP|G^GTYb-6}9f!hRFMc-!k4)Lt>(sZi;v>hG!g*Qn z&s|NLFS$wl-OG)PATt6SVcQLVU|mPXVh|&xsR6!e9&)A-$#M&_N3-AcGtwDfquaVJ zCPi$I`yMUk@#??f|MwF;7$X~bl$?bzD?kxx)}wEx{V>u7!@P=W5jM+cAsE^pS#NWMI(pO1_Uh%^jQT8 zF}l7;q##6L zmwpoTq%~#H7@{VZ@9z z++v>f=L5}No_t#cx=AJd04o<{@F7V6bYk?isI}Sc%9oK#1=dJ3v(WKDf1U#U7j{M1 z_m_GU@4j+_GdKV2VDN(pT3o4lxtDtj0(|=@`kTH`QqVUUxRr6(ZFrh2x+-JIwfrQVojImwQThXAcq`6B;XWw1G*RClzjnso_iB!rTUg z`L)OprJp)y`JPjyrBMuvs#t1KZ~eES_yDCnzY=G1q>(&bVLh>mL%E2EdjI8|l)EnM zslp`UbC%(U|;(d4~_ZXs|;uzRlZ7ExqGqHjl+!MWXVgC z0m{kQ&9bS!py7D&j;gP#Tt1|(jroV!N#%q^qLg8fE&@%3VzD+_y`M7m~NauO@n z?bV_+9<8KYK3f52nO5XZ53cb;*X{{!sln@41>+}0e}DW*LQLpLaistKh0`VF9fgX4 zm%-ha@w;!tTP*&U3C$mw+6ifQimSkmTvtyH{jOKHhW{& zz|+NrZ=Rvrq9rm@<|?}L5mPno-QC7`)&61~CQYrYCOm?<7~$~J&myl}6wX_>=l?-0 zUE9mrj*{`1A&_?z!5a|y-#d;e7umYV8L70`^MbIKLjL0_p}>(nJGncXBod14$;*o1 zX2j~KSJ4#LRBJB~Am!BI;2=s7Ow_N(%&azu<{MFx`&Ms;r&X9#G4|?1JUs?xA}g1| zu!bfx1A9jL4yRtF9SOKdvoea9W*5dcD&CcDcCTqaHQJ_tVuKdxfMojanOK;aQ`6Gk z8yiz>Y-~hDNB`Gud*wJPDv+1KI6FG7&T9+2&P{Mu^pvR6uBWNCbv!>RWfz+jhc3$; zHNC^B-wqOy{gnDw<>$iph?{3_kE)!-z8{v2*#JsegZ%`BteSscUTQcoPmwSZ=(f=; z2o-5m-}^aB1-+vK0IfHWi;o^+GC_m>#jA(-&wiA5S(JbR`r5kn)(Cr&kMBvAiupcs zGp9SUhKvXjgB06-GyP{eMKX^T#?Q5!n9`DGCjEj^3xv6ECs=|=uD&vb&E$ObLL~NG zy|REd4kyag8Vwb$RNH(W*Zw=~6ZrOWl_bBmPkypnu3{FZa84WtlL>ovw8bef4C@EW zs|HPGZN~4@q(#rRV3OYQYu6H%05VRLV(R_So~s`8hP+{BfFBj+MwD5Rc%%JA^STPlloOI zz}Y(tJ#WxOhRYuMu*9M^yNX5nD;|_FRT9S+OaX6bfpqQQ@GfMT~hq_JY#sdYPV&exVV8WgpLpx6=Z~{w#d=Ih- z8zXZvMRi-1f=Z#|xtwg=YM=K{FAJN-?r1JUOQ|gX4Mi4A_lnEHfR?)hr;vYbR%>}f zAJm?HlS)JcYRgHLm#FljaH+q*R}Og6nlYo@oUfdF@4dw}ox;3M1|xlpgZp+|p}V(( z#7>w4BJSy*|7jWiHl6%&xeC7!UE$_pjvB_&d`o9v<$M8EfwC~6 z*ra*-Qn@VD*dx<2w*x^f$=b^*8F`-1aE`S48KFbM|C@=*QdMy`5C9-v3mG~&X-B~!RIPN_1<~;$qPC+thF+1w( z$0kj~UMAZU<=pPLxV3csQ<2@?40Q*`)h1!*3Ih}aFQX!>%1g~#3rudH1ICV;?%b!l zC)QPQcYc(omz|LSxkl&U5k(Etx-Z^6=s#tE=tiCt* z^umPJ5>tvIkS=#J^7SqT$hNAkKK9Kt-}&(hTY3Z1DSces&&Ombggm zpp)tayUQU75KQviTlK0z;G^5GxGb*PZ0xj`oEhbOMw?;#)8$F)8K8Y@~XXnz$fA_z6!ZMv~SnW zuT7V_;+g;%l_e((D3@9an74nchkN+r8upa@4TnLwd#WAo=h>5tPzmR!S|OTarcXM|bV*ZJ?O%ztloe zFF7J2B4%!G&4z}CfqmbEp)JCcAts(2^+K(xUltvP33DhT$Ef5G`M7aZVRJV zWm@%t+GYoo{$Q)!%>~-PUWyCTB)?1-)XHG`fQ>T_m?+#fp1!GZ9PYni0xP8yoU+Ke zV~;WgmRnU1%SW3o%rvQqZfZE{D~bQW6WQsH^pGwXxBM#oQr$BUN4UVFgY=(xBWY{# z)Xhv*Quj}h#$+S8d)^9G_d*ntJhA{yi-`v}-rhDKk6{t|c1^VUitturB%5gO4#?Zg z&7){%J<%=pTqmUl7qoKL!@e=?r?Emm|)wZ;fZd#|M=tYB!b(^^-h6yEiCz{x5FjU6Vkj?iyf z`e9HZoW*HWskSp}Py-~KgG8ebyh?r>H`JdX@Q8ize{uobyh6m`UhW6{p91Jy`?hAn z(0WLYuJ~hYfx>bS2CnC4$M$y<4pY~}2GuKZb2FBXQxU$Ntmi9T%%cF~Y=Cg6`usUv z+j;YzXy*D@HEMu3o~)!!gRbL&=%~Qsx1bO)M|7hzUF zC813OnGiRxx6jP=Ra%5pC7&R0KV1{N>4ruxaq}Ry7fR;kJ9Zmmqvy%y8(6fhH3FeS z<$}Ov(oc!LIR#V?P{qAwC{IsaqA6nm)M|Nxt1j7d&d2Ouz~0Ux7hBiwgx9S|m#+|b zXRR+O(jfh(imR*Gk5x>P-+ zSC}@)M^sycXXq67Ab!0}BPtYY)z&h-R{0IWE19biP$)oei1nfY@jkJUwPJp&UcYk--lI_et90aU#dBYDQ4r3G34r^@BNhkNOzMFRnu=v*JR1>r7_Ap&o*c+Z zUUy)9$XvU*NgFLJ{E>vI=J#aOmTt(M0#jL^P~_Vy554VlZqFhA_sjv#>e3Yo1>| zjGswFbojvcRZfxsN%S->7MNN9r zbDQUr`&VY^22#Q?(0=gp3E0ELS;y8!UFf*JLRd(#c78tI34_s?8$Mqc)$Km|Wpy9r zOJ?5R+`@=dN>RaiczAncM*rvm3bTmVG9qi;9q44?`%=4G5%JW7*M2qo{YNhM+o3XB z5zo|nQr*ciX9}|HS1r2#M5ZRsrBn|9I~uCGNbp7vxdC@~fH8^Rz#~8qC`cXd%qh!` z^rLgavC+PcUK!J3+{|fhG~(9x4*iG9ljpZ}0P|ke z?G7j{XVsV7y%hd0Y(Od^({};zo0iz=@-+1lPHz~5g8l=u%K!S%2bMq^qxDA$t)6>(eljyBp?*J{M?- zAMFg+QDZ07I1k51UL6uO`X5M)Bnd9+Kzj<|QD9#0?A$YwFLf^7yNt~Ev{Uz-8jM6d zUV${cwv?GD5&DIvg9&?Kb??Ad(=F2#bMIC?AD({66b>vw`~Ugd*^=f)@yGblNhx$2 zWm`Wncz6j>*xo+w7cYJ(J&u*Ae`2`esK~_n*Y|Pm(81wmzh{#D6Yr}+9~Wj2&&=** zxyv^q>O{zSc09>aF2%wRoPx#>KnQ=1r9@n8u*kK#G-I?WQS^bt#pAL4K`hms)Legl z2d|iXA@X)z5Z)$6RhYsD*>27c)W4m_-59$iS;HRrxnK>ED^%tRoe=RxPAH0AAUs(( zN?F)?<0V^^qHeVkDMx18CjyaA^b|=ELEmV<>KVwNP{XM^^kr50N%h`11`GfA@gvSl z;JAJz=xi=U)hBR9dAf_jGBCWp#m^Rpd4SLJABL6Hd23j1su~W$n+lvO$ehL@dFo4jk$UH@!gl?)i?a;l~DUYcYAi>5_7G*6sXl?8UP6ZkZy@EPk*~&5prLR z1L*g+K2M!rx@Lpneo(q54x=_ASobp)ryl5!Cf#gtCwI;6-qdlMk3Tl`1b4_%EvBG0 zI)a-x1)^x!94XXN~F)#09#6hq~}hBRrOSME;lf! z+Lp!r_U<(_nI&R+uI`P{dd_&Zh?gQ@pd14-_4NFzFc(?x^M}pkqT1&n>xTidHmKGt zduueJf`4cq)|ij*CDd|zPG)#QudAQdsr-PejI??>Hok~k1JFHTWjBr1VcyfyUj(Ch z;9Cm_Ftujp5o`Dn_tPC`wr=BhwNHf^7?^*I%Ftx*l}=0@Z7p&GkoAt7sBtl?hunBM zioMwMze~b%ycu%NoQwmC!yZT(N5E+rgH86Ft(B6FR^R=XzHlu9KR@tRPfl-X`>4Ou zL`rL4DPulU$DL-c(!!{Fq}!#av{5HqscA=OaCFCSuP3ToH)4Q6du#Eavs<5|k+UzS zqJwNR(DmPw!o*Xz=r!$UO!qR^D4oIGvIQT>%pW<0ihy-Er;!qFteIrx!A^O;&&$^m? z(+m}iLOx>Rj;yS#O3Te|RD7}ud|*#+Bb@yTDqSX_;__irgD-gJtQ59<>HR0%RHAuD zmF7F9LLYSsbWnd_4vBg)C#O#TaW-v{T*8dKy}F5=?gF@ZvPS)`357= z0Eth7E;Q*K!?IK(P=o7iI{+qxBmEL@1LDG?5dZe_CD%2sZt>6jO{6Zby&DuoMZecW z!PQ9nPYu88sMGj6P=$QOhuBn-cE4tu4gg0vw9@FI|)P2cE>E3r=Y@LcArBt*T^J-iF6% zs>5s#8n_*?^^w1bVk|)wD_Bj0CXe|Fco$Nby{$mzD7kY6#_+}kcBB<9<+aKkiE4`5 ze-@Gjk#9#M(L#ZSHH9o5dAsl2!-IaOS?8_q1i#;GOQNrtaMphQOn&aedj>QYE3a~} zk(0;dCDc@K+9=%rJ-OwbTAUpbg-lBnPw)gm7~u*wyA8QuE!FR0CGkCNdW6{yMMwAq@#6xGHX&+pUN zmk;3a)Da(NeK1M;Tm1BO@!dc&@DXI~8N?)m;EL#&uOF*!Bi@OGitUIu_si zILTge=2{L5yPgW!03naR<$sQHWB45{OFQHZQG+5f#+3$v`%{2&PEjT z9g(x_s=oVz2?Y++R)MijO4*6)Kjv)n=1UDqdkDnwDdcYVO+aQIqQv4kEI;j1@448R zN4{&E_#-q|dzUGDn?cp3w=>JUkh04f792Zo9^%Jx}EU)04azIb1}H>^d^ z-+{T7pZSWO1^Xju&1-tLNDa)bi&zQ%m3?}UySh>)rho4W0WGcE(s!Lcb)&B#gN#r| zMlwux-OGbTv`@aViW%!^)QQ}xh~i^@3cW%+IoIAwY+82B?iF`t4#rGR)a$tQH9Z^5 zKRmxw@`#Z0OSr+XcUPE*^pT#P@X4nj(>3ZO-vEykpDtVFnJdLm@za|L8hrd4nR>_5 z9Wl=O93*x=ccybR5Qzjee3!cQ@jr!*XV)UNy42$7Blae|hw8($sjI@D(qmyT**r!b z`KVyLiBL{dWl(JtYlc#^wuvHM=FdjOz*H|0k+0*Zwm~Op4uP%_ zlnS4K=rRM2_~u%_wNUfK>*-*}$+*ApUnjn{KI*Bii#FObNQswRZL>@baKU651@u*& z;(yb=z~*DkQTUId_pntWm^dSe^Purar$UIC{5Fh(c` zbngszAGe-)R29fUfR$0}-D7uKNdB=~^_=*%B1?qeV9_zX>Gv+ivWaK{xqiIPpg;1b zj{*!%F5lK4i}ppsr7<^L`;q2ZQuEiNO#OsP84kI1#DaQba_J+BawMa}h}W#NxR8_4 zS$(=0HS+}%r1tB-5}uC{FATb9bC?p%Mrqfd-mzUZSs>kOoo8+W!U3}6HTOD3p0YVb z`-C^z|M|6rhzt^N0M&2f)(SLxS3F6c1(|E{{}^H!?K9a8L z|L1qx_j+vkISRV{{!(i+S>-dQhgj+C`j7O>!uli2d}hEIlO>L4$vWaJbc6KD0) z|DtP=uU3QZ6|x42bh!J~=Wt;EgWP{rNC4eeSAr3#>~dNS;sYk0Xm=O^PkNpfM^$%w(iFI0H@{}llIdjL zho~9Ky1usw^4#4{&B%yc$pC`HCxduF$Iot5ZO4*9=YS4+()>8!(P5tuk2JpumLuHPfdF3w>%#~P;8SBaa}Zy zGmhF`{l@`~M=H&=#(d~D;X$#=O4@^I9kJxpq>*e7B)qt-X*ok6EktoZudc2wSI_|znS*}fH&T;vAwvBo(mWX|Twjqm4Zf)%6M;_zQ6 z%{czmsnjkQ*u+(id}WVlcQ??Vsmogr zSD9X7L=d77sbn1j*00OoCnc$(+dc|34(CnkOuS3ni}8DNDg5pJ&qbE1Y&*xnFPVP^ zeQxEgJoMtT@1sW0aTag_6DDC){f8c!ayQjF`hPF5*nqe`A+4lM;L-x#~-if$& zk4ihqDfN5nrC(=+(EV#~;{Xspo4#C3Uzfn7SQ&HlQeo=m>CD&IOk)W{$d<@|UaD-@ zKZx)h9_Hjd9}*I^OxpM;VVD}m!vU0xiZum2Wj<@Hd%`tnMc0&-x`8F^Lf$6}t*1jh zYmK?LCk9a9_9*>>+?g{8&kYQKt^9y3EP4A8x0x0$vx0O(Y4)MK_Ph@AW4<4;6;G=j z3;5wx&SHW~O>lDfoBF+`B6!P`NB3`svsTI^N{I+y&Cdb}xgOCKhw*ja4TlVXx$a^2 z+0DAwl1Ycyn}R~Ry$7l(Z@$=YO4agHUyD>Qp5-}T=& zj{I#vx8UT51X;%t#}28ezlE2dKJ^WC3L?qHTWMQYf6L$i4v~f5>zoo7U0DFKkdBg2 z?R%d)HUb!q6nrD)7llX?mpUJ~&i0I?aNywqOp6>oHKJ)=CCRl zh6kp&4)x`2k-ioWFkdS6W{AXp z6`iqAJm<3E#-=#;zo%KWLa>c1OgZT3_r~hqpIm8f_ujJhFmY#!L;d`v%8WM)ewZ;EHNSRU|wSB2MG z{@CP#d%+KcF9zp7)p{)Y19RO$cDQ<-qc1MGw$bY&rlPB4GXBxai%(z_QrAs*y6Yr-HC76YSrCU^RGVq%fJD(qm%NugCA+C z`0ND3HwoHjon@=hkN@4>FHjh9@OBGj^7o_9l!uV~q0Rlo-`C(g`M2KMHecx9z~2#U zKJ>6BZxRs^SB*wUN8OVzyPP?YBG?xA=7u7A=C(QGXrs8f<@_>|rtP+D^fDCq(%n|H zX&2SqWh%E)vv#ZUcI+_ zeQt72PH+FLyc-~+!Y&q7T3w6Sbu*m;eFzAH=E(Z5n$qrzr82aLlpiQwQCu8*P@uYW z2WAye2~`Hg9xhSRMbp9V@0@S1R{8yL!4w1D@V;-TCO#aA$AE5)f_XP*J%oVLBp{kU zrUZ7<-`^kOb6kP@!&4X4znp4bBji)18*eG{iE9f|!vUA`fdY)gq2j4D=XqVKl=GUQ z$-=)~bZUdKV?a_EwgQ2zejb*gZhXg7nWgY??F@GujJ+>qK^@CYT}{&DQg#tX2-(^i-cA9p59d(x{mr4-BeSNoWwB)z;zl7`myTOn#J zg?Q;^id(PJkXI~~MPUCr7(POn60%JFL((-ZE>5(eL2)4cmut$eqKnTUX`d=%Mw>y8 zG$nF#7S0SB#?92U9Hy2@7^jE-FU}lkVR>%_JA)a%yf9f5lWgOcid_OOE#`)e*&3Fi ze6^sn);6Vpq)hx4`-HgR6v2}0XIrxP))q*Q1p3|}8Exo>i-jG$Omn)G8oqx}QsFQ} zxH&@gk@Oyj-j!PJmT0$X=Ap8NwPADm5CsxG5%dZ~sp9n35x25?gcqe}c&Wv#dREv~ zoMv#?%iG^E5Z2?3;?5mFCXN)^YL%RWwmK{}>$yf$R7t$3(@ZPUQd-&-m@R{q6-TCp z(ryl!z9>D@Gq$a$Zf~)w{HY?_%L&>nx8UC1v4`TG&kqhi+NBLt$Va8l!^4kP0(?Kr z75AKlIt>Jt8?^rHRx{j1&)K3eD~ zDhWHIN{^B*JqlrYZdA5+#>#}pb1S>Z2=1muvY^ZOX(QS8Zd1pkdw1vrbc7ve*vxh^ z9iwYF=Wd}na{|$(uYe*TPILEABYRvxkoJ{&sT)8B&0-I&45O!-uSxr+s3@@Uh;9Ge z9LY$O`AVcI!++A9Q0y#C=xf#(ET6Z)At_@6+h3uzc$jL&BWLgV?n_+U_E_%QjD@2N z+*&B3CVFyq=bd7M^GRs>{i5CovQhM9y90h8 z-7QJ`uFR*iY+o8l4R37qo#E^qcuym*+F4cBbZLP0-Su9E_eVgoFP)SwD69kxt2--6 zT3hw1=$XE==p4Sh2drpaSH3&!w&0Agg{d4~GT#O65uO86Mn1>`M?{7~{7(AA8MUQN zp7ALI=2#lM$Agz1uLATyp%KijylEEi3C~G~ucVIP%K=pfg`Ar?ry_g979zN*&Zl9F zB_50P5oJZwd|s*BAE@~osT#KT1eTiJ8a0lnd3k>?G9S+W&Pv~moNjyKThjF+zGx_f zA6OGk#;~K%>|~(Y!+YJN>>rgMcG9Lg?JlcJy>sV(#3vb>5HN5v%5Z@I0#zaAoxKeM zbae{XW9b9Z*dJ*_wz<6m3eBz#yZ-R1g8!r-?L2mJ^=-IGlPpdQdUA{`RbT@_L9NI60xm%l!$K5^>BlW7`^n%5EvMGlp^@exdLmD+C6L8&|y&i`1j5Ja}^{<#I{KA*s%xP^DPT53)*( zi~D6D%t^riSRezn8)j0!rO40888Nr3LG&xSw3WIj4b}oY^k4n49=M#aW~}uup|{l= zJC&yI=56Ub0mAe&G{x{O?cl5hL`liBlidZ8+oXi9E@l2(eHaP|D%OkaEFq3k+CRTs zI>g&y`;zqo=(EMbqvDb5*mCgm{Wd@a5cwKsGm0!e*dAZIFTZJEHXUkv&42o*!)|G5 zY|PVk`B5M0lfC5_o%*%vtd;1c|n&CCw)zS2Y>z%^N-?{BxDA^ zZ^r#nFDKVbQLh`o$>nz`0Yr{_lC*MZ-P2vIUTtGfLE|k+)6&EeU@-w*tP9~*TPs_0 zErs2@7q8Hg5sjzXCw1<6KrH+yN1p_@8~2lGiSAwLDIf^Gc(TQ{v}A@9yA;YujQoAH zq8luvzz)$5^!_1DD(bExoP%il2a>-x0)t_C*!&OpQY|uRv|=b+Ne1J)p9Etpf~D&v zoH1+_IFJ5D#s$vZ2w`Z`F)Ju8EL(oKUOf=hFxsla9BlW5tI3C9I%@bsJn)&4GewL; z89+*y-H-eH8ZWt|pl03glJsXf6VbAUJUA0RZUxoaRDBl(yD~k}0J^t?a6Zss9zoa; zt_bt;rd(++Ai$bBNxiGSBlGSZy=?xH~xw}uFpZ9r9v5>&V z}XP$JvquHF52BjI!Z(WbCWck)Zbbr!;~ zp3RP1Qa!4T6zcjeBn~+4HZ_T}drTU|J8O@4z4=+iBav?5NHSwfxwla*_tcpV<<}?R z(%a_J72sW061&%s26HAzjTUTy5GEfpI0&k9TU`8oWlH(*Np2wAI;m|FUA6EvdUGK* zXwL`$pfb}`ReJdYIOQOOxiAvDNn16tY?sMvrDGV_*#y6O^;B<}el+=P?cBLeAL2Ph z)x%|7h2Jww9I3yStXmL+8J`r{Zck#hA5In?l%zFWf2p%peE$bhp%KhZHw2V*=R&y>}A2~;x8nkjU8G5`&DXCo` zKBeCq3j%p`(&v1X)V;p4LvC>v+P5`~?_fiOP^31(;)znp{7JTzyghB?$f+El(NnHkQ&Ra z6xq~P`4*)A2CY6)9{Z734bB~DEy}W1&%1gRp!uaK(d%c49e1`oU`4&-&5n_|`dt&Tguq(A`q&Mj#ge!rvvyg$0c_l}vFvS! z$ZV6_%u_<8yPOP4#o>Mh#;al9+veo|-4VgUBMJ9d?D|6t_yl}jzA|vuuG9+RKMx%u zxTayt6-_UIP`jG2$c7SsNyrTuNQT1LRnYJ01fQKgWF`}Yn@|cvWK4a-#f2E=eI<8S zcor)?l-f+Th6H=o08s8m1393e15zFEhwu8!o++-#C3m_DQL`&Xn!t1Y27bBDQR&DHWqA0~BO%Ns90d2$k{C0S0xEpIv*FL|^f@0(DASrJ zUlf{;^H!nrun=x47Hr<`-cGUULDZN&*^qmb;HA_%{_`UHr!2^Zxk|bw9DHY7?^V?h85AATUn$&^u%^2H$3KDVb z?B50l{TJK0QTHx*=VvC0Yj6K8b*Z=W&6Vh046adSE}jo@cQnT;m0jBNOc$Q-os`Ll z&&9ms1 z5#H@^D!R{Lq`RKbFbK}OJ{n-Z!zAu|e|OHGEm_V^!h5UuehYgJvH)Jg9w$-pz&v>V zXBp=8sQcb=fr+DA#x_Z{5jMKy?MfrzTs1%&KXZ=s>txre!2du!M6wwCbAG_Rq^xsg^DGeT) zWeo$O+v?H==g*YX#)ONZiqd5dSWaRFe}e7i-%b`3J7QORXLD!nrJQxp92o{&02*^I z<`rvocH_Rtiw)^QcfYA?5X)rDv4pMmSJt17;j+Nr=w$HQ$+=1C|BwhoX%V%);jzuP z{63#hj?$?PO^7{g7!O(^wk3cO?`35hDMXNuK$f43Q44i#czcbiBnDykXKz}+Qvvl7 zqcn#IZ`=`A|Bt%(Ms0RV9V(6A{{kMeeDK!KBatObrwPE|yvTem@%i@$1U zCVe`s-c*p>fgd>aPMopqSN|D^H{)bsFe*S-QgFZTzo0tp=MxZE!shUP>1s}hPPJ57 zuD+uxq;1khpiJG1N$Yo$qtciYIwF{zXVtJ?r&`U^`gzM#@LEE(KmF?ttrI%^TbmE@v4G_QRk_Eq!gq0n0Xcjz}hRw8Bd^I%j!Wf8BMT?KhHA z2E0*K=b!SU_iqB>uUZjj58;L5E5UQr{npxQSWn|(b5jgzfpf)Mgh89EE8tEEV9Z?9ozS^dPs%fIkc#*@0u)ZxE%0}6?5Ks#o}LqRt$<-gdr>#By2JpFNY z{D)syc=8tK&0h~7wL*!8RYvLg`C9t=8AG>bSvdt7B~_Dp*9SMsMJ`@mI#S}Jzn>-A zVQM~4el}NkaNyzR=SP?#Nm5ZC{#L`Tk14YA(LnZN;N!>1NlBF1LZ-?$v#6M*CX7vP zipEJn5`{4N5*d1VmY$K(wbYx~wEjL(v~TgIi}|~?g=J07Fz7s~{wCSw;|t)8_eIU$ zU#gF3vf3hXcx{~b_GtLYvQP)(c69XhX(OK9WOI>>)Y_;(LF_m2+uR%+5!WPnh-}&S SvTBQfo1v+ut6HsW9r-^+oj*1J literal 51699 zcmcF~V{m3o^k*`$ZBA_4$;8eR8P>_r)?C(h^Cn-5Gs1RDI{xP;^H=K9nQF~ zo<_Q0s5z5bJGRR2JahQkj`;7UC)3keuNqkkr@8i`x{(BLN0VIA(@lBtV-QIK#0&qL zu|+FM?>xP^9vvJ^bspt-ZYo(WR;I6Zd%tPZPl!;H`|-q4;zo-Xz9^IU0i^3ppK?l7 ze1tyUsf6Hxjmj?&FDP4o%ExI^=(R(p zY>sLX3CtGCF$8jB*VlD!9}nYK7!q^3Jd7GvGLAj?2-T`J!k5m9y+a=x&9nW1!g`x} zkNf*^SxJ*hA2AVTqCfmWESD;a8yk}*UDA!4ts?<(sro|GIr#X9P++k*lCrY0Xu8pm zLez#ctH~cKEzPk#^G_Z_=PlTi7zTFkB`YGoZzSzBv+?l_e`K4*AVlE__7r z(a}+24vv&>zWr^s)&?jm*HwD^P!*3(jSbnf%y)UZ78DlRwd)XzXld~`10GZM&Ex46&?}>{70kB25!ej z3@}4QU402BA}tM@g_U(|e4K=xz9}E2H?OEDh{Jky+m5T2u1|SS7(|9nhXE@+J^g&6 zBh}?%m7Pfd5|W#n+ql_MLPZ6gBw%R|Ok}`RzBG};dJPbl8%v(TL7Wjr6+au7{8Pio zC|soWH<;|i%;tutR0Kl3!3!ed)k_x8TEI%36Tc7DhdfuXTSsgb!o>4s zXs((1f$_fm2eJ&)z^~tZY+0aYbyu4-S`h&va9kO2Y3tcTpsH~!BR zx%ndI6rdq1{5c0NMHGarc6_5sfkI2af+d-7OCcJ{t2&Z^3Dk%ap<8ixCcUX6Gq~I*%%O+hMj*jzK{vDoa-vCOt!}nkV-rt22&7qCw>q z%uDTrqhfqP{HNeXHN`Mp%-FOI+Z&)@bitITPPG2LesI}D`5}_z;7_`I7ia_h*a4G< zpCs5J{;-f`u;8a2KOa8+T$n=#MM-Mti=IXWkL>*%#|So0M{uem=HbDeV6*?01P)`d z3Kc%9apkwgmn{6dHfI9~6V}45tiXf^@9S09^CvB4O(7rTJ%8Rlk#0Pop~Eko}UV&d}x z7L*FH`HG&S<{RUU6Eg@9){OjeQc*FZ8Z-IV^!zP~lJ*RjZ`Yb0?ePOvtI0y_+m!9? z?SFz91clTR|4aN+U5z;9%Qn|ESRl97oP>^rMnu$8b5z(HlT9pKUQr<>FZC19$&L#G zC$^@S{pa(Zouj2KgN@p7W7_KV9y^9ym~H|dL5#Wruk+(ER1YP^ERzL+wRFmZ&j$EH-mi2d&Cfpx@% zFbKN6)8aGk&&67c1l^a?8Kk1mz0x&p?^?Ch6ksnrzgjTPsqqvHGqf` zpU0L^VFPMbXuO^g4%Q~R@7u*#oRJ_y*SgNQ%&j>O2>VrOKhD*S7!EEQY_u<+C#yJ4 zUhkk+>Byh@{SIeG?@l0iZzYK=3`H2SJKByNC*$7?-=HzPNzk|R40h3t&C?E*wepAc z`E(~I#Q4?nSY=-XOu$4tjkjd;W&77`y_P}07Gk)4vTUVuj z{!lf7bMXZ&l&jL7bFBHO7h_8sYGDoy4N(=J9?E^Qpr5uQ1F^%L?EwY!+iW~~cj~cl z8C0=Dl+;6TKb!N>HA=!+qGlD7g9Jp_tYB%)0$7A9YlRh;t@2;^%XH0)(VMTca>If` zJJ>P=DJ&)ytKR6hI0kx8oEHDn8Zu;P{D1YLq@B1GpJeS@SAu4`p#w@!`2|2t@OK}6 zoU-po;fr*c0HvF(CKmaX2ftWkibtfX`NJ|8S!64zQKiKuSxrM92QmhX+JX%?`miV9 z3d52ZbU>>5s$+vE{ET95v{}hr5K6ZWxwrSkR+#*pkn2B^HG}3 z3Aju3PJF2#Nu8_dbha0SHR(*g<$vqBN&Vu5XIlNzlE`{@^{+aE*tgLcxIOvG{(3Noe8)VWlFuJL z--otO50P(g?AF!D(OvLi*8q{@l8rM4Jfyj?+7ByQ3%RY|o`1Lg9IjLVs5}m^JW9Di z0xuN zn4KZWir`87Bk%cma}3}9bqmMsP?F;D%D>7Ot8{}mdfk>`KVk+mP=G`CzaP41<4RPc z)^MJ&D;eILT!m5)*L48z(zl*jV>JcsFOeIPJ>BFu*P0Cx{g1knjprZVs3E8C)M}%f zXwci{_+fXuCnmYTpRpA&b9)MAsWMS^U$XZ9;=|8vwk$9dUUT!C{F>oRFDf&p!&hF( zDech@g>F%`~;3MBl74*MmUaS98Ef`z`!v!^CIod`@Q*mktP$VD_n3R%?#x(V{ z>(tH`c9f5Asl8?Wu_aA?om>Z8)2qCGyzz16F8(G{R|{@Viaj?ZGl!e>@2?L~QFli? zasN+gz7ioJMX856?^bVy8HPHRvWD*_BA1^(OgmYByC+hkV64k)dGM5l=1xZNvm2I) zRw^SkOIuaqwXqLdQEL1I|C+ZRFiern?DMmvyIBO}R|=qo4b2 zdOnU(0LlO}$Io@hOA*0=9cr2I9MV=}wFSNE?pLekP+&@s2Q=Pc_l)in|4?~lxd~Edy_L&(vqx+d zx|pWrbKS993WIN?nFyrO`hhZvrl{TT+UbqO1wkc6>mRV>0*AgW8L-T0Zf|HBDML%K zS!2tddSH1ZmJnahZ@*;U+z^*xi`}vctV>Z z2TEMI7tPpu&@!;&9!KzpTJ8?#OSk@7r8W5Lf^tsBq|>#w&@0Tu9PQ_D!(+3-bLK}Z zUcjlohvg*|7_a<>=l?Q+j1tJsDdXN(RkKsS8gQ?BW*UB^FLvx07_DCJYX!Y<2TCE9 zn!@j<-s-nKWmoNc@g?{xbJ#6XSK-Vy&~vlt!c$!G%VPfxrgb#bsc?fYepaXUa(^>s z_^gh&DePdfcXLfq4f4Q;n$J;>(I^---t0l@>;1_O z^64&xWn!)7G;>s*q4Fh8=2hCFTw658HKd(M& zrPbbV6LnU~lP5RukSFT*PkcM6A~}X4lSq__Y+?~H@-S_W`>s>Y++Bgy0tTmI_Mkov8Fq*K~Aspt8EsL1E z+AL3zcVdQ69_mdtC`$#OE(H96!Jq2h^!EIMmdCAL&C4A=_%4*Y8x1NvSswmwV*6E| z)d@(L*2%lh4f~ael;aZfx$*wtV8)*uJ#^kLKiWQD7Dz~T*Io)6)4h7YY1GErD0NAE zQ0%YXH3_{>HDQc>DMAT+W1htZ)jL%wwp^;*0#p9WC%>S?#KaPklgZmW9gACAHE3vQ zi-(m-eR}j|=h5fc$dRGLwysjyEf*!{RW+*G|C;adTE!CdhyOmhU08B2YJ2zF9$Onf z&E>T3$FpT+DsDEfR&@3pqU{t)a?Eu#nGGauQ{8ZuUQ&4{U${TckuRRfvn^#vJ75oc zM(K!CY>LdqsyVz?7ubF!RAQ4LhW1}A!vZJe30XBjLsSS!7$1%J;ZnHS7Shy(ppOi+ z&A=~jPAutNxWxX%>_|}F{D?s~gXQja#d=Rc&dm^RAywFa>&J*X-X%6$*p7$*>m|JC z2SPwo;cf6Dh=Wq-`B0Y)UX|tRirZTGsbFnSuzyBIqWtI1TK+Z;H-civzgE6nauHWdeo{Ga(l&>@ZF;q_m z!d9I4=hae0#u)EANF&!M9{cX0K*f;3l#pdd_ZJ?+*Bb<4CaT*53`0khcPxF9>lC($ zwyp-1vxZ)O@Lpt1xNq+*AXDwOW@6o)R+0Lb%rChNY-eupQjKj5rO;s$51z6;VpY}1ONdl%BC^-*gv*+Ya=ho7r>X(`KjUPc9cz!9aoI?MT7heG$0?1g=Y z@hTD0u8cIE+7~Ynbg;P5^!l&&**g}>>LYh56y^Q)dR^g*iz)oPtsqhzrQ^T6OR8R! zrHH%Nr{NWI5(VAW%)6P6;EsCN+hgu7W+$xg^Zs34(Q>Iex!ZdHBQHn*89w?H`kz`) z(?rE7nlOdoivMY^hX9cf!;V2l$h@fduMJ82@S+yM76c&X*`e=%F4AVOcmIT!&mMAy zZ^DNngWT{X)CF#!uS=vK6^mtrHo3X71Dm5n2e?iMi=YLrL zC*fS-t5Q!zXp#u!nr>DvoP3Fr?@fJK5IqC_?`uFkjW3k} zibpPAdP1^(oI2_!!vO5u$zY_x9i7XibEvV29|tKTIdCS`YP1}BEI=S3R97l>u12%F zj0-(CFZOt^dLR1>AM+icNZCN-Nlv+PbUQVt15ZkpSXi@NIS4VCl^Z?9M0`xTd<9^z zXh>=~vO?l-I2qYG5~)6E%uw%M4jQllWA%Fqb8IVq63_W?^QP*mB+jYcdpYy7%5l5G z(vj!YpvW0eIH=x(dmhoI4R=@(rsKO%*v>&w<+~l85e)^hSH&FOtj&;amhgsrdlui^ zkS%|Zz6d@S^i~ww_nj>Mh$wJgF$_Yw2DL*H{!J-!Ac9Huq_Bk!8^)zYKws^o2_-iJ zrmGygzfi4w3N~Ko(%JA)P4Y@uq*U*{`p(V5IJ{9oqGF$Pxuu{dCwxIcqP<44iu(^| z7E>pdzbXJtH28-C_+V0+WVgbA`crR~Oxk2)PYCi$Z5PVi{&68Q=j43FX>^u? z^3fXTe^sr3YV=i6^|}_XTzFHK^ty%pl$W!y1T!r4U-IVs>7?t_2IHW=!+1RxxBPZ#x@Y9w2Z?ARG>-NRK( zd!^(3sJY#MB>MYTX}P89_ez?n8`CAffQE{QmlxgRIXxZWBT|m#7sQNrvYdr9>SIpaZVKh?q(z9DYPONCU`gZ%K-i>zMUjz^NzdWlE+FIzpgma$c|8x%j?+C)e zAd7BRj=y9~i#cP)@`tPZJ>w}pKRDxGcOu!mQ@-5ZaYI(ftjYSXwuAyrH*yEIBom!B za`!NinRB(0T)%RhKE6b8`H%WKb33WCWchvKnZjoYma7cE~3ELI+d#q0w8pY`TSue8QKA6JA&$a{`WNLmJ zn%dAB2zvz<4(_KnoMnoz#potuCVFl+| zw5DF8i_#T_S~S4`0RgWo{_>>VE&Ji*`cAK}g`=eFTshZbbU*UzIm z@C?QvY3g@~GxwXJRJV^vjGab6+EAv5`_sxC*uHMI0u_cqU#cV3-9_o_S1hp~xMdpe zhqIpBqm*853%yFnS(}ntT=8Ac?!!{)&Btk1J_|W!4_(f{SxwjQlHk=MRLO_`cg`#- z!q}hTDsDfp)iaC*osim*EuFg}$_yYCA!$}2Rkw=A`x#+N5d)M#3skKMHf`96kQvr& z4)T?ssCMnCL-aH1D`KYmW20d}P zik~RoVsl|1w1J~kS0w7*df`8m|IB{+^Sp!R;PU6MXY&u2l+SCFC0!>x2$U#E#}}1c zc1E4igaXMbaKRb98}v($guto2VR~hdN?gL$E6s@0rDT-%NObYR_h@wS<^1@$m`h!) zP*^us`pr?m(4#t`>EU98_azCJ%3u4U_VKpY8kxtjf?dh*@*Tz}`pqXJf?9}6gU2)1 z_#<-*A(H0Jr;W-Z=lxrvwg+D(8&!;(0nNo!IrWU$IxYE#DY?i`g9e?ZTc*RSxV*JyFir(vz zhYist8U}lm`-)Fe`C%eu%};9s#u6Pn`m+hT@rv8A$4WBF3P0VB`kNP;)~9yLF&MmN zh}ezE03)bhp}D<5%pBnkm{Zg@g`jwg=v(#i_B5Hg8}+(VD+H;~)eXj>=?Wi>CbQj8)&1K4}Ep zcO8-dg9O|m^aq=PX28XQT3+3^b=qLJ7Q4N&fwa2rtUp@zR-P0J+?kWDgK^r$8eh}; ztrvR;`HMLklWq^}KJgL;H016ssLIl@y}^WHRZHQexg?oZYEu5j1A`8M7^zPr%C6lu zAYx)uRmanVF$sY0ex)Adq0w`j8ZMEav>Uc2AWkjT)RFOEiOFJi%e9-h%F=GjH?w|+ zzt)w%c{X=+b-2bC_&EZDbY{ev`fO(IsW0DH`qk8qeB&y58 zoNKOR(#@$A-+7fEfL*(v{j=&II-Ah_YegGq7n1OEk8o2({9us?v&vH!q3okHoeOu~NF6Q6{}n1G7{ z<5oVn2RGV>dW}9hrJlnOywJy!j!_w3pDif0yN!j*^LUj)7^uJDs{2uKf0aSflMNifv3kGq?WktFFF++X>v*lyZggSiKeKB^D%*P zzpS3@Cj0R%LTVx-YubrdVk0r2pv151zBG}S{_KP0_I6X}K3}e@w^8VpJuTaR90K0H zkdp5I8PkspqfTVazTIuk^Lkp>oI9$F6%*Y*)hoN*f5p{&e_lxVm!Ip^L9Ks@yQHqC zt&TyBe&cRY^rsT`A$qi0@e6~<);t4O3>}e!+KYk<^393;{>%qOtur?0u z{C{Hswm)^}9+o}aO)A$>et6ORB_J@@Mfif@M z4obO4?W9=KV`wPxU2VlA3y}~*ep)`~n0@9_(a}aWYT`OI{=!R)a*I9 zH*X(C86{~Y)c!(3?>;@1nhoL^xN*BzqU5>MgeYa~#N7w6VfK%d&hjRF9@U+7`|9aw zOyVxVKt_eIR7TDkjPsA;+QkiS4)@=gk~@=*MQ4rlBqRXc4ARfJriA4kj#EH52PA&x~>;!g+e-|N;17cks9F7B@Gth`Q^ zhi0W-nluR1Y1CCv-m0!I*B|QR3cR$UqJu3i8Fq7P^*)#I?tAkGBqa5B13ja&OIYC= zs<)@sVB{3ca?`Ev5cZji!l{oGkVR@UJ-Vy+);cf?ti*<}^|!*Wc@ zs&TrHO{Z5oX#!|j(%rm#JpE1u(zFVT^Uf`#`_okT=o1FX=6SKhrNJQPhWe&%JEc>D z{VKQ&aBy3yew?6P$K@9-&WC%7j_0FYc!WYiW1|YQkjbm2C`EHavW5H@6P9e2&T6mECimLix^}P=$k`mQQjLl8zn^4e`$BsxXy_ zd(RLV9Y91>`g@QHxJbKYPPeF@R-%4sX4keo_t7Hvw|we=b)ENG%iBazpeuLLAPGrX zBx7SR4$pB?fF{#svPQvQ7NVkLR7iRplFi9t9K;=1-Q*Ik;;3^9DaG!fC^HT}T?&E{ z6$J$7#d@-13=aAKfQzxXP&>+UOa6k>Fc8N~o1T7cD zCOxGdgfzO=B*BG}h&wT+bNHHOW8rNI$X)8H5wt_AjkhwVj@KB1)gSlAKv@fkiWXUQ z4K`cQd(z8H<2qKIS0l2IB3?$%y;E|jfX&$ay7=pDT$!w8_Dc6SKmnlmiavi*ak~efR&h z#ht=?qOp}-|Ik2Yt3!VVr+QCD>v5Pbcc};YLx9p8;PVdTZVeQsTAO~Jagc=XXwas3 z*%9{AC+16?cZ*~13F&;FO?xWAaFi0DK=7O;Uc|W_1R&!v35(eep-q%AY>B_!n)AI6 zmCv^7&kh_;WtLUT<(XVZ_M`W)$(f0jn^gFA`5G^(CO%C$?v=C9i*s70mPTWTq9M}-rRBkJrQcrvC?9uWCO(C`boUhi2?5r(^h5c(>X9KG+8p#<};^wlR1{bXlVLFT9aOQ)66qhP`%^{320 z$sI;aZ0K36^-re1U=Fy{$Xdu2vdVKR%MYI-^2MlpVtn=y?_mTb~JuL2>;9;L4sRbLBy(NSl(JR zWeJ?CLb=KD-(TGMuKFI)%-5NDUN$u6Z?G|cAGvJs93e&!dHnY}2!@jb4RZ3Z$v@+Wj38f3R?$OliQ)9Qb7f}O((HD} z@RN6py=pAFUyA);tXYq}ZxHbL_pt@e&JFgvSlfOZYxfF&)}P^cOv!iqowvdiM|nTECy62A3R3cZb6EbX>NX__HWSb>shc{IqRqquzt{Yi z({3^k4SVjxt{NX+@XD#-qH3(OQ#gL7{HOczi_;2cj}}t!f$oS{Y1B|0YP&9PG+YNc z)5#?iHhURm4bZ8SW@Lu6p=T$4?P_Om0`f-QLVexSd;M!DHEc^JZ}HZn{LhL$M4`@e zi{8lf1Sjj=O9wNUk5{+d5Z3iJ46Ofpux#5g17CRhekxb%;pqU#F_#5?O)hhe{%hmz zwX*I0SVK+ebK5))cM*n!GjD)FW~Uvt{EwF!ySZmy`-kiqrk!Q@r25~OT~ktf-Fxra zdfU74zub*P^u?oi{O^~s5zjc|O)m*1a5mIfjAxnQ&sgK4^w_~k|20u@D&%_e36>KU zDGF`fsH5fni=};=*?HazVLc!H)LHEaC;*Yo{z5d(_C?(?F*X|6x2>7kxp}#=UtFPd z+*Q7)g{pX&&=#yUTSd#_s>LE;;Z@efA8CXjsy)wXaIaZ66l+SuA&mT+e;Kv_OtpO&(;`9@J|Evz2i=i?PNM8|~^ZnKp} z=P%cC*R@uNju+fr$(AVktm`TM@Y>wTqtM@O_lEu#{KY+EfwdFU_Z<{%j*Ksqf2&QF z#kO1B&OhQ6Y1xm<3~ddW>!hkA<)Xv~3x;(=mLkZ>nPGzs(gW&osCw&V2Vsp?bi-z1 z=T!%aZ*bOi_6ut!`b7+>FdhZb6~)}Cm2RlH5a5)=pS#86fEdCO=rDg7l2B=6Wb6h@ zQGpFYD~hn9bh7h5fCeo%eu}DU0VtW$QC;1>BE5ShJZ7ZK0=T3_va@W$ILlG9;9VF_ z%78;s2Ig?8(yHp>qJDeWDn+n){a?UjC{rDhItJb*8B|~Q@omf_OiZ1vCUcr!X2sz^ zk{!Kl0PFyh5coW->fdpu(_M8+Wyp~HUb^4Q%!%$6efTjkP{?%iA~;PaKX+O)T4^U> z{%`?Mbqrk*?xd*k!lZ!3nae@o@N`Kmr#Z!Xm3YSyK$7tgVXCWwJ!QL~JNfYKI~Bl% zG8y^MH=d2=Uryywwm~>D{4+8>S9Wtd6a9n&P?Nm+S+oE@W|mdchi06{ewZBj!s#F8 z^sJ+ni7uf8Sysq5G_+7nlxhs9?*qxFqPl1hD@V*QuDRr2_s*WA4iTmhF=D9vY*Bs_ z5gCNdOM=RLB@&6BahM$zJfiDA)0h~C9h#4>)~k?ADJ0?rKl(YhRWz*YpG%d1W+Vb! zU@5bRb8Vh|!@gJ6Q;PmR7Fww!Br%~Cm3D?P@g%$&(a1%Zwu{Fv$T^rnL#H597Rat@ z>E1VK*7bfeGlOaevM35}{JP4f=SVi|z@Q=8xiwqt{%yDcd8J!b`OLfP(KWakph@`hgH&`)RAHb%3|rgo1_zQChU+d9|nL@$nq<#wzdfw%YNCl)Y-a{My&a88${ zw8QrbBA136Oku>`7n0&g0IcQJ47|Ws?qv2CH%v6`lrLC?N%wdr+!CtuKO8>ylQhXO zO^Lnx$mdQ3uKQ9at%iu{g`RR6To#oB^=qOZ;oa@7CyXRm|%0L7WxT! zOL9u~+>fnfbBVhm!AXKHKWl#o$acVmCfM=3dlEI5kmb(#B~C6-J zormL)jqo6@8km1J;Fp7%GeO;I|C#diRKd4iU6AjX%R9Q27_w{aC;Inp3J;XEIP-|a z_yhy}?qUIxSR`%NsyCY$mU<-aO(On-I-8@c`hB;QqD#cgzzV)wN*S2>2x0$WVYGrc zi2pAMZbF%en>rpjKD}$%X5&`_vk-HJ4W;4U%~D={nzmQAdvDCsYyLya$SZ>xE!KLQ z>a_w;#^D-n#Q81`6_MWs7}X*>QQifRgdaLDo7?SLC@$iMuvRdSgzgEkb46>XZ|!SR6vXzBa-*c3SSnlodI z|1PX1fsO7}Q4$UPNTNr~+=$_PGL`3NfdC3dE)?r6%KOIKx&-4+KC6 z{vPXwRi_R9{~>OnM*kRJ#LVr27&$uf)o*ZM-~u z2ALEiqQ5)>E2=%h3W6qQKOd!c?$i>L>%TGIBIV<-W%pWC3$2jK8oQ)tsYGVZL;7iU z4!#W73vlEV6()QlQObWk|0%10gVSOgJTB$dneHt)DM!?`%$Ut-1Ef*x)B%e1=^NZ@ zf9Mzs8t34IVvBs}UbkJ6rp7!co`|J)Xg3F?K6nd^DCpo?#|EYxpWZY6qmWT1cst8wA-qEC5*IUO@aQwl&<8dS<4v3=%hJX zVE~b)njqa^L4byau#ysro-(@>9xe7DUZs)i4ifr)2Q^LQ6t7@Isa`C={QdV~yCRPL z(e?hqfReQRa`6m_^bV3*L+LZr?W3BKmX06qEF1iHwK1!ylh2hOug5(=BYC__|J-21 zl{LME;=6oV`I5_IsSFdGsa9{dgR9r^iLFJ%9+IuvJ&Q8^ZQ}=(x*ck`ahx&*C6ftw z)9s=u7#{n8m(sFT_hd-8bn8*>G~*=sc8f8mr;@^W=q*z>}KTFvT39$ohlA|<9$Xp<4T4g)~6 zA_(U?OG8ravYZD@F-L;i6vn!6=Mx!0=KIUoi`LejQ~pe z*J<0_P0%;)emp5>>~@zze_lwmsAQF1tRe^fXmsY(xIw>7-lIf9Dz=Yw|M_=pJdUL! z>1m3UK8@+)cv9;n81VTf@L(#JL+UbN$$0zES+R(yNsnD{RQD4QWuB5V`hv_lrc<-o zN{iTZ<3ULD3l>X0Szx0>GF8vpcs~r~cB!-^e3XzI)c96VFs}as?qE=PI9$PEKcF!F z1g@N{^@tW{`ACEMR^ql!`VyN(gQdeIX)gpZ)sdlFWL#Fp!SyPc_p)0b)0VNuvF&U= z5`t$;-O}+O8HV}RC1w;WFg}LS78xa;K--aAqf?whj!Ue)nCl?Tka9E(h19sB)clW$ z*mq%K%BZkH&C}}bkg%xx`nkH9i;_6R#;#XYsFzpsvjZ0ab|3j)?X-^ z&-)4eB)zEUDNc#SY#Zc7T`$j^nB-exBvpk4#{YtAChAj5N3TzM#<3VTX=i*J3jPObR8opJ1_GrnH+85P7*fW^rOR&q zeWQ@D=GlhW^{8#r!v^*{`n<&Q8RyZBR`#*C#-bT;B!A?Ykp1z7Enx9I^N!p zChm`o*ro>c_z+(SxTWL!J|nPrj`6a1UtU7$X)X#l-mVT-C!lpVy3EA4+RrR)tUVs4 zvz+%~%;8@}HI7BBwr}ZEjUaXCISlyF=d5dOPN0qD*ryk@jKzJ9q|BF;+FdT_ZirhLsW8Ug#2EOwfTBUDeW}#lnbu%@RhTyI~lw&P& zSSTp^?$zh?Ph+7o{8TlQh&XWym?(QMeuSLht*VI zQG1?|Hu=m)Yl5=T64ON?f&n&_KEk}O*39AsFBO*IYdQfbq9LdOOi-w##qTP*NPw%^ zE`^zvTxeMTlD`l#tp=wQ7$~pm8Z2^NrvYW(y+szZHDFh&7VMEqtCZ7wQ|l|xpIDVW zKOAi02Qs`TD&lwkVHFb0PZP0NwOZ$XO}UR^G!MLV!vq zptVBqQ5mo%)}uyeix(;p*U#5v@6=sxzvVI7X!W*t9KUN$@{&s?nn~(llKb~i0Vz^n z18YCFWvyf~MJZFL!4bfIEbx79(0KU-2WJ-@n+Y-1*}e9ou^Iu?6#cGxX@7j9en>M2 z%`G9XTSbz0*dqlFn+9emZF-y5*$!nxvf82vhY?*`x?|s`x2$XsGuk`DJ#Vx)HkjGW_O^G7WtVIxyO11A6egN$G?JJz-*@B+>>arVY6=k*NQqTHh2 z6~fjTg8gLV?yxP8`(-lxepHf-!x{uhz>WT9iZ6$8j)rRn^3!E6_`c_wh|k?eA*lz~ zHLshLao#p-^u5>6xP4rbz=06wZ$7UQf6V@^RN_fC{`NW4rlD-A8OdLd{W2YH8!ao75g7z)%m}sbpzlqPY}>^w*q^#>A@_?C zckeZN)hBxvr#;`nIA)W}h1SVh%auSlMqWQycpak9wMv`)@K7P0AjFI3jTC&k^_=~3 zueMS+y#PumOWB`Fil59s`x9noBXH-h@|k+DX=y^D8dc86i(08trDL?N;D_TuPTmQzaN>JzI=Z z(b0{dWQuB8usj}id&LtUV5o-ekTDBD{-Q>XEKd-TwxpY5(Ly;PV(kXiB;UQWpP}$%TUu*lh6pH|4R}b z)c++WhNH?ZoG`~C85Jo4Y6L;eNLMt@CTY76VJ0y@iN-4AjJ&H8({3Op8v*A4!v2`Gq!(i^`3+ny$0SwF=^;o36V2A&FtL6KJklu28y1a z@Q}=~T>`hJTFocFD`MwTtgll+-o%e>{7JX=#4X=3BC~H;mF$0jqPs1L|9=Rh=Py>` z=;>!dkyhEf4;R%YIoB+eF+i%54el#drRs3q_Op$ z&A}VeP}a{YeFDkfL^~OtI~!Pzb5jZ|dx0(Prw7SGiSkke2r>H6+cv&ksbWhChDxff z?P~p%oLdGjmjx7;@YJSf&F3GF@EMzMxt4%uM#z}fWD?qV>*Ae4zy;`MY}Xs2ZTTw^ z*QbC~#$^iN*x*WT1#g7~9bFLx9UTQ+1s$ptL$t3C6+&1H1p*utI10JqnXL2}k|N(e zZ?b;(MoM6w$P)0`{paX`kB{sr$6kH0Jyf40*N3o1n(er%FqaJ?Mi>v?%o_%xmE8P32j%6_Ktz<2cp&boZGrI_1avP=38 zO5g7|KSyWvPRuwTRdv&kMXimDeli*`=)>h^-FnHe8{Ymyy5R)hHxZYV>}k!!JqVyy zHbrMH;mv#!Q9?iP9h(9niJwa>cedQFnn&@Vbe#hH$nk1@u%r+GWR7fQ4i&4=iuCp? z_3^QjCU#{$Dck=APZ$_)u$VkLmu)cpuyG@uZocS044*n~$wL7Un)acwYv7)(UrSq3 zpy^!>X?M_d-WZUcE|yIko?%M66O`(HPz1$l2!9kMPjV+oHyy@aPuD_kX4+5ZXhNg9 z&>z-We`-`>#(dp!59!L5M)(aX^PW6S$`%OtCTK03vUu(Zdqpg5SGndMHrU=xG<@Z* z5!IQd9Gbn}dnFMy>zVEqp~B<6aHx%tMHEmyF>!)PezN63`*$X09%gL@C^VI}IvHc> zT4$Qs>GKxMSKpl4B01W8Qs#*4&x=7 zt<=*pr`I011t_!gAn9+u7?JBYGqX5;p-k&`%C@i&4g!<*GpFMD<_lODH}w61O7_Q{ zA22m~XnPOu@BU3|EOWl}>}M?obMJxJ{P)uXG5|n<2OdZDyB`nQBC_)8P7H-(rMM&D7!U16w06%<%VLef?_TFSZ6nMScY5UKse_SOBOK zk5H)7HbSmea+$z;_+Iq_b5z>yB$)djy#@2v@oJtTnUEx| z61|F*bbCkmJAs4qd^eJu6daXfco#Gn-*rrVwG@b{ELFQ~xry8vc2}?IPYTBHO|v}B z)XQ_7hQSTVYO07^!96_?6c7{4?hl5{g64*I3lO3-`8msDynl=*eRHun21WphM_D{I zQ6DtHXxs^@FA%Rubxpl|)*ja@aL3S_XJP_XIrU>5oX4E$0@Xm|?u-v~XT9#hg>(!M zFu`uFC<-M0UO&VsDIT-|w8ZWb)vz-g#WwkklYd7zBzT_6`A?on|0Guts^%*>35nVFfHnVB7PVrGVznVH$`Hrs8+_51CPv^)E0G}82+ z)@|ugcU`Ey=Ty}x_SE&g9#VdmkwCx`{HE`2r~;~@QTW&4XubdQarFZaRyXmz|)b}Qa+DE zPwU1E#M1n-S)!!;hmb=Xg;CCo_Ok<>3X#^-Gp(>K19>WW?4E$SU+!B7SPZX0IY z)UMPJ8&%RVVo|OBo}?_cAXWcgWok^6ATcHKg7iGus-YZ5A(V(yM%{M&IEe)eeB$_8 z6^GB$+h)s#YGt-2%#ZDFRa&&ULLNa3KpD@q+f>+Vr(a=3-^X{D$jE~3?p$N@CHdp> zapNQriN7IwLwa`;*Ci0k&_+c^cjSPnV)_gqg-P1OQzl8{1Rx{{AyOr&ZkCWu)eb!C z?Ug(es4TK%(1$H-%WQ9GSPI2(GyP}llU#BHz9ETSJx>`VUD%<;nfgQeHSQW27~FM= zh8{d@`Y-5mU*sKj`-MHIL8C~he29F6gB5*`E_%cH^Iz|6640m;Dwsozbb()=ez#Wv z7gxcQaEgH^{TfB<`~>?NscaTOM1GC-v9W}|MwqSt{iDxk5Rs|KYE)a_a9lF^sA%8x zryt=M!W45=Gov|YO|trS}S0;5#Z(d{DW7WCHYbyv~Y;)InV_& zd(D3lviKa}`fo9=K#nK0%EtiWEZowH#QRD5S9bh`ddqDWU3q zxxgg6P-lV}+7c*!JP-hL`|@YJML83h;6ONP-P;suIFm!dr1l^vE_f};YQ`9=rR!Yu z-|}C^6aHq1`K~x-Z*|itBfdxMh8I zml$CAm(i&khuf&?mn`Tq{3~a8g70nwkT!Vs4(l3ZiK_bs9^5i27g>VlQ1_j0|K=1x zc-^BRv$8_7XDT9ah6gvU+COgSGk4O5%X=-yCG1@k{}?=QTA@SV7BE}94B%wi_8-bac65SkEDCe z+34rhCcuby+!r76kPc4wBrVcW(>*D*Ro8vYkp~8g;~NIS7gtP3)ftzalG3NFeXSo3 za6t-uXqQNMD-SH@>sO|pVJ-&mvaW12^Tz{M*X%Tn=G(QnrygY%Bl}&iCylvdEl#cr zwYfKT;_s@0CAn*&y=x;k-5oIt;n|DyYJa4PzYZT*VpdkvnysY6tjR3F?AiUv9j`0z ztI%kGJQ@i}LS$@gDjFIZ7yZHy#u%|AnmTR9Kw(_|Kic%c!b(K-8H$c$=;8}>MiQp! z;v_u6hiRG&xPKQ)pwmR(z{Zvi_;|2P`uToi#$_+|s|8ZACy7ZZ6+izf@v`&DT2Z># zdpi2b|1N5^$^bz^WJ;}TYH+Ak<*iil!&Y$(45coMyTb*gUR@+Eobfxx$(x(emluFW zM@N@dQW`n28eBMunzJ0-H5x^r2ForZE2X5PJ7t29PNHl-P>}eLiA?nxFbq@QeM;=y z?bIoE;qg7LLpyzrDEclt_vODfhg$2RlXrx1*3>%@iIur^F}D^w6#=+}xB8vhWnUAs z+1yL^U*72x`v2TZ{Z9_=!wLK_UF~>VH0Vv0H;tzB@Y4Fpg1+l2eq`jRzI_5z_Uo+n%ZHWYO;vVHW%WQ5y~hgjv18My=ibIsqDAuCtVE%`u&Mn-l*w8DT} zJ@vE7hd&Tjd>lLfYA)|V;Pu9`b=kL$YY1qu=Fo{WZB^a8dg04%fz^^bYLBk<-H!+S`XT{7tC#>zU zsrqMEpe^HL8_zwvbD08KRsI7nq`sD-`LWY-t~BKC-6a(vzt>d$&y2oR)~mVR&xOe~ z%#4&R9@K4xL=DWNf<0ms(l!1Y%>dtmmte?^4^vQ0NY~DHR2I<0s~;TGR`}5C0ctv8 z%LU)RTNG<{&n+2qA!i}AR$W6-#nhlVC7Zu6LH?_$AZ*_ak`UX&tJ)p@8?NLz(pQd$ zzWLTE5ZAal*PBXI`0ax#mEIr>Fj8I5%((a+o=m#UHENS|uVb!>*~f7n9QkssZx_{} zXR|4XA|imy4(ORqsL;H#CWjz*%y95_+cO)9)yzt{Ggv_RM2^j&uh#c*4^_JH_`Fa6wWi?t zn~2ecmLK_hjZgH~Mt;4#05k6Hi+Xa8^{irRN2=E^7>c;iVc|2ytyeJsd3P#f>rR@U zjv`n6eZrRNT%@eAQrLd8#0jV=kj^xK>;I;3aIVCB^YGwV!3h-kj1SJ})LSe`&k1K> zlvi;6>4#zFm#si*K%Zf`_~$G-iG%m#X+oXPI5Ipfp-7xCswVHp3S}L=WXYWYm zrUgR@V~2>vfaYQ3EcKWo8;WtsVtiT)c#>G#}^c%jTI z7%y&q?_;TqlJ1P}iS;{IK~I?WnuS(ZBboy4V8tU}3m{7?y)kiu zh3e->SKRxOlGucaPLDL4oA)on0g+OGF%IL^1O0f9V>>ie(3d1Zj!SjV>MJb7?3W_pY;o=x#{eS#RNAjK(|Gw1U1-{zO8aG`Gd2ys| z3)@{ODHxDdX2xoJC@pzs88iHo-_KXKq!oc-1ryXa!tL2DgrU7e%a(`n_h4unWx;tF zaHqo-vmJqs`nPxgN&`;7P^LG!>pZMnq*%OERz6P-{H6SNFfeBWb-R`_q1o18r?7sZd^MYXbAvrKxjk102d>m@!MZ+I%l`N>>sOBoT}B zdTkgpaYuAdMUnl=;;GL1p}7+rMxSmRU}y^sr}Yg9MGu1B|2a*K(8$?a$K3;Vj8NpR@Gk@ZSnx6sYos+KbD9mq+uHZ&nLs7 zK=61hQ7Hk7DmbR{l_wd%%6m|e|e3WY%PHM2AYDe z(AGljI0^GuUhI>jJ_`XQa#RM%jc<6ft>6aTAS$w{4RlOxxR6ht$)RkvS{bkK_}A#5 zI5C;Fe2J?dNZ45dEssM&ErbkIYWb$~2X3<%ueMG8oTXs(wnifb^R0@4+1LBh9ls+N z^s+{?_nA~!|6Fjr%KC?TrY0ip=(U+9vX^UCZA71#mp;Xzug$~ktOSEfOEoO(x7yl^ zP0w{fCW9k9fEut}z*ev{k&%>WZMHS6ut3WOQZq#C1M+ye4S7833-;z!orj=V; zu4r=BgMllTT9~OcSN>k8U%Q9%)6p-6DSyMz;Ox@Ci?y7qoS*1R!d2)*|9d)+Y4+RsaU(Ji_ZH zOVi#~)(6bom+@RKe(VJ7Pe}A8F72CP$DbeuUTiXR_}i2Ca4Gih)=fcIWS|3C&P@#{ zU3#7m$@L2FJp38#r4$|ApA}V71A;?Cq2?DBSiSLYIJ}KH@L4@^Sx%5n?!Cb{6vSj@ ze*Rn(Vh-Ho{Od%)L_D*b{DgZsbp@}x+MUjxTJ8eEe+DPz%Q}-up1uC<^G<;LbwDOI zt-#vLBkC^0F?oYU#V%?;U#1828b0^*hK}|AWOhoge%gzAVpH(v`ZyJ1NvOa-t$afr zDSOx{Zl0k1UrGojnDmWQ%iXJZ3NAUuk`~WD3qF8;`?iP8 zn~b79%DM&PQewQI%SVE97jFdaPJ8Shr>?u@LbZqTH9zZ|GP2_+U>+N+w7K#%y^@=+ zdPkcSEYL(z0}N^JPg@N)TYbPqCbQIZqhySS0FXe?zNRWio4YGbXM(;MtjvCv*f}rB zBbWSS$rr|%+5HcNly!G=`$YvFD^JY`Tei#ULdt7={I&wJUH?0Cm3fY|qm|(Y8YGKV zk2HYF;}_vj3FW&*caGCm?M_A;v2rkG%h51;`SyRtrTZo?yNTiX!d}vw3!k{!%7K0d z?{Lz2eN(IX9GUdH09POG8=~_2^WqBO^WZxom7rnn!Zsb(*~IGMi(;_PSOS|JYV?h zT)<<@D(7n_e$a0skgAfGlJuIdW%9ft)o4`>>I*7af!RRiwp_Vm-hoJi^5Z;OKFoiv;}ah%C!*O}|3e+V&I}s9f$`0u|r@iH>1j5dH*g5J6F|j4IE+oGDhYHY8w+{he%-tM8W`=}ZQedCyrh zR8A2s<0|RXO)#BHQ?Cx=(|)LAc>g%b^~Fg#Updvn>8-+%s_OqA67$GueH6Z_`u573_0ZDliCMp=Xdm0Np$#}bo6 zMORPWt!qfFL{ltf*%2+>xVo@$J&V~JMV{VbQE9b8u>MIekp;i!3H--Z1s_+rQYu?+ ze+Sn-Uf`pYB>A0aU2?aWxvM$&8oe+Sn^|s1*6jPQYWStou=(F^^u)DhCZHM$O7rLW zGB-%kkQg*ox>RHEZBMAs**~gg|?}YyvzF_;lBkJ zfpBcwuBy^SFod4eBpop=qq$7L!)NIg`vV0I=!E|HH7)}%F>sL zgK^amS}aw>>9*y^q6VLr#N>A1Mqok|YRSaL?VT=FQkI%;-qgOrlO^KKoeTLAE5Hu+ zHf%K(#Dt#JYgPrUAj5~EQtI`}N-pPpiue9MUqc2(6M!o^mWcW$0QHSIKvZ;`-ENys zHVuhph^)G6NLj^L}!WfCy<&l-<@6jE<-aI>|=*p6sR=|~R*+F;uy;gyxn=D}c;$GXd(4@OV zQR{_RmYMfIHfw*`9B2*MOC`t@zofQf-2dh_IHb2uPK&^-&OdNotk zKGELbLY+RL1vZ-N#m(f9BefBq(CE72mf;3V#?xv6Ep*8=eVFBN0Qa!0ug(3m@w3DA zLh|#mJjHw|cRw06IFmgoH(t^B;BF4l$AUZyf3;zLE#MZSCDaeGV%MXH#^kEjB z_+lv}>0o&SvH+EIAxof5NUuX^x=8{CP1I1XeQ>t?m1XytWNZ|!=*FT2v>7;Z@@#3a zoUb4P+ZPw}ihDD8z`xkY)te{XuydoM_H4Om_!ZvI^0fKjpgs%uNc7kNjun34#@;bq z(6gx`SOg?}`OV26uB^@zlz9$z0_<~Ys%M6o$AHXdKIV;?@<0$@2FpWU#M3-UhYzp9 z`=9UQ0f9Q;;<8bSV5-S+O*0P2fizTALdxZ182s$U+zG8U<6eebwX;&HBKJmKo1rxU|6oJJ8(@4Ht#(T)zQlV zfEhvPOTcIRT-Js4IW^Sy2!FO|QtO*Mx3vB7>iy2Ve_B)+!trfCB;)srDFGKp)+ITZ z#{N!r@RenjeL(d|Skz2J%Rgmve!qOH!Sj%adfjdDjJ`%(z5^XPY9*t=SSr}5$WnU!t6zxXeAb;1ex`1G)a8ljr7L_u>|!6Dz-!GN?0W9Clw_ z{0Aj!_D+65t|;ja2mjU%b4>r_PO*bg`=iSP6*&H*qT!|-&vr9Ux*5Ne)QpCi`GHb; zV|n?g$-XlwY{B-i^D?2YzXMsZb1oK%Ek} z*7w%*ihH5$W~8M-0H_&OuKYxHAJQw)UyJ7O$F=7!Q2g@rkch3ajuurVz?}K-s~=2L zaz$pQr1$E?K7SAdfp8o={=u@p;uLvYOjKn%vSL%^|3z$mgpb)u9J(S90>oz!OjV8N z*nl8IsR}PSeA`u}_6jo0bexBVYS<8qX#yGHEvB~{F{+32^&y=ZH?ybQi@Qp!!&HN4 zFzXC@1mU}9g2mgv(46$8>zqYRsV8D*^Ng4+SJR?2&c`U!1l@C?=3$uhtCXIHwvpx& zCC;U)n=36pR<&nA?QFO#EVrF*gloMir9uIH3oss_h0r;~{N^C+SC6{442P3O6L$KM z7AZ_nu}k>_tQv1#$0N<)0hIm_`8DJ&ypP8TP}|b=?;oBc#taHFTd;@j_`T9CZ}+04 z3I|b8u2|MFG@jGg)AI@yVW4e#b+~pdFIM?~9eRO8h>~y$g~p^#@pW5D?AqyU$s^$B z7AHgqWRy@xgbk1jFC!xxq+wG!ycF}g=5pF0c0kkaZzkjuuLs_Za**?*^y+Zw=^IRn z*WP!PC@vrJDhh!;)YlnZ$&}#6q=1HdX@0EJ)-u~QM|t%XlzeEdTmh%pVxJW@=NIz) zt8MhDBBR;cRxOC7PX2*xGZSvtV}5q?cWHq6)D4|_gyW3#aKIx>dHjXNea(UAuQSQU zP$+T?yC-i=9=}Wce%~OHUW0h1CQbn#4+=qAyb$*=67!E}^&;woJD`Z|xf=u32FNKf zzW`-u_X^NA^yff2!O-{U+p_&e|7_ih?fw10Z%8Y4km^haKd+ZbQnyqB-38o~Z(70U z=2)cyugMKZVro{@V%4F$aS8R<^>wN1uKzLfM&F|T))NmTzkn|G-!E8|>;H7UXCf*l z=8#q+ov*(gno%pS=@cNmtHF?Xs!(AB<@*+`@>iBUyXTsJX`0b^>;-aAN7f~vyyI~D z6X)3Ij-u_So2cKdL!O&A#T=j&BTX+F8LjjJ;eMM^cWdm1fa+wmjlb`r1C(eF6jkIKb*H63CGHKXL)qIcuU>>GRzx)$80g^efy>Miz)pjY8k- zRpRAFTI($@$Qsxc?tC4-#f!$*WnD{>NoyV}hZgHr=2gfn2R@ZoL{#~6>mF4i`AeZG63 zmn@BB>bfztNq_H%jkJ(rZ830*&Tx=u+u7QQ`GSePY5#qM>9fVc*O#B1jZIZjTzs=? zl3eCCBJ4cu`0YKSDZq{E(VmM-@8eqLveh4+b2ff}zP%O!rTx&pYk|$^vqfWjCCXk^ zN`GAxe)$ShXq5%v*RsBTz1NuM>=HPU?7ZB;pmfaN#MFeCjy{KSNKIrR1^XT1mX(BdEyJO z;>Y3gBYO2g2`_Mzq>4*OY;CcljvN;WAE^8Zn)b^p7``XL=S|xw&zQLU9iLO} zl2#@0Sh%=^<1)FIJL*(DaeLcZ`LCfLI5?HDS8-nSpm5^l@WLAn4UIWB%STL~0W)Rv zcVQUN)%{$rjCr&JsDT&_h)PA@K`*^29VK}8NuLFN$Hp`acvo6?lu)^}vfh2++^X>S zPqfjX_8;P)K-!rG~)UHSCZA@xdWv9hxu0h3=*8zXV*eCnQOKHr7 zQ+sScOYllQ$c=W7b7rC2gL0GCV15s@|MU`2vin2Jv_Z#t^3|h>Ydp_|IZ*m_CIK>2 zfx2onfPVZv<&?JoH8DF=JpK43!_8s%sBE+EVe7I7mJIb66PZLX;uq}Th1u%{tkuE% z8mPo3`~9)AVIe9mj)Id3+-921Xqu9VDSoxhlYw)C(O>OJpPI;DZ#8`F8|kRL4CPlV zg{KnC*N*f9wdF%07guVZ_u@Hy~K|;dJ`oj zpxMqRzVo!^&|t*pqwbMqMN#UCj<{I_#EiAb>?8XtNV5j@_L7Lg_H5#4SQ@}DYdzH{ zceZ3B=NXVfj^@!F9Gez?5-o4iH8Lz}Vwz7GZqkc!=O;o3*5#M^KHr8e`6si>@T6pH zOsloaV)a`;?EhPm2e3K%0dy8``IIzVO-u~@It6%wP_=BItSS2k5=e`G-=K`Fwi>gg z$wsK0M#Vjt^0;X+Gn9$7CS{&$>Dh2866uN^!nYLz!FgLdDceUhv3m5<;&XFFYj z;0%ay8fT_F*zrk10u&LkcUFzuH*AIluU=83vRK8rkVkWWjPHzhgF%pXKhyq5sY=CU z$N*gH_cF8W&?zNRQsE1YMQI|`tDJe>x6hfHn%CRUNfR@C!20uIG!AzUDiI_ApqSgb zY~cJ}d;6DD{z}~WL&<2Fm)Up5(r)zAn`tbV_7k(+VQIRPhgX$Ma0t9|Ce(C?dX$x{ zMaap>$w|qMMN*StzO})I);Sq&T@6}TKRjkWU1UrRZgbBR#reSf$^fjA4A3_L7tU!T=p1l~DcYcof;;!LiPk98H% zT5{)tSH%LZ2Lo}QO|IO)PNABMbbq5%T67N#wpU(^{1hJlJH>y0r+i$^lcL6DI#jS% zsg!SW&V>*aJs}Pol#V{YRe*Bbs7LSleU>0F#>XGfP9}!SYL31#&-l5Ued&P z!Meo0agFowIW$`pem~H8(dA`WdYMtD!CA0wOxbvxI#Z6l9D#JG=7^`!$^Y6B(b#L zqdOklYH%g&*FF(ExmdB_f8+K;mWLU(h|Mgh@S3*3xqm#5YnzK5A|>$mf<&|04s>OG4N zrS67OE$xKo#YHP{r5&0$8|&z^zz3WX5WE1hvV_>vWwoU3xPK=&Xxnw?XPsGMtju+8XB!)qvz zpQ8NlzBq^b5HA?Gslx9@X1ng0gsrww|J3^9XN_7~^Fq2~ow(ZgV6Dk1fEPBVRuN}{RH*U`XjfA(PMh< zN(Q<9a3~O4COk)`=OmpR5YR5{yGaTzeg!43Oq5%BHNz-b&H0p~lW{c)OvN9g74yiz zb9Fv=z`M(5+ugCg#lD3iSR|xaE&b8F0{72(`IhG+sIZdg+SZfBwc@F|48UJ8)#{qj zKMeo7druX3SDm7X!y2-}w^(?Tg5lZWO-`?9U6q`i(DRAdI5pfp+8ug=U>}=`ZZbtP z%Bl1G(e7@#W=lCTq#TVXZ|=~u?HXG1DAa#-vB2ZZ8IFBLeSHop6xYMyw-`GFP*CT} zs3up-ujc>z2SZ|d5fYpyr3A8bwrS~lgvFxhaK6sd=4W|lK;SemwxU_JY9uQyk<#QW z?iG~X(WrF(IFax^;}BePgqy0mnNR*Mc)1gI<&$P{0rdRp?No5A^mFfY4`Z{Oi_Pi) zFP(8~@Y-v_tH?}jeNzK1BqCmc-oJ1xrxJI)nJ12KiF8RSID_P9fw|809T~BwlooII z!kJs~*{2;#*m*?t-hXe=VKH+BP`m$pfuZFlNHD@Qx>cYYM^HqDvhoN)Iv|Cfks7aH zy3l2fD~bzjb0osZhUu8hGpbi@RiP&)e!zZx2nZ&@M-PgK@N1o6;*syRPphM{P&Rqu zD4WR~J62}olnJyDrpZ4G5;^+D(~}+#~zfDGIwZ{w;Vr z0*1sNo;k#1!7@OvVcW#k_lU=u|A8^(ZO3f92rHH80)dkrTcK#8{oS2VXc-94lp@+D z4G`9@_i8D2s(ZIP#Qvi!A0cv8kTKX<5_-GYJ@x+}`ZY8}J(+6v4 zvX6%F;TAeEdE#g`2scCG&mXa5xur`0b$l&~(^A zp+AII0eoSG%z%WvsqCn^!~h~6Xze);`fQ%O$yoV_-)et8lU962`^}f6r(zU1lkXqr zTAJSVDo`kC%7gkOi^mI3Y$b`;n&QZQ2{@G{G2nxg^-#dr{PqUZC}X{^y4Jg8zy7pf zNE)#i@SfYNwXqc{!wcCx=T6VUeCGsHJ>_^hxL_ekC)6mYS&3*BI4X3}L&~}Cck(7D zBPyIPWT}_L`oT5bc)#Va{9fb#i)q{|$W$Ohx(EfeV)*gM{s)-R7pn4}RS(Sc<7NtA z{|J7NYR77Yh(v`*@((g2Kz5`U7;M&ad0H*!(4+H#2)*~~p#LMOOP4%<}ox%dd5v_D(TYH$qJBH zgra36$~qpIe~HLS0RxjceBO-co`W=+nK)#m$pqTykgPQ*f6xvQXO@PyjSVq_k8>5L z#SRrKGJ3}nD!S|P551q0c;>l>q*y3nOZO((ls!MN=x93RjS6gBD|42E&HOrDNePIPwZ z&qS&XTXts2Poibtrg*R<2#X0z(}7Z%DrsUBCCt#zAMZ#cqOsWY;uz5e;4VBcjk?PkE>}6A!@``_K29Ry|MtaDTd8ejQ!>j85bs zt#t_*zNH|+L~Id@DUVy)Se?_5f;nGWM%B>_TZ4HF!N%Bfy#h}JZ*I^W`vxzK(-|f# zG}ScYkF-R>QLKJl!rkh@B9U7@iN3v^((ciKPVYI*gD<7ejKz(6w|Cdm1TB7xt%R2e zb%vS<4TmicKtx)mNKtBsck0P^4bPg(P9#mZ&38buT{fRVr#G15tmhaM71NHN7h78! zCh!Gaj8{azb#tW2E1^unNv*jvSGrE$ah56M{&VPMGT-X6#I9Kv*Yc4HDoNEu54N7KG0)1$*o$7gzC$c=j-xw) z(qzQ{g}*YW0k&*Qw|p)P`gpg(d51jc)f&!M!|#4+q9MK7Gtw71u~nD-8TDJ9wYICY z=Y>PP_APHKqruB=7(zS3haxOo@HZyfk-a}5<*vqGL9I2Gmm?au$vD~m$fIFibvr(> zEouc=Mm)vG^d4Uxvu`#ngvI6u>OUC?Wb^h#7OgcS0_$#}U^2?Q!zx_8{&0eNa{Hs> zUg4_eGdq6u3pb)`cTfj?$@_P{o9s!@=KWS^b^oFvqX#3@6$pOgK!n_5_A+bB$}5{_ z|7_V=I<>>md^oGkU0EqtxY*4#)6lAa!YQ&vbN!<+-%h@PB$#(cK^q0&*1LuK(7h%k zKEb=07xsU9vh&yR2(*%Goo|rGW;cHmziU<_T-h1P9xA?GkU8I(cVd|RCsu8J4T=Sx z5V#)4h}>USEXE2{V%L9Oi^NlXW3|~XPrY9Thp_QxkYW&NvRTLmD|RsTZ^6o}%q9p+9Pf0yVt6EDD&f$!^zL^cWreyd3QR!h&>=h%4i2!?CpU?PY zHJnkU*@~n$^wLy;AC2kVPrq0=@_U+L!!?w%`V89>nY>i|N+*bO=`D-b2|hzXME>)T zsOuiRaw+8$iJk&1AP**uZUyiWl&2|l#-3ia7G*I8i!YTb1*qdwl|>!$0*<{t`%b>v z#>bjX_Yb9lnrl}${`_nqm-JIXDuO~>tW?P|=*b*zIl!@8u1Dy>U$i0!qWRsJNo&xE zVW*EL^1OwS^|D|cF9CDycy)ZZ1;dkS(JWoTSsjHENR@Nz*1`HR^ih?4gBFwSa5M#! z1O8$MgIhdbDmcl)(5$n<`L!V+-k9HglHC)UV9sFvI)_N?-NYWmOF%`JPBA(HY4t;` zN0kEqD~S`OHZL}(C6E#3;N(S_=F*0+Z_cf^;piu)(AyI>ZMZ7`Vm;B^t46&u;8)Mn z4TWsjuM%|@hG%;^gp8Vg%%2%akUo1?g(2sd@#R{7w_f}!FzMg!WZTpJn}|FxSCVD_ z{~eF#P2$VL?~siE;`Tpk?Kcag zw#n#EW_-2ngL=hiQG1{U>K-?j&J~*k3^N$W7Uy;bLafY9#YZ%ulw$WVMXy@`%%&yy za`U=0YT_&Dy?EgDMy54FKn)v$`V!yS?DkAT)uto@-0hQEuK`=M0UzkMwO%6+`^y=; zZGyoyhiQ3g*Lj3OL;wG3rtmI9h~HNDs(lanU75tKIT!(v}rT_y{Qa#8uas=oejFgOY@Q9*^guD?yU|z`}mmuGAaHmq%ohv z)VXEHB%5S~Ktch4`oHb@!<&c0NBC>+sl$S31)$p38 zNaa44Z>|WkY|%%p@}qj8o!sq9SM85=fM1SB$ye?+!B--iF5M+|u4BUgdXQ9&PV zASJQh#0&_h&hiG`U+)P4gw1edz4?P$DJxnAHq`M~EJfUx{;jR{2Ra!Pz@6D-+@TY- zmFYJa8C3o2SJRdvJ4-JwD!jj3qYWQFaLn9Ksg{{u!=6Dn*9)5@JZYJ3l?;#HTK~176&5urpV&NYr=7mfO1eU%UB>*MoG`P)H~vRag;q+irgOykWp)UbZGVy(hoWGp31WRK|@ zW=&-)WYZFOtPvRW9Z^(rJJO+%-DV8s=}v8TN8ky4m<%iAPaP4Ib-iPW);SExb4u!e z(Ml{dw?nBj&nKW-Zf~l4hqiC<=%S8JV@ke${P*!fkK;liYGCy;0^TSB8y3Ek(Faja zcmgcmIhrpIstm}$=$_(41}}G1xUkD)rrfoOTAjy@jJDCUTVz@b5zDxirW%8>yu>0CJ?)B|{fJaaIHqC}E{q z8VwN*Q8bS!4o-{x6O%9ayE_^x8k%wvIcy{c8fF@Gw`3wR8LFs^^vwOn4rrh0$QeiW z@N@MTM7{Q(mosQ1Yinboml66RLrASRkj+m(#4M_4E3Z{el@@*-hCFa@zk5co*t%13 zGeC)kEuLSE0?tv5{h`j@2BU2$t>0QV0XrCDBYrt68S>P!$7P4#O~yO2FdPHv+ysvRL< zJPWyJ?BjlhhnReu9!$|mqgCp=YQ@j|CYR0mLK?J{r4oglmXdp_qkU6D_HZLyhJ((FR{az`Om&cMVK{JCcaOuQqe6|GZ-NS z0C8t(7?g`I5jIj7|DBO5pGTv6Pl5y4U#D|t;Wl7bX)?om2AQ%@*UxLmPJk0GT;$pIzSdKp^vjDx9UAr0Q63+t&&(@{psmog zp#8~OCHATRV!}j#i5UbY{ z++!3y(?U}m+vxlJ0yf^<6(zX!+V~ipl5zvXV=OqiCjhh7Xu+k zlxcm3D}Bd<`KVssFSC(`u{?;&mUhw;WF*RnEz1GyPvXGAiT@nOcyu#AJqB$H7h~c9 z;v1PSP>dfh_hw0aBIV>!{OxHm=JJ)zd$&>&i>S2P_=t7pWghaQ$sRNjVID^uIX?JX z5N_UxJ0n)xc6hF(5F?cGC8*vd3xZNK-^Ln4GcgO^d{=$skzi_fwlZ;W&SwOUd;D(9 zHnf|v+=ACjT^5eFwIZlprd4W1Decyq%G673RKgv48rUxPHoSZ%Irgi2_Q2G*xpp>V zzcp6`>IlODr8pfwZ46%0Roal54M#z0UN37hZ!LaQt?F?lXOUTLsr`PJV6_kS;i|tp z{ieNB*)-qwG^%#m^I>!{N}aBfO6bE>k(Z~Q1LGMn<3=vZ^fh;-+f_-kEV5qu{k~&K z)b6>|wIk(PJb?PTNS-fpJfc*wzsGHP17ka-UceOiu>{^Jv$~_USZH5>d z{y;=5-{2xrOiJbPt*@lCNXCdHT1kP5Na?ArO!@hV#Ku|md%ldeL>nXXhl`*NvVmb= z?%Je5T_6KEs&$ipphfuIXuI_qM-$|P{WCh6(Ndy0v~FDJ>`@qP*PEf6zxF|QG+Jxg zl3cIZfXtIqpS-y*PYCFP;+qBoM}L3#n#0Y@$%?1ttY*A9EWIG!z|7tjss}bonifg- z2;2Y21sMEl@JdG6Z@3*<=-XBZL74nVOO&J=&J8wo!g_ zOGsaDg{EG;S#Pt$Kvd+58HVhZ#dW9K}l1vdp-C;8B=Gztm}TkJK2TDuGM3Vb$M9L(PITQ zQyVX(I>K6SW2R0GajBUPd}a&j-5F`}d30Vz8#%k0-i`O!-krcPXFbnISZmrRRr2Tw zH&EE(>9#_da-TY^q6oR_$(kwS#+f*tGJUAhqU4!!^|PX5zONacIaBRga?$(!d7-5I zmK7HHHl0=9db{fI7xxt~`?~fuw_7Uq0<3W)ico9YU=Wz4RY}9SNC99hpb!AN=dyVAg3S1`#7{coqNn@nOqM;F<4N9}l&k)FH{aI1?;HNQ zgE$7$rZYEBZ}bmnoYlS&hmy6;%-bed9XJAi$eVx84Hk<{` zh%@cyLJg0<>NH61VkJX3n zh^unhs~X!^Cyp8ay5w4qd}?p2fbCV(5elLRRqH2X@dwA#ycWc*)NqR(`4_~3@lmP~ zOSd}=^*qdUMeksZbRv@n-o1#3Qzwp5%ipl_BtL@vxDdrC!_;xM0X<0mbR_+>t;JL5t0O#GWfR457h11P0|-o58_BY0}n7&!SHGHRo|IKm87@ zUXAJJvf+pC%#|(7SmV8Uje}es5;C#B#0RNTUOCg)r_Xu9al^^l)%4@peM%hIp(-Xa zdh@QQCZ{qyZZ~Uy^H*tl{vh*aiRBW&;hoM%8gI9GvMVvWnC>#7jN%w-YozbX2Svlv zqc|Fx6VZn{1Cbzx6JeULm@5=TR=*-1DDNtGo|66OKk8uatny|SbqhTm^iBp$C^`etOrRouy%@%AX0A`kl1I6O_@LE9VpHBi$sXYK@X#T~bbWFz7A+${u0V`O!D$eG_)AHyy=UTZL8Nx{81o7aw9&X! zGBD5X?1flQq{n1t6OWyQ34FRneY5{caqb5~-Ey`=1(f(cJ;3uybHPcHU^Z&)# zS9ZnGgxf+08e9Ve2=4Cg!QI{6eQ*fw!QFxfcX#*T?(Q(i;M~c3*ZBqKe3@QtRn@y| zx_0e)jw_*yBTxn*P_nx(_9Qv+PcWex?B?vGv$5vv!KS+$q+e zqNuN-dN4@#B)rq62Za&gvLBXpuMPa8-hPj>DHE@%hwlJw;A#yZQZ@@G^Tmj-Npixh zJc9njJO54-O)8m(^X?aE*OLv5m?S7fr)V&*d2mN(zi*7PNTmCKrR+ndj(p*Tdzq=C z&Q;e-B-76D@wDnmxfAdq~PJbSGXzf}cT0-cxWOHmywLC7q;9=b+8wFd{sB z*bF06#&j^XdR)h4F*028705hmHv1<4*icT&%&cT=VshZxXC);qodAw@QM+2P>&i2@ zcN0Fmhn6}{E?=VZaK1u{<`S zp0~&OLwmfp)@Kn?61WH|>4;r%W~gFJPRdx%YFQJG>SEd3*=@E`y?O7C9!z86b>(Zg z_R+l|0%v-0G{pWMOznhQ9b*Vdc`h;YTGPJ3StDZ1FU)}~XxP?$-}EAfzy>m>uDj0O zTzCCPnD9s}!O5(|hGVP-T0VR4B5)#9yZ8=M1eqK-^k2p`5>IqY55_!oRXP#nnM*Y$ z+I{nP#Nn9(R}O?#zl!&fI^qAMB}LL0LQ@W$*pO*C!lAOdNipHdCgXBTz$CwA z2{U#|B#v<^aZF_KCw9oRB8p!%Hz^BvGa*ObtL&XG8y4wtU+ z)XJPlJSrqw5+GdeLI0**&;IHVAErdP;{X@tdmfV!B*S^;^o`&jMUGiSW5?(1t1Rgz zudsd0^VfaoF;ya|h2xqm9io>KK5^~QB`Z|{^xh8>(yoXsvQYuS0e?ywp{LnD?tA6P z^3rN}Q}b?bJvF4iYp8meZH#^t-x** z>ut9CJm5StOJPV(G}lD4(;D2hl26*_AZjjhCEnKBTuAn$NyD>cEiSpzAU246Bd53U zgz7UhSsaI~)cKrXLnnpX-ewi%s3c$xQCVr&32-9k|FZpY$CJ9*$7QpejYjs(u^7nP z2}W4HQ0MD{QTa@@kipD<_IJOyjm>U0c-SB}Mh4-zCrz;|%F<88H%G@2F(5i=BFnvR zL|Rnw`_B#g!RtnxKhHrv_dnpUXqR@1@ea7Q%mw1+)xmY1Oz{!%H3$7gMQw&HnF~RO zvZy@lSfUNhP_s8ZF6q8jhShZGS>swfe?Uc9D3|N!;k@2JbI541^I<;Zuomcoh}4~) zuf4F;E=QKbo8M<$a`Zd)fGQisZSn1ut5d#tY~u7CHr3|58hc)D$ODNb!5JQ2Xze}i z27#;=91QL0)X=z41f^rza}Q)w!uI>ikC$s;CbidxfP3PWY9Jm50hP~LK7sg`fbb1? zb%;M(8>wa}?s-N9Fo@|5WFr}nH@}ikytSvV4Y@i#Qp?tUZeSRcDAgC=0WSH^?SppJ z&YUbSE!eCVqpRY&BPXp6`(_xeoK^VkzjcKZ=gQ?LL0>O_Wp81H!aj%nZg<=7`b{mt ziE#r40407{Rbt6Z7d^dob}l!rLT4wN#}55@ntaIyA!A=;auoVnWmC8NQlJx0jQVoDLM$!CUHxr?|IaQPVda z6m9eYD{uDd2!vQu+b?HKd3s+ikJ*3OoSMfUwxdX&v*0y!B=bkuV@4A9!`{sHRI%Bt zhFkbW8&CdK2UNH#U%Z>lB4u(~3_cE9&9}hg9u&Y)yT?N$bj3Y4HyqS&RYD)lRN-M^ zV36LQErDbvx@K?Q83V2;8m~s-udvcNH!hsf&@(nTZw@u2cba&K*S*=ZvQzY0_LGhV z4%yJquy=EF!nW#6mxeW9`(so>43%1+Do(V-#IRbUGiz2l)*#={fW>&GS{GtsKc2-` zU){!N4fWk`y1Lynv0OCC@}Yw-&kqJKdZ_b*Lo!BmB)U7ElwD$VAYWKGbE{)R2{I|O z!vFfL<#-U`^jy?npkwE-W_Nb%IPbtCkz;;(2zjI_b&NL)B0qx3mZhe9Zaa>jY~b){0Bu50h4yFz1=t$jlr0I>XJa;kB%{xQl=;a(neJyNr6 zb>yF?TArN6&oa7H4&qlU!9*@c!XgYD{G2XDEg6B1$$FF$??#NJ;L4^%Ja+YHaOdJ& z%hoTH6hR=fY4qHcAxp3Vm3Tzwc8YTJ^5#;O;IT5!=MF&_hSf*nLTEgalbf6(CFZK+ zaIJw55=K{^I5H9*u=h(Zr#~eYf%+%;`~;|gh`j2a6%p*44; zW8TJL!QR8{p9FlmSUOIyN%~&rZpXL6pV+U9QRz%m58mh`eqaUC@;Cu)m2%vu(ZtfJ z&`&Ppk2YeX*ef7!ohdqFyZ~Z`o_;IIKtCqYKDb+RF@#l4$nnE>m)go{fgfX-^1;+K z3^;27*M}e&6yX8<(zm1XIP=|(RTWVEdmHu{{>9rLiN2eq>)XV;{9Ct$Mv=P@>R8TRkt_Gufi)xHSqG6R z4DmXl%HeS0(pVswacbh_t|>|;Imy_!Z0@L(8rNa1!ztVy{0oF4yW6wTcgw?yGnTmQ za6{y%fsfZ~27R(Ns_)$Jzb7z9>nD2!O#Ca-r*H(bij@bc+%ITGU;4{mP80kyeb1=S z4!}7|{V6R`#OB_S5t}iXb(qR&TfaZTGOcsz{v@ZnW89?ab>x;BuTv@1#Kf)#Li6>W zxMHB2w?=EIy*j`L?DVFX4O)E_!=9|N5PJPv^|O2yYNnwZN+ta2^3`B{Lf@?zwXg3H zUolOjpGt|ZnPrpKKZJauZ!7QjZj3E+;OeU+g-}dqw(VaXsZvrcrX{Yg-K+HrLo^Pms+tp9ojATU5lO(J zfE!3}08v|SB*7JjbRkjBLeWJ?*w=(6IQQEN`gFcLtkL$1wVuvUrrOV-Goi19!cPZ-gVZkyHMcu}^Bm>i%)Erb(Hjh>!qhMMmag+f_IZ}zW`7v_F$;Yj z^YF{WniiBzCm}5Ly~VBe`Zax zfBkl$y)N1vdLz5(`L$4B54%;%<%gwuMqam61sIVxkH>qVq@SXRFDyO|z7%qv@u%H) zdsR3TO5Hc~0l%GVRj0CIrziir)Z*YQ5D%3vQosI`{GV zWei5F;UmKbBs7s!tr;kZ_E~W(Sc-atr>D|xjhXWe#;f5^S#HlP__9~;@7x8-(g!|s zqGEZH1RSqT#FV+=?-b$x;L-b=dF)yC9mI2Y@ef-$|720{FD)j4(7y^qW+27>x4TI` z4ttY+<5l}zjv5G$ACXcyz?+v3W#Caqg4uug#rOzP6-n}S#7+)pZ{koq`?)EW(WNkG z#p;y_-jIlgC`XFYV%IYcV%(9(Km)m!+e{gV{Mlj+Ko+_yb>J7a`XSbXs;;_>mSejZ z@pRu zriG~S4Z0UHNhWoG^EFH1_0&nu^{;y+t(}d(U#b-G#M1&1i}}`|imX{&=B$#Gb(gQX z6Bh?r%KTxIPRy|hMnoVFubowG^#Y4In~Sy6nZSYKtTG-rw*`YknkgMchf5p>6!wH7 zH$eSLJD5@#Q}wJ0E~gX3DT3bk@SmnPoRD%JZqb$~`MgcwV?DPU8R91t&P9O5MAV(v za`S3uRK&9uh?BgjHXmyERd^qCMWx^eLlWZax0AC# zEEe{2)byr`$_Zufh`NdzPb7^##_fiZ%a1Mv5sk1@IR3A`V*mqL)_y#(ZLFpv2KayObb3?5Irje=C zVdA!umdq2OLG>0G5j1+SOy{WDNs6qRbBw>T%u6I);eQuI=B>Ni8WXe3cbk~<)~5?Y zQ81e<=+gb<>^On@ZI$7!Movy14|drhpAbnSM~oU2k+g&(K12n3gF}QGeJ45J>J|i` zeD=}!Ai<sOw}nOmp0({}bc zD-<40BWJ4mfLZ#>kz`cjdxfni9y^|}68uBVKfC;0GjZ!o8X=A7QLjJB zx0;kmQCI$&>NqO)!{%uT&DEQcn9`p(r8CL!zIFBNI`s;RAgBX43 zoqjW*4xuMarYreEzUkR&7hHX0*iyS@yKKv`PKe@+3%MgrU4$B!SRu=6e`DCp(_!U@ zRH}OqBTF5!(_nOOmpgWut_Nw>BE^>*twX&f(D4n&b14n(gqnJpKh)!+J$u>b{`TvS z>t|@+a)=N(>rIX2WdaUF&h4hebhBZzmRgtv*OLl`|KZRV2J|DrTS)mySOTi|w0S8vWIJzAY@+cg^y7jLjiK znQBd-s(K^5MfP6Msz=`LBY`A7KIu~6N?9u?Vg7A>c3)n;PkiVBcxylYGf+*_dHtYS zZ`X+l7~igilX*UQ!Y8Dv$`;?)27J-dfgGexs=GBR&<@6-jntwpt`IntV-)+Vx7NW? z$x)m?%c0o%14W)bT|7CWoUt(t{6 zC=q$Q>GkG18aE5pAI>)^;jVdPPlz=;NP_*9;TR2;ew}))A7`sOYR8lc;V|ufxLS$# zpNYC8nBa6zmnBka;(={=kJAIb7H0EL4aH0_uk6*~trNn{;%NxG#|I_sd}5N6mh8Q7x*oo) z9LSj-(Q4XnSKiwVC;_DtK0jNTq#(&U#4{B$hHvAT1Y`sxb}^kKkHW#|GbSS?+GB$-Ny~~ zs*+bG6t=GqLfX+q&C&bZhrfn4PW~k)hSq$x!WV~ynb}0hfXB5hsCCO%v=jS+%R1m& zuGE=%%#+au&0?i1I=ZotrSBp=u1FaVh`H6G{F63t%~EJo&cj|05fCF*3gn2}_Z_U%N~l*hl29 zwU1wa8No;IVd^+@&P~AAk)LGUD|DsR&~nf9h#F33$VKc_P|gaBiVBxK!)CZe=I+1< z-QoWns`8_QOADD||5Bl!$@Dxk(QLeTK5Nooky6b5X*VsLOmh7Cx3j!h4h=4a1KqQf zzP+{@UGf&TH;{r_eMhVIWlU>RX4H2)Zd}K$Dt@PYDm;870ohzD-Y~J4Q}tJ?#5xHH zQ09YV*2FE+GUEZ1oR&saTU+bQv(rFEPA=u;)uw5u?!=S5djl8%YqaAB=p}R1-Vf*T zQG!D{0p~YvXej1Is8CFz4+j<$jiZA>~N{QKW<SPaj^>rl_+RbE2N)*2h;{#d~B9e}qFFqf0)vl%KQ;cC#iusF3blDv7l@?h-*b?X!VyQHJv4ZM5 zZ8cHvAc66lLOu{BpZb*nRHT}naCSI2zrk4uoiLd1%x*XCT(~ zIwpjBb8pwYsj{+)q}2F;-D4=+V8rAekO0FVW2f)Z-H6M#`wo30;9bw!`HBkvmXZ@< z-L!?z^>QXT<-Q!k@XtIPXf;*y8>JBXB$3YWugw_6(4Z^>Pi7$z5yusex+6 g2<- z6Pt>paG|*d|9C+(q0dx91t_isxBfh?hZi)6g(lrZK?%}v}Z2Pf-KMc`W3k1 zD}U~v_~+VJN#Y}&`tcOIrj>=5_j{x+4K_1=&&=q0-%^Q0!NQ;>k|$u>t+|ZTH#^E? zax|O(I0;U5U2wOW6~A7(O6w;Ihw0#{w7c82A-??D{i1GiJM};s;e9+)@vTTY#Z*c} zoX}PaYrK)O-fL6EwbBD=Mtq#bdIdSd)%WM`ZiU~vmFA9}OqDAPKj7rJSXR!y>h72l7cu5~AXSAw^mASitieqYY7yO!Ive`CO zq3h?V10>R2y;|D&pjew`qc}BJP z$*tJm26JamR00Xf4h!THuH1q8VBjM^ZH1_5lDu!BPZKhXeze&B^;r?+YAx#`t{Lx0 z^i%Q+Qhh(exEd#QQBUN*Oz95(KKfo{e)MHMR!V!7lylWp-@6E{Hy}*{^RfPD6OD0!;I-{&aphs|yDV&$v)P z;fH0tkUQc&0oj3``1gYJfKDHbcb6cxq?I{Hx9Pc3ix2#YK-GQksB3Y&+1E1e6^1re zgjJ0|15?DN&1ekow5~gdJwXG>s8jOW!9VMD$;yy{bPjL8l&tn@=Vm>yhVcS=EHY@q z{U2KZ7f3RLAg9`)9U$<)X8+5`{YQSDkfvfA$e)440P2I&T2eeXlD-Y-6jjANhhull zSby1SraSos63kT@Ui~rj7~F`2UpU(|73aZI_wWyg-?SlPTs`|YxxkA^q~&#(<6mGJ zUkr`*h^cNVWj$ZfQ?~?LV`zZxe<74m44!j(U~vUw>BsW&Y>3zL=#^==NeYkuqtPEu zfufoaaD#Hc(&K;j+b;!af)8p3Y#WfVg|HSDWWU%~jhB|4Q9W){gHNpbt6dKR_&J8? zXr~rcsM*4ieJ%~a^nDI^FXYoLV!@&!z?aP6I@SMX7qUCz^5rVhppTXWQqb2sM0{UM zP~(EWC!sp)b?zS?JD)qI_@C~ScISK;l{$V7sZ)nI7uNc|a5SASi~d>gjA(vD2;I5S z0Sg)P7`)3}ADGU`o4ch+Bsa(M=KjnfYVC}leT@pi4Rt^G6k0Q3AyA+eBwQ#mRSsZ$ z`Lkha_I!83cRyjdc%c9y$DYqrdVL&olsEg>ZevtfOy4-?#k@*Y5qtIGdKzyByiMK8 z#+YY0V-d3`$1Q_#)1!y%mi)T0FNz(@FcuE-6S;0WlcwJFOP^X?=7L!$lfB?zM9;K_ z(CT1*WDtpTGaA=|5~(&?Z8$-^a>1bp3*-b)CH*w$@(GkCu-_|M8geGV=#e_FYArO! z1(%FA)tf5G1eqSe{v_~ zHc%fiy733tAF|zTw(HdH#C1_9t~t`+O$&}*3GQN5u>s5kMLn46p*Nt$;@h60{ddCr zzb|LW>srm|Z=31EcEy4KbLIgDeBmQV6KZ;xuqo3xi36*`diObx%eQk~{)~j3BFnjN zR4Q?k?Z_-U4=lFaSi@zHfYTpv2UYZ;8*S&iGa3g*<#(}`wp~~OqAgm5u-sXg`;w{c1t|p+LFOwpqs-%R2tV0 z_ll|2`ZyOIPXe)jFr{qM|AG6B=_^0X+^SFRXOM_&&nvGmWt(*HgX5t+C>90D#4yU5 zEVqfpaDQAE2a*dT?f&WIn;>tR(T2lO>=~i)-*F?ci!JH1Qy5qU&r*%a==$^fj_a|t z21b*T8K~;NP1a;Bm9Gt^e1p~gks96{5LE|rR{SkikJR#hx=3(F<{x1#WiL=2s|EB@ zu(5Ma1De{&A#PLpu`~9{N?TW9?Co%PMUg(a3i=;6N*L? zT?(aKaz(P9vnNk+Y&4#KO;VDTO1~K0&Avhm?w31ppb4eC34>B1j9P(H;ZUuc0$uVc zTVcZy*brl?6BpEj)CS9f4q6OerDDO!&bg;@IJ}o+YMHWFZ>TaxC7uAQZbkxRh+%h z2=R}ma)zxv^nC*PswzqnWgu=^obdawy7$3i&V|7-_+qM*jm0dbFuT+-fRi+_7Ui*8 z5%g6DcapjZhn{tWpd92{w}0+*YGvCs3JXvbWNly*u~>F!K$NZQYJT^!8Fpj((dyf-8a*u@8W zMn8~IT`KFkJWCym;vrLCA1VBoQ6kn(k5#1R#EA+-L=`S@Fhk9WK(~nz1j^Cyq4@OB z1rrjUKc$?XV9yr9!zPm0&Of2W4^p9{;iXA{pNOc!5prOO%VMz7d?as1v#Km|P9;5c zIOezhQ%%Q8hw$O@(w*NqsdaNj-=8A$952cm$)cX;m(Okdo@vKGtt_Mn^M!ROvCj>Y zFg9IjeTBH*;fx?+lmgN#sZZx!5I zq?|h&GM?Y6;-vTW>^BpEMSU?>tivzi%Fx_7Rn(uYz?1_tor z78r}_6TMJ~s&`KJcMpArK`oMu+ZxziDD!E%#*Yk3cWk?t`=`?RBH#%5tXmZidnT&xjT@IFpUT>F_q#5tj(}r;DJ^7LT)8ejlcHJLDFBTet z3KOh_uU6Rb9(RO#I+kf_>`uSz@j7g9>)6jDT(9+;rpD#Px@pi1 z(vgB$?%x90yBh+oP>0|p+wqxTsm~o!l5$eTV)zF2drTo5s&;nJ7N1b3$#frg0uIlNs5Mfu5=Kj+P^iH*+Xo zN;Rwb$@Sp*d~ORm+R%_0=d{TpRG2M4c_Xu7V#_m zQn6aTZ*d$kRD(-%P=16E5f;rT8mRIF7@+I1QR1{-ECCtfZ>oi zxRSKNpy7-6rFEQtE45WQ+gtOj64$C{raX=IgJJdlq}NEw|50$ge-zwZU{y0?u)CsU zuyOEXy}s+;nQrAS!ti|`4H87ye6*clZISnR5c9tQ(7(iI3##|!f?wrpZe2p8vZw#s9y@1o&VF1k1f+$80C8Fq*9d18eaPW2JbwFmuu zs%k&J={4r-ZIb$2gsG{(ba`UIonV}ov^!sw3#hrxc0HXB;Vho$HIe*vtFHLf_QUuS zIOlZnSq<}mxo3~#^~uYXqD=>ZF#m;wJf&ckfkS%Ix!+E0-*RyQ8+DJ{mv zJHbrl?baR}kB#Buc!jxxpvhG2U57!Z_s`S5Oi;}Mg+x2=-mp$ELVDJtGD=@V6YGyK zI+3Q5l_U2B7iY>h3D}99 z5O0$8gt}fMgqMsrXfXYir!I8J>^7f8#Kh!@1Q|*aX9sF1Wuh|wjB11t^rj?<8u))V z!*9lsnMnY;RB$S&KXY?uCeS=oVB!J{{Iy(I=#T3jZke5L6Gh234u74PgpHLxorxiq zBYGW+ucTfkp?ImKG+O8iry}hq;6!Db&E0G$zh#q?l<}GwRud;2Or=gTA*^!-N~LpA#ZV;?59t0>VO;N<6GU}=MoeS7}xvpORl6hoL%>&Yzwv|SK`x8`54mn9#wz=Iadgk^K zIB{#_3Yx7%qG0~TtG)<7qG@=gEQ7DAOC9o8O+M3ZjUr zw{O1)SbRe+Y1tq&SRI_MTyNMOew($JO_q|COo6XR4_+oo>^K5s+gP=yd0}Pig&T%sL6EpI?#5o<-d~6pzlD z?Y+7snvKtM(^v9ENgA#Bk^H&y8BLU@p-5yVgDx&iWqh+luUVe$k51wx#!`M#*h)c; z;Yea!t*ryew%&9+mciflrR@2tjU0*1M@%KAi&~AR>qL*^g<44V%Wr+$MV~%3Lx`zb zJd{9DskCwvZEm3jAgKLO%vS~b^~5FOs%NBN(SJrQeeJ2wTDxI&@ml3NX~&GD(?&mg zVm;q%ik|qZ2wt!@)#}02kH$NaXR>%gh#l~1IT*qh()#-P7^E5lSM>5lrBs82?6@wF zPqW~U6U+Em46NVI3C_!${j4g<5z4aV>i{EhJMHzFt zxSe07(=qHa+P?0-r3XeQh>)mSf;xoOh%N9LYBMx@mK?#iRZqKA z%F@y7OzR;Cq_gUB8EW05xA%P3A=|<#Rfd7(c%5i4Ylm0ZoO-<3{{_ZfWh=9!S9G>nyg;wv3 zCz|V@tU-7py#O<*<-5;^z&l#%xxQRMM2nyeyAZ%! zU!Db(sg$En`@cgGg3)wA7WLvN-Vp_{9`6`sP2LgJDM{~0E)N!-%q^#(_BV_Y-5z8) zI8qG`Svfdrlr+s(d7@NLYksRy=d%XJyN}MklA%f7Wihx9{EA8}7*-7{G!3TPUuQvBi^QS1Yy5c)pX|rEoKJ z3sUKPK=SFbCz9@MGTQ@`{)6nauc~Fl$1c*Nz1jB;Rg~iD2X)9-`Ayt6uoJ-=H*hbk z!EPfq^xpes1%%(}*^LJd>lRmJ(f_Pk>CZS^5vj+jpLd^qVYQye!AQ3nr<^VeXuv^1 z#Gjl|4Rg4~)amxgWYDuOQlD(cWp;y7L!5(kX@RkG=xjS>s5u7{Ah#@}xHjscUbiQpT z8z0HM*wt|G^U<0`u1d11?@CxzlaY}ewFe%&<_?^|yD#|vxI_{zuHvVY*ZCcNx}yFq z_H&sohbqTV6nF)%o2GF;jaMe8T1%RuT970(T$5ErobRa6i`w+Y4=o-M7hO+maZS9- z>gRlJji^{%T;fQ=qU2yR$Dx!=ygK`@i0&+~YX&1ev7kky=_`jcoE2ra0qWCxdL)aV zcjyF>W957y$DI%M4c45?=>1?V#Wf#A{2HpiAXLvsee4~ z5)*M)%!Vs)iY6bEoz0JITN^>7&I}vGB^q)GDGrlpP9>vnllY@)p6&au@5wB#ySBB2 zIux8+o5J#BYvfK#G`O5ktWLQva;MFfG_dHibZwya#^mC zbR=80{KSh%T)6zle#{kNML!l2fMib8kP!`7m+Ea7&;9E~I~HdENU zzk_jjf@5Sl!aic9T~FUuTg<#-ljLl%3akAsYhAHDb>JB|+0C!o)&6}q@<}r<-8R}| zw3_s6th_rb5$!Ewe6Bt&B79`nZER#Nb2ez6yatvel-RyGd|*1^I5YLpLjGN#89b|S z%Ir$Q2irc1iK)kUtLEr5=%ITsCJ963CK8;bN@v#407s`wOhH*kMORU`gXAP(8uCdQ z{S@IZedbmwmGQQ`Ib@X0bjcn9ISf_xXGOy0htAisp@l?S6dO4R=Yiqjl8eYEx;N(B zJE*nUYb2GIXAFdAN@dQzxKE@~V&5bR6$*6r8)Wv6YQYKSr%}ikc9P(yn-cdJ;v+b} z`(l3syL**@vz!ptnwgCrEA5$SR5%D`KkNUd>l|o@W!+CN9yzMT*&j6?A)N!e`ivYu zkJ!hJpj`Z#t**RJw&>1MKZty5C4}1y4@Wr4j?+I3gsFCd43Lg~dqytqs158-Y{!`O zr#+aYjgj`fgq!)Gfe~ za>2LJGLnz$xhIEkz&q74pdYQ<8bck#ataFRoQ(q5{^@%klr@}hx#44TAivt!3~3#2 z`l&2;`B~ofgOQLsO-jfH;U#A~f6%6X>^I(<04%hnoN@Jx?6+B@u=cD5YL8lvTkTC+ z{*C>YKpcrfep%d2C>vcqc4SV8@dw9aZ^i;I@@+@c`XU(=^kkf)8EJ-gHhk!YNClW9 zr-$sH)Ik`IT&p+sB{^hSArYC#ES3x8R14W5_}wB6-k10)&Gv-gu&a>OA7GsYGGN*Jy>B9jc}t#+FNq0lRJOmw9(Y?LBTVjn|B_6EdV8tIjF1=Y;nMC4E29 z{xJFX2toSIrZZRmnzFiSkcl03VCQz(C4*ulkXRGLA2XlbR7Jhs$@TeyB6qH^CQ$G+ z{o=5vdBWj^XB(!tR5!1`_7p?*nV?j&~KUJcxx7>4`n|V zA1-$ph$6asMoE4@D5$?BaVFko(EU8=(Ewwd+aCie>iGcA9}LK0LFq3vC)ytz1<(j| z*ge>BPE&Ll3_+BCpAs#!TpB`A++osq$YA4$9^P#5$#vqcZBLL9sz>t1+@cvoVT?X) z!0Ly71Z3j%Pn9x*T%62p5|njrc1BrS6bMM@O%PWuFqkT^l{5IhEB5-GejN#3z9)`tfrQGw zsoM%h5A|%0#X|E+!|L>EIQ^Wd3H;z@A{q`?uGo z+7~9Ex(NZD#|f*()Sqc1{sR9b@q9m%ltcenvmo2ydi)HgZVB3e=;x6P+bTG;vFz8r zsWJ7IE`vcM!=-Ws$0f>Na4kxAB}U0{i$XsBi_-+cTLLbc4ZEk?55@6JE&S*8Mzu!N zZy9n$SP*=ThRhoBqfiRpcfX-#T(g-wxy)*P!77sV_o240hK?bsCh8fT)mUV0^}x1w zpr@427V}h4zUv_>Ek!_n#g&%8lx+XQ4ZN`E!9CpYMak@{H>Q&F6vw3?Op(oz?waR-E;dqB(uyR~t4sV0cuE;Dh~rdvLaxvEvDI7?Mk7 z#z6gVwg2#K`tJa%k|uY?vrL=*XeQug6t&rG8PRi>i`S)%{PmzCavC9D2LKe!SWCg@cdF@!m0|kUoPsX z9Sg5dR`9ae7hZ2;jwBlcpvBu3=M}Ksu*}r-G}~ngx?eB^@w2C$95$Aa0&vf5%)`2B ztRcf79f6Pa{*+gBd6pXZycq|;%=i^#wOX@gE31WJOA(vIWM_}|K?C}!d=BUg=Lp^1^sq^f zH%n-?>J!D;Tz}?7;H9$rz6Vw4+b(6;iJVQNZlHk-^b);}h)ZI{Qv+HK?pbTeU?Ei)6ODl>VI zckUYAPIUD))gLln?<|ds9*?&TV;mP_`mdS*m&$5(Y+~5A^M{rce-!=nwcPggHwV@b zzOvC0G}yc6)j#S1P7CsbQd6gnj-IqM5eJJoK(!AkgaBRptW8T9C45W6c`RtUb`VPf zE91^(A2=VBpRGB2oIGLlLe5x9etnv|CpQ1B!}hXH_mHsyC8(>+6;Z8z=`5y2>6GKt zZ`OTUxJ(sjK1Cr+P^cE?6m8iES#+*hvJSR|A68YL8s@`Qo^2=@uWEU!55~M@`T6Tt|eI>EGn>QU|ksb z6!UwTLsY~1>+!Mi+)h06VejOcg*4%Wyfu7X))lTN4o4DKW?n`&JE4^$QE810i&V^I0YAv6(@ z1WN@BZHWjDrL!@n>)sUkELBI2YK~v!S`L|W1iF&_P&T6om>N)W=T>Sye>)a5=O~j% zHECRFv0p?;5#)oao(^la*8=n?{Mm{rI069aZIoz`UoJurPjP*J7B^7r?T%BgwdZE0 z(32wxxg9k&=bHLt^qJQ)pH77UAP-#jkPOC(5Z^h<2*!+uSKsj{-i@FyM62C*JBV2G zqJsQf1VTATS6+75+Q7kTZV-Kev_l@Q+wL6E-o=zc)*aajM~FhW9I^#OttbrSoWw2u zA1Md2dL30O0(U0L27XUPQ%F)^!uYQ0(yDt5dUbQL(Mf z`9qPA<_}#Vg?7d_(%l!!4aMr6+ydXTTYA|fSEV(wv8M31e4ZQ64KABMo-YU7wm{wS z-4&C}xAKK+uL^&%A`%1C&=Pn{y^rueWyka%o3ytp>5laE_7mk>>Q1&elpU2PD@F9x z0!-PfwEn_7ErBu4KLqvb-^ynmo~@CpxBdhr`KXPC6MLS&Y?J$O`hSU%(I?sA%b;FO zcROB=sh4=T7_p(EQ)6Ajx8ZWody^1!nA>Cbh!G#(a?LD0b>%M7No6&jf|S1iK-RCU z3Wn7@e-O9!&*}eiy88CkCjVU#WLSK{g_~dW#!SV?Skl&pm$?zTVLohLZ=@|J8x=v$ z=85w8r$1-CH^_dfm9Ml)(}_bz?8BjDxqs+e<;+;=v`Q)k;6e-;bw(Y9N|c?)@Nsx# zh$|Pth9M-9OKx0``YRusc6n&W57EuGt2tCYZDjiytA?id49P^VfFDJO)!pH3s!FS5 zn#V&pu436gq)ObF6xpoW!|jmnl}i}xCL`WDu6LbjR6^?v)o*)A`4k3@e&FZ;G7f`a zgPWxQPjxTIJ@zu6@K#5TUUSqKyJN?V$cgu8E;~pVr8hXMg8p9CxS}n=#Gj&I`N_@= zQlv9^^!ZKsj%;3Wt(%K5t}z`;A?wwV$`kQ)2~tL z8!KQwrLc^dl^~LE10ZDNJPo@|@uCtNW30qyW)goWSW!a+lkUG!FL>``?=F8<-@mN;H6X=&Xs_+I4ZU`{F5w9)COmHhS5eJagbKqm;C?Nwa2o6&4!){P|O3 z>5VO!!gBrY??9=rK^2P>Spxu)vbBVSii(wktAmS`gCn`Dgao;xvx9~87jppcT+UXr zR98F16S`Z!7MG6hoT@ZG< zsK8LDPS*rpc~Bq@AnF|_UI>VOgbK_~r&R;;U;*P1)6d(03Nv6#7qB-21ZLl7_&@=A z$rQLyc?keHwt1u^U?l*QPiRI<0orT;j)iZydUTO*cWvay3XMFQiMy+5IHJ?i84n~ z0N8Z(pL%)E`im$~06x&}rGVxP*2)k$&+RV8q844W4#+!P*1B^1=NqZ~Z%s=}yE{9J za=qeuCc|2OFP7a#om!AD5B`GBcQ=39x2S_Y7z9bf-v8+yy;k^1GLeWF`gwIPUi!HK z`SqD}hO$@obCWhB&bBI+Q=B9?_Ugk=$|&(fhCZ6fUZ~3~?m0KoVzThVo!>`tY%8QbuFeSy58X zPF1V$Bu6xsZjDAXAxHE_6HrbUeQOXRtk@t3+k|2{66$lbHdP!5KO^j(qDuxAD~6hU zC=y4NQa*u8hW%5tI=O}n>7|e}G+%`N$L0iqLEuC1b9k#XdvZ{%s?aP-okUYH4^imH z0^~_ES9WkbUS8&;^KT-dSnmA&$ucYS<#=I<0k+Nq0tAlUFKjIRJ>oUI?-7$sM`|d` zQOf#>sx`}DTB2@DCu%%kv4W&J5xHSK#K}$GiOFayXe%ws6qA!sb7C$d@*u*5s&>;+ zCKb#7rftT2=q334fjvT7<~`LsRy;NeV4SLD}!s#1+8#^!Vb^Noez$;$t%C`g$hvck8zv#vUD zZN^+nd8d>%sWm-vD1DH20CVkuf*Ot+G7xD=Pnb!7KwwGeK~R;hP)IlvLpY$$#>0M` zzMp}f;h>?-SkLH-n=p)&B9}s&Ld?jjUQ$|Ex?YN`aiuY$9$#Xp=2!VqgF|h*1aUUC zOrtbgIg3!bUGJ9P)Yi~7`1P?OyMkuErJ|(>v#3caNvSMn-m<6qZ~ahx zNdsZ^?jrn3WxZX!pNZvXe9MNu%AT{Nwj{r1zpoG>1k{Knv@%j%Qh%4<&N%#<{OjQH ztTPe6zU$OOR!i*(jEO~#?RxAHhF zIoBH}gH7-0o9xVAncb(wD^+LQXVzyCtGT0`xePfv94?bRgA#vKcc(;-MQwO<5DPDi*36etMMNnVjPb-wHeDZVPV<@~nSY*D)I9>1-Hm7*XzV$T14r zkO-i9HGB1bodSviX`n1&qJqSN^q`;ay?rS<;zamY%x`O#PQ_yLn#6F$;)5%Kce^Sm ztOifMRZ!gRr;jI$Tcd@k_#ezqBAD!%#Ps;1(1k^WX@!f#IYw#|O|hqOc}%TJxNJy1 zN~TJ#XIio=^Hnj+aWM*)ve*bN^E7idi}bTt=#0*3XKTxTktg9}VXWk~|I)tke0mkJ zmA!?$?Sr4rI%weNl|SBn9ae-_!h-dlKUGvAQi(VDLJWhk7%!IQ65E3&4#}&VwA+%B zb&7i`a#2E`@txA845OlV;z>d)mlt&($Ith>O`&up-&z$=71lEObMV0KRWS?*c5kCdB-)xPxE$273MOF~!?k@X9xytn=L0Q><>R&BXej;qqF{q}qFJT47BaqhDzWsh4Q_-XYl7YF;!nJ|-Zd{zLs*{ZXC!YWtW@^_KHwZbh&44kA3%zM=u8p*UwTXZ|Gn^y^NfGOG0OKK04YphC&c>2v^Q8U}(u zg;u}NG&@H+Eu{V_exB)A8f}2A{U!U{gBg_@RpV<`{}z>_q}R^j9pc8_J5>H<_gJ6u zO@tXTcT!7IRvU5fCHP~e8u&@?vtG0EsPNSM(Yp7u^a>ez7N?+&m)w>5koEFm@Jy2B zt*fAF1A*q7PyMv z$nMDXNbn_TMtPtms|8%yq;K1F=G|83V{vy#oWnD|cHQRn7w>g`E{9KOt?kO&;jZuQ zW&>}{-voWm>3$G0Wo3^{x*l9(`?pv}R5DR>#F#K&Xxzn?o^7@ta?%1^sY zOX{%m{RuhhJSMDK>F@4;*FNOQ!ESi1`E=UlvFbs3{(S>odB>MLfd19$q2@+yvgj#^ zFe&L37AF1b*_4BMnrohhlV3 zN`fd*6hko{TZSy35LeH@!^6X1n}*6`QBW$c_(3ccteKSi;>pX4KTFz%&R6g+EO15y zTBUy5%Y?`R?#@2@P=B#a@Mw)@3D7xk zI)#a_p}~J50#GlKq(Iqyc;0JdIHACJU`7EotIKh8?yZCVe5KCL;#80K?a{V#)63qZ zeyisczL8({whQMmXR*Xa3@H@a8gkYqT_ncilPXdvs_#3yt8@7~2kj$=9V4N$+Jx^P zA*`qy9q+(=Iyw`=uia<9%8z+bhii{~FgRl&PEi<-`x@d5+9!WpdT!l19CUcOmMbCq zB?F(puYG6Z9a!K(6W^z?>jsgBX0MJi@7Q!>7y8lOMoAE4=DV7v*wv*QvZZ|n&qIIN zfPMhP4KL=VJihj&;F+R@YJrlZ3IG^`*F^A@i{>5=C{`#|Pr{b&Zm+V5X z>fe~+`^Zpu2sJXo2^Yg&@Cq@-(Uv zOxqS2r9s)}t@a1pW;pRj_k-KYIXfnFC}T$c;5Hkd`HN#RbAF(*E(oI;NasiCxD7&m zlDBxdSUU`}FcEus%2hgbUJ`Oo3v+od8#)OWxfM zszjW)l{J@Ut-0~^f_{c_8K-) zbJ#c=?A8k4`<~!*V8_SaX7&fw6|GXVk1(g&bY;F@;#Xm_jgf_koGwDS1!X7(;0Pa8 z!GAK&Qc_v^g_=`dKDu_qS9QoPJ;*!^L)@4MBPlV};DmvJ#fF-5L{46w(I&VXa?zX! zqEOeHK|#AKD|XjPPT|G^>ntr%B-E&P{|dwq2LYm>JSwI42dd^;egW|PgHW2cOQj7VG)7jeRiT1$V3@;tEDaX^cgy)So8%Q%VE zTm=R4mYqi)a!I9_E9Jk?%8N6n5V*hJS^Cfi0Aa`K@YWyL@&xnk!g8^?7Opy{`v8fp|?~qvI2Z`@%rstic7;y+g9|RUb~k&I%7c3vor@xQ^BYa|eQ(74$&tD7WFK5}OE4LiqBDp9_UKQJNU`REg-kk z2ZTnWKcZj+P&3oPM706^r)q}2!W*a`;Kar5c5qJ&e_toXm+6zPxSk!L`cU3DIcB;idfp-3vo+2Y*wzCP8)Ja?4 zeX$-GLEAk+VeglMQ~myafo?D@zkI%IXEATJ&!+f5AbOSe)*c2SK_IK?V5>u#POFAE z63hK*SXc*ceG}xE$>E^FIqy2|_m52BmxFCwWa)U~w2z#WE6_WMsGocHwbuBir9`iw zIO2b=$_}M+iL~l%iQMkti^zQizLA$fdd@}o?6$$S;6B%Np(hc&t3>IxM@U{frUF97 zD%R^`pV4?uYu&=1APKC+uDVQoKP_yxwYrJ6OcGdfiK%FhLcvS&&`*@|KYS;S2&*hc zBr1LEZJuy4pd#5#{e5=|aE$_13)ch?^Lsh}ZcAy;NLuE5DVeuW4QkZ5P2IXRX=vol z1%lZeul-nEPjd$SQhe~4F%eJoZq6$1JJtGZOUW%d7iFYy?Dh1A#3*4qjX!Fr0Vf7lCGf1*N`EO22A^H5K6c1KaoAMH2;^o4U7rnmtH1JUUh}W92piy`6g?pBQju_)_P7?{Y56g;icPY?A!S&eEnKkL6S+u|YC;S~AXv=)k0_)f*mNH^W* zI5M6h*wwkdl)3r?P#RE7?3#FrS+N2jDBFuUm0&G0sniAj0RVBJjt-u0)qD;&97&zw~&tiW1tp7VDp2lK7s>Rx_(w`s%;${@0XnD4|kg~H0mHl4r(S17#RKje47Sq zK-Cr-J6%)%u>Mhiq!y+2sJb)47xwRBw zsUYd%-n%}-=k=T9((+RzNhpl4OsV?bHRPJ%5aH1+W*NH#p{$c~Y^-Y`{jG@ThYf0Q zJdG~NJz3ZLNFOL3lC&)l+xlUC;)rGG7_Z(UJ4xuN{zS*CbF6bVi2Y*c?8WpkzQtV& z@en6uHcL!Y{gY=F$6Z68xo|aq*BSb9S4M8E9rx+e1I8kMiK5w1t}Qb1YALollQy$T zt+{N&05v=n1vY)`Pd6**_)YKSN(lZ+5(o|EJ4L%&L zoAbkKdc()J77qgF3SrT84CnR;p($#Msz$YbHlpbhs) zSKR4#mWgU#hw{>IucB%xY$J`K7gSr37MEL(7|66Vj{}}elVP>jQ9r3aX~b7F^!khM z#C^dbL^upy9~veyvkbOthYNf+z$v*xttI678=*enpRn5HoTlp$K9`&k0mYg*xlNZN zM#9euN3J7(myqp$dez6^SD zNA5$sYcX(PXgqyl6u1a!%6eRPBd5gm-l*{8Pes?(9FCtBK;+K}l30YwBQr)Q~dwDyhsA#f{oS1$_l0D;EKMy{MK|@tPb;g}t6E++Iofd*&%O+NEF^Di|**f3K7sGQ7$` zSZWpeDh7t~lG4v4JIiCty|YlZ83&U2Q7~c$>R(;a!trsWjjNfe&+wpDVI@e0xYXzp zsn`~AWsbYT6L%%KW?;2Z4*PFv*#00362b{KLLEXf}fnY6yF#r@4CA+SKxNn2Y z%)Di*^9MsW$F2FB1IJmlh-bM zLK?WR(&29vkC@_&p26n6^IMJO#6H!egFuZak4O=EMD;1SAPeSi&D7UW3vJKF(VHV@ zC3c=SF9m)oF2Q)Cz2RY8Sl}*-d|CD`sii0Oe+~qw2`_)$4oJZxAVhHEf%7;2QjCWP zEHE*q;);WU%DcO=k29qo!@{LGvB1D&ftOrYmq9bSBMRxi8Wh$Q73qUJkFt_r>Dc;( zh>-V9eWOdX^RJq)IE>~_RmA8k=bzvcdm-;^HcsrMPX!@go*K&gz;9Et1wS=Z#^0u8 zHdr}zPr?Q=4aBo9)=sire35%A&d1CseP+6yw)@}d!3gcWwmn{dMRz&bc#eqe5qm3* zQ_4mA=Wi1Hr#pi}lrX^noBwF!?nc`Pp^BiuTiGYZJ&G9glVhDo#C!1X9d}~Pn$L}W z8b+h{dIKIp>O1j+U{klwqc9h6n9kE3+2oH&b)1{|O#9Wklg!o-zS>~8NQ~xcqP@N* zDLsG4QCwzKowl7Kk|J<0S#o6_(hRvB^C3ZaTP^rlP}SE@%Hg+GYu~kUKax3i+mF1q z+zHoxK3|68&|t!&dNY-$Ydmv~Tqj{m=6SJ+Efk*97+2bQJB+;I|8Uq>58a|fak@_6U%uT_i57#(gznDWT5gO z2;(tLO}+Si#p9NU$F0rT-APhBr&Ad%*93Z|u-|gP#%saCT)f-COsHFk4=%rz8DvG^-UZT(kbAEzdL$K6)wH%(ZT0Sbz#CsHm9>ZJ zU)nnF5War8E+T7l82r{%RQF&VK?@`&gy5c9X4#sqs?QXTD=w?*>@zuQgELGjVlI0~e&Iqv_s zq501r0Fa!fUjFhhGKz|P*6#moo@Qj<@S1Yv{_@#szO=IR`Oh}PuYFcD+qDkAj;We4 zEcKZ3hrrBxc8bs!|KwmBm@bMZ(fM(=k=rWpT#M;3!g-4TCFNF?boG5MQ$&;3gOUHk z9Ju0%sqwq{{)_e6BV70cF~1`=L60&j#Wj!FPwJ2_P#!<)eR_^6%J9CGuD&}3$CHWF zyV+d5)~z#+tHkhk;908Z#+xL_Rs>US;mnDHprDhtIB8}*XJkQv zg}$hWD$tFWcs9v@$U`y62~2UNyx=0-Pj!D)bMk!G`F#Ct{q*UU>|0{8t3`XwR;;^( z4OmlCx7FmTK84ubZn?U$wR{!}BcC7IEN1Npg*p@zWcu-d-uxk=RPNFmyE1TCfrFBL z4ijUTkK1H&N<&`UEm!YKooJoNK{l?(#9_Tz@m%S!t;G$5h}^I;u@ih`$;%nPIdknt zn9)aLuAwnEH^#h7Vk9hb6qbY*#Q6T)4iOTD4roM+kC zxKlqozy1J@xGFPC+K9CWEZk#*jI1Ny#FjbT&aX#{ay+g!bBKb zYvIg4lcDc%vW~$M`&Y%K-Mm#BQIen(T(}tgH@b5bjj=VS^%m%iH9b8;&u-pC3yih> zH4pj*=?UX5w724a^ z=f{28V*mX-QeJt1ixnu&@;E0XNtj)pRo0N7qY&i&dEQG`$|Q%F4=bw5tg+j7RoKdV zc$uG`ez5A76o#RVbdZ%HWI4`6rbO&_u2;jL+Ke6;_{aEYGP#O^g1k(W9tbQKbqnK$ z?D~AX`SQ2Z@6NcZzy%&5c#@CHd$!o8s^g>u-(hsIDHmh1&Dd(Pm&~4`b5isw@Q;e2 z`pv@(59%R7NK{mHVbplQ#%TKA$DKpdGaouecGbJ=_4-<*^`qe`qh?Fbv>mz}Uua}( z6GiOo*M1|fT|b_$xi`xOO$fh|XAZw6<2q{j6t?+JOpYTe3qJ6sQoki3_|Z&Nt&cC6 z0~6k-x6h*zrF9HnUB2O7%r+KvcrNsjZsmF(Sp!+MQEZ%3a4DHuijC*}HNT8rJAy|g z@KzY!m1~P$&5nBR=5&#o=6LN9z8AXo=n_`E=6UiyN;~&w_Zfvb4;%PMyo{)~D;#gx z&vbWdNBa2eG69u?7y33M7H#ax4A=c1QzEV2wqow7pZU&0<)CVz4I3PmNA9kBdL`fT zE~ri}Y`Qf*>(NoI^Y`Opwaalz3dmN%6W3bjhbxTtP5Ze6y^@Q9(#7M+6SM)(W6vXG zzO2-YrS;h?4954q8|^QS3$Vu{Rjt8N|7=cTE^Ii?FmFfr-Cf#AH9gcKC8B_}a&M0y z23yRm?f1~B=x^Xi{A;@K>2bWpD6z|HW@YE3gON|MCC5I8vPei@@Jm#_j;5yjfiZlR za~)ymIBn+G?a%;O)rwImZwU0))uLQaeE{>mPBOq&iI$cQ0Un-|7<}ITw0_s|9yMNm zbF^1nJYZ!Z2_ti@-DRZzX!vq`?TM&x=xAX>@?iCQqI$B6mG-MWx`=1MDYJBHI1@9I z{K1EU;|p82Tw-}7NVbuhcylZb&ZkEN;y z8Adra;R^IsXJJw9Y z@eFJGqma{|8JKWt>|CFT@`$uAazy^e*)^Mt9Iu#FM(`6aOY!d?IqVlJJO-plZc0IL zZJsx*6Rk$$O~vTy6zL~v$*VrTEoY~sSm`H%C}XQI0;?M4_y%rOHZ@U6+^vW|J6Sbo5YZidV_YOFPeOaFQAj#&#&e zd7-eD=%U{c3D`bAY^!Ptk#khA`rt61L$i?*{`2ENKT|IbbYoTPUT3aPs(+o^LCp4f zy>^Y_3O9dMm%PXvYVak6!qXggS@hdHS*XJ*j$jw6pe`7 zzR!H^%JKxp=hw3?S2-Vq{RQ1fN{zhu{*N1ss%YJ;!!b;M9A{+-QYkJqA}qoM zmaN+{iMw3<2su>faI*Fmyb$l%jV8Ch=*sV{XCTvJC7s7PT6Msi zAifH$A;iLf0KzY582khz<=kw3c@F?R{d{u+t>oHv6Yt~N-1qTYFCWw-*^)# zLOiG@WGHY@)K|(U^`+WBeAOw0Al{*+yFVF?K+y-D8a(N1qv%9M4^!|#{%8f{hn zJpf7miyAv-FRf=IeTx zW4g0vznKfD5=JQ556JUl>$To)Qgy_U%y|!iX!xjzh$@YMYU5>^4#!+-!*8V3i-A`2 z)ZZ-;v2sN@!9wyDr_1d#MH~h2QuUnBsekZFAOm$W zsQB=Mt={MHtj`%6et-J@`s@Wb51#NFul^{;V5>2S&5s(##u*LX&>DNGx4T$;hu?>F z>R6Rwa8;?t?`ELxeO^7T+8L-~oPsbPaJhAxKEP7nB6l~g%QtYiA`rp%OtrP`c}vD5 zl2v25LS;(U%rlJm@gaxCVZG6JEI;taIOgW~^w$mh$K5hgQ^V$y!jWJa)fD#q_@)<1 zkCKl&)uCqc>%(=q{=Xb7`x^(yVrt){9oHM_jkZV0dRG2+MTCmaXUeSOE)PC9hn(;M z8BlnZc~qULYMP&cMe2>pD*FeMeqW+2B1|$m#)fl4VbdA#3a#Lyx&pywd)rE?Qpr+p z?T~}lN14yj-)>Ge)|;)D&RepgNX0`=*JCwS{IhGV$G&f$wFz{i$8J?1zxZ4ojll&m z81z7Uz9bs)ygVAj3kVYlaw`7yj;Wux_uHjdRLxOSx3WzbDWjy+MpmZU^~$Xg(tE zEzD=xTV0QZU|6%eFU?}eeNz{zY2+IDs~BpkzIH>-yWM%4DGA!_4~YUyhuOZlA54BY z7uQGVq~?Z`jAS7PcQL;2u%OM1n7wpFyCi@vjz+6Sxx$5D z^tGrJL){VoWMu6(-9^FiCu~Rt)M)778IPOQ8Rsar`x+vYq$V?3^>Wu+ScEHeuX;Xh zx#M^%^^9i4pxBu0;DxSxZj@i?*3o^r!dIk&O_x8yYwTL$a;Pqp5MeBo7<5>u!;A-U z^ovc))!K5ZXpr|N3O+&v4E^i85-Vsuo^tv`^d48|931sppw;2^Tvu`y*6Gg;y{yjd zlXO9jw3N&7jl7dcu`p;I#){Ym7_c)GZ0$Px3AX;ZttL-uh!E3!=e2ND^91XKBI=NQ zjz91o)bLLcvH(1QDQXubhUOrvn9;&0!WseR9^(odXzZ3xi|`w@p+%k%Nr*^=t%-Sf z0#gBs0D#IXl?y^12RgOXRCFstX+wvQK=5x`$#d|hZqM7O@XnHxYFuU?+sj+)L}O?W zW_ZKPbjmk9(tkr?~AGO7Kpu@w){MFUn~>CtNUXN}uezrzUJ=*cjEQMNrXTXJG_ zXktnS3lqK(4A=6^#>)Pdq=tg*4=@&*0wh;wg+w4Hgua9A|hpE`C8fpBJ`S=@MaXSX$VXtTqM6MFF= z-Pt5_jQ!aoXE^D%&#gE}rF({jaM|O_)jT^E0tM8B!E;YigFVx=GO@GU)vQ@dPszDa zqwgd4d|pceJ-6;%2-Ilm;#1H$)rwz@`(bOr*e^5|KL>8vGpCizkdLl3dBm$o8hl5fFEk%LPO(W2=m=maMC(5>ZZ^DeKLg_wMVKFpP^Y?ukX93mkK>Yl5O|B@m3FoC z5*Qjl61r`eO)&T#YPQ}{=w0p?HRk9e=jAczssXk@?fjQ@n+B~Kor+ptUJGJ62KTa3 zFF$Z`g$~xA!jd$N`Q0z33D(|q-|Tr}TkgPss)(Br!12aUq0|LVbhus4UlM;K_=7p? zY3`uvBz`hGa4p<~S8W}1(CAqm4I=1$_0B6K=dc{8{pw<BStOtgjFBsOBX&kS$J8vHY9{Gypo;+2bsCMa!<@7BKC_OPI8{ zcI$CyrKgio$tM*$CTz!`o64uc%#Fq|Ei@d>UrT(27saA6qF1P_Um|6RXzNhyl0njGu*u4 zu`JHal|h&?XZ%ixNk&s zWG0}Od7{p`k^nsPTh1fQ?1Le(#+wjXX3IG2wg!t<$W;nSFS`0g_5xYTv6aBCP!Ij_ z^+51oGD}CQd1$k7Mig#FaE@#B7#mi`)ZFTkyzqR^fV=8-dxYKLz0GNIt6=%-q>l*m z{om9kk=1JkhW4#t?LCGoZ{Io!TQ;nX<5Z|8^on%nzWI`TmNdmG#@oaTvq(QiCG{!Tt5O&)~qu#uoE<$hUEr%C;7r+U~D%J$i2?-e4Wl`sXLl{aD*`D>5 zd;?=M8Avk$EXmZ6dhhSEDUMFE#yiKKu^iddvCqmKBkpG_?OJd9nZ9KHxW>anQvhV3 z?D{*f=KcUSw1*(UrV`>4=lx>KP!sc&%fGhO7!V^x zSi3U64E(yA!d1&bTkrQe=*TdBW33WVQD`(0SRL8rp*%-QT7n2IN+1fYciVDxwTExV zI5;wcDyGrV8Cvf&hOG`&h-Uot%ooz)v{p4XB>01nT%fy0&ow#<8H@iul*wyQfT#X8 z9!34{s??hw@s84A(;4s-eTvvz9Lzq;yH8tBswa*h)zYU_HlDj>&J1OGDj)$|9O4er+n<-%$>#Eft$E34(bJWgk<+v7w7O+Ito~^Fz)AOw0|^$>C`0nt7u>VUVQ5 zHxrW}p0@m`N5FO^gEbX{-!xfj&h>pHVj0{o+6;kxBf$qK`<-aRasXVCAoXG zkPJPQ6915@qgnG##mUj{%QtVk2_V85PsNs1BYvz| z7t-bK332^rd{ZqS|J7slle>lGrOW^bL++;wno@?V&2Dxtbg)5B;k>&m~qtYT@;DM+PG(S}kmrj2A0qF6wdXKcD~n z)66J3i4qgBQYd*Hw-@^+!pLtU=f^&GPS)(By|E7U%vh9b?7NzGD^ih@aPV{u|L=-~ z2M!)PHp$5A!kxCpPAV$E;N&OKOySYY8XEyF}7V+g$3or!EV1mqHTn# z?cCgSFu&2_=386owA6nw09$eL79*x~aZ*!aieJbGy0v|(!8u>XwVoqJ9D7?75WR+j zIiHN7>L24!7GPYduuwTg0sqnHZiqm@>*|qXbbzIvsAIb&ge4^$9#)c@;%;JM5=VSz z&)&t6ua|I0Nf#7~F~jMx?*LM?BgD!WL?MO65cgdN&$8e%yunCi{G@4%xhw|x4zH?8 zYQzLwE}vICBY)MH$XkFMV9F{gKbe^>rCj*t{-!p{I9~K=8S;JElFVKCO5=uR0}ikB zdweDy<;-;a5mZjkyzJ3l(0u{gi~y%s93cSlg*v-YM|e)ebvPj~L4O#7fJTW{!r(11|6 zXd4|qAGyQ&wFNX^p-IAVIL&zQq+l9zz?t6BzB3ONxVAtW0u#)vS=AR!<2D~p2J}p7 zl>LlKVGxh(vp_~cLb^aVejUFnvlfmSJ9C7;f6(DN6@QMygr?*yYwBbqpf zf_L9S?Xl2p9NgzlL}NT&7Eip4ZTE;GSb>Q^A<9M$YX*lGAY?ugYpvzpEb^XBiHA!N zJ~Ps#pU?K5gT^$U{93t?czy40HtWynQJx(0th#fa#YrX8Xyl*d4Ao}+J9Zp}$_KZO zR>oNto;B*P_;08eGGpCL$KJfQyK_sn?j6T5zq@53teoVWB$uac+=Wke^7!&(+bn{& zL-w|(JU?m@u8YktD#5OQ>hZ^}+W8#YpT ztbeSrFnin=F~QpO&|t&=f_A@kWpYGmT8R$F3~o=+|8$ZSx$5k%b|8m3kJHOdMo^I| z<#p92hhU8fbALm}U3~ny;ltG(p1@>(oUtstR8X#nKh4#?6t=hE**U1Iw|7$VK)k{M ztm~>hJeU1W|7q!|19DMkBXEl&D;G4pHGrNoVNm@HUXK?z4TA5fdCL+*S&YL=q{FBU z)(*SA8Y$`AuHi@T%GhHeNe1gUh^V!iopQD1I4%bh@KpD{$^6Ze*5RyzY@0{p=yuOX zF*F;#g^PhI-^|F>M}3d~)^6}9AKav`9Ywe)ymdXf>E6srP5ub3jJJPvf9x(HTgeio z&wbc4o zrcUD9ZbJ}PVrC)UNpxfBNJxeVvvH=&z>TL$Ld9Zy6xW+EMC-zZiFdw!RhINA#Xr&& zU^>G-{1f--BnfzEWTAj@MTP$wRLQ1u_uD_6KO+$(mBRev?=?=W7w5Qg5gsG(7T@IG zNFqc*vKA;PPCSJb5PWER9m)CE%~xt#Cm(lv27Y61XN#YI$l>7J<=y!_XYf;~KA8V} za>h@M>ir#Qwi{42gcX(!*K)<9m1JR!8I|~FU{yYTHIqDhp38v9o;Zg*dsmLdQ))_l1o8NbFb)zrSw*p68J;S_m{pN(y!jrNyRC6bZUYElJQ0LTP9YAmfm5hcl7ON|K?JQz%` z*|$NVqvTq(TkI2rA(dbzM<4iSm9uFouTX)ybU4x1OpmWqjCtq8*@a2Qo8#qX?9{_!k@_-*MO!D2^J|vb796%_eq8 zP{T~Da?18*oL*@Htmy{6L{b$Vq<`62HCu)CSHRW)0pb<9edP?c^Yw8pl(CSE-5ZSs zGtKHed%H7v_SDxL7tz3?#>+qw&b{bc9?m;tcmO*2Vpwq{*C_2*58XA9Q5{qD>tuaH z9eNy)C%JJqP|5l-Xt+=N!o5|&zSFqK6yDIv*wvbg!dROTF}sc&TKaLURBEMTRXdBqEMTa7T1KWU`8a~-`1l72 zh++82;w+93!G<$}Su!C+Pm22vE5=pHLhs)^&p!Z``aqR~2S!rHD5vC1B|B}XaiR5x z8Cc^{!PO51ICQ)DrnbqnJg_`*NQ&Y#;!vWA&k*aruEejh)(r|M%FuVEWUsznhyAZ+ zQu=~FW`6zEU@XvUeHA4JFqYJs9FyGsM4s_T>n0Ch(zv|(9uJ(dPpvsb z{n9L7dYW4G%Ut;(!be{p7M30c_shcG`_6~qpzzuRtrY3}{Hh_q>04b>`GgQNiDtad z)9_jnda@5hoPk1f)8O{_c7nJKUo>SY$18K=zDO z%a{`mS029poiZ)IC)!HT$`;y8ch8h>(|iml_P21PQN~;V{kP?08XO}%o-1gVr5$>W643f}q8Zj-Uls`45aT_+o8TuIMpvh|$ z+|PZ_ZiFtU*ln~StS#*;p`rk}F&h@{^mnx{2qKjXL3Z0PUnd+Ei9l zO4jbkD?MVK`LJh6bEkw38fMkcJY`Q(b2uSN?ad(EA(~#vOi{hg*TRquPAqU+dPl`~ z)6Zfe8=N6lN#WBu;}_lAoS?X9U*4sx{Aje05xe|5*}qCk2HG6f*&m^$e$>1%_q ztsXO#4i76udrf+0Y;Fzp6AO^3-Ez^Y0^e=yXx4oANfJW<^>(6=n!Z@RG=LYgT+Hgj z61ZUgX4jFW>6!Ge`^8Z#CZlZc=LGTZr0zYlgsK2_i~<42ar@6sT-z112n`Nj5_*jj zvD;Mt3)6N@o&HNX!ByPDu|XsFRe(Gic202B*+KyfyWcGWYweoB?7U-P|Ki1v{3(c2&TuNv0+6n^a&n}GLaMAXz+1{h&g zbnMq_UwWmP^dia0Q z^_5X|G{LrWaEGA5-Gc-P1P`vkEw~4Fw}S==5?q7326s)+Ai?$E?(T(*uG)LohAJK?7_6~ODhu5IGGhERV~k$r4}%=3(MQYk#^u@em4wV@a-S?` z(P|n{V=&aS7%=u-X9y5^wCjuRsiDaI8mdEsi{R`i9^WYSwRkx1Y)d89Pa}SUj0pL8 z;q)nTBo^4Z~Ghrr0BW5AWo+il*{%0%}g<|RA5R3pMC77M<{N2t9LV%-7$H^TZ zCto|qweYk=}f^1Ep-8-lS;y3i05) zbq@XbOmJ8=m1JyHIKcw~s||B@NY=67-dA`K3l;HFkQ|qEb zLfRMH-=x;Y$bJ~7Z7WtNc?~K0LVed0w8IVcJ(`aDBR#muRbTo;B7-HWkm6OjIIt{S zvb5OVAhR)K^h2~AuMqO>PBo8yHeMwN3T4|2Nkqr?f3dRuK{t%68JS-1v%E$5`e5*D zAhcFGjBdeVOJz5h#^Kkn$ME0PgnE9NR00~sYH379e)IZ`PQ7}fov(G`;P)hNAk5;) zcjRepgZ8BfGzwY;mMV$+Onu7xOBOj+)1oGdh{{5(%Ps$F5FfNIQTn zhfd+W^$=H)=ZS@v0ex zC_n=~^J22rq+nS|Ep(TAfm+f3!?%CGhq)-V0fa7vB zJ@LG^o0;m*x08P{Zwo0Ve}jO~lZBmQx7InER>9cfe2z?hHM`koqhv?!`6D%9YmkuG z%wrhNSWTh+`m1NWc_b)9)``~$F6IJc&Smj0E z|9Nl%s)O@U2y(rtz#%6mm-?M_?+?eit|e$_c*JjaVEOU8Z-d1=L>jL;(BfC`GY4dP z-+Z`S78i`OGO47VVvqaYPx_?n;@cTw@6FaJqP(V* z8Z$LO)ndX~)w@2y+$5~7vDoG@0jHgrpuOhx#x^66lu}Gz|Jhy{Mzk{HK#=mo`4R7R z+3S`GKL>qOfK($+_(9XfnXsU_($3WnZYLV{UOCOD%hCWC$0XxtfxsZ*bj-+Oyj7d3 zfp5LT2Z{^vv^MVqh`R$<+#;1!9Askn3~}7ODnK8~bLU66AvU?DesT%tcDi^Jm06v2 zb6UVlkX+}oNh!d3yjJIb1H*=SZL|)>b1Eu^LJi--riW>~9U7VK)0lO&QJ;k_PGax$ z$y@b7IY;RI1!Q@t$$GC>O#(&Ys?S~#2f1{XQQL@AAB9o7zhmu zUwvBJgQh*q1=$N~=&c$=p|M&9sv9&s+*(0t)lpNo#jFk$7*#7Y-4`_jza5^b7-;=r z`BD5Al_>PfNqLS`0>?S4(dPccnlk*?>Ef4AUx&xtkdkU2yC~Ml9F>Jmlb2$t9MP)_ z!QP-x{HPe&Wj#resycP%+W%s49SQKn=&j<7DpLLl7gQepQxA(>n={qmNb3yr)wnOM z{)ZZzPGsj~`V~s+1qzStdUqr?Q0Yn0b-EZQf91O8e|w#+ESk2`5rz!R6H8;tX)qL) z*-H+@w6!is{?IusKdIpugNzZRPUD)=Rt{)4upOn&5~Cxz`?V;j0D>2&Hlag*o9*2P zCJt;SU~V_qpoQ_`zrj!d%AUqM(X_z*(=&)yT`|||lr6`}d*fUpJUsFn;Wy>xWlluC zLYmt%_BPa` z;ne&%aw*3w$tbX+n!}@FF9?B}FmqFbE?q5Jsu7n8_{+Ka_@k5_w~?ui1q8zRZrfHy z-ld$7^+E0)R{E+48)?LzRK$$1`B8ES zR`kXG&Oa`LG<>|e!yRkTp-C*@karOvwgNPY3(H+rV}se~Gcr}W&)3-xHrUvHn~ST! z(MwHhB`>u9zB5i1bz~JWmmi<(aUjp14zrrr&02F2GMvRtC0Q1QY;3Mn8lZf>I$lX? z?&?t=j^t&^HSjU_6^%^WbUfV{oP0($0oYTI!VadH%|dbXnefOdGs1ShDKe5jPfnNr z@wnvmjHF|GI_*q&_Cv!*fH(a$@&SiFonH5Zd<w64#YxU81QSgdNAL4jwUPE@^m zv4)twEEaQ~`WNji?g*>u?c4>_14M`^mhg_(Lcx;AVT8{vDVb1{sAhDLr+C?{>ZFc} zhVd$q(gUi-4%cU3Qp{oX(z{4%RzsQ@5GiVs6j6Q&%l3%5?=T=`Oq;R|8Py%GPi2+= zYAP@C7UB|Pfh6DbFFl9MySMX>m!r^V;``sd>{@>eC)tep5z~i>9H^h_d$4eeSD-Nh zom=@m`8>E&ylRODv>cP#G+Z*NF79Ap#l>i|%_Z__mLWhtnKaaT@R}B*ckliX&fKXs z{IzjfH^tf}>5lRXQLyS$K$93^nx)rAu%fpiWG3g<&Nk(C!Gi5^p{(>>7W7~F-JZQd z)R})~j4T(&U#4a5+||TXslrl?&^9M~{nP~Yo zPvfbU$Nr9=#Ew|;@WR%ka1X7jN4^>2Eg9iiyS`0!WvF>Pi^?{-`5fq`cE#>-xZJo` zRYtn!P}#!6UQT>b_2@mCnx21i4~Z*!Xa%m1C2|y3c`TYLZpNzGabYzWMF$$Ux}Rj@ zO7Kj=f5Oz5kjG;~(XBFQy@vK(+ON8P*4+uu5>n#L2#C~LsCnJZOycYAXK5dc zHfW$9L+GoO!E`)GK^wG#4bAwU_^lYgoNr@dT3c)tGs0#$H*?-Xre1r{Je5F+UUPYf zh;(*h(V5fF@EyeJ9dbok9ii`rpk;8Db~P20)@DC>%$dJl#=aC(}W{yDg>&PA=!F$DbQ(z4yKzoCzuZ zmyJ_7Ec-6uw156D$N;UJOJVin!;T;}ew9JJ??(A|Z}N;)ej)ex#FL5gspk;5Y(n%s z3Q*s6tk&>+A-eirv5eE_Ea;pL@_R*U*nv}1o(TmhpQUC=B8;QiX>MYtabCX!x2)_R zCf`SuN{JRkG0tj)kD7sK40u$fil3U~Kmlkbuw=A26Mc^obx?b4@rrSNx!=a~$*3YV zQ2Oow(J(O`*@c&TocdR{qa>^hl826vTng7WSZXBc^sRK=gRKDR#->bDyDI&4@5uJ< zGbXl;C}*hc_Yuh-C^Hkrdu^)lKKDk==&sa9x7->TcxGp*$FcZr#2Kp zFyzkBa5I1v^E#7Ro3gq{(8O zA-0ce0v9OC1(N%4rRHk0*T?!z8&Hns=P#I1iWc%H)JXv1x?zN?aUcs- zrjYfw`0B?nWK2M{o$owZgPiGB)AfRH!e9WF5QZzYKr^YAL0ZuNh`jdXGu;p}`^T_g zpkm&uAs_ym2-IWHCex_Ga$}6nL_z-Tp;7%~^NVYJCq;<&)s-c*!SxZ!a;i~?H-Cz- z$0OkJ^Hfywa!cH;4SL^V$L?nyUoQu)hs;WO3-G89}DyOQtF}fKO54d#sBJPeg~c#t z9RHKy()*{ulll_2%eVc_x1q1{0*DTl3bXys;-%$lMY5@f zp5#~)bhEW{l?tF*I;(C53Ru@EaJ zlKaavM`NQ!5yI3Ysd-eEG348k?W*V;GRSE1tF!m#y&W&cUB=*N2-oe>aewYIzE4C) z!+GoX=l<5RE@yh10pNTy`DfF|I8wTuuCQ@|EfiSWtsOesHrgEXKL3eR87!?r|Ldn6d!!6*n~ulQWXzBNP#!vOqt%s1kH3gI5x~HAGX5bOUO=2n2R1=a#qE0}Aj`Inx5z-PBAiI;X&Da& z^vy%B?z85q8SW_Y`ukp64<4WjeiFiDAJNLpH0<0UK@E1M6zsKt`{>#pCofbzYtR@o zb7pi$-pIGEe{~VK0=L4C6Z-$0OVslbnCP!Lgop(6cL$RwU<{3RXKN5A=swK#yJ|es{=l%Q=GB9c=B#1C zuA8UBNb&9kmj?;@1xdzkS^3hmx3V8vQfbPS?^qQa9 za?TTmkIvd9H9WdC{3CU9 zK-r^}U* fE1xlXL;fpL^VJ_;p#?zVRH3c6JDIWA6-6UiYkGZoxMZ|h9$PtUuI#1 zgL@0>tLg%d?z>Z^Xwjn3h^v=QbWqYzm4Ly@%ca~Ak>Azup0=BfV3)#P#W5DERgc%I z84$tt=hWteQH;mF2D4od<=>|zdOmwS08mKyGdF&gmch_k`0o%d{ zy7i2aOJ^E)T=)JyULS$a=Tb$_t-bVKge(5T?w={7i>S{dDAyhhjfzHe2^$P2OtTkAU& znUIK~h7K|)`W@aY&w+ofhy|2^_o`5a-P~4&x z0s7X|%5tSeDJQoMGw1K_H4>a4AQUHh_D8#SNsX^=PoTkl=ga7tM<~?iL=7$%@Vz^R z9?s6oN5$O2Gc=xg{-_+uKn8LH%8~LyWnoW>qZWxx3{rfM4^mNE#vz1DL;V}7Wzf!8 zxre&`+wKX-`D%^ACkIKr+-t&z4LkS|vmxNE{r}@iIj<0~^83zfO z=0gFe{)BYyU5IY7rm==C{xg3Mv)Sn4n)QR+(^V_8U$Mw;F_Ac40WU}Gz`zdam_hUy z$t+EzO6?bFv(esyG-Ks{b+H(`Cf3D)NN&tb8p=d{sz4mQ?Jdw9<`oGdd9_O`6!2f{RucgI&mx3 zm5MH0VxbY$%LVDQ*OOWqt~@X_`1Fh`^j zB1TS2j$g{J>i`F!wtmd#V)MOZO~qP$ndy=994Yr388;OdQ_U;RzbwHv)M4%>Iu8JM zdgFA1$GKsSDbQ2@3y7zeuiD^g*48m&rF){KBynn4p6ep(`ZpnU4*~umB}|%Hqr81b zXaK`_H?krCqhl5)F~jYT1c&>wkTcYZX))ly`&?Vs==eyw|U68e52;;el(h8AtiY$KsaH<$e$(vh%E;Z6?vT1d+hSDQb22Kr{{W> zLuNQfBOl2SQ2<;wB^@Q71EN>rHLJ7Leg{7twVm+RvQiZTecq#jZ+suE?)^7vrQ0PF z$0@~?!Wgyl2IK%OAZMQYWGjyHt*^VTMbFNiKd1RrOu{?TmivC<q84h9vrA!j_xmvOZ-i`GZgm+EZ|3&F%CG>x| z2p*f5*6uJ_rA5Fw{ts)g7mQZx+#jx+<7b$5cH;Zc&nDo`<7UjzbUt3aH0L9xc>lX( z4bmL28O6bHX4D|r-Zn5d7LZWvGi31t(nK(w)A7MoL1b8Kww?%PPq0cSNhRg3M5%D4e!ExdoK z{YtB!uQ5sJ!jvMYSbiSmc3s1n_be45b~=cTH`>|I_1%Z_8O z+g+u*{=TtYT>LcnPdpP^h&kX{5aN@I_C$6Q*Q>|MjXwNf#!AmC&mf zk`t%W*XN9Z412+o6W9j)dpijx-(|7a#J1M;v{4c_cF4OszMI{qR~1!l;s#Y_Li_{Q z#o{`>`KNn4@K@m=))6C*(0f9F^F1s==uSft1HKeD`#&be&Arom9BX%UG!&^HUAO(> zabmvTbFFR^Agv~rz@D^eGj*U0r$LI+>&d3uZMUe`PIi^;s298hv-^+#?548&f z^$N=Ny?(YHXjt3r`emZ}Hy712?9bpKBvI=lD!!Ek;hs4_o$wC5H;g~0LiNoB+lxe> zvKkeP0UlI&(w-Xdy5V8L&|S^Ⓢ%_FiGBR1M}a{74GtcqxZHoXS{9;!Dn4B(3|D0 zY2<4X_kzIMQ6AFtbV-!7@QbH7O0SXne$&l6$JLG6@OJ&YXTPl9lJu=ij)87R4R4x- z7Vmo*;D6+mx44Y+IXVobopyfUGxmzuq@0sATLDU|s?~rU9_5uSKmZI!1>yt>pl99Z z>SZ7mfS~&xHjzN<0Js?-G+aipGgvE)69B*o9sfUN+Y8fN>S3>l}hk+Y?47zRbMR9+QsU zm8vl6ZTFT0e$2(KHrh5j(LDOb^^0%g;!kiYoYG5)zNf6YlM3@k^i;7wFb^+fZ!7$c z=J21k(Q2FbbTg$N|JKgK$z$9R&sQeyAYvJJH~G3sCc-dTjRZQm9~Q>PLY19ETtjv8 zMP_l#Qi$V=j@(wq_b@qO;x~jzb{^yEC%0Se9E*J67rD$RKL&>AuuyPR`ySLRzndJ3 zNcl@MC^0wD$w5WM1wjB9b-k>n0UDN3OeAJ|_>SQ=#qwQV3h$vP4KJq2=SeT4*~Ik zgq~B(id044>EYlf_YT@di}{-F4!&=Ea~17t!*2-DoMT|)O{^Ly>?)LZ2WI9_I(ZnGufoVI(H9eROi#VZ-0lq`q~P>aoIN)?n{ zmj7v+%D=7=ocrU~KQGN)%qt6F3!fV+5uN}==v4bI``k=;7YtK<;M|fQo7cK3dgy?6 zb7dzgIW|l|HR)>^+iRb~w@q`dD!#dVnDSd9XP6)Y0NuZDcX_p4ehfFH7`_N20V;nM zuiED1t{N}Am#rVC88|*(vMg|mtf_=daNj@-&!|Fn&~DRrPm1fkSNt@leV+X6{g*5R zmNo7aev3}~b-LXqTI=uLc+8Bs1Hk&5V;Byg{9(!;;-=)=v;6=7n^qE}h0gE`+HE!U z^ZJ_2c)w<5WURZIM2u{699tZq42L6KNe8J<4ZeyZns<%okEh0rlnMPXbv$m(&m7=C zmXtn=JHqS~&;8rV0T1V|eThD|l)eS46BnWy?ofXeY7fR?(WFklImTAf=0;m#pOqNL z(sI*`+#^OZDk5Sbm0wB*c?H$*+@OhbBq!^k7}=629|)AD+!5eX%QZ6} zGfOzJh%zU-p;4IVSCQ(4`DN2IA}p}|9d2uq(&^GFt^dFqbhiD7F4jIGuO|;5$th;; zvV|HFo3u^DG;B4XP%I)>D*9#H8~}a}#}FY{voeR!k)Q*89lF!0Xx91fni-vB({f0b zkgCVEipJ~wLMC%e8!FxzDaoOM0FnO5Qyy7L-8LB-gnLDG$~`>w$`L0xT(I7`_umE3 z6hc^o=%1T)n0HVA{u#69)MeFU?FC*s=I7IF>a<}8bJ>X)^?exEOFT~hWWeL`*h|H$ zEXIj|^YgbnlOKj0Z>0@FUP6_g^l=u&22`e!OdQatC|Bj_Fde7|SM_{tF}c^cTDtAB z%jH#Jy*Vlo5_z`V)hQ~c60u?WNrWJ&(5@PmR2(2T8-Jna#zNm54Oh9)B&iF2C3k8E z7qp)9b%0Anq^=atW-TsPPP{!Xoty54K^};}q>4*ye|HFvTc)Inrou8b8+F+ri2|t1 zB6hJV-NGkQq(qYE%JvjRJ%%gN131sV{b{t@du%DM6|7uky!Q?~W7sX%rF58i=Lod+ zr96^Iz!2Y9v*On(onn?5IRKDWeOp1ykv1h&UWgO_DG60zvHX_4q=O3m!^FSzxN#eB z;r4cWj`uBeKIb~cex>^XyJFRwy0G|NMf*H^8N|@-AXi&D)`y9TbLz-`DFq3PMb~0d zi6*i*ImJ^|QS3h5(3Rm)Km2-_!HghwyzAGPn<~dc7OIR=gF{GznK;Bgz%7|5GVjE4 zQ{@{bNnc1D#0API^?kuOWQ0TckeE0ZdRqvHdxcE~VWpJO{q|wE$s~spqrS}TCx6qp zniP6V{Vni|tf#z2FZaU+5#tS`Wcg8xv8YP~{dN9h$t1!7>puX;HVypvL%y?%?seNQ zE>~OjH)ff3~n6=K&ad-R)~g1?#=sO!1}bG($e=}3?FEh6!D@Uix984Y!ojYUAf+sC3!Y(ZQ@TwNoEa8 z|Ci~ea;=jZ`A9VWL2Xw&xJs>WW4r5Q3kOONM!Jl6uRcB}2l@b7=?%t5GV*TZU@s=bKz9h7@OBygD$(02_WOd&OTG>kj1J<&1h&69js9Nvzv-gRi=N!+xqP-i8{0W`Q>5W z&iC&mp)+VjXkNH%ljA2kvn*VZJ?hhvIl6^FrHOlWz_zw1F6N*+4qj>XOOU`pB0uUc zlz*yPr%5Ef8&)`Z0l{xrR&$4f2D|3)QgA>{=o{9Y)I&J=Q8=U^szLww&__@UN_Hue z>R{l=jn(1Y9Rg0ExCY4I!otq%pN_jvclAO^BvjQu*lxa#G1cyoyYfo!PN?Om>s8Nr zPgsw_-|Hon_Ne_5G}S-mD*BC9EQO9GWERUqaG{cl z@`X1wsSWewgGw^3DlK4+&TmJhs#0a#9I}cmPrC= z3|Rl+n24CC1Oz1@F4Ti+6MbMr z@{;HIkBKRUB>ssj8v9iD zhh~~JcvZAPqJB5qU}}Q|`G-ZTz}-ZZpjKPD`IUl_wYO?%avB*JEPgX}?EZvpUwwHH z#YV$oV(g;$_AM34P+wxB{SxGGZgr`U!2b0@#pI1nUqK>Lqin=Ap&g{fS2sP5A8x6^ zZk16bIlWZL+fcp1Vl>Fz;wMQtLioU~B|#lmyTup4rIN=RyBdj2`BMl|kA~biQ+eXWV<36N96J)*$jcZ>y?8vR zL#W#O`I&608)}tz3-uT@WjtSKsA6lf6P%-j4ET(=#E2R&#R$&J!rxOSP0*E*gA;L3 z@8vC_7!9qGnF_F|`nE7{4gHb{P7AF0*DIu#Q;LK&+tL!|Hv;i(>X{NwM>$w7dE%NC z5X6AJp6!;O1xAS=9!!43O-QF3#GkdPny5*(qO|mO_?NY(fy;2`#b*E*Hf3GB8E=jz zBCxGfb+27f!V?g3JFvKuViD_U_ubhN<#_6X3zm3!S+V%$Coeu2ZAiLQ75!T*{7^#g zC)B|+aDv+QhfK4=Eb?9Dq=bzAjJxqL#Bo%%RHO67_;fTAtMh~PUj#ugodjg=70Umb z2$w^G|JFoeyAWSnwAKR2HOW3?8 za=5}sd-=upJfosS74a$h9S2<@OK@|*iHG6qHRdZ)u9?NG{C91o7eYLIs^CfIx@WMW z0b`XY#Va4r!ovpIT@0@80*~Xr;TslzZM81#Vb|h^BrG&Ah$p*zjrnpzw{-9iydLn^rg`oaD)Nf`?agwfPDc63VyX43C32#zVhOma!IG_Nx|+ z^z|o?PCeKJo<73ae@Ig%nX5|ZX_%lrD! ztUbPVKM)Jq@(mq@^qpC~oV$4cE{x>sNLzO#un^3z0#>m4q6C+dj#(D%a5KdvY=_=Mb6&yHL-M$}uPxL*#_m#!L>ckmXI zz;P%J7(wnKVnh>YjDZ)0n?qWLIR07F zi$+CJ_^9fpxy|I(FWp@~u%)$J%S?;rtDBmx6^2sCF?X8v1v4Rc+Dt%{xUEO`o*GUz z>frF?UGDbSujt-Vdnh3TmisnW?9FcSN(qVpvp}c8e2ynuCHv?OPJ`o(Oi^!tb?5!h z-5$f4Ved$TcP!K32qmEUJv4p?;gQJs{Y}t&DIla#H0bGHlA^bz>{r1D=u|F z$>|6%{{sacz|{yGst668S+l7^Uny9SOVnb^2YNAGexJ1{I^%5eKT07|yx@ezuj3s* zx7cIP^MOzz`A=`9*H8diOvt_SqO^Eid&MUlzITeaP9#ch7)sX@eJ!23%`#i+H6tU7 zYWf`<9G)+|@amQ|0sW%42~dfjXVYEDyJO>QrY2RUm4xdUEkHcp(|4broW>X z=eb^C;9&qLo&EgD$$^Vow0+W6eFW>|d7ypG$_1ba`oa3Ed}?G>^N~pujtZl;8KXe} z5yqcVA${{9P$ta)aX<_uo=zUcDN$YZhk**Us*&?ksRl4W)WqqAS-m!C)|~RMNJyi2A}wn!@_@FNqSxgy zk-Wl6bEv$oHxyC5{J!HFEe72@xSwxMz_rxcGc?QPW4{3(# z>R59)?R3_aA9^dXUiW7{$GxRT7t!x%t)&xXSXg5}5;5585LrgisZ`OMuEZAjC#w{$ zqp4~Z*=qO9dsd_)R)a1;GYZq=2SO+*gg?5=1Ow4wZ)du1;xmanQ4y-Dwd7!_2juai zZ&20g$s>(r_t%8fs2sw_Z}A#VR%2O$_A|%H6=I0;hr1KbNa85PPod@|Gp3EwGNJNe zi^LR|Oo-y(%lt-B;mgs(2hIEdLMt6-^u6joJo}8sb+c7p5@)3| zm=$YvxXvbu)~t~HoML658QPSUwdT$`dvJOv)}%lZPixIIdW6Enp9wYeKF_t_iG6iR zwSAT+tkM5Szh>Z@xz}^}B$6c*@Mk=v&gV-jGk-`+tae!Dw-3;ZB`B9PDzJgLY?R66 zy|6NS^y%X=V^=i8s{~B-Y|nOi1%ZUe__`%-`{Tr!j*#;-&7vi?YVXmlma{3QY=`yz z0ZPHn~7~z|P#sI5pUfOUC`cNb;JOtoPE&?W{pR=ikDcN*TkkN7w zWq8TE#l}F1MoZbqmwr>E2D^Wd&$i!|$lt>n95_iKF4B#E0>D`d_UGz!ZS7$oWB@+v zqTmTz9u?g^jVvuU(!j7o#Bw24I54SQnCfQ#?Z0}>3PUL2$oOY-Tq?`R4PUL$q~^jD zbzZ!W7hdukSbWzP`YK0aupBn}J3eACS;~}${wUVX9>P33rd8iYkpKdGo^q#?~lrKmFd_sb_Wa5Uq(@iEOj0+F3A{wg+*gm?Ri+?NF_RssUfHEoxj>_ zVsy1x1+!`$?o^x8kkX_JZumLfIIjx~Bbzsx5L!SK1skybN$b252h_HaPLfUXYE>zT zHA-}<=X&H=XoLU5itK|bnXF8Lvz>+1UU1ze3Cj&~L22sY1t5j;Do! z0a<_xfbDA-JwmomH3r$>?D1_gIF&D74$I1;zQ>i|mq5t%1QHMuG(1!ILB<$wpIDk*EJp;+C+R$fLT~*bu=H_QV zXs6rU-Y7x35zYr!T91f00*|o>MXt6SvfOt?d$LHgm96R^m|UW}%{%r8YTo z^Z%uOA71i@%I;@QSPs_Mp6^lD)6chj4x>>7QXfB71VA5x-q03zzkIM)kw)l2qTQY`gY4~g{dE>ni;K2I?0&|-Bg$$zkxIBJf2(V18fwrXgo}mLY4&9E zoqbdG4Y=)RMV6P3*woOJs#s__EV(!fEwu(CrRXSKV%pbz&mGln6^^PkUOcU~kq#Awp+RsyP?BrcI_{+-nvRl>M<@2ypT3Be3YIq2W z2i^hrVEC_2+jJe_&FXRqFqX?j^;}J1kpwL_AxFf-XC%YN<%zYGmS6lW%kj;R9u#D! zj3Dp^JEZ>L(7zO;D1FqGrHZ-C zz#gHZ6h)%`J(`$@)*P%xDPlKO80ooc0eAs45)zI9$G@h6gZqx{3@Hr_}+UcL{MH{-sOK(^-0^%dkY>r4R8R*udkElc+ps$K}HgA z@p|Cmle1s0l9;`TiF@C?>96VT(v2n*0As|vulKAltCx?CBI^fyOfFnHl2!-C7y4RV z=l|wl1FJBA6Q2z}^>*KvnD1cun;2V>#RNT=NXoS;{Npggy&tTPE2`4jLlVYr-3gLO z2F`6i=ELFfV)t{c+rGi71X=YK$9HyCAZd$s@B}O zTw-p(`5?M6CWfEgrFm`=Z-l6BinUoPE_IT8luJGhq|Jr^XDaaeYiSKG2~hXva%QHi zQBFHP_3k(nRXn2MboI_*sljrkWv}ajftR;2w{Sao*`b1k*?PKSzS*&hnHeqFLOcS2 z^CsIf!0T@HGdwcd_*&N;q&y)(!Lj2a_{&_l%6hWiofSKue*dG}0WGO98Lak(oKwx< z;X~cj8Bdp9U+{r;dz;88i7C$u3$t%h$ON_}@i*9N+eH(COiVCsDad+E8|N(J$;A*k znKUc4NT~xF36uelF|rC^_aU>gy!sK-Hn#d3#Y*e+!CB5iag2w?8L^H=-P0c&`I+-Bu97sbnLeg$j7VNvmawQ4#Gfh#HDbI#wG zPadX9nqB~p>KH+dXoJfpYl+BgGkQSfBP04Ckd43OhYkg}((1AY=f~^KEV5~y`n%(F zLI1}b+xd*PfD27+-R$ukk(VU349|08=g;GM6C$Jho{vv)Pu;Ht32rTutI5e431qNx z$r&Z^wx{h+wBYR-B_**g2xoV1zRalm&zk=p;?P2uFf$t)iwFcBhnRS=OF3sH1esoL zsn$-{$=rPH2Q4ueW3thxn-UWEI(fQE-RWZ>wq^+zzHxE5a!N^+ZM-gxLWTeR&|mL0 zP0wbeoJMoEdPWkOl6*$gYL|5|^Dj?*4=NP6lVQNxX{?UV&2a@j9eXjmX#d`hau=Co#gmcXL&OMB>}5~(m90F3`xf49-cPeiL1it7wfx}-r{ zXja`g`!gxjCd?q0^-Ef&2o+p*M7-QYzS5c~pU_^;;yUpYhW;M+zRQyc!x7Y~VMv~p^9-9yH31yu0%*Fh>CO*+ON$IFZ3``8{yS7zL2Tv(EIZ1so z)ug3>kfGndJ3^3Ai(p=wmw*6Pzhy5^UZ4;D8a*%LM-5MfPhb*?z*3dUoxG_F4oGJsRs*Dagkf6u>C)rr$?Pk|>|WYrxu&zB;dpPzFK1^NG<4&W%bloINSo^( ztu{6eT|c%H+we=B!0489(^=7sxz zmGS(gf365_*&WMlw&mN3;adqeK~w?A07NONGvUjjy0dOa9qD2do~4o9@97zHUPq+4 zQiHKU)YRyff0?el4v}I3oAPqQ)}53!%W(}*pQ-6(eH|bM+j}p$xL+j1v$Sl*WMxl- z;EmsMf#ICK?tKRJe2jBktjjN?vwDRtRgC#`LV`C<6R*%uj_k_cpG--Imm)*c?tWLR z8E9^ti=INdT_7>_grC_e%k!pw+!m~dn|LWtaS{HtdP{=!GZ)VT&E(Bn;0-l(>ZYBXwhZO{1NP%>fUW?P};|);jyxgSO z{XBJ)pl}Qf9~>Zi9xpUGWDhJXC9`@~8!0pId~ZCPSHAPvQ%qN@J~ABN^LyA?4M9pK zATaofiCiopyJRo%6r1QG3cXBx)BXHjl-AYCH?(fg9xg+lPUJ+=xE!#^(V@y|*`N zS(&o`jiyU9p`}09Qug=}rQamNIl1s*51_W(s9-z)S@7R4%t_Dtb6<$}-soOVcbQ)E z`N9G$LfPNmMur56R!JaJ_DrJUHC5|BJiE`+H`(b5zFKc9@p*%MFi3Am6$k@!k>qSW;6Jx71!8BJ2QxK5pKD1 ziPQHc>)(|yQc=>EJ{mlB5-#W*#fh%~O6{W`4=;+1$LdX0HMg>pDw+f>b7zj@A~ptQ zW&@0FR_L#Yuzs28=&)8Y(N(24svzHIW;)g878w!2Z)sViH9uraN4O~0F2zJ$!0_2_ zx_<9x4CyF3dcT>Op8Fv_9=UQfjUA5fINMt#m3?#OwwTt5C z_-F@PjEp68jPswX&4F(v0qFpiX!oa7{XT#WfbS`#T#k&0rQmkn+@LNlt>vTy z;Hg3z&SImD(Tj-!+?zE=q+%QzWhU|{aK(_)O(>#qsv|CpJ$gvNDO zr=l8vxSf%HVaV?d#6GKny2POH!;>@4QDKaAvkJdfzeIDp!J0|D>;32Ye>=$7{VcdL zG^;oz_jNy88hqZFJt8$^e@;rpf>HkPUR+U4NW#5mEQPuerzH`^F|M+!5OMs-4qK;jyr#w66cH7y!W&Z z{(b20Q3hamkU%3P^}E)J7r~Vk=3kA!-9d^q!+#fURx8W83F0z&>&!?tsE}{ZR#~Zd z*b`oh9`=H*Gj`3gxNAe{*Z5UpFq)XjlwUra`OlvZ8BQHwDIVczRwQ7rcjIffWefO0Vvo#Fq*C%SHj1(Q@rRUsHz;R~Do9M7g7vtJ^nEnKBm|cMpi`McfM^3nlK_ zUpl=9pY?ccO=9MLxXKeuUJ{O{dz^?&b=vN=OOQpCTu+Q0Q9RNyUhUc%MY;w@w*DvG zv{+%KMvV4<*!s$VID25-g;Lz1xVx0%E{m4p#fvObthl?oyE_z$TXDA{#ogU~DJ+Z2 z-S3=#_ujv}>|~P6JeeeudE9)vdS6NhFg~Fh4uXR-&#G+=i05j1LIFqsN#;}(I5=^- z%Ked_;nvab+yeK5rk-(~K@USL;;7hNMYcvtjnYbp&%rTzQ@EcY5CvDBPf+RcBM zP-gFhC-)N<4j@@(8hrY)VD$QxPK# zp{?C@-8vcQAJp!JEon;Z#I1cqklvDY|M~$$gZ_>wGhwl6?)04opDVS-^H*3+BB9Dc zW=-=?`uR_K7pI3|T4t!;K0o`vnJmqJ2vasmO7=pi*oMMq7@?siGjVp(#{eJ)re>x{ zd>w2;%Z7IWeG-n)(`lNkDIn>YH9m>s%@-AU4&PpcGHIuf&rug<43I?)i^HR|P-v&X zI<;q4FI-R(gNw3$V6qR4+Qc&S%A0S4(I&dOrSiKhv6>;)60<#WBMVkuDHpUp zKc149Z?ICCKQ4~E?Pd8IXixa|c)hQ}uhhDeOb|FbBR4GJR^|lw5U%Y(gAfn^0GOwx zdTRi~6%x-r+Xx`(IYa7>M7d9xC%k0~!Pk4da*@zn)^eH#!& zyq(Y0{T8sHpym7TinR7g=0@I@v)Ho%ZX~igm#cYVO2vbO{!tbe#sfz$&<44neN<}1 z_lG>?>#6+1^M5v-Xg}Bqp}OHQugU)bloY@C<`ryIa`W#q140w!{b8|n52f(+2_L6~ zPIlhg?w$mg!j`fP^`~)L1r+dStO?lFKaxy6FB!9Xfksv5_L{0b}85wuYD%jdo zJZteAc4t1&U^fQ-D4F$|OQ??>PRqjcjb*uI&^BlRm5)?|@VWjLxoClu zi5>KWhhHkq(;q5(WRrDa?6z%U^%I}1#v^L}Xg8DoT(wcVprZyYXF*>N+CB|f-Oc$@ z31+#IzuG6%vW_n0d&y|7R zCOfL>831w9(lOY&5dvU&dT1-Sy?l(S_;cVy)-B^;RPc?wZ}E{&xKvsDg&~UmOB4JN zRX|0vk-|&nVUxGoy!ZmVWB?t@osEb0ig`7xghj1U}02qMVOVDSKns;jbP5_j+b~nCp`oiT z_g63v&hOwZ)+qWJqS%wy@84rZNtC`<{itA=$ykoEA^NLYGFx8D^TmbvL;u8a08#wprIKos)k z*Rq>`Ga!Fn-#TNZi+)DGr*M`jV%Xc5EKikLx`^7p21yTSNN+dwfxrt?M&j_A_s4X8 z3tQ-MDZu08TmznyleOCJo5h~+ATf8tMFlNf4OBqyzuqjfY=ei1JHLY!4=+dKsF(*c zSg8UOj7_Yv`Y2cKj7UnQ?9brQ@vY~ouriS2BfF$`RMyasAed$ zb`qyt7J_2}El#o85`~sfjoYZdzq=Aw>LQf=2FBPNi=o8+dRRf(uz>eS@Qa=}xmXT6 zJcb`<`*G)Bc){o2xi3&fH_3m~UVEV>V7g{wozJs>_5rKJ2Zf83@L?p z{ijLip0~_Ox}{t5@x{gFqszxlv&Ez_M0`DblO!ILUF-o>VI2hmj@wuXy`_YG^ z!NcbtUqUPYX3!}GQ2}g1Ny0lY+1YcSF4HO6Q4o+ZTwvLl0}bvVN3FAQN=hv|*3-Xq zmbeJNc~xK+twCGf(lR@YDqT0zZ2cjoLNDtZK#^+4$Ek2Fc?7OQZG==++<}%4vW2p9 ze*Ep%C4wq%Pwp9Z<>cD@P(s=YIvTcgxmh~o@BH6TeY0BKrAOHEMKre$dPoe)17iN? z%ao^=E=w)LtAn)QQ9(kQDI=`yE6+_A9AcA*g8%)WT{Q9f=hcE4=O8NNBnAm=1eg&Z z2f_M|AOVvdL!CX#rrxNGwUcgtHWwn*ow`?>kvXs+jt2BIi*kr(Az!L=(?fI={8RR?dp$gO` zltVGSy}a8x?qmU+=1lHdzD`9v%9FglNCuHY@W(l52cK-478y1|;D^4=7hy$Y3<@b+ zJiUt}GWnrbyQn+9Cn{Fqc>W;8@SpJ5zQV#TlijH1yVWZ5!G02VGXAhmk^PQF7D$wc z`uT%|cnoK)(`!S;Yo>;>Br#p-6AsB<=EH^CYm=GJ8GAAYCm9js@B41`cN{Wb~MR z1yTK}d7j*aY;HuDkl#w@Vb~&cS-Vb+;y=GRu3G;+>kra@yKB7~3k=1pN5>0*TWlV@ ze5txxf@~bCh7yK^s9VXngYpptZKVAs7R&dk3QZu-6d7zNyY916erZaq>3jDqqRw@V0;tmTx-zqJAkmC z*3Wu6pUgZ|*u<0loede1K82c#xEkFY{R*tpz=Tl}zNc~LK(AHcTahmW06-2)%}344 zv6x(atWtUM>|2LoL%l|=&1`KV^ns9|fYKgAhtP_#j54hj9nx8@>Tk=HSm>mgWa_8^ zoG$0(N^x74otBh%M+H7y~5likQw*2{HP>C3-t zudO=OvWEFj8__YG2g`4|i#LHqhQQ8$+V4wx*;I|q{tEMy89rE^HLgygw9UYW0loWmf@!*WDa`L>aJIxJ8_6YI?bdE{FgrFsPkQ?GlHud) zyLNCUz+j{xC~&A?PAd-HXj>j30Q3Ee6ZflT#z=}h^L|cKv-_)`%$Ocq^X_}6@(1L`F*m>3;_8wzOX~gYQkYcldjfd(@ zTE#zcEa$)xjpufiY+qs>3*wRZ-Hf^%O*xTY_F#9>MZ?Nu=HAnc)SLHqq$$3}C5KGY zsgTph#mF-u>jc^Nd^+DUNxKVGZtfH6+-?|5rk5A5^38eMKSJt#)S1j|eK)keWspDY zA+z&CnP?oAm+_x2Mw{cm+x21}%PSn4DE#EtMr;5O2e&OuwA9A1wdmA@leRl5=b1Z$ z%>V!r3yh23TkQ7UJsZ$teW4nzac91^@yMs>my1Tf{57zcD6&ZX1;f zl2Y&b|77-MPWGmbN&tp<7+=B%W7$h@^ki>^IH}Y|<|zr547n-2$kiR{hls@WWQWl< zx7ou#U|iR=H%|%^@ICug-?e@*PdyZCD0u)kjc_CFzy0h*=g{B8?y!{GgX)XS0r5Zd zB23LLCoOtd$Do@Il@=Shan&~T-+jX2Y zeCrv_Asl!+ae0BWg;Xt=86 zmPuzbY%6r2xdqsOP7)qww$oxlJtzGy?*N0}2CNS`73FW7uwzaNFs{+G3!|A5-t#(q zp!%MD;6pI{tgk;ywiUqyhYpvm&!)`)ROqne7>Kh=(SzJ{-6$PX5jHA-mL4rgjw>4B zzmA@9B4w@059`{GtcLKo7!VW0RnDT4rQby!>mVj03;lh#sKHj0dwL-eE(Z{CXWnq; zDV8p^a(wRfyRrE%jOhi>n)YJb4uv0vekKe_YOYdfYl@s#IMaP=tC-;$w|L63#T4r8 zCsAMiP!d>~QW?N$ZnuKG6yTa&5(%o8XHul9th9YGvu*iDFuhQ?*=JYIb0j=@#nb)* zw2Q>(QzL@qx~@CwDahVwCzJ39jmk{BEx*gNc9I=!Zq!h$105!yP9ku?Ez=}&Q!KVu zVFChTWO>a6m#H}qsgNjUJ(f6dX*^u05vTx2HmLzMJ|;3R!W%)~##CtnCO#qC`kUAM z*NcG9EOpqfeIK=d!3pd=z!mYFlkXmos=GQ{;kjy>2XJF1sP#5`$?uJiWv-vi+aYiO z1p09_J?{>)L69_T@jZPc{459jYqrY)5U}H{2N_VPVdi*CYt{#_%fuZJvkU`%P4@BEXJlDdr>DW#2&B1$Qv_P;aI2_nt?d^4lCLOnrp1l`|6m`c_XjTq%-w zfY2WbiYzxL>tjST?J?T-tt0!Z8DsAO0h2o3G%s6C)szFjmYr`|6AwHaX`~j4sirCk zJ)x4d2Iq4P7!=bo(&uY6EJnssXM2OEbYV)>=_>3ur!oejTliui>89K}De8T*5M`|0 z{ncgbi8$H4H3ls&7i#r#;iE9#7tP$SKdsZ4P1aqt1zCEb-;+O_Zhz6t z)*wLwa0uAMb>#A)0toK`z+`#1)=oMje6Rl$*qsX^i6`kFyKVRu0gL94KIL#@IWyYZ zJi!Vc#p8}vawc=v4rSVkwl(`|F;b*mMpNC4T%}raG?ZK<^F$x7hl8yv&uaCToBKci zmbLg4KlV%%68sg&7sP zYva%jR1s3=bFE7J$mH?mPg}O|;gFe`TY>z)*Oii;c5dsvCMro13$4e&Rgc&)9>lm^ zDYSR*XML@u)=K$21c`#08r}7U?IE^j$w}PJhK!-J&aidMF)^NH%$o}2Z|J&~YD>OS zl2*hmTY)%c+oY+fx@bSzDak^Bys4ksZtgk!fxEg7jxDu5ZD`@)#hE?wbhMd`d2d7O z%m@&tQ4?IF7Pr$@;eKe5&$n?UH}S?LB9pa>4J+8#-@2JdmP-v!#Zc@7k`Ab0&d22h zSJ;u~87X{7XTq_m$<@pgavF(W?rX$O&a_%UBDB0B#nv?qRidCV zkroYNA@J1n|LpmGV9y-vCI!Byz238*XVj+CN9)Dct*v`2>+F@wG*2ju1t1s6JH3+r z6H~`Cw5|-8aC?nqR9(LjDjZJ2@6DAybza)>nWW>Z zr%O^Do^}SlrU|>|-pjj?FD15X1eN!(nG>LGCO*HrPyS@UUprIsT%klhM+LF zYeeRS!F|(uTskt~EZe=_p;i7}B~_0@)T;J!)Rqs5Q1@HsXFojuQ>(SNzE5@A&Xcn} z&f4z9JEN767SW+cf(a)gc`x85V0BhZdAQOJ*4Msh`_)WnYnfMK7DfopZWm z3&^!nxm@;q+pBqAPg}A7K^5`;Y#Ct@br98;EZE-h|F@z1|9l--GQl3Yb$@?j&)UdC zCV~AFX=F2I;$84WJHhwA6xw0-*677 z<1H(LMN~?^BvVEBMm7kXHJ)dS8QA7KU7Tod?aGTIO?F+UUvb-Y?<8Z8-}dE~CiC?C z;64Ee@gg|>FhR|0JSVlNITyKlQ-0a8MJ1B|iu$!rP}_i1_#*7gy!zzJTFEw23r570 z1b|~e`|V|ZJ-)=VTrfgPfHl5!j(<}31Eu>!Ca|5H*v9)?rWycuvg=3k5AxA6w<_IHsPFcCm9d1H{t%AXU0-_G}c{==va?6}@6oxI=i#k23Q zACjefY!6?vn-mB8QV0^wAr`)OuxVQ~$l@C1Y*V%gVd|Y3v$?j@?p_-VJ z%kmx@e*A6e*VuYXL zR#!K3BA38$uma`)IQHSDC|=Ru9X!bYCWwtWQcW0@8&Y9RtI}}_9tPk48ILbXCg(eFJI-mFzVzHpqV3hjbF$%o$FHIP1CDmh=h~yTxd7FrFUnOE~ zJ>KtJZPCK^%38s!<0wwvmI`;JRBV=sug=G?U7+f z>A<3tML6guPJjCb^0=!NGg!h`@xV&+qE0%ToG=DF-%Z6U`S}jf^S?3UPc+VTclsqAr)OkyloZYLVFc*%XCZNQG~$f>DO_v}(u(#c0K)?i47|HIW| zdt3-JW*AJ{710O;^6izLw}ap}rH=i>9>k&<^6%rI&K2+D2yQ=zDHHc~ptI1y$$$jD z5XWIFxYnY!hSGUK5cq_F+^xcSsJ!XICU7xZDVqKY)^@Hq!(*Om=`n~XZtJ3U39xv3 zEOj@`@R^B?mvt_hU8yuCUbZ~;zTYV|aJ?JQ1LwZ(;Ae$PlacAPC4p;!1|a8w4@dgW z?8vq~v2AQB?zRF4vz0N?mtB6!N}$=t<|UmZo)(J(c9E+kcf)-iu{zSNSlm5l6#>Dq(3~m;sjD+ubobu)NxA0{? zrzyzwKc@hE{MM)<6m^5F>9P+ji{jb0$!r{a?UW;HbqqF|O?CIFHy=zu zA$-1$@1Os*A@y>FEQ$2~-*r)o#e~mwpent=pSofpfz|&6;`G9`-lX@Ob5k7w??CM2 z`#*>I@|4B567^0)OH}ftuNWMuhB9*GPBvdhDh`5&4IMTpUDeZ-<716b$pgx@88#Dn zovpR}>WCl-%2V_Kg^`BOukI@=w+dKWG4jwV{*Kd7iXKS32D>zw1JHXYqhA=P)8VuI z9;Th&28U^UTqTnF=ouwe3=5Q~-P?gp#^;NQU=kp#26VR_OuTa+jkQsgGVgWF zDZX(U3ND0=S%BnGOi{bZFS4=c6@*!0p12EWI9mcF7K$SsVme)AmpX*{ zZ*|65qM51Iy#n3W%OD-@JP#v{$ilPoU?x^ZOS@r24n>GI)-xxGT+hwF3Dm$ljY^kF zLa*ldUhhuVG`s{9}L+P%HRSgOCIl;UlDi5ba2bhu-*Ce+Av z?SoWE&i8c&#tljktlIwQa{wAY$c-QcyD=-ezdbeWT$ zvu_t&if{XMc=TJip#*rf-KPeTnq5aC1I(Eiyln@=*`JNYZw?XNY>UtdqiFv5obwv& zP0_RWN<1em3%I$GABiv!-CxWCffhFgh4{^yK z?tD#@?bO{Hi(f}wcJ>r{$NK&S6ZqUnxei&bzVnlYY(~}+<#Oll*dJBrs(Q_aWK(j# zNGzQeD$yciB>aKtkSDq~g7lfd8{?0b2U8=9ob#P$`xcMA$Gvgw%=2tf%biVL_y73m z<$r$48q4{<%=@S+Q&R-In@xH5*jb~*3#6NV0kRTGpUH#ligxx)#pgK@yMvc zv2LQ{*^-rCm8n8e^`AyBJ=($mxZ1lRS&A9QIao&nr<3<2VIE!6eR;L!rvjCfR-q=E zgY)ONzX*RnY~XXY^%7__HTmhgewWDAWEHWBi`hZB6a&oG!BTl($b+5FzH#!>%jNG5 zqO&%Uu1bR+$8`;UK9_s$q8z@XrlWI_?D3QT+#yT8-yGHlTV6*fZ-hiev}z2zZsKw> zRYU|T#sxgA{k~+0CYCSlqYz`-u#U1-Mpy1sxN{a{>3;IK=yXlb8`w)orm_?anKDB=$(epMmOlh*X zs!h?+VR2;dwt$xF2knaAxD~D-q-j^EtYa+j+y6ow1gyj>8oBVi8$!a7=(9K|=i>RQuGK^&DT(103PX(9C@dXo<++;pM~0 z{oTDAbQ?~pMtu~(4D{wPmguhn{x8CrMeJ=*l|F}7B$M%)tbA?8O;w&JLo70#@26R8 zs$}w@FNjF77ueLC>$fYhgA=Q2dQdFe0S(S?Xq$&E}Sh?D4j=|EI_`&F5=J} zcoDyEobIpI@t}0Vt0Pl_Wzlcfx3ODJDY|@@a|u0EBy4JXYUXRwmG0 z$?684^QZMpp&*FsgiQB;T9x+LFHv#Xije^Ogl?_jCS)rL5$+ zB^I~2SD{Y`aNdOsPKiPgk1Py4$ytueqt;yDA7hC8z`R%@zH1+Ho%x_sl;20#S2L%G zr2rxU(f(L>SXyOuf__Yfq7OT8sNWu=6?tU~_pOGVSe{bz+|Te-HXJoyhL*Pt!tFa! zos43xPIw!9q=tRo;{3yCB!*9a8_*WMb9fk~bzkgxnM4UK1uP}s9_i~|7bsG-nhRPd zo^;4f70n#iCG8YBeO?(w+=W~Mznk{`wJ`L0Rhpc--(&|7)`i>sK0(l+;5)DPetS5) zteKi=K=k9ZcN(%?l0-!0$4*e5?n@v--7_g%a{ePP=_qq~`F0qo4J$a7vWUelI+TP7 zIMw&JpXgYj4L5XoDk_XAm@6_l0GuAkg3oh!E|A{U-eie|o+gN*<^R|e=cpsK{3)s3 z-rOjcWr$sS*j0D>e3b7ERtn(mhEdUt&cW943QSVBAtkI%r%T?G)A@w{!ZerLpOTCBD<)U-cfNp!%ds`QfyjoHwEH=+SvP8pf8eRF= z+js(vz4IX+DP*$E;FlT99n(E`4vDQx6m=osN1x|OkV;6Aj%ao&ca1@whxJjhCE+b`t#w#sS&!Xt zHY#sldY`IY?|+T%ln@$tJ>_FrdreI!$$nuh_&%L*)gmUOfeOEZT@ZD0pq7xx|4d@4$$lgldI%=Wo zD`aQ~*z-^}Hi@I_gGl_z(I)Rt_J?EveK6$T&{AAxNQ5o{GlYv9K9Q{S=#euNk!l{+#OlLqBZ}r8#)b<%GzPZ) zUlrLv@unq&wmJOqe|uU~k4J7`wEnA(Qbs0X`dp32I5tJF#P$z)4*RpM9uzHmQ{;Me zZ79bl&pJ>|qsi~bVD{|A42v9tq36x*eX%9pqke%ZkUs5mB44PZdJ`6Wl6Ykjr6LdzHfz*aj7o+zreYujH2gYzys)Zv)rRDvONC zCv!%=yl<%)xcXZwy!Ce6UvU*?Coe+_%n$yoG!5}=XW#o-ftL3+rGCjF0_^}c%uTB& zPpCT{i#q&mYZ1#*rmqMili*~y`c>~l9x#?p*-iV}cZ1?PWSym~BPa(Uy)JQ)%=;Je zpNu>8OHRk@UqG-##|kr34aope>%5YR&q|ek*Y!X0s}V}2V{U^b#VnBY$pb&BeY-KY zkMY3+>l<{y`|Txq=c3K?3wp7_5MB5BlmWoO<0Mf}m{F;t?#@H%E&&!EZgHUZsw#)E zJ4@!HX^BDiJEopx&So5`gYKPl+Ppk>tFN%ce!|w(!@$t$b9DP58Q-B=pVN`M{D){e zwPfrqpO{D{L(l!@nk>p#E7*dLl*gYNk;z$j_b>)iq4+4D!&g)%Um5!;2NtrO%&ZBC zWhnm_lDy+nv50f}**%WZHKlhO-=pYtdl{DADd&Ty(}vjlpBa(l^Y}_GJZQjTMUlEa zB}>^C9YQEY&kd!&?^};QFOv#mH=Id3JJ3tdXSNYGcIvP=5TX}An~QGmB6$f(7kgM5 zVSk?cH`|JR<@!q)9eewiteuJvNA7=WZn4<2FwSKQ7VbXF_-6||g!*T6=T#EYM0CB5 z8u}fV%p*0xj00}rIf19g*0bHIK1h%dD&{|e7q8;=Di@sRsO+;~%z!jpzs6V1K3(4# z7C$r!8%#-idEvQy(L$%^q@Fj=(P)*-n;7TaN`wy?C62GL@l{MNjI}=6dn841u)~WM zj?Kn~=S;%1{Dy7zctzhU%lQ1ExyV{A%h`^%-xY-2J?Bc8Idku2XP?u|6nkw> zOp%-!HF7%s*~csTT^TaOqTv{x_zGdnj32v$y?(a$KY?eLh&cLSZ+7G$Yw4v&2-gf6 zc`f^w@&5O_b1oQohRkvA`;7KGdLCqb-^N?gyAT2R_Angq{Wdy^ML?Fyx%;P-Qh5-M zCqwz1f!#Ou7KY#b`}~7Aojn+-k!PJhQWjEWtqV1_c_m)jI=XuJ zpp-}3eukSNsi+qzZK2jC%0~#|7CCx8eLeDf+IwU3KA9J@$mkCiAFGG8h(Xk^zf^Y$ zEg2c!y6G^M&Hte{Pd9+cq(QCX(N{5L;D3LZ2eQjT!-+inWDzZ&l}>5EF`K5LA~!3t zJ=50RZFx|sl&sQu5NIq*ZeJQ;cRQfmI?6W2gw;yy)-?zD6N3KvHZK7VPF78nUJep4 z)rLOtZKLiST7sq0wO2@86xXDFGmrWmi(k7iJtC;~JZ_ZkiyVC_%rwc=xzm?E`E}SH zTDpq~{n%I4ipmOErj7XV?qHH`LaMDTw7K)O;Vv06^|G<`6i;MDFTw3)KBkZK2|@HJ z2X=^yq^jp^3mRKJ;(xBao_8i)s;$t0!qSCAJk;3K@6g$W z)*ITpd{0Q%46&cbD)Hc0dzTnHu&R^4VAD+mBSdlm6AbY`KAsNw>L)a6&`7{+QWs&4 zh$#})J^jY27pGVn0WcJTxczh8{)kya^ixw8_`{x}gZKme?Zb2c3Iov>_w*-Xi=az3 ztmQwckkkuCi=beqlf^Hy&n12==<68^hXDjUl8=)(RPR!4+>&CD{$%w5Y+IT}%p_=! zjn4s&*zf8#78wZPy{5+=K6%sQxhdd66DW9ysPGt;e$}tnew<%u4G%V9z0>2R8w6DG zv3|+~{>-)+CY)7P2v4zjdf)JiyZEdpCR2je)JMsAi0B=^T}$ya9;c6?X*GPG5=OC% zC?DMfMGV*b`JS#rN^9v8`Y!fb+~(Mg%M%LXw|^>?TPV`qchU8M@VU^5DKTC4Pt~n1 zE=)ftiN*|JbVw6ZqWV~b>HZdq0*!kHoS0WSXRs0|ParM75pk@BoU{*Ds{uV+vi$#8 z?=!g*pyX)6GJfUk$^PEo^@bFU*?i3|AkZP=B~6M#`z>dNjE?3VpvuD1Dd-HIgCPU) z*v*VWtxe+1c&q$Txy^y>ndDZT+jOI2!9U+BzVr7~c_!Js!I3>zK=UL$MusZR_ybu$a7WHan^Feh}V^p{9c010b*6{#<*4TUZ2{C?dy9RC=~?dMNAE1$4-*K&Lhq zJ2$SrbQnm6_QGD7mV?wTuJV98AsdUuz2t+xtBHx<87c0yPr9KlsM1`f zdOjWm;=f~PJyxvAnBfRF%MtjLH2jsifT4e7-PJMPcEK0x1Gvr`^j06fu~xXz>`M@c zQbQ_S8_~4J-Op>sR_%SEF4oSYZ}T^$ql3*INE>riGxr9{7v4o*fK>px4sz>$n(Eh_Y#D@%$R{idcT#R?6{5_%ew zcIHk4>f$8i0u7p)43#@HMb~9!6#XNL{KFll1ucF@2X(tyHQWrG#h0Mp>}s65Le;$G zL&`j=Zp~}$)FOxg6Co+q6FOTBK>z%+SfShj4Tr{wGCjsbsfo~`Zq5_Dq=kNfJR|v- z1PYbQ4%AwRr96N+GirsGH;%wat7GBxAT0bOsE|I{(u~zKhtyz)m&jQajzgUPpd``T zhYVM_ACbGv(`7PMksgl@6q2q$g&9O1rZdD66z;bV}%D1LP8~vD>27|LeNvNKcVUL1DeNtP_cvvrwXOByiL*2{(z1n8gc^ebf6P+K8CImO_c>*6wR zk~j9q05I@;waomYfE0*g=M}1Las2ap!AJfb4(?u=)yPs+v}3VgG>wzuY`3p)4j>QT ztdSYf0pY)}D+?485iZ_?D_3>j9TaWCJF{b(iHMC4+4+wuvPM2D?w{XxrX_(q*DbQ& z9$oZ~lcE$L>g*yKtSXb_;1VDx(WYg+nDzSeK`swNQF>Ss_hzQ9P_^G`k_R_OVS>!_ zySPzN^EzNZ91Kalik0)S+z}Mm^-1iN+OK%Vi1NIz9d!;6<&A<&d}QYK<)Hb^LEt%f z`otMcviqYOO0G!|)0I_F{%}uwYqj)8CW9>>VUYor-CT>DmB^&>Y z?5o3|`*qaZNmB!fSk96`G9sLOmiY+I!(JTnhadXkH~kiiU9qnXaS*$#h4yas65N_> zO2NmQAX+D$*ubW8+t+Z6hQ+mJqhqE#QZhb1f5l(?!52P}*QQo0jqULS!=!Y`zc`L7 zg@pXqBfc64b#E_Z@oTmBC*SWIvL0!FFmQ5f45?gRZC+6)JzQ*)H(}B#;PRTkS_yV` zWp}S+)C4~K7BTlJyXblpM0sn?Pm4#>B{iQ{%34xA1Ff=}IQ2(RepZZ~_g{ELMQAR6JP; zV!f54|B_Ycf7$w#Dbe8ZwEbx5YSsj8IGrf3QC+yjZgh-Pukd*n#~^;2LftlFOQgkq zXq#I;8e@UW9dgEfwu$OpD<)*blt8Li+F5^+{N?cKNY>l?w+U!%9V;11c6~>|&ALy& zQc4zm*||nUx^XuD8kiG-SYwmXe${p&CnjQGD_E;k-6s_YcblpaCR&}>wy?(4wSN90fSyLi_;Mv6c5qX!Au5;BKBsQkUf zKLeMP^Rkb-MGq5DXqSpDY>9~iN&EUYs0 zm-zOIV%fRHHNLK;deN1tMAd+Z57DH~`Tu9uo`_KD=g z>Mj!Yb90Hh4aEn^v3y}SFJzs#l1tQGC9c#6Pq~J=IR_)(>;0^tXp}=MiSI3Lpkd<8 z?6$A}HZW?5QqyBmO}QCd5EsZB4ox0#WR8w3zs?E0Y&^DX@u7X1x=aT@?@wg4>~+Js ztQjg$e0~Zu|F^E07vn)4vkh3VZ32GeUlMJRKBUlgFv#3--3WV#oikWVxX}jb9*}Z0 zQ!Rdb`8_PWKM+(%{J8}41eWL|q9@9TD+)f3sRyXX=0=w+_N?z$j71HZI#ah=4yI2G z9sm7_<~$xm)jYZOygn~|fBft`rj)NnPP!`QWxt1p*>jx|!&D)~zfNZfZupGDaZb)L z|Moh5i!uE9>BA|y#K4}y;!pc8M&fY}l{m%Oe{h~Mr_A;tQPl#>8tKqjcCvA?bNBu%%E z<2SCu&kf_PMiUzU!>}Juy3MPP-}Nptm-SWa?)@yJppu+Rj&Cw6E^dRAdt(Wc!R&$7X6Q-$8%!3%hQV#4lh^K@q)5cy8F!ucXA@ zZS}4d*?r6jBh=Q-wY~EA7gxDXH<#AlDFED8oh%A+kcT{_((3s5s1<1ScSU>A;skT7 z`$vP!=COJeQNfm;ny=Dc;nX_n+fJh3UPla zwvo~uyV4IAYy7U}q#+UFHHd&?r$bUzkJGQoD?j$l>9t)y>JY5i96{}r=bPokINZ-U z6BUu@gS%xmgFaa9?5SPMWB!fiRyp3g0Mh8%6;wv{>991nc|HD=uJUgz=*>SeQ(WR6 z3py|`TU%UJ$v&bNEvjJ>YEwM=6y?`Pb7%)+HUqC#NeCMB5oz01X>Zaqn(x!JN8VJ# z=3*osUk&fajeJjgS7l#ECEO}#YIQvgUV&Mcw>Be-(pXsxW{zf;spew@yr{z7h~@=v z*53-$Bkltl`E(h1-v@)b+1bwtVLDmt1uM3e?t2SY1o%I z(q=|HW*PoGqGKf`+lAZx(Vio1HRUtHv`bzl8~j3fQ>>FBMFCpgcYDWX2fUhJ00~wB z5k`J<-dg+Yt(_A5xf~5V)SXs70M(b$N<9LQ_6l>UnL14#dG+6!*hWPKgh3g*0{=9x z+99ik-|1KY98oXFUrS%wy7Nz4_o`Jv({6@8| zftpxUI&GL^J88Y<|DgbZdsr{0a>PSh@2V3=aD`lJZ0PoZlkr!E!yE<^&ys69q5=ND zgwoD$;l>twDB~;H}v!64-Rf8aX-?tAt0_NUtW@0K6?}` z2#)@NE1r&eynjwpWHHJ@K6v;Ut!tqIMF>Zz57yVM95pS)U>bd!m>dvBhJk;*&M6ujegl(OEyHLo14VBay2r< zNKkLP73kO@lbLCYi$+8>=d!a@V2vP&e6Bw$;Oey3uZ4W*DT#L{*$J7dwdfJfHqB$u)a$^17?FDgg&dbujSyW6n=w(& zvT9H+6b4ix6z8Oky!9k}boLstNRD_b#cTL&xC+-j7_D~fq!eS^DZfY~BKH=%a7)sv zFgJ=>W!{HCH^3M+s@VZ+tuKuxO`#^S0u?A(RBz^DvI$~!x$1+ zufg&umTY60Z$GpbV+Z0`32H}1qzXdzB9cOYS@B^+KO`ACM_}`K#6$4uDn0dn?9mjR z=?*b73EvX;DNORi4MF<*sHGORGBy$dIh!BN#ty2#kPezvZ*v)H%W4Ea^?th}W?tiK zRRKDr-Rg4c@FG0n2-UfA5_jtu+D|N^70a+R;e->Yef7(e?s|{;`SoKuRD4N; z0)e4*aZ&6pcQwAMcXU0j;6p6vQn%+4l z@K;7WAC!*znw2ViFWaPON^sy!T=*O4qyQ**37YheKh>*^Ei z`@O|E&e$Q6weo*lw_0*?R472)b}QbCk?F2uZucW7>&^a!GD!7@-^f&)E(IPii9p5m zwYh&D6W5re!3r0{5t%$yxMcLK37;g3;E!pk=_`4(KM@CjBLpbrY;~S8P`&y7uInE{G?XvZ%F(R1TAB$}ATGG}mLI!SKDaEpxcv*#lZy@a zdQT%0xcQEIm@GfzWs3LGceUA6{Fn%+d;RqVI@fUAyxy#|13|TK0aD~%{?ft){o?xb z;+46{3#I%R#hWhsWQP3PHIIXzs=2}$ls(_szqfF6J89DK|Ue zNwj}&>6_HkPoe#`&17U%qVfVa;s{?h)TLUgD|=jf@2?lXAK#h6p;;T9d*r-BEJ7Ph_^*#89%6 z=I4qre|JnpbRZvazZlUhrbH(I6@Y&7eczu&Y5uoh$v>5a<8Lf_1X?0zl}qSwpIVmf zEK^Sq*qG2yEP&_2ALs3%O05Uz_y#0O`ChkQcUCCxYQBDlc*kflnzPDHYLRrOk;M)n z6am^gb|aiu#O-HtFr)XQ6xv$G$<{*5Rqr~&f&?QE6+-Sqw!}!0{HshPsYaJJ>R?1+ z3k_EwP(eHj*5sp6ELRmKxpnGJ2(wHk;3o@s`cj3R-FnG)Or1;3ppWy3nBma$w(z|p zFJoI-O6+Uv=h6UBlIY(8_29voR2ow0iNbWlJ6(?g8ubBK+aDEl4R#8m%9)fbN|CjJ z>z9#ozds%kDI_Z`jV>0`n%#k$yCa&xRfxsTrJS0Fi?5L1(P*al+%AuSPPDtVDH*Rm zRsfsk&XGA=`(GI_Eo-)hDPP#(up6Bz^lo|=lnD#NzuUL5S0@b}SCq38P(o`aU2>yS z5Mul}){Y77(h_=Da;S|$4aZC!#NvoFpu9OhQ`Zx6zPp9L@`u-<-sUdPsYbX=hUS+6 zl=I~%^ZM&V9<^XUyHdy5T;EP+!BfGqLnM1Hba8>*%UCRsNCPnlarQ{PwdYFz<5)Q< zNjdku6{zGZ`N2nY!>bV5&@EBt>?4DYZwJf+7xu#kt3GC!Q8l*_V>$}D0vz*gd6sJx z1Sfg1)PfjZ_OhsvW$&1Zt={uMz61_tr#71fMQ|n1r|O%5n|+mY?>naSk+m7TD1SP3 zt0sray5w;bus=6k$K}DG<%YT*jx!B)D_vtA4)wP8{zxi+YuqG=3%-`YHzby?c6cc3 zaUgrgg690qb6*T>Viy*1b!NjcA2vU0w_8xnr7h6te@&ldYCEa94KXEfiuYwkgIQ-8 zmX4m2&5ozx;6qeC4z}|;26wO4IIo>%bC&a|-mUiS@XIhsjV#X8dP^w3Wfrbm-jIU) zax6s(-dj#mW%n&_>*5ooQo9L`cG@@YcoWhe_7I-o#^7a7u|6d&emvbPO1w1RGC7t&%zH-7m_y)-LNtOzpC(XiQ9KwM|bQqS|YhrHl8);XV0+{iqdx z+(=5@nV>tw?yApkLWLtLjjITAH9ZYpi#7sZOx;Saf5%+JBrB(-r4rH(wJ&Zc4 ziQA4~>?5#40m(5PRIbY?e->x@P~1q%RaoJUvm)At@#pqdlT+9=i>nqo>SQ?rQ1KmV zMBL!=r3+-zm>%aX1~P?U0hG?-WQ4dfrqqiGm1TF&Ut&um6wv^UP8@m@U4_YBysU0M zBN#sRDlS*Gy80SKjGxgTKf2#oi?a&R=WFKW7E}LLsYj9PH7}&XOvuwLD0>oYK+Dc_ zGisOK+TudO^+DQQ`^-zuHu)~&pkPeGTZUtxndJ+$#$Bh>2W@W~-ZA4zpr0TIGR5UJ zxtTyox7eoVbOzk2vFByKwnsTLo;@wFz>FB4NINz{o*jFa#W!v`QO7{fBalmsAhL@` z^0(=m&}b=2=rX`LkuZDyK+^1KM$Ix;yMLt2>2&@VPA+eU8IqsLXOv*>-s;bHb9@V) zZxPZZM0W8Po0`yW<+4re0w*{EZJunZ2^bS7MBqGFH*RpH5m&W`frhDtIy$4uNfY@R zP7n6J=9%eaQg^Afij!eY4TzRYdV3HnK}5t$I&sV-EyIxGy$WWTx=nb3P&c5Ihdo!f zd9Kv1NdAo5Z1vy?&G*H?PRvMGF^Im!~PuVsPnuY5ePdK;F0}{&*NSTJ0kut$0d8CjYE$cBEp|FMncYg#7rnAbOkW4pf`Q* z3J_;KEC4hR%HusCIc)!_+0h_h(mdM*6GP*BWm>;#`|oBR7SDEJfCjmyrFaC#_T0!@ zO3JR6#0SQyLkh;jR$3RYKx--tivgBp>7WFhNFKUflLi~!&u;9YxH{*qZUCFAjWmx*CO z>896?=Ms#Nv&mo0xq5W|>A>^0fIQ3nr7D$uUiUWK6U%G=!#v2zrJrr_s7q^U+wjQSKRHsg%Gzms~GJ*$Mv6nj;$f z%~lmI(@B|R0yO*VlT;L|1q%O$t@U6mI3(&JPh2fWi!&5}8sZ7yvfUf?vXE!m>U}RB zspMTncb9&>dK%joF0?9FvLTy)3;_V30IcLSt_!P6Cz8N^Mak2e^Z#xXK|Y%mSL(%i zg&p!H4tz_e+wPT8uCAek`(9-oyM>^2F4Mj;&H)!9hDX)sZCXZUhnz^kCHaLXDwK50 z`&WFo9{=nRx}4;K{VHMSj`0k%sw%cIc2sa5UDzoeu66!yCPrm(pyQV=Uj_ZU1$9J(*=OXK zmSWnZScOlG6Unsy2RY$?8)gK0gnTmq!n~HE7n8YR8zmsQGf7do7Wcb zz1)S#*BAXe!bl=-OY9sWx89RL=o9Xg^lbZ&o7)TaJa`AjuZqabAOUgpGUL5~!8mz^ z9Hsxx>hs^RBmT!H@V{{c|% zZjc=%L-rhHuRb7IfAI&pYuCUzUf9mf8;3v&`9`Oy!$^;j9B!|xh*@xI1xSDC%f9kt zA#>C>1s|dW`j2mc7(nRq3%2;QXeQ57G_lfdkNxkJD!hDX{N7=ASV+z$$QF-h}F9>0QI`fzHe_bVLAbDnSZ z*hQb#ZvxIc%L6{8e9tmd%mmL>w;n|-%>_0*Uk**Xp}7*-qNUKW+ItoB7lV}KsJU*r zG-$LK96$>DVEQg13Yb=gkwK!#=AoIKWD- zjkaGW&Mlc1UxYY?Dl(Mddr{>f-Vap)O|kQBO4#Fy(8-aJuc$*`!$E*6Od&sssg8-o zTBAw|`?mxZjbRmUk)8Zc4C9xLgT_EROEsd0aGKFLUQ(y7>ut_1PJ9FW)c2OSA`yLI zJsvq=zgt=XOS5BFsj=VRnyU|t36&?JsIDaqOPK4J`)uMn?+E#;O}ekqWit6q0<{d} z7XGe;vZkSaiu|@&Keu&M*IWKz(vP|!Z^O*%$si7mp2_n|iVh)bAb&LEy#pf6{ z+Sy!0tBo@V7BfvPp?v*N%g?T*Vk?Grxh0(t8WivP zY8#`Y<+9_ql9QOr5nb+RHY<-f%GAPre>nT}=lIuE_5R=>07gmY<+@gP3zg;d;_$t( zCegkO{Don6Twvv++FHNpa}}rOMF}dYyyO+@l+7xC%S<9W4UMY4L>&uat$cD<9HzIn z&GA|{iepUn%fL zz%5yddnfWqJU`l-HUbP;>;Umk8F#t2%6Vh&t7~+`ItKQFhFQltrmjka?0i^O!TMF7@+{pBuch%c_|}Z`F#!alqw@XTy95HSreDp1`MO?iR!eqR zyJ~KKKgzR5O{MbjvY%}^9a+#WuPk?wf@lf=!O4BtWKUz-qfeKc~)%%U=uq z{xA2`mhtthx64^A*gpl}4P2|}x&9x6a@DW6avy?0s|B`Zrn>^`#r}F6!LTaaFf-qHkb+GEA9cIzMg?X1 zQ>=80tVtM+XncY5vHi{TqDv1v#Fl1`j8Y-Dbqv}~4X+5uJPqzp7L!o|9|kjWM>DA1 zXX0{JLB0|N_q($%qHafFE8wG;2UUjX)S~5g9z%F$D6#c0X*gvn$Vw`;q2t@%3>{l` zr(4K5dAGjL;vRj#O`E(;P5Gxt&eL1--XZ*xrvn5*ze$OV1nbJ7t z=mW)F8r;u6YnggKZE?01%3ildx_t8lVSa!|(?}C>X*pn<C62urqh3gx24O}5G>g9u;X`b! z=UTYWKZmC$dz%|Yf_Ak7r+7r(F$&UT##~xqe*JKE^|RF`T71=XRfJhHXqW46&=I=* zs(1Td;Z5dHHOp>q9`n@(3BUW;!tu2JhZaZYI0OKboB<{c6=1qEQwTXs0nsI8h_3DzlI6Hr*NQbw%fDvkN;6 zPkON`&Q6Yv-8Y?m*0l{WKZ)E9_d!|D{GHD^U-(ZNVi5tSuaPF2g0qa5Qc>VCa~1e! zFhYTQ%7(j8Dr+?tW+a*kX^tZf6*R0W)EomlMY{=h6dFPboNj8Uc6C?|u*(Jkq3t9n z>I*}j8u^Ogt_?@BPr^Z8hb%@e->fkW%S_I`223Rion-Z>^Z>*Kr(7j2&_+{I!=ov- zRHxowBOw1(wo_gzpx5A_0pCW)^Jd|y5L};meoqm+${FT=Z#1R&W^MR9Md!X=(9|Qii8RrzO@Hv=*<6=l^i>oAQg_9PxrRNrCxTTdIQ796LnEP&_g@iDzU8&o_rx_zPV-X%cvFrT{u8 z(yf6(M9C=_v?zF4uglYQ;kaQ-jy*6F*8;PN8L?vOeG*`LR}eex1e%NY1ZDw?}@ai zs0Tu@B@Bex*N$W>-MEdKIIOqi+~lm^3GG>*I0QIpbj%joqO?rg{0TDPJ25AEne-MZZfzarfw)AfEyobFTMs@TNG0s`yh9SVjHP#fBT9 z9o-;J0a{D>mYGIwq>MKtaJDW0KX)ktxQ<^Y{ae=29t%{26vWG21KRYrCEVwHLKm+o)m!GRbWWZkCQ$1#VsK zn`^A1yEa8exs)vJ;X6URTV+YzH5TrWgxiXjbA0uTfVQ1&K3!tI=U8ZRGJ<+_7K?p> zYUO@H!)|{jCA9GJIjW3P#>AR$3(%(fsXAM>2MHGmSVoC-vEMKf8?A8NZK#qN1zgqU zlSN!_Un{UXIj*zRVflv{&)dv zI{m2i$f4f*^)Hov&vA<*zs|Lkq#qjk6zV^YwVYGNVaf`Wq|H6;ta_ZtcKF!Z5IWjr z-rGE#7j(Fd50dZNQsu-sRlnR6Ee^JRdxI2vE#r~IM@q}iEZC@zgz}?xqt}+dT7Nk} z-`aF#KLRUNU>me0MznP$AEfO&`0_(6eY(RjNKAaJ44~S1=1|ivB~d;0I6gJk zwzQY(WgeelONV(%%cxRFHJ3P?Z_cF#hZE*zO!p&sdJGpq_tRVxtE@|7m9Rukp$*5+S4%A zfVI^q42#k|3~)^=GY`DR5Uu@b=n$-JZ=^@t#;f(iO#jEw7_$&KNUq+C=K}yqz6z8H zbG#N|erZumNY#x#=!Ew&)jMw`!;>Vr2vj$9Oy7H33f;XJ4iExXYB-wo(jsQLNiD{b z1B|HrI$V_)hw0pvu}6XDmR+|(0J3L3NewC$l2R7mp3a7Qj;)bl?DAh7hXV^fJx~6 z6J>iZ*Kd0PQmaP@D)rF05FQrWPhO^t#;DN%-TzENlVdk{+FSg+tq4?jur{bv1cX)e&MTB#dn;%^Ksnac2QgsOKbNJom1!A)LGs!9CPaKIG zq<~+2WL(>})(C}H><7QkXpqowD^=vKp8Cek?&W>_$qKIT#ZdoAWtyazL4(WLsi_cd zm#>@Q12IFz46#JA3>hp*;1A^BCKjw*f6N!HZp=~$$Iy{eQS_Cumx4GJOuOI!1b(DP z>=Cqo*K)yBJadkqnEB~}fPlY4f+U>`FmKI?Be0VBg}Q@FjuIQnK2G`TlA@TgW#yax zdEdQ_rBZ2`vc3m+Jx(yAl!B0LN}L9O$ldtJQbiUXGOS8J2dRJTV95!Vl>YLSl)8`s z84Ny>rc2;mVu4c50q~imi@|?3e08W=1}}f8fVM6?E9@S;xdm{8I30yRctWHVx_THS z>9a5O_iCnwOPV+gY}aY2_b~-FCDL-ib3)+L!?=3U`P1sSo+;C=uT$bKRf$n{C(G8c zikwap1D7Gp2ndNTJw!M+lCa@FO>piwaN7O2B-y>ER-Hd%cg|wJq7;NURD!Ht;cZY`01 zJArK`qy2yy!4@V2X>P!hYS8*hY@|9(pbSG7@7;c{^0E8Nkm8_r8V^Ex$rctS;rOn8 zOMYQg_*L;0_gu>}o>I3M8*U<6_yqrtOq4S|Y4MUf0j(-aS`Kp)G3_`~5=*uaq#%Y2 z1|iYvK>y)~Y5SECZgz@YoNLt#Ix5SyH>o&8o)&v|*1`@>Igmn^l4Prq#g0FS?NF*$ z7S7fi*GDu3v<|4xBII?3CHc zOz}Ad9D$q8zvY^JM;JzbE5gjN$wOSOQeifEz4th$z~0)IV%?wFzWj3iDI&aQ5{0oH zG?fC{9~C~$U%WtSwoUSQ=*=MYa)>f^jTD_oSjW1@&)8DjrdQ_OS;2HYK@-UWbuTp$1w`tw|B_@fI&| zsuojdG{bxXpU1#K_cIdYWDOgU$dF1YjrF^#9OIY(Qha(@O#j`^C-O zlk!gUCC-+TF5UG9mIl-^K9iVtiH^wyB6Z zq@!CpJGKA5W#IKGI|UuhPVkg-09Tj2L4P05Mo24fCFQ6BA1z*To|dobA*o_(YAk!% z-Oarr5&$8&P&0MiRAi^Dfcvwb2YMXBLNDP5u}^_dW~sjQDUjM&1bY0O+qDuevC2Eb zANAt{6mFgt)8$u`FaCGy7%EDOM~ciMm6r{;J#;`u{_hHe2*xwMwmDpEwR=}8)zWdp zeKM}?gu04hho_Ua+s&QRkI%V6+nYoIOCXS&j^pisXfTF&u{Ln6#6-G@uE#3Ub4q2A z0q5O$Y_LIpwNi(m&(p?*NUNxP;lPiffy}Aw8ZR*iqY_vcE%~w~(J;VjQKclky%>sM z^4T_SgdA$s&F#Nomg;?uXwF-bIZ5`(rf1hUpCwh0<|Yhv2bMwl+%yqM@`HB!V|RyE zLQE=>q|5dheW_3>U)Q5P*e2Dno_ zy}l0QzQ`3{oWU8M_z{#NGzB9?_!96}3ZXxBmfB5^0-*s>; znN9M~4-Xp~NlfrR&U|X0zmzY=4ho(b4WQq)#lNR5D+*=WB=uD_=&PI0)P>GAjEEA4 zh8}aN)L+Er4DaA1Mpg8pt7@-s!4p5Ptfuy8TdZMfugCKw{|aVrmEf-QQRN(3zV76A@`gg~1C!kJL+mKl&K<2uqsVJEyUxDNZ+RJaWW~~3oDbPL0Y0FE zI^X`OhKc}UDWoVpv7ba761Ce1Ij`5}4o+75j$xN>iQ)?iM7<^411J5`ULg0C{BALW)P8Ab~M=Eh3D{ z%0?M0IwpL^q1g;Jgbp-a{>n6^Hcn}3S9#4FzS4-*)R0I_f$3*J5}%)x%6BX(Ap?NX zVxX!j0)?)h9V^*Zr_?=fj<`#RjrMH2)FeI9e=4+BC57E>5gb^^NPH`%#|P&-urVn6Lx& ze`~YXA4_-Bqec=@2;Y6?pED$9vk-3(NnV{SUb3`0)0f_jxE%w4{lS)R0a* z+>QMYX)os#;+|aeJnTgH|3~Ki@2ZmjDKLKQE{Y0zEzc^6ja-Wt*+L51Z)0nLQ_+wm z+&^>LkZd1MyIBncX^`R|OF(*ES*P2DK=+}~MOpvuQUap)enWwucnsr2Hq$!An)QsJ z2Za|;0{b@~s4rXJN9XRi$Ut|_v9UD!o#i_S`~-j{%TdWv<#pY89Za5^oxU34ZQxO1 zXba>ekiZTbyLvlH8huZ=wX+SsAn{u4T0f@QN=H>{LNyxvgc?u8|IrjCtePT;EJ3#D z+_&TOO>DPCq8F32Ne+bgll}RGuyUbtw$?sJYaGt&|I7e{9su|GUh$iG!90Y9-AlV| zt!+#Km#$7`y9mA3Nv6w=UWW)E<6R_Y`TCC@h;^=&%7n}0(y9OiHX69cZhMHw*?m?L zr3KhR`D>2DcbA-t{a|mQtiGO;K1k!-JiR(>ymauv zC1az|%*?KRdj?VP=v6O${M);1Z;(VYC!U>GDI<)9H&Gs z@0QQl|7ce4(@FIB-3;NRnU>o$EgogY#WR^xPP3Y0?$=n{-0dVq8Y&u11RM$M)em}z zNPswS6WD2g9{z4K5T-Ttu$p~&T7O|;W)geZFcY>hZnfVsI_czn>AgGHsm3B*D-$D` zK#bsc#{_(fEb+<6c~WIiTT4!hWI6*sBQ$~d(;}!ejtICO1N1V(JJPqUXzKEOy1zQm ztvon9be~dPRGj`L4?mGv{I@vOU#xrdX!QG=liakdG~&VKX7LnXdiX@@6416({a+h0 d+}hv1AOK1|pb))8)kOgOP>@lTu97ql`427%1RDSV literal 79300 zcmagFWn3M>l0J+E3lcOyaCe8`?tXB0C%6;b-QDHj?(Po3-QC@tm)za|-g|f7{q2YI zp=YMgRF`x;^;A!YoQx^9GEKn3_EZ z2txngAE>D1=?4fXi<7tzzoN_XX$F+$%pvyRM%`&UWSDO-IbrTLPoteTzV89oLl3tt z2xU755|kUls$1j?Cs}CI!I6&ag^=)%!tE~)B1UWy+o`4V3Nvg;|X8(wVr|wLnTc30#5YIEo1xeRxf6h3F@pDV- zY;}3kR5x+4EhskJ?K`Qx5egs+WEnehN(=5L2GYdg>+ zVbJ>=CXH&QxY3}PS5(>Hq|Xqnbcd7Qm(F*Dv&u( zq6pE2@Ah|~YINfMNg8gesQm7QImrhHrW?l(FS3ZyJpf5lfgEY7SYXm;ZHwxia7 zsdgby-;fuDhmRLmU8cAtP%urrZ%Go)s@x5|MG1vgnJ@Mi6^Lu88+I2Mew-+bIEwI` z`ZV8HbCvTNnkIi~#@8WJ2}|z)s-vm^HH=dYSoPP;ne!Gih1zMa!m}hOY5L7B4ODyF zxrdxGzibYF4S9Tu1yYU5=UUA*dIc{~_S!87C|I;3w|0b@ z0~Pm5o^8H>K@GlgWzH|;>xtcBv0{RETNf;Xl#Do*D!V>w&67bFLDO zRf)BVMe&B#-#Hy;BU+&X-k}gW-zS#_(#JYDUl!?<))H^+>t@KJA6L4;F&3a4LlsPQ z|43ajyCrfH?tuSTQz0~zFCFucuveQ_8J?I-lyPhS{vkhcT)ju?>c- zTD(gANlvAaTi=*Wo&&dh#de8M2MW2L|1=HQ#E9Xe^1M;*-^_e?x*636)9BNCcwwJi7~1-5$Te2G~=y8*E?x!YAGo@d3jg7 z0U~)Ul=-N}$~#yNKI>F1$(Um$@_tM3@5K+z71clYj=*We% z$urD;4GBM$m`y-RI8=YO={yZ4#f1{g=j`z^qic(B@kiE$lJTjJd1X^%gc2koQIY5c zN|hjwFDld>#NJOu#tPi@AIM2zvkxeHf8KwU;z6kyK1O81=4UHN5J)9MHy%3Yp~O-H z?+4&~ZdazMs;x|7c*O5_^I>Y4_qc<&nHE+C=H_+m6nl%UWxUJm!rY_Ko=Iq)Cu zNXsRp6%!(2Q4?@CWewC3;THO5wx|5L&eE=57MQCq3+)wFN~V`KAR(R8f6P-8S*qDzNyz+l5wQwc&wyI@n%OJFnhylIRm`8%5bO7Xq~A&o(i)C zMlU13Mzy!#E!Hiq8z6C)arm#!{g&{Z_eZZMyc}feq{x|gjv^y&xz-}NQPqRcCZW(Oj9i}a`;13T3?uS1G-d? zZ@)w1c~#fnul1YHKACVVbiEydSy7>dRCaRykgV9kxYdwuX`40p0w)vgA9Z1CgMoS}TNo@{&7KVO!PFfh1(A5k7o zE{#dqG02k&*l8*D!Bo>jY&_AbF|j>ZA8BV~XQHO76j14Sc!rZ#_s#N117&;< zSe}>{tKUtK)%2@_xvFiT1pRA}av9n6B#pWF4ePa{K7{oZ2)&SsYtRJCY!04X)J4OJ z6lzJdQ1)?YSM+9`YvUbyJ1>xEGk^$e@cDN&8xlba*a8^OEi#XuZ)2;k*){1C`VfD; z%UcyH;#^`>t7F!fAr=;2xv^?*nz4282O1ysd3KwsL1d)7n_570J4^1evO4wVKN4bg zn|?pJ3#=SW-2qzLonm84`^Opg+oQuLbRbDANm%~at;(s8H%YlkBGb;?If%u9_=Tyn zAnWMalcwM%qo_^I;zBu@W1oXXr?F4x8J`6kU3*zQH|oRtLlvE)rwpz&MiHc%zCnYw zssgoyT;KMupsFZgW6kxC<37cZWaVPdQVG;C;xSw2TNW4PIOmMHyG($7>LS8Lhxtbi zqRRpi(m#kv>=TU_M;%skt>W<`FZGM9W6l8J{aWbhKDx}q6E&&Ide3N}@cIjO6w3KD zz@VS7ZuPKs`$=N2*-u#lfalwBf^X&smvqmt_02({NfPd^?<@O1kjf_{0QpRBd;M? z>C7`>wXWezaq;Ra0W?ZU4DcC?FB$W(8iNV6z4nR-P7EC1q(%YOu?DTP#F5aFg2% zVt5PYx#V$@glk1o?+bubbhM)aqW#yOg988MO`n5+Fo`|FKDrNbsa|2ADQl){Mva3v z{W&>z>-%Ha0Tpd=E>qZ zVDCtWO-o0obIj`NZn6D~B00+2m(EruYPTHCC=Hd+8Y6+|sXeIwzH}KXr97*=s$VL$ zIZkwQID|uRg$ZsBFD0cWC*mjLNv(kk*A6SX81pFJlYRelIv&%vuqa`nu5K|ssj zmf~>5%y1InQ{+u1SL@?820uXq&mBqHkQiz`;_z0D3MD(uVh^gKr1q62ayNAB(B;E> zD0giKerT!yuwyI;-4yySIEOrX*yGzr;mI3^ON@Vj1QOybl>R5-?qz*Mh^uZ7wwV9n zL-N`b6L!DNfmwW-`_M4gUI{VL55tpWs{2U%AyHu#lHuYzTqJJ^)H7KnEHV`NB}|B^ zMW_OjGGA*-*qy!OxM{<-!TsNDYswi}^q;bH27Cce6akd+WJ?J>hLwM6YG0xt4K>~- zd+l3<3f5g(IQ94u5%Kc(Xg`vv$phwc`eDy3-M8l?l`1QubNt`EDA^D=FFNFOR-S@% ziug&t=!q7iR4M_drcTm4l*_Xvo?PFq&g41QnbVh9Rk3r%l9PN~6fp+s-=inD+)Oq3@~QXLPZgeeRd-{D}{&ZHqZ-*X!yc^q*;&9a7PgiYcq zUKtd>0#8XUzHS{(K`OPZSAd5-ja(Sa4vNu@7=<4=I+CN|BlQ6b&@;Ge97`{}L9e5j zREU!)6dy2h0g4r<<)el=8+wFOUvg}QV~AW>`zEZXy8U!`JeH9$+3C47Gi`+w-6Xi% zHErGnwIk$2SUR6m9JWT%e(c_9Md+{U%2F)zsNx?n-*x*P3I^Ha3^v)yzQ4$h+nQ=| zgv*}EX`Yk~xbptgaN1GJ!79)tkcBayk59xouCfV2-`jK(A?qAKe*QIs{8IUBy}8T7 zZEGysx-XhkZ-=|FKE--3AL$m0v5=6vnX)r{sm;y1M@TiiWvHEkPs=kRf9BKtRZ}ID zK0k6H0vk7WekdL%5W`lXzCP-(r-R|3rJw#O+q{AbNUn-g_DxII$xvDWwwR9y3tmw| z_;WAJO_8{h{Ec^H4A7Ds-C68aIOmw*O+~O{jBL5QloKsXx6Z2jDrKA1@ZnBdvnTCh z;LX!1ep{iopPULrr4WHYj9Kb*SLGs^B0?r{Mxu$T&rr~FI} zz#4L;cR?o>3Sdjv$gU5MIbEUZv0P|JML12hX-d8kupiJ2fPvXan4?ZClPda+=b%^- zf2%Hxow(-0n&Zim50)b58sC!t7!7v{b2r$j15@WGX5NL;IJHAu&aj&8NaBN^;0ysbT zT{59icp>6cgd-9I*t%cfg21 zbecE4^u3DobUS^27sQ4|+1Gw-!N`Tv{` zHreo$>XY|F{sltP#q|&K&+JeuH`g+wz?h+?rkPlcI6{RE-V?=OI$}o3hbJjlUFqU) zv_$Bl3DxmnMP8w08WIEZ8KFD-PfrmB~XCn%bJ|*@g;B8pR znboDn6^<#Ik>`s`6l48IvIPagx@6wB#VhY6aJ*bwa;`X8TI0lxwbEDqy|nD%@sP>w zuKmlU|NaYO*URlg?R%<{Tb5n>ON;YGWJ_&(!ZFzO|A0l;xx%r;D-0m1U)nxE_CZxZ z$G|JVlA$yq=@DNljycR5HmaZ-@<1k2w5UE*=@Vme79G$$C|FcOiRv!c6Fr3k*$82B zHB~+f8A_F?f;iT<-jNa?Mm4X5VBGcN^SKWSZZNotk^^n8>3!@yJSaIFf|HMf-RUPf*N4BeX>3@@=304=^2Ca*0lhWI@O9|x0yL4ppFGZ?U zCub!=yYXHr?1NF+nbQ0w@chONCs+WtgPWgm%jtM2zge@=WU?G_C%OL%>AWr7$zUfo z#opgG$`(k@NAC(C+PR046^7LGvcjtQjlF`MkIUx{#48hJ?X=miz; zzT@|pMOI!7v?+}YA^1fx7CAfKlhJE$H_WU32)h#)3YOYfCskKVSBQRkYj7P zejwWZDX4C;vl7>y5>AXxccpdYv2%&Q#3Ab%$r*c3QVVYldKPpdHDP$G&;qASu4Q4O zd!-HJzpwOvQ3Z9Axl^>D&?!m-+YfTT6i?sHq~Z~pQQuNPCeM}S8PoPc-mwk~J{fk8 zTf6c+Ah?`cx92I3SiGWBy}08?Dg9Tw30R(vS}vk0Crx1_p(-+^Lk{!EjViT090YQ< zBn0af=F-mmB8BmsMP7B@sunN}N=nL+9x6o+cV`pT+ny&&C?Iin=35F@sD}z@D%Afp z(OBWeBBkvOboty>jy36SQ0 z^9?j_0}XVs(ev`xlKHYhCm|z{3d+r)x33%OZcX^GOPJdqt$J}V{_6*seT=pNM zh_BKdGCRWjcLCLG`cA9gX9ka$%<7mYmA*Thc&zSVV0(7$#3Rp5{gLPKgQaZ<(ZWP$ zPCUU_@h+8s&^Yd+_rZTw)AG0LY$LAKzH&H2%EcuwvoOC-I2V)_W7J50f6se=2s4n( zN#Dgw&-gg)tbVxIiP0slC_9md|K?^rV=Ev2(b?wUb5^bhlQ5)Y)G>M_6!1;tK>+$g zP#gQYW+*&h=W;f>#Y+yEHvH@&@L56HA@xXZ0b-6@&EZG>UYXyd_XbKagG%JU%)QmV z%dw&NU~?E;E#V8{Y|<~i=8jq|&gA`tw$WzG5hGs!K3#l&Fr9tiZ@wtUPYxd=0)FhvCC|Dw*{gxN=nE3`I<1%-FA+o%Myv#{tT;?D0VXse0YHBFQRplBSB zp%&Wf%g1cGAS*c(;7$S>h2FJSJ83U;IuE-v6_``{^S+PX2W&x7)~%3xfCFR4()a03 zd7`POycZo0v}f7gidZx0wDV3ax`)n*5}3-GCRn_*to7D~*()-)`>}B&1#}s{OtfLZ zv`|1ubbP@3=oRx~H!Qnc?FXh?;Uw?LMAXL&+Ew^>rNK1lOKglVX;X{ojb&y>cK>_u1H2;ninHc5b%ot~DR7WsaHzLX9vxUa;&k9`M`pfvN z^Za{er3t%{^o~b=7^c~OKXUA-Roh(tKpn31(;4=kXwD@4y>xYpx4(9!DSHiu;%_K` z|0ekAOH2fwP&6QSS4Uuz8~euw;*C(!F2%|ntiEvH3{hN#AcLk8h}0DN&8}0kSD|s= z;Ib~rwv61aocBY-CSUGRkr?@Fh5&bqC`RFT0eyVmXS;`8+D`ui!^6H_V3h0_ zYeJ$cD0?$}2jw^7ZWVn35>OQekc}dkaS?~5&lZQ?qm5>^vsX{`EQZsxvi&KgmbIo0 zj@X>b9oMeX{3c!=kH|BLqzT3^v(R|E1db^P6-f4!y(iklTdWe*V>C8{(Fk^8CE*Pu%&ilWJa zPhED4U~+$Iw$bjcTW|gt{JmCP&itT)r`5kii@Xs6Sgdg zKnq{2USzx!p-CJ!sjjo2p_(66vY5YXm%3S!9YYkRJVHuoNx`-DahhTYm0o@5Tfx(t zReIJ=Hxs}mxkpA>Qh-cMnU7hak8y25t@qvEZli+h!^v_bHJJR>50cVAn2T1uvfI1# zyRY@#Io$;FjN1S_Vmk&A9IjhhnEw7e2CVhwK;4N?&7F$2@gwxD(1{lY!bK4G!ENvJ zdj>~sJE#;`1tpzgZY)0PzK4EQbb3zRHqkO*T9C@Dy?@1!xX45~FUQhCexHPkb$+Vl z@mhf{WhB3FBGD^noF>A#(Zqd55<;^dOq#nWZBP1eSJ|x*Gc(eq1m}G%&p+tGZI-40 zenms>%O+(7)A1%f*BZ}dc1H}w!Uh_NYjMpN3A_i;XG?pM0{ zF^1;hb-d6V+UwfJ%|n*QhevI@#~(Lg+}X3Mhl4)!uOG{(n*C;CbwAFT4HglkP$MPb~~9LGWr`{PwQNs&g#oXm|=&)}EEMW5p0CZ)_weIoq3Xi|W5 z$qc01g9^B;bOcI!v86u>TBcRJVXDyZt?A%JO=Nk1xOPSEd8e-IhRL7K$P6#fAfdn- zRQP}3se}UC^SuMs2FjL&ur|}wQXwL*Zxv4gXXJ}|8_D*rkp8y z*&sjLGu;7?cL}2!0ABIoV2Pgfk@Vf=!6o&#D^uT6D+j~DI_zNTQ|lSs!U7wUBgB_b3f-y zIlP9{%;x;!v^;s&tW#oYt9QQDfso%$V$r-rfrqPT*+t1~>AtcRVhwG+e9m$@X+-@6 zY4=v_g<1R=H%#Kzg4*9Z#d+BzMH1CvYO{pn|%Evc%s(U@n3Es$R z95|*`Ozz>O)s(c)1^!lioxa~`K7c{AyOSUXRBltnb5D!h)EX37w#hK%NXbL(*2={7}7Qg z@d1djq+%Vp!M~%uJ8a3 zzs_o23rOrcz{H1eTDM^?4e@La)&6{*i;#L|S@qbC;f(31*uq0%6g53r3!qT@vUP4? zTWV?2a)%Q_TWI3UO8(wB8q2fW@ysj2ygEB9OnwsMZ^dcA)#l_k&0`iD}~y#ha! zIV~IJRdHIt_L(rS-6x0!ubbMJ@^&>1s2Nz$4yqfnxyz34?gn=8;8i z+CujyUxTLyNe7~r?uAaixD2KiB-!HeaQ!u*tq%TA5#H67PykH;+#*0sA8X8ec_#Es zs!<&|xFMcdez-zlIw*O6ny9iv+1~tk8n7IciS7_Bt~l$IBKNjd;?V!G=!pY6388`p zjO;}n-T)f}ITm8lf~o5HItfI!`rGIwQjJEjeQ?ghy?Lpc7 zOPyJ@Q?k0c%HnCUxb8GSe$S*EPD$sg#6pA^v3rx?l?(w_!N|mrwqTd}yfFH6w4yxS z?omd(yl(E$B4;sDQSZ{7=T_5nxsmxFRc@*t#h8Df!BHHb)T%7Q<}%Py;d;>wpN_ODiK2?lwXpF7?><(aZez zq+8-=n2Do-LC)JdhfjtBYH}f%R7dbgv;<4}hK2NfoW3=q0{eXWeBs5*b94yW884Mr zM)kJ+EG0$O2u?>#|Ht_0}l*r+)m!rDTA zr`jt#t-kA#9x8O0@mp=M{;-X*J z?~*jl)-S98h7!kTA@!tv8zJ$LMB^SP+tY}9Jn`t)=%n>&>hc)qX=Yj2+C&Z;8o7>Vtd7)*TocDwW`1xHVJ z?-frtE{U#1c`C`pa4clfFr$5R2P5&zw5d^8S^tIl# z{fcD;8zJ6Dk4_MnWYn$1?RLw@E$19{es;E8>UGAKqUqu2xKkgohv`$#y_wm^ZCQ>b z$71u3R%!QWPgfKJofB6NCX%%S{J=8g|}W80HoI&2oeY?3HlX05$yXHYDoI8 zs<67>t5Cb>)2rgG`5I}ryv)t)A7Y%azEYrDBV0YdtWp$wFAP=#^@n&T^wWdE?n1%dai8`F^=v1&nKfZjoG-JoFw_Z+uV(9$a0hlx zuNQaiDNv?bqBn|=r<|_*;RgCtyfOU}SkuajP7Ud~&10ZK?)9@jn()IV4Kf2!qwf1rd}83KBs zAGqyH&W9h58qdf4Th;}rn|}*-{^KlEKU?^=%qLb&+JSL=WeU@#jJAM z#2(KcaVrIH-Qb$y3NX+_%7~IL)49OX%P;RJIQXWN+50fHRm@Mb2fc!iA3D@9BCyEAyqhLD!U6P?s;nZca}9lz2=KX=e=%)Mnh zrK29w`qkR6R#HcCS@*`A>h<*^+v|KZG6?e4K>BkE9xUvZvyk@UeYlDz4ON+E+U9r_ z!ms(FhbYebX#P~9lI}8Le@fHar~+tb@mk6~JxixWAJ7o~dgcGF{{M8_|MP+42E_zQ zrJAL6V?NyD<`(kC>=qgpm&;8@7;|m1?5~dr04x5*E6}gKzQBg@Lmu6A+`q(E#Gh|( zeu%#mtklq{?>h6`bvFiWX(><0`sO3)TCy~TE*e$USma21DiFFUWaG8daU|E;?MHW@ zvKU6AYHFOaQ5%B4bdm>UA%z7UgkVH+%-$zg6UCH+c;}WSPqH6*1&y*pr)526u1aen zwXe3Vxu6?>q)2TKwsp` zZl7zh!d2@M0>3z{hXee*At$~OzKG@%o?owR&u27%{`c_yKlP+bL2|^wj4JykB8pbN z+NsCGk2C^b3hE7v-|ZSG%HB@@E7 zB8Ki%ZtMVvg@^?O`<9}8Ji5hpJ`c9NSfQVXTp^Xb46LmFIQ>lLTT2Z6$B|4U_tKOA zw<3d61&iDGGrsS8=i^m}0XGS%NHzbr;AGDg&vhV%EpkO(Mwr=U^Dkhb&<*Cbz_;e54iqKVxdebscSk4^&;Sp7o1FA@%bkcXAdt~2x5qq)=f!2bu;8Ij{vo)L4Ro{kKrK z^U&I`x-@h*71M5cD%qKUB>mkb0{Zubww2fNq|+Z5U!Vo%g?1MsT&i+0SJH}*DPw^5 z<>XCZ+w#-EXh#zxjiB9&w!?N@4}2qz!`wPQ`cCjOGB_TkhG_vN;=Ad20!B{$tq18| zk^r+<3hkEj$I)q9<`4^$cFaOf6?b`QaBf2y{GZ;YLFGFo(P z)VyY4|3afLOFUED)_MIUmT_*#Q(oLd=nC|cHyqf3kW~7P#ins#Q6QLvn00b@DESPv zCenPQ67c@=;mmWn#df8d)pYm>B8q)*ACaV*yFbte>3JYLG7`x+&wwKrqN ze+DaC6pP+9mIq;v$zZQroBQaNaKh`cQ;*0{q}^Sd+)`5Rw%n{Wy{_K##v^4gp^x^~ z1=~0`h+5=WB)>u<2pJj5Dm966a9b^u?Gv=I%)1%pN3uzKnt9qDJg zlUq=9aB%dM!(^ItOG^z_Eb(X^?sL_PKigp^$@s*-fQUJYw)g>*AwYWUaa<1f>j>NT zGv+nTP6ER&C%IH{qiWOwEi#K|&N?CsU+#s{Z7L4$Tx2y^g-WYu*^0XzybTl1Xgk}t zY1zB9i$8DA7vR4pI5@ak?3{k{`I|c#h60+Yfu)r?SFfnAZzL!u$Wrj(744q8W;6K+ z0;N0PB2R-MGQYBA*+aI$jUB&dT1=9>8}i8&{v1vze9N6lBlNT(byx}6et~}bQ2jXU zzr=DX32U@dlVB>6_mYHv4U*Dv*y(2TM{JF$+NoN)QVi`Gc-|R%Hnii8edWN#MC=c` zTK@xu(t@dPK2^DB2z``?#i@jWt6H-Cjc8cPaQ+6XVQ!u4CEP-YY+gb({K1Nic#!^* zf4gcMeGcRKBK_upAt4YdvBV`jCo09k!l}|1$%CWI0^+my$we$I(iwEO%syUm>Yv&F z($o_zn!%DCJ5z?fP6?0rui);VF^6h=8`V)7iKk~?Cr*GanYS^sceI}o>ZIz;Gc=CA zB8v9td8uT@Ulk8VoX#BU3rrMWmbuYAFGWv-1`;(12C+Eqy7R((H4b;HQMd1`*LN&+JMO+QZj~$MUpp8(IU+i$gDUmI$q7h&621*dKk&#)RpeZY_RSYI8r0su49A1IJ z`hrC(G>+CI3r(#A`!R%37~Y9KZ*}|B9@wW^7-CW6amq`mx$a>x3h2W0 zkB#}N4|*?e$HvjlG6wZ{<(2dq4-ls9h=vrFga&&=w+(3tJ33!HWnLW0nVzSYsDm6b z$exYL8$hlw`V5!}e1WK&vl=6^dT)g;RvKfo$xCXOYF=Kwp0V@0E+(cK*9USo*8}Y4(3SnYX_&DZD z&7b$K6nkmulsNxPyMhKxl49(Y&@*)H*m377E;!hI`ec*w;(oTAW+4i~-APluD3CXt zj3#U*Oehrk|M)M)yZuXQN`;s+I;BBfH-G2f%ImM9f;j2m8ky@4Ze6LzOhO+FWE5;62+MS!nx>+vL`6oTv68H zaA`um1U)?yMKK;`^-&5&k}1kI29HCn8O{pYv~L3-Pq4aWdy85-u`9GF;la zY`I6&3)mnTSAA>M+c6yEz)Tvgqb&;?&+TCA$Bvn;sU8bpK}HZq!$?+Tr~$Hsbn$)X3z4b zzlKM|^vT*5yV9Kz}K2XcF>Z5@VmuYAP?n2BR<{umTF3o0~rg{O7>H8tx=qZjL3Xj80Ae?^W2 zeAWz~GAm!K+rPiYjf?!0l-6p;60bo$E5vd<*)}tFYpLM5@2wePyz`YPI6 zn?ZMt3X38)p0{fW)pikQT#R63RICFJ{#K-`@FN#SS_153Hcj8;Nw3&TwuUP+#?HDhBpamadqb|5xIGA z6Jw$dxK@xCpY-fWR#QWxq(3L)6QqW;fvQq;{T6}+8?cZV3K8dD%-*a|^ZuX%Ms#Ju zFyT$DURmu8O!o0~T5FST4LOJ-x+G}+{6M52-Sxfxe1`v7`eA5Z_T;Qk#eL1PM9_R} z3ENODOQ z`w?XgqZRn4S3mN>%9`=Q1pRG4kG=#p2|A)Ez8U5`uht1^9`5s{6t(-YXD03z?upN` ziQV@rIXTxz}SAw+`YLD_wuq`}Mmxzc6B$z*V6- zKTWBdm?Rh8zh2N;X3`g@Ex`=yr#VATq-GFFrLTn8N=BRzuK!N9 zgw8x>xum*2lC0o9%&`L4_j1fYvy>$A5vyfCn zM{gY)OzpRQDttWkUrM0W+<$wavXm)FXDJ{aFKf^h{{onHCx~otMYbmzvuJh=0+ybi zVakhj{I+amK2&F7vtcn(zY_=?ESwa(^Tc4RFxtyOCT=qyw83%-Y3#O)efCU#&%E-j zt=Cq9@^4TNjm`d?T2XaMZ$C3f#S(3xZ}!n;v}f@9ALN-tUeVp)-it?SH8!}agnd!# z%?9MhsHVft_Uug#bzqKs;<0A?{=L8C{`|ZpR1cV=(>u0nWQ(NRpJ$pRbGi%%H)M?% z(@0=jsd5z8xBe%FApk3vy1I&36r%$!S3TIQ55RAsb#0FsiYc~gh8dd2jVf>Z89v4L5>c@ zKT$s^T$wn5#g~aaPsPz$rj&lASf|a;qbZdn^;T(fDsP?wSh~e}F(f>1qP1Fc#P{lb zDRd(ijJHF4ke?Hexy$YcHqjdA*%i{-yS*Mi8^`&VO+1d3 z4VM^X6FodL?MUb9@T&F9Dd{13cOn;`5zDzJe)Q9LY}Ri-g3cqP zx!P&FTZM$C-qrY{!*DcX0uzCBrRg-S1TCz>01ExzpvT-db>S!NC>Zc|BrW`8_l!$DfYFz<* z_XEC67u+(lR(>Dcx$aftC5UK56|ugmpi^+iOi`=Gfi|#Nk}YCXh0SX9ATJx*>0{xmU~%w>KE;?6@8DslYLjQM z?T@w8Hf#d}WRwXf{C)*BYL=bcs-7nbcae|-e`!=q(Lai?lG2Adx z3hMeQY19@KJ0=y`3>7)bHeds(FoF$Yp+x@oZ*4=n7F*-+dpcZ<6pWfRkHD9h&mI=< zxNzhvGUtp(eAvxN5KZ7d_{{-Na7^=WSx4d-v7V+)ZGAlA4L!S5SZfLj9UdzdM!Zid zhZ^2F3)R&giV*KFl_OPp2cENVKf5-BXAwl_`rDw!&wy30hKqu+ul>7MaP9k_IWxQ6 z&LMA(tx-H}+>6=M)y6S&A>RhiQU9<0yd8s{uZwes1`UZjvH3&v!;daBH+Y(erAr`m zv}atrosKmIT3S0@N)*KkVaYz{wS*LQKjxT7`?{&unl5%k<>Au@j0k!ktQ(fq9|qU* zaSG<_=B7`oNGa^{4R?`(j`1R%JG^ST>P1Wy0ft4bu}&uFf2!l-r@)vj!_DqIwUbdp zOt8&!+8^j{?W|u6%0XS6sti21-lTG+4CPL@TQ4$Qyk$1Q)^YBg%>!@xfbl;iu`yIU z#O@R1Zd!dd&;aDu~}4$eeg&?BZ7acW5O9V&df%4iV!*JUjHq!lUk+N>}1(_ zjEU_uRyxJYT;~1VjE?}0ix~EVx+LM?${hdna~iQUZT|(H#t=Y?9-nt*#-00_Z=}zu zu1?U!6KYxZcGO%v+bq`2jLIW=mJfTSAca=I@pN$4k(AmI>G*^L6hl;;11fbZ>T>p` zy!Y_iF?>#eRqP3*A;(O)-qVikhgD^~Gd>zAiXStwR$PZe_hLL23Z59+G5zbyQg>_* zvDN8a^cU3<)h`??9DV^gi`JFYXg8ysL{>faMnv(0^@LY_c@ct|_1=?F2Fh~wmeNN^3-{{>c zeb0d=X$}uKXbh9$r*g7*L zAA9n}n7|?`Fgm`ksHCwK$sC5h+TO2**D;iv>7ymT;-}JXeq-eM=-38YIqiEq8`nFj z9|knYHrW$31OQ?sOesQFQkor+%&qk8k8Vz!t=Bue?g&@8Ar^Fccv{^#+E_g>q=;E< zhWD;|Y@;^Cy5Lr1A^sW(R*mDQ5b)F#fv zR|Im@>@=C?P$Z1;s|MB*gVQqEYx-g}sSPP|Sky5;PahKx7A-J|^(G(|mixp^bDHfdIPH`zt zaCdhIK>`Hl`;|KbR0NYU|!o5`e7xDMZvd^}{*rJ{_E3m?~JvM5{b=^$=}c zuC)pbG_A_r5WPMvY)H1W7;nUzk{b<{`YLvLO#TXMHW7l-RF#68q9FG#_yxT$$<>En zS(*pi?@|=0=HDm)ovHU_mc|;x6BA)AMs9_#FUHGT^ZcYh$iylB?8r(iO!4fapyh4_ zNQB0+p!Oge11rujKBHbEoA1ob2|85mN%WcMTg(bocGo1S=*Ozkl zO9lM@1=aI&488un25Q$7Elk)o8rrIGG~~a2#6fHirG9US@H3pMq5j_l10F4NC3*}5KP@o>;4 zyJBXrTJmwCfOpk*Nq$k(iwszfOPI}?JIo^Q`PS}xMPK_bhOpZAqNBk!cBfr?;NA!2 znp^Kon>@-*E2uPHCvd54ZEy1*j=FWldTK24{5F4t7Rmk47vYBe+1&F8fmye|yIVn_ zoHqc_(T36Dx3zx=Ka@nvM1RM7Ix_U(vs}_X5G-NI^+OS5=W%f!OKThS-R^JD)c^eQ zINs}^EA*R^Xl!Vxd?{(!4>*`9XQFssR|IvZL{sPDswOb%dy!_;>fCWzxo_&7*9Y)` zFZLHod>?TqLsK6ca}Ym8P1O1R6aeAHDhnnTFn>StDs?Ur9gRg)v~_w{e_*(~Oc&wB zC!xkbPcIpZj+VbG;3DRyhC>8bhOfFB)1( z*FaMFWV77R2mtjKUEioZLTh*Xzj}mL(@Kt7+{JBcpBl%f(&E_i^KfVnMO|Du=PRB4 zG3j8qo1K2FPK>go?FPPqwUUEBToN<#n@J7Ec2O%Cwr92*X#^3S_={tV>M+Sa3mF{G z@V^Y!FZ#ZpY#|VN>2Qv{SJj}FG(^?pqO&Lqz6^X@v0SlKs14>!6IeqgI|+Qb7J125 zZ|twuH%sygJBRc;T&^pfwhuUvWFkA?@J}%G5bs3X~ffB>Crp% zO=d|@0Za<2^LV?_p~ZR1G#6;yF!e4zen)BCm)vTojLZ+!uCVQ$HmL1N_cc< zhgvKq4@DQ*+92serQ7+X&S-}iw5I{07;i^*pGWLGa~X|joz6^Dk%JauGMt}uKxZ$q6~g*_E&D3irvmBoXe7bt@uAie@?b=}A6(k0wq?Z_$U7dZK?MZ`!JF2U%HZbX457 zw#O{!Z}vZj-3>qc;j>9W>j&E!=7h&Xo8qwP!BGx#-x6r z>uGNfIBb73jqV(~UNUF&R@4m@2BkysDycBk$sad)_<8u;7pW{@Uf|qj<)8HYq?n7udiz{LqRs1k zztH6;3eDFyHk2exalZuVON5~6>2FBe9JG<_Stz4@gbEk`Q{F;k1qf*8xc&-c7qd~B z|Io%D{}e07+gE6U;rb&ds#%G}umRPl4(MY!y7B09inmpX%;La}2ogu)~o!A2pd zwR#xo%ih1XwJM%gqUC$p2MFl6rJ%iR`V)3?cc8fKEb|C&!z`l&%lX%Dw~={*B?-$E zOpd0_wU0py(P+X{K2QDriZWXavq#DxL}wJ)fJe(ECpQ<^^3?nqSvr@|+E?s7ghb|h`}&0dJP z5or(iyzNV!mK;t$&nso+d|6Cvt92Q3vtMq$9;+F3P8(D)6T!$ktM0?3*U9NrG@he3 z^Oq6@+Hus#Fm&1=C;1b_6@4Ue&$*?cRwgehVng4Zv^!|b*nVP#fJecsB~kd=UG=ep zz##%U@vokuGO<@~7I;!mj3;+?rq)0oydwwO8}iB$t!M0iymNe}tt`R0&xd+|nZ>fF z&{ply?r?FabXiAe^=a=9yaIUb)~n$>3r7>tAbo*PMgooY&w4e|Fi(lppFIRk-ZHh> zZ@Rpj%~QbdaGmbKa0%gf(ZlfJK$)k!jB@;ZNniqAeAI+}HkzU}VrZCj_DpSn`?I)h z(>u843G0M=)GWwW#Xoc=3BCNLdG&@#jESr8y^{~&0RkCx$VfGuK|$*sBB$ zu8wnOnTFoee?MWXx>#S&syL5)=_Nn5rPF3)!@!J{x-CHX)OaUt|N4&hy4Fi&ajrPm z6KxnBgriR8H`OXVO(dMvN!UU0TK(03of4yb+oZ+od<71@Fk;Kj4LPe3Al292xP`ab zPT3Bap*f%Kj^&X*jbx|=E6$Hqu2_J2Xg)Zvgp2;kSiYTMT#`}?l@{<;#}n~z+j)*6 zblOE)d!z;pr;~$!7{swg7U#W;h*E8v6`$ea6rmx7guHm6z4OJn(~c^=YkOx@>7;4C z+Sh_hJsP@$)P_8Ddv$W#V6oX{HmiEO3c!%vhQbZ|{e_q(&S4@C$9oVm(({L)IdVMihd$Np946p(ZHkzg5Q>do)RlTZF4myZW= z79*>t);sAKkD8jDYer_DB0_}KEJfZ9Jvt>qd)E^`Y&RBiut6bPN%cMd5eT(oV;Kr> z(a5X-J^{wXVy#v(Qsf^6fW);werXL$fpkX{1#R``_9$noH7wdf;b}2lv~GL z@VUe$CkS;-8azmCJi2~nUy4uMZ4_V{e@C=}ls}N`SNxoT>3Ls9AcN}_r)RB!(UTcBuo9&z}P!(ZJhV$_3>*y%6rB4Z<$`v1U5rX zj!)suK83qgLSg?h0xSu&wC@nAQU{XPzQ$HNDxa3QdZQ|-su*3iPLD-Ilj)4o<>D41 zIb8||cF&vgaGhK01w;bJ`y|hyt#_=f8|k6nj)s zk>J~%^wzeC(R?V3MXku}o|acQs7=AXOC6J)A#o~;{Z{d@@WU0xA@fzjQeMt6%+ibY z$Y8PtG|)1HTVDFhGU7moD?l{Q1|@G|gkFFb`6_^2esk9X%=jfL8EdFSEC4O@9SRQO z7%&Uyr*gp7yNOSXeofV0uf;>KP=Z{U;!qr9;bJB1?pM0Gg_c0Y9xUZ)w?B=bi1^16 z(==I(D@Ii@N$|LZ`--wcqt9Hallg~Obgd55)-G+@tS7!Q&G#gmMZ8k8;{6i>F6ypK%q5J(Oq_#!!9wl_{nx#4P62gzZ^b}`$J zlW+w^!Mcmv*m~FQn;G}t=9mqj7grO}(i`7eXq#JM34`2JbAFuKSVFtTIW971Hb=kq z9}oxi8AUOWbZnve_psU@y%W$|&m5an29<-@Ac`QKmlD^+jf4>VNA|wtFB3n$ZrSQJSIz7D4h9!{ z1b%e#?(SDMEBEy`Icp*3tSlIJslP!>Xi2RLFUUBaIn7~}u&7Eajy%w=zSGs!3+GS{ zNkf0jz~O5W)=JcEsg$(k=FNW1HtBQtxI2)9V=` zW6#*(&+U#V_+6df8fQzygcuE57M;HK?09G`9Vv&%dnAC(9Q+l$)hxG36yFk52W%2) z7`)+0?42oEu#sC*byeH7t2uv`2#(ZE9D$i2&ZKe+!^{Z|^G?PmFK(lsBZ=_CMR{xt z9v;506DG>MBy52l!NbDoY-}wL*j7mo@2Vk{DvFN=9IL=(JBKs9e<`KZ4`7abZw`XRjpi&Y85QSD)QFD0x0MAxA`?B50=HAVo(?ed7kgJ-J z^czSfFP=C^#y2WX;d*@97yMxlRyPe0rjDB2sKeJoMFMr_cmT6cP zBe$W7SBCnwhrC7YMT4c%8p+!b#u!e6h@!dZnO_s zIM`mS1@c5v$)hUSZ)Tj6paQx19G18YQVG7qpU#Z>G=qMKc5^4NklNF&#DRt1L-+b) z4iljZr$L7G!Oy!(r4>ZLw{6OMLbUOp`#mi4@7@a%T+KJqFe?zye;mUh*Zu4?kNjFEvK=nECeS)~;j=1hc&?S>;580qq4^Q+!^ zzO}%OsEm|JrZsIAqz|rW5v&S)wWr%~>s7Si+!@T)T~x0n*T;iZERe(}6etqd%UBgJ z^>i)m#i{4q5@@HoQEd%s3>a7K$1n(LX6U#H7nmHU0w_GjlXv1HBk7Hcv&~T4`gpP0 zSd_F)k;Z{~xlH*w!7B@z7u*)AcN{s6Q(OX>7ow^T&Z5*aa+DRVA3JNjTRK#Kzl?eX z2qEMVC_kCvPs=gbODx=T2)exp(%Qgg5RGM4t5msLlu9`_gR*UcJsZO#98RZ?6EFkD z@3>W4%FC*s1Xi3mgdp}Z7K@b#X}8PBDCqsN6*a86T6bAt8Pk-HVGWGmT|9WyY=D2AISdmv?~O zj#x;cHO$G*Z>}X!a+YRCXpq?NUMw#f9$ zqeQeyi=*pcw@~rH#)*cks;}$5FzCIOf`&i8-3shBEQ0fQIrTHa_>o{=eO)GZY)jsm#ItXG=yX98;B^aptb1_ z^YkWDlC-8k#^VhPHWMUrMN5c>E+;kJIEen{BfUjC+R1cj1N(!B z-(sl^APY_k!AH6N{OqF7Y>B>>&;{K1q0HE0xy5j{(b2fk;$Sn^MCkl&_Qmwuh}BFw zp*p^(=gA8-BQ@51@dBIi%Qv9j!pg@!ZM!*DFDD66_qD>O{6(Q`^qR9y8FaHQyPU}U z;X?zmVdxy0;lJ&k#jWs4b2%{)3N7R3#{`R?SJp03Qz(gv{`S4;6LKj_7o#AgS~6c0 zEXr?cxm)gy+FO1a9M>}Iby%uEd447OI`WVd$kGp3+4dPcW=+ThM+1JeU!NKYCoA_@ z`5y*>J2c+QJ=be-G~SZ7eNbXdP~@pr%W{Mts`yG!zlQU{6Z z&Cx%0YWk*Gh5Mx`!gZ+i(`b1U?_{>%kj`Q>iPMLX?U`B<5+EgCm0nx3+MSFlm((R< z$Jf{>_th&m!{5zcE{|iSLn#j?H8>31PA!%b*?oO*+#wgK1uaZG6cntOp?v^|yM)i% z7dU{pSpFff3dZz6Z`2&+@SB*=MydP~x0f3&eF{5IpWh~OhM9@`FFb=cj_EL?#WSsHa6OgZ zwyr1VtJ%ojMD4Ir`7@%Z%l)B33mTf~xNr0&1!li7&jZuY8Q&2{RC8Vsc@)|7ang0? zJl$c_>{6F(KT#Yy*Vgm%czY)?TD|=$K|iZWYm2> zpH7AM-~*$k7gxVFEs+AfM_t%wIfIry7>Bgm$q3xtk;e9kdALy>rn05~mR-=O^&(lb zW2j-`NorinV8c;PW*R|a&}>b{X-OgnZA4Zyp#4e14ZsK!SqP=dQx`9Sl_>E^M6go(dvQmN&H&1WL1 z@cw9kBu`>wlwQet?z@)8&@O%JqNh7T=c09kF9n&SU~l12DDC{fGG*&UMysrn$zn*i zz&iT3&gzg+IQObWlIGCWV$)!R2`=RUKLk20``ftbmyCA7C0^31k9^|(TwGf`w9D2l{~8v7SnCPZ`N_#6L?m?Nr4q0=i6meB z+SW{l?TU+?f|jNPwvlC^oE+mi>f#A8=Ao}BYRrSXRN4nj_uKz0kCfqk{x9Z-ru;A9 z^$2a^uR+kQpXOw0E%j~ZPb$6T6KWW{N*XZGwd>R!s~WES^&M}@z7>(@MS4e7%^ucN zn)fr65C&3!93v%~o4*XM2qrn9VOcm%b*on-%gi-ZeWL zJ9&^6U>Ye%0vK7+vFK>=Iodnco!4L|)=k(0tsS-vDQ_m*xT%Ui%;b;@Tm{}-c|3T{ z+7ZwS6B611tCtd!$dK7{wec=gMcQUD*S%)kK?&Igzxu|-r^FB(&`y4UcG6iyeoV&+-uG)6lo09@NJlKxen-MF~mzic3{%OGn z^B3*uoAb)!lb~a$yl}70F*&|M|~C zbi+((g|zq=Z5@pkYgPKr$;#bqJaOjOOxfYIV}d@P@WqqKm-*CUIFA7p2L?EjizS1}SopoM4SSAz4G(7rxT4kmULP|$!A{dncb zxc~2MQ}0WkW0%qb9Y&0svdcg9_g6?#QCQ&%VJ9B`H{Hj@#jK4=o%0tt9O6a3Yy+%D4V(G5G z@CMo`sXwtir32DsHwHu$qj) zT`*ocDr_YlUzC0g>#vJ?yf2%qo@GvK87eG6KN)7=bs&-C&?#2(Y!^%}77chdH3oGw zxg?ZQ#v4xC60k1$v;|!er7!rJ(!_z%mkXL)J=l;d-5Y9 zdo^gZU3qd7LJDh{oTvA4^}AIInj?W&bDvB#mYZZ$$4U~up2WtTXeki4;f^alu0Lwx z-`IqVGfYlr`iUr;H6>SLf0~8_w^45r4Gq(GnTq$|?2&)2i!o7K5C?WHv9u>;ix~I%P<>@yga6}~ET|#7fNm#I zYYI;mNF4LztbX$;PLkT38?(3G*OP+N z-2(F$!W+gT+9E2YREm=-$vOm&-iP_8@3>qt?BCqMumMrj@}}9^v)N48w?z~j=?hKp z{%MDK(Zj{-0uKRcRZ$B5L_i6#kIlpnKVhT^wtm_tnI@v8fjG+vHB=E`XoQ)EhbMHO z!5hRg*=P)MGtZhX@a<6D}hL}}5jq>dbALYhPK=Z5!|5iie&REn!bbUDRu9J!dMII~w% zQE%{xP+r-*!EgEjB(;xwRrhJ_wVV~hzEWNScSYtc>ib7RdCQ_D3$YB|9p+JW`n4J( zFWP3zdFizZX&}7snHKOYPN=5ob_PD^;;n(gts`= zsnheO@ky0ZVn%J)VbKsCi2?f zoQ|bq(jZdw__Dl(_c4X?zQ$WqjEdo^Y#YqEm7A`NpOwg5G>go27O*dkNDjS$@InV8 zXmC}#*X#q2hNNaXQsZGiUR;v&G5_SQ3llW&8OhuI9yj(CMHj*3>`H3lBKq;LSpUa3pyVC_;lJRV%%Mz6fo7M%?j(v(tzX3Ma9p)Ha=5&$? zus^DW0miphz-bEcmBvGjUa7*&rm_HAyanfnI)UWH-`c(ud%NmGn^nlvBL`3BEiWAe zyL}#)T8F!DtVS^T1)%W&M-!0k@9nzV^22!L6oMx=4UJ(E^eXfGVo{X(T`ksK;`Z=8 zRNlC>sFU($ck^giL@S7o-uXKAajj$cgtQXF8bT{wr9nrPa(iHI_q zjq^J8T7lO$$u*u|@3fIJ8E!H{S(@>Gnoz7VLK|NE(FIGHb!_ud8@O(oieK{Q$Nnw` z@&Sv?4Y2c5NXT30i@{9Jsd9I#rw&0~$hOkE$#LexcHdGspu}NVbjfS2(}lnHxVK2! zxXLdj8doUq=^~X3X^!*}Ii|3ae$wlp2JLh+1tQL90sB-Zj&R-8$kZ&(A{A0`V=@4! zIYa4jksO$Siu|s+PsPb0#xrpaYX_}}n^$=9kBS9bRI0z7d1mU{1HMF1Zghf9HEsbB z)qF#KU!?T#60WcP_Rc{znG6`j!+Ran=TKl~;b$C^>Rcxafpq=~I>YA%?T7EGv*3z* zSoa3Y0ds9dtLN`Hg(v4fc~Q^^s3A8;G1tT+0cqN8f{3U=#*%Mp``ay}dK1{Rb&gs? z5u~gUb;kO#5*V*jlagNo27Y^#ve2J*UR2zW%1j-wG52dhMEFg};@&v#$!$7i2_S$$ zR+N4{kX>qHMgX5j23vEyhCsW+8; zskLBvo72@6`ouULX>B**z2RF`qQ;iFWCiLmJ9vX`#0?EB176UWJT)oc5pjbG*DA%! zs{{0ww%MI%<_#L4M|OI3n{=!MmBIaHdY^;jFd?h!rjHs6;2tFQ3YEJ6XUjz~B26v~ z^nz7tA9NuGlX9!p{;U1{j$V?(9SLKf9MaH@L4vWj&xE?MbYF8c#{#Cg$a$5!F}~NJ zr-^pL!Kj-KmX0TV@M~ydFv;Hn_@-0`DA|7BXEZi;JD6n>D*q}=9kW0-#cH06IZb(g zkX})*42E>-u^_l{L9)*(oJ@U1YEtrmNBh~0{Q^2G;+GoGqEF+6-U*zX-v=uxtn}mN z%g4r?DGz6>6Tl|3L$$QJD~oX2x_}Kezn0Uz+SXC0@2Luq_V8ujTkD%@mkbMM+`EuR z4K&)9eHf7W=?|`mt+G*Tt`K3j&=hSt&T*xS$Lh7&%>36F6ePcjn!gjsl;spvbV>os zaK2EPexb|te--SPB8%3JV1&Jz#8Q7bWHB%qJpR09eFIF+W}#3ZPTwLflC!Wq`dx~I=KIJ0C-ksxXHCnL?pu&7I$@e+fdwtvUW!his@m&b>l?H-##^cBC@ zQ{C;a5#wep8+a))2p3dG;r~~u|L^xjo6ufNyFN@>`6lx|gtC*RQM=Wb_mU(n5#DVN zf*&{FVG0vfbH(F@c7tLr*QK{ZnJ4mp;FGB#U5QwXRQGHSf@}L)Qw=``uHOq&wiX9& zg18I~cJ)^gzFRxbuC9Kp|E_&x{aBpQ-=gw!ldU%flv&AKN#n7GqrxLeuHf2dh8qox zu$2nyql_``uQ)LPE-tPcIXJ4Y1rI|5rQW(5E@s&*JPa7_0buZ@nZx0mcUK!X4aR9w zDNiTvYFL5-(V^ zUcEl{wqSnx;ra#j^bmXf$+OoqScRv#LlY+R)_e1PwOh?5LnDR6tU7OU$@=s@i{|aC zvs5fYT30T8qCU@@m%Cq`aX5b9M85ioei@`rBa7rI$TVVY;xKM@J)P{|YS2WT9Uo65 zmMxED%Ty0B2$`UiQ~#O}opP)M8&3AlM(|x8Uu>PW{*-;5Z$}^%Otgf+pan59|IIJ}&1VB-D%PBzeOZoN-l1|M)JH7itkom^#bjTU zTnidH&+s~6ZQ-FuLE>EGTs(6Yh0Ram8#DBQ-A`c0SEMKQw72(MI60 zfGV904GjIgNwY88m&%CCm1X%1MxyW>jOjADGE}ydKD+Aa(B}oqacbZxZ30_`XONnj zAKv8ROsYSp%C94K)~63l`IS+upi7{8Dm#W~YWV(yQx_KN4mR76)TXMhTkLRbw!9s= z+5s%_oo$oE7*2oCJMEfzWzS=xc~35WUa|uSM2I_>zD%WcrYM_LKWV$aZGD}vji15x zZ09V^%t1{X-azbSx~dQR9$FQYR)pmmD)_9Q8Bl&T`oS@~snYO%-Bo8ho+LE^oUCeb zguP~G$!F$7*`o`gl~hfbkr2;_p*^s$O9GBQynJalYvu1~0?`C&HL0d&s^o5SOI=>~Msw%xroeCXwVu5Yc7$nt(PTc>9%)u z05gg^e3mFoFQYY)n-`cd=kvdJcKG})q3^19@x8C@HD{Db#dqLgW_Kgv#0Els?{-N^ z%(^pMJJFx({+;rS?KNY5Rl=GsEoD;-$@HX2RB_fq98!SWbwOo}Fgj&|M4r>2ukKxJ zOZWiqGgpc{Tk&K>PSR()x%p#Ia*)4tP5I%NG?QU%=>xb4o&AD&z4D;^b zwDB)&Wf6Ttc^_L^-veX5W{=Kk5{S{}lo*uy(Qa_2ge_Jf9ZQNX!%s~!l6knSZQvNW z=u6^9&$kjObk2c#m(MU83tKt#ma~+9cw4ItLRle^0(}0x-wq};-K&s~*CDrs`rT^T$YvwOhb{@QL;~idAj@|Y8Amo5;9HrO&k7)W& zUXe zB4$QZeyVgo?{ZapBH0prPs#$)T^2Z^Bc_MEbvkj{8OeBcgJ{*kF zetrIfNcJCr5o)S>69%?iM;@VNzMakZSJCaCYs&x0-2StGMguursB-Y0&9*!u6xS1( z5-2iLLb{?s!IDZl=M&zsm>NF6eb$4VP>bvHz2!{5ra|3dvz1`qYrKrMg~Io3VX4<+ zVpIXAgcVogoD)9N_svym++pZg_YQ-2>yI-7((!(CRbtyyN#pD0Xa|?1G1_ zi3R>@WG8Ff`!ZW8h%$rrH*EagYbW)7j|QIBy6rE9F+cd}j;7&Y5oy~BpZ1Qq?1Hh- z2x|{S_TWwRVx97LzfVXTce2$9Tx?;N*s3kk7*bS!UB<{uF8_H*Ir%%+vuTxsU9eL3 zKw&>1Ul^G@GBcjmu5pe5#%}VCuE}GY&%nCoF#8MCWedVR=YZTF!Zp%?KvuGfGYAi+x~$* z&(XceN7>hYc(+;U`GewWuY*s-cJ{UuUxYoxSr#XRB#Ep*Qr7 z(km-sVie;ouQCTwO$;UdDi8IW><`>m0?S+KX>R|g%;5wdHQq9k(?ea_N75_HXnyUQf%{LujQZ6Y9% znCJCaw@#a4-SMj9{$}Oc~N40gD9)#WE+EJNfrmjQHr1E{AJpe_Y z1b#fZP>rM_Uc|B-zfKO$junQXN@LH!{G)?L zvnkluoG_$DqX0(yb5xfAE@&B(TS{+I_2t0Z&%KpHga@!NB|0|THnF7VJVf5g)h+BU zhWkpIODe7f-(EiqoQxMH%9S+pg}2Hz0Ao^LMUzfeY;$6B4cjD&1<^-}n(7Ex=sT(z zHwxgzze07}yo5MEmLeI5Z&K4Q6K8bKaVS7HoN?Rjk=LSOcHUoqz0~DRs=2j_g?&&Q zcSw}1 zzoD;y>>)%du{de{>@St0Iz1G1E-$zK30V;H7g^(27L6*J^EVl9X~<){AH|glnZ?C& z%DP_%x87B%sN6B7Hoa})e~u&0*C=bS;Ehhw&{8$Ftn2qa>uz^h?(aA1b?2@Gha*fE zhq$%#52tTpEe+JJ&NXgI2&%)xKE|NMbu$Z}YX_BQ$kKK2cZS)7_Y=$)ln~gD!I}*0u?5*^( zx;y|?L6V$&PA~x>H9+m;P&;}Njx7y-VDqIEK68}G?BL6S& z<-dehHh!vm+T5s?JhYTRrWc71ihL3f6R}p6zhQUtz1CHE4f^Kf#LeHZ+a=+z{x`~c zJzNVd0nkP%k4(G&aSo$eio###^yYqugZiVEg#jk5(p!*a4e5kSgpbs{f#BZn`J>19 zZQDCUTXg}BUqwzFh1=^4Bw7}JaClPR-C+F^{`wb^qqk{Df7S;E_Z4d7$nhcfMc!Co z{&fZOg`J{+e+@t#c(_ifYb9#Z+6H{5s>b zO>ASk^0z{=p!>6v-K*3TFZ{f}zGK`s>Iz)oZT1Bhqi@A0Ch8;!heR#6jq#KyBaP4| z<-BaGs;37O6IjLsLvi8(MAXz7_m4w)sSvnHy%28>G+RlIq@(nyjkB=MGu0fkEh5W> z#1%jCcez);+>BZS;0Lf`^$IsE<@9b-Q8+eQ(ZQzizCy+Q4%i!OAr1UT&>&x1E`D*)f$Eh=1JT z6AhSa7F%HQ^OPr^c37^p-;4D)0UjDrkn2`Xj0xm=+mavnZO+jq>UaP@AfNCh^73qG z!&-KbIkV1t$7AL@DpWi`v>Z;Rurw&}Y;}2(bg8=Fg^wJ)XC%1Xd2DRxleg~mgxLF! zIRAm}_5Ut*e>Z4a~{?K7CZ3~~W)C;I$OB&dqHoD%q)o+C0*SuGK ze}(-#o%9`DU(L`Hvm^s7kwI4wjVuL>sGOE=g!G)#P>M}emx%^kPm&guK;|}f_N-}@0 z!)7e%*FhiZSRK@upv9jlh1$c}O834+5~=)^044rMX|pE&e6_PPX;+pQ>GvnkPLBUa zqgOIq2p#YS62Nb#Q%))F?0Wbp0%N`rbfEjZnAG=1YFrYwOmCcH zVvb=xel=SJY!1;+*t@aQ?Q?&B|BqZs37=3@egxu8a!gFOkbpGxeVd+>+W8MiK+A;x zA51R(fp06Dvk&2o>Q%jOj3717-auAyPw{W8@qe*L)+a(#N!A_2wgP05O5ZB~#i#ts zYnj0JPW>4z-AXt9LK#jC_{F~wM@Kuo+1{*M3AfCDtkd>!4JVw#OnwHXeJeK`nZ5ab zvs6_`rtIPj@Ds1!hL!n;;meG+sAL+^Kvs(_5RJM+^BGVtdSCMK+WtW-Y^H;;repVF z)$>z3Wbep~jKf)Ch9H&xoNrLMr_MBoTF;*sBYk}$^NA`?IhTy}`xHgDYS+hWhVv;p z=u{~L-Kg8X|wi^#zjL4EZX?e87J!Pv!DFjh!&F;jmSUWBL!<8rIJd5W^0|K#uC zbPDSuWT{EL#o}2zR+#8T`}M21WnbkwN4S7RivP6Fza@yLd*#E$<;os@d)_m)=Iu54 zu0ZRzM9w&h-_1AJ=rMte?oQf^U7j=L9*w|P!%Y{EGiX4{4TB0(426r`Ag+6=P}7Yq zPz1r8)MaKj*NbrRGQwllGx|VLu3wbD@o)MRr#Oj}w%V+5}4XL_L3&bgaL* z)ymtU`-kv<0Lel(TmMBw6E5=aX^ISbl*hy*ro=;+eq;4#ohpa_&+-KYj4 z|Hgf;DM5j{m*BDPV|QBZ;+cgvcBIAAUBovxPh+1Yc}n%v)a2XFUJsRG2_XebF(PDt zgub%6%PZbnS{*4R#d2z^;8^q;cav4EsKIpOU-B#;Jy(n~g{6-M{E8w{$ETF;BA{nq zvov!K_jYsMgHBv%Qx)#NexFl4&*DD$TJ&z$tk^Wq(DRFc?Fzh1M(&%44rE^_e|fqK zId53V8lm!peUL!&M`+r&mm4~SG0zsBFvo=8^XyiNH2ro?hoP5q(*PAhf?nh-3e*lh z>x-!8mG#>F#cHQV$saRN*il@UTh&ljrP-E(p%DXcvg@^^df{A??tOGLRYs$&>|gJC zzsd02FU8V9Ur0Rp1;`yB*6Qq;8lShUGt)pPoMo@XKsl}V3!_K^~zwo-|KomyuquGnf40asv4qfGe+=)MjTCySqv1c9 z;7OmyT3%(Lic9M1Mhf5!I*l$KVinJ_MEWIOi=`d%URh27vcKgy`9Bue+< z&2tj@Qx_mEGB+dgKkWYr)7|55@IH$YLkM3(^v@xqTlh|X2kBAX6}KC z;_Fx$J_+F~namX~IFlw&iXz@g?Hw1ohQTF|q$c39-`{K%^ct7^p2o2t+sJNq+Mv^U zx_18n(Vr5ryn3Dy$o$sMY`I~AuB$#~Wz*Qt^kS_BUv#oH`U))$C3dUVodkoQw)nfP z)m~o2pbxnca(kE$ zQ*7E=5sz&2yjs;EP-5^HF`A{4oLS_MOZ#1?5p}R<+|*oLrh?iETs*H?jo&?~1yRh1yGm38&oAA0^|hD%gHct8l;1!JulrjdwY;(YFG8Iz zO{7j~&sZHFSPluFW`Hg9GDj6Ii%gWRT}majw%q(CuQP#U1DBN9iW;^}9ve)~o1KsP z@A?^7uI`=>ZMFSXGz{RjHec^*AwU4tX;L%x_WoMu&6Bca?wXrl?h$+77&#Psh=0xwcBiiX)Z~l#9LSdhZ}?1(8g%lSOYJpZ z)}gEa^M9q5L1RVlV6Y9PvnO((eNV!9;40A^>&aCOL)1cess~$tkp&HAlj=TY)(Fdq zV4eXLs;>#na`=n$&5-NJ`<%aqA`Mj<>-d#&y@>z(Od{RKH7g=7OQx4;uX|ghM0`C_ zpVT|%gA^WK(I;CcPPk5}j(6(r=}R!Dp3@yQX)%B0h?-?ew#z@+UN78QD`*kY{}3Hwh5=ZSmFpb232Nl{P5)Hn(*C5m4X8Z361WupH zojrrnEVd>g)n=UCq4wj;9M~eH#AF9n{E&Z zjj?Ta2&Ik@XnSqS=^M+s1{|(+HOLI?0Q}IX0A`0<**+G^yYTe!y9^=D!ZdwL&A-2H zDzj0^s>+J%+;DrG^2v3?81U-9k@r?XaYf;}AQ2#h0KtO?Pou#hSg_#MxHJS09^4@b z!GpWIHSXSo;O=h0p>c->n%OyLY98*)t*LWw-8&ESvZ&g7v)13s{_l50ok2y8?j!nE z=2P*sSIi(e8;b5oah;O=^tP!n|GqA|b2beTN1i(>LZ+m0Z-w&-ADQ6#gz8Y+viozy zqIxeHPyE&gjl)q9TBf@KBAWscz-Q&}+#qq=68zR4rhCuUAyOZdDV*=MPN=XlI8gnP z#f;dS!wRr?oEfGo5O%5x^p2Fp48GiN(R1Ot{FXNHda+zzA1>Pd@a^|HcgA!lE_F9Q z6%PJHJc8@+f#XlPRO84`I=?vlt%~y_S(*~P=9)&0;(@7B2px@2*1?Wd7gl7O#IJqT ztuP!D!a?;*jd2AZ!1d+1;oIG%!poXDFTigq)UL^II_@OMZ7-w3+^hYf>u+mhOT&td zfhl@7wo<-1wRG<+2UioUgp`TKQN{<)fF z%gZ}^ym_5F^${#hq=Wm=KwR^W&3A%=7H6T*4dR0mX!62GB}?pvp72P;B$cK|FmKCP ztV_lc(th{C$OgNR?wJHe8U$Ef)&Zy_+`E*P%yU~kgdMqNhn!nb&h5z91Ax`J~p?; ze@|zPY>yce=J_@OQ2v%EY>W8AWhU1S#XhgrOexN8VARt~z__C@gN;3L5`3ZV21~fA zgQ%c{hWt2B1{49Tbbs z{e@fTAgWFZ3OE`9@mI#Ny+P!Z6ZzfPR6Y=RM=@rbIaLej>NnwKDBus%UvGeP>%RDg zfjPaQxo2h7QH2|EsRz}+xLJt@DJH6+>P%RQL#I`L5(G>a?2VY89mIBub_Z2FUe8L_ zTUJnM3hpy0!%UaksjluGFcD~F4EOH^O41KZO@FVlAH(5Ik#=k|s_Gy%`1-1d^C4(l zy1vQ2#SqV!2EJR_%(WtK=dM(; z)q1L;MKL>V>_%oeaN88rg62W-8K0NuHv)Y^HUl>V?=*%Mg61alw*095vhw;Ar|pCK zdNDkw2e<^cK1v_dJ>G}U%SXHuA(7DT=@h)T>Nk1xF-vt>W(|FAv_}Yh$NK1d)$!!X!-hoGw-LndP~ByBWZ$rK-02?LPe^ zdY7JPMoJN|lMSF3dXz(Y>on2{%4eB=G<0 zP00TV*W&EsLwmoUx4WYD0^8NIA8jAh1O>_43}VTwSw#=h|8O3yI41Hi?mrYi{p3!; z?_j3eSBCyHd!rKjE-aQmfA^1RAL!fJZ(ROsdsz18wv3SL3#H6e8NAJ=Qt=GV7M}}adBXwAl(WPfsjYQqpf_`&~+-R=L`JaKbGxeOCN2qG$6Z3DDaOp=n% zMLk^S?GK{8FGtOA?y(jLEuM!Z9!asVZojpn(@2u*gE|_39ACn6YvTx%nNy?MaD>p6 z^S#)hr?(5fsSyV{A{v7Im1?~tO_#cwx(K80=1OumeN}dvjrS(anZ_jYFXZ1n#?uu3 z_1fE6soZZQ42x*b_M$PIHCZ=?->t8)3hM>y>kEb2rTH>KD(}u8yq<&GXh>_!wFX!j z{chgsi(jj0C<79M7iN!Q)VU2q#be}ANZim=xCIy2M4=03CW(7lu(`Jdvc!)n*gH48 zWR6Jqb8p8J3fZgSihDn(v3vZ2nA$m}*uS!LW_vdy5HH>X(z>sP9a4{am47XVmQ8wz z#)Ny>m)iY!`Q+Z|Q~HgEXdN2}KXBjW!W6W%p-B{+5T`BllKiqjg%!lKMjoB-i?q*{ z4y$QLJ5b;Zsqkh9d-La*wKSnqhU?C?{GF(OAOK2Yn$tg~-?Bs?ERbJ8e`ztjuc^ABfm&!}_$%G~H&-4Lx)nvJa$bX1sg^-sMV z$YZ};o#;2Wmgua!>9x1rl0~LdnPs#QH?LeLXhm%ExqAM~`LhbS4M@+hV47a?YsTc3 zxoQ0z%l3m@An-=cvhK@vD*sH<77%4A<8fl>CCf0J2A@6j2Zg%vH44(6v8EwbeDh(42 zIDO=PrAh9&2&D(>W+8CtD5AsdN7@h0tg;d>CgkwL{%qmpE?MioYX=%*ePGol#x-s3 zkRqTVoo5$<`B@G;ju4c#yMDN%Q})S`zb1bI?7KqG^bcz|_Cb%$dp9fXfg|(LZn&w6 z1?*U=Ul9Hxl2KW^`%&T@SMw{`VSaYTg`e?Co5???V+!kX z#}bu8%|cI-RbcF_ms$}geX|B;$!7$M>e+df5MB?t%U5eY$m@BORhJV^e}L#2vpE&G z^-PqJr}&2jEatIJxdpJD% zB~E&bd=z1c&P&j6)t(zg>j9wmYDtQ}B=TZ!_|R5>G(KJk1}1)a-H7!=1GX-=;a14y zS?z=5SFNZ9IcCO?&HYJmB_y*y4Yez=xUU4>I`bkd~)8Zw6 zfw+w7Kq0DZ<7>VdbibS9c;_Cytb-<}26PAQT*3dRbDjy4R*Kt_$L zFlJNZtKPN<^5B=#Mw3*d-l3ie?-k?crDc%M+ZDI6DmMnCx}E%xKgVWE65olZ1kMD- z1FjF`l&B@$a&cv7xe9DRXAe(u3aIZ>_cqxl^y+$QnxpQ42|KwiWf4ruSfG(`4=K!{ zP*y4*48W6m>sV`A9Lw1x-Pl@{Hq^eU9#KRt=^(PVrLYx|;f+Imy{W6S+{7v)7sP!u zS!x5JCouIvM1@jId4j*!=tmn?*N*y^=nsr=@wWk__<&Z7{m6*DjwzS%Rm)U!k%57l zhL&B3^=RY5Pdc1iFDp)EI82WcYV`B=a`Qsbry4A#9s``6H%%)hf2eqU=qBwF87*o2 zu;V0_Qq1C*R*jTVCtuIME7%b!9Mb!l*%DdgXbJ1s>kO9t)>8uvu!~lu)rp;^ofwsp zZ9P$G-M(5vQiSC5b`9QYd>f)VPw~TBIPV>~l#1*Ipj&(eJ)nh=k%0Wq_~MAK>~K;m z3(s#9bv8>vzkui73TZ5FdBC-s!nE%VVM2df;~PxA=l5cUPdWl383M9uOoi-V?0dwB z7bQ7h2VqX6cxN1fgr+To?XOvaXJhkN zqoWIS1O-8k^U_3%rCm<%X5LdAqinS9JaxRoSH0f8q?QCW{GiLEgmhfM3!=gb$r-)ud(y6Gt5_5o zN9@IGlYS-=zgT&GoN-A8<_S?XU_Mf^9yWAe?{Qf~8$|QsUarjP4x>wl;g<`*oq)hr zQm;UwV;3fuF6o~vM2UT({UNB*9%H@mKeYIhoJ3#}YI;f=M@=cW8GY(11=)x1!{thO zy{4^xKk55Wta)YSl#erdR`q^~rSXH5EYs>GJwNscW&o*N^McZ-1kP%}Btf(n zYda+RS;im}K*R2vajDS2(m?+Z(IPmNM`^WZVff%^8=P+2ZoQ5yP>yIwY7>$bav;)Z zvfE(K0Yz?EYFPwL+r3Try7JKcwbNMjD@&x*6?@fE)a__+kE;-?(e^UT#h+f$$J9xp zRDv?%wX!dr@)DnyEPmBZwSq=sg;GolIIIOc{ZvG7hvj*9NeG{gDtM;S^Tki$YCTIr zhk~bx@xtQh-zz1Q%ysL59UwLiuwn zB_Q-iiy?fZ9DKhJ>bEgZDE=y@M<+k)zKXnc3(9X_@v6Tu|w2#gSvm+DlQIodbQFnW? z4ZtGWU2W&f^cfA+7{>B+HIwMth1v+v&o_kLdOCtT5aNV&EJ7ODx1-mySo4`JLOUjG z_oEHv6Wh#@QPq*LFAtw807|9ietha<1s{@JY*gx=qY^V|C~r^rz~sI5KJn=cMgA> zsLqA3iR51<1SGUEqIo+^eiREA?Gj*2z(y`f8S1+yg1J2R-n$0F8`dK2uv^4<6Rr!U zB>!8dFpV|x<@z#{N2K%U)2!z};8;{b%*14em`=TutHJH8AwAspaiOl*z+k{J5tlY_ zI7LHpg9nMUN>r=f409p^DPiGR?dQ|^(Ue+o{TN+4w(I_$$wR9`UAHmA3VHSnNl9G>N~ABjT3d6(4 zJLB;sBulN>?mBM2PI*s#y>=9Y1C-CAKV#F>q4f| zTO7|e*Q-qSYrlw1-}~-hFE3`j!_e}?g<06isKPIr^ca=>mF+3b2hOj7aA-i9k!tUo zEL^;RYrv1x*I!}09MEbS8ns_u_0yYM#Ci29P5ATgq2bi@{aNA%Xrp;kL;gB8Y7IKJ z`q7UN&x<}8`3;Qc^oC9XAx%VO`$TfrEZ>y+K!|=bPF}&s{GZqlSBw3k$Y8%qI6|P? zr6rM4fOCFQtw}~F%PI~h9}EhMf81y$F1{+!R7Dk*=qze~gn69ic%|Mqe7ZF(TJKgq zv{DtDZ#0o^=99=SVq}b!)nJKQ!AM?I(rM*p-@kev=(}FE!o>6d6te)A3GSs^6YkTf zs-j69*1MF)f7+?P!!B>_r+cz0qR{`ga969v<2-#Z;WC4t!`^I%TB4|e^?XN7P;!9O z?7ga&L=#5*@0hp)a`z|YFq%3`I(T?7+eUaa_4 z)_7WauN9h>lWCVPSLJrhbROW@$iwoh+x$9Hq%CRLkDT|{%ZjBjlF4d%7jLZwvq2y) z4VHoeI3`9vmAlH#L7?8pYgRS)tSs@JUCAw2=QB&&!eak-IQmiRF5D)&wCPH^EV%Hn zOD)lF@pl&BNA#-_zS$4#n4>a1c}ii#1=8n;Y_UmDt;x}^B9VCdS17a~{R2eMt6sNE zcP1j@2^sH&^Vg(S$E~vv{01p$>;1h4uYPpxn$3`OD?-)MKs;W8=)OLUG{V6h`tLwc; z9)Y&*WtTBe5~DX`9|$db0`i zTA~t}whNW0P5xOY%k{{wC6BA9s)yfVb@7leEB4V}koKJE64PY^lSfR$t@oTV#$61S z4(KzF_7g3e&ep{3)WY|;4*!xQp+(>GrF=~#-MrOLKf^w#=b|^padfFUtoHXWaBnIU zA+I^NQK;1Z6T=uZ;z~!<7G`5;-_crt6|_QOR_12nmd?Fp=y|(XS!eRhpWd6u<5oFQ zAl3Cb&Y}EuO_2D%JN?nN=*rMFdjF_uV=#avhi~ZpJ|~!mjOXTj3RQfGogBO2s;PYL znXx5~)#qlQwz608`|wIVJ!UpcwUV9N2kL>?DFU6Fzr)hRY7b1qfBaL&+c2_Z0PbUW zbf*^gER2N@lMScb8tGA`>6+Ya&U`eb)K`L&S8a5qbB7=zqFYUd-!53dXu7y}D%o}- z23T_6KANQZ71uCQhgY)POD1BSfkcX~D9OR0ReoXsYy$|&HwdH!9qSgi(&NZl6hbyu^ z>~WXXO|UfX5x{~!1ufw3W|B-DWz&>9ah#S-G3jvmZ!aYGKuDbB^aZ=d6GsliBqm? zaQUK&{QVJLljW!}Zv9%NLt9M3XagdSt-+ZTcT+U%$QI>ar^A6z*z2c)cTX`qj(%rc z+a1&i)z6&uv4zzfIjg#Rc_<8(jX%MA62{b{78#&puSqg{l1jd-6^gN{EF*$ASl;Pn zK$GG&AbAjKNK2!}DzcDY4Aivf1C6<}=nREcw&jqH*dDD4s5b2(?eFCcmp`^_^h<{+ zn@PuOtg#AWW54yUsTlV9^9v0qN$jf1Jk>-7wg_d1h> zVQtjQYLl;lx13+g!aX`g?4AhbhO8$9SLqHmUpTza_5!Co0|w?r+S<)|tN3S!b#iUH zyjipPbnVRj5->H{RK5^cRcZ9pEIH*FZujBt!vwxIFDeq3@xl4O-6{V)H`s6BXjuzM z82=4hdga`q%`YNB4Y0?~byp+tFy$9%9%CGleQ&)e~W>w~u{Ypx*{?)t}{Vm(K&~GmV zwjxgMVcseFM?S}Xpxe7mJT?qeJnV+dbR<|XJmr_ABkwwp7nXL$&r%pc@bOSqJ|!*E zU}nJ_NPh1X->~F)T(CXhF>bFsY^S=3 z%fngQ8^AHkf4>rYES@}##qaJ)lb((hI53b4{drN%r)$Y5Xp*T87P?=Z8>1P?Nl2)$ z=o=a$@#PaJ|M|*^_p;{mGAL%e5XCCIqCiS!!QxuY?|f`BvF=rbr)4VBi0rW^<6TAt zg&~ujBiorDjAKfSaC z<~rr`M2q$V@d;bgi^cRvl5N}b79u_&gw*^1y+`t)eZlfsT|OdqH!~O)Z}72Am~3OL z5M}eX&#rZYFkQ!v_s;{Op!SN`{8T)P9e-||h6yb_a>}}=mu}dXe&5XnzuT0JWB;L8 zyOsQd5fg(>RDGPGiU;+I%Iid(5M!zqX&6_%QoKN*k*fDvYa*uZ^}`N^2=HA_TLSxJ zx~Hh7GZx+N{GEvt&l0#+2T!j3VnSju2vHfW`%_B%<1svF?zRzzNBNB{I`IKTgk`UU zA7yDYk8hjV(Xy1E^jYSF^-B`Z#|QsRe8wi+eq>D?r);C%6hEuRG|Hf_W3u)-q_oUE zBi!Am-N?XWQkB{8H>fSnVBE zB{(~7H&s=fW3y&Apa)MUfl0AqW#YLLg)PXGo$b`5hdkL)o#Em*Rj1#n>6X;Hs%45+ zSE>{O4|8kE~p1ae{24 zx*ERxpk7>_%~k=FZm`EQlO%Gl_cHz8aKlN4tykuG4rKdm@amnbV#ZVOAD0bW3!G)v zSz{nz`zJVL_O@>sa&Q2}-hL;D&&gA;D=lwE1F~}z*;ddJ1mcg%aIogb=a)8&mrn2= zR@3Tk!2RoFs?uliR7Fl*8O@>wVa&V@1vyi0d@*G!p>y!rhYJ!-%i9$B zJuCr@Y~`x)HN$#qz3VBCYVAh8H)YVZ7jnY_shd z#YA5x_L|OSY=}0RciL#|s@!MEd7xfVnJn%F$h=!L@>i&;!-)+9NO!MssjF|dW?u88ENC>=#O9d| z__TmXE^t2Y1%hCMt&rhvm#jh{^su+2A%pHm6MGL8MiKp|f=u*ARy<8o!?>AmdHCN>gw|N5sd(wx>A z{c_kuC(x6lF^$Q79+pt#21jf;3iR-vFi4FR&TW9Lz>LBYy zM2c{p3(!o{4QF;(_8xqaee+G2W;au^6g`)`5MpGN4(PZz6c}|^{0y@eieM`#+T0g! zK>98MA2MiQAPD5MHKwiAV^h+Og;XwT{*4F)mXRH*;ljg-$xp}*%mEYH7ExIHkOTSs zAvW-{WHm5-LZ?RZzwn9Ka`!<0D{Wd){HWBJ6g%G{gw1$>-+;{(4RZI`BM z>~$ur<<@Y}|7+chC{62ydUId4U06FimMDiKECnwb$tE?Xf*A_OPyALq>_ZrDk8DB} zrI$6)h7H*XI^jTx;6GlXyQCzx6A8^zt!}b=RgbXWAI< zS(SI=c6y2N1bs6p+zPyUZCTxzAH25=jdqIOf&1o$t`-vXR2TT>jIul^clU9)_BSQD z)j=B%8s*{RhOaL`9;L82p^DsA$sjER?-*Xg5t%?lU2{tMW&p7o>bgZ0A!`%adukNB?It6u6c6lJQ&kljn}*Sz-G?kvaz=ZmRZ+guR)A99J$Sp+mte zq-z^1%|PpUHXCn*rhSGVkP-NVJ!V(E71L zc!@p4g7s+j%U*P$<1dJZY{ogqZ|Uz0^ynAGo;J~gzq%hN5-G7wnqL=zxIwpB%G35? zX@%?*WA3M`%1La`MP4b&*#Wd?^jR)ck3wLA1b>{VPei_eowJldKLR4u5^x+Ju9WX7 zspPX|$A60Czr80_G~k%?8Sju*AbuJTJPZ=a=O^M<&=r{4NELmW%=UccY}sNaEVcjq zu=j)%5htE(&*v~*S%B%+J__{R6UtTPw6OoYR&UgVr9q-A(l4YotKXmyN`_vWSYC!GF zOyi_lI@9TmFq(!v!o*wjvXmnx@J?U3f)k@+0chkuO@bm!G|$qCya0I&8O$?D$o$sGIB|sS~Bxp1mPO zj_;CsgE*rgO(aKDrCeq|V6N%5DGNDOWqm2V7ZNIu0H2F;Ry;|W5Ylkv>J@m| zUfIiYAcAUgxo}qq0V-5uMEVg=Zd~%TGU&R2AX<(etY-ZWOf|kw%iOIY^p%u)GHjC% zTbNe`qVclx;UDJ9m34l;P)6L1ZZbB*6{TV40(vs}OmOzctU8(okEx+Y$>X*R!isWZ zz7^kK(xA<}V)D#LBGG<>Egv;wMpvbOBQCV(UG7D& zQn%13=OqRY*Dd_2KKOkv3TE*a>GoZS(0BaMP??x=pyTk4x~W19(|5!~_Ue0&T~5L_ z9lzB>ip&NoZ@DNc>Kh#eTpeq9xtyosn!^tGAcuIlYGkD|VTgjv-}7&*r^Dt+$%Lj< zw_E})*{Q)2p|faZ^y1fWUZ$kuzikXOxh$^_F|bv*9>Avg>>y9_*R2Diw%K^f#r*q8 ziRYy&`bx4Zx2x;4@{DmuuXJ5xU3@LpQrGBFwd#fZRAwwj18(h^C^TZ}XbnVxeCcH1X%k0d3T?EaVsW*FxuAF*aqV^X*maKImvLR9Q3slCj=7P7l zmI;0*1qF6F7SScl@rVyh8eIN$nVM04$`(2q&?~X5?bX{HnN5Zq0}(_JRep0kCv^zB zA7=0i{VzKm7s?bZz{T>+$5yXAgnwettZ8P zYD25Rr+A6>wx9ay?(ya=CgOF!B#Io8?dzn;g)(#<%!H{pos;Ab#(ml?KJLF8+s^N2 z&oj*~KfsJ_8c^EaJn1wJsX4fQVf(AG+VTbpk+RFHq!ZNAKLF9WRdap7T=i}_yWF*A zFrOUA7=_q+t@=3rNK&LH40PgOx+wh|5{;4g;(lobksjkVqHkH4Cl~Ou7N{=On7#7) zEGMv?>tYS^#!6?QOCV*6N@qGg<*ozZEN`QHXIKZBsp)_qJz1&GHYeTU&kFqh&Y}B2 zDgR;$;#z(TjFSOlTax`^F@)Oa`Ud1Oc)?_fcB0|?w4H(8F)AzxkPXYYic6+EIwD-3 z?~d~>irHwlpEF~I6*N(A+YPc*wQ25HimO%UhjZ>r_A?;1=2PAJI;@J~dG?V??`Q&_ z#-EY8f5;!bu0{+7@zrOn3hsURxOdNs_AHQu&sX>=ol9#0B+FZOTya&wEA1~*i}^!SU(?jEjIQp({Os!;~r*_icK7^@~Ftr;#=lV>}xNP2_7nbqM2XkQd)mx_L16Do{&>LvUF-YIB2aunid?YfG;8CV%X~KV_IYxG z*QE_(8X;=2$;|39E^r}B9X{%AMVUOrp=(-QPBv235y{ zfTsYtR0k~5lrNA0Uk_>x-7rscpF1eyQ|{taV1K-nqk5Xmw zc5v|-Se)`zyEq0PVvt*|Q0<{gYCjM)Nfxun;znd(P@{um1K}jNmVtgJ^%W2)LY%i` z%+bFO2y*NaGTmr@d_506W5Tw#okm*Su!S5cK)+|a5G}TT51R;dMZaB~AF--nDDjv3 z2G<|CvnWUF4MqsSV)W)z6{q>|&ZjLO{ShZ|Jo z{rt)!x`Gq&<0F7($sb=&GpVITt*wJKFsQ-xQqB z1&QkxMR{e_cHeg@cCq`gY2+6OG)5wyz+KWJQg#&d5--`I*5*@A3i;s}k5Io8BGFk( zljVE1p8M^`^?;B4rnRw|3_%2%+BJ2ZX* zB>JE>#bC@ycGv_Dv^KlS?p#Uo=ycShf6MZ2VYujq&9{!rt@vm>c}K`-XEJrPs- z*{A+mv4o=s z7;o1Uv@jJu{wKot518@aY1HmT2s6l$YZVOW+d`ue(A$9>+EFfuJ&=IpP-od*{q#;< z#{0!2{qMWd3!I|c0qH*x?;-5(Kc3zZpa22PK!y+3|9XQ}t4v5lbaga$hwQvlLMVyD zqV^m~Ym-`U=3%}(`c0{}d#uBsHBG?KmGKpU5oF07n>H{q*k}=ftvkPnT zsY6`Zt|sm|eoG5$Q$LTtf3*Qs=vj=mjd%LLZn4 zFrO5mJ8L*U`+zoN!!_BOc-t@tGpme2n<^~u7U+g2#}`I3P6nV%F&+gTdCZ=D!l8WF z?=Vb;W@ld%$1`hz73Cm0>3iZRa4HRYjRx)pdt%=f?`g+RFTcF@VGckf?R4mgh%7pLN&weqiD_dcXV4k-CGxkl|YuoB}vnG_sT zq3>asdH6)wuFNxG-{p*M6mnZE{A$Z@bJKTK4 z2fgtLWnANcJZ&AFVld2q{OWFYP-%}X;yL?4$5NIo$UUTWn+wA7TJgL2e{4^J%FKw+ z5$_<`R4+b~N+jR;Cq<^^7F*rXqb@8(C^Z1G>yr+UW<8^fnv#*)&hHv+WIs9HZ>!o8 z^JWe@TmF830s4$7y=dyuQ30``R- zpv@w)d}sY0^0X3oi&9DPKib6oxMS@TRh5+v8zhu}$rS@fI^yr6Nb(S(cjN$KU=e6#g72Wg;Fri(0l-qWvXg13&bVs9DjQ ztMuJhm$`sjJ11sjqp9hA8|zg_Y`vbsrzq{*UK{JtAEiEIF=cUdAr#Kx>~#8ve=D=X zUq;GsJ^1^*pZKcE>RV8J^*yU=Ek)IDTMk3i`nZ5V(6U3q>%rGQ`~rZ#8bk~8?}$+? zda&ILz6@{B6&|cczc$M?B21<@v=uC@Ny)Mj4)Ay^jch#1+KNe}A~MWt8#^4#VUl+= z+yXtmeN2FQSA9ZvI66cZ5RYDb4vj&N-dEcBs$a_@ULDpHvkNMxQFN`l34H1!cZ%AL zBpuz7%e$3DCCL;RQe}elO&$mhE-A_g@8``UJM`#?a)?hC`E~s*bQjdFDKYMlO4*GE zWS{e5eoh+|nm328Aay_mDSw=`qCfEXOI7fQmBi#_Ec}!>>)ehP>7)=)_6zo!>RI8U zxg!3)9d)YdI`zk|^SdA5QqZT@aZa0QJ|9Jtz(7WU(6%GaMs)ddY8`mDVWUAvOx|}zhTyB@s z_+VENeD!^GIvNYpIduJ0-d1Nef9V^+RV?asUc?*Kz+`&;hB(?Pf2W8)1F@lhuxi#& zb#s!17>>L;5%Kq#a>Bq^+6b8RA=H&*!G%DvEiEC^P$TN+ex*krmJY&dG z=3$BUK$U|+C1b?f20*r8I?+4tdB||x)D?p;1DtZ|5fvBryuO_eDZORlp9c55Wi^?245v4^Vhxi_mt%xjrMe4RHbQJ%%I|l>oG67 z-ipe4R<#qPqoDdyw}pX4MJpyrKc_(jB5*uyU5gxXy7!+6+GlnC+de{k584i|e|{(U zr76!MDDNw|0TX)JJl<(nOd@_v`ulM+ zYCmO`$)&hitpL%7~(Oxu$ki;i$Znb%JlGpJv znc9w-yHQL^&u5+pOW(W&6e`yNsYT7*OCE%YWbuZXcUJ=dC^KxcV1KQVEUmY5u62FI zYAEaUb9b7|)4ts4f+^zA_-2OgADAplvA3znCii~>V?xS$Qrwyr3 z_GM}={rjWzETt-&`}-8+l4exA`%-jBu_towgnfW=@SEEL`R1_=S4~*6mC}{Yd;=yY zMA<(;1ocE|5@JE&UEkUMR!@4`GGd>gV9>G=Fiow5(~=*&58tCf@p*}&jRQ1u*#8ra z(&=4XoYp@6^3&ffn?zgx$z=hR;%lFRFccL6i~tOmc2$7GH{qczhHw62MEOS41^V|`_cc&%9tGu#7!b_-zx1V*7z}SePX%VC1$kz9g%)y2 zY#1mgR^n1pQdvW@ljAe9;BGsEpLmJ4^%1t{I#+p7hx|FS6t zNpT^$_gw3~Sa&JGzIVH^AS`!ZpNq!tjodnq#525q|MC9PH}UF)}Far(IM+J=d~NEG;cvP-4Qm@!enAo8_~(p%)sdgPVBZ+Gt2j`cg-AJx ze-F|2w}LlA-vwb^F!%)J8=|*dHZ`8n_~p6d(xP(%r^@60U*GQ^e>R9;J>_Est@%hdJ#xmzA+j5^_9qkmD%RYdG=?8f6otjEsEw6y~$eQxH{9}SXHdlATpLO)8gL*efbE}b-RGCwsW6b z`P}tP2VPk+b%6rFVDQ9Tf79_&CV8rx`G0))bph*UqHAV;U}nwZCKl~7{adhFXl`R; zqjUw#pXjj8!M5L-6_|#P^Io+SE$|BLWluu^x7IZ}pug_%y3`7_$o@Vs3d(O5Oljpv z1H-z#zfLY|*LgQ|JR5w(Ub>5D_YL^DSzQ|QSDg#klK0xX~L21pmEPTS12&C9d$9ox|FneZ6 ztu*aL%%*>0bJ)4T%mH};kgeA!1gl9Ly*=N#yV&b=X3Zp8S8pSxpeVC8?sg^wdYK;M zt&jK>3LsWxYzOGdV1NHwNf8$W6flHVDk!kN+RNbWtR)aaf$)p9qdUzT#T>H0?s|u#`T}sw{<wgv2d@bWza|;i_ zl!i0Kk0!Xe{9dSQ5KzL@-7bYC8{3+jAq;LrD39YaeG6$%)q$h6doMQ zf3yZIm$tLO%`sUj^{*=6-@lFD;rNsx%uMmEWGw;(MepBk*pC-#YlLwmodpYx3F=sSQJPO|zf;+C4iGKpe64A-~MTes)zyXuudEWppp{Lz;g5 zxV_j~$fWgXE02DRG<`u@p1)h>D17Ukcg>RX7kuXUYg@iY8zK~$71i@Nw9vo4Qhxs zi_hpv)CAvs-gGIrUgZo9J8Kuv(83R6R?^<5c!E+ut@Pw0WP=p@XvVU0WspNFk+o{M z`VZnT_k&~%LACG6W#Z4>@Z&9$k@$ygz1^DB$NUqY)(;D(7+N~3%h}8>$v_6yf$yrF znfeA-pJncN3x@UFcwY%5lOygz%Go4V5D$%if-6(Ub?wT+oi(hkjhwQBw7eeva)BbR zsRkX%kme)zsnU$tuZAY9*8K`It<{dN5ZM-L8RY!&hrBYmf4rOofGpJ8xH&6@@il=q z-$P4EYQVb>2Za_#1dXoVYI0(K!`m~|=XM$Aa8Yi$0Bn>s;=pZVfy%mDbvPEP(T@G7 zQU9|ryPTe2hi->BzRYM#ZF}r*-IM7esV)Y0SRfe1mOf zdm-jm;rR8_ntaK>O`G!L&n3j>4fgqcoI0)-%PlG*w0$&+Cg%n}mhm&6X&QerInHKn zygQbmihOBraQHGyNi6E z?KqB@u2jl4%Jj#)YxScb^w01jz9{W5mAhJb61_6LydkKb0qlo_kN>MdCBRPpw*%S# z`k2sbb#-;RZdnB_fd8q4m)6ovnrkX(o%a7@zyQ{@v_P6Q1EBnyl_}k)#f4gn|C71y zPZduVv44t;lM^7vo~#1~Zl#WwqgsW{Wp`p1VBT)NE`$r)+8&Oie-LhU?8-IqE3gJe zaNii8-dF*GmEdqrNFTt9^Is&e=qw$dXaD2FznP>P*!Zt@9+S#**xo9EeiSICUcpzk z&K_r6NjW0_fi@IVHYBWA?XG^RT}6QyOblSEu6o-={pHjoZmXF_DT{x@d<$e-AHQ6b z_VY$wa7+eF;Q|22;T%yX@+@dKS(_wjkpqH>g2Ju8CtIcEtB3qMG8}j=2nNuU1O)QX zwI*tNNWoApXtcK5?<@d-g4guDKPxilwmsaF>g#zY>!v6GfR+P=l9EwOch%^$;O3Yw z2XaENfi77(W|gT{-m{7@gd(nk0oX*a9+#sE2EWAe<@Wo&$~JDeasO!AOb+0_cfN+g z)B0uac+W^C1Ky+jLy!sZq0~ zixlSNb-VB*;W$JU{dr(_$bEK2xlXCO@ zbN0LS0#ln+=xZ83YAsiNc4L#1=K!j(-#&w(06+E`+a8zCNHZ|vf5U*rJ0gz`_P#}k zCJ6yP&wG}^Fn{l*1L%uW%Aeo9F zUKro@ZkYeWb<+o4-=4!9s8ZI3=TeQ`fadsRMOnp#(_xh&WpW%G zEEn6E!CG~HY9<+VL1LfZ6ewa(LKVXC-&4^`hoBk@5<1=e4o-ASI%q9YBE5s`wFNbc zvAk0jKU4f2@w6>X#*mRUUX~`Ro0>8>xTwgY(89d1pa2FVCLnrL0mSx&n%z0s*(VlC zbnVdkq=R-XOT4}6zk1=ISSyWp$bL|rnV6ZJn5b#s0358APfljw?sA0gOcFdS79FVjaNH5lUlV>3#>N_fy-T6!`44*ISeiJpavH`~Q20`hOt*y)GLA zF*g^8vXTB}BO4zdzcrH5z3Py>;)+sigN!uU$;ji| z++luyL54R)4-Vpz{n=}VcVOmdz}SJwE&5Seo$CA72tyua2GOI_BWfgT!oo-Lg%9Nk z!-=X%o_@JN85Q*$c_jtJ`WPG1q=3n9m7;|FuY*cU8K=OQD9DA(Pf<`CcsjD0M^XhJ zws(F_H5jQvrgKE;3G>e@Q#Fz=H`bb_AZ=ObC|EC%Pv$}=n+47{Mk;3U-%R&D6xs>1 zY0Sm~C>dob3JFR3ZZ|9>cf9IBbSZ zKH~cNX~-Tflo{l(1A>vix8K%9ywqH$S8jfNX*zUKgxa+$`qXu=ACPOGl^YnJxk6f4 z_5vjlnUDj5f4$TMBljozS<1dnw}j;>;<+wohTMZZ+ui9VwyMnE@D3LHy;HuB2^B@_ z5&H#4A|HRS!a($^MD^^0kl)$@b&?;H#K-Z$Uz?STl=Ump7mLx5*`qZeAV3%`a>3i} z3$lcE9c5v9V0k%w`~4Gp6~5a?ZYZ(R8e z>C2|bvHkVUPYH34x)w+z@dCC_bc=6N*vQqeovu{zNAuYx*SduYXoF~APS7(l1pW=A zb|zwagQJz~xOjrK#mfiXc>I&XCPaQRc5RPXcfPlPcVr1hd9b)rZY1);HTQFEq*MNT z#*j^zDTkq;7?P%=WJi@vY;LTvDr$GqbQk7gYOWV@A+EzJUo0EL2+5oscL(}}u3*GT z1oECwMPT>`5)`&i#l9j@G>Wfglya*pU`$k!*S?W%f|DoqeW^x{S*D5Tz@PE-%yKiQcU-aUu07=Io1odc;fs(3odoQ}Em}&-dK;uzBQd=% zsIO1zaFX{8u_9k&pB6<`?-d3NE)TqgKbw8NM1x(cA7kf!vgi%En0dXCFLZfl^yTS0 z<&1`OYm0*0(%+3CWzCdL8PcJVj&-45ke|blZG;SM!(}Rx0^&PmW zn`{`{Q7)DWuRxICcM9(JriO(2FtOB>`#n7awRi6#7RvdzrgZYSUL}|s zWHvjmhmlKYlnczwzj5N|&OH#0UAArWTI-5wmPgD73Epd>L_f>qLpdyQga{sxo)tqX ziQN#(bDmp)V~m?XP9st4pe|(#!DSjh%`g zXa^RpkcQ2};E&1nKd2>8mF(R=S{bsHsbECe=8!56@PV%w4$Bi-^c?H4?oLg%Ig;V5 z!q;fSE@0e(er9WaNsIW+X^t2n^s2Fh5C7r3U~RNk`K}7P{F?Y+c)0hoWyp$cA>`I)e3mr+7F4=Z#hXil8SaqaCNwcE;DBHs`E|`=_@#yOgJ|NTL(f%y&aQb8Tt3^@P zS=5JjQoyMd22O#pL_}5a{=n$7<>>)5&H3jj15c0zpj~vCB53sHEDzg~|I7p0s5u&I z&tbXw?L?nJ$*~tZ7$F_8qqn+W)K%rH;*9axdVNAR13k^FVHQU??RcZ3#I`}4lyGHa zs0qx?6@_~y0!-(&{+#%~@L=bF(zl0w#wsGmlBy(>_vu55*Y=Xv8Ut#vx8Bf<52I?3 z;GUP>B-eXe{tP};m62{fU79oQ?%VQ)=BGpLPG6=E>64O#NhaGOtWIV!uq2h~Lhk)? z%Z8&H{N7c6e7|R2m#A+;ZAeJ-As`A9`BK*JuMXCfZnz%n>081^`*Vj z`s(HM2iKlk!G5*eWbV~Gvx%lc5pBfDEVNI@X^q3_NM2g&C^JMxPVo}^wC{VJ?}kFO ze+opjzM2lNeGi~D=Q^ic2n0VwO1+PnF>kwg4Z5?HFM>gh+jyZzP2K<-6F;Moh(r3Y z7e8Ql{hj)a%__(nR}1$hK}q znW${;#+;*}LDoe^pQ4Y&(_BUWPber_NcJC~QbFT$l*lhwgRU}K;V$zavr^&3C(VcQ z0S}oTFE=i+6)Y(9uXE~G&hFo$pe#P7zW>Gw@tF})0T`aE;#{OdmcM-%C&n|$7I>0O zzSw{IHl4?00V+WD?~e>9F?|@>`oMr`Eg0Ru{;QW(F=_l$uk=q^{x=e|^$XY|qr*d+ zL}gZRtyU%x#_5G#g*GorC|}YWV#9qy{vEdZrroFC8S`*R229QJcRh4D{}sqJ5pUkS z;V&unskbJa`q@!bl>Dr!&$g?l^Un0+U8LqqsEDll(Tbx~X$}Wb_hhPq+V=UzX z8BG6G6p$qb5q=xVBvT)}+vC(-5GcFHcoVDV65^&$0yh4cbNT9w%MmA3zi~E~x7P1`G0~Ty# zv#gk)?QK%;SHPCG^0M2r%RDcyebO&pKH2{F{9vn>u1T+iqV=PjYKm%2`VXGLDqs$L z2{W&g2oUL_b#Dc%YQ{-v;d)sQPyfa}R=!ZQRMjW03lS@~x#{(Hsj1u-q;1;^~&4eg$IAADeBnB)7SUlwC$E+44;y)WKvxRIQ7 zs^Ce>Bd0;BisUdhbGxvsu>mP2Jym`7_-+3eL1d4XrMc#2>3R+aSZLR7Wo<&{^^h;; zv_@2p^NLze-MoIkVlan$wtwzVKd@-*yyE-6@t#i|S%X_cKpazMC>oE70SZAd4ZZ#S zbw`oUdV%v&{6WY;TLMWYEuGZh+>pzF#aIRwKUiWLp%K<9>Tqp4n(VO zaM1F;A;v9O>nR#Pza?|NkpB95wHUrrZv*i#&0}<(b*Lw`Z|JM-l=<-}`n>#6)NWsAQs;1$U`F`h$c~OKCMcHfw99Sl)4{lYxK~%XzX2V%Q~195S3KQ?W8Zv#__nZ2DsbyPC+BL|qMrP}4A4#Ihs+w{cB7aEoY#lg%Ggf!Bui+FfiIa{O^THX6I zE@PnHlMq@7V!(VZ)71?yZmhEGDfR^0?~v;I#ak)u8=xs-7S|mv zRWfziX9?j`mF54A$`KP*8y;6as)JsWk}A(HdP-;-^){^W<#XA~mON7#TLFE6D3`m@DoM2TmyXS6*kBanVWz+ovvE-K_T;@UVUJ zGJc}N{NR}wWT`2up>{MJFR=>{#?RqcCDSjBvEc71AIv-=YDRb`9@m{|%6j;14d41O zyw=dE{m9LoGgAg}0LP||zMvvQIwqKTzLuV!)n1XQ?A?io-UtJ7MQZ9@N?8*8 zDqpJb0w>@seCz;hCr}|RO5MgBA*=BI9$YVyiu-*~d*76*ngg)>Z7FUTyhf$GVvKj# z6rptW^`o4cKLS?{CSubsn%~W60Rfe~_36+nxF3BG`ZJ^r%^=St%ciMj@XNH}NR}{$)Z7&WAeo(*=%`6(Txtxo@srHP;S|7x+AnC$_BH~TJ z(#p*|!^?h?WJJxUx_hNKBI4ml@uOG7$3KLH z>izJ&&j!aEPocFy(cqsJi32=rxC@J^uiij`wN1zHbv*;_IE2)4-jB?KCO7vD$b0s8 z*3Dk~dV*KuoVQl%5&oD3sI>Juz~DvTj_si%GVE7rWL2AZ`yTbiS1iA>(>u+;d)xmi zg#p8+ub$wp(RHZSq445`m@@e$_PUpA@zwRyJVNMMX-z!TNwLyIGqIGvUI27Cs+1Wy zy4B0G$(stk;&t~PcWac`XEjW7-?{F*zS24v`?Z|G#F7c0wW%O~oI>tQED=(qA)l`u zdx#n~UowBNRI})|N*mMT^P2J5YfD&<_v9~H&lSD4s6rNDAK?b5*4-I=$#Dhi{e|Nz z>b$UZ;!}Wg>ogSyPVzGpTAS79ReJ2Qpg_qMM?#lkDmoTJ0Vm}d5=5aLnlfM!F>F1{ zFfy#mTYdJ&DsGH+P1^%m3dUX|5NpjTEV;6v@zp-#$q2q&#b6dcRfa3(wA(tkG8$0 z9(rhxOe|-U$F1$O{k^`cW;vxL(3~hlZxT{^c>cDi_Ivvf@1M~cU`fR?JZ-W|0nFw@ zC3C6=x+}R^q?cxEy}0fie$rs?n=rB0|Bh}U^wYojoz@QC+Oja}VMnU`EEZ2MHsFre zY)}LEckie6KMf9y-zmS24BzWfojh%f5Bg?jQ_wIAL)XLEG1@V}_&GSPz4yvjM=G>5 zxVHLbF>$7Wjw%VK10d@x~#k#2ZsuB2Gqhbc1A|>da|W^OG;W4g0|b)pYN4= z-Z;YDUKkC(lalV9QdS62C%{j*Rdkzj80y(tb~UEJ9ag~wHW4eC?^5qkmrnArk z{by7_p?lNjhqxLuA6G158(&`iA6wYhJiANb{rNAy{b*Yv%y{?l%FVBqs7qU+px6Dr zt@&yq&vkcHdS$orz3zF!(yzc(n?vEz=0aQt$2S&?W=BOTHfd9fZ1>3|wfEoq zD*!^nP>oa2zALO9qo~GDG-2AgF6>3f^fxBei$@S5Chp*on3*Z+otTxaq?SzeCXEy? z>EqqF>lG?&}7 zpTER-#c2uNKt9$VX6U8CgQN;VL|SJc;9uswvNVx63X0Q{?woiZrtS{Cmu*ouem=sK zGb)+If=%(-Amei=w03`*a{g&sTZO86in^Lka=Mm|YIAIG#?-Yq2)n@8to++5$hYSD zIOCl@Z|2gFw(CcALITqeIzoAL_KS0)WgwAEK)jNnyW*@K_+)h}f}WSDtVzdamq|`N zPCd{#QPth+%pPuk`}(}f9`w}dAFAu^nB_^~D1gP2RSZst)|M#_Hx8XBRoQKk9@fPVKG{**~W zdglFWOpg>oz}g-ibZ%hdFUz=yIlIeYqx?5H_9@M(*JoKe-PN2^nvZQrD5~vd`T4f` zb(dXP{%$wlp2QFomu>m9B1w-lgbas@a+I)8`WGT|zIGu`4r(M!WMh@mV&U6{IoO_f z`Wo{C#z0KZV2VVKA*KRPA!M@~)hYWP-^RR@{r~JTIzt{4D|~Z9m9}-G%f|y3wTnRX zP!(g=->yA8O=bn&uR3{(bX%wq?|NBFoJO*AcO#5;ro27jS|)r*d=7asjg*~`C+ziz zc!R!<-To20xb~;`)3W%7P$q=kFeZ0`vpV%}d;8w?kKvGqd%w2tnRnSw;7W?=JBs=Q zYNxrbfhG07rXCi-n1^&@qS$}ki2;+-h9#;mPlRCbYrZS&yrAQ<(zEm+LuPI^kyAyju*x$NNEXFy~BB9rf&4rvetr5Lbc3(ReAhej;w3rAe&JP*b`ucNAr6y7@w^);1d>K|SYjvBY`D7vca zGV{7$uY4cv43d9^3QIV_LkG73dVPSmff?t6%y-I(&U1X2N9}jLtas|&gUbvpH#rvhx8FBeo#9{bL1-@+1(D$4%ly?HnqMaOV%JLEMO^|5TICly5K~~+XL9@D zwz%Z5ri?@5flOD<%oVJU_baj-28vE{6lANj8;hc~z6wjmb<4tzdQO!`!y<70roWn8 zq-Qxw##y3`eYb4*d6=I-LEMYfPqH7w4|C{CjH}Jz$^(POIoI2+KEvQ~=v3T(c=qLp zT}HoeJ1_kFjyuG?GOf@>nbYVU?j?qctvH8lmm=?`XjbY~#`Q<{$z19R2pp!j)w!9M z=1dPg>2Yk$h-7(2@&Xw#NJ8}r7A|h6{Cyg-&Er^?>2CkHpGUUU&R1Z_rvgsw zM|zf`iwY^pS`WM0>SM$3cF5Uj8E!d=WuI8J&BW^{?4j?FK`($m{s8t`mTOMqjoS}m zwP+V?M7HQlk zgYY(~)*h-HoOLv;;GEqG{uz#bwIgpg8BQRK8;Y(D;ziGX`|nX|oVC;dBX-_Nb#-30 zdviqd+31a;rRXV>dC{<&m1@_ddTgY9>H{JMYcd7Td<}6A1kDFiaG8R&hB#t2b9?{!rgpLQnOfL45O1-fpr_Md1ofh~ zGMi7lk#I|!ckk)kw%CrS#Kg;(<(I#Fhzl^TQ|0T`fo+93)HUWY`4n>3>gj&u_MG8= z&YVk}K+Wo`X(jKhPo!n|o=gAn-mI}A%_UOth*uz5<&-+f$S%MlatHex&Njja&b!+$`Xw-1b}UKgzJYxA&XGw#CvUz~16zY3Metr|Rn$Oj_Ts8l z@*F?Zi-W~N*-T!G0278hJVt#JoY3_wpt*w(Dk|Ae9_fQ^GU1vSw>xT+R^+BLWz4Zj@j3glRwvdnEv`m z{^8}WLrV}=nD8Gk!{m~B*5)8ezi7?XD#v=0c>ghLC1ZVCqwSz9p}myrVKQ}N1YmQ% zvdOkNc)Nr6PNG!1SOaZ3)nnf++LeEa-#|I9T;6IFH|5q~hSa)A z`^CwRlc;ED`gAp(SCJx59G&0^YON)NreGIC+>IE0Cg${0lMkg*-PSL^_nMdqrTC-* z5mu@Bsm^>*hbG9tQ|+RGu8`c0A=eLW(G^Tok0xWWWHVzx>=5|J4;s2Pu%*=QcLJ2z zClaP->qOnVmJNM5-+o=zu}BPdHJodlaA^0G9xF-pTws>w**rmuzB*8s3$)d-_Fm#; z^yDn~BsA$EcVbh*C>U(WaUx zd2XGz21BL-vDf-EUgh!i>Jw|W{T?nAL0r`Jok#I%i5-OG1V@iYq5=wtwmWeQ>TU$om%NyTc zTm(!$2O-bNK}Oe~cW^by^=8+5KNkdr6k?4hKbJdaA@+*1|@YQ&pLRb)D-#bcdX)?v|(a;&Pqx)ji%>uj;sdvceXdF zX!5!;gcOqasd&qH{Nf>2{?>(q9EF=r&w+l@&U?Q+EEVOq#uU>>;*7cE{?KZNQAls4 zFjMd~!A|5R)8Br>PmoNnh5*&k>v0nRiBGlhvhYMDno zAL;m&1b>}cUtVRpQ4%#9zhLoS0ql%1)j?*}`&78tY_wI9gktpu3ZBNN>dW`Ck$1jY zR>xF|OX;L>Z+^cskbBBT!$2%SA*IUnGw?~dQHOe9LQt6%e+btQ4}C zW)>vFWJrTV2~=LLy(-%I8f4c!ktE2s;RhqlaPzs?W#k5Hkjg@bDk|EM5j1AQZHk%%Y#`W!XjD5g4@QjF`#CU0{lq zuZoqb_X$v|`f+j4Rj3hR9UT~!Vd_meTSOE5UVC#7+k`*l-4m3z=#e@d@6cTp=hArP zy#YpJJyPLc&}(LtA{ZTj5PE ziVvMz2vH4&bt{A!xDp>*9nQonLVQuazSAk!2`9YqxsvE~@q-ov8uGBWi4C6{ zUFKgAnO3oqTg5`zS)+GS+%SjsHB5H~(>q9A`b?(Q6m562BkEU!>rB0REe7M#9Cgkt zLA3DQE<&Ndsze1uKUzHkMbWRc8O>T>(PnKh;~s`2s?xRzt(wc%%CZXP=RmDR{Q|8A zH;vbvmN0F^`*Q~JoMP+0GQ%E;EV|mX)t`qksGz{wKnjm&=3r`n+#Ht+aI$9~V$aU-++oAc%&{pjxi&0s*peIh~>BVEPL~!fUsdqdt9h@`id&w2OG3J*l{J(>XTp`v!BnfkruJJI)6U zbpn|i^U}j%kg?D{&1kr&2`TT=HH^(U_dvOMas7O@)vkv05WsOflZ6!}gRC0(TvqLx z(|isxk~ig(qr!IAeJwJcS(o2v^E``roY)+*dIROVr5Fh8`#e{~lUp;bd$D8nwR8_{ z6HJ=_r6oP?PguRF(aGQ#a+`}K-(3wkzgE+)PWcSIy3Bu>S;uyp38F1F1%Uro_y`~x zEZdzu35SBm(Nu?_A{bb0l($=xqml|Z7DmF-Bo{lp=kx%K5Y=1vyRYQV?bbg&<=Qg* zBB<*^yxUv8bSUdjj9VlbZM#c^3juo7PoT(T?BqHSS`A%& z!2BgAioRY?csAYlu!fkC0iyVHd#-Xc?aJVK)zCW}9-?*DmSn#sxTl3fp^n*ZWMT~O=QYVR;9GFB^tU?a zMPdArDT>MCXlHA}JbmFr*nRp`H4It86f2O?gOK2DA6}+W-1zAocm34u5A6kNr*Kb*Zm~mE?X4tn3{^mzb`AZx@0D8hYK>P!fnAIXrS@ zxXDfrse-GKk?DTBccj0#0(y(vcv|JKPg@GKPuK6Kdy4yy!1HdHzn5Iqw6~7On3?N- zZ%1q*&1dg?SD$M_*WOv2N}JT8DN*{WR#X%{B>F_@paXx>^p4O`o32;3*FBD&8+Y4B zLHuVS&h~#+0*bLcUWkI?g#^h1`v<+hlA_2le2*l6T8n)A5S!&@&nQX*qZm>1CK8Ux z$uY#TH)67&F%$76q?b*tvhm z(;rlQh56Q^iQy*J)`sA4?aJn}X2H-SdgAPFT?n2I8HK*cRC-+LkVRKKLj8%~qof9Eq zaXnpCaJr8q(a80X0q$E^T2*&4Q7 z&ZKbKjAf2ij{ZW!E>9Qogwgz*w$-t!$?t?-{`nD>;?w*0=l}N1^ST2A~F{GGA z%=*gjoSB`jZ)71grBdU=d4-|()!|q3NFByA#GK>b-*4s@+dZ#OGa+RrU0vi$OCnj^ z@Tmhzqt<5cv)$P!Ds}Qm?F<3Qw(FrLYfVr{yU!Gj{e0au+##?Aafm1muHc`l0hPDzWekh@PQHDMuS3v>qqgVF1e$} zv_#AI#(Z3j$^+Srwf84y67D;m%1s(!e$CeIGoUsfae2Oo(~xosa+s?k685eT_7{PB zOY-tV;-*SbhO>EcubloYImSGQf7u{vrvn`@@GzwFG z?gvOak=tEXcGDCKkbOT0F?W#-b#vuyknn~!e)(QfusKq1BRcYiAF#4tYtdldSCSoq zlcGB3JCa<^+-o^mFuYF28)?4~@9KV0s(JMJ^KcaT;E>wy)CkhEG#J(cCxv8eNj#c z7%i65i_f=u>l5-x0LEzu{EObU+S0cQJP@tkZ;=n!1)pu^Dsq|Sqc#h8Wlh21YRJWO z*=C!6J8sFYwv=)d&Qm{rPpPqodDe^zb(xYht5J5#7xd$o17Cif99u|ahW zY>gM8+La=$xl1#>w0oPwr||@IjO_0F&V3y8D&tXQ7KMFmV7I%v&BN@sJtg0A%WZ)) zQi|4Uhj%VYN+qn-!A=#+Chq$#hkU{=MCIW`1$kzLL2IkCFyr_@@-lF-BZc!$ z(B(tKiXb+bo6{ml6gK{_IbBk&?lI3Ew%-A0_pP=jjJry1AtcMZA(Kw#$HT{`t2X-y zO0KHfiwbV{I$H(R=TV;^j;Uo@cBj8uWHZrKE8Ix4suZDyjITIV^j-4QpD3c$-S(A0 zy_R#ET}Y~$+Y+*ieNn`8ks9OSSWR~beS#Qo#%B1+lVb(d8Q?)A0H)f)F9EcHpb*Ry&i4t=<;E*!1WsMAtS0%?@RFUwMesl4LXK{Va zc$w8`r{yv{#&?-Ni+gX=+^keswLnhEr}hRK@Y6ky@cHNZqr=U!=mHc*^2d<&{QX4M zY=v}4u>IXpe@ZKg zNCjXF+Jjk5)tIO1>A8{f?4_~jd)&JB3oiKH^Ve>q>ee<33UGXm8u+d1Z_qjv1S&^O zR!f0|nE7cCs{0_q@GZ)9yEo`PKfT}#2~!o!5{1@!orQXxaj2=M@V^fW(k((@vP{<2rn(R&^Ne|h{)|e)3rhQ#KwAP)FQg6ZQmlOVYYy5 zIq5mdGi0TFptEmqXZQ?0zuPLl2pZ8iSkJ~$xFS7q5_aRf@pZ_da4KR8HqbMk+j}^}ZBr*AN5E`YPuXSiE35y*d-w$M^n)>Z`|Z`8)aM1{{L15<&-AjBotQh4s#jeA;!X z!4Gs5{3?9yBhJL@ep>a+ac=(y;`*by!Uh4L!2RV?&T`v=y2nWQMv}Lv;H8k^-@A*` zHee7{s=6q+s>1b&+0L}c)p>7)mdp=Ri7fxZ3+ww;&e@$he6V)Zj49~2Lh|ev94(pI z%)og&V@0!v3jA3nBqZ3OM;=SbA-V`992?1f1HSGr!vFNg`PQjr65-+d>|HmR$@oG2 zN{0d`vZ6qYe-QUOVU=|60bya`9UFe<FhPUeMao63x=O7p4B~PaK7dtAX$QOxwd$Q7UvB*w zBC}X}P)}}PH|K|}OR*yjAwVTs=zGs{NuNd$Y2FW<>BZwO$Of)`q|C-VbTOdx6*?hl z;Y*Jz?spxa2UHM81yv5(rsaxQW#&7LuO?%WA8vM(*Aomz1^yTleE{s17>Y9n;?7=s ze~Z%k#3z8N>hd@vSL&@8FMWq^Hxx$C1Tgz5b*EA;Hq3^8EjF04vWQY<+xVo&SMA@BmhNp5CAayzj2WLP4S4YB#hCT=7+XDp?RK-L4d8w!-5GXm2p?-o5?S zF#2}11ufmGy?(!>|3{(-Q3^j#6&@q9-%F}M>jdyQtJy&zZ&091qoogMjV**%TRqj@ z0KW5BT<9z-NqEb04k>X^f?%g9pFmNIaB#oDKVc_o2?+>u-`hJV z3W+Csoz2al>%Pp^IZS(obYzADekVVb4C3)S@fS}kmru4})drL&{FL|9MmI2s45#`cpVq<{tRs36nR5x4N=?1h`A!S9l$8C&1g})7E*;3TJ-Yi@om&9(ydS+9+ z=VXwbAxne+@6Gw)QLDnTHNV{4vVF1CW84`MZkvitf!?#-99|WV=GvNDf>ZcRRlA)X!yS{@BJ@26fLhddi*@dmR-*3C6)8BZ6!UEkJuBlv zzP@BtEu*S~kC0yjJw8Qp8TA>Q^$R%Cr@m$b^}N{a8{(9K(^yHD?C*wVY}Wn#Y2OZu zG0xmd*E*OIGQXl){QGfG9S#Bu=tk#B|7hX?KcBYU9wrv6!B zo2phvRnNyhz<`{y8s1$<-U0~v!uRfj`2vC%m?0ECF@V&5W|Vdg^-X58S43<9xEgMc z7TOWn$=Ww^+CSdfhNYNVeN>uKpBKp#j4GldSbe5)Ms9T8^_t-W{^K|TluVYDQmi0d z=Vjd+#1)w3yEdNhocrVc zy>vuPM4_1eXD7vd#@Y=YE3Kr9y-zogpa2EMtk-}lt!bp4lQc674lS1yE30|7WK5N{Uv+(1p{>zxkX;rQ-zG zQTllXvwBOsRb8#@JGf8x~s1xq#GhtKwK5d{5~V9Dfti1E_|9^JftsyniJmX( z27EhCbAfG;C!28vIE@s1_qsmAAGE4!t8H_++I0WH)Sxl-E$aGRMt_QGlZ;rNkc+78 zN_TX(N^e=}JZPiVkZmLA@f!z=spThQe6G6|4^%VnBHr?eUsLe2&w#_PwmW!ZB(p5? z@q?c>$qYh?Etu)i`0qto1idV|ItNEAvrcC5fxTJ zyx40!NgaU&MfHCFtO3N%2d8%scj}c)xjc-ptCdgYnF#IK>LisvuXA26F!#Q$w6aQf?BaUMV%@=Lz;jCBQGp=C+2c)VUX>;QC$YvNu5 ziaA|hICjShBbEexaP{KU@n9#;HA*>-;edX?o<9HK5F@^F9Mh%=Bm}1U3#vIT8EQQ8-zEzCtT>3nCAO43Dh*vh1 zxTG@NL}#and;EJ^m|+WQD*9k)yCima#2PX@C}iIUFiG8yCXv=Pqr8{X{3fgf0Hd4DzTKZKcRIlR4eikC-PYe zn(RXvf=+prG})u+Bx`h^-pF};;8P-KNwsr;COAvO7-mz zPNrM!sV!x*L(SQSk}$(2I#>r$yT`ykcPfa|%4o(H63l#CKy*Wz+6=26o(U?l!imQ9 z$$V351A8gbu%7-(GYd;G!uoCf9WI*2o0IzpzWnUw8TTvkehN`-zL89P+*}d-cp^LV z^mRj9>&+{Yf{dmC1+iW4ztZhS<$L@0@)#7?pUy{r^77gUj@7OnJK;nf|NU`zHDMhH zXlW~PHOc%^#R79lzV=boD^ID`1i7uR$0~C^8%%h`U4YKop7+L)PT843Bk`NP>1{R5 z)y!;o6r997l#%N(#(nUmY48I!Rr{=^Te-a5?C z*Kfi|Wt$`-j?Ds@L&GS9j(q$-*T>FD+F^V4>t(^Ht=M-JOq2jV{;rjT;Ie8kfI>a+B}{PN-(z{a&>MjqBHr$T&V z!-~rCt{T)nYm{`ApZ8-QHKYqX0v50EF!8=n*-`_-!O(Hts>s%jkhPb=*Grh;U@uVE^Msz4=ME2Fo4nNa>r95 z=aVC2FV>@pxJ7*W2E(b2k{@vli$8yeBOQ~VGt(8$%Vs3vdv_%*Q^@YF?SHe}t>FE- z6ooM#?MN}&OJD;IB_5|LU1wy4z}a(l=W8DdmF;iT4R2V-%xwYBNzm5_0+g}s=NkQ1 z0^hV7>UcPGg`^nv`SdHIYoZX2f>a{OrZEsZoEv z#_9NujY^9G>Qs_tr=pDs;>DJKjqEaQQ$Dz~*d(qkyz`=Kf15yoyuayOh@n-xBhIf@ zi{;i_5rYT*ceQpy(Wj@3-e^75A7Qc#U5?$y`l*K8Ni8~r)BBt?h0APVVM-w~gxE?t zh%vy4{t(C`dzRkjv^tA_3Sd!jvxg98MgGF}I}iq4@j^z?JpZyuN+X;1qr0!3p%F)< z@p(dy3h3YeT1J2Tf86-=3C_QAvthr8M>4Df4r~oth%&+>F)&Ukr#5T=C!Luywm2y9 zB#(s%Rw_Xe!1m!_nKHBR>(B48-fKLG*R71>Y(^8>5&Ame4l5$7F^>4;yE~2$>P=tK zbeO4>K$fK6R%8mD?MHuIPogrQ#8qF5phn)u(8*9^UqtCna&zYnvmmW8rjxbH64ki7 zT&f^C$eqcw#d#M0v4^2}+CEeGLi6GKdg6h;8%L>zphWT0FNT(-EjK0oKp8*5hg&7d z^IvZ@-@H{8-z2;~K1*u7QP%P6$a7QgJ`Ghx?Fc_aPOz|*h|3r+%$}si_<70DGsl;V zZ1ho##BpntsOfh#8KaG6H@HZX%0#D=MHRB*usmO?MORY|$1TdPv6-$oYr5PnLsr}l zzVO=b7$MC)c!xOWWwwTN0aG*b@;SsWehb|E>}jOIT5=!!Ik&al*jz6%Z)l)szYWj_ ze)`YlJ-wzMnlrrg8ZI^}m5q5#+tJk$-mDRH$S4Wci;@waAtvx^7j#wbHbm10BC@r%YGMqkO=;O}{N--gefmokRn_*0!z^lQ zyam~tLg+9WefM5g{IMk7QolWOW#Dsq^(@4q0WlK9h_vxnQ*6k|kD(bz5LOXAu@$}j z6^E|Yf$YW(2=tk$CF9IMx{*Hx_+!pciM8E-o?cAzGaN&W75G9~@cUa-W@LfzgF#wb zYcj)^*_8*^Jub5|Ihk?2f8&0uGN>3WaI)0q31#T7M9%GVh5@8(9#FAxhUiu-ayv*_ z&bd2vwb)y>CMh&V8Zl1tTgc5GW*S{99c8OTY<}mpbaY_gqyH=2Jn>E0={e7MfX}&I zS6b{Xm6AQ)QoNy-u-gVRO6J)XxJM5pi04Pfo8Ae>KPct`*R!BXfd&(a1fUJ~zp-y> z)JRC<=VN54|8||yRE&NZKfS|u{m1M%!-q7aV~1A`S9OlKSWX!`gX_{j2frhnHJ_a! zzv$-ZmPHJj1_;n?Om4Ti^_FP6Q7c$}>S75q2e24}_BuZsxla@0MQ&bRB{~1e?!q$= zX34ZqtIzoe6&@)e&&dVm%-D z+gI>RfpL(~QqM+jXfqrvwiVXVMeI ze{OUu`@t zmWY+~@v1Z4^;hg2XE)!@fYyG)U!AMie#s6+P%Adxc~K) zc~G(M$&E2)__N1M0-#ay%g8+6&&U z`eF?Dtra=xrZ3F}-+2G_EmBTVF|)PnbCm*-p9iTOQalD5>VZNVtx<1ih|-tOd27I>_Fo6$Fx{9w(Bk9IA)5SH>4lk?i3C}b-vD`LWKs?rE|2S$=S;J@v$oCeoo_h!>EAAgW!TLm z`<_H>U!;a+UUv!ribrV77H!qh5t!umY9M7660Locs>M4Ad%y-@7x`7e5MFMnKTaYy zXnMTf9U-^@gTZ5e*QO`1cyRS(CDLZ5w@gpC(bHBNCjqcB#011hJ{d)2ydpK?Tr+ez z{}Tp>jop4vxZ{3t^Q8n7+|}zrp9-(EADXTgm?9U?^8@6RP$eh9B5hSOdHhpr|vvB_QTWapVA-cw$=JuE=S{_4H z8Q_cU)s_syXbu*GzBDE{Tc6*VN+V3b2B>=C!o1(#f(kCU@^O_Ko128)cJTo*4wV&s z{6<%yE#zSYWn!b9Nh5%=$wCcmnB3>Nwkl+Tw}jm!?6mgmf#gWY3V6KoHzya69kWxj_8C0vv4bbdOGV3W9$>kQ0sy!Ms1ak{&Dy@hu|^qkC_V-++pZ zMhjSl=xGN9k!DA#PhW-0!QbY5NP|r=F&Gl*`zlF)Ku11GUvPia#UtWzL9auN( zD;yn~&Q4%vcJaJZdE{`tT;I!-RQ1Ia4cEG{(&I{be^;D@7Y=tODU+kkQYLG#HQ-5D z@wYmrfsWCt4% zVX1VW4=>NjoucB}Tvs)DiZtknaYHyAwa5YWsBH4l%cAhenOa`9_i~R+Vj9E5z(XO% z-C1%x;tw`_w`cz(GTd2zuXFBfKS>uU+KXz1oYB2NIUk4uN5rIxEkc4-r#7xVVfFy5rhLbwxbY zlyc$i5YNd8hxJhlwilJGT0Nv2ox0pPk5iA9gSq(=6{$MyuX$gbn@j}g?kN4}3Xr(rk1ZvW zy|5^W(BWPg4kM77R*MYM3DbJv@=*<`2PhE8)XAz&{9oeDn^5It*#>2ovY6(T8bqTn zfk5T8)No;O=43QOa4wgd`5Z}x-+keAO-SgYoGem+?gsk$y=P@et>H{kL8S8$i_u3&i zVIJUOuO`4nMBnoTyF_&1%E^mSOoGbqS9ko_Z!cDf`GwcHQs+CAaVJ{}sX~JqzqdZ| z?5BCrn?A6c8AuljnoJ@;A0t^g?M0HiH#*pfsss!7sEoc2ZMxzMuo~>mx9)HIm@7Lx z7={PU^>BHsxNXPoKIarsECBnO6)2SDYM<4u@~Lm|y@;&YbtC6)g>#SUJ*#yaD<^>$ z4LEQ^8Xx*MntEX?R$^-h-=kPll+?+Iu6r%fL*Gv9Xy*`#uREVTBSg*WM7uMdPwZs9 zS$E!EA!n1qGN6RiiD1%etkv?IoChnJ%e91zGw@ry$wSf_D+_|##|_z8Kjwt#JN+7n z$I8gpKZH`?%~A(MY}}XfW{e-~1zXpz&@dX($xGOju~ z{{;W;c=$F!C_>qr;tEJHj+YaY(5a%-YWrkT{AgNc>iaqOb zDPDvA$Jw4lNzyb2Y-ftp>xKiP{tD61jPzguZr=4mpW2hjeo8ru9X)NU!}YjA zJBb)O?%KOA{NVHs`(b<#$BnA7PRGP}GV+_8_mhsxnO+OoVMJ`-`;xk zk)=M)qZ3_iQgqpxmA_bH&?QZb5b1_d1RL7OMU^+{4aCr%|G;&%Cs;_Go>?JMkddB8 z7c%w}9TQ48vgGxF!Ct>5jAr#*@2HyQ6`vsfsWel%=Z6mylggfz{s!b`7T#6c?-CeD&CV zAEw6rQdvD_y-BLp*%FLU%?mS-ylOHGJilBZJNTEVXt**U{-|V91#upC-)D?AsW$fT zcE&a{(H~=HUx#WmdPp zWAM?Q+d5M5ZwY0ixj`mtb4LD_h)0hz)%|pYY+>)p8dq`VHOab2u}8~;BS5>)_JZbb zZK+tv-W<|nyNCx``F2=XywMbJ4WHHfSfC$Jz;^vNqhS9|w&vSNxpIS3EZ4u1`-NNB z5(BJMUMJt1>Tsrn>dm?_n{Ew&?EXV9@cP?2yZ?ZSWy2&+g9X#Yxk390PMjZ2@;$O# zY(eHDdF%GYt;Sx9pbuKLo?}_`U#tEpz+pSF9xttjE<3_YKrEdUS9ME{^HU`D@I?Ev zWzmEs=CV6tDgQJ({@-&=|4HQVmS@GW!2C&Q1TPaA$V&kK8)rtWt){pl_xYd4Z zq^>=!*=uojR9t;>mLKH3cPbQ8+5W2|Ysey^_(BW7=CIY)pm?sNN#Wq&@RAay-)h{P z-UW+uq4>Z3Qzl@9eu}@I{0&vJ9RKiqFZ9F&_hAe1Slk@qo>e&#p zgYvfY9Dx!p?T~%@_YSA6EzATb3$Wqe7|Spv^@MCeBgpamaQ%z-eI*!gy?Ea}z^n&> z67Yi;z%XtBK9O;-3EUJFsbnBnX%O?5PDztGj#<&ib9){8=B_OzwhEIzUbFLj$8BV_ zpLc_N|CyPd@=aubJp2S0j-{_GCnym}(ey$8!{A~sGqeo)b@Vav*bgiI;Y<1wfEyg? zP0l;8=CteCc2|LW{`{Ka$PD3k*PhTMBIc?Xrz8QF`do9`bMC`5zhHi>}j^q%++yR1T?w5*U!7)zB`ckUwP}lw|{QHPk)SDLD zBYn-iLAW4<=X1)H;ZH>xF}suZx-{JeFc+)AdoCO{ZZ4ZmUA`hf|J_G^@8)y6IiRw6RPII0 zH;k@4<$^{%!hTL9<9p}g?(MmQest7S@61QOzu(-e2?_4Ee!JjHRuFhYJ1fxag<6n1 z;k3WIH5keu2xV14k$)m%p2yf~s{&Ev9$_Y>Jo8)jHj(v)oA_7zvT7Sqv*5Vr?jd1L3#S^a!NcTYJ5T-T6yMf|ysM~)y?c6oZW>gY z8qQ=>n(=~wz3dl7CBS3C#H4NTM0jDh#FXP6c$GShe&mhT!NSO-6_ z*%zK#z5{v(_>G|bdHbCK@cYLO5M*IMc_e)8ZPDU{eZ7#+c#d|I?QE-~7Wc&;jKS2n zR48`g;q4B*;lY;Y+{DD~eGaB4_i3{Er_Eg>rs`{oqR8(4bEAXSa$5|%%}pBdKrCUm zJN~=u>VL?A|EGEh?+0~`X4H+3C(Bmc83W@RO2LM-aU08RTX3TM!2j-5$`{~EY9!Br zxZL$^?wjs3XdRW{otimZ$Xmv%k>2RiP>6qP0K1ek7S&DRs-OXa*+BntS0{ba*K5AD zk6ipl%!Jb+%VeS|D_1HEOeT-JL0sYrd*{-pU%X#&lH^J@7E5mIvBJaH33A(=*KE}Z z#6Q;o=%=2ypcCI@E1Nw~SfO2_rlh2?lImq;iXz+WBfm*th6?VqFBB3-kOmp=*EGhO z9Jui<93q)`SgjDRI)&V0DB}LGOQ%dcy*QoX*(cfEpTi9Ahx;P#8bs!I%qr10q{$x; z(NXFAS=@YcBdiz!9({e`2z$S#)|c%-%FVpjIKDob+o}~T{W=cW^4tNID9IQfg zTUIUzDrvN-fSy*c)IRtgxW>ne^YBtK1^iLaGBghVX6D;WJ++tUYYwJ_qWB--I7)W; zE>HD5b<`$1!AV~@oS|GYddEw;$n*lMm=LyFxM*ZbbFQa>&CP}cR?#LGlHb11)w#H^ zE#vUT@$_>0Ps_Yix`@(no43_AYEm9hOi8Ds@g{BtL7)6SFM-M}EWO5iXV3S)_hu?X zaMp)^b?itcs^w)GK68EnHNK?$Uh#pUx(vnI(^$NF1@CcOVXsi<0HF;>P zg>vbNXCuMT#`iynL^oV@nE9hVx{vW4XW}qMu&rqf!W!{<`aMsC{2~7v6K~8#ub5vC?8n)zBj-v5B zT5C9~2q7d)*&MElmuzkEc)?tn>Ir_z*@I>=17B_*5&u1p%8@8jd`>MN?cpA^cI7W$^e>vlRU)y+GpuS&<6P(sRgOox9YpTI|28|uB}*%cg3B&x%eD`R@$>l z^H8VP&iiDkL6yo>$mWxc&&)l0FQ1{7Oh?UmYwV+Wk}|&_0mS0++VTObW98GgD9)%B zE5UW+u6+7#u1c$@Zo{#>yV~-d`aXT1?*9H|rT=Us3bmmE-GR|=b!!yfjy4M z;Hz+Kw_0xX!4HZZM}d*dl&AxDhuzfl?obl~045el4y#~6J=dcs%J2lK>bw;hmX}^T zMBfH1r2Z_o23$wvOvYo+}AcbvOG9rPNiY{i_N0Rzu!BRb1 zk5^@-{(uKZAt3dgU|YO?2l+?~h6;x&TCR>!)~MczGrm8QC7uXX>2YjhSeq+DCo)wb zuq2i~!P>vP?dOJ|i1e7gg>PP@50%@M)^70~ys-EERZY ztWtruQi#=aWqP@JObq)=!WMFB-h9>Z%NhAeVFqQ1R3u2-=Cu_;4(1kopV&3OIsZ^# zH+Bz&qz?a`$hut-C%u9;Rt`fM#wK`AlQ|SQbU?^{Py^0JVYFog*S^o;FVc{8WJ}W* zNkz4KRxmTS`sa`PQ)yP_wL zB)wAftWN4{*m=x5kCRyl5Zfx{$B|2o^g1{)FHCfq6s_y~_rbz@tDD@dq74SEJ%xNE z;gyHt?$@g} ziJSVar^6E8Cts!0Qa77gWFy4_6m@xBt*+U30r0#0w$U!To$_BOmP{Hi5B6B#g7bV! z%H?b8^7w;%!CnlD{ngQ>GlSJsP0!E#g{b?nqp79%{dpvzqbztvD{aKxFLG=zA>Vfb zgPQOrou-_`gvD22fl5%a%ok7sqXQfUAwl7KK_gwtHV?%1NR&o{kyQV@MEj^SkH^OW~b@%oBDmtL~6(hJ#`+>uc#msj^8O^2S#cdQVV{k#X4HO%sZp97Vz!VhJ% z7nLrb(8QF^AmXqy%1Y!$jAum%r?Y)%u~-w2FRDC|i^&HlNuQQt@29Ch!TK|EcDv4t z>S#pr5T53`(W5?MKAOc5eqPM%*o1KF*Unr^OaCQ>AWlO*$%2%3p`x5xr$0A%L@v+i zq1Ma{b4^s$7}Oy@#0`B%H6OlE%rR4NMrGD=6PeS-)gkjFjUa;~qVB27@p-Qq78OLq z>2(om+I5(05mO@3_Ml3_2Zkfo0@xotZ({XK3zZ|XOX(`!?C?)CnQos^U;KfoQ>`XT zJyD=?Hpz!lk)#o%U94Zsv!>-|IHge--e=@09z)k_ZC)lllD*%zH{>GHT?w;7wVH3g zTy7jVTsN$`lWe4^^OTVoWz`7|f_QzoQ?hyb2xmYaof}qzn}y=aZMStlUR7N+E*L8= zd|NbBquMw`$T!(fT_CCuYT}a|3XyWxd#1qzIO!l24TfO)vD|HZSuo*)oNy_aD>PDq z_{sMedD6hV1650Wi9R%|DrW9qjGn|28lcxb( z15~ruNzehMYwfl?3B%OwgpQ?MrYl8+-3+iB$ml2Bj`#4se=O{~4Sl((^^YUBtNOFV z4<_7zMx(0?WPx6p;s;u#ABHM?+EzmbnvqQtw>cKEmn^I-Dx~g~ZO`HOZ*ba+@D|Sd zHho%r93z?%r8wZX12}rNJuVOERb{Y^?pGOn`vN$Ej~L`;y*}G71ctmD*ruN6^TRj- zcJ#jB?!I45!{JdG%9hdu!1W~WX*k+6Y;qs^VHkilcJDO#qT+T6h6ZPOtl^dG4Z?}C zpVxLG8l(FV&!ITGNVnEn&2cz|+v5Cid!*c2)Ck`Q4%9;Xh3>cvZ}us_EkAeBM9=fU zZH%!NG&)9sc_O(8xi4S72sa$P)=qPC+vZ#do!|tDf7qya%S1>$SInpTnlDaZmJR+G z#}5JgnlT=po+3Wy$@LCr`^(*=%)POnAdo4~6pt7Nkt|?e=qq-{EfZu%^k_6=ZxS^v zG#TSK5zMd2$^$_k&IWktAamKRpO`(shPqs(Apq+cvgu$5Mo=5FP03v$6S#M(H?HDw%yFi)>_?iFD kimLvdaMJ$|$7lJ*O#u9dC?E>RwSho#QcCY(5+D8l3lN-8tpET3 diff --git a/Documentation/pictures/bwv861mm33-34-annotate.svg b/Documentation/pictures/bwv861mm33-34-annotate.svg index e0b80cc584..d321ba4407 100644 --- a/Documentation/pictures/bwv861mm33-34-annotate.svg +++ b/Documentation/pictures/bwv861mm33-34-annotate.svg @@ -741,4 +741,4 @@ sodipodi:rx="7.8389831" sodipodi:ry="8.8188562" d="m 103.86653,28.416313 a 7.8389831,8.8188562 0 1 1 -15.677971,0 7.8389831,8.8188562 0 1 1 15.677971,0 z" - transform="matrix(0.8,0,0,-0.8,1.9597458,92.108051)" /> \ No newline at end of file + transform="matrix(0.8,0,0,-0.8,1.9597458,92.108051)" /> diff --git a/Documentation/pictures/text-input-parts-both-annotate-de.png b/Documentation/pictures/text-input-parts-both-annotate-de.png index 0eedd80e78d6b8b99465f94cc34e46bdc68e7bdd..561d5e642e60360280b047f6c193081570b118cc 100644 GIT binary patch literal 30356 zcmZs?1yqzl-!}{ z-{O70=X;;`JQs&E*EKUc|H*&;2L4JziQoy%6D%w&0u^PD78ce$AQl#OEzToMj@sv( zF--EnO-@Az2lM#hSi&&hxbKwp-7xjX@BXpnxKh0^nbhwU^xkVbTfg@-bG5?q^z`Jn zbFz1{Fnedk@9b)mx+6t{h2=q_0(z{90HxpYi=gPW-2 zt?x=-avNQzI6kHuSWJ^YneI|7#N7z~_k z5CKS?3$ar7ro{C%8sA~!S$4pU>?gec)Avs-P*rlijjcDQPayX(W5Uc4$1g_SH(~;s znL9?Zt~rNmDEPo>eg=*E!h+OR@2|D1%>K;XE6*d_)l!QnmlpjhF70GSN`V2c!}Nr6 z`%#|N{l#ccCkEk;^S!0``*50&UFkQF!;v`l0W!|Czeb|wpALVa3kEWldrQs9 zH1l+ueW;HQZ{2AQPd7$091r{tzE+eCzS-bB{mCm37~qs{n&GOdXnIyzZ-z#~h$!wl zkD2sv&U)kX4YzooNR!i<`rMDk_0)PhSH=xA}y$=DWUDt-g&5eiA%&J~={Y?Q) zKsW0|kyews-{LINGbw>r^P!TBfQ1nH^ckt;Fe*=(bkV^AtwNo=3Z+_G5|WSq_7M{_ zAxpgC<^8$t2A}oe0ZzA7MG7F`nZp=)2p_%(WTZ)zBEL}3tg%VVF(n_VKbEc3aXXhT zEm?@1R9Qec)w{NwPJZsOHH+7V9BxEVYkVeU_v_WkE(h|N8=w<3)FUH`O13EELqk|( zcEm1hZ32?`gX(R6Gu>^(56EtM$VdhBb-w%Y2K5?zlpIK_6xFAbSn@2Yr3 zM$8yEtDMpccI>vN#C3=L3GL8aBgc4;3H!L(3>S~zoIj%AwO(4h-F&_x$*$qm=*`Kl z$TRX3kP~ol;?p8P$?G(Qu5pxBAZVkk5>J;#TdQvAEMdWR6|4HFmQ?fI5*Z6-hl)oLuR=+ym&9nHshTqp7j2 zvojDoD%Ks;Mt^^8>9jgP{V|9SV1ig_o~%qKXaBAD+;(43^*G;ee__BR`*zZWyybc= zTX=@`5^wz|e00Kf&S;K062n|23m#W{*scSqD()6P~fnKWg@*(-v!!)S_(k2OCSZG@svP`rAbNk zM`BGo^Dx?Qq{~C9k(iy}r1P)W@5=x`ytb-;4_i2gr9>wz9)$#43*}z7m@7mn5L{mG zc|B^k=O(>lCQMK{DqvG(sAo^z8apK)biyaA*FU%TA^%in8|Ax!qXJx^Nju0$wMM#{ z-B#tdr1C2efvLS|rS+0$ixOrL5jKMno5#F5UBiqueQPd%>Gi}ZfcFt++{s48S2|Tl zvu{XN&O@P$%v*B0&lvVbuB>D>>srz~SqzvO{Ol=ru70!?O;&`QpV1U20d7&XwNmlx zbk$pJ=@lW9hie==jy-@-y-S@Y<=6PwYzS|Z5d{&YRb z%clvV8WOnw851cOEhTNImFL<-|ED-r;X|rSkwxdLd&8f(p=TyD+kdAd5DNV%v(3_* zmU?~bE^hmebuW2~)Xl%)(&L5kv%N!jiG&fXie&c9Y=5zwW7e{ahd7dDTC$?n!C`w3-7-?TriC0 zWK_BA74wK?E=FqMJ(jF)vD5cZegLsBNb7?q1&^m;11IO*3{zQqpx!*a4cqtVPJVqjChpItOV5H20#7={- zWYG~}HwFM7{rNs1|HKgeU96}KmE52518gJVZ@bt*GBnnWm<& znKbmLqF!_QF@5#dT8qq?)>gOk80LX{4Vot}&CB(Qm1CtSfbYmLlM*8UBCwE@c+obN zCcr0|O{#!?wizwBjphD@sCzn^di zPP`BA!IRT|1)YlhWni2=e-+XULa}uK{ntYPXqr~;NA&aj1az)<%mcByTJWF zGWs9YJ3)b|{hvgcd^jnWiZzT^%T2H49pObqikHq1lS;?4{+D zs+p5GkYxOm(Qa&c7)_6%_Qe5phEfbMA|&8Z`0`sI zYxj+eBKNt87p!^r!_|6PE038~Zw7>@cfSY)%WZ+16#8`v0xj;rQVg_KXr)4#ARu)r zAhy~^^AnM53-UkIKpO#Cn5DXRn0dUGwqIPS zqX}4`TqO*GnRP*RaJ`@I4@iI@1@k8^;V|SkhU?@4TYyGyHVh2Ag!RI$;{vkLw+KjS zM&Srwpo~jsRqL##?Ieicx;0@a1WaO1SFYA`1*sCG>>}+_=4X;to1%Fe(kng9?w|TH0X1hi8=k@p zm3x{Dx&f-NLtjkGB>h4K9M{u@yKsL;g*4ps|SU~#G| zxsNhnX;(rYvCJ~xa4r*d9k(mqz$-S_>{T)W@k<&D?h7$SjC|*_U*AJGPWr z10Ry;r+H8a8ejAd_Jo3XuZ&m9v!7jGX>xo@G6(1;C~GIgY!-k7%p1fUDEAA3dn4I6 z!h>y+y>Rg_xItC%C)Rs$v@Q=ICcd0tu`E;2-w!HAI(XPPxt-W1Q zu{s)gWGV&fcRSD*J=NQwwK8heE!7k*t)<*=NaqS`?Qfz0b{437)72=ZLa~@n0 zE;d)hXO%TcZqsG?wgVLKBSwUEQtE!KrS_Jg>|CI=O+#;JOc)*-p!edsHHFrT1rKJj z+dm{B&G7K|LmVr<9P!81%tSb5gZh^fT^W@Pco`vwVYvcL#Sqp`ekoInc;xZG4A2SQ<1$u7weq2h+e0y z*?eTi;(hvYB?!wuo$=sMJNdJHg2-IdNTneOhP`%B01qyOtSGp7#|^qkRok!-c~L1a zUc)Kym)yr1&Rfh-MZ+FxfL*XZsDJ7i{bz2|*9hF9gg;*@471@h7pKq7b;)JZ^g#X0 zhVMW(QfR&L6J+pbC~JLaUPbY$tt^5rEX8-}LYuCYtH;ZP-@EKo*_3(xbir9TdJ+A5 z&PxH6`1}`L zh}1S?Km?Kkfq5JLU>1;WHF`g%$HJH2B<6@{uQvG6(2rUf03-&9~t}qV;+^ zfZSNgDT&*9j6YQGUHf`{ddbv^81VDn0oMdVv9u(y+bRh_RsO<`^c6ZnJN}}9>pgx$ zZffZa?z!>fNtR?nEeZz<@&Hbbsprlf=NJ zM_h+#J%LGpWb#Dz?}!Cd(Pl9OR)xQ$d> zJ9kv{LR9UOh8gv^4z;uB^?po7GF-8-#BE;O5lp9^#{7nplTwiI$tNT?XA9|$5ZW=( z)dZ0jJQt_pv4~!ZL%M8w&%{xJ(0*(dy2{%|4IB?3i|o&NQWL3MhCRxvzb9Z8-fHP0 zGg0U>XhLGB#u$8Qh#sh%Z4py<7;ppR}NTFa0x^V$HAM3FqiPNQFw}$q*Bx6+aju@noY#SVt<&$ig%GcLNAp>-nH;x4Lm41h{X#V z<-uOX*Q=fNM-j8;XC~qY;x#|R?;|>3oUTQDgsLC-W~fxA>JzILD(EXf zbf0RS-}cAdq~&h0m&0i4W#sf5H@wc;wzS8ihmMU=s3*3T_%Un>WK1mb)Sg={RnR$)KX2@pg7n z$W2^UCB)l{g5FXzi9Jd9TJVjqYMSe|j4sQ_xcf5RCCf^s&EODzHX0$!f^W(Srj{qb zZg+3ub|-XE_@H)U$J5deKkzkkfvLwMTcdEu2QOcNl^K=KNlAb2yrJl9Hx@}|g+zk8 zr2|TO^15+nxDRgOJ-TfD)ka-ah-%5bI7fNiZIzid(7S8#i8_77N! zVb-H~Q}7thG;>YN!nvDdp~9?FKD6Lg=?yRhMLO{TbI zrw(90R{#oJ*l)VzMqAid&@fNx#&A`=S+Vrcc1A9I7|-BP%(rf77_~ zE(zakL}-iz?*Jl%-Y-zcN~Gwv?6j+lPb>P*!WFDNG^sG;(@`;6Sfg`gLh1_u`#x3Y zx_*g`AAj}U0Ty$3{zAo;%P0F-`J)3z|)g%5zT~nh6Qg1t*sy7F+p9m(eHK1+R@Lh)s_GVCdt?ug-Pb4 zTFuGlUrzNh{Q_yrO|L-x2#m?dC;1*B*fl&$3~r%^ba=S^IQc~m%=Hp|!=OMOf^m`F zS!WMYo|(Lo1V8z_F4gPu4)(Zx!A$ZNp6O^LFPe#lvmM-9qP;$PK@c?o5zeRQa_FyjF5sp0oUe!|;vXLRG025&<7O#NY;2`v#rKQ% zB=jjr^LrR7D85Fs)n#}YY~#4Nc4by%=RE76!zgUuTircL!u|$h<8ncp?h%!1LM&4de5XBHRU(wK}rdAKj_LfFB{LDGgW7jvok^yhYj#X!ud`w|t5vO>w3M>sI@ zN4q@u=d(VLLp`T3P1;;$lGpy>#~c-4!o<&j&O#k5FW4^Q#hbB@N+gwp%#nUUnt9k#0&X4KFRO5XXtmvjY3)Cnc8 zAh^ky3e!hzCu@NPtyMQ87r#3!v*+VNs+pm8E_f!{C)82Y!f!OpJU;g^EGU}e2*{eH zRYXi;kv^z>t~Zv&jHyHnJU7F8#<=@kBd7$)G|6Et^VvHQ73tF6C(QCL%p&4I;Gd)a zE5e$b@Z|#)9_zv`!TYlC7;&af{3?Mp3vD;!{y2g+&uu5)8MjrKjTvsEp}8A;1>?o@ z(;@92mz>{0gA0$}jDn-jo2z!d%N-|;JNF^j-#|uej5ArLJE!u|{3LtyU$s2-XD+4( zx9BY5TG*OZ78N3S7oADTy&&?ki|rB>#0ZX~OCErY)c)D5s+5ux>tj9szav#{uTGy9 zc-mDZWgS^0SA6P6F}{y#S7Tk^G0%i0&%wjbBG}Km&^Dc`xBL6}$4R4eDz^-5Evkko zBK#vyOO>732ZnDeo?kcMfBRl%c0XNlVWGyL*Zwu)f+2BxM{4EvRr2c$!mi#CAKJvq z-2x(eJ=^t$^(jT;sCMj8-~0z6SCE?-`D0@{GHwI(@8%@1Vd6;-H-!+s&XXiJ+W$7)n{8CheWL5ma>~Vl{&~0GNl?HEO)DJ7;B=QWHH3@lJYi7h}Aee z@+f_Go0rm++JEupP@~*x-BdZf$h)r&Am1uWOTCzTyxU%h^P~bf@4TPcZF#CJvdQJ7 zmLhBc$Q1C0uGypt@?QdeSqr#$MI7^gsd#*rv&-c@l1qSbg~OBMP(0;bbwmD~%o%DN zyZYaJzUi2w*%2srDLJh#NKu_6eXxw|9 zvrWz-A$IWKwTf?VoJS@M*_~K*tL%#>1tP!;v!V=gw_)@5zQ|236^M3NjfTYoPMe=Q zMjq|o1Ix-JxN6$+I--6ZmF-E8pTseKK&sSqd)B1v8LZYIyE_*zDxL))Imc5-sHhj+ zE%4nb$?%A7E5u*ibOPj_AUJAf)Z*dkLa|pY*auA36;EO+Q8aF;?toik>v=&bQH(Z9 zWvEtxsy!Foewf|IRez&>N%qHP(oxaeJVYJ+ZcmE)w6?_Pn&S9UXitnzeu0sru~>!WlAZ;%fO6Gl6u+eyoUw4c1kvVA$2j=Mj@b{_?+8<1nBFq zJ!%Lk3o(pJidix+tv^YvE(zS-j^W3|HVU)TmxaAlJL-rsR9w(bNYhr7248!c0@OC z+|A!20)Bk~Yq!&YboZ5iK#YXPCxywJokT0k$D^Pyun zpXM8g#pIB}I3vl=5voBpt~Es7z5PZtA6y{vg(X;H@4+}=Q$`(;p_hy=JeE!_>IsWE&2dViu>?3K|ooSaR zd_$P=8J^PxQt9RR!w;Pe_H%Y&SS?UA zjl$8}A?Ut^Cin&G%oHurfFf@}L;5w$hoD1V!TXD(m74v06-O>+8DS|_$2Pv=_rkND z+ED;|N0jO$rz*IiCx_mz^cR)@_P>8q084MxLaJ@`FJ9Ix-9?a7&eUqE6WSO1jHa)j z^Uxylcpxg*ElLOPwZ==etxUDX=PJ?H^{TDBQ5Mt6`lzpx_Yx(wzECg5mysKGu+260 z%;6w9WL_pP^MBFfk?Nk-(CM78v;ZXKGYVLoHH5C&^+;yJMi#lDH2jVea#s*Sw7yn; zUi+?PusV7#if^*n9p-NU2sGsOyLt%EJ3TIC-R4re-ga<_$zWa2tXuXn6f^X=x-wvlB<2qjU4&af=J z_X|?JWz(=Q93j?pemK*jA*-oE%@8anbIz|tna{r=0a72seOo74z86Jl&eg%LG$^Wh zA<#vL6r_ASqx@Hju$W2{!rB<>L^ki5PRT@9t$XjD0iQT}R?72n5;Zz*m}4?=JOMeM z^?_((MwKN&=1XoqZiw@s?Wq`nTc~!h6+sknYgV{f0X8vE+*i=0@2kAfd3s6~Vnx8+ zu{Hy_p5IWo%3K{e1rNG5k^JuZtdwF>E@$d2Cf)mf;x@8J{jhudB?|x6wIKEpiaV+JIi;Pd^9iQ25!)+)%Y?YEil~5 z>1ssp#OkWqJHj{~bhCD9H$3Z9aL7NaSXLA1+(Ybu$zPsxG#tU^dWCV#{P49pxa8=1 zv-*G%7~NBijR}9{8Ne3xd-ndA*{hd4?U|!kI*iGtniesMhjs8v>P#`ZZZF*9u-0NB z>ui+~mf~)L3#TmX-7uN`xEEZ)#`10_U*$wi*iY8k-MZZD*DrP!j2nqAwZnM0JI;EG zH10!SxEB?du-C@TZ8*)YSvrh*T3HFZKa&n;m-s!{CXuLZrh7(N~&&`9b%dnK^lS5~Let9J2 zaIv{A$(N;#QjV~c#)zX9W?0Hj5B8Ka^QDydDfDyI;zfEI{jUii{HOUrk`n!DLGZJp zmG80-J0M>ycCY`(nR6!Iy8JlhLztDr@@L-=-XTG8Vvhtw!=bW z=74Dc@#upkv5>-<5y!%7c5AU16RHRdY6&AxV(`uL0OhaRQ_M2h9+~;wRpr35@efG6 zj|hG&rQ5D%JehKxijy1&ONEI%WxVTk5av(ik>E&BojSeU_f)YYo(-;t> zqFYQmUr!Et(B9xVE)Gl?eK#zTqtM^DG|4_Nv`WAIKI8YK-BfLXcD{Oggh;f+Dc5R* z<^V>)1Tbp{>%C|~B!2bisup_6de=W(b@cnp;hED1>vEs*#7jbJJrbpA*}#(vR$-Tk zB~#xEg?GPsLmswI)s8D3xcLtqRGjVGSNioI3=}uoyhJaR#LRcK3NO9u4p!}JQl<;f z^1fSvcuqt|u61vUele4RR=8!4c9quX0?nrkq@X45*e|Xq84$R*VV$8Z)=$TWK;e5HnKib~S;EnT9b3)%=r&G^8Op<%@+||O59Q#592OilnLVX4Nh~4F@Iz^R$2aK@+5YZm=wztKRDE z!}0C6qgJijdU!2=%~<_a?sBXZZ!MjG>H5(zW2t9I3C&7EsgXonhJg^!qM%5*Jg`J| z8JZA|Lp350`Z+$yRHJ;jU1-XZkrtNnTLGWZ@VDZXSq&_^EPKGB;X%38KYGjx7-M6> z>UPdxBu6v;2g^5uY$!$}F6iE{y}DV~X!X7p!sV>_jc+0{p?^Dc@fCy{p3ZYzWQiW} zwRVQ3>?!mKsG^?95|5Kz&vX7eQn-B3H!U?n7SynLt8AuwLH?Fixgnm~$=(BJXZSX# z1`_Hq8UjN*uhZARXSBCug>AdD)ZF)ko`TekKz;Nm2ZVSB1}4Y^jgv!v&zdipGT_>K zvw>+RsX!<#6in`(*jxwDzBudcP@;pe1^^ZCloG?Ho3^8&nanv}r|1NA?PAA1|F=## ztyV=z{S}7xf8&BCuE~vmH5?~DAq{Ds3=VexTsaVmi4 zYhz3?%a#Wn-N`+KV!)y=9o2A3t&Z9y#m{ddytRy z%A2@AHJY|THf<*aK^Xj1R7X>AQ5Kx$#EzMUEZY+AxF2PRk_q<`=aNidU>jh~+tXmL znf*&d|F7i|H`%j1m{q+W>#WumLSS&!E)jK z0(5}^-f&qUu_cJp8uogH()tl_)+Jl~|z=eBivB&VVB=scI?o5e5hHex=`8J9R=%XZ?;?s-2S z&vn&Y;q6bqb~rIjU>4y1?9Uvc;`c;hbb;$(;)l!d4)b~k$HfRz%yWlP`B#dOq5s9L-dR!q!QuY@mF}wkgX#X? z370L=rCDe$$tL-zAZFb$Ex6i{mV&A{e8~J^{7;kUB5fEK9ZE#buL8itk+2NcUA1#R zpEBU6^vTadLQHde0cMn}Zwj2x;uoi9pDo<)#ZHoxI-ugnBc+9}!j#~>UP5iFNl!5d zo+zPW(DLHM8@>gPg{)=jjd)GjKgky|`%U*TRGUn{Zbrh*?CJg#s&5^O(ffre-JJSq zkhgx}`ZOrGivhtr=e!Y_(g?TkJw2Bqx*Iqw<(?Et4ckq(0z|mic2lChLtuL`qKO+d zB187ISI95Xdr_M;b0|DF*>_F z?s?RjqE6rE!Rn7y(%OFTD5kJWF~fZC7@F_R9tXvH{u)dd5BK3DLFcK<=eV!Yzcs1d zHM1i<6lqV5q%_8uDTlRTv7k0De(xR|37A-7=0nU%zj#RkoHE!)HlbxjOfI(6#HX}s z`1c!^yg$^5MIo#WKd|QjWPnE_b48j53!d}}f$U+Q#DZi%SL;Ka{-|}Sq4xPhfV$C3 zx{9jaQ?HcVzEPRQNe)%t8Mvra&%uNY9?kX z_}&pbWSL5Khuhyl1kvo}l8J+D6@R+>Md!@L!B9vWOY$utqRO4CFa6_@8$wf3^X@!h zl<)4ZFj%UU(ug{W|FE4G%7oH@lQcik@I&i_{8;@QYhP@?rO<+N zh?x)(!Wm0VDxZ%nr~@!?YQ!*nE!cL-!jiFh$)`C`5bfFNtc{OQycF3^v=T9? zao_+;qomsbI!a=W2z0%uZ7xBb#bTg5e14 zDKSg_pUc9KkpbK6d_Ap+&O9#3w`7`yN0JL~sS7t)TN#FxKX}IUsU`R6+z+5BoVCV;!+>h|tAmbvKpHJV@!;@e+tiO^v)=&F zvm+t8jkkF2J;T+gUYevK2dQLJgd7^&g`;A;P+(JmPB{hQN7r1c_{NdZNu+L?{wh_1y1mLA?en)TI|+bUCh+@?RAED)*K0nd6~XZYMRx%Uf>rsFStM^ux(!k4pbm-5)NK zQ=Zr`LuLHzAy-mwM=3Y`4tO?>Cxu{_MFKSsrcs6=mU{+IcuO#(G<(*rK~I-CCKGPAy)XFIE1bPG`fH<(7V1o{1f0{&wx;ojOzI#pu1TKFl<2$}M0ois^DNv;7Pq5_ zxjb{Cdo1R`Hmf08hLw<%FYauzSS^QauIKQ?)O%LT|G}!|x!)8q5JQnS*A!2_u*?R4 zQ2b(_kO}HnV}~-dgK4m0`l&WV7Cto5O_C0wIh|>{lPD3d{$A8@cI%D)Wk){PWySkF zb-pzDo{vSg!ktBR))02-I>a(2hPq&aV&E-eCIeU>Fc8E@RQ|z7zi2L8$bHhklMXq> zFpF%!;+0B-+VJHkNT~YHp&@^ikH?JOInSi>o{XV^nlq z^EfRPSXKdFm3lJ2Avq;Yo!-RWxfSL>L55X@yI8y}XZA!3$lw6-J9Lu49l>C!S0L6oFBlAkZG$NvxP_l<2`+4o7iw zhf~ygNI~G|Gq99KABoGMOnGQ~EM!-)pv_pzUd>OwiN}hrz}^<$qRL?7J-ybSf+}rx z$D|wrOQqL#o4^I<`T!phnN$&>09lev7+HJkr_DygT~~A7&qs^GBXjZ~>U@6|J9|){ zpF&esT1V#bzKi#(jw9C_zop8XU``!GeNQUCV>5^QEayGvXes-^u4C}MsGpYIfxqqb zBTHKct|6_N0#-6{0S$;4*>F*KnBqCb@TzH!k#m7tqaOcED?BmIIrZu$Cs!boEL1P6 ztJ0++L44^Z{Txn1!o;W?DB4?BJ~z3fr$AtA%657caTL56pmZ~v$DVQ*!^`>9--+r* z;UFkY#;`tM%r8>fC_Tq16cbboEE-DtCo7fvZMD;gH0K<~@sl#SR&Um#%qt)s}SK6jD zJ*xu`%VDGJ(#nSm_9~LYT04+bR`Kgu6&c;qvhT4XuX?_B`E+40cZ1uZ7=HqH@;+Xfri5p91%zovyq6p&tkR@7E>dVfLKhah`fXf zTfaiiM*X4B3aNMuk~*OG&^3qq zU3Nr!V8RPk!C|lUBZXd9v%u(v31}^67_$B+%QKq>upRL+G!EAVG#j-}XEScHU%$azG19;pwADSnIszt2d7ks-!jxCLTMPDD&gl$5{X>uo zO#Cat?=>nD{%4!hss__zdWK_st+9~=EW`><{Y|)%zxtQIfE2D?O?TLR)jo$MdH#J2 z-(Au{b19j4vLrJqpzG!i7!N1!T}E4Jg>gVBxs?{wDV=ovi&vSUVTK#mKfrsRn4lNu zdNdk16B>fcWJg(@&4JA8RMzt7;@TW~8!{<}hnNt6_fgxifOnfbT8eJiZ6m;1w8&lw ze#Y;(#K+tFZO;3_zFQSz3`Sw>Ek(}zv{PA^DK#=;`nxJMWna=Wj>81C?mfz< z@mD8PKu176T2nD*exQ1e#RPz`+KqRG?=lKz`odE-moA!Rw(B%%l-ik~)3_I4mxSZ& z(oiI~L&52_SXhdQ%nkWV1$7{B-H3jv{eaFg^Q^Q zFEpo*L7;PnYxx%?kf`Ta*nCTA0+Ck;ND`~ic?0%))j)ghQ)E*D&&}`(O94;oX(kF` z_Hru2wmalhhvx&5T420YdF-z*j0+zN#~6)thPQTu4=jiv!g73MlM5f{O2_uV1}#BO z(Fa1eGn=;e;OQ057{gL@9b|-gnrmR)V=k1y)hRz~{N64WVQVl3H@(rMyRo!A#w-2c z<0kD9T!}uj6M~jv9v?ix4gJdr4LCl#Otw7aJ0t<_xKc=>s1EBw%^ZvmB|7mjx@3%i zLgW&){n^7DeGZXvgz#^z8$Y7kXw^LVY%v8V=AN!yO_dCIqR))6uIGw8WbsM+xYV#{ zcrHRCO+lTHWh$Gtz}y$Y}iKy>Wm ztksTM*rd!Q?mTWLoJqin-3mW?%c2j}&_=8F`T6Aj{v7rl`Ow@{gLffG_7^w*hu z3$CcnxDt5p`*w|6JexJ{xV|x6n0Ljj-4^;x;lN$6STB>58tf;H$VD z500^bHu>3>`Mj&Ma{adhU*<`Vj64rk`bCYr3V$heM2`gNLvg;fpsyQM8+bF$XsE9X zM>tmai-JEhH;pC%0^GfUc0C)e-+W)>Ov|S{0KZ?v&b3=LB;lvyT()D7uYaTS39mEQ zdn~eqC6hTx_UDWUpmiK?KAEqWu->xB)IEAeX!NEpuy< z@CHB2cyyefK-caU9oon2jzJIj0NffAlIWVF=PGWSk_PmUgA@mE%`Z|rR3GVgY!DrF z(NBcBT6KX}z5%5BeXen_zcvXha%)88iB0U_C$cGTp0KN`bs+g#IMSCG9PBs^ z%v=4~H5PBh>jjh$K6Ur%aonK ziY#5z%kB4+*qZ{Vz77B3s_Yi~(-X-xt(LKSy>anI9)oya3#IPNYY@|Bj2qk`WAA8K zs@EjA#%Jmv8CQ{_(M6|4C1H38)u&hP`)1tK?55u5V^gy=xl?VpRnZCDyYbPcD>H1S z{r8^ld|s*x#XeA%1QK0pfs5(3r`dl!psys~pWF}_Yxz|_;o-9XZ9TvCZKs}+y0~sJ z6z7_ouROr#VPt=TA;LP8#5Q^ojPAg@^OjD z`~Igd@82~*OyS*a!2dV7GbWg@W8AVD>Y8R-{0SoNqNJExk@iv}`9z`avb)Rt#)?a? z&}m&ZM$N+oBc`q^{VWjz|E&~*L%o}!MyKe{7B%qcAC?sh%QZcz!DBf-TQsgt9Q&Vv zh#`t;^Um^kLMh;}`Q~^uivAC=JLX3A+OLgGcMyQm>NR2*KV3_TwRC zwa%tVw~TSZ?;JNg@h)l|0Em$E5Yu%uclrf{OIdQa3i^7ZnvmY$qI$8tE%-6j;(o46 zDb?Qqn*G(FRnj|ZFB~W%ENn@yK^#|%OLNVC8s66jqm)Dk4*jATDAuMTfOxQ$RyvjI*U86J>m@Y4fm8b(= z(7$h8Kjkf894)wtho*f!Mny^p%xG%&1PU!*Yc2aOS4YurE{bEs0cO5tSl;ER{Wi4K zDrq0r!~eaz+LPl`z6Ij>_2=7{!yP5mVN)fH?}>x=w_DSnb_q6;cu(bjqu-Xlyy|gm zprlRt5uH1CT8>Z%YK4%i13 z?iC}`_K>qCogrZ@#mquF!g`WD>af#ZxiNge!x>UMd95M|q_ zhymy0OWVPda4+(RVjZ*3&iDoZya8DFj}RBbU~v1MqiM!-mvZ2=NvF0!O5hxqz3a5; zjWVb~-+AoF&99I~&2$Z?Lj-fZ`M8Z{Y-JnLYZWr+zz>h*lTm?lyX#KsnG}*g)xTrn_`B| z@*52ufU`qkg1HAusZt)?iS@&2Ied1vcj+#&C*jl@@wKKLztaR_1WyP+jvlb&Fb9c} zSl*EenGx#9rUx>;*qxX5x&}XHL_PJot#1oIUHi?w8J?!l8ZM)aVcJ$*ANwF)ct2>f zib*@I4$Q69&RJ&Y+C@E$>#zo5<-@Wyr4x5w@O*h_vUx*7A>dm0WSFsuh_qJ&gSb;K zOQ3R1n=BO=t5UB+H0F;+4(RlZGPG{(6v#thMvRt3 z>}kq3Lb>*V*Yig^EGHSLEpdHQZZ(w4OT$}8SLJcyc*cA!PXkB{05F*Ni?s&u{V7tS z3T-xLnZxG<4e`4%Ph8G~xwAr=;(-lvH|YoX$wf8gL#5=e6PX9x1Vc=ipf^i~GWtQk z2ZvM%9=wUXVD4VJ`ZPh>VG$#$hILoF6&c5;mNZK7!>y?`e*LQ^q$TS2$L+UM5`cFq z#W)c2FHjn7DL;14oX@67v1l<(v6Yv;F4{7s~ui>ikX6 zO`5wtN_XM5f~kGx0kda4(#-=tB#3$Bo&YPeV355T4G3hURXWd`;hH(PTqb?}F*SSp zTZ4gzQ2f)z^l#N~Br{lY`YraR@Ap~RWj}E|YXf|b07Kj}{N=cbLuvK4AA(Qr5Q0Vp zg4d2(_P(SF6@y%_e)woa%GhvaVIXa`YDOSPzV^vA*dIr3-B-Oxb*wDD^Y_qrQFx3w zP1oe0a$%^9mSjw=ky*!{_U5rA6)h=s^#v@46v99L%`r1V)4)KYffKe0l)?eK?WxSv zAPx}h1x(Q0&cBn9)-*tmoB9)oe2M}0PF;y5yt%*s>HQSb+fK%BJ2L>5;$EiLIYG>2 zKqL1-t;aKN#srK18mbrd-`Uum+|%2Ea?QJRRVOD@KWuj}k__+b8NzZ#6a(!m#{8Ej zK*br=s%zz=dxHd{_^OOpktG0K^U~al2;|YXw|}&V{3#?g3!k<>z8mc~+2Os`HY)-G z5DdNbFX7hCQ!_HB2&!pexkSai%&%Fn&oVrSM?WF{n@SQ?FH6ac{wT0PM?>Q++1el7 zeVmW7Kc5n(koi&TluPJxS#2?ldmg z?bwKRM`?DIk4(%&R^gw{{>at(aI8E2wi%0d&Nfi*?0BJ&mlahjh zQ+0m|ob5UolEpU|Z9lAoxhO1Fry(&MR(4tR| z-)|%|e+XpklaM0$Z$ct2|6)p6*Wsy2iVW$B^EsKBKw65nMmTi9ICCimQgi%4atq-U zsP=apq&N~2{tO9`o~>vIBR-y0^|`_@G*SJ8-V!>R7qg6h(PrD{ibZOi34L^y_;Ou* z@0^sWlG^Je_HzJ3w;5*k?$u{PP>4?9O3&_KTkKWYRh$kY*KMM_?`M@QJ(LdG6PlN+ z3zF1`J?(F$E`Om_il*8g|6ZEr4d)AP`kmOE!WqbwPZLWuK@HJr*du{Usw!^QrWbsE z4L)ai5m-EWr0vqddDKLhvidMXXw#jV z?+8q4cgo$DyCR%@@OF+_)P(6{<^TF^I?s{&g20h%K>=aOj-*`9G@?7gR*S!5`U?3i zg)g;k1^i2m((sD-JPgzu+q zr6JTQI)oiWjiE>Ht1Z>%HVN~HyqApp>Dw2Q0Nm+=Gt+%Dt5<>Os?fi`Mso`I+QLLA zFOI{Nt1b1?kC>~W@ofGv(qB@&qa;Sj$IDFHK{w5M3Gja`-M7g0HF>8}hjUeA-X~df zk?_!Xgl-!V>Q3G=Ti4Cn*rX$JWs~?~{G%NP7|M`9a^shLnx&Zd>~n0YH7Y(COfeda zZ4PsywB7!s#mamm38h(Sfl<5sDO&<9@fC-rQLU3N`I>2i`T0p*{aMdBWmIxQL(&{i zyIU&^sVr?5a-J8M+bQkuCUGT%8NgO8L@b-5*F@xjh$H7{`eEzmG+FjW_{1wF^pxAD z?RImW_AGUhkF9>(h|9-u(1e@EEC5bfB0q~+=)$crpT`F+$WWnCV?-rFfI08u_QpHO z_pqTxhZ$vGlkNnAV0iOK|FhX?pL_9k`lY1r8lSk-AJmatlU#u|a_a0g*L2721gW%^ zX^li!$r=ouoxW@htX_ITPjjOPFpuoxIr&;P!5wdO%@pnaYD%X@Uxp{@a)_1F!26vY zv3Y$@!j4xTq0l54B&8ds&w}h?{a+VxaTd&y3{=j@nOxI*I>xW&lS&E!!0?tG7MH;r z`||_NsW?N)Brze)2_ZF6Hb#5>dbgy6RLR^12a3xM06S3qAubzJlLxdecy3Tv0>73f zY=a~gGqj`#bm}4imlBWGJ$1GAP{Sxszlv{=LZ^T@ENf3hjwZ?GvhGGX@d?!Koc~M- zlR-0y0i+(!RZIg!_EA`q23*z9MmLAm3vZ?BqMe%o^>X;v&%NXq%RIy_gx#fpyx z_uP=EKc&tQad6BO;WTq z31dW1Th&BRr{vS_IBToQL~_)URhOfham5G^9fVH&&E!6mqQ){@O$lQs+1<@9Pm+qv zOko(+=;c*BtYV~`zky0dU1qjf6h93Q=%1;+&-a;5SQ(}ze$|DA)NK@1##^0F{=@b zQSz*imWP@8>w__K69d2@d~HTgyh+f?XeRo(cmP^E19W_WDE!zwoG@R1xU4^teC>~l zd2?>S8Y}1A?B?Gu=z#B|pe|>6b23}!w#^w!ZJ<~yDUr$NLmX&O-QYY~1^zK2<_FMt z6+6yFY;MWeZt7@`>~Ip|hQ5HFO%f71U5Q0MxO_MvqhicN+#z6_kYhBvQgZpzV9kXc zs))2`q${f^8QaP82&bsVE-%$oR}QC9T?ag5ShBKRiloHQ3%F6H^ipztTJr5NA&9F$ zyB7c~5&3C90yG4gwmQ0E#DHbkTQ4DJO%*bG$Y&XfvKF9N7##-ZeT)>m8R^CF?xuLw+Sd#$n@#)G z%UeM5Etr*;W!4HiZ~Bg*O@6Av$CFtJ&c-0%W#Bu+N}A7qdE8Ary<0`3R=Hx1vAQhb zy^@doyT7=7`?}6`OZUz>{e;{hD`S1lEpV1uxj8t2)=+i)!eoGY zxPK*g8mnZswk5?X-4CJNDcTs}h&}$|scfGiI3N~1%_LpYv0WO4+jBeC{{V}UG;|e@ z3_rB6h1cuHXui2&dAB`86aPOX;awDK4-pF9DP@=@_CAav*q4vJaQ?$&NOs;cajP&2 zQW;A$(b#GbRK{%0<2Ys0S{-Hf9rlY^ywi#WQAXaV)3Jd9aFBEPZ>x)TeO1HDvs+z> zkA;8z8f77s_o)O|E(5hLcXRRE9TEJcrSk}9wz6z*Cyn+w&j|_0p@G1NX5N0uE@|Ec z;Snn5NJMM3A7VnA>MEd@z*j`w5ExPeo9avEGYuzPwU>K{1lRzRt_%QjwwlIsWEMjL zJ*lkMm^vq7g^AF0;7alg8Dg$q`5Pv)^=lMC`6&2ib(ulZJRDxcPS(MF$E@Y__vtS% zr#Amhs>mSkrRM89_DQr?(qYM|zhW6Px~>7T#`Mqg0l!dImA?-T4NUzhqI|k>>wU04 z+Y4#=ed1DTc+nmc+}wusdP1(*E~ogJ3oVM?R-=8gsP5 zyFa%8AQt?+ojlJpF}Z4)F)khM^37m(WmN2b{>%@s*{BKP@m);luI>MJ$XaT=J96EL z-+zB$!>3&_4RNI(tus*uZoe8Peh2w4)-CFAj0~H1?X{0%R6i!HB6!<@Qh;Xw=Tyc| zGZ9@CVwF8i+gP=KnqC9N9r`_53=S`D1k=L{c_q=%)Ia=R__2UE;uD+mP`~te%z0l1 zrq3)TO|8nN_B3~e4K_rQAg60PH)Q`ZJwoEX!(1def;lKgVaYgF3xVFc?ZT$KrIXQ( zA_Kyktp7y)Iy#g}!Z!*-y@N2QK%`6Z2peJR3uSt(dAQs{-x4`-(=8U5UasZg52#M2 z{8VyiC6FJm#NFeLwB(s&q~vn~v>sp{uscu^N*X)us89QH{4wXJ?fRfr<6$ zoks#YzC;^B@NIjI2h|h@z+BL~e*jEn02ee$Ggi7ZRhI__Zk1fTSWPJ34#ng0!@nx_ zex%lA8b)zZ_vx&&<#Ykxi30*ejQe&4oC1pz1ZzB(PuEvB+2>Rej@So{h5Gkpy~56R zuWW2iIm}E_(=!KKNo42V`7x=6Yt}DERu2M93HSYlu{H;VxX?iz4ibmmD3{xbZe<8C zOFi{GfKoWgXLQO&fK*jzEMLw7Shoz!V6-BWr^y%(k6itJ_p4cumOv(b#8mqo!2c>D zUY3wLsF`)V3Z#W<2{XM`y@*k5U&wVarK&p7hneVH*ev`nEw9jfNDC)vxQ01G%&7@7 zX7V;S+IgpO`nP+9+tuPM=xP@ zAAd`NIBOS!J%DnAR}Y?p_+A&qbpA!_u;>g%)(N~yTGhI#f8Uv1#`&3q zgvH3vsu!R7i)YgNM?vBdp2>kv$~fu1z^+sEiTUg^qWg|Yp}Enm-q)CHQdA2l=|1Wf_LK? zGt4O)gn`i^+9N(M>?n&eZh7zq=d6I8UL0o?=R^g|)-xh1&(mxmgH9IXqOqS4D}?d4 z4Est0Qt41RA$G~XTQW46$aGeHqz8XE;5V*P%x$H3E^W4V%Ss+!6?}ogrJl&K3SM}W z#>_J6H<07eyJ`c(7Gh^N$SynWTjSjrV}op(nznO-a6F#3IGF2t`Bte>y(mw1a!+BC z`2}H#!sCek9MXT~&s>%CwEG2WXmiR@5Uk>9ju{5mDq&QO3B6S$dF!5{CgGm^;087| z9F^O}UW$u-8ol*tfe{=1_cfRVl#s(eOMemubxewJPggWI0!>c5|4^ILxEV2{x^p|_ zdE^){(C+5+J&nl^EL7;7NWM_vTs^SkUJkldcG{Ss?hppuB~t;d4q*x3fg%zqax+3x z!Nl)b2CG@cf^JUOQgRPyHe+`kfizbJQjb^wQDzaMDuAvxNom$u!`LpI^sAp zE^udfamzuDh%h$eglqB`nKFXl_mVTt98T;SgjU@hAVcD~yRj^S`Ba!)2(Z&=X!3-R ztfv2+$>ZO+;Wve0;&1#dJ8{%D#`tqYt0wo=Sb!IMH?IHn<$g}?Q%ZNY{@Xji5<)Qc z%UTqPe8sKfF|OITJ4lYyuaQ(5Gxl0(T>Iz15I!M8ce5qab>%pFa!w}Cs2I+zxo6!; z7G$FziOYQ%Zr6UhN_s^AjOp&dB}rA4hDNNf$n#P)srv*PfW^;5vMB?)beFO2j}enu z?!xsnDaiTdT1J7PT8h9<>*5)PKUL@Zb_vNRGkU+#D9Ug%WT`-w7qqsKsJ zkXYo~b@U#sKZfg;`>}&>C^zLFE)2J>fjcxeR zFH~6R`Wo&I(8u*i@i9}vj7N?GsW>|LO6CZx@EKt(7MRu#P{#3w4sj{@gTixK0OQ_Q zGUmnOypWbNqqipx2o^~AnraWDm|QR&M|1PPoS$D#?xK73inj?BH_c!P%1!e)2Og$7d(t2;l6sdm!Nduo=?84ysJ4Scy;pL7We7n$u#vXW{=!J-Vyy-` z$_zOI&_Mf_&7CEnR4INY2oCHFK(4Zof6sWtrupN24oKqp1N~~!_?MQ;3cKeCt6^--GkWnRwaJFfG_6pDi9my1yf`DXmWZA)(AbrK1+W zYtOK#$*$NW?cDGn+RC={j88J4GCwu0Pf5Np09|g0H!i2dbkMEP+7~#{+$lYPC^EIO zw|P1W1Na?xl5J@^B%i7xw(uHw`+tT*+^hKelh)lM|2xw9Rn(38jf6im?d3D`hj+W0 z?xeF)azJkF8{Teovyc`54Wi8@@3^Gc9^jTyS#hIE(wYej7Iq||630ROSZf8 zZm>(zJqSd4N{?JJ1FW}6!b!r}gR&j#P1X5=JO3OeSopBx18Lgthc^AUchp-HkYrbJNg2f_5)JD8T)EqXZ&K=o{ zEx&~)vxrZc{JbzsmFcyAu;UaLO?NR&LRfyt4OFg)N8eEM6~zKBg_?KeZFqG_Fe~)t ztNZ8TULKDIuBo5RQ3rYlVu&0trzG*b$Xa0NQ$Qnb!6>e|_AJlQePZp{((U3X^A0jN z#}*i%OHnm?)0sbF=NDN@Zoq%3>>nA+o!QJQoyNr^; zq5qkQr5z4#>3jld5r0!u28(oc!Uu7mb~XB~ojwWi+YxB(t}2)DsoTevA^{U;@N^rx zwi4DPoZSPBl2c*H-aTg=X8I2Ai&Ads&W+8i{sI(^LbshxihF613uV=f^GD7yE-l=>z?yLPsh? z4h{!c7mLz0N8ERY9j9Xowc*O9De+}lv+SdXb?ECJG?z^dauyT zrizg52%TVC*&{HU5&oWvyktfp2b5SjIM*|R0MgT4EE?&3YE+a~MVttDnR2m$l1mv< zG2&<-Vch)$GBhr~Ymr?83qTdKYsoSAVNYn{hvfA=0X>@HsP-BDg(J1jBi&fhIT zda}2}=eiFD-6w3ezR%lQ1^wyh&}zif8{`34{dGq#r^wfZ3MxZlA;Z6gHUbMGpFn~X z6A{7JR_RAcSL3hiiXoQa+1oi6Jx(Z1Tg7CV!gQS=3`@o= z=sV?Fm)qFxP_WA%kUpYPy1)a-s@fkn278R+>k_P5<3WhxTh&gI@+N4sC7bq@^FKF_e^h~K60-E23jI}VKE8s$>OP({&D-!TrV2#rO8Wvr`+%$EktV1@dPP5o_)k*WM{or z7BH%1DXcU_ZTay9G}`ZXj`bnki%|S>9k`y{q2ONUMai+SSSy@!>_yaNsQcc>eR*5c z$|MJ2GH(g*AEhbF`rG*JR%IgSb~*SV<6j@W7^& zlK}Ry8CIeG)kdchdJT?5r3lGm?SI}s1}yp-f?3gU-c?Su!h6 z&sZ1dSdeC#?y?+1!pvFXtR3#D1q6<6k@IgXe5&eB-eQ5kL zy^fMfzPA-YTF7NyNx_0k;YDv0+PzLcR~$wrlKGRb{yM_)I*BbB*@Q1+KA7AxOZCqV z{E|l7|Bp!>6EwTn(pjpX;FKsYtV+>l@)a9m7I%C1kJul_c=YmY62@mPmmHMSX^ zw{$x)oS7VBfe;Q&RxIDDniCGmSB0HgrC)35?`Vc!ur#V-!xL4l^f~kN(H#EVeBjGH zrO?(roX!LPyBYf#iV}-zYC2^n@;APmJAKs*c{@=sxbtEEk`;p1p6qMur)^#>fNMWY z@K;z`b<@GLU0z|2*Q?LA-kECBj9%oWGB43y9j$fv$!3fc_{!>{(^&(JYafT+9(!XmBl`fma6gn$pbcKjRXw_vR@hm?77mIOmyrf z^d#7Hp9AQ$UO#ypZZa-2z>45}Mz2p04<3Sj|MK_=0X~G@R6!|Bn-ohU`?0}$Cz{+p8DC2|jtky#}nSGt3NfIKFKHWFb{T)NBO^fJk z5Rtj#$4@~;B_TsnLoKTVnOgQm4?32A*nM1L(d5Zp4aYcXQK_Pa{@hP8jA%P}<;JzV ztuE*)@jx1_Q{!T5o zWEe}cv%8hgIG%NTg5a7=YX#%0ShKFjl9!T!BHLp-BU%DfLHa|8+S$nq{M( zOff&5%lzUAK9p<+uLWY$m(jWYQ@FQQD89p{aO+H&I(X_dw=PQGSy?WR?P>1&4mX1_ zO1j};m)J<6!8D?2{Ar>q@mjjRNipfu(?kJD1(CB!YKap6!DJ0lb!^=lEu`Kuov%?y z(lCz`&%>bPx6K1I(|?&Mxx!=RqROt*QgaD(&$XphJba6Et@70whq39E-6?u?kq>}p z8#-0D2(8f@2)D!oPR=(cni^@|QKcp-)4rdHFQHTPP(oBNU1hgX zVyYvQWYZ2p74pE~_$*~#cqd8vs%ZY}{39Hy{(-g=2{?84E=jkbQ!IK=vXDc1ULGd4 z*jxHutm;zT-SRE|44#DEo`mb#m2K)V3)%Il0-E=QXWsqT8f~LhDk@%2x#crFIp01P zIRBnOA#Q9pWyrR)w5yW8FVw8%b6S{>BX6F`465ax67nrP>xE;m?UQNb>piIhZ9iwO5|q3rn$@z~XcTA1RqP}sHMA@)J}QI6EN$_s zMPGRe`lLQ|t9~f6kw9ID=O&NWF`*Z)AW*35Xt!5*m5JY@5=nOWEfxpphcbMRa4MfF zPBAh;0J2PCWc-^VcIB-c7O((GB%7*=Ii&lvIy!M?Bh=6pQoMRwO|&!fw!jaHIL*(M zGSj&NdPvxQ10K$0=21%c;XI)aC|+3d?bS+m;K%%C^QW22Qo*Mfw2F&u%BrhJJM$r+ z^lqH6%}uF^-P=sv6H_6ZS4hvrl{%NA=H0Tbge}>NEZhu{`WEA8cn1muo$fn*KIiX) zy83Q*J{+u6wSsdnQ5A4GXk~8GU(5VPg<{PCJaVpRZ?__Z55?tbI*daMTZ12EuKZpQ zitbFXf8H?4HQX@5J@fZiBX480!4ML7t9D4(5an-R9&E0wbFQEpS`sK)W^PCD zFC}kejj?W#5QhP2czY?fB%!x7$(*~Y%9Q6a{v?^q+>Q=XK_VCZro1^{iE%^pO>d9c z?HEtO?%XS69m8dl97lrj&~r zx$T=Z&?-v7d*Kd6ZH=2@r?}dVj~e6g4qp{TXRgd|x!~ngQ$AXGZm+)JJvLHi@7bxo zMN+Aa^3ew-@nY+8r$pCJ^--qf4qZ;jsvt4cEOZ{cp6UuE^DS3@^b~ZB1v(`aS{XXn z7d2ZPEl?*iN_md=MU*(0#|J-!@Htol$m7-Tm^-{$V1%_-IJSv?ls z+Ec3Q=lLj;nO4!{C*7EWeP%9M^lFg6*n|>^;lv!%Fq(Al2A)7x7!3&)`^}H$#y7|$ z_30k>BBWnu2Y!-P%Sn0y9+4FGk7m3YbxpzS8!gmT9!^j)4{769!JR>KWQn?_8~q%& zf#8p|17mL_+o-Wryy6NDBKm$Ar0~`oD32bInEz@R&AC`_<7RwjtS&%Sl67Gdy1m^)d7f|fs^Uaqi0f)m_p;e(#)(SAmQ;`tx`!{eWE-iUJMJ(7 z6RP4b-Md2qNH87}Y$&Z_XRudFBYT>ryLi&>=}ohXQnXUR25n~VoN;hWdifM*5`2kX z|8NB-p|9*yCz6}Gc4>2zG^~8Y@urvhO%ZA8U?y-(y4+xmCk6z2rFf1r55u3sp^qm! z6q9FtbcZp1=>QGusXT?L+g36uw0urjG!1^K;l9|Yd8}Yz z5J%z1qssn6{Bp-?$ONX+cYRcSbS;##|G|vyZ}m_3A$u*wo8F21BWG|3Z_>j4?7Ll- zSIBk$GCi@#cCS~^in3AsvFJy0+sO|H9V`L|&?!YbPWUggtEqQw5g#odr!AU?Yt*7} z;s{j~R{gbTPY;vrq;~D+FU`I44K+rFjs%+}O}l41jPA0{&gCZ7Y=kE4 zuFmFjy`8Z4Z7x!I`!RC!;VWcj8s6o88*6`bcF9F4=?GJWepAMI#DtPY;GDmf08RSR z4>WwJwLfxwDK}G_2lr5Y$mZi5zabIeBW(MQM=Jyp_o*0eWhli;-hf;KZ`Php^oRaD zw~-I%&}=yow(pS0=QxQf!9dGI2iieH3j&ZBz~w6-wtat@`=by_W$9NcfPJ~*MEV|s z7R}lmsi%d_P%SJx0&ogU(m>IbT?o-WX;MNBdK)&d-P?ptNv=srnf0PrJIyJ5uP5>wRAojL#n3xl{jq zzyz&YWUi3@JHR>-ERf6Hz(ASI4JTN*SS6~91K2^yhiSlPDw&oL-akf_oa2KEzz~U{ zJ9wmdp6PzH??|`ifxJnvz2+k{Iv~OY_-A)++J9W$b@RVm{&xrNf8P0jdj3D$!2j%O lk?ucT!~gv3zq&WPqD3Gb8foBP`tM?t3Sd>45^0lw{{gbPy8ZwF literal 30248 zcmZs@1z1!;-!}{vp$JPZ9m`6`(hU+zgLDbVQi6nZhf)iy;F8ivBS?3M!qO!r4YG7e zH^RGk-_Q45&-K2$7tA>`bN(}D;-A0S$QK%l1o%|=SXfvD%1ZLuSXlQ!SXkH*xQ{S7 zFiq`oO!B}@R#_Jp^YO>Ef@ALS-YOZnVd_ub{b9?prg>vBDcuze-F2L8+`TMZt+Bkk zytwV0-ndy>ytU?bcC}6WBSD3Q<&m!}|6JF5W+wyZ6KUsI7kE8=c^(xS~ZLu^yvjD1O)s30G}O>N7TDxQ2T4nU~-aQ+)udK%kPYPcyGy5 zOk;TGSbTnBqB~6X^YUngw+n9Y153rGDL8hz9YqjlP7Jo#RpWr^d>uWHu zcMulZSZY$=5QTgyXrH$xUEyN+|CQ~+@-(Kah(P~3>zWF*@QdGjrup=*xU*S-c-~hE zQ_>koK-1p2U(tfYE!qIV>umb=c{mC;i$1H+&YVOQQswn$uBd;U=99GaT)}^+xHWIJ>K*6XPUN7t zv>Ny{F0d}_oS7QFeYzTo_gSO2_w&7r!?5M*jaMLD9*DN?Rxusq4zh$`&1SW+z+unQqfe3bKS*KF|J5K{^O(ljRMwSG3FJ#|vw- z8Lms3PZSGaS+Mii4)@h5wCi7HBgWTA&GgvHqq7CH(^gZqG2oGm$>>D`$Qff;r$Fo5 zVCYT3rI(h6;L=f+!fy81wLH3=>)VIDLN(?1OvUF^T7G`{o0Hkkn~-t6yEFOWEb$DY zxq$(1X1t&XTzQfGzC7DUgr|d-NDw3RZjqr(5Qx_!OdbT*{MzB*Z=+tsN~NtsG5s`-Ju=SG#o~-nP=Hkh3RHmCIJb?Akw>BiIUb-b`x5 z3&%=S{(SZBbL`@;=K2z#%WKnG`v&!s%4#Y>e0ju^*HgUgBb{j6yFI`FmFR?17$ay* zYFNihU025|E?4^_0&|~ErHqPbekj^k>LibDl{K)ec^5XkrW`+t^2rDdIdz6b0c`u; zIkKxzaHspWIEOqcgN62QfOC0S#*3ENpbZPYQP!`=3W{|!{l5`xv}Eu)#aeQYX^%`H zS|r?Gr@Hy0KIv1=f6=oyY|K#@o7(sU3oUeP(1;-CRB~&5&j$^^+tVMdF}cs(r~dxE zDs(GIGKbP1#)UQAff)d3G@;nhUJcSdCRyii)bNlIY6j$Eb~hc){O0o~ z-HqXYW^q65cy+$HaI{K=tORHQ(#jYTI{aMt#>R7JgAMA<{zG%UuoIU$w&??KpEWoc zXaUfvG_2hB$_#fQ0XaO*Q4AWmbl{h#)Wo*dN4&mDI8=xZAJ*xRRZVV${g%N{wA9Pk zn<&gorRwUc=Y91M^S(bHm7X2%rahaNc3Us#Z}$6YoJm_j4x$k@hKz>Xcv5S@nW5)X z0+kOfW(oiNbcBUE%B3$mbi;nF?_=23%#xFR@<0@zHMNJZrLX%LRJ$)hIexEJ()S-9 z>=A`ot%|PaDcc_5jY3<0#J(Bp(m|ZpfN^yZ`^SjJ_AXM;a`D2@!5TDkfWF!$-wvnV z4*nX|b6_7v6pPqz^md6QmN_5?RZ#wCZsfgI28=C>Sv5m8$haq8D1Mqp;kvztKjjMaDZdBJ!Ty5=XB5sq<=WrqGCbJhRkB59_q(WH3(YK|Vu~CG;lmk~) zG;j(0qZ6OpoecEEk8dL5{6x|ZGe4S3ysAZ#b6b*?jrc=c_MfQ=z7JkX4r2ie9d|2pTlkuFV!*2{T0}u^9 z^8-&Y{5@OYu_mP54Ei{#*+;lxd2zjxg|Plza-s3q{q6bicNNtCVa>Hbi<@*oj-A1= zUs{Lms6xx`rlbs06x{C2Vm8g@env!^pQluikktoWFCl@|0Gn$#z;-yRsqcQ7`bNqr z%ReH-8i)!Ko>NNnE3v6ddo*gCcNcHsmyw%ozYw;BdWSf=X%Y}l}WQKq%~ zZ886A!$5tpnkQBFH{+>2JWUcwaqqWV-^5a#Su`~U$7qnSELM%FS^I9-Kap(24#mj2 z|0S*e3GV-wXbuMch^55Ba{c(P{(m3)C*p%YAtl6p9KIUW+K4l&wCb!C2uz%mNtSrx zywt>k#KrRrxpYrF^TnSZd4^?0vn8UMKcHch6>h}lb*^si=eb*!bUes6S3IoTh&=R0 zh^T}T=hMcoJ@Y{NI^_0Sm4ulAVE6}8l^G(;yDdb!@kgIE+$mf> ziH{jqziB0{B*`!-Nh8U^lMO|wBL*}Y6^7j8lcJH+wL=L){<_tGby!$Z zW1=H5>%9jV?PEPcv5pafe&O<obMWT?*TJ41CA8iqjrrS*%#`@K z$o4bvpql-LB0{&V!56ub(!0yH@OsOCSUojkJm&~KbnzFCTqdVauKzV){FQC~e8s3Y zV4Jf{XB1&>Ym>31Tlnay#9z`nyA*@wM|dF??hdY_rFmmp!=>g-G`60HASSA{Eq9xY zxHXpi@l>5RScU8U_QS>V$Ze7jKxHnS9~X4O`wjkw0aZ0iDzp*9{BurX^K*IZOQ+`P zFH>i7aHy}J4JwQM5H+V>I%F%W`RlDR7JtZ<_UG*O_5@GI(&ob#yBTk2#*79qBmX4j zyHBX%z*-(6uDC*~ws5j+!_FDxNE0K?znY+QzzAiM?&&VZ@i}_1>7NQt1!6;*xvde~ zqYroER6Bdp6XI#!X<^ouKDXyn=NE;Zjspk?JrTEbwMA_)IZ#-I1 zxL!@iw+5(6-Pwd`HWQ-<`2fZ0xU8II9PQT#{{$yq2D{k zootn_9J1SPKh{t?-h0>XoYa7`u{YsLCk+TXtQC4-X_PCaNp;3edyy)fy#JeM+du-M37+nO&93l+;}DQaO%EHGf#x7EnNCk+bw znyZ_!7opJ_S#q(P+4p4y5h_9p%d?{*SB53{dhKYKxXo+#Gb4Y1*q{MYOm%O&vy3Ue2-j}%``-0hSZZStEpZ))kEeVpqn3oBU8xI+z zWyhnKXuUQ}$Y>+WP}Hcv-XmU@Hn5`+nhwn}fxMP$QFMQ7jQDBGdXS#*dF)U$NELy$ z<4|oDSwD?N{xMjd+p9}xoPjS_^vX&2m!b!2P;810S}vC+Xm^%hlJ5Z>&M8m)-T8C}Lt^8z zSCB)?(8Ev7{#4Kz?;qN06x=Rn-s4ARWP5*cq1~K$ebh?^ZiPEq!?g0v!4IFiMAOFh z+QR`vZy-71B7xBwyM|UX*_SO_6HJkSgXirQK_-gyHWPmsmfD&lk*RL>LaxQOJz_a% z1Y$sil9c1V{#MU$vadOnGUDgrnD=qSt~Htk9UgTbxybTM{4f#j;US1|e!Y zeL#KjCR2nHb~J!4-$?l-H;A#N-MV$8QCQcmi#>NN7QrX2XECsv#J8ujWa1x%l!DGC z2)6HOExkchm_cd1DjO02si3X%^)=QP&-OA_3#Q`u=o67~xe!ti?J?^UF5fA&aM-Nfr_N^|&$O7=D!B_;P5^v3y8W1#;M;dcH|~Q=X|GH&X02Euv3T_4mtA z$nqYZECR07tT%n)uev%^ESRfrntZwll0CzpZDo9Vd@g486cTq3;VTFLTw5DG>QqvK zlHh+4QHbo_y0QWVa#(r{zhQTf3x-)qXmzfBy&+7TOaOi@F#4^7AcYhdJfd2f)tj=) z-TgKy+u86`9dQ}^MCr-6{u#j$qt-lpEVY3X3bT4ock+Dw352P8AzpZ@(7Tw2npYb~ zdn_54V)~}heIRJ$_Du^ffl+JHY1H$QLSV6Ey=VLY9GQ^9c9Or~@cUAt{5bnij9<6Q z+I7gQDGE8wCLYN%-6i*J_^~Xa0=vYcX00tz#jfnWrgCwjRu(|j`k{vH0idJ%>=786 z@Zl$pO2U4^j9d$>>r*&hB=BPDXrX5{(;>vWVv&pRqzz6?Nd$_$QaWmix(x^Whazn& z83+tJi|R-qa3HsTS*Nak6d>{{FUqe_Y@w$}PCa=O-zFHmsHuD2iXHi`(l<5qH6_da zX?s@!ucAYPY`1VAWTC;weMP7G{wXoY-602#)C@W1C#Hb#ajXhL%KXQPg#>bdpWW6@ zl`_-jUg~Glc&2@cbhTO$-Hyt?-Qg3t4(7)P_19cXNw49O#D0<|2KoAGOw@iz25R}x z@PNQq;G5?{%=*y!tM+c?mf!UhCXi8?Y3hNVU?Ald=tE%j;G@T6p;!Pxj zFw`%i`Q_Xog@W@BR`>UJhdQc&`#a(MA9xG(omC?w+9QA|BEF@Nfes(-*0&T^zXP&4mMYmXberpU zuTk3B$WNEe-fJ?~{~|GIg9Kja?daow#tgm|t%Y+P)@Fku1T^83st=5?GZbE0U-2?wIz7YJHrHx*|6i& z`%|*E1^Ut<7-!Q8zL61z#5I-rc=le zrqTawIh*cy_wNjuAxg=MK9J{>x?f#bK06JZRWKsb#0Rzflm@T1p2@A^3>g%H$)n3h z>lo)oh_A*gq0nn2^e(7L=PcqiwAorWok&kSBpF1$kuy>n(L&2#Srx;J@ zGHq&}w@e-Ky-pk!tDCHZBk8AsdYa8W?oVcIuFDizyxA(N=0zro`c0f*@(${CO6LMM z3-<0M_c&wHH#sOEaYMg#3#^3te9p$lO_&s+u!(wXp|h73Ls9FSC<4 zVO9u}oe;EYc;C*Uq@Q*fQ2!oqMxvVT8~{fqxsZcq$d?~(`e*E=aUEz1Z6%YkSn#SQ z_L3ifmv>${n*Gd`WPlKvGnjPV-`HDfThBur?hLHwGb^WN=|-ICoPS!v(|yqEj3(Wd z+S~{Nd8VlfcfQ%uUlmNe{bqgvp5F4tC0JKP%U#?|eF<$JJ`AY&dc&EH^4p|aFjt)U z?QA>#?uKU-xEEFb%OGFJy3n#eJx1c?BaeceXJ$7ys+7Al`m%K};pC06strq6wyjlF7uzi}%xHY7G zN_UID9k=$Zc6|LeBI$s5XI!gdnr*g0y|K)7@NAam(}CdI^zwtU&f_zW(Y2R_27_e! zM4%ME?^y+O`?e1`p>$dYKIZ9Y?gN#5ZN21*mMS&j97ut;CqZMYWc1QHgdWD+TaJaV zgwWMGLD%1I>s_vL=cw{5niBocRLu?klSqfW?&wj;(tr?yGIXb}MwHi?AbcgiB8OA} zIJ0k?MITxgxbU_Hi*c}Gyeid2{mfcF%=8*N>Jf$l{6}tL)B6joHj>uBtU_`Jj{`A6 zx`W?#R7UT`N9IVv7Pow6!jp@_3klZpj`1|P{;rRl-1es+Uy8OEAo8zMtKTG9Tp^S^ zEZgYOZB}eva|IQ=24njh*xj~(E>9XWS}*UF)wTc__wrwlB8}SfIS0q|E~k*0v}D_( zaYARncM$Vhh8{O5kRMoc23U2qD&_f43o0DVZ2ST#HFkN z+Bx7xYIY(G+;YOyvR=wvtGDbThZV!6pVk!uzv}mpYU#+`0yWyS6NJY+q#U7#)ESa~ zF{TB5+cukd5geJnG711)x)lkHLqLzWH%{x?-P8nGY&*^Q(ZFX%x0a||oCreveKVg~ z2RRtL=7)P@SLGr9D6YmZR!_luNc*T676iS{D2<9Zsx0b+=QYn2BJ-1hqT;eMedG~N zzIa$j#1EHCpr0i-C3arc_NYo*dpj9O7F7;)S$~ zc7aeNdoZ?Y`zQUSM9Smu8p@rPGSuG?v5+`C@O=uAO^+O8ASa$vo@bB((=lb*B=4es z#7SBNYP5u&s{QnPrLV$&$_2Avn!$lFg9tB~s@fuX_P$_Q^?u0mY&>7C@^iO4r;SXR z`VCGHRB(6_Kf&ZhQckicUIOL&0XcBLV4R`G#1dMoZ0e?XR^;SD99W@r?kRM}@YCLe z4OaR6r?q2|ez<0F7a==-=x5BH{nWfX0WF!o6Y;9y%BV0tmG)e43k5C@hvW0{WF+b7 zU#-xdkW(B?Tq0PW1hmueM*}8|QYt_xJ_O(!^yqKkaKb_qIj8D7qfvuPU)O94D@@*= zF28uRi;E?L31M906Q1%;zi4^2kemL(?tH5C!5;l+Oi^gv{eLkKK9G#JW+EeB*kJ^t z#MGNrV+iN2T!La6Hpc&ph4mcwWBY?EU+Gp2h9dv5P8r1EiItb`jy+eJF?6e1vrSE8#u z+dIv?m+*jQ)m}zK{7fo*8}F{gX=~CI2{b=g#uIQ0YO2yCs?li@YSy{_%*^uo@0Bbj zfP+l0Bu(%_?G}Ic7gefxTAX)&JN1lqOzQwP6Veka)HgCo2YVocSRsPA#w^9=FwHz< zR#Mdc(4d_jEn4!*3AB|HfN2P`5_ujN_t0^CWrV_9op#!9NvHQB&Ms3lpPW>$YlQk! z_j+t^@ZTugOJ@|Ezq4t&FP7P0-e`Pl+LER(Gn+R~62wYv6=k2XD|t6rs#0Gun=9vm3)ul( zWxQdhM=bBx?pw3?bMt<Nq#2%p(oaPz+Vg+K38UxrbYHOyRxuk~h8OLjeeTb{@ za*=)?T0{AHSa4MNZ@HKKRkVCW!#QTubt}Dgv352)`H*s|6HQfJ@Zzj!0G)f}ki#sg{C286@e;*RZ z*nt|fmlLbQV+*fyaV#&-`#R);XU@3vn4bYkR})H*RH4XKN5jn{b2B7Gf zoHqty!+{s3VUTi@(M3DdNP-*NktAN5ER_0bqfK z@{MXTJ@rlKujBuV9$#22aosygDM(fs6PKN%W?s-rp=){wV}?Z-tA&rp_S_Fh6l!>o z>DXN&`&6}AJzm&PIMqf5@sctOXvEWf*Tpc*JR4cVXGHJ$aKTnwk`KjLEwof(=GPF2 zbJmgy1;kD$5L@)uFm6C*;*h-`bGPNOs2pW_nP6vx#mCEF@Ly~8>weZw+#`{LC}fPm zp?~%_O-NEZ9VE276*blsmAnXZl;Mb(cW=EqSF6{jY+XBmPin~H1~qELJV$tY6%_VT z+bJb|IF)ObpATPDx+3_%XZjPi!YCT(7ka1$am}X*;tL6c{%Q(66ISHk*o$r{@RaC# z55#ViMWknol>%H|s=H}CLMa(h4!V511-oeIbeCz_nQM0k{nXKlo0KB^CK2xVGV@#^ z@g#NFomMyXNCHjvLPyjjBTO=}eirsCu_VKoH2Ew38Zk@~4N-f^Mx;xnSJ)NF8|D7GzeGnbV4QHQP)W20MI22C+1D-S)tLMDt0aOA8uDI)2b5h#%39q{sbq8cf5pZEbdjOAJO2YIpZ}`pMjLzA+BXx4Pxt9 zkkRR$tio&|`RupByFO_aBC}FaHG-XbLGtUbVWc!4e)~#LczoPV9Q)dqC)XE(qc7g&7tMQcz(lbfPgeOk+?+2h8u-#Ey_%LQfZMdbC(5uITlRQ(7OPU#{}E22L7qKze(&4iLk6h?$FSb&gD zT&!vNP~8MJO52jl+L?zUm^Z*gQDI=&sDo$ruupwVD>x}RKfc^Sk$~6?1x%syma$;Z zB1sMIp{Lwkm?$g8m`LZ5e?*j~5V}Lr{89Tg^?$1VVhXKKGcRl@T!_wZx*L~!GNlid zu+b9JP)X+fq@(WK08B3CX~U?GqbN>TGww%Alp9L}$-0!RgcDh*NB=V47!8a%ZELpTuT};5~~C7RyYsGk{nUMfuR3kMp|y zcjOr;qLFsaYL7qoTIo`CNkN1Jj=rXR2AlIlP9b?_Dp&<}hAckwlVu4E9QGlY(NO=%995yW9QED_Lv|d_C>eKbn_zw2=NY*!sR~a)4h- z39!*>4E)*b$S*7@uv$QU##MQhDJf-?8*C~DM}B(z5si9*emKq3MfvdJ<0lneIq^Hf zO7alxiq}70j4i0kebBHYWj8K(-J}tSx(^zSL=uy!glf>axxVfhl#^Y~q@ob>m?_?T za9?wF!`*SniA2h*(y8<3g;z!v6j33w8Dw<3zvy4Omme?|3E-|)Xe0mZq|+33`Ery+ zf~vjSJw?u$8XrRJhpi3Y;PGU*Wye0upL#$3{68Jhh2{CXUW_kGq>lJK-xHwqpHwy- z%cJ$4`2KTra8r@NFk!=;Hrz{zM9OY8??nhVfp$lUU~v+AIQw|nN3qpW-&fo2o(wwX z8C1rnf2-WBHGF(jyp4N%tNTN_i9kQ1VTtgCqKPYn2!dbV2AG zk@X}~Ev(c$`zC(QH_@M0uslL;LPO5wA@)nzws3R@Ve{FpTr+xxNH4ah0>Xt-`i)-p z0!yV&@U}!dDNen^P(mrGp>WGxd(C-+>@iTM^UXP)zvxi`rnT|SLgVEFT;c>b_{)O< z`15c#RN5vVni~eL%shW5@)|(1CjQy;S%zAs99d%0s!$5 zXe*@$CISv#mX{TQFypl)8CLO zrBViRk`Vdt-{-~dm=ALqHb<<;27uU8-bQseQ{yD+lXjx2LM!nzR_{FdNf5^6&19Lz zX}uZ~L|D04XxM{$1?NItp^i}Vd{r(Gmoj*YjXYUq=8sqc47nk9U(5~?xcZ(@W-OKw z!cWJwl*plx9+#*RF1*nHW!}qg_%?{ev4vSw2BNJd-&2mB+ZI3IyG&^iH&-l0wi=i* zXClEBgn%>RTaeSUGH?=!DoT!xIw6Mnl4#djARibgfmsO*&0mchzyEK!j&$O7WcY54D<*0e=Ym=&K9I9J z`1iRuzNLH)2Xyb@&4$-d&OI9sP&s?C2oC7*o8PZNlo8Hm{{yUHP_fuB6e;c8h4|Iz z`E+fvMOqv~rxLTbiro*E$9H}t%t)?0fV5Mu+2OpFxc4I$gh7CL&lJ5lkj=Cf-1)`Z zl0uiBiP@r9cudf#-|pj}+;&8eO^e{rvEZ1_GH;9RU<=_|zUW$KLUO?a8{zgkM$0T3 zYP!#xfm&z#d@DNKQs5mQ!TUo)|82~w7Kr^1Uc~^t`(g-VBr+T@SAn_s-&uD>um^Wv z%ta3+3F?vn4T(w2yMVtno|8g|9f-C?)(hX$?m@i4dZ^vv1A+lLrTQ?SmsESfz z6b%{#!*Nl|aC3dyT327}c1?9Aj#>Sp2hWAuH&AAg7DnLw`<1)Dn|t$@8;3XE(uiao zyQ!AYyk+1WGkCEe7lk2D ziK8n@uK@SUjB1W&&2E46rJ}X6LMvO-EQe|2<8AEG2?r~TlPyVyPFtVOBU3^u zkcoBhiX{nV^@3boVU@z95az;OUP?EOF>oMD9!h+<1^!iDVRv^ zV`@~kz%!UUR3P2=Cbv(tD2Bg8!oi46xSbs+%N``-!Nm>Y*@lCl-St_9{axQ6Ed>;P z;}eW}+_!(9j7$*U20^Lq+2vVFp1I&0l)Gd`tXy|1D&1zIq-E5i6M=vb>-F?N{=R9O zbhne>^6o|yi)##HrRn9nLefYkNW+c8r@voQ-}}cF5#GVtl|0Eom^!)3NX%5Hdh0?}VlX}>@Rz^e;IfFhJoG_N zPc4cURyFsyc@AT`=qcfB0vRaal|af>mzZsYUy-YfwFY0`(&G4ucBa|%iLA`33-t{w zp%=tQZ-~PCw^XL}5h6N#CkPSKNTDt{=Xl>`cJen6G+zz<2qwPkI6yjL;m7Yt_V%wg z>i4}_qL!L`?zTV~>t8}cdvb0~&!OeqkL~TspWKQcIMswwFg7*kwd&*jK6NcMNOyq3 zzWJv}<--^CC>_=l48qPJTR#PZ`EaOxxD71s@WR1BWm1SMYS_QAWmDYFw*lCLG2gUx z!iyXOp*Kuxoju;QMB+gp4M6j|rLJ+JF|O>Yt}hZ75++?uxk*|Sk`KGq4aXHJzb0}G zs&9E~5QEklYbw;1URPEz1oM?^UsMh!p}QWVxH0NK1C;nV!hZu4c;6a+mfb!2!+{ZM z6&8_6we<8iwDRju^vYVWK_zFxggA1CB>bW7ng{zZ{ql&`m~GUm|7q0j$b+2pXxh$4 zf{t2D5mCtE@E&vL=YCHEF%8k{U9`Tz3&O^1c#M%x1S-FTx2bvkM!`BG*muN5J@v_> zktK+WBiZl}9!DM>@$Aca+OW!%jo`kQ#fLAcSs=u{GVx)(G9YyvN3}O|(uCBTJga)j zc)7C@ItpU!wT=#ILsU0pE?P`fnFE(B`%T-6+3+R1LfiApkT82lHhe z`Bw6#lVE}e{~}(B7N#x@E@}Y>j&M0U{FtIx$e37F5s(VfjPTQ@n{sJ;O!@B%3 zwt>Z^`N4~|C%FUhdQ%5?LK3AE0|03a#M@Hb{{`-1ClNwZGh{3hvhVOZXOqj!YY5R@ z4vS|91 z2|goY*?a~KD?x@dH~;1pgTPP-gie9BOt=X*|MK|~=hY8~+h2TH6OJB4Z3NGT3&Z@n zbLE4JAgX-&^K!leFgJywfpLEcJS@aPo6Jo(!Td{S2vYPK$?We5U%)LOJ2Wp zCGxn5_p14=6*p5MtQ>8eCguz}&po&%o4DwH-O1*=&wrDD^8HTK-{t*N4gM$jzhwMf zjXQC8rz+h2$3lak8`U~O6*KDoauP!(mATLFR23qO71ij4X+4 zRr$y%n~PB%up&DyJ$H?XtH~S#3f{cR+fKI@0v#I_qk1G8DzJiC>E2sMo;)&@K%2jg z9Ms&g|*4Y{zFZQFV2hbaT=x@ZXcF_XO7 zSxQ-J-j(5~X-Xo@>N7Ej2aWw03yx+q`~>9OiN~3Fnp35E-9>z+kN&7)!Wn-e^3FSK z@egtKV3(43Yu1Nt@0Rfc8Jlu-@+?JjSV8*Z>U5DYuoGJ&1wBh3vMmi&;p7v!m~Uo! zug^_c04ATGmOzW@5dlNZ+V7KNef)v5WWM$J_8D>*^ygx35<`U6NxPBd))8i@c6kqbCd~M53;2tAEqbN9`&WETJk3mQ?H__J>Y&GZ8HfOr;7@;bzUJ7T%3@jTUdTJ$f%GCMm0YD6fv%RmkHkI`ZHjfd{DJqC-WzruZWLO{ZAnk;U z$*W6Um=H`38EEvPil9%Q($U8N`Z9B*D{xechUhB(qq_(WsT|kpAI5Jibc_q+BdCic zor5Ul%aFLe_3JvdYsQ0&%_71%G2-N-8P1FFF=~sf4c;8$gA}a=&p*0+Zyjlt2LhO; zGM{+@q)Fxx4QI-d=|jyS_|2WT;$hx0k(xKR=5_UNi*X)D;(-5{xDuQj@7P+vP_!J@ zq9DhyNaUeuy|Qzb<9-w>s2kiubWljnaeOxKO1P7J%#k9I#eYPjmz)76TO|XCbGq_x>ANt?%VPEyD5c zfK*6f)#L@Ow5ix6!CG2wONwhMS5;G92_j}ZNh7R-+&25`(@!w@u)mBKRj+_UxfGn= z^GMd0c@&Mv+h}jquL~64F%QS)S?;}7K5Jrw>Q1TP`9(IoFJis-2WE|WImH*XnlPzJ z%Of+lC)Aq#Cn7md)5K<5 zrUwv#CX{ezbN#c?+@1hX4EBMZFSEQptn$@N-kyc3iDQBgR}u7>F0o=_1P(}C-@QCz ztmC%0s*pj!apT+~xyTh?ckF+Bh$YVfUGc*~S4dQp9e|*DN74+=7S^0ggtHH1m?2CV ztBY~Y)~e^rb&URCsBF{y#0nk0CibpEVB;L0TA-5H4}Yx$kE|8pG2&n9?F;?cK%ai% zI^}jTs&2*p16$JqtkYge-Cz0q*Q%P$y|^^7FKdpcpN8qq&WO$HrDwV9Jk5!SHYeQv zTY$plAI4qY%+HrXDODk0Qw5aCvwswGzj_*>URl)o7B8x$`efT70w zRc2^b3}tg(CYcHdni@o^Zc;@SMyW71 zY7b1P*pljJ`%)l4)##qC=m1TV>g-`w{dDvwu+Ew)DmK==xP<>$dTuqdfhE}Q7%J$R zt2l4pw_&K5b&-(dFN9H%CO|8eWFV>J@Zp2=zY@RWPM?}IL;xEF+V@5vPXhUH8MS3k zi(DS`;Gl?dXtf>@8ez#mJK;1z`mNIin8$~3I|l*!;-SZBse};MlF;(RV#4@0VE?pe z;Kh$sb@3Ki5EO>88E^cdZrHFg@v?SODcS8-r(JV67`VAU@+%jig$POq&?ozfjG3vL zicKkC&*fg;Y?j3EtZV`)EPiJJ~9ASHE#34Pja$(d|CZi3T>RwP(5ZF1wqs{FXzgCGHDLY;~7yrLFNov}J33Op`^(tYYJc zD~Um_{<$>Li}`e6`E+_PPG}#Sg+#P>4<*ESYJvXCV%~d<}Ha+)sAEwu#u(R zeN_&#GWkSrLc2xxAIpNgF^2`2LxD&U4&8O{?+QdTN#G=*?Z3^Ybg6}6fu!S=@zYb9 zl&pW^BmAu?Z1q~SSL@Q5p@{lfBkrXVE0t_RL}!nHq$EtaUa5VyTN?qaBa()jlcw$V zJ38Idhn~Vj`OtIs>+FV;{o%;n0y(Kh^Pt3ie*Y-I`q_DX|6b(>HEeDIS;WAd4UJMp z?5AA{V=$iRmn8*mHL+pwdCTY1$29Cudu3;EwP;cUUO^W8+V}aj4WE#nr4Hq}!hy=f zj9r1y7_WoYO6H_7fiLklvSQ`ch>AZujPdpEv4VLM*RnYCnHVWT7JNBG*b;JtE5=Ls%6HoTf{%vF8wQtJvQ}@vcP@tQ+ z|ACA)zSDC_)dgK6E8pW8%`&RF;;pn*H32D07=o2-mDZ)oEpmJKE9O7$U3>%Hp__smB)r43wlAPt zvr!LZg=F8=AN}1|Y6YR0i9&uxVofK90g0Z~+;uc2t6%3T=l3Uuq-H?nO?3u7sAd(@ zSe}({Gh7Q6w6Sd_8O1aQ1h54PlR@hlH1B|?Q|pB8XhdI~bz;J>)XOqmI~bA)qL3FpL1X{kLma|;>gM2 z&NOSqexC{LqZJ!N9s1pgg}AZ|;wLtSZg{Gdp&7u{T6SjIYlXu{0iPY|DGv_qnhPFU zH}y*_D32z3C>sn|dj};5y3SI+VC6 zgNDCwAFu<_jrG8cq4>7wz8-{z&Pbd&L2dcS1LegI7~JFsW^;kA=?bGi_9nC4*Ovk2J=$!DP;J>lIRNndua%YExJF_>sW~K8sB*39 zf~20EMt-z#ajU|O%tg_FZk`M&9?m-Tmfx$?AFcZQhCheJ1;^#ZXssInlq*j(r}C1G z2@zZFZkPKw@-LH2lhXXflsU@l+O*RVyn7tJBAVqLYshFFz}2nE@=Rs!W9gyA!5N!N z7;fTUVxdQ8>~~|mVg;%CKW)8rR8(KsHjIsw3?K|0Lnu9T3nBx8v~(y#cXt_pGcbTd zH_|QLr7*NKNP`UBDIo~&!Qb03dZ%CaJlt8-0OFOa^ymG6!iRFcPIsHGEN%z5836hs zRs!6;z}O}KEKYnlfCU9k%Y!P>@q$Ot8A>0o#|JIYF&fJ+^uM>sr`Zx!Gk+ zRMqQIsSYmhaptt~B3(X4n6{Xbo6%-}XML$IN)-rr-dKV&G6*L--3c*-z7YYk_}p=2 zmKWsi20faNKuNm8c!opCWvr6ir|^g;I5iI|6nh*25vFUV%=OE1nzSYHi1g#JFTO9v zxz-0^%)xYZx5M|v)jCQTH_|-`{8t+Ltxnt?;=jDQ^wfE1%d?O=E}&Vr<2?A^q#}c) znhEw#V3R+Jw>&f7Tx5}7Gu8I!a2)g|kPA2hc%e?={5#hui3 zkT@2QNLx&r)>;0uCc=p5HmScT2`idGdUMh9k8aB>=PTiw)Q>UEw{MIt!xkn~3wWRZ z4Dd~81+b9a!%W%r;CBw{9xT*$MSA~5S%~qW8gc8E8I02p{yUPH-Y33H!*c;*f1S~2i)uc+j`(ym4xTmG zTX#ubp!}G)*ZRIl-b@J~w1Y7~q-<~B2|BsCkVauD@AN`^>tfiVyf!$86~$QRQ|xh| zuZ41#a;hbnQNs1MOv!^!0}OG(O47hdZ|_a=_kz zD$P)G`=<-+WTxD@m*2OY>>2x|I_C}SrQ1PA!D2F-vf`vGm;M)=Iq$AuKv_l@fu3|@ zmNSdj*dikS+H5^}2^GVqD<@H)1gsaLYx}A|_EL_9c{)p3x`qsL zBY(5=ipkmO`-h-Ck=?Bc9)Vo*58>FKNk zv3V&`R8oanMc)QpVO;?R;)_ma?_?M->}YfCK=r!WrI`?MrWkO z6wn2LGbi&F>s5{&S*z!S?zz#2)1~He{fq!F8lZSN?h~Pkzy-R+x;9s?Dq;`e%)qR5 zCubw^Boz-=`9qB*+F17ONp@(tyF;Ty5^io|-GpkBfHlcqQkm#)I8L>$iem34CQ&hr z%B&1M%(mUyW!kUXaga%V7X*T=gpv~q78y>($`V5;$sv-PWA6brez`k1*4$^=HfwZc z_&xN6BKMXwKFA%Zi9lmW=7;0G3}8ADUWnLcKL3s^Xl-}*2t!&DF=V!>KAW(JSoozu zdF^=5I)lt}B-+`2+HBp#&uut!Xn>Oc`5To4;y>Y6k*qs$Vcd9sMQyc1dRJ7^^OQ0v z%X`?NQNpTeWvL1E>OKZdge?C0(v9} ze@jDh@blp*VfQdRNStcdZ(666t~XxTF)5FP2gIx6b9;~S^9Uu~m9A4~3ioMnY&Lz;D(7c0>lZZ(bHWH~<*iI$>1xG@YcT9DTE zTJ^vv-481a&NXvCXp;!{<&VGZDfRK7G6MOg-gk+hFLFK8B8VyveYorgt+2lIdgH;W zn(FV-P!;d70S`}pMa$x8JaEdtIiVW83kXzYxGEHT#R}KGjCPVp9RP6!=(^8)7i{Eu zuKyA@D)sqo*wKC7pZw|C(qs`O0H{>mC`5_1Xs}FFocTHIjB_X_2@gD5@HEn!oz&J6 z#SVpsP1l|R5<{C9O@E7q=gcZ^D8&RmN2CuPC4T?tefREbDp1VCB3He zKG^T&Ym6N=W8daW#Pd;#| zQg-Y}N4$!&ggHjshscYh zn9hdyyxeCq?aVHSbTDn{6f0IzR7^S~8vVVvm7N!(QeY%5P~*NOFe>@OhUMogC^lOX zy_%taviGbRW@7jR!DAXnI&t8-FBJWiz zzrSaj2wm48w-AK0GiBghf_*^=WwqGGxjyz(5Y-{?EqFMTepiuL2qK&s;FHAn3@pgr zZ$*Yr%7&7+1C9%-8KN!PAwu?>jr}f}V9-TKhmGPYc~kW&_`AmITm_ZKvNPuxEo^e| z-~3{xpM4e6Z(?cX1!zd#aPJ|E2*NV?&6Zi{zutKVRxbme+s)SPQylvjx zbq$^-%&ez|*J4de0bQt0rMxyJci%%)B|m&vLA!D!cXj9}RZ z+9vzkZsF~c|L>Y@urBxRtmy0S;Lh5`CN6#-#b82#{yzf6YTwymyW68|{ba!R2m$qYolqbC^Gj z|4gC;6;%z^%g>FW5i8u@&Rp@jKd|<#%)g0#eyfiR$s9S7@dJ=dT%OQ$P?D*oSup4;DE!avP;y;)G=J^5z_za}wJi7Mtf+FLU2A51{2^|5 z$?oiw*nuJ$d(43J7$NtYi5(Bq^D=rUoGO1BgFDl(&UG`d4XLTd_;+5hfSs<$dQpL-WEx&-p9q2d~*j!c(ec+AZ*L`1fYQ6 zyi0ikdj(P4-S+6i3;R9hofJ`81wQwlu5!xD30L>t$nWoo->@{RqZ)tv{kssJAq6?B zetwE$d9~B8ftT^l`g0A7T69hDpv6B^Bjr3qJJxaGQr?*FFHe(_8ukH5K|cB^Oqa%b zh9b>j@zT3GO2{F6tp2oElPz4~7vGtfld(iY=F;KoNIEnYO+rqxy%GC2UIMmKhFDT3 zs=0NbKixNR&?ED)O-f&P+nT5Bx(-1z2{`G%n;Zl7bpy$&Jx=}-qZ&J#wKY~4c=ysC z7QJ2AgzmGU>M}{9JE{GiO4sFDB>pLpHb41+b}1;xN}`NTQ2T0qrC%t|GV&1(csM^M zud(SQ+A(8oX14M|Tr>kA79}ky>!_3Xau`Do}Tbey2Z>Wh>g zksI-hz0+E^=50SZ`K-zDpHqaVMM%RgV(lPe39z9R+|4V8^N$S8zvnSq18+lpLcmC%o>fOyzwy|t@ zhZ_gXE4qo)W(+a0YVj|`CGGGSGL0l}jIi9xZCV!6zw`S4I?Ul%V-&1$q-UQZ9}wf< zh`{fL|6ftHciW!M5#nEkhBenCgl=-;(A!up7LElf$HRX+NF2(L76MFX9aeaLU9X z`DPI$wKVpz$@_zwR6mI_>Rp0SJP?=I_}~F7VGJoG7@2y=5Ge3X<-<{l64~#m3}#Yq zEF;i>qO8cyd&2hp1fSB&$JhI>H2_+z|OdWWpfQ(9SI2UW2- zMk%fr9SWyK&byul0PYLpJh{wBC#8L0p^uG$)Z~l&<#KKy-9ovVw+}R$PU(%VJ(m(T zm!^tpO<%lVf|(1wHm7a>2#hg_4k||bXtx%I{#rgPGstwJPw=podP9XF;DlGf{Odzq z)Fn7WVwF2R1TAD-7IPk~G%HE>yGf_R_t}SGD1N~q>}-7YsqdKUgJJHsGHSE%F4KyC zP(lV6ljK-w+yk*ltJgoifJND_>0^X1RhM`C8WlC)P1Px4y*>u zDk6U=JvmD{vB@(o8LrgpcLO@>R71H9W$}6eb50r_hPGj1I_s+-2t|KJv68)Z4kd{m zKkb2CYIkm?O}w5A!2w`fnW23Kf9csvpF;JOE5GG|pTb|25(u=_7M1nDX8d!4L!D`p zz`yA!KZEm2cBxloGaEp8g3fvN7TebJUzz8C(RHeYb)JPw;V7{&x5Te+@9Q4^eG$As{TU1{ z%6o~3bLRV8!aCvfi9PTh9S|7#dP6Q|UYuTXNx9`#x;tbzxmb-)0` z(Ew`K;g>)d-G1x3NkBS$8HIZg1~Vbv91^aCznK5>H}2F;h!~O+{`e{3@>$>Jqy(fN z^<>7~K>D;#F?MYl01~x^&M7iV0HHJnU}>HN?BH?2vl}0^Qe1?uF<`U+HDt>2OrU0bCE@_c03a@qECaPb8o5s-3}hd6 z@WHKR;Iu#PjE(xYQfM@9LQXG`9;Tc~zN%YVy(c*hAeI??5$MseJ6FZ;I=Uh3QhQ;V zKyu@uap5LOoKD;ZOrVo&@GE0&ttIqQVpSH!eEwMa781=~Xnc7R*sRz(E9bVc(umJ= zW^GM2)I0)-3IywIj6MYbV$tlr&;GqGSqwsA`I##L;~jEHI3eRffykkaO4a9$Xj?=p zvR3l&ynDav`w3arI9?)?jmB-8 z0$v>71Z5V{z`~BrpvDiC#c{cB(5);xz}vb_QUS}1{gLPR?NM)iFI z5LH|@g!28r^d;DL$6=Gu#1Ag07mt8kYt*1@fMgk!Qo`S%?;2_SPkvk0O8R*{q6+gz zQOks)b3-KYCI0i}7#^Kp_S&u&$%KNc{oM29*E$?lN>QJ?o>0mF04A@|md9}-5(Trw)H1M$ygZvys@xd!}{=_2{;@GG8l-0YckeAqMYM)~-V1t0;`eGC4gq&Si51pjjcU2gdI3Bny267$U`&<@7~a!6C&BWLN@3yOoLLd_eP-D%~iUAK3B@d@_mR zspXP>hJZH!xH?mo`buVZo``yK{^Ne{!U`%9E#z%=<1YP?8kU2P_kqL~+6y(4aCS1@FU6ry`smRRfzXs=QD+&E)P&J7Z88gC6uCo zOF&a+Migdd6ofm7#cD|@NR|*==F4krN=Epk545HqA*V2EaL_^2@`Ia~N(^x}@DOj4 zzZC2J8Fc)2_5Wqiskk3oR6t#F47oKc!t)r9brxZ|4HV*@Pc4j*` zcB$xvXy_?7eDtt1F&lJg9tDewzAMy9(~jA5jZ*|4fz1?Xr{ZUkQJgIZ##hE&-?2jm z)kGN#Vn1rNV}{Yy1TEyXO%yEc5aihz+qsl4iLR1dmnFaF^PdiF{%oLUi|jpf2CO_r zK?2wi3-4@hgH%0psrhx|0xkkspU>tI%1#l2bYsFX-L7%_Y<3(GW@NGxk)_0EaOT$H21FI7XT)Z9-4Z+c zeMQ;`hba@rXjj-F$gko#$`8bN>EM2;YMP_04w(x>V-TR$nqtIM(TLh)?uEI)XjXO&a!z<0|KDXnre zHESDGqQ=AfEUsh9RY2DOT&tXAgPPbENJFInR=~5IYk%u~^_O92GABRQQ+;;~f=&e_ z89No}`zv7$!*L=D1s+nwGN>TbO7jJm@f%-24y_yejYtS^;{hZ&Ah&E(dJRb(vZp&Z zBlJt{+6-R-^%mGtnv?^IdkY`D7G#5HVq@upE70J2`I9~9)}O-upD>iFedd-}dpzPP ztkWBj_StZ-Anq`<3y|kb|p3^12XCHB3GZAq40$| z`JU^jhM%2CwpYxAO0G9|G@o~`1+n_Pyl4X|3To5%vk>*ir8rK6$>2$gIG$IwrM#Kx z@+_-JjX3uFXHRW-*rGL?-eXtf*~dgSd#%n-yfo~iMiUj_n2MQS@&K=k7^24lvndqb zF$ZwH|JtIB8^wricID*eyt)2o=KuHOpDF)ee8T_iEdRd^X6jjfo*ISyKT87SvryZ| z(*`$)WMD;zWkrwAKUH4R-A#3%?!FiE%#n2>Jwb*uw%L=aYh%`nKAFPo)VSGpZ=4uX zuo5S9LQ|Obt2L|dwfGfz9-mG=-^8K}5l~R3l(alpytyTc6oat)b{b~RHe-sBMGJlD zGn-14^cVr4Sl2G}{L>cf7~Fq(wR%;=Yo@Co*6fsOqs2!Cyq45NLHBkpQ}r!BDZmh1Zly zOK$yJ#2r|_^v5gX!Y>pB%tzN?*2xe|3m|ZNt{l^Y2b6UCMZZ@ls9s1b>qik-J-M6S zyn*C}zm$9?uNWzg3mUu#Afbw!;wAjfuI)D$s}iji5BHtsUkQUVf5n2wesf|C#&4BG z5AZtyW%*$oVjayPm+Fs&*uU^`6xn{K(K5fZ59%i@Gdd!UCuz(s{)n;3lqlDZtsheG z{GiU(Pe8vT9(C5qS8)J2z)}AW@%J5@ zW|wVGte8W)E)oRA3y`5yzTS3M-q1wUJr79l8uLG@5?jkEBcH=JSsg*MZ>6=ROSL2&d2zv!Pf81?Iwr@F*aWd4v+<)-u6|v%r|I zS3?*J0-m@|d7FCKdvr_#AqG`yT6;~=v;}y+uRpPp?}lqcXzic{8xvE(hZQe>79u*0 zE>jj*9JT#WAH0&p7TU&hPma0x*Lrbl$5(`C*=;j)e}JN6Eg?)o?j-G$Qewi6M@4C43;+%{#!qbK(14T9a{L1SpM2 z8QS)27@`+fF#UN}=^TP;+K5l;Syj5Ps+CC!5bu^{=?|#$AMAgG=@w(UN!b@_ITuSY zR!OUPOShU8L(;1i&RDb`4e0{P#(#%2T}`>1Pr9U0F|ivAnzIMT6Te>=#JibF%zp#M zphfH4*!JN9_yJU-8<)Pcjc6K1#`hFfqt{ldwfLrRsc77p9I-|CW22a{vl4T>)PB0; zJ90mKC}U6qZNxz>$@lLrQ=^>3mY})|hiid^EKE8&CeYKsD-txo3OG3Zztp zT?V6Io&^D$A&*=EstWc5{rLIUf#n|?)Z?p-;TI0&P_Y`th-%y~;m0n&&*S!mO*vs6 zjm7Mv_F6(#ceItx>?G$hBOH-!>q&{Gpo9k!*ah%%AtT^RlE|Wpk3rXmPw1s0@2Sb# zGn~2vY4OM)(fF^^7WCVG&umx%94b681hT~COa#0Hh08)XannHAN2j_0#Ilo-$E;m4|o-wl)u?PlZY|J8y)ExZh| zvoD^=l!^F_e4qY_R072*EC+r##nE)wP*x4r+ovgGCQpk0YL}vSuB{cjNI9P zk#SVG;Rh4DU0ql6=_g|cuCAo}LsGeCQkubYba~?fVOqK-&Sk4XC6U86R6EXfOb4ZS zzTM`Dg4FSBzLzHh0uhfrD?QOU^C~T^ng2SR)C4#GmSp#e%`SeWWljHt^`Ro_HUFiB z9Y}rbO;Go+?w%UJWrIfqY)4y{?=@edx)nN|KF)esf56Di%c*on5g+7k`eYiWUhT)LFk71%)Iw7 z3~=a}vOx)0w^U4)5gd6xn#3ULqb%s{{xLfT;MsM>QM~l8O)qzqA=FMARTSsCe|(S! z7R8ITwVlXqOU$~{vuGld_+pEvY>o{Zuy?@9qH5sW8OJX7SP}3ql?f{c>gD>V!QN>j z7gvg)PSO^;%A?;#jGMBX^xmym0v8=%N&@6j>n8U`Bh`r%>#Tz+wY7>ni2je<5~~|K z&N2~n1hvj7&|_xou4Sxjsy1P;)T|Q6xfCaPFEb6^rPxiXQXW=!1pE zEs=%`k8{^o`A@ERbM-m9I>til(r=tO293N5Wy){l&y%zDT6$#Y?wr*k_$QhfvW<|}c6K$8KSxnY`5qJOjqi1FXQCy^1+ zw|2s}i9s#u-j)X6s=0)VGiG&k`fS*msinpbT3MHy8;touJe5LRX>Ku~a1M6qcDVcl z1-iiRN;-QjA5d0W<-fLZ_+p4d3;?@uZ~=e)9WUU20%hR<)#0pY!+w9Pqh%w?dv)`T zWm?!(M$&qVLLv?W%59GHPYvIfIC?Yts7r|k?c^ZE=mAPTh6K7_wjPN`k2IG8tH#dC zGsN)>UV^7KTlt^S^+)q%ex>`iOQO<%vnhn?w%-l3Jcga8x4ktGtZKcJLP&Wb-iSJn zjN$IUKWdT#GooVZOR~a_FBQSJ)Y45b%^m`>HJ^%4AmKlUq!#Q#>fUV5@_c27I!1om z-wZ-;IxKiuX4Gx@8prVzRa{Pc8`AoAxs2RXD>X4I78AW%NMwby&a)dKC~}qaGyKy^ zPPXdt*8ci46oX)D4tksN9|FI;!WpvzqZ?`OWH)Z@vPfO1y1O*hcJJ)zJ*=Hrum>kh zC{*nJE}kyE;P6Y)^6I=cr!#rcz_lR0wv-ncZwYoTol9vE-LuRZ9h{n&5_SLkg z`Sy8=*{!kHz+KRQ|3Kbq&>FpL)1Kjyz`a#pY5$t>SK_M5zPyJgLLy5kI%E4gS8GLA z>Mys;pDz#hia(#A*ihT^^(32`XW<*vzb+9n2MW3x7%jB>sZf78X6M+7*rF-8KQ+Ud zVV@pj@*=`OvTOlw?MeL|t;w!D#Y?GbZ}Xq$-b}o@^ArO#tyhQ(;aB!EjTZjt3HHxE zMRULVN(W1OVrq39{QjK#N5jRUG5>fKK2zXPKm(@c4}RbtV$1Li?A%QIt$S(TxMjeG zVIn)K8^_a@uV(Mf>h-fw-EtS#xBiYvUHTl5-L*t^yD7CYg};GX_gV)jl!`}BvKQwX706}1**EiL?;x_u2@~bq6+qF z@X9yW{9W@sDQ>sie)GB*=R3SVwk>;}ij!wCTaci)oP73($zd&Eb!PuAzkf>7Di6V5 z(wOlm#Z6Rq$%V?pJHELDkV7w6pliCOm)VN(Gc-B4yuDk`A~AZbYJn9GLXof%p+5Tc z$zxazKnZpPX>%s@S)T0s4>1?_$)$pDs^7fV;f*BL0 zR@K5UzVazkUnFcaCOdZK>F}evA&G64JUV-Mc#yoLLwfz?Hfj#kdhWoRbH&QluRVDW z+q!9O60Zgfvyy)Hd-KSEH%vb4yLx+U%LA+EktZxdXmF~MQ}F2TkK^0*Bj?c)Vo#ga zS_{$>eld-4r}``dx0l0FV9HyH*E^ zswx~jXB}$Qq|+Rgia+HJEwhgvbD6NH@}%ukBSL{b+PAr<;bkR%sQ2PEL@N`J zS_F_R4g!@vCcBx~+yPWGzl-_@-ot$T`48WY^&Yk%zUoS{@%~*TGkGDkpm`-lhh~_f z%vYNW=e_-oS7YksF8-)kc0qTEH7$&Ym!d`LeHYmubkBQG&2Lu!kx~tB|MYf5^U*Lo zcOjJlb*ap?7yj*-f+Ps!zt;W?Z)U&^c4AVg{?7+S`Tx6gZrkr`+3ndldmAfdR&vUA%`& zhpjF=m>f(ZM8~Oax$J#3xh!;^>y^B5=%<%$Kc~XpLmqcgUR5UgV`@QEhC8CP=h%4M zVcMW`DQ5C7YO;~OREcGzl=L_M$RNN3TZVS#OP6Mpw<&mz!gDqMEPAn)MHb!mjMR_q zuu$vL&U)E@@pbI|!Q&Rs*i#R_?=#|v{~b%=_oQdkHfmo9<=PaKC?z!rBnq&u}(J^bRoA2GVJO2nJl~Gqd_({s|qhVxuJA@G8sB?B!tk*wdky~v!MrqBA z0=Ayl9#KcM$$tfxZUvK@{i9rPZd1L!Ka8Io5%jAhNYAvgndtX*bU z%@^-{H|NWA*?-;`yR{WNy!{)CF&(90E%6px9vEcWV6)W!nH66`0O5%_D|WQ5ssC#OzCU*s0hU_c*9R?0Omf;Uk4SBQi zjb{NhL7Nt50aDrRwQsM5Z}#hvH`xyg(q#TlN^7Pznk9JqCkNV5EDRQzKQoS!*QixU z7olBso_iaC5A5q-#7wdibTmAS(p4ZvNr`?xfM>G2N5&2$bi`4!U)s72@c_AWzy;yfHZh|M22v|GwSD>8)*Z}_;>=LH zg(E$0VwQ~uNf%Wn10rzU{HSAhp+f1ycl={hJ=R}7178^7WqNNGbL8;_Qsw&8>|f24 z*yP`0$q#{|81}jZ#CySl!8jFTqJ7rR9=SJFagottNoteb =FagottNoten =%f1|B-jA3VIx-Kd|?RTh>o)V`K+NAZ6_OjC%a*uwt8_rDEePu_nMB}8^?=@!{fvH2E+~cgn4<^ z*w}b=dbdKSL_G~R&u?*d9_sGatZyv2F_>D#P#Pms*dp*f8>+t_-1MpSCwt|1iI+&RZh5pl*a~xOn1K}dO#!?7Gzf7m9rPm|4 zqgR+#?j$mv{d->>5uijJ=aL_dUFKVEvRm%R3;IJ%V{6#`$6e{E)(j5NbJA{Ybch{^ zoKH*pUQa&cD{{18!HK`QK|iO{(Wx3t^A2b2J0krhly6M=ybc#w$l*_e&@n1?9%dg# z^XHnil$jjP;K28o%Y=2q7D;a2S|b_RRBIEy@#f~y=H;c|rq?D@nI#})yr*WqEVblt zYf4?G#Pjamq}M@e-1&HqJ`0JE6#Vpkhu3UQbGXtyxz##)_|Ve2^y2oJH(!?sqBWGa z25{?Ab?BXW*W-=m`dj8w8syLS*n@dx@E|Q?asXZkgJycgN4T z#?tyWxm2w2&FD!7W81S-%NW!+W<8(O6ZWOQ>1dt?3|uU=Z{*rYXJ^}05V8a$nyZr56ure=4ee_K|X3yJA}g9mY+)w+ zf7W+`3dzSx6j<_?>%tk3L`TV)+AcgT67FQJ8ayD?kI;g_(9;mf^3)#a-X;CkevD`U zN1&?M&-UiNrD3Tub;FINp|8dViveADS(UmayfahxA+szu8O=bsuH<*P=#0Tht$J7| zlOI2=38?#Sc;5WFU>FNPZ|pt*&ufmegDTJH{b4fAlKEHdP0rCcCbS`9JzQxE1bU=rr=y%*9B>bP{ZBXSJIuz1yg1)D4 zaxa^nJrkC!&Z15LtgZl4A+4kCE6eZao(Dr9KOJM*2fV+BLd5X68NtKd2_Rn|E*L5Z zKj-t`ob_~URWRgr%#42{@tbCL#S&^PMWc20e){U&5)>HfeCrt94YM;&F**M%?2@#T ztb31C)nFnP2*_g01W(h8?U+2|av}|F`4#vt{>sGAfWgdf$D@r;l%exX8IWEQP0LfG zt5yN7{h!15Jzq4yW|@7K2FF_Hl0quruxUnHf^@%f#RNLjzcaR?ZNsasCXyqTV}s}l zef?KaFqSh8Q1kU?$Yy{+n+P>xUsGm*WFEysoTGLNjK>7h)rGY}lOCCsA5Du8CUkI~ z=fBPjnFj|Dxl#){<0iW&8AxYYA2*18Cj2-1MeL@w|6Yw;Z=oelC#;X!_yPT@2aw~d zc+bp?#?}ELn9RiJhq+Zbzn2*b#bY%(p?6~9*`DQq2Yulfezh;$teOnD<_hNLzY+Ol zD3d45P*j;7)SEnGUn3L+tsd1gpS{O>5g`ll31Ojsfw<1akF$JrvrG)z{1y4tsHT9G@;NC0*mseAZ0zBwPRv6)ZFh6aL%Axy^ZOoJRA>YioA4yHM3U@46V{+hVnsjXf+T&F(=8dGed zKDd;4=`hB&c4hurWZ1&{wIXpOlv82IO$3@+vurDm`zTKP7zSPj+j{lZTs+4wv;2K9KJ(6|9PRGo-%C3^OI@@beC&9A5Ku9^wpCq9(36h0bTZyZwWcAzkm{_F3B?xgbL9W`xbTcw*i}7Qiaa2~J zDwAbb&n1|)J`+1AH!xRa*i6jA(IAP#RS?4Ot)OmX-Qg zUZ*3G6WF;pYQE5%S-=znm1S(n^C$lmxZO@oz3dOpNY59I>M_|E;U=e!k@1!8SY9CSNBIl-X>g#~&d4_#) z#!n1vD`7@sovN)~%Zcph0w6avZ`);t!BGZ6Z>}{ymd4MP;j*QA`N+wqK?4ehfApoIfA+Hgjp&%AUqms`tRi3Ao1S`+jMotnb^GY9*ho(U^ZQOOf3G&Rk$^Wouid5Yc)%q*Vn*OcK?9odehNz$T z{X=MF>H3_li%I7yZG(Eb^0f40=WBOlHfl^f@*p zFk5iO!-&O-OP6nq(w<`&zdm&5 z%7b3gAv~^*dH+0agRQsumjbJdJNA9bNb_=1#k~U?o!7zmZU3R`+XCZ&c;StP-&%0I zNzXlPQR6(85%vM(>RNWheY8A3c2IYX(bi~LBkw4KQkBy3ef(o5A)m+b3IY8;nD2j6 z%tF17!;X{pK4eqJ81q*nhKciYI75VOqyu7jQ+d)ZZZ;DS!Tv)To;>4TW`BCIrC!%Q z*xEcIN*%`66xc&4=lM-Q_v|X;?CP=c&@^RL(8I>Mgy|)Ry8Ke%5+!zGvr`xzOi*?k9|wP z4FWeV824X#aJZxJ&3KJ#R}&?g9&@6P#r?PP>pMqNGegC>*{u3(P!>vk#X! zl}*_=_{j>I0fLG`P}WEPMkJN9KKDv&qw=|`oO4R>wI#$`-@ zbxSJ8cj)ZXR_#7&FT2F@V;5jV=syJ3vogiI#aglp*dT14rFO5ejXV!eN_H3h97tbd zz1}AXqndT19;N;p0DMMTv%3;%r&?x}qCWatuf0O{_n#n<_e zYj%qK*1I>-JQq0^dt1pW{VDROV1O@^t=X`g>mI??Ssq zr!(2rkGVC7sLm2G%O@D7mP7b2`UXgT{XAc_#Zd(N zVTXca8 zCDqO9M-ETkzv2*oMNzcr(MEo-b(44(LWnWN7X$!%2f_x$Xzq^Kp_C{_ zLZ9bauIUF)4eC%7pGQzd0s+$OHsc!IoM_A-KMPhQE>zZ#j+?3X%&p&(;*%kPpSH8> zlqK*X!MG%DwX0^dXCZw&vdMWk4PYLfn`7hzvFOCHpxvtLUvZ<&{oI5W!v+U5((8eR z!U~TMeOF!h0ywITcS9JS0fksDe#B8wX%ZIWr9Y%{&p1H2La4buYT{pX!3H{7!OmP< z%8y7V8jY=OLCAvkz5e2L#J1zR!!#qv&PlEKe zxnZ_4VTb5->$AmR3u12I%k!2(Y7t{58Ayk~0aCIRiRb6{-d8=m`CT7f5LCfizNGq$ zE_AW?kM`*|2Z~UE1q{6Q;qJtt0hfd%sop<&E{ZeH{`xGe|51-rnJBvV_<$rZ8g8vr z!f;;F!1;6io?tL6I7Mv0z!;)rYDV+pOyaWvIBd97r=*#>G;%v|HOF$IzS|zGiba1} zmC0cRuYG1hBJq;^t&7bIR-@$=4$BNqm`sAN(l{F=e);Q5k@vegU=Q5{;#8x#OO|Ze z)t2e=rOr{Q63=CN?opZDv$HB>4iE|las@>(jSeBH_ZG2LV|>ASxbHtm*#~s-x*Y~7zp=Xz zK@%4)J$K~o=%b(;9r@}RP@-@`gjnKXw7T7p5?uX;peuJY442n`e_53p_o|-fZkg)S zCMoYhoDt#eNr{>hhNPls(cWC3bh$PC-nu2P%#7x^sOsWNE}IA>)QA(|9Z&A(&Rb_32KJk ziKPhVY0o8TkzcAFZ~L@^1&OEx1hOyuteuEZ7F!acaaiKo6(9VuevA7akG#_GAF-2& z`1DgymGEAyMXi|*)U+f!=}y!MJUcl^g#TvFj3{z*)bclz$2xls`TprZ^rhc@bT(-d z)A!3kk5_{?w;eB^>6S8XUnO&yse7OE_2QFhtw%-W;^#bwDZ2|f%uJ4Hc(}`Ntoh!$ zWPGafI?tiu{Bg64T=bT`;)2BkPNit2Tff!g1PLhtkqZCL-2-Qr1{DG(>P z{LR04+_ZBXlzIYYDY9^eM^7M#7!8WqEff;aJc$7a{^_Es@aTcr$}2$4;3+OEsbf81454 z4VCU))HN)cPaq@|!ZFoX8bcYp~lr3HB`!=Jm27umyr+U-LF9I9e>38E25|57-6 z;39wsec~Mz3}Kt3Yg8~|B4Odp$vm{=sV7oWE<=C}z!C)!lj$P*SSS6&V4}jzi&;Ty zJ8_J;-!gjsLNn95;-3nTg(o^jL9u--BbhVKhGvwIB6pl!T&UC2C$y8X@dRsA+)C_zTrp6@>oGX_2K;S z_cAz)u|7dTrR6U{4t#?uYg7gO`PrvUr&*eD{{PXb&5;JSQP2{IWn?roVBfPf<0%Un zpc;~H6$J(S_w%?OIMyQYscWI!pmg)kt^N5Sr(FShbuSSA(XYtiegU5{?jjPc{jaxu z>>!2ruuboLT4(h#N zAcZR5AdolLilzMzNSZeq%7NY{eQbt zne_jUR8B18F$Do-@4(_dZY~z<-Hasws$MC^417Z576@s6Q9e$$|E5kuuXZNJyd{Bz zZ1DF-TzU&FNXMrME@A>Xfh0uyf^#Jy{DFST5V!rAjlajMp~O}1F;~6UUM}=_9+;U= z=Jqisvtd5wLYNSxIEz&#UFpB1J9SDdxIqujW1lw`OuF3aJo5ZQ@S%kGPLij+8(En6 z5RDdrnxEOvz=DqNPv)x}`E6M4u{9`XKJqkx1lWy^5`cG60CmY&)XdC?Ca+#0JJCM&Xb%xOX3iCl^nh&6nNoK^l zJ0b+=RPWw$m8AcfL*tN$hzjsGAC8@hGfd}mnLrduPl>o7WUw)v+0*USSwI^PEj5qa z!Z;Cp@h{n`S5RcqZT7#fUGa5c=Z*H%q#@8`Hr%y3V4GSW?SO^vJHU1+h~XqfEN_sX zOJ(3G;*+%U*T3}Y(&@WcS0w)a7o}R8op-5`keri0SBS57Ki`f8xKypPO>P{VNvv!4 z!+dX#+U*yvcn{{{90wRsm&HXKsC;O1wcOW_Q?D?Z&CSf47j?>x1>Y%`$oDc4gUY0! zPbxO#)HK9-j~LlGK6`N+EO3-BEkqf+&>`YP>%(Ib6lXX4-P5Qknmp7U3-FUX%w|%9 zy-;Ji*w&}6cWU{94KFtujnA>MtKg!)w#IX5&DS?!pzTt(CgM%i_b+n66rNI47`}mb z{<3*eu7z|cX%)Uaotz!}LaBr%UJ!+cC?M?(CKi$VpwlveL}cm3P=kCFc4S@G>=%M^ zr7r#yt&t^`XrG{8-mm`z_#P6sR28pKVodJ52EQs=+y-uV-2`G05m5UEFh}(9zL$^Y zfovW6Z&pc^8@3otGRBr5IziK2zC1*|)`)UFIjx*B3sl&z__T6{6R?r~g~}I;#B;AJPKcqUj!#Ai2sf^}dv7j-}sK59$W>4R@@w%&% z5Ykt|1Y$dGO1ru?-k*t*IIbsVw&450aT}AbygPc{+w7RUrrHV7AqJch{riG&YA$@_ zcT@Lp2pAfuP32_{r8jNv)QK8Izje)s6xYEjJdPJH@zq0^QS=+miH4T=0jbZIxm za4d#_!zQsST&P&G{ZLr56ZLfrACtV6YPIARREJ*RddT6!zI|Z;VdVsIfK)tkp_W2! zRE5G5tE|iP?w*%1)PE0&AuSeK3861paDsb02^^fj0#2nn=HIgciuhNsL{zRNCc zmD`77wwPm>J#Mfy+EXGe?NggM*$z$ANyGT_O`(_!5~Xhmv3(}LJG}q?>IHLFulm31 z1vb|1^a~V72ITqo-<&l|98>Ks`nV3q7Qs->JTM1(zA7f1Vy+l2t*TZLtKdH5%jJ@g#N1BC*x_7Wlj%9-w%jj{%cyZn9MB z!e|Tx<*(cd={&k?t?4xtwd9r_aX!Dq~&;e{9M#cH@esf9T1B#REN ztZOb+zDOtE?R*aQra4CKJ^A%7u)r~Sxdo6gBpB6$IM9Xq1ip4eKh5qtuPDA+JUHM(cE~VuOnr~45#Zm1cE0ad7S!#540$tSFuCT0RIw6^L$(RU2cE%%+a!!Wk{}UjQ`~~ zIp}F{H8bCD(`1bEj7TfrOjHoms?asIXhPuJnk6=k&qT>Z(PGBGo66Gn=Tcfw8OKm) zM!`#mlP>1noy`F6)iNsA1;onEGZ}=~j2qvwYA->__rD`4a@j1T0GBv+i4r=)-~*2n z+z{a-@oC~$QLo;0sAE(z&J7W|s8R6S`l|8U1u*pkOLV}!I;o?YS-nfTX?C)w@^L%F zk+^)6#}b{GK$T>S1{Qw1%%6@rTu~c`vuGbw{tyT_-4MZ4(c~#GR7{lS8#8joQOD~F zn{W6nXim^cH;$GSkOwE4c7y1#^{&v|mo}RH{+qH@8yUEsz^nkVpPGk;Cq|;dVqV?xy)>!8lLau<@o@3#Pqqt+i{bS*T!yVvz!=JwY$-?^ZR>aFH1t zI9JabP~FAnP-|X7>nEJI!7j>tF~4ltLOS1LJX@aBS0e=vvQ8}<#)w^UY#H?p*-P-S z_84lL5LMCs#!$8)z#7?&wrqG0^){Xnxr^U?BRsM=9dUZcy7b>Pln;hF`T-ZxR6glr zh%jwbm0d8uV0gv*{XD3*&g$3f(AfC~nyVFd;Ub^NAEnymbQK`iEB@k_A3kH*Ev}eX z@mBpVBssxrskDvoUgoU@Qvqs z@|_VUK1dgWVj<$NY1!;;zan;QfWf^qjh$}tJq9v*AUW`m&K2D1uD{t>ZYavT?#{WN zjx8GWlKixDE89nsNb_mq4~SN691EO(fVNVY1h6m`ED){T>Z`v?Ygb=Jg>Y;5a+QGCf2XGo@W35iy^ zA|5}5nR2b+NTB={-QF@RzxkRh#zQWXVG0k*ru1sdp&k8+{W%))*D>m~+RdgYM!8{M zbN6~a-Kr@StS_fJ>!{L2MNwp;fC2!~c$K)kUfy?hQ0j=%V+hgsu|7PGf|_WPrEyJD z{%*W>^Ydg-X`savT`X*ifsY9a+bDW!y7|kI#wL#HFz-csrS8(#e15(WJQA z*W-Yp@`<)W1@_%bT!2Q_HT}J#^Nxi_SVNtS2e132#&d+4=fyzy60X1y+yg_WV=eXP zv3JqXy}7@X^9bdzUn6HDf+VpiD@L?w@l?cZe4UzFj=nm%yd5BKRt4S9r2=#H%AHfm zm|i>j;IB@}GUT}}&*P|v+NvIFyKAYCt{BY7wSL*?QHN%A^ey`+$A|!E?bWH(K8Rkt zRq(c)p?SD^QZy$eZ=$igCZ3InF6#U7#h}PamPO})Q|>~<>KX6^<*@OOEut8R-0H}= z0s%YY&Pd~Z&65_^L0ITmX|LFB-AP5967KU_Vicd5LUc0ph;5{M0b3PB%n%V9!}b~c zYb4~*0KZia4ik=+Hm-i6nzz}+ zbn-=;8u?4wDVAlxt>^NiJ2vfx7yx8#s?@{h4@!>+frPq**sp>Cp`@LMXH1}2^VbSW zf5cuTGQQ=kOp_5W~`#OOx5pvrUfB8VVS%LfF^3UOcd z40<srnZ={>WteL$!Zx$QHKg{g)-SCpZq@wsxsO#j`%|HrfEXOf!D&vxl z2k`lx(TjI88!c9;I5ah>&V~gmEIZ5O-Hv0uB=(|I53x68hlS_)(!qU)w-; zCO*?y`Q<|`VR_lM$S=yRk6wu;?L%^0t|%FuzY8jclNWI7{gz3(0I`%~Exdd$)sb6y zSU!>^?i`)KxBJTej98n)vRlM1gFYZOO8ced50TXUn^dO)b)GA=#t9&^N31rskUd2^ z>QRyrQjJn)8BgSOqitiOlQg*(6?X`%M+gg7DEq*Y#{H4uIQ z{CBzT)Bv0?xdII`hC{;YgK;OOHKj@Sm7AWfl;>wVAKYhJb*=OJf-7_`wc*d;Vg z6ONioT;!)%OMkn)&U9POYC&5|Ks6~5h7+dcdS^@$jU5fO-~a(Nb8vn^ z?jfEI5{KkMtdpq7+oN3nJF$GC7yb)<8$!>AY$QZK9n?LsxJbz-D(LBhAUP!Uq`xADnux z-G?coA!0j4<00rohCsCpckNt);eDtyQG#H$`|5z}Hf7Zsm43jgrCf5GgkGc9}heuMn+7JG0e)x-=npJ^0t@~(p>j9ON z)B9@w^4W!3PtAX-;*-*kf4D;w-n<_)xVlEha1{NEgz89(2`_YyUB2Y&ld3wqU^0gP zjBcfe|0OT9B~Z>S)ABwjX*)Q2&qvj1<8sXtYzY!Co{54I()8f%i>|PO6`@Y|oS@H< zQ0k_AjKzdN6DyecPXFUzjx?ff63LqFMf*^Bo|P^D%#K&xIYCNE?q|#FBa(6uwitKc z7+G-8GyI>CIlC(d^!X4a22gJZx&HsAmh20pH)c8Z_L90yUu7iw-;Q!$0Xs#wnXb)a zB-RglGH&#kJd?w!t=5u+n4^ZnZ`O53itB+M{9fA&X0UD2P-{NEb5O^hMb^HVgOZ5z zA3$!XiK`9&?$4K-WGeNSA=6S|-W8%cj5M*3^Nnz2G0F1>&dq@I{bx-Ux-L`U*qG3d z^q|YUmbgjYs2t}#d{y_bxeo3SThTZ8L}FJ#E^FW~-NSHFzAUO(345ajlSbw*TT=;t z<^D}xH;iEG)MQcf_y^ej-cm>WZ8Yn%#1D~sF3CdWz0+zochu1Tz)jF+cKdP8u>qEw zpTr&?+hH2+`cO;goI{&SGl_DGTd)zPug)O?Ge0WK!)j`&pv*0~>b;NF1^1r2ZvLPd zSiq;+j+qD3t<=L0!gjlF@)JVFMLVgsQcJpVTh_085q+-QHTXNvJNWepuq=pS@xR<( z@%%9PWa4sb?TvMiclUx7K9z6Z1CGJ|2hY%7r_VjOZg9q{?%rw&^S57mX+G=t5_h@49gXDQA`pJx!AU!mNn?aYEdmyZNq zd)ImRRehDtU0Q;W8afP~{UsLrz6P~0q<;JRkmDqEfaW1pJt~uG!1?WwVEQ;n z*_R&WKH$4|ylyqWDoeZtLa(zv@&1i@5ZWbvLfS%jkLmi~vik>ysxVE}>_pm5-UhK* z?6B4>G$A~J87OMDJ<2#RfZ%eyElWSmmg;l6iy6W8q@Gh=lI}(b+@}1>hp2fNoge>@o0LZ$ra^Kt zJ?&F#q?RaJm3WW*y|aR2~Ln zEDyZg{|$XorsY3AK>~P+CNHQ3oh~_c)`Ufyb*t7Z16%>{<9n}!FTunk2})d`LoL@5 z*PMQFf!olpu0!atT$g?2M6KDo(qL(iJ?D8yhnT=;wL`OLEaHdeq-yO7m1?hkvGg-K z!(*!Gs38qrq7r3(M>NLYpENDtC@#6(ivI`|Pn#2aW2ooNYE0_7n7&l#6WvZ8(_dQN zzrEOs4{c#nM=^lm$)Ze4r@!qd8!M_{3s+@y4fNOH5z{!78tv*Er3J;W-X2r1=kjBI zKHiS+D!KT%om7{{2zK5h0aT-ew^U3{NcAlU4rBR$yd;z~92=C=+Vxqu`kL`_GLdT3 z{v?1~1D0=cA0abM;b?K#I{h;VhFW;^U9WuDhnh&z?H&K-DXVL4B(?AXhUm(bi8dUi z{A~rX$No$Hg}~pPW~TwkA#6XqG>}UR*^g7#=}?s~6@$%sHChtd;9kuWL5Rb(Ge$-x zXAlS6<#2C)u%}_k6ZgY}wB*87??C7od2=^lsqqBlt=>4xbAPyCY1Y}Biz{ocy8wzxh%Z?Z(~I$Tqi!NgWc2HfvVEyPqGr+Y$@D*rkwOdvI~})_OxI}n}8Xx z`YP*Aysdg<0qGt?axHT0+io$1Zx}=#AFm5W%fbap;-cJ-kO%aa7i|&aaSf%bUoYQ! zS5UoJZ}YbpCkLe8@>?sexmn$fyL~#TLapRhc>T#l-S1+sb&ph^#Z$V`x3bbaE5d{? zxTfkGuTlA<78_1{S|3#huwXS1_ogtz9^rt>JA6*{z4tha_ zSQNCvDNuOF1WNof2BH+f3&M)aY}HfJuL6l;qO`Og!PZX_7nPBkRdBHQN^Kyc;y8f} z+0r=izmcsk3~O6qn}6^{2OmTtBvimc4!`{loJ&2St=6edzNtC>?!oA6znr!t(d0(d zqPP`#_;Vl%)e;Ase|w2@&4_ZN6cHaSVVc~P<&XnN)AGHFS`B3up-pP+ zYKD|{8($dp+w5K%D$@8`9T6{gU!`}osCzfsXG=&~_kA^Z2^REPoU()t8{?<0GhwlC zl}?+Dy!D`7=j;?|r0gX{n^a%vw9iDRictY?tS#-zys{~_N|(>5>nSby&92S)1LvRP{L<+IMfB1o@L zqVevpalRkq9Cj8Q{U5E)eqmAonrl&aS5FN%3S6EK%Dn1a(4qEP?|_-Zl14_p1E;93 zj!6V$kf65q&ES9l07RN~LhH3s%R~z3_6ejHoSVQY5z+SHTw>}a2VDN8VfO8q@Jw0; z5z^qG;ZS18vXKHh4!cyV-PF1kOwbzW5W@s*hg&gywaezdAL3Ubm7;IaWP(n$ztS5K zhf<-KZkREhH59doMM81Y)FLG`xcd5rUW0o_v(|Tt7TJq=KxTKqMdw~2`4mX0wr7R@ z2c#R^AzB0b9r%~)eMA&t3IF;Y&H*>m7)O$EX^Y&#M(`lVNN=3ip4(h~ZvcK9NV-nN zgRpIxZ4i)t2D(?EFaXnbn_1@um^xk^6LW&p!Oo7A1l-~zLoHM3I$*NB7T(yH_P6)% zlT_)ac|m>(zgw*8-sjl0>7(g#&=2Fxtd)5c;kXQi9(_?l?!Jt$L6TEhB8!6{hIr&5 z;;WTcy0K9-x^^{Qr3!Fe1_Yh`$O{Zq% zAiB}n4id25rZW)(49YVc9vNdI{=DBrISCo_4GQY*2LiALWzC+`2B+%Ty^W#-Zhyx* zKhB`!1bMC5?;2e!PLrnhN7Bt(AGoH+yCz8d`!2`a#o?unSBdkA0AuH3HEp`r5=-F| z2#B)et}+?cEB7S|hU&w2c)k!^p1}axco`WrJhWTn-}Jg^-!M%@Bd3K)e--qbPRsp~I=MbZox_4L3#&k4LR?YUK zOF0V}FrRre_uMJto1yovNoZ&F1&jqmk^4z6JKt*vy_3-^M``8{n{|JR+TlB}Lw?Ju z;&Ukpef5}9dwHh_tF?HJC-3|MIeX{(>FnywJ#>A!cB$Vxqp>m0kgc1h@@ji$k>&*F zcfX&Q>VVmko{0{=wV3#!(z=9(np;e;NK*(#buz50$$2;Z6S}#R)?2S8fz_Xe!$Zc} zF%m<H!L)VTaUh=99eOVw z=H$&2t_Fp;>{cujIFVu<_nBqtF@-aNYNOF%rMok^=JDu*v<%g~Kb$wCd64vz>C_HU zp~N7jFw+P0g5IA2Hoj;;`(HOfKh2+`NuZK-f=1c)cKCZQo8^`xRHe)hH$4|lX6|9~ z*h?G5h~cxhNKS7a*Ep1TTp_HWWL(DBVp5JvIVrjVa#~g0*ThtU<7WHnT2_;+1q^up zK@WrJ-!vzvx?}gKwG5xi{Et*GCHE00O3}pSkRTa09Jn)-D1uxnal{+Pz1Euas0^Yx z@g!vC)>a#smXE4EUIoNn8sB2wN6-O70^;#R2nCm#9cY?q{3F~gS!4DPq(9%idD7Q5 z7%FavMbf-Q*cr)CZr;C{GCvLUmskZqw~F=DOCU-V8@fH#_eSHCTQAg_?P*0}p67p>7OIT=}la4U}~u-oLo80G*-B^4gy>pLQXdyBVw>o;JS$f$;j+a(TD{uP=l1$?oKP=?6AKbhtI z7Nq>d6~s~is8F-Q)fL7y*tmDuKadPZ~Zuhq~RZNz8AI%RbIXIS{PuaU&$xm z8g&kG`VlD{Y+rp6cGm2}YhSIGyol3V8488Jy2dcRII0+7J>rUoq0&doUMiZthk5ud zqdA=$XPzWgIB)FLy7Q9h!%=|z$U6=wl^g=}poRwN%L(f3A7A%!KBW6wOqIVG;ZH8% zZTEBR*TsAr+`8M?pvn|X_BrG~6|IE0gaUV01WFeCNN!p`#^ZM}Qsq<5x^-;V@BvDc z6TjkVA(Y~dKCr8?fYd^`i<%U=qjgDn&85{Oi*EJQnC}=cK2+us536nXNd+f!F#Ib; zB;fVD6+arb-R!|X7*AcM_5)bmzL_4F6hdGBQ*R>`6G+2 z_)URfh|cpi-ifTlsJvr!ObmXeWR_b21bi~)Pj)(!_|b2P{+c)o^0=(`nR$PTA)_|% zAU_nPh%idsj?E*LA~*++A2Jk99ZwFtfxu?t2QqJewp&2n@*9%FipCby3rgZsSQ5fO zvJQ|)Y?ra6kNsK|CptgFo>n&po&Un~;K*pY|Ly+&3;jcKLjPlX{tL20;v?iO$tSu0 zIG!hVC{dda$pvMg#?k(NSRf?<3c#7EXnw+!j15Q1F5&;~P?AJJHL?@F`SH@~{1%7I z4|TkyEIu=5W*IO|MX$HV7hI$aBjbac{WS~;lXKj(WdyRF1~ao*hRexq3Nr$S>ojnN z2AaV>887t0i2Es1Az~$AIM7f1<6N}I6y;B%%;9qOn>yq~72zs}l(KM5T57H0iMUjV zfgxJhfO@|n7wsG_`AseH=cNApw9`U7XhT>%QZPCJlI|P@^%XP{J7n_v+P^6t9Q-xR zs@R2!`Hu6Bd%`jgsC_p$pr#65N$cy+|8|;z2UW$4*TxxB+vHb$J-{|B2K@XCwi!%7 zPUIL~qbHU<1dU0IB_}F55E|0xmpUYsjjn;DJ48YC1vSNDfdOwfYqJ3qjL$f!x$x#I zT&~q@1_Bt1ATdz$RLHgJ!b>@Mxp(FnwXd&L#j*k9NI6W;wtXXk8p|kM8j|VD;YrcB)yN%SLOo282h@w7iJX%(L}9-x+I_0Bn#QO z2@u8#sS4zgim5QN2!_jXZ(5QQi3&o|8Ih4Q#rV=M`!@lb8y0M|5qQ#NF0Bfs6WCFS zv1CNPIO}CDV#zOQamG4rV{*cOq}mvSCs>oqB@DRs_w-Bm(@MPxv#NAiP`;KAA7Hw~ zWz66N4IA`t`W96^|4@MXjQK>{dB9uNR0{kgR?68~(7);MB*qOYeh1skKvqda7NEIV zOZ<%GW&`;7*SG+EW4BIU8J_G5129 zGklm-+hS-SA8C19ujp1AiPG$uFHMgZTMQXZEZsLn-+1XY2YJSk#FI$Pd$p*;TZ2EX zEPpZzlnO+KioF)w$RaZ}tRs~38NlWI)t~?Q)YRO)T!FtJ_q(jlrjT%~!T#d=Qp&nO zx>fpJDZ@wOHegLdlL_-r{pW8yyR#|bW^~?wC%>jlOvoFKtt)iLn%)0}EGz{N&aX(g zSS~a>uN3F;n-j=+!sI}lN&c%zWN=<)+JJrtoihg}gCT2e-d3v|K2X?y+&PBKwTa@~ z*OEzKw<|PfAG<}WeAz)uzx;jU0U1yFO#>XMM8(lrQ-Dg}m^qrIs#Hb-u$+xF)>66% zc}tAYB@ZBGGg#io(+S59H{2j3PQC7~U|gog5#+r+xHO^GaLsawo6@J+KkUdU>6Q$$ z46g_?Y$BW{@qax-0mw8uz}XbvB-sS!`vnY!Uj884^fS*<$Bc`zY4A6u69Rg+HgA41 z4lqoblo*l|mzP5~Z;FoKZNGDqSTm4S$$_-Ki8Dx$jV!!YKagU!$ct*{X)J%}syI!+ z60X*>Y<&e$yfzkFc-b9SZ2);a>0U_fJaZHKTw>@_r*f9K=Wnx!y79ROqNE?Q-@IRC zQ-3qG)RtToOfY{xw-0yz>y_Q0ZZa5ZGN09-uyp*ae^$K9ogE{!=>#Y_g8hD7d-FwC zeB2VH44bbvl45|`aIjBMAbr~@-e+le1c^3RIJ&}3ApQxZ_Wf?@<}F^KxyDT)6`h0+ zTkRupZrPXlnbVU$Wgi12kNq#Gbmxzj_XJ7|5Zz>qp!n&sEaU7Wy2gZK4JMFOU7E2) z5#LI+wSEZ~Xv)jD51uALZsEWA4@<*;ypf$WsS@@S_|0iw%)F;Q*L*ZPy+KMH)0kU^JBSV@yvV6Hm)#{BloMTV z3`&)(7@1LK0R4ogJQHYK%xOn{SO0aS@3UV~3g>+MwA3>}qG_E|-_YnFkmnl>4f*3> zz$XNI!%{R810|g)jpZG52iNSj{#firyP+VV)i<%>IjrWH`}CF#2%yoiNzeyFV1${5 zyCUnie=}c!W1~wCBzdL5ui<9J5=3#OCjq?DT(V%Jy_X-FQ;kP=b78?RX>b@Zg%20) zbl;P~UJ}i_-&uB|W&R+kzVXSu7l1w%9iOO*dHSHiYejlsG9?NWHbjvOA$_=ma?r?g z$(Xw-?Fg*Jc5kN{G^yY>BncK96e3(IDLfJsY`eYz&hil zeUGbQfSTl9+a4ks10*qb0cjTg{+c*BJ^$h-qI}*wvO(kBYP^5Mr~P#ONSJw;6XHi& z^ZRDW+z?3mA!mgduRh)XRmXXTHPuAzS^?=umm-8F(nLB^LYF280!o#l7^+kWgsy@R z0qKO^6zPNxia=gE(wiVP27~~iMS3Xtw(ooXoa=n&|DMV0YtO9ATI+f4^p7yu5ZmOh z$~^URUERO;+_y1Ne>(Xw#;n)%q!v@}y=O@7PP8k~fmrh8msHAG5F>h(PvRQBKk;^Y z%SsO?Y$jN~gr%`tMze<-WoeL>zUl zpV67EMX5htnqdCP*PJoOy$n)daewPo4uWVb^LUwg@lX!8vTN<15~f}eh3t1Je_u#4 zj31jyce*J>Ywct%Lpy~UbW_pE0Y~n7tV;#E=dLY8TlZxUmKsR7YH#^c*qY87w_TS! zh*tP2mt}3HL$QHotqe8K+_+iKjb0fW$}ZgvaYu^=ozLpPHqdFZSL(~c$hjaD57GEj ziOqyQjv*Z_5-EOa^iS8QgIk7EpQ@ERVRm-tc-UeEL%Jr^NVoG zZm>`_99Igh;BP;k3JvIPzg_s4*`4D>LFk`or>xdR#p0$_MahQohUsuCG3~?xx9}3~ z3jVqAp;<449nmXG<5fzKM||_Xf@L0cdc5e15J)tzkax=(_ca4B9=KqZ6_^&_WtH6& z`&dlfR9m`%M3BcTy(@0TDGm+xyvzTsbjwK+qL7Q(g+(c+ieM~b)@APPe-PeL* zz+$tLbegtHw3>QXX;}~yVbz~j?*R7=LA}2Ly+A*Yms6EF3V)kHbK({+c^T{^39ZIk zL6pD2Xz9z5$~)}%I3 zKbSODjHb#RDks&{ivlK~o{W4b%5~Sl%~ey6u~+@6dnnx>>xX|HBQCV`q*&?snaU|G zY^?a{9h{jpo8G|H-+rpDTn)`%ABaP2@o2^*!59i_D)y48Dem+vL~uW(oQ)#+__o+{ zq^bRg(z-VMuf<#=veN;h%X;0N%;}0iB#RKAiLP38DBW2^;&Wcmec`R@O#TkA|J{FS zCy9CrT>LL@gfSCp9jO3TL+e<*C(_>OpDa%)axdXJKO%&@dRA;_0YXAvVhSAA>yvUe zza=#3{YCjAVRlWVGatlcytfCWL#xY7;gixbk@=3b+@v$Z5}hK2YzGU9Qi58$&p6#; zqV+J67AdNHBZV@`sSKK632TmbeYEc8M~R(mq6FvwKMOqqe)72}hT9^252-8 zJ2C8Zapy)Zqike+k+<;Fv_tLXhUiXWs%(!|VPJx>UegBo>8iL`LrQ#tUCs|2Pv;-p)8#vK(5b`Ql8>ip7KTPwOzFSXH_W_cgR1Uw; z!@Z|kUPJrMQM}iGgSQ6{&@~49cm{WSv<X(InFCYh6gMr+1<-&5GowCCU4Sd+d}AN zDUoP9SKl(Um)-Pg4#kH=YE%Ruh!RuSo~OsmKkX{JBPgS&M7ivk+4T)5MKYJ4dHd4@ zQt=c@tQ>cJj-ICB&`7XuDl;6NclVSdlXl~(@%N4|WO0m2KP#~DAF^s^=cJTccTfL) zBwuNZ)Hxw%Pw}=vZ;=;bXz9*cMDiRxr{ux5PQM67k`9VGvS)&rC1HGlm^AN=9kCRs z!D2?UfDmcPRP)Zs&-T!I_ehUX>t?-CX!g^y75>+VccHu=H4+pB(qZh0p(%U$-m=`( z@z7TX$^t~8i>YyeND%ee!*15d`|%p-xPjCDSqV#OPOL5Ene0}+y7ttk!lYf4XK4;@ zE#q}!i%MVHO@z(zb6jY0knhf9O_d#Di@RZKCnsnI3AaJG&D|{4v{zO^-oY;Amu;VZ zzoE%MF^53E$TyLq?=EN*fXr8SIV&qMcF8q=h*8u8w%oUu*02Iw~?9m z^gAo|Rc)*(?m#TSmYsVyEWkxd9*i;3m$;zr88#!43(lil_}h~@C>sYO!$s?h{B6Zi zdXZM!~r@*FTC#h*kpR`|V8>0@M7Tkq$T*gK5J1I&fP z)Sj-_PkI_3vCu56*QNcxQu374a_}XB$n^&s?6{&mGt*% z!1l|w0QciXs+-^$0Ty1@34Y;&@HNU9;L{S$c+UjRG8UHkf1HH`uBtR?-i%jiSU@!}eg&1jJh^Pht4g(DM9<)L^pVWv7y zBnmq4eES-KDclhIPoK5f4IUjbku@gzO*`T|wSR1{^n#7a7jNK2jO}X2uVJR!&|t_(bM2hCJd;`z&uVqvDXo38EeT z7g@5~Y+H~a3aAbbrS|Z*KceLO?7sSrleTqhI8}SPWy$SI{9~}D^dk%<6q-H&lk-^#1xz7Sb!p~NR{XNOC$;1kmpl|F`~aHC(V>uz`PR=eiY@PhK* z`)&^&vC;5@5=Z&vhnHawz$60B?>#{KRxgraFuNWt#dbsB6(4}(29ZVR&nH4p%M~29 zdqxHcQgXtQKY6r+CHYBj8$T9E=Ej_|r#gB!-<^pQPde!4jl3G=Bw~LTU*lh%hvNvJ zD3$Z*V!tj#P_tjw7)kr~($>BT+k7GjZ}~mJoL{hQ#~A;c0_l}`8(*U_c-U z31^|Va<85W%U!GVbbbCKG#J$uYXh8_5_nz#m^-KDhgE^4A6ysH%_craK1ji$i5s~j zFiDTR=$vy(%pYT!&C&O2RIhwOfG*mQsTrdTqUOG4#bl!jP2-ZWhtKa@%`Hp%v^OHZ z3NEm+M%0~EP+(gPkHFxUo!{Mw3+Dd%KpPzl}1i`}lJ+DW^$|X|N=5|5y<83EG0V@aWbzdRqm>mX`d6 zcud;1Cqz6Gd`Di=&VvL~(c$J|yIlF%2McGFy9GA}6w|4$gbJVEB;ghN20hv38fT4s zP8CjXwJ58)k;Fjd#g==CuVK8#@+t|Fndi^lrK zL)jBATD}?H$b;9QDV)^OQvPw@K9RIyzt7&C!wM7iP&UL#<*VBBFyFPBC2ib_&5-Ow zb4yfz5%1}m6$O#+Yim-9~221pj9I`vn%b0QaHD~qA^Nn|Tmuht- zVbFa0PXUlq-!^m5!|9``)WwALzrBy3;#*-&|AF(WQQcD^>aaAv(gs)w;`_3mR zOUj??=otY;l2_8O7F0e+k#Z#%*DLN{;#Fjxyuq?GCPw_MqMP*BXC}w+78|z6Y?q>~&^L|6#W-BZ^bs@HXe#oKp zq|RJ{+l-I#kmvai6|Lru#^BUM@f-m^y|MN+w^YxGC!*N(ds^i-X9wQM!ZOYnka?7;4(^!Oe8x;Z_&oIK~IsWx>b=}w*b&=Eb1WM@r(oe*0%{)BLbns9H zYn<8e#g=(jH9^`XC{3ESS8_^f9~q32;)C8vswRwD-K@fSwjt=uFRVKAMijGc`sDov zjv59;l_8GMU}Z`cmC+AnP4_ZkW6t5Ikn@q&WsQgz+eh?2wihGK4x3*kKa$W`3_Z-W zubv5tS?cngR;6$WFQ7vyVHb3dId)%G7u52~G}xUtA*i`?FS0DLvppj7! zR@7&M!(-DPLK|db7ptUF9Fn}clhJNd7V6V<6fBqkubWT$JRgj!bw9XgF|UZs+d%2ZPhBa!-t)% z-@K!}k$VlE;XPp-N@gU+8&9$C2%0?x+s3xslLISKZwt@0s=bI8YXj_Ma-3nzCMx% zP!DIhoDEY~1V_GCh_;)wXt@x}?=yM#%ZZg^f9fREfoa6*%=X!8(&=De{Mx!|Iu0F< z3;VXQPbmIzjPAHub{1MPA7zEzD2A*l=5Mllq^f*^B$S<8+J(m!qi3w_M7wRxxecxmr^WkNF{ct*7Otd@?B=kMVO zf*&*4O;MaUKMM*=U;oSxstmQ*X!q(kQHbieL0^4hPPa};ea3ymM9uCkv3%Ua&EuZH zu8@iW?((sT+4p_Z9;tcd`I*flo`ul@oB;*ISYcjlU5+Bpkx(`shW3nzVcrTau2<99 zLs16kbZ3z5P~N7Oq7T=FQ%oW#a^yARR4XCO;J(E|2rQ7kxhY`!jEu2X3zXl?`o37a z^6b^?l9!*wKwP6yQgsO#s#9MIXZA%vye!xKEYpne4r#|Te-fTJSTxNM6A|LC;yH@u zy$-`Zj>1IE+{L_Pc(vi0h!hZLX74_RaI??Y0Bn>G zpa4~!<-tDw31PDe!e(%IdJ{MCt>`?YL2STc*vvM)v_Gc6DOCQv#K)8Js z1Xk^VObN3esq=1ZC5{i0-zi-;R;NtDi84L z4~k&IF|YN3W^C#UwYW#fiS#T9jS&edfY4+ADD~x8ztEjM-wD^(>IvbG+IZ7a*h}z? zs}?P-|hxYjBBtoB1s z7w+91&{)2`($$27z@PW>moXji*T00H`Fu9wyGBq}AKOa=;FC(gLwSEvKg7qF)G~SI zVqf0V@6H?Fc#zJfE4}K0JHmqmjnrYQ~(+Xl}5j|0loW7JCurz#- zG%^#|{9-a#UE9=lgB85W9u<(xo|#g`wr>E8=oOM-=iGfA+RH+UujvJxdsXDZ=F5c) z#o~YNfGRKCa09IMnkzKUU!4GQ$)btoQ&K)aqXK zA9+Bv#O)R$2k^b8;460C_V=fAHs3M!<*a3Ht~+1_yb-CHpW}mzfJn-w4sK|CJGptE zor~GME?A0zKK&NlH#~8f&+`m~4A5w{Xnr0^u$d1q1nO`a$JtCt<4vXAUE1v#Ec8C}#^cU)rf<3tYS}R>`trfy}tf`Va!jdEn9? zS7a~d+eQ$aS5DI7_vSXR-|`#5>Ovc}PpSm}0g@FuarZ2@O&0^Q7M|Ws{*p zKAPyox0b$}-qriTH<41p^p=VO1IpNzE+qX&MjtMxcd-Z$ETfvSJL<=y4yY9HcS*O5 z`SDn-!{eg=DbhIc;n=OLte|S@6%*?drO^wG&xg3zw|$Fv-Nag z2UGhNlubt*dlGkU!Kk5pEBf&BpX_!Q`u#0sLuN^j>Bh6_4FmuB-X~LsUtk{cflMkM z6R*O`NnWNhOFHe>IuEShZR6n)U9118tPS&c*7z}b<=&%p6x1Yg2j}2lD z$uvElX}{2txwUMi+W-EUH%Im_!i~*SQrx|tJy~Huktd}zApUm9e%eFxm2ENQvHhjf z2lM+`LHypiY|5IBC2+!RMa{*v1$ajM=;3K_bHQvF)%Q}@SWOloRw$=~y3!(w5nEp1 zb2U_M#WA)tE_=s~Mx`mDeNXf=ti3qMb~pucG?nD6oa?lnwSM!ONKSxmTkq0$#JFJT zr>OXxmTy!IF|+$-X7fK05-CNYPac*~le^~2>D7g+9L^p3qzJ6;pEn-PD}Q54x%_Dr zp3hCa&oSfGLpz~ia!oZBP(HjsxiH`T@n5d?pZP3?B3WX*CO_l0Iq*Pi`PTvWcgX)X^8Y` zb#PFB{x~1PP~UOE3I=Yd^ivNX(CcSu-l#}w_qXrdwVkcqz06&$052~uZaXJ?H%oJ{ z6}PjiP1>FW4FDLoE54D@@t)nyz)aWeri5={JqHzt7c^reewV|*fBOpKF>3-hxlv{F zE6r)v$IWjwcVJGMm3N+&u-mMq1%a4jYh>$mfb&ef-%U_p(Ah$xfY;vq#ZbDao70ow zW4vOWUlSAf8REpVi)C}>a>E|Gv#gU)^|LK)rH$as{jmaH&+XSfj7+x`8G0wB}ywah?p|bNrZeWwTtR7 zV8a@0wx0p=NwH7>D^)yiDIZT&B z*Ynj~-6uZKN#8qI=ZKKcEcJFbNKM03?LM&MRimKo5;hhwx8j!B zceWpA&tT*T4$KCng4s5}>+;tC zEuCIUV7#aFmiAc8{E%=b58C-R%X^Oe7q(f*Mkk)peOkrSvfF?Cma8|#CK2O4oP|rn zhb@O1%;K>RN=k4A;1RJIvp_<`?(IeQCH2^CkI*sGzKGDsX++~_Ek0&~K zb{~90SmAVaE;dGNJc&7ZhYono-mxW##};8s3dFar9bJt|y`bv4xaAC_4Tj0^uDP}% zM}6(f&o4#HX1&}>0eSW?ceX8BCt*5!+%H=M<&6K1qzx!%g-8OiZq9X$_w4736|fOo zOLhQ%(Snti!?XR5YR#A>gbJ#*b0V#+(zDt5HKGk_=}3J1T)3;r&2ut%B^y}Ec>l>J z!QthupriBdQgGeAh4eR;k>%WgkR!pNiu~9WDY3A*bt1PVFcK-%SN-FzC9VEm^?G6) zX#gtMB3FPM_xp0Rk=#Szb*C$mxJ+p2c_2C#S#%Qkrac!jjSd5> zx3b3dC6NKiVYLHg_1ZY)cNQ`-L- zOol&W9Ek;gpSA>HGXsqgpS+1or{nKP<+Syr*kN`{WS7BLJZbtSN5;o_SO{>3>%=kX zkT4S(On&V#B3`KbRWui_I(pB}M2Mq01}Oc^M`NdcN_WZu?ItQ4CRoS?;xE}L5_Kg0 z*M#>Ep9?TVmfD&KOdLH~QJAumpC7R-pY7r|(Zd;tX3=b3Ve>^cTyqNX0* zPgo*tw(4ZSmziVxId^Jv45{GbKvlZ{=5W)yzZNEP6!C~3YZpAXq+#(2XdY^C79t+0>52Vl%-zbbT$N-e<`iKIXrNdi3 z`In!Tgc-(w7cu_Wb=izcYu{xE&DnK6JY2x=(wb5MvF zQl^5r+#+^thl}vraD#d?r|Z7=Hx7HWZazb_LKs8Pj8Vh7xC$5Sxt97bwLj9FdPXbI z$81@_KGLJPE>DXaH2=!GWjX}HVRX~h>^X=yL9)n|**| z9mA}fUZWY8>}Jd?88i*}5?lh^H9dojVB^sBr5bdHY< z8M*%%hoJZGxRkMxD4+UrJS;T{98}iw2g(%v--M2q=$SYAjcEiwoiFsiH;7(xEl;9f zR>`k)qn`b{Oc-@(40+A%_BvmX`Wxe0n-BxT{FV0|K^NedB~fq>hKw37!kUkVVd{h{sG@?XMcK3P%RFLK>K|MRXurbj!Uc8 zA#I*Pb7u$S;{dX9aJ?(U{!LSQ-=?}%*`l9#KG?o!gn{5a=bnFUaWvHuN|Cnnoky=7^M29 zlJyXSeN**3*|Ln$q=g5%7eTey~kY6TKGtEciW5?{>=4h>)UcrQ7s2*q_Y4$t+YLsV?Tf?@!0(2gfe44Wm(voM!uiP|^f1#%3?8uVv->c80OAj;tZ9FY? zYf%d%`MOLP#^S&JY1R}a4N8n%>G%39gzRNcC6%rWfVtI|eQBaFIYLK)|7CV%oLpCs zRH(j0r^+(?edg`tM;23cSV>|cUZV9-BVF!}CNbQ~UzFd+L?w_6_>*m}7k$SHc?#I} zbHzFjmREwG+hmxdWTNFKX{HV@r6*mRo?|cb!=L(FR4H&zRG7gN^YJe%iB;XuC%MfPAJJbsMZevh$#T{Sp0(qU$~F&DRV)9(}BQT5=? z-u)-tyJ2u-y0g1T>TQgSRPY3Euv{|U0S?M$Hp)Xbc}iaPN(J<-k4a9VvIf z)qb$yC;6GVx4$26QjWD)-%+uhJbp=vvPJ)UW5q`GxI(=f!ACOA_2*+2TKZa*H{f#a z2V<}kbP*Qv*s;VCS>R~Zz*VRr3U7U|9;ev(4hcV&aNd(;OfxP`u)Xv${xV5*Io5`5 zoK+jY-ZD|FjqcDH=w7O(lVsNuI+T<* z6Ori}(u4&vdi6f>Pde%wo#(LPd7+=|76jRnCX+zCO>JHqabM@lx3mbOtt%-_)U@A- zxyPKps>m1~dxp%fRyaK>j?<%njN@NC4MkrZr+7tdS#jm;6L7Vf-}Vz~gECD$1H$Td zg(wJs$h&|pj{BFdfDG&_ztDs_LdNs&-($DHU90?UPXjvcnRorP%nT^S>fs+u0J<~X z@9;TUs0obpHZbqzH}}HZE23fGcF)pe zoUn>+Po%82?=DtQV~OiwP|dJ7ai06iL*E~2F+$s*UFY?<8K%?nM}qAN;=~2?-3WgQ z7`c_lTGE-iYZu4tOwB$Uhvm?Ci!Xf-%eo_!etU60-&O6Y?(*o4eR>^?53l0+t6Q{$ z8B;oY9I?j@iBy_m|BgOo)!R=Iyo!{I@OUzN&HxyvZ`;x$aw9*bpD~MJLD(ver88L8 zZ)MgAWsz7Oh%4^Z>us;}yj9HcX1gHC`tC4AVrK&b zk_I2cY=0l;57)YFR$WW5kPLgbW|5h(+6rVdRqlR z_Ho4IXYS5ULQ}GYx9WJl0vF!!Mu{G~&XbHh)QtTIb6-=U9(gFXB!nrV5e~X=AIRe` z-HRIWv^kWDX&mDte(`=}5EJZI(`U!q;>TNp9e=Kj0STf6JLz`yw6@?QxUriYfEyQh zB^-M_&+%AvDa8fwZ+;$=G2HQVo_2W);)aaZicDzki4D1> zw|YIyzH04+$NQ=)%`?Zx*K}TV!2OS+N39<;(&ucOpZCZXh~_BV6DjkqHu4?v+2-j|KBOJUh3|DwC-y;_kw^ z8Nxw&#~nRr3ohjBdy}FBz(w-Hj?&_v&)t84pghj^)8w3?NrO3#Mcw#dsbRlM2^)-jX}K-wX?oWG zUaCX^t(4dz7Q$5@6ABNY7lDOP3Kd1w%z7|82fe}~ULGzA3_hJ=6Eoxn-LRK-C&JfW z&PcnZENIgs(yh@7I6YLz5zR+geGp;P;NW7%5vuNwehhDq0xwV$h4bnC=|<^4HhH3vGMouHkvTRbx_3@z&I&EGp~?lDsw`)_Il z{Uk-4@3StP#E&wD?3WMEg{uNa*mf>kwM$(uqWY=3o@jY}+e*)BG`T*&@ngp>IGp}i zqb=vKIyBHdPciH=C)uUBv>2boWEEFmawpFG3QAbe7UjE4qmiO-(KS4^%PfD8oI$rs zxE>UIx|=T4*Az5DAx`>OE=v;CeaH#baAGdW+PvlL(;AS1AR;43oQrj}RU3rVBhqZL zpTvMrvvr45@J+_&LQex6l@6Bqjp)^ym#-?v5s_4D!O_!m5-Sp9d2&;mG$bAwY4i@5 z_R}WU=K0^AW9ieZeCZ75$-eoOEbUofZit3w>xL9X+>nG}e$uzi67-&*OT^dr0l$lI zH-o*2KGNV;mr-#ajOd&t)e$QHvOPU!n5TtWp1{A4TcA~Zgaxy~he(%2 zmE!>ymIMbfvkVU==Q(iqRj8>Cv>&)po&CQkFF?u+RQ?U^V7Hvd3}vS!e7r}y;RhWI z&TewxFLqKb5`Xmji7JNyByy`CebNYAbU*xpFrr2@IiPeJ|TY>!R%CGfMND_(;P99`rYf-zBe{~a} z<>Ba_09@cppiQYi{`F8^8oIO6)!SG8;X+N{mKPxMOELEU39@+dx=j<1FrhW+2F!W@ zX~q9lm<>jW3z062Dz|{_Gu_n%(2ExxVM_6vq{ zZxVjZmTBlgN-QQ8*ZXVf&+@p%cX;=qceeqKX@bw^)(5sGxgOIMyCiVT)}c&TGzkwN znsPc@E(&T#FJ3r7czr%rusBte#V{6xT0Ty_+c=Fkx%L+3wsoot^(%FrSGmk;&5cE>UnD)l0r~u}E~RTWj8q>5d>r;2rFM{0Emq zLrve$ZCR@%VDH7Q#t`FkU7ww7DT+^~6{WAxzpE>yBpI93Kg@l5`t~Q_wJ09DN1In( z`_X41>#ubgX^9lcUMdk3cT&3j@wf)-AusJ#oJ-{P z36cu-7-{@_>|^Zc9<*Wvzz21%A?P=>c5lWD@xX9}Hq|H^b2x`q!|$nVEmp=^Yg)Or zD}EJ8NYERef9!S`1TEk(#cM)@22E7o>Fh@9WHbYP6PC5uMj$%J{2~pmPt!YLX zCiuQ2#tynt!cjf_OqCTvTpzV2s!!9249GXc;*ljU=2AwZ`DeXfjE5VHR2QAE-dyHj zA0`xQ2WZ>k(tj#?3X9{SMQmJto;k@`jXrMrTTY*N_jkV0H^9vxZm#}(uGRf;B`}nJ z4lxquxUQUdaz~h)*(nY;u780=d{)04@V?GO+#wl-Q!@P__pP?E`UNV~_trG(yx-0@ z+9ih8-O-0P$GZ1D)V4<2jTVby?mu5iz9;J0EO@RBeGy7<$jCg!^j0~^{975rfBDMZjsVFAwp8&vzzHP zg8RC@2$prf`SlNN)!^>pLbK1B!v45H^$M2AtbFEu z#AJ`J0KIY{?SizE@q7AFJ=Z1aV%2-EKh%q5d2&8vbG646+xFvy-2~vg=4dG~&Rg>) zIZtZF;q)!D7#~UBi}xubb!GLRGb_YnL^|eFr(XUX5-;BUkWtCA7mU5t_{M-;L)6=; z)!m)u{ncB)Y)2PK@chg|)8**}WUp5TOGvI)n(G~jR$gDiZQZ^>k(zBXn>A@j4ko*I1$}@ zkDR7|bbrH4#hjye*LYt9$|mj;PC%H8LsW8UCH36a4reyQ8orA18SGupc>93Dc8lph z|NAB?Fol1@?Axd$&_c?|3b>5)0FWQod2XWxdS#sJ?@w&hDbrfXtsmId}bw#&HB^ zMH$?Bp74R7ZiA^qH$t#bVMm(NPRQjEVPa^iGVjN`awXj!dCLs()?mPjk{kl84R`T|Ce*5HB;T3do6Nb$+i zF-~JF+_7Q|IXkKTQJIuiI$0+x^Hp{CJ4!`yTG6PK99e~pV!222>dH(JGcqWBSq!tV zj@C`C__#*(Bsb2Lrj{~2n|Yn_ndu10>`vw3>g`n-qre~9xhg9PNS+Gr?H-1qh=F-; zpT-$Ds>T(DC8Cp+?X9=ex`=+l-|nKmJ3q7i!gPL``#jVGgGbDJwZr(uHkn{O>HyT* zM`fbjd$)rI;`#cz8x0&uvmQo8g4YzvD82l3B!Iuk=hy*6XQ%}4PDlP&Z0W31MzYc( zeiH#51&!65;vwql>B;L2E&nD@#q%2O{#<>ECYFPZX?-p(vIT^ZI3?fWL81tNCd#i*J4x@>&=cT?>p2nd&*OK7ne4CM!&Oo-$rh+e1Ha!N3w#;`dk&ik$ zcFHHh4pc8f!Y6RG31sG&l85htR|ypDlnbZ4tRYRJZ~Cv^P{HTxcRK|jp}*kbZd(=`$uHwe9649ZP~53-a=&- zUF==QvGWG2VTDC^*oGG^V$--$F1KoauY-B4&z$soo?B8klXyqJMr-nyLU!Zx?-(M5 zMr&aW=uw72k)sog+x+~rh}F`cj=w{C$Z`L?CX1jHTj9mvT8HAYwV#ah*j z>BophnsCCFfO#EW0XerDQ&ey5weIA+pJiY)5Wt<#$|%fv%3)sA1zqj__Vi#-`fHvL$|13}DxN=}S6C zy6mdKj9f}1Ub?>J=yQb3Ev|7RndfStuT-!BkxB;iJc79Wfz|*PH5r8A%&sN6#H>4- z9P-dKE(5fh0_&mxI>?G$1{^WOxX7gzFL;8lp}hb%C1CdPG6Zfw#osB}65Z zvTA3i<10h|Da_bM5E4XX)dYX}(%L8ukq|Xx^6ND%y=-#LlbN%yI*J-XpAqwymn0^` z?%t&0EVf491%5v)w}OyczQ=%=Fo(~-(cN@VY%H2% zhGBuLci-LvgI+%U%_>}Enn#Hf=Xk9%^i)dH#YUyu8qYn%-EsTvtU$lSSNz8c33 z>*rkJl}z=bGli~G_?S4Eryzy7m7H31{fJ>8O~iZM0X25YJ0jHP-@6>$KMk@|wgV-N z*dk<+O`db$F%aeN{wZ6y{1&9Xui!d}zJUpm9gCpS!%ktF3eWvgEiN~Fs%OzkuSXzG zZ@!EZuvJRDHpdKD+{I=qF~Lz4Cwe2;iNIt+swF;9}}w zp$#d)>ze9`)Yd*mCytym$7Ev{6@$bj(YeHvvJB{wZlo|Pip{;^VS7Tr_H}gW1?lIq zlN{2x^rd*abEC|KO+=ULfM$op{^uljQ`Z!=RZNkmIk@9NYKaS=4!N1Fcgqaz$^u$Q zcx@!XcK7-X7m&ya$+A*)EJcXm$yv9G(7?=7CEr14vb)Z*wy3{7egQZ>&7h70fsORT zqFGL?&~pE*3&9RKEj5@cC~s6g*U4-~wrhO|6khhCEjP+{lsRWCZ>*U&LHw?Ij#~Xh z(Hh+Q8ebsnB^qQHiIa)r`it1`A^pTaa^rFmee4vk88*DQn$8VYzRoSs?CIhA8L7iN z1Hub?6YNX#9bq;XPk7J=4O`Ta9k5w-7SE-o>;40#v&x$*Q&80pXMHVF_%(ied6)=R z&`7~{!%nYkK(b7z7AiBOH=?sFLI(`*FD-5Twl<=E zM0!Sk{z}k3W*#xYoB2rp0mTHD?f{3X*kve->?l6=6j5Q4_!n(pz)T& zktmE5ZxDA3C|NKs)|1+vo~Op3)IhijUF5xBxF!WBo%Q0BX(Gy};63I6ObRELc{%FX zJ!QQb9n9HWg_PjCg2&^?-QcX559~lbFavjDQ4Ry?FB6N+n*e2(_m#zL|5gkqDKNlq zOyU?$J#F7}1_++xJUxGz6_&vN0^4{SRw-S|%?}Hgw0b-YR{=W~6g3zZ;x1nT@h+`r zg1WiD9l5$oj=!DKOW`~E=6Y>eefr{$^Kc^Qb~`uT(S@f(T})VBrw&OMlj^qIG4H7#3_aF3kLox z4S5{4t=vgvDZ{5i$(f^?VUNq6+wOur0jEOzkA}-KCQ5=Z7F@9Vf?upfjv2E*akl&$ zf0wU%QScAfeB!_?P>+t=d+BY5`;8p2*=6h?YHR+%Y<5&ru+WgYfNKyty(WX26sC-7$s0LS9BU!~|7)?PqBdt_Ed8#0RWG&4kg-=Q(qy07L zCysP(S-jVIlI9+K6lfFV%5%SG0cCs^4;(<85<2tOod;D&-^_oQaG0RhxFe*)3MLxxLBZju6Ycb1@n_+ECdyO|oye=9oW|1Ldxj zboeY%$Dh7up=Xk*u$q7CekadM_$BtDT-5Cb*&iS3u~JTyBC#>7IXRhD{G?0#)!b_O zngXK-FmFt{s-^gQELn)}c%s~q`^goik@ z+2%id$vridxI>9l=Yu|F7HwnY81m#lbtBpi_m~?^L^dX#b^Ytk+;qF;LF7H}H7ufa zo?8ns29oH@=6`lNYofhiJ!Y6@JkLa(2m-^)QJ-FMQjzAd2YzPZNLJD%d5nuXx_szq z>?lO}03aS(K~Y9{P@>xllBPf_g@x*;(Z(M6!XK7NoJXKCtwYnkavWJx!YEeqATJnlE>T%D zmG4DX(ci!=>bu45Yp$vAV#%zSSF5{h%c#&V;iJB55NLNY+~-$$+*v=p;ya4q(Bqm4|eBRl35}{Vj!G_vG8fOTB@7Vv`?wwv3Fv? ztj8{;($c|1`B#RZh1D$I`o(MO!aYCb2b~5$Vp_b-z81#`XQr1W&7{LO*0z$$I9}?M zc$6X3lQ$~;{`DwF6Z|b(Sl<1Cc5sPYpb^8$rrnOX{w7`*T)U8q?@X*L?J-(lzGctg z&CUvv+B_iZ7_uDsd1!DJyG3mzt-g7vp4`f*<2h>4{V-F`V_)-l2S#b5T0Y}}@y zjwi3*+O)XoT?mh1*Ph6)xiMs{ZV%KCae{%Rn}I3QL9wVCOS-YvP&5fVSbuy8qComG z1*JvP-y5({E_#Y9qT|v~8&sP&a$hr~g8RQpm@Lf$4TN*}&b|sD1`uLoz)JsNk;24B zP%Xq4>-=dWor`f|)MkL(ZT82Uy>#y#`HfvLTqBhuh;tlV&i}_mlDlSjN8b8+&RU9h zoVM;m@|2T~c*S}AVykRihVzVl|Bb}0+BVWdqAG97+MD)1IZrS8h(fZhhY*LRJH;}p z+1eO~1|0t}=#5_x1KGNqn9T$sk#0uJ)=n+M;m;Ovfl-v9Mx za?zsOFRwi~@(TH-$y2;Ft&N^#SOK1XePQf;(wNs$4)-_}qhIKy^_f&?V;C(T9@9^{ zx;{&v7`K=REN|0iomN zZuwM1JmAU+%^#Fv?N2;WYg&C;0gml3_bHhuUctab`1gF5WzMub$6csiE77V~dPWb! zir?|~n4LOIY^|EWrF7^1M)4w*m6(%t6Qe%P6capG{xCp%HYXzn1iyO))q^{}+{7 z>#=9nq$1iD_W{|snHbu6X5`vSZ`#fAx1%nB!{m?n^{?i~2uyMW1P4Khk@o=|I{Bpb zCX|N;cAYsU%vtuX*TS^;sGw>srOw5W2^Nv?Y$KsUZ_%gJl>M|%OZ}DV-WMVa1m~0R zQSYaa{x-*#+jE@CrV}iN&1gS8r6S{ZiH1Ngi4OX7xhSuq+`LR;HtYuT7>*Ho*nY@B zcPAxu|7AD)mLKa%auTL9eO4@qpROjHjOHjagFm3%48f(&`V#w3v=wPR9p(Y}Psd#r z#;;#BJ)T0m{)zJbI~B1$g8l?}^q>v;6`IO6cM3p7Aei2UVNOvM?It;H&%>0mJi z>%b!>XhpZ!6Wry-X`CNczj8!~i!M@1Sr{Grb(;(qA+tOF+kh6+TgDWd2%M%_YOiA( z^Zww`7r889u^l-YUYl3X2*uXRwR6$tA*6*XDD2JgVYaI(mlvYGzx{G^5+=U!%@P_s zM|s7fi(_pSnXPJ2C!2}UKpkxH*rV%G{({H8njYSdW}(Tga%R)!=V=@7e-&4BZT&Ga zj0HsZYqTar*k|{H^H{2)x!q>NK!AnQyEzK3R_8U7`T&#td~x+7aaKqR=eW>$-;i8) zDtSvc4>wT(S5QEsGY!0Fy!^#Rx>aK`+pDyd8{nA%V|?th@2P$m8-YIlDyltxw!JTu zA7LHTvCLV!B&Rj_=1OyY-6BsOA6@QM-iE=`c?B@KnY8UmV0nsY{@qs8%ZUZ8owuZi zDf$isU-Wym3NlW=1H!MR1}O7(sFf>D2LJFDV1u9*>*%+!&o-(DPd?ob=#|ppfRpD& zpC5?#V_1s-a%dt0L;Slv;chopwnbS1UxMhWTTJsPa;mbAog0>n>ON-hq|4e8L2WBX zJoC1NTj=zb$^*_+Us_-gYAl^0{1&T}r~G!C3wF09v}{yO$x!UaA^T35r%^yTw4+Mv z84Ujs4C$Q4NYhd?+?8ai|Yi2c5X zlQs*UVhKO4g{y>*+7`2z7qdI+wXu2QKG%MfS;B zcYAuITYKu8j4I-s9;E5Sh=^4zHu!cR^K9m&S^OWrrceAJlC@0pbufitvad1gu(#(0 z08eKhnEH7fW?9Heh&b>hR%MxRUUBr@DAAZr#a<-*+rHmJ@28{#@!Fh}j<9Kv=DFLH z{{%?;+;!&&rkAM1S;T%Emrq zNSzp6j1_sYeu)9{hlQ=awsRYTa&zvc+t;Hs-f%YmanGc4rbiazm~)#`Ur$&KF0^=6Tjh zPhlVhae5|#s2#W`fn&v#%hEij+!s%&cTZkRUVeEY7C^oBjLtE5)NdqR^r>neRY0da zF!`CxS$cH;oriRepZ6SFPh{pC5NeqtL6nZK&H8B0Jdgdr-^O4m_PO3WfV(>)2?sZ? zn+eiC%1+n3Q^m(jth($jCCCBeF}v28IIaQ(Uec?Fj=jGlrZrzY{m2BXEVEwt^Q2#f z1ja|qRgZpCXK7Tx@wao}SQPVu`h_!rz@TN+y@9^d5f|-m6`1H=_AKG+YlI;RIukjw z?WRT|JD2Q{i@5+#56Y)?WZ-S*wMacc)YJ6?yYOFjqpJ}wbu$p%Xm7AlsZUQ!is0SC zrbj1XaM=j^353o}s=+sB@>z0|X1I|h*Ter9`7VfNS4!*8eX2S?>>c4Ah+8G}U1&e9 ztH1q`l+^XoqFVe_F~&hoL}-Y?TV@0IBN`ZAD4sJ?L8CXEj27Cx?wK6-Mdk8OB_|Ec zGCUAP$AFi1REpRsVJ3jEMz;<+Cl)t^r`6VR`YdgKCbmG0Yu25x;GDtzO*CjP)i7*x zX{^|b3C7cOxy)OlklZ%XD2!S?eL3CHDMX~(Kcvy3>;s>g+nDAv5%zc*Py5Xn8a`nL z42wB@Nd|~4+{_EAU#3|L!zO~qV1NfQ=C;bP>Su+gCMz?mO^nUO_|$37KG#Vg`9c?K z)W=^r2MlZ}S4(i>9->Jk7C88jB9du-yr9tHqVOHQ%X@v?zMVClq5)a*p0X!BmRT+2 zoIl@5;9?}zsVtAG196Y9V2Zp>rNKw9YXqeHx@*nnmZy<;?KD-NJs7`RLM)5lNet`f zZ8)NX0uQ-j9&mkoYAWALciG5Buu3@~Ve4dow_UsLLIPp4C6X8glD3!3r9xSfYcMWk zzznJ6IN+qBM!^KjGS8lx#eCm472cc$_+m-FV^3cw-!ukB-VNfRPo;~?<+yIWtLSaH zAyR(&)<`*19~3xIusr!#WUSy3Y}wZ8pOnv;C@!W*dhL4);W>4K-yF&_U*y&2u~V!a z^SD|19U-zNzBW?Z9<)MUXmn~muFdu>bpzrno5iA74HEJfq?{r_9&gH^SKJTBe%JhJ zs#G3L>6y%;SWjLl^8?YfjX54MomuLHw)`oI-=VL$euM z?sXb7Byb>|4b(XPQbk9ZXWw|kJ^5a;>J|~tHqMvCjefZ1`Js9qO{Al`ZUW~J;AV`~ve!Mk!wwGl8H%}3@?}#x9n%sEQ$mZGz>w)aWD0C>E{ z-z(itF}=F(%{5haKUE^fA2y(92z}vQb)s2@1|%kfSKPtwu|$nEtb+sA4 z2k3Za^LE4PTFK~c@P8XCZPX^=c2uf*$_;EXUh=NMp^bdi%@V8HmKbK-Qeeh z)jysXG9}&KN*?^-;@6Luup8kV*m_X}$V13VI}=%y2jDdOdn3PMJr^v$b=64&MD%=t z)^8x_pO1WAnJhP0%ZtRxm^+xX1o};n@sOz!CX)6<|MHw&>92mHF1tCEc`NTbNVK(< zApL$xd|vR< zHQg+C{rwbwGMaPyyIoh%`%ZN9m{6XcMhj16_A(}Oj3$5h5vNb(2Lg~&?z*}MJC6#W1mKBb(=v;+22zE$Lzi>^CT)`M z2lo{`lB7VR%#}HLFK>Q6H{ZBqdT1_OKH*gLs6Q53U1Q7u#*p8wVY*H?2}O)4#4)58Nleeg!5k z#m2s|k_V3aHa8n4-_2EyP)anz%$lRcI*SRS!Ct(&5zRn@v)mZ6 zaJdt*#o%r`QfK=jot;w-ckk6xI>eE7-k_luk+LiXZ{+u=d{K(moQ^3($K@tc+0l?E zVSGdg*dd;peb~E@cUv;2pF``P*E=Gm_%iU(3X&zx;0gzrLI(QYDQPv~0z-I?!i;LM zG$KbAzoF%Mb_6D?aPz#_6c-lZhA3zbu?Vr5Xi0~WrpKCF_E z@XP44vOus&#s2rao1qj3OOcu0V_1(_>W0;9pZ%U5>hz>K@Z$tA(|3HHzus+6=%0%y z^2fXo$F9V11;MP~&lY_x?{`WKVHh>0Zu*KH+gV` zc?kaJ5`zL1t!;p5ihGJuK_8hI3bs6CMO`wKderhkIgT5Jjj|(7s8Qzt|DQHJ_{$K3 z)b6>M2H91gL_PgGP(k=ENamK=m!(+e5@9thotIqq<<~3p^t%^37yN^5`MQ@Ri*X9W z-}|-)^R)^Dq3qvH*>xw*G|1f{&a5p;v-Y2$Hd3F@i}PFZvlMqvt+k4^C>E6!7`F7a z^c~3(hCbPJK(V&`KnIPN7>gHK@>iJ?GR{vEI9S_F;@#;xuU}{xIZ`H|Nzknj<3h~R zi4iS7mTzAcCoI0<&{gVa7PQ0fyf)D?`7g~2m_8~^+{!^~{PL}6apmHx|I%=5iH4jD z37As_2G+WuWWBh_Mk?8HQ&R>2<4evsn*_vmpU&F3&nY;Vjl8?=?S zAA3wDZ+>OTFH0t!FxuBGKI72s>+s`C8wh%GI`xopHPl--q>etP%!>it%Wf>gBFZau z@hPf;pPR#K|1?L{MJRz7q@fY9nZIGTLR*?zB@!6>P5Dz)i^=EZ6~bXk2~|K_`togb z`Jvu(ST*s%6SR4pGBGCN)B)`8t(M+JoyW$`L7Y*JLRFGcuIguK{UUz~3HK zq`{aj-MBw7TK+%PoQH;vF;_p{SDDP=9OD>B>9CDzUQI&jNm#Qle8#xIc;N8TYXvb`MHJISaq_ z!9-yE8_M_cnYc~yMJ2gJTdY-V_FnX>stZ>FWr{$SxPZW!Kr}DhF;Qqa?Lljbj*K&q zz_Gq;5_>|?>DTzbWZsld0-gh{@14_o6Akq= zkE~h#Eq66(crVFJ*=`b96L~`1NeePOss6;Fdj}CltNp+W-G4&<*AvwWWa!}G9QgM{ z0-<0;K(*^m>ZoT3oau|{qdT8S8@fy`V$Z!r$^F6?ZEL`k_1FYcH=7nR0X6i++ z*k4=04{4!BKRn|CnYNGtx_AdVl%JaT?8LuZv;PS6P$=jNI^b6GO^{!b|M(zZG2vcE zK6Sn{^&;_)kN>)Li;q}g`uxx-JHIz}B{I}ec!WK+v|6Ft5%Bo^-yWwOM;`sp%65wZ zbu6e+Y#m=i5Nk$0rEWoA{ee^aC&SjKR{c+EHD<5ag0GxKq)YhIOSJI_RTwj^mZZG& zRA)sWaSDh(rIQpskcQYV+jRgIlSZgyyA^|?)*H@LX(I^$PpalE8O!# z8JYf$Qw&y*I4Lo zrOD4A-yo%HwtUbQvg3n#ko2ER{+K1{0HNDvRtK{ZOO2mPA$vN*gYjqV;>o)f*tK5x zggqh>9I!3AO%a=jCcnVNPqfV+uu+#ggSQWa>pP|McQ@aOoRK;HHh0bWwAHe;KlMgZ zsz2&E9;Wvmq!}*={DG(QT8OYG7j;S4JBcY^cw_H};3~kh@d?C%7m@klwX!xfvvOh5C>`IJ^-uzUR2>-C?lfUM6z{iHj~vwjPIEFGR7 zO1jyg)-baxIJ?cvja)LHcinJ5hUrxe4iLmjt!C4@H7guvW3ocQ zFnszac~*#SUWiVnq%FAbO8hqOCEoEyd~&u&Tw_yrPCg}nxd-;JA?@kA>X z)(H8DQ6l8GE^aawbL_SVWMzR<6;r{GSr8JRGX`eV?(Wgs70M63UtigRvA@Lxk)^ z_)HpxL4(GOlr@9IB+DpDWJ$6`O!kZ=OZJ!yCi^h9F@xXq{r!8+b*^)s_kGWEJ@@n6 z_kCY*+kYU&fMg4&kPOy7`{j>5JKfu1Z9tklBRBo9;Ke-1V@EK7Pw<}_+D`Fu;|j)FGoCcUw)PrA&w49 zrx;v8xb6ByU~wbvhtTeh?>?jpKm)q{cG)yOZuqqLUs*xIU<9{#0FD@?_=E=~jHj4z zB0(Uqu}wtE_k9iMrJ`Clj(=)opJZC%x6q*E%A)J@S1wE4THsw|Z)UH7+LX(%ZH)?dr}t` zY8rLUX49*#BEKMJE4$0_t|XB<*|M=X#e^2dF?SI6IYL`wPlhrwk1VLh_-K#Okep3k+O=L0^F0aNPz9pjIl z&YgafYDX>bv!ek;r!Kz3OIeqq+gW6$U5O(@+DiKznSG9u^V=utbr6k*{oTwVo=={y z7{nHr5Xs1Z%uo9+Tf3cu{omJz>Hu$CFdcxN(Y>jZ)71`F2hN?ZLxlNdTh~fU~f0bJ8^?^)SE;?hE+7Vxe z#HP_lsk?{HwHK}^;Qk-(`@x=P={hq>Ws4Q?d)ga zhDE+Q0}#Q+8k8jTauNI*rqbYde?g+DnC6;8_b+G0ug{B9Sv8O3lzd~=z~x(TQ1$`r z*6Z(42zbeN>t2e-0MzBMs(@a=huz6v%5D`ul`cs5n0cnYJku z9dR@|P{rVLf;7L@F})WD=YDtm3{TYtq5ukiV;;6%v>2{i|AaUuOKz{cGigwuQQIIU z(%FP~6SqEGTi2lzBQOIN@(L6+$4nx!&|>L-_9Hzz1FAN^#&Lkh ziw7?iG@0}TO|Z?D!zHXLw!gh5G7^b5C{&?=j|CEw_S8zSIxmT1`AWeKa#P1hDu{I; z`_4^a-Csy)57;LN2T62XDLWVlR2Xdq#{DA#$JFIV3WTsQF92NezDtyE&08DE1tctaX}yAoGqIOFQIyUz4L zC(Z+pEAlI;5{17~0Q3t`*|{UEZ@LcJ4P#z$fhL`PR0$P__BkMk(_Gz6T%gJ4W*yu^ zf9_f07do%1o$VuofF^v63Qy-F>B4fB1T0@wtK!~tIEcn<59)VBQnFyj*}9lHgW6oc zB=mb$(7WeT|!57`Hm=h%U%p42rv%cYsa`L%E|(KBGd zfR&1m3J@k}M5>NoYXhfjkb35-+I!Ev8a(l_BnMnlb!C19)Bhm$`6<$wd-m#x+7|Xj zR0KegSJ1_0^W2((_G$qPf3P@3%QB1A`|NGx zn&u4Y{bb>w=0a&O`eGgnU`7I8*4sHr7SLUANh~?nlLtltm%1tB-8Ho!OWd14XMIg& z%v}K$C{n6CE|29tNd0cpZvd`hGFlXM+QkH*AZL+d^OQ{O#1 zvZ{ii4Rz2`$9eClWFNTlQhqA}BsK9lT`2qHtG=uS_J2W(5c(*>GeP%s%L&kyXF@jC z+cuJt3WTuw^@oz8#yO3t`J6W*#l{f@uV?43LYSR<&kY9!GogADhc>3m53 z(`4Sx1NYjxX?4Q6koI=h* z=ilL|YXhEmXYfi8nb}7CE?Z$RddfZ%em^3HR#4dybfWrn!`Vh7b$qg2S4GJs*Aj|y zo8OB+N~pX49S@xUD?+EhbG7M@N`dl)a9)*QK}k#ifHxLh148Eo`jEYH?48{+U;LhV z6PBGb*c*_`h7NsivXn4V-R6q|5Lt_d0nPdQdfxZd_Uh$vUL_nkPubtq_2mk|Z1@3m zDutl1*iyneS)W8v=9n>h%~_geR)J0|movk{H~GHM+(QlHGtQov2P^I|Q4fq7j&RV_ z*wAskPpn_3KT>q&4Xvcm10GM>ZHSl9p+$WXTXeI6!yf&JSN9I20;ZuY6HcC?YWR*v zkj3^o6lRMI^85HMR9nl|rl*AOr_9?G$g2L3kmW<8kW#hn_B)3Lx;3%2`9i@i&LfT# zn{;i9h|w;Od5Zg&=-RkeCW~r9vqUw(%mppjW`XOThSPHQ%^NF;o6)lfoY{pg?|jTWezi*nH$|BlpkvB)t&St5Pz?yN);g zEwuUB<(8J7*n?7G`MVzW>A~lUtkh}j;kbeug~^MfxJ|xkvfg^r+PbE={$7q=#YD;u z8n>efi4V~Ni}kgC7U^0MPI**3wZrO2bAa`B@9fIN;2ftp8uF<9FLz9xl~(3)bGHt>D)n%Q+4$3?UZ>VcM6ZAa~DsmVJN_jO(Fz&)X5 zse!BUTQ?~8)E1P>j(v&V49Doo?TZ-HN!L!|YP-vKcbfNqZl}|AwcPNU>GJUah1*|z zL2tmlfQO~`KiRR}=Q6dnS^tR*a@W1A%4EqTUjiDtQ8jwz92zmeA}4I@hP{?a({P#) zeo?$WjX{Q`+PA7#%2h=6a1zW7M*}<+0bvIIySMIVsfk9;kv}lhylwFX_H3!IEvD#= z=$*?&xoi!D?>h2?JAYluW)YdMjh71lwe90UU_InVct=D7&U41 z-^XT#5DD@c_VV`!^viP9TNRq%gQUmG9dm4-5)kzoaaF&`0J0ysTDc5l?}N^CY?M?Q zc=$Eq5-*$~y)3*$QAsWEv*V0BdmjFSfhZ>CpH3$&pR=Q*JO3Mn!g?_8ltFYqhx*oYZ! zGSrvA)RTHi6qJRtj<-AU;?CG(dC)F*OD9i>%8#AeU1nkm1Fs#Rexi@F+VoGE9_BHHYP$(+k?`kRM)U zB-E6^MCj4!gmS|yQl=iUYuZhma!~ZyiFfM+N4-U5O3U?v=oN5p2j_}LAVU~UwL+g1Y(3A~{nMugrOz`4BN=NoL zbTgFi6=wh74WhBBS{m2VA8iodT?|<2xxB|F?a*O@=Ebd_Sn%2Ilr%Zhhq*ES!@kjm ziD5HyMcUdXNW`*=&DKUGI{5uypcwn{{EWqAldWTV1Y^U?`(^4|6kH!7n_}4UK~&`h zqyL8h1K%>|;`ObS0oOd#>{8|PFQ-Ksg|zC<=Y!qBi&HPO1*T~sgiRCG#>m6Ky15cz znAA3}aVF7(-y<^jnz+Es3V&N5{ulYm8o7ZINBgfce^&P`d1PYo@!6GgmSQRcW(bCb z24;3&`92l@1E|$v$p*vLE(nmgsdYI&7R1J)PL4p5Xrji0!&vL}^2zvzibkIc$46q7 z;BwUMoMF_^ZJ<(Ntum{eA-h_e+uZjjf~osgTC32tHShs^TqryArMJwIy!{v{H~hIa z(|En|Gw!-;*0d@$6O28#w$3O<>N8g7u;!cZ%SD*>^)N-@O)%Q4-@f^9EY=!*6t_RFLa3QDt&cwSk;gUrP-1v{a8915I^!A0 zrJ%G1q&&cth>-Anr$dD5b*1VQqMD)65`$W3gj`iNxo$U_`&4?#7oNA0IVIO<%re{C zMS^^ARd<9!_xrI-uU-&=;zM(Yg&)*Q1Cy1MW)7C^$}1@y$zK!vzK-H5Yy@BMKmyNI za;j(jy51{cxSMEpKM5^ijCTIC0@-=@@fE{?el!+Pj^&})#*gft4`3k~CWu);^a|h0! zQxvJjcFGb)zyn(K?^D2~NmSFz&4_W;SYTShz)1-KTEL+U>CEW3 zBtZ3Jw{xTu8`2OqQCI3@m$nomfoyt$p4)7-&fq*>qme!!P~vj1L7U# zW49=IX#HGA+1EMJrI%agWViX$r)KX2@sJe47=tG^4(5;AeZ_+!KS;w?4!DqnjY3C0 zwXWkBXNHTsNA*ZZ z&X^`JRCs~iVocsOpD(|ss-7z5`IiUoaa62a8RPks(U@7qtYW2Y{;5MpKd4=n2;dfL zd=TOK{W20NvVkH|RYs)%_mza9c0|v#0->e4FAbY!KR$t-Lt1oKRcF{%Rpowk05$eD zuH7u8Qd~H8Crw6jC)TWlG_L;}=yR_j)YoXyyaLVdXA1>+sbm+T8F=LsuJSdotFe8? z3bbD@K6P+NK4D>?0J}&DGsS+;TwWRBTO--?4hE1fzZtnY9bcor8}gjknGrbtYk2#` zTb&p~2cwKEK*MjU#&M@l-VK%q@b9S6C$Jfvsl-T1(QC8eF5b!+LaQ$rhr8~>O`>(% zrq}h+HJcK2x)H}nZDZEKwun+$EasJ^CA? zS>jE`oKLM##)?99Prn)K2@*>qXPI(wI7G}VZFiU(6@ssILcS?iU21JJUvtj&(oKj~ zeHe(k+`_i2+R(dmrVQ^Wzx{w9SYFnk%T!ohPbT#qb&FKd%2=Kx&V6f6{b;m)u(ok5 z7{e)tz(&y5j+Nk2c;KH?qB96r4{T0&_dbs~_|z2IM%%p`xR*0&nKnv}tbtu3Vf!Db z&U~A2Py`EfKltNEy>O^3JQpd}!$5h=&(e3~JN7HhOFE`o^M4$BCN!bmJAvtgRUO&* zoQR%&kp%y`J<{nIpqJ3}5Py21@%}l$t2DLI;1?zsv3g$QjZAq3Bz}dLQ zZ=HN;Y2sU9-6ag)Q%< zX*<5mdVXA$QwdvGGP*`+q&>LHojhGyvQRfdKhR6V*Suritkatnme3T*pgFuvgRT~q zYr+cH%+ql|BSxnMRu#OQb^22PKF=ElnHg9`)~hv* zAo@Hzs!yTfbbA}&$?z%4CTwii%^ZwmyJ&^z}bkDHPDNJ^m zdql!!DU?E=`VIcPXRVbU#Zc56BzE6jRrE_|t&_A@p+qskW=>Nm{Q8|Q-uM59vHnNB z`F~kf&=LRcCc9bs^<;~zQwgfeVNdV((I0(%)!_*& Q$8*5+rln!o4UZ@P2TfGRmjD0& diff --git a/Documentation/pictures/text-input-parts-single-annotate-de.svg b/Documentation/pictures/text-input-parts-single-annotate-de.svg index 74a308fe75..4384b5be83 100644 --- a/Documentation/pictures/text-input-parts-single-annotate-de.svg +++ b/Documentation/pictures/text-input-parts-single-annotate-de.svg @@ -157,7 +157,7 @@ sodipodi:role="line" id="tspan5922" x="35" - y="244">Transposition für F-Instrumen + y="244">Transposition für F-Instrument \n" "Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,15 +28,14 @@ msgstr "" "Tato stránka je pro %(package_name)s-%(package_version)s (%(branch_str)s)." #: postprocess_html.py:57 -#, python-format +#, fuzzy, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" "VaÅ¡e návrhy týkající se dokumentace " -"jsou vítány. Potíže a chyby hlaÅ¡te, prosím, na naÅ¡em Seznamu chyb." +"jsou vítány. Potíže a chyby hlaÅ¡te, prosím, na naÅ¡em Seznamu chyb." #: postprocess_html.py:69 #, python-format @@ -47,11 +47,11 @@ msgstr "Jiné jazyky: %s." msgid "About automatic language selection." msgstr "O automatickém výběru řeči." -#: postprocess_html.py:318 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "Stálá větev" -#: postprocess_html.py:320 +#: postprocess_html.py:332 msgid "development-branch" msgstr "Vývojářská větev" @@ -135,36 +135,22 @@ msgid "post-GDP" msgstr "po-GDP" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:69 (variable) -msgid "coloredheads" -msgstr "Hlavičky barev" - -#. Documentation/changes.tely:70 (variable) -msgid "noclef" -msgstr "Neklíč" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" +msgstr "" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "Začátek" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" +#, fuzzy +msgid "New features in 2.16 since 2.14" msgstr "Nové vlastnosti v 2.13 od té doby, co byla vydána verze 2.12" -#. @node in Documentation/essay.tely -#. @appendix in Documentation/essay.tely -#. @node in Documentation/extending.tely -#. @appendix in Documentation/extending.tely -#. @node in Documentation/learning.tely -#. @appendix in Documentation/learning.tely -#. @node in Documentation/notation.tely -#. @appendix in Documentation/notation.tely -#. @node in Documentation/usage.tely -#. @appendix in Documentation/usage.tely -msgid "LilyPond index" -msgstr "Rejstřík k LilyPondu" - #. @top in Documentation/macros.itexi msgid "LilyPond --- \\\\TITLE\\\\" msgstr "LilyPond -- \\\\TITLE\\\\" @@ -185,6 +171,19 @@ msgstr "Podívejte se i na" msgid "Known issues and warnings" msgstr "Známé potíže a varování" +#. @node in Documentation/essay.tely +#. @appendix in Documentation/essay.tely +#. @node in Documentation/extending.tely +#. @appendix in Documentation/extending.tely +#. @node in Documentation/learning.tely +#. @appendix in Documentation/learning.tely +#. @node in Documentation/notation.tely +#. @appendix in Documentation/notation.tely +#. @node in Documentation/usage.tely +#. @appendix in Documentation/usage.tely +msgid "LilyPond index" +msgstr "Rejstřík k LilyPondu" + #. @node in Documentation/essay/engraving.itely #. @chapter in Documentation/essay/engraving.itely msgid "Music engraving" @@ -291,16 +290,18 @@ msgid "Long literature list" msgstr "Dlouhý seznam literatury" #. @subheading in Documentation/essay/literature.itely -msgid "Colorado" -msgstr "Colorado" +msgid "University of Colorado Engraving music bibliography" +msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Computer notation" +#, fuzzy +msgid "Computer notation bibliography" msgstr "Sazba not s pomocí počítače" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" -msgstr "Notová sazba" +#, fuzzy +msgid "Engraving bibliography" +msgstr "Podrobnosti k notové sazbě" #. @node in Documentation/fdl.itexi #. @appendix in Documentation/fdl.itexi @@ -322,28 +323,25 @@ msgid "ADDENDUM: How to use this License for your documents" msgstr "" "Dodatek: Jakým způsobem lze povolení používat pro své vlastní dokumenty" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "traLaLa" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "Nepodstatný krok pro vyrovnání se s odhadem parseru" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/extending/programming-interface.itely:127 (variable) -#. Documentation/learning/fundamental.itely:3103 (variable) -#. Documentation/learning/fundamental.itely:3153 (variable) -#. Documentation/notation/changing-defaults.itely:3677 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "OdstupText" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3712 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "tempoPosunuto" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "Vzor" @@ -504,26 +502,21 @@ msgstr "Zdvojnásobení noty legatovým obloučkem (příklad)" msgid "Adding articulation to notes (example)" msgstr "Přidat artikulaci k notám (příklad)" -#. Documentation/extending/programming-interface.itely:145 (variable) -#. Documentation/notation/changing-defaults.itely:3695 (variable) -msgid "custosNote" -msgstr "StrážceNota" - -#. Documentation/extending/programming-interface.itely:192 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "RučníTrámec" -#. Documentation/extending/programming-interface.itely:212 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "AltZapnuto" -#. Documentation/extending/programming-interface.itely:217 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "AltVypnuto" -#. Documentation/extending/programming-interface.itely:230 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "s Alt" @@ -532,6 +525,37 @@ msgstr "s Alt" msgid "Interfaces for programmers" msgstr "Rozhraní pro programátory" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Lilypond code blocks" +msgstr "Složené proměnné v LilyPondu" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "Funkce v Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Scheme function definitions" +msgstr "Funkce v Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Scheme function usage" +msgstr "Funkce v Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Void scheme functions" +msgstr "Funkce v Scheme" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -539,8 +563,15 @@ msgstr "Hudební funkce" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" -msgstr "Skladba hudební funkce" +#, fuzzy +msgid "Music function definitions" +msgstr "Hudební funkce" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Music function usage" +msgstr "Hudební funkce" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely @@ -559,13 +590,20 @@ msgstr "Matematika ve funkcích" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" -msgstr "Prázdné funkce" +msgid "Functions without arguments" +msgstr "Funkce bez argumentů" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Functions without arguments" -msgstr "Funkce bez argumentů" +#, fuzzy +msgid "Void music functions" +msgstr "Použít hudební funkce" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Event functions" +msgstr "Funkce v Scheme" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -647,35 +685,35 @@ msgstr "Složité úpravy" msgid "LilyPond Scheme interfaces" msgstr "Rozhraní Scheme pro LilyPond" -#. Documentation/learning/tutorial.itely:209 (comment) +#. Documentation/learning/tutorial.itely:210 (comment) msgid "set the starting point to middle C" msgstr "počáteční bod nastavit na jednočárkované C (C1)" -#. Documentation/learning/tutorial.itely:240 (comment) +#. Documentation/learning/tutorial.itely:241 (comment) msgid "one octave above middle C" msgstr "jednu oktávu nad na jednočárkovaným C (C1)" -#. Documentation/learning/tutorial.itely:256 (comment) +#. Documentation/learning/tutorial.itely:257 (comment) msgid "c is 1 staff space up, so is the c above" msgstr "c je 1 řádek nahoru, čili c nad b" -#. Documentation/learning/tutorial.itely:257 (comment) +#. Documentation/learning/tutorial.itely:258 (comment) msgid "d is 2 up or 5 down, so is the d above" msgstr "d je 2 řádky nahoru, nebo 5 dolů, čili d nad b" -#. Documentation/learning/tutorial.itely:258 (comment) +#. Documentation/learning/tutorial.itely:259 (comment) msgid "e is 3 up or 4 down, so is the e above" msgstr "e % e je 3 nahoru, nebo 4 dolů, čili e nad b" -#. Documentation/learning/tutorial.itely:259 (comment) +#. Documentation/learning/tutorial.itely:260 (comment) msgid "a is 6 up or 1 down, so is the a below" msgstr "a % a je 6 nahoru, nebo 1 dolů, čili a pod b" -#. Documentation/learning/tutorial.itely:260 (comment) +#. Documentation/learning/tutorial.itely:261 (comment) msgid "g is 5 up or 2 down, so is the g below" msgstr "g je 5 nahoru, nebo 2 dolů, čili g pod b" -#. Documentation/learning/tutorial.itely:261 (comment) +#. Documentation/learning/tutorial.itely:262 (comment) msgid "f is 4 up or 3 down, so is the f below" msgstr "f je 4 nahoru, nebo 3 dolů, čili f pod b" @@ -700,11 +738,15 @@ msgstr "Pohled na výsledky" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "MacOS X" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "Windows" @@ -731,30 +773,38 @@ msgstr "Výšky tónů" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" msgstr "Výška tónu" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" msgstr "Intervaly" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "Stupnice" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "Jednočárkované C" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "Oktáva" @@ -762,6 +812,8 @@ msgstr "Oktáva" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "Předznamenání" @@ -773,36 +825,42 @@ msgstr "Délky tónů (rytmy)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" msgstr "Trámec" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "Délka tónu" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "Celá nota" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "Půlová nota" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "ČtvrÅ¥ová nota" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "dotted note" msgstr "Prodloužená nota" @@ -823,9 +881,29 @@ msgstr "Taktové označení" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" msgstr "Taktové označení" +#. @subheading in Documentation/learning/tutorial.itely +#, fuzzy +msgid "Tempo marks" +msgstr "Textartige Zeichen" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "tempo indication" +msgstr "Označení tempa" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "metronome" +msgstr "Údaj metronomu" + #. @subheading in Documentation/learning/tutorial.itely msgid "Clef" msgstr "Notový klíč" @@ -833,6 +911,7 @@ msgstr "Notový klíč" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" msgstr "Notový klíč" @@ -845,6 +924,24 @@ msgstr "VÅ¡e dohromady" msgid "Working on input files" msgstr "Pracovat na vstupních datech" +#. @node in Documentation/learning/tutorial.itely +#. @section in Documentation/learning/tutorial.itely +#, fuzzy +msgid "Dealing with errors" +msgstr "Optimierungen mit Scheme" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +#, fuzzy +msgid "General troubleshooting tips" +msgstr "Hledání chyb" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +#, fuzzy +msgid "Some common errors" +msgstr "Běžné chyby" + #. @node in Documentation/learning/tutorial.itely #. @section in Documentation/learning/tutorial.itely msgid "How to read the manuals" @@ -865,28 +962,34 @@ msgstr "Klepatelné příklady" msgid "Overview of manuals" msgstr "Přehled příruček" -#. Documentation/learning/common-notation.itely:1185 (variable) -#. Documentation/learning/fundamental.itely:3084 (variable) -#. Documentation/learning/fundamental.itely:3105 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "Housle" -#. Documentation/learning/common-notation.itely:1190 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:80 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "Violoncello" -#. Documentation/learning/common-notation.itely:1215 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "TriolaA" -#. Documentation/learning/common-notation.itely:1216 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "TaktA" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "foo" @@ -900,6 +1003,12 @@ msgstr "Běžný notový zápis" msgid "Single staff notation" msgstr "Jednoduchá notová osnova" +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +#, fuzzy +msgid "Bar checks" +msgstr "Taktüberprüfung" + #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely msgid "Accidentals and key signatures" @@ -912,24 +1021,28 @@ msgstr "Předznamenání" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "Křížek" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "B" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "Dvojitý křížek" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "Dvojité béčko" @@ -940,18 +1053,21 @@ msgstr "Označení tóniny (předznamenání)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" msgstr "Označení tóniny" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "Dur" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "Moll" @@ -962,18 +1078,21 @@ msgstr "Varování: označení tóniny a výšky tónů" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "Bez předznamenání" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" msgstr "Převedení do jiné tóniny" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "Označení výšek tónů" @@ -989,6 +1108,7 @@ msgstr "Ligatury" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "Ligatura" @@ -999,6 +1119,7 @@ msgstr "Legatové obloučky" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "Legatový oblouček" @@ -1009,6 +1130,7 @@ msgstr "Legatové obloučky frázování" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "Frázování" @@ -1019,6 +1141,7 @@ msgstr "Varování: Legatové obloučky nejsou ligatury" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "Artikulace" @@ -1038,6 +1161,7 @@ msgstr "Prstoklady" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" msgstr "Prstoklad" @@ -1049,19 +1173,21 @@ msgstr "Hudební značky určující hlasitost (dynamika)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "Hudební značky určující hlasitost" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" msgstr "Crescendo" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" msgstr "Decrescendo" @@ -1091,19 +1217,21 @@ msgid "anacrusis" msgstr "Předtaktí" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "Rytmické notové skupiny" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "Hodnota noty" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" msgstr "Triola" @@ -1114,18 +1242,21 @@ msgstr "Ozdoby" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "Ozdoby" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "Příraz" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "Dlouhý příraz" @@ -1150,6 +1281,7 @@ msgstr "Souběžné hudební výrazy: více notových osnov" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "Vícehlasost" @@ -1170,9 +1302,26 @@ msgstr "Seskupit notové osnovy" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "Svorka" +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "staff" +msgstr "Notová osnova" + +#. @rglos in Documentation/learning/common-notation.itely +#. @rglos in Documentation/learning/fundamental.itely +#. @rglos in Documentation/learning/tweaks.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely +msgid "system" +msgstr "Notový systém" + #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely msgid "Combining notes into chords" @@ -1181,6 +1330,7 @@ msgstr "Spojit noty do akordů" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "Akord" @@ -1202,6 +1352,7 @@ msgstr "Nastavit jednoduché písně" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "Text písně" @@ -1213,12 +1364,14 @@ msgstr "Zarovnat text k melodii" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "melodická ozdoba" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "Čára dolního/horního dotahu" @@ -1254,12 +1407,18 @@ msgstr "Po cvičení" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "Pěvec" #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) msgid "vocal" msgstr "Zpěv" @@ -1267,653 +1426,774 @@ msgstr "Zpěv" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:231 (variable) -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "Klavír" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2764 (variable) -#. Documentation/learning/fundamental.itely:2826 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:145 (context id) -#. Documentation/snippets/jazz-combo-template.ly:234 (context id) -#. Documentation/snippets/piano-template-simple.ly:37 (variable) -#. Documentation/snippets/piano-template-simple.ly:56 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:45 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:57 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:42 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) #. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "nahoře" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2771 (variable) -#. Documentation/learning/fundamental.itely:2827 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:146 (context id) -#. Documentation/snippets/jazz-combo-template.ly:235 (context id) -#. Documentation/snippets/piano-template-simple.ly:45 (variable) -#. Documentation/snippets/piano-template-simple.ly:57 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:69 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:49 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) #. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "dole" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:497 (context id) -#. Documentation/notation/changing-defaults.itely:507 (context id) -#. Documentation/notation/changing-defaults.itely:512 (context id) -#. Documentation/notation/changing-defaults.itely:529 (variable) -#. Documentation/notation/changing-defaults.itely:547 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:64 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:66 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:45 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:45 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:47 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:63 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:53 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "Melodie" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:61 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:53 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:53 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:71 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) msgid "text" msgstr "Text" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:84 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "hlavní" -#. Documentation/learning/fundamental.itely:629 (comment) -msgid "Voice \\\"1\\\" Voice \\\"2\\\"" +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) +#, fuzzy +msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "Hlas \\\"1\\\" Hlas \\\"2\\\"" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "Hlas \\\"1\\\" Hlas \\\"2\\\"" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "Hlas \\\"1\\\"" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "Hlas \\\"2\\\"" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "Hlavní hlas" -#. Documentation/learning/fundamental.itely:684 (comment) -msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) +#, fuzzy +msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "Hlas·\\\"1\\\"··············Hlas·\\\"2\\\" Hlas \\\"3\\\"" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "Takt 1" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "Takt 2" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "Hlas 1 pokračuje" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "Hlas 2 pokračuje" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "První hlas" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "Druhý hlas" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "Vynechat třetí hlas" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "Čtvrtý hlas" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "Výchozí chování nebo chování po \\oneVoice" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "Následující noty jsou monofonní" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "Začít souběžnou část složenou ze tří hlasů" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "Hlavní hlas nechat jít dál" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "Započít druhý hlas" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "Nastavit nožičky, atd., dolů" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "Započít třetí hlas" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "Nastavit nožičky, atd., nahoru" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "Započít první hlas" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "Nastavit nožičky, atd., dolů" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2478 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:25 (variable) -#. Documentation/snippets/jazz-combo-template.ly:217 (context id) -#. Documentation/snippets/jazz-combo-template.ly:226 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:67 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:77 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "jeden" #. Documentation/learning/fundamental.itely:1240 (variable) -#. Documentation/learning/fundamental.itely:2738 (variable) -#. Documentation/learning/tweaks.itely:3537 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:64 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:87 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:51 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:47 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:61 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:51 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:60 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "celkový" -#. Documentation/learning/fundamental.itely:1241 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "SoprJedenNoty" -#. Documentation/learning/fundamental.itely:1243 (variable) -msgid "SopTwoMusic" -msgstr "SoprDvaNoty" - #. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "SoprJedenText" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) +msgid "SopTwoMusic" +msgstr "SoprDvaNoty" + +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "SoprDvaText" -#. Documentation/learning/fundamental.itely:1253 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "SoprJeden" -#. Documentation/learning/fundamental.itely:1262 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "SoprDva" -#. Documentation/learning/fundamental.itely:1294 (variable) -#. Documentation/learning/fundamental.itely:3006 (variable) -msgid "TimeKey" -msgstr "Udání času" +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) +msgid "keyTime" +msgstr "" -#. Documentation/learning/fundamental.itely:1295 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "SoprNoty" -#. Documentation/learning/fundamental.itely:1296 (variable) -#. Documentation/learning/tweaks.itely:3539 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "AltNoty" -#. Documentation/learning/fundamental.itely:1297 (variable) -#. Documentation/learning/tweaks.itely:3540 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "TenorNoty" -#. Documentation/learning/fundamental.itely:1298 (variable) -#. Documentation/learning/tweaks.itely:3541 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "BasNoty" -#. Documentation/learning/fundamental.itely:1299 (variable) -#. Documentation/learning/tweaks.itely:3542 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "SlokaJedna" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/tweaks.itely:3543 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "SlokaDvě" -#. Documentation/learning/fundamental.itely:1303 (variable) -#. Documentation/learning/tweaks.itely:3544 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "SlokaTři" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3545 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "SlokaČtyři" -#. Documentation/learning/fundamental.itely:1312 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "Sopr" -#. Documentation/learning/fundamental.itely:1313 (context id) -#. Documentation/learning/tweaks.itely:3552 (context id) -#. Documentation/notation/input.itely:984 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "Alt" -#. Documentation/learning/fundamental.itely:1321 (context id) -#. Documentation/learning/tweaks.itely:3560 (context id) -#. Documentation/notation/input.itely:986 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "Tenor" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3561 (context id) -#. Documentation/notation/input.itely:991 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:240 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "Bas" -#. Documentation/learning/fundamental.itely:1347 (variable) -#. Documentation/learning/fundamental.itely:1400 (variable) -#. Documentation/learning/fundamental.itely:1463 (variable) -msgid "versenotes" -msgstr "SlokyNoty" - -#. Documentation/learning/fundamental.itely:1353 (variable) -#. Documentation/learning/fundamental.itely:1415 (variable) -#. Documentation/learning/fundamental.itely:1478 (variable) -msgid "versewords" -msgstr "SlokyText" - -#. Documentation/learning/fundamental.itely:1359 (context id) -#. Documentation/learning/fundamental.itely:1427 (context id) -#. Documentation/learning/fundamental.itely:1489 (context id) -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -msgid "verse" -msgstr "Sloka" - -#. Documentation/learning/fundamental.itely:1406 (variable) -#. Documentation/learning/fundamental.itely:1469 (variable) -msgid "refrainnotesA" -msgstr "RefrénNotyA" - -#. Documentation/learning/fundamental.itely:1410 (variable) -#. Documentation/learning/fundamental.itely:1473 (variable) -msgid "refrainnotesB" -msgstr "RefrénNotyB" - -#. Documentation/learning/fundamental.itely:1418 (variable) -#. Documentation/learning/fundamental.itely:1481 (variable) -msgid "refrainwordsA" -msgstr "RefrénTextA" - -#. Documentation/learning/fundamental.itely:1421 (variable) -#. Documentation/learning/fundamental.itely:1484 (variable) -msgid "refrainwordsB" -msgstr "RefrénTextB" - -#. Documentation/learning/fundamental.itely:1435 (context id) -#. Documentation/learning/fundamental.itely:1509 (context id) -msgid "refrainB" -msgstr "RefrénB" - -#. Documentation/learning/fundamental.itely:1501 (context id) -msgid "refrainA" -msgstr "RefrénA" - -#. Documentation/learning/fundamental.itely:1663 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "Začátek jednoho složeného hudebního výrazu" -#. Documentation/learning/fundamental.itely:1664 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "Začátek části souběžných notových osnov" -#. Documentation/learning/fundamental.itely:1666 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "Vytvořit notovou osnovu RH" -#. Documentation/learning/fundamental.itely:1669 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "Vytvořit hlas pro noty RH" -#. Documentation/learning/fundamental.itely:1670 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "Začátek not RH" -#. Documentation/learning/fundamental.itely:1673 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "Konec not RH" -#. Documentation/learning/fundamental.itely:1674 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "Konec hlasu RH" -#. Documentation/learning/fundamental.itely:1675 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "Konec notové osnovy RH" -#. Documentation/learning/fundamental.itely:1676 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "Vytvořit notovou osnovu LH; potřebuje dva souběžné hlasy" -#. Documentation/learning/fundamental.itely:1679 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "Vytvořit hlas LH jedna" -#. Documentation/learning/fundamental.itely:1681 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "Začátek not hlasu LH jedna" -#. Documentation/learning/fundamental.itely:1684 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "Konec not hlasu LH jedna" -#. Documentation/learning/fundamental.itely:1685 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "Konec hlasu LH jedna" -#. Documentation/learning/fundamental.itely:1686 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "Vytvořit hlas LH dvě" -#. Documentation/learning/fundamental.itely:1688 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "Začátek not hlasu LH dvě" -#. Documentation/learning/fundamental.itely:1691 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "Konec not hlasu LH dvě" -#. Documentation/learning/fundamental.itely:1692 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "Konec hlasu LH dvě" -#. Documentation/learning/fundamental.itely:1693 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "Konec notové osnovy LH" -#. Documentation/learning/fundamental.itely:1694 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "Konec části souběžných notových osnov" -#. Documentation/learning/fundamental.itely:1695 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "Konec jednoho složeného hudebního výrazu" -#. Documentation/learning/fundamental.itely:1914 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "Å patně!" -#. Documentation/learning/fundamental.itely:2000 (comment) -#. Documentation/learning/fundamental.itely:2171 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "ZmenÅ¡it hlavičky not" -#. Documentation/learning/fundamental.itely:2003 (comment) -#. Documentation/learning/fundamental.itely:2173 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "ZvětÅ¡it hlavičky not" -#. Documentation/learning/fundamental.itely:2006 (comment) -#. Documentation/learning/fundamental.itely:2175 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "Vrátit se k výchozí velikosti" -#. Documentation/learning/fundamental.itely:2457 (variable) -#. Documentation/learning/fundamental.itely:2742 (variable) -#. Documentation/notation/input.itely:976 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "SopránNoty" -#. Documentation/learning/fundamental.itely:2464 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "SopránText" -#. Documentation/learning/fundamental.itely:2468 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "CelloNoty" -#. Documentation/learning/fundamental.itely:2746 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "SopránText" -#. Documentation/learning/fundamental.itely:2749 (variable) -#. Documentation/notation/input.itely:977 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:63 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:72 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "AltNoty" -#. Documentation/learning/fundamental.itely:2753 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "AltText" -#. Documentation/learning/fundamental.itely:2754 (variable) -#. Documentation/notation/input.itely:978 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:70 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "TenorNoty" -#. Documentation/learning/fundamental.itely:2758 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "TenorText" -#. Documentation/learning/fundamental.itely:2759 (variable) -#. Documentation/notation/input.itely:979 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:87 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:77 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:86 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "BasNoty" -#. Documentation/learning/fundamental.itely:2763 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "BasText" -#. Documentation/learning/fundamental.itely:2780 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "Dávat dohromady souběžně SborOsnova a PianoOsnova" -#. Documentation/learning/fundamental.itely:2782 (context id) -#. Documentation/learning/fundamental.itely:2784 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:87 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:97 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "Soprány" -#. Documentation/learning/fundamental.itely:2792 (context id) -#. Documentation/learning/fundamental.itely:2794 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:100 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:101 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "Alty" -#. Documentation/learning/fundamental.itely:2802 (context id) -#. Documentation/learning/fundamental.itely:2804 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:106 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:98 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:110 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "Tenory" -#. Documentation/learning/fundamental.itely:2812 (context id) -#. Documentation/learning/fundamental.itely:2814 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:114 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "Basy" -#. Documentation/learning/fundamental.itely:2822 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "Ukončit SborOsnova" -#. Documentation/learning/fundamental.itely:3010 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "ManuálJedenHlasJednyNoty" -#. Documentation/learning/fundamental.itely:3014 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "ManuálJedenHlasDvojeNoty" -#. Documentation/learning/fundamental.itely:3018 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "ManuálDvojeNoty" -#. Documentation/learning/fundamental.itely:3022 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "PedálVarhanyNoty" -#. Documentation/learning/fundamental.itely:3028 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "PianoOsnova a PedálOsnova musí být souběžné" -#. Documentation/learning/fundamental.itely:3030 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "ManuálJeden" -#. Documentation/learning/fundamental.itely:3031 (comment) -msgid "set time signature and key" -msgstr "Nastavit taktové označení a tóninu" +#. Documentation/learning/fundamental.itely:2926 (comment) +#, fuzzy +msgid "set key and time signature" +msgstr "Taktové označení" -#. Documentation/learning/fundamental.itely:3041 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "Ukončit souvislost notové osnovy ManuálJeden" -#. Documentation/learning/fundamental.itely:3042 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "ManuálDva" -#. Documentation/learning/fundamental.itely:3048 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "Ukončit ManuálDva" -#. Documentation/learning/fundamental.itely:3049 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "Ukončit klavírní notovou osnovu" -#. Documentation/learning/fundamental.itely:3050 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "VarhanyPedál" -#. Documentation/learning/fundamental.itely:3056 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "Ukončit varhanní notovou osnovu" -#. Documentation/learning/fundamental.itely:3058 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "Ukončit notový zápis" -#. Documentation/learning/fundamental.itely:3071 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) msgid "hornNotes" msgstr "TrubkaNoty" -#. Documentation/learning/fundamental.itely:3082 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "ČástA" -#. Documentation/learning/fundamental.itely:3083 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "ČástB" -#. Documentation/learning/fundamental.itely:3102 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "dolce" -#. Documentation/learning/fundamental.itely:3104 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "FpotomP" @@ -1946,6 +2226,7 @@ msgstr "Naskládat hudební výrazy jeden do druhého" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "Ossia" @@ -2027,6 +2308,7 @@ msgstr "Změnit jednotlivé prostředí" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" msgstr "Rozsah tónů" @@ -2064,246 +2346,376 @@ msgstr "Uložit psaní na stroji pomocí proměnných a funkcí" msgid "Scores and parts" msgstr "Notové zápisy a hlasy" -#. Documentation/learning/tweaks.itely:598 (comment) -#. Documentation/learning/tweaks.itely:733 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "ZvětÅ¡it tloušťku vÅ¡ech následujících obloučků z 1.2 na 5.0" -#. Documentation/learning/tweaks.itely:667 (comment) -#. Documentation/learning/tweaks.itely:706 (comment) -#. Documentation/learning/tweaks.itely:709 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) +#. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "ZvětÅ¡it tloušťku jen u bezprostředně následujících obloučků" -#. Documentation/learning/tweaks.itely:737 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "Vrátit tloušťku vÅ¡ech následujících obloučků na výchozích 1.2" -#. Documentation/learning/tweaks.itely:1413 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "Žádné notové klíče v této notové osnově" -#. Documentation/learning/tweaks.itely:1415 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "Žádná taktová označení v této notové osnově" -#. Documentation/learning/tweaks.itely:1479 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "ZmenÅ¡it vÅ¡echny velikosti písma o ~24%" -#. Documentation/learning/tweaks.itely:1546 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "Přizpůsobit délku nožiček a vzdálenost mezi linkami notové osnovy" -#. Documentation/learning/tweaks.itely:1990 (comment) -#. Documentation/learning/tweaks.itely:2059 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "Nastavit podrobnosti pro pozdější natahovač textu" -#. Documentation/learning/tweaks.itely:1993 (comment) -#. Documentation/learning/tweaks.itely:2062 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "Hudební značky určující hlasitost umístit nad notovou osnovu" -#. Documentation/learning/tweaks.itely:1995 (comment) -#. Documentation/learning/tweaks.itely:2066 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "Začít oktávovou svorku" -#. Documentation/learning/tweaks.itely:1998 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "" -"Přidat text hudební značky určující hlasitost a sponku pro " -"crescendo/decrescendo" +"Přidat text hudební značky určující hlasitost a sponku pro crescendo/" +"decrescendo" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2073 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "Přidat textový popis" -#. Documentation/learning/tweaks.itely:2004 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "Přidat text hudební značky určující hlasitost a ukončit sponku" -#. Documentation/learning/tweaks.itely:2006 (comment) -#. Documentation/learning/tweaks.itely:2078 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "Ukončit oktávovou svorku" -#. Documentation/learning/tweaks.itely:2064 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "Další oktávovou svorku umístit pod natahovače textu" -#. Documentation/learning/tweaks.itely:2069 (comment) -#. Documentation/learning/tweaks.itely:2076 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "Přidat text hudební značky určující hlasitost" -#. Documentation/learning/tweaks.itely:2071 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "Přidat dynamický natahovač linky" -#. Documentation/learning/tweaks.itely:2153 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "Roztáhnout noty tak, aby se udělalo místo pro text" -#. Documentation/learning/tweaks.itely:2176 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "Tento text je dostatečně krátký na to, aby zapadl bez srážky" -#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "" "Tento text je na to, aby zapadl, příliÅ¡ dlouhý, proto je odsunut nahoru" -#. Documentation/learning/tweaks.itely:2184 (comment) -#. Documentation/learning/tweaks.itely:2189 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "Vypnout automatické vyhnutí se srážce" -#. Documentation/learning/tweaks.itely:2191 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "a přihlédnout k délce textu" -#. Documentation/learning/tweaks.itely:2192 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "Mezery na konci jsou dodrženy" -#. Documentation/learning/tweaks.itely:2299 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "ZvětÅ¡it šířku o jednu mezeru mezi linkami hudební osnovy" -#. Documentation/learning/tweaks.itely:2582 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "To nepůjde, podívejte se dolů" -#. Documentation/learning/tweaks.itely:2586 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "Jde to" #. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) msgid "sesquisharp" msgstr "sesquisharp" #. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "Zde se nastavuje znak sesquisharp, ale mezera je příliÅ¡ malá" #. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "Toto mezery zlepší" #. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "ZvětÅ¡it šířku o jednu jednotku" #. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" "Hudební značky určující hlasitost zarovnat k základní lince, která je dvě " "jednotky nad notovou osnovou" -#. Documentation/learning/tweaks.itely:2980 (variable) -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3091 (variable) -#. Documentation/learning/tweaks.itely:3228 (variable) -#. Documentation/learning/tweaks.itely:3289 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "rhNoty" -#. Documentation/learning/tweaks.itely:2985 (comment) -#. Documentation/learning/tweaks.itely:3034 (comment) -#. Documentation/learning/tweaks.itely:3098 (comment) -#. Documentation/learning/tweaks.itely:3237 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "Začít vícehlasou část se čtyřmi hlasy" -#. Documentation/learning/tweaks.itely:2998 (variable) -#. Documentation/learning/tweaks.itely:3047 (variable) -#. Documentation/learning/tweaks.itely:3111 (variable) -#. Documentation/learning/tweaks.itely:3254 (variable) -#. Documentation/learning/tweaks.itely:3320 (variable) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) +#, fuzzy +msgid "continuation of main voice" +msgstr "Započít první hlas" + +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "lhNoty" -#. Documentation/learning/tweaks.itely:3007 (context id) -#. Documentation/learning/tweaks.itely:3056 (context id) -#. Documentation/learning/tweaks.itely:3120 (context id) -#. Documentation/learning/tweaks.itely:3263 (context id) -#. Documentation/learning/tweaks.itely:3329 (context id) -#. Documentation/notation/input.itely:997 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "RH" -#. Documentation/learning/tweaks.itely:3011 (context id) -#. Documentation/learning/tweaks.itely:3060 (context id) -#. Documentation/learning/tweaks.itely:3124 (context id) -#. Documentation/learning/tweaks.itely:3267 (context id) -#. Documentation/learning/tweaks.itely:3333 (context id) -#. Documentation/notation/input.itely:1003 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "LH" -#. Documentation/learning/tweaks.itely:3241 (comment) -#. Documentation/learning/tweaks.itely:3304 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +#, fuzzy +msgid "Move the c2 out of the main note column" msgstr "Přesunout c2 z hlavního notového sloupce, aby Å¡lo sloučení" -#. Documentation/learning/tweaks.itely:3244 (comment) -#. Documentation/learning/tweaks.itely:3307 (comment) +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +#, fuzzy +msgid "so the merge will work" +msgstr "Zalomení by zde účinkovalo" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "Nožička u d2 musí být dolů, aby umožnila sloučení" -#. Documentation/learning/tweaks.itely:3302 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "c2 přesunout napravo od sloučené noty" -#. Documentation/learning/tweaks.itely:3442 (comment) -#. Documentation/learning/tweaks.itely:3464 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) +msgid "Stem on the d2 should be invisible" +msgstr "" + +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "Viditelné označení tempa" -#. Documentation/learning/tweaks.itely:3446 (comment) -#. Documentation/learning/tweaks.itely:3468 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "Neviditelné označení tempa pro prodloužení koruny (fermaty) v MIDI" -#. Documentation/learning/tweaks.itely:3449 (comment) -#. Documentation/learning/tweaks.itely:3471 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "Nové tempo v další části" -#. Documentation/learning/tweaks.itely:3528 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "zdůraznit" -#. Documentation/learning/tweaks.itely:3532 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "normální" -#. Documentation/learning/tweaks.itely:3538 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "SopránNoty" -#. Documentation/learning/tweaks.itely:3551 (context id) -#. Documentation/notation/input.itely:982 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "Soprán" -#. Documentation/learning/tweaks.itely:3582 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "mpdolce" -#. Documentation/learning/tweaks.itely:3585 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "nástroj" -#. Documentation/learning/tweaks.itely:4029 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "Nařízení pro obdržení barvy z procedury color-notehead" @@ -2463,8 +2875,9 @@ msgid "padding property" msgstr "padding (vlastnost posunutí)" #. @subheading in Documentation/learning/tweaks.itely -msgid "left-padding and right-padding" -msgstr "left-padding (posunutí doprava) a right-padding (posunutí doleva)" +#, fuzzy +msgid "right-padding" +msgstr "Hustá sazba" #. @subheading in Documentation/learning/tweaks.itely msgid "staff-padding property" @@ -2528,11 +2941,6 @@ msgstr "Stylové listy" msgid "Other sources of information" msgstr "Další zdroje informací" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "Vyhnout se drobným úpravám pomocí pomalejšího zpracování" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2612,6 +3020,23 @@ msgstr "Notový zápis SATB a automatický klavírní výtah" msgid "SATB with aligned contexts" msgstr "SATB s přísluÅ¡nými prostředími" +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "SATB on four staves" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Solo verse and two-part refrain" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +#, fuzzy +msgid "Hymn tunes" +msgstr "Počet slabik" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Psalms" +msgstr "" + #. @node in Documentation/learning/templates.itely #. @appendixsec in Documentation/learning/templates.itely msgid "Orchestral templates" @@ -2650,10 +3075,10 @@ msgstr "Hudební pojmy A-Z" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:455 (context id) -#. Documentation/notation/changing-defaults.itely:461 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) -#. Documentation/notation/changing-defaults.itely:471 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "A" @@ -2704,7 +3129,8 @@ msgstr "Alterace" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:111 (variable) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "Alt" @@ -2735,13 +3161,13 @@ msgstr "Vzestupný interval" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -msgid "augmented interval" -msgstr "ZvětÅ¡ený interval" +msgid "augmentation" +msgstr "Zvýšení" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -msgid "augmentation" -msgstr "Zvýšení" +msgid "augmented interval" +msgstr "ZvětÅ¡ený interval" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2750,9 +3176,9 @@ msgstr "Rukopis" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:456 (context id) -#. Documentation/notation/changing-defaults.itely:465 (context id) -#. Documentation/notation/changing-defaults.itely:470 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "B" @@ -2783,10 +3209,11 @@ msgstr "Barytonový klíč" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:44 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:244 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "Bas" @@ -2852,7 +3279,7 @@ msgstr "Kadence" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "PřeruÅ¡ení (césura)" @@ -2901,6 +3328,11 @@ msgstr "Čárka" msgid "common meter" msgstr "ČtyřčtvrÅ¥ový takt (takt 4/4)" +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "Common Practice Period" +msgstr "" + #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "common time" @@ -3303,6 +3735,7 @@ msgstr "Závěrečná kadence" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "Flažoletové zvuky" @@ -3476,11 +3909,6 @@ msgstr "Menzurální označení druhu taktu" msgid "meter" msgstr "Metrum" -#. @node in Documentation/music-glossary.tely -#. @section in Documentation/music-glossary.tely -msgid "metronome" -msgstr "Údaj metronomu" - #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "metronome mark" @@ -3603,8 +4031,8 @@ msgstr "Ozdoba" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:144 (variable) -#. Documentation/snippets/flamenco-notation.ly:241 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "Hlas" @@ -3668,6 +4096,12 @@ msgstr "Polymetrické taktové označení" msgid "portato" msgstr "Portato" +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#, fuzzy +msgid "power chord" +msgstr "Moderne Akkorde" + #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "presto" @@ -3725,8 +4159,8 @@ msgstr "Opakování" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:288 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "Rytmus" @@ -3852,6 +4286,7 @@ msgstr "Text písně" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "Soprán" @@ -3860,11 +4295,6 @@ msgstr "Soprán" msgid "staccato" msgstr "Staccato (krátce)" -#. @node in Documentation/music-glossary.tely -#. @section in Documentation/music-glossary.tely -msgid "staff" -msgstr "Notová osnova" - #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "staves" @@ -3935,11 +4365,6 @@ msgstr "Synkopa" msgid "syntonic comma" msgstr "Srovnaná čárka (syntonická)" -#. @node in Documentation/music-glossary.tely -#. @section in Documentation/music-glossary.tely -msgid "system" -msgstr "Notový systém" - #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "temperament" @@ -3947,11 +4372,7 @@ msgstr "Temperované ladění" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -msgid "tempo indication" -msgstr "Označení tempa" - -#. @node in Documentation/music-glossary.tely -#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) msgid "tenor" msgstr "Tenor" @@ -4095,6 +4516,61 @@ msgstr "Dřevěný dechový nástroj" msgid "Duration names notes and rests" msgstr "Označení dob trvání not a pomlk" +#. @node in Documentation/music-glossary.tely +#. @chapter in Documentation/music-glossary.tely +msgid "Non-Western terms A-Z" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bayati" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "iraq" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "kurd" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "makam" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "makamlar" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "maqam" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "rast" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "semai" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sikah" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "taqasim" +msgstr "" + #. @node in Documentation/music-glossary.tely #. @appendix in Documentation/music-glossary.tely msgid "Literature used" @@ -4120,31 +4596,68 @@ msgstr "Hudební notový zápis" msgid "Specialist notation" msgstr "Zvláštní notový zápis" -#. Documentation/notation/input.itely:548 (comment) -msgid "not printed" -msgstr "netiÅ¡těno" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +#, fuzzy +msgid "The following fields are centered" +msgstr "Následující noty jsou monofonní" + +#. Documentation/notation/input.itely:653 (comment) +#, fuzzy +msgid "The following fields are left-aligned on the left side" +msgstr "Tímto se pomlka posune k střední lince" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "" + +#. Documentation/notation/input.itely:665 (comment) +#, fuzzy +msgid "The following fields are placed at opposite ends of the same line" +msgstr "Následující je zde jen proto, aby byly nastaveny značky" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "" -#. Documentation/notation/input.itely:980 (variable) +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "vÅ¡eText" -#. Documentation/notation/input.itely:1066 (variable) -#. Documentation/notation/input.itely:1085 (variable) -#. Documentation/notation/input.itely:1122 (variable) -#. Documentation/notation/input.itely:1137 (variable) -#. Documentation/notation/changing-defaults.itely:460 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) -#. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:21 (variable) -#. Documentation/snippets/guitar-slides.ly:30 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:18 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:138 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:168 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:66 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) +#. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "Noty" +#. Documentation/notation/input.itely:1792 (variable) +msgid "test" +msgstr "" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4165,6 +4678,18 @@ msgstr "Skladba notového zápisu" msgid "Multiple scores in a book" msgstr "Více notových zápisů v knize" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Multiple output files from one input file" +msgstr "Mehrere Silben zu einer Note" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Output file names" +msgstr "Quelldateien" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "File structure" @@ -4177,13 +4702,72 @@ msgstr "Názvy a záhlaví" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" +#, fuzzy +msgid "Creating titles headers and footers" msgstr "Vytvořit názvy" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Title blocks explained" +msgstr "Was ist Gesangtext" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Custom headers footers and titles" +msgstr "Označení dob trvání not a pomlk" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Custom text formatting for title blocks" +msgstr "Použít pro název:" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Custom layout for title blocks" +msgstr "Použít pro název:" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom titles" -msgstr "Vlastní názvy" +#, fuzzy +msgid "Creating footnotes" +msgstr "Vytvořit prostředí" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Footnotes overview" +msgstr "Poznámky pod čarou" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Automatic footnotes" +msgstr "Automatische Balken" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Manual footnotes" +msgstr "Ruční převod" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4220,15 +4804,31 @@ msgstr "Použít proměnné" msgid "Using tags" msgstr "Použít značky" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Special characters" +msgstr "Zvláštnosti" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "Kódování znaků" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" -msgstr "Zobrazit notový zápis LilyPond" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" +msgstr "" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely @@ -4255,6 +4855,10 @@ msgstr "Náhradní výstupní formáty" msgid "Replacing the notation font" msgstr "Změnit písmo notového zápisu" +#. @subsubheading in Documentation/notation/input.itely +msgid "Installation Instructions for MacOS" +msgstr "" + #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely msgid "MIDI output" @@ -4318,74 +4922,95 @@ msgstr "Vyrovnání různých nástrojů (ii)" msgid "Percussion in MIDI" msgstr "Bicí v MIDI" -#. Documentation/notation/spacing.itely:1009 (comment) -msgid "this does nothing" -msgstr "To nedělá vůbec nic" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "The Articulate script" +msgstr "Artikulační písma" -#. Documentation/notation/spacing.itely:1010 (comment) -msgid "a break here would work" -msgstr "Zalomení by zde účinkovalo" +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +#, fuzzy +msgid "Extracting musical information" +msgstr "Notationsfragmente extrahieren" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "Zobrazit notový zápis LilyPond" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Displaying scheme music expressions" +msgstr "Zobrazení hudebních výrazů" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" -#. Documentation/notation/spacing.itely:1011 (comment) -msgid "as does this break" -msgstr "jako to dělá toto zalomení" +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" +msgstr "" + +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" +msgstr "" -#. Documentation/notation/spacing.itely:1023 (comment) -msgid "now the break is allowed" -msgstr "nyní je zalomení dovoleno" +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." +msgstr "" -#. Documentation/notation/spacing.itely:1441 (comment) -msgid "Since space is small and there is no minimum-distance, the distance" -msgstr "Protože místa je málo a není tu ani nejmenší mezera, odstup," +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" +msgstr "" -#. Documentation/notation/spacing.itely:1442 (comment) -msgid "between this staff and the next will be determined by padding." -msgstr "mezi notovou osnovou a dalším předmětem se rozhodne pomocí posunutí." +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" +msgstr "" -#. Documentation/notation/spacing.itely:1448 (comment) -msgid "Since space is small and nothing sticks out very far, the distance" -msgstr "Protože místa je málo a nic nepřečnívá, odstup" +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" +msgstr "" -#. Documentation/notation/spacing.itely:1449 (comment) -msgid "between this staff and the next will be determined by minimum-distance." +#. Documentation/notation/spacing.itely:2094 (comment) +#, fuzzy +msgid "this staff and the next is determined by 'basic-distance." msgstr "" "mezi touto notovou osnovou a dalším předmětem se určí podle nejmenší možné " "vzdálenosti." -#. Documentation/notation/spacing.itely:1455 (comment) -msgid "By setting padding to a negative value, staves can be made to collide." +#. Documentation/notation/spacing.itely:2097 (comment) +#, fuzzy +msgid "By setting 'padding to a negative value, staves can be made to" msgstr "nastavením posunutí na zápornou hodnotu se notové osnovy mohou srazit" -#. Documentation/notation/spacing.itely:1551 (comment) -msgid "By default, Lyrics are placed close together. Here, we allow them to" +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "" -"Ve výchozím nastavení jsou písňové texty umístěny úzce pohromadě. Zde smějí" - -#. Documentation/notation/spacing.itely:1552 (comment) -msgid "be stretched more widely." -msgstr "zabrat o něco více místa." -#. Documentation/notation/spacing.itely:1905 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "Tentokrát je text blíže k notové osnově" -#. Documentation/notation/spacing.itely:1907 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "Nastavením outside-staff-priority na nečíselnou hodnotu," -#. Documentation/notation/spacing.itely:1908 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr " zakážeme samočinné vyhnutí se srážce" -#. Documentation/notation/spacing.itely:1911 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "Nyní se srazí" -#. Documentation/notation/spacing.itely:1937 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "Popis je příliÅ¡ blízko k následující notě" -#. Documentation/notation/spacing.itely:1941 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "Nastavení outside-staff-horizontal-padding pomáhá" @@ -4396,70 +5021,187 @@ msgstr "Odstupy" #. @node in Documentation/notation/spacing.itely #. @section in Documentation/notation/spacing.itely -msgid "Paper and pages" -msgstr "Papír a strany" +#, fuzzy +msgid "Page layout" +msgstr "Rozvržení notového zápisu" #. @node in Documentation/notation/spacing.itely -#. @subsection in Documentation/notation/spacing.itely -msgid "Paper size" -msgstr "Velikost papíru" +msgid "The \\\\paper block" +msgstr "" -#. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely -msgid "Page formatting" -msgstr "Formátování stran" +#, fuzzy +msgid "The @code{\\\\paper} block" +msgstr "Příkaz @code{\\\\override}" #. @node in Documentation/notation/spacing.itely -#. @unnumberedsubsubsec in Documentation/notation/spacing.itely -msgid "Vertical dimensions" -msgstr "Svislé rozměry" +#. @subsection in Documentation/notation/spacing.itely +msgid "Paper size and automatic scaling" +msgstr "" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -msgid "Horizontal dimensions" -msgstr "Vodorovné rozměry" +#, fuzzy +msgid "Setting paper size" +msgstr "Nastavit velikost notové osnovy" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -msgid "Other layout variables" -msgstr "Další proměnné rozvržení" +#, fuzzy +msgid "Automatic scaling to paper size" +msgstr "Automatische Notensystemwechsel" #. @node in Documentation/notation/spacing.itely -#. @section in Documentation/notation/spacing.itely -msgid "Music layout" -msgstr "Rozvržení not" +#, fuzzy +msgid "Fixed vertical spacing \\\\paper variables" +msgstr "Vertikaler Abstand zwischen Strophen" -#. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely -msgid "Setting the staff size" -msgstr "Nastavit velikost notové osnovy" +#, fuzzy +msgid "Fixed vertical spacing @code{\\\\paper} variables" +msgstr "Vertikaler Abstand zwischen Strophen" #. @node in Documentation/notation/spacing.itely +#, fuzzy +msgid "Flexible vertical spacing \\\\paper variables" +msgstr "Vertikaler Abstand zwischen Strophen" + #. @subsection in Documentation/notation/spacing.itely -msgid "Score layout" -msgstr "Rozvržení notového zápisu" +msgid "Flexible vertical spacing @code{\\\\paper} variables" +msgstr "" #. @node in Documentation/notation/spacing.itely -#. @section in Documentation/notation/spacing.itely -msgid "Breaks" -msgstr "Zalomení" +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Structure of flexible vertical spacing alists" +msgstr "" #. @node in Documentation/notation/spacing.itely -#. @subsection in Documentation/notation/spacing.itely -msgid "Line breaking" -msgstr "Zalomení řádků" +msgid "List of flexible vertical spacing \\\\paper variables" +msgstr "" -#. @node in Documentation/notation/spacing.itely -#. @subsection in Documentation/notation/spacing.itely -msgid "Page breaking" -msgstr "Zalomení stran" +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "List of flexible vertical spacing @code{\\\\paper} variables" +msgstr "" #. @node in Documentation/notation/spacing.itely -#. @subsection in Documentation/notation/spacing.itely -msgid "Optimal page breaking" -msgstr "Nejlepší zalomení stran" +#, fuzzy +msgid "Horizontal spacing \\\\paper variables" +msgstr "Přehled vodorovných odstupů" -#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +#, fuzzy +msgid "Horizontal spacing @code{\\\\paper} variables" +msgstr "Přehled vodorovných odstupů" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for widths and margins" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for widths and margins" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for two-sided mode" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for two-sided mode" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for shifts and indents" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for shifts and indents" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#, fuzzy +msgid "Other \\\\paper variables" +msgstr "Další proměnné rozvržení" + +#. @subsection in Documentation/notation/spacing.itely +#, fuzzy +msgid "Other @code{\\\\paper} variables" +msgstr "Nützliche @command{make}-Variablen" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for line breaking" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for line breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#, fuzzy +msgid "\\\\paper variables for page breaking" +msgstr "Nejlepší zalomení stran" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for page breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for page numbering" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for page numbering" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "Miscellaneous \\\\paper variables" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +#, fuzzy +msgid "Miscellaneous @code{\\\\paper} variables" +msgstr "Nützliche @command{make}-Variablen" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Score layout" +msgstr "Rozvržení notového zápisu" + +#. @node in Documentation/notation/spacing.itely +#, fuzzy +msgid "The \\\\layout block" +msgstr "Další proměnné rozvržení" + +#. @subsection in Documentation/notation/spacing.itely +#, fuzzy +msgid "The @code{\\\\layout} block" +msgstr "Příkaz @code{\\\\tweak}" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Setting the staff size" +msgstr "Nastavit velikost notové osnovy" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Breaks" +msgstr "Zalomení" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Line breaking" +msgstr "Zalomení řádků" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Page breaking" +msgstr "Zalomení stran" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Optimal page breaking" +msgstr "Nejlepší zalomení stran" + +#. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely msgid "Optimal page turning" msgstr "Nejlepší obracení stran" @@ -4486,22 +5228,41 @@ msgstr "Svislé odstupy" #. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely -msgid "Vertical spacing inside a system" -msgstr "Svislé odstupy uvnitř notové osnovy" +#, fuzzy +msgid "Flexible vertical spacing within systems" +msgstr "Svislé odstupy mezi notovými osnovami" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +#, fuzzy +msgid "Within-system spacing properties" +msgstr "Změnit vlastnosti" + +#. @subsubheading in Documentation/notation/spacing.itely +msgid "Properties of the @code{VerticalAxisGroup} grob" +msgstr "" + +#. @subsubheading in Documentation/notation/spacing.itely +msgid "Properties of the @code{StaffGrouper} grob" +msgstr "" +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +#, fuzzy +msgid "Spacing of ungrouped staves" +msgstr "Odstup mezi linkami nejsoucími v notové osnově" + +#. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -msgid "Spacing between staves" +#, fuzzy +msgid "Spacing of grouped staves" msgstr "Odstup mezi notovými osnovami" +#. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "Spacing of non-staff lines" msgstr "Odstup mezi linkami nejsoucími v notové osnově" -#. @node in Documentation/notation/spacing.itely -#. @subsection in Documentation/notation/spacing.itely -msgid "Vertical spacing between systems" -msgstr "Svislé odstupy mezi notovými osnovami" - #. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely msgid "Explicit staff and system positioning" @@ -4557,139 +5318,182 @@ msgstr "Zobrazit odstupy" msgid "Changing spacing" msgstr "Změnit odstupy" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "NotyA" -#. Documentation/notation/changing-defaults.itely:452 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "NotyB" -#. Documentation/notation/changing-defaults.itely:453 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "nechHlasŽít" -#. Documentation/notation/changing-defaults.itely:455 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "Nech hlas \\\"A\\\" žít po 5 taktů" -#. Documentation/notation/changing-defaults.itely:456 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "Nech hlas \\\"B\\\" žít po 5 taktů" -#. Documentation/notation/changing-defaults.itely:491 (variable) -#. Documentation/notation/changing-defaults.itely:502 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:513 (context id) -#. Documentation/notation/changing-defaults.itely:535 (variable) -#. Documentation/notation/changing-defaults.itely:551 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) msgid "accompaniment" msgstr "Doprovod" -#. Documentation/notation/changing-defaults.itely:492 (variable) -#. Documentation/notation/changing-defaults.itely:541 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) msgid "words" msgstr "Slova" -#. Documentation/notation/changing-defaults.itely:499 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "Nech hlas \\\"melodie\\\" žít po 4 takty" -#. Documentation/notation/changing-defaults.itely:530 (comment) -#. Documentation/notation/changing-defaults.itely:532 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "Přeskočit takt" -#. Documentation/notation/changing-defaults.itely:2364 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +#, fuzzy +msgid "bla" +msgstr "Takt" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) +#, fuzzy +msgid "default space between staves" +msgstr "Odstup mezi notovými osnovami" + +#. Documentation/notation/changing-defaults.itely:2044 (comment) +#, fuzzy +msgid "reduced space between staves" +msgstr "Odstup mezi notovými osnovami" + +#. Documentation/notation/changing-defaults.itely:2046 (comment) +msgid "this is the nested declaration" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "ZvětÅ¡it délku ligatury" -#. Documentation/notation/changing-defaults.itely:2373 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "ZvětÅ¡it délku pomlkového taktu" -#. Documentation/notation/changing-defaults.itely:2381 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "ZvětÅ¡it délku sponky pro crescendo/decrescendo" -#. Documentation/notation/changing-defaults.itely:2409 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "Výchozí" -#. Documentation/notation/changing-defaults.itely:2412 (comment) -#. Documentation/notation/changing-defaults.itely:2425 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "samotné bez účinku" -#. Documentation/notation/changing-defaults.itely:2416 (comment) -#. Documentation/notation/changing-defaults.itely:2429 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "platí jen tehdy, když jsou přítomna obě \"override\"" -#. Documentation/notation/changing-defaults.itely:2806 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "Odstranit taktovou čáru na konci řádku" -#. Documentation/notation/changing-defaults.itely:2852 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "Pokusit se o odstranění vÅ¡ech předznamenání (tónin)" -#. Documentation/notation/changing-defaults.itely:3274 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "Posunout vodorovně doleva" -#. Documentation/notation/changing-defaults.itely:3276 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "Posunout svisle nahoru" -#. Documentation/notation/changing-defaults.itely:3277 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "třetí prst" -#. Documentation/notation/changing-defaults.itely:3326 (comment) -#. Documentation/notation/changing-defaults.itely:3358 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:88 (comment) -msgid "the RehearsalMark will be centered above the Clef" +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) +#, fuzzy +msgid "The rehearsal mark will be centered above the Clef" msgstr "Umístit cvičnou značku do středu nad klíč" -#. Documentation/notation/changing-defaults.itely:3332 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:95 (comment) -msgid "the RehearsalMark will be centered above the TimeSignature" +#. Documentation/notation/changing-defaults.itely:3441 (comment) +#, fuzzy +msgid "The rehearsal mark will be centered above the Time Signature" msgstr "Umístit cvičnou značku do středu nad taktové označení" -#. Documentation/notation/changing-defaults.itely:3352 (comment) -msgid "the RehearsalMark will be centered above the Key Signature" +#. Documentation/notation/changing-defaults.itely:3448 (comment) +#, fuzzy +msgid "The rehearsal mark will be centered above the Breath Mark" +msgstr "Umístit cvičnou značku do středu nad předznamenání (tóninu)" + +#. Documentation/notation/changing-defaults.itely:3468 (comment) +#, fuzzy +msgid "The rehearsal mark will be centered above the Key Signature" msgstr "Umístit cvičnou značku do středu nad předznamenání (tóninu)" -#. Documentation/notation/changing-defaults.itely:3372 (comment) -msgid "The RehearsalMark will be centered above the KeySignature" +#. Documentation/notation/changing-defaults.itely:3481 (comment) +#, fuzzy +msgid "The rehearsal mark will be centered above the Bar Line" +msgstr "Umístit cvičnou značku do středu nad klíč" + +#. Documentation/notation/changing-defaults.itely:3496 (comment) +#, fuzzy +msgid "The RehearsalMark will be centered above the Key Signature" msgstr "Umístit cvičnou značku do středu nad předznamenání (tóninu)" -#. Documentation/notation/changing-defaults.itely:3379 (comment) -#. Documentation/notation/changing-defaults.itely:3395 (comment) -#. Documentation/notation/changing-defaults.itely:3402 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) +#, fuzzy msgid "" -"The RehearsalMark will be aligned with the left edge of the KeySignature" +"The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "Zarovnat cvičnou značku s levým okrajem předznamenání (tóniny)" -#. Documentation/notation/changing-defaults.itely:3384 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) +#, fuzzy msgid "" -"The RehearsalMark will be aligned with the right edge of the KeySignature" +"The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "Zarovnat cvičnou značku s pravým okrajem předznamenání (tóniny)" -#. Documentation/notation/changing-defaults.itely:3396 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "Posunout doprava o 3,5 linkových odstupů" -#. Documentation/notation/changing-defaults.itely:3403 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "Posunout doleva o 2 linkové odstupy" -#. Documentation/notation/changing-defaults.itely:3451 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "XinO" +#. Documentation/notation/changing-defaults.itely:3821 (variable) +msgid "custosNote" +msgstr "StrážceNota" + #. @node in Documentation/notation/changing-defaults.itely #. @chapter in Documentation/notation/changing-defaults.itely msgid "Changing defaults" @@ -4742,8 +5546,8 @@ msgstr "Stanovit nová prostředí" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" -msgstr "Zarovnat prostředí vedle sebe" +msgid "Context layout order" +msgstr "Pořadí rozvržení prostředí" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely @@ -4812,6 +5616,12 @@ msgstr "Příkaz set oproti override" msgid "@code{\\\\set} vs. @code{\\\\override}" msgstr "@code{\\\\set} versus @code{\\\\override}" +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +#, fuzzy +msgid "Modifying alists" +msgstr "Změnit lisovnice" + #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely msgid "Useful concepts and properties" @@ -4827,11 +5637,6 @@ msgstr "Vstupní režimy" msgid "Direction and placement" msgstr "Směr a umístění" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "Pořadí rozvržení prostředí" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -4916,16 +5721,28 @@ msgid "Aligning objects" msgstr "Zarovnat předměty" #. @node in Documentation/notation/changing-defaults.itely +#, fuzzy +msgid "Setting X-offset and Y-offset directly" +msgstr "Nastavit přímo @code{X-offset} a @code{Y-offset}" + #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Setting @code{X-offset} and @code{Y-offset} directly" msgstr "Nastavit přímo @code{X-offset} a @code{Y-offset}" #. @node in Documentation/notation/changing-defaults.itely +#, fuzzy +msgid "Using the side-position-interface" +msgstr "Použít @code{side-position-interface}" + #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Using the @code{side-position-interface}" msgstr "Použít @code{side-position-interface}" #. @node in Documentation/notation/changing-defaults.itely +#, fuzzy +msgid "Using the self-alignment-interface" +msgstr "Použít @code{self-alignment-interface}" + #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Using the @code{self-alignment-interface}" msgstr "Použít @code{self-alignment-interface}" @@ -4939,6 +5756,10 @@ msgid "Using the @code{centered-on-parent} procedures" msgstr "Použít procedury @code{centered-on-parent}" #. @node in Documentation/notation/changing-defaults.itely +#, fuzzy +msgid "Using the break-alignable-interface" +msgstr "Použít @code{break-aligned-interface}" + #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Using the @code{break-alignable-interface}" msgstr "Použít @code{break-aligned-interface}" @@ -4973,11 +5794,6 @@ msgstr "Použít hudební funkce" msgid "Substitution function syntax" msgstr "Skladba nahrazovací funkce" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Common argument types" -msgstr "Běžné druhy agumentů" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Substitution function examples" @@ -4998,6 +5814,12 @@ msgstr "Seznam názvů akordů" msgid "Common chord modifiers" msgstr "Běžné proměnné akordů" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Predefined string tunings" +msgstr "Vordefinierte Bund-Diagramme" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" @@ -5120,6 +5942,12 @@ msgstr "Obrázky pedálů" msgid "Accordion glyphs" msgstr "Obrázky tahacích harmonik" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Tie glyphs" +msgstr "Obrázky notových klíčů" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5160,6 +5988,23 @@ msgstr "Solesmeské obrázky" msgid "Note head styles" msgstr "Styly notových hlaviček" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Text markup commands" +msgstr "Überblick über Textbeschriftungsbefehle" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Text markup list commands" +msgstr "Überblick über Textbeschriftungsbefehle für Listen" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "List of special characters" +msgstr "Seznam barev" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5297,8 +6142,14 @@ msgstr "Dostupné hudební funkce" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" -msgstr "Funkce v Scheme" +msgid "Context modification identifiers" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Predefined type predicates" +msgstr "Vordefinierte Bund-Diagramme" #. @node in Documentation/notation/cheatsheet.itely #. @appendix in Documentation/notation/cheatsheet.itely @@ -5306,9 +6157,16 @@ msgid "Cheat sheet" msgstr "Přehled příkazů" #. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "\\\\TEXT\\\\" + #. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + #. @unnumberedsec in Documentation/snippets.tely -msgid "\\\\TEXT\\\\" +#, fuzzy +msgid "\\\\\\\\TEXT\\\\\\\\" msgstr "\\\\TEXT\\\\" #. @node in Documentation/usage/running.itely @@ -5337,6 +6195,11 @@ msgstr "Vyvolat lilypond" msgid "Invoking @command{lilypond}" msgstr "Vyvolat @command{lilypond}" +#. @unnumberedsubsubsec in Documentation/usage/running.itely +#, fuzzy +msgid "Standard shell commands" +msgstr "Manuelle Wiederholungsbefehle" + #. @node in Documentation/usage/running.itely msgid "Command line options for lilypond" msgstr "Volby příkazového řádku pro lilypond" @@ -5350,6 +6213,16 @@ msgstr "Volby příkazového řádku pro @command{lilypond}" msgid "Environment variables" msgstr "Proměnné prostředí" +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +#, fuzzy +msgid "LilyPond in chroot jail" +msgstr "Složené proměnné v LilyPondu" + +#. @subheading in Documentation/usage/running.itely +msgid "Example script for 32-bit Ubuntu 8.04" +msgstr "" + #. @node in Documentation/usage/running.itely #. @section in Documentation/usage/running.itely msgid "Error messages" @@ -5388,6 +6261,11 @@ msgstr "Chybové hlášení nesvázaná proměnná %" msgid "Error message FT_Get_Glyph_Name" msgstr "Chybové hlášení FT_Get_Glyph_Name" +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Warning staff affinities should only decrease" +msgstr "" + #. @node in Documentation/usage/updating.itely msgid "Updating files with convert-ly" msgstr "Obnovit soubory s convert-ly" @@ -5542,6 +6420,20 @@ msgstr "html" msgid "xelatex" msgstr "xelatex" +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +#, fuzzy +msgid "Sharing the table of contents" +msgstr "Obsah" + +#. @subsubheading in Documentation/usage/lilypond-book.itely +msgid "Exporting the ToC from LilyPond" +msgstr "" + +#. @subsubheading in Documentation/usage/lilypond-book.itely +msgid "Importing the ToC into LaTeX" +msgstr "" + #. @node in Documentation/usage/lilypond-book.itely msgid "Alternate methods of mixing text and music" msgstr "Náhradní způsoby míchání textu a not" @@ -5560,6 +6452,18 @@ msgstr "Vnější programy" msgid "Point and click" msgstr "Ukázat a klepnout" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +#, fuzzy +msgid "Enabling point and click" +msgstr "Ukázat a klepnout" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +#, fuzzy +msgid "Selective point-and-click" +msgstr "Ukázat a klepnout" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -5685,669 +6589,1551 @@ msgstr "Hledání chyb" msgid "Make and Makefiles" msgstr "Make a Makefiles" -#. Documentation/snippets/accordion-discant-symbols.ly:37 (variable) -msgid "discant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" +msgstr "" + +#. @top in Documentation/cs/macros.itexi +#, fuzzy +msgid "LilyPond -- \\\\TITLE\\\\" +msgstr "LilyPond -- \\\\TITLE\\\\" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "VÅ¡e dohromady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řeÅ¡ení chyb" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "VypuÅ¡těný materiál" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "PřezkouÅ¡ení taktů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Ligatury" +msgstr "Ligatura" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Dynamika" +msgstr "Hudební značky určující hlasitost (dynamika)" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Absolutní označení not" +msgstr "Absolute Oktavenbezeichnung" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" +msgstr "" + +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" +msgstr "Nastavit taktové označení a tóninu" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Notenkolumnen" +msgstr "Notové sloupce" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" +msgstr "Nastavit vlastnosti prostředí @code{\\\\with}" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" +msgstr "Nastavit vlastnosti prostředí @code{\\\\context}" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Soprán a violoncello" +msgstr "Soprán a violoncello" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" +msgstr "" + +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "Přesunout c2 z hlavního notového sloupce, aby Å¡lo sloučení" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Den Kontext finden" +msgstr "Arbeiten an Text-Dateien" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "break-visibility (unsichtbar machen)" +msgstr "break-visibility (udělat neviditelným)" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "color (Farbe)" +msgstr "Názvy barev X" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Automatické chování" +msgstr "Automatické chování" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Fingersatz" +msgstr "Prstoklady" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Dynamik" +msgstr "Hudební značky určující hlasitost (dynamika)" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "extra-offset (Genaues Positionieren)" +msgstr "'extra-offset, umd seine Position zu bestimmen." + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "force-hshift-Eigenschaft" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Pouze noty" +msgstr "Celá nota" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s přísluÅ¡nými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Orchestr, sbor a klavír" +msgstr "Orchestr, sbor a klavír" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" msgstr "Diskant" -#. Documentation/snippets/accordion-discant-symbols.ly:40 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) msgid "dot" msgstr "Tečka" -#. Documentation/snippets/accordion-discant-symbols.ly:46 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) msgid "16 voets register" msgstr "16 voets register" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) msgid "accBasson" msgstr "accBasson" -#. Documentation/snippets/accordion-discant-symbols.ly:53 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) msgid "een korig 8 en 16 voets register" msgstr "een·korig·8·en·16·voets·register" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) msgid "accBandon" msgstr "accBandon" -#. Documentation/snippets/accordion-discant-symbols.ly:62 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) msgid "accVCello" msgstr "accVCello" -#. Documentation/snippets/accordion-discant-symbols.ly:72 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) msgid "4-8-16 voets register" msgstr "4-8-16·voets·register" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) msgid "accHarmon" msgstr "accHarmon" -#. Documentation/snippets/accordion-discant-symbols.ly:83 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) msgid "accTrombon" msgstr "accPozoun" -#. Documentation/snippets/accordion-discant-symbols.ly:95 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) msgid "eenkorig 4 en 16 voets register" msgstr "eenkorig·4·en·16·voets·register" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) msgid "accOrgan" msgstr "accVarhany" -#. Documentation/snippets/accordion-discant-symbols.ly:104 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) msgid "accMaster" msgstr "accHlavní" -#. Documentation/snippets/accordion-discant-symbols.ly:118 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) msgid "accAccord" msgstr "accAkord" -#. Documentation/snippets/accordion-discant-symbols.ly:130 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) msgid "accMusette" msgstr "accMusette" -#. Documentation/snippets/accordion-discant-symbols.ly:140 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) msgid "accCeleste" msgstr "accCelesta" -#. Documentation/snippets/accordion-discant-symbols.ly:148 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) msgid "accOboe" msgstr "accHoboj" -#. Documentation/snippets/accordion-discant-symbols.ly:156 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) msgid "accClarin" msgstr "accKlarina" -#. Documentation/snippets/accordion-discant-symbols.ly:162 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) msgid "accPiccolo" msgstr "accPikola" -#. Documentation/snippets/accordion-discant-symbols.ly:168 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) msgid "accViolin" msgstr "accHousle" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:49 (variable) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) msgid "continuo" msgstr "Continuo" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:61 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) msgid "bassStaff" msgstr "BasováNotováOsnova" -#. Documentation/snippets/adding-drum-parts.ly:49 (variable) +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) msgid "drh" msgstr "drh" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) msgid "drl" msgstr "drl" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) msgid "timb" msgstr "timb" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:26 (variable) -#. Documentation/snippets/jazz-combo-template.ly:218 (context id) -#. Documentation/snippets/jazz-combo-template.ly:227 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) msgid "two" msgstr "dvě" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:27 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) msgid "threeTwo" msgstr "třiDvě" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) msgid "threeFour" msgstr "třiČtyři" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) msgid "splitStaffBarLineMarkup" msgstr "ZnačkaTaktováČáraRozděleníNotovéOsnovy" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) msgid "splitStaffBarLine" msgstr "TaktováČáraRozděleníNotovéOsnovy" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:32 (comment) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) +msgid "cueWhile" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) +#, fuzzy +msgid "flute" +msgstr "FlétnaNoty" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) +msgid "clarinet" +msgstr "Klarinette" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) +#, fuzzy +msgid "pianoRH" +msgstr "KlavírRH" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) +#, fuzzy +msgid "pianoLH" +msgstr "KlavíerLH" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) msgid "first, define a variable to hold the formatted date:" msgstr "Nejprve stanovte proměnnou pro formátované datum:" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (variable) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) msgid "date" msgstr "Datum" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) msgid "d-%m-%Y\\\" (localtime (current-time)))" msgstr "d-%m-%Y\\\" (localtime (current-time)))" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) msgid "use it in the title block:" msgstr "Použít pro název:" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:46 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) msgid "and use it in a \\markup block:" msgstr "a použít v prostředí \\markup" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:50 (variable) +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) msgid "voiceFive" msgstr "HlasPět" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:33 (comment) +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) +#, fuzzy +msgid "graceNotes" +msgstr "Ozdoby" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) msgid "Default layout:" msgstr "Výchozí rozvržení:" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:42 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) msgid "Reducing the minimum space below the staff and above the lyrics:" msgstr "Nejmenší velikost místa pod notovou osnovou a nad textem zpěvu:" -#. Documentation/snippets/aligning-bar-numbers.ly:59 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:45 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) msgid "Increase the size of the bar number by 2" msgstr "ZvětÅ¡it číslo taktu o činitele 2" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) msgid "Print a bar number every second measure" msgstr "Číslo taktu nastavit každý druhý takt" -#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) msgid "Center-align bar numbers" msgstr "Čísla taktů zarovnat na střed" -#. Documentation/snippets/aligning-bar-numbers.ly:67 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) msgid "Left-align bar numbers" msgstr "Čísla taktů zarovnat vlevo" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:103 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) +msgid "the RehearsalMark will be centered above the Clef" +msgstr "Umístit cvičnou značku do středu nad klíč" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) +msgid "the RehearsalMark will be centered above the TimeSignature" +msgstr "Umístit cvičnou značku do středu nad taktové označení" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) msgid "the RehearsalMark will be centered above the KeySignature" msgstr "Umístit cvičnou značku do středu nad předznamenání (tóninu)" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:114 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:126 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) msgid "" "the RehearsalMark will be aligned with the left edge of the KeySignature" msgstr "Zarovnat cvičnou značku s levým okrajem předznamenání (tóniny)" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:120 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) msgid "" "the RehearsalMark will be aligned with the right edge of the KeySignature" msgstr "Zarovnat cvičnou značku s pravým okrajem předznamenání (tóniny)" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) msgid "and then shifted right by one unit." msgstr "Posunout doprava o jednu jednotku." -#. Documentation/snippets/ancient-fonts.ly:36 (variable) -#. Documentation/snippets/ancient-fonts.ly:36 (context id) +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) msgid "upperStaff" msgstr "NotováOsnovaNahoře" -#. Documentation/snippets/ancient-fonts.ly:48 (comment) +#. Documentation/snippets/ancient-fonts.ly:52 (comment) msgid "\\break % 1 (8*1)" msgstr "\\break % 1 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:59 (comment) +#. Documentation/snippets/ancient-fonts.ly:63 (comment) msgid "\\break %2 (8*1)" msgstr "\\break·%2·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:71 (comment) +#. Documentation/snippets/ancient-fonts.ly:75 (comment) msgid "\\break % 3 (8*1)" msgstr "\\break·%·3·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:86 (comment) +#. Documentation/snippets/ancient-fonts.ly:90 (comment) msgid "\\break % 4 (8*1)" msgstr "\\break·%·4·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:95 (comment) -#. Documentation/snippets/ancient-fonts.ly:157 (comment) +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) msgid "\\break % 5 (8*1)" msgstr "\\break·%·5·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:109 (comment) -#. Documentation/snippets/ancient-fonts.ly:172 (comment) +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) msgid "\\break % 6 (8*1)" msgstr "\\break·%·6·(8*1" -#. Documentation/snippets/ancient-fonts.ly:118 (comment) -#. Documentation/snippets/ancient-fonts.ly:182 (comment) +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) msgid "\\break % 7 (8*1)" msgstr "\\break·%·7·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:125 (comment) +#. Documentation/snippets/ancient-fonts.ly:129 (comment) msgid "\\break % 8 (8*1)" msgstr "\\break·%·8·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:128 (comment) +#. Documentation/snippets/ancient-fonts.ly:132 (comment) msgid "\\break % 12 (32*1)" msgstr "\\break·%·12·(32*1)" -#. Documentation/snippets/ancient-fonts.ly:133 (variable) -#. Documentation/snippets/ancient-fonts.ly:133 (context id) +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) msgid "lowerStaff" msgstr "NotováOsnovaDole" -#. Documentation/snippets/ancient-fonts.ly:143 (comment) +#. Documentation/snippets/ancient-fonts.ly:147 (comment) msgid "\\break % 2 (16*1)" msgstr "\\break·%·2·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:148 (comment) +#. Documentation/snippets/ancient-fonts.ly:152 (comment) msgid "\\break % 4 (16*1)" msgstr "\\break·%·4·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:187 (comment) +#. Documentation/snippets/ancient-fonts.ly:191 (comment) msgid "\\break % 9 (16*1)" msgstr "\\break·%·9·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:189 (comment) +#. Documentation/snippets/ancient-fonts.ly:193 (comment) msgid "lig" msgstr "lig" -#. Documentation/snippets/ancient-fonts.ly:193 (comment) +#. Documentation/snippets/ancient-fonts.ly:197 (comment) msgid "\\break % 11 (16*1)" msgstr "\\break·%·11·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:204 (comment) +#. Documentation/snippets/ancient-fonts.ly:208 (comment) msgid "\\break % 12 (8*1)" msgstr "\\break·%·12·(8*1)" -#. Documentation/snippets/ancient-headword.ly:34 (context id) +#. Documentation/snippets/ancient-headword.ly:29 (context id) msgid "cantus" msgstr "Nápěv" -#. Documentation/snippets/ancient-headword.ly:36 (comment) +#. Documentation/snippets/ancient-headword.ly:31 (comment) msgid "Verse 1 — Salve, Regína" msgstr "Sloka 1 — Salve, Regína" -#. Documentation/snippets/ancient-headword.ly:47 (comment) +#. Documentation/snippets/ancient-headword.ly:42 (comment) msgid "Verse 2 — Vita, dulcédo" msgstr "Sloka 2 — Vita, dulcédo" -#. Documentation/snippets/ancient-headword.ly:48 (comment) +#. Documentation/snippets/ancient-headword.ly:43 (comment) msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" msgstr "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:49 (comment) +#. Documentation/snippets/ancient-headword.ly:44 (comment) msgid "\\divisioMinima" msgstr "\\divisioMinima" -#. Documentation/snippets/ancient-headword.ly:50 (comment) +#. Documentation/snippets/ancient-headword.ly:45 (comment) msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" msgstr "\\[ a\\melisma \\flexa g\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:51 (comment) +#. Documentation/snippets/ancient-headword.ly:46 (comment) msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" msgstr "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:52 (comment) +#. Documentation/snippets/ancient-headword.ly:47 (comment) msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" msgstr "\\[ e\\melisma \\flexa d\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:53 (comment) +#. Documentation/snippets/ancient-headword.ly:48 (comment) msgid "\\divisioMaior" msgstr "\\divisioMaior" -#. Documentation/snippets/ancient-headword.ly:54 (comment) +#. Documentation/snippets/ancient-headword.ly:49 (comment) msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" msgstr "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" -#. Documentation/snippets/ancient-headword.ly:55 (comment) +#. Documentation/snippets/ancient-headword.ly:50 (comment) msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" msgstr "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:56 (comment) +#. Documentation/snippets/ancient-headword.ly:51 (comment) msgid "\\finalis" msgstr "\\finalis" -#. Documentation/snippets/ancient-headword.ly:57 (comment) +#. Documentation/snippets/ancient-headword.ly:52 (comment) msgid "Verse 3 — Ad te clamámus" msgstr "Sloka 3 — Ad te clamámus" -#. Documentation/snippets/ancient-headword.ly:66 (comment) +#. Documentation/snippets/ancient-headword.ly:61 (comment) msgid "Verse 4 — Ad te suspirámus" msgstr "Sloka 4 — Ad te suspirámus" -#. Documentation/snippets/ancient-headword.ly:79 (comment) +#. Documentation/snippets/ancient-headword.ly:74 (comment) msgid "Verse 5 — Eia ergo, Advocáta nostra" msgstr "Sloka 5 — Eia ergo, Advocáta nostra" -#. Documentation/snippets/ancient-headword.ly:95 (comment) +#. Documentation/snippets/ancient-headword.ly:90 (comment) msgid "Verse 6 — Et Jesum" msgstr "Sloka 6 — Et Jesum" -#. Documentation/snippets/ancient-headword.ly:109 (comment) +#. Documentation/snippets/ancient-headword.ly:104 (comment) msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" msgstr "Sloka 7 ad finem — O clemens: O pia: O dulcis Virgo María" -#. Documentation/snippets/ancient-headword.ly:127 (comment) +#. Documentation/snippets/ancient-headword.ly:122 (comment) msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." msgstr "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:51 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) msgid "chant" msgstr "Zpěv" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) msgid "verba" msgstr "Verba" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:67 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:133 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:169 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:184 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:218 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:237 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) msgid "incipit" msgstr "Incipit" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -msgid "tight spacing" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +#, fuzzy +msgid "Set tight spacing" msgstr "Hustá sazba" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:76 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) msgid "turn off bar lines" msgstr "Vypnout taktové čáry" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:80 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) msgid "need this extra \\skip such that clef change comes" msgstr "Nezbytný dodatečný \\skip, aby nastala změna klíče" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:81 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) msgid "after bar line" msgstr "Po taktové čáře" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) -msgid "CHECK: no effect?" -msgstr "CHECK: žádný účinek?" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) msgid "turn bar lines on again" msgstr "Znovu zapnout taktové čáry" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:94 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +#, fuzzy +msgid "Setting printKeyCancellation back to #t must not" msgstr "FIXME: nastavení printKeyCancellation opět naf #t se nesmí" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) msgid "occur in the first bar after the incipit. Dto. for forceClef." msgstr "Objevuje se v prvním taktu po incipit. Právě tak pro forceClef." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) msgid "Therefore, we need an extra \\skip." msgstr "Proto je potřeba dodatečné \\skip" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:101 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) msgid "the actual music" msgstr "Vlastní noty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) msgid "let finis bar go through all staves" msgstr "Nastavit taktovou čáru finis (konec) přes vÅ¡echny notové osnovy" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:106 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) msgid "finis bar" msgstr "Taktová čára finis (konec)" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:110 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "discantusNotes" msgstr "DiskantNoty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:153 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:221 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "two bars" msgstr "Dva takty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:117 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "eight bars" msgstr "Osm taktů" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) msgid "one bar" msgstr "Jeden takt" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) msgid "discantusLyrics" msgstr "DiskantText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:146 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) msgid "altusNotes" msgstr "AltNoty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) msgid "seven bars" msgstr "Sedm taktů" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) msgid "altusLyrics" msgstr "AltText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:180 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) msgid "tenorNotes" msgstr "TenorNoty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) msgid "four bars" msgstr "Čtyři takty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) msgid "tenorLyrics" msgstr "TenorText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:214 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) msgid "bassusNotes" msgstr "BasNoty" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) msgid "bassusLyrics" msgstr "BasText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:247 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) msgid "choirStaff" msgstr "SborOsnova" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:269 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) msgid "no bars in staves" msgstr "Žádné taktové čáry v notových osnovách" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:272 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) msgid "incipit should not start with a start delimiter" msgstr "Incipit nemá začínat počátečním oddělovačem (svorkou notové osnovy)" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:278 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) msgid "no slurs" msgstr "Žádné legatové obloučky" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:281 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "Opatřit poznámkou příkaz níže \\\"\\remove\\\", aby bylo povoleno" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" msgstr "" -"zalomení řádků i na těch taktových čarách, kde noty taktovou čáru přesahují" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" -msgstr "do dalšího taktu. Příkaz v tomto malém příkladu notového zápisu" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +#, fuzzy +msgid "short scores, but especially for large scores you" msgstr "opatřen poznámkou není, ale obzvláště u rozsáhlejších notových zápisů" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +#, fuzzy +msgid "will typically yield better line breaking and improve" msgstr "se vyplatí lepší zalamování řádků a" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +#, fuzzy +msgid "overall spacing if you do not comment the command out." msgstr "zlepší se i celkové rozdělení not, použije-li se následující příkaz:" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" -msgstr "\\remove·\\\"Forbid_line_break_engraver\\\"" +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) +#, fuzzy +msgid "tick" +msgstr "Palička" + +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) +#, fuzzy +msgid "Use markup to center the chant on the page" +msgstr "'bar-size benutzen um die Höhe des Häkchens zu bestimmen," + +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) +#, fuzzy +msgid "centered" +msgstr "Čárka" + +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) +#, fuzzy +msgid "End score" +msgstr "Notový zápis" + +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) +#, fuzzy +msgid "End markup" +msgstr "Popisy" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:96 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) msgid "fragment" msgstr "Část" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:25 (comment) +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) +#, fuzzy +msgid "slurNotes" +msgstr "AltNoty" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) msgid "Default behavior" msgstr "Výchozí chování" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:31 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) msgid "Corrected to avoid collisions" msgstr "Opraveno kvůli vyhnutí se střetům" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "Zde vyjmout: Začít od 'bbarred.ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +#, fuzzy +msgid "C with slash -------------------------------" msgstr "PostScript -------------------------------" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" -msgstr "pScript" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" -msgstr "Změnit s B, pokud tomu dáváte přednost" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" +msgstr "" #. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "(B)show %%změnit s C, pokud tomu dáváte přednost" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) msgid "Span -----------------------------------" msgstr "Natahovač -----------------------------------" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" "Skladba: \\bbarre #\\\"Text\\\" { Noty } - Text = jakékoli číslo schránky" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "bbarre" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "ZruÅ¡it poznámku u tohoto řádku k obdržení plného barré" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) +#, fuzzy msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" "\"B\\\" $str }" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "Zde vyjmout --- Ukončit 'bbarred.ly' " -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" "Kopírovat a změnit poslední řádek pro plné barré. Přejmenujte je v 'fbarred." "ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" "Skladba: \\bbarre #\\\"Text\\\" { Noty } - Text = jakékoli číslo schránky" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "Nastavit automatické trámce pro vÅ¡echny notové osnovy" -#. Documentation/snippets/beam-endings-in-score-context.ly:61 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "Změnit trámce jen pro tuto notovou osnovu" @@ -6359,53 +8145,53 @@ msgstr "Převzít trámce z prostředí notového zápisu" msgid "Modify beaming for this voice only" msgstr "Změnit trámce jen pro tento hlas" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "Rytmus 2-3-2" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "Papír knihy, je převzat vÅ¡emi podřízenými částmi knihy" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" "Zápatí strany: přidat jiné heslo (tagline) pro poslední stranu této části" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "Pole hlavičky s autorským právem pouze na první straně knihy" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "Pole s heslem k části jen na poslední straně každé části" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "Pole s heslem jen na poslední straně každé části" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "Záhlaví knihy převzaté první částí knihy" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "Pro každou z částí je možné použít jinou funkci zalomení strany" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "Tento takt neobsahuje žádný \\breathe" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "Novodobý notový zápis:" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "" "ve výchozím nastavení, \\breathe používá rcomma, jako kdyby člověk napsal:" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" @@ -6413,1927 +8199,2414 @@ msgstr "" "\\override·BreathingSign·#'text·=·#(make-musicglyph-markup·\\\"scripts.rcomma" "\\\")" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "rvarcomma·a·lvarcomma jsou obměnami rcomma a lcomma" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" "Dobře si vÅ¡emněte, že: zde je potřeba použít prostředí notové osnovy, " "protože dole začíná prostředí hlasu" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "véčko" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "Vytvořit symbol" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "Nastavit značku pro dech znovu na výchozí" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "SponkaSVystředěnýmTextem" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "SponkaMolto" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "SponkaVíce" -#. Documentation/snippets/centering-markup-on-note-heads-automatically.ly:23 (variable) -msgid "textScriptCenterOnNote" -msgstr "PopisTextuNaStředNoty" - -#. Documentation/snippets/changing--flageolet-mark-size.ly:42 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:29 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "MalýFlažolet" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) +#, fuzzy +msgid "Default setting" +msgstr "Výchozí trámce" + +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "Následující je zde jen proto, aby byly nastaveny značky" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "pro styly akordů. Lze odstranit, pokud je" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "nepotřebujete používat." -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "Zde změnit pro jinou výchozí celkovou velikost notové osnovy." -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:183 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "{" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:185 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:203 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "}" -#. Documentation/snippets/chant-or-psalms-notation.ly:25 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) +#, fuzzy +msgid "sustainNotes" +msgstr "BasNoty" + +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "NožičkaZapnuta" -#. Documentation/snippets/chant-or-psalms-notation.ly:26 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "NožičkaVypnuta" -#. Documentation/snippets/chord-name-exceptions.ly:34 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "MojeAkordy" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +#, fuzzy +msgid "myMusic" +msgstr "Noty" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "Změnit maj9 a 6(add9)" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "Výjimečnými notami jsou akordy s textovými popisy" -#. Documentation/snippets/chord-name-exceptions.ly:36 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "chVýjimečnéNoty" -#. Documentation/snippets/chord-name-exceptions.ly:41 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "Převést noty na seznam a připojit ke stávajícím výjimkám." -#. Documentation/snippets/chord-name-exceptions.ly:42 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "chVýjimky" -#. Documentation/snippets/chord-name-exceptions.ly:46 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "Noty" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "MojeAkordy" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "Akordy" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) msgid "\\break" msgstr "\\break" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "SlokaJedna" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "SlokaDvě" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "Sop" -#. Documentation/snippets/clip-systems.ly:38 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "PůvodníNotovýZápis" -#. Documentation/snippets/clip-systems.ly:56 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "Každý výstřižek-oblast je dvojicí (START . END)" -#. Documentation/snippets/clip-systems.ly:57 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "přičemž oba jsou rytmickými místy" -#. Documentation/snippets/clip-systems.ly:59 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "(make-rhythmic-locations TAKT-ČÍSLO ČITATEL JMENOVATEL)" -#. Documentation/snippets/clip-systems.ly:60 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "znamená ČITATEL/JMENOVATEL celé noty v taktu s číslem TAKT-ČÍSLO" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "Přidělit výšky tónů určité barvě." -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "Porovnat výšky tónů a alterace (ne oktávy)." -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "piuF" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:92 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "NotyNahoru" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:99 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "NotyDolů" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:30 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "Ukázat svorku" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:32 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) msgid "hide text span" msgstr "Skrýt natahovač textu" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:36 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) msgid "show glissando" msgstr "Ukázat glissando" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +#, fuzzy +msgid "ten" +msgstr "Tenor" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +#, fuzzy +msgid "fifty" +msgstr "Pátý stupeň stupnice (pátý tón, kvinta)" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +#, fuzzy +msgid "finger" +msgstr "Pěvec" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) msgid "parenF" msgstr "SvorkaF" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) msgid "the hidden measure and bar line" msgstr "skrytý takt a taktová čára" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "\\cadenzaOn vypíná automatický výpočet čísel taktů" -#. Documentation/snippets/cross-staff-tremolos.ly:31 (context id) -#. Documentation/snippets/jazz-combo-template.ly:254 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" +msgstr "" + +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "Nahoře" -#. Documentation/snippets/cross-staff-tremolos.ly:36 (context id) -#. Documentation/snippets/jazz-combo-template.ly:260 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "Dole" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:54 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "Určit obecné vlastnosti nákresu pražce" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:54 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:75 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "Melodie" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:63 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "C dur pro kytaru, žádné barré, výchozí nastavení" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:64 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:114 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "Strohý styl" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:89 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "C dur pro kytaru, barré na třetím pražci" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:90 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "Podrobný styl" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "Velikost 1.0" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "Římské číslo pražce, prstoklad pod strunou, přímé barré" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "Obvyklá velikost" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "Ležící napříč, arabská čísla, M (ztlumit) pro němé struny" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "Žádné barré, číslo pražce dole nebo vlevo, malé písmo pro němé struny" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:113 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "Jednoduchý D akord" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "Větší tečky, tečky na střed, méně pražců" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "Označení pod" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) +msgid "Grob utilities" +msgstr "Grob - nástroje" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) +msgid "" +"These are literal rewrites of some C++ methods used by the ambitus engraver." +msgstr "" +"Toto jsou doslovné přepisy některých postupů (metod) C++, které používá " +"rytec ambitus." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +msgid "Ambitus data structure" +msgstr "Stavba dat ambitus" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +msgid "The class holds the various grobs that are created" +msgstr "Třída obsahuje různé kreslené předměty (grob)," + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +msgid "to print an ambitus:" +msgstr "které jsou vytvořeny pro to, aby sázely ambit (oblast):" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +msgid "- ambitus-group: the grob that groups all the components of an ambitus" +msgstr "" +"- ambitus-group: Kreslený předmět (grob), který seskupuje vÅ¡echny součásti " +"jednoho ambitu (oblasti)" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +msgid "(Ambitus grob);" +msgstr "(Ambitus grob - kreslený předmět ambitu);" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +msgid "- ambitus-line: the vertical line between the upper and lower ambitus" +msgstr "- ambitus-line: Svislá čára mezi horním a dolním ambitem" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +msgid "notes (AmbitusLine grob);" +msgstr "Noty (AmbitusLine grob);" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" +msgstr "- ambitus-up-note a ambitus-down-note: Hlavičky not a předznamenání" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +msgid "for the lower and upper note of the ambitus (see class" +msgstr "pro horní a dolní noty ambitu (podívejte se na třídu" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +msgid "below)." +msgstr " dole)." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +msgid "The other slots define the key and clef context of the engraver:" +msgstr "Jiná místa vymezují tóninu a prostředí klíče rytce:" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +msgid "- start-c0: position of middle c at the beginning of the piece. It" +msgstr "- start-c0: poloha jednočárkovaného C na začátku díla." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +msgid "is used to place the ambitus notes according to their pitch;" +msgstr "Používá se pro sázení not ambitu podle jejich výšky tónu" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) +msgid "- start-key-sig: the key signature at the beginning of the piece. It" +msgstr "- start-key-sig: Předznamenání (tónina) na začátku díla." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) +msgid "is used to determine if accidentals shall be printed next to ambitus" +msgstr "Používá se pro určení toho, zda se má předznamenání sázet vedle" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) +msgid "notes." +msgstr "not ambitu." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) +msgid "Accessor for the lower and upper note data of an ambitus" +msgstr "Přístup pro data dolní a horní noty ambitu" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +msgid "The class holds the grobs that are specific to ambitus" +msgstr "" +"Třída obsahuje kreslené předměty (grob), které jsou zvláštní " +"pro sind" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +msgid "(lower and upper) notes:" +msgstr "pro horní a dolní noty ambitu:" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +msgid "- head: an AmbitusNoteHead grob;" +msgstr "- head: AmbitusNoteHead-Grob" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" +msgstr "- accidental: AmbitusAccidental-Grob, který se třeba sází" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +msgid "to the ambitus note head." +msgstr "vedle hlavičky noty ambitu." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +msgid "Moreover:" +msgstr "Navíc:" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) +msgid "- pitch is the absolute pitch of the note" +msgstr "- pitch - pitch je naprostou výškou tónu noty" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) +msgid "- cause is the note event that causes this ambitus note, i.e. the lower" +msgstr "- cause je událostí noty, která je příčinou této noty ambitu, takže" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) +msgid "or upper note of the considered music sequence." +msgstr "dolní nebo horní noty pozorované notové sekvence." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) +msgid "Ambitus engraving logics" +msgstr "Logika rytce (funkce) ambitus" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) +msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." +msgstr "Přepis kódu @file{lily/ambitus-engraver.cc}." + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) +msgid "Ambitus engraver definition" +msgstr "Vymezení rytce ambitus" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) +msgid "Example" +msgstr "Příklad" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "Přidat hmatníky pro Cuatro" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:83 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "Pozor: Tato část patří do vlastního souboru" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "predefined-cuatro-fretboards.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "" "a je pomocí \\include začleněna do každé vaší skladby, do každého zdrojového " "souboru" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "CuatroLadění" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "dSexta" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" msgstr "dDur" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "aDurovýSeptakord" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "dDurovýSeptakord" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" msgstr "gDur" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:111 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "Konec samostatného souboru /predefined-cuatro-fretboards.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:116 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "PrimerosNázvy" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:120 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "Primeros" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +#, fuzzy +msgid "\\override FretBoard" +msgstr "Příkaz override" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "ZákladníMelodie" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:71 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "Musí být menší, než je současný počet linek notové osnovy" -#. Documentation/snippets/displaying-complex-chords.ly:17 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "fixA" -#. Documentation/snippets/displaying-complex-chords.ly:20 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "fixB" -#. Documentation/snippets/displaying-grob-ancestry.ly:127 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "\\\" (make-string 36 #\\-))" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "Nový hlas ( = \\voiceOne), skryt" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "Glissando připojeno k notovým hlavičkám" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "původní hlas s akordy přeřazen do jiné skupiny," -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "takže glissando je připojeno k a & c" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:17 (comment) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) +msgid "circle" +msgstr "" + +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "Dvě funkce pro natahovače (de)crescendo-, kde můžete výslovně uvést" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:18 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "text natahovače." -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:19 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) msgid "mycresc" msgstr "MojeCresc" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:25 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) msgid "mydecresc" msgstr "MojeDecresc" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:18 (comment) +#. Documentation/snippets/dynamics-text-spanner-postfix.ly:61 (comment) msgid "Some sample text dynamic spanners, to be used as postfix operators" msgstr "" "Nějaké dynamické natahovače textu jako příklad, které mohou být použity jako " "připojené operátory." -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:19 (variable) +#. Documentation/snippets/dynamics-text-spanner-postfix.ly:62 (variable) msgid "crpoco" -msgstr "crpoco" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:24 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" -"Nově vymezit stávající příkazy \\cresc, \\dim a \\decresc, aby se mohla " -"použít připojená skladba" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:25 (variable) -msgid "cresc" -msgstr "Cresc" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:30 (variable) -#. Documentation/snippets/fretted-headword.ly:56 (variable) -msgid "dim" -msgstr "Dim" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:35 (variable) -msgid "decresc" -msgstr "Decresc" +msgstr "crpoco" -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "NR 1.7 vydavatelské poznámky" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "Beethoven, Op. 31, No. 3" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "Klavírní sonáta 18, 2. věta, scherzo" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "Takty 9 - 14" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "Notová osnova RH" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "Notová osnova LH" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "PostScript je zapsanou obchodní značkou Adobe Systems Inc." -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "Příkladové noty" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "HorníHlas" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "DolníHlas" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "hoom" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "pah" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "setup·for·Request->Element·conversion.·Pouze pro odborníky" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:210 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:223 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:279 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:293 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "MojeNotováOsnova" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "Zadat výslovné NázvyNástrojů, aby se nevyskytly" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "žádné podivné účinky, když jsou vytvářena označení nástrojů" -#. Documentation/snippets/engravers-one-by-one.ly:142 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "pro klavírní notové osnovy" -#. Documentation/snippets/engravers-one-by-one.ly:151 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:237 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:250 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:263 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "MůjHlas" -#. Documentation/snippets/engravers-one-by-one.ly:166 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "musí přijít přede vÅ¡emi ostatními" -#. Documentation/snippets/engravers-one-by-one.ly:176 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "\\consists·\\\"Rest_engraver\\\"" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "L. v. Beethoven, Op. 49 no. 1" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "Klavírní sonáta 19 - \\\"Leichte Sonate\\\"" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "Takty 1 - 12" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "\\layout {" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "\\context {" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "\\Score" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "\\override SpacingSpanner #'base-shortest-duration =" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "#(ly:make-moment 1 20)" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "Sonáta II, Allemanda" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "Takty 1 - 88" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "Kódováno Neil Puttock; upraveno Carl Sorensen" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) msgid "extendOn" msgstr "extendOn" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "extendOff" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "violinoI" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "violinoII" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "violon" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:17 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:19 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "VystředěnýPopis" -#. Documentation/snippets/flamenco-notation.ly:54 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "Zde vyjmout ------- Začít od 'flamenco.ly'" -#. Documentation/snippets/flamenco-notation.ly:56 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "Ukazatelé textu" -#. Documentation/snippets/flamenco-notation.ly:57 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "abanico" -#. Documentation/snippets/flamenco-notation.ly:58 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "rasgueaso" -#. Documentation/snippets/flamenco-notation.ly:59 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "alzapua" -#. Documentation/snippets/flamenco-notation.ly:61 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "Symboly pro úder prsty" -#. Documentation/snippets/flamenco-notation.ly:62 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "ÚderNahoru" -#. Documentation/snippets/flamenco-notation.ly:72 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "ÚderDolů" -#. Documentation/snippets/flamenco-notation.ly:82 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "Symbol golpe" -#. Documentation/snippets/flamenco-notation.ly:83 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "golpe" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "ÚderNahoruGolpe" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "iNahoruGolpe" -#. Documentation/snippets/flamenco-notation.ly:100 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "Údery pro vÅ¡echny prsty" -#. Documentation/snippets/flamenco-notation.ly:101 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "pUp" msgstr "pNahoru" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "pDolů" -#. Documentation/snippets/flamenco-notation.ly:103 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) msgid "iUp" msgstr "iNahoru" -#. Documentation/snippets/flamenco-notation.ly:104 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "iDolů" -#. Documentation/snippets/flamenco-notation.ly:105 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) msgid "mUp" msgstr "mNahoru" -#. Documentation/snippets/flamenco-notation.ly:106 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "mDolů" -#. Documentation/snippets/flamenco-notation.ly:107 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) msgid "aUp" msgstr "aNahoru" -#. Documentation/snippets/flamenco-notation.ly:108 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "aDolů" -#. Documentation/snippets/flamenco-notation.ly:109 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) msgid "xUp" msgstr "xNahoru" -#. Documentation/snippets/flamenco-notation.ly:110 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "xDolů" -#. Documentation/snippets/flamenco-notation.ly:113 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "Velmi obratné :-)" -#. Documentation/snippets/flamenco-notation.ly:114 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "NtolaVypnuta" -#. Documentation/snippets/flamenco-notation.ly:119 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "NtolyVypnuty" -#. Documentation/snippets/flamenco-notation.ly:124 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "NtolyZapnuty" -#. Documentation/snippets/flamenco-notation.ly:129 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "HlavičkyVypnuty" -#. Documentation/snippets/flamenco-notation.ly:135 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "HlavičkyZapnuty" -#. Documentation/snippets/flamenco-notation.ly:141 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "Zde vyjmout ----- Ukončit 'flamenco.ly' " -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:155 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "Příklad 1" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:161 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "Příklad 2" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:167 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "Příklad 3" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:175 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "Příklad 4" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "Úder" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) msgid "example" msgstr "Příklad" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" -msgstr "" -"Rady z http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00215." -"html" - -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) msgid "lyr" msgstr "Text" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "Akord pro ukulele" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "Akord pro ukulele, s formátováním obsaženým v řetězci s vymezením" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "1.2 * velikost, 4 struny, čtyři pražce, prstoklad dole" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" "Velikost tečky .35 mezery mezi pražci, poloha tečky .55 mezery mezi pražci" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "Tyto akordy jsou v obvyklém natočení" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "110% výchozí velikosti" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "Zdvojené barré pro vyzkouÅ¡ení funkce barré" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "C dur pro kytaru, s capo na třetím pražci" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "Jednoduchý D akord, tloušťka pražců nahoře velká" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "Tyto akordy budou natočeny napříč" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "Tyto akordy budou natočeny napříč na hlavě" -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "Zkratky" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "Natočení prstokladu" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "sfol" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "sfor" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "sfod" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "sfou" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "Natočení čísel strun" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "ssnol" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "(dolů vpravo nahoru)" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "ssnou" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "ssnoud" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" msgstr "ssnor" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "Vymezit posun prstokladu" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "FO" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "Popisy" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" msgstr "Rit" #. Documentation/snippets/fretted-headword.ly:57 (variable) +#, fuzzy +msgid "dimin" +msgstr "Diminuendo (postupně zeslabovaný)" + +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "Andantino" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "BenMarcato" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "pdolce" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "NOTY %%%" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "T. 1" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "T. 2" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "T. 3" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "T. 4" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "T. 5" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "Konec taktu 6" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "T. 7" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "Začátek taktu 8" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "Konec taktu 8" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "Konec T. 9" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "T. 10" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "Začátek taktu 11" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "Konec taktu 11" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "Začátek taktu 2" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "Konec taktu 2" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "Nová část začíná zde v a moll" -#. Documentation/snippets/fretted-headword.ly:128 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "Začátek taktu 6" -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "Konec taktu 6" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "T. 8" -#. Documentation/snippets/fretted-headword.ly:135 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "Začátek taktu 9" -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "Konec taktu 9" -#. Documentation/snippets/fretted-headword.ly:140 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "T. 11" -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:180 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:58 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "Kytara" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:51 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +#, fuzzy +msgid "pinchedHarmonics" +msgstr "Flageolett" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +#, fuzzy +msgid "artificial harmonics (AH)" +msgstr "Flageolett" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +#, fuzzy +msgid "tapped harmonics (TH)" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +#, fuzzy +msgid "touch harmonics (TCH)" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +#, fuzzy +msgid "frettedStrings" +msgstr "Struny" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) +msgid "Create a flag stencil by looking up the glyph from the font" +msgstr "" + +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) +msgid "snippetexamplenotes" +msgstr "" + +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" "Tím budou posunuty o jednu mezeru mezi linkami notové osnovy nahoru od " "výchozí polohy" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:69 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "Nastavit mřížky" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "Odstup mřížky nastavit na jednu čtvrÅ¥ovou notu" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:77 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" "Tím budou posunuty doprava o polovinu mezery mezi linkami notové osnovy" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "Skryje notovou osnovu a noty, tudíž jsou viditelné pouze čáry mřížky" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "Slepé noty, aby noty byly rozděleny pravidelně" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "Vystředit čáry mřížky vodorovně pod notovými hlavičkami" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "Nastavit délku a polohu čar:" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" "Dvě mezery mezi linkami notové osnovy nad středovou čárou na skryté notové " "osnově" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" "Až čtyři mezery mezi linkami notové osnovy pod středovou čárou na viditelné " "notové osnově" -#. Documentation/snippets/guitar-slides.ly:20 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "Skrýt čísla pražců: užitečné pro zapsání pohybu z/k jakéhokoli" -#. Documentation/snippets/guitar-slides.ly:21 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "bodu hmatníku." -#. Documentation/snippets/guitar-slides.ly:22 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "SkrýtČíslaPražců" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "Buben" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "ŘeÅ¡ení 1: Používání jednoduchého popisu s vodorovným posunutím" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "Nevýhoda: Je to jen popis, ne dynamický příkaz, takže \\dynamicDown" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "atd. nebude účinkovat" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "semppPopis" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "ŘeÅ¡ení 2: Používání dynamického skriptu a posunutí" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "·\\once\\override ... #'X-offset = .." -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "Nevýhoda: \\once \\override se musí napsat pokaždé" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "semppK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "ŘeÅ¡ení 3: Dynamický skript posunout tak, že" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "přijde přes zarovnání na střed do správné polohy" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "Nevýhoda: Posunutí ponechá volné místo, kde nemůže stát nic jiného" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "semppT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "ŘeÅ¡ení 4: Dynamika, nastavení rozměrů dodatečného textu na 0" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "Nevýhoda: LilyPond věří, že \\\"sempre\\\" nezaujímá žádné místo" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "a může sem postavit jiné věci·-->·Střety" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "Nevýhoda: Zdá se, že jsou tu jeÅ¡tě nějaké okraje, takže to není" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "přesně to samé umístění, jako je bez dodatečného textu" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "semppM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "ŘeÅ¡ení 5: Dynamika s výslovným posunutím ve funkci Scheme" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "semppG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "ŘeÅ¡ení 6: Dynamika s výslovným zarovnáním. Projeví se jen tehdy," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "když je nastaven i X-offset!" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "Nevýhoda: Musí se nastavit DynamicText #'X-offset" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "Nevýhoda: Zarovnáno při pravém okraji dodatečného textu," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "ne na střed pp" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "semppMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "s" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) msgid "sMarkup" msgstr "sPopis" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "sK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "sT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "sM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "sG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "sMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "Nastaveno na chybně (##f) dává stejný výsledek" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:33 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:57 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:56 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "Harmonie" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "TOTO JE PŘÍKAZ PRO POSUNUTÍ NÁZVU AKORDU" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "TENTO ŘÁDEK JE DRUHÝM ZPÅ®SOBEM" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "TOTO JE PŘÍKAZ PRO POSUNUTÍ NÁKRESU PRAŽCE" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "ZDE JE DRUHÝ ZPÅ®SOB" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/hymn-template.ly:61 (variable) +#, fuzzy +msgid "Timeline" +msgstr "Udání času" + +#. Documentation/snippets/hymn-template.ly:93 (comment) +#, fuzzy +msgid "Start score" +msgstr "Skladba notového zápisu" + +#. Documentation/snippets/hymn-template.ly:95 (comment) +#, fuzzy +msgid "Start pianostaff" +msgstr "Das Klaviersystem" + +#. Documentation/snippets/hymn-template.ly:96 (comment) +msgid "Start Staff = RH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:99 (comment) +msgid "Start Voice = \\\"Soprano\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:103 (comment) +msgid "End Voice = \\\"Soprano\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:104 (comment) +#, fuzzy +msgid "Start Voice = \\\"Alto\\\"" +msgstr "Hlas \\\"1\\\"" + +#. Documentation/snippets/hymn-template.ly:108 (comment) +#, fuzzy +msgid "End Voice = \\\"Alto\\\"" +msgstr "Hlas \\\"1\\\"" + +#. Documentation/snippets/hymn-template.ly:109 (comment) +msgid "End Staff = RH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:110 (comment) +msgid "Start Staff = LH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:113 (comment) +msgid "Start Voice = \\\"Tenor\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:117 (comment) +#, fuzzy +msgid "End Voice = \\\"Tenor\\\"" +msgstr "Hlas \\\"1\\\"" + +#. Documentation/snippets/hymn-template.ly:118 (comment) +#, fuzzy +msgid "Start Voice = \\\"Bass\\\"" +msgstr "Hlas \\\"1\\\"" + +#. Documentation/snippets/hymn-template.ly:122 (comment) +#, fuzzy +msgid "End Voice = \\\"Bass\\\"" +msgstr "Hlas \\\"1\\\"" + +#. Documentation/snippets/hymn-template.ly:123 (comment) +msgid "End Staff = LH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:124 (comment) +#, fuzzy +msgid "End pianostaff" +msgstr "Das Klaviersystem" + +#. Documentation/snippets/hymn-template.ly:145 (comment) +msgid "Start paper block" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:146 (comment) +#, fuzzy +msgid "don't indent first system" +msgstr "keine einzelne erste Note" + +#. Documentation/snippets/hymn-template.ly:147 (comment) +#, fuzzy +msgid "shorten line length to suit music" +msgstr "Nastavit délku a polohu čar:" + +#. Documentation/snippets/hymn-template.ly:148 (comment) +msgid "End paper block" +msgstr "" + +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "discantusIncipit" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "altusIncipit" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "dva takty" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "tenorIncipit" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "bassusIncipit" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "Žádné taktové čáry u notových osnov nebo u textu písně" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "Dva další příkazy drží text písně mezi taktovými čarami" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "Opatřit poznámkou příkaz níže \\\"\\remove\\\", aby bylo povoleno" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "Zalomit také na těch taktových čarách, kde nota z taktu vyčnívá" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "do dalšího taktu. Příkazu je" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "opatřen poznámkou není, ale obzvláště u rozsáhlejších notových zápisů" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "se vyplatí lepší zalamování řádků a" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "zlepší se i celkové rozdělení not, použije-li se následující příkaz:" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "\\remove·\\\"Forbid_line_break_engraver\\\"" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "v tomto ladění vypnuta poznámka" -#. Documentation/snippets/jazz-combo-template.ly:65 (comment) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) +msgid "makePercent" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "#(set-global-staff-size·16)" -#. Documentation/snippets/jazz-combo-template.ly:68 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "Některá makra %%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:70 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "sl" -#. Documentation/snippets/jazz-combo-template.ly:74 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "nsl" -#. Documentation/snippets/jazz-combo-template.ly:78 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "crOn" -#. Documentation/snippets/jazz-combo-template.ly:79 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "crOff" -#. Documentation/snippets/jazz-combo-template.ly:81 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "Sem vložit název akordu." -#. Documentation/snippets/jazz-combo-template.ly:83 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "jazzAkordy" -#. Documentation/snippets/jazz-combo-template.ly:85 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "Druh taktu/Tónina %%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "Tónina" -#. Documentation/snippets/jazz-combo-template.ly:91 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "############·Hörner·############" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "------·Trubka·------" -#. Documentation/snippets/jazz-combo-template.ly:94 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "trpt" -#. Documentation/snippets/jazz-combo-template.ly:98 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "trpHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:101 (variable) -#. Documentation/snippets/jazz-combo-template.ly:281 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "Trubka" -#. Documentation/snippets/jazz-combo-template.ly:110 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "------·Altsaxophon·------" -#. Documentation/snippets/jazz-combo-template.ly:115 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "altHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:118 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "altSax" -#. Documentation/snippets/jazz-combo-template.ly:127 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "------ Barytonový saxofon ------" -#. Documentation/snippets/jazz-combo-template.ly:128 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "bari" -#. Documentation/snippets/jazz-combo-template.ly:136 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "bariHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:139 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "bariSax" -#. Documentation/snippets/jazz-combo-template.ly:148 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "------ Pozoun (trombón) ------" -#. Documentation/snippets/jazz-combo-template.ly:149 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "pos" -#. Documentation/snippets/jazz-combo-template.ly:153 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "PosHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:156 (variable) -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "Pozoun" -#. Documentation/snippets/jazz-combo-template.ly:165 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "############·Rhythmus-Abschnitt·#############" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "------ Kytara ------" -#. Documentation/snippets/jazz-combo-template.ly:168 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "gtr" -#. Documentation/snippets/jazz-combo-template.ly:176 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "gtrHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:189 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "------ Klavír ------" -#. Documentation/snippets/jazz-combo-template.ly:190 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "rhNahoře" -#. Documentation/snippets/jazz-combo-template.ly:195 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "rhDole" -#. Documentation/snippets/jazz-combo-template.ly:201 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "lhNahoře" -#. Documentation/snippets/jazz-combo-template.ly:206 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "lhDole" -#. Documentation/snippets/jazz-combo-template.ly:212 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "KlavírRH" -#. Documentation/snippets/jazz-combo-template.ly:221 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "KlavíerLH" -#. Documentation/snippets/jazz-combo-template.ly:239 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "------ Basová kytara ------" -#. Documentation/snippets/jazz-combo-template.ly:253 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "------ Bubny ------" -#. Documentation/snippets/jazz-combo-template.ly:267 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "BubnyObsah" -#. Documentation/snippets/jazz-combo-template.ly:276 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "VÅ¡e spojeno: %%%%%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:280 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "Roh" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "altsax" -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "bariakk" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "barsisax" -#. Documentation/snippets/jazz-combo-template.ly:289 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "Akordy" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "M. Ravel, Sonatine (1905)" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "První věta" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "DlouháFermáta" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "SopránNoty" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "Ženy" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "Muži" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "Zapnout nastavení makam" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "Basové figury" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "Z horní notové linky (Poloha 2) po střed (Poloha 0)" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "Ze středu po jednu nad středem (Poloha 1)" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "MluvitZapnuto" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:34 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "MluvitVypnuto" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "Candide, Voltaire" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:54 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "Poslední taktová čára není přeruÅ¡ena" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "normalPos" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:69 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "dashPlus" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "Rytmické notové skupiny (n-toly) vymezit tak, aby byly rozÅ¡iřitelné..." -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "aby přemostily vÅ¡echny předměty po další notu," -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "nebo aby přemostily jen prázdná místa" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:54 (variable) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +#, fuzzy +msgid "openStringHarmonics" +msgstr "Flageolett" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +#, fuzzy +msgid "first harmonic" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +#, fuzzy +msgid "second harmonic" +msgstr "Enharmonický" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +#, fuzzy +msgid "third harmonic" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +#, fuzzy +msgid "fourth harmonic" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +#, fuzzy +msgid "fifth harmonic" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +#, fuzzy +msgid "sixth harmonic" +msgstr "Flažoletové zvuky" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +#, fuzzy +msgid "seventh harmonic" +msgstr "Enharmonický" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +#, fuzzy +msgid "eighth harmonic" +msgstr "Enharmonický" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) +#, fuzzy +msgid "space for instrumentName" +msgstr "Tasteninstrumente" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) +msgid "space for shortInstrumentName" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "FlétnaNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:55 (variable) -msgid "oboeMusic" -msgstr "HobojNoty" +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) +msgid "Pitches as written on a manuscript for Clarinet in A" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) +msgid "are transposed to concert pitch." +msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:56 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "KlarinetNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:57 (variable) -msgid "bassoonMusic" -msgstr "FagotNoty" - -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:58 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "TrubkaNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:59 (variable) -msgid "tromboneMusic" -msgstr "PozounNoty" +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) +msgid "Key signature is often omitted for horns" +msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (variable) -msgid "hornIMusic" +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#, fuzzy +msgid "hornMusic" msgstr "RohNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (variable) -msgid "hornIIMusic" -msgstr "RohDruhýNoty" - -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:62 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "BicíNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "AltPrvníNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (variable) -msgid "altoILyrics" -msgstr "AltPrvnísText" - -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "AltDruhýNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:68 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) +msgid "altoILyrics" +msgstr "AltPrvnísText" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoIILyrics" msgstr "AltDruhýText" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "KlavírRHNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:72 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "KlavírLHNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "HouslePrvníNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "HousleDruhéNoty" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "ViolaNoty" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) +msgid "shortInstrumentName, midiInstrument, etc." +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) +msgid "may be set here as well" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) +msgid "Declare that written Middle C in the music" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) +msgid "to follow sounds a concert B flat, for" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) +msgid "output using sounded pitches such as MIDI." +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) +msgid "Print music for a B-flat clarinet" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) +msgid "applies to split up stems" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) +msgid "\\autoBeamOff % applies to combined up stems" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) +#, fuzzy +msgid "applies to down stems" +msgstr "gehört zu \\\"fas\\\"" + +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "Palička" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:51 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "Povolit v rytmických notových skupinách zalomení řádků" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "Povolit zalomení trámců na zalomeních řádků" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:60 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "Vložit do rytmické notové skupiny ruční zalomení řádku" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "Pedál" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "L. v. Beethoven" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "Klavírní sonáta 21 - Dem Grafen von Waldstein gewidmet" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "Chorál na taktech 34--40+" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "RH Hlas 1" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "(" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr ")" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "RH Hlas 2" -#. Documentation/snippets/polyphony-in-tablature.ly:57 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "tab" -#. Documentation/snippets/positioning-multi-measure-rests.ly:58 (comment) -msgid "MMR - Multi-Measure Rest" -msgstr "MMR - Vícetaktová pomlka (Multi Mesure Rest)" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:59 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +#, fuzzy +msgid "Multi-measure rests by default are set under the fourth line" msgstr "" "Vícetaktové pomlky jsou ve výchozím nastavení zapsány pod čtvrtou linkou" -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +#, fuzzy +msgid "They can be moved using an override" msgstr "Mohou být posunuty pomocí override" -#. Documentation/snippets/positioning-multi-measure-rests.ly:64 (comment) -msgid "A value of 0 is the default position;" -msgstr "Výchozí polohou je hodnota O" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:65 (comment) -msgid "the following trick moves the rest to the center line" -msgstr "Tímto se pomlka posune k střední lince" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +#, fuzzy +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "" "Vícetaktové pomlky v hlasech očíslovaných lichými čísly jsou pod " "nejvrchnější linkou" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +#, fuzzy +msgid "Even-numbered voices are under the bottom line" msgstr "" "Vícetaktové pomlky v hlasech očíslovaných sudými čísly jsou pod nejspodnější " "linkou" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "They remain separated even in empty measures" -msgstr "Zůstávají odděleny i v prázdných taktech" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +#, fuzzy +msgid "requires an override" +msgstr "Příkaz set oproti override" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "This brings them together even though there are two voices" -msgstr "Tímto jsou spojeny, i když jsou dvěma hlasy" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" +msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "" "Nastavit značku pro Segno jako cvičnou značku a případně přizpůsobit velikost" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "\\once·\\override·Score.RehearsalMark·#'font-size·=·#3" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "" "Nastavit značku pro Codu jako cvičnou značku a případně přizpůsobit velikost" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "Má být Coda na novém řádku?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "Coda NE na novém řádku: použít \\nobreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "Coda na novém řádku: NEPOUŽÍVAT \\nobreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "\\noBreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "Zde začíná ta lest!" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" "\\cadenzaOn potlačí počítání taktů a \\stopStaff odstraní notové linky." -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "Několik příkladů možného zobrazení textu" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "Text vyrovnán na řádku" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "==================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "Posunout text na požadované místo" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "\\once·\\override·TextScript·#'extra-offset·=·#'(·2·.·-3.5·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "|·s1*0^\\markup·{·D.S.·al·Coda·}·}" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "Text vystředěn" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "====================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "\\once·\\override·TextScript·#'extra-offset·=·#'(·6·.·-5.0·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "|·s1*0^\\markup·{·\\center-column·{·D.S.·\\\"al·Coda\\\"·}·}" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "Text a symboly vystředěny" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "===============================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" msgstr "" -"Posunout text na požadované místo a potřebu místa změnit tak, aby " -"při zarovnání textu bylo dosaženo těch nejlepších výsledků" +"Posunout text na požadované místo a potřebu místa změnit tak, aby při " +"zarovnání textu bylo dosaženo těch nejlepších výsledků" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "\\once·\\override·TextScript·#'extra-offset·=·#'(·8·.·-5.5·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" "Při nastavení počítadla unfold (rozprostřít) na vyšší hodnotu dojde ke " "zvětÅ¡ení místa bez notové osnovy" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "Pokračovat v počítání taktů a ukázat linky notové osnovy" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "Má být Coda na novém řádku?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "Coda NE na novém řádku: NEPOUŽÍVAT \\break" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "Coda na novém řádku: použít \\break" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "Klíč/Tónina" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "" "Nastavit značku pro Codu jako cvičnou značku a přizpůsobit velikost a " "umístění" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" "Dát značku pro Codu nad (houslový) klíč v závislosti na poloze Cody na řádku" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "Coda NE na novém řádku: použít:" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "\\once·\\override·Score.RehearsalMark·#'extra-offset·=·#'(·-2·.·1.75·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "Coda na novém řádku: použít:" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "Coda" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "Povolit sázení čísla prvního taktu" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:41 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "Zakázat čísla taktů na koncích řádků a jinde je povolit" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:48 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "Kreslit rámeček okolo následujících čísel taktů" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "Kreslit kroužek okolo následujících čísel taktů" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:53 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "Údaje pro metronom pod notovou osnovou" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "Cvičné značky pod notovou osnovou" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "Basový klarinet" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "Bicí souprava" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:67 (variable) -msgid "quoteTest" -msgstr "citaceTest" - -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:68 (comment) -msgid "french horn" -msgstr "Lesní roh" +#. Documentation/snippets/putting-lyrics-inside-the-staff.ly:24 (context id) +#, fuzzy +msgid "voc" +msgstr "Zpěv" -#. Documentation/snippets/quoting-another-voice.ly:74 (variable) +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) msgid "quoteMe" msgstr "citovatMě" -#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) msgid "original" msgstr "Původní" -#. Documentation/snippets/recorder-fingering-chart.ly:17 (comment) +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" +msgstr "citaceTest" + +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" +msgstr "Lesní roh" + +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "Rozsah pro Paetzoldovu kontrabasovou zobcovou flétnu" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:62 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "ZačátekPřírazNoty" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:68 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "KonecPřírazNoty" -#. Documentation/snippets/removing-the-first-empty-line.ly:79 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" "Aby se nastavení používalo vÅ¡eobecně, používat tento řádek (zruÅ¡it opatření " "poznámkou):" -#. Documentation/snippets/removing-the-first-empty-line.ly:80 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "\\override·VerticalAxisGroup·#'remove-first·=·##t" -#. Documentation/snippets/removing-the-first-empty-line.ly:89 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "Aby se nastavení používalo vÅ¡eobecně, opatřit tento řádek poznámkou, " -#. Documentation/snippets/removing-the-first-empty-line.ly:90 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "a používat řádek v bloku nahoře \\layout (zruÅ¡it opatření poznámkou)" @@ -8345,195 +10618,107 @@ msgstr "Výchozí trámce" msgid "Set new values for beam endings" msgstr "Nastavit nové hodnoty pro konce trámců" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "Makro pro sázení jednotlivých tahů" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "rs" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "Funkce pro sázení určitého počtu tahů" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "comp" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "Beethoven, Op. 81a" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "Klavírní sonáta 26 - Das Lebewohl" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "2. věta - Abwesenheit" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "Takty 31 - 34" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "\\override SpacingSpanner #'strict-grace-spacing = ##t" -#. Documentation/snippets/scheme-engraver-ambitus.ly:26 (comment) -msgid "Grob utilities" -msgstr "Grob - nástroje" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:28 (comment) -msgid "" -"These are literal rewrites of some C++ methods used by the ambitus engraver." -msgstr "" -"Toto jsou doslovné přepisy některých postupů (metod) C++, které používá " -"rytec ambitus." - -#. Documentation/snippets/scheme-engraver-ambitus.ly:63 (comment) -msgid "Ambitus data structure" -msgstr "Stavba dat ambitus" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:66 (comment) -msgid "The class holds the various grobs that are created" -msgstr "Třída obsahuje různé kreslené předměty (grob)," - -#. Documentation/snippets/scheme-engraver-ambitus.ly:67 (comment) -msgid "to print an ambitus:" -msgstr "které jsou vytvořeny pro to, aby sázely ambit (oblast):" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:68 (comment) -msgid "- ambitus-group: the grob that groups all the components of an ambitus" -msgstr "" -"- ambitus-group: Kreslený předmět (grob), který seskupuje vÅ¡echny součásti " -"jednoho ambitu (oblasti)" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:69 (comment) -msgid "(Ambitus grob);" -msgstr "(Ambitus grob - kreslený předmět ambitu);" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:70 (comment) -msgid "- ambitus-line: the vertical line between the upper and lower ambitus" -msgstr "- ambitus-line: Svislá čára mezi horním a dolním ambitem" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:71 (comment) -msgid "notes (AmbitusLine grob);" -msgstr "Noty (AmbitusLine grob);" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:72 (comment) -msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" -msgstr "- ambitus-up-note a ambitus-down-note: Hlavičky not a předznamenání" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:73 (comment) -msgid "for the lower and upper note of the ambitus (see class" -msgstr "pro horní a dolní noty ambitu (podívejte se na třídu" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:74 (comment) -msgid "below)." -msgstr " dole)." - -#. Documentation/snippets/scheme-engraver-ambitus.ly:75 (comment) -msgid "The other slots define the key and clef context of the engraver:" -msgstr "Jiná místa vymezují tóninu a prostředí klíče rytce:" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:76 (comment) -msgid "- start-c0: position of middle c at the beginning of the piece. It" -msgstr "- start-c0: poloha jednočárkovaného C na začátku díla." - -#. Documentation/snippets/scheme-engraver-ambitus.ly:77 (comment) -msgid "is used to place the ambitus notes according to their pitch;" -msgstr "Používá se pro sázení not ambitu podle jejich výšky tónu" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:78 (comment) -msgid "- start-key-sig: the key signature at the beginning of the piece. It" -msgstr "- start-key-sig: Předznamenání (tónina) na začátku díla." - -#. Documentation/snippets/scheme-engraver-ambitus.ly:79 (comment) -msgid "is used to determine if accidentals shall be printed next to ambitus" -msgstr "Používá se pro určení toho, zda se má předznamenání sázet vedle" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:80 (comment) -msgid "notes." -msgstr "not ambitu." - -#. Documentation/snippets/scheme-engraver-ambitus.ly:94 (comment) -msgid "Accessor for the lower and upper note data of an ambitus" -msgstr "Přístup pro data dolní a horní noty ambitu" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:102 (comment) -msgid "The class holds the grobs that are specific to ambitus" -msgstr "" -"Třída obsahuje kreslené předměty (grob), které jsou zvláštní " -"pro " -"sind" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:103 (comment) -msgid "(lower and upper) notes:" -msgstr "pro horní a dolní noty ambitu:" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:104 (comment) -msgid "- head: an AmbitusNoteHead grob;" -msgstr "- head: AmbitusNoteHead-Grob" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:105 (comment) -msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" -msgstr "- accidental: AmbitusAccidental-Grob, který se třeba sází" - -#. Documentation/snippets/scheme-engraver-ambitus.ly:106 (comment) -msgid "to the ambitus note head." -msgstr "vedle hlavičky noty ambitu." +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#, fuzzy +msgid "sopranonotes" +msgstr "Soprány" -#. Documentation/snippets/scheme-engraver-ambitus.ly:107 (comment) -msgid "Moreover:" -msgstr "Navíc:" +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) +#, fuzzy +msgid "sopranowords" +msgstr "SopránText" -#. Documentation/snippets/scheme-engraver-ambitus.ly:108 (comment) -msgid "- pitch is the absolute pitch of the note" -msgstr "- pitch - pitch je naprostou výškou tónu noty" +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) +#, fuzzy +msgid "altonotes" +msgstr "AltNoty" -#. Documentation/snippets/scheme-engraver-ambitus.ly:109 (comment) -msgid "- cause is the note event that causes this ambitus note, i.e. the lower" -msgstr "- cause je událostí noty, která je příčinou této noty ambitu, takže" +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) +#, fuzzy +msgid "altowords" +msgstr "AltText" -#. Documentation/snippets/scheme-engraver-ambitus.ly:110 (comment) -msgid "or upper note of the considered music sequence." -msgstr "dolní nebo horní noty pozorované notové sekvence." +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) +#, fuzzy +msgid "tenornotes" +msgstr "TenorNoty" -#. Documentation/snippets/scheme-engraver-ambitus.ly:123 (comment) -msgid "Ambitus engraving logics" -msgstr "Logika rytce (funkce) ambitus" +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) +#, fuzzy +msgid "tenorwords" +msgstr "TenorText" -#. Documentation/snippets/scheme-engraver-ambitus.ly:125 (comment) -msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." -msgstr "Přepis kódu @file{lily/ambitus-engraver.cc}." +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) +#, fuzzy +msgid "bassnotes" +msgstr "BasNoty" -#. Documentation/snippets/scheme-engraver-ambitus.ly:294 (comment) -msgid "Ambitus engraver definition" -msgstr "Vymezení rytce ambitus" +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) +#, fuzzy +msgid "basswords" +msgstr "BasText" -#. Documentation/snippets/scheme-engraver-ambitus.ly:319 (comment) -msgid "Example" -msgstr "Příklad" +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) +msgid "verse" +msgstr "Sloka" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "ŽádnáNožička" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "ŽádnoNotováHlavička" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "NulovýTrámec" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "ŘádekTabOsnovy" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" @@ -8541,168 +10726,165 @@ msgstr "" "Ukazuje vodorovný řádek. Svislé čáry (jako taktová čára) jsou napodobovány " "čarou mřížky" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" "Zakázat následující řádky (opatřit je #), aby byly během zápisu písně viděny " "hlavičky not" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" "Trámce mezi osminovými notami jsou používány pro kreslení čáry posunutí" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "Jak psát rychle čáry posunutí:" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "1. píše opakovaně 'c·c·c·c·c·c·c·c·|' přes celou délku písně" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "2. zruÅ¡it opatření řádku \\NoNoteHead poznámkou" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "3. sestavit" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "4. Označit polohy změnou směru posunutí/táhnutí." -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "V obrázku notového zápisu klepnout na místo začátku tahu nebo posunutí" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "(nad notovou hlavičkou se ukazovátko myÅ¡i změní na obrázek ručičky)." -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" "Ukazatel ve zdrojovém kódu se potom bude nacházet na požadovaném místě." -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "a) Pokud zde začíná posunutí, nahradit 'c' za 'e['" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "b) Pokud zde začíná táhnutí, nahradit 'c' za 's'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "5. Přepnout do režimu přepisování stisknutím klávesy \"Insert\"." -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "6. Pro táhnutí přepsat 'c' 's'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "7. Pro každé posunutí nahradit poslední 'c' za 'e]'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "8. Přepnout do režimu vkládání" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" msgstr "" -"9. Nyní by to mělo vypadat jako např. " -"(s·s·e[·c·|·c·c·c·c·c·c·c·c·|·c·c·c·c·c·c·e]" -"·s·s)" +"9. Nyní by to mělo vypadat jako např. (s·s·e[·c·|·c·c·c·c·c·c·c·c·|" +"·c·c·c·c·c·c·e]·s·s)" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "10 Povolit řádek \\NoNoteHead znovu (zruÅ¡it jeho opatření křížkem: #)" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "Melodie tahací harmoniky v tabulatorovém notovém zápisu" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "1. Použít kopii klavírní melodie dole" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" "2. Rozdělit klavírní melodii do částí táhnutí a posunutí podle " -"ŘádkuTabOsnovy (systemTabZeile), " -"který jste už udělal" +"ŘádkuTabOsnovy (systemTabZeile), který jste už udělal" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" "3. Pro každý řádek: Zdvojit řádek. První řádek zůstává označen nezměněn jako " -"doporučení, druhý " -"řádek bude změněn pomocí změnového papíru" +"doporučení, druhý řádek bude změněn pomocí změnového papíru" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "nebo makra 'conv2diaton·push.bsh'·a·'conv2diaton·pull.bsh'·" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "Rady:" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "- V jEdit Hledat a nahradit vybrat volbu: 'Keep Dialog'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "AccordionTabTwoCBesDur" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "Táhnutí 1" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "8·8·8·|" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "Posunutí 2" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "4····|" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "Táhnutí 3" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "2·r8·}" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "AkkordionTab" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "1. Použít kopii klavírní melodie nahoře" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" @@ -8710,79 +10892,79 @@ msgstr "" "3. Pro každý řádek: Zdvojit řádek. První řádek zůstává označen nezměněn jako " "doporučení, a potom" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "druhý řádek bude změněn pomocí změnového papíru" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "-" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "Svislá čára·(jako taktová čára) v" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" "rytmu basové notové osnovy (staffBassRhytm)·je napodobována čarou mřížky" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "Takt 4/4. Kolik dob v taktu" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "Následující řádek musí být přizpůsobován velmi ČASTO." -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "OsnovaHlas" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "aOsnovaHlas" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "OsnovaHarmonikaMel" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "Předznamenání (posuvky) pro každou notu," -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "ve zbytku taktu je nepřipomínat." -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "BasovýRytmus" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "TextBasovýRytmus" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "RytmusBasováNotováOsnova" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "BasováNotováOsnova" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" "Toto není rytmická notová osnova, protože je potřeba, aby bylo možné " "připojit text písně." -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "x.y" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" @@ -8790,742 +10972,843 @@ msgstr "" "Ukazuje vodorovný řádek. Svislá čára (jako taktová čára) je napodobována " "čarou mřížky" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" "Hledat 'grid' (mřížka) na této straně kvůli nalezení vÅ¡ech důležitých funkcí" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:28 (comment) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) +#, fuzzy +msgid "notes" +msgstr "not ambitu." + +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "Stejně tak \\flageolet, jen o něco menší" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:38 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "Druhá koruna (fermáta) se přehlíží!" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:41 (comment) -msgid "it works only if you wrap the note inside a chord. By default," -msgstr "Jde to jen tehdy, když je nota vsazena do akordu." - -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:42 (comment) -msgid "all articulations will be printed above, so you have to tweak" -msgstr "Ve výchozím nastavení jsou vÅ¡echny artikulace sázeny nad notou," - -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:43 (comment) -msgid "the direction." -msgstr "takže musíte opravovat směr." - -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "NR 1.5 Současně se objevující noty" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "L. v. Beethoven, Op. 111" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "Klavírní sonáta 32" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "2. věta: Arietta - Adagio molto semplice e cantabile" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "Takty 108 - 118" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) msgid "trillFlat" msgstr "TrylekB" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "RH Hlas 1" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "RH Hlas 2" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) msgid "LH staff" msgstr "Notová osnova LH" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "SlokaI" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "SlokaII" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "Sem vložit akordy pro názvy akordů a hmatníky" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "OsnovaMelodie" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "Zde zadejte noty pro melodii" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "HlasMelodie" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "title = \\\"Le Lac des Cygnes\\\"" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "subtitle = \\\"Danse Napolitaine\\\"" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "arranger = \\\"arr. Laurence Sardain\\\"" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "footer = \\\"Mutopia-2006/12/22-896\\\"" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "Trubka" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "Tamburína" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "TamburínaMidi" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "Prima" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "NahořeA" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "DoleA" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "" "Upozornění: použijte Score.Stem, abyste provedl nastavení pro celý notový " "zápis." -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "ZávorkaČísloStruny" -#. Documentation/snippets/string-quartet-template-simple.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "HouslePrvní" -#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "HousleDruhé" -#. Documentation/snippets/string-quartet-template-simple.ly:70 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "Viola" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:103 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "piece.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:104 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "(Toto je soubor se vÅ¡eobecným vymezením)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:111 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "HouslePrvní" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:116 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:122 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "**********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:117 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "HousleDruhé" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:123 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "Viola" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:130 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "Violoncello" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "**********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "Toto jsou další soubory, které musíte mít uloženy ve svém počítači" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:149 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "score.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "(Toto je hlavní soubor)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#, fuzzy +msgid "uncomment the line below when using a separate file" +msgstr "" +"{ ZruÅ¡it opatření tohoto bloku poznámkou, když se používají samostatné " +"soubory" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" msgstr "" -"\\include \\\"piece.ly\\\" %%% ZruÅ¡it opatření tohoto řádku " -"poznámkou, když " -"se používá samostatný soubor" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:162 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "" "{ ZruÅ¡it opatření tohoto bloku poznámkou, když se používají samostatné " "soubory" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:164 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "vn1.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "(Toto je soubor s hlasem prvních houslí)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "vn2.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "(Toto je soubor s hlasem druhých houslí)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:184 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "vla.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:185 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "(Toto je soubor s hlasem violy)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:194 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "vlc.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:195 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "(Toto je soubor s hlasem violoncella)" -#. Documentation/snippets/sub-dividing-beams.ly:84 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "Nastavit délku podskupiny trámce jako osminovou notu" -#. Documentation/snippets/sub-dividing-beams.ly:88 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "Nastavit délku podskupiny trámce jako Å¡estnáctinovou notu" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "Přehlížet" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "NR 1.8 Text" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "L. v. Beethoven, Op. 110" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "Klavírní sonáta 31" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "Takty 1 - 7" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) msgid "RH staff" msgstr "Notová osnova RH" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" "Nový příkaz pro přidání rámečku se třemi stranami (severní, západní a jižní " "strana)" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "Založeno na příkazu pro lisovnici rámečku, vymezeno v scm/stencil.scm" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "Pozor: \\\";\\\" se používá ve Scheme pro opatření řádku poznámkou." -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" -msgstr "" -"Odpovídající příkaz pro popis, založený na příkzu \\box, " -"vymezený" +msgstr "Odpovídající příkaz pro popis, založený na příkzu \\box, vymezený" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "v scm/define-markup-commands.scm" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "VyzkouÅ¡et:" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:25 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "Změnit trvale styl" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:31 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "Vrátit zpět na výchozí styl:" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:35 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "Styl single-digit (jednoduché číslo) pro další taktové označení" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "Učinit taktové čáry notových osnov neviditelnými" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "incipitDiskant" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "IncipitAlt" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "IncipitTenor" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "IncipitBas" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" "StaffGroup se používá namísto ChoirStaff pro získání taktových čar mezi " "notovými osnovami" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" "Text písně basů držet mimo StaffGroup, kvůli vyvarování se taktových čar" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "mezi textem." -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "Následující tři příkazy text udržují mezi taktovými čarami" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:163 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" +"zalomení řádků i na těch taktových čarách, kde noty taktovou čáru přesahují" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "do dalšího taktu. Příkaz v tomto malém příkladu notového zápisu" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "OdrážkaNoty" -#. Documentation/snippets/tweaking-clef-properties.ly:150 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "Výchozí houslový klíč" -#. Documentation/snippets/tweaking-clef-properties.ly:152 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "Výchozí basový klíč" -#. Documentation/snippets/tweaking-clef-properties.ly:157 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "Výchozí barytonový klíč" -#. Documentation/snippets/tweaking-clef-properties.ly:162 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "Výchozí sborový tenorový klíč" -#. Documentation/snippets/tweaking-clef-properties.ly:168 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "Neobvyklý klíč" -#. Documentation/snippets/tweaking-clef-properties.ly:174 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "Následující změny klíče nezachovávat" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "Obvyklý vztah mezi klíči a notami:" -#. Documentation/snippets/tweaking-clef-properties.ly:190 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "Návrat k obvyklému klíči:" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) msgid "Abreviations" msgstr "Zkratky" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "db" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "dub" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "dubetc" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "ub" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "udb" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "udbetc" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "fermaTa" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "accel" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "ritar" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "Struny" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "svib" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "pvib" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "mvib" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "sulp" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "norm" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "quatre" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "Posunutí not" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "shift" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "shifta" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "shiftb" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "Sponka" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "aniente = \\\"a niente\\\"" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "aniente" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "tupletbp" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "Praporek [Hlavička noty - Nožička]" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "ŽádnýPraporek" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "Funkce" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "Nástroje" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "HousleSólo" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "Takt 1" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "Takt 2" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "Takt 3" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "Takt 4" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "Takt 5" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "Takt 6" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "\\featherDurations #(ly:make-moment 2 3)" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "Takt 7" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "Takt 8" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "Takt 9" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "Notový zápis" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:73 (comment) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) +#, fuzzy +msgid "testnotes" +msgstr "SlokyNoty" + +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "Ukázat kreslené předměty (grobs) pro každou notovou hlavičku:" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:74 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "\\override NoteHead #'before-line-breaking = #display-grobs" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:76 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "nebo jen pro jeden:" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "Rovnoběžník" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "MojeNotovéHlavičky" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "ObvykléNotovéHlavičky" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "Konec verbatim -- Tato poznámka je lstí k zabránění texinfo.tex" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "v přeplnění se neevropskými podskupinami UTF-8" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" "Tento soubor upravit pomocí editoru, který dokáže ukládat v Unicode, jakým " -"jsou " -"například GVIM, GEDIT, Emacs" +"jsou například GVIM, GEDIT, Emacs" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "Cyrilické písmo" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "Bulharské" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "Hebrejské" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "Japonské" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "\\\"a·legal·song·to·you\\\"" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "Portugalské" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) msgid "upline" msgstr "upline" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "LeváZávorka" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "PraváZávorka" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "TextDolů" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "TextNahoru" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "PřeskočitČtyři" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "TextA" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "TextB" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "TextC" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "TextD" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "m" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:65 (variable) -msgid "sopMusic" -msgstr "SopránNoty" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "SopránText" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:86 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:96 (context id) -msgid "women" -msgstr "Ženy" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:104 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:108 (context id) -msgid "men" -msgstr "Muži" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" +msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:133 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:108 (comment) -#. Documentation/snippets/vocal-ensemble-template.ly:126 (comment) -msgid "a little smaller so lyrics" -msgstr "o něco menší, aby text" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" +msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:134 (comment) #. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) -#. Documentation/snippets/vocal-ensemble-template.ly:127 (comment) -msgid "can be closer to the staff" -msgstr "mohl být blíže k notové osnově" - -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (comment) -msgid "we could remove the line about this with the line below, since we want" +#, fuzzy +msgid "we could remove the line about this with the line below, since" msgstr "Podařilo se odstranit řádek nad řádkem pod, protože" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:93 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +#, fuzzy +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "text pro alt má být tak jako tak pod altovým hlasem." -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:94 (comment) -msgid "\\new Lyrics \\lyricsto altos \\altoWords" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) +#, fuzzy +msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "\\new·Lyrics·\\lyricsto·altos·\\altoWords" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "Podařilo se nahradit řádek nad řádkem pod." -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:104 (comment) -msgid "\\new Lyrics \\lyricsto basses \\bassWords" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) +#, fuzzy +msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "\\new·Lyrics·\\lyricsto·basses·\\bassWords" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) +#, fuzzy +msgid "refrain" +msgstr "RefrénB" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) +#, fuzzy +msgid "SoloNotes" +msgstr "TrubkaNoty" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) +#, fuzzy +msgid "SoloLyrics" +msgstr "SoprDvaText" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) +#, fuzzy +msgid "SopranoNotes" +msgstr "TrubkaNoty" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) +#, fuzzy +msgid "SopranoLyrics" +msgstr "SopránText" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) +#, fuzzy +msgid "BassNotes" +msgstr "BasNoty" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) +#, fuzzy +msgid "BassLyrics" +msgstr "BasText" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) +#, fuzzy +msgid "SoloVoice" +msgstr "HorníHlas" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) +#, fuzzy +msgid "SopranoVoice" +msgstr "SopránNoty" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) +#, fuzzy +msgid "BassVoice" +msgstr "BasNoty" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) +msgid "these lines prevent empty staves from being printed" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +#, fuzzy +msgid "make first bar number be shown" +msgstr "Povolit sázení čísla prvního taktu" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +#, fuzzy +msgid "put fermata closer to staff" +msgstr "mohl být blíže k notové osnově" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "VoltaNoty" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:24 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "VoltaAdLib" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "Tschaikowsky" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "Suita louskáček: VII: Tanec Panových fléten" @@ -9547,6 +11830,198 @@ msgstr "Poznámky pod čarou" msgid "Table of Contents" msgstr "Obsah" +#~ msgid "coloredheads" +#~ msgstr "Hlavičky barev" + +#~ msgid "noclef" +#~ msgstr "Neklíč" + +#~ msgid "Colorado" +#~ msgstr "Colorado" + +#~ msgid "Engraving" +#~ msgstr "Notová sazba" + +#~ msgid "dummy action to deal with parser lookahead" +#~ msgstr "Nepodstatný krok pro vyrovnání se s odhadem parseru" + +#~ msgid "Music function syntax" +#~ msgstr "Skladba hudební funkce" + +#~ msgid "Void functions" +#~ msgstr "Prázdné funkce" + +#~ msgid "Voice \\\"1\\\" Voice \\\"2\\\"" +#~ msgstr "Hlas \\\"1\\\" Hlas \\\"2\\\"" + +#~ msgid "versewords" +#~ msgstr "SlokyText" + +#~ msgid "refrainnotesA" +#~ msgstr "RefrénNotyA" + +#~ msgid "refrainnotesB" +#~ msgstr "RefrénNotyB" + +#~ msgid "refrainwordsA" +#~ msgstr "RefrénTextA" + +#~ msgid "refrainwordsB" +#~ msgstr "RefrénTextB" + +#~ msgid "refrainA" +#~ msgstr "RefrénA" + +#~ msgid "left-padding and right-padding" +#~ msgstr "left-padding (posunutí doprava) a right-padding (posunutí doleva)" + +#~ msgid "Avoiding tweaks with slower processing" +#~ msgstr "Vyhnout se drobným úpravám pomocí pomalejšího zpracování" + +#~ msgid "not printed" +#~ msgstr "netiÅ¡těno" + +#~ msgid "Custom titles" +#~ msgstr "Vlastní názvy" + +#~ msgid "this does nothing" +#~ msgstr "To nedělá vůbec nic" + +#~ msgid "as does this break" +#~ msgstr "jako to dělá toto zalomení" + +#~ msgid "now the break is allowed" +#~ msgstr "nyní je zalomení dovoleno" + +#~ msgid "Since space is small and there is no minimum-distance, the distance" +#~ msgstr "Protože místa je málo a není tu ani nejmenší mezera, odstup," + +#~ msgid "between this staff and the next will be determined by padding." +#~ msgstr "" +#~ "mezi notovou osnovou a dalším předmětem se rozhodne pomocí posunutí." + +#~ msgid "Since space is small and nothing sticks out very far, the distance" +#~ msgstr "Protože místa je málo a nic nepřečnívá, odstup" + +#~ msgid "By default, Lyrics are placed close together. Here, we allow them to" +#~ msgstr "" +#~ "Ve výchozím nastavení jsou písňové texty umístěny úzce pohromadě. Zde " +#~ "smějí" + +#~ msgid "be stretched more widely." +#~ msgstr "zabrat o něco více místa." + +#~ msgid "Paper and pages" +#~ msgstr "Papír a strany" + +#~ msgid "Paper size" +#~ msgstr "Velikost papíru" + +#~ msgid "Page formatting" +#~ msgstr "Formátování stran" + +#~ msgid "Vertical dimensions" +#~ msgstr "Svislé rozměry" + +#~ msgid "Horizontal dimensions" +#~ msgstr "Vodorovné rozměry" + +#~ msgid "Music layout" +#~ msgstr "Rozvržení not" + +#~ msgid "Vertical spacing inside a system" +#~ msgstr "Svislé odstupy uvnitř notové osnovy" + +#~ msgid "the RehearsalMark will be centered above the Key Signature" +#~ msgstr "Umístit cvičnou značku do středu nad předznamenání (tóninu)" + +#~ msgid "Aligning contexts" +#~ msgstr "Zarovnat prostředí vedle sebe" + +#~ msgid "Common argument types" +#~ msgstr "Běžné druhy agumentů" + +#~ msgid "CHECK: no effect?" +#~ msgstr "CHECK: žádný účinek?" + +#~ msgid "pScript" +#~ msgstr "pScript" + +#~ msgid "change with B if you prefer" +#~ msgstr "Změnit s B, pokud tomu dáváte přednost" + +#~ msgid "(B)show %%change with C if you prefer" +#~ msgstr "(B)show %%změnit s C, pokud tomu dáváte přednost" + +#~ msgid "textScriptCenterOnNote" +#~ msgstr "PopisTextuNaStředNoty" + +#~ msgid "" +#~ "Redefine the existing \\cresc, \\dim and \\decresc commands to use " +#~ "postfix syntax" +#~ msgstr "" +#~ "Nově vymezit stávající příkazy \\cresc, \\dim a \\decresc, aby se mohla " +#~ "použít připojená skladba" + +#~ msgid "cresc" +#~ msgstr "Cresc" + +#~ msgid "dim" +#~ msgstr "Dim" + +#~ msgid "decresc" +#~ msgstr "Decresc" + +#~ msgid "" +#~ "Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" +#~ "msg00215.html" +#~ msgstr "" +#~ "Rady z http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00215." +#~ "html" + +#~ msgid "oboeMusic" +#~ msgstr "HobojNoty" + +#~ msgid "bassoonMusic" +#~ msgstr "FagotNoty" + +#~ msgid "tromboneMusic" +#~ msgstr "PozounNoty" + +#~ msgid "hornIIMusic" +#~ msgstr "RohDruhýNoty" + +#~ msgid "MMR - Multi-Measure Rest" +#~ msgstr "MMR - Vícetaktová pomlka (Multi Mesure Rest)" + +#~ msgid "A value of 0 is the default position;" +#~ msgstr "Výchozí polohou je hodnota O" + +#~ msgid "They remain separated even in empty measures" +#~ msgstr "Zůstávají odděleny i v prázdných taktech" + +#~ msgid "This brings them together even though there are two voices" +#~ msgstr "Tímto jsou spojeny, i když jsou dvěma hlasy" + +#~ msgid "it works only if you wrap the note inside a chord. By default," +#~ msgstr "Jde to jen tehdy, když je nota vsazena do akordu." + +#~ msgid "all articulations will be printed above, so you have to tweak" +#~ msgstr "Ve výchozím nastavení jsou vÅ¡echny artikulace sázeny nad notou," + +#~ msgid "the direction." +#~ msgstr "takže musíte opravovat směr." + +#~ msgid "" +#~ "\\include \\\"piece.ly\\\" %%% uncomment this line when using " +#~ "a separate file" +#~ msgstr "" +#~ "\\include \\\"piece.ly\\\" %%% ZruÅ¡it opatření tohoto řádku " +#~ "poznámkou, když se používá samostatný soubor" + +#~ msgid "a little smaller so lyrics" +#~ msgstr "o něco menší, aby text" + #~ msgid "" #~ "This section has not been translated yet; please refer to the manual in " #~ "English." @@ -9626,9 +12101,6 @@ msgstr "Obsah" #~ msgid "Minimal examples" #~ msgstr "Minimalbeispiele" -#~ msgid "Tweaking with Scheme" -#~ msgstr "Optimierungen mit Scheme" - #~ msgid "GNU LilyPond --- Application Usage" #~ msgstr "GNU LilyPond -- Die Programmbenutzung" @@ -9668,9 +12140,6 @@ msgstr "Obsah" #~ msgid "Compiling outside the source tree" #~ msgstr "Außerhalb des Quellbaums übersetzen" -#~ msgid "Useful @command{make} variables" -#~ msgstr "Nützliche @command{make}-Variablen" - #~ msgid "Building documentation" #~ msgstr "Die Dokumentation übersetzen" @@ -9740,15 +12209,9 @@ msgstr "Obsah" #~ msgid "not strictly necessary, but a good reminder" #~ msgstr "nicht unbdingt nötig, aber gut zu erinnern" -#~ msgid "clarinet" -#~ msgstr "Klarinette" - #~ msgid "Writing pitches" #~ msgstr "Tonhöhen setzen" -#~ msgid "Absolute octave entry" -#~ msgstr "Absolute Oktavenbezeichnung" - #~ msgid "Relative octave entry" #~ msgstr "Relative Oktavenbezeichnung" @@ -9930,9 +12393,6 @@ msgstr "Obsah" #~ msgid "Beams" #~ msgstr "Balken" -#~ msgid "Automatic beams" -#~ msgstr "Automatische Balken" - #~ msgid "Setting automatic beam behavior" #~ msgstr "Einstellung von automatischen Balken" @@ -10032,9 +12492,6 @@ msgstr "Obsah" #~ msgid "single first note" #~ msgstr "einzelne erste Note" -#~ msgid "no single first note" -#~ msgstr "keine einzelne erste Note" - #~ msgid "instrumentOne" #~ msgstr "InstrumentEins" @@ -10152,9 +12609,6 @@ msgstr "Obsah" #~ msgid "Text spanners" #~ msgstr "Text mit Verbindungslinien" -#~ msgid "Text marks" -#~ msgstr "Textartige Zeichen" - #~ msgid "Formatting text" #~ msgstr "Text formatieren" @@ -10209,9 +12663,6 @@ msgstr "Obsah" #~ msgid "can be removed if space on the page is tight" #~ msgstr "Kann entfernt werden, wenn wenig Platz auf der Seite ist" -#~ msgid "adds vertical spacing between verses" -#~ msgstr "Vertikaler Abstand zwischen Strophen" - #~ msgid "adds horizontal spacing between columns;" #~ msgstr "Horizontalen Abstand zwischen Spalten hinzufügen;" @@ -10251,9 +12702,6 @@ msgstr "Obsah" #~ msgid "Ancient vocal music" #~ msgstr "Alte Vokalmusik" -#~ msgid "Lyrics explained" -#~ msgstr "Was ist Gesangtext" - #~ msgid "Working with lyrics and variables" #~ msgstr "Mit Gesangtexten und Bezeichnern arbeiten" @@ -10263,9 +12711,6 @@ msgstr "Obsah" #~ msgid "Manual syllable durations" #~ msgstr "Manuelle Silbendauer" -#~ msgid "Multiple syllables to one note" -#~ msgstr "Mehrere Silben zu einer Note" - #~ msgid "Multiple notes to one syllable" #~ msgstr "Mehrere Noten zu einer Silbe" @@ -10383,9 +12828,6 @@ msgstr "Obsah" #~ msgid "Bowing indications" #~ msgstr "Bezeichnung des Bogens" -#~ msgid "Harmonics" -#~ msgstr "Flageolett" - #~ msgid "Snap (Bartok) pizzicato" #~ msgstr "Bartók-Pizzicato" @@ -10419,9 +12861,6 @@ msgstr "Obsah" #~ msgid "Fret diagram markups" #~ msgstr "Bund-Diagramm-Beschriftung" -#~ msgid "Predefined fret diagrams" -#~ msgstr "Vordefinierte Bund-Diagramme" - #~ msgid "Automatic fret diagrams" #~ msgstr "Automatische Bund-Diagramme" @@ -10521,7 +12960,7 @@ msgstr "Obsah" #~ msgstr "Dudelsack" #~ msgid "Bagpipe definitions" -#~ msgstr "Dudelsack-Defintionen" +#~ msgstr "Dudelsack-Definitionen" #~ msgid "Bagpipe example" #~ msgstr "Dudelsack-Beispiele" @@ -10739,9 +13178,6 @@ msgstr "Obsah" #~ msgid "Repeat syntax" #~ msgstr "Die Syntax der Wiederholungen" -#~ msgid "Manual repeat commands" -#~ msgstr "Manuelle Wiederholungsbefehle" - #~ msgid "Other repeats" #~ msgstr "Andere Wiederholungen" @@ -11011,12 +13447,6 @@ msgstr "Obsah" #~ msgid "TODO moved into scheme" #~ msgstr "TODO nach Scheme verschoben" -#~ msgid "Use 'bar-size to control the height of the tick," -#~ msgstr "'bar-size benutzen um die Höhe des Häkchens zu bestimmen," - -#~ msgid "and 'extra-offset to determine its position." -#~ msgstr "'extra-offset, umd seine Position zu bestimmen." - #~ msgid "With 'extra-offset set to zero, the tick will be" #~ msgstr "Mit 'extra-offset auf Null gesetzt, wird das Häkchen" @@ -11035,9 +13465,6 @@ msgstr "Obsah" #~ msgid "bar line at the end." #~ msgstr "Taktlinie am Ende setzen" -#~ msgid "applies to \\\"fas\\\"" -#~ msgstr "gehört zu \\\"fas\\\"" - #~ msgid "GNU LilyPond -- Das Notationsprogramm" #~ msgstr "GNU LilyPond -- Das Notationsprogramm" @@ -11072,18 +13499,12 @@ msgstr "Obsah" #~ msgid "\\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)" #~ msgstr "\\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)" -#~ msgid "force-hshift-Eigenschaft" -#~ msgstr "force-hshift-Eigenschaft" - #~ msgid "Laissez vibrer ties" #~ msgstr "Laissez-vibrer-Bögen" #~ msgid "Create 9/8 split into 2/4 + 5/8" #~ msgstr "Erstelle 9/8 als 2/4 + 5/8" -#~ msgid "Keyboard instruments" -#~ msgstr "Tasteninstrumente" - #~ msgid "Bowed instruments" #~ msgstr "Streichinstrumente" @@ -11131,9 +13552,6 @@ msgstr "Obsah" #~ msgid "Collision Resolution" #~ msgstr "Auflösung von Zusammenstößen" -#~ msgid "The piano staff" -#~ msgstr "Das Klaviersystem" - #~ msgid "Right hand fingerings" #~ msgstr "Fingersatz der rechten Hand" @@ -11167,9 +13585,6 @@ msgstr "Obsah" #~ msgid "Unix" #~ msgstr "Unix" -#~ msgid "Working on text files" -#~ msgstr "Arbeiten an Text-Dateien" - #~ msgid "Guitar tablatures" #~ msgstr "Gitarren-Tabulaturen" @@ -11203,9 +13618,6 @@ msgstr "Obsah" #~ msgid "Multi measure rests" #~ msgstr "Mehrtaktige Pausen" -#~ msgid "Bar check" -#~ msgstr "Taktüberprüfung" - # # #~ msgid "Barnumber check" @@ -11221,15 +13633,9 @@ msgstr "Obsah" #~ msgid "Microtones in MIDI" #~ msgstr "Mikrotöne" -#~ msgid "Input files" -#~ msgstr "Quelldateien" - #~ msgid "A single music expression" #~ msgstr "Ein einzelner musikalischer Ausdruck" -#~ msgid "Extracting fragments of notation" -#~ msgstr "Notationsfragmente extrahieren" - #~ msgid "Common syntax issues TODO name?" #~ msgstr "Übliche Syntax-Probleme" @@ -11349,9 +13755,6 @@ msgstr "Obsah" #~ msgid "Orchestral strings sections" #~ msgstr "Notation von Orchestermusik" -#~ msgid "Artificial harmonics (strings)" -#~ msgstr "Flageolett" - #~ msgid "Guitar sections" #~ msgstr "Notation für Guitarre" @@ -11402,9 +13805,6 @@ msgstr "Obsah" #~ msgid "staccatissimo" #~ msgstr "Staccatissimo" -#~ msgid "Modern chords" -#~ msgstr "Moderne Akkorde" - #~ msgid "About this manual" #~ msgstr "Über das Handbuch" @@ -11418,22 +13818,12 @@ msgstr "Obsah" #~ msgid "Repeated figures" #~ msgstr "Wiederholungfiguren" -#, fuzzy -#~ msgid "Text markup commands" -#~ msgstr "Überblick über Textbeschriftungsbefehle" - -#~ msgid "Text markup list commands" -#~ msgstr "Überblick über Textbeschriftungsbefehle für Listen" - #~ msgid "Working with lyrics and identifiers" #~ msgstr "Mit Gesangtexten und Bezeichnern arbeiten" #~ msgid "Other vocal issues" #~ msgstr "Weitere Vokalmusikprobleme" -#~ msgid "Automatic staff changes" -#~ msgstr "Automatische Notensystemwechsel" - #~ msgid "Manual staff switches" #~ msgstr "Manuelle Notensystemwechsel" diff --git a/Documentation/po/de.po b/Documentation/po/de.po index 39082a6a25..cdc50927d7 100644 --- a/Documentation/po/de.po +++ b/Documentation/po/de.po @@ -3,14 +3,13 @@ # Copyright (C) 2006 Han-Wen Nienhuys, Jan Nieuwenhuizen # This file is distributed under the same license as the lilypond package. # -# -# Till Paala , 2007,2008,2009,2010, 2010. +# Till Paala , 2007,2008,2009,2010, 2010, 2011, 2012. msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" -"PO-Revision-Date: 2010-08-31 16:13+0300\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" +"PO-Revision-Date: 2012-02-08 22:34+0200\n" "Last-Translator: Till Paala \n" "Language-Team: German \n" "Language: de\n" @@ -27,13 +26,12 @@ msgstr "" #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" -"Ihre Vorschläge für die Dokumentation " -"sind willkommen. Bitte melden Sie Probleme und Fehler an unsere Fehler-Liste." +"Ihre Hilfe ist willkommen. Bitte helfen Sie " +"uns, indem Sie Probleme und Fehler an unsere Fehler-Liste schicken." #: postprocess_html.py:69 #, python-format @@ -45,11 +43,11 @@ msgstr "Andere Sprachen: %s." msgid "About automatic language selection." msgstr "Über die automatische Sprachauswahl." -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "stabiler Zweig" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "Entwicklungszweig" @@ -133,21 +131,20 @@ msgid "post-GDP" msgstr "nach-GDP" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" -msgstr "Farbenköpfe" - -#. Documentation/changes.tely:184 (variable) -msgid "noclef" -msgstr "Nichtschlüssel" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" +msgstr "Dyn" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "Top" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" +#, fuzzy +msgid "New features in 2.16 since 2.14" msgstr "Neue Eigenschaften in 2.13 seit 2.12" #. @top in Documentation/macros.itexi @@ -289,16 +286,18 @@ msgid "Long literature list" msgstr "Lange Literaturliste" #. @subheading in Documentation/essay/literature.itely -msgid "Colorado" -msgstr "Colorado" +msgid "University of Colorado Engraving music bibliography" +msgstr "Notensatzliteraturliste der University of Colorado" #. @subheading in Documentation/essay/literature.itely -msgid "Computer notation" +#, fuzzy +msgid "Computer notation bibliography" msgstr "Computernotation" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" -msgstr "Notensatz" +#, fuzzy +msgid "Engraving bibliography" +msgstr "Details des Notensetzens" #. @node in Documentation/fdl.itexi #. @appendix in Documentation/fdl.itexi @@ -319,27 +318,25 @@ msgstr "GNU Free Documentation License" msgid "ADDENDUM: How to use this License for your documents" msgstr "Anhang: Wie kann die Lizenz für eigene Dokumente verwendet werden" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "traLaLa" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "Belanglose Aktion um Vorausschau des Parsers zu umgehen" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "AbstandText" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "tempoVerschoben" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "Muster" @@ -500,21 +497,21 @@ msgstr "Verdoppelung einer Note mit Bindebögen (Beispiel)" msgid "Adding articulation to notes (example)" msgstr "Artikulationszeichen zu Noten hinzufügen (Beispiel)" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "ManuellerBalken" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "AltOn" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "AltOff" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "with Alt" @@ -523,6 +520,37 @@ msgstr "with Alt" msgid "Interfaces for programmers" msgstr "Schnittstellen für Programmierer" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Lilypond code blocks" +msgstr "Zusammengesetzte LilyPond-Variablen" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "Scheme-Funktionen" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Scheme function definitions" +msgstr "Scheme-Funktionen" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Scheme function usage" +msgstr "Scheme-Funktionen" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Void scheme functions" +msgstr "Scheme-Funktionen" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -530,8 +558,15 @@ msgstr "Musikalische Funktionen" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" -msgstr "Syntax der musikalischen Funktionen" +#, fuzzy +msgid "Music function definitions" +msgstr "Musikalische Funktionen" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Music function usage" +msgstr "Musikalische Funktionen" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely @@ -555,8 +590,15 @@ msgstr "Funktionen ohne Argumente" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" -msgstr "Leere Funktionen" +#, fuzzy +msgid "Void music functions" +msgstr "Musikfunktionen benutzen" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Event functions" +msgstr "Scheme-Funktionen" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -691,11 +733,15 @@ msgstr "Ansicht des Ergebnisses" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "MacOS X" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "Windows" @@ -722,32 +768,38 @@ msgstr "Tonhöhen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" msgstr "Tonhöhe" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" msgstr "Intervalle" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "Tonleiter" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "eingestrichenes C" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "Oktave" @@ -755,6 +807,8 @@ msgstr "Oktave" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "Versetzungszeichen" @@ -766,36 +820,42 @@ msgstr "Tondauern (Rhythmen)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" msgstr "Balken" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "Tondauer" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "ganze Note" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "halbe Note" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "Viertelnote" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "dotted note" msgstr "punktierte Note" @@ -816,23 +876,25 @@ msgstr "Taktangabe" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" msgstr "Taktangabe" #. @subheading in Documentation/learning/tutorial.itely -#, fuzzy msgid "Tempo marks" -msgstr "Textartige Zeichen" +msgstr "Tempobezeichnungen" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "tempo indication" msgstr "Tempobezeichnung" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "metronome" msgstr "Metronomangabe" @@ -843,6 +905,7 @@ msgstr "Notenschlüssel" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" msgstr "Notenschlüssel" @@ -857,21 +920,18 @@ msgstr "Arbeiten an Eingabe-Dateien" #. @node in Documentation/learning/tutorial.itely #. @section in Documentation/learning/tutorial.itely -#, fuzzy msgid "Dealing with errors" -msgstr "Optimierungen mit Scheme" +msgstr "Mit Fehlern umgehen" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely -#, fuzzy msgid "General troubleshooting tips" -msgstr "Fehlersuche" +msgstr "Allgemeine Fehlerlösungstipps" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely -#, fuzzy msgid "Some common errors" -msgstr "Übliche Fehler" +msgstr "Einige häufige Fehler" #. @node in Documentation/learning/tutorial.itely #. @section in Documentation/learning/tutorial.itely @@ -893,28 +953,34 @@ msgstr "Anklickbare Beispiele" msgid "Overview of manuals" msgstr "Überblick über die Handbücher" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "Geige" -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "Cello" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "TrioleA" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "barA" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "foo" @@ -930,7 +996,6 @@ msgstr "Notation auf einem System" #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely -#, fuzzy msgid "Bar checks" msgstr "Taktüberprüfung" @@ -946,24 +1011,28 @@ msgstr "Versetzungszeichen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "Kreuz" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "B" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "Doppelkreuz" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "Doppel-B" @@ -974,18 +1043,21 @@ msgstr "Tonartbezeichnungen (Vorzeichen)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" msgstr "Tonartbezeichnung" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "Dur" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "Moll" @@ -996,18 +1068,21 @@ msgstr "Warnung: Tonartbezeichnungen und Tonhöhen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "Auflösungszeichen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" msgstr "Transposition" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "Tonhöhenbezeichnungen" @@ -1023,6 +1098,7 @@ msgstr "Bindebögen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "Bindebogen" @@ -1033,6 +1109,7 @@ msgstr "Legatobögen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "Legatobogen" @@ -1043,6 +1120,7 @@ msgstr "Phrasierungsbögen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "Phrasierung" @@ -1053,6 +1131,7 @@ msgstr "Warnung: Bindebögen sind nicht Legatobögen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "Artikulationszeichen" @@ -1072,6 +1151,7 @@ msgstr "Fingersatz" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" msgstr "Fingersatz" @@ -1083,19 +1163,21 @@ msgstr "Dynamik" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "Dynamik" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" msgstr "Crescendo" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" msgstr "Decrescendo" @@ -1125,19 +1207,21 @@ msgid "anacrusis" msgstr "Auftakt" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "Andere rhythmische Aufteilungen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "Notenwert" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" msgstr "Triole" @@ -1148,18 +1232,21 @@ msgstr "Verzierungen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "Verzierungen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "Vorschlag" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "Vorhalt" @@ -1184,6 +1271,7 @@ msgstr "Gleichzeitige musikalische Ausdrücke: mehrere Notensysteme" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "Polyphonie" @@ -1204,6 +1292,7 @@ msgstr "Notensysteme gruppieren" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "Klammer" @@ -1218,6 +1307,8 @@ msgstr "System" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "system" msgstr "Notensystem" @@ -1229,6 +1320,7 @@ msgstr "Noten zu Akkorden verbinden" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "Akkord" @@ -1250,6 +1342,7 @@ msgstr "Einfache Lieder setzen" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "Gesangtext" @@ -1261,12 +1354,14 @@ msgstr "Text an einer Melodie ausrichten" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "Melisma" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "Fülllinie" @@ -1302,14 +1397,18 @@ msgstr "Nach der Übung" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "Sänger" #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) msgid "vocal" msgstr "Gesang" @@ -1317,625 +1416,771 @@ msgstr "Gesang" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "Klavier" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "oben" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "unten" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "Melodie" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) msgid "text" msgstr "Text" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "haupt" -#. Documentation/learning/fundamental.itely:629 (comment) -#, fuzzy +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "Stimme \\\"1\\\" Stimme \\\"2\\\"" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "Stimme \\\"1\\\" Stimme \\\"2\\\"" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "Stimme·\\\"1\\\"" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "Stimme·\\\"2\\\"" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "Hauptstimme" -#. Documentation/learning/fundamental.itely:684 (comment) -#, fuzzy +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" -msgstr "" -"Stimme·\\\"1\\\"··············Stimme·\\\"2\\\" Stimme \\\"3\\\"" +msgstr "Stimme·\\\"1\\\"····Stimme·\\\"2\\\" Stimme \\\"3\\\"" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "Takt 1" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "Takt 2" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "Stimme 1 geht weiter" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "Stimme 2 geht weiter" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "Stimme 1" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "Stimme zwei" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "Stimme drei auslassen" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "Stimme vier" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "Standard oder Verhalten nach \\oneVoice" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "Folgende Noten sind monophon" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "Beginn von drei Stimmen gleichzeitig" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "Die Hauptstimme weiterlaufen lassen" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "Zweite Stimme einsetzen" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "Hälse usw. nach unten ausrichten" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "Die dritte Stimme beginnen" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "Hälse usw. nach oben ausrichten" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "Erste Stimme einrichten" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "Hälse usw. nach unten ausrichten" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "eins" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "global" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "SoprEinsNoten" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "SopEinsText" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "SoprZweiNoten" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "SoprZweiText" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "SoprEins" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "SoprZwei" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" -msgstr "" +msgstr "TonartTakt" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "SoprNoten" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "AltNoten" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "TenorNoten" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "BassNoten" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "StropheEins" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "StropheZwei" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "StropheDrei" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "StropheVier" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "Sopr" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "Alt" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "Tenor" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "Bass" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "Beginn des einen musikalischen Ausdrucks" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "Beginn von gleichzeitigen Systemen" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "RH-System erstellen" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "Stimme für RH Noten erstellen" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "Beginn von RH Noten" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "Ende RH-Noten" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "Ende der RH Stimme" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "Ende RH-System" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "LH System erstellen, braucht zwei gleichzeitige Stimmen" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "LH Stimme eins erstellen" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "Beginn von LH Stimme eins Noten" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "Ende von LH Stimme eins Noten" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "Ende LH Stimme eins" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "LH Stimme zwei erstellen" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "Beginn von LH Stimme zwei Noten" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "Ende der LH Stimme zwei Noten" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "Ende der LH Stimme zwei" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "Ende LH System" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "Ende der gleichzeitigen Systeme" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "Ende des einen zusammengesetzten Musikausdrucks" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "Falsch!" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "Notenköpfe verkleinern" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "Notenköpfe vergrößern" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "zur Standardgröße zurückgehen" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "SopranNoten" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "SoprText" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "CelloNoten" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "SopranText" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "AltNoten" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "AltText" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "TenorNoten" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "TenorText" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "BassNoten" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "BassText" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "ChoirStaff und PianoStaff parallel kombinieren" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "Sopran" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "Alt" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "Tenor" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "Bass" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "Ende ChoirStaff" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "ManualEinsStimmeEinsNoten" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "ManualEinsStimmeZweiNoten" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "ManualZweiNoten" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "PedalOrgelNoten" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "PianoStaff und Pedal-System müssen gleichzeitig sein" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "ManualEins" -#. Documentation/learning/fundamental.itely:2923 (comment) -#, fuzzy +#. Documentation/learning/fundamental.itely:2926 (comment) msgid "set key and time signature" -msgstr "Taktangabe" +msgstr "Taktangabe und Tonart bestimmen" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "Ende ManualEins Staff-Kontext" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "ManualZwei" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "Ende ManualZwei Staff-Kontext" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "Klaviersystem beenden" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "OrgelPedal" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "Orgelsystem beenden" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "Partitur-Kontext beenden" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) msgid "hornNotes" msgstr "HornNoten" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "FramentA" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "FragmentB" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "dolce" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "FdannP" @@ -1968,6 +2213,7 @@ msgstr "Musikalische Ausdrücke ineinander verschachteln" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "Ossia" @@ -2049,6 +2295,7 @@ msgstr "Einen einzelnen Kontext verändern" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" msgstr "Tonumfang" @@ -2086,268 +2333,374 @@ msgstr "Tipparbeit sparen durch Bezeichner und Funktionen" msgid "Scores and parts" msgstr "Partituren und Stimmen" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "Dicke aller folgenden Bögen von 1.2 zu 5.0 vergrößern" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "Nur die Dicke des direkt folgenden Bogens vergrößern" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "Die Dicke aller folgenden Bögen zurücksezten auf 1.2" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "Keine Schlüssel in diesem System" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "Keine Taktangabe in diesem System" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "Alle Schriftgrößen um ~24% verkleinern" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "Die Halslänge und Linienabstand anpassen" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "Details für späteren Text-Spanner setzen" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "Dynamik-Zeichen über System setzen" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "Beginn der Oktavierungsklammer" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "Dynamik-Text und Cresc.-Klammer hinzufügen" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "Textbeschriftung hinzufügen" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "Dynamik-Text hinzufügen und Klammer beenden" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "Ende der Oktavierungsklammer" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "Nächste Ottava-Klammer unter Text-Spanner setzen" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "Dynamik-Text hinzufügen" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "Dynamic Line Spanner hinzufügen" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "Noten spreizen um dem Text Platz zu machen" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "Dieser Text ist kurz genug um ohne Kollision zu passen" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "Dieser ist zu lang, darum wird der nach oben verschoben" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "Abschalten der automatischen Vermeidung von Zusammenstößen" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "und Textlänge berücksichtigen" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "Leerzeichen am Ende werden beachtet" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "Breite um einen Linienabstand vergrößern" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "Das funktioniert nicht, siehe unten" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "Das funktioniert" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) msgid "sesquisharp" msgstr "sesquisharp" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "" "Hier wird das sesquisharp-Zeichen gesetzt, aber der Abstand ist zu klein" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "Das verbessert den Abstand" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "Breite um eine Einheit vergrößern" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" "Dynamik-Zeichen an einer Linie ausrichten, die 2 Einheiten über dem System " "ist" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "rhNoten" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "Beginn des polyphonen Abschnitts mit vier Stimmen" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) -#, fuzzy +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) msgid "continuation of main voice" -msgstr "Erste Stimme einrichten" - -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +msgstr "Fortführen der Hauptstimme" + +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "lhNoten" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "RH" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "LH" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +#, fuzzy +msgid "Move the c2 out of the main note column" msgstr "" "Verschiebe das c2 aus der Hauptnotenkolumne, damit Verschmelzung funktioniert" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +#, fuzzy +msgid "so the merge will work" +msgstr "ein Umbruch hier würde funktionieren" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "Hals vom d2 muss nach unten, damit Verschmelzung gelingt" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "c2 neu positionieren rechts von der verschmolzenen Note" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" -msgstr "" +msgstr "Hals von d2 sollte unsichtbar sein" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "Sichtbare Tempo-Bezeichnung" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "Unsichtbare Tempo-Bezeichnung um Fermate im MIDI zu verlängern" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "Neues Tempo im nächsten Abschnitt" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "emphasize" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "normal" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "SopranNoten" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "Sopran" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "mpdolce" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "Instrument" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "Anordnungen um Farbe von der color-notehead-Prozedur zu erhalten" @@ -2507,9 +2860,8 @@ msgid "padding property" msgstr "padding (Fülleigenschafte)" #. @subheading in Documentation/learning/tweaks.itely -#, fuzzy msgid "right-padding" -msgstr "dichter Satz" +msgstr "right-padding" #. @subheading in Documentation/learning/tweaks.itely msgid "staff-padding property" @@ -2573,11 +2925,6 @@ msgstr "Stil-Dateien" msgid "Other sources of information" msgstr "Mehr Information" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "Vermeiden von Optimierungen durch langsamere Übersetzung" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2659,20 +3006,19 @@ msgstr "SATB mit zugehörigen Kontexten" #. @appendixsubsec in Documentation/learning/templates.itely msgid "SATB on four staves" -msgstr "" +msgstr "SATB auf vier Systemen" #. @appendixsubsec in Documentation/learning/templates.itely msgid "Solo verse and two-part refrain" -msgstr "" +msgstr "Solo-Strophe und zweistimmiger Refrain" #. @appendixsubsec in Documentation/learning/templates.itely -#, fuzzy msgid "Hymn tunes" -msgstr "Silbenanzahl" +msgstr "Hymnen" #. @appendixsubsec in Documentation/learning/templates.itely msgid "Psalms" -msgstr "" +msgstr "Psalme" #. @node in Documentation/learning/templates.itely #. @appendixsec in Documentation/learning/templates.itely @@ -2712,10 +3058,10 @@ msgstr "Musikbegriffen A--Z" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "A" @@ -2766,8 +3112,8 @@ msgstr "Alteration" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "alt" @@ -2813,9 +3159,9 @@ msgstr "Autograph" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "B" @@ -2846,11 +3192,11 @@ msgstr "Baritonschlüssel" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "Bass" @@ -2916,7 +3262,7 @@ msgstr "Kadenz" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "Zäsur" @@ -2968,7 +3314,7 @@ msgstr "4/4-Takt" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "Common Practice Period" -msgstr "" +msgstr "Kunstmusik" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3372,6 +3718,7 @@ msgstr "Schlusskadenz" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "Flageolett-Töne" @@ -3667,8 +4014,8 @@ msgstr "Verzierung" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "Stimme" @@ -3734,9 +4081,8 @@ msgstr "Portato" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#, fuzzy msgid "power chord" -msgstr "Moderne Akkorde" +msgstr "Power-Akkord" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3795,8 +4141,8 @@ msgstr "Wiederholungen" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "Rhythmus" @@ -3922,7 +4268,7 @@ msgstr "Gesangstext" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "Sopran" @@ -4008,7 +4354,7 @@ msgstr "Temperatur" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) msgid "tenor" msgstr "Tenor" @@ -4155,57 +4501,57 @@ msgstr "Dauerbezeichnungen für Noten und Pausen" #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely msgid "Non-Western terms A-Z" -msgstr "" +msgstr "Nicht-westliche Begriffe A-Z" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "bayati" -msgstr "" +msgstr "bayati" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "iraq" -msgstr "" +msgstr "iraq" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "kurd" -msgstr "" +msgstr "kurd" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "makam" -msgstr "" +msgstr "makam" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "makamlar" -msgstr "" +msgstr "makamlar" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "maqam" -msgstr "" +msgstr "maqam" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "rast" -msgstr "" +msgstr "rast" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "semai" -msgstr "" +msgstr "semai" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sikah" -msgstr "" +msgstr "sikah" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "taqasim" -msgstr "" +msgstr "taqasim" #. @node in Documentation/music-glossary.tely #. @appendix in Documentation/music-glossary.tely @@ -4232,34 +4578,67 @@ msgstr "Musikalische Notation" msgid "Specialist notation" msgstr "Spezielle Notation" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" -msgstr "nicht gedruckt" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "Tagline in diesem book nicht anzeigen" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "Untertitel in dieser Partitur nicht anzeigen" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "Die folgenden Felder sind zentriert" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "Die folgenden Felder sind links ausgerichtet" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "Die folgenden Felder sind rechts ausgerichtet" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" +"Die folgenden Felder werden an gegenüberliegenden Enden der gleichen Zeile " +"angezeigt" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "Feld vom Benutzer definiert" + +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "alleText" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "Noten" +#. Documentation/notation/input.itely:1792 (variable) +msgid "test" +msgstr "Test" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4282,15 +4661,13 @@ msgstr "Mehrere Partituren in einem Buch" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -#, fuzzy msgid "Multiple output files from one input file" -msgstr "Mehrere Silben zu einer Note" +msgstr "Mehrere Ausgabedateien aus einer Eingabedatei" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -#, fuzzy msgid "Output file names" -msgstr "Quelldateien" +msgstr "Dateinamen der Ausgabedateien" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4304,32 +4681,78 @@ msgstr "Titel" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" -msgstr "Titel erstellen" +msgid "Creating titles headers and footers" +msgstr "Titel Kopf und Fußzeilen erstellen" #. @node in Documentation/notation/input.itely -#, fuzzy -msgid "Custom headers footers and titles" -msgstr "Dauerbezeichnungen für Noten und Pausen" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "Wie funktioniert die Titel-Umgebung?" -#. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" -msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "Standardlayout von book und Partitur Titelumgebungen" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Reference to page numbers" -msgstr "Verweis auf die Seitenzahlen" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "Standardlayout von Kopf und Fußzeilen" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Table of contents" -msgstr "Inhaltsverzeichnis" +msgid "Custom headers footers and titles" +msgstr "Eigene Kopf und Fußzeilen sowie Titel" #. @node in Documentation/notation/input.itely -#. @section in Documentation/notation/input.itely -msgid "Working with input files" -msgstr "Arbeiten an Eingabe-Dateien" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "Angepasste Textformatierung für Titelumgebungen" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "Angepasstes Layout für Titelumgebungen" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "Angepasstes Layout für Kopf und Fußzeilen" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Creating footnotes" +msgstr "Fußnoten erstellen" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Footnotes overview" +msgstr "Übersicht über Fußnoten" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" +msgstr "Automatische Fußnoten" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Manual footnotes" +msgstr "Manuelle Fußnoten" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Reference to page numbers" +msgstr "Verweis auf die Seitenzahlen" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Table of contents" +msgstr "Inhaltsverzeichnis" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Working with input files" +msgstr "Arbeiten an Eingabe-Dateien" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4351,15 +4774,30 @@ msgstr "Variablen benutzen" msgid "Using tags" msgstr "Marken benutzen" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "Globale Einstellungen benutzen" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "Sonderzeichen" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "Zeichenkodierung" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" -msgstr "LilyPond-Notation anzeigen" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "Unicode" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" +msgstr "ASCII-Aliase" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely @@ -4388,7 +4826,7 @@ msgstr "Die Notationsschriftart verändern" #. @subsubheading in Documentation/notation/input.itely msgid "Installation Instructions for MacOS" -msgstr "" +msgstr "Installations-Anweisungen für MacOS" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely @@ -4453,69 +4891,94 @@ msgstr "Verschidene Instrumente angleichen (ii)" msgid "Percussion in MIDI" msgstr "Schlagzeug in MIDI" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" -msgstr "" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" +msgstr "Artikuliere-Skript" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" -msgstr "" +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" +msgstr "Musikalische Information extrahieren" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." -msgstr "" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "LilyPond-Notation anzeigen" -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" -msgstr "" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "Musikalische Scheme-Ausdrücke anzeigen" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "Musikalische Ereignisse in einer Datei speichern" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" +msgstr "Die tiefste Note hier braucht mehr Platz als 'basic-distance" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" msgstr "" +"zu Verfügung stellen kann, sodass der Abstand zwischen diesem System und dem" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." +msgstr "nächsten durch 'padding bestimmt wird." + +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "" +"Hier stellt 'basic-distance genug Platz zur Verfügung und es ist kein Grund" -#. Documentation/notation/spacing.itely:2053 (comment) -#, fuzzy -msgid "staff and the next is determined by 'space." +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" +msgstr "den Platz zu komprimieren (bis zu 'minimum-distance) und" + +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" +msgstr "Platz für etwas anderes auf der Seite zu machen, also" + +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." msgstr "" -"wird der Abstand zwischen dem System und dem nächsten durch Verschiebung " -"(padding) entschieden." +"wird der Abstand zwischen dem System und dem nächsten durch 'basic-distance " +"entschieden." -#. Documentation/notation/spacing.itely:2056 (comment) -#, fuzzy +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" msgstr "" "Indem man die Verschiebung auf einen negativen Wert setzt, können Systeme " -"zusammengeklappt werden." +"zusammenstoßen." -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." -msgstr "" +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." +msgstr "Der niedrigste akzeptable Wert für 'basic-distance ist 0." -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "jetzt ist der Text näher am System" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "indem outside-staff-priority auf Nicht-Zahl gesetzt wird," -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr " werden vertikale Zusammenstöße vermieden" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "jetzt kollidieren sie" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "Beschriftung zu nah an der folgenden Note" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "Setzen von outside-staff-horizontal-padding hilft" @@ -4526,145 +4989,132 @@ msgstr "Abstände" #. @node in Documentation/notation/spacing.itely #. @section in Documentation/notation/spacing.itely -#, fuzzy msgid "Page layout" -msgstr "Partiturlayout" +msgstr "Seitenlayout" #. @node in Documentation/notation/spacing.itely msgid "The \\\\paper block" -msgstr "" +msgstr "Die \\\\paper-Umgebung" #. @subsection in Documentation/notation/spacing.itely -#, fuzzy msgid "The @code{\\\\paper} block" -msgstr "Der @code{\\\\override}-Befehl" +msgstr "Die @code{\\\\paper}-Umgebung" #. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely msgid "Paper size and automatic scaling" -msgstr "" +msgstr "Papierformat und automatische Skalierung" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -#, fuzzy msgid "Setting paper size" -msgstr "Die Notensystemgröße einstellen" +msgstr "Das Papierformat einstellen" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -#, fuzzy msgid "Automatic scaling to paper size" -msgstr "Automatische Notensystemwechsel" +msgstr "Automatische Skalierung auf ein Papierformat" #. @node in Documentation/notation/spacing.itely -#, fuzzy msgid "Fixed vertical spacing \\\\paper variables" -msgstr "Vertikaler Abstand zwischen Strophen" +msgstr "Vertikale \\\\paper-Variablen mit festen Abständen" #. @subsection in Documentation/notation/spacing.itely -#, fuzzy msgid "Fixed vertical spacing @code{\\\\paper} variables" -msgstr "Vertikaler Abstand zwischen Strophen" +msgstr "Vertikale @code{\\\\paper}-Variablen mit festen Abständen" #. @node in Documentation/notation/spacing.itely -#, fuzzy msgid "Flexible vertical spacing \\\\paper variables" -msgstr "Vertikaler Abstand zwischen Strophen" +msgstr "Vertikale \\\\paper-Variablen mit flexiblen Abständen" #. @subsection in Documentation/notation/spacing.itely msgid "Flexible vertical spacing @code{\\\\paper} variables" -msgstr "" +msgstr "Vertikale @code{\\\\paper}-Variablen mit flexiblen Abständen" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "Structure of flexible vertical spacing alists" -msgstr "" +msgstr "Struktur der Alisten für flexible vertikale Abstände" #. @node in Documentation/notation/spacing.itely msgid "List of flexible vertical spacing \\\\paper variables" -msgstr "" +msgstr "Liste der flexiblen vertikalen Abstandsvariablen in \\\\paper" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "List of flexible vertical spacing @code{\\\\paper} variables" -msgstr "" +msgstr "Liste der flexiblen vertikalen Abstandsvariablen in @code{\\\\paper}" #. @node in Documentation/notation/spacing.itely -#, fuzzy msgid "Horizontal spacing \\\\paper variables" -msgstr "Überblick über horizontale Abstände" +msgstr "\\\\paper-Variablen für horizontale Abstände" #. @subsection in Documentation/notation/spacing.itely -#, fuzzy msgid "Horizontal spacing @code{\\\\paper} variables" -msgstr "Überblick über horizontale Abstände" +msgstr "@code{\\\\paper}-Variablen für horizontale Abstände" #. @node in Documentation/notation/spacing.itely msgid "\\\\paper variables for widths and margins" -msgstr "" +msgstr "\\\\paper-Variablen für Breite und Ränder" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "@code{\\\\paper} variables for widths and margins" -msgstr "" +msgstr "@code{\\\\paper}-Variablen für Breite und Ränder" #. @node in Documentation/notation/spacing.itely msgid "\\\\paper variables for two-sided mode" -msgstr "" +msgstr "\\\\paper-Variablen für zweiseitigen Satz" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "@code{\\\\paper} variables for two-sided mode" -msgstr "" +msgstr "@code{\\\\paper}-Variablen für zweiseitigen Satz" #. @node in Documentation/notation/spacing.itely msgid "\\\\paper variables for shifts and indents" -msgstr "" +msgstr "\\\\paper-Variablen für Verschiebungen und Einrückungen" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "@code{\\\\paper} variables for shifts and indents" -msgstr "" +msgstr "@code{\\\\paper}-Variablen für Verschiebungen und Einrückungen" #. @node in Documentation/notation/spacing.itely -#, fuzzy msgid "Other \\\\paper variables" -msgstr "Weitere Layout-Variablen" +msgstr "Andere \\\\paper-Variablen" #. @subsection in Documentation/notation/spacing.itely -#, fuzzy msgid "Other @code{\\\\paper} variables" -msgstr "Nützliche @command{make}-Variablen" +msgstr "Andere @code{\\\\paper}-Variablen" #. @node in Documentation/notation/spacing.itely msgid "\\\\paper variables for line breaking" -msgstr "" +msgstr "\\\\paper-Variablen für den Zeilenumbruch" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "@code{\\\\paper} variables for line breaking" -msgstr "" +msgstr "@code{\\\\paper}-Variablen für den Zeilenumbruch" #. @node in Documentation/notation/spacing.itely -#, fuzzy msgid "\\\\paper variables for page breaking" -msgstr "Optimale Seitenumbrüche" +msgstr "\\\\paper-Variablen für den Seitenumbruch" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "@code{\\\\paper} variables for page breaking" -msgstr "" +msgstr "@code{\\\\paper}-Variablen für den Seitenumbruch" #. @node in Documentation/notation/spacing.itely msgid "\\\\paper variables for page numbering" -msgstr "" +msgstr "\\\\paper-Variablen für den Seitenumbruch" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely msgid "@code{\\\\paper} variables for page numbering" -msgstr "" +msgstr "@code{\\\\paper}-Variablen für Seitenzahlen" #. @node in Documentation/notation/spacing.itely msgid "Miscellaneous \\\\paper variables" -msgstr "" +msgstr "Verschiedene \\\\paper-Variablen" #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -#, fuzzy msgid "Miscellaneous @code{\\\\paper} variables" -msgstr "Nützliche @command{make}-Variablen" +msgstr " Verschiedene \\paper-Variablen" #. @node in Documentation/notation/spacing.itely #. @section in Documentation/notation/spacing.itely @@ -4672,14 +5122,12 @@ msgid "Score layout" msgstr "Partiturlayout" #. @node in Documentation/notation/spacing.itely -#, fuzzy msgid "The \\\\layout block" -msgstr "Weitere Layout-Variablen" +msgstr "Die \\\\layout-Umgebung" #. @subsection in Documentation/notation/spacing.itely -#, fuzzy msgid "The @code{\\\\layout} block" -msgstr "Der @code{\\\\tweak}-Befehl" +msgstr "Die @code{\\\\layout}-Umgebung" #. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely @@ -4733,35 +5181,31 @@ msgstr "Vertikale Abstände" #. @node in Documentation/notation/spacing.itely #. @subsection in Documentation/notation/spacing.itely -#, fuzzy msgid "Flexible vertical spacing within systems" -msgstr "Vertikale Abstände zwischen Systemen" +msgstr "Flexible vertikale Abstände in Systemgruppen" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -#, fuzzy msgid "Within-system spacing properties" -msgstr "Eignschaften verändern" +msgstr "Eigenschaften für Abstände innerhalb von Systemgruppen" #. @subsubheading in Documentation/notation/spacing.itely msgid "Properties of the @code{VerticalAxisGroup} grob" -msgstr "" +msgstr "Eigenschaften des @code{VerticalAxisGroup}-Grobs" #. @subsubheading in Documentation/notation/spacing.itely msgid "Properties of the @code{StaffGrouper} grob" -msgstr "" +msgstr "Eigenschaften des @code{StaffGrouper}-Grobs" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -#, fuzzy msgid "Spacing of ungrouped staves" -msgstr "Abstand von Nicht-Notensystem-Zeilen" +msgstr "Abstände von nicht gruppierten Notensystemen" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -#, fuzzy msgid "Spacing of grouped staves" -msgstr "Abstand zwischen Notensystemen" +msgstr "Abstände von gruppierten Notensystemen" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely @@ -4823,169 +5267,168 @@ msgstr "Abstände anzeigen lassen" msgid "Changing spacing" msgstr "Abstände verändern" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "NotenA" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "NotenB" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "lassStimmeLeben" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "Lass die Stimme \\\"A\\\" für 5 Takte leben" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "Lass die Stimme \\\"B\\\" für 5 Takte leben" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) msgid "accompaniment" msgstr "Begleitung" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) msgid "words" msgstr "Worte" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "Lass die Stimme \\\"melodie\\\" für 4 Takte leben" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "einen Takt überspringen" -#. Documentation/notation/changing-defaults.itely:2017 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "Blub" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "Bla" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" -msgstr "Abstand zwischen Notensystemen" +msgstr "Standardabstand zwischen Notensystemen" -#. Documentation/notation/changing-defaults.itely:2023 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" -msgstr "Abstand zwischen Notensystemen" +msgstr "verminderter Abstand zwischen Notensystemen" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" -msgstr "" +msgstr "hier der geschachtelte Aufruf" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "Länge des Bindebogens vergrößern" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "Länge des Pausentaktes vergrößern" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "Länge der Crescendo-Klammer vergrößern" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "Standard" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "allein keine Wirkung" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "gilt nur, wenn beide \"override\" vorhanden sind" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "Taktlinie am Ende der Zeile entfernen" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "Versuche alle Tonarten zu entfernen" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "horizontal nach links verschieben" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "vertikal hochschieben" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "dritter Finger" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" -msgstr "RehearsalMark zentrieren über dem Schlüssel" +msgstr "Übungszeichen über dem Schlüssel zentrieren" -#. Documentation/notation/changing-defaults.itely:3449 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" -msgstr "RehearsalMark zentrieren über der Taktart (TimeSignature)" +msgstr "Übungszeichen über der Taktart (TimeSignature) zentrieren" -#. Documentation/notation/changing-defaults.itely:3456 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" -msgstr "RehearsalMark zentrieren über der Tonart (KeySignature)" +msgstr "Übungszeichen über der Tonart (KeySignature) zentrieren" -#. Documentation/notation/changing-defaults.itely:3476 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" -msgstr "RehearsalMark zentrieren über der Tonart (KeySignature)" +msgstr "Übungszeichen über der Tonart (KeySignature) zentrieren" -#. Documentation/notation/changing-defaults.itely:3489 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" -msgstr "RehearsalMark zentrieren über dem Schlüssel" +msgstr "Übungszeichen über dem Taktstrich zentrieren" -#. Documentation/notation/changing-defaults.itely:3504 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" -msgstr "RehearsalMark zentrieren über der Tonart (KeySignature)" +msgstr "Übungszeichen über der Tonart (KeySignature) zentrieren" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" -msgstr "RehearsalMark mit der linken Ecke von KeySignature ausrichten" +msgstr "Übungszeichen an der linken Ecke der Tonart (KeySignature) ausrichten" -#. Documentation/notation/changing-defaults.itely:3516 (comment) -#, fuzzy +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" -msgstr "RehearsalMark mit der rechten Ecke von KeySignature ausrichten" +msgstr "Übungszeichen an der rechten Ecke der Tonart (KeySignature) ausrichten" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "nach rechts um 3,5 Linienabstände verschieben" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "nach links um 2 Linienabstände verschieben" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "XinO" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "custosNote" @@ -5041,8 +5484,8 @@ msgstr "Neue Kontexte definieren" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" -msgstr "Kontexte aneinander ausrichten" +msgid "Context layout order" +msgstr "Reihenfolge des Kontextlayouts" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely @@ -5113,9 +5556,8 @@ msgstr "@code{\\\\set} versus @code{\\\\override}" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -#, fuzzy msgid "Modifying alists" -msgstr "stencils verändern" +msgstr "Alisten verändern" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely @@ -5132,11 +5574,6 @@ msgstr "Eingabe-Modi" msgid "Direction and placement" msgstr "Richtung und Platzierung" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "Reihenfolge des Kontextlayouts" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5221,27 +5658,24 @@ msgid "Aligning objects" msgstr "Objekte ausrichten" #. @node in Documentation/notation/changing-defaults.itely -#, fuzzy msgid "Setting X-offset and Y-offset directly" -msgstr "@code{X-offset} und @code{Y-offset} direkt setzen" +msgstr "X-offset und Y-offset direkt setzen" #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Setting @code{X-offset} and @code{Y-offset} directly" msgstr "@code{X-offset} und @code{Y-offset} direkt setzen" #. @node in Documentation/notation/changing-defaults.itely -#, fuzzy msgid "Using the side-position-interface" -msgstr "Das @code{side-position-interface} benutzen" +msgstr "Das side-position-interface benutzen" #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Using the @code{side-position-interface}" msgstr "Das @code{side-position-interface} benutzen" #. @node in Documentation/notation/changing-defaults.itely -#, fuzzy msgid "Using the self-alignment-interface" -msgstr "Das @code{self-alignment-interface} benutzen" +msgstr "Das self-alignment-interface benutzen" #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Using the @code{self-alignment-interface}" @@ -5256,9 +5690,8 @@ msgid "Using the @code{centered-on-parent} procedures" msgstr "Die @code{centered-on-parent}-Prozeduren benutzen" #. @node in Documentation/notation/changing-defaults.itely -#, fuzzy msgid "Using the break-alignable-interface" -msgstr "Benutzung des @code{break-aligned-interface}" +msgstr "Benutzung des break-aligned-interface" #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Using the @code{break-alignable-interface}" @@ -5314,6 +5747,11 @@ msgstr "Liste der Akkordbezeichnungen" msgid "Common chord modifiers" msgstr "Übliche Akkord-Variablen" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined string tunings" +msgstr "Vordefinierte Saitenstimmungen" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" @@ -5434,6 +5872,11 @@ msgstr "Pedal-Glyphen" msgid "Accordion glyphs" msgstr "Akkordeon-Glyphen" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "Bogen-Glyphen" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5476,15 +5919,19 @@ msgstr "Notenkopfstile" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -#, fuzzy msgid "Text markup commands" -msgstr "Überblick über Textbeschriftungsbefehle" +msgstr "Textbeschriftungsbefehle" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Text markup list commands" msgstr "Überblick über Textbeschriftungsbefehle für Listen" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "Liste der Sonderzeichen" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5622,26 +6069,31 @@ msgstr "Erhältliche Musikfunktionen" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -#, fuzzy -msgid "Predefined type predicates" -msgstr "Vordefinierte Bund-Diagramme" +msgid "Context modification identifiers" +msgstr "Bezeichner zur Kontextveränderung" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" -msgstr "Scheme-Funktionen" +msgid "Predefined type predicates" +msgstr "Vordefinierte Typenprädikate" #. @node in Documentation/notation/cheatsheet.itely #. @appendix in Documentation/notation/cheatsheet.itely msgid "Cheat sheet" msgstr "Befehlsübersicht" -#. @unnumberedsec in Documentation/snippets.tely -#. @node in Documentation/snippets.tely #. @unnumberedsec in Documentation/snippets.tely msgid "\\\\TEXT\\\\" msgstr "\\\\TEXT\\\\" +#. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" + +#. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\\\\\TEXT\\\\\\\\" +msgstr "\\\\\\\\TEXT\\\\\\\\" + #. @node in Documentation/usage/running.itely msgid "Running lilypond" msgstr "lilypond starten" @@ -5669,13 +6121,12 @@ msgid "Invoking @command{lilypond}" msgstr "@command{lilypond} aufrufen" #. @unnumberedsubsubsec in Documentation/usage/running.itely -#, fuzzy msgid "Standard shell commands" -msgstr "Manuelle Wiederholungsbefehle" +msgstr "Übliche Kommandozeilenbefehle" #. @node in Documentation/usage/running.itely msgid "Command line options for lilypond" -msgstr "Optionen von lilypond auf der Kommandozeile" +msgstr "Optionen auf der Kommandozeile für lilypond" #. @unnumberedsubsec in Documentation/usage/running.itely msgid "Command line options for @command{lilypond}" @@ -5688,13 +6139,12 @@ msgstr "Umgebungsvariablen" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely -#, fuzzy msgid "LilyPond in chroot jail" -msgstr "Zusammengesetzte LilyPond-Variablen" +msgstr "LilyPond in chroot-Kerker" #. @subheading in Documentation/usage/running.itely msgid "Example script for 32-bit Ubuntu 8.04" -msgstr "" +msgstr "Beispiel-Skript für 32-bit Ubuntu 8.04" #. @node in Documentation/usage/running.itely #. @section in Documentation/usage/running.itely @@ -5737,7 +6187,7 @@ msgstr "Fehlermeldung FT_Get_Glyph_Name" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely msgid "Warning staff affinities should only decrease" -msgstr "" +msgstr "Warnung über absteigende staff affinities" #. @node in Documentation/usage/updating.itely msgid "Updating files with convert-ly" @@ -5895,17 +6345,16 @@ msgstr "xelatex" #. @node in Documentation/usage/lilypond-book.itely #. @section in Documentation/usage/lilypond-book.itely -#, fuzzy msgid "Sharing the table of contents" -msgstr "Inhaltsverzeichnis" +msgstr "Das Inhaltsverzeichnis flexibel einsetzen" #. @subsubheading in Documentation/usage/lilypond-book.itely msgid "Exporting the ToC from LilyPond" -msgstr "" +msgstr "Das Inhaltsverzeichnis (ToC) aus LilyPond exportieren" #. @subsubheading in Documentation/usage/lilypond-book.itely msgid "Importing the ToC into LaTeX" -msgstr "" +msgstr "Das Inhaltsverzeichnis in LaTeX importieren" #. @node in Documentation/usage/lilypond-book.itely msgid "Alternate methods of mixing text and music" @@ -5925,6 +6374,16 @@ msgstr "Externe Programme" msgid "Point and click" msgstr "Point and click" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "Point and click aktivieren" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "Ausgewähltes Point and click" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -6050,796 +6509,1594 @@ msgstr "Fehlersuche" msgid "Make and Makefiles" msgstr "Make und Makefiles" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) -msgid "discant" -msgstr "Diskant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) -msgid "dot" -msgstr "punkt" +#. @top in Documentation/cs/macros.itexi +#, fuzzy +msgid "LilyPond -- \\\\TITLE\\\\" +msgstr "LilyPond -- \\\\TITLE\\\\" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) -msgid "16 voets register" -msgstr "16 voets Register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) -msgid "accBasson" -msgstr "accBasson" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) -msgid "een korig 8 en 16 voets register" -msgstr "een·korig·8·en·16·voets·register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) -msgid "accBandon" -msgstr "accBandon" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) -msgid "accVCello" -msgstr "accVCello" +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) -msgid "4-8-16 voets register" -msgstr "4-8-16·voets·register" +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) -msgid "accHarmon" -msgstr "accHarmon" +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) -msgid "accTrombon" -msgstr "accPosaune" +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) -msgid "eenkorig 4 en 16 voets register" -msgstr "eenkorig·4·en·16·voets·register" +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) -msgid "accOrgan" -msgstr "accOrgel" +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) -msgid "accMaster" -msgstr "accHaupt" +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) -msgid "accAccord" -msgstr "accAkkord" +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) -msgid "accMusette" -msgstr "accMusette" +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" +msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) -msgid "accCeleste" -msgstr "accCelesta" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "VÅ¡e dohromady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řeÅ¡ení chyb" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "VypuÅ¡těný materiál" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "PřezkouÅ¡ení taktů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Ligatury" +msgstr "Ligatur" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Dynamika" +msgstr "Dynamik" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Absolutní označení not" +msgstr "Absolute Oktavenbezeichnung" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" +msgstr "" + +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" +msgstr "Taktangabe und Tonart setzen" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Notenkolumnen" +msgstr "Notenkolumnen" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" +msgstr "Kontexteigenschaften mit @code{\\\\with} setzen" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" +msgstr "Kontexteigenschaften mit @code{\\\\context} setzen" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Soprán a violoncello" +msgstr "Sopran und Cello" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" +msgstr "" + +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "" +"Verschiebe das c2 aus der Hauptnotenkolumne, damit Verschmelzung funktioniert" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Den Kontext finden" +msgstr "Arbeiten an Text-Dateien" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "break-visibility (unsichtbar machen)" +msgstr "break-visibility (unsichtbar machen)" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "color (Farbe)" +msgstr "X-Farbbezeichnungen" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Automatické chování" +msgstr "Automatisches Verhalten" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Fingersatz" +msgstr "Fingersatz" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Dynamik" +msgstr "Dynamik" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "extra-offset (Genaues Positionieren)" +msgstr "'extra-offset, umd seine Position zu bestimmen." + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "force-hshift-Eigenschaft" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Pouze noty" +msgstr "ganze Note" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s přísluÅ¡nými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Orchestr, sbor a klavír" +msgstr "Orchester, Chor und Klavier" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "Diskant" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "punkt" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "16 voets Register" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "accBasson" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "een·korig·8·en·16·voets·register" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "accBandon" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "accVCello" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "4-8-16·voets·register" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "accHarmon" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +msgid "accTrombon" +msgstr "accPosaune" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "eenkorig·4·en·16·voets·register" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "accOrgel" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "accHaupt" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "accAkkord" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "accMusette" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "accCelesta" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) msgid "accOboe" msgstr "accOboe" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) msgid "accClarin" msgstr "accClarin" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) msgid "accPiccolo" msgstr "accPiccolo" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) msgid "accViolin" msgstr "accGeige" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) msgid "continuo" msgstr "Continuo" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) msgid "bassStaff" msgstr "BassSystem" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) msgid "drh" msgstr "drh" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) msgid "drl" msgstr "drl" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) msgid "timb" msgstr "timb" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) msgid "two" msgstr "zwei" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) msgid "threeTwo" msgstr "dreiZwei" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) msgid "threeFour" msgstr "dreiVier" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) msgid "splitStaffBarLineMarkup" msgstr "splitStaffBarLineMarkup" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) msgid "splitStaffBarLine" msgstr "splitStaffBarLine" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) msgid "cueWhile" -msgstr "" +msgstr "StichWährend" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) -#, fuzzy +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) msgid "flute" -msgstr "FlötenNoten" +msgstr "Flöte" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) msgid "clarinet" msgstr "Klarinette" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) -#, fuzzy +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) msgid "pianoRH" msgstr "KlavierRH" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) -#, fuzzy +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) msgid "pianoLH" msgstr "KlavierLH" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) msgid "first, define a variable to hold the formatted date:" msgstr "zuerst eine Variable für das formatierte Datum definieren:" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) msgid "date" msgstr "Datum" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) msgid "d-%m-%Y\\\" (localtime (current-time)))" msgstr "d-%m-%Y\\\" (localtime (current-time)))" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) msgid "use it in the title block:" msgstr "das für den Titel benutzen" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) msgid "and use it in a \\markup block:" msgstr "und in einer \\markup-Umgebung benutzen" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) msgid "voiceFive" msgstr "StimmeFünf" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) -#, fuzzy +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) msgid "graceNotes" -msgstr "Verzierungen" +msgstr "VerzierungesNoten" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) msgid "Default layout:" msgstr "Standardlayout:" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) msgid "Reducing the minimum space below the staff and above the lyrics:" msgstr "Mindestplatz unter dem System und über dem Gesangstext:" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) msgid "Increase the size of the bar number by 2" msgstr "Taktnummer um Faktor zwei vergrößern" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) msgid "Print a bar number every second measure" msgstr "Jeden zweiten Takt eine Taktnummer setzen" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) msgid "Center-align bar numbers" msgstr "Taktnummern zentrieren" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) msgid "Left-align bar numbers" msgstr "Taktnummern linksbündig setzen" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) msgid "the RehearsalMark will be centered above the Clef" msgstr "RehearsalMark zentrieren über dem Schlüssel" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) msgid "the RehearsalMark will be centered above the TimeSignature" msgstr "RehearsalMark zentrieren über der Taktart (TimeSignature)" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) msgid "the RehearsalMark will be centered above the KeySignature" msgstr "RehearsalMark über der Tonart (KeySignature) zentrieren" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) msgid "" "the RehearsalMark will be aligned with the left edge of the KeySignature" msgstr "RehearsalMark mit der linken Ecke von KeySignature ausrichten" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) msgid "" "the RehearsalMark will be aligned with the right edge of the KeySignature" msgstr "RehearsalMark mit der rechten Ecke von KeySignature ausrichten" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) msgid "and then shifted right by one unit." msgstr "nach rechts um eine Einheit verschieben" -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) msgid "upperStaff" msgstr "SystemOben" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) +#. Documentation/snippets/ancient-fonts.ly:52 (comment) msgid "\\break % 1 (8*1)" msgstr "\\break % 1 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) +#. Documentation/snippets/ancient-fonts.ly:63 (comment) msgid "\\break %2 (8*1)" msgstr "\\break·%2·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) +#. Documentation/snippets/ancient-fonts.ly:75 (comment) msgid "\\break % 3 (8*1)" msgstr "\\break·%·3·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) +#. Documentation/snippets/ancient-fonts.ly:90 (comment) msgid "\\break % 4 (8*1)" msgstr "\\break·%·4·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) msgid "\\break % 5 (8*1)" msgstr "\\break·%·5·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) msgid "\\break % 6 (8*1)" msgstr "\\break·%·6·(8*1" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) msgid "\\break % 7 (8*1)" msgstr "\\break·%·7·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) +#. Documentation/snippets/ancient-fonts.ly:129 (comment) msgid "\\break % 8 (8*1)" msgstr "\\break·%·8·(8*1)" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) +#. Documentation/snippets/ancient-fonts.ly:132 (comment) msgid "\\break % 12 (32*1)" msgstr "\\break·%·12·(32*1)" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) msgid "lowerStaff" msgstr "SystemUnten" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) +#. Documentation/snippets/ancient-fonts.ly:147 (comment) msgid "\\break % 2 (16*1)" msgstr "\\break·%·2·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) +#. Documentation/snippets/ancient-fonts.ly:152 (comment) msgid "\\break % 4 (16*1)" msgstr "\\break·%·4·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) +#. Documentation/snippets/ancient-fonts.ly:191 (comment) msgid "\\break % 9 (16*1)" msgstr "\\break·%·9·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) +#. Documentation/snippets/ancient-fonts.ly:193 (comment) msgid "lig" msgstr "lig" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) +#. Documentation/snippets/ancient-fonts.ly:197 (comment) msgid "\\break % 11 (16*1)" msgstr "\\break·%·11·(16*1)" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) +#. Documentation/snippets/ancient-fonts.ly:208 (comment) msgid "\\break % 12 (8*1)" msgstr "\\break·%·12·(8*1)" -#. Documentation/snippets/ancient-headword.ly:34 (context id) +#. Documentation/snippets/ancient-headword.ly:29 (context id) msgid "cantus" msgstr "cantus" -#. Documentation/snippets/ancient-headword.ly:36 (comment) +#. Documentation/snippets/ancient-headword.ly:31 (comment) msgid "Verse 1 — Salve, Regína" msgstr "Strophe 1 — Salve, Regína" -#. Documentation/snippets/ancient-headword.ly:47 (comment) +#. Documentation/snippets/ancient-headword.ly:42 (comment) msgid "Verse 2 — Vita, dulcédo" msgstr "Strophe 2 — Vita, dulcédo" -#. Documentation/snippets/ancient-headword.ly:48 (comment) +#. Documentation/snippets/ancient-headword.ly:43 (comment) msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" msgstr "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:49 (comment) +#. Documentation/snippets/ancient-headword.ly:44 (comment) msgid "\\divisioMinima" msgstr "\\divisioMinima" -#. Documentation/snippets/ancient-headword.ly:50 (comment) +#. Documentation/snippets/ancient-headword.ly:45 (comment) msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" msgstr "\\[ a\\melisma \\flexa g\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:51 (comment) +#. Documentation/snippets/ancient-headword.ly:46 (comment) msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" msgstr "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:52 (comment) +#. Documentation/snippets/ancient-headword.ly:47 (comment) msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" msgstr "\\[ e\\melisma \\flexa d\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:53 (comment) +#. Documentation/snippets/ancient-headword.ly:48 (comment) msgid "\\divisioMaior" msgstr "\\divisioMaior" -#. Documentation/snippets/ancient-headword.ly:54 (comment) +#. Documentation/snippets/ancient-headword.ly:49 (comment) msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" msgstr "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" -#. Documentation/snippets/ancient-headword.ly:55 (comment) +#. Documentation/snippets/ancient-headword.ly:50 (comment) msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" msgstr "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:56 (comment) +#. Documentation/snippets/ancient-headword.ly:51 (comment) msgid "\\finalis" msgstr "\\finalis" -#. Documentation/snippets/ancient-headword.ly:57 (comment) +#. Documentation/snippets/ancient-headword.ly:52 (comment) msgid "Verse 3 — Ad te clamámus" msgstr "Strophe 3 — Ad te clamámus" -#. Documentation/snippets/ancient-headword.ly:66 (comment) +#. Documentation/snippets/ancient-headword.ly:61 (comment) msgid "Verse 4 — Ad te suspirámus" msgstr "Strophe 4 — Ad te suspirámus" -#. Documentation/snippets/ancient-headword.ly:79 (comment) +#. Documentation/snippets/ancient-headword.ly:74 (comment) msgid "Verse 5 — Eia ergo, Advocáta nostra" msgstr "Strophe 5 — Eia ergo, Advocáta nostra" -#. Documentation/snippets/ancient-headword.ly:95 (comment) +#. Documentation/snippets/ancient-headword.ly:90 (comment) msgid "Verse 6 — Et Jesum" msgstr "Strophe 6 — Et Jesum" -#. Documentation/snippets/ancient-headword.ly:109 (comment) +#. Documentation/snippets/ancient-headword.ly:104 (comment) msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" msgstr "Strophe 7 ad finem — O clemens: O pia: O dulcis Virgo María" -#. Documentation/snippets/ancient-headword.ly:127 (comment) +#. Documentation/snippets/ancient-headword.ly:122 (comment) msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." msgstr "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) msgid "chant" msgstr "Hymnus" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) msgid "verba" msgstr "verba" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) msgid "incipit" msgstr "Incipit" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" -msgstr "dichter Satz" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +msgid "Set tight spacing" +msgstr "dichter Notensatz" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) msgid "turn off bar lines" msgstr "Taktstriche ausschalten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) msgid "need this extra \\skip such that clef change comes" msgstr "zusätzliches \\skip nötig, damit Schlüsselwechsel gedruckt wird" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) msgid "after bar line" msgstr "nach der Taktlinie" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" -msgstr "CHECK: keine Auswirkung?" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) msgid "turn bar lines on again" msgstr "Taktstriche wieder anschalten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" -msgstr "FIXME: printKeyCancellation wieder auf #t setzen darf nicht" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "printKeyCancellation wieder auf #t setzen darf nicht" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) msgid "occur in the first bar after the incipit. Dto. for forceClef." msgstr "im ersten Takt nach dem Incipit auftauchen. Genauso für forceClef." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) msgid "Therefore, we need an extra \\skip." msgstr "Darum ein zusätzlicher \\skip" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) msgid "the actual music" msgstr "die eigentlichen Noten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) msgid "let finis bar go through all staves" msgstr "Finis Taktlinie durch alle Systeme setzen" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) msgid "finis bar" msgstr "Finis-Taktstrich" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "discantusNotes" msgstr "DiskantusNoten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "two bars" msgstr "zwei Takte" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "eight bars" msgstr "acht Takte" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) msgid "one bar" msgstr "Ein Takt" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) msgid "discantusLyrics" msgstr "DiskantusText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) msgid "altusNotes" msgstr "AltNoten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) msgid "seven bars" msgstr "Sieben Takte" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) msgid "altusLyrics" msgstr "AltText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) msgid "tenorNotes" msgstr "TenorNoten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) msgid "four bars" msgstr "vier Takte" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) msgid "tenorLyrics" msgstr "TenorText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) msgid "bassusNotes" msgstr "BassNoten" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) msgid "bassusLyrics" msgstr "BassText" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) msgid "choirStaff" msgstr "choirStaff" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) msgid "no bars in staves" msgstr "keine Taktstriche in den Systemen" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) msgid "incipit should not start with a start delimiter" msgstr "Incipit nicht mit einer Systemklammer beginnen" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) msgid "no slurs" msgstr "keine Legatobögen" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "Den \\\"\\remove\\\"-Befehl einkommentieren, um" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" -msgstr "Zeilenumbrauch auch zu erlauben, wenn Noten über Taktlinie reichen" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" -msgstr "Der Befehl ist auskommentiert in" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" +msgstr "Der Befehl unten kann in kurzen Parituren" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" -msgstr "diesem kleinen Beispiel, aber für größere Partituren" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" +msgstr "auskommentiert werden, aber besonders für größere Partituren" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" -msgstr "ergeben sich bessere Zeilenumbrüche und" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" +msgstr "ergeben sich normalerweise bessere Zeilenumbrüche und" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." msgstr "" -"auch die Aufteilung der Noten verbessert sich, wenn der folgende Befehl " -"benutzt wird:" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" -msgstr "\\remove·\\\"Forbid_line_break_engraver\\\"" +"auch die Aufteilung der Noten verbessert sich, wenn der Befehl benutzt wird:" -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) -#, fuzzy +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) msgid "tick" -msgstr "Stock" +msgstr "Haken" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) -#, fuzzy +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) msgid "Use markup to center the chant on the page" -msgstr "'bar-size benutzen um die Höhe des Häkchens zu bestimmen," +msgstr "Benutze Beschriftung, um den Gesang auf der Seite zu zentrieren" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) -#, fuzzy +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) msgid "centered" -msgstr "Komma" +msgstr "zentriert" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) -#, fuzzy +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) msgid "End score" -msgstr "Partitur" +msgstr "Ende vonPartitur" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) -#, fuzzy +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) msgid "End markup" -msgstr "Beschriftungen" +msgstr "Ende von Beschriftung" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) msgid "fragment" msgstr "Frament" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) -#, fuzzy +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) msgid "slurNotes" -msgstr "AltNoten" +msgstr "BogenNoten" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) msgid "Default behavior" msgstr "Standart" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) msgid "Corrected to avoid collisions" msgstr "Korrigiert, um Zusammenstöße zu vermeiden" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "Hier ausschneiden: Beginn von 'bbarred.ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" -msgstr "PostScript -------------------------------" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" -msgstr "pScript" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" +msgstr "C mit Strich -------------------------------" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" -msgstr "Mit B ändern, wenn lieber" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" +msgstr "cMitStrich" #. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "(B)show %%mit C ändern, wenn lieber" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) msgid "Span -----------------------------------" msgstr "Strecker -----------------------------------" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" "Syntax: \\bbarre #\\\"Text\\\" { Noten } - Text = irgendeine Anzahl von " "Kästen" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "bbarre" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "Diese Zeile einkommentieren, um vollständiges Barre zu erhalten" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" "\"B\\\" $str }" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "Hier ausschneiden --- Ende 'bbarred.ly' " -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" "Kopieren und ändern Sie die letzte Zeile für vollständiges Baaré. Benennen " "Sie es in 'fbarred.ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" "Syntax: \\bbarre #\\\"Text\\\" { Noten } - Text = beliebige Anzahl von Kästen" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "Automatische Bebalkung für alle Systeme" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "Balken nur für dieses System verändern" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "Bebalkung vom Score-Kontext geerbt" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "Balken nur für diese Stimme ändern" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "Rhythmus 2-3-2" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "book-Papier, wird von allen untergeordneten book-Abschnitten geerbt" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "Seitenfuß: eine andere tagline für letzte Seite des Abschnitts" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "Copyright-Feld nur auf erster Seite von book" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "Abschnitt-tagline-Feld nur auf letzter Seite jedes Abschnitts" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "Tagline-Feld nur auf letzter Seite von book" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "Kopf von book, wird vom ersten Abschnitt in book geerbt" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" "andere Seitenumbruchfunktionen können für jeden Abschnitt benutzt werden" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "Dieser Takt hat kein \\breathe" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "Moderne Notation:" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "von sich aus, \\breathe benutzt rcomma, also ob man schreibt:" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" @@ -6847,551 +8104,602 @@ msgstr "" "\\override·BreathingSign·#'text·=·#(make-musicglyph-markup·\\\"scripts.rcomma" "\\\")" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "rvarcomma·und·lvarcomma sind Variationen von rcomma und lcomma" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "Staff-Kontext benötigt, weil ein Voice-Kontext begonnen wird" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "vau" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "Das Symbol konstruieren" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "Atemzeichen auf Standard zurücksetzen" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "GabelmitzentriertemText" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "GabelMolto" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "GabelMehr" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "kleinFlageolett" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) -#, fuzzy +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) msgid "Default setting" -msgstr "Standartbebalkung" +msgstr "Standardeinstellung" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "Das hier nur, damit die Bezeichnungen der Akkordstile" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "gesetzt werden, kann entfernt werden, wenn nicht" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "gebraucht wird." -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "Hier ändern für andere globale Systemgröße" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "{" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "}" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) -#, fuzzy +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) msgid "sustainNotes" -msgstr "BassNoten" +msgstr "HalteNoten" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "halsAn" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "halsAus" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "meineAkkorde" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "Noten" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "maj9 und 6(add9) verändern" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "Ausnahmemusik sind Akkorde mit Textbeschriftung" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "chExceptionMusic" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "Noten zu Liste konvertieren und an existierende Ausnahmen anhängen" -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "chAusnahmen" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "Noten" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "meineAkkorde" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "Akkorde" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) msgid "\\break" msgstr "\\break" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "StropheEins" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "StropheZwei" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "Sop" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "origPartitur" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "Jede Clip-Region ist ein (START . END) Paar" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "wobei beide rhythmische Plätze sind" -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "(make-rhythmic-locations TAKT-NUMMER ZÄHLER NENNER)" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "bedeutet ZÄHLER/NENNER ganze Noten in den Takt mit Nummer TAKT-NUMMER" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "Tonhöhen bestimmten Farben zuweisen." -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "Tonhöhen und Alteration vergleichen (nicht Oktaven)." -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "piuF" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "NotenHoch" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "NotenRunter" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "Zeige Klammer" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) msgid "hide text span" msgstr "Verstecke Text-Strecker" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) msgid "show glissando" msgstr "Zeige Glissando" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +msgid "ten" +msgstr "Ten" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "Fünzig" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +msgid "finger" +msgstr "Finger" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" +"optionale Veränderung, um Warnungen für Fingersatz größer als 5 zu entfernen" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) msgid "parenF" msgstr "KlammerF" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) msgid "the hidden measure and bar line" msgstr "versteckter Takt und Taktlinie" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "\\cadenzaOn schaltet automatische Taktzahlberechnung aus" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "in halben Abständen," + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "sodass Hälse 9.5 Systemzwischenräume lang werden" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" +msgstr "Hälse werden normalerweise nach oben verlängert," + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "sodass wir den Hals hier um den gleichen Wert runterschieben, " + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "um den er verlängert wird - in diesem Fall (19 - 7) / 2" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" +msgstr "(7 ist der Standard)" + +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "oben" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "unten" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "Allgemeine Eigenschaften von Bund-Diagramme bestimmen" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "Melodie" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "C-Dur für Gitarre, kein Barre, Standardeinstellungen" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "knapper Stil" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "C-Dur für Gitarre, Barre auf dem dritten Bund" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "ausführlicher Stil" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "Größe 1.0" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "römische Bundnummer, Fingersatz unter der Saite, grades Barre" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "Standardgröße" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "quer liegend, arabische Nummern, M (mute) für stumme Saite" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" "kein Barre, Bundbezeichnung unten oder links, kleine Schrift für stumme Saite" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "einfacher D-Akkord" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "größere Punkte, zentrierte Punkte, weniger Bünde" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "Bezeichnung darunter" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" msgstr "Grob-Werkzeuge" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." msgstr "" "Das sind wörtliche Neufassungen einiger C++-Methoden, die der Ambitus-" "Engraver benutzt." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" msgstr "Ambitus-Datenstruktur" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" msgstr "Die -Klasse enthält die verschiedenen Grobs," -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" msgstr "die erstellt werden, um den Ambitus zu setzen:" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "" "- ambitus-group: Der Grob, der alle Komponenten eines Ambitus gruppiert" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" msgstr "(Ambitus grob);" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "" "- ambitus-line: Die vertikale Linie zwischen oberem und unterem Ambitus" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" msgstr "Noten (AmbitusLine grob);" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "" "- ambitus-up-note und ambitus-down-note: Notenköpfe und Versetzungszeichen" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" msgstr "für die obere und untere Note des Ambitus (siehe die" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." msgstr "-Klasse unten)." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "" "Die anderen Stellen definieren den Tonart- und Schlüsselkontext des " "Engravers:" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "- start-c0: Position des zweigestr. Cs zu Begin des Stücks." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "Das wird benutzt, um die Ambitus-Noten nach ihren Tonhöhen zu setzen" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "- start-key-sig: Die Tonart am Anfang des Stückes." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "Sie wird benutzt, um zu bestimmen, ob Versetzungszeichen neben" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) msgid "notes." msgstr "den Ambitusnoten gesetzt werden müssen." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "Akzessor für die Daten der obersten und untersten Note eines Ambitus" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" "Die -Klasse enthält die Grobs, die spezifisch für den Ambitus " "sind" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "(obere und untere) Noten" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "- head: ein AmbitusNoteHead-Grob" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "- accidental: ein AmbitusAccidental-Grob, der möglicherweise neben" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "einem Ambitus-Notenkopf gesetzt wird." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "Weiter:" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "- pitch ist die absolute Tonhöhe der Note" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "- cause ist das Notenereignis, das die Ambitusnote hervorrauf, also" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "die untere oder obere Note der betrachteten Musiksequenz." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) msgid "Ambitus engraving logics" msgstr "Logik der Ambitusfunktion" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "Neufassung des Codes von @file{lily/ambitus-engraver.cc}." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "Definition des Ambitus-Engravers" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "Beispiel" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "Bunddiagramme für Cuatro hinzufügen" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "Achtung: dieser Abschnitt gehört in eine eigene Datei" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "predefined-cuatro-fretboards.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "und wird mit \\include in jede Quelldatei eingefügt" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "cuatroStimmung" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "dSexte" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" msgstr "dDur" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "aGrSept" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "dGrSept" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" msgstr "gDur" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "Ende der eigenständigen Datei /predefined-cuatro-fretboards.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "primerosBezeichnungen" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "primeros" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "\\override FretBoard" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "#'(fret-diagram-details string-count) = #'4" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "basisMelodie" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "Muss geringer sein als die aktuelle Zahl der Notenlinien" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "fixA" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "fixB" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "\\\" (make-string 36 #\\-))" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "neue Stimme ( = \\voiceOne), versteckt" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "Glissando an Notenkopf angehängt" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "originale Stimme mit Akkorden umgruppiert," -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "so dass Glissando an a & c gefügt wird" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" -msgstr "" +msgstr "Kreis" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "Zwei Funktionen für (De)Crescendo-Strecker, für die man explizit den" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "Streckertext angeben kann." -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) msgid "mycresc" msgstr "meinCresc" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) msgid "mydecresc" msgstr "meinDecresc" @@ -7405,1542 +8713,1623 @@ msgstr "" msgid "crpoco" msgstr "crpoco" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" -"Bestehenden \\cresc. \\dim und \\decresc umdefinieren, sodass sie " -"nachgestellt werden können" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -msgid "cresc" -msgstr "Cresc" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "Dim" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -msgid "decresc" -msgstr "Decresc" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "NR 1.7 Editorische Anmerkungen" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "Beethoven, Op. 31, No. 3" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "Klaviersonate 18, 2. Satz, Scherzo" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "Takte 9--14" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "RH-System" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "LH-System" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "PostScript ist eine registrierte Handelsmarke von Adobe Systems Inc." -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "Beispielnoten" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "topStimme" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "bottomStimme" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "hoom" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "pah" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "setup·for·Request->Element·conversion.·Guru-only" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "DasSystem" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "explizit instrumentName angeben, damit keine" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "seltsamen Effekte auftreten, wenn die Instrumentbezeichnungen" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "Klaviersysteme erstellt werden" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "MeineStimme" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "muss vor allem anderen kommen" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "\\consists·\\\"Rest_engraver\\\"" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "L. v. Beethoven, Op. 49 no. 1" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "Klaviersonate 19 - \\\"Leichte Sonate\\\"" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "Takte 1--12" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "\\layout {" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "\\context {" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "\\Score" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "\\override SpacingSpanner #'base-shortest-duration =" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "#(ly:make-moment 1 20)" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "Sonata II, Allemanda" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "Takte 1 - 88" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "Coded by Neil Puttock; modified by Carl Sorensen" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) msgid "extendOn" msgstr "extendOn" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "extendOff" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "violinoI" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "violinoII" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "violone" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "zentrierteBeschriftung" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "Hier ausschneiden ------- Beginn von 'flamenco.ly'" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "Textanweisungen" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "abanico" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "rasgueaso" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "alzapua" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "Schlag-Symbole" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "SchlagHoch" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "schlagRunter" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "Golpe-Symbol" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "golpe" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "SchlagHochGolpe" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "iHochGolpe" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "Schläge für alle Finger" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "pUp" msgstr "pHoch" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "pRunter" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) msgid "iUp" msgstr "iHoch" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "iRunter" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) msgid "mUp" msgstr "mHoch" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "mRunter" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) msgid "aUp" msgstr "aHoch" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "aRunter" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) msgid "xUp" msgstr "xHoch" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "xRunter" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "Sehr geschickt :)" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "NtoleAus" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "NtoleAus" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "NtolenAn" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "köpfeAus" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "köpfeEin" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "Hier ausschneiden ---- Ende 'flamenco.ly' " -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "Beispiel 1" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "Beispiel 2" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "Beispiel 3" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "Beispiel 4" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "schlag" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) msgid "example" msgstr "Beispiel" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" -msgstr "" -"Tipp von http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00215." -"html" - -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) msgid "lyr" msgstr "Text" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "Erstelle neue leere Bundgrifftabelle" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "Erstelle neue Bundgrifftabelle als Kopie von default-fret-table" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "Füge einen Akkord zu custom-fretboard-table-one hinzu" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" +msgstr "Füge einen Akkord zu custom-fretboard-table-two hinzu" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "Akkord für Ukulele" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "Ein Akkord für Ukulele, mit Formatierung in der Definition enthalten" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "1.2 * Größe, 4 Saiten, vier Bünde, Fingersatz unterhalb" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" "Punktgröße .35 von Bundzwischenraum, Punktposition .55 von Bundzwischenraum" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "Diese Akkorde sind in normaler Ausrichtung" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "110% der Standardgröße" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "Doppel-Barré um die Barré-Funktion zu testen" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "C-Dur für Gitarre, mit Barré auf dem dritten Bund" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "einfacher D-Durakkord, Dicke des Bundes oben groß" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "Diese Akkorde werden quer ausgerichtet" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "Diese Akkorde werden quer auf dem Kopf ausgerichtet" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "Abkürzungen" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "Fingersatzrichtung" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "sfol" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "sfor" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "sfod" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "sfou" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "Seitennummerrichtung" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "ssnol" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "(runter rechts hoch)" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "ssnou" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "ssnoud" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" msgstr "ssnor" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "Fingersatz-Verschiebung definieren" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "FO" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "Beschriftungen" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" msgstr "Rit" -#. Documentation/snippets/fretted-headword.ly:56 (variable) -#, fuzzy +#. Documentation/snippets/fretted-headword.ly:57 (variable) msgid "dimin" -msgstr "Diminuendo" +msgstr "dimin" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "Andantino" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "BenMarcato" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "pdolce" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "DIE NOTEN %%%" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "T. 1" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "T. 2" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "T. 3" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "T. 4" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "T. 5" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "Ende T. 6" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "T. 7" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "Beginn T. 8" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "Ende T. 8" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "Ende T. 9" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "T. 10" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "Beginn T. 11" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "Ende T. 11" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "Beginn T. 2" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "Ende T. 2" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "Neuer Abschnitt in A-Moll" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "Beginn T. 6" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "Ende T. 6" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "T. 8" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "Beginn T. 9" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "Ende T. 9" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "T. 11" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "Gitarre" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "gedrFlageolett" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "Flageolett (AH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "Flageolett durch drücken (PH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "Flageolett durch Klopfen (TH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "Flageolett durch Berührung (TCH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "gebundeneSaiten" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" +"Erstelle einen Stencil für ein Fähnchen, indem der Glyph in der Schriftart " +"gesucht wird" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" -msgstr "" +msgstr "SchnipselBeispielnoten" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "damit werden sie einen Notenlinienzwischenraum hochgeschoben" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "Gitter einstellen" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "den Gitter-Abstand auf eine Viertelnote setzen" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" "damit werden sie nach rechts um einen halben Notenlinienabstand verschoben" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "versteckt System und Noten so dass nur die Gitterlinien sichtbar sind" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "Blindnoten damit die Noten regelmäßig verteilt sind" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "Gitterlinien horizontal unter Notenköpfen zentrieren" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "Länge und Position von Linien setzen:" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" "zwei Notenlinienzwischenräume über der Mittellinie auf dem versteckten System" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "bis vier Zwischenräume unter der Mittellinie des sichtbaren Systems" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "Bundzahlen verstecken: nützlich, um Bewegung von/zu beliebigem" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "Punkt des Griffbretts zu notieren." -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "versteckeBundZahl" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "Trommel" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "" "Lösung 1: Benutzung von einfacher Beschriftung mit horizontaler Verschiebung" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "" "Nachteil: nur Beschriftung, keine Dynamik, also wirkt sich \\dynamicDown" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "usw. nicht aus" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "semppBeschriftung" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "Lösung 2: Dynamik-Skript benutzen und mit" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "·\\once\\override ... #'X-offset = ..·verschieben" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "Nachteil: \\once \\override muss jedes Mal geschrieben werden" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "semppK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "Lösung 3: Dynamik-Skript so verschieben mit padding, dass es" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "automatisch durch·center-alignment·an·die·richtige·Position·kommt" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" "Nachteil: Die Verschiebung lässt den Platz frei, dort kann nichts anderes " "stehen" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "semppT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "Lösung 4: Dynamik, Dimensionen des zusätzlichen Textes auf 0 setzen" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "Nachteil: LilyPond glaubt, dass \\\"sempre\\\" keinen Platz einnimmt" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "und kann·andere·Elemente·hier·hintun·-->·Kollisionen" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "" "Nachteil: Es gibt offensichtlich noch Ränder, so dass es nicht genau die" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "gleiche Postionierung ist wie ohne den zusätzlichen Text" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "semppM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" "Lösung 5: Dynamik mit ausdrücklicher Verschiebung innerhalb von Scheme-" "Funktion" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "semppG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "" "Lösung 6: Dynamik mit expliziter Ausrichtung. Das wirkt sich nur dann aus," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "wenn X-offset auch gesetzt wird!" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "Nachteil: DynamicText #'X-offset muss gesetzt werden" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "Nachteil: An der rechten Ecke des zusätzlichen Textes ausgerichtet," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "nicht an der Mitte von pp" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "semppMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "s" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) msgid "sMarkup" msgstr "sBeschriftung" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "sK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "sT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "sM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "sG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "sMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "Auf falsch (##f) setzen ergibt gleiches Ergebnis" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "Harmonien" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "DAS IST DER BEFEHL UM AKKORDBEZEICHNUNG ZU VERSCHIEBEN" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "DIESE ZEILE IST DIE ZWEITE METHODE" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "DAS IST DER BEFEHL UM DAS BUNDDIAGRAMM ZU VERSCHIEBEN" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "HIER DIE ZWEITE METHODE" -#. Documentation/snippets/hymn-template.ly:50 (variable) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:61 (variable) msgid "Timeline" -msgstr "Zeitangabe" +msgstr "Zeitachse" -#. Documentation/snippets/hymn-template.ly:82 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:93 (comment) msgid "Start score" -msgstr "Struktur einer Partitur" +msgstr "Beginn Partitur" -#. Documentation/snippets/hymn-template.ly:84 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" -msgstr "Das Klaviersystem" +msgstr "Beginn Klaviersystem" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" -msgstr "" +msgstr "Beginne Staff = RH" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" -msgstr "" +msgstr "Beginne Voice = \\\"Soprano\\\"" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" -msgstr "" +msgstr "Beende Voice = \\\"Soprano\\\"" -#. Documentation/snippets/hymn-template.ly:93 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" -msgstr "Stimme·\\\"1\\\"" +msgstr "Beginn Stimme·\\\"Alto\\\"" -#. Documentation/snippets/hymn-template.ly:97 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" -msgstr "Stimme·\\\"1\\\"" +msgstr "Ende Stimme·\\\"Alt\\\"" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" -msgstr "" +msgstr "Beende Staff = RH" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" -msgstr "" +msgstr "Beginne Staff = LH" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" -msgstr "" +msgstr "Beinne Voice = \\\"Tenor\\\"" -#. Documentation/snippets/hymn-template.ly:106 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" -msgstr "Stimme·\\\"1\\\"" +msgstr "Ende Stimme·\\\"Tenor\\\"" -#. Documentation/snippets/hymn-template.ly:107 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" -msgstr "Stimme·\\\"1\\\"" +msgstr "Beginn Stimme·\\\"Bass\\\"" -#. Documentation/snippets/hymn-template.ly:111 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" -msgstr "Stimme·\\\"1\\\"" +msgstr "Ende Stimme·\\\"Bass\\\"" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" -msgstr "" +msgstr "Beende Staff = LH" -#. Documentation/snippets/hymn-template.ly:113 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:124 (comment) msgid "End pianostaff" -msgstr "Das Klaviersystem" +msgstr "Ende Klaviersystem" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" -msgstr "" +msgstr "Bginne paper-Umgebung" -#. Documentation/snippets/hymn-template.ly:135 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" -msgstr "keine einzelne erste Note" +msgstr "erstes System nicht einrücken" -#. Documentation/snippets/hymn-template.ly:136 (comment) -#, fuzzy +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" -msgstr "Länge und Position von Linien setzen:" +msgstr "Zeilenlänge passend zu Noten kürzen" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" -msgstr "" +msgstr "Beende paper-Umgebung" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "discantusIncipit" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "altusIncipit" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "zwei Takte" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "tenorIncipit" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "bassusIncipit" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "keine Taktstriche auf Systemen oder Gesangstext" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" "mit den zwei nächsten Befehlen wird der Text zwischen den Taktstrichen " "gehalten" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "Den \\\"\\remove\\\"-Befehl einkommentieren, um" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "auch an den Takten umbrechen, wo eine Note aus dem Takt heraussteht" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "Der Befehl ist hier auskommentiert" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "diesem kleinen Beispiel, aber für größere Partituren" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "ergeben sich bessere Zeilenumbrüche und" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" +"auch die Aufteilung der Noten verbessert sich, wenn der folgende Befehl " +"benutzt wird:" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "\\remove·\\\"Forbid_line_break_engraver\\\"" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "Stimmung" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" -msgstr "" +msgstr "machProzent" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "#(set-global-staff-size·16)" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "Einige Makros %%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "sl" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "nsl" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "crOn" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "crOff" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "Akkordbezeichnungen hierher" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "jazzAkkorde" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "Taktart/Tonart %%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "Tonart" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "############·Hörner·############" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "------·Trompete·------" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "trpt" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "trpHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "trompete" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "------·Altsaxophon·------" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "altHarmonien" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "altSax" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "------·Baritonsaxophon·------" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "bari" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "bariHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "bariSax" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "------ Posaune ------" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "pos" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "PosHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "posaune" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "############·Rhythmus-Abschnitt·#############" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "------ Gitarre ------" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "gtr" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "gtrHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "------ Klavier ------" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "rhOben" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "rhUnten" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "lhOben" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "lhUnten" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "KlavierRH" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "KlavierLH" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "------ Bassgitarre ------" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "------ Schlagzeugt ------" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "SchlagInhalt" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "Alles zusammengefügt: %%%%%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "Horn" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "altsax" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "bariakk" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "barsisax" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "Akkorde" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "M. Ravel, Sonatine (1905)" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "Erster Satz" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "LangeFermate" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "SopranNoten" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "Strophe 1" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "Frauen" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "Männer" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "Makam-Einstellungen initialisieren" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "Bassfiguren" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "von oberer Notenlinie (Position 2) bis Mitte (Position 0)" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "von Mitte bis eins über der Mitte (Position 1)" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "sprechAn" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "sprechAus" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "Candide, Voltaire" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "Letze Taktlinie ist nicht unterbrochen" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "normalPos" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "dashPlus" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "Ntolen so definieren, dass sie erweiterbar sind" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "um alle Objekte bis zu nächsten Note" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "oder auch nur Leerzeichen zu überbrücken" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) -#, fuzzy +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "offeneSaiteObertöne" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "erster Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "zweiter Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "dritter Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "vierter Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "fünfter Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "sechster Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "siebter Oberton" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "achter Oberton" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) msgid "space for instrumentName" -msgstr "Tasteninstrumente" +msgstr "Platz für instrumentName" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" -msgstr "" +msgstr "Platz für shortInstrumentName" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "FlötenNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" -msgstr "" +msgstr "Tonhöhen wie geschrieben auf einem Manuskript für Klarinette in A" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." -msgstr "" +msgstr "werden auf C transponiert." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "KlarinetteNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "TrompteNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" -msgstr "" +msgstr "Tonartvorzeichen werden für Hörner oft ausgelassen" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) -#, fuzzy +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) msgid "hornMusic" msgstr "HornNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "SchlagzeugNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "AlteinsNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "AltzweiNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) msgid "altoILyrics" msgstr "AlteinsText" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoIILyrics" msgstr "AltzweiText" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "KlavierRHNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "KlavierLHNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "ViolineeinsNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "ViolinezweiNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "BratscheNoten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." -msgstr "" +msgstr "shortInstrumentName, midiInstrument usw." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" -msgstr "" +msgstr "kann auch hier eingestellt werden" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" -msgstr "" +msgstr "Bestimme, dass geschriebenes C'' in den Noten" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" -msgstr "" +msgstr "klingendes B bedeutet, für" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." -msgstr "" +msgstr "Ausgabe mit klingenden Tonhöhen, wie MIDI." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" -msgstr "" +msgstr "Notenausgabe für B-Klarinette" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "" +"\\set Staff.autoBeaming = ##f % alle automatischen Balken ausgeschaltet" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" -msgstr "" +msgstr "um Hälse aufzuteilen" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" -msgstr "" +msgstr "\\autoBeamOff % gilt für kombinierte Hälse nach oben" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) -#, fuzzy +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" -msgstr "gehört zu \\\"fas\\\"" +msgstr "gehört zu den Hälsen nach unten" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "Stock" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "Zeilenumbrüche innerhalb von N-tolen zulassen" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "Balken können an Umbrüchen gebrochen werden" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "Manuellen Zeilenumbruch in N-tole" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "Pedal" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "L. v. Beethoven" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "Klaviersonate 21 - Dem Grafen von Waldstein gewidmet" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "Choral Takte 34--40+" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "RH Stimme 1" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "(" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr ")" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "RH Stimme 2" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "tab" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" -msgstr "MMR -- Mehrtaktige Pause (Multi Mesure Rest)" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" -msgstr "Mehrtaktpausen werden unter die vierte Linie gesetzt" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" +msgstr "Ganztaktpausen werden normalerweise unter die vierte Linie gesetzt" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "Sie können mit override verschoben werden" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" -msgstr "Ein Wert von O ist die Standardposition" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" +msgstr "" +"Ganztaktpausen in Stimmen mit ungerader Zahl sind unter der obersten Linie" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" -msgstr "hiermit wird die Pause zur Mittellinie verschoben" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" +msgstr "Ganztaktpausen in geraden Stimmen sind unter der untersten Linie" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" -msgstr "" -"Mehrtaktpausen in Stimmen mit ungerader Zahl sind unter der obersten Linie" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" +msgstr "Ganztaktpausen in beiden Stimmen bleiben getrennt" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" -msgstr "Mehrtaktpausen in geraden Stimmen sind unter der untersten Linie" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" +msgstr "Ganztaktpausen in mehr als zwei Stimmen zu trennen," -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" -msgstr "auch in leeren Takten bleichen sie getrennt" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" +msgstr "macht einen override-Befehl notwendig" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" -msgstr "Hiermit werden sie zusammegefügt, auch wenn sie zwei Stimmen sind" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" +msgstr "Für komprimierte Ganztaktpausen braucht man noch einen override-Befehl" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" +msgstr "in allen Stimmen, damit nicht die Pausen nicht mehrmals gesetzt werden" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "Segno-Zeichen als Übungszeichen definieren und Größe evtl. anpassen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "\\once·\\override·Score.RehearsalMark·#'font-size·=·#3" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "Coda-Zeichen als Übungszeichen definieren und Größe evtl. anpassen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "Soll Coda auf einer neuen Zeile sein?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "Coda NICHT auf neuer Zeile: benutze \\nobreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "Coda auf neuer Zeile: NICHT \\nobreak benutzen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "\\noBreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "Her beginnt der Trick!" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" "\\cadenzaOn unterdrückt die Taktzählung und \\stopStaff entfernt Notenlinien" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "Einige Beispiele für mögliche Textanzeige" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "Text an Zeile ausgerichtet" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "==================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "Text zur gewünschten Position verschieben" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "\\once·\\override·TextScript·#'extra-offset·=·#'(·2·.·-3.5·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "|·s1*0^\\markup·{·D.S.·al·Coda·}·}" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "Text zentriert" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "====================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "\\once·\\override·TextScript·#'extra-offset·=·#'(·6·.·-5.0·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "|·s1*0^\\markup·{·\\center-column·{·D.S.·\\\"al·Coda\\\"·}·}" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "Text und Symbole zentriert" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "===============================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" @@ -8948,253 +10337,244 @@ msgstr "" "Text zur gewünschten Position verschieben und Platzbedarf für " "optimalesErgebnis verändern." -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "\\once·\\override·TextScript·#'extra-offset·=·#'(·8·.·-5.5·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" "wenn der unfold-Zähler höher gesetzt wird, vergrößert sich der Platz ohne " "System" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "Taktzählung aufnehmen und Notenlinien anzeigen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "Soll Coda auf einer neuen Zeile sein?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "Coda NICHT auf neuer Zeile: NICHT \\break benutzen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "Coda auf neuer Zeile: \\break benutzen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "Schlüssel/Tonart" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "Coda-Zeichen als Übungszeichen setzen und Position/Größe anpassen" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" "Coda-Zeichen über den Schlüssel setzen abhängig von Zeilenpositionvon Coda" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "Coda NICHT auf neuer Zeile:" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "\\once·\\override·Score.RehearsalMark·#'extra-offset·=·#'(·-2·.·1.75·)" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "Coda auf neuer Zeile:" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "Die Coda" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "Erste Taktnummer soll auch gesetzt werden" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "Taktnummern am Zeilenende verbieten und woanders erlauben" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "Einen Kasten um die folgenden Taktnummern zeichnen" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "Einen Kreis um die folgenden Taktnummern zeichnen" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "Metronomangabe unter dem System" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "Übungszeichen unter dem System" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "Bassklarinette" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "Schlagzeug" #. Documentation/snippets/putting-lyrics-inside-the-staff.ly:24 (context id) -#, fuzzy msgid "voc" -msgstr "Gesang" - -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) -msgid "quoteTest" -msgstr "zitatTest" - -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) -msgid "french horn" -msgstr "Waldhorn" +msgstr "ges" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) msgid "quoteMe" msgstr "zitiereMich" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) msgid "original" msgstr "Original" -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" +msgstr "zitatTest" + +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" +msgstr "Waldhorn" + +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "Umfang für Paetzold-Kontrabassblockflöte" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "BeginVorschlagNoten" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "EndVorschlagNoten" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "Um die Einstellung global zu benutzen, diese Zeile benutzen:" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "\\override·VerticalAxisGroup·#'remove-first·=·##t" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "Um Einstellung global zu benutzen, folgende Zeile auskommentieren" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "und die Zeile im \\layout-Block oben benutzen" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "Standartbebalkung" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "Neue Werte für Balkenenden" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "Makro um einzelnen Strich zu setzen" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "rs" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "Funktoin, um eine bestimmte Anzahl an Strichen zu setzen" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "comp" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "Beethoven, Op. 81a" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "Klaviersonate 26 - Das Lebewohl" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "2. Satz - Abwesenheit" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "Takte 31--34" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "\\override SpacingSpanner #'strict-grace-spacing = ##t" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) msgid "sopranonotes" -msgstr "Sopran" +msgstr "SopranNoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) msgid "sopranowords" msgstr "SopranText" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) msgid "altonotes" msgstr "AltNoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) msgid "altowords" msgstr "AltText" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) msgid "tenornotes" msgstr "TenorNoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) msgid "tenorwords" msgstr "TenorText" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) msgid "bassnotes" msgstr "BassNoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) -#, fuzzy +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) msgid "basswords" msgstr "BassText" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "Strophe" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "KeinHals" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "KeinNotenkopf" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "NullBalken" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "systemTabZeile" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" @@ -9202,78 +10582,78 @@ msgstr "" "Zeigt eine horizontale Zeile. Vertikale Linie (wie eine Taktlinie) wirdmit " "einer Gitterlinie simuliert" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" "nächste Zeile auskommentieren, um Notenköpfe während des Schreibens zu sehen" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "Balken zwischen Achteln wird benutzt um Zug-Linie zu zeichnen" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "Zug-Linie schnell schreiben:" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" "1. wiederholt 'c·c·c·c·c·c·c·c·|' über die gesamte Länge des Stückes " "schreiben" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "2. \\NoNoteHead auskommentieren" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "3. kompilieren" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "4. Positionen mit Zugrichtungsänderung markieren." -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "im Partiturbild auf die Position der Zug- oder Schub-Anfänge klicken" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "(über dem Notenkopf ändert sich die Maus in eine Hand)." -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" "Die Maus in der Quelldatei befindet sich dann an der gewünschten Position" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "a) wenn ein Schub hier beginng, 'c' mit 'e[' ersetzen" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "b) wenn ein Zug hier beginnt, 'c' mit 's' ersetzen" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "5. in den Überschreibmodus wechseln mit der \"Einfg\"-Taste." -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "6. Für Zug 'c' mit 's' überschreiben." -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "7. Für jeden Schub das letzte 'c' mit 'e]' ersetzen." -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "8. In den Einfügen-Modus wechseln." -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" @@ -9281,20 +10661,20 @@ msgstr "" "9. Es sollte jetzt aussehen wie (s·s·e[·c·|·c·c·c·c·c·c·c·c·|·c·c·c·c·c·c·e]" "·s·s)" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "10 \\NoNoteHead wieder einkommentieren" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "Akkordeonmelodie in Tabulaturen-Partitur" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "1. Eine Kopie der Klaviermelodie unten benutzen" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" @@ -9302,7 +10682,7 @@ msgstr "" "2. Klaviermelodie in Zug- und Schubteile teilen entsprechend systemTabZeile, " "was schon fertig ist" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" @@ -9310,57 +10690,57 @@ msgstr "" "3. Für jede Zeile: verdoppele die Zeile. die erste bleibt als Referenz, die " "zweite wirdmit dem Transformationspapier verändert" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "oder den Makros 'conv2diaton·push.bsh'·und·'conv2diaton·pull.bsh'·" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "Tipps:" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "- In jEdit Suchen und Ersetzen die Option wählen: 'Keep Dialog'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "AccordionTabTwoCBesDur" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "Zug 1" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "8·8·8·|" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "Schub 2" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "4····|" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "Zug 3" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "2·r8·}" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "AkkordionTab" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "1. Eine Kopie der Klaviermelodie oben machen" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" @@ -9368,76 +10748,76 @@ msgstr "" "3. Für jede Zeile: Zeile verdoppeln. Erste bleibt unverändert (Referenz), " "dann" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "wird die zweite anhand des Transformationspapiers verändert" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "-" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "Die·vertikale·Linie·(wie·eine·Taktlinie) im" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "System BassRhythmus·ist von·einer·Gitterlinie·simuliert" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "4/4-Takt. Wie viele Takzeiten im Takt" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "Die nächste Zeile muss sehr oft angepasst werden" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "systemStimme" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "asystemStimme" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "systemAkkordionMel" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "Versetzungszeichen für jede Note," -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "im Rest des Taktes nicht erinnern." -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "BassRhythmus" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "LyricBassRhythmI" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "systemBassRhythmus" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "SystemBass" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "Das ist kein RhythmicStaff weil hier Text hinzugefügt werden muss" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "x.y" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" @@ -9445,785 +10825,822 @@ msgstr "" "Zeigt eine horizontale Linie. Die vertikale Linie (wie eine Taktlinie) " "istvon einer Gitterlinie simuliert" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" "Suche 'grid' (Gitter) in dieser Seite um alle wichtigen Funktionen zu finden" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) -#, fuzzy +#. Documentation/snippets/setting-system-separators.ly:37 (variable) msgid "notes" -msgstr "den Ambitusnoten gesetzt werden müssen." +msgstr "Noten" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "Genauso wie \\flageolet, nur etwas kleiner" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "Die zweite Fermate wird ignoriert!" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "NR 1.5 Gleichzeitig erscheinende Noten" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "L. v. Beethoven, Op. 111" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "Klaviersonate 32" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "2. Satz: Arietta - Adagio molto semplice e cantabile" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "Takte 208--118" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) msgid "trillFlat" msgstr "TrillerB" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "RH Stimme 1" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "RH Stimme 2" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) msgid "LH staff" msgstr "LH-System" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "StropheI" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "StropheII" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "Akkorde für die Akkordbezeichnung und Bunddiagramme hierher" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "systemMelodie" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "Noten hierher" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "stimmeMelodie" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "Gleiten" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "title = \\\"Le Lac des Cygnes\\\"" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "subtitle = \\\"Danse Napolitaine\\\"" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "arranger = \\\"arr. Laurence Sardain\\\"" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "footer = \\\"Mutopia-2006/12/22-896\\\"" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "trompete" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "tambourin" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "tambourinMidi" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "prima" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "obenA" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "untenA" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "Score.Stem benutzen, um es für die gesamte Partitur zu setzen." -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "stringNumberSpanner" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "GeigeEins" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "GeigeZwei" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "Bratsche" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "piece.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "(Globale Definitionen)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "Geigeeins" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "**********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "Geigezwei" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "Bratsche" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "Cello" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "**********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "Das sind die anderen Dateien, die gespeichert werden müssen" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "score.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "(Das ist die Hauptdatei)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" -msgstr "" -"\\include \\\"piece.ly\\\" %%% Zeile einkommentieren, wenn eine " -"extra Datei benutzt wird" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "Diesen Block einkommentieren, wenn zusätzliche Dateien benutzt werden" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" +msgstr "\\include \\\"piece.ly\\\"" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "{ Diesen Block einkommentieren, wenn extra Dateien benutzt werden" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "vn1.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "(Stimme der ersten Geige)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "vn2.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "(Stimme der zweiten Geige)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "vla.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "(Stimme der Bratsche)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "vlc.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "(Stimme des Cellos)" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "Balkenuntergruppenlänge als Achtel definieren" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "Balkenuntergruppenlänge als Sechszehntel definieren" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "ignorieren" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "NR 1.8 Text" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "L. v. Beethoven, Op. 110" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "Klaviersonate 31" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "Takte 1--7" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) msgid "RH staff" msgstr "RH-System" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" "Neuer Befehl um einen Kasten mit drei Seiten (Nord, West und Süd) zu " "erstellen" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "Basierend auf dem box-stencil-Befehl, definiert in scm/stencil.scm" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "" "Achtung: \\\";\\\" wird benutzt, um eine Zeile in Scheme auszukommentieren." -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" "Der entsprechende Beschriftungbefehl, basierend auf dem \\box-Befehl, " "definiert" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "in scm/define-markup-commands.scm" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "testen:" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "Den Stil permanent ändern" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "Zurück zum Standard:" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "single-digit (einfache Zahl)-Stil für die nächste Taktangabe" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "Taktstriche auf dem System unsichtbar machen" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "incipitDiscantus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "IncipitAltus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "IncipitTenor" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "IncipitBassus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" "StaffGroup wird anstelle von ChoirStaff benutzt, um Taktstriche zwischen " "Systemen zu haben" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "Gesangstext von Bass außerhalb der StaffGroup, um Taktstriche" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "zwischen dem Text ·zu·vermeiden" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" "die nächsten drei Anweisungen sind, um den Text zwischen den Taktstriche zu " "halten" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "Zeilenumbrauch auch zu erlauben, wenn Noten über Taktlinie reichen" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "Der Befehl ist auskommentiert in" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "AuflösungszeichenNoten" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "Standard-Sopranschlüssel" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "Standard-Bassschlüssel" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "Baritonschlüssel" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "Standard-Chortenorschlüssel" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "Nicht-Standard-Schlüssel" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "Folgende Schlüsselwechsel erhalten nicht" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "das normale Verhältnis zwischen Noten und Schlüsseln" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "Wieder der normale Schlüssel:" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) msgid "Abreviations" msgstr "Abkürzungen" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "db" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "dub" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "dubetc" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "ub" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "udb" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "udbetc" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "fermaTa" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "accel" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "ritar" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "Saiten" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "svib" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "pvib" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "mvib" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "sulp" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "norm" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "quatre" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "Noten verschieben" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "shift" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "shifta" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "shiftb" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "Klammer" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "aniente = \\\"a niente\\\"" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "aniente" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "tupletbp" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "Fähnchen [Notenkopf - Hals]" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "keinFähnchen" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "Funktionen" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "Instrumente" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "GeigeSolo" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "Takt 1" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "Takt 2" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "Takt 3" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "Takt 4" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "Takt 5" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "Takt 6" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "\\featherDurations #(ly:make-moment 2 3)" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "Takt 7" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "Takt 8" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "Takt 9" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "Partitur" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) -#, fuzzy +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) msgid "testnotes" -msgstr "StrophenNoten" +msgstr "testNoten" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "Grobs für jeden Notenkopf anzeigen:" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "\\override NoteHead #'before-line-breaking = #display-grobs" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "oder nur für einen:" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "Parallelogramm" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "meineNotenköpfe" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "normaleNotenköpfe" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "Ende von verbatim -- Dieser Kommentar ist ein Trick um texinfo.tex" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "" "daran zu hindern, sich an nicht-europäische UTF-8-Untergruppen zu stören" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" "Diese Datei mit einem Editor bearbeiten, der in Unicode speichern kann, wie " "etwa GVIM, GEDIT, Emacs" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "Kyrillische Schrift" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "Bulgarisch" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "Hebräisch" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "Japanisch" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "\\\"a·legal·song·to·you\\\"" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "Portugiesisch" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) msgid "upline" msgstr "upline" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "linkeKlammer" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "rechteKlammer" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "Textnachunten" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "Textnachoben" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "überspringeVier" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "TextA" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "TextB" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "TextC" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "TextD" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "m" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "SoprNoten" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "SopranText" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" -msgstr "frauen" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" +msgstr "Das ist nötig für Gesangstext über dem System" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" -msgstr "Männer" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" +msgstr "Das ist nötig für Gesangstext über dem System" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" -msgstr "" -"die Zeile oberhalb könnte mir der Zeile unterhalb entfernt werden, weil" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" +msgstr "die Zeile unterhalb könnte entfernt werden, weil" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "der Alt-Text sowieso unter der Altstimme sein soll" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" -msgstr "\\new·Lyrics·\\lyricsto·altos·\\altoWords" +msgstr "\\new·Lyrics·\\lyricsto·\\\"altos\\\"·\\altoWords" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "die Zeile oberhalb könnte mit der Zeile unterhalb ersetzt werden" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" -msgstr "\\new·Lyrics·\\lyricsto·basses·\\bassWords" +msgstr "\\new·Lyrics·\\lyricsto·\\\"basses\\\"·\\bassWords" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) msgid "refrain" -msgstr "RefrainB" +msgstr "Refrain" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) msgid "SoloNotes" -msgstr "HornNoten" +msgstr "SoloNoten" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) msgid "SoloLyrics" -msgstr "SoprZweiText" +msgstr "SoloText" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) msgid "SopranoNotes" -msgstr "HornNoten" +msgstr "SopranNoten" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) msgid "SopranoLyrics" -msgstr "SoprText" +msgstr "SopranText" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "BassNoten" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) msgid "BassLyrics" msgstr "BassText" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" -msgstr "topStimme" +msgstr "SoloStimme" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) msgid "SopranoVoice" -msgstr "SopranNoten" +msgstr "SopranStimme" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) -#, fuzzy +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" -msgstr "BassNoten" +msgstr "BassStimme" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" -msgstr "" +msgstr "diese Zeilen verhindern, dass leere Systeme gesetzt werden" + +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "L. van Beethoven. Symphonie Nr. 9 in D-Moll, op. 125, Finale" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "Takte 216--236" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "Text: F. von Schiller" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "Erste Taktnummer soll auch angezeigt werden" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "\\tempo \\\"Presto\\\"" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "\\compressFullBarRests R2.*8" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "Fermate näher ans System" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "\\time 4/4 \\tempo \\\"Allegro assai\\\"" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "R1" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "e''4^\\f d r2" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "e4( ^\\f d2) a8([ g)]" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "Freu -- de, Freu -- de,__" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "KlammerNoten" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "VoltaAdLib" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "Tschaikowsky" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "Nussknackersuite: VII: Danse des mirlitons (Tanz der Rohrflöten)" @@ -10245,6 +11662,93 @@ msgstr "Fußnoten" msgid "Table of Contents" msgstr "Inhaltsverzeichnis" +#~ msgid "coloredheads" +#~ msgstr "Farbenköpfe" + +#~ msgid "noclef" +#~ msgstr "Nichtschlüssel" + +#~ msgid "Colorado" +#~ msgstr "Colorado" + +#~ msgid "Engraving" +#~ msgstr "Notensatz" + +#~ msgid "dummy action to deal with parser lookahead" +#~ msgstr "Belanglose Aktion um Vorausschau des Parsers zu umgehen" + +#~ msgid "Music function syntax" +#~ msgstr "Syntax der musikalischen Funktionen" + +#~ msgid "Void functions" +#~ msgstr "Leere Funktionen" + +#~ msgid "Avoiding tweaks with slower processing" +#~ msgstr "Vermeiden von Optimierungen durch langsamere Übersetzung" + +#~ msgid "not printed" +#~ msgstr "nicht gedruckt" + +#~ msgid "Custom headers, footers, and titles" +#~ msgstr "Eigene Überschriften, Fußtzeilen und Kopfzeilen" + +#~ msgid "Aligning contexts" +#~ msgstr "Kontexte aneinander ausrichten" + +#~ msgid "CHECK: no effect?" +#~ msgstr "CHECK: keine Auswirkung?" + +#~ msgid "pScript" +#~ msgstr "pScript" + +#~ msgid "change with B if you prefer" +#~ msgstr "Mit B ändern, wenn lieber" + +#~ msgid "(B)show %%change with C if you prefer" +#~ msgstr "(B)show %%mit C ändern, wenn lieber" + +#~ msgid "" +#~ "Redefine the existing \\cresc, \\dim and \\decresc commands to use " +#~ "postfix syntax" +#~ msgstr "" +#~ "Bestehenden \\cresc. \\dim und \\decresc umdefinieren, sodass sie " +#~ "nachgestellt werden können" + +#~ msgid "cresc" +#~ msgstr "Cresc" + +#~ msgid "dim" +#~ msgstr "Dim" + +#~ msgid "decresc" +#~ msgstr "Decresc" + +#~ msgid "" +#~ "Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" +#~ "msg00215.html" +#~ msgstr "" +#~ "Tipp von http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00215." +#~ "html" + +#~ msgid "MMR - Multi-Measure Rest" +#~ msgstr "MMR -- Mehrtaktige Pause (Multi Mesure Rest)" + +#~ msgid "A value of 0 is the default position;" +#~ msgstr "Ein Wert von O ist die Standardposition" + +#~ msgid "They remain separated even in empty measures" +#~ msgstr "auch in leeren Takten bleichen sie getrennt" + +#~ msgid "This brings them together even though there are two voices" +#~ msgstr "Hiermit werden sie zusammegefügt, auch wenn sie zwei Stimmen sind" + +#~ msgid "" +#~ "\\include \\\"piece.ly\\\" %%% uncomment this line when using " +#~ "a separate file" +#~ msgstr "" +#~ "\\include \\\"piece.ly\\\" %%% Zeile einkommentieren, wenn " +#~ "eine extra Datei benutzt wird" + #~ msgid "Voice \\\"1\\\" Voice \\\"2\\\"" #~ msgstr "Stimme \\\"1\\\" Stimme \\\"2\\\"" @@ -10266,9 +11770,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "refrainA" #~ msgstr "RefrainA" -#~ msgid "set time signature and key" -#~ msgstr "Taktangabe und Tonart setzen" - #~ msgid "left-padding and right-padding" #~ msgstr "" #~ "left-padding (Verschieben nach rechts) und right-padding (Verschieben " @@ -10280,9 +11781,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "this does nothing" #~ msgstr "Das macht gar nichts" -#~ msgid "a break here would work" -#~ msgstr "ein Umbruch hier würde funktionieren" - #~ msgid "as does this break" #~ msgstr "wie dieser Umbruch" @@ -10361,9 +11859,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "a little smaller so lyrics" #~ msgstr "etwas kleiner, damit der Text" -#~ msgid "can be closer to the staff" -#~ msgstr "näher am System sein kann" - #~ msgid "" #~ "This section has not been translated yet; please refer to the manual in " #~ "English." @@ -10554,9 +12049,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "Writing pitches" #~ msgstr "Tonhöhen setzen" -#~ msgid "Absolute octave entry" -#~ msgstr "Absolute Oktavenbezeichnung" - #~ msgid "Relative octave entry" #~ msgstr "Relative Oktavenbezeichnung" @@ -10738,9 +12230,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "Beams" #~ msgstr "Balken" -#~ msgid "Automatic beams" -#~ msgstr "Automatische Balken" - #~ msgid "Setting automatic beam behavior" #~ msgstr "Einstellung von automatischen Balken" @@ -11050,9 +12539,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "Ancient vocal music" #~ msgstr "Alte Vokalmusik" -#~ msgid "Lyrics explained" -#~ msgstr "Was ist Gesangtext" - #~ msgid "Working with lyrics and variables" #~ msgstr "Mit Gesangtexten und Bezeichnern arbeiten" @@ -11179,9 +12665,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "Bowing indications" #~ msgstr "Bezeichnung des Bogens" -#~ msgid "Harmonics" -#~ msgstr "Flageolett" - #~ msgid "Snap (Bartok) pizzicato" #~ msgstr "Bartók-Pizzicato" @@ -11314,7 +12797,7 @@ msgstr "Inhaltsverzeichnis" #~ msgstr "Dudelsack" #~ msgid "Bagpipe definitions" -#~ msgstr "Dudelsack-Defintionen" +#~ msgstr "Dudelsack-Definitionen" #~ msgid "Bagpipe example" #~ msgstr "Dudelsack-Beispiele" @@ -11801,9 +13284,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "TODO moved into scheme" #~ msgstr "TODO nach Scheme verschoben" -#~ msgid "and 'extra-offset to determine its position." -#~ msgstr "'extra-offset, umd seine Position zu bestimmen." - #~ msgid "With 'extra-offset set to zero, the tick will be" #~ msgstr "Mit 'extra-offset auf Null gesetzt, wird das Häkchen" @@ -11856,9 +13336,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "\\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)" #~ msgstr "\\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)" -#~ msgid "force-hshift-Eigenschaft" -#~ msgstr "force-hshift-Eigenschaft" - #~ msgid "Laissez vibrer ties" #~ msgstr "Laissez-vibrer-Bögen" @@ -11945,9 +13422,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "Unix" #~ msgstr "Unix" -#~ msgid "Working on text files" -#~ msgstr "Arbeiten an Text-Dateien" - #~ msgid "Guitar tablatures" #~ msgstr "Gitarren-Tabulaturen" @@ -11999,9 +13473,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "A single music expression" #~ msgstr "Ein einzelner musikalischer Ausdruck" -#~ msgid "Extracting fragments of notation" -#~ msgstr "Notationsfragmente extrahieren" - #~ msgid "Common syntax issues TODO name?" #~ msgstr "Übliche Syntax-Probleme" @@ -12121,9 +13592,6 @@ msgstr "Inhaltsverzeichnis" #~ msgid "Orchestral strings sections" #~ msgstr "Notation von Orchestermusik" -#~ msgid "Artificial harmonics (strings)" -#~ msgstr "Flageolett" - #~ msgid "Guitar sections" #~ msgstr "Notation für Guitarre" diff --git a/Documentation/po/es.po b/Documentation/po/es.po index 16926a936f..ccde9e84a3 100644 --- a/Documentation/po/es.po +++ b/Documentation/po/es.po @@ -3,19 +3,19 @@ # Copyright (C) 2006 Han-Wen Nienhuys, Jan Nieuwenhuizen # This file is distributed under the same license as the lilypond package. # -# Francisco Vila , 2007, 2008, 2009, 2011. +# Francisco Vila , 2007, 2008, 2009, 2011, 2012. msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-26 17:04+0100\n" -"PO-Revision-Date: 2011-02-27 18:14+0100\n" +"POT-Creation-Date: 2012-04-25 19:39+0200\n" +"PO-Revision-Date: 2012-04-26 17:37+0200\n" "Last-Translator: Francisco Vila \n" -"Language-Team: Español" +"Language-Team: Español \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -23,17 +23,16 @@ msgstr "" #, python-format msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)." msgstr "" -"Esta página corresponde a %(package_name)s-%(package_version)s (%(branch_str)" -"s)." +"Esta página corresponde a %(package_name)s-%(package_version)s " +"(%(branch_str)s)." #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" -"Se agradecen las sugerencias para la " +"Se agradecen las sugerencias para la " "documentación. Informe de los fallos a través de la lista en español lilypond-es, " "o en inglés a través de la lista oficial de " @@ -46,14 +45,14 @@ msgstr "Otros idiomas: %s." #: postprocess_html.py:70 #, python-format -msgid "About automatic language selection." -msgstr "Acerca de la selección automática del idioma." +msgid "About automatic language selection." +msgstr "Acerca de la selección automática del idioma." -#: postprocess_html.py:324 +#: postprocess_html.py:327 msgid "stable-branch" msgstr "rama estable" -#: postprocess_html.py:326 +#: postprocess_html.py:329 msgid "development-branch" msgstr "rama de desarrollo" @@ -137,22 +136,26 @@ msgid "post-GDP" msgstr "post-GDP" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:294 (variable) -msgid "coloredheads" -msgstr "cabezasColoreadas" +#. Documentation/changes.tely:147 (variable) +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tonic" +msgstr "tónica" -#. Documentation/changes.tely:295 (variable) -msgid "noclef" -msgstr "sinclave" +#. Documentation/changes.tely:240 (variable) +#. Documentation/extending/programming-interface.itely:495 (variable) +msgid "dyn" +msgstr "matices" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "Arriba" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" -msgstr "Nuevas funcionalidades en 2.13 repecto a 2.12" +msgid "New features in 2.16 since 2.14" +msgstr "Nuevas funcionalidades en 2.16 repecto a 2.14" #. @top in Documentation/macros.itexi msgid "LilyPond --- \\\\TITLE\\\\" @@ -323,29 +326,25 @@ msgstr "GNU Free Documentation License" msgid "ADDENDUM: How to use this License for your documents" msgstr "ADDENDUM: How to use this License for your documents" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:796 (variable) msgid "traLaLa" msgstr "traLaLa" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "acción vacía para la predicción del analizador sintáctico" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3006 (variable) -#. Documentation/learning/fundamental.itely:3061 (variable) -#. Documentation/notation/changing-defaults.itely:3803 (variable) -#. Documentation/cs/learning/fundamental.itely:3259 (variable) -#. Documentation/cs/learning/fundamental.itely:3313 (variable) +#. Documentation/extending/scheme-tutorial.itely:1472 (variable) +#. Documentation/learning/fundamental.itely:3013 (variable) +#. Documentation/learning/fundamental.itely:3068 (variable) +#. Documentation/notation/changing-defaults.itely:3897 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "textoRelleno" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3845 (variable) +#. Documentation/extending/scheme-tutorial.itely:1495 (variable) +#. Documentation/notation/changing-defaults.itely:3939 (variable) msgid "tempoPadded" msgstr "tempoConRelleno" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1514 (variable) msgid "pattern" msgstr "patron" @@ -466,6 +465,10 @@ msgstr "Variables compuestas de LilyPond" msgid "Offsets" msgstr "Desplazamientos" +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Fractions" +msgstr "Fracciones" + #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Extents" msgstr "Dimensiones" @@ -508,21 +511,21 @@ msgstr "Doblar una nota con ligaduras (ejemplo)" msgid "Adding articulation to notes (example)" msgstr "Añadir articulación a las notas (ejemplo)" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:376 (variable) msgid "manualBeam" msgstr "barraManual" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:397 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "varSi" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:407 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "varNo" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:422 (variable) msgid "withAlt" msgstr "variante" @@ -531,6 +534,33 @@ msgstr "variante" msgid "Interfaces for programmers" msgstr "Interfaces para programadores" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Lilypond code blocks" +msgstr "Bloques de código de LilyPond" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "Funciones de Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "Definiciones de funciones de Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "Uso de las funciones de Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Void scheme functions" +msgstr "Funciones de Scheme vacías" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -538,8 +568,13 @@ msgstr "Funciones musicales" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" -msgstr "Sintaxis de las funciones musicales" +msgid "Music function definitions" +msgstr "Definición de funciones musicales" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function usage" +msgstr "Uso de las funciones musicales" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely @@ -564,8 +599,13 @@ msgstr "Funciones sin argumentos" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" -msgstr "Funciones vacías" +msgid "Void music functions" +msgstr "Funciones musicales vacías" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Event functions" +msgstr "Funciones de eventos" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -752,8 +792,8 @@ msgstr "intervalo" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely #. @rglos in Documentation/cs/learning/tutorial.itely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:23 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:33 (variable) msgid "scale" msgstr "escala" @@ -921,34 +961,34 @@ msgstr "Ejemplos con enlace" msgid "Overview of manuals" msgstr "Panorámica de los manuales" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2987 (variable) -#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2994 (variable) +#. Documentation/learning/fundamental.itely:3018 (variable) #. Documentation/cs/learning/common-notation.itely:1314 (variable) -#. Documentation/cs/learning/fundamental.itely:3240 (variable) -#. Documentation/cs/learning/fundamental.itely:3264 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "violin" -#. Documentation/learning/common-notation.itely:1229 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) #. Documentation/cs/learning/common-notation.itely:1320 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:95 (variable) msgid "cello" msgstr "cello" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) #. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "tresilloA" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) #. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "compasA" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "bla" @@ -1132,7 +1172,6 @@ msgstr "Matices dinámicos" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely #. @rglos in Documentation/cs/learning/common-notation.itely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) msgid "dynamics" msgstr "matices dinámicos" @@ -1176,7 +1215,7 @@ msgid "anacrusis" msgstr "anacrusa" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "Grupos especiales" @@ -1368,9 +1407,9 @@ msgstr "Más allá del tutorial" #. Documentation/learning/fundamental.itely:371 (context id) #. Documentation/cs/learning/fundamental.itely:383 (context id) #. Documentation/cs/learning/fundamental.itely:443 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:94 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:107 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:82 (context id) msgid "singer" msgstr "cantante" @@ -1387,65 +1426,63 @@ msgstr "voz" #. @section in Documentation/music-glossary.tely #. Documentation/cs/learning/fundamental.itely:387 (context id) #. Documentation/cs/learning/fundamental.itely:447 (context id) -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "piano" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2595 (variable) -#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2664 (context id) #. Documentation/cs/learning/fundamental.itely:388 (context id) #. Documentation/cs/learning/fundamental.itely:438 (variable) #. Documentation/cs/learning/fundamental.itely:448 (context id) -#. Documentation/cs/learning/fundamental.itely:2823 (variable) -#. Documentation/cs/learning/fundamental.itely:2885 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:50 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:60 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:82 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:72 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:47 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "superior" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2602 (variable) -#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/learning/fundamental.itely:2609 (variable) +#. Documentation/learning/fundamental.itely:2665 (context id) #. Documentation/cs/learning/fundamental.itely:389 (context id) #. Documentation/cs/learning/fundamental.itely:439 (variable) #. Documentation/cs/learning/fundamental.itely:449 (context id) -#. Documentation/cs/learning/fundamental.itely:2830 (variable) -#. Documentation/cs/learning/fundamental.itely:2886 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:28 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:58 (variable) +#. Documentation/snippets/piano-template-simple.ly:70 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:68 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:84 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:80 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:94 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:54 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:70 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "inferior" @@ -1456,44 +1493,45 @@ msgstr "inferior" #. Documentation/notation/changing-defaults.itely:510 (context id) #. Documentation/notation/changing-defaults.itely:527 (variable) #. Documentation/notation/changing-defaults.itely:545 (context id) +#. Documentation/notation/changing-defaults.itely:740 (variable) #. Documentation/cs/learning/fundamental.itely:436 (variable) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:39 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:33 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:47 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:72 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:38 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:61 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:61 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:69 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "melodia" #. Documentation/learning/fundamental.itely:365 (variable) #. Documentation/cs/learning/fundamental.itely:437 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:76 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:88 (variable) msgid "text" msgstr "texto" #. Documentation/learning/fundamental.itely:439 (context id) #. Documentation/cs/learning/fundamental.itely:515 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:139 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:176 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:212 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:243 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:259 (comment) msgid "main" msgstr "principal" @@ -1517,645 +1555,644 @@ msgstr "Voz \\\"1\\\"" msgid "Voice \\\"2\\\"" msgstr "Voz \\\"2\\\"" -#. Documentation/learning/fundamental.itely:680 (comment) -#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/learning/fundamental.itely:683 (comment) +#. Documentation/learning/fundamental.itely:707 (comment) #. Documentation/cs/learning/fundamental.itely:766 (comment) #. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "Voz principal" -#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/learning/fundamental.itely:685 (comment) #. Documentation/cs/learning/fundamental.itely:768 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "Voz \\\"1\\\" Voz \\\"2\\\" Voz \\\"3\\\"" -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:709 (comment) #. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "Compás 1" # También Líneas divisorias. FVD -#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/learning/fundamental.itely:720 (comment) #. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "Compás 2" -#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) #. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "Continúa la voz 1" -#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/learning/fundamental.itely:724 (comment) #. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "Continúa la voz 2" -#. Documentation/learning/fundamental.itely:896 (comment) -#. Documentation/cs/learning/fundamental.itely:985 (comment) +#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "Voz uno" -#. Documentation/learning/fundamental.itely:898 (comment) -#. Documentation/cs/learning/fundamental.itely:987 (comment) +#. Documentation/learning/fundamental.itely:905 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "Voz dos" -#. Documentation/learning/fundamental.itely:900 (comment) -#. Documentation/cs/learning/fundamental.itely:989 (comment) +#. Documentation/learning/fundamental.itely:907 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "Omitir la voz tres" -#. Documentation/learning/fundamental.itely:901 (comment) -#. Documentation/cs/learning/fundamental.itely:990 (comment) +#. Documentation/learning/fundamental.itely:908 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "Voz cuatro" -#. Documentation/learning/fundamental.itely:1000 (comment) -#. Documentation/cs/learning/fundamental.itely:1092 (comment) +#. Documentation/learning/fundamental.itely:1007 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "Comportamiento predeterminado o comportamiento después de \\oneVoice" -#. Documentation/learning/fundamental.itely:1038 (comment) -#. Documentation/cs/learning/fundamental.itely:1131 (comment) +#. Documentation/learning/fundamental.itely:1045 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "Las notas siguientes son monofónicas" -#. Documentation/learning/fundamental.itely:1040 (comment) -#. Documentation/cs/learning/fundamental.itely:1133 (comment) +#. Documentation/learning/fundamental.itely:1047 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "Inicio de la sección de tres voces simultáneas" -#. Documentation/learning/fundamental.itely:1042 (comment) -#. Documentation/cs/learning/fundamental.itely:1135 (comment) +#. Documentation/learning/fundamental.itely:1049 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "Continuar la voz principal en paralelo" -#. Documentation/learning/fundamental.itely:1044 (comment) -#. Documentation/learning/fundamental.itely:1106 (comment) -#. Documentation/cs/learning/fundamental.itely:1137 (comment) -#. Documentation/cs/learning/fundamental.itely:1203 (comment) +#. Documentation/learning/fundamental.itely:1051 (comment) +#. Documentation/learning/fundamental.itely:1113 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "Iniciar la segunda voz" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/cs/learning/fundamental.itely:1139 (comment) +#. Documentation/learning/fundamental.itely:1053 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "Poner plicas, etc. hacia abajo" -#. Documentation/learning/fundamental.itely:1050 (comment) -#. Documentation/learning/fundamental.itely:1112 (comment) -#. Documentation/cs/learning/fundamental.itely:1143 (comment) -#. Documentation/cs/learning/fundamental.itely:1209 (comment) +#. Documentation/learning/fundamental.itely:1057 (comment) +#. Documentation/learning/fundamental.itely:1119 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "Iniciar la tercera voz" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) -#. Documentation/cs/learning/fundamental.itely:1145 (comment) -#. Documentation/cs/learning/fundamental.itely:1211 (comment) +#. Documentation/learning/fundamental.itely:1059 (comment) +#. Documentation/learning/fundamental.itely:1121 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "Poner las plicas, etc. hacia arriba" -#. Documentation/learning/fundamental.itely:1101 (comment) -#. Documentation/cs/learning/fundamental.itely:1198 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "Iniciar la primera voz" -#. Documentation/learning/fundamental.itely:1108 (comment) -#. Documentation/cs/learning/fundamental.itely:1205 (comment) +#. Documentation/learning/fundamental.itely:1115 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "Poner plicas, etc. hacia abajo" -#. Documentation/learning/fundamental.itely:1195 (context id) -#. Documentation/learning/fundamental.itely:2306 (context id) -#. Documentation/cs/learning/fundamental.itely:1304 (context id) -#. Documentation/cs/learning/fundamental.itely:2523 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1202 (context id) +#. Documentation/learning/fundamental.itely:2313 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:83 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:94 (context id) msgid "one" msgstr "uno" -#. Documentation/learning/fundamental.itely:1240 (variable) -#. Documentation/learning/fundamental.itely:2572 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/cs/learning/fundamental.itely:1353 (variable) -#. Documentation/cs/learning/fundamental.itely:2797 (variable) -#. Documentation/cs/learning/tweaks.itely:3960 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:34 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:2579 (variable) +#. Documentation/learning/tweaks.itely:3630 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:85 (variable) +#. Documentation/snippets/hymn-template.ly:90 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:57 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:22 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:62 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:67 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) msgid "global" msgstr "global" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/cs/learning/fundamental.itely:1355 (variable) +#. Documentation/learning/fundamental.itely:1249 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "MusicaSopranoUno" -#. Documentation/learning/fundamental.itely:1245 (variable) -#. Documentation/cs/learning/fundamental.itely:1358 (variable) +#. Documentation/learning/fundamental.itely:1252 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "LetraSopranoUno" -#. Documentation/learning/fundamental.itely:1248 (variable) -#. Documentation/cs/learning/fundamental.itely:1361 (variable) +#. Documentation/learning/fundamental.itely:1255 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "MusicaSopranoDos" -#. Documentation/learning/fundamental.itely:1251 (variable) -#. Documentation/cs/learning/fundamental.itely:1364 (variable) +#. Documentation/learning/fundamental.itely:1258 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "LetraSopranoDos" -#. Documentation/learning/fundamental.itely:1258 (context id) -#. Documentation/cs/learning/fundamental.itely:1371 (context id) +#. Documentation/learning/fundamental.itely:1265 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "SopranoUno" -#. Documentation/learning/fundamental.itely:1267 (context id) -#. Documentation/cs/learning/fundamental.itely:1380 (context id) +#. Documentation/learning/fundamental.itely:1274 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "SopranoDos" -#. Documentation/learning/fundamental.itely:1299 (variable) -#. Documentation/learning/fundamental.itely:2904 (variable) -#. Documentation/cs/learning/fundamental.itely:1416 (variable) -#. Documentation/cs/learning/fundamental.itely:3156 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/fundamental.itely:2911 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" msgstr "tonalidadCompas" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "MusicaSoprano" -#. Documentation/learning/fundamental.itely:1302 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/cs/learning/fundamental.itely:1419 (variable) -#. Documentation/cs/learning/tweaks.itely:3963 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1309 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) +#. Documentation/snippets/hymn-template.ly:75 (variable) msgid "AltoMusic" msgstr "MusicaAlto" -#. Documentation/learning/fundamental.itely:1303 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/cs/learning/fundamental.itely:1420 (variable) -#. Documentation/cs/learning/tweaks.itely:3964 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:75 (variable) +#. Documentation/snippets/hymn-template.ly:80 (variable) msgid "TenorMusic" msgstr "MusicaTenor" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/cs/learning/fundamental.itely:1421 (variable) -#. Documentation/cs/learning/tweaks.itely:3965 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1311 (variable) +#. Documentation/learning/tweaks.itely:3635 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:80 (variable) +#. Documentation/snippets/hymn-template.ly:85 (variable) msgid "BassMusic" msgstr "MusicaBajo" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) -#. Documentation/cs/learning/fundamental.itely:1423 (variable) -#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/learning/fundamental.itely:1313 (variable) +#. Documentation/learning/tweaks.itely:3637 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "EstrofaUno" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) -#. Documentation/cs/learning/fundamental.itely:1425 (variable) -#. Documentation/cs/learning/tweaks.itely:3971 (variable) +#. Documentation/learning/fundamental.itely:1315 (variable) +#. Documentation/learning/tweaks.itely:3641 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "EstrofaDos" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) -#. Documentation/cs/learning/fundamental.itely:1427 (variable) -#. Documentation/cs/learning/tweaks.itely:3975 (variable) +#. Documentation/learning/fundamental.itely:1317 (variable) +#. Documentation/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "EstrofaTres" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) -#. Documentation/cs/learning/fundamental.itely:1429 (variable) -#. Documentation/cs/learning/tweaks.itely:3979 (variable) +#. Documentation/learning/fundamental.itely:1319 (variable) +#. Documentation/learning/tweaks.itely:3649 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "EstrofaCuatro" -#. Documentation/learning/fundamental.itely:1319 (context id) -#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/learning/fundamental.itely:1326 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "Soprano" -#. Documentation/learning/fundamental.itely:1320 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1142 (context id) -#. Documentation/cs/learning/fundamental.itely:1437 (context id) -#. Documentation/cs/learning/tweaks.itely:3988 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1327 (context id) +#. Documentation/learning/tweaks.itely:3658 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:110 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:105 (context id) msgid "Alto" msgstr "Alto" -#. Documentation/learning/fundamental.itely:1328 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1144 (context id) -#. Documentation/cs/learning/fundamental.itely:1445 (context id) -#. Documentation/cs/learning/tweaks.itely:3996 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1335 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:118 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:114 (context id) msgid "Tenor" msgstr "Tenor" # También Líneas divisorias. FVD -#. Documentation/learning/fundamental.itely:1329 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1149 (context id) -#. Documentation/cs/learning/fundamental.itely:1446 (context id) -#. Documentation/cs/learning/tweaks.itely:3997 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1336 (context id) +#. Documentation/learning/tweaks.itely:3667 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:122 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:119 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "Bajo" -#. Documentation/learning/fundamental.itely:1473 (comment) -#. Documentation/cs/learning/fundamental.itely:1614 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "inicio de la expresión musical compuesta única" -#. Documentation/learning/fundamental.itely:1474 (comment) -#. Documentation/cs/learning/fundamental.itely:1615 (comment) +#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "inicio de la sección de pentagramas simultáneos" -#. Documentation/learning/fundamental.itely:1476 (comment) -#. Documentation/cs/learning/fundamental.itely:1617 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "crear pentagrama de la M.D." -#. Documentation/learning/fundamental.itely:1479 (comment) -#. Documentation/cs/learning/fundamental.itely:1620 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "crear voz para las notas de la M.D." -#. Documentation/learning/fundamental.itely:1480 (comment) -#. Documentation/cs/learning/fundamental.itely:1621 (comment) +#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "inicio de las notas de la M.D." -#. Documentation/learning/fundamental.itely:1483 (comment) -#. Documentation/cs/learning/fundamental.itely:1624 (comment) +#. Documentation/learning/fundamental.itely:1490 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "fin de las notas de la M.D." -#. Documentation/learning/fundamental.itely:1484 (comment) -#. Documentation/cs/learning/fundamental.itely:1625 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "fin de la voz de la M.D." -#. Documentation/learning/fundamental.itely:1485 (comment) -#. Documentation/cs/learning/fundamental.itely:1626 (comment) +#. Documentation/learning/fundamental.itely:1492 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "fin del pentagrama de la M.D." -#. Documentation/learning/fundamental.itely:1486 (comment) -#. Documentation/cs/learning/fundamental.itely:1627 (comment) +#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "crear el pentagrama de la M.I.; necesita dos voces" -#. Documentation/learning/fundamental.itely:1489 (comment) -#. Documentation/cs/learning/fundamental.itely:1630 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "crear la voz uno de la M.I." -#. Documentation/learning/fundamental.itely:1491 (comment) -#. Documentation/cs/learning/fundamental.itely:1632 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "inicio de las notas de la voz uno de la M.I." -#. Documentation/learning/fundamental.itely:1494 (comment) -#. Documentation/cs/learning/fundamental.itely:1635 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "fin de las notas de la voz uno de la M.I." -#. Documentation/learning/fundamental.itely:1495 (comment) -#. Documentation/cs/learning/fundamental.itely:1636 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "fin de la voz uno de la M.I." -#. Documentation/learning/fundamental.itely:1496 (comment) -#. Documentation/cs/learning/fundamental.itely:1637 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "crear voz dos de la M.I." -#. Documentation/learning/fundamental.itely:1498 (comment) -#. Documentation/cs/learning/fundamental.itely:1639 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "inicio de las notas de la voz dos de la M.I." -#. Documentation/learning/fundamental.itely:1501 (comment) -#. Documentation/cs/learning/fundamental.itely:1642 (comment) +#. Documentation/learning/fundamental.itely:1508 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "fin de las notas de la voz dos de la M.I." -#. Documentation/learning/fundamental.itely:1502 (comment) -#. Documentation/cs/learning/fundamental.itely:1643 (comment) +#. Documentation/learning/fundamental.itely:1509 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "fin de la voz dos de la M.I." -#. Documentation/learning/fundamental.itely:1503 (comment) -#. Documentation/cs/learning/fundamental.itely:1644 (comment) +#. Documentation/learning/fundamental.itely:1510 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "fin del pentagrama de la M.I." -#. Documentation/learning/fundamental.itely:1504 (comment) -#. Documentation/cs/learning/fundamental.itely:1645 (comment) +#. Documentation/learning/fundamental.itely:1511 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "fin de la sección de pentagramas simultáneos" -#. Documentation/learning/fundamental.itely:1505 (comment) -#. Documentation/cs/learning/fundamental.itely:1646 (comment) +#. Documentation/learning/fundamental.itely:1512 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "fin de la expresión musical compuesta única" -#. Documentation/learning/fundamental.itely:1724 (comment) -#. Documentation/cs/learning/fundamental.itely:1895 (comment) +#. Documentation/learning/fundamental.itely:1731 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "¡Mal!" # Fuzzy.FVD -#. Documentation/learning/fundamental.itely:1810 (comment) -#. Documentation/learning/fundamental.itely:1987 (comment) -#. Documentation/cs/learning/fundamental.itely:1984 (comment) -#. Documentation/cs/learning/fundamental.itely:2177 (comment) +#. Documentation/learning/fundamental.itely:1817 (comment) +#. Documentation/learning/fundamental.itely:1994 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "cabezas más pequeñas" # Fuzzy.FVD -#. Documentation/learning/fundamental.itely:1813 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) -#. Documentation/cs/learning/fundamental.itely:1987 (comment) -#. Documentation/cs/learning/fundamental.itely:2179 (comment) +#. Documentation/learning/fundamental.itely:1820 (comment) +#. Documentation/learning/fundamental.itely:1996 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "cabezas más grandes" -#. Documentation/learning/fundamental.itely:1816 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) -#. Documentation/cs/learning/fundamental.itely:1990 (comment) -#. Documentation/cs/learning/fundamental.itely:2181 (comment) +#. Documentation/learning/fundamental.itely:1823 (comment) +#. Documentation/learning/fundamental.itely:1998 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "tamaño predeterminado" -#. Documentation/learning/fundamental.itely:2285 (variable) -#. Documentation/learning/fundamental.itely:2573 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/cs/learning/fundamental.itely:2502 (variable) -#. Documentation/cs/learning/fundamental.itely:2801 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoMusic" msgstr "musicaSoprano" -#. Documentation/learning/fundamental.itely:2292 (variable) -#. Documentation/cs/learning/fundamental.itely:2509 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2299 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "sopranoLyrics" msgstr "letraSoprano" -#. Documentation/learning/fundamental.itely:2296 (variable) -#. Documentation/cs/learning/fundamental.itely:2513 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2303 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) msgid "celloMusic" msgstr "musicaCello" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/cs/learning/fundamental.itely:2805 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "letraSoprano" -#. Documentation/learning/fundamental.itely:2580 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/cs/learning/fundamental.itely:2808 (variable) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:45 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:84 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:83 (variable) +#. Documentation/learning/fundamental.itely:2587 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:33 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:79 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) msgid "altoMusic" msgstr "musicaContralto" -#. Documentation/learning/fundamental.itely:2584 (variable) -#. Documentation/cs/learning/fundamental.itely:2812 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:87 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:86 (variable) +#. Documentation/learning/fundamental.itely:2591 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:82 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) msgid "altoWords" msgstr "letraContralto" -#. Documentation/learning/fundamental.itely:2585 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/cs/learning/fundamental.itely:2813 (variable) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:51 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:90 (variable) +#. Documentation/learning/fundamental.itely:2592 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:39 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) msgid "tenorMusic" msgstr "musicaTenor" -#. Documentation/learning/fundamental.itely:2589 (variable) -#. Documentation/cs/learning/fundamental.itely:2817 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:93 (variable) +#. Documentation/learning/fundamental.itely:2596 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) msgid "tenorWords" msgstr "letraTenor" -#. Documentation/learning/fundamental.itely:2590 (variable) -#. Documentation/notation/input.itely:1137 (variable) -#. Documentation/cs/learning/fundamental.itely:2818 (variable) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:56 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:97 (variable) +#. Documentation/learning/fundamental.itely:2597 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:44 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) msgid "bassMusic" msgstr "musicaBajo" -#. Documentation/learning/fundamental.itely:2594 (variable) -#. Documentation/cs/learning/fundamental.itely:2822 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (variable) +#. Documentation/learning/fundamental.itely:2601 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) msgid "bassWords" msgstr "letraBajo" -#. Documentation/learning/fundamental.itely:2611 (comment) -#. Documentation/cs/learning/fundamental.itely:2839 (comment) +#. Documentation/learning/fundamental.itely:2618 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "combinar ChoirStaff y PianoStaff en paralelo" -#. Documentation/learning/fundamental.itely:2613 (context id) -#. Documentation/learning/fundamental.itely:2615 (context id) -#. Documentation/cs/learning/fundamental.itely:2841 (context id) -#. Documentation/cs/learning/fundamental.itely:2843 (context id) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:69 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:113 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) +#. Documentation/learning/fundamental.itely:2620 (context id) +#. Documentation/learning/fundamental.itely:2622 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:57 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) msgid "sopranos" msgstr "sopranos" -#. Documentation/learning/fundamental.itely:2623 (context id) -#. Documentation/learning/fundamental.itely:2625 (context id) -#. Documentation/cs/learning/fundamental.itely:2851 (context id) -#. Documentation/cs/learning/fundamental.itely:2853 (context id) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:73 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:114 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:115 (context id) +#. Documentation/learning/fundamental.itely:2630 (context id) +#. Documentation/learning/fundamental.itely:2632 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:61 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:104 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) msgid "altos" msgstr "altos" -#. Documentation/learning/fundamental.itely:2633 (context id) -#. Documentation/learning/fundamental.itely:2635 (context id) -#. Documentation/cs/learning/fundamental.itely:2861 (context id) -#. Documentation/cs/learning/fundamental.itely:2863 (context id) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:82 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:124 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:127 (context id) +#. Documentation/learning/fundamental.itely:2640 (context id) +#. Documentation/learning/fundamental.itely:2642 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) msgid "tenors" msgstr "tenores" -#. Documentation/learning/fundamental.itely:2643 (context id) -#. Documentation/learning/fundamental.itely:2645 (context id) -#. Documentation/cs/learning/fundamental.itely:2871 (context id) -#. Documentation/cs/learning/fundamental.itely:2873 (context id) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:86 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:125 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:131 (context id) +#. Documentation/learning/fundamental.itely:2650 (context id) +#. Documentation/learning/fundamental.itely:2652 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:74 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:117 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) msgid "basses" msgstr "bajos" -#. Documentation/learning/fundamental.itely:2653 (comment) -#. Documentation/cs/learning/fundamental.itely:2881 (comment) +#. Documentation/learning/fundamental.itely:2660 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "fin del ChoirStaff" -#. Documentation/learning/fundamental.itely:2905 (variable) -#. Documentation/cs/learning/fundamental.itely:3157 (variable) +#. Documentation/learning/fundamental.itely:2912 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "MusicaManualUnoVozUno" -#. Documentation/learning/fundamental.itely:2909 (variable) -#. Documentation/cs/learning/fundamental.itely:3161 (variable) +#. Documentation/learning/fundamental.itely:2916 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "MusicaManualUnoVozDos" -#. Documentation/learning/fundamental.itely:2913 (variable) -#. Documentation/cs/learning/fundamental.itely:3165 (variable) +#. Documentation/learning/fundamental.itely:2920 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "MusicaManualDos" -#. Documentation/learning/fundamental.itely:2917 (variable) -#. Documentation/cs/learning/fundamental.itely:3169 (variable) +#. Documentation/learning/fundamental.itely:2924 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "MusicaPedales" -#. Documentation/learning/fundamental.itely:2923 (comment) -#. Documentation/cs/learning/fundamental.itely:3175 (comment) +#. Documentation/learning/fundamental.itely:2930 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "El PianoStaff y el pentagrama del Pedal son simultáneos" -#. Documentation/learning/fundamental.itely:2925 (context id) -#. Documentation/cs/learning/fundamental.itely:3177 (context id) +#. Documentation/learning/fundamental.itely:2932 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "ManualUno" -#. Documentation/learning/fundamental.itely:2926 (comment) +#. Documentation/learning/fundamental.itely:2933 (comment) msgid "set key and time signature" msgstr "Fijar la armadura y el compás" -#. Documentation/learning/fundamental.itely:2936 (comment) -#. Documentation/cs/learning/fundamental.itely:3188 (comment) +#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "fin del contexto de pentagrama del ManualUno" -#. Documentation/learning/fundamental.itely:2937 (context id) -#. Documentation/cs/learning/fundamental.itely:3189 (context id) +#. Documentation/learning/fundamental.itely:2944 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "ManualDos" -#. Documentation/learning/fundamental.itely:2946 (comment) -#. Documentation/cs/learning/fundamental.itely:3198 (comment) +#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "fin del contexto de pentagrama del ManualDos" -#. Documentation/learning/fundamental.itely:2947 (comment) -#. Documentation/cs/learning/fundamental.itely:3199 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "fin del contexto PianoStaff" -#. Documentation/learning/fundamental.itely:2948 (context id) -#. Documentation/cs/learning/fundamental.itely:3200 (context id) +#. Documentation/learning/fundamental.itely:2955 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "Pedales" -#. Documentation/learning/fundamental.itely:2954 (comment) -#. Documentation/cs/learning/fundamental.itely:3206 (comment) +#. Documentation/learning/fundamental.itely:2961 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "fin del contexto de pentagrama del Pedal" -#. Documentation/learning/fundamental.itely:2956 (comment) -#. Documentation/cs/learning/fundamental.itely:3208 (comment) +#. Documentation/learning/fundamental.itely:2963 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "fin del contexto de Score (partitura)" -#. Documentation/learning/fundamental.itely:2972 (variable) -#. Documentation/cs/learning/fundamental.itely:3225 (variable) +#. Documentation/learning/fundamental.itely:2979 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) msgid "hornNotes" msgstr "notasTrompa" -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/cs/learning/fundamental.itely:3238 (variable) +#. Documentation/learning/fundamental.itely:2991 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "fragmentoA" -#. Documentation/learning/fundamental.itely:2985 (variable) -#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/learning/fundamental.itely:2992 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "fragmentoB" -#. Documentation/learning/fundamental.itely:3004 (variable) -#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "dolce" -#. Documentation/learning/fundamental.itely:3007 (variable) -#. Documentation/cs/learning/fundamental.itely:3260 (variable) +#. Documentation/learning/fundamental.itely:3014 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "f_luego_p" @@ -2308,368 +2345,369 @@ msgstr "Ahorrar tecleo mediante variables y funciones" msgid "Scores and parts" msgstr "Partituras y particellas" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:604 (comment) +#. Documentation/learning/tweaks.itely:742 (comment) #. Documentation/cs/learning/tweaks.itely:680 (comment) #. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "Aumentar el grosor de todas las ligaduras siguientes de 1.2 a 5.0" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) -#. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:674 (comment) +#. Documentation/learning/tweaks.itely:714 (comment) +#. Documentation/learning/tweaks.itely:717 (comment) #. Documentation/cs/learning/tweaks.itely:755 (comment) #. Documentation/cs/learning/tweaks.itely:797 (comment) #. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "Aumentar solamente el grosor de la ligadura siguiente" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:746 (comment) #. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "Devolver el grosor de las ligaduras siguientes al valor predeterminado 1.2" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1423 (comment) #. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "No imprimir la clave en este pentagrama" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1425 (comment) #. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "No imprimir el compás en este pentagrama" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1489 (comment) #. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "Reducir el tamaño de la fuente en un 24% aprox." -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1556 (comment) #. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "Reducir la longitud de la plica y el espaciado de la línea en coincidencia" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2007 (comment) +#. Documentation/learning/tweaks.itely:2057 (comment) #. Documentation/cs/learning/tweaks.itely:2207 (comment) #. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "Establecer ajustes para el extensor de texto ulterior" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2010 (comment) +#. Documentation/learning/tweaks.itely:2060 (comment) #. Documentation/cs/learning/tweaks.itely:2210 (comment) #. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "Situar la dinámica por encima" # fuzzy. FVD -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2064 (comment) #. Documentation/cs/learning/tweaks.itely:2212 (comment) #. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "Inicio del corchete de octava" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2015 (comment) #. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "Añadir indicación dinámica textual y regulador" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2018 (comment) +#. Documentation/learning/tweaks.itely:2071 (comment) #. Documentation/cs/learning/tweaks.itely:2218 (comment) #. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "Añadir inscripción de texto" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2021 (comment) #. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "Añadir indicación dinámica textual y terminar regulador" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2023 (comment) +#. Documentation/learning/tweaks.itely:2076 (comment) #. Documentation/cs/learning/tweaks.itely:2223 (comment) #. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "Detener el corchete de octava" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2062 (comment) #. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "Situar el corchete de octava ulterior por debajo de los extensores de texto" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2074 (comment) #. Documentation/cs/learning/tweaks.itely:2295 (comment) #. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "Añadir indicación dinámica textual" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2069 (comment) #. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "Añadir indicación dinámica de extensión de línea" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2156 (comment) #. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "Ocasionar que las notas se espacíen para adecuarse al texto" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2179 (comment) #. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "Este marcado es corto y cabe sin colisionar" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2183 (comment) #. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "Este es muy largo y se desplaza hacia arriba" +#. Documentation/learning/tweaks.itely:2187 (comment) #. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) #. Documentation/cs/learning/tweaks.itely:2414 (comment) #. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "Desactivar el detector de colisiones" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2194 (comment) #. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "y activar textLengthOn" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) #. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "Los espacios al final se respetan" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2302 (comment) #. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "Aumentar la anchura en un espacio de pentagrama" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2582 (comment) #. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "Esto no va a funcionar, véase más abajo" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2586 (comment) #. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "Esto sí funciona" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2622 (variable) #. Documentation/cs/learning/tweaks.itely:2909 (variable) msgid "sesquisharp" msgstr "sesquisostenido" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2625 (comment) #. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "Imprime un sesquisostenido pero el espaciado es muy pequeño" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2630 (comment) #. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "Mejora el espaciado" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2670 (comment) #. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "Aumentar la anchura en una unidad" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2672 (comment) #. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "Alinear los matices a dos unidades por encima del pentagrama" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) -#. Documentation/cs/learning/tweaks.itely:3318 (variable) -#. Documentation/cs/learning/tweaks.itely:3378 (variable) -#. Documentation/cs/learning/tweaks.itely:3452 (variable) -#. Documentation/cs/learning/tweaks.itely:3536 (variable) -#. Documentation/cs/learning/tweaks.itely:3610 (variable) -#. Documentation/cs/learning/tweaks.itely:3680 (variable) +#. Documentation/learning/tweaks.itely:3015 (variable) +#. Documentation/learning/tweaks.itely:3072 (variable) +#. Documentation/learning/tweaks.itely:3142 (variable) +#. Documentation/learning/tweaks.itely:3295 (variable) +#. Documentation/learning/tweaks.itely:3365 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "Musica_m_der" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) -#. Documentation/cs/learning/tweaks.itely:3323 (comment) -#. Documentation/cs/learning/tweaks.itely:3384 (comment) -#. Documentation/cs/learning/tweaks.itely:3460 (comment) -#. Documentation/cs/learning/tweaks.itely:3546 (comment) -#. Documentation/cs/learning/tweaks.itely:3620 (comment) -#. Documentation/cs/learning/tweaks.itely:3690 (comment) +#. Documentation/learning/tweaks.itely:3021 (comment) +#. Documentation/learning/tweaks.itely:3078 (comment) +#. Documentation/learning/tweaks.itely:3150 (comment) +#. Documentation/learning/tweaks.itely:3305 (comment) +#. Documentation/learning/tweaks.itely:3375 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "Inicio de la sección polifónica de cuatro voces" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) -#. Documentation/cs/learning/tweaks.itely:3325 (comment) -#. Documentation/cs/learning/tweaks.itely:3339 (comment) -#. Documentation/cs/learning/tweaks.itely:3386 (comment) -#. Documentation/cs/learning/tweaks.itely:3400 (comment) -#. Documentation/cs/learning/tweaks.itely:3462 (comment) -#. Documentation/cs/learning/tweaks.itely:3476 (comment) -#. Documentation/cs/learning/tweaks.itely:3548 (comment) -#. Documentation/cs/learning/tweaks.itely:3564 (comment) -#. Documentation/cs/learning/tweaks.itely:3622 (comment) -#. Documentation/cs/learning/tweaks.itely:3640 (comment) -#. Documentation/cs/learning/tweaks.itely:3692 (comment) -#. Documentation/cs/learning/tweaks.itely:3718 (comment) +#. Documentation/learning/tweaks.itely:3023 (comment) +#. Documentation/learning/tweaks.itely:3037 (comment) +#. Documentation/learning/tweaks.itely:3080 (comment) +#. Documentation/learning/tweaks.itely:3094 (comment) +#. Documentation/learning/tweaks.itely:3152 (comment) +#. Documentation/learning/tweaks.itely:3166 (comment) +#. Documentation/learning/tweaks.itely:3307 (comment) +#. Documentation/learning/tweaks.itely:3326 (comment) +#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3405 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) msgid "continuation of main voice" msgstr "continuación de la voz principal" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) -#. Documentation/cs/learning/tweaks.itely:3343 (variable) -#. Documentation/cs/learning/tweaks.itely:3404 (variable) -#. Documentation/cs/learning/tweaks.itely:3480 (variable) -#. Documentation/cs/learning/tweaks.itely:3568 (variable) -#. Documentation/cs/learning/tweaks.itely:3644 (variable) -#. Documentation/cs/learning/tweaks.itely:3722 (variable) +#. Documentation/learning/tweaks.itely:3041 (variable) +#. Documentation/learning/tweaks.itely:3098 (variable) +#. Documentation/learning/tweaks.itely:3170 (variable) +#. Documentation/learning/tweaks.itely:3330 (variable) +#. Documentation/learning/tweaks.itely:3409 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "Muslca_m_izq" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1155 (context id) -#. Documentation/cs/learning/tweaks.itely:3352 (context id) -#. Documentation/cs/learning/tweaks.itely:3413 (context id) -#. Documentation/cs/learning/tweaks.itely:3489 (context id) -#. Documentation/cs/learning/tweaks.itely:3577 (context id) -#. Documentation/cs/learning/tweaks.itely:3653 (context id) -#. Documentation/cs/learning/tweaks.itely:3731 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3050 (context id) +#. Documentation/learning/tweaks.itely:3107 (context id) +#. Documentation/learning/tweaks.itely:3179 (context id) +#. Documentation/learning/tweaks.itely:3339 (context id) +#. Documentation/learning/tweaks.itely:3418 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:28 (context id) +#. Documentation/snippets/simultaneous-headword.ly:51 (comment) msgid "RH" msgstr "MD" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1161 (context id) -#. Documentation/cs/learning/tweaks.itely:3356 (context id) -#. Documentation/cs/learning/tweaks.itely:3417 (context id) -#. Documentation/cs/learning/tweaks.itely:3493 (context id) -#. Documentation/cs/learning/tweaks.itely:3581 (context id) -#. Documentation/cs/learning/tweaks.itely:3657 (context id) -#. Documentation/cs/learning/tweaks.itely:3735 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3054 (context id) +#. Documentation/learning/tweaks.itely:3111 (context id) +#. Documentation/learning/tweaks.itely:3183 (context id) +#. Documentation/learning/tweaks.itely:3343 (context id) +#. Documentation/learning/tweaks.itely:3422 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:90 (context id) +#. Documentation/snippets/text-headword.ly:129 (comment) msgid "LH" msgstr "MI" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -#. Documentation/cs/learning/tweaks.itely:3625 (comment) -#. Documentation/cs/learning/tweaks.itely:3698 (comment) -msgid "Move the c2 out of the main note column so the merge will work" -msgstr "" -"Sacar el Do blanca de la columna principal de notas para que la fusión " -"funcione" +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "Move the c2 out of the main note column" +msgstr "Sacar el Do blanca de la columna principal de notas" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) -#. Documentation/cs/learning/tweaks.itely:3630 (comment) -#. Documentation/cs/learning/tweaks.itely:3705 (comment) +#. Documentation/learning/tweaks.itely:3311 (comment) +#. Documentation/learning/tweaks.itely:3384 (comment) +msgid "so the merge will work" +msgstr "para que la fusión funcione" + +#. Documentation/learning/tweaks.itely:3316 (comment) +#. Documentation/learning/tweaks.itely:3391 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "La plica del Re blanca debe estar hacia abajo para permitir la fusión" -#. Documentation/learning/tweaks.itely:3368 (comment) -#. Documentation/cs/learning/tweaks.itely:3696 (comment) +#. Documentation/learning/tweaks.itely:3381 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "Recolocar el Do blanca a la derecha de la nota fundida" -#. Documentation/learning/tweaks.itely:3379 (comment) -#. Documentation/cs/learning/tweaks.itely:3707 (comment) +#. Documentation/learning/tweaks.itely:3393 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" msgstr "La plica del Re2 debería ser invisible" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) -#. Documentation/cs/learning/tweaks.itely:3855 (comment) -#. Documentation/cs/learning/tweaks.itely:3874 (comment) +#. Documentation/learning/tweaks.itely:3530 (comment) +#. Documentation/learning/tweaks.itely:3552 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "Indicación metronómica visible" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) -#. Documentation/cs/learning/tweaks.itely:3859 (comment) -#. Documentation/cs/learning/tweaks.itely:3878 (comment) +#. Documentation/learning/tweaks.itely:3534 (comment) +#. Documentation/learning/tweaks.itely:3556 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "Indicación metronómica invisible para prolongar el calderón en el MIDI" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) -#. Documentation/cs/learning/tweaks.itely:3862 (comment) -#. Documentation/cs/learning/tweaks.itely:3881 (comment) +#. Documentation/learning/tweaks.itely:3537 (comment) +#. Documentation/learning/tweaks.itely:3559 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "Tempo nuevo para la sección siguiente" -#. Documentation/learning/tweaks.itely:3604 (variable) -#. Documentation/cs/learning/tweaks.itely:3951 (variable) +#. Documentation/learning/tweaks.itely:3620 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "enfatizar" -#. Documentation/learning/tweaks.itely:3609 (variable) -#. Documentation/cs/learning/tweaks.itely:3955 (variable) +#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "normal" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/cs/learning/tweaks.itely:3962 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:70 (variable) msgid "SopranoMusic" msgstr "musicaSoprano" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1140 (context id) -#. Documentation/cs/learning/tweaks.itely:3987 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:106 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:100 (context id) msgid "Soprano" msgstr "Soprano" -#. Documentation/learning/tweaks.itely:3672 (variable) -#. Documentation/cs/learning/tweaks.itely:4020 (variable) +#. Documentation/learning/tweaks.itely:3688 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "mpdolce" -#. Documentation/learning/tweaks.itely:3679 (variable) -#. Documentation/cs/learning/tweaks.itely:4027 (variable) +#. Documentation/learning/tweaks.itely:3696 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "inst" -#. Documentation/learning/tweaks.itely:4184 (comment) -#. Documentation/cs/learning/tweaks.itely:4551 (comment) +#. Documentation/learning/tweaks.itely:4157 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "Truco para obtener color a partir del procedimiento color-notehead" @@ -2895,11 +2933,6 @@ msgstr "Hojas de estilo" msgid "Other sources of information" msgstr "Otras fuentes de información" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "Evitar los trucos con un proceso ralentizado" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2948,10 +2981,6 @@ msgstr "Piano y melodía con letra" msgid "Piano centered lyrics" msgstr "Piano con letra centrada" -#. @appendixsubsec in Documentation/learning/templates.itely -msgid "Piano centered dynamics" -msgstr "Piano con dinámicas centradas" - #. @node in Documentation/learning/templates.itely #. @appendixsec in Documentation/learning/templates.itely #. @appendixsubsec in Documentation/learning/templates.itely @@ -3087,8 +3116,8 @@ msgstr "alteración" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:87 (context id) msgid "alto" msgstr "alto" @@ -3168,11 +3197,11 @@ msgstr "clave de barítono (do en quinta)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:101 (context id) msgid "bass" msgstr "bajo" @@ -3238,7 +3267,7 @@ msgstr "cadenza" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:40 (comment) msgid "caesura" msgstr "cesura" @@ -3696,6 +3725,7 @@ msgstr "cadencia armónica" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "armónicos" @@ -3992,8 +4022,8 @@ msgstr "ornamento" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:266 (context id) msgid "part" msgstr "parte" @@ -4120,8 +4150,8 @@ msgstr "repetición" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "duraciones" @@ -4247,7 +4277,7 @@ msgstr "textos de canciones" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:80 (context id) msgid "soprano" msgstr "soprano" @@ -4333,7 +4363,7 @@ msgstr "temperamento" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:94 (context id) msgid "tenor" msgstr "tenor" @@ -4377,11 +4407,6 @@ msgstr "compás" msgid "tone" msgstr "tonalidad" -#. @node in Documentation/music-glossary.tely -#. @section in Documentation/music-glossary.tely -msgid "tonic" -msgstr "tónica" - #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "transposing instrument" @@ -4557,34 +4582,65 @@ msgstr "Notación musical" msgid "Specialist notation" msgstr "Notación especializada" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" -msgstr "no impreso" +#. Documentation/notation/input.itely:597 (comment) +msgid "Do not display the tagline for this book" +msgstr "No imprimir la línea de etiqueta en este libro" + +#. Documentation/notation/input.itely:609 (comment) +#. Documentation/notation/input.itely:622 (comment) +msgid "Do not display the subtitle for this score" +msgstr "No imprimir el subtítulo en esta partitura" -#. Documentation/notation/input.itely:1138 (variable) +#. Documentation/notation/input.itely:645 (comment) +msgid "The following fields are centered" +msgstr "Los campos siguientes están centrados" + +#. Documentation/notation/input.itely:652 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "Los campos siguientes están alineados a la izquierda en la parte izquierda" + +#. Documentation/notation/input.itely:656 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "Los campos siguientes están alineados a la derecha en la parte derecha" + +#. Documentation/notation/input.itely:664 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "Los campos siguientes están situados en extremos opuestos de la misma línea" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "Campo definido por el usuario" + +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "letraCompleta" -#. Documentation/notation/input.itely:1224 (variable) -#. Documentation/notation/input.itely:1243 (variable) -#. Documentation/notation/input.itely:1280 (variable) -#. Documentation/notation/input.itely:1295 (variable) -#. Documentation/notation/spacing.itely:1560 (variable) -#. Documentation/notation/spacing.itely:1614 (variable) -#. Documentation/notation/spacing.itely:1639 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1570 (variable) +#. Documentation/notation/spacing.itely:1623 (variable) +#. Documentation/notation/spacing.itely:1648 (variable) #. Documentation/notation/changing-defaults.itely:458 (variable) #. Documentation/notation/changing-defaults.itely:493 (context id) #. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) -#. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:51 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/automatically-change-durations.ly:24 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:35 (variable) +#. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:54 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:28 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:164 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:199 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:72 (variable) msgid "music" msgstr "musica" +#. Documentation/notation/input.itely:1792 (variable) +msgid "test" +msgstr "prueba" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4627,37 +4683,84 @@ msgstr "Títulos y cabeceras" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" -msgstr "Crear títulos" +msgid "Creating titles headers and footers" +msgstr "Crear títulos cabeceras y pies de página" #. @node in Documentation/notation/input.itely -msgid "Custom headers footers and titles" -msgstr "Cabeceras Pies y Títulos personalizados" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "Explicación de los bloques de título" -#. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" -msgstr "Cabeceras, Pies y Títulos personalizados" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "Disposición predeterminada de los bloques de título de libros y partituras" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Reference to page numbers" -msgstr "Referencias a números de página" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "Disposición predeterminada de las cabeceras y los pies de página" -# this is the same translation that babel LaTex package uses . FVD #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Table of contents" -msgstr "Índice general" +msgid "Custom headers footers and titles" +msgstr "Cabeceras Pies y Títulos personalizados" #. @node in Documentation/notation/input.itely -#. @section in Documentation/notation/input.itely -msgid "Working with input files" -msgstr "Trabajar sobre los archivos de entrada" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "Formato de texto personalizado para bloques de título" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Including LilyPond files" -msgstr "Inclusión de archivos de LilyPond" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "Formato personalizado para bloques de título" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "Disposición personalizada para cabeceras y pies de página" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Creating footnotes" +msgstr "Crear notas al pie" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Footnotes overview" +msgstr "Panorámica de las notas al pie" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" +msgstr "Notas al pie automáticas" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Manual footnotes" +msgstr "Notas al pie manuales" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Reference to page numbers" +msgstr "Referencias a números de página" + +# this is the same translation that babel LaTex package uses . FVD +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Table of contents" +msgstr "Índice general" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Working with input files" +msgstr "Trabajar sobre los archivos de entrada" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Including LilyPond files" +msgstr "Inclusión de archivos de LilyPond" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4681,13 +4784,23 @@ msgstr "Usar ajustes globales" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "Caracteres especiales" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "Codificación del texto" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" -msgstr "Presentar la notación de LilyPond" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "Unicode" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" +msgstr "Alias de ASCII" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely @@ -4781,63 +4894,90 @@ msgstr "Balance entre instrumentos (i)" msgid "Percussion in MIDI" msgstr "Percusión en MIDI" -#. Documentation/notation/spacing.itely:2059 (comment) +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" +msgstr "El script Articulate" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" +msgstr "Extraer información musical" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "Presentar la notación de LilyPond" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "Presentación de expresiones musicales de Scheme" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "Guardar eventos de música a un archivo" + +#. Documentation/notation/spacing.itely:2091 (comment) msgid "The very low note here needs more room than 'basic-distance" msgstr "Esta nota tan grave requiere más espacio de que 'basic-distance" -#. Documentation/notation/spacing.itely:2060 (comment) +#. Documentation/notation/spacing.itely:2092 (comment) msgid "can provide, so the distance between this staff and the next" msgstr "puede ofrecer, por lo que la distancia entre este pentagrama y el siguiente" -#. Documentation/notation/spacing.itely:2061 (comment) +#. Documentation/notation/spacing.itely:2093 (comment) msgid "is determined by 'padding." msgstr "viene determinado por 'padding." -#. Documentation/notation/spacing.itely:2064 (comment) +#. Documentation/notation/spacing.itely:2096 (comment) msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "Aquí, 'basic-distance da espacio suficiente, y no hay" -#. Documentation/notation/spacing.itely:2065 (comment) +#. Documentation/notation/spacing.itely:2097 (comment) msgid "need to compress the space (towards 'minimum-distance) to make" msgstr "necesidad de comprimir el espacio (mediante 'minimum-distance) para hacer" -#. Documentation/notation/spacing.itely:2066 (comment) +#. Documentation/notation/spacing.itely:2098 (comment) msgid "room for anything else on the page, so the distance between" msgstr "sitio para cualquier otra cosa en la página, por lo que la distancia entre" -#. Documentation/notation/spacing.itely:2067 (comment) +#. Documentation/notation/spacing.itely:2099 (comment) msgid "this staff and the next is determined by 'basic-distance." msgstr "este pentagrama y el siguiente viene determinado por 'basic-distance" -#. Documentation/notation/spacing.itely:2070 (comment) +#. Documentation/notation/spacing.itely:2102 (comment) msgid "By setting 'padding to a negative value, staves can be made to" -msgstr "Estableciendo 'padding a un valor negativo, se puede hacer que los pentagramas" +msgstr "" +"Estableciendo 'padding a un valor negativo, se puede hacer que los " +"pentagramas" -#. Documentation/notation/spacing.itely:2071 (comment) +#. Documentation/notation/spacing.itely:2103 (comment) msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "colisionen. El valor más bajo aceptable para 'basic-distance es cero." -#. Documentation/notation/spacing.itely:2502 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "this time the text will be closer to the staff" msgstr "esta vez el texto estará más cerca del pentagrama" -#. Documentation/notation/spacing.itely:2504 (comment) +#. Documentation/notation/spacing.itely:2534 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "ajustando el valor de outside-staff-priority a algo que no sea un número," -#. Documentation/notation/spacing.itely:2505 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "we disable the automatic collision avoidance" msgstr "desactivamos la evitación automática de colisiones" -#. Documentation/notation/spacing.itely:2508 (comment) +#. Documentation/notation/spacing.itely:2538 (comment) msgid "now they will collide" msgstr "ahora se producirá la colisión" -#. Documentation/notation/spacing.itely:2534 (comment) +#. Documentation/notation/spacing.itely:2564 (comment) msgid "the markup is too close to the following note" msgstr "el marcado está demasiado cerca de la nota siguiente" -#. Documentation/notation/spacing.itely:2538 (comment) +#. Documentation/notation/spacing.itely:2568 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "ajustar outside-staff-horizontal-padding corrige esto" @@ -4866,8 +5006,8 @@ msgstr "Tamaño del papel y escalado automático" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely -msgid "Setting paper size" -msgstr "Establecer el tamaño de la página" +msgid "Setting the paper size" +msgstr "Establecer el tamaño del papel" #. @node in Documentation/notation/spacing.itely #. @unnumberedsubsubsec in Documentation/notation/spacing.itely @@ -5158,8 +5298,8 @@ msgstr "acompanamiento" #. Documentation/notation/changing-defaults.itely:490 (variable) #. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:95 (variable) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:61 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:49 (variable) msgid "words" msgstr "letra" @@ -5172,112 +5312,132 @@ msgstr "Mantener con vida la voz \\\"melodia\\\" durante 4 compases" msgid "skip a bar" msgstr "saltar un compás" -#. Documentation/notation/changing-defaults.itely:2020 (comment) +#. Documentation/notation/changing-defaults.itely:729 (variable) +msgid "blubb" +msgstr "blub" + +#. Documentation/notation/changing-defaults.itely:735 (variable) +msgid "bla" +msgstr "bla" + +#. Documentation/notation/changing-defaults.itely:2027 (comment) msgid "default space between staves" msgstr "espacio predeterminado entre pentagramas" -#. Documentation/notation/changing-defaults.itely:2026 (comment) +#. Documentation/notation/changing-defaults.itely:2033 (comment) msgid "reduced space between staves" msgstr "espacio reducido entre pentagramas" -#. Documentation/notation/changing-defaults.itely:2028 (comment) +#. Documentation/notation/changing-defaults.itely:2035 (comment) msgid "this is the nested declaration" msgstr "esta es la declaración anidada" -#. Documentation/notation/changing-defaults.itely:2482 (comment) +#. Documentation/notation/changing-defaults.itely:2471 (comment) msgid "increase the length of the tie" msgstr "aumentar la longitud de la ligadura" -#. Documentation/notation/changing-defaults.itely:2491 (comment) +#. Documentation/notation/changing-defaults.itely:2480 (comment) msgid "increase the length of the rest bar" msgstr "aumentar la longitud del compás en silencio" -#. Documentation/notation/changing-defaults.itely:2499 (comment) +#. Documentation/notation/changing-defaults.itely:2488 (comment) msgid "increase the length of the hairpin" msgstr "aumentar la longitud del regulador" -#. Documentation/notation/changing-defaults.itely:2527 (comment) +#. Documentation/notation/changing-defaults.itely:2516 (comment) msgid "default" msgstr "predeterminado" -#. Documentation/notation/changing-defaults.itely:2530 (comment) -#. Documentation/notation/changing-defaults.itely:2543 (comment) +#. Documentation/notation/changing-defaults.itely:2519 (comment) +#. Documentation/notation/changing-defaults.itely:2532 (comment) msgid "not effective alone" msgstr "no es efectivo por sí solo" -#. Documentation/notation/changing-defaults.itely:2534 (comment) -#. Documentation/notation/changing-defaults.itely:2547 (comment) +#. Documentation/notation/changing-defaults.itely:2523 (comment) +#. Documentation/notation/changing-defaults.itely:2536 (comment) msgid "effective only when both overrides are present" msgstr "es efectivo sólo cuando las dos sobreescrituras están presentes" -#. Documentation/notation/changing-defaults.itely:2924 (comment) +#. Documentation/notation/changing-defaults.itely:2912 (comment) msgid "Remove bar line at the end of the current line" msgstr "Quitar la barra de compás al final de la línea en curso" -#. Documentation/notation/changing-defaults.itely:2970 (comment) +#. Documentation/notation/changing-defaults.itely:2958 (comment) msgid "Try to remove all key signatures" msgstr "Intentar quitar todas las armaduras" -#. Documentation/notation/changing-defaults.itely:3393 (comment) +#. Documentation/notation/changing-defaults.itely:3383 (comment) msgid "move horizontally left" msgstr "desplazar a la izquierda" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3385 (comment) msgid "move vertically up" msgstr "desplazar hacia arriba" -#. Documentation/notation/changing-defaults.itely:3396 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "third finger" msgstr "dedo tercero" -#. Documentation/notation/changing-defaults.itely:3444 (comment) -#. Documentation/notation/changing-defaults.itely:3483 (comment) +#. Documentation/notation/changing-defaults.itely:3434 (comment) +#. Documentation/notation/changing-defaults.itely:3473 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "La marca de ensayo se centrará sobre la clave" -#. Documentation/notation/changing-defaults.itely:3450 (comment) +#. Documentation/notation/changing-defaults.itely:3440 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "La marca de ensayo se centrará sobre la indicación de compás" -#. Documentation/notation/changing-defaults.itely:3457 (comment) +#. Documentation/notation/changing-defaults.itely:3447 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "La marca de ensayo se centrará sobre la respiración" -#. Documentation/notation/changing-defaults.itely:3477 (comment) +#. Documentation/notation/changing-defaults.itely:3467 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "La marca de ensayo se centrará sobre la armadura de tonalidad" -#. Documentation/notation/changing-defaults.itely:3490 (comment) +#. Documentation/notation/changing-defaults.itely:3480 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "La marca de ensayo se centrará sobre la línea divisoria" -#. Documentation/notation/changing-defaults.itely:3505 (comment) +#. Documentation/notation/changing-defaults.itely:3495 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "La marca de ensayo se centrará sobre la armadura de tonalidad" -#. Documentation/notation/changing-defaults.itely:3512 (comment) -#. Documentation/notation/changing-defaults.itely:3528 (comment) -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3502 (comment) +#. Documentation/notation/changing-defaults.itely:3518 (comment) +#. Documentation/notation/changing-defaults.itely:3525 (comment) msgid "The RehearsalMark will be aligned with the left edge of the Key Signature" -msgstr "La marca de ensayo se alineará con el borde izquierdo de la armadura de tonalidad" +msgstr "" +"La marca de ensayo se alineará con el borde izquierdo de la armadura de " +"tonalidad" -#. Documentation/notation/changing-defaults.itely:3517 (comment) +#. Documentation/notation/changing-defaults.itely:3507 (comment) msgid "The RehearsalMark will be aligned with the right edge of the Key Signature" -msgstr "La marca de ensayo se alineará con el borde derecho de la armadura de tonalidad" +msgstr "" +"La marca de ensayo se alineará con el borde derecho de la armadura de " +"tonalidad" -#. Documentation/notation/changing-defaults.itely:3529 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "y se desplaza 3.5 espacios a la derecha" -#. Documentation/notation/changing-defaults.itely:3536 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "y se desplaza 2 espacios a la izquierda" -#. Documentation/notation/changing-defaults.itely:3584 (variable) +#. Documentation/notation/changing-defaults.itely:3574 (variable) msgid "XinO" msgstr "X_O" -#. Documentation/notation/changing-defaults.itely:3826 (variable) +#. Documentation/notation/changing-defaults.itely:3761 (variable) +msgid "squareLineCircleSpace" +msgstr "cuadradoLineaCirculoEspacio" + +#. Documentation/notation/changing-defaults.itely:3765 (variable) +msgid "smartSquareLineCircleSpace" +msgstr "especialCuadradoLineaCirculoEspacio" + +#. Documentation/notation/changing-defaults.itely:3920 (variable) msgid "custosNote" msgstr "notaCustos" @@ -5333,8 +5493,8 @@ msgstr "Definir contextos nuevos" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" -msgstr "Alinear los contextos" +msgid "Context layout order" +msgstr "Orden de disposición de los contextos" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely @@ -5424,11 +5584,6 @@ msgstr "Modos de entrada" msgid "Direction and placement" msgstr "Dirección y posición" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "Orden de disposición de los contextos" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5573,6 +5728,11 @@ msgstr "Modificación de las formas" msgid "Modifying ties and slurs" msgstr "Modificación de ligaduras de unión y de expresión" +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Unpure-pure containers" +msgstr "Contenedores unpure-pure" + #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely msgid "Using music functions" @@ -5613,6 +5773,11 @@ msgstr "Afinaciones de cuerdas predeterminadas" msgid "Predefined fretboard diagrams" msgstr "Diagramas predefinidos de trastes" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined paper sizes" +msgstr "Tamaños de papel predefinidos" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "MIDI instruments" @@ -5729,6 +5894,11 @@ msgstr "Glifos de pedal" msgid "Accordion glyphs" msgstr "Glidos de acordeón" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "Glifos de ligadura" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5764,6 +5934,11 @@ msgstr "Glifos de notación estilo Petrucci" msgid "Solesmes glyphs" msgstr "Glifos de notación estilo Solesmes" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Kievan Notation glyphs" +msgstr "Glifos de la notación del canto kievano" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Note head styles" @@ -5779,6 +5954,11 @@ msgstr "Instrucciones de marcado de texto" msgid "Text markup list commands" msgstr "Instrucciones de listas de marcado de texto" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "Lista de caracteres especiales" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5916,13 +6096,13 @@ msgstr "Funciones musicales disponibles" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Predefined type predicates" -msgstr "Predicados de tipo predefinidos" +msgid "Context modification identifiers" +msgstr "Identificadores de modificación de contextos" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" -msgstr "Funciones de Scheme" +msgid "Predefined type predicates" +msgstr "Predicados de tipo predefinidos" # Hoja para copiar en un examen. Chuleta?? FVD #. @node in Documentation/notation/cheatsheet.itely @@ -5930,12 +6110,18 @@ msgstr "Funciones de Scheme" msgid "Cheat sheet" msgstr "Hoja de referencia rápida" -#. @unnumberedsec in Documentation/snippets.tely -#. @node in Documentation/snippets.tely #. @unnumberedsec in Documentation/snippets.tely msgid "\\\\TEXT\\\\" msgstr "\\\\TEXT\\\\" +#. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" + +#. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\\\\\TEXT\\\\\\\\" +msgstr "\\\\\\\\TEXT\\\\\\\\" + #. @node in Documentation/usage/running.itely msgid "Running lilypond" msgstr "Ejecutar lilypond" @@ -5967,12 +6153,14 @@ msgid "Standard shell commands" msgstr "Instrucciones de shell estándar" #. @node in Documentation/usage/running.itely -msgid "Command line options for lilypond" -msgstr "Opciones de la línea de órdenes para lilypond" +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Basic command line options for LilyPond" +msgstr "Opciones básicas de la línea de órdenes para LilyPond" +#. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely -msgid "Command line options for @command{lilypond}" -msgstr "Opciones de la línea de órdenes para @command{lilypond}" +msgid "Advanced command line options for LilyPond" +msgstr "Opciones avanzadas de la línea de órdenes para LilyPond" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely @@ -6217,6 +6405,16 @@ msgstr "Programas externos" msgid "Point and click" msgstr "Apuntar y pulsar" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "Activación de Apuntar y pulsar" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "Apuntar y pulsar selectivo" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -6347,10 +6545,6 @@ msgstr "Make y los Makefiles" msgid "Rejstřík k LilyPondu" msgstr "" -#. @node in Documentation/cs/macros.itexi -msgid "Začátek" -msgstr "" - #. @top in Documentation/cs/macros.itexi msgid "LilyPond -- \\\\TITLE\\\\" msgstr "" @@ -6487,7 +6681,7 @@ msgstr "" #. @node in Documentation/cs/learning/tutorial.itely #. @section in Documentation/cs/learning/tutorial.itely -msgid "Jak se mají příručky číst" +msgid "Jak číst příručky" msgstr "" #. @node in Documentation/cs/learning/tutorial.itely @@ -6690,7 +6884,7 @@ msgstr "" msgid "Po cvičení" msgstr "" -#. Documentation/cs/learning/fundamental.itely:3178 (comment) +#. Documentation/cs/learning/fundamental.itely:3177 (comment) msgid "set time signature and key" msgstr "" @@ -6824,6 +7018,13 @@ msgstr "" msgid "Notové zápisy a hlasy" msgstr "" +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "" +"Sacar el Do blanca de la columna principal de notas para que la fusión " +"funcione" + #. @node in Documentation/cs/learning/tweaks.itely #. @chapter in Documentation/cs/learning/tweaks.itely msgid "Ladění výstupu" @@ -7100,16 +7301,15 @@ msgstr "" msgid "Klavír s vystředěným textem" msgstr "" -#. @appendixsubsec in Documentation/cs/learning/templates.itely -msgid "Klavír s vystředěným označením hlasitosti" -msgstr "" - #. @node in Documentation/cs/learning/templates.itely #. @appendixsec in Documentation/cs/learning/templates.itely -#. @appendixsubsec in Documentation/cs/learning/templates.itely msgid "Smyčcový kvartet" msgstr "" +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + #. @appendixsubsec in Documentation/cs/learning/templates.itely msgid "Hlasy smyčcového kvartetu" msgstr "" @@ -7166,201 +7366,213 @@ msgstr "" msgid "Džezová skupina" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:42 (variable) msgid "discant" msgstr "discanto" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:45 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:89 (variable) msgid "dot" msgstr "punto" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:51 (comment) msgid "16 voets register" msgstr "registro de 16 pies" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:52 (variable) msgid "accBasson" msgstr "acordFagot" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:58 (comment) msgid "een korig 8 en 16 voets register" msgstr "registro de een korig 8 en 16 pies" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:59 (variable) msgid "accBandon" msgstr "acordBandon" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:67 (variable) msgid "accVCello" msgstr "acordVCello" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:77 (comment) msgid "4-8-16 voets register" msgstr "registro de 4-8-16 pies" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:78 (variable) msgid "accHarmon" msgstr "acordArmon" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:88 (variable) msgid "accTrombon" msgstr "acordTrombon" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:100 (comment) msgid "eenkorig 4 en 16 voets register" msgstr "registro de eenkorig 4 y 16 pies" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:101 (variable) msgid "accOrgan" msgstr "acordOrgano" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:109 (variable) msgid "accMaster" msgstr "acordMaestro" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:123 (variable) msgid "accAccord" msgstr "acordAcordeon" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:135 (variable) msgid "accMusette" msgstr "accordMusette" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:145 (variable) msgid "accCeleste" msgstr "acordCeleste" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:153 (variable) msgid "accOboe" msgstr "acordOboe" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:161 (variable) msgid "accClarin" msgstr "acordClarin" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:167 (variable) msgid "accPiccolo" msgstr "acordPiccolo" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:173 (variable) msgid "accViolin" msgstr "acordViolin" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:54 (variable) msgid "continuo" msgstr "continuo" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:57 (comment) +msgid "\\bassFigureStaffAlignmentUp" +msgstr "\\bassFigureStaffAlignmentUp" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:61 (comment) +msgid "\\bassFigureStaffAlignmentDown" +msgstr "\\bassFigureStaffAlignmentDown" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:67 (context id) msgid "bassStaff" msgstr "pentagramaBajo" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) msgid "drh" msgstr "drh" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) msgid "drl" msgstr "drl" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +#. Documentation/snippets/adding-drum-parts.ly:55 (variable) msgid "timb" msgstr "timb" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) +#. Documentation/snippets/adding-extra-fingering-with-scheme.ly:44 (variable) +msgid "addScript" +msgstr "ponerScript" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:40 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) msgid "two" msgstr "dos" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:41 (variable) msgid "threeTwo" msgstr "tresDos" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:48 (variable) msgid "threeFour" msgstr "tresCuatro" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) msgid "splitStaffBarLineMarkup" msgstr "marcadoDivisoriaPentagramaDividido" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) msgid "splitStaffBarLine" msgstr "divisoriaPentagramaDividido" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:69 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) msgid "cueWhile" msgstr "cueWhile" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:82 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) msgid "flute" msgstr "flauta" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:88 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) msgid "clarinet" msgstr "clarinete" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:97 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) msgid "pianoRH" msgstr "pianoMD" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:102 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) msgid "pianoLH" msgstr "pianoMI" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) msgid "first, define a variable to hold the formatted date:" msgstr "primero definimos una variable para almacenar la fecha con formato:" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:37 (variable) msgid "date" msgstr "fecha" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:37 (comment) msgid "d-%m-%Y\\\" (localtime (current-time)))" msgstr "d-%m-%Y\\\" (localtime (current-time)))" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:39 (comment) msgid "use it in the title block:" msgstr "usarla en el bloque de título:" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:50 (comment) msgid "and use it in a \\markup block:" msgstr "y usarla en un bloque \\markup:" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:55 (variable) msgid "voiceFive" msgstr "vozCinco" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) +#. Documentation/snippets/adjusting-grace-note-spacing.ly:30 (variable) msgid "graceNotes" msgstr "notasDeAdorno" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (comment) msgid "Default layout:" msgstr "Diseño predeterminado:" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:53 (comment) msgid "Reducing the minimum space below the staff and above the lyrics:" msgstr "Reducir el espacio mínimo bajo el pentagrama y sobre la letra:" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:65 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:51 (comment) msgid "Increase the size of the bar number by 2" msgstr "Aumentar en 2 el tamaño del número de compás" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:67 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:63 (comment) msgid "Print a bar number every second measure" msgstr "Imprimir el número de compás cada dos compases" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:70 (comment) msgid "Center-align bar numbers" msgstr "Alinear números de compás al centro" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:73 (comment) msgid "Left-align bar numbers" msgstr "Alinear números de compás a la izquierda" @@ -7389,558 +7601,521 @@ msgstr "la RehearsalMark se alinea por la derecha con la armadura" msgid "and then shifted right by one unit." msgstr "y se desplaza una unidad a la derecha." -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) msgid "upperStaff" msgstr "pentagramaSuperior" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) +#. Documentation/snippets/ancient-fonts.ly:52 (comment) msgid "\\break % 1 (8*1)" msgstr "\\break % 1 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) +#. Documentation/snippets/ancient-fonts.ly:63 (comment) msgid "\\break %2 (8*1)" msgstr "\\break %2 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) +#. Documentation/snippets/ancient-fonts.ly:75 (comment) msgid "\\break % 3 (8*1)" msgstr "\\break % 3 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) +#. Documentation/snippets/ancient-fonts.ly:90 (comment) msgid "\\break % 4 (8*1)" msgstr "\\break % 4 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) msgid "\\break % 5 (8*1)" msgstr "\\break % 5 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) msgid "\\break % 6 (8*1)" msgstr "\\break % 6 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) msgid "\\break % 7 (8*1)" msgstr "\\break % 7 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) +#. Documentation/snippets/ancient-fonts.ly:129 (comment) msgid "\\break % 8 (8*1)" msgstr "\\break % 8 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) +#. Documentation/snippets/ancient-fonts.ly:132 (comment) msgid "\\break % 12 (32*1)" msgstr "\\break % 12 (32*1)" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) msgid "lowerStaff" msgstr "pentagramaInferior" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) +#. Documentation/snippets/ancient-fonts.ly:147 (comment) msgid "\\break % 2 (16*1)" msgstr "\\break % 2 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) +#. Documentation/snippets/ancient-fonts.ly:152 (comment) msgid "\\break % 4 (16*1)" msgstr "\\break % 4 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) +#. Documentation/snippets/ancient-fonts.ly:191 (comment) msgid "\\break % 9 (16*1)" msgstr "\\break % 9 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) +#. Documentation/snippets/ancient-fonts.ly:193 (comment) msgid "lig" msgstr "lig" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) +#. Documentation/snippets/ancient-fonts.ly:197 (comment) msgid "\\break % 11 (16*1)" msgstr "\\break % 11 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) +#. Documentation/snippets/ancient-fonts.ly:208 (comment) msgid "\\break % 12 (8*1)" msgstr "\\break % 12 (8*1)" -#. Documentation/snippets/ancient-headword.ly:34 (context id) +#. Documentation/snippets/ancient-headword.ly:38 (context id) msgid "cantus" msgstr "cantus" -#. Documentation/snippets/ancient-headword.ly:36 (comment) +#. Documentation/snippets/ancient-headword.ly:40 (comment) msgid "Verse 1 — Salve, Regína" msgstr "Verso 1 — Salve, Regína" -#. Documentation/snippets/ancient-headword.ly:47 (comment) +#. Documentation/snippets/ancient-headword.ly:51 (comment) msgid "Verse 2 — Vita, dulcédo" msgstr "Verso 2 — Vita, dulcédo" -#. Documentation/snippets/ancient-headword.ly:48 (comment) +#. Documentation/snippets/ancient-headword.ly:52 (comment) msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" msgstr "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:49 (comment) +#. Documentation/snippets/ancient-headword.ly:53 (comment) msgid "\\divisioMinima" msgstr "\\divisioMinima" -#. Documentation/snippets/ancient-headword.ly:50 (comment) +#. Documentation/snippets/ancient-headword.ly:54 (comment) msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" msgstr "\\[ a\\melisma \\flexa g\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:51 (comment) +#. Documentation/snippets/ancient-headword.ly:55 (comment) msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" msgstr "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:52 (comment) +#. Documentation/snippets/ancient-headword.ly:56 (comment) msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" msgstr "\\[ e\\melisma \\flexa d\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:53 (comment) +#. Documentation/snippets/ancient-headword.ly:57 (comment) msgid "\\divisioMaior" msgstr "\\divisioMaior" -#. Documentation/snippets/ancient-headword.ly:54 (comment) +#. Documentation/snippets/ancient-headword.ly:58 (comment) msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" msgstr "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" -#. Documentation/snippets/ancient-headword.ly:55 (comment) +#. Documentation/snippets/ancient-headword.ly:59 (comment) msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" msgstr "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:56 (comment) +#. Documentation/snippets/ancient-headword.ly:60 (comment) msgid "\\finalis" msgstr "\\finalis" -#. Documentation/snippets/ancient-headword.ly:57 (comment) +#. Documentation/snippets/ancient-headword.ly:61 (comment) msgid "Verse 3 — Ad te clamámus" msgstr "Verso 3 — Ad te clamámus" -#. Documentation/snippets/ancient-headword.ly:66 (comment) +#. Documentation/snippets/ancient-headword.ly:70 (comment) msgid "Verse 4 — Ad te suspirámus" msgstr "Verso 4 — Ad te suspirámus" -#. Documentation/snippets/ancient-headword.ly:79 (comment) +#. Documentation/snippets/ancient-headword.ly:83 (comment) msgid "Verse 5 — Eia ergo, Advocáta nostra" msgstr "Verso 5 — Eia ergo, Advocáta nostra" -#. Documentation/snippets/ancient-headword.ly:95 (comment) +#. Documentation/snippets/ancient-headword.ly:99 (comment) msgid "Verse 6 — Et Jesum" msgstr "Verso 6 — Et Jesum" -#. Documentation/snippets/ancient-headword.ly:109 (comment) +#. Documentation/snippets/ancient-headword.ly:113 (comment) msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" msgstr "Verso 7 ad finem — O clemens: O pia: O dulcis Virgo María" -#. Documentation/snippets/ancient-headword.ly:127 (comment) +#. Documentation/snippets/ancient-headword.ly:131 (comment) msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." msgstr "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) msgid "chant" msgstr "canto" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) msgid "verba" msgstr "verba" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:133 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:169 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:203 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:237 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:256 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "incipit" msgstr "incipit" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" -msgstr "espaciado apretado" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) +msgid "Set tight spacing" +msgstr "Establecer espaciado apretado" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) msgid "turn off bar lines" msgstr "oculter líneas divisorias" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) msgid "need this extra \\skip such that clef change comes" msgstr "se necesita este \\skip adicional tal que el cambio de clave aparezca" # También Líneas divisorias. FVD -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:101 (comment) msgid "after bar line" msgstr "después de la barra de compás" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" -msgstr "COMPROBAR: ¿no hace efecto?" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) msgid "turn bar lines on again" msgstr "activar de nuevo las barras de compás" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" -msgstr "ARREGLAR: esablecer de nuevo printKeyCancellation a #t no debe" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "Establecer de nuevo printKeyCancellation a #t no debe" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) msgid "occur in the first bar after the incipit. Dto. for forceClef." msgstr "ocurrir en el primer compás después del incipit. Lo mismo para forceClef." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:115 (comment) msgid "Therefore, we need an extra \\skip." msgstr "Por tanto, necesitamos un \\skip adicional." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) msgid "the actual music" msgstr "la música en sí" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:43 (comment) msgid "let finis bar go through all staves" msgstr "hacer que la línea de finis cruce todas las pautas" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:125 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (comment) msgid "finis bar" msgstr "línea de finis" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:129 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:49 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:238 (context id) msgid "discantusNotes" msgstr "notasDiscanto" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:178 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:228 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:75 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:85 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:98 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:105 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:221 (comment) msgid "two bars" msgstr "dos compases" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:141 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "eight bars" msgstr "ocho compases" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:137 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:241 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:195 (comment) msgid "one bar" msgstr "un compás" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:62 (variable) msgid "discantusLyrics" msgstr "letraDiscanto" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:165 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:72 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:245 (context id) msgid "altusNotes" msgstr "notasAlto" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:167 (comment) msgid "seven bars" msgstr "siete compases" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (variable) msgid "altusLyrics" msgstr "letraAltus" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:199 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:92 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:252 (context id) msgid "tenorNotes" msgstr "notasTenor" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) msgid "four bars" msgstr "cuatro compases" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (variable) msgid "tenorLyrics" msgstr "letraTenor" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:233 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:110 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:259 (context id) msgid "bassusNotes" msgstr "notasBajo" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:123 (variable) msgid "bassusLyrics" msgstr "letraBajo" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:266 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "choirStaff" msgstr "pautaCoro" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:273 (comment) msgid "no bars in staves" msgstr "no poner barras dentro de los pentagramas" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:291 (comment) msgid "incipit should not start with a start delimiter" msgstr "el incipit no empieza con un delimitador de comienzo" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:297 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) msgid "no slurs" msgstr "sin ligaduras de expresión" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "Quite el comentario de la instrucción \\\"\\remove\\\" de abajo para permitir" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" -msgstr "los saltos de línea también en aquellas barras donde" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" -msgstr "" -"se superpone una nota con el siguiente compás. La instrucción es un " -"comentario en esta" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" -msgstr "partitura corta de ejemplo, pero especialmente para partituras extensas," +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "The command below can be commented out in" +msgstr "La instrucción siguiente se puede eliminar en" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" -msgstr "probablemente consiga unos saltos de línea mejores y así mejorar" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "short scores, but especially for large scores you" +msgstr "partituras cortas, pero especialmente para partituras extensas," -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." -msgstr "el espaciado general si elimina el comentario de la instrucción siguiente." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "will typically yield better line breaking and improve" +msgstr "probablemente consiga unos saltos de línea mejores y mejore" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" -msgstr "\\remove \\\"Forbid_line_break_engraver\\\"" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:303 (comment) +msgid "overall spacing if you do not comment the command out." +msgstr "el espaciado general si no elimina la instrucción." -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:93 (variable) msgid "tick" msgstr "pulso" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:97 (comment) msgid "Use markup to center the chant on the page" msgstr "Usar marcado para centrar el canto sobre la página" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:100 (comment) msgid "centered" msgstr "centrado" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:140 (comment) +#. Documentation/snippets/hymn-template.ly:127 (comment) msgid "End score" msgstr "Fin de la partitura" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:142 (comment) msgid "End markup" msgstr "Fin del marcado" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:123 (variable) +#. Documentation/snippets/clusters.ly:29 (variable) msgid "fragment" msgstr "fragmento" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) +#. Documentation/snippets/asymmetric-slurs.ly:31 (variable) msgid "slurNotes" msgstr "notasLigadura" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:44 (comment) msgid "Default behavior" msgstr "Comportamiento predeterminado" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:50 (comment) msgid "Corrected to avoid collisions" msgstr "Corregido para evitar colisiones" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "%%%%%%% Cortar por aquí ----- Inicio de 'bbarred.ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" -msgstr "PostScript -------------------------------" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:37 (comment) +msgid "C with slash -------------------------------" +msgstr "Do tachado -------------------------------" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" -msgstr "pScript" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:38 (variable) +msgid "cWithSlash" +msgstr "doTachado" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" -msgstr "cambie por Si si lo prefiere" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "(B)show %% cambie por Do si lo prefiere" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) msgid "Span -----------------------------------" msgstr "Extensión -----------------------------------" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "Sintaxis: \\bbarre #\\\"text\\\" { notas } - texto = cualquier número de caja" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:43 (variable) msgid "bbarre" msgstr "bbarre" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "uncomment this line for make full barred" msgstr "quite el comentario de esta línea para hacer cejilla completa" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:73 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "%%%%%%% Cortar por aquí ----- Final de 'bbarred.ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" -msgstr "Copie y cambie la última línea para cejilla completa. Cambie el nombre a 'fbarred.ly'" +msgstr "" +"Copie y cambie la última línea para cejilla completa. Cambie el nombre a " +"'fbarred.ly'" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:81 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "Sintaxis: \\bbarre #\\\"text\\\" { notas } - texto = cualquier número de caja" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:55 (comment) msgid "Set default beaming for all staves" msgstr "Establecer el barrado predeterminado para todos los pentagramas" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:63 (comment) msgid "Modify beaming for just this staff" msgstr "Modificar el barrado sólo para este pentagrama" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:68 (comment) msgid "Inherit beaming from Score context" msgstr "Heredar el barrado del contexto Score" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:74 (comment) msgid "Modify beaming for this voice only" msgstr "Modificar el barrado sólo para esta voz" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "ritmo 2-3-2" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:26 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "bloque paper del book, que se hereda por todas las bookparts" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:29 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" "Pie de la página: añadir una línea de pie diferente para la parte en la " "última página de la parte" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:33 (comment) msgid "Copyright header field only on book first page." msgstr "Campo de cabecera Copyright sólo en la primera página del libro" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:37 (comment) msgid "Part tagline header field only on each part last page." msgstr "Cebecera de lína de pie de la parte sólo en la última página de cada parte" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:41 (comment) msgid "Tagline header field only on book last page." msgstr "Campo de cabecera Tagline sólo en la última página del libro" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:48 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "Cabecera del libro, que se hereda por la primera bookpart" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:57 (comment) msgid "a different page breaking function may be used on each part" msgstr "Se puede usar una función de salto de página diferente en cada parte" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:24 (comment) msgid "this bar contains no \\breathe" msgstr "este compás no tiene ningún \\breathe" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "Modern notation:" msgstr "Notación moderna:" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "de forma predeterminada, \\breathe usa la rcomma, como si dijésemos:" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:28 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" @@ -7948,2080 +8123,2249 @@ msgstr "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "rvarcomma y lvarcomma son variantes de las rcomma y lcomma predeterminadas" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:32 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" "Nota: aquí hay que usar el contexto de Staff pues iniciamos una Voice más " "abajo" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:36 (comment) msgid "vee" msgstr "uve" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:34 (comment) msgid "construct the symbol" msgstr "construir el símbolo" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:43 (comment) msgid "set the breathe mark back to normal" msgstr "volver a poner la respiración normal" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:33 (variable) msgid "hairpinWithCenteredText" msgstr "reguladorConTextoCentrado" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMolto" msgstr "reguladorMolto" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:46 (variable) msgid "hairpinMore" msgstr "reguladorMas" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:47 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (variable) msgid "smallFlageolet" msgstr "flageoletPequeño" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:53 (comment) msgid "Default setting" msgstr "Ajuste predeterminado" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "The following is only here to print the names of the" msgstr "Lo que sigue está solamente para poder imprimir los nombres de los" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "estilos de acorde; quítelos si no los quiere" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:42 (comment) msgid "print them." msgstr "imprimir." -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:22 (comment) msgid "change for other default global staff size." msgstr "cambiar para otro tamaño de pentagrama global predeterminado." -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:183 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:186 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/stem-cross-staff-engraver.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "{" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:185 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:28 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/expressive-headword.ly:37 (comment) +#. Documentation/snippets/expressive-headword.ly:38 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/stem-cross-staff-engraver.ly:28 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:229 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "}" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:36 (variable) msgid "sustainNotes" msgstr "notasSostenuto" -#. Documentation/snippets/chant-or-psalms-notation.ly:45 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "plicaSi" -#. Documentation/snippets/chant-or-psalms-notation.ly:46 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "plicaNo" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chord-glissando-in-tablature.ly:55 (variable) +msgid "myMusic" +msgstr "miMusica" + +#. Documentation/snippets/chord-name-exceptions.ly:47 (comment) msgid "modify maj9 and 6(add9)" msgstr "cambiar maj9 y 6(add9)" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:48 (comment) msgid "Exception music is chords with markups" msgstr "la Música de Excepciones son acordes con marcados" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:49 (variable) msgid "chExceptionMusic" msgstr "cambiaMusicaExcepciones" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:54 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "Convertir la música en una lista y añadirla a las excepciones existentes." -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:55 (variable) msgid "chExceptions" msgstr "cambiaExcepciones" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:59 (variable) msgid "theMusic" msgstr "laMusica" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) +#. Documentation/snippets/chordchanges-for-fretboards.ly:50 (variable) msgid "myChords" msgstr "misAcordes" -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (variable) msgid "theChords" msgstr "losAcordes" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:130 (comment) msgid "\\break" msgstr "\\break" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "estrofaUno" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "estrofaDos" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "sop" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:67 (variable) msgid "origScore" msgstr "partituraOriginal" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:85 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "cada zona clip-region es un par (INICIO . FIN)" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "where both are rhythmic-locations." msgstr "donde ambas son rhythmic-locations." -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:88 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "(make-rhythmic-locations NUM-COMPAS NUMERADOR DENOMINADOR)" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "significa NUMERADOR/DENOMINADOR redondas en el compás número NUM-COMPAS" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "Lista asociativa de alturas a colores." -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "Comparar la altura y la alteración (no la octava)." -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:31 (variable) msgid "piuF" msgstr "piuF" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:98 (variable) msgid "musicUp" msgstr "musicaArriba" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:105 (variable) msgid "musicDown" msgstr "musicaAbajo" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "mostrar regulador" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) msgid "hide text span" msgstr "ocultar extensión de texto" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) msgid "show glissando" msgstr "mostrar glissando" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) -msgid "parenF" +#. Documentation/snippets/creating-double-digit-fingerings.ly:23 (variable) +msgid "ten" +msgstr "ten" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:27 (variable) +msgid "fifty" +msgstr "cincuenta" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:31 (variable) +msgid "finger" +msgstr "dedo" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:42 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" +"sobreescritura opcional para suprimir advertencas para digitaciones mayores " +"de 5" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:49 (variable) +msgid "parenF" msgstr "forteParen" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) msgid "the hidden measure and bar line" msgstr "el compás y barra ocultos" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "\\cadenzaOn desactiva el cálculo automático de números de compás" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "this is in half-spaces," +msgstr "esto está en semi-espacios," + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "de forma que las plicas tengan 9.5 espacios de longitud" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "stems are normally lengthened" +msgstr "Las plicas normalmente se alargan" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "hacia arriba, por tanto debemos bajar la plica en una cantidad" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "igual al alargamiento: en este caso (19 - 7) / 2" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:37 (comment) +msgid "(7 is default stem length)" +msgstr "(7 es la longitud de plica predeterminada)" + +#. Documentation/snippets/cross-staff-tremolos.ly:48 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:21 (context id) msgid "up" msgstr "arriba" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:53 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:51 (context id) msgid "down" msgstr "abajo" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:31 (comment) msgid "Set global properties of fret diagram" msgstr "Fijar propiedades globales del diagrama de posición" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:16 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:59 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:29 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:90 (context id) msgid "mel" msgstr "melo" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "Do mayor para guitarra, sin cejilla, usar predeterminados" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "terse style" msgstr "estilo escueto" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "C major for guitar, barred on third fret" msgstr "Do mayor para guitarra, cejilla en el tercer traste" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:83 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:110 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:183 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:210 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:282 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:309 (comment) msgid "verbose style" msgstr "estilo prolijo" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) msgid "size 1.0" msgstr "tamaño 1.0" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:75 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:62 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:162 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:261 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" "leyenda de posición en romana, leyendas de dedos debajo de las cuerdas, " "cejilla recta" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:77 (comment) msgid "standard size" msgstr "tamaño estándar" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "orientación apaisada, números arábigos, M para cuerda muda" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:97 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" "sin cejilla, leyenda de posición abajo o izquierda, fuente pequeña de " "indicación de cuerda muda" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:132 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:232 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:331 (comment) msgid "simple D chord" msgstr "acorde de Re sencillo" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "puntos mayores, centrados, menos trastes" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:121 (comment) msgid "label below string" msgstr "leyenda debajo de la cuerda" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:29 (comment) msgid "Grob utilities" msgstr "Utilidades de Grob" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:31 (comment) msgid "These are literal rewrites of some C++ methods used by the ambitus engraver." -msgstr "Esto son reescrituras literales de algunos métodos en C++ utilizados por el grabador de tesitura." +msgstr "" +"Esto son reescrituras literales de algunos métodos en C++ utilizados por el " +"grabador de tesitura." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:62 (comment) msgid "Ambitus data structure" msgstr "Estructura de datos de la tesitura" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:65 (comment) msgid "The class holds the various grobs that are created" msgstr "La clase guarda los distintos grobs que se crean" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:66 (comment) msgid "to print an ambitus:" msgstr "para imprimir una tesitura:" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:67 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "- ambitus-group: el grob que agrupa todos los componentes de una tesitura" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:68 (comment) msgid "(Ambitus grob);" msgstr "(grob de la tesitura);" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:69 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "- ambitus-line: la línea vertical entre las notas alta y baja de la tesitura" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:70 (comment) msgid "notes (AmbitusLine grob);" msgstr "notas (grob AmbitusLine);" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:71 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "- ambitus-up-note y ambitus-down-note: la cabeza y su alteración" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:72 (comment) msgid "for the lower and upper note of the ambitus (see class" -msgstr "para las notas inferior y superior de la tesitura (véase la clase " +msgstr "" +"para las notas inferior y superior de la tesitura (véase la clase " -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:73 (comment) msgid "below)." msgstr "más abajo)." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:74 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "Las otras ranuras definen los contextos de tonalidad y clave del grabador:" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:75 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "- start-c0: posición del Do central al principio de la pieza." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:76 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "Se usa para colocar las notas de tesitura de acuerdo con su altura;" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:77 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "- start-key-sig: armadura al principio de la pieza." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:78 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "Se usa para determinar si se deben imprimir alteraciones junto a las " -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:79 (comment) msgid "notes." msgstr "notas de tesitura." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:93 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "Accesor para los datos de notas inferior y superior de la tesitura" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:101 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "La clase guarda los grobs que son específicos de las" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:102 (comment) msgid "(lower and upper) notes:" msgstr "notas (inferior y superior):" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:103 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "- head: un grob AmbitusNoteHead;" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:104 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "- accidental: un grob AmbitusAccidental a imprimir posiblemente junto a" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:105 (comment) msgid "to the ambitus note head." msgstr "la cabeza de la nota de tesitura." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:106 (comment) msgid "Moreover:" msgstr "Además:" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:107 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "- pitch es la altura absoluta de la nota" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:108 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" -msgstr "- cause es el evento de nota que produce esta nota de tesitura, es decir, la nota" +msgstr "" +"- cause es el evento de nota que produce esta nota de tesitura, es decir, la " +"nota" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:109 (comment) msgid "or upper note of the considered music sequence." msgstr "inferior o superior de la secuencia musical considerada." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:122 (comment) msgid "Ambitus engraving logics" msgstr "Lógica del grabado de la tesitura" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:124 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "Reescritura del código de @file{lily/ambitus-engraver.cc}." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:293 (comment) msgid "Ambitus engraver definition" msgstr "Definición del grabador de tesitura" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly:319 (comment) msgid "Example" msgstr "Ejemplo" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:143 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:88 (comment) msgid "add FretBoards for the Cuatro" msgstr "añadir FretBoards para el cuatro venezolano" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:144 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "Note: This section could be put into a separate file" msgstr "Nota: esta sección se puede poner en un archivo aparte" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:145 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "posiciones-predefinidas-del-cuatro.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:146 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "and \\included into each of your compositions" msgstr "e incluirse en todas sus composiciones con \\include" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:148 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) msgid "cuatroTuning" msgstr "afinacionCuatro" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:98 (variable) msgid "dSix" msgstr "sextaRe" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dMajor" msgstr "reMayor" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:155 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "aMajSeven" msgstr "laSeptMayor" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:156 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "dMajSeven" msgstr "reSeptMayor" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:157 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "gMajor" msgstr "solMayor" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:175 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:120 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "fin del potencial archivo de inclusión /posiciones-predefinidas-del-cuatro.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:180 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:125 (variable) msgid "primerosNames" msgstr "nombresPrimeros" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:184 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:129 (variable) msgid "primeros" msgstr "primeros" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:207 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:152 (comment) msgid "\\override FretBoard" msgstr "\\override FretBoard" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:208 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) msgid "#'(fret-diagram-details string-count) = #'4" msgstr "#'(fret-diagram-details string-count) = #'4" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/demo-midiinstruments.ly:28 (variable) msgid "baseMelody" msgstr "melodiaBase" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:77 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "debe ser menor que el número real de líneas de la pauta" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "fixA" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "fixB" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) -msgid "\\\" (make-string 36 #\\-))" -msgstr "\\\" (make-string 36 #\\-))" +#. Documentation/snippets/displaying-grob-ancestry.ly:182 (comment) +msgid "~a~&\\\"" +msgstr "~a~&\\\"" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:25 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "new voice ( = \\voiceOne), oculta" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:27 (comment) msgid "attach glissando to note heads" msgstr "aplicar glissando a la cabeza de las notas" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "original voice with chords rearranged so that" msgstr "voz original con acordes rehecha de forma que" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:33 (comment) msgid "glissando is attached to a & c" msgstr "el glissando se aplica al La y al Do" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "círculo" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "Dos funciones para extensores de (de)crescendo donde podemos dar el" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (comment) msgid "spanner text." msgstr "texto de la extensión explícitamente." -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:60 (variable) msgid "mycresc" msgstr "miCresc" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:66 (variable) msgid "mydecresc" msgstr "miDecresc" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:59 (comment) +#. Documentation/snippets/dynamics-text-spanner-postfix.ly:62 (comment) msgid "Some sample text dynamic spanners, to be used as postfix operators" msgstr "Algunos extensores de texto de muestra, para usar como operadores posfijos" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:60 (variable) +#. Documentation/snippets/dynamics-text-spanner-postfix.ly:63 (variable) msgid "crpoco" msgstr "crpoco" -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:38 (comment) msgid "NR 1.7 Editorial annotations" msgstr "NR 1.7 Anotaciones editoriales" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:40 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "Beethoven, Op. 31, No. 3" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:41 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "Sonata para piano núm. 18, Mov. II, Scherzo" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:42 (comment) msgid "Measures 9 - 14" msgstr "Compases 9 a 14" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:46 (comment) +#. Documentation/snippets/expressive-headword.ly:42 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) +#. Documentation/snippets/rhythms-headword.ly:37 (comment) msgid "RH Staff" msgstr "Pentagrama MD" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:84 (comment) +#. Documentation/snippets/expressive-headword.ly:174 (comment) +#. Documentation/snippets/pitches-headword.ly:100 (comment) +#. Documentation/snippets/rhythms-headword.ly:126 (comment) msgid "LH Staff" msgstr "Pentagrama MI" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:29 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "PostScript is a registered trademark of Adobe Systems Inc." -#. Documentation/snippets/engravers-one-by-one.ly:71 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:74 (comment) msgid "sample music" msgstr "música de ejemplo" -#. Documentation/snippets/engravers-one-by-one.ly:72 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:75 (variable) msgid "topVoice" msgstr "vozSuperior" -#. Documentation/snippets/engravers-one-by-one.ly:80 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:83 (variable) msgid "botVoice" msgstr "vozInferior" -#. Documentation/snippets/engravers-one-by-one.ly:88 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:91 (variable) msgid "hoom" msgstr "hum" -#. Documentation/snippets/engravers-one-by-one.ly:99 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:102 (variable) msgid "pah" msgstr "pa" -#. Documentation/snippets/engravers-one-by-one.ly:109 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:112 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "Sólo para gurús: tinglado para la conversión Request->Element" -#. Documentation/snippets/engravers-one-by-one.ly:112 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:210 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:223 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:279 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:293 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:115 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:213 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:226 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:282 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:296 (variable) msgid "MyStaff" msgstr "miPentagrama" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:143 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "fijar instrumentName específicamente, para no obtener" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:144 (comment) msgid "weird effects when doing instrument names for" msgstr "efectos extraños al hacer nombres de instrumento para" -#. Documentation/snippets/engravers-one-by-one.ly:142 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "piano staves" msgstr "sistemas de piano" -#. Documentation/snippets/engravers-one-by-one.ly:151 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:237 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:250 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:263 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:154 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:240 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:253 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:266 (variable) msgid "MyVoice" msgstr "miVoz" -#. Documentation/snippets/engravers-one-by-one.ly:166 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:169 (comment) msgid "must come before all" msgstr "ha de ir antes de todo" -#. Documentation/snippets/engravers-one-by-one.ly:176 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:179 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "\\consists \\\"Rest_engraver\\\"" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) +msgid "NR 1.3 Expressive marks" +msgstr "Referencia de la notación 1.3 Marcas expresivas" + +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "L. v. Beethoven, Op. 49 no. 1" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:29 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "Sonata para piano núm. 19 - \\\"Leichte Sonate\\\"" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "measures 1 - 12" msgstr "Compases 1 a 12" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\layout {" msgstr "\\layout {" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\context {" msgstr "\\context {" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "\\Score" msgstr "\\Score" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "\\override SpacingSpanner #'base-shortest-duration =" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) msgid "#(ly:make-moment 1 20)" msgstr "#(ly:make-moment 1 20)" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) +msgid "NR 2.7.3 Figured bass" +msgstr "Referencia de la notación 2.7.3 bajo cifrado" + +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Sonata II, Allemanda" msgstr "Sonata II, Allemanda" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:30 (comment) msgid "measures 1 - 88" msgstr "compases 1 a 88" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:31 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "Codificado por Neil Puttock; modificado por Carl Sorensen" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:33 (variable) msgid "extendOn" msgstr "extendOn" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:34 (variable) msgid "extendOff" msgstr "extendOff" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:42 (context id) msgid "violinoI" msgstr "violinI" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:60 (context id) msgid "violinoII" msgstr "violinII" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:78 (context id) msgid "violone" msgstr "violone" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:38 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "marcadoCentro" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:79 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "Cortar por aquí ----- Inicio 'flamenco.ly'" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:81 (comment) msgid "Text indicators" msgstr "Indicadores de texto" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:82 (variable) msgid "abanico" msgstr "abanico" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:83 (variable) msgid "rasgueaso" msgstr "rasgueo" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:84 (variable) msgid "alzapua" msgstr "alzapua" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:86 (comment) msgid "Finger stroke symbols" msgstr "Símbolos de golpes de dedo" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:87 (variable) msgid "strokeUp" msgstr "golpeArriba" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:97 (variable) msgid "strokeDown" msgstr "golpeAbajo" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:107 (comment) msgid "Golpe symbol" msgstr "Símbolo de golpe" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:108 (variable) msgid "golpe" msgstr "golpe" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:122 (variable) msgid "strokeUpGolpe" msgstr "golpearArriba" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:123 (variable) msgid "iUpGolpe" msgstr "iGolpeArriba" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Strokes for all fingers" msgstr "Golpes para todos los dedos" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "pUp" msgstr "pArriba" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:127 (variable) msgid "pDown" msgstr "pAbajo" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:128 (variable) msgid "iUp" msgstr "iArriba" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:129 (variable) msgid "iDown" msgstr "iAbajo" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:130 (variable) msgid "mUp" msgstr "mArriba" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:131 (variable) msgid "mDown" msgstr "mAbajo" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:132 (variable) msgid "aUp" msgstr "aArriba" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:133 (variable) msgid "aDown" msgstr "aAbajo" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:134 (variable) msgid "xUp" msgstr "xArriba" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:135 (variable) msgid "xDown" msgstr "xAbajo" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:138 (comment) msgid "Just handy :)" msgstr "Muy cómodo :)" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:139 (variable) msgid "tupletOff" msgstr "grupoNo" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "tupletsOff" msgstr "gruposNo" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "tupletsOn" msgstr "gruposSi" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:154 (variable) msgid "headsOff" msgstr "cabezasNo" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:160 (variable) msgid "headsOn" msgstr "cabezasSi" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:166 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "Cortar por aquí ----- Final 'flamenco.ly'" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "Ejemplo 1" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "Ejemplo 2" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "Ejemplo 3" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "Ejemplo 4" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:22 (variable) msgid "slap" msgstr "slap" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:24 (variable) msgid "example" msgstr "ejemplo" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:41 (variable) msgid "lyr" msgstr "letra" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:37 (comment) msgid "A chord for ukulele" msgstr "Un acorde de ukelele" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "Acorde para el ukelele, con el formato definido en la cadena de definición" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "1.2 * tamaño, 4 cuerdas, 4 trastes, digitación debajo de las cuerdas" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:49 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" "redio del punto .35 del espacio de traste, posición del punto 0.55 del " "espacio de traste" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) msgid "These chords will be in normal orientation" msgstr "Estos acordes estarán en la orientación normal" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:64 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:85 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:112 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:164 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:185 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:212 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:263 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:284 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:311 (comment) #, python-format msgid "110% of default size" msgstr "110% del tamaño predeterminado" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) msgid "Double barre used to test barre function" msgstr "Doble barra utilizada para probar la función de barra" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "C major for guitar, with capo on third fret" msgstr "Do mayor para guitarra, cejilla en el tercer traste" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:144 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:243 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:342 (comment) msgid "simple D chord, large top fret thickness" msgstr "acorde sencillo de Re, grosor del traste grande superior" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) msgid "These chords will be in landscape orientation" msgstr "Eestos acordes estarán en orientación horizontal" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "Estos acordes estarán en orientación horizontal opuesta" -#. Documentation/snippets/fretboards-alternate-tables.ly:69 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:90 (comment) msgid "Make a blank new fretboard table" msgstr "Hacer una tabla de trastes en blanco" -#. Documentation/snippets/fretboards-alternate-tables.ly:72 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:93 (comment) msgid "Make a new fretboard table as a copy of default-fret-table" msgstr "Hacer una tabla de trastes nueva como copia de default-fret-table" -#. Documentation/snippets/fretboards-alternate-tables.ly:75 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:96 (comment) msgid "Add a chord to custom-fretboard-table-one" msgstr "Añadir un acorde a custom-fretboard-table-one" -#. Documentation/snippets/fretboards-alternate-tables.ly:81 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:102 (comment) msgid "Add a chord to custom-fretboard-table-two" msgstr "Añadir un acorde a custom-fretboard-table-two" -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "atajos" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "orientaciones de digitación" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "sfoiz" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "sfor" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "sfoder" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "sfou" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "orientaciones de los números de cuerda" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "ssnol" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "(abajo derecha arriba)" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "ssnoarriba" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "ssnoabajo" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" msgstr "ssnor" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "definir desplazamiento de la digitación" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "FO" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "marcados" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" msgstr "rit" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) msgid "dimin" msgstr "dimin" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "andantino" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "benmarcato" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "pdolce" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "LA MÚSICA %%%" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "c. 1" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "c. 2" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "c. 3" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "c. 4" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "c. 5" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "fin del c. 6" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "c. 7" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "comienzo del c. 8" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "fin del c. 8" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "fin del c. 9" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "c. 10" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "comienzo del c. 11" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "final del c. 11" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "comienzo del c. 2" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "final del c. 2" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "la nueva sección comienza aquí en La menor" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "comienzo del c. 6" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "final del c. 6" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "c. 8" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "comienzo del c. 9" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "final del c. 9" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "c. 11" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) msgid "guitar" msgstr "guitarra" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "armonicosPinchados" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "armónicos artificiales (AH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "armónicos pinchados (PH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "armónicos golpeados (TH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "armónicos tocados (TCH)" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "cuerdaTraste" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "Crear un sello de corchete buscando el glifo en la fuente tipográfica" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "notasdeejemplo" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly:74 (comment) +msgid "Just some example score to show how to use these functions:" +msgstr "Una simple partitura de ejemplo para mostrar la forma de uso de estas funciones:" + +#. Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly:100 (variable) +msgid "oneNoteScore" +msgstr "partituraDeUnaSolaNota" + +#. Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly:117 (comment) +msgid "Top-level scores are also handled correctly" +msgstr "Las partituras del nivel superior también se manejan correctamente" + +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:57 (comment) msgid "this moves them up one staff space from the default position" msgstr "moverlas hacia arriba un espacio de pentagrama desde la posición de" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:75 (comment) msgid "set up grids" msgstr "establecer rejillas" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:77 (comment) msgid "set the grid interval to one quarter note" msgstr "establecer intervalo de rejilla a una negra" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:83 (comment) msgid "this moves them to the right half a staff space" msgstr "moverlas a la derecha medio espacio de pentagrama" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:42 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "ocultar pentagrama y notas para que sólo se vea la rejilla" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:49 (comment) msgid "dummy notes to force regular note spacing" msgstr "notas falsas para forzar el espaciado regular de las notas" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:65 (comment) msgid "center grid lines horizontally below note heads" msgstr "centrar las líneas de rejilla horizontalmente bajo las cabezas" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "set line length and positioning:" msgstr "fijar la longitud y la posición de la línea:" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "dos espacios por encima de la línea central sobre el pentagrama oculto" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:74 (comment) msgid "to four spaces below center line on visible staff" msgstr "" "hasta cuatro espacios por debajo de la línea central sobre el pentagrama " "visible" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "Ocultar el número de traste: útil para trazar un slide dentro de" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "o a partir de un punto casual del mástil." -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "ocultarTraste" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:52 (variable) msgid "drum" msgstr "percusion" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "Solución 1: usar un marcado sencillo con un valor concreto de halign" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "Inconveniente: es un marcado, no una instrucción de matiz dinámico," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) msgid "etc. will have no effect" msgstr "por lo que \\dynamicDown etc. no funcionan" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (variable) msgid "semppMarkup" msgstr "semppMarcado" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "Solución 2: usar una indicación de dinámica y desplazarla con" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "\\once \\override ... #'X-offset = .." -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "Inconveniente: se necesita \\once\\override para cada invocación" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:68 (variable) msgid "semppK" msgstr "semppK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "" "Solución 3: aplicar relleno a la indicación dinámica para que el center-" "alignment" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "puts it at the correct position" msgstr "lo ponga en la posición correcta" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (comment) msgid "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" "Inconveniente: el relleno reserva el espacio realmente, no puede haber nada " "más aquí" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:78 (variable) msgid "semppT" msgstr "semppT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "" "Solución 4: indicación dinámica, fijando a 0 las dimensiones del texto " "adicional" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "Inconveniente: para lilypond \\\"sempre\\\" no tiene dimensiones," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "other stuff there => collisions" msgstr "lo que podría dar lugar a colisiones" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "Inconveniente: asimismo, parece haber algo de espacio, por lo que" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (comment) msgid "same alignment as without the additional text" msgstr "no es exactamente la misma alnieación que sin el texto adicional" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:91 (variable) msgid "semppM" msgstr "semppM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" "Solución 5: indicación dinámica con desplazamiento explícito dentro de la " "función de Scheme" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:101 (variable) msgid "semppG" msgstr "semppG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "Solución 6: indicación dinámica con alineación explícita. ¡Sólo tiene efecto " -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "if one sets X-offset!" msgstr "si se fija X-offset!" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "Inconveniente: ¡Hay que fijar DynamicText #'X-offset!" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "Inconveniente: alineado con el borde derecho del texto adicional," -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (comment) msgid "not at the center of pp" msgstr "no con el centro del pp" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:114 (variable) msgid "semppMII" msgstr "semppMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:122 (context id) msgid "s" msgstr "s" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:129 (context id) msgid "sMarkup" msgstr "sMarkup" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:136 (context id) msgid "sK" msgstr "sK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:147 (context id) msgid "sT" msgstr "sT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:154 (context id) msgid "sM" msgstr "sM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:161 (context id) msgid "sG" msgstr "sG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (context id) msgid "sMII" msgstr "sMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:172 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "Al fijarlo a ##f (falso) obtenemos el mismo resultado" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:33 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:46 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:73 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:70 (variable) msgid "harmonies" msgstr "armonias" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:36 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "a continuación la instrucción para mover el nombre del acorde" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:39 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "esta línea es el segundo método" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:49 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "a continuación la instrucción para mover el diagrama de posición" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:52 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "aquí el segundo método" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:62 (variable) msgid "Timeline" msgstr "LineaDeTiempo" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:94 (comment) msgid "Start score" msgstr "Inicio de la partitura" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start pianostaff" msgstr "Iniciar sistema de piano" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:97 (comment) msgid "Start Staff = RH" msgstr "inicio de pentagrama MD" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:100 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "Inicio de voz = \\\"Soprano\\\"" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "Final de voz = \\\"Soprano\\\"" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:105 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "Inicio de voz = \\\"Alto\\\"" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "Final de voz = \\\"Alto\\\"" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "End Staff = RH" msgstr "Final de pentagrama MD" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:111 (comment) msgid "Start Staff = LH" msgstr "Inicio de pentagrama MI" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:114 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "Inicio de voz = \\\"Tenor\\\"" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "Final de voz = \\\"Tenor\\\"" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:119 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "Inicio de voz = \\\"Bass\\\"" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "Final de voz = \\\"Bass\\\"" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) msgid "End Staff = LH" msgstr "Final de pentagrama MI" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:125 (comment) msgid "End pianostaff" msgstr "Final del sistema de piano" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "Start paper block" msgstr "Inicio del bloque paper" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "don't indent first system" msgstr "no sangrar el primer sistema" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "shorten line length to suit music" msgstr "acortar la longitur de la línea para adecuarse a la música" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:149 (comment) msgid "End paper block" msgstr "Final del boque paper" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "discantusIncipit" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "altusIncipit" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "dos compases" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "tenorIncipit" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "bassusIncipit" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "sin líneas divisorias en los pentagramas ni en la letra" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" "las dos instrucciones siguientes mantienen la letra entre las barras de " "compás" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "Quite el comentario de la instrucción \\\"\\remove\\\" de abajo para permitir" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "saltar también en las barras en que se superpone una nota" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "sobre el siguiente compás. La instrucción es un comentario en este" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "partitura corta de ejemplo, pero especialmente para partituras extensas," + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "probablemente consiga unos saltos de línea mejores y así mejorar" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "el espaciado general si elimina el comentario de la instrucción siguiente." + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:296 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "\\remove \\\"Forbid_line_break_engraver\\\"" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:21 (variable) msgid "tuning" msgstr "afinacion" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:46 (variable) msgid "makePercent" msgstr "hacerPorcentaje" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "#(set-global-staff-size 16)" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "Algunos macros %%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "sl" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "nsl" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "crSi" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "crNo" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "insertar aquí el código para el estilo de nombres de acorde" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "acordesJazz" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "Keys'n'thangs %%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "Tono" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "############ Trompas ############" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "------ Trompeta ------" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "trpt" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "acordesTrp" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "trompeta" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "------ Saxofón alto ------" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "acordesAlto" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "saxoAlto" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "------ Saxofón barítono ------" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "bari" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "acordesBari" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "saxoBari" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "------ Trombón ------" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "tbon" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "acordesTbon" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "trombon" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "############ Sección rítmica #############" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "------ Guitarra ------" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "guit" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "acordesGuit" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "------ Piano ------" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "mdArriba" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "mdAbajo" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "miArriba" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "miAbajo" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "PianoMD" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "PianoMI" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "------ Guitarra bajo ------" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "------ Percusión ------" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "contenidoPercusion" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "Aquí va todo junto %%%%%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "trompas" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "saxoalto" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "acordesbari" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "saxobari" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "acordes" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:19 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "M. Ravel, Sonatine (1905)" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:20 (comment) msgid "First movement" msgstr "Primer movimiento" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:30 (variable) msgid "fermataLong" msgstr "calderonLargo" -#. Documentation/snippets/lyrics-old-spacing-settings.ly:39 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:77 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:76 (variable) -msgid "sopMusic" -msgstr "musicaSoprano" - -#. Documentation/snippets/lyrics-old-spacing-settings.ly:40 (comment) -#. Documentation/snippets/lyrics-old-spacing-settings.ly:46 (comment) -msgid "VERSE ONE" -msgstr "ESTROFA UNO" - -#. Documentation/snippets/lyrics-old-spacing-settings.ly:68 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:110 (context id) -msgid "women" -msgstr "mujeres" - -#. Documentation/snippets/lyrics-old-spacing-settings.ly:80 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:122 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:125 (context id) -msgid "men" -msgstr "hombres" - -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "Iniciar ajustes de makam" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:24 (variable) msgid "bassfigures" msgstr "cifrasbajo" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:26 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "desde la quinta línea (posición 2) hasta la tercera (posición 0)" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:29 (comment) msgid "from center to one above center (position 1)" msgstr "desde tercera línea hasta la cuarta (posición 1)" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:22 (variable) msgid "speakOn" msgstr "hablarSi" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:39 (variable) msgid "speakOff" msgstr "hablarNo" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:27 (comment) msgid "Candide, Voltaire" msgstr "Candide, Voltaire" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:60 (comment) msgid "the final bar line is not interrupted" msgstr "la barra final no se interrumpe" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:22 (variable) msgid "normalPos" msgstr "posNormal" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:75 (variable) msgid "dashPlus" msgstr "dashPlus" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:28 (comment) msgid "Set tuplets to be extendable..." msgstr "Hacer los grupos especiales extensibles..." -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) msgid "...to cover all items up to the next note" msgstr "... para que cubran todos los elementos hasta la nota siguiente" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:34 (comment) msgid "...or to cover just whitespace" msgstr "... o para cubrir sólo el espacio vacio" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:27 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:72 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +msgid "sopMusic" +msgstr "musicaSoprano" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:28 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:34 (comment) +msgid "VERSE ONE" +msgstr "ESTROFA UNO" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:56 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +msgid "women" +msgstr "mujeres" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:68 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:114 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +msgid "men" +msgstr "hombres" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "armonicoAlAire" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "primer armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "segundo armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "tercer armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "cuarto armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "quinto armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "sexto armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "séptimo armónico" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "octavo armónico" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for instrumentName" msgstr "espacio para instrumentName" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (comment) msgid "space for shortInstrumentName" msgstr "espacio para shortInstrumentName" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) msgid "fluteMusic" msgstr "musicaFlauta" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "Las notas tal como están escritas en un manuscrito para clarinete en La" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (comment) msgid "are transposed to concert pitch." msgstr "se transcriben al tono de concierto." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) msgid "clarinetMusic" msgstr "musicaClarinete" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) msgid "trumpetMusic" msgstr "musicaTrompeta" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (comment) msgid "Key signature is often omitted for horns" msgstr "La armadura se suele omitir para las trompas" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) msgid "hornMusic" msgstr "musicaTrompa" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "percussionMusic" msgstr "musicaPercusion" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIMusic" msgstr "musicaContraltoI" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) msgid "altoIIMusic" msgstr "musicaContraltoII" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoILyrics" msgstr "letraContraltoI" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) msgid "altoIILyrics" msgstr "letraContraltoII" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoRHMusic" msgstr "musicaPianoMD" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "pianoLHMusic" msgstr "musicaPianoMI" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIMusic" msgstr "musicaViolinI" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violinIIMusic" msgstr "musicaViolinII" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "violaMusic" msgstr "musicaViola" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "shortInstrumentName, midiInstrument, etc." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:110 (comment) msgid "may be set here as well" msgstr "se pueden fijar aquí también" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "Declare that written Middle C in the music" msgstr "Declarar que el Do central escrito en la música" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "to follow sounds a concert B flat, for" msgstr "que sigue suena un Si bemol de concierto, para" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:118 (comment) msgid "output using sounded pitches such as MIDI." msgstr "la salida que utiliza alturas sonoras como el MIDI." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:120 (comment) msgid "Print music for a B-flat clarinet" msgstr "Imprimir la música para un clarinete en Si bemol" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:148 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:150 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "\\set Staff.autoBeaming = ##f % desactiva todo el barrado automático" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:153 (comment) msgid "applies to split up stems" msgstr "se aplica a las plicas divididas hacia arriba" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:153 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:155 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "\\autoBeamOff % se aplica a las plicas hacia arriba combinadas" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:158 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:160 (comment) msgid "applies to down stems" msgstr "se aplica a las plicas hacia abajo" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:23 (variable) msgid "stick" msgstr "baqueta" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:57 (comment) msgid "Permit line breaks within tuplets" msgstr "Permitir saltos de línea dentro de grupos especiales" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:59 (comment) msgid "Allow beams to be broken at line breaks" msgstr "Permitir romper barras en saltos de línea" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:66 (comment) msgid "Insert a manual line break within a tuplet" msgstr "Insertar salto de línea manual dentro de un grupo especial" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "pedal" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:19 (comment) msgid "L. v. Beethoven" msgstr "L. van Beethoven" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:20 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "Sonata para piano núm. 21 - Dem Grafen von Waldstein Gewidmet" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:21 (comment) msgid "chorale at measures 34 - 40+" msgstr "coral de los compases 34 a 40 y siguientes" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:30 (comment) msgid "RH Voice 1" msgstr "Voz 1 de la MD" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:58 (comment) msgid "(" msgstr "(" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:63 (comment) msgid ")" msgstr ")" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:67 (comment) msgid "RH Voice 2" msgstr "Voz 2 de la MD" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) msgid "tab" msgstr "tab" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" -msgstr "MMR - Silencio multicompás" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" -msgstr "Los silencios multicompás se establecen por omisión debajo de la cuarta línea line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" +msgstr "Los silencios multicompás se establecen por omisión debajo de la cuarta línea" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "Se pueden mover con un override" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" -msgstr "Un valor de cero es la posición predeterminada;" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" +msgstr "En dos voces, las voces impares van debajo de la línea superior" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" -msgstr "el truco siguiente mueve el silencio a la línea central" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" +msgstr "Las voces pares van debajo de la línea inferior" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" -msgstr "Los silencios multicompás de las voces de impares van bajo la línea superior" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" +msgstr "Los silencios multicompás en ambas voces permanecen separados" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" -msgstr "Los silencios multicompás de las voces pares están bajo la línea inferior" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" +msgstr "Separar los silencios multicompás en más de dos voces" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" -msgstr "Siguen estando separados incluso en compases vacíos" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" +msgstr "requiere una instrucción override" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" -msgstr "Así los juntamos incluso si hay dos voces" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" +msgstr "" +"El uso de compases comprimidos en varias voces requiere otra instrucción " +"override" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" +msgstr "en todas las voces para evitar que se imprima más de una instancia" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:54 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "Fijar llamada como letra de ensayo y ajustar su tamaño si es necesario" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:34 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "\\once \\override Score.RehearsalMark #'font-size = #3" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:40 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "Fijar llamada de coda como letra de ensayo y ajustar tamaño si es necesario" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Should Coda be on anew line?" msgstr "¿Debe ir la Coda sobre una línea nueva?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "Coda NO en línea nueva: usar \\nobreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "Coda en línea nueva: NO USAR \\nobreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) msgid "\\noBreak" msgstr "\\noBreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "Here begins the trickery!" msgstr "¡Aquí comienzan los trucos!" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:60 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "\\cadenzaOn suprime la cuenta de compases y \\stopStaff quita el pentagrama" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) msgid "Some examples of possible text-displays" msgstr "Algunos ejemplos de text-displays posibles" # fuzzy. FVD -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "text line-aligned" msgstr "texto line-aligned" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) msgid "==================" msgstr "==================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "Move text to the desired position" msgstr "Mover el texto a la posición deseada" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "| s1*0^\\markup { D.S. al Coda } }" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "text center-aligned" msgstr "texto center-aligned" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "====================" msgstr "====================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "text and symbols center-aligned" msgstr "texto y símbolos center-aligned" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "===============================" msgstr "===============================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" @@ -10029,39 +10373,39 @@ msgstr "" "Mover el texto a la posición deseada y ajustar el espacio para una " "alineación óptima" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:80 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:86 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "El aumento del contador de despliegue expande el espacio de staff-free" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) msgid "Resume bar count and show staff lines again" msgstr "Reanudar la cuenta de compases y mostrar el pentagrama de nuevo" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Should Coda be on new line?" msgstr "¿La Coda va en una línea nueva?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "Coda NO en nueva línea: NO USAR \\break" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:97 (comment) msgid "Coda on new line: use \\break" msgstr "Coda en nueva línea: usar \\break" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) msgid "Show up, you clef and key!" msgstr "¡Mostraos, clave y armadura!" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "Fijar el signo de coda como letra de enzayo y ajustar el tamaño y posición" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:106 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" @@ -10069,205 +10413,236 @@ msgstr "" "Poner el signo de coda encima de la clave dependiendo de la line-position de " "la coda" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "Coda NOT on new line, use this:" msgstr "Coda NO en nueva línea, hacer esto:" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:109 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:111 (comment) msgid "Coda on new line, use this:" msgstr "Coda en nueva línea, hacer esto:" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:117 (comment) msgid "The coda" msgstr "La coda" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly:31 (comment) +#. Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly:49 (comment) +msgid "due to issue 2362 the following line is commented" +msgstr "a causa del bug número 2362, la línea siguiente está comentada" + +#. Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly:32 (comment) +#. Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly:50 (comment) +msgid "\\mark \\\"Composed Feb 2007 - Feb 2008\\\"" +msgstr "\\mark \\\"Compuesto entre feb. de 2007 y feb. de 2008\\\"" + +#. Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly:33 (comment) +#. Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly:51 (comment) +msgid "and a shorter mark is used." +msgstr "y se usa una marca más corta." + +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:61 (comment) msgid "Permit first bar number to be printed" msgstr "Habilitar la impresión del número del primer compás" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "No poner números de compás al final de la línea, pero sí en otros lugares" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:54 (comment) msgid "Draw a box round the following bar number(s)" msgstr "Pintar una caja rodeando al siguiente(s) número de compás" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:59 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "Rodear con un círculo el siguiente(s) número de compás" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:59 (comment) msgid "Metronome marks below the staff" msgstr "Las marcas de metrónomo debajo del pentagrama" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:64 (comment) msgid "Rehearsal marks below the staff" msgstr "Letras de ensayo debajo del pentagrama" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "ClarineteBajo" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "Percusion" -#. Documentation/snippets/putting-lyrics-inside-the-staff.ly:21 (context id) +#. Documentation/snippets/putting-lyrics-inside-the-staff.ly:24 (context id) msgid "voc" msgstr "voc" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (variable) msgid "quoteTest" msgstr "pruebaDeCita" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:74 (comment) msgid "french horn" msgstr "trompa" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) +#. Documentation/snippets/quoting-another-voice.ly:80 (variable) msgid "quoteMe" msgstr "citaMe" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) +#. Documentation/snippets/quoting-another-voice.ly:85 (variable) msgid "original" msgstr "original" -#. Documentation/snippets/recorder-fingering-chart.ly:36 (comment) +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "cuadro de rangos para la flauta dulce contabaja paetzold" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "inicioMusicaAcciaccatura" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "finMusicaAcciaccatura" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" "Para usar el ajuste de forma global, quite el comentario de la líne " "siguiente:" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:86 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "\\override VerticalAxisGroup #'remove-first = ##t" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "To use the setting globally, comment this line," msgstr "Para usar el ajuste globalmente, haga un comentario de la línea siguiente:" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:96 (comment) msgid "uncomment the line in the \\layout block above" msgstr "quite el comentario de la línea del bloque \\layout de arriba" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/repeats-headword.ly:19 (comment) +msgid "Beethoven, Op. 57" +msgstr "Beethoven, Op. 57" + +#. Documentation/snippets/repeats-headword.ly:20 (comment) +msgid "Piano sonata 23 - Dem Grafen Franz von Brunswick Gewidmet" +msgstr "Sonata para piano núm. 23; dedicada a Franz von Brunswick" + +#. Documentation/snippets/repeats-headword.ly:21 (comment) +msgid "Movt II, Andante con moto" +msgstr "Mov. II, Andante con moto" + +#. Documentation/snippets/repeats-headword.ly:22 (comment) +msgid "Measures 9 - 16" +msgstr "Compases 9 a 16" + +#. Documentation/snippets/reverting-default-beam-endings.ly:55 (comment) msgid "Default beaming" msgstr "Barrado predeterminado" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:58 (comment) msgid "Set new values for beam endings" msgstr "establecer valores nuevos para finales de barra" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:30 (comment) msgid "Macro to print single slash" msgstr "Macro para imprimir una barra inclinada única" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:31 (variable) msgid "rs" msgstr "rs" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:38 (comment) msgid "Function to print a specified number of slashes" msgstr "Función para imprimir un número especificado de barras inclinadas" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:39 (variable) msgid "comp" msgstr "comp" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:19 (comment) msgid "Beethoven, Op. 81a" msgstr "Beethoven, Op. 81a" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:20 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "Sonata para piano núm. 26 - Das Lebewohl" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:21 (comment) msgid "Movt II - Abwesenheit" msgstr "Mov. II - Abwesenheit" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:22 (comment) msgid "Measures 31 - 34" msgstr "Compases 31 a 34" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:31 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "\\override SpacingSpanner #'strict-grace-spacing = ##t" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:58 (variable) msgid "sopranonotes" msgstr "notasSoprano" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) msgid "sopranowords" msgstr "letraSoprano" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (variable) msgid "altonotes" msgstr "notasAlto" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) msgid "altowords" msgstr "letraContralto" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:66 (variable) msgid "tenornotes" msgstr "notasTenor" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) msgid "tenorwords" msgstr "letraTenor" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:71 (variable) msgid "bassnotes" msgstr "notasBajo" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:75 (variable) msgid "basswords" msgstr "letraBajo" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:87 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:103 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:119 (comment) msgid "verse" msgstr "estrofa" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "sinPlica" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "sinCabezas" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "sinBarras" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "lineaTablatura" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" @@ -10275,73 +10650,75 @@ msgstr "" "Muestra una línea horizontal. La línea horizontal (que simula una divisoria) " "se simula con una línea de rejilla" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "disable the following line to see the the noteheads while writing the song" -msgstr "Deshabilite la línea siguiente para ver las cabezas mientras escribe la canción" +msgstr "" +"Deshabilite la línea siguiente para ver las cabezas mientras escribe la " +"canción" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "La barra entre las corcheas se usa para trazar la línea de cerrar" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "Cuán rápido escribir las líneas de cerrar:" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "1. escriba repetidamente 'c c c c c c c c |' en toda la canción" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "2. quite el comentario de la línea \\NoNoteHead" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "3. compile" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "4. Marque las posiciones en las que cambia el abrir o cerrar" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "In the score-picture click on the position the push- or pull-part starts" msgstr "" "En la imagen de la partitura pulse sobre la posición en que inician las " "partes de abrir o cerrar" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "(sobre la cabeza, el cursor cambia a una mano)." -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "El cursor sobre la fuente salta a esta posición." -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "a) Si en ese lugar empieza una parte de cerrar, cambie la 'c' por 'e['" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "b) Si en ese lugar empieza una parte de abrir, cambie la 'c' por una 's'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "5. Cambie al modo de sobreescritura de texto pulsando la tecla 'ins'." -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "6. Para las partes de abrir sobreescriba la 'c' con 's' " -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "7. Para cada parte de cerrar cambie la última 'c' por una 'e]' " -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "8. Pase de nuevo al modo de inserción" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" @@ -10349,20 +10726,20 @@ msgstr "" "9. Al final se verá como p.ej. (s s e[ c | c c c c c c c c | c c c c c c e] " "s s)" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "10. rehabilite la línea \\NoNoteHead" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "Melodía de acordeón en partitura de tablatura" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "1. Ponga debajo una copia de la melodía de piano" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" @@ -10370,7 +10747,7 @@ msgstr "" "2. Separe la melodía de piano en partes de abrir y de cerrar de acuerdo con " "la staffTabLine que ha preparado" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" @@ -10379,57 +10756,57 @@ msgstr "" "conserva intacta como referencia) y luego cambie la segunda línea usando el " "papel de transformación" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "o los macros 'conv2diaton push.bsh' y 'conv2diaton pull.bsh' " -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "Consejos:" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "- En la búsqueda y sustitución de jEdit marque la opción 'Keep Dialog'" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "AcordeonTabDosCSibM" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "abrir 1" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "8 8 8 |" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "cerrar 2" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "4 |" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "abrir 3" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "2 r8 }" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "TablaturaAcordeón" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "1. Haga una copia de la melodía de piano de arriba" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" @@ -10437,75 +10814,75 @@ msgstr "" "3. Para cada línea: duplique la línea. marque la primera como comentario (la " "conserva intacta como referencia) y después" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "cambie la segunda línea usando el papel de transformación" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "-" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "La línea vertical (que simula una divisoria) en" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "el duracionesPentagramaBajo es una línea de rejilla" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "4/4 - tact. Cuántos pulsos por compás" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "La línea siguiente se tiene que ajustar A M-E-N-U-D-O." -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "vozPentagrama" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "vozPentagrama" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "pentagramaAcordMelodia" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "Fijar las alteraciones (Vorzeichen) para cada nota," -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "no recordarlas para el resto del compás." -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "DuracionesBajo" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "DuracionesLetraBajoI" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "duracionesPentagramaBajo" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "bajoPentagrama" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "Esto no es un RhythmicStaff porque se debe poder aplicar letra." -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "x.y" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" @@ -10513,818 +10890,975 @@ msgstr "" "Muestra una línea horizontal. La línea vertical (que simula una divisoria) " "está simulada por una rejilla" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" "Busque por el término 'grid' en esta página para hallar todas las funciones " "relacionadas" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:38 (variable) msgid "notes" msgstr "notas" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:32 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "Igual que \\flageolet, pero más pequeño" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:42 (comment) msgid "The second fermata is ignored!" msgstr "¡El segundo calderón se ignora!" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:21 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "NR 1.5 Notas simultáneas" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:23 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "L. v. Beethoven, Op. 111" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "Piano sonata 32" msgstr "Sonata para piano núm. 32" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:25 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "Movto. II - Arietta - Adagio molto semplice e cantabile" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "measures 108 - 118" msgstr "compases 108 a 118" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:38 (variable) msgid "trillFlat" msgstr "trinoBemol" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:58 (comment) msgid "RH voice 1" msgstr "Voz MD 1" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:135 (comment) msgid "RH voice 2" msgstr "Voz MD 2" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:210 (comment) msgid "LH staff" msgstr "pentragrama MI" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:30 (variable) msgid "verseI" msgstr "estrofaI" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:35 (variable) msgid "verseII" msgstr "estrofaII" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "inserte aquí los acordes para chordnames y fretboards" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:45 (variable) msgid "staffMelody" msgstr "melodiaPentagrama" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:48 (comment) msgid "Type notes for melody here" msgstr "Teclee aquí las notas de la melodía" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:58 (context id) msgid "voiceMelody" msgstr "melodiaVoz" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:45 (variable) +msgid "slides" +msgstr "deslizamientos" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "title = \\\"Le Lac des Cygnes\\\"" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "subtitle = \\\"Danse Napolitaine\\\"" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "arranger = \\\"arr. Laurence Sardain\\\"" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "footer = \\\"Mutopia-2006/12/22-896\\\"" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "trompeta" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "pandereta" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "panderetaMidi" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "prima" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "superiorA" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "inferiorA" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stem-cross-staff-engraver.ly:30 (comment) +msgid "Values are close enough to ignore the difference" +msgstr "Los valores son lo bastante parecidos como para ignorar la diferencia" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:34 (comment) +msgid "Combine a list of extents" +msgstr "Combinar una lista de dimensiones" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:40 (comment) +msgid "Check if the stem is connectable to the root" +msgstr "Comprobar si la plica conecta con la raíz" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:53 (comment) +msgid "Connect stems if we have at least one stems connectable to the root" +msgstr "Conectar las plicas si tenemos al menos una plica que se puede conectar con la raíz" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:74 (comment) +msgid "Create a stem span as a child of the cross-staff stem (the root)" +msgstr "Crear una plica extensa como hija de la plica de pauta cruzada (la raíz)" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:83 (comment) +msgid "Set cross-staff property of the stem to this function to connect it to" +msgstr "Establecer la propiedad cross-staff de la plica a esta función para conectarla a" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:84 (comment) +msgid "other stems automatically" +msgstr "otras plicas automáticamente" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:88 (comment) +msgid "Check if automatic connecting of the stem was requested. Stems connected" +msgstr "Comprobar si se ha solicitado la conexión automática de la plica. Las plicas conectadas" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:89 (comment) +msgid "to cross-staff beams are cross-staff, but they should not be connected to" +msgstr "a las barras de pauta cruzada son de pauta cruzada, pero no deben estar conectadas a" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:90 (comment) +msgid "other stems just because of that." +msgstr "otras plicas sólo por este motivo." + +#. Documentation/snippets/stem-cross-staff-engraver.ly:94 (comment) +msgid "Create stem spans for cross-staff stems" +msgstr "Crear plicas extensas para las plicas de pauta cruzada" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:102 (comment) +msgid "Connect cross-staff stems to the stems above in the system" +msgstr "Conectar las plicas de pauta cruzada a las plicas del sistema que están por encima" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:115 (variable) +msgid "crossStaff" +msgstr "pautaCruzada" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:130 (comment) +msgid "Bar 1 - durations, beams, flags" +msgstr "Compás 1: duraciones, barras, corchetes" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:135 (comment) +msgid "Bar 2 - direction" +msgstr "Compás 2: dirección" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:140 (comment) +msgid "Bar 3 - multiple voice styles" +msgstr "Compás 3: estilos de voz diversos" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:145 (comment) +msgid "Bar 4 - grace notes" +msgstr "Compás 4: notas de adorno" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:150 (comment) +msgid "Bar 5 - cross-staff beams" +msgstr "Compás 5: barras de pauta cruzada" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:159 (context id) +msgid "staffone" +msgstr "pautaUno" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:164 (context id) +msgid "stafftwo" +msgstr "pautaDos" + +#. Documentation/snippets/stem-cross-staff-engraver.ly:169 (context id) +msgid "staffthree" +msgstr "pautaTres" + +#. Documentation/snippets/stemlets.ly:40 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "Nota: use Score.Stem para establecerlo para la partitura entera." -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "extensorNumeroCuerda" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:67 (variable) msgid "violinOne" msgstr "violinUno" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:76 (variable) msgid "violinTwo" msgstr "violinDos" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:85 (variable) msgid "viola" msgstr "viola" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "piece.ly" msgstr "pieza.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:130 (comment) msgid "(This is the global definitions file)" msgstr "(Este es el archivo de definiciones globales)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:137 (variable) msgid "Violinone" msgstr "violinuno" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (comment) msgid "*********************************" msgstr "*********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:143 (variable) msgid "Violintwo" msgstr "ViolinDos" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:149 (variable) msgid "Viola" msgstr "Viola" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (variable) msgid "Cello" msgstr "Cello" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:162 (comment) msgid "**********************************" msgstr "**********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:173 (comment) msgid "These are the other files you need to save on your computer" msgstr "Estos son los tros archivos que debe guardar en su sistema" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "score.ly" msgstr "partitura.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:176 (comment) msgid "(This is the main file)" msgstr "(Este es el archivo principal)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" -msgstr "" -"\\include \\\"piece.ly\\\" %%% quite la marca de comentario de " -"esta línea si está usando un archivo aparte" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "Quite la marca de comentario de este bloque si está usando archivos aparte" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:179 (comment) +msgid "\\include \\\"piece.ly\\\"" +msgstr "\\include \\\"pieza.ly\\\"" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) msgid "{ Uncomment this block when using separate files" msgstr "{ Quite la marca de comentario de este bloque si está usando archivos aparte" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "vn1.ly" msgstr "vn1.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:191 (comment) msgid "(This is the Violin 1 part file)" msgstr "(Este es el archivo de particella del violín 1)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "vn2.ly" msgstr "vn2.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:201 (comment) msgid "(This is the Violin 2 part file)" msgstr "(Este es el archivo de particella del violín 2)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "vla.ly" msgstr "vla.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:211 (comment) msgid "(This is the Viola part file)" msgstr "(Este es el archivo de particella de la viola)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "vlc.ly" msgstr "vlc.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:221 (comment) msgid "(This is the Cello part file)" msgstr "(Este es el archivo de particella del cello)" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:79 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "Fijar la longitud del subgrupo de barras a una corchea" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:84 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "Fijar la longitud del subgrupo de barras a una semicorchea" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:28 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "ignorar" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:21 (comment) msgid "NR 1.8 Text" msgstr "NR 1.8 Texto" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:23 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "L. v. Beethoven, Op. 110" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "Piano sonata 31" msgstr "Sonata para piano núm. 31" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:25 (comment) msgid "measures 1 - 7" msgstr "compases 1 a 7" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:37 (comment) msgid "RH staff" msgstr "pentagrama MD" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" "Instrucción nueva para añadir una caja con tres lados apuntando al norte, " "oeste y sur" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "Basado en la instrucción box-stencil definida en scm/stencil.scm" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:23 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "Observe que utilizamos \\\";\\\" para comentar una línea en Scheme" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" "La instrucción de marcado correspondiente, basada en la instrucción \\box " "definida" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:38 (comment) msgid "in scm/define-markup-commands.scm" msgstr "en scm/define-markup-commands.scm" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:50 (comment) msgid "Test it:" msgstr "Probarla:" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:60 (comment) msgid "Change the style permanently" msgstr "Cambiar el estilo permanentemente" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:66 (comment) msgid "Revert to default style:" msgstr "Retornar al estilo predeterminado:" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:70 (comment) msgid "single-digit style only for the next time signature" msgstr "estilo de un solo dígito para el siguiente compás únicamente" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:40 (comment) msgid "make the staff lines invisible on staves" msgstr "hacer invisibles las líneas de los pentagramas" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:129 (variable) msgid "incipitDiscantus" msgstr "incipitDiscantus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:154 (variable) msgid "incipitAltus" msgstr "incipitAltus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:180 (variable) msgid "incipitTenor" msgstr "incipitTenor" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:208 (variable) msgid "incipitBassus" msgstr "incipitBassus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (comment) msgid "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" "StaffGroup se usa en lugar de ChoirStaff para tener líneas divisorias entre " "los sistemas" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" "Mantener la letra del bajo fuera del grupo de pentagrama para evitar las " "barras de compás" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:267 (comment) msgid "between the lyrics." msgstr "entre las sílabas del texto" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:276 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" "las tres instrucciones siguientes hacen que la letra no choque con las " "divisorias" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "los saltos de línea también en aquellas barras donde" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" +"se superpone una nota con el siguiente compás. La instrucción es un " +"comentario en esta" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:194 (variable) msgid "naturalizeMusic" msgstr "naturalizarMusica" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) msgid "The default treble clef" msgstr "Clave de sol predeterminada" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:193 (comment) msgid "The standard bass clef" msgstr "Clave de Fa estándar" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:198 (comment) msgid "The baritone clef" msgstr "Clave de barítono (do en quinta)" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:203 (comment) msgid "The standard choral tenor clef" msgstr "Clave estándar de tenor coral" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:209 (comment) msgid "A non-standard clef" msgstr "Clave no estándar" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:215 (comment) msgid "The following clef changes do not preserve" msgstr "Los siguientes cambios de clave no preservan" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:216 (comment) msgid "the normal relationship between notes and clefs:" msgstr "la relación normal entre notas y claves:" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:231 (comment) msgid "Return to the normal clef:" msgstr "Volver a la clave normal:" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) -msgid "Abreviations" +#. Documentation/snippets/unfretted-headword.ly:19 (comment) +msgid "#!lilypond lcp-extract.ly -*- coding: utf-8; -*-" +msgstr "#!lilypond lcp-extract.ly -*- coding: utf-8; -*-" + +#. Documentation/snippets/unfretted-headword.ly:22 (comment) +msgid "les-cinq-pieds:" +msgstr "les-cinq-pieds:" + +#. Documentation/snippets/unfretted-headword.ly:23 (comment) +msgid "extract for the lilypond documentaton project" +msgstr "extracto para el Proyecto de Documentación de LilyPond" + +#. Documentation/snippets/unfretted-headword.ly:26 (comment) +msgid "Title:\tLes cinq pieds" +msgstr "Título:\tLes cinq pieds" + +#. Documentation/snippets/unfretted-headword.ly:27 (comment) +msgid "Composer: \tDavid Séverin" +msgstr "Autor: \tDavid Séverin" + +#. Documentation/snippets/unfretted-headword.ly:28 (comment) +msgid "Date:\tJuillet 2007" +msgstr "Fecha:\tJulio 2007" + +#. Documentation/snippets/unfretted-headword.ly:29 (comment) +msgid "Instrument:\tViolon Solo" +msgstr "Instrumento:\tViolín Solo" + +#. Documentation/snippets/unfretted-headword.ly:30 (comment) +msgid "Dedication:\tA mon épouse Lívia De Souza Vidal" +msgstr "Dedicatoria:\tA mon épouse Lívia De Souza Vidal" + +#. Documentation/snippets/unfretted-headword.ly:31 (comment) +msgid "Additional:\tavec l'aide de Krzysztof Wagenaar" +msgstr "Adicional:\tavec l'aide de Krzysztof Wagenaar" + +#. Documentation/snippets/unfretted-headword.ly:33 (comment) +msgid "Statement:" +msgstr "Declaración:" + +#. Documentation/snippets/unfretted-headword.ly:35 (comment) +msgid "Here by, I, the composer, agree that this extract of my composition" +msgstr "Por la presente, yo, el autor, autorizo a que este extracto de mi obra" + +#. Documentation/snippets/unfretted-headword.ly:36 (comment) +msgid "be in the public domain and can be part of, used and presented in" +msgstr "esté en el Dominio Público y pueda formar parte, usarse y presentarse dentro del" + +#. Documentation/snippets/unfretted-headword.ly:37 (comment) +msgid "the LilyPond Documention Project." +msgstr "Proyecto de Documentación de LilyPond." + +#. Documentation/snippets/unfretted-headword.ly:39 (comment) +msgid "Statement Date: Octber the 9th, 2008" +msgstr "Fecha de la declaración: 9 de octubre de 2008" + +#. Documentation/snippets/unfretted-headword.ly:43 (comment) +msgid "Abbreviations" msgstr "Abreviaturas" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "db" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "dub" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "dubetc" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "ub" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "udb" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "udbetc" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "fermaTa" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "accel" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "ritar" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "Cuerdas" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "svib" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "pvib" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "mvib" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "sulp" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "norm" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "quatre" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "Saltar notas" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "shift" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "shifta" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "shiftb" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "Regulador" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "aniente = \\\"a niente\\\"" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "aniente" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "tupletbp" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "Corchete [Cabeza - Plica]" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "sinCorchete" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "Funciones" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "Instrumentos" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "SoloViolin" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "Compás 1" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "Compás 2" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "Compás 3" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "Compás 4" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "Compás 5" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "Compás 6" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "\\featherDurations #(ly:make-moment 2 3)" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "Compás 7" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "Compás 8" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "Compás 9" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "Partitura" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) msgid "testnotes" msgstr "notasPrueba" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:110 (comment) msgid "display grobs for each note head:" msgstr "imprimir grobs para todas las cabezas:" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:111 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "\\override NoteHead #'before-line-breaking = #display-grobs" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) msgid "or just for one:" msgstr "o sólo para una:" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:32 (variable) msgid "parallelogram" msgstr "paralelogramo" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "myNoteHeads" msgstr "misCabezas" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:48 (variable) msgid "normalNoteHeads" msgstr "cabezasNormales" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "" "final del bloque literal. Este comentario es un truco para evitar que " "texinfo.tex" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "proteste respecto a los subconjuntos de UTF-8 no europeos" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" "Edite este archivo con un editor preparado para Unicode, como GVIM, GEDIT o " "Emacs" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "Fuente cirílica" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "bulgaro" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "hebreo" # fuzzy. FVD -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "japones" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "\\\"una canción legal para ti\\\"" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "portugues" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:23 (variable) msgid "upline" msgstr "lineaArriba" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "llaveizquierda" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "llavederecha" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "bajarLetra" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "elevarLetra" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "saltoCuatro" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "letraA" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "letraB" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "letraC" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "letraD" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "m" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:79 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:75 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) msgid "sopWords" msgstr "letraSoprano" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:118 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) msgid "This is needed for lyrics above a staff" msgstr "Necesario para la letra por encima del pentagrama" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we could remove the line about this with the line below, since" msgstr "" "podríamos quitar la línea anterior y sustituirla por la siguiente, pues " "queremos" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "" "que la letra de la contralto esté debajo de la voz de contralto de todas " "formas." -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:112 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "again, we could replace the line above this with the line below." msgstr "de nuevo podríamos sustituir la línea anterior con la línea siguiente." -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:124 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:78 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:91 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:122 (comment) msgid "refrain" msgstr "estribillo" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:84 (variable) msgid "SoloNotes" msgstr "notasSolista" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:95 (variable) msgid "SoloLyrics" msgstr "letraSolista" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:100 (variable) msgid "SopranoNotes" msgstr "notasSoprano" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:111 (variable) msgid "SopranoLyrics" msgstr "letraSoprano" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:116 (variable) msgid "BassNotes" msgstr "notasBajo" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (variable) msgid "BassLyrics" msgstr "letraBajo" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (context id) msgid "SoloVoice" msgstr "vozSolista" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:138 (context id) msgid "SopranoVoice" msgstr "vozSoprano" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:141 (context id) msgid "BassVoice" msgstr "vozBajo" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:148 (comment) msgid "these lines prevent empty staves from being printed" msgstr "estas líneas evitan que se impriman los pentagramas vacíos" -#. Documentation/snippets/vocal-ensemble-template.ly:107 (comment) -#. Documentation/snippets/vocal-ensemble-template.ly:122 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) msgid "this is needed for lyrics above a staff" msgstr "es necesario para la letra por encima del pentagrama" -#. Documentation/snippets/vocal-headword.ly:29 (comment) +#. Documentation/snippets/vocal-headword.ly:27 (comment) msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" msgstr "L. van Beethoven. Sinfonía Núm. 9 en Re menor, op.125; Finale" -#. Documentation/snippets/vocal-headword.ly:30 (comment) +#. Documentation/snippets/vocal-headword.ly:28 (comment) msgid "mm. 216 -- 236" msgstr "cc. 216 a 236" -#. Documentation/snippets/vocal-headword.ly:31 (comment) +#. Documentation/snippets/vocal-headword.ly:29 (comment) msgid "Text: F. von Schiller" msgstr "Texto: F. von Schiller" -#. Documentation/snippets/vocal-headword.ly:36 (comment) +#. Documentation/snippets/vocal-headword.ly:34 (comment) msgid "make first bar number be shown" msgstr "habilitar la impresión del número del primer compás" -#. Documentation/snippets/vocal-headword.ly:38 (comment) +#. Documentation/snippets/vocal-headword.ly:36 (comment) msgid "\\tempo \\\"Presto\\\"" msgstr "\\tempo \\\"Presto\\\"" -#. Documentation/snippets/vocal-headword.ly:39 (comment) +#. Documentation/snippets/vocal-headword.ly:37 (comment) msgid "\\compressFullBarRests R2.*8" msgstr "\\compressFullBarRests R2.*8" -#. Documentation/snippets/vocal-headword.ly:61 (comment) +#. Documentation/snippets/vocal-headword.ly:59 (comment) msgid "put fermata closer to staff" msgstr "poner calderón más cerca del pentagrama" -#. Documentation/snippets/vocal-headword.ly:65 (comment) +#. Documentation/snippets/vocal-headword.ly:63 (comment) msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" msgstr "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +#. Documentation/snippets/vocal-headword.ly:64 (comment) #. Documentation/snippets/vocal-headword.ly:66 (comment) -#. Documentation/snippets/vocal-headword.ly:68 (comment) msgid "R1" msgstr "R1" -#. Documentation/snippets/vocal-headword.ly:67 (comment) +#. Documentation/snippets/vocal-headword.ly:65 (comment) msgid "e''4^\\f d r2" msgstr "e''4^\\f d r2" -#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:67 (comment) msgid "e4( ^\\f d2) a8([ g)]" msgstr "e4( ^\\f d2) a8([ g)]" -#. Documentation/snippets/vocal-headword.ly:75 (comment) +#. Documentation/snippets/vocal-headword.ly:73 (comment) msgid "Freu -- de, Freu -- de,__" msgstr "Freu -- de, Freu -- de,__" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/volta-multi-staff.ly:21 (variable) msgid "voltaMusic" msgstr "musicaRepeticion" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:29 (variable) msgid "voltaAdLib" msgstr "voltaAdLib" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:19 (comment) +msgid "NR 2.whatever Wind" +msgstr "Núm. 2. viento" + +#. Documentation/snippets/wind-headword.ly:20 (comment) msgid "Tchaikovsky" msgstr "Tchaikovsky" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:21 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "Nutcracker Suite, VII Dance of the Merlitons" diff --git a/Documentation/po/fr.po b/Documentation/po/fr.po index 917528951e..5553c33154 100644 --- a/Documentation/po/fr.po +++ b/Documentation/po/fr.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the lilypond package. # # John Mandereau , 2006-2008, -# Jean-Charles Malahieude , 2006-2011. +# Jean-Charles Malahieude , 2006-2012. msgid "" msgstr "" "Project-Id-Version: fr\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" -"PO-Revision-Date: 2011-03-01 19:01+0100\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" +"PO-Revision-Date: 2012-04-29 15:56+0200\n" "Last-Translator: Jean-Charles Malahieude \n" "Language-Team: Français \n" -"Language: \n" +"Language: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,17 +27,9 @@ msgstr "" #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." -msgstr "" -"Vos suggestions à propos de la " -"documentation sont les bienvenues ;\n" -"signalez tout bogue en français à la liste\n" -"francophone des utilisateurs ou en anglais à la liste des\n" -"utilisateurs." +"We welcome your aid; please help us by " +"reporting errors to our bug list." +msgstr "Vos suggestions sont les bienvenues ; signalez tout bogue en français à la liste francophone des utilisateurs ou en anglais à la liste des utilisateurs." #: postprocess_html.py:69 #, python-format @@ -46,14 +38,14 @@ msgstr "Autres langues : %s." #: postprocess_html.py:70 #, python-format -msgid "About automatic language selection." -msgstr "À propos de la sélection automatique de la langue." +msgid "About automatic language selection." +msgstr "À propos de la sélection automatique de la langue." -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "branche stable" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "branche de développement" @@ -137,13 +129,10 @@ msgid "post-GDP" msgstr "post-GDP" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" -msgstr "tetescolorisees" - -#. Documentation/changes.tely:184 (variable) -msgid "noclef" -msgstr "sansclef" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" +msgstr "dyn" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi @@ -151,8 +140,8 @@ msgid "Top" msgstr "Accueil" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" -msgstr "Modifications depuis la version 2.12" +msgid "New features in 2.16 since 2.14" +msgstr "Modifications depuis la version 2.14" #. @top in Documentation/macros.itexi msgid "LilyPond --- \\\\TITLE\\\\" @@ -293,15 +282,15 @@ msgid "Long literature list" msgstr "Bibliographie développée" #. @subheading in Documentation/essay/literature.itely -msgid "Colorado" -msgstr "Colorado" +msgid "University of Colorado Engraving music bibliography" +msgstr "Université du Colorado" #. @subheading in Documentation/essay/literature.itely -msgid "Computer notation" +msgid "Computer notation bibliography" msgstr "Notation informatisée" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" +msgid "Engraving bibliography" msgstr "Gravure" #. @node in Documentation/fdl.itexi @@ -323,27 +312,23 @@ msgstr "Licence GNU de documentation libre" msgid "ADDENDUM: How to use this License for your documents" msgstr "SUPPLÉMENT : comment utiliser cette licence pour vos documents" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "traLaLa" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "leurre pour prise en charge par l'analyseur lookahead" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) msgid "padText" msgstr "decallageTexte" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "tempoDecale" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "motif" @@ -360,7 +345,7 @@ msgstr "Introduction à Scheme" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Scheme sandbox" -msgstr "Scheme : le bac à sable" +msgstr "Le bac à sable de Scheme" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely @@ -370,12 +355,12 @@ msgstr "Scheme et les variables" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Scheme simple data types" -msgstr "Types de données simples" +msgstr "Types de données Scheme simples" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Scheme compound data types" -msgstr "Types de données composites" +msgstr "Types de données Scheme composites" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Pairs" @@ -405,7 +390,7 @@ msgstr "Scheme et les procédures" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Defining procedures" -msgstr "Définition d'une procédure" +msgstr "Définition de procédures" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Predicates" @@ -436,7 +421,7 @@ msgstr "Scheme et LilyPond" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "LilyPond Scheme syntax" -msgstr "Syntaxe Scheme dans du code LilyPond" +msgstr "Syntaxe Scheme dans LilyPond" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely @@ -446,7 +431,7 @@ msgstr "Variables LilyPond" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Input variables and Scheme" -msgstr "Variables d'entrée et Scheme" +msgstr "Saisie de variables et Scheme" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely @@ -456,23 +441,23 @@ msgstr "Propriétés des objets" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "LilyPond compound variables" -msgstr "LilyPond et les variables composites" +msgstr "Variables LilyPond composites" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Offsets" -msgstr "" +msgstr "Décalages (@emph{Offsets})" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Extents" -msgstr "" +msgstr "Étendues (@emph{extents})" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Property alists" -msgstr "" +msgstr "Propriétés en @emph{alists}" #. @subheading in Documentation/extending/scheme-tutorial.itely msgid "Alist chains" -msgstr "" +msgstr "Chaînes d'@emph{alist}" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely @@ -492,40 +477,67 @@ msgstr "Affichage d'expressions musicales" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Music properties" -msgstr "Propriétés de la musique" +msgstr "Propriétés musicales" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Doubling a note with slurs (example)" -msgstr "Exemple : redoubler une note avec liaison" +msgstr "Doubler d'une note avec liaison (exemple)" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Adding articulation to notes (example)" -msgstr "Exemple : ajouter une articulation à plusieurs notes" +msgstr "Ajout d'articulation à des notes (exemple)" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "LigatureManuelle" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "AltOui" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "AltNon" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "avecAlt" #. @node in Documentation/extending/programming-interface.itely #. @chapter in Documentation/extending/programming-interface.itely msgid "Interfaces for programmers" -msgstr "Interfaces pour les programmeurs" +msgstr "Interfaces pour programmeurs" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Lilypond code blocks" +msgstr "Blocs de code lilyPond" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "Fonctions Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "Définition de fonctions Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "Utilisation de fonctions Scheme" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Void scheme functions" +msgstr "Fonctions Scheme fantômes" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -534,8 +546,13 @@ msgstr "Fonctions musicales" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" -msgstr "Syntaxe des fonctions musicales" +msgid "Music function definitions" +msgstr "Définition de fonctions musicales" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function usage" +msgstr "Utilisation de fonctions musicales" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely @@ -559,53 +576,58 @@ msgstr "Fonctions dépourvues d'argument" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" -msgstr "Fonctions fantômes" +msgid "Void music functions" +msgstr "Fonctions musicales fantômes" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Event functions" +msgstr "Fonctions événementielles" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Markup functions" -msgstr "Fonctions « Markup »" +msgstr "Fonctions pour @emph{markups}" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely msgid "Markup construction in Scheme" -msgstr "Construction Scheme d'un marqueur" +msgstr "Construction d'un @emph{markup} en Scheme" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely msgid "How markups work internally" -msgstr "Fonctionnement interne des marqueurs" +msgstr "Fonctionnement interne des @emph{markups}" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely msgid "New markup command definition" -msgstr "Définition d'une nouvelle commande de marqueur" +msgstr "Définition d'une nouvelle commande de @emph{markup}" #. @node in Documentation/extending/programming-interface.itely #. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely msgid "Markup command definition syntax" -msgstr "Syntaxe de définition d'une commande de marqueur" +msgstr "Syntaxe d'une commande @emph{markup}" #. @node in Documentation/extending/programming-interface.itely #. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely msgid "On properties" -msgstr "Les propriétés « On »" +msgstr "Attribution de propriétés" #. @node in Documentation/extending/programming-interface.itely #. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely msgid "A complete example" -msgstr "Exemple exhaustif" +msgstr "Exemple commenté" #. @node in Documentation/extending/programming-interface.itely #. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely msgid "Adapting builtin commands" -msgstr "Adaptation des commandes préétablies" +msgstr "Adaptation d'une commande incorporée" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely msgid "New markup list command definition" -msgstr "Définition d'une nouvelle commande de liste de marqueurs" +msgstr "Définition d'une nouvelle commande de liste de @emph{markups}" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -625,12 +647,12 @@ msgstr "Application d'une fonction à tous les objets de mise en forme" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Callback functions" -msgstr "Fonctions « callback »" +msgstr "Fonctions de rappel" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Inline Scheme code" -msgstr "Code Scheme au sein d'un fichier LilyPond" +msgstr "Code Scheme intégré" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -640,7 +662,7 @@ msgstr "Retouches complexes" #. @node in Documentation/extending/programming-interface.itely #. @chapter in Documentation/extending/programming-interface.itely msgid "LilyPond Scheme interfaces" -msgstr "Interfaces entre LilyPond et Scheme" +msgstr "Interfaces LilyPond Scheme" #. Documentation/learning/tutorial.itely:210 (comment) msgid "set the starting point to middle C" @@ -691,15 +713,19 @@ msgstr "Saisie de la musique" #. @subheading in Documentation/learning/tutorial.itely msgid "Producing output" -msgstr "Génération de la sortie" +msgstr "Production de la partition" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "MacOS X" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "Windows" @@ -738,8 +764,8 @@ msgstr "intervalle" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "gamme" @@ -764,7 +790,7 @@ msgstr "altération" #. @subheading in Documentation/learning/tutorial.itely msgid "Durations (rhythms)" -msgstr "Durées (rythme)" +msgstr "Durées et rythme" #. @rglos in Documentation/learning/tutorial.itely #. @rglos in Documentation/learning/common-notation.itely @@ -851,7 +877,7 @@ msgstr "clef" #. @subheading in Documentation/learning/tutorial.itely msgid "All together" -msgstr "" +msgstr "Tout ensemble" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely @@ -893,37 +919,37 @@ msgstr "Exemples cliquables" msgid "Overview of manuals" msgstr "Vue d'ensemble des manuels" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) msgid "violin" msgstr "violon" -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "cello" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) msgid "tripletA" msgstr "trioletA" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) msgid "barA" msgstr "mesureA" # utiliser peut-être le terme anglais, surtout # s'il est massivement utilisé dans les ly #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "toto" #. @node in Documentation/learning/common-notation.itely #. @chapter in Documentation/learning/common-notation.itely msgid "Common notation" -msgstr "Bases de notation" +msgstr "Bases de notation musicale" #. @node in Documentation/learning/common-notation.itely #. @section in Documentation/learning/common-notation.itely @@ -933,7 +959,7 @@ msgstr "Notation sur une seule portée" #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely msgid "Bar checks" -msgstr "Vérifications de mesure" +msgstr "Contrôle de mesure" #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely @@ -1084,7 +1110,6 @@ msgstr "Nuances" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) msgid "dynamics" msgstr "nuances" @@ -1126,7 +1151,7 @@ msgid "anacrusis" msgstr "anacrouse" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "Nolets" @@ -1306,9 +1331,9 @@ msgstr "Après le tutoriel" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "chanteur" @@ -1321,621 +1346,627 @@ msgstr "vocal" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "piano" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "superieur" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "inferieur" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "melodie" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) msgid "text" msgstr "texte" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "principal" -#. Documentation/learning/fundamental.itely:629 (comment) +#. Documentation/learning/fundamental.itely:627 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "Voix \\\"1\\\" Voix \\\"2\\\"" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "Voix \\\"1\\\" Voix \\\"2\\\"" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) msgid "Voice \\\"1\\\"" msgstr "Voix \\\"1\\\"" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) msgid "Voice \\\"2\\\"" msgstr "Voix \\\"2\\\"" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) msgid "Main voice" msgstr "Voix principale" -#. Documentation/learning/fundamental.itely:684 (comment) +#. Documentation/learning/fundamental.itely:682 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "Voix \\\"1\\\" Voix \\\"2\\\" Voix \\\"3\\\"" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) msgid "Bar 1" msgstr "Mesure 1" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) msgid "Bar 2" msgstr "Mesure 2" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) msgid "Voice 1 continues" msgstr "Suite de la voix 1" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) msgid "Voice 2 continues" msgstr "Suite de la voix 2" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) msgid "Voice one" msgstr "Voix un" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) msgid "Voice two" msgstr "Voix deux" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) msgid "Omit Voice three" msgstr "Pas de voix trois" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) msgid "Voice four" msgstr "Voix quatre" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "Comportement par défaut ou après \\oneVoice" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) msgid "The following notes are monophonic" msgstr "Les notes qui suivent sont monophoniques" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) msgid "Start simultaneous section of three voices" msgstr "Début d'une section de trois voix simultanées" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) msgid "Continue the main voice in parallel" msgstr "Poursuite de la voix principale en parallèle" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) msgid "Initiate second voice" msgstr "Initialisation de la seconde voix" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) msgid "Set stems, etc., down" msgstr "Hampes et autres attributs iront vers le bas" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) msgid "Initiate third voice" msgstr "Initialisation de la troisième voix" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) msgid "Set stems, etc, up" msgstr "Hampes et autres attributs iront vers le haut" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) msgid "Initiate first voice" msgstr "Initialisation de la première voix" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) msgid "Set stems, etc, down" msgstr "Hampes et autres attributs iront vers le bas" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "un" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "global" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) msgid "SopOneMusic" msgstr "SopUnMusique" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) msgid "SopOneLyrics" msgstr "SopUnParoles" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) msgid "SopTwoMusic" msgstr "SopDeuxMusique" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) msgid "SopTwoLyrics" msgstr "SopDeuxParoles" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) msgid "SopOne" msgstr "SopUn" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) msgid "SopTwo" msgstr "SopDeux" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) msgid "keyTime" msgstr "armureMetrique" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) msgid "SopMusic" msgstr "SopMusique" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "AltoMusique" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "TenorMusique" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "BasseMusique" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) msgid "VerseOne" msgstr "CoupletUn" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) msgid "VerseTwo" msgstr "CoupletDeux" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) msgid "VerseThree" msgstr "CoupletTrois" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) msgid "VerseFour" msgstr "CoupletQuatre" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) msgid "Sop" msgstr "Sop" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "Alto" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "Tenor" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "Basse" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) msgid "start of single compound music expression" msgstr "début de l'unique expression musicale composée" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) msgid "start of simultaneous staves section" msgstr "début d'une section de portées simultanées" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) msgid "create RH staff" msgstr "création de la portée MD" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) msgid "create voice for RH notes" msgstr "création d'une voix pour les notes de MD" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) msgid "start of RH notes" msgstr "début des notes de MD" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) msgid "end of RH notes" msgstr "fin des notes de MD" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) msgid "end of RH voice" msgstr "fin de la voix MD" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) msgid "end of RH staff" msgstr "fin de la portée MD" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "création de la portée MG ; nécessite deux voix simultanées" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) msgid "create LH voice one" msgstr "création de la voix un de MG" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) msgid "start of LH voice one notes" msgstr "début des notes de la voix un de MG" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) msgid "end of LH voice one notes" msgstr "fin des notes de la voix un de MG" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) msgid "end of LH voice one" msgstr "fin de la voix un de MG" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) msgid "create LH voice two" msgstr "création de la voix deux de MG" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) msgid "start of LH voice two notes" msgstr "début des notes de la voix deux de MG" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) msgid "end of LH voice two notes" msgstr "fin des notes de la voix deux de MG" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) msgid "end of LH voice two" msgstr "fin de la voix deux de MG" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) msgid "end of LH staff" msgstr "fin de la portée MG" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) msgid "end of simultaneous staves section" msgstr "fin de la section de portées simultanées" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) msgid "end of single compound music expression" msgstr "fin de l'unique expression musicale composée" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) msgid "Wrong!" msgstr "Mauvais !" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) msgid "make note heads smaller" msgstr "pour obtenir des têtes de note plus petites" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) msgid "make note heads larger" msgstr "pour obtenir des têtes de note plus grosses" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) msgid "return to default size" msgstr "retour à la taille par défaut" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "sopranoMusique" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "sopranoParoles" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "violoncelleMusique" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) msgid "sopranoWords" msgstr "sopranoParoles" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "altoMusique" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "altoParoles" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "tenorMusique" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "tenorParoles" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "basseMusique" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "basseParoles" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "combinaison en parallèle du ChoirStaff et du PianoStaff" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "soprani" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "alti" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "tenors" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "basses" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) msgid "end ChoirStaff" msgstr "fin du ChoirStaff (système pour chœur)" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) msgid "ManualOneVoiceOneMusic" msgstr "MusiqueClavierUnVoixUn" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "MusiqueclavierUnVoixDeux" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) msgid "ManualTwoMusic" msgstr "MusiqueClavierDeux" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) msgid "PedalOrganMusic" msgstr "MusiquePedalierOrgue" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" -msgstr "système pianistique et portée de pédalier simultanés" +msgstr "système pianistique et portée de pédalier en simultané" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) msgid "ManualOne" msgstr "ClavierUn" -#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/learning/fundamental.itely:2926 (comment) msgid "set key and time signature" msgstr "définition de l'armure et de la métrique" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) msgid "end ManualOne Staff context" msgstr "fin du contexte de portée ClavierUn" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) msgid "ManualTwo" msgstr "ClavierDeux" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) msgid "end ManualTwo Staff context" msgstr "fin du contexte de portée ClavierDeux" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) msgid "end PianoStaff context" msgstr "fin du contexte PianoStaff" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) msgid "PedalOrgan" msgstr "PedalierOrgue" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) msgid "end PedalOrgan Staff context" msgstr "fin du contexte de portée PedalierOrgue" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) msgid "end Score context" msgstr "fin du contexte Score" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) msgid "hornNotes" msgstr "corNotes" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) msgid "fragmentA" msgstr "fragmentA" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) msgid "fragmentB" msgstr "fragmentB" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) msgid "dolce" msgstr "dolce" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) msgid "fthenp" msgstr "fpuisp" @@ -2086,266 +2117,271 @@ msgstr "Économie de saisie grâce aux identificateurs et fonctions" msgid "Scores and parts" msgstr "Conducteurs et parties" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "L'épaisseur de toutes les liaisons à venir passe de 1,2 à 5,0" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) msgid "Increase thickness of immediately following slur only" msgstr "Épaississement de la prochaine liaison seulement" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "Retour à l'épaisseur par défaut de 1,2 pour les prochaines liaisons" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) msgid "Don't print clefs in this staff" msgstr "pas de clef pour cette portée" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) msgid "Don't print time signatures in this staff" msgstr "pas de métrique pour cette portée" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) msgid "Reduce all font sizes by ~24%" msgstr "Réduction d'environ 24 % de toutes les tailles de fonte" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) msgid "Reduce stem length and line spacing to match" msgstr "" "Réduction de la taille des hampes et de l'interligne pour ne pas déborder" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) msgid "Set details for later Text Spanner" msgstr "Réglage des détails du texte avec extension" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) msgid "Place dynamics above staff" msgstr "Positionnement des nuances au-dessus de la portée" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) msgid "Start Ottava Bracket" msgstr "Début du crochet d'octaviation" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) msgid "Add Dynamic Text and hairpin" msgstr "Ajout d'une nuance textuelle au soufflet" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) msgid "Add Text Script" msgstr "Ajout d'un commentaire textuel" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "Ajout d'une nuance textuelle et terminaison du soufflet" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) msgid "Stop Ottava Bracket" msgstr "Fin du crochet d'octaviation" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "Positionnement du crochet d'octaviation sous le texte avec extension" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) msgid "Add Dynamic Text" msgstr "Ajout d'une nuance textuelle" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) msgid "Add Dynamic Line Spanner" msgstr "Ajout d'une ligne d'extension pour la nuance" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) msgid "Cause notes to space out to accommodate text" msgstr "Force les notes à s'espacer selon le texte" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) msgid "This markup is short enough to fit without collision" msgstr "Ce morceau de texte est assez court pour ne pas risquer de collision" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "Celui-ci est trop long pour tenir, il est déplacé vers le haut" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) msgid "Turn off collision avoidance" msgstr "Désactivation du processus d'évitement de collision" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) msgid "and turn on textLengthOn" msgstr "activation de textLengthOn" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) msgid "Spaces at end are honored" msgstr "Les espaces de la fin sont pris en compte" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) msgid "Extend width by 1 staff space" msgstr "Élargissement d'un espace" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) msgid "This will not work, see below" msgstr "La commande suivante est sans résultat ; voir plus loin." -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) msgid "This works" msgstr "Celle-ci produit le résultat escompté" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) msgid "sesquisharp" msgstr "dieseetdemi" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "Le dièse et demi s'imprime, mais l'espace est rop resserré" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) msgid "This improves the spacing" msgstr "Amélioration des espacements" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) msgid "Extend width by 1 unit" msgstr "Élargissement d'une unité" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" "Alignement des nuances sur une ligne de base à 2 unités au-dessus de la " "portée" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) msgid "rhMusic" msgstr "mdMusique" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) msgid "Start polyphonic section of four voices" msgstr "Début d'une section polyphonique de quatre voix" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) msgid "continuation of main voice" msgstr "poursuite de la voix principale" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) msgid "lhMusic" msgstr "mgMusique" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "MD" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "MG" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" -msgstr "Déplace le do2 pour que la fusion puisse fonctionner" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +msgid "Move the c2 out of the main note column" +msgstr "Supprime le do2 de l'empilement" + +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" +msgstr "pour que la fusion puisse fonctionner" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "La hampe du ré2 ira vers le bas pour permettre la fusion" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "Repositionnement du do2 à droite de la note fusionnée" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) msgid "Stem on the d2 should be invisible" msgstr "La hampe du re2 devrait être invisible" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) msgid "Visible tempo marking" msgstr "Indication de tempo visible" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "Indication de tempo invisible ; utilisée pour le MIDI" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) msgid "New tempo for next section" msgstr "Nouveau tempo pour la section suivante" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) msgid "emphasize" msgstr "emphase" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) msgid "normal" msgstr "normal" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "SopranoMusique" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "Soprano" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) msgid "mpdolce" msgstr "mpdolce" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) msgid "inst" msgstr "instr" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "Arranger pour obtenir une couleur par la procédure color-notehead" @@ -2384,7 +2420,7 @@ msgstr "Méthodes de retouche" #. @node in Documentation/learning/tweaks.itely #. @section in Documentation/learning/tweaks.itely msgid "The Internals Reference manual" -msgstr "Le manuel de référence ds propriétés internes" +msgstr "Le manuel de référence des propriétés internes" #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely @@ -2572,11 +2608,6 @@ msgstr "Feuilles de style" msgid "Other sources of information" msgstr "Autres sources de documentation" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "Options ralentissant le traitement" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2611,7 +2642,7 @@ msgstr "Notes, paroles et accords" #. @node in Documentation/learning/templates.itely #. @appendixsec in Documentation/learning/templates.itely msgid "Piano templates" -msgstr "Modèles pour claviers" +msgstr "Modèles pour piano" #. @appendixsubsec in Documentation/learning/templates.itely msgid "Solo piano" @@ -2666,16 +2697,16 @@ msgstr "Couplet en solo et refrain sur deux voix" #. @appendixsubsec in Documentation/learning/templates.itely msgid "Hymn tunes" -msgstr "Hymnes" +msgstr "Hymnes et cantiques" #. @appendixsubsec in Documentation/learning/templates.itely msgid "Psalms" -msgstr "Psaumes" +msgstr "Psalmodie" #. @node in Documentation/learning/templates.itely #. @appendixsec in Documentation/learning/templates.itely msgid "Orchestral templates" -msgstr "Modèles pour orchestre" +msgstr "Orchestre" #. @appendixsubsec in Documentation/learning/templates.itely msgid "Orchestra, choir and piano" @@ -2710,10 +2741,10 @@ msgstr "Termes musicaux -- ordre alphabétique" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "A" @@ -2764,8 +2795,8 @@ msgstr "altération" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "alto" @@ -2811,9 +2842,9 @@ msgstr "manuscript" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "B" @@ -2844,11 +2875,11 @@ msgstr "clef de baryton" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "basse" @@ -2914,7 +2945,7 @@ msgstr "cadence" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "césure" @@ -3370,6 +3401,7 @@ msgstr "cadence harmonique" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "harmoniques" @@ -3665,8 +3697,8 @@ msgstr "ornement" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "partie" @@ -3792,8 +3824,8 @@ msgstr "répétition" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "rythme" @@ -3919,7 +3951,7 @@ msgstr "texte et chanson" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "soprano" @@ -3956,7 +3988,7 @@ msgstr "temps fort" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "subdominant" -msgstr "sous-dominanate" +msgstr "sous-dominante" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -4005,7 +4037,7 @@ msgstr "tempérament" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) msgid "tenor" msgstr "tenor" @@ -4062,7 +4094,7 @@ msgstr "instrument transpositeur" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "treble clef" -msgstr "clé de sol" +msgstr "clef de sol" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -4157,52 +4189,52 @@ msgstr "Liste alphabétique des termes non occidentaux" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "bayati" -msgstr "" +msgstr "bayati" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "iraq" -msgstr "" +msgstr "iraq" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "kurd" -msgstr "" +msgstr "kurde" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "makam" -msgstr "" +msgstr "makam" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "makamlar" -msgstr "" +msgstr "makamlar" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "maqam" -msgstr "" +msgstr "maqam" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "rast" -msgstr "" +msgstr "rast" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "semai" -msgstr "" +msgstr "semai" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sikah" -msgstr "" +msgstr "sikah" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "taqasim" -msgstr "" +msgstr "taqasim" #. @node in Documentation/music-glossary.tely #. @appendix in Documentation/music-glossary.tely @@ -4212,7 +4244,7 @@ msgstr "Sources" #. @node in Documentation/notation.tely #. @appendix in Documentation/notation.tely msgid "LilyPond grammar" -msgstr "La grammaire de LilyPond" +msgstr "Grammaire de LilyPond" #. @node in Documentation/notation.tely #. @appendix in Documentation/notation.tely @@ -4229,34 +4261,65 @@ msgstr "Notation musicale générale" msgid "Specialist notation" msgstr "Notation spécialisée" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" -msgstr "non imprimé" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "Pas de mention spéciale pour cet ouvrage" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "Pas de sous-titre pour ce morceau" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "Les champs suivants sont centrés" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "Les champs suivants sont alignés par la gauche" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "Les champs suivants sont alignés par la droite" + +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "Les champs suivants sont en opposition sur la même ligne" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "Champ défini par l'utilisateur" + +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "tuttiParoles" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "musique" +#. Documentation/notation/input.itely:1792 (variable) +msgid "test" +msgstr "test" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4265,7 +4328,7 @@ msgstr "Généralités en matière d'entrée et sortie" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely msgid "Input structure" -msgstr "Structure de fichier" +msgstr "Agencement du code" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4299,16 +4362,63 @@ msgstr "Titres et entêtes" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" -msgstr "Création de titres" +msgid "Creating titles headers and footers" +msgstr "Création de titres et entête ou pied de page" #. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "Contenu des blocs de titrage" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "Mise en forme par défaut des titrages" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "Mise en forme par défaut des entête et pied de page" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely msgid "Custom headers footers and titles" msgstr "Titrages personnalisés" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "Mise en forme personnalisée des champs de titrage" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "Mise en forme personnalisée des blocs de titrage" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "Mise en forme personnalisée des entête et pied de page" + +#. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" -msgstr "Titrages personnalisés" +msgid "Creating footnotes" +msgstr "Notes de bas de page" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Footnotes overview" +msgstr "Considérations générales en matière de note de bas de page" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" +msgstr "Notes de bas de page automatiques" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Manual footnotes" +msgstr "Notes de bas de page manuelles" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4345,15 +4455,30 @@ msgstr "Utilisation de variables" msgid "Using tags" msgstr "Utilisation de balises" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "Globalisation des réglages" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "Caractères spéciaux" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "Codage du texte" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" -msgstr "Affichage de notation au format LilyPond" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "Unicode" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" +msgstr "Équivalents ASCII" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely @@ -4373,7 +4498,7 @@ msgstr "Ignorer des passages de la partition" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Alternative output formats" -msgstr "Autres formats de sortie" +msgstr "Formats de sortie alternatifs" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4447,63 +4572,88 @@ msgstr "Égalisation de plusieurs instruments (ii)" msgid "Percussion in MIDI" msgstr "MIDI et percussions" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" -msgstr "La note la plus basse nécessite plus de place que n'en fournit" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" +msgstr "Le script Articulate" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" +msgstr "Extraction d'informations musicales" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "Affichage de notation au format LilyPond" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "Affichage de la musique sous forme d'expression scheme" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "Enregistrement d'événements musicaux dans un fichier" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" +msgstr "La note la plus basse nécessite plus de place que n'en" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" -msgstr "'space ; la distance entre cette portée et la suivante sera" +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" +msgstr "fournit 'basic-distance ; la distance entre cette portée et" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." -msgstr "déterminée par 'padding." +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." +msgstr "la suivante sera déterminée par 'padding." -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" -msgstr "Ici, 'space procure assez de place, et il n'est pas nécessaire de" +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" +msgstr "Ici, 'basic-distance procure assez de place, et il n'est pas" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" -msgstr "de comprimer l'espace (jusqu'à 'minimum-distance) pour faire tenir" +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" +msgstr "nécessaire de comprimer l'espace (jusqu'à 'minimum-distance)" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" -msgstr "chose sur la âge. La distance entre cette portée et la suivante" +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" +msgstr "pour faire tenir autre chose sur la page. La distance entre" -#. Documentation/notation/spacing.itely:2053 (comment) -msgid "staff and the next is determined by 'space." -msgstr "est donc déterminée par 'space." +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." +msgstr "cette portée et la suivante est donc déterminée par 'basic-distance." -#. Documentation/notation/spacing.itely:2056 (comment) +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" -msgstr "Définir 'spacing à une valeur négative peut engendrer un chevauchement" +msgstr "Définir 'padding à une valeur négative peut engendrer un chevauchement" -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." -msgstr "des portées. La valeur minimale autorisée pour 'space est 0." +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." +msgstr "des portées. La valeur minimale autorisée pour 'basic-distance est 0." -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "cette fois, le texte est plus proche de la portée" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "definir outside-staff-priority à autre chose qu'un nombre" -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr "désactive l'évitement automatique de collision" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "il y a maintenant chevauchement" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "le texte est trop proche de la note qui suit" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "définir outside-staff-horizontal-padding règle le problème" @@ -4792,159 +4942,168 @@ msgstr "Mise en évidence de l'espacement" msgid "Changing spacing" msgstr "Modification de l'espacement" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "musiqueA" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "musiqueB" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "maintienVoixActives" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "Maintient la Voix \\\"A\\\" active sur 5 mesures" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "Maintient la Voix \\\"B\\\" active sur 5 mesures" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) msgid "accompaniment" msgstr "accompagnement" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) msgid "words" msgstr "mots" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "Maintient la Voix \\\"melodie\\\" active sur 4 mesures" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "saute une mesure" -#. Documentation/notation/changing-defaults.itely:2017 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "blubb" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "bla" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" msgstr "espacement par défaut entre les portées" -#. Documentation/notation/changing-defaults.itely:2023 (comment) +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" msgstr "espacement réduit entre les portées" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" msgstr "et voici la déclaration en cascade :" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "augmentation de la longueur de la liaison" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "augmentation de la longueur de la mesure de silence" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "augmentation de la longueur du soufflet" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "comportement par défaut" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "ne fonctionne pas tout seul" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "effectivité si les deux modifications sont explicitées" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "Suppression de la barre de mesure à la fin de la ligne en cours" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "Tentative de suppression de toutes les armures" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "déplacement vers la gauche" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "déplacement vers le haut" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "troisième doigt" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "Pour centrer le repère au-dessus de la clef" -#. Documentation/notation/changing-defaults.itely:3449 (comment) +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "Pour centrer le repère au-dessus de la métrique" -#. Documentation/notation/changing-defaults.itely:3456 (comment) +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "Pour centrer le repère au-dessus du signe de respiration" -#. Documentation/notation/changing-defaults.itely:3476 (comment) +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "Pour centrer le repère au-dessus de l'armure" -#. Documentation/notation/changing-defaults.itely:3489 (comment) +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "Pour centrer le repère au-dessus de la barre de mesure" -#. Documentation/notation/changing-defaults.itely:3504 (comment) +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "Pour centrer le repère au-dessus de l'armure" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "Pour aligner le repère sur le coin gauche de l'armure" -#. Documentation/notation/changing-defaults.itely:3516 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "Pour aligner le repère sur le coin droit de l'armure" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "puis décaler vers la droite de 3,5 espaces" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "puis décaler vers la gauche de 2 espaces" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "XdansO" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "guidonNote" @@ -4961,22 +5120,22 @@ msgstr "Contextes d'interprétation" #. @node in Documentation/notation/changing-defaults.itely #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Score - the master of all contexts" -msgstr "Score - le père de tous les contextes" +msgstr "Score -- le père de tous les contextes" #. @node in Documentation/notation/changing-defaults.itely #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Top-level contexts - staff containers" -msgstr "Contextes de haut niveau - les systèmes" +msgstr "Contextes de haut niveau -- les systèmes" #. @node in Documentation/notation/changing-defaults.itely #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Intermediate-level contexts - staves" -msgstr "Contextes de niveau intermédiaire - les portées" +msgstr "Contextes de niveau intermédiaire -- les portées" #. @node in Documentation/notation/changing-defaults.itely #. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely msgid "Bottom-level contexts - voices" -msgstr "Contextes de bas niveau - les voix" +msgstr "Contextes de bas niveau -- les voix" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely @@ -5000,18 +5159,18 @@ msgstr "Définition de nouveaux contextes" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" -msgstr "Alignement des contextes" +msgid "Context layout order" +msgstr "Ordonnancement des contextes" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely msgid "Explaining the Internals Reference" -msgstr "En quoi consiste la référence du programme" +msgstr "En quoi consiste la référence des propriétés internes" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Navigating the program reference" -msgstr "Navigation dans la référence du programme" +msgstr "Navigation dans les références du programme" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely @@ -5044,23 +5203,23 @@ msgstr "La commande de fixation (set)" #. @subsection in Documentation/notation/changing-defaults.itely msgid "The @code{@bs{}set} command" -msgstr "La commande @code{@bs{}set}" +msgstr "La commande de fixation @code{@bs{}set}" #. @node in Documentation/notation/changing-defaults.itely msgid "The override command" -msgstr "La commande de dérogation (@emph{override})" +msgstr "La commande de dérogation (override)" #. @subsection in Documentation/notation/changing-defaults.itely msgid "The @code{\\\\override} command" -msgstr "La commande @code{\\\\override}" +msgstr "La commande de dérogation @code{@bs{}override}" #. @node in Documentation/notation/changing-defaults.itely msgid "The tweak command" -msgstr "La commande d'affinage (@emph{tweak})" +msgstr "La commande d'affinage (tweak)" #. @subsection in Documentation/notation/changing-defaults.itely msgid "The @code{\\\\tweak} command" -msgstr "La commande @code{\\\\tweak}" +msgstr "La commande d'affinage @code{@bs{}tweak}" #. @node in Documentation/notation/changing-defaults.itely msgid "set versus override" @@ -5090,11 +5249,6 @@ msgstr "Modes de saisie" msgid "Direction and placement" msgstr "Direction et positionnement" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "Ordre des contextes de mise en forme" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5103,7 +5257,7 @@ msgstr "Distances et unités de mesure" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Staff symbol properties" -msgstr "Propriétés des lignes de portée" +msgstr "Propriétés des lignes de la portée" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely @@ -5246,12 +5400,12 @@ msgstr "Utilisation de fonctions musicales" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Substitution function syntax" -msgstr "Syntaxe des fonctions de substitution" +msgstr "Syntaxe d'une fonction de substitution" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Substitution function examples" -msgstr "Exemples de fonctions de substitution" +msgstr "Exemple de fonction de substitution" #. @node in Documentation/notation/notation-appendices.itely #. @appendix in Documentation/notation/notation-appendices.itely @@ -5268,10 +5422,15 @@ msgstr "Table des noms d'accord" msgid "Common chord modifiers" msgstr "Modificateurs d'accord usuels" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined string tunings" +msgstr "Accordages prédéfinis" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" -msgstr "Tablatures prédéfinies" +msgstr "Diagrammes d'accord prédéfinis" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely @@ -5321,7 +5480,7 @@ msgstr "Glyphes de métrique" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Number glyphs" -msgstr "Glyphes numériques" +msgstr "Glyphes de chiffre" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely @@ -5336,7 +5495,7 @@ msgstr "Glyphes de tête de note par défaut" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Special Notehead glyphs" -msgstr "Glyphes de têtes de note spécifiques" +msgstr "Glyphes de têtes de note spéciale" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely @@ -5351,7 +5510,7 @@ msgstr "Glyphes de silence" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Flag glyphs" -msgstr "Glyphes de crochet" +msgstr "Glyphes de crochet de croche" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely @@ -5371,7 +5530,7 @@ msgstr "Glyphes de script" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Arrowhead glyphs" -msgstr "Glyphes de flêche" +msgstr "Glyphes de flèche" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely @@ -5388,40 +5547,45 @@ msgstr "Glyphes de pédale" msgid "Accordion glyphs" msgstr "Glyphes d'accordéon" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "Glyphes de liaison" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" -msgstr "Glyphes vaticana" +msgstr "Glyphes de style vaticana" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Medicaea glyphs" -msgstr "Glyphes medicaea" +msgstr "Glyphes de style medicaea" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Hufnagel glyphs" -msgstr "Glyphes Hufnagel" +msgstr "Glyphes de style Hufnagel" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Mensural glyphs" -msgstr "Glyphes mensurales" +msgstr "Glyphes de style mensural" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Neomensural glyphs" -msgstr "Glyphes néomensurales" +msgstr "Glyphes de style néomensural" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Petrucci glyphs" -msgstr "Glyphes Petrucci" +msgstr "Glyphes de style Petrucci" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Solesmes glyphs" -msgstr "Glyphes Solesmes" +msgstr "Glyphes de style Solesmes" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely @@ -5431,12 +5595,17 @@ msgstr "Styles de tête de note" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Text markup commands" -msgstr "Commandes de markup" +msgstr "Commandes pour markup" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Text markup list commands" -msgstr "Commandes pour liste de marqueurs" +msgstr "Commandes pour liste de markups" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "Liste des caractères spéciaux" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely @@ -5456,7 +5625,7 @@ msgstr "Scripts d'ornement" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Fermata scripts" -msgstr "Scripts de point d'arrêt" +msgstr "Scripts de point d'orgue et point d'arrêt" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely @@ -5466,12 +5635,12 @@ msgstr "Scripts spécifiques à certains instruments" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Repeat sign scripts" -msgstr "Scripts de répétition" +msgstr "Scripts de reprise et de répétition" #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Ancient scripts" -msgstr "Scripts de musique ancienne" +msgstr "Scripts pour musique ancienne" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely @@ -5575,28 +5744,34 @@ msgstr "Fonctions musicales prédéfinies" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Predefined type predicates" -msgstr "Types de prédicat prédéfinis" +msgid "Context modification identifiers" +msgstr "Identificateurs de modification de contexte" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" -msgstr "Fonctions Scheme" +msgid "Predefined type predicates" +msgstr "Types de prédicat prédéfinis" #. @node in Documentation/notation/cheatsheet.itely #. @appendix in Documentation/notation/cheatsheet.itely msgid "Cheat sheet" msgstr "Aide-mémoire" -#. @unnumberedsec in Documentation/snippets.tely -#. @node in Documentation/snippets.tely #. @unnumberedsec in Documentation/snippets.tely msgid "\\\\TEXT\\\\" msgstr "\\\\TEXT\\\\" +#. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "\\\\PRE\\\\ : \\\\\\\\TEXT\\\\\\\\" + +#. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\\\\\TEXT\\\\\\\\" +msgstr "\\\\\\\\TEXT\\\\\\\\" + #. @node in Documentation/usage/running.itely msgid "Running lilypond" -msgstr "Exécution de LilyPond" +msgstr "Exécution de lilypond" #. @chapter in Documentation/usage/running.itely msgid "Running @command{lilypond}" @@ -5664,7 +5839,7 @@ msgstr "La musique déborde de la page" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely msgid "An extra staff appears" -msgstr "Apparition intempestive d'une portée" +msgstr "Apparition d'une portée supplémentaire" #. @node in Documentation/usage/running.itely msgid "Apparent error in ../ly/init.ly" @@ -5677,12 +5852,12 @@ msgstr "Erreur renvoyant à @code{../ly/init.ly}" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely msgid "Error message Unbound variable %" -msgstr "Message d'erreur « Unbound variable % »" +msgstr "Message d'erreur Unbound variable %" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely msgid "Error message FT_Get_Glyph_Name" -msgstr "Messag d'erreur « FT_Get_Glyph_Name »" +msgstr "Messag d'erreur FT_Get_Glyph_Name" #. @node in Documentation/usage/running.itely #. @unnumberedsubsec in Documentation/usage/running.itely @@ -5700,7 +5875,7 @@ msgstr "Mise à jour des fichiers avec @command{convert-ly}" #. @node in Documentation/usage/updating.itely #. @section in Documentation/usage/updating.itely msgid "Why does the syntax change?" -msgstr "LilyPond, une langue vivante" +msgstr "LilyPond est une langue vivante" #. @node in Documentation/usage/updating.itely msgid "Invoking convert-ly" @@ -5737,7 +5912,7 @@ msgstr "lilypond-book" #. @chapter in Documentation/usage/lilypond-book.itely msgid "Running @command{lilypond-book}" -msgstr "Utilisation de @command{lilypond-book}" +msgstr "Association musique-texte avec @command{lilypond-book}" #. @node in Documentation/usage/lilypond-book.itely #. @section in Documentation/usage/lilypond-book.itely @@ -5833,7 +6008,7 @@ msgstr "Extensions de nom de fichier" #. @node in Documentation/usage/lilypond-book.itely #. @section in Documentation/usage/lilypond-book.itely msgid "lilypond-book templates" -msgstr "Squelettes pour lilypond-book" +msgstr "Modèles pour lilypond-book" #. @subsection in Documentation/usage/lilypond-book.itely msgid "html" @@ -5874,6 +6049,16 @@ msgstr "Programmes externes" msgid "Point and click" msgstr "Pointer-cliquer" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "Activation du pointer-cliquer" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "Pointer-cliquer sélectif" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -5997,783 +6182,748 @@ msgstr "Résolution de problèmes" #. @node in Documentation/usage/suggestions.itely #. @section in Documentation/usage/suggestions.itely msgid "Make and Makefiles" -msgstr "De la commande @command{make} et des fichiers @code{Makefile}" +msgstr "De la commande make et des fichiers Makefile" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) msgid "discant" msgstr "discantus" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) msgid "dot" msgstr "point" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) msgid "16 voets register" msgstr "registre de 16 pieds" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) msgid "accBasson" msgstr "accBasson" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) msgid "een korig 8 en 16 voets register" -msgstr "" +msgstr "registre de 8 et 16 pieds" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) msgid "accBandon" msgstr "accBandon" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) msgid "accVCello" msgstr "accVCelle" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) msgid "4-8-16 voets register" msgstr "registre 4-8-16 pieds" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) msgid "accHarmon" msgstr "accHarmonica" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) msgid "accTrombon" msgstr "accTrombonne" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) msgid "eenkorig 4 en 16 voets register" -msgstr "" +msgstr "registre de 4 et 16 pieds" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) msgid "accOrgan" msgstr "accOrgue" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) msgid "accMaster" msgstr "accMaitre" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) msgid "accAccord" msgstr "accAccordeon" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) msgid "accMusette" msgstr "accMusette" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) msgid "accCeleste" msgstr "accCeleste" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) msgid "accOboe" msgstr "accHautbois" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) msgid "accClarin" msgstr "accClarinette" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) msgid "accPiccolo" msgstr "accPiccolo" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) msgid "accViolin" msgstr "accViolon" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) msgid "continuo" msgstr "continuo" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) msgid "bassStaff" msgstr "bassePortee" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) msgid "drh" msgstr "tomh" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) msgid "drl" msgstr "tomb" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) msgid "timb" msgstr "timb" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) msgid "two" msgstr "deux" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) msgid "threeTwo" msgstr "troisDeux" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) msgid "threeFour" msgstr "troisQuatre" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) msgid "splitStaffBarLineMarkup" msgstr "divisionapresBarreMarque" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) msgid "splitStaffBarLine" msgstr "divisionapresBarre" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) msgid "cueWhile" msgstr "citePendant" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) msgid "flute" msgstr "flute" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) msgid "clarinet" msgstr "clarinette" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) msgid "pianoRH" msgstr "pianoMD" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) msgid "pianoLH" msgstr "pianoMG" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) msgid "first, define a variable to hold the formatted date:" msgstr "tout d'abord, définir une variable qui contiendra la date formatée" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) msgid "date" msgstr "date" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) msgid "d-%m-%Y\\\" (localtime (current-time)))" msgstr "d-%m-%Y\\\" (localtime (current-time)))" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) msgid "use it in the title block:" msgstr "utilisation dans le bloc de titre :" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) msgid "and use it in a \\markup block:" msgstr "et utilisation dans un bloc \\markup :" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) msgid "voiceFive" msgstr "voixCinq" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) msgid "graceNotes" msgstr "ornementNotes" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) msgid "Default layout:" msgstr "Mise en forme par défaut :" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) msgid "Reducing the minimum space below the staff and above the lyrics:" msgstr "" "Réduction au minimum de l'espace au-dessous de la portée et au-dessus des " "paroles :" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) msgid "Increase the size of the bar number by 2" msgstr "Augmentation de la taille des numéros de mesure au double" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) msgid "Print a bar number every second measure" msgstr "Affichage du numéro toutes les deux mesures" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) msgid "Center-align bar numbers" msgstr "Alignement au centre des numéros de mesure" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) msgid "Left-align bar numbers" msgstr "Alignement à gauche des numéros de mesure" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) msgid "the RehearsalMark will be centered above the Clef" msgstr "Pour centrer le repère au-dessus de la clef" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) msgid "the RehearsalMark will be centered above the TimeSignature" msgstr "Pour centrer le repère au-dessus de la métrique" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) msgid "the RehearsalMark will be centered above the KeySignature" msgstr "Pour centrer le repère au-dessus de l'armure" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) msgid "" "the RehearsalMark will be aligned with the left edge of the KeySignature" msgstr "Pour aligner le repère sur le coin gauche de l'armure" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) msgid "" "the RehearsalMark will be aligned with the right edge of the KeySignature" msgstr "Pour aligner le repère sur le coin droit de l'armure" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) msgid "and then shifted right by one unit." msgstr "puis décaler vers la droite d'une unité." -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) msgid "upperStaff" msgstr "porteeSuperieure" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) +#. Documentation/snippets/ancient-fonts.ly:52 (comment) msgid "\\break % 1 (8*1)" msgstr "\\break % 1 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) +#. Documentation/snippets/ancient-fonts.ly:63 (comment) msgid "\\break %2 (8*1)" msgstr "\\break %2 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) +#. Documentation/snippets/ancient-fonts.ly:75 (comment) msgid "\\break % 3 (8*1)" msgstr "\\break % 3 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) +#. Documentation/snippets/ancient-fonts.ly:90 (comment) msgid "\\break % 4 (8*1)" msgstr "\\break % 4 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) msgid "\\break % 5 (8*1)" msgstr "\\break % 5 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) msgid "\\break % 6 (8*1)" msgstr "\\break % 6 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) msgid "\\break % 7 (8*1)" msgstr "\\break % 7 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) +#. Documentation/snippets/ancient-fonts.ly:129 (comment) msgid "\\break % 8 (8*1)" msgstr "\\break % 8 (8*1)" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) +#. Documentation/snippets/ancient-fonts.ly:132 (comment) msgid "\\break % 12 (32*1)" msgstr "\\break % 12 (32*1)" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) msgid "lowerStaff" msgstr "porteeInferieure" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) +#. Documentation/snippets/ancient-fonts.ly:147 (comment) msgid "\\break % 2 (16*1)" msgstr "\\break % 2 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) +#. Documentation/snippets/ancient-fonts.ly:152 (comment) msgid "\\break % 4 (16*1)" msgstr "\\break % 4 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) +#. Documentation/snippets/ancient-fonts.ly:191 (comment) msgid "\\break % 9 (16*1)" msgstr "\\break % 9 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) +#. Documentation/snippets/ancient-fonts.ly:193 (comment) msgid "lig" msgstr "lig" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) +#. Documentation/snippets/ancient-fonts.ly:197 (comment) msgid "\\break % 11 (16*1)" msgstr "\\break % 11 (16*1)" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) +#. Documentation/snippets/ancient-fonts.ly:208 (comment) msgid "\\break % 12 (8*1)" msgstr "\\break % 12 (8*1)" -#. Documentation/snippets/ancient-headword.ly:34 (context id) +#. Documentation/snippets/ancient-headword.ly:29 (context id) msgid "cantus" msgstr "cantus" -#. Documentation/snippets/ancient-headword.ly:36 (comment) +#. Documentation/snippets/ancient-headword.ly:31 (comment) msgid "Verse 1 — Salve, Regína" msgstr "Vers 1 — Salve, Regína" -#. Documentation/snippets/ancient-headword.ly:47 (comment) +#. Documentation/snippets/ancient-headword.ly:42 (comment) msgid "Verse 2 — Vita, dulcédo" msgstr "Vers 2 — Vita, dulcédo" -#. Documentation/snippets/ancient-headword.ly:48 (comment) +#. Documentation/snippets/ancient-headword.ly:43 (comment) msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" -msgstr "" +msgstr "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:49 (comment) +#. Documentation/snippets/ancient-headword.ly:44 (comment) msgid "\\divisioMinima" -msgstr "" +msgstr "\\divisioMinima" -#. Documentation/snippets/ancient-headword.ly:50 (comment) +#. Documentation/snippets/ancient-headword.ly:45 (comment) msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" -msgstr "" +msgstr "\\[ a\\melisma \\flexa g\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:51 (comment) +#. Documentation/snippets/ancient-headword.ly:46 (comment) msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" -msgstr "" +msgstr "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:52 (comment) +#. Documentation/snippets/ancient-headword.ly:47 (comment) msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" -msgstr "" +msgstr "\\[ e\\melisma \\flexa d\\melismaEnd \\]" -#. Documentation/snippets/ancient-headword.ly:53 (comment) +#. Documentation/snippets/ancient-headword.ly:48 (comment) msgid "\\divisioMaior" -msgstr "" +msgstr "\\divisioMaior" -#. Documentation/snippets/ancient-headword.ly:54 (comment) +#. Documentation/snippets/ancient-headword.ly:49 (comment) msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" -msgstr "" +msgstr "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" -#. Documentation/snippets/ancient-headword.ly:55 (comment) +#. Documentation/snippets/ancient-headword.ly:50 (comment) msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" -msgstr "" +msgstr "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" -#. Documentation/snippets/ancient-headword.ly:56 (comment) +#. Documentation/snippets/ancient-headword.ly:51 (comment) msgid "\\finalis" -msgstr "" +msgstr "\\finalis" -#. Documentation/snippets/ancient-headword.ly:57 (comment) +#. Documentation/snippets/ancient-headword.ly:52 (comment) msgid "Verse 3 — Ad te clamámus" msgstr "Vers 3 — Ad te clamámus" -#. Documentation/snippets/ancient-headword.ly:66 (comment) +#. Documentation/snippets/ancient-headword.ly:61 (comment) msgid "Verse 4 — Ad te suspirámus" msgstr "Vers 4 — Ad te suspirámus" -#. Documentation/snippets/ancient-headword.ly:79 (comment) +#. Documentation/snippets/ancient-headword.ly:74 (comment) msgid "Verse 5 — Eia ergo, Advocáta nostra" msgstr "Vers 5 — Eia ergo, Advocáta nostra" -#. Documentation/snippets/ancient-headword.ly:95 (comment) +#. Documentation/snippets/ancient-headword.ly:90 (comment) msgid "Verse 6 — Et Jesum" msgstr "Vers 6 — Et Jesum" -#. Documentation/snippets/ancient-headword.ly:109 (comment) +#. Documentation/snippets/ancient-headword.ly:104 (comment) msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" msgstr "Vers 7 ad finem — O clemens: O pia: O dulcis Virgo María" -#. Documentation/snippets/ancient-headword.ly:127 (comment) +#. Documentation/snippets/ancient-headword.ly:122 (comment) msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." msgstr "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) msgid "chant" msgstr "chant" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) msgid "verba" msgstr "verba" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) msgid "incipit" msgstr "incipit" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +msgid "Set tight spacing" msgstr "espacement resserré" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) msgid "turn off bar lines" msgstr "désactivation des barres de mesure" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) msgid "need this extra \\skip such that clef change comes" msgstr "ce \\skip supplémentaire permet d'afficher le changement de clef" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) msgid "after bar line" msgstr "après la barre de mesure" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" -msgstr "À VÉRIFIER : sans effet ?" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) msgid "turn bar lines on again" msgstr "réactive les barres de mesure" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" -msgstr "À CORRIGER : remettre printKeyCancellation à #t ne doit intervenir" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "Remettre printKeyCancellation à #t ne doit intervenir" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) msgid "occur in the first bar after the incipit. Dto. for forceClef." msgstr "à la première mesure suivant l'incipit. Idem pour forceClef." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) msgid "Therefore, we need an extra \\skip." msgstr "C'est pourquoi nous ajoutons un \\skip." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) msgid "the actual music" msgstr "la vraie musique" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) msgid "let finis bar go through all staves" msgstr "pour que la barre de mesure finale traverse toutes les portées" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) msgid "finis bar" msgstr "la barre finale" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "discantusNotes" msgstr "discantusNotes" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "two bars" msgstr "deux mesures" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "eight bars" msgstr "huit mesures" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) msgid "one bar" msgstr "une mesure" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) msgid "discantusLyrics" msgstr "discantusParoles" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) msgid "altusNotes" msgstr "altusNotes" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) msgid "seven bars" msgstr "sept mesures" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) msgid "altusLyrics" msgstr "altusParoles" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) msgid "tenorNotes" msgstr "tenorNotes" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) msgid "four bars" msgstr "quatre mesures" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) msgid "tenorLyrics" msgstr "tenorParoles" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) msgid "bassusNotes" msgstr "bassusNotes" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) msgid "bassusLyrics" msgstr "bassusParoles" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) msgid "choirStaff" msgstr "choirStaff" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) msgid "no bars in staves" msgstr "pas de barre sur les portées" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) msgid "incipit should not start with a start delimiter" msgstr "l'incipit ne doit pas commencer par une marque de regroupement" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) msgid "no slurs" msgstr "pas de liaison" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "Décommenter la commande \\\"\\remove\\\" qui suit permet d'insérer" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" -msgstr "des sauts de ligne y compris lorsqu'une note viendrait à déborder " - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" -msgstr "sur la mesure suivante. Cette commande est commentée pour ce court" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" +msgstr "La commande qui suit peut être commentée pour une court" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" -msgstr "exemple, mais dans le cas d'une partition conséquente, " +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" +msgstr "extrait mais, dans le cas d'une partition conséquente, " -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" msgstr "vous parviendrez à une meilleure gestion des sauts de ligne " -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." msgstr "et donc de l'espacement général en la décommentant." -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" -msgstr "\\remove \\\"Forbid_line_break_engraver\\\"" - -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) msgid "tick" msgstr "tick" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) msgid "Use markup to center the chant on the page" msgstr "Utilisation d'un markup pour centrer le chant sur la page" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) msgid "centered" msgstr "centré" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) msgid "End score" msgstr "Fin de la partition" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) msgid "End markup" msgstr "Fin du markup" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) msgid "fragment" msgstr "fragment" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) msgid "slurNotes" msgstr "liaisonNotes" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) msgid "Default behavior" msgstr "Comportement par défaut" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) msgid "Corrected to avoid collisions" msgstr "Correction pour éviter les collisions" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" msgstr "" #. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) msgid "Span -----------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "Définition des règles de ligature pour toutes les portées" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "Changement des règles de ligature seulement pour cette portée" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "Héritage des règles de ligature du contexte Score" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "Changement des règles de ligature seulement pour cette voix" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "subdivision 2-3-2" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "" "Section paper de l'ouvrage ; elle est répercutée sur toutes les parties" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" "Pied de page : création d'un part-tagline pour la dernière page d'une partie" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "Champ copyright seulement sur la première page de l'ouvrage" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "Champ part-tagline seulement en dernière page des parties" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "Champ tagline seulement sur la dernière page de l'ouvrage" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "Entête de l'ouvrage, transmise à la première partie" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" "on peut opter pour une gestion des sauts de page différente selon la partie" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "mesure sans \\breathe :" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "Notation moderne :" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" -msgstr "par défaut, \\breathe produit un rcomma (virgule vers la droite) comme si l'on avait : " +msgstr "" +"par défaut, \\breathe produit un rcomma (virgule vers la droite) comme si " +"l'on avait : " -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" @@ -6781,542 +6931,594 @@ msgstr "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "rvarcomma et lvarcomma sont des variantes de rcomma et lcomma" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "N.B. : affectation au niveau portée, puisqu'il y a une nouvelle voix" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "en V" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "construction du symbole" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "retour à la normale pour les marques de respiration" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "souffletAvecTexteCentre" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "souffletMolto" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "souffletPlus" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "petitFlageolet" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) msgid "Default setting" msgstr "Réglage par défaut" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "Ce qui suit n'est là que pour permettre l'impression des noms" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "de style d'accord ; vous pouvez supprimer ce bloc \\layout" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "si vous ne voulez pas les imprimer." -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "définition de la taille par défaut des portées" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "{" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "}" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) msgid "sustainNotes" msgstr "sustainNotes" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "hampeOui" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "hampeNon" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "mesAccords" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "maMusique" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "modification de maj9 et 6 (ajoute 9)" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" -msgstr "" +msgstr "Les exceptions sont des accords avec ajout de markup" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" -msgstr "" +msgstr "chExceptionMusic" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." -msgstr "" +msgstr "Convertit la musique en liste et l'ajoute aux autres exceptions." -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" -msgstr "" +msgstr "chExceptions" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "laMusique" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "mesAccords" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "lesAccords" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) msgid "\\break" msgstr "\\break" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "CoupletUn" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "CoupletDeux" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "Sop" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "partocheOriginale" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "Chaque coupure est contituée d'un couple (DÉBUT . FIN)" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "dont les membres sont des instants rythmiques (rythmic-locations)." -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "(make-rhythmic-locations NUMÉRO_MES NUM DÉN)" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "signifie NUM/DÉN rondes dans la mesure numéro NUMÉRO_MES" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "Liste des associations de hauteur à une couleur" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "Comparaison hauteur et altération (sans tenir compte de l'octave)" -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "piuF" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "musiqueHaut" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "musiqueBas" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "soufflet visible" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) msgid "hide text span" msgstr "extension de texte invisible" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) msgid "show glissando" msgstr "glissando visible" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +msgid "ten" +msgstr "dix" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "cinquante" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +msgid "finger" +msgstr "doigt" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "dérogation optionnelle (pas d'avertissement si doigté supérieur à 5)" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) msgid "parenF" msgstr "parentF" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) msgid "the hidden measure and bar line" msgstr "la mesure vide et sa barre" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "\\cadenzaOn désactive le calcul automatique des numéros de mesure" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "c'est en demi-espace" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "les hampes seront donc hautes de 9,5 espaces" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" +msgstr "les hampes s'allongent habituellement" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "vers le haut ; il faut donc les abaisser d'autant qu'on" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "les allonge, soit (19 - 7) / 2" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" +msgstr "(7 est la longueur par défaut des hampes)" + +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "haut" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "bas" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "Définition des propriétés globales de diagramme de fret" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "melodie" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "Do majeur pour la guitare, sans barré, réglages par défaut" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "style terse" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "Do majeur pour la guitare, barré sur le troisième fret" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "style verbeux" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "taille 1,0" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" "indication de fret en chiffre romain, doigté sous la corde, barré rectiligne" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "taille standard" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "orientation à l'italienne, chiffres arabes, M pour corde étoufée" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" "sans barré, indication de fret en bas ou à gauche, petite indication " "d'étouffé" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "accord de ré simple" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "points plus gros et centrés, moins de frets" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "étiquette sous la corde" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" -msgstr "" +msgstr "utilitaires de grob" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." -msgstr "" +msgstr "C'est une recopie brute de méthodes C++ utilisées par le graveur d'ambitus" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" -msgstr "" +msgstr "Structure des données de l'ambitus" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" -msgstr "" +msgstr "La classe références les différents grobs à créer" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" -msgstr "" +msgstr "pour imprimer l'ambitus :" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" -msgstr "" +msgstr "- ambitus-group : grob regroupant tous les composants d'un ambitus" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" -msgstr "" +msgstr "(Ambitus grob) ;" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" -msgstr "" +msgstr "- ambitus-line : la ligne verticaleentre les notes extrèmes de" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" -msgstr "" +msgstr "l'ambitus (AmbitusLine grob) ;" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" -msgstr "" +msgstr "- ambitus-up-note et ambitus-down-note : les têtes et altération des" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" -msgstr "" +msgstr "notes extrèmes de l'ambitus (voir la classe " -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." -msgstr "" +msgstr "ci-après)." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" -msgstr "" +msgstr "Les autres slots définissent les contextes de clef et d'armure du graveur :" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" -msgstr "" +msgstr "- start-c0 : position du do médium en début de morceau. Il permettra" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" -msgstr "" +msgstr "de positionner les notes de l'ambitus selon leur hauteur ;" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" -msgstr "" +msgstr "- start-key-sig : l'armure en début de morceau. Il permettra de" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" -msgstr "" +msgstr "déterminer la nécessité d'ajouter des altérations aux notes de" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) msgid "notes." -msgstr "" +msgstr "l'ambitus." -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) msgid "Ambitus engraving logics" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "Exemple" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "ajout de FretBoards pour le cuatro" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "NB : Cette partie pourrait faire l'objet d'un fichier séparé" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "predefined-cuatro-fretboards.ly" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "récupéré par \\include dans chacune de vos compositions" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "cuatroTuning" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" -msgstr "" +msgstr "reSix" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" -msgstr "" +msgstr "reMajeur" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" -msgstr "" +msgstr "laMajeurSeptieme" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" -msgstr "" +msgstr "reMajeurSeptieme" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" -msgstr "" +msgstr "solMajeur" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" -msgstr "" +msgstr "fin du fichier d'inclusion /predefined-cuatro-fretboards.ly potentiel" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" -msgstr "" +msgstr "primerosNoms" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" -msgstr "" +msgstr "primeros" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "\\override FretBoard" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "#'(fret-diagram-details string-count) = #'4" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "baseMelodique" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "doit être inférieur au nombre réel de lignes de la portée" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "fixA" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "fixB" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "\\\" (make-string 36 #\\-))" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "nouvelle voix ( = \\voiceOne), masquée" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "rattachement du glissando aux têtes de note" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "voix originale avec les accords réagencés pour pouvoir" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "attacher le glissando au la et au do" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "cercle" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "Ces fonctions pour (de)crescendo permettent de composer librement" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "le texte à prolonger" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) msgid "mycresc" msgstr "moncresc" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) msgid "mydecresc" msgstr "mondecresc" @@ -7329,1601 +7531,1704 @@ msgstr "" msgid "crpoco" msgstr "crpoco" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" -"Redéfinition des commandes \\cresc, \\dim et \\decresc pour pouvoir les " -"mettre en postposition" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -msgid "cresc" -msgstr "cresc" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "dim" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -msgid "decresc" -msgstr "decresc" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "Manuel de notation - 1.7 : Annotations éditoriales" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "Beethoven, Op. 31, No 3" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "Sonate pour piano No 18, 2e mouvement, Scherzo" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "Mesures 9 à 14" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "Portée MD" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "Portée MG" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "PostScript est une marque déposée par Adobe Systems Inc." -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "exemple de musique" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "voixSuperieur" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "voixInferieur" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "houm" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "pah" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "Réservé aux gurus : réglage pour la conversion Request->Element" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "MaPortee" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "définition explicite de l'instrument, pour éviter" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "les effets indésirables en créant un nom pour des" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "portées de piano" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "MaVoix" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "doit venir avant tous les autres" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "\\consists \\\"Rest_engraver\\\"" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "L. v. Beethoven, Op. 49 No 1" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" -msgstr "Sonate pou piano 19 « Leichte Sonate »" +msgstr "Sonate pour piano 19 « Leichte Sonate »" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "mesures 1 à 12" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "\\layout {" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "\\context {" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "\\Score" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" -msgstr "" +msgstr "\\override SpacingSpanner #'base-shortest-duration =" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" -msgstr "" +msgstr "#(ly:make-moment 1 20)" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "Arcangelo Corelli, 12 sonates de chambre, Op. 2" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "Sonata II, Allemande" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "mesures 1 à 88" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "Code de Neil Puttock, modifié par Carl Sorensen" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) msgid "extendOn" msgstr "prolongeOui" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "prolongeNon" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "violonI" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "violonII" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "violons" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "markupcentre" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "pUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) msgid "iUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) msgid "mUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) msgid "aUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) msgid "xUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "noletNon" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "noletsNon" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "noletsOui" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "tetesNon" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "tetesOui" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "Exemple 1" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "Exemple 2" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "Exemple 3" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "Exemple 4" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "slap" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) msgid "example" msgstr "exemple" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" -msgstr "" -"Truc extrait de http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" - -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) msgid "lyr" msgstr "paroles" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "Création d'une table de diagrammes de frte vide" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "Création d'une nouvelle table en recopiant default-fret-table" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "Ajout d'un accord à custom-fretboard-table-one" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" +msgstr "Ajout d'un accord à custom-fretboard-table-two" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "Un accord pour ukulele" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "110 % de la taille par défaut" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "raccourcis" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "positionnement des doigtés" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" -msgstr "" +msgstr "sfol" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" -msgstr "" +msgstr "sfor" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" -msgstr "" +msgstr "sfod" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" -msgstr "" +msgstr "sfou" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "positionnement du numéro de corde" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" -msgstr "" +msgstr "ssnol" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "(bas droite haut)" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" -msgstr "" +msgstr "ssnou" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" -msgstr "" +msgstr "ssnod" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" -msgstr "" +msgstr "ssnor" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" -msgstr "" +msgstr "définition de l'offset des doigtés" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" -msgstr "" +msgstr "FO" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" -msgstr "" +msgstr "markups" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" -msgstr "" +msgstr "rit" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) msgid "dimin" -msgstr "" +msgstr "dimin" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" -msgstr "" +msgstr "andantino" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" -msgstr "" +msgstr "benmarcato" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "pdolce" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "LA MUSIQUE %%%" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "m. 1" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "m. 2" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "m. 3" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "m. 4" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "m. 5" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "fin de la mesure 6" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "m. 7" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" -msgstr "" +msgstr "début de mesure 8" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" -msgstr "début de mesure 8" +msgstr "fin de mesure 8" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "fin de mesure 9" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "m. 10" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "début de mesure 11" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "fin de mesure 11" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "début mesure 2" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "fin mesure 2" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "début d'une nouvelle section, en la mineur" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "début mesure 6" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "fin mesure 6" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "mesure 8" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "début mesure 9" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "fin mesure 9" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "mesure 11" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "guitare" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "cordesFrettees" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "" -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" -msgstr "" +msgstr "tambour" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" -msgstr "Solution 1 : utilisation d'un simple markup avec valeur halign particulière" +msgstr "" +"Solution 1 : utilisation d'un simple markup avec valeur halign particulière" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "Inconvénient : c'est un markup, pas une commande de nuance, donc" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "\\dynamicDown et autres seront sans effet." -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "semppMarque" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "Solution 2 : utilisation d'un script de nuance, puis déplacement" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "avec un \\once \\override ... #'X-offset = .." -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "Inconvénient : il faut un \\once \\override à chaque fois" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "semppK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" -msgstr "Solution 3 : décalage du script de nuance pour que « center-alignment »" +msgstr "" +"Solution 3 : décalage du script de nuance pour que « center-alignment »" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "le positionne là où il faut" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" -msgstr "Inconvénient : le décalage réserve de l'espace où rien ne pourra se placer" +msgstr "" +"Inconvénient : le décalage réserve de l'espace où rien ne pourra se placer" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "semppT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "Solution 4 : nuance avec dimensionnement à 0 du texte ajouté" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" -msgstr "Inconvénient : lilypond considère que « sempre » n'a pas d'extension, ce" +msgstr "" +"Inconvénient : lilypond considère que « sempre » n'a pas d'extension, ce" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "qui l'autorise à y placer d'autres éléments => collisions" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" -msgstr "Inconvénient : Il y a apparemment de l'espacement, d'où un alignement légèrement" +msgstr "Inconvénient : Il y a apparemment de l'espacement, d'où un alignement" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" -msgstr "différent que s'il n'y avait pas de texte additionnel" +msgstr "légèrement différent que s'il n'y avait pas de texte additionnel" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "semppM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "Solution 5 : nuance avec décalage explicite dans la fonction Scheme" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "semppG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "Solution 6 : nuance avec alignement explicite. Ceci ne sera effectif" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "que si l'on définit X-offset" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "Inconvénient : il faut définir DynamicText #'X-offset" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "Inconvénient : alignement sur le coin droit du texte additionnel" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "et non sur le centre du pp" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "semppMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "s" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) msgid "sMarkup" msgstr "sMarque" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "sK" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "sT" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "sM" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "sG" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "sMII" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "défini à ##f (faux) produirait le même résultat" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "harmonies" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:61 (variable) msgid "Timeline" msgstr "Phrase" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:93 (comment) msgid "Start score" msgstr "Début de la partition" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" msgstr "Début du pianostaff" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" msgstr "Debut de la portée MD" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "Début de la voix « Soprano »" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "Fin de la voix « Soprano »" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "Début de la voix « Alto »" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "Fin de la voix « Alto »" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" msgstr "Fin de la portée MD" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" msgstr "Début de la portée MG" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "Début de la voix « Tenor »" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "Fin de la voix « Tenor »" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "Début de la voix « Basse »" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "Fin de la voix « Basse »" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" msgstr "Fin de la portée MG" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) msgid "End pianostaff" msgstr "Fin du pianostaff" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" msgstr "Début du bloc « paper »" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" msgstr "pas d'indentation du premier système" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" msgstr "raccourcissement de la longueur de ligne" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" msgstr "Fin du bloc « paper »" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "discantusIncipit" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "altusIncipit" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "deux mesures" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "tenorIncipit" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "bassusIncipit" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "pas de barre sur les portées ni dans les paroles" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" -msgstr "les deux instructions qui suivent maintiennent les paroles entre les barres" +msgstr "" +"les deux instructions qui suivent maintiennent les paroles entre les barres" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "Décommenter la commande \\\"\\remove\\\" qui suit permet d'insérer" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" -msgstr "des sauts de ligne y compris lorsqu'une barre de mesure apparaît sur une" +msgstr "" +"des sauts de ligne y compris lorsqu'une barre de mesure apparaît sur une" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" -msgstr "note qui se prolonge dans la mesure suivante. Cette commande est ici commentée" +msgstr "note qui se prolonge dans la mesure suivante. Cette commande est ici" + +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "commentée, mais dans le cas d'une partition conséquente, " + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "vous parviendrez à une meilleure gestion des sauts de ligne " -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "et donc de l'espacement général en la décommentant." + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "\\remove \\\"Forbid_line_break_engraver\\\"" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "tuning" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" msgstr "fabriquePourcent" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "#(set-global-staff-size 16)" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "Quelques macros %%%%%%%%%%%%%%%%%%%" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "sl" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "nsl" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "crOn" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "crOff" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "jazzAccords" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "Tonalite" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "trpt" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "trpHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "trompette" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "altoHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "altoSax" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "bari" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "bariHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "bariSax" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "tbone" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "tboneHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "trombone" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "gtr" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "gtrHarmonie" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "mdHaut" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "mdBas" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "mgHaut" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "mgBas" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "PianoMD" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "PianoMG" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "percuContenu" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "cuivres" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "altosax" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "bariaccords" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "barisax" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "accords" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "Maurice Ravel, Sonatine (1905)" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "Premier mouvement" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "pointdOrgue" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "sopranoMusique" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "PREMIER COUPLET" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "femmes" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "hommes" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "Initialisation des réglages de makam" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "bassechiffrages" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "parlatoO" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "parlatoN" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "Candide, Voltaire" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "la barre finale n'est pas coupée" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "rectifPos" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "tiretPlus" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "Autorise l'indicateur de nolet à s'étendre..." -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "...pour tout englober jusqu'à la note qui le suit" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "...ou seulement sur le blanc qui le suit" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "cordeVideHarmoniques" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "première harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "deuxième harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "troisième harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "quatrième harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "cinquième harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "sixième harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "septième harmonique" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "huitième harmonique" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) msgid "space for instrumentName" msgstr "espace pour instrumentName" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" msgstr "espace pour shortInstrumentName" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "fluteMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "Hauteurs recopiées d'un manuscript pour clarinette en la" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." msgstr "et que l'on transpose en ut." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "clarinetteMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "trompetteMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" msgstr "La partie de cor ne comporte habituellement pas de tonalité" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) msgid "hornMusic" msgstr "corMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "percussionMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "altoIMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "altoIIMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) msgid "altoILyrics" msgstr "altoIParoles" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoIILyrics" msgstr "altoIIParoles" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "pianoMDMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "pianoMGMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "violonIMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "violonIIMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "violaMusique" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "shortInstrumentName, midiInstrument, etc." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" msgstr "peuvent aussi se définir ici" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" msgstr "On stipule qu'un do médium dans la musique qui suit" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" msgstr "sonnera comme un si bémol, à toutes fins utiles" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." -msgstr "pour une sortie exacte (MIDI p. ex.)." +msgstr "pour une sortie exacte (MIDI par ex.)." -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" msgstr "Imprime la musique d'une clarinette en si bémol" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "\\\\set Staff.autoBeaming = ##f % désactive la ligature automatique" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" msgstr "s'applique aux hampes opposées" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "\\\\autoBeamOff % s'applique aux hampes ascendantes solidaires" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" msgstr "s'applique aux hampes descendantes" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "baguette" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "Autorise la présence d'une barre de mesure dans les triolets" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "Autorise le saut de ligne dans une ligature" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "Insertion d'un saut de ligne manuel au milieu du triolet" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "pedale" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "L. van Beethoven" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "Sonate pour piano No 21 - Dem Grafen von Waldstein Gewidmet" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "choral des mesures 34 à 40" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "MD Voix 1" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "(" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr ")" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "MD Voix 2" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "tab" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" -msgstr "SMM : silence multimesures" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" msgstr "Les SMM se placent par défaut sous la quatrième ligne" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "On peut les déplacer par dérogation" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" -msgstr "Une valeur à 0 correspond à la position par défaut ;" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" -msgstr "la dérogation qui suit repositionne le silence sur la ligne médiane" - -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "Les SMM des voix impaires sont attachés à la ligne du haut" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" msgstr "Les SMM des voix paires sont attachés à la ligne du bas" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" -msgstr "Il y en aura deux, même si la mesure est absolument vide" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" +msgstr "Les SMM des deux voix restent indépendants" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" -msgstr "" -"Voici ce qui les fusionnera même s'ils appartiennent à deux voix différentes" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" +msgstr "Séparer les silences multimesure de plus de deux voix" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" +msgstr "requiert un override" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" +msgstr "Dans le cas où la compression de mesures est activée et qu'il y a plusieurs" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" +msgstr "voix, il faut une dérogation par voix, sinon multiplication des silences" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" -msgstr "Autorise un segno en tant que repère et ajustement de sa taille au besoin" +msgstr "Autorise un segno en tant que repère et ajuste sa taille au besoin" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "\\once \\override Score.RehearsalMark #'font-size = #3" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" -msgstr "Autorise un coda en tant que repère et ajustement de sa taille au besoin" +msgstr "Autorise un coda en tant que repère et ajuste sa taille au besoin" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "Coda sur une nouvelle ligne ?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "NON : utiliser \\noBreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "OUI : \\noBreak INTERDIT" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "\\noBreak" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "Entrons maintenant dans le vif du sujet." -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." -msgstr "\\cadenzaOn interrompt la numérotation et \\stopStaff suprime les lignes de la portée" +msgstr "" +"\\cadenzaOn interrompt la numérotation et \\stopStaff suprime les lignes de " +"la portée" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "Quelques exemples de présentation du texte" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "texte aligné sur la ligne" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" -msgstr "=========================" +msgstr "==================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "Positionnement du texte au bon endroit" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "| s1*0^\\markup { D.S. al Coda } }" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "texte centré" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" -msgstr "============" +msgstr "====================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "texte et symboles centrés" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" -msgstr "=========================" +msgstr "===============================" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" -msgstr "Positionnement du texte au bon endroit et ajustement de l'espace au mieux" +msgstr "" +"Positionnement du texte au bon endroit et ajustement de l'espace au mieux" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "augmenter le nombre de répétitions pour accroître l'espace libre" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "Reprise de la numérotation et réapparition des lignes de portée" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "Coda sur une nouvelle ligne ?" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "NON : \\break INTERDIT" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" -msgstr "OUI : \\breal OBLIGATOIRE" +msgstr "OUI : \\break OBLIGATOIRE" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "Merci pour la clef et l'armure !" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" -msgstr "Utilisation d'un coda comme repère et ajustement de sa taille et du positionnement" +msgstr "" +"Utilisation d'un coda comme repère et ajustement de sa taille et du " +"positionnement" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" -msgstr "Le symbole coda se place au-dessus de la clef (de sol) selon la ligne de la coda" +msgstr "" +"Le symbole coda se place au-dessus de la clef (de sol) selon la ligne de la " +"coda" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "Si la coda ne vient pas sur une nouvelle ligne, utilisez :" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "Si la coda necessite un nouvelle ligne, utilisez plutôt :" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "La coda" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "Le numéro de la première mesure est imprimé" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "Affichage du numéro à chaque mesure, hormis en fin de ligne" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "Numéros de mesure encadrés dans un rectangle" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "Numéros de mesure encadrés dans un cercle" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "Indications métronomiques sous la portée" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "Indications de repère sous la portée" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "ClarinetteBasse" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "Percussions" @@ -8931,1140 +9236,1209 @@ msgstr "Percussions" msgid "voc" msgstr "vocal" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +msgid "quoteMe" +msgstr "citeMoi" + +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) +msgid "original" +msgstr "original" + +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) msgid "quoteTest" msgstr "testeQuote" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) msgid "french horn" msgstr "cor anglais" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) -msgid "quoteMe" -msgstr "quoteMe" - -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) -msgid "original" -msgstr "original" - -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" -msgstr "" +msgstr "particularité de la flûte basse paetzold" # ça existe ce terme en français ? # ça vient directement de l'italien comme appogiature # ça c'est ben vrai ! -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "ouvreAcciacature" # ça existe ce terme en français ? # ça vient directement de l'italien comme appogiature # ça c'est ben vrai ! -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "fermeAcciacature" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" -msgstr "Pour une application à toutes les portées, décommenter la ligne qui suit." +msgstr "" +"Pour une application à toutes les portées, décommenter la ligne qui suit." -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "\\\\override VerticalAxisGroup #'remove-first = ##t" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "Pour une application à toutes les portées, commenter la ligne qui suit" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "et décommenter la ligne du bloc \\layout." -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "Ligatures par défaut" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "puis on ajoute des règles de fin de ligature" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "Macro pour imprimer une oblique" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "rs" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "Fonction chargée d'imprimer un nombre spécifié d'obliques" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "comp" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "Beethoven, Op. 81a" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "Sonate pour piano No 26 - Das Lebewohl" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "2e mouvement - Abwesenheit" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "Mesures 31 à 34" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "\\override SpacingSpanner #'strict-grace-spacing = ##t" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) msgid "sopranonotes" msgstr "sopranonotes" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) msgid "sopranowords" msgstr "sopranoparoles" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) msgid "altonotes" msgstr "altonotes" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) msgid "altowords" msgstr "altoparoles" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) msgid "tenornotes" msgstr "tenornotes" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) msgid "tenorwords" msgstr "tenorparoles" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) msgid "bassnotes" msgstr "bassenotes" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) msgid "basswords" msgstr "basseparoles" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "couplet" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "SansHampe" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "SansTetedeNote" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "ZeroLigature" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" -msgstr "" +msgstr "porteeTabLine" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "Astuces :" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "AccordeonTab" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) msgid "notes" msgstr "notes" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "La même chose qu'un \\flageolet, un peu plus petit" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "Le second point d'orgue est ignoré" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "NR 1.5 Notes simultanées" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "L. van Beethoven, Op. 111" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "Sonate pour piano No 32" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "2e mouvement - Arietta - Adagio molto semplice e cantabile" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "mesures 108 à 118" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) msgid "trillFlat" msgstr "trilleBemol" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "MD voix 1" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "MD voix 2" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) msgid "LH staff" msgstr "portée MG" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "coupletI" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "coupletII" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "insérez les accords pour que leur nom et leur diagramme apparaisse" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "porteeMelodie" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "insérez les notes de la mélodie" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "voixMelodie" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "grattes" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "title = \\\"Le Lac des Cygnes\\\"" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "subtitle = \\\"Danse Napolitaine\\\"" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "arranger = \\\"arr. Laurence Sardain\\\"" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "footer = \\\"Mutopia-2006/12/22-896\\\"" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "trompette" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "tambourin" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "tambourinMidi" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "prima" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "hauta" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "basa" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "Utiliser Score.Stem pour une application à toutes les portées" -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "cordeNumeroExtenseur" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "violonUn" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "violonDeux" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "viola" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "piece.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "(Fichier regroupant les définitions communes à tous)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "Violonun" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "*********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "Violondeux" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "Viola" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "Cello" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "**********************************" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" -msgstr "Voici les autres fichiers que vous devrez enregistrer sur votre machine" +msgstr "" +"Voici les autres fichiers que vous devrez enregistrer sur votre machine" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "score.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" -msgstr "(Il s'agit du fhichier principal)" +msgstr "(Il s'agit du fichier principal)" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" -msgstr "\\include \\\"piece.ly\\\" %%% décommenter cette ligne si utilisation d'un fichier séparé" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "décommenter la ligne suivante en cas de fichier séparé" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" +msgstr "\\include \\\"piece.ly\\\"" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" -msgstr "{ décommenter ce bloc si chaque pupitre fait l'objet d'un fichier séparé" +msgstr "" +"{ décommenter ce bloc si chaque pupitre fait l'objet d'un fichier séparé" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "vn1.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "La partition pour le premier violon" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "vn2.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "La partition pour le second violon" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "vla.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "La partition pour l'alto" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "vcl.ly" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "La partition pour le violoncelle" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "Subdivision des ligatures à la croche" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "Subdivision des ligatures à la double-croche" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "ignore" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "NR 1.8 Texte" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "L. van Beethoven, Op. 110" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "Sonate pour piano No 31" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "mesures 1 à 7" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) msgid "RH staff" msgstr "portée MD" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" -msgstr "Création d'une commande ajoutant un encadrement sur trois côtés (haut, gauche, bas)." +msgstr "" +"Création d'une commande ajoutant un encadrement sur trois côtés (haut, " +"gauche, bas)." -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" -msgstr "Basé sur la commande box-stencil définie dans le fichier scm/stencil.scm" +msgstr "" +"Basé sur la commande box-stencil définie dans le fichier scm/stencil.scm" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" -msgstr "Notez l'utilisation de \";;\" pour mettre une ligne en commentaire dans Scheme" +msgstr "" +"Notez l'utilisation de \";;\" pour mettre une ligne en commentaire dans " +"Scheme" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "La commande markup correspondante, basée sur la définition de la" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "commande \\box du fichier scm/define-markup-commands.scm" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "Passons à la phase de test :" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "Modification définitive du style" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "Retour au style par défaut" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" -msgstr "un seul chiifre pour la prochaine métrique" +msgstr "un seul chiffre pour la prochaine métrique" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "rend les barres de mesure invisibles" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "incipitDiscantus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "incipitAltus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "incipitTenor" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "incipitBassus" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" -msgstr "Un StaffGroup au lieu d'un ChoirStaff, pour avoir les barres entre les portées" +msgstr "" +"Un StaffGroup au lieu d'un ChoirStaff, pour avoir les barres entre les " +"portées" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" -msgstr "Place les paroles de la basse en dehors du groupe, pour éviter que les barres" +msgstr "" +"Place les paroles de la basse en dehors du groupe, pour éviter que les barres" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "ne coupent le texte" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" -msgstr "les trois instructions qui suivent maintiennent les paroles entre les barres de mesure" +msgstr "" +"les trois instructions qui suivent maintiennent les paroles entre les barres " +"de mesure" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "des sauts de ligne y compris lorsqu'une note viendrait à déborder " -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "sur la mesure suivante. Cette commande est commentée pour ce court" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "musiqueNaturelle" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "La clef de sol par défaut" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "La clef de fa standard" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "Clef de baryton" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "Clef standard en musique chorale pour les ténors" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "Une clef hors du commun" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "Les modifications qui suivent ne préservent pas" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "la relation normale entre hauteur et clef :" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "Revenons sur Terre" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) msgid "Abreviations" msgstr "Abréviations" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "db" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "dub" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "dubetc" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "ub" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "udb" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "udbetc" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "fermaTa" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "accelaccel" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "ritar" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "Cordes" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "svib" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "pvib" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "mvib" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "sulp" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "norm" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "quatre" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "Décalage des notes" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "shift" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "shifta" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "shiftb" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "Soufflet" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "aniente = \\\"a niente\\\"" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "aniente" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "tupletbp" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "Flag [Tête de note - Hampe]" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "noflag" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "Fonctions" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "Instruments" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "ViolonSolo" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "Mesure 1" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "Mesure 2" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "Mesure 3" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "Mesure 4" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "Mesure 5" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "Mesure 6" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "\\featherDurations #(ly:make-moment 2 3)" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "Mesure 7" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "Mesure 8" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "Mesure 9" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "Partition" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) msgid "testnotes" msgstr "testnotes" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "affichage du grob pour chaque tête de note :" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "\\override NoteHead #'before-line-breaking = #display-grobs" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "ou bien d'une seule :" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "parallelogramme" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "tetePersonnalisee" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "teteNormale" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "end verbatim - this comment is a hack to prevent texinfo.tex" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "from choking on non-European UTF-8 subsets" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" -msgstr "Si vous modifiez ce fichier, utilisez un éditeur supportant l'unicode, tel GVIM, GEDIT ou Emacs" +msgstr "" +"Si vous modifiez ce fichier, utilisez un éditeur supportant l'unicode, tel " +"GVIM, GEDIT ou Emacs" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "Caractères cyrilliques" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "bulgare" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "hebreux" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "japonais" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "« bien à vous »" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "portugais" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) msgid "upline" msgstr "upline" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "accoladegauche" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "accoladedroite" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "abaisseParoles" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "remonteParoles" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "sauteQuatre" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "parolesA" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "parolesB" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "parolesC" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "parolesD" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "m" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "sopranoMusique" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "sopranoParoles" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" -msgstr "femmes" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" +msgstr "nécessaire pour des paroles au-dessus la portée" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" -msgstr "hommes" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" +msgstr "Nécessaire pour des paroles au-dessus de la portée" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" -msgstr "nous pourrions remplacer la ligne précédent par la suivante, puisque nous" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" +msgstr "nous pourrions remplacer la ligne précédente par la suivante, puisque nous" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "voulons aligner les paroles des altos sur leur mélodie" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoParoles" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "nous pourrions aussi remplacer la ligne précédente par la suivante" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "\\new Lyrics \\lyricsto \\\"basses\\\" \\basseParoles" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) msgid "refrain" msgstr "refrain" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) msgid "SoloNotes" msgstr "SoloNotes" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) msgid "SoloLyrics" msgstr "SoloParoles" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) msgid "SopranoNotes" msgstr "SopranoNotes" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) msgid "SopranoLyrics" msgstr "SopranoParoles" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "BasseNotes" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) msgid "BassLyrics" msgstr "BasseParoles" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" msgstr "SoloVoix" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) msgid "SopranoVoice" msgstr "SopranoVoix" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" msgstr "BasseVoix" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" msgstr "les lignes qui suivent permettent de ne pas imprimer les portées vides" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "L. van Beethoven. Symphonie No. 9 en ré mineur, op.125 ; Finale" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "mesures 216 à 236" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "Texte : F. von Schiller" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "Le numéro de la première mesure est imprimé" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "\\tempo \\\"Presto\\\"" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "\\compressFullBarRests R2.*8" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "point d'orgue rapproché de la portée" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "\\time 4/4 \\tempo \\\"Allegro assai\\\"" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "R1" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "e''4^\\f d r2" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "e4( ^\\f d2) a8([ g)]" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "Freu -- de, Freu -- de,__" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "repriseMusique" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "voltaAdLib" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "Tchaikovsky" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "Casse noisette, VII - Danse des mirlitons" diff --git a/Documentation/po/hu.po b/Documentation/po/hu.po index b4f7ffebb0..abfdfb7078 100644 --- a/Documentation/po/hu.po +++ b/Documentation/po/hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" "PO-Revision-Date: 2009-09-24 17:21+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,9 +25,8 @@ msgstr "" #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" #: postprocess_html.py:69 @@ -40,11 +39,11 @@ msgstr "Más nyelvek: %s." msgid "About automatic language selection." msgstr "Az automatikus nyelvválasztásról." -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "" @@ -130,22 +129,19 @@ msgid "post-GDP" msgstr "" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" msgstr "" -#. Documentation/changes.tely:184 (variable) -#, fuzzy -msgid "noclef" -msgstr "kulcs" - #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "Oldal teteje" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" +msgid "New features in 2.16 since 2.14" msgstr "" #. @top in Documentation/macros.itexi @@ -292,17 +288,17 @@ msgid "Long literature list" msgstr "" #. @subheading in Documentation/essay/literature.itely -#, fuzzy -msgid "Colorado" -msgstr "color (szín)" +msgid "University of Colorado Engraving music bibliography" +msgstr "" #. @subheading in Documentation/essay/literature.itely #, fuzzy -msgid "Computer notation" +msgid "Computer notation bibliography" msgstr "Egyszerű kottázás" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" +#, fuzzy +msgid "Engraving bibliography" msgstr "Kottaszedés" #. @node in Documentation/fdl.itexi @@ -324,27 +320,25 @@ msgstr "GNU szabad dokumentációs licenc" msgid "ADDENDUM: How to use this License for your documents" msgstr "FÜGGELÉK: Hogyan használható ez a licenc más dokumentumokban" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "" @@ -517,21 +511,21 @@ msgstr "" msgid "Adding articulation to notes (example)" msgstr "" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "" @@ -540,6 +534,38 @@ msgstr "" msgid "Interfaces for programmers" msgstr "" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Lilypond code blocks" +msgstr "lilypond-book sablonok" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Scheme functions" +msgstr "Scheme gyorstalpaló" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Scheme function definitions" +msgstr "Scheme gyorstalpaló" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Scheme function usage" +msgstr "Scheme gyorstalpaló" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Void scheme functions" +msgstr "Scheme gyorstalpaló" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely #, fuzzy @@ -548,8 +574,15 @@ msgstr "A zene reprezentációja" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" -msgstr "" +#, fuzzy +msgid "Music function definitions" +msgstr "A zene reprezentációja" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Music function usage" +msgstr "A zene reprezentációja" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely @@ -574,8 +607,14 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely #, fuzzy -msgid "Void functions" -msgstr "Bevezetés" +msgid "Void music functions" +msgstr "Zenei kifejezések egymásba ágyazása" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Event functions" +msgstr "Scheme gyorstalpaló" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -717,11 +756,15 @@ msgstr "A kimenet finomhangolása" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "Mac OS X" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "Windows" @@ -749,32 +792,38 @@ msgstr "Hangmagasság" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" msgstr "hangmagasság" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" msgstr "hangköz" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "skála" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "egyvonalas c" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "oktáv" @@ -782,6 +831,8 @@ msgstr "oktáv" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "módosítójel" @@ -793,36 +844,42 @@ msgstr "Ritmusérték" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" msgstr "gerenda" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "időtartam" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "egész érték" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "fél érték" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "negyed érték" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "dotted note" msgstr "pontozott hang" @@ -843,6 +900,7 @@ msgstr "Ütemmutató" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" msgstr "ütemmutató" @@ -854,12 +912,14 @@ msgstr "Verziószám" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "tempo indication" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "metronome" msgstr "" @@ -870,6 +930,7 @@ msgstr "Kulcs" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" msgstr "kulcs" @@ -920,30 +981,36 @@ msgstr "Kattintható példák" msgid "Overview of manuals" msgstr "" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "" -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) #, fuzzy msgid "cello" msgstr "color (szín)" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) #, fuzzy msgid "tripletA" msgstr "triola" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "izé" @@ -975,24 +1042,28 @@ msgstr "Módosítójelek" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "kereszt" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "bé" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "kettős kereszt" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "kettős bé" @@ -1003,18 +1074,21 @@ msgstr "Előjegyzés" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" msgstr "előjegyzés" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "dúr" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "moll" @@ -1026,18 +1100,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "feloldójel" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" msgstr "transzponálás" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "Hangnevek" @@ -1053,6 +1130,7 @@ msgstr "Átkötés" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "átkötés" @@ -1063,6 +1141,7 @@ msgstr "Kötőív" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "kötőív" @@ -1073,6 +1152,7 @@ msgstr "Frazeálóív" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "frazeáló" @@ -1083,6 +1163,7 @@ msgstr "Figyelmeztetés az átkötés és kötőív viszonyával kapcsolatban" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "artikuláció" @@ -1102,6 +1183,7 @@ msgstr "Ujjrend" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" msgstr "ujjrend" @@ -1113,19 +1195,21 @@ msgstr "Dinamika" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "dinamika" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" msgstr "crescendo" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" msgstr "decrescendo" @@ -1155,19 +1239,21 @@ msgid "anacrusis" msgstr "felütés" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "n-olák" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "ritmusérték" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" msgstr "triola" @@ -1178,18 +1264,21 @@ msgstr "Előkék" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "előkék" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "acciaccatura" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "appoggiatura" @@ -1214,6 +1303,7 @@ msgstr "Egyidejű zenei kifejezések: több kottasor" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "polifónia" @@ -1234,6 +1324,7 @@ msgstr "Kottasor-csoport" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "kapocs" @@ -1248,6 +1339,8 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "system" msgstr "" @@ -1259,6 +1352,7 @@ msgstr "Hangok akkordba foglalása" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "akkord" @@ -1280,6 +1374,7 @@ msgstr "Egyszerű dalok kottázása" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "dalszöveg" @@ -1291,12 +1386,14 @@ msgstr "Dalszöveg igazítása a dallamhoz" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "melizma" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "szótagjelző vonal" @@ -1332,15 +1429,19 @@ msgstr "Az első lecke után" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) #, fuzzy msgid "singer" msgstr "ujjrend" #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) #, fuzzy msgid "vocal" msgstr "skála" @@ -1349,9 +1450,11 @@ msgstr "skála" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) #, fuzzy msgid "piano" msgstr "Szólózongora" @@ -1359,626 +1462,774 @@ msgstr "Szólózongora" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) #, fuzzy msgid "lower" msgstr "color (szín)" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) #, fuzzy msgid "text" msgstr "Következő:" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) #, fuzzy msgid "main" msgstr "moll" -#. Documentation/learning/fundamental.itely:629 (comment) +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "" -#. Documentation/learning/fundamental.itely:684 (comment) +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) #, fuzzy msgid "Voice 1 continues" msgstr "A szólamok zenét tartalmaznak" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) #, fuzzy msgid "Voice 2 continues" msgstr "A szólamok zenét tartalmaznak" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" msgstr "" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) #, fuzzy msgid "VerseFour" msgstr "Verziószám" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) #, fuzzy msgid "Sop" msgstr "Oldal teteje" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) #, fuzzy msgid "Tenor" msgstr "Texinfo" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) #, fuzzy msgid "start of single compound music expression" msgstr "A kotta egy összetett zenei kifejezés" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) #, fuzzy msgid "end of single compound music expression" msgstr "A kotta egy összetett zenei kifejezés" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "" -#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/learning/fundamental.itely:2926 (comment) #, fuzzy msgid "set key and time signature" msgstr "ütemmutató" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) #, fuzzy msgid "end PianoStaff context" msgstr "A kívánt kontextus megkeresése" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) #, fuzzy msgid "end Score context" msgstr "A kívánt kontextus megkeresése" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) #, fuzzy msgid "hornNotes" msgstr "Lábjegyzet" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "" @@ -2011,6 +2262,7 @@ msgstr "Zenei kifejezések egymásba ágyazása" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "ossia" @@ -2094,6 +2346,7 @@ msgstr "Egyetlenegy kontextus módosítása" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" msgstr "hangterjedelem" @@ -2131,267 +2384,372 @@ msgstr "Kevesebb gépelés változókkal és függvényekkel" msgid "Scores and parts" msgstr "Partitúra és szólamkották" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) #, fuzzy msgid "and turn on textLengthOn" msgstr "A \\textLengthOn parancs" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) #, fuzzy msgid "sesquisharp" msgstr "kereszt" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) msgid "continuation of main voice" msgstr "" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +msgid "Move the c2 out of the main note column" msgstr "" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" +msgstr "" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" msgstr "" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) #, fuzzy msgid "normal" msgstr "feloldójel" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) #, fuzzy msgid "Soprano" msgstr "Szólózongora" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "" @@ -2618,11 +2976,6 @@ msgstr "Stíluslapok" msgid "Other sources of information" msgstr "További információforrások" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "A lassabban feldolgozható finomhangolások elkerülése" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2757,10 +3110,10 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "" @@ -2815,8 +3168,8 @@ msgstr "időtartam" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "" @@ -2866,9 +3219,9 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "" @@ -2900,11 +3253,11 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "" @@ -2976,7 +3329,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "" @@ -3464,6 +3817,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "" @@ -3787,8 +4141,8 @@ msgstr "transparent (átlátszóság)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "" @@ -3924,8 +4278,8 @@ msgstr "triola" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "" @@ -4057,7 +4411,7 @@ msgstr "Szöveges utasítások" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "" @@ -4145,7 +4499,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) #, fuzzy msgid "tenor" msgstr "moll" @@ -4386,35 +4740,67 @@ msgstr "A zene reprezentációja" msgid "Specialist notation" msgstr "Egyszerű kottázás" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "" + +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" msgstr "" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:1606 (variable) #, fuzzy msgid "allLyrics" msgstr "dalszöveg" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "" +#. Documentation/notation/input.itely:1792 (variable) +#, fuzzy +msgid "test" +msgstr "Előkék" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4460,17 +4846,68 @@ msgstr "Átkötés és kötőív" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely #, fuzzy -msgid "Creating titles" +msgid "Creating titles headers and footers" msgstr "Kontextusok létrehozása" #. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Title blocks explained" +msgstr "A kontextus fogalma" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely msgid "Custom headers footers and titles" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" +#, fuzzy +msgid "Creating footnotes" +msgstr "Kontextusok létrehozása" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Footnotes overview" +msgstr "Lábjegyzet" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Manual footnotes" +msgstr "Lábjegyzet" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Reference to page numbers" @@ -4510,14 +4947,29 @@ msgid "Using tags" msgstr "" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -#, fuzzy -msgid "Text encoding" -msgstr "szótagjelző vonal" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" +msgid "Special characters" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Text encoding" +msgstr "szótagjelző vonal" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" msgstr "" #. @node in Documentation/notation/input.itely @@ -4617,63 +5069,91 @@ msgstr "" msgid "Percussion in MIDI" msgstr "" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "The Articulate script" +msgstr "Artikuláció" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +#, fuzzy +msgid "Extracting musical information" +msgstr "A zene reprezentációja" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Displaying scheme music expressions" +msgstr "Zenei kifejezések egymásba ágyazása" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" msgstr "" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" msgstr "" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." msgstr "" -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" msgstr "" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" msgstr "" -#. Documentation/notation/spacing.itely:2053 (comment) -msgid "staff and the next is determined by 'space." +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." msgstr "" -#. Documentation/notation/spacing.itely:2056 (comment) +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" msgstr "" -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "" -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "" -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr "" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "" @@ -4971,161 +5451,170 @@ msgstr "" msgid "Changing spacing" msgstr "Egyetlenegy kontextus módosítása" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) #, fuzzy msgid "accompaniment" msgstr "módosítójel" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) #, fuzzy msgid "words" msgstr "akkord" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2017 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2023 (comment) +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" msgstr "" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "" -#. Documentation/notation/changing-defaults.itely:3449 (comment) +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3456 (comment) +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "" -#. Documentation/notation/changing-defaults.itely:3476 (comment) +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3489 (comment) +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "" -#. Documentation/notation/changing-defaults.itely:3504 (comment) +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3516 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "" @@ -5187,8 +5676,8 @@ msgstr "A kívánt kontextus megkeresése" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely #, fuzzy -msgid "Aligning contexts" -msgstr "A kívánt kontextus megkeresése" +msgid "Context layout order" +msgstr "Kontextusok és ábrázolók" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely @@ -5285,12 +5774,6 @@ msgstr "" msgid "Direction and placement" msgstr "" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -#, fuzzy -msgid "Context layout order" -msgstr "Kontextusok és ábrázolók" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely #, fuzzy @@ -5478,6 +5961,12 @@ msgstr "" msgid "Common chord modifiers" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Predefined string tunings" +msgstr "Előre definiált parancsok" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely #, fuzzy @@ -5603,6 +6092,12 @@ msgstr "" msgid "Accordion glyphs" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Tie glyphs" +msgstr "Szünetek" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5655,6 +6150,11 @@ msgstr "Előre definiált parancsok" msgid "Text markup list commands" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely #, fuzzy @@ -5800,15 +6300,14 @@ msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -#, fuzzy -msgid "Predefined type predicates" -msgstr "Előre definiált parancsok" +msgid "Context modification identifiers" +msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely #, fuzzy -msgid "Scheme functions" -msgstr "Scheme gyorstalpaló" +msgid "Predefined type predicates" +msgstr "Előre definiált parancsok" #. @node in Documentation/notation/cheatsheet.itely #. @appendix in Documentation/notation/cheatsheet.itely @@ -5817,9 +6316,15 @@ msgid "Cheat sheet" msgstr "Stíluslapok" #. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "" + #. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + #. @unnumberedsec in Documentation/snippets.tely -msgid "\\\\TEXT\\\\" +msgid "\\\\\\\\TEXT\\\\\\\\" msgstr "" #. @node in Documentation/usage/running.itely @@ -6108,6 +6613,18 @@ msgstr "" msgid "Point and click" msgstr "Hangok és dalszöveg" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +#, fuzzy +msgid "Enabling point and click" +msgstr "Hangok és dalszöveg" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +#, fuzzy +msgid "Selective point-and-click" +msgstr "Hangok és dalszöveg" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -6236,1339 +6753,2201 @@ msgstr "" msgid "Make and Makefiles" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) -msgid "discant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) -msgid "dot" +#. @top in Documentation/cs/macros.itexi +msgid "LilyPond -- \\\\TITLE\\\\" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) -msgid "16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) -msgid "accBasson" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) -msgid "een korig 8 en 16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) -msgid "accBandon" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) -msgid "accVCello" +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) -msgid "4-8-16 voets register" +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) -msgid "accHarmon" +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) -#, fuzzy -msgid "accTrombon" -msgstr "Dzsesszegyüttes" - -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) -msgid "eenkorig 4 en 16 voets register" +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) -msgid "accOrgan" +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) -msgid "accMaster" +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) -msgid "accAccord" +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) -msgid "accMusette" +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) -msgid "accCeleste" +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) -msgid "accOboe" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) -msgid "accClarin" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) -msgid "accPiccolo" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) -msgid "accViolin" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) -msgid "continuo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) -msgid "bassStaff" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) -msgid "drh" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) -msgid "drl" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) -msgid "timb" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) -msgid "two" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) -msgid "threeTwo" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) -msgid "threeFour" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) -msgid "splitStaffBarLineMarkup" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vše dohromady" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) -msgid "splitStaffBarLine" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) -msgid "cueWhile" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) -msgid "flute" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řešení chyb" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) -msgid "clarinet" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) -#, fuzzy -msgid "pianoRH" -msgstr "Szólózongora" - -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) -#, fuzzy -msgid "pianoLH" -msgstr "Szólózongora" - -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) -msgid "first, define a variable to hold the formatted date:" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) -msgid "date" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Vypuštěný materiál" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) -msgid "d-%m-%Y\\\" (localtime (current-time)))" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) -msgid "use it in the title block:" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) -msgid "and use it in a \\markup block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" msgstr "" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) -msgid "voiceFive" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" msgstr "" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) -#, fuzzy -msgid "graceNotes" -msgstr "előkék" - -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) -msgid "Default layout:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přezkoušení taktů" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) -msgid "Reducing the minimum space below the staff and above the lyrics:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) -msgid "Increase the size of the bar number by 2" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) -msgid "Print a bar number every second measure" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) -msgid "Center-align bar numbers" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) -msgid "Left-align bar numbers" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) -msgid "the RehearsalMark will be centered above the Clef" -msgstr "" +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Ligatury" +msgstr "előjegyzés" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) -msgid "the RehearsalMark will be centered above the TimeSignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) -msgid "the RehearsalMark will be centered above the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) -msgid "" -"the RehearsalMark will be aligned with the left edge of the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) -msgid "" -"the RehearsalMark will be aligned with the right edge of the KeySignature" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) -msgid "and then shifted right by one unit." +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) -msgid "upperStaff" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) -msgid "\\break % 1 (8*1)" -msgstr "" +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Dynamika" +msgstr "Dinamika" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) -msgid "\\break %2 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) -msgid "\\break % 3 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) -msgid "\\break % 4 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) -msgid "\\break % 5 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) -msgid "\\break % 6 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) -msgid "\\break % 7 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) -msgid "\\break % 8 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) -msgid "\\break % 12 (32*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) -msgid "lowerStaff" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) -msgid "\\break % 2 (16*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) -msgid "\\break % 4 (16*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) -msgid "\\break % 9 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) -msgid "lig" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) -msgid "\\break % 11 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) -msgid "\\break % 12 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" msgstr "" -#. Documentation/snippets/ancient-headword.ly:34 (context id) -#, fuzzy -msgid "cantus" -msgstr "hangterjedelem" - -#. Documentation/snippets/ancient-headword.ly:36 (comment) -msgid "Verse 1 — Salve, Regína" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" msgstr "" -#. Documentation/snippets/ancient-headword.ly:47 (comment) -msgid "Verse 2 — Vita, dulcédo" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" msgstr "" -#. Documentation/snippets/ancient-headword.ly:48 (comment) -msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" msgstr "" -#. Documentation/snippets/ancient-headword.ly:49 (comment) -msgid "\\divisioMinima" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" msgstr "" -#. Documentation/snippets/ancient-headword.ly:50 (comment) -msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:51 (comment) -msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" msgstr "" -#. Documentation/snippets/ancient-headword.ly:52 (comment) -msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:53 (comment) -msgid "\\divisioMaior" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Absolutní označení not" msgstr "" -#. Documentation/snippets/ancient-headword.ly:54 (comment) -msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" msgstr "" -#. Documentation/snippets/ancient-headword.ly:55 (comment) -msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" -msgstr "" +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +#, fuzzy +msgid "set time signature and key" +msgstr "ütemmutató" -#. Documentation/snippets/ancient-headword.ly:56 (comment) -msgid "\\finalis" +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:57 (comment) -msgid "Verse 3 — Ad te clamámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:66 (comment) -msgid "Verse 4 — Ad te suspirámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:79 (comment) -msgid "Verse 5 — Eia ergo, Advocáta nostra" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" msgstr "" -#. Documentation/snippets/ancient-headword.ly:95 (comment) -msgid "Verse 6 — Et Jesum" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" msgstr "" -#. Documentation/snippets/ancient-headword.ly:109 (comment) -msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" msgstr "" -#. Documentation/snippets/ancient-headword.ly:127 (comment) -msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) -msgid "chant" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) -msgid "verba" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) -msgid "incipit" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Notenkolumnen" +msgstr "Hangoszlopok" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) -msgid "turn off bar lines" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) -msgid "need this extra \\skip such that clef change comes" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) -msgid "after bar line" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) -msgid "turn bar lines on again" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" +msgstr "Kontextusok tulajdonságainak beállítása a @code{\\with} paranccsal" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" +msgstr "Kontextusok tulajdonságainak beállítása a @code{\\context} paranccsal" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) -msgid "occur in the first bar after the incipit. Dto. for forceClef." +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) -msgid "Therefore, we need an extra \\skip." +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Soprán a violoncello" +msgstr "Szoprán és cselló" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" +msgstr "" + +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Den Kontext finden" +msgstr "Kontextusok létrehozása" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "break-visibility (unsichtbar machen)" +msgstr "break-visibility (láthatóság sortörések körül)" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "color (Farbe)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Automatické chování" +msgstr "Automatikus viselkedés" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Fingersatz" +msgstr "Ujjrend" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Dynamik" +msgstr "Dinamika" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "extra-offset (Genaues Positionieren)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Pouze noty" +msgstr "egész érték" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s příslušnými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Orchestr, sbor a klavír" +msgstr "Zenekar, kórus és zongora" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +#, fuzzy +msgid "accTrombon" +msgstr "Dzsesszegyüttes" + +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) +msgid "accOboe" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) +msgid "accClarin" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) +msgid "accPiccolo" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) +msgid "accViolin" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) +msgid "continuo" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) +msgid "bassStaff" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +msgid "drh" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) +msgid "drl" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) +msgid "timb" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) +msgid "two" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) +msgid "threeTwo" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) +msgid "threeFour" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) +msgid "splitStaffBarLineMarkup" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) +msgid "splitStaffBarLine" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) +msgid "cueWhile" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) +msgid "flute" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) +msgid "clarinet" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) +#, fuzzy +msgid "pianoRH" +msgstr "Szólózongora" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) +#, fuzzy +msgid "pianoLH" +msgstr "Szólózongora" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) +msgid "first, define a variable to hold the formatted date:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) +msgid "date" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +msgid "d-%m-%Y\\\" (localtime (current-time)))" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) +msgid "use it in the title block:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) +msgid "and use it in a \\markup block:" +msgstr "" + +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) +msgid "voiceFive" +msgstr "" + +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) +#, fuzzy +msgid "graceNotes" +msgstr "előkék" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) +msgid "Default layout:" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) +msgid "Reducing the minimum space below the staff and above the lyrics:" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +msgid "Increase the size of the bar number by 2" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) +msgid "Print a bar number every second measure" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +msgid "Center-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) +msgid "Left-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) +msgid "the RehearsalMark will be centered above the Clef" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) +msgid "the RehearsalMark will be centered above the TimeSignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) +msgid "the RehearsalMark will be centered above the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) +msgid "" +"the RehearsalMark will be aligned with the left edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) +msgid "" +"the RehearsalMark will be aligned with the right edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +msgid "and then shifted right by one unit." +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) +msgid "upperStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:52 (comment) +msgid "\\break % 1 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:63 (comment) +msgid "\\break %2 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:75 (comment) +msgid "\\break % 3 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:90 (comment) +msgid "\\break % 4 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) +msgid "\\break % 5 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) +msgid "\\break % 6 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) +msgid "\\break % 7 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:129 (comment) +msgid "\\break % 8 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:132 (comment) +msgid "\\break % 12 (32*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) +msgid "lowerStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:147 (comment) +msgid "\\break % 2 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:152 (comment) +msgid "\\break % 4 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:191 (comment) +msgid "\\break % 9 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:193 (comment) +msgid "lig" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:197 (comment) +msgid "\\break % 11 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:208 (comment) +msgid "\\break % 12 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:29 (context id) +#, fuzzy +msgid "cantus" +msgstr "hangterjedelem" + +#. Documentation/snippets/ancient-headword.ly:31 (comment) +msgid "Verse 1 — Salve, Regína" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:42 (comment) +msgid "Verse 2 — Vita, dulcédo" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:43 (comment) +msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:44 (comment) +msgid "\\divisioMinima" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:45 (comment) +msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:46 (comment) +msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:47 (comment) +msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:48 (comment) +msgid "\\divisioMaior" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:49 (comment) +msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:50 (comment) +msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:51 (comment) +msgid "\\finalis" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:52 (comment) +msgid "Verse 3 — Ad te clamámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:61 (comment) +msgid "Verse 4 — Ad te suspirámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:74 (comment) +msgid "Verse 5 — Eia ergo, Advocáta nostra" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:90 (comment) +msgid "Verse 6 — Et Jesum" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:104 (comment) +msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:122 (comment) +msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) +msgid "chant" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) +msgid "verba" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) +msgid "incipit" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +#, fuzzy +msgid "Set tight spacing" +msgstr "Egyetlenegy kontextus módosítása" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) +msgid "turn off bar lines" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) +msgid "need this extra \\skip such that clef change comes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) +msgid "after bar line" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) +msgid "turn bar lines on again" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) +msgid "occur in the first bar after the incipit. Dto. for forceClef." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) +msgid "Therefore, we need an extra \\skip." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) #, fuzzy msgid "the actual music" msgstr "A szólamok zenét tartalmaznak" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) msgid "let finis bar go through all staves" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) msgid "finis bar" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "discantusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "two bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "eight bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) msgid "one bar" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) msgid "discantusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) msgid "altusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) msgid "seven bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) #, fuzzy msgid "altusLyrics" msgstr "dalszöveg" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) #, fuzzy msgid "tenorNotes" msgstr "Lábjegyzet" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) msgid "four bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) msgid "tenorLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) msgid "bassusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) msgid "bassusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) msgid "choirStaff" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) msgid "no bars in staves" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) msgid "incipit should not start with a start delimiter" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) #, fuzzy msgid "no slurs" msgstr "kötőív" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) msgid "tick" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) msgid "Use markup to center the chant on the page" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) msgid "centered" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) #, fuzzy msgid "End score" msgstr "skála" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) msgid "End markup" msgstr "" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) msgid "fragment" msgstr "" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) #, fuzzy msgid "slurNotes" msgstr "Lábjegyzet" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) #, fuzzy msgid "Default behavior" msgstr "Automatikus viselkedés" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) msgid "Corrected to avoid collisions" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" msgstr "" #. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) msgid "Span -----------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) #, fuzzy msgid "Modern notation:" msgstr "Egyszerű kottázás" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" msgstr "" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) #, fuzzy msgid "Default setting" msgstr "Automatikus viselkedés" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) #, fuzzy msgid "sustainNotes" msgstr "Lábjegyzet" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) #, fuzzy msgid "stemOn" msgstr "stencil (láthatóság)" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +#, fuzzy +msgid "myChords" +msgstr "akkord" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +#, fuzzy +msgid "myMusic" +msgstr "akkord" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -#, fuzzy -msgid "myChords" -msgstr "akkord" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) #, fuzzy msgid "\\break" msgstr "gerenda" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) #, fuzzy msgid "sop" msgstr "Oldal teteje" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "" -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "" -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) msgid "hide text span" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) msgid "show glissando" msgstr "" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +#, fuzzy +msgid "ten" +msgstr "moll" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +#, fuzzy +msgid "fifty" +msgstr "hangmagasság" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +#, fuzzy +msgid "finger" +msgstr "ujjrend" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) msgid "parenF" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) msgid "the hidden measure and bar line" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" +msgstr "" + +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) #, fuzzy msgid "mel" msgstr "melizma" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) #, fuzzy msgid "notes." msgstr "Lábjegyzet" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) #, fuzzy msgid "Ambitus engraving logics" msgstr "Automatikus kottaszedés" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) #, fuzzy msgid "dMajor" msgstr "dúr" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) #, fuzzy msgid "gMajor" msgstr "dúr" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +#, fuzzy +msgid "\\override FretBoard" +msgstr "Előre definiált parancsok" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) #, fuzzy msgid "mycresc" msgstr "crescendo" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) #, fuzzy msgid "mydecresc" msgstr "decrescendo" @@ -7581,1632 +8960,1727 @@ msgstr "" msgid "crpoco" msgstr "" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -#, fuzzy -msgid "cresc" -msgstr "crescendo" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -#, fuzzy -msgid "decresc" -msgstr "decrescendo" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) #, fuzzy msgid "piano staves" msgstr "Zongorasablonok" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) #, fuzzy msgid "extendOn" msgstr "szótagjelző vonal" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) #, fuzzy msgid "pUp" msgstr "Fel:" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) #, fuzzy msgid "iUp" msgstr "Fel:" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) #, fuzzy msgid "mUp" msgstr "Fel:" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) #, fuzzy msgid "aUp" msgstr "Fel:" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) #, fuzzy msgid "xUp" msgstr "Fel:" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) #, fuzzy msgid "tupletOff" msgstr "n-olák" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) #, fuzzy msgid "tupletsOff" msgstr "n-olák" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) #, fuzzy msgid "tupletsOn" msgstr "n-olák" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) #, fuzzy msgid "slap" msgstr "kereszt" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) #, fuzzy msgid "example" msgstr "Sablonok" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" -msgstr "" - -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) #, fuzzy msgid "lyr" msgstr "dalszöveg" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) #, fuzzy msgid "fingering orientations" msgstr "Egymást átfedő jelek javítása" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) #, fuzzy msgid "ssnor" msgstr "moll" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) #, fuzzy msgid "rit" msgstr "triola" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) #, fuzzy msgid "dimin" msgstr "időtartam" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +#, fuzzy +msgid "frettedStrings" +msgstr "Dalok" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "" -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) #, fuzzy msgid "sMarkup" msgstr "kereszt" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:61 (variable) #, fuzzy msgid "Timeline" msgstr "Ütemmutató" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:93 (comment) #, fuzzy msgid "Start score" msgstr "skála" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) #, fuzzy msgid "End pianostaff" msgstr "Egy kottasor" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" msgstr "" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" msgstr "" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" msgstr "" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" msgstr "" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) #, fuzzy msgid "two measures" msgstr "Felütés" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) #, fuzzy msgid "sl" msgstr "kötőív" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) #, fuzzy msgid "trpt" msgstr "triola" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) #, fuzzy msgid "trumpet" msgstr "triola" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) #, fuzzy msgid "horns" msgstr "akkord" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) #, fuzzy msgid "barichords" msgstr "akkord" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) #, fuzzy msgid "chords" msgstr "akkord" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) -msgid "M. Ravel, Sonatine (1905)" +#. Documentation/snippets/keyboard-headword.ly:27 (comment) +msgid "M. Ravel, Sonatine (1905)" +msgstr "" + +#. Documentation/snippets/keyboard-headword.ly:28 (comment) +msgid "First movement" +msgstr "" + +#. Documentation/snippets/keyboard-headword.ly:37 (variable) +msgid "fermataLong" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) -msgid "First movement" +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) -msgid "fermataLong" +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" msgstr "" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +#, fuzzy +msgid "eighth harmonic" +msgstr "fél érték" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) #, fuzzy msgid "space for instrumentName" msgstr "transzponálás" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) #, fuzzy msgid "hornMusic" msgstr "akkord" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) #, fuzzy msgid "altoILyrics" msgstr "dalszöveg" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) #, fuzzy msgid "altoIILyrics" msgstr "dalszöveg" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" msgstr "" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr "" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) #, fuzzy msgid "text line-aligned" msgstr "A kontextus fogalma" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) #, fuzzy msgid "text center-aligned" msgstr "szótagjelző vonal" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "" @@ -9215,1178 +10689,1232 @@ msgstr "" msgid "voc" msgstr "skála" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) -msgid "quoteTest" -msgstr "" - -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) -msgid "french horn" -msgstr "" - -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) msgid "quoteMe" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) #, fuzzy msgid "original" msgstr "Első lecke" -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" +msgstr "" + +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" +msgstr "" + +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) #, fuzzy msgid "startAcciaccaturaMusic" msgstr "acciaccatura" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) #, fuzzy msgid "stopAcciaccaturaMusic" msgstr "acciaccatura" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) #, fuzzy msgid "rs" msgstr "szünet" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) #, fuzzy msgid "sopranonotes" msgstr "Lábjegyzet" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) #, fuzzy msgid "sopranowords" msgstr "Szólózongora" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) #, fuzzy msgid "altonotes" msgstr "Lábjegyzet" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) #, fuzzy msgid "altowords" msgstr "akkord" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) #, fuzzy msgid "tenornotes" msgstr "Lábjegyzet" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) #, fuzzy msgid "tenorwords" msgstr "Lábjegyzet" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) #, fuzzy msgid "bassnotes" msgstr "Lábjegyzet" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) #, fuzzy msgid "basswords" msgstr "akkord" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) #, fuzzy msgid "Tips:" msgstr "Átkötés" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) #, fuzzy msgid "notes" msgstr "Lábjegyzet" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) #, fuzzy msgid "trillFlat" msgstr "triola" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) #, fuzzy msgid "LH staff" msgstr "Egy kottasor" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) #, fuzzy msgid "trompette" msgstr "triola" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "" -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) #, fuzzy msgid "ignore" msgstr "moll" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) #, fuzzy msgid "RH staff" msgstr "Egy kottasor" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) #, fuzzy msgid "naturalizeMusic" msgstr "feloldójel" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) #, fuzzy msgid "Abreviations" msgstr "Artikuláció" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) #, fuzzy msgid "accel" msgstr "módosítójel" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) #, fuzzy msgid "Strings" msgstr "Dalok" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) #, fuzzy msgid "norm" msgstr "moll" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) #, fuzzy msgid "quatre" msgstr "negyed érték" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) #, fuzzy msgid "tupletbp" msgstr "n-olák" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) #, fuzzy msgid "noflag" msgstr "bé" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) #, fuzzy msgid "Score" msgstr "akkord" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) #, fuzzy msgid "testnotes" msgstr "Előkék" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) #, fuzzy msgid "upline" msgstr "n-olák" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) #, fuzzy msgid "leftbrace" msgstr "kapocs" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) #, fuzzy msgid "rightbrace" msgstr "kapocs" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) #, fuzzy msgid "dropLyrics" msgstr "dalszöveg" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) #, fuzzy msgid "lyricsA" msgstr "dalszöveg" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) #, fuzzy msgid "lyricsB" msgstr "dalszöveg" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) #, fuzzy msgid "lyricsC" msgstr "dalszöveg" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) #, fuzzy msgid "lyricsD" msgstr "dalszöveg" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) #, fuzzy msgid "refrain" msgstr "Kontextusok létrehozása" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) #, fuzzy msgid "SoloNotes" msgstr "Lábjegyzet" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) #, fuzzy msgid "SoloLyrics" msgstr "dalszöveg" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) #, fuzzy msgid "SopranoNotes" msgstr "Lábjegyzet" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) #, fuzzy msgid "SopranoLyrics" msgstr "Szólózongora" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) #, fuzzy msgid "BassLyrics" msgstr "dalszöveg" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) #, fuzzy msgid "SopranoVoice" msgstr "Szólózongora" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" msgstr "" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "" @@ -10409,12 +11937,38 @@ msgid "Table of Contents" msgstr "Tartalomjegyzék" #, fuzzy -#~ msgid "refrainnotesB" -#~ msgstr "Kontextusok létrehozása" +#~ msgid "noclef" +#~ msgstr "kulcs" + +#, fuzzy +#~ msgid "Colorado" +#~ msgstr "color (szín)" + +#~ msgid "Engraving" +#~ msgstr "Kottaszedés" + +#, fuzzy +#~ msgid "Void functions" +#~ msgstr "Bevezetés" + +#~ msgid "Avoiding tweaks with slower processing" +#~ msgstr "A lassabban feldolgozható finomhangolások elkerülése" #, fuzzy -#~ msgid "set time signature and key" -#~ msgstr "ütemmutató" +#~ msgid "Aligning contexts" +#~ msgstr "A kívánt kontextus megkeresése" + +#, fuzzy +#~ msgid "cresc" +#~ msgstr "crescendo" + +#, fuzzy +#~ msgid "decresc" +#~ msgstr "decrescendo" + +#, fuzzy +#~ msgid "refrainnotesB" +#~ msgstr "Kontextusok létrehozása" #, fuzzy #~ msgid "the direction." diff --git a/Documentation/po/it.po b/Documentation/po/it.po index e5d4241e1c..1d9e2464fb 100644 --- a/Documentation/po/it.po +++ b/Documentation/po/it.po @@ -1,5 +1,5 @@ # translation of LilyPond documentation to Italian -# Copyright (C) 2009--2011 Han-Wen Nienhuys, Jan Nieuwenhuizen +# Copyright (C) 2009--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen # This file is distributed under the same license as the lilypond package. # # Federico Bruni , 2009. @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: it\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" "PO-Revision-Date: 2009-11-04 HO:MI+ZONE\n" "Last-Translator: Federico Bruni \n" "Language-Team: Italiano\n" @@ -26,9 +26,8 @@ msgstr "" #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" #: postprocess_html.py:69 @@ -41,11 +40,11 @@ msgstr "" msgid "About automatic language selection." msgstr "" -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "" @@ -129,21 +128,19 @@ msgid "post-GDP" msgstr "" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" -msgstr "" - -#. Documentation/changes.tely:184 (variable) -msgid "noclef" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" msgstr "" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" +msgid "New features in 2.16 since 2.14" msgstr "" #. @top in Documentation/macros.itexi @@ -285,15 +282,15 @@ msgid "Long literature list" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Colorado" +msgid "University of Colorado Engraving music bibliography" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Computer notation" +msgid "Computer notation bibliography" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" +msgid "Engraving bibliography" msgstr "" #. @node in Documentation/fdl.itexi @@ -315,27 +312,25 @@ msgstr "" msgid "ADDENDUM: How to use this License for your documents" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "" @@ -496,21 +491,21 @@ msgstr "" msgid "Adding articulation to notes (example)" msgstr "" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "" @@ -519,6 +514,33 @@ msgstr "" msgid "Interfaces for programmers" msgstr "" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Lilypond code blocks" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Void scheme functions" +msgstr "" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -526,7 +548,12 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" +msgid "Music function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function usage" msgstr "" #. @node in Documentation/extending/programming-interface.itely @@ -551,7 +578,12 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" +msgid "Void music functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Event functions" msgstr "" #. @node in Documentation/extending/programming-interface.itely @@ -687,11 +719,15 @@ msgstr "" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "" @@ -718,32 +754,38 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "" @@ -751,6 +793,8 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "" @@ -762,36 +806,42 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely #, fuzzy msgid "dotted note" msgstr "Note" @@ -813,6 +863,7 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" msgstr "" @@ -823,12 +874,14 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "tempo indication" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "metronome" msgstr "" @@ -839,6 +892,7 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" msgstr "" @@ -886,28 +940,34 @@ msgstr "" msgid "Overview of manuals" msgstr "" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "" -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "" @@ -938,24 +998,28 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "" @@ -966,18 +1030,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "" @@ -988,18 +1055,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "" @@ -1015,6 +1085,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "" @@ -1025,6 +1096,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "" @@ -1035,6 +1107,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "" @@ -1045,6 +1118,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "" @@ -1064,6 +1138,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" msgstr "" @@ -1075,19 +1150,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" msgstr "" @@ -1117,19 +1194,21 @@ msgid "anacrusis" msgstr "" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" msgstr "" @@ -1140,18 +1219,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "" @@ -1176,6 +1258,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "" @@ -1196,6 +1279,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "" @@ -1210,6 +1294,8 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "system" msgstr "" @@ -1221,6 +1307,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "" @@ -1242,6 +1329,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "" @@ -1253,12 +1341,14 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "" @@ -1294,14 +1384,18 @@ msgstr "" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "" #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) msgid "vocal" msgstr "" @@ -1309,623 +1403,773 @@ msgstr "" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) #, fuzzy msgid "text" msgstr "Avanti:" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "" -#. Documentation/learning/fundamental.itely:629 (comment) +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "" -#. Documentation/learning/fundamental.itely:684 (comment) +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" msgstr "" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "" -#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/learning/fundamental.itely:2926 (comment) msgid "set key and time signature" msgstr "" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) #, fuzzy msgid "hornNotes" msgstr "Note" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "" @@ -1958,6 +2202,7 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "" @@ -2039,6 +2284,7 @@ msgstr "" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" msgstr "" @@ -2076,263 +2322,368 @@ msgstr "" msgid "Scores and parts" msgstr "" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) msgid "sesquisharp" msgstr "" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) msgid "continuation of main voice" msgstr "" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +msgid "Move the c2 out of the main note column" msgstr "" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" +msgstr "" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" msgstr "" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "" @@ -2557,11 +2908,6 @@ msgstr "" msgid "Other sources of information" msgstr "" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2695,10 +3041,10 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "" @@ -2749,8 +3095,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "" @@ -2796,9 +3142,9 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "" @@ -2829,11 +3175,11 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "" @@ -2899,7 +3245,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "" @@ -3355,6 +3701,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "" @@ -3651,8 +3998,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "" @@ -3778,8 +4125,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "" @@ -3905,7 +4252,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "" @@ -3991,7 +4338,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) msgid "tenor" msgstr "" @@ -4215,34 +4562,66 @@ msgstr "" msgid "Specialist notation" msgstr "" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" msgstr "" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "" + +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "" + +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "" +#. Documentation/notation/input.itely:1792 (variable) +#, fuzzy +msgid "test" +msgstr "Note" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4285,17 +4664,67 @@ msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" +msgid "Creating titles headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" msgstr "" #. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely msgid "Custom headers footers and titles" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" +#, fuzzy +msgid "Creating footnotes" +msgstr "Note" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Footnotes overview" +msgstr "Note" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Manual footnotes" +msgstr "Note" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Reference to page numbers" @@ -4332,14 +4761,29 @@ msgstr "" msgid "Using tags" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" msgstr "" #. @node in Documentation/notation/input.itely @@ -4434,63 +4878,88 @@ msgstr "" msgid "Percussion in MIDI" msgstr "" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" msgstr "" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" msgstr "" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" msgstr "" -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" msgstr "" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" msgstr "" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." msgstr "" -#. Documentation/notation/spacing.itely:2053 (comment) -msgid "staff and the next is determined by 'space." +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "" -#. Documentation/notation/spacing.itely:2056 (comment) +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" +msgstr "" + +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" +msgstr "" + +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." +msgstr "" + +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" msgstr "" -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "" -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "" -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr "" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "" @@ -4779,159 +5248,168 @@ msgstr "" msgid "Changing spacing" msgstr "" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) msgid "accompaniment" msgstr "" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) msgid "words" msgstr "" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2017 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2023 (comment) +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" msgstr "" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "" -#. Documentation/notation/changing-defaults.itely:3449 (comment) +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3456 (comment) +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "" -#. Documentation/notation/changing-defaults.itely:3476 (comment) +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3489 (comment) +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "" -#. Documentation/notation/changing-defaults.itely:3504 (comment) +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3516 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "" @@ -4987,7 +5465,7 @@ msgstr "" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" +msgid "Context layout order" msgstr "" #. @node in Documentation/notation/changing-defaults.itely @@ -5077,11 +5555,6 @@ msgstr "" msgid "Direction and placement" msgstr "" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5255,6 +5728,11 @@ msgstr "" msgid "Common chord modifiers" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined string tunings" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" @@ -5375,6 +5853,11 @@ msgstr "" msgid "Accordion glyphs" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5425,6 +5908,11 @@ msgstr "" msgid "Text markup list commands" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5562,12 +6050,12 @@ msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Predefined type predicates" +msgid "Context modification identifiers" msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" +msgid "Predefined type predicates" msgstr "" #. @node in Documentation/notation/cheatsheet.itely @@ -5576,9 +6064,15 @@ msgid "Cheat sheet" msgstr "" #. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "" + #. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + #. @unnumberedsec in Documentation/snippets.tely -msgid "\\\\TEXT\\\\" +msgid "\\\\\\\\TEXT\\\\\\\\" msgstr "" #. @node in Documentation/usage/running.itely @@ -5862,6 +6356,16 @@ msgstr "" msgid "Point and click" msgstr "" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -5987,1319 +6491,2161 @@ msgstr "" msgid "Make and Makefiles" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) -msgid "discant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) -msgid "dot" +#. @top in Documentation/cs/macros.itexi +msgid "LilyPond -- \\\\TITLE\\\\" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) -msgid "16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) -msgid "accBasson" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) -msgid "een korig 8 en 16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) -msgid "accBandon" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) -msgid "accVCello" +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) -msgid "4-8-16 voets register" +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) -msgid "accHarmon" +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) -msgid "accTrombon" +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) -msgid "eenkorig 4 en 16 voets register" +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) -msgid "accOrgan" +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) -msgid "accMaster" +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) -msgid "accAccord" +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) -msgid "accMusette" +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) -msgid "accCeleste" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) -msgid "accOboe" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) -msgid "accClarin" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) -msgid "accPiccolo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) -msgid "accViolin" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) -msgid "continuo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) -msgid "bassStaff" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) -msgid "drh" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) -msgid "drl" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) -msgid "timb" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) -msgid "two" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) -msgid "threeTwo" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) -msgid "threeFour" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vše dohromady" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) -msgid "splitStaffBarLineMarkup" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) -msgid "splitStaffBarLine" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) -msgid "cueWhile" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řešení chyb" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) -msgid "flute" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) -msgid "clarinet" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) -msgid "pianoRH" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Vypuštěný materiál" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) -msgid "pianoLH" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) -msgid "first, define a variable to hold the formatted date:" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) -msgid "date" +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) -msgid "d-%m-%Y\\\" (localtime (current-time)))" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) -msgid "use it in the title block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přezkoušení taktů" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) -msgid "and use it in a \\markup block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" msgstr "" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) -msgid "voiceFive" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" msgstr "" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) -#, fuzzy -msgid "graceNotes" -msgstr "Note" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" +msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) -msgid "Default layout:" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) -msgid "Reducing the minimum space below the staff and above the lyrics:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) -msgid "Increase the size of the bar number by 2" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ligatury" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) -msgid "Print a bar number every second measure" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) -msgid "Center-align bar numbers" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) -msgid "Left-align bar numbers" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) -msgid "the RehearsalMark will be centered above the Clef" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) -msgid "the RehearsalMark will be centered above the TimeSignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) -msgid "the RehearsalMark will be centered above the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) -msgid "" -"the RehearsalMark will be aligned with the left edge of the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Dynamika" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) -msgid "" -"the RehearsalMark will be aligned with the right edge of the KeySignature" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) -msgid "and then shifted right by one unit." +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) -msgid "upperStaff" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) -msgid "\\break % 1 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) -msgid "\\break %2 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) -msgid "\\break % 3 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) -msgid "\\break % 4 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) -msgid "\\break % 5 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) -msgid "\\break % 6 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) -msgid "\\break % 7 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) -msgid "\\break % 8 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) -msgid "\\break % 12 (32*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) -msgid "lowerStaff" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) -msgid "\\break % 2 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) -msgid "\\break % 4 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) -msgid "\\break % 9 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) -msgid "lig" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) -msgid "\\break % 11 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) -msgid "\\break % 12 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" msgstr "" -#. Documentation/snippets/ancient-headword.ly:34 (context id) -msgid "cantus" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:36 (comment) -msgid "Verse 1 — Salve, Regína" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" msgstr "" -#. Documentation/snippets/ancient-headword.ly:47 (comment) -msgid "Verse 2 — Vita, dulcédo" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:48 (comment) -msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Absolutní označení not" msgstr "" -#. Documentation/snippets/ancient-headword.ly:49 (comment) -msgid "\\divisioMinima" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" msgstr "" -#. Documentation/snippets/ancient-headword.ly:50 (comment) -msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" msgstr "" -#. Documentation/snippets/ancient-headword.ly:51 (comment) -msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:52 (comment) -msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:53 (comment) -msgid "\\divisioMaior" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:54 (comment) -msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" msgstr "" -#. Documentation/snippets/ancient-headword.ly:55 (comment) -msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" msgstr "" -#. Documentation/snippets/ancient-headword.ly:56 (comment) -msgid "\\finalis" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" msgstr "" -#. Documentation/snippets/ancient-headword.ly:57 (comment) -msgid "Verse 3 — Ad te clamámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" msgstr "" -#. Documentation/snippets/ancient-headword.ly:66 (comment) -msgid "Verse 4 — Ad te suspirámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:79 (comment) -msgid "Verse 5 — Eia ergo, Advocáta nostra" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" msgstr "" -#. Documentation/snippets/ancient-headword.ly:95 (comment) -msgid "Verse 6 — Et Jesum" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Notenkolumnen" msgstr "" -#. Documentation/snippets/ancient-headword.ly:109 (comment) -msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:127 (comment) -msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) -msgid "chant" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) -msgid "verba" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) -msgid "incipit" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) -msgid "turn off bar lines" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) -msgid "need this extra \\skip such that clef change comes" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) -msgid "after bar line" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) -msgid "turn bar lines on again" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) -msgid "occur in the first bar after the incipit. Dto. for forceClef." +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Soprán a violoncello" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) -msgid "Therefore, we need an extra \\skip." +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) -msgid "the actual music" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) -msgid "let finis bar go through all staves" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) -msgid "finis bar" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) -msgid "discantusNotes" +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) -msgid "two bars" +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) -msgid "eight bars" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) -msgid "one bar" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) -msgid "discantusLyrics" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) -msgid "altusNotes" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) -msgid "seven bars" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) -msgid "altusLyrics" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) -#, fuzzy -msgid "tenorNotes" -msgstr "Note" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) -msgid "four bars" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext finden" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) -msgid "tenorLyrics" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) -msgid "bassusNotes" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) -msgid "bassusLyrics" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) -msgid "choirStaff" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) -msgid "no bars in staves" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) -msgid "incipit should not start with a start delimiter" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) -msgid "no slurs" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "break-visibility (unsichtbar machen)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "color (Farbe)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) -msgid "tick" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Automatické chování" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) -msgid "Use markup to center the chant on the page" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) -msgid "centered" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Fingersatz" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) -msgid "End score" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) -msgid "End markup" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" msgstr "" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) -msgid "fragment" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Dynamik" msgstr "" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) -#, fuzzy -msgid "slurNotes" -msgstr "Note" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) -msgid "Default behavior" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) -msgid "Corrected to avoid collisions" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) -msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "extra-offset (Genaues Positionieren)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Pouze noty" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s příslušnými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Orchestr, sbor a klavír" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +msgid "accTrombon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) +msgid "accOboe" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) +msgid "accClarin" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) +msgid "accPiccolo" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) +msgid "accViolin" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) +msgid "continuo" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) +msgid "bassStaff" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +msgid "drh" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) +msgid "drl" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) +msgid "timb" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) +msgid "two" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) +msgid "threeTwo" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) +msgid "threeFour" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) +msgid "splitStaffBarLineMarkup" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) +msgid "splitStaffBarLine" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) +msgid "cueWhile" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) +msgid "flute" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) +msgid "clarinet" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) +msgid "pianoRH" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) +msgid "pianoLH" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) +msgid "first, define a variable to hold the formatted date:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) +msgid "date" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +msgid "d-%m-%Y\\\" (localtime (current-time)))" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) +msgid "use it in the title block:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) +msgid "and use it in a \\markup block:" +msgstr "" + +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) +msgid "voiceFive" +msgstr "" + +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) +#, fuzzy +msgid "graceNotes" +msgstr "Note" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) +msgid "Default layout:" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) +msgid "Reducing the minimum space below the staff and above the lyrics:" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +msgid "Increase the size of the bar number by 2" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) +msgid "Print a bar number every second measure" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +msgid "Center-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) +msgid "Left-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) +msgid "the RehearsalMark will be centered above the Clef" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) +msgid "the RehearsalMark will be centered above the TimeSignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) +msgid "the RehearsalMark will be centered above the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) +msgid "" +"the RehearsalMark will be aligned with the left edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) +msgid "" +"the RehearsalMark will be aligned with the right edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +msgid "and then shifted right by one unit." +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) +msgid "upperStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:52 (comment) +msgid "\\break % 1 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:63 (comment) +msgid "\\break %2 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:75 (comment) +msgid "\\break % 3 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:90 (comment) +msgid "\\break % 4 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) +msgid "\\break % 5 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) +msgid "\\break % 6 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) +msgid "\\break % 7 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:129 (comment) +msgid "\\break % 8 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:132 (comment) +msgid "\\break % 12 (32*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) +msgid "lowerStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:147 (comment) +msgid "\\break % 2 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:152 (comment) +msgid "\\break % 4 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:191 (comment) +msgid "\\break % 9 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:193 (comment) +msgid "lig" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:197 (comment) +msgid "\\break % 11 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:208 (comment) +msgid "\\break % 12 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:29 (context id) +msgid "cantus" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" +#. Documentation/snippets/ancient-headword.ly:31 (comment) +msgid "Verse 1 — Salve, Regína" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" +#. Documentation/snippets/ancient-headword.ly:42 (comment) +msgid "Verse 2 — Vita, dulcédo" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" +#. Documentation/snippets/ancient-headword.ly:43 (comment) +msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" +#. Documentation/snippets/ancient-headword.ly:44 (comment) +msgid "\\divisioMinima" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:45 (comment) +msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:46 (comment) +msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:47 (comment) +msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:48 (comment) +msgid "\\divisioMaior" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:49 (comment) +msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:50 (comment) +msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:51 (comment) +msgid "\\finalis" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:52 (comment) +msgid "Verse 3 — Ad te clamámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:61 (comment) +msgid "Verse 4 — Ad te suspirámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:74 (comment) +msgid "Verse 5 — Eia ergo, Advocáta nostra" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:90 (comment) +msgid "Verse 6 — Et Jesum" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:104 (comment) +msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:122 (comment) +msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) +msgid "chant" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) +msgid "verba" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) +msgid "incipit" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +msgid "Set tight spacing" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) +msgid "turn off bar lines" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) +msgid "need this extra \\skip such that clef change comes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) +msgid "after bar line" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) +msgid "turn bar lines on again" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) +msgid "occur in the first bar after the incipit. Dto. for forceClef." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) +msgid "Therefore, we need an extra \\skip." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +msgid "the actual music" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) +msgid "let finis bar go through all staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) +msgid "finis bar" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) +msgid "discantusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) +msgid "two bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) +msgid "eight bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) +msgid "one bar" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) +msgid "discantusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) +msgid "altusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) +msgid "seven bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) +msgid "altusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) +#, fuzzy +msgid "tenorNotes" +msgstr "Note" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) +msgid "four bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) +msgid "tenorLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) +msgid "bassusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) +msgid "bassusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) +msgid "choirStaff" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +msgid "no bars in staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) +msgid "incipit should not start with a start delimiter" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) +msgid "no slurs" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) +msgid "tick" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) +msgid "Use markup to center the chant on the page" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) +msgid "centered" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) +msgid "End score" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) +msgid "End markup" +msgstr "" + +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) +msgid "fragment" +msgstr "" + +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) +#, fuzzy +msgid "slurNotes" +msgstr "Note" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) +msgid "Default behavior" +msgstr "" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) +msgid "Corrected to avoid collisions" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) +msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) msgid "Span -----------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" msgstr "" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) msgid "Default setting" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) #, fuzzy msgid "sustainNotes" msgstr "Note" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) msgid "\\break" msgstr "" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "" -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "" -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) -msgid "piuF" +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) +msgid "piuF" +msgstr "" + +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) +msgid "musicUp" +msgstr "" + +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) +msgid "musicDown" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) +msgid "show hairpin" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) +msgid "hide text span" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) +msgid "show glissando" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +msgid "ten" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +msgid "finger" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) +msgid "parenF" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) -msgid "musicUp" +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) +msgid "the hidden measure and bar line" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) -msgid "musicDown" +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) +msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) -msgid "show hairpin" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) -msgid "hide text span" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) -msgid "show glissando" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" msgstr "" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) -msgid "parenF" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) -msgid "the hidden measure and bar line" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) -msgid "\\cadenzaOn turns off automatic calculation of bar numbers" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) #, fuzzy msgid "notes." msgstr "Note" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) msgid "Ambitus engraving logics" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) msgid "mycresc" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) msgid "mydecresc" msgstr "" @@ -7311,1601 +8657,1696 @@ msgstr "" msgid "crpoco" msgstr "" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -msgid "cresc" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -msgid "decresc" -msgstr "" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) msgid "extendOn" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) #, fuzzy msgid "pUp" msgstr "Su:" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) #, fuzzy msgid "iUp" msgstr "Su:" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) #, fuzzy msgid "mUp" msgstr "Su:" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) #, fuzzy msgid "aUp" msgstr "Su:" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) #, fuzzy msgid "xUp" msgstr "Su:" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) msgid "example" msgstr "" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) +msgid "lyr" msgstr "" -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) -msgid "lyr" +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" msgstr "" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) msgid "dimin" msgstr "" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "" -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) msgid "sMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:61 (variable) msgid "Timeline" msgstr "" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:93 (comment) msgid "Start score" msgstr "" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) msgid "End pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" msgstr "" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" msgstr "" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" msgstr "" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" msgstr "" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) msgid "space for instrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) msgid "hornMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) msgid "altoILyrics" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoIILyrics" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" msgstr "" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr "" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "" @@ -8913,1143 +10354,1197 @@ msgstr "" msgid "voc" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) -msgid "quoteTest" +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +msgid "quoteMe" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) -msgid "french horn" +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) +msgid "original" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) -msgid "quoteMe" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) -msgid "original" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" msgstr "" -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) #, fuzzy msgid "sopranonotes" msgstr "Note" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) msgid "sopranowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) #, fuzzy msgid "altonotes" msgstr "Note" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) msgid "altowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) #, fuzzy msgid "tenornotes" msgstr "Note" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) #, fuzzy msgid "tenorwords" msgstr "Note" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) #, fuzzy msgid "bassnotes" msgstr "Note" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) msgid "basswords" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) #, fuzzy msgid "notes" msgstr "Note" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) msgid "trillFlat" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) msgid "LH staff" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "" -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) msgid "RH staff" msgstr "" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) msgid "Abreviations" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) #, fuzzy msgid "testnotes" msgstr "Note" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) msgid "upline" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) msgid "refrain" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) #, fuzzy msgid "SoloNotes" msgstr "Note" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) msgid "SoloLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) #, fuzzy msgid "SopranoNotes" msgstr "Note" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) msgid "SopranoLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) msgid "BassLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) msgid "SopranoVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" msgstr "" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "" diff --git a/Documentation/po/ja.po b/Documentation/po/ja.po index c26f34aaee..76ffe4467f 100644 --- a/Documentation/po/ja.po +++ b/Documentation/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" "PO-Revision-Date: 2010-04-13 12:31+0200\n" "Last-Translator: Yoshiki Sawada \n" "Language-Team: 日本語 \n" @@ -25,13 +25,11 @@ msgstr "" "このページは %(package_name)s-%(package_version)s (%(branch_str)s) を対象とし" "ています。" -# not yet #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" #: postprocess_html.py:69 @@ -45,11 +43,11 @@ msgstr "他の言語: %s" msgid "About automatic language selection." msgstr "" -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "安定版" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "開発版" @@ -139,23 +137,20 @@ msgid "post-GDP" msgstr "" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" msgstr "" -#. Documentation/changes.tely:184 (variable) -#, fuzzy -msgid "noclef" -msgstr "音部記号 (clef)" - # not yet #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "トップ ページ" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" +msgid "New features in 2.16 since 2.14" msgstr "" #. @top in Documentation/macros.itexi @@ -304,17 +299,17 @@ msgid "Long literature list" msgstr "" #. @subheading in Documentation/essay/literature.itely -#, fuzzy -msgid "Colorado" -msgstr "色 (color)" +msgid "University of Colorado Engraving music bibliography" +msgstr "" #. @subheading in Documentation/essay/literature.itely #, fuzzy -msgid "Computer notation" +msgid "Computer notation bibliography" msgstr "簡単な表記" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" +#, fuzzy +msgid "Engraving bibliography" msgstr "譜刻" #. @node in Documentation/fdl.itexi @@ -336,27 +331,25 @@ msgstr "" msgid "ADDENDUM: How to use this License for your documents" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "" @@ -539,21 +532,21 @@ msgstr "" msgid "Adding articulation to notes (example)" msgstr "" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "" @@ -562,6 +555,35 @@ msgstr "" msgid "Interfaces for programmers" msgstr "" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Lilypond code blocks" +msgstr "環境変数" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Void scheme functions" +msgstr "音楽表記のネスト" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -569,9 +591,15 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" +msgid "Music function definitions" msgstr "" +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Music function usage" +msgstr "音楽表記のネスト" + #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely msgid "Simple substitution functions" @@ -594,8 +622,15 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" -msgstr "" +#, fuzzy +msgid "Void music functions" +msgstr "音楽表記のネスト" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Event functions" +msgstr "音楽表記のネスト" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely @@ -736,12 +771,16 @@ msgstr "出力を調整する" # not needed to translate #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "" # not needed to translate #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "" @@ -770,32 +809,38 @@ msgstr "音高" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" msgstr "音高 (pitch)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" msgstr "音程 (interval)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "音階 (scale)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "ミドル C (middle C)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "オクターブ (octave)" @@ -803,6 +848,8 @@ msgstr "オクターブ (octave)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "臨時記号 (accidental)" @@ -814,36 +861,42 @@ msgstr "演奏時間 (リズム)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" msgstr "ビーム (beam)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "演奏時間 (duration)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "全音符 (whole note)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "半音符 (half note)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "4 分音符 (quarter note)" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "dotted note" msgstr "符点音符 (dotted note)" @@ -864,6 +917,7 @@ msgstr "拍子記号" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" msgstr "拍子記号 (time signature)" @@ -875,12 +929,14 @@ msgstr "バージョン番号" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "tempo indication" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "metronome" msgstr "" @@ -891,6 +947,7 @@ msgstr "音部記号" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" msgstr "音部記号 (clef)" @@ -941,32 +998,38 @@ msgid "Overview of manuals" msgstr "" # not needed to translate -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "" # not needed to translate -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "" # not needed to translate -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "" # not needed to translate -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "" # not needed to translate #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "" @@ -998,24 +1061,28 @@ msgstr "臨時記号" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "シャープ (sharp)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "フラット (flat)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "ダブル シャープ (double sharp)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "ダブル フラット (double flat)" @@ -1026,18 +1093,21 @@ msgstr "調号" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" msgstr "調号 (key signature)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "メジャー (major)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "マイナー (minor)" @@ -1048,18 +1118,21 @@ msgstr "警告: 調号と音高" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "ナチュラル (natural)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" msgstr "移調 (transposition)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "音高名 (Pitch names)" @@ -1075,6 +1148,7 @@ msgstr "タイ" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "タイ (tie)" @@ -1085,6 +1159,7 @@ msgstr "スラー" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "スラー (slur)" @@ -1095,6 +1170,7 @@ msgstr "フレージング スラー" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "フレージング (phrasing)" @@ -1105,6 +1181,7 @@ msgstr "警告: スラー vs. タイ" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "アーティキュレーション (articulation)" @@ -1124,6 +1201,7 @@ msgstr "運指法記号" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" msgstr "運指法記号 (fingering)" @@ -1135,19 +1213,21 @@ msgstr "強弱記号" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "強弱記号 (dynamics)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" msgstr "クレッシェンド (crescendo)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" msgstr "デクレッシェンド (decrescendo)" @@ -1177,7 +1257,7 @@ msgid "anacrusis" msgstr "" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "連符" @@ -1185,12 +1265,14 @@ msgstr "連符" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" msgstr "3 連符 (triplet)" @@ -1201,6 +1283,7 @@ msgstr "グレース ノート" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "グレース ノート (grace notes)" @@ -1208,6 +1291,7 @@ msgstr "グレース ノート (grace notes)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "" @@ -1215,6 +1299,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "" @@ -1239,6 +1324,7 @@ msgstr "同時進行する音楽表記: 複数の譜" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "多声 (polyphony)" @@ -1259,6 +1345,7 @@ msgstr "譜表グループ" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "ブレース (brace)" @@ -1273,6 +1360,8 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "system" msgstr "" @@ -1284,6 +1373,7 @@ msgstr "音符を組み合わせて和音にする" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "和音 (chord)" @@ -1305,6 +1395,7 @@ msgstr "簡単な歌詞をセットする" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "歌詞 (lyrics)" @@ -1316,12 +1407,14 @@ msgstr "歌詞を旋律に揃える" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "メリスマ (melisma)" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "延長線 (extender line)" @@ -1358,15 +1451,19 @@ msgstr "このチュートリアルの後にすべきこと" # not needed to translate #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "" # not needed to translate #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) msgid "vocal" msgstr "" @@ -1375,9 +1472,11 @@ msgstr "" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "" @@ -1385,23 +1484,27 @@ msgstr "" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "" @@ -1409,594 +1512,738 @@ msgstr "" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "" # not needed to translate #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "" # not needed to translate #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) msgid "text" msgstr "" # not needed to translate #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "" -#. Documentation/learning/fundamental.itely:629 (comment) +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "" -#. Documentation/learning/fundamental.itely:684 (comment) +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "Voice 1 の続き" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "Voice 2 の続き" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "Voice three を省略" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "デフォルトの振る舞い方、または、\\oneVoice の後での振る舞い方" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "以下の音符は単声" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "3 つのボイスからなる同時進行セクションの開始" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "並列 (同時進行) 状態での main ボイスの続き" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "second ボイスの開始" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) #, fuzzy msgid "Set stems, etc., down" msgstr "ステムなどを下向きにセット" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "third ボイスの開始" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "ステムなどを上向きにセット" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "first ボイスの開始" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "ステムなどを下向きにセット" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" msgstr "" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "単一の複合音楽表記の開始" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "同時進行する譜セクションの開始" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "RH (右手) 譜表の作成" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "RH 音符のためのボイスを作成" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "RH 音符の開始" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "RH 音符の終了" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "RH ボイスの終了" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "RH 譜表の終了" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "LH (左手) 譜表の作成。2 つの同時進行するボイスが必要" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "LH voice one の作成" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "LH voice one の音符の開始" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "LH voice one 音符の終了" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "LH voice one の終了" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "LH voice two の作成" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "LH voice two 音符の開始" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "LH voice two 音符の終了" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "LH voice two の終了" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "LH 譜表の終了" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "同時進行する譜セクションの終了" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "単一の複合音楽表記の終了" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "間違い!" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "音符の玉を小さくする" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "音符の玉を大きくする" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "デフォルトのサイズに戻す" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "ChoirStaff と PianoStaff を並列に組み合わせる" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "ChoirStaff の終了" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "PianoStaff と Pedal Staff は同時進行でなければならない" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "" -#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/learning/fundamental.itely:2926 (comment) #, fuzzy msgid "set key and time signature" msgstr "拍子記号 (time signature)" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "ManualOne Staff コンテキストの終了" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "ManualTwo Staff コンテキストの終了" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "PianoStaff コンテキストの終了" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "PedalOrgan Staff コンテキストの終了" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "Score コンテキストの終了" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) msgid "hornNotes" msgstr "" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "" @@ -2030,6 +2277,7 @@ msgstr "音楽表記のネスト" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "" @@ -2113,6 +2361,7 @@ msgstr "単一のコンテキストを変更する" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" msgstr "音域 (ambitus)" @@ -2150,269 +2399,375 @@ msgstr "変数と関数を用いて入力の手間を省く" msgid "Scores and parts" msgstr "楽譜とパート" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "後に続くすべてのスラーの太さを 1.2 から 5.0 に増やします" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "直後にあるスラーの太さだけを増やします" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "後に続くすべてのスラーの太さをデフォルトの 1.2 に戻します" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "この譜表には音部記号を譜刻しません" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "この譜表には拍子記号を譜刻しません" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "すべてのフォント サイズを約 24% 減らします" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "釣り合いをとるためにステムの長さと譜表線の間隔を減らします" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "後のテキスト スパナのための詳細を設定" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "譜表の上に強弱記号を配置" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "オッターバ囲みの開始" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) #, fuzzy msgid "Add Dynamic Text and hairpin" msgstr "強弱記号テキストの追加" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "テキスト スクリプトの追加" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) #, fuzzy msgid "Add Dynamic Text and terminate hairpin" msgstr "強弱記号線スパナの追加" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "オッターバ囲みの終了" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "以下のオッターバ囲みをテキスト スパナの下に配置" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "強弱記号テキストの追加" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "強弱記号線スパナの追加" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "テキストに合わせて音符の間隔を広げます" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "このマークアップは短いため、衝突を起こさずにぴったりと収まります" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "このマークアップは長いため、上の方に再配置されます" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "衝突回避を off にします" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "今度は textLengthOn を on にします" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "テキスト終端のスペースは尊重されます" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "幅を 1 譜表スペース広げます" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) #, fuzzy msgid "This will not work, see below" msgstr "これは機能しません。以下を見てください:" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) #, fuzzy msgid "This works" msgstr "これは機能します:" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) #, fuzzy msgid "sesquisharp" msgstr "シャープ (sharp)" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "幅を 1 単位 (譜表スペース) 広げます" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "強弱記号を譜表から 2 単位上のベース ラインに揃えます" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "4 つのボイスを持つ多声部セクションの開始" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) #, fuzzy msgid "continuation of main voice" msgstr "first ボイスの開始" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +#, fuzzy +msgid "Move the c2 out of the main note column" msgstr "マージが機能するように、c2 をメインの音符列の外に移動させます" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" +msgstr "" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "マージを可能にするため、d2 のステムは下向きでなければなりません" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "c2 をマージされた音符の右側に再配置します" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" msgstr "" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "可視のテンポ記号" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "MIDI の中でフェルマータの演奏時間を伸ばすための不可視のテンポ記号" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "次のセクションのための新しいテンポ" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "color-notehead プロシージャからカラーを取得するための手続き" @@ -2639,11 +2994,6 @@ msgstr "スタイル シート" msgid "Other sources of information" msgstr "その他の情報源" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "処理に時間のかかる調整を避ける" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2779,10 +3129,10 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "" @@ -2835,8 +3185,8 @@ msgstr "演奏時間 (duration)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "" @@ -2887,9 +3237,9 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "" @@ -2921,11 +3271,11 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "" @@ -2995,7 +3345,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "" @@ -3495,6 +3845,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "" @@ -3814,8 +4165,8 @@ msgstr "透過性 (transparent)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "" @@ -3948,8 +4299,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "" @@ -4082,7 +4433,7 @@ msgstr "テキストを追加する" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "" @@ -4169,7 +4520,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) #, fuzzy msgid "tenor" msgstr "マイナー (minor)" @@ -4417,34 +4768,67 @@ msgstr "" msgid "Specialist notation" msgstr "" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +#, fuzzy +msgid "The following fields are centered" +msgstr "以下の音符は単声" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" msgstr "" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "" + +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "" +#. Documentation/notation/input.itely:1792 (variable) +#, fuzzy +msgid "test" +msgstr "脚注" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4487,17 +4871,68 @@ msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" +msgid "Creating titles headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Title blocks explained" +msgstr "コンテキストの説明" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" msgstr "" #. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely msgid "Custom headers footers and titles" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" +#, fuzzy +msgid "Creating footnotes" +msgstr "コンテキストを作成する" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Footnotes overview" +msgstr "脚注" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Manual footnotes" +msgstr "脚注" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Reference to page numbers" @@ -4534,19 +4969,34 @@ msgid "Using tags" msgstr "" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Text encoding" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" +msgid "Special characters" msgstr "" #. @node in Documentation/notation/input.itely -#. @section in Documentation/notation/input.itely -msgid "Controlling output" -msgstr "" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Text encoding" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Controlling output" +msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4635,63 +5085,90 @@ msgstr "" msgid "Percussion in MIDI" msgstr "" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "The Articulate script" +msgstr "アーティキュレーション" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +#, fuzzy +msgid "Displaying scheme music expressions" +msgstr "音楽表記のネスト" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" msgstr "" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" msgstr "" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." msgstr "" -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" msgstr "" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" msgstr "" -#. Documentation/notation/spacing.itely:2053 (comment) -msgid "staff and the next is determined by 'space." +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." msgstr "" -#. Documentation/notation/spacing.itely:2056 (comment) +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" msgstr "" -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "" -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "" -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr "" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "" @@ -4982,161 +5459,170 @@ msgstr "" msgid "Changing spacing" msgstr "" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) #, fuzzy msgid "accompaniment" msgstr "臨時記号 (accidental)" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) #, fuzzy msgid "words" msgstr "和音 (chord)" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2017 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2023 (comment) +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" msgstr "" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "" -#. Documentation/notation/changing-defaults.itely:3449 (comment) +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3456 (comment) +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "" -#. Documentation/notation/changing-defaults.itely:3476 (comment) +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3489 (comment) +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "" -#. Documentation/notation/changing-defaults.itely:3504 (comment) +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3516 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "" @@ -5193,8 +5679,9 @@ msgstr "" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" -msgstr "" +#, fuzzy +msgid "Context layout order" +msgstr "コンテキストとエングラーバ" #. @node in Documentation/notation/changing-defaults.itely #. @section in Documentation/notation/changing-defaults.itely @@ -5283,12 +5770,6 @@ msgstr "" msgid "Direction and placement" msgstr "" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -#, fuzzy -msgid "Context layout order" -msgstr "コンテキストとエングラーバ" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5463,6 +5944,12 @@ msgstr "" msgid "Common chord modifiers" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Predefined string tunings" +msgstr "定義済みコマンド" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" @@ -5587,6 +6074,12 @@ msgstr "" msgid "Accordion glyphs" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +#, fuzzy +msgid "Tie glyphs" +msgstr "休符" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5637,6 +6130,11 @@ msgstr "" msgid "Text markup list commands" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5780,14 +6278,14 @@ msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -#, fuzzy -msgid "Predefined type predicates" -msgstr "定義済みコマンド" +msgid "Context modification identifiers" +msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" -msgstr "" +#, fuzzy +msgid "Predefined type predicates" +msgstr "定義済みコマンド" #. @node in Documentation/notation/cheatsheet.itely #. @appendix in Documentation/notation/cheatsheet.itely @@ -5795,9 +6293,15 @@ msgid "Cheat sheet" msgstr "" #. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "" + #. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + #. @unnumberedsec in Documentation/snippets.tely -msgid "\\\\TEXT\\\\" +msgid "\\\\\\\\TEXT\\\\\\\\" msgstr "" #. @node in Documentation/usage/running.itely @@ -6089,6 +6593,18 @@ msgstr "" msgid "Point and click" msgstr "ポイント&クリック" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +#, fuzzy +msgid "Enabling point and click" +msgstr "ポイント&クリック" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +#, fuzzy +msgid "Selective point-and-click" +msgstr "ポイント&クリック" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -6219,1325 +6735,2182 @@ msgstr "" msgid "Make and Makefiles" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) -msgid "discant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) -msgid "dot" +#. @top in Documentation/cs/macros.itexi +msgid "LilyPond -- \\\\TITLE\\\\" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) -msgid "16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) -msgid "accBasson" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) -msgid "een korig 8 en 16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) -msgid "accBandon" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) -msgid "accVCello" +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) -msgid "4-8-16 voets register" +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) -msgid "accHarmon" +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) -msgid "accTrombon" +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) -msgid "eenkorig 4 en 16 voets register" +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) -msgid "accOrgan" +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) -msgid "accMaster" +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) -msgid "accAccord" +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) -msgid "accMusette" +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) -msgid "accCeleste" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) -msgid "accOboe" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) -msgid "accClarin" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) -msgid "accPiccolo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) -msgid "accViolin" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) -msgid "continuo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) -msgid "bassStaff" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) -msgid "drh" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) -msgid "drl" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) -msgid "timb" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) -msgid "two" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) -msgid "threeTwo" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) -msgid "threeFour" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vše dohromady" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) -msgid "splitStaffBarLineMarkup" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) -msgid "splitStaffBarLine" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) -msgid "cueWhile" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řešení chyb" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) -msgid "flute" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) -msgid "clarinet" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) -msgid "pianoRH" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Vypuštěný materiál" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) -msgid "pianoLH" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) -msgid "first, define a variable to hold the formatted date:" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) -msgid "date" +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) -msgid "d-%m-%Y\\\" (localtime (current-time)))" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) -msgid "use it in the title block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přezkoušení taktů" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) -msgid "and use it in a \\markup block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" msgstr "" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) -msgid "voiceFive" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" msgstr "" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) -#, fuzzy -msgid "graceNotes" -msgstr "グレース ノート (grace notes)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" +msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) -msgid "Default layout:" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) -msgid "Reducing the minimum space below the staff and above the lyrics:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) -msgid "Increase the size of the bar number by 2" +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Ligatury" +msgstr "調号 (key signature)" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) -msgid "Print a bar number every second measure" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) -msgid "Center-align bar numbers" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) -msgid "Left-align bar numbers" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) -msgid "the RehearsalMark will be centered above the Clef" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) -msgid "the RehearsalMark will be centered above the TimeSignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) -msgid "the RehearsalMark will be centered above the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +#, fuzzy +msgid "Dynamika" +msgstr "強弱記号" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) -msgid "" -"the RehearsalMark will be aligned with the left edge of the KeySignature" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) -msgid "" -"the RehearsalMark will be aligned with the right edge of the KeySignature" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) -msgid "and then shifted right by one unit." +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) -msgid "upperStaff" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) -msgid "\\break % 1 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) -msgid "\\break %2 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) -msgid "\\break % 3 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) -msgid "\\break % 4 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) -msgid "\\break % 5 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) -msgid "\\break % 6 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) -msgid "\\break % 7 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) -msgid "\\break % 8 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) -msgid "\\break % 12 (32*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) -msgid "lowerStaff" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) -msgid "\\break % 2 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) -msgid "\\break % 4 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) -msgid "\\break % 9 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) -msgid "lig" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) -msgid "\\break % 11 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) -msgid "\\break % 12 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" msgstr "" -#. Documentation/snippets/ancient-headword.ly:34 (context id) -msgid "cantus" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:36 (comment) -msgid "Verse 1 — Salve, Regína" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Absolutní označení not" msgstr "" -#. Documentation/snippets/ancient-headword.ly:47 (comment) -msgid "Verse 2 — Vita, dulcédo" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" msgstr "" -#. Documentation/snippets/ancient-headword.ly:48 (comment) -msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" +msgstr "拍子記号と調号をセットする" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:49 (comment) -msgid "\\divisioMinima" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:50 (comment) -msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:51 (comment) -msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" msgstr "" -#. Documentation/snippets/ancient-headword.ly:52 (comment) -msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" msgstr "" -#. Documentation/snippets/ancient-headword.ly:53 (comment) -msgid "\\divisioMaior" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" msgstr "" -#. Documentation/snippets/ancient-headword.ly:54 (comment) -msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" msgstr "" -#. Documentation/snippets/ancient-headword.ly:55 (comment) -msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:56 (comment) -msgid "\\finalis" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" msgstr "" -#. Documentation/snippets/ancient-headword.ly:57 (comment) -msgid "Verse 3 — Ad te clamámus" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Notenkolumnen" +msgstr "音符列" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:66 (comment) -msgid "Verse 4 — Ad te suspirámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" msgstr "" -#. Documentation/snippets/ancient-headword.ly:79 (comment) -msgid "Verse 5 — Eia ergo, Advocáta nostra" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" msgstr "" -#. Documentation/snippets/ancient-headword.ly:95 (comment) -msgid "Verse 6 — Et Jesum" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" msgstr "" -#. Documentation/snippets/ancient-headword.ly:109 (comment) -msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" msgstr "" -#. Documentation/snippets/ancient-headword.ly:127 (comment) -msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) -msgid "chant" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" +msgstr "@code{\\with} を用いてコンテキスト プロパティを設定する" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" +msgstr "@code{\\context} を用いてコンテキスト プロパティを設定する" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) -msgid "verba" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) -msgid "incipit" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) -msgid "turn off bar lines" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +#, fuzzy +msgid "Soprán a violoncello" +msgstr "ソプラノとチェロ" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) -msgid "need this extra \\skip such that clef change comes" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) -msgid "after bar line" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) -msgid "turn bar lines on again" +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "マージが機能するように、c2 をメインの音符列の外に移動させます" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) -msgid "occur in the first bar after the incipit. Dto. for forceClef." +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) -msgid "Therefore, we need an extra \\skip." +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) -msgid "the actual music" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) -msgid "let finis bar go through all staves" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Den Kontext finden" +msgstr "コンテキストを作成する" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "break-visibility (unsichtbar machen)" +msgstr "可視性の破棄 (break-visibility)" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "color (Farbe)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Automatické chování" +msgstr "自動配置" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Fingersatz" +msgstr "運指法記号" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +#, fuzzy +msgid "Dynamik" +msgstr "強弱記号" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "extra-offset (Genaues Positionieren)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Pouze noty" +msgstr "全音符 (whole note)" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s příslušnými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Orchestr, sbor a klavír" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +msgid "accTrombon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) +msgid "accOboe" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) +msgid "accClarin" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) +msgid "accPiccolo" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) +msgid "accViolin" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) +msgid "continuo" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) +msgid "bassStaff" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +msgid "drh" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) +msgid "drl" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) +msgid "timb" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) +msgid "two" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) +msgid "threeTwo" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) +msgid "threeFour" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) +msgid "splitStaffBarLineMarkup" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) +msgid "splitStaffBarLine" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) +msgid "cueWhile" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) +msgid "flute" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) +msgid "clarinet" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) +msgid "pianoRH" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) +msgid "pianoLH" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) +msgid "first, define a variable to hold the formatted date:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) +msgid "date" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +msgid "d-%m-%Y\\\" (localtime (current-time)))" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) +msgid "use it in the title block:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) +msgid "and use it in a \\markup block:" +msgstr "" + +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) +msgid "voiceFive" +msgstr "" + +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) +#, fuzzy +msgid "graceNotes" +msgstr "グレース ノート (grace notes)" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) +msgid "Default layout:" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) +msgid "Reducing the minimum space below the staff and above the lyrics:" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +msgid "Increase the size of the bar number by 2" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) +msgid "Print a bar number every second measure" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +msgid "Center-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) +msgid "Left-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) +msgid "the RehearsalMark will be centered above the Clef" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) +msgid "the RehearsalMark will be centered above the TimeSignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) +msgid "the RehearsalMark will be centered above the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) +msgid "" +"the RehearsalMark will be aligned with the left edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) +msgid "" +"the RehearsalMark will be aligned with the right edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +msgid "and then shifted right by one unit." +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) +msgid "upperStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:52 (comment) +msgid "\\break % 1 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:63 (comment) +msgid "\\break %2 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:75 (comment) +msgid "\\break % 3 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:90 (comment) +msgid "\\break % 4 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) +msgid "\\break % 5 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) +msgid "\\break % 6 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) +msgid "\\break % 7 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:129 (comment) +msgid "\\break % 8 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:132 (comment) +msgid "\\break % 12 (32*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) +msgid "lowerStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:147 (comment) +msgid "\\break % 2 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:152 (comment) +msgid "\\break % 4 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:191 (comment) +msgid "\\break % 9 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:193 (comment) +msgid "lig" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:197 (comment) +msgid "\\break % 11 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:208 (comment) +msgid "\\break % 12 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:29 (context id) +msgid "cantus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:31 (comment) +msgid "Verse 1 — Salve, Regína" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:42 (comment) +msgid "Verse 2 — Vita, dulcédo" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:43 (comment) +msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:44 (comment) +msgid "\\divisioMinima" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:45 (comment) +msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:46 (comment) +msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:47 (comment) +msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:48 (comment) +msgid "\\divisioMaior" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:49 (comment) +msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:50 (comment) +msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:51 (comment) +msgid "\\finalis" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:52 (comment) +msgid "Verse 3 — Ad te clamámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:61 (comment) +msgid "Verse 4 — Ad te suspirámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:74 (comment) +msgid "Verse 5 — Eia ergo, Advocáta nostra" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:90 (comment) +msgid "Verse 6 — Et Jesum" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:104 (comment) +msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:122 (comment) +msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) +msgid "chant" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) +msgid "verba" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) +msgid "incipit" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +#, fuzzy +msgid "Set tight spacing" +msgstr "left-padding と right-padding" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) +msgid "turn off bar lines" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) +msgid "need this extra \\skip such that clef change comes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) +msgid "after bar line" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) +msgid "turn bar lines on again" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) +msgid "occur in the first bar after the incipit. Dto. for forceClef." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) +msgid "Therefore, we need an extra \\skip." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) #. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +msgid "the actual music" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) +msgid "let finis bar go through all staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) msgid "finis bar" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "discantusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "two bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "eight bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) msgid "one bar" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) msgid "discantusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) msgid "altusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) msgid "seven bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) msgid "altusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) msgid "tenorNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) msgid "four bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) msgid "tenorLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) msgid "bassusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) msgid "bassusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) msgid "choirStaff" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) msgid "no bars in staves" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) msgid "incipit should not start with a start delimiter" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) -msgid "no slurs" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) #. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" +msgid "no slurs" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) msgid "tick" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) msgid "Use markup to center the chant on the page" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) msgid "centered" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) #, fuzzy msgid "End score" msgstr "音階 (scale)" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) #, fuzzy msgid "End markup" msgstr "シャープ (sharp)" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) msgid "fragment" msgstr "" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) #, fuzzy msgid "slurNotes" msgstr "スラー (slur)" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) msgid "Default behavior" msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) msgid "Corrected to avoid collisions" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" msgstr "" #. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) msgid "Span -----------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" msgstr "" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) msgid "Default setting" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) msgid "sustainNotes" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) #, fuzzy msgid "\\break" msgstr "ビーム (beam)" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "" # not yet -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) #, fuzzy msgid "sop" msgstr "トップ ページ" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "" -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "" -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) msgid "hide text span" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) msgid "show glissando" msgstr "" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +#, fuzzy +msgid "ten" +msgstr "マイナー (minor)" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +#, fuzzy +msgid "finger" +msgstr "運指法記号 (fingering)" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) msgid "parenF" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) msgid "the hidden measure and bar line" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) msgid "\\cadenzaOn turns off automatic calculation of bar numbers" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" +msgstr "" + +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) #, fuzzy msgid "notes." msgstr "脚注" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) #, fuzzy msgid "- pitch is the absolute pitch of the note" msgstr "c2 をマージされた音符の右側に再配置します" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) #, fuzzy msgid "Ambitus engraving logics" msgstr "自動譜刻" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) #, fuzzy msgid "mycresc" msgstr "クレッシェンド (crescendo)" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) #, fuzzy msgid "mydecresc" msgstr "デクレッシェンド (decrescendo)" @@ -7550,1616 +8923,1711 @@ msgstr "" msgid "crpoco" msgstr "" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -#, fuzzy -msgid "cresc" -msgstr "クレッシェンド (crescendo)" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -#, fuzzy -msgid "decresc" -msgstr "デクレッシェンド (decrescendo)" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) #, fuzzy msgid "RH Staff" msgstr "RH (右手) 譜表の作成" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) #, fuzzy msgid "LH Staff" msgstr "LH 譜表の終了" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) #, fuzzy msgid "extendOn" msgstr "延長線 (extender line)" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "pUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) msgid "iUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) msgid "mUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) msgid "aUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) msgid "xUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) #, fuzzy msgid "example" msgstr "テンプレート" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) +msgid "lyr" msgstr "" -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) -msgid "lyr" +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) #, fuzzy msgid "fingering orientations" msgstr "表記の重なりを修正する" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) #, fuzzy msgid "ssnor" msgstr "マイナー (minor)" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) #, fuzzy msgid "markups" msgstr "シャープ (sharp)" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) #, fuzzy msgid "rit" msgstr "3 連符 (triplet)" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) #, fuzzy msgid "dimin" msgstr "演奏時間 (duration)" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) #, fuzzy msgid "end of m. 6" msgstr "RH 音符の終了" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) #, fuzzy msgid "end of m. 8" msgstr "RH 音符の終了" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) #, fuzzy msgid "end of m. 9" msgstr "RH 音符の終了" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +#, fuzzy +msgid "frettedStrings" +msgstr "歌曲" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "" -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) #, fuzzy msgid "sMarkup" msgstr "シャープ (sharp)" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:61 (variable) #, fuzzy msgid "Timeline" msgstr "拍子記号" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:93 (comment) #, fuzzy msgid "Start score" msgstr "音階 (scale)" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) #, fuzzy msgid "End pianostaff" msgstr "RH 譜表の終了" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" msgstr "" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" msgstr "" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" msgstr "" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" msgstr "" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +#, fuzzy +msgid "eighth harmonic" +msgstr "半音符 (half note)" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) msgid "space for instrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) msgid "hornMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) #, fuzzy msgid "altoILyrics" msgstr "歌詞 (lyrics)" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) #, fuzzy msgid "altoIILyrics" msgstr "歌詞 (lyrics)" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" msgstr "" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr "" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "" @@ -9167,890 +10635,903 @@ msgstr "" msgid "voc" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) -msgid "quoteTest" +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +msgid "quoteMe" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) -msgid "french horn" +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) +msgid "original" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) -msgid "quoteMe" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) -msgid "original" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" msgstr "" -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) #, fuzzy msgid "sopranonotes" msgstr "脚注" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) msgid "sopranowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) #, fuzzy msgid "altonotes" msgstr "脚注" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) #, fuzzy msgid "altowords" msgstr "和音 (chord)" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) #, fuzzy msgid "tenornotes" msgstr "マイナー (minor)" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) #, fuzzy msgid "tenorwords" msgstr "マイナー (minor)" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) #, fuzzy msgid "bassnotes" msgstr "脚注" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) #, fuzzy msgid "basswords" msgstr "和音 (chord)" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) #, fuzzy msgid "notes" msgstr "脚注" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) #, fuzzy msgid "trillFlat" msgstr "3 連符 (triplet)" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) #, fuzzy msgid "RH voice 1" msgstr "RH ボイスの終了" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) #, fuzzy msgid "RH voice 2" msgstr "RH ボイスの終了" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) #, fuzzy msgid "LH staff" msgstr "LH 譜表の終了" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) #, fuzzy msgid "trompette" msgstr "3 連符 (triplet)" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "" -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) #, fuzzy msgid "RH staff" msgstr "RH (右手) 譜表の作成" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) #, fuzzy msgid "Revert to default style:" msgstr "デフォルトのサイズに戻す" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) #, fuzzy msgid "Abreviations" msgstr "アーティキュレーション" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) #, fuzzy msgid "accel" msgstr "臨時記号 (accidental)" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) #, fuzzy msgid "Strings" msgstr "歌曲" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) #, fuzzy msgid "norm" msgstr "いいえ" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) #, fuzzy msgid "quatre" msgstr "4 分音符 (quarter note)" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) #, fuzzy msgid "aniente" msgstr "臨時記号 (accidental)" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) #, fuzzy msgid "tupletbp" msgstr "連符" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) #, fuzzy msgid "noflag" msgstr "フラット (flat)" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "" @@ -10066,280 +11547,321 @@ msgstr "" # msgid "GNU LilyPond --- Learning" # msgstr "GNU LilyPond --- 学習マニュアル" # added by Sawada -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) #, fuzzy msgid "Instruments" msgstr "目次" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) #, fuzzy msgid "Score" msgstr "和音 (chord)" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) #, fuzzy msgid "testnotes" msgstr "脚注" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) #, fuzzy msgid "upline" msgstr "連符" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) msgid "refrain" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) #, fuzzy msgid "SoloNotes" msgstr "脚注" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) #, fuzzy msgid "SoloLyrics" msgstr "歌詞 (lyrics)" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) #, fuzzy msgid "SopranoNotes" msgstr "グレース ノート" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) #, fuzzy msgid "SopranoLyrics" msgstr "歌詞 (lyrics)" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) #, fuzzy msgid "BassLyrics" msgstr "歌詞 (lyrics)" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) #, fuzzy msgid "SopranoVoice" msgstr "ソプラノとチェロ" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" msgstr "" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "" @@ -10361,8 +11883,27 @@ msgstr "脚注" msgid "Table of Contents" msgstr "目次" -#~ msgid "set time signature and key" -#~ msgstr "拍子記号と調号をセットする" +#, fuzzy +#~ msgid "noclef" +#~ msgstr "音部記号 (clef)" + +#, fuzzy +#~ msgid "Colorado" +#~ msgstr "色 (color)" + +#~ msgid "Engraving" +#~ msgstr "譜刻" + +#~ msgid "Avoiding tweaks with slower processing" +#~ msgstr "処理に時間のかかる調整を避ける" + +#, fuzzy +#~ msgid "cresc" +#~ msgstr "クレッシェンド (crescendo)" + +#, fuzzy +#~ msgid "decresc" +#~ msgstr "デクレッシェンド (decrescendo)" #, fuzzy #~ msgid "the direction." diff --git a/Documentation/po/lilypond-doc.pot b/Documentation/po/lilypond-doc.pot index 1b0d074e27..ab5444e930 100644 --- a/Documentation/po/lilypond-doc.pot +++ b/Documentation/po/lilypond-doc.pot @@ -8,16 +8,11516 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-03 10:51+0100\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" + +#: postprocess_html.py:55 +#, python-format +msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)." +msgstr "" + +#: postprocess_html.py:57 +#, python-format +msgid "" +"We welcome your aid; please help us by " +"reporting errors to our bug list." +msgstr "" + +#: postprocess_html.py:69 +#, python-format +msgid "Other languages: %s." +msgstr "" + +#: postprocess_html.py:70 +#, python-format +msgid "About automatic language selection." +msgstr "" + +#: postprocess_html.py:330 +msgid "stable-branch" +msgstr "" + +#: postprocess_html.py:332 +msgid "development-branch" +msgstr "" + +#: translations-status.py:72 +msgid "Section titles" +msgstr "" + +#: translations-status.py:73 +#, python-format +msgid "Last updated %s" +msgstr "" + +#: translations-status.py:74 +msgid "Translators" +msgstr "" + +#: translations-status.py:74 +msgid "Translation checkers" +msgstr "" + +#: translations-status.py:75 +msgid "Translated" +msgstr "" + +#: translations-status.py:75 +msgid "Up to date" +msgstr "" + +#: translations-status.py:76 +msgid "Other info" +msgstr "" + +#: translations-status.py:78 +msgid "no" +msgstr "" + +#: translations-status.py:79 +msgid "not translated" +msgstr "" + +#: translations-status.py:81 +#, python-format +msgid "partially (%(p)d %%)" +msgstr "" + +#: translations-status.py:83 +#, python-format +msgid "partially translated (%(p)d %%)" +msgstr "" + +#: translations-status.py:84 translations-status.py:86 +msgid "yes" +msgstr "" + +#: translations-status.py:85 +msgid "translated" +msgstr "" + +#: translations-status.py:86 translations-status.py:87 +msgid "up to date" +msgstr "" + +#: translations-status.py:88 +msgid "partially" +msgstr "" + +#: translations-status.py:89 +msgid "partially up to date" +msgstr "" + +#: translations-status.py:90 +msgid "N/A" +msgstr "" + +#: translations-status.py:91 +msgid "pre-GDP" +msgstr "" + +#: translations-status.py:92 +msgid "post-GDP" +msgstr "" #. -*- coding: utf-8 -*- +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" +msgstr "" + +#. @node in Documentation/changes.tely +#. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi +msgid "Top" +msgstr "" + +#. @top in Documentation/changes.tely +msgid "New features in 2.16 since 2.14" +msgstr "" + +#. @top in Documentation/macros.itexi +msgid "LilyPond --- \\\\TITLE\\\\" +msgstr "" + +#. @subsubheading in Documentation/macros.itexi +msgid "Predefined commands" +msgstr "" + +#. @subsubheading in Documentation/macros.itexi +msgid "Selected Snippets" +msgstr "" + +#. @subsubheading in Documentation/macros.itexi +msgid "See also" +msgstr "" + +#. @subsubheading in Documentation/macros.itexi +msgid "Known issues and warnings" +msgstr "" + +#. @node in Documentation/essay.tely +#. @appendix in Documentation/essay.tely +#. @node in Documentation/extending.tely +#. @appendix in Documentation/extending.tely +#. @node in Documentation/learning.tely +#. @appendix in Documentation/learning.tely +#. @node in Documentation/notation.tely +#. @appendix in Documentation/notation.tely +#. @node in Documentation/usage.tely +#. @appendix in Documentation/usage.tely +msgid "LilyPond index" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @chapter in Documentation/essay/engraving.itely +msgid "Music engraving" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @section in Documentation/essay/engraving.itely +msgid "The LilyPond story" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @section in Documentation/essay/engraving.itely +msgid "Engraving details" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Music fonts" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Optical spacing" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Ledger lines" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Optical sizing" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Why work so hard?" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @section in Documentation/essay/engraving.itely +msgid "Automated engraving" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Beauty contests" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Improvement by benchmarking" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Getting things right" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @section in Documentation/essay/engraving.itely +msgid "Building software" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Music representation" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "What symbols to engrave?" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @unnumberedsubsec in Documentation/essay/engraving.itely +msgid "Flexible architecture" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @section in Documentation/essay/engraving.itely +msgid "Putting LilyPond to work" +msgstr "" + +#. @node in Documentation/essay/engraving.itely +#. @section in Documentation/essay/engraving.itely +msgid "Engraved examples (BWV 861)" +msgstr "" + +#. @node in Documentation/essay/literature.itely +#. @chapter in Documentation/essay/literature.itely +msgid "Literature list" +msgstr "" + +#. @node in Documentation/essay/literature.itely +#. @section in Documentation/essay/literature.itely +msgid "Short literature list" +msgstr "" + +#. @node in Documentation/essay/literature.itely +#. @section in Documentation/essay/literature.itely +msgid "Long literature list" +msgstr "" + +#. @subheading in Documentation/essay/literature.itely +msgid "University of Colorado Engraving music bibliography" +msgstr "" + +#. @subheading in Documentation/essay/literature.itely +msgid "Computer notation bibliography" +msgstr "" + +#. @subheading in Documentation/essay/literature.itely +msgid "Engraving bibliography" +msgstr "" + +#. @node in Documentation/fdl.itexi +#. @appendix in Documentation/fdl.itexi +#. @node in Documentation/fdl.itexi +#. @appendix in Documentation/fdl.itexi +#. @node in Documentation/fdl.itexi +#. @appendix in Documentation/fdl.itexi +#. @node in Documentation/fdl.itexi +#. @appendix in Documentation/fdl.itexi +#. @node in Documentation/fdl.itexi +#. @appendix in Documentation/fdl.itexi +#. @node in Documentation/fdl.itexi +#. @appendix in Documentation/fdl.itexi +msgid "GNU Free Documentation License" +msgstr "" + +#. @heading in Documentation/fdl.itexi +msgid "ADDENDUM: How to use this License for your documents" +msgstr "" + +#. Documentation/extending/scheme-tutorial.itely:791 (variable) +msgid "traLaLa" +msgstr "" + +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) +msgid "padText" +msgstr "" + +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) +msgid "tempoPadded" +msgstr "" + +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) +msgid "pattern" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @chapter in Documentation/extending/scheme-tutorial.itely +msgid "Scheme tutorial" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @section in Documentation/extending/scheme-tutorial.itely +msgid "Introduction to Scheme" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Scheme sandbox" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Scheme variables" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Scheme simple data types" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Scheme compound data types" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Pairs" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Lists" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Association lists (alists)" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Hash tables" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Calculations in Scheme" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Scheme procedures" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Defining procedures" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Predicates" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Return values" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Scheme conditionals" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "if" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "cond" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @section in Documentation/extending/scheme-tutorial.itely +msgid "Scheme in LilyPond" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "LilyPond Scheme syntax" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "LilyPond variables" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Input variables and Scheme" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Object properties" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "LilyPond compound variables" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Offsets" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Extents" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Property alists" +msgstr "" + +#. @subheading in Documentation/extending/scheme-tutorial.itely +msgid "Alist chains" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Internal music representation" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @section in Documentation/extending/scheme-tutorial.itely +msgid "Building complicated functions" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Displaying music expressions" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Music properties" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Doubling a note with slurs (example)" +msgstr "" + +#. @node in Documentation/extending/scheme-tutorial.itely +#. @subsection in Documentation/extending/scheme-tutorial.itely +msgid "Adding articulation to notes (example)" +msgstr "" + +#. Documentation/extending/programming-interface.itely:377 (variable) +msgid "manualBeam" +msgstr "" + +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) +msgid "AltOn" +msgstr "" + +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +msgid "AltOff" +msgstr "" + +#. Documentation/extending/programming-interface.itely:423 (variable) +msgid "withAlt" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @chapter in Documentation/extending/programming-interface.itely +msgid "Interfaces for programmers" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Lilypond code blocks" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Void scheme functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Music functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function usage" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Simple substitution functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Intermediate substitution functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Mathematics in functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Functions without arguments" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Void music functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Event functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Markup functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Markup construction in Scheme" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "How markups work internally" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "New markup command definition" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely +msgid "Markup command definition syntax" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely +msgid "On properties" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely +msgid "A complete example" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @unnumberedsubsubsec in Documentation/extending/programming-interface.itely +msgid "Adapting builtin commands" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "New markup list command definition" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Contexts for programmers" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Context evaluation" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Running a function on all layout objects" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Callback functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Inline Scheme code" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Difficult tweaks" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @chapter in Documentation/extending/programming-interface.itely +msgid "LilyPond Scheme interfaces" +msgstr "" + +#. Documentation/learning/tutorial.itely:210 (comment) +msgid "set the starting point to middle C" +msgstr "" + +#. Documentation/learning/tutorial.itely:241 (comment) +msgid "one octave above middle C" +msgstr "" + +#. Documentation/learning/tutorial.itely:257 (comment) +msgid "c is 1 staff space up, so is the c above" +msgstr "" + +#. Documentation/learning/tutorial.itely:258 (comment) +msgid "d is 2 up or 5 down, so is the d above" +msgstr "" + +#. Documentation/learning/tutorial.itely:259 (comment) +msgid "e is 3 up or 4 down, so is the e above" +msgstr "" + +#. Documentation/learning/tutorial.itely:260 (comment) +msgid "a is 6 up or 1 down, so is the a below" +msgstr "" + +#. Documentation/learning/tutorial.itely:261 (comment) +msgid "g is 5 up or 2 down, so is the g below" +msgstr "" + +#. Documentation/learning/tutorial.itely:262 (comment) +msgid "f is 4 up or 3 down, so is the f below" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @chapter in Documentation/learning/tutorial.itely +msgid "Tutorial" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @section in Documentation/learning/tutorial.itely +msgid "Compiling a file" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Entering input" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Producing output" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "MacOS X" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Windows" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Command-line" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @section in Documentation/learning/tutorial.itely +msgid "How to write input files" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Simple notation" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Pitches" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "pitch" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "interval" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) +msgid "scale" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "middle C" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "octave" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "accidental" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Durations (rhythms)" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "beam" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "duration" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "whole note" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "half note" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "quarter note" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "dotted note" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Rests" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "rest" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Time signature" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "time signature" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Tempo marks" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "tempo indication" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "metronome" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "Clef" +msgstr "" + +#. @rglos in Documentation/learning/tutorial.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +msgid "clef" +msgstr "" + +#. @subheading in Documentation/learning/tutorial.itely +msgid "All together" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Working on input files" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @section in Documentation/learning/tutorial.itely +msgid "Dealing with errors" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "General troubleshooting tips" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Some common errors" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @section in Documentation/learning/tutorial.itely +msgid "How to read the manuals" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Omitted material" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Clickable examples" +msgstr "" + +#. @node in Documentation/learning/tutorial.itely +#. @subsection in Documentation/learning/tutorial.itely +msgid "Overview of manuals" +msgstr "" + +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) +msgid "violin" +msgstr "" + +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) +msgid "cello" +msgstr "" + +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) +msgid "tripletA" +msgstr "" + +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) +msgid "barA" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) +msgid "foo" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @chapter in Documentation/learning/common-notation.itely +msgid "Common notation" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @section in Documentation/learning/common-notation.itely +msgid "Single staff notation" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Bar checks" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Accidentals and key signatures" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Accidentals" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "sharp" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "flat" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "double sharp" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "double flat" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Key signatures" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "key signature" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "major" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "minor" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Warning: key signatures and pitches" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "natural" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "transposition" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "Pitch names" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Ties and slurs" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Ties" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "tie" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Slurs" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "slur" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Phrasing slurs" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "phrasing" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Warnings: slurs vs. ties" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "articulation" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Articulation and dynamics" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Articulations" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Fingerings" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "fingering" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +#. @subheading in Documentation/learning/tweaks.itely +msgid "Dynamics" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "dynamics" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "crescendo" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "decrescendo" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Adding text" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Automatic and manual beams" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Advanced rhythmic commands" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Partial measure" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "anacrusis" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +#. Documentation/snippets/unfretted-headword.ly:93 (comment) +msgid "Tuplets" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "note value" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "triplet" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Grace notes" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "grace notes" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "acciaccatura" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "appoggiatura" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @section in Documentation/learning/common-notation.itely +msgid "Multiple notes at once" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Music expressions explained" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Analogy: mathematical expressions" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Simultaneous music expressions: multiple staves" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "polyphony" +msgstr "" + +#. @subheading in Documentation/learning/common-notation.itely +msgid "Simultaneous music expressions: single staff" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Multiple staves" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Staff groups" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "brace" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "staff" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @rglos in Documentation/learning/fundamental.itely +#. @rglos in Documentation/learning/tweaks.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely +msgid "system" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Combining notes into chords" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "chord" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Single staff polyphony" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @section in Documentation/learning/common-notation.itely +msgid "Songs" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Setting simple songs" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "lyrics" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Aligning lyrics to a melody" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "melisma" +msgstr "" + +#. @rglos in Documentation/learning/common-notation.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely +msgid "extender line" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Lyrics to multiple staves" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @section in Documentation/learning/common-notation.itely +msgid "Final touches" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Organizing pieces with variables" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Adding titles" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "Absolute note names" +msgstr "" + +#. @node in Documentation/learning/common-notation.itely +#. @subsection in Documentation/learning/common-notation.itely +msgid "After the tutorial" +msgstr "" + +#. Documentation/learning/fundamental.itely:320 (context id) +#. Documentation/learning/fundamental.itely:371 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +msgid "singer" +msgstr "" + +#. Documentation/learning/fundamental.itely:321 (context id) +#. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) +msgid "vocal" +msgstr "" + +#. Documentation/learning/fundamental.itely:324 (context id) +#. Documentation/learning/fundamental.itely:375 (context id) +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) +msgid "piano" +msgstr "" + +#. Documentation/learning/fundamental.itely:325 (context id) +#. Documentation/learning/fundamental.itely:366 (variable) +#. Documentation/learning/fundamental.itely:376 (context id) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) +msgid "upper" +msgstr "" + +#. Documentation/learning/fundamental.itely:326 (context id) +#. Documentation/learning/fundamental.itely:367 (variable) +#. Documentation/learning/fundamental.itely:377 (context id) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) +msgid "lower" +msgstr "" + +#. Documentation/learning/fundamental.itely:364 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) +msgid "melody" +msgstr "" + +#. Documentation/learning/fundamental.itely:365 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) +msgid "text" +msgstr "" + +#. Documentation/learning/fundamental.itely:439 (context id) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) +msgid "main" +msgstr "" + +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) +msgid "Voice \\\"1\\\" Voice \\\"2\\\"" +msgstr "" + +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) +msgid "Voice \\\"1\\\" Voice \\\"2\\\"" +msgstr "" + +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) +msgid "Voice \\\"1\\\"" +msgstr "" + +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) +msgid "Voice \\\"2\\\"" +msgstr "" + +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) +msgid "Main voice" +msgstr "" + +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) +msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" +msgstr "" + +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) +msgid "Bar 1" +msgstr "" + +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) +msgid "Bar 2" +msgstr "" + +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) +msgid "Voice 1 continues" +msgstr "" + +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) +msgid "Voice 2 continues" +msgstr "" + +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) +msgid "Voice one" +msgstr "" + +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) +msgid "Voice two" +msgstr "" + +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) +msgid "Omit Voice three" +msgstr "" + +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) +msgid "Voice four" +msgstr "" + +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) +msgid "Default behavior or behavior after \\oneVoice" +msgstr "" + +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) +msgid "The following notes are monophonic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) +msgid "Start simultaneous section of three voices" +msgstr "" + +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) +msgid "Continue the main voice in parallel" +msgstr "" + +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) +msgid "Initiate second voice" +msgstr "" + +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) +msgid "Set stems, etc., down" +msgstr "" + +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) +msgid "Initiate third voice" +msgstr "" + +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) +msgid "Set stems, etc, up" +msgstr "" + +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) +msgid "Initiate first voice" +msgstr "" + +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) +msgid "Set stems, etc, down" +msgstr "" + +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) +msgid "one" +msgstr "" + +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) +msgid "global" +msgstr "" + +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) +msgid "SopOneMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) +msgid "SopOneLyrics" +msgstr "" + +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) +msgid "SopTwoMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) +msgid "SopTwoLyrics" +msgstr "" + +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) +msgid "SopOne" +msgstr "" + +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) +msgid "SopTwo" +msgstr "" + +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) +msgid "keyTime" +msgstr "" + +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) +msgid "SopMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) +msgid "AltoMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) +msgid "TenorMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) +msgid "BassMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) +msgid "VerseOne" +msgstr "" + +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) +msgid "VerseTwo" +msgstr "" + +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) +msgid "VerseThree" +msgstr "" + +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) +msgid "VerseFour" +msgstr "" + +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) +msgid "Sop" +msgstr "" + +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) +msgid "Alto" +msgstr "" + +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) +msgid "Tenor" +msgstr "" + +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) +msgid "Bass" +msgstr "" + +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) +msgid "start of single compound music expression" +msgstr "" + +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) +msgid "start of simultaneous staves section" +msgstr "" + +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) +msgid "create RH staff" +msgstr "" + +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) +msgid "create voice for RH notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) +msgid "start of RH notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) +msgid "end of RH notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) +msgid "end of RH voice" +msgstr "" + +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) +msgid "end of RH staff" +msgstr "" + +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) +msgid "create LH staff; needs two simultaneous voices" +msgstr "" + +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) +msgid "create LH voice one" +msgstr "" + +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) +msgid "start of LH voice one notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) +msgid "end of LH voice one notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) +msgid "end of LH voice one" +msgstr "" + +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) +msgid "create LH voice two" +msgstr "" + +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) +msgid "start of LH voice two notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) +msgid "end of LH voice two notes" +msgstr "" + +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) +msgid "end of LH voice two" +msgstr "" + +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) +msgid "end of LH staff" +msgstr "" + +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) +msgid "end of simultaneous staves section" +msgstr "" + +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) +msgid "end of single compound music expression" +msgstr "" + +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) +msgid "Wrong!" +msgstr "" + +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) +msgid "make note heads smaller" +msgstr "" + +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) +msgid "make note heads larger" +msgstr "" + +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) +msgid "return to default size" +msgstr "" + +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +msgid "sopranoMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) +msgid "sopranoLyrics" +msgstr "" + +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) +msgid "celloMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) +msgid "sopranoWords" +msgstr "" + +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) +msgid "altoMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) +msgid "altoWords" +msgstr "" + +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) +msgid "tenorMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) +msgid "tenorWords" +msgstr "" + +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) +msgid "bassMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) +msgid "bassWords" +msgstr "" + +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) +msgid "combine ChoirStaff and PianoStaff in parallel" +msgstr "" + +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) +msgid "sopranos" +msgstr "" + +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) +msgid "altos" +msgstr "" + +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) +msgid "tenors" +msgstr "" + +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) +msgid "basses" +msgstr "" + +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) +msgid "end ChoirStaff" +msgstr "" + +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) +msgid "ManualOneVoiceOneMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) +msgid "ManualOneVoiceTwoMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) +msgid "ManualTwoMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) +msgid "PedalOrganMusic" +msgstr "" + +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) +msgid "PianoStaff and Pedal Staff must be simultaneous" +msgstr "" + +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) +msgid "ManualOne" +msgstr "" + +#. Documentation/learning/fundamental.itely:2926 (comment) +msgid "set key and time signature" +msgstr "" + +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) +msgid "end ManualOne Staff context" +msgstr "" + +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) +msgid "ManualTwo" +msgstr "" + +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) +msgid "end ManualTwo Staff context" +msgstr "" + +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) +msgid "end PianoStaff context" +msgstr "" + +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) +msgid "PedalOrgan" +msgstr "" + +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) +msgid "end PedalOrgan Staff context" +msgstr "" + +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) +msgid "end Score context" +msgstr "" + +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) +msgid "hornNotes" +msgstr "" + +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) +msgid "fragmentA" +msgstr "" + +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) +msgid "fragmentB" +msgstr "" + +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) +msgid "dolce" +msgstr "" + +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) +msgid "fthenp" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @chapter in Documentation/learning/fundamental.itely +msgid "Fundamental concepts" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @section in Documentation/learning/fundamental.itely +msgid "How LilyPond input files work" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Introduction to the LilyPond file structure" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Score is a (single) compound musical expression" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Nesting music expressions" +msgstr "" + +#. @rglos in Documentation/learning/fundamental.itely +#. @rglos in Documentation/learning/tweaks.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely +msgid "ossia" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "On the un-nestedness of brackets and ties" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @section in Documentation/learning/fundamental.itely +msgid "Voices contain music" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "I'm hearing Voices" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Explicitly instantiating voices" +msgstr "" + +#. @subsubheading in Documentation/learning/fundamental.itely +msgid "Note columns" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Voices and vocals" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @section in Documentation/learning/fundamental.itely +msgid "Contexts and engravers" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Contexts explained" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Creating contexts" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Engravers explained" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Modifying context properties" +msgstr "" + +#. @subsubheading in Documentation/learning/fundamental.itely +msgid "Setting context properties with @code{\\\\with}" +msgstr "" + +#. @subsubheading in Documentation/learning/fundamental.itely +msgid "Setting context properties with @code{\\\\context}" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Adding and removing engravers" +msgstr "" + +#. @subsubheading in Documentation/learning/fundamental.itely +msgid "Changing a single context" +msgstr "" + +#. @rglos in Documentation/learning/fundamental.itely +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +msgid "ambitus" +msgstr "" + +#. @subsubheading in Documentation/learning/fundamental.itely +msgid "Changing all contexts of the same type" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @section in Documentation/learning/fundamental.itely +msgid "Extending the templates" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Soprano and cello" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Four-part SATB vocal score" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Building a score from scratch" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Saving typing with variables and functions" +msgstr "" + +#. @node in Documentation/learning/fundamental.itely +#. @subsection in Documentation/learning/fundamental.itely +msgid "Scores and parts" +msgstr "" + +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) +msgid "Increase thickness of all following slurs from 1.2 to 5.0" +msgstr "" + +#. Documentation/learning/tweaks.itely:675 (comment) +#. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) +msgid "Increase thickness of immediately following slur only" +msgstr "" + +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) +msgid "Revert thickness of all following slurs to default of 1.2" +msgstr "" + +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) +msgid "Don't print clefs in this staff" +msgstr "" + +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) +msgid "Don't print time signatures in this staff" +msgstr "" + +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) +msgid "Reduce all font sizes by ~24%" +msgstr "" + +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) +msgid "Reduce stem length and line spacing to match" +msgstr "" + +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) +msgid "Set details for later Text Spanner" +msgstr "" + +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) +msgid "Place dynamics above staff" +msgstr "" + +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) +msgid "Start Ottava Bracket" +msgstr "" + +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) +msgid "Add Dynamic Text and hairpin" +msgstr "" + +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) +msgid "Add Text Script" +msgstr "" + +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) +msgid "Add Dynamic Text and terminate hairpin" +msgstr "" + +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) +msgid "Stop Ottava Bracket" +msgstr "" + +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) +msgid "Place following Ottava Bracket below Text Spanners" +msgstr "" + +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) +msgid "Add Dynamic Text" +msgstr "" + +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) +msgid "Add Dynamic Line Spanner" +msgstr "" + +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) +msgid "Cause notes to space out to accommodate text" +msgstr "" + +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) +msgid "This markup is short enough to fit without collision" +msgstr "" + +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) +msgid "This is too long to fit, so it is displaced upwards" +msgstr "" + +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) +msgid "Turn off collision avoidance" +msgstr "" + +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) +msgid "and turn on textLengthOn" +msgstr "" + +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) +msgid "Spaces at end are honored" +msgstr "" + +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) +msgid "Extend width by 1 staff space" +msgstr "" + +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) +msgid "This will not work, see below" +msgstr "" + +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) +msgid "This works" +msgstr "" + +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) +msgid "sesquisharp" +msgstr "" + +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) +msgid "This prints a sesquisharp but the spacing is too small" +msgstr "" + +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) +msgid "This improves the spacing" +msgstr "" + +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) +msgid "Extend width by 1 unit" +msgstr "" + +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) +msgid "Align dynamics to a base line 2 units above staff" +msgstr "" + +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) +msgid "rhMusic" +msgstr "" + +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) +msgid "Start polyphonic section of four voices" +msgstr "" + +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) +msgid "continuation of main voice" +msgstr "" + +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) +msgid "lhMusic" +msgstr "" + +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) +msgid "RH" +msgstr "" + +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) +msgid "LH" +msgstr "" + +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +msgid "Move the c2 out of the main note column" +msgstr "" + +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" +msgstr "" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) +msgid "Stem on the d2 must be down to permit merging" +msgstr "" + +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) +msgid "Reposition the c2 to the right of the merged note" +msgstr "" + +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) +msgid "Stem on the d2 should be invisible" +msgstr "" + +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) +msgid "Visible tempo marking" +msgstr "" + +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) +msgid "Invisible tempo marking to lengthen fermata in MIDI" +msgstr "" + +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) +msgid "New tempo for next section" +msgstr "" + +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) +msgid "emphasize" +msgstr "" + +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) +msgid "normal" +msgstr "" + +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) +msgid "SopranoMusic" +msgstr "" + +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) +msgid "Soprano" +msgstr "" + +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) +msgid "mpdolce" +msgstr "" + +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) +msgid "inst" +msgstr "" + +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) +msgid "Arrange to obtain color from color-notehead procedure" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @chapter in Documentation/learning/tweaks.itely +msgid "Tweaking output" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @section in Documentation/learning/tweaks.itely +msgid "Tweaking basics" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Introduction to tweaks" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Objects and interfaces" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Naming conventions of objects and properties" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Tweaking methods" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @section in Documentation/learning/tweaks.itely +msgid "The Internals Reference manual" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Properties of layout objects" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Finding the context" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Overriding once only" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Reverting" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Properties found in interfaces" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Specifying the context in lyric mode" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Types of properties" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @section in Documentation/learning/tweaks.itely +msgid "Appearance of objects" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Visibility and color of objects" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "stencil" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "break-visibility" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "transparent" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "color" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Size of objects" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Length and thickness of objects" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @section in Documentation/learning/tweaks.itely +msgid "Placement of objects" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Automatic behavior" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Within-staff objects" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/learning/tweaks.itely +msgid "Fingering" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Outside-staff objects" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "\\\\textLengthOn" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Grob sizing" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @section in Documentation/learning/tweaks.itely +msgid "Collisions of objects" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Moving objects" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Fixing overlapping notation" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "padding property" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "right-padding" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "staff-padding property" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "self-alignment-X property" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "staff-position property" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "extra-offset property" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "positions property" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "force-hshift property" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Real music example" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @section in Documentation/learning/tweaks.itely +msgid "Further tweaking" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Other uses for tweaks" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Tying notes across voices" +msgstr "" + +#. @subheading in Documentation/learning/tweaks.itely +msgid "Simulating a fermata in MIDI" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Using variables for tweaks" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Style sheets" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Other sources of information" +msgstr "" + +#. @node in Documentation/learning/tweaks.itely +#. @subsection in Documentation/learning/tweaks.itely +msgid "Advanced tweaks with Scheme" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendix in Documentation/learning/templates.itely +msgid "Templates" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +msgid "Single staff" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Notes only" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Notes and lyrics" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Notes and chords" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Notes, lyrics, and chords." +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +msgid "Piano templates" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Solo piano" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Piano and melody with lyrics" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Piano centered lyrics" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Piano centered dynamics" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "String quartet" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "String quartet parts" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +msgid "Vocal ensembles" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "SATB vocal score" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "SATB vocal score and automatic piano reduction" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "SATB with aligned contexts" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "SATB on four staves" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Solo verse and two-part refrain" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Hymn tunes" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Psalms" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +msgid "Orchestral templates" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Orchestra, choir and piano" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +msgid "Ancient notation templates" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Transcription of mensural music" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Gregorian transcription template" +msgstr "" + +#. @node in Documentation/learning/templates.itely +#. @appendixsec in Documentation/learning/templates.itely +msgid "Other templates" +msgstr "" + +#. @appendixsubsec in Documentation/learning/templates.itely +msgid "Jazz combo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @chapter in Documentation/music-glossary.tely +msgid "Musical terms A-Z" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) +msgid "A" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "a due" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "accelerando" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "accent" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "accessory" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "adagio" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "al niente" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "alla breve" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "allegro" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "alteration" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) +msgid "alto" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "alto clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ancient minor scale" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "andante" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "arpeggio" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ascending interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "augmentation" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "augmented interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "autograph" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) +msgid "B" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "backfall" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bar" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bar line" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "baritone" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "baritone clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) +msgid "bass" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bass clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "beat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "beat repeat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bind" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bracket" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "brass" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "breath mark" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "breve" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "C" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "C clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "cadence" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "cadenza" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/breathing-signs.ly:39 (comment) +msgid "caesura" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "canon" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "cent" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "central C" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "chromatic scale" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "chromaticism" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "church mode" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "cluster" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "comma" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "common meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "Common Practice Period" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "common time" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "complement" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "compound interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "compound meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "compound time" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "concert pitch" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "conjunct movement" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "consonance" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "contralto" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "copying music" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "counterpoint" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "countertenor" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "cue-notes" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "custos" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "cut time" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "D" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "da capo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dal niente" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dal segno" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "descending interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "diatonic scale" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "didymic comma" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "diminished interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "diminuendo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "diminution" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "direct" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "disjunct movement" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dissonance" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dissonant interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "divisio" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "doit" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dominant" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dominant ninth chord" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dominant seventh chord" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dorian mode" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "dot (augmentation dot)" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "double appoggiatura" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "double bar line" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "double dotted note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "double time signature" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "double trill" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "duple meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "duplet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "E" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ecclesiastical mode" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "eighth note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "eighth rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "elision" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "embellishment" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "engraving" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "enharmonic" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "equal temperament" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "expression mark" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "F" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "F clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "fall" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "feathered beam" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "fermata" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "fifth" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "figured bass" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "flag" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "flageolet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "forefall" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "forte" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "fourth" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "Frenched score" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "Frenched staff" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "Frenched staves" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "fugue" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "functional harmony" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "G" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "G clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "glissando" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "grand staff" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "grave" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "gruppetto" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "H" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "hairpin" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "half rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "harmonic cadence" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) +msgid "harmonics" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "harmony" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "hemiola" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "homophony" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "hook" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "hymn meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "inversion" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "inverted interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "just intonation" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "key" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "laissez vibrer" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "largo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "leading note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ledger line" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "legato" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "legato curve" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "leger line" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ligature" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "lilypond" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "line" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "loco" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "long appoggiatura" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "longa" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "lyric tie" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "major interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "maxima" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "meantone temperament" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "measure" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "measure repeat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mediant" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "melisma line" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "melodic cadence" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mensural notation" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mensuration sign" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "metronome mark" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "metronomic indication" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mezzo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mezzo-soprano" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "minor interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mixolydian mode" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mode" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "modulation" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "mordent" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "motif" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "motive" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "movement" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "multi-measure rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "neighbor tones" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ninth" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "non-legato" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "note head" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "note names" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "octavation" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "octave mark" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "octave marking" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "octave sign" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ornament" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) +msgid "part" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "pause" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "pennant" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "percent repeat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "percussion" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "perfect interval" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "phrase" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "pickup" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "pizzicato" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "polymeter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "polymetric" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "polymetric time signature" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "portato" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "power chord" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "presto" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "proportion" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "Pythagorean comma" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "quadruplet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "quality" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "quarter rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "quarter tone" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "quintuplet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "rallentando" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "relative key" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "repeat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) +msgid "rhythm" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ritardando" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "ritenuto" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "scale degree" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "scordatura" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "score" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "second" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "semibreve" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "semitone" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "seventh" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sextolet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sextuplet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "shake" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "simile" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "simple meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sixteenth note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sixteenth rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sixth" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sixty-fourth note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sixty-fourth rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "slash repeat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "solmization" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sonata" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sonata form" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "song texts" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) +msgid "soprano" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "staccato" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "staves" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "stem" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "stringendo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "strings" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "strong beat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "subdominant" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "submediant" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "subtonic" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sul G" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "superdominant" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "supertonic" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "symphony" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "syncopation" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "syntonic comma" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "temperament" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) +msgid "tenor" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tenth" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tenuto" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "third" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "thirty-second note" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "thirty-second rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "thorough bass" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "time" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tone" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tonic" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "transposing instrument" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "treble clef" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tremolo" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "triad" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "trill" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "triple meter" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tritone" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tuning fork" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "tuplet" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "turn" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "unison" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "upbeat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "voice" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "volta" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "weak beat" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "whole rest" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "whole tone" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "woodwind" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @chapter in Documentation/music-glossary.tely +msgid "Duration names notes and rests" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @chapter in Documentation/music-glossary.tely +msgid "Non-Western terms A-Z" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "bayati" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "iraq" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "kurd" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "makam" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "makamlar" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "maqam" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "rast" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "semai" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "sikah" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @section in Documentation/music-glossary.tely +msgid "taqasim" +msgstr "" + +#. @node in Documentation/music-glossary.tely +#. @appendix in Documentation/music-glossary.tely +msgid "Literature used" +msgstr "" + +#. @node in Documentation/notation.tely +#. @appendix in Documentation/notation.tely +msgid "LilyPond grammar" +msgstr "" + +#. @node in Documentation/notation.tely +#. @appendix in Documentation/notation.tely +msgid "LilyPond command index" +msgstr "" + +#. @node in Documentation/notation/notation.itely +#. @chapter in Documentation/notation/notation.itely +msgid "Musical notation" +msgstr "" + +#. @node in Documentation/notation/specialist.itely +#. @chapter in Documentation/notation/specialist.itely +msgid "Specialist notation" +msgstr "" + +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "" + +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" +msgstr "" + +#. Documentation/notation/input.itely:1606 (variable) +msgid "allLyrics" +msgstr "" + +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) +#. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) +msgid "music" +msgstr "" + +#. Documentation/notation/input.itely:1792 (variable) +msgid "test" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @chapter in Documentation/notation/input.itely +msgid "General input and output" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Input structure" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Structure of a score" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Multiple scores in a book" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Multiple output files from one input file" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Output file names" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "File structure" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Titles and headers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Creating titles headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Custom headers footers and titles" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Creating footnotes" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Footnotes overview" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Manual footnotes" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Reference to page numbers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Table of contents" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Working with input files" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Including LilyPond files" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Different editions from one source" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using variables" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using tags" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Text encoding" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Controlling output" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Extracting fragments of music" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Skipping corrected music" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Alternative output formats" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Replacing the notation font" +msgstr "" + +#. @subsubheading in Documentation/notation/input.itely +msgid "Installation Instructions for MacOS" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "MIDI output" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Creating MIDI files" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Instrument names" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "MIDI block" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "What goes into the MIDI output?" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Supported in MIDI" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unsupported in MIDI" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Repeats in MIDI" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Controlling MIDI dynamics" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Dynamic marks" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Overall MIDI volume" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Equalizing different instruments (i)" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Equalizing different instruments (ii)" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Percussion in MIDI" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" +msgstr "" + +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" +msgstr "" + +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." +msgstr "" + +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" +msgstr "" + +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" +msgstr "" + +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" +msgstr "" + +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." +msgstr "" + +#. Documentation/notation/spacing.itely:2097 (comment) +msgid "By setting 'padding to a negative value, staves can be made to" +msgstr "" + +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." +msgstr "" + +#. Documentation/notation/spacing.itely:2529 (comment) +msgid "this time the text will be closer to the staff" +msgstr "" + +#. Documentation/notation/spacing.itely:2531 (comment) +msgid "by setting outside-staff-priority to a non-number," +msgstr "" + +#. Documentation/notation/spacing.itely:2532 (comment) +msgid "we disable the automatic collision avoidance" +msgstr "" + +#. Documentation/notation/spacing.itely:2535 (comment) +msgid "now they will collide" +msgstr "" + +#. Documentation/notation/spacing.itely:2561 (comment) +msgid "the markup is too close to the following note" +msgstr "" + +#. Documentation/notation/spacing.itely:2565 (comment) +msgid "setting outside-staff-horizontal-padding fixes this" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @chapter in Documentation/notation/spacing.itely +msgid "Spacing issues" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Page layout" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "The \\\\paper block" +msgstr "" + +#. @subsection in Documentation/notation/spacing.itely +msgid "The @code{\\\\paper} block" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Paper size and automatic scaling" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Setting paper size" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Automatic scaling to paper size" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "Fixed vertical spacing \\\\paper variables" +msgstr "" + +#. @subsection in Documentation/notation/spacing.itely +msgid "Fixed vertical spacing @code{\\\\paper} variables" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "Flexible vertical spacing \\\\paper variables" +msgstr "" + +#. @subsection in Documentation/notation/spacing.itely +msgid "Flexible vertical spacing @code{\\\\paper} variables" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Structure of flexible vertical spacing alists" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "List of flexible vertical spacing \\\\paper variables" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "List of flexible vertical spacing @code{\\\\paper} variables" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "Horizontal spacing \\\\paper variables" +msgstr "" + +#. @subsection in Documentation/notation/spacing.itely +msgid "Horizontal spacing @code{\\\\paper} variables" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for widths and margins" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for widths and margins" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for two-sided mode" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for two-sided mode" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for shifts and indents" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for shifts and indents" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "Other \\\\paper variables" +msgstr "" + +#. @subsection in Documentation/notation/spacing.itely +msgid "Other @code{\\\\paper} variables" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for line breaking" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for line breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for page breaking" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for page breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "\\\\paper variables for page numbering" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "@code{\\\\paper} variables for page numbering" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "Miscellaneous \\\\paper variables" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Miscellaneous @code{\\\\paper} variables" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Score layout" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +msgid "The \\\\layout block" +msgstr "" + +#. @subsection in Documentation/notation/spacing.itely +msgid "The @code{\\\\layout} block" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Setting the staff size" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Breaks" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Line breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Page breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Optimal page breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Optimal page turning" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Minimal page breaking" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Explicit breaks" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Using an extra voice for breaks" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Vertical spacing" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Flexible vertical spacing within systems" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Within-system spacing properties" +msgstr "" + +#. @subsubheading in Documentation/notation/spacing.itely +msgid "Properties of the @code{VerticalAxisGroup} grob" +msgstr "" + +#. @subsubheading in Documentation/notation/spacing.itely +msgid "Properties of the @code{StaffGrouper} grob" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Spacing of ungrouped staves" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Spacing of grouped staves" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @unnumberedsubsubsec in Documentation/notation/spacing.itely +msgid "Spacing of non-staff lines" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Explicit staff and system positioning" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Vertical collision avoidance" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Horizontal spacing" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Horizontal spacing overview" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "New spacing area" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Changing horizontal spacing" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Line length" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Proportional notation" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @section in Documentation/notation/spacing.itely +msgid "Fitting music onto fewer pages" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Displaying spacing" +msgstr "" + +#. @node in Documentation/notation/spacing.itely +#. @subsection in Documentation/notation/spacing.itely +msgid "Changing spacing" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:450 (variable) +msgid "musicA" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:451 (variable) +msgid "musicB" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:452 (variable) +msgid "keepVoicesAlive" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:454 (comment) +msgid "Keep Voice \\\"A\\\" alive for 5 bars" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:455 (comment) +msgid "Keep Voice \\\"B\\\" alive for 5 bars" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) +msgid "accompaniment" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) +msgid "words" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:498 (comment) +msgid "Keep Voice \\\"melody\\\" alive for 4 bars" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) +msgid "skip a bar" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) +msgid "default space between staves" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2044 (comment) +msgid "reduced space between staves" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2046 (comment) +msgid "this is the nested declaration" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2473 (comment) +msgid "increase the length of the tie" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2482 (comment) +msgid "increase the length of the rest bar" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2490 (comment) +msgid "increase the length of the hairpin" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2518 (comment) +msgid "default" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) +msgid "not effective alone" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) +msgid "effective only when both overrides are present" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2915 (comment) +msgid "Remove bar line at the end of the current line" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2961 (comment) +msgid "Try to remove all key signatures" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3384 (comment) +msgid "move horizontally left" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3386 (comment) +msgid "move vertically up" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3387 (comment) +msgid "third finger" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) +msgid "The rehearsal mark will be centered above the Clef" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3441 (comment) +msgid "The rehearsal mark will be centered above the Time Signature" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3448 (comment) +msgid "The rehearsal mark will be centered above the Breath Mark" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3468 (comment) +msgid "The rehearsal mark will be centered above the Key Signature" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3481 (comment) +msgid "The rehearsal mark will be centered above the Bar Line" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3496 (comment) +msgid "The RehearsalMark will be centered above the Key Signature" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) +msgid "" +"The RehearsalMark will be aligned with the left edge of the Key Signature" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3508 (comment) +msgid "" +"The RehearsalMark will be aligned with the right edge of the Key Signature" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3520 (comment) +msgid "and then shifted right by 3.5 staff-spaces" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3527 (comment) +msgid "and then shifted left by 2 staff-spaces" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3575 (variable) +msgid "XinO" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:3821 (variable) +msgid "custosNote" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @chapter in Documentation/notation/changing-defaults.itely +msgid "Changing defaults" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @section in Documentation/notation/changing-defaults.itely +msgid "Interpretation contexts" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Score - the master of all contexts" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Top-level contexts - staff containers" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Intermediate-level contexts - staves" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Bottom-level contexts - voices" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Keeping contexts alive" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Modifying context plug-ins" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Changing context default settings" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Defining new contexts" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Context layout order" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @section in Documentation/notation/changing-defaults.itely +msgid "Explaining the Internals Reference" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Navigating the program reference" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Layout interfaces" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Determining the grob property" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Naming conventions" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @section in Documentation/notation/changing-defaults.itely +msgid "Modifying properties" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Overview of modifying properties" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "The set command" +msgstr "" + +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "The @code{@bs{}set} command" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "The override command" +msgstr "" + +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "The @code{\\\\override} command" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "The tweak command" +msgstr "" + +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "The @code{\\\\tweak} command" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "set versus override" +msgstr "" + +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "@code{\\\\set} vs. @code{\\\\override}" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Modifying alists" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @section in Documentation/notation/changing-defaults.itely +msgid "Useful concepts and properties" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Input modes" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Direction and placement" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Distances and measurements" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Staff symbol properties" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Spanners" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{spanner-interface}" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{line-spanner-interface}" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Visibility of objects" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Removing the stencil" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Making objects transparent" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Painting objects white" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using break-visibility" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Special considerations" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Line styles" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Rotating objects" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Rotating layout objects" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Rotating markup" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @section in Documentation/notation/changing-defaults.itely +msgid "Advanced tweaks" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Aligning objects" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "Setting X-offset and Y-offset directly" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Setting @code{X-offset} and @code{Y-offset} directly" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "Using the side-position-interface" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{side-position-interface}" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "Using the self-alignment-interface" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{self-alignment-interface}" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{aligned-on-parent} procedures" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{centered-on-parent} procedures" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +msgid "Using the break-alignable-interface" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Using the @code{break-alignable-interface}" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Vertical grouping of grobs" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Modifying stencils" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Modifying shapes" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @unnumberedsubsubsec in Documentation/notation/changing-defaults.itely +msgid "Modifying ties and slurs" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @section in Documentation/notation/changing-defaults.itely +msgid "Using music functions" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Substitution function syntax" +msgstr "" + +#. @node in Documentation/notation/changing-defaults.itely +#. @subsection in Documentation/notation/changing-defaults.itely +msgid "Substitution function examples" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendix in Documentation/notation/notation-appendices.itely +msgid "Notation manual tables" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Chord name chart" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Common chord modifiers" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined string tunings" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined fretboard diagrams" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "MIDI instruments" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of colors" +msgstr "" + +#. @subsubheading in Documentation/notation/notation-appendices.itely +msgid "Normal colors" +msgstr "" + +#. @subsubheading in Documentation/notation/notation-appendices.itely +msgid "X color names" +msgstr "" + +#. @subsubheading in Documentation/notation/notation-appendices.itely +msgid "Color Names without a numerical suffix:" +msgstr "" + +#. @subsubheading in Documentation/notation/notation-appendices.itely +msgid "Color names with a numerical suffix" +msgstr "" + +#. @subsubheading in Documentation/notation/notation-appendices.itely +msgid "Grey Scale" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "The Feta font" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Clef glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Time Signature glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Number glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Accidental glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Default Notehead glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Special Notehead glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Shape-note Notehead glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Rest glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Flag glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Dot glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Dynamic glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Script glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Arrowhead glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Bracket-tip glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Pedal glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Accordion glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Vaticana glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Medicaea glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Hufnagel glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Mensural glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Neomensural glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Petrucci glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Solesmes glyphs" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Note head styles" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Text markup commands" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Text markup list commands" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of articulations" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Articulation scripts" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Ornament scripts" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Fermata scripts" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Instrument-specific scripts" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Repeat sign scripts" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Ancient scripts" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Percussion notes" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Technical glossary" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "alist" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "callback" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "closure" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "glyph" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "grob" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "immutable" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "interface" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "lexer" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "mutable" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "output-def" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "parser" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "parser variable" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "prob" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "simple closure" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "smob" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "All context properties" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Layout properties" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Available music functions" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Context modification identifiers" +msgstr "" + +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined type predicates" +msgstr "" + +#. @node in Documentation/notation/cheatsheet.itely +#. @appendix in Documentation/notation/cheatsheet.itely +msgid "Cheat sheet" +msgstr "" + +#. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "" + +#. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + +#. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\\\\\TEXT\\\\\\\\" +msgstr "" + +#. @node in Documentation/usage/running.itely +msgid "Running lilypond" +msgstr "" + +#. @chapter in Documentation/usage/running.itely +msgid "Running @command{lilypond}" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @section in Documentation/usage/running.itely +msgid "Normal usage" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @section in Documentation/usage/running.itely +msgid "Command-line usage" +msgstr "" + +#. @node in Documentation/usage/running.itely +msgid "Invoking lilypond" +msgstr "" + +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Invoking @command{lilypond}" +msgstr "" + +#. @unnumberedsubsubsec in Documentation/usage/running.itely +msgid "Standard shell commands" +msgstr "" + +#. @node in Documentation/usage/running.itely +msgid "Command line options for lilypond" +msgstr "" + +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Command line options for @command{lilypond}" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Environment variables" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "LilyPond in chroot jail" +msgstr "" + +#. @subheading in Documentation/usage/running.itely +msgid "Example script for 32-bit Ubuntu 8.04" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @section in Documentation/usage/running.itely +msgid "Error messages" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @section in Documentation/usage/running.itely +msgid "Common errors" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Music runs off the page" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "An extra staff appears" +msgstr "" + +#. @node in Documentation/usage/running.itely +msgid "Apparent error in ../ly/init.ly" +msgstr "" + +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Apparent error in @code{../ly/init.ly}" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Error message Unbound variable %" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Error message FT_Get_Glyph_Name" +msgstr "" + +#. @node in Documentation/usage/running.itely +#. @unnumberedsubsec in Documentation/usage/running.itely +msgid "Warning staff affinities should only decrease" +msgstr "" + +#. @node in Documentation/usage/updating.itely +msgid "Updating files with convert-ly" +msgstr "" + +#. @chapter in Documentation/usage/updating.itely +msgid "Updating files with @command{convert-ly}" +msgstr "" + +#. @node in Documentation/usage/updating.itely +#. @section in Documentation/usage/updating.itely +msgid "Why does the syntax change?" +msgstr "" + +#. @node in Documentation/usage/updating.itely +msgid "Invoking convert-ly" +msgstr "" + +#. @section in Documentation/usage/updating.itely +msgid "Invoking @command{convert-ly}" +msgstr "" + +#. @node in Documentation/usage/updating.itely +msgid "Command line options for convert-ly" +msgstr "" + +#. @section in Documentation/usage/updating.itely +msgid "Command line options for @command{convert-ly}" +msgstr "" + +#. @node in Documentation/usage/updating.itely +msgid "Problems running convert-ly" +msgstr "" + +#. @section in Documentation/usage/updating.itely +msgid "Problems running @code{convert-ly}" +msgstr "" + +#. @node in Documentation/usage/updating.itely +#. @section in Documentation/usage/updating.itely +msgid "Manual conversions" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +msgid "lilypond-book" +msgstr "" + +#. @chapter in Documentation/usage/lilypond-book.itely +msgid "Running @command{lilypond-book}" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +msgid "An example of a musicological document" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Input" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Processing" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Output" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +msgid "Integrating music and text" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @subsection in Documentation/usage/lilypond-book.itely +msgid "LaTeX" +msgstr "" + +#. @subsection in Documentation/usage/lilypond-book.itely +#. @subsubheading in Documentation/usage/lilypond-book.itely +msgid "@LaTeX{}" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @subsection in Documentation/usage/lilypond-book.itely +#. @subsubheading in Documentation/usage/lilypond-book.itely +#. @subsection in Documentation/usage/lilypond-book.itely +msgid "Texinfo" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @subsection in Documentation/usage/lilypond-book.itely +msgid "HTML" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @subsection in Documentation/usage/lilypond-book.itely +msgid "DocBook" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Common conventions" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Including a LilyPond file" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Including LilyPond code" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Processing the DocBook document" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +msgid "Music fragment options" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +msgid "Invoking lilypond-book" +msgstr "" + +#. @section in Documentation/usage/lilypond-book.itely +msgid "Invoking @command{lilypond-book}" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Format-specific instructions" +msgstr "" + +#. @subheading in Documentation/usage/lilypond-book.itely +msgid "Command line options" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +msgid "Filename extensions" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +msgid "lilypond-book templates" +msgstr "" + +#. @subsection in Documentation/usage/lilypond-book.itely +msgid "html" +msgstr "" + +#. @subsection in Documentation/usage/lilypond-book.itely +msgid "xelatex" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +#. @section in Documentation/usage/lilypond-book.itely +msgid "Sharing the table of contents" +msgstr "" + +#. @subsubheading in Documentation/usage/lilypond-book.itely +msgid "Exporting the ToC from LilyPond" +msgstr "" + +#. @subsubheading in Documentation/usage/lilypond-book.itely +msgid "Importing the ToC into LaTeX" +msgstr "" + +#. @node in Documentation/usage/lilypond-book.itely +msgid "Alternate methods of mixing text and music" +msgstr "" + +#. @section in Documentation/usage/lilypond-book.itely +msgid "Alternative methods of mixing text and music" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @chapter in Documentation/usage/external.itely +msgid "External programs" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @section in Documentation/usage/external.itely +msgid "Point and click" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @section in Documentation/usage/external.itely +msgid "Text editor support" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Emacs mode" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Vim mode" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Other editors" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @section in Documentation/usage/external.itely +msgid "Converting from other formats" +msgstr "" + +#. @node in Documentation/usage/external.itely +msgid "Invoking midi2ly" +msgstr "" + +#. @subsection in Documentation/usage/external.itely +msgid "Invoking @command{midi2ly}" +msgstr "" + +#. @node in Documentation/usage/external.itely +msgid "Invoking musicxml2ly" +msgstr "" + +#. @subsection in Documentation/usage/external.itely +msgid "Invoking @code{musicxml2ly}" +msgstr "" + +#. @node in Documentation/usage/external.itely +msgid "Invoking abc2ly" +msgstr "" + +#. @subsection in Documentation/usage/external.itely +msgid "Invoking @code{abc2ly}" +msgstr "" + +#. @node in Documentation/usage/external.itely +msgid "Invoking etf2ly" +msgstr "" + +#. @subsection in Documentation/usage/external.itely +msgid "Invoking @command{etf2ly}" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @subsection in Documentation/usage/external.itely +msgid "Other formats" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @section in Documentation/usage/external.itely +msgid "LilyPond output in other programs" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Many quotes from a large score" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Inserting LilyPond output into OpenOffice.org" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Inserting LilyPond output into other programs" +msgstr "" + +#. @node in Documentation/usage/external.itely +msgid "Independent includes" +msgstr "" + +#. @section in Documentation/usage/external.itely +msgid "Independent @code{include}s" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @subsection in Documentation/usage/external.itely +msgid "MIDI articulation" +msgstr "" + +#. @node in Documentation/usage/suggestions.itely +#. @chapter in Documentation/usage/suggestions.itely +msgid "Suggestions for writing files" +msgstr "" + +#. @node in Documentation/usage/suggestions.itely +#. @section in Documentation/usage/suggestions.itely +msgid "General suggestions" +msgstr "" + +#. @node in Documentation/usage/suggestions.itely +#. @section in Documentation/usage/suggestions.itely +msgid "Typesetting existing music" +msgstr "" + +#. @node in Documentation/usage/suggestions.itely +#. @section in Documentation/usage/suggestions.itely +msgid "Large projects" +msgstr "" + +#. @node in Documentation/usage/suggestions.itely +#. @section in Documentation/usage/suggestions.itely +msgid "Troubleshooting" +msgstr "" + +#. @node in Documentation/usage/suggestions.itely +#. @section in Documentation/usage/suggestions.itely +msgid "Make and Makefiles" +msgstr "" + +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" +msgstr "" + +#. @top in Documentation/cs/macros.itexi +msgid "LilyPond -- \\\\TITLE\\\\" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" +msgstr "" + +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" +msgstr "" + +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vše dohromady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řešení chyb" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Vypuštěný materiál" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přezkoušení taktů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ligatury" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Dynamika" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Absolutní označení not" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" +msgstr "" + +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Notenkolumnen" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Soprán a violoncello" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" +msgstr "" + +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext finden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "break-visibility (unsichtbar machen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "color (Farbe)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Automatické chování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Fingersatz" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Dynamik" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "extra-offset (Genaues Positionieren)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Pouze noty" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s příslušnými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Orchestr, sbor a klavír" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +msgid "accTrombon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) +msgid "accOboe" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) +msgid "accClarin" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) +msgid "accPiccolo" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) +msgid "accViolin" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) +msgid "continuo" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) +msgid "bassStaff" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +msgid "drh" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) +msgid "drl" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) +msgid "timb" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) +msgid "two" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) +msgid "threeTwo" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) +msgid "threeFour" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) +msgid "splitStaffBarLineMarkup" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) +msgid "splitStaffBarLine" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) +msgid "cueWhile" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) +msgid "flute" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) +msgid "clarinet" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) +msgid "pianoRH" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) +msgid "pianoLH" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) +msgid "first, define a variable to hold the formatted date:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) +msgid "date" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +msgid "d-%m-%Y\\\" (localtime (current-time)))" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) +msgid "use it in the title block:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) +msgid "and use it in a \\markup block:" +msgstr "" + +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) +msgid "voiceFive" +msgstr "" + +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) +msgid "graceNotes" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) +msgid "Default layout:" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) +msgid "Reducing the minimum space below the staff and above the lyrics:" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +msgid "Increase the size of the bar number by 2" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) +msgid "Print a bar number every second measure" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +msgid "Center-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) +msgid "Left-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) +msgid "the RehearsalMark will be centered above the Clef" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) +msgid "the RehearsalMark will be centered above the TimeSignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) +msgid "the RehearsalMark will be centered above the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) +msgid "" +"the RehearsalMark will be aligned with the left edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) +msgid "" +"the RehearsalMark will be aligned with the right edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +msgid "and then shifted right by one unit." +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) +msgid "upperStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:52 (comment) +msgid "\\break % 1 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:63 (comment) +msgid "\\break %2 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:75 (comment) +msgid "\\break % 3 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:90 (comment) +msgid "\\break % 4 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) +msgid "\\break % 5 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) +msgid "\\break % 6 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) +msgid "\\break % 7 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:129 (comment) +msgid "\\break % 8 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:132 (comment) +msgid "\\break % 12 (32*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) +msgid "lowerStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:147 (comment) +msgid "\\break % 2 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:152 (comment) +msgid "\\break % 4 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:191 (comment) +msgid "\\break % 9 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:193 (comment) +msgid "lig" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:197 (comment) +msgid "\\break % 11 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:208 (comment) +msgid "\\break % 12 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:29 (context id) +msgid "cantus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:31 (comment) +msgid "Verse 1 — Salve, Regína" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:42 (comment) +msgid "Verse 2 — Vita, dulcédo" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:43 (comment) +msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:44 (comment) +msgid "\\divisioMinima" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:45 (comment) +msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:46 (comment) +msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:47 (comment) +msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:48 (comment) +msgid "\\divisioMaior" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:49 (comment) +msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:50 (comment) +msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:51 (comment) +msgid "\\finalis" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:52 (comment) +msgid "Verse 3 — Ad te clamámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:61 (comment) +msgid "Verse 4 — Ad te suspirámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:74 (comment) +msgid "Verse 5 — Eia ergo, Advocáta nostra" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:90 (comment) +msgid "Verse 6 — Et Jesum" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:104 (comment) +msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:122 (comment) +msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) +msgid "chant" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) +msgid "verba" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) +msgid "incipit" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +msgid "Set tight spacing" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) +msgid "turn off bar lines" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) +msgid "need this extra \\skip such that clef change comes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) +msgid "after bar line" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) +msgid "turn bar lines on again" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) +msgid "occur in the first bar after the incipit. Dto. for forceClef." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) +msgid "Therefore, we need an extra \\skip." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +msgid "the actual music" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) +msgid "let finis bar go through all staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) +msgid "finis bar" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) +msgid "discantusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) +msgid "two bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) +msgid "eight bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) +msgid "one bar" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) +msgid "discantusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) +msgid "altusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) +msgid "seven bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) +msgid "altusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) +msgid "tenorNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) +msgid "four bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) +msgid "tenorLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) +msgid "bassusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) +msgid "bassusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) +msgid "choirStaff" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +msgid "no bars in staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) +msgid "incipit should not start with a start delimiter" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) +msgid "no slurs" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) +msgid "tick" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) +msgid "Use markup to center the chant on the page" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) +msgid "centered" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) +msgid "End score" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) +msgid "End markup" +msgstr "" + +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) +msgid "fragment" +msgstr "" + +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) +msgid "slurNotes" +msgstr "" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) +msgid "Default behavior" +msgstr "" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) +msgid "Corrected to avoid collisions" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) +msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) +msgid "Span -----------------------------------" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) +msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) +msgid "bbarre" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) +msgid "uncomment this line for make full barred" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) +msgid "" +"\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" +"\"B\\\" #str }" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) +msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) +msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" +msgstr "" + +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) +msgid "Set default beaming for all staves" +msgstr "" + +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) +msgid "Modify beaming for just this staff" +msgstr "" + +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) +msgid "Inherit beaming from Score context" +msgstr "" + +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) +msgid "Modify beaming for this voice only" +msgstr "" + +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) +msgid "rhythm 2-3-2" +msgstr "" + +#. Documentation/snippets/book-parts.ly:25 (comment) +msgid "book paper, which is inherited by all children bookparts" +msgstr "" + +#. Documentation/snippets/book-parts.ly:28 (comment) +msgid "Page footer: add a different part-tagline at part last page" +msgstr "" + +#. Documentation/snippets/book-parts.ly:32 (comment) +msgid "Copyright header field only on book first page." +msgstr "" + +#. Documentation/snippets/book-parts.ly:36 (comment) +msgid "Part tagline header field only on each part last page." +msgstr "" + +#. Documentation/snippets/book-parts.ly:40 (comment) +msgid "Tagline header field only on book last page." +msgstr "" + +#. Documentation/snippets/book-parts.ly:47 (comment) +msgid "book header, which is inherited by the first bookpart" +msgstr "" + +#. Documentation/snippets/book-parts.ly:56 (comment) +msgid "a different page breaking function may be used on each part" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:23 (comment) +msgid "this bar contains no \\breathe" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:25 (comment) +msgid "Modern notation:" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:26 (comment) +msgid "by default, \\breathe uses the rcomma, just as if saying:" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:27 (comment) +msgid "" +"\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" +"\\\")" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:30 (comment) +msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:31 (comment) +msgid "N.B.: must use Staff context here, since we start a Voice below" +msgstr "" + +#. Documentation/snippets/breathing-signs.ly:35 (comment) +msgid "vee" +msgstr "" + +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) +msgid "construct the symbol" +msgstr "" + +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) +msgid "set the breathe mark back to normal" +msgstr "" + +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) +msgid "hairpinWithCenteredText" +msgstr "" + +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) +msgid "hairpinMolto" +msgstr "" + +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) +msgid "hairpinMore" +msgstr "" + +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) +msgid "smallFlageolet" +msgstr "" + +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) +msgid "Default setting" +msgstr "" + +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) +msgid "The following is only here to print the names of the" +msgstr "" + +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) +msgid "chords styles; it can be removed if you do not need to" +msgstr "" + +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) +msgid "print them." +msgstr "" + +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) +msgid "change for other default global staff size." +msgstr "" + +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) +msgid "{" +msgstr "" + +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) +msgid "}" +msgstr "" + +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) +msgid "sustainNotes" +msgstr "" + +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) +msgid "stemOn" +msgstr "" + +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) +msgid "stemOff" +msgstr "" + +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) +msgid "modify maj9 and 6(add9)" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) +msgid "Exception music is chords with markups" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) +msgid "chExceptionMusic" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) +msgid "Convert music to list and prepend to existing exceptions." +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) +msgid "chExceptions" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) +msgid "theMusic" +msgstr "" + +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) +msgid "theChords" +msgstr "" + +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) +msgid "\\break" +msgstr "" + +#. Documentation/snippets/chords-headword.ly:30 (variable) +msgid "verseOne" +msgstr "" + +#. Documentation/snippets/chords-headword.ly:37 (variable) +msgid "verseTwo" +msgstr "" + +#. Documentation/snippets/chords-headword.ly:76 (context id) +msgid "sop" +msgstr "" + +#. Documentation/snippets/clip-systems.ly:68 (variable) +msgid "origScore" +msgstr "" + +#. Documentation/snippets/clip-systems.ly:86 (comment) +msgid "Each clip-region is a (START . END) pair" +msgstr "" + +#. Documentation/snippets/clip-systems.ly:87 (comment) +msgid "where both are rhythmic-locations." +msgstr "" + +#. Documentation/snippets/clip-systems.ly:89 (comment) +msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" +msgstr "" + +#. Documentation/snippets/clip-systems.ly:90 (comment) +msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" +msgstr "" + +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) +msgid "Association list of pitches to colors." +msgstr "" + +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) +msgid "Compare pitch and alteration (not octave)." +msgstr "" + +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) +msgid "piuF" +msgstr "" + +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) +msgid "musicUp" +msgstr "" + +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) +msgid "musicDown" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) +msgid "show hairpin" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) +msgid "hide text span" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) +msgid "show glissando" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +msgid "ten" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +msgid "finger" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) +msgid "parenF" +msgstr "" + +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) +msgid "the hidden measure and bar line" +msgstr "" + +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) +msgid "\\cadenzaOn turns off automatic calculation of bar numbers" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" +msgstr "" + +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) +msgid "up" +msgstr "" + +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) +msgid "down" +msgstr "" + +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) +msgid "Set global properties of fret diagram" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) +msgid "mel" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) +msgid "C major for guitar, no barre, using defaults" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +msgid "terse style" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) +msgid "C major for guitar, barred on third fret" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) +msgid "verbose style" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) +msgid "size 1.0" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) +msgid "roman fret label, finger labels below string, straight barre" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) +msgid "standard size" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) +msgid "landscape orientation, arabic numbers, M for mute string" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) +msgid "no barre, fret label down or left, small mute label font" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) +msgid "simple D chord" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) +msgid "larger dots, centered dots, fewer frets" +msgstr "" + +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) +msgid "label below string" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) +msgid "Grob utilities" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) +msgid "" +"These are literal rewrites of some C++ methods used by the ambitus engraver." +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +msgid "Ambitus data structure" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +msgid "The class holds the various grobs that are created" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +msgid "to print an ambitus:" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +msgid "- ambitus-group: the grob that groups all the components of an ambitus" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +msgid "(Ambitus grob);" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +msgid "- ambitus-line: the vertical line between the upper and lower ambitus" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +msgid "notes (AmbitusLine grob);" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +msgid "for the lower and upper note of the ambitus (see class" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +msgid "below)." +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +msgid "The other slots define the key and clef context of the engraver:" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +msgid "- start-c0: position of middle c at the beginning of the piece. It" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +msgid "is used to place the ambitus notes according to their pitch;" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) +msgid "- start-key-sig: the key signature at the beginning of the piece. It" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) +msgid "is used to determine if accidentals shall be printed next to ambitus" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) +msgid "notes." +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) +msgid "Accessor for the lower and upper note data of an ambitus" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +msgid "The class holds the grobs that are specific to ambitus" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +msgid "(lower and upper) notes:" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +msgid "- head: an AmbitusNoteHead grob;" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +msgid "to the ambitus note head." +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +msgid "Moreover:" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) +msgid "- pitch is the absolute pitch of the note" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) +msgid "- cause is the note event that causes this ambitus note, i.e. the lower" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) +msgid "or upper note of the considered music sequence." +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) +msgid "Ambitus engraving logics" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) +msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) +msgid "Ambitus engraver definition" +msgstr "" + +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) +msgid "Example" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) +msgid "add FretBoards for the Cuatro" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) +msgid "Note: This section could be put into a separate file" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) +msgid "predefined-cuatro-fretboards.ly" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) +msgid "and \\included into each of your compositions" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +msgid "cuatroTuning" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) +msgid "dSix" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) +msgid "dMajor" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) +msgid "aMajSeven" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) +msgid "dMajSeven" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) +msgid "gMajor" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) +msgid "end of potential include file /predefined-cuatro-fretboards.ly" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) +msgid "primerosNames" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) +msgid "primeros" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) +msgid "baseMelody" +msgstr "" + +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) +msgid "Must be lower than the actual number of staff lines" +msgstr "" + +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +msgid "fixA" +msgstr "" + +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) +msgid "fixB" +msgstr "" + +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) +msgid "\\\" (make-string 36 #\\-))" +msgstr "" + +#. Documentation/snippets/double-glissando.ly:24 (comment) +msgid "new voice ( = \\voiceOne), hidden" +msgstr "" + +#. Documentation/snippets/double-glissando.ly:26 (comment) +msgid "attach glissando to note heads" +msgstr "" + +#. Documentation/snippets/double-glissando.ly:31 (comment) +msgid "original voice with chords rearranged so that" +msgstr "" + +#. Documentation/snippets/double-glissando.ly:32 (comment) +msgid "glissando is attached to a & c" +msgstr "" + +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) +msgid "circle" +msgstr "" + +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) +msgid "" +"Two functions for (de)crescendo spanners where you can explicitly give the" +msgstr "" + +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) +msgid "spanner text." +msgstr "" + +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) +msgid "mycresc" +msgstr "" + +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) +msgid "mydecresc" +msgstr "" + +#. Documentation/snippets/dynamics-text-spanner-postfix.ly:61 (comment) +msgid "Some sample text dynamic spanners, to be used as postfix operators" +msgstr "" + +#. Documentation/snippets/dynamics-text-spanner-postfix.ly:62 (variable) +msgid "crpoco" +msgstr "" + +#. Documentation/snippets/editorial-headword.ly:25 (comment) +msgid "NR 1.7 Editorial annotations" +msgstr "" + +#. Documentation/snippets/editorial-headword.ly:27 (comment) +msgid "Beethoven, Op. 31, No. 3" +msgstr "" + +#. Documentation/snippets/editorial-headword.ly:28 (comment) +msgid "Piano sonata 18, Movt II, Scherzo" +msgstr "" + +#. Documentation/snippets/editorial-headword.ly:29 (comment) +msgid "Measures 9 - 14" +msgstr "" + +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) +msgid "RH Staff" +msgstr "" + +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) +msgid "LH Staff" +msgstr "" + +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) +msgid "PostScript is a registered trademark of Adobe Systems Inc." +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) +msgid "sample music" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) +msgid "topVoice" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) +msgid "botVoice" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) +msgid "hoom" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) +msgid "pah" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) +msgid "setup for Request->Element conversion. Guru-only" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) +msgid "MyStaff" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) +msgid "explicitly set instrumentName, so we don't get" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) +msgid "weird effects when doing instrument names for" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) +msgid "piano staves" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) +msgid "MyVoice" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) +msgid "must come before all" +msgstr "" + +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) +msgid "\\consists \\\"Rest_engraver\\\"" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:26 (comment) +msgid "L. v. Beethoven, Op. 49 no. 1" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:27 (comment) +msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:28 (comment) +msgid "measures 1 - 12" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:30 (comment) +msgid "\\layout {" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:31 (comment) +msgid "\\context {" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:32 (comment) +msgid "\\Score" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:33 (comment) +msgid "\\override SpacingSpanner #'base-shortest-duration =" +msgstr "" + +#. Documentation/snippets/expressive-headword.ly:34 (comment) +msgid "#(ly:make-moment 1 20)" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) +msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) +msgid "Sonata II, Allemanda" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) +msgid "measures 1 - 88" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) +msgid "Coded by Neil Puttock; modified by Carl Sorensen" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) +msgid "extendOn" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) +msgid "extendOff" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) +msgid "violinoI" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) +msgid "violinoII" +msgstr "" + +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) +msgid "violone" +msgstr "" + +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) +msgid "centermarkup" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:97 (comment) +msgid "Cut here ----- Start 'flamenco.ly'" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:99 (comment) +msgid "Text indicators" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:100 (variable) +msgid "abanico" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:101 (variable) +msgid "rasgueaso" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:102 (variable) +msgid "alzapua" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:104 (comment) +msgid "Finger stroke symbols" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:105 (variable) +msgid "strokeUp" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:115 (variable) +msgid "strokeDown" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:125 (comment) +msgid "Golpe symbol" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:126 (variable) +msgid "golpe" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:140 (variable) +msgid "strokeUpGolpe" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:141 (variable) +msgid "iUpGolpe" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:143 (comment) +msgid "Strokes for all fingers" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:144 (variable) +msgid "pUp" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:145 (variable) +msgid "pDown" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:146 (variable) +msgid "iUp" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:147 (variable) +msgid "iDown" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:148 (variable) +msgid "mUp" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:149 (variable) +msgid "mDown" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:150 (variable) +msgid "aUp" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:151 (variable) +msgid "aDown" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:152 (variable) +msgid "xUp" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:153 (variable) +msgid "xDown" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:156 (comment) +msgid "Just handy :)" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:157 (variable) +msgid "tupletOff" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:162 (variable) +msgid "tupletsOff" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:167 (variable) +msgid "tupletsOn" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:172 (variable) +msgid "headsOff" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:178 (variable) +msgid "headsOn" +msgstr "" + +#. Documentation/snippets/flamenco-notation.ly:184 (comment) +msgid "Cut here ----- End 'flamenco.ly'" +msgstr "" + +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) +msgid "Example 1" +msgstr "" + +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) +msgid "Example 2" +msgstr "" + +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) +msgid "Example 3" +msgstr "" + +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) +msgid "Example 4" +msgstr "" + +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) +msgid "slap" +msgstr "" + +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) +msgid "example" +msgstr "" + +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) +msgid "lyr" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) +msgid "A chord for ukulele" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) +msgid "A chord for ukulele, with formatting defined in definition string" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) +msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) +msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) +msgid "These chords will be in normal orientation" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) +#, python-format +msgid "110% of default size" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) +msgid "Double barre used to test barre function" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +msgid "C major for guitar, with capo on third fret" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) +msgid "simple D chord, large top fret thickness" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) +msgid "These chords will be in landscape orientation" +msgstr "" + +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) +msgid "These chords will be in opposing-landscape orientation" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:36 (comment) +msgid "shortcuts" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:37 (comment) +msgid "fingering orientations" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:38 (variable) +msgid "sfol" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:39 (variable) +msgid "sfor" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:40 (variable) +msgid "sfod" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:41 (variable) +msgid "sfou" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:43 (comment) +msgid "string number orientations" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:44 (variable) +msgid "ssnol" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:44 (comment) +msgid "(down right up)" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:45 (variable) +msgid "ssnou" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:46 (variable) +msgid "ssnod" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:47 (variable) +msgid "ssnor" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:49 (comment) +msgid "define fingering offset" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:50 (variable) +msgid "FO" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:55 (comment) +msgid "markups" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:56 (variable) +msgid "rit" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:57 (variable) +msgid "dimin" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:58 (variable) +msgid "andantino" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:59 (variable) +msgid "benmarcato" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:60 (variable) +msgid "pdolce" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:62 (comment) +msgid "THE MUSIC %%%" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) +msgid "m. 1" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:80 (comment) +msgid "m. 2" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) +msgid "m. 3" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) +msgid "m. 4" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) +msgid "m. 5" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:90 (comment) +msgid "end of m. 6" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) +msgid "m. 7" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:96 (comment) +msgid "beg of m. 8" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:97 (comment) +msgid "end of m. 8" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:99 (comment) +msgid "end of m. 9" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) +msgid "m. 10" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:103 (comment) +msgid "beg of m. 11" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:105 (comment) +msgid "end of m. 11" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:115 (comment) +msgid "beg m. 2" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:116 (comment) +msgid "end m. 2" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:122 (comment) +msgid "new section starts here in A minor" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:127 (comment) +msgid "beg m. 6" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:128 (comment) +msgid "end m. 6" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:132 (comment) +msgid "m. 8" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:134 (comment) +msgid "beg m. 9" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:135 (comment) +msgid "end m. 9" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:139 (comment) +msgid "m. 11" +msgstr "" + +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) +msgid "guitar" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) +msgid "Create a flag stencil by looking up the glyph from the font" +msgstr "" + +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) +msgid "snippetexamplenotes" +msgstr "" + +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) +msgid "this moves them up one staff space from the default position" +msgstr "" + +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) +msgid "set up grids" +msgstr "" + +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) +msgid "set the grid interval to one quarter note" +msgstr "" + +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) +msgid "this moves them to the right half a staff space" +msgstr "" + +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) +msgid "hides staff and notes so that only the grid lines are visible" +msgstr "" + +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) +msgid "dummy notes to force regular note spacing" +msgstr "" + +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) +msgid "center grid lines horizontally below note heads" +msgstr "" + +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) +msgid "set line length and positioning:" +msgstr "" + +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) +msgid "two staff spaces above center line on hidden staff" +msgstr "" + +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) +msgid "to four spaces below center line on visible staff" +msgstr "" + +#. Documentation/snippets/guitar-slides.ly:36 (comment) +msgid "Hide fret number: useful to draw slide into/from a casual point of" +msgstr "" + +#. Documentation/snippets/guitar-slides.ly:37 (comment) +msgid "the fretboard." +msgstr "" + +#. Documentation/snippets/guitar-slides.ly:38 (variable) +msgid "hideFretNumber" +msgstr "" + +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) +msgid "drum" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) +msgid "Solution 1: Using a simple markup with a particular halign value" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) +msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +msgid "etc. will have no effect" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) +msgid "semppMarkup" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) +msgid "Solution 2: Using a dynamic script & shifting with" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) +msgid "\\once \\override ... #'X-offset = .." +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) +msgid "Drawback: \\once \\override needed for every invocation" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) +msgid "semppK" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) +msgid "Solution 3: Padding the dynamic script so the center-alignment" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) +msgid "puts it at the correct position" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) +msgid "" +"Drawback: the padding really reserves the space, nothing else can be there" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) +msgid "semppT" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) +msgid "other stuff there => collisions" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) +msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) +msgid "same alignment as without the additional text" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) +msgid "semppM" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) +msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) +msgid "semppG" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +msgid "Solution 6: Dynamic with explicit alignment. This has only effect" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +msgid "if one sets X-offset!" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) +msgid "Drawback: One needs to set DynamicText #'X-offset!" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) +msgid "Drawback: Aligned at the right edge of the additional text," +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) +msgid "not at the center of pp" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) +msgid "semppMII" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) +msgid "s" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) +msgid "sMarkup" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) +msgid "sK" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) +msgid "sT" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) +msgid "sM" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) +msgid "sG" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) +msgid "sMII" +msgstr "" + +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) +msgid "Setting to ##f (false) gives the same result" +msgstr "" + +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) +msgid "harmonies" +msgstr "" + +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" +msgstr "" + +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) +msgid "THIS LINE IS THE SECOND METHOD" +msgstr "" + +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" +msgstr "" + +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) +msgid "HERE IS THE SECOND METHOD" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:61 (variable) +msgid "Timeline" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:93 (comment) +msgid "Start score" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:95 (comment) +msgid "Start pianostaff" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:96 (comment) +msgid "Start Staff = RH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:99 (comment) +msgid "Start Voice = \\\"Soprano\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:103 (comment) +msgid "End Voice = \\\"Soprano\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:104 (comment) +msgid "Start Voice = \\\"Alto\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:108 (comment) +msgid "End Voice = \\\"Alto\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:109 (comment) +msgid "End Staff = RH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:110 (comment) +msgid "Start Staff = LH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:113 (comment) +msgid "Start Voice = \\\"Tenor\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:117 (comment) +msgid "End Voice = \\\"Tenor\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:118 (comment) +msgid "Start Voice = \\\"Bass\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:122 (comment) +msgid "End Voice = \\\"Bass\\\"" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:123 (comment) +msgid "End Staff = LH" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:124 (comment) +msgid "End pianostaff" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:145 (comment) +msgid "Start paper block" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:146 (comment) +msgid "don't indent first system" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:147 (comment) +msgid "shorten line length to suit music" +msgstr "" + +#. Documentation/snippets/hymn-template.ly:148 (comment) +msgid "End paper block" +msgstr "" + +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) +msgid "discantusIncipit" +msgstr "" + +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) +msgid "altusIncipit" +msgstr "" + +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) +msgid "two measures" +msgstr "" + +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) +msgid "tenorIncipit" +msgstr "" + +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) +msgid "bassusIncipit" +msgstr "" + +#. Documentation/snippets/incipit.ly:268 (comment) +msgid "no bar lines in staves or lyrics" +msgstr "" + +#. Documentation/snippets/incipit.ly:271 (comment) +msgid "the next two instructions keep the lyrics between the bar lines" +msgstr "" + +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "" + +#. Documentation/snippets/incipit.ly:282 (comment) +msgid "breaking also at those bar lines where a note overlaps" +msgstr "" + +#. Documentation/snippets/incipit.ly:283 (comment) +msgid "into the next measure. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) +msgid "tuning" +msgstr "" + +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) +msgid "makePercent" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) +msgid "#(set-global-staff-size 16)" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) +msgid "Some macros %%%%%%%%%%%%%%%%%%%" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) +msgid "sl" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) +msgid "nsl" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) +msgid "crOn" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) +msgid "crOff" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) +msgid "insert chord name style stuff here." +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) +msgid "jazzChords" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) +msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) +msgid "Key" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) +msgid "############ Horns ############" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +msgid "------ Trumpet ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) +msgid "trpt" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +msgid "trpHarmony" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) +msgid "trumpet" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +msgid "------ Alto Saxophone ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) +msgid "altoHarmony" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) +msgid "altoSax" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) +msgid "------ Baritone Saxophone ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) +msgid "bari" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +msgid "bariHarmony" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) +msgid "bariSax" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +msgid "------ Trombone ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) +msgid "tbone" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) +msgid "tboneHarmony" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) +msgid "trombone" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) +msgid "############ Rhythm Section #############" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) +msgid "------ Guitar ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) +msgid "gtr" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) +msgid "gtrHarmony" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) +msgid "------ Piano ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) +msgid "rhUpper" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +msgid "rhLower" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) +msgid "lhUpper" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) +msgid "lhLower" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) +msgid "PianoRH" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) +msgid "PianoLH" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) +msgid "------ Bass Guitar ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) +msgid "------ Drums ------" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) +msgid "drumContents" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) +#, python-format +msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) +msgid "horns" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) +msgid "altosax" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) +msgid "barichords" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) +msgid "barisax" +msgstr "" + +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) +msgid "chords" +msgstr "" + +#. Documentation/snippets/keyboard-headword.ly:27 (comment) +msgid "M. Ravel, Sonatine (1905)" +msgstr "" + +#. Documentation/snippets/keyboard-headword.ly:28 (comment) +msgid "First movement" +msgstr "" + +#. Documentation/snippets/keyboard-headword.ly:37 (variable) +msgid "fermataLong" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "" + +#. Documentation/snippets/makam-example.ly:58 (comment) +msgid "Initialize makam settings" +msgstr "" + +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) +msgid "bassfigures" +msgstr "" + +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +msgid "from upper staff-line (position 2) to center (position 0)" +msgstr "" + +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) +msgid "from center to one above center (position 1)" +msgstr "" + +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) +msgid "speakOn" +msgstr "" + +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) +msgid "speakOff" +msgstr "" + +#. Documentation/snippets/markup-lines.ly:26 (comment) +msgid "Candide, Voltaire" +msgstr "" + +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) +msgid "the final bar line is not interrupted" +msgstr "" + +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) +msgid "normalPos" +msgstr "" + +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) +msgid "dashPlus" +msgstr "" + +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) +msgid "Set tuplets to be extendable..." +msgstr "" + +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) +msgid "...to cover all items up to the next note" +msgstr "" + +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) +msgid "...or to cover just whitespace" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) +msgid "space for instrumentName" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) +msgid "space for shortInstrumentName" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +msgid "fluteMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) +msgid "Pitches as written on a manuscript for Clarinet in A" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) +msgid "are transposed to concert pitch." +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) +msgid "clarinetMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +msgid "trumpetMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) +msgid "Key signature is often omitted for horns" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +msgid "hornMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +msgid "percussionMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) +msgid "altoIMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) +msgid "altoIIMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) +msgid "altoILyrics" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) +msgid "altoIILyrics" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) +msgid "pianoRHMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) +msgid "pianoLHMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) +msgid "violinIMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) +msgid "violinIIMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) +msgid "violaMusic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) +msgid "shortInstrumentName, midiInstrument, etc." +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) +msgid "may be set here as well" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) +msgid "Declare that written Middle C in the music" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) +msgid "to follow sounds a concert B flat, for" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) +msgid "output using sounded pitches such as MIDI." +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) +msgid "Print music for a B-flat clarinet" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) +msgid "applies to split up stems" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) +msgid "\\autoBeamOff % applies to combined up stems" +msgstr "" + +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) +msgid "applies to down stems" +msgstr "" + +#. Documentation/snippets/percussion-beaters.ly:22 (variable) +msgid "stick" +msgstr "" + +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) +msgid "Permit line breaks within tuplets" +msgstr "" + +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) +msgid "Allow beams to be broken at line breaks" +msgstr "" + +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) +msgid "Insert a manual line break within a tuplet" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:27 (comment) +msgid "L. v. Beethoven" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:28 (comment) +msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:29 (comment) +msgid "chorale at measures 34 - 40+" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:36 (comment) +msgid "RH Voice 1" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:64 (comment) +msgid "(" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:69 (comment) +msgid ")" +msgstr "" + +#. Documentation/snippets/pitches-headword.ly:73 (comment) +msgid "RH Voice 2" +msgstr "" + +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) +msgid "tab" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" +msgstr "" + +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) +msgid "Set segno sign as rehearsal mark and adjust size if needed" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +msgid "\\once \\override Score.RehearsalMark #'font-size = #3" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) +msgid "Set coda sign as rehearsal mark and adjust size if needed" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +msgid "Should Coda be on anew line?" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) +msgid "Coda NOT on new line: use \\nobreak" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) +msgid "Coda on new line: DON'T use \\nobreak" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) +msgid "\\noBreak" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) +msgid "Here begins the trickery!" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +msgid "" +"\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " +"lines." +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +msgid "Some examples of possible text-displays" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +msgid "text line-aligned" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +msgid "==================" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) +msgid "Move text to the desired position" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +msgid "| s1*0^\\markup { D.S. al Coda } }" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +msgid "text center-aligned" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +msgid "====================" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +msgid "text and symbols center-aligned" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) +msgid "===============================" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) +msgid "" +"Move text to the desired position and tweak spacing for optimum text " +"alignment" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) +msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) +msgid "Increasing the unfold counter will expand the staff-free space" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) +msgid "Resume bar count and show staff lines again" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) +msgid "Should Coda be on new line?" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) +msgid "Coda NOT on new line: DON'T use \\break" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +msgid "Coda on new line: use \\break" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) +msgid "Show up, you clef and key!" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) +msgid "Set coda sign as rehearsal mark and adjust size and position" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +msgid "" +"Put the coda sign ontop of the (treble-)clef dependend on coda's line-" +"position" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +msgid "Coda NOT on new line, use this:" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) +msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) +msgid "Coda on new line, use this:" +msgstr "" + +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) +msgid "The coda" +msgstr "" + +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) +msgid "Permit first bar number to be printed" +msgstr "" + +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) +msgid "Prevent bar numbers at the end of a line and permit them elsewhere" +msgstr "" + +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) +msgid "Draw a box round the following bar number(s)" +msgstr "" + +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) +msgid "Draw a circle round the following bar number(s)" +msgstr "" + +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) +msgid "Metronome marks below the staff" +msgstr "" + +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) +msgid "Rehearsal marks below the staff" +msgstr "" + +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) +msgid "Bassklarinette" +msgstr "" + +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) +msgid "Perkussion" +msgstr "" + +#. Documentation/snippets/putting-lyrics-inside-the-staff.ly:24 (context id) +msgid "voc" +msgstr "" + +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +msgid "quoteMe" +msgstr "" + +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) +msgid "original" +msgstr "" + +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" +msgstr "" + +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" +msgstr "" + +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) +msgid "range chart for paetzold contrabass recorder" +msgstr "" + +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) +msgid "startAcciaccaturaMusic" +msgstr "" + +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) +msgid "stopAcciaccaturaMusic" +msgstr "" + +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) +msgid "To use the setting globally, uncomment the following line:" +msgstr "" + +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) +msgid "\\override VerticalAxisGroup #'remove-first = ##t" +msgstr "" + +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) +msgid "To use the setting globally, comment this line," +msgstr "" + +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) +msgid "uncomment the line in the \\layout block above" +msgstr "" + +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +msgid "Default beaming" +msgstr "" + +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) +msgid "Set new values for beam endings" +msgstr "" + +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) +msgid "Macro to print single slash" +msgstr "" + +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) +msgid "rs" +msgstr "" + +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) +msgid "Function to print a specified number of slashes" +msgstr "" + +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) +msgid "comp" +msgstr "" + +#. Documentation/snippets/rhythms-headword.ly:26 (comment) +msgid "Beethoven, Op. 81a" +msgstr "" + +#. Documentation/snippets/rhythms-headword.ly:27 (comment) +msgid "Piano sonata 26 - Das Lebewohl" +msgstr "" + +#. Documentation/snippets/rhythms-headword.ly:28 (comment) +msgid "Movt II - Abwesenheit" +msgstr "" + +#. Documentation/snippets/rhythms-headword.ly:29 (comment) +msgid "Measures 31 - 34" +msgstr "" + +#. Documentation/snippets/rhythms-headword.ly:36 (comment) +msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +msgid "sopranonotes" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) +msgid "sopranowords" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) +msgid "altonotes" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) +msgid "altowords" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) +msgid "tenornotes" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) +msgid "tenorwords" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) +msgid "bassnotes" +msgstr "" + +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) +msgid "basswords" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) +msgid "verse" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) +msgid "NoStem" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) +msgid "NoNoteHead" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) +msgid "ZeroBeam" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) +msgid "staffTabLine" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +msgid "" +"Shows one horizontal line. The vertical line (simulating a bar-line) is " +"simulated with a gridline" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +msgid "" +"disable the following line to see the the noteheads while writing the song" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +msgid "The beam between 8th-notes is used to draw the push-line" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +msgid "How to fast write the push-lines:" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +msgid "" +"1. write repeatedly 'c c c c c c c c |' for the whole length of the song" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +msgid "2. uncomment the line \\NoNoteHead" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +msgid "3. compile" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +msgid "4. Mark the positions on which push/pull changes." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +msgid "" +"In the score-picture click on the position the push- or pull-part starts" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +msgid "(on the noteHead, the cursor will change to a hand-icon)." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +msgid "The cursor in the source code will jump just at this position." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +msgid "a) If a push-part starts there, replace the 'c' by an 'e['" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +msgid "b) If a pull-part starts there, replace the 'c' by an 's'" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) +msgid "6. For the pull-parts overwrite the 'c' with 's'" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) +msgid "7. For every push-part replace the last 'c' with 'e]'" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) +msgid "8. Switch into 'insert-mode' again" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) +msgid "" +"9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " +"e] s s)" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) +msgid "10. re-enable the line \\NoNoteHead" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) +msgid "Accordion melody in tabulator score" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) +msgid "1. Place a copy of the piano melody below" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +msgid "" +"2. Separate piano melody into pull- and push-parts according to the " +"staffTabLine you've already made" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) +msgid "" +"3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " +"reference) and then change the second line using the transformation paper" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) +msgid "Tips:" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) +msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) +msgid "AccordionTabTwoCBesDur" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) +msgid "pull 1" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +msgid "8 8 8 |" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) +msgid "push 2" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) +msgid "4 |" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +msgid "pull 3" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +msgid "2 r8 }" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) +msgid "AccordionTab" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +msgid "1. Place a copy of the piano melody above" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) +msgid "" +"3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " +"reference) and then" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) +msgid "change the second line using the transformation paper" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) +msgid "-" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) +msgid "The vertical line (simulating a bar-line) in" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) +msgid "the staffBassRhytm is a gridline" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) +msgid "4/4 - tact. How many beats per bar" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) +msgid "The following line has to be adjusted O-F-T-E-N." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) +msgid "staffVoice" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) +msgid "astaffvoice" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) +msgid "staffAccordionMel" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) +msgid "Set the accidentals (Vorzeichen) for each note," +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) +msgid "do not remember them for the rest of the measure." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) +msgid "BassRhytm" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) +msgid "LyricBassRhythmI" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) +msgid "staffBassRhytm" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) +msgid "staffbass" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +msgid "" +"This is not a RhythmicStaff because it must be possible to append lyrics." +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) +msgid "x.y" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) +msgid "" +"Shows one horizontal line. The vertical line (simulating a bar-line) is " +"simulated by a grid" +msgstr "" + +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) +msgid "Search for 'grid' in this page to find all related functions" +msgstr "" + +#. Documentation/snippets/setting-system-separators.ly:37 (variable) +msgid "notes" +msgstr "" + +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) +msgid "The same as \\flageolet, just a little smaller" +msgstr "" + +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) +msgid "The second fermata is ignored!" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) +msgid "NR 1.5 Simultaneous notes" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) +msgid "L. v. Beethoven, Op. 111" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) +msgid "Piano sonata 32" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) +msgid "Movt II - Arietta - Adagio molto semplice e cantabile" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) +msgid "measures 108 - 118" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) +msgid "trillFlat" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) +msgid "RH voice 1" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) +msgid "RH voice 2" +msgstr "" + +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) +msgid "LH staff" +msgstr "" + +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) +msgid "verseI" +msgstr "" + +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) +msgid "verseII" +msgstr "" + +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) +msgid "insert chords for chordnames and fretboards here" +msgstr "" + +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) +msgid "staffMelody" +msgstr "" + +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) +msgid "Type notes for melody here" +msgstr "" + +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) +msgid "voiceMelody" +msgstr "" + +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) +msgid "title = \\\"Le Lac des Cygnes\\\"" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:35 (comment) +msgid "subtitle = \\\"Danse Napolitaine\\\"" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:36 (comment) +msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:37 (comment) +msgid "arranger = \\\"arr. Laurence Sardain\\\"" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:38 (comment) +msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:41 (variable) +msgid "trompette" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) +msgid "tambourin" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:62 (variable) +msgid "tambourinMidi" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:105 (context id) +msgid "prima" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:107 (context id) +msgid "uppera" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:108 (context id) +msgid "lowera" +msgstr "" + +#. Documentation/snippets/stemlets.ly:39 (comment) +msgid "N.B. use Score.Stem to set for the whole score." +msgstr "" + +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) +msgid "stringNumberSpanner" +msgstr "" + +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) +msgid "violinOne" +msgstr "" + +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) +msgid "violinTwo" +msgstr "" + +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) +msgid "viola" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) +msgid "piece.ly" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) +msgid "(This is the global definitions file)" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) +msgid "Violinone" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) +msgid "*********************************" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) +msgid "Violintwo" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) +msgid "Viola" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) +msgid "Cello" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) +msgid "**********************************" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) +msgid "These are the other files you need to save on your computer" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) +msgid "score.ly" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) +msgid "(This is the main file)" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +msgid "{ Uncomment this block when using separate files" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) +msgid "vn1.ly" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) +msgid "(This is the Violin 1 part file)" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) +msgid "vn2.ly" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) +msgid "(This is the Violin 2 part file)" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) +msgid "vla.ly" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) +msgid "(This is the Viola part file)" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) +msgid "vlc.ly" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) +msgid "(This is the Cello part file)" +msgstr "" + +#. Documentation/snippets/subdividing-beams.ly:81 (comment) +msgid "Set beam sub-group length to an eighth note" +msgstr "" + +#. Documentation/snippets/subdividing-beams.ly:86 (comment) +msgid "Set beam sub-group length to a sixteenth note" +msgstr "" + +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) +msgid "ignore" +msgstr "" + +#. Documentation/snippets/text-headword.ly:24 (comment) +msgid "NR 1.8 Text" +msgstr "" + +#. Documentation/snippets/text-headword.ly:26 (comment) +msgid "L. v. Beethoven, Op. 110" +msgstr "" + +#. Documentation/snippets/text-headword.ly:27 (comment) +msgid "Piano sonata 31" +msgstr "" + +#. Documentation/snippets/text-headword.ly:28 (comment) +msgid "measures 1 - 7" +msgstr "" + +#. Documentation/snippets/text-headword.ly:40 (comment) +msgid "RH staff" +msgstr "" + +#. Documentation/snippets/three-sided-box.ly:20 (comment) +msgid "New command to add a three sided box, with sides north, west and south" +msgstr "" + +#. Documentation/snippets/three-sided-box.ly:21 (comment) +msgid "Based on the box-stencil command defined in scm/stencil.scm" +msgstr "" + +#. Documentation/snippets/three-sided-box.ly:22 (comment) +msgid "Note that \\\";;\\\" is used to comment a line in Scheme" +msgstr "" + +#. Documentation/snippets/three-sided-box.ly:36 (comment) +msgid "The corresponding markup command, based on the \\box command defined" +msgstr "" + +#. Documentation/snippets/three-sided-box.ly:37 (comment) +msgid "in scm/define-markup-commands.scm" +msgstr "" + +#. Documentation/snippets/three-sided-box.ly:49 (comment) +msgid "Test it:" +msgstr "" + +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) +msgid "Change the style permanently" +msgstr "" + +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) +msgid "Revert to default style:" +msgstr "" + +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) +msgid "single-digit style only for the next time signature" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +msgid "make the staff lines invisible on staves" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) +msgid "incipitDiscantus" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) +msgid "incipitAltus" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) +msgid "incipitTenor" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) +msgid "incipitBassus" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) +msgid "" +"StaffGroup is used instead of ChoirStaff to get bar lines between systems" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) +msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) +msgid "between the lyrics." +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) +msgid "the next three instructions keep the lyrics between the bar lines" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) +msgid "naturalizeMusic" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) +msgid "The default treble clef" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) +msgid "The standard bass clef" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) +msgid "The baritone clef" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) +msgid "The standard choral tenor clef" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) +msgid "A non-standard clef" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) +msgid "The following clef changes do not preserve" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) +msgid "the normal relationship between notes and clefs:" +msgstr "" + +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) +msgid "Return to the normal clef:" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:43 (comment) +msgid "Abreviations" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:46 (variable) +msgid "db" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:47 (variable) +msgid "dub" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:48 (variable) +msgid "dubetc" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:50 (variable) +msgid "ub" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:51 (variable) +msgid "udb" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:52 (variable) +msgid "udbetc" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:54 (variable) +msgid "fermaTa" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:56 (variable) +msgid "accel" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:57 (variable) +msgid "ritar" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:63 (comment) +msgid "Strings" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:66 (variable) +msgid "svib" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:67 (variable) +msgid "pvib" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:68 (variable) +msgid "mvib" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:69 (variable) +msgid "sulp" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:70 (variable) +msgid "norm" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:72 (variable) +msgid "quatre" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:76 (comment) +msgid "Shifting Notes" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:79 (variable) +msgid "shift" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:80 (variable) +msgid "shifta" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:81 (variable) +msgid "shiftb" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:85 (comment) +msgid "Hairpin" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:88 (comment) +msgid "aniente = \\\"a niente\\\"" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:89 (variable) +msgid "aniente" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:96 (variable) +msgid "tupletbp" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:100 (comment) +msgid "Flag [Note Head - Stem]" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:103 (variable) +msgid "noflag" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:106 (comment) +msgid "Functions" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:121 (comment) +msgid "Instruments" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:124 (variable) +msgid "ViolinSolo" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:134 (comment) +msgid "Measure 1" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:144 (comment) +msgid "Measure 2" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:154 (comment) +msgid "Measure 3" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:162 (comment) +msgid "Measure 4" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:171 (comment) +msgid "Measure 5" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:179 (comment) +msgid "Measure 6" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:181 (comment) +msgid "\\featherDurations #(ly:make-moment 2 3)" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:188 (comment) +msgid "Measure 7" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:197 (comment) +msgid "Measure 8" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:202 (comment) +msgid "Measure 9" +msgstr "" + +#. Documentation/snippets/unfretted-headword.ly:213 (comment) +msgid "Score" +msgstr "" + +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) +msgid "testnotes" +msgstr "" + +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +msgid "display grobs for each note head:" +msgstr "" + +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) +msgid "\\override NoteHead #'before-line-breaking = #display-grobs" +msgstr "" + +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) +msgid "or just for one:" +msgstr "" + +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) +msgid "parallelogram" +msgstr "" + +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) +msgid "myNoteHeads" +msgstr "" + +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) +msgid "normalNoteHeads" +msgstr "" + +#. Documentation/snippets/utf-8.ly:22 (comment) +msgid "end verbatim - this comment is a hack to prevent texinfo.tex" +msgstr "" + +#. Documentation/snippets/utf-8.ly:23 (comment) +msgid "from choking on non-European UTF-8 subsets" +msgstr "" + +#. Documentation/snippets/utf-8.ly:25 (comment) +msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" +msgstr "" + +#. Documentation/snippets/utf-8.ly:43 (comment) +msgid "Cyrillic font" +msgstr "" + +#. Documentation/snippets/utf-8.ly:44 (variable) +msgid "bulgarian" +msgstr "" + +#. Documentation/snippets/utf-8.ly:48 (variable) +msgid "hebrew" +msgstr "" + +#. Documentation/snippets/utf-8.ly:52 (variable) +msgid "japanese" +msgstr "" + +#. Documentation/snippets/utf-8.ly:59 (comment) +msgid "\\\"a legal song to you\\\"" +msgstr "" + +#. Documentation/snippets/utf-8.ly:60 (variable) +msgid "portuguese" +msgstr "" + +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) +msgid "upline" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +msgid "leftbrace" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) +msgid "rightbrace" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) +msgid "dropLyrics" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) +msgid "raiseLyrics" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) +msgid "skipFour" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +msgid "lyricsA" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) +msgid "lyricsB" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +msgid "lyricsC" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) +msgid "lyricsD" +msgstr "" + +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) +msgid "m" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) +msgid "sopWords" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) +msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) +msgid "again, we could replace the line above this with the line below." +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) +msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) +msgid "refrain" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) +msgid "SoloNotes" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) +msgid "SoloLyrics" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) +msgid "SopranoNotes" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) +msgid "SopranoLyrics" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) +msgid "BassNotes" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) +msgid "BassLyrics" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) +msgid "SoloVoice" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) +msgid "SopranoVoice" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) +msgid "BassVoice" +msgstr "" + +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) +msgid "these lines prevent empty staves from being printed" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) +msgid "voltaMusic" +msgstr "" + +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) +msgid "voltaAdLib" +msgstr "" + +#. Documentation/snippets/wind-headword.ly:24 (comment) +msgid "Tchaikovsky" +msgstr "" + +#. Documentation/snippets/wind-headword.ly:25 (comment) +msgid "Nutcracker Suite, VII Dance of the Merlitons" +msgstr "" + msgid "Up:" msgstr "" diff --git a/Documentation/po/nl.po b/Documentation/po/nl.po index 72ff50747e..0ce4b27c82 100644 --- a/Documentation/po/nl.po +++ b/Documentation/po/nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" +"POT-Creation-Date: 2012-01-27 13:12+0100\n" "PO-Revision-Date: 2010-04-13 12:28+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,11 +22,10 @@ msgstr "" "Deze pagina is voor %(package_name)s-%(package_version)s (%(branch_str)s)." #: postprocess_html.py:57 -#, python-format +#, fuzzy, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" "Jouw suggesties ter verbetering van de " "documentatie zijn welkom. Meld fouten en problemen alsjeblieft aan onze " @@ -42,11 +41,11 @@ msgstr "Andere talen: %s." msgid "About automatic language selection." msgstr "Gebruik van automatische taalkeuze." -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "stabiele tak" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "ontwikkelingstak" @@ -131,21 +130,19 @@ msgid "post-GDP" msgstr "na-GDP" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" -msgstr "" - -#. Documentation/changes.tely:184 (variable) -msgid "noclef" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" msgstr "" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" +msgid "New features in 2.16 since 2.14" msgstr "" #. @top in Documentation/macros.itexi @@ -287,15 +284,15 @@ msgid "Long literature list" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Colorado" +msgid "University of Colorado Engraving music bibliography" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Computer notation" +msgid "Computer notation bibliography" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" +msgid "Engraving bibliography" msgstr "" #. @node in Documentation/fdl.itexi @@ -317,27 +314,25 @@ msgstr "" msgid "ADDENDUM: How to use this License for your documents" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "" @@ -498,21 +493,21 @@ msgstr "" msgid "Adding articulation to notes (example)" msgstr "" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "" @@ -521,6 +516,33 @@ msgstr "" msgid "Interfaces for programmers" msgstr "" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Lilypond code blocks" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Void scheme functions" +msgstr "" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -528,7 +550,12 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" +msgid "Music function definitions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function usage" msgstr "" #. @node in Documentation/extending/programming-interface.itely @@ -553,7 +580,12 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" +msgid "Void music functions" +msgstr "" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Event functions" msgstr "" #. @node in Documentation/extending/programming-interface.itely @@ -689,11 +721,15 @@ msgstr "" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" msgstr "" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" msgstr "" @@ -720,32 +756,38 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "" @@ -753,6 +795,8 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "" @@ -764,36 +808,42 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "dotted note" msgstr "" @@ -814,6 +864,7 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" msgstr "" @@ -824,12 +875,14 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "tempo indication" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "metronome" msgstr "" @@ -840,6 +893,7 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" msgstr "" @@ -887,28 +941,34 @@ msgstr "" msgid "Overview of manuals" msgstr "" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "" -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "" @@ -939,24 +999,28 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "" @@ -967,18 +1031,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "" @@ -989,18 +1056,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "" @@ -1016,6 +1086,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "" @@ -1026,6 +1097,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "" @@ -1036,6 +1108,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "" @@ -1046,6 +1119,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "" @@ -1065,6 +1139,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" msgstr "" @@ -1076,19 +1151,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" msgstr "" @@ -1118,19 +1195,21 @@ msgid "anacrusis" msgstr "" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" msgstr "" @@ -1141,18 +1220,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "" @@ -1177,6 +1259,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "" @@ -1197,6 +1280,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "" @@ -1211,6 +1295,8 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "system" msgstr "" @@ -1222,6 +1308,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "" @@ -1243,6 +1330,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "" @@ -1254,12 +1342,14 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "" @@ -1295,14 +1385,18 @@ msgstr "" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "" #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) msgid "vocal" msgstr "" @@ -1310,625 +1404,775 @@ msgstr "" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) msgid "text" msgstr "" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "" -#. Documentation/learning/fundamental.itely:629 (comment) +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) #, fuzzy msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" "Stimme·\\\"1\\\"··············Stimme·\\\"2\\\" Stimme \\\"3\\\"" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "" -#. Documentation/learning/fundamental.itely:684 (comment) +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) #, fuzzy msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "" "Stimme·\\\"1\\\"··············Stimme·\\\"2\\\" Stimme \\\"3\\\"" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" msgstr "" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "" -#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/learning/fundamental.itely:2926 (comment) msgid "set key and time signature" msgstr "" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) msgid "hornNotes" msgstr "" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "" @@ -1961,6 +2205,7 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "" @@ -2042,6 +2287,7 @@ msgstr "" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" msgstr "" @@ -2079,266 +2325,372 @@ msgstr "" msgid "Scores and parts" msgstr "" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) msgid "sesquisharp" msgstr "" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" "Dynamik-Zeichen an einer Linie ausrichten, die 2 Einheiten über dem System " "ist" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) msgid "continuation of main voice" msgstr "" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +#, fuzzy +msgid "Move the c2 out of the main note column" msgstr "" "Verschiebe das c2 aus der Hauptnotenkolumne, damit Verschmelzung funktioniert" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" +msgstr "" + +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" msgstr "" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "" @@ -2566,11 +2918,6 @@ msgstr "" msgid "Other sources of information" msgstr "" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2704,10 +3051,10 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "" @@ -2758,8 +3105,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "" @@ -2805,9 +3152,9 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "" @@ -2838,11 +3185,11 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "" @@ -2908,7 +3255,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "" @@ -3364,6 +3711,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" msgstr "" @@ -3659,8 +4007,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "" @@ -3786,8 +4134,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" msgstr "" @@ -3913,7 +4261,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" msgstr "" @@ -3999,7 +4347,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) msgid "tenor" msgstr "" @@ -4223,34 +4571,66 @@ msgstr "" msgid "Specialist notation" msgstr "" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "" + +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" msgstr "" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "" +#. Documentation/notation/input.itely:1792 (variable) +#, fuzzy +msgid "test" +msgstr "Voetnoten" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4293,17 +4673,67 @@ msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" +msgid "Creating titles headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" msgstr "" #. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely msgid "Custom headers footers and titles" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" +#, fuzzy +msgid "Creating footnotes" +msgstr "Voetnoten" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Footnotes overview" +msgstr "Voetnoten" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Automatic footnotes" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Manual footnotes" +msgstr "Voetnoten" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Reference to page numbers" @@ -4339,14 +4769,29 @@ msgstr "" msgid "Using tags" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" msgstr "" #. @node in Documentation/notation/input.itely @@ -4441,63 +4886,88 @@ msgstr "" msgid "Percussion in MIDI" msgstr "" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" msgstr "" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" msgstr "" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." -msgstr "" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" +msgstr "" + +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" +msgstr "" -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." msgstr "" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" msgstr "" -#. Documentation/notation/spacing.itely:2053 (comment) -msgid "staff and the next is determined by 'space." +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" msgstr "" -#. Documentation/notation/spacing.itely:2056 (comment) +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." +msgstr "" + +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" msgstr "" -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "" -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "" -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr "" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "" @@ -4786,159 +5256,168 @@ msgstr "" msgid "Changing spacing" msgstr "" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) msgid "accompaniment" msgstr "" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) msgid "words" msgstr "" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2017 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2023 (comment) +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" msgstr "" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "" -#. Documentation/notation/changing-defaults.itely:3449 (comment) +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3456 (comment) +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "" -#. Documentation/notation/changing-defaults.itely:3476 (comment) +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3489 (comment) +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "" -#. Documentation/notation/changing-defaults.itely:3504 (comment) +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3516 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "" @@ -4994,7 +5473,7 @@ msgstr "" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" +msgid "Context layout order" msgstr "" #. @node in Documentation/notation/changing-defaults.itely @@ -5084,11 +5563,6 @@ msgstr "" msgid "Direction and placement" msgstr "" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5262,6 +5736,11 @@ msgstr "" msgid "Common chord modifiers" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined string tunings" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" @@ -5382,6 +5861,11 @@ msgstr "" msgid "Accordion glyphs" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5432,6 +5916,11 @@ msgstr "" msgid "Text markup list commands" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5569,12 +6058,12 @@ msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Predefined type predicates" +msgid "Context modification identifiers" msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" +msgid "Predefined type predicates" msgstr "" #. @node in Documentation/notation/cheatsheet.itely @@ -5583,9 +6072,15 @@ msgid "Cheat sheet" msgstr "" #. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "" + #. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + #. @unnumberedsec in Documentation/snippets.tely -msgid "\\\\TEXT\\\\" +msgid "\\\\\\\\TEXT\\\\\\\\" msgstr "" #. @node in Documentation/usage/running.itely @@ -5869,6 +6364,16 @@ msgstr "" msgid "Point and click" msgstr "" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -5994,779 +6499,1574 @@ msgstr "" msgid "Make and Makefiles" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) -msgid "discant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) -msgid "dot" +#. @top in Documentation/cs/macros.itexi +msgid "LilyPond -- \\\\TITLE\\\\" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) -msgid "16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) -msgid "accBasson" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) -msgid "een korig 8 en 16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) -msgid "accBandon" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) -msgid "accVCello" +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) -msgid "4-8-16 voets register" +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) -msgid "accHarmon" +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) -msgid "accTrombon" +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) -msgid "eenkorig 4 en 16 voets register" +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) -msgid "accOrgan" +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) -msgid "accMaster" +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) -msgid "accAccord" +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) -msgid "accMusette" +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) -msgid "accCeleste" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) -msgid "accOboe" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) -msgid "accClarin" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) -msgid "accPiccolo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) -msgid "accViolin" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) -msgid "continuo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) -msgid "bassStaff" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) -msgid "drh" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) -msgid "drl" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) -msgid "timb" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) -msgid "two" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) -msgid "threeTwo" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) -msgid "threeFour" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vše dohromady" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) -msgid "splitStaffBarLineMarkup" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) -msgid "splitStaffBarLine" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) -msgid "cueWhile" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řešení chyb" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) -msgid "flute" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) -msgid "clarinet" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) -msgid "pianoRH" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Vypuštěný materiál" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) -msgid "pianoLH" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) -msgid "first, define a variable to hold the formatted date:" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) -msgid "date" +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) -msgid "d-%m-%Y\\\" (localtime (current-time)))" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) -msgid "use it in the title block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přezkoušení taktů" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) -msgid "and use it in a \\markup block:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" msgstr "" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) -msgid "voiceFive" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" msgstr "" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) -msgid "graceNotes" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) -msgid "Default layout:" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) -msgid "Reducing the minimum space below the staff and above the lyrics:" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) -msgid "Increase the size of the bar number by 2" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ligatury" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) -msgid "Print a bar number every second measure" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) -msgid "Center-align bar numbers" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) -msgid "Left-align bar numbers" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) -msgid "the RehearsalMark will be centered above the Clef" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) -msgid "the RehearsalMark will be centered above the TimeSignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) -msgid "the RehearsalMark will be centered above the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) -msgid "" -"the RehearsalMark will be aligned with the left edge of the KeySignature" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Dynamika" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) -msgid "" -"the RehearsalMark will be aligned with the right edge of the KeySignature" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) -msgid "and then shifted right by one unit." +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) -msgid "upperStaff" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) -msgid "\\break % 1 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) -msgid "\\break %2 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) -msgid "\\break % 3 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) -msgid "\\break % 4 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) -msgid "\\break % 5 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) -msgid "\\break % 6 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) -msgid "\\break % 7 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) -msgid "\\break % 8 (8*1)" +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) -msgid "\\break % 12 (32*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) -msgid "lowerStaff" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) -msgid "\\break % 2 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) -msgid "\\break % 4 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) -msgid "\\break % 9 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) -msgid "lig" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) -msgid "\\break % 11 (16*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) -msgid "\\break % 12 (8*1)" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" msgstr "" -#. Documentation/snippets/ancient-headword.ly:34 (context id) -msgid "cantus" +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:36 (comment) -msgid "Verse 1 — Salve, Regína" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" msgstr "" -#. Documentation/snippets/ancient-headword.ly:47 (comment) -msgid "Verse 2 — Vita, dulcédo" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:48 (comment) -msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Absolutní označení not" msgstr "" -#. Documentation/snippets/ancient-headword.ly:49 (comment) -msgid "\\divisioMinima" +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" msgstr "" -#. Documentation/snippets/ancient-headword.ly:50 (comment) -msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" msgstr "" -#. Documentation/snippets/ancient-headword.ly:51 (comment) -msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:52 (comment) -msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:53 (comment) -msgid "\\divisioMaior" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" msgstr "" -#. Documentation/snippets/ancient-headword.ly:54 (comment) -msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" msgstr "" -#. Documentation/snippets/ancient-headword.ly:55 (comment) -msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" msgstr "" -#. Documentation/snippets/ancient-headword.ly:56 (comment) -msgid "\\finalis" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" msgstr "" -#. Documentation/snippets/ancient-headword.ly:57 (comment) -msgid "Verse 3 — Ad te clamámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" msgstr "" -#. Documentation/snippets/ancient-headword.ly:66 (comment) -msgid "Verse 4 — Ad te suspirámus" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:79 (comment) -msgid "Verse 5 — Eia ergo, Advocáta nostra" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" msgstr "" -#. Documentation/snippets/ancient-headword.ly:95 (comment) -msgid "Verse 6 — Et Jesum" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Notenkolumnen" msgstr "" -#. Documentation/snippets/ancient-headword.ly:109 (comment) -msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" msgstr "" -#. Documentation/snippets/ancient-headword.ly:127 (comment) -msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) -msgid "chant" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) -msgid "verba" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) -msgid "incipit" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) -msgid "turn off bar lines" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) -msgid "need this extra \\skip such that clef change comes" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) -msgid "after bar line" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) -msgid "turn bar lines on again" +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) -msgid "occur in the first bar after the incipit. Dto. for forceClef." +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Soprán a violoncello" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) -msgid "Therefore, we need an extra \\skip." +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) -msgid "the actual music" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) -msgid "let finis bar go through all staves" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) -msgid "finis bar" +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) -msgid "discantusNotes" +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" msgstr "" +"Verschiebe das c2 aus der Hauptnotenkolumne, damit Verschmelzung funktioniert" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) -msgid "two bars" +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) -msgid "eight bars" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) -msgid "one bar" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) -msgid "discantusLyrics" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) -msgid "altusNotes" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) -msgid "seven bars" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) -msgid "altusLyrics" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) -msgid "tenorNotes" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) -msgid "four bars" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext finden" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) -msgid "tenorLyrics" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) -msgid "bassusNotes" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) -msgid "bassusLyrics" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) -msgid "choirStaff" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) -msgid "no bars in staves" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) -msgid "incipit should not start with a start delimiter" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) -msgid "no slurs" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "break-visibility (unsichtbar machen)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "color (Farbe)" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" msgstr "" -"auch die Aufteilung der Noten verbessert sich, wenn der folgende Befehl " -"benutzt wird:" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) -msgid "tick" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Automatické chování" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) -msgid "Use markup to center the chant on the page" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) -msgid "centered" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Fingersatz" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) -msgid "End score" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) -msgid "End markup" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" msgstr "" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) -msgid "fragment" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Dynamik" msgstr "" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) -msgid "slurNotes" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) -msgid "Default behavior" +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) -msgid "Corrected to avoid collisions" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) -msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "extra-offset (Genaues Positionieren)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Pouze noty" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s příslušnými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Orchestr, sbor a klavír" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +msgid "accTrombon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) +msgid "accOboe" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) +msgid "accClarin" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) +msgid "accPiccolo" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) +msgid "accViolin" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) +msgid "continuo" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) +msgid "bassStaff" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +msgid "drh" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) +msgid "drl" +msgstr "" + +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) +msgid "timb" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) +msgid "two" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) +msgid "threeTwo" +msgstr "" + +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) +msgid "threeFour" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) +msgid "splitStaffBarLineMarkup" +msgstr "" + +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) +msgid "splitStaffBarLine" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) +msgid "cueWhile" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) +msgid "flute" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) +msgid "clarinet" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) +msgid "pianoRH" +msgstr "" + +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) +msgid "pianoLH" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) +msgid "first, define a variable to hold the formatted date:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) +msgid "date" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +msgid "d-%m-%Y\\\" (localtime (current-time)))" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) +msgid "use it in the title block:" +msgstr "" + +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) +msgid "and use it in a \\markup block:" +msgstr "" + +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) +msgid "voiceFive" +msgstr "" + +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) +msgid "graceNotes" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) +msgid "Default layout:" +msgstr "" + +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) +msgid "Reducing the minimum space below the staff and above the lyrics:" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +msgid "Increase the size of the bar number by 2" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) +msgid "Print a bar number every second measure" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +msgid "Center-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) +msgid "Left-align bar numbers" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) +msgid "the RehearsalMark will be centered above the Clef" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) +msgid "the RehearsalMark will be centered above the TimeSignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) +msgid "the RehearsalMark will be centered above the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) +msgid "" +"the RehearsalMark will be aligned with the left edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) +msgid "" +"the RehearsalMark will be aligned with the right edge of the KeySignature" +msgstr "" + +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +msgid "and then shifted right by one unit." +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) +msgid "upperStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:52 (comment) +msgid "\\break % 1 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:63 (comment) +msgid "\\break %2 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:75 (comment) +msgid "\\break % 3 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:90 (comment) +msgid "\\break % 4 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) +msgid "\\break % 5 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) +msgid "\\break % 6 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) +msgid "\\break % 7 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:129 (comment) +msgid "\\break % 8 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:132 (comment) +msgid "\\break % 12 (32*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) +msgid "lowerStaff" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:147 (comment) +msgid "\\break % 2 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:152 (comment) +msgid "\\break % 4 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:191 (comment) +msgid "\\break % 9 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:193 (comment) +msgid "lig" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:197 (comment) +msgid "\\break % 11 (16*1)" +msgstr "" + +#. Documentation/snippets/ancient-fonts.ly:208 (comment) +msgid "\\break % 12 (8*1)" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:29 (context id) +msgid "cantus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:31 (comment) +msgid "Verse 1 — Salve, Regína" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:42 (comment) +msgid "Verse 2 — Vita, dulcédo" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:43 (comment) +msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:44 (comment) +msgid "\\divisioMinima" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:45 (comment) +msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:46 (comment) +msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:47 (comment) +msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:48 (comment) +msgid "\\divisioMaior" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:49 (comment) +msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:50 (comment) +msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:51 (comment) +msgid "\\finalis" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:52 (comment) +msgid "Verse 3 — Ad te clamámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:61 (comment) +msgid "Verse 4 — Ad te suspirámus" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:74 (comment) +msgid "Verse 5 — Eia ergo, Advocáta nostra" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:90 (comment) +msgid "Verse 6 — Et Jesum" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:104 (comment) +msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" +msgstr "" + +#. Documentation/snippets/ancient-headword.ly:122 (comment) +msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) +msgid "chant" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) +msgid "verba" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) +msgid "incipit" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +#, fuzzy +msgid "Set tight spacing" +msgstr "" +"left-padding (Verschieben nach rechts) und right-padding (Verschieben nach " +"links)" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) +msgid "turn off bar lines" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) +msgid "need this extra \\skip such that clef change comes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) +msgid "after bar line" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) +msgid "turn bar lines on again" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) +msgid "occur in the first bar after the incipit. Dto. for forceClef." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) +msgid "Therefore, we need an extra \\skip." +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +msgid "the actual music" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) +msgid "let finis bar go through all staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) +msgid "finis bar" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) +msgid "discantusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) +msgid "two bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) +msgid "eight bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) +msgid "one bar" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) +msgid "discantusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) +msgid "altusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) +msgid "seven bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) +msgid "altusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) +msgid "tenorNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) +msgid "four bars" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) +msgid "tenorLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) +msgid "bassusNotes" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) +msgid "bassusLyrics" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) +msgid "choirStaff" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +msgid "no bars in staves" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) +msgid "incipit should not start with a start delimiter" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) +msgid "no slurs" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" +msgstr "" + +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +#, fuzzy +msgid "overall spacing if you do not comment the command out." +msgstr "" +"auch die Aufteilung der Noten verbessert sich, wenn der folgende Befehl " +"benutzt wird:" + +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) +msgid "tick" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) +msgid "Use markup to center the chant on the page" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) +msgid "centered" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) +msgid "End score" +msgstr "" + +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) +msgid "End markup" +msgstr "" + +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) +msgid "fragment" +msgstr "" + +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) +msgid "slurNotes" +msgstr "" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) +msgid "Default behavior" +msgstr "" + +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) +msgid "Corrected to avoid collisions" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) +msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" +msgstr "" + +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) msgid "Span -----------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" "andere Seitenumbruchfunktionen können für jeden Abschnitt benutzt werden" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" @@ -6774,540 +8074,592 @@ msgstr "" "\\override·BreathingSign·#'text·=·#(make-musicglyph-markup·\\\"scripts.rcomma" "\\\")" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) msgid "Default setting" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) msgid "sustainNotes" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) msgid "\\break" msgstr "" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "" -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "" -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) -msgid "show hairpin" +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) +msgid "show hairpin" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) +msgid "hide text span" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) +msgid "show glissando" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +msgid "ten" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +msgid "finger" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) +msgid "parenF" +msgstr "" + +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) +msgid "the hidden measure and bar line" +msgstr "" + +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) +msgid "\\cadenzaOn turns off automatic calculation of bar numbers" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) -msgid "hide text span" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) -msgid "show glissando" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" msgstr "" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) -msgid "parenF" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) -msgid "the hidden measure and bar line" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) -msgid "\\cadenzaOn turns off automatic calculation of bar numbers" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" "kein Barre, Bundbezeichnung unten oder links, kleine Schrift für stumme Saite" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) msgid "notes." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) msgid "Ambitus engraving logics" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) msgid "mycresc" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) msgid "mydecresc" msgstr "" @@ -7319,1514 +8671,1609 @@ msgstr "" msgid "crpoco" msgstr "" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -msgid "cresc" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -msgid "decresc" -msgstr "" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) msgid "extendOn" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "pUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) msgid "iUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) msgid "mUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) msgid "aUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) msgid "xUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) msgid "example" msgstr "" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) +msgid "lyr" msgstr "" -"Tipp von http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00215." -"html" -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) -msgid "lyr" +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" "Punktgröße .35 von Bundzwischenraum, Punktposition .55 von Bundzwischenraum" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" msgstr "" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) msgid "dimin" msgstr "" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "" -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) msgid "sMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:61 (variable) msgid "Timeline" msgstr "" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:93 (comment) msgid "Start score" msgstr "" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) msgid "End pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" msgstr "" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" msgstr "" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" msgstr "" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" msgstr "" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" "mit den zwei nächsten Befehlen wird der Text zwischen den Taktstrichen " "gehalten" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" +"auch die Aufteilung der Noten verbessert sich, wenn der folgende Befehl " +"benutzt wird:" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) msgid "space for instrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) msgid "hornMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) msgid "altoILyrics" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoIILyrics" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" msgstr "" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr "" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" "\\cadenzaOn unterdrückt die Taktzählung und \\stopStaff entfernt Notenlinien" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" @@ -8834,92 +10281,92 @@ msgstr "" "Text zur gewünschten Position verschieben und Platzbedarf für " "optimalesErgebnis verändern." -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" "wenn der unfold-Zähler höher gesetzt wird, vergrößert sich der Platz ohne " "System" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" "Coda-Zeichen über den Schlüssel setzen abhängig von Zeilenpositionvon Coda" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "" @@ -8927,228 +10374,228 @@ msgstr "" msgid "voc" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) -msgid "quoteTest" +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +msgid "quoteMe" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) -msgid "french horn" +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) +msgid "original" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) -msgid "quoteMe" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) -msgid "original" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" msgstr "" -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) #, fuzzy msgid "sopranonotes" msgstr "Voetnoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) msgid "sopranowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) #, fuzzy msgid "altonotes" msgstr "Voetnoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) msgid "altowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) #, fuzzy msgid "tenornotes" msgstr "Voetnoten" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) msgid "tenorwords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) #, fuzzy msgid "bassnotes" msgstr "Noot" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) msgid "basswords" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" @@ -9156,157 +10603,157 @@ msgstr "" "9. Es sollte jetzt aussehen wie (s·s·e[·c·|·c·c·c·c·c·c·c·c·|·c·c·c·c·c·c·e]" "·s·s)" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" @@ -9314,765 +10761,821 @@ msgstr "" "Zeigt eine horizontale Linie. Die vertikale Linie (wie eine Taktlinie) " "istvon einer Gitterlinie simuliert" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) #, fuzzy msgid "notes" msgstr "Noot" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) msgid "trillFlat" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) msgid "LH staff" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "" -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#, fuzzy +msgid "uncomment the line below when using a separate file" msgstr "" "\\include \\\"piece.ly\\\" %%% Zeile einkommentieren, wenn eine " "extra Datei benutzt wird" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) msgid "RH staff" msgstr "" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" "Neuer Befehl um einen Kasten mit drei Seiten (Nord, West und Süd) zu " "erstellen" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" "StaffGroup wird anstelle von ChoirStaff benutzt, um Taktstriche zwischen " "Systemen zu haben" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) msgid "Abreviations" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) #, fuzzy msgid "testnotes" msgstr "Voetnoten" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" msgstr "" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) msgid "upline" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +#, fuzzy +msgid "we could remove the line about this with the line below, since" msgstr "" "die Zeile oberhalb könnte mir der Zeile unterhalb entfernt werden, weil" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) msgid "refrain" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) #, fuzzy msgid "SoloNotes" msgstr "Voetnoten" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) msgid "SoloLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) msgid "SopranoNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) msgid "SopranoLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) msgid "BassLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) msgid "SopranoVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" msgstr "" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "" @@ -10093,3 +11596,10 @@ msgstr "Voetnoten" msgid "Table of Contents" msgstr "Inhoudsopgave" + +#~ msgid "" +#~ "Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" +#~ "msg00215.html" +#~ msgstr "" +#~ "Tipp von http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00215." +#~ "html" diff --git a/Documentation/po/zh.po b/Documentation/po/zh.po index b5fc86a301..aaa66c2b1c 100644 --- a/Documentation/po/zh.po +++ b/Documentation/po/zh.po @@ -1,17 +1,18 @@ -# translation of LilyPond documentation +# translation of LilyPond documentation to Chinese (simplified) # Copyright (C) 2006 Han-Wen Nienhuys, Jan Nieuwenhuizen # This file is distributed under the same license as the lilypond package. # Ben Luo , 2011 +# Anthony Fok , 2012 # msgid "" msgstr "" -"Project-Id-Version: zh\n" +"Project-Id-Version: lilypond-doc 2.15.40\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-06 22:26+0100\n" +"POT-Creation-Date: 2012-06-08 12:00+0800\n" "PO-Revision-Date: 2011-01-23 20:47+0800\n" -"Last-Translator: Ben Luo \n" -"Language-Team: 汉语 \n" -"Language: 汉语\n" +"Last-Translator: Anthony Fok \n" +"Language-Team: Chinese (simplified) \n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,32 +25,31 @@ msgstr "" #: postprocess_html.py:57 #, python-format msgid "" -"Your suggestions for the documentation " -"are welcome, please report errors to our bug list." +"We welcome your aid; please help us by " +"reporting errors to our bug list." msgstr "" #: postprocess_html.py:69 #, python-format msgid "Other languages: %s." -msgstr "其它语言:%s。" +msgstr "其他语言:%s。" #: postprocess_html.py:70 #, python-format msgid "About automatic language selection." -msgstr "" +msgstr "关于 自动语言选择" -#: postprocess_html.py:326 +#: postprocess_html.py:330 msgid "stable-branch" msgstr "稳定分支" -#: postprocess_html.py:328 +#: postprocess_html.py:332 msgid "development-branch" msgstr "开发分支" #: translations-status.py:72 msgid "Section titles" -msgstr "段标题" +msgstr "章节标题" #: translations-status.py:73 #, python-format @@ -62,7 +62,7 @@ msgstr "翻译者" #: translations-status.py:74 msgid "Translation checkers" -msgstr "校对" +msgstr "翻译校对" #: translations-status.py:75 msgid "Translated" @@ -74,15 +74,15 @@ msgstr "最新" #: translations-status.py:76 msgid "Other info" -msgstr "其它信息" +msgstr "其他信息" #: translations-status.py:78 msgid "no" -msgstr "无" +msgstr "否" #: translations-status.py:79 msgid "not translated" -msgstr "没有翻译" +msgstr "尚未翻译" #: translations-status.py:81 #, python-format @@ -92,7 +92,7 @@ msgstr "部分 (%(p)d %%)" #: translations-status.py:83 #, python-format msgid "partially translated (%(p)d %%)" -msgstr "部分翻译 (%(p)d %%)" +msgstr "已翻译了一部分 (%(p)d %%)" #: translations-status.py:84 translations-status.py:86 msgid "yes" @@ -108,7 +108,7 @@ msgstr "最新的" #: translations-status.py:88 msgid "partially" -msgstr "部分地" +msgstr "部分" #: translations-status.py:89 msgid "partially up to date" @@ -120,33 +120,31 @@ msgstr "不适用" #: translations-status.py:91 msgid "pre-GDP" -msgstr "" +msgstr "GDP 前" #: translations-status.py:92 msgid "post-GDP" -msgstr "" +msgstr "GDP 后" #. -*- coding: utf-8 -*- -#. Documentation/changes.tely:183 (variable) -msgid "coloredheads" -msgstr "有颜色的头" - -#. Documentation/changes.tely:184 (variable) -msgid "noclef" -msgstr "无谱号" +#. Documentation/changes.tely:158 (variable) +#. Documentation/extending/programming-interface.itely:496 (variable) +msgid "dyn" +msgstr "" #. @node in Documentation/changes.tely #. @node in Documentation/macros.itexi +#. @node in Documentation/cs/macros.itexi msgid "Top" msgstr "首页" #. @top in Documentation/changes.tely -msgid "New features in 2.13 since 2.12" -msgstr "从2.12到2.13出现的新特性" +msgid "New features in 2.16 since 2.14" +msgstr "从 2.14 到 2.16 出现的新功能" #. @top in Documentation/macros.itexi msgid "LilyPond --- \\\\TITLE\\\\" -msgstr "" +msgstr "LilyPond --- \\\\TITLE\\\\" #. @subsubheading in Documentation/macros.itexi msgid "Predefined commands" @@ -162,7 +160,7 @@ msgstr "参见" #. @subsubheading in Documentation/macros.itexi msgid "Known issues and warnings" -msgstr "知道的问题和警告" +msgstr "已知问题和警告" #. @node in Documentation/essay.tely #. @appendix in Documentation/essay.tely @@ -180,17 +178,17 @@ msgstr "LilyPond 索引" #. @node in Documentation/essay/engraving.itely #. @chapter in Documentation/essay/engraving.itely msgid "Music engraving" -msgstr "" +msgstr "音乐雕版" #. @node in Documentation/essay/engraving.itely #. @section in Documentation/essay/engraving.itely msgid "The LilyPond story" -msgstr "" +msgstr "LilyPond 的故事" #. @node in Documentation/essay/engraving.itely #. @section in Documentation/essay/engraving.itely msgid "Engraving details" -msgstr "" +msgstr "雕版细节" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely @@ -200,32 +198,32 @@ msgstr "音乐字体" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely msgid "Optical spacing" -msgstr "" +msgstr "视觉空间" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely msgid "Ledger lines" -msgstr "" +msgstr "附加线" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely msgid "Optical sizing" -msgstr "可选的尺寸" +msgstr "视觉大小调整" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely msgid "Why work so hard?" -msgstr "为什么工作地如此辛苦?" +msgstr "为什么工作得这么辛苦?" #. @node in Documentation/essay/engraving.itely #. @section in Documentation/essay/engraving.itely msgid "Automated engraving" -msgstr "" +msgstr "自动雕版" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely msgid "Beauty contests" -msgstr "" +msgstr "选美大赛" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely @@ -240,7 +238,7 @@ msgstr "把事情做对" #. @node in Documentation/essay/engraving.itely #. @section in Documentation/essay/engraving.itely msgid "Building software" -msgstr "生产软件" +msgstr "构建软件" #. @node in Documentation/essay/engraving.itely #. @unnumberedsubsec in Documentation/essay/engraving.itely @@ -265,7 +263,7 @@ msgstr "让 LilyPond 工作" #. @node in Documentation/essay/engraving.itely #. @section in Documentation/essay/engraving.itely msgid "Engraved examples (BWV 861)" -msgstr "" +msgstr "雕版例子 (BWV 861)" #. @node in Documentation/essay/literature.itely #. @chapter in Documentation/essay/literature.itely @@ -283,16 +281,16 @@ msgid "Long literature list" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Colorado" +msgid "University of Colorado Engraving music bibliography" msgstr "" #. @subheading in Documentation/essay/literature.itely -msgid "Computer notation" -msgstr "计算机五线谱" +msgid "Computer notation bibliography" +msgstr "计算机记谱法参考文献" #. @subheading in Documentation/essay/literature.itely -msgid "Engraving" -msgstr "" +msgid "Engraving bibliography" +msgstr "雕版印刷术参考文献" #. @node in Documentation/fdl.itexi #. @appendix in Documentation/fdl.itexi @@ -307,45 +305,43 @@ msgstr "" #. @node in Documentation/fdl.itexi #. @appendix in Documentation/fdl.itexi msgid "GNU Free Documentation License" -msgstr "GNU 自由文档协议" +msgstr "GNU 自由文档许可证" #. @heading in Documentation/fdl.itexi msgid "ADDENDUM: How to use this License for your documents" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:734 (variable) +#. Documentation/extending/scheme-tutorial.itely:791 (variable) msgid "traLaLa" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:736 (comment) -msgid "dummy action to deal with parser lookahead" -msgstr "" - -#. Documentation/extending/scheme-tutorial.itely:1354 (variable) -#. Documentation/learning/fundamental.itely:3003 (variable) -#. Documentation/learning/fundamental.itely:3058 (variable) -#. Documentation/notation/changing-defaults.itely:3802 (variable) +#. Documentation/extending/scheme-tutorial.itely:1435 (variable) +#. Documentation/learning/fundamental.itely:3006 (variable) +#. Documentation/learning/fundamental.itely:3061 (variable) +#. Documentation/notation/changing-defaults.itely:3798 (variable) +#. Documentation/cs/learning/fundamental.itely:3258 (variable) +#. Documentation/cs/learning/fundamental.itely:3312 (variable) msgid "padText" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1377 (variable) -#. Documentation/notation/changing-defaults.itely:3844 (variable) +#. Documentation/extending/scheme-tutorial.itely:1458 (variable) +#. Documentation/notation/changing-defaults.itely:3840 (variable) msgid "tempoPadded" msgstr "" -#. Documentation/extending/scheme-tutorial.itely:1396 (variable) +#. Documentation/extending/scheme-tutorial.itely:1477 (variable) msgid "pattern" msgstr "" #. @node in Documentation/extending/scheme-tutorial.itely #. @chapter in Documentation/extending/scheme-tutorial.itely msgid "Scheme tutorial" -msgstr "" +msgstr "Scheme 教程" #. @node in Documentation/extending/scheme-tutorial.itely #. @section in Documentation/extending/scheme-tutorial.itely msgid "Introduction to Scheme" -msgstr "" +msgstr "Scheme 简介" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely @@ -355,7 +351,7 @@ msgstr "" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely msgid "Scheme variables" -msgstr "" +msgstr "Scheme 变量" #. @node in Documentation/extending/scheme-tutorial.itely #. @subsection in Documentation/extending/scheme-tutorial.itely @@ -494,21 +490,21 @@ msgstr "" msgid "Adding articulation to notes (example)" msgstr "" -#. Documentation/extending/programming-interface.itely:139 (variable) +#. Documentation/extending/programming-interface.itely:377 (variable) msgid "manualBeam" msgstr "" -#. Documentation/extending/programming-interface.itely:160 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:192 (variable) +#. Documentation/extending/programming-interface.itely:398 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:197 (variable) msgid "AltOn" msgstr "" -#. Documentation/extending/programming-interface.itely:170 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:198 (variable) +#. Documentation/extending/programming-interface.itely:408 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) msgid "AltOff" msgstr "" -#. Documentation/extending/programming-interface.itely:185 (variable) +#. Documentation/extending/programming-interface.itely:423 (variable) msgid "withAlt" msgstr "" @@ -517,6 +513,34 @@ msgstr "" msgid "Interfaces for programmers" msgstr "面向程序员的界面" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Lilypond code blocks" +msgstr "LilyPond 代码块" + +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Scheme functions" +msgstr "Scheme 函数" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function definitions" +msgstr "Scheme 函数定义" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Scheme function usage" +msgstr "Scheme 函数用法" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +#, fuzzy +msgid "Void scheme functions" +msgstr "空函数" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Music functions" @@ -524,8 +548,13 @@ msgstr "音乐函数" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Music function syntax" -msgstr "音乐函数语法" +msgid "Music function definitions" +msgstr "音乐函数定义" + +#. @node in Documentation/extending/programming-interface.itely +#. @subsection in Documentation/extending/programming-interface.itely +msgid "Music function usage" +msgstr "音乐函数用法" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely @@ -549,9 +578,15 @@ msgstr "无参数函数" #. @node in Documentation/extending/programming-interface.itely #. @subsection in Documentation/extending/programming-interface.itely -msgid "Void functions" +#, fuzzy +msgid "Void music functions" msgstr "空函数" +#. @node in Documentation/extending/programming-interface.itely +#. @section in Documentation/extending/programming-interface.itely +msgid "Event functions" +msgstr "事件函数" + #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely msgid "Markup functions" @@ -677,7 +712,7 @@ msgstr "编译一个文件" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely msgid "Entering input" -msgstr "进入输入" +msgstr "录入输入" #. @subheading in Documentation/learning/tutorial.itely msgid "Producing output" @@ -685,13 +720,17 @@ msgstr "产生输出" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "MacOS X" -msgstr "" +msgstr "Mac OS X" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely msgid "Windows" -msgstr "" +msgstr "Windows" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely @@ -710,38 +749,44 @@ msgstr "简单的乐谱" #. @subheading in Documentation/learning/tutorial.itely msgid "Pitches" -msgstr "" +msgstr "音高" #. @rglos in Documentation/learning/tutorial.itely #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "pitch" -msgstr "" +msgstr "音高" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "interval" -msgstr "" +msgstr "音程" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:19 (variable) -#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:29 (variable) +#. @rglos in Documentation/cs/learning/tutorial.itely +#. Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly:22 (variable) +#. Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly:32 (variable) msgid "scale" -msgstr "" +msgstr "音阶" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "middle C" msgstr "中央 C" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "octave" msgstr "八度" @@ -749,6 +794,8 @@ msgstr "八度" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "accidental" msgstr "" @@ -760,36 +807,42 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "beam" -msgstr "" +msgstr "符杠" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "duration" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "whole note" msgstr "全音符" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "half note" msgstr "二分音符" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "quarter note" msgstr "四分音符" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "dotted note" msgstr "附点音符" @@ -810,8 +863,9 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "time signature" -msgstr "" +msgstr "拍号" #. @subheading in Documentation/learning/tutorial.itely msgid "Tempo marks" @@ -820,24 +874,27 @@ msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "tempo indication" msgstr "" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "metronome" msgstr "" #. @subheading in Documentation/learning/tutorial.itely msgid "Clef" -msgstr "" +msgstr "谱号" #. @rglos in Documentation/learning/tutorial.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tutorial.itely msgid "clef" -msgstr "" +msgstr "谱号" #. @subheading in Documentation/learning/tutorial.itely msgid "All together" @@ -866,7 +923,7 @@ msgstr "一些常见错误" #. @node in Documentation/learning/tutorial.itely #. @section in Documentation/learning/tutorial.itely msgid "How to read the manuals" -msgstr "如何看手册" +msgstr "如何阅读手册" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely @@ -876,35 +933,41 @@ msgstr "" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely msgid "Clickable examples" -msgstr "" +msgstr "可点击的例子" #. @node in Documentation/learning/tutorial.itely #. @subsection in Documentation/learning/tutorial.itely msgid "Overview of manuals" msgstr "手册综述" -#. Documentation/learning/common-notation.itely:1223 (variable) -#. Documentation/learning/fundamental.itely:2984 (variable) -#. Documentation/learning/fundamental.itely:3008 (variable) +#. Documentation/learning/common-notation.itely:1224 (variable) +#. Documentation/learning/fundamental.itely:2987 (variable) +#. Documentation/learning/fundamental.itely:3011 (variable) +#. Documentation/cs/learning/common-notation.itely:1314 (variable) +#. Documentation/cs/learning/fundamental.itely:3239 (variable) +#. Documentation/cs/learning/fundamental.itely:3263 (variable) msgid "violin" msgstr "小提琴" -#. Documentation/learning/common-notation.itely:1229 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:83 (variable) +#. Documentation/learning/common-notation.itely:1230 (variable) +#. Documentation/cs/learning/common-notation.itely:1320 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:94 (variable) msgid "cello" msgstr "" -#. Documentation/learning/common-notation.itely:1255 (variable) +#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/cs/learning/common-notation.itely:1346 (variable) msgid "tripletA" msgstr "" -#. Documentation/learning/common-notation.itely:1256 (variable) +#. Documentation/learning/common-notation.itely:1257 (variable) +#. Documentation/cs/learning/common-notation.itely:1347 (variable) msgid "barA" msgstr "" #. @rglos in Documentation/learning/common-notation.itely -#. Documentation/snippets/measure-counter.ly:27 (context id) -#. Documentation/snippets/measure-counter.ly:34 (context id) +#. Documentation/snippets/measure-counter.ly:30 (context id) +#. Documentation/snippets/measure-counter.ly:37 (context id) msgid "foo" msgstr "" @@ -921,38 +984,42 @@ msgstr "" #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely msgid "Bar checks" -msgstr "" +msgstr "小节检查" #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely msgid "Accidentals and key signatures" -msgstr "" +msgstr "变音记号和调号" #. @subheading in Documentation/learning/common-notation.itely msgid "Accidentals" -msgstr "" +msgstr "变音记号" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "sharp" msgstr "升" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "flat" msgstr "降" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double sharp" msgstr "重升" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "double flat" msgstr "重降" @@ -963,18 +1030,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "key signature" -msgstr "" +msgstr "调号" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "major" msgstr "大调" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "minor" msgstr "小调" @@ -985,18 +1055,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "natural" msgstr "自然" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "transposition" -msgstr "" +msgstr "移调" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "Pitch names" msgstr "" @@ -1012,6 +1085,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "tie" msgstr "" @@ -1022,6 +1096,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "slur" msgstr "" @@ -1032,6 +1107,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "phrasing" msgstr "" @@ -1042,6 +1118,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "articulation" msgstr "" @@ -1061,8 +1138,9 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "fingering" -msgstr "" +msgstr "指法 (fingering)" #. @subheading in Documentation/learning/common-notation.itely #. @subheading in Documentation/learning/tweaks.itely @@ -1072,21 +1150,23 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:70 (variable) +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "dynamics" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "crescendo" -msgstr "" +msgstr "渐强" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "decrescendo" -msgstr "" +msgstr "渐弱" #. @node in Documentation/learning/common-notation.itely #. @subsection in Documentation/learning/common-notation.itely @@ -1114,21 +1194,23 @@ msgid "anacrusis" msgstr "" #. @subheading in Documentation/learning/common-notation.itely -#. Documentation/snippets/unfretted-headword.ly:90 (comment) +#. Documentation/snippets/unfretted-headword.ly:93 (comment) msgid "Tuplets" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "note value" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "triplet" -msgstr "" +msgstr "三连音" #. @subheading in Documentation/learning/common-notation.itely msgid "Grace notes" @@ -1137,18 +1219,21 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "grace notes" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "acciaccatura" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "appoggiatura" msgstr "" @@ -1173,6 +1258,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "polyphony" msgstr "" @@ -1193,6 +1279,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "brace" msgstr "" @@ -1207,6 +1294,8 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "system" msgstr "" @@ -1218,6 +1307,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "chord" msgstr "和弦" @@ -1239,6 +1329,7 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "lyrics" msgstr "歌词" @@ -1250,12 +1341,14 @@ msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "melisma" msgstr "" #. @rglos in Documentation/learning/common-notation.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/common-notation.itely msgid "extender line" msgstr "" @@ -1291,14 +1384,18 @@ msgstr "" #. Documentation/learning/fundamental.itely:320 (context id) #. Documentation/learning/fundamental.itely:371 (context id) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:73 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:86 (context id) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) +#. Documentation/cs/learning/fundamental.itely:383 (context id) +#. Documentation/cs/learning/fundamental.itely:443 (context id) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:116 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:129 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) msgid "singer" msgstr "" #. Documentation/learning/fundamental.itely:321 (context id) #. Documentation/learning/fundamental.itely:372 (context id) +#. Documentation/cs/learning/fundamental.itely:384 (context id) +#. Documentation/cs/learning/fundamental.itely:444 (context id) msgid "vocal" msgstr "声乐" @@ -1306,621 +1403,771 @@ msgstr "声乐" #. Documentation/learning/fundamental.itely:375 (context id) #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:233 (variable) -#. Documentation/snippets/jazz-combo-template.ly:293 (context id) -#. Documentation/snippets/staff-headword.ly:119 (context id) +#. Documentation/cs/learning/fundamental.itely:387 (context id) +#. Documentation/cs/learning/fundamental.itely:447 (context id) +#. Documentation/snippets/jazz-combo-template.ly:250 (variable) +#. Documentation/snippets/jazz-combo-template.ly:310 (context id) +#. Documentation/snippets/staff-headword.ly:122 (context id) msgid "piano" msgstr "" #. Documentation/learning/fundamental.itely:325 (context id) #. Documentation/learning/fundamental.itely:366 (variable) #. Documentation/learning/fundamental.itely:376 (context id) -#. Documentation/learning/fundamental.itely:2592 (variable) -#. Documentation/learning/fundamental.itely:2654 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:20 (variable) -#. Documentation/snippets/chords-headword.ly:80 (context id) -#. Documentation/snippets/fretted-headword.ly:143 (context id) -#. Documentation/snippets/jazz-combo-template.ly:236 (context id) -#. Documentation/snippets/piano-template-simple.ly:39 (variable) -#. Documentation/snippets/piano-template-simple.ly:58 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:48 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:70 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:60 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:81 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:44 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:66 (context id) -#. Documentation/snippets/staff-headword.ly:68 (variable) +#. Documentation/learning/fundamental.itely:2595 (variable) +#. Documentation/learning/fundamental.itely:2657 (context id) +#. Documentation/cs/learning/fundamental.itely:388 (context id) +#. Documentation/cs/learning/fundamental.itely:438 (variable) +#. Documentation/cs/learning/fundamental.itely:448 (context id) +#. Documentation/cs/learning/fundamental.itely:2822 (variable) +#. Documentation/cs/learning/fundamental.itely:2884 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:23 (variable) +#. Documentation/snippets/chords-headword.ly:75 (context id) +#. Documentation/snippets/fretted-headword.ly:144 (context id) +#. Documentation/snippets/jazz-combo-template.ly:253 (context id) +#. Documentation/snippets/piano-template-simple.ly:49 (variable) +#. Documentation/snippets/piano-template-simple.ly:68 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:59 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:81 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:71 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:92 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:46 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:64 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:68 (context id) +#. Documentation/snippets/staff-headword.ly:71 (variable) msgid "upper" msgstr "" #. Documentation/learning/fundamental.itely:326 (context id) #. Documentation/learning/fundamental.itely:367 (variable) #. Documentation/learning/fundamental.itely:377 (context id) -#. Documentation/learning/fundamental.itely:2599 (variable) -#. Documentation/learning/fundamental.itely:2655 (context id) -#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:24 (variable) -#. Documentation/snippets/chords-headword.ly:90 (context id) -#. Documentation/snippets/fretted-headword.ly:144 (context id) -#. Documentation/snippets/jazz-combo-template.ly:237 (context id) -#. Documentation/snippets/piano-template-simple.ly:47 (variable) -#. Documentation/snippets/piano-template-simple.ly:59 (context id) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:65 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:56 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:72 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:68 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:82 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:51 (variable) -#. Documentation/snippets/polyphony-in-tablature.ly:63 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) -#. Documentation/snippets/staff-headword.ly:79 (variable) +#. Documentation/learning/fundamental.itely:2602 (variable) +#. Documentation/learning/fundamental.itely:2658 (context id) +#. Documentation/cs/learning/fundamental.itely:389 (context id) +#. Documentation/cs/learning/fundamental.itely:439 (variable) +#. Documentation/cs/learning/fundamental.itely:449 (context id) +#. Documentation/cs/learning/fundamental.itely:2829 (variable) +#. Documentation/cs/learning/fundamental.itely:2885 (context id) +#. Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly:27 (variable) +#. Documentation/snippets/chords-headword.ly:85 (context id) +#. Documentation/snippets/fretted-headword.ly:145 (context id) +#. Documentation/snippets/jazz-combo-template.ly:254 (context id) +#. Documentation/snippets/piano-template-simple.ly:57 (variable) +#. Documentation/snippets/piano-template-simple.ly:69 (context id) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:67 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:83 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:79 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:93 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:53 (variable) +#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:69 (context id) +#. Documentation/snippets/staff-headword.ly:82 (variable) msgid "lower" msgstr "" #. Documentation/learning/fundamental.itely:364 (variable) -#. Documentation/notation/changing-defaults.itely:488 (variable) -#. Documentation/notation/changing-defaults.itely:495 (context id) -#. Documentation/notation/changing-defaults.itely:505 (context id) -#. Documentation/notation/changing-defaults.itely:510 (context id) -#. Documentation/notation/changing-defaults.itely:527 (variable) -#. Documentation/notation/changing-defaults.itely:545 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:37 (context id) -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:46 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:66 (context id) -#. Documentation/snippets/demo-midiinstruments.ly:29 (variable) -#. Documentation/snippets/formatting-lyrics-syllables.ly:29 (context id) -#. Documentation/snippets/fretted-headword.ly:63 (variable) -#. Documentation/snippets/guitar-strum-rhythms.ly:68 (context id) -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:34 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:48 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:50 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:66 (variable) -#. Documentation/snippets/single-staff-template-with-only-notes.ly:56 (variable) -#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) +#. Documentation/notation/changing-defaults.itely:489 (variable) +#. Documentation/notation/changing-defaults.itely:496 (context id) +#. Documentation/notation/changing-defaults.itely:506 (context id) +#. Documentation/notation/changing-defaults.itely:511 (context id) +#. Documentation/notation/changing-defaults.itely:528 (variable) +#. Documentation/notation/changing-defaults.itely:546 (context id) +#. Documentation/notation/changing-defaults.itely:742 (variable) +#. Documentation/cs/learning/fundamental.itely:436 (variable) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:40 (context id) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:49 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:81 (context id) +#. Documentation/snippets/demo-midiinstruments.ly:32 (variable) +#. Documentation/snippets/formatting-lyrics-syllables.ly:40 (context id) +#. Documentation/snippets/fretted-headword.ly:64 (variable) +#. Documentation/snippets/guitar-strum-rhythms.ly:71 (context id) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:37 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:59 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:79 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) +#. Documentation/snippets/single-staff-template-with-only-notes.ly:68 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:48 (variable) msgid "melody" msgstr "旋律" #. Documentation/learning/fundamental.itely:365 (variable) -#. Documentation/snippets/piano-template-with-centered-lyrics.ly:64 (variable) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:56 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:74 (variable) +#. Documentation/cs/learning/fundamental.itely:437 (variable) +#. Documentation/snippets/piano-template-with-centered-lyrics.ly:75 (variable) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:67 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:87 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:68 (variable) msgid "text" msgstr "文本" #. Documentation/learning/fundamental.itely:439 (context id) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:86 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:122 (comment) +#. Documentation/cs/learning/fundamental.itely:515 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:138 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:159 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:174 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:195 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:210 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:226 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:242 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:258 (comment) msgid "main" msgstr "主要" -#. Documentation/learning/fundamental.itely:629 (comment) +#. Documentation/learning/fundamental.itely:627 (comment) +#. Documentation/cs/learning/fundamental.itely:719 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:639 (comment) +#. Documentation/learning/fundamental.itely:637 (comment) +#. Documentation/cs/learning/fundamental.itely:729 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:654 (comment) +#. Documentation/learning/fundamental.itely:652 (comment) +#. Documentation/cs/learning/fundamental.itely:744 (comment) msgid "Voice \\\"1\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:659 (comment) +#. Documentation/learning/fundamental.itely:657 (comment) +#. Documentation/cs/learning/fundamental.itely:749 (comment) msgid "Voice \\\"2\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:682 (comment) -#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/learning/fundamental.itely:680 (comment) +#. Documentation/learning/fundamental.itely:704 (comment) +#. Documentation/cs/learning/fundamental.itely:766 (comment) +#. Documentation/cs/learning/fundamental.itely:790 (comment) msgid "Main voice" msgstr "" -#. Documentation/learning/fundamental.itely:684 (comment) +#. Documentation/learning/fundamental.itely:682 (comment) +#. Documentation/cs/learning/fundamental.itely:768 (comment) msgid "Voice \\\"1\\\" Voice \\\"2\\\" Voice \\\"3\\\"" msgstr "" -#. Documentation/learning/fundamental.itely:708 (comment) +#. Documentation/learning/fundamental.itely:706 (comment) +#. Documentation/cs/learning/fundamental.itely:792 (comment) msgid "Bar 1" msgstr "" -#. Documentation/learning/fundamental.itely:719 (comment) +#. Documentation/learning/fundamental.itely:717 (comment) +#. Documentation/cs/learning/fundamental.itely:803 (comment) msgid "Bar 2" msgstr "" -#. Documentation/learning/fundamental.itely:720 (comment) +#. Documentation/learning/fundamental.itely:718 (comment) +#. Documentation/cs/learning/fundamental.itely:804 (comment) msgid "Voice 1 continues" msgstr "" -#. Documentation/learning/fundamental.itely:723 (comment) +#. Documentation/learning/fundamental.itely:721 (comment) +#. Documentation/cs/learning/fundamental.itely:807 (comment) msgid "Voice 2 continues" msgstr "" -#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/learning/fundamental.itely:896 (comment) +#. Documentation/cs/learning/fundamental.itely:984 (comment) msgid "Voice one" msgstr "" -#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/learning/fundamental.itely:898 (comment) +#. Documentation/cs/learning/fundamental.itely:986 (comment) msgid "Voice two" msgstr "" -#. Documentation/learning/fundamental.itely:902 (comment) +#. Documentation/learning/fundamental.itely:900 (comment) +#. Documentation/cs/learning/fundamental.itely:988 (comment) msgid "Omit Voice three" msgstr "" -#. Documentation/learning/fundamental.itely:903 (comment) +#. Documentation/learning/fundamental.itely:901 (comment) +#. Documentation/cs/learning/fundamental.itely:989 (comment) msgid "Voice four" msgstr "" -#. Documentation/learning/fundamental.itely:1002 (comment) +#. Documentation/learning/fundamental.itely:1000 (comment) +#. Documentation/cs/learning/fundamental.itely:1091 (comment) msgid "Default behavior or behavior after \\oneVoice" msgstr "" -#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/learning/fundamental.itely:1038 (comment) +#. Documentation/cs/learning/fundamental.itely:1130 (comment) msgid "The following notes are monophonic" msgstr "" -#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/learning/fundamental.itely:1040 (comment) +#. Documentation/cs/learning/fundamental.itely:1132 (comment) msgid "Start simultaneous section of three voices" msgstr "" -#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1042 (comment) +#. Documentation/cs/learning/fundamental.itely:1134 (comment) msgid "Continue the main voice in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:1046 (comment) -#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/learning/fundamental.itely:1044 (comment) +#. Documentation/learning/fundamental.itely:1106 (comment) +#. Documentation/cs/learning/fundamental.itely:1136 (comment) +#. Documentation/cs/learning/fundamental.itely:1202 (comment) msgid "Initiate second voice" msgstr "" -#. Documentation/learning/fundamental.itely:1048 (comment) +#. Documentation/learning/fundamental.itely:1046 (comment) +#. Documentation/cs/learning/fundamental.itely:1138 (comment) msgid "Set stems, etc., down" msgstr "" -#. Documentation/learning/fundamental.itely:1052 (comment) -#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/learning/fundamental.itely:1050 (comment) +#. Documentation/learning/fundamental.itely:1112 (comment) +#. Documentation/cs/learning/fundamental.itely:1142 (comment) +#. Documentation/cs/learning/fundamental.itely:1208 (comment) msgid "Initiate third voice" msgstr "" -#. Documentation/learning/fundamental.itely:1054 (comment) -#. Documentation/learning/fundamental.itely:1116 (comment) +#. Documentation/learning/fundamental.itely:1052 (comment) +#. Documentation/learning/fundamental.itely:1114 (comment) +#. Documentation/cs/learning/fundamental.itely:1144 (comment) +#. Documentation/cs/learning/fundamental.itely:1210 (comment) msgid "Set stems, etc, up" msgstr "" -#. Documentation/learning/fundamental.itely:1103 (comment) +#. Documentation/learning/fundamental.itely:1101 (comment) +#. Documentation/cs/learning/fundamental.itely:1197 (comment) msgid "Initiate first voice" msgstr "" -#. Documentation/learning/fundamental.itely:1110 (comment) +#. Documentation/learning/fundamental.itely:1108 (comment) +#. Documentation/cs/learning/fundamental.itely:1204 (comment) msgid "Set stems, etc, down" msgstr "" -#. Documentation/learning/fundamental.itely:1197 (context id) -#. Documentation/learning/fundamental.itely:2303 (context id) -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:34 (variable) -#. Documentation/snippets/jazz-combo-template.ly:219 (context id) -#. Documentation/snippets/jazz-combo-template.ly:228 (context id) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:70 (context id) -#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:80 (context id) +#. Documentation/learning/fundamental.itely:1195 (context id) +#. Documentation/learning/fundamental.itely:2306 (context id) +#. Documentation/cs/learning/fundamental.itely:1303 (context id) +#. Documentation/cs/learning/fundamental.itely:2522 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:37 (variable) +#. Documentation/snippets/jazz-combo-template.ly:236 (context id) +#. Documentation/snippets/jazz-combo-template.ly:245 (context id) +#. Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly:93 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:82 (context id) msgid "one" msgstr "" -#. Documentation/learning/fundamental.itely:1242 (variable) -#. Documentation/learning/fundamental.itely:2569 (variable) -#. Documentation/learning/tweaks.itely:3614 (variable) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:66 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:62 (variable) -#. Documentation/snippets/hymn-template.ly:78 (variable) -#. Documentation/snippets/incipit.ly:70 (variable) -#. Documentation/snippets/jazz-combo-template.ly:89 (variable) -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:53 (variable) -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:55 (variable) -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:33 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:35 (variable) -#. Documentation/snippets/string-quartet-template-simple.ly:50 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:109 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:32 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:64 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:54 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:56 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1240 (variable) +#. Documentation/learning/fundamental.itely:2572 (variable) +#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/cs/learning/fundamental.itely:1352 (variable) +#. Documentation/cs/learning/fundamental.itely:2796 (variable) +#. Documentation/cs/learning/tweaks.itely:3964 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:84 (variable) +#. Documentation/snippets/hymn-template.ly:89 (variable) +#. Documentation/snippets/incipit.ly:73 (variable) +#. Documentation/snippets/jazz-combo-template.ly:106 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:48 (variable) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:36 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:61 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:131 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:35 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:84 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:69 (variable) msgid "global" msgstr "" -#. Documentation/learning/fundamental.itely:1244 (variable) +#. Documentation/learning/fundamental.itely:1242 (variable) +#. Documentation/cs/learning/fundamental.itely:1354 (variable) msgid "SopOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1247 (variable) +#. Documentation/learning/fundamental.itely:1245 (variable) +#. Documentation/cs/learning/fundamental.itely:1357 (variable) msgid "SopOneLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1250 (variable) +#. Documentation/learning/fundamental.itely:1248 (variable) +#. Documentation/cs/learning/fundamental.itely:1360 (variable) msgid "SopTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1253 (variable) +#. Documentation/learning/fundamental.itely:1251 (variable) +#. Documentation/cs/learning/fundamental.itely:1363 (variable) msgid "SopTwoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:1260 (context id) +#. Documentation/learning/fundamental.itely:1258 (context id) +#. Documentation/cs/learning/fundamental.itely:1370 (context id) msgid "SopOne" msgstr "" -#. Documentation/learning/fundamental.itely:1269 (context id) +#. Documentation/learning/fundamental.itely:1267 (context id) +#. Documentation/cs/learning/fundamental.itely:1379 (context id) msgid "SopTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1301 (variable) -#. Documentation/learning/fundamental.itely:2901 (variable) +#. Documentation/learning/fundamental.itely:1299 (variable) +#. Documentation/learning/fundamental.itely:2904 (variable) +#. Documentation/cs/learning/fundamental.itely:1415 (variable) +#. Documentation/cs/learning/fundamental.itely:3155 (variable) msgid "keyTime" msgstr "" -#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/fundamental.itely:1301 (variable) +#. Documentation/cs/learning/fundamental.itely:1417 (variable) msgid "SopMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1304 (variable) -#. Documentation/learning/tweaks.itely:3617 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:47 (variable) -#. Documentation/snippets/hymn-template.ly:63 (variable) +#. Documentation/learning/fundamental.itely:1302 (variable) +#. Documentation/learning/tweaks.itely:3632 (variable) +#. Documentation/cs/learning/fundamental.itely:1418 (variable) +#. Documentation/cs/learning/tweaks.itely:3967 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:69 (variable) +#. Documentation/snippets/hymn-template.ly:74 (variable) msgid "AltoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1305 (variable) -#. Documentation/learning/tweaks.itely:3618 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:52 (variable) -#. Documentation/snippets/hymn-template.ly:68 (variable) +#. Documentation/learning/fundamental.itely:1303 (variable) +#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/cs/learning/fundamental.itely:1419 (variable) +#. Documentation/cs/learning/tweaks.itely:3968 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:74 (variable) +#. Documentation/snippets/hymn-template.ly:79 (variable) msgid "TenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1306 (variable) -#. Documentation/learning/tweaks.itely:3619 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:73 (variable) +#. Documentation/learning/fundamental.itely:1304 (variable) +#. Documentation/learning/tweaks.itely:3634 (variable) +#. Documentation/cs/learning/fundamental.itely:1420 (variable) +#. Documentation/cs/learning/tweaks.itely:3969 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:79 (variable) +#. Documentation/snippets/hymn-template.ly:84 (variable) msgid "BassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:1308 (variable) -#. Documentation/learning/tweaks.itely:3621 (variable) +#. Documentation/learning/fundamental.itely:1306 (variable) +#. Documentation/learning/tweaks.itely:3636 (variable) +#. Documentation/cs/learning/fundamental.itely:1422 (variable) +#. Documentation/cs/learning/tweaks.itely:3971 (variable) msgid "VerseOne" msgstr "" -#. Documentation/learning/fundamental.itely:1310 (variable) -#. Documentation/learning/tweaks.itely:3625 (variable) +#. Documentation/learning/fundamental.itely:1308 (variable) +#. Documentation/learning/tweaks.itely:3640 (variable) +#. Documentation/cs/learning/fundamental.itely:1424 (variable) +#. Documentation/cs/learning/tweaks.itely:3975 (variable) msgid "VerseTwo" msgstr "" -#. Documentation/learning/fundamental.itely:1312 (variable) -#. Documentation/learning/tweaks.itely:3629 (variable) +#. Documentation/learning/fundamental.itely:1310 (variable) +#. Documentation/learning/tweaks.itely:3644 (variable) +#. Documentation/cs/learning/fundamental.itely:1426 (variable) +#. Documentation/cs/learning/tweaks.itely:3979 (variable) msgid "VerseThree" msgstr "" -#. Documentation/learning/fundamental.itely:1314 (variable) -#. Documentation/learning/tweaks.itely:3633 (variable) +#. Documentation/learning/fundamental.itely:1312 (variable) +#. Documentation/learning/tweaks.itely:3648 (variable) +#. Documentation/cs/learning/fundamental.itely:1428 (variable) +#. Documentation/cs/learning/tweaks.itely:3983 (variable) msgid "VerseFour" msgstr "" -#. Documentation/learning/fundamental.itely:1321 (context id) +#. Documentation/learning/fundamental.itely:1319 (context id) +#. Documentation/cs/learning/fundamental.itely:1435 (context id) msgid "Sop" msgstr "" -#. Documentation/learning/fundamental.itely:1322 (context id) -#. Documentation/learning/tweaks.itely:3642 (context id) -#. Documentation/notation/input.itely:1141 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:87 (context id) -#. Documentation/snippets/chords-headword.ly:57 (variable) -#. Documentation/snippets/hymn-template.ly:93 (context id) +#. Documentation/learning/fundamental.itely:1320 (context id) +#. Documentation/learning/tweaks.itely:3657 (context id) +#. Documentation/notation/input.itely:1610 (context id) +#. Documentation/cs/learning/fundamental.itely:1436 (context id) +#. Documentation/cs/learning/tweaks.itely:3992 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:109 (context id) +#. Documentation/snippets/chords-headword.ly:52 (variable) +#. Documentation/snippets/hymn-template.ly:104 (context id) msgid "Alto" msgstr "" -#. Documentation/learning/fundamental.itely:1330 (context id) -#. Documentation/learning/tweaks.itely:3650 (context id) -#. Documentation/notation/input.itely:1143 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:95 (context id) -#. Documentation/snippets/chords-headword.ly:63 (variable) -#. Documentation/snippets/hymn-template.ly:102 (context id) +#. Documentation/learning/fundamental.itely:1328 (context id) +#. Documentation/learning/tweaks.itely:3665 (context id) +#. Documentation/notation/input.itely:1612 (context id) +#. Documentation/cs/learning/fundamental.itely:1444 (context id) +#. Documentation/cs/learning/tweaks.itely:4000 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:117 (context id) +#. Documentation/snippets/chords-headword.ly:58 (variable) +#. Documentation/snippets/hymn-template.ly:113 (context id) msgid "Tenor" msgstr "" -#. Documentation/learning/fundamental.itely:1331 (context id) -#. Documentation/learning/tweaks.itely:3651 (context id) -#. Documentation/notation/input.itely:1148 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:99 (context id) -#. Documentation/snippets/chords-headword.ly:70 (variable) -#. Documentation/snippets/hymn-template.ly:107 (context id) -#. Documentation/snippets/jazz-combo-template.ly:242 (variable) +#. Documentation/learning/fundamental.itely:1329 (context id) +#. Documentation/learning/tweaks.itely:3666 (context id) +#. Documentation/notation/input.itely:1617 (context id) +#. Documentation/cs/learning/fundamental.itely:1445 (context id) +#. Documentation/cs/learning/tweaks.itely:4001 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:121 (context id) +#. Documentation/snippets/chords-headword.ly:65 (variable) +#. Documentation/snippets/hymn-template.ly:118 (context id) +#. Documentation/snippets/jazz-combo-template.ly:259 (variable) msgid "Bass" msgstr "" -#. Documentation/learning/fundamental.itely:1475 (comment) +#. Documentation/learning/fundamental.itely:1473 (comment) +#. Documentation/cs/learning/fundamental.itely:1613 (comment) msgid "start of single compound music expression" msgstr "" -#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/learning/fundamental.itely:1474 (comment) +#. Documentation/cs/learning/fundamental.itely:1614 (comment) msgid "start of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1478 (comment) +#. Documentation/learning/fundamental.itely:1476 (comment) +#. Documentation/cs/learning/fundamental.itely:1616 (comment) msgid "create RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1481 (comment) +#. Documentation/learning/fundamental.itely:1479 (comment) +#. Documentation/cs/learning/fundamental.itely:1619 (comment) msgid "create voice for RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1482 (comment) +#. Documentation/learning/fundamental.itely:1480 (comment) +#. Documentation/cs/learning/fundamental.itely:1620 (comment) msgid "start of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/learning/fundamental.itely:1483 (comment) +#. Documentation/cs/learning/fundamental.itely:1623 (comment) msgid "end of RH notes" msgstr "" -#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/learning/fundamental.itely:1484 (comment) +#. Documentation/cs/learning/fundamental.itely:1624 (comment) msgid "end of RH voice" msgstr "" -#. Documentation/learning/fundamental.itely:1487 (comment) +#. Documentation/learning/fundamental.itely:1485 (comment) +#. Documentation/cs/learning/fundamental.itely:1625 (comment) msgid "end of RH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1488 (comment) +#. Documentation/learning/fundamental.itely:1486 (comment) +#. Documentation/cs/learning/fundamental.itely:1626 (comment) msgid "create LH staff; needs two simultaneous voices" msgstr "" -#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/learning/fundamental.itely:1489 (comment) +#. Documentation/cs/learning/fundamental.itely:1629 (comment) msgid "create LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1493 (comment) +#. Documentation/learning/fundamental.itely:1491 (comment) +#. Documentation/cs/learning/fundamental.itely:1631 (comment) msgid "start of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/learning/fundamental.itely:1494 (comment) +#. Documentation/cs/learning/fundamental.itely:1634 (comment) msgid "end of LH voice one notes" msgstr "" -#. Documentation/learning/fundamental.itely:1497 (comment) +#. Documentation/learning/fundamental.itely:1495 (comment) +#. Documentation/cs/learning/fundamental.itely:1635 (comment) msgid "end of LH voice one" msgstr "" -#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/learning/fundamental.itely:1496 (comment) +#. Documentation/cs/learning/fundamental.itely:1636 (comment) msgid "create LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1500 (comment) +#. Documentation/learning/fundamental.itely:1498 (comment) +#. Documentation/cs/learning/fundamental.itely:1638 (comment) msgid "start of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/learning/fundamental.itely:1501 (comment) +#. Documentation/cs/learning/fundamental.itely:1641 (comment) msgid "end of LH voice two notes" msgstr "" -#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/learning/fundamental.itely:1502 (comment) +#. Documentation/cs/learning/fundamental.itely:1642 (comment) msgid "end of LH voice two" msgstr "" -#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/learning/fundamental.itely:1503 (comment) +#. Documentation/cs/learning/fundamental.itely:1643 (comment) msgid "end of LH staff" msgstr "" -#. Documentation/learning/fundamental.itely:1506 (comment) +#. Documentation/learning/fundamental.itely:1504 (comment) +#. Documentation/cs/learning/fundamental.itely:1644 (comment) msgid "end of simultaneous staves section" msgstr "" -#. Documentation/learning/fundamental.itely:1507 (comment) +#. Documentation/learning/fundamental.itely:1505 (comment) +#. Documentation/cs/learning/fundamental.itely:1645 (comment) msgid "end of single compound music expression" msgstr "" -#. Documentation/learning/fundamental.itely:1726 (comment) +#. Documentation/learning/fundamental.itely:1724 (comment) +#. Documentation/cs/learning/fundamental.itely:1894 (comment) msgid "Wrong!" msgstr "" -#. Documentation/learning/fundamental.itely:1812 (comment) -#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/learning/fundamental.itely:1810 (comment) +#. Documentation/learning/fundamental.itely:1987 (comment) +#. Documentation/cs/learning/fundamental.itely:1983 (comment) +#. Documentation/cs/learning/fundamental.itely:2176 (comment) msgid "make note heads smaller" msgstr "" -#. Documentation/learning/fundamental.itely:1815 (comment) -#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/learning/fundamental.itely:1813 (comment) +#. Documentation/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:1986 (comment) +#. Documentation/cs/learning/fundamental.itely:2178 (comment) msgid "make note heads larger" msgstr "" -#. Documentation/learning/fundamental.itely:1818 (comment) -#. Documentation/learning/fundamental.itely:1993 (comment) +#. Documentation/learning/fundamental.itely:1816 (comment) +#. Documentation/learning/fundamental.itely:1991 (comment) +#. Documentation/cs/learning/fundamental.itely:1989 (comment) +#. Documentation/cs/learning/fundamental.itely:2180 (comment) msgid "return to default size" msgstr "" -#. Documentation/learning/fundamental.itely:2282 (variable) -#. Documentation/learning/fundamental.itely:2570 (variable) -#. Documentation/notation/input.itely:1133 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (variable) +#. Documentation/learning/fundamental.itely:2285 (variable) +#. Documentation/learning/fundamental.itely:2573 (variable) +#. Documentation/notation/input.itely:1602 (variable) +#. Documentation/cs/learning/fundamental.itely:2501 (variable) +#. Documentation/cs/learning/fundamental.itely:2800 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) msgid "sopranoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2289 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2292 (variable) +#. Documentation/cs/learning/fundamental.itely:2508 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) msgid "sopranoLyrics" msgstr "" -#. Documentation/learning/fundamental.itely:2293 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:87 (variable) +#. Documentation/learning/fundamental.itely:2296 (variable) +#. Documentation/cs/learning/fundamental.itely:2512 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:100 (variable) msgid "celloMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2574 (variable) +#. Documentation/learning/fundamental.itely:2577 (variable) +#. Documentation/cs/learning/fundamental.itely:2804 (variable) msgid "sopranoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2577 (variable) -#. Documentation/notation/input.itely:1134 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:66 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:75 (variable) +#. Documentation/learning/fundamental.itely:2580 (variable) +#. Documentation/notation/input.itely:1603 (variable) +#. Documentation/cs/learning/fundamental.itely:2807 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:59 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:96 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:98 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:78 (variable) msgid "altoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2581 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:79 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:78 (variable) +#. Documentation/learning/fundamental.itely:2584 (variable) +#. Documentation/cs/learning/fundamental.itely:2811 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:99 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:81 (variable) msgid "altoWords" msgstr "" -#. Documentation/learning/fundamental.itely:2582 (variable) -#. Documentation/notation/input.itely:1135 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:73 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:82 (variable) +#. Documentation/learning/fundamental.itely:2585 (variable) +#. Documentation/notation/input.itely:1604 (variable) +#. Documentation/cs/learning/fundamental.itely:2812 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:65 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:93 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:103 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:105 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:85 (variable) msgid "tenorMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2586 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:86 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:76 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:85 (variable) +#. Documentation/learning/fundamental.itely:2589 (variable) +#. Documentation/cs/learning/fundamental.itely:2816 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:106 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:108 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:88 (variable) msgid "tenorWords" msgstr "" -#. Documentation/learning/fundamental.itely:2587 (variable) -#. Documentation/notation/input.itely:1136 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:88 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:90 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:80 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/learning/fundamental.itely:2590 (variable) +#. Documentation/notation/input.itely:1605 (variable) +#. Documentation/cs/learning/fundamental.itely:2817 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:70 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:101 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:110 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:112 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:92 (variable) msgid "bassMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2591 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:93 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:83 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/learning/fundamental.itely:2594 (variable) +#. Documentation/cs/learning/fundamental.itely:2821 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:115 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (variable) msgid "bassWords" msgstr "" -#. Documentation/learning/fundamental.itely:2608 (comment) +#. Documentation/learning/fundamental.itely:2611 (comment) +#. Documentation/cs/learning/fundamental.itely:2838 (comment) msgid "combine ChoirStaff and PianoStaff in parallel" msgstr "" -#. Documentation/learning/fundamental.itely:2610 (context id) -#. Documentation/learning/fundamental.itely:2612 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:90 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:100 (context id) +#. Documentation/learning/fundamental.itely:2613 (context id) +#. Documentation/learning/fundamental.itely:2615 (context id) +#. Documentation/cs/learning/fundamental.itely:2840 (context id) +#. Documentation/cs/learning/fundamental.itely:2842 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:83 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) msgid "sopranos" msgstr "" -#. Documentation/learning/fundamental.itely:2620 (context id) -#. Documentation/learning/fundamental.itely:2622 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:103 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:91 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:104 (context id) +#. Documentation/learning/fundamental.itely:2623 (context id) +#. Documentation/learning/fundamental.itely:2625 (context id) +#. Documentation/cs/learning/fundamental.itely:2850 (context id) +#. Documentation/cs/learning/fundamental.itely:2852 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:87 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:128 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:103 (context id) msgid "altos" msgstr "" -#. Documentation/learning/fundamental.itely:2630 (context id) -#. Documentation/learning/fundamental.itely:2632 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:109 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:113 (context id) +#. Documentation/learning/fundamental.itely:2633 (context id) +#. Documentation/learning/fundamental.itely:2635 (context id) +#. Documentation/cs/learning/fundamental.itely:2860 (context id) +#. Documentation/cs/learning/fundamental.itely:2862 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:96 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:140 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:115 (context id) msgid "tenors" msgstr "" -#. Documentation/learning/fundamental.itely:2640 (context id) -#. Documentation/learning/fundamental.itely:2642 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:110 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:102 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:117 (context id) +#. Documentation/learning/fundamental.itely:2643 (context id) +#. Documentation/learning/fundamental.itely:2645 (context id) +#. Documentation/cs/learning/fundamental.itely:2870 (context id) +#. Documentation/cs/learning/fundamental.itely:2872 (context id) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:100 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:144 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:139 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:116 (context id) msgid "basses" msgstr "" -#. Documentation/learning/fundamental.itely:2650 (comment) +#. Documentation/learning/fundamental.itely:2653 (comment) +#. Documentation/cs/learning/fundamental.itely:2880 (comment) msgid "end ChoirStaff" msgstr "" -#. Documentation/learning/fundamental.itely:2902 (variable) +#. Documentation/learning/fundamental.itely:2905 (variable) +#. Documentation/cs/learning/fundamental.itely:3156 (variable) msgid "ManualOneVoiceOneMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2906 (variable) +#. Documentation/learning/fundamental.itely:2909 (variable) +#. Documentation/cs/learning/fundamental.itely:3160 (variable) msgid "ManualOneVoiceTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2910 (variable) +#. Documentation/learning/fundamental.itely:2913 (variable) +#. Documentation/cs/learning/fundamental.itely:3164 (variable) msgid "ManualTwoMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2914 (variable) +#. Documentation/learning/fundamental.itely:2917 (variable) +#. Documentation/cs/learning/fundamental.itely:3168 (variable) msgid "PedalOrganMusic" msgstr "" -#. Documentation/learning/fundamental.itely:2920 (comment) +#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/cs/learning/fundamental.itely:3174 (comment) msgid "PianoStaff and Pedal Staff must be simultaneous" msgstr "" -#. Documentation/learning/fundamental.itely:2922 (context id) +#. Documentation/learning/fundamental.itely:2925 (context id) +#. Documentation/cs/learning/fundamental.itely:3176 (context id) msgid "ManualOne" msgstr "" -#. Documentation/learning/fundamental.itely:2923 (comment) +#. Documentation/learning/fundamental.itely:2926 (comment) msgid "set key and time signature" msgstr "" -#. Documentation/learning/fundamental.itely:2933 (comment) +#. Documentation/learning/fundamental.itely:2936 (comment) +#. Documentation/cs/learning/fundamental.itely:3187 (comment) msgid "end ManualOne Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2934 (context id) +#. Documentation/learning/fundamental.itely:2937 (context id) +#. Documentation/cs/learning/fundamental.itely:3188 (context id) msgid "ManualTwo" msgstr "" -#. Documentation/learning/fundamental.itely:2943 (comment) +#. Documentation/learning/fundamental.itely:2946 (comment) +#. Documentation/cs/learning/fundamental.itely:3197 (comment) msgid "end ManualTwo Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2944 (comment) +#. Documentation/learning/fundamental.itely:2947 (comment) +#. Documentation/cs/learning/fundamental.itely:3198 (comment) msgid "end PianoStaff context" msgstr "" -#. Documentation/learning/fundamental.itely:2945 (context id) +#. Documentation/learning/fundamental.itely:2948 (context id) +#. Documentation/cs/learning/fundamental.itely:3199 (context id) msgid "PedalOrgan" msgstr "" -#. Documentation/learning/fundamental.itely:2951 (comment) +#. Documentation/learning/fundamental.itely:2954 (comment) +#. Documentation/cs/learning/fundamental.itely:3205 (comment) msgid "end PedalOrgan Staff context" msgstr "" -#. Documentation/learning/fundamental.itely:2953 (comment) +#. Documentation/learning/fundamental.itely:2956 (comment) +#. Documentation/cs/learning/fundamental.itely:3207 (comment) msgid "end Score context" msgstr "" -#. Documentation/learning/fundamental.itely:2969 (variable) +#. Documentation/learning/fundamental.itely:2972 (variable) +#. Documentation/cs/learning/fundamental.itely:3224 (variable) msgid "hornNotes" msgstr "" -#. Documentation/learning/fundamental.itely:2981 (variable) +#. Documentation/learning/fundamental.itely:2984 (variable) +#. Documentation/cs/learning/fundamental.itely:3237 (variable) msgid "fragmentA" msgstr "" -#. Documentation/learning/fundamental.itely:2982 (variable) +#. Documentation/learning/fundamental.itely:2985 (variable) +#. Documentation/cs/learning/fundamental.itely:3238 (variable) msgid "fragmentB" msgstr "" -#. Documentation/learning/fundamental.itely:3001 (variable) +#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/cs/learning/fundamental.itely:3257 (variable) msgid "dolce" msgstr "" -#. Documentation/learning/fundamental.itely:3004 (variable) +#. Documentation/learning/fundamental.itely:3007 (variable) +#. Documentation/cs/learning/fundamental.itely:3259 (variable) msgid "fthenp" msgstr "" @@ -1953,6 +2200,7 @@ msgstr "" #. @rglos in Documentation/learning/tweaks.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/tweaks.itely msgid "ossia" msgstr "" @@ -2034,8 +2282,9 @@ msgstr "" #. @rglos in Documentation/learning/fundamental.itely #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. @rglos in Documentation/cs/learning/fundamental.itely msgid "ambitus" -msgstr "" +msgstr "音域" #. @subsubheading in Documentation/learning/fundamental.itely msgid "Changing all contexts of the same type" @@ -2071,263 +2320,368 @@ msgstr "" msgid "Scores and parts" msgstr "" -#. Documentation/learning/tweaks.itely:602 (comment) -#. Documentation/learning/tweaks.itely:740 (comment) +#. Documentation/learning/tweaks.itely:605 (comment) +#. Documentation/learning/tweaks.itely:743 (comment) +#. Documentation/cs/learning/tweaks.itely:680 (comment) +#. Documentation/cs/learning/tweaks.itely:825 (comment) msgid "Increase thickness of all following slurs from 1.2 to 5.0" msgstr "" -#. Documentation/learning/tweaks.itely:672 (comment) -#. Documentation/learning/tweaks.itely:712 (comment) +#. Documentation/learning/tweaks.itely:675 (comment) #. Documentation/learning/tweaks.itely:715 (comment) +#. Documentation/learning/tweaks.itely:718 (comment) +#. Documentation/cs/learning/tweaks.itely:755 (comment) +#. Documentation/cs/learning/tweaks.itely:797 (comment) +#. Documentation/cs/learning/tweaks.itely:800 (comment) msgid "Increase thickness of immediately following slur only" msgstr "" -#. Documentation/learning/tweaks.itely:744 (comment) +#. Documentation/learning/tweaks.itely:747 (comment) +#. Documentation/cs/learning/tweaks.itely:829 (comment) msgid "Revert thickness of all following slurs to default of 1.2" msgstr "" -#. Documentation/learning/tweaks.itely:1421 (comment) +#. Documentation/learning/tweaks.itely:1424 (comment) +#. Documentation/cs/learning/tweaks.itely:1584 (comment) msgid "Don't print clefs in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1423 (comment) +#. Documentation/learning/tweaks.itely:1426 (comment) +#. Documentation/cs/learning/tweaks.itely:1586 (comment) msgid "Don't print time signatures in this staff" msgstr "" -#. Documentation/learning/tweaks.itely:1487 (comment) +#. Documentation/learning/tweaks.itely:1490 (comment) +#. Documentation/cs/learning/tweaks.itely:1657 (comment) msgid "Reduce all font sizes by ~24%" msgstr "" -#. Documentation/learning/tweaks.itely:1554 (comment) +#. Documentation/learning/tweaks.itely:1557 (comment) +#. Documentation/cs/learning/tweaks.itely:1731 (comment) msgid "Reduce stem length and line spacing to match" msgstr "" -#. Documentation/learning/tweaks.itely:1998 (comment) -#. Documentation/learning/tweaks.itely:2067 (comment) +#. Documentation/learning/tweaks.itely:2008 (comment) +#. Documentation/learning/tweaks.itely:2058 (comment) +#. Documentation/cs/learning/tweaks.itely:2207 (comment) +#. Documentation/cs/learning/tweaks.itely:2285 (comment) msgid "Set details for later Text Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2001 (comment) -#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/learning/tweaks.itely:2011 (comment) +#. Documentation/learning/tweaks.itely:2061 (comment) +#. Documentation/cs/learning/tweaks.itely:2210 (comment) +#. Documentation/cs/learning/tweaks.itely:2288 (comment) msgid "Place dynamics above staff" msgstr "" -#. Documentation/learning/tweaks.itely:2003 (comment) -#. Documentation/learning/tweaks.itely:2074 (comment) +#. Documentation/learning/tweaks.itely:2013 (comment) +#. Documentation/learning/tweaks.itely:2065 (comment) +#. Documentation/cs/learning/tweaks.itely:2212 (comment) +#. Documentation/cs/learning/tweaks.itely:2292 (comment) msgid "Start Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2006 (comment) +#. Documentation/learning/tweaks.itely:2016 (comment) +#. Documentation/cs/learning/tweaks.itely:2215 (comment) msgid "Add Dynamic Text and hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2009 (comment) -#. Documentation/learning/tweaks.itely:2081 (comment) +#. Documentation/learning/tweaks.itely:2019 (comment) +#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/cs/learning/tweaks.itely:2218 (comment) +#. Documentation/cs/learning/tweaks.itely:2299 (comment) msgid "Add Text Script" msgstr "" -#. Documentation/learning/tweaks.itely:2012 (comment) +#. Documentation/learning/tweaks.itely:2022 (comment) +#. Documentation/cs/learning/tweaks.itely:2221 (comment) msgid "Add Dynamic Text and terminate hairpin" msgstr "" -#. Documentation/learning/tweaks.itely:2014 (comment) -#. Documentation/learning/tweaks.itely:2086 (comment) +#. Documentation/learning/tweaks.itely:2024 (comment) +#. Documentation/learning/tweaks.itely:2077 (comment) +#. Documentation/cs/learning/tweaks.itely:2223 (comment) +#. Documentation/cs/learning/tweaks.itely:2304 (comment) msgid "Stop Ottava Bracket" msgstr "" -#. Documentation/learning/tweaks.itely:2072 (comment) +#. Documentation/learning/tweaks.itely:2063 (comment) +#. Documentation/cs/learning/tweaks.itely:2290 (comment) msgid "Place following Ottava Bracket below Text Spanners" msgstr "" -#. Documentation/learning/tweaks.itely:2077 (comment) -#. Documentation/learning/tweaks.itely:2084 (comment) +#. Documentation/learning/tweaks.itely:2068 (comment) +#. Documentation/learning/tweaks.itely:2075 (comment) +#. Documentation/cs/learning/tweaks.itely:2295 (comment) +#. Documentation/cs/learning/tweaks.itely:2302 (comment) msgid "Add Dynamic Text" msgstr "" -#. Documentation/learning/tweaks.itely:2079 (comment) +#. Documentation/learning/tweaks.itely:2070 (comment) +#. Documentation/cs/learning/tweaks.itely:2297 (comment) msgid "Add Dynamic Line Spanner" msgstr "" -#. Documentation/learning/tweaks.itely:2161 (comment) +#. Documentation/learning/tweaks.itely:2157 (comment) +#. Documentation/cs/learning/tweaks.itely:2380 (comment) msgid "Cause notes to space out to accommodate text" msgstr "" -#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/learning/tweaks.itely:2180 (comment) +#. Documentation/cs/learning/tweaks.itely:2406 (comment) msgid "This markup is short enough to fit without collision" msgstr "" -#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2184 (comment) +#. Documentation/cs/learning/tweaks.itely:2410 (comment) msgid "This is too long to fit, so it is displaced upwards" msgstr "" -#. Documentation/learning/tweaks.itely:2192 (comment) -#. Documentation/learning/tweaks.itely:2197 (comment) +#. Documentation/learning/tweaks.itely:2188 (comment) +#. Documentation/learning/tweaks.itely:2193 (comment) +#. Documentation/cs/learning/tweaks.itely:2414 (comment) +#. Documentation/cs/learning/tweaks.itely:2419 (comment) msgid "Turn off collision avoidance" msgstr "" -#. Documentation/learning/tweaks.itely:2199 (comment) +#. Documentation/learning/tweaks.itely:2195 (comment) +#. Documentation/cs/learning/tweaks.itely:2421 (comment) msgid "and turn on textLengthOn" msgstr "" -#. Documentation/learning/tweaks.itely:2200 (comment) +#. Documentation/learning/tweaks.itely:2196 (comment) +#. Documentation/cs/learning/tweaks.itely:2422 (comment) msgid "Spaces at end are honored" msgstr "" -#. Documentation/learning/tweaks.itely:2307 (comment) +#. Documentation/learning/tweaks.itely:2303 (comment) +#. Documentation/cs/learning/tweaks.itely:2537 (comment) msgid "Extend width by 1 staff space" msgstr "" -#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/learning/tweaks.itely:2583 (comment) +#. Documentation/cs/learning/tweaks.itely:2863 (comment) msgid "This will not work, see below" msgstr "这个不工作,见下" -#. Documentation/learning/tweaks.itely:2591 (comment) +#. Documentation/learning/tweaks.itely:2587 (comment) +#. Documentation/cs/learning/tweaks.itely:2867 (comment) msgid "This works" msgstr "这个工作" -#. Documentation/learning/tweaks.itely:2627 (variable) +#. Documentation/learning/tweaks.itely:2623 (variable) +#. Documentation/cs/learning/tweaks.itely:2909 (variable) msgid "sesquisharp" msgstr "" -#. Documentation/learning/tweaks.itely:2630 (comment) +#. Documentation/learning/tweaks.itely:2626 (comment) +#. Documentation/cs/learning/tweaks.itely:2912 (comment) msgid "This prints a sesquisharp but the spacing is too small" msgstr "" -#. Documentation/learning/tweaks.itely:2635 (comment) +#. Documentation/learning/tweaks.itely:2631 (comment) +#. Documentation/cs/learning/tweaks.itely:2917 (comment) msgid "This improves the spacing" msgstr "" -#. Documentation/learning/tweaks.itely:2675 (comment) +#. Documentation/learning/tweaks.itely:2671 (comment) +#. Documentation/cs/learning/tweaks.itely:2961 (comment) msgid "Extend width by 1 unit" msgstr "" -#. Documentation/learning/tweaks.itely:2677 (comment) +#. Documentation/learning/tweaks.itely:2673 (comment) +#. Documentation/cs/learning/tweaks.itely:2963 (comment) msgid "Align dynamics to a base line 2 units above staff" msgstr "" -#. Documentation/learning/tweaks.itely:3003 (variable) -#. Documentation/learning/tweaks.itely:3060 (variable) -#. Documentation/learning/tweaks.itely:3130 (variable) -#. Documentation/learning/tweaks.itely:3283 (variable) -#. Documentation/learning/tweaks.itely:3352 (variable) +#. Documentation/learning/tweaks.itely:3014 (variable) +#. Documentation/learning/tweaks.itely:3071 (variable) +#. Documentation/learning/tweaks.itely:3141 (variable) +#. Documentation/learning/tweaks.itely:3294 (variable) +#. Documentation/learning/tweaks.itely:3364 (variable) +#. Documentation/cs/learning/tweaks.itely:3319 (variable) +#. Documentation/cs/learning/tweaks.itely:3379 (variable) +#. Documentation/cs/learning/tweaks.itely:3453 (variable) +#. Documentation/cs/learning/tweaks.itely:3537 (variable) +#. Documentation/cs/learning/tweaks.itely:3611 (variable) +#. Documentation/cs/learning/tweaks.itely:3681 (variable) msgid "rhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3009 (comment) -#. Documentation/learning/tweaks.itely:3066 (comment) -#. Documentation/learning/tweaks.itely:3138 (comment) -#. Documentation/learning/tweaks.itely:3293 (comment) -#. Documentation/learning/tweaks.itely:3362 (comment) +#. Documentation/learning/tweaks.itely:3020 (comment) +#. Documentation/learning/tweaks.itely:3077 (comment) +#. Documentation/learning/tweaks.itely:3149 (comment) +#. Documentation/learning/tweaks.itely:3304 (comment) +#. Documentation/learning/tweaks.itely:3374 (comment) +#. Documentation/cs/learning/tweaks.itely:3324 (comment) +#. Documentation/cs/learning/tweaks.itely:3385 (comment) +#. Documentation/cs/learning/tweaks.itely:3461 (comment) +#. Documentation/cs/learning/tweaks.itely:3547 (comment) +#. Documentation/cs/learning/tweaks.itely:3621 (comment) +#. Documentation/cs/learning/tweaks.itely:3691 (comment) msgid "Start polyphonic section of four voices" msgstr "" -#. Documentation/learning/tweaks.itely:3011 (comment) -#. Documentation/learning/tweaks.itely:3025 (comment) -#. Documentation/learning/tweaks.itely:3068 (comment) -#. Documentation/learning/tweaks.itely:3082 (comment) -#. Documentation/learning/tweaks.itely:3140 (comment) -#. Documentation/learning/tweaks.itely:3154 (comment) -#. Documentation/learning/tweaks.itely:3295 (comment) -#. Documentation/learning/tweaks.itely:3313 (comment) -#. Documentation/learning/tweaks.itely:3364 (comment) -#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/learning/tweaks.itely:3022 (comment) +#. Documentation/learning/tweaks.itely:3036 (comment) +#. Documentation/learning/tweaks.itely:3079 (comment) +#. Documentation/learning/tweaks.itely:3093 (comment) +#. Documentation/learning/tweaks.itely:3151 (comment) +#. Documentation/learning/tweaks.itely:3165 (comment) +#. Documentation/learning/tweaks.itely:3306 (comment) +#. Documentation/learning/tweaks.itely:3325 (comment) +#. Documentation/learning/tweaks.itely:3376 (comment) +#. Documentation/learning/tweaks.itely:3404 (comment) +#. Documentation/cs/learning/tweaks.itely:3326 (comment) +#. Documentation/cs/learning/tweaks.itely:3340 (comment) +#. Documentation/cs/learning/tweaks.itely:3387 (comment) +#. Documentation/cs/learning/tweaks.itely:3401 (comment) +#. Documentation/cs/learning/tweaks.itely:3463 (comment) +#. Documentation/cs/learning/tweaks.itely:3477 (comment) +#. Documentation/cs/learning/tweaks.itely:3549 (comment) +#. Documentation/cs/learning/tweaks.itely:3565 (comment) +#. Documentation/cs/learning/tweaks.itely:3623 (comment) +#. Documentation/cs/learning/tweaks.itely:3641 (comment) +#. Documentation/cs/learning/tweaks.itely:3693 (comment) +#. Documentation/cs/learning/tweaks.itely:3720 (comment) msgid "continuation of main voice" msgstr "" -#. Documentation/learning/tweaks.itely:3029 (variable) -#. Documentation/learning/tweaks.itely:3086 (variable) -#. Documentation/learning/tweaks.itely:3158 (variable) -#. Documentation/learning/tweaks.itely:3317 (variable) -#. Documentation/learning/tweaks.itely:3394 (variable) +#. Documentation/learning/tweaks.itely:3040 (variable) +#. Documentation/learning/tweaks.itely:3097 (variable) +#. Documentation/learning/tweaks.itely:3169 (variable) +#. Documentation/learning/tweaks.itely:3329 (variable) +#. Documentation/learning/tweaks.itely:3408 (variable) +#. Documentation/cs/learning/tweaks.itely:3344 (variable) +#. Documentation/cs/learning/tweaks.itely:3405 (variable) +#. Documentation/cs/learning/tweaks.itely:3481 (variable) +#. Documentation/cs/learning/tweaks.itely:3569 (variable) +#. Documentation/cs/learning/tweaks.itely:3645 (variable) +#. Documentation/cs/learning/tweaks.itely:3724 (variable) msgid "lhMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3038 (context id) -#. Documentation/learning/tweaks.itely:3095 (context id) -#. Documentation/learning/tweaks.itely:3167 (context id) -#. Documentation/learning/tweaks.itely:3326 (context id) -#. Documentation/learning/tweaks.itely:3403 (context id) -#. Documentation/notation/input.itely:1154 (context id) -#. Documentation/snippets/repeats-headword.ly:30 (context id) -#. Documentation/snippets/simultaneous-headword.ly:60 (comment) +#. Documentation/learning/tweaks.itely:3049 (context id) +#. Documentation/learning/tweaks.itely:3106 (context id) +#. Documentation/learning/tweaks.itely:3178 (context id) +#. Documentation/learning/tweaks.itely:3338 (context id) +#. Documentation/learning/tweaks.itely:3417 (context id) +#. Documentation/notation/input.itely:1623 (context id) +#. Documentation/cs/learning/tweaks.itely:3353 (context id) +#. Documentation/cs/learning/tweaks.itely:3414 (context id) +#. Documentation/cs/learning/tweaks.itely:3490 (context id) +#. Documentation/cs/learning/tweaks.itely:3578 (context id) +#. Documentation/cs/learning/tweaks.itely:3654 (context id) +#. Documentation/cs/learning/tweaks.itely:3733 (context id) +#. Documentation/snippets/repeats-headword.ly:33 (context id) +#. Documentation/snippets/simultaneous-headword.ly:54 (comment) msgid "RH" msgstr "" -#. Documentation/learning/tweaks.itely:3042 (context id) -#. Documentation/learning/tweaks.itely:3099 (context id) -#. Documentation/learning/tweaks.itely:3171 (context id) -#. Documentation/learning/tweaks.itely:3330 (context id) -#. Documentation/learning/tweaks.itely:3407 (context id) -#. Documentation/notation/input.itely:1160 (context id) -#. Documentation/snippets/repeats-headword.ly:92 (context id) -#. Documentation/snippets/text-headword.ly:137 (comment) +#. Documentation/learning/tweaks.itely:3053 (context id) +#. Documentation/learning/tweaks.itely:3110 (context id) +#. Documentation/learning/tweaks.itely:3182 (context id) +#. Documentation/learning/tweaks.itely:3342 (context id) +#. Documentation/learning/tweaks.itely:3421 (context id) +#. Documentation/notation/input.itely:1629 (context id) +#. Documentation/cs/learning/tweaks.itely:3357 (context id) +#. Documentation/cs/learning/tweaks.itely:3418 (context id) +#. Documentation/cs/learning/tweaks.itely:3494 (context id) +#. Documentation/cs/learning/tweaks.itely:3582 (context id) +#. Documentation/cs/learning/tweaks.itely:3658 (context id) +#. Documentation/cs/learning/tweaks.itely:3737 (context id) +#. Documentation/snippets/repeats-headword.ly:95 (context id) +#. Documentation/snippets/text-headword.ly:132 (comment) msgid "LH" msgstr "" -#. Documentation/learning/tweaks.itely:3298 (comment) -#. Documentation/learning/tweaks.itely:3370 (comment) -msgid "Move the c2 out of the main note column so the merge will work" +#. Documentation/learning/tweaks.itely:3309 (comment) +#. Documentation/learning/tweaks.itely:3382 (comment) +msgid "Move the c2 out of the main note column" +msgstr "" + +#. Documentation/learning/tweaks.itely:3310 (comment) +#. Documentation/learning/tweaks.itely:3383 (comment) +msgid "so the merge will work" msgstr "" -#. Documentation/learning/tweaks.itely:3303 (comment) -#. Documentation/learning/tweaks.itely:3377 (comment) +#. Documentation/learning/tweaks.itely:3315 (comment) +#. Documentation/learning/tweaks.itely:3390 (comment) +#. Documentation/cs/learning/tweaks.itely:3631 (comment) +#. Documentation/cs/learning/tweaks.itely:3706 (comment) msgid "Stem on the d2 must be down to permit merging" msgstr "" -#. Documentation/learning/tweaks.itely:3368 (comment) +#. Documentation/learning/tweaks.itely:3380 (comment) +#. Documentation/cs/learning/tweaks.itely:3697 (comment) msgid "Reposition the c2 to the right of the merged note" msgstr "" -#. Documentation/learning/tweaks.itely:3379 (comment) +#. Documentation/learning/tweaks.itely:3392 (comment) +#. Documentation/cs/learning/tweaks.itely:3708 (comment) msgid "Stem on the d2 should be invisible" msgstr "" -#. Documentation/learning/tweaks.itely:3514 (comment) -#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3529 (comment) +#. Documentation/learning/tweaks.itely:3551 (comment) +#. Documentation/cs/learning/tweaks.itely:3859 (comment) +#. Documentation/cs/learning/tweaks.itely:3878 (comment) msgid "Visible tempo marking" msgstr "" -#. Documentation/learning/tweaks.itely:3518 (comment) -#. Documentation/learning/tweaks.itely:3540 (comment) +#. Documentation/learning/tweaks.itely:3533 (comment) +#. Documentation/learning/tweaks.itely:3555 (comment) +#. Documentation/cs/learning/tweaks.itely:3863 (comment) +#. Documentation/cs/learning/tweaks.itely:3882 (comment) msgid "Invisible tempo marking to lengthen fermata in MIDI" msgstr "" -#. Documentation/learning/tweaks.itely:3521 (comment) -#. Documentation/learning/tweaks.itely:3543 (comment) +#. Documentation/learning/tweaks.itely:3536 (comment) +#. Documentation/learning/tweaks.itely:3558 (comment) +#. Documentation/cs/learning/tweaks.itely:3866 (comment) +#. Documentation/cs/learning/tweaks.itely:3885 (comment) msgid "New tempo for next section" msgstr "" -#. Documentation/learning/tweaks.itely:3604 (variable) +#. Documentation/learning/tweaks.itely:3619 (variable) +#. Documentation/cs/learning/tweaks.itely:3955 (variable) msgid "emphasize" msgstr "" -#. Documentation/learning/tweaks.itely:3609 (variable) +#. Documentation/learning/tweaks.itely:3624 (variable) +#. Documentation/cs/learning/tweaks.itely:3959 (variable) msgid "normal" msgstr "" -#. Documentation/learning/tweaks.itely:3616 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:42 (variable) -#. Documentation/snippets/hymn-template.ly:58 (variable) +#. Documentation/learning/tweaks.itely:3631 (variable) +#. Documentation/cs/learning/tweaks.itely:3966 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:64 (variable) +#. Documentation/snippets/hymn-template.ly:69 (variable) msgid "SopranoMusic" msgstr "" -#. Documentation/learning/tweaks.itely:3641 (context id) -#. Documentation/notation/input.itely:1139 (context id) -#. Documentation/snippets/anglican-psalm-template.ly:83 (context id) -#. Documentation/snippets/chords-headword.ly:49 (variable) -#. Documentation/snippets/hymn-template.ly:88 (context id) +#. Documentation/learning/tweaks.itely:3656 (context id) +#. Documentation/notation/input.itely:1608 (context id) +#. Documentation/cs/learning/tweaks.itely:3991 (context id) +#. Documentation/snippets/anglican-psalm-template.ly:105 (context id) +#. Documentation/snippets/chords-headword.ly:44 (variable) +#. Documentation/snippets/hymn-template.ly:99 (context id) msgid "Soprano" msgstr "" -#. Documentation/learning/tweaks.itely:3672 (variable) +#. Documentation/learning/tweaks.itely:3687 (variable) +#. Documentation/cs/learning/tweaks.itely:4024 (variable) msgid "mpdolce" msgstr "" -#. Documentation/learning/tweaks.itely:3679 (variable) +#. Documentation/learning/tweaks.itely:3694 (variable) +#. Documentation/cs/learning/tweaks.itely:4031 (variable) msgid "inst" msgstr "" -#. Documentation/learning/tweaks.itely:4184 (comment) +#. Documentation/learning/tweaks.itely:4172 (comment) +#. Documentation/cs/learning/tweaks.itely:4557 (comment) msgid "Arrange to obtain color from color-notehead procedure" msgstr "" @@ -2552,11 +2906,6 @@ msgstr "" msgid "Other sources of information" msgstr "" -#. @node in Documentation/learning/tweaks.itely -#. @subsection in Documentation/learning/tweaks.itely -msgid "Avoiding tweaks with slower processing" -msgstr "" - #. @node in Documentation/learning/tweaks.itely #. @subsection in Documentation/learning/tweaks.itely msgid "Advanced tweaks with Scheme" @@ -2690,10 +3039,10 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:453 (context id) -#. Documentation/notation/changing-defaults.itely:459 (context id) -#. Documentation/notation/changing-defaults.itely:467 (context id) -#. Documentation/notation/changing-defaults.itely:469 (context id) +#. Documentation/notation/changing-defaults.itely:454 (context id) +#. Documentation/notation/changing-defaults.itely:460 (context id) +#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:470 (context id) msgid "A" msgstr "" @@ -2744,8 +3093,8 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/jazz-combo-template.ly:113 (variable) -#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (context id) +#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:86 (context id) msgid "alto" msgstr "" @@ -2791,9 +3140,9 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/notation/changing-defaults.itely:454 (context id) -#. Documentation/notation/changing-defaults.itely:463 (context id) -#. Documentation/notation/changing-defaults.itely:468 (context id) +#. Documentation/notation/changing-defaults.itely:455 (context id) +#. Documentation/notation/changing-defaults.itely:464 (context id) +#. Documentation/notation/changing-defaults.itely:469 (context id) msgid "B" msgstr "" @@ -2824,18 +3173,18 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:45 (variable) -#. Documentation/snippets/fretted-headword.ly:107 (variable) -#. Documentation/snippets/jazz-combo-template.ly:246 (variable) -#. Documentation/snippets/jazz-combo-template.ly:294 (context id) -#. Documentation/snippets/satb-choir-template---four-staves.ly:83 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:48 (variable) +#. Documentation/snippets/fretted-headword.ly:108 (variable) +#. Documentation/snippets/jazz-combo-template.ly:263 (variable) +#. Documentation/snippets/jazz-combo-template.ly:311 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:100 (context id) msgid "bass" msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "bass clef" -msgstr "" +msgstr "低音谱号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2860,17 +3209,17 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "brass" -msgstr "" +msgstr "铜管乐器" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "breath mark" -msgstr "" +msgstr "换气记号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "breve" -msgstr "" +msgstr "倍全音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2880,21 +3229,21 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "C clef" -msgstr "" +msgstr "C 谱号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "cadence" -msgstr "" +msgstr "终止式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "cadenza" -msgstr "" +msgstr "华彩乐段" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/breathing-signs.ly:36 (comment) +#. Documentation/snippets/breathing-signs.ly:39 (comment) msgid "caesura" msgstr "" @@ -2911,12 +3260,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "central C" -msgstr "" +msgstr "中央 C" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "chromatic scale" -msgstr "" +msgstr "半音音阶" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2926,7 +3275,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "church mode" -msgstr "" +msgstr "教会调式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2961,7 +3310,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "compound interval" -msgstr "" +msgstr "复音程" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2971,12 +3320,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "compound time" -msgstr "" +msgstr "复拍子" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "concert pitch" -msgstr "" +msgstr "实际演出音高" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -2986,12 +3335,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "consonance" -msgstr "" +msgstr "协和音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "contralto" -msgstr "" +msgstr "女低音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3001,12 +3350,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "counterpoint" -msgstr "" +msgstr "对位法" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "countertenor" -msgstr "" +msgstr "仿女声的男高音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3051,7 +3400,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "diatonic scale" -msgstr "" +msgstr "自然音阶" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3061,17 +3410,17 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "diminished interval" -msgstr "" +msgstr "减音程" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "diminuendo" -msgstr "" +msgstr "渐弱" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "diminution" -msgstr "" +msgstr "减值" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3086,7 +3435,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "dissonance" -msgstr "" +msgstr "不协和音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3106,22 +3455,22 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "dominant" -msgstr "" +msgstr "属音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "dominant ninth chord" -msgstr "" +msgstr "属九和弦" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "dominant seventh chord" -msgstr "" +msgstr "属七和弦" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "dorian mode" -msgstr "" +msgstr "多里安调式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3161,7 +3510,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "duplet" -msgstr "" +msgstr "二连音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3171,12 +3520,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ecclesiastical mode" -msgstr "" +msgstr "教会调式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "eighth note" -msgstr "" +msgstr "八分音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3191,27 +3540,27 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "embellishment" -msgstr "" +msgstr "装饰音;加花" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "engraving" -msgstr "" +msgstr "雕版印刷术" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "enharmonic" -msgstr "" +msgstr "同音异名" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "equal temperament" -msgstr "" +msgstr "平均律" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "expression mark" -msgstr "" +msgstr "表情记号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3221,7 +3570,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "F clef" -msgstr "" +msgstr "F 谱号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3236,7 +3585,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "fermata" -msgstr "" +msgstr "延长记号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3246,12 +3595,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "figured bass" -msgstr "" +msgstr "数字低音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "flag" -msgstr "" +msgstr "符尾" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3266,7 +3615,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "forte" -msgstr "" +msgstr "强(音)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3291,7 +3640,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "fugue" -msgstr "" +msgstr "赋格曲" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3306,12 +3655,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "G clef" -msgstr "" +msgstr "G 谱号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "glissando" -msgstr "" +msgstr "滑奏法;滑音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3321,7 +3670,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "grave" -msgstr "" +msgstr "严肃沉重地" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3341,7 +3690,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "half rest" -msgstr "" +msgstr "二分休止符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3350,13 +3699,14 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:53 (variable) msgid "harmonics" -msgstr "" +msgstr "泛音;谐振" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "harmony" -msgstr "" +msgstr "和声" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3381,7 +3731,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "inversion" -msgstr "" +msgstr "转位" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3396,7 +3746,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "key" -msgstr "" +msgstr "调" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3406,22 +3756,22 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "largo" -msgstr "" +msgstr "慢板;广板" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "leading note" -msgstr "" +msgstr "导音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ledger line" -msgstr "" +msgstr "附加线" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "legato" -msgstr "" +msgstr "连奏;连唱" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3431,12 +3781,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "leger line" -msgstr "" +msgstr "附加线" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ligature" -msgstr "" +msgstr "组合记谱法" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3481,12 +3831,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "meantone temperament" -msgstr "" +msgstr "纯三度律" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "measure" -msgstr "" +msgstr "小节" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3496,7 +3846,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "mediant" -msgstr "" +msgstr "中音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3521,7 +3871,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "meter" -msgstr "" +msgstr "拍子" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3536,12 +3886,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "mezzo" -msgstr "" +msgstr "半;中" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "mezzo-soprano" -msgstr "" +msgstr "女中音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3551,37 +3901,37 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "mixolydian mode" -msgstr "" +msgstr "米索利地安调式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "mode" -msgstr "" +msgstr "调式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "modulation" -msgstr "" +msgstr "转调" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "mordent" -msgstr "" +msgstr "波音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "motif" -msgstr "" +msgstr "动机;乐想" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "motive" -msgstr "" +msgstr "动机;乐想" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "movement" -msgstr "" +msgstr "乐章;律动" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3596,7 +3946,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ninth" -msgstr "" +msgstr "九度" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3606,12 +3956,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "note" -msgstr "" +msgstr "音符;音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "note head" -msgstr "" +msgstr "符头" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3641,19 +3991,19 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ornament" -msgstr "" +msgstr "装饰音;加花" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/flamenco-notation.ly:184 (variable) -#. Documentation/snippets/flamenco-notation.ly:281 (context id) +#. Documentation/snippets/flamenco-notation.ly:187 (variable) +#. Documentation/snippets/flamenco-notation.ly:284 (context id) msgid "part" msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "pause" -msgstr "" +msgstr "停顿" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3693,7 +4043,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "polymeter" -msgstr "" +msgstr "复合拍子" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3718,7 +4068,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "presto" -msgstr "" +msgstr "急板" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3733,7 +4083,7 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "quadruplet" -msgstr "" +msgstr "四连音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3743,22 +4093,22 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "quarter rest" -msgstr "" +msgstr "四分休止符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "quarter tone" -msgstr "" +msgstr "四分之一全音(音程)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "quintuplet" -msgstr "" +msgstr "五连音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "rallentando" -msgstr "" +msgstr "渐慢" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3768,39 +4118,39 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "repeat" -msgstr "" +msgstr "重复" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:49 (variable) -#. Documentation/snippets/jazz-combo-template.ly:290 (context id) +#. Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly:39 (variable) +#. Documentation/snippets/jazz-combo-template.ly:307 (context id) msgid "rhythm" -msgstr "" +msgstr "节奏" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ritardando" -msgstr "" +msgstr "渐慢" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "ritenuto" -msgstr "" +msgstr "减低速度" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "scale degree" -msgstr "" +msgstr "音级" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "scordatura" -msgstr "" +msgstr "异常调弦法" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "score" -msgstr "" +msgstr "乐谱" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3810,22 +4160,22 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "semibreve" -msgstr "" +msgstr "全音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "semitone" -msgstr "" +msgstr "半音(音程);半级音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "seventh" -msgstr "" +msgstr "七度" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sextolet" -msgstr "" +msgstr "六连音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3850,12 +4200,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sixteenth note" -msgstr "" +msgstr "十六分音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sixteenth rest" -msgstr "" +msgstr "十六分休止符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3865,12 +4215,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sixty-fourth note" -msgstr "" +msgstr "六十四分音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sixty-fourth rest" -msgstr "" +msgstr "六十四分休止符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3885,12 +4235,12 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sonata" -msgstr "" +msgstr "奏鸣曲" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "sonata form" -msgstr "" +msgstr "奏鸣曲式" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3899,29 +4249,29 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:62 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:79 (context id) msgid "soprano" -msgstr "" +msgstr "女高音;高音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "staccato" -msgstr "" +msgstr "断音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "staves" -msgstr "" +msgstr "谱表" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "stem" -msgstr "" +msgstr "符杠" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "stringendo" -msgstr "" +msgstr "增加紧张度,通常同时加快速度" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3931,17 +4281,17 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "strong beat" -msgstr "" +msgstr "强拍" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "subdominant" -msgstr "" +msgstr "下属音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "submediant" -msgstr "" +msgstr "下中音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3961,17 +4311,17 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "supertonic" -msgstr "" +msgstr "上主音;上音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "symphony" -msgstr "" +msgstr "交响曲;交响乐" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "syncopation" -msgstr "" +msgstr "切分法;切分音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -3981,48 +4331,48 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "temperament" -msgstr "" +msgstr "乐律" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely -#. Documentation/snippets/satb-choir-template---four-staves.ly:76 (context id) +#. Documentation/snippets/satb-choir-template---four-staves.ly:93 (context id) msgid "tenor" -msgstr "" +msgstr "男高音[声乐用];中音[器乐用]" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "tenth" -msgstr "" +msgstr "十度" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "tenuto" -msgstr "" +msgstr "持续 [奏足时值]" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "third" -msgstr "" +msgstr "三度" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "thirty-second note" -msgstr "" +msgstr "三十二分音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "thirty-second rest" -msgstr "" +msgstr "三十二分休止符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "thorough bass" -msgstr "" +msgstr "通奏低音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "time" -msgstr "" +msgstr "(1)拍子;(2)时间" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -4037,42 +4387,42 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "transposing instrument" -msgstr "" +msgstr "移调乐器" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "treble clef" -msgstr "" +msgstr "高音谱号" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "tremolo" -msgstr "" +msgstr "颤音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "triad" -msgstr "" +msgstr "三和弦" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "trill" -msgstr "" +msgstr "震音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "triple meter" -msgstr "" +msgstr "三拍子" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "tritone" -msgstr "" +msgstr "三全音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "tuning fork" -msgstr "" +msgstr "音叉" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -4082,17 +4432,17 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "turn" -msgstr "" +msgstr "回音" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "unison" -msgstr "" +msgstr "(1)同声齐奏;同声齐唱,(2)同度(音程)" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "upbeat" -msgstr "" +msgstr "弱拍" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely @@ -4107,22 +4457,22 @@ msgstr "" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "weak beat" -msgstr "" +msgstr "弱拍" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "whole rest" -msgstr "" +msgstr "全休止符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "whole tone" -msgstr "" +msgstr "全音符" #. @node in Documentation/music-glossary.tely #. @section in Documentation/music-glossary.tely msgid "woodwind" -msgstr "" +msgstr "木管乐器" #. @node in Documentation/music-glossary.tely #. @chapter in Documentation/music-glossary.tely @@ -4209,34 +4559,65 @@ msgstr "" msgid "Specialist notation" msgstr "" -#. Documentation/notation/input.itely:673 (comment) -msgid "not printed" +#. Documentation/notation/input.itely:598 (comment) +msgid "Do not display the tagline for this book" +msgstr "" + +#. Documentation/notation/input.itely:610 (comment) +#. Documentation/notation/input.itely:623 (comment) +msgid "Do not display the subtitle for this score" +msgstr "" + +#. Documentation/notation/input.itely:646 (comment) +msgid "The following fields are centered" +msgstr "" + +#. Documentation/notation/input.itely:653 (comment) +msgid "The following fields are left-aligned on the left side" +msgstr "" + +#. Documentation/notation/input.itely:657 (comment) +msgid "The following fields are right-aligned on the right side" +msgstr "" + +#. Documentation/notation/input.itely:665 (comment) +msgid "The following fields are placed at opposite ends of the same line" +msgstr "" + +#. Documentation/notation/input.itely:939 (comment) +#. Documentation/notation/input.itely:953 (comment) +msgid "User-defined field" msgstr "" -#. Documentation/notation/input.itely:1137 (variable) +#. Documentation/notation/input.itely:1606 (variable) msgid "allLyrics" msgstr "" -#. Documentation/notation/input.itely:1223 (variable) -#. Documentation/notation/input.itely:1242 (variable) -#. Documentation/notation/input.itely:1279 (variable) -#. Documentation/notation/input.itely:1294 (variable) -#. Documentation/notation/spacing.itely:1555 (variable) -#. Documentation/notation/spacing.itely:1609 (variable) -#. Documentation/notation/spacing.itely:1634 (variable) -#. Documentation/notation/changing-defaults.itely:458 (variable) -#. Documentation/notation/changing-defaults.itely:493 (context id) -#. Documentation/notation/changing-defaults.itely:543 (context id) -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:31 (variable) +#. Documentation/notation/input.itely:1695 (variable) +#. Documentation/notation/input.itely:1714 (variable) +#. Documentation/notation/input.itely:1751 (variable) +#. Documentation/notation/input.itely:1766 (variable) +#. Documentation/notation/spacing.itely:1563 (variable) +#. Documentation/notation/spacing.itely:1617 (variable) +#. Documentation/notation/spacing.itely:1642 (variable) +#. Documentation/notation/changing-defaults.itely:459 (variable) +#. Documentation/notation/changing-defaults.itely:494 (context id) +#. Documentation/notation/changing-defaults.itely:544 (context id) +#. Documentation/snippets/automatically-change-durations.ly:23 (variable) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:34 (variable) #. Documentation/snippets/controlling-tuplet-bracket-visibility.ly:53 (variable) -#. Documentation/snippets/guitar-slides.ly:43 (variable) -#. Documentation/snippets/letter-tablature-formatting.ly:26 (variable) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (variable) -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:170 (variable) -#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:68 (variable) +#. Documentation/snippets/guitar-slides.ly:47 (variable) +#. Documentation/snippets/letter-tablature-formatting.ly:29 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:163 (variable) +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:172 (variable) +#. Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly:71 (variable) msgid "music" msgstr "" +#. Documentation/notation/input.itely:1792 (variable) +msgid "test" +msgstr "" + #. @node in Documentation/notation/input.itely #. @chapter in Documentation/notation/input.itely msgid "General input and output" @@ -4279,17 +4660,67 @@ msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Creating titles" +msgid "Creating titles headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Title blocks explained" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of book and score title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Default layout of headers and footers" msgstr "" #. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely msgid "Custom headers footers and titles" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom text formatting for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for title blocks" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Custom layout for headers and footers" +msgstr "" + +#. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely -msgid "Custom headers, footers, and titles" +msgid "Creating footnotes" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Footnotes overview" +msgstr "脚注" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Automatic footnotes" +msgstr "音乐字体" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +#, fuzzy +msgid "Manual footnotes" +msgstr "脚注" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Reference to page numbers" @@ -4298,7 +4729,7 @@ msgstr "" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely msgid "Table of contents" -msgstr "" +msgstr "目录" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely @@ -4325,14 +4756,29 @@ msgstr "" msgid "Using tags" msgstr "" +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Using global settings" +msgstr "" + #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely +msgid "Special characters" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely msgid "Text encoding" msgstr "" #. @node in Documentation/notation/input.itely -#. @subsection in Documentation/notation/input.itely -msgid "Displaying LilyPond notation" +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "Unicode" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @unnumberedsubsubsec in Documentation/notation/input.itely +msgid "ASCII aliases" msgstr "" #. @node in Documentation/notation/input.itely @@ -4367,7 +4813,7 @@ msgstr "" #. @node in Documentation/notation/input.itely #. @section in Documentation/notation/input.itely msgid "MIDI output" -msgstr "" +msgstr "MIDI 输出" #. @node in Documentation/notation/input.itely #. @subsection in Documentation/notation/input.itely @@ -4427,63 +4873,88 @@ msgstr "" msgid "Percussion in MIDI" msgstr "" -#. Documentation/notation/spacing.itely:2045 (comment) -msgid "The very low note here needs more room than 'space can" +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "The Articulate script" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @section in Documentation/notation/input.itely +msgid "Extracting musical information" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying LilyPond notation" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Displaying scheme music expressions" +msgstr "" + +#. @node in Documentation/notation/input.itely +#. @subsection in Documentation/notation/input.itely +msgid "Saving music events to a file" +msgstr "" + +#. Documentation/notation/spacing.itely:2086 (comment) +msgid "The very low note here needs more room than 'basic-distance" msgstr "" -#. Documentation/notation/spacing.itely:2046 (comment) -msgid "provide, so the distance between this staff and the next is" +#. Documentation/notation/spacing.itely:2087 (comment) +msgid "can provide, so the distance between this staff and the next" msgstr "" -#. Documentation/notation/spacing.itely:2047 (comment) -msgid "determined by 'padding." +#. Documentation/notation/spacing.itely:2088 (comment) +msgid "is determined by 'padding." msgstr "" -#. Documentation/notation/spacing.itely:2050 (comment) -msgid "Here, 'space provides enough room, and there is no need to" +#. Documentation/notation/spacing.itely:2091 (comment) +msgid "Here, 'basic-distance provides enough room, and there is no" msgstr "" -#. Documentation/notation/spacing.itely:2051 (comment) -msgid "compress the space (towards 'minimum-distance) to make room" +#. Documentation/notation/spacing.itely:2092 (comment) +msgid "need to compress the space (towards 'minimum-distance) to make" msgstr "" -#. Documentation/notation/spacing.itely:2052 (comment) -msgid "for anything else on the page, so the distance between this" +#. Documentation/notation/spacing.itely:2093 (comment) +msgid "room for anything else on the page, so the distance between" msgstr "" -#. Documentation/notation/spacing.itely:2053 (comment) -msgid "staff and the next is determined by 'space." +#. Documentation/notation/spacing.itely:2094 (comment) +msgid "this staff and the next is determined by 'basic-distance." msgstr "" -#. Documentation/notation/spacing.itely:2056 (comment) +#. Documentation/notation/spacing.itely:2097 (comment) msgid "By setting 'padding to a negative value, staves can be made to" msgstr "" -#. Documentation/notation/spacing.itely:2057 (comment) -msgid "collide. The lowest acceptable value for 'space is 0." +#. Documentation/notation/spacing.itely:2098 (comment) +msgid "collide. The lowest acceptable value for 'basic-distance is 0." msgstr "" -#. Documentation/notation/spacing.itely:2489 (comment) +#. Documentation/notation/spacing.itely:2529 (comment) msgid "this time the text will be closer to the staff" msgstr "" -#. Documentation/notation/spacing.itely:2491 (comment) +#. Documentation/notation/spacing.itely:2531 (comment) msgid "by setting outside-staff-priority to a non-number," msgstr "" -#. Documentation/notation/spacing.itely:2492 (comment) +#. Documentation/notation/spacing.itely:2532 (comment) msgid "we disable the automatic collision avoidance" msgstr "" -#. Documentation/notation/spacing.itely:2495 (comment) +#. Documentation/notation/spacing.itely:2535 (comment) msgid "now they will collide" msgstr "" -#. Documentation/notation/spacing.itely:2521 (comment) +#. Documentation/notation/spacing.itely:2561 (comment) msgid "the markup is too close to the following note" msgstr "" -#. Documentation/notation/spacing.itely:2525 (comment) +#. Documentation/notation/spacing.itely:2565 (comment) msgid "setting outside-staff-horizontal-padding fixes this" msgstr "" @@ -4772,159 +5243,168 @@ msgstr "" msgid "Changing spacing" msgstr "" -#. Documentation/notation/changing-defaults.itely:449 (variable) +#. Documentation/notation/changing-defaults.itely:450 (variable) msgid "musicA" msgstr "" -#. Documentation/notation/changing-defaults.itely:450 (variable) +#. Documentation/notation/changing-defaults.itely:451 (variable) msgid "musicB" msgstr "" -#. Documentation/notation/changing-defaults.itely:451 (variable) +#. Documentation/notation/changing-defaults.itely:452 (variable) msgid "keepVoicesAlive" msgstr "" -#. Documentation/notation/changing-defaults.itely:453 (comment) +#. Documentation/notation/changing-defaults.itely:454 (comment) msgid "Keep Voice \\\"A\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:454 (comment) +#. Documentation/notation/changing-defaults.itely:455 (comment) msgid "Keep Voice \\\"B\\\" alive for 5 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:489 (variable) -#. Documentation/notation/changing-defaults.itely:500 (context id) -#. Documentation/notation/changing-defaults.itely:506 (context id) -#. Documentation/notation/changing-defaults.itely:508 (context id) -#. Documentation/notation/changing-defaults.itely:511 (context id) -#. Documentation/notation/changing-defaults.itely:533 (variable) -#. Documentation/notation/changing-defaults.itely:549 (context id) +#. Documentation/notation/changing-defaults.itely:490 (variable) +#. Documentation/notation/changing-defaults.itely:501 (context id) +#. Documentation/notation/changing-defaults.itely:507 (context id) +#. Documentation/notation/changing-defaults.itely:509 (context id) +#. Documentation/notation/changing-defaults.itely:512 (context id) +#. Documentation/notation/changing-defaults.itely:534 (variable) +#. Documentation/notation/changing-defaults.itely:550 (context id) msgid "accompaniment" msgstr "" -#. Documentation/notation/changing-defaults.itely:490 (variable) -#. Documentation/notation/changing-defaults.itely:539 (variable) -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:74 (variable) +#. Documentation/notation/changing-defaults.itely:491 (variable) +#. Documentation/notation/changing-defaults.itely:540 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:117 (variable) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:75 (variable) msgid "words" msgstr "" -#. Documentation/notation/changing-defaults.itely:497 (comment) +#. Documentation/notation/changing-defaults.itely:498 (comment) msgid "Keep Voice \\\"melody\\\" alive for 4 bars" msgstr "" -#. Documentation/notation/changing-defaults.itely:528 (comment) -#. Documentation/notation/changing-defaults.itely:530 (comment) +#. Documentation/notation/changing-defaults.itely:529 (comment) +#. Documentation/notation/changing-defaults.itely:531 (comment) msgid "skip a bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2017 (comment) +#. Documentation/notation/changing-defaults.itely:731 (variable) +msgid "blubb" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:737 (variable) +msgid "bla" +msgstr "" + +#. Documentation/notation/changing-defaults.itely:2038 (comment) msgid "default space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2023 (comment) +#. Documentation/notation/changing-defaults.itely:2044 (comment) msgid "reduced space between staves" msgstr "" -#. Documentation/notation/changing-defaults.itely:2025 (comment) +#. Documentation/notation/changing-defaults.itely:2046 (comment) msgid "this is the nested declaration" msgstr "" -#. Documentation/notation/changing-defaults.itely:2480 (comment) +#. Documentation/notation/changing-defaults.itely:2473 (comment) msgid "increase the length of the tie" msgstr "" -#. Documentation/notation/changing-defaults.itely:2489 (comment) +#. Documentation/notation/changing-defaults.itely:2482 (comment) msgid "increase the length of the rest bar" msgstr "" -#. Documentation/notation/changing-defaults.itely:2497 (comment) +#. Documentation/notation/changing-defaults.itely:2490 (comment) msgid "increase the length of the hairpin" msgstr "" -#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2518 (comment) msgid "default" msgstr "" -#. Documentation/notation/changing-defaults.itely:2528 (comment) -#. Documentation/notation/changing-defaults.itely:2541 (comment) +#. Documentation/notation/changing-defaults.itely:2521 (comment) +#. Documentation/notation/changing-defaults.itely:2534 (comment) msgid "not effective alone" msgstr "" -#. Documentation/notation/changing-defaults.itely:2532 (comment) -#. Documentation/notation/changing-defaults.itely:2545 (comment) +#. Documentation/notation/changing-defaults.itely:2525 (comment) +#. Documentation/notation/changing-defaults.itely:2538 (comment) msgid "effective only when both overrides are present" msgstr "" -#. Documentation/notation/changing-defaults.itely:2922 (comment) +#. Documentation/notation/changing-defaults.itely:2915 (comment) msgid "Remove bar line at the end of the current line" msgstr "" -#. Documentation/notation/changing-defaults.itely:2968 (comment) +#. Documentation/notation/changing-defaults.itely:2961 (comment) msgid "Try to remove all key signatures" msgstr "" -#. Documentation/notation/changing-defaults.itely:3392 (comment) +#. Documentation/notation/changing-defaults.itely:3384 (comment) msgid "move horizontally left" msgstr "" -#. Documentation/notation/changing-defaults.itely:3394 (comment) +#. Documentation/notation/changing-defaults.itely:3386 (comment) msgid "move vertically up" msgstr "" -#. Documentation/notation/changing-defaults.itely:3395 (comment) +#. Documentation/notation/changing-defaults.itely:3387 (comment) msgid "third finger" msgstr "" -#. Documentation/notation/changing-defaults.itely:3443 (comment) -#. Documentation/notation/changing-defaults.itely:3482 (comment) +#. Documentation/notation/changing-defaults.itely:3435 (comment) +#. Documentation/notation/changing-defaults.itely:3474 (comment) msgid "The rehearsal mark will be centered above the Clef" msgstr "" -#. Documentation/notation/changing-defaults.itely:3449 (comment) +#. Documentation/notation/changing-defaults.itely:3441 (comment) msgid "The rehearsal mark will be centered above the Time Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3456 (comment) +#. Documentation/notation/changing-defaults.itely:3448 (comment) msgid "The rehearsal mark will be centered above the Breath Mark" msgstr "" -#. Documentation/notation/changing-defaults.itely:3476 (comment) +#. Documentation/notation/changing-defaults.itely:3468 (comment) msgid "The rehearsal mark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3489 (comment) +#. Documentation/notation/changing-defaults.itely:3481 (comment) msgid "The rehearsal mark will be centered above the Bar Line" msgstr "" -#. Documentation/notation/changing-defaults.itely:3504 (comment) +#. Documentation/notation/changing-defaults.itely:3496 (comment) msgid "The RehearsalMark will be centered above the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3511 (comment) -#. Documentation/notation/changing-defaults.itely:3527 (comment) -#. Documentation/notation/changing-defaults.itely:3534 (comment) +#. Documentation/notation/changing-defaults.itely:3503 (comment) +#. Documentation/notation/changing-defaults.itely:3519 (comment) +#. Documentation/notation/changing-defaults.itely:3526 (comment) msgid "" "The RehearsalMark will be aligned with the left edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3516 (comment) +#. Documentation/notation/changing-defaults.itely:3508 (comment) msgid "" "The RehearsalMark will be aligned with the right edge of the Key Signature" msgstr "" -#. Documentation/notation/changing-defaults.itely:3528 (comment) +#. Documentation/notation/changing-defaults.itely:3520 (comment) msgid "and then shifted right by 3.5 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3535 (comment) +#. Documentation/notation/changing-defaults.itely:3527 (comment) msgid "and then shifted left by 2 staff-spaces" msgstr "" -#. Documentation/notation/changing-defaults.itely:3583 (variable) +#. Documentation/notation/changing-defaults.itely:3575 (variable) msgid "XinO" msgstr "" -#. Documentation/notation/changing-defaults.itely:3825 (variable) +#. Documentation/notation/changing-defaults.itely:3821 (variable) msgid "custosNote" msgstr "" @@ -4980,7 +5460,7 @@ msgstr "" #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely -msgid "Aligning contexts" +msgid "Context layout order" msgstr "" #. @node in Documentation/notation/changing-defaults.itely @@ -5070,11 +5550,6 @@ msgstr "" msgid "Direction and placement" msgstr "" -#. @node in Documentation/notation/changing-defaults.itely -#. @subsection in Documentation/notation/changing-defaults.itely -msgid "Context layout order" -msgstr "" - #. @node in Documentation/notation/changing-defaults.itely #. @subsection in Documentation/notation/changing-defaults.itely msgid "Distances and measurements" @@ -5248,6 +5723,11 @@ msgstr "" msgid "Common chord modifiers" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "Predefined string tunings" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "Predefined fretboard diagrams" @@ -5368,6 +5848,11 @@ msgstr "" msgid "Accordion glyphs" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely +msgid "Tie glyphs" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely msgid "Vaticana glyphs" @@ -5418,6 +5903,11 @@ msgstr "" msgid "Text markup list commands" msgstr "" +#. @node in Documentation/notation/notation-appendices.itely +#. @appendixsec in Documentation/notation/notation-appendices.itely +msgid "List of special characters" +msgstr "" + #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely msgid "List of articulations" @@ -5555,12 +6045,12 @@ msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Predefined type predicates" +msgid "Context modification identifiers" msgstr "" #. @node in Documentation/notation/notation-appendices.itely #. @appendixsec in Documentation/notation/notation-appendices.itely -msgid "Scheme functions" +msgid "Predefined type predicates" msgstr "" #. @node in Documentation/notation/cheatsheet.itely @@ -5569,9 +6059,15 @@ msgid "Cheat sheet" msgstr "" #. @unnumberedsec in Documentation/snippets.tely +msgid "\\\\TEXT\\\\" +msgstr "" + #. @node in Documentation/snippets.tely +msgid "\\\\PRE\\\\: \\\\\\\\TEXT\\\\\\\\" +msgstr "" + #. @unnumberedsec in Documentation/snippets.tely -msgid "\\\\TEXT\\\\" +msgid "\\\\\\\\TEXT\\\\\\\\" msgstr "" #. @node in Documentation/usage/running.itely @@ -5761,7 +6257,7 @@ msgstr "" #. @node in Documentation/usage/lilypond-book.itely #. @subsection in Documentation/usage/lilypond-book.itely msgid "HTML" -msgstr "" +msgstr "HTML" #. @node in Documentation/usage/lilypond-book.itely #. @subsection in Documentation/usage/lilypond-book.itely @@ -5854,6 +6350,16 @@ msgstr "" msgid "Point and click" msgstr "" +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Enabling point and click" +msgstr "" + +#. @node in Documentation/usage/external.itely +#. @unnumberedsubsec in Documentation/usage/external.itely +msgid "Selective point-and-click" +msgstr "" + #. @node in Documentation/usage/external.itely #. @section in Documentation/usage/external.itely msgid "Text editor support" @@ -5862,12 +6368,12 @@ msgstr "" #. @node in Documentation/usage/external.itely #. @unnumberedsubsec in Documentation/usage/external.itely msgid "Emacs mode" -msgstr "" +msgstr "Emacs 模式" #. @node in Documentation/usage/external.itely #. @unnumberedsubsec in Documentation/usage/external.itely msgid "Vim mode" -msgstr "" +msgstr "Vim 模式" #. @node in Documentation/usage/external.itely #. @unnumberedsubsec in Documentation/usage/external.itely @@ -5979,1314 +6485,2158 @@ msgstr "" msgid "Make and Makefiles" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:38 (variable) -msgid "discant" +#. @node in Documentation/cs/learning.tely +#. @appendix in Documentation/cs/learning.tely +msgid "Rejstřík k LilyPondu" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) -#. Documentation/snippets/anglican-psalm-template.ly:66 (variable) -msgid "dot" +#. @top in Documentation/cs/macros.itexi +msgid "LilyPond -- \\\\TITLE\\\\" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:47 (comment) -msgid "16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Předem stanovené příkazy" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:48 (variable) -msgid "accBasson" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Vybrané úryvky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:54 (comment) -msgid "een korig 8 en 16 voets register" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Podívejte se také na" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:55 (variable) -msgid "accBandon" +#. @subsubheading in Documentation/cs/macros.itexi +msgid "Známé potíže a upozornění" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:63 (variable) -msgid "accVCello" +#. Documentation/cs/learning/tutorial.itely:250 (comment) +msgid "Počáteční bod napsat na jednočárkovaném C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:73 (comment) -msgid "4-8-16 voets register" +#. Documentation/cs/learning/tutorial.itely:284 (comment) +msgid "dvoučárkované C" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:74 (variable) -msgid "accHarmon" +#. Documentation/cs/learning/tutorial.itely:301 (comment) +msgid "c je 1 řádek nahoru, tedy c nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:84 (variable) -msgid "accTrombon" +#. Documentation/cs/learning/tutorial.itely:302 (comment) +msgid "d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:96 (comment) -msgid "eenkorig 4 en 16 voets register" +#. Documentation/cs/learning/tutorial.itely:303 (comment) +msgid "e je 3 nahoru, nebo 4 dolů, tedy e pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:97 (variable) -msgid "accOrgan" +#. Documentation/cs/learning/tutorial.itely:304 (comment) +msgid "a je 6 nahoru, nebo 1 dolů, tedy a pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:105 (variable) -msgid "accMaster" +#. Documentation/cs/learning/tutorial.itely:305 (comment) +msgid "g je 5 nahoru, nebo 2 dolů, tedy g pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:119 (variable) -msgid "accAccord" +#. Documentation/cs/learning/tutorial.itely:306 (comment) +msgid "f je 4 nahoru, nebo 3 dolů, tedy f pod b" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:131 (variable) -msgid "accMusette" +#. @node in Documentation/cs/learning/tutorial.itely +#. @chapter in Documentation/cs/learning/tutorial.itely +msgid "Cvičení" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:141 (variable) -msgid "accCeleste" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přeložení zdrojového souboru" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:149 (variable) -msgid "accOboe" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Zadání not" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:157 (variable) -msgid "accClarin" +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pohled na výsledky" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:163 (variable) -msgid "accPiccolo" +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Příkazový řádek" msgstr "" -#. Documentation/snippets/accordion-discant-symbols.ly:169 (variable) -msgid "accViolin" +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak se píší vstupní soubory" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:50 (variable) +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Jednoduchý notový zápis" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Výšky tónů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Délky tónů (rytmy)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Pomlky" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Taktové označení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vyznačení tempa" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Notový klíč" +msgstr "" + +#. @subheading in Documentation/cs/learning/tutorial.itely +msgid "Vše dohromady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Práce na vstupních souborech" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Vypořádání se s chybami" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Obecné rady k řešení chyb" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Některé časté chyby" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @section in Documentation/cs/learning/tutorial.itely +msgid "Jak číst příručky" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Vypuštěný materiál" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Klepnutelné příklady" +msgstr "" + +#. @node in Documentation/cs/learning/tutorial.itely +#. @subsection in Documentation/cs/learning/tutorial.itely +msgid "Přehled o příručkách" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @chapter in Documentation/cs/learning/common-notation.itely +msgid "Běžný notový zápis" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Notový zápis v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přezkoušení taktů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání a označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předznamenání" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Označení tóniny (předznamenání)" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: označení tóniny a výšky tónů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Ligatury a legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ligatury" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Legatové obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Frázovací obloučky" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Varování: ligatury nejsou legatovými obloučky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka a hlasitost" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Artikulační znaménka" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Prstoklad" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Dynamika" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání textu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Automatické a ruční trámce" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Dodatečné rytmické příkazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Předtaktí" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Jiná rytmická rozdělení" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Ozdoby" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Více not najednou" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vysvětlení hudebních výrazů" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Obdoba: matematické výrazy" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: více notových osnov" +msgstr "" + +#. @subheading in Documentation/cs/learning/common-notation.itely +msgid "Souběžné hudební výrazy: jedna notová osnova" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Více notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Seskupení notových osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Spojení not do akordů" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vícehlasost v jedné notové osnově" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Písničky" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Zápis jednoduchých písní" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Vyrovnání textu s melodií" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Text pro více osnov" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @section in Documentation/cs/learning/common-notation.itely +msgid "Poslední úpravy" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Pořádání děl pomocí proměnných" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Přidání názvu" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Absolutní označení not" +msgstr "" + +#. @node in Documentation/cs/learning/common-notation.itely +#. @subsection in Documentation/cs/learning/common-notation.itely +msgid "Po cvičení" +msgstr "" + +#. Documentation/cs/learning/fundamental.itely:3177 (comment) +msgid "set time signature and key" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @chapter in Documentation/cs/learning/fundamental.itely +msgid "Základní pojmy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Jak pracují vstupní soubory LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Uvedení do stavby souboru v LilyPondu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notový zápis je jedním (jediným) složeným hudebním výrazem" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Naskládání hudebních výrazů do sebe" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "O ne-naskládatelnosti závorek a ligatur" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Hlasy obsahují noty" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Slyším hlasy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přímo vyjádřené začátky hlasů" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Notenkolumnen" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Hlasy a zpěvy" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Prostředí a rytci" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření prostředí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vysvětlení rytců" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Změna vlastností prostředí" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\with} setzen" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Kontexteigenschaften mit @code{\\\\context} setzen" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Přidání a odstranění rytců" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Einen einzelnen Kontext verändern" +msgstr "" + +#. @subsubheading in Documentation/cs/learning/fundamental.itely +msgid "Alle Kontexte des gleichen Typs verändern" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @section in Documentation/cs/learning/fundamental.itely +msgid "Rozšíření příkladů" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Soprán a violoncello" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Čtyřhlasý notový zápis SATB" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Vytvoření notového zápisu od základu" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Úspora psaní na stroji pomocí proměnných a funkcí" +msgstr "" + +#. @node in Documentation/cs/learning/fundamental.itely +#. @subsection in Documentation/cs/learning/fundamental.itely +msgid "Notové zápisy a hlasy" +msgstr "" + +#. Documentation/cs/learning/tweaks.itely:3626 (comment) +#. Documentation/cs/learning/tweaks.itely:3699 (comment) +msgid "Move the c2 out of the main note column so the merge will work" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @chapter in Documentation/cs/learning/tweaks.itely +msgid "Ladění výstupu" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Základy pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Úvod do ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty a rozhraní" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pravidla pro pojmenovávání předmětů a vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Postupy při ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vnitřní referenční příručka" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti předmětů v rozvržení" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext finden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Nur einmal mit \\\\override verändern" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Rückgängig machen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vlastnosti nacházející se v rozhraních" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Den Kontext im Liedtextmodus bestimmen" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Typy vlastností" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Vzhled předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Viditelnost a barva předmětů" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "stencil (Matrize)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "break-visibility (unsichtbar machen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "transparent (durchsichtig)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "color (Farbe)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Velikost předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Délka a tloušťka předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Umístění předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Automatické chování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty uvnitř notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Fingersatz" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Předměty vně notové osnovy" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "\\\\textLengthOn (Textlänge berücksichtigen)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Dynamik" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Verändern der Größe von grobs" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Střety předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Přesouvání předmětů" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Oprava překrývajících se not" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "padding (Fülleigenschafte)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "right-padding (Verschieben nach links)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-padding (Systemfüllungseigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "self-alignment-X (Selbstausrichtung-X-Eigenschaft)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "staff-position (Position innerhalb des Systems)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "extra-offset (Genaues Positionieren)" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Ausrichtungseigenschaft" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "force-hshift (vertikale Verschiebunseigenschaft)" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Příklady ze života" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @section in Documentation/cs/learning/tweaks.itely +msgid "Další ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Jiné využití ladění" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Noten zwischen unterschiedlichen Stimmen überbinden" +msgstr "" + +#. @subheading in Documentation/cs/learning/tweaks.itely +msgid "Eine Fermate in MIDI simulieren" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Použití proměnných pro ladění" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Celkové formátování" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Více informací" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Vyhnutí se ladění s pomalejším překladem" +msgstr "" + +#. @node in Documentation/cs/learning/tweaks.itely +#. @subsection in Documentation/cs/learning/tweaks.itely +msgid "Pokročilá ladění se Scheme" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendix in Documentation/cs/learning/templates.itely +msgid "Předlohy" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jednotlivá notová osnova" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +#, fuzzy +msgid "Pouze noty" +msgstr "全音符" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a text" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty a názvy akordů" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Noty, text a názvy akordů" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Klavírní předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavírní sólo" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír a hlas zpěvu" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným textem" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Klavír s vystředěným označením hlasitosti" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Jednoduchá smyčcový kvartet" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Hlasy smyčcového kvartetu" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Vokální soubor" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Notový zápis SATB a automatický klavírní výtah" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "SATB s příslušnými prostředími" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Sólový zpěv a dvojhlasný refrén" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Orchestrální předloha" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Orchestr, sbor a klavír" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro starý notový zápis" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Přepis menzurální hudby" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Předlohy pro přepis gregorianik" +msgstr "" + +#. @node in Documentation/cs/learning/templates.itely +#. @appendixsec in Documentation/cs/learning/templates.itely +msgid "Jiné předlohy" +msgstr "" + +#. @appendixsubsec in Documentation/cs/learning/templates.itely +msgid "Džezová skupina" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:41 (variable) +msgid "discant" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:44 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:88 (variable) +msgid "dot" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:50 (comment) +msgid "16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:51 (variable) +msgid "accBasson" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:57 (comment) +msgid "een korig 8 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:58 (variable) +msgid "accBandon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:66 (variable) +msgid "accVCello" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:76 (comment) +msgid "4-8-16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:77 (variable) +msgid "accHarmon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:87 (variable) +msgid "accTrombon" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:99 (comment) +msgid "eenkorig 4 en 16 voets register" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:100 (variable) +msgid "accOrgan" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:108 (variable) +msgid "accMaster" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:122 (variable) +msgid "accAccord" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:134 (variable) +msgid "accMusette" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:144 (variable) +msgid "accCeleste" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:152 (variable) +msgid "accOboe" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:160 (variable) +msgid "accClarin" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:166 (variable) +msgid "accPiccolo" +msgstr "" + +#. Documentation/snippets/accordion-discant-symbols.ly:172 (variable) +msgid "accViolin" +msgstr "" + +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:53 (variable) msgid "continuo" msgstr "" -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:62 (context id) -#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:63 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:65 (context id) +#. Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly:66 (context id) msgid "bassStaff" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:50 (variable) +#. Documentation/snippets/adding-drum-parts.ly:52 (variable) msgid "drh" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:51 (variable) +#. Documentation/snippets/adding-drum-parts.ly:53 (variable) msgid "drl" msgstr "" -#. Documentation/snippets/adding-drum-parts.ly:52 (variable) +#. Documentation/snippets/adding-drum-parts.ly:54 (variable) msgid "timb" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:35 (variable) -#. Documentation/snippets/jazz-combo-template.ly:220 (context id) -#. Documentation/snippets/jazz-combo-template.ly:229 (context id) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:38 (variable) +#. Documentation/snippets/jazz-combo-template.ly:237 (context id) +#. Documentation/snippets/jazz-combo-template.ly:246 (context id) msgid "two" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:36 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:39 (variable) msgid "threeTwo" msgstr "" -#. Documentation/snippets/adding-fingerings-to-tablatures.ly:43 (variable) +#. Documentation/snippets/adding-fingerings-to-tablatures.ly:46 (variable) msgid "threeFour" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:36 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:39 (variable) msgid "splitStaffBarLineMarkup" msgstr "" -#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:42 (variable) +#. Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly:45 (variable) msgid "splitStaffBarLine" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:48 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:91 (variable) msgid "cueWhile" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:61 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:104 (variable) msgid "flute" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:67 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:110 (variable) msgid "clarinet" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:76 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:119 (variable) msgid "pianoRH" msgstr "" -#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:81 (variable) +#. Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly:124 (variable) msgid "pianoLH" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:33 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:35 (comment) msgid "first, define a variable to hold the formatted date:" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (variable) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (variable) msgid "date" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:34 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) msgid "d-%m-%Y\\\" (localtime (current-time)))" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:36 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:38 (comment) msgid "use it in the title block:" msgstr "" -#. Documentation/snippets/adding-the-current-date-to-a-score.ly:47 (comment) +#. Documentation/snippets/adding-the-current-date-to-a-score.ly:49 (comment) msgid "and use it in a \\markup block:" msgstr "" -#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:52 (variable) +#. Documentation/snippets/additional-voices-to-avoid-collisions.ly:54 (variable) msgid "voiceFive" msgstr "" -#. Documentation/snippets/adjusting-grace-note-spacing.ly:26 (variable) +#. Documentation/snippets/adjusting-grace-note-spacing.ly:29 (variable) msgid "graceNotes" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:35 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:38 (comment) msgid "Default layout:" msgstr "" -#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:44 (comment) +#. Documentation/snippets/adjusting-lyrics-vertical-spacing.ly:47 (comment) msgid "Reducing the minimum space below the staff and above the lyrics:" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:61 (comment) -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:47 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:64 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) msgid "Increase the size of the bar number by 2" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:63 (comment) -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:59 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:62 (comment) msgid "Print a bar number every second measure" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:66 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) msgid "Center-align bar numbers" msgstr "" -#. Documentation/snippets/aligning-bar-numbers.ly:69 (comment) +#. Documentation/snippets/aligning-bar-numbers.ly:72 (comment) msgid "Left-align bar numbers" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:90 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:89 (comment) msgid "the RehearsalMark will be centered above the Clef" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:97 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:96 (comment) msgid "the RehearsalMark will be centered above the TimeSignature" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:105 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:104 (comment) msgid "the RehearsalMark will be centered above the KeySignature" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:116 (comment) -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:115 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:127 (comment) msgid "" "the RehearsalMark will be aligned with the left edge of the KeySignature" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:122 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:121 (comment) msgid "" "the RehearsalMark will be aligned with the right edge of the KeySignature" msgstr "" -#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:129 (comment) +#. Documentation/snippets/aligning-marks-with-various-notation-objects.ly:128 (comment) msgid "and then shifted right by one unit." msgstr "" -#. Documentation/snippets/ancient-fonts.ly:37 (variable) -#. Documentation/snippets/ancient-fonts.ly:37 (context id) +#. Documentation/snippets/ancient-fonts.ly:40 (variable) +#. Documentation/snippets/ancient-fonts.ly:40 (context id) msgid "upperStaff" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:49 (comment) +#. Documentation/snippets/ancient-fonts.ly:52 (comment) msgid "\\break % 1 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:60 (comment) +#. Documentation/snippets/ancient-fonts.ly:63 (comment) msgid "\\break %2 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:72 (comment) +#. Documentation/snippets/ancient-fonts.ly:75 (comment) msgid "\\break % 3 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:87 (comment) +#. Documentation/snippets/ancient-fonts.ly:90 (comment) msgid "\\break % 4 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:96 (comment) -#. Documentation/snippets/ancient-fonts.ly:158 (comment) +#. Documentation/snippets/ancient-fonts.ly:99 (comment) +#. Documentation/snippets/ancient-fonts.ly:161 (comment) msgid "\\break % 5 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:110 (comment) -#. Documentation/snippets/ancient-fonts.ly:173 (comment) +#. Documentation/snippets/ancient-fonts.ly:113 (comment) +#. Documentation/snippets/ancient-fonts.ly:176 (comment) msgid "\\break % 6 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:119 (comment) -#. Documentation/snippets/ancient-fonts.ly:183 (comment) +#. Documentation/snippets/ancient-fonts.ly:122 (comment) +#. Documentation/snippets/ancient-fonts.ly:186 (comment) msgid "\\break % 7 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:126 (comment) +#. Documentation/snippets/ancient-fonts.ly:129 (comment) msgid "\\break % 8 (8*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:129 (comment) +#. Documentation/snippets/ancient-fonts.ly:132 (comment) msgid "\\break % 12 (32*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:134 (variable) -#. Documentation/snippets/ancient-fonts.ly:134 (context id) +#. Documentation/snippets/ancient-fonts.ly:137 (variable) +#. Documentation/snippets/ancient-fonts.ly:137 (context id) msgid "lowerStaff" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:144 (comment) +#. Documentation/snippets/ancient-fonts.ly:147 (comment) msgid "\\break % 2 (16*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:149 (comment) +#. Documentation/snippets/ancient-fonts.ly:152 (comment) msgid "\\break % 4 (16*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:188 (comment) +#. Documentation/snippets/ancient-fonts.ly:191 (comment) msgid "\\break % 9 (16*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:190 (comment) +#. Documentation/snippets/ancient-fonts.ly:193 (comment) msgid "lig" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:194 (comment) +#. Documentation/snippets/ancient-fonts.ly:197 (comment) msgid "\\break % 11 (16*1)" msgstr "" -#. Documentation/snippets/ancient-fonts.ly:205 (comment) +#. Documentation/snippets/ancient-fonts.ly:208 (comment) msgid "\\break % 12 (8*1)" msgstr "" -#. Documentation/snippets/ancient-headword.ly:34 (context id) +#. Documentation/snippets/ancient-headword.ly:29 (context id) msgid "cantus" msgstr "" -#. Documentation/snippets/ancient-headword.ly:36 (comment) +#. Documentation/snippets/ancient-headword.ly:31 (comment) msgid "Verse 1 — Salve, Regína" msgstr "" -#. Documentation/snippets/ancient-headword.ly:47 (comment) +#. Documentation/snippets/ancient-headword.ly:42 (comment) msgid "Verse 2 — Vita, dulcédo" msgstr "" -#. Documentation/snippets/ancient-headword.ly:48 (comment) +#. Documentation/snippets/ancient-headword.ly:43 (comment) msgid "a\\melisma \\[ a \\flexa g \\pes a\\melismaEnd \\] d" msgstr "" -#. Documentation/snippets/ancient-headword.ly:49 (comment) +#. Documentation/snippets/ancient-headword.ly:44 (comment) msgid "\\divisioMinima" msgstr "" -#. Documentation/snippets/ancient-headword.ly:50 (comment) +#. Documentation/snippets/ancient-headword.ly:45 (comment) msgid "\\[ a\\melisma \\flexa g\\melismaEnd \\]" msgstr "" -#. Documentation/snippets/ancient-headword.ly:51 (comment) +#. Documentation/snippets/ancient-headword.ly:46 (comment) msgid "\\[ f\\melisma \\flexa e f \\pes g \\flexa f\\melismaEnd \\]" msgstr "" -#. Documentation/snippets/ancient-headword.ly:52 (comment) +#. Documentation/snippets/ancient-headword.ly:47 (comment) msgid "\\[ e\\melisma \\flexa d\\melismaEnd \\]" msgstr "" -#. Documentation/snippets/ancient-headword.ly:53 (comment) +#. Documentation/snippets/ancient-headword.ly:48 (comment) msgid "\\divisioMaior" msgstr "" -#. Documentation/snippets/ancient-headword.ly:54 (comment) +#. Documentation/snippets/ancient-headword.ly:49 (comment) msgid "c d \\[e\\melisma \\pes f\\melismaEnd \\] g" msgstr "" -#. Documentation/snippets/ancient-headword.ly:55 (comment) +#. Documentation/snippets/ancient-headword.ly:50 (comment) msgid "\\[d\\melisma \\pes e \\flexa c\\melismaEnd \\] d" msgstr "" -#. Documentation/snippets/ancient-headword.ly:56 (comment) +#. Documentation/snippets/ancient-headword.ly:51 (comment) msgid "\\finalis" msgstr "" -#. Documentation/snippets/ancient-headword.ly:57 (comment) +#. Documentation/snippets/ancient-headword.ly:52 (comment) msgid "Verse 3 — Ad te clamámus" msgstr "" -#. Documentation/snippets/ancient-headword.ly:66 (comment) +#. Documentation/snippets/ancient-headword.ly:61 (comment) msgid "Verse 4 — Ad te suspirámus" msgstr "" -#. Documentation/snippets/ancient-headword.ly:79 (comment) +#. Documentation/snippets/ancient-headword.ly:74 (comment) msgid "Verse 5 — Eia ergo, Advocáta nostra" msgstr "" -#. Documentation/snippets/ancient-headword.ly:95 (comment) +#. Documentation/snippets/ancient-headword.ly:90 (comment) msgid "Verse 6 — Et Jesum" msgstr "" -#. Documentation/snippets/ancient-headword.ly:109 (comment) +#. Documentation/snippets/ancient-headword.ly:104 (comment) msgid "Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María" msgstr "" -#. Documentation/snippets/ancient-headword.ly:127 (comment) +#. Documentation/snippets/ancient-headword.ly:122 (comment) msgid "Vi- ta, dul- cé- do, et spes no- stra, sal- ve." msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:53 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:68 (variable) msgid "chant" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:60 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly:75 (variable) msgid "verba" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:69 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:116 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:152 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:220 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) -#. Documentation/snippets/incipit.ly:25 (variable) -#. Documentation/snippets/incipit.ly:201 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:215 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:85 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:132 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:151 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:168 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:202 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:236 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:255 (comment) +#. Documentation/snippets/incipit.ly:28 (variable) +#. Documentation/snippets/incipit.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:218 (comment) msgid "incipit" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:71 (comment) -msgid "tight spacing" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) +msgid "Set tight spacing" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:78 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:95 (comment) msgid "turn off bar lines" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:82 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:99 (comment) msgid "need this extra \\skip such that clef change comes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:83 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:100 (comment) msgid "after bar line" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:87 (comment) -msgid "CHECK: no effect?" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:88 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:104 (comment) msgid "turn bar lines on again" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:96 (comment) -msgid "FIXME: setting printKeyCancellation back to #t must not" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (comment) +msgid "Setting printKeyCancellation back to #t must not" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:97 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:113 (comment) msgid "occur in the first bar after the incipit. Dto. for forceClef." msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:98 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:114 (comment) msgid "Therefore, we need an extra \\skip." msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:103 (comment) -#. Documentation/snippets/incipit.ly:75 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:38 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) +#. Documentation/snippets/incipit.ly:78 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) msgid "the actual music" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:105 (comment) -#. Documentation/snippets/incipit.ly:78 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:121 (comment) +#. Documentation/snippets/incipit.ly:81 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:42 (comment) msgid "let finis bar go through all staves" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:108 (comment) -#. Documentation/snippets/incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:41 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:124 (comment) +#. Documentation/snippets/incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:44 (comment) msgid "finis bar" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:112 (variable) -#. Documentation/snippets/incipit.ly:98 (variable) -#. Documentation/snippets/incipit.ly:232 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:45 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:234 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:128 (variable) +#. Documentation/snippets/incipit.ly:101 (variable) +#. Documentation/snippets/incipit.ly:235 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:48 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:237 (context id) msgid "discantusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:118 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:155 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:161 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:175 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:189 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:171 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:177 (comment) #. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:191 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:200 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:211 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:223 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:81 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:94 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:101 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:136 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:162 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:217 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:205 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:207 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:227 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:239 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:74 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:84 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:97 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:104 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:139 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:165 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:193 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:220 (comment) msgid "two bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:119 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:137 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:216 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:135 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:140 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:219 (comment) msgid "eight bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:120 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:154 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:157 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:190 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:192 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:193 (comment) -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:224 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:161 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:189 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:191 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:136 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:173 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:208 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:209 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:240 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:164 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:192 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:194 (comment) msgid "one bar" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:134 (variable) -#. Documentation/snippets/incipit.ly:112 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:58 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:150 (variable) +#. Documentation/snippets/incipit.ly:115 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:61 (variable) msgid "discantusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:148 (variable) -#. Documentation/snippets/incipit.ly:135 (variable) -#. Documentation/snippets/incipit.ly:239 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:68 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:241 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:164 (variable) +#. Documentation/snippets/incipit.ly:138 (variable) +#. Documentation/snippets/incipit.ly:242 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:71 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:244 (context id) msgid "altusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:156 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:163 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:172 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:166 (comment) msgid "seven bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:170 (variable) -#. Documentation/snippets/incipit.ly:149 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:80 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:186 (variable) +#. Documentation/snippets/incipit.ly:152 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:83 (variable) msgid "altusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:182 (variable) -#. Documentation/snippets/incipit.ly:173 (variable) -#. Documentation/snippets/incipit.ly:246 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:88 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:248 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:198 (variable) +#. Documentation/snippets/incipit.ly:176 (variable) +#. Documentation/snippets/incipit.ly:249 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:91 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:251 (context id) msgid "tenorNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:188 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:187 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:204 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:190 (comment) msgid "four bars" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:206 (variable) -#. Documentation/snippets/incipit.ly:187 (variable) -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:81 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:100 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:222 (variable) +#. Documentation/snippets/incipit.ly:190 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:94 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:103 (variable) msgid "tenorLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:216 (variable) -#. Documentation/snippets/incipit.ly:209 (variable) -#. Documentation/snippets/incipit.ly:253 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:106 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:255 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:232 (variable) +#. Documentation/snippets/incipit.ly:212 (variable) +#. Documentation/snippets/incipit.ly:256 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:109 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:258 (context id) msgid "bassusNotes" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:238 (variable) -#. Documentation/snippets/incipit.ly:223 (variable) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:119 (variable) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:254 (variable) +#. Documentation/snippets/incipit.ly:226 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:122 (variable) msgid "bassusLyrics" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:249 (context id) -#. Documentation/snippets/incipit.ly:231 (context id) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (context id) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:265 (context id) +#. Documentation/snippets/incipit.ly:234 (context id) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:236 (context id) msgid "choirStaff" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:271 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:269 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) msgid "no bars in staves" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:274 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:290 (comment) msgid "incipit should not start with a start delimiter" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:280 (comment) -#. Documentation/snippets/incipit.ly:276 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:284 (comment) -msgid "no slurs" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:283 (comment) -#. Documentation/snippets/incipit.ly:278 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:286 (comment) -msgid "Comment in the below \\\"\\remove\\\" command to allow line" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:284 (comment) +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:296 (comment) +#. Documentation/snippets/incipit.ly:279 (comment) #. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:287 (comment) -msgid "breaking also at those barlines where a note overlaps" -msgstr "" - -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:285 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:288 (comment) -msgid "into the next bar. The command is commented out in this" +msgid "no slurs" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:286 (comment) -#. Documentation/snippets/incipit.ly:281 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) -msgid "short example score, but especially for large scores, you" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:299 (comment) +msgid "The command below can be commented out in" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:287 (comment) -#. Documentation/snippets/incipit.ly:282 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) -msgid "will typically yield better line breaking and thus improve" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:300 (comment) +msgid "short scores, but especially for large scores you" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:288 (comment) -#. Documentation/snippets/incipit.ly:283 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) -msgid "overall spacing if you comment in the following command." +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:301 (comment) +msgid "will typically yield better line breaking and improve" msgstr "" -#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:289 (comment) -#. Documentation/snippets/incipit.ly:284 (comment) -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) -msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +#. Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly:302 (comment) +msgid "overall spacing if you do not comment the command out." msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:70 (variable) +#. Documentation/snippets/anglican-psalm-template.ly:92 (variable) msgid "tick" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:74 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:96 (comment) msgid "Use markup to center the chant on the page" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:77 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:99 (comment) msgid "centered" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:117 (comment) -#. Documentation/snippets/hymn-template.ly:115 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:139 (comment) +#. Documentation/snippets/hymn-template.ly:126 (comment) msgid "End score" msgstr "" -#. Documentation/snippets/anglican-psalm-template.ly:119 (comment) +#. Documentation/snippets/anglican-psalm-template.ly:141 (comment) msgid "End markup" msgstr "" -#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:98 (variable) -#. Documentation/snippets/clusters.ly:25 (variable) +#. Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly:100 (variable) +#. Documentation/snippets/clusters.ly:28 (variable) msgid "fragment" msgstr "" -#. Documentation/snippets/asymmetric-slurs.ly:27 (variable) +#. Documentation/snippets/asymmetric-slurs.ly:30 (variable) msgid "slurNotes" msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:40 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:43 (comment) msgid "Default behavior" msgstr "" -#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:46 (comment) +#. Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly:49 (comment) msgid "Corrected to avoid collisions" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:23 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:28 (comment) msgid "%%%%%%% Cut here ----- Start 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:25 (comment) -msgid "PostScript -------------------------------" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:26 (variable) -msgid "pScript" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:30 (comment) +msgid "C with slash -------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:33 (comment) -msgid "change with B if you prefer" +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:31 (variable) +msgid "cWithSlash" msgstr "" #. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:34 (comment) -#, python-format -msgid "(B)show %%change with C if you prefer" -msgstr "" - -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:40 (comment) msgid "Span -----------------------------------" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:41 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:35 (comment) msgid "Syntax: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:42 (variable) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:36 (variable) msgid "bbarre" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:71 (comment) msgid "uncomment this line for make full barred" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:78 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:72 (comment) msgid "" "\\once \\override TextSpanner #'bound-details #'left #'text = \\markup { \\" -"\"B\\\" $str }" +"\"B\\\" #str }" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:82 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:76 (comment) msgid "%%%%%%% Cut here ----- End 'bbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:83 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:77 (comment) msgid "Copy and change the last line for full barred. Rename in 'fbarred.ly'" msgstr "" -#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:86 (comment) +#. Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly:80 (comment) msgid "Syntaxe: \\bbarre #\\\"text\\\" { notes } - text = any number of box" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:51 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:54 (comment) msgid "Set default beaming for all staves" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:59 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:62 (comment) msgid "Modify beaming for just this staff" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:64 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:67 (comment) msgid "Inherit beaming from Score context" msgstr "" -#. Documentation/snippets/beam-endings-in-score-context.ly:70 (comment) +#. Documentation/snippets/beam-endings-in-score-context.ly:73 (comment) msgid "Modify beaming for this voice only" msgstr "" -#. Documentation/snippets/beam-grouping-in-7-8-time.ly:54 (comment) +#. Documentation/snippets/beam-grouping-in-7-8-time.ly:57 (comment) msgid "rhythm 2-3-2" msgstr "" -#. Documentation/snippets/book-parts.ly:22 (comment) +#. Documentation/snippets/book-parts.ly:25 (comment) msgid "book paper, which is inherited by all children bookparts" msgstr "" -#. Documentation/snippets/book-parts.ly:25 (comment) +#. Documentation/snippets/book-parts.ly:28 (comment) msgid "Page footer: add a different part-tagline at part last page" msgstr "" -#. Documentation/snippets/book-parts.ly:29 (comment) +#. Documentation/snippets/book-parts.ly:32 (comment) msgid "Copyright header field only on book first page." msgstr "" -#. Documentation/snippets/book-parts.ly:33 (comment) +#. Documentation/snippets/book-parts.ly:36 (comment) msgid "Part tagline header field only on each part last page." msgstr "" -#. Documentation/snippets/book-parts.ly:37 (comment) +#. Documentation/snippets/book-parts.ly:40 (comment) msgid "Tagline header field only on book last page." msgstr "" -#. Documentation/snippets/book-parts.ly:44 (comment) +#. Documentation/snippets/book-parts.ly:47 (comment) msgid "book header, which is inherited by the first bookpart" msgstr "" -#. Documentation/snippets/book-parts.ly:53 (comment) +#. Documentation/snippets/book-parts.ly:56 (comment) msgid "a different page breaking function may be used on each part" msgstr "" -#. Documentation/snippets/breathing-signs.ly:20 (comment) +#. Documentation/snippets/breathing-signs.ly:23 (comment) msgid "this bar contains no \\breathe" msgstr "" -#. Documentation/snippets/breathing-signs.ly:22 (comment) +#. Documentation/snippets/breathing-signs.ly:25 (comment) msgid "Modern notation:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:23 (comment) +#. Documentation/snippets/breathing-signs.ly:26 (comment) msgid "by default, \\breathe uses the rcomma, just as if saying:" msgstr "" -#. Documentation/snippets/breathing-signs.ly:24 (comment) +#. Documentation/snippets/breathing-signs.ly:27 (comment) msgid "" "\\override BreathingSign #'text = #(make-musicglyph-markup \\\"scripts.rcomma" "\\\")" msgstr "" -#. Documentation/snippets/breathing-signs.ly:27 (comment) +#. Documentation/snippets/breathing-signs.ly:30 (comment) msgid "rvarcomma and lvarcomma are variations of the default rcomma and lcomma" msgstr "" -#. Documentation/snippets/breathing-signs.ly:28 (comment) +#. Documentation/snippets/breathing-signs.ly:31 (comment) msgid "N.B.: must use Staff context here, since we start a Voice below" msgstr "" -#. Documentation/snippets/breathing-signs.ly:32 (comment) +#. Documentation/snippets/breathing-signs.ly:35 (comment) msgid "vee" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:30 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:33 (comment) msgid "construct the symbol" msgstr "" -#. Documentation/snippets/caesura-railtracks-with-fermata.ly:39 (comment) +#. Documentation/snippets/caesura-railtracks-with-fermata.ly:42 (comment) msgid "set the breathe mark back to normal" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:29 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:32 (variable) msgid "hairpinWithCenteredText" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:41 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:44 (variable) msgid "hairpinMolto" msgstr "" -#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:42 (variable) +#. Documentation/snippets/center-text-below-hairpin-dynamics.ly:45 (variable) msgid "hairpinMore" msgstr "" -#. Documentation/snippets/changing--flageolet-mark-size.ly:44 (variable) -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:24 (variable) +#. Documentation/snippets/changing--flageolet-mark-size.ly:46 (variable) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:27 (variable) msgid "smallFlageolet" msgstr "" -#. Documentation/snippets/changing-the-ambitus-gap.ly:42 (comment) +#. Documentation/snippets/changing-the-ambitus-gap.ly:45 (comment) msgid "Default setting" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:36 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:39 (comment) msgid "The following is only here to print the names of the" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:37 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:40 (comment) msgid "chords styles; it can be removed if you do not need to" msgstr "" -#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:38 (comment) +#. Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly:41 (comment) msgid "print them." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:18 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:21 (comment) msgid "change for other default global staff size." msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:20 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:182 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:111 (comment) -#. Documentation/snippets/utf-8.ly:24 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:23 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:188 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) +#. Documentation/snippets/utf-8.ly:27 (comment) msgid "{" msgstr "" -#. Documentation/snippets/changing-the-default-text-font-family.ly:24 (comment) -#. Documentation/snippets/engravers-one-by-one.ly:184 (comment) -#. Documentation/snippets/expressive-headword.ly:32 (comment) -#. Documentation/snippets/expressive-headword.ly:33 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:112 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:242 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:206 (comment) -#. Documentation/snippets/utf-8.ly:38 (comment) +#. Documentation/snippets/changing-the-default-text-font-family.ly:27 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:190 (comment) +#. Documentation/snippets/expressive-headword.ly:35 (comment) +#. Documentation/snippets/expressive-headword.ly:36 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:247 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:228 (comment) +#. Documentation/snippets/utf-8.ly:41 (comment) msgid "}" msgstr "" -#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:32 (variable) +#. Documentation/snippets/changing-the-text-for-sustain-markings.ly:35 (variable) msgid "sustainNotes" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:35 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:49 (variable) msgid "stemOn" msgstr "" -#. Documentation/snippets/chant-or-psalms-notation.ly:36 (variable) +#. Documentation/snippets/chant-or-psalms-notation.ly:50 (variable) msgid "stemOff" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:35 (comment) +#. Documentation/snippets/chordchanges-for-fretboards.ly:48 (variable) +msgid "myChords" +msgstr "" + +#. Documentation/snippets/chord-glissando-in-tablature.ly:54 (variable) +msgid "myMusic" +msgstr "" + +#. Documentation/snippets/chord-name-exceptions.ly:49 (comment) msgid "modify maj9 and 6(add9)" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:36 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:50 (comment) msgid "Exception music is chords with markups" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:37 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:51 (variable) msgid "chExceptionMusic" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:42 (comment) +#. Documentation/snippets/chord-name-exceptions.ly:56 (comment) msgid "Convert music to list and prepend to existing exceptions." msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:43 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:57 (variable) msgid "chExceptions" msgstr "" -#. Documentation/snippets/chord-name-exceptions.ly:47 (variable) +#. Documentation/snippets/chord-name-exceptions.ly:61 (variable) msgid "theMusic" msgstr "" -#. Documentation/snippets/chordchanges-for-fretboards.ly:36 (variable) -msgid "myChords" -msgstr "" - -#. Documentation/snippets/chords-headword.ly:29 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:36 (variable) +#. Documentation/snippets/chords-headword.ly:24 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:39 (variable) msgid "theChords" msgstr "" -#. Documentation/snippets/chords-headword.ly:31 (comment) -#. Documentation/snippets/pitches-headword.ly:141 (comment) +#. Documentation/snippets/chords-headword.ly:26 (comment) +#. Documentation/snippets/pitches-headword.ly:136 (comment) msgid "\\break" msgstr "" -#. Documentation/snippets/chords-headword.ly:35 (variable) +#. Documentation/snippets/chords-headword.ly:30 (variable) msgid "verseOne" msgstr "" -#. Documentation/snippets/chords-headword.ly:42 (variable) +#. Documentation/snippets/chords-headword.ly:37 (variable) msgid "verseTwo" msgstr "" -#. Documentation/snippets/chords-headword.ly:81 (context id) +#. Documentation/snippets/chords-headword.ly:76 (context id) msgid "sop" msgstr "" -#. Documentation/snippets/clip-systems.ly:65 (variable) +#. Documentation/snippets/clip-systems.ly:68 (variable) msgid "origScore" msgstr "" -#. Documentation/snippets/clip-systems.ly:83 (comment) +#. Documentation/snippets/clip-systems.ly:86 (comment) msgid "Each clip-region is a (START . END) pair" msgstr "" -#. Documentation/snippets/clip-systems.ly:84 (comment) +#. Documentation/snippets/clip-systems.ly:87 (comment) msgid "where both are rhythmic-locations." msgstr "" -#. Documentation/snippets/clip-systems.ly:86 (comment) +#. Documentation/snippets/clip-systems.ly:89 (comment) msgid "(make-rhythmic-locations BAR-NUMBER NUM DEN)" msgstr "" -#. Documentation/snippets/clip-systems.ly:87 (comment) +#. Documentation/snippets/clip-systems.ly:90 (comment) msgid "means NUM/DEN whole-notes into bar numbered BAR-NUMBER" msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:18 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:21 (comment) msgid "Association list of pitches to colors." msgstr "" -#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:38 (comment) +#. Documentation/snippets/coloring-notes-depending-on-their-pitch.ly:41 (comment) msgid "Compare pitch and alteration (not octave)." msgstr "" -#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:27 (variable) +#. Documentation/snippets/combining-dynamics-with-markup-texts.ly:30 (variable) msgid "piuF" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:94 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:97 (variable) msgid "musicUp" msgstr "" -#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:101 (variable) +#. Documentation/snippets/combining-two-parts-on-the-same-staff.ly:104 (variable) msgid "musicDown" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:52 (comment) +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:55 (comment) msgid "show hairpin" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:54 (comment) -msgid "hide text span" +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:57 (comment) +msgid "hide text span" +msgstr "" + +#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:61 (comment) +msgid "show glissando" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:22 (variable) +#, fuzzy +msgid "ten" +msgstr "男" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:26 (variable) +msgid "fifty" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:30 (variable) +msgid "finger" +msgstr "" + +#. Documentation/snippets/creating-double-digit-fingerings.ly:41 (comment) +msgid "optional override to remove warnings for fingerings larger than 5" +msgstr "" + +#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:48 (variable) +msgid "parenF" +msgstr "" + +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:47 (comment) +msgid "the hidden measure and bar line" +msgstr "" + +#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:48 (comment) +msgid "\\cadenzaOn turns off automatic calculation of bar numbers" +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:31 (comment) +msgid "this is in half-spaces," +msgstr "" + +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:32 (comment) +msgid "so it makes stems 9.5 staffspaces long" msgstr "" -#. Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly:58 (comment) -msgid "show glissando" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:33 (comment) +msgid "stems are normally lengthened" msgstr "" -#. Documentation/snippets/creating-real-parenthesized-dynamics.ly:45 (variable) -msgid "parenF" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:34 (comment) +msgid "upwards, so here we must lower the stem by the amount" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:44 (comment) -msgid "the hidden measure and bar line" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:35 (comment) +msgid "equal to the lengthening - in this case (19 - 7) / 2" msgstr "" -#. Documentation/snippets/creating-simultaneous-rehearsal-marks.ly:45 (comment) -msgid "\\cadenzaOn turns off automatic calculation of bar numbers" +#. Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly:36 (comment) +msgid "(7 is default stem length)" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:44 (context id) -#. Documentation/snippets/jazz-combo-template.ly:256 (variable) -#. Documentation/snippets/screech-boink.ly:15 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:47 (context id) +#. Documentation/snippets/jazz-combo-template.ly:273 (variable) +#. Documentation/snippets/screech-and-boink.ly:18 (context id) msgid "up" msgstr "" -#. Documentation/snippets/cross-staff-tremolos.ly:49 (context id) -#. Documentation/snippets/jazz-combo-template.ly:262 (variable) -#. Documentation/snippets/screech-boink.ly:45 (context id) +#. Documentation/snippets/cross-staff-tremolos.ly:52 (context id) +#. Documentation/snippets/jazz-combo-template.ly:279 (variable) +#. Documentation/snippets/screech-and-boink.ly:48 (context id) msgid "down" msgstr "" -#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:55 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:27 (comment) +#. Documentation/snippets/customizing-fretboard-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:30 (comment) msgid "Set global properties of fret diagram" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:56 (context id) -#. Documentation/snippets/formatting-lyrics-syllables.ly:22 (variable) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:25 (context id) -#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:78 (context id) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:58 (context id) +#. Documentation/snippets/formatting-lyrics-syllables.ly:33 (variable) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:28 (context id) +#. Documentation/snippets/piano-template-with-melody-and-lyrics.ly:89 (context id) msgid "mel" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:65 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:67 (comment) msgid "C major for guitar, no barre, using defaults" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:66 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:116 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:68 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) msgid "terse style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:69 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:91 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:56 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:77 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:156 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:177 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:255 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:276 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:59 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:80 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:159 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:180 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:258 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:279 (comment) msgid "C major for guitar, barred on third fret" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:70 (comment) -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:92 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:79 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:106 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:157 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:179 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:206 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:256 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:278 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:305 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:82 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:109 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:182 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:209 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:281 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:308 (comment) msgid "verbose style" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:71 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:73 (comment) msgid "size 1.0" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:72 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:58 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:158 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:257 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:61 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:161 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:260 (comment) msgid "roman fret label, finger labels below string, straight barre" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:74 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:76 (comment) msgid "standard size" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:93 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:95 (comment) msgid "landscape orientation, arabic numbers, M for mute string" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:94 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:96 (comment) msgid "no barre, fret label down or left, small mute label font" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:115 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:128 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:228 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:327 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:131 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:231 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:330 (comment) msgid "simple D chord" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:117 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:119 (comment) msgid "larger dots, centered dots, fewer frets" msgstr "" -#. Documentation/snippets/customizing-markup-fret-diagrams.ly:118 (comment) +#. Documentation/snippets/customizing-markup-fret-diagrams.ly:120 (comment) msgid "label below string" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:39 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:42 (comment) msgid "Grob utilities" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:41 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:44 (comment) msgid "" "These are literal rewrites of some C++ methods used by the ambitus engraver." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:76 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) msgid "Ambitus data structure" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:79 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) msgid "The class holds the various grobs that are created" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:80 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) msgid "to print an ambitus:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:81 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) msgid "- ambitus-group: the grob that groups all the components of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:82 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) msgid "(Ambitus grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:83 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) msgid "- ambitus-line: the vertical line between the upper and lower ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:84 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) msgid "notes (AmbitusLine grob);" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:85 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) msgid "- ambitus-up-note and ambitus-down-note: the note head and accidental" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:86 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) msgid "for the lower and upper note of the ambitus (see class" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:87 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) msgid "below)." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:88 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) msgid "The other slots define the key and clef context of the engraver:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:89 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) msgid "- start-c0: position of middle c at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:90 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) msgid "is used to place the ambitus notes according to their pitch;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:91 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:94 (comment) msgid "- start-key-sig: the key signature at the beginning of the piece. It" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:92 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:95 (comment) msgid "is used to determine if accidentals shall be printed next to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:93 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:96 (comment) msgid "notes." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:107 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:110 (comment) msgid "Accessor for the lower and upper note data of an ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:115 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) msgid "The class holds the grobs that are specific to ambitus" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:116 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) msgid "(lower and upper) notes:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:117 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) msgid "- head: an AmbitusNoteHead grob;" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:118 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) msgid "- accidental: an AmbitusAccidental grob, to be possibly printed next" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:119 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) msgid "to the ambitus note head." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:120 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) msgid "Moreover:" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:121 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:124 (comment) msgid "- pitch is the absolute pitch of the note" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:122 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:125 (comment) msgid "- cause is the note event that causes this ambitus note, i.e. the lower" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:123 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:126 (comment) msgid "or upper note of the considered music sequence." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:136 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:139 (comment) msgid "Ambitus engraving logics" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:138 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:141 (comment) msgid "Rewrite of the code from @file{lily/ambitus-engraver.cc}." msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:307 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:310 (comment) msgid "Ambitus engraver definition" msgstr "" -#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:332 (comment) +#. Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly:335 (comment) msgid "Example" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:84 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (comment) msgid "add FretBoards for the Cuatro" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:85 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:90 (comment) msgid "Note: This section could be put into a separate file" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:86 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (comment) msgid "predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:87 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (comment) msgid "and \\included into each of your compositions" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:89 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) msgid "cuatroTuning" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:91 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:99 (variable) msgid "dSix" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:92 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:100 (variable) msgid "dMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:93 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:101 (variable) msgid "aMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:94 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:102 (variable) msgid "dMajSeven" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:95 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:103 (variable) msgid "gMajor" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:113 (comment) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:121 (comment) msgid "end of potential include file /predefined-cuatro-fretboards.ly" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:118 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:126 (variable) msgid "primerosNames" msgstr "" -#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:122 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:130 (variable) msgid "primeros" msgstr "" -#. Documentation/snippets/demo-midiinstruments.ly:24 (variable) +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:153 (comment) +msgid "\\override FretBoard" +msgstr "" + +#. Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly:154 (comment) +msgid "#'(fret-diagram-details string-count) = #'4" +msgstr "" + +#. Documentation/snippets/demo-midiinstruments.ly:27 (variable) msgid "baseMelody" msgstr "" -#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:73 (comment) +#. Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly:76 (comment) msgid "Must be lower than the actual number of staff lines" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:26 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) msgid "fixA" msgstr "" -#. Documentation/snippets/displaying-complex-chords.ly:29 (variable) +#. Documentation/snippets/displaying-complex-chords.ly:32 (variable) msgid "fixB" msgstr "" -#. Documentation/snippets/displaying-grob-ancestry.ly:197 (comment) +#. Documentation/snippets/displaying-grob-ancestry.ly:200 (comment) msgid "\\\" (make-string 36 #\\-))" msgstr "" -#. Documentation/snippets/double-glissando.ly:21 (comment) +#. Documentation/snippets/double-glissando.ly:24 (comment) msgid "new voice ( = \\voiceOne), hidden" msgstr "" -#. Documentation/snippets/double-glissando.ly:23 (comment) +#. Documentation/snippets/double-glissando.ly:26 (comment) msgid "attach glissando to note heads" msgstr "" -#. Documentation/snippets/double-glissando.ly:28 (comment) +#. Documentation/snippets/double-glissando.ly:31 (comment) msgid "original voice with chords rearranged so that" msgstr "" -#. Documentation/snippets/double-glissando.ly:29 (comment) +#. Documentation/snippets/double-glissando.ly:32 (comment) msgid "glissando is attached to a & c" msgstr "" -#. Documentation/snippets/drawing-circles-around-note-heads.ly:16 (variable) +#. Documentation/snippets/drawing-circles-around-note-heads.ly:19 (variable) msgid "circle" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:54 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:57 (comment) msgid "" "Two functions for (de)crescendo spanners where you can explicitly give the" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:55 (comment) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:58 (comment) msgid "spanner text." msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:56 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:59 (variable) msgid "mycresc" msgstr "" -#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:62 (variable) +#. Documentation/snippets/dynamics-custom-text-spanner-postfix.ly:65 (variable) msgid "mydecresc" msgstr "" @@ -7298,1596 +8648,1691 @@ msgstr "" msgid "crpoco" msgstr "" -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:67 (comment) -msgid "" -"Redefine the existing \\cresc, \\dim and \\decresc commands to use postfix " -"syntax" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:68 (variable) -msgid "cresc" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:73 (variable) -msgid "dim" -msgstr "" - -#. Documentation/snippets/dynamics-text-spanner-postfix.ly:78 (variable) -msgid "decresc" -msgstr "" - -#. Documentation/snippets/editorial-headword.ly:30 (comment) +#. Documentation/snippets/editorial-headword.ly:25 (comment) msgid "NR 1.7 Editorial annotations" msgstr "" -#. Documentation/snippets/editorial-headword.ly:32 (comment) +#. Documentation/snippets/editorial-headword.ly:27 (comment) msgid "Beethoven, Op. 31, No. 3" msgstr "" -#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/editorial-headword.ly:28 (comment) msgid "Piano sonata 18, Movt II, Scherzo" msgstr "" -#. Documentation/snippets/editorial-headword.ly:34 (comment) +#. Documentation/snippets/editorial-headword.ly:29 (comment) msgid "Measures 9 - 14" msgstr "" -#. Documentation/snippets/editorial-headword.ly:38 (comment) -#. Documentation/snippets/expressive-headword.ly:37 (comment) -#. Documentation/snippets/pitches-headword.ly:38 (comment) -#. Documentation/snippets/rhythms-headword.ly:39 (comment) +#. Documentation/snippets/editorial-headword.ly:33 (comment) +#. Documentation/snippets/expressive-headword.ly:40 (comment) +#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:42 (comment) msgid "RH Staff" msgstr "" -#. Documentation/snippets/editorial-headword.ly:76 (comment) -#. Documentation/snippets/expressive-headword.ly:169 (comment) -#. Documentation/snippets/pitches-headword.ly:111 (comment) -#. Documentation/snippets/rhythms-headword.ly:128 (comment) +#. Documentation/snippets/editorial-headword.ly:71 (comment) +#. Documentation/snippets/expressive-headword.ly:172 (comment) +#. Documentation/snippets/pitches-headword.ly:106 (comment) +#. Documentation/snippets/rhythms-headword.ly:131 (comment) msgid "LH Staff" msgstr "" -#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:25 (comment) +#. Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly:28 (comment) msgid "PostScript is a registered trademark of Adobe Systems Inc." msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:70 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:76 (comment) msgid "sample music" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:71 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:77 (variable) msgid "topVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:79 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:85 (variable) msgid "botVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:87 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:93 (variable) msgid "hoom" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:98 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:104 (variable) msgid "pah" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:108 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:114 (comment) msgid "setup for Request->Element conversion. Guru-only" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:111 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:209 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:222 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:278 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:292 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:117 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:215 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:228 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:284 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:298 (variable) msgid "MyStaff" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:139 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:145 (comment) msgid "explicitly set instrumentName, so we don't get" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:140 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:146 (comment) msgid "weird effects when doing instrument names for" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:141 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:147 (comment) msgid "piano staves" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:150 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:236 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:249 (variable) -#. Documentation/snippets/engravers-one-by-one.ly:262 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:156 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:242 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:255 (variable) +#. Documentation/snippets/engravers-one-by-one.ly:268 (variable) msgid "MyVoice" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:165 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:171 (comment) msgid "must come before all" msgstr "" -#. Documentation/snippets/engravers-one-by-one.ly:175 (comment) +#. Documentation/snippets/engravers-one-by-one.ly:181 (comment) msgid "\\consists \\\"Rest_engraver\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:23 (comment) +#. Documentation/snippets/expressive-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 49 no. 1" msgstr "" -#. Documentation/snippets/expressive-headword.ly:24 (comment) +#. Documentation/snippets/expressive-headword.ly:27 (comment) msgid "Piano sonata 19 - \\\"Leichte Sonate\\\"" msgstr "" -#. Documentation/snippets/expressive-headword.ly:25 (comment) +#. Documentation/snippets/expressive-headword.ly:28 (comment) msgid "measures 1 - 12" msgstr "" -#. Documentation/snippets/expressive-headword.ly:27 (comment) +#. Documentation/snippets/expressive-headword.ly:30 (comment) msgid "\\layout {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:28 (comment) +#. Documentation/snippets/expressive-headword.ly:31 (comment) msgid "\\context {" msgstr "" -#. Documentation/snippets/expressive-headword.ly:29 (comment) +#. Documentation/snippets/expressive-headword.ly:32 (comment) msgid "\\Score" msgstr "" -#. Documentation/snippets/expressive-headword.ly:30 (comment) +#. Documentation/snippets/expressive-headword.ly:33 (comment) msgid "\\override SpacingSpanner #'base-shortest-duration =" msgstr "" -#. Documentation/snippets/expressive-headword.ly:31 (comment) +#. Documentation/snippets/expressive-headword.ly:34 (comment) msgid "#(ly:make-moment 1 20)" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:31 (comment) +#. Documentation/snippets/figured-bass-headword.ly:26 (comment) msgid "Arcangelo Corelli, 12 Sonate da Camera, Op. 2" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:32 (comment) +#. Documentation/snippets/figured-bass-headword.ly:27 (comment) msgid "Sonata II, Allemanda" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:33 (comment) +#. Documentation/snippets/figured-bass-headword.ly:28 (comment) msgid "measures 1 - 88" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:34 (comment) +#. Documentation/snippets/figured-bass-headword.ly:29 (comment) msgid "Coded by Neil Puttock; modified by Carl Sorensen" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:36 (variable) +#. Documentation/snippets/figured-bass-headword.ly:31 (variable) msgid "extendOn" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:37 (variable) +#. Documentation/snippets/figured-bass-headword.ly:32 (variable) msgid "extendOff" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:45 (context id) +#. Documentation/snippets/figured-bass-headword.ly:40 (context id) msgid "violinoI" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:63 (context id) +#. Documentation/snippets/figured-bass-headword.ly:58 (context id) msgid "violinoII" msgstr "" -#. Documentation/snippets/figured-bass-headword.ly:81 (context id) +#. Documentation/snippets/figured-bass-headword.ly:76 (context id) msgid "violone" msgstr "" -#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:34 (variable) -#. Documentation/snippets/recorder-fingering-chart.ly:40 (variable) +#. Documentation/snippets/fingering-symbols-for-wind-instruments.ly:37 (variable) +#. Documentation/snippets/recorder-fingering-chart.ly:41 (variable) msgid "centermarkup" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:94 (comment) +#. Documentation/snippets/flamenco-notation.ly:97 (comment) msgid "Cut here ----- Start 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:96 (comment) +#. Documentation/snippets/flamenco-notation.ly:99 (comment) msgid "Text indicators" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:97 (variable) +#. Documentation/snippets/flamenco-notation.ly:100 (variable) msgid "abanico" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:98 (variable) +#. Documentation/snippets/flamenco-notation.ly:101 (variable) msgid "rasgueaso" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:99 (variable) +#. Documentation/snippets/flamenco-notation.ly:102 (variable) msgid "alzapua" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:101 (comment) +#. Documentation/snippets/flamenco-notation.ly:104 (comment) msgid "Finger stroke symbols" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:102 (variable) +#. Documentation/snippets/flamenco-notation.ly:105 (variable) msgid "strokeUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:112 (variable) +#. Documentation/snippets/flamenco-notation.ly:115 (variable) msgid "strokeDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:122 (comment) +#. Documentation/snippets/flamenco-notation.ly:125 (comment) msgid "Golpe symbol" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:123 (variable) +#. Documentation/snippets/flamenco-notation.ly:126 (variable) msgid "golpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:137 (variable) +#. Documentation/snippets/flamenco-notation.ly:140 (variable) msgid "strokeUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:138 (variable) +#. Documentation/snippets/flamenco-notation.ly:141 (variable) msgid "iUpGolpe" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:140 (comment) +#. Documentation/snippets/flamenco-notation.ly:143 (comment) msgid "Strokes for all fingers" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:141 (variable) +#. Documentation/snippets/flamenco-notation.ly:144 (variable) msgid "pUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:142 (variable) +#. Documentation/snippets/flamenco-notation.ly:145 (variable) msgid "pDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:143 (variable) +#. Documentation/snippets/flamenco-notation.ly:146 (variable) msgid "iUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:144 (variable) +#. Documentation/snippets/flamenco-notation.ly:147 (variable) msgid "iDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:145 (variable) +#. Documentation/snippets/flamenco-notation.ly:148 (variable) msgid "mUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:146 (variable) +#. Documentation/snippets/flamenco-notation.ly:149 (variable) msgid "mDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:147 (variable) +#. Documentation/snippets/flamenco-notation.ly:150 (variable) msgid "aUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:148 (variable) +#. Documentation/snippets/flamenco-notation.ly:151 (variable) msgid "aDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:149 (variable) +#. Documentation/snippets/flamenco-notation.ly:152 (variable) msgid "xUp" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:150 (variable) +#. Documentation/snippets/flamenco-notation.ly:153 (variable) msgid "xDown" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:153 (comment) +#. Documentation/snippets/flamenco-notation.ly:156 (comment) msgid "Just handy :)" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:154 (variable) +#. Documentation/snippets/flamenco-notation.ly:157 (variable) msgid "tupletOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:159 (variable) +#. Documentation/snippets/flamenco-notation.ly:162 (variable) msgid "tupletsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:164 (variable) +#. Documentation/snippets/flamenco-notation.ly:167 (variable) msgid "tupletsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:169 (variable) +#. Documentation/snippets/flamenco-notation.ly:172 (variable) msgid "headsOff" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:175 (variable) +#. Documentation/snippets/flamenco-notation.ly:178 (variable) msgid "headsOn" msgstr "" -#. Documentation/snippets/flamenco-notation.ly:181 (comment) +#. Documentation/snippets/flamenco-notation.ly:184 (comment) msgid "Cut here ----- End 'flamenco.ly'" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:157 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:160 (comment) msgid "Example 1" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:163 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:166 (comment) msgid "Example 2" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:169 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:172 (comment) msgid "Example 3" msgstr "" -#. Documentation/snippets/flat-flags-and-beam-nibs.ly:177 (comment) +#. Documentation/snippets/flat-flags-and-beam-nibs.ly:180 (comment) msgid "Example 4" msgstr "" -#. Documentation/snippets/flute-slap-notation.ly:18 (variable) +#. Documentation/snippets/flute-slap-notation.ly:21 (variable) msgid "slap" msgstr "" -#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:20 (variable) +#. Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly:23 (variable) msgid "example" msgstr "" -#. Documentation/snippets/formatting-lyrics-syllables.ly:17 (comment) -msgid "" -"Tip taken from http://lists.gnu.org/archive/html/lilypond-user/2007-12/" -"msg00215.html" +#. Documentation/snippets/formatting-lyrics-syllables.ly:34 (variable) +msgid "lyr" msgstr "" -#. Documentation/snippets/formatting-lyrics-syllables.ly:23 (variable) -msgid "lyr" +#. Documentation/snippets/fretboards-alternate-tables.ly:92 (comment) +msgid "Make a blank new fretboard table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:95 (comment) +msgid "Make a new fretboard table as a copy of default-fret-table" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:98 (comment) +msgid "Add a chord to custom-fretboard-table-one" +msgstr "" + +#. Documentation/snippets/fretboards-alternate-tables.ly:104 (comment) +msgid "Add a chord to custom-fretboard-table-two" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:33 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:36 (comment) msgid "A chord for ukulele" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:43 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:46 (comment) msgid "A chord for ukulele, with formatting defined in definition string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:44 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:47 (comment) msgid "1.2 * size, 4 strings, 4 frets, fingerings below string" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:45 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:48 (comment) msgid "dot radius .35 of fret spacing, dot position 0.55 of fret spacing" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:54 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:57 (comment) msgid "These chords will be in normal orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:60 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:160 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:259 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:63 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:84 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:111 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:163 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:184 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:211 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:262 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:283 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:310 (comment) #, python-format msgid "110% of default size" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:78 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:178 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:277 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:81 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:181 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:280 (comment) msgid "Double barre used to test barre function" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:105 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:205 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:304 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:108 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:208 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:307 (comment) msgid "C major for guitar, with capo on third fret" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:140 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:239 (comment) -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:338 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:143 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:242 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:341 (comment) msgid "simple D chord, large top fret thickness" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:152 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:155 (comment) msgid "These chords will be in landscape orientation" msgstr "" -#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:251 (comment) +#. Documentation/snippets/fret-diagrams-explained-and-developed.ly:254 (comment) msgid "These chords will be in opposing-landscape orientation" msgstr "" -#. Documentation/snippets/fretboards-alternate-tables.ly:49 (comment) -msgid "Make a blank new fretboard table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:52 (comment) -msgid "Make a new fretboard table as a copy of default-fret-table" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:55 (comment) -msgid "Add a chord to custom-fretboard-table-one" -msgstr "" - -#. Documentation/snippets/fretboards-alternate-tables.ly:61 (comment) -msgid "Add a chord to custom-fretboard-table-two" -msgstr "" - -#. Documentation/snippets/fretted-headword.ly:35 (comment) +#. Documentation/snippets/fretted-headword.ly:36 (comment) msgid "shortcuts" msgstr "" -#. Documentation/snippets/fretted-headword.ly:36 (comment) +#. Documentation/snippets/fretted-headword.ly:37 (comment) msgid "fingering orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:37 (variable) +#. Documentation/snippets/fretted-headword.ly:38 (variable) msgid "sfol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:38 (variable) +#. Documentation/snippets/fretted-headword.ly:39 (variable) msgid "sfor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:39 (variable) +#. Documentation/snippets/fretted-headword.ly:40 (variable) msgid "sfod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:40 (variable) +#. Documentation/snippets/fretted-headword.ly:41 (variable) msgid "sfou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:42 (comment) +#. Documentation/snippets/fretted-headword.ly:43 (comment) msgid "string number orientations" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (variable) +#. Documentation/snippets/fretted-headword.ly:44 (variable) msgid "ssnol" msgstr "" -#. Documentation/snippets/fretted-headword.ly:43 (comment) +#. Documentation/snippets/fretted-headword.ly:44 (comment) msgid "(down right up)" msgstr "" -#. Documentation/snippets/fretted-headword.ly:44 (variable) +#. Documentation/snippets/fretted-headword.ly:45 (variable) msgid "ssnou" msgstr "" -#. Documentation/snippets/fretted-headword.ly:45 (variable) +#. Documentation/snippets/fretted-headword.ly:46 (variable) msgid "ssnod" msgstr "" -#. Documentation/snippets/fretted-headword.ly:46 (variable) +#. Documentation/snippets/fretted-headword.ly:47 (variable) msgid "ssnor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:48 (comment) +#. Documentation/snippets/fretted-headword.ly:49 (comment) msgid "define fingering offset" msgstr "" -#. Documentation/snippets/fretted-headword.ly:49 (variable) +#. Documentation/snippets/fretted-headword.ly:50 (variable) msgid "FO" msgstr "" -#. Documentation/snippets/fretted-headword.ly:54 (comment) +#. Documentation/snippets/fretted-headword.ly:55 (comment) msgid "markups" msgstr "" -#. Documentation/snippets/fretted-headword.ly:55 (variable) +#. Documentation/snippets/fretted-headword.ly:56 (variable) msgid "rit" msgstr "" -#. Documentation/snippets/fretted-headword.ly:56 (variable) +#. Documentation/snippets/fretted-headword.ly:57 (variable) msgid "dimin" msgstr "" -#. Documentation/snippets/fretted-headword.ly:57 (variable) +#. Documentation/snippets/fretted-headword.ly:58 (variable) msgid "andantino" msgstr "" -#. Documentation/snippets/fretted-headword.ly:58 (variable) +#. Documentation/snippets/fretted-headword.ly:59 (variable) msgid "benmarcato" msgstr "" -#. Documentation/snippets/fretted-headword.ly:59 (variable) +#. Documentation/snippets/fretted-headword.ly:60 (variable) msgid "pdolce" msgstr "" -#. Documentation/snippets/fretted-headword.ly:61 (comment) +#. Documentation/snippets/fretted-headword.ly:62 (comment) msgid "THE MUSIC %%%" msgstr "" -#. Documentation/snippets/fretted-headword.ly:73 (comment) -#. Documentation/snippets/fretted-headword.ly:112 (comment) +#. Documentation/snippets/fretted-headword.ly:74 (comment) +#. Documentation/snippets/fretted-headword.ly:113 (comment) msgid "m. 1" msgstr "" -#. Documentation/snippets/fretted-headword.ly:79 (comment) +#. Documentation/snippets/fretted-headword.ly:80 (comment) msgid "m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:81 (comment) -#. Documentation/snippets/fretted-headword.ly:117 (comment) +#. Documentation/snippets/fretted-headword.ly:82 (comment) +#. Documentation/snippets/fretted-headword.ly:118 (comment) msgid "m. 3" msgstr "" -#. Documentation/snippets/fretted-headword.ly:82 (comment) -#. Documentation/snippets/fretted-headword.ly:119 (comment) +#. Documentation/snippets/fretted-headword.ly:83 (comment) +#. Documentation/snippets/fretted-headword.ly:120 (comment) msgid "m. 4" msgstr "" -#. Documentation/snippets/fretted-headword.ly:86 (comment) -#. Documentation/snippets/fretted-headword.ly:124 (comment) +#. Documentation/snippets/fretted-headword.ly:87 (comment) +#. Documentation/snippets/fretted-headword.ly:125 (comment) msgid "m. 5" msgstr "" -#. Documentation/snippets/fretted-headword.ly:89 (comment) +#. Documentation/snippets/fretted-headword.ly:90 (comment) msgid "end of m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:92 (comment) -#. Documentation/snippets/fretted-headword.ly:129 (comment) +#. Documentation/snippets/fretted-headword.ly:93 (comment) +#. Documentation/snippets/fretted-headword.ly:130 (comment) msgid "m. 7" msgstr "" -#. Documentation/snippets/fretted-headword.ly:95 (comment) +#. Documentation/snippets/fretted-headword.ly:96 (comment) msgid "beg of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:96 (comment) +#. Documentation/snippets/fretted-headword.ly:97 (comment) msgid "end of m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:98 (comment) +#. Documentation/snippets/fretted-headword.ly:99 (comment) msgid "end of m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:100 (comment) -#. Documentation/snippets/fretted-headword.ly:136 (comment) +#. Documentation/snippets/fretted-headword.ly:101 (comment) +#. Documentation/snippets/fretted-headword.ly:137 (comment) msgid "m. 10" msgstr "" -#. Documentation/snippets/fretted-headword.ly:102 (comment) +#. Documentation/snippets/fretted-headword.ly:103 (comment) msgid "beg of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:104 (comment) +#. Documentation/snippets/fretted-headword.ly:105 (comment) msgid "end of m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:114 (comment) +#. Documentation/snippets/fretted-headword.ly:115 (comment) msgid "beg m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:115 (comment) +#. Documentation/snippets/fretted-headword.ly:116 (comment) msgid "end m. 2" msgstr "" -#. Documentation/snippets/fretted-headword.ly:121 (comment) +#. Documentation/snippets/fretted-headword.ly:122 (comment) msgid "new section starts here in A minor" msgstr "" -#. Documentation/snippets/fretted-headword.ly:126 (comment) +#. Documentation/snippets/fretted-headword.ly:127 (comment) msgid "beg m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:127 (comment) +#. Documentation/snippets/fretted-headword.ly:128 (comment) msgid "end m. 6" msgstr "" -#. Documentation/snippets/fretted-headword.ly:131 (comment) +#. Documentation/snippets/fretted-headword.ly:132 (comment) msgid "m. 8" msgstr "" -#. Documentation/snippets/fretted-headword.ly:133 (comment) +#. Documentation/snippets/fretted-headword.ly:134 (comment) msgid "beg m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:134 (comment) +#. Documentation/snippets/fretted-headword.ly:135 (comment) msgid "end m. 9" msgstr "" -#. Documentation/snippets/fretted-headword.ly:138 (comment) +#. Documentation/snippets/fretted-headword.ly:139 (comment) msgid "m. 11" msgstr "" -#. Documentation/snippets/fretted-headword.ly:142 (context id) -#. Documentation/snippets/jazz-combo-template.ly:182 (variable) -#. Documentation/snippets/jazz-combo-template.ly:292 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:60 (context id) -#. Documentation/snippets/polyphony-in-tablature.ly:65 (context id) +#. Documentation/snippets/fretted-headword.ly:143 (context id) +#. Documentation/snippets/jazz-combo-template.ly:199 (variable) +#. Documentation/snippets/jazz-combo-template.ly:309 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:62 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:67 (context id) msgid "guitar" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:29 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:40 (variable) +msgid "pinchedHarmonics" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:54 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:73 (comment) +msgid "artificial harmonics (AH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:59 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:77 (comment) +msgid "pinched harmonics (PH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:64 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:81 (comment) +msgid "tapped harmonics (TH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:68 (comment) +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:85 (comment) +msgid "touch harmonics (TCH)" +msgstr "" + +#. Documentation/snippets/fretted-string-harmonics-in-tablature.ly:72 (variable) +msgid "frettedStrings" +msgstr "" + +#. Documentation/snippets/generating-custom-flags.ly:35 (comment) msgid "Create a flag stencil by looking up the glyph from the font" msgstr "" -#. Documentation/snippets/generating-custom-flags.ly:43 (variable) +#. Documentation/snippets/generating-custom-flags.ly:50 (variable) msgid "snippetexamplenotes" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:53 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:56 (comment) msgid "this moves them up one staff space from the default position" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:71 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:74 (comment) msgid "set up grids" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:73 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:76 (comment) msgid "set the grid interval to one quarter note" msgstr "" -#. Documentation/snippets/grid-lines--changing-their-appearance.ly:79 (comment) +#. Documentation/snippets/grid-lines--changing-their-appearance.ly:82 (comment) msgid "this moves them to the right half a staff space" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:38 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:41 (comment) msgid "hides staff and notes so that only the grid lines are visible" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:45 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:48 (comment) msgid "dummy notes to force regular note spacing" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:61 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:64 (comment) msgid "center grid lines horizontally below note heads" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:68 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:71 (comment) msgid "set line length and positioning:" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:69 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:72 (comment) msgid "two staff spaces above center line on hidden staff" msgstr "" -#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:70 (comment) +#. Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly:73 (comment) msgid "to four spaces below center line on visible staff" msgstr "" -#. Documentation/snippets/guitar-slides.ly:33 (comment) +#. Documentation/snippets/guitar-slides.ly:36 (comment) msgid "Hide fret number: useful to draw slide into/from a casual point of" msgstr "" -#. Documentation/snippets/guitar-slides.ly:34 (comment) +#. Documentation/snippets/guitar-slides.ly:37 (comment) msgid "the fretboard." msgstr "" -#. Documentation/snippets/guitar-slides.ly:35 (variable) +#. Documentation/snippets/guitar-slides.ly:38 (variable) msgid "hideFretNumber" msgstr "" -#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:48 (variable) +#. Documentation/snippets/heavily-customized-polymetric-time-signatures.ly:51 (variable) msgid "drum" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:56 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (comment) msgid "Solution 1: Using a simple markup with a particular halign value" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:57 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:60 (comment) msgid "Drawback: It's a markup, not a dynamic command, so \\dynamicDown" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:58 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) msgid "etc. will have no effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:59 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (variable) msgid "semppMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:61 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (comment) msgid "Solution 2: Using a dynamic script & shifting with" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:62 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:65 (comment) msgid "\\once \\override ... #'X-offset = .." msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:63 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:66 (comment) msgid "Drawback: \\once \\override needed for every invocation" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:64 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:67 (variable) msgid "semppK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:71 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (comment) msgid "Solution 3: Padding the dynamic script so the center-alignment" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:72 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:75 (comment) msgid "puts it at the correct position" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:73 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:76 (comment) msgid "" "Drawback: the padding really reserves the space, nothing else can be there" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:74 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:77 (variable) msgid "semppT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:82 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) msgid "Solution 4: Dynamic, setting the dimensions of the additional text to 0" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:83 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) msgid "Drawback: To lilypond \\\"sempre\\\" has no extent, so it might put" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:84 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (comment) msgid "other stuff there => collisions" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:85 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:88 (comment) msgid "Drawback: Also, there seems to be some spacing, so it's not exactly the" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:86 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:89 (comment) msgid "same alignment as without the additional text" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:87 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:90 (variable) msgid "semppM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:96 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:99 (comment) msgid "Solution 5: Dynamic with explicit shifting inside the scheme function" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:97 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:100 (variable) msgid "semppG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:105 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) msgid "Solution 6: Dynamic with explicit alignment. This has only effect" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:106 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) msgid "if one sets X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:107 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (comment) msgid "Drawback: One needs to set DynamicText #'X-offset!" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:108 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:111 (comment) msgid "Drawback: Aligned at the right edge of the additional text," msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:109 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:112 (comment) msgid "not at the center of pp" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:110 (variable) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:113 (variable) msgid "semppMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:118 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:121 (context id) msgid "s" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:125 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:128 (context id) msgid "sMarkup" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:132 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:135 (context id) msgid "sK" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:143 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:146 (context id) msgid "sT" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:150 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:153 (context id) msgid "sM" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:157 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:160 (context id) msgid "sG" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:164 (context id) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:167 (context id) msgid "sMII" msgstr "" -#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:168 (comment) +#. Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly:171 (comment) msgid "Setting to ##f (false) gives the same result" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:29 (variable) -#. Documentation/snippets/score-for-diatonic-accordion.ly:62 (variable) -#. Documentation/snippets/showing-chords-at-changes.ly:34 (variable) -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:60 (variable) -#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:59 (variable) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:67 (variable) +#. Documentation/snippets/showing-chords-at-changes.ly:48 (variable) +#. Documentation/snippets/single-staff-template-with-notes-and-chords.ly:69 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly:72 (variable) msgid "harmonies" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:32 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:35 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:38 (comment) msgid "THIS LINE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:45 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) msgid "THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM" msgstr "" -#. Documentation/snippets/how-to-change-fret-diagram-position.ly:48 (comment) +#. Documentation/snippets/how-to-change-fret-diagram-position.ly:51 (comment) msgid "HERE IS THE SECOND METHOD" msgstr "" -#. Documentation/snippets/hymn-template.ly:50 (variable) +#. Documentation/snippets/hymn-template.ly:61 (variable) msgid "Timeline" msgstr "" -#. Documentation/snippets/hymn-template.ly:82 (comment) +#. Documentation/snippets/hymn-template.ly:93 (comment) msgid "Start score" msgstr "" -#. Documentation/snippets/hymn-template.ly:84 (comment) +#. Documentation/snippets/hymn-template.ly:95 (comment) msgid "Start pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:85 (comment) +#. Documentation/snippets/hymn-template.ly:96 (comment) msgid "Start Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:88 (comment) +#. Documentation/snippets/hymn-template.ly:99 (comment) msgid "Start Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:92 (comment) +#. Documentation/snippets/hymn-template.ly:103 (comment) msgid "End Voice = \\\"Soprano\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:93 (comment) +#. Documentation/snippets/hymn-template.ly:104 (comment) msgid "Start Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:97 (comment) +#. Documentation/snippets/hymn-template.ly:108 (comment) msgid "End Voice = \\\"Alto\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:98 (comment) +#. Documentation/snippets/hymn-template.ly:109 (comment) msgid "End Staff = RH" msgstr "" -#. Documentation/snippets/hymn-template.ly:99 (comment) +#. Documentation/snippets/hymn-template.ly:110 (comment) msgid "Start Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:102 (comment) +#. Documentation/snippets/hymn-template.ly:113 (comment) msgid "Start Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:106 (comment) +#. Documentation/snippets/hymn-template.ly:117 (comment) msgid "End Voice = \\\"Tenor\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:107 (comment) +#. Documentation/snippets/hymn-template.ly:118 (comment) msgid "Start Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:111 (comment) +#. Documentation/snippets/hymn-template.ly:122 (comment) msgid "End Voice = \\\"Bass\\\"" msgstr "" -#. Documentation/snippets/hymn-template.ly:112 (comment) +#. Documentation/snippets/hymn-template.ly:123 (comment) msgid "End Staff = LH" msgstr "" -#. Documentation/snippets/hymn-template.ly:113 (comment) +#. Documentation/snippets/hymn-template.ly:124 (comment) msgid "End pianostaff" msgstr "" -#. Documentation/snippets/hymn-template.ly:134 (comment) +#. Documentation/snippets/hymn-template.ly:145 (comment) msgid "Start paper block" msgstr "" -#. Documentation/snippets/hymn-template.ly:135 (comment) +#. Documentation/snippets/hymn-template.ly:146 (comment) msgid "don't indent first system" msgstr "" -#. Documentation/snippets/hymn-template.ly:136 (comment) +#. Documentation/snippets/hymn-template.ly:147 (comment) msgid "shorten line length to suit music" msgstr "" -#. Documentation/snippets/hymn-template.ly:137 (comment) +#. Documentation/snippets/hymn-template.ly:148 (comment) msgid "End paper block" msgstr "" -#. Documentation/snippets/incipit.ly:85 (variable) -#. Documentation/snippets/incipit.ly:86 (context id) +#. Documentation/snippets/incipit.ly:88 (variable) +#. Documentation/snippets/incipit.ly:89 (context id) msgid "discantusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:122 (variable) -#. Documentation/snippets/incipit.ly:123 (context id) +#. Documentation/snippets/incipit.ly:125 (variable) +#. Documentation/snippets/incipit.ly:126 (context id) msgid "altusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:138 (comment) -#. Documentation/snippets/incipit.ly:150 (comment) -#. Documentation/snippets/incipit.ly:179 (comment) -#. Documentation/snippets/incipit.ly:188 (comment) +#. Documentation/snippets/incipit.ly:141 (comment) +#. Documentation/snippets/incipit.ly:153 (comment) +#. Documentation/snippets/incipit.ly:182 (comment) +#. Documentation/snippets/incipit.ly:191 (comment) msgid "two measures" msgstr "" -#. Documentation/snippets/incipit.ly:158 (variable) -#. Documentation/snippets/incipit.ly:159 (context id) +#. Documentation/snippets/incipit.ly:161 (variable) +#. Documentation/snippets/incipit.ly:162 (context id) msgid "tenorIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:194 (variable) -#. Documentation/snippets/incipit.ly:195 (context id) +#. Documentation/snippets/incipit.ly:197 (variable) +#. Documentation/snippets/incipit.ly:198 (context id) msgid "bassusIncipit" msgstr "" -#. Documentation/snippets/incipit.ly:265 (comment) +#. Documentation/snippets/incipit.ly:268 (comment) msgid "no bar lines in staves or lyrics" msgstr "" -#. Documentation/snippets/incipit.ly:268 (comment) +#. Documentation/snippets/incipit.ly:271 (comment) msgid "the next two instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/incipit.ly:279 (comment) +#. Documentation/snippets/incipit.ly:281 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:289 (comment) +msgid "Comment in the below \\\"\\remove\\\" command to allow line" +msgstr "" + +#. Documentation/snippets/incipit.ly:282 (comment) msgid "breaking also at those bar lines where a note overlaps" msgstr "" -#. Documentation/snippets/incipit.ly:280 (comment) +#. Documentation/snippets/incipit.ly:283 (comment) msgid "into the next measure. The command is commented out in this" msgstr "" -#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:17 (variable) +#. Documentation/snippets/incipit.ly:284 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:292 (comment) +msgid "short example score, but especially for large scores, you" +msgstr "" + +#. Documentation/snippets/incipit.ly:285 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:293 (comment) +msgid "will typically yield better line breaking and thus improve" +msgstr "" + +#. Documentation/snippets/incipit.ly:286 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:294 (comment) +msgid "overall spacing if you comment in the following command." +msgstr "" + +#. Documentation/snippets/incipit.ly:287 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:295 (comment) +msgid "\\remove \\\"Forbid_line_break_engraver\\\"" +msgstr "" + +#. Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly:20 (variable) msgid "tuning" msgstr "" -#. Documentation/snippets/isolated-percent-repeats.ly:42 (variable) +#. Documentation/snippets/isolated-percent-repeats.ly:45 (variable) msgid "makePercent" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:67 (comment) +#. Documentation/snippets/jazz-combo-template.ly:82 (comment) msgid "#(set-global-staff-size 16)" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:70 (comment) +#. Documentation/snippets/jazz-combo-template.ly:85 (comment) msgid "Some macros %%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:72 (variable) +#. Documentation/snippets/jazz-combo-template.ly:87 (variable) msgid "sl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:76 (variable) +#. Documentation/snippets/jazz-combo-template.ly:92 (variable) msgid "nsl" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:80 (variable) +#. Documentation/snippets/jazz-combo-template.ly:97 (variable) msgid "crOn" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:81 (variable) +#. Documentation/snippets/jazz-combo-template.ly:98 (variable) msgid "crOff" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:83 (comment) +#. Documentation/snippets/jazz-combo-template.ly:100 (comment) msgid "insert chord name style stuff here." msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:85 (variable) +#. Documentation/snippets/jazz-combo-template.ly:102 (variable) msgid "jazzChords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:87 (comment) +#. Documentation/snippets/jazz-combo-template.ly:104 (comment) msgid "Keys'n'thangs %%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:91 (variable) +#. Documentation/snippets/jazz-combo-template.ly:108 (variable) msgid "Key" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:93 (comment) +#. Documentation/snippets/jazz-combo-template.ly:110 (comment) msgid "############ Horns ############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:95 (comment) +#. Documentation/snippets/jazz-combo-template.ly:112 (comment) msgid "------ Trumpet ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:96 (variable) +#. Documentation/snippets/jazz-combo-template.ly:113 (variable) msgid "trpt" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:100 (variable) +#. Documentation/snippets/jazz-combo-template.ly:117 (variable) msgid "trpHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:103 (variable) -#. Documentation/snippets/jazz-combo-template.ly:283 (context id) -#. Documentation/snippets/staff-headword.ly:93 (context id) -#. Documentation/snippets/staff-headword.ly:112 (context id) +#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:300 (context id) +#. Documentation/snippets/staff-headword.ly:96 (context id) +#. Documentation/snippets/staff-headword.ly:115 (context id) msgid "trumpet" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:112 (comment) +#. Documentation/snippets/jazz-combo-template.ly:129 (comment) msgid "------ Alto Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:117 (variable) +#. Documentation/snippets/jazz-combo-template.ly:134 (variable) msgid "altoHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:120 (variable) +#. Documentation/snippets/jazz-combo-template.ly:137 (variable) msgid "altoSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:129 (comment) +#. Documentation/snippets/jazz-combo-template.ly:146 (comment) msgid "------ Baritone Saxophone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:130 (variable) +#. Documentation/snippets/jazz-combo-template.ly:147 (variable) msgid "bari" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:138 (variable) +#. Documentation/snippets/jazz-combo-template.ly:155 (variable) msgid "bariHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:141 (variable) +#. Documentation/snippets/jazz-combo-template.ly:158 (variable) msgid "bariSax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:150 (comment) +#. Documentation/snippets/jazz-combo-template.ly:167 (comment) msgid "------ Trombone ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:151 (variable) +#. Documentation/snippets/jazz-combo-template.ly:168 (variable) msgid "tbone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:155 (variable) +#. Documentation/snippets/jazz-combo-template.ly:172 (variable) msgid "tboneHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:158 (variable) -#. Documentation/snippets/jazz-combo-template.ly:287 (context id) +#. Documentation/snippets/jazz-combo-template.ly:175 (variable) +#. Documentation/snippets/jazz-combo-template.ly:304 (context id) msgid "trombone" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:167 (comment) +#. Documentation/snippets/jazz-combo-template.ly:184 (comment) msgid "############ Rhythm Section #############" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:169 (comment) +#. Documentation/snippets/jazz-combo-template.ly:186 (comment) msgid "------ Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:170 (variable) +#. Documentation/snippets/jazz-combo-template.ly:187 (variable) msgid "gtr" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:178 (variable) +#. Documentation/snippets/jazz-combo-template.ly:195 (variable) msgid "gtrHarmony" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:191 (comment) +#. Documentation/snippets/jazz-combo-template.ly:208 (comment) msgid "------ Piano ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:192 (variable) +#. Documentation/snippets/jazz-combo-template.ly:209 (variable) msgid "rhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:197 (variable) +#. Documentation/snippets/jazz-combo-template.ly:214 (variable) msgid "rhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:203 (variable) +#. Documentation/snippets/jazz-combo-template.ly:220 (variable) msgid "lhUpper" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:208 (variable) +#. Documentation/snippets/jazz-combo-template.ly:225 (variable) msgid "lhLower" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:214 (variable) +#. Documentation/snippets/jazz-combo-template.ly:231 (variable) msgid "PianoRH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:223 (variable) +#. Documentation/snippets/jazz-combo-template.ly:240 (variable) msgid "PianoLH" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:241 (comment) +#. Documentation/snippets/jazz-combo-template.ly:258 (comment) msgid "------ Bass Guitar ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:255 (comment) +#. Documentation/snippets/jazz-combo-template.ly:272 (comment) msgid "------ Drums ------" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:269 (variable) +#. Documentation/snippets/jazz-combo-template.ly:286 (variable) msgid "drumContents" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:278 (comment) +#. Documentation/snippets/jazz-combo-template.ly:295 (comment) #, python-format msgid "It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:282 (context id) +#. Documentation/snippets/jazz-combo-template.ly:299 (context id) msgid "horns" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:284 (context id) +#. Documentation/snippets/jazz-combo-template.ly:301 (context id) msgid "altosax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:285 (context id) +#. Documentation/snippets/jazz-combo-template.ly:302 (context id) msgid "barichords" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:286 (context id) +#. Documentation/snippets/jazz-combo-template.ly:303 (context id) msgid "barisax" msgstr "" -#. Documentation/snippets/jazz-combo-template.ly:291 (context id) +#. Documentation/snippets/jazz-combo-template.ly:308 (context id) msgid "chords" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:24 (comment) +#. Documentation/snippets/keyboard-headword.ly:27 (comment) msgid "M. Ravel, Sonatine (1905)" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:25 (comment) +#. Documentation/snippets/keyboard-headword.ly:28 (comment) msgid "First movement" msgstr "" -#. Documentation/snippets/keyboard-headword.ly:34 (variable) +#. Documentation/snippets/keyboard-headword.ly:37 (variable) msgid "fermataLong" msgstr "" -#. Documentation/snippets/makam-example.ly:55 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:53 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:89 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:91 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:71 (variable) +msgid "sopMusic" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:54 (comment) +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:60 (comment) +msgid "VERSE ONE" +msgstr "" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:82 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:123 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:126 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:101 (context id) +msgid "women" +msgstr "女" + +#. Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly:94 (context id) +#. Documentation/snippets/vocal-ensemble-template.ly:138 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:136 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:113 (context id) +msgid "men" +msgstr "男" + +#. Documentation/snippets/makam-example.ly:58 (comment) msgid "Initialize makam settings" msgstr "" -#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:20 (variable) +#. Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly:23 (variable) msgid "bassfigures" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:22 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) msgid "from upper staff-line (position 2) to center (position 0)" msgstr "" -#. Documentation/snippets/manually-controlling-beam-positions.ly:25 (comment) +#. Documentation/snippets/manually-controlling-beam-positions.ly:28 (comment) msgid "from center to one above center (position 1)" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:18 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:21 (variable) msgid "speakOn" msgstr "" -#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:35 (variable) +#. Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly:38 (variable) msgid "speakOff" msgstr "" -#. Documentation/snippets/markup-lines.ly:23 (comment) +#. Documentation/snippets/markup-lines.ly:26 (comment) msgid "Candide, Voltaire" msgstr "" -#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:56 (comment) +#. Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly:59 (comment) msgid "the final bar line is not interrupted" msgstr "" -#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:18 (variable) +#. Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly:21 (variable) msgid "normalPos" msgstr "" -#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:71 (variable) +#. Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly:74 (variable) msgid "dashPlus" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:24 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:27 (comment) msgid "Set tuplets to be extendable..." msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:26 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:29 (comment) msgid "...to cover all items up to the next note" msgstr "" -#. Documentation/snippets/modifying-tuplet-bracket-length.ly:30 (comment) +#. Documentation/snippets/modifying-tuplet-bracket-length.ly:33 (comment) msgid "...or to cover just whitespace" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:60 (comment) +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:41 (variable) +msgid "openStringHarmonics" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:42 (comment) +msgid "first harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:45 (comment) +msgid "second harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:50 (comment) +msgid "\\harmonicByFret #19 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:51 (comment) +msgid "\\harmonicByRatio #2/3 < e,\\6 a,\\5 d\\4 >" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:52 (comment) +msgid "third harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:58 (comment) +msgid "fourth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:65 (comment) +msgid "fifth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:69 (comment) +msgid "sixth harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:72 (comment) +msgid "seventh harmonic" +msgstr "" + +#. Documentation/snippets/open-string-harmonics-in-tablature.ly:75 (comment) +msgid "eighth harmonic" +msgstr "" + +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (comment) msgid "space for instrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:61 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:74 (comment) msgid "space for shortInstrumentName" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:64 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) msgid "fluteMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:65 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (comment) msgid "Pitches as written on a manuscript for Clarinet in A" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:66 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (comment) msgid "are transposed to concert pitch." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:67 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:80 (variable) msgid "clarinetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:69 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) msgid "trumpetMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:70 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (comment) msgid "Key signature is often omitted for horns" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:71 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) msgid "hornMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:73 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) msgid "percussionMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:76 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:89 (variable) msgid "altoIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:77 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:90 (variable) msgid "altoIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:78 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:91 (variable) msgid "altoILyrics" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:79 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:92 (variable) msgid "altoIILyrics" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:82 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (variable) msgid "pianoRHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:83 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (variable) msgid "pianoLHMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:84 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:97 (variable) msgid "violinIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:85 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:98 (variable) msgid "violinIIMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:86 (variable) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:99 (variable) msgid "violaMusic" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:95 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:108 (comment) msgid "shortInstrumentName, midiInstrument, etc." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:96 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:109 (comment) msgid "may be set here as well" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:102 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:115 (comment) msgid "Declare that written Middle C in the music" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:103 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:116 (comment) msgid "to follow sounds a concert B flat, for" msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:104 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:117 (comment) msgid "output using sounded pitches such as MIDI." msgstr "" -#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:106 (comment) +#. Documentation/snippets/orchestra,-choir-and-piano-template.ly:119 (comment) msgid "Print music for a B-flat clarinet" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:146 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) msgid "\\set Staff.autoBeaming = ##f % turns off all autobeaming" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:149 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:152 (comment) msgid "applies to split up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:151 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:154 (comment) msgid "\\autoBeamOff % applies to combined up stems" msgstr "" -#. Documentation/snippets/partcombine-and-autobeamoff.ly:156 (comment) +#. Documentation/snippets/partcombine-and-autobeamoff.ly:159 (comment) msgid "applies to down stems" msgstr "" -#. Documentation/snippets/percussion-beaters.ly:19 (variable) +#. Documentation/snippets/percussion-beaters.ly:22 (variable) msgid "stick" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:53 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:56 (comment) msgid "Permit line breaks within tuplets" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:55 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:58 (comment) msgid "Allow beams to be broken at line breaks" msgstr "" -#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:62 (comment) +#. Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly:65 (comment) msgid "Insert a manual line break within a tuplet" msgstr "" -#. Documentation/snippets/piano-template-with-centered-dynamics.ly:74 (variable) -msgid "pedal" -msgstr "" - -#. Documentation/snippets/pitches-headword.ly:32 (comment) +#. Documentation/snippets/pitches-headword.ly:27 (comment) msgid "L. v. Beethoven" msgstr "" -#. Documentation/snippets/pitches-headword.ly:33 (comment) +#. Documentation/snippets/pitches-headword.ly:28 (comment) msgid "Piano sonata 21 - Dem Grafen von Waldstein Gewidmet" msgstr "" -#. Documentation/snippets/pitches-headword.ly:34 (comment) +#. Documentation/snippets/pitches-headword.ly:29 (comment) msgid "chorale at measures 34 - 40+" msgstr "" -#. Documentation/snippets/pitches-headword.ly:41 (comment) +#. Documentation/snippets/pitches-headword.ly:36 (comment) msgid "RH Voice 1" msgstr "" -#. Documentation/snippets/pitches-headword.ly:69 (comment) +#. Documentation/snippets/pitches-headword.ly:64 (comment) msgid "(" msgstr "" -#. Documentation/snippets/pitches-headword.ly:74 (comment) +#. Documentation/snippets/pitches-headword.ly:69 (comment) msgid ")" msgstr "" -#. Documentation/snippets/pitches-headword.ly:78 (comment) +#. Documentation/snippets/pitches-headword.ly:73 (comment) msgid "RH Voice 2" msgstr "" -#. Documentation/snippets/polyphony-in-tablature.ly:59 (context id) +#. Documentation/snippets/polyphony-in-tablature.ly:61 (context id) msgid "tab" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:60 (comment) -msgid "MMR - Multi-Measure Rest" +#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) +msgid "Multi-measure rests by default are set under the fourth line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:61 (comment) -msgid "MMRs by default are set under the fourth line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:68 (comment) +msgid "They can be moved using an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:63 (comment) -msgid "They can be moved with an override" +#. Documentation/snippets/positioning-multi-measure-rests.ly:82 (comment) +msgid "In two Voices, odd-numbered voices are under the top line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:66 (comment) -msgid "A value of 0 is the default position;" +#. Documentation/snippets/positioning-multi-measure-rests.ly:84 (comment) +msgid "Even-numbered voices are under the bottom line" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:67 (comment) -msgid "the following trick moves the rest to the center line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:86 (comment) +msgid "Multi-measure rests in both voices remain separate" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:70 (comment) -msgid "MMRs in odd-numbered voices are under the top line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:89 (comment) +msgid "Separating multi-measure rests in more than two voices" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:72 (comment) -msgid "MMRs in even-numbered voices are under the bottom line" +#. Documentation/snippets/positioning-multi-measure-rests.ly:90 (comment) +msgid "requires an override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:74 (comment) -msgid "They remain separated even in empty measures" +#. Documentation/snippets/positioning-multi-measure-rests.ly:96 (comment) +msgid "Using compressed bars in multiple voices requires another override" msgstr "" -#. Documentation/snippets/positioning-multi-measure-rests.ly:76 (comment) -msgid "This brings them together even though there are two voices" +#. Documentation/snippets/positioning-multi-measure-rests.ly:97 (comment) +msgid "in all voices to avoid multiple instances being printed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:29 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:50 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:32 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:53 (comment) msgid "Set segno sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:30 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:52 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:33 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) msgid "\\once \\override Score.RehearsalMark #'font-size = #3" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:36 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:39 (comment) msgid "Set coda sign as rehearsal mark and adjust size if needed" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:43 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) msgid "Should Coda be on anew line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:44 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:47 (comment) msgid "Coda NOT on new line: use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:45 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:48 (comment) msgid "Coda on new line: DON'T use \\nobreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:46 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:49 (comment) msgid "\\noBreak" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:55 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:58 (comment) msgid "Here begins the trickery!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:56 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) msgid "" "\\cadenzaOn will suppress the bar count and \\stopStaff removes the staff " "lines." msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:59 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) msgid "Some examples of possible text-displays" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:61 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) msgid "text line-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:62 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) msgid "==================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:63 (comment) -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:69 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:66 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:72 (comment) msgid "Move text to the desired position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:64 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 2 . -3.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:65 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) msgid "| s1*0^\\markup { D.S. al Coda } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:67 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) msgid "text center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:68 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) msgid "====================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:70 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 6 . -5.0 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:71 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) msgid "| s1*0^\\markup { \\center-column { D.S. \\\"al Coda\\\" } }" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:73 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) msgid "text and symbols center-aligned" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:74 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:77 (comment) msgid "===============================" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:75 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:78 (comment) msgid "" "Move text to the desired position and tweak spacing for optimum text " "alignment" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:76 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:79 (comment) msgid "\\once \\override TextScript #'extra-offset = #'( 8 . -5.5 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:82 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:85 (comment) msgid "Increasing the unfold counter will expand the staff-free space" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:87 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:90 (comment) msgid "Resume bar count and show staff lines again" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:91 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:94 (comment) msgid "Should Coda be on new line?" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:92 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:95 (comment) msgid "Coda NOT on new line: DON'T use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:93 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) msgid "Coda on new line: use \\break" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:96 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:99 (comment) msgid "Show up, you clef and key!" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:100 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:103 (comment) msgid "Set coda sign as rehearsal mark and adjust size and position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:102 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) msgid "" "Put the coda sign ontop of the (treble-)clef dependend on coda's line-" "position" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:104 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) msgid "Coda NOT on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:105 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:108 (comment) msgid "\\once \\override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 )" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:107 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:110 (comment) msgid "Coda on new line, use this:" msgstr "" -#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:113 (comment) +#. Documentation/snippets/positioning-segno-and-coda-with-line-break.ly:116 (comment) msgid "The coda" msgstr "" -#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:57 (comment) +#. Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly:60 (comment) msgid "Permit first bar number to be printed" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:43 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:46 (comment) msgid "Prevent bar numbers at the end of a line and permit them elsewhere" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:50 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:53 (comment) msgid "Draw a box round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:55 (comment) +#. Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly:58 (comment) msgid "Draw a circle round the following bar number(s)" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:55 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:58 (comment) msgid "Metronome marks below the staff" msgstr "" -#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:60 (comment) +#. Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly:63 (comment) msgid "Rehearsal marks below the staff" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:57 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:60 (variable) msgid "Bassklarinette" msgstr "" -#. Documentation/snippets/printing-music-with-different-time-signatures.ly:101 (variable) +#. Documentation/snippets/printing-music-with-different-time-signatures.ly:104 (variable) msgid "Perkussion" msgstr "" @@ -8895,1134 +10340,1188 @@ msgstr "" msgid "voc" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:69 (variable) -msgid "quoteTest" +#. Documentation/snippets/quoting-another-voice.ly:79 (variable) +msgid "quoteMe" msgstr "" -#. Documentation/snippets/quoting-another-voice-with-transposition.ly:70 (comment) -msgid "french horn" +#. Documentation/snippets/quoting-another-voice.ly:84 (variable) +msgid "original" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:76 (variable) -msgid "quoteMe" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:72 (variable) +msgid "quoteTest" msgstr "" -#. Documentation/snippets/quoting-another-voice.ly:81 (variable) -msgid "original" +#. Documentation/snippets/quoting-another-voice-with-transposition.ly:73 (comment) +msgid "french horn" msgstr "" -#. Documentation/snippets/recorder-fingering-chart.ly:38 (comment) +#. Documentation/snippets/recorder-fingering-chart.ly:39 (comment) msgid "range chart for paetzold contrabass recorder" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:64 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:69 (variable) msgid "startAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/redefining-grace-note-global-defaults.ly:70 (variable) +#. Documentation/snippets/redefining-grace-note-global-defaults.ly:75 (variable) msgid "stopAcciaccaturaMusic" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:81 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:84 (comment) msgid "To use the setting globally, uncomment the following line:" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:82 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:85 (comment) msgid "\\override VerticalAxisGroup #'remove-first = ##t" msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:91 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:94 (comment) msgid "To use the setting globally, comment this line," msgstr "" -#. Documentation/snippets/removing-the-first-empty-line.ly:92 (comment) +#. Documentation/snippets/removing-the-first-empty-line.ly:95 (comment) msgid "uncomment the line in the \\layout block above" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:50 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) msgid "Default beaming" msgstr "" -#. Documentation/snippets/reverting-default-beam-endings.ly:53 (comment) +#. Documentation/snippets/reverting-default-beam-endings.ly:56 (comment) msgid "Set new values for beam endings" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:26 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:29 (comment) msgid "Macro to print single slash" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:27 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:30 (variable) msgid "rs" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:34 (comment) +#. Documentation/snippets/rhythmic-slashes.ly:37 (comment) msgid "Function to print a specified number of slashes" msgstr "" -#. Documentation/snippets/rhythmic-slashes.ly:35 (variable) +#. Documentation/snippets/rhythmic-slashes.ly:38 (variable) msgid "comp" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:23 (comment) +#. Documentation/snippets/rhythms-headword.ly:26 (comment) msgid "Beethoven, Op. 81a" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:24 (comment) +#. Documentation/snippets/rhythms-headword.ly:27 (comment) msgid "Piano sonata 26 - Das Lebewohl" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:25 (comment) +#. Documentation/snippets/rhythms-headword.ly:28 (comment) msgid "Movt II - Abwesenheit" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:26 (comment) +#. Documentation/snippets/rhythms-headword.ly:29 (comment) msgid "Measures 31 - 34" msgstr "" -#. Documentation/snippets/rhythms-headword.ly:33 (comment) +#. Documentation/snippets/rhythms-headword.ly:36 (comment) msgid "\\override SpacingSpanner #'strict-grace-spacing = ##t" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:40 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) msgid "sopranonotes" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:43 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:60 (variable) msgid "sopranowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:44 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:61 (variable) msgid "altonotes" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:47 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:64 (variable) msgid "altowords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:48 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:65 (variable) msgid "tenornotes" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:52 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:69 (variable) msgid "tenorwords" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:53 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:70 (variable) msgid "bassnotes" msgstr "" -#. Documentation/snippets/satb-choir-template---four-staves.ly:57 (variable) +#. Documentation/snippets/satb-choir-template---four-staves.ly:74 (variable) msgid "basswords" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:60 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:59 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:73 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:89 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:65 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:72 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:118 (comment) msgid "verse" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:70 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:75 (variable) msgid "NoStem" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:71 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:76 (variable) msgid "NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:72 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:77 (variable) msgid "ZeroBeam" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:74 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (variable) msgid "staffTabLine" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:79 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated with a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:84 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) msgid "" "disable the following line to see the the noteheads while writing the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:88 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) msgid "The beam between 8th-notes is used to draw the push-line" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:89 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) msgid "How to fast write the push-lines:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:90 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) msgid "" "1. write repeatedly 'c c c c c c c c |' for the whole length of the song" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:91 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) msgid "2. uncomment the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:92 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) msgid "3. compile" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:93 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) msgid "4. Mark the positions on which push/pull changes." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:94 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) msgid "" "In the score-picture click on the position the push- or pull-part starts" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:95 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) msgid "(on the noteHead, the cursor will change to a hand-icon)." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:96 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) msgid "The cursor in the source code will jump just at this position." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:97 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) msgid "a) If a push-part starts there, replace the 'c' by an 'e['" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:98 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) msgid "b) If a pull-part starts there, replace the 'c' by an 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:99 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) msgid "5. Switch into 'overwrite-mode' by pressing the 'ins' key." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:100 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:105 (comment) msgid "6. For the pull-parts overwrite the 'c' with 's'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:101 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:106 (comment) msgid "7. For every push-part replace the last 'c' with 'e]'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:102 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:107 (comment) msgid "8. Switch into 'insert-mode' again" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:103 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:108 (comment) msgid "" "9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c " "e] s s)" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:104 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:109 (comment) msgid "10. re-enable the line \\NoNoteHead" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:114 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) msgid "Accordion melody in tabulator score" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:115 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) msgid "1. Place a copy of the piano melody below" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:116 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:121 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) msgid "" "2. Separate piano melody into pull- and push-parts according to the " "staffTabLine you've already made" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:117 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:118 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) msgid "or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:119 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:143 (comment) msgid "Tips:" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:120 (comment) -#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:125 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:144 (comment) msgid "- In jEdit Search & Replace mark the Option 'Keep Dialog'" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:122 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (variable) msgid "AccordionTabTwoCBesDur" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:123 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:128 (comment) msgid "pull 1" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:124 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) msgid "8 8 8 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:126 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:131 (comment) msgid "push 2" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:127 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:132 (comment) msgid "4 |" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:129 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) msgid "pull 3" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:130 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:135 (comment) msgid "2 r8 }" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:133 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:138 (variable) msgid "AccordionTab" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:134 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:139 (comment) msgid "1. Place a copy of the piano melody above" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:136 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:141 (comment) msgid "" "3. For each line: Double the line. Remark the 1st one (Keeps unchanged as " "reference) and then" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:137 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:142 (comment) msgid "change the second line using the transformation paper" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:140 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:145 (comment) msgid "-" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:149 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:154 (comment) msgid "The vertical line (simulating a bar-line) in" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:150 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:155 (comment) msgid "the staffBassRhytm is a gridline" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:156 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:161 (comment) msgid "4/4 - tact. How many beats per bar" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:157 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:162 (comment) msgid "The following line has to be adjusted O-F-T-E-N." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (variable) msgid "staffVoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:166 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:171 (context id) msgid "astaffvoice" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:180 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:185 (variable) msgid "staffAccordionMel" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:182 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:187 (comment) msgid "Set the accidentals (Vorzeichen) for each note," msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:183 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:188 (comment) msgid "do not remember them for the rest of the measure." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:203 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (variable) msgid "BassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:204 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:209 (variable) msgid "LyricBassRhythmI" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:206 (variable) +#. Documentation/snippets/score-for-diatonic-accordion.ly:211 (variable) msgid "staffBassRhytm" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:207 (context id) +#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (context id) msgid "staffbass" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:208 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) msgid "" "This is not a RhythmicStaff because it must be possible to append lyrics." msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:210 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:215 (comment) msgid "x.y" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:212 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:217 (comment) msgid "" "Shows one horizontal line. The vertical line (simulating a bar-line) is " "simulated by a grid" msgstr "" -#. Documentation/snippets/score-for-diatonic-accordion.ly:213 (comment) +#. Documentation/snippets/score-for-diatonic-accordion.ly:218 (comment) msgid "Search for 'grid' in this page to find all related functions" msgstr "" -#. Documentation/snippets/setting-system-separators.ly:34 (variable) +#. Documentation/snippets/setting-system-separators.ly:37 (variable) msgid "notes" msgstr "" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:23 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:26 (comment) msgid "The same as \\flageolet, just a little smaller" msgstr "" -#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:33 (comment) +#. Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly:36 (comment) msgid "The second fermata is ignored!" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:30 (comment) +#. Documentation/snippets/simultaneous-headword.ly:24 (comment) msgid "NR 1.5 Simultaneous notes" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:32 (comment) +#. Documentation/snippets/simultaneous-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 111" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:33 (comment) +#. Documentation/snippets/simultaneous-headword.ly:27 (comment) msgid "Piano sonata 32" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:34 (comment) +#. Documentation/snippets/simultaneous-headword.ly:28 (comment) msgid "Movt II - Arietta - Adagio molto semplice e cantabile" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:35 (comment) +#. Documentation/snippets/simultaneous-headword.ly:29 (comment) msgid "measures 108 - 118" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:47 (variable) +#. Documentation/snippets/simultaneous-headword.ly:41 (variable) msgid "trillFlat" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:67 (comment) +#. Documentation/snippets/simultaneous-headword.ly:61 (comment) msgid "RH voice 1" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:144 (comment) +#. Documentation/snippets/simultaneous-headword.ly:138 (comment) msgid "RH voice 2" msgstr "" -#. Documentation/snippets/simultaneous-headword.ly:219 (comment) +#. Documentation/snippets/simultaneous-headword.ly:213 (comment) msgid "LH staff" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:26 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:29 (variable) msgid "verseI" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:31 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:34 (variable) msgid "verseII" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:37 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:40 (comment) msgid "insert chords for chordnames and fretboards here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:41 (variable) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (variable) msgid "staffMelody" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:44 (comment) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:47 (comment) msgid "Type notes for melody here" msgstr "" -#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:54 (context id) +#. Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly:57 (context id) msgid "voiceMelody" msgstr "" -#. Documentation/snippets/staff-headword.ly:31 (comment) +#. Documentation/snippets/slides-in-tablature.ly:44 (variable) +msgid "slides" +msgstr "" + +#. Documentation/snippets/staff-headword.ly:34 (comment) msgid "title = \\\"Le Lac des Cygnes\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:32 (comment) +#. Documentation/snippets/staff-headword.ly:35 (comment) msgid "subtitle = \\\"Danse Napolitaine\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:33 (comment) +#. Documentation/snippets/staff-headword.ly:36 (comment) msgid "composer = \\\"Piotr Ilitch Tchaïkovski\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:34 (comment) +#. Documentation/snippets/staff-headword.ly:37 (comment) msgid "arranger = \\\"arr. Laurence Sardain\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:35 (comment) +#. Documentation/snippets/staff-headword.ly:38 (comment) msgid "footer = \\\"Mutopia-2006/12/22-896\\\"" msgstr "" -#. Documentation/snippets/staff-headword.ly:38 (variable) +#. Documentation/snippets/staff-headword.ly:41 (variable) msgid "trompette" msgstr "" -#. Documentation/snippets/staff-headword.ly:50 (variable) -#. Documentation/snippets/staff-headword.ly:98 (context id) -#. Documentation/snippets/staff-headword.ly:116 (context id) +#. Documentation/snippets/staff-headword.ly:53 (variable) +#. Documentation/snippets/staff-headword.ly:101 (context id) +#. Documentation/snippets/staff-headword.ly:119 (context id) msgid "tambourin" msgstr "" -#. Documentation/snippets/staff-headword.ly:59 (variable) +#. Documentation/snippets/staff-headword.ly:62 (variable) msgid "tambourinMidi" msgstr "" -#. Documentation/snippets/staff-headword.ly:102 (context id) +#. Documentation/snippets/staff-headword.ly:105 (context id) msgid "prima" msgstr "" -#. Documentation/snippets/staff-headword.ly:104 (context id) +#. Documentation/snippets/staff-headword.ly:107 (context id) msgid "uppera" msgstr "" -#. Documentation/snippets/staff-headword.ly:105 (context id) +#. Documentation/snippets/staff-headword.ly:108 (context id) msgid "lowera" msgstr "" -#. Documentation/snippets/stemlets.ly:36 (comment) +#. Documentation/snippets/stemlets.ly:39 (comment) msgid "N.B. use Score.Stem to set for the whole score." msgstr "" -#. Documentation/snippets/string-number-extender-lines.ly:17 (variable) +#. Documentation/snippets/string-number-extender-lines.ly:22 (variable) msgid "stringNumberSpanner" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:55 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:66 (variable) msgid "violinOne" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:64 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:75 (variable) msgid "violinTwo" msgstr "" -#. Documentation/snippets/string-quartet-template-simple.ly:73 (variable) +#. Documentation/snippets/string-quartet-template-simple.ly:84 (variable) msgid "viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:106 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:128 (comment) msgid "piece.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:107 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:129 (comment) msgid "(This is the global definitions file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:114 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:136 (variable) msgid "Violinone" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:119 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:125 (comment) -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:132 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:141 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:147 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:154 (comment) msgid "*********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:120 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:142 (variable) msgid "Violintwo" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:126 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:148 (variable) msgid "Viola" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:133 (variable) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:155 (variable) msgid "Cello" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:139 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:161 (comment) msgid "**********************************" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:150 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:172 (comment) msgid "These are the other files you need to save on your computer" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:152 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:174 (comment) msgid "score.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:153 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:175 (comment) msgid "(This is the main file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:156 (comment) -#, python-format -msgid "" -"\\include \\\"piece.ly\\\" %%% uncomment this line when using a " -"separate file" +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +msgid "uncomment the line below when using a separate file" +msgstr "" + +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +msgid "\\include \\\"piece.ly\\\"" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:165 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) msgid "{ Uncomment this block when using separate files" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:167 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:189 (comment) msgid "vn1.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:168 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:190 (comment) msgid "(This is the Violin 1 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:177 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:199 (comment) msgid "vn2.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:178 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:200 (comment) msgid "(This is the Violin 2 part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:187 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:209 (comment) msgid "vla.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:188 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:210 (comment) msgid "(This is the Viola part file)" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:197 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:219 (comment) msgid "vlc.ly" msgstr "" -#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:198 (comment) +#. Documentation/snippets/string-quartet-template-with-separate-parts.ly:220 (comment) msgid "(This is the Cello part file)" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:78 (comment) +#. Documentation/snippets/subdividing-beams.ly:81 (comment) msgid "Set beam sub-group length to an eighth note" msgstr "" -#. Documentation/snippets/subdividing-beams.ly:83 (comment) +#. Documentation/snippets/subdividing-beams.ly:86 (comment) msgid "Set beam sub-group length to a sixteenth note" msgstr "" -#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:21 (variable) -#. Documentation/snippets/unfretted-headword.ly:56 (variable) +#. Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly:27 (variable) +#. Documentation/snippets/unfretted-headword.ly:59 (variable) msgid "ignore" msgstr "" -#. Documentation/snippets/text-headword.ly:29 (comment) +#. Documentation/snippets/text-headword.ly:24 (comment) msgid "NR 1.8 Text" msgstr "" -#. Documentation/snippets/text-headword.ly:31 (comment) +#. Documentation/snippets/text-headword.ly:26 (comment) msgid "L. v. Beethoven, Op. 110" msgstr "" -#. Documentation/snippets/text-headword.ly:32 (comment) +#. Documentation/snippets/text-headword.ly:27 (comment) msgid "Piano sonata 31" msgstr "" -#. Documentation/snippets/text-headword.ly:33 (comment) +#. Documentation/snippets/text-headword.ly:28 (comment) msgid "measures 1 - 7" msgstr "" -#. Documentation/snippets/text-headword.ly:45 (comment) +#. Documentation/snippets/text-headword.ly:40 (comment) msgid "RH staff" msgstr "" -#. Documentation/snippets/three-sided-box.ly:17 (comment) +#. Documentation/snippets/three-sided-box.ly:20 (comment) msgid "New command to add a three sided box, with sides north, west and south" msgstr "" -#. Documentation/snippets/three-sided-box.ly:18 (comment) +#. Documentation/snippets/three-sided-box.ly:21 (comment) msgid "Based on the box-stencil command defined in scm/stencil.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:19 (comment) +#. Documentation/snippets/three-sided-box.ly:22 (comment) msgid "Note that \\\";;\\\" is used to comment a line in Scheme" msgstr "" -#. Documentation/snippets/three-sided-box.ly:33 (comment) +#. Documentation/snippets/three-sided-box.ly:36 (comment) msgid "The corresponding markup command, based on the \\box command defined" msgstr "" -#. Documentation/snippets/three-sided-box.ly:34 (comment) +#. Documentation/snippets/three-sided-box.ly:37 (comment) msgid "in scm/define-markup-commands.scm" msgstr "" -#. Documentation/snippets/three-sided-box.ly:46 (comment) +#. Documentation/snippets/three-sided-box.ly:49 (comment) msgid "Test it:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:57 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:59 (comment) msgid "Change the style permanently" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:63 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:65 (comment) msgid "Revert to default style:" msgstr "" -#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:67 (comment) +#. Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly:69 (comment) msgid "single-digit style only for the next time signature" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:36 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:39 (comment) msgid "make the staff lines invisible on staves" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:125 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:128 (variable) msgid "incipitDiscantus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:150 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:153 (variable) msgid "incipitAltus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:176 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:179 (variable) msgid "incipitTenor" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:204 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:207 (variable) msgid "incipitBassus" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:230 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:233 (comment) msgid "" "StaffGroup is used instead of ChoirStaff to get bar lines between systems" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:262 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:265 (comment) msgid "Keep the bass lyrics outside of the staff group to avoid bar lines" msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:263 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:266 (comment) msgid "between the lyrics." msgstr "" -#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:272 (comment) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:275 (comment) msgid "the next three instructions keep the lyrics between the bar lines" msgstr "" -#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:165 (variable) +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:290 (comment) +msgid "breaking also at those barlines where a note overlaps" +msgstr "" + +#. Documentation/snippets/transcription-of-ancient-music-with-incipit.ly:291 (comment) +msgid "into the next bar. The command is commented out in this" +msgstr "" + +#. Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly:167 (variable) msgid "naturalizeMusic" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:151 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:154 (comment) msgid "The default treble clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:153 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:156 (comment) msgid "The standard bass clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:158 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:161 (comment) msgid "The baritone clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:163 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:166 (comment) msgid "The standard choral tenor clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:169 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:172 (comment) msgid "A non-standard clef" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:175 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:178 (comment) msgid "The following clef changes do not preserve" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:176 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:179 (comment) msgid "the normal relationship between notes and clefs:" msgstr "" -#. Documentation/snippets/tweaking-clef-properties.ly:191 (comment) +#. Documentation/snippets/tweaking-clef-properties.ly:194 (comment) msgid "Return to the normal clef:" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:40 (comment) +#. Documentation/snippets/unfretted-headword.ly:43 (comment) msgid "Abreviations" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:43 (variable) +#. Documentation/snippets/unfretted-headword.ly:46 (variable) msgid "db" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:44 (variable) +#. Documentation/snippets/unfretted-headword.ly:47 (variable) msgid "dub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:45 (variable) +#. Documentation/snippets/unfretted-headword.ly:48 (variable) msgid "dubetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:47 (variable) +#. Documentation/snippets/unfretted-headword.ly:50 (variable) msgid "ub" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:48 (variable) +#. Documentation/snippets/unfretted-headword.ly:51 (variable) msgid "udb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:49 (variable) +#. Documentation/snippets/unfretted-headword.ly:52 (variable) msgid "udbetc" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:51 (variable) +#. Documentation/snippets/unfretted-headword.ly:54 (variable) msgid "fermaTa" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:53 (variable) +#. Documentation/snippets/unfretted-headword.ly:56 (variable) msgid "accel" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:54 (variable) +#. Documentation/snippets/unfretted-headword.ly:57 (variable) msgid "ritar" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:60 (comment) +#. Documentation/snippets/unfretted-headword.ly:63 (comment) msgid "Strings" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:63 (variable) +#. Documentation/snippets/unfretted-headword.ly:66 (variable) msgid "svib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:64 (variable) +#. Documentation/snippets/unfretted-headword.ly:67 (variable) msgid "pvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:65 (variable) +#. Documentation/snippets/unfretted-headword.ly:68 (variable) msgid "mvib" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:66 (variable) +#. Documentation/snippets/unfretted-headword.ly:69 (variable) msgid "sulp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:67 (variable) +#. Documentation/snippets/unfretted-headword.ly:70 (variable) msgid "norm" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:69 (variable) +#. Documentation/snippets/unfretted-headword.ly:72 (variable) msgid "quatre" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:73 (comment) +#. Documentation/snippets/unfretted-headword.ly:76 (comment) msgid "Shifting Notes" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:76 (variable) +#. Documentation/snippets/unfretted-headword.ly:79 (variable) msgid "shift" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:77 (variable) +#. Documentation/snippets/unfretted-headword.ly:80 (variable) msgid "shifta" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:78 (variable) +#. Documentation/snippets/unfretted-headword.ly:81 (variable) msgid "shiftb" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:82 (comment) +#. Documentation/snippets/unfretted-headword.ly:85 (comment) msgid "Hairpin" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:85 (comment) +#. Documentation/snippets/unfretted-headword.ly:88 (comment) msgid "aniente = \\\"a niente\\\"" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:86 (variable) +#. Documentation/snippets/unfretted-headword.ly:89 (variable) msgid "aniente" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:93 (variable) +#. Documentation/snippets/unfretted-headword.ly:96 (variable) msgid "tupletbp" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:97 (comment) +#. Documentation/snippets/unfretted-headword.ly:100 (comment) msgid "Flag [Note Head - Stem]" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:100 (variable) +#. Documentation/snippets/unfretted-headword.ly:103 (variable) msgid "noflag" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:103 (comment) +#. Documentation/snippets/unfretted-headword.ly:106 (comment) msgid "Functions" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:118 (comment) +#. Documentation/snippets/unfretted-headword.ly:121 (comment) msgid "Instruments" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:121 (variable) +#. Documentation/snippets/unfretted-headword.ly:124 (variable) msgid "ViolinSolo" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:131 (comment) +#. Documentation/snippets/unfretted-headword.ly:134 (comment) msgid "Measure 1" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:141 (comment) +#. Documentation/snippets/unfretted-headword.ly:144 (comment) msgid "Measure 2" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:151 (comment) +#. Documentation/snippets/unfretted-headword.ly:154 (comment) msgid "Measure 3" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:159 (comment) +#. Documentation/snippets/unfretted-headword.ly:162 (comment) msgid "Measure 4" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:168 (comment) +#. Documentation/snippets/unfretted-headword.ly:171 (comment) msgid "Measure 5" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:176 (comment) +#. Documentation/snippets/unfretted-headword.ly:179 (comment) msgid "Measure 6" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:178 (comment) +#. Documentation/snippets/unfretted-headword.ly:181 (comment) msgid "\\featherDurations #(ly:make-moment 2 3)" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:185 (comment) +#. Documentation/snippets/unfretted-headword.ly:188 (comment) msgid "Measure 7" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:194 (comment) +#. Documentation/snippets/unfretted-headword.ly:197 (comment) msgid "Measure 8" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:199 (comment) +#. Documentation/snippets/unfretted-headword.ly:202 (comment) msgid "Measure 9" msgstr "" -#. Documentation/snippets/unfretted-headword.ly:210 (comment) +#. Documentation/snippets/unfretted-headword.ly:213 (comment) msgid "Score" msgstr "" -#. Documentation/snippets/using-alternative-flag-styles.ly:31 (variable) +#. Documentation/snippets/using-alternative-flag-styles.ly:36 (variable) msgid "testnotes" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:113 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) msgid "display grobs for each note head:" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:114 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:117 (comment) msgid "\\override NoteHead #'before-line-breaking = #display-grobs" msgstr "" -#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:116 (comment) +#. Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly:119 (comment) msgid "or just for one:" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:28 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:31 (variable) msgid "parallelogram" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:43 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:46 (variable) msgid "myNoteHeads" msgstr "" -#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:44 (variable) +#. Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly:47 (variable) msgid "normalNoteHeads" msgstr "" -#. Documentation/snippets/utf-8.ly:19 (comment) +#. Documentation/snippets/utf-8.ly:22 (comment) msgid "end verbatim - this comment is a hack to prevent texinfo.tex" msgstr "" -#. Documentation/snippets/utf-8.ly:20 (comment) +#. Documentation/snippets/utf-8.ly:23 (comment) msgid "from choking on non-European UTF-8 subsets" msgstr "" -#. Documentation/snippets/utf-8.ly:22 (comment) +#. Documentation/snippets/utf-8.ly:25 (comment) msgid "Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs" msgstr "" -#. Documentation/snippets/utf-8.ly:40 (comment) +#. Documentation/snippets/utf-8.ly:43 (comment) msgid "Cyrillic font" msgstr "" -#. Documentation/snippets/utf-8.ly:41 (variable) +#. Documentation/snippets/utf-8.ly:44 (variable) msgid "bulgarian" msgstr "" -#. Documentation/snippets/utf-8.ly:45 (variable) +#. Documentation/snippets/utf-8.ly:48 (variable) msgid "hebrew" msgstr "" -#. Documentation/snippets/utf-8.ly:49 (variable) +#. Documentation/snippets/utf-8.ly:52 (variable) msgid "japanese" -msgstr "日本" +msgstr "" -#. Documentation/snippets/utf-8.ly:56 (comment) +#. Documentation/snippets/utf-8.ly:59 (comment) msgid "\\\"a legal song to you\\\"" msgstr "" -#. Documentation/snippets/utf-8.ly:57 (variable) +#. Documentation/snippets/utf-8.ly:60 (variable) msgid "portuguese" msgstr "" -#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:19 (variable) +#. Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly:22 (variable) msgid "upline" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:20 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) msgid "leftbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:21 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:24 (variable) msgid "rightbrace" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:23 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:26 (variable) msgid "dropLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:30 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:33 (variable) msgid "raiseLyrics" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:37 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:40 (variable) msgid "skipFour" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:39 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) msgid "lyricsA" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:41 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:44 (variable) msgid "lyricsB" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:42 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:45 (variable) msgid "lyricsC" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:43 (variable) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:46 (variable) msgid "lyricsD" msgstr "" -#. Documentation/snippets/vertically-centered-common-lyrics.ly:50 (context id) +#. Documentation/snippets/vertically-centered-common-lyrics.ly:53 (context id) msgid "m" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:69 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:59 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:68 (variable) -msgid "sopMusic" -msgstr "" - -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:72 (variable) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:62 (variable) -#. Documentation/snippets/vocal-ensemble-template.ly:71 (variable) +#. Documentation/snippets/vocal-ensemble-template.ly:92 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:94 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:74 (variable) msgid "sopWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:101 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:89 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:99 (context id) -msgid "women" -msgstr "女" +#. Documentation/snippets/vocal-ensemble-template.ly:120 (comment) +#. Documentation/snippets/vocal-ensemble-template.ly:135 (comment) +msgid "this is needed for lyrics above a staff" +msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:107 (context id) -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:99 (context id) -#. Documentation/snippets/vocal-ensemble-template.ly:111 (context id) -msgid "men" -msgstr "男" +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:123 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly:132 (comment) +msgid "This is needed for lyrics above a staff" +msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:95 (comment) -msgid "we could remove the line about this with the line below, since we want" +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:109 (comment) +msgid "we could remove the line about this with the line below, since" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:96 (comment) -msgid "the alto lyrics to be below the alto Voice anyway." +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:110 (comment) +msgid "we want the alto lyrics to be below the alto Voice anyway." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:97 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:111 (comment) msgid "\\new Lyrics \\lyricsto \\\"altos\\\" \\altoWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:106 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:122 (comment) msgid "again, we could replace the line above this with the line below." msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:107 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly:123 (comment) msgid "\\new Lyrics \\lyricsto \\\"basses\\\" \\bassWords" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:64 (comment) #. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:77 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:92 (comment) -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:108 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:90 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:105 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:121 (comment) msgid "refrain" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:70 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:83 (variable) msgid "SoloNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:81 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:94 (variable) msgid "SoloLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:86 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:99 (variable) msgid "SopranoNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:97 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:110 (variable) msgid "SopranoLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:102 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:115 (variable) msgid "BassNotes" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:113 (variable) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:126 (variable) msgid "BassLyrics" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:120 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:133 (context id) msgid "SoloVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:124 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:137 (context id) msgid "SopranoVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:127 (context id) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:140 (context id) msgid "BassVoice" msgstr "" -#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:134 (comment) +#. Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly:147 (comment) msgid "these lines prevent empty staves from being printed" msgstr "" -#. Documentation/snippets/volta-multi-staff.ly:17 (variable) +#. Documentation/snippets/vocal-headword.ly:32 (comment) +msgid "L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:33 (comment) +msgid "mm. 216 -- 236" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:34 (comment) +msgid "Text: F. von Schiller" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:39 (comment) +msgid "make first bar number be shown" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:41 (comment) +msgid "\\tempo \\\"Presto\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:42 (comment) +msgid "\\compressFullBarRests R2.*8" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:64 (comment) +msgid "put fermata closer to staff" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:68 (comment) +msgid "\\time 4/4 \\tempo \\\"Allegro assai\\\"" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:69 (comment) +#. Documentation/snippets/vocal-headword.ly:71 (comment) +msgid "R1" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:70 (comment) +msgid "e''4^\\f d r2" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:72 (comment) +msgid "e4( ^\\f d2) a8([ g)]" +msgstr "" + +#. Documentation/snippets/vocal-headword.ly:78 (comment) +msgid "Freu -- de, Freu -- de,__" +msgstr "" + +#. Documentation/snippets/volta-multi-staff.ly:20 (variable) msgid "voltaMusic" msgstr "" -#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:25 (variable) +#. Documentation/snippets/volta-text-markup-using-repeatcommands.ly:28 (variable) msgid "voltaAdLib" msgstr "" -#. Documentation/snippets/wind-headword.ly:21 (comment) +#. Documentation/snippets/wind-headword.ly:24 (comment) msgid "Tchaikovsky" msgstr "" -#. Documentation/snippets/wind-headword.ly:22 (comment) +#. Documentation/snippets/wind-headword.ly:25 (comment) msgid "Nutcracker Suite, VII Dance of the Merlitons" msgstr "" @@ -10043,3 +11542,9 @@ msgstr "脚注" msgid "Table of Contents" msgstr "目录" + +#~ msgid "coloredheads" +#~ msgstr "有颜色的头" + +#~ msgid "noclef" +#~ msgstr "无谱号" diff --git a/Documentation/search-box.ihtml b/Documentation/search-box.ihtml index d789109484..eaac109bcc 100644 --- a/Documentation/search-box.ihtml +++ b/Documentation/search-box.ihtml @@ -1,11 +1,19 @@ + + diff --git a/Documentation/snippets.tely b/Documentation/snippets.tely index b44f4c5a90..2d30fa92ae 100644 --- a/Documentation/snippets.tely +++ b/Documentation/snippets.tely @@ -41,15 +41,20 @@ by the authors. @include macros.itexi @ifnothtml +@macro nodeprefix{PRE} +@end macro @macro lydoctitle{TEXT} @unnumberedsec \TEXT\ @end macro @end ifnothtml @ifhtml +@macro nodeprefix{PRE} +@unmacro lydoctitle @macro lydoctitle{TEXT} -@node \TEXT\ -@unnumberedsec \TEXT\ +@node \PRE\: \\TEXT\\ +@unnumberedsec \\TEXT\\ +@end macro @end macro @end ifhtml diff --git a/Documentation/snippets/GNUmakefile b/Documentation/snippets/GNUmakefile index 7fccf9189c..cfc96feec5 100644 --- a/Documentation/snippets/GNUmakefile +++ b/Documentation/snippets/GNUmakefile @@ -1,8 +1,14 @@ depth = ../.. +.PHONY: snippets + SUBDIRS = new EXTRA_DIST_FILES = $(call src-wildcard,*.snippet-list) \ $(call src-wildcard,*.ly) $(call src-wildcard,*.itely) \ README +SNIPPET_LY_FILES = $(call src-wildcard,*.ly) +OUT_SNIPPET_LY_FILES = $(SNIPPET_LY_FILES:%.ly=out/%.ly) include $(depth)/make/stepmake.make + +default: diff --git a/Documentation/snippets/accordion-discant-symbols.ly b/Documentation/snippets/accordion-discant-symbols.ly index fc62bf4a64..c7b4da7a67 100644 --- a/Documentation/snippets/accordion-discant-symbols.ly +++ b/Documentation/snippets/accordion-discant-symbols.ly @@ -4,28 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "keyboards" - -%% 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 -símbolos modificando los argumentos de @code{\\raise}. - -" - doctitlees = "Símbolos de acordeón discanto" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Symbole für Akkordeon-Diskantregister" - texidocde = " -Diskantregister für Akkordeon können mit @code{\\markup} dargestellt werden. -Die vertikale Position der einzelnen Elemente werden mit @code{\\raise} -angepasst. -" + lsrtags = "keyboards, specific-notation, symbols-and-glyphs, workaround" texidoc = " Accordion discant-specific symbols are added using @code{\\markup}. The @@ -38,6 +20,7 @@ vertical placement of the symbols can be tweaked by changing the doctitle = "Accordion-discant symbols" } % begin verbatim + discant = \markup { \musicglyph #"accordion.discant" } @@ -197,4 +180,3 @@ accViolin = ^\markup { c4 d\accPiccolo e f c4 d\accViolin e f } - diff --git a/Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly b/Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly index c814dec1d4..6e15690aa8 100644 --- a/Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly +++ b/Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly @@ -4,31 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "chords, ancient-notation, contexts-and-engravers" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Al escribir un bajo cifrado, podemos situar las cifras encima o debajo -de las notas del bajo, mediante la definición de la propiedad -@code{BassFigureAlignmentPositioning #'direction} (exclusivamente -dentro de un contexto @code{Staff}). Se puede elegir entre @code{#UP} -(o @code{#1}, arriba), @code{#CENTER} (o @code{#0}, centrado) y -@code{#DOWN} (o @code{#-1}, abajo). - -Esta propiedad se puede cambiar tantas veces como queramos. Utilice -@code{\\once \\override} si no quiere que la sobreescritura se aplique -a toda la partitura. - -" - doctitlees = "Añadir un bajo cifrado encima o debajo de las notas" - - -%% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5 - doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes" + lsrtags = "ancient-notation, chords, contexts-and-engravers" texidoc = " When writing a figured bass, you can place the figures above or below @@ -45,19 +24,20 @@ whole score. doctitle = "Adding a figured bass above or below the notes" } % begin verbatim + bass = { \clef bass g4 b, c d e d8 c d2 } continuo = \figuremode { - <_>4 <6>8 - \once \override Staff.BassFigureAlignmentPositioning #'direction = #CENTER - <5/>8 <_>4 + <_>4 <6>4 <5/>4 \override Staff.BassFigureAlignmentPositioning #'direction = #UP - <_+>4 <6> + %\bassFigureStaffAlignmentUp + < _+ >4 <6> \set Staff.useBassFigureExtenders = ##t \override Staff.BassFigureAlignmentPositioning #'direction = #DOWN + %\bassFigureStaffAlignmentDown <4>4. <4>8 <_+>4 } \score { @@ -66,5 +46,3 @@ continuo = \figuremode { \context Staff = bassStaff \continuo >> } - - diff --git a/Documentation/snippets/adding-ambitus-per-voice.ly b/Documentation/snippets/adding-ambitus-per-voice.ly index 3a426b13c8..406cbfd5f1 100644 --- a/Documentation/snippets/adding-ambitus-per-voice.ly +++ b/Documentation/snippets/adding-ambitus-per-voice.ly @@ -4,36 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, staff-notation, vocal-music" -%% 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 -debe desplazar manualmente para evitar colisiones. - -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Ambitus können pro Stimme gesetzt werden. In diesem Fall müssen sie -manuell verschoben werden, um Zusammenstöße zu verhindern. - -" -doctitlede = "Ambitus pro Stimme hinzufügen" - -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e - texidocfr = " -L'@code{ambitus} peut être individualisé par voix. Il faut en pareil -cas éviter qu'ils se chevauchent. - -" - doctitlefr = "Un ambitus par voix" - - texidoc = " Ambitus can be added per voice. In this case, the ambitus must be moved manually to prevent collisions. @@ -42,6 +17,7 @@ manually to prevent collisions. doctitle = "Adding ambitus per voice" } % begin verbatim + \new Staff << \new Voice \with { \consists "Ambitus_engraver" @@ -59,4 +35,3 @@ manually to prevent collisions. b1 } >> - diff --git a/Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly b/Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly index bd4f6f5fc8..cd413a7d78 100644 --- a/Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly +++ b/Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly @@ -4,22 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, contexts-and-engravers, breaks" - -%% 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 -(reservado para hacer sitio a un cambio de armadura que de todas -formas no se va a imprimir). La solución alternativa es añadir un -ajuste para @code{Staff.explicitKeySignatureVisibility} como se -muestra en el ejemplo. - -" - doctitlees = "Añadir un pentagrama adicional en un salto de línea" + lsrtags = "breaks, contexts-and-engravers, staff-notation, workaround" texidoc = " When adding a new staff at a line break, some extra space is @@ -33,6 +21,7 @@ workaround is to add a setting of doctitle = "Adding an extra staff at a line break" } % begin verbatim + \score { \new StaffGroup \relative c'' { \new Staff @@ -56,4 +45,3 @@ workaround is to add a setting of >> } } - diff --git a/Documentation/snippets/adding-an-extra-staff.ly b/Documentation/snippets/adding-an-extra-staff.ly index a619f07d8f..205d47e79a 100644 --- a/Documentation/snippets/adding-an-extra-staff.ly +++ b/Documentation/snippets/adding-an-extra-staff.ly @@ -4,18 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, contexts-and-engravers" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede añadir (posiblemente de forma temporal) un pentagrama -nuevo una vez que la pieza ha comenzado. - -" - doctitlees = "Añadir un pentagrama nuevo" + lsrtags = "contexts-and-engravers, really-simple, staff-notation" texidoc = " An extra staff can be added (possibly temporarily) after the start of a @@ -25,6 +17,7 @@ piece. doctitle = "Adding an extra staff" } % begin verbatim + \score { << \new Staff \relative c'' { @@ -47,4 +40,3 @@ piece. } >> } - diff --git a/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly b/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly index 89473c6d1e..27d3823480 100644 --- a/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly +++ b/Documentation/snippets/adding-bar-lines-to-chordnames-context.ly @@ -4,28 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "chords" - -%% 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 -@code{Bar_engraver}. - -" - doctitlees = "Añadir barras de compás al contexto de nombres de acorde (ChordNames)" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Um Taktstriche in einem @code{ChordNames}-Kontext anzeigen zu lassen, muss der -@code{Bar_engraver} hinzugefügt werden. - -" - doctitlede = "Tatkstriche in einen ChordNames-Kontext hinzufügen" + lsrtags = "chords, specific-notation" texidoc = " To add bar line indications in the @code{ChordNames} context, add the @@ -35,6 +17,7 @@ To add bar line indications in the @code{ChordNames} context, add the doctitle = "Adding bar lines to ChordNames context" } % begin verbatim + \new ChordNames \with { \override BarLine #'bar-extent = #'(-2 . 2) \consists "Bar_engraver" @@ -42,5 +25,3 @@ To add bar line indications in the @code{ChordNames} context, add the \chordmode { f1:maj7 f:7 bes:7 } - - diff --git a/Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly b/Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly index 9a020117ac..5a05847427 100644 --- a/Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly +++ b/Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly @@ -4,27 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, expressive-marks" - -%% 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 -que intercalar. Por ejemplo, al introducir una barra manual, el -corchete izquierdo de apertura se debe escribir después de la nota -inicial y de su duración, no antes. De forma similar, el corchete -derecho de cierre debe seguir inmediatamente a la nota que se -quiere situar al final del barrado, incluso si esta nota resulta -estar dentro de un grupo de valoración especial. Este fragmento de -código muestra cómo combinar el barrado manual, las ligaduras de -expresión y de unión y las ligaduras de fraseo, con secciones de -valoración especial (encerradas entre llaves). - -" - doctitlees = "Añadir barras ligaduras de expresión y de unión etc. cuando se usan ritmos con y sin grupos de valoración especial." + lsrtags = "expressive-marks, rhythms" texidoc = " LilyPond syntax can involve many unusual placements for parentheses, @@ -41,6 +24,7 @@ sections (enclosed within curly braces). doctitle = "Adding beams slurs ties etc. when using tuplet and non-tuplet rhythms" } % begin verbatim + { r16[ g16 \times 2/3 { r16 e'8] } g16( a \times 2/3 { b d e') } @@ -48,4 +32,3 @@ sections (enclosed within curly braces). \time 2/4 \times 4/5 { e'32\( a b d' e' } a'4.\) } - diff --git a/Documentation/snippets/adding-drum-parts.ly b/Documentation/snippets/adding-drum-parts.ly index ffe4316837..a0b3264d0f 100644 --- a/Documentation/snippets/adding-drum-parts.ly +++ b/Documentation/snippets/adding-drum-parts.ly @@ -4,39 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, percussion" - -%% 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 -introducción de partes para percusión es muy fácil: las percusiones se -sitúan en sus propias posiciones de pentagrama (con una clave -especial) y tienen las cabezas correspondientes al instrumento. Es -posible añadir un símbolo adicional a la percusión o reducir el número -de líneas. - -" - doctitlees = "Escritura de partes de percusión" - - -%% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea - texidocfr = " -Grâce à la puissance des outils préconfigurés tels que la fonction -@code{\\drummode} et le contexte @code{DrumStaff}, la saisie de -parties pour percussions est extrêmement simplifiée : chaque composant -d'une batterie trouve sa place sur une portée dédiée (avec une clef -spécifique) et les têtes de note sont spécifiques à chaque élément. -Il est également possible d'affecter un symbole particulier à chaque -élément, tout comme de restreindre le nombre de lignes de la portée. - -" - - doctitlefr = "Ajout de parties de batterie" - + lsrtags = "percussion, preparing-parts, really-simple, rhythms, specific-notation" texidoc = " Using the powerful pre-configured tools such as the @code{\\drummode} @@ -50,6 +21,7 @@ lines is possible. doctitle = "Adding drum parts" } % begin verbatim + drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh hhc4 r4 r2 } drl = \drummode { bd4 sn8 bd bd4 << bd ss >> bd8 tommh tommh bd toml toml bd tomfh16 tomfh } timb = \drummode { timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb } @@ -72,10 +44,6 @@ timb = \drummode { timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb } >> \layout { } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 120 4) - } + \tempo 4 = 120 } } - diff --git a/Documentation/snippets/adding-extra-fingering-with-scheme.ly b/Documentation/snippets/adding-extra-fingering-with-scheme.ly new file mode 100644 index 0000000000..2fe4bcd6c4 --- /dev/null +++ b/Documentation/snippets/adding-extra-fingering-with-scheme.ly @@ -0,0 +1,53 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "scheme-language" + + texidoc = " +You can add various stuff to notes using @code{make-music}. In this +example, an extra fingering is attached to a note. + + +In general, first do a @code{display} of the music you want to create, +then write a function that will structure the music for you. + + + +" + doctitle = "Adding extra fingering with scheme" +} % begin verbatim + + +#(define (make-text-script x) + (make-music 'TextScriptEvent + 'direction DOWN + 'text (make-simple-markup x))) + +#(define (add-text-script m x) + (if (equal? (ly:music-property m 'name) 'EventChord) + (set! (ly:music-property m 'elements) + (cons (make-text-script x) + (ly:music-property m 'elements))) + (let ((es (ly:music-property m 'elements)) + (e (ly:music-property m 'element))) + (map (lambda (y) (add-text-script y x)) es) + (if (ly:music? e) + (add-text-script e x)))) + m) + +addScript = +#(define-music-function (parser location script music ) + ( string? ly:music? ) + (add-text-script music script)) + +\score { + { + \addScript "6" { c'4-3 } + } +} diff --git a/Documentation/snippets/adding-fingerings-to-a-score.ly b/Documentation/snippets/adding-fingerings-to-a-score.ly index 9be53a6096..0d32b04f1c 100644 --- a/Documentation/snippets/adding-fingerings-to-a-score.ly +++ b/Documentation/snippets/adding-fingerings-to-a-score.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, fretted-strings" + lsrtags = "editorial-annotations, fretted-strings, really-simple" texidoc = " Fingering instructions can be entered using a simple syntax. @@ -16,7 +16,7 @@ Fingering instructions can be entered using a simple syntax. doctitle = "Adding fingerings to a score" } % begin verbatim + \relative c'' { c4-1 d-2 f-4 e-3 } - diff --git a/Documentation/snippets/adding-fingerings-to-tablatures.ly b/Documentation/snippets/adding-fingerings-to-tablatures.ly index 5ecb570e7a..af261ba71d 100644 --- a/Documentation/snippets/adding-fingerings-to-tablatures.ly +++ b/Documentation/snippets/adding-fingerings-to-tablatures.ly @@ -1,39 +1,24 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Para añadir digitaciones a las tablaturas, utilice una combinación de -@code{\\markup} y @code{\\finger}. -" - - doctitlees = "Añadir digitaciones a las tablaturas" - + lsrtags = "fretted-strings, specific-notation" -%% Translation of GIT committish: 96ee692447057131395fe4c1f9fe55805b710aa6 - texidocfr = "Ajout de doigtés à des tablatures" - - doctitlefr = " -L'ajout de doigtés à des tablatures s'obtient en conjuguant des -@code{\\markup} et des @code{\\finger}. -" - - lsrtags = "fretted-strings" texidoc = " To add fingerings to tablatures, use a combination of @code{\\markup} and @code{\\finger}. + " doctitle = "Adding fingerings to tablatures" } % begin verbatim + one = \markup { \finger 1 } two = \markup { \finger 2 } threeTwo = \markup { @@ -59,4 +44,3 @@ threeFour = \markup { ^>^\threeTwo[ b\2 e\4] } } - diff --git a/Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly b/Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly index e2c62cd250..528b3f3853 100644 --- a/Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly +++ b/Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, vocal-music" + lsrtags = "staff-notation, symbols-and-glyphs, vocal-music" texidoc = " This snippet defines the @code{\\splitStaffBarLine} command, which adds @@ -49,7 +49,7 @@ splitStaffBarLine = { (ly:bar-line::print grob) X RIGHT (grob-interpret-markup grob splitStaffBarLineMarkup) - 0 0)) + 0)) \break } @@ -102,4 +102,3 @@ splitStaffBarLine = { } } } - diff --git a/Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly b/Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly index e1c2d865f4..cd77b63ccc 100644 --- a/Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly +++ b/Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly @@ -1,77 +1,15 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.20 +\version "2.16.0" \header { lsrtags = "staff-notation, vocal-music" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - Este ejemplo muestra una forma de simplificar la adición de muchas -notas guía orquestales a la reducción de piano en una partitura vocal. -La función musical @code{\\cueWhile} toma cuatro argumentos: la música -de la que se toma la cita, como viene definida por @code{\\addQuote}, -el nombre que insertar antes de las notas guía, y después @code{#UP} o -@code{#DOWN} para especificar @code{\\voiceOne} con el nombre encima -del pentagrama o bien @code{\\voiceTwo} con el nombre debajo del -pentagrama, y finalmente la música de piano con la que las notas guía -deben aparecer en paralelo. El nombre del instrumento citado se -posiciona a la izquierda de las notas guía. Se pueden citar muchos -pasajes como guía, pero no se pueden superponer en el tiempo entre -ellos. - -" - - doctitlees = "Añadir notas guía orquestales a una partitura vocal" - - - - -%% Translation of GIT committish: 27b1197f3bae8512c14d946752cd3e40e7c76016 - - - texidocde = " -Hier wird gezeigt, wie man das Hinzufügen von vielen Orchsterstichnoten -zu einem Klavierauszug hinzufügen kann. Die musikalische Funktion -@code{\\cueWhile} braucht vier Argumente: Die Noten, von denen die -Stichnoten formatiert werden sollen, definiert durch @code{\\addQuote}, -die Bezeichnung, die mit den Noten angegeben werden soll, dann entweder -@code{#UP} (hoch) oder @code{#DOWN} (runter) zur Angabe von entweder -@code{\\voiceOne} mit der Bezeichnung über dem System oder @code{\\voiceTwo} -mit der Bezeichnung unter dem System, und schließlich die Klaviermusik, -die parallel zu den Stichnoten gespielt werden soll. Die Bezeichnung des -Stichnoteninstruments wird links der Stichnoten positioniert. Viele -Abschnitte können zitiert werden, aber sie dürfen sich nicht überlappen. - -" - doctitlede = "Orchesterstichnoten zu einem Klavierauszug hinzufügen" - - -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 - - texidocfr = " -Lorsque le nombre d'instruments cités dans la réduction pour piano se -multiplie, vous pourriez avoir intérêt à créer votre propre fonction -pour gérer ces repères. La fonction musicale @code{\\cueWhile} prend -quatre arguments@tie{}: la musique d'où provient la citation, telle que -définie par @code{\\addQuote}, le nom qui sera mentionné en regard de -cette citation, son positionnement -- @code{#UP} ou @code{#DOWN} selon -qu'il sera attribué à @code{\\voiceOne} et placé au-dessus ou -@code{\\voiceTwo} et placé en dessous -- et enfin la musique du piano -qui interviendra en parallèle. Le nom de l'instrument en question -viendra s'aligner sur la gauche de la citation. Bien que vous puissiez -effectuer plusieurs citations, elle ne peuvent être simultanées. - -" - doctitlefr = "Indication de l'instrument cité dans l'accompagnement d'une -partition pour chœur" - - texidoc = " This shows one approach to simplify adding many orchestral cues to the piano reduction in a vocal score. The music function @code{\\cueWhile} @@ -88,15 +26,16 @@ can be cued, but they cannot overlap each other in time. doctitle = "Adding orchestral cues to a vocal score" } % begin verbatim + cueWhile = #(define-music-function (parser location instrument name dir music) (string? string? ly:dir? ly:music?) #{ - \cueDuring $instrument #$dir { + \cueDuring $instrument #dir { \once \override TextScript #'self-alignment-X = #RIGHT \once \override TextScript #'direction = $dir - s1*0-\markup { \tiny $name } + <>-\markup { \tiny #name } $music } #}) diff --git a/Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly b/Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly index 3d9ff364df..4287411de0 100644 --- a/Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly +++ b/Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly @@ -4,18 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks" - -%% 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}. - -" - doctitlees = "Encerrar entre paréntesis una marca expresiva o una nota de un acorde" + lsrtags = "expressive-marks, workaround" texidoc = " The @code{\\parenthesize} function is a special tweak that encloses @@ -26,10 +18,10 @@ objects in parentheses. The associated grob is @code{ParenthesesItem}. doctitle = "Adding parentheses around an expressive mark or chordal note" } % begin verbatim + \relative c' { c2-\parenthesize -> \override ParenthesesItem #'padding = #0.1 \override ParenthesesItem #'font-size = #-4 2 } - diff --git a/Documentation/snippets/adding-the-current-date-to-a-score.ly b/Documentation/snippets/adding-the-current-date-to-a-score.ly index 59ffd8753c..32fd66cdfd 100644 --- a/Documentation/snippets/adding-the-current-date-to-a-score.ly +++ b/Documentation/snippets/adding-the-current-date-to-a-score.ly @@ -4,26 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "text, titles" - -%% 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. -" - doctitlees = "Añadir la fecha actual a una partitura" - - -%% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5 - texidocfr = " -Avec un peu de code Scheme, voici comment ajouter facilement -la date du jour à votre partition. -" - - doctitlefr = "Ajout de la date du jour à une partition" + lsrtags = "really-cool, scheme-language, text, titles" texidoc = " With a little Scheme code, the current date can easily be added to a @@ -33,6 +17,7 @@ score. doctitle = "Adding the current date to a score" } % begin verbatim + % first, define a variable to hold the formatted date: date = #(strftime "%d-%m-%Y" (localtime (current-time))) @@ -51,4 +36,3 @@ date = #(strftime "%d-%m-%Y" (localtime (current-time))) \markup { \date } - diff --git a/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly b/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly index 41c8a80c27..fc0d3673d1 100644 --- a/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly +++ b/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly @@ -4,47 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "repeats" -%% 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 -se imprimen así normalmente sólo encima del pentagrama superior. Esto -se puede ajustar añadiendo el grabador @code{Volta_engraver} al -contexto de @code{Staff} en que deban aparecer los corchetes; véase -también el fragmento de código @qq{Volta multi staff}. - -" - doctitlees = "Añadir corchetes de primera y segunda vez a más pentagramas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Der @code{Volta_engraver} befindet sich im @code{Score}-Kontext und Klammern -werden deshalb nur auf dem obersten System dargestellt. Das kann umgangen -werden, indem man den @code{Volta_engraver} zu dem @code{Staff}-Kontext -hinzufügt, in dem die Klammern zusätzlichen vorkommen sollen. Siehe auch -das \"Volta multi staff\"-Schnipsel. - -" - doctitlede = "Volta-Klammern zu zusätzlichen Systemen hinzufügen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte -@code{Score} ; les crochets précédant une reprise s'impriment donc -seulement au-dessus de la portée du haut. On peut ajuster cela en -déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui -doivent comporter ces crochets. - -" - doctitlefr = "Ajout du crochet de reprise à d'autres portées" - - texidoc = " The @code{Volta_engraver} by default resides in the @code{Score} context, and brackets for the repeat are thus normally only printed @@ -56,10 +20,10 @@ should appear; see also the @qq{Volta multi staff} snippet. doctitle = "Adding volta brackets to additional staves" } % begin verbatim + << \new Staff { \repeat volta 2 { c'1 } \alternative { c' } } \new Staff { \repeat volta 2 { c'1 } \alternative { c' } } \new Staff \with { \consists "Volta_engraver" } { c'2 g' e' a' } \new Staff { \repeat volta 2 { c'1 } \alternative { c' } } >> - diff --git a/Documentation/snippets/additional-voices-to-avoid-collisions.ly b/Documentation/snippets/additional-voices-to-avoid-collisions.ly index e8eb502cfa..749559f016 100644 --- a/Documentation/snippets/additional-voices-to-avoid-collisions.ly +++ b/Documentation/snippets/additional-voices-to-avoid-collisions.ly @@ -4,44 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "simultaneous-notes" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Voces adicionales para evitar colisiones" - texidoces = " -En ciertos casos de polifonía compleja, se necesitan voces adicionales -para evitar colisiones entre las notas. Si se necesitan más de cuatro -voces paralelas, las voces adicionales se añaden definiendo una -variable que utiliza la función de Scheme @code{context-spec-music}. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Ein einigen Fällen von sehr komplexer polyphoner Musik sind zusätzliche -Stimmen notwendig, um Zusammenstöße zwischen den Noten zu vermeiden. -Wenn mehr als vier parallele Stimmen benötigt werden, können zusätzliche -Stimmen definiert werden, indem eine Variable mit der Funktion -@code{context-spec-music} definiert wird. - -" - doctitlede = "Zusätzliche Stimmen um Zusammenstöße zu vermeiden" - -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c - texidocfr = " -Dans certains cas de musique polyphonie complexe, une voix -supplémentaire peut permettre d'éviter les risques de collision. -Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme -@code{context-spec-music} permet d'ajouter des d'autres voix. - -" - doctitlefr = "Ajout de voix pour éviter les collisions" - - texidoc = " In some instances of complex polyphonic music, additional voices are necessary to prevent collisions between notes. If more than four @@ -52,6 +19,7 @@ a variable using the Scheme function @code{context-spec-music}. doctitle = "Additional voices to avoid collisions" } % begin verbatim + voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice) \relative c'' { @@ -88,4 +56,3 @@ voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice) } >> } - diff --git a/Documentation/snippets/adjusting-grace-note-spacing.ly b/Documentation/snippets/adjusting-grace-note-spacing.ly index 693b47c48c..a1869c9aed 100644 --- a/Documentation/snippets/adjusting-grace-note-spacing.ly +++ b/Documentation/snippets/adjusting-grace-note-spacing.ly @@ -4,20 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% 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}. - -" - - doctitlees = "Ajuste del espaciado de las notas de adorno" - texidoc = " The space given to grace notes can be adjusted using the @code{spacing-increment} property of @code{Score.GraceSpacing}. @@ -26,6 +17,7 @@ The space given to grace notes can be adjusted using the doctitle = "Adjusting grace note spacing" } % begin verbatim + graceNotes = { \grace { c4 c8 c16 c32 } c8 @@ -39,4 +31,3 @@ graceNotes = { \revert Score.GraceSpacing #'spacing-increment \graceNotes } - diff --git a/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly b/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly index 719edcd850..551e960537 100644 --- a/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly +++ b/Documentation/snippets/adjusting-lyrics-vertical-spacing.ly @@ -1,32 +1,14 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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. + lsrtags = "correction-wanted, spacing, text, vocal-music, workaround" -" - doctitlees = "Ajuste del especiado vertical de la letra" - - -%% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea - texidocfr = " -Cet extrait illustre la manière de rapprocher la ligne de paroles -de la portée. - -" - doctitlefr = "Ajustement de l'espacement vertical des paroles" - - - lsrtags = "text, vocal-music, spacing" texidoc = " This snippet shows how to bring the lyrics line closer to the staff. @@ -34,7 +16,6 @@ This snippet shows how to bring the lyrics line closer to the staff. doctitle = "Adjusting lyrics vertical spacing" } % begin verbatim - % Default layout: << \new Staff \new Voice = melody \relative c' { @@ -44,7 +25,6 @@ This snippet shows how to bring the lyrics line closer to the staff. } \new Lyrics \lyricsto melody { aa aa aa aa aa aa aa aa aa } - % Reducing the minimum space below the staff and above the lyrics: \new Staff { \new Voice = melody \relative c' { c4 d e f @@ -52,6 +32,7 @@ This snippet shows how to bring the lyrics line closer to the staff. c1 } } + % Reducing the minimum space below the staff and above the lyrics: \new Lyrics \with { \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = #'((basic-distance . 1)) } diff --git a/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly b/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly index bea2dfe562..86f26c7154 100644 --- a/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly +++ b/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly @@ -4,41 +4,14 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Puede ser necesario trucar la propiedad -@code{shortest-duration-space} para poder ajustar el tamaño de las -caídas y subidas de tono («falls» y «doits»). - -" - doctitlees = "Ajustar la forma de las subidas y caídas de tono" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Die @code{shortest-duration-space}-Eigenschaft kann verändert werden, um -das Aussehen von unbestimmten Glissandi anzupassen. - -" - doctitlede = "Das Aussehen von unbestimmten Glissandi anpassen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -La propriété @code{shortest-duration-space} peut devoir être retouchée -pour ajuster l'apparence des chutes ou sauts. - -" - doctitlefr = "Ajustement du galbe des chutes ou sauts" - - texidoc = " -The @code{shortest-duration-space} property may have to be tweaked to -adjust the shape of falls and doits. +The @code{shortest-duration-space} property may be tweaked to adjust +the shape of falls and doits. " doctitle = "Adjusting the shape of falls and doits" @@ -51,4 +24,3 @@ adjust the shape of falls and doits. c2-\bendAfter #8.5 c2-\bendAfter #-6 } - diff --git a/Documentation/snippets/aligning-and-centering-instrument-names.ly b/Documentation/snippets/aligning-and-centering-instrument-names.ly index 678c12df15..f4a55903a1 100644 --- a/Documentation/snippets/aligning-and-centering-instrument-names.ly +++ b/Documentation/snippets/aligning-and-centering-instrument-names.ly @@ -4,22 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "text, paper-and-layout, titles" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La alineación horizontal de los nombres de instrumento se puede -trucar modificando la propiedad @code{Staff.InstrumentName -#'self-alignment-X}. Las variables de @code{\\layout} -@code{indent} y @code{short-indent} definen el espacio en que se -alinean los nombres de instrumento antes del primer sistema y de -los siguientes, respectivamente. - -" - doctitlees = "Alinear y centrar los nombres de instrumento" + lsrtags = "paper-and-layout, text, titles" texidoc = " The horizontal alignment of instrument names is tweaked by changing the @@ -32,6 +20,7 @@ and the following systems, respectively. doctitle = "Aligning and centering instrument names" } % begin verbatim + \paper { left-margin = 3\cm } diff --git a/Documentation/snippets/aligning-bar-numbers.ly b/Documentation/snippets/aligning-bar-numbers.ly index 2e38655429..e09a298f33 100644 --- a/Documentation/snippets/aligning-bar-numbers.ly +++ b/Documentation/snippets/aligning-bar-numbers.ly @@ -4,50 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Los números de compás se alinean de forma predeterminada por la -derecha con su objeto padre. Éste es por lo general el borde -izquierdo de una línea o, si los números se imprimen dentro de la -línea, el lado izquierdo de una línea divisoria. Los números -también se pueden situar directamente sobre la barra de compás o -alineados por la izquierda con ella. - -" - - doctitlees = "Alineación de los números de compás" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Taktnummern sind standardmäßig links an ihrem Ursprungsobjekt -ausgerichtet. Das ist normalerweise die linke Ecke einer Linie oder, -wenn die Nummern innerhalb einer Zeile gesetzt werden, auf der -linken Seite eines Taktstrichs. Die Nummern können auch -direkt über dem Taktstrich positioniert werden oder rechts vom -Taktstrich gesetzt werden. - -" - doctitlede = "Taktnummern ausrichten" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Les numéros de mesure s'alignent en principe sur la droite de l'objet -dont ils dépendent. C'est normalement le coin gauche de la portée ou, -en cours de ligne, à gauche de la barre. Vous pouvez toutefois les -centrer par rapport à la barre ou les afficher à droite de la barre. - -" - doctitlefr = "Alignement des numéros de mesure" - texidoc = " Bar numbers by default are right-aligned to their parent object. This is usually the left edge of a line or, if numbers are printed within a @@ -58,6 +19,7 @@ positioned directly over the bar line or left-aligned to the bar line. doctitle = "Aligning bar numbers" } % begin verbatim + \relative c' { \set Score.currentBarNumber = #111 \override Score.BarNumber #'break-visibility = #all-visible @@ -73,4 +35,3 @@ positioned directly over the bar line or left-aligned to the bar line. \override Score.BarNumber #'self-alignment-X = #LEFT c1 | c1 } - diff --git a/Documentation/snippets/aligning-marks-with-various-notation-objects.ly b/Documentation/snippets/aligning-marks-with-various-notation-objects.ly index 85ee5dce1f..ddab547d5c 100644 --- a/Documentation/snippets/aligning-marks-with-various-notation-objects.ly +++ b/Documentation/snippets/aligning-marks-with-various-notation-objects.ly @@ -4,69 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" -%% 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 -objetos se encuentran @code{ambitus}, @code{breathing-sign}, -@code{clef}, @code{custos}, @code{staff-bar}, @code{left-edge}, -@code{key-cancellation}, @code{key-signature} y @code{time-signature}. - -En estos casos, las marcas de texto se centran horizontalmente sobre -el objeto, aunque esto se puede cambiar, como se muestra en la segunda -línea de este ejemplo (en una partitura con varios pentagramas, se -debe hacer este ajuste para todos los pentagramas). - -" - doctitlees = "Alinear marcas con varios objetos de notación" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wenn angegeben, können Textzeichen auch an anderen Objekten als Taktstrichen -ausgerichtet werden. Zu diesen Objekten gehören @code{ambitus}, -@code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar}, -@code{left-edge}, @code{key-cancellation}, @code{key-signature} und -@code{time-signature}. - -In diesem Fall werden die Zeichen horizontal über dem Objekt zentriert. -Diese Ausrichtung kann auch geändert werden, wie die zweite Zeile -des Beispiels zeigt. In einer Partitur mit vielen Systemen sollte -diese Einstellung für alle Systeme gemacht werden. - -" - - doctitlede = "Zeichen an verschiedenen Notationsobjekten ausrichten" - -%% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 - texidocfr = " -Les indications textuelles peuvent s'aligner par rapport à d'autres -objets que des barres de mesure, tels que @code{ambitus}, -@code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar}, -@code{left-edge}, @code{key-cancellation}, @code{key-signature}, ou -@code{time-signature}. - - - -Par défaut, les indications textuelles sont alignées avec le milieu -des objets de notation. Bien entendu, vous pouvez modifier les -propriétés des objets en question pour obtenir un autre -résultat comme l'illustre la deuxième ligne de l'exemple. Dans le cas -de portées multiples, ces réglages doivent être faits pour chacune -d'entre elles. - - - -" - doctitlefr = "Alignement des indications par rapport à divers objets -de notation" - - texidoc = " If specified, text marks may be aligned with notation objects other than bar lines. These objects include @code{ambitus}, @@ -94,7 +36,7 @@ be done for all the staves). \override Score.RehearsalMark #'break-align-symbols = #'(clef) \key a \major \clef treble - \mark "↓" + \mark \markup { \char ##x2193 } e1 % the RehearsalMark will be centered above the TimeSignature diff --git a/Documentation/snippets/aligning-objects-created-with-the--mark-command.ly b/Documentation/snippets/aligning-objects-created-with-the--mark-command.ly index 5c55788f94..8ab123ef88 100644 --- a/Documentation/snippets/aligning-objects-created-with-the--mark-command.ly +++ b/Documentation/snippets/aligning-objects-created-with-the--mark-command.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" @@ -17,6 +17,7 @@ This behavior can be modified to align at right or left. doctitle = "Aligning objects created with the \\mark command" } % begin verbatim + \relative c' { c1 \mark "(Center)" c1 @@ -28,5 +29,3 @@ This behavior can be modified to align at right or left. \mark "(Right)" c1 } - - diff --git a/Documentation/snippets/aligning-syllables-with-melisma.ly b/Documentation/snippets/aligning-syllables-with-melisma.ly new file mode 100644 index 0000000000..7acef57d56 --- /dev/null +++ b/Documentation/snippets/aligning-syllables-with-melisma.ly @@ -0,0 +1,42 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "text, vocal-music" + + texidoc = " +By default, lyrics syllables that start a melisma are left aligned on +their note. The alignment can be altered using the +@code{lyricMelismaAlignment} property. + +" + doctitle = "Aligning syllables with melisma" +} % begin verbatim + +\score { + << + \new Staff { + \relative c'' + \new Voice = "vocal" { + c d~^\markup default d e + c d~^\markup "right aligned" d e + c d~^\markup "center aligned" d e + c d~^\markup "reset to default" d e + } + } + \new Lyrics \lyricsto "vocal" \lyricmode { + word word word + \set lyricMelismaAlignment = #RIGHT + word word word + \set lyricMelismaAlignment = #CENTER + word word word + \unset lyricMelismaAlignment + word word word + } + >> +} diff --git a/Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly b/Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly index 3692a31030..01d5dbd819 100644 --- a/Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly +++ b/Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly @@ -4,40 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, fretted-strings, spacing" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Las cifras de digitación orientadas verticalmente se colocan de forma -predeterminada fuera del pentagrama. Sin embargo, este comportamiento -se puede cancelar. Nota: se debe usar una construcción de acorde <>, -aunque sea una sola nota. - - -" - doctitlees = "Permitir que las digitaciones se impriman dentro del pentagrama" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Normalerweise werden vertikal orientierte Fingersatzzahlen außerhalb des Systems -gesetzt. Das kann aber verändert werden. - -" - doctitlede = "Fingersatz auch innerhalb des Systems setzen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -L'empilement des indications de doigté se fait par défaut à l'extérieur -de la portée. Néanmoins, il est possible d'annuler ce comportement. - -" - doctitlefr = "Impression des doigtés à l'intérieur de la portée" - + lsrtags = "editorial-annotations, fretted-strings, spacing, specific-notation" texidoc = " By default, vertically oriented fingerings are positioned outside the @@ -48,9 +18,9 @@ chord construct <>, even if it is only a single note. doctitle = "Allowing fingerings to be printed inside the staff" } % begin verbatim + \relative c' { 2 \override Fingering #'staff-padding = #'() 4 } - diff --git a/Documentation/snippets/altering-the-length-of-beamed-stems.ly b/Documentation/snippets/altering-the-length-of-beamed-stems.ly index 02406380d3..f42ad922b2 100644 --- a/Documentation/snippets/altering-the-length-of-beamed-stems.ly +++ b/Documentation/snippets/altering-the-length-of-beamed-stems.ly @@ -4,29 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, tweaks-and-overrides" -%% 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 -@code{beamed-lengths} de los detalles (@code{details}) del objeto -@code{Stem}. Si se utiliza un solo valor como argumento, la longitud -se aplica a todas las plicas. Si se usan varios argumentos, el -primero se aplica a las corcheas, el sgundo a las semicorcheas y así -sucesivamente. El último argumento también se aplica a todas las -figuras que son mmás cortas que la longitud de la figura del último -argumento. También se pueden usar argumentos no enteros. - -" - -doctitlees = "Alterar la longitud de las plicas unidas por una barra" - - - texidoc = " Stem lengths on beamed notes can be varied by overriding the @code{beamed-lengths} property of the @code{details} of the @@ -40,6 +22,7 @@ of the final argument. Non-integer arguments may also be used. doctitle = "Altering the length of beamed stems" } % begin verbatim + \relative c'' { \override Stem #'(details beamed-lengths) = #'(2) a8[ a] a16[ a] a32[ a] @@ -52,4 +35,3 @@ of the final argument. Non-integer arguments may also be used. \revert Stem #'details a8[ a] a16[ a] a32[ a] r16 } - diff --git a/Documentation/snippets/alternative-bar-numbering.ly b/Documentation/snippets/alternative-bar-numbering.ly new file mode 100644 index 0000000000..74b608255e --- /dev/null +++ b/Documentation/snippets/alternative-bar-numbering.ly @@ -0,0 +1,35 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.24 +\version "2.16.0" + +\header { + lsrtags = "editorial-annotations, staff-notation, tweaks-and-overrides" + texidoc = "Two alternative methods for bar numbering can be set, + especially for when using repeated music." + doctitle = "Alternative bar numbering" +} % begin verbatim + + +\relative c'{ + \set Score.alternativeNumberingStyle = #'numbers + \repeat volta 3 { c4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 \break + \set Score.alternativeNumberingStyle = #'numbers-with-letters + \repeat volta 3 { c,4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 +} diff --git a/Documentation/snippets/alternative-breve-note.ly b/Documentation/snippets/alternative-breve-note.ly index 65bb464c20..75012ba33d 100644 --- a/Documentation/snippets/alternative-breve-note.ly +++ b/Documentation/snippets/alternative-breve-note.ly @@ -1,21 +1,27 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + \header { - lsrtags = "rhythms,expressive-marks" - texidoc = "This code demonstrates how to use the alternative breve note -with two vertical lines on each side of the notehead instead of one line." - doctitle = "Alternative breve notehead with double vertical lines" -} % begin verbatim + lsrtags = "expressive-marks, rhythms" + texidoc = " +This code demonstrates how to use the alternative breve note with two +vertical lines on each side of the notehead instead of one line. + +" + doctitle = "Alternative breve note" +} % begin verbatim \relative c'' { \time 4/2 + c\breve | \override Staff.NoteHead #'style = #'altdefault - c\breve | b\breve + b\breve + \revert Staff.NoteHead #'style + a\breve } diff --git a/Documentation/snippets/ambitus-with-multiple-voices.ly b/Documentation/snippets/ambitus-with-multiple-voices.ly index 1d44332347..229d08a66a 100644 --- a/Documentation/snippets/ambitus-with-multiple-voices.ly +++ b/Documentation/snippets/ambitus-with-multiple-voices.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, vocal-music" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Ámbitos con varias voces" - texidoces = " -La adición del grabador @code{Ambitus_engraver} al contexto de -@code{Staff} crea un solo ámbito por pentagrama, incluso en el caso de -pentagramas con varias voces. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Indem man den @code{Ambitus_engraver} im @code{Staff}-Kontext -hinzufügt, erhält man einen einzigen Ambitus pro System, auch in dem -Fall, dass mehrere Stimmen sich im gleichen System befinden. -" - doctitlede = "Ambitus mit vielen Stimmen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Si plusieurs voix se trouvent sur une même portée, on peut attribuer le -graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir -l'ambitus de toutes les voix cumulées, non d'une seule des voix actives. - -" - doctitlefr = "Ambitus sur plusieurs voix" - - texidoc = " Adding the @code{Ambitus_engraver} to the @code{Staff} context creates a single ambitus per staff, even in the case of staves with multiple @@ -46,6 +18,7 @@ voices. doctitle = "Ambitus with multiple voices" } % begin verbatim + \new Staff \with { \consists "Ambitus_engraver" } @@ -61,5 +34,3 @@ voices. b1 } >> - - diff --git a/Documentation/snippets/ambitus.ly b/Documentation/snippets/ambitus.ly index 882dab4608..0111acda59 100644 --- a/Documentation/snippets/ambitus.ly +++ b/Documentation/snippets/ambitus.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, vocal-music" @@ -20,6 +20,7 @@ Accidentals only show up if they are not part of the key signature. doctitle = "Ambitus" } % begin verbatim + \layout { \context { \Voice @@ -42,4 +43,3 @@ Accidentals only show up if they are not part of the key signature. } } >> - diff --git a/Documentation/snippets/analysis-brackets-above-the-staff.ly b/Documentation/snippets/analysis-brackets-above-the-staff.ly index 75aa9b1a19..65baecd336 100644 --- a/Documentation/snippets/analysis-brackets-above-the-staff.ly +++ b/Documentation/snippets/analysis-brackets-above-the-staff.ly @@ -4,19 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, tweaks-and-overrides" - -%% 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 -colocarlos por encima. - -" - doctitlees = "Corchetes de análisis encima del pentagrama" + lsrtags = "editorial-annotations, really-simple, tweaks-and-overrides" texidoc = " Simple horizontal analysis brackets are added below the staff by @@ -27,6 +18,7 @@ staff instead. doctitle = "Analysis brackets above the staff" } % begin verbatim + \layout { \context { \Voice @@ -38,4 +30,3 @@ staff instead. c2\startGroup d2\stopGroup } - diff --git a/Documentation/snippets/ancient-fonts.ly b/Documentation/snippets/ancient-fonts.ly index 1884c275b0..64a083b1a5 100644 --- a/Documentation/snippets/ancient-fonts.ly +++ b/Documentation/snippets/ancient-fonts.ly @@ -1,42 +1,24 @@ -%% 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 -%% +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.9 %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "ancient-notation" - -%% 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 -antigua. -" - - doctitlees = "Tipografía de música antigua" - - -%% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea - texidocfr =" -Voici comment graver la plupart, sinon tous les symboles que -LilyPond prend en charge en matière de musique ancienne. - -" - doctitlefr = "Gravure de musique ancienne" + lsrtags = "ancient-notation, symbols-and-glyphs" texidoc = " Shown here are many (all?) of the symbols that are included in LilyPond's support for ancient notation. - - - " doctitle = "Ancient fonts" } % begin verbatim + upperStaff = \new VaticanaStaff = "upperStaff" << \context VaticanaVoice << \transpose c c { @@ -230,7 +212,7 @@ lowerStaff = \new MensuralStaff = "lowerStaff" << \MensuralVoice \override NoteHead #'style = #'neomensural \override Rest #'style = #'neomensural - \override Stem #'flag-style = #'mensural + \override Flag #'style = #'mensural \override Stem #'thickness = #1.0 } \context { @@ -248,4 +230,3 @@ lowerStaff = \new MensuralStaff = "lowerStaff" << } } } - diff --git a/Documentation/snippets/ancient-headword.ly b/Documentation/snippets/ancient-headword.ly index dc9cc0c34b..a0117699c4 100644 --- a/Documentation/snippets/ancient-headword.ly +++ b/Documentation/snippets/ancient-headword.ly @@ -1,27 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} +\header { + lsrtags = "headword" + texidoc = " +. -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" +" + doctitle = "Ancient headword" } % begin verbatim - \include "gregorian.ly" \score { diff --git a/Documentation/snippets/ancient-notation-intro.itely b/Documentation/snippets/ancient-notation-intro.itely index a6de3f24c6..30b13b9828 100644 --- a/Documentation/snippets/ancient-notation-intro.itely +++ b/Documentation/snippets/ancient-notation-intro.itely @@ -1,5 +1,6 @@ @node Ancient notation @unnumbered Ancient notation +@nodeprefix Ancient notation @ruser{Ancient notation} diff --git a/Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly b/Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly index 37037111bc..efdb39ae33 100644 --- a/Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly +++ b/Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly @@ -1,59 +1,15 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.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: 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 -solamente cabezas de nota de blanca y de negra, y unas marcas -especiales que indican silencios de distintas longitudes. - -" - - doctitlees = "Plantilla para notación de música antigua (transcripción moderna de canto gregoriano)" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - - texidocde = " -Dieses Beispiel zeigt eine moderne Transkription des Gregorianischen -Chorals. Hier gibt es keine Takte, keine Notenhälse und es werden nur -halbe und Viertelnoten verwendet. Zusätzliche Zeichen zeigen die -Länge von Pausen an. -" - - doctitlede = "Vorlage für Alte Notation -- moderne Transkription des gregorianischen Chorals" - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Voici comment vous pourriez transcrire du grégorien. Pour mémoire, il -n'y a en grégorien ni de découpage en mesure, ni de hampe ; seules -sont utilisées des têtes de note blanches ou noires, ainsi que des -signes spécifiques permettant d'indiquer des silences de différentes durées. - -" - doctitlefr = "Exemples de notation ancienne -- transcription moderne de musique grégorienne" - texidoc = " This example demonstrates how to do modern transcription of Gregorian music. Gregorian music has no measure, no stems; it uses only half and @@ -64,6 +20,7 @@ length. doctitle = "Ancient notation template -- modern transcription of gregorian music" } % begin verbatim + \include "gregorian.ly" chant = \relative c' { @@ -88,6 +45,7 @@ verba = \lyricmode { \remove "Time_signature_engraver" \remove "Bar_engraver" \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } \context { \Voice @@ -99,4 +57,3 @@ verba = \lyricmode { } } } - diff --git a/Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly b/Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly index df5e844eb1..9b7029cc28 100644 --- a/Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly +++ b/Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly @@ -4,70 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Al transcribir música mensural, es útil un «incipit» al compienzo -de la pieza para indicar la tonalidad y el tempo -originales. Aunque los músicos actuales están acostumbrados a las -barras de compás para reconocer con más facilidad los patrones -rítmicos, durante el período de la música mensural aún no se -habíen inventado las líneas divisorias; de hecho, la medida solía -cambiar a cada pocas notas. Como compromiso, a menudo las líneas -divisorias se imprimen entre los pentagramas en vez de hacerlo -encima de ellos. - -" - doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein -Incipit an den Anfang des Stückes zu stellen, damit klar ist, wie -Tempo und Schlüssel in der Originalnotation gesetzt waren. Während -heutzutage Musiker an Taktlinien gewöhnt sind, um Rhythmen schneller -zu erkennen, wurden diese in der Mensuralmusik nicht verwendet. -Tatsächlich ändern sich die Rhythmen auch oft alle paar Noten. Als -ein Kompromiss werden die Notenlinien nicht auf dem System, sondern -zwischen den Systemen geschrieben. -" - -doctitlede = "Vorlage für Alte Notation -- moderne Transkription von Mensuralmusik" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet -d'indiquer la tonalité et le tempo d'origine. Si les musiciens sont de -nos jours habitués aux barres de mesures qui présentent la structure -rythmique d'une œuvre, elles n'étaient pas en vigueur à l'époque où ces -pièces ont été composées, d'autant plus que la @qq{métrique} pouvait -changer au fil des notes. Un compromis consiste à imprimer des barres -entre les portées plutôt que sur chacune d'elles. - -" - doctitlefr = "Exemples de notation ancienne -- transcription moderne de musique mensurale" + lsrtags = "ancient-notation, real-music, really-cool, template" texidoc = " When transcribing mensural music, an incipit at the beginning of the @@ -82,12 +22,14 @@ on the staves. doctitle = "Ancient notation template -- modern transcription of mensural music" } % begin verbatim + global = { \set Score.skipBars = ##t % incipit \once \override Score.SystemStartBracket #'transparent = ##t - \override Score.SpacingSpanner #'spacing-increment = #1.0 % tight spacing + % Set tight spacing + \override Score.SpacingSpanner #'spacing-increment = #1.0 \key f \major \time 2/2 \once \override Staff.TimeSignature #'style = #'neomensural @@ -103,7 +45,6 @@ global = { \bar "" % main - \revert Score.SpacingSpanner #'spacing-increment % CHECK: no effect? \cadenzaOff % turn bar lines on again \once \override Staff.Clef #'full-size-change = ##t \set Staff.forceClef = ##t @@ -112,7 +53,7 @@ global = { \override Voice.NoteHead #'style = #'default \override Voice.Rest #'style = #'default - % FIXME: setting printKeyCancellation back to #t must not + % Setting printKeyCancellation back to #t must not % occur in the first bar after the incipit. Dto. for forceClef. % Therefore, we need an extra \skip. \skip 1*1 @@ -299,17 +240,12 @@ bassusLyrics = \lyricmode { % no slurs \override Slur #'transparent = ##t - % Comment in the below "\remove" command to allow line - % breaking also at those barlines where a note overlaps - % into the next bar. The command is commented out in this - % short example score, but especially for large scores, you - % will typically yield better line breaking and thus improve - % overall spacing if you comment in the following command. - %\remove "Forbid_line_break_engraver" + % The command below can be commented out in + % short scores, but especially for large scores you + % will typically yield better line breaking and improve + % overall spacing if you do not comment the command out. + + \remove "Forbid_line_break_engraver" } } } - - - - diff --git a/Documentation/snippets/ancient-time-signatures.ly b/Documentation/snippets/ancient-time-signatures.ly index 746ab81e68..fc6c07fe09 100644 --- a/Documentation/snippets/ancient-time-signatures.ly +++ b/Documentation/snippets/ancient-time-signatures.ly @@ -4,18 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "ancient-notation" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Las indicaciones de compás también se pueden grabar en estilo antiguo. - -" - doctitlees = "Indicaciones de compás antiguas" - texidoc = " Time signatures may also be engraved in an old style. @@ -25,8 +18,8 @@ Time signatures may also be engraved in an old style. doctitle = "Ancient time signatures" } % begin verbatim + { \override Staff.TimeSignature #'style = #'neomensural s1 } - diff --git a/Documentation/snippets/anglican-psalm-template.ly b/Documentation/snippets/anglican-psalm-template.ly index 056f2d1bba..44920dce47 100644 --- a/Documentation/snippets/anglican-psalm-template.ly +++ b/Documentation/snippets/anglican-psalm-template.ly @@ -4,44 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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 = " -Diese Vorlage zeigt eine Art, anglikanische Psalmengesänge zu setzen. Hier -wird auch gezeigt, wie Strophen als einfacher Text unter den Noten hinzugefügt -werden können. Zwei Strophen sind in unterschiedlicher Weise notiert um mehr -Möglichkeiten darzustellen. -" - doctitlede = "Vorlage für anglikanischen Psalm" - - -%% Translation of GIT committish: 092f85605dcea69efff5ef31de4ff100346d6ef8 - - texidocfr = " -Cet exemple illustre la manière de présenter un cantique tel qu'on le -trouve dans l'église anglicane. Vous noterez comment sont ajoutés les -couplets indépendamment de la musique. Dans le but de vous montrer -plusieurs styles, comparez le code des deux couplets. - -" - doctitlefr = "Psalmodie anglicane" - + lsrtags = "template, vocal-music" texidoc = " This template shows one way of setting out an Anglican psalm chant. It @@ -53,6 +19,7 @@ more possibilities. doctitle = "Anglican psalm template" } % begin verbatim + SopranoMusic = \relative g' { g1 | c2 b | a1 | \bar "||" a1 | d2 c | c b | c1 | \bar "||" diff --git a/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly b/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly index bdc7c54219..113ee328b7 100644 --- a/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly +++ b/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly @@ -4,78 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "pitches, editorial-annotations" - -%% 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 -estilos de cabezas de nota para cada grado de la escala (según esté -establecido por la armadura o por la propiedad @code{tonic}). Esta -propiedad requiere un conjunto de símbolos, que pueden ser puramente -arbitrarios (se permiten expresiones geométricas como @code{triangle}, -triángulo, @code{cross}, aspas, y @code{xcircle}, círculo con aspas) o -basados en una antigua tradición americana de grabado (ciertos nombres -de nota latinos trambién se permiten). - -Dicho esto, para imitar antiguos cancioneros americanos, existen varios -estilos predefinidos de cabezas de nota disponibles a través de -instrucciones de abreviatura como @code{\\aikenHeads} o -@code{\\sacredHarpHeads}. - -Este ejemplo muestra distintas formas de obtener cabezas de notas con forma, -y muestra la capacidad de transportar una melodía sin perder la -correspondencia entre las funciones armónicas y los estilos de cabezas de -nota. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Notenkopfstile basierend auf der Tonleiterstufe erstellen" - texidocde = " -Die @code{shapeNoteStyles}-(NotenFormenStile)-Eigenschaft kann benutzt -werden, um verschiedene Notenstile für jeden Schritt der Tonleiter -zu definieren (vorgegeben von der Tonart oder der @qq{tonic} -(Tonika)-Eigenschaft. Diese Eigenschaft braucht eine Anzahl von Symbolen, -welche beliebig sein können (geometrische Ausdrücke wie @code{triangle} -(Dreieck), @code{cross} (Kreuz) und @code{xcircle} (X-Kreis) sind erlaubt) -oder basierend auf einer alten amerikanischen Notensatztradition (einige -lateinische Notenbezeichnungen sind auch erlaubt). - -Um alte amerikanische Liederbücher zu imitieren, gibt es einige -vordefinierte Notenstile wie etwa @code{\\aikenHeads} (im Stil von Aiken) -oder @code{\\sacredHarpHeads} (im Stil der Sacred Harp-Tradition). - -Dieses Beispiel zeigt, wie man unterschiedlich geformte Noten erhält und -eine Melodie transponieren kann, ohne dass das Verhältnis zwischen den -harmonischen Funktionen und dem Notenstil verloren geht. - -" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -La propriété @code{shapeNoteStyles} permet d'affecter un profil -particulier à chaque degré de la gamme -- à partir de l'armure ou -de la propriété @code{tonic}. Ses valeurs sont constituées d'une liste -de symboles, qu'il s'agisse de formes géométriques (@code{triangle}, -@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs -américains (avec quelques noms de note latins). - -LilyPond dispose de deux raccourcis, @code{\\aikenHeads} et -@code{\\sacredHarpHeads}, permettant de reproduire déanciens recueils de -chansons américaines. - -L'exemple suivant montre plusieurs manières de profiler les têtes de -note, ainsi que la capacité de trnsposer tout en respectant la fonction -harmonique de chaque note dans la gamme. - -" - doctitlefr = "Profilage des notes selon leur degré dans la gamme" - + lsrtags = "editorial-annotations, pitches" texidoc = " The @code{shapeNoteStyles} property can be used to define various note @@ -98,6 +30,7 @@ correspondence between harmonic functions and note head styles. doctitle = "Applying note head styles depending on the step of the scale" } % begin verbatim + fragment = { \key c \major c2 d @@ -122,4 +55,3 @@ fragment = { \fragment } } - diff --git a/Documentation/snippets/arabic-improvisation.ly b/Documentation/snippets/arabic-improvisation.ly index e3c7d91637..b4354ab717 100644 --- a/Documentation/snippets/arabic-improvisation.ly +++ b/Documentation/snippets/arabic-improvisation.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "world-music" -%% 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 -@code{\\cadenzaOn}. Podría ser necesario ajustar el estilo de -alteraciones accidentales, porque la ausencia de líneas divisorias -hará que la alteración aparezca una sola vez. He aquí un ejemplo de -cómo podría ser el comienzo de una improvisación @emph{hijaz}: - -" -doctitlees = "Improvisación de música árabe" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Bei Improvisation oder @emph{taqasim}, die zeitlich frei gespielt -werden, kann die Taktart ausgelassen werden und @code{\\cadenzaOn} -kann eingesetzt werden. Es kann nötig sein, den Versetzungszeichenstil -anzupassen, weil sonst die Versetzungszeichen nur einmal ausgegeben -werden, da keine Taktlinien gesetzt sind. Hier ein Beispiel, wie -der Beginn einer @emph{hijaz}-Improvisation aussehen könnte: - -" - - doctitlede = "Arabische Improvisation" - texidoc = " For improvisations or taqasim which are temporarily free, the time signature can be omitted and @code{\\cadenzaOn} can be used. Adjusting @@ -46,11 +20,12 @@ of what could be the start of a hijaz improvisation: doctitle = "Arabic improvisation" } % begin verbatim + \include "arabic.ly" \relative sol' { \key re \kurd - #(set-accidental-style 'forget) + \accidentalStyle "forget" \cadenzaOn sol4 sol sol sol fad mib sol1 fad8 mib re4. r8 mib1 fad sol } diff --git a/Documentation/snippets/asymmetric-slurs.ly b/Documentation/snippets/asymmetric-slurs.ly index af401ccd8d..8a16d3de60 100644 --- a/Documentation/snippets/asymmetric-slurs.ly +++ b/Documentation/snippets/asymmetric-slurs.ly @@ -4,21 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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. - -" - doctitlees = "Ligaduras asimétricas" - - - texidoc = " Slurs can be made asymmetric to match an asymmetric pattern of notes better. @@ -27,6 +17,7 @@ better. doctitle = "Asymmetric slurs" } % begin verbatim + slurNotes = { d,8( a' d f a f' d, a) } \relative c' { @@ -36,4 +27,3 @@ slurNotes = { d,8( a' d f a f' d, a) } \once \override Slur #'eccentricity = #3.0 \slurNotes } - diff --git a/Documentation/snippets/automatic-beam-subdivisions.ly b/Documentation/snippets/automatic-beam-subdivisions.ly index 07e85822dc..d824ef92e5 100644 --- a/Documentation/snippets/automatic-beam-subdivisions.ly +++ b/Documentation/snippets/automatic-beam-subdivisions.ly @@ -1,23 +1,13 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se pueden subdividir las barras automáticamente. Estableciendo la -propiedad @code{subdivideBeams}, las barras se subdividen en -posiciones de pulso (tal y como se especifica en @code{beatLength}). - -" - doctitlees = "Subdivisiones de barra automáticas" - - lsrtags = "rhythms" + lsrtags = "automatic-notation, connecting-notes, rhythms" texidoc = " Beams can be subdivided automatically. By setting the property @@ -28,7 +18,6 @@ specified in @code{baseMoment}). doctitle = "Automatic beam subdivisions" } % begin verbatim - \new Staff { \relative c'' { << @@ -53,4 +42,3 @@ specified in @code{baseMoment}). b32^"baseMoment 1 16"[ a g f c' b a g] } } - diff --git a/Documentation/snippets/automatic-notation.snippet-list b/Documentation/snippets/automatic-notation.snippet-list new file mode 100644 index 0000000000..dfed0d822f --- /dev/null +++ b/Documentation/snippets/automatic-notation.snippet-list @@ -0,0 +1,6 @@ +automatic-beam-subdivisions.ly +forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly +generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly +preventing-extra-naturals-from-being-automatically-added.ly +preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly +vocal-ensemble-template-with-automatic-piano-reduction.ly diff --git a/Documentation/snippets/automatically-change-durations.ly b/Documentation/snippets/automatically-change-durations.ly new file mode 100644 index 0000000000..5f5f7c05e3 --- /dev/null +++ b/Documentation/snippets/automatically-change-durations.ly @@ -0,0 +1,43 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "rhythms" + + texidoc = " +shiftDurations can be used to change the note lengths of a +piece of music. It takes two arguments - the scaling factor as a power +of two, and the number of dots to be added as a positive integer. + +" + doctitle = "Automatically change durations" +} % begin verbatim + + +\paper { indent = 0 } + +music = \relative c'' { a1 b2 c4 d8 r } + +\score { + \new Voice { + \time 4/2 + \music + \time 4/4 + \shiftDurations #1 #0 { \music } + \time 2/4 + \shiftDurations #2 #0 { \music } + \time 4/1 + \shiftDurations #-1 #0 { \music } + \time 8/1 + \shiftDurations #-2 #0 { \music } + \time 6/2 + \shiftDurations #0 #1 { \music } + \time 7/2 + \shiftDurations #0 #2 { \music } + } +} diff --git a/Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly b/Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly index 2e01a83956..c726e37555 100644 --- a/Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly +++ b/Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly @@ -4,25 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, editorial-annotations, chords, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Las digitaciones y números de cuerda que se aplican a las notas -individuales evitan automáticamente las barras y las plicas de las -figuras, pero esto no es cierto de forma predeterminada para las -digitaciones y números de cuerda que se aplican sobre notas -individuales de acordes. El ejemplo siguiente muestra cómo se puede -sobreescribir este comportamiento predeterminado. - -" - doctitlees = "Evitar colisiones con digitaciones de acordes" - + lsrtags = "chords, editorial-annotations, rhythms, tweaks-and-overrides" texidoc = " Fingerings and string numbers applied to individual notes will @@ -35,6 +20,7 @@ overridden. doctitle = "Avoiding collisions with chord fingerings" } % begin verbatim + \relative c' { \set fingeringOrientations = #'(up) \set stringNumberOrientations = #'(up) @@ -55,4 +41,3 @@ overridden. \override StrokeFinger #'add-stem-support = ##t 8 } - diff --git a/Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly b/Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly index bf66f54d28..8946b8a29c 100644 --- a/Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly +++ b/Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.14.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.30 +\version "2.16.0" \header { lsrtags = "chords, fretted-strings" @@ -13,74 +14,54 @@ Here is how to print bar chords, or half-bar chords (just uncomment the appropriate line for to select either one). -The syntax is @code{\\bbarre #'fret_number' @{ notes @} } - - - - +The syntax is @code{\\bbarre #\"@var{fret number}\" @{ notes @} }. " - doctitle = "Bar chords notation for Guitar ( with Text Spanner)" + doctitle = "Bar chords notation for Guitar (with Text Spanner)" } % begin verbatim + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %%%%%%% Cut here ----- Start 'bbarred.ly' -%% PostScript ------------------------------- -pScript= \markup { - \with-dimensions #'(0 . 0.8) #'(0 . 2.0) - \postscript #" - 0.15 setlinewidth - /Times-Roman findfont - 2.0 scalefont - setfont - (C)show %%change with B if you prefer - %(B)show %%change with C if you prefer - stroke - 0.7 -0.5 moveto - 0.7 1.7 lineto - stroke" +%% C with slash ------------------------------- +cWithSlash = \markup { + \combine \roman C \translate #'(0.6 . -0.4) \draw-line #'(0 . 2.0) } %% Span ----------------------------------- %% Syntax: \bbarre #"text" { notes } - text = any number of box -bbarre= #(define-music-function (barre location str music) (string? ly:music?) - (let ((spanned-music - (let ((first-element #f) - (last-element #f) - (first-found? #f)) - (music-map (lambda (m) - (if (eqv? (ly:music-property m 'name) 'EventChord) - (begin - (if (not first-found?) - (begin - (set! first-found? #t) - (set! first-element m))) - (set! last-element m))) - m) - music) - (if first-found? - (begin - (set! (ly:music-property first-element 'elements) - (cons (make-music 'TextSpanEvent 'span-direction -1) - (ly:music-property first-element 'elements))) - (set! (ly:music-property last-element 'elements) - (cons (make-music 'TextSpanEvent 'span-direction 1) - (ly:music-property last-element 'elements))))) - music))) - (make-music 'SequentialMusic - 'origin location - 'elements (list #{ - \once \override TextSpanner #'font-size = #-2 - \once \override TextSpanner #'font-shape = #'upright - \once \override TextSpanner #'staff-padding = #3 - \once \override TextSpanner #'style = #'line - \once \override TextSpanner #'to-barline = ##f - \once \override TextSpanner #'bound-details = #'((left (Y . 0) (padding . 0.25) (attach-dir . -2)) (right (Y . 0) (padding . 0.25) (attach-dir . 2))) - \once \override TextSpanner #'bound-details #'right #'text = \markup { \draw-line #'( 0 . -.5) } - \once \override TextSpanner #'bound-details #'left #'text = \markup { \pScript $str } +bbarre = +#(define-music-function (barre location str music) (string? ly:music?) + (let ((elts (extract-named-music music '(NoteEvent EventChord)))) + (if (pair? elts) + (let ((first-element (first elts)) + (last-element (last elts))) + (set! (ly:music-property first-element 'articulations) + (cons (make-music 'TextSpanEvent 'span-direction -1) + (ly:music-property first-element 'articulations))) + (set! (ly:music-property last-element 'articulations) + (cons (make-music 'TextSpanEvent 'span-direction 1) + (ly:music-property last-element 'articulations)))))) + #{ + \once \override TextSpanner #'font-size = #-2 + \once \override TextSpanner #'font-shape = #'upright + \once \override TextSpanner #'staff-padding = #3 + \once \override TextSpanner #'style = #'line + \once \override TextSpanner #'to-barline = ##f + \once \override TextSpanner #'bound-details = + #`((left + (text . ,#{ \markup { \draw-line #'( 0 . -.5) } #}) + (Y . 0) + (padding . 0.25) + (attach-dir . -2)) + (right + (text . ,#{ \markup { \cWithSlash #str } #}) + (Y . 0) + (padding . 0.25) + (attach-dir . 2))) %% uncomment this line for make full barred - % \once \override TextSpanner #'bound-details #'left #'text = \markup { "B" $str } - #} - spanned-music)))) + % \once \override TextSpanner #'bound-details #'left #'text = \markup { "B" #str } + $music + #}) %% %%%%%%% Cut here ----- End 'bbarred.ly' %% Copy and change the last line for full barred. Rename in 'fbarred.ly' diff --git a/Documentation/snippets/beam-endings-in-score-context.ly b/Documentation/snippets/beam-endings-in-score-context.ly index 414fac1bb7..d5b9e07ea9 100644 --- a/Documentation/snippets/beam-endings-in-score-context.ly +++ b/Documentation/snippets/beam-endings-in-score-context.ly @@ -1,49 +1,19 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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 -modificar tanto en los niveles de @code{Staff} como de -@code{Voice}: - -" - doctitlees = "Finales de barra en el contexto Score" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Balkenenderegeln, die im @code{Score}-Kontext definiert werden, wirken -sich auf alle Systeme aus, können aber auf @code{Staff}- und -@code{Voice}-Ebene neu verändert werden: - -" - doctitlede = "Balkenenden auf Score-Ebene" - - - -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - texidocfr = " -Les règles de ligatures définies au niveau du contexte @code{Score} -s'appliqueront à toutes les portées. Il est toutefois possible de -moduler au niveau @code{Staff} ou @code{Voice}@tie{}: - -" - doctitlefr = "Définition de règles de ligature pour la partition" - lsrtags = "rhythms" + texidoc = " -Beat structure rules specified in the @code{Score} context apply to all +Beam-ending rules specified in the @code{Score} context apply to all staves, but can be modified at both @code{Staff} and @code{Voice} levels: + " doctitle = "Beam endings in Score context" } % begin verbatim diff --git a/Documentation/snippets/beam-grouping-in-7-8-time.ly b/Documentation/snippets/beam-grouping-in-7-8-time.ly index 4fb1bbcc35..5d77375ddc 100644 --- a/Documentation/snippets/beam-grouping-in-7-8-time.ly +++ b/Documentation/snippets/beam-grouping-in-7-8-time.ly @@ -1,57 +1,24 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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 -barras automáticas se debe especificar la forma de agrupamiento. -Por ejemplo, para agrupar todas las barras en la forma 2-3-2 en el -compás de 7/8, especificamos los finales de barra en 2/8 y 5/8: - -" - doctitlees = "Agrupamiento de las barras en el compás de 7/8" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Es gibt keine automatischen Balkengruppen für 7/8-Takte. Wenn diese -Taktart benötigt wird, müssen die Gruppierungen definiert werden. Um -beispielsweise alle Noten in 2/8-3/8-2/8 aufzuteilen, müssen Balkenenden -für 2/8 und 5/8 definiert werden: - -" - doctitlede = "Balkengruppen für 7/8-Takte" - - -%% Translation of GIT committish: 548076f550a2b7fb09f1260f0e5e2bb028ad396c -texidocfr = " -Aucune règle de ligature automatique n'est disponible pour une mesure à -7/8. Il faudra donc, en pareil cas, définir vous-même les règles de -regroupement. Pour, par exemple, ligaturer sur la base de 2/8-3/8-2/8, -il faudra donc définir les terminaisons de 2/8 et 5/8 : - -" - doctitlefr = "Règle de ligature dans une mesure à 7/8" - lsrtags = "rhythms" + texidoc = " -There is no default beat structure specified for 7/8 time, -so if automatic beams are required the structure must be specified. For -example, to group all beams 2-3-2 in 7/8 time, specify the -beat structure to be (2 3 2): +There are no default automatic beam groupings specified for 7/8 time, +so if automatic beams are required the grouping must be specified using +beatStructure. For example, to group all beams 2-3-2 in +7/8 time, specify beam endings at 2/8 and 5/8: + " doctitle = "Beam grouping in 7/8 time" } % begin verbatim - \relative c'' { \time 7/8 % rhythm 2-3-2 diff --git a/Documentation/snippets/beams-across-line-breaks.ly b/Documentation/snippets/beams-across-line-breaks.ly index 03c63ea2ca..db8da453b2 100644 --- a/Documentation/snippets/beams-across-line-breaks.ly +++ b/Documentation/snippets/beams-across-line-breaks.ly @@ -4,40 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% 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 -comportamiento como se muestra aquí: - -" - doctitlees = "Barras que atraviesan saltos de línea" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Zeilenumbrüche sind normalerweise während Balken verboten. Das kann geändert -werden. - -" - doctitlede = "Balken über Zeilenumbrüche" - - - -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 - - texidocfr = " -Il est normalement impensable qu'un saut de ligne tombe au milieu d'une -ligature. LilyPond permet néanmoins de l'obtenir. - -" - doctitlefr = "Ligature au moment d'un saut de ligne" - texidoc = " Line breaks are normally forbidden when beams cross bar lines. This behavior can be changed as shown: @@ -46,10 +17,9 @@ behavior can be changed as shown: doctitle = "Beams across line breaks" } % begin verbatim + \relative c'' { \override Beam #'breakable = ##t c8 c[ c] c[ c] c[ c] c[ \break c8] c[ c] c[ c] c[ c] c } - - diff --git a/Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly b/Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly index d807e6c1e0..58cbc13c64 100644 --- a/Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly +++ b/Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly @@ -4,21 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, text" - -%% 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 -a ningún otro objeto gráfico, puesto que las líneas del pentagrama -están en una capa inferior a la de la mayor parte de los otros -objetos. - -" - doctitlees = "Poner en blanco las líneas del pentagrama utilizando la instrucción \\whiteout" + lsrtags = "editorial-annotations, really-cool, text" texidoc = " The @code{\\whiteout} command underlays a markup with a white box. @@ -29,9 +18,9 @@ white box will not overlap any other grob. doctitle = "Blanking staff lines using the \\whiteout command" } % begin verbatim + \layout { ragged-right = ##f } \relative c' { \override TextScript #'extra-offset = #'(2 . 4) c2-\markup { \whiteout \pad-markup #0.5 "middle C" } c } - diff --git a/Documentation/snippets/book-parts.ly b/Documentation/snippets/book-parts.ly index ed6865ca35..52f1e4b469 100644 --- a/Documentation/snippets/book-parts.ly +++ b/Documentation/snippets/book-parts.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "paper-and-layout" @@ -19,6 +19,7 @@ with the book last page. doctitle = "Book parts" } % begin verbatim + #(set-default-paper-size "a6") \book { diff --git a/Documentation/snippets/breathing-signs.ly b/Documentation/snippets/breathing-signs.ly index 85c5d222fd..be5b8c0865 100644 --- a/Documentation/snippets/breathing-signs.ly +++ b/Documentation/snippets/breathing-signs.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks" + lsrtags = "expressive-marks, symbols-and-glyphs" texidoc = " Breathing signs are available in different tastes: commas (default), @@ -17,6 +17,7 @@ ticks, vees and @qq{railroad tracks} (caesura). doctitle = "Breathing signs" } % begin verbatim + \new Staff \relative c'' { \key es \major \time 3/4 diff --git a/Documentation/snippets/broken-crescendo-hairpin.ly b/Documentation/snippets/broken-crescendo-hairpin.ly index ee3506f198..b21fc6e792 100644 --- a/Documentation/snippets/broken-crescendo-hairpin.ly +++ b/Documentation/snippets/broken-crescendo-hairpin.ly @@ -4,33 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks" - -%% 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 -respectiva del regulador, tapándola. El rectángulo se define como -código PostScript dentro de un elemento de marcado de texto. - -Para realizar un ajuste fino de la posición y el tamaño del -elemento de marcado, se puede establecer el número que precede a -@code{setgray} en la definición de PostScript a un valor menor que -la unidad, haciendo que sea de color gris. Los dos números que -están antes de @code{scale} en el código PostScript son los -responsables del ancho y la altura del rectángulo, y los dos -números que están antes de @code{translate} cambian las -coordenadas X e Y de origen del rectángulo. - -Asegúrse de poner el regulador en una capa más baja que el -elemento de marcado de texto para trazar el rectángulo encima del -regulador. - -" - doctitlees = "Regulador interrumpido" + lsrtags = "contemporary-notation, expressive-marks, symbols-and-glyphs" texidoc = " In order to make parts of a crescendo hairpin invisible, the following @@ -53,6 +30,7 @@ draw the rectangle over the hairpin. doctitle = "Broken Crescendo Hairpin" } % begin verbatim + \relative c' { << { @@ -81,4 +59,3 @@ draw the rectangle over the hairpin. } >> } - diff --git a/Documentation/snippets/caesura-railtracks-with-fermata.ly b/Documentation/snippets/caesura-railtracks-with-fermata.ly index f70e7b1535..befcd7ab02 100644 --- a/Documentation/snippets/caesura-railtracks-with-fermata.ly +++ b/Documentation/snippets/caesura-railtracks-with-fermata.ly @@ -4,20 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, tweaks-and-overrides" - -%% 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 -de código presenta una combinación visualmente satisfactoria de estas -dos marcas. - -" - doctitlees = "Cesura tipo \"vías del tren\" con calderón" + lsrtags = "expressive-marks, symbols-and-glyphs, tweaks-and-overrides" texidoc = " A caesura is sometimes denoted by a double @qq{railtracks} breath mark @@ -28,6 +18,7 @@ pleasing combination of railtracks and fermata. doctitle = "Caesura (\"railtracks\") with fermata" } % begin verbatim + \relative c'' { c2. % construct the symbol diff --git a/Documentation/snippets/center-text-below-hairpin-dynamics.ly b/Documentation/snippets/center-text-below-hairpin-dynamics.ly index 04739dc1fa..4f2eb36926 100644 --- a/Documentation/snippets/center-text-below-hairpin-dynamics.ly +++ b/Documentation/snippets/center-text-below-hairpin-dynamics.ly @@ -4,20 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, text" - -%% 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 -también cómo modificar la manera en que se imprime normalmente un -objeto, utilizando código de Scheme. - -" - doctitlees = "Centrar texto debajo de un regulador" + lsrtags = "expressive-marks, really-cool, scheme-language, text" texidoc = " This example provides a function to typeset a hairpin (de)crescendo @@ -29,6 +19,7 @@ normally printed, using some Scheme code. doctitle = "Center text below hairpin dynamics" } % begin verbatim + hairpinWithCenteredText = #(define-music-function (parser location text) (markup?) #{ @@ -37,7 +28,7 @@ hairpinWithCenteredText = (ly:stencil-combine-at-edge (ly:stencil-aligned-to (ly:hairpin::print grob) X CENTER) Y DOWN - (ly:stencil-aligned-to (grob-interpret-markup grob $text) X CENTER)) + (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER)) X LEFT)) #}) diff --git a/Documentation/snippets/centering-markup-on-note-heads-automatically.ly b/Documentation/snippets/centering-markup-on-note-heads-automatically.ly index ce227d016e..36f83dd4a7 100644 --- a/Documentation/snippets/centering-markup-on-note-heads-automatically.ly +++ b/Documentation/snippets/centering-markup-on-note-heads-automatically.ly @@ -4,8 +4,8 @@ % and then run scripts/auxiliar/makelsr.py % % This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% Note: this file works from version 2.15.31 +\version "2.16.0" \header { lsrtags = "text, tweaks-and-overrides, contexts-and-engravers" @@ -25,29 +25,23 @@ been shifted via @code{force-hshift}. #(define (Text_align_engraver ctx) (let ((scripts '()) (note-column #f)) - - `((acknowledgers - (note-column-interface - . ,(lambda (trans grob source) - ;; cache NoteColumn in this Voice context - (set! note-column grob))) - - (text-script-interface - . ,(lambda (trans grob source) - ;; whenever a TextScript is acknowledged, - ;; add it to `scripts' list - (set! scripts (cons grob scripts))))) - - (stop-translation-timestep - . ,(lambda (trans) - ;; if any TextScript grobs exist, - ;; set NoteColumn as X-parent - (and (pair? scripts) - (for-each (lambda (script) - (set! (ly:grob-parent script X) note-column)) - scripts)) - ;; clear scripts ready for next timestep - (set! scripts '())))))) + (make-engraver + (acknowledgers + ((note-column-interface trans grob source) + ;; cache NoteColumn in this Voice context + (set! note-column grob)) + ((text-script-interface trans grob source) + ;; whenever a TextScript is acknowledged, + ;; add it to `scripts' list + (set! scripts (cons grob scripts)))) + ((stop-translation-timestep trans) + ;; if any TextScript grobs exist, + ;; set NoteColumn as X-parent + (for-each (lambda (script) + (set! (ly:grob-parent script X) note-column)) + scripts) + ;; clear scripts ready for next timestep + (set! scripts '()))))) \layout { \context { diff --git a/Documentation/snippets/changing--flageolet-mark-size.ly b/Documentation/snippets/changing--flageolet-mark-size.ly index cf0f664d5a..cc835b9e5d 100644 --- a/Documentation/snippets/changing--flageolet-mark-size.ly +++ b/Documentation/snippets/changing--flageolet-mark-size.ly @@ -4,37 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, unfretted-strings" - -%% 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. - -" - doctitlees = "Cambiar el tamaño de la marca de \\flageolet" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Um den @code{\\flageolet}-Kreis kleiner zu machen, kann diese -Scheme-Funktion eingesetzt werden. - -" - doctitlede = "\\flageolet-Zeichen verkleinern" - -%% Translation of GIT committish: 5b980ee07bba23d3633de1d371fb2926f164e295 - - texidocfr = " -Il est possible de rapetisser le cercle d'un @code{\\flageolet} grâce -à une fonction Scheme. - -" - doctitlefr = "Modifier la taille d'un \\flageolet" - + lsrtags = "expressive-marks, scheme-language, specific-notation, symbols-and-glyphs, unfretted-strings" texidoc = " To make the @code{\\flageolet} circle smaller use the following Scheme @@ -44,6 +17,7 @@ function. doctitle = "Changing \\flageolet mark size" } % begin verbatim + smallFlageolet = #(let ((m (make-articulation "flageolet"))) (set! (ly:music-property m 'tweaks) @@ -57,4 +31,3 @@ smallFlageolet = d4^\flageolet_\markup { default size } d_\flageolet c4^\smallFlageolet_\markup { smaller } c_\smallFlageolet } - diff --git a/Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly b/Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly index ccda4003e3..c9b51f780e 100644 --- a/Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly +++ b/Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly @@ -4,23 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides" - -%% 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}. - -Dentro de un acorde (entre ángulos simples @code{< >}), antes de la -nota que queremos alterar, situamos la instrucción @code{\\tweak} -seguida por @code{#'font-size} y definimos el tamaño adecuado como -@code{#-2} (una cabeza pequeña). - -" - doctitlees = "Modificar el tamaño de una nota suelta de un acorde" + lsrtags = "editorial-annotations, really-simple, simultaneous-notes, specific-notation, tweaks-and-overrides" texidoc = " Individual note heads in a chord can be modified with the @@ -39,7 +26,7 @@ note head). doctitle = "Changing a single note's size in a chord" } % begin verbatim + \relative c' { <\tweak #'font-size #+2 c e g c \tweak #'font-size #-2 e>1^\markup { A tiny e }_\markup { A big c } } - diff --git a/Documentation/snippets/changing-beam-knee-gap.ly b/Documentation/snippets/changing-beam-knee-gap.ly index fa4236a2fa..3bd380f2c7 100644 --- a/Documentation/snippets/changing-beam-knee-gap.ly +++ b/Documentation/snippets/changing-beam-knee-gap.ly @@ -4,53 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% 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 -fino de este comportamiento a través de la propiedad -@code{auto-knee-gap}. Se traza una barra doblada si el salto es -mayor que el valor de @code{auto-knee-gap} más el ancho del objeto -barra (que depende de la duración de las notas y de la inclinación -de la barra). De forma predeterminada @code{auto-knee-gap} está -establecido a 5.5 espacios de pentagrama. - -" - doctitlees = "Cambiar el salto de las barras en ángulo" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Balken mit Hälsen in unterschiedliche Richtungen werden automatisch -erstellt, wenn ein großer Sprung zwischen Tonhöhen gefunden wird. Dieses -Verhalten kann durch die @code{auto-knee-gap}-Eigenschaft beeinflusst -werden. Ein derartiger Knie-Balken wird erstellt, wenn der Abstand größer -ist als der Wert von @code{auto-knee-gap} plus der Dicke des Balkens -(was von der Notendauer und der Neigung des Balkens abhängt). Der -Standardwert von @code{auto-knee-gap} ist 5.5 Notensystemabstände. - -" - doctitlede = "Balken für weit auseinander liegende Noten ändern" - - - -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 - texidocfr = " -LilyPond insère automatiquement des ligatures coudées --- certaines -hampes vers le haut, d'autres vers le bas --- lorsqu'il détecte un -intervalle important entre des têtes de notes. Ce comportement peut être -changé par l'intermédiaire de l'objet @code{auto-knee-gap} --- défini -par défaut à @samp{5,5} espace, plus la largeur et la pente de la -ligature en question. - -" - doctitlefr = "Ligature et directions de hampe inversées" - texidoc = " Kneed beams are inserted automatically when a large gap is detected between the note heads. This behavior can be tuned through the @@ -64,9 +22,9 @@ spaces. doctitle = "Changing beam knee gap" } % begin verbatim + { f8 f''8 f8 f''8 \override Beam #'auto-knee-gap = #6 f8 f''8 f8 f''8 } - diff --git a/Documentation/snippets/changing-chord-separator.ly b/Documentation/snippets/changing-chord-separator.ly index abe5168879..3e02b65b43 100644 --- a/Documentation/snippets/changing-chord-separator.ly +++ b/Documentation/snippets/changing-chord-separator.ly @@ -4,28 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "chords" -%% 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. - -" - doctitlees = "Modificación del separador de acordes" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Der Trenner zwischen unterschiedlichen Teilen eines Akkordsymbols kann -beliebiger Text sein. - -" - doctitlede = "Akkordsymboltrenner verändern" - texidoc = " The separator between different parts of a chord name can be set to any markup. @@ -34,10 +17,10 @@ markup. doctitle = "Changing chord separator" } % begin verbatim + \chords { c:7sus4 \set chordNameSeparator = \markup { \typewriter | } c:7sus4 } - diff --git a/Documentation/snippets/changing-form-of-multi-measure-rests.ly b/Documentation/snippets/changing-form-of-multi-measure-rests.ly index d70f41ee9f..3884062606 100644 --- a/Documentation/snippets/changing-form-of-multi-measure-rests.ly +++ b/Documentation/snippets/changing-form-of-multi-measure-rests.ly @@ -4,45 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% 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 -una serie de silencios de breve y longa (conocidos en alemán como -@qq{Kirchenpausen}, «silencios eclesiásticos»); en caso contrario se -muestra una barra normal. Este número predeterminado de diez se -puede cambiar sobreescribiendo la propiedad @code{expand-limit}: - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wenn zehn oder weniger Pausentakte vorkommen, wird eine Reihe von Longa- -und Brevispausen (auch Kirchenpausen genannt) gesetzt, bei mehr Takten -wird eine Line mit der Taktanzahl ausgegeben. Der vorgegebene Wert von -zehn kann geändert werden, indem man die @code{expand-limit}-Eigenschaft -setzt: -" - doctitlede = "Die Erscheinung von Pausentakten ändern" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 -texidocfr = " -Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur -la portée des @qq{ silences d'église } -- @emph{Kirchenpause} en -allemand -- et qui sont une simple suite de rectangles. La propriété -@code{expand-limit} permet d'obtenir un silence unique : - -" - doctitlefr = "Modifier l'apparence d'un silence multi-mesures" - texidoc = " If there are ten or fewer measures of rests, a series of longa and breve rests (called in German @qq{Kirchenpausen} - church rests) is @@ -54,6 +20,7 @@ default number of ten may be changed by overriding the doctitle = "Changing form of multi-measure rests" } % begin verbatim + \relative c'' { \compressFullBarRests R1*2 | R1*5 | R1*9 diff --git a/Documentation/snippets/changing-fret-orientations.ly b/Documentation/snippets/changing-fret-orientations.ly index 973b68da07..f0bbabd215 100644 --- a/Documentation/snippets/changing-fret-orientations.ly +++ b/Documentation/snippets/changing-fret-orientations.ly @@ -4,24 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Los diagramas de posiciones de acordes se pueden orientar de tres -formas. De manera predeterminada se alinena la cuerda o traste -superior en las distintas alineaciones. - - -" - - doctitlees = "Modificar la orientación de los trastes" - texidoc = " Fret diagrams can be oriented in three ways. By default the top string or fret in the different orientations will be aligned. @@ -30,6 +17,7 @@ or fret in the different orientations will be aligned. doctitle = "Changing fret orientations" } % begin verbatim + \include "predefined-guitar-fretboards.ly" << @@ -55,4 +43,3 @@ or fret in the different orientations will be aligned. c' } >> - diff --git a/Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly b/Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly index 3879e96759..aded2070cb 100644 --- a/Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly +++ b/Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly @@ -4,51 +4,17 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "contexts-and-engravers, midi" - -%% 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 -pentagrama mezcladas. Esto reduce al mínimo el riesgo de que se agote -el número de canales MIDI disponibles, pues existe un máximo de 16 -canales por cada puerto MIDI, y la mayoría de los dispositivos sólo -tiene un puerto. - -Sin embargo, cuando se traslada el interpretador -@code{Staff_performer} al contexto @code{Voice}, cada voz de un -pentagrama puede tener su propio canal MIDI, como se muestra en el -siguiente ejemplo: a pesar de estar sobre el mismo pentagrama, se -crean dos canales MIDI, cada uno con un @code{midiInstrument} -distinto. - -" - doctitlees = "Modificar la salida MIDI para que tenga un canal por cada voz" - -%% Translation of GIT committish: d7cf09411ee80eaf0092af0aa532de64c0c6248e - texidocfr = " -Lorsque LilyPond génère un fichier MIDI, chaque portée sera par défaut -affectée à un canal, quel que soit le nombre de voix qu'elle contient. -Ceci permet d'éviter de se retrouver à court de canaux, sachant qu'il -n'y en a que seize de disponibles. - -Le fait de déplacer le @code{Staff_performer} dans le contexte -@code{Voice} permet d'affecter à chaque voix d'une même portée un canal -MIDI spécifique. Dans l'exemple suivant, la même portée donnera lieu à -deux canaux MIDI différents, chacun étant affecté de son propre -@code{midiInstrument}. - -" - doctitlefr = "Affectation d'un canal MIDI par voix" + lsrtags = "contexts-and-engravers, midi, real-music" texidoc = " When outputting MIDI, the default behavior is for each staff to represent one MIDI channel, with all the voices on a staff amalgamated. This minimizes the risk of running out of MIDI channels, since there -are only 16 available per track. +are only 16 available per MIDI port, and most devices support only one +port. However, by moving the @code{Staff_performer} to the @code{Voice} context, each voice on a staff can have its own MIDI channel, as is @@ -60,6 +26,7 @@ two MIDI channels are created, each with a different doctitle = "Changing MIDI output to one channel per voice" } % begin verbatim + \score { \new Staff << \new Voice \relative c''' { @@ -91,10 +58,6 @@ two MIDI channels are created, each with a different \Voice \consists "Staff_performer" } - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 2) - } + \tempo 2 = 72 } } - diff --git a/Documentation/snippets/changing-partcombine-texts.ly b/Documentation/snippets/changing-partcombine-texts.ly index e98099f9bb..4cd8109965 100644 --- a/Documentation/snippets/changing-partcombine-texts.ly +++ b/Documentation/snippets/changing-partcombine-texts.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "simultaneous-notes" -%% 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 -y de unísono: - -" - doctitlees = "Cambiar los textos de partcombine" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wenn Stimmen automatisch kombiniert werden, kann der Text, der für -Solo- und Unisono-Stellen ausgegeben wird, geändert werden: - -" - doctitlede = "Partcombine-Text ändern" - -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c - texidocfr = " -Lorsque vous regroupez automatiquement des parties, vous pouvez -modifier le texte qui sera affiché pour les solos et pour les parties à -l'unisson : - -" - doctitlefr = "Modification des indications de parties combinées" - - texidoc = " When using the automatic part combining feature, the printed text for the solo and unison sections may be changed: @@ -45,6 +17,7 @@ the solo and unison sections may be changed: doctitle = "Changing partcombine texts" } % begin verbatim + \new Staff << \set Staff.soloText = #"girl" \set Staff.soloIIText = #"boy" @@ -59,4 +32,3 @@ the solo and unison sections may be changed: a2 g } >> - diff --git a/Documentation/snippets/changing-properties-for-individual-grobs.ly b/Documentation/snippets/changing-properties-for-individual-grobs.ly index ead69c2634..7005946043 100644 --- a/Documentation/snippets/changing-properties-for-individual-grobs.ly +++ b/Documentation/snippets/changing-properties-for-individual-grobs.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "tweaks-and-overrides" + lsrtags = "really-cool, scheme-language, tweaks-and-overrides" texidoc = " The @code{\\applyOutput} command allows the tuning of any layout @@ -18,6 +18,7 @@ arguments. doctitle = "Changing properties for individual grobs" } % begin verbatim + #(define (mc-squared grob grob-origin context) (let ((sp (ly:grob-property grob 'staff-position))) (if (grob::has-interface grob 'note-head-interface) diff --git a/Documentation/snippets/changing-stanza-fonts.ly b/Documentation/snippets/changing-stanza-fonts.ly index ca922e73fd..ceea216ef2 100644 --- a/Documentation/snippets/changing-stanza-fonts.ly +++ b/Documentation/snippets/changing-stanza-fonts.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "vocal-music" + lsrtags = "really-simple, vocal-music" texidoc = " Fonts can be changed independently for each stanza, including the font @@ -33,4 +33,3 @@ used for printing the stanza number. \override LyricText #'font-family = #'typewriter Oh, ché -- ri, je t'aime } - diff --git a/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly b/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly index ec3808c4a3..31434e5d01 100644 --- a/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly +++ b/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly @@ -4,64 +4,26 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede modificar el texto empleado para los crescendos y -decrescendos modificando las propiedades de contexto -@code{crescendoText} y @code{decrescendoText}. - -El estilo de la línea de extensión se puede cambiar modificando la -propiedad @code{'style} de @code{DynamicTextSpanner}. El valor -predeterminado es @code{'dashed-line} (línea discontinua), y entre -otros valores posibles se encuentran @code{'line} (línea), -@code{'dotted-line} (línea de puntos) y @code{'none} (nada): - -" - doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Der Text, der für Crescendo und Decrescendo gesetzt wird, kann geändert -werden, indem man die Eigenschaften @code{crescendoText} und -@code{decrescendoText} verändert. Der Stil des Streckers kann auch -geändert werden, indem die @code{'style}-Eigenschaft des -@code{DynamicTextSpanner} beeinflusst wird. Der Standardwert ist -@code{'hairpin}, andere Möglichkeiten sind @code{'line}, @code{'dashed-line} -und @code{'dotted-line}. -" - doctitlede = "Text und Strecker-Stile für Dynamik-Texte ändern" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Le texte par défaut des crescendos et decrescendos se change en -modifiant les propriétés de contexte @code{crescendoText} et -@code{decrescendoText}. L'aspect de la ligne d'extension est fonction -de la propriété @code{'style} du @code{DynamicTextSpanner}. Sa valeur -par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles, -comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}. - -" - doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles" - + lsrtags = "expressive-marks, tweaks-and-overrides" texidoc = " The text used for crescendos and decrescendos can be changed by modifying the context properties @code{crescendoText} and -@code{decrescendoText}. The style of the spanner line can be changed by -modifying the @code{'style} property of @code{DynamicTextSpanner}. The -default value is @code{'hairpin}, and other possible values include -@code{'line}, @code{'dashed-line} and @code{'dotted-line}. +@code{decrescendoText}. + +The style of the spanner line can be changed by modifying the +@code{'style} property of @code{DynamicTextSpanner}. The default value +is @code{'dashed-line}, and other possible values include @code{'line}, +@code{'dotted-line} and @code{'none}. " doctitle = "Changing text and spanner styles for text dynamics" } % begin verbatim + \relative c'' { \set crescendoText = \markup { \italic { cresc. poco } } \set crescendoSpanner = #'text diff --git a/Documentation/snippets/changing-the-ambitus-gap.ly b/Documentation/snippets/changing-the-ambitus-gap.ly index 16620f75b2..3fe9208c41 100644 --- a/Documentation/snippets/changing-the-ambitus-gap.ly +++ b/Documentation/snippets/changing-the-ambitus-gap.ly @@ -1,38 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Es posible ajustar la separación en las indicaciones de tesitura. +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" -" +\header { + lsrtags = "pitches" - doctitlees = "Modificación de la separación en las indicaciones de tesitura" + texidoc = " +It is possible to change the default gap setting for ambitus. -%% Translation of GIT committish: 31097723b2b816696ad61696630a80ff17a39557 - texidocfr = "L'affichage d'un @emph{ambitus} peut s'affiner pour - répondre à vos préférences en matière d'esthétique. " - - doctitlefr = "Réglage de l'affichage d'un ambitus" - - - lsrtags = "pitches" - texidoc = "It is possible to change the default gap setting for -ambitus." - doctitle = "Changing the ambitus gap" } % begin verbatim - - \layout { \context { \Voice diff --git a/Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly b/Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly index dd0eee12b1..4da9c337f5 100644 --- a/Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly +++ b/Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly @@ -4,18 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, editorial-annotations" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede cambiar el aspecto de las ligaduras de expresión de -continuas a punteadas o intermitentes. - -" - doctitlees = "Modificar el aspecto continuo de una ligadura de expresión a punteado o intermitente" + lsrtags = "connecting-notes, editorial-annotations, expressive-marks, really-simple" texidoc = " The appearance of slurs may be changed from solid to dotted or dashed. @@ -24,6 +16,7 @@ The appearance of slurs may be changed from solid to dotted or dashed. doctitle = "Changing the appearance of a slur from solid to dotted or dashed" } % begin verbatim + \relative c' { c4( d e c) \slurDotted @@ -35,5 +28,3 @@ The appearance of slurs may be changed from solid to dotted or dashed. \slurSolid c4( d e c) } - - diff --git a/Documentation/snippets/changing-the-breath-mark-symbol.ly b/Documentation/snippets/changing-the-breath-mark-symbol.ly index 6347d46bd7..8b51aea49a 100644 --- a/Documentation/snippets/changing-the-breath-mark-symbol.ly +++ b/Documentation/snippets/changing-the-breath-mark-symbol.ly @@ -4,42 +4,13 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% 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 -@code{BreathingSign}, con cualquier otro texto de marcado. - -" - doctitlees = "Cambiar el símbolo de la marca de respiración" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Das Schriftzeichen für das Atemzeichen kann verändert werden, indem -die Text-Eigenschaft des @code{BreathingSign}-Layoutobjekts mit einer -beliebigen Textbeschriftung definiert wird. - -" - doctitlede = "Das Atemzeichen-Symbol verändern" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -On peut choisir le glyphe imprimé par cette commande, en modifiant la -propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter -n'importe quelle indication textuelle. - -" - doctitlefr = "Modification de l'indicateur de respiration" - - texidoc = " -The glyph of the breath mark can be tuned by overriding the text +The glyph of the breath mark can be tuned by overriding the @code{text} property of the @code{BreathingSign} layout object with any markup text. @@ -49,7 +20,8 @@ text. \relative c'' { c2 - \override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" } + \override BreathingSign #'text = + \markup { \musicglyph #"scripts.rvarcomma" } \breathe d2 } diff --git a/Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly b/Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly index 5e6cb2ba3f..26cc5d92ec 100644 --- a/Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly +++ b/Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly @@ -4,20 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "chords" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La nomenclatura inglesa (predeterminada) para los acordes del cifrado -americano se puede cambiar por la alemana (@code{\\germanChords} -sustituye B y Bes por H y B) o por la semi-alemana -(@code{\\semiGermanChords} sustituye B y Bes por H y Bb). - -" - doctitlees = "Cambiar la nomenclatura de los acordes del cifrado americano por la notación alemana o semi-alemana" + lsrtags = "chords, really-simple" texidoc = " The english naming of chords (default) can be changed to german @@ -31,6 +21,7 @@ The english naming of chords (default) can be changed to german doctitle = "Changing the chord names to German or semi-German notation" } % begin verbatim + music = \chordmode { c1/c | cis/cis b1/b | bis/bis | bes/bes @@ -60,4 +51,3 @@ music = \chordmode { \semiGermanChords \music } \context Voice { \music } >> - diff --git a/Documentation/snippets/changing-the-default-text-font-family.ly b/Documentation/snippets/changing-the-default-text-font-family.ly index bbd0565c97..0fff98a94f 100644 --- a/Documentation/snippets/changing-the-default-text-font-family.ly +++ b/Documentation/snippets/changing-the-default-text-font-family.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text, tweaks-and-overrides" @@ -17,6 +17,7 @@ The default font families for text can be overridden with doctitle = "Changing the default text font family" } % begin verbatim + \paper { % change for other default global staff size. myStaffSize = #20 @@ -52,5 +53,3 @@ The default font families for text can be overridden with } } } - - diff --git a/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly b/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly index 3d71b5253b..bb52c169ff 100644 --- a/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly +++ b/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches" @@ -19,6 +19,7 @@ and line of the stave equal to one semitone. doctitle = "Changing the interval of lines on the stave" } % begin verbatim + scale = \relative c' { a4 ais b c cis4 d dis e @@ -39,4 +40,3 @@ scale = \relative c' { } >> } - diff --git a/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly b/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly index df8bd3721f..6040c76cd1 100644 --- a/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly +++ b/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly @@ -1,38 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Este código muestra cómo cambiar la cantidad de puntillos de una nota. - -" - - doctitlees = "Modificar el número de puntillos de una nota" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" +\header { + lsrtags = "expressive-marks, rhythms" -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - - texidocfr = "Voici comment modifier le nombre de points d'augmentation -affectés à une note en particulier. + texidoc = " +This code demonstrates how to change the number of augmentation dots on +a single note. " - doctitlefr = "Spécification du nombre de points d'augmentation d'une note" - - - lsrtags = "rhythms,expressive-marks" - texidoc = "This code demonstrates how to change the number of -augmentation dots on a single note." doctitle = "Changing the number of augmentation dots per note" } % begin verbatim - \relative c' { c4.. a16 r2 | \override Dots #'dot-count = #4 diff --git a/Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly b/Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly index ce4d1cec62..19ab74b449 100644 --- a/Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly +++ b/Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation" + lsrtags = "specific-notation, staff-notation" texidoc = " The number of lines in a staff may changed by overriding the @@ -20,6 +20,7 @@ The number of lines in a staff may changed by overriding the doctitle = "Changing the number of lines in a staff" } % begin verbatim + upper = \relative c'' { c4 d e f } @@ -40,4 +41,3 @@ lower = \relative c { } >> } - diff --git a/Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly b/Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly index f9faa40630..7c7bafcbb1 100644 --- a/Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly +++ b/Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly @@ -4,31 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "chords" -%% 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 -@code{figuredBassAlterationDirection} y -@code{figuredBassPlusDirection}. - -" - doctitlees = "Cambiar las posiciones de las alteraciones del bajo cifrado" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Versetzungszeichen und Pluszeichen können vor oder nach den Ziffern erscheinen, -je nach den Einstellungen der @code{figuredBassAlterationDirection} und -@code{figuredBassPlusDirection}-Eigenschaften. - -" - doctitlede = "Positionen von Generalbass-Alterationszeichen verändern" - texidoc = " Accidentals and plus signs can appear before or after the numbers, depending on the @code{figuredBassAlterationDirection} and @@ -38,6 +18,7 @@ depending on the @code{figuredBassAlterationDirection} and doctitle = "Changing the positions of figured bass alterations" } % begin verbatim + \figures { <6\+> <5+> <6 4-> r \set figuredBassAlterationDirection = #RIGHT @@ -47,4 +28,3 @@ depending on the @code{figuredBassAlterationDirection} and \set figuredBassAlterationDirection = #LEFT <6\+> <5+> <6 4-> r } - diff --git a/Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly b/Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly index 14a5bfe01a..589ce235fa 100644 --- a/Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly +++ b/Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly @@ -1,53 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "winds" - texidoces = " - -Se puede cambiar el tamaño y grosor de las líneas de los diagramas de -posiciones para instrumentos de viento madera. - -" - - doctitlees = "Modificar el tamaño de los diagramas de viento madera" - -%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - - texidocde=" -Die Größe und Dicke der Holzbläserdiagramme kann geändert werden. -" - - doctitlede = "Größe von Holzbläserdiagrammen ändern" - - -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d - texidocfr = " -La taille et l'épaisseur des diagrammes de doigté pour bois est modifiable -à souhait. - -" - - doctitlefr = "Modification de la taille d'un diagramme pour bois" - - - lsrtags="winds" - texidoc=" + texidoc = " The size and thickness of woodwind diagrams can be changed. -" +" doctitle = "Changing the size of woodwind diagrams" } % begin verbatim - \relative c'' { \textLengthOn c1^\markup diff --git a/Documentation/snippets/changing-the-staff-size.ly b/Documentation/snippets/changing-the-staff-size.ly index 4ec923b18b..1400f158c3 100644 --- a/Documentation/snippets/changing-the-staff-size.ly +++ b/Documentation/snippets/changing-the-staff-size.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout" + lsrtags = "paper-and-layout, staff-notation, tweaks-and-overrides" texidoc = " Though the simplest way to resize staves is to use @@ -19,6 +19,7 @@ changed by scaling the properties @code{'staff-space} and doctitle = "Changing the staff size" } % begin verbatim + << \new Staff { \relative c'' { @@ -34,4 +35,3 @@ changed by scaling the properties @code{'staff-space} and c8 c c c c\f c c c } >> - diff --git a/Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly b/Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly index 6b87cacdb3..66879b4f68 100644 --- a/Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly +++ b/Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly @@ -4,39 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, tweaks-and-overrides, midi" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Para cambiar el tempo en la salida MIDI sin -imprimir nada, hacemos invisible la indicación metronómica: - -" - - doctitlees = "Cambiar el tempo sin indicación metronómica" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Um das Tempo für die MIDI-Ausgabe zu ändern, ohne eine Tempoangabe in den -Noten auszugeben, kann die Metronombezeichnung unsichtbar gemacht werden: - -" - - doctitlede = "Das Tempo ohne Metronom-Angabe verändern" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Vous pouvez indiquer un changement de tempo pour le fichier MIDI sans -pour autant l'imprimer. Il suffit alors de le rendre invisible aux -interprètes. - -" - doctitlefr = "Changement de tempo sans indication sur la partition" - + lsrtags = "midi, rhythms, tweaks-and-overrides" texidoc = " To change the tempo in MIDI output without printing anything, make the @@ -46,6 +17,7 @@ metronome mark invisible. doctitle = "Changing the tempo without a metronome mark" } % begin verbatim + \score { \new Staff \relative c' { \tempo 4 = 160 diff --git a/Documentation/snippets/changing-the-text-for-sustain-markings.ly b/Documentation/snippets/changing-the-text-for-sustain-markings.ly index c24ffc2719..6f6871ef37 100644 --- a/Documentation/snippets/changing-the-text-for-sustain-markings.ly +++ b/Documentation/snippets/changing-the-text-for-sustain-markings.ly @@ -4,24 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "keyboards, tweaks-and-overrides" -%% 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 -únicas cadenas válidas son las que están en la lista de glifos de -pedal: los valores que aparecen en este fragmento de código son una -relación exhaustiva. - -" - doctitlees = "Modificar el texto de las indicaciones de pedal" - - - texidoc = " @code{Staff.pedalSustainStrings} can be used to set the text used for pedal down and up. Note that the only valid strings are those found in @@ -32,6 +19,7 @@ exhaustive list. doctitle = "Changing the text for sustain markings" } % begin verbatim + sustainNotes = { c4\sustainOn d e\sustainOff\sustainOn f\sustainOff } \relative c' { diff --git a/Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly b/Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly deleted file mode 100644 index 5bf944273f..0000000000 --- a/Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly +++ /dev/null @@ -1,68 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La instrucción @code{\\time} establece las propiedades -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y -@code{measureLength} en el contexto @code{Timing}, que normalmente -tiene el alias @code{Score}. La modificación del valor de -@code{timeSignatureFraction} hace que se imprima la nueva indicación -de compás sin que cambie ninguna de las demás propiedades: - -" - doctitlees = "Cambio de compás sin afectar al barrado" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Der @code{\\time}-Befehl verändert die Eigenschaften -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} -und @code{measureLength} im @code{Timing}-Kontext, welcher normalerweise -gleichbedeutend mit @code{Score} ist. Wenn der Wert von -@code{timeSignatureFraction} verändert wird, wird die neue -Taktart ausgegeben, ohne die anderen Eigenschaften zu beeinflussen: - -" - doctitlede = "Die Taktart verändern ohne die Bebalkung zu beeinflussen" - - - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -La commande @code{\\time} gère les propriétés -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} -et @code{measureLength} dans le contexte @code{Timing}, normalement -rattaché à @code{Score}. Le fait de modifier la valeur de -@code{timeSignatureFraction} aura pour effet de changer l'apparence du -symbole affiché sans pour autant affecter les autres propriétés de la -métrique : - -" - doctitlefr = "Changement de métrique sans affecter les règles de ligature" - - lsrtags = "rhythms" - texidoc = " -The @code{\\time} command sets the properties -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} -and @code{measureLength} in the @code{Timing} context, which is -normally aliased to @code{Score}. Changing the value of -@code{timeSignatureFraction} causes the new time signature symbol to be -printed without changing any of the other properties: - -" - doctitle = "Changing the time signature without affecting the beaming" -} % begin verbatim - - -\markup { - This snippet is deprecated as of 2.13.5 and will be removed in 2.14 -} diff --git a/Documentation/snippets/changing-the-tuplet-number.ly b/Documentation/snippets/changing-the-tuplet-number.ly index 3dd879bef8..419f761689 100644 --- a/Documentation/snippets/changing-the-tuplet-number.ly +++ b/Documentation/snippets/changing-the-tuplet-number.ly @@ -4,47 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Cambiar el número del grupo especial" - texidoces = " - -De forma predeterminada sólo se imprime el numerador del grupo -especial sobre el corchete de grupo, es decir, el denominador del -argumento de la instrucción @code{\\times}. De forma alternativa, se -puede imprimr un quebrado en la forma numerador:denominador del número -del grupo, o eliminar el número. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Standardmäßig wird nur der Zähler des N-tolen-Bruchs über der Klammer -dargestellt, wie er dem @code{\\times}-Befehl übergeben wird. -Man kann aber auch Zähler/Nenner ausgeben lassen, oder die Zahl -vollständig unterdrücken. - -" - doctitlede = "Die Zahl der N-tole verändern" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -L'apparence du chiffre est déterminée par la propriété @code{text} dans -@code{TupletNumber}. La valeur par défaut imprime seulement le -dénominateur, mais si elle est définie par la fonction -@code{tuplet-number::calc-fraction-text}, la fraction entière -@var{num}:@var{den} sera imprimée à la place. - -" - doctitlefr = "Modifier l'apparence du chiffre de nolet" - texidoc = " By default, only the numerator of the tuplet number is printed over the tuplet bracket, i.e., the denominator of the argument to the @@ -55,6 +19,7 @@ be printed, or the tuplet number may be suppressed altogether. doctitle = "Changing the tuplet number" } % begin verbatim + \relative c'' { \times 2/3 { c8 c c } \times 2/3 { c8 c c } @@ -63,4 +28,3 @@ be printed, or the tuplet number may be suppressed altogether. \override TupletNumber #'stencil = ##f \times 2/3 { c8 c c } } - diff --git a/Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly b/Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly index ff0d71f297..d49857c542 100644 --- a/Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly +++ b/Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly @@ -1,42 +1,20 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.17 +\version "2.16.0" \header { - lsrtags = "rhythms, contexts-and-engravers" + lsrtags = "workaround, contexts-and-engravers, contemporary-notation, rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La propiedad @code{measureLength}, junto con -@code{measurePosition}, determina cuándo es necesario dibujar una -línea divisoria. Sin embargo, al utilizar -@code{\\scaleDurations}, el escalado proporcional de las -duraciones hace difícil introducir cambios de compás. En este -caso se debe establecer manualmente el valor de -@code{measureLength} utilizando la función @code{ly:make-moment}. -El segundo argumento debe ser el mismo que el segundo argumento de -@code{\\scaleDurations}. - -" - doctitlees = "Modificar el compás dentro de una sección polimétrica utilizando @code{\\scaleDurations}" - - texidoc = " -The @code{measureLength} property, together with -@code{measurePosition}, determines when a bar line is needed. However, -when using @code{\\scaleDurations}, the scaling of durations makes it -difficult to change time signatures. In this case, -@code{measureLength} should be set manually, using the -@code{ly:make-moment} callback. The second argument must be the same -as the second argument of @code{\\scaleDurations}. - -" doctitle = "Changing time signatures inside a polymetric section using \\scaleDurations" } % begin verbatim + + \layout { \context { \Score @@ -52,7 +30,7 @@ as the second argument of @code{\\scaleDurations}. << \new Staff { - \scaleDurations #'(8 . 5) { + \scaleDurations 8/5 { \time 6/8 \set Timing.measureLength = #(ly:make-moment 6 5) b8 b b b b b diff --git a/Documentation/snippets/chant-or-psalms-notation.ly b/Documentation/snippets/chant-or-psalms-notation.ly index b740e3ba37..7f9153f86d 100644 --- a/Documentation/snippets/chant-or-psalms-notation.ly +++ b/Documentation/snippets/chant-or-psalms-notation.ly @@ -1,40 +1,14 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \header { - lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers" - -%% 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. - -" - doctitlees = "Notación de responsos o salmos" - -%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - texidocde = " -Diese Form der Notation wird benutzt für die Notation von Psalmen, in denen -die Strophen nicht die gleiche Länge haben. - -" - doctitlede = "Psalmennotation" - - -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 - texidocfr = " -Ce style de notation permet d'indiquer la mélodie d'une psalmodie -lorsque les strophes sont de longueur inégale. - -" - doctitlefr = "Notation pour psalmodie" - + lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers, specific-notation" texidoc = " This form of notation is used for the chant of the Psalms, where verses @@ -44,8 +18,16 @@ aren't always the same length. doctitle = "Chant or psalms notation" } % begin verbatim -stemOn = { \revert Staff.Stem #'transparent } -stemOff = { \override Staff.Stem #'transparent = ##t } + +stemOn = { + \revert Staff.Stem #'transparent + \revert Staff.Flag #'transparent +} + +stemOff = { + \override Staff.Stem #'transparent = ##t + \override Staff.Flag #'transparent = ##t +} \score { \new Staff \with { \remove "Time_signature_engraver" } @@ -60,4 +42,3 @@ stemOff = { \override Staff.Stem #'transparent = ##t } \stemOn g'2 \bar "||" } } - diff --git a/Documentation/snippets/chord-glissando-in-tablature.ly b/Documentation/snippets/chord-glissando-in-tablature.ly index e8d1d2bbee..a5b221cf28 100644 --- a/Documentation/snippets/chord-glissando-in-tablature.ly +++ b/Documentation/snippets/chord-glissando-in-tablature.ly @@ -1,50 +1,26 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Los deslizamientos para acordes se pueden indicar tanto en el contexto -Staff como en TabStaff. Los números de cuerda son necesarios para -TabStaff porque los cálculos de cuerda automáticos son diferentes para -los acordes y para notas sueltas, y @code{\\chordGlissando} traza -líneas entre las notas individuales. - -" - - doctitlees = "Glissando de acordes en tablatura" -%% Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 - texidocde = " -Gleiten von Akkorden kann sowohl im normalen Notensystem als auch in einer -Tabulatur notiert werden. Saitennummern werden für Tabulaturen -benötigt, weil die automatische Saitenberechnung unterschiedlich für -Akkorde und einzelne Noten funktioniert und -@code{\\chordGlissando} zieht Linien zwischen einzelnen Noten. -" - doctitlede = "Akkordglissando in Tabulaturen" - - lsrtags = "fretted-strings" + texidoc = " -Slides for chords can be indicated in both Staff and TabStaff. -String numbers are necessary for TabStaff because automatic -string calculations are different for chords and for single notes, -and @code{\\chordGlissando} draws lines between single notes. +Slides for chords can be indicated in both @code{Staff} and +@code{TabStaff}. String numbers are necessary for @code{TabStaff} +because automatic string calculations are different for chords and for +single notes. + " doctitle = "Chord glissando in tablature" } % begin verbatim - myMusic = \relative c' { - \chordGlissando - 8 + 1 \glissando } \score { diff --git a/Documentation/snippets/chord-name-exceptions.ly b/Documentation/snippets/chord-name-exceptions.ly index 9a32fbdc7e..759c02140d 100644 --- a/Documentation/snippets/chord-name-exceptions.ly +++ b/Documentation/snippets/chord-name-exceptions.ly @@ -4,28 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "chords" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede usar la propiedad @code{chordNameExceptions} para -almacenar una lista de notaciones espaciales para acordes -específicos. - -" - doctitlees = "Excepciones para los nombres de acorde" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Eigenschaft @code{chordNameExceptions} kann benutzt werden, um eine -Liste an besonderen Notationen für bestimmte Akkorde zu speichern. - -" - doctitlede = "Akkordsymbolausnahmen" + lsrtags = "chords, specific-notation" texidoc = " The property @code{chordNameExceptions} can be used to store a list of @@ -35,6 +17,7 @@ special notations for specific chords. doctitle = "Chord name exceptions" } % begin verbatim + % modify maj9 and 6(add9) % Exception music is chords with markups chExceptionMusic = { @@ -60,4 +43,3 @@ theMusic = \chordmode { << \context ChordNames \theMusic \context Voice \theMusic >> - diff --git a/Documentation/snippets/chord-name-major7.ly b/Documentation/snippets/chord-name-major7.ly index 0ffcc288e5..b4a345d464 100644 --- a/Documentation/snippets/chord-name-major7.ly +++ b/Documentation/snippets/chord-name-major7.ly @@ -4,29 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "chords" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La presentación del acorde de séptima mayor se -puede ajustar mediante majorSevenSymbol. - -" - doctitlees = "Nombre de acorde maj7" - - -%% Translation of GIT committish: 134d9cb2e14ae624aec6fa2dd1630e284807dc42 - texidocde = " -Das Aussehen des großen Septakkords kann mit @code{majorSevenSymbol} verändert werden. - -" - - doctitlede = "Akkordbezeichnung maj7" - - + lsrtags = "chords, specific-notation" texidoc = " The layout of the major 7 can be tuned with @code{majorSevenSymbol}. @@ -35,9 +16,9 @@ The layout of the major 7 can be tuned with @code{majorSevenSymbol}. doctitle = "chord name major7" } % begin verbatim + \chords { c:7+ \set majorSevenSymbol = \markup { j7 } c:7+ } - diff --git a/Documentation/snippets/chordchanges-for-fretboards.ly b/Documentation/snippets/chordchanges-for-fretboards.ly index 0665939afb..ffac03d80b 100644 --- a/Documentation/snippets/chordchanges-for-fretboards.ly +++ b/Documentation/snippets/chordchanges-for-fretboards.ly @@ -1,46 +1,29 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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. - -" - - doctitlees = "Cambios de acorde de posiciones de trastes" - + lsrtags = "fretted-strings" -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Bunddiagramme können definiert werden, sodass sie nur angezeigt werden, -wenn der Akkord sich ändert oder eine neue Zeile anfängt. + texidoc = " +FretBoards can be set to display only when the chord changes or at the +beginning of a new line. " - - doctitlede = "Akkordänderungen für Bunddiagramme" - - lsrtags = "fretted-strings" - texidoc = "FretBoards can be set to display only when the chord changes -or at the beginning of a new line." - doctitle = "chordChanges for FretBoards" + doctitle = "ChordChanges for FretBoards" } % begin verbatim - \include "predefined-guitar-fretboards.ly" myChords = \chordmode { c1 c1 \break \set chordChanges = ##t c1 c1 \break - c1 c1 \break + c1 c1 } << diff --git a/Documentation/snippets/chords-headword.ly b/Documentation/snippets/chords-headword.ly index fea2567b95..0fed8b2050 100644 --- a/Documentation/snippets/chords-headword.ly +++ b/Documentation/snippets/chords-headword.ly @@ -4,17 +4,11 @@ % 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" -#(set-global-staff-size 15) -\paper { - ragged-right = ##f - line-width = 15\cm - indent = 0\cm -} +%% Note: this file works from version 2.15.20 +\version "2.16.0" \header { - lsrtags = "headwords" + lsrtags = "headword" texidoc = "" doctitle = "headword" } % begin verbatim @@ -85,7 +79,7 @@ Bass = { \context Staff = lower { \new Voice { \clef bass - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" << \Tenor \Bass diff --git a/Documentation/snippets/chords-intro.itely b/Documentation/snippets/chords-intro.itely index 83aeaaaf25..1427e49a5b 100644 --- a/Documentation/snippets/chords-intro.itely +++ b/Documentation/snippets/chords-intro.itely @@ -1,5 +1,6 @@ @node Chords @unnumbered Chords +@nodeprefix Chords @ruser{Chord notation} diff --git a/Documentation/snippets/chords.snippet-list b/Documentation/snippets/chords.snippet-list index 0749eb969e..86bdaefd0e 100644 --- a/Documentation/snippets/chords.snippet-list +++ b/Documentation/snippets/chords.snippet-list @@ -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 diff --git a/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly b/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly index fbaf03dfa1..e7155b5355 100644 --- a/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly +++ b/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches" @@ -16,6 +16,7 @@ Clefs can be transposed by arbitrary amounts, not just by octaves. doctitle = "Clefs can be transposed by arbitrary amounts" } % begin verbatim + \relative c' { \clef treble c4 c c c @@ -26,4 +27,3 @@ Clefs can be transposed by arbitrary amounts, not just by octaves. \clef "treble^3" c4 c c c } - diff --git a/Documentation/snippets/clip-systems.ly b/Documentation/snippets/clip-systems.ly index 35134c6dc5..ee58d574b6 100644 --- a/Documentation/snippets/clip-systems.ly +++ b/Documentation/snippets/clip-systems.ly @@ -1,40 +1,12 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Este código muestra cómo recortar (extraer) fragmentos a partir de una -partitura completa. - -Este archivo tiene que procesarse de forma separada con la opción -@code{-dclip-systems}; la página de fragmentos de código podría no -mostrar el resultado adecuadamente. - -La salida consiste en archivos con los nombres -@samp{base-from-inicio-to-final[-número].eps}. - - -Si se incluyen los comienzos y finales de los sistemas, incluyen las -dimensiones del grob del sistema, por ejemplo los nombres de -instrumento. - - -Las notas de adorno en el punto final de la región no se incluyen. - - -Las regiones pueden abarcar varios sistemas. En este caso, se generan -varios archivos EPS. - -" - doctitlees = "Recorte de sistemas" - lsrtags = "paper-and-layout" texidoc = " diff --git a/Documentation/snippets/clusters.ly b/Documentation/snippets/clusters.ly index fc7f5e2206..50bc544ad0 100644 --- a/Documentation/snippets/clusters.ly +++ b/Documentation/snippets/clusters.ly @@ -4,18 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "simultaneous-notes, chords, keyboards" - -%% 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. - -" - doctitlees = "Clusters («racimos»)" + lsrtags = "chords, contemporary-notation, keyboards, really-cool, simultaneous-notes, specific-notation" texidoc = " Clusters are a device to denote that a complete range of notes is to be @@ -25,6 +17,7 @@ played. doctitle = "Clusters" } % begin verbatim + fragment = \relative c' { c4 f 4 8 a4 c2 4 @@ -35,4 +28,3 @@ fragment = \relative c' { \new Staff \fragment \new Staff \makeClusters \fragment >> - diff --git a/Documentation/snippets/coloring-notes-depending-on-their-pitch.ly b/Documentation/snippets/coloring-notes-depending-on-their-pitch.ly index 70bdd668f3..05fe6f5ea6 100644 --- a/Documentation/snippets/coloring-notes-depending-on-their-pitch.ly +++ b/Documentation/snippets/coloring-notes-depending-on-their-pitch.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "pitches, editorial-annotations" + lsrtags = "editorial-annotations, pitches, really-cool" texidoc = " It is possible to color note heads depending on their pitch and/or @@ -59,4 +59,3 @@ to distinguish enharmonics. c8 b d dis ees f g aes } } - diff --git a/Documentation/snippets/combining-dynamics-with-markup-texts.ly b/Documentation/snippets/combining-dynamics-with-markup-texts.ly index 6b760f5931..b778e8b394 100644 --- a/Documentation/snippets/combining-dynamics-with-markup-texts.ly +++ b/Documentation/snippets/combining-dynamics-with-markup-texts.ly @@ -4,19 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, text" - -%% 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 -@code{\\markup}. - -" - doctitlees = "Combinar indicaciones dinámicas con marcados textuales" + lsrtags = "expressive-marks, really-simple, text" texidoc = " Some dynamics may involve text indications (such as @qq{più forte} or @@ -27,10 +18,9 @@ block. doctitle = "Combining dynamics with markup texts" } % begin verbatim + piuF = \markup { \italic più \dynamic f } \layout { ragged-right = ##f } \relative c'' { c2\f c-\piuF } - - diff --git a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly index dd6ecb805b..9005fff11a 100644 --- a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly +++ b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly @@ -4,74 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "simultaneous-notes, text" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -La herramienta de combinación de partes (instrucción -@code{\\partcombine}) permite la combinación de varias partes -diferentes sobre el mismo pentagrama. Las indicaciones textuales -tales como @qq{solo} o @qq{a2} se añaden de forma predeterminada; para -quitarlas, sencillamente establezca la propiedad -@code{printPartCombineTexts} al valor @qq{falso}. Para partituras -vocales (como himnos), no hay necesidad de añadir los textos @qq{solo} -o @qq{a2}, por lo que se deben desactivar. Sin embargo, podría ser -mejor no usarlo si hay solos, porque éstos no se indicarán. En tales -casos podría ser preferible la notación polifónica estándar. - -Este fragmento de código presenta las tres formas en que se pueden -imprimir dos partes sobre un solo pentagrama: polifonía estándar, -@code{\\partcombine} sin textos, y @code{\\partcombine} con -textos. - -" - doctitlees = "Combinar dos partes sobre el mismo pentagrama" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Funktion, die Stimmen kombiniert (also der @code{\\partcombine}-Befehl) -ermöglicht die Kombination unterschiedlicher Stimmen auf einem -System. Textanweisungen wie \"solo\" oder \"a2\" werden automatisch -hinzugefügt. Wenn man sie entfernen will, muss man die Eigenschaft -@code{printPartCombineTexts} auf falsch setzen. Für Klavierauszüge -muss natürlich kein \"solo\"/\"a2\" usw. hinzugefügt werden, man -sollte sie also ausschalten. Wenn aber Solo-Stellen in einem -Klavierauszug oder einer Chorpartitur angezeigt werden, ist es besser, -normale Polyphonie zu verwenden, weil so die Solostellen angezeigt -werden, auch wenn der Text des Stimmenkombinierers ausgeschaltet ist. - -Der Schnipsel zeigt drei Möglichkeiten, Stimmen auf einem System zu -kombinieren: Standardpolyphonie, @code{\\partcombine} ohne Text und -@code{\\partcombine} mit Text. - -" - doctitlede = "Zwei Stimmen auf einem System kombinieren" - -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c - texidocfr = " -L'outil de combinaison de parties (la commande @code{\\partcombine}) -permet d'avoir deux parties différentes sur une même portée. LilyPond -ajoute automatiquement des indications textuelles, telles que @qq{solo} -ou @qq{a2}. Si votre intention n'est que de fusionner les parties, sans -ajouter de texte, assignez faux à la propriété -@code{printPartCombineTexts}. Dans le cas de partitions vocales, et -plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune -utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait -alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel -à de la musique polyphonique standard. - -Voici trois moyens d'imprimer deux parties sur un même portée : en -polyphonie normale, avec @code{\\partcombine} sans indication -supplémentaire, et avec @code{\\partcombine} commentée. - -" - doctitlefr = "Combinaison de deux parties sur une même portée" - + lsrtags = "simultaneous-notes, syntax-and-expressions, text" texidoc = " The part combiner tool ( @code{\\partcombine} command ) allows the @@ -94,6 +30,7 @@ staff: standard polyphony, @code{\\partcombine} without texts, and doctitle = "Combining two parts on the same staff" } % begin verbatim + musicUp = \relative c'' { \time 4/4 a4 c4.( g8) a4 | @@ -132,4 +69,3 @@ musicDown = \relative c'' { } } } - diff --git a/Documentation/snippets/compound-time-signatures.ly b/Documentation/snippets/compound-time-signatures.ly index 27b618f2e8..da49aec532 100644 --- a/Documentation/snippets/compound-time-signatures.ly +++ b/Documentation/snippets/compound-time-signatures.ly @@ -1,66 +1,25 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Indicaciones de compases compuestos" - texidoces = " -Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden -ejecutar como compases compuestos (p.ej. @qq{3/8 + 2/8}), que combinan -dos o más metros diferentes. LilyPond puede hacer la música de este -tipo fácil de leer e interpretar, imprimiendo explícitamente las -indicaciones de compás compuesto y adaptando el comportamiento -automático de las barras (también se pueden añadir indicaciones -gráficas de la agrupación de compases; véase el fragmento de código -apropiado en la base de datos). - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Ungerade Taktarten werden (wie etwa \"5/8\") werden oft als zusammengesetzte -Taktarten interpretiert (bspw. \"3/8 + 2/8\"), in welchen zwei oder mehr -Teiltakte unterschieden werden. LilyPond kann derartige Noten produzieren, -indem entsprechende Taktarten gesetzt werden und die automatische -Bebalkung angepasst wird. - -" - doctitlede = "Zusammengesetzte Taktarten" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Des métriques telles que @qq{5/8} peuvent s'interpréter sous une forme -décomposée --- @qq{3/8 + 2/8} par exemple --- qui combine plusieurs -métriques. LilyPond est capable de rendre ce type de notation, plus - facile à lire et à interpréter, en imprimant cette métrique composite - et en adaptant les règles de ligature automatique en conséquence. - -" - doctitlefr = "Métrique décomposée" - lsrtags = "rhythms" + texidoc = " -Odd 20th century time signatures (such as \"5/8\") can often be played -as compound time signatures (e.g. \"3/8 + 2/8\"), which combine two or -more inequal metrics. LilyPond can make such music quite easy to read -and play, by explicitly printing the compound time signatures and -adapting the automatic beaming behavior. (Graphic measure grouping -indications can also be added; see the appropriate snippet in this -database.) +Odd 20th century time signatures (such as \\\"5/8\\\") can often be +played as compound time signatures (e.g. \\\"3/8 + 2/8\\\"), which +combine two or more inequal metrics. LilyPond can make such music quite +easy to read and play, by explicitly printing the compound time +signatures and adapting the automatic beaming behavior. + " doctitle = "Compound time signatures" } % begin verbatim - #(define ((compound-time one two num) grob) (grob-interpret-markup grob (markup #:override '(baseline-skip . 0) #:number diff --git a/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly b/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly index 4a404cdc63..fbe2e227bb 100644 --- a/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly +++ b/Documentation/snippets/conducting-signs,-measure-grouping-signs.ly @@ -4,82 +4,10 @@ % 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" +%% Note: this file works from version 2.15.19 +\version "2.16.0" \header { -%% 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 -de @code{beatStructure} para muchos tipos de compases en -@file{scm/time-signature-settings.scm}. Los valores de -@code{beatStructure} se pueden cambiar o establecer con @code{\\set}. -Como alternativa, se puede usar la función de Scheme -@code{set-time-signature} para establecer tanto el compás como la -estructura de pulsos. @code{set-time-signature} acepta tres -argumentos: el número de pulsos, la longitud del pulso y la agrupación -interna de los pulsos en el compás. Tanto @code{\\time} como -@code{set-time-signature} se aplican al contexto @code{Timing}, por lo -que no restablecen los valores de @code{beatStructure} ni de -@code{baseMoment} que se establezcan en otros contextos de nivel -inferior, como @code{Voice}. - -Si el grabador @code{Measure_grouping_engraver} está incluido en uno -de los contextos de presentación, se imprimirán signos de agrupación -de pulsos. Estos símbolos facilitan la lectura de música moderna -rítmicamente compleja. En este ejemplo, el compás de 9/8 se agrupa -según dos patrones distintos utilizando los dos métodos, mientras que -el compás de 5/8 se agrupa de acuerdo con el ajuste predeterminado que -está en @file{scm/time-signature-settings.scm}: - -" -doctitlees = "Símbolos de dirección y símbolos de agrupación de compás" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Optionen, mit denen die Balken in einem Takt gruppiert werden, sind -durch die Scheme-Funktion @code{set-time-signature} erhältlich, die -drei Argumente braucht: Die Zahl der Taktschläge, die Länge des -Schlages und die interne gruppieren von Balken in dem Takt. Wenn der -@code{Measure_grouping_engraver} hinzugefügt worden ist, erstellt -diese Funktion auch @code{MeasureGrouping}-(Taktgruppen)-Zeichen. Derartige -Zeichen erleichtern das Lesen von rhythmisch komplexer Musik. In dem -Beispiel ist der 9/8-Takt in 2, 2, 2 und 3 aufgeteilt. Das wird -der @code{set-time-signature}-Funktion als das dritte Argument mitgegeben: -@code{'(2 2 2 3)}: - -" - doctitlede = "Dirigierzeichen Taktgruppenzeichen" - - - -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - texidocfr = " -Les règles de ligature par mesure sont gérées par la propriété -@code{beatStructure}. Ses valeurs par défaut sont répertoriées, par -métrique, dans le fichier @code{scm/@/time-@/signature@/-settings@/.scm}. Elles -sont modifiables grâce à la commande @code{\\set}. -La fonction Scheme @code{set-time-signature} permet quant à elle de -définir à la fois la métrique et la pulsation. Celle-ci prend trois -arguments@tie{}: le nombre de pulsations, la durée de la pulsation et le -regroupement des pulsations dans la mesure. @code{\\time} et -@code{set-time-signature} s'appliquent tous deux au contexte -@code{Timing}@tie{}; ils ne redéfiniront donc pas les valeurs de -@code{beatStructure} ou @code{baseMoment} lorsque qu'elles sont -modifiées dans un contexte de niveau inférieur comme @code{Voice} par -exemple. -Si l'on fait appel au @code{Measure_grouping_engraver}, la fonction -@code{set-time-signature} créera aussi des symboles -@code{MeasureGrouping}. Ces symboles aident à la lecture des œuvres -modernes à la rythmique complexe. Dans l'exemple qui suit, la mesure à -9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux -règles par défaut contenues dans le fichier @w{@code{scm/@/beam@/-settings@/.scm}}. - -" - doctitlefr = "Signes de direction signes de sous-groupe" - lsrtags = "rhythms" texidoc = " Beat grouping within a measure is controlled by the context property @@ -87,15 +15,14 @@ Beat grouping within a measure is controlled by the context property established for many time signatures in @file{scm/time-signature-settings.scm}. Values of @code{beatStructure} can be changed or set with @code{\\set}. -Alternatively, the -Scheme function @code{set-time-signature} can be used to both +Alternatively, @code{\\time} can be used to both set the time signature and establish the beat structure. -@code{set-time-signature}, takes three arguments: the -number of beats, the beat length, and the internal grouping of beats in -the measure. @code{\\time} and @code{set-time-signature} both apply -to the @code{Timing} context, so they will not reset values of -@code{beatStructure} or @code{baseMoment} that are set in -other lower-level contexts, such as @code{Voice}. +For this, you specify the internal grouping of beats in a measure +as a list of numbers (in Scheme syntax) before the time signature. + +@code{\\time} applies to the @code{Timing} context, so it will not +reset values of @code{beatStructure} or @code{baseMoment} that are set +in other lower-level contexts, such as @code{Voice}. If the @code{Measure_grouping_engraver} is included in one of the display contexts, measure grouping signs will be @@ -116,7 +43,7 @@ is grouped according to the default setting in g8 g d d g g a( bes g) | \set Timing.beatStructure = #'(2 2 2 3) g8 g d d g g a( bes g) | - #(set-time-signature 9 8 '(4 5)) + \time #'(4 5) 9/8 g8 g d d g g a( bes g) | \time 5/8 a4. g4 | diff --git a/Documentation/snippets/connecting-notes.snippet-list b/Documentation/snippets/connecting-notes.snippet-list new file mode 100644 index 0000000000..bd89eb7e3b --- /dev/null +++ b/Documentation/snippets/connecting-notes.snippet-list @@ -0,0 +1,5 @@ +automatic-beam-subdivisions.ly +changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly +creating-slurs-across-voices.ly +laissez-vibrer-ties.ly +manually-controlling-beam-positions.ly diff --git a/Documentation/snippets/consistently-left-aligned-bar-numbers.ly b/Documentation/snippets/consistently-left-aligned-bar-numbers.ly new file mode 100644 index 0000000000..46e86777ed --- /dev/null +++ b/Documentation/snippets/consistently-left-aligned-bar-numbers.ly @@ -0,0 +1,55 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "rhythms" + + texidoc = " +When left aligning bar numbers, overlapping problems may occur with +Staves brackets. The snippet solves this by keeping right aligned the +first bar number following line breaks. + +" + doctitle = "Consistently left aligned bar numbers" +} % begin verbatim + +consistentlyLeftAlignedBarNumbers = { + \override Score.BarNumber #'break-visibility = #end-of-line-invisible + \override Score.BarNumber #'self-alignment-X = + #(lambda (grob) + (let ((break-dir (ly:item-break-dir grob))) + (if (= break-dir RIGHT) RIGHT LEFT))) +} + +\new ChoirStaff << + \new Staff { + \relative c' { + \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3) + \bar "" + \consistentlyLeftAlignedBarNumbers + + \set Score.currentBarNumber = #112 + \repeat unfold 8 { R1 } + \break + \repeat unfold 9 { R1 } + \break + \repeat unfold 7 { R1 } + } + } + \new Staff { + \relative c' { + \repeat unfold 24 { R1 } + } + } +>> + +\layout { + indent = #0 + ragged-right = ##t + ragged-last = ##t +} diff --git a/Documentation/snippets/contemporary-glissando.ly b/Documentation/snippets/contemporary-glissando.ly index 702e545a84..bad94e600d 100644 --- a/Documentation/snippets/contemporary-glissando.ly +++ b/Documentation/snippets/contemporary-glissando.ly @@ -4,37 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks" - -%% 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. - -" - doctitlees = "Glissando contemporáneo" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Ein modernes Glissando ohne eine Endnote kann gesetzt werden, indem -eine Kadenz eingesetzt wird und die Endnote unsichtbar gemacht wird. - -" - doctitlede = "Moderne Glissandi" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -De nos jours, il peut arriver que la note d'arrivée d'un glissando soit -absente de la partition. Pour ce faire, il vous faudra utiliser une -cadence et « masquer » la note d'arrivée. - -" - doctitlefr = "Glissando contemporain" - + lsrtags = "contemporary-notation, expressive-marks, specific-notation" texidoc = " A contemporary glissando without a final note can be typeset using a @@ -44,6 +17,7 @@ hidden note and cadenza timing. doctitle = "Contemporary glissando" } % begin verbatim + \relative c'' { \time 3/4 \override Glissando #'style = #'zigzag @@ -56,4 +30,3 @@ hidden note and cadenza timing. \cadenzaOff \bar "|" } - diff --git a/Documentation/snippets/contemporary-notation.snippet-list b/Documentation/snippets/contemporary-notation.snippet-list new file mode 100644 index 0000000000..098532b961 --- /dev/null +++ b/Documentation/snippets/contemporary-notation.snippet-list @@ -0,0 +1,13 @@ +broken-crescendo-hairpin.ly +changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly +clusters.ly +contemporary-glissando.ly +double-glissando.ly +flat-flags-and-beam-nibs.ly +flute-slap-notation.ly +heavily-customized-polymetric-time-signatures.ly +laissez-vibrer-ties.ly +marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly +non-traditional-key-signatures.ly +printing-music-with-different-time-signatures.ly +stemlets.ly diff --git a/Documentation/snippets/contexts-and-engravers-intro.itely b/Documentation/snippets/contexts-and-engravers-intro.itely index ef796b0592..e4e11670cc 100644 --- a/Documentation/snippets/contexts-and-engravers-intro.itely +++ b/Documentation/snippets/contexts-and-engravers-intro.itely @@ -1,5 +1,6 @@ @node Contexts and engravers @unnumbered Contexts and engravers +@nodeprefix Contexts and engravers @c FIXME make xref more precise when the chapter has been @c revised in GDP diff --git a/Documentation/snippets/contexts-and-engravers.snippet-list b/Documentation/snippets/contexts-and-engravers.snippet-list index 2b4356606f..2f4e1103dc 100644 --- a/Documentation/snippets/contexts-and-engravers.snippet-list +++ b/Documentation/snippets/contexts-and-engravers.snippet-list @@ -6,7 +6,8 @@ changing-midi-output-to-one-channel-per-voice.ly changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly chant-or-psalms-notation.ly creating-blank-staves.ly -defining-an-engraver-in-scheme-ambitus-engraver.ly +cross-staff-stems.ly +defining-an-engraver-in-scheme--ambitus-engraver.ly engravers-one-by-one.ly mensurstriche-layout-bar-lines-between-the-staves.ly nesting-staves.ly diff --git a/Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly b/Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly index 3a8dee79c4..794b65b820 100644 --- a/Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly +++ b/Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly @@ -1,52 +1,30 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "expressive-marks, tweaks-and-overrides" - texidoces = " -La visibilidad de los objetos de extensión que acaban en la primera -nota después de un salto de línea está controlada por la función de -callback de @code{after-line-breaking} + texidoc = " +The visibility of spanners which end on the first note following a line +break is controlled by the @code{after-line-breaking} callback @code{ly:spanner::kill-zero-spanned-time}. -Para los objetos como los glissandos y los reguladores, el -comportamiento predeterminado es ocultar el objeto de extensión -después del salto; la inhabilitación de la función de callback hace -que el objeto de extensión roto por la izquierda pueda mostrarse. - -De forma inversa, los objetos de extensión que son visibles -normalmente, como los objetos de extensión de texto, se pueden -ocultar habilitando la función de callback. -" - - doctitlees = "Controlar la visibilidad de los objetos de - extensión después de un salto de línea" - - - lsrtags = "expressive-marks, tweaks-and-overrides" - texidoc = "The visibility of spanners which end on the first note -following a line break is controlled by the @code{after-line-breaking} -callback @code{ly:spanner::kill-zero-spanned-time}. - For objects such as glissandos and hairpins, the default behaviour is to hide the spanner after a break; disabling the callback will allow the left-broken span to be shown. -Conversely, spanners which are usually visible, such as text spans, -can be hidden by enabling the callback. -" +Conversely, spanners which are usually visible, such as text spans, can +be hidden by enabling the callback. +" doctitle = "Controlling spanner visibility after a line break" } % begin verbatim - \paper { ragged-right = ##t } \relative c'' { @@ -64,4 +42,3 @@ can be hidden by enabling the callback. \break f,1\!\stopTextSpan } - diff --git a/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly b/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly index 63a9565269..4e264c604e 100644 --- a/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly +++ b/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly @@ -4,40 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, chords, keyboards, fretted-strings" - -%% 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 -digitaciones, se debe utilizar una construcción de acorde <> aunque -sea una sola nota. - - -" - doctitlees = "Controlar la colocación de las digitaciones de acordes" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Position von Fingersatzzahlen kann exakt kontrolliert werden. - -" - doctitlede = "Position von Fingersatz in Akkorden kontrollieren" - -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - - texidocfr = " -Le positionnement des doigtés peut être contrôlé de manière très précise. -Afin que l'orientation soit prise en compte, il est nécessaire d'utiliser -une syntaxe d'accord @code{< >}, même s'il ne s'agit que d'une seule note. -" - doctitlefr = "Contrôler la position des doigtés dans un accord" - + lsrtags = "chords, editorial-annotations, fretted-strings, keyboards, specific-notation" texidoc = " The placement of fingering numbers can be controlled precisely. For @@ -48,6 +18,7 @@ if it is a single note. doctitle = "Controlling the placement of chord fingerings" } % begin verbatim + \relative c' { \set fingeringOrientations = #'(left) 4 @@ -62,5 +33,3 @@ if it is a single note. \set fingeringOrientations = #'(down) 2 } - - diff --git a/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly b/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly index c7d4c07d2f..c1dfc67da4 100644 --- a/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly +++ b/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly @@ -4,59 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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 -bajo es este número, más cerca de la nota se colocará. En este -ejemplo, el @code{TextScript} (el sostenido) tiene primero la -prioridad más baja, por lo que se sitúa en la posición más baja en -el primer ejemplo. En el segundo, el semitrino (el @code{Script}) -es el que la tiene más baja, por lo que se sitúa en la parte -interior. Cuando dos objetos tienen la misma prioridad, el orden -en que se introducen determina cuál será el que aparece en primer -lugar. - -" - doctitlees = "Controlar la ordenación vertical de las inscripciones" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Die vertikale Anordnung von Beschriftungen wird mit der -@code{'script-priority}-Eigenschaft kontrolliert. Um so kleiner die -Zahl, umso näher wird die Beschriftung in Bezug auf die Note gesetzt. In -diesem Beispiel hat das @code{TextScript}-Objekt (das Kreuz) zuerst -die niedrigste Priorität, wird also auch am niedrigsten in dem ersten -Beispiel gesetzt. Im zweiten Fall hat der Praller (das @code{Script}) -die niedrigste Priorität, darum wird er am nächsten zum System gesetzt. -Wenn zwei Objekte die gleiche Priorität haben, wird ihre Reihenfolge -anhand ihres Auftretens in der Quelldatei entschieden. - -" - doctitlede = "Die vertikale Anordnung von Beschriftungen kontrollieren" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Les symboles s'ordonnent verticalement suivant la propriété -@code{script-priority}. Plus sa valeur numérique est faible, plus le -symbole sera proche de la note. Dans l'exemple suivant, l'objet -@code{TextScript} -- le dièse -- a d'abord la propriété la -plus basse, et il est donc placé plus près de la note ; ensuite c'est -l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse, -et il se place alors sous le dièse. Lorsque deux objets ont la même -priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine -lequel sera placé en premier. - -" - doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements" - - texidoc = " The vertical ordering of scripts is controlled with the @code{'script-priority} property. The lower this number, the closer it @@ -71,6 +23,7 @@ comes first. doctitle = "Controlling the vertical ordering of scripts" } % begin verbatim + \relative c''' { \once \override TextScript #'script-priority = #-100 a2^\prall^\markup { \sharp } @@ -78,4 +31,3 @@ comes first. \once \override Script #'script-priority = #-100 a2^\prall^\markup { \sharp } } - diff --git a/Documentation/snippets/controlling-tuplet-bracket-visibility.ly b/Documentation/snippets/controlling-tuplet-bracket-visibility.ly index d8a0ff2418..7ceaf5615e 100644 --- a/Documentation/snippets/controlling-tuplet-bracket-visibility.ly +++ b/Documentation/snippets/controlling-tuplet-bracket-visibility.ly @@ -4,41 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -El comportamiento predeterminado de la visibilidad de los corchetes de -grupo de valoración especial es imprimir el corchete a no ser que haya -una barra de la misma longitud que el grupo especial. Para controlar -la visibilidad de los corchetes de grupo, establezca la propiedad -@code{'bracket-visibility} a @code{#t} (imprimir el corchete siempre), -@code{#f} (no imprimirlo nunca) o @code{#'if-no-beam} (imprimir el -corchete solamente si no hay barra). - -" - - doctitlees = "Controlar la visibilidad de los corchetes de grupo especial" - -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - - texidocfr = " -Selon la tradition, les crochets indicateurs de nolet sont toujours -imprimés sauf dans le cas où ils seraient de la même longuer qu'une -ligature. LilyPond permet, au travers de la propriété -@code{'bracket-visibility}, de contôler précisément leur -affichage@tie{}: déterminée à @code{#t}, ils seront toujours -imprimés@tie{}; @code{#f} permet de ne jamais les imprimer, et -@code{#'if-no-beam} les imprimera en l'absence de ligature. - -" - doctitlefr = "Contrôle de l'impression des crochets de nolet" - - texidoc = " The default behavior of tuplet-bracket visibility is to print a bracket unless there is a beam of the same length as the tuplet. To control the @@ -51,6 +21,7 @@ bracket), @code{#f} (never print a bracket) or @code{#'if-no-beam} doctitle = "Controlling tuplet bracket visibility" } % begin verbatim + music = \relative c'' { \times 2/3 { c16[ d e } f8] \times 2/3 { c8 d e } @@ -68,5 +39,3 @@ music = \relative c'' { << \music s4^"#f" >> } } - - diff --git a/Documentation/snippets/correction-wanted.snippet-list b/Documentation/snippets/correction-wanted.snippet-list new file mode 100644 index 0000000000..b551d6eaca --- /dev/null +++ b/Documentation/snippets/correction-wanted.snippet-list @@ -0,0 +1,2 @@ +adjusting-lyrics-vertical-spacing.ly +horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly diff --git a/Documentation/snippets/creating-a-delayed-turn.ly b/Documentation/snippets/creating-a-delayed-turn.ly index 7276937ebb..519275b9d9 100644 --- a/Documentation/snippets/creating-a-delayed-turn.ly +++ b/Documentation/snippets/creating-a-delayed-turn.ly @@ -4,51 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides" - -%% 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 -varias sobreescriturasw de propiedades. La propiedad -@code{outside-staff-priority} se debe establecer al valor @code{#f}, pues en -caso contrario tendría prioridad sobre la propiedad @code{avoid-slur -property}. El valor de @code{halign} se utiliza para colocar el -grupeto horizontalmente. - -" - -doctitlees = "Crear un grupeto de anticipación" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Einen Doppelschlag mit Vorhalt zu erstellen, wobei die untere Note das -Vorzeichen benutzt, erfordert einige Einstellungsänderungen. Die -@code{outside-staff-priority}-Eigenschaft muss auf falsch (@code{#f}) -gesetzt werden, weil sie sonst über die Eigenschaft -@code{avoid-slur property} dominieren würde. Der Wert von @code{halign} -wird benutzt, um den Doppelschlag horizontal zu positionieren. -" - - doctitlede = "Einen Doppelschlag mit Vorhalt erstellen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse -est altérée requiert quelques surcharges. La propriété -@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour -éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}. La -valeur assignée à @code{halign} permet de gérer horizonalement le -@w{« retard »}. - -" - - doctitlefr = "Création d'un grupetto retardé" + lsrtags = "editorial-annotations, expressive-marks, tweaks-and-overrides" texidoc = " Creating a delayed turn, where the lower note of the turn uses the @@ -62,6 +21,7 @@ horizontally. doctitle = "Creating a delayed turn" } % begin verbatim + \relative c'' { \once \override TextScript #'avoid-slur = #'inside \once \override TextScript #'outside-staff-priority = ##f diff --git a/Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly b/Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly index 63b038ca8f..28de0512c5 100644 --- a/Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly +++ b/Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly @@ -1,27 +1,14 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.27 +\version "2.16.0" \header { - lsrtags = "pitches" - -%% 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 -utilidad la siguiente función musical. Admite una nota, de la que -sólo se utiliza su altura. Las funciones de apoyo en Scheme se -han tomado prestadas del documento de \"Consejos y trucos\" de la -versión 2.10 del manual. Este ejemplo crea las duraciones -rítmicas que se usan a todo lo largo de «Marte», de «Los Planetas» -de Gustav Holst. - -" - doctitlees = "Crear una secuencia de notas a distintas alturas" + lsrtags = "pitches, real-music, really-cool, scheme-language" texidoc = " In music that contains many occurrences of the same sequence of notes @@ -34,39 +21,11 @@ Planets. doctitle = "Creating a sequence of notes on various pitches" } % begin verbatim -#(define (make-note-req p d) - (make-music 'NoteEvent - 'duration d - 'pitch p)) - -#(define (make-note p d) - (make-music 'EventChord - 'elements (list (make-note-req p d)))) - -#(define (make-triplet elt) - (make-music 'TimeScaledMusic - 'denominator 3 - 'numerator 2 - 'element elt)) rhythm = -#(define-music-function (parser location note) (ly:music?) - "Make the rhythm in Mars (the Planets) at the given note's pitch" - (let ((p (ly:music-property - (car (ly:music-property note 'elements)) - 'pitch))) - (make-sequential-music - (list - (make-triplet (make-sequential-music - (list - (make-note p (ly:make-duration 3 0 2 3)) - (make-note p (ly:make-duration 3 0 2 3)) - (make-note p (ly:make-duration 3 0 2 3))))) - (make-note p (ly:make-duration 2 0)) - (make-note p (ly:make-duration 2 0)) - (make-note p (ly:make-duration 3 0)) - (make-note p (ly:make-duration 3 0)) - (make-note p (ly:make-duration 2 0)))))) +#(define-music-function (parser location p) (ly:pitch?) + "Make the rhythm in Mars (the Planets) at the given pitch" + #{ \times 2/3 { $p 8 $p $p } $p 4 $p $p 8 $p $p 4 #}) \new Staff { \time 5/4 diff --git a/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly b/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly index 555c26e522..52b16bbb59 100644 --- a/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly +++ b/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly @@ -4,40 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% 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 -@code{Span_arpeggio_engraver} se traslada al contexto de -@code{Staff} context: - -" - doctitlees = "Crear arpegios entre notas de voces distintas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Ein Arpeggio kann zwischen Noten aus unterschiedlichen Stimmen auf demselben -System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den -@code{Staff}-Kontext verschoben wird: - -" - doctitlede = "Arpeggios zwischen unterschiedlichen Stimmen erzeugen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la -portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix : - -" - doctitlefr = "Arpège distribué sur plusieurs voix" - - texidoc = " An arpeggio can be drawn across notes in different voices on the same staff if the @code{Span_arpeggio_engraver} is added to the @code{Staff} @@ -47,6 +18,7 @@ context: doctitle = "Creating arpeggios across notes in different voices" } % begin verbatim + \new Staff \with { \consists "Span_arpeggio_engraver" } @@ -58,4 +30,3 @@ context: { 2\arpeggio 2 } >> } - diff --git a/Documentation/snippets/creating-blank-staves.ly b/Documentation/snippets/creating-blank-staves.ly index 6e2bdd8bc2..f264ed64f2 100644 --- a/Documentation/snippets/creating-blank-staves.ly +++ b/Documentation/snippets/creating-blank-staves.ly @@ -4,21 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout" - -%% 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} -del contexto @code{Score}, y los grabadores de la indicación de compás -@code{Time_signature_engraver}, de la clave @code{Clef_engraver} y de -los compases @code{Bar_engraver} del contexto de @code{Staff}. - -" - doctitlees = "Crear pentagramas en blanco" + lsrtags = "contexts-and-engravers, editorial-annotations, paper-and-layout, specific-notation, staff-notation" texidoc = " To create blank staves, generate empty measures then remove the @@ -30,6 +19,7 @@ To create blank staves, generate empty measures then remove the doctitle = "Creating blank staves" } % begin verbatim + #(set-global-staff-size 20) \score { @@ -59,4 +49,3 @@ To create blank staves, generate empty measures then remove the bottom-margin = 0.25\in top-margin = 0.25\in } - diff --git a/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly b/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly index 589d320d1f..a46b5a8dbc 100644 --- a/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly +++ b/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly @@ -4,40 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Dentro de un @code{PianoStaff}, es posible hacer que un arpegio -cruce entre los pentagramas ajustando la propiedad -@code{PianoStaff.connectArpeggios}. - -" - doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Arpeggio über mehrere Systeme können in anderen Kontexten als dem -@code{PianoStaff} erstellt werden, wenn der @code{Span_arpeggio_engraver} -in den @code{Score}-Kontext eingefügt wird. - -" - doctitlede = "Arpeggio über mehrere Systeme in anderen Kontexten" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Dans une double portée pour piano (@code{PianoStaff}), un arpège peut -s'étendre sur les deux portées grâce à la propriété -@code{PianoStaff.connectArpeggios}. - -" - doctitlefr = "Arpège distribué sur une partition pour piano" - - texidoc = " In a @code{PianoStaff}, it is possible to let an arpeggio cross between the staves by setting the property @code{PianoStaff.connectArpeggios}. @@ -47,6 +18,7 @@ the staves by setting the property @code{PianoStaff.connectArpeggios}. doctitle = "Creating cross-staff arpeggios in a piano staff" } % begin verbatim + \new PianoStaff \relative c'' << \set PianoStaff.connectArpeggios = ##t \new Staff { @@ -62,4 +34,3 @@ the staves by setting the property @code{PianoStaff.connectArpeggios}. } } >> - diff --git a/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly b/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly index bc525cada2..168043d7e9 100644 --- a/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly +++ b/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly @@ -4,42 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% 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 -@code{StaffGroup} si se incluye el grabador -@code{Span_arpeggio_engraver} en el contexto de @code{Score}. - -" - doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio -zwischen beiden Systemen zu verbinden, indem die -@code{PianoStaff.connectArpeggios}-Eigenschaft gesetzt wird. - - -" - doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Il est possible de distribuer un arpège sur plusieurs portées d'un -système autre que le @code{PianoStaff} dès lors que vous incluez le -@code{Span_arpeggio_engraver} au contexte @code{Score}. - -" - doctitlefr = "Arpège distribué pour un autre contexte que le piano" - - texidoc = " Cross-staff arpeggios can be created in contexts other than @code{GrandStaff}, @code{PianoStaff} and @code{StaffGroup} if the @@ -49,6 +18,7 @@ Cross-staff arpeggios can be created in contexts other than doctitle = "Creating cross-staff arpeggios in other contexts" } % begin verbatim + \score { \new ChoirStaff { \set Score.connectArpeggios = ##t @@ -73,4 +43,3 @@ Cross-staff arpeggios can be created in contexts other than } } } - diff --git a/Documentation/snippets/creating-double-digit-fingerings.ly b/Documentation/snippets/creating-double-digit-fingerings.ly new file mode 100644 index 0000000000..c1d0fb620f --- /dev/null +++ b/Documentation/snippets/creating-double-digit-fingerings.ly @@ -0,0 +1,48 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "editorial-annotations, expressive-marks, scheme-language, staff-notation, tweaks-and-overrides" + + texidoc = " +By default you cannot make double-digit fingering notation (i.e. +numbers larger than 9). This is a hard coded limitation. + +This snippet shows two methods of creating fingerings larger than 9. + +" + doctitle = "Creating double-digit fingerings" +} % begin verbatim + + +ten = +#(make-music 'FingeringEvent + 'digit 10) + +fifty = +#(make-music 'FingeringEvent + 'digit 50) + +finger = +#(define-music-function (parser location digit) (integer?) + (make-music 'FingeringEvent + 'digit digit)) + +#(define (calc-finger-without-warning grob) + (let* ((event (event-cause grob)) + (digit (ly:event-property event 'digit))) + (number->string digit 10))) + +\relative c' { + % optional override to remove warnings for fingerings larger than 5 + \override Fingering #'text = #calc-finger-without-warning + c1\ten + c1\fifty + c1-\finger #36 + c1-\finger #29 +} diff --git a/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly b/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly index 5f7f1f0d90..a234b65082 100644 --- a/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly +++ b/Documentation/snippets/creating-metronome-marks-in-markup-mode.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% 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. - -" - doctitlees = "Crear indicaciones metronómicas en modo de marcado" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Neue Metronombezeichnungen können als Textbeschriftung erstellt werden, -aber sie ändern nicht das Tempo für die MIDI-Ausgabe. - -" - - doctitlede = "Eine Metronombezeichnung als Textbeschriftung erstellen" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -Vous pouvez créer des indications de tempo sous la forme d'étiquettes -textuelles -- des objets @code{markup} -- notamment des équivalences. -Cependant, elles n'apparaîtront pas dans le fichier MIDI. - -" - doctitlefr = "Création d'une indication métronomique sous forme d'étiquette" - - texidoc = " New metronome marks can be created in markup mode, but they will not change the tempo in MIDI output. @@ -45,6 +17,7 @@ change the tempo in MIDI output. doctitle = "Creating metronome marks in markup mode" } % begin verbatim + \relative c' { \tempo \markup { \concat { diff --git a/Documentation/snippets/creating-real-parenthesized-dynamics.ly b/Documentation/snippets/creating-real-parenthesized-dynamics.ly index c09e4947db..8f43bbff62 100644 --- a/Documentation/snippets/creating-real-parenthesized-dynamics.ly +++ b/Documentation/snippets/creating-real-parenthesized-dynamics.ly @@ -4,29 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, text" - -%% 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 -tiene un inconveniente: los objetos que se crean se comportarán -como elementos de marcado de texto y no como indicaciones -dinámicas. - -Sin embargo, es posible crear un objeto similar utilizando el código -de Scheme equivalente (como se explica en la Referencia de la -notación), en combinación con la función -@code{make-dynamic-script}. De esta forma, el elemento de marcado se -tratará como una indicación dinámica, y por tanto seguirá siendo -compatible con instrucciones como @code{\\dynamicUp} o -@code{\\dynamicDown}. - -" - doctitlees = "Crear indicaciones dinámicas \"verdaderas\" entre paréntesis" + lsrtags = "expressive-marks, text, workaround" texidoc = " Although the easiest way to add parentheses to a dynamic mark is to use @@ -45,6 +26,7 @@ commands such as @code{\\dynamicUp} or @code{\\dynamicDown}. doctitle = "Creating \"real\" parenthesized dynamics" } % begin verbatim + parenF = #(make-dynamic-script (markup #:line (#:normal-text #:italic #:fontsize 2 "(" #:hspace -0.8 #:dynamic "f" #:normal-text #:italic #:fontsize 2 ")"))) @@ -52,4 +34,3 @@ parenF = #(make-dynamic-script (markup #:line (#:normal-text #:italic \relative c'' { c4\parenF c c \dynamicUp c\parenF } - diff --git a/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly b/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly index 227902a585..9bbac34508 100644 --- a/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly +++ b/Documentation/snippets/creating-simultaneous-rehearsal-marks.ly @@ -4,26 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, text, tweaks-and-overrides" -%% 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 -crea un objeto @code{RehearsalMark}. Utilizando un compás y línea -divisoria invisibles se puede crear una nueva marca de ensayo, -dando la apariencia de dos marcas en la misma columna. - -Este método también puede resultar útil para colocar marcas de -ensayo tanto al final de un sistema como al comienzo del sistema -siguiente. - -" - doctitlees = "Creación de marcas de ensayo simultáneas" - texidoc = " Unlike text scripts, rehearsal marks cannot be stacked at a particular point in a score: only one @code{RehearsalMark} object is created. diff --git a/Documentation/snippets/creating-slurs-across-voices.ly b/Documentation/snippets/creating-slurs-across-voices.ly index 30ef2d93ea..74e82c55e2 100644 --- a/Documentation/snippets/creating-slurs-across-voices.ly +++ b/Documentation/snippets/creating-slurs-across-voices.ly @@ -4,24 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, keyboards, unfretted-strings" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -En determinadas situaciones es necesario crear ligaduras de -expresión entre notas que están en voces distintas. - -La solución es añadir notas invisibles a una de las voces -utilizando @code{\\hideNotes}. - -Este ejemplo es el compás 235 de la Chacona de la segunda Partita -para violín solo, BWV 1004, de Bach. - -" - doctitlees = "Hacer ligaduras entre voces distintas" + lsrtags = "connecting-notes, expressive-marks, keyboards, real-music, unfretted-strings" texidoc = " In some situations, it may be necessary to create slurs between notes @@ -37,6 +23,7 @@ solo violin, BWV 1004. doctitle = "Creating slurs across voices" } % begin verbatim + \relative c' { << { @@ -58,4 +45,3 @@ solo violin, BWV 1004. } >> } - diff --git a/Documentation/snippets/creating-text-spanners.ly b/Documentation/snippets/creating-text-spanners.ly index d2720b18fc..ee587e14ef 100644 --- a/Documentation/snippets/creating-text-spanners.ly +++ b/Documentation/snippets/creating-text-spanners.ly @@ -4,22 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, text, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan} -permiten la creación de elementos de extensión textuales tan -fácilmente como indicaciones de pedal u -octavaciones. Sobreescribimos ciertas propiedades del objeto -@code{TextSpanner} para modificar su salida. - -" - doctitlees = "Crear elementos de extensión textuales" - texidoc = " The @code{\\startTextSpan} and @code{\\stopTextSpan} commands allow the creation of text spanners as easily as pedal indications or @@ -30,6 +19,7 @@ to modify its output. doctitle = "Creating text spanners" } % begin verbatim + \paper { ragged-right = ##f } \relative c'' { @@ -65,4 +55,3 @@ to modify its output. b4 c a4 \stopTextSpan } - 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 index 0000000000..1c3817bbf2 --- /dev/null +++ b/Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly @@ -0,0 +1,52 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "chords, keyboards, tweaks-and-overrides, workaround" + + 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" + \override NoteColumn #'ignore-collision = ##t + c, c c + } + >> + } + \new Staff = bottom + \relative c' { + \clef bass + \voiceOne + g8 a g a g a g a + } +>> diff --git a/Documentation/snippets/cross-staff-stems.ly b/Documentation/snippets/cross-staff-stems.ly new file mode 100644 index 0000000000..1431461cf3 --- /dev/null +++ b/Documentation/snippets/cross-staff-stems.ly @@ -0,0 +1,44 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.42 +\version "2.16.0" + +\header { + lsrtags = "staff-notation, tweaks-and-overrides, contexts-and-engravers" + texidoc = " +This snippet shows the use of the @code{Span_stem_engraver} +and @code{\\crossStaff} to connect stems across staves automatically. +The stem length need not be specified, as the variable distance +between noteheads and staves is calculated automatically. +" + doctitle = "Cross staff stems" +} % begin verbatim + + +\layout { + \context { + \PianoStaff + \consists #Span_stem_engraver + } +} + +{ + \new PianoStaff << + \new Staff { + 4 r d'16\> e'8. g8 r\! + e'8 f' g'4 e'2 + } + \new Staff { + \clef bass + \voiceOne + \autoBeamOff + \crossStaff { 4 e, g16 a8. c8} d + \autoBeamOn + g8 f g4 c2 + } + >> +} diff --git a/Documentation/snippets/cross-staff-tremolos.ly b/Documentation/snippets/cross-staff-tremolos.ly index 743262705f..980feb5310 100644 --- a/Documentation/snippets/cross-staff-tremolos.ly +++ b/Documentation/snippets/cross-staff-tremolos.ly @@ -4,34 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "repeats, keyboards" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Dado que @code{\\repeat tremolo} espera exactamente dos argumentos -musicales para los trémolos de acorde, la nota o acorde que cambia de -pentagrama en un trémolo que cruza el pentagrama se debe colocar -dentro de llaves curvas junto a su instrucción @code{\\change Staff}. - -" - - doctitlees = "Trémolos de pentagrama cruzado" - -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 - texidocfr = " -Dans la mesure où @code{\\repeat tremolo} requiert deux arguments -musicaux pour un trémolo d'accords, la note ou l'accord de la -portée opposée doît être encadré par des accolades et se voir adjoindre -la commande @code{\\change Staff}. - -" - doctitlefr = "Trémolo et changement de portée" - + lsrtags = "keyboards, real-music, repeats" texidoc = " Since @code{\\repeat tremolo} expects exactly two musical arguments for @@ -43,6 +19,7 @@ its @code{\\change Staff} command. doctitle = "Cross-staff tremolos" } % begin verbatim + \new PianoStaff << \new Staff = "up" \relative c'' { \key a \major @@ -63,4 +40,3 @@ its @code{\\change Staff} command. } } >> - diff --git a/Documentation/snippets/custodes.ly b/Documentation/snippets/custodes.ly index 65694749fb..6a4afbd601 100644 --- a/Documentation/snippets/custodes.ly +++ b/Documentation/snippets/custodes.ly @@ -4,17 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "ancient-notation, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se pueden tipografiar «custos» en diferentes estilos. - -" - doctitlees = "Custos" + lsrtags = "ancient-notation, specific-notation, symbols-and-glyphs, tweaks-and-overrides" texidoc = " Custodes may be engraved in various styles. @@ -23,6 +16,7 @@ Custodes may be engraved in various styles. doctitle = "Custodes" } % begin verbatim + \layout { ragged-right = ##t } \new Staff \with { \consists "Custos_engraver" } \relative c' { @@ -44,4 +38,3 @@ Custodes may be engraved in various styles. c1^"mensural" \break 1 } - diff --git a/Documentation/snippets/customizing-fretboard-fret-diagrams.ly b/Documentation/snippets/customizing-fretboard-fret-diagrams.ly index 6efbcde652..e0e335621f 100644 --- a/Documentation/snippets/customizing-fretboard-fret-diagrams.ly +++ b/Documentation/snippets/customizing-fretboard-fret-diagrams.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings, tweaks-and-overrides" -%% 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}. -Para los diagramas de posiciones de FretBoard, se aplican los -overrides (sobreescrituras) al objeto @code{FretBoards.FretBoard}. -Como @code{Voice}, @code{FretBoards} es un contexto del nivel -inferior, y por tanto se puede omitir su nombre en la -sobreescritura de propiedades. - -" - doctitlees = "Personalizar los diagramas de posiciones" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Eigenschaften von Bunddiagrammen können in -@code{'fret-diagram-details} verändert werden. Einstellungen mit -dem @code{\\override}-Befehl werden dem @code{FretBoards.FretBoard}-Objekt -zugewiesen. Genauso wie @code{Voice} ist auch @code{FretBoards} ein -Kontext der niedrigsten Ebene, weshalb der Kontext auch in dem Befehl -weggelassen werden kann. - -" - doctitlede = "Bunddiagramme anpassen" - texidoc = " Fret diagram properties can be set through @code{'fret-diagram-details}. For FretBoard fret diagrams, overrides @@ -46,6 +20,7 @@ can be omitted in property overrides. doctitle = "Customizing fretboard fret diagrams" } % begin verbatim + \include "predefined-guitar-fretboards.ly" \storePredefinedDiagram #default-fret-table \chordmode { c' } #guitar-tuning diff --git a/Documentation/snippets/customizing-markup-fret-diagrams.ly b/Documentation/snippets/customizing-markup-fret-diagrams.ly index 75bf60ece7..77c3004eda 100644 --- a/Documentation/snippets/customizing-markup-fret-diagrams.ly +++ b/Documentation/snippets/customizing-markup-fret-diagrams.ly @@ -4,45 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings, tweaks-and-overrides" -%% 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 -diagramas de posiciones de marcado, se pueden aplicar overrides -(sobreescrituras) al objeto @code{Voice.TextScript} o directamente al elemento de marcado. - -" - doctitlees = "Personalizar diagramas de posiciones de marcado" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Bunddiagramme können mit der Eigenschaft @code{'fret-diagram-details} -angepasst werden. Bunddiagramme, die als Textbeschriftung eingefügt werden, -können Veränderungen im @code{Voice.TextScript}-Objekt oder direkt in der -Beschriftung vorgenommen werden. - -" - doctitlede = "Anpassung von Beschriftungs-Bunddiagrammen" - -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - - texidocfr = " -Les propriétés d'un diagramme de fret sont modifiables grâce au -@code{'fret-diagram-details}. Lorsqu'ils sont générés sous forme -de @code{\\markup}, rien n'empêche de les modifier en jouant sur les -réglages de l'objet @code{Voice.TextScript} ou bien directement sur -le @qq{markup}. - -" - doctitlefr = "Personnalisation des diagrammes de fret" - - texidoc = " Fret diagram properties can be set through @code{'fret-diagram-details}. For markup fret diagrams, overrides can @@ -53,6 +19,7 @@ markup. doctitle = "Customizing markup fret diagrams" } % begin verbatim + << \chords { c1 | c | c | d } diff --git a/Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly b/Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly index e22b5d8d51..8ffb32fee6 100644 --- a/Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly +++ b/Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly @@ -4,29 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "editorial-annotations" -%% 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 -@code{neutral-direction} del objeto @code{Stem}. - -" - doctitlees = "Dirección predeterminada de las plicas sobre la tercera línea del pentagrama" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Richtung von Hälsen auf der mittleren Linie kann mit der @code{Stem}-Eigenschaft -@code{neutral-direction} gesetzt werden. - -" - doctitlede = "Standardrichtung für Hälse auf der Mittellinie" - texidoc = " The default direction of stems on the center line of the staff is set by the @code{Stem} property @code{neutral-direction}. @@ -35,6 +17,7 @@ by the @code{Stem} property @code{neutral-direction}. doctitle = "Default direction of stems on the center line of the staff" } % begin verbatim + \relative c'' { a4 b c b \override Stem #'neutral-direction = #up @@ -42,4 +25,3 @@ by the @code{Stem} property @code{neutral-direction}. \override Stem #'neutral-direction = #down a4 b c b } - diff --git a/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly b/Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly similarity index 89% rename from Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly rename to Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly index 7fe68eda8e..3546a1ec0e 100644 --- a/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly +++ b/Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly @@ -4,23 +4,10 @@ % 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" +%% Note: this file works from version 2.15.31 +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Este ejemplo demuestra cómo se puede definir el grabador de ámbito en -el espacio del usuario, con un grabador de Scheme. - -Esto es básicamente una reescritura en Scheme del código de -@file{lily/ambitus-engraver.cc}. - -" - - doctitlees = "Definir un grabador en Scheme: grabador de ámbito" - lsrtags = "contexts-and-engravers" @@ -42,10 +29,6 @@ Esto es básicamente una reescritura en Scheme del código de %%% Grob utilities %%% %%% These are literal rewrites of some C++ methods used by the ambitus engraver. -#(define (ly:event::in-event-class event class-name) - "Check if @var{event} the given class. -Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}." - (memq class-name (ly:make-event-class (ly:event-property event 'class)))) #(define (ly:separation-item::add-conditional-item grob grob-item) "Add @var{grob-item} to the array of conditional elements of @var{grob}. @@ -209,7 +192,7 @@ position of middle C and key signature from @var{translator}'s context." ;; Get the event that caused the note-grob creation ;; and check that it is a note-event. (let ((note-event (ly:grob-property note-grob 'cause))) - (if (ly:event::in-event-class note-event 'note-event) + (if (ly:in-event-class? note-event 'note-event) ;; get the pitch from the note event (let ((pitch (ly:event-property note-event 'pitch))) ;; if this pitch is lower than the current ambitus lower @@ -313,23 +296,24 @@ position of middle C and key signature from @var{translator}'s context." (lambda (context) (let ((ambitus #f)) ;; when music is processed: make the ambitus object, if not already built - `((process-music . ,(lambda (translator) - (if (not ambitus) - (set! ambitus (make-ambitus translator))))) - ;; set the ambitus clef and key signature state - (stop-translation-timestep . ,(lambda (translator) - (if ambitus - (initialize-ambitus-state ambitus translator)))) - ;; when a note-head grob is built, update the ambitus notes - (acknowledgers - (note-head-interface . ,(lambda (engraver grob source-engraver) - (if ambitus - (update-ambitus-notes ambitus grob))))) - ;; finally, typeset the ambitus according to its upper and lower notes - ;; (if any). - (finalize . ,(lambda (translator) - (if ambitus - (typeset-ambitus ambitus translator)))))))) + (make-engraver + ((process-music translator) + (if (not ambitus) + (set! ambitus (make-ambitus translator)))) + ;; set the ambitus clef and key signature state + ((stop-translation-timestep translator) + (if ambitus + (initialize-ambitus-state ambitus translator))) + ;; when a note-head grob is built, update the ambitus notes + (acknowledgers + ((note-head-interface engraver grob source-engraver) + (if ambitus + (update-ambitus-notes ambitus grob)))) + ;; finally, typeset the ambitus according to its upper and lower notes + ;; (if any). + ((finalize translator) + (if ambitus + (typeset-ambitus ambitus translator))))))) %%% %%% Example diff --git a/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly b/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly index 8c8cc71438..6045697b5a 100644 --- a/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly +++ b/Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly @@ -1,129 +1,14 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Se pueden añadir diagramas de posiciones predefinidas para -instrumentos nuevos además de los estándar que se usan para la -guitarra. Este archivo muestra cómo se hace, definiendo una afinación -nueva y unas cuantas posiciones para el cuatro venezolano. - -Este archivo también muestra cómo se pueden incluir las digitaciones -en los acordes que se usan como puntos de referencia para la búsqueda -de acordes en la tabla, y mostrarse en el diagrama de posiciones y la -tablatura @code{TabStaff}, pero no en la música. - -Estas posiciones no se pueden transportar porque contienen información -de las cuerdas. Hay planes para corregir esto en un futuro. - -" - doctitlees = "Definición de posiciones predefinidas para otros instrumentos" - - -%% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e - texidocde = " -Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden -neben denen, die schon für die Gitarre definiert sind. Dieses Schnipsel -zeigt, wie man eine neue Saitenstimmung definiert und dann eigene vordefinierte -Bunddiagramme bestimmt. Das Beispiel ist für das venezualische Cuatro. - -Dieses Schnipsel zeigt auch, wie Fingersatz in die Akkorde eingebunden -werden kann, um als Referenzpunkt für die Akkordauswahl benutzt werden -kann. Dieser Fingersatz wird im Bunddiagramm und in der Tabulatur, -aber nicht in den Noten angezeigt. - -Diese Bunddiagramme sind nicht transponierbar, weil sie Saiteninformationen -enthalten. Das soll in der Zukunft verbessert werden. - -" - doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - - texidocfr = " -La liste des diagrammes standards prédéfinis pour la guitare peut être -augmentée d'autres définitions spécifiques à d'autres instruments. -Voici comment définir un nouvel accordage ainsi que quelques diagrammes -prédéfinis pour le @qq{cuatro vénézuélien}. - -Cet exemple illustre aussi la manière d'ajouter des doigtés aux -accords ; ils serviront de référence pour la boucle d'accord et seront -indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique. - -Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils -contiennent des informations sur les cordes. Ceci est amené à évoluer. - -" - doctitlefr = "Création de diagrammes de fret prédéfinis pour d'autres instruments" - - lsrtags = "fretted-strings" -%% Translation of GIT committish: cde045f4e833aa491fb63f2222e14bef49507577 - texidoces = " - -Se pueden añadir diagramas de posiciones predefinidas para -instrumentos nuevos además de los estándar que se usan para la -guitarra. Este archivo muestra cómo se hace, definiendo una afinación -nueva y unas cuantas posiciones para el cuatro venezolano. - -Este archivo también muestra cómo se pueden incluir las digitaciones -en los acordes que se usan como puntos de referencia para la búsqueda -de acordes en la tabla, y mostrarse en el diagrama de posiciones y la -tablatura @code{TabStaff}, pero no en la música. - -Estas posiciones no se pueden transportar porque contienen información -de las cuerdas. Hay planes para corregir esto en un futuro. - -" - doctitlees = "Definición de posiciones predefinidas para otros instrumentos" - - -%% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e - texidocde = " -Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden -neben denen, die schon für die Gitarre definiert sind. Dieses Schnipsel -zeigt, wie man eine neue Saitenstimmung definiert und dann eigene vordefinierte -Bunddiagramme bestimmt. Das Beispiel ist für das venezualische Cuatro. - -Dieses Schnipsel zeigt auch, wie Fingersatz in die Akkorde eingebunden -werden kann, um als Referenzpunkt für die Akkordauswahl benutzt werden -kann. Dieser Fingersatz wird im Bunddiagramm und in der Tabulatur, -aber nicht in den Noten angezeigt. - -Diese Bunddiagramme sind nicht transponierbar, weil sie Saiteninformationen -enthalten. Das soll in der Zukunft verbessert werden. - -" - doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - - texidocfr = " -La liste des diagrammes standards prédéfinis pour la guitare peut être -augmentée d'autres définitions spécifiques à d'autres instruments. -Voici comment définir un nouvel accordage ainsi que quelques diagrammes -prédéfinis pour le @qq{cuatro vénézuélien}. - -Cet exemple illustre aussi la manière d'ajouter des doigtés aux -accords ; ils serviront de référence pour la boucle d'accord et seront -indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique. - -Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils -contiennent des informations sur les cordes. Ceci est amené à évoluer. - -" - doctitlefr = "Création de diagrammes de fret prédéfinis pour d'autres instruments" - - texidoc = " Predefined fret diagrams can be added for new instruments in addition to the standards used for guitar. This file shows how this is done by @@ -206,7 +91,7 @@ primeros = { } \new FretBoards { - \set stringTunings = #cuatroTuning + \set Staff.stringTunings = #cuatroTuning % \override FretBoard % #'(fret-diagram-details string-count) = #'4 \override FretBoard diff --git a/Documentation/snippets/demo-midiinstruments.ly b/Documentation/snippets/demo-midiinstruments.ly index e1ba733c2b..434587651f 100644 --- a/Documentation/snippets/demo-midiinstruments.ly +++ b/Documentation/snippets/demo-midiinstruments.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "midi" + lsrtags = "midi, real-music, specific-notation" texidoc = " Problem: How to know which @code{midiInstrument} would be best for your @@ -19,6 +19,7 @@ composition? Solution: A LilyPond demo file. doctitle = "Demo MidiInstruments" } % begin verbatim + \header { title = "Demo of all midi sounds" arranger = "Myself " @@ -176,4 +177,3 @@ melody = { >> \midi { } } - diff --git a/Documentation/snippets/demonstrating-all-headers.ly b/Documentation/snippets/demonstrating-all-headers.ly index b20082f2b8..38b3bc30a9 100644 --- a/Documentation/snippets/demonstrating-all-headers.ly +++ b/Documentation/snippets/demonstrating-all-headers.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "text, paper-and-layout, titles" + lsrtags = "paper-and-layout, text, titles" texidoc = " A demonstration of all headers. @@ -16,6 +16,7 @@ A demonstration of all headers. doctitle = "Demonstrating all headers" } % begin verbatim + \header { copyright = "copyright" title = "title" @@ -56,4 +57,3 @@ A demonstration of all headers. copyright = "localcopyright" } } - diff --git a/Documentation/snippets/devel.snippet-list b/Documentation/snippets/devel.snippet-list new file mode 100644 index 0000000000..0bfd3b3b08 --- /dev/null +++ b/Documentation/snippets/devel.snippet-list @@ -0,0 +1,2 @@ +displaying-grob-ancestry.ly +using-ly-grob-object-to-access-grobs-with--tweak.ly diff --git a/Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly b/Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly index 61c64b4479..7af25ba2be 100644 --- a/Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly +++ b/Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly @@ -4,58 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "staff-notation, tweaks-and-overrides" -%% 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 -predeterminado es que no se imprima el corchete en la barra inicial. -Esto se puede cambiar sobreescribiendo las propiedades adecuadas. - -Observe que en contextos como @code{PianoStaff} y -@code{GrandStaff} en que los sistemas empiezan con una llave en -lugar de un corchete, se debe establecer el valor de una propiedad -distinta, como se ve en el segundo sistema del ejemplo. - -" - doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wenn nur ein System einer Systemgruppe vom Typ @code{ChoirStaff} oder -@code{StaffGroup} angezeigt wird, wird die Klammer zu Beginn normalerweise -nicht gesetzt. Das kann verändert werden, indem man die entsprechende -Eigenschaft verändert. - -Bei Systemen wie @code{PianoStaff} und @code{GrandStaff}, die mit einer -geschweiften Klammer beginne, muss eine andere Eigenschaft verändert werden, -wie das zweite Beispiel zeigt. - -" - doctitlede = "Klammer anzeigen wenn nur ein System gesetzt wird" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -Lorsque, dans des regoupements de type @code{ChoirStaff} ou -@code{StaffGroup}, une seule portée est active, aucune indication n'est -donnée en début de ligne. Surcharger la propriété adéquate permet de -modifier ce comportement par défaut. - -Notez bien que dans le cas des @code{PianoStaff} et @code{GrandStaff}, -pour lesquels le délimiteur de système est une accolade et non un -crochet, il ne s'agit pas de la même propriété -- voir le deuxième -@emph{système} de l'exemple. - -" - doctitlefr = "Indicateur de regroupement et portée unique" - - texidoc = " If there is only one staff in one of the staff types @code{ChoirStaff} or @code{StaffGroup}, the bracket and the starting bar line will not be @@ -70,6 +23,7 @@ property has to be set, as shown on the second system in the example. doctitle = "Display bracket with only one staff in a system" } % begin verbatim + \markup \left-column { \score { \new StaffGroup << diff --git a/Documentation/snippets/displaying-complex-chords.ly b/Documentation/snippets/displaying-complex-chords.ly index f3cae3839d..160093aac7 100644 --- a/Documentation/snippets/displaying-complex-chords.ly +++ b/Documentation/snippets/displaying-complex-chords.ly @@ -1,31 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "chords, simultaneous-notes, workaround" - texidoces = " -He aquí una forma de imprimir un acorde en el que suena la misma nota -dos veces con distintas alteraciones. - -" - doctitlees = "Impresión de acordes complejos" - - lsrtags = "simultaneous-notes, chords" texidoc = " Here is a way to display a chord where the same note is played twice with different accidentals. + " doctitle = "Displaying complex chords" } % begin verbatim - fixA = { \once \override Stem #'length = #9 } @@ -33,7 +24,7 @@ fixB = { \once \override NoteHead #'X-offset = #1.7 \once \override Stem #'rotation = #'(45 0 0) \once \override Stem #'extra-offset = #'(-0.2 . -0.2) - \once \override Stem #'flag-style = #'no-flag + \once \override Flag #'style = #'no-flag \once \override Accidental #'extra-offset = #'(4 . 0) } diff --git a/Documentation/snippets/displaying-grob-ancestry.ly b/Documentation/snippets/displaying-grob-ancestry.ly index 30fb087b23..87d2da59f6 100644 --- a/Documentation/snippets/displaying-grob-ancestry.ly +++ b/Documentation/snippets/displaying-grob-ancestry.ly @@ -1,112 +1,29 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Al trabajar con los callbacks de un grob, puede ser de mucha ayuda -entender el @qq{árbol genealógico} de un grob. La mayor parte de los -grobs tienen @qq{padres} que influyen en el posicionamiento del grob. -los padres X e Y influyen en las posiciones horizontal y vertical del -grob, respectivamente. Además, cada pade puede tener padres a su vez. - - -Por desgracia, existen varios aspectos de la genealogía de un grob que -pueden llevar a confusión: - - -@itemize - -@item Los tipos de padre que tiene un grob pueden depender del -contexto. - -@item Para ciertos grobs, los padres X e Y son el mismo. - -@item Un @qq{ancestro} concreto puede estar relacionado con un grob de -mas de una manera. - -@item El concepto de @qq{generaciones} es engañoso. - -@end itemize - - -Por ejemplo, el grob @code{System} puede ser tanto un padre (sobre el -lado Y) como un abuelo (dos veces en el lado X) de un grob -@code{VerticalAlignment}. - - -Este macro imprime, en la consola, una representación textual de la -genealogía de un grob. - - -Cuando se llama de esta forma - -@example -@{ - \\once \\override NoteHead #'before-line-breaking = #display-ancestry - c4 -@} -@end example - - -Se genera la siguiente salida: - - -@example ------------------------------------- - -NoteHead X,Y: NoteColumn - X: PaperColumn - X,Y: System - Y: VerticalAxisGroup - X: NonMusicalPaperColumn - X,Y: System - Y: VerticalAlignment - X: NonMusicalPaperColumn - X,Y: System - Y: System -@end example - -" - - doctitlees = "Imprimir el árbol genealógico de un grob" - - lsrtags = "tweaks-and-overrides" + lsrtags = "devel, scheme-language, tweaks-and-overrides" texidoc = " When working with grob callbacks, it can be helpful to understand a -grob's @qq{ancestry}. Most grobs have @qq{parents} which influence the -positioning of the grob. X- and Y-parents influence the horizontal and -vertical positions for the grob, respectively. Additionally, each +grob's @qq{ancestry}. Most grobs have @qq{parents} which influence the +positioning of the grob. X- and Y-parents influence the horizontal and +vertical positions for the grob, respectively. Additionally, each parent may have parents of its own. Unfortunately, there are several aspects of a grob's ancestry that can lead to confusion: - -@itemize - -@item -The types of parents a grob has may depend on context. - -@item -For some grobs, the X- and Y-parents are the same. - -@item -A particular @qq{ancestor} may be related to a grob in multiple ways. - -@item -The concept of @qq{generations} is misleading. - -@end itemize +* The types of parents a grob has may depend on context. * For some +grobs, the X- and Y-parents are the same. * A particular @qq{ancestor} +may be related to a grob in multiple ways. * The concept of +@qq{generations} is misleading. For example, the @code{System} grob can be both parent (on the Y-side) @@ -120,18 +37,15 @@ ancestry. When called this way -@example + @{ - \\once \\override NoteHead #'before-line-breaking = #display-ancestry - c4 -@} -@end example + \\once \\override NoteHead #'before-line-breaking = #display-ancestry + c @} The following output is generated: -@example ------------------------------------ NoteHead X,Y: NoteColumn @@ -144,14 +58,13 @@ NoteHead X,Y: NoteColumn X: NonMusicalPaperColumn X,Y: System Y: System -@end example + " doctitle = "Displaying grob ancestry" } % begin verbatim - #(define (grob-name grob) (if (ly:grob? grob) (assoc-ref (ly:grob-property grob 'meta) 'name) @@ -195,11 +108,10 @@ NoteHead X,Y: NoteColumn (format #f "~&"))) #(define (display-ancestry grob) - (display - (string-append - (format #f "~3&~a~2%" (make-string 36 #\-)) - (format-ancestry (get-ancestry grob) 0) - (format #f "~2&")))) + (format (current-error-port) + "~3&~a~2%~a~&" + (make-string 36 #\-) + (format-ancestry (get-ancestry grob) 0))) \relative c' { \once \override NoteHead #'before-line-breaking = #display-ancestry diff --git a/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly b/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly deleted file mode 100644 index 24838b7142..0000000000 --- a/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly +++ /dev/null @@ -1,75 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% 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 -Webern (la @qq{Segunda} escuela de Viena), cada nota de la escala de -doce tonos se debe tratar con igualdad, sin ninguna jerarquía como los -grados clásicos tonales. Por tanto, estos compositores imprimen una -alteración accidental para cada nota, incluso en las notas naturales, -para enfatizar su nuevo enfoque de la teoría y el lenguaje musicales. - -Este fragmento de código muestra cómo conseguir dichas reglas de -notación. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " - In Werken des frühen 20. Jahrhundert, angefangen mit Schönberg, Berg - und Webern (die zweite Wiener Schule), wird jeder Ton der - Zwölftonleiter als gleichwertig erachtet, ohne hierarchische - Ordnung. Deshalb wird in dieser Musik für jede Note ein Versetzungszeichen - ausgegeben, auch für unalterierte Tonhöhen, um das neue Verständnis - der Musiktheorie und Musiksprache zu verdeutlichen. - - Dieser Schnipsel zeigt, wie derartige Notationsregeln zu erstellen sind. - " - doctitlede = "Versetzungszeichen für jede Note im Stil der Zwölftonmusik" - -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e - texidocfr = " -Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde » -école de Vienne -- imaginèrent de donner une importance comparable aux -douze notes de la gamme chromatique, et éviter ainsi toute tonalité. -Pour ce faire, ces compositions font apparaître une altération à chaque -note, y compris un bécarre, pour mettre en exergue cette nouvelle -approche de la théorie et du langage musicaux. - -Voici comment obtenir une telle notation. - -" - doctitlefr = "Le dodécaphonisme : toute note est altérée" - - - lsrtags = "pitches" - texidoc = " -In early 20th century works, starting with Schoenberg, Berg and Webern -(the @qq{Second} Viennese school), every pitch in the twelve-tone scale -has to be regarded as equal, without any hierarchy such as the -classical (tonal) degrees. Therefore, these composers print one -accidental for each note, even at natural pitches, to emphasize their -new approach to music theory and language. - -This snippet shows how to achieve such notation rules. - -" - doctitle = "Dodecaphonic-style accidentals for each note including naturals" -} % begin verbatim - - -\markup { - This snippet is deprecated as of version 2.12 and - will be removed from the documentation in 2.14. -} - diff --git a/Documentation/snippets/dotted-harmonics.ly b/Documentation/snippets/dotted-harmonics.ly index bd942ce2bc..aa453021e4 100644 --- a/Documentation/snippets/dotted-harmonics.ly +++ b/Documentation/snippets/dotted-harmonics.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "unfretted-strings, tweaks-and-overrides" + lsrtags = "real-music, tweaks-and-overrides, unfretted-strings" texidoc = " Artificial harmonics using @code{\\harmonic} do not show dots. To @@ -17,6 +17,7 @@ override this behavior, set the context property @code{harmonicDots}. doctitle = "Dotted harmonics" } % begin verbatim + \relative c''' { \time 3/4 \key f \major diff --git a/Documentation/snippets/double-glissando.ly b/Documentation/snippets/double-glissando.ly index dfae532646..316dc5fb00 100644 --- a/Documentation/snippets/double-glissando.ly +++ b/Documentation/snippets/double-glissando.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, simultaneous-notes" + lsrtags = "contemporary-notation, expressive-marks, simultaneous-notes, workaround" texidoc = " To connect chords with glissando lines, attach a second glissando to a @@ -17,6 +17,7 @@ hidden voice. doctitle = "Double glissando" } % begin verbatim + \relative c { \clef bass << @@ -34,4 +35,3 @@ hidden voice. } >> } - diff --git a/Documentation/snippets/drawing-boxes-around-grobs.ly b/Documentation/snippets/drawing-boxes-around-grobs.ly index ff05bfb0d5..2bddbf518c 100644 --- a/Documentation/snippets/drawing-boxes-around-grobs.ly +++ b/Documentation/snippets/drawing-boxes-around-grobs.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, tweaks-and-overrides" + lsrtags = "editorial-annotations, scheme-language, tweaks-and-overrides" texidoc = " The @code{print-function} can be overridden to draw a box around an @@ -17,6 +17,7 @@ arbitrary grob. doctitle = "Drawing boxes around grobs" } % begin verbatim + \relative c'' { \override TextScript #'stencil = #(make-stencil-boxer 0.1 0.3 ly:text-interface::print) @@ -29,10 +30,9 @@ arbitrary grob. b8 \revert Stem #'stencil + + \revert Flag #'stencil c4. c4 \mark "F" c1 } - - - diff --git a/Documentation/snippets/drawing-circles-around-note-heads.ly b/Documentation/snippets/drawing-circles-around-note-heads.ly index dc677772d2..b2dc749eb4 100644 --- a/Documentation/snippets/drawing-circles-around-note-heads.ly +++ b/Documentation/snippets/drawing-circles-around-note-heads.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "editorial-annotations" diff --git a/Documentation/snippets/drawing-circles-around-various-objects.ly b/Documentation/snippets/drawing-circles-around-various-objects.ly index 773804c656..f10fa4edc0 100644 --- a/Documentation/snippets/drawing-circles-around-various-objects.ly +++ b/Documentation/snippets/drawing-circles-around-various-objects.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, tweaks-and-overrides" + lsrtags = "editorial-annotations, scheme-language, tweaks-and-overrides" texidoc = " The @code{\\circle} markup command draws circles around various diff --git a/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly b/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly index fc4b01f2fb..b673f2165f 100644 --- a/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly +++ b/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly @@ -1,59 +1,24 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Funciones postfijas para la creación de objetos de extensión de texto -personalizados. Los objetos de extensión deben comenzar en la primera -nota del compás. Hay que utilizar -\mycresc, en caso contrario el -comienzo del eobjeto de extensión se asignará a la nota siguiente. - -" - - doctitlees = "Objeto personalizado de extensión de texto de matices dinámicos postfijo" - -%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - - texidocde = "Die Nachstellung funktioniert für eigene Crescendo-Textstrecker. -Die Strecker sollten an der ersten Note eines Taktes beginnen. Man muss --\mycresc benutzen, sonst wird der Beginn des Streckers der nächsten Note -zugewiesen. - -" - doctitlede = "Eigene Dynamiktextspanner nachgestellt" - - -%% Translation of GIT committish: a06cb0b0d9593ba110e001f2b0f44b8bef084693 - - texidocfr = " -Il s'agit de fonctions postfix pour personnaliser l'extension des -crescendos textuels. L'extension devrait débuter sur la première notte -de la mesure. Il faut utiliser @code{-\mycresc} -- comme une -articulation -- sous peine que le départ de l'extension n'apparaisse -qu'à la note suivante. -" - - doctitlefr = "Personnalisation des extenseurs de nuance postfix" + lsrtags = "expressive-marks, tweaks-and-overrides" + texidoc = " +Postfix functions for custom crescendo text spanners. The spanners +should start on the first note of the measure. One has to use +-\\mycresc, otherwise the spanner start will rather be assigned to the +next note. - lsrtags = "expressive-marks, tweaks-and-overrides" - texidoc = "Postfix functions for custom crescendo text spanners. The spanners -should start on the first note of the measure. One has to use -\mycresc, -otherwise the spanner start will rather be assigned to the next note. " doctitle = "Dynamics custom text spanner postfix" } % begin verbatim - % Two functions for (de)crescendo spanners where you can explicitly give the % spanner text. mycresc = @@ -75,6 +40,3 @@ mydecresc = c4-\mydecresc "custom decresc" c4 c4 c4 | c4 c4\! c4 c4 } - - - diff --git a/Documentation/snippets/dynamics-text-spanner-postfix.ly b/Documentation/snippets/dynamics-text-spanner-postfix.ly index b35749a052..3a57f5a214 100644 --- a/Documentation/snippets/dynamics-text-spanner-postfix.ly +++ b/Documentation/snippets/dynamics-text-spanner-postfix.ly @@ -1,64 +1,23 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Los objetos de extensión \cresc, \dim y \decresc ahora se pueden -redefinir como operadores postfijos y producir un solo objeto de -extensión de texto. La definición de extensores personalizados -también es fácil. Se pueden mezclar con facilidad los crescendi -textuales y en forma de reguladores. \< y \> producen reguladores -gráficos de forma predeterminada, \cresc etc. producen elementos -extensores de texto de forma predeterminada. - -" - - doctitlees = "Objetos extensores de texto postfijos para dinámica" - -%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - - texidocde = "Die \cresc, \dim und \decresc Strecker können umdefiniert werden, -um nachgestellt zu funktionieren und einen Textstrecker zu produzieren. Eigene -Strecker können auch einfach definiert werden. Klammer- und Textcrescendi können -einfach vermischt werden. \< und \> erstellen normalerweise Klammern, \cresc -usw. dagegen normalerweise Textspanner. - -" - doctitlede = "Dynamiktextstrecker nachgestellt" - - - -%% Translation of GIT committish: a06cb0b0d9593ba110e001f2b0f44b8bef084693 + lsrtags = "expressive-marks, tweaks-and-overrides" - texidocfr = " -Les lignes d'extension des commandes \cresc, \dim et \decresc peuvent -désormais être personnalisées facilement sous forme d'opérateurs -postfix. Soufflets et (de)crescendos peuvent cohabiter. \< et \> -produiront par défaut des soufflets, alors que \cresc etc. produiront -une indication textuelle avec extension. + texidoc = " +Custom text spanners can be defined and used with hairpin and text +crescendos. @code{\\<} and @code{\\>} produce hairpins by default, +@code{\\cresc} etc. produce text spanners by default. " - - doctitlefr = "Extensions de nuance postfix" - - - lsrtags = "expressive-marks, tweaks-and-overrides" - texidoc = "Custom text spanners can be defined and used with hairpin - and text crescendos. @code{\<} and @code{\>} produce hairpins by - default, @code{\\cresc} etc. produce text spanners by default." doctitle = "Dynamics text spanner postfix" } % begin verbatim - % Some sample text dynamic spanners, to be used as postfix operators crpoco = #(make-music 'CrescendoEvent @@ -73,4 +32,3 @@ crpoco = g4 a4\! b4\< c4 | g4\dim a4 b4\decresc c4\! } - diff --git a/Documentation/snippets/editorial-annotations-intro.itely b/Documentation/snippets/editorial-annotations-intro.itely index 0dd710632a..793c8570b1 100644 --- a/Documentation/snippets/editorial-annotations-intro.itely +++ b/Documentation/snippets/editorial-annotations-intro.itely @@ -1,5 +1,6 @@ @node Editorial annotations @unnumbered Editorial annotations +@nodeprefix Editorial annotations @ruser{Editorial annotations} diff --git a/Documentation/snippets/editorial-annotations.snippet-list b/Documentation/snippets/editorial-annotations.snippet-list index 29a4aa8df2..8b488aae5c 100644 --- a/Documentation/snippets/editorial-annotations.snippet-list +++ b/Documentation/snippets/editorial-annotations.snippet-list @@ -1,5 +1,6 @@ adding-fingerings-to-a-score.ly allowing-fingerings-to-be-printed-inside-the-staff.ly +alternative-bar-numbering.ly analysis-brackets-above-the-staff.ly applying-note-head-styles-depending-on-the-step-of-the-scale.ly avoiding-collisions-with-chord-fingerings.ly @@ -10,6 +11,7 @@ coloring-notes-depending-on-their-pitch.ly controlling-the-placement-of-chord-fingerings.ly creating-a-delayed-turn.ly creating-blank-staves.ly +creating-double-digit-fingerings.ly default-direction-of-stems-on-the-center-line-of-the-staff.ly drawing-boxes-around-grobs.ly drawing-circles-around-note-heads.ly diff --git a/Documentation/snippets/editorial-headword.ly b/Documentation/snippets/editorial-headword.ly index bde46b8f21..b40a6cebd2 100644 --- a/Documentation/snippets/editorial-headword.ly +++ b/Documentation/snippets/editorial-headword.ly @@ -1,26 +1,25 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" + lsrtags = "headword" + + texidoc = " +NR 1.7 Editorial annotations + +Beethoven, Op. 31, No. 3 Piano sonata 18, Movt II, Scherzo Measures 9 - +14 + +" + doctitle = "Editorial headword" } % begin verbatim +\include "english.ly" % NR 1.7 Editorial annotations @@ -103,5 +102,4 @@ c4 r4 } - >> diff --git a/Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly b/Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly index fe30d0419d..77354ead09 100644 --- a/Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly +++ b/Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly @@ -4,18 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, text" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede insertar códico PostScript directamente dentro de un -bloque @code{\\markup}. - -" - doctitlees = "Empotrar PostScript nativo dentro de un bloque \\markup" + lsrtags = "editorial-annotations, really-cool, specific-notation, text" texidoc = " PostScript code can be directly inserted inside a @code{\\markup} @@ -25,6 +17,7 @@ block. doctitle = "Embedding native PostScript in a \\markup block" } % begin verbatim + % PostScript is a registered trademark of Adobe Systems Inc. \relative c'' { @@ -35,4 +28,3 @@ block. s2 a'1 } - diff --git a/Documentation/snippets/engravers-one-by-one.ly b/Documentation/snippets/engravers-one-by-one.ly index 06d81b57b1..3e9ea2fee8 100644 --- a/Documentation/snippets/engravers-one-by-one.ly +++ b/Documentation/snippets/engravers-one-by-one.ly @@ -1,43 +1,13 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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 -uno de los complementos se conoce como un grabador. En este -ejemplo, los grabadores se van activando uno por uno, en el orden -siguiente: - -- cabeza de las notas, - -- el símbolo del pentagrama, - -- clave, - -- plicas, - -- barras, ligaduras de expresión, acentos, - -- alteraciones, líneas divisorias, indicación del compás, y armadura. - -Los grabadores se encuentran agrupados. Por ejemplo, las cabezas de -nota, ligaduras de expresión, barras de corchea, etc. forman un -contexto de voz, @code{Voice}. Los grabadores de la armadura, -alteraciones, líneas de compás, etc. forman un contexto de pentagrama, -@code{Staff}. - -" - doctitlees = "Los grabadores uno por uno" - - lsrtags = "contexts-and-engravers" + lsrtags = "contexts-and-engravers, specific-notation" texidoc = " The notation problem, creating a certain symbol, is handled by plugins. @@ -79,8 +49,7 @@ topVoice = \relative c' { b4 b16[-. b-. b-. cis-.] d4-> -} % begin verbatim - +} botVoice = \relative c' { \key d \major @@ -307,4 +276,3 @@ MyStaff = \context { \context { \MyVoice } } } - diff --git a/Documentation/snippets/engraving-ties-manually.ly b/Documentation/snippets/engraving-ties-manually.ly index 4306b711c1..24c2538cf9 100644 --- a/Documentation/snippets/engraving-ties-manually.ly +++ b/Documentation/snippets/engraving-ties-manually.ly @@ -4,60 +4,25 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Grabado manual de las ligaduras" - texidoces = " -Se pueden grabar a mano las ligaduras modificando la propiedad -@code{tie-configuration} del objeto @code{TieColumn}. El primer número -indica la distancia a partir de la tercera línea del pentagrama en -espacios de pentagrama, y el segundo número indica la dirección (1 = -hacia arriba, -1 = hacia abajo). - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Überbindungen können manuell gesetzt werden, indem man die -@code{tie-configuration}-Eigenschaft des @code{TieColumn}-Objekts -beeinflusst. Die erste Zahl zeigt den Abstand von der Mitte in -Notensystemabständen an, die zweite Zahl zeigt die Richtung an (1 = nach oben, --1 = nach unten). - -" - doctitlede = "Bindebögen manuell setzen" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Il est possible de graver manuellement les liaisons de tenue, en -modifiant la propriété @code{tie-configuration}. Pour chaque paire, le -premier nombre indique la distance à la portée, en espaces de portée, et -le second la direction (1 pour haut, @minus{}1 pour bas). - -" - doctitlefr = "Dessin à main levée de liaisons de tenue" - texidoc = " Ties may be engraved manually by changing the @code{tie-configuration} property of the @code{TieColumn} object. The first number indicates the -distance from the center of the staff in staff-spaces, and the second -number indicates the direction (1 = up, -1 = down). +distance from the center of the staff in half staff-spaces, and the +second number indicates the direction (1 = up, -1 = down). " doctitle = "Engraving ties manually" } % begin verbatim + \relative c' { - 2 ~ + 2~ \override TieColumn #'tie-configuration = #'((0.0 . 1) (-2.0 . 1) (-4.0 . 1)) - 2 ~ + 2~ } - diff --git a/Documentation/snippets/engraving-tremolos-with-floating-beams.ly b/Documentation/snippets/engraving-tremolos-with-floating-beams.ly index bf6981d212..4b9d07625a 100644 --- a/Documentation/snippets/engraving-tremolos-with-floating-beams.ly +++ b/Documentation/snippets/engraving-tremolos-with-floating-beams.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, repeats" + lsrtags = "repeats, rhythms" texidoc = " If a tremolo's total duration is less than a quarter-note, or exactly a @@ -25,6 +25,7 @@ the @code{'gap} property. doctitle = "Engraving tremolos with floating beams" } % begin verbatim + \relative c'' { \repeat tremolo 8 { a32 f } \override Beam #'gap-count = #1 @@ -44,7 +45,3 @@ the @code{'gap} property. \override Beam #'gap = #0.33 \repeat tremolo 8 { a32 f } } - - - - diff --git a/Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly b/Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly index 29cd39df15..384c90017e 100644 --- a/Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly +++ b/Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly @@ -4,61 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" - -%% 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 -cada grupo de valoración especial contenido dentro del corchete que -aparece después de @code{\\times}. Así, se pueden escribir muchos -tresillos seguidos dentro de una sola expresión @code{\\times}, -ahorrando trabajo de teclado. - -En el ejemplo se muestran dos tresillos, aunque se ha escrito -@code{\\times} una sola vez. - - -Para ver más inforamción sobre @code{make-moment}, véase la sección -correspondiente del manual de Referencia de la Notación. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Eigenschaft @code{tupletSpannerDuration} bestimmt, wie lange jede -der N-tolen innerhalb der Klammern nach dem @code{\\times}-Befehl -dauert. Auf diese Art können etwa viele Triolen nacheinander mit nur -einem @code{\\times}-Befehl geschrieben werden. - -Im Beispiel sind zwei Triolen zu sehen, obwohl @code{\\times} nur -einmal geschrieben wurde. - -Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinheiten\". - -" - doctitlede = "Mehrere Triolen notieren aber nur einmal \\times benutzen" - - - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de -chaque crochet. Avec elle, vous pouvez faire plusieurs nolets en ne -tapant @code{\\times} qu'une fois, ce qui évite une longue saisie. - -Dans l'exemple suivant, deux triolets sont imprimés avec une seule fonction -@code{\\times}. - -Pour plus d'information sur @code{make-moment}, voir la section -appropriée du manuel de notation. - -" - doctitlefr = "Plusieurs triolets avec une seule commande \\times" + lsrtags = "rhythms, syntax-and-expressions" texidoc = " The property @code{tupletSpannerDuration} sets how long each of the @@ -77,9 +26,9 @@ information about @code{ly:make-moment}. doctitle = "Entering several tuplets using only one \\times command" } % begin verbatim + \relative c' { \time 2/4 \set tupletSpannerDuration = #(ly:make-moment 1 4) \times 2/3 { c8 c c c c c } } - diff --git a/Documentation/snippets/expressive-headword.ly b/Documentation/snippets/expressive-headword.ly index f9ed38c03d..6730fe41c9 100644 --- a/Documentation/snippets/expressive-headword.ly +++ b/Documentation/snippets/expressive-headword.ly @@ -1,27 +1,24 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" -% NR 1.3 Expressive marks +\header { + lsrtags = "headword" + texidoc = " +Expressive headword -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" +" + doctitle = "Expressive headword" } % begin verbatim +\include "english.ly" + +% NR 1.3 Expressive marks % L. v. Beethoven, Op. 49 no. 1 % Piano sonata 19 - "Leichte Sonate" diff --git a/Documentation/snippets/expressive-marks-intro.itely b/Documentation/snippets/expressive-marks-intro.itely index c869a5347c..60598e5420 100644 --- a/Documentation/snippets/expressive-marks-intro.itely +++ b/Documentation/snippets/expressive-marks-intro.itely @@ -1,5 +1,6 @@ @node Expressive marks @unnumbered Expressive marks +@nodeprefix Expressive marks @ruser{Expressive marks} diff --git a/Documentation/snippets/expressive-marks.snippet-list b/Documentation/snippets/expressive-marks.snippet-list index aa06de0d48..54cbf78449 100644 --- a/Documentation/snippets/expressive-marks.snippet-list +++ b/Documentation/snippets/expressive-marks.snippet-list @@ -20,6 +20,7 @@ creating-a-delayed-turn.ly creating-arpeggios-across-notes-in-different-voices.ly creating-cross-staff-arpeggios-in-a-piano-staff.ly creating-cross-staff-arpeggios-in-other-contexts.ly +creating-double-digit-fingerings.ly creating-real-parenthesized-dynamics.ly creating-simultaneous-rehearsal-marks.ly creating-slurs-across-voices.ly @@ -27,6 +28,7 @@ creating-text-spanners.ly double-glissando.ly dynamics-custom-text-spanner-postfix.ly dynamics-text-spanner-postfix.ly +glissandi-can-skip-grobs.ly hairpins-with-different-line-styles.ly hiding-the-extender-line-for-text-dynamics.ly horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly @@ -38,7 +40,6 @@ line-arrows.ly making-slurs-with-complex-dash-structure.ly modifying-default-values-for-articulation-shorthand-notation.ly moving-slur-positions-vertically.ly -piano-template-with-centered-dynamics.ly positioning-arpeggios.ly positioning-text-markups-inside-slurs.ly printing-hairpins-using-al-niente-notation.ly @@ -46,7 +47,7 @@ printing-metronome-and-rehearsal-marks-below-the-staff.ly setting-hairpin-behavior-at-bar-lines.ly setting-the-minimum-length-of-hairpins.ly showing-the-same-articulation-above-and-below-a-note-or-chord.ly -snap-pizzicato-bartok-pizzicato.ly +snap-pizzicato-or-bartok-pizzicato.ly using-arpeggiobracket-to-make-divisi-more-visible.ly using-double-slurs-for-legato-chords.ly using-the-whiteout-property.ly diff --git a/Documentation/snippets/faking-a-hammer-in-tablatures.ly b/Documentation/snippets/faking-a-hammer-in-tablatures.ly index ad838c2205..fff3fddafb 100644 --- a/Documentation/snippets/faking-a-hammer-in-tablatures.ly +++ b/Documentation/snippets/faking-a-hammer-in-tablatures.ly @@ -1,26 +1,17 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "fretted-strings, specific-notation, workaround" - texidoces = " -Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de -expresión. - -" - - doctitlees = "Simular un hammer o ligado ascendente en una tablatura" - - lsrtags = "fretted-strings" texidoc = " A hammer in tablature can be faked with slurs. + " doctitle = "Faking a hammer in tablatures" } % begin verbatim diff --git a/Documentation/snippets/figured-bass-headword.ly b/Documentation/snippets/figured-bass-headword.ly index 40d2973706..fdf1803c22 100644 --- a/Documentation/snippets/figured-bass-headword.ly +++ b/Documentation/snippets/figured-bass-headword.ly @@ -1,27 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -#(set-global-staff-size 15) -\paper { - ragged-right = ##f - line-width = 16\cm - indent = 1.5\cm -} +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" -% NR 2.7.3 Figured bass +\header { + lsrtags = "headword" + texidoc = " +Figured bass headword -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" +" + doctitle = "Figured bass headword" } % begin verbatim +% NR 2.7.3 Figured bass % Arcangelo Corelli, 12 Sonate da Camera, Op. 2 % Sonata II, Allemanda @@ -32,11 +27,8 @@ extendOn = \bassFigureExtendersOn extendOff = \bassFigureExtendersOff \score { - \new StaffGroup << - \new GrandStaff << - \new Staff = "violinoI" { \set Staff.instrumentName = \markup { \line { Violino I. } diff --git a/Documentation/snippets/fine-tuning-pedal-brackets.ly b/Documentation/snippets/fine-tuning-pedal-brackets.ly index 4a01275ade..547d1e8037 100644 --- a/Documentation/snippets/fine-tuning-pedal-brackets.ly +++ b/Documentation/snippets/fine-tuning-pedal-brackets.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "keyboards, tweaks-and-overrides" @@ -16,6 +16,7 @@ The appearance of pedal brackets may be altered in different ways. doctitle = "Fine-tuning pedal brackets" } % begin verbatim + \paper { ragged-right = ##f } \relative c'' { c2\sostenutoOn c diff --git a/Documentation/snippets/fingering-symbols-for-wind-instruments.ly b/Documentation/snippets/fingering-symbols-for-wind-instruments.ly index e750a41a35..15ebe07c1d 100644 --- a/Documentation/snippets/fingering-symbols-for-wind-instruments.ly +++ b/Documentation/snippets/fingering-symbols-for-wind-instruments.ly @@ -4,27 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "winds" - -%% 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. - -" - doctitlees = "Símbolos de digitación para instrumentos de viento" - -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d - texidocfr = " -Des sumboles spécifiques peuvent être obtenus en combinant les glyphes -disponibles, ce qui est tout à fait indiqué en matière d'instrument à vent. - -" - doctitlefr = "Symboles de doigtés pour instruments à vent" - + lsrtags = "symbols-and-glyphs, winds" texidoc = " Special symbols can be achieved by combining existing glyphs, which is @@ -55,4 +38,3 @@ centermarkup = { g\stopped } } - diff --git a/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly b/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly index 6717be0a26..f57ab20dee 100644 --- a/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly +++ b/Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings" -%% 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 -derecha. - -" - doctitlees = "Digitaciones - indicación del número de cuerda y digitaciones de mano derecha" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Dieses Beispiel kombiniert Fingersatz für die linke Hand, Saitennummern -und Fingersatz für die rechte Hand. - -" - doctitlede = "Fingersatz Saitennummern und Fingersatz für die rechte Hand" - -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - - texidocfr = " -L'exemple suivant illustre comment combiner des doigtés pour la main -gauche, des indications de corrde et des doigtés pour la main droite. - -" - doctitlefr = "Doigtés indications de cordeet doigtés main droite" - - texidoc = " This example combines left-hand fingering, string indications, and right-hand fingering. @@ -45,6 +17,7 @@ right-hand fingering. doctitle = "Fingerings string indications and right-hand fingerings" } % begin verbatim + #(define RH rightHandFinger) \relative c { @@ -54,4 +27,3 @@ right-hand fingering. 4 4 } - diff --git a/Documentation/snippets/flamenco-notation.ly b/Documentation/snippets/flamenco-notation.ly index da6086473b..eeede2855c 100644 --- a/Documentation/snippets/flamenco-notation.ly +++ b/Documentation/snippets/flamenco-notation.ly @@ -1,85 +1,27 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Para la guitarra flamenca se utilizan ciertos elementos de notación -especiales: - - -@itemize - -@item un símbolo para indicar un golpe sobre la caja de la guitarra -con el nudillo del dedo anular - -@item una flecha para indicar la dirección de los rasgueos - -@item distintas legras para las digitaciones (@qq{p}: pulgar, @qq{i}: -índice, @qq{m}: medio, @qq{a}: anular y @qq{x}: meñique) - -@item Rasgueados de 3 y cautro dedos: hacia arriba con todos los dedos -y terminando con arriba y abajo con el índice - -@item abanicos: rasgueos en serie con el pulgar, hacia abajo y el -meñique y el índice hacia arriba (hay también un abanico 2 en el que -los dedos medio y anular se usan en lugar del meñique) - -@item alza púa: pulsaciones rápidas con el pulgar - -@end itemize - - -Casi todas las figuras utilizan flechas combinadas con digitaciones; -con los abanicos y los rasgueados, las notas se imprimen con cabeza -sólo en el primer acorde. - -Este fragmento de código contiene código de tipo cabecera que se puede -copiar como @file{flamenco.ly} e incluirse en los documentos fuente. - -" - doctitlees = "Notación del flamenco" - - lsrtags = "fretted-strings" + lsrtags = "fretted-strings, specific-notation, stylesheet, version-specific" texidoc = " For flamenco guitar, special notation is used: -@itemize - -@item -a golpe symbol to indicate a slap on the guitar body with the nail of -the ring finger - -@item -an arrow to indicate (the direction of) strokes - -@item +* a golpe symbol to indicate a slap on the guitar body with the nail of +the ring finger * an arrow to indicate (the direction of) strokes * different letters for fingering (@qq{p}: thumb, @qq{i}: index finger, -@qq{m}: middle finger, @qq{a}: ring finger and @qq{x}: little finger) - -@item -3- and 4-finger rasgueados: stroke upwards with all fingers, ending -with an up- and down using the index finger - -@item -abanicos: strokes (in tuples) with thumb (down), little and index finger -(both up) (there is also an abanico 2 where middle and ring finger are -used instead of the little finger) - -@item -alza pua: fast playing with the thumb - -@end itemize +@qq{m}: middle finger, @qq{a}: ring finger and @qq{x}: little finger) * +3- and 4-finger rasgueados; stroke upwards with all fingers, ending +with an up- and down using the index finger * abanicos: strokes (in +tuples) with thumb (down), little and index finger (both up). There's +also an abanico 2 where middle and ring finger are used instead of the +little finger. * alza pua: fast playing with the thumb Most figures use arrows in combination with fingering; with abanicos diff --git a/Documentation/snippets/flat-flags-and-beam-nibs.ly b/Documentation/snippets/flat-flags-and-beam-nibs.ly index d712a7c091..9657cfe775 100644 --- a/Documentation/snippets/flat-flags-and-beam-nibs.ly +++ b/Documentation/snippets/flat-flags-and-beam-nibs.ly @@ -4,108 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" - -%% 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 -@code{stemLeftBeamCount}, @code{stemRightBeamCount} e indicadores de -barra @code{[]} emparejados. - -Para corchetes rectos que apunten a la derecha sobre notas sueltas, -use indicadores de barra emparejados @code{[]} y establezca -@code{stemLeftBeamCount} a cero (véase el ejemplo 1). - -Para corchetes rectos que apunten a la izquierda, establezca en su -lugar @code{stemRightBeamCount} (ejemplo 2). - -Para extremos sueltos que apunten a la derecha al final de un conjunto -de notas unidas, establezca @code{stemRightBeamCount} a un valor -positivo. Y para extremos sueltos que apunten a la izquierda al -principio de un conjunto de notas unidas, establezca -@code{stemLeftBeamCount} en su lugar (ejemplo 3). - -A veces, para una nota suelta rodeada de silencios tiene sentido que -lleve los dos extremos sueltos del corchete plano, apuntando a derecha -e izquierda. Hágalo solamente con indicadores de barra emparejados -@code{[ ]} (ejemplo 4). - -(Observe que @code{\\set stemLeftBeamCount} siempre equivale a -@code{\\once \\set}. En otras palabras, los ajustes de la cantidad de -barras no se recuerdan, y por ello el par de corchetes planos -aplicados a la nota Do semicorchea @code{c'16[]} del último ejemplo no -tiene nada que ver con el @code{\\set} de dos notas por detrás.) - -" - doctitlees = "Corchetes rectos y extremos de barra sueltos" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Gerade Fähnchen an einzelnen Noten und überstehende Balkenenden bei -bebalkten Notengruppen sind möglich mit einer Kombination aus -@code{stemLeftBeamCount}, @code{stemRightBeamCount} und Paaren von -@code{[]}-Balkenbegrenzungen. - -Für gerade Fähnchen, die nach rechts zeigen, kann @code{[]} eingesetzt -werden und @code{stemLeftBeamCount} auf Null gesetzt werden (wie -Bsp. 1). - -Für gerade Fähnchen, die nach links zeigen, muss @code{stemRightBeamCount} -eingesetzt werden (Bsp. 2). - -Für überstehende Balkenenden nach rechts muss @code{stemRightBeamCount} -auf einen positiven Wert gesetzt werden, für Balkenenden, die nach links -zeigen benutzt man @code{stemLeftBeamCount} (Bsp. 3). - -Manchmal können einzelne Noten, die von Pausen umgeben sind, auch Balkenenden -in beide Richtungen tragen. Das geschieht mit @code{[]}-Klammern (Bsp. 4). - -(@code{\\set stemLeftBeamCount} entspricht immer dem Befehl -@code{\\once \\set}. Anders gesagt müssen die Einstellungen immer wieder -wiederholt werden und die Fähnchen des letzten Sechzehntels im letzten -Beispiel haben nichts mit dem @code{\\set}-Befehl zwei Noten vorher zu tun.) - -" - doctitlede = "Gerade Fähnchen und überstehende Balkenenden" - - - -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - texidocfr = " -En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des -paires de @code{[]}, vous pourrez obtenir des crochets rectilignes et -des ligatures qui débordent à leurs extrémités. - -Pour des crochets rectilignes à droite sur des notes isolées, il suffit -d'ajouter une paire d'indicateurs de ligature @code{[]} et de déterminer -@code{stemLeftBeamCount} à zéro, comme dans l'exemple@tie{}1. - -Pour des crochets rectiligne à gauche, c'est @code{stemRightBeamCount} -qu'il faudra déterminer (exemple@tie{}2). - -Pour que les barres de ligature débordent sur la droite, -@code{stemRightBeamCount} doit avoir une valeur positive@tie{}; pour un -débrodement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut -jouer. Tout ceci est illustré par l'exemple@tie{}3. - -Il est parfois judicieux, lorsqu'une note est encadrée de silences, de -l'affubler de crochets rectilignes de part et d'autre. L'exemple@tie{}4 -montre qu'il suffit d'adjoindre à cette note un @code{[]}. - -(Notez bien que @code{\\set@tie{}stemLeftBeamCount} sera toujours -synonyme de @code{\\once@tie{}\\set}. Autrement dit, la détermination -des ligatures n'est pas @qq{permanente}@tie{}; c'est la raison pour -laquelle les crochets du @code{c'16[]} isolé du dernier exemple n'ont -rien à voir avec le @code{\\set} indiqué deux notes auparavant.) - -" - doctitlefr = "Crochet rectiligne et débordement de ligature" + lsrtags = "contemporary-notation, rhythms" texidoc = " Flat flags on lone notes and beam nibs at the ends of beamed figures @@ -189,4 +91,3 @@ carry both a left- and right-pointing flat flag. Do this with paired } >> } - diff --git a/Documentation/snippets/flute-slap-notation.ly b/Documentation/snippets/flute-slap-notation.ly index 2e0a858e4f..b239a2036d 100644 --- a/Documentation/snippets/flute-slap-notation.ly +++ b/Documentation/snippets/flute-slap-notation.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "winds" + lsrtags = "contemporary-notation, winds" texidoc = " It is possible to indicate special articulation techniques such as a @@ -18,6 +18,7 @@ glyph. doctitle = "Flute slap notation" } % begin verbatim + slap = #(define-music-function (parser location music) (ly:music?) #{ @@ -43,4 +44,3 @@ slap = c4 \slap c d r \slap { g4 a } b r } - diff --git a/Documentation/snippets/forcing-a-clef-symbol-to-be-displayed.ly b/Documentation/snippets/forcing-a-clef-symbol-to-be-displayed.ly index 8952a2fc53..2d02d9aa93 100644 --- a/Documentation/snippets/forcing-a-clef-symbol-to-be-displayed.ly +++ b/Documentation/snippets/forcing-a-clef-symbol-to-be-displayed.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches" @@ -20,6 +20,7 @@ Staff.forceClef = ##t}. doctitle = "Forcing a clef symbol to be displayed" } % begin verbatim + \relative c' { \clef treble c1 diff --git a/Documentation/snippets/forcing-horizontal-shift-of-notes.ly b/Documentation/snippets/forcing-horizontal-shift-of-notes.ly index 51dc9f03d2..ce8072932c 100644 --- a/Documentation/snippets/forcing-horizontal-shift-of-notes.ly +++ b/Documentation/snippets/forcing-horizontal-shift-of-notes.ly @@ -4,43 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "simultaneous-notes, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - doctitlees = "Forzar el desplazamiento horizontal de las notas" - -texidoces = " - Cuando el motor de tipografiado no es capaz de todo, se puede usar la - sintaxis siguiente para sobreescribir las decisiones de tipografía. - Las unidades de medida que se usan aquí son espacios de pentagrama. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wenn es zu Zusammenstößen kommt, kann mit folgender Lösung eine andere -Position manuell eingestellt werden. Die Einheiten hier sind -Notenlinienzwischenräume. - -" - doctitlede = "Horizontale Verschiebung von Noten erzwingen" - -%% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c - texidocfr = " -Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet -@code{NoteColumn}, et des silences à hauteur déterminée, peuvent -s'avérer utiles pour dicter au programme les choix de placement. On -travaille ici en espace de portée. - -" - doctitlefr = "Décalage horizontal forcé" - - texidoc = " When the typesetting engine cannot cope, the following syntax can be used to override typesetting decisions. The units of measure used here @@ -50,6 +18,7 @@ are staff spaces. doctitle = "Forcing horizontal shift of notes" } % begin verbatim + \relative c' << { 2 @@ -61,4 +30,3 @@ are staff spaces. 2 } >> - diff --git a/Documentation/snippets/forcing-hyphens-to-be-shown.ly b/Documentation/snippets/forcing-hyphens-to-be-shown.ly index a4ce186cd9..33545ccb6e 100644 --- a/Documentation/snippets/forcing-hyphens-to-be-shown.ly +++ b/Documentation/snippets/forcing-hyphens-to-be-shown.ly @@ -4,23 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "vocal-music" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Si LilyPond no cree que haya sitio suficiente para un guión separador -de sílabas, lo omitirá. Se puede sobreescribir este comportamiento -con la propiedad @code{minimum-distance} de @code{LyricHyphen}. - -" - doctitlees = "Forzar la visibilidad de los guiones separadores de sílabas" - - - texidoc = " If LilyPond does not think there is space for a hyphen, it will be omitted. The behaviour can be overridden with the @@ -30,6 +18,7 @@ omitted. The behaviour can be overridden with the doctitle = "Forcing hyphens to be shown" } % begin verbatim + \relative c'' { c32 c c c c32 c c c diff --git a/Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly b/Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly index 8489671c05..217c235be4 100644 --- a/Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly +++ b/Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation" + lsrtags = "staff-notation, workaround" texidoc = " By default, metronome marks do not influence horizontal spacing. This @@ -20,6 +20,7 @@ through a simple override, as shown in the second half of the example. doctitle = "Forcing measure width to adapt to MetronomeMark's width" } % begin verbatim + example = { \tempo "Allegro" R1*6 @@ -40,4 +41,3 @@ example = { \override Score.MetronomeMark #'extra-spacing-width = #'(0 . 0) \example } - diff --git a/Documentation/snippets/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly b/Documentation/snippets/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly index 8f4f7e2a87..7304d1a9b3 100644 --- a/Documentation/snippets/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly +++ b/Documentation/snippets/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" + lsrtags = "automatic-notation, preparing-parts, really-simple, rhythms" texidoc = " This snippet demonstrates how to obtain automatic ordered rehearsal @@ -17,6 +17,7 @@ marks, but from the letter or number desired. doctitle = "Forcing rehearsal marks to start from a given letter or number" } % begin verbatim + \relative c'' { c1 \mark \default c1 \mark \default @@ -38,4 +39,3 @@ marks, but from the letter or number desired. c1 \mark \default c1 \mark \default } - diff --git a/Documentation/snippets/formatting-lyrics-syllables.ly b/Documentation/snippets/formatting-lyrics-syllables.ly index 22ab511f31..aa5df6fa83 100644 --- a/Documentation/snippets/formatting-lyrics-syllables.ly +++ b/Documentation/snippets/formatting-lyrics-syllables.ly @@ -4,17 +4,9 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { -%%% Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 - texidocde = " -Textbeschriftungsmodus kann eingesetzt werden, um individuelle Silben im Gesangstext -zu formatieren. - -" - doctitlede = "Silben im Gesangstext formatieren" - lsrtags = "text, vocal-music" texidoc = " diff --git a/Documentation/snippets/fret-diagrams-explained-and-developed.ly b/Documentation/snippets/fret-diagrams-explained-and-developed.ly index 029aa35e68..0371ee1172 100644 --- a/Documentation/snippets/fret-diagrams-explained-and-developed.ly +++ b/Documentation/snippets/fret-diagrams-explained-and-developed.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings, tweaks-and-overrides" @@ -17,6 +17,7 @@ diagrams. doctitle = "Fret diagrams explained and developed" } % begin verbatim + << \chords { a2 a diff --git a/Documentation/snippets/fretboards-alternate-tables.ly b/Documentation/snippets/fretboards-alternate-tables.ly index f2ab3d2dac..68965a6ee5 100644 --- a/Documentation/snippets/fretboards-alternate-tables.ly +++ b/Documentation/snippets/fretboards-alternate-tables.ly @@ -1,72 +1,31 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Se pueden crear tablas alternativas de diagramas de posiciones. Se -utilizarían para tener diagramas altenativos para un acorde dado. - -Para usar una tabla alternativa de diagramas de posiciones, se debe -crear la tabla primero. Después se añaden los diagramas a la tabla. - -La tabla de diagramas de posiciones que se crea puede estar vacía o se -puede copiar a partir de una tabla existente. - -La tabla a usar en la impresión de de los diagramas predefinidos se -selecciona por medio de la propiedad @code{\\predefinedDiagramTable}. - -" - - doctitlees = "Tablas alternativas de diagramas de posiciones" - -%% Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f - - texidocde = " -Alternative Bunddiagrammtabellen können erstellt werden. Sie können benutzt -werden, um alternative Bunddiagramme für einen bestimmten Akkord zu haben. - -Damit eine alternative Bunddiagrammentabelle benutzt werden kann, muss die -Tabelle zuerst erstellt werden. Dann werden die Bunddiagramme zur Tabelle -hinzugefügt. - -Die erstellte Bunddiagrammtabelle kann auch leer sein, oder sie kann aus -einer existierenden Tabelle kopiert werden. - -Die Tabelle, die eingesetzt wird, um vordefinierte Bunddiagramme anzuzeigen, -wird mit der Eigenschaft @code{\\predefinedDiagramTable} ausgewählt. -" - - doctitlede = "Alternative Bunddiagrammtabellen" - - lsrtags = "fretted-strings" texidoc = " Alternate fretboard tables can be created. These would be used in order to have alternate fretboards for a given chord. -In order to use an alternate fretboard table, the table must first -be created. Fretboards are then added to the table. +In order to use an alternate fretboard table, the table must first be +created. Fretboards are then added to the table. -The created fretboard table can be blank, or it can be copied -from an existing table. +The created fretboard table can be blank, or it can be copied from an +existing table. -The table to be used in displaying predefined fretboards is selected -by the property @code{\\predefinedDiagramTable}. -" +The table to be used in displaying predefined fretboards is selected by +the property @code{\\predefinedDiagramTable}. - doctitle = "Alternate fretboard tables" +" + doctitle = "Fretboards alternate tables" } % begin verbatim - \include "predefined-guitar-fretboards.ly" % Make a blank new fretboard table @@ -119,4 +78,3 @@ by the property @code{\\predefinedDiagramTable}. >> } >> - diff --git a/Documentation/snippets/fretted-headword.ly b/Documentation/snippets/fretted-headword.ly index 186483797e..0975f55757 100644 --- a/Documentation/snippets/fretted-headword.ly +++ b/Documentation/snippets/fretted-headword.ly @@ -4,22 +4,16 @@ % and then run scripts/auxiliar/makelsr.py % % This file is in the public domain. -%% Note: this file works from version 2.14.0 +%% Note: this file works from version 2.15.18 % INSPIRATIONAL HEADER FOR LILYPOND DOCUMENTATION fretted-strings % % Passage from Johann Kaspar Mertz "Opern Revue, Op. 8, no. 17" % % on melodies from Bellini's "Norma" % %*****************************************************************% -\version "2.14.0" - -#(set-global-staff-size 15) -\paper { - line-width = 17\cm - indent = 0\cm -} +\version "2.16.0" \header { - lsrtags = "headwords" + lsrtags = "headword" texidoc = "" doctitle = "headword" } % begin verbatim @@ -49,7 +43,7 @@ ssnor = \set stringNumberOrientations = #'(right) % define fingering offset FO = #(define-music-function (parser location offsetX offsetY) (number? number?) #{ - \once \override Voice.Fingering #'extra-offset = #(cons $offsetX $offsetY) + \once \override Voice.Fingering #'extra-offset = #(cons offsetX offsetY) #}) % markups diff --git a/Documentation/snippets/fretted-string-harmonics-in-tablature.ly b/Documentation/snippets/fretted-string-harmonics-in-tablature.ly index 32cf25a6d1..8cb311a1a0 100644 --- a/Documentation/snippets/fretted-string-harmonics-in-tablature.ly +++ b/Documentation/snippets/fretted-string-harmonics-in-tablature.ly @@ -1,35 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Armónicos sobre cuerdas pisadas (armónicos artificiales): -" - doctitlees = "Armónicos sobre cuerdas pisadas en tablatura" - - - -%% Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 - texidocde = " -Flageolett für Bundinstrumente: -" - doctitlede = "Flageolett von Bundinstrumenten in einer Tabulatur" - lsrtags = "fretted-strings" + texidoc = " -Fretted-string harmonics: +Demonstrates fretted-string harmonics in tablature + " doctitle = "Fretted-string harmonics in tablature" } % begin verbatim - pinchedHarmonics = { \textSpannerDown \override TextSpanner #'bound-details #'left #'text = diff --git a/Documentation/snippets/fretted-strings-intro.itely b/Documentation/snippets/fretted-strings-intro.itely index 48a1fea65c..308e4694bd 100644 --- a/Documentation/snippets/fretted-strings-intro.itely +++ b/Documentation/snippets/fretted-strings-intro.itely @@ -1,5 +1,6 @@ @node Fretted strings @unnumbered Fretted strings +@nodeprefix Fretted strings @ruser{Fretted string instruments} diff --git a/Documentation/snippets/fretted-strings.snippet-list b/Documentation/snippets/fretted-strings.snippet-list index c10384bba3..9854081839 100644 --- a/Documentation/snippets/fretted-strings.snippet-list +++ b/Documentation/snippets/fretted-strings.snippet-list @@ -21,7 +21,6 @@ how-to-change-fret-diagram-position.ly jazz-combo-template.ly laissez-vibrer-ties.ly letter-tablature-formatting.ly -modern-tab-text-clef.ly open-string-harmonics-in-tablature.ly placement-of-right-hand-fingerings.ly polyphony-in-tablature.ly diff --git a/Documentation/snippets/generating-custom-flags.ly b/Documentation/snippets/generating-custom-flags.ly index 3668e9d48c..1bf3b22979 100644 --- a/Documentation/snippets/generating-custom-flags.ly +++ b/Documentation/snippets/generating-custom-flags.ly @@ -1,28 +1,31 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" texidoc = " -The @code{flag} property of the Stem grob can be set to a custom scheme +The @code{stencil} property of the Flag grob can be set to a custom scheme function to generate the glyph for the flag. " doctitle = "Generating custom flags" } % begin verbatim -#(define-public (weight-flag stem-grob) - (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2)) + +#(define-public (weight-flag grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (log (- (ly:grob-property stem-grob 'duration-log) 2)) (is-up? (eqv? (ly:grob-property stem-grob 'direction) UP)) (yext (if is-up? (cons (* log -0.8) 0) (cons 0 (* log 0.8)))) (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext)) - (stroke-style (ly:grob-property stem-grob 'stroke-style)) + (stroke-style (ly:grob-property grob 'stroke-style)) (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil))) @@ -30,13 +33,14 @@ function to generate the glyph for the flag. % Create a flag stencil by looking up the glyph from the font -#(define (inverted-flag stem-grob) - (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) - (flag (retrieve-glyph-flag "" dir "" stem-grob)) - (line-thickness (ly:staff-symbol-line-thickness stem-grob)) +#(define (inverted-flag grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) + (flag (retrieve-glyph-flag "" dir "" grob)) + (line-thickness (ly:staff-symbol-line-thickness grob)) (stem-thickness (ly:grob-property stem-grob 'thickness)) (stem-width (* line-thickness stem-thickness)) - (stroke-style (ly:grob-property stem-grob 'stroke-style)) + (stroke-style (ly:grob-property grob 'stroke-style)) (stencil (if (null? stroke-style) flag (add-stroke-glyph flag stem-grob dir stroke-style ""))) @@ -52,15 +56,14 @@ snippetexamplenotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 \snippetexamplenotes \mark "Custom flag: inverted" - \override Stem #'flag = #inverted-flag + \override Flag #'stencil = #inverted-flag \snippetexamplenotes \mark "Custom flag: weight" - \override Stem #'flag = #weight-flag + \override Flag #'stencil = #weight-flag \snippetexamplenotes \mark "Revert to normal" - \revert Stem #'flag + \revert Flag #'stencil \snippetexamplenotes } - diff --git a/Documentation/snippets/generating-random-notes.ly b/Documentation/snippets/generating-random-notes.ly index fd2f070adf..2093009521 100644 --- a/Documentation/snippets/generating-random-notes.ly +++ b/Documentation/snippets/generating-random-notes.ly @@ -4,22 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "pitches" - -%% 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 -hora actual (o en cualquier número pseudo-aleatorio que se -especifique en su lugar, para obtener las mismas notas aleatorias -cada vez): es decir, para obtener distintos patrones de notas, -sólo tiene que modificar este número. - -" - doctitlees = "Generación de notas aleatorias" + lsrtags = "pitches, really-cool, scheme-language" texidoc = " This Scheme-based snippet generates 24 random notes (or as many as @@ -31,11 +19,11 @@ get different random note patterns, just change this number. doctitle = "Generating random notes" } % begin verbatim + \score { { - #(let ((random-state (seed->random-state (current-time)))) - (ly:export - (make-sequential-music + $(let ((random-state (seed->random-state (current-time)))) + (make-sequential-music (map (lambda (x) (let ((idx (random 12 random-state))) (make-event-chord @@ -46,6 +34,6 @@ get different random note patterns, just change this number. (quotient idx 7) (remainder idx 7) 0)))))) - (make-list 24))))) + (make-list 24)))) } } diff --git a/Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly b/Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly new file mode 100644 index 0000000000..c2182e123a --- /dev/null +++ b/Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly @@ -0,0 +1,119 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "automatic-notation, really-cool, scheme-language" + + texidoc = " +A lilypond score internally is just a Scheme expression, generated by +the lilypond parser. Using scheme, one can also automatically generate +a score without an input file. If you have the music expression in +scheme, a score can be generated by simply calling (scorify-music music +parser) on your music. This will generate a score object, for which you +can then set a custom layout block with (let* ((layout +(ly:output-def-clone $defaultlayout))) + ; modify the layout here, then assign it: + (ly:score-add-output-def! score layout) + ) + + +Finally, all you have to do it to pass this score to lilypond for +typesetting. This snippet defines functions @code{(add-score parser +score)}, @code{(add-text parser text)} and @code{(add-music parser +music)} to pass a complete score, some markup or some music to lilypond +for typesetting. + +This snippet also works for typesetting scores inside a @code{\\book +@{...@}} block, as well as top-level scores. To achieve this, each +score schedulled for typesetting is appended to the list of toplevel +scores and the toplevel-book-handler (which is a scheme function called +to process a book once a @code{\\book@{..@}} block is closed) is +modified to inser all collected scores so far to the book. + +" + doctitle = "Generating whole scores (also book parts) in scheme without using the parser" +} % begin verbatim + +#(define-public (add-score parser score) + (ly:parser-define! parser 'toplevel-scores + (cons score (ly:parser-lookup parser 'toplevel-scores)))) + +#(define-public (add-text parser text) + (add-score parser (list text))) + +#(define-public (add-music parser music) + (collect-music-aux (lambda (score) + (add-score parser score)) + parser + music)) + +#(define-public (toplevel-book-handler parser book) + (map (lambda (score) + (ly:book-add-score! book score)) + (reverse! (ly:parser-lookup parser 'toplevel-scores))) + (ly:parser-define! parser 'toplevel-scores (list)) + (print-book-with-defaults parser book)) + +#(define-public (book-score-handler book score) + (add-score parser score)) + +#(define-public (book-text-handler book text) + (add-text parser text)) + +#(define-public (book-music-handler parser book music) + (add-music parser music)) + +%%% + + +%% Just some example score to show how to use these functions: +#(define add-one-note-score #f) +#(let ((pitch 0)) + (set! add-one-note-score + (lambda (parser) + (let* ((music (make-music 'EventChord + 'elements (list (make-music 'NoteEvent + 'duration (ly:make-duration 2 0 1 1) + 'pitch (ly:make-pitch 0 pitch 0))))) + (score (scorify-music music parser)) + (layout (ly:output-def-clone $defaultlayout)) + (note-name (case pitch + ((0) "do") + ((1) "ré") + ((2) "mi") + ((3) "fa") + ((4) "sol") + ((5) "la") + ((6) "si") + (else "huh"))) + (title (markup #:large #:line ("Score with a" note-name)))) + (ly:score-add-output-def! score layout) + (add-text parser title) + (add-score parser score)) + (set! pitch (modulo (1+ pitch) 7))))) + +oneNoteScore = +#(define-music-function (parser location) () + (add-one-note-score parser) + (make-music 'Music 'void #t)) + +%%% + +\book { + \oneNoteScore +} + + +\book { + \oneNoteScore + \oneNoteScore +} + +% Top-level scores are also handled correctly +\oneNoteScore +\oneNoteScore diff --git a/Documentation/snippets/glissandi-can-skip-grobs.ly b/Documentation/snippets/glissandi-can-skip-grobs.ly new file mode 100644 index 0000000000..f58120b2d5 --- /dev/null +++ b/Documentation/snippets/glissandi-can-skip-grobs.ly @@ -0,0 +1,21 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.12 +\version "2.16.0" + +\header { + lsrtags = "expressive-marks, staff-notation, tweaks-and-overrides" + doctitle = "Glissandi can skip grobs" + texidoc = "@code{NoteColumn} grobs can be skipped over by glissandi." +} % begin verbatim + + +\relative c' { + a2 \glissando + \once \override NoteColumn #'glissando-skip = ##t + f''4 d, +} diff --git a/Documentation/snippets/graphical-and-text-woodwind-diagrams.ly b/Documentation/snippets/graphical-and-text-woodwind-diagrams.ly index 55cb6d54a7..5233a96703 100644 --- a/Documentation/snippets/graphical-and-text-woodwind-diagrams.ly +++ b/Documentation/snippets/graphical-and-text-woodwind-diagrams.ly @@ -1,55 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "winds" - texidoces = " -En muchos casos, las llaves que no están en la columna central se -pueden presentar por el nombre de la llave así como de forma gráfica. + texidoc = " +In many cases, the keys other than the central column can be displayed +by key name as well as by graphical means. " - - doctitlees = "Diagramas para viento madera gráficos y textuales" - -%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - - texidocde=" -In vielen Fällen können die nicht in der mittleren Reihe befindlichen -Löcher dargestellt werden, indem man die Lochbezeichnung oder -graphische Zeichen benutzt. - -" - - doctitlede = "Graphische und Text-Holzbläserdiagramme" - - -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d - texidocfr = " -Dans certains cas, vous pouvez opter pour l'affichage textuel d'une clé -située à côté d'un trou plutôt que sa représentation graphique. -" - - doctitlefr = "Ajout de texte à un diagramme de doigté" - - - lsrtags="winds" - texidoc=" -In may cases, the keys other than the central column can be -displayed by key name as well as by graphical means. -" - doctitle = "Graphical and text woodwind diagrams" } % begin verbatim - \relative c'' { \textLengthOn c1^\markup diff --git a/Documentation/snippets/grid-lines--changing-their-appearance.ly b/Documentation/snippets/grid-lines--changing-their-appearance.ly index af86ed4f5f..2b69748857 100644 --- a/Documentation/snippets/grid-lines--changing-their-appearance.ly +++ b/Documentation/snippets/grid-lines--changing-their-appearance.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "editorial-annotations" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede cambiar el aspecto de las líneas de rejilla -sobreescribiendo algunas de sus propiedades. - -" - doctitlees = "Líneas de rejilla: modificar su aspecto" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Erscheinung der Gitternetzlinien kann durch einige Eigenschaften -geändert werden. - -" - doctitlede = "Gitternetzlinien: Aussehen verändern" - -%% Translation of GIT committish: 9ccf7f0f5e52e074f3b7852416ad5b78718395c8 - texidocfr = " -Modifier certaines des propriétés du quadrillage temporel aura pour effet -d'en changer l'apparence. - -" - doctitlefr = "Apparence du quadrillage temporel" - - texidoc = " The appearance of grid lines can be changed by overriding some of their properties. @@ -43,6 +17,7 @@ properties. doctitle = "Grid lines: changing their appearance" } % begin verbatim + \score { \new ChoirStaff << \new Staff { @@ -84,4 +59,3 @@ properties. } } } - diff --git a/Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly b/Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly index 5448248f14..52e4c45d94 100644 --- a/Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly +++ b/Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly @@ -4,21 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "editorial-annotations" -%% 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 -monofónica, podemos hacer invisible el segundo pentagrama, y que -las líneas sean más cortas, como en este fragmento de código. - -" - doctitlees = "Líneas de rejilla: destacar ritmos y la relación temporal entre notas" - texidoc = " Regular vertical lines can be drawn between staves to show note synchronization; however, in case of monophonic music, you may want to @@ -29,6 +19,7 @@ this snippet. doctitle = "Grid lines: emphasizing rhythms and notes synchronization" } % begin verbatim + \score { \new ChoirStaff { \relative c'' << @@ -76,4 +67,3 @@ this snippet. ragged-right = ##t } } - diff --git a/Documentation/snippets/grouping-beats.ly b/Documentation/snippets/grouping-beats.ly deleted file mode 100644 index 8dc0ca9a36..0000000000 --- a/Documentation/snippets/grouping-beats.ly +++ /dev/null @@ -1,50 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Los patrones de barrado se pueden alterar con la propiedad -@code{beatGrouping}: - -" - doctitlees = "Agrupar los pulsos" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Balkengruppen können mit der @code{beatGrouping}-Eigenschaft geändert -werden: - -" - doctitlede = "Notengruppen" - - - -%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60 - texidocfr = " -La manière de gérer les ligatures est influencée par la propriété -@code{beatGrouping} : - -" - doctitlefr = "Regroupement selon la pulsation" - - lsrtags = "rhythms" - texidoc = " -Beaming patterns may be altered with the @code{beatGrouping} property: - -" - doctitle = "Grouping beats" -} % begin verbatim - - -\markup { - This snippet is deprecated as of version 2.13.5 and will be removed - in version 2.14. -} diff --git a/Documentation/snippets/guitar-slides.ly b/Documentation/snippets/guitar-slides.ly index a8946c2375..dd1cbd8d03 100644 --- a/Documentation/snippets/guitar-slides.ly +++ b/Documentation/snippets/guitar-slides.ly @@ -4,23 +4,10 @@ % 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" +%% Note: this file works from version 2.15.10 +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - - texidoces = " -A diferencia de los glissandos, los @q{slides} o ligaduras pueden -partir de un punto impreciso del mástil hasta un traste específico. -Una buena forma de hacerlo es añadir una nota de mordente antes de la -nota real, como se muestra en el ejemplo siguiente. - -" - - doctitlees = "Ligaduras de guitarra" - lsrtags = "fretted-strings" texidoc = " @@ -39,6 +26,7 @@ hideFretNumber = { \once \override TabNoteHead #'transparent = ##t \once \override NoteHead #'transparent = ##t \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t \once \override NoteHead #'no-ledgers = ##t \once \override Glissando #'(bound-details left padding) = #0.3 } diff --git a/Documentation/snippets/guitar-strum-rhythms.ly b/Documentation/snippets/guitar-strum-rhythms.ly index e2a6ce9352..7de010c2b6 100644 --- a/Documentation/snippets/guitar-strum-rhythms.ly +++ b/Documentation/snippets/guitar-strum-rhythms.ly @@ -4,38 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, fretted-strings" - -%% 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. - -" - doctitlees = "Ritmos rasgueados de guitarra" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -In Gitarrennotation kann neben Melodie, Akkordbezeichnungen und -Bunddiagrammen auch der Schlagrhythmus angegeben werden. - -" - doctitlede = "Schlagrhythmus für Gitarren" - - - -%% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89 - texidocfr = " -En matière de notation pour guitare, il arrive que soient indiqués les -@qq{coups de gratte} en plus de la mélodie, grilles d'accords et -diagrammes de tablature. - -" - doctitlefr = "Rythmique et guitare" + lsrtags = "fretted-strings, rhythms" texidoc = " For guitar music, it is possible to show strum rhythms, along with @@ -45,6 +17,7 @@ melody notes, chord names and fret diagrams. doctitle = "Guitar strum rhythms" } % begin verbatim + \include "predefined-guitar-fretboards.ly" << \new ChordNames { @@ -83,4 +56,3 @@ melody notes, chord names and fret diagrams. } } >> - diff --git a/Documentation/snippets/hairpins-with-different-line-styles.ly b/Documentation/snippets/hairpins-with-different-line-styles.ly index bd8fb5d90e..e77b94296c 100644 --- a/Documentation/snippets/hairpins-with-different-line-styles.ly +++ b/Documentation/snippets/hairpins-with-different-line-styles.ly @@ -4,21 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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. - -" - doctitlees = "Reguladores con distintos estilos de línea" - - - texidoc = " Hairpins can take any style from @code{line-interface} - dashed-line, dotted-line, line, trill or zigzag. @@ -27,6 +17,7 @@ dotted-line, line, trill or zigzag. doctitle = "Hairpins with different line styles" } % begin verbatim + \relative c' { c2\< c\! \override Hairpin #'style = #'dashed-line @@ -42,4 +33,3 @@ dotted-line, line, trill or zigzag. \revert Hairpin #'style c2\< c\! } - diff --git a/Documentation/snippets/headword.snippet-list b/Documentation/snippets/headword.snippet-list new file mode 100644 index 0000000000..0275e9c0f1 --- /dev/null +++ b/Documentation/snippets/headword.snippet-list @@ -0,0 +1,17 @@ +ancient-headword.ly +chords-headword.ly +editorial-headword.ly +expressive-headword.ly +figured-bass-headword.ly +fretted-headword.ly +keyboard-headword.ly +pitches-headword.ly +repeats-headword.ly +rhythms-headword.ly +screech-and-boink.ly +simultaneous-headword.ly +staff-headword.ly +text-headword.ly +unfretted-headword.ly +vocal-headword.ly +wind-headword.ly diff --git a/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly b/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly index 2e19d84b67..e85878da1e 100644 --- a/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly +++ b/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, percussion" + lsrtags = "contemporary-notation, percussion, real-music, rhythms" texidoc = " Though the polymetric time signature shown was not the most essential @@ -18,6 +18,7 @@ is the template of a real Balkan song!). doctitle = "Heavily customized polymetric time signatures" } % begin verbatim + #(define plus (markup #:vcenter "+")) #(define ((custom-time-signature one two three four five six seven eight nine ten eleven num) grob) @@ -37,7 +38,7 @@ is the template of a real Balkan song!). melody = \relative c'' { \set Staff.instrumentName = #"Bb Sop." \key g \major - #(set-time-signature 25 8 '(3 2 2 3 2 2 2 2 3 2 2)) + \time #'(3 2 2 3 2 2 2 2 3 2 2) 25/8 \override Staff.TimeSignature #'stencil = #(custom-time-signature "3" "2" "2" "3" "2" "2" "2" "2" "3" "2" "2" "8") @@ -57,4 +58,3 @@ drum = \new DrumStaff \drummode { \melody \drum } - diff --git a/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly b/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly index 782a5210b0..c4e1959195 100644 --- a/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly +++ b/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly @@ -1,43 +1,25 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -Aquí se muestra la manera de ocultar las alteraciones de las notas -ligadas al comienzo de un sistema nuevo. - -" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" - doctitlees = "Ocultar las alteraciones sobre notas ligadas al principio de un sistema nuevo" +\header { + lsrtags = "pitches" + texidoc = " +This shows how to hide accidentals on tied notes at the start of a new +system. -%% Translation of GIT committish: 31097723b2b816696ad61696630a80ff17a39557 - texidocfr = "Cet exemple illustre comment, lorsqu'une note affublée - d'une altération accidentelle est prolongée, ne pas répéter cette - altération après un saut de ligne. " - doctitlefr = "Non répétition de l'altération après saut de ligne - sur liaison de prolongation" - - - lsrtags = "pitches" - texidoc = "This shows how to hide accidentals on tied notes at the beginning of a -new system." - doctitle = "Hiding accidentals on tied notes at the beginning of a new system" + doctitle = "Hiding accidentals on tied notes at the start of a new system" } % begin verbatim - \relative c'' { \override Accidental #'hide-tied-accidental-after-break = ##t cis1~ cis~ \break cis } - diff --git a/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly b/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly index e9c9e9cc31..1df5ec0bf4 100644 --- a/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly +++ b/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly @@ -4,40 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% 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. -Esta línea se puede suprimir de la siguiente manera: - -" - doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Dynamik-Texte (wie cresc. und dim.) werden mit einer gestrichelten Linie -gesetzt, die ihre Dauer anzeigt. Diese Linie kann auf folgende Weise -unterdrückt werden: - -" - doctitlede = "Crescendo-Linien von Dynamik-Texten unterdrücken" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Les crescendos et decrescendos indiqués textuellement -- tels que -@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent -leur étendue. On peut empêcher l'impression de ces pointillés avec : - -" - doctitlefr = "Masquage de l'extension des nuances textuelles" - - texidoc = " Text style dynamic changes (such as cresc. and dim.) are printed with a dashed line showing their extent. This line can be suppressed in the @@ -47,9 +18,9 @@ following way: doctitle = "Hiding the extender line for text dynamics" } % begin verbatim + \relative c'' { \override DynamicTextSpanner #'style = #'none \crescTextCresc c1\< | d | b | c\! } - diff --git a/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly b/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly index 621c19de00..79423f1658 100644 --- a/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly +++ b/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, tweaks-and-overrides" + lsrtags = "correction-wanted, expressive-marks, tweaks-and-overrides, version-specific" texidoc = " Some dynamic expressions involve additional text, like @qq{sempre pp}. @@ -52,6 +52,7 @@ not at the center of pp. doctitle = "Horizontally aligning custom dynamics (e.g. \"sempre pp\" \"piu f\" \"subito p\")" } % begin verbatim + \header { title = "Horizontally aligning custom dynamics" } \paper { ragged-right = ##f } @@ -174,4 +175,3 @@ semppMII = } >> >> - diff --git a/Documentation/snippets/how-to-change-fret-diagram-position.ly b/Documentation/snippets/how-to-change-fret-diagram-position.ly index b9d079b0a9..c241b7f6af 100644 --- a/Documentation/snippets/how-to-change-fret-diagram-position.ly +++ b/Documentation/snippets/how-to-change-fret-diagram-position.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "fretted-strings, tweaks-and-overrides" + lsrtags = "fretted-strings, specific-notation, tweaks-and-overrides" texidoc = " If you want to move the position of a fret diagram, for example, to @@ -29,6 +29,7 @@ itself. doctitle = "How to change fret diagram position" } % begin verbatim + harmonies = \chordmode { a8:13 @@ -57,6 +58,3 @@ harmonies = \chordmode } >> } - - - diff --git a/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.ly b/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.ly index 2bf2b2a013..72d4a9b101 100644 --- a/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.ly +++ b/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, staff-notation, editorial-annotations, tweaks-and-overrides" + lsrtags = "editorial-annotations, expressive-marks, staff-notation, tweaks-and-overrides" texidoc = " This method prints two 'rehearsal marks', one on top of the other. It @@ -36,6 +36,7 @@ box of the mark from its original value. doctitle = "How to print two rehearsal marks above and below the same barline (method 1)" } % begin verbatim + \relative c'{ c d e f | \once \override Score.RehearsalMark #'extra-offset = #'(0 . -8.5) diff --git a/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.ly b/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.ly index cfd14e83b8..8abdbaa318 100644 --- a/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.ly +++ b/Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, staff-notation, editorial-annotations, tweaks-and-overrides" + lsrtags = "editorial-annotations, expressive-marks, staff-notation, tweaks-and-overrides" texidoc = " This method prints two 'rehearsal marks' - one above the stave and one @@ -23,6 +23,7 @@ independently of the other. doctitle = "How to print two rehearsal marks above and below the same barline (method 2)" } % begin verbatim + \score { \relative c' << diff --git a/Documentation/snippets/how-to-put-ties-between-syllables-in-lyrics.ly b/Documentation/snippets/how-to-put-ties-between-syllables-in-lyrics.ly index c7bedbf4e2..c43b550c9d 100644 --- a/Documentation/snippets/how-to-put-ties-between-syllables-in-lyrics.ly +++ b/Documentation/snippets/how-to-put-ties-between-syllables-in-lyrics.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "text, vocal-music" + lsrtags = "specific-notation, symbols-and-glyphs, text, vocal-music" texidoc = " This can be achieved by separating those syllables by tildes. @@ -16,7 +16,7 @@ This can be achieved by separating those syllables by tildes. doctitle = "How to put ties between syllables in lyrics" } % begin verbatim + \lyrics { wa~o~a } - diff --git a/Documentation/snippets/hymn-template.ly b/Documentation/snippets/hymn-template.ly index 378295056f..a6b6004a43 100644 --- a/Documentation/snippets/hymn-template.ly +++ b/Documentation/snippets/hymn-template.ly @@ -4,54 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 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 -añadir los versos como texto independiente debajo de la música. - -" - - doctitlees = "Plantilla para himnos" -%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - texidocde = " -Dieses Beispiel zeigt eine Möglichkeit, eine Hymnusmelodie zu setzen, in -der jede Zeiel mit einem Auftakt beginnt und einem unvollständigen -Takt abschließt. Es zeigt auch, wie man die Strophen als allein stehenden -Text unter die Noten hinzufügt. - -" - doctitlede = "Hymnus-Vorlage" - - -%% Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37 - - texidocfr = " -Le code ci-dessous illustre la manière d'agencer un cantique liturgique -dans lequel chaque ligne débute et se termine par une mesure incomplète. -Vous noterez par ailleurs l'affichage des paroles indépendamment de la -musique. - -" - doctitlefr = "Modèle pour cantique" + lsrtags = "template, vocal-music" texidoc = " This code shows one way of setting out a hymn tune when each line @@ -62,6 +18,7 @@ verses as stand-alone text under the music. doctitle = "Hymn template" } % begin verbatim + Timeline = { \time 4/4 \tempo 4=96 @@ -150,4 +107,3 @@ global = { indent = 0 % don't indent first system line-width = 130 % shorten line length to suit music } % End paper block - diff --git a/Documentation/snippets/incipit.ly b/Documentation/snippets/incipit.ly index e78a5f3425..075cd35840 100644 --- a/Documentation/snippets/incipit.ly +++ b/Documentation/snippets/incipit.ly @@ -4,19 +4,11 @@ % 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" +%% Note: this file works from version 2.15.42 +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Los «incipit» se pueden escribir utilizando el grob del nombre del -instruemento, pero manteniendo independientes las definiciones del -nombre del instrumento y del incipit." - - doctitlees = "Incipit" - - lsrtags = "staff-notation, ancient-notation" + lsrtags = "staff-notation, ancient-notation, really-cool" texidoc = " Incipits can be added using the instrument name grob, but keeping separate the instrument name definition and the incipit definition. @@ -36,35 +28,31 @@ incipit = \once \override Staff.InstrumentName #'padding = #0.3 \once \override Staff.InstrumentName #'stencil = #(lambda (grob) - (let* ((instrument-name (ly:grob-property grob 'long-text)) - (layout (ly:output-def-clone (ly:grob-layout grob))) - (music (make-sequential-music - (list (context-spec-music - (make-sequential-music - (list (make-property-set - 'instrumentName instrument-name) - (make-grob-property-set - 'VerticalAxisGroup - 'Y-extent '(-4 . 4)))) - 'MensuralStaff) - $incipit-music))) - (score (ly:make-score music)) - (mm (ly:output-def-lookup layout 'mm)) - (indent (ly:output-def-lookup layout 'indent)) - (width (ly:output-def-lookup layout 'incipit-width)) - (incipit-width (if (number? width) - (* width mm) - (* indent 0.5)))) - - (ly:output-def-set-variable! layout 'indent (- indent - incipit-width)) - (ly:output-def-set-variable! layout 'line-width indent) - (ly:output-def-set-variable! layout 'ragged-right #f) - (ly:output-def-set-variable! layout 'ragged-last #f) - (ly:output-def-set-variable! layout 'system-count 1) - (ly:score-add-output-def! score layout) - (ly:grob-set-property! grob 'long-text - (markup #:score score)) + (let* ((instrument-name (ly:grob-property grob 'long-text))) + (set! (ly:grob-property grob 'long-text) + #{ \markup + \score + { + { \context MensuralStaff \with { + instrumentName = #instrument-name + \override VerticalAxisGroup + #'Y-extent = #'(-4 . 4) + } $incipit-music + } + \layout { $(ly:grob-layout grob) + line-width = \indent + indent = + % primitive-eval is probably easiest for + % escaping lexical closure and evaluating + % everything respective to (current-module). + #(primitive-eval + '(or (false-if-exception (- indent (* mm incipit-width))) + (* 0.5 indent))) + ragged-right = ##f + ragged-last = ##f + system-count = #1 } + } + #}) (system-start-text::print grob))) #}) diff --git a/Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly b/Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly index 5f0eee4487..0452647221 100644 --- a/Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly +++ b/Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly @@ -4,37 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "keyboards" - -%% 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, -el @code{PianoStaff} se debe configurar para que acepte símbolos de -arpegio de pentagrama cruzado y los símbolos de arpegio se deben -configurar a la forma de corchete en el contexto de @code{PianoStaff}. - -(Debussy, Les collines d’Anacapri, m. 65) - -" - doctitlees = "Indicar acordes de pentagrama cruzado con corchetes de arpegio" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Eine Arpeggioklammer kann anzeigen, dass Noten auf zwei unterschiedlichen -Systemen mit der selben Hand gespielt werden sollen. Damit das notiert -werden kann, muss der @code{PianoStaff}-Kontext so eingestellt werden, -dass er Arpeggios über Systeme hinweg akzeptiert und die Form der Arpeggios -muss auf eine Klammer eingestellt werden. - -(Debussy, Les collines d’Anacapri, T. 65) - -" - doctitlede = "Akkorde auf zwei Systemen mit Arpeggioklammern anzeigen" + lsrtags = "keyboards, real-music" texidoc = " An arpeggio bracket can indicate that notes on two different staves are @@ -50,6 +23,7 @@ context. doctitle = "Indicating cross-staff chords with arpeggio bracket" } % begin verbatim + \new PianoStaff << \set PianoStaff.connectArpeggios = ##t \override PianoStaff.Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket @@ -77,4 +51,3 @@ context. } } >> - diff --git a/Documentation/snippets/inserting-a-caesura.ly b/Documentation/snippets/inserting-a-caesura.ly index 5f458d2c63..2789bce283 100644 --- a/Documentation/snippets/inserting-a-caesura.ly +++ b/Documentation/snippets/inserting-a-caesura.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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 -una marca de cesura curva. - -" - doctitlees = "Insertar una cesura" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Zäsurzeichen können erstellt werden, indem die @code{'text}-Eigenschaft -des @code{BreathingSign}-Objektes verändert wird. Ein gekrümmtes -Zäsurzeichen ist auch möglich. -" - doctitlede = "Eine Zäsur einfügen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Une surcharge de la propriété @code{'text} de l'objet -@code{BreathingSign} permet de créer une marque de césure. LilyPond -dispose également d'une variante courbée. - -" - doctitlefr = "Insertion d'une césure" - - texidoc = " Caesura marks can be created by overriding the @code{'text} property of the @code{BreathingSign} object. A curved caesura mark is also @@ -46,6 +18,7 @@ available. doctitle = "Inserting a caesura" } % begin verbatim + \relative c'' { \override BreathingSign #'text = \markup { \musicglyph #"scripts.caesura.straight" diff --git a/Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly b/Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly index 36c4085661..d556d5b80d 100644 --- a/Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly +++ b/Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation" + lsrtags = "real-music, staff-notation" texidoc = " The @code{\\markup} command is quite versatile. In this snippet, it @@ -17,6 +17,7 @@ contains a @code{\\score} block instead of texts or marks. doctitle = "Inserting score fragments above a staff as markups" } % begin verbatim + tuning = \markup { \score { \new Staff \with { \remove "Time_signature_engraver" } @@ -43,4 +44,3 @@ tuning = \markup { g8 a g a g8 a g a } - diff --git a/Documentation/snippets/isolated-percent-repeats.ly b/Documentation/snippets/isolated-percent-repeats.ly index 187ae6a7ae..a3fc4d0bb0 100644 --- a/Documentation/snippets/isolated-percent-repeats.ly +++ b/Documentation/snippets/isolated-percent-repeats.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "repeats" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -También se pueden imprimir símbolos de porcentaje sueltos. - -" - doctitlees = "Símbolos de porcentaje sueltos" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Isolierte Prozentwiederholungen können auch ausgegeben werden. Das wird -erreicht, indem man eine Ganztaktpause notiert und ihre Ausgabeform -ändert: - -" - doctitlede = "Isolierte Prozentwiederholungen" - -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 - texidocfr = " -Des symboles de pourcentage isolés peuvent aussi être obtenus, au -moyen d'un silence multi-mesures dont on modifie l'aspect : - -" - doctitlefr = "Répétition en pourcent isolée" - - texidoc = " Isolated percents can also be printed. @@ -42,6 +16,7 @@ Isolated percents can also be printed. doctitle = "Isolated percent repeats" } % begin verbatim + makePercent = #(define-music-function (parser location note) (ly:music?) "Make a percent repeat the same length as NOTE." @@ -51,4 +26,3 @@ makePercent = \relative c'' { \makePercent s1 } - diff --git a/Documentation/snippets/jazz-combo-template.ly b/Documentation/snippets/jazz-combo-template.ly index f9f0e374ec..ff917606a4 100644 --- a/Documentation/snippets/jazz-combo-template.ly +++ b/Documentation/snippets/jazz-combo-template.ly @@ -1,60 +1,14 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \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: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Ésta es una plantilla bastante avanzada, para un conjunto de -jazz. Observe que la notación de todos los instrumentos está en -@code{\\key c \\major} (Do mayor). Esto se refiere al tono de -concierto; la armadura se transporta automáticamente si la música está -dentro de una sección @code{\\transpose}. - -" - doctitlees = "Plantilla para combo de jazz" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung: -Alle Instrumente sind in @code{\\key c \major} (C-Dur) notiert. Das bezieht sich -auf die klingende Musik: LilyPond transponiert die Tonart automatisch, wenn -sich die Noten innerhalb eines @code{\\transpose}-Abschnitts befinden. - -" - - doctitlede = "Vorlage für Jazz-Combo" - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Bien que compliqué de prime abord, voici un canevas tout à fait indiqué -pour les ensembles de jazz. Vous noterez que tous les instruments sont -notés en ut (@code{\\key c \major}), la tonalité de concert. Les notes -seront automatiquement transposée dès lors qu'elles seront inscrites -dans une section @code{\\transpose}. - -" - doctitlefr = "Symboles de jazz" + lsrtags = "keyboards, percussion, fretted-strings, template, real-music" texidoc = " This is quite an advanced template, for a jazz ensemble. Note that all @@ -66,6 +20,7 @@ music is within a @code{\\transpose} section. doctitle = "Jazz combo template" } % begin verbatim + \header { title = "Song" subtitle = "(tune)" @@ -88,10 +43,12 @@ music is within a @code{\\transpose} section. sl = { \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } nsl = { \revert NoteHead #'style \revert Stem #'transparent + \revert Flag #'transparent } crOn = \override NoteHead #'style = #'cross crOff = \revert NoteHead #'style @@ -322,4 +279,3 @@ drumContents = { } \midi { } } - diff --git a/Documentation/snippets/keep-change-clefs-full-sized.ly b/Documentation/snippets/keep-change-clefs-full-sized.ly index 513edaa8e4..04c569fd15 100644 --- a/Documentation/snippets/keep-change-clefs-full-sized.ly +++ b/Documentation/snippets/keep-change-clefs-full-sized.ly @@ -4,22 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, tweaks-and-overrides" -%% 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 -@code{full-size-change}. - -" - doctitlees = "Mantener el tamaño del símbolo en los cambios de clave" - - - texidoc = " When a clef is changed, the clef sign displayed is smaller than the initial clef. This can be overridden with @code{full-size-change}. @@ -28,6 +17,7 @@ initial clef. This can be overridden with @code{full-size-change}. doctitle = "Keep change clefs full sized" } % begin verbatim + \relative c' { \clef "treble" c1 @@ -46,4 +36,3 @@ initial clef. This can be overridden with @code{full-size-change}. \clef "treble" c1 } - diff --git a/Documentation/snippets/keyboard-headword.ly b/Documentation/snippets/keyboard-headword.ly index 2e5fde7ee3..8523dd6a8c 100644 --- a/Documentation/snippets/keyboard-headword.ly +++ b/Documentation/snippets/keyboard-headword.ly @@ -1,31 +1,24 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" - -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" -% NR 2.2 Keyboard instruments +\header { + lsrtags = "headword" + texidoc = " +Keyboard headword -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" +" + doctitle = "Keyboard headword" } % begin verbatim - % M. Ravel, Sonatine (1905) % First movement +\include "english.ly" \layout { \context { diff --git a/Documentation/snippets/keyboards-intro.itely b/Documentation/snippets/keyboards-intro.itely index 3fd9b07b27..21675bec14 100644 --- a/Documentation/snippets/keyboards-intro.itely +++ b/Documentation/snippets/keyboards-intro.itely @@ -1,5 +1,6 @@ @node Keyboards @unnumbered Keyboards +@nodeprefix Keyboards @ruser{Keyboard and other multi-staff instruments} diff --git a/Documentation/snippets/keyboards.snippet-list b/Documentation/snippets/keyboards.snippet-list index 0c440941d6..415afb73bd 100644 --- a/Documentation/snippets/keyboards.snippet-list +++ b/Documentation/snippets/keyboards.snippet-list @@ -3,13 +3,14 @@ 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 jazz-combo-template.ly laissez-vibrer-ties.ly piano-template-simple.ly -piano-template-with-centered-dynamics.ly piano-template-with-centered-lyrics.ly piano-template-with-melody-and-lyrics.ly +using-autochange-with-more-than-one-voice.ly vocal-ensemble-template-with-automatic-piano-reduction.ly diff --git a/Documentation/snippets/laissez-vibrer-ties.ly b/Documentation/snippets/laissez-vibrer-ties.ly index d2f12381ad..bfc4f1600e 100644 --- a/Documentation/snippets/laissez-vibrer-ties.ly +++ b/Documentation/snippets/laissez-vibrer-ties.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, keyboards, fretted-strings" + lsrtags = "connecting-notes, contemporary-notation, expressive-marks, fretted-strings, keyboards, specific-notation" texidoc = " Laissez vibrer ties have a fixed size. Their formatting can be tuned @@ -17,6 +17,7 @@ using @code{'tie-configuration}. doctitle = "Laissez vibrer ties" } % begin verbatim + \relative c' { 4\laissezVibrer r \laissezVibrer r 4\laissezVibrer r 4.\laissezVibrer r8 @@ -29,4 +30,3 @@ using @code{'tie-configuration}. (-1 . ,UP)) 4\laissezVibrer r } - diff --git a/Documentation/snippets/letter-tablature-formatting.ly b/Documentation/snippets/letter-tablature-formatting.ly index db67212b65..d08607014d 100644 --- a/Documentation/snippets/letter-tablature-formatting.ly +++ b/Documentation/snippets/letter-tablature-formatting.ly @@ -1,22 +1,13 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La tablatura se puede formatear utilizando letras en lugar de números. - -" - - doctitlees = "Formateado de tablaturas con letras" - - lsrtags = "staff-notation, fretted-strings" + lsrtags = "fretted-strings, staff-notation" texidoc = " Tablature can be formatted using letters instead of numbers. diff --git a/Documentation/snippets/line-arrows.ly b/Documentation/snippets/line-arrows.ly index f0b86dd6ff..3bc9a105ac 100644 --- a/Documentation/snippets/line-arrows.ly +++ b/Documentation/snippets/line-arrows.ly @@ -4,19 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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). - -" - doctitlees = "Puntas de flecha para las líneas" - texidoc = " Arrows can be applied to text-spanners and line-spanners (such as the Glissando). @@ -25,6 +17,7 @@ Glissando). doctitle = "Line arrows" } % begin verbatim + \relative c'' { \override TextSpanner #'bound-padding = #1.0 \override TextSpanner #'style = #'line diff --git a/Documentation/snippets/lyrics-alignment.ly b/Documentation/snippets/lyrics-alignment.ly index bc2e4fb3a9..fc6757dc6f 100644 --- a/Documentation/snippets/lyrics-alignment.ly +++ b/Documentation/snippets/lyrics-alignment.ly @@ -4,49 +4,13 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "text, vocal-music" - -%% 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}. -@code{#-1} es izquierda, @code{#0} es centrado y @code{#1} es derecha; -sin embargo, puede usar también @code{#LEFT}, @code{#CENTER} y -@code{#RIGHT}. - -" - doctitlees = "Alineación de la letra" - -%% Translation of GIT committish: 27b1197f3bae8512c14d946752cd3e40e7c76016 - - texidocde = " -Die horizontale Ausrichtung von Gesangstext kann eingestellt werden, indem -man die @code{self-alignment-X}-Eigenschaft des @code{LyricText}-Objekts -verändert. @code{#-1} bedeutet links, @code{#0} bedeutet mittig und @code{#1} -bedeutet rechts, man kann aber genauso gut auch @code{#LEFT}, @code{#CENTER} -und @code{#RIGHT} benutzen. - -" - doctitlede = "Ausrichtung von Gesangstext" - - -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 - texidocfr = " -L'alignement horizontal des paroles peut se gérer à l'aide de la -propriété @code{self-alignment-X} de l'objet @code{LyricText}. -Les valeurs @code{#-1} ou @code{#LEFT} produiront un alignement par la -gauche, les valeurs @code{#0} ou @code{#CENTER} un alignement centré, et -les valeurs @code{#1} ou @code{#RIGHT} un alignement par la droite. - -" - doctitlefr = "Alignement des syllabes" - + lsrtags = "really-simple, text, vocal-music" texidoc = " -Horizontal alignment for lyrics cam be set by overriding the +Horizontal alignment for lyrics can be set by overriding the @code{self-alignment-X} property of the @code{LyricText} object. @code{#-1} is left, @code{#0} is center and @code{#1} is right; however, you can use @code{#LEFT}, @code{#CENTER} and @code{#RIGHT} as @@ -70,4 +34,3 @@ well. \once \override LyricText #'self-alignment-X = #1 "This is right-aligned" } - diff --git a/Documentation/snippets/lyrics-old-spacing-settings.ly b/Documentation/snippets/lyrics-old-spacing-settings.ly deleted file mode 100644 index d27f8ee5d4..0000000000 --- a/Documentation/snippets/lyrics-old-spacing-settings.ly +++ /dev/null @@ -1,129 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% Translation of GIT committish: 27b1197f3bae8512c14d946752cd3e40e7c76016 - doctitlede = "Textverteilung wie in Version 2.12 für neuere Versionen" - - texidocde = " -Die vertikale Maschine für die Platzverteilung wurde für die Version 2.14 -verändert. Das kann dazu führen, dass Gesangstext unterschiedlich -verteilt wird. Es ist möglich, die Eigenschaften der @code{Lyric}- -und @code{Staff}-Kontexte so einzustellen, dass die Platzverteilung -wie in der Version 2.12 arbeitet. -" - - -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 - texidocfr = " -La version 2.14 a donné naissance à un nouveau moteur pour l'espacement -vertical des paroles. Celles-ci peuvent donc se retrouver positionnées -différemment. Le moteur adoptera les usages de la version 2.12 une fois -que vous aurez réglé certaines propriétés des contextes @code{Lyric} et -@code{Staff}. - -" - - doctitlefr = "Espacement des paroles selon les pratiques de la version 2.12" - - - lsrtags = "vocal-music" - - doctitle = "Obtaining 2.12 lyrics spacing in newer versions" - - texidoc = " -The vertical spacing engine changed for version 2.14. This can -cause lyrics to be spaced differently. It is possible to set -properties for @code{Lyric} and @code{Staff} contexts to get the -spacing engine to behave as it did in version 2.12. -" -} % begin verbatim - - -global = { - \key d \major - \time 3/4 -} - -sopMusic = \relative c' { - % VERSE ONE - fis4 fis fis | \break - fis4. e8 e4 -} - -altoMusic = \relative c' { - % VERSE ONE - d4 d d | - d4. b8 b4 | -} - -tenorMusic = \relative c' { - a4 a a | - b4. g8 g4 | -} - -bassMusic = \relative c { - d4 d d | - g,4. g8 g4 | -} - -words = \lyricmode { - Great is Thy faith- ful- ness, -} - -\score { - \new ChoirStaff << - \new Lyrics = sopranos - \new Staff = women << - \new Voice = "sopranos" { - \voiceOne - \global \sopMusic - } - \new Voice = "altos" { - \voiceTwo - \global \altoMusic - } - >> - \new Lyrics = "altos" - \new Lyrics = "tenors" - \new Staff = men << - \clef bass - \new Voice = "tenors" { - \voiceOne - \global \tenorMusic - } - \new Voice = "basses" { - \voiceTwo \global \bassMusic - } - >> - \new Lyrics = basses - \context Lyrics = sopranos \lyricsto sopranos \words - \context Lyrics = altos \lyricsto altos \words - \context Lyrics = tenors \lyricsto tenors \words - \context Lyrics = basses \lyricsto basses \words - >> - \layout { - \context { - \Lyrics - \override VerticalAxisGroup #'staff-affinity = ##f - \override VerticalAxisGroup #'staff-staff-spacing = - #'((basic-distance . 0) - (minimum-distance . 2) - (padding . 2)) - } - \context { - \Staff - \override VerticalAxisGroup #'staff-staff-spacing = - #'((basic-distance . 0) - (minimum-distance . 2) - (padding . 2)) - } - } -} - diff --git a/Documentation/snippets/makam-example.ly b/Documentation/snippets/makam-example.ly index 9b92424768..b170052daa 100644 --- a/Documentation/snippets/makam-example.ly +++ b/Documentation/snippets/makam-example.ly @@ -1,53 +1,17 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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 -archivo de inicio @file{makam.ly} (véase el 'Manual de -aprendizaje @version{}, 4.6.3 Otras fuentes de información' para -averiguar la situación de este archivo) para ver detalles de los -nombres de las notas y las alteraciones. + lsrtags = "pitches, version-specific, world-music" -" - doctitlees = "Ejemplo de «Makam»" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Makam ist eine türkische Melodie, in der 1/9-Tonabstände -eingesetzt werden. Sehen Sie sich die Initialisierungsdatei -@file{makam.ly} für weiter Information zu Tonhöhenbezeichnungen -und Alterationen an (siehe -Handbuch zum Lernen @version{}, 4.6.3 Weitere Information zu -Hinweisen, wo diese Datei gespeichert ist)." - - doctitlede = "Makam-Beispiel" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Le « makam » est une forme de mélodie turque qui utilise des altérations -d'un neuvième de ton. Consultez le fichier d'initialisation -@file{makam.ly} pour plus de détails sur les hauteurs et altérations -utilisées (voir le chapitre 4.6.3 - Autres sources d'information du -manuel d'initiation pour le localiser). - -" - doctitlefr = "Exemple de musique « Makam »" - - lsrtags = "pitches, world-music" texidoc = " Makam is a type of melody from Turkey using 1/9th-tone microtonal -alterations. Consult the initialization file @samp{ly/makam.ly} for +alterations. Consult the initialization file @samp{ly/makam.ly} for details of pitch names and alterations. " diff --git a/Documentation/snippets/making-an-object-invisible-with-the-transparent-property.ly b/Documentation/snippets/making-an-object-invisible-with-the-transparent-property.ly index 56dfbc6399..fd1668089c 100644 --- a/Documentation/snippets/making-an-object-invisible-with-the-transparent-property.ly +++ b/Documentation/snippets/making-an-object-invisible-with-the-transparent-property.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.14.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \header { lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides" @@ -25,6 +26,7 @@ in that voice, the tie appears to cross voices. doctitle = "Making an object invisible with the 'transparent property" } % begin verbatim + \relative c'' { \time 2/4 << diff --git a/Documentation/snippets/making-slurs-with-complex-dash-structure.ly b/Documentation/snippets/making-slurs-with-complex-dash-structure.ly index 102eab7cb8..4fda57bcfe 100644 --- a/Documentation/snippets/making-slurs-with-complex-dash-structure.ly +++ b/Documentation/snippets/making-slurs-with-complex-dash-structure.ly @@ -1,106 +1,32 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " + lsrtags = "expressive-marks, rhythms" -Las ligaduras de expresión se pueden construir con patrones de -discontinuidad complejos mediante la definición de la propiedad -@code{dash-definition}. @code{dash-definition} es una lista de -@code{elementos de discontinuidad}. Un @code{elemento de -discontinuidad} es una lista de parámetros que definen el -comportamiento de discontinuidad de un segmento de la ligadura de -expresión. - -La ligadura se define en términos del parámetro de bezier t cuyo -rango va de 0 a la izquierda de la ligadura hasta 1 en el extremo -derecho de la ligadura. Cada @code{elemento de discontinuidad} es -una lista @code{(t-inicio t-final fracción-discontinuidad -período-discontinuidad)}. La región de la ligadura desde -@code{t-inicio} hasta @code{t-final} tendrá una fracción -@code{fracción-discontinuidad} de cada -@code{período-discontinuidad} de color negro. -@code{período-discontinuidad} se define en términos de espacios de -pentagrama. @code{fracción-discontinuidad} se establece al valor -de 1 para una ligadura continua. - -" - - doctitlees = "Hacer ligaduras de expresión con estructura compleja de discontinuidad" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Legatobögen können mit einem komplizierten Strichelmuster -gesetzt werden, indem die @code{dash-definition}-Eigenschaft -definiert wird. @code{dash-definition} ist eine Liste bestehend -aus @code{dash-elements}-Elementen. Ein @code{dash-element} ist -eine Liste an Parametern, die das Strichverhalten für einen -Abschnitt des Legatobogens definieren. - -Der Bogen wird nach dem Bezierparameter t definiert, welcher -von 0 am linken Ende des Bogens zu 1 am rechten Ende des Bogens -reicht. @code{dash-element} ist eine Liste @code{(start-t stop-t dash-Unterbrechung dash-Abschnitt)}. Die Region des Bogens von @code{start-t} -bis @code{stop-t} hat eine Unterbrechung von @code{dash-Unterbrechung} -von jedem @code{dash-Abschnitt}-Schwarzabschnitt. @code{dash-Abschnitt} ist in Notenlinienzwischenräumen definiert. -@code{dash-Abschnitt} ist auf 1 für einen durchgehenden Bogen -gesetzt. -" - doctitlede = "Legatobögen mit kompliziertem Strichelmuster - definieren" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Grâce à la propriété @code{dash-definition}, une liaison d'articulation -peut être formée de traits discontinus variables. -@code{dash-definition} se compose d'une liste de -@code{segments-discontinus} (@emph{dash-elements}). Chaque -@code{segment-discontinu} contient une liste de paramètres qui -déterminent le comportement du trait pour une section de la liaison. - -Cette liaison se définit selon le paramètre de Bézier @code{t} qui est -compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité -droite de la liaison). Chaque @code{segment-discontinu} se composera -selon la liste @code{(t-début t-fin segment-style segment-taille)}. -La portion de liaison allant de @code{t-début} à @code{t-fin} aura un -trait @code{segment-style} de longueur @code{segment-taille}. -@code{segment-taille} est exprimé en espace de portée ; un -@code{segment-style} à 1 donnera un trait plein. - -" - doctitlefr = "Dessin d'une liaison d'articulation au trait discontinu" - - - lsrtags = "rhythms, expressive-marks" texidoc = " -Slurs can be made with complex dash patterns by defining -the @code{dash-definition} property. @code{dash-definition} -is a list of @code{dash-elements}. A @code{dash-element} is a -list of parameters defining the dash behavior for a segment of -the slur. +Slurs can be made with complex dash patterns by defining the +@code{dash-definition} property. @code{dash-definition} is a list of +@code{dash-elements}. A @code{dash-element} is a list of parameters +defining the dash behavior for a segment of the slur. -The slur is defined in terms of the bezier parameter t -which ranges from 0 -at the left end of the slur to 1 at the right end of the slur. +The slur is defined in terms of the bezier parameter t which ranges +from 0 at the left end of the slur to 1 at the right end of the slur. @code{dash-element} is a list @code{(start-t stop-t dash-fraction dash-period)}. The region of the slur from @code{start-t} to -@code{stop-t} will have a fraction @code{dash-fraction} -of each @code{dash-period} black. @code{dash-period} is -defined in terms of staff spaces. @code{dash-fraction} is -set to 1 for a solid slur. +@code{stop-t} will have a fraction @code{dash-fraction} of each +@code{dash-period} black. @code{dash-period} is defined in terms of +staff spaces. @code{dash-fraction} is set to 1 for a solid slur. + " doctitle = "Making slurs with complex dash structure" } % begin verbatim - \relative c' { \once \override Slur #'dash-definition = #'((0 0.3 0.1 0.75) diff --git a/Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly b/Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly index aa791227c8..9b24e3f97e 100644 --- a/Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly +++ b/Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly @@ -4,49 +4,13 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, editorial-annotations" - -%% 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 -conseguir añadiendo más líneas muy cerca de la línea que se quiere -destacar, utilizando la propiedad @code{line-positions} del objeto -@code{StaffSymbol}. - -" - doctitlees = "Hacer unas líneas del pentagrama más gruesas que las otras" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Für den pädagogischen Einsatz kann eine Linie des Notensystems dicker -gezeichnet werden (z. B. die Mittellinie, oder um den Schlüssel hervorzuheben). -Das ist möglich, indem man zusätzliche Linien sehr nahe an der Linie, die -dicker erscheinen soll, einfügt. Dazu wird die @code{line-positions}-Eigenschaft -herangezogen. - -" - doctitlede = "Eine Linie des Notensystems dicker als die anderen machen" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -Vous pourriez avoir envie, dans un but pédagogique, de rendre certaines -lignes d'une portée plus épaisses que les autres, comme la ligne médiane -ou bien pour mettre en exergue la ligne portant la clé de sol. Il -suffit pour cela d'ajouter une ligne qui sera accolée à celle qui doît -être mise en évidence, grâce à la propriété @code{line-positions} de -l'objet @code{StaffSymbol}. - -" - doctitlefr = "Empâtement de certaines lignes d'une portée" - + lsrtags = "editorial-annotations, really-cool, staff-notation, workaround" texidoc = " -For pedagogical purposes, a staff line can be thickened (e.g., the +For educational purposes, a staff line can be thickened (e.g., the middle line, or to emphasize the line of the G clef). This can be achieved by adding extra lines very close to the line that should be emphasized, using the @code{line-positions} property of the @@ -57,7 +21,7 @@ emphasized, using the @code{line-positions} property of the } % begin verbatim { - \override Staff.StaffSymbol #'line-positions = #'(-4 -2 -0.2 0 0.2 2 4) + \override Staff.StaffSymbol #'line-positions = + #'(-4 -2 -0.2 0 0.2 2 4) d'4 e' f' g' } - diff --git a/Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly b/Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly index 169f17bc2b..f543c44a18 100644 --- a/Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly +++ b/Documentation/snippets/manually-break-figured-bass-extenders-for-only-some-numbers.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "chords" @@ -20,6 +20,7 @@ extender attributed to that number right before the number. doctitle = "Manually break figured bass extenders for only some numbers" } % begin verbatim + bassfigures = \figuremode { \set useBassFigureExtenders = ##t <6 4>4 <6 4\!> <6 4\!> <6 4\!> | <6\! 4\!> <6 4> <6 4\!> <6 4> @@ -29,6 +30,3 @@ bassfigures = \figuremode { \new Staff \relative c'' { c1 c1 } \new FiguredBass \bassfigures >> - - - diff --git a/Documentation/snippets/manually-controlling-beam-positions.ly b/Documentation/snippets/manually-controlling-beam-positions.ly index 6e7df11c02..d9d292cb29 100644 --- a/Documentation/snippets/manually-controlling-beam-positions.ly +++ b/Documentation/snippets/manually-controlling-beam-positions.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, tweaks-and-overrides" + lsrtags = "connecting-notes, rhythms, tweaks-and-overrides" texidoc = " Beam positions may be controlled manually, by overriding the @@ -20,6 +20,7 @@ Beam positions may be controlled manually, by overriding the doctitle = "Manually controlling beam positions" } % begin verbatim + \relative c' { \time 2/4 % from upper staff-line (position 2) to center (position 0) @@ -29,5 +30,3 @@ Beam positions may be controlled manually, by overriding the \override Beam #'positions = #'(0 . 1) c8 c } - - diff --git a/Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly b/Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly index 18b52b36a6..8618782bb1 100644 --- a/Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly +++ b/Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, vocal-music" + lsrtags = "contemporary-notation, editorial-annotations, vocal-music, workaround" texidoc = " This example shows how to put crosses on stems. Mark the beginning of @@ -18,6 +18,7 @@ a spoken section with the @code{\\speakOn} keyword, and end it with the doctitle = "Marking notes of spoken parts with a cross on the stem" } % begin verbatim + speakOn = { \override Stem #'stencil = #(lambda (grob) @@ -30,13 +31,14 @@ speakOn = { Y (- (ly:grob-property grob 'direction)) (grob-interpret-markup grob - (markup #:center-align #:fontsize -4 - #:musicglyph "noteheads.s2cross")) - -2.3 0)))) + (markup #:center-align #:fontsize -4 + #:musicglyph "noteheads.s2cross")) + -2.3)))) } speakOff = { \revert Stem #'stencil + \revert Flag #'stencil } \score { @@ -51,4 +53,3 @@ speakOff = { } } } - diff --git a/Documentation/snippets/markup-lines.ly b/Documentation/snippets/markup-lines.ly index fea2fb1ea7..474f13f19d 100644 --- a/Documentation/snippets/markup-lines.ly +++ b/Documentation/snippets/markup-lines.ly @@ -4,19 +4,20 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" texidoc = " Text that can spread over pages is entered with the -@code{\\markuplines} command. +@code{\\markuplist} command. " doctitle = "Markup lines" } % begin verbatim + #(set-default-paper-size "a6") #(define-markup-list-command (paragraph layout props args) (markup-list?) @@ -24,7 +25,7 @@ Text that can spread over pages is entered with the (make-justified-lines-markup-list (cons (make-hspace-markup 2) args)))) % Candide, Voltaire -\markuplines { +\markuplist { \override-lines #'(baseline-skip . 2.5) { \paragraph { Il y avait en Westphalie, dans le château de M. le baron de diff --git a/Documentation/snippets/measure-counter.ly b/Documentation/snippets/measure-counter.ly index 9981d3ab95..df602528c1 100644 --- a/Documentation/snippets/measure-counter.ly +++ b/Documentation/snippets/measure-counter.ly @@ -4,19 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "repeats, staff-notation, editorial-annotations" - -%% 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 -transparentes de tipo porcentaje. - -" - doctitlees = "Contador de compases" + lsrtags = "editorial-annotations, repeats, staff-notation, workaround" texidoc = " This snippet provides a workaround for emitting measure counters using @@ -41,4 +32,3 @@ transparent percent repeats. \repeat percent 4 { s1 } } >> - diff --git a/Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly b/Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly index 8e9019ad52..725d9b46ea 100644 --- a/Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly +++ b/Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly @@ -4,44 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides" - -%% 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 -conseguir con un @code{StaffGroup} en vez de un @code{ChoirStaff}. -La línea divisoria sobre los pentagramas se borra estableciendo la -propiedad @code{transparent}. - -" - - doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Das Mensurstiche-Layout, in welchem die Taktlinien nicht auf den Systemen, -sondern zwischen den Systemen gesetzt werden, kann mit einer @code{StaffGroup} -anstelle von @code{ChoirStaff} erreicht werden. Die Taktlinien auf den -Systemen werden mit der @code{transparent}-Eigenschaft ausgelöscht. - -" - doctitlede = "Mensurstriche-Layout (Taktstriche zwischen den Systemen" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -En musique mensurale, les barres de mesure ne traversent pas les -portées. Pour obtenir ce résultat avec un @code{StaffGroup} plutôt -qu'en utilisant un @code{ChoirStaff}, il faudra rendre « transparentes » -les portions de barre qui recouvrent les portées. - -" - doctitlefr = "Présentation à l'ancienne (barres de mesure entre les portées)" - + lsrtags = "ancient-notation, contexts-and-engravers, staff-notation, tweaks-and-overrides" texidoc = " The mensurstriche-layout where the bar lines do not show on the staves @@ -53,6 +19,7 @@ the @code{transparent} property. doctitle = "Mensurstriche layout (bar lines between the staves)" } % begin verbatim + global = { \override Staff.BarLine #'transparent = ##t s1 s @@ -66,4 +33,3 @@ global = { \new Staff { << \global { c c } >> } >> } - diff --git a/Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly b/Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly index 7e5f7f4fdb..1b78f4dff4 100644 --- a/Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly +++ b/Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" + lsrtags = "really-simple, rhythms, version-specific" texidoc = " When using multi-measure rests in a polyphonic staff, the rests will be @@ -18,6 +18,7 @@ can be printed on the same staff line, using the following setting. doctitle = "Merging multi-measure rests in a polyphonic part" } % begin verbatim + normalPos = \revert MultiMeasureRest #'staff-position { @@ -39,4 +40,3 @@ normalPos = \revert MultiMeasureRest #'staff-position } >> } - diff --git a/Documentation/snippets/midi-intro.itely b/Documentation/snippets/midi-intro.itely index cfa76077b8..3302e03eab 100644 --- a/Documentation/snippets/midi-intro.itely +++ b/Documentation/snippets/midi-intro.itely @@ -1,5 +1,6 @@ @node MIDI @unnumbered MIDI +@nodeprefix MIDI @ruser{MIDI output} diff --git a/Documentation/snippets/modern-tab-text-clef.ly b/Documentation/snippets/modern-tab-text-clef.ly deleted file mode 100644 index 90a0c6de8a..0000000000 --- a/Documentation/snippets/modern-tab-text-clef.ly +++ /dev/null @@ -1,32 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Utilice un texto de marcado para sustituir el glifo de clave (TAB) con -una fuente tipográfica moderna. - -" - doctitlees = "Clave de texto TAB moderna para tablatura" - - lsrtags = "staff-notation, fretted-strings" - - texidoc = " -Use a markup text to replace the (TAB) clef glyph with a modern font. - -" - doctitle = "Modern TAB text clef" -} % begin verbatim - - -\markup { - This snippet is deprecated as of version 2.13.4 and will be removed - in version 2.14. -} diff --git a/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly b/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly index c7bffb1d2f..ea6f338123 100644 --- a/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly +++ b/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly @@ -4,57 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Las abreviaturas se encuentran definidas dentro del archivo -@file{ly/script-init.ly}, donde las variables @code{dashHat}, -@code{dashPlus}, @code{dashDash}, @code{dashBar}, -@code{dashLarger}, @code{dashDot} y @code{dashUnderscore} reciben -valores predeterminados. Se pueden modificar estos valores -predeterminados para las abreviaturas. Por ejemplo, para asociar -la abreviatura @code{-+} (@code{dashPlus}) con el símbolo del -semitrino en lugar del símbolo predeterminado +, asigne el valor -@code{trill} a la variable @code{dashPlus}: - -" - doctitlees = "Modificar los valores predeterminados para la notación abreviada de las articulaciones" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Abkürzungen sind in der Datei @file{ly/script-init.ly} definiert, wo -den Variablen @code{dashHat}, @code{dashPlus}, @code{dashDash}, -@code{dashBar}, @code{dashLarger}, @code{dashDot} und -@code{dashUnderscore} Standardwerte zugewiesen werden. Diese Standardwerte -können verändert werden. Um zum Beispiel die Abkürzung -@code{-+} (@code{dashPlus}) mit dem Triller anstatt mit dem +-Symbol zu -assoziieren, muss der Wert @code{trill} der Variable -@code{dashPlus} zugewiesen werden: - -" - doctitlede = "Die Standardwerte der Abkürzungen von Artikulationen verändern" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Les raccourcis sont répertoriés dans le fichier -@file{ly/script-init.ly}, dans lequel on retrouve les variables -@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar}, -@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que -leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos -besoins. Il suffit par exemple, pour affecter au raccourci @code{-+} -(@code{dashPlus}) le symbole du trille en lieu et place du @code{+} -(caractère plus), d'assigner la valeur @code{trill} à la variable -@code{dashPlus} : - -" - doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation" - - texidoc = " The shorthands are defined in @samp{ly/script-init.ly}, where the variables @code{dashHat}, @code{dashPlus}, @code{dashDash}, @@ -69,9 +23,9 @@ the default + symbol, assign the value @code{trill} to the variable doctitle = "Modifying default values for articulation shorthand notation" } % begin verbatim + \relative c'' { c1-+ } dashPlus = "trill" \relative c'' { c1-+ } - diff --git a/Documentation/snippets/modifying-tuplet-bracket-length.ly b/Documentation/snippets/modifying-tuplet-bracket-length.ly index 261f909cde..3cff9d1059 100644 --- a/Documentation/snippets/modifying-tuplet-bracket-length.ly +++ b/Documentation/snippets/modifying-tuplet-bracket-length.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" + lsrtags = "really-simple, rhythms" texidoc = " Tuplet brackets can be made to run to prefatory matter or the next @@ -23,6 +23,7 @@ modify what material they cover. doctitle = "Modifying tuplet bracket length" } % begin verbatim + \new RhythmicStaff { % Set tuplets to be extendable... \set tupletFullLength = ##t @@ -37,4 +38,3 @@ modify what material they cover. \time 3/4 c2. } - diff --git a/Documentation/snippets/moving-dotted-notes-in-polyphony.ly b/Documentation/snippets/moving-dotted-notes-in-polyphony.ly index b7cd9ca2c2..748d309d10 100644 --- a/Documentation/snippets/moving-dotted-notes-in-polyphony.ly +++ b/Documentation/snippets/moving-dotted-notes-in-polyphony.ly @@ -4,23 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides" -%% 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 -desplazar la nota superior a la derecha. Se puede cambiar usando la -propiedad @code{prefer-dotted-right} de @code{NoteCollision}. - -" - doctitlees = "Desplazar las notas con puntillo en polifonía" - - - texidoc = " When a dotted note in the upper voice is moved to avoid a collision with a note in another voice, the default is to move the upper note to @@ -31,6 +19,7 @@ the right. This behaviour can be over-ridden by using the doctitle = "Moving dotted notes in polyphony" } % begin verbatim + \new Staff \relative c' << { f2. f4 \override Staff.NoteCollision #'prefer-dotted-right = ##f @@ -41,4 +30,3 @@ the right. This behaviour can be over-ridden by using the \\ { e4 e e e e e e e e e e e} >> - diff --git a/Documentation/snippets/moving-slur-positions-vertically.ly b/Documentation/snippets/moving-slur-positions-vertically.ly index 0e23b73d42..6b7d5e44d8 100644 --- a/Documentation/snippets/moving-slur-positions-vertically.ly +++ b/Documentation/snippets/moving-slur-positions-vertically.ly @@ -4,30 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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 -@code{Slur}. La propiedad tiene dos parámetros, refiriéndose el -primero al extremo izquierdo de la ligadura y el segundo al derecho. -Los valores de los parámetros no se utilizan por parte de LilyPond -para producir un desplazamiento exacto de la ligadura: más bien -selecciona la colocación que mejor aspecto tiene, teniendo en cuenta -los valores de los parámetros. Los valores positivos desplazan la -ligadura hacia arriba, y son adecuados a notas que tienen las plicas -hacia abajo. Los valores negativos desplazan las ligaduras bajas aún -más hacia abajo. - -" - doctitlees = "Desplazar ligaduras de expresión verticalmente" - - - texidoc = " The vertical position of a slur can be adjusted using the @code{positions} property of @code{Slur}. The property has 2 @@ -43,6 +24,7 @@ slurs further down. doctitle = "Moving slur positions vertically" } % begin verbatim + \relative c' { \stemDown e4( a) @@ -67,4 +49,3 @@ slurs further down. \revert Slur #'positions e4( a) } - diff --git a/Documentation/snippets/multi-measure-rest-markup.ly b/Documentation/snippets/multi-measure-rest-markup.ly index b76f2da0b6..d7bd204f2c 100644 --- a/Documentation/snippets/multi-measure-rest-markup.ly +++ b/Documentation/snippets/multi-measure-rest-markup.ly @@ -4,65 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, text" -%% 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 -que se adjuntan a silencios multicompás no producen la expansión del -compás. Para expandir un silencio multicompás de forma que quepa todo -el marcado, utilice un silencio de separación con un marcado aplicado -antes del silencio multicompás. - -Observe que el silencio separador produce la inserción de un compás. -El texto aplicado a un siencio sparador de esta forma se alinea por la -izquierda a la posición en que la nota estaría situada dentro del -compás, pero si la longitud del compás está determinada por la -longitud del texto, éste aparecerá centrado. - -" - -doctitlees = "Marcado de silencios multicompás" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = "Textbeschriftungen, die an Mehrtaktpausen gehängt wird, -wird über oder unter der Pause zentriert. Lange Beschriftungen -lassen den Takt nicht breiter werden. Um eine Mehrtaktpause einer -Beschriftung anzupassen, muss eine unsichtbare Pause mit der -Beschriftung direkt vor der Mehrtaktpause eingesetzt werden. - -Man sollte beachten, dass unsichtbare Pausen automatische Taktstriche -nach sich ziehen. Text, der an eine unsichtbare Pause gehängt wird, -ist links ausgerichtet an der Position, wo die Pause erscheinen -würde. Wenn aber die Länge des Taktes durch die Länge des Textes -bestimmt wird, sieht es so aus, als ob der Text zentriert gesetzt -ist." - - doctitlede = "Textbeschriftung und Mehrtaktpausen" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Lorsque du texte est attaché à un silence multi-mesures, il sera centré -dans la mesure, au-dessus ou en dessous de la portée. Afin d'étirer la -mesure dans le cas ou ce texte est relativement long, il suffit -d'insérer un silence invisible auquel on attache le texte en question, -avant le silence multi-mesures. - -Rappelez-vous qu'un silence invisible génère une barre de mesure. Le -texte attaché à ce silence invisible sera alors aligné sur la gauche de -là où serait positionnée la note. Cependant, si la taille de la mesure -est déterminée par la longueur du texte, il apparaîtra comme centré. - -" - doctitlefr = "Ajout de texte à un silence multi-mesures" - texidoc = " Markups attached to a multi-measure rest will be centered above or below it. Long markups attached to multi-measure rests do not cause @@ -80,6 +26,7 @@ be centered. doctitle = "Multi-measure rest markup" } % begin verbatim + \relative c' { \compressFullBarRests \textLengthOn diff --git a/Documentation/snippets/nesting-staves.ly b/Documentation/snippets/nesting-staves.ly index 3319018110..3d05329e1c 100644 --- a/Documentation/snippets/nesting-staves.ly +++ b/Documentation/snippets/nesting-staves.ly @@ -4,62 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede utilizar la propiedad -@code{systemStartDelimiterHierarchy} para crear grupos de -pentagramas anidados de forma más compleja. La instrucción -@code{\\set StaffGroup.systemStartDelimiterHierarchy} toma una -lista alfabética del número de pentagramas producidos. Se puede -proporcionar antes de cada pentagrama un delimitador de comienzo -de sistema. Se debe encerrar entre corchetes y admite tantos -pentagramas como encierren las llaves. Se pueden omitir los -elementos de la lista, pero el primer corchete siempre abarca -todos los pentagramas. Las posibilidades son -@code{SystemStartBar}, @code{SystemStartBracket}, -@code{SystemStartBrace} y @code{SystemStartSquare}. - -" - doctitlees = "Anidado de grupos de pentagramas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Eigenschaft @code{systemStartDelimiterHierarchy} kann eingesetzt -werden, um komplizierte geschachtelte Systemklammern zu erstellen. Der -Befehl @code{\\set StaffGroup.systemStartDelimiterHierarchy} nimmt eine -Liste mit der Anzahl der Systeme, die ausgegeben werden, auf. Vor jedem -System kann eine Systemanfangsklammer angegeben werden. Sie muss in Klammern eingefügt -werden und umfasst so viele Systeme, wie die Klammer einschließt. Elemente -in der Liste können ausgelassen werden, aber die erste Klammer umfasst immer -die gesamte Gruppe. Die Möglichkeiten der Anfangsklammer sind: @code{SystemStartBar}, -@code{SystemStartBracket}, @code{SystemStartBrace} und -@code{SystemStartSquare}. - -" - doctitlede = "Systeme schachteln" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -La propriété @code{systemStartDelimiterHierarchy} permet de créer des -regroupements imbriqués complexes. La commande -@code{\\set@tie{}StaffGroup.systemStartDelimiterHierarchy} prend en -argument la liste alphabétique des sous-groupes à hiérarchiser. Chaque -sous-groupe peut être affublé d'un délimiteur particulier. Chacun des -regroupements intermédiaires doit être borné par des parenthèses. Bien -que des éléments de la liste puissent être omis, le premier délimiteur -embrassera toujours l'intégralité des portées. Vous disposez des quatre -délimiteurs @code{SystemStartBar}, @code{SystemStartBracket}, -@code{SystemStartBrace} et @code{SystemStartSquare}. - -" - doctitlefr = "Imbrications de regroupements de portées" - + lsrtags = "contexts-and-engravers, preparing-parts, staff-notation, tweaks-and-overrides" texidoc = " The property @code{systemStartDelimiterHierarchy} can be used to make @@ -77,6 +25,7 @@ staves. The possibilities are @code{SystemStartBar}, doctitle = "Nesting staves" } % begin verbatim + \new StaffGroup \relative c'' << \set StaffGroup.systemStartDelimiterHierarchy @@ -88,4 +37,3 @@ staves. The possibilities are @code{SystemStartBar}, \new Staff { c1 } \new Staff { c1 } >> - diff --git a/Documentation/snippets/new/adding-fingerings-to-tablatures.ly b/Documentation/snippets/new/adding-fingerings-to-tablatures.ly deleted file mode 100644 index 830df4d795..0000000000 --- a/Documentation/snippets/new/adding-fingerings-to-tablatures.ly +++ /dev/null @@ -1,37 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -To add fingerings to tablatures, use a combination of @code{\\markup} -and @code{\\finger}. -" - doctitle = "Adding fingerings to tablatures" -} - -one = \markup { \finger 1 } -two = \markup { \finger 2 } -threeTwo = \markup { - \override #'(baseline-skip . 2) - \column { - \finger 3 - \finger 2 - } -} -threeFour = \markup { - \override #'(baseline-skip . 2) - \column { - \finger 3 - \finger 4 - } -} - -\score { - \new TabStaff { - \tabFullNotation - \stemUp - e8\4^\one b\2 ^>[ b\2 e\4] - ^>^\threeTwo[ b\2 e\4] - } -} - diff --git a/Documentation/snippets/new/adding-orchestral-cues-to-a-vocal-score.ly b/Documentation/snippets/new/adding-orchestral-cues-to-a-vocal-score.ly new file mode 100644 index 0000000000..42c4df97b0 --- /dev/null +++ b/Documentation/snippets/new/adding-orchestral-cues-to-a-vocal-score.ly @@ -0,0 +1,80 @@ +\version "2.16.0" + +\header { + lsrtags = "staff-notation, vocal-music" + + texidoc = " +This shows one approach to simplify adding many orchestral cues to the +piano reduction in a vocal score. The music function @code{\\cueWhile} +takes four arguments: the music from which the cue is to be taken, as +defined by @code{\\addQuote}, the name to be inserted before the cue +notes, then either @code{#UP} or @code{#DOWN} to specify either +@code{\\voiceOne} with the name above the staff or @code{\\voiceTwo} +with the name below the staff, and finally the piano music in parallel +with which the cue notes are to appear. The name of the cued +instrument is positioned to the left of the cued notes. Many passages +can be cued, but they cannot overlap each other in time. + +" + doctitle = "Adding orchestral cues to a vocal score" +} + +cueWhile = +#(define-music-function + (parser location instrument name dir music) + (string? string? ly:dir? ly:music?) + #{ + \cueDuring $instrument #dir { + \once \override TextScript #'self-alignment-X = #RIGHT + \once \override TextScript #'direction = $dir + <>-\markup { \tiny #name } + $music + } + #}) + +flute = \relative c'' { + \transposition c' + s4 s4 e g +} +\addQuote "flute" { \flute } + +clarinet = \relative c' { + \transposition bes + fis4 d d c +} +\addQuote "clarinet" { \clarinet } + +singer = \relative c'' { c4. g8 g4 bes4 } +words = \lyricmode { here's the lyr -- ics } + +pianoRH = \relative c'' { + \transposition c' + \cueWhile "clarinet" "Clar." #DOWN { c4. g8 } + \cueWhile "flute" "Flute" #UP { g4 bes4 } +} +pianoLH = \relative c { c4 e, } + +\score { + << + \new Staff { + \new Voice = "singer" { + \singer + } + } + \new Lyrics { + \lyricsto "singer" + \words + } + \new PianoStaff << + \new Staff { + \new Voice { + \pianoRH + } + } + \new Staff { + \clef "bass" + \pianoLH + } + >> + >> +} diff --git a/Documentation/snippets/new/adjusting-lyrics-vertical-spacing.ly b/Documentation/snippets/new/adjusting-lyrics-vertical-spacing.ly deleted file mode 100644 index 7a707d5a29..0000000000 --- a/Documentation/snippets/new/adjusting-lyrics-vertical-spacing.ly +++ /dev/null @@ -1,33 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "text, vocal-music, spacing" - texidoc = " -This snippet shows how to bring the lyrics line closer to the staff. - -" - doctitle = "Adjusting lyrics vertical spacing" -} - -% Default layout: -<< - \new Staff \new Voice = melody \relative c' { - c4 d e f - g4 f e d - c1 - } - \new Lyrics \lyricsto melody { aa aa aa aa aa aa aa aa aa } - - % Reducing the minimum space below the staff and above the lyrics: - \new Staff { - \new Voice = melody \relative c' { - c4 d e f - g4 f e d - c1 - } - } - \new Lyrics \with { - \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = #'((basic-distance . 1)) - } - \lyricsto melody { aa aa aa aa aa aa aa aa aa } ->> diff --git a/Documentation/snippets/new/alternative-bar-numbering.ly b/Documentation/snippets/new/alternative-bar-numbering.ly new file mode 100644 index 0000000000..78903e3095 --- /dev/null +++ b/Documentation/snippets/new/alternative-bar-numbering.ly @@ -0,0 +1,27 @@ +\version "2.16.0" + +\header { + lsrtags = "editorial-annotations, staff-notation, tweaks-and-overrides" + texidoc = "Two alternative methods for bar numbering can be set, + especially for when using repeated music." + doctitle = "Alternative bar numbering" +} + +\relative c'{ + \set Score.alternativeNumberingStyle = #'numbers + \repeat volta 3 { c4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 \break + \set Score.alternativeNumberingStyle = #'numbers-with-letters + \repeat volta 3 { c,4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 +} diff --git a/Documentation/snippets/new/alternative-breve-note.ly b/Documentation/snippets/new/alternative-breve-note.ly deleted file mode 100644 index 0534ef1b47..0000000000 --- a/Documentation/snippets/new/alternative-breve-note.ly +++ /dev/null @@ -1,13 +0,0 @@ -\version "2.14.0" -\header { - lsrtags = "rhythms,expressive-marks" - texidoc = "This code demonstrates how to use the alternative breve note -with two vertical lines on each side of the notehead instead of one line." - doctitle = "Alternative breve notehead with double vertical lines" -} - -\relative c'' { - \time 4/2 - \override Staff.NoteHead #'style = #'altdefault - c\breve | b\breve -} diff --git a/Documentation/snippets/new/ancient-fonts.ly b/Documentation/snippets/new/ancient-fonts.ly new file mode 100644 index 0000000000..138f4227b9 --- /dev/null +++ b/Documentation/snippets/new/ancient-fonts.ly @@ -0,0 +1,225 @@ +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "ancient-notation, symbols-and-glyphs" + + texidoc = " +Shown here are many (all?) of the symbols that are included in +LilyPond's support for ancient notation. +" + doctitle = "Ancient fonts" +} + +upperStaff = \new VaticanaStaff = "upperStaff" << + \context VaticanaVoice << + \transpose c c { + + \override NoteHead #'style = #'vaticana.punctum + \key es \major + \clef "vaticana-fa2" + c1 des e f ges + + \override NoteHead #'style = #'vaticana.inclinatum + a! b ces' + \bar "|" + % \break % 1 (8*1) + + \override NoteHead #'style = #'vaticana.quilisma + b! des'! ges! fes! + \breathe + \clef "vaticana-fa1" + \override NoteHead #'style = #'vaticana.plica + es d + \override NoteHead #'style = #'vaticana.reverse.plica + c d + \bar "|" + % \break %2 (8*1) + + \override NoteHead #'style = #'vaticana.punctum.cavum + es f + \override NoteHead #'style = #'vaticana.lpes + g as + \override NoteHead #'style = #'vaticana.upes + bes as + \override NoteHead #'style = #'vaticana.vupes + g f + \override NoteHead #'style = #'vaticana.linea.punctum + \once \override Staff.BarLine #'bar-extent = #'(-1 . 1) \bar "|" + % \break % 3 (8*1) + + es d + \override NoteHead #'style = #'vaticana.epiphonus + c d + \override NoteHead #'style = #'vaticana.cephalicus + es f + + \override Staff.KeySignature #'glyph-name-alist = #alteration-medicaea-glyph-name-alist + \override Staff.Accidental #'glyph-name-alist = #alteration-medicaea-glyph-name-alist + \override Staff.Custos #'style = #'medicaea + \override NoteHead #'style = #'medicaea.punctum + \clef "medicaea-fa2" + ces des + \bar "|" + % \break % 4 (8*1) + + e! f! ges + \clef "medicaea-do2" + \override NoteHead #'style = #'medicaea.inclinatum + a! b! ces' + \override NoteHead #'style = #'medicaea.virga + b! a! + \bar "|" + % \break % 5 (8*1) + + ges fes + \clef "medicaea-fa1" + \override NoteHead #'style = #'medicaea.rvirga + e des ces + + \override Staff.KeySignature #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist + \override Staff.Accidental #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist + \override Staff.Custos #'style = #'hufnagel + \override NoteHead #'style = #'hufnagel.punctum + \clef "hufnagel-fa2" + ces des es + \bar "|" + % \break % 6 (8*1) + + fes ges + \clef "hufnagel-do2" + \override NoteHead #'style = #'hufnagel.lpes + as! bes! ces' + \override NoteHead #'style = #'hufnagel.virga + bes! as! + \bar "|" + % \break % 7 (8*1) + + ges! fes! + \clef "hufnagel-do-fa" + \override NoteHead #'style = #'hufnagel.punctum + es! des ces des! es! fes! + \bar "||" + % \break % 8 (8*1) + + s32*1 + % \break % 12 (32*1) + } + >> +>> + +lowerStaff = \new MensuralStaff = "lowerStaff" << + \context MensuralVoice << + \transpose c c { + + \key a \major + cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \] + \set Staff.forceClef = ##t + \clef "neomensural-c2" + cis1 + \bar "|" + % \break % 2 (16*1) + + \[ g\breve dis''\longa \] + b\breve \[ a\longa d\longa \] + \clef "petrucci-c2" + % \break % 4 (16*1) + + fis1 ces1 + \clef "petrucci-c2" + r\longa + \set Staff.forceClef = ##t + \clef "mensural-c2" + r\breve + \bar "|" + % \break % 5 (8*1) + + r2 + \clef "mensural-g" + r4 r8 r16 r16 + \override NoteHead #'style = #'mensural + \override Rest #'style = #'mensural + \clef "petrucci-f" + c8 b, c16 b, c32 b, c64 b, c64 b, + d8 e d16 e d32 e d64 e d64 e + r\longa + \set Staff.forceClef = ##t + \clef "petrucci-f" + r\breve + \bar "|" + % \break % 6 (8*1) + + r\breve + \clef "mensural-f" + r2 r4 r8 r16 r16 + + \set Staff.forceClef = ##t + \clef "mensural-f" + e\breve f g a1 + \clef "mensural-g" + % \break % 7 (8*1) + + \[ bes'!\longa a'!\longa c''!\longa \] + e'1 d' c' d' \bar "|" + \bar "|" + % \break % 9 (16*1) + + bes'!\longa fis'!1 as'!1 ges'!\longa % lig + \set Staff.forceClef = ##t + \clef "mensural-g" + e'2 d' c' \bar "|" + % \break % 11 (16*1) + + \set Staff.forceClef = ##t + \clef "petrucci-g" + c'2 d' e' f' + \clef "petrucci-g" + g' as'! bes'! cis''! + bes'! as'! gis'! fis'! + \set Staff.forceClef = ##t + \clef "mensural-g" + es'! des'! cis'!1 \bar "||" + % \break % 12 (8*1) + } + >> +>> + +\paper { + line-thickness = #(/ staff-space 5.0) +} + +\score { + << + \upperStaff + \lowerStaff + >> + \layout { + indent = 0.0 + line-width = 17.25\cm + \context { + \Score + timing = ##f + } + \context { + \MensuralVoice + \override NoteHead #'style = #'neomensural + \override Rest #'style = #'neomensural + \override Flag #'style = #'mensural + \override Stem #'thickness = #1.0 + } + \context { + \MensuralStaff + \revert BarLine #'transparent + \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist + clefGlyph = #"clefs.petrucci.c2" + } + \context { + \VaticanaStaff + \revert BarLine #'transparent + \override StaffSymbol #'thickness = #2.0 + \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist + \override Custos #'neutral-position = #4 + } + } +} + diff --git a/Documentation/snippets/new/ancient-headword.ly b/Documentation/snippets/new/ancient-headword.ly deleted file mode 100644 index aff4337468..0000000000 --- a/Documentation/snippets/new/ancient-headword.ly +++ /dev/null @@ -1,134 +0,0 @@ -\version "2.14.0" - -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -\include "gregorian.ly" - -\score { - << - \new VaticanaVoice = "cantus" { - \clef "vaticana-do3" - % Verse 1 — Salve, Regína - a\melisma \[ a \flexa g \pes a\melismaEnd \] d - \divisioMinima - \[ a\melisma \flexa g\melismaEnd \] - \[ f\melisma \flexa e f \pes g \flexa f\melismaEnd \] - \[ e\melisma \flexa d\melismaEnd \] - \divisioMaior - c d \[d\melisma \flexa c\melismaEnd \] d - \[ e\melisma \pes f\melismaEnd\] g - \[d\melisma \pes e \flexa c\melismaEnd \] d - \finalis - % Verse 2 — Vita, dulcédo - % a\melisma \[ a \flexa g \pes a\melismaEnd \] d - % \divisioMinima - % \[ a\melisma \flexa g\melismaEnd \] - % \[ f\melisma \flexa e f \pes g \flexa f\melismaEnd \] - % \[ e\melisma \flexa d\melismaEnd \] - % \divisioMaior - % c d \[e\melisma \pes f\melismaEnd \] g - % \[d\melisma \pes e \flexa c\melismaEnd \] d - % \finalis - % Verse 3 — Ad te clamámus - \[ d\melisma \pes f\melismaEnd\] a g - \[ g\melisma \flexa f \pes a\melismaEnd\] e - \divisioMaior - g f \[ e\melisma \flexa d \pes g\melismaEnd \] - \divisioMinima - c d \[ e\melisma \flexa d \pes g\melismaEnd \] - \[ f\melisma \flexa e\melismaEnd \] d - \finalis - % Verse 4 — Ad te suspirámus - \[ d\melisma \pes f\melismaEnd \] a c' g - \[ g\melisma \flexa f \pes g\melismaEnd \] a - \divisioMaior - d \[ f\melisma \pes \deminutum g\melismaEnd \] g d - \[ \virga f\melisma \inclinatum e \inclinatum d\melismaEnd \] - c \divisioMaior - d \[ d\melisma \flexa c \pes f\melismaEnd \] - \[ g\melisma \pes a\melismaEnd \] - g \[ f\melisma \flexa e\melismaEnd \] g - \[ f\melisma \flexa \deminutum e\melismaEnd \] - \[ d\melisma \flexa c \pes d\melismaEnd \] - \finalis - % Verse 5 — Eia ergo, Advocáta nostra - f\melisma \[ f \pes g\melismaEnd \] f - \[ g\melisma \pes \deminutum a\melismaEnd \] a - \divisioMinima - c' g \[ \virga a\melisma \inclinatum g \inclinatum f\melismaEnd \] d g a - \divisioMaior - d' d' \[ c'\melisma \flexa b c' \pes d'\melismaEnd \] a - \divisioMinima - d' c' a \[ g\melisma \flexa f \pes a\melismaEnd \] g - \[ d\melisma \pes e\melismaEnd \] f - \[ \virga e\melisma \inclinatum d \inclinatum c\melismaEnd \] - \divisioMaior - \[ c\melisma \pes d\melismaEnd \] - f \[ g\melisma \flexa \deminutum f\melismaEnd \] - \[ d\melisma \flexa c \pes d\melismaEnd \] d - \finalis - % Verse 6 — Et Jesum - d a, \[ c\melisma \pes d\melismaEnd \] - \divisioMinima - d \[ d\melisma \pes e\melismaEnd \] \[ e\melisma \flexa d d\melismaEnd \] - c g f \[ e\melisma \flexa \deminutum d\melismaEnd \] g - \[ f\melisma \flexa e\melismaEnd \] - \[ d\melisma \flexa c \pes d\melismaEnd \] - \[ d\melisma \pes a \] \virga bes\melismaEnd a - \divisioMinima - \[ \virga a\melisma \inclinatum g \inclinatum f\melismaEnd \] g d f - \[ f\melisma \flexa e\melismaEnd \] \[ d\melisma \flexa c\melismaEnd \] - \divisioMinima - \[ e\melisma \pes f \flexa e\melismaEnd \] d d - \finalis - % Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María - a\melisma \[a \flexa g a \quilisma b \pes c'\melismaEnd \] - \[ \virga b\melisma \inclinatum a \inclinatum g\melismaEnd \] a - \finalis - \[ g\melisma \pes a \quilisma b \pes c' \] \[ c' \flexa b\melismaEnd \] - \[ a\melisma \flexa g\melismaEnd \] \[ g\melisma \pes a\melismaEnd \] - \finalis - \[ a\melisma \flexa d \virga f \inclinatum e \inclinatum d \inclinatum c d \] - \divisioMinima - \[ d \pes e f \pes g\melismaEnd \] - \[ g\melisma \flexa \deminutum f\melismaEnd \] - \[ g\melisma \pes a\melismaEnd \] - d c d \[ d\melisma \pes g \flexa f f\melismaEnd \] - \[ e\melisma \flexa d\melismaEnd \] - \finalis - } - \new Lyrics \lyricsto "cantus" { - Sal- ve, Re- gí- na, ma- ter mi- se- ri- cór- di- ae: - % Vi- ta, dul- cé- do, et spes no- stra, sal- ve. - Ad te cla- má- mus, éx- su- les, fi- li- i He- vae. - Ad te su- spi- rá- mus, ge- mén- tes et flen- tes in hac la- cri- má- rum - val- le. - E- ia er- go, Ad- vo- cá- ta no- stra, il- los tu- os mi- se- ri- cór- des - ó- cu- los ad nos con- vér- te. - Et Je- sum, be- ne- díc- tum fruc- tum ven- tris tu- i, no- bis post hoc - ex- sí- li- um os- tén- de. - O cle- mens: - O pi- a: - O dul- cis Vir- go Ma- rí- a. - } - >> -} - -\layout { - \context { - \Staff - \consists "Custos_engraver" - } -} diff --git a/Documentation/snippets/new/ancient-notation-template----modern-transcription-of-gregorian-music.ly b/Documentation/snippets/new/ancient-notation-template----modern-transcription-of-gregorian-music.ly new file mode 100644 index 0000000000..36e873fd00 --- /dev/null +++ b/Documentation/snippets/new/ancient-notation-template----modern-transcription-of-gregorian-music.ly @@ -0,0 +1,52 @@ +\version "2.16.0" + +\header { + lsrtags = "vocal-music, ancient-notation, template" + + texidoc = " +This example demonstrates how to do modern transcription of Gregorian +music. Gregorian music has no measure, no stems; it uses only half and +quarter note heads, and special marks, indicating rests of different +length. + +" + doctitle = "Ancient notation template -- modern transcription of gregorian music" +} + +\include "gregorian.ly" + +chant = \relative c' { + \set Score.timing = ##f + f4 a2 \divisioMinima + g4 b a2 f2 \divisioMaior + g4( f) f( g) a2 \finalis +} + +verba = \lyricmode { + Lo -- rem ip -- sum do -- lor sit a -- met +} + +\score { + \new Staff << + \new Voice = "melody" \chant + \new Lyrics = "one" \lyricsto melody \verba + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + \remove "Bar_engraver" + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t + } + \context { + \Voice + \override Stem #'length = #0 + } + \context { + \Score + barAlways = ##t + } + } +} + diff --git a/Documentation/snippets/new/automatic-beam-subdivisions.ly b/Documentation/snippets/new/automatic-beam-subdivisions.ly deleted file mode 100644 index 64bc6ee34c..0000000000 --- a/Documentation/snippets/new/automatic-beam-subdivisions.ly +++ /dev/null @@ -1,39 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - - texidoc = " -Beams can be subdivided automatically. By setting the property -@code{subdivideBeams}, beams are subdivided at beat positions (as -specified in @code{baseMoment}). - -" - doctitle = "Automatic beam subdivisions" -} - -\new Staff { - \relative c'' { - << - { - \voiceOne - \set subdivideBeams = ##t - b32[ a g f c' b a g - b32^"subdivide beams" a g f c' b a g] - } - \new Voice { - \voiceTwo - b32_"default"[ a g f c' b a g - b32 a g f c' b a g] - } - >> - \oneVoice - \set baseMoment = #(ly:make-moment 1 8) - \set beatStructure = #'(2 2 2 2) - b32^"baseMoment 1 8"[ a g f c' b a g] - \set baseMoment = #(ly:make-moment 1 16) - \set beatStructure = #'(4 4 4 4) - b32^"baseMoment 1 16"[ a g f c' b a g] - } -} - diff --git a/Documentation/snippets/new/bar-chords-notation-for-guitar--with-text-spanner.ly b/Documentation/snippets/new/bar-chords-notation-for-guitar--with-text-spanner.ly new file mode 100644 index 0000000000..0f292adb03 --- /dev/null +++ b/Documentation/snippets/new/bar-chords-notation-for-guitar--with-text-spanner.ly @@ -0,0 +1,63 @@ +\version "2.16.0" + +\header { + lsrtags = "chords, fretted-strings" + + texidoc = " +Here is how to print bar chords, or half-bar chords (just uncomment the +appropriate line for to select either one). + +The syntax is @code{\\bbarre #\"@var{fret number}\" @{ notes @} }. +" + doctitle = "Bar chords notation for Guitar (with Text Spanner)" +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %%%%%%% Cut here ----- Start 'bbarred.ly' + +%% C with slash ------------------------------- +cWithSlash = \markup { + \combine \roman C \translate #'(0.6 . -0.4) \draw-line #'(0 . 2.0) +} +%% Span ----------------------------------- +%% Syntax: \bbarre #"text" { notes } - text = any number of box +bbarre = +#(define-music-function (barre location str music) (string? ly:music?) + (let ((elts (extract-named-music music '(NoteEvent EventChord)))) + (if (pair? elts) + (let ((first-element (first elts)) + (last-element (last elts))) + (set! (ly:music-property first-element 'articulations) + (cons (make-music 'TextSpanEvent 'span-direction -1) + (ly:music-property first-element 'articulations))) + (set! (ly:music-property last-element 'articulations) + (cons (make-music 'TextSpanEvent 'span-direction 1) + (ly:music-property last-element 'articulations)))))) + #{ + \once \override TextSpanner #'font-size = #-2 + \once \override TextSpanner #'font-shape = #'upright + \once \override TextSpanner #'staff-padding = #3 + \once \override TextSpanner #'style = #'line + \once \override TextSpanner #'to-barline = ##f + \once \override TextSpanner #'bound-details = + #`((left + (text . ,#{ \markup { \draw-line #'( 0 . -.5) } #}) + (Y . 0) + (padding . 0.25) + (attach-dir . -2)) + (right + (text . ,#{ \markup { \cWithSlash #str } #}) + (Y . 0) + (padding . 0.25) + (attach-dir . 2))) +%% uncomment this line for make full barred + % \once \override TextSpanner #'bound-details #'left #'text = \markup { "B" #str } + $music + #}) + +%% %%%%%%% Cut here ----- End 'bbarred.ly' +%% Copy and change the last line for full barred. Rename in 'fbarred.ly' +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Syntaxe: \bbarre #"text" { notes } - text = any number of box +\relative c'{ \clef "G_8" \stemUp \bbarre #"III" { 16[ c' d c d8] } } diff --git a/Documentation/snippets/new/beam-endings-in-score-context.ly b/Documentation/snippets/new/beam-endings-in-score-context.ly deleted file mode 100644 index b622ac1a1d..0000000000 --- a/Documentation/snippets/new/beam-endings-in-score-context.ly +++ /dev/null @@ -1,43 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - texidoc = " -Beat structure rules specified in the @code{Score} context apply to all -staves, but can be modified at both @code{Staff} and @code{Voice} -levels: -" - doctitle = "Beam endings in Score context" -} - -\relative c'' { - \time 5/4 - % Set default beaming for all staves - \set Score.baseMoment = #(ly:make-moment 1 8) - \set Score.beatStructure = #'(3 4 3) - << - \new Staff { - c8 c c c c c c c c c - } - \new Staff { - % Modify beaming for just this staff - \set Staff.beatStructure = #'(6 4) - c8 c c c c c c c c c - } - \new Staff { - % Inherit beaming from Score context - << - { - \voiceOne - c8 c c c c c c c c c - } - % Modify beaming for this voice only - \new Voice { - \voiceTwo - \set Voice.beatStructure = #'(6 4) - a8 a a a a a a a a a - } - >> - } - >> -} diff --git a/Documentation/snippets/new/beam-grouping-in-7-8-time.ly b/Documentation/snippets/new/beam-grouping-in-7-8-time.ly deleted file mode 100644 index c33112b676..0000000000 --- a/Documentation/snippets/new/beam-grouping-in-7-8-time.ly +++ /dev/null @@ -1,20 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - texidoc = " -There is no default beat structure specified for 7/8 time, -so if automatic beams are required the structure must be specified. For -example, to group all beams 2-3-2 in 7/8 time, specify the -beat structure to be (2 3 2): -" - doctitle = "Beam grouping in 7/8 time" -} - -\relative c'' { - \time 7/8 - % rhythm 2-3-2 - a8 a a a a a a - \set Score.beatStructure = #'(2 3 2) - a8 a a a a a a -} diff --git a/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly b/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly index 47169a559b..1e6ffa7b9e 100644 --- a/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly +++ b/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text, tweaks-and-overrides, contexts-and-engravers" @@ -17,29 +17,23 @@ been shifted via @code{force-hshift}. #(define (Text_align_engraver ctx) (let ((scripts '()) (note-column #f)) - - `((acknowledgers - (note-column-interface - . ,(lambda (trans grob source) - ;; cache NoteColumn in this Voice context - (set! note-column grob))) - - (text-script-interface - . ,(lambda (trans grob source) - ;; whenever a TextScript is acknowledged, - ;; add it to `scripts' list - (set! scripts (cons grob scripts))))) - - (stop-translation-timestep - . ,(lambda (trans) - ;; if any TextScript grobs exist, - ;; set NoteColumn as X-parent - (and (pair? scripts) - (for-each (lambda (script) - (set! (ly:grob-parent script X) note-column)) - scripts)) - ;; clear scripts ready for next timestep - (set! scripts '())))))) + (make-engraver + (acknowledgers + ((note-column-interface trans grob source) + ;; cache NoteColumn in this Voice context + (set! note-column grob)) + ((text-script-interface trans grob source) + ;; whenever a TextScript is acknowledged, + ;; add it to `scripts' list + (set! scripts (cons grob scripts)))) + ((stop-translation-timestep trans) + ;; if any TextScript grobs exist, + ;; set NoteColumn as X-parent + (for-each (lambda (script) + (set! (ly:grob-parent script X) note-column)) + scripts) + ;; clear scripts ready for next timestep + (set! scripts '()))))) \layout { \context { diff --git a/Documentation/snippets/new/changing-the-ambitus-gap.ly b/Documentation/snippets/new/changing-the-ambitus-gap.ly deleted file mode 100644 index 982a447aa0..0000000000 --- a/Documentation/snippets/new/changing-the-ambitus-gap.ly +++ /dev/null @@ -1,40 +0,0 @@ -\version "2.14.0" -\header { - lsrtags = "pitches" - texidoc = "It is possible to change the default gap setting for -ambitus." - - doctitle = "Changing the ambitus gap" -} - - -\layout { - \context { - \Voice - \consists "Ambitus_engraver" - } -} - -\new Staff { - \time 2/4 - % Default setting - c'4 g'' -} - -\new Staff { - \time 2/4 - \override AmbitusLine #'gap = #0 - c'4 g'' -} - -\new Staff { - \time 2/4 - \override AmbitusLine #'gap = #1 - c'4 g'' -} - -\new Staff { - \time 2/4 - \override AmbitusLine #'gap = #1.5 - c'4 g'' -} diff --git a/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly b/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly deleted file mode 100644 index 8d7a6c16f5..0000000000 --- a/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly +++ /dev/null @@ -1,17 +0,0 @@ -\version "2.14.0" -\header { - lsrtags = "rhythms,expressive-marks" - texidoc = "This code demonstrates how to change the number of -augmentation dots on a single note." - doctitle = "Changing the number of augmentation dots per note" -} - -\relative c' { - c4.. a16 r2 | - \override Dots #'dot-count = #4 - c4.. a16 r2 | - \override Dots #'dot-count = #0 - c4.. a16 r2 | - \revert Dots #'dot-count - c4.. a16 r2 | -} diff --git a/Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly b/Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly deleted file mode 100644 index 9cccb9177a..0000000000 --- a/Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly +++ /dev/null @@ -1,31 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags="winds" - texidoc=" -The size and thickness of woodwind diagrams can be changed. -" - - doctitle = "Changing the size of woodwind diagrams" -} - -\relative c'' { - \textLengthOn - c1^\markup - \woodwind-diagram - #'piccolo - #'() - - c^\markup - \override #'(size . 1.5) { - \woodwind-diagram - #'piccolo - #'() - } - c^\markup - \override #'(thickness . 0.15) { - \woodwind-diagram - #'piccolo - #'() - } -} diff --git a/Documentation/snippets/new/changing-the-time-signature-without-affecting-the-beaming.ly b/Documentation/snippets/new/changing-the-time-signature-without-affecting-the-beaming.ly deleted file mode 100644 index d2bc6c98e8..0000000000 --- a/Documentation/snippets/new/changing-the-time-signature-without-affecting-the-beaming.ly +++ /dev/null @@ -1,19 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - texidoc = " -The @code{\\time} command sets the properties -@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} -and @code{measureLength} in the @code{Timing} context, which is -normally aliased to @code{Score}. Changing the value of -@code{timeSignatureFraction} causes the new time signature symbol to be -printed without changing any of the other properties: - -" - doctitle = "Changing the time signature without affecting the beaming" -} - -\markup { - This snippet is deprecated as of 2.13.5 and will be removed in 2.14 -} diff --git a/Documentation/snippets/new/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly b/Documentation/snippets/new/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly new file mode 100644 index 0000000000..0aff0ba5e7 --- /dev/null +++ b/Documentation/snippets/new/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly @@ -0,0 +1,39 @@ +\version "2.16.0" + +\header { + lsrtags = "workaround, contexts-and-engravers, contemporary-notation, rhythms" + + doctitle = "Changing time signatures inside a polymetric section using \\scaleDurations" +} + + +\layout { + \context { + \Score + \remove "Timing_translator" + \remove "Default_bar_line_engraver" + } + \context { + \Staff + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } +} + +<< + \new Staff { + \scaleDurations 8/5 { + \time 6/8 + \set Timing.measureLength = #(ly:make-moment 6 5) + b8 b b b b b + \time 2/4 + \set Timing.measureLength = #(ly:make-moment 4 5) + b4 b + } + } + \new Staff { + \clef bass + \time 2/4 + c2 d e f + } +>> diff --git a/Documentation/snippets/new/chant-or-psalms-notation.ly b/Documentation/snippets/new/chant-or-psalms-notation.ly new file mode 100644 index 0000000000..3351cd2d38 --- /dev/null +++ b/Documentation/snippets/new/chant-or-psalms-notation.ly @@ -0,0 +1,37 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers, specific-notation" + + texidoc = " +This form of notation is used for the chant of the Psalms, where verses +aren't always the same length. + +" + doctitle = "Chant or psalms notation" +} + +stemOn = { + \revert Staff.Stem #'transparent + \revert Staff.Flag #'transparent +} + +stemOff = { + \override Staff.Stem #'transparent = ##t + \override Staff.Flag #'transparent = ##t +} + +\score { + \new Staff \with { \remove "Time_signature_engraver" } + { + \key g \minor + \cadenzaOn + \stemOff a'\breve bes'4 g'4 + \stemOn a'2 \bar "||" + \stemOff a'\breve g'4 a'4 + \stemOn f'2 \bar "||" + \stemOff a'\breve^\markup { \italic flexe } + \stemOn g'2 \bar "||" + } +} + diff --git a/Documentation/snippets/new/chord-glissando-in-tablature.ly b/Documentation/snippets/new/chord-glissando-in-tablature.ly deleted file mode 100644 index ff329e0c7a..0000000000 --- a/Documentation/snippets/new/chord-glissando-in-tablature.ly +++ /dev/null @@ -1,29 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -Slides for chords can be indicated in both Staff and TabStaff. -String numbers are necessary for TabStaff because automatic -string calculations are different for chords and for single notes, -and @code{\chordGlissando} draws lines between single notes. -" - doctitle = "Chord glissando in tablature" -} - -myMusic = \relative c' { - \chordGlissando - 8 -} - -\score { - << - \new Staff { - \clef "treble_8" - \myMusic - } - \new TabStaff { - \myMusic - } - >> -} diff --git a/Documentation/snippets/new/chordchanges-for-fretboards.ly b/Documentation/snippets/new/chordchanges-for-fretboards.ly deleted file mode 100644 index e8e8236d41..0000000000 --- a/Documentation/snippets/new/chordchanges-for-fretboards.ly +++ /dev/null @@ -1,23 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = "FretBoards can be set to display only when the chord changes -or at the beginning of a new line." - doctitle = "chordChanges for FretBoards" -} - -\include "predefined-guitar-fretboards.ly" - -myChords = \chordmode { - c1 c1 \break - \set chordChanges = ##t - c1 c1 \break - c1 c1 \break -} - -<< - \new ChordNames { \myChords } - \new FretBoards { \myChords } - \new Staff { \myChords } ->> diff --git a/Documentation/snippets/new/chords-headword.ly b/Documentation/snippets/new/chords-headword.ly index 9a8949b3e3..29fe905a43 100644 --- a/Documentation/snippets/new/chords-headword.ly +++ b/Documentation/snippets/new/chords-headword.ly @@ -1,13 +1,7 @@ -\version "2.14.0" -#(set-global-staff-size 15) -\paper { - ragged-right = ##f - line-width = 15\cm - indent = 0\cm -} +\version "2.16.0" \header { - lsrtags = "headwords" + lsrtags = "headword" texidoc = "" doctitle = "headword" } @@ -77,7 +71,7 @@ Bass = { \context Staff = lower { \new Voice { \clef bass - #(set-accidental-style 'modern-cautionary) + \accidentalStyle "modern-cautionary" << \Tenor \Bass diff --git a/Documentation/snippets/new/clip-systems.ly b/Documentation/snippets/new/clip-systems.ly deleted file mode 100644 index ebf8cdea9b..0000000000 --- a/Documentation/snippets/new/clip-systems.ly +++ /dev/null @@ -1,88 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "paper-and-layout" - - texidoc = " -This code shows how to clip (extract) snippets from a full score. - -This file needs to be run separately with @code{-dclip-systems}; the -snippets page may not adequately show the results. - -The result will be files named -@samp{base-from-start-to-end[-count].eps}. - - -If system starts and ends are included, they include extents of the -System grob, e.g., instrument names. - - -Grace notes at the end point of the region are not included. - - -Regions can span multiple systems. In this case, multiple EPS files -are generated. - -" - doctitle = "Clip systems" -} - -#(ly:set-option 'clip-systems) -#(define output-suffix "1") - -origScore = \score { - \relative c' { - \set Staff.instrumentName = #"bla" - c1 - d1 - \grace c16 e1 - \key d \major - f1 \break - \clef bass - g,1 - fis1 - } -} - -\book { - \score { - \origScore - \layout { - % Each clip-region is a (START . END) pair - % where both are rhythmic-locations. - - % (make-rhythmic-locations BAR-NUMBER NUM DEN) - % means NUM/DEN whole-notes into bar numbered BAR-NUMBER - - clip-regions = #(list - (cons - (make-rhythmic-location 2 0 1) - (make-rhythmic-location 4 0 1)) - - (cons - (make-rhythmic-location 0 0 1) - (make-rhythmic-location 4 0 1)) - - (cons - (make-rhythmic-location 0 0 1) - (make-rhythmic-location 6 0 1)) - ) - } - } -} - -#(ly:set-option 'clip-systems #f) -#(define output-suffix #f) - -\book { - \score { \origScore } - \markup { \bold \fontsize #6 clips } - \score { - \lyrics { - \markup { from-2.0.1-to-4.0.1-clip.eps } - \markup { - \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" - (ly:parser-output-name parser)) } - } - } -} diff --git a/Documentation/snippets/new/compound-time-signatures.ly b/Documentation/snippets/new/compound-time-signatures.ly deleted file mode 100644 index 04dc1c2359..0000000000 --- a/Documentation/snippets/new/compound-time-signatures.ly +++ /dev/null @@ -1,31 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - texidoc = " -Odd 20th century time signatures (such as \"5/8\") can often be played -as compound time signatures (e.g. \"3/8 + 2/8\"), which combine two or -more inequal metrics. LilyPond can make such music quite easy to read -and play, by explicitly printing the compound time signatures and -adapting the automatic beaming behavior. (Graphic measure grouping -indications can also be added; see the appropriate snippet in this -database.) -" - doctitle = "Compound time signatures" -} - -#(define ((compound-time one two num) grob) - (grob-interpret-markup grob - (markup #:override '(baseline-skip . 0) #:number - (#:line ((#:column (one num)) - #:vcenter "+" - (#:column (two num))))))) - -\relative c' { - \override Staff.TimeSignature #'stencil = #(compound-time "2" "3" "8") - \time 5/8 - \set Staff.beatStructure = #'(2 3) - c8 d e fis gis - c8 fis, gis e d - c8 d e4 gis8 -} diff --git a/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly b/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly index 72ce8c800c..c833826109 100644 --- a/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly +++ b/Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" @@ -8,15 +8,14 @@ Beat grouping within a measure is controlled by the context property established for many time signatures in @file{scm/time-signature-settings.scm}. Values of @code{beatStructure} can be changed or set with @code{\set}. -Alternatively, the -Scheme function @code{set-time-signature} can be used to both +Alternatively, @code{\time} can be used to both set the time signature and establish the beat structure. -@code{set-time-signature}, takes three arguments: the -number of beats, the beat length, and the internal grouping of beats in -the measure. @code{\time} and @code{set-time-signature} both apply -to the @code{Timing} context, so they will not reset values of -@code{beatStructure} or @code{baseMoment} that are set in -other lower-level contexts, such as @code{Voice}. +For this, you specify the internal grouping of beats in a measure +as a list of numbers (in Scheme syntax) before the time signature. + +@code{\time} applies to the @code{Timing} context, so it will not +reset values of @code{beatStructure} or @code{baseMoment} that are set +in other lower-level contexts, such as @code{Voice}. If the @code{Measure_grouping_engraver} is included in one of the display contexts, measure grouping signs will be @@ -36,7 +35,7 @@ is grouped according to the default setting in g8 g d d g g a( bes g) | \set Timing.beatStructure = #'(2 2 2 3) g8 g d d g g a( bes g) | - #(set-time-signature 9 8 '(4 5)) + \time #'(4 5) 9/8 g8 g d d g g a( bes g) | \time 5/8 a4. g4 | diff --git a/Documentation/snippets/new/controlling-spanner-visibility-after-a-line-break.ly b/Documentation/snippets/new/controlling-spanner-visibility-after-a-line-break.ly deleted file mode 100644 index 8c9c8ce80a..0000000000 --- a/Documentation/snippets/new/controlling-spanner-visibility-after-a-line-break.ly +++ /dev/null @@ -1,37 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "expressive-marks, tweaks-and-overrides" - texidoc = "The visibility of spanners which end on the first note -following a line break is controlled by the @code{after-line-breaking} -callback @code{ly:spanner::kill-zero-spanned-time}. - -For objects such as glissandos and hairpins, the default behaviour is -to hide the spanner after a break; disabling the callback will allow -the left-broken span to be shown. - -Conversely, spanners which are usually visible, such as text spans, -can be hidden by enabling the callback. -" - - doctitle = "Controlling spanner visibility after a line break" -} - -\paper { ragged-right = ##t } - -\relative c'' { - \override Hairpin #'to-barline = ##f - \override Glissando #'breakable = ##t - % show hairpin - \override Hairpin #'after-line-breaking = ##t - % hide text span - \override TextSpanner #'after-line-breaking = - #ly:spanner::kill-zero-spanned-time - e2\<\startTextSpan - % show glissando - \override Glissando #'after-line-breaking = ##t - f2\glissando - \break - f,1\!\stopTextSpan -} - diff --git a/Documentation/snippets/new/creating-a-sequence-of-notes-on-various-pitches.ly b/Documentation/snippets/new/creating-a-sequence-of-notes-on-various-pitches.ly new file mode 100644 index 0000000000..ea2d8305a9 --- /dev/null +++ b/Documentation/snippets/new/creating-a-sequence-of-notes-on-various-pitches.ly @@ -0,0 +1,27 @@ +\version "2.16.0" + +\header { + lsrtags = "pitches, real-music, really-cool, scheme-language" + + texidoc = " +In music that contains many occurrences of the same sequence of notes +at different pitches, the following music function may prove useful. +It takes a note, of which only the pitch is used. This example +creates the rhythm used throughout Mars, from Gustav Holst's The +Planets. + +" + doctitle = "Creating a sequence of notes on various pitches" +} + +rhythm = +#(define-music-function (parser location p) (ly:pitch?) + "Make the rhythm in Mars (the Planets) at the given pitch" + #{ \times 2/3 { $p 8 $p $p } $p 4 $p $p 8 $p $p 4 #}) + +\new Staff { + \time 5/4 + \rhythm c' + \rhythm c'' + \rhythm g +} diff --git a/Documentation/snippets/new/cross-staff-stems.ly b/Documentation/snippets/new/cross-staff-stems.ly new file mode 100644 index 0000000000..ed3650496a --- /dev/null +++ b/Documentation/snippets/new/cross-staff-stems.ly @@ -0,0 +1,36 @@ +\version "2.16.0" + +\header { + lsrtags = "staff-notation, tweaks-and-overrides, contexts-and-engravers" + texidoc = " +This snippet shows the use of the @code{Span_stem_engraver} +and @code{\crossStaff} to connect stems across staves automatically. +The stem length need not be specified, as the variable distance +between noteheads and staves is calculated automatically. +" + doctitle = "Cross staff stems" +} + +\layout { + \context { + \PianoStaff + \consists #Span_stem_engraver + } +} + +{ + \new PianoStaff << + \new Staff { + 4 r d'16\> e'8. g8 r\! + e'8 f' g'4 e'2 + } + \new Staff { + \clef bass + \voiceOne + \autoBeamOff + \crossStaff { 4 e, g16 a8. c8} d + \autoBeamOn + g8 f g4 c2 + } + >> +} diff --git a/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly b/Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly similarity index 91% rename from Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly rename to Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly index 379dc69147..84642a20da 100644 --- a/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly +++ b/Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -21,10 +21,6 @@ %%% Grob utilities %%% %%% These are literal rewrites of some C++ methods used by the ambitus engraver. -#(define (ly:event::in-event-class event class-name) - "Check if @var{event} the given class. -Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}." - (memq class-name (ly:make-event-class (ly:event-property event 'class)))) #(define (ly:separation-item::add-conditional-item grob grob-item) "Add @var{grob-item} to the array of conditional elements of @var{grob}. @@ -188,7 +184,7 @@ position of middle C and key signature from @var{translator}'s context." ;; Get the event that caused the note-grob creation ;; and check that it is a note-event. (let ((note-event (ly:grob-property note-grob 'cause))) - (if (ly:event::in-event-class note-event 'note-event) + (if (ly:in-event-class? note-event 'note-event) ;; get the pitch from the note event (let ((pitch (ly:event-property note-event 'pitch))) ;; if this pitch is lower than the current ambitus lower @@ -292,23 +288,24 @@ position of middle C and key signature from @var{translator}'s context." (lambda (context) (let ((ambitus #f)) ;; when music is processed: make the ambitus object, if not already built - `((process-music . ,(lambda (translator) - (if (not ambitus) - (set! ambitus (make-ambitus translator))))) - ;; set the ambitus clef and key signature state - (stop-translation-timestep . ,(lambda (translator) - (if ambitus - (initialize-ambitus-state ambitus translator)))) - ;; when a note-head grob is built, update the ambitus notes - (acknowledgers - (note-head-interface . ,(lambda (engraver grob source-engraver) - (if ambitus - (update-ambitus-notes ambitus grob))))) - ;; finally, typeset the ambitus according to its upper and lower notes - ;; (if any). - (finalize . ,(lambda (translator) - (if ambitus - (typeset-ambitus ambitus translator)))))))) + (make-engraver + ((process-music translator) + (if (not ambitus) + (set! ambitus (make-ambitus translator)))) + ;; set the ambitus clef and key signature state + ((stop-translation-timestep translator) + (if ambitus + (initialize-ambitus-state ambitus translator))) + ;; when a note-head grob is built, update the ambitus notes + (acknowledgers + ((note-head-interface engraver grob source-engraver) + (if ambitus + (update-ambitus-notes ambitus grob)))) + ;; finally, typeset the ambitus according to its upper and lower notes + ;; (if any). + ((finalize translator) + (if ambitus + (typeset-ambitus ambitus translator))))))) %%% %%% Example diff --git a/Documentation/snippets/new/defining-predefined-fretboards-for-other-instruments.ly b/Documentation/snippets/new/defining-predefined-fretboards-for-other-instruments.ly deleted file mode 100644 index 11a3914d57..0000000000 --- a/Documentation/snippets/new/defining-predefined-fretboards-for-other-instruments.ly +++ /dev/null @@ -1,167 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - -%% Translation of GIT committish: cde045f4e833aa491fb63f2222e14bef49507577 - texidoces = " - -Se pueden añadir diagramas de posiciones predefinidas para -instrumentos nuevos además de los estándar que se usan para la -guitarra. Este archivo muestra cómo se hace, definiendo una afinación -nueva y unas cuantas posiciones para el cuatro venezolano. - -Este archivo también muestra cómo se pueden incluir las digitaciones -en los acordes que se usan como puntos de referencia para la búsqueda -de acordes en la tabla, y mostrarse en el diagrama de posiciones y la -tablatura @code{TabStaff}, pero no en la música. - -Estas posiciones no se pueden transportar porque contienen información -de las cuerdas. Hay planes para corregir esto en un futuro. - -" - doctitlees = "Definición de posiciones predefinidas para otros instrumentos" - - -%% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e - texidocde = " -Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden -neben denen, die schon für die Gitarre definiert sind. Dieses Schnipsel -zeigt, wie man eine neue Saitenstimmung definiert und dann eigene vordefinierte -Bunddiagramme bestimmt. Das Beispiel ist für das venezualische Cuatro. - -Dieses Schnipsel zeigt auch, wie Fingersatz in die Akkorde eingebunden -werden kann, um als Referenzpunkt für die Akkordauswahl benutzt werden -kann. Dieser Fingersatz wird im Bunddiagramm und in der Tabulatur, -aber nicht in den Noten angezeigt. - -Diese Bunddiagramme sind nicht transponierbar, weil sie Saiteninformationen -enthalten. Das soll in der Zukunft verbessert werden. - -" - doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - - texidocfr = " -La liste des diagrammes standards prédéfinis pour la guitare peut être -augmentée d'autres définitions spécifiques à d'autres instruments. -Voici comment définir un nouvel accordage ainsi que quelques diagrammes -prédéfinis pour le @qq{cuatro vénézuélien}. - -Cet exemple illustre aussi la manière d'ajouter des doigtés aux -accords ; ils serviront de référence pour la boucle d'accord et seront -indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique. - -Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils -contiennent des informations sur les cordes. Ceci est amené à évoluer. - -" - doctitlefr = "Création de diagrammes de fret prédéfinis pour d'autres instruments" - - - texidoc = " -Predefined fret diagrams can be added for new instruments in addition -to the standards used for guitar. This file shows how this is done by -defining a new string-tuning and a few predefined fretboards for the -Venezuelan cuatro. - -This file also shows how fingerings can be included in the chords used -as reference points for the chord lookup, and displayed in the fret -diagram and the @code{TabStaff}, but not the music. - - -These fretboards are not transposable because they contain string -information. This is planned to be corrected in the future. - -" - doctitle = "Defining predefined fretboards for other instruments" -} - -% add FretBoards for the Cuatro -% Note: This section could be put into a separate file -% predefined-cuatro-fretboards.ly -% and \included into each of your compositions - -cuatroTuning = #`(,(ly:make-pitch 0 6 0) - ,(ly:make-pitch 1 3 SHARP) - ,(ly:make-pitch 1 1 0) - ,(ly:make-pitch 0 5 0)) - -dSix = { } -dMajor = { } -aMajSeven = { } -dMajSeven = { } -gMajor = { } - -\storePredefinedDiagram #default-fret-table \dSix - #cuatroTuning - #"o;o;o;o;" -\storePredefinedDiagram #default-fret-table \dMajor - #cuatroTuning - #"o;o;o;3-3;" -\storePredefinedDiagram #default-fret-table \aMajSeven - #cuatroTuning - #"o;2-2;1-1;2-3;" -\storePredefinedDiagram #default-fret-table \dMajSeven - #cuatroTuning - #"o;o;o;1-1;" -\storePredefinedDiagram #default-fret-table \gMajor - #cuatroTuning - #"2-2;o;1-1;o;" - -% end of potential include file /predefined-cuatro-fretboards.ly - - -#(set-global-staff-size 16) - -primerosNames = \chordmode { - d:6 d a:maj7 d:maj7 - g -} -primeros = { - \dSix \dMajor \aMajSeven \dMajSeven - \gMajor -} - -\score { - << - \new ChordNames { - \set chordChanges = ##t - \primerosNames - } - - \new Staff { - \new Voice \with { - \remove "New_fingering_engraver" - } - \relative c'' { - \primeros - } - } - - \new FretBoards { - \set stringTunings = #cuatroTuning -% \override FretBoard -% #'(fret-diagram-details string-count) = #'4 - \override FretBoard - #'(fret-diagram-details finger-code) = #'in-dot - \primeros - } - - \new TabStaff \relative c'' { - \set TabStaff.stringTunings = #cuatroTuning - \primeros - } - - >> - - \layout { - \context { - \Score - \override SpacingSpanner - #'base-shortest-duration = #(ly:make-moment 1 16) - } - } - \midi { } -} diff --git a/Documentation/snippets/new/displaying-complex-chords.ly b/Documentation/snippets/new/displaying-complex-chords.ly deleted file mode 100644 index f2426dcc4c..0000000000 --- a/Documentation/snippets/new/displaying-complex-chords.ly +++ /dev/null @@ -1,25 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "simultaneous-notes, chords" - texidoc = " -Here is a way to display a chord where the same note is played twice -with different accidentals. -" - doctitle = "Displaying complex chords" -} - -fixA = { - \once \override Stem #'length = #9 -} -fixB = { - \once \override NoteHead #'X-offset = #1.7 - \once \override Stem #'rotation = #'(45 0 0) - \once \override Stem #'extra-offset = #'(-0.2 . -0.2) - \once \override Stem #'flag-style = #'no-flag - \once \override Accidental #'extra-offset = #'(4 . 0) -} - -\relative c' { - << { \fixA 8 } \\ { \voiceThree \fixB dis } >> s -} diff --git a/Documentation/snippets/new/displaying-grob-ancestry.ly b/Documentation/snippets/new/displaying-grob-ancestry.ly deleted file mode 100644 index 3cee26c5da..0000000000 --- a/Documentation/snippets/new/displaying-grob-ancestry.ly +++ /dev/null @@ -1,132 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "tweaks-and-overrides" - - texidoc = " -When working with grob callbacks, it can be helpful to understand a -grob's @qq{ancestry}. Most grobs have @qq{parents} which influence the -positioning of the grob. X- and Y-parents influence the horizontal and -vertical positions for the grob, respectively. Additionally, each -parent may have parents of its own. - - -Unfortunately, there are several aspects of a grob's ancestry that can -lead to confusion: - - -@itemize - -@item -The types of parents a grob has may depend on context. - -@item -For some grobs, the X- and Y-parents are the same. - -@item -A particular @qq{ancestor} may be related to a grob in multiple ways. - -@item -The concept of @qq{generations} is misleading. - -@end itemize - - -For example, the @code{System} grob can be both parent (on the Y-side) -and grandparent (twice on the X-side) to a @code{VerticalAlignment} -grob. - - -This macro prints (to the console) a textual representation of a grob's -ancestry. - - -When called this way - -@example -@{ - \\once \\override NoteHead #'before-line-breaking = #display-ancestry - c4 -@} -@end example - - -The following output is generated: - - -@example ------------------------------------- - -NoteHead X,Y: NoteColumn - X: PaperColumn - X,Y: System - Y: VerticalAxisGroup - X: NonMusicalPaperColumn - X,Y: System - Y: VerticalAlignment - X: NonMusicalPaperColumn - X,Y: System - Y: System -@end example - - -" - doctitle = "Displaying grob ancestry" -} - -#(define (grob-name grob) - (if (ly:grob? grob) - (assoc-ref (ly:grob-property grob 'meta) 'name) - #f)) - -#(define (get-ancestry grob) - (if (not (null? (ly:grob-parent grob X))) - (list (grob-name grob) - (get-ancestry (ly:grob-parent grob X)) - (get-ancestry (ly:grob-parent grob Y))) - (grob-name grob))) - -#(define (format-ancestry lst padding) - (string-append - (symbol->string (car lst)) - "\n" - (let ((X-ancestry - (if (list? (cadr lst)) - (format-ancestry (cadr lst) (+ padding 3)) - (symbol->string (cadr lst)))) - (Y-ancestry - (if (list? (caddr lst)) - (format-ancestry (caddr lst) (+ padding 3)) - (symbol->string (caddr lst))))) - (if (equal? X-ancestry Y-ancestry) - (string-append - (format #f "~&") - (make-string padding #\space) - "X,Y: " - (if (list? (cadr lst)) - (format-ancestry (cadr lst) (+ padding 5)) - (symbol->string (cadr lst)))) - (string-append - (format #f "~&") - (make-string padding #\space) - "X: " X-ancestry - "\n" - (make-string padding #\space) - "Y: " Y-ancestry - (format #f "~&")))) - (format #f "~&"))) - -#(define (display-ancestry grob) - (display - (string-append - (format #f "~3&~a~2%" (make-string 36 #\-)) - (format-ancestry (get-ancestry grob) 0) - (format #f "~2&")))) - -\relative c' { - \once \override NoteHead #'before-line-breaking = #display-ancestry - f4 - \once \override Accidental #'before-line-breaking = #display-ancestry - \once \override Arpeggio #'before-line-breaking = #display-ancestry - 4\arpeggio -} diff --git a/Documentation/snippets/new/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly b/Documentation/snippets/new/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly deleted file mode 100644 index cb3e2ffa39..0000000000 --- a/Documentation/snippets/new/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly +++ /dev/null @@ -1,23 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "pitches" - texidoc = " -In early 20th century works, starting with Schoenberg, Berg and Webern -(the @qq{Second} Viennese school), every pitch in the twelve-tone scale -has to be regarded as equal, without any hierarchy such as the -classical (tonal) degrees. Therefore, these composers print one -accidental for each note, even at natural pitches, to emphasize their -new approach to music theory and language. - -This snippet shows how to achieve such notation rules. - -" - doctitle = "Dodecaphonic-style accidentals for each note including naturals" -} - -\markup { - This snippet is deprecated as of version 2.12 and - will be removed from the documentation in 2.14. -} - diff --git a/Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly b/Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly deleted file mode 100644 index 57f22712fb..0000000000 --- a/Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly +++ /dev/null @@ -1,35 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "expressive-marks, tweaks-and-overrides" - texidoc = "Postfix functions for custom crescendo text spanners. The spanners -should start on the first note of the measure. One has to use -\mycresc, -otherwise the spanner start will rather be assigned to the next note. -" - doctitle = "Dynamics custom text spanner postfix" -} - -% Two functions for (de)crescendo spanners where you can explicitly give the -% spanner text. -mycresc = -#(define-music-function (parser location mymarkup) (markup?) - (make-music 'CrescendoEvent - 'span-direction START - 'span-type 'text - 'span-text mymarkup)) -mydecresc = -#(define-music-function (parser location mymarkup) (markup?) - (make-music 'DecrescendoEvent - 'span-direction START - 'span-type 'text - 'span-text mymarkup)) - -\relative c' { - c4-\mycresc "custom cresc" c4 c4 c4 | - c4 c4 c4 c4 | - c4-\mydecresc "custom decresc" c4 c4 c4 | - c4 c4\! c4 c4 -} - - - diff --git a/Documentation/snippets/new/dynamics-text-spanner-postfix.ly b/Documentation/snippets/new/dynamics-text-spanner-postfix.ly deleted file mode 100644 index 5f1187ec18..0000000000 --- a/Documentation/snippets/new/dynamics-text-spanner-postfix.ly +++ /dev/null @@ -1,25 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "expressive-marks, tweaks-and-overrides" - texidoc = "Custom text spanners can be defined and used with hairpin - and text crescendos. @code{\<} and @code{\>} produce hairpins by - default, @code{\cresc} etc. produce text spanners by default." - doctitle = "Dynamics text spanner postfix" -} - -% Some sample text dynamic spanners, to be used as postfix operators -crpoco = -#(make-music 'CrescendoEvent - 'span-direction START - 'span-type 'text - 'span-text "cresc. poco a poco") - -\relative c' { - c4\cresc d4 e4 f4 | - g4 a4\! b4\crpoco c4 | - c4 d4 e4 f4 | - g4 a4\! b4\< c4 | - g4\dim a4 b4\decresc c4\! -} - diff --git a/Documentation/snippets/new/editorial-headword.ly b/Documentation/snippets/new/editorial-headword.ly deleted file mode 100644 index 89f7c0b736..0000000000 --- a/Documentation/snippets/new/editorial-headword.ly +++ /dev/null @@ -1,99 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% NR 1.7 Editorial annotations - -% Beethoven, Op. 31, No. 3 -% Piano sonata 18, Movt II, Scherzo -% Measures 9 - 14 - -\new PianoStaff << - - % RH Staff - \new Staff { - \clef treble - \key af \major - \time 2/4 - \set Staff.fingeringOrientations = #'(up) - \set Score.currentBarNumber = #9 - \partial 8 - 8 \staccato - | - \set doubleSlurs = ##t - 4 ( - 8 \staccato ) - \noBeam - c''8-5 \staccato \pp - | - \set doubleSlurs = ##f - bf'8.. ( - af'32 - g'8 ) \staccato - f'8 \staccato - | - e'4-2 - r8 - \once \override Script #'script-priority = #-100 - \afterGrace - f'8 ( \trill ^ \markup { \finger "3-2" } - { e'16 [ f'16 ] } - | - g'8..-3 - f'32 - e'8-1 ) \staccato - d'8-2 \staccato - | - c'4 - r4 - } - - % LH Staff - \new Staff { - \key af \major - \clef treble - \override Fingering #'direction = #down - \set Staff.fingeringOrientations = #'(down) - \partial 8 - 8 \staccato - \set doubleSlurs = ##t - 4 ( - 8 ) \staccato - \noBeam - \clef bass - c'8-1 \staccato - | - \set doubleSlurs = ##f - bf8.. ( - af32 - g8-1 ) \staccato - f8 \staccato - | - e4 - r8 - \afterGrace - f8 ( \trill _ \markup { \finger "2-1" } - { e16 [ f16 ] } - | - g8..-1 - f32 - e8 ) \staccato - d8 \staccato - | - c4 - r4 - } - ->> diff --git a/Documentation/snippets/new/engravers-one-by-one.ly b/Documentation/snippets/new/engravers-one-by-one.ly deleted file mode 100644 index 0492561f7c..0000000000 --- a/Documentation/snippets/new/engravers-one-by-one.ly +++ /dev/null @@ -1,273 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "contexts-and-engravers" - - texidoc = " -The notation problem, creating a certain symbol, is handled by plugins. - Each plugin is called an Engraver. In this example, engravers are -switched on one by one, in the following order: - -- note heads, - - -- staff symbol, - - -- clef, - - -- stem, - - -- beams, slurs, accents, - - -- accidentals, bar lines, time signature and key signature. - - - -Engravers are grouped. For example, note heads, slurs, beams etc. form -a @code{Voice} context. Engravers for key signature, accidentals, bar -line, etc. form a @code{Staff} context. - -" - doctitle = "Engravers one-by-one" -} % begin verbatim - - -%% sample music -topVoice = \relative c' { - \key d \major - es8([ g] a[ fis]) - b4 - b16[-. b-. b-. cis-.] - d4-> -} - -botVoice = \relative c' { - \key d \major - c8[( f] b[ a)] - es4 - es16[-. es-. es-. fis-.] - b4-> -} - -hoom = \relative c { - \key d \major - \clef bass - g8-. r - r4 - fis8-. - r8 - r4 - b'4-> -} - -pah = \relative c' { - r8 b-. - r4 - r8 g8-. - r16 g-. r8 - \clef treble - fis'4-> -} - -% -% setup for Request->Element conversion. Guru-only -% - -MyStaff = \context { - \type "Engraver_group" - \name Staff - - \description "Handles clefs, bar lines, keys, accidentals. It can contain -@code{Voice} contexts." - - \consists "Output_property_engraver" - - \consists "Font_size_engraver" - - \consists "Volta_engraver" - \consists "Separating_line_group_engraver" - \consists "Dot_column_engraver" - - \consists "Ottava_spanner_engraver" - \consists "Rest_collision_engraver" - \consists "Piano_pedal_engraver" - \consists "Piano_pedal_align_engraver" - \consists "Instrument_name_engraver" - \consists "Grob_pq_engraver" - \consists "Forbid_line_break_engraver" - \consists "Axis_group_engraver" - - \consists "Pitch_squash_engraver" - - localKeySignature = #'() - - % explicitly set instrumentName, so we don't get - % weird effects when doing instrument names for - % piano staves - - instrumentName = #'() - shortInstrumentName = #'() - - \accepts "Voice" -} - - -MyVoice = \context { - \type "Engraver_group" - \name Voice - - \description " - Corresponds to a voice on a staff. This context handles the - conversion of dynamic signs, stems, beams, super- and subscripts, - slurs, ties, and rests. - - You have to instantiate this explicitly if you want to have - multiple voices on the same staff." - - localKeySignature = #'() - \consists "Font_size_engraver" - - % must come before all - \consists "Output_property_engraver" - \consists "Arpeggio_engraver" - \consists "Multi_measure_rest_engraver" - \consists "Text_spanner_engraver" - \consists "Grob_pq_engraver" - \consists "Note_head_line_engraver" - \consists "Glissando_engraver" - \consists "Ligature_bracket_engraver" - \consists "Breathing_sign_engraver" - % \consists "Rest_engraver" - \consists "Grace_beam_engraver" - \consists "New_fingering_engraver" - \consists "Chord_tremolo_engraver" - \consists "Percent_repeat_engraver" - \consists "Slash_repeat_engraver" - - %{ - Must come before text_engraver, but after note_column engraver. - %} - \consists "Text_engraver" - \consists "Dynamic_engraver" - \consists "Fingering_engraver" - - \consists "Script_column_engraver" - \consists "Rhythmic_column_engraver" - \consists "Cluster_spanner_engraver" - \consists "Tie_engraver" - \consists "Tie_engraver" - \consists "Tuplet_engraver" - \consists "Note_heads_engraver" - \consists "Rest_engraver" -} - - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - - -MyStaff = \context { - \MyStaff - \consists "Staff_symbol_engraver" -} - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - -MyStaff = \context { - \MyStaff - \consists "Clef_engraver" - \remove "Pitch_squash_engraver" -} - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - -MyVoice = \context { - \MyVoice - \consists "Stem_engraver" -} - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - -MyVoice = \context { - \MyVoice - \consists "Beam_engraver" -} - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - -MyVoice = \context { - \MyVoice - \consists "Phrasing_slur_engraver" - \consists "Slur_engraver" - \consists "Script_engraver" -} - - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - -MyStaff = \context { - \MyStaff - \consists "Bar_engraver" - \consists "Time_signature_engraver" -} - -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - -MyStaff = \context { - \MyStaff - \consists "Accidental_engraver" - \consists "Key_engraver" -} -\score { - \topVoice - \layout { - \context { \MyStaff } - \context { \MyVoice } - } -} - diff --git a/Documentation/snippets/new/expressive-headword.ly b/Documentation/snippets/new/expressive-headword.ly deleted file mode 100644 index 8c1f821ba3..0000000000 --- a/Documentation/snippets/new/expressive-headword.ly +++ /dev/null @@ -1,270 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 1.3 Expressive marks - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% L. v. Beethoven, Op. 49 no. 1 -% Piano sonata 19 - "Leichte Sonate" -% measures 1 - 12 - -%\layout { -% \context { -% \Score -% \override SpacingSpanner #'base-shortest-duration = -% #(ly:make-moment 1 20) -% } -%} - -\new PianoStaff << - - % RH Staff - \new Staff { - \clef treble - \key g \major - \time 6/8 - \partial 2 - \once \override TextScript #'staff-padding = #2 - d'8 \staccato - ^ \markup { \column { - RONDO - \italic Allegro } } - d'8 \staccato - g'8 \staccato - a'8 \staccato - - | - - b'8 [ ( - g'8 ] ) - e'8 \staccato - e' \staccato - a'8 \staccato - b'8 \staccato - - | - - c''8 [ ( - a'8 ] ) - e''8 \staccato - d''8 \staccato - c''8 \staccato - b'8 \staccato - - | - - a'8 \staccato - g'8 \staccato - a'8 \staccato - \acciaccatura { g'16 [ a'16 ] } - bf'8 - a'8 \staccato - g'8 \staccato - - | - - fs'8 [ ( - d'8 ] ) - d'8 \staccato - d'8 \staccato - g'8 \staccato - a'8 \staccato - - | - - b'8 [ ( - g'8 ] ) - e'8 \staccato - e'8 \staccato - a'8 \staccato - b'8 \staccato - - | - - c''8 [ ( - a'8 ] ) - e''8 \staccato - d''8 \staccato - c''8 \staccato - b'8 \staccato - - | - - a'8 \staccato - g'8 \staccato - a'8 \staccato - << - { - \voiceOne - d'8 - g'8 - fs'8 - \oneVoice - } - \new Voice { - \voiceTwo - d'4 - c'8 - \oneVoice - } - >> - - | - - 4 \tenuto - d'8 \staccato - g'8 \staccato - b'8 \staccato - d''8 \staccato - - | - - d''8 ( - 8 \staccato ) - 8 \staccato - d''8 ( - 8 \staccato ) - 8 \staccato - - | - - d''8 ( - 8 \staccato ) - 8 \staccato - d''8 ( - 8 \staccato ) - 8 \staccato - - | - - d''8 \staccato - 8 \staccato - 8 \staccato - d'' \staccato - 8 \staccato - 8 \staccato - - | - - 4 \fermata - r8 r4 r8 - } - - % LH Staff - \new Staff { - \clef bass - \key g \major - \time 6/8 - \partial 2 - r8 - r8 - 8 \staccato - 8 \staccato - - | - - 4 - r8 - r8 - 8 \staccato - 8 \staccato - - | - - 4 - r8 - r8 - 8 \staccato - 8 \staccato - - | - - 8 \staccato - 8 \staccato - 8 \staccato - 4. ( - - | - - d'4 ) - r8 - r8 - 8 \staccato - 8 \staccato - - | - - 4 - r8 - r8 - 8 \staccato - 8 \staccato - - | - - 4 - r8 - r8 - 8 \staccato - 8 \staccato - - | - - 8 \staccato - 8 \staccato - 8 \staccato - 4 - 8 \staccato - - | - - 4 \tenuto - r8 - r4 - r8 - - | - - r8 - 8 \staccato - 8 \staccato - r8 - 8 \staccato - 8 \staccato - - | - - r8 - 8 \staccato - 8 \staccato - r8 - 8 \staccato - 8 \staccato - - | - - r8 - 8 \staccato - 8 \staccato - r8 - 8 \staccato - 8 \staccato - - | - - 4 \fermata - r8 r4 r8 - } - ->> diff --git a/Documentation/snippets/new/faking-a-hammer-in-tablatures.ly b/Documentation/snippets/new/faking-a-hammer-in-tablatures.ly deleted file mode 100644 index 55f17456ce..0000000000 --- a/Documentation/snippets/new/faking-a-hammer-in-tablatures.ly +++ /dev/null @@ -1,19 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -A hammer in tablature can be faked with slurs. -" - doctitle = "Faking a hammer in tablatures" -} - -\score { - \new TabStaff { - \relative c'' { - \tabFullNotation - c4( d) d( d) - d2( c) - } - } -} diff --git a/Documentation/snippets/new/figured-bass-headword.ly b/Documentation/snippets/new/figured-bass-headword.ly deleted file mode 100644 index 2aae62d655..0000000000 --- a/Documentation/snippets/new/figured-bass-headword.ly +++ /dev/null @@ -1,112 +0,0 @@ -\version "2.14.0" -#(set-global-staff-size 15) -\paper { - ragged-right = ##f - line-width = 16\cm - indent = 1.5\cm -} - -% NR 2.7.3 Figured bass - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% Arcangelo Corelli, 12 Sonate da Camera, Op. 2 -% Sonata II, Allemanda -% measures 1 - 88 -% Coded by Neil Puttock; modified by Carl Sorensen - -extendOn = \bassFigureExtendersOn -extendOff = \bassFigureExtendersOff - -\score { - - \new StaffGroup << - - \new GrandStaff << - - \new Staff = "violinoI" { - \set Staff.instrumentName = \markup { - \line { Violino I. } - } - \time 4/4 - \mark \markup { \italic Adagio. } - \partial 8 - r16 a'16 | - a'8. [ d''16 d''8. e''16 ] cis''8 a'4 a''16 bes''16 | - cis''8 d''16 ( e'' ) e''8. d''16 d''4 r8 d''16 e''16 | - f''8 f''4 g''16 ( f''16 ) e''8 e''4 f''16 ( e''16 ) | - d''8. d''16 g''16 ( f''16 ) e''16 ( d''16 ) cis''8 - cis''4 cis''16 cis''16 | - d''8 d''8 c''8. c''16 c''8 ( b'4 ) b'16 b'16 | - c''8 c''8 bes'8. bes'16 bes'8 ( a'4 ) a''16 a''16 | - a''8 g''8 g''8. g''16 g''8 ( f''8 ) r8 f''8 | - } - - \new Staff = "violinoII" { - \set Staff.instrumentName = \markup { - \line { Violino II. } - } - \time 4/4 - \partial 8 - r16 f'16 | - f'8. g'16 g'4 a'4 r8 d''16 d''16 | - e''8 a'8 cis''8. d''16 d''4 r8 f''16 g''16 | - a''8 a''8 d''8. d''16 g'8 g'8 c''8. c''16 | - f'8. f''16 bes''16 ( a''16 ) g''16 ( f''16 ) e''8 e''4 e''16 e''16 | - a'8 fis''8 g''8 a''8 d''8 d''4 d''16 d''16 | - g'8 e''8 f''8 g''8 c''8 c''4 cis''16 cis''16 | - d''8 d''8 e''8. e''16 e''8 a'8 r8 d''8 | - } - - >> - - \new Staff = "violone" { - \set Staff.instrumentName = \markup { - \center-column { - Violone, - \line { e Cembalo. } - } - } - \time 4/4 - \clef bass - \partial 8 - r16 d16 | - d4 bes,4 a,4 f4 | - g8 f16 g16 a8 a,8 d4 d'4 ~ | - d'8 c'8 b4 c'8 c'16 bes16 a4 | - bes8 bes16 a16 g4 a8 a,4 a16 g16 | - fis8 d8 e8 fis8 g8 g,4 g16 f16 | - e8 c8 d8 e8 f8 f,4 a,8 | - b,4 cis4 d4 r8 d'8 | - } - - \new FiguredBass \figuremode { - \set figuredBassAlterationDirection = #RIGHT - \set figuredBassPlusDirection = #RIGHT - \override BassFigureAlignment #'stacking-dir = #DOWN - s8 | - s4 <6>4 <_+>4 <6>4 | - <6 4\+ 2>8 <6>8 <_+> s8 s2 | - <5>8 <6 4>8 <6 5>4 s4 <5>8 <6>8 | - s4 <6 5 _-> <_+>2 | - <6>8 <_+>8 <6>8 <6 5>8 <5 4>8 \extendOn <5 _!>8 \extendOff s4 | - <6>4 <6->8 <6 5->8 <5 4->8 \extendOn <5 3>4 \extendOff <5 _+>8 | - <7>8 <6>8 <5>4 <9 4>8 <8 3>8 s4 | - } - - >> - - \layout { - \context { - \Score - \override RehearsalMark #'break-align-symbols = #'(time-signature) - \override RehearsalMark #'self-alignment-X = #LEFT - \override TimeSignature #'break-align-anchor-alignment = #LEFT - } - } -} diff --git a/Documentation/snippets/new/flamenco-notation.ly b/Documentation/snippets/new/flamenco-notation.ly deleted file mode 100644 index 884e4b8a2d..0000000000 --- a/Documentation/snippets/new/flamenco-notation.ly +++ /dev/null @@ -1,250 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - - texidoc = " -For flamenco guitar, special notation is used: - - -@itemize - -@item -a golpe symbol to indicate a slap on the guitar body with the nail of -the ring finger - -@item -an arrow to indicate (the direction of) strokes - -@item -different letters for fingering (@qq{p}: thumb, @qq{i}: index finger, -@qq{m}: middle finger, @qq{a}: ring finger and @qq{x}: little finger) - -@item -3- and 4-finger rasgueados: stroke upwards with all fingers, ending -with an up- and down using the index finger - -@item -abanicos: strokes (in tuples) with thumb (down), little and index finger -(both up) (there is also an abanico 2 where middle and ring finger are -used instead of the little finger) - -@item -alza pua: fast playing with the thumb - -@end itemize - - -Most figures use arrows in combination with fingering; with abanicos -and rasgueados, noteheads are printed only for the first chord. - -This snippet contains some header-like code that can be copied as -@samp{flamenco.ly} and included in source files. - -" - doctitle = "Flamenco notation" -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%% Cut here ----- Start 'flamenco.ly' - -% Text indicators -abanico = \markup { \italic Abanico } -rasgueaso = \markup { \italic Ras. } -alzapua = \markup { \italic Alzapua } - -% Finger stroke symbols -strokeUp = \markup { \postscript #" - 0.1 setlinewidth - 0.5 0 moveto - 0.5 2 lineto - 0.2 1.4 lineto - 0.5 2 moveto - 0.8 1.4 lineto - stroke -"} - -strokeDown = \markup { \postscript #" - 0.1 setlinewidth - 0.5 2 moveto - 0.5 0 lineto - 0.2 0.6 lineto - 0.5 0 moveto - 0.8 0.6 lineto - stroke -"} - -% Golpe symbol -golpe = \markup { \postscript #" - 0.2 setlinewidth - 0 0 moveto - 1 0 lineto - 1 1 lineto - stroke - "\postscript #" - 0.1 setlinewidth - -0.6 -0.1 moveto - -0.6 1.0 lineto - 0.5 1.0 lineto - stroke -"} - -strokeUpGolpe = \markup { \column { \golpe \line { \strokeUp } } } -iUpGolpe = \markup { \column { \golpe \line { \small i } \line { \strokeUp } } } - -% Strokes for all fingers -pUp = \markup { \column { \small p \line { \strokeUp } } } -pDown = \markup { \column { \small p \line { \strokeDown } } } -iUp = \markup { \column { \small i \line { \strokeUp } } } -iDown = \markup { \column { \small i \line { \strokeDown } } } -mUp = \markup { \column { \small m \line { \strokeUp } } } -mDown = \markup { \column { \small m \line { \strokeDown } } } -aUp = \markup { \column { \small a \line { \strokeUp } } } -aDown = \markup { \column { \small a \line { \strokeDown } } } -xUp = \markup { \column { \small x \line { \strokeUp } } } -xDown = \markup { \column { \small x \line { \strokeDown } } } - - -% Just handy :) -tupletOff = { - \once \override TupletNumber #'stencil = ##f - \once \override TupletBracket #'stencil = ##f -} - -tupletsOff = { - \override TupletNumber #'stencil = ##f - \override TupletBracket #'bracket-visibility = #'if-no-beam -} - -tupletsOn = { - \override TupletBracket #'bracket-visibility = #'default - \revert TupletNumber #'stencil -} - -headsOff = { - \override TabNoteHead #'transparent = ##t - \override NoteHead #'transparent = ##t - \override NoteHead #'no-ledgers = ##t -} - -headsOn = { - \override TabNoteHead #'transparent = ##f - \override NoteHead #'transparent = ##f - \override NoteHead #'no-ledgers = ##f -} - -%%%%%%% Cut here ----- End 'flamenco.ly' -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -part = \relative c' { - 8^\iUp - 8^\iDown - r4 - r2^\golpe - - 8^\iUp - 8^\iDown - 8^\iUpGolpe - 8^\iDown - r2 - - 16^\aUp - \headsOff - ^\mUp - ^\iUp - ^\iDown~ - \headsOn - 2 - r4 - - \tupletOff - \times 4/5 { - 16^\xUp - \headsOff - ^\aUp - ^\mUp - ^\iUp - ^\iDown~ - \headsOn - } - 2 - r4 - - \tupletsOff - \times 2/3 { - 8^\pDown - \headsOff - ^\xUp - ^\iUp - \headsOn - } - - \times 2/3 { - 8^\pDown - \headsOff - ^\xUp - ^\iUp - \headsOn - } - - \times 2/3 { - 8^\pDown - \headsOff - ^\xUp - ^\iUp - \headsOn - } - \times 2/3 { - 8^\pDown - \headsOff - ^\xUp - ^\iUp - \headsOn - } - - \tupletsOff - \override Beam #'positions = #'(2 . 2) - \times 2/3 { - a8^\markup{ \small p } - ^\strokeUpGolpe - ^\strokeDown - } - \times 2/3 { - a,8^\markup{ \small p } - ^\strokeUpGolpe - ^\strokeDown - } - \times 2/3 { - a,8^\markup{ \small p } - ^\strokeUpGolpe - ^\strokeDown - } - \times 2/3 { - a,8^\markup{ \small p } - ^\strokeUpGolpe - ^\strokeDown - } - \tupletsOn - - \once \override TextScript #'extra-offset = #'(0 . -1) - 1_\golpe^\mUp - \bar "|." -} - -\score { - \new StaffGroup << - \context Staff = "part" << - \clef G - \transpose c c' - { - \part - } - >> - \context TabStaff { - \part - } - >> - \layout { - ragged-right = ##t - } -} diff --git a/Documentation/snippets/new/fretboards-alternate-tables.ly b/Documentation/snippets/new/fretboards-alternate-tables.ly deleted file mode 100644 index 382a0f8a92..0000000000 --- a/Documentation/snippets/new/fretboards-alternate-tables.ly +++ /dev/null @@ -1,75 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - - texidoc = " -Alternate fretboard tables can be created. These would be used in -order to have alternate fretboards for a given chord. - -In order to use an alternate fretboard table, the table must first -be created. Fretboards are then added to the table. - -The created fretboard table can be blank, or it can be copied -from an existing table. - -The table to be used in displaying predefined fretboards is selected -by the property @code{\predefinedDiagramTable}. -" - - doctitle = "Alternate fretboard tables" -} - -\include "predefined-guitar-fretboards.ly" - -% Make a blank new fretboard table -#(define custom-fretboard-table-one (make-fretboard-table)) - -% Make a new fretboard table as a copy of default-fret-table -#(define custom-fretboard-table-two (make-fretboard-table default-fret-table)) - -% Add a chord to custom-fretboard-table-one -\storePredefinedDiagram #custom-fretboard-table-one - \chordmode{c} - #guitar-tuning - "3-(;3;5;5;5;3-);" - -% Add a chord to custom-fretboard-table-two -\storePredefinedDiagram #custom-fretboard-table-two - \chordmode{c} - #guitar-tuning - "x;3;5;5;5;o;" - -<< - \chords { - c1 | d1 | - c1 | d1 | - c1 | d1 | - } - \new FretBoards { - \chordmode { - \set predefinedDiagramTable = #default-fret-table - c1 | d1 | - \set predefinedDiagramTable = #custom-fretboard-table-one - c1 | d1 | - \set predefinedDiagramTable = #custom-fretboard-table-two - c1 | d1 | - } - } - \new Staff { - \clef "treble_8" - << - \chordmode { - c1 | d1 | - c1 | d1 | - c1 | d1 | - } - { - s1_\markup "Default table" | s1 | - s1_\markup \column {"New table" "from empty"} | s1 | - s1_\markup \column {"New table" "from default"} | s1 | - } - >> - } ->> - diff --git a/Documentation/snippets/new/fretted-headword.ly b/Documentation/snippets/new/fretted-headword.ly index bf55f02489..f71af0f147 100644 --- a/Documentation/snippets/new/fretted-headword.ly +++ b/Documentation/snippets/new/fretted-headword.ly @@ -3,16 +3,10 @@ % on melodies from Bellini's "Norma" % %*****************************************************************% -\version "2.14.0" - -#(set-global-staff-size 15) -\paper { - line-width = 17\cm - indent = 0\cm -} +\version "2.16.0" \header { - lsrtags = "headwords" + lsrtags = "headword" texidoc = "" doctitle = "headword" } @@ -41,7 +35,7 @@ ssnor = \set stringNumberOrientations = #'(right) % define fingering offset FO = #(define-music-function (parser location offsetX offsetY) (number? number?) #{ - \once \override Voice.Fingering #'extra-offset = #(cons $offsetX $offsetY) + \once \override Voice.Fingering #'extra-offset = #(cons offsetX offsetY) #}) % markups diff --git a/Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly b/Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly deleted file mode 100644 index ed942c9b31..0000000000 --- a/Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly +++ /dev/null @@ -1,74 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -Fretted-string harmonics: -" - doctitle = "Fretted-string harmonics in tablature" -} - -pinchedHarmonics = { - \textSpannerDown - \override TextSpanner #'bound-details #'left #'text = - \markup {\halign #-0.5 \teeny "PH" } - \override TextSpanner #'style = - #'dashed-line - \override TextSpanner #'dash-period = #0.6 - \override TextSpanner #'bound-details #'right #'attach-dir = #1 - \override TextSpanner #'bound-details #'right #'text = - \markup { \draw-line #'(0 . 1) } - \override TextSpanner #'bound-details #'right #'padding = #-0.5 -} - -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" } - %pinched harmonics (PH) - \pinchedHarmonics - 2\startTextSpan - 4 - 4\stopTextSpan - %tapped harmonics (TH) - <\parenthesize g\4 g'\harmonic>4_\markup{ \teeny "TH 17" } - <\parenthesize a\4 a'\harmonic>4_\markup{ \teeny "TH 19" } - <\parenthesize c'\3 c''\harmonic>2_\markup{ \teeny "TH 17" } - %touch harmonics (TCH) - a4( 2. )_\markup{ \teeny "TCH" } -} - -frettedStrings = { - %artificial harmonics (AH) - \harmonicByFret #4 g4\3 - \harmonicByFret #5 d4\4 - \harmonicByFret #7 g2\3 - %pinched harmonics (PH) - \harmonicByFret #7 d2\4 - \harmonicByFret #5 d4\4 - \harmonicByFret #7 a4\5 - %tapped harmonics (TH) - \harmonicByFret #5 d4\4 - \harmonicByFret #7 d4\4 - \harmonicByFret #5 g2\3 - %touch harmonics (TCH) - a4 \harmonicByFret #9 g2.\3 -} - -\score { - << - \new Staff { - \new Voice { - \clef "treble_8" - \harmonics - } - } - \new TabStaff { - \new TabVoice { - \frettedStrings - } - } - >> -} diff --git a/Documentation/snippets/new/generating-custom-flags.ly b/Documentation/snippets/new/generating-custom-flags.ly new file mode 100644 index 0000000000..240ef41b42 --- /dev/null +++ b/Documentation/snippets/new/generating-custom-flags.ly @@ -0,0 +1,62 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms, tweaks-and-overrides" + + texidoc = " +The @code{stencil} property of the Flag grob can be set to a custom scheme +function to generate the glyph for the flag. + +" + doctitle = "Generating custom flags" +} + +#(define-public (weight-flag grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (log (- (ly:grob-property stem-grob 'duration-log) 2)) + (is-up? (eqv? (ly:grob-property stem-grob 'direction) UP)) + (yext (if is-up? (cons (* log -0.8) 0) (cons 0 (* log 0.8)))) + (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext)) + (stroke-style (ly:grob-property grob 'stroke-style)) + (stroke-stencil (if (equal? stroke-style "grace") + (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) + empty-stencil))) + (ly:stencil-add flag-stencil stroke-stencil))) + + +% Create a flag stencil by looking up the glyph from the font +#(define (inverted-flag grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) + (flag (retrieve-glyph-flag "" dir "" grob)) + (line-thickness (ly:staff-symbol-line-thickness grob)) + (stem-thickness (ly:grob-property stem-grob 'thickness)) + (stem-width (* line-thickness stem-thickness)) + (stroke-style (ly:grob-property grob 'stroke-style)) + (stencil (if (null? stroke-style) + flag + (add-stroke-glyph flag stem-grob dir stroke-style ""))) + (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0))) + (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0)))) + +snippetexamplenotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 } + +{ + \override Score.RehearsalMark #'self-alignment-X = #LEFT + \time 1/4 + \mark "Normal flags" + \snippetexamplenotes + + \mark "Custom flag: inverted" + \override Flag #'stencil = #inverted-flag + \snippetexamplenotes + + \mark "Custom flag: weight" + \override Flag #'stencil = #weight-flag + \snippetexamplenotes + + \mark "Revert to normal" + \revert Flag #'stencil + \snippetexamplenotes +} + diff --git a/Documentation/snippets/new/glissandi-can-skip-grobs.ly b/Documentation/snippets/new/glissandi-can-skip-grobs.ly new file mode 100644 index 0000000000..e978d0df48 --- /dev/null +++ b/Documentation/snippets/new/glissandi-can-skip-grobs.ly @@ -0,0 +1,13 @@ +\version "2.16.0" + +\header { + lsrtags = "expressive-marks, staff-notation, tweaks-and-overrides" + doctitle = "Glissandi can skip grobs" + texidoc = "@code{NoteColumn} grobs can be skipped over by glissandi." +} + +\relative c' { + a2 \glissando + \once \override NoteColumn #'glissando-skip = ##t + f''4 d, +} diff --git a/Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly b/Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly deleted file mode 100644 index 6b77f0adea..0000000000 --- a/Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly +++ /dev/null @@ -1,30 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags="winds" - texidoc=" -In may cases, the keys other than the central column can be -displayed by key name as well as by graphical means. -" - - doctitle = "Graphical and text woodwind diagrams" -} - -\relative c'' { - \textLengthOn - c1^\markup - \woodwind-diagram - #'piccolo - #'((cc . (one three)) - (lh . (gis)) - (rh . (ees))) - - c^\markup - \override #'(graphical . #f) { - \woodwind-diagram - #'piccolo - #'((cc . (one three)) - (lh . (gis)) - (rh . (ees))) - } -} diff --git a/Documentation/snippets/new/grouping-beats.ly b/Documentation/snippets/new/grouping-beats.ly deleted file mode 100644 index 5f9f71fc95..0000000000 --- a/Documentation/snippets/new/grouping-beats.ly +++ /dev/null @@ -1,15 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - texidoc = " -Beaming patterns may be altered with the @code{beatGrouping} property: - -" - doctitle = "Grouping beats" -} - -\markup { - This snippet is deprecated as of version 2.13.5 and will be removed - in version 2.14. -} diff --git a/Documentation/snippets/new/guitar-slides.ly b/Documentation/snippets/new/guitar-slides.ly index 4657d94b85..a3a3ee80ac 100644 --- a/Documentation/snippets/new/guitar-slides.ly +++ b/Documentation/snippets/new/guitar-slides.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings" @@ -18,6 +18,7 @@ hideFretNumber = { \once \override TabNoteHead #'transparent = ##t \once \override NoteHead #'transparent = ##t \once \override Stem #'transparent = ##t + \once \override Flag #'transparent = ##t \once \override NoteHead #'no-ledgers = ##t \once \override Glissando #'(bound-details left padding) = #0.3 } diff --git a/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly b/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly deleted file mode 100644 index 8499cdf470..0000000000 --- a/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly +++ /dev/null @@ -1,15 +0,0 @@ -\version "2.14.0" -\header { - lsrtags = "pitches" - texidoc = "This shows how to hide accidentals on tied notes at the beginning of a -new system." - doctitle = "Hiding accidentals on tied notes at the beginning of a new system" -} - -\relative c'' { - \override Accidental #'hide-tied-accidental-after-break = ##t - cis1~ cis~ - \break - cis -} - diff --git a/Documentation/snippets/new/incipit.ly b/Documentation/snippets/new/incipit.ly index cc217ccba9..8a22de16c3 100644 --- a/Documentation/snippets/new/incipit.ly +++ b/Documentation/snippets/new/incipit.ly @@ -1,7 +1,7 @@ -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, ancient-notation" + lsrtags = "staff-notation, ancient-notation, really-cool" texidoc = " Incipits can be added using the instrument name grob, but keeping separate the instrument name definition and the incipit definition. @@ -20,35 +20,31 @@ incipit = \once \override Staff.InstrumentName #'padding = #0.3 \once \override Staff.InstrumentName #'stencil = #(lambda (grob) - (let* ((instrument-name (ly:grob-property grob 'long-text)) - (layout (ly:output-def-clone (ly:grob-layout grob))) - (music (make-sequential-music - (list (context-spec-music - (make-sequential-music - (list (make-property-set - 'instrumentName instrument-name) - (make-grob-property-set - 'VerticalAxisGroup - 'Y-extent '(-4 . 4)))) - 'MensuralStaff) - $incipit-music))) - (score (ly:make-score music)) - (mm (ly:output-def-lookup layout 'mm)) - (indent (ly:output-def-lookup layout 'indent)) - (width (ly:output-def-lookup layout 'incipit-width)) - (incipit-width (if (number? width) - (* width mm) - (* indent 0.5)))) - - (ly:output-def-set-variable! layout 'indent (- indent - incipit-width)) - (ly:output-def-set-variable! layout 'line-width indent) - (ly:output-def-set-variable! layout 'ragged-right #f) - (ly:output-def-set-variable! layout 'ragged-last #f) - (ly:output-def-set-variable! layout 'system-count 1) - (ly:score-add-output-def! score layout) - (ly:grob-set-property! grob 'long-text - (markup #:score score)) + (let* ((instrument-name (ly:grob-property grob 'long-text))) + (set! (ly:grob-property grob 'long-text) + #{ \markup + \score + { + { \context MensuralStaff \with { + instrumentName = #instrument-name + \override VerticalAxisGroup + #'Y-extent = #'(-4 . 4) + } $incipit-music + } + \layout { $(ly:grob-layout grob) + line-width = \indent + indent = + % primitive-eval is probably easiest for + % escaping lexical closure and evaluating + % everything respective to (current-module). + #(primitive-eval + '(or (false-if-exception (- indent (* mm incipit-width))) + (* 0.5 indent))) + ragged-right = ##f + ragged-last = ##f + system-count = #1 } + } + #}) (system-start-text::print grob))) #}) diff --git a/Documentation/snippets/new/jazz-combo-template.ly b/Documentation/snippets/new/jazz-combo-template.ly new file mode 100644 index 0000000000..3910d71dc6 --- /dev/null +++ b/Documentation/snippets/new/jazz-combo-template.ly @@ -0,0 +1,274 @@ +\version "2.16.0" + +\header { + lsrtags = "keyboards, percussion, fretted-strings, template, real-music" + + texidoc = " +This is quite an advanced template, for a jazz ensemble. Note that all +instruments are notated in @code{\\key c \\major}. This refers to the +key in concert pitch; the key will be automatically transposed if the +music is within a @code{\\transpose} section. + +" + doctitle = "Jazz combo template" +} + +\header { + title = "Song" + subtitle = "(tune)" + composer = "Me" + meter = "moderato" + piece = "Swing" + tagline = \markup { + \column { + "LilyPond example file by Amelie Zapf," + "Berlin 07/07/2003" + } + } +} + +%#(set-global-staff-size 16) +\include "english.ly" + +%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%% + +sl = { + \override NoteHead #'style = #'slash + \override Stem #'transparent = ##t + \override Flag #'transparent = ##t +} +nsl = { + \revert NoteHead #'style + \revert Stem #'transparent + \revert Flag #'transparent +} +crOn = \override NoteHead #'style = #'cross +crOff = \revert NoteHead #'style + +%% insert chord name style stuff here. + +jazzChords = { } + +%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%% + +global = { \time 4/4 } + +Key = { \key c \major } + +% ############ Horns ############ + +% ------ Trumpet ------ +trpt = \transpose c d \relative c'' { + \Key + c1 | c | c | +} +trpHarmony = \transpose c' d { + \jazzChords +} +trumpet = { + \global + \set Staff.instrumentName = #"Trumpet" + \clef treble + << + \trpt + >> +} + +% ------ Alto Saxophone ------ +alto = \transpose c a \relative c' { + \Key + c1 | c | c | +} +altoHarmony = \transpose c' a { + \jazzChords +} +altoSax = { + \global + \set Staff.instrumentName = #"Alto Sax" + \clef treble + << + \alto + >> +} + +% ------ Baritone Saxophone ------ +bari = \transpose c a' \relative c { + \Key + c1 + c1 + \sl + d4^"Solo" d d d + \nsl +} +bariHarmony = \transpose c' a \chordmode { + \jazzChords s1 s d2:maj e:m7 +} +bariSax = { + \global + \set Staff.instrumentName = #"Bari Sax" + \clef treble + << + \bari + >> +} + +% ------ Trombone ------ +tbone = \relative c { + \Key + c1 | c | c +} +tboneHarmony = \chordmode { + \jazzChords +} +trombone = { + \global + \set Staff.instrumentName = #"Trombone" + \clef bass + << + \tbone + >> +} + +% ############ Rhythm Section ############# + +% ------ Guitar ------ +gtr = \relative c'' { + \Key + c1 + \sl + b4 b b b + \nsl + c1 +} +gtrHarmony = \chordmode { + \jazzChords + s1 c2:min7+ d2:maj9 +} +guitar = { + \global + \set Staff.instrumentName = #"Guitar" + \clef treble + << + \gtr + >> +} + +%% ------ Piano ------ +rhUpper = \relative c'' { + \voiceOne + \Key + c1 | c | c +} +rhLower = \relative c' { + \voiceTwo + \Key + e1 | e | e +} + +lhUpper = \relative c' { + \voiceOne + \Key + g1 | g | g +} +lhLower = \relative c { + \voiceTwo + \Key + c1 | c | c +} + +PianoRH = { + \clef treble + \global + \set Staff.midiInstrument = #"acoustic grand" + << + \new Voice = "one" \rhUpper + \new Voice = "two" \rhLower + >> +} +PianoLH = { + \clef bass + \global + \set Staff.midiInstrument = #"acoustic grand" + << + \new Voice = "one" \lhUpper + \new Voice = "two" \lhLower + >> +} + +piano = { + << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "upper" \PianoRH + \new Staff = "lower" \PianoLH + >> +} + +% ------ Bass Guitar ------ +Bass = \relative c { + \Key + c1 | c | c +} +bass = { + \global + \set Staff.instrumentName = #"Bass" + \clef bass + << + \Bass + >> +} + +% ------ Drums ------ +up = \drummode { + \voiceOne + hh4 hh + hh4 hh + hh4 hh +} +down = \drummode { + \voiceTwo + bd4 s bd s + bd4 s bd s + bd4 s bd s +} + +drumContents = { + \global + << + \set DrumStaff.instrumentName = #"Drums" + \new DrumVoice \up + \new DrumVoice \down + >> +} + +%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%% + +\score { + << + \new StaffGroup = "horns" << + \new Staff = "trumpet" \trumpet + \new Staff = "altosax" \altoSax + \new ChordNames = "barichords" \bariHarmony + \new Staff = "barisax" \bariSax + \new Staff = "trombone" \trombone + >> + + \new StaffGroup = "rhythm" << + \new ChordNames = "chords" \gtrHarmony + \new Staff = "guitar" \guitar + \new PianoStaff = "piano" \piano + \new Staff = "bass" \bass + \new DrumStaff \drumContents + >> + >> + \layout { + \context { \Staff \RemoveEmptyStaves } + \context { + \Score + \override BarNumber #'padding = #3 + \override RehearsalMark #'padding = #2 + skipBars = ##t + } + } + \midi { } +} + diff --git a/Documentation/snippets/new/keyboard-headword.ly b/Documentation/snippets/new/keyboard-headword.ly deleted file mode 100644 index 95be4b7709..0000000000 --- a/Documentation/snippets/new/keyboard-headword.ly +++ /dev/null @@ -1,248 +0,0 @@ -\version "2.14.0" -\include "english.ly" - -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 2.2 Keyboard instruments - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% M. Ravel, Sonatine (1905) -% First movement - -\layout { - \context { - \Score - \remove "Bar_number_engraver" - } -} - -fermataLong = \markup { - \override #'(direction . 1) - \override #'(baseline-skip . 2) { - \dir-column { - \musicglyph #"scripts.ufermata" - \text \italic \center-align long - } - } -} - -\new PianoStaff << - \set PianoStaff.connectArpeggios = ##t - \new Staff { - \time 2/4 - \key fs \major - << - \new Voice { - \voiceOne - fs''8 ( ^\markup { - \override #'(baseline-skip . 2.4) \column { - \line \bold { Un peu retenu } - \line \italic { très expressif } - } - } - es''16 - cs''16 - as'4 ) - | - fs''8 ( - es''16 - cs''16 - as'4 ) - | - fs''8 ( - es''16 - cs''16 - as'8 - cs''8 ) - | - } - \new Voice { - \voiceTwo - gs'8\rest \ppp - fs'4 ( - es'8 ) - | - gs'8\rest - fs'4 ( - es'8 ) - | - gs'8\rest - fs'4 ( - es'8 ) - | - } - >> - \clef bass - 4 ( ^ \markup \bold { Rall. } - \override Script #'stencil = #(lambda (grob) - (grob-interpret-markup grob fermataLong)) - 8 ) \fermata - \noBeam - \clef treble - \slurUp - \once \override Hairpin #'to-barline = ##f - 8 ( \pp \> - | - 4. \! ) ^\markup \bold { a Tempo } - \slurUp - 8 ^\( \> - | - 4. \! \) - << - \new Voice { - \voiceOne - 8 ( - | - cs'8 ^\markup \bold { Rallentando } - b16 - cs'16 - d'8 - e'16 - fs'16 - | - 4. ) - s8 - | - r8 - 4 \arpeggio - e''16 ( ^\markup \bold { Lent } - fs''16 - | - \voiceTwo - 2 ) - | - } - \new Voice { - \voiceTwo - s8 - | - 4 \< - 4 \> - | - s4. \! - \slurUp - \once \override Script #'direction = #UP - 8 ( \accent - | - 4. ) - \once \override Hairpin #'to-barline = ##f - 8 \ppp \> - | - s8 \! - \stemDown - \once \override Script #'direction = #UP - \ottava #1 - \voiceOne - \once \override PianoStaff.Arpeggio #'padding = #0.8 - 4. \arpeggio \fermata - \ottava #0 - \bar "|." - } - >> - } - \new Staff << - \set Staff.pedalSustainStyle = #'bracket - \key fs \major - \clef bass - \new Voice { - \voiceOne - ds'4 \tenuto - cs'4 \tenuto - | - ds'4 \tenuto - cs'4 \tenuto - | - ds'4 \tenuto - cs'4 \tenuto - | - s8 - \clef treble - 8 [ - \clef bass - 8 \fermata ] - s8 - | - fs8\rest - \clef treble - 4 \tenuto - s8 - | - fs8\rest - \clef treble - 4 \tenuto - s8 - | - s2 - | - ds8\rest - \clef treble - 4 - \clef bass - s8 - | - s8 - \clef treble - 4 \arpeggio - \clef bass - s8 - | - s8 - \clef treble - 4. \arpeggio \fermata - | - } - \new Voice { - \voiceTwo - ds'8 [ ( - < ds bs >8 - cs'8 - < ds as >8 ] ) - | - ds'8 [ ( - < ds bs >8 - cs'8 - < ds as >8 ] ) - | - ds'8 [ ( - < ds bs >8 - cs'8 - < ds as >8 ] ) - | - \once \override Script #'outside-staff-priority = #100 - \once \override TextScript #'outside-staff-priority = #500 - 4. \fermata _\markup \italic { ped. } - 8 ( - | - 4. ) \sustainOn - \clef bass - 8 \( \sustainOff - | - 4. \) \sustainOn - \clef bass - 8 ( \sustainOff - | - 4 - 4 - | - 4. ) \sustainOn - 8 ( \sustainOff - | - 4. ) \sustainOn - \slurUp - 8 ( \sustainOff \sustainOn - | - 2 ) \sustainOff \sustainOn - | - } - >> ->> diff --git a/Documentation/snippets/new/letter-tablature-formatting.ly b/Documentation/snippets/new/letter-tablature-formatting.ly deleted file mode 100644 index f97d656cb2..0000000000 --- a/Documentation/snippets/new/letter-tablature-formatting.ly +++ /dev/null @@ -1,30 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "staff-notation, fretted-strings" - - texidoc = " -Tablature can be formatted using letters instead of numbers. - -" - doctitle = "Letter tablature formatting" -} - -music = \relative c { - c4 d e f - g4 a b c - d4 e f g -} - -<< - \new Staff { - \clef "G_8" - \music - } - \new TabStaff \with { - tablatureFormat = #fret-letter-tablature-format - } - { - \music - } ->> diff --git a/Documentation/snippets/new/makam-example.ly b/Documentation/snippets/new/makam-example.ly deleted file mode 100644 index 9191ffeb73..0000000000 --- a/Documentation/snippets/new/makam-example.ly +++ /dev/null @@ -1,22 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "pitches, world-music" - texidoc = " -Makam is a type of melody from Turkey using 1/9th-tone microtonal -alterations. Consult the initialization file @samp{ly/makam.ly} for -details of pitch names and alterations. - -" - doctitle = "Makam example" -} - -% Initialize makam settings -\include "makam.ly" - -\relative c' { - \set Staff.keySignature = #`((6 . ,(- KOMA)) (3 . ,BAKIYE)) - c4 cc db fk - gbm4 gfc gfb efk - fk4 db cc c -} diff --git a/Documentation/snippets/new/making-an-object-invisible-with-the-transparent-property.ly b/Documentation/snippets/new/making-an-object-invisible-with-the-transparent-property.ly new file mode 100644 index 0000000000..7596a4ebcb --- /dev/null +++ b/Documentation/snippets/new/making-an-object-invisible-with-the-transparent-property.ly @@ -0,0 +1,38 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides" + + texidoc = " +Setting the @code{transparent} property will cause an object to be +printed in @qq{invisible ink}: the object is not printed, but all its +other behavior is retained. The object still takes up space, it takes +part in collisions, and slurs, ties and beams can be attached to it. + + +This snippet demonstrates how to connect different voices using ties. +Normally, ties only connect two notes in the same voice. By +introducing a tie in a different voice, and blanking the first up-stem +in that voice, the tie appears to cross voices. + +" + doctitle = "Making an object invisible with the 'transparent property" +} + +\relative c'' { + \time 2/4 + << + { + \once \override Stem #'transparent = ##t + \once \override Stem #'length = #8 + b8 ~ b\noBeam + \once \override Stem #'transparent = ##t + \once \override Stem #'length = #8 + g8 ~ g\noBeam + } + \\ + { + b8 g g e + } + >> +} diff --git a/Documentation/snippets/new/making-slurs-with-complex-dash-structure.ly b/Documentation/snippets/new/making-slurs-with-complex-dash-structure.ly deleted file mode 100644 index 28f15c8738..0000000000 --- a/Documentation/snippets/new/making-slurs-with-complex-dash-structure.ly +++ /dev/null @@ -1,36 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms, expressive-marks" - texidoc = " -Slurs can be made with complex dash patterns by defining -the @code{dash-definition} property. @code{dash-definition} -is a list of @code{dash-elements}. A @code{dash-element} is a -list of parameters defining the dash behavior for a segment of -the slur. - -The slur is defined in terms of the bezier parameter t -which ranges from 0 -at the left end of the slur to 1 at the right end of the slur. -@code{dash-element} is a list @code{(start-t stop-t dash-fraction -dash-period)}. The region of the slur from @code{start-t} to -@code{stop-t} will have a fraction @code{dash-fraction} -of each @code{dash-period} black. @code{dash-period} is -defined in terms of staff spaces. @code{dash-fraction} is -set to 1 for a solid slur. -" - doctitle = "Making slurs with complex dash structure" -} - -\relative c' { - \once \override - Slur #'dash-definition = #'((0 0.3 0.1 0.75) - (0.3 0.6 1 1) - (0.65 1.0 0.4 0.75)) - c4( d e f) - \once \override - Slur #'dash-definition = #'((0 0.25 1 1) - (0.3 0.7 0.4 0.75) - (0.75 1.0 1 1)) - c4( d e f) -} diff --git a/Documentation/snippets/new/modern-tab-text-clef.ly b/Documentation/snippets/new/modern-tab-text-clef.ly deleted file mode 100644 index 2af2335ca0..0000000000 --- a/Documentation/snippets/new/modern-tab-text-clef.ly +++ /dev/null @@ -1,16 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "staff-notation, fretted-strings" - - texidoc = " -Use a markup text to replace the (TAB) clef glyph with a modern font. - -" - doctitle = "Modern TAB text clef" -} - -\markup { - This snippet is deprecated as of version 2.13.4 and will be removed - in version 2.14. -} diff --git a/Documentation/snippets/new/non-default-tuplet-numbers.ly b/Documentation/snippets/new/non-default-tuplet-numbers.ly deleted file mode 100644 index 1ea456dab0..0000000000 --- a/Documentation/snippets/new/non-default-tuplet-numbers.ly +++ /dev/null @@ -1,41 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - - texidoc = " -LilyPond also provides formatting functions to print tuplet numbers different -than the actual fraction, as well as to append a note value to the tuplet -number or tuplet fraction. -" - doctitle = "Non-default tuplet numbers" -} - -\relative c'' { - \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. } -} diff --git a/Documentation/snippets/new/non-traditional-key-signatures.ly b/Documentation/snippets/new/non-traditional-key-signatures.ly deleted file mode 100644 index 8a3c145a98..0000000000 --- a/Documentation/snippets/new/non-traditional-key-signatures.ly +++ /dev/null @@ -1,36 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "pitches, staff-notation" - texidoc = " -The commonly used @code{\\key} command sets the @code{keySignature} -property, in the @code{Staff} context. - -To create non-standard key signatures, set this property directly. The -format of this command is a list: - -@code{\\set Staff.keySignature = #`(((octave . step) . alter) ((octave -. step) . alter) ...)} where, for each element in the list, -@code{octave} specifies the octave (0@tie{}being the octave from -middle@tie{}C to the B above), @code{step} specifies the note within the -octave (0@tie{}means@tie{}C and 6@tie{}means@tie{}B), and @code{alter} is -@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (Note the leading comma.) - -Alternatively, for each item in the list, using the more concise format -@code{(step . alter)} specifies that the same alteration should hold in all -octaves. - -Here is an example of a possible key signature for generating a whole-tone -scale: -" - doctitle = "Non-traditional key signatures" -} - -\relative c' { - \set Staff.keySignature = #`(((0 . 6) . ,FLAT) - ((0 . 5) . ,FLAT) - ((0 . 3) . ,SHARP)) - c4 d e fis - aes4 bes c2 -} - diff --git a/Documentation/snippets/new/numbers-as-easy-note-heads.ly b/Documentation/snippets/new/numbers-as-easy-note-heads.ly index 03e0578af2..4b3f02ec8d 100644 --- a/Documentation/snippets/new/numbers-as-easy-note-heads.ly +++ b/Documentation/snippets/new/numbers-as-easy-note-heads.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches" @@ -15,21 +15,19 @@ object it sees. } #(define Ez_numbers_engraver - (list - (cons 'acknowledgers - (list - (cons 'note-head-interface - (lambda (engraver grob source-engraver) - (let* ((context (ly:translator-context engraver)) - (tonic-pitch (ly:context-property context 'tonic)) - (tonic-name (ly:pitch-notename tonic-pitch)) - (grob-pitch - (ly:event-property (event-cause grob) 'pitch)) - (grob-name (ly:pitch-notename grob-pitch)) - (delta (modulo (- grob-name tonic-name) 7)) - (note-names - (make-vector 7 (number->string (1+ delta))))) - (ly:grob-set-property! grob 'note-names note-names)))))))) + (make-engraver + (acknowledgers + ((note-head-interface engraver grob source-engraver) + (let* ((context (ly:translator-context engraver)) + (tonic-pitch (ly:context-property context 'tonic)) + (tonic-name (ly:pitch-notename tonic-pitch)) + (grob-pitch + (ly:event-property (event-cause grob) 'pitch)) + (grob-name (ly:pitch-notename grob-pitch)) + (delta (modulo (- grob-name tonic-name) 7)) + (note-names + (make-vector 7 (number->string (1+ delta))))) + (ly:grob-set-property! grob 'note-names note-names)))))) #(set-global-staff-size 26) diff --git a/Documentation/snippets/new/open-string-harmonics-in-tablature.ly b/Documentation/snippets/new/open-string-harmonics-in-tablature.ly deleted file mode 100644 index 46a833c8ae..0000000000 --- a/Documentation/snippets/new/open-string-harmonics-in-tablature.ly +++ /dev/null @@ -1,64 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -Reference for open-string harmonics: -" - doctitle = "Reference for open-string harmonics" -} - -openStringHarmonics = { - %first harmonic - \harmonicByFret #12 e,2\6_\markup{"1st harm."} - \harmonicByRatio #1/2 e,\6 - %second harmonic - \harmonicByFret #7 e,\6_\markup{"2nd harm. - - - -"} - \harmonicByRatio #1/3 e,\6 - \harmonicByFret #19 e,\6 - \harmonicByRatio #2/3 e,\6 - %\harmonicByFret #19 < e,\6 a,\5 d\4 > - %\harmonicByRatio #2/3 < e,\6 a,\5 d\4 > - %third harmonic - \harmonicByFret #5 e,\6_\markup{"3rd harm. - - - -"} - \harmonicByRatio #1/4 e,\6 - \harmonicByFret #24 e,\6 - \harmonicByRatio #3/4 e,\6 - \break - %fourth harmonic - \harmonicByFret #4 e,\6_\markup{"4th harm. - - - - - - - - - - - - -"} - \harmonicByRatio #1/5 e,\6 - \harmonicByFret #9 e,\6 - \harmonicByRatio #2/5 e,\6 - \harmonicByFret #16 e,\6 - \harmonicByRatio #3/5 e,\6 - %fifth harmonic - \harmonicByFret #3 e,\6_\markup{"5th harm."} - \harmonicByRatio #1/6 e,\6 - \break - %sixth harmonic - \harmonicByFret #2.7 e,\6_\markup{"6th harm."} - \harmonicByRatio #1/7 e,\6 - %seventh harmonic - \harmonicByFret #2.3 e,\6_\markup{"7th harm."} - \harmonicByRatio #1/8 e,\6 - %eighth harmonic - \harmonicByFret #2 e,\6_\markup{"8th harm."} - \harmonicByRatio #1/9 e,\6 -} - -\score { - << - \new Staff { - \new Voice { - \clef "treble_8" - \openStringHarmonics - } - } - \new TabStaff { - \new TabVoice { - \openStringHarmonics - } - } - >> -} diff --git a/Documentation/snippets/new/piano-template-with-centered-dynamics.ly b/Documentation/snippets/new/piano-template-with-centered-dynamics.ly deleted file mode 100644 index 70403a76fc..0000000000 --- a/Documentation/snippets/new/piano-template-with-centered-dynamics.ly +++ /dev/null @@ -1,53 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "expressive-marks, keyboards, template" - texidoc = " -Many piano scores have the dynamics centered between the two staves. -The @code{Dynamics} context, if placed between staves, will -automatically position dynamics correctly. - -" - doctitle = "Piano template with centered dynamics" -} - -global = { - \key c \major - \time 4/4 -} - -upper = \relative c'' { - \clef treble - a4 b c d -} - -lower = \relative c { - \clef bass - a2 c -} - -dynamics = { - s2\fff\> s4 s\!\pp -} - -pedal = { - s2\sustainOn s\sustainOff -} - -\score { - \new PianoStaff = "PianoStaff_pf" << - \new Staff = "Staff_pfUpper" << \global \upper >> - \new Dynamics = "Dynamics_pf" \dynamics - \new Staff = "Staff_pfLower" << \global \lower >> - \new Dynamics = "pedal" \pedal - >> - \layout { } -} - -\score { - \new PianoStaff = "PianoStaff_pf" << - \new Staff = "Staff_pfUpper" << \global \upper \dynamics \pedal >> - \new Staff = "Staff_pfLower" << \global \lower \dynamics \pedal >> - >> - \midi { } -} diff --git a/Documentation/snippets/new/pitches-headword.ly b/Documentation/snippets/new/pitches-headword.ly deleted file mode 100644 index 9bd3dd0171..0000000000 --- a/Documentation/snippets/new/pitches-headword.ly +++ /dev/null @@ -1,143 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - -% NR 1.1 Pitches - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - - -% L. v. Beethoven -% Piano sonata 21 - Dem Grafen von Waldstein Gewidmet -% chorale at measures 34 - 40+ - -\new PianoStaff << - - % RH Staff - \new Staff << - - % RH Voice 1 - \new Voice { - \set Score.currentBarNumber = #34 - \voiceOne - gs''2 ( ^ \markup \italic { dolce e molto ligato } - fs''4 - e''4 - | - ds''2 - cs''2 ) - | - ds''2 ( - e''4 - fs''4 - | - 2 - 2 ) - | - \oneVoice - \clef bass - 2 ( - 4 - 4 - | - 2 - 2 ) - | - \voiceOne - b2 %( - cs'4 - ds'4 - | - \clef treble - 4 %) - r4 r2 - } - - % RH Voice 2 - \new Voice { - \voiceTwo - \override Staff.DynamicLineSpanner #'staff-padding = #2.5 - 2 \p - 4 - 4 - | - 2 - e'2 - | - \once \override TextScript #'staff-padding = #2.5 - 2 _ \markup \italic { cresc. } - b'4 - 4 - | - b'2. ( \sf \> - a'4 ) - \clef bass - | \break - s1 \p - | - s1 - | - 4 ( - 2. ) - | - s4 - r4 r2 - } - - >> - - % LH Staff - \new Staff { - \override Staff.SustainPedalLineSpanner #'staff-padding = #5 - 2 ( \sustainOn - 4 \sustainOff - 4 - | - 2 - 2 ) \sustainOn - | - \clef bass - \slurDown - 2 ( \sustainOff - 4 - 4 \sustainOn - | - \clef treble - \voiceOne - << - { - 2 - 2 ) - } - \new Voice { - \voiceTwo - b1 \sustainOff - } - >> - \oneVoice - | - %\break - \clef bass - 2 ( - 4 - 4 - | - 2 - 2 ) \sustainOn - | - 1 ( \sustainOff - | - 4 ) - r4 r2 - } - ->> diff --git a/Documentation/snippets/new/positioning-multi-measure-rests.ly b/Documentation/snippets/new/positioning-multi-measure-rests.ly new file mode 100644 index 0000000000..8f9865ac23 --- /dev/null +++ b/Documentation/snippets/new/positioning-multi-measure-rests.ly @@ -0,0 +1,59 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms, tweaks-and-overrides" + + texidoc = " +Unlike ordinary rests, there is no predefined command to change the +staff position of a multi-measure rest symbol of either form by +attaching it to a note. However, in polyphonic music multi-measure +rests in odd-numbered and even-numbered voices are vertically +separated. The positioning of multi-measure rests can be controlled as +follows: + +" + doctitle = "Positioning multi-measure rests" +} + +\relative c'' { + % Multi-measure rests by default are set under the fourth line + R1 + % They can be moved using an override + \override MultiMeasureRest #'staff-position = #-2 + R1 + \override MultiMeasureRest #'staff-position = #0 + R1 + \override MultiMeasureRest #'staff-position = #2 + R1 + \override MultiMeasureRest #'staff-position = #3 + R1 + \override MultiMeasureRest #'staff-position = #6 + R1 + \revert MultiMeasureRest #'staff-position + \break + + % In two Voices, odd-numbered voices are under the top line + << { R1 } \\ { a1 } >> + % Even-numbered voices are under the bottom line + << { a1 } \\ { R1 } >> + % Multi-measure rests in both voices remain separate + << { R1 } \\ { R1 } >> + + % Separating multi-measure rests in more than two voices + % requires an override + << { R1 } \\ { R1 } \\ + \once \override MultiMeasureRest #'staff-position = #0 + { R1 } + >> + + % Using compressed bars in multiple voices requires another override + % in all voices to avoid multiple instances being printed + \compressFullBarRests + << + \revert MultiMeasureRest #'staff-position + { R1*3 } + \\ + \revert MultiMeasureRest #'staff-position + { R1*3 } + >> +} diff --git a/Documentation/snippets/new/redefining-grace-note-global-defaults.ly b/Documentation/snippets/new/redefining-grace-note-global-defaults.ly new file mode 100644 index 0000000000..b6575a4714 --- /dev/null +++ b/Documentation/snippets/new/redefining-grace-note-global-defaults.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms" + + texidoc = " +The global defaults for grace notes are stored in the identifiers +@code{startGraceMusic}, @code{stopGraceMusic}, +@code{startAcciaccaturaMusic}, @code{stopAcciaccaturaMusic}, +@code{startAppoggiaturaMusic} and @code{stopAppoggiaturaMusic}, which +are defined in the file @code{ly/grace-init.ly}. By redefining them +other effects may be obtained. + +" + doctitle = "Redefining grace note global defaults" +} + +startAcciaccaturaMusic = { + <>( + \override Flag #'stroke-style = #"grace" + \slurDashed +} + +stopAcciaccaturaMusic = { + \revert Flag #'stroke-style + \slurSolid + <>) +} + +\relative c'' { + \acciaccatura d8 c1 +} + diff --git a/Documentation/snippets/new/repeats-headword.ly b/Documentation/snippets/new/repeats-headword.ly deleted file mode 100644 index 0f80e73c43..0000000000 --- a/Documentation/snippets/new/repeats-headword.ly +++ /dev/null @@ -1,131 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 1.7 Repeats - -% Beethoven, Op. 57 -% Piano sonata 23 - Dem Grafen Franz von Brunswick Gewidmet -% Movt II, Andante con moto -% Measures 9 - 16 - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - - -\new PianoStaff << - - \new Staff = RH { - \clef bass - \key df \major - \time 2/4 - \set Score.currentBarNumber = #9 - \bar "|:" - 4 ( - 8.. - 32 - | - 8. ) - 16 ( - 8 - 8 ) - | - 4 ( - 8.. - 32 - | - 8. ) - \slurDown - 16 ( - << - { - \voiceTwo - gf8 - f8 ) - } - \new Voice { - \voiceOne - 16 - ef'16 - 8 - } - >> - \oneVoice - | - 4 ( - 8.. - 32 - \clef treble - | - 8. ) - 16 ( - 16 - gf'16 - 8 ) - | - \slurUp - 4 - \change Staff = LH - \voiceOne - 4 - | - 4. - \change Staff = RH - \oneVoice - r8 - \clef bass - \bar ":|" - } - - \new Staff = LH { - \clef bass - \key df \major - \time 2/4 - 4 ( - 8.. - 32 - | - 8. ) - 16 ( - 8 - 8 ) - | - 4 ( - 8.. - 32 - | - 8. ) - 16 ( - 8 - ) - | - 4 ( - 8.. - 32 - | - 8. ) - 16 ( - 8 - 8 ) - | - \voiceTwo - gf,4 ( - af,4 ~ ) - | - af,16. [ ( - gf,32 - f,16. - ef,32 ] - df,8 ) - \oneVoice - r8 - } - ->> diff --git a/Documentation/snippets/new/reverting-default-beam-endings.ly b/Documentation/snippets/new/reverting-default-beam-endings.ly deleted file mode 100644 index d771c60161..0000000000 --- a/Documentation/snippets/new/reverting-default-beam-endings.ly +++ /dev/null @@ -1,21 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - texidoc = " -To typeset beams grouped @code{3-4-3-2} one need only change the -beat structure: -" - doctitle = "Reverting default beam endings" -} - -\relative c'' { - \time 12/8 - - % Default beaming - a8 a a a a a a a a a a a - - % Set new values for beam endings - \set Score.beatStructure = #'(3 4 3 2) - a8 a a a a a a a a a a a -} diff --git a/Documentation/snippets/new/rhythms-headword.ly b/Documentation/snippets/new/rhythms-headword.ly deleted file mode 100644 index 74a410df06..0000000000 --- a/Documentation/snippets/new/rhythms-headword.ly +++ /dev/null @@ -1,216 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 1.2 Rhythms - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - - -% Beethoven, Op. 81a -% Piano sonata 26 - Das Lebewohl -% Movt II - Abwesenheit -% Measures 31 - 34 - -\layout { - \context { - \Score - \override SpacingSpanner #'base-shortest-duration = - #(ly:make-moment 1 40) - %\override SpacingSpanner #'strict-grace-spacing = ##t - } -} - -\new PianoStaff << - - % RH Staff - \new Staff { - \clef treble - \key c \minor - \time 2/4 - \set Score.currentBarNumber = #31 - - 8 ( -\markup { - \override #'(baseline-skip . 2) \italic \column { - \line { a tempo } - cantabile - } - } - 8 ) - ~ - 8 ( - 16 - 16 ) - - | - - \afterGrace - 8 [ ( - { - e''16 [ - f''16 - e''16 - d''16 ] - } - 16 - 16 ] ) - \once \override TextScript #'padding = #3.8 - 16 ( \staccato -\markup { \italic cresc. } - 16 ) \staccato - 32 ( - 32 ) - 32 ( - 32 ) - - | - - \once \override DynamicLineSpanner #'padding = #2 - b''32 ( \p \> - c'''32 - d'''32 - c'''32 ) \! - g''8 ( - ~ - g''32 [ - a''64 - g''64 ) ] - - a''64 ( [ - g''64 ) - bf''64 ( - a''64 ) ] - - bf''64 ( [ - a''64 ) - c'''64 ( - b''64 ) ] - - c'''128 ( [ - b''128 - d'''128 - c'''128 - f'''64 - f''64 ) ] - - | - - \afterGrace - 8 [ ( - { - e''16 [ - f''16 - e''16 - d''16 ] - } - 16 - 16 ] ) - 16 ( \staccato -\markup { \italic cresc. } - 16 ) \staccato - 32 ( - 32 ) - 32 ( - 32 ) - } - - % LH Staff - \new Staff { - \clef bass - \key c \minor - \time 2/4 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - | - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - | - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - | - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - - 32 - c'32 - 32 - c'32 - } - ->> diff --git a/Documentation/snippets/new/score-for-diatonic-accordion.ly b/Documentation/snippets/new/score-for-diatonic-accordion.ly new file mode 100644 index 0000000000..e4f2326b97 --- /dev/null +++ b/Documentation/snippets/new/score-for-diatonic-accordion.ly @@ -0,0 +1,240 @@ +\version "2.16.0" + +\header { + lsrtags = "template, real-music, specific-notation" + + texidoc = " +A template to write a score for a diatonic accordion. + +- There is a horizontal staff indicating if the accordion must be +pushed (thick line) or pulled (thin line) + +- There is a small rhythmic staff with lyrics that describes the bass +buttons to press. The bar lines are made from gridlines + +- The tabulator staff for diatonic accordions shows the geographic +position of the buttons and not (as for every other instrument) the +pitch of the notes; the keys on the melody-side of the accordion are +placed in three columns and about 12 rows + + +In the tabulator staff notation the outermost column is described with +notes between lines, the innermost column is described with notes +between lines and a cross as accidental, and the middle column is +described with notes on a line, whereby the row in the middle is +represented on the middle line in the staff. + + +Some words to transpose piano notes to the diatonic accordion: + + +1. Every diatonic accordion is built for some keys only (for example, +for the keys of C major and F major), so it is important to transpose a +piano melody to match one of these keys. Transpose the source code, not +only the output because this code is required later on to translate it +once more to the tabulator staff. This can be done with the command +@code{displayLilyMusic}. + + +2. You have to alternate the push- and pull-direction of the accordion +regularly. If the player has a too long part to pull the accordion gets +broken. On the other hand, some harmonies are only available in one +direction. Considering this, decide which parts of the melody are the +push-parts and which the pull-parts. + + +3. For each pull- or push-part translate the piano notes to the +according tabulature representation. + + +This snippet comes with a useful optional macro for the jEdit text +editor. + +" + doctitle = "Score for diatonic accordion" +} + +verse = \lyricmode { Wie gross bist du! Wie gross bist du! } + +harmonies = \new ChordNames \chordmode { + \germanChords + \set chordChanges = ##t + bes8 bes8 bes8 + es2 f + bes1 +} + +NoStem = { \override Stem #'transparent = ##t \override Flag #'transparent = ##t } +NoNoteHead = \override NoteHead #'transparent = ##t +ZeroBeam = \override Beam #'positions = #'(0 . 0) + +staffTabLine = \new Staff \with { + \remove "Time_signature_engraver" + \remove "Clef_engraver" +} { + \override Staff.StaffSymbol #'line-positions = #'(0) + % Shows one horizontal line. The vertical line (simulating a bar-line) is simulated with a gridline + \set Staff.midiInstrument = #"choir aahs" + \key c \major + \relative c'' + { + % disable the following line to see the the noteheads while writing the song + \NoNoteHead + \override NoteHead #'no-ledgers = ##t + + % The beam between 8th-notes is used to draw the push-line + %How to fast write the push-lines: + % 1. write repeatedly 'c c c c c c c c |' for the whole length of the song + % 2. uncomment the line \NoNoteHead + % 3. compile + % 4. Mark the positions on which push/pull changes. + % In the score-picture click on the position the push- or pull-part starts + % (on the noteHead, the cursor will change to a hand-icon). + % The cursor in the source code will jump just at this position. + % a) If a push-part starts there, replace the 'c' by an 'e[' + % b) If a pull-part starts there, replace the 'c' by an 's' + % 5. Switch into 'overwrite-mode' by pressing the 'ins' key. + % 6. For the pull-parts overwrite the 'c' with 's' + % 7. For every push-part replace the last 'c' with 'e]' + % 8. Switch into 'insert-mode' again + % 9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c e] s s) + % 10. re-enable the line \NoNoteHead + \autoBeamOff + \ZeroBeam + s8 s s e[ c c c c c c e] | s s s s s + } +} + +%{ +%} + +% Accordion melody in tabulator score +% 1. Place a copy of the piano melody below +% 2. Separate piano melody into pull- and push-parts according to the staffTabLine you've already made +% 3. For each line: Double the line. Remark the 1st one (Keeps unchanged as reference) and then change the second line using the transformation paper +% or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh' +% Tips: +% - In jEdit Search & Replace mark the Option 'Keep Dialog' + +AccordionTabTwoCBesDur = { + % pull 1 + %8 8 8 | + 8 8 8 | + % push 2 + %4 | + 4 | + % pull 3 + % 2 r8 } + 2 r8 } + +AccordionTab= { \dynamicUp + % 1. Place a copy of the piano melody above + % 2. Separate piano melody into pull- and push-parts according to the staffTabLine you've already made + % 3. For each line: Double the line. Remark the 1st one (Keeps unchanged as reference) and then + % change the second line using the transformation paper + % Tips: + % - In jEdit Search & Replace mark the Option 'Keep Dialog' + % - + \AccordionTabTwoCBesDur +} + + + +\layout { + \context { + \Score + % The vertical line (simulating a bar-line) in + % the staffBassRhytm is a gridline + \consists "Grid_line_span_engraver" + } + \context { + \Staff + \consists "Grid_point_engraver" + gridInterval = #(ly:make-moment 4 4) % 4/4 - tact. How many beats per bar + % The following line has to be adjusted O-F-T-E-N. + \override GridPoint #'Y-extent = #'(-2 . -21) + } + \context { + \ChoirStaff + \remove "System_start_delimiter_engraver" + } +} + +staffVoice = \new Staff = astaffvoice { + \time 4/4 + \set Staff.instrumentName = "Voice" + \set Staff.midiInstrument = "voice oohs" + \key bes \major + \partial 8*3 + \clef treble + { + \context Voice = "melodyVoi" + { 8 8 8 | 4 | 2 r8 } + \bar "|." + } +} + +staffAccordionMel = +\new Staff \with { \remove "Clef_engraver" } { + \accidentalStyle "forget" %Set the accidentals (Vorzeichen) for each note, + %do not remember them for the rest of the measure. + \time 4/4 + \set Staff.instrumentName="Accordion" + \set Staff.midiInstrument="voice oohs" + \key c \major + \clef treble + { \AccordionTab \bar "|." } +} + +AltOn = +#(define-music-function (parser location mag) (number?) + #{ \override Stem #'length = #(* 7.0 mag) + \override NoteHead #'font-size = +#(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #}) + +AltOff = { + \revert Stem #'length + \revert NoteHead #'font-size +} + +BassRhytm = {s4 s8 | c2 c2 | c2 s8 } +LyricBassRhythmI= \lyricmode { c b | c } + +staffBassRhytm = +\new Staff = staffbass \with { \remove "Clef_engraver" } { + % This is not a RhythmicStaff because it must be possible to append lyrics. + + \override Score.GridLine #'extra-offset = #'( 13.0 . 0.0 ) % x.y + \override Staff.StaffSymbol #'line-positions = #'( 0 ) + % Shows one horizontal line. The vertical line (simulating a bar-line) is simulated by a grid + % Search for 'grid' in this page to find all related functions + \time 4/4 + { + \context Voice = "VoiceBassRhytm" + \stemDown \AltOn #0.6 + \relative c'' + { + \BassRhytm + } + \AltOff + \bar "|." + } +} + +\score { + \new ChoirStaff << + \harmonies + \staffVoice + \context Lyrics = "lmelodyVoi" + \with { alignBelowContext = astaffvoice } + \lyricsto melodyVoi \verse + \staffAccordionMel + \staffTabLine + \staffBassRhytm + \context Lyrics = "lBassRhytmAboveI" + \with { alignAboveContext = staffbass } + \lyricsto VoiceBassRhytm \LyricBassRhythmI + >> +} +%} + diff --git a/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly b/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly deleted file mode 100644 index 8a751513ae..0000000000 --- a/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly +++ /dev/null @@ -1,19 +0,0 @@ -\version "2.14.0" -\header { - lsrtags = "repeats" - texidoc = "There are three different styles of double repeats for -volte, that can be set using @code{doubleRepeatType}." - - doctitle = "Setting the double repeat default for volte" -} - - -\relative c'' { - \repeat volta 1 { c1 } - \set Score.doubleRepeatType = #":|:" - \repeat volta 1 { c1 } - \set Score.doubleRepeatType = #":|.|:" - \repeat volta 1 { c1 } - \set Score.doubleRepeatType = #":|.:" - \repeat volta 1 { c1 } -} diff --git a/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly b/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly deleted file mode 100644 index b1ae4e3864..0000000000 --- a/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly +++ /dev/null @@ -1,36 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "expressive-marks, tweaks-and-overrides" - - texidoc = " -By default, LilyPond does not allow the same articulation (e.g., an -accent, a fermata, a flageolet, etc.) to be displayed above and below a -note. For example, @code{c4_\\fermata^\\fermata} will only show a fermata -below, ignoring the fermata above. However, one can stick -scripts (just like fingerings) inside a chord, which means it is -possible to have as many articulations as desired. So, the solution is to -write the note as a chord and add the articulations inside the @code{<@dots{}>}. -" - doctitle = "Showing the same articulation above and below a note or chord" -} - -% The same as \flageolet, just a little smaller -smallFlageolet = -#(let ((m (make-articulation "flageolet"))) - (set! (ly:music-property m 'tweaks) - (acons 'font-size -2 - (ly:music-property m 'tweaks))) - m) - -\relative c' { - s4^"Wrong:" - c4_\fermata^\fermata % The second fermata is ignored! - 4^\smallFlageolet_\smallFlageolet - - s4^"Works if written inside a chord:" - 4 - 4 - 4 - 4 -} diff --git a/Documentation/snippets/new/simultaneous-headword.ly b/Documentation/snippets/new/simultaneous-headword.ly deleted file mode 100644 index e42121447e..0000000000 --- a/Documentation/snippets/new/simultaneous-headword.ly +++ /dev/null @@ -1,314 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% NR 1.5 Simultaneous notes - -% L. v. Beethoven, Op. 111 -% Piano sonata 32 -% Movt II - Arietta - Adagio molto semplice e cantabile -% measures 108 - 118 - -\layout { - \context { - \Score - \override SpacingSpanner #'base-shortest-duration = - #(ly:make-moment 1 18) - \override NonMusicalPaperColumn #'line-break-system-details = - #'((alignment-distances . (12))) - } -} - -trillFlat = -\once \override TrillSpanner #'(bound-details left text) = \markup { - \concat { - \musicglyph #"scripts.trill" - \translate #'(-0.5 . 1.9) - \fontsize #-7 - \with-dimensions #'(0 . 0) #'(0 . 0) - \flat - } -} - -\new PianoStaff << - - % RH - \new Staff << - \clef treble - \key c \major - \time 9/16 - \set Score.currentBarNumber = #108 - - % RH voice 1 - \new Voice { - - \voiceOne - s4. - s8. - - | - - s4. - a''8 \p \> [ ( - g''16 ] ) - - | - - g''4. - af''8 [ ( - g''16 ] ) - - | - - g''8. [ - g''8. - g''8. \pp ] - - | - - g''8. [ - af''8. - af''8. ] - - | - - af''8. [ - af''8. - af''8. ] - - | - \break - - \trillFlat - af''4. \startTrillSpan - ~ - af''8. - ~ - - | - - af''4. - ~ - af''8. - ~ - - | - - \oneVoice - 8. [ - a''8. \p \< - bf''8. ] - ~ - - | - - bf''8. [ - b''8. - c'''8. ] - ~ - - \bar "||" - - \key ef \major - c'''8. [ - cs'''8. \f ] \stopTrillSpan - r8. - - } - - % RH voice 2 - \new Voice { - \voiceTwo - \override Voice.TrillSpanner #'direction = #DOWN - d''4. \f \startTrillSpan - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - - d''8. \stopTrillSpan - \trillFlat - d''4. \startTrillSpan - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. \stopTrillSpan - ~ - - | - - \trillFlat - d''4. \startTrillSpan - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - - \once \override NoteColumn #'ignore-collision = ##t - \hideNotes - d''8. \stopTrillSpan - s4. - - | - - s8. - s8. - - } - - >> - - % LH staff - \new Staff { - \clef bass - \key c \major - \time 9/16 - - r8. - r8. - 8 [ ( - 16 ] ) - - | - - 4. - \clef treble - c''8 [ ( - b'16 ] ) - - | - - b'4. - c''8 [ ( - b'16 ] ) - - | - - b'8. [ - b'8. - b'8. ] - - | - - b'8. [ - bf'8. ] - \clef bass - 8 [ ( - 16 ] ) - - | - - 4. - \clef treble - f'8 [ ( - bf16 ] ) - - | - - << - - \new Voice { - \voiceOne - \override Voice.TrillSpanner #'direction = #UP - f'4. \startTrillSpan - ~ - f'8. - ~ - - | - - f'4. - ~ - f'8. - ~ - - | - - f'8. \stopTrillSpan - } - - \new Voice { - \voiceTwo - \override Voice.TrillSpanner #'direction = #DOWN - bf8. [ - bf8. - bf8. ] - - | - - bf8. [ - bf8. - bf8. ] - - | - - bf8. - } - - >> - - \oneVoice - r8. - r8. - - | - - r8. - r8. - r8. - \clef bass - - | - - \key ef \major - r8. - r8. - r8. - - } - ->> diff --git a/Documentation/snippets/new/slides-in-tablature.ly b/Documentation/snippets/new/slides-in-tablature.ly deleted file mode 100644 index 7a90e73be2..0000000000 --- a/Documentation/snippets/new/slides-in-tablature.ly +++ /dev/null @@ -1,38 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -Slides can be typeset in both @code{Staff} and @code{TabStaff} contexts: -" - doctitle = "Slides in tablature" -} - -slides = { - c'8\3(\glissando d'8\3) - c'8\3\glissando d'8\3 - \hideNotes - \grace { g16\3\glissando } - \unHideNotes - c'4\3 - \afterGrace d'4\3\glissando { - \stemDown \hideNotes - g16\3 } - \unHideNotes -} - -\score { - << - \new Staff { \clef "treble_8" \slides } - \new TabStaff { \slides } - >> - \layout { - \context { - \Score - \override Glissando #'minimum-length = #4 - \override Glissando #'springs-and-rods = - #ly:spanner::set-spacing-rods - \override Glissando #'thickness = #2 - } - } -} diff --git a/Documentation/snippets/new/staff-headword.ly b/Documentation/snippets/new/staff-headword.ly index 7547f03eb0..64ebf5d4d3 100644 --- a/Documentation/snippets/new/staff-headword.ly +++ b/Documentation/snippets/new/staff-headword.ly @@ -1,15 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \include "catalan.ly" -#(set-global-staff-size 15) -\paper{ - ragged-right=##t - line-width=17\cm - indent=0\cm -} - \header { - lsrtags = "headwords" + lsrtags = "headword" texidoc = "" doctitle = "headword" } @@ -117,10 +110,7 @@ lower = \relative do { >> >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 4) - } + \tempo 4 = 72 } } diff --git a/Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly b/Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly deleted file mode 100644 index 33bf9a0029..0000000000 --- a/Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly +++ /dev/null @@ -1,21 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "fretted-strings" - texidoc = " -The direction of stems is controlled the same way in tablature as in -traditional notation. Beams can be made horizontal, as shown in this -example. -" - doctitle = "Stem and beam behavior in tablature" -} - -\new TabStaff { - \relative c { - \tabFullNotation - g16 b d g b d g b - \stemDown - \override Beam #'damping = #+inf.0 - g,,16 b d g b d g b - } -} diff --git a/Documentation/snippets/new/strict-beat-beaming.ly b/Documentation/snippets/new/strict-beat-beaming.ly new file mode 100644 index 0000000000..e61446912a --- /dev/null +++ b/Documentation/snippets/new/strict-beat-beaming.ly @@ -0,0 +1,21 @@ +\version "2.16.0" + +\header { + texidoc = " +Beamlets can be set to point in the direction of the beat to which they +belong. The first beam avoids sticking out flags (the default); +the second beam strictly follows the beat. +" + + doctitle = "Strict beat beaming" + + lsrtags = "rhythms" +} + + +\relative c'' { + \time 6/8 + a8. a16 a a + \set strictBeatBeaming = ##t + a8. a16 a a +} diff --git a/Documentation/snippets/new/string-number-extender-lines.ly b/Documentation/snippets/new/string-number-extender-lines.ly new file mode 100644 index 0000000000..d05686f651 --- /dev/null +++ b/Documentation/snippets/new/string-number-extender-lines.ly @@ -0,0 +1,34 @@ +\version "2.16.0" + +\header { + lsrtags = "editorial-annotations, text, fretted-strings, tweaks-and-overrides, scheme-language" + + texidoc = " +Make an extender line for string number indications, showing that a +series of notes is supposed to be played all on the same string. + +" + doctitle = "String number extender lines" +} + +stringNumberSpanner = +#(define-music-function (parser location StringNumber) (string?) + #{ + \override TextSpanner #'style = #'solid + \override TextSpanner #'font-size = #-5 + \override TextSpanner #'(bound-details left stencil-align-dir-y) = #CENTER + \override TextSpanner #'(bound-details left text) = \markup { \circle \number #StringNumber } + #}) + + +\relative c { + \clef "treble_8" + \stringNumberSpanner "5" + \textSpannerDown + a8\startTextSpan + b c d e f\stopTextSpan + \stringNumberSpanner "4" + g\startTextSpan a + bes4 a g2\stopTextSpan +} + diff --git a/Documentation/snippets/new/subdividing-beams.ly b/Documentation/snippets/new/subdividing-beams.ly deleted file mode 100644 index 968bca7559..0000000000 --- a/Documentation/snippets/new/subdividing-beams.ly +++ /dev/null @@ -1,40 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "rhythms" - - texidoc = " -The beams of consecutive 16th (or shorter) notes are, by default, not -subdivided. That is, the three (or more) beams stretch unbroken over -entire groups of notes. This behavior can be modified to subdivide -the beams into sub-groups by setting the property -@code{subdivideBeams}. When set, multiple beams will be subdivided at -intervals defined by the current value of @code{baseMoment} by reducing -the multiple beams to just one beam between the sub-groups. Note that -@code{baseMoment} defaults to one over the denominator of the current -time signature if not set explicitly. It must be set to a fraction -giving the duration of the beam sub-group using the -@code{ly:make-moment} function, as shown in this snippet. Also, when -@code{baseMoment} is changed, @code{beatStructure} should also be changed -to match the new @code{baseMoment}: - -" - doctitle = "Subdividing beams" -} - -\relative c'' { - c32[ c c c c c c c] - \set subdivideBeams = ##t - c32[ c c c c c c c] - - % Set beam sub-group length to an eighth note - \set baseMoment = #(ly:make-moment 1 8) - \set beatStructure = #'(2 2 2 2) - c32[ c c c c c c c] - - % Set beam sub-group length to a sixteenth note - \set baseMoment = #(ly:make-moment 1 16) - \set beatStructure = #'(4 4 4 4) - c32[ c c c c c c c] -} - diff --git a/Documentation/snippets/new/text-headword.ly b/Documentation/snippets/new/text-headword.ly deleted file mode 100644 index 9429ca4175..0000000000 --- a/Documentation/snippets/new/text-headword.ly +++ /dev/null @@ -1,234 +0,0 @@ -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% NR 1.8 Text - -% L. v. Beethoven, Op. 110 -% Piano sonata 31 -% measures 1 - 7 - -\layout { - \context { - \Score - \override SpacingSpanner #'base-shortest-duration = - #(ly:make-moment 1 20) - } -} - -\new PianoStaff << - - % RH staff - \new Staff { - \clef treble - \key af \major - \time 3/4 - - \once \override TextScript #'staff-padding = #4 - 4. ( - _ \markup { \dynamic p \italic { con amabilità } } - 8 ) - 8. [ - 16 ] - - | - - 4 - 2 - _ \markup { \italic { ten. } } - - | - - << - - \new Voice { - \voiceOne - ef''4. ( - df''8 [ ) - ef'' ( - f'' ) ] - - | - - \once \override TextScript #'staff-padding = #4 - ef''8. ( - _ \markup { \italic { tranqu. } } - d''16 ) - df''8 \trill \fermata - _ \markup { \italic { ten. } } - } - - \new Voice { - \voiceTwo - af'4. - af'8 [ - af'8 - af'8 ] - - | - - g'4 - g'8 - } - - >> - - \oneVoice - \once \override TextScript #'staff-padding = #4 - df''32 - _ \markup { \italic dolce } - c''32 - df''32 - ef''32 - \acciaccatura { df''[ ef'' ] } - f''8 - ef''16 - df''16 - - | - \break - \overrideProperty "Score.NonMusicalPaperColumn" - #'line-break-system-details #'((alignment-distances . (12))) - - c''4. ( - ^ \markup \italic { cantabile, con intimissimo sentimento, - ma sempre molto dolce e semplice } - ef''4 - af''8 ) - - | - - af''4 ( - g''2 ) - - | - - bf''4. ( - g''4 - ef''8 ) - - | - } - - % LH - \new Staff { - \clef bass - \key af \major - \time 3/4 - - 4. ( - 8 ) - 8. [ - 16 ] - - | - - 4 - 2 ^ \markup { \italic ten. } - - | - - << - - \new Voice { - \voiceOne - ef8 [ ( - af8 - c'8 - bf8 ) - c'8 ( \staccato - df'8 ] ) \staccato - - | - - bf4 - bf8 ^ \markup { \italic ten. } - } - - \new Voice { - \voiceTwo - c4. ( - f8 [ ) - ef8 ( \staccato - df8 ] ) \staccato - - | - - ef4 - ef8 \fermata - } - - >> - - \oneVoice - r8 - r4 - \clef treble - - | - - \override Staff.SustainPedalLineSpanner #'outside-staff-priority = #1000 - \override Staff.SustainPedalLineSpanner #'staff-padding = #7 - \once \override TextScript #'padding = #2 - af16 \sustainOn - ^ \markup \italic { non staccato } - _ \markup \italic { molto \concat { \dynamic { p } , } sempre tranquillo - ed egualmente, non rubato } - 16 - 16 - 16 - af16 - 16 - 16 - 16 - af16 \sustainOn - 16 - 16 - 16 - - | - - bf16 \sustainOn - 16 - 16 - 16 - bf16 \sustainOn - 16 - 16 - 16 - bf16 - 16 - 16 - 16 - - | - - \override Staff.SustainPedalLineSpanner #'staff-padding = #4 - df'16 \sustainOn - 16 - 16 - 16 - df'16 - 16 - 16 - 16 - df'16 \sustainOn - 16 - 16 - 16 - - | - } - ->> diff --git a/Documentation/snippets/new/unfretted-headword.ly b/Documentation/snippets/new/unfretted-headword.ly deleted file mode 100644 index 72ea357e53..0000000000 --- a/Documentation/snippets/new/unfretted-headword.ly +++ /dev/null @@ -1,230 +0,0 @@ -% #!lilypond lcp-extract.ly -*- coding: utf-8; -*- - -%%% -%%% les-cinq-pieds: -%%% extract for the lilypond documentaton project -%%% - -%% Title: Les cinq pieds -%% Composer: David Séverin -%% Date: Juillet 2007 -%% Instrument: Violon Solo -%% Dedication: A mon épouse Lívia De Souza Vidal -%% Additional: avec l'aide de Krzysztof Wagenaar - -%% Statement: - -%% Here by, I, the composer, agree that this extract of my composition -%% be in the public domain and can be part of, used and presented in -%% the LilyPond Documention Project. - -%% Statement Date: Octber the 9th, 2008 - - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - - -\version "2.14.0" -#(set-global-staff-size 15) - -%%% -%%% Abreviations -%%% - -db = \markup { \musicglyph #"scripts.downbow" } -dub = \markup { \line { \musicglyph #"scripts.downbow" " " \musicglyph #"scripts.upbow" } } -dubetc = \markup { \line { \musicglyph #"scripts.downbow" " " \musicglyph #"scripts.upbow" "..." } } - -ub = \markup { \musicglyph #"scripts.upbow" } -udb = \markup { \line { \musicglyph #"scripts.upbow" " " \musicglyph #"scripts.downbow" } } -udbetc = \markup { \line { \musicglyph #"scripts.upbow" " " \musicglyph #"scripts.downbow" "..." } } - -fermaTa = \markup \musicglyph #"scripts.ufermata" - -accel = \markup \tiny \italic \bold "accel..." -ritar = \markup \tiny \italic \bold "ritar..." - -ignore = \override NoteColumn #'ignore-collision = ##t - - -%% -%% Strings -%% - -svib = \markup \small "s. vib." -pvib = \markup \small "p. vib." -mvib = \markup \small "m. vib." -sulp = \markup \small "s.p." -norm = \markup \small "n." - -quatre = \markup \teeny "IV" - - -%% -%% Shifting Notes -%% - -shift = \once \override NoteColumn #'force-hshift = #0.9 -shifta = \once \override NoteColumn #'force-hshift = #1.2 -shiftb = \once \override NoteColumn #'force-hshift = #1.4 - - -%% -%% Hairpin -%% - -% aniente = "a niente" -aniente = \once \override Hairpin #'circled-tip = ##t - - -%% -%% Tuplets -%% - -tupletbp = \once \override Staff.TupletBracket #'padding = #2.25 - - -%% -%% Flag [Note Head - Stem] -%% - -noflag = \once \override Stem #'flag-style = #'no-flag - -%%% -%%% Functions -%%% - -#(define-markup-command (colmark layout props args) - (markup-list?) - (let ((entries (cons (list '(baseline-skip . 2.3)) props) - )) - (interpret-markup layout entries - (make-column-markup - (map (lambda (arg) - (markup arg)) - (reverse args)))))) - - -%%% -%%% Instruments -%%% - -ViolinSolo = \relative c' { - - \voiceOne - - \set Score.markFormatter = #format-mark-box-numbers - \override Score.VoltaBracket #'font-name = #"sans" - \override Score.VoltaBracket #'extra-offset = #'(0 . 1) - \override SpacingSpanner #'uniform-stretching = ##t - - - %% Measure 1 - \time 25/8 - \mark \default - r2 ^\markup \colmark { \italic "fatigué" " " \bold "lentement"} r4 r r8 - << - { \shift d2 \glissando ^\markup \colmark { \quatre \dubetc \svib } \shifta e1 } \\ - { d2 \open \mf \< ~ \aniente d1 \! \> r4 r ^\markup \colmark { " " \fermaTa } \! } - >> - - - %% Measure 2 - \time 7/4 - \set Score.repeatCommands = #'((volta "1) n. 2) s.p.")) - << - { \shift d2 \glissando ^\markup \colmark { \quatre \udbetc } \shifta e1 } \\ - { d2 \open \mf \< ~ d1 \! \> ~ d4 ^\markup \colmark { " " \fermaTa } \! } - >> - \set Score.repeatCommands = #'((volta #f)) - - - %% Measure 3 - \time 15/4 - << - { \shift d2 \glissando ^\markup \colmark { \quatre \dubetc \pvib \norm } \shifta e1 \glissando d2 } \\ - { d2 \open \mf \< ~ d1 ~ d2 \ff ~ d1 \> ~ d2 ^\markup \colmark { " " " " \svib } ~ d4 \pp} - >> - \break - - %% Measure 4 - \time 4/4 - \stemUp - \tupletDown - \times 2/3 { d4 ^\markup \colmark { \quatre \db \accel } d d } - \times 2/3 { d4 ^\markup \colmark { " " \db " " \sulp } d d } - - - - %% Measure 5 - \time 5/4 - \tupletbp \times 2/3 { d8 \mf \< ^\markup \colmark { \quatre \db \norm } d _\open d } - \tupletbp \times 2/3 { d8 ^\markup \colmark { " " \db \sulp } d _\open d } - \tupletbp \times 2/3 { d16 ^\markup \colmark { " " \db \norm } d _\open d d d _\open d } - d2 \ff ^\markup \colmark { " " \pvib } \> - - - %% Measure 6 - \time 5/8 - \once \override Beam #'grow-direction = #RIGHT % \featherDurations #(ly:make-moment 2 3) - { d16 \staccato - [ d \staccato d \staccato d \staccato d \staccato d \staccato d \staccato d \staccato d \staccato d \staccato] - } - \break - - - %% Measure 7 - \time 7/4 - \tupletbp \times 2/3 { d16 ^\markup \colmark { \quatre } d _\open d d d _\open d } - \tupletbp \times 2/3 { d8 ^\markup \colmark { " " \db } d _\open d } - \tupletbp \times 2/3 { d8 ^\markup \colmark { " " \db " " \sulp } d _\open d } - \times 2/3 { d4 ^\markup \colmark { \quatre \db \ritar \norm } d d } - \times 2/3 { d4 ^\markup \colmark { " " \db " " \sulp } d d \ppp ~ } - - - %% Measure 8 - d4 ^\markup \colmark { " " " " \pvib \norm } - deh2 d dih \< - - - %% Measure 9 - << - { \shift d2 \glissando ^\markup \colmark { \quatre } \shifta e1 } \\ - { d2 \open ~ d1 ^\markup \colmark { " " " " \mvib } } - >> - \breathe r4 \! - -} - - -%%% -%%% Score -%%% - -\score { - - << - \relative << - \new Staff \ViolinSolo - >> - - \override Score.Rest #'transparent = ##t - \set Score.defaultBarType = "empty" - >> - - \layout { - indent = 0.0 - \context { - \Staff - \remove "Time_signature_engraver" - } - \context { - \Score - \remove "Bar_number_engraver" - } - } -} diff --git a/Documentation/snippets/new/using-alternative-flag-styles.ly b/Documentation/snippets/new/using-alternative-flag-styles.ly new file mode 100644 index 0000000000..d6b327d6ed --- /dev/null +++ b/Documentation/snippets/new/using-alternative-flag-styles.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms, tweaks-and-overrides" + + texidoc = " +Alternative styles of flag on eighth and shorter notes can be displayed +by overriding the @code{stencil} property of @code{Flag}. Valid values +are @code{modern-straight-flag} and @code{old-straight-flag}. + +" + doctitle = "Using alternative flag styles" +} + +testnotes = { + \autoBeamOff + c8 d16 c32 d64 \acciaccatura { c8 } d64 r4 +} + +\relative c' { + \time 2/4 + \testnotes + + \override Flag #'stencil = #modern-straight-flag + \testnotes + + \override Flag #'stencil = #old-straight-flag + \testnotes + + \revert Flag #'stencil + \testnotes +} + diff --git a/Documentation/snippets/new/using-grace-note-slashes-with-normal-heads.ly b/Documentation/snippets/new/using-grace-note-slashes-with-normal-heads.ly new file mode 100644 index 0000000000..024c95dbae --- /dev/null +++ b/Documentation/snippets/new/using-grace-note-slashes-with-normal-heads.ly @@ -0,0 +1,18 @@ +\version "2.16.0" + +\header { + lsrtags = "rhythms" + + texidoc = " +The slash through the stem found in acciaccaturas can be applied in +other situations. + +" + doctitle = "Using grace note slashes with normal heads" +} + +\relative c'' { + \override Flag #'stroke-style = #"grace" + c8( d2) e8( f4) +} + diff --git a/Documentation/snippets/new/using-ly-grob-object-to-access-grobs-with--tweak.ly b/Documentation/snippets/new/using-ly-grob-object-to-access-grobs-with--tweak.ly deleted file mode 100644 index eed7462b43..0000000000 --- a/Documentation/snippets/new/using-ly-grob-object-to-access-grobs-with--tweak.ly +++ /dev/null @@ -1,75 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "tweaks-and-overrides" - - texidoc = " -Some grobs can be accessed @qq{laterally} from within another grob's -callback. These are usually listed as @qq{layout objects} in the -@qq{Internal properties} section of a grob-interface. The function -@code{ly:grob-object} is used to access these grobs. - - -Demonstrated below are some ways of accessing grobs from within a -NoteHead callback, but the technique is not limited to NoteHeads. -However, the NoteHead callback is particularly important, since it is -the implicit callback used by the @code{\\tweak} command. - - -The example function defined below (\"display-grobs\") is probably not -that useful, but it demonstrates that the grobs are indeed being -accessed. - - -Example console output: - - -@example --------------------- -#-Grob Accidental - -#-Grob Arpeggio - -#-Grob Stem - -@end example - - -" - doctitle = "Using ly:grob-object to access grobs with \\tweak" -} - -#(define (notehead-get-accidental notehead) - ;; notehead is grob - (ly:grob-object notehead 'accidental-grob)) - -#(define (notehead-get-arpeggio notehead) - ;; notehead is grob - (let ((notecolumn (notehead-get-notecolumn notehead))) - (ly:grob-object notecolumn 'arpeggio))) - -#(define (notehead-get-notecolumn notehead) - ;; notehead is grob - (ly:grob-parent notehead X)) - -#(define (notehead-get-stem notehead) - ;; notehead is grob - (let ((notecolumn (notehead-get-notecolumn notehead))) - (ly:grob-object notecolumn 'stem))) - -#(define (display-grobs notehead) - ;; notehead is grob - (let ((accidental (notehead-get-accidental notehead)) - (arpeggio (notehead-get-arpeggio notehead)) - (stem (notehead-get-stem notehead))) - (format #t "~2&~a\n" (make-string 20 #\-)) - (for-each - (lambda (x) (format #t "~a\n" x)) - (list accidental arpeggio stem)))) - -\relative c' { - %% display grobs for each note head: - %\override NoteHead #'before-line-breaking = #display-grobs - 1\arpeggio -} diff --git a/Documentation/snippets/new/using-the-whiteout-property.ly b/Documentation/snippets/new/using-the-whiteout-property.ly deleted file mode 100644 index 9464915492..0000000000 --- a/Documentation/snippets/new/using-the-whiteout-property.ly +++ /dev/null @@ -1,30 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "expressive-marks, editorial-annotations" - texidoc = " -Any graphical object can be printed over a white background to -mask parts of objects that lie beneath. This can be useful to -improve the appearance of collisions in complex situations when -repositioning objects is impractical. It is necessary to explicitly -set the @code{layer} property to control which objects are masked -by the white background. - -In this example the collision of the tie with the time signature is -improved by masking out the part of the tie that crosses the time -signature by setting the @code{whiteout} property of @code{TimeSignature}. -To do this @code{TimeSignature} is moved to a layer above @code{Tie}, which -is left in the default layer of 1, and @code{StaffSymbol} is moved to a -layer above @code{TimeSignature} so it is not masked. -" - doctitle = "Using the whiteout property" -} - -{ - \override Score.StaffSymbol #'layer = #4 - \override Staff.TimeSignature #'layer = #3 - b'2 b'~ - \once \override Staff.TimeSignature #'whiteout = ##t - \time 3/4 - b' r4 -} diff --git a/Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly b/Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly deleted file mode 100644 index 7c99b53f18..0000000000 --- a/Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly +++ /dev/null @@ -1,101 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "vocal-music, keyboards, template" - - texidoc = " -This template adds an automatic piano reduction to the standard SATB -vocal score demonstrated in @qq{Vocal ensemble template}. This -demonstrates one of the strengths of LilyPond – you can use a music -definition more than once. If any changes are made to the vocal notes -(say, @code{tenorMusic}), then the changes will also apply to the piano -reduction. -" - doctitle = "Vocal ensemble template with automatic piano reduction" -} - -\paper { - top-system-spacing #'basic-distance = #10 - score-system-spacing #'basic-distance = #20 - system-system-spacing #'basic-distance = #20 - last-bottom-spacing #'basic-distance = #10 -} - -global = { - \key c \major - \time 4/4 -} - -sopMusic = \relative c'' { - c4 c c8[( b)] c4 -} -sopWords = \lyricmode { - hi hi hi hi -} - -altoMusic = \relative c' { - e4 f d e -} -altoWords =\lyricmode { - ha ha ha ha -} - -tenorMusic = \relative c' { - g4 a f g -} -tenorWords = \lyricmode { - hu hu hu hu -} - -bassMusic = \relative c { - c4 c g c -} -bassWords = \lyricmode { - ho ho ho ho -} - -\score { - << - \new ChoirStaff << - \new Lyrics = "sopranos" \with { - % This is needed for lyrics above a staff - \override VerticalAxisGroup #'staff-affinity = #DOWN - } - \new Staff = "women" << - \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> } - \new Voice = "altos" { \voiceTwo << \global \altoMusic >> } - >> - \new Lyrics = "altos" - \new Lyrics = "tenors" \with { - % This is needed for lyrics above a staff - \override VerticalAxisGroup #'staff-affinity = #DOWN - } - - \new Staff = "men" << - \clef bass - \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> } - \new Voice = "basses" { \voiceTwo << \global \bassMusic >> } - >> - \new Lyrics = "basses" - \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords - \context Lyrics = "altos" \lyricsto "altos" \altoWords - \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords - \context Lyrics = "basses" \lyricsto "basses" \bassWords - >> - \new PianoStaff << - \new Staff << - \set Staff.printPartCombineTexts = ##f - \partcombine - << \global \sopMusic >> - << \global \altoMusic >> - >> - \new Staff << - \clef bass - \set Staff.printPartCombineTexts = ##f - \partcombine - << \global \tenorMusic >> - << \global \bassMusic >> - >> - >> - >> -} diff --git a/Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly b/Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly deleted file mode 100644 index 17a901c06e..0000000000 --- a/Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly +++ /dev/null @@ -1,99 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "vocal-music, contexts-and-engravers, template" - texidoc = " -This template creates a score which starts with a solo verse and -continues into a refrain for two voices. It also demonstrates the -use of spacer rests within the @code{\global} variable to define -meter changes (and other elements common to all parts) throughout -the entire score. -" - doctitle = "Vocal ensemble template with verse and refrain" -} - -global = { - \key g \major - - % verse - \time 3/4 - s2.*2 - \break - - % refrain - \time 2/4 - s2*2 - \bar "|." -} - -SoloNotes = \relative g' { - \clef "treble" - - % verse - g4 g g | - b4 b b | - - % refrain - R2*2 | -} - -SoloLyrics = \lyricmode { - One two three | - four five six | -} - -SopranoNotes = \relative c'' { - \clef "treble" - - % verse - R2.*2 | - - % refrain - c4 c | - g4 g | -} - -SopranoLyrics = \lyricmode { - la la | - la la | -} - -BassNotes = \relative c { - \clef "bass" - - % verse - R2.*2 | - - % refrain - c4 e | - d4 d | -} - -BassLyrics = \lyricmode { - dum dum | - dum dum | -} - -\score { - << - \new Voice = "SoloVoice" << \global \SoloNotes >> - \new Lyrics \lyricsto "SoloVoice" \SoloLyrics - - \new ChoirStaff << - \new Voice = "SopranoVoice" << \global \SopranoNotes >> - \new Lyrics \lyricsto "SopranoVoice" \SopranoLyrics - - \new Voice = "BassVoice" << \global \BassNotes >> - \new Lyrics \lyricsto "BassVoice" \BassLyrics - >> - >> - \layout { - ragged-right = ##t - \context { \Staff - % these lines prevent empty staves from being printed - \RemoveEmptyStaves - \override VerticalAxisGroup #'remove-first = ##t - } - } -} - diff --git a/Documentation/snippets/new/vocal-ensemble-template.ly b/Documentation/snippets/new/vocal-ensemble-template.ly deleted file mode 100644 index da5498872f..0000000000 --- a/Documentation/snippets/new/vocal-ensemble-template.ly +++ /dev/null @@ -1,94 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags = "vocal-music, template" - - texidoc = " -Here is a standard four-part SATB vocal score. With larger ensembles, -it is often useful to include a section which is included in all parts. -For example, the time signature and key signature are almost always the -same for all parts. Like in the @qq{Hymn} template, the four voices are -regrouped on only two staves. -" - doctitle = "Vocal ensemble template" -} - -\paper { - top-system-spacing #'basic-distance = #10 - score-system-spacing #'basic-distance = #20 - system-system-spacing #'basic-distance = #20 - last-bottom-spacing #'basic-distance = #10 -} - -global = { - \key c \major - \time 4/4 -} - -sopMusic = \relative c'' { - c4 c c8[( b)] c4 -} -sopWords = \lyricmode { - hi hi hi hi -} - -altoMusic = \relative c' { - e4 f d e -} -altoWords = \lyricmode { - ha ha ha ha -} - -tenorMusic = \relative c' { - g4 a f g -} -tenorWords = \lyricmode { - hu hu hu hu -} - -bassMusic = \relative c { - c4 c g c -} -bassWords = \lyricmode { - ho ho ho ho -} - -\score { - \new ChoirStaff << - \new Lyrics = "sopranos" \with { - % this is needed for lyrics above a staff - \override VerticalAxisGroup #'staff-affinity = #DOWN - } - \new Staff = "women" << - \new Voice = "sopranos" { - \voiceOne - << \global \sopMusic >> - } - \new Voice = "altos" { - \voiceTwo - << \global \altoMusic >> - } - >> - \new Lyrics = "altos" - \new Lyrics = "tenors" \with { - % this is needed for lyrics above a staff - \override VerticalAxisGroup #'staff-affinity = #DOWN - } - \new Staff = "men" << - \clef bass - \new Voice = "tenors" { - \voiceOne - << \global \tenorMusic >> - } - \new Voice = "basses" { - \voiceTwo << \global \bassMusic >> - } - >> - \new Lyrics = "basses" - \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords - \context Lyrics = "altos" \lyricsto "altos" \altoWords - \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords - \context Lyrics = "basses" \lyricsto "basses" \bassWords - >> -} - diff --git a/Documentation/snippets/new/vocal-headword.ly b/Documentation/snippets/new/vocal-headword.ly deleted file mode 100644 index 0ad4130de5..0000000000 --- a/Documentation/snippets/new/vocal-headword.ly +++ /dev/null @@ -1,73 +0,0 @@ -\version "2.14.0" - -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -\layout { - \context { - \Score - \override PaperColumn #'keep-inside-line = ##t - \override NonMusicalPaperColumn #'keep-inside-line = ##t - } -} - -% L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale -% mm. 216 -- 236 -% Text: F. von Schiller - -\score { - \new Staff \relative c' { - \set Score.currentBarNumber = 216 - \bar "" % make first bar number be shown - \clef bass \key d \minor \time 3/4 - % \tempo "Presto" - % \compressFullBarRests R2.*8 - \tempo "Recitativo" - \autoBeamOff - r4^\markup { \small Baritono } r a - \appoggiatura a8 e'2. ~ - e4 d8[ cis d e] - e4 g, r8 g - bes2 a8 e - g4 f r - R2.*2 - gis2 gis4 - r4 d'4. b8 - b4 gis8([ a b cis] - e8[ d cis d)] b([ gis)] - e8 d d4 fis8([ e)] - d4 cis r - \key d \major - r4 r a' - d4.( e8[ fis e)] - e([ d)] d([ cis d a)] - g8([ fis)] fis([ e d c)] - c8([ b)] g'2~ - \once \override Script #'outside-staff-priority = #1 % put fermata closer to staff - g4.\fermata ^\markup { \small \italic "ad libitum" } e8[ cis!] d - d8 a a4 r \bar "||" - - % \time 4/4 \tempo "Allegro assai" - % R1 - % e''4^\f d r2 - % R1 - % e4( ^\f d2) a8([ g)] - } - \addlyrics { - O Freun -- _ _ de, nicht die -- _ se Tö -- ne! - Son -- dern laßt uns an -- _ ge -- neh -- me -- re an -- stim -- men, - und freu -- _ _ _ _ _ _ _ den -- vol -- le -- re! - % Freu -- de, Freu -- de,__ - } -} - diff --git a/Documentation/snippets/new/wind-headword.ly b/Documentation/snippets/new/wind-headword.ly deleted file mode 100644 index cadbc37601..0000000000 --- a/Documentation/snippets/new/wind-headword.ly +++ /dev/null @@ -1,52 +0,0 @@ -\version "2.14.0" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 2.whatever Wind - -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} - -% Tchaikovsky -% Nutcracker Suite, VII Dance of the Merlitons -\score { - \new StaffGroup << - \new Staff \relative c'' { - \set Staff.instrumentName = "Flauto I,II" - \once \override Score.RehearsalMark #'self-alignment-X = #-1 - \once \override Score.RehearsalMark #'break-align-symbols = -#'(time-signature) - \once \override Score.TimeSignature -#'break-align-anchor-alignment = #LEFT - \once \override Score.RehearsalMark #'padding = #4 - \mark \markup \large \bold {Moderato assai} - \key d \major - \time 2/4 - \compressFullBarRests - R2*2 - 16-.\p -. -. -. 8-. -. - -.\< 32( 4--)\mf - 16-. -. -. -. - (\> ) -. -.\! - 4--\sf \acciaccatura {8} 4--\mf - } - \new Staff \relative c' { - \set Staff.instrumentName = "Flauto III" - \key d \major - \time 2/4 - \compressFullBarRests - R2*2_\markup{Gr.Fl.} - fis16-.\p e-. fis-. e-. fis8-. e-. - g8-.\< fis32( a d fis a4--)\mf - b16-. a-. b-. a-. g(\> fis) d-. a-.\! - g4--\sf \acciaccatura fis'8 g4--\mf - } - >> -} - diff --git a/Documentation/snippets/new/woodwind-diagrams-key-lists.ly b/Documentation/snippets/new/woodwind-diagrams-key-lists.ly index bdb803cfd9..b9eaaa8895 100644 --- a/Documentation/snippets/new/woodwind-diagrams-key-lists.ly +++ b/Documentation/snippets/new/woodwind-diagrams-key-lists.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "winds" @@ -7,19 +7,24 @@ The snippet below produces a list of all possible keys and key settings for woodwind diagrams as defined in @file{scm/define-woodwind-diagrams.scm}. The list will be displayed -on the console and in the log file, but not in the music. +in the log file, but not in the music. If output to the console +is wanted, omit the @code{(current-error-port)} from the commands. " doctitle = "Woodwind diagrams key lists" } -#(print-keys-verbose 'piccolo) -#(print-keys-verbose 'flute) -#(print-keys-verbose 'flute-b-extension) -#(print-keys-verbose 'oboe) -#(print-keys-verbose 'clarinet) -#(print-keys-verbose 'bass-clarinet) -#(print-keys-verbose 'low-bass-clarinet) -#(print-keys-verbose 'saxophone) -#(print-keys-verbose 'baritone-saxophone) -#(print-keys-verbose 'bassoon) -#(print-keys-verbose 'contrabassoon) +#(print-keys-verbose 'piccolo (current-error-port)) +#(print-keys-verbose 'flute (current-error-port)) +#(print-keys-verbose 'flute-b-extension (current-error-port)) +#(print-keys-verbose 'tin-whistle (current-error-port)) +#(print-keys-verbose 'oboe (current-error-port)) +#(print-keys-verbose 'clarinet (current-error-port)) +#(print-keys-verbose 'bass-clarinet (current-error-port)) +#(print-keys-verbose 'low-bass-clarinet (current-error-port)) +#(print-keys-verbose 'saxophone (current-error-port)) +#(print-keys-verbose 'soprano-saxophone (current-error-port)) +#(print-keys-verbose 'alto-saxophone (current-error-port)) +#(print-keys-verbose 'tenor-saxophone (current-error-port)) +#(print-keys-verbose 'baritone-saxophone (current-error-port)) +#(print-keys-verbose 'bassoon (current-error-port)) +#(print-keys-verbose 'contrabassoon (current-error-port)) diff --git a/Documentation/snippets/new/woodwind-diagrams-listing.ly b/Documentation/snippets/new/woodwind-diagrams-listing.ly deleted file mode 100644 index b18121fbf1..0000000000 --- a/Documentation/snippets/new/woodwind-diagrams-listing.ly +++ /dev/null @@ -1,95 +0,0 @@ -\version "2.14.0" - -\header { - lsrtags="winds" - texidoc=" -The following music shows all of the woodwind diagrams currently -defined in LilyPond. -" - doctitle = "Woodwind diagrams listing" - -} - -\relative c' { - \textLengthOn - c1^ - \markup { - \center-column { - 'piccolo - " " - \woodwind-diagram - #'piccolo - #'() - } - } - - c1^ - \markup { - \center-column { - 'flute - " " - \woodwind-diagram - #'flute - #'() - } - } - c1^\markup { - \center-column { - 'oboe - " " - \woodwind-diagram - #'oboe - #'() - } - } - - c1^\markup { - \center-column { - 'clarinet - " " - \woodwind-diagram - #'clarinet - #'() - } - } - - c1^\markup { - \center-column { - 'bass-clarinet - " " - \woodwind-diagram - #'bass-clarinet - #'() - } - } - - c1^\markup { - \center-column { - 'saxophone - " " - \woodwind-diagram - #'saxophone - #'() - } - } - - c1^\markup { - \center-column { - 'bassoon - " " - \woodwind-diagram - #'bassoon - #'() - } - } - - c1^\markup { - \center-column { - 'contrabassoon - " " - \woodwind-diagram - #'contrabassoon - #'() - } - } -} diff --git a/Documentation/snippets/non-default-tuplet-numbers.ly b/Documentation/snippets/non-default-tuplet-numbers.ly index a838305c76..8e74c262c7 100644 --- a/Documentation/snippets/non-default-tuplet-numbers.ly +++ b/Documentation/snippets/non-default-tuplet-numbers.ly @@ -1,55 +1,23 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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í -como para añadir una figura al número o a la fracción de la -agrupación. - -" - - doctitlees = "Números de agrupación especial distintos a los predeterminados" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -LilyPond stellt auch Formatierungsfunktionen zur Verfügung, mit denen -N-tolennummern gesetzt werden können, die sich von dem eigentlichen Bruch -unterscheiden. Auch ein Notenwert kann zu Nenner oder Zähler des Bruchs -hinzugefügt werden. -" - doctitlede = "Nicht-standard-N-tolennummern" - - -%% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89 - texidocfr = " -LilyPond sait aussi gérer des nolets dont le chiffrage imprimé ne -correspond pas exactement à la fraction de mesure à laquelle ils se -réfèrent, tout comme ceux auxquels une valeur de note vient en complément -au chiffre. -" - doctitlefr = "Nolets au chiffrage inhabituel" - lsrtags = "rhythms" texidoc = " -LilyPond also provides formatting functions to print tuplet numbers different -than the actual fraction, as well as to append a note value to the tuplet -number or tuplet fraction. +LilyPond also provides formatting functions to print tuplet numbers +different than the actual fraction, as well as to append a note value +to the tuplet number or tuplet fraction. + " doctitle = "Non-default tuplet numbers" } % begin verbatim - \relative c'' { \once \override TupletNumber #'text = #(tuplet-number::non-default-tuplet-denominator-text 7) diff --git a/Documentation/snippets/non-traditional-key-signatures.ly b/Documentation/snippets/non-traditional-key-signatures.ly index e0268b2d60..188f72b3d6 100644 --- a/Documentation/snippets/non-traditional-key-signatures.ly +++ b/Documentation/snippets/non-traditional-key-signatures.ly @@ -1,115 +1,42 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Armaduras de tonalidad no tradicionales" - texidoces = " + lsrtags = "contemporary-notation, pitches, really-cool, staff-notation, version-specific" -La muy utilizada instrucción @code{\\key} establece la propiedad -@code{keySignature} property, dentro del contexto @code{Staff}. - -Para crear armaduras de tonalidad no estándar, ajuste esta -propiedad directamente. El formato de esta instrucción es una -lista: - -@code{\\set Staff.keySignature = #`(((octava . paso) . alteración) -((octava . paso) . alteración) ...)} donde, para cada elemento -dentro de la lista, @code{octava} especifica la octava -(siendo@tie{}cero la octava desde el Do@tie{}central hasta el Si -por encima), @code{paso} especifica la nota dentro de la octava -(cero@tie{}significa@tie{}Do y 6@tie{}significa@tie{}Si), y -@code{alteración} es @code{,SHARP ,FLAT ,DOUBLE-SHARP} -etc. (observe la coma precedente.) - -De forma alternativa, para cada elemento de la lista el uso del -formato más conciso @code{(paso . alteración)} especifica que la -misma alteración debe estar en todas las octavas. - -He aquí un ejemplo de una posible armadura para generar una escala -exátona: -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Untypische Tonarten" - texidocde = " -Der üblicherweise benutzte @code{\\key}-Befehl setzt die -@code{keySignature}-Eigenschaft im @code{Staff}-Kontext. - -Um untypische Tonartenvorzeichen zu erstellen, muss man diese Eigenschaft -direkt setzen. Das Format für den Befehl ist eine Liste: @code{ \\set -Staff.keySignature = #`(((Oktave . Schritt) . Alteration) ((Oktave -. Schritt) . Alteration) ...)} wobei für jedes Element in der Liste -@code{Oktave} die Oktave angibt (0@tie{}ist die Oktave vom -eingestrichenen@tie{}C bis zum eingestrichenen@tie{}H), @code{Schritt} gibt -die Note innerhalb der Oktave an (0@tie{}heißt@tie{}C und -6@tie{}heißt@tie{}H), und @code{Alteration} ist @code{,SHARP ,FLAT -,DOUBLE-SHARP} usw. (Beachte das beginnende Komma.) - -Alternativ kann auch jedes Element der Liste mit dem allgemeineren Format -@code{(Schritt . Alteration)} gesetzt werden, wobei dann die Einstellungen -für alle Oktaven gelten. - -Hier ein Beispiel einer möglichen Tonart für eine Ganztonleiter: -" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -La commande @code{\\key} détermine la propriété @code{keySignature} d'un -contexte @code{Staff}. - -Des armures inhabituelles peuvent être spécifiées en modifiant -directement cette propriété. Il s'agit en l'occurence de définir une -liste : - -@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave -. pas) . altération) @dots{})} - -dans laquelle, et pour chaque élément, -@code{octave} spécifie l'octave (0@tie{}pour celle allant du -do@tie{}médium au si supérieur), @code{pas} la note dans cette octave -(0@tie{}pour@tie{}do et 6@tie{}pour@tie{}si), et @code{altération} sera -@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (attention à la virgule en -préfixe). - -Une formulation abrégée -- @code{(pas . altération)} -- signifie que -l'altération de l'élément en question sera valide quel que soit l'octave. - - -Voici, par exemple, comment générer une gamme par ton : - -" - doctitlefr = "Armures inhabituelles" - - - lsrtags = "pitches, staff-notation" texidoc = " The commonly used @code{\\key} command sets the @code{keySignature} property, in the @code{Staff} context. -To create non-standard key signatures, set this property directly. The +To create non-standard key signatures, set this property directly. The format of this command is a list: -@code{\\set Staff.keySignature = #`(((octave . step) . alter) ((octave -. step) . alter) ...)} where, for each element in the list, -@code{octave} specifies the octave (0@tie{}being the octave from -middle@tie{}C to the B above), @code{step} specifies the note within the -octave (0@tie{}means@tie{}C and 6@tie{}means@tie{}B), and @code{alter} is -@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (Note the leading comma.) +@code{ \\set Staff.keySignature = #`(((octave . step) . alter) ((octave +. step) . alter) ...) } where, for each element in the list, +@code{octave} specifies the octave (0 being the octave from middle C to +the B above), @code{step} specifies the note within the octave (0 means +C and 6 means B), and @code{alter} is @code{,SHARP ,FLAT ,DOUBLE-SHARP} +etc. (Note the leading comma.) The accidentals in the key signature +will appear in the reverse order to that in which they are specified. + Alternatively, for each item in the list, using the more concise format -@code{(step . alter)} specifies that the same alteration should hold in all -octaves. +@code{(step . alter)} specifies that the same alteration should hold in +all octaves. + + +For microtonal scales where a @qq{sharp} is not 100 cents, @code{alter} +refers to the alteration as a proportion of a 200-cent whole tone. + + +Here is an example of a possible key signature for generating a +whole-tone scale: -Here is an example of a possible key signature for generating a whole-tone -scale: " doctitle = "Non-traditional key signatures" } % begin verbatim @@ -122,4 +49,3 @@ scale: c4 d e fis aes4 bes c2 } - diff --git a/Documentation/snippets/numbers-as-easy-note-heads.ly b/Documentation/snippets/numbers-as-easy-note-heads.ly index da442fa163..9abd9336c6 100644 --- a/Documentation/snippets/numbers-as-easy-note-heads.ly +++ b/Documentation/snippets/numbers-as-easy-note-heads.ly @@ -4,26 +4,10 @@ % 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" +%% Note: this file works from version 2.15.31 +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Las cabezas de nota de notación fácil utilizan la propiedad -@code{note-names} del objeto @code{NoteHead} para determinar lo que -aparece dentro de la cabeza. Mediante la sobreescritura de esta -propiedad, es posible imprimir números que representen el grado de la -escala. - -Se puede crear un grabador simple que haga esto para la cabeza de cada -nota que ve. - -" - - doctitlees = "Números como notas de notación fácil" - lsrtags = "pitches" texidoc = " Easy notation note heads use the @code{note-names} property @@ -39,21 +23,19 @@ object it sees. #(define Ez_numbers_engraver - (list - (cons 'acknowledgers - (list - (cons 'note-head-interface - (lambda (engraver grob source-engraver) - (let* ((context (ly:translator-context engraver)) - (tonic-pitch (ly:context-property context 'tonic)) - (tonic-name (ly:pitch-notename tonic-pitch)) - (grob-pitch - (ly:event-property (event-cause grob) 'pitch)) - (grob-name (ly:pitch-notename grob-pitch)) - (delta (modulo (- grob-name tonic-name) 7)) - (note-names - (make-vector 7 (number->string (1+ delta))))) - (ly:grob-set-property! grob 'note-names note-names)))))))) + (make-engraver + (acknowledgers + ((note-head-interface engraver grob source-engraver) + (let* ((context (ly:translator-context engraver)) + (tonic-pitch (ly:context-property context 'tonic)) + (tonic-name (ly:pitch-notename tonic-pitch)) + (grob-pitch + (ly:event-property (event-cause grob) 'pitch)) + (grob-name (ly:pitch-notename grob-pitch)) + (delta (modulo (- grob-name tonic-name) 7)) + (note-names + (make-vector 7 (number->string (1+ delta))))) + (ly:grob-set-property! grob 'note-names note-names)))))) #(set-global-staff-size 26) diff --git a/Documentation/snippets/new/lyrics-old-spacing-settings.ly b/Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly similarity index 75% rename from Documentation/snippets/new/lyrics-old-spacing-settings.ly rename to Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly index 5e51f6d0df..61d36d9d6c 100644 --- a/Documentation/snippets/new/lyrics-old-spacing-settings.ly +++ b/Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly @@ -1,17 +1,23 @@ -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { lsrtags = "vocal-music" - doctitle = "Obtaining 2.12 lyrics spacing in newer versions" - texidoc = " -The vertical spacing engine changed for version 2.14. This can -cause lyrics to be spaced differently. It is possible to set -properties for @code{Lyric} and @code{Staff} contexts to get the -spacing engine to behave as it did in version 2.12. +The vertical spacing engine changed for version 2.14. This can cause +lyrics to be spaced differently. It is possible to set properties for +@code{Lyric} and @code{Staff} contexts to get the spacing engine to +behave as it did in version 2.12. + " -} + doctitle = "Obtaining 2.12 lyrics spacing in newer versions" +} % begin verbatim global = { \key d \major @@ -93,4 +99,3 @@ words = \lyricmode { } } } - diff --git a/Documentation/snippets/open-string-harmonics-in-tablature.ly b/Documentation/snippets/open-string-harmonics-in-tablature.ly index 4469dbc2d8..1b1692a02b 100644 --- a/Documentation/snippets/open-string-harmonics-in-tablature.ly +++ b/Documentation/snippets/open-string-harmonics-in-tablature.ly @@ -1,34 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Referencia para armónicos sobre cuerdas al aire (armónicos naturales): - -" - doctitlees = "Referencia para armónicos sobre cuerdas al aire" - -%% Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 - texidocde = " -Referenz für Flageolett von offenen Saiten: -" - doctitlede = "Referenz für Flageolett von offenen Saiten" - lsrtags = "fretted-strings" + texidoc = " -Reference for open-string harmonics: +This snippet demonstrates open-string harmonics + " - doctitle = "Reference for open-string harmonics" + doctitle = "Open string harmonics in tablature" } % begin verbatim - openStringHarmonics = { %first harmonic \harmonicByFret #12 e,2\6_\markup{"1st harm."} diff --git a/Documentation/snippets/orchestra,-choir-and-piano-template.ly b/Documentation/snippets/orchestra,-choir-and-piano-template.ly index e7c190465e..61fed7dc46 100644 --- a/Documentation/snippets/orchestra,-choir-and-piano-template.ly +++ b/Documentation/snippets/orchestra,-choir-and-piano-template.ly @@ -4,62 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Esta plantilla muestra el uso de contextos @code{StaffGroup} y -@code{GrandStaff} anidados para sub-agrupar instrumentos del mismo -tipo, y una forma de usar @code{\\transpose} de manera que unas -variables contengan la música para instrumentos transpositores en -afinación de concierto. - -" - doctitlees = "Plantilla de orquesta con coro y piano" - -%% Translation of GIT committish: 64feeff58e5ce3397de87188a08ac99f7ef8e37b - - texidocde = " -Diese Vorlage zeigt die Benutzung von geschachtelten -@code{StaffGroup}- und @code{GrandStaff}-Kontexte, um -Instrumente in Untergruppen zu unterteilen, und die -Benutzung von @code{\\transpose} für transponierende -Instrumente. Alle Noten werden in C geschrieben. Noten -können in C eingegeben werden, oder auch in der Tonart -des Instrumentes: dann müssen sie zuerst nach C transponiert -werden, bevor sie einer Variable zugewiesen werden. - -" - doctitlede = "Orchester Chor und Klavier" - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour -regrouper les instruments selon leur famille, imbriqués dans un -@code{GrandStaff}, ainsi que le recours à la fonction @code{\\transpose} -pour les instruments transpositeurs. Dans tous les identificateurs, la -musique est stockée en ut. Les notes peuvent tout aussi bien être -saisies en ut ou dans la tonalité particulière de l'instrument avant -d'être transposées puis affectées à une variable. - -" - doctitlefr = "Orchestre chœur et piano" + lsrtags = "pitches, staff-notation, template, vocal-music" texidoc = " This template demonstrates the use of nested @code{StaffGroup} and @@ -71,6 +19,7 @@ music for transposing instruments at concert pitch. doctitle = "Orchestra choir and piano template" } % begin verbatim + #(set-global-staff-size 17) \paper { indent = 3.0\cm % space for instrumentName @@ -199,4 +148,3 @@ bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b } >> \layout { } } - diff --git a/Documentation/snippets/ottava-text.ly b/Documentation/snippets/ottava-text.ly index 4ecd940c18..6729c113af 100644 --- a/Documentation/snippets/ottava-text.ly +++ b/Documentation/snippets/ottava-text.ly @@ -4,50 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, text" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Internamente, @code{\\ottava} establece las propiedades -@code{ottavation} (por ejemplo, a @code{8va} o a @code{8vb}) y -@code{middleCPosition}. Para sobreescribir el texto del corchete, -ajuste @code{ottavation} después de invocar la instrucción -@code{\\ottava}. - -" - - doctitlees = "Texto de octava alta y baja" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Intern setzt die @code{set-octavation}-Funktion die Eigenschaften -@code{ottavation} (etwa auf den Wert @code{\"8va\"} oder @code{\"8vb\"}) -und @code{middleCPosition}. Um den Text der Oktavierungsklammer zu -ändern, kann @code{ottavation} manuell gesetzt werden, nachdem -@code{set-octavation} benützt wurde. - -" - -doctitlede = "Ottava-Text" - -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e - texidocfr = " -En interne, la fonction @code{\\ottava} détermine les -propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"}) -et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque -d'octaviation en définissant @code{ottavation} après avoir fait appel -à @code{ottava} : - -" - - doctitlefr = "Texte des marques d'octaviation" - - texidoc = " Internally, @code{\\ottava} sets the properties @code{ottavation} (for example, to @code{8va} or @code{8vb}) and @code{middleCPosition}. To @@ -58,6 +19,7 @@ override the text of the bracket, set @code{ottavation} after invoking doctitle = "Ottava text" } % begin verbatim + { \ottava #1 \set Staff.ottavation = #"8" @@ -68,4 +30,3 @@ override the text of the bracket, set @code{ottavation} after invoking \set Staff.ottavation = #"Text" c''1 } - diff --git a/Documentation/snippets/outputting-the-version-number.ly b/Documentation/snippets/outputting-the-version-number.ly index aef2e51349..1f061947b0 100644 --- a/Documentation/snippets/outputting-the-version-number.ly +++ b/Documentation/snippets/outputting-the-version-number.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "text, titles" + lsrtags = "really-simple, scheme-language, text, titles" texidoc = " By putting the output of @@ -20,6 +20,7 @@ By putting the output of doctitle = "Outputting the version number" } % begin verbatim + \score { \new Lyrics { \override Score.RehearsalMark #'self-alignment-X = #LEFT @@ -27,6 +28,3 @@ By putting the output of s2 } } - - - diff --git a/Documentation/snippets/page-label.ly b/Documentation/snippets/page-label.ly index 35533e7259..909a29f4f8 100644 --- a/Documentation/snippets/page-label.ly +++ b/Documentation/snippets/page-label.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "spacing" @@ -17,6 +17,7 @@ in markups. doctitle = "Page label" } % begin verbatim + #(set-default-paper-size "a6") #(define-markup-command (toc-line layout props label text) diff --git a/Documentation/snippets/paper-and-layout-intro.itely b/Documentation/snippets/paper-and-layout-intro.itely index 5b654b797f..f227ffe80d 100644 --- a/Documentation/snippets/paper-and-layout-intro.itely +++ b/Documentation/snippets/paper-and-layout-intro.itely @@ -1,5 +1,6 @@ @node Paper and layout @unnumbered Paper and layout +@nodeprefix Paper and layout @c FIXME not precise enough reference? @ruser{Spacing issues} diff --git a/Documentation/snippets/partcombine-and-autobeamoff.ly b/Documentation/snippets/partcombine-and-autobeamoff.ly index a892395e7a..691c47f775 100644 --- a/Documentation/snippets/partcombine-and-autobeamoff.ly +++ b/Documentation/snippets/partcombine-and-autobeamoff.ly @@ -4,112 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Puede ser difícil comprender la función de @code{\\autoBeamOff} cuando -se usa con @code{\\partcombine}. - -Puede ser preferible usar - - -@code{\\set Staff.autoBeaming = ##f} - - -en su lugar, para asegurarse de que el barrado automático se desactiva -para todo el pentagrama. - - -@code{\\partcombine} funciona aparentemente con tres voces: plica -arriba cuando hay una sola voz, plica abajo con la otra, y plica -arriba cuando está combinada. - - -Una llamada a @code{\\autoBeamOff} en el primer argumento de -partcombine se aplica a la voz que está activa en el momento en que se -procesa la llamada, ya sea voz única con la plica hacia arriba, hacia -abajo o combinadas. Una llamada a @code{\\autoBeamOff} en el segundo -argumento se aplica a la voz que está sola con la plica abajo. - - -Para pode usar @code{\\autoBeamOff} con el objeto de detener todo el -barrado automático cuando se usa con @code{\\partcombine}, es -necesario hacer tres llamadas a @code{\\autoBeamOff}. - - - - -" - doctitlees = "Partcombine y autoBeamOff" -%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - texidocde = " -Die Funktionsweise von @code{@bs{}autoBeamOff}, wenn es zusammen mit -@code{@bs{}partcombine} eingesetzt wird, kann schwer zu verstehen sein. -Es kann besser sein, anstatt dessen - -@example -\set Staff.autobeaming = ##f -@end example - -@noindent -zu benutzen, um sicherzustellen, dass die automatische Bebalkung für das -gesamte System ausgeschaltet ist. - -@code{\\partcombine} funktioniert offensichtlich mit 3 Stimme (Hals nach oben -einfach, Hals nach unten einfach, Hals nach oben kombiniert). - -Ein @code{\\autoBeamOff}-Befehl im ersten Argument von @code{\\partcombine} -gilt für die Stimme, die zu dem Zeitpunkt aktiv ist, an dem der Befehl -verarbeitet wird, entweder für Hals nach oben, nach unten oder Hals nach -oben kombiniert. Ein @code{\\autoBeamOff}-Befehl im zweiten Argument gilt -für die Stimme, die mit Hals nach unten einfach ist. - -Um @code{\\autoBeamOff} zu benutzen, damit alle automatischen Balken aufhören, -wenn man es mit @code{\\partcombine} verwendet, muss @code{\\autoBeamOff} -@emph{dreimal} aufgerufen werden. - -" -doctitlede = "Partcombine und autoBeamOff" - -%% Translation of GIT committish: e1a149d0cc60b02e86209387958f4028567dd366 - texidocfr = " -Le fonction @code{@bs{}autoBeamOff} dans le cadre d'un -@code{@bs{}partcombine} agit de façon bien particulière@tie{}; c'est -pourquoi il vaut mieux tout d'abord recourir à - -@example -\set Staff.autobeaming = ##f -@end example - -@noindent -pour désactiver les ligatures automatiques pour l'ensemble de la portée -concernée. - -L'instruction @code{\\partcombine} fonctionne apparament sur la base de -trois voix@tie{}: solo hampes montantes, solo hampes descendantes et -ensemble hampes montantes. - -Lorsque @code{\\autoBeamOff} apparaît dans le premier argument de la -combinaison, il s'applique à la voix active à ce moment précis, qu'il -s'agisse du solo hampes montantes ou du combiné hampes montantes. -Lorsqu'elle est introduite dans le second argument, la commande -@code{\\autoBeamOff} s'appliquera au solo hampes descendantes. - -Vous devrez donc, afin que @code{\\autoBeamOff} soit pleinement -opérationnel dans le cadre d'un @code{\\partcombine}, l'introduire aux -@strong{trois} niveaux. - -" -doctitlefr = "Partcombine et autoBeamOff" - - texidoc = " The function of @code{\\autoBeamOff} when used with @code{\\partcombine} can be difficult to understand. @@ -145,6 +44,7 @@ with @code{\\partcombine}, it will be necessary to use three calls to doctitle = "Partcombine and autoBeamOff" } % begin verbatim + { %\set Staff.autoBeaming = ##f % turns off all autobeaming \partcombine diff --git a/Documentation/snippets/percent-repeat-count-visibility.ly b/Documentation/snippets/percent-repeat-count-visibility.ly index dba0e30622..aa6bcadb37 100644 --- a/Documentation/snippets/percent-repeat-count-visibility.ly +++ b/Documentation/snippets/percent-repeat-count-visibility.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "repeats, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se pueden mostrar los contadores de las repeticiones del tipo -porcentaje a intervalos regulares mediante el establecimiento de -la propiedad de contexto @code{repeatCountVisibility}. - -" - doctitlees = "Visibilidad del contador de repeticiones de tipo porcentaje" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt -werden, indem man die Eigenschaft @code{repeatCountVisibility} beeinflusst. -" - doctitlede = "Sichtbarkeit von Prozent-Wiederholungen" - -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 - texidocfr = " -Le numéro de mesure répétée sera imprimé à intervalle régulier si vous -déterminez la propriété de contexte @code{repeatCountVisibility}. - -" - doctitlefr = "Affichage du numéro de répétition en pourcent" - - texidoc = " Percent repeat counters can be shown at regular intervals by setting the context property @code{repeatCountVisibility}. @@ -43,6 +17,7 @@ the context property @code{repeatCountVisibility}. doctitle = "Percent repeat count visibility" } % begin verbatim + \relative c'' { \set countPercentRepeats = ##t \set repeatCountVisibility = #(every-nth-repeat-count-visible 5) diff --git a/Documentation/snippets/percent-repeat-counter.ly b/Documentation/snippets/percent-repeat-counter.ly index 293e398834..508bad7462 100644 --- a/Documentation/snippets/percent-repeat-counter.ly +++ b/Documentation/snippets/percent-repeat-counter.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "repeats" -%% 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 -ve en este ejemplo: - -" - doctitlees = "Contador de repeticiones de tipo porcentaje" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Ganztaktwiederholungen mit mehr als zwei Wiederholungen erhalten einen -Zähler, wenn man die entsprechende Eigenschaft einsetzt: - -" - doctitlede = "Prozent-Wiederholungen zählen" - -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 - texidocfr = " -Les répétitions de plus de 2 mesures sont surmontées d'un compteur, -si l'on active la propriété @code{countPercentRepeats} comme le montre -l'exemple suivant : - -" - doctitlefr = "Compteur de répétition en pourcent" - - texidoc = " Measure repeats of more than two repeats can get a counter when the convenient property is switched, as shown in this example: @@ -45,8 +17,8 @@ convenient property is switched, as shown in this example: doctitle = "Percent repeat counter" } % begin verbatim + \relative c'' { \set countPercentRepeats = ##t \repeat percent 4 { c1 } } - diff --git a/Documentation/snippets/percussion-beaters.ly b/Documentation/snippets/percussion-beaters.ly index c0f48e3e93..fdea45c4dc 100644 --- a/Documentation/snippets/percussion-beaters.ly +++ b/Documentation/snippets/percussion-beaters.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "percussion" @@ -19,6 +19,7 @@ demonstrated in this example. doctitle = "Percussion beaters" } % begin verbatim + stick = \markup { \with-dimensions #'(0 . 5) #'(0 . 5) \postscript #" @@ -159,4 +160,3 @@ stick = \markup { \score { b1^\stick } - diff --git a/Documentation/snippets/percussion-intro.itely b/Documentation/snippets/percussion-intro.itely index 68369ab077..01a3cb42c5 100644 --- a/Documentation/snippets/percussion-intro.itely +++ b/Documentation/snippets/percussion-intro.itely @@ -1,5 +1,6 @@ @node Percussion @unnumbered Percussion +@nodeprefix Percussion @ruser{Percussion} diff --git a/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly b/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly index a6a95073ec..10206bee17 100644 --- a/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly +++ b/Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly @@ -4,42 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" - -%% 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 -saltos de línea manuales como los automáticos dentro de un grupo de -valoración especial unido por una barra. Observe que estos grupos -sincopados se deben barrar manualmente. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Dieses künstliche Beispiel zeigt, wie sowohl automatische als auch -manuelle Zeilenumbrüche innerhalb einer N-tole mit Balken erlaubt -werden können. Diese unregelmäßige Bebalkung muss allerdings manuell -gesetzt werden. - -" - doctitlede = "Zeilenumbrüche bei N-tolen mit Balken erlauben" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Cet exemple peu académique démontre comment il est possible d'insérer un saut -de ligne dans un nolet portant une ligature. Ces ligatures doivent toutefois -être explicites. - -" - doctitlefr = "Saut de ligne au milieu d'un nolet avec ligature" + lsrtags = "rhythms, version-specific" texidoc = " This artificial example shows how both manual and automatic line breaks @@ -50,6 +18,7 @@ tuplets have to be beamed manually. doctitle = "Permitting line breaks within beamed tuplets" } % begin verbatim + \layout { \context { \Voice @@ -67,4 +36,3 @@ tuplets have to be beamed manually. \repeat unfold 5 { \times 2/3 { c[ b a] } } c8 } - diff --git a/Documentation/snippets/piano-template-simple.ly b/Documentation/snippets/piano-template-simple.ly index 8847cd0746..0b58a54b46 100644 --- a/Documentation/snippets/piano-template-simple.ly +++ b/Documentation/snippets/piano-template-simple.ly @@ -4,43 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Presentamos a continuación una plantilla de piano sencilla con algunas -notas. - -" - doctitlees = "Plantilla de piano (sencilla)" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Hier ein einfaches Klaviersystem. - -" - doctitlede = "Vorlage für einfache Klaviernotation" - -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 - texidocfr = " -Voici une simple partition pour piano avec quelques notes. - -" - doctitlefr = "Piano -- cannevas simple" + lsrtags = "keyboards, really-simple, template" texidoc = " Here is a simple piano staff with some notes. @@ -49,6 +16,7 @@ Here is a simple piano staff with some notes. doctitle = "Piano template (simple)" } % begin verbatim + upper = \relative c'' { \clef treble \key c \major @@ -74,4 +42,3 @@ lower = \relative c { \layout { } \midi { } } - diff --git a/Documentation/snippets/piano-template-with-centered-dynamics.ly b/Documentation/snippets/piano-template-with-centered-dynamics.ly deleted file mode 100644 index f56fc58bce..0000000000 --- a/Documentation/snippets/piano-template-with-centered-dynamics.ly +++ /dev/null @@ -1,106 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% 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 -entre pentagramas, coloca los matices dinámicos correctamente de forma -automática. - -" - doctitlees = "Plantilla de piano con matices centrados" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -多くのピアノ譜は、強弱記号を 2 つの譜の間に置きます。これを実現するにはちょっ@c -とした調整が必要ですが、そのテンプレートがここにあるので、あなた自身が調整を行@c -う必要はありません。 -" - -%% 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 -den beiden Systemen zentriert. Für LilyPond muss man die Einstellungen -etwas anpassen, aber Sie können ja das angepasste Beispiel von hier -kopieren. -" - - -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 - texidocfr = " -Nombre d'ouvrages pour piano font apparaître les nuances entre les deux -portées. Bien que cela nécessite quelques subtilités, voici de quoi -obtenir un tel résultat. - -" - doctitlefr = "Piano et nuances entre les portées" - - lsrtags = "expressive-marks, keyboards, template" - texidoc = " -Many piano scores have the dynamics centered between the two staves. -The @code{Dynamics} context, if placed between staves, will -automatically position dynamics correctly. - -" - doctitle = "Piano template with centered dynamics" -} % begin verbatim - - -global = { - \key c \major - \time 4/4 -} - -upper = \relative c'' { - \clef treble - a4 b c d -} - -lower = \relative c { - \clef bass - a2 c -} - -dynamics = { - s2\fff\> s4 s\!\pp -} - -pedal = { - s2\sustainOn s\sustainOff -} - -\score { - \new PianoStaff = "PianoStaff_pf" << - \new Staff = "Staff_pfUpper" << \global \upper >> - \new Dynamics = "Dynamics_pf" \dynamics - \new Staff = "Staff_pfLower" << \global \lower >> - \new Dynamics = "pedal" \pedal - >> - \layout { } -} - -\score { - \new PianoStaff = "PianoStaff_pf" << - \new Staff = "Staff_pfUpper" << \global \upper \dynamics \pedal >> - \new Staff = "Staff_pfLower" << \global \lower \dynamics \pedal >> - >> - \midi { } -} diff --git a/Documentation/snippets/piano-template-with-centered-lyrics.ly b/Documentation/snippets/piano-template-with-centered-lyrics.ly index 70601aac28..ccf50e699b 100644 --- a/Documentation/snippets/piano-template-with-centered-lyrics.ly +++ b/Documentation/snippets/piano-template-with-centered-lyrics.ly @@ -4,52 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 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. - -" - doctitlees = "Plantilla de piano con letra centrada" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。 -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Anstatt ein eigenes System für Melodie und Text zu schreiben, können -Sie den Text auch zwischen die beiden Klaviersysteme schreiben -(und damit das zusätzliche System für die Gesangstimme auslassen). -" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément -une portée spécifique. Les paroles peuvent s'insérer entre les deux -portées de la partition pour piano. - -" - doctitlefr = "Piano et paroles entre les portées" + lsrtags = "keyboards, really-simple, template, text" texidoc = " Instead of having a full staff for the melody and lyrics, lyrics can be @@ -59,6 +17,7 @@ centered between the staves of a piano staff. doctitle = "Piano template with centered lyrics" } % begin verbatim + upper = \relative c'' { \clef treble \key c \major @@ -97,4 +56,3 @@ text = \lyricmode { } \midi { } } - diff --git a/Documentation/snippets/piano-template-with-melody-and-lyrics.ly b/Documentation/snippets/piano-template-with-melody-and-lyrics.ly index 4e71aaf22b..c44b64ba22 100644 --- a/Documentation/snippets/piano-template-with-melody-and-lyrics.ly +++ b/Documentation/snippets/piano-template-with-melody-and-lyrics.ly @@ -4,52 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \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: 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. - -" - doctitlees = "Plantilla de piano con melodía y letra" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。 -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Das nächste Beispiel ist typisch für ein Lied: Im oberen System die -Melodie mit Text, darunter Klavierbegleitung. -" - - doctitlede = "Vorlage für Klavier und Gesangsstimme" - - -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 - texidocfr = " -Il s'agit du format classique pour le chant : une portée pour la mélodie -et les paroles au-dessus de l'accompagnement au piano. - -" - doctitlefr = "Piano mélodie et paroles" + lsrtags = "keyboards, really-simple, template, vocal-music" texidoc = " Here is a typical song format: one staff with the melody and lyrics, @@ -59,6 +17,7 @@ with piano accompaniment underneath. doctitle = "Piano template with melody and lyrics" } % begin verbatim + melody = \relative c'' { \clef treble \key c \major @@ -101,4 +60,3 @@ lower = \relative c { } \midi { } } - diff --git a/Documentation/snippets/pitches-headword.ly b/Documentation/snippets/pitches-headword.ly index 1bc6489db9..b476dede6d 100644 --- a/Documentation/snippets/pitches-headword.ly +++ b/Documentation/snippets/pitches-headword.ly @@ -1,33 +1,27 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} - -% NR 1.1 Pitches +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} % begin verbatim + lsrtags = "headword" + texidoc = " +Piches headword +" + doctitle = "Pitches headword" +} % begin verbatim % L. v. Beethoven % Piano sonata 21 - Dem Grafen von Waldstein Gewidmet % chorale at measures 34 - 40+ +\include "english.ly" + \new PianoStaff << % RH Staff diff --git a/Documentation/snippets/pitches-intro.itely b/Documentation/snippets/pitches-intro.itely index 7ca94ff7a2..6141af9afc 100644 --- a/Documentation/snippets/pitches-intro.itely +++ b/Documentation/snippets/pitches-intro.itely @@ -1,5 +1,6 @@ @node Pitches @unnumbered Pitches +@nodeprefix Pitches @ruser{Pitches} diff --git a/Documentation/snippets/pitches.snippet-list b/Documentation/snippets/pitches.snippet-list index 47a78e3584..911ef6f5da 100644 --- a/Documentation/snippets/pitches.snippet-list +++ b/Documentation/snippets/pitches.snippet-list @@ -8,7 +8,6 @@ changing-the-interval-of-lines-on-the-stave.ly clefs-can-be-transposed-by-arbitrary-amounts.ly coloring-notes-depending-on-their-pitch.ly creating-a-sequence-of-notes-on-various-pitches.ly -dodecaphonic-style-accidentals-for-each-note-including-naturals.ly forcing-a-clef-symbol-to-be-displayed.ly generating-random-notes.ly hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly @@ -24,3 +23,4 @@ quoting-another-voice-with-transposition.ly separating-key-cancellations-from-key-signature-changes.ly transposing-pitches-with-minimum-accidentals-smart-transpose.ly tweaking-clef-properties.ly +using-autochange-with-more-than-one-voice.ly diff --git a/Documentation/snippets/placement-of-right-hand-fingerings.ly b/Documentation/snippets/placement-of-right-hand-fingerings.ly index 2e8a0a2010..51ac129a33 100644 --- a/Documentation/snippets/placement-of-right-hand-fingerings.ly +++ b/Documentation/snippets/placement-of-right-hand-fingerings.ly @@ -4,42 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings" -%% 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 -propiedad específica, como se muestra en el ejemplo siguiente. Nota: -se debe usar una construcción de acorde. - -" - doctitlees = "Posicionamiento de digitaciones de mano derecha" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Man kann die Positionierung von Fingersatz der rechten Hand besser -kontrollieren, wenn eine bestimmte Eigenschaft gesetzt wird, wie -das folgende Beispiel zeigt: - -" - doctitlede = "Positionierung von Fingersatz der rechten Hand" - -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - - texidocfr = " -Vous disposez d'une propriété spécifique qui permet de contrôler plus -finement le positionnement des doigtés main droite, comme l'indique -l'exemple suivant. - -" - doctitlefr = "Positionnement des doigtés main droite" - - texidoc = " It is possible to exercise greater control over the placement of right-hand fingerings by setting a specific property, as demonstrated @@ -49,6 +18,7 @@ in the following example. Note: you must use a chord construct doctitle = "Placement of right-hand fingerings" } % begin verbatim + #(define RH rightHandFinger) \relative c { @@ -63,4 +33,3 @@ in the following example. Note: you must use a chord construct \set strokeFingerOrientations = #'(left) 2 } - diff --git a/Documentation/snippets/polyphony-in-tablature.ly b/Documentation/snippets/polyphony-in-tablature.ly index aa1795f1ad..1aa24cb2bb 100644 --- a/Documentation/snippets/polyphony-in-tablature.ly +++ b/Documentation/snippets/polyphony-in-tablature.ly @@ -4,38 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "fretted-strings" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -La polifonía se crea de la misma forma en un @code{TabStaff} que -en una pauta normal. - -" - doctitlees = "Polifonía en tablaturas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Polyphonie kann in einer Tabulatur (@code{TabStaff}) genauso wie in einem -normalen Notensystem erstellt werden. - -" - doctitlede = "Polyphonie in einer Tabulatur" - -%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b - - texidocfr = " -Une section polyphonique s'obtient dans un @code{TabStaff} de la -même manière que dans une portée normale. - -" - doctitlefr = "Polyphonie en mode tablature" - - texidoc = " Polyphony is created the same way in a @code{TabStaff} as in a regular staff. @@ -44,6 +17,7 @@ staff. doctitle = "Polyphony in tablature" } % begin verbatim + upper = \relative c' { \time 12/8 \key e \minor @@ -72,4 +46,3 @@ lower = \relative c { >> >> } - diff --git a/Documentation/snippets/positioning-arpeggios.ly b/Documentation/snippets/positioning-arpeggios.ly index e2ed8d2ddc..b62ec12e5f 100644 --- a/Documentation/snippets/positioning-arpeggios.ly +++ b/Documentation/snippets/positioning-arpeggios.ly @@ -4,21 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Si necesitamos alargar o acortar un símbolo de arpegio, podemos -modificar independientemente los extremos superior e inferior. - -" - doctitlees = "Posicionar símbolos de arpegio" - - - texidoc = " If you need to extend or shorten an arpeggio, you can modify the upper and lower start positions independently. @@ -27,6 +17,7 @@ and lower start positions independently. doctitle = "Positioning arpeggios" } % begin verbatim + \relative c' { 1\arpeggio \once \override Arpeggio #'positions = #'(-5 . 0) diff --git a/Documentation/snippets/positioning-fingering-indications-precisely.ly b/Documentation/snippets/positioning-fingering-indications-precisely.ly index 17a8603edc..790ab94f32 100644 --- a/Documentation/snippets/positioning-fingering-indications-precisely.ly +++ b/Documentation/snippets/positioning-fingering-indications-precisely.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "editorial-annotations" @@ -20,6 +20,7 @@ involved. doctitle = "Positioning fingering indications precisely" } % begin verbatim + \relative c' { \set fingeringOrientations = #'(left) 4 @@ -34,5 +35,3 @@ involved. 4 4 } - - diff --git a/Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly b/Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly index 3f12902a1c..7f13ed5280 100644 --- a/Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly +++ b/Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly @@ -4,25 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Cuando se colocan figuras sobre líneas adicionales, sus barras se -sitúan generalmente en medio del pentagrama. La barra de las notas de -adorno es más corta y las notas de adorno sobre líneas adicionales -podrían tener la barra fuera del pentagrama. Podemos corregir este -barrado para las notas de adorno. - -" - doctitlees = "Colocar las barras de las notas de adorno a la misma altura que las barras de notas normales" - - - texidoc = " When notes are placed on ledger lines, their beams are usually centred on the stave. Grace notes beams are shorter and grace notes on ledger @@ -33,6 +19,7 @@ beaming for grace notes. doctitle = "Positioning grace note beams at the height of normal note beams" } % begin verbatim + \relative c { f8[ e] \grace { @@ -43,4 +30,3 @@ beaming for grace notes. } f8[ e] } - diff --git a/Documentation/snippets/positioning-grace-notes-with-floating-space.ly b/Documentation/snippets/positioning-grace-notes-with-floating-space.ly index 11a71361aa..ae61dd1a9f 100644 --- a/Documentation/snippets/positioning-grace-notes-with-floating-space.ly +++ b/Documentation/snippets/positioning-grace-notes-with-floating-space.ly @@ -4,51 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Al establecer la propiedad @code{'strict-grace-spacing} hacemos que -las columnas musicales para las notas de adorno sean @q{flotantes}, es -decir, desacopladas de las notas que no son de adorno: primero se -aplica el espaciado de las notas normales, y luego se ponen las -columnas musicales de las notas de adorno a la izquierda de las -columnas musicales de las notas principales. - -" - - doctitlees = "Posicionamiento de las notas de adorno con espacio flotante" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wenn man die Eigenschaft @code{'strict-grace-spacing} aktiviert, -werden die Verzierungsnoten \"fließend\" gemacht, d.h. sie sind -von den normalen Noten los gekoppelt: Zuerst werden die normalen -Noten platziert, dann erst die Verzierungen links von der -Hauptnote gesetzt. - -" - doctitlede = "Positionierung von Verzierungen mit verschiebbarem Platz" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Lorsque vous activez la propriété @code{'strict-grace-spacing}, -l'espacement des notes d'ornement se fera de manière @qq{élastique}. -Autrement dit, elles seront décollées de leur note de rattachement : -LilyPond commence par espacer les notes normales, puis les ornements -sont placés à la gauche de leur note de rattachement. - -" - doctitlefr = "Positionnement des notes d'ornement avec espace flottant" - texidoc = " Setting the property @code{'strict-grace-spacing} makes the musical columns for grace notes 'floating', i.e., decoupled from the non-grace @@ -59,6 +19,7 @@ the) graces are put left of the musical columns for the main notes. doctitle = "Positioning grace notes with floating space" } % begin verbatim + \relative c'' { << \override Score.SpacingSpanner #'strict-grace-spacing = ##t @@ -72,4 +33,3 @@ the) graces are put left of the musical columns for the main notes. } >> } - diff --git a/Documentation/snippets/positioning-multi-measure-rests.ly b/Documentation/snippets/positioning-multi-measure-rests.ly index d1c50b847e..093834aa64 100644 --- a/Documentation/snippets/positioning-multi-measure-rests.ly +++ b/Documentation/snippets/positioning-multi-measure-rests.ly @@ -1,52 +1,15 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.14 +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Posicionar los silencios multicompás" - texidoces = " -A diferencia de los silencios normales, no existe una instrucción -predefinida para modificar la posición predeterminada de un -símbolo de silencio multicompás sobre el pentagrama, adjuntándolo -a una nota, independientemente de cuál sea su forma. Sin embargo, -en la música polifónica los silencios multicompás de las voces de -numeración par e impar están separados verticalmente. La -colocación de los silencios multicompás se puede controlar como se -ve a continuación: - -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Anders als bei normalen Pausen gibt es keinen direkten Befehl, um die -vertikale Position von Ganztaktpausen zu beeinflussen, indem man sie an -eine Tonhöhe anhängt. In polyphoner Notation wird aber dennoch die -Position der Pausen von geraden und ungeraden Stimmen voneinander -unterschieden. Die Position von Ganztaktpausen kann wie folgt verändert -werden: - " - doctitlede = "Positionierung von Ganztaktpausen" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Si l'on peut positionner verticalement un silence simple en le -rattachant à une note, il n'en va pas de même pour un silence -multi-mesures. Néanmoins, et uniquement dans le cadre de musique -polyphonique, les silences multi-mesures sont positionnés différemment -selon qu'ils appartiennent à une voix au numéro pair ou impair. Le -positionnement des silences multi-mesures peut se contrôler ainsi : -" - doctitlefr = "Positionnement des silences multi-mesures" - texidoc = " Unlike ordinary rests, there is no predefined command to change the staff position of a multi-measure rest symbol of either form by @@ -59,30 +22,46 @@ follows: doctitle = "Positioning multi-measure rests" } % begin verbatim + \relative c'' { - % MMR - Multi-Measure Rest - % MMRs by default are set under the fourth line + % Multi-measure rests by default are set under the fourth line R1 - % They can be moved with an override + % They can be moved using an override \override MultiMeasureRest #'staff-position = #-2 R1 - % A value of 0 is the default position; - % the following trick moves the rest to the center line - \override MultiMeasureRest #'staff-position = #-0.01 + \override MultiMeasureRest #'staff-position = #0 + R1 + \override MultiMeasureRest #'staff-position = #2 + R1 + \override MultiMeasureRest #'staff-position = #3 + R1 + \override MultiMeasureRest #'staff-position = #6 R1 - % MMRs in odd-numbered voices are under the top line + \revert MultiMeasureRest #'staff-position + \break + + % In two Voices, odd-numbered voices are under the top line << { R1 } \\ { a1 } >> - % MMRs in even-numbered voices are under the bottom line - << { c1 } \\ { R1 } >> - % They remain separated even in empty measures + % Even-numbered voices are under the bottom line + << { a1 } \\ { R1 } >> + % Multi-measure rests in both voices remain separate << { R1 } \\ { R1 } >> - % This brings them together even though there are two voices + + % Separating multi-measure rests in more than two voices + % requires an override + << { R1 } \\ { R1 } \\ + \once \override MultiMeasureRest #'staff-position = #0 + { R1 } + >> + + % Using compressed bars in multiple voices requires another override + % in all voices to avoid multiple instances being printed \compressFullBarRests << - \revert MultiMeasureRest #'staff-position + \revert MultiMeasureRest #'staff-position { R1*3 } \\ - \revert MultiMeasureRest #'staff-position + \revert MultiMeasureRest #'staff-position { R1*3 } >> } diff --git a/Documentation/snippets/positioning-segno-and-coda-with-line-break.ly b/Documentation/snippets/positioning-segno-and-coda-with-line-break.ly index 1813823270..047238c2a4 100644 --- a/Documentation/snippets/positioning-segno-and-coda-with-line-break.ly +++ b/Documentation/snippets/positioning-segno-and-coda-with-line-break.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "repeats, breaks" + lsrtags = "breaks, repeats, symbols-and-glyphs, workaround" texidoc = " If you want to place an exiting segno sign and add text like @qq{D.S. @@ -25,22 +25,22 @@ line. \key g \major \time 4/4 \relative c'' { - \repeat unfold 2 { - | c4 c c c + \repeat unfold 4 { + c4 c c c } % Set segno sign as rehearsal mark and adjust size if needed % \once \override Score.RehearsalMark #'font-size = #3 \mark \markup { \musicglyph #"scripts.segno" } \repeat unfold 2 { - | c4 c c c + c4 c c c } % Set coda sign as rehearsal mark and adjust size if needed \once \override Score.RehearsalMark #'font-size = #4 \mark \markup { \musicglyph #"scripts.coda" } \repeat unfold 2 { - | c4 c c c + c4 c c c } % Should Coda be on anew line? @@ -76,15 +76,17 @@ line. % text and symbols center-aligned % =============================== % Move text to the desired position and tweak spacing for optimum text alignment - %\once \override TextScript #'extra-offset = #'( 8 . -5.5 ) + \repeat unfold 1 { + s1 + \bar "" + } + \once \override TextScript #'extra-offset = #'( 0 . -3.0 ) \once \override TextScript #'word-space = #1.5 - \once \override TextScript #'X-offset = #8 - \once \override TextScript #'Y-offset = #1.5 - | s1*0^\markup { \center-column { "D.S. al Coda" \line { \musicglyph #"scripts.coda" \musicglyph #"scripts.tenuto" \musicglyph #"scripts.coda"} } } + <>^\markup { \center-column { "D.S. al Coda" \line { \musicglyph #"scripts.coda" \musicglyph #"scripts.tenuto" \musicglyph #"scripts.coda"} } } % Increasing the unfold counter will expand the staff-free space - \repeat unfold 4 { - s4 s4 s4 s4 + \repeat unfold 3 { + s1 \bar "" } % Resume bar count and show staff lines again @@ -104,20 +106,19 @@ line. % Put the coda sign ontop of the (treble-)clef dependend on coda's line-position - % Coda NOT on new line, use this: - % \once \override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 ) + % Coda NOT on new line, use this: + % \once \override Score.RehearsalMark #'extra-offset = #'( -2 . 1.75 ) - % Coda on new line, use this: - \once \override Score.RehearsalMark #'extra-offset = #'( -8.42 . 1.75 ) + % Coda on new line, use this: + \once \override Score.RehearsalMark #'extra-offset = #'( -4.5 . 0 ) \once \override Score.RehearsalMark #'font-size = #5 \mark \markup { \musicglyph #"scripts.coda" } % The coda \repeat unfold 5 { - | c4 c c c + c4 c c c } \bar"|." } } - diff --git a/Documentation/snippets/positioning-text-markups-inside-slurs.ly b/Documentation/snippets/positioning-text-markups-inside-slurs.ly index 1c3451f344..206db5c204 100644 --- a/Documentation/snippets/positioning-text-markups-inside-slurs.ly +++ b/Documentation/snippets/positioning-text-markups-inside-slurs.ly @@ -4,38 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Los elementos de marcado de texto deben tener la propiedad -@code{outside-staff-priority} establecida al valor falso para que se -impriman por dentro de las ligaduras de expresión. - -" - doctitlees = "Situar los elementos de marcado de texto por dentro de las ligaduras" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die -@code{outside-staff-priority}-Eigenschaft auf falsch gesetzt wird. - -" - doctitlede = "Textbeschriftung innerhalb von Bögen positionieren" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison, -la propriété @code{outside-staff-priority} doît être désactivée. - -" - doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison" - + lsrtags = "editorial-annotations, expressive-marks, tweaks-and-overrides" texidoc = " Text markups need to have the @code{outside-staff-priority} property @@ -45,10 +17,9 @@ set to false in order to be printed inside slurs. doctitle = "Positioning text markups inside slurs" } % begin verbatim + \relative c'' { \override TextScript #'avoid-slur = #'inside \override TextScript #'outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 } - - diff --git a/Documentation/snippets/preparing-parts.snippet-list b/Documentation/snippets/preparing-parts.snippet-list new file mode 100644 index 0000000000..fedf0f6e20 --- /dev/null +++ b/Documentation/snippets/preparing-parts.snippet-list @@ -0,0 +1,4 @@ +adding-drum-parts.ly +forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly +nesting-staves.ly +string-quartet-template-with-separate-parts.ly diff --git a/Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly b/Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly index 7d4fae9f67..8324912159 100644 --- a/Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly +++ b/Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly @@ -4,45 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "pitches" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c -doctitlees = "Evitar que se añadan becuadros adicionales automáticamente" - -texidoces = " -Según las reglas estándar de composición -tipográfica, se imprime un becuadro antes de un sostenido o un -bemol cuando se tiene que cancelar una alteración anterior en la -misma nota. Para modificar este comportamiento, establezca el -valor de la propiedad @code{extraNatural} a @code{##f} (falso) -dentro del contexto de @code{Staff}. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Verhindern, dass zusätzliche Auflösungszeichen automatisch -hinzugefügt werden" - -texidocde = "Den traditionellen Notensatzregeln zufolge wird ein -Auflösungszeichen immer dann vor einem Kreuz oder B gesetzt, wenn -ein vorheriges Versetzungszeichen der gleichen Note aufgehoben werden -soll. Um dieses Verhalten zu ändern, muss die Eigenschaft -@code{extraNatural} im @code{Staff}-Kontext auf \"false\" gesetzt werden. -" - -%% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e - texidocfr = " -En accord avec les règles standards de l'écriture musicale, on grave -un bécarre avant un dièse ou un bémol si on a besoin d'annuler une -altération précédente. Pour modifier ce comportement, assignez la propriété -@code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux). -" - - doctitlefr = "Suppression des bécarres superflus" + lsrtags = "automatic-notation, pitches" texidoc = " In accordance with standard typesetting rules, a natural sign is @@ -56,9 +21,9 @@ note needs to be canceled. To change this behavior, set the doctitle = "Preventing extra naturals from being automatically added" } % begin verbatim + \relative c'' { aeses4 aes ais a \set Staff.extraNatural = ##f aeses4 aes ais a } - diff --git a/Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly b/Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly index 0601a666e5..e6c6c823aa 100644 --- a/Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly +++ b/Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" @@ -18,6 +18,7 @@ tuplet marking. This can be overcome by setting @code{TupletBracket doctitle = "Preventing final mark from removing final tuplet" } % begin verbatim + \new Staff { \set tupletFullLength = ##t \time 1/8 @@ -27,7 +28,10 @@ tuplet marking. This can be overcome by setting @code{TupletBracket \override Score.RehearsalMark #'break-visibility = #'#(#t #t #t) \override Score.RehearsalMark #'direction = #DOWN \override Score.RehearsalMark #'self-alignment-X = #RIGHT - \mark "Composed Feb 2007 - Feb 2008" +% due to issue 2362 the following line is commented +% \mark "Composed Feb 2007 - Feb 2008" +% and a shorter mark is used. + \mark "1234" } \new Staff { @@ -42,6 +46,8 @@ tuplet marking. This can be overcome by setting @code{TupletBracket \override Score.RehearsalMark #'break-visibility = #'#(#t #t #t) \override Score.RehearsalMark #'direction = #DOWN \override Score.RehearsalMark #'self-alignment-X = #RIGHT - \mark "Composed Feb 2007 - Feb 2008" +% due to issue 2362 the following line is commented +% \mark "Composed Feb 2007 - Feb 2008" +% and a shorter mark is used. + \mark "1234" } - diff --git a/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly b/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly index eb7f372501..1d3f050457 100644 --- a/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly +++ b/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly @@ -4,45 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "pitches" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c -doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura" - -texidoces = " - -Cuando cambia la armadura de la tonalidad, se imprimen becuadros -automáticamente para cancelar las alteraciones de las armaduras -anteriores. Esto se puede evitar estableciendo al valor @qq{falso} la -propiedad @code{printKeyCancellation} del contexto @code{Staff}. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -doctitlede = "Auflösungzeichen nicht setzen wenn die Tonart wechselt" - -texidocde = " -Wenn die Tonart wechselt, werden automatisch Auflösungszeichen ausgegeben, -um Versetzungszeichen der vorherigen Tonart aufzulösen. Das kann -verhindert werden, indem die @code{printKeyCancellation}-Eigenschaft -im @code{Staff}-Kontext auf \"false\" gesetzt wird. -" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Après un changement de tonalité, un bécarre est imprimé pour annuler -toute altération précédente. Ceci peut être supprimé en réglant à -@code{\"false\"} la propriété @code{printKeyCancellation} du contexte -@code{Staff}. - -" - - doctitlefr = "Suppression des bécarres superflus après un changement de -tonalité" + lsrtags = "automatic-notation, pitches" texidoc = " When the key signature changes, natural signs are automatically printed @@ -54,6 +19,7 @@ property in the @code{Staff} context. doctitle = "Preventing natural signs from being printed when the key signature changes" } % begin verbatim + \relative c' { \key d \major a4 b cis d @@ -65,4 +31,3 @@ property in the @code{Staff} context. \key g \minor a4 bes c d } - diff --git a/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly b/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly index 7386aa8c6f..f2d620be9e 100644 --- a/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly +++ b/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly @@ -4,38 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "repeats, tweaks-and-overrides" -%% 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: - -" - doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Ein @code{|:}-Taktstrich kann auch zu Beginn eines Stückes ausgegeben werden, indem -man die entsprechende Eigenschaft verändert: - -" - doctitlede = "Ein Wiederholungszeichen zu Beginn eines Stückes ausgeben" - -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 - texidocfr = " -Bien qu'allant à l'encontre des usages en matière de gravure, vous -imprimerez une barre de reprise (@code{|:}) en début de partition si -vous surchargez la propriété adéquate : - -" - doctitlefr = "Impression d'une barre de reprise en début de morceau" - - texidoc = " A @code{|:} bar line can be printed at the beginning of a piece, by overriding the relevant property: @@ -44,6 +17,7 @@ overriding the relevant property: doctitle = "Printing a repeat sign at the beginning of a piece" } % begin verbatim + \relative c'' { \once \override Score.BreakAlignment #'break-align-orders = #(make-vector 3 '(instrument-name @@ -66,4 +40,3 @@ overriding the relevant property: d1 d4 e f g } - diff --git a/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly b/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly index e3beb19046..e75b2c37b3 100644 --- a/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly +++ b/Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly @@ -4,47 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Se pueden imprimir los números de compás a intervalos regulares -mediante el establecimiento de la propiedad -@code{barNumberVisibility}. Aquí los números de compás se -imprimen a cada dos compases excepto al final de la línea. - -" - - doctitlees = "Imprimir números de compás a intervalos regulares" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Taktnummern können in regelmäßigen Intervallen gesetzt werden, indem -man die Eigenschaft @code{barNumberVisibility} definiert. In diesem -Beispiel werden die Taktnummern jeden zweiten Takt gesetzt, außer -am Ende einer Zeile. - -" - doctitlede = "Setzen der Taktnummern in regelmäßigen Intervallen" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt -qu'en tête de chaque ligne seulement, en recourrant à la propriété -@code{barNumberVisibility}. Voici comment afficher le numéro toutes les -deux mesures sauf en fin de ligne. - -" - doctitlefr = "Imprimer les numéros de mesure à intervalle régulier" - texidoc = " Bar numbers can be printed at regular intervals by setting the property @code{barNumberVisibility}. Here the bar numbers are printed every two @@ -54,6 +18,7 @@ measures except at the end of the line. doctitle = "Printing bar numbers at regular intervals" } % begin verbatim + \relative c' { \override Score.BarNumber #'break-visibility = #end-of-line-invisible \set Score.currentBarNumber = #11 @@ -65,4 +30,3 @@ measures except at the end of the line. \break c1 | c | c | c | c } - diff --git a/Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly b/Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly index e243bcf2c1..838a1bb1e3 100644 --- a/Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly +++ b/Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias. - -" - doctitlees = "Imprimir números de compás dentro de rectángulos o circunferencias" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Taktnummern können auch in Boxen oder Kreisen gesetzt werden. - -" - doctitlede = "Setzen von Taktnummern in Kästen oder Kreisen" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Les numéros de mesures peuvent être encadrés ou entourés d'un cercle. - -" - doctitlefr = "Inscrire le numéro de mesure dans un cadre ou un cercle" - texidoc = " Bar numbers can also be printed inside boxes or circles. @@ -42,6 +16,7 @@ Bar numbers can also be printed inside boxes or circles. doctitle = "Printing bar numbers inside boxes or circles" } % begin verbatim + \relative c' { % Prevent bar numbers at the end of a line and permit them elsewhere \override Score.BarNumber #'break-visibility = #end-of-line-invisible @@ -60,4 +35,3 @@ Bar numbers can also be printed inside boxes or circles. = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) \repeat unfold 4 { c1 } \bar "|." } - diff --git a/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly b/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly index 33278e8ead..6c7e5a3217 100644 --- a/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly +++ b/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly @@ -4,41 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% 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 -@code{Hairpin} al valor @code{#t}. - -" - doctitlees = "Impresión de reguladores utilizando la notación «al niente»" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " - Crescendo-Klammern können mit einem kleinen Kreis vor der Spitze - notiert werden (al niente = bis zum Nichts), indem die -@code{circled-tip}-Eigenschaft des @code{Hairpin}-Objekts auf -@code{#t} gesetzt wird. - -" - doctitlede = "Crescendo Klammern al niente schreiben" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de -manière graphique, en assignant @emph{vrai} (@code{#t}) à la -propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité. - -" - doctitlefr = "Impression de soufflets « al niente »" - - texidoc = " Hairpin dynamics may be printed with a circled tip (@qq{al niente} notation) by setting the @code{circled-tip} property of the @@ -48,9 +18,9 @@ notation) by setting the @code{circled-tip} property of the doctitle = "Printing hairpins using al niente notation" } % begin verbatim + \relative c'' { \override Hairpin #'circled-tip = ##t c2\< c\! c4\> c\< c2\! } - diff --git a/Documentation/snippets/printing-marks-at-the-end-of-a-line.ly b/Documentation/snippets/printing-marks-at-the-end-of-a-line.ly index e9e0c7ff93..0b6dd34387 100644 --- a/Documentation/snippets/printing-marks-at-the-end-of-a-line.ly +++ b/Documentation/snippets/printing-marks-at-the-end-of-a-line.ly @@ -4,31 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Se pueden imprimir marcas al final de la línea actual, en vez de al -principio de la línea siguiente. En estos casos, puede ser preferible -alinear el borde derecho de la marca con la línea divisoria. - -" - doctitlees = "Imprimir marcas al final de una línea" -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Les indications textuelles peuvent être imprimées à la fin d'une ligne -plutôt qu'en tête de la suivante. Pensez alors à aligner l'extrémité -droite de l'indication sur la barre de mesure. - -" - doctitlefr = "Indication texuelle en fin de ligne" - - texidoc = " Marks can be printed at the end of the current line, instead of the beginning of the following line. In such cases, it might be preferable @@ -38,6 +18,7 @@ to align the right end of the mark with the bar line. doctitle = "Printing marks at the end of a line" } % begin verbatim + \relative c'' { g2 c d,2 a' @@ -48,4 +29,3 @@ to align the right end of the mark with the bar line. g2 b, c1 \bar "||" } - diff --git a/Documentation/snippets/printing-marks-on-every-staff.ly b/Documentation/snippets/printing-marks-on-every-staff.ly index 31d7d84d52..556eea0996 100644 --- a/Documentation/snippets/printing-marks-on-every-staff.ly +++ b/Documentation/snippets/printing-marks-on-every-staff.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" -%% 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 -cualquiera. - -" - doctitlees = "Imprimir marcas en cualquier pentagrama" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Normalerweise werden Textzeichen nur über dem obersten Notensystem gesetzt. Sie -können aber auch über jedem System ausgegeben werden. - -" - doctitlede = "Zeichen über jedem System ausgeben" - -%% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 - texidocfr = " -Bien que ces indications textuelles ne soient habituellement imprimées -qu'au niveau de la portée supérieure, vous pouvez forcer leur -affectation à chacune des portées. - -" - doctitlefr = "Impression des indications sur toutes les portées d'un système" - - texidoc = " Although text marks are normally only printed above the topmost staff, they may also be printed on every staff. @@ -45,6 +17,7 @@ they may also be printed on every staff. doctitle = "Printing marks on every staff" } % begin verbatim + \score { << \new Staff { c''1 \mark "molto" c'' } @@ -63,4 +36,3 @@ they may also be printed on every staff. } } } - diff --git a/Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly b/Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly index 558160f4ea..f8b2ebc048 100644 --- a/Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly +++ b/Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly @@ -4,44 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, expressive-marks, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -De forma predeterminada, las indicaciones metronómicas y las -letras de ensayo se imprimen encima del pentagrama. Para -colocarlas debajo del pentagrama, simplemente ajustamos -adecuadamente la propiedad @code{direction} de -@code{MetronomeMark} o de @code{RehearsalMark}. - -" - - doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Normalerweise werden Metronom- und Übungszeichen über dem Notensystem ausgegeben. -Um sie unter das System zu setzen, muss die @code{direction}-Eigenschaft -von @code{MetronomeMark} oder @code{RehearsalMark} entsprechend verändert werden. - -" - doctitlede = "Metronom- und Übungszeichen unter das System setzen" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -Les indications de tempo et les marques de repère s'impriment par défaut -au-dessus de la portée. Le fait de régler en conséquence la propriété -@code{direction} des objets @code{MetronomeMark} ou @code{RehearsalMark} -les placera au-dessous de la portée. - -" - doctitlefr = "Impression du métronome et des repères sous la portée" - + lsrtags = "expressive-marks, rhythms, tweaks-and-overrides" texidoc = " By default, metronome and rehearsal marks are printed above the staff. @@ -52,6 +18,7 @@ of @code{MetronomeMark} or @code{RehearsalMark} appropriately. doctitle = "Printing metronome and rehearsal marks below the staff" } % begin verbatim + \layout { ragged-right = ##f } { @@ -65,4 +32,3 @@ of @code{MetronomeMark} or @code{RehearsalMark} appropriately. \mark \default c''1 } - diff --git a/Documentation/snippets/printing-music-with-different-time-signatures.ly b/Documentation/snippets/printing-music-with-different-time-signatures.ly index af6da55529..1e189dfa9b 100644 --- a/Documentation/snippets/printing-music-with-different-time-signatures.ly +++ b/Documentation/snippets/printing-music-with-different-time-signatures.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, percussion" + lsrtags = "contemporary-notation, percussion, real-music, really-cool, rhythms" texidoc = " In the following snippet, two parts have a completely different time @@ -156,4 +156,3 @@ Perkussion = \new StaffGroup << \Perkussion >> } - diff --git a/Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly b/Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly index 673a31c3a8..96b4d051ad 100644 --- a/Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly +++ b/Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly @@ -4,22 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "tweaks-and-overrides" -%% 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 -desactiva la representación de la octava de las notas. - -" - doctitlees = "Impresión de los nombres de las notas con o sin indicación de la octava" - - - texidoc = " The @code{NoteNames} context can be used to print the text value of notes. The @code{printOctaveNames} property turns on or off the @@ -29,6 +18,7 @@ representation of the octave of the note. doctitle = "Printing note names with and without an octave marker" } % begin verbatim + scale = \relative c' { a4 b c d e4 f g a @@ -51,4 +41,3 @@ scale = \relative c' { } >> } - diff --git a/Documentation/snippets/printing-text-from-right-to-left.ly b/Documentation/snippets/printing-text-from-right-to-left.ly index 196b134cfa..49c10706a0 100644 --- a/Documentation/snippets/printing-text-from-right-to-left.ly +++ b/Documentation/snippets/printing-text-from-right-to-left.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, text, world-music" + lsrtags = "editorial-annotations, text, workaround, world-music" texidoc = " It is possible to print text from right to left in a markup object, as @@ -17,6 +17,7 @@ demonstrated here. doctitle = "Printing text from right to left" } % begin verbatim + { b1^\markup { \line { i n g i r u m i m u s n o c t e } @@ -26,4 +27,3 @@ demonstrated here. \line { i n g i r u m i m u s n o c t e } } } - diff --git a/Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly b/Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly index b453088485..ae6321a6e2 100644 --- a/Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly +++ b/Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly @@ -4,54 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -De forma predeterminada se suprime el número del primer compás de una -partitura si es menor o igual a @q{1}. Al establecer el valor de -@code{barNumberVisibility} a @code{all-bar-numbers-visible}, se puede -imprimir cualquier número de compás para el primer compás y todos los -siguientes. Observe que, para que esto funcione, se debe insertar una -líinea divisoria vacía antes de la primera nota. - -" - - doctitlees = "Imprimir el número de compás en el primer compás" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Standardmäßig wird die erste Taktzahl einer Partitur nicht gesetzt, -wenn sie weniger oder gleich '1' ist. Indem man @code{barNumberVisibility} -auf @code{all-bar-numbers-visible} setzt, kann eine beliebige -Taktzahl für den ersten und die folgenden Takte gesetzt werden. -Eine leere Taktlinie muss jedoch vor der ersten Note eingefügt -werden, damit das funktioniert. - -" - doctitlede = "Setzen der Taktnummer für den ersten Takt" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est -inférieur à 2. Le fait de définir @code{barNumberVisibility} à -@code{all-bar-numbers-visible} vous permettra d'imprimer n'importe quel -numéro pour la première mesure. À noter que l'impression d'un numéro -de mesure ne peut intervenir que s'il y a une barre. Aussi, pour -pouvoir le faire au début d'un morceau, devrez-vous ajouter une barre -vide avant la première note. - -" - doctitlefr = "Afficher le numéro de la première mesure" - texidoc = " By default, the first bar number in a score is suppressed if it is less than or equal to `1'. By setting @code{barNumberVisibility} to @@ -63,10 +20,10 @@ must be inserted before the first note for this to work. doctitle = "Printing the bar number for the first measure" } % begin verbatim + \relative c' { \set Score.barNumberVisibility = #all-bar-numbers-visible \bar "" c1 | d | e | f \break g1 | e | d | c } - diff --git a/Documentation/snippets/proportional-strict-notespacing.ly b/Documentation/snippets/proportional-strict-notespacing.ly index 0d09688eab..eb4c12e5d7 100644 --- a/Documentation/snippets/proportional-strict-notespacing.ly +++ b/Documentation/snippets/proportional-strict-notespacing.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "tweaks-and-overrides, spacing" + lsrtags = "spacing, tweaks-and-overrides" texidoc = " If @code{strict-note-spacing} is set spacing of notes is not influenced @@ -18,6 +18,7 @@ the note that occurs at the same time. This may cause collisions. doctitle = "Proportional strict notespacing" } % begin verbatim + \relative c'' << \override Score.SpacingSpanner #'strict-note-spacing = ##t \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) @@ -30,4 +31,3 @@ the note that occurs at the same time. This may cause collisions. c1 } >> - diff --git a/Documentation/snippets/putting-lyrics-inside-the-staff.ly b/Documentation/snippets/putting-lyrics-inside-the-staff.ly index 1a776e8593..c2596fb4c5 100644 --- a/Documentation/snippets/putting-lyrics-inside-the-staff.ly +++ b/Documentation/snippets/putting-lyrics-inside-the-staff.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "staff-notation, text, vocal-music" @@ -22,11 +22,10 @@ hyphens. The offset needed is established with trial and error. << \new Staff << \new Voice = "voc" \relative c' { \stemDown a bes c8 b c4 } ->> + >> \new Lyrics \with { \override LyricText #'extra-offset = #'(0 . 8.6) \override LyricExtender #'extra-offset = #'(0 . 8.6) \override LyricHyphen #'extra-offset = #'(0 . 8.6) } \lyricsto "voc" { La la -- la __ _ la } >> - diff --git a/Documentation/snippets/quoting-another-voice-with-transposition.ly b/Documentation/snippets/quoting-another-voice-with-transposition.ly index 0ff2514c12..ad8061229d 100644 --- a/Documentation/snippets/quoting-another-voice-with-transposition.ly +++ b/Documentation/snippets/quoting-another-voice-with-transposition.ly @@ -4,50 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, staff-notation" -%% 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 -instrumentos interpreta una nota con el sonido del Do central; el -destino de un instrumento transpositor en Fa. La parte de destino -se puede transponer utilizando @code{\\transpose}. En este caso -se transportan todas las notas (incluidas las citadas). - -" - -doctitlees = "Citar otra voz con transposición" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Zitate berücksichtigen sowohl die Transposition der Quelle als auch -des Zielinstruments. In diesem Beispiel spielen alle Instrumente -klingendes C, das Zielinstrument ist in F. Die Noten für das -Zielinstrument können mit @code{\\transpose} transponiert werden, -in diesem Fall werden alle Noten (auch die zitierten) transponiert. - -" - doctitlede = "Eine Stimme mit Transposition zitieren" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Les citations tiennent compte de la transposition, aussi bien celle de -l'instrument d'origine que celle de la partie où elle intervient. Dans -l'exemple suivant, tous les instruments sont en tonalité de concert et -seront repris par un instrument en fa. Le destinataire de la citation -peut à son tour transposer à l'aide de la commande @code{\\transpose}. -En pareil cas, toutes les hauteurs, y compris celle de la citation, -seront transposées. - -" - doctitlefr = "Citation d'une autre voix et transposition" - - texidoc = " Quotations take into account the transposition of both source and target. In this example, all instruments play sounding middle C; the @@ -59,6 +20,7 @@ quoted ones) are transposed. doctitle = "Quoting another voice with transposition" } % begin verbatim + \addQuote clarinet { \transposition bes \repeat unfold 8 { d'16 d' d'8 } diff --git a/Documentation/snippets/quoting-another-voice.ly b/Documentation/snippets/quoting-another-voice.ly index 3927fec3af..55ea2aaba6 100644 --- a/Documentation/snippets/quoting-another-voice.ly +++ b/Documentation/snippets/quoting-another-voice.ly @@ -4,62 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "staff-notation" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -La propiedad @code{quotedEventTypes} determina los tipos de eventos -musicales que resultan citados. El valor predeterminado es -@code{(note-event rest-event tie-event beam-event tuplet-span-event)}, -que significa que sólo aparecen en la expresión @code{\\quoteDuring} -las notas, silencios, ligaduras, barras y grupos especiales. En el -ejemplo siguiente, el silencio de semicorchea no aparece en el -fragmento citado porque @code{rest-event} no está dentro de los -@code{quotedEventTypes}. - -Para ver una lista de los tipos de evento, consulte la sección -@qq{Music classes} de la Referencia de funcionamiento interno. - - -" - doctitlees = "Citar otra voz" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die @code{quotedEventTypes}-Eigenschaft bestimmt die -Typen an Musikereignissen, die zitiert werden. Die -Standardeinstellung ist @code{(note-event rest-event)}, womit -nur Noten und Pausen der zitierten Stimme für den -@code{\\quoteDuring}-Ausdruck übernommen werden. Im -Beispiel hier wird die 16-Pause nicht übernommen, weil -sich @code{rest-event} nicht in @code{quotedEventTypes} befindet. - -" - - doctitlede = "Eine andere Stimme zitieren" - -%% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6 - texidocfr = " -Les types d'événement pris en charge pour la citation peuvent se régler -avec la propriété @code{quotedEventTypes}. Par défaut, sa valeur est -fixée à @code{(note-event rest-event tie-event beam-event -tuplet-span-event)}, ce qui signifie que seuls les notes, silences, -liaisons, ligatures et nolets seront mentionnés par @code{\\quoteDuring}. -Dans l'exemple suivant, le quart de soupir n'est pas reproduit puisqu'il -n'est pas mentionné parmi les @code{quotedEventTypes}. - -Pour connaître la liste des types d'événements, reportez-vous au -chapitre @emph{Music classes} de la référence des propriétés internes. - -" - doctitlefr = "Citation d'une autre voix" - - texidoc = " The @code{quotedEventTypes} property determines the music event types which should be quoted. The default value is @code{(note-event @@ -76,6 +25,7 @@ the Internals Reference. doctitle = "Quoting another voice" } % begin verbatim + quoteMe = \relative c' { fis4 r16 a8.-> b4\ff c } diff --git a/Documentation/snippets/real-music.snippet-list b/Documentation/snippets/real-music.snippet-list new file mode 100644 index 0000000000..67467c170c --- /dev/null +++ b/Documentation/snippets/real-music.snippet-list @@ -0,0 +1,13 @@ +ancient-notation-template----modern-transcription-of-mensural-music.ly +changing-midi-output-to-one-channel-per-voice.ly +creating-a-sequence-of-notes-on-various-pitches.ly +creating-slurs-across-voices.ly +cross-staff-tremolos.ly +demo-midiinstruments.ly +dotted-harmonics.ly +heavily-customized-polymetric-time-signatures.ly +indicating-cross-staff-chords-with-arpeggio-bracket.ly +inserting-score-fragments-above-a-staff,-as-markups.ly +jazz-combo-template.ly +printing-music-with-different-time-signatures.ly +score-for-diatonic-accordion.ly diff --git a/Documentation/snippets/really-cool.snippet-list b/Documentation/snippets/really-cool.snippet-list new file mode 100644 index 0000000000..507d91f7cc --- /dev/null +++ b/Documentation/snippets/really-cool.snippet-list @@ -0,0 +1,16 @@ +adding-the-current-date-to-a-score.ly +ancient-notation-template----modern-transcription-of-mensural-music.ly +blanking-staff-lines-using-the--whiteout-command.ly +center-text-below-hairpin-dynamics.ly +changing-properties-for-individual-grobs.ly +clusters.ly +coloring-notes-depending-on-their-pitch.ly +creating-a-sequence-of-notes-on-various-pitches.ly +embedding-native-postscript-in-a--markup-block.ly +generating-random-notes.ly +generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly +incipit.ly +making-some-staff-lines-thicker-than-the-others.ly +non-traditional-key-signatures.ly +printing-music-with-different-time-signatures.ly +using-postscript-to-generate-special-note-head-shapes.ly diff --git a/Documentation/snippets/really-simple.snippet-list b/Documentation/snippets/really-simple.snippet-list new file mode 100644 index 0000000000..1381ca63fc --- /dev/null +++ b/Documentation/snippets/really-simple.snippet-list @@ -0,0 +1,27 @@ +adding-an-extra-staff.ly +adding-drum-parts.ly +adding-fingerings-to-a-score.ly +analysis-brackets-above-the-staff.ly +changing-a-single-notes-size-in-a-chord.ly +changing-stanza-fonts.ly +changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly +changing-the-chord-names-to-german-or-semi-german-notation.ly +combining-dynamics-with-markup-texts.ly +forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly +lyrics-alignment.ly +merging-multi-measure-rests-in-a-polyphonic-part.ly +modifying-tuplet-bracket-length.ly +outputting-the-version-number.ly +piano-template-simple.ly +piano-template-with-centered-lyrics.ly +piano-template-with-melody-and-lyrics.ly +single-staff-template-with-notes,-lyrics,-and-chords.ly +single-staff-template-with-notes-and-chords.ly +single-staff-template-with-notes-and-lyrics.ly +single-staff-template-with-only-notes.ly +skips-in-lyric-mode-2.ly +skips-in-lyric-mode.ly +string-quartet-template-simple.ly +using-the--tweak-command-to-tweak-individual-grobs.ly +vocal-ensemble-template.ly +volta-multi-staff.ly diff --git a/Documentation/snippets/recorder-fingering-chart.ly b/Documentation/snippets/recorder-fingering-chart.ly index 714c52cd05..dbe8cfa9d0 100644 --- a/Documentation/snippets/recorder-fingering-chart.ly +++ b/Documentation/snippets/recorder-fingering-chart.ly @@ -4,30 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "winds" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " -El ejemplo siguiente muestra cómo se pueden realizar diagramas de -digitación para instrumentos de viento. - -" - - doctitlees = "Diagramas de digitación para la flauta dulce" - -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d - texidocfr = " -Cet exemple illustre la manière de créer et afficher des indications de -doigté pour instrument à vent. - -" - doctitlefr = "Doigtés pour flûte à bec" - - texidoc = " The following example demonstrates how fingering charts for wind instruments can be realized. @@ -52,6 +33,7 @@ centermarkup = { \new Staff \with { \remove "Time_signature_engraver" \override Stem #'stencil = ##f + \override Flag #'stencil = ##f \consists "Horizontal_bracket_engraver" } { @@ -81,5 +63,3 @@ centermarkup = { f''1*1/4^\markup{2)}\stopGroup } } - - diff --git a/Documentation/snippets/redefining-grace-note-global-defaults.ly b/Documentation/snippets/redefining-grace-note-global-defaults.ly index 1cb4ceb336..c8507a43eb 100644 --- a/Documentation/snippets/redefining-grace-note-global-defaults.ly +++ b/Documentation/snippets/redefining-grace-note-global-defaults.ly @@ -1,57 +1,15 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Los valores predeterminados para las notas de adorno están -almacenados en los identificadores @code{startGraceMusic}, -@code{stopGraceMusic}, @code{startAcciaccaturaMusic}, -@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic} y -@code{stopAppoggiaturaMusic}, que están definidos en el archivo -@file{ly/grace-init.ly}. Redefiniéndolos se pueden obtener otros -efectos. - -" - - doctitlees = "Redefinición de los valores globales predeterminados para notas de adorno" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die globalen Standardeinstellungen für Verzierungsnoten werden in -den Variablen@code{startGraceMusic}, @code{stopGraceMusic}, -@code{startAcciaccaturaMusic}, @code{stopAcciaccaturaMusic}, -@code{startAppoggiaturaMusic} und @code{stopAppoggiaturaMusic} -gespeichert, die in der Datei @file{ly/grace-init.ly} definiert -sind. Wenn man sie umdefiniert, können andere Effekte erreicht -werden. - -" - doctitlede = "Globale Umdefinition von Verzierungsnoten" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Vous pouvez modifier les valeurs des variables @code{startGraceMusic}, -@code{stopGraceMusic}, @code{startAcciaccaturaMusic}, -@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, et -@code{stopAppoggiaturaMusic} afin d'en personnaliser les effets. Pour -plus de détails, voir le fichier @file{ly/grace-init.ly}. - -" - doctitlefr = "Redéfinition des réglages de mise en forme par défaut des notes d'ornement" - texidoc = " The global defaults for grace notes are stored in the identifiers @code{startGraceMusic}, @code{stopGraceMusic}, @@ -64,19 +22,19 @@ other effects may be obtained. doctitle = "Redefining grace note global defaults" } % begin verbatim + startAcciaccaturaMusic = { - s1*0( - \override Stem #'stroke-style = #"grace" + <>( + \override Flag #'stroke-style = #"grace" \slurDashed } stopAcciaccaturaMusic = { - \revert Stem #'stroke-style + \revert Flag #'stroke-style \slurSolid - s1*0) + <>) } \relative c'' { \acciaccatura d8 c1 } - diff --git a/Documentation/snippets/removing-bar-numbers-from-a-score.ly b/Documentation/snippets/removing-bar-numbers-from-a-score.ly index 74aa399711..10ff50af8a 100644 --- a/Documentation/snippets/removing-bar-numbers-from-a-score.ly +++ b/Documentation/snippets/removing-bar-numbers-from-a-score.ly @@ -4,43 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, contexts-and-engravers" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Se pueden eliminar completamente los números de compás quitando el -grabador @code{Bar_number_engraver} del contexto de @code{Score}. - -" - - doctitlees = "Suprimir los números de compás de toda la partitura" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Taktnummern können vollkommen aus den Noten entfernt werden, indem -man den @code{Bar_number_engraver} aus dem @code{Score}-Kontext -entfernt. - -" - doctitlede = "Entfernung von Taktnummern in einer Partitur" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Désactiver le graveur concerné --- @code{Bar_number_engraver} --- -donnera une partition --- contexte @code{Score} --- sans numéros de -mesure. - -" - doctitlefr = "Supprimer les numéros de mesure d'une partition" - + lsrtags = "contexts-and-engravers, rhythms" texidoc = " Bar numbers can be removed entirely by removing the @@ -50,6 +17,7 @@ Bar numbers can be removed entirely by removing the doctitle = "Removing bar numbers from a score" } % begin verbatim + \layout { \context { \Score @@ -61,4 +29,3 @@ Bar numbers can be removed entirely by removing the c4 c c c \break c4 c c c } - diff --git a/Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly b/Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly index cc4ff11d14..f615a50d7a 100644 --- a/Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly +++ b/Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly @@ -4,22 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% 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. -Se puede alterar este comportamiento pentagrama a pentagrama. - -" - doctitlees = "Quitar las barras de compás entre los pentagramas de un StaffGroup PianoStaff o GrandStaff" - - - texidoc = " By default, bar lines in StaffGroup, PianoStaff, or GrandStaff groups are connected between the staves. This behaviour can be overridden on @@ -29,6 +18,7 @@ a staff-by-staff basis. doctitle = "Removing connecting bar lines on StaffGroup PianoStaff or GrandStaff" } % begin verbatim + \relative c' { \new StaffGroup << \new Staff { @@ -46,4 +36,3 @@ a staff-by-staff basis. } >> } - diff --git a/Documentation/snippets/removing-the-first-empty-line.ly b/Documentation/snippets/removing-the-first-empty-line.ly index 79a8590bb7..bcdfb4ee5a 100644 --- a/Documentation/snippets/removing-the-first-empty-line.ly +++ b/Documentation/snippets/removing-the-first-empty-line.ly @@ -4,63 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, tweaks-and-overrides, breaks" - -%% 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 -@code{VerticalAxisGroup}. Esto se puede hacer globalmente dentro -del bloque @code{\\layout}, o localmente dentro del pentagrama -concreto que se quiere suprimir. En este último caso, tenemos que -especificar el contexto (@code{Staff} se aplica sólo al pentagrama -actual) delante de la propiedad. - -El pentagrama inferior del segundo grupo no se elimina, porque el -ajuste sólo se aplica al pentagrama concreto dentro del que se -escribe. - -" - doctitlees = "Quitar la primera línea vacía" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Ein leeres Notensystem kann auch aus der ersten Zeile einer Partitur -entfernt werden, indem die Eigenschaft @code{remove-first} der -@code{VerticalAxisGroup}-Eigenschaft eingesetzt wird. Das kann -man global in einer @code{\\layout}-Umgebung oder lokal in dem -bestimmten Notensystem machen, das entfernt werden soll. In letzterem -Fall muss man den Kontext angeben. - -Das untere Notensystem der zweiten Systemgruppe wird nicht entfernt, -weil in die Einstellungen in dem Schnipsel nur für das eine Notensystem -gültig sind. - -" - doctitlede = "Die erste leere Notenzeile auch entfernen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Par défaut, le premier système comportera absolument toutes les portées. -Si vous voulez masquer les portées vides y compris pour le premier -système, vous devrez activer la propriété @code{remove-first} du -@code{VerticalAxisGroup}. Mentionnée dans un bloc @code{\\layout}, -cette commande agira de manière globale. Pour qu'elle ne soit effective -que pour une portée individuelle, vous devrez également spécifier le -contexte (@code{Staff} pour qu'il ne concerne que la portée en cours) en -préfixe de la propriété. - -La première ligne inférieure du deuxième @code{StaffGroup} est bien -présente, pour la simple raison que le réglage en question ne s'applique -qu'à la portée dans laquelle il a été inscrit. - -" - doctitlefr = "Masquage de la première ligne si elle est vide" - + lsrtags = "breaks, staff-notation, tweaks-and-overrides" texidoc = " The first empty staff can also be removed from the score by setting the @@ -78,6 +25,7 @@ written. doctitle = "Removing the first empty line" } % begin verbatim + \layout { \context { \Staff \RemoveEmptyStaves @@ -108,4 +56,3 @@ written. R } >> - diff --git a/Documentation/snippets/repeats-headword.ly b/Documentation/snippets/repeats-headword.ly index 7fe25c65c7..0f284e5bc4 100644 --- a/Documentation/snippets/repeats-headword.ly +++ b/Documentation/snippets/repeats-headword.ly @@ -1,32 +1,27 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "headword" -% NR 1.7 Repeats + texidoc = " +Repeats headword + +" + doctitle = "Repeats headword" +} % begin verbatim % Beethoven, Op. 57 % Piano sonata 23 - Dem Grafen Franz von Brunswick Gewidmet % Movt II, Andante con moto % Measures 9 - 16 -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} % begin verbatim - - +\include "english.ly" \new PianoStaff << diff --git a/Documentation/snippets/repeats-intro.itely b/Documentation/snippets/repeats-intro.itely index 896f8f8e4e..27556b74a8 100644 --- a/Documentation/snippets/repeats-intro.itely +++ b/Documentation/snippets/repeats-intro.itely @@ -1,5 +1,6 @@ @node Repeats @unnumbered Repeats +@nodeprefix Repeats @ruser{Repeats} diff --git a/Documentation/snippets/rest-styles.ly b/Documentation/snippets/rest-styles.ly index 221b38f0c4..a2d5641364 100644 --- a/Documentation/snippets/rest-styles.ly +++ b/Documentation/snippets/rest-styles.ly @@ -4,32 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, ancient-notation, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - doctitlees = "Estilos de silencios" - texidoces = " -Los silencios se pueden imprimir en distintos estilos. -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - - doctitlede = "Pausenstile" - texidocde = " -Pausen können in verschiedenen Stilen dargestellt werden. -" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Les silences peuvent être gravés selon différents styles. - -" - doctitlefr = "Styles de silences" + lsrtags = "ancient-notation, rhythms, symbols-and-glyphs, tweaks-and-overrides" texidoc = " Rests may be used in various styles. @@ -41,6 +19,7 @@ Rests may be used in various styles. doctitle = "Rest styles" } % begin verbatim + \layout { indent = 0 \context { @@ -70,4 +49,3 @@ Rests may be used in various styles. r\maxima^\markup \typewriter { default } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 } - diff --git a/Documentation/snippets/reverting-default-beam-endings.ly b/Documentation/snippets/reverting-default-beam-endings.ly index e3b3017657..f8581769ed 100644 --- a/Documentation/snippets/reverting-default-beam-endings.ly +++ b/Documentation/snippets/reverting-default-beam-endings.ly @@ -1,47 +1,19 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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: + lsrtags = "rhythms, version-specific" -" - doctitlees = "Alteración de los finales de barra predeterminados" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Um Balken im 12/8-Takt als @code{3-4-3-2} zu gruppieren, muss man zuerst die -Standardwerte für die Balken im 12/8-Takt rückgängig machen und dann die neuen -Werte setzen: - -" - doctitlede = "Standard-Balkenwerte rückgängig machen" - - - -%% Translation of GIT committish: 548076f550a2b7fb09f1260f0e5e2bb028ad396c - texidocfr = " -Pour obtenir des ligatures en groupes de @code{3-4-3-2} croches, dans -une mesure à 12/8, il faudra préalablement annuler les réglages par -défaut relatifs à 12/8, puis ajouter nos propres règles : - -" - doctitlefr = "Annulation des règles de ligature par défaut" - - lsrtags = "rhythms" texidoc = " -To typeset beams grouped @code{3-4-3-2} one need only change the -beat structure: +To typeset beams grouped @code{3-4-3-2} in 12/8 it is necessary first +to override the default beam endings in 12/8, and then to set up the +new beaming endings: + " doctitle = "Reverting default beam endings" } % begin verbatim diff --git a/Documentation/snippets/rhythmic-slashes.ly b/Documentation/snippets/rhythmic-slashes.ly index 63a3f20e97..5feb8b92bd 100644 --- a/Documentation/snippets/rhythmic-slashes.ly +++ b/Documentation/snippets/rhythmic-slashes.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" @@ -26,6 +26,7 @@ the appropriate duration). doctitle = "Rhythmic slashes" } % begin verbatim + % Macro to print single slash rs = { \once \override Rest #'stencil = #ly:percent-repeat-item-interface::beat-slash @@ -52,4 +53,3 @@ comp = #(define-music-function (parser location count) (integer?) \comp #4 | } } - diff --git a/Documentation/snippets/rhythms-headword.ly b/Documentation/snippets/rhythms-headword.ly index 6a187f64b2..a05cbcfc3e 100644 --- a/Documentation/snippets/rhythms-headword.ly +++ b/Documentation/snippets/rhythms-headword.ly @@ -1,33 +1,28 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 1.2 Rhythms +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} % begin verbatim + lsrtags = "headword" + texidoc = " +Rhythms headword +" + doctitle = "Rhythms headword" +} % begin verbatim % Beethoven, Op. 81a % Piano sonata 26 - Das Lebewohl % Movt II - Abwesenheit % Measures 31 - 34 +\include "english.ly" + \layout { \context { \Score diff --git a/Documentation/snippets/rhythms-intro.itely b/Documentation/snippets/rhythms-intro.itely index dede3bf13e..ec7b2a923e 100644 --- a/Documentation/snippets/rhythms-intro.itely +++ b/Documentation/snippets/rhythms-intro.itely @@ -1,5 +1,6 @@ @node Rhythms @unnumbered Rhythms +@nodeprefix Rhythms @ruser{Rhythms} diff --git a/Documentation/snippets/rhythms.snippet-list b/Documentation/snippets/rhythms.snippet-list index f67d4b7a1e..6f964e1c63 100644 --- a/Documentation/snippets/rhythms.snippet-list +++ b/Documentation/snippets/rhythms.snippet-list @@ -4,6 +4,7 @@ adjusting-grace-note-spacing.ly aligning-bar-numbers.ly alternative-breve-note.ly automatic-beam-subdivisions.ly +automatically-change-durations.ly avoiding-collisions-with-chord-fingerings.ly beam-endings-in-score-context.ly beam-grouping-in-7-8-time.ly @@ -12,12 +13,12 @@ changing-beam-knee-gap.ly changing-form-of-multi-measure-rests.ly changing-the-number-of-augmentation-dots-per-note.ly changing-the-tempo-without-a-metronome-mark.ly -changing-the-time-signature-without-affecting-the-beaming.ly changing-the-tuplet-number.ly changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly chant-or-psalms-notation.ly compound-time-signatures.ly conducting-signs,-measure-grouping-signs.ly +consistently-left-aligned-bar-numbers.ly controlling-tuplet-bracket-visibility.ly creating-metronome-marks-in-markup-mode.ly engraving-ties-manually.ly @@ -26,7 +27,6 @@ entering-several-tuplets-using-only-one--times-command.ly flat-flags-and-beam-nibs.ly forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly generating-custom-flags.ly -grouping-beats.ly guitar-strum-rhythms.ly heavily-customized-polymetric-time-signatures.ly making-an-object-invisible-with-the-transparent-property.ly @@ -57,6 +57,7 @@ rhythmic-slashes.ly skips-in-lyric-mode-2.ly skips-in-lyric-mode.ly stemlets.ly +strict-beat-beaming.ly subdividing-beams.ly three-sided-box.ly time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly diff --git a/Documentation/snippets/satb-choir-template---four-staves.ly b/Documentation/snippets/satb-choir-template---four-staves.ly index 63144f24f0..99d40cc6c6 100644 --- a/Documentation/snippets/satb-choir-template---four-staves.ly +++ b/Documentation/snippets/satb-choir-template---four-staves.ly @@ -4,39 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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 = " -SATB-Chorvorlage auf vier Systemen - -" - doctitlede = "SATB-Chorvorlage auf vier Systemen" - - -%% Translation of GIT committish: 092f85605dcea69efff5ef31de4ff100346d6ef8 - - texidocfr = " -Modèle pour chœur à quatre voix mixtes, chaque pupitre ayant sa propre -portée. - -" - doctitlefr = "Modèle pour chœur SATB sur quatre portées" - + lsrtags = "template, vocal-music" texidoc = " SATB choir template (four staves) @@ -45,6 +16,7 @@ SATB choir template (four staves) doctitle = "SATB Choir template - four staves" } % begin verbatim + global = { \key c \major \time 4/4 @@ -101,4 +73,3 @@ basswords = \lyricmode { mi mi mi mi } >> >> } - diff --git a/Documentation/snippets/scheme-language.snippet-list b/Documentation/snippets/scheme-language.snippet-list new file mode 100644 index 0000000000..3e9034afe7 --- /dev/null +++ b/Documentation/snippets/scheme-language.snippet-list @@ -0,0 +1,18 @@ +adding-extra-fingering-with-scheme.ly +adding-the-current-date-to-a-score.ly +center-text-below-hairpin-dynamics.ly +changing--flageolet-mark-size.ly +changing-properties-for-individual-grobs.ly +creating-a-sequence-of-notes-on-various-pitches.ly +creating-double-digit-fingerings.ly +displaying-grob-ancestry.ly +drawing-boxes-around-grobs.ly +drawing-circles-around-various-objects.ly +generating-random-notes.ly +generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly +outputting-the-version-number.ly +string-number-extender-lines.ly +three-sided-box.ly +transposing-pitches-with-minimum-accidentals-smart-transpose.ly +using-ly-grob-object-to-access-grobs-with--tweak.ly +using-postscript-to-generate-special-note-head-shapes.ly diff --git a/Documentation/snippets/score-for-diatonic-accordion.ly b/Documentation/snippets/score-for-diatonic-accordion.ly index cc11068dcc..029486b1fe 100644 --- a/Documentation/snippets/score-for-diatonic-accordion.ly +++ b/Documentation/snippets/score-for-diatonic-accordion.ly @@ -1,13 +1,14 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.20 +\version "2.16.0" \header { - lsrtags = "template" + lsrtags = "template, real-music, specific-notation" texidoc = " A template to write a score for a diatonic accordion. @@ -60,6 +61,7 @@ editor. doctitle = "Score for diatonic accordion" } % begin verbatim + verse = \lyricmode { Wie gross bist du! Wie gross bist du! } harmonies = \new ChordNames \chordmode { @@ -70,7 +72,7 @@ harmonies = \new ChordNames \chordmode { bes1 } -NoStem = \override Stem #'transparent = ##t +NoStem = { \override Stem #'transparent = ##t \override Flag #'transparent = ##t } NoNoteHead = \override NoteHead #'transparent = ##t ZeroBeam = \override Beam #'positions = #'(0 . 0) @@ -182,7 +184,7 @@ staffVoice = \new Staff = astaffvoice { staffAccordionMel = \new Staff \with { \remove "Clef_engraver" } { - #(set-accidental-style 'forget) %Set the accidentals (Vorzeichen) for each note, + \accidentalStyle "forget" %Set the accidentals (Vorzeichen) for each note, %do not remember them for the rest of the measure. \time 4/4 \set Staff.instrumentName="Accordion" @@ -194,9 +196,9 @@ staffAccordionMel = AltOn = #(define-music-function (parser location mag) (number?) - #{ \override Stem #'length = #$(* 7.0 mag) + #{ \override Stem #'length = #(* 7.0 mag) \override NoteHead #'font-size = -#$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #}) +#(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #}) AltOff = { \revert Stem #'length @@ -243,4 +245,3 @@ staffBassRhytm = >> } %} - diff --git a/Documentation/snippets/new/screech-boink.ly b/Documentation/snippets/screech-and-boink.ly similarity index 78% rename from Documentation/snippets/new/screech-boink.ly rename to Documentation/snippets/screech-and-boink.ly index 35efa386b2..2bb83f3239 100644 --- a/Documentation/snippets/new/screech-boink.ly +++ b/Documentation/snippets/screech-and-boink.ly @@ -1,9 +1,20 @@ -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + \header { - lsrtags = "headwords" - texidoc = "Random complex notation" + lsrtags = "headword" + + texidoc = " +Random complex notation + +" doctitle = "Screech and Boink" -} +} % begin verbatim \score { \context PianoStaff << @@ -58,10 +69,7 @@ } >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 8) - } + \tempo 8 = 60 } \layout { ragged-right = ##t diff --git a/Documentation/snippets/screech-boink.ly b/Documentation/snippets/screech-boink.ly deleted file mode 100644 index 4cf5f59345..0000000000 --- a/Documentation/snippets/screech-boink.ly +++ /dev/null @@ -1,81 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\header { - lsrtags = "headwords" - texidoc = "Random complex notation" - doctitle = "Screech and Boink" -} % begin verbatim - - -\score { - \context PianoStaff << - \new Staff = "up" { - \time 4/8 - \key c \minor - << - { - \revert Stem #'direction - \change Staff = down - \set subdivideBeams = ##t - g16.[ - \change Staff = up - c'''32 - \change Staff = down - g32 - \change Staff = up - c'''32 - \change Staff = down - g16] - \change Staff = up - \stemUp - \set followVoice = ##t - c'''32([ b''16 a''16 gis''16 g''32)] - } - \\ - { s4 \times 2/3 { d'16[ f' g'] } as'32[ b''32 e'' d''] } - \\ - { s4 \autoBeamOff d''8.. f''32 } - \\ - { s4 es''4 } - >> - } - \new Staff = "down" { - \clef bass - \key c \minor - \set subdivideBeams = ##f - \override Stem #'french-beaming = ##t - \override Beam #'beam-thickness = #0.3 - \override Stem #'thickness = #4.0 - g'16[ b16 fis16 g16] - << - \makeClusters { - as16 - } - \\ - { - \override Staff.Arpeggio #'arpeggio-direction = #DOWN - 4\arpeggio - } - >> - } - >> - \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 8) - } - } - \layout { - ragged-right = ##t - \context { - \Staff - \consists "Horizontal_bracket_engraver" - } - } -} diff --git a/Documentation/snippets/separating-key-cancellations-from-key-signature-changes.ly b/Documentation/snippets/separating-key-cancellations-from-key-signature-changes.ly index b342eaed09..72713fe3e2 100644 --- a/Documentation/snippets/separating-key-cancellations-from-key-signature-changes.ly +++ b/Documentation/snippets/separating-key-cancellations-from-key-signature-changes.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, tweaks-and-overrides" diff --git a/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly b/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly index 8a617e5985..0966e7ceae 100644 --- a/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly +++ b/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly @@ -4,44 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, tweaks-and-overrides" -%% 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 -inmediatamente precedente. Se puede controlar este comportamiento -sobreescribiendo la propiedad @code{'to-barline}. - -" - doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Wenn die Note, an welcher eine Crescendo-Klammer endet, die erste Note -eines Taktes ist, wird die Klammer an der vorhergehenden Taktlinie -beendet. Dieses Verhalten kann auch mit der Eigenschaft -@code{'to-barline} geändert werden: -" - doctitlede = "Das Verhalten von Crescendo-Klammern an Taktlinien beeinflussen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -En principe, un soufflet -- (de)crescendo imprimé sous forme graphique -- -commence au bord gauche de la note de départ, et se termine au -bord droit de la note d'arrivée. Cependant, si la note d'arrivée -est sur un premier temps, le soufflet s'arrêtera au niveau de la -barre de mesure qui la précède. Ce comportement peut être annulé -en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} : - -" - doctitlefr = "Soufflets et barres de mesure" - - texidoc = " If the note which ends a hairpin falls on a downbeat, the hairpin stops at the bar line immediately preceding. This behavior can be controlled @@ -51,6 +18,7 @@ by overriding the @code{'to-barline} property. doctitle = "Setting hairpin behavior at bar lines" } % begin verbatim + \relative c'' { e4\< e2. e1\! diff --git a/Documentation/snippets/setting-system-separators.ly b/Documentation/snippets/setting-system-separators.ly index 3a29914877..d7d4d2cda2 100644 --- a/Documentation/snippets/setting-system-separators.ly +++ b/Documentation/snippets/setting-system-separators.ly @@ -4,22 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout" - -%% 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 -@code{\\slashSeparator} está disponible como una elección -predeterminada adecuada. - -" - doctitlees = "Fijar un separador entre los sistemas" - - + lsrtags = "paper-and-layout, staff-notation, tweaks-and-overrides" texidoc = " System separators can be inserted between systems. Any markup can be @@ -30,6 +18,7 @@ default. doctitle = "Setting system separators" } % begin verbatim + \paper { system-separator-markup = \slashSeparator } @@ -48,4 +37,3 @@ notes = \relative c' { >> } } - diff --git a/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly b/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly index feba3e29c2..7051646a03 100644 --- a/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly +++ b/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly @@ -1,43 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" -Existen tres estilos distintos de repeticiones dobles para la primera -y segunda vez, que se pueden ajustar utilizando -@code{doubleRepeatType}. - -" - - doctitlees = "Establecer el tipo de repetición doble predeterminado para la primera y segunda vez" +\header { + lsrtags = "repeats" -%% Translation of GIT committish: 158658dc75b6f6553e77ff53119ac802eb91f50c - texidocfr = "LilyPond dispose de trois styles de barre différents -pour indiquer une succession de reprises. Vous devez opter pour un - style par défaut, à l'aide de la propriété @code{doubleRepeatType}. + texidoc = " +There are three different styles of double repeats for volte, that can +be set using @code{doubleRepeatType}. " - - doctitlefr = "Succession de reprise et style de barre par défaut" - - - lsrtags = "repeats" - texidoc = "There are three different styles of double repeats for -volte, that can be set using @code{doubleRepeatType}." - doctitle = "Setting the double repeat default for volte" } % begin verbatim - - \relative c'' { \repeat volta 1 { c1 } \set Score.doubleRepeatType = #":|:" diff --git a/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly b/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly index eddfe22d0a..d22a05d91d 100644 --- a/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly +++ b/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly @@ -4,39 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Si los reguladores son demasiado cortos, se pueden alargar -modificando la propiedad @code{minimum-length} del objeto -@code{Hairpin}. - -" - doctitlees = "Ajustar la longitud mínima de los reguladores" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem -die @code{minimum-length}-Eigenschaft des @code{Hairpin}-Objektes -verändert wird. - -" - doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Si un soufflet est trop court, il suffit d'ajuster la propriété -@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger. - -" - doctitlefr = "Ajustement de la longueur d'un soufflet" - - texidoc = " If hairpins are too short, they can be lengthened by modifying the @code{minimum-length} property of the @code{Hairpin} object. @@ -45,9 +17,9 @@ If hairpins are too short, they can be lengthened by modifying the doctitle = "Setting the minimum length of hairpins" } % begin verbatim + \relative c'' { c4\< c\! d\> e\! \override Hairpin #'minimum-length = #5 << f1 { s4 s\< s\> s\! } >> } - diff --git a/Documentation/snippets/shortening-volta-brackets.ly b/Documentation/snippets/shortening-volta-brackets.ly index 7491e9344c..a518debae4 100644 --- a/Documentation/snippets/shortening-volta-brackets.ly +++ b/Documentation/snippets/shortening-volta-brackets.ly @@ -4,44 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "repeats" -%% 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 -acortartlos estableciendo un valor cierto para -@code{voltaSpannerDuration}. En el ejemplo siguiente, el corchete -sólo dura un compás, que corresponde a una duración de 3/4. - -" - doctitlees = "Acortar los corchetes de primera y segunda vez" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber -es ist möglich sie zu verkürzen. Hierzu muss -@code{voltaSpannerDuration} definiert werden, in dem Beispiel etwa als -3/4, sodass die Klammer nur einen Takt dauert. - -" - doctitlede = "Volta-Klammern verkürzen" - -%% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441 - texidocfr = " -Les crochets indiquant les fins alternatives s'étalent tout au long ce -celle-ci. On peut les raccourcir en définissant la propriété -@code{voltaSpannerDuration}. Dans l'exemple suivant, le crochet ne se -prolonge que sur une mesure à 3/4. - -" - doctitlefr = "Diminution de la taille du crochet d'alternative" - - texidoc = " By default, the volta brackets will be drawn over all of the alternative music, but it is possible to shorten them by setting @@ -52,6 +19,7 @@ lasts one measure, which is a duration of 3/4. doctitle = "Shortening volta brackets" } % begin verbatim + \relative c'' { \time 3/4 c4 c c @@ -65,4 +33,3 @@ lasts one measure, which is a duration of 3/4. { g4 g g } } } - diff --git a/Documentation/snippets/showing-chords-at-changes.ly b/Documentation/snippets/showing-chords-at-changes.ly index 80aa704961..cc3542bd4f 100644 --- a/Documentation/snippets/showing-chords-at-changes.ly +++ b/Documentation/snippets/showing-chords-at-changes.ly @@ -4,28 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "chords" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se pueden imprimir los acordes exclusivamente al comienzo de las -líneas y cuando cambia el acorde. - -" - doctitlees = "Imprimir los acordes cuando se produce un cambio" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Akkordsymbole können so eingestellt werden, dass sie nur zu Beginn der Zeile -und bei Akkordwechseln angezeigt werden. - -" - doctitlede = "Akkordsymbole bei Wechsel anzeigen" - texidoc = " Chord names can be displayed only at the start of lines and when the chord changes. @@ -34,6 +17,7 @@ chord changes. doctitle = "Showing chords at changes" } % begin verbatim + harmonies = \chordmode { c1:m c:m \break c:m c:m d } @@ -46,4 +30,3 @@ harmonies = \chordmode { \relative c' { \harmonies } } >> - diff --git a/Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly b/Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly index f7c9a3e682..c4f595c816 100644 --- a/Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly +++ b/Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly @@ -1,23 +1,29 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "expressive-marks, tweaks-and-overrides" + lsrtags = "expressive-marks, tweaks-and-overrides, version-specific" texidoc = " By default, LilyPond does not allow the same articulation (e.g., an accent, a fermata, a flageolet, etc.) to be displayed above and below a -note. For example, @code{c4_\\fermata^\\fermata} will only show a fermata -below, ignoring the fermata above. However, one can stick +note. For example, c4_\\fermata^\\fermata will only show a fermata +below. The fermata above will simply be ignored. However, one can stick scripts (just like fingerings) inside a chord, which means it is -possible to have as many articulations as desired. So, the solution is to -write the note as a chord and add the articulations inside the @code{<@dots{}>}. +possible to have as many articulations as desired. This approach has +the advantage that it ignores the stem and positions the articulation +relative to the note head. This can be seen in the case of the +flageolets in the snippet. To mimic the behaviour of scripts outside a +chord, 'add-stem-support would be required. So, the solution is to +write the note as a chord and add the articulations inside the <...>. +The direction will always be above, but one can tweak this via a +\\tweak: @code{} + " doctitle = "Showing the same articulation above and below a note or chord" } % begin verbatim diff --git a/Documentation/snippets/simple-lead-sheet.ly b/Documentation/snippets/simple-lead-sheet.ly index 7998275c2d..b6f3b443c8 100644 --- a/Documentation/snippets/simple-lead-sheet.ly +++ b/Documentation/snippets/simple-lead-sheet.ly @@ -4,35 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "chords" -%% 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»: - -" - doctitlees = "Hoja guía de acordes o «lead sheet» sencilla" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Ein Liedblatt besteht aus Akkordbezeichnungen, einer Melodie und dem Liedtext: - -" - doctitlede = "Ein einfaches Liedblatt" - -%% Translation of GIT committish: 9594a4569164407a146bbc4aad8be3a60a4725cf - texidocfr = " -Assembler des noms d'accords, une mélodie et des paroles permet -d'obtenir la partition d'un chanson : - -" - doctitlefr = "Chanson simple" - texidoc = " When put together, chord names, a melody, and lyrics form a lead sheet: @@ -40,6 +16,7 @@ When put together, chord names, a melody, and lyrics form a lead sheet: doctitle = "Simple lead sheet" } % begin verbatim + << \chords { c2 g:sus4 f e } \relative c'' { @@ -48,4 +25,3 @@ When put together, chord names, a melody, and lyrics form a lead sheet: } \addlyrics { One day this shall be free __ } >> - diff --git a/Documentation/snippets/simultaneous-headword.ly b/Documentation/snippets/simultaneous-headword.ly index 1d4e31faa5..8c43c694f2 100644 --- a/Documentation/snippets/simultaneous-headword.ly +++ b/Documentation/snippets/simultaneous-headword.ly @@ -1,25 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" + lsrtags = "headword" + + texidoc = " +Simultaneous notes + +" + doctitle = "Simultaneous headword" } % begin verbatim +\include "english.ly" % NR 1.5 Simultaneous notes @@ -60,152 +57,48 @@ trillFlat = % RH voice 1 \new Voice { - \voiceOne - s4. - s8. - - | - - s4. - a''8 \p \> [ ( - g''16 ] ) - - | - - g''4. - af''8 [ ( - g''16 ] ) - - | - - g''8. [ - g''8. - g''8. \pp ] - - | - - g''8. [ - af''8. - af''8. ] - - | - - af''8. [ - af''8. - af''8. ] - - | - \break - + s4. s8. | + s4. a''8[( \p \> g''16]) | + g''4. af''8[( g''16]) | + g''8.[ g''8. g''8.] \pp | + g''8.[ af''8.af''8.] | + af''8.[ af''8.af''8.] | \trillFlat - af''4. \startTrillSpan - ~ - af''8. - ~ - - | - - af''4. - ~ - af''8. - ~ - - | - + af''4.~ \startTrillSpan + af''8.~ | + af''4.~ af''8.~ | \oneVoice - 8. [ - a''8. \p \< - bf''8. ] - ~ - - | - - bf''8. [ - b''8. - c'''8. ] - ~ - + 8.[ a''8. \p \< bf''8.]~ | + bf''8.[ b''8. c'''8.]~ \bar "||" - \key ef \major - c'''8. [ - cs'''8. \f ] \stopTrillSpan + c'''8.[ cs'''8.] \f \stopTrillSpan r8. - } % RH voice 2 \new Voice { \voiceTwo \override Voice.TrillSpanner #'direction = #DOWN - d''4. \f \startTrillSpan - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - + d''4.~ \f \startTrillSpan + d''8.~ | + d''4.~ d''8.~ | d''8. \stopTrillSpan \trillFlat - d''4. \startTrillSpan - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. \stopTrillSpan - ~ - - | - + d''4.~ \startTrillSpan | + d''4.~ d''8.~ | + d''4.~ d''8.~ | + d''4.~ d''8.~ \stopTrillSpan | \trillFlat - d''4. \startTrillSpan - ~ - d''8. - ~ - - | - - d''4. - ~ - d''8. - ~ - - | - + d''4.~ \startTrillSpan + d''8. ~ | + d''4.~ d''8.~ | \once \override NoteColumn #'ignore-collision = ##t \hideNotes d''8. \stopTrillSpan - s4. - - | - - s8. - s8. - + s4. | + s8. s8. } >> @@ -215,108 +108,41 @@ trillFlat = \clef bass \key c \major \time 9/16 - - r8. - r8. - 8 [ ( - 16 ] ) - - | - + r8. r8. 8[( 16]) | 4. \clef treble - c''8 [ ( - b'16 ] ) - - | - - b'4. - c''8 [ ( - b'16 ] ) - - | - - b'8. [ - b'8. - b'8. ] - - | - - b'8. [ - bf'8. ] + c''8[( b'16]) | + b'4. c''8[( b'16]) | + b'8.[ b'8. b'8.] | + b'8.[ bf'8.] \clef bass - 8 [ ( - 16 ] ) - - | - + 8[( 16]) | 4. \clef treble - f'8 [ ( - bf16 ] ) - - | - + f'8[( bf16]) | << - \new Voice { \voiceOne \override Voice.TrillSpanner #'direction = #UP - f'4. \startTrillSpan - ~ - f'8. - ~ - - | - - f'4. - ~ - f'8. - ~ - - | - + f'4.~ \startTrillSpan + f'8.~ | + f'4.~ f'8.~ | f'8. \stopTrillSpan } - \new Voice { \voiceTwo \override Voice.TrillSpanner #'direction = #DOWN - bf8. [ - bf8. - bf8. ] - - | - - bf8. [ - bf8. - bf8. ] - - | - + bf8.[ bf8. bf8.] | + bf8.[ bf8. bf8.] | bf8. } - >> - \oneVoice - r8. - r8. - - | - - r8. - r8. - r8. + r8. r8. | + r8. r8. r8. \clef bass - | - \key ef \major - r8. - r8. - r8. - + r8. r8. r8. } - >> diff --git a/Documentation/snippets/simultaneous-notes-intro.itely b/Documentation/snippets/simultaneous-notes-intro.itely index 9a4612c2ea..8a2d2a275a 100644 --- a/Documentation/snippets/simultaneous-notes-intro.itely +++ b/Documentation/snippets/simultaneous-notes-intro.itely @@ -1,5 +1,6 @@ @node Simultaneous notes @unnumbered Simultaneous notes +@nodeprefix Simultaneous notes @ruser{Simultaneous notes} diff --git a/Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly b/Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly index 456f54c332..f4b72259b9 100644 --- a/Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly +++ b/Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly @@ -4,53 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Esta plantilla facilita la preparación de una canción con melodía, -letra y acordes. - -" - doctitlees = "Plantilla de pentagrama único con música letra y acordes" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。 -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Mit diesem Beispiel können Sie einen Song mit Melodie, -Text und Akkorden schreiben. -" - - doctitlede = "Vorlage für eine Notenzeile mit Noten Text und Akkorden" - - -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 - texidocfr = " -Ce cannevas comporte tous les éléments d'une chanson : la mélodie, -les paroles, les accords. - -" - doctitlefr = "Paroles musique et accords" + lsrtags = "chords, really-simple, template, vocal-music" texidoc = " This template allows the preparation of a song with melody, words, and @@ -60,6 +17,7 @@ chords. doctitle = "Single staff template with notes lyrics and chords" } % begin verbatim + melody = \relative c' { \clef treble \key c \major @@ -88,4 +46,3 @@ harmonies = \chordmode { \layout { } \midi { } } - diff --git a/Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly b/Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly index 4dbc43e17d..4cd409c667 100644 --- a/Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly +++ b/Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly @@ -4,19 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "vocal-music, chords, template" - -%% 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 -trastes. -" - - doctitlees = "Plantilla para un pentagrama único con música letra acordes y trastes" + lsrtags = "chords, template, vocal-music" texidoc = " Here is a simple lead sheet template with melody, lyrics, chords and @@ -26,6 +17,7 @@ fret diagrams. doctitle = "Single staff template with notes lyrics chords and frets" } % begin verbatim + verseI = \lyricmode { \set stanza = #"1." This is the first verse @@ -66,4 +58,3 @@ staffMelody = \relative c' { \layout { } \midi { } } - diff --git a/Documentation/snippets/single-staff-template-with-notes-and-chords.ly b/Documentation/snippets/single-staff-template-with-notes-and-chords.ly index 381b63de3e..75272f52f7 100644 --- a/Documentation/snippets/single-staff-template-with-notes-and-chords.ly +++ b/Documentation/snippets/single-staff-template-with-notes-and-chords.ly @@ -4,54 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -¿Quiere preparar una hoja guía de acordes (o «lead sheet») con -melodía y acordes? ¡No busque más! - -" - -doctitlees = "Plantilla de pentagrama único con música y acordes" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません! -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben? Hier ist -das richtige Beispiel für Sie! -" - - doctitlede = "Vorlage für eine Notenzeile mit Akkorden" - - -%% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16 - texidocfr = " -Vous avez besoin de la partition d'une mélodie avec les accords ? -N'allez pas plus loin ! - -" - -doctitlefr = "Mélodie simple et accords" + lsrtags = "chords, really-simple, template" texidoc = " Want to prepare a lead sheet with a melody and chords? Look no further! @@ -61,6 +17,7 @@ Want to prepare a lead sheet with a melody and chords? Look no further! doctitle = "Single staff template with notes and chords" } % begin verbatim + melody = \relative c' { \clef treble \key c \major @@ -86,4 +43,3 @@ harmonies = \chordmode { \layout{ } \midi { } } - diff --git a/Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly b/Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly index 7181b8a0dd..244baef401 100644 --- a/Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly +++ b/Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly @@ -4,71 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 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 -el barrado automático, que es lo más frecuente en las partes vocales -antiguas. Para usar el barrado automático modifique o marque como un -comentario la línea correspondiente. - -" - doctitlees = "Plantilla de pentagrama único don notas y letra" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c -を付け加えて、それから歌詞の単語を付け加えてください。この例は自動ビームを off にして@c -います。これはボーカル パートでは一般的なことです。自動ビームを使用するには、対応する@c -行を変更するか、コメント アウトしてください。 -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren -Sie es in Ihre Datei, fügen Sie Noten und Text hinzu und übersetzen -Sie es mit LilyPond. In dem Beispiel wird die automatische -Balkenverbindung ausgeschaltet (mit dem Befehl @code{\\autoBeamOff}), -wie es für Vokalmusik üblich ist. -Wenn Sie die Balken wieder einschalten wollen, müssen Sie die -entsprechende Zeile entweder ändern oder auskommentieren. -" - - doctitlede = "Vorlage für ein Notensystem mit Noten und Gesangstext" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - - texidocfr = " -Ce canevas comporte une simple ligne mélodique agrémentée de paroles. -Recopiez-le, ajoutez-y d'autres notes et paroles. Les ligatures -automatiques sont ici désactivées, comme il est d'usage en matière de -musique vocale. Pour activer la fonction de ligature automatique, -modifiez ou commentez la ligne en question. - -" - doctitlefr = "Portée unique et paroles" + lsrtags = "really-simple, template, vocal-music" texidoc = " This small template demonstrates a simple melody with lyrics. Cut and @@ -80,6 +19,7 @@ beaming, change or comment out the relevant line. doctitle = "Single staff template with notes and lyrics" } % begin verbatim + melody = \relative c' { \clef treble \key c \major @@ -103,4 +43,3 @@ text = \lyricmode { \layout { } \midi { } } - diff --git a/Documentation/snippets/single-staff-template-with-only-notes.ly b/Documentation/snippets/single-staff-template-with-only-notes.ly index 1427f45158..40bbd12cb0 100644 --- a/Documentation/snippets/single-staff-template-with-only-notes.ly +++ b/Documentation/snippets/single-staff-template-with-only-notes.ly @@ -4,60 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 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 -un archivo, escriba las notas y ¡ya está! - -" - doctitlees = "Plantilla de un solo pentagrama con notas únicamente" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c -これをファイルにカット&ペーストして、音符を付け加えれば完了です! -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein -Soloinstrument oder ein Melodiefragment. Kopieren Sie es und fügen -Sie es in Ihre Datei ein, schreiben Sie die Noten hinzu, und Sie haben -eine vollständige Notationsdatei. -" - - doctitlede = "Vorlage für ein Notensystem" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Cet exemple simpliste se compose d'une portée agrémentée de quelques -notes. Il convient tout à fait pour un instrument seul ou un -fragment mélodique. Recopiez-le dans un nouveau fichier, ajoutez-y -d'autres notes et c'est pret ! - -" - doctitlefr = "Portée unique avec quelques notes" + lsrtags = "really-simple, template" texidoc = " This very simple template gives you a staff with notes, suitable for a @@ -68,6 +18,7 @@ add notes, and you're finished! doctitle = "Single staff template with only notes" } % begin verbatim + melody = \relative c' { \clef treble \key c \major @@ -81,4 +32,3 @@ melody = \relative c' { \layout { } \midi { } } - diff --git a/Documentation/snippets/skips-in-lyric-mode-2.ly b/Documentation/snippets/skips-in-lyric-mode-2.ly index 8e3936b533..e9e25e9756 100644 --- a/Documentation/snippets/skips-in-lyric-mode-2.ly +++ b/Documentation/snippets/skips-in-lyric-mode-2.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, vocal-music" + lsrtags = "really-simple, rhythms, vocal-music" texidoc = " Although @code{s} skips cannot be used in @code{\\lyricmode} (it is @@ -18,8 +18,8 @@ or underscores (@code{_}) are available.So for example: doctitle = "Skips in lyric mode (2)" } % begin verbatim + << \relative c'' { a4 b c d } \new Lyrics \lyricmode { a4 "" _ gap } >> - diff --git a/Documentation/snippets/skips-in-lyric-mode.ly b/Documentation/snippets/skips-in-lyric-mode.ly index f9efee48c7..6cea02f255 100644 --- a/Documentation/snippets/skips-in-lyric-mode.ly +++ b/Documentation/snippets/skips-in-lyric-mode.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, vocal-music" + lsrtags = "really-simple, rhythms, vocal-music" texidoc = " The @code{s} syntax for skips is only available in note mode and chord @@ -18,8 +18,8 @@ mode. In other situations, for example, when entering lyrics, using the doctitle = "Skips in lyric mode" } % begin verbatim + << \relative c'' { a1 | a } \new Lyrics \lyricmode { \skip 1 bla1 } >> - diff --git a/Documentation/snippets/slides-in-tablature.ly b/Documentation/snippets/slides-in-tablature.ly index c85065de85..970380d2f3 100644 --- a/Documentation/snippets/slides-in-tablature.ly +++ b/Documentation/snippets/slides-in-tablature.ly @@ -1,37 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Los deslizamientos se pueden componer tipográficamente tanto en los -contextos de @code{Staff} como en los de @code{TabStaff}: - -" - - doctitlees = "Deslizamientos en tablatura" - -%% Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422 - texidocde = " -Gleiten kann sowohl in normalem Notensystem als auch in Tabulaturen notiert werden: -" - doctitlede = "Gleiten (Glissando) in Tabulatur" - lsrtags = "fretted-strings" + texidoc = " -Slides can be typeset in both @code{Staff} and @code{TabStaff} contexts: +Slides can be typeset in both @code{Staff} and @code{TabStaff} +contexts: + " doctitle = "Slides in tablature" } % begin verbatim - slides = { c'8\3(\glissando d'8\3) c'8\3\glissando d'8\3 diff --git a/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly b/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly deleted file mode 100644 index f9d834c83c..0000000000 --- a/Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly +++ /dev/null @@ -1,53 +0,0 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -\header { -%% 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 -@q{pizzicato fuerte en que la cuerda se pulsa verticalmente produciendo un -chasquido y rebotando en el diapasón del instrumento} (Wikipedia). Se -denota mediante una circunferencia con una línea vertical corta que parte -del centro de aquélla hacia fuera. Aunque LilyPond no tiene ninguna -instrucción predefinida para crear esta marca, es fácil hacer la definición -y colocarla directamente en el archivo de lilypond. -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Bartók-Pizzicato" - texidocde = " -Das Bartók-Pizzicato @q{ist eine besondere Form des Pizzicato, bei dem der -Spieler die Saite auf das Griffbrett aufschlagen lässt, sodass zusätzlich -zum angeschlagenen Ton ein scharfes, knallendes Geräusch ertönt} -(Wikipedia). Es wird dargestellt als kleiner Kreis mit einer vertikalen -Linie, die vom Kreiszentrum aus nach oben weist und ein Stück außerhalb des -Kreises endet. Lilypond hat keinen eigenen Glyphen für dieses Symbol; es -ist aber einfach, direkt eine Definition in die Eingabedatei einzufügen. -" - - lsrtags = "expressive-marks, unfretted-strings" - texidoc = " -A snap-pizzicato (also known as @qq{Bartok pizzicato}) is a @qq{strong -pizzicato where the string is plucked vertically by snapping and -rebounds off the fingerboard of the instrument} (Wikipedia). It is -denoted by a circle with a vertical line going from the center upwards -outside the circle. -" - doctitle = "Snap-pizzicato (\"Bartok pizzicato\")" -} % begin verbatim - - -\relative c' { - c4\snappizzicato - 4\snappizzicato - 4^\snappizzicato - 4_\snappizzicato -} diff --git a/Documentation/snippets/new/snap-pizzicato-bartok-pizzicato.ly b/Documentation/snippets/snap-pizzicato-or-bartok-pizzicato.ly similarity index 58% rename from Documentation/snippets/new/snap-pizzicato-bartok-pizzicato.ly rename to Documentation/snippets/snap-pizzicato-or-bartok-pizzicato.ly index f25ee35372..9e3e51fd1a 100644 --- a/Documentation/snippets/new/snap-pizzicato-bartok-pizzicato.ly +++ b/Documentation/snippets/snap-pizzicato-or-bartok-pizzicato.ly @@ -1,16 +1,24 @@ -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { lsrtags = "expressive-marks, unfretted-strings" + texidoc = " A snap-pizzicato (also known as @qq{Bartok pizzicato}) is a @qq{strong pizzicato where the string is plucked vertically by snapping and rebounds off the fingerboard of the instrument} (Wikipedia). It is denoted by a circle with a vertical line going from the center upwards outside the circle. + " - doctitle = "Snap-pizzicato (@qq{Bartok pizzicato})" -} + doctitle = "Snap-pizzicato or Bartok pizzicato" +} % begin verbatim \relative c' { c4\snappizzicato diff --git a/Documentation/snippets/spacing-intro.itely b/Documentation/snippets/spacing-intro.itely index c19a14091c..b29c9fcb59 100644 --- a/Documentation/snippets/spacing-intro.itely +++ b/Documentation/snippets/spacing-intro.itely @@ -1,5 +1,6 @@ @node Spacing @unnumbered Spacing +@nodeprefix Spacing @ruser{Spacing issues} diff --git a/Documentation/snippets/specific-notation.snippet-list b/Documentation/snippets/specific-notation.snippet-list new file mode 100644 index 0000000000..29d2685ee5 --- /dev/null +++ b/Documentation/snippets/specific-notation.snippet-list @@ -0,0 +1,29 @@ +accordion-discant-symbols.ly +adding-bar-lines-to-chordnames-context.ly +adding-drum-parts.ly +adding-fingerings-to-tablatures.ly +allowing-fingerings-to-be-printed-inside-the-staff.ly +changing--flageolet-mark-size.ly +changing-a-single-notes-size-in-a-chord.ly +changing-the-number-of-lines-in-a-staff.ly +chant-or-psalms-notation.ly +chord-name-exceptions.ly +chord-name-major7.ly +clusters.ly +contemporary-glissando.ly +controlling-the-placement-of-chord-fingerings.ly +creating-blank-staves.ly +custodes.ly +demo-midiinstruments.ly +embedding-native-postscript-in-a--markup-block.ly +engravers-one-by-one.ly +faking-a-hammer-in-tablatures.ly +flamenco-notation.ly +how-to-change-fret-diagram-position.ly +how-to-put-ties-between-syllables-in-lyrics.ly +laissez-vibrer-ties.ly +score-for-diatonic-accordion.ly +time-signature-in-parentheses---method-3.ly +time-signature-in-parentheses.ly +transcription-of-ancient-music-with-incipit.ly +woodwind-diagrams-listing.ly diff --git a/Documentation/snippets/staff-headword.ly b/Documentation/snippets/staff-headword.ly index a1b083aeae..5b6ebcb365 100644 --- a/Documentation/snippets/staff-headword.ly +++ b/Documentation/snippets/staff-headword.ly @@ -4,19 +4,12 @@ % 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" +%% Note: this file works from version 2.15.32 +\version "2.16.0" \include "catalan.ly" -#(set-global-staff-size 15) -\paper{ - ragged-right=##t - line-width=17\cm - indent=0\cm -} - \header { - lsrtags = "headwords" + lsrtags = "headword" texidoc = "" doctitle = "headword" } % begin verbatim @@ -125,10 +118,6 @@ lower = \relative do { >> >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 72 4) - } + \tempo 4 = 72 } } - diff --git a/Documentation/snippets/staff-notation-intro.itely b/Documentation/snippets/staff-notation-intro.itely index b78176376a..e71bb4d78f 100644 --- a/Documentation/snippets/staff-notation-intro.itely +++ b/Documentation/snippets/staff-notation-intro.itely @@ -1,5 +1,6 @@ @node Staff notation @unnumbered Staff notation +@nodeprefix Staff notation @ruser{Staff notation} diff --git a/Documentation/snippets/staff-notation.snippet-list b/Documentation/snippets/staff-notation.snippet-list index 7c167b9f5a..483a17253e 100644 --- a/Documentation/snippets/staff-notation.snippet-list +++ b/Documentation/snippets/staff-notation.snippet-list @@ -3,11 +3,15 @@ adding-an-extra-staff-at-a-line-break.ly adding-an-extra-staff.ly adding-indicators-to-staves-which-get-split-after-a-break.ly adding-orchestral-cues-to-a-vocal-score.ly +alternative-bar-numbering.ly changing-the-number-of-lines-in-a-staff.ly changing-the-staff-size.ly creating-blank-staves.ly +creating-double-digit-fingerings.ly +cross-staff-stems.ly display-bracket-with-only-one-staff-in-a-system.ly forcing-measure-width-to-adapt-to-metronomemarks-width.ly +glissandi-can-skip-grobs.ly how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.ly how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.ly incipit.ly @@ -16,7 +20,6 @@ letter-tablature-formatting.ly making-some-staff-lines-thicker-than-the-others.ly measure-counter.ly mensurstriche-layout-bar-lines-between-the-staves.ly -modern-tab-text-clef.ly nesting-staves.ly non-traditional-key-signatures.ly orchestra,-choir-and-piano-template.ly @@ -26,8 +29,10 @@ quoting-another-voice.ly removing-the-first-empty-line.ly setting-system-separators.ly tick-bar-lines.ly +time-signature-in-parentheses---method-3.ly time-signature-in-parentheses.ly tweaking-clef-properties.ly use-square-bracket-at-the-start-of-a-staff-group.ly +using-autochange-with-more-than-one-voice.ly volta-below-chords.ly volta-multi-staff.ly diff --git a/Documentation/snippets/stand-alone-two-column-markup.ly b/Documentation/snippets/stand-alone-two-column-markup.ly index be3f37c94a..dd096fe981 100644 --- a/Documentation/snippets/stand-alone-two-column-markup.ly +++ b/Documentation/snippets/stand-alone-two-column-markup.ly @@ -4,37 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Los textos independientes se pueden disponer en varias columnas -utilizando instrucciones @code{\\markup}: - -" - doctitlees = "Elemento de marcado de texto independiente en dos columnas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Isolierter Text kann in mehreren Spalten mit @code{\\markup}-Befehlen -angeordnet werden: - -" - doctitlede = "Isolierter Text in zwei Spalten" - -%% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334 - texidocfr = " -L'utilisation de la commande @code{\\markup} permet de distribuer un bloc -de texte indépendant sur plusieurs colonnes. - -" - doctitlefr = "Bloc de texte indépendant sur deux colonnes" - - texidoc = " Stand-alone text may be arranged in several columns using @code{\\markup} commands: @@ -43,6 +17,7 @@ Stand-alone text may be arranged in several columns using doctitle = "Stand-alone two-column markup" } % begin verbatim + \markup { \fill-line { \hspace #1 diff --git a/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly b/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly index 9af8a0c0ab..1e88060412 100644 --- a/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly +++ b/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly @@ -1,48 +1,19 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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 -poner horizontales, como se muestra en este ejemplo. - -" - doctitlees = "Comportamiento de las plicas y las barras de corchea en tablaturas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Richtung von Hälsen wird in Tabulaturen genauso wie in normaler Notation -eingestellt. Balken können horizontal eingestellt werden, wie das Beispiel -zeigt. - -" - doctitlede = "Hals- und Balkenverhalten in einer Tabulatur" - -%% Translation of GIT committish: 718fa63a806b2ae307f320e250bc83236e9cd136 - - texidocfr = " -La direction des hampes se gère dans les tablatures tout comme en -notation traditionnelle. Les ligatures peuvent être mises à l'horizontale -comme le montre cet exemple. - -" - doctitlefr = "Hampes et ligatures en mode tablature" - - lsrtags = "fretted-strings" + texidoc = " The direction of stems is controlled the same way in tablature as in -traditional notation. Beams can be made horizontal, as shown in this +traditional notation. Beams can be made horizontal, as shown in this example. + " doctitle = "Stem and beam behavior in tablature" } % begin verbatim @@ -53,7 +24,7 @@ example. \tabFullNotation g16 b d g b d g b \stemDown - \override Beam #'damping = #+inf.0 + \override Beam #'concaveness = #10000 g,,16 b d g b d g b } } diff --git a/Documentation/snippets/stemlets.ly b/Documentation/snippets/stemlets.ly index 3f4f4c4b6c..fcc096e5b2 100644 --- a/Documentation/snippets/stemlets.ly +++ b/Documentation/snippets/stemlets.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms" + lsrtags = "contemporary-notation, rhythms" texidoc = " In some notational conventions beams are allowed to extend over rests. @@ -30,6 +30,7 @@ the different notations. doctitle = "Stemlets" } % begin verbatim + \paper { ragged-right = ##f } { @@ -44,4 +45,3 @@ the different notations. \once \override Rest #'transparent = ##t r16 d'] } - diff --git a/Documentation/snippets/strict-beat-beaming.ly b/Documentation/snippets/strict-beat-beaming.ly new file mode 100644 index 0000000000..68779a8b4d --- /dev/null +++ b/Documentation/snippets/strict-beat-beaming.ly @@ -0,0 +1,29 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.28 +\version "2.16.0" + +\header { + texidoc = " +Beamlets can be set to point in the direction of the beat to which they +belong. The first beam avoids sticking out flags (the default); +the second beam strictly follows the beat. +" + + doctitle = "Strict beat beaming" + + lsrtags = "rhythms" +} % begin verbatim + + + +\relative c'' { + \time 6/8 + a8. a16 a a + \set strictBeatBeaming = ##t + a8. a16 a a +} diff --git a/Documentation/snippets/string-number-extender-lines.ly b/Documentation/snippets/string-number-extender-lines.ly index 16397b3735..9e34f1ed64 100644 --- a/Documentation/snippets/string-number-extender-lines.ly +++ b/Documentation/snippets/string-number-extender-lines.ly @@ -1,13 +1,14 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.20 +\version "2.16.0" \header { - lsrtags = "editorial-annotations, text, fretted-strings, tweaks-and-overrides" + lsrtags = "editorial-annotations, text, fretted-strings, tweaks-and-overrides, scheme-language" texidoc = " Make an extender line for string number indications, showing that a @@ -17,13 +18,14 @@ series of notes is supposed to be played all on the same string. doctitle = "String number extender lines" } % begin verbatim + stringNumberSpanner = #(define-music-function (parser location StringNumber) (string?) #{ \override TextSpanner #'style = #'solid \override TextSpanner #'font-size = #-5 \override TextSpanner #'(bound-details left stencil-align-dir-y) = #CENTER - \override TextSpanner #'(bound-details left text) = \markup { \circle \number $StringNumber } + \override TextSpanner #'(bound-details left text) = \markup { \circle \number #StringNumber } #}) @@ -37,4 +39,3 @@ stringNumberSpanner = g\startTextSpan a bes4 a g2\stopTextSpan } - diff --git a/Documentation/snippets/string-quartet-template-simple.ly b/Documentation/snippets/string-quartet-template-simple.ly index fb0ffe98a9..af78c3895d 100644 --- a/Documentation/snippets/string-quartet-template-simple.ly +++ b/Documentation/snippets/string-quartet-template-simple.ly @@ -4,54 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 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 - -" - doctitlees = "Plantilla de cuarteto de cuerda (sencilla)" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために -@code{@bs{}global} セクションを使っています。 -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier -wird auch eine @qq{@code{\\global}}-Variable für Taktart und -Vorzeichen benutzt. -" - - doctitlede = "Vorlage für Streichquartett (einfach)" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Voici un canevas pour quatuor à cordes. Notez l'utilisation de la -variable @code{\\global} pour traiter la métrique et la tonalité. - -" - doctitlefr = "Quatuor à cordes (conducteur)" + lsrtags = "really-simple, template, unfretted-strings" texidoc = " This template demonstrates a simple string quartet. It also uses a @@ -61,6 +17,7 @@ This template demonstrates a simple string quartet. It also uses a doctitle = "String quartet template (simple)" } % begin verbatim + global= { \time 4/4 \key c \major @@ -114,4 +71,3 @@ cello = \new Voice \relative c' { \layout { } \midi { } } - diff --git a/Documentation/snippets/string-quartet-template-with-separate-parts.ly b/Documentation/snippets/string-quartet-template-with-separate-parts.ly index 15ac172710..66dc41a866 100644 --- a/Documentation/snippets/string-quartet-template-with-separate-parts.ly +++ b/Documentation/snippets/string-quartet-template-with-separate-parts.ly @@ -4,151 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { -%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42 - texidoc = " -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! - -" - doctitle = "Modello per quartetto d'archi con parti separate" - - -%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42 - texidoc = " -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 individuali. - -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 specificati quando usi i file separati! - -" - doctitle = "Modello per quartetto d'archi con parti separate" - - - -%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42 - texidoc = " -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 individuali. - -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 specificati quando usi i file separati! - -" - doctitle = "Modello per quartetto d'archi con parti separate" - - lsrtags = "unfretted-strings, template" - - - - -%% 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 -imprimir las particellas? Esta nueva plantilla muestra cómo usar la -funcionalidad @code{\\tag} (etiqueta) para dividir fácilmente una -pieza en particellas indicviduales. - -Tenemos que dividir esta plantilla en archivos independientes; los -nombres de archivo están dentro de los comentarios al principio de -cada archivo. @file{piece.ly} contiene todas las definiciones de -música. Los otros archivos (@file{score.ly}, @file{vn1.ly}, -@file{vn2.ly}, @file{vla.ly} y @file{vlc.ly}) producen la particella -correspondiente. - -¡No olvide quitar los comentarios que hemos especificado cuando use -los archivos independientes! - -" - doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -\"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c -パート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは -@code{@bs{}tag} 機能を用いて容易に楽曲を個々のパートに分ける方法を示しています。 - -このテンプレートは別々のファイルに分ける必要があります。ファイル名は各ファイル@c -の開始部分のコメントの中に記述されています。@code{piece.ly} はすべての音楽定義@c -を保持しています。他のファイル - @code{score.ly}, @code{vn1.ly}, @code{vn2.ly}, -@code{vla.ly} それに @code{vlc.ly} - は対応するパートを作り出します。 - - -別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください! -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Mit diesem Beispiel können Sie ein schönes Streichquartett notieren, -aber wie gehen Sie vor, wenn Sie Stimmen brauchen? Das Beispiel -oben hat gezeigt, wie Sie mit Variablen einzelne Abschnitte getrennt -voneinander notieren können. Im nächsten Beispiel wird nun -gezeigt, wie Sie mit diesen Variablen einzelne Stimmen erstellen. - -Sie müssen das Beispiel in einzelne Dateien aufteilen; die Dateinamen -sind in den Kommentaren am Anfang jeder Datei enthalten. @file{piece.ly} -enthält die Noten. Die anderen Dateien -- @file{score.ly}, -@file{vn1.ly}, @file{vn2.ly}, @file{vla.ly} und -@file{vlc.ly} -- erstellen daraus die entsprechenden Stimmen bzw. die -Partitur (@file{score.ly}). Mit @code{\\tag} wird den Stimmen ein Name -zugewiesen, auf den zurückgegriffen werden kann. -" - - doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Grâce à ce canevas, vous pouvez obtenir une partition d'excellente -facture pour quatuor à cordes mais aussi, si le besoin s'en faisait -sentir, une partie séparée par instrument. Par ailleurs, cet exemple -illustre l'utilisation de la fonction @code{\\tag} dans le but -d'extraire des parties séparées. - -Il vous faudra découper ce canevas en plusieurs fichiers séparés ; leur -nom respectif est indiqué en commentaire : @file{piece.ly} comporte tout -ce qui a trait à la musique, les autres fichiers -- @file{score.ly}, -@file{vn1.ly}, @file{vn2.ly}, @file{vla.ly}, et @file{vlc.ly} -- vous -permettront d'obtenir les parties selon le pupitre. - - -N'oubliez pas de supprimer les commentaires superflus des fichiers -individualisés ! - -" - doctitlefr = "Quatuor à cordes avec parties séparées" + lsrtags = "preparing-parts, template, unfretted-strings" texidoc = " The @qq{String quartet template} snippet produces a nice string @@ -169,6 +28,7 @@ Do not forget to remove specified comments when using separate files! doctitle = "String quartet template with separate parts" } % begin verbatim + %%%%% piece.ly %%%%% (This is the global definitions file) @@ -218,8 +78,8 @@ music = { %%%%% score.ly %%%%% (This is the main file) - -%\include "piece.ly" %%% uncomment this line when using a separate file +%%% uncomment the line below when using a separate file +%\include "piece.ly" #(set-global-staff-size 14) \score { \new StaffGroup \keepWithTag #'score \music @@ -270,4 +130,3 @@ music = { } %} - diff --git a/Documentation/snippets/stylesheet.snippet-list b/Documentation/snippets/stylesheet.snippet-list new file mode 100644 index 0000000000..82b78d802b --- /dev/null +++ b/Documentation/snippets/stylesheet.snippet-list @@ -0,0 +1 @@ +flamenco-notation.ly diff --git a/Documentation/snippets/subdividing-beams.ly b/Documentation/snippets/subdividing-beams.ly index bba85fb6bb..41ffdce540 100644 --- a/Documentation/snippets/subdividing-beams.ly +++ b/Documentation/snippets/subdividing-beams.ly @@ -1,78 +1,33 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Las barras de semicorchea, o de figuras más breves, no se subdividen -de forma predeterminada. Esto es, las tres (o más) barras se amplían -sin romperse sobre grupos completos de notas. Este comportamiento se -puede modificar para subdividir las barras en subgrupos mediante el -establecimiento de la propiedad @code{subdivideBeams}. Cuando está -activada, las barras se subdividen a intervalos definidos por el valor -actual de @code{baseMoment} mediante la reducción de las barras -repetidas a una sola entre los subgrupos. Observe que el valor -predeterminado de @code{baseMoment} es uno más que el denominador del -tipo de compás actual, si no se fija explícitamente. Se debe ajustar -a una fracción que da la duración del subgrupo de barras utilizando la -función @code{ly:make-moment}, como se ve en este fragmento de código. -Asimismo, cuando se modifica @code{baseMoment}, se debería cambiar -también @code{beatStructure} para que corresponda al @code{baseMoment} -nuevo: - -" - doctitlees = "Subdivisión de barras" - -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - texidocfr = " -Les ligatures d'une succession de notes de durée inférieure à la croche -ne sont pas subdivisées par défaut. Autrement dit, tous les traits de -ligature ( deux ou plus) seront continus. Ce comportement peut être -modifié afin de diviser la ligature en sous-groupes grâce à la propriété -@code{subdivideBeams}. Lorsqu'elle est activée, les ligatures seront -subdivisées selon un intervalle défini par @code{baseMoment}@tie{}; il n'y -aura alors plus qu'un seul trait de ligature entre chaque sous-groupe. -Par défaut, @code{baseMoment} fixe la valeur de référence par rapport à -la métrique en vigueur. Il faudra donc lui fournir, à l'aide de la -fonction @code{ly:make-moment}, une fraction correspondant à la durée du -sous-groupe désiré comme dans l'exemple ci-dessous. Gardez à l'esprit -que, si vous venez à modifier @code{baseMoment}, vous devrez -probablement adapter @code{beatStrusture} afin qu'il reste en adéquation -avec les nouvelles valeurs de @code{baseMoment}. - -" - doctitlefr = "Subdivision des ligatures" - lsrtags = "rhythms" texidoc = " The beams of consecutive 16th (or shorter) notes are, by default, not subdivided. That is, the three (or more) beams stretch unbroken over -entire groups of notes. This behavior can be modified to subdivide -the beams into sub-groups by setting the property -@code{subdivideBeams}. When set, multiple beams will be subdivided at -intervals defined by the current value of @code{baseMoment} by reducing -the multiple beams to just one beam between the sub-groups. Note that -@code{baseMoment} defaults to one over the denominator of the current -time signature if not set explicitly. It must be set to a fraction -giving the duration of the beam sub-group using the -@code{ly:make-moment} function, as shown in this snippet. Also, when -@code{baseMoment} is changed, @code{beatStructure} should also be changed -to match the new @code{baseMoment}: +entire groups of notes. This behavior can be modified to subdivide the +beams into sub-groups by setting the property @code{subdivideBeams}. +When set, multiple beams will be subdivided at intervals defined by the +current value of @code{baseMoment} by reducing the multiple beams to +just one beam between the sub-groups. Note that @code{baseMoment} +defaults to one over the denominator of the current time signature if +not set explicitly. It must be set to a fraction giving the duration of +the beam sub-group using the @code{ly:make-moment} function, as shown +in this snippet. Also, when @code{baseMoment} is changed, +@code{beatStructure} should also be changed to match the new +@code{baseMoment}: " doctitle = "Subdividing beams" } % begin verbatim - \relative c'' { c32[ c c c c c c c] \set subdivideBeams = ##t @@ -88,4 +43,3 @@ to match the new @code{baseMoment}: \set beatStructure = #'(4 4 4 4) c32[ c c c c c c c] } - diff --git a/Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly b/Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly index c73ff7a305..a37404cadf 100644 --- a/Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly +++ b/Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "simultaneous-notes, tweaks-and-overrides" @@ -15,12 +15,16 @@ the same position, and both voices have no shift or the same shift specified, the error message @samp{warning: ignoring too many clashing note columns} will appear when compiling the LilyPond file. This message can be suppressed by setting the @code{'ignore-collision} -property of the @code{NoteColumn} object to @code{#t}. +property of the @code{NoteColumn} object to @code{#t}. Please note that +this does not just suppress warnings but stops LilyPond trying to +resolve collisions at all and so may have unintended results unless +used with care. " doctitle = "Suppressing warnings for clashing note columns" } % begin verbatim + ignore = \override NoteColumn #'ignore-collision = ##t \relative c' { diff --git a/Documentation/snippets/symbols-and-glyphs.snippet-list b/Documentation/snippets/symbols-and-glyphs.snippet-list new file mode 100644 index 0000000000..c10bd2fa9e --- /dev/null +++ b/Documentation/snippets/symbols-and-glyphs.snippet-list @@ -0,0 +1,13 @@ +accordion-discant-symbols.ly +adding-indicators-to-staves-which-get-split-after-a-break.ly +ancient-fonts.ly +breathing-signs.ly +broken-crescendo-hairpin.ly +caesura-railtracks-with-fermata.ly +changing--flageolet-mark-size.ly +custodes.ly +fingering-symbols-for-wind-instruments.ly +how-to-put-ties-between-syllables-in-lyrics.ly +positioning-segno-and-coda-with-line-break.ly +rest-styles.ly +volta-text-markup-using-repeatcommands.ly diff --git a/Documentation/snippets/syntax-and-expressions.snippet-list b/Documentation/snippets/syntax-and-expressions.snippet-list new file mode 100644 index 0000000000..7e72565d66 --- /dev/null +++ b/Documentation/snippets/syntax-and-expressions.snippet-list @@ -0,0 +1,2 @@ +combining-two-parts-on-the-same-staff.ly +entering-several-tuplets-using-only-one--times-command.ly diff --git a/Documentation/snippets/table-of-contents.ly b/Documentation/snippets/table-of-contents.ly index 60292e665a..51542ae679 100644 --- a/Documentation/snippets/table-of-contents.ly +++ b/Documentation/snippets/table-of-contents.ly @@ -4,13 +4,13 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "paper-and-layout" texidoc = " -A table of contents is included using @code{\\markuplines +A table of contents is included using @code{\\markuplist \\table-of-contents}. The TOC items are added with the @code{\\tocItem} command. @@ -18,10 +18,11 @@ A table of contents is included using @code{\\markuplines doctitle = "Table of contents" } % begin verbatim + #(set-default-paper-size "a6") \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \pageBreak \tocItem \markup { The first score } \score { diff --git a/Documentation/snippets/template-intro.itely b/Documentation/snippets/template-intro.itely index 22c9952e84..1521e0cd34 100644 --- a/Documentation/snippets/template-intro.itely +++ b/Documentation/snippets/template-intro.itely @@ -1,5 +1,6 @@ @node Templates @unnumbered Templates +@nodeprefix Templates @lysnippets diff --git a/Documentation/snippets/template.snippet-list b/Documentation/snippets/template.snippet-list index 4be0dd20ac..45be61d85b 100644 --- a/Documentation/snippets/template.snippet-list +++ b/Documentation/snippets/template.snippet-list @@ -5,7 +5,6 @@ hymn-template.ly jazz-combo-template.ly orchestra,-choir-and-piano-template.ly piano-template-simple.ly -piano-template-with-centered-dynamics.ly piano-template-with-centered-lyrics.ly piano-template-with-melody-and-lyrics.ly satb-choir-template---four-staves.ly diff --git a/Documentation/snippets/text-headword.ly b/Documentation/snippets/text-headword.ly index 34aaf30d2b..4254c58236 100644 --- a/Documentation/snippets/text-headword.ly +++ b/Documentation/snippets/text-headword.ly @@ -1,25 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -\include "english.ly" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" + lsrtags = "headword" + + texidoc = " +Text headword + +" + doctitle = "Text headword" } % begin verbatim +\include "english.ly" % NR 1.8 Text diff --git a/Documentation/snippets/text-intro.itely b/Documentation/snippets/text-intro.itely index eb71a4598e..a3c95a403a 100644 --- a/Documentation/snippets/text-intro.itely +++ b/Documentation/snippets/text-intro.itely @@ -1,5 +1,6 @@ @node Text @unnumbered Text +@nodeprefix Text @ruser{Text} diff --git a/Documentation/snippets/text.snippet-list b/Documentation/snippets/text.snippet-list index 9599ad506d..9076d5318b 100644 --- a/Documentation/snippets/text.snippet-list +++ b/Documentation/snippets/text.snippet-list @@ -3,6 +3,7 @@ adjusting-lyrics-vertical-spacing.ly aligning-and-centering-instrument-names.ly aligning-marks-with-various-notation-objects.ly aligning-objects-created-with-the--mark-command.ly +aligning-syllables-with-melisma.ly blanking-staff-lines-using-the--whiteout-command.ly center-text-below-hairpin-dynamics.ly centering-markup-on-note-heads-automatically.ly diff --git a/Documentation/snippets/three-sided-box.ly b/Documentation/snippets/three-sided-box.ly index a758cb3e58..2bde359a6c 100644 --- a/Documentation/snippets/three-sided-box.ly +++ b/Documentation/snippets/three-sided-box.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "rhythms, text" + lsrtags = "rhythms, scheme-language, text" texidoc = " This example shows how to add a markup command to get a three sided box @@ -17,6 +17,7 @@ around some text (or other markup). doctitle = "Three-sided box" } % begin verbatim + % New command to add a three sided box, with sides north, west and south % Based on the box-stencil command defined in scm/stencil.scm % Note that ";;" is used to comment a line in Scheme @@ -52,4 +53,3 @@ thickness and padding around the markup." c1^\markup { \NWS-box ABCD } c1^\markup { \NWS-box \note #"4" #1.0 } } - diff --git a/Documentation/snippets/tick-bar-lines.ly b/Documentation/snippets/tick-bar-lines.ly index 766fccce67..661ee65ee2 100644 --- a/Documentation/snippets/tick-bar-lines.ly +++ b/Documentation/snippets/tick-bar-lines.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "staff-notation" @@ -17,6 +17,7 @@ only for coordination and is not meant to imply any rhythmic stress. doctitle = "Tick bar lines" } % begin verbatim + \relative c' { \set Score.defaultBarType = #"'" c4 d e f diff --git a/Documentation/snippets/time-signature-in-parentheses---method-3.ly b/Documentation/snippets/time-signature-in-parentheses---method-3.ly new file mode 100644 index 0000000000..f7acbae1f1 --- /dev/null +++ b/Documentation/snippets/time-signature-in-parentheses---method-3.ly @@ -0,0 +1,25 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "specific-notation, staff-notation, tweaks-and-overrides" + + texidoc = " +Another way to put the time signature in parenthesis + +" + doctitle = "Time signature in parentheses - method 3" +} % begin verbatim + + +\relative c'' { + \override Staff.TimeSignature #'stencil = #(lambda (grob) + (parenthesize-stencil (ly:time-signature::print grob) 0.1 0.4 0.4 0.1 )) + \time 2/4 + a4 b8 c +} diff --git a/Documentation/snippets/time-signature-in-parentheses.ly b/Documentation/snippets/time-signature-in-parentheses.ly index 4e8d3a34de..6d792fb6c1 100644 --- a/Documentation/snippets/time-signature-in-parentheses.ly +++ b/Documentation/snippets/time-signature-in-parentheses.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, tweaks-and-overrides" + lsrtags = "specific-notation, staff-notation, tweaks-and-overrides" texidoc = " The time signature can be enclosed within parentheses. @@ -16,10 +16,10 @@ The time signature can be enclosed within parentheses. doctitle = "Time signature in parentheses" } % begin verbatim + \relative c'' { \override Staff.TimeSignature #'stencil = #(lambda (grob) (bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1)) \time 2/4 a4 b8 c } - diff --git a/Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly b/Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly index 46a4ae024b..188484760b 100644 --- a/Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly +++ b/Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly @@ -4,43 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -A veces, la indicación de compás no debe imprimir la fracción completa -(p.ej. 7/4), sino sólo el numerador (7 en este caso). Esto se puede -hacer fácilmente utilizando @code{\\override Staff.TimeSignature -#'style = #'single-digit} para cambiar el estilo -permanentemente. Usando @code{\\revert Staff.TimeSignature #'style}, -se puede revertir el cambio. Para aplicar el estilo de un dígito -único a una sola indicación de compás, utilice la instrucción -@code{\\override} y anteponga la instrucción @code{\\once}. - -" - doctitlees = "Indicación de compás imprimiendo sólo el numerador (en lugar de la fracción)" - -%% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033 - - texidocfr = " -La métrique est parfois indiquée non pas par une fraction (p.ex. 7/4) -mais simplement par son numérateur (7 dans ce cas). L'instruction -@code{\\override Staff.TimeSignature #'style = #'single-digit} permet de -déroger au style par défaut de manière permanente -- un @code{\\revert -Staff.TimeSignature #'style} d'annuler ces modifications. Lorsque cette -métrique sous le forme d'une seul chiffre ne se présente qu'une seule -fois, il suffit de faire précéder l'instruction @code{\\override} d'un -simple @code{\\once}. - -" - doctitlefr = "Affichage seulement du numérateur d'une métrique (au -lieu d'une fraction)" - - texidoc = " Sometimes, a time signature should not print the whole fraction (e.g. 7/4), but only the numerator (7 in this case). This can be easily done @@ -54,6 +22,7 @@ the single-digit style to only one time signature, use the doctitle = "Time signature printing only the numerator as a number (instead of the fraction)" } % begin verbatim + \relative c'' { \time 3/4 c4 c c @@ -74,4 +43,3 @@ the single-digit style to only one time signature, use the \time 2/4 c4 c } - diff --git a/Documentation/snippets/titles-intro.itely b/Documentation/snippets/titles-intro.itely index 1d4c288f93..9a5f466c75 100644 --- a/Documentation/snippets/titles-intro.itely +++ b/Documentation/snippets/titles-intro.itely @@ -1,5 +1,6 @@ @node Titles @unnumbered Titles +@nodeprefix Titles @ruser{Titles and headers} diff --git a/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly b/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly index 2fe993cb8d..8692f345bf 100644 --- a/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly +++ b/Documentation/snippets/transcription-of-ancient-music-with-incipit.ly @@ -4,22 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "ancient-notation, tweaks-and-overrides" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -A modo de alternativa para obtener auténticos «incipit» -independientes de la partitura principal, se incluyen como -elemento de marcado en el campo que se usa normalmente para el -nombre del instrumento. Por el momento, la letra sólo se puede -añadir como marcado directo. Por desgracia, su espaciado no es -análogo al de la letra principal. - -" - doctitlees = "Transcripción de música antigua con incipit" + lsrtags = "ancient-notation, specific-notation, tweaks-and-overrides, workaround" texidoc = " As a workaround to get real incipits which are independent from the @@ -32,6 +20,7 @@ main lyrics. doctitle = "Transcription of Ancient music with incipit" } % begin verbatim + global = { \set Score.skipBars = ##t \key g \major @@ -297,4 +286,3 @@ incipitBassus = \markup { indent = 5\cm } } - diff --git a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly index 88ccaff75e..2b647d0854 100644 --- a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly +++ b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly @@ -4,102 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "pitches" - -%% 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 -modificaciones enarmónicas de las notas, y así tener el menor -número de alteraciones accidentales. En este caso se aplican las -siguientes reglas: - -@itemize -@item -Se quitan las dobles alteraciones - -@item -Si sostenido -> Do - -@item -Mi sistenido -> Fa - -@item -Do bemol -> Si - -@item -Fa bemol -> Mi - -@end itemize - -De esta forma se selecciona el mayor número de notas enarmónicas -naturales. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Noten mit minimaler Anzahl an Versetzungszeichen transponieren." - texidocde = "Dieses Beispiel benutzt Scheme-Code, um enharmonische -Verwechslungen für Noten zu erzwingen, damit nur eine minimale Anzahl -an Versetzungszeichen ausgegeben wird. In diesem Fall gelten die -folgenden Regeln: - -@itemize -@item -Doppelte Versetzungszeichen sollen entfernt werden - -@item -His -> C - -@item -Eis -> F - -@item -Ces -> B - -@item -Fes -> E - -@end itemize - -Auf diese Art werden am meisten natürliche Tonhöhen als enharmonische -Variante gewählt. -" - - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Cet exemple, grâce à un peu de code Scheme, donne la priorité aux -enharmoniques afin de limiter le nombre d'altérations supplémentaires. -La règle appliquable est : - -@itemize -@item -Les altérations doubles sont supprimées - -@item -Si dièse -> Do - -@item -Mi dièse -> Fa - -@item -Do bémol -> Si - -@item -Fa bémol -> Mi - -@end itemize - -Cette façon de procéder aboutit à plus d'enharmoniques naturelles. - -" - - doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles" + lsrtags = "pitches, scheme-language, workaround" texidoc = " This example uses some Scheme code to enforce enharmonic modifications @@ -127,6 +35,7 @@ In this manner, the most natural enharmonic notes are chosen. doctitle = "Transposing pitches with minimum accidentals (\"Smart\" transpose)" } % begin verbatim + #(define (naturalize-pitch p) (let ((o (ly:pitch-octave p)) (a (* 4 (ly:pitch-alteration p))) @@ -181,4 +90,3 @@ music = \relative c' { c4 d e g } } \layout { } } - diff --git a/Documentation/snippets/tweaking-clef-properties.ly b/Documentation/snippets/tweaking-clef-properties.ly index 5a7c2a9de2..d4adb18f97 100644 --- a/Documentation/snippets/tweaking-clef-properties.ly +++ b/Documentation/snippets/tweaking-clef-properties.ly @@ -4,116 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "pitches, staff-notation, tweaks-and-overrides" -%% 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 -@code{clefGlyph}, @code{clefPosition} (que controla la posición -vertical de la clave), @code{middleCPosition} y -@code{clefOctavation}. Se imprime una clave cada vez que se -modifica cualquiera de las propiedades excepto -@code{middleCPosition}. - -Observe que la modificación del glifo, la posición de la clave o -su octavación, no cambian 'per se' la posición de las siguientes -notas del pentagrama: para hacer esto también se debe especificar -la posición del Do central. Los parámetros posicionales están en -relación con la tercera línea del pentagrama, los números -positivos desplazan hacia arriba, contando una unidad por cada -línea y espacio. El valor de @code{clefOctavation} se -establecería normalmente a 7, -7, 15 or -15, pero son válidos -otros valores. - -Cuando se produce un cambio de clave en el salto de línea se -imprime la clave nueva tanto al final de la línea anterior como al -principio de la nueva, de forma predeterminada. Si no se necesita -la clave de advertencia al final de la línea anterior, se puede -quitar estableciendo el valor de la propiedad -@code{explicitClefVisibility} de @code{Staff}, a -@code{end-of-line-invisible}. El comportamiento predeterminado se -puede recuperar con @code{\\unset Staff.explicitClefVisibility}. - -Los siguientes ejemplos muestran las posibilidades cuando se -ajustan estas propiedades manualmente. En la primera línea, los -cambios manuales preservan el posicionamiento relativo estándar de -las claves y las notas, pero no lo hacen en la segunda línea. -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - doctitlede = "Eigenschaften des Schlüssels optimieren" - texidocde = " -Der Befehl @code{\\clef \"treble_8\"} ist gleichbedeutend mit einem -expliziten Setzen der Eigenschaften von @code{clefGlyph}, -@code{clefPosition} (welche die vertikale Position des Schlüssels bestimmt), -@code{middleCPosition} und @code{clefOctavation}. Ein Schlüssel wird -ausgegeben, wenn eine der Eigenschaften außer @code{middleCPosition} sich -ändert. - -Eine Änderung des Schriftzeichens (Glyph), der Schlüsselposition oder der -Oktavierung selber ändert noch nicht die Position der darauf folgenden Noten -auf dem System: das geschieht nur, wenn auch die Position des -eingestrichenen@tie{}C (middleCPosition) angegeben wird. Die -Positionsparameter sind relativ zur Mittellinie des Systems, dabei versetzen -positive Zahlen die Position nach oben, jeweils eine Zahl für jede Linie -plus Zwischenraum. Der @code{clefOctavation}-Wert ist normalerweise auf 7, --7, 15 oder -15 gesetzt, aber auch andere Werte sind gültig. - -Wenn ein Schlüsselwechsel an einem Zeilenwechsel geschieht, wird das neue -Symbol sowohl am Ende der alten Zeilen als auch am Anfang der neuen Zeile -ausgegeben. Wenn der Warnungs-Schlüssel am Ende der alten Zeile nicht -erforderlich ist, kann er unterdrückt werden, indem die -@code{explicitClefVisibility}-Eigenschaft des @code{Staff}-Kontextes auf den -Wert @code{end-of-line-invisible} gesetzt wird. Das Standardverhalten kann -mit @code{\\unset Staff.explicitClefVisibility} wieder hergestellt werden. - -Die folgenden Beispiele zeigen die Möglichkeiten, wenn man diese -Eigenschaften manuell setzt. Auf der ersten Zeile erhalten die manuellen -Änderungen die ursprüngliche relative Positionierung von Schlüssel und -Noten, auf der zweiten Zeile nicht. -" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph}, -@code{clefPosition} -- qui contrôle la position verticale de la clé -- -@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée -lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est -modifiée. Les exemples suivant font apparaître des possibilités de -réglage manuel de ces propriétés. - - -Modifier le glyphe, la position de la clef ou son octaviation ne -changera pas la position des notes ; il faut pour y parvenir modifier -aussi la position du do médium. Le positionnement est relatif à la -ligne médiane, un nombre positif faisant monter, chaque ligne ou -interligne comptant pour 1. La valeur de @code{clefOctavation} devrait -être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter -une autre valeur. - - -Lorsqu'un changement de clef intervient en même temps qu'un saut de -ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au -début de la suivante. Vous pouvez toujours supprimer cette « clef de -précaution » en affectant la valeur @code{end-of-line-invisible} à la -propriété @code{explicitClefVisibility} du contexte @code{Staff}. Le -comportement par défaut sera réactivé par -@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}. - - -Les exemples qui suivent illustrent les différentes possibilités de -définir ces propriétés manuellement. Sur la première ligne, la -position relative des notes par rapport aux clefs sont préservées, ce -qui n'est pas le cas pour la deuxième ligne. - -" - doctitlefr = "Affinage des propriétés d'une clef" - texidoc = " The command @code{\\clef \"treble_8\"} is equivalent to setting @code{clefGlyph}, @code{clefPosition} (which controls the vertical @@ -148,6 +43,7 @@ line, they do not. doctitle = "Tweaking clef properties" } % begin verbatim + \layout { ragged-right = ##t } { @@ -196,4 +92,3 @@ line, they do not. \set Staff.middleCPosition = #0 c'1 } - diff --git a/Documentation/snippets/tweaking-grace-layout-within-music.ly b/Documentation/snippets/tweaking-grace-layout-within-music.ly index 5e38f9da8d..2afa28fc4d 100644 --- a/Documentation/snippets/tweaking-grace-layout-within-music.ly +++ b/Documentation/snippets/tweaking-grace-layout-within-music.ly @@ -4,53 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -La disposición de las expresiones de adorno se puede cambiar a lo -largo de toda la música usando las funciones -@code{add-grace-property} y @code{remove-grace-property}. El -ejemplo siguiente borra la definición de la dirección de la plica -para esta nota de adorno, de manera que las plicas no siemmpre -apuntan hacia arriba, y cambia la forma predeterminada de las -cabezas a aspas. - -" - - doctitlees = "Trucar la disposición de las notas de adorno dentro de la música" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Das Layout von Verzierungsausdrücken kann in der Musik verändert -werden mit den Funktionen @code{add-grace-property} und -@code{remove-grace-property}. Das folgende Beispiel definiert -die Richtung von Hälsen (Stem) für diese Verzierung, sodass die -Hälse nicht immer nach unten zeigen, und ändert den Standardnotenkopf -in ein Kreuz. -" - doctitlede = "Veränderung des Layouts von Verzierungen innerhalb der Noten" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Il est possible de changer globalement la mise en forme des petites -notes dans un morceau, au moyen de la fonction -@code{add-grace-property}. Ici, par exemple, on ôte la définition de -l'orientation des objets @code{Stem} pour toutes les petites notes, -afin que les hampes ne soient pas toujours orientées vers le haut, et on -leur préfère des têtes en forme de croix. - -" - doctitlefr = "Mise en forme des notes d'ornement" - texidoc = " The layout of grace expressions can be changed throughout the music using the functions @code{add-grace-property} and @@ -62,10 +20,11 @@ up, and changes the default note heads to crosses. doctitle = "Tweaking grace layout within music" } % begin verbatim + \relative c'' { \new Staff { - #(remove-grace-property 'Voice 'Stem 'direction) - #(add-grace-property 'Voice 'NoteHead 'style 'cross) + $(remove-grace-property 'Voice 'Stem 'direction) + $(add-grace-property 'Voice 'NoteHead 'style 'cross) \new Voice { \acciaccatura { f16 } g4 \grace { d16[ e] } f4 diff --git a/Documentation/snippets/tweaks-and-overrides-intro.itely b/Documentation/snippets/tweaks-and-overrides-intro.itely index d5308b5bf8..7721859f1e 100644 --- a/Documentation/snippets/tweaks-and-overrides-intro.itely +++ b/Documentation/snippets/tweaks-and-overrides-intro.itely @@ -1,5 +1,6 @@ @node Tweaks and overrides @unnumbered Tweaks and overrides +@nodeprefix Tweaks and overrides @c FIXME make xref more precise when the chapter has been @c revised in GDP diff --git a/Documentation/snippets/tweaks-and-overrides.snippet-list b/Documentation/snippets/tweaks-and-overrides.snippet-list index 68495fff54..8ceb9fa8ac 100644 --- a/Documentation/snippets/tweaks-and-overrides.snippet-list +++ b/Documentation/snippets/tweaks-and-overrides.snippet-list @@ -1,5 +1,6 @@ adjusting-grace-note-spacing.ly altering-the-length-of-beamed-stems.ly +alternative-bar-numbering.ly analysis-brackets-above-the-staff.ly asymmetric-slurs.ly avoiding-collisions-with-chord-fingerings.ly @@ -8,6 +9,7 @@ centering-markup-on-note-heads-automatically.ly changing-a-single-notes-size-in-a-chord.ly changing-form-of-multi-measure-rests.ly changing-properties-for-individual-grobs.ly +changing-text-and-spanner-styles-for-text-dynamics.ly changing-the-default-text-font-family.ly changing-the-staff-size.ly changing-the-tempo-without-a-metronome-mark.ly @@ -16,8 +18,11 @@ controlling-spanner-visibility-after-a-line-break.ly controlling-the-vertical-ordering-of-scripts.ly controlling-tuplet-bracket-visibility.ly 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 +cross-staff-stems.ly custodes.ly customizing-fretboard-fret-diagrams.ly customizing-markup-fret-diagrams.ly @@ -32,6 +37,7 @@ fine-tuning-pedal-brackets.ly forcing-horizontal-shift-of-notes.ly fret-diagrams-explained-and-developed.ly generating-custom-flags.ly +glissandi-can-skip-grobs.ly hairpins-with-different-line-styles.ly horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly how-to-change-fret-diagram-position.ly @@ -65,6 +71,7 @@ setting-system-separators.ly showing-the-same-articulation-above-and-below-a-note-or-chord.ly string-number-extender-lines.ly suppressing-warnings-for-clashing-note-columns.ly +time-signature-in-parentheses---method-3.ly time-signature-in-parentheses.ly time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly transcription-of-ancient-music-with-incipit.ly diff --git a/Documentation/snippets/unfretted-headword.ly b/Documentation/snippets/unfretted-headword.ly index 025767c8b0..17ec6b723e 100644 --- a/Documentation/snippets/unfretted-headword.ly +++ b/Documentation/snippets/unfretted-headword.ly @@ -1,10 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "headword" + + texidoc = " +Unfretted headword + +" + doctitle = "Unfretted headword" +} % begin verbatim + % #!lilypond lcp-extract.ly -*- coding: utf-8; -*- %%% @@ -28,19 +39,8 @@ %% Statement Date: Octber the 9th, 2008 -\header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} % begin verbatim - - - -\version "2.14.0" -#(set-global-staff-size 15) - %%% -%%% Abreviations +%%% Abbreviations %%% db = \markup { \musicglyph #"scripts.downbow" } @@ -100,7 +100,7 @@ tupletbp = \once \override Staff.TupletBracket #'padding = #2.25 %% Flag [Note Head - Stem] %% -noflag = \once \override Stem #'flag-style = #'no-flag +noflag = \once \override Flag #'style = #'no-flag %%% %%% Functions diff --git a/Documentation/snippets/unfretted-strings-intro.itely b/Documentation/snippets/unfretted-strings-intro.itely index 4770fa7bec..959b852013 100644 --- a/Documentation/snippets/unfretted-strings-intro.itely +++ b/Documentation/snippets/unfretted-strings-intro.itely @@ -1,5 +1,6 @@ @node Unfretted strings @unnumbered Unfretted strings +@nodeprefix Unfretted strings @ruser{Unfretted string instruments} diff --git a/Documentation/snippets/unfretted-strings.snippet-list b/Documentation/snippets/unfretted-strings.snippet-list index a6c6120a5c..102a6d9482 100644 --- a/Documentation/snippets/unfretted-strings.snippet-list +++ b/Documentation/snippets/unfretted-strings.snippet-list @@ -1,6 +1,6 @@ changing--flageolet-mark-size.ly creating-slurs-across-voices.ly dotted-harmonics.ly -snap-pizzicato-bartok-pizzicato.ly +snap-pizzicato-or-bartok-pizzicato.ly string-quartet-template-simple.ly string-quartet-template-with-separate-parts.ly diff --git a/Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly b/Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly index 4bb24a1926..10d57393b7 100644 --- a/Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly +++ b/Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly @@ -4,50 +4,21 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "staff-notation, contexts-and-engravers" - -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Se puede usar el delimitador de comienzo de un sistema -@code{SystemStartSquare} estableciéndolo explícitamente dentro de -un contexto @code{StaffGroup} o @code{ChoirStaffGroup}. - -" - doctitlees = "Uso del corchete recto al comienzo de un grupo de pentagramas" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Die Klammer zu Beginn von Systemgruppen kann auch in eine eckige Klammer -(@code{SystemStartSquare}) umgewandelt werden, wenn man sie explizit -im @code{StaffGroup}- oder @code{ChoirStaffGroup}-Kontext setzt. - -" - doctitlede = "Eine eckige Klammer zu Beginn von Systemgruppen benutzen" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Un regroupement de portées sera indiqué par un simple rectangle --- @code{SystemStartSquare} -- en début de ligne dès lors que vous le -mentionnerez explicitement au sein d'un contexte @code{StaffGroup} ou -@code{ChoirStaffGroup}. - -" - doctitlefr = "Indication de regroupement de portées par un rectangle" - + lsrtags = "contexts-and-engravers, staff-notation" 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. " doctitle = "Use square bracket at the start of a staff group" } % begin verbatim + \score { \new StaffGroup { << \set StaffGroup.systemStartDelimiter = #'SystemStartSquare @@ -55,4 +26,3 @@ context. \new Staff { c'4 d' e' f' } >> } } - diff --git a/Documentation/snippets/using-alternative-flag-styles.ly b/Documentation/snippets/using-alternative-flag-styles.ly index c975e50ac4..b037233ba4 100644 --- a/Documentation/snippets/using-alternative-flag-styles.ly +++ b/Documentation/snippets/using-alternative-flag-styles.ly @@ -1,36 +1,25 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \header { lsrtags = "rhythms, tweaks-and-overrides" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Se pueden imprimir estilos alternativos del corchete o gancho de las -corcheas y figuras menores, mediante la sobreescritura de la propiedad -@code{flag} del objeto @code{Stem}. Son valores válidos -@code{modern-straight-flag} y @code{old-straight-flag}. - -" - doctitlees = "Uso de estilos alternativos para los corchetes" - - - texidoc = " Alternative styles of flag on eighth and shorter notes can be displayed -by overriding the @code{flag} property of @code{Stem}. Valid values +by overriding the @code{stencil} property of @code{Flag}. Valid values are @code{modern-straight-flag} and @code{old-straight-flag}. " doctitle = "Using alternative flag styles" } % begin verbatim + testnotes = { \autoBeamOff c8 d16 c32 d64 \acciaccatura { c8 } d64 r4 @@ -40,13 +29,12 @@ testnotes = { \time 2/4 \testnotes - \override Stem #'flag = #modern-straight-flag + \override Flag #'stencil = #modern-straight-flag \testnotes - \override Stem #'flag = #old-straight-flag + \override Flag #'stencil = #old-straight-flag \testnotes - \revert Stem #'flag + \revert Flag #'stencil \testnotes } - diff --git a/Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly b/Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly index b521d6b6d9..c316d29d93 100644 --- a/Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly +++ b/Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly @@ -4,45 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks, vocal-music" -%% 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 -esta información. Se suele encontrar en la música coral. - -" - - doctitlees = "Uso de arpeggioBracket para hacer más visible un divisi" - - -%% Translation of GIT committish: 27b1197f3bae8512c14d946752cd3e40e7c76016 - - texidocde = " -Das @code{arpeggioBracket}-Klammerobjekt kann benutzt werden, um geteilte -Stimmen anzuzeigen, wenn keine Hälse diese Information bieten. Das sieht -man oft in Chormusik. - -" - doctitlede = "Arpeggio-Klammern benutzen um geteilte Stimmen besser sichtbar zu machen" - - -%% Translation of GIT committish: c1d5bb448321d688185e0c6b798575d4c325ae80 - texidocfr = " -Les crochets d'arpegio (@code{arpeggioBracket}) permettent de mettre en -évidence les divisions d'un pupitre en l'absence de hampe, comme on le -voit régulièrement dans les partitions pour chœur. - -" - - doctitlefr = "Utilisation d'un arpeggioBracket pour rendre les -divisions plus évidentes" - - texidoc = " The @code{arpeggioBracket} can be used to indicate the division of voices where there are no stems to provide the information. This is @@ -52,6 +18,7 @@ often seen in choral music. doctitle = "Using arpeggioBracket to make divisi more visible" } % begin verbatim + \include "english.ly" \score { @@ -80,4 +47,3 @@ often seen in choral music. } \layout { ragged-right = ##t } } - diff --git a/Documentation/snippets/using-autochange-with-more-than-one-voice.ly b/Documentation/snippets/using-autochange-with-more-than-one-voice.ly new file mode 100644 index 0000000000..cd7f685099 --- /dev/null +++ b/Documentation/snippets/using-autochange-with-more-than-one-voice.ly @@ -0,0 +1,51 @@ +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" + +\header { + lsrtags = "keyboards, pitches, staff-notation" + + texidoc = " +Using @code{autochange} with more than one voice. + +" + doctitle = "Using autochange with more than one voice" +} % begin verbatim + +\score +{ + \new PianoStaff + << + \new Staff = "up" { + << + \set Timing.beamExceptions = #'() + \set Timing.beatStructure = #'(4) + \new Voice { + \voiceOne + \autochange + \relative c' { + g8 a b c d e f g + g,8 a b c d e f g + } + } + + \new Voice { + \voiceTwo + \autochange + \relative c' { + g8 a b c d e f g + g,,8 a b c d e f g + } + } + >> + } + + \new Staff = "down" { + \clef bass + } + >> +} diff --git a/Documentation/snippets/using-double-slurs-for-legato-chords.ly b/Documentation/snippets/using-double-slurs-for-legato-chords.ly index 7fe8032374..0844c8624e 100644 --- a/Documentation/snippets/using-double-slurs-for-legato-chords.ly +++ b/Documentation/snippets/using-double-slurs-for-legato-chords.ly @@ -4,38 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " -Algunos compositores escriben dos ligaduras cuando quieren acordes -legato. Esto se puede conseguir estableciendo @code{doubleSlurs}. - -" - doctitlees = "Utilizar ligaduras dobles para acordes legato" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Einige Komponisten schreiben doppelte Bögen, wenn Legato-Akkorde notiert -werden. Das kann mit der Eigenschaft @code{doubleSlurs} erreicht werden. - -" - doctitlede = "Doppelte Bögen für Legato-Akkorde benutzen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Certains auteurs utilisent deux liaisons lorsqu'ils veulent -lier des accords. Dans LilyPond, il faut pour cela activer -la propriété @code{doubleSlurs} : - -" - doctitlefr = "Accords et double liaison d'articulation" - - texidoc = " Some composers write two slurs when they want legato chords. This can be achieved by setting @code{doubleSlurs}. @@ -44,8 +17,8 @@ be achieved by setting @code{doubleSlurs}. doctitle = "Using double slurs for legato chords" } % begin verbatim + \relative c' { \set doubleSlurs = ##t 4( ) } - diff --git a/Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly b/Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly index b3c8d605a6..c5bcb7e88d 100644 --- a/Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly +++ b/Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly @@ -1,35 +1,15 @@ -%% 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" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.15.15 +\version "2.16.0" \header { lsrtags = "rhythms" -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Es posible aplicar la barrita que cruza la barra de las -acciaccaturas, en otras situaciones. - -" - - doctitlees = "Utilizar la barra que tacha las notas de adorno con notas normales" - - - -%% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b - texidocfr = " -Le trait que l'on trouve sur les hampes des acciaccatures peut -être appliqué dans d'autres situations. - -" - - doctitlefr = "Utilisation de hampe barrée pour une note normale" - texidoc = " The slash through the stem found in acciaccaturas can be applied in other situations. @@ -38,8 +18,8 @@ other situations. doctitle = "Using grace note slashes with normal heads" } % begin verbatim + \relative c'' { - \override Stem #'stroke-style = #"grace" + \override Flag #'stroke-style = #"grace" c8( d2) e8( f4) } - diff --git a/Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly b/Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly index 912e367044..6b8c9f468e 100644 --- a/Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly +++ b/Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly @@ -1,59 +1,18 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -Se puede acceder @qq{lateralmente} a algunos grobs desde dentro de la -función de callback de otro grob. Éstos se encuentran relacionados -normalmente como @qq{layout objects} (objetos de presentación) en la -sección @qq{Internal properties} (propiedades internas) de un -interface de grob. Se usa la función @code{ly:grob-object} para -acceder a estos grobs. - - -Se presentan más abajo como ejemplo algunas formas de addecer a grobs -desde dentro de una función de callback de NoteHead, pero la técnica -no se limita a las cabezas de nota. Sin embargo, la función de -callback de NoteHead es especialmente importante, porque es la función -de callback implícita que utiliza la instrucción @code{\\tweak}. - - -La función de ejemplo que se define abajo (\"display-grobs\") no es -probablemente tan útil, pero muestra que se está accediendo -efectivamente a los grobs. - - -Salida de ejemplo de la consola: - - -@example --------------------- -#-Grob Accidental - -#-Grob Arpeggio - -#-Grob Stem - -@end example - - -" - - doctitlees = "Utilizar ly:grob-object para acceder a los grobs con \\tweak" - - - lsrtags = "tweaks-and-overrides" + lsrtags = "devel, scheme-language, tweaks-and-overrides" texidoc = " Some grobs can be accessed @qq{laterally} from within another grob's -callback. These are usually listed as @qq{layout objects} in the -@qq{Internal properties} section of a grob-interface. The function +callback. These are usually listed as @qq{layout objects} in the +@qq{Internal properties} section of a grob-interface. The function @code{ly:grob-object} is used to access these grobs. @@ -71,19 +30,14 @@ accessed. Example console output: -@example --------------------- -#-Grob Accidental - -#-Grob Arpeggio - -#-Grob Stem - -@end example +-------------------- #-Grob Accidental - #-Grob Arpeggio - #-Grob Stem - + " doctitle = "Using ly:grob-object to access grobs with \\tweak" } % begin verbatim - #(define (notehead-get-accidental notehead) ;; notehead is grob (ly:grob-object notehead 'accidental-grob)) @@ -107,9 +61,9 @@ Example console output: (let ((accidental (notehead-get-accidental notehead)) (arpeggio (notehead-get-arpeggio notehead)) (stem (notehead-get-stem notehead))) - (format #t "~2&~a\n" (make-string 20 #\-)) + (format (current-error-port) "~2&~a\n" (make-string 20 #\-)) (for-each - (lambda (x) (format #t "~a\n" x)) + (lambda (x) (format (current-error-port) "~a\n" x)) (list accidental arpeggio stem)))) \relative c' { diff --git a/Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly b/Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly index a16dcd6d79..b732903167 100644 --- a/Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly +++ b/Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly @@ -4,20 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "editorial-annotations, tweaks-and-overrides" - -%% Translation of GIT committish: 5a898cf43a2a78be6c3a58e4359dccd82196fbe7 - texidocfr = " -Lorsqu'il est impossible d'obtenir facilement une allure particulière -pour les têtes de note en recourant à la technique du @code{\\markup}, un -code Postscript peut vous tirer d'embarras. Voici comment générer des -têtes ressemblant à des parallélogrammes. - -" - doctitlefr = "Utilisation de Postscript pour générer des têtes de note à l'allure particulière" + lsrtags = "editorial-annotations, really-cool, scheme-language, tweaks-and-overrides" texidoc = " When a note head with a special shape cannot easily be generated with @@ -28,6 +18,7 @@ This example shows how a parallelogram-shaped note head is generated. doctitle = "Using PostScript to generate special note head shapes" } % begin verbatim + parallelogram = #(ly:make-stencil (list 'embedded-ps "gsave @@ -41,7 +32,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 +43,3 @@ normalNoteHeads = \revert NoteHead #'stencil \normalNoteHeads 4 d } - - diff --git a/Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly b/Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly index 1e5bc644af..43540003dc 100644 --- a/Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly +++ b/Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "tweaks-and-overrides" + lsrtags = "really-simple, tweaks-and-overrides" texidoc = " With the @code{\\tweak} command, every grob can be tuned directly. @@ -17,6 +17,7 @@ Here are some examples of available tweaks. doctitle = "Using the \\tweak command to tweak individual grobs" } % begin verbatim + \relative c' { \time 2/4 \set fingeringOrientations = #'(right) @@ -27,4 +28,3 @@ Here are some examples of available tweaks. \tweak #'duration-log #2 a >2 } - diff --git a/Documentation/snippets/using-the-whiteout-property.ly b/Documentation/snippets/using-the-whiteout-property.ly index fd76cb9390..70c0a83423 100644 --- a/Documentation/snippets/using-the-whiteout-property.ly +++ b/Documentation/snippets/using-the-whiteout-property.ly @@ -1,58 +1,34 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "editorial-annotations, expressive-marks" - texidoces = " - -Se puede imprimir cualquier objeto gráfico sobre un fondo blanco para -enmascarar parte de los objetos que están por debajo. Esto puede ser -útil para mejorar el aspecto de las colisiones en situaciones -complejas cuando no es práctico reposicionar los objetos. Es -necesario establecer explícitamente la propiedad de capa -(@code{layer}) para controlar qué objetos resultan enmascarados por el -fondo blanco. - -En este ejemplo, la colisión de la ligadura de unión con la indicación -de compás resulta mejorada enmascarando la parte de la ligadura que -cruza a la indicación de compás mediante el establecimiento de la -propiedad @code{whiteout} de @code{TimeSignature}. Para hacer esto, -se mueve @code{TimeSignature} a una capa por encima de @code{Tie}, que -se deja en la capa predeterminada de 1, y @code{StaffSymbol} se mueve -a una capa por encima de @code{TimeSignature} de manera que no resulte -enmascarada. - -" - - doctitlees = "Uso de la propiedad whiteout" - - lsrtags = "expressive-marks, editorial-annotations" texidoc = " -Any graphical object can be printed over a white background to -mask parts of objects that lie beneath. This can be useful to -improve the appearance of collisions in complex situations when -repositioning objects is impractical. It is necessary to explicitly -set the @code{layer} property to control which objects are masked -by the white background. +Any graphical object can be printed over a white background to mask +parts of objects that lie beneath. This can be useful to improve the +appearance of collisions in complex situations when repositioning +objects is impractical. It is necessary to explicitly set the +@code{layer} property to control which objects are masked by the white +background. In this example the collision of the tie with the time signature is improved by masking out the part of the tie that crosses the time -signature by setting the @code{whiteout} property of @code{TimeSignature}. -To do this @code{TimeSignature} is moved to a layer above @code{Tie}, which -is left in the default layer of 1, and @code{StaffSymbol} is moved to a -layer above @code{TimeSignature} so it is not masked. +signature by setting the @code{whiteout} property of +@code{TimeSignature}. To do this @code{TimeSignature} is moved to a +layer above @code{Tie}, which is left in the default layer of 1, and +@code{StaffSymbol} is moved to a layer above @code{TimeSignature} so it +is not masked. + " doctitle = "Using the whiteout property" } % begin verbatim - { \override Score.StaffSymbol #'layer = #4 \override Staff.TimeSignature #'layer = #3 diff --git a/Documentation/snippets/using-ties-with-arpeggios.ly b/Documentation/snippets/using-ties-with-arpeggios.ly index 00781b4174..b1e8bea6fe 100644 --- a/Documentation/snippets/using-ties-with-arpeggios.ly +++ b/Documentation/snippets/using-ties-with-arpeggios.ly @@ -4,47 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "rhythms" -%% 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. -En este caso, las dos notas ligadas no tienen que ser consecutivas. -Esto se puede conseguir estableciendo la propiedad -@code{tieWaitForNote} al valor @code{#t}. La misma funcionalidad -es de utilidad, por ejemplo, para ligar un trémolo a un acorde, pero -en principio también se puede usar para notas normales consecutivas. - -" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " - Überbindungen werden teilweise benutzt, um Arpeggios zu notieren. In - diesem Fall stehen die übergebundenen Noten nicht unbedingt hintereinander. -Das Verhalten kann erreicht werden, indem die @code{tieWaitForNote}-Eigenschaft -auf @code{#t} gesetzt wird. Diese Funktion ist auch sinnvoll, um etwa -ein Tremolo mit einem Akkord zu überbinden, kann aber prinzipiell auch -für normale Überbindungen eingesetzt werden -" - doctitlede = "Überbindungen für Arpeggio benutzen" - - - -%% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685 - texidocfr = " -Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans -ce cas, les notes liées ne sont pas toutes consécutives. Il faut alors -assigner à la propriété @code{tieWaitForNote} la valeur @code{#t} -(@emph{true} pour @qq{vrai}). Cette même méthode peut servir, par -exemple, à lier un trémolo à un accord. -" - doctitlefr = "Liaison de tenue et arpège" - texidoc = " Ties are sometimes used to write out arpeggios. In this case, two tied notes need not be consecutive. This can be achieved by setting the @@ -56,6 +20,7 @@ can also be used for ordinary consecutive notes. doctitle = "Using ties with arpeggios" } % begin verbatim + \relative c' { \set tieWaitForNote = ##t \grace { c16[ ~ e ~ g] ~ } 2 @@ -67,4 +32,3 @@ can also be used for ordinary consecutive notes. \tieDotted g8 ~ c g2 } - diff --git a/Documentation/snippets/utf-8.ly b/Documentation/snippets/utf-8.ly index de9b92d4d2..c6e1a0536b 100644 --- a/Documentation/snippets/utf-8.ly +++ b/Documentation/snippets/utf-8.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "text" diff --git a/Documentation/snippets/version-specific.snippet-list b/Documentation/snippets/version-specific.snippet-list new file mode 100644 index 0000000000..19de199217 --- /dev/null +++ b/Documentation/snippets/version-specific.snippet-list @@ -0,0 +1,8 @@ +flamenco-notation.ly +horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly +makam-example.ly +merging-multi-measure-rests-in-a-polyphonic-part.ly +non-traditional-key-signatures.ly +permitting-line-breaks-within-beamed-tuplets.ly +reverting-default-beam-endings.ly +showing-the-same-articulation-above-and-below-a-note-or-chord.ly diff --git a/Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly b/Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly index aac584a965..9dca248702 100644 --- a/Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly +++ b/Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "expressive-marks, ancient-notation" + lsrtags = "ancient-notation, expressive-marks" texidoc = " This short vertical line placed above the note is commonly used in @@ -19,6 +19,7 @@ demonstrates how to achieve such a notation. doctitle = "Vertical line as a baroque articulation mark" } % begin verbatim + upline = #(let ((m (make-articulation "stopped"))) (set! (ly:music-property m 'tweaks) diff --git a/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly b/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly index 181244b37e..31ec39112c 100644 --- a/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly +++ b/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly @@ -4,56 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "tweaks-and-overrides, spacing" - -%% 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 -indicaciones dinámicas textuales) se pueden alinear con un punto de -referencia común, independientemente de sus dimensiones. De esta -manera, todos los elementos estarán alineados verticalmente, -produciendo así un resultado más satisfactorio. - -Se usa una idea similar para alinear las inscripciones de texto a lo -largo de su línea de base. - -" - doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 -texidocde = " -Indem man die @code{'Y-extent}-Eigenschaft auf einen passenden Wert setzt, -können alle @code{DynamicLineSpanner}-Objekte (Crescendo-Klammern und -Dynamik-Texte) (hairpins and dynamic texts) unabhängig von ihrer -wirklichen Ausdehnung an einem gemeinsamen Referenzpunkt ausgerichtet werden. -Auf diese Weise ist jedes Element vertikal ausgerichtet und der Notensatz -sieht ansprechender aus. - -Die gleiche Idee wird benutzt, um Textbeschriftungen an ihrer -Grundlinie auszurichten. - -" - doctitlede = "Vertikale Ausrichtung von Dynamik und Textbeschriftung beeinflussen" - -%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20 - texidocfr = " -Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les -différents objets @code{DynamicLineSpanner} (souflets ou textuels) -quelle que soit leur étendue, par rapport à un même point de référence. -Tous les éléments seront alors centrés sur une même ligne, ce qui sera -visuellement plus agréable. - -C'est le même principe qui sert à aligner les indications textuelles sur -une ligne de référence. - -" - doctitlefr = "Alignement vertical des nuances indications textuelles" - + lsrtags = "spacing, tweaks-and-overrides, workaround" texidoc = " By setting the @code{'Y-extent} property to a suitable value, all @@ -68,6 +22,7 @@ The same idea is used to align the text scripts along their baseline. doctitle = "Vertically aligned dynamics and textscripts" } % begin verbatim + music = \relative c' { a'2\p b\f e4\p f\f\> g, b\p @@ -82,5 +37,3 @@ music = \relative c' { \override TextScript #'Y-extent = #'(-1.5 . 1.5) \music } - - diff --git a/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly b/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly index 9f1d5eca25..a6fd2906b8 100644 --- a/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly +++ b/Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly @@ -4,22 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "expressive-marks" -%% 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 -expresiones dinámicas se alinean cuando no se producen sobre la -misma nota, incremente la propiedad @code{staff-padding} del -objeto @code{DynamicLineSpanner}. - -" - doctitlees = "Alinear verticalmente expresiones dinámicas que abarcan varias notas" - texidoc = " Dynamics that occur at, begin on, or end on the same note will be vertically aligned. To ensure that dynamics are aligned when they do @@ -30,9 +19,9 @@ of the @code{DynamicLineSpanner} object. doctitle = "Vertically aligning dynamics across multiple notes" } % begin verbatim + \relative c' { \override DynamicLineSpanner #'staff-padding = #4 c2\p f\mf g2\< b4\> c\! } - diff --git a/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly b/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly index 4e2b678b60..b93afc58fc 100644 --- a/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly +++ b/Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly @@ -4,39 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "vocal-music, tweaks-and-overrides, spacing" - -%% 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 -controlar la posición de la letra y los compases de ossia. - -" - doctitlees = "Alineación vertical de la letra y los compases de ossia" - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Dieser Schnipsel zeigt, wie man die Kontexteigenschaften -@code{alignBelowContext} und @code{alignAboveContext} benutzen kann, um -die Positionierung von Gesangstext und Ossia-Abschnitten zu kontrollieren. - -" - doctitlede = "Gesangstext und Ossia vertikal ausrichten" - -%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e - texidocfr = " -Cet exemple illustre la manière de positionner une portée d'ossia et -des paroles à l'aide des propriétés de contexte @code{alignBelowContext} -et @code{alignAboveContext}. - -" - doctitlefr = "Positionnement d'une ossia et des paroles" - + lsrtags = "spacing, tweaks-and-overrides, vocal-music" texidoc = " This snippet demonstrates the use of the context properties @@ -47,6 +18,7 @@ positioning of lyrics and ossias. doctitle = "Vertically aligning ossias and lyrics" } % begin verbatim + \paper { ragged-right = ##t } @@ -75,4 +47,3 @@ positioning of lyrics and ossias. >> } >> - diff --git a/Documentation/snippets/vertically-centered-common-lyrics.ly b/Documentation/snippets/vertically-centered-common-lyrics.ly index 1b56f6ff47..a819d064cc 100644 --- a/Documentation/snippets/vertically-centered-common-lyrics.ly +++ b/Documentation/snippets/vertically-centered-common-lyrics.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "vocal-music" @@ -57,4 +57,3 @@ melody = \relative c' { c4 d e f g f e8( e f) d4 c e d c } \new Lyrics \lyricsto m \lyricsD >> } - diff --git a/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly b/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly index 5b0b75e958..a29298b9d9 100644 --- a/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly +++ b/Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly @@ -4,24 +4,11 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { lsrtags = "chords, tweaks-and-overrides" -%% 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 -verdadero, las parejas de líneas extensoras congruentes se centran -verticalmente si el valor de @code{figuredBassCenterContinuations} -tiene el valor verdadero. - -" - doctitlees = "Centrado vertical de las líneas de bajo cifrado emparejadas" - - - texidoc = " Where figured bass extender lines are being used by setting @code{useBassFigureExtenders} to true, pairs of congruent figured bass @@ -32,6 +19,7 @@ extender lines are vertically centered if doctitle = "Vertically centering paired figured bass extenders" } % begin verbatim + << \relative c' { c8 c b b a a c16 c b b @@ -50,4 +38,3 @@ extender lines are vertically centered if <6+ 4 3>4 <6 4 3>8 <4 3+>8 } >> - diff --git a/Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly b/Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly index dbaee280a5..59754d98ee 100644 --- a/Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly +++ b/Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly @@ -1,68 +1,13 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - texidoces = " - -Esta plantilla añade una reducción de piano automática a la partitura -vocal SATB estándar que se mostró en la @qq{Plantilla de conjunto -vocal}. Esto presenta uno de los puntos fuertes de LilyPond: podemos -usar una definición de música más de una vez. Si se hace cualquier -cambio en las notas de la parte vocal (digamos @code{tenorMusic}), -entonces los cambios se aplicarán también a la reducción de piano. - -" - doctitlees = "Plantilla de conjunto vocal con reducción de piano automática" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c -ピアノ譜を付け加えています。これは LilyPond の強みの 1 つを示しています - 音楽@c -定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic} -の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。 -" - -%% 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 -Chorpartitur hinzugefügt. Das zeigt eine der Stärken von LilyPond --- man kann eine Variable mehr als einmal benutzen. Wenn Sie -irgendeine Änderung an einer Chorstimme vornehmen, (etwa -tenorMusic), verändert sich auch der Klavierauszug entsprechend. -" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Ce canevas ajoute une réduction pour piano à une partition standard pour -chœur à quatre voix mixtes. Ceci illustre l'un des avantages de -LilyPond : une expression musicale peut être réutilisée sans effort. -Toute modification apportée à l'une des voix, mettons @code{tenorMusique}, -sera automatiquement reportée dans la réduction pour piano. - -" - doctitlefr = "Ensemble vocal avec réduction pour piano" - - lsrtags = "vocal-music, keyboards, template" + lsrtags = "automatic-notation, keyboards, template, vocal-music" texidoc = " This template adds an automatic piano reduction to the standard SATB @@ -71,6 +16,7 @@ demonstrates one of the strengths of LilyPond – you can use a music definition more than once. If any changes are made to the vocal notes (say, @code{tenorMusic}), then the changes will also apply to the piano reduction. + " doctitle = "Vocal ensemble template with automatic piano reduction" } % begin verbatim diff --git a/Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly b/Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly index 2aa3309122..c4c1f61ccb 100644 --- a/Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly +++ b/Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly @@ -4,58 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.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: 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 -colocan utilizando @code{alignAboveContext} y -@code{alignBelowContext}. - -" - doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas" - - -%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86 - texidocja = " -このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が -@code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。 -" - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -In diesem Beispiel werden die Texte mit den Befehlen -@code{alignAboveContext} und @code{alignBelowContext} -über und unter dem System angeordnet. -" - - doctitlede = "Vorlage für Vokalensemble mit dem Gesangstext über und unter dem System" - - -%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a - texidocfr = " -Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes. -La différence réside dans le fait que les paroles sont positionnées en -ayant recours à @code{alignAboveContext} et @code{alignBelowContext}. - -" - doctitlefr = "Ensemble vocal avec alignement des paroles selon le contexte" + lsrtags = "contexts-and-engravers, template, text, vocal-music" texidoc = " This template is basically the same as the simple @qq{Vocal ensemble} @@ -66,6 +18,7 @@ using @code{alignAboveContext} and @code{alignBelowContext}. doctitle = "Vocal ensemble template with lyrics aligned below and above the staves" } % begin verbatim + global = { \key c \major \time 4/4 @@ -105,10 +58,12 @@ bassWords = \lyricmode { \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> } \new Voice = "altos" { \voiceTwo << \global \altoMusic >> } >> - \new Lyrics \with { alignAboveContext = #"women" } \lyricsto "sopranos" \sopWords - \new Lyrics \with { alignBelowContext = #"women" } \lyricsto "altos" \altoWords - % we could remove the line about this with the line below, since we want - % the alto lyrics to be below the alto Voice anyway. + \new Lyrics \with { alignAboveContext = #"women" } + \lyricsto "sopranos" \sopWords + \new Lyrics \with { alignBelowContext = #"women" } + \lyricsto "altos" \altoWords + % we could remove the line about this with the line below, since + % we want the alto lyrics to be below the alto Voice anyway. % \new Lyrics \lyricsto "altos" \altoWords \new Staff = "men" << @@ -116,10 +71,11 @@ bassWords = \lyricmode { \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> } \new Voice = "basses" { \voiceTwo << \global \bassMusic >> } >> - \new Lyrics \with { alignAboveContext = #"men" } \lyricsto "tenors" \tenorWords - \new Lyrics \with { alignBelowContext = #"men" } \lyricsto "basses" \bassWords + \new Lyrics \with { alignAboveContext = #"men" } + \lyricsto "tenors" \tenorWords + \new Lyrics \with { alignBelowContext = #"men" } + \lyricsto "basses" \bassWords % again, we could replace the line above this with the line below. % \new Lyrics \lyricsto "basses" \bassWords >> } - diff --git a/Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly b/Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly index 459e985c59..86228b93fa 100644 --- a/Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly +++ b/Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly @@ -1,66 +1,21 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c + lsrtags = "contexts-and-engravers, template, vocal-music" - texidoces = " -Esta plantilla crea una partitura que comienza con una estrofa para -solista y continúa con un estribillo a dos voces. también muestra el -uso de silencios de separación dentro de la variable @code{\\global} -para definir cambios de compás (y otros elementos que son comunes a -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 = " -Diese Vorlage erstellt eine Partitur, die mit Sologesang beginnt und einen -Refrain für zwei Stimmen enthält. Sie zeigt auch die Benutzung von -Platzhalter-Pausen innerhalb der @code{\\global}-Variable, um Taktwechsel -(und andere Elemente, die für alle Stimmen gleich sind) für das gesamte -Stück zu definieren. - -" - doctitlede = "Sologesang und zweistimmiger Refrain" - -%% Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37 - - texidocfr = " -Ce canevas illustre la manière d'agencer une œuvre vocale où le couplet -est chanté en solo et le refrain à deux voix. Vous noterez le recours -aux silences invisibles dans la variable @code{\\global}@tie{}; ils -permettent de positionner les changements de métrique et autres éléments -communs à toutes les parties et pour l'intégralité du morceau. -" - doctitlefr = "Ensemble vocal avec couplet et refrain" - - lsrtags = "vocal-music, contexts-and-engravers, template" texidoc = " This template creates a score which starts with a solo verse and -continues into a refrain for two voices. It also demonstrates the -use of spacer rests within the @code{\\global} variable to define -meter changes (and other elements common to all parts) throughout -the entire score. +continues into a refrain for two voices. It also demonstrates the use +of spacer rests within the @code{\\global} variable to define meter +changes (and other elements common to all parts) throughout the entire +score. + " doctitle = "Vocal ensemble template with verse and refrain" } % begin verbatim @@ -150,4 +105,3 @@ BassLyrics = \lyricmode { } } } - diff --git a/Documentation/snippets/vocal-ensemble-template.ly b/Documentation/snippets/vocal-ensemble-template.ly index be94bf1975..c657cfe192 100644 --- a/Documentation/snippets/vocal-ensemble-template.ly +++ b/Documentation/snippets/vocal-ensemble-template.ly @@ -1,67 +1,13 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%% 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 -todas las partes. Por ejemplo, el compás y la armadura casi siempre -son los mismos para todas. Como en la plantilla @qq{Himno}, las cuatro -voces se reagrupan en sólo dos pentagramas. - -" - doctitlees = "Plantilla de conjunto vocal" - - -%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441 - texidocja = " -これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c -もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c -便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@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 -Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen, -die in allen Stimmen eingefügt wird. Taktart und Vorzeichen etwa -sind fast immer gleich in allen Stimmen. -" - - doctitlede = "Vorlage für Vokalensemble" - - -%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441 - texidocfr = " -Ce fichier constitue un canevas standard de partition pour chœur à -quatre voix mixtes. Lorsque les ensembles s'étoffent, il est judicieux -de recourrir à une section spécifique incluse dans chacune des parties, -tout particulièrement pour gérer la métrique et la tonalité qui, -la plupart du temps, sont communes à tous les pupitres. Comme il est -d'usage pour les hymnes, les quatre voix sont réparties sur deux -portées. - -" - doctitlefr = "Ensemble vocal (simple)" - - lsrtags = "vocal-music, template" + lsrtags = "really-simple, template, vocal-music" texidoc = " Here is a standard four-part SATB vocal score. With larger ensembles, @@ -69,6 +15,7 @@ it is often useful to include a section which is included in all parts. For example, the time signature and key signature are almost always the same for all parts. Like in the @qq{Hymn} template, the four voices are regrouped on only two staves. + " doctitle = "Vocal ensemble template" } % begin verbatim @@ -152,4 +99,3 @@ bassWords = \lyricmode { \context Lyrics = "basses" \lyricsto "basses" \bassWords >> } - diff --git a/Documentation/snippets/vocal-headword.ly b/Documentation/snippets/vocal-headword.ly index 6991676199..14b21c9c0a 100644 --- a/Documentation/snippets/vocal-headword.ly +++ b/Documentation/snippets/vocal-headword.ly @@ -1,25 +1,20 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" - -#(set-global-staff-size 15) -\paper { - ragged-right = ##t - line-width = 17\cm - indent = 0\cm -} +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} % begin verbatim + lsrtags = "headword" + texidoc = " +Vocal headword + +" + doctitle = "Vocal headword" +} % begin verbatim \layout { \context { @@ -78,4 +73,3 @@ % Freu -- de, Freu -- de,__ } } - diff --git a/Documentation/snippets/vocal-music-intro.itely b/Documentation/snippets/vocal-music-intro.itely index fd192ae925..26326831de 100644 --- a/Documentation/snippets/vocal-music-intro.itely +++ b/Documentation/snippets/vocal-music-intro.itely @@ -1,5 +1,6 @@ @node Vocal music @unnumbered Vocal music +@nodeprefix Vocal music @ruser{Vocal music} diff --git a/Documentation/snippets/vocal-music.snippet-list b/Documentation/snippets/vocal-music.snippet-list index e38fb6c94d..b62574ffc0 100644 --- a/Documentation/snippets/vocal-music.snippet-list +++ b/Documentation/snippets/vocal-music.snippet-list @@ -2,6 +2,7 @@ adding-ambitus-per-voice.ly adding-indicators-to-staves-which-get-split-after-a-break.ly adding-orchestral-cues-to-a-vocal-score.ly adjusting-lyrics-vertical-spacing.ly +aligning-syllables-with-melisma.ly ambitus-with-multiple-voices.ly ambitus.ly ancient-notation-template----modern-transcription-of-gregorian-music.ly @@ -13,8 +14,8 @@ formatting-lyrics-syllables.ly how-to-put-ties-between-syllables-in-lyrics.ly hymn-template.ly lyrics-alignment.ly -lyrics-old-spacing-settings.ly marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly +obtaining-2.12-lyrics-spacing-in-newer-versions.ly orchestra,-choir-and-piano-template.ly piano-template-with-melody-and-lyrics.ly putting-lyrics-inside-the-staff.ly diff --git a/Documentation/snippets/volta-below-chords.ly b/Documentation/snippets/volta-below-chords.ly index 8610bd2b06..1c43944d60 100644 --- a/Documentation/snippets/volta-below-chords.ly +++ b/Documentation/snippets/volta-below-chords.ly @@ -4,30 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "repeats, staff-notation, chords" - -%% 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 -segunda vez debajo de los acordes. - -" - doctitlees = "Corchetes de primera y segunda vez debajo de los acordes" - - - -%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - texidocde = " -Indem man den @code{Volta_engraver} zu dem entsprechenden Notensystem -hinzufügt, können Wiederholungsklammern unterhalb der Akkorde gesetzt -werden. - -" - doctitlede = "Wiederholungs-(Volta-)Klammern unterhalb der Akkordsymbole" + lsrtags = "chords, repeats, staff-notation" texidoc = " By adding the @code{Volta_engraver} to the relevant staff, volte can be @@ -37,6 +17,7 @@ put under chords. doctitle = "Volta below chords" } % begin verbatim + \score { << \chords { diff --git a/Documentation/snippets/volta-multi-staff.ly b/Documentation/snippets/volta-multi-staff.ly index 030a54aa80..a16d728f33 100644 --- a/Documentation/snippets/volta-multi-staff.ly +++ b/Documentation/snippets/volta-multi-staff.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "repeats, staff-notation" + lsrtags = "really-simple, repeats, staff-notation" texidoc = " By adding the @code{Volta_engraver} to the relevant staff, volte can be @@ -17,6 +17,7 @@ put over staves other than the topmost one in a score. doctitle = "Volta multi staff" } % begin verbatim + voltaMusic = \relative c'' { \repeat volta 2 { c1 @@ -38,4 +39,3 @@ voltaMusic = \relative c'' { \new Staff \voltaMusic >> >> - diff --git a/Documentation/snippets/volta-text-markup-using-repeatcommands.ly b/Documentation/snippets/volta-text-markup-using-repeatcommands.ly index b739b7b4c0..55ef3c14a2 100644 --- a/Documentation/snippets/volta-text-markup-using-repeatcommands.ly +++ b/Documentation/snippets/volta-text-markup-using-repeatcommands.ly @@ -4,10 +4,10 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.14.0" +\version "2.16.0" \header { - lsrtags = "repeats, text" + lsrtags = "repeats, symbols-and-glyphs, text" texidoc = " Though volte are best specified using @code{\\repeat volta}, the @@ -25,6 +25,7 @@ separate list elements: doctitle = "Volta text markup using repeatCommands" } % begin verbatim + voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } \relative c'' { diff --git a/Documentation/snippets/wind-headword.ly b/Documentation/snippets/wind-headword.ly index 7e52280c0f..ca451e32a8 100644 --- a/Documentation/snippets/wind-headword.ly +++ b/Documentation/snippets/wind-headword.ly @@ -1,26 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" -#(set-global-staff-size 15) -\paper { - line-width = 16\cm - indent = 0\cm -} - -% NR 2.whatever Wind +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { - lsrtags = "headwords" - texidoc = "" - doctitle = "headword" -} % begin verbatim + lsrtags = "headword" + texidoc = " +Wind headword +" + doctitle = "Wind headword" +} % begin verbatim + +% NR 2.whatever Wind % Tchaikovsky % Nutcracker Suite, VII Dance of the Merlitons \score { @@ -28,10 +24,8 @@ \new Staff \relative c'' { \set Staff.instrumentName = "Flauto I,II" \once \override Score.RehearsalMark #'self-alignment-X = #-1 - \once \override Score.RehearsalMark #'break-align-symbols = -#'(time-signature) - \once \override Score.TimeSignature -#'break-align-anchor-alignment = #LEFT + \once \override Score.RehearsalMark #'break-align-symbols = #'(time-signature) + \once \override Score.TimeSignature #'break-align-anchor-alignment = #LEFT \once \override Score.RehearsalMark #'padding = #4 \mark \markup \large \bold {Moderato assai} \key d \major @@ -57,4 +51,3 @@ } >> } - diff --git a/Documentation/snippets/winds-intro.itely b/Documentation/snippets/winds-intro.itely index 01c5671f6f..89e35e20d6 100644 --- a/Documentation/snippets/winds-intro.itely +++ b/Documentation/snippets/winds-intro.itely @@ -1,5 +1,6 @@ @node Winds @unnumbered Winds +@nodeprefix Winds @ruser{Wind instruments} diff --git a/Documentation/snippets/woodwind-diagrams-key-lists.ly b/Documentation/snippets/woodwind-diagrams-key-lists.ly index 331a47493f..f472cdafea 100644 --- a/Documentation/snippets/woodwind-diagrams-key-lists.ly +++ b/Documentation/snippets/woodwind-diagrams-key-lists.ly @@ -5,65 +5,34 @@ % % This file is in the public domain. %% Note: this file works from version 2.14.0 -\version "2.14.0" +\version "2.16.0" \header { -%%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c - - texidoces = " - -El fragmento de código que aparece a continuación produce una lista de -todas las llaves y disposiciones de llave posibles para los diagramas -de posiciones de instrumentos de viento madera, tal y como están -definidos en @file{scm/define-woodwind-diagrams.scm}. La lista se -presenta en la consola y en el archivo de registro de salida, pero no -en la salida de música. - -" - - doctitlees = "Listas de llaves para los diagramas de viento madera" - -%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - texidocde=" -Dieses Schnipsel erzeugt eine Liste aller möglichen Löcher und Locheinstellungen -für Holzbläserdiagramme, wie sie in der Datei -@file{scm/define-woodwind-diagrams.scm} definiert sind. Die Liste wird auf -der Kommandozeile und in der Log-Datei angezeigt, nicht in den Noten. -" - doctitlede = "Liste der Löcher für Holzbläserdiagramme" - - -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d - texidocfr = " -Le code suivant vous permettra d'obtenir une liste de toutes les -possibilités en matière de doigtés pour bois, tels qu'ils sont définis -dans le fichier @file{scm/define-woodwind-diagrams.scm}. Cette liste -sera produite en console et dans le fichier de journalisation, mais pas -sous forme de musique. -" - doctitlefr = "Liste des différents diagrammes de doigtés pour bois" - lsrtags = "winds" texidoc=" The snippet below produces a list of all possible keys and key settings for woodwind diagrams as defined in @file{scm/define-woodwind-diagrams.scm}. The list will be displayed -on the console and in the log file, but not in the music. +in the log file, but not in the music. If output to the console +is wanted, omit the @code{(current-error-port)} from the commands. " doctitle = "Woodwind diagrams key lists" } % begin verbatim -#(print-keys-verbose 'piccolo) -#(print-keys-verbose 'flute) -#(print-keys-verbose 'flute-b-extension) -#(print-keys-verbose 'oboe) -#(print-keys-verbose 'clarinet) -#(print-keys-verbose 'bass-clarinet) -#(print-keys-verbose 'low-bass-clarinet) -#(print-keys-verbose 'saxophone) -#(print-keys-verbose 'baritone-saxophone) -#(print-keys-verbose 'bassoon) -#(print-keys-verbose 'contrabassoon) +#(print-keys-verbose 'piccolo (current-error-port)) +#(print-keys-verbose 'flute (current-error-port)) +#(print-keys-verbose 'flute-b-extension (current-error-port)) +#(print-keys-verbose 'tin-whistle (current-error-port)) +#(print-keys-verbose 'oboe (current-error-port)) +#(print-keys-verbose 'clarinet (current-error-port)) +#(print-keys-verbose 'bass-clarinet (current-error-port)) +#(print-keys-verbose 'low-bass-clarinet (current-error-port)) +#(print-keys-verbose 'saxophone (current-error-port)) +#(print-keys-verbose 'soprano-saxophone (current-error-port)) +#(print-keys-verbose 'alto-saxophone (current-error-port)) +#(print-keys-verbose 'tenor-saxophone (current-error-port)) +#(print-keys-verbose 'baritone-saxophone (current-error-port)) +#(print-keys-verbose 'bassoon (current-error-port)) +#(print-keys-verbose 'contrabassoon (current-error-port)) diff --git a/Documentation/snippets/woodwind-diagrams-listing.ly b/Documentation/snippets/woodwind-diagrams-listing.ly index b94ca3032d..71a59920cc 100644 --- a/Documentation/snippets/woodwind-diagrams-listing.ly +++ b/Documentation/snippets/woodwind-diagrams-listing.ly @@ -1,51 +1,22 @@ -% DO NOT EDIT this file manually; it is automatically -% generated from Documentation/snippets/new -% Make any changes in Documentation/snippets/new/ -% and then run scripts/auxiliar/makelsr.py -% -% This file is in the public domain. -%% Note: this file works from version 2.14.0 -\version "2.14.0" +%% DO NOT EDIT this file manually; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% Make any changes in LSR itself, or in Documentation/snippets/new/ , +%% and then run scripts/auxiliar/makelsr.py +%% +%% This file is in the public domain. +\version "2.16.0" \header { -%%% 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 -el momento. + lsrtags = "specific-notation, winds" -" - doctitlees = "Listado de los diagramas para viento madera" - -%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 - - - texidocde=" -Folgende Noten zeige alle Holzbläserdiagramme, die für LilyPond -definiert sind. - -" - doctitlede = "Liste der Holzbläserdiagramme" - - -%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d - texidocfr = " -Voici la liste des différents instruments à vent de la section des bois -dont les doigtés sont disponibles à ce jour. -" - doctitlefr = "Liste des diagrammes de doigtés pour bois" - - - lsrtags="winds" - texidoc=" + texidoc = " The following music shows all of the woodwind diagrams currently defined in LilyPond. + " doctitle = "Woodwind diagrams listing" - } % begin verbatim - \relative c' { \textLengthOn c1^ diff --git a/Documentation/snippets/workaround.snippet-list b/Documentation/snippets/workaround.snippet-list new file mode 100644 index 0000000000..3d43a69835 --- /dev/null +++ b/Documentation/snippets/workaround.snippet-list @@ -0,0 +1,19 @@ +accordion-discant-symbols.ly +adding-an-extra-staff-at-a-line-break.ly +adding-parentheses-around-an-expressive-mark-or-chordal-note.ly +adjusting-lyrics-vertical-spacing.ly +changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly +creating-real-parenthesized-dynamics.ly +cross-staff-chords---beaming-problems-workaround.ly +displaying-complex-chords.ly +double-glissando.ly +faking-a-hammer-in-tablatures.ly +forcing-measure-width-to-adapt-to-metronomemarks-width.ly +making-some-staff-lines-thicker-than-the-others.ly +marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly +measure-counter.ly +positioning-segno-and-coda-with-line-break.ly +printing-text-from-right-to-left.ly +transcription-of-ancient-music-with-incipit.ly +transposing-pitches-with-minimum-accidentals-smart-transpose.ly +vertically-aligned-dynamics-and-textscripts.ly diff --git a/Documentation/snippets/world-music-intro.itely b/Documentation/snippets/world-music-intro.itely index 7dc01da4d3..63977c850f 100644 --- a/Documentation/snippets/world-music-intro.itely +++ b/Documentation/snippets/world-music-intro.itely @@ -1,5 +1,6 @@ @node World music @unnumbered World music +@nodeprefix World music @ruser{World music} diff --git a/Documentation/topdocs/GNUmakefile b/Documentation/topdocs/GNUmakefile index 037cc39f1a..ce3dc1f42b 100644 --- a/Documentation/topdocs/GNUmakefile +++ b/Documentation/topdocs/GNUmakefile @@ -16,5 +16,3 @@ $(outdir)/NEWS.tely: $(top-src-dir)/Documentation/changes.tely ifeq ($(out),www) local-WWW-1: $(OUT_TEXI_FILES) endif - -.SECONDARY: diff --git a/Documentation/translations.itexi b/Documentation/translations.itexi index 7d19c62d60..4287d245eb 100644 --- a/Documentation/translations.itexi +++ b/Documentation/translations.itexi @@ -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 Thu May 31 10:51:45 UTC 2012 } @multitable @columnfractions 0.5 0.5 @@ -26,7 +26,7 @@ LilyPond Changes @item Section titles @* -(1464) +(1192) @tab Francisco Vila @* @@ -276,7 +276,7 @@ up to date @item 1 Music engraving @* -(5297) +(5296) @tab  Till Paala @* @@ -459,11 +459,11 @@ partially translated (92 %) @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item A GNU Free Documentation License @@ -561,12 +561,13 @@ up to date @end multitable -@multitable @columnfractions 0.333333333333 0.333333333333 0.333333333333 +@multitable @columnfractions 0.25 0.25 0.25 0.25 @headitem Extending LilyPond @tab de @tab es +@tab fr @item Section titles @* @@ -610,6 +611,29 @@ translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -660,6 +684,29 @@ translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -670,7 +717,7 @@ up to date @item 1 Scheme tutorial @* -(5007) +(6041) @tab Till Paala @* @@ -710,6 +757,29 @@ translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -720,7 +790,7 @@ up to date @item 2 Interfaces for programmers @* -(3568) +(5250) @tab Till Paala @* @@ -760,6 +830,51 @@ translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Valentin Villenave +@* +Jean-Charles Malahieude +@* + +@ifhtml + +@html +Gilles Thibault +@end html +@end ifhtml +@ifnothtml +Gilles Thibault +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -810,6 +925,29 @@ not translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -979,22 +1117,22 @@ Luca Rossetto Casel @ifhtml @html -partially translated (93 %) +translated @end html @end ifhtml @ifnothtml -partially translated (93 %) +translated @end ifnothtml @* @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -1220,11 +1358,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -1286,11 +1424,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item 1 Tutorial @@ -1582,16 +1720,16 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item 2 Common notation @* -(4184) +(4187) @tab Pavel Fric @* @@ -1736,11 +1874,11 @@ up to date @ifhtml @html -translated +partially translated (93 %) @end html @end ifhtml @ifnothtml -translated +partially translated (93 %) @end ifnothtml @* @@ -1856,16 +1994,16 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item 3 Fundamental concepts @* -(11139) +(11130) @tab Pavel Fric @* @@ -1883,11 +2021,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Till Paala @* @@ -1908,11 +2046,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -1999,7 +2137,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2042,11 +2180,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -2108,7 +2246,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2117,25 +2255,25 @@ partially up to date @item 4 Tweaking output @* -(15408) +(15468) @tab Pavel Fric @* @ifhtml @html -translated +partially translated (98 %) @end html @end ifhtml @ifnothtml -translated +partially translated (98 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2158,11 +2296,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -2262,7 +2400,7 @@ not translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2328,7 +2466,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2380,7 +2518,7 @@ up to date @item A Templates @* -(225) +(219) @tab Pavel Fric @* @@ -2398,7 +2536,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2421,11 +2559,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -2490,7 +2628,7 @@ not translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2522,11 +2660,11 @@ Luca Rossetto Casel @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -2838,13 +2976,14 @@ up to date @end multitable -@multitable @columnfractions 0.2 0.2 0.2 0.2 0.2 +@multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem LilyPond Notation Reference @tab de @tab es @tab fr +@tab it @tab ja @item Section titles @@ -2921,36 +3060,29 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@item -LilyPond --- \TITLE\ -@* -(1139) -@tab Till Paala -@* +@end ifnothtml @ifhtml @html @@ -2971,7 +3103,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Yoshiki Sawada @* @ifhtml @@ -2994,9 +3126,11 @@ translated @ifnothtml up to date @end ifnothtml -@tab John Mandereau +@item +LilyPond --- \TITLE\ @* -Jean-Charles Malahieude +(1139) +@tab Till Paala @* @ifhtml @@ -3019,7 +3153,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Francisco Vila @* @ifhtml @@ -3042,11 +3176,9 @@ translated @ifnothtml up to date @end ifnothtml -@item -1 Musical notation +@tab John Mandereau @* -(91) -@tab Till Paala +Jean-Charles Malahieude @* @ifhtml @@ -3069,34 +3201,29 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date + @end ifnothtml -@tab John Mandereau -@* -Jean-Charles Malahieude -@* - @ifhtml @html @@ -3111,11 +3238,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -3141,9 +3268,9 @@ translated up to date @end ifnothtml @item -1.1 Pitches +1 Musical notation @* -(4479) +(91) @tab Till Paala @* @@ -3161,11 +3288,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Francisco Vila @* @@ -3190,28 +3317,42 @@ translated @ifnothtml up to date @end ifnothtml -@tab Frédéric Chiasson +@tab John Mandereau +@* +Jean-Charles Malahieude @* @ifhtml @html -Valentin Villenave +translated @end html @end ifhtml @ifnothtml -Valentin Villenave +translated @end ifnothtml @* @ifhtml @html -Jean-Charles Malahieude +up to date @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel @end ifnothtml @* @@ -3238,11 +3379,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -3261,16 +3402,16 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item -1.2 Rhythms +1.1 Pitches @* -(6048) +(4530) @tab Till Paala @* @@ -3288,11 +3429,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Francisco Vila @* @@ -3311,16 +3452,14 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Frédéric Chiasson @* -Jean-Charles Malahieude -@* @ifhtml @@ -3352,17 +3491,6 @@ Jean-Charles Malahieude @end ifhtml @ifnothtml -@end ifnothtml -@* - -@ifhtml - -@html - -@end html -@end ifhtml -@ifnothtml - @end ifnothtml @ifhtml @@ -3378,42 +3506,35 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@item -1.3 Expressive marks -@* -(1726) -@tab Till Paala -@* +@end ifnothtml @ifhtml @html @@ -3434,7 +3555,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Yoshiki Sawada @* @ifhtml @@ -3451,50 +3572,44 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml -@tab Valentin Villenave +@item +1.2 Rhythms @* -Jean-Charles Malahieude +(6352) +@tab Till Paala @* @ifhtml @html -Jean-Charles Malahieude +translated @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +translated @end ifnothtml @* @ifhtml @html -John Mandereau +up to date @end html @end ifhtml @ifnothtml -John Mandereau +up to date @end ifnothtml +@tab Francisco Vila @* @ifhtml -@html - -@end html -@end ifhtml -@ifnothtml - -@end ifnothtml -@ifhtml - @html translated @end html @@ -3513,59 +3628,53 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Frédéric Chiasson +@* +Jean-Charles Malahieude @* @ifhtml @html -translated +Valentin Villenave @end html @end ifhtml @ifnothtml -translated +Valentin Villenave @end ifnothtml @* @ifhtml @html -up to date +François Martin @end html @end ifhtml @ifnothtml -up to date +François Martin @end ifnothtml -@item -1.4 Repeats -@* -(930) -@tab Till Paala @* @ifhtml @html -translated +Xavier Scheuer @end html @end ifhtml @ifnothtml -translated +Xavier Scheuer @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Francisco Vila -@* +@end ifnothtml @ifhtml @html @@ -3586,30 +3695,17 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave -@* -Jean-Charles Malahieude -@* - -@ifhtml - -@html -Jean-Charles Malahieude -@end html -@end ifhtml -@ifnothtml -Jean-Charles Malahieude -@end ifnothtml +@tab Federico Bruni @* @ifhtml @html -John Mandereau +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -John Mandereau +Luca Rossetto Casel @end ifnothtml @* @@ -3625,11 +3721,11 @@ John Mandereau @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -3659,16 +3755,16 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @item -1.5 Simultaneous notes +1.3 Expressive marks @* -(2163) +(1712) @tab Till Paala @* @@ -3686,11 +3782,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Francisco Vila @* @@ -3715,9 +3811,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Frédéric Chiasson -@* -Valentin Villenave +@tab Valentin Villenave @* Jean-Charles Malahieude @* @@ -3767,50 +3861,43 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni @* @ifhtml @html -not translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -not translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@item -1.6 Staff notation -@* -(2056) -@tab Till Paala -@* +@end ifnothtml @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -3823,7 +3910,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Yoshiki Sawada @* @ifhtml @@ -3846,31 +3933,36 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave +@item +1.4 Repeats @* -Jean-Charles Malahieude +(1011) +@tab Till Paala @* @ifhtml @html -John Mandereau +translated @end html @end ifhtml @ifnothtml -John Mandereau +translated @end ifnothtml @* @ifhtml @html - +up to date @end html @end ifhtml @ifnothtml - +up to date @end ifnothtml +@tab Francisco Vila +@* + @ifhtml @html @@ -3891,59 +3983,42 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Valentin Villenave @* - -@ifhtml - -@html -not translated -@end html -@end ifhtml -@ifnothtml -not translated -@end ifnothtml +Jean-Charles Malahieude @* @ifhtml @html -up to date +Jean-Charles Malahieude @end html @end ifhtml @ifnothtml -up to date +Jean-Charles Malahieude @end ifnothtml -@item -1.7 Editorial annotations -@* -(931) -@tab Till Paala @* @ifhtml @html -translated +John Mandereau @end html @end ifhtml @ifnothtml -translated +John Mandereau @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@tab Francisco Vila -@* +@end ifnothtml @ifhtml @html @@ -3964,28 +4039,48 @@ translated @ifnothtml up to date @end ifnothtml -@tab Jean-Charles Malahieude +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -3993,11 +4088,11 @@ partially up to date @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -4011,9 +4106,9 @@ not translated up to date @end ifnothtml @item -1.8 Text +1.5 Simultaneous notes @* -(2716) +(2640) @tab Till Paala @* @@ -4060,17 +4155,21 @@ translated @ifnothtml up to date @end ifnothtml -@tab Jean-Charles Malahieude +@tab Frédéric Chiasson +@* +Valentin Villenave +@* +Jean-Charles Malahieude @* @ifhtml @html -Valentin Villenave +Jean-Charles Malahieude @end html @end ifhtml @ifnothtml -Valentin Villenave +Jean-Charles Malahieude @end ifnothtml @* @@ -4114,44 +4213,37 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni @* @ifhtml @html -not translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -not translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@item -2 Specialist notation -@* -(81) -@tab Till Paala -@* +@end ifnothtml @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -4164,7 +4256,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Yoshiki Sawada @* @ifhtml @@ -4187,9 +4279,11 @@ translated @ifnothtml up to date @end ifnothtml -@tab John Mandereau +@item +1.6 Staff notation @* -Jean-Charles Malahieude +(2392) +@tab Till Paala @* @ifhtml @@ -4212,17 +4306,17 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Francisco Vila @* @ifhtml @html -partially translated (2 %) +translated @end html @end ifhtml @ifnothtml -partially translated (2 %) +translated @end ifnothtml @* @@ -4235,36 +4329,31 @@ partially translated (2 %) @ifnothtml up to date @end ifnothtml -@item -2.1 Vocal music +@tab Valentin Villenave @* -(4807) -@tab Till Paala +Jean-Charles Malahieude @* @ifhtml @html -translated +John Mandereau @end html @end ifhtml @ifnothtml -translated +John Mandereau @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Francisco Vila -@* +@end ifnothtml @ifhtml @html @@ -4285,30 +4374,17 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave -@* -Jean-Charles Malahieude -@* - -@ifhtml - -@html -Jean-Charles Malahieude -@end html -@end ifhtml -@ifnothtml -Jean-Charles Malahieude -@end ifnothtml +@tab Federico Bruni @* @ifhtml @html -Jean-Jacques Gerbaud +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -Jean-Jacques Gerbaud +Luca Rossetto Casel @end ifnothtml @* @@ -4324,11 +4400,11 @@ Jean-Jacques Gerbaud @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -4347,11 +4423,11 @@ up to date @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -4365,10 +4441,10 @@ not translated up to date @end ifnothtml @item -2.2 Keyboard and other multi-staff instruments +1.7 Editorial annotations @* -(838) -@tab  Till Paala +(949) +@tab Till Paala @* @ifhtml @@ -4414,30 +4490,40 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave +@tab Jean-Charles Malahieude @* -Jean-Charles Malahieude + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml @* @ifhtml @html -Jean-Charles Malahieude +up to date @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +up to date @end ifnothtml +@tab Federico Bruni @* @ifhtml @html -John Mandereau +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -John Mandereau +Luca Rossetto Casel @end ifnothtml @* @@ -4453,11 +4539,11 @@ John Mandereau @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -4476,11 +4562,11 @@ up to date @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -4494,9 +4580,9 @@ not translated up to date @end ifnothtml @item -2.3 Unfretted string instruments +1.8 Text @* -(281) +(2729) @tab Till Paala @* @@ -4543,19 +4629,17 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave -@* -Matthieu Jacquot +@tab Jean-Charles Malahieude @* @ifhtml @html -Jean-Charles Malahieude +Valentin Villenave @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +Valentin Villenave @end ifnothtml @* @@ -4599,11 +4683,31 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -4622,11 +4726,7 @@ not translated @ifnothtml up to date @end ifnothtml -@item -2.4 Fretted string instruments -@* -(2640) -@tab Till Paala +@tab Yoshiki Sawada @* @ifhtml @@ -4649,7 +4749,11 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@item +2 Specialist notation +@* +(81) +@tab Till Paala @* @ifhtml @@ -4672,29 +4776,34 @@ translated @ifnothtml up to date @end ifnothtml -@tab Matthieu Jacquot +@tab Francisco Vila @* @ifhtml @html -Jean-Charles Malahieude +translated @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +translated @end ifnothtml @* @ifhtml @html - +up to date @end html @end ifhtml @ifnothtml - +up to date @end ifnothtml +@tab John Mandereau +@* +Jean-Charles Malahieude +@* + @ifhtml @html @@ -4709,50 +4818,43 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni @* @ifhtml @html -not translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -not translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@item -2.5 Percussion -@* -(806) -@tab Till Paala -@* +@end ifnothtml @ifhtml @html -translated +partially translated (2 %) @end html @end ifhtml @ifnothtml -translated +partially translated (2 %) @end ifnothtml @* @@ -4765,7 +4867,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Yoshiki Sawada @* @ifhtml @@ -4788,65 +4890,126 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave +@item +2.1 Vocal music +@* +(4758) +@tab Till Paala @* @ifhtml @html -Jean-Charles Malahieude +translated @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +translated @end ifnothtml @* @ifhtml @html -John Mandereau +up to date @end html @end ifhtml @ifnothtml -John Mandereau +up to date @end ifnothtml +@tab Francisco Vila @* @ifhtml @html - +translated @end html @end ifhtml @ifnothtml +translated +@end ifnothtml +@* + +@ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date @end ifnothtml +@tab Valentin Villenave +@* +Jean-Charles Malahieude +@* + @ifhtml @html -partially translated (46 %) +Jean-Jacques Gerbaud @end html @end ifhtml @ifnothtml -partially translated (46 %) +Jean-Jacques Gerbaud @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel @end ifnothtml -@tab Yoshiki Sawada @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -4858,6 +5021,29 @@ not translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -4866,10 +5052,10 @@ not translated up to date @end ifnothtml @item -2.6 Wind instruments +2.2 Keyboard and other multi-staff instruments @* -(312) -@tab Till Paala +(862) +@tab  Till Paala @* @ifhtml @@ -4917,7 +5103,7 @@ up to date @end ifnothtml @tab Valentin Villenave @* -Jean-Charles Malahieuse +Jean-Charles Malahieude @* @ifhtml @@ -4971,11 +5157,31 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -4987,6 +5193,29 @@ not translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -4995,9 +5224,9 @@ not translated up to date @end ifnothtml @item -2.7 Chord notation +2.3 Unfretted string instruments @* -(1855) +(281) @tab Till Paala @* @@ -5046,6 +5275,8 @@ up to date @end ifnothtml @tab Valentin Villenave @* +Matthieu Jacquot +@* @ifhtml @@ -5081,26 +5312,1169 @@ John Mandereau @ifhtml @html -partially translated (48 %) +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@item +2.4 Fretted string instruments +@* +(2675) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Matthieu Jacquot +@* + +@ifhtml + +@html +Jean-Charles Malahieude +@end html +@end ifhtml +@ifnothtml +Jean-Charles Malahieude +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml +@item +2.5 Percussion +@* +(812) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Valentin Villenave +@* +Jean-Charles Malahieude +@* + +@ifhtml + +@html +John Mandereau +@end html +@end ifhtml +@ifnothtml +John Mandereau +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@item +2.6 Wind instruments +@* +(321) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Valentin Villenave +@* +Jean-Charles Malahieude +@* + +@ifhtml + +@html +Jean-Charles Malahieude +@end html +@end ifhtml +@ifnothtml +Jean-Charles Malahieude +@end ifnothtml +@* + +@ifhtml + +@html +John Mandereau +@end html +@end ifhtml +@ifnothtml +John Mandereau +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@item +2.7 Chord notation +@* +(2022) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Valentin Villenave +@* +Jean-Charles Malahieude +@* + +@ifhtml + +@html +Jean-Charles Malahieude +@end html +@end ifhtml +@ifnothtml +Jean-Charles Malahieude +@end ifnothtml +@* + +@ifhtml + +@html +John Mandereau +@end html +@end ifhtml +@ifnothtml +John Mandereau +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@item +2.8 Contemporary music +@* +(475) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@item +2.9 Ancient notation +@* +(4752) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Yoshiki Sawada +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@item +2.10 World music +@* +(1446) +@tab Till Paala +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Francisco Vila +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Jacques Gerbaud +@* +Valentin Villenave +@* + +@ifhtml + +@html +Jean-Charles Malahieude +@end html +@end ifhtml +@ifnothtml +Jean-Charles Malahieude +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -partially translated (48 %) +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@tab Yoshiki Sawada -@* +@end ifnothtml @ifhtml @html @@ -5121,11 +6495,7 @@ not translated @ifnothtml up to date @end ifnothtml -@item -2.8 Contemporary music -@* -(475) -@tab Till Paala +@tab Yoshiki Sawada @* @ifhtml @@ -5148,7 +6518,11 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@item +3 General input and output +@* +(8701) +@tab Till Paala @* @ifhtml @@ -5165,25 +6539,23 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml -@tab John Mandereau -@* -Jean-Charles Malahieude +@tab Francisco Vila @* @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -5196,67 +6568,62 @@ not translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Jean-Charles Malahieude +@* +Valentin Villenave @* @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml -@item -2.9 Ancient notation -@* -(4752) -@tab Till Paala +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Francisco Vila -@* +@end ifnothtml @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -5269,40 +6636,44 @@ translated @ifnothtml up to date @end ifnothtml -@tab Jean-Charles Malahieude +@tab Yoshiki Sawada @* @ifhtml @html -partially translated (47 %) +translated @end html @end ifhtml @ifnothtml -partially translated (47 %) +translated @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml partially up to date @end ifnothtml -@tab Yoshiki Sawada +@item +4 Spacing issues +@* +(11234) +@tab Till Paala @* @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -5315,11 +6686,7 @@ not translated @ifnothtml up to date @end ifnothtml -@item -2.10 World music -@* -(1446) -@tab Till Paala +@tab Francisco Vila @* @ifhtml @@ -5342,7 +6709,9 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Frédéric Chiasson +@* +Jean-Charles Malahieude @* @ifhtml @@ -5365,19 +6734,17 @@ translated @ifnothtml up to date @end ifnothtml -@tab Jean-Jacques Gerbaud -@* -Valentin Villenave +@tab Federico Bruni @* @ifhtml @html -Jean-Charles Malahieude +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +Luca Rossetto Casel @end ifnothtml @* @@ -5393,22 +6760,22 @@ Jean-Charles Malahieude @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -5416,11 +6783,11 @@ partially up to date @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -5434,9 +6801,9 @@ not translated up to date @end ifnothtml @item -3 General input and output +5 Changing defaults @* -(7069) +(12679) @tab Till Paala @* @@ -5454,11 +6821,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -5483,92 +6850,82 @@ translated @ifnothtml up to date @end ifnothtml -@tab Jean-Charles Malahieude +@tab Valentin Villenave @* -Valentin Villenave +Jean-Charles Malahieude @* @ifhtml @html -translated +Gilles Thibault @end html @end ifhtml @ifnothtml -translated +Gilles Thibault @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Yoshiki Sawada -@* +@end ifnothtml @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml -@item -4 Spacing issues -@* -(11017) -@tab Till Paala +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Francisco Vila -@* +@end ifnothtml @ifhtml @html -partially translated (96 %) +not translated @end html @end ifhtml @ifnothtml -partially translated (96 %) +not translated @end ifnothtml @* @@ -5581,9 +6938,7 @@ partially translated (96 %) @ifnothtml up to date @end ifnothtml -@tab Frédéric Chiasson -@* -Jean-Charles Malahieude +@tab Yoshiki Sawada @* @ifhtml @@ -5600,23 +6955,27 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml -@tab Yoshiki Sawada +@item +A Notation manual tables +@* +(2177) +@tab Till Paala @* @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -5629,11 +6988,7 @@ not translated @ifnothtml up to date @end ifnothtml -@item -5 Changing defaults -@* -(12248) -@tab Till Paala +@tab Francisco Vila @* @ifhtml @@ -5656,17 +7011,19 @@ translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Frédéric Chiasson +@* +Jean-Charles Malahieude @* @ifhtml @html -translated +partially translated (95 %) @end html @end ifhtml @ifnothtml -translated +partially translated (95 %) @end ifnothtml @* @@ -5679,19 +7036,17 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave -@* -Jean-Charles Malahieude +@tab Federico Bruni @* @ifhtml @html -Gilles Thibault +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -Gilles Thibault +Luca Rossetto Casel @end ifnothtml @* @@ -5707,11 +7062,11 @@ Gilles Thibault @ifhtml @html -partially translated (31 %) +not translated @end html @end ifhtml @ifnothtml -partially translated (31 %) +not translated @end ifnothtml @* @@ -5748,9 +7103,9 @@ not translated up to date @end ifnothtml @item -A Notation manual tables +B Cheat sheet @* -(1989) +(252) @tab Till Paala @* @@ -5797,42 +7152,37 @@ translated @ifnothtml up to date @end ifnothtml -@tab Frédéric Chiasson -@* -Jean-Charles Malahieude +@tab Valentin Villenave @* @ifhtml @html -partially translated (85 %) +Jean-Charles Malahieude @end html @end ifhtml @ifnothtml -partially translated (85 %) +Jean-Charles Malahieude @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Yoshiki Sawada -@* +@end ifnothtml @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -5845,44 +7195,37 @@ not translated @ifnothtml up to date @end ifnothtml -@item -B Cheat sheet -@* -(252) -@tab Till Paala +@tab Federico Bruni @* @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab Francisco Vila -@* +@end ifnothtml @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -5895,37 +7238,44 @@ translated @ifnothtml up to date @end ifnothtml -@tab Valentin Villenave +@tab Yoshiki Sawada @* @ifhtml @html -Jean-Charles Malahieude +translated @end html @end ifhtml @ifnothtml -Jean-Charles Malahieude +translated @end ifnothtml @* @ifhtml @html - +up to date @end html @end ifhtml @ifnothtml +up to date +@end ifnothtml +@item +C GNU Free Documentation License +@* +(3724) +@tab Till Paala +@* -@end ifnothtml @ifhtml @html -translated +not translated @end html @end ifhtml @ifnothtml -translated +not translated @end ifnothtml @* @@ -5938,7 +7288,7 @@ translated @ifnothtml up to date @end ifnothtml -@tab Yoshiki Sawada +@tab Francisco Vila @* @ifhtml @@ -5961,11 +7311,9 @@ not translated @ifnothtml up to date @end ifnothtml -@item -C GNU Free Documentation License +@tab John Mandereau @* -(3724) -@tab Till Paala +Jean-Charles Malahieude @* @ifhtml @@ -5988,34 +7336,29 @@ not translated @ifnothtml up to date @end ifnothtml -@tab Francisco Vila +@tab Federico Bruni @* @ifhtml @html -not translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -not translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date -@end ifnothtml -@tab John Mandereau -@* -Jean-Charles Malahieude -@* +@end ifnothtml @ifhtml @html @@ -6062,7 +7405,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 +7413,7 @@ LilyPond Application Usage @tab es @tab fr @tab hu +@tab it @tab ja @item Section titles @@ -6169,6 +7513,49 @@ translated @ifnothtml partially up to date @end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Yoshiki Sawada @* @@ -6290,6 +7677,49 @@ translated @ifnothtml partially up to date @end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Yoshiki Sawada @* @@ -6316,7 +7746,7 @@ up to date @item 1 Running @command{lilypond} @* -(3622) +(4615) @tab Reinhold Kainhofer @* Till Paala @@ -6345,22 +7775,22 @@ Till Paala @ifhtml @html -translated +partially translated (98 %) @end html @end ifhtml @ifnothtml -translated +partially translated (98 %) @end ifnothtml @* @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -6434,23 +7864,66 @@ up to date @ifhtml @html -partially translated (96 %) +partially translated (95 %) @end html @end ifhtml @ifnothtml -partially translated (96 %) +partially translated (95 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml partially up to date @end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Yoshiki Sawada @* @@ -6477,7 +7950,7 @@ up to date @item 2 Updating files with @command{convert-ly} @* -(1189) +(1209) @tab Till Paala @* @@ -6584,12 +8057,55 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml partially up to date @end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Yoshiki Sawada @* @@ -6616,7 +8132,7 @@ up to date @item 3 Running @command{lilypond-book} @* -(3764) +(4137) @tab Reinhold Kainhofer @* @@ -6683,60 +8199,103 @@ translated @ifnothtml up to date @end ifnothtml -@tab Jean-Charles Malahieude +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Team-hu @* @ifhtml @html - +partially translated (13 %) @end html @end ifhtml @ifnothtml - +partially translated (13 %) @end ifnothtml @* @ifhtml @html - +partially up to date @end html @end ifhtml @ifnothtml - +partially up to date @end ifnothtml +@tab Federico Bruni +@* + @ifhtml @html -translated +Luca Rossetto Casel @end html @end ifhtml @ifnothtml -translated +Luca Rossetto Casel @end ifnothtml @* @ifhtml @html - + @end html @end ifhtml @ifnothtml @end ifnothtml -@tab Team-hu -@* - @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @@ -6755,27 +8314,27 @@ up to date @ifhtml @html -not translated +translated @end html @end ifhtml @ifnothtml -not translated +translated @end ifnothtml @* @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item 4 External programs @* -(2170) +(2390) @tab Till Paala @* Reinhold Kainhofer @@ -6863,6 +8422,49 @@ not translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -7037,6 +8639,49 @@ not translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -7158,6 +8803,49 @@ not translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Federico Bruni +@* + +@ifhtml + +@html +Luca Rossetto Casel +@end html +@end ifhtml +@ifnothtml +Luca Rossetto Casel +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -7207,7 +8895,7 @@ LilyPond -- Music notation for everyone @item Section titles @* -(585) +(616) @tab Pavel Fric @* @@ -7225,7 +8913,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7317,11 +9005,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Federico Bruni @* @@ -7360,11 +9048,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -7385,7 +9073,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7428,7 +9116,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7451,11 +9139,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @item LilyPond --- \TITLE\ @@ -7613,11 +9301,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -7681,11 +9369,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Ben Luo @* @@ -7713,7 +9401,7 @@ up to date @item Introduction @* -(4506) +(4753) @tab Pavel Fric @* @@ -7731,7 +9419,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7847,11 +9535,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Federico Bruni @* @@ -7915,11 +9603,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jan Nieuwenhuizen @* @@ -7958,7 +9646,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7979,7 +9667,7 @@ translated @item Download @* -(1183) +(1211) @tab Pavel Fric @* @@ -7997,7 +9685,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8111,11 +9799,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Federico Bruni @* @@ -8220,11 +9908,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Ben Luo @* @@ -8243,16 +9931,16 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @item Manuals @* -(1200) +(1214) @tab Pavel Fric @* @@ -8270,11 +9958,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Till Paala @* @@ -8382,11 +10070,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Federico Bruni @* @@ -8491,11 +10179,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Ben Luo @* @@ -8514,11 +10202,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @item A GNU Free Documentation License @@ -8794,25 +10482,25 @@ up to date @item Community @* -(1755) +(3006) @tab  Pavel Fric @* @ifhtml @html -translated +partially translated (96 %) @end html @end ifhtml @ifnothtml -translated +partially translated (96 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8835,11 +10523,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -8858,11 +10546,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jean-Charles Malahieude @* @@ -8903,11 +10591,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Harmath Dénes @* @@ -8915,22 +10603,22 @@ up to date @ifhtml @html -translated +partially translated (96 %) @end html @end ifhtml @ifnothtml -translated +partially translated (96 %) @end ifnothtml @* @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Federico Bruni @* @@ -8969,7 +10657,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8992,11 +10680,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jan Nieuwenhuizen @* @@ -9045,11 +10733,11 @@ up to date @ifhtml @html -translated +partially translated (96 %) @end html @end ifhtml @ifnothtml -translated +partially translated (96 %) @end ifnothtml @* diff --git a/Documentation/usage.tely b/Documentation/usage.tely index e2d2e7c3cd..cd13e6550c 100644 --- a/Documentation/usage.tely +++ b/Documentation/usage.tely @@ -21,7 +21,7 @@ LilyPond version @version{}. In addition, it suggests some @c `Usage' was born 1999-10-10 with git commit c82c30c... @macro copyrightDeclare -Copyright @copyright{} 1999--2011 by the authors. +Copyright @copyright{} 1999--2012 by the authors. @end macro @set FDL diff --git a/Documentation/usage/external.itely b/Documentation/usage/external.itely index 01e637bdc9..2eda953374 100644 --- a/Documentation/usage/external.itely +++ b/Documentation/usage/external.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node External programs @chapter External programs @@ -27,6 +27,17 @@ LilyPond can interact with other programs in various ways. @node Point and click @section Point and click +Point and click adds links to pdf documents for certain music +elements. + +@menu +* Enabling point and click:: +* Selective point-and-click:: +@end menu + +@node Enabling point and click +@unnumberedsubsec Enabling point and click + @cindex point and click Point and click lets you find notes in the input by clicking on them @@ -42,8 +53,8 @@ follow hyperlinks using the @file{lilypond-invoke-editor} script supplied with LilyPond. For Xpdf on UNIX, the following should be present in -@file{xpdfrc}@footnote{On UNIX, this file is found either in -@file{/etc/xpdfrc} or as @file{.xpdfrc} in your home directory.} +@file{xpdfrc}. On UNIX, this file is found either in +@file{/etc/xpdfrc} or as @file{$HOME/.xpdfrc}. @example urlCommand "lilypond-invoke-editor %s" @@ -114,6 +125,83 @@ lilypond -dno-point-and-click file.ly @warning{You should always turn off point and click in any LilyPond files to be distributed to avoid including path information about your computer in the .pdf file, which can pose a security risk.} + +@node Selective point-and-click +@unnumberedsubsec Selective point-and-click + +For some interactive applications, it may be desirable to only +include certain point-and-click items. For example, if somebody +wanted to create an application which played audio or video +starting from a particular note, it would be awkward if clicking +on the note produced the point-and-click location for an +accidental or slur which occurred over that note. + +This may be controlled by indicating which events to include: + +@itemize +@item +Hard-coded in the @file{.ly} file: + +@example +\pointAndClickTypes #'note-event +\relative c' @{ + c2\f( f) +@} +@end example + +or + +@example +#(ly:set-option 'point-and-click 'note-event) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Command-line: + +@example +lilypond -dpoint-and-click=note-event example.ly +@end example + +@end itemize + +Multiple events can be included: + +@itemize +@item +Hard-coded in the @file{.ly} file: + +@example +\pointAndClickTypes #'(note-event dynamic-event) +\relative c' @{ + c2\f( f) +@} +@end example + +or + +@example +#(ly:set-option 'point-and-click '(note-event dynamic-event)) +\relative c' @{ + c2\f( f) +@} +@end example + +@item +Command-line: + +@smallexample +lilypond \ + -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ + example.ly +@end smallexample + + +@end itemize + + @node Text editor support @section Text editor support @@ -239,7 +327,7 @@ for pitches, durations are only written when necessary. It is possible to record a MIDI file using a digital keyboard, and then convert it to @file{.ly}. However, human players are not rhythmically exact enough to make a MIDI to LY conversion trivial. -When invoked with quantizing (@code{-s} and @code{-d} options) +When invoked with quantizing (@option{-s} and @option{-d} options) @command{midi2ly} tries to compensate for these timing errors, but is not very good at this. It is therefore not recommended to use @command{midi2ly} for human-generated midi files. @@ -341,10 +429,17 @@ print usage and option summary. @item -l, --language=LANG use LANG for pitch names, e.g. 'deutsch' for note names in German. +@item --loglevel=@var{loglevel} +Set the output verbosity to @var{loglevel}. Possible values are @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (default) and @code{DEBUG}. + @item --lxml use the lxml.etree Python package for XML-parsing; uses less memory and cpu time. -@item --nd --no-articulation-directions +@item -m, --midi +activate midi-block. + +@item -nd --no-articulation-directions do not convert directions (@code{^}, @code{_} or @code{-}) for articulations, dynamics, etc. @@ -546,13 +641,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 @@ -579,7 +682,7 @@ explicit tempo markings, and the notes and durations themselves are produced in the output. The @emph{articulate} project is one attempt to get more of the -information in the score into he MIDI. It works by shortening +information in the score into MIDI. It works by shortening notes not under slurs, to @q{articulate} the notes. The amount of shortening depends on any articulation markings attached to a note: staccato halves the note value, tenuto gives a note its full diff --git a/Documentation/usage/latex-lilypond-example.latex b/Documentation/usage/latex-lilypond-example.latex index 8125748360..30d680c3a0 100644 --- a/Documentation/usage/latex-lilypond-example.latex +++ b/Documentation/usage/latex-lilypond-example.latex @@ -52,12 +52,12 @@ c' e' g' \end{verbatim} This C major -%%\begin{lilypond}[staffsize=11\pt,fragment] -\begin{lilypond}[11pt,fragment] +%%\begin{lilypond}[staffsize=11,fragment] +\begin{lilypond}[staffsize=11,fragment] \context Voice <> \end{lilypond} and C minor -\lilypond[fragment,11pt]{\context Voice <>} chords are floating inside the text. +\lilypond[fragment,staffsize=11]{\context Voice <>} chords are floating inside the text. \subsection{verb and verbatim} @@ -126,30 +126,30 @@ is not necessary when you want the music in a paragraph on its own. Itemize environment: \begin{itemize} \item -\lilypond[11pt,fragment]{ c'} do +\lilypond[staffsize=11,fragment]{ c'} do \item -\lilypond[11pt,fragment]{d'} re +\lilypond[staffsize=11,fragment]{d'} re \item -\lilypond[11pt,fragment]{e'} mi +\lilypond[staffsize=11,fragment]{e'} mi \item -\lilypond[11pt,fragment]{f'} fa +\lilypond[staffsize=11,fragment]{f'} fa \item -\lilypond[11pt,fragment]{g'} sol +\lilypond[staffsize=11,fragment]{g'} sol \end{itemize} Tables\footnote{ and footnote: -\lilypond[11pt,fragment]{c' e' g'} }: +\lilypond[staffsize=11,fragment]{c' e' g'} }: \marginpar{ Yes, even as marginpar -\lilypond[11pt,fragment]{c' d' e'} } +\lilypond[staffsize=11,fragment]{c' d' e'} } \begin{tabular}{|l|l|r|} \hline \em Notes & \em Name \\ \hline -\lilypond[11pt,fragment,filename="cdur"]{\context Voice <>} & major \\ -\lilypond[11pt,fragment]{\context Voice <>} & minor \\ -\lilypond[11pt,fragment]{\context Voice <>} & diminished \\ -\lilypond[11pt,fragment]{\context Voice <>} & augmented \\ +\lilypond[staffsize=11,fragment,filename="cdur"]{\context Voice <>} & major \\ +\lilypond[staffsize=11,fragment]{\context Voice <>} & minor \\ +\lilypond[staffsize=11,fragment]{\context Voice <>} & diminished \\ +\lilypond[staffsize=11,fragment]{\context Voice <>} & augmented \\ \hline \end{tabular} diff --git a/Documentation/usage/lilypond-book.itely b/Documentation/usage/lilypond-book.itely index 9d018275ef..6d497015fc 100644 --- a/Documentation/usage/lilypond-book.itely +++ b/Documentation/usage/lilypond-book.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @c Note: keep this node named so that `info lilypond-book' brings you here. @node lilypond-book @@ -26,24 +26,25 @@ substituted for the music. The line width and font size definitions for the music are adjusted to match the layout of your document. This is a separate program from @command{lilypond} itself, and is run -on the command line; for more information, see @ref{Command-line -usage}. If you have MacOS 10.3 or 10.4 and you have trouble running -@code{lilypond-book}, see @rweb{MacOS X}. +on the command line; for more information, see +@ref{Command-line usage}. If you have trouble running +@code{lilypond-book} on Windows or Mac OS X using the command line, then +see either @rweb{Windows} or @rweb{MacOS X}. This procedure may be applied to @LaTeX{}, HTML, Texinfo or DocBook documents. @cindex texinfo -@cindex latex +@cindex LaTex @cindex texinfo @cindex texi -@cindex html +@cindex HTML @cindex docbook -@cindex documents, adding music to -@cindex HTML, music in -@cindex Texinfo, music in -@cindex DocBook, music in -@cindex @LaTeX{}, music in +@cindex documents, adding music +@cindex HTML, adding music +@cindex Texinfo, adding music +@cindex DocBook, adding music +@cindex LaTeX, adding music @menu * An example of a musicological document:: @@ -98,9 +99,9 @@ Options are put in brackets. Larger examples can be put into a separate file, and introduced with \verb+\lilypondfile+. -\lilypondfile[quote,noindent]{screech-boink.ly} +\lilypondfile[quote,noindent]{screech-and-boink.ly} -(If needed, replace @file{screech-boink.ly} by any @file{.ly} file +(If needed, replace @file{screech-and-boink.ly} by any @file{.ly} file you put in the same directory as this file.) \end{document} @@ -128,7 +129,7 @@ xpdf lilybook Running @command{lilypond-book} and @command{latex} creates a lot of temporary files, which would clutter up the working directory. To -remedy this, use the @code{--output=@var{dir}} option. It will create +remedy this, use the @option{--output=@var{dir}} option. It will create the files in a separate subdirectory @file{dir}. Finally the result of the @LaTeX{} example shown above.@footnote{This @@ -157,7 +158,7 @@ c'4 f16 Larger examples can be put into a separate file, and introduced with @code{\lilypondfile}. -@lilypondfile[quote,noindent]{screech-boink.ly} +@lilypondfile[quote,noindent]{screech-and-boink.ly} If a @code{tagline} is required, either default or custom, then the entire snippet must be enclosed in a @code{\book @{ @}} construct. @@ -200,27 +201,44 @@ See @emph{The Not So Short Introduction to @LaTeX{}}} for an overview on how to use @LaTeX{}. -Music is entered using +@code{lilypond-book} provides the following commands and environments to +include music in @LaTeX{} files: + +@itemize + +@item +the @code{\lilypond@{...@}} command, where you can directly enter short +lilypond code + +@item +the @code{\begin@{lilypond@}...\end@{lilypond@}} environment, where you +can directly enter longer lilypond code + +@item +the @code{\lilypondfile@{...@}} command to insert a lilypond file + +@item +the @code{\musicxmlfile@{...@}} command to insert a MusicXML file, which +will be processed by @code{musicxml2ly} and @code{lilypond}. + +@end itemize + +In the input file, music is specified with any of the following commands: @example \begin@{lilypond@}[options,go,here] YOUR LILYPOND CODE \end@{lilypond@} -@end example -@noindent -or +\lilypond[options,go,here]@{ YOUR LILYPOND CODE @} -@example \lilypondfile[options,go,here]@{@var{filename}@} + +\musicxmlfile[options,go,here]@{@var{filename}@} @end example -@noindent -or -@example -\lilypond[options,go,here]@{ YOUR LILYPOND CODE @} -@end example +@noindent Additionally, @code{\lilypondversion} displays the current version of lilypond. @@ -397,26 +415,40 @@ 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 +@code{lilypond-book} provides the following commands and environments to +include music into Texinfo files: + +@itemize + +@item +the @code{@@lilypond@{...@}} command, where you can directly enter short +lilypond code + +@item +the @code{@@lilypond...@@end lilypond} environment, where you can directly +enter longer lilypond code + +@item +the @code{@@lilypondfile@{...@}} command to insert a lilypond file + +@item +the @code{@@musicxmlfile@{...@}} command to insert a MusicXML file, which +will be processed by @code{musicxml2ly} and @code{lilypond}. + +@end itemize + +In the input file, music is specified with any of the following commands @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}@} + +@@musicxmlfile[options,go,here]@{@var{filename}@} @end example Additionally, @code{@@lilypondversion} displays the current version @@ -461,8 +493,43 @@ in-line image. It always gets a paragraph of its own. @node HTML @subsection HTML -Music is entered using +@code{lilypond-book} provides the following commands and environments to +include music in HTML files: + +@itemize + +@item +the @code{} command, where you can directly enter short +lilypond code + +@item +the @code{...} environment, where you can directly +enter longer lilypond code + +@item +the @code{...} command to insert a lilypond file + +@item +the @code{...} command to insert a MusicXML +file, which will be processed by @code{musicxml2ly} and @code{lilypond}. + +@end itemize + +In the input file, music is specified with any of the following commands: +@example + + YOUR LILYPOND CODE + + + + +@var{filename} + +@var{filename} +@end example + +For example, you can write @example \key c \minor c4 es g2 @@ -490,6 +557,9 @@ To include separate files, say @var{filename} @end example +@code{} uses the same syntax as @code{}, but +simply references a MusicXML file rather than a LilyPond file. + For a list of options to use with the @code{lilypond} or @code{lilypondfile} tags, see @ref{Music fragment options}. @@ -590,11 +660,9 @@ 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. +@code{ragged-right = ##t} is added to the LilyPond snippet. Single-line +snippets will always be typeset by default as ragged-right, unless +@code{noragged-right} is explicitly given. @item noragged-right For single-line snippets, allow the staff length to be stretched to @@ -726,7 +794,9 @@ as a domain. 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. +contents as a documentation block right before the music snippet (but +outside the @code{example} environment generated by a @code{quote} +option). Assuming the file @file{foo.ly} contains @@ -762,13 +832,6 @@ 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 @@ -845,9 +908,22 @@ 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 +twocolumn mode, remember to add @option{-t landscape} to the @command{dvips} options. +@knownissues +The @code{\pageBreak} command will not work within a +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}} environment. + +Many @code{\paper} block variables will also not work within a +@code{\begin@{lilypond@} @dots{} \end@{lilypond@}} environment. Use +@code{\newcommand} with @code{\betweenLilyPondSystem} in the preamble; + +@example +\newcommand@{\betweenLilyPondSystem@}[1]@{\vspace@{36mm@}\linebreak@} +@end example + + @subsubheading Texinfo To produce a Texinfo document (in any output format), follow the normal @@ -902,7 +978,14 @@ 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. +@command{latex} with the same @option{-I @var{dir}} options. + +@item -l @var{loglevel} +@itemx --loglevel=@var{loglevel} +Set the output verbosity to @var{loglevel}. Possible values are @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (default) and @code{DEBUG}. If +this option is not used, and the environment variable +@code{LILYPOND_BOOK_LOGLEVEL} is set, its value is used as the loglevel. @item -o @var{dir} @itemx --output=@var{dir} @@ -927,10 +1010,19 @@ 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} +Write lily-XXX files to directory @var{dir}, link into @option{--output} directory. Use this option to save building time for documents in different directories which share a lot of identical snippets. +@itemx --lily-loglevel=@var{loglevel} +Set the output verbosity of the invoked @command{lilypond} calls to +@var{loglevel}. Possible values are @code{NONE}, @code{ERROR}, +@code{WARNING}, @code{BASIC_PROGRESS}, @code{PROGRESS}, @code{INFO} +(default) and @code{DEBUG}. If this option is not used, and the +environment variable @code{LILYPOND_LOGLEVEL} is set, its value is used +as the loglevel. + + @itemx --info-images-dir=@var{dir} Format Texinfo output so that Info will look for images of music in @var{dir}. @@ -953,27 +1045,33 @@ 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. +@code{lilypond}. @code{lilypond-book} will not @option{--filter} and +@option{--process} at the same time. @item --pdf Create PDF files for use with PDF@LaTeX{}. +@item --redirect-lilypond-output +By default, output is displayed on the terminal. This option redirects +all output to log files in the same directory as the source files. + @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. +and only if directories implied by @option{--output-dir} and +@option{--lily-output-dir} options are different. @item -V @itemx --verbose -Be verbose. +Be verbose. This is equivalent to @code{--loglevel=DEBUG}. @item -v @itemx --version Print version information. @end table + + @knownissues The Texinfo command @code{@@pagesizes} is not interpreted. Similarly, @@ -1013,7 +1111,7 @@ selects the output format based on the input filename's extension. 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 +directory, you must use @option{--output} option to make @command{lilypond-book} running, otherwise it will exit with an error message like @qq{Output would overwrite input file}. diff --git a/Documentation/usage/running.itely b/Documentation/usage/running.itely index 4d32d67e50..db31e43471 100644 --- a/Documentation/usage/running.itely +++ b/Documentation/usage/running.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Running lilypond @@ -53,7 +53,8 @@ if you are unfamiliar with the command-line. @menu * Invoking lilypond:: -* Command line options for lilypond:: +* Basic command line options for LilyPond:: +* Advanced command line options for LilyPond:: * Environment variables:: * LilyPond in chroot jail:: @end menu @@ -121,8 +122,8 @@ options, or if the syntax is different. Note that these are shell commands and have nothing to do with lilypond. -@node Command line options for lilypond -@unnumberedsubsec Command line options for @command{lilypond} +@node Basic command line options for LilyPond +@unnumberedsubsec Basic command line options for LilyPond @cindex Invoking @command{lilypond} @cindex command line options for @command{lilypond} @@ -133,9 +134,15 @@ The following options are supported: @table @code +@item -d,--define-default=@var{var}=@var{val} +See @ref{Advanced command line options for LilyPond}. + +@cindex Scheme, expression evaluation +@cindex expression evaluation, Scheme + @item -e,--evaluate=@var{expr} Evaluate the Scheme @var{expr} before parsing any @file{.ly} files. -Multiple @code{-e} options may be given, they will be evaluated +Multiple @option{-e} options may be given, they will be evaluated sequentially. The expression will be evaluated in the @code{guile-user} module, so @@ -155,283 +162,534 @@ on the command-line, and include @noindent at the top of the @code{.ly} file. +@warning{Windows users must use double quotes instead of single quotes.} + +@cindex output, format +@cindex format, output + @item -f,--format=@var{format} which formats should be written. Choices for @code{format} are @code{ps}, @code{pdf}, and @code{png}. Example: @code{lilypond -fpng @var{filename}.ly} +@item -h,--help +Show a summary of usage. +@item -H,--header=@var{FIELD} +Dump a header field to file @file{BASENAME.@var{FIELD}}. -@item -d,--define-default=@var{var}=@var{val} -This sets the internal program option @var{var} to the Scheme value -@var{val}. If @var{val} is not supplied, then @var{#t} is used. To -switch off an option, @code{no-} may be prefixed to @var{var}, e.g. +@item -i,--init=@var{file} +Set init file to @var{file} (default: @file{init.ly}). -@cindex point and click, command line +@cindex file searching +@cindex search path -@example --dno-point-and-click -@end example +@item -I, --include=@var{directory} +Add @var{directory} to the search path for input files. -@noindent -is the same as -@example --dpoint-and-click='#f' -@end example +Multiple -I options may be given. The search will start in the first +defined directory, and if the file to be included is not found the +search will continue in subsequent directories. -Here are a few interesting options. +@cindex chroot jail, running inside -@cindex help, command line +@item -j,--jail=@var{user},@var{group},@var{jail},@var{dir} +Run @command{lilypond} in a chroot jail. -@table @samp -@item help -Running @code{lilypond -dhelp} will print all of the @code{-d} options -available. +The @option{--jail} option provides a more flexible alternative to +@option{-dsafe}, when LilyPond formatting is being provided via a web +server, or whenever LilyPond executes commands sent by external sources +(see @ref{Advanced command line options for LilyPond}). + +It works by changing the root of @command{lilypond} to @var{jail} just +before starting the actual compilation process. The user and group are +then changed to match those provided, and the current directory is +changed to @var{dir}. This setup guarantees that it is not possible (at +least in theory) to escape from the jail. Note that for @option{--jail} +to work, @command{lilypond} must be run as root, which is usually +accomplished in a safe way using @command{sudo}. -@cindex paper-size, command line +Setting up a jail can be a relatively complex matter, as we must be sure +that LilyPond is able to find whatever it needs to compile the source +@emph{inside} the jail itself. A typical chroot jail will comprise the +following steps: -@item paper-size -This option sets the default paper-size, -@example --dpaper-size=\"letter\" -@end example +@table @asis -@noindent -Note that the string must be enclosed in escaped quotes ( @code{\"} ). -@c Match " in previous line to help context-sensitive editors +@item Setting up a separate filesystem +A separate filesystem should be created for LilyPond, so that it can be +mounted with safe options such as @code{noexec}, @code{nodev}, and +@code{nosuid}. In this way, it is impossible to run executables or to +write directly to a device from LilyPond. If you do not want to create a +separate partition, just create a file of reasonable size and use it to +mount a loop device. A separate filesystem also guarantees that LilyPond +cannot write more space than it is allowed. -@cindex safe, command line +@item Setting up a separate user +A separate user and group (say, @code{lily}/@code{lily}) with low +privileges should be used to run LilyPond inside the jail. There should +be a single directory writable by this user, which should be passed in +@var{dir}. -@item safe -Do not trust the @code{.ly} input. +@item Preparing the jail +LilyPond needs to read a number of files while running. All these files +are to be copied into the jail, under the same path they appear in the +real root filesystem. The entire content of the LilyPond installation +(e.g., @file{/usr/share/lilypond}) should be copied. -When LilyPond formatting is available through a web server, either the -@code{--safe} or the @code{--jail} option @b{MUST} be passed. The -@code{--safe} option will prevent inline Scheme code from wreaking -havoc, for example +If problems arise, the simplest way to trace them down is to run +LilyPond using @command{strace}, which will allow you to determine which +files are missing. -@quotation -@verbatim -#(system "rm -rf /") -{ - c4^#(ly:export (ly:gulp-file "/etc/passwd")) -} -@end verbatim -@end quotation +@item Running LilyPond +In a jail mounted with @code{noexec} it is impossible to execute any +external program. Therefore LilyPond must be run with a backend that +does not require any such program. As we have already mentioned, it +must be run with superuser privileges (which, of course, it will lose +immediately), possibly using @command{sudo}. It is also good practice +to limit the number of seconds of CPU time LilyPond can use (e.g., using +@command{ulimit@tie{}-t}), and, if your operating system supports it, +the amount of memory that can be allocated. Also see +@ref{LilyPond in chroot jail}. +@end table -The @code{-dsafe} option works by evaluating in-line Scheme -expressions in a special safe module. This safe module is derived from -GUILE @file{safe-r5rs} module, but adds a number of functions of the -LilyPond API. These functions are listed in @file{scm/safe-lily.scm}. +@cindex loglevel +@cindex output, verbosity -In addition, safe mode disallows @code{\include} directives and -disables the use of backslashes in @TeX{} strings. +@item -l,--loglevel=@var{LEVEL} +Set the verbosity of the console output to @var{LEVEL}. Possible values +are: -In safe mode, it is not possible to import LilyPond variables -into Scheme. +@table @code -@code{-dsafe} does @emph{not} detect resource overuse. It is still possible to -make the program hang indefinitely, for example by feeding cyclic data -structures into the backend. Therefore, if using LilyPond on a -publicly accessible webserver, the process should be limited in both -CPU and memory usage. +@item NONE +No output at all, not even error messages. -The safe mode will prevent many useful LilyPond snippets from being -compiled. The @code{--jail} is a more secure alternative, but -requires more work to set up. +@item ERROR +Only error messages, no warnings or progress messages. -@cindex output format, setting -@item backend -the output format to use for the back-end. Choices for @code{format} are -@table @code -@item ps -@cindex PostScript output - for PostScript. +@item WARN +Warnings and error messages, no progress. - Postscript files include TTF, Type1 and OTF fonts. No subsetting of - these fonts is done. When using oriental character sets, this can - lead to huge files. +@item BASIC_PROGRESS +Basic progress messages (success), warnings and errors. -@item eps +@item PROGRESS +All progress messages, warnings and errors. -@cindex Postscript, encapsulated -@cindex EPS (Encapsulated PostScript) +@item INFO (default) +Progress messages, warnings, errors and further execution information. - for encapsulated PostScript. This dumps every page (system) as a separate -@file{EPS} file, without fonts, and as one collated @file{EPS} file with -all pages (systems) including fonts. +@item DEBUG +All possible messages, including verbose debug output. -This mode is used by default by @command{lilypond-book}. +@end table -@item svg +@cindex directory, redirect output +@cindex output, setting filename +@cindex output, directory -@cindex SVG (Scalable Vector Graphics) +@item -o,--output=@var{FILE} or @var{FOLDER} +Set the default output file to @var{FILE} or, if a folder with that name +exists, direct the output to @var{FOLDER}, taking the file name from the +input file. The appropriate suffix will be added (e.g. @code{.pdf} for +pdf) in both cases. - for SVG (Scalable Vector Graphics). +@cindex PS (Postscript), output +@cindex Postscript (PS), output +@cindex output, PS (Postscript) - This creates a single SVG file, without embedded fonts, for every - page of output. It is recommended to install the Century - Schoolbook fonts, included with your LilyPond installation, for - optimal rendering. Under UNIX, simply copy these fonts from the - LilyPond directory (typically - @file{/usr/share/lilypond/VERSION/fonts/otf/}) to - @file{~/.fonts/}. The SVG output should be compatible with any - SVG editor or user agent. +@item --ps +Generate PostScript. -@item scm +@cindex PNG (Portable Network Graphics), output +@cindex output, PNG (Portable Network Graphics) -@cindex Scheme dump +@item --png +Generate pictures of each page, in PNG format. This implies +@option{--ps}. The resolution in DPI of the image may be set with +@example +-dresolution=110 +@end example - for a dump of the raw, internal Scheme-based drawing commands. +@cindex PDF (Portable Document Format), output +@cindex output, PDF (Portable Document Format) -@item null - do not output a printed score; has the same effect as @code{-dno-print-pages}. -@end table +@item --pdf +Generate PDF. This implies @option{--ps}. -Example: @code{lilypond -dbackend=svg @var{filename}.ly} +@item -v,--version +Show version information. -@item preview -@cindex preview, command line -Generate an output file containing the titles and the first system -of music. If @code{\bookpart} blocks are used, the titles and -first system of every @code{\bookpart} will appear in the output. -The @code{ps}, @code{eps}, and @code{svg} backends support this -option. +@item -V,--verbose +Be verbose: show full paths of all files read, and give timing +information. -@item print-pages -Generate the full pages, the default. @code{-dno-print-pages} is -useful in combination with @code{-dpreview}. +@item -w,--warranty +Show the warranty with which GNU LilyPond comes. (It comes with +@strong{NO WARRANTY}!) @end table +@node Advanced command line options for LilyPond +@unnumberedsubsec Advanced command line options for LilyPond -@item -h,--help -Show a summary of usage. +@table @code -@item -H,--header=@var{FIELD} -Dump a header field to file @file{BASENAME.@var{FIELD}}. +@item -d@var{[option-name]}=@var{[value]},--define-default=@var{[option-name]}=@var{[value]} +This sets the equivalent internal Scheme function to @var{value}. If a +@var{value} is not supplied, then the default value is used. The prefix +@code{no-} may be added to @var{option-name} to switch @q{off} an +option, e.g. -@cindex file searching -@cindex search path -@item --include, -I=@var{directory} -Add @var{directory} to the search path for input files. +@cindex point and click, command line -Multiple -I options may be given. The search will start in the -first defined directory, and if the file to be included is not -found the search will continue in subsequent directories. +@example +-dpoint-and-click=#f +@end example -@item -i,--init=@var{file} -Set init file to @var{file} (default: @file{init.ly}). +@noindent +is the same as +@example +-dno-point-and-click +@end example +@end table -@cindex folder, directing output to -@cindex output filename, setting +@noindent The following are supported along with their respective +default values: -@item -o,--output=@var{FILE} or @var{FOLDER} -Set the default output file to @var{FILE} or, if a folder with -that name exists, direct the output to @var{FOLDER}, taking the -file name from the input file. The appropriate suffix will be -added (e.g. @code{.pdf} for pdf) in both cases. +@multitable @columnfractions .33 .16 .51 +@item @strong{Symbol} +@tab @strong{Value} +@tab @strong{Explanation/Options} +@item @code{anti-alias-factor} +@tab @code{1} +@tab Render at higher resolution (using given factor) and scale down +result to prevent @q{jaggies} in @code{PNG} images. -@cindex PostScript output +@item @code{aux-files} +@tab @code{#t} +@tab Create @code{.tex}, @code{.texi}, @code{.count} files in the +@code{EPS} backend. -@item --ps -Generate PostScript. +@item @code{backend} +@tab @code{'ps} +@tab Select backend. Postscript files (default) include @code{TTF}, +@code{Type1} and @code{OTF} fonts. No subsetting of these fonts is +done. Using @q{oriental} character sets can lead to very large files. -@cindex Portable Network Graphics (PNG) output +@item +@tab @code{'eps} +@tab Encapsulated PostScript. This dumps every page (system) as a +separate @file{EPS} file, without fonts, and as one collated @file{EPS} +file with all pages (systems) including fonts. Used as default by +@command{lilypond-book}. -@item --png -Generate pictures of each page, in PNG format. This implies -@code{--ps}. The resolution in DPI of the image may be set with -@example --dresolution=110 -@end example +@item +@tab @code{'null} +@tab Do not output a printed score; has the same effect as +@code{-dno-print-pages}. -@cindex Portable Document Format (PDF) output +@item +@tab @code{'svg} +@tab Scalable Vector Graphics. This creates a single @code{SVG} file, +without embedded fonts, for every page of output. It is recommended to +install the Century Schoolbook fonts, included with your LilyPond +installation, for optimal rendering. Under UNIX, simply copy these +fonts from the LilyPond directory (typically +@file{/usr/share/lilypond/VERSION/fonts/otf/}) to @file{~/.fonts/}. The +@code{SVG} output should be compatible with any SVG editor or user +agent. There is also an option @code{svg-woff} (below) for use of woff +font files in the SVG backend. -@item --pdf -Generate PDF. This implies @code{--ps}. +@item +@tab @code{'scm} +@tab Dump of the raw, internal Scheme-based drawing commands. + +@item @code{check-internal-types} +@tab @code{#f} +@tab Check every property assignment for types. + +@item @code{clip-systems} +@tab @code{#f} +@tab Generate cut-out snippets of a score. + +@item @code{datadir} +@tab +@tab Prefix for data files (read-only). + +@item @code{debug-gc} +@tab @code{#f} +@tab Dump memory debugging statistics. + +@item @code{debug-gc-assert-parsed-dead} +@tab @code{#f} +@tab For memory debugging: Ensure that all references to parsed objects +are dead. This is an internal option, and is switched on automatically +for @code{`-ddebug-gc'}. + +@item @code{debug-lexer} +@tab @code{#f} +@tab Debug the flex lexer. + +@item @code{debug-page-breaking-scoring} +@tab @code{#f} +@tab Dump scores for many different page breaking configurations. + +@item @code{debug-parser} +@tab @code{#f} +@tab Debug the bison parser. + +@item @code{debug-property-callbacks} +@tab @code{#f} +@tab Debug cyclic callback chains. + +@item @code{debug-skylines} +@tab @code{#f} +@tab Debug skylines. + +@item @code{delete-intermediate-files} +@tab @code{#t} +@tab Delete the unusable, intermediate @code{.ps} files created during +compilation. + +@item @code{dump-cpu-profile} +@tab @code{#f} +@tab Dump timing information (system-dependent). + +@item @code{dump-profile} +@tab @code{#f} +@tab Dump memory and time information for each file. + +@item @code{dump-signatures} +@tab @code{#f} +@tab Dump output signatures of each system. Used for regression testing. + +@item @code{eps-box-padding} +@tab @code{#f} +@tab Pad left edge of the output EPS bounding box by the given amount +(in mm). + +@item @code{gs-load-fonts} +@tab @code{#f} +@tab Load fonts via Ghostscript. + +@item @code{gs-load-lily-fonts} +@tab @code{#f} +@tab Load only the LilyPond fonts via Ghostscript. + +@item @code{gui} +@tab @code{#f} +@tab Runs silently and redirect all output to a log file. +@end multitable +@noindent +@strong{Note to Windows users:} By default @code{lilypond.exe} outputs +all progress information to the command window, +@code{lilypond-windows.exe} does not and returns a prompt, with no +progress information, immediately at the command line. The +@option{-dgui} option can be used in this case to redirect output to a +log file. + +@multitable @columnfractions .33 .16 .51 +@item @code{help} +@tab @code{#f} +@tab Show this help. + +@item @code{include-book-title-preview} +@tab @code{#t} +@tab Include book titles in preview images. + +@item @code{include-eps-fonts} +@tab @code{#t} +@tab Include fonts in separate-system EPS files. + +@item @code{include-settings} +@tab @code{#f} +@tab Include file for global settings, this is included before the score +is processed. + +@item @code{job-count} +@tab @code{#f} +@tab Process in parallel, using the given number of jobs. + +@item @code{log-file} +@tab @code{#f [file]} +@tab If string @code{FOO} is given as a second argument, +redirect output to the log file @code{FOO.log}. + +@item @code{max-markup-depth} +@tab @code{1024} +@tab Maximum depth for the markup tree. If a markup has more levels, +assume it will not terminate on its own, print a warning and return a +null markup instead. + +@item @code{midi-extension} +@tab @code{"midi"} +@tab Set the default file extension for MIDI output file to given +string. + +@item @code{music-strings-to-paths} +@tab @code{#f} +@tab Convert text strings to paths when glyphs belong to a music font. + +@item @code{old-relative} +@tab @code{#f} +@tab Make @code{\relative} mode for simultaneous music work similar to +chord syntax. + +@item @code{paper-size} +@tab @code{\"a4\"} +@tab Set default paper size. Note the string must be enclosed in +escaped double quotes. + +@item @code{pixmap-format} +@tab @code{png16m} +@tab Set GhostScript's output format for pixel images. + +@item @code{point-and-click} +@tab @code{#f} +@tab Add @q{point & click} links to @code{PDF} output. See +@ref{Point and click}. + +@item @code{preview} +@tab @code{#f} +@tab Create preview images in addition to normal output. +@end multitable +@noindent +This option is supported by all backends; @code{pdf}, @code{png}, +@code{ps}, @code{eps} and @code{svg}, but not @code{scm}. It generates +an output file, in the form @code{myFile.preview.extension}, containing +the titles and the first system of music. If @code{\book} or +@code{\bookpart} blocks are used, the titles of @code{\book}, +@code{\bookpart} or @code{\score} will appear in the output, including +the first system of every @code{\score} block if the @code{\paper} +variable @code{print-all-headers} is set to @code{#t}. + +To suppress the usual output, use the @option{-dprint-pages} or +@option{-dno-print-pages} options according to your requirements. + +@multitable @columnfractions .33 .16 .51 +@item @code{print-pages} +@tab @code{#t} +@tab Generate full pages, the default. @option{-dno-print-pages} is +useful in combination with @option{-dpreview}. + +@item @code{profile-property-accesses} +@tab @code{#f} +@tab Keep statistics of @code{get_property()} function calls. + +@item @code{protected-scheme-parsing} +@tab @code{#t} +@tab Continue when errors in inline scheme are caught in the parser. If +set to @code{#f}, halt on errors and print a stack trace. + +@item @code{read-file-list} +@tab @code{#f [file]} +@tab Specify name of a file which contains a list of input files to be +processed. + +@item @code{relative-includes} +@tab @code{#f} +@tab When processing an @code{\include} command, look for the included +file relative to the current file (instead of the root file). + +@item @code{resolution} +@tab @code{101} +@tab Set resolution for generating @code{PNG} pixmaps to given value (in +dpi). + +@item @code{safe} +@tab @code{#f} +@tab Do not trust the @code{.ly} input. +@end multitable -@item -j,--jail=@var{user},@var{group},@var{jail},@var{dir} -Run @command{lilypond} in a chroot jail. +@noindent +When LilyPond formatting is available through a web server, either the +@option{--safe} or the @option{--jail} option @b{MUST} be passed. The +@option{--safe} option will prevent inline Scheme code from wreaking +havoc, e.g, -The @code{--jail} option provides a more flexible alternative to -@code{--safe} when LilyPond formatting is available through a web -server or whenever LilyPond executes externally provided -sources. - -The @code{--jail} option works by changing the root of @command{lilypond} to -@var{jail} just before starting the actual compilation process. The user -and group are then changed to match those provided, and the current -directory is changed to @var{dir}. This setup guarantees that it is not -possible (at least in theory) to escape from the jail. Note that for -@code{--jail} to work @command{lilypond} must be run as root, which is usually -accomplished in a safe way using @command{sudo}. +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^$(ly:gulp-file "/etc/passwd") +} +@end verbatim +@end quotation -Setting up a jail is a slightly delicate matter, as we must be sure that -LilyPond is able to find whatever it needs to compile the source -@emph{inside the jail}. A typical setup comprises the following items: +The @option{-dsafe} option works by evaluating in-line Scheme +expressions in a special safe module. This is derived from GUILE +@file{safe-r5rs} module, but also adds a number of functions of the +LilyPond API which are listed in @file{scm/safe-lily.scm}. -@table @asis -@item Setting up a separate filesystem -A separate filesystem should be created for LilyPond, so that it can be -mounted with safe options such as @code{noexec}, @code{nodev}, and -@code{nosuid}. In this way, it is impossible to run executables or to -write directly to a device from LilyPond. If you do not want to create a -separate partition, just create a file of reasonable size and use it to -mount a loop device. A separate filesystem also guarantees that LilyPond -cannot write more space than it is allowed. +In addition, safe mode disallows @code{\include} directives and +disables the use of backslashes in @TeX{} strings. It is also not +possible to import LilyPond variables into Scheme while in safe mode. -@item Setting up a separate user -A separate user and group (say, @code{lily}/@code{lily}) with low -privileges should be used to run LilyPond inside the jail. There should -be a single directory writable by this user, which should be passed in -@var{dir}. +@option{-dsafe} does @emph{not} detect resource overuse, so it is still +possible to make the program hang indefinitely, for example by feeding +cyclic data structures into the backend. Therefore, if using LilyPond +on a publicly accessible webserver, the process should be limited in +both CPU and memory usage. -@item Preparing the jail -LilyPond needs to read a number of files while running. All these files -are to be copied into the jail, under the same path they appear in the -real root filesystem. The entire content of the LilyPond installation -(e.g., @file{/usr/share/lilypond}) -should be copied. +Safe mode will prevent many useful LilyPond snippets from being +compiled. -If problems arise, the simplest way to trace them down is to run -LilyPond using @command{strace}, which will allow you to determine which -files are missing. +The @option{--jail} is an even more secure alternative, but requires +more work to set up. See @ref{Basic command line options for LilyPond}. -@item Running LilyPond -In a jail mounted with @code{noexec} it is impossible to execute any external -program. Therefore LilyPond must be run with a backend that does not -require any such program. As we already mentioned, it must be also run -with superuser privileges (which, of course, it will lose immediately), -possibly using @command{sudo}. It is a good idea to limit the number of -seconds of CPU time LilyPond can use (e.g., using @command{ulimit --t}), and, if your operating system supports it, the amount of memory -that can be allocated. -@end table +@multitable @columnfractions .33 .16 .51 +@item @code{separate-log-files} +@tab @code{#f} +@tab For input files @code{FILE1.ly}, @code{FILE2.ly}, etc. output log +data to files @code{FILE1.log}, @code{FILE2.log}, ... +@item @code{show-available-fonts} +@tab @code{#f} +@tab List available font names. -@item -v,--version -Show version information. +@item @code{strict-infinity-checking} +@tab @code{#f} +@tab Force a crash on encountering @code{Inf} and @code{NaN} floating +point exceptions. -@item -V,--verbose -Be verbose: show full paths of all files read, and give timing -information. +@item @code{strip-output-dir} +@tab @code{#t} +@tab Don't use directories from input files while constructing output +file names. -@item -w,--warranty -Show the warranty with which GNU LilyPond comes. (It comes with -@strong{NO WARRANTY}!) -@end table +@item @code{svg-woff} +@tab @code{#f} +@tab Use woff font files in SVG backend. + +@item @code{trace-memory-frequency} +@tab @code{#f} +@tab Record Scheme cell usage this many times per second. Dump the +results to @code{FILE.stacks} and @code{FILE.graph}. + +@item @code{trace-scheme-coverage} +@tab @code{#f} +@tab Record coverage of Scheme files in @code{FILE.cov}. + +@item @code{verbose} +@tab @code{#f} +@tab Verbose output, i.e. loglevel at DEBUG (read-only). + +@item @code{warning-as-error} +@tab @code{#f} +@tab Change all warning and @q{programming error} messages into errors. +@end multitable @node Environment variables @unnumberedsubsec Environment variables - @cindex LANG @cindex LILYPOND_DATADIR @@ -445,6 +703,10 @@ subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc. @item LANG This selects the language for the warning messages. +@item LILYPOND_LOGLEVEL +The default loglevel. If LilyPond is called without an explicit loglevel +(i.e. no @option{--loglevel} command line option), this value is used. + @item LILYPOND_GC_YIELD A variable, as a percentage, that tunes memory management behavior. A higher values means the program uses more memory, a @@ -459,7 +721,7 @@ smaller value means more CPU time is used. The default value is Setting up the server to run LilyPond in a chroot jail is a complicated task. The steps are listed below. Examples in the steps are from -Ubuntu Linux, and may require the use of @code{sudo} as appropriate. +Ubuntu GNU/Linux, and may require the use of @code{sudo} as appropriate. @itemize @@ -472,8 +734,8 @@ adduser lily @end example @noindent -This will create a new group for the @code{lily} user as well, and a home folder, -@code{/home/lily} +This will create a new group for the @code{lily} user as well, and a +home folder, @code{/home/lily} @item In the home folder of the @code{lily} user create a file to use as a separate filesystem: @@ -602,8 +864,8 @@ happens rarely. The most usual cause is misinstalled fonts. @cindex call trace @cindex Scheme error Errors that occur while executing Scheme code are caught by the Scheme -interpreter. If running with the verbose option (@code{-V} or -@code{--verbose}) then a call trace of the offending +interpreter. If running with the verbose option (@option{-V} or +@option{--verbose}) then a call trace of the offending function call is printed. @item Programming error @@ -621,9 +883,8 @@ send a bug-report. @end table @cindex errors, message format -If warnings and errors can -be linked to some part of the input file, then error messages have the -following form +If warnings and errors can be linked to some part of the input file, +then error messages have the following form @example @var{filename}:@var{lineno}:@var{columnno}: @var{message} @@ -780,7 +1041,7 @@ mismatched quote will usually be on the line one or two above. @unnumberedsubsec Error message Unbound variable % This error message will appear at the bottom of the console -output or log file together with a @qq{GUILE signalled an error ...} +output or log file together with a @qq{GUILE signalled an error @dots{}} message every time a Scheme routine is called which (invalidly) contains a @emph{LilyPond} rather than a @emph{Scheme} comment. diff --git a/Documentation/usage/suggestions.itely b/Documentation/usage/suggestions.itely index 085d455803..24a7bb2e76 100644 --- a/Documentation/usage/suggestions.itely +++ b/Documentation/usage/suggestions.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Suggestions for writing files @chapter Suggestions for writing files @@ -281,11 +281,11 @@ See the @strong{GNU Make Manual} for full details on using can do. The commands to define rules in a makefile differ -according to platform; for instance the various forms of Linux and +according to platform; for instance the various forms of GNU/Linux and MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on MacOS X, you need to configure the system to use the command-line interpreter. Here are some example makefiles, with versions for both -Linux/MacOS and Windows. +GNU/Linux/MacOS and Windows. The first example is for an orchestral work in four movements with a directory structure as follows: @@ -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 diff --git a/Documentation/usage/updating.itely b/Documentation/usage/updating.itely index 755c530632..2075925c78 100644 --- a/Documentation/usage/updating.itely +++ b/Documentation/usage/updating.itely @@ -8,7 +8,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.16.0" @node Updating files with convert-ly @@ -132,7 +132,7 @@ in-place. @item -f,--from=@var{from-patchlevel} Set the version to convert from. If this is not set, @command{convert-ly} will guess this, on the basis of @code{\version} strings in the file. -E.g. @code{--from=2.10.25} +E.g. @option{--from=2.10.25} @item -n,--no-version Normally, @command{convert-ly} adds a @code{\version} indicator @@ -143,10 +143,15 @@ Show all known conversions and exit. @item --to=@var{to-patchlevel} Set the goal version of the conversion. It defaults to the latest -available version. E.g. @code{--to=2.12.2} +available version. E.g. @option{--to=2.12.2} @item -h, --help Print usage help. + +@item -l @var{loglevel}, --loglevel=@var{loglevel} +Set the output verbosity to @var{loglevel}. Possible values are @code{NONE}, +@code{ERROR}, @code{WARNING}, @code{PROGRESS} (default) and @code{DEBUG}. + @end table To upgrade LilyPond fragments in texinfo files, use diff --git a/Documentation/web.texi b/Documentation/web.texi index 90d9f79251..e6b077d328 100644 --- a/Documentation/web.texi +++ b/Documentation/web.texi @@ -15,7 +15,7 @@ @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro @set FDL @@ -34,7 +34,7 @@ @end ignore @copying -Copyright @copyright{} 2009--2011 by the authors. +Copyright @copyright{} 2009--2012 by the authors. @c next line is necessary for broken pre-4.13 texinfo's @c install-info, so leave it there until we officially @@ -148,6 +148,44 @@ Read more in our @ref{Introduction}! @ifclear web_version @c do nothing @end ifclear +@ifset web_version + @c make the box: +@divId{wildCardBox} +@subheading Pondings +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html + @ifset web_version @c make the box: @divId{latestVersion} @@ -215,30 +253,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (split HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (split HTML),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (big HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (big HTML),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro diff --git a/Documentation/web/GNUmakefile b/Documentation/web/GNUmakefile index 0435d91702..278256fb91 100644 --- a/Documentation/web/GNUmakefile +++ b/Documentation/web/GNUmakefile @@ -2,7 +2,7 @@ depth = ../.. LOCALSTEPMAKE_TEMPLATES = ly -SUBDIRS = ly-examples server +SUBDIRS = server include $(depth)/make/stepmake.make #OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES)) diff --git a/Documentation/web/community.itexi b/Documentation/web/community.itexi index d6918d1fbc..d06932a3ff 100644 --- a/Documentation/web/community.itexi +++ b/Documentation/web/community.itexi @@ -41,9 +41,15 @@ discussing LilyPond. @item @ref{Help us}: your assistance is requested. +@item +@ref{Sponsoring}: financial contributions. + @item @ref{Development}: for contributors and testers. +@item +@ref{GSoC 2012}: our ideas for 2012 edition of Google Summer of Code. + @item @ref{Authors}: the people who made LilyPond what it is today. @@ -61,6 +67,9 @@ discussing LilyPond. @item @ref{Old news}: an archive. +@item +@ref{Attic}: announcements and changelogs from past versions. + @end itemize @divEnd @@ -72,10 +81,13 @@ discussing LilyPond. * Tiny examples:: * Bug reports:: * Help us:: +* Sponsoring:: * Development:: +* GSoC 2012:: * Authors:: * Publications:: * Old news:: +* Attic:: @end menu @divEnd @@ -262,6 +274,13 @@ guidelines for @ref{Bug reports}.} @divEnd +@divClass{column-right-bottom} +@subheading Sensitive emails + +Private matters should be sent to Graham Percival (project +manager), who will discuss it with those concerned. + +@divEnd @node Tiny examples @@ -270,7 +289,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 +303,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,50 +321,93 @@ 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 + 16 8. + %% Here: the tie on the D's looks funny + %% Too tall? Left-hand endpoint is not aligned with the B tie? + ~ + 8 [ ] + @} +@} +@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: + 8. ~ 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 @unnumberedsec Bug reports + +@divClass{heading-center} +If you have input that results in a crash or wrong output, +then that is a bug. +@divEnd + @divClass{column-center-top} @subheading Step 1: Known bugs -If you have input that results in a crash or an erroneous output, -then that is a bug. There is a list of current bugs on our google -bug tracker, +We may already know about this bug. Check here: @example @uref{http://code.google.com/p/lilypond/issues/list} @@ -361,12 +423,12 @@ free to add more information to that report.} @divClass{column-left-bottom} @subheading Step 2: Creating a bug report -If you have discovered a bug which is not listed, please help us -by creating a bug report. +If you have discovered a bug which is not listed, +please help us by creating a bug report. -@warning{We only accept bug reports in the form of -@ref{Tiny examples}. We have very limited resources to deal with -bug reports, so any non-minimal example will be rejected. Almost +@warning{We only accept reports in the form of +@ref{Tiny examples}. We have very limited resources, +so any non-minimal example will be rejected. Almost every bug can be demonstrated in four notes or less!} Here is an example of a good bug report: @@ -423,13 +485,14 @@ report. @divClass{column-center-bottom} @subheading Step 4: Wait for a response -Once your bug has been sent to the list, our Bug Squad will -examine the report. Please allow up to 24 hours, as we have a -limited number of volunteers for this task. They may ask you for -more information, or may add the report to the tracker and let you -know what the issue number is. +Once your bug report has been sent to the list, our Bug Squad will +examine it; they may ask you for more information. You will be notified +when the report will be added to the bug tracker. Please allow up to 4 days, +as we have a limited number of volunteers for this task. -You may mark the bug so that you automatically receive emails when +Once a bug has been added to the tracker, you can comment it to add +more information about it. +You may also mark the bug so that you automatically receive emails when any activity on the bug occurs. This requires you have a google account. @divEnd @@ -456,16 +519,96 @@ demonstrate what you think it should look like! @divClass{column-left-top} @divClass{keep-bullets} -@helpusTasks +@helpusSimple @divEnd @divEnd @divClass{column-right-top} -@helpusProjects +@helpusAdvanced + +@divEnd + + +@node Sponsoring +@unnumberedsec Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading Bounties + +In the past, + +@itemize +@item some users have paid for new features +@item some developers have added new features for hire +@end itemize + +The LilyPond project does not organize such efforts; we neither +endorse nor discourage such agreements. Any contracts between +private individuals is the business of those individuals, not +ours. + +@divEnd + +@divClass{column-right-top} +@subheading Guidelines + +Any user wanting to offer money in exchange for work should bear +in mind the following points: + +@itemize +@item +LilyPond developers may advertise their services on the lilypond +email lists from time to time. + +@item +Any agreements between private individuals should include the +normal precautions when conducting business: who pays, how much do +they pay, with what method of payment, and upon what set of +conditions. We suggest that any ambiguity or uncertainty in these +questions should be resolved before any work begins. + +@end itemize @divEnd +@divClass{column-center-bottom} +@subheading Interested developers + +Here is a list of people who have expressed an interest in +bounties. Note that the amount of work done by individuals varies +quite a bit throughout the years. We do not guarantee that this +list is up-to-date, nor do we guarantee that the people listed +here have any ability. The only criteria is "XYZ asked to be +listed on this page". + +Looking at the git history is a good way to determine who the most +active and experienced developers are. Statistics up to version +@versionDevel{}: + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, overall history} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, past year} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, past three months} +@end multitable + +Interested developers: +@table @asis +@item @email{dak@@gnu.org, David Kastrup} +Donations are required to let me continue my current fulltime work on +LilyPond. I focus on user and programmer interface design, coherence, +implementation, simplification, documentation, and debugging. + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + @node Development @unnumberedsec Development @@ -726,6 +869,165 @@ manuals can be found at @url{http://lilypond.org}} +@node GSoC 2012 +@unnumberedsec GSoC 2012 + +@divClass{column-center-top} +@subheading What is Google Summer of Code? + +It is a global program run by Google that offers students stipends +for working on open source software projects during summer vacations. + +The LilyPond Team decided that this is an excellent opportunity to find +new contributors and encourage students already participating in LilyPond +development to become more involved. One of our contributors was accepted +for 2012 edition of the program as part of the +@uref{http://www.gnu.org/, GNU project}; +we hope to participate in future editions as well. + +@divEnd + +@divClass{column-center-bottom} +@subheading Our 2012 Ideas List + +Below is a list of projects that we suggested for GSoC 2012 students. +Although the application period is over, we decided to keep this webpage +online as an inspiration for anyone who is interested in developing LilyPond. +Some members of the development team are willing to help people who would like +to tackle these projects. + +Of course, there are many more things to improve in LilyPond, including +very small ones. A full list of all known issues can be found +@uref{http://code.google.com/p/lilypond/issues/list, here}. + +@subheading Grace notes + +Fix problems with synchronization of grace notes, +together with all underlying architecture (see +@uref{http://code.google.com/p/lilypond/issues/detail?id=34, +issue 34 in our tracker}). Grace notes are confusing to LilyPond's +timing because they're like going back in time. This causes weird +effects, especially when one staff has a grace note and the other +doesn't. + +@strong{Difficulty:} medium + +@strong{Requirements:} C++, MIDI + +@strong{Recommended:} familiarity with LilyPond internals + +@strong{Mentor(s):} Mike Solomon, Carl Sorensen + +@subheading MusicXML + +Adding comprehensive MusicXML export and improving import, +together with tests checking that it works. Depending on time available, +implement some or all of the following: + +@divClass{keep-bullets} +@itemize + +@item +Handle basic musical content export like the MIDI export (i.e. using +dedicated exporter classes, derived from the translator class) + +@item +Build the XML tree of the basic musical content, +add a connection from music event to XML tag + +@item +Let all LilyPond engravers do their job + +@item +Add ability to link each output object +(basically each stencil / group of stencils) to the music cause +(and thus to the XML tag in the XML tree) + +@item +Add a XML output backend, which can then add the layout information +for each output object to the XML tags + +@end itemize +@divEnd + +The goal will be considered achieved when a (previously chosen) score +could be imported from MusicXML and exported back with no unintentional +loss of data. + +@strong{Difficulty:} medium + +@strong{Requirements:} MusicXML, Python, basic LilyPond knowledge + +@strong{Mentor(s):} Reinhold Kainhofer, Mike Solomon + +Familiarity with other scorewriters (for cross-testing) would be a nice +bonus. + +@subheading Improve slurs and ties + +The default shape of slur and tie curves is often unsatisfactory. +Ties on enharmonic notes @code{@{ cis'~ des' @}} are not supported, +ties "broken" by clef or staff change aren't supported well. +The project includes collecting and sorting examples of bad output, +deciding on the intended output and writing the actual code. + +@strong{Difficulty:} hard + +@strong{Requirements:} C++, experience with writing heuristics + +@strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense + +@strong{Mentor(s):} Mike Solomon + +@subheading Adding special variant of font glyphs +Adding on-staff-line, between-staff-line, shorter and narrower variants +of some glyphs, for example accidentals, together with a generic +infrastructure to support them. An example is ancient notation breve +notehead coming in two variants, with smaller and bigger hole. + +@strong{Difficulty:} easy + +@strong{Requirements:} MetaFont, C++, good eye for details + +@strong{Recommended knowledge:} basic LilyPond knowledge + +@strong{Mentor(s):} Werner Lemberg + +@subheading Improve beaming + +Default positioning of regular, cross-staff, broken and kneed beams +should be improved. Beaming should depend on context and neighbor notes +(see @uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, +section 2.2 here}). If possible, reduce beaming computation time. + +@strong{Difficulty:} medium + +@strong{Requirements:} C++, experience with writing heuristics + +@strong{Recommended knowledge:} aesthetic sense + +@strong{Mentor(s):} Mike Solomon, Carl Sorensen + +@subheading Clean up various compilation warnings + +Clean up compiler warnings, static code analysis, and valgrind warnings. +Automatic code analysis tools (warnings in @code{g++} and @code{clang}) +and analysis tools like valgrind memory leak detection and callgrind +code profilers provide valuable information about possible flaws in C++ +code. Cleaning these warnings would allow us to automatically reject +any patch which introduced extra warnings. + +@strong{Difficulty:} medium + +@strong{Requirements:} C++ + +@strong{Mentor(s):} Joe Neeman, Reinhold Kainhofer + +@divEnd + + + + @node Authors @unnumberedsec Authors @@ -826,10 +1128,8 @@ manuals can be found at @url{http://lilypond.org}} @divEnd @divClass{column-center-bottom} - @subheading What people did with LilyPond - @divClass{keep-bullets} @include others-did.itexi @@ -843,6 +1143,66 @@ manuals can be found at @url{http://lilypond.org}} @node Old news @unnumberedsec Old news +@divClass{heading-center} +@warning{Many old announcements and changelogs can be found in +the @ref{Attic}} +@divEnd + @include web/news-front.itexi @include web/news.itexi + + +@node Attic +@unnumberedsec Attic + +@divClass{column-center-top} +@subheading Announcements + +Announcements and news by version: +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +Descriptive list of changes by version: +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading Changelogs + +Developers' changelogs by version: +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/web/download.itexi b/Documentation/web/download.itexi index 8f0fbe021f..dd6dabb464 100644 --- a/Documentation/web/download.itexi +++ b/Documentation/web/download.itexi @@ -47,7 +47,7 @@ our @ref{Text input}.} @c ref is duplicated to avoid underlining ref as image. @ref{Unix, @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,}} -@ref{Unix, Unix (Linux and FreeBSD)} +@ref{Unix, Unix (GNU/Linux and FreeBSD)} @item @ref{MacOS X, @sourceimage{logo-macosx,,,}} @@ -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,17 +238,17 @@ upgrade to these versions. @item @sourceimage{logo-fedora,,,} @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447, -Fedora: LilyPond 2.14.1} +Fedora: LilyPond 2.14.2} @item @sourceimage{logo-ubuntu,,,} @uref{http://packages.ubuntu.com/search?keywords=lilypond, -Ubuntu: LilyPond 2.12.3} +Ubuntu: LilyPond 2.14.2} @item @sourceimage{logo-slackware,,,} @uref{http://www.johannes-schoepfer.de/lilypond/, -Slackware: LilyPond 2.14.1} +Slackware: LilyPond 2.14.2} @item @sourceimage{logo-debian,,,} @@ -292,12 +300,16 @@ acknowledged. For MacOS X 10.4 or higher, running on Intel CPUs (if in doubt, use this). +MacOS X 10.7 Lion is not yet supported. + @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC For MacOS X 10.4 or higher, running on G3 and G4 CPUs (old Apple computers). +MacOS X 10.7 Lion is not yet supported. + @end itemize @subsubheading Install @@ -346,6 +358,7 @@ Create a file called @command{lilypond} which contains @divClass{h-scroll-auto} @example +#!/bin/bash exec @var{DIR}/LilyPond.app/Contents/Resources/bin/lilypond "$@@" @end example @divEnd @@ -514,7 +527,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. diff --git a/Documentation/web/introduction.itexi b/Documentation/web/introduction.itexi index 341d2bf3ed..e07321bb3c 100644 --- a/Documentation/web/introduction.itexi +++ b/Documentation/web/introduction.itexi @@ -291,7 +291,7 @@ staff. Standard output can be modified heavily. Here is an impressive Schenkerian analysis, created by Kris Schaffer, for an article -in @uref{http://www.linuxjournal.com/article/8364 , Linux Journal.}. +in @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. The colors have been added for better visibility. @exampleImage{bach-schenker} @@ -432,7 +432,7 @@ documentation explaining how to use these features -- we can achieve our goal with only a fraction of the individual effort. @item -@qq{Gift culture}: the Free Software (or @qq{Open Source}) +@qq{Gift culture}: the Free Software movement has created many great software projects, such as @uref{http://kernel.org/, GNU/Linux}, @uref{http://www.getfirefox.com/, Mozilla Firefox}, and @@ -441,7 +441,7 @@ benefitted from these projects, some developers want to @qq{give back} to the community. @item -Work experience: contributing to open-source projects is a great way to +Work experience: contributing to free software projects is a great way to practice programming, documentation writing, documentation translation, or design. This experience has helped some developers gain job offers or scholarships. @@ -498,13 +498,40 @@ Some highlights: @itemize @item -@emph{Affaire étrangère}, an opera by -@uref{http://valentin.villenave.net/,Valentin Villenave} -to a French libretto by -@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis -Trondheim}, premiered February 1, 2009 at -@uref{http://www.orchestre-montpellier.com/, L'Opéra National de -Montpellier}, France. +Mussorgsky's @emph{Pictures at an exhibition}, re-orchestrated and +conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with +the @uref{http://www.junge-philharmonie-brandenburg.de/, +Junge Philharmonie Brandenburg} +on Oct 10 2011 and again on Apr 15-16 2012. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, composer and +musical director. His many, recent works include; @emph{Go Thy Way}, +performed by the @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} in March 2012; The +@emph{Just Out of Reach Suite} performed +by the +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Chrysalis Duo} ; @emph{thrafsmata} performed in July 2011 by the +@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh +New Music Ensemble}. + + +@item +@emph{Anonymous Student Compliment or Complaint}, by +@uref{http://www.mikesolomon.org, Mike Solomon}, winner chosen from among +172 entries from 22 countries of the +@uref{http://leftcoastensemble.org/contest, 2011 Left Coast Composition Contest}. +Other works include, Norman (age 1) for clarinet solo, performed at the +@uref{http://emu.music.ufl.edu/fems_concerts.html, University of Florida}'s +Electroacoustic Music Festival (FEMF), October 2010. + +@item +A modern edition of the @emph{Serenata Erminia} by Alessandro Scarlatti, +edited by Thomas Griffin, Musicologist (Rome, Italy). Performed on 22 +October 2010 in the Galleria of the Palazzo Zevallos Stigliano, Naples, +Italy. @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}, +in celebration of the composer's 350th birthday. @item @uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury Baroque}'s @@ -518,6 +545,15 @@ St. James's Church in Manhattan, May 8, 2009, by Frederick Renz and his ensemble @uref{http://www.earlymusicny.org/, Early Music New York} (engraving by Nicolas Sceaux). +@item +@emph{Affaire étrangère}, an opera by +@uref{http://valentin.villenave.net/,Valentin Villenave} +to a French libretto by +@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis +Trondheim}, premiered February 1, 2009 at +@uref{http://www.orchestre-montpellier.com/, L'Opéra National de +Montpellier}, France. + @end itemize @divEnd @@ -679,7 +715,7 @@ A French article on the LilyPond 2.6 release appeared on October 2004 The editors of Computer!Totaal, a Dutch computer magazine, -@uref{http://lilypond.org/web/images/computer-totaal.jpeg, +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, describe LilyPond} in the October 2004 issue as: @qq{Wonderful free (open source) software [..] The sheet music produced by LilyPond is exceptionally pretty [..] a very powerful system that @@ -920,8 +956,8 @@ entered with backslashes. @imageFloat{text-input-1-annotate,png,center} @imageFloat{text-input-1-output,png,center} -Alterations are made with different names: add @code{-is} for -sharp, and @code{-es} for flat (these are Dutch note names, other +Alterations are made with different names: add @w{@code{-is}} for +sharp, and @w{@code{-es}} for flat (these are Dutch note names, other languages are available). LilyPond figures out where to put accidentals. @@ -1007,6 +1043,15 @@ convinced? Read about @ref{Easier editing}. @node Easier editing @unnumberedsec Easier editing +@ignore +GNU policy forbids us from linking to non-Free software, so don't +add such links. + +In particular, don't link to: +- the LilyPond bundle for TextMate (a commercial editor for MacOS). + +@end ignore + @divClass{column-center-top} @subheading LilyPondTool @@ -1038,14 +1083,13 @@ viewer with advanced point-and-click support. @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} -Frescobaldi is a dedicated LilyPond music and text editor with a -built-in PDF previewer, a powerful score wizard and many editing -features. It is built on top of the KDE4 libraries and runs -currently on all flavours of Linux and other UNIX-like operating -systems. +Frescobaldi is lightweight, yet powerful LilyPond music and text editor +with a built-in PDF viewer. It is easy to use and will run on all major +operating systems (GNU/Linux, Mac OS X and Windows). @divEnd @@ -1114,17 +1158,6 @@ using the extensions available at: @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} @end example -@sourceimage{logo-macosx,,,} -There is a LilyPond bundle for TextMate, a commercial editor for MacOS. -It may be installed by running: - -@example -mkdir -p /Library/Application\ Support/TextMate/Bundles -cd /Library/Application\ Support/TextMate/Bundles -git clone http://github.com/textmate/lilypond.tmbundle.git - -@end example - @divEnd @divClass{column-center-top} @@ -1134,40 +1167,45 @@ git clone http://github.com/textmate/lilypond.tmbundle.git @subsubheading Score, tab and MIDI editors: @itemize -@item -@uref{http://www.rosegardenmusic.com,Rosegarden}, an audio and -MIDI sequencer, which also has a score editor for single-staff -editing. @item -@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, -a score editor based on the -@uref{http://www.cairographics.org,Cairo} library, has -experimental support for exporting to LilyPond. +@uref{http://www.canorus.org,Canorus}, a score editor, can also +export to LilyPond, but is still beta-software. Testers are +welcome, though. @item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, a multitrack -tablature editor and player, includes a score viewer and can -export to LilyPond. +@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml, +NtEd}, a score editor based on the +@uref{http://www.cairographics.org,Cairo} library, has experimental +support for exporting to LilyPond. @item @uref{http://www.musescore.org,MuseScore}, a score editor, has incomplete LilyPond export but is being actively developed. @item -@uref{http://www.canorus.org,Canorus}, a score editor, can also -export to LilyPond, but is still beta-software. Testers are -welcome, though. +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY} is a C# program which converts a +@c @uref{http://www.noteworthysoftware.com/,NoteWorthy} +NoteWorthy composer song into LilyPond. @item -@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, a -realtime monophonic MIDI to LilyPond converter. +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple} is a program that helps create scores and parts, including a +mode for mixing different musical works together in a single score or +part. @item -@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, -NW2LY} is a C# program which converts a -@uref{http://www.noteworthysoftware.com/, NoteWorthy} song into -LilyPond. +@uref{http://www.rosegardenmusic.com,Rosegarden}, an audio and MIDI +sequencer, which also has a score editor for single-staff editing. + +@item +@uref{https://launchpad.net/rumor/,Rumor}, a realtime monophonic +MIDI to LilyPond converter. + +@item +@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, a multitrack tablature +editor and player, includes a score viewer and can export to LilyPond. @end itemize diff --git a/Documentation/web/manuals.itexi b/Documentation/web/manuals.itexi index 661421b29b..a46ab720da 100644 --- a/Documentation/web/manuals.itexi +++ b/Documentation/web/manuals.itexi @@ -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}: diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi index dc7ab194b5..618db96c74 100644 --- a/Documentation/web/news-front.itexi +++ b/Documentation/web/news-front.itexi @@ -2,132 +2,120 @@ @c This file is part of lilypond-web.texi and community.itexi @c when you add a new item, consider moving the lowest item(s) -@c into news-old.itexi. +@c into news.itexi. @c keep two blank lines between news entries @c used for news about the upcoming release; see CG 10.2 - -@newsItem -@subsubheading LilyPond 2.14.2 released! @emph{July 22, 2011} - -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 - - -@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} +@subsubheading Lilypond 2.16.0 released! @emph{August 24, 2012} -We are proud to announce the release of GNU LilyPond 2.14. +We are proud to announce the release of GNU LilyPond 2.16.0. LilyPond is a music engraving program, devoted to producing the highest-quality sheet music possible. It brings the aesthetics of traditionally engraved music to computer printouts. -Many improvements have been made in the past two and a half years -since the previous main stable version. A few major improvements -are: +Many improvements have been made in the past year since the previous +main stable version. A few major improvements are: @itemize @item -LilyPond is now licensed under the GNU GPL v3 or higher. - +Support for kievan square notation @item -The vertical spacing engine has been drastically changed, making -it much more flexible and easier to control. - +User and programming interfaces have greatly improved @item -Automatic beaming is now more flexible, and beam collisions are -avoided. - +Music functions have become quite more versatile @end itemize A full list of new features is given in: @example -@uref{http://lilypond.org/doc/v2.13/Documentation/changes/index.html} +@uref{http://lilypond.org/doc/v2.16/Documentation/changes/index.html} @end example -Happy music typesetting! LilyPond 2.14 was brought to you by... +Happy music typesetting! LilyPond 2.16 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. +Bertrand Bordage, Trevor Daniels, Phil Holmes, Ian Hulin, +Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner Lemberg, +John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen Nienhuys, +Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil Puttock, +Mike Solomon, Carl Sorensen, Francisco Vila, Valentin Villenave, +Jan Warchoł 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. +Aleksandr Andreev, Sven Axelsson, Peter Chubb, Karin Hoethker, +Mark Hohl, Justin Ohmie, Benkő Pál, Julien Rioux, Patrick Schmidt, +Adam Spiers, Heikki Taurainen, Piers Titus van der Torren, +Jan-Peter Voigt, Janek Warchol Documentation contributors: -Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph -Palmer, David Pounder, Patrick Schmidt. +James Lowe, Pavel Roskin, Alberto Simoes, Stefan Weil Bug squad: -James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph -Palmer, Kieren MacMillan, Dmytro O. Redchuk. +Colin Campbell, Eluze, Phil Holmes, Marek Klein, Ralph Palmer, +James Lowe -Binaries support contributors: +Support: -Christian Hitz. +Colin Campbell, Christian Hitz, Phil Holmes Translation contributors: -Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de -Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada. +Jean-Charles Malahieude, Till Paala, Yoshiki Sawada + +@newsEnd + + +@newsItem +@subsubheading Lilypond 2.15.95 released! @emph{August 11, 2012} + +We are excited to announce the release of LilyPond 2.15.95. +With this release, development on version 2.15 is frozen for the +upcoming 2.16 stable release and only open to bug fixes. + +All users are urged to try this version to ensure the best +quality of the upcoming stable release. If you discover any +problems, please send us @ref{Bug reports}. + +New features since 2.14.2 are listed in the @qq{Changes} manual +on the website section about @ref{Development}. @newsEnd +@newsItem +@subsubheading LilyPond 2.15.42 released! @emph{August 02, 2012} + +We are happy to announce the release of LilyPond 2.15.42. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + +@newsItem +@subsubheading The LilyPond Report #27. @emph{August 2, 2012} + +The @emph{LilyPond Report} is back, with some interesting insights on +new Scheme-related features recently added by our community’s only paid +developer David Kastrup (thanks to your +@uref{http://lilypond.org/sponsoring.html, continuing donations}). Also +to be found in this issue are an overview of some lesser-known LilyPond +companion projects, and a handful of more shallow factoids. + +Come +@uref{http://news.lilynet.net/?The-LilyPond-Report-27, read +LilyPond Report 27} now; comments and contributions are +warmly encouraged! + +@newsEnd diff --git a/Documentation/web/news.itexi b/Documentation/web/news.itexi index fd4631431c..0a21c0de22 100644 --- a/Documentation/web/news.itexi +++ b/Documentation/web/news.itexi @@ -26,6 +26,804 @@ NOTE: * don't duplicate entries from news-front.itexi @end ignore + +@newsItem +@subsubheading Release candidate withdrawn @emph{July 11, 2012} + +We have discovered a regression since 2.14.2, so lilypond 2.15.41 +is no longer a candidate for the 2.16.0 release. However, please +continue testing it -- we would like to discover (and fix!) any +more regressions as soon as possible. If you discover any +problems, please send us @ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 8 of 2.16 - LilyPond 2.15.41 released! @emph{July 4, 2012} + +LilyPond 2.15.41 is out; this is the eighth release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 18 July 2012. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.40 released! @emph{June 05, 2012} + +We are happy to announce the release of LilyPond 2.15.40. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading Release candidate withdrawn @emph{June 01, 2012} + +We have discovered a regression since 2.14.2, so lilypond 2.15.39 +is no longer a candidate for the 2.16.0 release. However, please +continue testing it -- we would like to discover (and fix!) any +more regressions as soon as possible. If you discover any +problems, please send us @ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 7 of 2.16 - LilyPond 2.15.39 released! @emph{May 22, 2012} + +LilyPond 2.15.39 is out; this is the seventh release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 05 June 2012. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading The LilyPond Report #26. @emph{May 22, 2012} + +The @emph{LilyPond Report} is back, with a new editor on board - +Pavel Roskin, who tells us about his adventures in strange lands +of compiler bugs! There is also a detailed report about current +development status, and an analysis of example LilyPond output - +see for yourself how close (or how far?) are we from matching +the quality of hand-engraved scores. + +Come +@uref{http://news.lilynet.net/?The-LilyPond-Report-26, read +LilyPond Report 26} now; comments and contributions are +warmly encouraged! + +@newsEnd + + +@newsItem +@subsubheading Release candidate 6 of 2.16 - LilyPond 2.15.38 released! @emph{May 3, 2012} + +LilyPond 2.15.38 is out; this is the sixth release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +@strong{Update:} Due to a few Critical bugs, another release +candidate will be required. + +@newsEnd + + +@newsItem +@subsubheading LilyPond takes part in Google Summer of Code 2012! @emph{April 25, 2012} + +Being a part of @uref{http://www.gnu.org/, GNU project}, we are participating in +@uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, +Google Summer of Code program}, which offers students stipends for +working on open source software. + +Our contributor Janek Warchoł was accepted for 2012 edition of GSoC. +He will be working on advanced lyrics positioning in LilyPond. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 5 of 2.16 - LilyPond 2.15.37 released! @emph{April 19, 2012} + +LilyPond 2.15.37 is out; this is the fifth release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 03 May 2012. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 4 of 2.16 - LilyPond 2.15.36 released! @emph{April 6, 2012} + +LilyPond 2.15.36 is out; this is the fourth release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 20 April 2012. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading The LilyPond Report #25. @emph{Apr 1st, 2012} + +The @emph{LilyPond Report} is back, with a rather unusual +issue featuring our young Polish contributor Janek Warchoł! +Also included in this issue are quite a few unexpected items, +including (but not limited to)… a cooking recipe! + +Come +@uref{http://news.lilynet.net/?The-LilyPond-Report-25, read +LilyPond Report 25} now; comments and contributions are +warmly encouraged! + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.35 released! @emph{Mar 28, 2012} + +We are happy to announce the release of LilyPond 2.15.35. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.34 released! @emph{Mar 19, 2012} + +We are happy to announce the release of LilyPond 2.15.34. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.33 released! @emph{Mar 08, 2012} + +We are happy to announce the release of LilyPond 2.15.33. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading The LilyPond Report #24. @emph{Mar 5, 2012} + +A new issue of the @emph{LilyPond Report} is now +available for reading; topics include a request for funding, +an article about exciting new features in LilyPond grammar, +and an overview of LilyPond-based web applications. + +Come +@uref{http://news.lilynet.net/?The-LilyPond-Report-24, read +LilyPond Report 24} now; comments and contributions are +warmly encouraged! + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.32 released! @emph{Mar 03, 2012} + +We are happy to announce the release of LilyPond 2.15.32. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.31 released! @emph{Feb 29, 2012} + +We are happy to announce the release of LilyPond 2.15.31. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 3 of 2.16 - LilyPond 2.15.30 released! @emph{Feb 17, 2012} + +LilyPond 2.15.30 is out; this is the third release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 02 March 2012. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.29 released! @emph{Feb 9, 2012} + +We are happy to announce the release of LilyPond 2.15.29. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.28 released! @emph{Feb 3, 2012} + +We are happy to announce the release of LilyPond 2.15.28. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.27 released! @emph{Jan 24, 2012} + +We are happy to announce the release of LilyPond 2.15.27. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading The LilyPond Report #23. @emph{Jan 20, 2012} + +The @emph{LilyPond Report} is back, with developer +David Kastrup as a new editor! This issue features +an exposé on some of the new, handy commands +recently added to LilyPond, as well as an interview +with LilyPond contributor and composer Mike Solomon. + +Come +@uref{http://news.lilynet.net/?The-LilyPond-Report-23, read +LilyPond Report 23} now; comments and contributions are +warmly encouraged! + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.26 released! @emph{Jan 16, 2012} + +We are happy to announce the release of LilyPond 2.15.26. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +The 2.15.25 has been skipped due to build problems. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.24 released! @emph{Jan 07, 2012} + +We are happy to announce the release of LilyPond 2.15.24. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.23 released! @emph{Dec 21, 2011} + +We are happy to announce the release of LilyPond 2.15.23. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.22 released! @emph{Dec 15, 2011} + +We are happy to announce the release of LilyPond 2.15.22. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.21 released! @emph{Dec 6, 2011} + +We are happy to announce the release of LilyPond 2.15.21. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.20 released! @emph{Nov 24, 2011} + +We are happy to announce the release of LilyPond 2.15.20. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.19 released! @emph{Nov 18, 2011} + +We are happy to announce the release of LilyPond 2.15.19. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.18 released! @emph{Nov 12, 2011} + +We are happy to announce the release of LilyPond 2.15.18. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.17 released! @emph{Nov 10, 2011} + +We are happy to announce the release of LilyPond 2.15.17. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.16 released! @emph{October 28, 2011} + +We are happy to announce the release of LilyPond 2.15.16. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.15 released! @emph{October 24, 2011} + +We are happy to announce the release of LilyPond 2.15.15. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.14 released! @emph{October 7, 2011} + +We are happy to announce the release of LilyPond 2.15.14. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.13 released! @emph{September 27, 2011} + +We are happy to announce the release of LilyPond 2.15.13. 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. Please +note that due to a few Critical bugs, this is not the next release +candidate. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 2 cancelled @emph{Sep 23, 2011} + +The release countdown is cancelled due to the discovery of a +Critical regression. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 2 of 2.16 - LilyPond 2.15.12 released! @emph{Sep 20, 2011} + +LilyPond 2.15.12 is out; this is the second release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 27 Sep 2011. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.11 released! @emph{September 11, 2011} + +We are happy to announce the release of LilyPond 2.15.11. 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. Please +note that due to the possibility of a few Critical bugs, this is +not the next release candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.10 released! @emph{September 6, 2011} + +We are happy to announce the release of LilyPond 2.15.10. 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. Please +note that due to a few outstanding Critical bugs, this is not the +next release candidate. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.9 released! @emph{August 30, 2011} + +We are happy to announce the release of LilyPond 2.15.9. This +release contains the usual number of bugfixes, and also adds +support for MacOS X 10.7. + +It is strongly recommended that normal users do @strong{not} use +this release, and instead use the stable 2.14 version. Please +note that due to a few outstanding Critical bugs, this is not the +next release candidate. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 1 of 2.16 - LilyPond 2.15.8 released! @emph{Aug 01, 2011} + +LilyPond 2.15.8 is out; this is the first release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 08 Aug 2011. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.7 released! @emph{July 29, 2011} + +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. + +@newsEnd + + +@newsItem +@subsubheading LilyPond 2.15.6 released! @emph{July 26, 2011} + +We are happy to announce the release of LilyPond 2.15.6. 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.2 released! @emph{July 25, 2011} + +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 + + + + +@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.14/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} @@ -1017,7 +1815,7 @@ now 2.12.2, and the next development version has begun with A new stable release of LilyPond is available. @* -@uref{announce-v2.12,Announcement}, +@miscLink{announce-v2.12,Announcement}, @ref{Changes}, @ref{Download}. @newsEnd @@ -1066,7 +1864,7 @@ documentation and translations. @newsItem -@subsubheading LilyPond 2.11.62 – Release Candidate. @emph{October 11, 2008} +@subsubheading LilyPond 2.11.62 -- Release Candidate. @emph{October 11, 2008} LilyPond 2.11.62 is available. This is is one of the last releases before 2.12, so testing it is encouraged. In addition to a bugfix @@ -1544,11 +2342,9 @@ This has lots of bugfixes. @newsItem -@subsubheading Übersetzung der Dokumentation - @emph{10. April 2007} -Die Kapitel 1-5 (der Abschnitt für Anfänger) des -LilyPond-Benutzerhandbuchs -sind auf deutsch übersetzt — sie sind erhältlich für -die @ref{Changes} +@subsubheading Übersetzung der Dokumentation - @emph{10. April 2007} +Die Kapitel 1-5 (der Abschnitt für Anfänger) des LilyPond-Benutzerhandbuchs +sind auf deutsch übersetzt --- sie sind erhältlich für die @ref{Changes} online und @ref{Old downloads}. @newsEnd @@ -1574,11 +2370,13 @@ This release has some documentation updates. @newsItem -@subsubheading Traduction de la documentation en français - @emph{25 février 2007} -Les chapitres 1 à 4 et 6 du manuel de l'utilisateur sont -désormais traduits, et disponibles en ligne — @uref{@@DOC@@v2.10/Documentation/user/lilypond/index.fr.html,version -2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/index.fr.html,version -2.11}. Les traductions sont également incluses dans la @uref{install,documentation téléchargeable}. +@subsubheading Traduction de la documentation en français - @emph{25 février 2007} +Les chapitres 1 à 4 et 6 du manuel de l'utilisateur sont désormais traduits, et +disponibles en ligne --- +@uref{http://lilypond.org/doc/v2.10/Documentation/user/lilypond/index.fr.html,version 2.10}, +@uref{http://lilypond.org/doc/v2.11/Documentation/user/lilypond/index.fr.html,version 2.11}. +Les traductions sont également incluses dans la +@uref{install,documentation téléchargeable}. @newsEnd @@ -1742,7 +2540,7 @@ and part-combining. @newsItem @subsubheading LilyPond 2.11.9 and 2.10.9 available - @emph{January 3, 2007} -This release has a couple of bugfixes, and —in 2.11.9&mdash +This release has a couple of bugfixes, and ---in 2.11.9--- further improvements in the regression test suite @* @bugfixes{2_11_9,}, @@ -1763,7 +2561,7 @@ New! Improved! With even more bugfixes! @newsItem @subsubheading @code{lilypond.org} auf deutsch - @emph{31. Dezember 2006} -Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt! +Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt! @newsEnd @@ -1863,11 +2661,11 @@ From now on, our GUB binary builds include support for Linux/PPC. (@ref{Old dow @newsItem -@subsubheading Traduction du tutoriel en français. @emph{December 13, 2006} -Fruit du travail d'une équipe de traducteurs, le tutoriel en -français est maintenant disponible en ligne. @uref{@@DOC@@v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version -2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version -2.11}. +@subsubheading Traduction du tutoriel en français. @emph{December 13, 2006} +Fruit du travail d'une équipe de traducteurs, le tutoriel en français est +maintenant disponible en ligne. +@uref{http://lilypond.org/doc/v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version 2.10}, +@uref{http://lilypond.org/doc/v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version 2.11}. @newsEnd @@ -1917,7 +2715,8 @@ This release has improved support for vertical spacing. (@ref{Changes}, @ref{Ol @newsItem @subsubheading LilyPond 2.10.0 available - @emph{November 11, 2006} -A new stable release of LilyPond is available. (@uref{announce-v2.10.html,Announcement}, @ref{Changes}, @ref{Old downloads}) +A new stable release of LilyPond is available. +(@miscLink{announce-v2.10,Announcement}, @ref{Changes}, @ref{Old downloads}) @newsEnd @@ -2215,7 +3014,7 @@ speedup over the emulated PowerPC binaries. (@ref{Old downloads}) @newsItem @subsubheading LilyPond 2.8.0 is out! - @emph{March 22, 2006} -Version 2.8 is here! Read the @uref{announce-v2.8.html,release +Version 2.8 is here! Read the @miscLink{announce-v2.8,release announcement}. (@ref{Changes}, @ref{Old downloads}) @newsEnd @@ -2413,8 +3212,8 @@ in-depth but hands-on feature article with crisp LilyPond graphics. @* Author Kris Shaffer remarks -“GNU LilyPond generates beautiful graphics that make commercial -alternatives seem second-rate.” +@qq{GNU LilyPond generates beautiful graphics that make commercial +alternatives seem second-rate.} This article is now available @uref{http://www.linuxjournal.com/article/8583,on-line}. @newsEnd @@ -2668,9 +3467,9 @@ release. (@ref{Changes}, @newsItem -@subsubheading Traduction française du site - @emph{September 03, 2005} +@subsubheading Traduction française du site - @emph{September 03, 2005} Grâce à @uref{about/thanks#website,l'équipe des traducteurs}, -de nombreuses pages du site sont maintenant disponibles en français, +de nombreuses pages du site sont maintenant disponibles en français, notamment l'@uref{about/automated-engraving/index.fr.html,essai sur la gravure musicale}. @newsEnd @@ -2699,8 +3498,7 @@ LilyPond's first appearance in mainstream printed press. @subsubheading LilyPond 2.7.7 is out - @emph{August 22, 2005} This release has a rewriting of tie formatting which was sponsored by Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor -Baca, and Vicente Solsona -Dellá. (@ref{Changes}, +Baca, and Vicente Solsona Dellá. (@ref{Changes}, @ref{Old downloads}) @newsEnd @@ -2778,7 +3576,7 @@ installs in a snap on Windows, MacOS X, and any version of Linux (x86). @strong{Get up and running in minutes!} Pango text formatting lets you print @strong{Unicode } lyrics in your favorite script and font. Create @strong{SVG} files, and edit them in Inkscape. -(@uref{announce-v2.6.html,Announcement}, @ref{Old downloads}, @ref{Changes}) +(@miscLink{announce-v2.6,Announcement}, @ref{Old downloads}, @ref{Changes}) @newsEnd @@ -3224,7 +4022,7 @@ the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/C @newsItem @subsubheading October 31, 2004 -LilyPond 2.4.0 was just @uref{announce-v2.4.html,released!} +LilyPond 2.4.0 was just @miscLink{announce-v2.4,released!} This new stable version has support for page-layout, completely rewritten slur formatting and many other improvements. Read about them in the @ref{Changes} @@ -3693,7 +4491,7 @@ LilyPond 2.2.0 is out! This new stable version has completely revamped support for for orchestral score formatting, cue notes, font size management, lyric formatting, drum notation/playback and document integration. Read about it in -the @uref{announce-v2.2.html,announcement} or skip to the +the @miscLink{announce-v2.2,announcement} or skip to the @ref{Old downloads}. @newsEnd @@ -3913,7 +4711,7 @@ in the @subsubheading February 2, 2004 LilyPond 2.1.17 is out. It adds texts (solo, a due) for the part combiner. It also reinstates the -@code{--safe} option which prevents havoc by Scheme exploits. More +@option{--safe} option which prevents havoc by Scheme exploits. More information in the @ref{Changes}. @newsEnd @@ -4053,27 +4851,25 @@ More information in the @newsItem @subsubheading January 4, 2004 -LilyPond 2.1.6 continues to -improve the layout of lyrics. More +LilyPond 2.1.6 continues to improve the layout of lyrics. More information in the -@uref{@@DOC@@v2.1/Documentation/topdocs/out-www/NEWS.html,release +@uref{http://lilypond.org/doc/v2.1/Documentation/topdocs/out-www/NEWS.html,release notes} and download @uref{install/#2.1,here}. @newsEnd @newsItem @subsubheading January 2, 2004 -in LilyPond 2.1.5, the lyric -alignment is completely revamped, and now matches my Edition -Peters version of the Schubert song Sängers Morgen. More -information in the -@ref{Changes} and download @uref{install/#2.1,here}. +In LilyPond 2.1.5, the lyric alignment is completely revamped, +and now matches my Edition Peters version of the Schubert song +Sängers Morgen. More information in the @ref{Changes} and +download @uref{install/#2.1,here}. @newsEnd @newsItem @subsubheading December 30, 2003 -LilyPond 2.1.4 is released. Font shapes and linethickness +LilyPond 2.1.4 is released. Font shapes and line thickness are now truly different for different staff sizes, thus lending an engraved look to scores printed in smaller type too. See the @ref{Changes} and download @uref{install/#2.1,here}. @@ -4175,7 +4971,7 @@ Lopez-Lezcano! LilyPond 2.0.0 is released. The focus of this release is cleanups of the syntax: entering music is now much easier and more efficient. Read the announcement -@uref{announce-v2.0.html,here}, or go to the +@miscLink{announce-v2.0,here}, or go to the @uref{install/#2.0,download page} directly. @newsEnd @@ -4358,4 +5154,3 @@ unique faculties. 1.7.29 - release candidate 4 has been released. Packages for Red Hat, Debian, Cygwin are @uref{install/,available}. @newsEnd - diff --git a/Documentation/web/server/GNUmakefile b/Documentation/web/server/GNUmakefile index b8e004a888..99edf28d03 100644 --- a/Documentation/web/server/GNUmakefile +++ b/Documentation/web/server/GNUmakefile @@ -2,6 +2,6 @@ depth=../../.. LOCALSTEPMAKE_TEMPLATES = ly include $(depth)/make/stepmake.make -EXTRA_DIST_FILES = favicon.ico robots.txt +EXTRA_DIST_FILES = favicon.ico robots.txt tweets.xml EXTRA_DIST_FILES += lilypond.org.htaccess website-dir.htaccess diff --git a/Documentation/web/server/tweets.xml b/Documentation/web/server/tweets.xml new file mode 100644 index 0000000000..1eb2eb29e1 --- /dev/null +++ b/Documentation/web/server/tweets.xml @@ -0,0 +1,60 @@ + + +<a target="_blank" +href="http://www.inadiutorium.xf.cz"> +Project</a> in adiutorium provides chants to the catholic Divine +Office in the Czech language. We use LilyPond for the typesetting. + + +28/07/2012 : Christophe Rousset et les Talens Lyriques interprètent Phaëton +de Lully au +<a +href="http://festivalbeaune.pagesperso-orange.fr/2012/o120728.htm" +target="_blank" +> +festival +de Beaune</a>, +en utilisant un <a +href="http://nicolas.sceaux.free.fr/index.php/2009/05/03/39" +target="_blank" +> +matériel créé avec LilyPond. +</a> + + +28/07/2012 : Christophe Rousset et les Talens Lyriques interprètent Phaëton +de Lully au +<a +href="http://festivalbeaune.pagesperso-orange.fr/2012/o120728.htm" +target="_blank" +> +festival +de Beaune</a>, +en utilisant un <a +href="http://nicolas.sceaux.free.fr/index.php/2009/05/03/39" +target="_blank" +> +matériel créé avec LilyPond</a>. + + +2012.07.28: Christophe Rousset and Les Talens Lyriques play Phaëton by Lully +at the +<a +href="http://festivalbeaune.pagesperso-orange.fr/2012/o120728.htm" +target="_blank" +> +Beaune festival</a>, using +<a +href="http://nicolas.sceaux.free.fr/index.php/2009/05/03/39" +target="_blank" +> +music typeset with LilyPond</a>. + + +Schumann - <a target="_blank" +href="http://superbonus.project.free.fr/spip.php?article50"> +Album pour la Jeunesse</a>, Op. 68. +Currently in French or German, with or without +fingering. LilyPond typeset and freely downloadable! + + diff --git a/Documentation/web/we-wrote.bib b/Documentation/web/we-wrote.bib index aeae6d4435..2ed03b5350 100644 --- a/Documentation/web/we-wrote.bib +++ b/Documentation/web/we-wrote.bib @@ -4,7 +4,7 @@ author = {Han-Wen Nienhuys}, booktitle = {Forum Internacional Software Livre 2006 (FISL7.0)}, year = 2006, - note = {(@uref{http://lilypond.org/web/images/FISL7-slides.pdf, PDF 1095k})} + note = {(@uref{http://lilypond.org/website/pdf/FISL7-slides.pdf, PDF 1095k})} } @mastersthesis{sandberg06, @@ -13,7 +13,7 @@ year = 2006, month = "March", school = {Uppsala University, Department of Information Technology}, - note = {(@uref{http://lilypond.org/web/images/thesis-erik-sandberg, PDF 750k})} + note = {(@uref{http://lilypond.org/website/pdf/thesis-erik-sandberg, PDF 750k})} } @inproceedings{hanwen03, @@ -23,8 +23,23 @@ year = 2003, month = "May", location = {Firenze, Italy}, - note = {(@uref{http://lilypond.org/web/images/xivcim.pdf, PDF 95k})} + note = {(@uref{http://lilypond.org/website/pdf/xivcim.pdf, PDF 95k})} } +@inproceedings{reinhold01, + title = {OrchestralLily: A Package for Professional Music Publishing with LilyPond and LATEX}, + author = {Reinhold Kainhofer}, + booktitle = {The Linux Audio Conference 2010 (LAC2010)}, + year = 2010, + note = {(@uref{http://lilypond.org/website/pdf/reinhold-LAC-2010.pdf, PDF 767k})} +} + +@inproceedings{graham01, + title = {Sustainability in F/OSS: developers as a non-renewable resource}, + author = {Graham Percival}, + booktitle = {Rencontres Mondiales du Logiciel Libre 2010 (RMLL2010)}, + year = 2010, + note = {(@uref{http://lilypond.org/website/pdf/graham-sustainability-FOSS.pdf, PDF 333k})} +} diff --git a/Documentation/zh/GNUmakefile b/Documentation/zh/GNUmakefile index 9e9d8bda16..c46b13bb43 100644 --- a/Documentation/zh/GNUmakefile +++ b/Documentation/zh/GNUmakefile @@ -1,10 +1,9 @@ ISOLANG = zh depth = ../.. # SUBDIRS = web learning notation texidocs usage included essay extending -SUBDIRS = web texidocs -STEPMAKE_TEMPLATES = documentation +SUBDIRS = web texidocs included +STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root NO_PDF_FILES = 1 -EXTRA_DIST_FILES = web.texi include $(depth)/make/stepmake.make diff --git a/Documentation/zh/included/GNUmakefile b/Documentation/zh/included/GNUmakefile new file mode 100644 index 0000000000..afe7a4d738 --- /dev/null +++ b/Documentation/zh/included/GNUmakefile @@ -0,0 +1,10 @@ +depth = ../../.. + +STEPMAKE_TEMPLATES=documentation + +EXTRA_DIST_FILES+=$(call src-wildcard,*.ly) +EXTRA_DIST_FILES+=$(call src-wildcard,*.ily) +EXTRA_DIST_FILES+=$(call src-wildcard,*.itexi) +EXTRA_DIST_FILES+=$(call src-wildcard,*.itely) + +include $(depth)/make/stepmake.make diff --git a/Documentation/zh/macros.itexi b/Documentation/zh/macros.itexi index 02b3bf4316..540cafe06e 100644 --- a/Documentation/zh/macros.itexi +++ b/Documentation/zh/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 676dd9eed5f81540f71c3e3e55666c60f7af36ac + Translation of GIT committish: 8052856914abafa960a0518ca8032b681c9d0588 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -43,7 +43,7 @@ translations should be in macros.itexi. @html
@end html -@strong{Note:} \TEXT\ +@strong{注意:}\TEXT\ @c keep the space for proper nesting of

@html @@ -59,7 +59,7 @@ translations should be in macros.itexi. @quotation @quotation @cartouche -@b{Note:} \TEXT\ +@b{注意:}\TEXT\ @end cartouche @end quotation @end quotation @@ -120,8 +120,8 @@ documentation, or to read this manual in other formats, see @copyrightDeclare @quotation -在由自由软件协会发布的 GNU 自由文档协议,1.1版及以后版本的条款内,允许复制,分发和/或修改本文档和没有不变的部分。 -这个协议的复本在标题为《GNU 自由文档协议》的段。 +在由自由软件基金会发布的 GNU 自由文档许可证,1.1 +版及以后版本的条款内,允许复制,分发和/或修改本文档和没有不变的部分。这个许可证的复本在标题为《GNU 自由文档许可证》的章节里。 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 @@ -742,7 +742,7 @@ LilyPond 版本 @version{}
@end html @iftex -@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png} +@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png} @end iftex @ifinfo @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png} diff --git a/Documentation/zh/search-box.ihtml b/Documentation/zh/search-box.ihtml index 673cc9d8f2..670a755a0a 100644 --- a/Documentation/zh/search-box.ihtml +++ b/Documentation/zh/search-box.ihtml @@ -1,11 +1,24 @@ + + diff --git a/Documentation/zh/translations.itexi b/Documentation/zh/translations.itexi index b0da0472ce..7d48824e9b 100644 --- a/Documentation/zh/translations.itexi +++ b/Documentation/zh/translations.itexi @@ -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{最近更新 Thu May 31 09:12:39 UTC 2012 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -30,7 +30,7 @@ LilyPond -- 每一个人的五线谱 @item 段标题 @* -585 +616 @tab Ben Luo @tab @tab @@ -47,11 +47,11 @@ LilyPond -- 每一个人的五线谱 @ifhtml @html -是 +部分地 @end html @end ifhtml @ifnothtml -是 +部分地 @end ifnothtml @tab pre-GDP @item @@ -84,7 +84,7 @@ LilyPond --- \TITLE\ @item 简介 @* -4506 +4753 @tab @tab @tab @@ -102,7 +102,7 @@ LilyPond --- \TITLE\ @item 下载 @* -1183 +1211 @tab Ben Luo @tab @tab @@ -119,17 +119,17 @@ LilyPond --- \TITLE\ @ifhtml @html -是 +部分地 @end html @end ifhtml @ifnothtml -是 +部分地 @end ifnothtml @tab pre-GDP @item 手册 @* -1200 +1214 @tab Ben Luo @tab @tab @@ -146,28 +146,28 @@ LilyPond --- \TITLE\ @ifhtml @html -是 +部分地 @end html @end ifhtml @ifnothtml -是 +部分地 @end ifnothtml @tab pre-GDP @item 社区 @* -1755 +3006 @tab @tab @tab @ifhtml @html -是 +部分 (96 %) @end html @end ifhtml @ifnothtml -是 +部分 (96 %) @end ifnothtml @tab @tab pre-GDP diff --git a/Documentation/zh/web.texi b/Documentation/zh/web.texi index 50505b30e8..e0b5afb30a 100644 --- a/Documentation/zh/web.texi +++ b/Documentation/zh/web.texi @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: a8841c7b9212700f2ebac56e0713afa78a8f0ca0 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -8,24 +8,23 @@ @end ignore @setfilename web.info -@settitle LilyPond -- 每一个人的五线谱 +@settitle LilyPond -- 人人的乐谱软件 @documentencoding UTF-8 @documentlanguage zh @afourpaper @c `Web' was imported 2009-08-05 with git commit b938d71... @c @macro copyrightDeclare -@c Copyright @copyright{} 2009--2011 by the authors. +@c Copyright @copyright{} 2009--2012 by the authors. @c @end macro -@c Translators: Ben Luo +@c Translators: Ben Luo, Anthony Fok @set FDL @set web @include macros.itexi @include weblinks.itexi -@afourpaper @c don't remove this comment. @ignore @@ -37,7 +36,7 @@ @end ignore @copying -Copyright @copyright{} 2009--2011 by the authors. +Copyright @copyright{} 2009--2012 by the authors. @c next line is necessary for broken pre-4.13 texinfo's @c install-info, so leave it there until we officially @@ -61,25 +60,25 @@ License''. @direntry * LilyPond 学习手册: (lilypond-learning). 从这开始。 * Music 术语表: (music-glossary). 为非英语用户。 -* LilyPond: (lilypond-notation). LilyPond 音符参考。 +* LilyPond: (lilypond-notation). LilyPond 记谱法参考手册。 * LilyPond 片断: (lilypond-snippets). 短的特征,窍门和例子。 -* LilyPond 内部参考: (lilypond-internals). 定义各调节项。 +* LilyPond 内部机制参考手册: (lilypond-internals). 定义各调节项。 * LilyPond 应用程序的用法: (lilypond-usage). 安装和运行应用程序。 * LilyPond 网站: (lilypond-web). 新网站预览。 -* lilypond: (lilypond-usage)运行 lilypond. 借助 LilyPond 程序。 -* abc2ly: (lilypond-usage)借助 abc2ly. 导入 ABC. +* lilypond: (lilypond-usage)运行 lilypond. 调用 LilyPond 程序。 +* abc2ly: (lilypond-usage)调用 abc2ly. 导入 ABC。 * convert-ly: (lilypond-usage)用convert-ly更新文件。 旧的 LilyPond 版本。 -* etf2ly: (lilypond-usage)借用 etf2ly. 导入 Finale. +* etf2ly: (lilypond-usage)调用 etf2ly. 导入 Finale。 * lilypond-book: (lilypond-usage)lilypond-book. 文本和音乐合并。 -* midi2ly: (lilypond-usage)借用 midi2ly. 导入 MIDI. -* musicxml2ly: (lilypond-usage)借用 musicxml2ly. 导入 MusicXML. +* midi2ly: (lilypond-usage)调用 midi2ly. 导入 MIDI。 +* musicxml2ly: (lilypond-usage)调用 musicxml2ly. 导入 MusicXML。 @end direntry @c TITLE PAGE @ifnottex @node Top -@top LilyPond... 每一个人的五线谱 +@top LilyPond... 人人的乐谱软件 @end ifnottex @@ -90,7 +89,7 @@ License''. @titlepage @title LilyPond -@subtitle 音乐出版系统 +@subtitle 音乐制谱系统 @titlefont{通用信息} @author LilyPond 开发团队 @@ -111,7 +110,7 @@ LilyPond 版本号 @version{} @divId{pageHeader} @heading LilyPond -... 每一个人的五线谱 +... 人人的乐谱软件 @divEnd @c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet} @@ -119,13 +118,13 @@ LilyPond 版本号 @version{} @c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet} @divId{quickSummary} -@subheading 什么是 LilyPond? +@subheading LilyPond 是什么? -LilyPond 是一个音乐雕版印刷程序,专用来生产高质量五线谱音乐。它把传统音乐雕版印刷的美学带到计算机打印输出系统。Lilypond是自由软件也是 @uref{http://gnu.org,GNU Project} 的一部分. +LilyPond (荷花池) 是一个音乐雕版软件,致力产生最高质量的乐谱。它把传统音乐雕版印刷的美学,呈现在计算机打印的乐谱上。LilyPond 是自由软件,也是 @uref{http://gnu.org,GNU Project} 的一部分。 @divClass{align-right} -更多内容见 @ref{简介}! +更多内容,请见@ref{简介}! @divEnd @divEnd @@ -148,6 +147,44 @@ LilyPond 是一个音乐雕版印刷程序,专用来生产高质量五线谱 @ifclear web_version @c do nothing @end ifclear +@ifset web_version + @c make the box: +@divId{wildCardBox} +@subheading Pondings +@divId{wildCardText} + +@divEnd +@divEnd +@end ifset + +@html + + + +@end html + @ifset web_version @c make the box: @divId{latestVersion} @@ -161,7 +198,7 @@ LilyPond 是一个音乐雕版印刷程序,专用来生产高质量五线谱 @ref{Manuals, Manuals @versionStable} -@subsubheading 不稳定版 +@subsubheading 开发版 @ref{Development, Download @versionDevel} @@ -175,10 +212,10 @@ LilyPond 是一个音乐雕版印刷程序,专用来生产高质量五线谱 @divClass{hide} @menu -* 简介:: 从这开始创建五线谱音乐。 -* 下载:: 获得 Lilypond。 +* 简介:: 从这开始创建乐谱。 +* 下载:: 获得 LilyPond。 * 手册:: 阅读完整的手册(RTFM)。 -* 社区:: 和其它用户联络。 +* 社区:: 和其他用户联络。 @end menu @divEnd @@ -207,7 +244,7 @@ Distributions will want to install lilypond.info in postinstall, doing: @c html; we'll need a bunch of @iftext and stuff in here. -gp @c ****************** SPECIAL MACROS FOR WEB MANUAL ************ @macro docLinks{name,base,refLink,split,big,bigsize,pdf,pdfsize} -@subheading Read it +@subheading 开始阅读 @docLinksBare{\name\,\base\,\refLink\,\split\,\big\,\bigsize\,\pdf\,\pdfsize\} @@ -215,30 +252,15 @@ Distributions will want to install lilypond.info in postinstall, doing: @macro docLinkSplit{name,base,webLink} -@ifclear web_version - @uref{../\base\/index.html, \name\ (分开的 HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (分开的 HTML),\base\/index.html,\webLink\} @end macro @macro docLinkBig{name,base,webLink} -@ifclear web_version - @uref{../\base\-big-page.html, \name\ (大的 HTML)} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\name\ (大的 HTML),\base\-big-page.html,\webLink\} @end macro @macro docLinkPdf{name,base,webLink} -@ifclear web_version - @uref{../\base\.pdf, \base\.pdf} -@end ifclear -@ifset web_version - \webLink\ -@end ifset + @docLink{\base\.pdf,\base\.pdf,\webLink\} @end macro @@ -252,11 +274,11 @@ Distributions will want to install lilypond.info in postinstall, doing: @*@ @ @emph{(每个页面有一小的下载)} @item @docLinkBig{\name\,\base\,\big\} @minus{} - 以单一大HTML页面的方式阅读本手册。 + 以单一大 HTML 页面的方式阅读本手册。 @*@ @ @emph{(大的单一下载, \bigsize\)} @item @docLinkPdf{\name\,\base\,\pdf\} @minus{} - 以PDF文件的方式下载。 + 以 PDF 文件的方式下载。 @*@ @ @emph{(大的单一下载, \pdfsize\)} @end itemize @@ -282,8 +304,7 @@ Distributions will want to install lilypond.info in postinstall, doing: @divClass{heading-center} @divClass{contactBox} -如果你觉得有其它 \topic\ 需要列在这里,请按照下面的简介让我们知道 -@ref{缺陷报告}. +如果您知道有其他可以在这里列出的\topic\,请按照@ref{错误报告}页面上的指示,让我们知道。谢谢! @divEnd @divEnd @@ -294,8 +315,8 @@ Distributions will want to install lilypond.info in postinstall, doing: @ifnothtml @macro contactUsAbout{topic} @cartouche -如果你觉得有其它 \topic\ 需要列在这里,请按照下面的简介让我们知道 -@ref{缺陷报告}. +如果您知道有其他可以在这里列出的\topic\, +请按照@ref{错误报告}页面上的指示,让我们知道。谢谢! @end cartouche diff --git a/Documentation/zh/web/community.itexi b/Documentation/zh/web/community.itexi index e839eac80a..a01e5abbbe 100644 --- a/Documentation/zh/web/community.itexi +++ b/Documentation/zh/web/community.itexi @@ -1,122 +1,1220 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- @c This file is part of web.texi @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 5239637b8f00a0307b860dac05189f297c7c198a When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c Translators: Ben Luo +@c Translators: Ben Luo, Anthony Fok @include included/authors.itexi @include included/helpus.itexi + @node 社区 @unnumbered 社区 @translationof Community +@divClass{link-headings} +@divClass{column-center-top} @subheading 与社区互动 + +@itemize + +@item +@ref{Contact}: get help, discuss, and keep in touch! + +@item +@ref{Tiny examples}: these are @emph{highly} recommended when +discussing LilyPond. + +@item +@ref{Bug reports}: something went wrong. + +@end itemize +@divEnd + +@divClass{column-left-bottom} @subheading 使 LilyPond 更好 -@subheading 其它 + +@itemize + +@item +@ref{Help us}: your assistance is requested. + +@item +@ref{Sponsoring}: financial contributions. + +@item +@ref{Development}: for contributors and testers. + +@item +@ref{GSoC 2012}: our ideas for 2012 edition of Google Summer of Code. + +@item +@ref{Authors}: the people who made LilyPond what it is today. + +@end itemize +@divEnd + +@divClass{column-right-bottom} +@subheading 其他 + +@itemize + +@item +@ref{Publications}: what we wrote, and have had written about us. + +@item +@ref{Old news}: an archive. + +@item +@ref{Attic}: announcements and changelogs from past versions. + +@end itemize +@divEnd + +@divEnd + +@divClass{hide} @menu * 联系:: * 小例子:: -* 缺陷报告:: +* 错误报告:: * 帮助我们:: +* 赞助:: * 开发:: +* GSoC 2012:: * 作者:: * 出版物:: * 旧闻:: +* Attic:: @end menu +@divEnd + @node 联系 @unnumberedsec 联系 @translationof Contact +@divClass{column-left-bottom} @subheading 用户讨论和帮助 + @subsubheading 用户邮件列表: @code{lilypond-user@@gnu.org} + +This mailing list is the main place for users to discuss and help +each other. + +@quotation +@uref{http://lists.gnu.org/mailman/listinfo/lilypond-user, +lilypond-user subscribe and info} + +@uref{http://lists.gnu.org/archive/html/lilypond-user/, +user archive1} +@uref{http://www.mail-archive.com/lilypond-user@@gnu.org/, +archive2} +@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general, +archive3} + +@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general, +send to lilypond-user with gmane} +@end quotation + +@warning{When asking questions, please use @ref{Tiny examples}!} + @subsubheading LilyPond 片断仓库 + +The LilyPond Snippet Repository (LilyPond 片断仓库) is a large collection of +user-submitted examples, which can freely be copied and used +in your own works. See what other people have written, +and add your own! + +@example +@uref{http://lsr.dsi.unimi.it} +@end example + +Particularly instructive examples from LSR are included in our +official documentation, in @ref{Snippets}. + + @subsubheading IRC -@subsubheading 其它语言 -@subheading 保持沟通 + +Some level of support is provided on our IRC channel, + +@example +@uref{irc://irc.freenode.net/lilypond, #lilypond@@irc.freenode.net} +@end example + +This channel has no public archive, so any question that may +be useful for others would better be posted to one of the mailing lists. + +@html +irc name: + + + + + + + +@end html + +@subsubheading 其他语言 + +@quotation +@uref{http://lists.gnu.org/mailman/listinfo/lilypond-es, +Spanish mailing list} + +@uref{http://www.lilypondforum.de/, +German forum} + +@uref{http://groups.google.com/group/lilypond-brasil, +Portuguese group} + +@uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr, +French mailing list} + +@uref{http://www.lilypondforum.nl/, +Dutch forum} +@end quotation + +@divEnd + + +@divClass{column-right-top} +@subheading 了解最新动态 + @subsubheading LilyPond 报告 + +The easiest way to keep touch is by reading our community +newsletter, the LilyPond Report: + +@example +@uref{http://news.lilynet.net} +@end example + @subsubheading 发行版邮件列表: @code{info-lilypond@@gnu.org} +This mailing list is a low-volume, read-only list which receives +notifications of new releases. + +@quotation +@uref{http://lists.gnu.org/mailman/listinfo/info-lilypond, +info-lilypond subscribe and info} + +@uref{http://lists.gnu.org/archive/html/info-lilypond/, +info archive1} +@uref{http://www.mail-archive.com/info-lilypond@@gnu.org/, +archive2} +@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce, +archive3} + +@c don't include gmane posting here. -gp +@end quotation + + +@divEnd + + +@divClass{column-right-bottom} @subheading 开发者讨论 + @subsubheading 开发者邮件列表: @code{lilypond-devel@@gnu.org} -@subsubheading 缺陷邮件列表: @code{bug-lilypond@@gnu.org} + +Most developer discussion takes place on this list. Patches +should be sent here. + +@quotation +@uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel, +lilypond-devel subscribe and info} + +@uref{http://lists.gnu.org/archive/html/lilypond-devel/, +devel archive1} +@uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/, +archive2} +@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel, +archive3} + +@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel, +send to lilypond-devel with gmane} +@end quotation + + +@subsubheading 错误邮件列表: @code{bug-lilypond@@gnu.org} + +Bug-specific discussion takes place here. + +@quotation +@uref{http://lists.gnu.org/mailman/listinfo/bug-lilypond, +bug-lilypond subscribe and info} + +@uref{http://lists.gnu.org/archive/html/bug-lilypond/, +bug archive1} +@uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/, +archive2} +@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs, +archive3} + +@c don't include gmane posting here. -gp +@end quotation + +@warning{Before sending a message to the bug list, please read our +guidelines for @ref{Bug reports}.} + +@divEnd + +@divClass{column-right-bottom} +@subheading Sensitive emails + +Private matters should be sent to Graham Percival (project +manager), who will discuss it with those concerned. + +@divEnd + + @node 小例子 @unnumberedsec 小例子 @translationof Tiny examples - +@divClass{column-center-top} @subheading 什么是 @qq{小例子}? -@subheading 为什么创造出来? -@subheading 我如何创造出来? -@node 缺陷报告 -@unnumberedsec 缺陷报告 + +一个小例子 (tiny example) is an example from which @strong{nothing} can be removed. +@divEnd + +@divClass{column-left-bottom} +@subheading 为什么要创建小例子? + +@divClass{keep-bullets} +@itemize + +@item +The simpler the example is, the quicker potential helpers can +understand it and help you. + +@item +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 if we help them or not. + +@item +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 +insufficient understanding of LilyPond, not an actual bug! + +@end itemize +@divEnd + +@divEnd + + +@divClass{column-right-bottom} +@subheading 如何创建小例子? + +@divClass{keep-bullets} +@itemize + +@item +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 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. + +@item +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 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 + 16 8. + %% Here: the tie on the D's looks funny + %% Too tall? Left-hand endpoint is not aligned with the B tie? + ~ + 8 [ ] + @} +@} +@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: + 8. ~ 8 +@} +@end example + +Very few tiny examples exceed 10 lines of code - +quite often 4 lines are enough to demonstrate the problem! + +@divEnd + + +@node 错误报告 +@unnumberedsec 错误报告 @translationof Bug reports -@subheading 第1步:了解缺陷 -@subheading 第2步:创建缺陷报告 -@subheading 第3步:发送缺陷报告 -@subheading 第4步:等待回应 -@subheading 其它可能的帮助:表现出渴望的举动 +@divClass{heading-center} +If you have input that results in a crash or wrong output, +then that is a bug. +@divEnd + +@divClass{column-center-top} +@subheading 第 1 步:检查是否已知错误 + +We may already know about this bug. Check here: + +@example +@uref{http://code.google.com/p/lilypond/issues/list} +@end example + +@warning{Please @strong{DO NOT} add bug reports directly to the +bug tracker. Once an issue has been added to the tracker, feel +free to add more information to that report.} + +@divEnd + + +@divClass{column-left-bottom} +@subheading 第 2 步:创建错误报告 + +If you have discovered a bug which is not listed, +please help us by creating a bug report. + +@warning{We only accept reports in the form of +@ref{Tiny examples}. We have very limited resources, +so any non-minimal example will be rejected. Almost +every bug can be demonstrated in four notes or less!} + +Here is an example of a good bug report: + +@example +% Accidentals should be printed for only +% the first note in a tie, but this version +% prints flats on both notes. +\version "2.10.1" + +\relative c'' @{ + bes1 ~ + bes1 +@} +@end example + +@divEnd + +@divClass{column-right-bottom} +@subheading 第 3 步:发送错误报告 + +Once you have verified that the issue is not already known and +created a bug report, please send it to us! + +@divClass{keep-bullets} +@itemize + +@item +If you are subscribed to the @uref{mailto:bug-lilypond@@gnu.org, +bug-lilypond@@gnu.org} mailing list, send an email like normal. + +@item +If you are not subscribed, you can still post a bug report with +the +@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs, +gmane lilypond.bugs web interface}. + +However, there is a strict @qq{no top-posting} check on the gmane +interface, which is often incorrectly triggered by lilypond files. +To avoid this, please add: + +@example +> I'm not top posting. +@end example + +@noindent +(you @emph{must} include the @code{>} ) to the top of your bug +report. + +@end itemize +@divEnd +@divEnd + +@divClass{column-center-bottom} +@subheading 第 4 步:等待回应 + +Once your bug report has been sent to the list, our Bug Squad will +examine it; they may ask you for more information. You will be notified +when the report will be added to the bug tracker. Please allow up to 4 days, +as we have a limited number of volunteers for this task. + +Once a bug has been added to the tracker, you can comment it to add +more information about it. +You may also mark the bug so that you automatically receive emails when +any activity on the bug occurs. This requires you have a google +account. +@divEnd + +@divClass{column-center-bottom} +@subheading 可选的帮助:展示所期望的行为 + +Once an issue has been added to the tracker, it can be very +helpful if we can see the desired output. Feel free to add input +code and/or images (possibly created with other tools) which +demonstrate what you think it should look like! + +@divEnd + + @node 帮助我们 @unnumberedsec 帮助我们 @translationof Help us +@divClass{column-center-top} +@helpusNeed + +@divEnd + +@divClass{column-left-top} +@divClass{keep-bullets} +@helpusSimple + +@divEnd +@divEnd + +@divClass{column-right-top} +@helpusAdvanced + +@divEnd + + +@node 赞助 +@unnumberedsec 赞助 +@translationof Sponsoring + +@divClass{keep-bullets} +@divClass{column-left-top} +@subheading Bounties + +In the past, + +@itemize +@item some users have paid for new features +@item some developers have added new features for hire +@end itemize + +The LilyPond project does not organize such efforts; we neither +endorse nor discourage such agreements. Any contracts between +private individuals is the business of those individuals, not +ours. + +@divEnd + +@divClass{column-right-top} +@subheading Guidelines + +Any user wanting to offer money in exchange for work should bear +in mind the following points: + +@itemize +@item +LilyPond developers may advertise their services on the lilypond +email lists from time to time. + +@item +Any agreements between private individuals should include the +normal precautions when conducting business: who pays, how much do +they pay, with what method of payment, and upon what set of +conditions. We suggest that any ambiguity or uncertainty in these +questions should be resolved before any work begins. + +@end itemize + +@divEnd + +@divClass{column-center-bottom} +@subheading Interested developers + +Here is a list of people who have expressed an interest in +bounties. Note that the amount of work done by individuals varies +quite a bit throughout the years. We do not guarantee that this +list is up-to-date, nor do we guarantee that the people listed +here have any ability. The only criteria is "XYZ asked to be +listed on this page". + +Looking at the git history is a good way to determine who the most +active and experienced developers are. Statistics up to version +@versionDevel{}: + +@multitable @columnfractions .3 .3 .3 +@item @uref{http://lilypond.org/~graham/gitstats-all/, overall history} +@tab @uref{http://lilypond.org/~graham/gitstats-1year/, past year} +@tab @uref{http://lilypond.org/~graham/gitstats-3months/, past three months} +@end multitable + +Interested developers: +@table @asis +@item @email{dak@@gnu.org, David Kastrup} +Donations are required to let me continue my current fulltime work on +LilyPond. I focus on user and programmer interface design, coherence, +implementation, simplification, documentation, and debugging. + +@c Format +@c @item @email{name@@adress.domain, Name} +@c area of interest (256 chars max) + +@end table + +@divEnd +@divEnd + @node 开发 @unnumberedsec 开发 @translationof Development +@divClass{heading-center} +@ifclear web_version + @heading Development for LilyPond @version +@end ifclear +@ifset web_version + @heading Development for LilyPond @versionDevel +@end ifset + -@subheading 发行号 +@c we normally don't allow named references, but in this case +@c it's good to emphasize the "stable" part. -gp +@warning{These are @emph{unstable development} versions. If you +have the slightest doubt about how to use or install LilyPond, we +urge you to use the @ref{Download, stable Download}, and read the +@ref{Manuals, stable Manuals}.} + +@divEnd + +@divClass{column-center-top} +@subheading Release numbers 发行号 + +There are two sets of releases for LilyPond: stable releases, and +unstable development releases. Stable versions have an +even-numbered @q{minor} version number (e.g., 2.8, 2.10, 2.12). +Development versions have an odd-numbered @q{minor} version number +(e.g., 2.7, 2.9, 2.11). + +@divEnd + + +@divClass{column-left-top} @subheading 下载 + +Instructions for git and compiling are in the Contributor's Guide. + +@quotation +@uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git, lilypond git repository} +@end quotation + +Documentation writers and testers will generally want to download +the latest binary: + +@quotation + +@downloadDevelLinuxNormal + +@downloadDevelLinuxBig + +@downloadDevelLinuxPPC + +@downloadDevelFreeBSDNormal + +@downloadDevelFreeBSDBig + +@downloadDevelDarwinNormal + +@downloadDevelDarwinPPC + +@downloadDevelWindows + +@downloadDevelSource + +@end quotation + +@divEnd + + +@divClass{column-right-top} @subheading 贡献者指南 + +LilyPond development is a fairly complicated matter. In order to +help new contributors, and to keep the whole system (mostly) +stable, we have written a manual for development tasks. + +@docLinksBare{Contributor's Guide, contributor, + @rcontribnamed{Top,Contributor's Guide}, + @manualDevelContributorSplit, + @manualDevelContributorBig, 500 kB, + @manualDevelContributorPdf, 2.8 MB} + +@divEnd + + +@divClass{column-center-top} @subheading 回归测试 -@subsubheading 发行版 + +@divClass{keep-bullets} + +@ifclear web_version + +@itemize +@item +@uref{../../input/regression/collated-files.html, Regression tests}: +This release's regtests. +(@uref{../../input/regression/collated-files.pdf, pdf version}) + +@item +@uref{../../input/regression/musicxml/collated-files.html, MusicXML tests}: +This release's musicXML tests. +(@uref{../../input/regression/musicxml/collated-files.pdf, pdf version}) + +@item +@uref{../../input/regression/abc2ly/collated-files.html, abc2ly tests}: +This release's abc2ly tests. +(@uref{../../input/regression/abc2ly/collated-files.pdf, pdf version}) + +@item +@uref{../../input/regression/lilypond-book/collated-files.html, lilypond-book tests}: +This release's lilypond-book tests. +(@uref{../../input/regression/lilypond-book/collated-files.pdf, pdf version}) +@end itemize + +@end ifclear + +@ifset web_version +@subsubheading 开发中版本 + +@itemize +@item @regtestDevel (@regtestDevelPdf{}) + +@item @regtestDevelXml (@regtestDevelXmlPdf{}) + +@item @regtestDevelAbc (@regtestDevelAbcPdf{}) + +@item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{}) +@end itemize + @subsubheading 稳定版 + +@itemize +@item @regtestStable (@regtestStablePdf{}) + +@item @regtestStableXml (@regtestStableXmlPdf{}) + +@item @regtestStableAbc (@regtestStableAbcPdf{}) + +@item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{}) +@end itemize +@end ifset + + @subsubheading 所有版本 + +@itemize +@item @uref{http://lilypond.org/test, Comparisons between regression tests} + +@item @uref{http://lilypond.org/download/binaries/test-output/, +Archive of all regression tests} + +@end itemize + +@divEnd +@divEnd + + + +@divClass{column-center-bottom} @subheading 手册 + +@ifclear web_version +@warning{These manuals are for LilyPond @version{}; the latest +manuals can be found at @url{http://lilypond.org}} +@end ifclear + +@divClass{normal-table} +@multitable @columnfractions .3 .3 .3 +@headitem Introduction +@item +@docLinkSplit{Learning,learning,@manualDevelLearningSplit} +@tab +@docLinkBig{Learning,learning,@manualDevelLearningBig} +@tab +@docLinkPdf{Learning,learning,@manualDevelLearningPdf} + +@item +@docLinkSplit{Glossary,music-glossary,@manualDevelGlossarySplit} +@tab +@docLinkBig{Glossary,music-glossary,@manualDevelGlossaryBig} +@tab +@docLinkPdf{Glossary,music-glossary,@manualDevelGlossaryPdf} + +@item +@docLinkSplit{Essay,essay,@manualDevelEssaySplit} +@tab +@docLinkBig{Essay,essay,@manualDevelEssayBig} +@tab +@docLinkPdf{Essay,essay,@manualDevelEssayPdf} + +@headitem Regular + +@item +@docLinkSplit{Notation,notation,@manualDevelNotationSplit} +@tab +@docLinkBig{Notation,notation,@manualDevelNotationBig} +@tab +@docLinkPdf{Notation,notation,@manualDevelNotationPdf} + +@item +@docLinkSplit{Usage,usage,@manualDevelUsageSplit} +@tab +@docLinkBig{Usage,usage,@manualDevelUsageBig} +@tab +@docLinkPdf{Usage,usage,@manualDevelUsagePdf} + +@item +@docLinkSplit{Snippets,snippets,@manualDevelSnippetsSplit} +@tab +@docLinkBig{Snippets,snippets,@manualDevelSnippetsBig} +@tab +@docLinkPdf{Snippets,snippets,@manualDevelSnippetsPdf} + +@headitem Infrequent + +@item +@docLinkSplit{Web,web,@manualDevelWebSplit} +@tab +@docLinkBig{Web,web,@manualDevelWebBig} +@tab +@docLinkPdf{Web,web,@manualDevelWebPdf} + +@item +@docLinkSplit{Changes,changes,@manualDevelChangesSplit} +@tab +@docLinkBig{Changes,changes,@manualDevelChangesBig} +@tab +@docLinkPdf{Changes,changes,@manualDevelChangesPdf} + +@item +@docLinkSplit{Extending,extending,@manualDevelExtendingSplit} +@tab +@docLinkBig{Extending,extending,@manualDevelExtendingBig} +@tab +@docLinkPdf{Extending,extending,@manualDevelExtendingPdf} + +@item +@docLinkSplit{Internals,internals,@manualDevelInternalsSplit} +@tab +@docLinkBig{Internals,internals,@manualDevelInternalsBig} +@tab +@docLinkPdf{Internals,internals,@manualDevelInternalsPdf} + +@ifset web_version +@headitem Downloadable + +@item +@doctarballDevel +@end ifset + +@end multitable + +@divEnd +@divEnd + + + + +@node GSoC 2012 +@unnumberedsec GSoC 2012 +@translationof GSoC 2012 + +@divClass{column-center-top} +@subheading What is Google Summer of Code? + +It is a global program run by Google that offers students stipends +for working on open source software projects during summer vacations. + +The LilyPond Team decided that this is an excellent opportunity to find +new contributors and encourage students already participating in LilyPond +development to become more involved. One of our contributors was accepted +for 2012 edition of the program as part of the +@uref{http://www.gnu.org/, GNU project}; +we hope to participate in future editions as well. + +@divEnd + +@divClass{column-center-bottom} +@subheading Our 2012 Ideas List + +Below is a list of projects that we suggested for GSoC 2012 students. +Although the application period is over, we decided to keep this webpage +online as an inspiration for anyone who is interested in developing LilyPond. +Some members of the development team are willing to help people who would like +to tackle these projects. + +Of course, there are many more things to improve in LilyPond, including +very small ones. A full list of all known issues can be found +@uref{http://code.google.com/p/lilypond/issues/list, here}. + +@subheading Grace notes + +Fix problems with synchronization of grace notes, +together with all underlying architecture (see +@uref{http://code.google.com/p/lilypond/issues/detail?id=34, +issue 34 in our tracker}). Grace notes are confusing to LilyPond's +timing because they're like going back in time. This causes weird +effects, especially when one staff has a grace note and the other +doesn't. + +@strong{难度:}中等 + +@strong{Requirements:} C++, MIDI + +@strong{Recommended:} familiarity with LilyPond internals + +@strong{Mentor(s):} Mike Solomon, Carl Sorensen + +@subheading MusicXML + +Adding comprehensive MusicXML export and improving import, +together with tests checking that it works. Depending on time available, +implement some or all of the following: + +@divClass{keep-bullets} +@itemize + +@item +Handle basic musical content export like the MIDI export (i.e. using +dedicated exporter classes, derived from the translator class) + +@item +Build the XML tree of the basic musical content, +add a connection from music event to XML tag + +@item +Let all LilyPond engravers do their job + +@item +Add ability to link each output object +(basically each stencil / group of stencils) to the music cause +(and thus to the XML tag in the XML tree) + +@item +Add a XML output backend, which can then add the layout information +for each output object to the XML tags + +@end itemize +@divEnd + +The goal will be considered achieved when a (previously chosen) score +could be imported from MusicXML and exported back with no unintentional +loss of data. + +@strong{难度:}中等 + +@strong{Requirements:} MusicXML, Python, basic LilyPond knowledge + +@strong{Mentor(s):} Reinhold Kainhofer, Mike Solomon + +Familiarity with other scorewriters (for cross-testing) would be a nice +bonus. + +@subheading Improve slurs and ties + +The default shape of slur and tie curves is often unsatisfactory. +Ties on enharmonic notes @code{@{ cis'~ des' @}} are not supported, +ties "broken" by clef or staff change aren't supported well. +The project includes collecting and sorting examples of bad output, +deciding on the intended output and writing the actual code. + +@strong{难度:}hard + +@strong{Requirements:} C++, experience with writing heuristics + +@strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense + +@strong{Mentor(s):} Mike Solomon + +@subheading Adding special variant of font glyphs +Adding on-staff-line, between-staff-line, shorter and narrower variants +of some glyphs, for example accidentals, together with a generic +infrastructure to support them. An example is ancient notation breve +notehead coming in two variants, with smaller and bigger hole. + +@strong{难度:}easy + +@strong{Requirements:} MetaFont, C++, good eye for details + +@strong{Recommended knowledge:} basic LilyPond knowledge + +@strong{Mentor(s):} Werner Lemberg + +@subheading Improve beaming + +Default positioning of regular, cross-staff, broken and kneed beams +should be improved. Beaming should depend on context and neighbor notes +(see @uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, +section 2.2 here}). If possible, reduce beaming computation time. + +@strong{难度:}中等 + +@strong{Requirements:} C++, experience with writing heuristics + +@strong{Recommended knowledge:} aesthetic sense + +@strong{Mentor(s):} Mike Solomon, Carl Sorensen + +@subheading Clean up various compilation warnings + +Clean up compiler warnings, static code analysis, and valgrind warnings. +Automatic code analysis tools (warnings in @code{g++} and @code{clang}) +and analysis tools like valgrind memory leak detection and callgrind +code profilers provide valuable information about possible flaws in C++ +code. Cleaning these warnings would allow us to automatically reject +any patch which introduced extra warnings. + +@strong{难度:}中等 + +@strong{Requirements:} C++ + +@strong{Mentor(s):} Joe Neeman, Reinhold Kainhofer + +@divEnd + + + + @node 作者 @unnumberedsec 作者 @translationof Authors - +@divClass{column-left-top} @subheading 目前的开发小组 + +@divClass{keep-bullets} +@developersCurrent +@divEnd +@divEnd + +@divClass{column-right-top} @subheading 以前的开发小组 + +@divClass{keep-bullets} +@developersPrevious +@divEnd +@divEnd + + +@divClass{column-center-top} @subheading 目前的贡献者 + +@divClass{keep-bullets} @subsubheading 编程 + +@coreCurrent + @subsubheading 字体 + +@fontCurrent + @subsubheading 文档 -@subsubheading 缺陷组 + +@docCurrent + +@subsubheading 错误组 (Bug squad) + +@bugsquadCurrent + @subsubheading 支持 + +@supportCurrent + @subsubheading 翻译 -@subheading 以前的开发小组 + +@translationsCurrent + +@divEnd +@divEnd + + +@divClass{column-center-bottom} +@subheading 以往的贡献者 + +@divClass{keep-bullets} @subsubheading 编程 + +@corePrevious + @subsubheading 字体 + +@fontPrevious + @subsubheading 文档 + +@docPrevious + +@c uncomment when we have any previous members -gp +@c @subsubheading Bug squad + +@c @bugsquadCurrent + @subsubheading 支持 + +@supportPrevious + @subsubheading 翻译 + +@translationsPrevious + +@divEnd +@divEnd + + + @node 出版物 @unnumberedsec 出版物 @translationof Publications - +@divClass{column-center-top} @subheading 我们写的有关 LilyPond 的文章 + +@divClass{keep-bullets} + @include we-wrote.itexi -@subheading 别人怎么用 LilyPond 的 + +@divEnd +@divEnd + +@divClass{column-center-bottom} +@subheading 大家怎么用 LilyPond 的 + +@divClass{keep-bullets} + @include others-did.itexi + +@divEnd +@divEnd + +@contactUsAbout{学术论文} + + @node 旧闻 @unnumberedsec 旧闻 @translationof Old news +@divClass{heading-center} +@warning{Many old announcements and changelogs can be found in +the @ref{Attic}} +@divEnd @include web/news-front.itexi + @include web/news.itexi -@c -- SKELETON FILE -- + +@node Attic +@unnumberedsec Attic +@translationof Attic + +@divClass{column-center-top} +@subheading Announcements + +Announcements and news by version: +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +Descriptive list of changes by version: +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@divClass{column-center-bottom} +@subheading Changelogs + +Developers' changelogs by version: +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd diff --git a/Documentation/zh/web/download.itexi b/Documentation/zh/web/download.itexi index 5496693b70..25dcd2133d 100644 --- a/Documentation/zh/web/download.itexi +++ b/Documentation/zh/web/download.itexi @@ -1,24 +1,21 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- -@c This file is part of web.texi @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 9402161bd6fe04e40ab205054864ebe85c5a4724 When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c Translators: Ben Luo +@c Translators: Ben Luo, Anthony Fok @include included/generating-output.itexi @macro warningTextBased -@warning{LilyPond is a @strong{text-based} music engraver; it is -more similar to a programming language than a graphical score -editing program. Before downloading LilyPond, please read about -our @ref{Text input}.} +@warning{LilyPond 是一个 @strong{基于文本} 的音乐雕版印刷软件;和一般图形界面的打谱软件相比,LilyPond +倒有点像一门编程语言。在您下载 LilyPond 之前,请先进一步了解我们的@ref{Text input}。} @end macro - @node 下载 @unnumbered 下载 @translationof Download @@ -27,13 +24,13 @@ our @ref{Text input}.} @ifclear web_version @c yes, we want versionDevel here, since the online links @c for @version won't be up yet! - @heading Downloads for LilyPond @versionDevel + @heading 下载 LilyPond @versionDevel @warning{Links for the stable version of LilyPond can be found at @uref{http://lilypond.org, lilypond.org}} @end ifclear @ifset web_version - @heading Downloads for LilyPond @versionStable + @heading 下载 LilyPond @versionStable @end ifset @warningTextBased @@ -43,8 +40,7 @@ our @ref{Text input}.} @divClass{link-headings} @divClass{column-left-top} - -@subheading 使用者 +@subheading 用户下载 @itemize @@ -52,35 +48,32 @@ our @ref{Text input}.} @c ref is duplicated to avoid underlining ref as image. @ref{Unix, @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,}} -@ref{Unix, Unix (Linux and FreeBSD)} +@ref{Unix, Unix (Linux 和 FreeBSD)} @item @ref{MacOS X, @sourceimage{logo-macosx,,,}} -@ref{MacOS X, MacOS X} +@ref{MacOS X, Mac OS X} @item @ref{Windows, @sourceimage{logo-windows,,,}} -@ref{Windows, Microsoft Windows} +@ref{Windows, 微软 Windows} @end itemize @divEnd @divClass{column-right-top} -@subheading 开发人员 +@subheading 开发人员下载 @itemize @item -@ref{Source}: -for packagers +@ref{Source}:打包人员适用 @item -@ref{Old downloads}: -old versions +@ref{Old downloads}:以往版本 -@item @ref{Development}: -latest unstable version +@item @ref{Development}:最新开发版 @end itemize @divEnd @@ -89,20 +82,19 @@ latest unstable version @divClass{column-center-bottom} -@subheading 软件协议 +@subheading 软件许可证 -LilyPond is published under the -@ref{GPL, GNU General Public License}. +LilyPond 是以 +@ref{GPL, GNU 通用公共许可证 (GPL)} 发布的。 @divEnd @divClass{color1} -@subheading 捐赠人 +@subheading 赞助商 -Many thanks to @uref{http://www.vt.edu/, Virginia Tech} and -@uref{http://www.linuxaudio.org/, linuxaudio.org} for sponsoring -our bandwidth. +非常感谢 @uref{http://www.vt.edu/, Virginia Tech} 和 +@uref{http://www.linuxaudio.org/, linuxaudio.org} 赞助我们的网络带宽。 @sourceimage{VTlogo_ITF,,,} @sourceimage{lao_banner_06_on_white_demo,,,} @@ -126,10 +118,9 @@ acknowledged. @divClass{hide} - @menu * Unix:: -* MacOS X:: +* Mac OS X:: * Windows:: * 源代码:: * 旧的下载:: @@ -137,6 +128,7 @@ acknowledged. @end menu @divEnd + @node Unix @unnumberedsec Unix @translationof Unix @@ -146,7 +138,6 @@ acknowledged. @divEnd @divClass{column-center-top} - @subheading Generic Packages or Distribution-Specific Packages? Many distributions include LilyPond in their normal package @@ -161,7 +152,6 @@ package manager. @divClass{column-left-top} - @subheading Generic Packages @subsubheading 下载 @@ -197,6 +187,7 @@ package manager. @end itemize + @subsubheading 安装 In the shell, type: @@ -214,12 +205,19 @@ 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 @divClass{column-right-top} - @subheading Compiling a file @lilypadCommandLine @@ -228,33 +226,31 @@ uninstall-lilypond @divClass{column-left-top} +@subheading 各大发行版专用的软件包 -@subheading Distribution-specific Packages - -Please use your distribution's package manager to install or -upgrade to these versions. +请使用您的发行版的软件包管理器,来安装或者升级到以下这些版本。 @itemize @item @sourceimage{logo-fedora,,,} @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447, -Fedora: LilyPond 2.12.3} +Fedora: LilyPond 2.14.2} @item @sourceimage{logo-ubuntu,,,} @uref{http://packages.ubuntu.com/search?keywords=lilypond, -Ubuntu: LilyPond 2.12.2} +Ubuntu: LilyPond 2.14.2} @item @sourceimage{logo-slackware,,,} @uref{http://www.johannes-schoepfer.de/lilypond/, -Slackware: LilyPond 2.12.3} +Slackware: LilyPond 2.14.2} @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,,,} @@ -267,7 +263,6 @@ openSUSE: LilyPond 2.12.3} @divClass{column-center-bottom} - @subheading Legalese @divClass{legal} @@ -281,8 +276,9 @@ acknowledged. @divEnd @divEnd -@node MacOS X -@unnumberedsec MacOS X + +@node Mac OS X +@unnumberedsec Mac OS X @translationof MacOS X @divClass{heading-center} @@ -290,8 +286,8 @@ acknowledged. @divEnd @divClass{column-left-top} +@subheading 软件包 -@subheading 包 @subsubheading 下载 @itemize @@ -299,14 +295,16 @@ acknowledged. @item @sourceimage{logo-macosx,,,} @downloadStableDarwinNormal -For MacOS X 10.4 or higher, running on Intel CPUs (if in doubt, -use this). +适用于 Mac OS X 10.4 或更高版本,在英特尔处理器 (Intel CPU) 上运行。(如果你不确定,请选择这个。) + +抱歉,目前尚未支持 Mac OS X 10.7 Lion。 @item @sourceimage{logo-macosx,,,} @downloadStableDarwinPPC -For MacOS X 10.4 or higher, running on G3 and G4 CPUs (old Apple -computers). +适用于 Mac OS X 10.4 或更高版本,在 G3 和 G4 处理器(上一代的苹果电脑)上运行。 + +抱歉,目前尚未支持 Mac OS X 10.7 Lion。 @end itemize @@ -322,7 +320,6 @@ Delete the LilyPond.app folder. @divEnd @divClass{column-right-top} - @subheading 编译文件 @lilypadOSX @@ -331,13 +328,11 @@ Delete the LilyPond.app folder. @divClass{column-left-top} +@subheading 在命令行下运行 -@subheading 在命令行内运行 +@warning{如果您使用图形界面已经很满意了,那么请忽略以下说明。} -@warning{If you are happy with the GUI, then please ignore these -instructions.} - -@subsubheading MacOS X 里的命令行 +@subsubheading Mac OS X 的命令行 The most convenient way to run lilypond scripts is by setting up @qq{helper} scripts of your own. @@ -393,11 +388,12 @@ This file should end with a blank line. @end enumerate + @subsubheading 调用单独的脚本 The scripts --- such as @command{lilypond-book}, @command{convert-ly}, @command{abc2ly}, and even @command{lilypond} itself --- are included -inside the @code{.app} file for MacOS@tie{}X. +inside the @code{.app} file for Mac@tie{}OS@tie{}X. Scripts can also be run from the command line by invoking them directly: @@ -415,7 +411,6 @@ The same is true for all other scripts in that directory, such as @divClass{column-center-bottom} - @subheading 法律条文 @divClass{legal} @@ -427,6 +422,8 @@ acknowledged. @divEnd @divEnd + + @node Windows @unnumberedsec Windows @translationof Windows @@ -436,8 +433,7 @@ acknowledged. @divEnd @divClass{column-left-top} - -@subheading 包 +@subheading 软件包 @subsubheading 下载 @@ -485,7 +481,6 @@ button when the uninstaller has completed. @divClass{column-right-top} - @subheading 编译文件 @lilypadWindows @@ -494,7 +489,6 @@ button when the uninstaller has completed. @divClass{column-left-top} - @subheading 在命令行中运行 @warning{If you are happy with the GUI, then please ignore these @@ -528,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. @@ -549,7 +543,6 @@ lilypond test.ly @divClass{column-center-bottom} - @subheading 法律条文 @divClass{legal} @@ -561,6 +554,8 @@ acknowledged. @divEnd @divEnd + + @node 源代码 @unnumberedsec 源代码 @translationof Source @@ -574,7 +569,6 @@ LilyPond yourself; almost all user needs are better met with the pre-built version.} @divClass{column-left-bottom} - @subheading 源代码包 @downloadStableSource{} @@ -586,13 +580,13 @@ download site}. @divEnd @divClass{column-right-bottom} - @subheading 编译指导 Instructions are listed in @rcontrib{Compiling}. @divEnd + @node 旧的下载 @unnumberedsec 旧的下载 @translationof Old downloads @@ -602,7 +596,6 @@ Instructions are listed in @rcontrib{Compiling}. @divEnd @divClass{column-center-top} - @subheading 所有版本 包含所有版本(旧和新)的列表见我们的 @@ -611,6 +604,7 @@ site}. @divEnd + @node GPL @unnumberedsec GPL @translationof GPL @@ -618,13 +612,12 @@ site}. @divClass{column-center-top} @subheading 软件许可证 -GNU LilyPond 在 GNU 通用公共许可证下发布。 -在 @ref{Freedom} 里我们介绍了这个许可证以及我们选择它的原因。 +GNU LilyPond 在 GNU 通用公共许可证 (GPL) 下发布。在 +@ref{Freedom} 里我们介绍了这个许可证以及我们选择它的原因。 @divEnd @divClass{column-center-bottom} - @subheading GNU 通用公共许可证 @include gpl.itexi diff --git a/Documentation/zh/web/introduction.itexi b/Documentation/zh/web/introduction.itexi index d0ec2cdd6a..5876d4cee7 100644 --- a/Documentation/zh/web/introduction.itexi +++ b/Documentation/zh/web/introduction.itexi @@ -1,140 +1,1305 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- -@c This file is part of web.texi @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 8052856914abafa960a0518ca8032b681c9d0588 When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c Translators: Ben Luo +@c Translators: Ben Luo, Anthony Fok @node 简介 @unnumbered 简介 @translationof Introduction - +@divClass{column-center-top} @subheading 我们的目标 -@subheading LilyPond 作什么 -@subheading 使用 LilyPond -@subheading LilyPond 如何工作 + +@imageFloat{flat-design,png,right} + +LilyPond 是怎么来的呢?从前,有两位音乐家,对于那种用电脑打谱的、看上去了无生气的乐谱,很是懊恼,希望超越现状。既然音乐家们都喜爱阅读漂亮的乐谱,那为什么程序员不能写出可以制作优雅乐谱的软件呢? + +于是,LilyPond +诞生了!这个系统把音乐家从繁琐的排版细节中释放出来,让他们能够专注于音乐制作。LilyPond +与音乐家携手,秉承古典音乐传统雕版印刷术最优良的传统,共同打造具有最高出版质量的乐谱。 + +@divEnd + +@divClass{link-headings} + +@divClass{column-left-top} +@subheading LilyPond 的功能 + +@itemize + +@item +@ref{特色}: LilyPond 都有些什么本领? + +@item +@ref{例子}: 让我看看实际的打谱效果! + +@item +@ref{自由}: LilyPond 是免费的自由软件。 + +@item +@ref{背景}: 我们的计算美学。 + +@end itemize +@divEnd + +@divClass{column-right-top} +@subheading LilyPond 的实际应用 +@itemize + +@item +@ref{制作}: 现实生活中 LilyPond 的应用。 + +@item +@ref{评价}: What do people say? + +@end itemize +@divEnd + +@divClass{column-center-bottom} +@subheading LilyPond 的工作原理 +@itemize + +@item +@ref{文本输入}: You write music as @emph{text}?! + +@item +@ref{编辑更简单}: Other ways of working with LilyPond. + +@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 -* 特色:: -* 例子:: -* 自由:: -* 背景:: -* 生产:: -* 测评:: -* 文本输入:: -* 编辑更简单:: +* 特色:: What can LilyPond do? +* 例子:: I want to see some music! +* 自由:: Freedom and the GPL. +* 背景:: Computational aesthetics. +* 制作:: Real-life use of LilyPond. +* 评价:: What do people say about it? +* 文本输入:: You write music as text?! +* 编辑更简单:: Other ways of working with LilyPond. @end menu +@divEnd + + @node 特色 @unnumberedsec 特色 @translationof Features +@divClass{column-center-top} @subheading 优雅 @subsubheading 杰出的古典雕版风格 + +@imageFloat{flat-design,png,right} + +LilyPond allows musicians to produce elegant sheet music that is +easy to read. Its developer community has spent thousands of hours +developing powerful music engraving software that results in beautifully +engraved music. All of LilyPond's style settings, font designs and +algorithms have been inspired by the finest hand-engraved music. +LilyPond output has the same strong, balanced and elegant look as the +best-engraved classical scores. This is further explained in our +@ref{Essay}. + + + @subsubheading 有效的版面选择 + +Spend less time with tweaking the output; LilyPond gets the +formatting correct right from the start. It determines spacing by +itself, and breaks lines and pages to provide a tight and uniform +layout. Clashes between lyrics, notes, and chords are resolved +and slurs and beams are sloped, automatically! + + +@divEnd + +@divClass{color2} @subheading 易于使用 + +@imageFloat{lilypond-book,png,right} + @subsubheading 基于文本的输入 + +LilyPond takes ASCII input, which you can produce in your favorite +text editor, quickly and comfortably. The input contains all the +information, so there is no need to remember complex command sequences: +simply save a file for later reference. + @subsubheading 音乐和文本混合 + +Put fragments of music into texts without cutting and pasting +pictures. Integrate music into @LaTeX{} or HTML seamlessly, or add +music to OpenOffice.org with OOoLilyPond. Plugins are also available +to allow LilyPond code in various blogs and wikis, making online +collaboration possible. + + @subsubheading 易用性 + +Text-based input also makes score-writing possible for users with +severe physical disabilities. Dexterity-impaired users who are +unable to type or control a computer mouse can use +speech-recognition software to edit LilyPond files. Even users +who are totally blind can use screen-reading software to write +LilyPond files -- an impossible task in graphical-based +score-writing programs. + @subsubheading 可扩展的设计 + +All settings can be changed to suit your personal typographical +taste. If that still is not enough, there is always the built-in +scripting language Scheme, a dialect of the powerful language +LISP. Settings, variables and functions are all documented in the +comprehensive program reference manual. + +@divEnd + +@divClass{color3} + @subheading 环境 -@subsubheading 自由软件 + +@imageFloat{frescobaldi-lilypond-editor-small,png,right} + +@subsubheading 免费的自由软件 + +LilyPond 是可以免费下载的!没错,是完全免费的,可从下载页获取。 + +它也是自由软件。It comes with source +code, and permission to change and copy it. So, are you irritated +by a bug, or yearning for a feature? Simply add it yourself, or +pay someone else to do it. + + @subsubheading 出色的支持 -@subsubheading 高级编辑器 -@subheading 现在哪? + +LilyPond runs on all popular platforms: GNU/Linux, Mac OS@tie{}X, and +Windows. LilyPond comes with extensive documentation and 数以百计的范例文件。There is an active user community answering +questions on the lilypond-user mailing list, while the development +team makes sure that problems are solved quickly. + + +@subsubheading 强大的编辑器 + + +Several developers, themselves active LilyPond users, have also +written tools specifically aimed at making the process of editing +LilyPond files faster and more effective. For some examples, see +@ref{Easier editing}. + +@divEnd +@divClass{column-center-bottom} +@subheading 然后呢? + +还没动心吗? Look at some specific @ref{Examples}. If you've +already decided to try LilyPond, first read about our +@ref{Text input}。 +@divEnd + + + @node 例子 @unnumberedsec 例子 @translationof Examples +LilyPond is a powerful and flexible tool for engraving tasks of +all kinds. Please browse our gallery of examples and be inspired! + +@newsItem @subsubheading 古典音乐 -@subsubheading 复杂的乐谱 + +This organ work by J.S. Bach is a fairly typical engraving project +in LilyPond. + +@exampleImage{bach-bwv610} +@newsEnd + +@newsItem +@subsubheading 复杂的乐谱 Complex Notation + +This example from @emph{Goyescas} by Enrique Granados shows some +of the more advanced features of typesetting, including kneed +beams, cross-staff stems, and voice-follow lines. + +@exampleImage{granados} +@newsEnd + +@newsItem @subsubheading 早期音乐 + +LilyPond also supports various types of ancient notation, such +as this passage of Gregorian chant. + +@exampleImage{ancient-headword} +@newsEnd + +@newsItem @subsubheading 现代音乐 + +Contemporary composers find LilyPond well-suited to displaying +unusual notation. Here is an excerpt from Trevor Bača's +@emph{Čáry}, for unaccompanied bass flute. + +@exampleImage{cary} +@newsEnd + + +@newsItem @subsubheading 有效,灵活地创造表演材料 -@subsubheading 谱号 + +Various performance materials can be created from the same source +code. This is an excerpt of @uref{http://nicolas.sceaux.free.fr/, +Nicolas Sceaux's} engraving of Handel's @emph{Giulio Cesare}, in +full score, piano-vocal reduction, and a violin part. + +@exampleImage{sesto-full} + +@exampleImage{sesto-piano} + +@exampleImage{sesto-violin} + +@newsEnd + +@newsItem +@subsubheading TAB 吉他谱 (Tablature) + +LilyPond 支持 TAB 吉他谱 (六线谱),which can be customized to +suit any instrument that reads from tablature. The tablature +staff is generated automatically from notes entered for the 5-line +staff. + +@exampleImage{tab-example} +@newsEnd + +@newsItem @subsubheading 申克分析图 -@subsubheading 声乐 + +Standard output can be modified heavily. Here is an impressive +Schenkerian analysis, created by Kris Schaffer, for an article +in @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. +The colors have been added for better visibility. + +@exampleImage{bach-schenker} +@newsEnd + +@newsItem +@subsubheading 声乐作品 + +LilyPond is excellent for vocal music of all kinds, from sacred +hymns to opera. Here is a 中世纪经文歌 with slightly unusual +requirements. The tenor voice is written in a different meter +than the others, but must line up as if it were in the same meter. +LilyPond handles this most elegantly. Note also the incipits with +Vaticana style clefs, the slashed stems indicating plicated notes, +and the ligature braces above certain groups of notes. + +@exampleImage{aucun-snippet} +@newsEnd + +@newsItem @subsubheading 教育方面的应用 + +LilyPond 同样非常适合用于教育用途。 +下面是一个简单的对位法练习的例子。 + +@exampleImage{theory} +@newsEnd + +@newsItem @subsubheading 流行音乐 + +It is simple to create pop lead sheets with melody, lyrics, +chord names, and fretboards. In this example you see some of the +predefined fretboard diagrams, but these can be heavily customized +to suit nearly any situation. + +@exampleImage{chart} +@newsEnd + +@newsItem @subsubheading 大型项目 -@subheading 现在哪? + +LilyPond is excellent for large projects like operas or works for +full symphony orchestra, as well. In addition, the text-based +input provides greater accessibility -- this example was +contributed by Hu Haipeng, a blind composer. + +@exampleImage{orchestra} +@newsEnd + + +@divClass{column-center-bottom} +@subheading 然后呢? + +还没动心吗?LilyPond 是自由软件, granting you +@ref{Freedom}. If you've already decided to try LilyPond, first +read about our @ref{Text input}. +@divEnd + + @node 自由 @unnumberedsec 自由 @translationof Freedom - +@divClass{column-center-top} @subheading 自由软件 + +@uref{http://www.gnu.org/, GNU} LilyPond is written and maintained +by a community of enthusiasts. It is published under the +@ref{GPL, GNU General Public License} and the @ref{FDL, GNU Free +Documentation License}, giving everybody the freedom to fix, +modify, and extend the program. Creating beautiful music should +not require hundreds of dollars of software! +@divEnd + + +@c @divClass{column-left-top} +@divClass{color2} +@divClass{keep-bullets} @subheading 使用者的好处在哪? + +@itemize + +@item +No cost: download and try it out! What do you have to lose? + +@item +Sharing: if you like the program, give a copy to 您的朋友, +老师、学生和同事! + +@item +Source available: if you are curious about how LilyPond creates +some notation, you can see exactly how it is done. + +@item +Extendible: you can add features, fix bugs, and change the +functionality. If you are not a programmer, you can hire somebody +to do those tasks. + +This may not seem appealing to casual musicians, but the ability +to extend software can be highly valuable to serious composers, +companies, and academics. + +@item +Future safety: if a commercial company goes bankrupt, what happens +to any electronic music which depends on their products? This is +not a concern with LilyPond; even if the entire development team +quits (extremely unlikely), the program will still be legally +available for copying, modifications, and distribution. + + +@end itemize + +@divEnd +@divEnd + + +@c @divClass{column-right-top} +@divClass{color3} +@divClass{keep-bullets} @subheading 为什么 LilyPond 的开发者会无偿 @qq{赠送} 他们的工作? -@subheading 现在哪? + +Most of us view LilyPond development as a hobby or volunteer work. +So this question is really asking @qq{why do people volunteer}? + +@itemize + +@item +Fun: working towards a goal can be enjoyable, especially when you +work as a team! + +@item +Shared goals: we all want beautiful sheet music, but few people +have the expertise (and nobody has the time!), to create a program +which can handle all situations. By working together -- one +person improves the automatic beaming code, another person +improves the shape of slurs, and a third person writes +documentation explaining how to use these features -- we can +achieve our goal with only a fraction of the individual effort. + +@item +@qq{Gift culture}: the Free Software +movement has created many great software projects, such as +@uref{http://kernel.org/, GNU/Linux}, +@uref{http://www.getfirefox.com/, Mozilla Firefox}, and +@uref{http://www.wesnoth.org/, Battle for Wesnoth}. Having +benefitted from these projects, some developers want to @qq{give +back} to the community. + +@item +Work experience: contributing to free software projects is a great way to +practice programming, documentation writing, documentation translation, +or design. This experience has helped some developers gain job offers +or scholarships. + + +@end itemize + +@divEnd +@divEnd + + +@divClass{column-center-bottom} +@subheading 然后呢? + +还没动心吗?Read our extensive essay about our engraving +philosophy in @ref{Background}. If you've already decided to try +LilyPond, first read about our @ref{Text input}. +@divEnd + + @node 背景 @unnumberedsec 背景 @translationof Background - +@divClass{column-center-top} @subheading 背景文章 -@subheading 现在哪? -@node 生产 -@unnumberedsec 生产 + +We have an extensive essay describing computational aesthetics: +the art of creating beauty with a computer. + +If you just want a quick introduction to LilyPond, the essay might +be too much material to read. If you would like to read it now, +please progress to @ref{Essay}. +@divEnd + +@divClass{column-center-bottom} +@subheading 然后呢? + +还没动心吗?Read about some of our users' +@ref{Productions} and sheet music. If you've already decided to +try LilyPond, first read about our @ref{Text input}. +@divEnd + + +@node 制作 +@unnumberedsec 制作 @translationof Productions +@divClass{column-left-top} +@subheading 音乐会 -@subheading 音乐厅 -@subheading 出版的五线谱音乐 -@subheading 现在哪? -@node 测评 -@unnumberedsec 测评 -@translationof Reviews +LilyPond engravings have been used for performances around the world. +Some highlights: + +@divClass{keep-bullets} +@itemize + +@item +Mussorgsky's @emph{Pictures at an exhibition}, re-orchestrated and +conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with +the @uref{http://www.junge-philharmonie-brandenburg.de/, +Junge Philharmonie Brandenburg} +on Oct 10 2011 and again on Apr 15-16 2012. + +@item +@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, composer and +musical director. His many, recent works include; @emph{Go Thy Way}, +performed by the @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} in March 2012; The +@emph{Just Out of Reach Suite} performed +by the +@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, +Chrysalis Duo} ; @emph{thrafsmata} performed in July 2011 by the +@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh +New Music Ensemble}. + + +@item +@emph{Anonymous Student Compliment or Complaint}, by +@uref{http://www.mikesolomon.org, Mike Solomon}, winner chosen from among +172 entries from 22 countries of the +@uref{http://leftcoastensemble.org/contest, 2011 Left Coast Composition Contest}. +Other works include, Norman (age 1) for clarinet solo, performed at the +@uref{http://emu.music.ufl.edu/fems_concerts.html, University of Florida}'s +Electroacoustic Music Festival (FEMF), October 2010. + +@item +A modern edition of the @emph{Serenata Erminia} by Alessandro Scarlatti, +edited by Thomas Griffin, Musicologist (意大利罗马). Performed on 22 +October 2010 in the Galleria of the Palazzo Zevallos Stigliano, Naples, +Italy. @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}, +in celebration of the composer's 350th birthday. + +@item +@uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury Baroque}'s +performance of Lully's @emph{Armide}, May 15-16, 2009, in Houston, +Texas (engraving by @uref{http://nicolas.sceaux.free.fr/, +Nicolas Sceaux}). + +@item +Instrumental excerpts from Rameau's @emph{Hippolyte et Aricie} at +St. James's Church in Manhattan, May 8, 2009, by Frederick Renz +and his ensemble @uref{http://www.earlymusicny.org/, Early Music +New York} (engraving by Nicolas Sceaux). + +@item +@emph{Affaire étrangère}, an opera by +@uref{http://valentin.villenave.net/,Valentin Villenave} +to a French libretto by +@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis +Trondheim}, premiered February 1, 2009 at +@uref{http://www.orchestre-montpellier.com/, L'Opéra National de +Montpellier}, France. + +@end itemize +@divEnd + +@divEnd + + +@divClass{column-right-top} +@subheading 已出版乐谱 + +@divClass{keep-bullets} +@itemize + +@item +@uref{http://www.mutopiaproject.org/index.html, Mutopia Project}, +over 1500 pieces of classical sheet music for 免费下载, and +the main showcase of LilyPond scores. + +@c don't make this "Mutopia" a link, since that looks silly. +@item +@uref{http://etudeapp.com, Etude}, @qq{sheet music on steroids} is +an iPhone app which displays piano music engraved with LilyPond, +including many pieces from Mutopia. The app includes a virtual +piano keyboard showing which keys to press to help beginners learn +how to read sheet music. + +@item +@uref{http://www.adoromusicpub.com/, Adoro Music Publishing}, +high-quality scores of sacred music, available for immediate +download or in traditional paper format. + +@item +@uref{http://www.shadylane.fr, The Shady Lane Publishing}, +a @qq{micro musical publishing house} whose goal is to promote a +new form of musical economy closer to the musicians and music +lovers. +@end itemize +@divEnd + +@divEnd + +@contactUsAbout{音乐会或者乐谱} + +@divClass{column-center-bottom} +@subheading 然后呢? + +Still not convinced? Read some of our users' @ref{Reviews}. +If you've already decided to try LilyPond, first read about our +@ref{Text input}. +@divEnd + +@c TRANSLATORS, so far it's mostly from +@c http://lilypond.org/web/switch/testimonials + +@node 评价 +@unnumberedsec 评价 +@translationof Reviews + +@divClass{column-left-top} @subheading 出版的文章 + +@divClass{keep-bullets} +@itemize + +@item +2011å¹´4月 + +@uref{http://www.linux-magazine.com,Linux Magazine} publishes an +article titled +@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf, +Projects on the Move}. It is an introductory article on MuseScore, +LilyPond and Chordii. Author Carla Schroder states @qq{LilyPond is +driven from the command line, but don’t let the lack of a GUI scare +you away; LilyPond is user-friendly and easy to learn}, and provides +a hands-on example. + +@item +2010å¹´5月 + +Peter Kirn, on the Create Digital Music website, publishes a +@uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,LilyPond +review}. He takes a balanced view on usage, praises LilyPond's +high-quality notation and suggests to try it out. + +@item +2009å¹´9月 + +德国的 LinuxUser 杂志写了一篇 +@uref{http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2009/10/Digitaler-Notenschluessel, +关于 LilyPond 的文章}。 + +@item +2009å¹´8月 + +Ann Drinan, on the +@uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org} +website, presents comments by two orchestra librarians who +talk about using software to maintain their libraries. + +@item +2009å¹´6月 + +In an @uref{http://news.lilynet.net/Free-Music-Now, article} +published in the French @emph{National Conservatory Parent +Association}'s yearly magazine, French composer and LilyPond +contributor Valentin Villenave explains how Free licenses, and +specifically LilyPond-engraved scores, are instrumental in +making written music accessible to all. + +@item +2008å¹´2月 + +In @uref{http://www.musicbyandrew.ca/finale-lilypond-1.html, +articles on his personal site}, Andrew Hawryluk compares Finale +and LilyPond in general terms, and evaluates engraving +capabilities of both pieces of software in detail. The second +article is an instructive analysis of engraving issues in +Rachmaninoff's Piano Prelude No. 6, including comparisons with a +hand-engraved reference edition. + +@item +2006å¹´6月 + +@uref{http://distrowatch.com,DistroWatch} awards LilyPond and +@uref{http://distrowatch.com/weekly.php?issue=20060605,writes} +@qq{Ladies and Gentleman, we are pleased to announce that, based +on readers' requests, the DistroWatch May 2006 donation has been +awarded to LilyPond (@euro{}190.00) and Lua (US$250.00).} + +@item +2005å¹´12月 + +@uref{http://linuxjournal.com,Linux Journal} publishes an article +titled @uref{http://www.linuxjournal.com/article/8364, Make +Stunning Schenker Graphs with GNU LilyPond}. It is an in-depth +but hands-on feature article with crisp LilyPond graphics. Author +Kris Shaffer remarks @qq{GNU LilyPond generates beautiful graphics +that make commercial alternatives seem second-rate.} + +@item +2005å¹´8月20日 + +比利时报纸 De Standaard investigates what drives Free +Software authors in an article titled +@uref{http://www.standaard.be/Artikel/Detail.aspx?artikelId=G42H5GD6, +Delen van KENNIS zonder WINSTBEJAG} (Non-profit sharing of +knowlegde) in its @q{DS2 bijlage}. LilyPond is used as an example +and the article is interspersed with quotes from an email +interview with Jan Nieuwenhuizen. This marks LilyPond's first +appearance in mainstream printed press. + +@item +2005å¹´6月 + +A French article on the LilyPond 2.6 release appeared on +@uref{http://linuxfr.org/2005/06/27/19210.html, linuxfr.org}. + +@item +2004å¹´10月 + +The editors of Computer!Totaal, a Dutch computer magazine, +@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, +describe LilyPond} in the October 2004 issue as: @qq{Wonderful +free (open source) software [..] The sheet music produced by +LilyPond is exceptionally pretty [..] a very powerful system that +can do almost anything.} + +@item +July, August 2004 + +Dave Phillips wrote an introductory article for +@uref{http://linuxjournal.com,Linux Journal}: At +the sounding edge: LilyPond, parts +@uref{http://www.linuxjournal.com/article/7657, one} and +@uref{http://www.linuxjournal.com/article/7719, two}. + +@item +2004å¹´3月 + +Chris Cannam +@uref{http://www.all-day-breakfast.com/cannam/linux-musician/lilypond.html,interviewed} +Han-Wen Nienhuys and Jan Nieuwenhuizen on linuxmusician.com +(original site defunct). This interview was also reviewed in a +@uref{http://slashdot.org/article.pl?sid=04/03/13/2054227&tid=, +slashdot story}. + +@item +2004å¹´2月 + +Jazz singer Gail Selkirk writes about +@uref{http://www.songbirdofswing.com/editorial_page/lilypond/, +Diving into LilyPond}. @qq{... you can make lead sheets or full +orchestral parts, and the results can be stunning.} +@uref{http://www.computermusic.co.uk/, Computer Music Special}, +issue CMS06. + +@end itemize + +@divEnd +@divEnd + + +@divClass{column-right-top} @subheading 用户推荐 -@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic -@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg -@subsubheading Darius Blasband, composer (Brussels, Belgium) -@subsubheading Kieren MacMillan, composer (Toronto, Canada) -@subsubheading Chris Cannam, lead programmer of the @uref{http://www.rosegardenmusic.com/, RoseGarden} project + +@divClass{testimonial-item} +@imageFloat{carter-brey,jpg, right} +@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey},纽约爱乐乐团 (New York Philharmonic) 大提琴首席 + +@qq{@dots{} I've written a couple of encore pieces for solo cello +which I've printed with LilyPond and which I'm going to submit to +Schirmer for publication. I'll bet their engraved version wouldn't +look half as sharp as mine!} +@divEnd + + +@divClass{testimonial-item} +@imageFloat{orm-finnendahl,jpg, left} +@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl},弗莱堡音乐学院 (Musikhochschule Freiburg) 作曲教授 + +@qq{Although I don't know [LilyPond] very well yet, I'm +@strong{*very} impressed. I used the program to input a motet of +Josquin Desprez in mensural notation and there's no doubt that +lilypond outscores all other notation programs easily concerning +speed, ease of use and look!} +@divEnd + + +@divClass{testimonial-item} +@imageFloat{darius-blasband,jpg, right} +@subsubheading Darius Blasband,作曲家 (比利时布鲁塞尔) + +@qq{[..after the first orchestra rehearsal] I got numerous +compliments about the quality of the scores. Even more +importantly, while LilyPond provides numerous hacks to improve the +way its scores look, what the orchestra got from me is basically +the raw, untouched output.} +@divEnd + + +@divClass{testimonial-item} +@subsubheading Kieren MacMillan, 作曲家 (加拿大多伦多) + +@qq{thanks and kudos to the development team for their incredible +work. I've never seen anything approaching the output that I get +from LilyPond -- I'm totally confident that my music publishing +needs will be fulfilled beyond my expectations using this great +application. [..] basically untweaked LilyPond output [..] looks +better than most recent @q{professional} publications I've compared +it to (q.v., just about any Warner Bros. score, and even many of +the most recent by @q{the old houses}). [..]} + +@qq{Beat that, Finale/Sibelius/Igor/whatever!!!} +@divEnd + + +@divClass{testimonial-item} +@subsubheading Chris Cannam,@uref{http://www.rosegardenmusic.com/, RoseGarden}项目的主程序员 + +@qq{LilyPond is obviously the zillion-ton gorilla [of great music +typesetting].} +@divEnd + + +@divClass{testimonial-item} @subsubheading Chris Snyder, @uref{http://www.adoromusicpub.com/, Adoro Music Publishing} -@subsubheading David Bobroff, Bass Trombone, Iceland Symphony Orchestra + +@qq{The way that music is entered for LilyPond causes me to think in a +more musical way -- there have been times when I've been stumped as +to how to tell Lily to engrave something, only to realize that +even if I did get it exactly as the composer wanted, the music +would be confusing to read. LilyPond makes it much easier for me +to work in my dual editor+engraver role.} + +@qq{I've been using LilyPond exclusively for my fledgling music +publishing business. Virtually without exception, every composer +has been blown away by the quality of the engraving when presented +with the proofs of their music about to be published. I deserve +some of the credit for this -- I spend a lot of time tweaking +output, especially ties (mainly in chords) -- but LilyPond gives +me an excellent starting point, a very intuitive interface, and +the ability to modify absolutely anything if I want to take the +time. I'm convinced that no commercial product can come close.} +@divEnd + + +@divClass{testimonial-item} +@subsubheading David Bobroff, 冰岛交响乐团,低音长号手 + +@qq{I think LilyPond is great [..] The more I learn about LilyPond +the more I like it!} +@divEnd + + +@divClass{testimonial-item} @subsubheading Vaylor Trucks, Electric guitar player (Yes, @uref{http://www.allmanbrothersband.com/modules.php?op=modload&name=userpage&file=content&page_id=12, related to}) -@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, @uref{http://www.mutopiaproject.org/, Mutopia} contributor + +@qq{I am super impressed with LilyPond [..]} + +@qq{THIS IS THE BEST PROGRAM EVER!!!} + +@qq{Thank you all SO MUCH for your hard work and dedication!} +@divEnd + + +@divClass{testimonial-item} +@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, @uref{http://www.mutopiaproject.org/, Mutopia} 贡献者 + +@qq{I had a kind of hate-passion relationship with it. Passion +because the first score I saw was so amazing! The description of +LilyPond lies about its beautifulness, it is too modest! [..] as +LilyPond is getting always better, and as I look closer how things +are done in scheme, I have less and less frustrations. Anyway, +what I mean is: thank you for providing LilyPond, it is really +good.} +@divEnd + + +@divClass{testimonial-item} @subsubheading @uref{http://www.troff.org/whoswho.html#werner, Werner Lemberg}, Conductor at the Theatre in Koblenz, Germany and distinguished GNU Hacker -@subsubheading Paul Davis, developer of @uref{http://jackaudio.org/, JACK} and @uref{http://www.ardour.org/, Ardour} + +@qq{Anyway, LilyPond does an amazingly good job!} +@divEnd + + +@divClass{testimonial-item} +@subsubheading Paul Davis,@uref{http://jackaudio.org/, JACK} 和 +@uref{http://www.ardour.org/, Ardour} 的开发者 + +@qq{I think [LilyPond is] an incredible program, and it produces +wonderful, wonderful output. when i read an interview about it +last year, i was raving to several friends of mine about its +potential.} +@divEnd + + +@divClass{testimonial-item} @subsubheading @uref{http://webusers.siba.fi/~mkuuskan/, Dr. Mika Kuuskankare}, researcher at the @uref{http://siba.fi, Sibelius Academy Finland}, composer and author of Expressive Notation Package (ENP) -@subsubheading @uref{http://camerondh.blogspot.com, David Cameron}, Musician, professional typesetter and long time SCORE user -@subheading 现在哪? + +@qq{I have the deepest respect towards LilyPond and towards its creators +and maintainers as I know from personal experience how difficult this +kind of software can be.} +@divEnd + + +@divClass{testimonial-item} +@subsubheading @uref{http://camerondh.blogspot.com, David Cameron},音乐家、专业音乐制谱员,和 SCORE 打谱软件的长期用户 + +@qq{My heartfelt thanks to everyone who contributes to this project. I +was a power SCORE user for big typesetting houses way back in the '90s, +but I feel LilyPond finally makes it possible for me to get exactly what +I want on the page, especially when it isn't "standard" practice.} +@divEnd + +@divEnd + +@contactUsAbout{新闻文章或者推荐} + +@divClass{column-center-bottom} +@subheading 然后呢? + +了解更多关于我们的 @ref{Text input}。 +@divEnd + + + @node 文本输入 @unnumberedsec 文本输入 @translationof Text input +@c TRANSLATORS, so far it's mostly from +@c http://lilypond.org/web/switch/howto @subheading @qq{编译} 音乐 + +@imageClickable{nereid-shot-small,png, (click to enlarge), nereid-shot,png, right} + +LilyPond is a @emph{compiled} system: it is run on a text file +describing the music. The resulting output is viewed on-screen or +printed. In some ways, LilyPond is more similar to a programming +language than graphical score editing software. + +You do not write music by dragging notes from a graphical toolbar +and placing them on a dynamically refreshing score; you write +music by typing text. This text is interpreted (or @qq{compiled}) +by LilyPond, which produces beautifully engraved sheet music. + +People accustomed to graphical user interfaces might need to learn +a new way of working, but the results are definitely worth it! + +@warning{We present a quick overview of our text input -- it's not +as complicated as it sounds! Don't worry about understanding +every detail in these examples; our beginner documentation covers +everything at a much more gradual pace.} + + @subsubheading 就像 A B C 一样简单 + +Notes are encoded with letters and numbers. Special commands are +entered with backslashes. + +@imageFloat{text-input-1-annotate,png,center} +@imageFloat{text-input-1-output,png,center} + +Alterations are made with different names: add @w{@code{-is}} for +sharp, and @w{@code{-es}} for flat (these are Dutch note names, other +languages are available). LilyPond figures out where to put +accidentals. + +@imageFloat{text-input-2-annotate,png,center} +@imageFloat{text-input-2-output,png,center} + + @subsubheading 流行音乐 + +Put chords and lyrics together to get a lead sheet: + +@imageFloat{text-input-pop-annotate,png,center} +@imageFloat{text-input-pop-output,png,center} + + + @subsubheading 配器部分 + +The input file contains the notes of piece of music. Score and +parts can be made from a single input file, so that changing a +note always affects the score and parts. To be able to include +the same music in multiple places, the music is assigned to a +@qq{variable} (a name). + +@imageFloat{text-input-parts-both-annotate,png,center} + + +This variable is then used in a single part (here transposed, with +condensed rests spanning several measures): + +@imageFloat{text-input-parts-single-annotate,png,center} +@imageFloat{text-input-parts-single-output,png,center} + + +The same variable is used in the full score (here in concert +pitch): + +@imageFloat{text-input-score-annotate,png,center} +@imageFloat{text-input-score-output,png,center} + + @subsubheading 初学者的文档 + +We realize that many users find this way of entering music a bit +odd. For this reason, we have written extensive documentation to +help new users, beginning with @ref{Learning}. The Learning +Manual is the best place to start, as many questions are answered +before they come up! + +Please read the Learning Manual before complaining about bugs! +New users occasionally believe that LilyPond is not working +correctly, when in fact it is working precisely as designed. + +More in-depth information is available in @ref{Manuals}. + + @subsubheading 更简单的编辑环境 -@subheading 现在哪? + +@imageClickable{lilykde-screenshot-small,png, + (click to enlarge),lilykde-screenshot,png,right} + +LilyPond is primarily concerned with producing top-quality +engraved sheet music; creating a Graphical User Interface (GUI) +would distract us from this goal. However, there are other +projects aimed at making it easier to create LilyPond input files. + +Some editing environments include syntax highlighting, automatic +command completion, and pre-made templates. Other programs +actually provide a GUI which allows direct manipulation of a +graphical score. For more information, see @ref{Easier editing}. + + + +@divClass{column-center-bottom} +@subheading 然后呢? + +您现在可以随时 @ref{Download, 下载 LilyPond} +了。还没动心吗?那就请您关注如何 @ref{Easier editing} 吧! + +@divEnd + + @node 编辑更简单 @unnumberedsec 编辑更简单 @translationof Easier editing +@divClass{column-center-top} @subheading LilyPondTool + +@imageClickable{lilypondtool-2.12-screenshot-400wide,png, + (click to enlarge),lilypondtool-2.12-screenshot,png,right} + +@sourceimage{logo-linux,,,} +@sourceimage{logo-freebsd,,,} +@sourceimage{logo-macosx,,,} +@sourceimage{logo-windows,,,} + +@uref{http://lilypondtool.organum.hu} + +Created as a plugin for the +@uref{http://www.jedit.org,jEdit} text editor, +LilyPondTool is one of the most feature-rich text-based tools for +editing LilyPond scores. Its features include a Document Wizard +with lyrics support to set up documents easier, and embedded PDF +viewer with advanced point-and-click support. + +@divEnd + +@divClass{column-center-top} @subheading Frescobaldi + +@imageClickable{frescobaldi-lilypond-editor-small,png, + (click to enlarge),frescobaldi-lilypond-editor,png,right} + +@sourceimage{logo-linux,,,} +@sourceimage{logo-freebsd,,,} +@sourceimage{logo-windows,,,} + +@uref{http://www.frescobaldi.org} + +Frescobaldi is lightweight, yet powerful LilyPond music and text editor +with a built-in PDF viewer. It is easy to use and will run on all major +operating systems (Linux, Mac OS X and Windows). + +@divEnd + +@divClass{column-center-top} @subheading Denemo + +@imageClickable{screenshot-denemo-small,png, + (click to enlarge),screenshot-denemo,png,right} + +@sourceimage{logo-linux,,,} +@sourceimage{logo-windows,,,} + +@uref{http://denemo.org} + +Denemo is a graphical editor which generates LilyPond source code, +and also allows audio playback. It allows users to view the +LilyPond source code in parallel to the graphical view. Extra +LilyPond tweaks can be attached to notes, chords etc. and are stored +with the Denemo file, so that users can continue to edit graphically. + +Moving the cursor in the LilyPond text moves the cursor in the graphical +view, and any syntax errors in your LilyPond tweaks are highlighted in +the text view when printed from there. + +@divEnd + +@divClass{column-center-top} @subheading 文本编辑器 + +@sourceimage{logo-linux,,,} +@sourceimage{logo-freebsd,,,} +@sourceimage{logo-macosx,,,} +@sourceimage{logo-windows,,,} + +@uref{http://www.gnu.org/software/emacs/} + +Emacs is a text editor with language-sensitive capabilities for +many different computer languages. Emacs is a highly extensible +editor and can be used as an Integrated Development Environment. +There is a @q{lilypond mode} which supplies the language +definitions for working with LilyPond source files. As well, one of +our developers has written +@uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}, an +Emacs major mode. + +@uref{http://www.vim.org} + +Vim is a minimal text editor and is an extension of the older Unix +@command{vi} editor. It is also extensible and configurable. + +As a general rule, if you are not already familiar with Emacs or +Vim, then you would probably prefer to use a different editor for +writing LilyPond input files. + +More information on setting up Emacs and Vim can be found in +@rprogram{Text editor support}. + +@sourceimage{logo-macosx,,,} +@uref{http://www.uoregon.edu/~koch/texshop} + +The TexShop editor for Mac OS@tie{}X can be extended to run LilyPond, +@command{lilypond-book} and @command{convert-ly} from within the editor, +using the extensions available at: + +@example +@uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts} +@end example + +@sourceimage{logo-macosx,,,} +There is a LilyPond bundle for TextMate, a commercial editor for MacOS. +It may be installed by running: + +@example +mkdir -p /Library/Application\ Support/TextMate/Bundles +cd /Library/Application\ Support/TextMate/Bundles +git clone http://github.com/textmate/lilypond.tmbundle.git + +@end example + +@divEnd + +@divClass{column-center-top} @subheading 可以导出 LilyPond 代码的程序 -@subsubheading 音符,谱号和 MIDI 编辑器: + + +@subsubheading Score, tab and MIDI editors (音符,谱号和 MIDI 编辑器: + +@itemize + +@item +@uref{http://www.canorus.org,Canorus}, a score editor, can also +export to LilyPond, but is still beta-software. Testers are +welcome, though. + +@item +@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml, +NtEd}, a score editor based on the +@uref{http://www.cairographics.org,Cairo} library, has experimental +support for exporting to LilyPond. + +@item +@uref{http://www.musescore.org,MuseScore}, a score editor, has +incomplete LilyPond export but is being actively developed. + +@item +@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm, +NW2LY} is a C# program which converts a +@uref{http://www.noteworthysoftware.com/,NoteWorthy} song into +LilyPond. + +@item +@uref{https://github.com/ciconia/ripple/blob/master/README.markdown, +Ripple} is a program that helps create scores and parts, including a +mode for mixing different musical works together in a single score or +part. + +@item +@uref{http://www.rosegardenmusic.com,Rosegarden}, an audio and MIDI +sequencer, which also has a score editor for single-staff editing. + +@item +@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, a +realtime monophonic MIDI to LilyPond converter. + +@item +@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, a multitrack tablature +editor and player, includes a score viewer and can export to LilyPond. + +@end itemize + @subsubheading 算法代码生成器 -@subheading 其它开发不活跃的程序 -@subheading 现在哪? -@subheading 法律术语 -@c -- SKELETON FILE -- +@itemize + +@item +@uref{http://www.projectabjad.org/,Abjad}, a +@uref{http://www.python.org/,Python} API for Formalized Score +Control designed to help composers build up complex pieces of +LilyPond notation in an iterative and incremental way. + +@item +@uref{http://common-lisp.net/project/fomus/,FOMUS}, a LISP library +to generate music notation from computer music software +environments. + +@item +@uref{http://strasheela.sourceforge.net,Strasheela}, an +environment built on top of the +@uref{http://www.mozart-oz.org/, Mozart/Oz} constraint programming +language. + +@end itemize +@divEnd + +@divClass{column-center-top} + +@subheading 其他开发不活跃的程序 + +@itemize + +@item +@uref{http://lilykde.googlecode.com/,LilyKDE} has been replaced by +@uref{http://www.frescobaldi.org/,Frescobaldi}, and exists as +LilyKDE3 for KDE 3.5 and lilypond-KDE4 for KDE 4.1 only. + +@item +@uref{http://noteedit.berlios.de,NoteEdit}, which imported +@uref{http://www.musicxml.com/xml.html,MusicXML}, has been forked +into +@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} +and @uref{http://canorus.org,Canorus}. + + +@item +@uref{http://lilycomp.sourceforge.net, LilyComp} is a graphical +note entry program, acting much like a number-pad which produces +lilypond notes. + +@end itemize + +@divEnd + + +@divClass{column-center-bottom} +@subheading 然后呢? + +You are now ready to @ref{Download, Download LilyPond}. + +Still not convinced? Many composers, musicians, and conductors +have learned how to write music in our input format. Experienced +users even report that they can enter a full score in LilyPond +faster than with a piano keyboard or mouse+GUI! Perhaps you would +like to review the @ref{Features}, @ref{Examples}, or the +@ref{Freedom} that LilyPond provides, or read about users' +@ref{Productions} and @ref{Reviews}. In addition, our +approach to the computational aesthetics of classical engraving is +explained in our @ref{Background}. + + +@subheading 法律条文 + +@divClass{legal} +All logos and product images are copyright and trademark +acknowledged. + +@logoLegalLinux + +@logoLegalFreeBSD + +@logoLegalMacOSX + +@logoLegalWindows + +@divEnd + +@divEnd diff --git a/Documentation/zh/web/manuals.itexi b/Documentation/zh/web/manuals.itexi index 5667e237ae..63fd22356c 100644 --- a/Documentation/zh/web/manuals.itexi +++ b/Documentation/zh/web/manuals.itexi @@ -1,13 +1,14 @@ -\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- -@c This file is part of web.texi +@c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 06eda15f45434056ed7f3ea80df551d251f2ab82 When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore @c Translators: Ben Luo +@c Translation checkers: Anthony Fok @node 手册 @unnumbered 手册 @@ -15,7 +16,7 @@ @macro details{reference} @spanClass{detail} -(@ref{\reference\, details of \reference\}) +(@ref{\reference\, \reference\ 的详情}) @spanEnd @end macro @@ -32,29 +33,27 @@ @divClass{link-headings} @divClass{column-center-top} - - @subheading 简介 @itemize @item @ref{Text input}: -LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里! +LilyPond 是 @strong{基于文本} 的音乐雕版印刷程序。请您先阅读这里的简介! @item @ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}} - @qq{must-read} LilyPond 的简单介绍。 + @qq{必读} LilyPond 的简单介绍。 @details{Learning} @item @ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}} -@emph{(optional reading)} 音乐术语和翻译。 +@emph{(选读)} 音乐术语和翻译。 @details{Glossary} @item @ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}} -@emph{(optional reading)} 计算机雕版印刷程序的背景信息。 +@emph{(选读)} 计算机雕版印刷的背景信息。 @details{Essay} @end itemize @@ -62,8 +61,7 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @divEnd @divClass{column-left-top} - -@subheading 正式用法 +@subheading 经常使用 @itemize @@ -79,7 +77,7 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}} -短的技巧和窍门。 +短小的技巧和窍门。 @details{Snippets} @end itemize @@ -88,8 +86,7 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @divClass{column-right-top} - -@subheading 不常用的用法 +@subheading 偶尔使用 @itemize @@ -104,12 +101,12 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}} -有什么新东西? +有什么新功能? @details{Changes} @item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}} -有想像力的调整。 +巧妙的调整。 @details{Extending} @item @@ -123,25 +120,29 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @divClass{column-center-bottom} +@subheading 其他资料 -@subheading 其它资料 @itemize +@item +@ref{All}: +以往的稳定版本文档,以及当前稳定版的文档压缩包。 + @item @ref{Translated}: 针对非英语读者的翻译情况。 @item -@ref{All}: -可下载和旧的手册。 +@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}: +用户创建的例子、窍门和秘诀。 @item @ref{Development}: -不稳定版的手册 +开发版的手册。 @item @ref{FDL}: -这些文档在 GNU 自由文档许可证下发行。 +这些文档以 GNU 自由文档许可证发行。 @end itemize @@ -151,19 +152,18 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @divClass{hide} - @menu * 学习:: 学习。 * 术语表:: 术语表。 * 文章:: 文章。 -* 五线谱:: 参考。 +* 记谱法:: 参考手册。 * 使用:: 使用。 * 片断:: 片断。 * 常见问题:: 常见问题。 * Web:: Web. * 变化:: 新闻。 * 扩展:: 编程。 -* 内部:: 内部。 +* 内部机制:: 内部机制。 * 翻译:: 翻译。 * 所有:: 所有手册。 * FDL:: 许可证。 @@ -181,13 +181,13 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @translationof Learning @divClass{column-left-top} -@subheading 学习手册 -本书解释了如何开始学习 LilyPond,同时也用简单的术语解释了一些关键的概念。 -你应该顺序地读这些章节。 +@subheading 学习手册 Learning manual -在每一大段的后面有@strong{参见}一段,它包含有对其它大段的交叉参考: -在第一次阅读的时候你不应该去看这些交叉参考。当你读完所有手册,你可能希望 -再读某些段,并去看些交叉参考来得到更多的信息。 +本书解释了如何开始学习 +LilyPond,同时也用简单的术语解释了一些关键的概念。您应该顺序地读这些章节。 + +在每一章节的后面有 @strong{See also} @strong{(参见)} +一段,它包含有对其他章节的交叉参考:在第一次阅读的时候,不要去看这些交叉参考。当您把整本手册都读完了,您可能希望重新阅读某些章节,并去看些交叉参考来得到更多的信息。 @divEnd @divClass{column-right-bottom} @@ -200,13 +200,15 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @divEnd + @node 术语表 @unnumberedsec 术语表 @translationof Glossary @divClass{column-left-top} -@subheading 术语表 -这解释了音乐术语也包括了不同语言的翻译。如果你对五线谱不熟悉,或者对音乐术语(尤其如果你不是以英语为母语的人)不熟悉,强烈建议你看术语表。 +@subheading 术语表 Glossary + +这解释了音乐术语也包括了不同语言的翻译。如果您对记谱法不熟悉,或者对音乐术语(尤其是如果您的母语不是英语)不熟悉,强烈建议您看术语表。 @divEnd @@ -225,14 +227,13 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @unnumberedsec 文章 @translationof Essay - @divClass{column-left-top} -@subheading 文章 +@subheading 文章 Essay -本书给出了音乐出版的简要历史,随后检查了 LilyPond 的雕版印刷技术。 -也对比了 LilyPond 和其它雕版印刷系统的不同。 +本书给出了音乐印刷术的简要历史,并探讨了 LilyPond +的雕版印刷技术。也对比了 LilyPond 和其他雕版印刷系统的区别。 -@warning{更详细的印刷例子都是以PDF的形式进行分析,因为PDF版本有更高的分辨率。} +@warning{因为 PDF 版分辨率更高,阅读 PDF 版可以更容易分析乐谱印刷例子的细节。} @divEnd @@ -246,16 +247,17 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @divEnd -@node 五线谱 -@unnumberedsec 五线谱 + +@node 记谱法 +@unnumberedsec 记谱法 @translationof Notation @divClass{column-left-top} -@subheading 五线谱参考 -本书解释了 LilyPond 所有生成五线谱的命令。 +@subheading 记谱法参考手册 Notation reference + +本书解释了所有生成乐谱的 LilyPond 命令。 -@warning{五线谱参考假设读者知道学习手册里的基本资料,也熟悉在术语表里 -英语音乐术语。} +@warning{《记谱法参考手册》(Notation reference) 假设读者知道《学习手册》(Learning manual) 里的基本资料,也熟悉在术语表里的英语音乐术语。} @divEnd @@ -275,10 +277,11 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @translationof Usage @divClass{column-left-top} -@subheading 使用手册 +@subheading 使用手册 Usage manual -这本书解释如何执行程序,如何让 LilyPond 五线谱和其它程序集成,也提出 -一些为了有效使用的 @qq{best practices} 。 +这本书解释如何执行各个程序,说明如何整合 LilyPond +记谱法和其他程序,并提出一些有助高效使用的 +@qq{最佳实践 (best practices)},是尝试任何大型项目前必读的推荐读物。 @divEnd @@ -287,27 +290,30 @@ LilyPond 是@strong{基于文本} 的音乐雕版印刷程序。首先读这里 @docLinks{Usage, usage, @rprogramnamed{Top,Usage}, @manualStableUsageSplit, - @manualStableUsageBig, 300 KB, - @manualStableUsagePdf, 400 KB} + @manualStableUsageBig, 400 KB, + @manualStableUsagePdf, 600 KB} @divEnd + @node 片断 @unnumberedsec 片断 @translationof Snippets @divClass{column-left-top} -@subheading 片断 +@subheading 片断 Snippets -这里显示的 LilyPond 片断集是从 -@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository} -(LSR)来的。所有的片断都是在公共域内。 +这里显示从 +@uref{http://lsr@/.dsi@/.unimi@/.it, +LilyPond 片断库 (LilyPond Snippet Repository@comma{} LSR)} +精选出来的一些 LilyPond 片断。所有的片断都属于公有领域。 -注意:本文档不是 LSR 的精确子集。LSR 运行在 LilyPond 的稳定版上,所以任何 -发行版中有关新特性的示例必须单独添加。它们保存在 @file{Documentation/snippets/new/} LilyPond 的源代码树里。 +注意:本文档并非完全是 LSR 的子集。LSR 后台所运行的是 LilyPond +稳定版,所以任何展示开发版中新特性的示例片断,都要另行添加。它们保存在 +LilyPond 源代码树的 @file{Documentation/snippets/new/} 里。 The list of snippets for each subsection of the Notation are also -linked from the @strong{参见} portion. +linked from the @strong{See also (参见)} portion. @divEnd @divClass{column-right-bottom} @@ -320,38 +326,43 @@ linked from the @strong{参见} portion. @divEnd + @node 常见问题 @unnumberedsec 常见问题 @translationof FAQ @divClass{column-center-top} -@subheading 问题简介 +@subheading 入门问题 -@subsubheading Where are the graphical canvas, menus, and toolbars? +@subsubheading 录入音符的图形乐谱版面、菜单和工具栏呢?都在哪里啊? + +LilyPond 是以文本的方式录入音乐的。请阅读有关我们的 @ref{Text input}。 -LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Text input}. @subsubheading 这里有很多文档!我都要读吗? -你需要读 @ref{Learning, Learning manual}。对于其它文档,你只需要读那些和 -你创作有关的段落。 +您需要读 @ref{Learning, Learning manual (学习手册)}。至于其他文档,您只需要读那些和您要创建的音乐符号有关的章节。 -@subsubheading 那里仍然有许多读物!这值得吗? +@subsubheading 那么还是要阅读不少东西呢!这值得吗? -请你自己决定;那些你可能想要用 LilyPond 的原因在 @ref{Introduction}里。 +这个您得自己决定了;在 @ref{Introduction} +页面有介绍一些您可能想要用 LilyPond 的原因。 @divEnd @divClass{column-center-bottom} -@subheading 使用的问题 +@subheading 使用上的问题 + +@subsubheading 有些东西不工作啊!我该如何解决? + +这在 @rprogram{Troubleshooting} 章节里解答。 + -@subsubheading 有些不工作!我如何修正? +@subsubheading 为什么您要改变语法? -这在 @rprogram{Troubleshooting}里解释。 +这在 @rprogram{Why does the syntax change?} 章节里阐述。 -@subsubheading 为什么你要改变语法? -这在 @rprogram{Why does the syntax change?} 里解释。 @divEnd @node Web @@ -361,13 +372,13 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divClass{column-left-top} @subheading Web -本手册提供了有关 LilyPond 的通用信息。它也包含了有关不同社区论坛,缺陷 -报告和开发的信息。 +本手册提供了有关 LilyPond +的通用信息。它也包含了有关不同社区论坛,错误报告和开发的信息。 @divEnd @divClass{column-right-bottom} -@subheading 读它 +@subheading 开始阅读 @subsubheading 最新手册 @@ -387,6 +398,7 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divEnd + @node 变化 @unnumberedsec 变化 @translationof Changes @@ -408,6 +420,7 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divEnd + @node 扩展 @unnumberedsec 扩展 @translationof Extending @@ -415,7 +428,7 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divClass{column-left-top} @subheading 扩展 LilyPond -本手册解释了如何为 Lilypond 写扩展程序。 +本手册解释了如何为 LilyPond 写扩展程序。 @divEnd @@ -429,20 +442,19 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divEnd -@node 内部 -@unnumberedsec 内部 + +@node 内部机制 +@unnumberedsec 内部机制 @translationof Internals @divClass{column-left-top} -@subheading 内部参考 +@subheading 内部机制参考手册 Internals reference -这是一个交叉链接页面的集合,这些页面把每一个 LilyPond 的类,对象和函数 -的本质细节进行了归档。它是从格式化好的源码中直接生成的。 +这是一个交叉链接页面的集合,这些页面把每一个 LilyPond +的类,对象和函数的本质细节进行了归档。它是从源码中的格式化定义直接生成的。 -几乎所有格式化好的内部函数用户可以直接使用。例如,绝大部分控制粗细值,距 -离等的变量可以在输入文件中改变。LilyPond 有大量格式化选项,所有这些选项 -都在这份文档中进行了描述。每一个五线谱的段都有一个子段 @b{参见},它指向 -生成的文档。 +几乎所有调整格式的内部函数,用户可以直接使用。例如,绝大部分控制粗细值,距离等的变量,可以在乐谱输入文件中进行更改。LilyPond +有大量格式化选项,所有这些选项都在这份文档中进行了描述。Notation reference (记谱法参考手册) 的各个章节都有一个 @b{See also (参见)} 小节 ,指向着一份自动生成的文档。 @divEnd @@ -456,15 +468,19 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divEnd + @node 翻译 @unnumberedsec 翻译 @translationof Translated @divClass{column-center-bottom} @subheading 翻译状态 + @include translations.itexi + @divEnd + @node 所有 @unnumberedsec 所有 @translationof All @@ -472,7 +488,7 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divClass{column-left-top} @subheading 可下载的版本 @ifclear web_version -可下载的压缩包只在 @uref{http://lilypond.org} 可见。 +可下载的压缩包只通过 @uref{http://lilypond.org} 网站提供。 @end ifclear @ifset web_version @@ -489,7 +505,8 @@ LilyPond 要求你以文本的方式写音乐。请阅读有关我们的 @ref{Te @divEnd @divClass{column-right-bottom} -@subheading 前一个稳定版 +@subheading 以往的稳定版本 + @divClass{keep-bullets} @itemize @@ -528,18 +545,22 @@ LilyPond 1.6 Documentation} @divEnd @divEnd + @node FDL @unnumberedsec FDL @translationof FDL @divClass{column-center-top} @subheading 文档许可证 -GNU LilyPond 在 GNU 通用公共许可证下发布。 -在 @ref{Freedom} 里我们介绍了这个许可证以及我们选择它的原因。 + +GNU LilyPond 的文档以 GNU 自由文档许可证 (GNU FDL) +发布。在 @ref{Freedom} 里我们介绍了这个许可证以及我们选择它的原因。 @divEnd @divClass{column-center-bottom} @subheading GNU 自由文档许可证 1.1 + @include fdl.itexi + @divEnd diff --git a/Documentation/zh/web/news-front.itexi b/Documentation/zh/web/news-front.itexi index 2a0e5461c2..efa7817f57 100644 --- a/Documentation/zh/web/news-front.itexi +++ b/Documentation/zh/web/news-front.itexi @@ -1,16 +1,119 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: zh -*- -@c This file is part of web.texi @ignore - Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955 + Translation of GIT committish: 06eda15f45434056ed7f3ea80df551d251f2ab82 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore -@c Translators: Ben Luo +@c This file is part of lilypond-web.texi and community.itexi -@subsubheading 第一个预发行版收回 @emph{Jan 13, 2011} -@subsubheading 2.14 的第一个预发行版 - LilyPond 2.13.46 发布了! @emph{Jan 12, 2011} -@subsubheading LilyPond 2.13.45 发布了! @emph{Jan 3, 2011} +@c when you add a new item, consider moving the lowest item(s) +@c into news.itexi. + +@c Translators: Ben Luo, Anthony Fok + +@c keep two blank lines between news entries + +@c used for news about the upcoming release; see CG 10.2 + + +@newsItem +@subsubheading LilyPond 2.15.40 发布了! @emph{June 05, 2012} + +我们很高兴宣布 LilyPond 2.15.40 的发布。这个版本如常解决了一些错误。 + +强烈建议普通用户 @strong{不要} 使用这个版本,而使用稳定的 2.14 +版。请注意,由于几个关键错误 (Critical bugs),这并不是下一个候选版本。 + +@newsEnd + + +@newsItem +@subsubheading 候选版 (Release candidate) 被撤回 @emph{June 01, 2012} + +我们发现了一个跟 2.14.2 版相比的一个“回归” +(regression) 退步问题,因此 LilyPond 2.15.39 不再是 +2.16.0 正式版的候选版本了。不过,请您继续测试它——我们想尽快发现(并修复!)任何剩余的“回归”。如果您发现任何问题,请向我们发送@ref{错误报告}。 + +@newsEnd + + +@newsItem +@subsubheading 2.16 的候选版 7 - LilyPond 2.15.39 发布了! @emph{May 22, 2012} + +LilyPond 2.15.39 发布了;这是即将推出的 2.16 +稳定版的第七个候选版本 +(release candidate)。欢迎各位用户试验这个版本。自 2.14.2 +以来的新功能,在网站上关于 @ref{开发} 页面的@qq{变更}手册有所描述。 + +目前尚未发现此版本有严重 (Critical) +问题。如果找不到严重问题,那么 2.16.0 +官方版将于2012å¹´6月5日正式发布。如果您发现任何问题,请向我们发送@ref{错误报告}。 + +@newsEnd + + +@newsItem +@subsubheading The LilyPond Report #26. @emph{May 22, 2012} + +The @emph{LilyPond Report} is back, with a new editor on board - +Pavel Roskin, who tells us about his adventures in strange lands +of compiler bugs! There is also a detailed report about current +development status, and an analysis of example LilyPond output - +see for yourself how close (or how far?) are we from matching +the quality of hand-engraved scores. + +Come +@uref{http://news.lilynet.net/?The-LilyPond-Report-26, read +LilyPond Report 26} now; comments and contributions are +warmly encouraged! + +@newsEnd + + +@newsItem +@subsubheading Release candidate 6 of 2.16 - LilyPond 2.15.38 released! @emph{May 3, 2012} + +LilyPond 2.15.38 is out; this is the sixth release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +@strong{Update:} Due to a few Critical bugs, another release +candidate will be required. + +@newsEnd + + +@newsItem +@subsubheading LilyPond takes part in Google Summer of Code 2012! @emph{April 25, 2012} + +Being a part of @uref{http://www.gnu.org/, GNU project}, we are participating in +@uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, +Google Summer of Code program}, which offers students stipends for +working on open source software. + +Our contributor Janek Warchoł was accepted for 2012 edition of GSoC. +He will be working on advanced lyrics positioning in LilyPond. + +@newsEnd + + +@newsItem +@subsubheading Release candidate 5 of 2.16 - LilyPond 2.15.37 released! @emph{April 19, 2012} + +LilyPond 2.15.37 is out; this is the fifth release candidate of +the upcoming 2.16 stable release. All users are invited to +experiment with this version. New features since 2.14.2 are +listed in the @qq{Changes} manual on the website section about +@ref{Development}. + +There are no known Critical issues with this release. If no +Critical bugs are found, then the official 2.16.0 release will be +on 03 May 2012. If you discover any problems, please send us +@ref{Bug reports}. + +@newsEnd -@c -- SKELETON FILE -- diff --git a/GNUmakefile.in b/GNUmakefile.in index d616202092..512b8ef598 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -38,6 +38,7 @@ LOCALSTEPMAKE_TEMPLATES=lilypond include $(depth)/make/stepmake.make +.PHONY: test info website local-dist: refresh-release-files dist-toplevel-txt-files @@ -59,6 +60,7 @@ refresh-release-files: $(MAKE) $(RELEASE_OUT_FILES) python-modules: + $(MAKE) -C scripts/build $(MAKE) -C python top-doc: python-modules @@ -101,7 +103,7 @@ ifeq ($(out),www) # installed in non-recursing target from TOP-SRC-DIR install-WWW: -$(INSTALL) -m 755 -d $(DESTDIR)$(webdir) - rsync -rl --exclude='*.signature' $(outdir)/offline-root $(DESTDIR)$(webdir) + rsync -rl --exclude='*.signature' $(outdir)/offline-root/ $(DESTDIR)$(webdir) $(MAKE) -C Documentation omf-local-install install-info-WWW: @@ -117,13 +119,29 @@ uninstall-WWW: # For both online and offline docs, issue `make doc WEB_TARGETS="offline online"' WEB_TARGETS = offline -WWW-post: +WEB_ROOT_FILES = $(WEB_TARGETS:%=$(outdir)/%-root/index.html) + +WEB_TRACKED_FILES = $(filter-out $(outdir)/index.html, \ + $(shell bash -O nullglob -c "echo $(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}")) \ + $(shell bash -O nullglob -c "echo input/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \ + $(shell bash -O nullglob -c "echo input/*/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \ + $(shell bash -O nullglob -c "echo input/*/*/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \ + $(shell bash -O nullglob -c "echo input/regression/lilypond-book/$(outdir)/*.{info,tex}") \ + $(shell bash -O nullglob -c "echo Documentation/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \ + $(shell bash -O nullglob -c "echo Documentation/$(outdir)/*/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") + +WWW-post: $(top-build-dir)/.htaccess $(WEB_ROOT_FILES) + # need UTF8 setting in case this is hosted on a website. +$(top-build-dir)/.htaccess: echo -e 'AddDefaultCharset utf-8\nAddCharset utf-8 .html\nAddCharset utf-8 .en\nAddCharset utf-8 .nl\nAddCharset utf-8 .txt\n' > $(top-build-dir)/.htaccess - $(buildscript-dir)/mutopia-index -o $(outdir)/examples.html input/ - find $(outdir) -name '*-root' | xargs rm -rf - $(buildscript-dir)/www_post $(PACKAGE_NAME) $(TOPLEVEL_VERSION) $(outdir) "$(WEB_TARGETS)" + +$(outdir)/offline-root/index.html: $(WEB_TRACKED_FILES) + $(buildscript-dir)/www_post $(PACKAGE_NAME) $(TOPLEVEL_VERSION) $(outdir) offline find $(outdir)/offline-root -type l | xargs rm -f + +$(outdir)/online-root/index.html: $(WEB_TRACKED_FILES) + $(buildscript-dir)/www_post $(PACKAGE_NAME) $(TOPLEVEL_VERSION) $(outdir) online endif # ifeq ($(out),www) # For those who cannot for the life in them remember to type @@ -150,16 +168,21 @@ src-ext = c cc yy ll hh icc py scm tex ps texi itexi tely itely sh doc-clean: snippets-clean $(tree-share-prefix)/lilypond-force -default: $(config_h) build-dir-setup +default: $(config_h) build-dir-setup build-scripts build-dir-setup: $(tree-share-prefix)/lilypond-force +build-scripts: + $(MAKE) -C scripts/build + PO_FILES = $(call src-wildcard,$(src-depth)/po/*.po) HELP_CATALOGS = $(PO_FILES:po/%.po=%) CATALOGS = $(HELP_CATALOGS:lilypond=) -$(tree-share-prefix)/lilypond-force link-tree: GNUmakefile $(outdir)/VERSION # Preparing LilyPond tree for build-dir exec +link-tree: $(tree-share-prefix)/lilypond-force + +$(tree-share-prefix)/lilypond-force: GNUmakefile $(outdir)/VERSION cd $(top-build-dir)/$(outbase) && rm -rf bin lib share mkdir -p $(tree-bin) mkdir -p $(tree-share-prefix) @@ -202,7 +225,9 @@ $(tree-share-prefix)/lilypond-force link-tree: GNUmakefile $(outdir)/VERSION ln -sf ../../../../../po/$(outconfbase)/$i.mo lilypond.mo) &&) true touch $(tree-share-prefix)/lilypond-force -$(tree-share-prefix)/mf-link-tree link-mf-tree: $(tree-share-prefix)/lilypond-force +link-mf-tree: $(tree-share-prefix)/mf-link-tree + +$(tree-share-prefix)/mf-link-tree: $(tree-share-prefix)/lilypond-force -rm -f $(tree-share-prefix)/fonts/otf/* && \ rm -f $(tree-share-prefix)/fonts/svg/* && \ rm -f $(tree-share-prefix)/fonts/fonts.conf && \ @@ -220,6 +245,7 @@ $(tree-share-prefix)/mf-link-tree link-mf-tree: $(tree-share-prefix)/lilypond-fo ln -s ../../../../../../mf/$(outconfbase)/*.tfm . -cd $(tree-share-prefix)/fonts/type1 && \ ln -s ../../../../../../mf/$(outconfbase)/*.pf? . + touch $(tree-share-prefix)/mf-link-tree TAGS.make: dummy etags -o $@ $(find $(top-src-dir) -name 'GNUmakefile*' -o -name '*.make') @@ -259,9 +285,32 @@ test: $(MAKE) -C input/regression/abc2ly out=test local-test $(MAKE) -C input/regression/lilypond-book out=test local-test -test-baseline: +ifndef BASELINE_COMMIT +BASELINE_COMMIT:=HEAD +endif + +ifdef LILYPOND_BASELINES +BASELINE_ARCHIVE:=$(LILYPOND_BASELINES)/baseline-$(shell git rev-list -1 $(BASELINE_COMMIT)).tar.gz + +test-baseline: $(BASELINE_ARCHIVE) + tar xzf $(BASELINE_ARCHIVE) + $(MAKE) test-snippets-clean + +$(BASELINE_ARCHIVE): + $(MAKE) test-baseline-create + tar czf $(BASELINE_ARCHIVE) input/regression/out-test-baseline \ + input/regression/midi/out-test-baseline \ + input/regression/musicxml/out-test-baseline \ + input/regression/abc2ly/out-test-baseline \ + input/regression/lilypond-book/out-test-baseline +else +test-baseline: test-baseline-create + $(MAKE) test-snippets-clean +endif + +test-baseline-create: @if test -d .git ; then \ - $(if $(shell git diff), echo "commit before base lining" && false,true) ; \ + $(if $(shell git diff $(BASELINE_COMMIT)), echo "commit before base lining" && false,true) ; \ fi $(MAKE) $(MAKE) test @@ -270,13 +319,11 @@ test-baseline: $(MAKE) out=test -C input/regression/musicxml local-test-baseline $(MAKE) out=test -C input/regression/abc2ly local-test-baseline $(MAKE) out=test -C input/regression/lilypond-book local-test-baseline - $(MAKE) test-snippets-clean - local-check: test rm -rf $(RESULT_DIR) mkdir -p $(RESULT_DIR) - $(buildscript-dir)/output-distance --create-images --output-dir $(RESULT_DIR) \ + $(buildscript-dir)/output-distance --local-datadir --create-images --output-dir $(RESULT_DIR) \ input/regression/out-test-baseline input/regression/out-test \ input/regression/midi/out-test-baseline input/regression/midi/out-test @find input ly -name '*.ly' -print |grep -v 'out.*/' | xargs grep '\\version' -L | grep -v "standard input" |sed 's/^/**** Missing version: /g' diff --git a/INSTALL.txt b/INSTALL.txt index 594698c1d8..0bd9f80979 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -27,6 +27,7 @@ INSTALL - compiling and installing GNU LilyPond Generating documentation Documentation editor's edit/compile cycle Building documentation + Building a single document Saving time with `CPU_COUNT' AJAX search Installing documentation @@ -64,8 +65,8 @@ in conjunction with a locally installed copy of the program. For more information, see *note Building documentation without compiling::. Attempts to compile LilyPond natively on Windows have been -unsuccessful, though a workaround is available (see *note Lilydev: -(lilypond-contributor)Lilydev.). +unsuccessful, though a workaround is available (see *note LilyDev: +(lilypond-contributor)LilyDev.). Requirements ============ @@ -377,6 +378,16 @@ run: TODO: Describe what `make' actually does. + + +See also +........ + + + + *note Generating documentation:: provides more info on the `make' +targets used to build the LilyPond documentation. + Saving time with the `-j' option -------------------------------- @@ -469,7 +480,8 @@ Documentation editor's edit/compile cycle * Initial documentation build: make [-jX] - make [-jX CPU_COUNT=X] doc _## can take an hour or more_ + make [-jX CPU_COUNT=X] doc _## can take an hour or more_ + make [-jX CPU_COUNT=X] doc-stage-1 _## to build only PDF documentation_ * Edit/compile cycle: @@ -478,17 +490,17 @@ Documentation editor's edit/compile cycle make [-jX] _## needed if editing outside_ _## Documentation/, but useful anyway_ _## for finding Texinfo errors._ - touch Documentation/*te?? _## bug workaround_ make [-jX CPU_COUNT=X] doc _## usually faster than initial build._ * Reset: - In some cases, it is possible to clean the compiled documentation - with `make doc-clean', but this method is not guaranteed to fix - everything. Instead, we recommend that you delete your `build/' - directory, and begin compiling from scratch. Since the - documentation compile takes much longer than the non-documentation - compile, this does not increase the overall time by a great deal. + It is generally possible to remove the compiled documentation from + your system with `make doc-clean', but this method is not 100% + guaranteed. Instead, if you want to be sure you have a clean + system, we recommend that you delete your `build/' directory, and + begin compiling from scratch. Since the documentation compile + takes much longer than the non-documentation compile, this does + not increase the overall time by a great deal. Building documentation @@ -499,10 +511,17 @@ built by issuing: make doc - The first time you run `make doc', the process can easily take an -hour or more. After that, `make doc' only makes changes to the -pre-built documentation where needed, so it may only take a minute or -two to test changes if the documentation is already built. + or, to build only the PDF documentation and not the HTML, + + make doc-stage-1 + + Note: The first time you run `make doc', the process can + easily take an hour or more with not much output on the + command line. + + After this initial build, `make doc' only makes changes to the +documentation where needed, so it may only take a minute or two to test +changes if the documentation is already built. If `make doc' succeeds, the HTML documentation tree is available in `out-www/offline-root/', and can be browsed locally. Various portions @@ -512,44 +531,56 @@ _portions_ of the docs. Please do not complain about anything which is broken in those places; the only complete set of documentation is in `out-www/offline-root/' from the top of the source tree. + `make doc' sends the output from most of the compilation to +logfiles. If the build fails for any reason, it should prompt you with +the name of a logfile which will provide information to help you work +out why the build failed. These logfiles are not deleted with +`make doc-clean'. To remove all the logfiles generated by the +compilation process, use: + + make log-clean + + `make doc' compiles the documents for all languages. To save some +compile time, the English language documents can be compiled on their +own with: + + make LANGS='' doc + +Similarly, it is possible to compile a subset of the translated +documentation by specifying their language codes on the command line. +For example, the French and German translations are compiled with: + + make LANGS='de fr' doc + +Note that this will also compile the English version. + Compilation of documentation in Info format with images can be done separately by issuing: make info +An issue when switching branches between master and translation is the +appearance/disappearance of translated versions of some manuals. If +you see such a warning from make: -Known issues and warnings -......................... - -If source files have changed since the last documentation build, output -files that need to be rebuilt are normally rebuilt, even if you do not -run `make doc-clean' first. However, build dependencies in the -documentation are so complex that some newly-edited files may not be -rebuilt as they should be; a workaround is to `touch' the top source -file for any manual you've edited. For example, if you make changes to -a file in `notation/', do: + No rule to make target `X', needed by `Y' - touch Documentation/notation.tely +Your best bet is to delete the file Y.dep and to try again. -The top sources possibly affected by this are: +Building a single document +.......................... - Documentation/extend.texi - Documentation/changes.tely - Documentation/contributor.texi - Documentation/essay.tely - Documentation/extending.tely - Documentation/learning.tely - Documentation/notation.tely - Documentation/snippets.tely - Documentation/usage.tely - Documentation/web.texi +It's possible to build a single document. For example, to rebuild only +`contributor.pdf', do the following: -You can `touch' all of them at once with: - - touch Documentation/*te?? + cd build/ + cd Documentation/ + touch ../../Documentation/contributor.texi + make out=www out-www/contributor.pdf -However, this will rebuild all of the manuals indiscriminately--it is -more efficient to `touch' only the affected files. + If you are only working on a single document, test-building it in +this way can give substantial time savings - recreating +`contributor.pdf', for example, takes a matter of seconds. Saving time with `CPU_COUNT' ............................ diff --git a/NEWS.txt b/NEWS.txt index 64fcff492d..6880edb9f8 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,391 +1,285 @@ -New features in 2.14 since 2.12 +New features in 2.16 since 2.14 ******************************* - * 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. + * Support for cross-staff stems on chords, using `crossStaff' and + the `Span_stem_engraver'. This calculates the length of + cross-staff stems automatically. - * 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. - - \include "articulate.ly" - \articulate << - all the rest of the score... - >> - - * Single beat repeats for sixteenth or shorter notes and beat - repeats for measures containing notes of varying durations are now - supported. - - [image of music] - - * Lilypond now engraves woodwind fingering charts. - - [image of music] - - * MIDI output has been improved - * the option `\set Score.midiChannelMapping = #'voice' puts - each voice on its own midi MIDI channel - - * the option `\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. - - * the default, `\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. - - * dynamics are now rendered as note velocities, no longer as - midi volume. This improves the sound on [high end] midi - renderers. - - * MIDI-import through Midi2ly is improved - * Midi2ly now also works on Windows systems - - * MIDI-files with more than 32 tracks are now handled - - * notes on certain simultaneous voices no longer ignored - - * notes overrunning a bar line are no longer truncated - - * initial key signature and time signature are respected - - * a problem with octaves in subsequent tracks/voices is fixed - - * initial support for multiple voices notated on one staff + [image of music] - * the instrumentName is set from track data - * new -skip option, rests are displayed by default + * The syntax of words (character sequences recognized without + enclosing quotes) and commands (now always a backslash `\' + followed by a word) has been unified across all modes: it now + consists of alphabetic characters, possibly enclosing isolated + dashes `-' and underlines `_'. - * rests overrunning a bar line are not truncated + As one consequence, using unquoted text scripts like (literally!) + { c-script c\f_script } + will now tend to result in invalid music. Omitting quote marks + for arbitrary text rather than keywords has never been good + practice or even documented, and it is unlikely to have seen + significant use. - * new -include-header option for setting titles + Staying with established conventions (like not using dashes or + underlines for command names intended to be used inside of music) + remains advisable. The reason for this change is more robust + recognition of LilyPond's lexical units for LilyPond itself as + well as external tools interpreting its syntax. - * new -preview option for big MIDI-files - The first feature was sponsored by Valentin Villenave, the other - features were sponsored by Image-Line Software for FL Studio. + * Support for Kievan square notation: - * A new `Completion_rest_engraver' is available for automatically - converting long rests which overrun bar lines, matching the - `Completion_heads_engraver' for notes - \layout { - \context { - \Voice - \remove "Note_heads_engraver" - \consists "Completion_heads_engraver" - \remove "Rest_engraver" - \consists "Completion_rest_engraver" - } - } - This feature was sponsored by Image-Line Software for FL Studio. - - * Dots can be added to the table of contents items using: - \paper { - tocItemMarkup = \tocItemWithDotsMarkup + \new KievanVoice { + \cadenzaOn + c d e f g a bes + \bar "kievan" } + [image of music] - * New markup commands `\pattern' and `\fill-with-pattern' are - available. [image of music] - * A minimal composer toolkit of modal transformations is provided. - A motif may be transposed, inverted and/or converted to its - retrograde within any scale. + * Augmentation dots now avoid the other voice in two-voice polyphony + so that users can move the `Dot_column_engraver' to set dots + independently for each `Voice'. - [image of music] + [image of music] - * Added minimal support for black mensural notation. - * Enhanced support for obliqua shapes within white mensural - ligatures. + * A Scheme function to adjust the control points of curves such as + slurs and ties, developed by several users, is now included in + LilyPond. - [image of music] + g8->( bes,-.) d4 + \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0)) + g8->( bes,!-.) d4 + [image of music] - * New markup functions `\with-link' and `\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. - * Compound time signatures are now supported by the `\compoundMeter' - command, which can be used instead of `\time': + * Use of `\tempo' specifications in `\midi' blocks (removed in + 2.9.16 in favor of explicit `tempoWholesPerMinute' settings) has + seen a revival: now any kind of property-setting music is turned + into context definitions within output specifications, allowing for + declarations like + \layout { \accidentalStyle modern } + \midi { \tempo 4. = 66 } - [image of music] + * The LilyPond G clef has been redesigned - upper loop is now more + balanced, bottom crook sticks out less and the "spine" (main + vertical line) is more evenly curved. The old and new versions can + be compared by looking at the documentation: old version + (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs), + new version + (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs). - * Lyrics above a staff must have their `staff-affinity' set to - `DOWN' or must have their `alignAboveContext' property set in - order to be properly aligned. For more information, see *note - Placing lyrics vertically: (lilypond-notation)Placing lyrics - vertically. + * Lilypond's stencil commands have been simplified to allow for less + code duplication and better height approximations of graphical + objects. The following stencil commands have been eliminated: + * `beam' - * `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 - `stringTunings' is set to a Scheme constant value. + * `bezier-sandwich' - New commands `makeStringTuning' and `contextStringTuning' allow - the creation of string tunings in the form of a Lilypond chord - construct. + * `bracket' - * By using `\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. + * `dashed-slur' - [image of music] + * `dot' - * Note names can be selected with a new `\language "italiano"' - command, which can be used in safe mode. The old `\include - "italiano.ly"' syntax is still supported for now, but will be - deprecated in the future. + * `oval' - * autobeaming is now disabled by `\cadenzaOn' and enabled by - `\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. + * `repeat-slash' - * 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. + * `zigzag-line' - * The part-combiner's decision to combine/not combine notes can now - be customized + * Flags are now treated as separate objects rather than as stem + parts. [image of music] - * Tablature staves show fret numbers only by default. To get the - former style, `\tabFullNotation' is provided. + * Two alternative methods for bar numbering can be set, especially + for when using repeated music; - * Funk-style and Walker-style shape notes have been added. + [image of music] - * Rests will no longer keep a staff alive if - `\RemoveEmptyStaffContext' is used. - * New option `-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. + * The following is a fundamental change in LilyPond's music + representation: Rhythmic events like `LyricEvent' and `NoteEvent' + are no longer wrapped in `EventChord' unless they have been + actually entered as part of a chord in the input. If you + manipulate music expressions in Scheme, the new behavior may + require changes in your code. Calling the music function + `\eventChords' or the Scheme function `event-chord-wrap!' + converts to the old representation; using one of those might be + easiest for keeping legacy code operative. - * 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. + The following three items are consequences of this change. - * The SVG backend has optional support for WOFF fonts - (http://www.w3.org/Submission/WOFF). Using the Scheme option `-d - svg-woff' together with the SVG backend selection `-d - backend=svg', produces SVG output with CSS WOFF font selection. + * The repetitive chord entry aid `q' has been reimplemented. + Repeated chords are now replaced right before interpreting a music + expression. In case the user wants to retain some events of the + original chord, he can run the repeat chord replacement function + `\chordRepeats' manually. - * 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: old version - (http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs), - new version - (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#Clef-glyphs). + * String numbers and right hand fingerings on single notes now appear + without having to be written inside of chord brackets. - * Text crescendo spanners can now be added directly using `\cresc', - `\dim' and `\decresc'. + * Music functions now work the same when used inside or outside of + chords, including all the possibilities of argument parsing. + Music variables can be used inside of chords: a construct like - [image of music] + tonic=fis' + { <\tonic \transpose c g \tonic> } + [image of music] - * The documented syntax of `lilypond' environments in the LaTeX mode - of `lilypond-book' has been changed to conform with standard LaTeX - syntax: options now come after the environment name: - \begin{lilypond}[OPTIONS] ... + now works as expected. One can use `#{...#}' for constructing + chord constituents. `\tweak' now works on single notes without + needing to wrap them in a chord. Using it on command events and + lyrics is now possible, but not likely to give results yet. - The previous syntax with options after `\begin' is still accepted - by `lilypond-book' but deprecated. Something like - sed -i '/begin\[/s/begin\(\[[^]]*]\)\({lilypond}\)/begin\2\1/' + * `\tweak' now takes an optional layout object specification. It can + be used for tweaking layout objects that are only indirectly + caused by the tweaked event, like accidentals, stems, and flags: - might do the trick for conversion. + <\tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g> + [image of music] - * 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. - * A variant of the Segno sign is provided: + * Scheme expressions inside of embedded Lilypond (`#{...#}') are now + executed in lexical closure of the surrounding Scheme code. `$' + is no longer special in embedded Lilypond. It can be used + unconditionally in Lilypond code for immediate evaluation of Scheme + expressions, similar to how `ly:export' could previously be used. + `ly:export' has been removed. As a consequence, `#' is now free + to delay evaluation of its argument until the parser actually + reduces the containing expression, greatly reducing the potential + for premature evaluation. There are also `splicing' operators `$@' + and `#@' for interpreting the members of a list individually. - [image of music] + * To reduce the necessity for using `$', Scheme expressions written + with `#' are interpreted as music inside of music lists, and as + markups or markup lists inside of markups. + * Support for jazz-like chords has been improved: Lydian and altered + chords are recognised; separators between chord modifiers are now + treated independently of separators between "slash" chords and + their bass notes (and by default, slashes are now only used for + the latter type of separator); additional pitches are no longer + prefixed with "add" by default; and the "m" in minor chords can be + customized. *note Customizing chord names: + (lilypond-notation)Customizing chord names. for more information. - * Context modifications (`\with' blocks) can be stored in variables - and inserted into contexts or other `\with' blocks: - - 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 - } - } - } - [image of music] + * The `\markuplines' command has been renamed to `\markuplist' for a + better match with its semantics and general Lilypond nomenclature. + * The interface for specifying string tunings in tablature has been + simplified considerably and employs the scheme function + `\stringTuning' for most purposes. - * A half-open articulation was added: + * Beams can now have their slopes preserved over line breaks. [image of music] - This is sometimes used to indicate half-open hi-hats. + To do this, several callback functions are now deprecated. + * `ly:beam::calc-least-squares-positions' - * The Unicode Bidirectional Algorithm is now fully supported for - single-line markup due to enhanced integration with Pango. + * `ly:beam::slope-damping' - * LilyPond is now licensed under the GNU GPL v3+. + * `ly:beam::shift-region-to-valid' + Furthermore, `ly:beam::quanting' now takes an additional argument + to help calculations over line breaks. All of these functions are + now automatically called when setting the `positions' parameter. - * In tablature, frets can be indicated with labels other than - numbers: + * In function arguments music, markups and Scheme expressions (as + well as several other syntactic entities) have become mostly + interchangeable and are told apart only by evaluating the + respective predicate. In several cases, the predicate is + consulted by the parser, like when deciding whether to interpret + `-3' as a number or a fingering event. - \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")) - 4. 8 4 - } - [image of music] + * Music functions (and their close relatives) can now be defined with + optional arguments. + * For defining commands executed only for their side-effects, + `define-void-function' is now available. - * Layout objects can be printed over a white background, which - whites-out objects in lower layers which lie beneath: + * There is a new `define-event-function' command in analogy to + `define-music-function' that can be used for defining music + functions acting as post events without requiring a direction + specifier (`-', `^', or `_') placed before them. - \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 + dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) + \relative c' { c\dyn pfsss } [image of music] - * Chords can be repeated using the `q' shortcut: + * A list of ASCII aliases for special characters can be included. - 8.-^ q16 q4-^ + \paper { + #(include-special-characters) + } + \markup "• † ©right; &OE; &ss; ¶" [image of music] - * With two-sided mode, margins for odd and even pages can be set - using `inner-margin' and `outer-margin': - - \paper { - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm - } - - * Paper margin defaults, as specified in - `ly/paper-defaults-init.ly', apply to the default paper size (a4) - and are automatically scaled according to the paper size chosen. - - * All combinations of `left-margin', `right-margin' and `line-width' - work now. There is no more need to set `line-width' manually - unless you explicitly want to. + * There is a new `define-scheme-function' command in analogy to + `define-music-function' that can be used to define functions + evaluating to Scheme expressions while accepting arguments in + Lilypond syntax. - * Support for using an alternative music font, such as Gonville, is - now added. - - * In addition to the existing `\hspace' markup command, a new - `\vspace' command has been added to provide an easy and flexible - way to add vertical space in markups. - - * The direction of manual beams can be set with `^[' and `_['. - - * A version of the breve note head has been added with two vertical - lines on each side. - - [image of music] - - - * 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. - - [image of music] - - - * Braces in markup can now be selected by point size using the - markup commands `\left-brace' and `\right-brace'. - - [image of music] + * The construct `#{ ... #}' can now be used not just for + constructing sequential music lists, but also for pitches + (distinguished from single note events by the absence of a + duration or other information that can't be part of a pitch), + single music events, void music expressions, post events, markups + (mostly freeing users from having to use the `markup' macro), + markup lists, number expressions, context definitions and + modifications, and a few other things. If it encloses nothing or + only a single music event, it no longer returns a sequential music + list but rather a void music expression or just the music event + itself, respectively. + * Pitches can be used on the right side of assignments. They are + distinguished from single note events by the absence of a duration + or other information that can't be part of a pitch. - * 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: - #(ly:set-option 'delete-intermediate-files #f) + * New command-line option `--loglevel=LEVEL' to control how much + output LilyPond creates. Possible values are ERROR, WARN, + BASIC_PROGRESS, PROGRESS, DEBUG. - * Dashed and dotted slurs, phrasing slurs, and ties have been made - variable thickness, and partially dashed slurs are now available: + * `\once \set' now correctly resets the property value to the + previous value. [image of music] - * An eyeglasses markup was added, indicating strongly to look at the - conductor for instructions: + * The alignment of dynamic spanners (hairpins, text crescendo, etc.) + is now automatically broken if a different direction is explicitly + given. [image of music] - * A snap-pizzicato (also known as Bartok-pizzicato) articulation was - added: + * Appoggiaturas and acciaccaturas now also work inside a slur, not + only inside a phrasing slur. Also, a function `\slashedGrace' was + added that does not use a slur from the acciaccatura note. [image of music] - * Tuplet number formatting functions are now available to print - other fractions and to add notes to the number or fraction: + * To suppress the line on a crescendo text spanner (and other + similar spanners), LilyPond now fully supports the `#'style = + #'none' property. [image of music] - * FretBoards now have a chordChanges property to keep repeated - FretBoard objects from being typeset. + * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz! - * 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 `staff-affinity' is defined. Some - page formatting variables (`page-top-space', `between-system-space - -padding', and `before- between- after-title-space') have been - replaced by flexible vertical dimensions. + * Glissandi can now span multiple lines. diff --git a/ROADMAP b/ROADMAP index 8b66091810..99ad6b7fb6 100644 --- a/ROADMAP +++ b/ROADMAP @@ -26,7 +26,6 @@ LilyPond's source files. | |-- notation/ Notation Reference | |-- usage/ Usage | |-- web/ The website -| | `-- ly-examples/ .ly files for the "Examples" page | | | | | | TRANSLATED MANUALS: @@ -36,6 +35,7 @@ LilyPond's source files. | | * individual chapters for each manual | | 2) a texidocs/ directory for snippet translations | | +| |-- cs/ Czech | |-- de/ German | |-- es/ Spanish | |-- fr/ French @@ -43,6 +43,7 @@ LilyPond's source files. | |-- it/ Italian | |-- ja/ Japanese | |-- nl/ Dutch +| |-- zh/ Chinese | | | | | | MISCELLANEOUS DOC STUFF: @@ -50,6 +51,7 @@ LilyPond's source files. | |-- css/ CSS files for HTML docs | |-- included/ .ly files used in the manuals | |-- logo/ Web logo and "note" icon +| |-- ly-examples/ .ly files for the "Examples" webpage | |-- misc/ Old announcements, ChangeLogs and NEWS | |-- pictures/ Images used (eps/jpg/png/svg) | | `-- pdf/ (pdf) @@ -95,6 +97,8 @@ LilyPond's source files. |-- input/ | `-- regression/ .ly regression tests | |-- abc2ly/ .abc regression tests +| |-- lilypond-book/ lilypond-book regression tests +| |-- midi/ midi2ly regression tests | `-- musicxml/ .xml and .itexi regression tests | | diff --git a/THANKS b/THANKS index 64e2a1f97c..783d75f8a5 100644 --- a/THANKS +++ b/THANKS @@ -1,3 +1,73 @@ +Release 2.16 +************ + +For information about the various official or semi-official positions, +check out + +The following are registered as having authored changes to the +repository of LilyPond since 2.14.2: + +Adam Spiers +Alberto Simoes +Aleksandr Andreev +Anthony Fok +Arnold Theresius +Benkő Pál +Bertrand Bordage +Carl D. Sorensen +Choan Gálvez +Colin Campbell +Daisuke Yamashita +David Kastrup +David Nalesnik +Dénes Harmath +Federico Bruni +Francisco Vila +Frédéric Bron +Graham Breed +Graham Percival +Han-Wen Nienhuys +Heikki Tauriainen +Ian Hulin +James Lowe +Jan Nieuwenhuizen +Jan-Peter Voigt +Janek Warchoł +Jean-Charles Malahieude +Joe Neeman +John Mandereau +Joseph Wakeling +Julien Rioux +Karin Hoethker +Keith OHara +Marc Hohl +Markus Oehme +Matthias Kilian +Michael Welsh Duggan +Mike Solomon +Neil Puttock +Nicolas Sceaux +Patrick McCarty +Patrick Schmidt +Pavel Roskin +Peter Chubb +Phil Holmes +Piers Titus van der Torren +Reinhold Kainhofer +Rodolfo Zitellini +Seafire +Stefan Weil +Sven Axelsson +Thomas Morley +Till Rettig +Trevor Daniels +Valentin Villenave +Werner Lemberg +Wol +Yoshiki Sawada +Łukasz Czerwiński + + Release 2.13 ************ diff --git a/VERSION b/VERSION index 1d1d9069c9..ec5897b610 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=2 -MINOR_VERSION=14 -PATCH_LEVEL=2 +MINOR_VERSION=16 +PATCH_LEVEL=0 MY_PATCH_LEVEL= -VERSION_STABLE=2.14.1 -VERSION_DEVEL=2.15.1 +VERSION_STABLE=2.14.2 +VERSION_DEVEL=2.15.95 diff --git a/aclocal.m4 b/aclocal.m4 index 8fe2dddb72..682b6b1bd1 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -286,6 +286,22 @@ AC_DEFUN(STEPMAKE_CXXTEMPLATE, [ fi ]) +AC_DEFUN(STEPMAKE_GXXCODEGENBUG, [ + AC_MSG_CHECKING([options for known g++ bugs]) + case "$GXX:$CXX_VERSION" in + yes:400600[[0-2]]) + AC_MSG_RESULT([-fno-optimize-sibling-calls (tail call bug)]) + CXXFLAGS="$CXXFLAGS -fno-optimize-sibling-calls" + ;; + yes:400700?) + AC_MSG_RESULT([-fno-tree-vrp (comparison bug)]) + CXXFLAGS="$CXXFLAGS -fno-tree-vrp" + ;; + *) AC_MSG_RESULT([none]) + esac + AC_SUBST(CXXFLAGS) +]) + AC_DEFUN(STEPMAKE_DATADIR, [ if test "$datadir" = "\${prefix}/share"; then @@ -405,9 +421,22 @@ EOF exit 2 fi - for d in 2 3 4 ; do + abssrcdir="`cd $srcdir; pwd`" + absbuilddir="`pwd`" + for d in 2 3 4 5 ; do for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name GNUmakefile`; do - mkdir -p $(dirname $mf) + case "$abssrcdir" in + "$absbuilddir"/*) +# source is below build directory, always copy + ;; + *) + case "$abssrcdir/${mf#./}" in + "$absbuilddir"/*) +# find descended into build directory, don't copy + continue + esac + esac + mkdir -p ${mf%/*} cat < $mf print 'depth=' + ('../' * ( $d-1 ) ) print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make' @@ -416,7 +445,18 @@ print 'MODULE_INCLUDES += \$(src-dir)/\$(outbase)' EOF done for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name '*.make' | grep -v config.make `; do - mkdir -p $(dirname $mf) + case "$abssrcdir" in + "$absbuilddir"/*) +# source is below build directory, always copy + ;; + *) + case "$abssrcdir/${mf#./}" in + "$absbuilddir"/*) +# find descended into build directory, don't copy + continue + esac + esac + mkdir -p ${mf%/*} cat < $mf print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make' print 'include \$(configure-srcdir)/$mf' @@ -424,12 +464,13 @@ EOF done done - + rm -f GNUmakefile cat < GNUmakefile depth = . include config\$(if \$(conf),-\$(conf),).make include \$(configure-srcdir)/GNUmakefile.in EOF + chmod 444 GNUmakefile AC_SUBST(VPATH) fi ]) @@ -494,13 +535,17 @@ EOF AC_MSG_RESULT($FLEXLEXER_FILE) ]) -AC_DEFUN(STEPMAKE_GCC, [ - if test "$GCC" = "yes"; then - STEPMAKE_CHECK_VERSION(CC, $1, $2) - else - warn="$CC (Please install *GNU* cc)" - STEPMAKE_ADD_ENTRY($1, $warn) +AC_DEFUN(STEPMAKE_GCC_OR_CLANG, [ + STEPMAKE_HAS_CLANG() + if test "$HAS_CLANG" = "no"; then + if test "$GCC" = "yes"; then + STEPMAKE_CHECK_VERSION(CC, $1, $2) + else + warn="$CC (Please install *GNU* cc)" + STEPMAKE_ADD_ENTRY($1, $warn) + fi fi + # no else, we're fine with any clang ]) AC_DEFUN(STEPMAKE_GETTEXT, [ @@ -518,7 +563,7 @@ AC_DEFUN(STEPMAKE_GETTEXT, [ AC_DEFUN(STEPMAKE_GUILE, [ - STEPMAKE_PATH_PROG(GUILE, guile, $1) + STEPMAKE_PATH_PROG(GUILE, guile guile1, $1) ]) @@ -560,7 +605,7 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [ test -n "$target_alias" && target_guile_config=$target_alias-guile-config test -n "$host_alias" && host_guile_config=$host_alias-guile-config AC_MSG_CHECKING([for guile-config]) - for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config; do + for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile1-config; do AC_MSG_RESULT([$guile_config]) if ! $guile_config --version > /dev/null 2>&1 ; then AC_MSG_WARN([cannot execute $guile_config]) @@ -573,7 +618,7 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [ done STEPMAKE_OPTIONAL_REQUIRED(GUILE_CONFIG, $guile_config, $1) if test $? -ne 0; then - STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package)') + STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package) or guile1-config (guile1-devel package)') fi STEPMAKE_CHECK_SEARCH_RESULT(GUILE_CONFIG) @@ -616,13 +661,25 @@ AC_DEFUN(STEPMAKE_DLOPEN, [ AC_CHECK_FUNCS(dlopen) ]) -AC_DEFUN(STEPMAKE_GXX, [ - if test "$GXX" = "yes"; then - STEPMAKE_CHECK_VERSION(CXX, $1, $2) - else - warn="$CXX (Please install *GNU* c++)" - STEPMAKE_ADD_ENTRY($1, $warn) +AC_DEFUN(STEPMAKE_HAS_CLANG, [ + AC_EGREP_CPP(yes, + [#ifdef __clang__ + yes + #endif + ], HAS_CLANG=yes, HAS_CLANG=no) +]) + +AC_DEFUN(STEPMAKE_GXX_OR_CLANG, [ + STEPMAKE_HAS_CLANG() + if test "$HAS_CLANG" = "no"; then + if test "$GXX" = "yes"; then + STEPMAKE_CHECK_VERSION(CXX, $1, $2) + else + warn="$CXX (Please install *GNU* c++)" + STEPMAKE_ADD_ENTRY($1, $warn) + fi fi + # no else, we're fine with any clang ]) @@ -899,7 +956,7 @@ AC_DEFUN(STEPMAKE_PATH_PROG, [ AC_CHECK_PROGS($1, $2, no) STEPMAKE_OPTIONAL_REQUIRED($1, $2, $3) if test $? -eq 0; then - AC_PATH_PROG($1, $2) + AC_PATH_PROGS($1, $2) if test -n "$4"; then STEPMAKE_CHECK_VERSION($1, $3, $4) fi @@ -978,7 +1035,11 @@ AC_DEFUN(STEPMAKE_PYTHON_DEVEL, [ # Clean out junk: http://bugs.python.org/issue3290 # Python headers may need some -f* flags, leave them in. # We want the sed commands to look like 's/-[WDOm][[:alnum:][:punct:]][[:alnum:][:punct:]]*//g' and 's/-arch [^[:space:]]*//g', but automake eats brackets. - PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'` + #PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'` + # The above sed BRE matches parts of legal options, stipping down part of that option, resulting in invalid gcc arguments. Gentoo Bug #415793 + # For instance, '-floop-stip-mime' becomes '-floop-strip', and '-fvect-cost-model' becomes '-fvect-cost'. + # Tentative fix to require a non alphanumeric character before the initial hyphen of the BRE or the hyphen being the first character in the string. + PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/\(^\|[[^[:alnum:]]]\)-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'` PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` fi diff --git a/config.hh.in b/config.hh.in index 3863a88d0d..800d77d8a2 100644 --- a/config.hh.in +++ b/config.hh.in @@ -94,3 +94,7 @@ /* define if Guile has type scm_t_subr */ #define HAVE_GUILE_SUBR_TYPE 0 + +/* define if cxxabi.h has workable demangler */ + +#define HAVE_CXA_DEMANGLE 0 diff --git a/config.make.in b/config.make.in index 93158d88f4..aa674379e3 100644 --- a/config.make.in +++ b/config.make.in @@ -25,6 +25,7 @@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GUILE_LIBS = @GUILE_LDFLAGS@ FREETYPE2_LIBS = @FREETYPE2_LIBS@ PANGO_FT2_LIBS = @PANGO_FT2_LIBS@ +CXXABI_LIBS = @CXXABI_LIBS@ CONFIG_LIBS = @LIBS@ @EXTRA_LIBS@ $(GUILE_LIBS) $(PANGO_FT2_LIBS) $(FONTCONFIG_LIBS) $(FREETYPE2_LIBS) CONFIG_LDFLAGS = @LDFLAGS@ @@ -89,6 +90,7 @@ vimdir = $(lilypond_datadir)/vim NCSB_SOURCE_FILES = @NCSB_SOURCE_FILES@ +NCSB_DIR = @NCSB_DIR@ ################################################################ ## PROGRAMS diff --git a/configure b/configure index 9086d57d45..cae6b7ce0c 100755 --- a/configure +++ b/configure @@ -664,6 +664,7 @@ T1ASM FONTFORGE GHOSTSCRIPT PYTHON_CONFIG +CXXABI_LIBS GUILE_LDFLAGS GUILE_CFLAGS GUILE_CONFIG @@ -673,18 +674,19 @@ METAPOST METAFONT MSGFMT FLEXLEXER_FILE -EGREP -GREP -CXXCPP FLEX BISON YFLAGS YACC RANLIB AR +EGREP +GREP +CXXCPP ac_ct_CXX CXXFLAGS CXX +NCSB_DIR NCSB_SOURCE_FILES FCLIST EXTRA_LIBS @@ -804,9 +806,9 @@ CPPFLAGS CXX CXXFLAGS CCC +CXXCPP YACC -YFLAGS -CXXCPP' +YFLAGS' # Initialize some variables set by options. @@ -1461,12 +1463,12 @@ Some influential environment variables: you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor YACC The `Yet Another C Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. - CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -4233,8 +4235,9 @@ fi { $as_echo "$as_me:$LINENO: checking New Century Schoolbook PFB files" >&5 $as_echo_n "checking New Century Schoolbook PFB files... " >&6; } + +UNCHECKED_NCSB_SOURCE_FILES="" if test "$NCSB_DIR" != "" ; then - NCSB_SOURCE_FILES="" for f in c059013l c059016l c059033l c059036l; do if test ! -f "$NCSB_DIR/$f.pfb"; then @@ -4243,7 +4246,7 @@ $as_echo "$as_me: WARNING: $NCSB_DIR does not contain $f.pfb." >&2;} warn_b=yes else - NCSB_SOURCE_FILES="$NCSB_DIR/$f.pfb $NCSB_SOURCE_FILES" + UNCHECKED_NCSB_SOURCE_FILES="$NCSB_DIR/$f.pfb $UNCHECKED_NCSB_SOURCE_FILES" fi done else @@ -4251,10 +4254,33 @@ else for style in Roman Italic "Bold Italic" Bold; do NCSB_FILE=`$FCLIST "Century Schoolbook L:style=$style:foundry=urw:fontformat=Type 1" file \ | head -n 1` - NCSB_FILE=`echo $NCSB_FILE | sed 's/^\(.*\):$/\1/g'` + NCSB_FILE=`echo $NCSB_FILE | sed 's/\(:.*\)$//g'` NCSB_FILE=`$PYTHON "$srcdir/scripts/auxiliar/readlink.py" $NCSB_FILE` - NCSB_SOURCE_FILES="$NCSB_FILE $NCSB_SOURCE_FILES" + UNCHECKED_NCSB_SOURCE_FILES="$NCSB_FILE $UNCHECKED_NCSB_SOURCE_FILES" done + NCSB_DIR=`$as_dirname -- $NCSB_FILE || +$as_expr X$NCSB_FILE : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$NCSB_FILE : 'X\(//\)[^/]' \| \ + X$NCSB_FILE : 'X\(//\)$' \| \ + X$NCSB_FILE : 'X\(/\)' \| . 2>/dev/null || +$as_echo X$NCSB_FILE | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` else { $as_echo "$as_me:$LINENO: result: not found" >&5 $as_echo "not found" >&6; } @@ -4262,6 +4288,18 @@ $as_echo "not found" >&6; } echo "or use --with-ncsb-dir" fi fi +NCSB_SOURCE_FILES="" +for f in $UNCHECKED_NCSB_SOURCE_FILES; do + if test "`grep Cyrillic "$f"`" = ""; then + + { $as_echo "$as_me:$LINENO: WARNING: $f does not have Cyrillic characters." >&5 +$as_echo "$as_me: WARNING: $f does not have Cyrillic characters." >&2;} + warn_b=yes + + else + NCSB_SOURCE_FILES="$f $NCSB_SOURCE_FILES" + fi +done { $as_echo "$as_me:$LINENO: result: $NCSB_SOURCE_FILES" >&5 $as_echo "$NCSB_SOURCE_FILES" >&6; } @@ -4416,94 +4454,11 @@ fi - - if test "$GCC" = "yes"; then - - r="`eval echo '$'"CC"`" - { $as_echo "$as_me:$LINENO: checking $r version" >&5 -$as_echo_n "checking $r version... " >&6; } - exe=` - ## which doesn't work in ash, if /usr/bin/which isn't installed - ## type -p doesn't work in ash - ## command -v doesn't work in zsh - ## command -v "$r" 2>&1 - ## this test should work in ash, bash, pdksh (ksh), zsh - type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' -` - if test -n ""; then - ver="" - else - ver=` - ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' - ## - ## ARG. - ## Workaround for broken Debian gcc version string: - ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) - ## - ## -V: Workaround for python - - #dnl - - ## Assume and hunt for dotted version multiplet. - ## use eval trickery, because we cannot use multi-level $() instead of `` - ## for compatibility reasons. - - ## grab the first version number in --version output. - eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | - grep -E '(^| )[0-9][0-9]*\.[0-9]' | - head -n 1 | - tr ' ' '\n' | - sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | - grep -E '(^| )[0-9][0-9]*\.[0-9]' | - head -n 1\`\" - - if test -z "$_ver"; then - ## If empty, try date [fontforge] - eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | grep '[0-9]\{6,8\}' \ - | head -n 1 \ - | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" - fi - echo "$_ver" - #dnl -` - fi - num=` - echo "$ver" | awk -F. ' - { - if ($3) {three = $3} - else {three = 0} - } - {printf "%.0f\n", $1*1000000 + $2*1000 + three}' -` - req=` - echo "3.4" | awk -F. ' - { - if ($3) {three = $3} - else {three = 0} - } - {printf "%.0f\n", $1*1000000 + $2*1000 + three}' -` - { $as_echo "$as_me:$LINENO: result: $ver" >&5 -$as_echo "$ver" >&6; } - if test "$num" -lt "$req"; then - - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 3.4 (installed: $ver)"\"`\" - - fi - vervar="`echo CC | tr 'a-z' 'A-Z'`_VERSION" - eval `echo $vervar=$num` -## AC_SUBST(`eval echo $vervar`) - - else - warn="$CC (Please install *GNU* cc)" - - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"$warn\"`\" - - fi - - - - ac_ext=cpp +# this checks if we have GNU C by compiling a program with +# __GNUC__, but that macro now unofficially means "the compiler +# supports the GNU C extensions" -- the intel C compiler and clang +# both support __GNUC__! +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -4876,329 +4831,399 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 - r="`eval echo '$'"CXX"`" - if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"CXX"`' : '.*\(echo\)' > /dev/null; then - true - else - ##STEPMAKE_WARN(cannot find . ) - false - fi - - if test $? -ne 0; then - - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"c++\"`\" - - if test "REQUIRED" = "REQUIRED"; then - command="echo ERROR: c++ not found" - # abort configure process here? - else - command="- echo c++ not found" - fi - eval "CXX"='$command' - false - else - true - fi - - - CXXFLAGS="$CXXFLAGS $OPTIMIZE" - LD='$(CXX)' + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi - if test "$GXX" = "yes"; then + done + ac_cv_prog_CXXCPP=$CXXCPP - r="`eval echo '$'"CXX"`" - { $as_echo "$as_me:$LINENO: checking $r version" >&5 -$as_echo_n "checking $r version... " >&6; } - exe=` - ## which doesn't work in ash, if /usr/bin/which isn't installed - ## type -p doesn't work in ash - ## command -v doesn't work in zsh - ## command -v "$r" 2>&1 - ## this test should work in ash, bash, pdksh (ksh), zsh - type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' -` - if test -n ""; then - ver="" - else - ver=` - ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' - ## - ## ARG. - ## Workaround for broken Debian gcc version string: - ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) - ## - ## -V: Workaround for python - - #dnl - - ## Assume and hunt for dotted version multiplet. - ## use eval trickery, because we cannot use multi-level $() instead of `` - ## for compatibility reasons. - - ## grab the first version number in --version output. - eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | - grep -E '(^| )[0-9][0-9]*\.[0-9]' | - head -n 1 | - tr ' ' '\n' | - sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | - grep -E '(^| )[0-9][0-9]*\.[0-9]' | - head -n 1\`\" - - if test -z "$_ver"; then - ## If empty, try date [fontforge] - eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | grep '[0-9]\{6,8\}' \ - | head -n 1 \ - | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" - fi - echo "$_ver" - #dnl -` - fi - num=` - echo "$ver" | awk -F. ' - { - if ($3) {three = $3} - else {three = 0} - } - {printf "%.0f\n", $1*1000000 + $2*1000 + three}' -` - req=` - echo "3.4" | awk -F. ' - { - if ($3) {three = $3} - else {three = 0} - } - {printf "%.0f\n", $1*1000000 + $2*1000 + three}' -` - { $as_echo "$as_me:$LINENO: result: $ver" >&5 -$as_echo "$ver" >&6; } - if test "$num" -lt "$req"; then - - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 3.4 (installed: $ver)"\"`\" - - fi - vervar="`echo CXX | tr 'a-z' 'A-Z'`_VERSION" - eval `echo $vervar=$num` -## AC_SUBST(`eval echo $vervar`) - - else - warn="$CXX (Please install *GNU* c++)" - - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"$warn\"`\" - - fi - - - { $as_echo "$as_me:$LINENO: checking whether explicit instantiation is needed" >&5 -$as_echo_n "checking whether explicit instantiation is needed... " >&6; } -if test "${stepmake_cv_need_explicit_instantiation+set}" = set; then - $as_echo_n "(cached) " >&6 +fi + CXXCPP=$ac_cv_prog_CXXCPP else - -cat >conftest.$ac_ext <<_ACEOF + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - - template struct foo { static int baz; }; - template int foo::baz = 1; - -int -main () -{ - return foo::baz; - ; - return 0; -} +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" +if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext }; then - stepmake_cv_need_explicit_instantiation=no + : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - stepmake_cv_need_explicit_instantiation=yes -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext + # Broken: fails on valid input. +continue fi -{ $as_echo "$as_me:$LINENO: result: $stepmake_cv_need_explicit_instantiation" >&5 -$as_echo "$stepmake_cv_need_explicit_instantiation" >&6; } - if test x"$stepmake_cv_need_explicit_instantiation"x = x"yes"x; then - cat >>confdefs.h <<\_ACEOF -#define NEED_EXPLICIT_INSTANTIATION 1 -_ACEOF - - fi +rm -f conftest.err conftest.$ac_ext - { $as_echo "$as_me:$LINENO: checking for stl.data () method" >&5 -$as_echo_n "checking for stl.data () method... " >&6; } -if test "${stepmake_cv_stl_data_method+set}" = set; then - $as_echo_n "(cached) " >&6 -else + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - -#include -using namespace std; -vector v; -void *p = v.data (); - -int -main () -{ - - ; - return 0; -} +#include _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" +if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then - stepmake_cv_stl_data_method=yes + }; then + # Broken: success on invalid input. +continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - stepmake_cv_stl_data_method=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + # Passes both tests. +ac_preproc_ok=: +break fi -{ $as_echo "$as_me:$LINENO: result: $stepmake_cv_stl_data_method" >&5 -$as_echo "$stepmake_cv_stl_data_method" >&6; } - if test $stepmake_cv_stl_data_method = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STL_DATA_METHOD 1 -_ACEOF +rm -f conftest.err conftest.$ac_ext - fi +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_AR+set}" = set; then +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:$LINENO: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_GREP=$GREP +fi + fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" - test -n "$AR" && break +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done done -test -n "$AR" || AR="no" +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP +fi + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" - r="`eval echo '$'"AR"`" - if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"AR"`' : '.*\(echo\)' > /dev/null; then - true - else - ##STEPMAKE_WARN(cannot find . ) - false - fi - if test $? -ne 0; then - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"ar\"`\" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __clang__ + yes + #endif - if test "REQUIRED" = "REQUIRED"; then - command="echo ERROR: ar not found" - # abort configure process here? - else - command="- echo ar not found" - fi - eval "AR"='$command' - false - else - true - fi +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + HAS_CLANG=yes +else + HAS_CLANG=no +fi +rm -f conftest* - if test $? -eq 0 -a -n ""; then - r="`eval echo '$'"AR"`" + if test "$HAS_CLANG" = "no"; then + if test "$GCC" = "yes"; then + + r="`eval echo '$'"CC"`" { $as_echo "$as_me:$LINENO: checking $r version" >&5 $as_echo_n "checking $r version... " >&6; } exe=` @@ -5255,7 +5280,7 @@ $as_echo_n "checking $r version... " >&6; } {printf "%.0f\n", $1*1000000 + $2*1000 + three}' ` req=` - echo "" | awk -F. ' + echo "3.4" | awk -F. ' { if ($3) {three = $3} else {three = 0} @@ -5266,25 +5291,45 @@ $as_echo_n "checking $r version... " >&6; } $as_echo "$ver" >&6; } if test "$num" -lt "$req"; then - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= (installed: $ver)"\"`\" + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 3.4 (installed: $ver)"\"`\" fi - vervar="`echo AR | tr 'a-z' 'A-Z'`_VERSION" + vervar="`echo CC | tr 'a-z' 'A-Z'`_VERSION" eval `echo $vervar=$num` ## AC_SUBST(`eval echo $vervar`) + else + warn="$CC (Please install *GNU* cc)" + + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"$warn\"`\" + + fi fi + # no else, we're fine with any clang + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then +if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -5293,7 +5338,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5303,28 +5348,32 @@ IFS=$as_save_IFS fi fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi + test -n "$CXX" && break + done fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -5333,7 +5382,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" + ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5343,17 +5392,21 @@ IFS=$as_save_IFS fi fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) @@ -5361,79 +5414,82 @@ yes:) $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - RANLIB=$ac_ct_RANLIB + CXX=$ac_ct_CXX fi -else - RANLIB="$ac_cv_prog_RANLIB" fi + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } - - r="`eval echo '$'"RANLIB"`" - if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"RANLIB"`' : '.*\(echo\)' > /dev/null; then - true - else - ##STEPMAKE_WARN(cannot find . ) - false - fi - - if test $? -ne 0; then - - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"ranlib\"`\" - - if test "REQUIRED" = "REQUIRED"; then - command="echo ERROR: ranlib not found" - # abort configure process here? - else - command="- echo ranlib not found" - fi - eval "RANLIB"='$command' - false - else - true - fi - - - - -{ $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); int main () { -return dlopen (); +#ifndef __GNUC__ + choke me +#endif + ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -5442,97 +5498,100 @@ $as_echo "$ac_try_echo") >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_dl_dlopen=yes + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_dl_dlopen=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + ac_compiler_gnu=no fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 -_ACEOF - LIBS="-ldl $LIBS" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi - - -for ac_func in dlopen -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif +int +main () +{ -#undef $ac_func + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () { -return $ac_func (); + ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -5541,133 +5600,91 @@ $as_echo "$ac_try_echo") >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" + } && test -s conftest.$ac_objext; then + : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" -fi + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +int +main () +{ + + ; + return 0; +} _ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi -done - - -# Do not use bison 1.50 and 1.75. -# 1.29 is required fr %locations, but I'm not sure it's enough --ns - - # ugh, automake: we want (and check for) bison - for ac_prog in 'bison -y' byacc -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_YACC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_YACC="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -fi -YACC=$ac_cv_prog_YACC -if test -n "$YACC"; then - { $as_echo "$as_me:$LINENO: result: $YACC" >&5 -$as_echo "$YACC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" - - - - for ac_prog in bison -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_BISON+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$BISON"; then - ac_cv_prog_BISON="$BISON" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_BISON="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -BISON=$ac_cv_prog_BISON -if test -n "$BISON"; then - { $as_echo "$as_me:$LINENO: result: $BISON" >&5 -$as_echo "$BISON" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi fi - - - test -n "$BISON" && break -done -test -n "$BISON" || BISON="no" +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - r="`eval echo '$'"BISON"`" - if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"BISON"`' : '.*\(echo\)' > /dev/null; then + r="`eval echo '$'"CXX"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"CXX"`' : '.*\(echo\)' > /dev/null; then true else ##STEPMAKE_WARN(cannot find . ) @@ -5676,104 +5693,54 @@ test -n "$BISON" || BISON="no" if test $? -ne 0; then - eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \"bison\"`\" + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"c++\"`\" - if test "OPTIONAL" = "REQUIRED"; then - command="echo ERROR: bison not found" + if test "REQUIRED" = "REQUIRED"; then + command="echo ERROR: c++ not found" # abort configure process here? else - command="- echo bison not found" + command="- echo c++ not found" fi - eval "BISON"='$command' + eval "CXX"='$command' false else true fi - if test $? -eq 0 -a -n ""; then - r="`eval echo '$'"BISON"`" - { $as_echo "$as_me:$LINENO: checking $r version" >&5 -$as_echo_n "checking $r version... " >&6; } - exe=` - ## which doesn't work in ash, if /usr/bin/which isn't installed - ## type -p doesn't work in ash - ## command -v doesn't work in zsh - ## command -v "$r" 2>&1 - ## this test should work in ash, bash, pdksh (ksh), zsh - type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' -` - if test -n ""; then - ver="" - else - ver=` - ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' - ## - ## ARG. - ## Workaround for broken Debian gcc version string: - ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) - ## - ## -V: Workaround for python + CXXFLAGS="$CXXFLAGS $OPTIMIZE" + LD='$(CXX)' - #dnl - ## Assume and hunt for dotted version multiplet. - ## use eval trickery, because we cannot use multi-level $() instead of `` - ## for compatibility reasons. - ## grab the first version number in --version output. - eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | - grep -E '(^| )[0-9][0-9]*\.[0-9]' | - head -n 1 | - tr ' ' '\n' | - sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | - grep -E '(^| )[0-9][0-9]*\.[0-9]' | - head -n 1\`\" - if test -z "$_ver"; then - ## If empty, try date [fontforge] - eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | grep '[0-9]\{6,8\}' \ - | head -n 1 \ - | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" - fi - echo "$_ver" - #dnl -` - fi - num=` - echo "$ver" | awk -F. ' - { - if ($3) {three = $3} - else {three = 0} - } - {printf "%.0f\n", $1*1000000 + $2*1000 + three}' -` - req=` - echo "" | awk -F. ' - { - if ($3) {three = $3} - else {three = 0} - } - {printf "%.0f\n", $1*1000000 + $2*1000 + three}' -` - { $as_echo "$as_me:$LINENO: result: $ver" >&5 -$as_echo "$ver" >&6; } - if test "$num" -lt "$req"; then - eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= (installed: $ver)"\"`\" - fi - vervar="`echo BISON | tr 'a-z' 'A-Z'`_VERSION" - eval `echo $vervar=$num` -## AC_SUBST(`eval echo $vervar`) - fi + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __clang__ + yes + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + HAS_CLANG=yes +else + HAS_CLANG=no +fi +rm -f conftest* - # urg. should test functionality rather than version. - if test "$BISON" = "bison" -a -n "1.29"; then + if test "$HAS_CLANG" = "no"; then + if test "$GXX" = "yes"; then - r="`eval echo '$'"BISON"`" + r="`eval echo '$'"CXX"`" { $as_echo "$as_me:$LINENO: checking $r version" >&5 $as_echo_n "checking $r version... " >&6; } exe=` @@ -5830,7 +5797,7 @@ $as_echo_n "checking $r version... " >&6; } {printf "%.0f\n", $1*1000000 + $2*1000 + three}' ` req=` - echo "1.29" | awk -F. ' + echo "3.4" | awk -F. ' { if ($3) {three = $3} else {three = 0} @@ -5841,44 +5808,193 @@ $as_echo_n "checking $r version... " >&6; } $as_echo "$ver" >&6; } if test "$num" -lt "$req"; then - eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= 1.29 (installed: $ver)"\"`\" + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 3.4 (installed: $ver)"\"`\" fi - vervar="`echo BISON | tr 'a-z' 'A-Z'`_VERSION" + vervar="`echo CXX | tr 'a-z' 'A-Z'`_VERSION" eval `echo $vervar=$num` ## AC_SUBST(`eval echo $vervar`) + else + warn="$CXX (Please install *GNU* c++)" + + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"$warn\"`\" + + fi fi + # no else, we're fine with any clang - # ugh, automake: we want (and check for) flex - # AC_PROG_LEX - # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack... + { $as_echo "$as_me:$LINENO: checking options for known g++ bugs" >&5 +$as_echo_n "checking options for known g++ bugs... " >&6; } + case "$GXX:$CXX_VERSION" in + yes:400600[0-2]) + { $as_echo "$as_me:$LINENO: result: -fno-optimize-sibling-calls (tail call bug)" >&5 +$as_echo "-fno-optimize-sibling-calls (tail call bug)" >&6; } + CXXFLAGS="$CXXFLAGS -fno-optimize-sibling-calls" + ;; + yes:400700?) + { $as_echo "$as_me:$LINENO: result: -fno-tree-vrp (comparison bug)" >&5 +$as_echo "-fno-tree-vrp (comparison bug)" >&6; } + CXXFLAGS="$CXXFLAGS -fno-tree-vrp" + ;; + *) { $as_echo "$as_me:$LINENO: result: none" >&5 +$as_echo "none" >&6; } + esac - # AC_PROG_LEX() - # ugh, ugh - ac_cv_prog_lex_root=lex.yy - for ac_prog in flex -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_FLEX+set}" = set; then + + { $as_echo "$as_me:$LINENO: checking whether explicit instantiation is needed" >&5 +$as_echo_n "checking whether explicit instantiation is needed... " >&6; } +if test "${stepmake_cv_need_explicit_instantiation+set}" = set; then $as_echo_n "(cached) " >&6 else - if test -n "$FLEX"; then - ac_cv_prog_FLEX="$FLEX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_FLEX="$ac_prog" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + template struct foo { static int baz; }; + template int foo::baz = 1; + +int +main () +{ + return foo::baz; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + stepmake_cv_need_explicit_instantiation=no +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + stepmake_cv_need_explicit_instantiation=yes +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $stepmake_cv_need_explicit_instantiation" >&5 +$as_echo "$stepmake_cv_need_explicit_instantiation" >&6; } + if test x"$stepmake_cv_need_explicit_instantiation"x = x"yes"x; then + cat >>confdefs.h <<\_ACEOF +#define NEED_EXPLICIT_INSTANTIATION 1 +_ACEOF + + fi + + + { $as_echo "$as_me:$LINENO: checking for stl.data () method" >&5 +$as_echo_n "checking for stl.data () method... " >&6; } +if test "${stepmake_cv_stl_data_method+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +using namespace std; +vector v; +void *p = v.data (); + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + stepmake_cv_stl_data_method=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + stepmake_cv_stl_data_method=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $stepmake_cv_stl_data_method" >&5 +$as_echo "$stepmake_cv_stl_data_method" >&6; } + if test $stepmake_cv_stl_data_method = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_STL_DATA_METHOD 1 +_ACEOF + + fi + + + + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5888,24 +6004,24 @@ IFS=$as_save_IFS fi fi -FLEX=$ac_cv_prog_FLEX -if test -n "$FLEX"; then - { $as_echo "$as_me:$LINENO: result: $FLEX" >&5 -$as_echo "$FLEX" >&6; } +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:$LINENO: result: $AR" >&5 +$as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi - test -n "$FLEX" && break + test -n "$AR" && break done -test -n "$FLEX" || FLEX="no" +test -n "$AR" || AR="no" - r="`eval echo '$'"FLEX"`" - if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"FLEX"`' : '.*\(echo\)' > /dev/null; then + r="`eval echo '$'"AR"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"AR"`' : '.*\(echo\)' > /dev/null; then true else ##STEPMAKE_WARN(cannot find . ) @@ -5914,15 +6030,15 @@ test -n "$FLEX" || FLEX="no" if test $? -ne 0; then - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"flex\"`\" + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"ar\"`\" if test "REQUIRED" = "REQUIRED"; then - command="echo ERROR: flex not found" + command="echo ERROR: ar not found" # abort configure process here? else - command="- echo flex not found" + command="- echo ar not found" fi - eval "FLEX"='$command' + eval "AR"='$command' false else true @@ -5930,7 +6046,7 @@ test -n "$FLEX" || FLEX="no" if test $? -eq 0 -a -n ""; then - r="`eval echo '$'"FLEX"`" + r="`eval echo '$'"AR"`" { $as_echo "$as_me:$LINENO: checking $r version" >&5 $as_echo_n "checking $r version... " >&6; } exe=` @@ -6001,378 +6117,743 @@ $as_echo "$ver" >&6; } eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= (installed: $ver)"\"`\" fi - vervar="`echo FLEX | tr 'a-z' 'A-Z'`_VERSION" + vervar="`echo AR | tr 'a-z' 'A-Z'`_VERSION" eval `echo $vervar=$num` ## AC_SUBST(`eval echo $vervar`) fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS - # Broken: fails on valid input. -continue fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + + r="`eval echo '$'"RANLIB"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"RANLIB"`' : '.*\(echo\)' > /dev/null; then + true + else + ##STEPMAKE_WARN(cannot find . ) + false + fi + + if test $? -ne 0; then + + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"ranlib\"`\" + + if test "REQUIRED" = "REQUIRED"; then + command="echo ERROR: ranlib not found" + # abort configure process here? + else + command="- echo ranlib not found" + fi + eval "RANLIB"='$command' + false + else + true + fi + + + + +{ $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext }; then - # Broken: success on invalid input. -continue + ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break + ac_cv_lib_dl_dlopen=no fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDL 1 +_ACEOF - done - ac_cv_prog_CXXCPP=$CXXCPP + LIBS="-ldl $LIBS" fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes + + +for ac_func in dlopen do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + #ifdef __STDC__ # include #else # include #endif - Syntax error + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext }; then - : + eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break fi +done -rm -f conftest.err conftest.$ac_ext +# Do not use bison 1.50 and 1.75. +# 1.29 is required fr %locations, but I'm not sure it's enough --ns + + # ugh, automake: we want (and check for) bison + for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_YACC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:$LINENO: result: $YACC" >&5 +$as_echo "$YACC" >&6; } else - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" -{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_BISON+set}" = set; then $as_echo_n "(cached) " >&6 else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin + if test -n "$BISON"; then + ac_cv_prog_BISON="$BISON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_BISON="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +BISON=$ac_cv_prog_BISON +if test -n "$BISON"; then + { $as_echo "$as_me:$LINENO: result: $BISON" >&5 +$as_echo "$BISON" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$BISON" && break +done +test -n "$BISON" || BISON="no" + + + + r="`eval echo '$'"BISON"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"BISON"`' : '.*\(echo\)' > /dev/null; then + true + else + ##STEPMAKE_WARN(cannot find . ) + false fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - $ac_path_GREP_found && break 3 - done - done + if test $? -ne 0; then + + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \"bison\"`\" + + if test "OPTIONAL" = "REQUIRED"; then + command="echo ERROR: bison not found" + # abort configure process here? + else + command="- echo bison not found" + fi + eval "BISON"='$command' + false + else + true + fi + + if test $? -eq 0 -a -n ""; then + + r="`eval echo '$'"BISON"`" + { $as_echo "$as_me:$LINENO: checking $r version" >&5 +$as_echo_n "checking $r version... " >&6; } + exe=` + ## which doesn't work in ash, if /usr/bin/which isn't installed + ## type -p doesn't work in ash + ## command -v doesn't work in zsh + ## command -v "$r" 2>&1 + ## this test should work in ash, bash, pdksh (ksh), zsh + type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' +` + if test -n ""; then + ver="" + else + ver=` + ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' + ## + ## ARG. + ## Workaround for broken Debian gcc version string: + ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) + ## + ## -V: Workaround for python + + #dnl + + ## Assume and hunt for dotted version multiplet. + ## use eval trickery, because we cannot use multi-level $() instead of `` + ## for compatibility reasons. + + ## grab the first version number in --version output. + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1 | + tr ' ' '\n' | + sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1\`\" + + if test -z "$_ver"; then + ## If empty, try date [fontforge] + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | grep '[0-9]\{6,8\}' \ + | head -n 1 \ + | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" + fi + echo "$_ver" + #dnl +` + fi + num=` + echo "$ver" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + req=` + echo "" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + { $as_echo "$as_me:$LINENO: result: $ver" >&5 +$as_echo "$ver" >&6; } + if test "$num" -lt "$req"; then + + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= (installed: $ver)"\"`\" + + fi + vervar="`echo BISON | tr 'a-z' 'A-Z'`_VERSION" + eval `echo $vervar=$num` +## AC_SUBST(`eval echo $vervar`) + + fi + + + # urg. should test functionality rather than version. + if test "$BISON" = "bison" -a -n "1.29"; then + + r="`eval echo '$'"BISON"`" + { $as_echo "$as_me:$LINENO: checking $r version" >&5 +$as_echo_n "checking $r version... " >&6; } + exe=` + ## which doesn't work in ash, if /usr/bin/which isn't installed + ## type -p doesn't work in ash + ## command -v doesn't work in zsh + ## command -v "$r" 2>&1 + ## this test should work in ash, bash, pdksh (ksh), zsh + type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' +` + if test -n ""; then + ver="" + else + ver=` + ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' + ## + ## ARG. + ## Workaround for broken Debian gcc version string: + ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) + ## + ## -V: Workaround for python + + #dnl + + ## Assume and hunt for dotted version multiplet. + ## use eval trickery, because we cannot use multi-level $() instead of `` + ## for compatibility reasons. + + ## grab the first version number in --version output. + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1 | + tr ' ' '\n' | + sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1\`\" + + if test -z "$_ver"; then + ## If empty, try date [fontforge] + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | grep '[0-9]\{6,8\}' \ + | head -n 1 \ + | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" + fi + echo "$_ver" + #dnl +` + fi + num=` + echo "$ver" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + req=` + echo "1.29" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + { $as_echo "$as_me:$LINENO: result: $ver" >&5 +$as_echo "$ver" >&6; } + if test "$num" -lt "$req"; then + + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= 1.29 (installed: $ver)"\"`\" + + fi + vervar="`echo BISON | tr 'a-z' 'A-Z'`_VERSION" + eval `echo $vervar=$num` +## AC_SUBST(`eval echo $vervar`) + + fi + + + # ugh, automake: we want (and check for) flex + # AC_PROG_LEX + # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack... + + # AC_PROG_LEX() + # ugh, ugh + ac_cv_prog_lex_root=lex.yy + + for ac_prog in flex +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_FLEX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$FLEX"; then + ac_cv_prog_FLEX="$FLEX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_FLEX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done done IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } - fi + +fi +fi +FLEX=$ac_cv_prog_FLEX +if test -n "$FLEX"; then + { $as_echo "$as_me:$LINENO: result: $FLEX" >&5 +$as_echo "$FLEX" >&6; } else - ac_cv_path_GREP=$GREP + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" + test -n "$FLEX" && break +done +test -n "$FLEX" || FLEX="no" + + + + r="`eval echo '$'"FLEX"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"FLEX"`' : '.*\(echo\)' > /dev/null; then + true + else + ##STEPMAKE_WARN(cannot find . ) + false + fi + + if test $? -ne 0; then + + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"flex\"`\" + + if test "REQUIRED" = "REQUIRED"; then + command="echo ERROR: flex not found" + # abort configure process here? + else + command="- echo flex not found" + fi + eval "FLEX"='$command' + false + else + true + fi + + if test $? -eq 0 -a -n ""; then + + r="`eval echo '$'"FLEX"`" + { $as_echo "$as_me:$LINENO: checking $r version" >&5 +$as_echo_n "checking $r version... " >&6; } + exe=` + ## which doesn't work in ash, if /usr/bin/which isn't installed + ## type -p doesn't work in ash + ## command -v doesn't work in zsh + ## command -v "$r" 2>&1 + ## this test should work in ash, bash, pdksh (ksh), zsh + type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' +` + if test -n ""; then + ver="" + else + ver=` + ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' + ## + ## ARG. + ## Workaround for broken Debian gcc version string: + ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) + ## + ## -V: Workaround for python + + #dnl + + ## Assume and hunt for dotted version multiplet. + ## use eval trickery, because we cannot use multi-level $() instead of `` + ## for compatibility reasons. -{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count + ## grab the first version number in --version output. + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1 | + tr ' ' '\n' | + sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1\`\" + + if test -z "$_ver"; then + ## If empty, try date [fontforge] + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | grep '[0-9]\{6,8\}' \ + | head -n 1 \ + | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac + echo "$_ver" + #dnl +` + fi + num=` + echo "$ver" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + req=` + echo "" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + { $as_echo "$as_me:$LINENO: result: $ver" >&5 +$as_echo "$ver" >&6; } + if test "$num" -lt "$req"; then - $ac_path_EGREP_found && break 3 - done - done -done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } - fi -else - ac_cv_path_EGREP=$EGREP -fi + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= (installed: $ver)"\"`\" - fi -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" + fi + vervar="`echo FLEX | tr 'a-z' 'A-Z'`_VERSION" + eval `echo $vervar=$num` +## AC_SUBST(`eval echo $vervar`) + + fi { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 @@ -7730,7 +8211,7 @@ $as_echo "$ver" >&6; } test -n "$host_alias" && host_guile_config=$host_alias-guile-config { $as_echo "$as_me:$LINENO: checking for guile-config" >&5 $as_echo_n "checking for guile-config... " >&6; } - for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config; do + for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile1-config; do { $as_echo "$as_me:$LINENO: result: $guile_config" >&5 $as_echo "$guile_config" >&6; } if ! $guile_config --version > /dev/null 2>&1 ; then @@ -7772,7 +8253,7 @@ $as_echo_n "checking if we are cross compiling... " >&6; } if test $? -ne 0; then - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"'guile-config (guile-devel, guile-dev or libguile-dev package)'\"`\" + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \"'guile-config (guile-devel, guile-dev or libguile-dev package) or guile1-config (guile1-devel package)'\"`\" fi @@ -8576,6 +9057,121 @@ fi CXXFLAGS="$save_CXXFLAGS" +## Check for usable cxxabi +save_LIBS="$LIBS" +LIBS="$LIBS $CXXABI_LIBS" +{ $as_echo "$as_me:$LINENO: checking for usable C++ demangler" >&5 +$as_echo_n "checking for usable C++ demangler... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +abi::__cxa_demangle ("", 0, 0, 0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_CXA_DEMANGLE 1 +_ACEOF + + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + LIBS="$LIBS -lsupc++" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +abi::__cxa_demangle ("", 0, 0, 0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_CXA_DEMANGLE 1 +_ACEOF + + { $as_echo "$as_me:$LINENO: result: yes, using -lsupc++" >&5 +$as_echo "yes, using -lsupc++" >&6; } + CXXABI_LIBS="$CXXABI_LIBS -lsupc++" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:$LINENO: result: no, use c++filt -t for manual demangling" >&5 +$as_echo "no, use c++filt -t for manual demangling" >&6; } +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS="$save_LIBS" + + ## check rational bugfix. save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$GUILE_CFLAGS $CPPFLAGS" @@ -8702,7 +9298,11 @@ test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no" # Clean out junk: http://bugs.python.org/issue3290 # Python headers may need some -f* flags, leave them in. # We want the sed commands to look like 's/-[WDOm][[:alnum:][:punct:]][[:alnum:][:punct:]]*//g' and 's/-arch [^[:space:]]*//g', but automake eats brackets. - PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[WDOm][[:alnum:][:punct:]][[:alnum:][:punct:]]*//g' | sed -e 's/-arch [^[:space:]]*//g'` + #PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch [^[:space:]]*//g'` + # The above sed BRE matches parts of legal options, stipping down part of that option, resulting in invalid gcc arguments. Gentoo Bug #415793 + # For instance, '-floop-stip-mime' becomes '-floop-strip', and '-fvect-cost-model' becomes '-fvect-cost'. + # Tentative fix to require a non alphanumeric character before the initial hyphen of the BRE or the hyphen being the first character in the string. + PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/\(^\|[^[:alnum:]]\)-[WDOm][[:alnum:][:punct:]][[:alnum:][:punct:]]*//g' | sed -e 's/-arch [^[:space:]]*//g'` PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` fi @@ -8944,8 +9544,10 @@ test -n "$GHOSTSCRIPT" || GHOSTSCRIPT="no" fi if test $? -eq 0; then - # Extract the first word of "gs", so it can be a program name with args. -set dummy gs; ac_word=$2 + for ac_prog in gs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GHOSTSCRIPT+set}" = set; then @@ -8984,6 +9586,9 @@ $as_echo "no" >&6; } fi + test -n "$GHOSTSCRIPT" && break +done + if test -n "8.60"; then r="`eval echo '$'"GHOSTSCRIPT"`" @@ -9136,8 +9741,10 @@ test -n "$FONTFORGE" || FONTFORGE="no" fi if test $? -eq 0; then - # Extract the first word of "fontforge", so it can be a program name with args. -set dummy fontforge; ac_word=$2 + for ac_prog in fontforge +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_FONTFORGE+set}" = set; then @@ -9176,6 +9783,9 @@ $as_echo "no" >&6; } fi + test -n "$FONTFORGE" && break +done + if test -n "20100501"; then r="`eval echo '$'"FONTFORGE"`" @@ -9327,8 +9937,10 @@ test -n "$FONTFORGE" || FONTFORGE="no" fi if test $? -eq 0; then - # Extract the first word of "fontforge", so it can be a program name with args. -set dummy fontforge; ac_word=$2 + for ac_prog in fontforge +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_FONTFORGE+set}" = set; then @@ -9367,6 +9979,9 @@ $as_echo "no" >&6; } fi + test -n "$FONTFORGE" && break +done + if test -n "20110222"; then r="`eval echo '$'"FONTFORGE"`" @@ -9519,8 +10134,10 @@ test -n "$T1ASM" || T1ASM="no" fi if test $? -eq 0; then - # Extract the first word of "t1asm", so it can be a program name with args. -set dummy t1asm; ac_word=$2 + for ac_prog in t1asm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_T1ASM+set}" = set; then @@ -9559,6 +10176,9 @@ $as_echo "no" >&6; } fi + test -n "$T1ASM" && break +done + if test -n ""; then r="`eval echo '$'"T1ASM"`" @@ -11462,7 +12082,7 @@ $as_echo "$ver" >&6; } # guile executable for some scripts - for ac_prog in guile + for ac_prog in guile guile1 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -11517,13 +12137,13 @@ test -n "$GUILE" || GUILE="no" if test $? -ne 0; then - eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \"guile\"`\" + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \"guile guile1\"`\" if test "OPTIONAL" = "REQUIRED"; then - command="echo ERROR: guile not found" + command="echo ERROR: guile guile1 not found" # abort configure process here? else - command="- echo guile not found" + command="- echo guile guile1 not found" fi eval "GUILE"='$command' false @@ -11532,8 +12152,10 @@ test -n "$GUILE" || GUILE="no" fi if test $? -eq 0; then - # Extract the first word of "guile", so it can be a program name with args. -set dummy guile; ac_word=$2 + for ac_prog in guile guile1 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GUILE+set}" = set; then @@ -11572,6 +12194,9 @@ $as_echo "no" >&6; } fi + test -n "$GUILE" && break +done + if test -n ""; then r="`eval echo '$'"GUILE"`" @@ -11727,8 +12352,10 @@ test -n "$PERL" || PERL="no" fi if test $? -eq 0; then - # Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 + for ac_prog in perl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PERL+set}" = set; then @@ -11767,6 +12394,9 @@ $as_echo "no" >&6; } fi + test -n "$PERL" && break +done + if test -n ""; then r="`eval echo '$'"PERL"`" @@ -12217,7 +12847,7 @@ test -n "$DBLATEX" || DBLATEX="no" true fi - if test $? -eq 0 -a -n ""; then + if test $? -eq 0 -a -n "0.1.4"; then r="`eval echo '$'"DBLATEX"`" { $as_echo "$as_me:$LINENO: checking $r version" >&5 @@ -12276,7 +12906,7 @@ $as_echo_n "checking $r version... " >&6; } {printf "%.0f\n", $1*1000000 + $2*1000 + three}' ` req=` - echo "" | awk -F. ' + echo "0.1.4" | awk -F. ' { if ($3) {three = $3} else {three = 0} @@ -12287,7 +12917,7 @@ $as_echo_n "checking $r version... " >&6; } $as_echo "$ver" >&6; } if test "$num" -lt "$req"; then - eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= (installed: $ver)"\"`\" + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= 0.1.4 (installed: $ver)"\"`\" fi vervar="`echo DBLATEX | tr 'a-z' 'A-Z'`_VERSION" @@ -14373,9 +15003,22 @@ EOF exit 2 fi - for d in 2 3 4 ; do + abssrcdir="`cd $srcdir; pwd`" + absbuilddir="`pwd`" + for d in 2 3 4 5 ; do for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name GNUmakefile`; do - mkdir -p $(dirname $mf) + case "$abssrcdir" in + "$absbuilddir"/*) +# source is below build directory, always copy + ;; + *) + case "$abssrcdir/${mf#./}" in + "$absbuilddir"/*) +# find descended into build directory, don't copy + continue + esac + esac + mkdir -p ${mf%/*} cat < $mf print 'depth=' + ('../' * ( $d-1 ) ) print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make' @@ -14384,7 +15027,18 @@ print 'MODULE_INCLUDES += \$(src-dir)/\$(outbase)' EOF done for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name '*.make' | grep -v config.make `; do - mkdir -p $(dirname $mf) + case "$abssrcdir" in + "$absbuilddir"/*) +# source is below build directory, always copy + ;; + *) + case "$abssrcdir/${mf#./}" in + "$absbuilddir"/*) +# find descended into build directory, don't copy + continue + esac + esac + mkdir -p ${mf%/*} cat < $mf print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make' print 'include \$(configure-srcdir)/$mf' @@ -14392,12 +15046,13 @@ EOF done done - + rm -f GNUmakefile cat < GNUmakefile depth = . include config\$(if \$(conf),-\$(conf),).make include \$(configure-srcdir)/GNUmakefile.in EOF + chmod 444 GNUmakefile fi diff --git a/configure.in b/configure.in index cf0178f457..66799abd3b 100644 --- a/configure.in +++ b/configure.in @@ -3,7 +3,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.60) -# Bootstrap the init proces. +# Bootstrap the init process. AC_INIT # Bootstrap StepMake configure @@ -62,13 +62,14 @@ STEPMAKE_COMPILE AC_CHECK_PROG(FCLIST, fc-list, fc-list) AC_MSG_CHECKING([New Century Schoolbook PFB files]) AC_SUBST(NCSB_SOURCE_FILES) +AC_SUBST(NCSB_DIR) +UNCHECKED_NCSB_SOURCE_FILES="" if test "$NCSB_DIR" != "" ; then - NCSB_SOURCE_FILES="" for f in c059013l c059016l c059033l c059036l; do if test ! -f "$NCSB_DIR/$f.pfb"; then STEPMAKE_WARN($NCSB_DIR does not contain $f.pfb.) else - NCSB_SOURCE_FILES="$NCSB_DIR/$f.pfb $NCSB_SOURCE_FILES" + UNCHECKED_NCSB_SOURCE_FILES="$NCSB_DIR/$f.pfb $UNCHECKED_NCSB_SOURCE_FILES" fi done else @@ -76,25 +77,39 @@ else for style in Roman Italic "Bold Italic" Bold; do NCSB_FILE=`$FCLIST "Century Schoolbook L:style=$style:foundry=urw:fontformat=Type 1" file \ | head -n 1` - NCSB_FILE=`echo $NCSB_FILE | sed 's/^\(.*\):$/\1/g'` + NCSB_FILE=`echo $NCSB_FILE | sed 's/\(:.*\)$//g'` NCSB_FILE=`$PYTHON "$srcdir/scripts/auxiliar/readlink.py" $NCSB_FILE` - NCSB_SOURCE_FILES="$NCSB_FILE $NCSB_SOURCE_FILES" + UNCHECKED_NCSB_SOURCE_FILES="$NCSB_FILE $UNCHECKED_NCSB_SOURCE_FILES" done + NCSB_DIR=`AS_DIRNAME($NCSB_FILE)` else AC_MSG_RESULT(not found) echo "Can't find Century Schoolbook files. Install FontConfig's fc-list," echo "or use --with-ncsb-dir" fi fi +NCSB_SOURCE_FILES="" +for f in $UNCHECKED_NCSB_SOURCE_FILES; do + if test "`grep Cyrillic "$f"`" = ""; then + STEPMAKE_WARN($f does not have Cyrillic characters.) + else + NCSB_SOURCE_FILES="$f $NCSB_SOURCE_FILES" + fi +done AC_MSG_RESULT($NCSB_SOURCE_FILES) AC_LANG([C++]) STEPMAKE_PYTHON(REQUIRED, 2.4) -STEPMAKE_GCC(REQUIRED, 3.4) +# this checks if we have GNU C by compiling a program with +# __GNUC__, but that macro now unofficially means "the compiler +# supports the GNU C extensions" -- the intel C compiler and clang +# both support __GNUC__! +STEPMAKE_GCC_OR_CLANG(REQUIRED, 3.4) STEPMAKE_CXX(REQUIRED) -STEPMAKE_GXX(REQUIRED, 3.4) +STEPMAKE_GXX_OR_CLANG(REQUIRED, 3.4) +STEPMAKE_GXXCODEGENBUG STEPMAKE_CXXTEMPLATE STEPMAKE_STL_DATA_METHOD STEPMAKE_LIB(REQUIRED) @@ -123,6 +138,24 @@ AC_CHECK_TYPES([scm_t_subr], [#include ]) CXXFLAGS="$save_CXXFLAGS" +## Check for usable cxxabi +save_LIBS="$LIBS" +LIBS="$LIBS $CXXABI_LIBS" +AC_MSG_CHECKING(for usable C++ demangler) +AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [abi::__cxa_demangle ("", 0, 0, 0)])], + [AC_DEFINE(HAVE_CXA_DEMANGLE) + AC_MSG_RESULT(yes)],[ + LIBS="$LIBS -lsupc++" + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [abi::__cxa_demangle ("", 0, 0, 0)])], + [AC_DEFINE(HAVE_CXA_DEMANGLE) + AC_MSG_RESULT([yes, using -lsupc++]) + CXXABI_LIBS="$CXXABI_LIBS -lsupc++"], + [AC_MSG_RESULT([no, use c++filt -t for manual demangling])])]) +LIBS="$save_LIBS" +AC_SUBST(CXXABI_LIBS) + ## check rational bugfix. save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$GUILE_CFLAGS $CPPFLAGS" @@ -187,7 +220,7 @@ STEPMAKE_PERL(OPTIONAL) STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11) STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.82) -STEPMAKE_PROGS(DBLATEX, dblatex, OPTIONAL) +STEPMAKE_PROGS(DBLATEX, dblatex, OPTIONAL, 0.1.4) STEPMAKE_PROGS(PDFLATEX, pdflatex, OPTIONAL) STEPMAKE_PROGS(NETPBM, pngtopnm, OPTIONAL) STEPMAKE_PROGS(IMAGEMAGICK, convert, OPTIONAL) diff --git a/elisp/lilypond-mode.el b/elisp/lilypond-mode.el index d39b0d1d2f..934d1d6f0b 100644 --- a/elisp/lilypond-mode.el +++ b/elisp/lilypond-mode.el @@ -1,7 +1,7 @@ ;;;; lilypond-mode.el -- Major mode for editing GNU LilyPond music scores ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1999--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1999--2012 Jan Nieuwenhuizen ;;;; Changed 2001--2003 Heikki Junes ;;;; * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001) ;;;; * Keyboard shortcuts (12th Sep 2001) @@ -995,17 +995,17 @@ command." (defun LilyPond-menu-keywords () "Make Insert Tag menu. -The Insert Tag -menu is splitted into parts if it is long enough." +The Insert Tag -menu is split into parts if it is long enough." (let ((li (mapcar 'LilyPond-menu-keywords-item LilyPond-menu-keywords)) (w (round (sqrt (length LilyPond-menu-keywords)))) - (splitted '()) + (split '()) (imin 0) imax lw rw) (while (< imin (length LilyPond-menu-keywords)) (setq imax (- (min (+ imin w) (length LilyPond-menu-keywords)) 1)) (setq lw (nth imin LilyPond-menu-keywords)) (setq rw (nth imax LilyPond-menu-keywords)) - (add-to-list 'splitted + (add-to-list 'split (let ((l (list (concat (substring lw 0 (min 7 (length lw))) " ... " (substring rw 0 (min 7 (length rw))))))) @@ -1013,7 +1013,7 @@ The Insert Tag -menu is splitted into parts if it is long enough." (add-to-list 'l (nth imin li)) (setq imin (1+ imin))) (reverse l)))) - (if (> (length LilyPond-menu-keywords) 12) (reverse splitted) li))) + (if (> (length LilyPond-menu-keywords) 12) (reverse split) li))) ;;; LilyPond-mode-menu should not be interactive, via "M-x LilyPond-" (easy-menu-define LilyPond-mode-menu diff --git a/flower/cpu-timer.cc b/flower/cpu-timer.cc index a72d5fe7ba..f4c960196d 100644 --- a/flower/cpu-timer.cc +++ b/flower/cpu-timer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,5 +45,5 @@ Real Cpu_timer::read () { clock_t stop = clock (); - return (stop - start_clock_) / Real (CLOCKS_PER_SEC); + return Real (stop - start_clock_) / Real (CLOCKS_PER_SEC); } diff --git a/flower/file-cookie.cc b/flower/file-cookie.cc index bedb100a00..762acb1c06 100644 --- a/flower/file-cookie.cc +++ b/flower/file-cookie.cc @@ -16,21 +16,21 @@ extern "C" { void * lily_fopencookie (void *cookie, - char const * /* modes */, - lily_cookie_io_functions_t /* io_funcs */) + char const * /* modes */, + lily_cookie_io_functions_t /* io_funcs */) { assert (is_memory_stream (cookie)); return (FILE *) cookie; } - int + ssize_t lily_cookie_fclose (void *file) { assert (is_memory_stream (file)); return Memory_out_stream::cleaner (file); } - int + ssize_t lily_cookie_fprintf (void *file, char const *format, ...) { assert (is_memory_stream (file)); @@ -39,13 +39,13 @@ extern "C" { static char buf[65536]; int i = vsnprintf (buf, sizeof (buf), format, ap); - if (i == -1 || (unsigned) i > sizeof (buf)) + if (i < 0 || (unsigned) i > sizeof (buf)) assert (false); va_end (ap); - return Memory_out_stream::writer (file, buf, i); + return Memory_out_stream::writer (file, buf, (unsigned)i); } - int + ssize_t lily_cookie_putc (int c, void *file) { assert (is_memory_stream (file)); diff --git a/flower/file-name.cc b/flower/file-name.cc index ccb923355f..c24c0731e4 100644 --- a/flower/file-name.cc +++ b/flower/file-name.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -68,7 +68,7 @@ dos_to_posix (string file_name) much be exchanged. */ #if 0 static /* avoid warning */ -#endif +#endif string slashify (string file_name) { @@ -89,7 +89,7 @@ dir_name (string const file_name) s = s.substr (0, s.rfind ('/')); else s = ""; - + return s; } @@ -97,9 +97,8 @@ string get_working_directory () { char cwd[PATH_MAX]; - getcwd (cwd, PATH_MAX); - - return string (cwd); + // getcwd returns NULL upon a failure, contents of cwd would be undefined! + return string (getcwd (cwd, PATH_MAX)); } /* Join components to full file_name. */ @@ -118,7 +117,6 @@ File_name::dir_part () const return s; } - string File_name::file_part () const { @@ -136,7 +134,7 @@ File_name::to_string () const string f = file_part (); if (!f.empty () - && !dir_.empty()) + && !dir_.empty ()) { d += ::to_string (DIRSEP); } @@ -184,13 +182,11 @@ bool File_name::is_absolute () const { /* - Hmm. Is c:foo absolute? + Hmm. Is c:foo absolute? */ return (dir_.length () && dir_[0] == DIRSEP) || root_.length (); } - - File_name File_name::canonicalized () const { @@ -198,17 +194,17 @@ File_name::canonicalized () const replace_all (&c.dir_, string ("//"), string ("/")); - vector components = string_split (c.dir_, '/'); + vector components = string_split (c.dir_, '/'); vector new_components; for (vsize i = 0; i < components.size (); i++) { if (components[i] == "..") - new_components.pop_back (); + new_components.pop_back (); else - new_components.push_back (components[i]); + new_components.push_back (components[i]); } - c.dir_ = string_join (new_components, "/"); - return c; + c.dir_ = string_join (new_components, "/"); + return c; } diff --git a/flower/file-path.cc b/flower/file-path.cc index 97b9f24362..d0dd3a1f99 100644 --- a/flower/file-path.cc +++ b/flower/file-path.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -79,7 +79,7 @@ is_dir (string file_name) canonicalize; in particular, trailing slashes should disappear. */ file_name = File_name (file_name).to_string (); - + #if !STAT_MACROS_BROKEN struct stat sbuf; if (stat (file_name.c_str (), &sbuf) != 0) @@ -128,12 +128,12 @@ File_path::find (string name) const file_name.root_ = dir.root_; dir.root_ = ""; if (file_name.dir_.empty ()) - file_name.dir_ = dir.to_string (); + file_name.dir_ = dir.to_string (); else if (!dir.to_string ().empty ()) - file_name.dir_ = dir.to_string () - + ::to_string (DIRSEP) + file_name.dir_; + file_name.dir_ = dir.to_string () + + ::to_string (DIRSEP) + file_name.dir_; if (is_file (file_name.to_string ())) - return file_name.to_string (); + return file_name.to_string (); } return ""; } @@ -150,20 +150,20 @@ File_path::find (string name, char const *extensions[]) { if (name.empty () || name == "-") return name; - + File_name file_name (name); string orig_ext = file_name.ext_; for (int i = 0; extensions[i]; i++) { file_name.ext_ = orig_ext; if (*extensions[i] && !file_name.ext_.empty ()) - file_name.ext_ += "."; + file_name.ext_ += "."; file_name.ext_ += extensions[i]; string found = find (file_name.to_string ()); if (!found.empty ()) - return found; + return found; } - + return ""; } @@ -189,7 +189,7 @@ File_path::to_string () const { s = s + dirs_[i]; if (i < dirs_.size () - 1) - s += ::to_string (PATHSEP); + s += ::to_string (PATHSEP); } return s; } diff --git a/flower/getopt-long.cc b/flower/getopt-long.cc index 51e11d896c..88c5d92bde 100644 --- a/flower/getopt-long.cc +++ b/flower/getopt-long.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys, + Copyright (C) 1996--2012 Han-Wen Nienhuys, LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,7 +54,7 @@ Getopt_long::parselong () assert (*optnm); char const *endopt = strchr (optnm, '='); - int searchlen = (endopt) ? endopt - optnm : strlen (optnm); + size_t searchlen = (endopt) ? (size_t) (endopt - optnm) : strlen (optnm); found_option_ = 0; for (int i = 0; i < table_len_; i++) @@ -62,10 +62,10 @@ Getopt_long::parselong () char const *ln = option_a_[i].longname_str0_; if (ln && !strncmp (ln, optnm, searchlen)) - { - found_option_ = option_a_ + i; - break; - } + { + found_option_ = option_a_ + i; + break; + } } if (!found_option_) @@ -79,20 +79,20 @@ Getopt_long::parselong () if (found_option_->take_arg_str0_) { if (endopt) - optional_argument_str0_ = endopt +1; // a '=' + optional_argument_str0_ = endopt + 1; // a '=' else - { - optional_argument_str0_ = arg_value_char_a_a_[array_index_]; - array_index_++; - } + { + optional_argument_str0_ = arg_value_char_a_a_[array_index_]; + array_index_++; + } if (!optional_argument_str0_) - report (E_ARGEXPECT); + report (E_ARGEXPECT); } else { optional_argument_str0_ = 0; if (endopt) - report (E_NOARGEXPECT); + report (E_NOARGEXPECT); } return found_option_; @@ -128,9 +128,9 @@ Long_option_init::str_for_help () const if (take_arg_str0_) { if (longname_str0_) - s = s + "="; + s = s + "="; else - s = s + " "; + s = s + " "; s = s + gettext (take_arg_str0_); } @@ -151,21 +151,21 @@ Getopt_long::report (Errorcod c) { case E_ARGEXPECT: str += _f ("option `%s' requires an argument", - found_option_->to_string ()); + found_option_->to_string ()); break; case E_NOARGEXPECT: str += _f ("option `%s' does not allow an argument", - found_option_->to_string ()); + found_option_->to_string ()); break; case E_UNKNOWNOPTION: str += _f ("unrecognized option: `%s'", - string (argument_index_ - ? string ("-" + string (1, arg_value_char_a_a_[array_index_][argument_index_])) - : string (arg_value_char_a_a_[array_index_]))); + string (argument_index_ + ? string ("-" + string (1, arg_value_char_a_a_[array_index_][argument_index_])) + : string (arg_value_char_a_a_[array_index_]))); break; case E_ILLEGALARG: str += _f ("invalid argument `%s' to option `%s'", - optional_argument_str0_, found_option_->to_string ()); + optional_argument_str0_, found_option_->to_string ()); break; default: assert (false); @@ -184,8 +184,8 @@ Getopt_long::parseshort () for (int i = 0; i < table_len_; i++) if (option_a_[i].shortname_char_ == c) { - found_option_ = option_a_ + i; - break; + found_option_ = option_a_ + i; + break; } if (!found_option_) @@ -234,21 +234,22 @@ Getopt_long::operator () () if (argument[0] != '-') return 0; - if (argument[1] == '-') {// what to do with "command -- bla" - if (argument[2]) - return parselong (); - else - return 0; - } + if (argument[1] == '-') // what to do with "command -- bla" + { + if (argument[2]) + return parselong (); + else + return 0; + } else { if (argument[ 1 ]) - { - argument_index_ = 1; - return parseshort (); - } + { + argument_index_ = 1; + return parseshort (); + } else - return 0; + return 0; } } @@ -278,7 +279,7 @@ Getopt_long::next () { error_ = E_NOERROR; while (array_index_ < argument_count_ - && !arg_value_char_a_a_[array_index_][argument_index_]) + && !arg_value_char_a_a_[array_index_][argument_index_]) { array_index_++; argument_index_ = 0; @@ -313,9 +314,9 @@ Long_option_init::table_string (Long_option_init *l) { string tabstr = ""; - int wid = 0; + size_t wid = 0; for (int i = 0; l[i].shortname_char_ || l[i].longname_str0_; i++) - wid = max (int(wid), int(l[i].str_for_help ().length ())); + wid = max (wid, l[i].str_for_help ().length ()); for (int i = 0; l[i].shortname_char_ || l[i].longname_str0_; i++) { @@ -324,7 +325,7 @@ Long_option_init::table_string (Long_option_init *l) string help_text (gettext (l[i].help_str0_)); replace_all (&help_text, "\n", - "\n" + string (wid + EXTRA_SPACES + 2, ' ')); + "\n" + string (wid + EXTRA_SPACES + 2, ' ')); tabstr += s + help_text + "\n"; } @@ -334,7 +335,7 @@ Long_option_init::table_string (Long_option_init *l) int Long_option_init::compare (Long_option_init const &a, Long_option_init const &b) { - if (a.shortname_char_ && b.shortname_char_ && a.shortname_char_- b.shortname_char_) + if (a.shortname_char_ && b.shortname_char_ && a.shortname_char_ - b.shortname_char_) return a.shortname_char_ - b.shortname_char_; if (b.shortname_char_ && a.longname_str0_) diff --git a/flower/include/arithmetic-operator.hh b/flower/include/arithmetic-operator.hh index a1d6c6d3a3..285e9cd350 100644 --- a/flower/include/arithmetic-operator.hh +++ b/flower/include/arithmetic-operator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,12 +20,12 @@ #ifndef ARITHMETIC_OPERATOR_HH #define ARITHMETIC_OPERATOR_HH -#define IMPLEMENT_ARITHMETIC_OPERATOR(type, op) \ - inline type \ - operator op (type a1, type const &a2) \ - { \ - a1 op ## = a2; \ - return a1; \ +#define IMPLEMENT_ARITHMETIC_OPERATOR(type, op) \ + inline type \ + operator op (type a1, type const &a2) \ + { \ + a1 op ## = a2; \ + return a1; \ } #endif /* ARITHMETIC_OPERATOR_HH */ diff --git a/flower/include/axis.hh b/flower/include/axis.hh index 4d575a38ae..f5ec6ca39a 100644 --- a/flower/include/axis.hh +++ b/flower/include/axis.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,14 +21,13 @@ #define AXES_HH #include -using namespace std; enum Axis - { - X_AXIS = 0, - Y_AXIS = 1, - NO_AXES = 2, - }; +{ + X_AXIS = 0, + Y_AXIS = 1, + NO_AXES = 2, +}; static inline Axis diff --git a/flower/include/compare.hh b/flower/include/compare.hh index cb4cbf3d17..9822526e03 100644 --- a/flower/include/compare.hh +++ b/flower/include/compare.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,29 +19,29 @@ #ifndef COMPARE_HH #define COMPARE_HH -#define ONE_OPERATOR(type, function, op) \ - inline bool \ - operator op (type t1, type t2) \ - { \ - return function (t1, t2) op 0; \ +#define ONE_OPERATOR(type, function, op) \ + inline bool \ + operator op (type t1, type t2) \ + { \ + return function (t1, t2) op 0; \ } /** handy notations for a signed comparison. make the operators{<,<=,==,>=,>} and the MAX and MIN of two. Please fill a & in the type argument if necessary. */ -#define TEMPLATE_INSTANTIATE_COMPARE(type, function, prefix) \ - prefix ONE_OPERATOR (type, function, >) \ - prefix ONE_OPERATOR (type, function, >=) \ - prefix ONE_OPERATOR (type, function, ==) \ - prefix ONE_OPERATOR (type, function, !=) \ - prefix ONE_OPERATOR (type, function, <) \ - prefix ONE_OPERATOR (type, function, <=) \ - /* namespace std { */ \ +#define TEMPLATE_INSTANTIATE_COMPARE(type, function, prefix) \ + prefix ONE_OPERATOR (type, function, >) \ + prefix ONE_OPERATOR (type, function, >=) \ + prefix ONE_OPERATOR (type, function, ==) \ + prefix ONE_OPERATOR (type, function, !=) \ + prefix ONE_OPERATOR (type, function, <) \ + prefix ONE_OPERATOR (type, function, <=) \ + /* namespace std { */ \ prefix inline type max (type t1, type t2) { return (t1 > t2) ? t1 : t2; } \ prefix inline type min (type t1, type t2) { return (t1 < t2) ? t1 : t2; } \ - /* } */ \ - /* stupid fix to allow ; */ \ + /* } */ \ + /* stupid fix to allow ; */ \ prefix bool operator < (type t1, type t2) #define INSTANTIATE_COMPARE(type, func) TEMPLATE_INSTANTIATE_COMPARE (type, func,) diff --git a/flower/include/cpu-timer.hh b/flower/include/cpu-timer.hh index 6e0b997a61..b5cf5d07a4 100644 --- a/flower/include/cpu-timer.hh +++ b/flower/include/cpu-timer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/flower/include/direction.hh b/flower/include/direction.hh index befd0aa2ac..dcb794eea1 100644 --- a/flower/include/direction.hh +++ b/flower/include/direction.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,30 +23,30 @@ #include "axis.hh" enum Direction - { - UP = 1, - DOWN=-1, - LEFT=-1, - RIGHT = 1, - MIN=-1, - MAX = 1, - CENTER = 0, - SMALLER=-1, - BIGGER = 1, - START = -1, - STOP = 1, - - /* - This is necessary to safely write loops, - since - - dir <= RIGHT - - is otherwise transformed into true unconditionally. - */ - DIRECTION_LIMIT = 2, - DIRECTION_NEG_LIMIT = -2, - }; +{ + UP = 1, + DOWN = -1, + LEFT = -1, + RIGHT = 1, + MIN = -1, + MAX = 1, + CENTER = 0, + SMALLER = -1, + BIGGER = 1, + START = -1, + STOP = 1, + + /* + This is necessary to safely write loops, + since + + dir <= RIGHT + + is otherwise transformed into true unconditionally. + */ + DIRECTION_LIMIT = 2, + DIRECTION_NEG_LIMIT = -2, +}; inline Direction other_dir (Direction const d) @@ -60,7 +60,7 @@ operator - (Direction const d) return other_dir (d); } -// huh? +// to be deleted soon (after coping with issues 2491 and 2493 inline Direction flip (Direction *i) { @@ -71,6 +71,15 @@ flip (Direction *i) return *i; } +#define UP_and_DOWN(d) \ + Direction d = UP; d != CENTER; d = (d == UP ? DOWN : CENTER) + +#define DOWN_and_UP(d) \ + Direction d = DOWN; d != CENTER; d = (d == DOWN ? UP : CENTER) + +#define LEFT_and_RIGHT(d) \ + Direction d = LEFT; d != CENTER; d = (d == LEFT ? RIGHT : CENTER) + /** if d > 0: the max operator if d < 0: the min operator diff --git a/flower/include/drul-array.hh b/flower/include/drul-array.hh index 4db1cb133b..d84af5a614 100644 --- a/flower/include/drul-array.hh +++ b/flower/include/drul-array.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ struct Drul_array { return at (d); } - T const& operator [] (Direction d) const + T const &operator [] (Direction d) const { return at (d); } @@ -74,7 +74,7 @@ inline Real linear_combination (Drul_array const &d, Real x) { return ((1.0 - x) * Real (d.at (LEFT)) - + (x + 1.0) * Real (d.at (RIGHT))) * 0.5; + + (x + 1.0) * Real (d.at (RIGHT))) * 0.5; } #endif /* DRUL_ARRAY_HH */ diff --git a/flower/include/file-cookie.hh b/flower/include/file-cookie.hh index ab2558fd14..6bdb236699 100644 --- a/flower/include/file-cookie.hh +++ b/flower/include/file-cookie.hh @@ -5,8 +5,7 @@ extern "C" { #include #include -using namespace std; - + using namespace std; #if (! defined (__off64_t) && ! defined (__off64_t_defined)) || ! defined (__cplusplus) #define off64_t unsigned long long @@ -16,17 +15,17 @@ using namespace std; { ssize_t (*read) (void *, char *, size_t); ssize_t (*write) (void *, char const *, size_t); - int (*seek) (void *, off64_t *, int); - int (*close) (void *); + ssize_t (*seek) (void *, off64_t *, size_t); + ssize_t (*close) (void *); } lily_cookie_io_functions_t; void *lily_fopencookie (void *cookie, char const *modes, - lily_cookie_io_functions_t io_funcs); + lily_cookie_io_functions_t io_funcs); - int lily_cookie_fclose (void *); - int lily_cookie_fprintf (void *file, char const *format, ...) - __attribute__ ((format (printf, 2, 3))); - int lily_cookie_putc (int c, void *file); + ssize_t lily_cookie_fclose (void *); + ssize_t lily_cookie_fprintf (void *file, char const *format, ...) + __attribute__ ((format (printf, 2, 3))); + ssize_t lily_cookie_putc (int c, void *file); #ifdef __cplusplus } /* extern "C" */ diff --git a/flower/include/file-name.hh b/flower/include/file-name.hh index f0d982f017..3e9c6d5294 100644 --- a/flower/include/file-name.hh +++ b/flower/include/file-name.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ public: string base_; string ext_; - File_name (string=""); + File_name (string = ""); bool is_absolute () const; string to_string () const; diff --git a/flower/include/file-path.hh b/flower/include/file-path.hh index 235d0a5d0c..29ca17f246 100644 --- a/flower/include/file-path.hh +++ b/flower/include/file-path.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/flower/include/flower-proto.hh b/flower/include/flower-proto.hh index adb6d349b1..33f67dbb40 100644 --- a/flower/include/flower-proto.hh +++ b/flower/include/flower-proto.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,12 +24,12 @@ char const *flower_version_str0 (); typedef unsigned char Byte; typedef long long I64; -struct String_convert; +class String_convert; #include "std-string.hh" -using namespace std; #include "real.hh" +using namespace std; template struct Interval_t; template struct PQueue; @@ -37,12 +37,12 @@ template class Matrix; typedef Interval_t Interval; -struct Offset; +class Offset; struct Long_option_init; -struct Rational; +class Rational; class File_name; class File_path; -struct Getopt_long; +class Getopt_long; typedef unsigned char U8; typedef short I16; diff --git a/flower/include/getopt-long.hh b/flower/include/getopt-long.hh index ba5eb8df28..52c819822c 100644 --- a/flower/include/getopt-long.hh +++ b/flower/include/getopt-long.hh @@ -54,7 +54,8 @@ public: /** errorcodes: no error, argument expected, no argument expected, unknown option, illegal argument (eg. int expected). */ enum Errorcod { E_NOERROR = 0, E_ARGEXPECT, E_NOARGEXPECT, E_UNKNOWNOPTION, - E_ILLEGALARG }; + E_ILLEGALARG + }; /// argument. Set to 0 if not present char const *optional_argument_str0_; diff --git a/flower/include/guile-compatibility.hh b/flower/include/guile-compatibility.hh index b65ce2cfe6..7c249afe89 100644 --- a/flower/include/guile-compatibility.hh +++ b/flower/include/guile-compatibility.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/flower/include/international.hh b/flower/include/international.hh index f20a49d8f3..6dd46c28e9 100644 --- a/flower/include/international.hh +++ b/flower/include/international.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,7 +42,7 @@ string _ (char const *ch); GNU gettext */ string _f (char const *format, ...) - __attribute__ ((format (printf, 1, 2))); +__attribute__ ((format (printf, 1, 2))); string _f (char const *format, string s, string s2 = "", string s3 = ""); /** va_list version of _f diff --git a/flower/include/interval-set.hh b/flower/include/interval-set.hh index 91410142ed..b0acda6509 100644 --- a/flower/include/interval-set.hh +++ b/flower/include/interval-set.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/flower/include/interval.hh b/flower/include/interval.hh index be7074c242..cc6f70a9c8 100644 --- a/flower/include/interval.hh +++ b/flower/include/interval.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,7 +31,7 @@ template struct Interval_t : public Drul_array { - Drul_array::at; + using Drul_array::at; static T infinity (); static string T_to_string (T arg); @@ -110,10 +110,10 @@ struct Interval_t : public Drul_array { if (!is_empty ()) { - at (LEFT) *= r; - at (RIGHT) *= r; - if (r < T (0)) - swap (); + at (LEFT) *= r; + at (RIGHT) *= r; + if (r < T (0)) + swap (); } return *this; } @@ -228,7 +228,7 @@ Interval_t::center () const } typedef Interval_t Interval; -typedef Interval_t Slice; // weird name +typedef Interval_t Slice; // weird name #endif // INTERVAL_HH diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc index 2f002a7e00..2ad1fa606b 100644 --- a/flower/include/interval.tcc +++ b/flower/include/interval.tcc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -70,14 +70,14 @@ void Interval_t::set_empty () { at (LEFT) = (T) infinity (); - at (RIGHT) = (T) -infinity (); + at (RIGHT) = (T) - infinity (); } template void Interval_t::set_full () { - at (LEFT) = (T) -infinity (); + at (LEFT) = (T) - infinity (); at (RIGHT) = (T) infinity (); } @@ -149,7 +149,7 @@ Interval_t::to_string () const string s ("["); return (s + T_to_string (at (LEFT)) + string (",") - + T_to_string (at (RIGHT)) + string ("]")); + + T_to_string (at (RIGHT)) + string ("]")); } template @@ -159,7 +159,7 @@ Interval_t::contains (T r) const return r >= at (LEFT) && r <= at (RIGHT); } -#define INTERVAL__INSTANTIATE(T) struct Interval_t; \ +#define INTERVAL__INSTANTIATE(T) struct Interval_t; \ template int Interval__compare (const Interval_t &, Interval_t const &) #endif // INTERVAL_TCC diff --git a/flower/include/libc-extension.hh b/flower/include/libc-extension.hh index 3f356582c7..726df166ae 100644 --- a/flower/include/libc-extension.hh +++ b/flower/include/libc-extension.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,9 +29,9 @@ using namespace std; char *strnlwr (char *start, int n); char *strnupr (char *start, int n); -#if ! HAVE_MEMMEM /* GNU extension. */ +#if ! HAVE_MEMMEM /* GNU extension. */ void *memmem (void const *haystack, int haystack_len, - void const *needle, int needle_len); + void const *needle, int needle_len); #endif /* HAVE_MEMMEM */ #if ! HAVE_MEMRCHR @@ -45,18 +45,18 @@ unsigned char *memrev (unsigned char *byte, int length_i); double my_round (double); /* namespace std { */ - -#if ! HAVE_SNPRINTF /* GNU extension. */ + +#if ! HAVE_SNPRINTF /* GNU extension. */ int snprintf (char *str, size_t n, char const *format, ...); - __attribute__ ((format (printf, 3, 4))); +__attribute__ ((format (printf, 3, 4))); #endif -#if ! HAVE_VSNPRINTF /* GNU extension. */ +#if ! HAVE_VSNPRINTF /* GNU extension. */ int vsnprintf (char *str, size_t, char const *format, va_list args); #endif #ifndef isinf -#if ! HAVE_ISINF /* BSD extension. */ +#if ! HAVE_ISINF /* BSD extension. */ int isinf (double x); #endif #endif diff --git a/flower/include/matrix.hh b/flower/include/matrix.hh index 0447d4a17b..260f6c06bb 100644 --- a/flower/include/matrix.hh +++ b/flower/include/matrix.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ #include "std-vector.hh" -template > +template > class Matrix { public: @@ -32,7 +32,7 @@ public: } Matrix (vsize rows, vsize columns, T const &t) - : data_(rows * columns, t) + : data_ (rows *columns, t) { rank_ = rows; } @@ -57,15 +57,15 @@ public: data_.resize (rows * columns, t); else { - vector new_data; - new_data.resize (rows * columns, t); - vsize cur_cols = rank_ ? data_.size () / rank_: 0; - - for (vsize i = 0; i < cur_cols; i++) - for (vsize j = 0; j < rank_; j++) - new_data[i*rows + j] = data_[i*rank_ + j]; - rank_ = rows; - data_ = new_data; + vector new_data; + new_data.resize (rows * columns, t); + vsize cur_cols = rank_ ? data_.size () / rank_ : 0; + + for (vsize i = 0; i < cur_cols; i++) + for (vsize j = 0; j < rank_; j++) + new_data[i * rows + j] = data_[i * rank_ + j]; + rank_ = rows; + data_ = new_data; } } diff --git a/flower/include/memory-stream.hh b/flower/include/memory-stream.hh index b4114eccf5..1dffd7c98a 100644 --- a/flower/include/memory-stream.hh +++ b/flower/include/memory-stream.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,8 +40,8 @@ class Memory_out_stream public: static ssize_t reader (void *, char *, size_t); static ssize_t writer (void *, char const *, size_t); - static int seeker (void *, off64_t *, int); - static int cleaner (void *); + static ssize_t seeker (void *, off64_t *, size_t); + static ssize_t cleaner (void *); Memory_out_stream (); ~Memory_out_stream (); diff --git a/flower/include/offset.hh b/flower/include/offset.hh index e5ee4d0730..ba369a5c70 100644 --- a/flower/include/offset.hh +++ b/flower/include/offset.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ #include "std-string.hh" #include "real.hh" - /* This is a mixture a 2D vector. Sometimes it can also be convenient to think of 2D vectors as complex numbers @@ -79,7 +78,7 @@ public: Offset &operator /= (Real a) { - (*this) *= 1/a; + (*this) *= 1 / a; return *this; } @@ -111,7 +110,7 @@ public: } Offset direction () const; Offset swapped () const; - + Real arg () const; Real angle_degrees () const; Real length () const; @@ -124,8 +123,6 @@ IMPLEMENT_ARITHMETIC_OPERATOR (Offset, +); IMPLEMENT_ARITHMETIC_OPERATOR (Offset, -); IMPLEMENT_ARITHMETIC_OPERATOR (Offset, *); - - Offset complex_multiply (Offset, Offset); Offset complex_divide (Offset, Offset); Offset complex_exp (Offset); diff --git a/flower/include/parray.hh b/flower/include/parray.hh index 7af20291e4..cb3fc24ee8 100644 --- a/flower/include/parray.hh +++ b/flower/include/parray.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ using namespace std; template class Link_array : public vector { - + }; #endif // PARRAY_HH diff --git a/flower/include/polynomial.hh b/flower/include/polynomial.hh index 6959dc40bf..1959688d8d 100644 --- a/flower/include/polynomial.hh +++ b/flower/include/polynomial.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1993--2011 Han-Wen Nienhuys + Copyright (C) 1993--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,13 +28,13 @@ #include "arithmetic-operator.hh" #include "real.hh" -/// structure for a polynomial in one var. +/// structure for a polynomial in one var. struct Polynomial { /// degree of polynomial - int degree ()const; + ssize_t degree ()const; - /// coefficients + /// coefficients vector coefs_; // leading coef @@ -44,6 +44,7 @@ struct Polynomial Real lc () const; void print () const; Real eval (Real) const; + Real minmax (Real, Real, bool) const; void print_sols (vector) const; void check_sols (vector) const; void check_sol (Real x) const; @@ -62,7 +63,7 @@ struct Polynomial void operator *= (Polynomial const &p2); void operator -= (Polynomial const &p2); Polynomial (Real a, Real b = 0.0); - Polynomial (){} + Polynomial () {} void set_negate (const Polynomial &src); /// take the derivative diff --git a/flower/include/pqueue.hh b/flower/include/pqueue.hh index 981a37e463..895ceca03e 100644 --- a/flower/include/pqueue.hh +++ b/flower/include/pqueue.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -89,14 +89,14 @@ public: vsize j = i / 2; while (j) { - if (compare (elt (j), v) > 0) - { - elt (i) = elt (j); - i = j; - j = i / 2; - } - else - break; + if (compare (elt (j), v) > 0) + { + elt (i) = elt (j); + i = j; + j = i / 2; + } + else + break; } elt (i) = v; OK (); @@ -117,13 +117,13 @@ public: while (mini < size ()) { - if (compare (elt (mini + 1), elt (mini)) < 0) - mini++; - if (compare (last, elt (mini)) < 0) - break; - elt (lasti) = elt (mini); - lasti = mini; - mini *= 2; + if (compare (elt (mini + 1), elt (mini)) < 0) + mini++; + if (compare (last, elt (mini)) < 0) + break; + elt (lasti) = elt (mini); + lasti = mini; + mini *= 2; } elt (lasti) = last; heap_array_.pop_back (); diff --git a/flower/include/rational.hh b/flower/include/rational.hh index bf01c8b931..de1252ec67 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -74,7 +74,8 @@ public: Rational (Rational const &r) { copy (r);} Rational &operator = (Rational const &r) { - copy (r); return *this; + copy (r); + return *this; } Rational &operator *= (Rational); @@ -89,11 +90,11 @@ public: #include "arithmetic-operator.hh" -IMPLEMENT_ARITHMETIC_OPERATOR (Rational, /); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, / ); IMPLEMENT_ARITHMETIC_OPERATOR (Rational, +); IMPLEMENT_ARITHMETIC_OPERATOR (Rational, *); IMPLEMENT_ARITHMETIC_OPERATOR (Rational, -); -IMPLEMENT_ARITHMETIC_OPERATOR (Rational, %); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, % ); INSTANTIATE_COMPARE (Rational const &, Rational::compare); diff --git a/flower/include/real.hh b/flower/include/real.hh index a104454ad5..ceb1e114f0 100644 --- a/flower/include/real.hh +++ b/flower/include/real.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ typedef double Real; extern const Real infinity_f; /* namespace std { */ - + template inline T abs (T x) { return x > 0 ? x : -x; diff --git a/flower/include/std-string.hh b/flower/include/std-string.hh index fc4a1d1745..5b7d2af11d 100644 --- a/flower/include/std-string.hh +++ b/flower/include/std-string.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Jan Nieuwenhuizen + Copyright (C) 2006--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #ifndef STD_STRING_HH #define STD_STRING_HH - + #include "compare.hh" #include "flower-proto.hh" @@ -40,24 +40,23 @@ typedef size_t ssize; #define NPOS string::npos string to_string (string s); -string to_string (char c, int n=1); -string to_string (int i, char const *format=0); -string to_string (double f, char const *format=0); +string to_string (char c, int n = 1); +string to_string (int i, char const *format = 0); +string to_string (double f, char const *format = 0); string to_string (long); string to_string (long unsigned); -string to_string (I64, char const *format=0); +string to_string (I64, char const *format = 0); string to_string (unsigned); string to_string (bool b); string to_string (char const *format, ...) - __attribute__ ((format (printf, 1, 2))); - -string &replace_all (string* str, string const &find, string const &replace); -string &replace_all (string* str, char find, char replace); +__attribute__ ((format (printf, 1, 2))); + +string &replace_all (string *str, string const &find, string const &replace); +string &replace_all (string *str, char find, char replace); char *string_copy (string s); int string_compare (string const &, string const &); INSTANTIATE_COMPARE (string const &, string_compare); - #endif /* STD_STRING_HH */ diff --git a/flower/include/std-vector.hh b/flower/include/std-vector.hh index 43fed22f68..dd276df186 100644 --- a/flower/include/std-vector.hh +++ b/flower/include/std-vector.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Jan Nieuwenhuizen + Copyright (C) 2006--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -74,40 +74,45 @@ typedef size_t vsize; #include #undef vector -namespace std { +namespace std +{ + +/* Interface without pointer arithmetic (iterator) semantics. */ +template > +class vector : public __flower_vector +{ +public: + typedef typename __flower_vector::iterator iterator; + typedef typename __flower_vector::const_iterator const_iterator; - /* Interface without pointer arithmetic (iterator) semantics. */ - template > - class vector : public __flower_vector + vector () : __flower_vector () { - public: - typedef typename __flower_vector::iterator iterator; - typedef typename __flower_vector::const_iterator const_iterator; - - vector () : __flower_vector () - { - } - - vector (vector const& v) : __flower_vector (v) - { - } - - vector (const_iterator b, const_iterator e) : __flower_vector (b, e) - { - } - - T* - data () - { - return &(*this)[0]; - } - - T const* - data () const - { - return &(*this)[0]; - } - }; + } + + vector (size_t n) : __flower_vector (n) + { + } + + vector (vector const &v) : __flower_vector (v) + { + } + + vector (const_iterator b, const_iterator e) : __flower_vector (b, e) + { + } + + T * + data () + { + return &(*this)[0]; + } + + T const * + data () const + { + return &(*this)[0]; + } +}; } /* namespace std */ @@ -137,7 +142,7 @@ back (vector const &v, vsize i) } template -T& +T & back (vector &v, vsize i) { return v[v.size () - i - 1]; @@ -145,7 +150,7 @@ back (vector &v, vsize i) template void -concat (vector &v, vector const& w) +concat (vector &v, vector const &w) { v.insert (v.end (), w.begin (), w.end ()); } @@ -153,16 +158,16 @@ concat (vector &v, vector const& w) template vsize lower_bound (vector const &v, - T const &key, - Compare less, - vsize b=0, vsize e=VPOS) + T const &key, + Compare less, + vsize b = 0, vsize e = VPOS) { if (e == VPOS) e = v.size (); typename vector::const_iterator i = lower_bound (v.begin () + b, - v.begin () + e, - key, - less); + v.begin () + e, + key, + less); return i - v.begin (); } @@ -170,17 +175,17 @@ lower_bound (vector const &v, template vsize upper_bound (vector const &v, - T const &key, - Compare less, - vsize b=0, vsize e=VPOS) + T const &key, + Compare less, + vsize b = 0, vsize e = VPOS) { if (e == VPOS) e = v.size (); typename vector::const_iterator i = upper_bound (v.begin () + b, - v.begin () + e, - key, - less); + v.begin () + e, + key, + less); return i - v.begin (); } @@ -188,9 +193,9 @@ upper_bound (vector const &v, template vsize binary_search (vector const &v, - T const &key, - Compare less=less (), - vsize b=0, vsize e=VPOS) + T const &key, + Compare less, + vsize b = 0, vsize e = VPOS) { vsize lb = lower_bound (v, key, less, b, e); @@ -202,8 +207,8 @@ binary_search (vector const &v, template void vector_sort (vector &v, - Compare less, - vsize b=0, vsize e=VPOS) + Compare less, + vsize b = 0, vsize e = VPOS) { if (e == VPOS) e = v.size (); @@ -236,7 +241,7 @@ find (vector const &v, T const &key) template struct del : public unary_function { - void operator() (T x) + void operator () (T x) { delete x; x = 0; diff --git a/flower/include/string-convert.hh b/flower/include/string-convert.hh index 21ec7f189e..148005672e 100644 --- a/flower/include/string-convert.hh +++ b/flower/include/string-convert.hh @@ -19,7 +19,7 @@ class String_convert static int hex2nibble (Byte byte); static Byte nibble2hex_byte (Byte byte); public: - static string pad_to (string s, int length); + static string pad_to (string s, size_t length); static string bool_string (bool b); static string bin2dec (string bin_string); static string bin2hex (Byte bin_char); @@ -31,17 +31,18 @@ public: static int dec2int (string dec_string); static double dec2double (string dec_string); static string double_string (double f, char const *fmt = 0); - static string form_string (char const *format, ...) __attribute__ ((format (printf, 1,2))); + static string form_string (char const *format, ...) __attribute__ ((format (printf, 1, 2))); static string vform_string (char const *format, va_list args); static int hex2int (string str); static unsigned hex2unsigned (string str); static string hex2bin (string str); static string int_string (int i, char const *fmt = 0); static string unsigned_string (unsigned); + static string unsigned_long_string (unsigned long); static string long_string (long); - static string int2hex (int i, int length_i, char ch); - static string unsigned2hex (unsigned u, ssize length, char ch); - static string int2dec (int i, int length_i, char ch); + static string int2hex (int i, size_t length_i, char ch); + static string unsigned2hex (unsigned u, size_t length, char ch); + static string int2dec (int i, size_t length_i, char ch); static string rational_string (Rational); static string pointer_string (void const *); static string precision_string (double x, int n); diff --git a/flower/include/tuple.hh b/flower/include/tuple.hh index 1f8b0b28fb..c88f1935ad 100644 --- a/flower/include/tuple.hh +++ b/flower/include/tuple.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ struct Tuple Tuple () { } - + Tuple (T const *src) { for (int i = 0; i < N; i++) @@ -42,28 +42,27 @@ struct Tuple2 : public Tuple { } - + Tuple2 (K a, K b) { - Tuple *p(this); // ugr. - + Tuple *p (this); // ugr. + p->t_array[0] = a; p->t_array[1] = b; } }; - template inline bool -operator<(Tuple const &t1, - Tuple const &t2) +operator <(Tuple const &t1, + Tuple const &t2) { - for (int i = 0; i < N ; i++) + for (int i = 0; i < N; i++) { if (t1.t_array[i] > t2.t_array[i]) - return false; + return false; if (t1.t_array[i] < t2.t_array[i]) - return true; + return true; } return false; diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh index 1d6b02388e..fa084835d3 100644 --- a/flower/include/virtual-methods.hh +++ b/flower/include/virtual-methods.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,9 +23,7 @@ #include using namespace std; - /* - Virtual copy constructor. Make up for C++'s lack of a standard factory or clone () function. Usage: @@ -33,19 +31,18 @@ class Foo : Baseclass { VIRTUAL_COPY_CONSTRUCTOR (Baseclass, Foo); }; - */ #define DECLARE_CLASSNAME(name) \ - virtual const char *class_name () const { \ + virtual const char *class_name () const { \ return #name; \ } -#define VIRTUAL_COPY_CONSTRUCTOR(Base, name) \ +#define VIRTUAL_COPY_CONSTRUCTOR(Base, name) \ DECLARE_CLASSNAME(name);\ - virtual Base *clone () const \ - { \ - return new name (*this); \ + virtual Base *clone () const \ + { \ + return new name (*this); \ } #endif /* VIRTUAL_METHODS_HH */ diff --git a/flower/include/warn.hh b/flower/include/warn.hh index 3c2a6dc0a9..25240113ca 100644 --- a/flower/include/warn.hh +++ b/flower/include/warn.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,12 +22,47 @@ #include "std-string.hh" -void error (string s); -void message (string s); -void non_fatal_error (string); -void programming_error (string s); -void progress_indication (string s); -void warning (string s); -void successful (string s); +/* Log-level bitmasks */ +#define LOG_NONE 0 +#define LOG_ERROR 1<<0 +#define LOG_WARN 1<<1 +#define LOG_BASIC 1<<2 // undocumented basic_progress, i.e. input file name and success +#define LOG_PROGRESS 1<<3 +#define LOG_INFO 1<<4 +#define LOG_DEBUG 1<<8 + +/* Log-level definitions (or'ed bitmasks) */ +#define LOGLEVEL_NONE (LOG_NONE) +#define LOGLEVEL_ERROR (LOG_ERROR) +#define LOGLEVEL_WARN (LOGLEVEL_ERROR | LOG_WARN) +#define LOGLEVEL_BASIC (LOGLEVEL_WARN | LOG_BASIC) +#define LOGLEVEL_PROGRESS (LOGLEVEL_BASIC | LOG_PROGRESS) +#define LOGLEVEL_INFO (LOGLEVEL_PROGRESS | LOG_INFO) +#define LOGLEVEL_DEBUG (LOGLEVEL_INFO | LOG_DEBUG) + +extern int loglevel; +extern bool warning_as_error; + +/* output messages, in decreasing order of importance */ +void error (string s, string location = ""); // Fatal error, exits lilypond! +void programming_error (string s, string location = ""); +void non_fatal_error (string, string location = ""); +void warning (string s, string location = ""); +void basic_progress (string s, string location = ""); +/* progress_indication does by default *NOT* start on a new line */ +void progress_indication (string s, bool newline = false, string location = ""); +void message (string s, bool newline = true, string location = ""); +void debug_output (string s, bool newline = true, string location = ""); + +/* Helper functions that always print out the message. Callers should ensure + that the loglevel is obeyed */ +void print_message (int level, string location, string s, bool newline = true); + +bool is_loglevel (int level); +void set_loglevel (int level); +void set_loglevel (string level); + +void expect_warning (string msg); +void check_expected_warnings (); #endif /* WARN_HH */ diff --git a/flower/include/yaffut-parameters.hh b/flower/include/yaffut-parameters.hh index 57429e64ba..ed7bc0c581 100644 --- a/flower/include/yaffut-parameters.hh +++ b/flower/include/yaffut-parameters.hh @@ -6,7 +6,7 @@ #define TEST_PARAMETER(Suite, Case, Type, value) \ namespace { \ struct Case: public yaffut::Test{ \ - Type parameter_one_; \ + Type parameter_one_; \ Case (); \ }; \ } \ diff --git a/flower/include/yaffut.hh b/flower/include/yaffut.hh index e324922b69..aa54fa6616 100644 --- a/flower/include/yaffut.hh +++ b/flower/include/yaffut.hh @@ -6,7 +6,12 @@ #ifndef __YAFFUT_H__ #define __YAFFUT_H__ +#include "config.hh" +#if HAVE_CXA_DEMANGLE #include +#else +#include +#endif #include #include @@ -59,146 +64,151 @@ #define ASSERT_THROW YAFFUT_ASSERT_THROW #endif -namespace yaffut { +namespace yaffut +{ template -std::string demangle() +std::string demangle () { +#if HAVE_CXA_DEMANGLE size_t sz; int status; - char* ptr = abi::__cxa_demangle(typeid(T).name(), 0, &sz, &status); - std::string name(ptr ? ptr : "", ptr ? strlen(ptr) : 0); - if(ptr){ free(ptr); } - std::string::size_type pos = name.rfind("::"); - if(pos != std::string::npos) - { - name = name.substr(pos + 2); - } + char *ptr = abi::__cxa_demangle (typeid (T).name (), 0, &sz, &status); + std::string name (ptr ? ptr : "", ptr ? strlen (ptr) : 0); + if (ptr) { free (ptr); } + std::string::size_type pos = name.rfind ("::"); + if (pos != std::string::npos) + { + name = name.substr (pos + 2); + } return name; +#else + return typeid (T).name (); +#endif } struct ITest { - virtual ~ITest(){} + virtual ~ITest () {} }; class Factory { public: - typedef ITest* (*Create_t) (); + typedef ITest *(*Create_t) (); private: typedef std::map Tests_t; Tests_t m_Tests; size_t m_fail; size_t m_pass; private: - Factory(){} - ~Factory(){} - static bool EqualsSuiteName (std::string const &name, std::string const& s) + Factory () {} + ~Factory () {} + static bool EqualsSuiteName (std::string const &name, std::string const &s) { return name.find (':') >= name.length () - 2 - && s.substr (0, name.length ()) == name; + && s.substr (0, name.length ()) == name; } public: - static Factory& Instance() + static Factory &Instance () { static Factory instance; return instance; } - void Register(const std::string& name, Create_t create) + void Register (const std::string &name, Create_t create) { m_Tests[name] = create; } size_t Fail () { return m_fail; } - void List(const std::string& name) + void List (const std::string &name) { - for(Tests_t::const_iterator it = m_Tests.begin(); it != m_Tests.end(); ++it) - { - if(name.empty () || it->first == name - || EqualsSuiteName (name, it->first)) - std::cout << it->first << std::endl; - } + for (Tests_t::const_iterator it = m_Tests.begin (); it != m_Tests.end (); ++it) + { + if (name.empty () || it->first == name + || EqualsSuiteName (name, it->first)) + std::cout << it->first << std::endl; + } } - void Run(const std::string& name) + void Run (const std::string &name) { - for(Tests_t::const_iterator it = m_Tests.begin(); it != m_Tests.end(); ++it) - { - if("All" == name || it->first == name - || EqualsSuiteName (name, it->first)) + for (Tests_t::const_iterator it = m_Tests.begin (); it != m_Tests.end (); ++it) { - try - { - std::cout << std::endl << it->first << ' ' << std::flush; + if ("All" == name || it->first == name + || EqualsSuiteName (name, it->first)) { - std::auto_ptr test(it->second()); + try + { + std::cout << std::endl << it->first << ' ' << std::flush; + { + std::auto_ptr test (it->second ()); + } + std::cout << "[OK]" << std::flush; + ++m_pass; + } + catch (const std::exception &e) + { + std::cout << "[FAIL]\n " << e.what () << std::flush; + ++m_fail; + } + catch (...) + { + std::cout << "[FAIL]\n unknown exception" << std::flush; + ++m_fail; + } } - std::cout << "[OK]" << std::flush; - ++m_pass; - } - catch(const std::exception& e) - { - std::cout << "[FAIL]\n " << e.what() << std::flush; - ++m_fail; - } - catch(...) - { - std::cout << "[FAIL]\n unknown exception" << std::flush; - ++m_fail; - } } - } } void Report () { - const size_t size = m_Tests.size(); + const size_t size = m_Tests.size (); std::cout << std::endl; std::cout << "[TOTAL](" << m_pass + m_fail << '/' << size << ")" << std::endl; std::cout << "[OK](" << m_pass << '/' << size << ")" << std::endl; if (m_fail) std::cout << "[FAIL](" << m_fail << '/' << size << ")" << std::endl; } - int Main (int argc, const char* argv[]) + int Main (int argc, const char *argv[]) { - if(argc > 1 - && (std::string(argv[1]) == "-h" || std::string(argv[1]) == "--help")) - { - std::cout << "Yaffut - Yet Another Framework For Unit Testing.\n\n" - "Usage: yaffut [OPTION] [Suite:|Suite::Test]...\n\n" - "Options:\n" - " -h, --help show this help\n" - " -l, --list list test cases" << std::endl; - return 0; - } - if(argc > 1 - && (std::string(argv[1]) == "-l" || std::string(argv[1]) == "--list")) - { - Factory::Instance().List(argc > 2 ? argv[2] : ""); - return 0; - } + if (argc > 1 + && (std::string (argv[1]) == "-h" || std::string (argv[1]) == "--help")) + { + std::cout << "Yaffut - Yet Another Framework For Unit Testing.\n\n" + "Usage: yaffut [OPTION] [Suite:|Suite::Test]...\n\n" + "Options:\n" + " -h, --help show this help\n" + " -l, --list list test cases" << std::endl; + return 0; + } + if (argc > 1 + && (std::string (argv[1]) == "-l" || std::string (argv[1]) == "--list")) + { + Factory::Instance ().List (argc > 2 ? argv[2] : ""); + return 0; + } - const char* all[] = {"All"}; - const char** test = all; + const char *all[] = {"All"}; + const char **test = all; int num = 1; - if(1 < argc) - { - test = argv; - num = argc; - } - - for(int i = 0; i < num; ++i) - { - try + if (1 < argc) { - Factory::Instance().Run(test[i]); + test = argv; + num = argc; } - catch(const std::exception& e) + + for (int i = 0; i < num; ++i) { - std::clog << e.what() << std::endl; + try + { + Factory::Instance ().Run (test[i]); + } + catch (const std::exception &e) + { + std::clog << e.what () << std::endl; + } } - } - Factory::Instance().Report (); - return Factory::Instance().Fail (); + Factory::Instance ().Report (); + return Factory::Instance ().Fail (); } }; @@ -207,37 +217,37 @@ class failure: public std::exception std::string failure_; public: template - failure(const Expected& e, Actual& a, const char* at = "", const char* expr = "") + failure (const Expected &e, Actual &a, const char *at = "", const char *expr = "") { std::ostringstream os; os << at << expr << "\nexpected: " << "(" << demangle() << ") " << e << " != actual: " << "(" << demangle() << ") " << a; - failure_ = os.str(); + failure_ = os.str (); } - failure(const char* at = "", const char* expr = "") + failure (const char *at = "", const char *expr = "") { std::ostringstream os; os << at << expr; - failure_ = os.str(); + failure_ = os.str (); } - virtual ~failure() throw() {} - virtual const char* what() const throw() { return failure_.c_str(); } + virtual ~failure () throw () {} + virtual const char *what () const throw () { return failure_.c_str (); } }; template struct Registrator { - Registrator() + Registrator () { - Factory::Instance().Register(TestName(), Create); + Factory::Instance ().Register (TestName (), Create); } - const std::string& TestName() + const std::string &TestName () { - static const std::string name(demangle() + "::" + demangle()); + static const std::string name (demangle() + "::" + demangle()); return name; } - static ITest* Create() + static ITest *Create () { return new Case; } @@ -246,133 +256,129 @@ struct Registrator template struct Registrator { - Registrator() + Registrator () { - Factory::Instance().Register(TestName(), Create); + Factory::Instance ().Register (TestName (), Create); } - const std::string& TestName() + const std::string &TestName () { static const std::string name ("::" + demangle()); return name; } - static ITest* Create() + static ITest *Create () { return new Case; } }; - template struct Test: public ITest, public virtual Suite { static Registrator s_Registrator; - Test(): Suite() + Test (): Suite () { Registrator* r = &s_Registrator; - r = 0; + (void)r; } template - void assert_throw(void(T::*mf)(), const char* at) + void assert_throw (void (T::*mf) (), const char *at) { try - { - (dynamic_cast (this)->*mf)(); - throw yaffut::failure (at, "statement failed to throw"); - } - catch(const E&){} + { + (dynamic_cast (this)->*mf) (); + throw yaffut::failure (at, "statement failed to throw"); + } + catch (const E &) {} } }; template Registrator Test::s_Registrator; - template struct Test: public ITest { static Registrator s_Registrator; - Test() + Test () { Registrator* r = &s_Registrator; - r = 0; + (void)r; } template - void assert_throw(void(T::*mf)(), const char* at) + void assert_throw (void (T::*mf) (), const char *at) { try - { - (dynamic_cast (this)->*mf)(); - throw yaffut::failure (at, "statement failed to throw"); - } - catch(const E&){} + { + (dynamic_cast (this)->*mf) (); + throw yaffut::failure (at, "statement failed to throw"); + } + catch (const E &) {} } }; template Registrator Test::s_Registrator; - - template -void equal(const Expected& e, const Actual& a, const char* at = "", const char* expr = "") +void equal (const Expected &e, const Actual &a, const char *at = "", const char *expr = "") { - if(e != a) - { - throw failure(e, a, at, expr); - } + if (e != a) + { + throw failure (e, a, at, expr); + } } -inline void equal(double e, double a, const char* at = "", const char* expr = "") +inline void equal (double e, double a, const char *at = "", const char *expr = "") { - double max = std::abs(std::max(e, a)); + double max = std::abs (std::max (e, a)); max = max < 1.0 ? 1.0 : max; - if(std::abs(e - a) > std::numeric_limits::epsilon() * max) - { - throw failure(e, a, at, expr); - } + if (std::abs (e - a) > std::numeric_limits::epsilon () * max) + { + throw failure (e, a, at, expr); + } } -inline void check(bool b, const char* at = "", const char* expr = "") -{ - if(!b) - { - throw failure(at, expr); - } +inline void check (bool b, const char *at = "", const char *expr = "") +{ + if (!b) + { + throw failure (at, expr); + } } template -void unequal(const Expected& e, const Actual& a, const char* at = "", const char* expr = "") +void unequal (const Expected &e, const Actual &a, const char *at = "", const char *expr = "") { - if(e == a) - { - throw failure(e, a, at, expr); - } + if (e == a) + { + throw failure (e, a, at, expr); + } } -inline void unequal(double e, double a, const char* at = "", const char* expr = "") +inline void unequal (double e, double a, const char *at = "", const char *expr = "") { - double max = std::abs(std::max(e, a)); + double max = std::abs (std::max (e, a)); max = max < 1.0 ? 1.0 : max; - if(std::abs(e - a) <= std::numeric_limits::epsilon() * max) - { - throw failure(e, a, at, expr); - } + if (std::abs (e - a) <= std::numeric_limits::epsilon () * max) + { + throw failure (e, a, at, expr); + } } template -void fail(const T& expr, const char* at = "") +void fail (const T &expr, const char *at = "") { std::ostringstream os; os << expr; - throw failure(at, os.str().c_str()); + throw failure (at, os.str ().c_str ()); } template -void assert_throw(void(*pf)(), const char* at = "") +void assert_throw (void (*pf) (), const char *at = "") { try - { - (*pf)(); - throw failure (at, " statement failed to throw"); - } - catch(const E&){} + { + (*pf) (); + throw failure (at, " statement failed to throw"); + } + catch (const E &) {} } } @@ -389,11 +395,13 @@ void assert_throw(void(*pf)(), const char* at = "") #ifdef YAFFUT_MAIN #include +#include +#include -int main(int argc, const char* argv[]) +int main (int argc, const char *argv[]) { - std::cout << "pid(" << getpid() << ")" << std::endl; - return yaffut::Factory::Instance().Main (argc, argv); + std::cout << "pid(" << getpid () << ")" << std::endl; + return yaffut::Factory::Instance ().Main (argc, argv); }; #endif /* YAFFUT_MAIN */ diff --git a/flower/international.cc b/flower/international.cc index 17a9d49007..cbdcf58d6e 100644 --- a/flower/international.cc +++ b/flower/international.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,5 +58,5 @@ string _f (char const *format, string s, string s2, string s3) { return String_convert::form_string (gettext (format), s.c_str (), s2.c_str (), - s3.c_str ()); + s3.c_str ()); } diff --git a/flower/interval-set.cc b/flower/interval-set.cc index 24b05c8419..84bde76a9c 100644 --- a/flower/interval-set.cc +++ b/flower/interval-set.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,26 +51,26 @@ Interval_set::remove_interval (Interval rm) s.intersect (allowed_regions_[i]); if (!s.is_empty ()) - { - Interval before = allowed_regions_[i]; - Interval after = allowed_regions_[i]; + { + Interval before = allowed_regions_[i]; + Interval after = allowed_regions_[i]; - before[RIGHT] = s[LEFT]; - after[LEFT] = s[RIGHT]; + before[RIGHT] = s[LEFT]; + after[LEFT] = s[RIGHT]; - if (!before.is_empty () && before.length () > 0.0) - { - allowed_regions_.insert (allowed_regions_.begin () + i, before); - i++; - } - allowed_regions_.erase (allowed_regions_.begin () + i); - if (!after.is_empty () && after.length () > 0.0) - { - allowed_regions_.insert (allowed_regions_.begin () + i, after); - i++; - } - } + if (!before.is_empty () && before.length () > 0.0) + { + allowed_regions_.insert (allowed_regions_.begin () + (long)i, before); + i++; + } + allowed_regions_.erase (allowed_regions_.begin () + (long)i); + if (!after.is_empty () && after.length () > 0.0) + { + allowed_regions_.insert (allowed_regions_.begin () + (long)i, after); + i++; + } + } else - i++; + i++; } } diff --git a/flower/interval.cc b/flower/interval.cc index a372c0c5a8..04b141159d 100644 --- a/flower/interval.cc +++ b/flower/interval.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc index fee28d8e15..59d4a52f13 100644 --- a/flower/libc-extension.cc +++ b/flower/libc-extension.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -60,7 +60,7 @@ strnupr (char *start, int n) unsigned char * _memmem (unsigned char const *haystack, int haystack_len, - unsigned char const *needle, int needle_len) + unsigned char const *needle, int needle_len) { unsigned char const *end_haystack = haystack + haystack_len - needle_len + 1; unsigned char const *end_needle = needle + needle_len; @@ -72,12 +72,12 @@ _memmem (unsigned char const *haystack, int haystack_len, unsigned char const *subneedle = needle; unsigned char const *subhaystack = haystack; while (subneedle < end_needle) - if (*subneedle++ != *subhaystack++) - goto next; + if (*subneedle++ != *subhaystack++) + goto next; /* Completed the needle. Gotcha. */ return (unsigned char *) haystack; - next: +next: haystack++; } return 0; @@ -85,7 +85,7 @@ _memmem (unsigned char const *haystack, int haystack_len, void * memmem (void const *haystack, int haystack_len, - void const *needle, int needle_len) + void const *needle, int needle_len) { unsigned char const *haystack_byte_c = (unsigned char const *)haystack; unsigned char const *needle_byte_c = (unsigned char const *)needle; @@ -101,7 +101,7 @@ memrchr (unsigned char const *p, int n, char c) while (q > p) { if (*--q == c) - return (unsigned char *)q; + return (unsigned char *)q; } return 0; } @@ -133,17 +133,17 @@ memrev (unsigned char *byte, int length) double my_round (double x) { - return floor (x -0.5)+ 1.0; + return floor (x - 0.5) + 1.0; } /* namespace std { */ - + #ifndef isinf #if !HAVE_ISINF int isinf (double x) { - return x && (x == x/ 2); + return x && (x == x / 2); } #endif #endif diff --git a/flower/memory-stream.cc b/flower/memory-stream.cc index a560a926de..6cce684858 100644 --- a/flower/memory-stream.cc +++ b/flower/memory-stream.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,14 +31,15 @@ const int Memory_out_stream::block_size_ = 1024; lily_cookie_io_functions_t Memory_out_stream::functions_ -= { += +{ Memory_out_stream::reader, Memory_out_stream::writer, Memory_out_stream::seeker, Memory_out_stream::cleaner }; -int +ssize_t Memory_out_stream::cleaner (void *cookie) { Memory_out_stream *stream = (Memory_out_stream *) cookie; @@ -87,12 +88,12 @@ Memory_out_stream::get_string () const ssize_t Memory_out_stream::writer (void *cookie, - char const *buffer, - size_t size) + char const *buffer, + size_t size) { Memory_out_stream *stream = (Memory_out_stream *) cookie; - ssize_t newsize = stream->size_ + size; + ssize_t newsize = stream->size_ + (ssize_t) size; bool change = false; while (newsize > stream->buffer_blocks_ * block_size_) @@ -104,27 +105,27 @@ Memory_out_stream::writer (void *cookie, if (change) stream->buffer_ = (char *) realloc (stream->buffer_, - stream->buffer_blocks_ * block_size_); + (size_t) (stream->buffer_blocks_ * block_size_)); memcpy (stream->buffer_ + stream->size_, buffer, size); stream->size_ = newsize; - return size; + return (ssize_t) size; } ssize_t Memory_out_stream::reader (void * /* cookie */, - char * /* buffer */, - size_t /* size */) + char * /* buffer */, + size_t /* size */) { assert (false); return 0; } -int +ssize_t Memory_out_stream::seeker (void *, - off64_t *, - int) + off64_t *, + size_t) { assert (false); return 0; diff --git a/flower/offset.cc b/flower/offset.cc index 41b42d8b97..180f8acc61 100644 --- a/flower/offset.cc +++ b/flower/offset.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ Offset::to_string () const { string s; s = string (" (") + ::to_string (coordinate_a_[X_AXIS]) + ", " - + ::to_string (coordinate_a_[Y_AXIS]) + ")"; + + ::to_string (coordinate_a_[Y_AXIS]) + ")"; return s; } #endif @@ -91,23 +91,23 @@ Real Offset::length () const { return sqrt (sqr (coordinate_a_[X_AXIS]) - + sqr (coordinate_a_[Y_AXIS])); + + sqr (coordinate_a_[Y_AXIS])); } bool Offset::is_sane () const { return !isnan (coordinate_a_[X_AXIS]) - && !isnan (coordinate_a_ [Y_AXIS]) - && !isinf (coordinate_a_[X_AXIS]) - && !isinf (coordinate_a_[Y_AXIS]); + && !isnan (coordinate_a_ [Y_AXIS]) + && !isinf (coordinate_a_[X_AXIS]) + && !isinf (coordinate_a_[Y_AXIS]); } Offset Offset::direction () const { Offset d = *this; - d /= length (); + d /= length (); return d; } diff --git a/flower/polynomial.cc b/flower/polynomial.cc index 1530baee83..e3e50d6bc5 100644 --- a/flower/polynomial.cc +++ b/flower/polynomial.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1993--2011 Han-Wen Nienhuys + Copyright (C) 1993--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include - using namespace std; /* @@ -50,18 +49,44 @@ Polynomial::multiply (const Polynomial &p1, const Polynomial &p2) { Polynomial dest; - int deg = p1.degree () + p2.degree (); - for (int i = 0; i <= deg; i++) + ssize_t deg = p1.degree () + p2.degree (); + for (ssize_t i = 0; i <= deg; i++) { dest.coefs_.push_back (0); - for (int j = 0; j <= i; j++) - if (i - j <= p2.degree () && j <= p1.degree ()) - dest.coefs_.back () += p1.coefs_[j] * p2.coefs_[i - j]; + for (ssize_t j = 0; j <= i; j++) + if (i - j <= p2.degree () && j <= p1.degree ()) + dest.coefs_.back () += p1.coefs_[j] * p2.coefs_[i - j]; } return dest; } +Real +Polynomial::minmax (Real l, Real r, bool ret_max) const +{ + vector sols; + if (l > r) + { + programming_error ("left bound greater than right bound for polynomial minmax. flipping bounds."); + l = l + r; + r = l - r; + l = l - r; + } + + sols.push_back (eval (l)); + sols.push_back (eval (r)); + + Polynomial deriv (*this); + deriv.differentiate (); + vector maxmins = deriv.solve (); + for (vsize i = 0; i < maxmins.size (); i++) + if (maxmins[i] >= l && maxmins[i] <= r) + sols.push_back (eval (maxmins[i])); + vector_sort (sols, less ()); + + return ret_max ? sols.back () : sols[0]; +} + void Polynomial::differentiate () { @@ -82,16 +107,16 @@ Polynomial::power (int exponent, const Polynomial &src) while (e > 0) { if (e % 2) - { - dest = multiply (dest, base); - e--; - } + { + dest = multiply (dest, base); + e--; + } else - { - base = multiply (base, base); - e /= 2; - } + { + base = multiply (base, base); + e /= 2; + } } return dest; } @@ -105,8 +130,8 @@ Polynomial::clean () We only do relative comparisons. Absolute comparisons break down in degenerate cases. */ while (degree () > 0 - && (fabs (coefs_.back ()) < FUDGE * fabs (back (coefs_, 1)) - || !coefs_.back ())) + && (fabs (coefs_.back ()) < FUDGE * fabs (back (coefs_, 1)) + || !coefs_.back ())) coefs_.pop_back (); } @@ -152,26 +177,26 @@ Polynomial::set_mod (const Polynomial &u, const Polynomial &v) if (v.lc () < 0.0) { - for (int k = u.degree () - v.degree () - 1; k >= 0; k -= 2) - coefs_[k] = -coefs_[k]; + for (ssize_t k = u.degree () - v.degree () - 1; k >= 0; k -= 2) + coefs_[k] = -coefs_[k]; - for (int k = u.degree () - v.degree (); k >= 0; k--) - for (int j = v.degree () + k - 1; j >= k; j--) - coefs_[j] = -coefs_[j] - coefs_[v.degree () + k] * v.coefs_[j - k]; + for (ssize_t k = u.degree () - v.degree (); k >= 0; k--) + for (ssize_t j = v.degree () + k - 1; j >= k; j--) + coefs_[j] = -coefs_[j] - coefs_[v.degree () + k] * v.coefs_[j - k]; } else { - for (int k = u.degree () - v.degree (); k >= 0; k--) - for (int j = v.degree () + k - 1; j >= k; j--) - coefs_[j] -= coefs_[v.degree () + k] * v.coefs_[j - k]; + for (ssize_t k = u.degree () - v.degree (); k >= 0; k--) + for (ssize_t j = v.degree () + k - 1; j >= k; j--) + coefs_[j] -= coefs_[v.degree () + k] * v.coefs_[j - k]; } - int k = v.degree () - 1; + ssize_t k = v.degree () - 1; while (k >= 0 && coefs_[k] == 0.0) k--; - coefs_.resize (1+ ((k < 0) ? 0 : k)); + coefs_.resize (1 + ((k < 0) ? 0 : k)); return degree (); } @@ -231,9 +256,9 @@ Polynomial::solve_cubic ()const * substitute x = y - A/3 to eliminate quadric term: x^3 +px + q = 0 */ - Real sq_A = A *A; + Real sq_A = A * A; Real p = 1.0 / 3 * (-1.0 / 3 * sq_A + B); - Real q = 1.0 / 2 * (2.0 / 27 * A *sq_A - 1.0 / 3 * A *B + C); + Real q = 1.0 / 2 * (2.0 / 27 * A * sq_A - 1.0 / 3 * A * B + C); /* use Cardano's formula */ @@ -242,21 +267,23 @@ Polynomial::solve_cubic ()const if (iszero (D)) { - if (iszero (q)) { /* one triple solution */ - sol.push_back (0); - sol.push_back (0); - sol.push_back (0); - } - else { /* one single and one double solution */ - Real u = cubic_root (-q); - - sol.push_back (2 * u); - sol.push_back (-u); - } + if (iszero (q)) /* one triple solution */ + { + sol.push_back (0); + sol.push_back (0); + sol.push_back (0); + } + else /* one single and one double solution */ + { + Real u = cubic_root (-q); + + sol.push_back (2 * u); + sol.push_back (-u); + } } else if (D < 0) { - /* Casus irreducibilis: three real solutions */ + /* Casus irreducibilis: three real solutions */ Real phi = 1.0 / 3 * acos (-q / sqrt (-cb)); Real t = 2 * sqrt (-p); @@ -301,10 +328,10 @@ Polynomial::lc () return coefs_.back (); } -int +ssize_t Polynomial::degree ()const { - return coefs_.size () -1; + return coefs_.size () - 1; } /* all roots of quadratic eqn. diff --git a/flower/rational.cc b/flower/rational.cc index 7fe157c542..ed3d203b02 100644 --- a/flower/rational.cc +++ b/flower/rational.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,7 +42,6 @@ Rational::to_double () const return 0.0; } - #ifdef STREAM_SUPPORT ostream & operator << (ostream &o, Rational r) @@ -61,7 +60,7 @@ Rational::abs () const Rational Rational::trunc_rat () const { - if (is_infinity()) + if (is_infinity ()) return *this; return Rational ((num_ - (num_ % den_)) * sign_, den_); } @@ -101,7 +100,6 @@ Rational::Rational (int n) den_ = 1; } - void Rational::set_infinite (int s) { @@ -133,7 +131,6 @@ Rational::mod_rat (Rational div) const return r; } - /* copy & paste from scm_gcd (GUILE). */ @@ -151,36 +148,35 @@ gcd (I64 u, I64 v) I64 t; /* Determine a common factor 2^k */ while (!(1 & (u | v))) - { - k <<= 1; - u >>= 1; - v >>= 1; - } + { + k <<= 1; + u >>= 1; + v >>= 1; + } /* Now, any factor 2^n can be eliminated */ if (u & 1) - t = -v; + t = -v; else - { - t = u; - b3: - t = t >> 1; - } + { + t = u; +b3: + t = t >> 1; + } if (!(1 & t)) - goto b3; + goto b3; if (t > 0) - u = t; + u = t; else - v = -t; + v = -t; t = u - v; if (t != 0) - goto b3; + goto b3; result = u * k; } return result; } - void Rational::normalize () { @@ -276,20 +272,20 @@ Rational::Rational (double x) const int FACT = 1 << 20; /* - Thanks to Afie for this too simple idea. + Thanks to Afie for this too simple idea. - do not blindly substitute by libg++ code, since that uses - arbitrary-size integers. The rationals would overflow too - easily. + do not blindly substitute by libg++ code, since that uses + arbitrary-size integers. The rationals would overflow too + easily. */ num_ = (U64) (mantissa * FACT); den_ = (U64) FACT; normalize (); if (expt < 0) - den_ <<= -expt; + den_ <<= -expt; else - num_ <<= expt; + num_ <<= expt; normalize (); } else @@ -323,7 +319,7 @@ Rational::operator *= (Rational r) den_ *= r.den_; normalize (); - exit_func: +exit_func: return *this; } @@ -365,7 +361,7 @@ Rational::to_string () const int Rational::to_int () const { - return (int)(num () / den ()); + return (int) (num () / den ()); } int diff --git a/flower/std-string.cc b/flower/std-string.cc index 18ee4a832e..d2c2d624d2 100644 --- a/flower/std-string.cc +++ b/flower/std-string.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Jan Nieuwenhuizen + Copyright (C) 2006--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,7 +59,7 @@ to_string (long b) string to_string (long unsigned b) { - return String_convert::unsigned_string (b); + return String_convert::unsigned_long_string (b); } string @@ -93,7 +93,7 @@ replace_all (string *str, string const &find, string const &replace) ssize len = find.length (); ssize replen = replace.length (); for (ssize i = str->find (find); i != NPOS; i = str->find (find, i + replen)) - *str = str->replace (i, len, replace); + * str = str->replace (i, len, replace); return *str; } @@ -112,7 +112,7 @@ string_copy (string s) char *dest = new char[len + 1]; copy (s.begin (), s.end (), dest); dest[len] = 0; - + return dest; } @@ -134,7 +134,7 @@ string_split (string str, char c) { string s = str.substr (0, i); a.push_back (s); - i ++; + i++; str = str.substr (i); i = str.find (c); } @@ -147,10 +147,10 @@ string string_join (vector const &strs, string infix) { string result; - for (vsize i = 0; i < strs.size (); i ++) + for (vsize i = 0; i < strs.size (); i++) { if (i) - result += infix; + result += infix; result += strs[i]; } diff --git a/flower/string-convert.cc b/flower/string-convert.cc index c372520c16..68e6a0c0b8 100644 --- a/flower/string-convert.cc +++ b/flower/string-convert.cc @@ -37,7 +37,7 @@ string String_convert::bin2hex (Byte bin_char) { string str; - str += to_string ((char) nibble2hex_byte ((Byte)(bin_char >> 4))); + str += to_string ((char) nibble2hex_byte ((Byte) (bin_char >> 4))); str += to_string ((char) nibble2hex_byte (bin_char++)); return str; } @@ -46,10 +46,10 @@ string String_convert::bin2hex (string bin_string) { string str; - Byte const *byte = (Byte const*)bin_string.data (); + Byte const *byte = (Byte const *)bin_string.data (); for (ssize i = 0; i < bin_string.length (); i++) { - str += to_string ((char)nibble2hex_byte ((Byte)(*byte >> 4))); + str += to_string ((char)nibble2hex_byte ((Byte) (*byte >> 4))); str += to_string ((char)nibble2hex_byte (*byte++)); } return str; @@ -86,7 +86,7 @@ String_convert::dec2int (string dec_string) assert (false); assert (form_string ("%ld", l) == dec_string); - + return (int)l; } @@ -95,7 +95,7 @@ String_convert::i64_string (I64 i64, char const *fmt) { char buffer[STRING_BUFFER_LEN]; snprintf (buffer, STRING_BUFFER_LEN, - (fmt ? fmt : "%Ld"), i64); // assume radix 10 + (fmt ? fmt : "%Ld"), i64); // assume radix 10 return string (buffer); } // breendet imp from string @@ -104,11 +104,11 @@ String_convert::dec2double (string dec_string) { if (!dec_string.length ()) return 0; - + double d = 0.0; if (!sscanf (dec_string.c_str (), "%lf", &d)) assert (false); - + return d; } @@ -119,14 +119,14 @@ String_convert::hex2bin (string hex_string, string &bin_string_r) hex_string = "0" + hex_string; bin_string_r = ""; - Byte const *byte = (Byte const*) hex_string.data (); + Byte const *byte = (Byte const *) hex_string.data (); ssize i = 0; while (i < hex_string.length ()) { int high_i = hex2nibble (*byte++); int low_i = hex2nibble (*byte++); if (high_i < 0 || low_i < 0) - return 1; // invalid char + return 1; // invalid char bin_string_r += to_string ((char) (high_i << 4 | low_i), 1); i += 2; } @@ -140,7 +140,7 @@ String_convert::hex2bin (string hex_string) if (hex2bin (hex_string, str)) assert (false); - + return str; } @@ -158,7 +158,7 @@ String_convert::hex2nibble (Byte byte) // stupido. Should use int_string () string -String_convert::int2dec (int i, int length_i, char ch) +String_convert::int2dec (int i, size_t length_i, char ch) { char fill_char = ch; if (fill_char) @@ -168,12 +168,12 @@ String_convert::int2dec (int i, int length_i, char ch) string dec_string = to_string (i); // ugh - return to_string (fill_char, length_i - dec_string.length ()) + dec_string; + return to_string (fill_char, ssize_t (length_i - dec_string.length ())) + dec_string; } // stupido. Should use int_string () string -String_convert::unsigned2hex (unsigned u, ssize length, char fill_char) +String_convert::unsigned2hex (unsigned u, size_t length, char fill_char) { string str; if (!u) @@ -186,10 +186,10 @@ String_convert::unsigned2hex (unsigned u, ssize length, char fill_char) u /= 16; } #else - str += int_string (u, "%x"); // hmm. %lx vs. %x -> portability? + str += int_string (u, "%x"); // hmm. %lx vs. %x -> portability? #endif - str = to_string (fill_char, length - str.length ()) + str; + str = to_string (fill_char, ssize_t (length - str.length ())) + str; while ((str.length () > length) && (str[ 0 ] == 'f')) str = str.substr (2); @@ -197,7 +197,7 @@ String_convert::unsigned2hex (unsigned u, ssize length, char fill_char) } string -String_convert::int2hex (int i, int length_i, char fill_char) +String_convert::int2hex (int i, size_t length_i, char fill_char) { return unsigned2hex ((unsigned)i, length_i, fill_char); } @@ -206,9 +206,9 @@ Byte String_convert::nibble2hex_byte (Byte byte) { if ((byte & 0x0f) <= 9) - return (Byte)((byte & 0x0f) + '0'); + return (Byte) ((byte & 0x0f) + '0'); else - return (Byte)((byte & 0x0f) - 10 + 'a'); + return (Byte) ((byte & 0x0f) - 10 + 'a'); } /** Convert an integer to a string @@ -221,7 +221,7 @@ String_convert::int_string (int i, char const *fmt) { char buffer[STRING_BUFFER_LEN]; snprintf (buffer, STRING_BUFFER_LEN, - (fmt ? fmt : "%d"), i); // assume radix 10 + (fmt ? fmt : "%d"), i); // assume radix 10 return string (buffer); } @@ -271,7 +271,7 @@ String_convert::char_string (char c, int n) char *ch = new char[ n ]; memset (ch, c, n); string s (ch, n); - + delete[] ch; return s; } @@ -327,7 +327,6 @@ String_convert::precision_string (double x, int n) return (sign (x) > 0 ? str : "-" + str); } - string String_convert::long_string (long l) { @@ -345,9 +344,17 @@ String_convert::unsigned_string (unsigned u) } string -String_convert::pad_to (string s, int n) +String_convert::unsigned_long_string (unsigned long ul) +{ + char s[STRING_BUFFER_LEN]; + sprintf (s, "%lu", ul); + return s; +} + +string +String_convert::pad_to (string s, size_t n) { - return s + string (max (int(n - s.length ()), 0), ' '); + return s + string (max (int (n - s.length ()), 0), ' '); } string @@ -365,5 +372,5 @@ String_convert::to_lower (string s) string String_convert::reverse (string s) { - return (char*) memrev ((unsigned char *)s.data (), s.length ()); + return (char *) memrev ((unsigned char *)s.data (), s.length ()); } diff --git a/flower/test-file-name.cc b/flower/test-file-name.cc index 9bd06f121c..adbaa52913 100644 --- a/flower/test-file-name.cc +++ b/flower/test-file-name.cc @@ -8,7 +8,7 @@ string slashify (string file_name); struct CaseB: public yaffut::Test { - CaseB(): File_name("123"){} + CaseB (): File_name ("123") {} }; TEST_STRING (File_name, Mingw_slashify, "foe.ly") diff --git a/flower/test-file-path.cc b/flower/test-file-path.cc index fb2f3f2f65..a20364b98c 100644 --- a/flower/test-file-path.cc +++ b/flower/test-file-path.cc @@ -1,6 +1,7 @@ #include "file-path.hh" #include +#include #include "yaffut.hh" #include "config.hh" @@ -10,7 +11,11 @@ TEST (File_path, Find) char const *extensions[] = {"ly", "", 0}; string file = "init"; char cwd[PATH_MAX]; - getcwd (cwd, PATH_MAX); + if (!getcwd (cwd, PATH_MAX)) + { + cerr << "Could not get current work directory\n"; + exit (1); + } string ly_dir = string (getenv ("top-src-dir")) + "/ly"; parse_path (string (1, PATHSEP) + ly_dir); string file_name = find (file, extensions); diff --git a/flower/test-std.cc b/flower/test-std.cc index 1c1a71fa3a..8fce64abe1 100644 --- a/flower/test-std.cc +++ b/flower/test-std.cc @@ -70,7 +70,7 @@ FUNC (vector_slice) EQUAL (vector (v.begin (), v.begin ()).size (), vsize (0)); EQUAL (vector (v.begin (), v.end ()).size (), v.size ()); EQUAL (vector (v.begin () + 1, v.begin () + 2).size (), - vsize (1)); + vsize (1)); #endif } @@ -99,13 +99,13 @@ FUNC (vector_insert) v.insert (1, 0); #else v.insert (v.begin (), 1); -#endif +#endif EQUAL (v[0], 1); #if VECTOR_INSERT v.insert (2, v.size ()); #else v.insert (v.end (), 2); -#endif +#endif EQUAL (v.back (), 2); vector u; u.insert (u.begin (), v.begin (), v.end ()); @@ -121,8 +121,8 @@ FUNC (parray_concat) #if !STD_VECTOR Link_array u, v; #else - vector u, v; -#endif + vector u, v; +#endif int a[5] = { 0, 1, 2, 3, 4 }; u.push_back (&a[0]); u.push_back (&a[1]); diff --git a/flower/test-string.cc b/flower/test-string.cc index 509aea0728..5ed243fb08 100644 --- a/flower/test-string.cc +++ b/flower/test-string.cc @@ -13,12 +13,11 @@ using namespace std; - FUNC (string_split_join) { string orig = "a/bbbb/cc//d"; vector splits = string_split (orig, '/'); string loop = string_join (splits, "/"); - EQUAL(orig, loop); - EQUAL(splits.size (), size_t (5)); + EQUAL (orig, loop); + EQUAL (splits.size (), size_t (5)); } diff --git a/flower/warn.cc b/flower/warn.cc index 1c2f4ed134..f3f6e1c743 100644 --- a/flower/warn.cc +++ b/flower/warn.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,68 +22,232 @@ #include #include +#include "std-vector.hh" #include "international.hh" using namespace std; -/* Is progress indication at NEWLINE? */ -static bool progress_newline = true; +/** We have several different loglevels, each with its own message function(s): + ERROR: error, non_fatal_error, programming_error + WARN: warning + BASIC_PROGRESS: success/... + PROGRESS: progress_indication + INFO: message + DEBUG: debug + All these functions check whether the corresponding loglevel bit is set + and print the message only if that's the case +*/ + +/* Define the loglevel (default is INFO) */ +int loglevel = LOGLEVEL_INFO; +bool warning_as_error = false; + +bool +is_loglevel (int level) +{ + // Check the bitmask containing the loglevel + return (loglevel & level); +} -/* Display user information that is not a full message. */ void -progress_indication (string s) +set_loglevel (int level) +{ + loglevel = level; + debug_output (_f ("Log level set to %d\n", loglevel)); +} + +void +set_loglevel (string level) +{ + /* Convert the loglevel string to lower-case, so we allow + both upper- and lower-case loglevels */ + std::transform (level.begin (), level.end (), level.begin (), ::tolower); + + /* Compare just the first few characters, so the loglevels + can be abbreviated */ + if (level.compare (0, 5, "debug") == 0) // debug + set_loglevel (LOGLEVEL_DEBUG); + else if (level.compare (0, 4, "info") == 0) // info + set_loglevel (LOGLEVEL_INFO); + else if (level.compare (0, 4, "prog") == 0) // progress + set_loglevel (LOGLEVEL_PROGRESS); + else if (level.compare (0, 5, "basic") == 0) // basic progress + set_loglevel (LOGLEVEL_BASIC); + else if (level.compare (0, 4, "warn") == 0) // warning + set_loglevel (LOGLEVEL_WARN); + else if (level.compare (0, 3, "err") == 0) // error + set_loglevel (LOGLEVEL_ERROR); + else if (level.compare (0, 4, "none") == 0) // none + set_loglevel (LOGLEVEL_NONE); + else + { + int l; + if (sscanf (level.c_str (), "%d", &l)) + set_loglevel (l); + else + { + non_fatal_error (_f ("unknown log level `%s', using default (INFO)", + level)); + set_loglevel (LOGLEVEL_INFO); + } + } +} + +/** + * Register a warning string to be expected and the output suppressed. + * If the warning is encountered, it will be removed from the list of + * expected warnings again. + */ +vector expected_warnings; +void expect_warning (string msg) +{ + expected_warnings.push_back (msg); +} + +void check_expected_warnings () { + if (expected_warnings.size () > 0) + { + /* Some expected warning was not triggered, so print out a warning. */ + string msg = _f ("%d expected warning(s) not encountered: ", + expected_warnings.size ()); + for (vsize i = 0; i < expected_warnings.size (); i++) + msg += "\n " + expected_warnings[i]; + + warning (msg); + } + expected_warnings.clear (); +} + +bool is_expected (string s) +{ + bool expected = false; + for (vsize i = 0; i < expected_warnings.size (); i++) + { + // Compare the msg with the suppressed string; If the beginning matches, + // i.e. the msg can have additional content AFTER the full (exact) + // suppressed message, suppress the warning. + // This is needed for the Input class, where the message contains + // the input file contents after the real message. + if (s.compare (0, expected_warnings[i].size (), expected_warnings[i]) == 0) + { + expected = true; + expected_warnings.erase (expected_warnings.begin () + i); + break; + } + } + return expected; +} + +/** + * Helper functions: print_message_part (no newline prepended) + * print_message (always starts on a new line) + */ + +/* Is output message at NEWLINE? */ +static bool message_newline = true; + +/* Display user information as a full message. + if newline is true, start the message on a new line. +*/ +void +print_message (int level, string location, string s, bool newline) +{ + /* Only print the message if the current loglevel allows it: */ + if (!is_loglevel (level)) + return; + if (newline && !message_newline) + fputc ('\n', stderr); + /* Test if all silly progress_indication ("\n") can be dropped now. */ if (s == "\n") return; + if (!location.empty ()) + s = location + ": " + s; fputs (s.c_str (), stderr); fflush (stderr); if (s.length ()) - progress_newline = s[s.length () - 1] == '\n'; + message_newline = s[s.length () - 1] == '\n'; } -/* Display a single user message. Always starts on a new line. */ +/** The actual output functions to be called in lilypond code. + * Sorted in descending order of importance (errors, warnings, progress, info, + * debug). Each prints a message on a separate line. + */ + +/* Display a fatal error message. Also exits lilypond. */ void -message (string s) +error (string s, string location) { - if (!progress_newline) - fputc ('\n', stderr); - progress_indication (s); + print_message (LOG_ERROR, location, _f ("fatal error: %s", s) + "\n"); + exit (1); } -/* Display a success message. Always starts on a new line. */ +/* Display a severe programming error message, but don't exit. */ void -successful (string s) +programming_error (string s, string location) { - message (_f ("success: %s", s.c_str ()) + "\n"); + if (is_expected (s)) + print_message (LOG_DEBUG, location, _f ("suppressed programming error: %s", s) + "\n"); + else if (warning_as_error) + error (s, location); + else + { + print_message (LOG_ERROR, location, _f ("programming error: %s", s) + "\n"); + print_message (LOG_ERROR, location, _ ("continuing, cross fingers") + "\n"); + } } -/* Display a warning message. Always starts on a new line. */ +/* Display a non-fatal error message, don't exit. */ void -warning (string s) +non_fatal_error (string s, string location) { - message (_f ("warning: %s", s.c_str ()) + "\n"); + if (is_expected (s)) + print_message (LOG_DEBUG, location, _f ("suppressed error: %s", s) + "\n"); + else if (warning_as_error) + error (s, location); + else + print_message (LOG_ERROR, location, _f ("error: %s", s) + "\n"); } +/* Display a warning message. */ void -non_fatal_error (string s) +warning (string s, string location) { - message (_f ("error: %s", s.c_str ()) + "\n"); + if (is_expected (s)) + print_message (LOG_DEBUG, location, _f ("suppressed warning: %s", s) + "\n"); + else if (warning_as_error) + error (s, location); + else + print_message (LOG_WARN, location, _f ("warning: %s", s) + "\n"); } -/* Display an error message. Always starts on a new line. */ +/* Display a success message. */ void -error (string s) +basic_progress (string s, string location) { - non_fatal_error (s); - exit (1); + print_message (LOG_BASIC, location, s + "\n", true); } +/* Display information about the progress. */ void -programming_error (string s) +progress_indication (string s, bool newline, string location) { - message (_f ("programming error: %s", s) + "\n"); - message (_ ("continuing, cross fingers") + "\n"); + print_message (LOG_PROGRESS, location, s, newline); } +/* Display a single info message. */ +void +message (string s, bool newline, string location) +{ + // Use the progress loglevel for all normal messages (including progress msg) + print_message (LOG_INFO, location, s, newline); +} + +/* Display a debug information, not necessarily on a new line. */ +void +debug_output (string s, bool newline, string location) +{ + print_message (LOG_DEBUG, location, s, newline); +} diff --git a/input/regression/accidental-ancient.ly b/input/regression/accidental-ancient.ly index 0829a75ef6..153ae207b1 100644 --- a/input/regression/accidental-ancient.ly +++ b/input/regression/accidental-ancient.ly @@ -6,7 +6,7 @@ are collected here. " } -\version "2.14.0" +\version "2.16.0" \relative c'' { \time 3/4 diff --git a/input/regression/accidental-broken-tie-spacing.ly b/input/regression/accidental-broken-tie-spacing.ly index b9eccd8ced..2b9d8cc9b4 100644 --- a/input/regression/accidental-broken-tie-spacing.ly +++ b/input/regression/accidental-broken-tie-spacing.ly @@ -1,11 +1,15 @@ -\version "2.14.0" +\version "2.16.0" +\paper { ragged-right = ##t } \header { texidoc = "When a tie is broken, the spacing engine must consider the -accidental after the line break, to prevent a collision from occurring." +accidental after the line break. The second and third lines should have +the same note spacing." } -{ \key g \major gis''1~ \break gis''4 -\repeat unfold 43 {d4 \noBreak} } +{ \key bes \major r1 \break + eses''4 r2 eses''4~ \break + eses''4 r2 f''4 +} diff --git a/input/regression/accidental-cautionary.ly b/input/regression/accidental-cautionary.ly index 53e35c535f..babfea8703 100644 --- a/input/regression/accidental-cautionary.ly +++ b/input/regression/accidental-cautionary.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Cautionary accidentals may be indicated using either diff --git a/input/regression/accidental-clef-change.ly b/input/regression/accidental-clef-change.ly index c2e78f4925..4420086565 100644 --- a/input/regression/accidental-clef-change.ly +++ b/input/regression/accidental-clef-change.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" \new Staff \relative c' { \key g\major \clef treble diff --git a/input/regression/accidental-collision.ly b/input/regression/accidental-collision.ly index b238f477aa..aab51034c8 100644 --- a/input/regression/accidental-collision.ly +++ b/input/regression/accidental-collision.ly @@ -2,7 +2,7 @@ texidoc = "accidentals avoid stems of other notes too." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/accidental-contemporary.ly b/input/regression/accidental-contemporary.ly index 4aadbb95a5..f34d2392fa 100644 --- a/input/regression/accidental-contemporary.ly +++ b/input/regression/accidental-contemporary.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Several automatic accidental rules @@ -30,13 +30,13 @@ Both scores should show the same accidentals. \score { \relative c'' { - #(set-accidental-style 'dodecaphonic) + \accidentalStyle "dodecaphonic" gis4 a g gisis - #(set-accidental-style 'neo-modern) + \accidentalStyle "neo-modern" gis8 a gis gis g' gis gis,, a' - #(set-accidental-style 'neo-modern-cautionary) + \accidentalStyle "neo-modern-cautionary" eis fis eis eis g2 - #(set-accidental-style 'teaching) + \accidentalStyle "teaching" \key e \major e8 eis fis fis gis2 } diff --git a/input/regression/accidental-double.ly b/input/regression/accidental-double.ly index e393282148..799e6e48e1 100644 --- a/input/regression/accidental-double.ly +++ b/input/regression/accidental-double.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If two forced accidentals happen at the same time, only one sharp sign is printed." diff --git a/input/regression/accidental-forced-tie-barline.ly b/input/regression/accidental-forced-tie-barline.ly deleted file mode 100644 index b62d22a11f..0000000000 --- a/input/regression/accidental-forced-tie-barline.ly +++ /dev/null @@ -1,17 +0,0 @@ -\version "2.14.0" - -\header { - texidoc = "Cautionary accidentals applied to tied notes after a -bar line are valid for the whole measure." -} - -notes = \relative c' { - fis1 ~ - fis!2 fis ~ - fis?2 fis -} - -<< - \new NoteNames \notes - \new Staff \notes ->> diff --git a/input/regression/accidental-forced-tie.ly b/input/regression/accidental-forced-tie.ly index c875dc81e0..77fa641c5d 100644 --- a/input/regression/accidental-forced-tie.ly +++ b/input/regression/accidental-forced-tie.ly @@ -1,7 +1,10 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Accidentals can be forced with ! and ? even if the notes are tied." + texidoc = "Accidentals can be forced with ! and ? even if the +notes are tied. Cautionary accidentals applied to tied notes +after a bar line are valid for the whole measure. +" } \layout { @@ -9,5 +12,9 @@ } \relative c'' { - gis4 ~ gis!~ gis? + gis4 ~ gis!~ gis? r4 + fis1 ~ + fis!2 fis ~ + fis?2 fis } + diff --git a/input/regression/accidental-ledger.ly b/input/regression/accidental-ledger.ly index 4c55bc267c..d281e2be9c 100644 --- a/input/regression/accidental-ledger.ly +++ b/input/regression/accidental-ledger.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/accidental-octave.ly b/input/regression/accidental-octave.ly index da4c1e195a..effdfec520 100644 --- a/input/regression/accidental-octave.ly +++ b/input/regression/accidental-octave.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/accidental-piano.ly b/input/regression/accidental-piano.ly index 6c47b306b7..170c4b32a2 100644 --- a/input/regression/accidental-piano.ly +++ b/input/regression/accidental-piano.ly @@ -6,7 +6,7 @@ accidental." } -\version "2.14.0" +\version "2.16.0" \layout { @@ -14,7 +14,7 @@ accidental." } \new PianoStaff \relative << - #(set-accidental-style 'piano) + \accidentalStyle "piano" \new Staff { ges'4 ges4 } \new Staff { r8 gis r8 gis } >> diff --git a/input/regression/accidental-placement-padding.ly b/input/regression/accidental-placement-padding.ly index 5151237061..0b40e548a1 100644 --- a/input/regression/accidental-placement-padding.ly +++ b/input/regression/accidental-placement-padding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Accidental padding works for all accidentals, including diff --git a/input/regression/accidental-placement-samepitch.ly b/input/regression/accidental-placement-samepitch.ly index 29d8bf7daf..4daaa2e7bc 100644 --- a/input/regression/accidental-placement-samepitch.ly +++ b/input/regression/accidental-placement-samepitch.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When two (or more) accidentals modify the same pitch, diff --git a/input/regression/accidental-placement.ly b/input/regression/accidental-placement.ly index 6937225eed..008513d5ae 100644 --- a/input/regression/accidental-placement.ly +++ b/input/regression/accidental-placement.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/accidental-quarter.ly b/input/regression/accidental-quarter.ly index 93406f9c3a..a1fc977745 100644 --- a/input/regression/accidental-quarter.ly +++ b/input/regression/accidental-quarter.ly @@ -3,7 +3,7 @@ texidoc = "Quarter tone notation is supported, including threequarters flat." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \relative c'' { diff --git a/input/regression/accidental-single-double.ly b/input/regression/accidental-single-double.ly index 4d7c1d56f7..c849234597 100644 --- a/input/regression/accidental-single-double.ly +++ b/input/regression/accidental-single-double.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" A sharp sign after a double sharp sign, as well as a flat sign diff --git a/input/regression/accidental-suggestions.ly b/input/regression/accidental-suggestions.ly index 5f2eff948f..3beb51a0fd 100644 --- a/input/regression/accidental-suggestions.ly +++ b/input/regression/accidental-suggestions.ly @@ -7,7 +7,7 @@ denoting Musica Ficta." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/accidental-tie-overridden.ly b/input/regression/accidental-tie-overridden.ly deleted file mode 100644 index bdc67a5781..0000000000 --- a/input/regression/accidental-tie-overridden.ly +++ /dev/null @@ -1,23 +0,0 @@ -\version "2.14.0" - -\header { - texidoc = "The presence of an accidental after a broken tie can be -overridden." -} -\layout { - ragged-right = ##t -} - -mus = \relative c' { - \override Accidental #'hide-tied-accidental-after-break = ##t - f1~ - f2~f4 % ~ f8 - fis8 gis8 ~ - \break - gis1 -} - -<< - \new NoteNames \mus - \new Voice { \key g \major \mus } ->> diff --git a/input/regression/accidental-tie.ly b/input/regression/accidental-tie.ly index 739d919e4c..c81aed3390 100644 --- a/input/regression/accidental-tie.ly +++ b/input/regression/accidental-tie.ly @@ -1,11 +1,14 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The second and third notes should not get accidentals, because they are tied to a note. However, an accidental is present if the line is broken at the tie, which happens for the G - sharp." + sharp. + The presence of an accidental after a broken tie can be + overridden. +" } \layout { ragged-right = ##t @@ -17,6 +20,12 @@ mus = \relative c' { fis8 gis8 ~ \break gis1 + \override Accidental #'hide-tied-accidental-after-break = ##t + f1~ + f2~f4 % ~ f8 + fis8 gis8 ~ + \break + gis1 } << diff --git a/input/regression/accidental-unbroken-tie-spacing.ly b/input/regression/accidental-unbroken-tie-spacing.ly index 8ca5e3920a..7f22cdf0ba 100644 --- a/input/regression/accidental-unbroken-tie-spacing.ly +++ b/input/regression/accidental-unbroken-tie-spacing.ly @@ -3,7 +3,7 @@ texidoc = "Tied notes with accidentals do not cause problems with spacing." } -\version "2.14.0" +\version "2.16.0" \relative c' { \clef treble diff --git a/input/regression/accidental-voice.ly b/input/regression/accidental-voice.ly index 819e3b78f8..bd06e7fc66 100644 --- a/input/regression/accidental-voice.ly +++ b/input/regression/accidental-voice.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \header{ @@ -28,7 +28,7 @@ voiceb = \transpose c c' { \voicea } \context Staff << - #(set-accidental-style 'modern-voice-cautionary) + \accidentalStyle "modern-voice-cautionary" \new Voice \voicea \new Voice \voiceb >> diff --git a/input/regression/accidental.ly b/input/regression/accidental.ly index 06ccc02b98..4fa0feddbc 100644 --- a/input/regression/accidental.ly +++ b/input/regression/accidental.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/alignment-order.ly b/input/regression/alignment-order.ly index 3bca500d09..cbd9fa3098 100644 --- a/input/regression/alignment-order.ly +++ b/input/regression/alignment-order.ly @@ -3,28 +3,30 @@ anywhere in the vertical alignment. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \relative << - \new Staff = "1" { c4 c s2 } - \new Staff = "2" { c4 c s2 } - \new Staff = "3" { c4 c s2 } - { \skip 2 + \new Staff = "1" { c2 c s1 } + \new Staff = "2" { c2 c s1 } + \new StaffGroup << + \new Staff = "3" { c2 c s1 } + { \skip 1 << \lyrics { - \set alignBelowContext = #"1" - below8 first staff + \set alignBelowContext = #"1" + below4 first staff } \new Staff { - \set Staff.alignAboveContext = #"3" - \times 4/6 { - \override TextScript #'padding = #3 - c8^"this" d_"staff" e^"above" d_"last" e^"staff" f - } + \set Staff.alignAboveContext = #"3" + \times 4/6 { + \override TextScript #'padding = #3 + c4^"this" d_"staff" e^"above" d_"last" e^"staff" f + } } >> } + >> >> diff --git a/input/regression/alignment-vertical-manual-setting.ly b/input/regression/alignment-vertical-manual-setting.ly index 1448acf835..3613c57ca2 100644 --- a/input/regression/alignment-vertical-manual-setting.ly +++ b/input/regression/alignment-vertical-manual-setting.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \book { \score { diff --git a/input/regression/allfontstyle.ily b/input/regression/allfontstyle.ily index 54a9ee36ab..1a37432f74 100644 --- a/input/regression/allfontstyle.ily +++ b/input/regression/allfontstyle.ily @@ -1,4 +1,4 @@ -\version "2.11.51" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/alter-broken.ly b/input/regression/alter-broken.ly new file mode 100644 index 0000000000..43dc32dc5d --- /dev/null +++ b/input/regression/alter-broken.ly @@ -0,0 +1,45 @@ +\version "2.16.0" + +\header { + texidoc = "The command @code{\\alterBroken} may be used to override the +pieces of a broken spanner independently. The following example demonstrates +its usage with a variety of data types." +} + +\layout { + ragged-right = ##t +} + +#(ly:expect-warning (_ "not a spanner name")) + +\relative c'' { + \alterBroken Slur #'positions #'((3 . 3) (5 . 5)) + \alterBroken Slur #'color #'((0 0 1) (1 0 0)) + \alterBroken Slur #'dash-definition #'( ((0 1 0.4 0.75)) + ((0 0.5 0.4 0.75) (0.5 1 1 1)) ) + d4( d' b g + \break + d d' b g) + \alterBroken "Staff.OttavaBracket" #'padding #'(1 3) + % Spaces in spanner's name are disregarded. + \alterBroken "Staff . OttavaBracket" #'style #'(line dashed-line) + \ottava #1 + % It is possible to use procedures as arguments. + \alterBroken Hairpin #'stencil #`( + ,ly:hairpin::print + ,(lambda (grob) + (ly:stencil-rotate (ly:hairpin::print grob) -5 0 0))) + c\< d e + % Since `NoteHead' is not the name of a spanner, the following has no + % effect on layout. A warning (suppressed here) is issued. + \alterBroken NoteHead #'color #`(,red ,blue) + \alterBroken Tie #'color #`(() ,blue) + \alterBroken Tie #'control-points #'( + ((1 . 3) (2 . 4) (3 . 4) (4 . 3)) + ((3 . 3) (4 . 4) (5 . 4) (6 . 3)) + ) + f~ + \break + f c a f\! + \ottava #0 +} diff --git a/input/regression/ambitus-cue.ly b/input/regression/ambitus-cue.ly new file mode 100644 index 0000000000..83b10e3ac7 --- /dev/null +++ b/input/regression/ambitus-cue.ly @@ -0,0 +1,27 @@ +\version "2.16.0" + +\header { + texidoc = "Ambitus for pieces beginning with @code{\\cueDuringWithClef}. + +Cues are often used at or near the beginning of a piece. Furthermore, +a cue is frequently in a different clef, so the +@code{\\cueDuringWithClef} command is handy. Using this command at +the beginning of a piece should leave the ambitus displayed based +on the main clef. +" +} + +\addQuote "other" \relative c { r4 c e g } + +\new Staff \new Voice \relative c' +{ + \cueDuringWithClef #"other" #UP #"bass" { R1 } | + e4 b c2 +} + +\layout { + \context { + \Voice + \consists "Ambitus_engraver" + } +} diff --git a/input/regression/ambitus-gap.ly b/input/regression/ambitus-gap.ly index 339939ec1a..adc38287ee 100644 --- a/input/regression/ambitus-gap.ly +++ b/input/regression/ambitus-gap.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The gaps between an @code{AmbitusLine} and its diff --git a/input/regression/ambitus-percussion-staves.ly b/input/regression/ambitus-percussion-staves.ly index 521698ab27..c965349941 100644 --- a/input/regression/ambitus-percussion-staves.ly +++ b/input/regression/ambitus-percussion-staves.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Adding ambitus to percussion contexts does not cause diff --git a/input/regression/ambitus-pitch-ordering.ly b/input/regression/ambitus-pitch-ordering.ly index a70446530e..50ca97a03d 100644 --- a/input/regression/ambitus-pitch-ordering.ly +++ b/input/regression/ambitus-pitch-ordering.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Ambitus use actual pitch not lexicographic ordering." diff --git a/input/regression/ambitus-slur.ly b/input/regression/ambitus-slur.ly new file mode 100644 index 0000000000..a59d5e11be --- /dev/null +++ b/input/regression/ambitus-slur.ly @@ -0,0 +1,12 @@ +\version "2.16.0" +\header { + texidoc = "Ambitus accidentals (whether present or not) are ignored by the +slur engravers. +" +} + +\score { + \new Voice \with { \consists Ambitus_engraver } { + c'4( es') + } +} diff --git a/input/regression/ambitus-with-ligature.ly b/input/regression/ambitus-with-ligature.ly index c82e51ce40..024354b57f 100644 --- a/input/regression/ambitus-with-ligature.ly +++ b/input/regression/ambitus-with-ligature.ly @@ -1,4 +1,4 @@ -\version "2.14" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/ambitus.ly b/input/regression/ambitus.ly index 7c36449dfc..b5c579b01d 100644 --- a/input/regression/ambitus.ly +++ b/input/regression/ambitus.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Ambitus indicate pitch ranges for voices. diff --git a/input/regression/apply-context.ly b/input/regression/apply-context.ly index b83c906bd5..712f4ec237 100644 --- a/input/regression/apply-context.ly +++ b/input/regression/apply-context.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/apply-output.ly b/input/regression/apply-output.ly index 79d2d75b5a..6e50ca5c44 100644 --- a/input/regression/apply-output.ly +++ b/input/regression/apply-output.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The @code{\\applyOutput} expression is the most flexible way to diff --git a/input/regression/arpeggio-bracket.ly b/input/regression/arpeggio-bracket.ly index 60d1dc4257..4e5f835d3b 100644 --- a/input/regression/arpeggio-bracket.ly +++ b/input/regression/arpeggio-bracket.ly @@ -1,7 +1,7 @@ \layout { ragged-right= ##t } -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" A square bracket on the left indicates that the player should not diff --git a/input/regression/arpeggio-collision.ly b/input/regression/arpeggio-collision.ly index 56ccaafb6b..4f4a22f4b4 100644 --- a/input/regression/arpeggio-collision.ly +++ b/input/regression/arpeggio-collision.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Arpeggio stays clear of accidentals and flipped note heads." diff --git a/input/regression/arpeggio-no-overshoot.ly b/input/regression/arpeggio-no-overshoot.ly index 823c50bf3f..5368458a8a 100644 --- a/input/regression/arpeggio-no-overshoot.ly +++ b/input/regression/arpeggio-no-overshoot.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Arpeggios do not overshoot the highest note head. diff --git a/input/regression/arpeggio-no-staff-symbol.ly b/input/regression/arpeggio-no-staff-symbol.ly index 25cd8c2ac1..c2d4380214 100644 --- a/input/regression/arpeggio-no-staff-symbol.ly +++ b/input/regression/arpeggio-no-staff-symbol.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Arpeggios stil work in the absence of a staff-symbol." diff --git a/input/regression/arpeggio-parenthesis.ly b/input/regression/arpeggio-parenthesis.ly index 728bcef431..af6f91d18f 100644 --- a/input/regression/arpeggio-parenthesis.ly +++ b/input/regression/arpeggio-parenthesis.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "There is a variant of the arpeggio sign that uses a diff --git a/input/regression/arpeggio-span-collision.ly b/input/regression/arpeggio-span-collision.ly index 3f405b4515..bbe1f8c955 100644 --- a/input/regression/arpeggio-span-collision.ly +++ b/input/regression/arpeggio-span-collision.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Cross-staff or -voice arpeggios which include single diff --git a/input/regression/arpeggio-span-one-staff.ly b/input/regression/arpeggio-span-one-staff.ly index c7606ecbdf..c5860407b1 100644 --- a/input/regression/arpeggio-span-one-staff.ly +++ b/input/regression/arpeggio-span-one-staff.ly @@ -2,7 +2,7 @@ texidoc = "Span arpeggios within one staff also work" } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \new PianoStaff << diff --git a/input/regression/arpeggio.ly b/input/regression/arpeggio.ly index 1652dfb697..dc6ae63480 100644 --- a/input/regression/arpeggio.ly +++ b/input/regression/arpeggio.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Arpeggios are supported, both cross-staff and broken single staff. diff --git a/input/regression/articulation-snappizzicato.ly b/input/regression/articulation-snappizzicato.ly index 10bd6489f2..784f721789 100644 --- a/input/regression/articulation-snappizzicato.ly +++ b/input/regression/articulation-snappizzicato.ly @@ -1,6 +1,6 @@ \header { texidoc = "The snappizzicato articulation adds a snappizzicato sign to the note." } -\version "2.14.0" +\version "2.16.0" \relative c'' { c4\snappizzicato } diff --git a/input/regression/augmentum.ly b/input/regression/augmentum.ly index 1e189c8783..19f8a86588 100644 --- a/input/regression/augmentum.ly +++ b/input/regression/augmentum.ly @@ -2,7 +2,7 @@ texidoc = "Augmentum dots are accounted for in horizontal spacing." } -\version "2.14.0" +\version "2.16.0" \include "gregorian.ly" \score { diff --git a/input/regression/auto-beam-bar.ly b/input/regression/auto-beam-bar.ly index 9f15da02e6..8daa66e330 100644 --- a/input/regression/auto-beam-bar.ly +++ b/input/regression/auto-beam-bar.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="No auto beams will be put over (manual) repeat bars." diff --git a/input/regression/auto-beam-beaming-override.ly b/input/regression/auto-beam-beaming-override.ly index 9e8356286e..6798aa8e83 100644 --- a/input/regression/auto-beam-beaming-override.ly +++ b/input/regression/auto-beam-beaming-override.ly @@ -8,7 +8,7 @@ beaming pattern related functions at the start of an autobeam." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } { \time 2/4 diff --git a/input/regression/auto-beam-breathe.ly b/input/regression/auto-beam-breathe.ly index 66db8d1a4e..5eee83a9f1 100644 --- a/input/regression/auto-beam-breathe.ly +++ b/input/regression/auto-beam-breathe.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Automatic beams are ended early if a breathing sign is diff --git a/input/regression/auto-beam-exceptions.ly b/input/regression/auto-beam-exceptions.ly new file mode 100644 index 0000000000..676bb3aafb --- /dev/null +++ b/input/regression/auto-beam-exceptions.ly @@ -0,0 +1,50 @@ +\version "2.16.0" + +\header { + + doctitle = "beamExceptions" + + texinfo = "beamExceptions is used to modify the automatic beaming for certain durations; + the expected grouping is given after the note duration" + +} + +\relative c' { + \time 2/4 + \set Score.beamExceptions = #'( + ( end . + ( + ( (1 . 32) . (4 4 4 4) ) + ) + ) + ) + \repeat unfold 16 c32 + \time 3/4 + \set Score.beamExceptions = #'( + ( end . + ( + ( (1 . 32) . (4 4 4 4 4 4) ) + ) + ) + ) + \repeat unfold 24 c32 + c8 c32 c32 c32 c32 c16 c16 c32 c32 c32 c32 c16 c32 c32 c32 c32 c32 c32 + \time 4/4 + \set Score.beamExceptions = #'( + ( end . + ( + ( (1 . 32) . (4 4 4 4 4 4 4 4) ) + ) + ) + ) + \repeat unfold 32 c32 + \time 6/8 + \set Score.beamExceptions = #'( + ( end . + ( + ( (1 . 32) . (4 4 4 4 4 4) ) + ) + ) + ) + \repeat unfold 24 c32 +} diff --git a/input/regression/auto-beam-no-beam.ly b/input/regression/auto-beam-no-beam.ly index be7c874d31..bf82fb1f4c 100644 --- a/input/regression/auto-beam-no-beam.ly +++ b/input/regression/auto-beam-no-beam.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/auto-beam-partial-grace.ly b/input/regression/auto-beam-partial-grace.ly index 18b61dc3e9..a6efba7055 100644 --- a/input/regression/auto-beam-partial-grace.ly +++ b/input/regression/auto-beam-partial-grace.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Grace notes at the start of a partial measure do not diff --git a/input/regression/auto-beam-partial.ly b/input/regression/auto-beam-partial.ly index b8f8157259..1151dea94c 100644 --- a/input/regression/auto-beam-partial.ly +++ b/input/regression/auto-beam-partial.ly @@ -2,7 +2,7 @@ texidoc="Autobeaming works properly in partial measures." } -\version "2.14.0" +\version "2.16.0" diff --git a/input/regression/auto-beam-recheck.ly b/input/regression/auto-beam-recheck.ly index 8e368de5d4..08dd89564e 100644 --- a/input/regression/auto-beam-recheck.ly +++ b/input/regression/auto-beam-recheck.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In 4/4 time, the first and second and third and fourth diff --git a/input/regression/auto-beam-triplet.ly b/input/regression/auto-beam-triplet.ly index 2a7bb39c7a..121a22f79f 100644 --- a/input/regression/auto-beam-triplet.ly +++ b/input/regression/auto-beam-triplet.ly @@ -4,7 +4,7 @@ texidoc = "Automatic beaming is also done on tuplets." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right= ##t } \relative c''{ diff --git a/input/regression/auto-beam-tuplets.ly b/input/regression/auto-beam-tuplets.ly index b3f2b9b61c..89a2e7c4bf 100644 --- a/input/regression/auto-beam-tuplets.ly +++ b/input/regression/auto-beam-tuplets.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Tuplet-spanner should not put (visible) brackets on diff --git a/input/regression/auto-beam.ly b/input/regression/auto-beam.ly index 6496d04415..8c58935d81 100644 --- a/input/regression/auto-beam.ly +++ b/input/regression/auto-beam.ly @@ -3,7 +3,7 @@ beam." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/auto-change.ly b/input/regression/auto-change.ly index c7c503a85f..f57fe6cbc1 100644 --- a/input/regression/auto-change.ly +++ b/input/regression/auto-change.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/autobeam-3-4-rules.ly b/input/regression/autobeam-3-4-rules.ly new file mode 100644 index 0000000000..4a098e33d8 --- /dev/null +++ b/input/regression/autobeam-3-4-rules.ly @@ -0,0 +1,34 @@ +\version "2.16.0" + +\header { + + doctitle = "Special beaming rules for 3/4 time" + + texinfo = "Beaming in 3/4 time has special treatment. By default +six eighth notes are beamed in one. Beams that would imply 6/8 time +may be avoided with @code{beamHalfMeasure = ##f}. When the beaming +is changed, beams should start at the beginning of the measure. +" + +} + +\relative c' { + \time 3/4 + \set Timing.beamHalfMeasure = ##f + r4.^\markup "Prevent beams that imply 6/8 time" c8 c c | + c8 c r c c r | + r8_"but these beams are okay" c c c c c | c c c r r4 \bar "||" + + \set Timing.beamHalfMeasure = ##t + r4.^\markup "Or allow them" c8 c c c c r c c r + \break + + \unset Timing.beamExceptions + r8^\markup "Beam to the beat" c c c c c + c c c r r4 \bar "||" + + \set Timing.baseMoment = #(ly:make-moment 1 8) + \set Timing.beatStructure = #'(3 3) + r8^\markup "Override to beam groups of 3 eighth notes" c c c c c + r4. c8 c c c c c r4. +} diff --git a/input/regression/autobeam-nobeam.ly b/input/regression/autobeam-nobeam.ly index b986d26262..8c4e7f04c5 100644 --- a/input/regression/autobeam-nobeam.ly +++ b/input/regression/autobeam-nobeam.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " - \noBeam should terminate an autobeam, even if it's not a + @code{\\noBeam} should terminate an autobeam, even if it's not a recommended place for stopping a beam. In this example, the first three eighth notes should be beamed. " diff --git a/input/regression/autobeam-show-defaults.ly b/input/regression/autobeam-show-defaults.ly index 59a948ce59..57cafc0627 100644 --- a/input/regression/autobeam-show-defaults.ly +++ b/input/regression/autobeam-show-defaults.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/autobeam-start-at-beginning-of-measure-in-3-4.ly b/input/regression/autobeam-start-at-beginning-of-measure-in-3-4.ly deleted file mode 100644 index a6b8652bf6..0000000000 --- a/input/regression/autobeam-start-at-beginning-of-measure-in-3-4.ly +++ /dev/null @@ -1,19 +0,0 @@ -\version "2.14.0" - -\header { - - texidoc = " -3/4 beaming has special rules, that are hardcoded in the autobeam -routines. When the beaming is changed, beams should start at the -beginning of the measure. In this case, the measure should be beamed -in two. -" -} - -\relative c' { - \time 3/4 - \set Timing.baseMoment = #(ly:make-moment 1 8) - \set Timing.beatStructure = #'(3 3) - \set Timing.beamExceptions = #'() - c8 c c c c c -} diff --git a/input/regression/autobeam-tuplet-recheck.ly b/input/regression/autobeam-tuplet-recheck.ly new file mode 100644 index 0000000000..fbd81b8ec2 --- /dev/null +++ b/input/regression/autobeam-tuplet-recheck.ly @@ -0,0 +1,16 @@ +\version "2.16.0" + +\header { + + texidoc = "Autobeam rechecking works properly with tuplets. +In the example, the first beat should be beamed completely together." + +} + +\relative c' { + \time 2/4 + c16 c + \times 2/3 { c8 c16 } + \times 2/3 { c8 c16 } + c16 c +} diff --git a/input/regression/automatic-polyphony-context-id.ly b/input/regression/automatic-polyphony-context-id.ly index a825222600..22c838efaa 100644 --- a/input/regression/automatic-polyphony-context-id.ly +++ b/input/regression/automatic-polyphony-context-id.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The bottom-level contexts in polyphony shorthand are diff --git a/input/regression/automatic-polyphony-drumstaff.ly b/input/regression/automatic-polyphony-drumstaff.ly index 0f53dfe71c..e1d3862ae3 100644 --- a/input/regression/automatic-polyphony-drumstaff.ly +++ b/input/regression/automatic-polyphony-drumstaff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "In a DrumStaff, automatic polyphony can be used without explicitly initializing separate voices." @@ -12,4 +12,4 @@ bd4 sn4 bd4 sn4 } } -} \ No newline at end of file +} diff --git a/input/regression/automatic-polyphony-tabstaff.ly b/input/regression/automatic-polyphony-tabstaff.ly index bed980d736..9bffe77ac6 100644 --- a/input/regression/automatic-polyphony-tabstaff.ly +++ b/input/regression/automatic-polyphony-tabstaff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "In a TabStaff, automatic polyphony can be used without explicitly initializing separate voices." @@ -15,4 +15,4 @@ test = { \new Staff { \clef "treble_8" \test } \new TabStaff { \test } >> -} \ No newline at end of file +} diff --git a/input/regression/backend-excercise.ly b/input/regression/backend-excercise.ly index 06120020d9..aa83c7ff8f 100644 --- a/input/regression/backend-excercise.ly +++ b/input/regression/backend-excercise.ly @@ -1,8 +1,8 @@ \header { - texidoc = "Excercise all output functions" + texidoc = "Exercise all output functions" } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/backend-svg.ly b/input/regression/backend-svg.ly index 18e83a2eb3..f74f65852c 100644 --- a/input/regression/backend-svg.ly +++ b/input/regression/backend-svg.ly @@ -1,3 +1,4 @@ +\version "2.16.0" %{ #(ly:set-option 'backend 'svg) #(set! output-count 1) @@ -5,7 +6,6 @@ \include "typography-demo.ly" -\version "2.14.0" #(define outname (ly:parser-output-name parser)) diff --git a/input/regression/baerenreiter-sarabande.ly b/input/regression/baerenreiter-sarabande.ly index abf0cc0637..5c5af19ced 100644 --- a/input/regression/baerenreiter-sarabande.ly +++ b/input/regression/baerenreiter-sarabande.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" forcedLastBreak = { \break } @@ -16,9 +16,9 @@ forcedLastBreak = { \break } #(define (assert-system-count-override count) - (ly:export #{ \override NoteHead #'after-line-breaking - = #(lambda (smob) (assert-system-count smob $count)) - #})) + #{ \override NoteHead #'after-line-breaking + = #(lambda (smob) (assert-system-count smob count)) + #}) \header { @@ -126,7 +126,7 @@ sarabandeA = \context Voice \relative c { d'[ cis] | %% d4 d,,2 | d4 -% #(assert-system-count-override 6) +% $(assert-system-count-override 6) d,,2 | } @@ -187,10 +187,7 @@ smallerPaper = \layout { \layout { } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 40 4) - } + \tempo 4 = 40 } diff --git a/input/regression/balloon.ly b/input/regression/balloon.ly index 2acc43ff15..3ba915b3ca 100644 --- a/input/regression/balloon.ly +++ b/input/regression/balloon.ly @@ -5,7 +5,7 @@ with lines and explanatory text added." } -\version "2.14.0" +\version "2.16.0" \layout{ ragged-right = ##t } diff --git a/input/regression/bar-check-redefine.ly b/input/regression/bar-check-redefine.ly index 8bc0d20b64..6fde50c37e 100644 --- a/input/regression/bar-check-redefine.ly +++ b/input/regression/bar-check-redefine.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The meaning of @code{|} is stored in the identifier @code{pipeSymbol}." diff --git a/input/regression/bar-extent.ly b/input/regression/bar-extent.ly index f29196802b..a39a8b7976 100644 --- a/input/regression/bar-extent.ly +++ b/input/regression/bar-extent.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" ledgerUp = { diff --git a/input/regression/bar-line-dashed.ly b/input/regression/bar-line-dashed.ly deleted file mode 100644 index cf6ebd09bb..0000000000 --- a/input/regression/bar-line-dashed.ly +++ /dev/null @@ -1,17 +0,0 @@ - -\header { texidoc = "The dashes in a dashed bar line covers staff - lines exactly. Dashed barlines between staves start and end on a - half dash precisely." } - -\version "2.14.0" - -\paper { ragged-right = ##t } - -\relative \new StaffGroup << - \new Staff { - c4 \bar "dashed" c } - \new Staff { - c c - } ->> - diff --git a/input/regression/bar-line-dotted.ly b/input/regression/bar-line-dotted.ly deleted file mode 100644 index eb7a63c6ca..0000000000 --- a/input/regression/bar-line-dotted.ly +++ /dev/null @@ -1,18 +0,0 @@ - -\header { - texidoc = "The dots in a dotted bar line are in spaces." - -} - -\version "2.14.0" - -\paper { ragged-right = ##t } - -\relative \new StaffGroup << - \new Staff { - c4 \bar ":" c } - \new Staff { - c c - } ->> - diff --git a/input/regression/bar-line-segno.ly b/input/regression/bar-line-segno.ly index 4865ed7297..17d5a7dc0e 100644 --- a/input/regression/bar-line-segno.ly +++ b/input/regression/bar-line-segno.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Segno bar lines can be used to mark the begin and the end of a segno part." diff --git a/input/regression/bar-line-thick.ly b/input/regression/bar-line-thick.ly deleted file mode 100644 index 68fde67aa2..0000000000 --- a/input/regression/bar-line-thick.ly +++ /dev/null @@ -1,15 +0,0 @@ - -\header { texidoc = "A thick bar line is created by \bar \".\", which is consistent with e.g. \bar \"|.\"" } - -\version "2.14.0" - -\paper { ragged-right = ##t } - -\relative \new StaffGroup << - \new Staff { - c4 \bar "." c } - \new Staff { - c c - } ->> - diff --git a/input/regression/bar-line-tick.ly b/input/regression/bar-line-tick.ly deleted file mode 100644 index be2d6ffca6..0000000000 --- a/input/regression/bar-line-tick.ly +++ /dev/null @@ -1,16 +0,0 @@ - -\header { texidoc = "A ticked bar line is a short line of the same length as a - staff space, centered on the top-most barline." } - -\version "2.14.0" - -\paper { ragged-right = ##t } - -\relative \new StaffGroup << - \new Staff { - c4 \bar "'" c } - \new Staff { - c c - } ->> - diff --git a/input/regression/bar-lines.ly b/input/regression/bar-lines.ly new file mode 100644 index 0000000000..359ccb4dd2 --- /dev/null +++ b/input/regression/bar-lines.ly @@ -0,0 +1,38 @@ +\version "2.16.0" + +\header { texidoc = "Various types of bar lines can be drawn. + +The dashes in a dashed bar line covers staff lines exactly. Dashed +barlines between staves start and end on a half dash precisely. + +The dots in a dotted bar line are in spaces. + +A thick bar line is created by \bar \".\", which is consistent +with e.g. \bar \"|.\" + +A ticked bar line is a short line of the same length as a staff +space, centered on the top-most barline. + +" } + +\relative \new StaffGroup << + \new Staff = "1" { + c2 \bar "dashed" c + s1 + c2 \bar ":" c + s1 + c2 \bar "." c + s1 + c2 \bar "'" c + } + \new Staff = "2" { + c2 c + s1 + c2 c + s1 + c2 c + s1 + c2 c + } +>> + diff --git a/input/regression/bar-number-check-warning.ly b/input/regression/bar-number-check-warning.ly new file mode 100644 index 0000000000..7bede8d7ca --- /dev/null +++ b/input/regression/bar-number-check-warning.ly @@ -0,0 +1,19 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Barcheck failed got ~a expect ~a") 3 15) + +\header { + +texidoc="Bar numbers check may be inserted to check whether the current +bar number is correct. +" + +} + +\relative c'' { + c1 | + \barNumberCheck #2 % OK + c1 | + \barNumberCheck #15 % Warning + c1 +} diff --git a/input/regression/bar-number-visibility.ly b/input/regression/bar-number-visibility.ly new file mode 100644 index 0000000000..afe6f1e273 --- /dev/null +++ b/input/regression/bar-number-visibility.ly @@ -0,0 +1,41 @@ +\version "2.16.0" + +\header { + texidoc = "The @code{barNumberVisibility} property controls at what +intervals bar numbers are printed. +" +} + +music = \relative c' { + \repeat unfold 3 { c2 \bar "" \break \repeat unfold 5 c2 } +} + +{ + \set Score.barNumberVisibility = #first-bar-number-invisible + \music +} + +{ + \set Score.barNumberVisibility = #all-bar-numbers-visible + \music +} + +{ + \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3) + \music +} + +{ + \set Score.barNumberVisibility = #(modulo-bar-number-visible 3 2) + \music +} + +{ + \set Score.barNumberVisibility = #first-bar-number-invisible-save-broken-bars + \music +} + +{ + \set Score.barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers + \music +} diff --git a/input/regression/bar-number-volta-repeat.ly b/input/regression/bar-number-volta-repeat.ly new file mode 100644 index 0000000000..8672a924f8 --- /dev/null +++ b/input/regression/bar-number-volta-repeat.ly @@ -0,0 +1,41 @@ +\version "2.16.0" + +\header { + texidoc = "Bar numbers can automatically reset at volta repeats. +" +} + +musicWithBarNumberCheck = +#(define-music-function (parser location n) + (integer?) +#{ + \relative c' { + \override Score.BarNumber #'break-visibility = #'#(#t #t #t) + \repeat volta 28 { + c1 | + c | + c | + } + \alternative { + << { c \barNumberCheck #n c } \\ { e e } >> + { + c \barNumberCheck #n c | + } + { + c \barNumberCheck #n c | + } + } + c c + } +#}) + +{ + \set Score . alternativeNumberingStyle = #'numbers + \musicWithBarNumberCheck #5 + \musicWithBarNumberCheck #12 +} +{ \set Score . alternativeNumberingStyle = #'numbers-with-letters + \musicWithBarNumberCheck #5 + \musicWithBarNumberCheck #12 +} + diff --git a/input/regression/bar-number.ly b/input/regression/bar-number.ly index 398a82ff5d..719c3f7acb 100644 --- a/input/regression/bar-number.ly +++ b/input/regression/bar-number.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/bar-scripts.ly b/input/regression/bar-scripts.ly index f57fe3d182..540e761786 100644 --- a/input/regression/bar-scripts.ly +++ b/input/regression/bar-scripts.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/beam-auto-knee.ly b/input/regression/beam-auto-knee.ly index 53ee89f514..47028de62e 100644 --- a/input/regression/beam-auto-knee.ly +++ b/input/regression/beam-auto-knee.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/beam-auto.ly b/input/regression/beam-auto.ly index 9c1bdff5ff..43dcef2c13 100644 --- a/input/regression/beam-auto.ly +++ b/input/regression/beam-auto.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "@cindex Beaming Presets There are presets for the @code{auto-beam} engraver in the case of common diff --git a/input/regression/beam-beamlet-break.ly b/input/regression/beam-beamlet-break.ly index f882985eb5..8e06a82089 100644 --- a/input/regression/beam-beamlet-break.ly +++ b/input/regression/beam-beamlet-break.ly @@ -3,7 +3,7 @@ beamlets on the same height." } -\version "2.14.0" +\version "2.16.0" \paper { raggedright = ##t diff --git a/input/regression/beam-beamlet-grace.ly b/input/regression/beam-beamlet-grace.ly index f790d4bd76..73de47896c 100644 --- a/input/regression/beam-beamlet-grace.ly +++ b/input/regression/beam-beamlet-grace.ly @@ -3,7 +3,7 @@ texidoc = "Beamlets in grace notes remain readable." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/beam-beat-grouping.ly b/input/regression/beam-beat-grouping.ly index 508f20dbfe..0b70b39495 100644 --- a/input/regression/beam-beat-grouping.ly +++ b/input/regression/beam-beat-grouping.ly @@ -7,7 +7,7 @@ signature. " \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { diff --git a/input/regression/beam-break-no-bar.ly b/input/regression/beam-break-no-bar.ly index 1ad1910491..2d32965f6d 100644 --- a/input/regression/beam-break-no-bar.ly +++ b/input/regression/beam-break-no-bar.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \new Staff \with { \remove Bar_engraver diff --git a/input/regression/beam-break.ly b/input/regression/beam-break.ly index b10ab895ff..c56fb8d602 100644 --- a/input/regression/beam-break.ly +++ b/input/regression/beam-break.ly @@ -4,7 +4,7 @@ " } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right= ##t } \relative c'' { diff --git a/input/regression/beam-broken-classic.ly b/input/regression/beam-broken-classic.ly new file mode 100644 index 0000000000..92b0f00967 --- /dev/null +++ b/input/regression/beam-broken-classic.ly @@ -0,0 +1,43 @@ +\version "2.16.0" + +\header { + texidoc="Some classic examples of broken beams, all taken from +Scriabin Op. 11, No. 1. +" +} + +\paper { + ragged-right = ##t +} + +music = \relative c'' { + \override Beam #'breakable = ##t + r2. f8[ c \break + e c f,] r8 r4 a'8[ e \break + g d g,] r8 r4 f'8[ a, \break + e' g, bes] r8 r4 8 [ d, \break + d g,] r8 r4 8[ a \break + g d] r8 r2 + \clef bass + r2. d,,8[ d' \break + a'-4 d a] r8 r4 cis,,8[ cis' \break + bes' e g] r8 r4 g,,,8[ g' \break + f' b d ] r8 r2 | +} + +\markup { "\override Beam #'positions = #beam::place-broken-parts-individually (default)" } +{ \music } + +\markup { "\override Beam #'positions = #beam::align-with-broken-parts" } +\markup { \justify { Returns y-positions at the ends of the beam such that beams align-across-breaks. } } +{ + \override Beam #'positions = #beam::align-with-broken-parts + \music +} + +\markup { "\override Beam #'positions = #beam::slope-like-broken-parts" } +\markup { \justify { Approximates broken beam positioning in turn-of-the-century Editions Peters scores. } } +{ + \override Beam #'positions = #beam::slope-like-broken-parts + \music +} diff --git a/input/regression/beam-broken-difficult.ly b/input/regression/beam-broken-difficult.ly new file mode 100644 index 0000000000..4c6c8a0302 --- /dev/null +++ b/input/regression/beam-broken-difficult.ly @@ -0,0 +1,27 @@ +\version "2.16.0" + +\header { + texidoc = "The functions passed to the @code{positions} property should +handle complicated cases in the same manner that they handle more normal +cases. +" +} + +\paper { ragged-right = ##t } +{ + r2. + \override Beam #'breakable = ##t + r8[ g' \break a' r] +} +{ + r2. + \override Beam #'positions = #beam::align-with-broken-parts + \override Beam #'breakable = ##t + r8[ g' \break a' r] +} +{ + r2. + \override Beam #'positions = #beam::slope-like-broken-parts + \override Beam #'breakable = ##t + r8[ g' \break a' r] +} \ No newline at end of file diff --git a/input/regression/beam-center-slope.ly b/input/regression/beam-center-slope.ly index 1f777a09f2..efad10820a 100644 --- a/input/regression/beam-center-slope.ly +++ b/input/regression/beam-center-slope.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Simple beams on middle staffline are allowed to be diff --git a/input/regression/beam-collision-accidentals.ly b/input/regression/beam-collision-accidentals.ly index df37e003c0..296cb37c61 100644 --- a/input/regression/beam-collision-accidentals.ly +++ b/input/regression/beam-collision-accidentals.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beams only check for collisions with in-line accidentals." } @@ -9,4 +9,4 @@ \unset suggestAccidentals c'8 [ des'' ] r2 -} \ No newline at end of file +} diff --git a/input/regression/beam-collision-basic.ly b/input/regression/beam-collision-basic.ly index b235c358df..e7951e15ab 100644 --- a/input/regression/beam-collision-basic.ly +++ b/input/regression/beam-collision-basic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Manual beams do not collide with notes." } diff --git a/input/regression/beam-collision-beamcount.ly b/input/regression/beam-collision-beamcount.ly index 5ed29dee3f..3e852029b9 100644 --- a/input/regression/beam-collision-beamcount.ly +++ b/input/regression/beam-collision-beamcount.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Manual beams do not collide with notes." } diff --git a/input/regression/beam-collision-classic.ly b/input/regression/beam-collision-classic.ly index 808b52bb82..b4e717c8f7 100644 --- a/input/regression/beam-collision-classic.ly +++ b/input/regression/beam-collision-classic.ly @@ -7,7 +7,7 @@ % debug-beam-scoring = ##t } -\version "2.14.0" +\version "2.16.0" \new Staff { diff --git a/input/regression/beam-collision-cross-staff.ly b/input/regression/beam-collision-cross-staff.ly index 04c1720081..120b488c8d 100644 --- a/input/regression/beam-collision-cross-staff.ly +++ b/input/regression/beam-collision-cross-staff.ly @@ -2,7 +2,7 @@ texidoc = "cross staff beams work with collisions." } -\version "2.14.0" +\version "2.16.0" << \new Staff = "PianoRH" s4. diff --git a/input/regression/beam-collision-cross-staff2.ly b/input/regression/beam-collision-cross-staff2.ly new file mode 100644 index 0000000000..dd09c9651d --- /dev/null +++ b/input/regression/beam-collision-cross-staff2.ly @@ -0,0 +1,15 @@ +\version "2.16.0" + +\header { + texidoc = "Cross staff beams do collision avoidance. +" +} + +\new PianoStaff << + \new Staff = up \relative c' { s2 } + \new Staff \relative c' { + \clef bass \time 2/4 + g,32 [ d' \change Staff = up d' + gis a c d g ] r4 | + } +>> diff --git a/input/regression/beam-collision-feasible-region.ly b/input/regression/beam-collision-feasible-region.ly index 833155ae7e..af15178288 100644 --- a/input/regression/beam-collision-feasible-region.ly +++ b/input/regression/beam-collision-feasible-region.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A rough guess for collisions is taken into account when diff --git a/input/regression/beam-collision-flag.ly b/input/regression/beam-collision-flag.ly new file mode 100644 index 0000000000..cd52152d10 --- /dev/null +++ b/input/regression/beam-collision-flag.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\header { + texidoc = "Beams do not collide with flags. +" +} + +\relative c' << + { \voiceOne c'8 r } \\ + { \voiceThree c,8.[ c'16] } +>> diff --git a/input/regression/beam-collision-grace.ly b/input/regression/beam-collision-grace.ly index d922949f8c..441ed49865 100644 --- a/input/regression/beam-collision-grace.ly +++ b/input/regression/beam-collision-grace.ly @@ -1,6 +1,6 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " The beaming algorithm handles collisions between beams and @@ -13,4 +13,4 @@ grace notes too. \relative c'{ d16 e f \grace d'8 g,16 -} \ No newline at end of file +} diff --git a/input/regression/beam-collision-large-object.ly b/input/regression/beam-collision-large-object.ly index f2f9f0fbbd..9947a7fbe0 100644 --- a/input/regression/beam-collision-large-object.ly +++ b/input/regression/beam-collision-large-object.ly @@ -2,7 +2,7 @@ texidoc = "Behave sensibly in the presence of large collisions." } -\version "2.14.0" +\version "2.16.0" \new Staff { << { \voiceOne s2 } diff --git a/input/regression/beam-collision-off.ly b/input/regression/beam-collision-off.ly index eaa9c9c5b3..68378389dd 100644 --- a/input/regression/beam-collision-off.ly +++ b/input/regression/beam-collision-off.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beams can be allowed to collide with grobs by overriding the collision-interfaces property." diff --git a/input/regression/beam-collision-opposite-stem.ly b/input/regression/beam-collision-opposite-stem.ly index f8310c679a..58ca10839d 100644 --- a/input/regression/beam-collision-opposite-stem.ly +++ b/input/regression/beam-collision-opposite-stem.ly @@ -3,7 +3,7 @@ correctly." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/beam-collision-prefatory-matter.ly b/input/regression/beam-collision-prefatory-matter.ly index d48b803820..15cdea9bd3 100644 --- a/input/regression/beam-collision-prefatory-matter.ly +++ b/input/regression/beam-collision-prefatory-matter.ly @@ -8,7 +8,7 @@ % debug-beam-scoring = ##t } -\version "2.14.0" +\version "2.16.0" \relative { \time 2/4 diff --git a/input/regression/beam-collision-scaled-staff.ly b/input/regression/beam-collision-scaled-staff.ly index 4dbc4facca..9d01fbe79c 100644 --- a/input/regression/beam-collision-scaled-staff.ly +++ b/input/regression/beam-collision-scaled-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beam collisions are resistant to scaled down staves." } diff --git a/input/regression/beam-collision-voice-only.ly b/input/regression/beam-collision-voice-only.ly index 82b5e979c9..cf675dfc05 100644 --- a/input/regression/beam-collision-voice-only.ly +++ b/input/regression/beam-collision-voice-only.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beam collision can be tweaked to only apply to the grobs within the beam's original voice." diff --git a/input/regression/beam-concave-chord.ly b/input/regression/beam-concave-chord.ly index 5d5aa30826..f02962d901 100644 --- a/input/regression/beam-concave-chord.ly +++ b/input/regression/beam-concave-chord.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Concave beaming works for chords as well as monophonic music. @@ -35,22 +35,12 @@ nonHorizontalBeams = { % cut & paste from beam-concave.ly -#(define (<> x y) (not (= x y))) +#(define (<> x y) (not (= x y))) mustBeHorizontal = { - \override Staff.Beam #'positions = - #(ly:make-simple-closure - (ly:make-simple-closure - (append - (list chain-grob-member-functions `(,cons 0 0)) - (check-slope-callbacks =)))) + \override Staff.Beam #'positions = #(check-slope-callbacks =) } mustNotBeHorizontal = { - \override Staff.Beam #'positions = - #(ly:make-simple-closure - (ly:make-simple-closure - (append - (list chain-grob-member-functions `(,cons 0 0)) - (check-slope-callbacks <>)))) + \override Staff.Beam #'positions = #(check-slope-callbacks <>) } \new Voice { diff --git a/input/regression/beam-concave-damped.ly b/input/regression/beam-concave-damped.ly index 5af60763c2..3f58949dd5 100644 --- a/input/regression/beam-concave-damped.ly +++ b/input/regression/beam-concave-damped.ly @@ -2,7 +2,7 @@ texidoc = "Beams that are not strictly concave are damped according to their concaveness. " } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/beam-concave.ly b/input/regression/beam-concave.ly index d47a9b1cbb..6643e38cef 100644 --- a/input/regression/beam-concave.ly +++ b/input/regression/beam-concave.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Fully concave beams should be horizontal. Informally spoken, @@ -58,11 +58,7 @@ rossBeams = \relative c'' { #(define (<> x y) (not (= x y))) \new Voice { - \override Beam #'positions = #(ly:make-simple-closure - (ly:make-simple-closure - (append - (list chain-grob-member-functions `(,cons 0 0)) - (check-slope-callbacks =)))) + \override Beam #'positions = #(check-slope-callbacks =) \rossBeams } diff --git a/input/regression/beam-cross-staff-auto-knee.ly b/input/regression/beam-cross-staff-auto-knee.ly index aaa8ed933a..5326f57b79 100644 --- a/input/regression/beam-cross-staff-auto-knee.ly +++ b/input/regression/beam-cross-staff-auto-knee.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/beam-cross-staff-rest.ly b/input/regression/beam-cross-staff-rest.ly new file mode 100644 index 0000000000..c957a14eca --- /dev/null +++ b/input/regression/beam-cross-staff-rest.ly @@ -0,0 +1,19 @@ +\version "2.16.0" + +\header { + texidoc = "Placement of beamed cross staff rests should be +reasonably close to beam. +" +} + +Up = \change Staff = "up" +Down = \change Staff = "down" + +\new PianoStaff << + \new Staff = "up" + \relative c'' { + \time 6/8 a2. + c'8[ \Down c,16 \Up fis \Down r fis] \Up + } + \new Staff = "down" { s2. s4. } +>> diff --git a/input/regression/beam-cross-staff-script.ly b/input/regression/beam-cross-staff-script.ly index 357f58e8b6..78cbff5ab5 100644 --- a/input/regression/beam-cross-staff-script.ly +++ b/input/regression/beam-cross-staff-script.ly @@ -7,7 +7,7 @@ staves." } -\version "2.14.0" +\version "2.16.0" \new PianoStaff << \new Staff = RH { diff --git a/input/regression/beam-cross-staff-slope.ly b/input/regression/beam-cross-staff-slope.ly index 495d40522e..0a17141e18 100644 --- a/input/regression/beam-cross-staff-slope.ly +++ b/input/regression/beam-cross-staff-slope.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Cross staff (kneed) beams do not cause extreme slopes." } diff --git a/input/regression/beam-cross-staff.ly b/input/regression/beam-cross-staff.ly index 10f39d6888..0ae4e0dae7 100644 --- a/input/regression/beam-cross-staff.ly +++ b/input/regression/beam-cross-staff.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Beams can be typeset over fixed distance aligned staves, beam @@ -13,12 +13,12 @@ behave well, wherever the switching point is. \stemUp c8[ c \change Staff=two \stemUp c c] c[ c c c] \change Staff=one - \stemDown c8[ c \change Staff=two \stemUp c c] + \stemDown f8[ f \change Staff=two \stemUp c c] r2 \stemDown c8[ c \change Staff=one \stemDown c c] r2 \change Staff=two - \stemUp c8[ c \change Staff=one \stemDown c c] + \stemUp c8[ c \change Staff=one \stemDown f f] r2 } \new Staff = "two" \relative c'{ diff --git a/input/regression/beam-damp.ly b/input/regression/beam-damp.ly index d2b75117ae..aaf200c62c 100644 --- a/input/regression/beam-damp.ly +++ b/input/regression/beam-damp.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@cindex Beam Damp Beams are less steep than the notes they encompass. " } \layout{ diff --git a/input/regression/beam-default-lengths.ly b/input/regression/beam-default-lengths.ly index e6e3a26516..ecf69921f4 100644 --- a/input/regression/beam-default-lengths.ly +++ b/input/regression/beam-default-lengths.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beamed stems have standard lengths if possible. Quantization @@ -6,15 +6,6 @@ is switched off in this example." } \relative c' { - \override Beam #'positions = - #(ly:make-simple-closure - (ly:make-simple-closure - (list chain-grob-member-functions - `(,cons 0 0) - ly:beam::calc-least-squares-positions - ly:beam::slope-damping - ly:beam::shift-region-to-valid - ))) - + \override Beam #'skip-quanting = ##t f4 f8[ f] f16[ f] f32[ f] f64[ f] f128[ f] } diff --git a/input/regression/beam-extreme.ly b/input/regression/beam-extreme.ly index 3c8bfd14ad..2fa96cb479 100644 --- a/input/regression/beam-extreme.ly +++ b/input/regression/beam-extreme.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Beams should behave reasonably well, even under extreme circumstances. diff --git a/input/regression/beam-feather-breaking.ly b/input/regression/beam-feather-breaking.ly index 326b653aa1..b561ff0e5a 100644 --- a/input/regression/beam-feather-breaking.ly +++ b/input/regression/beam-feather-breaking.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Feathered beams should have the same progress of their feathering at the end of a line break as they do at the beginning of the next line." diff --git a/input/regression/beam-feather-knee-stem-length.ly b/input/regression/beam-feather-knee-stem-length.ly index 030497c225..6d02347132 100644 --- a/input/regression/beam-feather-knee-stem-length.ly +++ b/input/regression/beam-feather-knee-stem-length.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="In feathered beams, stems in knees reach up to the feathered part correctly. diff --git a/input/regression/beam-feather.ly b/input/regression/beam-feather.ly index 038b0a582a..b9afa45124 100644 --- a/input/regression/beam-feather.ly +++ b/input/regression/beam-feather.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/beam-flat-retain-direction.ly b/input/regression/beam-flat-retain-direction.ly index 605298b4ac..8347585477 100644 --- a/input/regression/beam-flat-retain-direction.ly +++ b/input/regression/beam-flat-retain-direction.ly @@ -3,7 +3,7 @@ texidoc = "Even very flat but slanted patterns should give slanted beams. " } -\version "2.14.0" +\version "2.16.0" \layout{ line-width = 15\cm debug-beam-scoring = ##t diff --git a/input/regression/beam-forced-direction.ly b/input/regression/beam-forced-direction.ly index 7bb8a718bb..682cf8f4d1 100644 --- a/input/regression/beam-forced-direction.ly +++ b/input/regression/beam-forced-direction.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The direction of manual beams can be forced using diff --git a/input/regression/beam-french.ly b/input/regression/beam-french.ly index 463b1f597e..7bb865f849 100644 --- a/input/regression/beam-french.ly +++ b/input/regression/beam-french.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In French style beaming, the stems do not go between beams." diff --git a/input/regression/beam-funky-beamlet.ly b/input/regression/beam-funky-beamlet.ly index f38061157d..303379b326 100644 --- a/input/regression/beam-funky-beamlet.ly +++ b/input/regression/beam-funky-beamlet.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" Funky kneed beams with beamlets also work. The beamlets diff --git a/input/regression/beam-funky.ly b/input/regression/beam-funky.ly index d576c44d4b..3d26b75d47 100644 --- a/input/regression/beam-funky.ly +++ b/input/regression/beam-funky.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In complex configurations of knee beaming, according to diff --git a/input/regression/beam-isknee.ly b/input/regression/beam-isknee.ly index 2a54620968..79d74869bc 100644 --- a/input/regression/beam-isknee.ly +++ b/input/regression/beam-isknee.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="@cindex Beam Isknee diff --git a/input/regression/beam-knee-symmetry.ly b/input/regression/beam-knee-symmetry.ly index 737f64ac84..b633ebf225 100644 --- a/input/regression/beam-knee-symmetry.ly +++ b/input/regression/beam-knee-symmetry.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Point-symmetric beams should receive the same - quanting. There is no up/down bias in the quanting code." +quanting. There is no up/@/down bias in the quanting code." } \layout{ diff --git a/input/regression/beam-length.ly b/input/regression/beam-length.ly index 289b5ad018..53685449ce 100644 --- a/input/regression/beam-length.ly +++ b/input/regression/beam-length.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/beam-manual-beaming.ly b/input/regression/beam-manual-beaming.ly index 2784d31aaa..15898c58d0 100644 --- a/input/regression/beam-manual-beaming.ly +++ b/input/regression/beam-manual-beaming.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/beam-multiple-cross-staff.ly b/input/regression/beam-multiple-cross-staff.ly index 879e0037be..7827e3d723 100644 --- a/input/regression/beam-multiple-cross-staff.ly +++ b/input/regression/beam-multiple-cross-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Kneed beams (often happens with cross-staff beams) @@ -25,7 +25,7 @@ to the last beam. g'4\rest b,8[ b16 \stemDown b''16 b ] - } + } >> diff --git a/input/regression/beam-multiplicity-over-rests.ly b/input/regression/beam-multiplicity-over-rests.ly index 56b703c297..b8a2b5d997 100644 --- a/input/regression/beam-multiplicity-over-rests.ly +++ b/input/regression/beam-multiplicity-over-rests.ly @@ -1,15 +1,15 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "When a beam goes over a rest, there should not be any -beamlets pointing towards the rest unless absolutely necessary." + texidoc = "When a beam goes over a rest, beamlets should be as necessary + to show the beat structure." } \relative c' { c8[ r16 c32 c32] c32[ r16 c32 c8] - c32[ r16 c64 c8 c64] + c32[ r16 c64 c64 ~ c16.. c64] c32[ c32 r16 c8] c16[ r32 c32 r16 c16] c16[ r16 c32 r32 c16] -} \ No newline at end of file +} diff --git a/input/regression/beam-outside-beamlets.ly b/input/regression/beam-outside-beamlets.ly index df34625fd0..4250947d15 100644 --- a/input/regression/beam-outside-beamlets.ly +++ b/input/regression/beam-outside-beamlets.ly @@ -3,7 +3,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/beam-over-barline.ly b/input/regression/beam-over-barline.ly index 893f3f8b64..12c092f830 100644 --- a/input/regression/beam-over-barline.ly +++ b/input/regression/beam-over-barline.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Explicit beams may cross barlines. " } diff --git a/input/regression/beam-position.ly b/input/regression/beam-position.ly index d55e1c391f..b0522548d5 100644 --- a/input/regression/beam-position.ly +++ b/input/regression/beam-position.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Beams on ledgered notes should always reach the middle staff diff --git a/input/regression/beam-quant-standard.ly b/input/regression/beam-quant-standard.ly index 465325b7a1..b1e959cb2b 100644 --- a/input/regression/beam-quant-standard.ly +++ b/input/regression/beam-quant-standard.ly @@ -5,8 +5,10 @@ is printed over the beam." } +%% FIXME: This file should actually NOT produce any warnings! +#(ly:set-option 'warning-as-error #f) -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t @@ -17,7 +19,7 @@ filler = \new Voice \relative c' { \hideNotes e4 e } - % +% %% %% Ross p108--112 @@ -106,7 +108,7 @@ filler = \new Voice \relative c' { e4 e4. } - % Ross, p122 +% Ross, p122 primeSixteenths = \relative c' { \stemUp \assertBeamQuant #'(0 . -1) #'(0 . -1) diff --git a/input/regression/beam-quanting-32nd.ly b/input/regression/beam-quanting-32nd.ly index a4f097e568..eec03c302d 100644 --- a/input/regression/beam-quanting-32nd.ly +++ b/input/regression/beam-quanting-32nd.ly @@ -8,7 +8,7 @@ texidoc = "Stem lengths take precedence over beam quants: `forbidden' } -\version "2.14.0" +\version "2.16.0" \relative c''{ \time 3/8 diff --git a/input/regression/beam-quanting-horizontal.ly b/input/regression/beam-quanting-horizontal.ly index e0fffda4f7..3550064738 100644 --- a/input/regression/beam-quanting-horizontal.ly +++ b/input/regression/beam-quanting-horizontal.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/beam-quanting-overhang.ly b/input/regression/beam-quanting-overhang.ly new file mode 100644 index 0000000000..3e4f149c44 --- /dev/null +++ b/input/regression/beam-quanting-overhang.ly @@ -0,0 +1,13 @@ +\version "2.16.0" + +\header { + texidoc = "Beam quanting accounts for beam overhang. +A beam ending above rests should always fall on a viable +quant (straddle, sit, inter, or hang). +" +} + +\paper { ragged-right = ##t } +{ + d'8[ c' b e' r r r r r r r r r] +} \ No newline at end of file diff --git a/input/regression/beam-quarter.ly b/input/regression/beam-quarter.ly index fb5c4359cf..5eb2b83632 100644 --- a/input/regression/beam-quarter.ly +++ b/input/regression/beam-quarter.ly @@ -1,6 +1,8 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "stem does not fit in beam")) +#(ly:expect-warning (_ "beam was started here")) \header { texidoc= "Quarter notes may be beamed: the beam is halted momentarily." diff --git a/input/regression/beam-rest-extreme.ly b/input/regression/beam-rest-extreme.ly new file mode 100644 index 0000000000..9c7d5df3b9 --- /dev/null +++ b/input/regression/beam-rest-extreme.ly @@ -0,0 +1,14 @@ +\version "2.16.0" + +\header { + texidoc = "Beamed rests are given a pure height approximation +that gets their spacing correct in the majority of circumstances. +" +} + +\relative c'' { + 16[ r ] + 16[ r ] + 16[ r ] + 16[ r ] +} diff --git a/input/regression/beam-rest.ly b/input/regression/beam-rest.ly index 6f2b7bd5b8..5598345741 100644 --- a/input/regression/beam-rest.ly +++ b/input/regression/beam-rest.ly @@ -3,7 +3,7 @@ texidoc = "The number of beams does not change on a rest." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/beam-second.ly b/input/regression/beam-second.ly index d440258c82..9af119381b 100644 --- a/input/regression/beam-second.ly +++ b/input/regression/beam-second.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/beam-shortened-lengths.ly b/input/regression/beam-shortened-lengths.ly index 28b23fea18..057e602963 100644 --- a/input/regression/beam-shortened-lengths.ly +++ b/input/regression/beam-shortened-lengths.ly @@ -1,5 +1,4 @@ - -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Beams in unnatural direction, have shortened stems, but do not look too short." @@ -8,17 +7,6 @@ \relative c'{ - \override Beam #'positions = - #(ly:make-simple-closure - (ly:make-simple-closure - (list chain-grob-member-functions - `(,cons 0 0) - ly:beam::calc-least-squares-positions - ly:beam::slope-damping - ly:beam::shift-region-to-valid - ))) - \stemUp f'4 f8[ f] f16[ f] f32[ f] f64[ f] f128[ f] } - diff --git a/input/regression/beam-single-stem.ly b/input/regression/beam-single-stem.ly index b5c6a3c9b6..6dc7e80019 100644 --- a/input/regression/beam-single-stem.ly +++ b/input/regression/beam-single-stem.ly @@ -4,7 +4,7 @@ clip-edges is switched off automatically." } -\version "2.14.0" +\version "2.16.0" \relative c' { d16[] diff --git a/input/regression/beam-skip.ly b/input/regression/beam-skip.ly index fdd47ecb64..101d9744bd 100644 --- a/input/regression/beam-skip.ly +++ b/input/regression/beam-skip.ly @@ -3,20 +3,6 @@ texidoc = "Beams over skips do not cause a segfault." } -\version "2.14.2" +\version "2.16.0" -\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}>> -} +\new Voice << { c'4 c'8 c' } { s8[ s] s[ s] } >> diff --git a/input/regression/beam-slope-stemlet.ly b/input/regression/beam-slope-stemlet.ly index 1035befb31..eeadbfd798 100644 --- a/input/regression/beam-slope-stemlet.ly +++ b/input/regression/beam-slope-stemlet.ly @@ -6,7 +6,7 @@ as invisible stems." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/beam-subdivide-tuplets.ly b/input/regression/beam-subdivide-tuplets.ly new file mode 100644 index 0000000000..93223c969d --- /dev/null +++ b/input/regression/beam-subdivide-tuplets.ly @@ -0,0 +1,20 @@ +\version "2.16.0" + +\header { + + doctitle = "Beam subdivide tuplets" + + texidoc = " +Tuplets that span more than one beat should be +subdivided if subdivideBeams is #t. In this example, +the beams should be subdivided every 1/8. +" + +} + +\relative c' { + \set tupletSpannerDuration = #(ly:make-moment 1 4) + \set baseMoment = #(ly:make-moment 1 8) + \set subdivideBeams = ##t + \times 4/6 { \repeat unfold 24 { c16 } } +} diff --git a/input/regression/beam-unconnected-beamlets.ly b/input/regression/beam-unconnected-beamlets.ly index d5e78d5e30..f90b743df3 100644 --- a/input/regression/beam-unconnected-beamlets.ly +++ b/input/regression/beam-unconnected-beamlets.ly @@ -6,7 +6,7 @@ \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { \override Stem #'max-beam-connect = #1 diff --git a/input/regression/beaming-ternary-metrum.ly b/input/regression/beaming-ternary-metrum.ly index cf9957e036..65658ac9a1 100644 --- a/input/regression/beaming-ternary-metrum.ly +++ b/input/regression/beaming-ternary-metrum.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/beaming-tuplet-regular.ly b/input/regression/beaming-tuplet-regular.ly new file mode 100644 index 0000000000..caac0a6f6d --- /dev/null +++ b/input/regression/beaming-tuplet-regular.ly @@ -0,0 +1,14 @@ +\version "2.16.0" + +\header { + + texidoc = " +Beams in a completed tuplet should be continuous. +" +} + +{ + \times 2/3 {b16 b b} b8 b8 \times 2/3 {b16 b b} + \times 1/3 {b16 b b} b8. b \times 1/3 {b16 b b} +} + diff --git a/input/regression/beaming.ly b/input/regression/beaming.ly index 32ad72a4f7..39cdfe5370 100644 --- a/input/regression/beaming.ly +++ b/input/regression/beaming.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/beamlet-point-toward-beat.ly b/input/regression/beamlet-point-toward-beat.ly new file mode 100644 index 0000000000..014e556b89 --- /dev/null +++ b/input/regression/beamlet-point-toward-beat.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\header { + texidoc = " +Beamlets can be set to point in the direction of the beat to which they +belong. The first beam avoids sticking out flags (the default); +the second beam strictly follows the beat. +" +} + + +\relative c'' { + \time 6/8 + a8. a16 a a + \set strictBeatBeaming = ##t + a8. a16 a a +} diff --git a/input/regression/beamlet-test.ly b/input/regression/beamlet-test.ly new file mode 100644 index 0000000000..d2a8667a6d --- /dev/null +++ b/input/regression/beamlet-test.ly @@ -0,0 +1,36 @@ +\version "2.16.0" + +\header { + texidoc = " +Beamlets should point away from complete beat units and toward off-beat or +broken beat units. This should work in tuplets as well as in ordinary time. +" +} + +\relative c'' { + \times 2/3 { + c8. c16 c8 + } + \times 2/3 { + c8 c16 c8. + } + \times 4/5 { + c8[ c8. c16 c8 c8] + } + \times 4/5 { + c8[ c8 c16 c8. c8] + } + \times 4/5 { + c8 c16 c8. c8 c8 + } + \times 4/5 { + c8 c8 c8. c16 c8 + } + c8.[ c16 c8 c8] + c8[ c16 c8. c8] + c8[ c8. c16 c8] + c8.[ c16 c8. c16] + \times 4/5 { c8 [ c16 c8 c16 c8 c8 ] } + \times 4/5 { a8 a32 a8 a16. a8 a8 } +} + diff --git a/input/regression/beams.ly b/input/regression/beams.ly index bf972b961e..ebb3bbf501 100644 --- a/input/regression/beams.ly +++ b/input/regression/beams.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beaming can be also given explicitly." } diff --git a/input/regression/bend-after.ly b/input/regression/bend-after.ly index fd77154b3c..b8c0dc57eb 100644 --- a/input/regression/bend-after.ly +++ b/input/regression/bend-after.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/bend-dot.ly b/input/regression/bend-dot.ly index b0d2eb6364..26ae2aff3e 100644 --- a/input/regression/bend-dot.ly +++ b/input/regression/bend-dot.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Bends avoid dots, but only if necessary." } diff --git a/input/regression/bom-mark.ly b/input/regression/bom-mark.ly new file mode 100644 index 0000000000..31f06b7ab6 --- /dev/null +++ b/input/regression/bom-mark.ly @@ -0,0 +1,12 @@ +#(ly:expect-warning (_ "stray UTF-8 BOM encountered")) +#(ly:set-option 'warning-as-error #f) + \version "2.16.0" + + +\header { + texidoc = "This input file contains a UTF-8 BOM not at the very beginning, + but on the first line after the first byte. LilyPond should gracefully + ignore this BOM as specified in RFC 3629, but print a warning." +} + +{ c } diff --git a/input/regression/book-identifier-markup.ly b/input/regression/book-identifier-markup.ly index ee6c02460e..aef1182a32 100644 --- a/input/regression/book-identifier-markup.ly +++ b/input/regression/book-identifier-markup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A @code{\\book} or @code{\\bookpart} identifier can contain diff --git a/input/regression/book-label-no-segfault.ly b/input/regression/book-label-no-segfault.ly index d011c4ecc2..786c6453f4 100644 --- a/input/regression/book-label-no-segfault.ly +++ b/input/regression/book-label-no-segfault.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/bookpart-variable.ly b/input/regression/bookpart-variable.ly index 992294c4ba..7165087055 100644 --- a/input/regression/bookpart-variable.ly +++ b/input/regression/bookpart-variable.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/bookparts.ly b/input/regression/bookparts.ly index 75ab8a54b5..52660c9312 100644 --- a/input/regression/bookparts.ly +++ b/input/regression/bookparts.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A book can be split into several parts with different paper settings, @@ -35,5 +35,5 @@ Page labels are also collected into the top-level paper." \tocItem \markup "Third part" \markup { Third part } - \markuplines \table-of-contents + \markuplist \table-of-contents } diff --git a/input/regression/break-alignment-anchor-alignment.ly b/input/regression/break-alignment-anchor-alignment.ly index 27ef71291d..5074966e5f 100644 --- a/input/regression/break-alignment-anchor-alignment.ly +++ b/input/regression/break-alignment-anchor-alignment.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "The default callback for break-align-anchor in clefs and time/key -signatures reads the break-align-anchor-aligment property to align + texidoc = "The default callback for break-align-anchor in clefs and time/@/key +signatures reads the @code{break-align-anchor-aligment} property to align the anchor to the extent of the break-aligned grob." } @@ -17,4 +17,4 @@ the anchor to the extent of the break-aligned grob." \once \override Staff.KeySignature #'break-align-anchor-alignment = #RIGHT \mark \default ces1 -} \ No newline at end of file +} diff --git a/input/regression/break-alignment-anchors.ly b/input/regression/break-alignment-anchors.ly index 3810a85f95..54554b20c2 100644 --- a/input/regression/break-alignment-anchors.ly +++ b/input/regression/break-alignment-anchors.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The break-align-anchor property of a break-aligned grob gives @@ -16,4 +16,4 @@ the horizontal offset at which other grobs should attach." \mark \default \noBreak c'1 -} \ No newline at end of file +} diff --git a/input/regression/break.ly b/input/regression/break.ly index a0017fb4f9..0b7c595339 100644 --- a/input/regression/break.ly +++ b/input/regression/break.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/breathing-sign-ancient.ly b/input/regression/breathing-sign-ancient.ly index af5f207b4f..5178c65c6d 100644 --- a/input/regression/breathing-sign-ancient.ly +++ b/input/regression/breathing-sign-ancient.ly @@ -1,12 +1,11 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Gregorian chant notation sometimes also uses commas and ticks, but in -smaller font size (we call it 'virgula' and 'caesura'). However, the -most common breathing signs are divisio minima/maior/maxima and +smaller font size (we call it `virgula' and `caesura'). However, the +most common breathing signs are divisio minima/@/maior/@/maxima and finalis, the latter three looking similar to bar glyphs. - " } \include "gregorian.ly" diff --git a/input/regression/breathing-sign-custom-staff.ly b/input/regression/breathing-sign-custom-staff.ly index 693989ceca..90022d6853 100644 --- a/input/regression/breathing-sign-custom-staff.ly +++ b/input/regression/breathing-sign-custom-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.2" +\version "2.16.0" \header { texidoc = "Breathing signs are positioned correctly on custom staves diff --git a/input/regression/breathing-sign.ly b/input/regression/breathing-sign.ly index dd425c1757..765aa9d7ec 100644 --- a/input/regression/breathing-sign.ly +++ b/input/regression/breathing-sign.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Breathing signs are available in different tastes: commas (default), diff --git a/input/regression/breve-extent.ly b/input/regression/breve-extent.ly new file mode 100644 index 0000000000..257445615d --- /dev/null +++ b/input/regression/breve-extent.ly @@ -0,0 +1,31 @@ +\version "2.16.0" + +\header { + texidoc = "LilyPond knows that breves and longas are wider than whole notes + (because of vertical lines on their sides). Breves and longas don't collide + with accidentals, barlines, neighbor notes etc. The distance between + accidental and note is the same for whole notes, breves and longas." +} + +{ + gis'1 + gis'\breve*1/2 + gis'\longa*1/4 + \override NoteHead #'style = #'altdefault + gis'\breve*1/2 +} + +\score { + \new Staff { + \repeat unfold 8 { a'\breve*1/16 } + \override NoteHead #'style = #'altdefault + \repeat unfold 8 { a'\breve*1/16 } + } + \layout { + \context { + \Score + \override SpacingSpanner + #'common-shortest-duration = #(ly:make-moment 1 1 ) + } + } +} diff --git a/input/regression/center-title.ly b/input/regression/center-title.ly index eddd3e38c4..ae636b2c4e 100644 --- a/input/regression/center-title.ly +++ b/input/regression/center-title.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/chord-additional-pitch-prefix.ly b/input/regression/chord-additional-pitch-prefix.ly new file mode 100644 index 0000000000..ac0c4d0e3e --- /dev/null +++ b/input/regression/chord-additional-pitch-prefix.ly @@ -0,0 +1,11 @@ +\version "2.16.0" +\header { + texidoc = "The prefix of additional chord pitches can be tuned with +@code{additionalPitchPrefix}." +} + +\new ChordNames { + % add9 + \set additionalPitchPrefix = #"add" + % add9 +} diff --git a/input/regression/chord-changes.ly b/input/regression/chord-changes.ly index fcc12f31d1..8e308c8a0e 100644 --- a/input/regression/chord-changes.ly +++ b/input/regression/chord-changes.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Property chordChanges: display chord names only when diff --git a/input/regression/chord-name-entry-11.ly b/input/regression/chord-name-entry-11.ly index 8a3017d4cb..968ac8855d 100644 --- a/input/regression/chord-name-entry-11.ly +++ b/input/regression/chord-name-entry-11.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/chord-name-entry.ly b/input/regression/chord-name-entry.ly index 970f7df26c..d1b37d7d2b 100644 --- a/input/regression/chord-name-entry.ly +++ b/input/regression/chord-name-entry.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/chord-name-exceptions.ly b/input/regression/chord-name-exceptions.ly index c5d1e756da..814deaaa5d 100644 --- a/input/regression/chord-name-exceptions.ly +++ b/input/regression/chord-name-exceptions.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The property @code{chordNameExceptions} can used diff --git a/input/regression/chord-name-major7.ly b/input/regression/chord-name-major7.ly index 3a6a4f82ff..285c41ce29 100644 --- a/input/regression/chord-name-major7.ly +++ b/input/regression/chord-name-major7.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The layout of the major 7 can be tuned with @code{majorSevenSymbol}." diff --git a/input/regression/chord-name-minor.ly b/input/regression/chord-name-minor.ly new file mode 100644 index 0000000000..cfaf289492 --- /dev/null +++ b/input/regression/chord-name-minor.ly @@ -0,0 +1,13 @@ +\version "2.16.0" +\header { + texidoc = "The layout of the minor chord can be tuned with +@code{minorChordModifier}." +} + +\chords { + c:min + c:min7 + \set minorChordModifier = \markup { "-" } + c:min + c:min7 +} diff --git a/input/regression/chord-names-bass.ly b/input/regression/chord-names-bass.ly index f169280673..00213bd207 100644 --- a/input/regression/chord-names-bass.ly +++ b/input/regression/chord-names-bass.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/chord-names-in-grand-staff.ly b/input/regression/chord-names-in-grand-staff.ly index 528a2f0089..f81d4fe299 100644 --- a/input/regression/chord-names-in-grand-staff.ly +++ b/input/regression/chord-names-in-grand-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/chord-names-languages.ly b/input/regression/chord-names-languages.ly index c119c83867..daa1514fa9 100644 --- a/input/regression/chord-names-languages.ly +++ b/input/regression/chord-names-languages.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@cindex Chord Names German The english naming of chords (default) can be changed to german diff --git a/input/regression/chord-names-lower-case-minor.ly b/input/regression/chord-names-lower-case-minor.ly index d4ee0e821f..0134331d35 100644 --- a/input/regression/chord-names-lower-case-minor.ly +++ b/input/regression/chord-names-lower-case-minor.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/chord-repetition-relative.ly b/input/regression/chord-repetition-relative.ly index 65e75c5e60..1732708394 100644 --- a/input/regression/chord-repetition-relative.ly +++ b/input/regression/chord-repetition-relative.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " @@ -10,4 +10,4 @@ the same octaves as the original one. { 4^"absolute" q q q \relative c' { 4^"relative" q q q } -} \ No newline at end of file +} diff --git a/input/regression/chord-repetition-script-stack.ly b/input/regression/chord-repetition-script-stack.ly index ce7208ebd2..5da80dd954 100644 --- a/input/regression/chord-repetition-script-stack.ly +++ b/input/regression/chord-repetition-script-stack.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Post events such as fingerings and scripts added to a diff --git a/input/regression/chord-repetition-times.ly b/input/regression/chord-repetition-times.ly new file mode 100644 index 0000000000..d70b80aab0 --- /dev/null +++ b/input/regression/chord-repetition-times.ly @@ -0,0 +1,15 @@ +\version "2.16.0" + + +\header { + texidoc = " +Chord repetitions are expanded late in the processing order and get +their note events only then. Check that @code{\\times} still works +correctly on them. +" +} + +\relative c' { + 4 r 2 ~ | + \times 2/3 { 4 q q } \times 2/3 { q q q } | +} diff --git a/input/regression/chord-repetition.ly b/input/regression/chord-repetition.ly index 6416bfbdd2..524a3bd4e5 100644 --- a/input/regression/chord-repetition.ly +++ b/input/regression/chord-repetition.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/chord-scripts.ly b/input/regression/chord-scripts.ly index 1bdc25dc37..74aeda9fd0 100644 --- a/input/regression/chord-scripts.ly +++ b/input/regression/chord-scripts.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Scripts can also be attached to chord elements. diff --git a/input/regression/chord-slash-separator.ly b/input/regression/chord-slash-separator.ly new file mode 100644 index 0000000000..344493ab9c --- /dev/null +++ b/input/regression/chord-slash-separator.ly @@ -0,0 +1,11 @@ +\version "2.16.0" +\header { + texidoc = "The layout of chord inversions can be tuned with +@code{slashChordSeparator}." +} + +\chords { + des/c + \set slashChordSeparator = " over " + des/c +} diff --git a/input/regression/chord-tremolo-articulations.ly b/input/regression/chord-tremolo-articulations.ly index 5d1cfbd0fc..8b84d0df38 100644 --- a/input/regression/chord-tremolo-articulations.ly +++ b/input/regression/chord-tremolo-articulations.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/chord-tremolo-other-commands.ly b/input/regression/chord-tremolo-other-commands.ly index 3096e7e6d3..f1f2521a54 100644 --- a/input/regression/chord-tremolo-other-commands.ly +++ b/input/regression/chord-tremolo-other-commands.ly @@ -1,8 +1,8 @@ -\version "2.14.2" +\version "2.16.0" \header { texidoc = " -To calculate the total duration of chord tremolos, only real notes shall be +To calculate the total duration of chord tremolos, only real notes shall be counted, no other commands. " } @@ -13,7 +13,7 @@ right = \relative c'' { left = \relative c' { % This tremolo contains just two notes (but three lilypond events/commands!) - \repeat tremolo 4 { f,16 \change Staff = "right" f'} + \repeat tremolo 4 { f,16 \change Staff = "right" f'} } \score { diff --git a/input/regression/chord-tremolo-scaled-durations.ly b/input/regression/chord-tremolo-scaled-durations.ly index 0b8c6c8ad1..1949bce928 100644 --- a/input/regression/chord-tremolo-scaled-durations.ly +++ b/input/regression/chord-tremolo-scaled-durations.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Don't allow scaled durations to confuse the tremolo beaming. @@ -8,7 +8,7 @@ The tremolos should each have 3 beams." { \time 3/4 \repeat tremolo 12 {e'32 f'} - \scaleDurations #'(3 . 4) { + \scaleDurations 3/4 { \repeat tremolo 12 {e'32 f'} r4 } } diff --git a/input/regression/chord-tremolo-short.ly b/input/regression/chord-tremolo-short.ly index 725833bfa6..578a7d31f8 100644 --- a/input/regression/chord-tremolo-short.ly +++ b/input/regression/chord-tremolo-short.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " Tremolo repeats can be constructed for short tremolos (total duration smaller than 1/4) too. Only some of the beams are connected to the stems. diff --git a/input/regression/chord-tremolo-single.ly b/input/regression/chord-tremolo-single.ly index 70505aa275..a3e33e9c82 100644 --- a/input/regression/chord-tremolo-single.ly +++ b/input/regression/chord-tremolo-single.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Chord tremolos on a single note." diff --git a/input/regression/chord-tremolo-stem-direction.ly b/input/regression/chord-tremolo-stem-direction.ly index 4101c525cc..666a2c24e1 100644 --- a/input/regression/chord-tremolo-stem-direction.ly +++ b/input/regression/chord-tremolo-stem-direction.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right = ##t } diff --git a/input/regression/chord-tremolo-whole.ly b/input/regression/chord-tremolo-whole.ly index a628a3ba3f..b298c37902 100644 --- a/input/regression/chord-tremolo-whole.ly +++ b/input/regression/chord-tremolo-whole.ly @@ -3,7 +3,7 @@ notes." } -\version "2.14.0" +\version "2.16.0" \relative c'''{ \repeat tremolo 32{ g64 a } diff --git a/input/regression/chord-tremolo.ly b/input/regression/chord-tremolo.ly index 58fdee42bf..2e14abdc19 100644 --- a/input/regression/chord-tremolo.ly +++ b/input/regression/chord-tremolo.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/chordnames-nochord.ly b/input/regression/chordnames-nochord.ly index 50a3c3090b..ad7fed9dfa 100644 --- a/input/regression/chordnames-nochord.ly +++ b/input/regression/chordnames-nochord.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Rests in music passed to ChordNames context display noChordSymbol. diff --git a/input/regression/chords-funky-ignatzek.ly b/input/regression/chords-funky-ignatzek.ly index 64949c23af..b450dfcb7e 100644 --- a/input/regression/chords-funky-ignatzek.ly +++ b/input/regression/chords-funky-ignatzek.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -13,9 +13,15 @@ chs = 1 1 1 +1 +1 +1 +1 1 1 1 +1 +1 } diff --git a/input/regression/chromatic-scales.ly b/input/regression/chromatic-scales.ly index f90a01f1a3..9e30bbd0d8 100644 --- a/input/regression/chromatic-scales.ly +++ b/input/regression/chromatic-scales.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="@code{staffLineLayoutFunction} is used to change the position of the notes. This sets @code{staffLineLayoutFunction} to @code{ly:pitch-semitones} to diff --git a/input/regression/clef-oct-visibility.ly b/input/regression/clef-oct-visibility.ly index 9838112f23..20b9622fa8 100644 --- a/input/regression/clef-oct-visibility.ly +++ b/input/regression/clef-oct-visibility.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/clef-oct.ly b/input/regression/clef-oct.ly index 0e67e283d0..f34eae1228 100644 --- a/input/regression/clef-oct.ly +++ b/input/regression/clef-oct.ly @@ -1,5 +1,5 @@ -\version "2.14.0" \header { +\version "2.16.0" \header { texidoc = "Octavation signs may be added to clefs. These octavation signs may be placed below or above (meaning an octave diff --git a/input/regression/clef-octavation.ly b/input/regression/clef-octavation.ly index 0397cb70f9..c89a547979 100644 --- a/input/regression/clef-octavation.ly +++ b/input/regression/clef-octavation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/clef-ottava.ly b/input/regression/clef-ottava.ly index 2e932ec6aa..6ed391c542 100644 --- a/input/regression/clef-ottava.ly +++ b/input/regression/clef-ottava.ly @@ -5,7 +5,7 @@ but they don't confuse one another." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t} diff --git a/input/regression/clef-warn.ly b/input/regression/clef-warn.ly index 425f4a4fa5..7814e75725 100644 --- a/input/regression/clef-warn.ly +++ b/input/regression/clef-warn.ly @@ -1,6 +1,9 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "unknown clef type `~a'") "foo") +% We don't need to match the whole list of clefs, the beginning will suffice +#(ly:expect-warning (_ "supported clefs: ~a") "C F G G2") \header { texidoc = "Unknown clef name warning displays available clefs" diff --git a/input/regression/clefs.ly b/input/regression/clefs.ly index 09bd1c18b4..b51fcfdd8c 100644 --- a/input/regression/clefs.ly +++ b/input/regression/clefs.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/clip-systems.ly b/input/regression/clip-systems.ly index 3533514972..24cb829c42 100644 --- a/input/regression/clip-systems.ly +++ b/input/regression/clip-systems.ly @@ -9,7 +9,7 @@ Notes: @item Regions can span multiple systems. In this case, multiple EPS files are generated. @end itemize -This file needs to be run separately with @code{-dclip-systems}; the +This file needs to be run separately with @option{-dclip-systems}; the collated-files.html of the regression test does not adequately show the results. @@ -19,7 +19,7 @@ The result will be files named } -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'clip-systems) #(define output-suffix "1") diff --git a/input/regression/cluster-break.ly b/input/regression/cluster-break.ly index fa8c46056c..d40b04aea5 100644 --- a/input/regression/cluster-break.ly +++ b/input/regression/cluster-break.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clusters behave well across line breaks." } diff --git a/input/regression/cluster-cross-staff.ly b/input/regression/cluster-cross-staff.ly index f1864d1938..4021a56cab 100644 --- a/input/regression/cluster-cross-staff.ly +++ b/input/regression/cluster-cross-staff.ly @@ -7,7 +7,7 @@ ragged-right= ##t } -\version "2.14.0" +\version "2.16.0" \new PianoStaff << \new Staff = "up" { diff --git a/input/regression/cluster-single-note.ly b/input/regression/cluster-single-note.ly index e148f1ad09..5079758aa0 100644 --- a/input/regression/cluster-single-note.ly +++ b/input/regression/cluster-single-note.ly @@ -4,5 +4,5 @@ } -\version "2.14.0" +\version "2.16.0" \relative c' { \makeClusters } diff --git a/input/regression/cluster-style.ly b/input/regression/cluster-style.ly index dbacc46785..db3ad23783 100644 --- a/input/regression/cluster-style.ly +++ b/input/regression/cluster-style.ly @@ -1,6 +1,6 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clusters behave well across line breaks." } diff --git a/input/regression/cluster.ly b/input/regression/cluster.ly index fb214fcc52..6001ed583d 100644 --- a/input/regression/cluster.ly +++ b/input/regression/cluster.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clusters are a device to denote that a complete range of notes is to be played." diff --git a/input/regression/collision-2.ly b/input/regression/collision-2.ly index 5219ae9092..e25a35cd04 100644 --- a/input/regression/collision-2.ly +++ b/input/regression/collision-2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Single head notes may collide. " } diff --git a/input/regression/collision-alignment.ly b/input/regression/collision-alignment.ly index 510c5b5e80..b16b029898 100644 --- a/input/regression/collision-alignment.ly +++ b/input/regression/collision-alignment.ly @@ -7,7 +7,7 @@ \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative << \new Staff { diff --git a/input/regression/collision-dots-invert.ly b/input/regression/collision-dots-invert.ly index 61231bb136..7993cc9436 100644 --- a/input/regression/collision-dots-invert.ly +++ b/input/regression/collision-dots-invert.ly @@ -6,7 +6,7 @@ } \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { <<
2\\ { 4 4 } >> << { 2 } \\ { 4. 8 } >> diff --git a/input/regression/collision-dots-move.ly b/input/regression/collision-dots-move.ly index d04b0f7c9b..801e404063 100644 --- a/input/regression/collision-dots-move.ly +++ b/input/regression/collision-dots-move.ly @@ -1,7 +1,7 @@ -\version "2.14.0" +\version "2.16.0" \header { - - texidoc = "If dotted note heads must remain on the left side, + + texidoc = "If dotted note heads must remain on the left side, collision resolution moves the dots to the right." } @@ -9,7 +9,15 @@ collision resolution moves the dots to the right." \layout { ragged-right = ##t } \relative c { - \key d \minor \clef bass - << 4 \\ { g'8. bes16} >> + \override Staff.NoteCollision #'prefer-dotted-right = ##t + << 4 ^"prefer-dotted-right = #t" \\ { c8. d16 } >> + << 4 \\ { d8. d16 } >> + << 4 \\ { f'8. d16 } >> + << 4 \\ { g'8. d16 } >> + \override Staff.NoteCollision #'prefer-dotted-right = ##f + << 4 ^"prefer-dotted-right = #f" \\ { c8. d16 } >> + << 4 \\ { d8. d16 } >> + << 4 \\ { f'8. d16 } >> + << 4 \\ { g'8. d16 } >> } diff --git a/input/regression/collision-dots-up-space-dotted.ly b/input/regression/collision-dots-up-space-dotted.ly index 2e1e067e2b..229b12ca99 100644 --- a/input/regression/collision-dots-up-space-dotted.ly +++ b/input/regression/collision-dots-up-space-dotted.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right=##t } diff --git a/input/regression/collision-dots.ly b/input/regression/collision-dots.ly index 5de4559757..b0e8e1487a 100644 --- a/input/regression/collision-dots.ly +++ b/input/regression/collision-dots.ly @@ -2,7 +2,7 @@ on the right side." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right= ##t } % todo: b2 (up) + b8 down looks strange compared to c2up + b8. (down) diff --git a/input/regression/collision-harmonic-no-dots.ly b/input/regression/collision-harmonic-no-dots.ly index 98bd6521a0..cd5669ff03 100644 --- a/input/regression/collision-harmonic-no-dots.ly +++ b/input/regression/collision-harmonic-no-dots.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Collision resolution involving dotted harmonic heads diff --git a/input/regression/collision-head-chords.ly b/input/regression/collision-head-chords.ly index 86ef4053ad..2d52f34bff 100644 --- a/input/regression/collision-head-chords.ly +++ b/input/regression/collision-head-chords.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Note heads in collisions should be merged if they have the same positions in the extreme note heads. diff --git a/input/regression/collision-head-solfa-fa.ly b/input/regression/collision-head-solfa-fa.ly index 0bd7091385..ecc8d3688c 100644 --- a/input/regression/collision-head-solfa-fa.ly +++ b/input/regression/collision-head-solfa-fa.ly @@ -4,7 +4,7 @@ block-shaped note." } -\version "2.14.0" +\version "2.16.0" { \key c \major diff --git a/input/regression/collision-heads.ly b/input/regression/collision-heads.ly index 1a0a9fba83..ce5c56e04f 100644 --- a/input/regression/collision-heads.ly +++ b/input/regression/collision-heads.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Open and black note heads are not merged by default." diff --git a/input/regression/collision-manual.ly b/input/regression/collision-manual.ly index e8ce7b8124..da7b9b8577 100644 --- a/input/regression/collision-manual.ly +++ b/input/regression/collision-manual.ly @@ -2,7 +2,7 @@ texidoc = "Collision resolution may be forced manually with @code{force-hshift}. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/collision-merge-differently-dotted.ly b/input/regression/collision-merge-differently-dotted.ly index 9b9fd6c007..6ecddba53e 100644 --- a/input/regression/collision-merge-differently-dotted.ly +++ b/input/regression/collision-merge-differently-dotted.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If @code{NoteCollision} has diff --git a/input/regression/collision-merge-differently-headed.ly b/input/regression/collision-merge-differently-headed.ly index 67c131013c..b9300b2e06 100644 --- a/input/regression/collision-merge-differently-headed.ly +++ b/input/regression/collision-merge-differently-headed.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/collision-merge-dots.ly b/input/regression/collision-merge-dots.ly index a39df3d38c..df0a0e0f84 100644 --- a/input/regression/collision-merge-dots.ly +++ b/input/regression/collision-merge-dots.ly @@ -4,7 +4,7 @@ } \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" { \relative c'' \new Staff { diff --git a/input/regression/collision-mesh.ly b/input/regression/collision-mesh.ly index e4e7db8d4d..5d78498388 100644 --- a/input/regression/collision-mesh.ly +++ b/input/regression/collision-mesh.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Oppositely stemmed chords, meshing into each other, are resolved." diff --git a/input/regression/collision-seconds.ly b/input/regression/collision-seconds.ly index 70b0e052e0..f1b2134a51 100644 --- a/input/regression/collision-seconds.ly +++ b/input/regression/collision-seconds.ly @@ -1,10 +1,16 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Seconds do not confuse the collision algorithm too much. The best -way to format this would be to merge the two Ds, but we will be happy for now -if the upstem D does not collide with the downstem C." + texidoc = "Seconds do not confuse the collision algorithm. +The first pair of chords in each measure should merge, mesh, +or come relatively close, but the second in each measure needs +more space to make clear which notes belong to which voice." } - -<< d' \\ >> +\relative f << { + 2 + \bar "||" +} \\ { + + +} >> diff --git a/input/regression/collision-whole.ly b/input/regression/collision-whole.ly index f6987eca60..d34f227a88 100644 --- a/input/regression/collision-whole.ly +++ b/input/regression/collision-whole.ly @@ -1,14 +1,16 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Mixed collisions with whole notes require asymmetric shifts." + texidoc = "Mixed collisions with whole and longer notes + require asymmetric shifts." } \layout{ragged-right=##t} \relative c'' { + \override Score.NoteHead #'style = #'altdefault << - { c1 c2 s2 c1 c4 s2. } + { c1 c2*2 c1 c4*4 c1 c\breve*1/2 c\breve*1/2 b\breve*1/2 } \\ - { c2 s2 c1 c4 s2. c1 } + { c2*2 c1 c4*4 c1 c\breve*1/2 c1 b\breve*1/2 c\breve*1/2 } >> } diff --git a/input/regression/collisions.ly b/input/regression/collisions.ly index 9ba5c5bf25..c94254378b 100644 --- a/input/regression/collisions.ly +++ b/input/regression/collisions.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" In addition to normal collision rules, there is support for polyphony, diff --git a/input/regression/color.ly b/input/regression/color.ly index 8403fddfe1..37ad6ee8b6 100644 --- a/input/regression/color.ly +++ b/input/regression/color.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Each grob can have a color assigned to it. @@ -21,5 +21,6 @@ Use the @code{\\override} and @code{\\revert} expressions to set the b \override NoteHead #'color = #green \override Stem #'color = #blue + \override Flag #'color = #magenta e8 es d dis e4 r } diff --git a/input/regression/completion-heads-factor.ly b/input/regression/completion-heads-factor.ly index a36da3accd..79510e1484 100644 --- a/input/regression/completion-heads-factor.ly +++ b/input/regression/completion-heads-factor.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" @@ -9,8 +9,6 @@ notes with a duration factor still keep their requested appearance. " } -#(set-paper-size "a6") - \layout { ragged-right= ##t } diff --git a/input/regression/completion-heads-lyrics.ly b/input/regression/completion-heads-lyrics.ly index 71d243d801..4dd7d26d3f 100644 --- a/input/regression/completion-heads-lyrics.ly +++ b/input/regression/completion-heads-lyrics.ly @@ -1,7 +1,7 @@ \header { texidoc = "You can put lyrics under completion heads." } -\version "2.14.0" +\version "2.16.0" mel = \relative c'' { c1. c1. diff --git a/input/regression/completion-heads-multiple-ties.ly b/input/regression/completion-heads-multiple-ties.ly index 6d6066fc5a..52f7fb1f2d 100644 --- a/input/regression/completion-heads-multiple-ties.ly +++ b/input/regression/completion-heads-multiple-ties.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/completion-heads-polyphony-2.ly b/input/regression/completion-heads-polyphony-2.ly index d6104c3fef..e9c668e457 100644 --- a/input/regression/completion-heads-polyphony-2.ly +++ b/input/regression/completion-heads-polyphony-2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/completion-heads-polyphony.ly b/input/regression/completion-heads-polyphony.ly index e0eb1d52c5..e8873c6881 100644 --- a/input/regression/completion-heads-polyphony.ly +++ b/input/regression/completion-heads-polyphony.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Completion heads are broken across bar lines. This was diff --git a/input/regression/completion-heads-tie.ly b/input/regression/completion-heads-tie.ly index 6dffca3f8e..469305b29c 100644 --- a/input/regression/completion-heads-tie.ly +++ b/input/regression/completion-heads-tie.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right=##t } diff --git a/input/regression/completion-heads-tuplets.ly b/input/regression/completion-heads-tuplets.ly index 03893a50db..305f58a128 100644 --- a/input/regression/completion-heads-tuplets.ly +++ b/input/regression/completion-heads-tuplets.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/completion-heads-unit.ly b/input/regression/completion-heads-unit.ly new file mode 100644 index 0000000000..f88ab32ef9 --- /dev/null +++ b/input/regression/completion-heads-unit.ly @@ -0,0 +1,26 @@ +\version "2.16.0" + +\header { +texidoc = " +Note head completion may be broken into sub-bar units by setting the +@code{completionUnit} property. +" +} + +\layout { + \context { + \Voice + \remove "Note_heads_engraver" + \consists "Completion_heads_engraver" + } +} + +\context Staff \relative f { + \time 9/8 + \set completionUnit = #(ly:make-moment 3 8) + g'1.. g2 + \time 6/4 + \set completionUnit = #(ly:make-moment 1 4) + \set tupletSpannerDuration = #(ly:make-moment 1 4) + \times 2/3 { e4 c8 f g a4 b8 c4 b8 a4 g8 a e f4 } +} diff --git a/input/regression/completion-heads.ly b/input/regression/completion-heads.ly index 31f644f75e..ac7753e244 100644 --- a/input/regression/completion-heads.ly +++ b/input/regression/completion-heads.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/completion-rest.ly b/input/regression/completion-rest.ly index 63aa5b37e0..e39e17aff8 100644 --- a/input/regression/completion-rest.ly +++ b/input/regression/completion-rest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" @@ -9,8 +9,6 @@ rests with a duration factor still keep their requested appearance. " } -#(set-paper-size "a6") - \layout { ragged-right= ##t } diff --git a/input/regression/complex-once.ly b/input/regression/complex-once.ly new file mode 100644 index 0000000000..400c350604 --- /dev/null +++ b/input/regression/complex-once.ly @@ -0,0 +1,10 @@ +\version "2.16.0" + +\header{ + texidoc= "This tests @code{\once} applied to multiple property operations." +} + +\relative c' { + c4 d \hideNotes e4 f | + \unHideNotes g a \once \hideNotes b c | +} diff --git a/input/regression/compound-time-signatures.ly b/input/regression/compound-time-signatures.ly index 37a54cc4bc..0fb7730f4d 100644 --- a/input/regression/compound-time-signatures.ly +++ b/input/regression/compound-time-signatures.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Create compound time signatures. The argument is a Scheme list diff --git a/input/regression/context-die-staff.ly b/input/regression/context-die-staff.ly index 596784050f..81ccc43c72 100644 --- a/input/regression/context-die-staff.ly +++ b/input/regression/context-die-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "a staff should die if there is reference to it." diff --git a/input/regression/context-mod-context.ly b/input/regression/context-mod-context.ly index 02e98e43ea..81241dc982 100644 --- a/input/regression/context-mod-context.ly +++ b/input/regression/context-mod-context.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Context modifications can be stored into a variable as a diff --git a/input/regression/context-mod-with.ly b/input/regression/context-mod-with.ly index 68ae7af707..abc8baec71 100644 --- a/input/regression/context-mod-with.ly +++ b/input/regression/context-mod-with.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Context modifications can be stored into a variable as a diff --git a/input/regression/context-nested-staffgroup.ly b/input/regression/context-nested-staffgroup.ly index 387ef2a55c..59aa604eed 100644 --- a/input/regression/context-nested-staffgroup.ly +++ b/input/regression/context-nested-staffgroup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Contexts of the same type can be nested." } diff --git a/input/regression/context-string-tuning.ly b/input/regression/context-string-tuning.ly new file mode 100644 index 0000000000..5ff69ea966 --- /dev/null +++ b/input/regression/context-string-tuning.ly @@ -0,0 +1,25 @@ +\version "2.16.0" + +\header { + texidoc=" +Using \contextStringTuning does not break compiling. +" +} + +mynotes = { + c'4 e' g' c'' | + e''4 g'' b'' c''' +} + +<< + \new Staff { + \clef treble + \mynotes + } + \new TabStaff { + #(define custom-tuning #{ \stringTuning #}) + \set Staff.stringTunings = #custom-tuning + \mynotes + } +>> + diff --git a/input/regression/cross-staff-stems.ly b/input/regression/cross-staff-stems.ly new file mode 100644 index 0000000000..5db11f726d --- /dev/null +++ b/input/regression/cross-staff-stems.ly @@ -0,0 +1,30 @@ +\version "2.16.0" + +\header { + + texidoc = "Test for cross-staff stems. The test produces a +piano staff with cross-staff connected crochet, semi-quaver, +dotted quaver (beamed with the semi-quaver) and finally a quaver. +All stems should connect, showing correct spacing and +stem length. The lower connected notes should have no flags." } + +\layout { + \context { + \PianoStaff + \consists #Span_stem_engraver + } +} + +{ + \new PianoStaff << + \new Staff { + 4 r d'16\> e'8. g8 r\! + } + \new Staff { + \clef bass + \voiceOne + \autoBeamOff + \crossStaff { 4 e, g16 a8. c8} d + } + >> +} diff --git a/input/regression/cue-clef-after-barline.ly b/input/regression/cue-clef-after-barline.ly new file mode 100644 index 0000000000..d514fc1873 --- /dev/null +++ b/input/regression/cue-clef-after-barline.ly @@ -0,0 +1,38 @@ +\version "2.16.0" + +instrument = \relative c' { + \repeat unfold 40 { c8 } +} +\addQuote "instrQuote" \instrument + +Solo = \relative c' { + c2 c | + + % Change the break-align-orders of the score so that cue-clef comes after bar-line + \override Score.BarLine #'space-alist #'cue-clef = #'(minimum-space . 1.0) + \override Score.BreakAlignment #'break-align-orders = + ##(( ;; end-of-line: + left-edge cue-end-clef ambitus breathing-sign clef staff-bar + key-cancellation key-signature time-signature cue-clef custos) + ( ;; unbroken + left-edge cue-end-clef ambitus breathing-sign clef staff-bar + key-cancellation key-signature time-signature cue-clef custos) + ( ;; begin of line + left-edge ambitus breathing-sign clef key-cancellation + key-signature staff-bar time-signature cue-clef custos)) + + \cueDuringWithClef #"instrQuote" #UP #"bass" { R1 } + c2 c2 | + + % Revert back to default + \revert Score.BarLine #'(space-alist cue-clef) + \revert Score.BreakAlignment #'break-align-orders + \cueDuringWithClef #"instrQuote" #UP #"bass" { R1 } + c2 c2 | +} + +\score { + << + \new Staff \Solo + >> +} diff --git a/input/regression/cue-clef-begin-of-score.ly b/input/regression/cue-clef-begin-of-score.ly index 012130c2b0..0f9c8de1d6 100644 --- a/input/regression/cue-clef-begin-of-score.ly +++ b/input/regression/cue-clef-begin-of-score.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clefs for cue notes at the start of a score should print the -standard clef plus a small cue clef after the time/key signature." +standard clef plus a small cue clef after the time/@/key signature." } vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 } diff --git a/input/regression/cue-clef-keysignature.ly b/input/regression/cue-clef-keysignature.ly index 6824e64de9..8e70bf18a8 100644 --- a/input/regression/cue-clef-keysignature.ly +++ b/input/regression/cue-clef-keysignature.ly @@ -1,4 +1,4 @@ -\version "2.14.2" +\version "2.16.0" \header { texidoc = "Clefs for cue notes should not influence the printed key signature." diff --git a/input/regression/cue-clef-manually.ly b/input/regression/cue-clef-manually.ly new file mode 100644 index 0000000000..fcd94201f3 --- /dev/null +++ b/input/regression/cue-clef-manually.ly @@ -0,0 +1,24 @@ +\version "2.16.0" + +Solo = \relative c' { + c4 c c c | + + % Manually written cue notes, not quoted from another lilypond voice: + << + { \voiceTwo R1 \oneVoice } + \new CueVoice + { + \cueClef "bass" + \voiceOne + c4 c c c | + \cueClefUnset + } + >> + c4 c c c | +} + +\score { + << + \new Staff \Solo + >> +} diff --git a/input/regression/cue-clef-new-line.ly b/input/regression/cue-clef-new-line.ly index bfe5e504d2..e9b3e64f08 100644 --- a/input/regression/cue-clef-new-line.ly +++ b/input/regression/cue-clef-new-line.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clefs for cue notes and line breaks. If the cue notes start in a @@ -7,7 +7,7 @@ Similarly, an end clef for cue notes ending at a line break should only be printed at the end of the line. Cue notes going over a line break should print the standard clef on the new -line plus an additional cue clef after the time/key signature." +line plus an additional cue clef after the time/@/key signature." } vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 } diff --git a/input/regression/cue-clef-octavation.ly b/input/regression/cue-clef-octavation.ly index ceb0d54211..73e3302572 100644 --- a/input/regression/cue-clef-octavation.ly +++ b/input/regression/cue-clef-octavation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Octavation for clefs for cue notes." diff --git a/input/regression/cue-clef.ly b/input/regression/cue-clef.ly index 1b5ee627d4..1cf19a2b8c 100644 --- a/input/regression/cue-clef.ly +++ b/input/regression/cue-clef.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clefs for cue notes: Print a cue clef at the begin of the cue -notes and a cancelling clef after the cue notes." +notes and a canceling clef after the cue notes." } vI = \relative c'' { \clef "treble" \repeat unfold 16 g4 } diff --git a/input/regression/custos.ly b/input/regression/custos.ly index 258da68716..620944993f 100644 --- a/input/regression/custos.ly +++ b/input/regression/custos.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Custodes may be engraved in various styles." } diff --git a/input/regression/dead-notes.ly b/input/regression/dead-notes.ly index 6abd144911..62e94fdb8e 100644 --- a/input/regression/dead-notes.ly +++ b/input/regression/dead-notes.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Muted notes (also called dead notes) are supported within normal staves and tablature." diff --git a/input/regression/define-event-function.ly b/input/regression/define-event-function.ly new file mode 100644 index 0000000000..ce88d94fef --- /dev/null +++ b/input/regression/define-event-function.ly @@ -0,0 +1,22 @@ +\version "2.16.0" + +\header{ + + texidoc= "Tests @code{define-event-function} by creating a trivial +function converting a markup into a dynamic script post-event. As +opposed to music functions, a direction indicator is not required." + +} + +\layout { ragged-right = ##t } + +dynScript = +#(define-event-function (parser location text) (markup?) + (make-dynamic-script text)) + +\relative c' { + c1\dynScript pp + c^\dynScript "fp" + c_\dynScript "spz" +} + diff --git a/input/regression/display-lily-tests.ly b/input/regression/display-lily-tests.ly index c156234cb8..64075f0fde 100644 --- a/input/regression/display-lily-tests.ly +++ b/input/regression/display-lily-tests.ly @@ -1,4 +1,4 @@ -\version "2.14.2" +\version "2.16.0" #(use-modules (srfi srfi-13) (ice-9 format)) @@ -17,9 +17,7 @@ (display c out)))))) `(let* ((parser-clone (ly:parser-clone parser)) (input-str (string-trim-both ,lily-string)) - (music (car (ly:music-property (parse-string-result input-str - parser-clone) - 'elements))) + (music (ly:parse-string-expression parser-clone input-str)) (result-str (string-trim-both (music->lily-string music parser-clone)))) (cons input-str result-str)))) @@ -28,224 +26,226 @@ #(define (lily-string->markup str) (make-column-markup (string-split str #\NewLine))) -#(define test-function - (let ((test-number 0)) - (lambda (parser location result-info strings) - (let ((input (car strings)) - (output (cdr strings))) - (set! test-number (1+ test-number)) - (if (not (equal? input output)) - (ly:progress "Test ~a unequal: ~a. \nin = ~a\nout = ~a\n" - test-number - (if result-info - result-info "BUG") - input output)) - (make-music 'SequentialMusic 'void #t))))) - test = -#(define-music-function (parser location result-info strings) (string? pair?) - (test-function parser location result-info strings)) +#(define-void-function (parser location harmless strings) + ((string?) pair?) + (let ((input (car strings)) + (output (cdr strings)) + (result-info (or harmless "BUG"))) + (if (not (equal? input output)) + (if harmless + (ly:progress "Test unequal: ~a.\nin = ~a\nout = ~a\n" + harmless input output) + (ly:input-warning location "Test unequal: BUG.\nin = ~a\nout = ~a\n" + input output))))) %%% %%% Tests %%% \header { texidoc = "This is a test of the display-lily-music unit. Problems are reported on the -stderr of this run." +stderr of this run." } %% Sequential music -\test "" ##[ { { a b } { c d } } #] % SequentialMusic -\test "" ##[ << { a b } { c d } >> #] % SimultaneousMusic -\test "" ##[ << { a b } \\ { c d } >> #] % VoiceSeparator +\test ##[ { { a b } { c d } } #] % SequentialMusic +\test ##[ << { a b } { c d } >> #] % SimultaneousMusic +\test ##[ << { a b } \\ { c d } >> #] % VoiceSeparator %% Chords and Notes -\test "" ##[ { ceses ces c cis cisis } #] % NoteEvent -\test "" ##[ { deses des d dis disis } #] -\test "" ##[ { eeses ees e eis eisis } #] -\test "" ##[ { feses fes f fis fisis } #] -\test "" ##[ { geses ges g gis gisis } #] -\test "" ##[ { aeses aes a ais aisis } #] -\test "" ##[ { beses bes b bis bisis } #] -\test "" ##[ { c,, d' } #] -\test "" ##[ { c' d'=' } #] -\test "" ##[ { c! c? } #] -\test "" ##[ r1.*4/3 #] % RestEvent -\test "" ##[ c1\rest #] % RestEvent -\test "" ##[ s2..*3/4 #] % SkipEvent -\test "" ##[ R1.*2/3 #] % MultiMeasureRestMusicGroup, MultiMeasureRestEvent -\test "" ##[ \skip 2.*3/4 #] % SkipMusic -\test "" ##[ < c\1 e\3 >4.*3/4-. #] % EventChord, NoteEvent, StringNumberEvent, ArticulationEvent -\test "" ##[ < c-1\4 >8 #] -\test "NOT A BUG" ##[ { < c e g c' > q8-. } #] % RepeatedChord +\test ##[ { ceses ces c cis cisis } #] % NoteEvent +\test ##[ { deses des d dis disis } #] +\test ##[ { eeses ees e eis eisis } #] +\test ##[ { feses fes f fis fisis } #] +\test ##[ { geses ges g gis gisis } #] +\test ##[ { aeses aes a ais aisis } #] +\test ##[ { beses bes b bis bisis } #] +\test ##[ { c,, d' } #] +\test ##[ { c' d'=' } #] +\test ##[ { c! c? } #] +\test ##[ r1.*4/3 #] % RestEvent +\test ##[ c1\rest #] % RestEvent +\test ##[ s2..*3/4 #] % SkipEvent +\test ##[ R1.*2/3 #] % MultiMeasureRestMusicGroup, MultiMeasureRestEvent +\test ##[ \skip 2.*3/4 #] % SkipMusic +\test ##[ < c\1 e\3 >4.*3/4-. #] % EventChord, NoteEvent, StringNumberEvent, ArticulationEvent +\test ##[ < c-1\4 >8 #] +\test ##[ { < c e g c' >4 q8-. } #] % RepeatedChord %% tags -\test "" ##[ { \tag #'foo { c4 d } } #] -\test "" ##[ c-\tag #'foo -\tag #'baz -^ -. #] +\test ##[ { \tag #'foo { c4 d } } #] +\test ##[ c-\tag #'foo -\tag #'baz -^-. #] %% Graces -\test "" ##[ { \grace c8 d2 } #] % GraceMusic -\test "" ##[ { \appoggiatura c8 d2 } #] -\test "" ##[ { \acciaccatura c8 d2 } #] -\test "" ##[ { c1 \afterGrace { b,16 c } d2 } #] +\test ##[ { \grace c8 d2 } #] % GraceMusic +\test ##[ { \appoggiatura c8 d2 } #] +\test ##[ { \acciaccatura c8 d2 } #] +\test ##[ { c1 \afterGrace { b,16 c } d2 } #] %% Clusters -\test "" ##[ { \makeClusters { c4 g } } #] % ClusterNoteEvent +\test ##[ { \makeClusters { c4 g } } #] % ClusterNoteEvent %% Figured bass -\test "" ##[ \figures { < 6 > } #] % BassFigureEvent -\test "" ##[ \figuremode { < 1-- 3- > < 2+ 4++ > < _! 7! > } #] -\test "" ##[ \figuremode { < [6 > < 5] > } #] +\test ##[ \figures { < 6 > } #] % BassFigureEvent +\test ##[ \figuremode { < 1-- 3- > < 2+ 4++ > < _! 7! > } #] +\test ##[ \figuremode { < [6 > < 5] > } #] %% Lyrics -\test "" ##[ \lyrics { a b } #] -\test "" ##[ \lyricmode { a -- b } #] % HyphenEvent -\test "" ##[ \lyricmode { a __ b } #] % ExtenderEvent -\test "" ##[ \lyricmode { "a " } #] % LyricEvent -\test "" ##[ \lyricsto "foo" { bla bla } #] % LyricCombineMusic -\test "" ##[ { { c d } +\test ##[ \lyrics { a b } #] +\test ##[ \lyricmode { a -- b } #] % HyphenEvent +\test ##[ \lyricmode { a __ b } #] % ExtenderEvent +\test ##[ \lyricmode { "a " } #] % LyricEvent +\test ##[ \lyricsto "foo" { bla bla } #] % LyricCombineMusic +\test ##[ { { c d } \addlyrics { bla bla } } #] %% Drums -\test "" ##[ \drums { hihat } #] -\test "" ##[ \drummode { hihat4.*3/4 } #] +\test ##[ \drums { hihat } #] +\test ##[ \drummode { hihat4.*3/4 } #] %% Expressive marks -\test "" ##[ c4 ~ #] % TieEvent -\test "" ##[ c\noBeam #] % BeamForbidEvent -\test "" ##[ c\1 #] % StringNumberEvent -\test "" ##[ { c: c:1 } #] % TremoloEvent -\test "" ##[ { c-^ c^^ c_^ } #] % ArticulationEvent -\test "" ##[ { c-+ c^+ c_+ } #] -\test "" ##[ { c-- c^- c_- } #] -\test "" ##[ { c-| c^| c_| } #] -\test "" ##[ { c-> c^> c_> } #] -\test "" ##[ { c-. c^. c_. } #] -\test "" ##[ { c-_ c^_ c__ } #] -\test "" ##[ { c-\trill c^\trill c_\trill } #] -\test "" ##[ { c-1 c^2 c_3 } #] % FingerEvent -\test "" ##[ { c-"foo" c^"foo" c_"foo" } #] % TextScriptEvent -\test "" ##[ { R1*4-"foo" R^"foo" R_"foo" } #] % MultiMeasureTextEvent -\test "" ##[ { < c\harmonic >4 < c e\harmonic > } #] % HarmonicEvent -\test "" ##[ { c-\glissando c^\glissando c_\glissando } #] % GlissandoEvent -\test "" ##[ { c-\arpeggio c^\arpeggio c_\arpeggio } #] % ArpeggioEvent -\test "" ##[ { c\p c^\ff c_\sfz } #] % AbsoluteDynamicEvent -\test "" ##[ { c[ c] c^[ c^] c_[ c_] } #] % BeamEvent -\test "" ##[ { c( c) c^( c^) c_( c_) } #] % SlurEvent -\test "" ##[ { c\< c\! c^\< c^\! c_\< c_\! } #] % CrescendoEvent -\test "" ##[ { c\> c\! c^\> c^\! c_\> c_\! } #] % DecrescendoEvent -\test "" ##[ { c\episemInitium c\episemFinis } #] % EpisemaEvent -\test "" ##[ { c\( c\) c^\( c^\) c_\( c_\) } #] % PhrasingSlurEvent -\test "" ##[ { c\sustainOn c\sustainOff } #] % SustainEvent -\test "" ##[ { c\sostenutoOn c\sostenutoOff } #] % SostenutoEvent -\test "" ##[ \melisma #] -\test "" ##[ \melismaEnd #] -\test "" ##[ { c\startTextSpan c\stopTextSpan } #] % TextSpanEvent -\test "" ##[ { c\startTrillSpan c\stopTrillSpan } #] % TrillSpanEvent -\test "" ##[ { c \startStaff c \stopStaff } #] % StaffSpanEvent -\test "" ##[ { c\startGroup c\stopGroup c^\startGroup c^\stopGroup c_\startGroup c_\stopGroup } #] % NoteGroupingEvent -\test "" ##[ { c\unaCorda c\treCorde } #] % UnaCordaEvent -\test "" ##[ \breathe #] -\test "" ##[ { c \[ c \] } #] % LigatureEvent -\test "" ##[ \~ #] % PesOrFlexaEvent -\test "" ##[ { c-\bendAfter #3 } #] % BendAfterEvent -\test "" ##[ < c-\rightHandFinger #1 > #] % StrokeFingerEvent - -\test "" ##[ \break #] -\test "" ##[ \noBreak #] -\test "" ##[ \pageBreak #] -\test "" ##[ \noPageBreak #] -\test "" ##[ \pageTurn #] -\test "" ##[ \noPageTurn #] +\test ##[ c4 ~ #] % TieEvent +\test ##[ c\noBeam #] % BeamForbidEvent +\test ##[ c\1 #] % StringNumberEvent +\test ##[ { c: c:1 } #] % TremoloEvent +\test ##[ { c-^ c^^ c_^ } #] % ArticulationEvent +\test ##[ { c-+ c^+ c_+ } #] +\test ##[ { c-- c^- c_- } #] +\test ##[ { c-| c^| c_| } #] +\test ##[ { c-> c^> c_> } #] +\test ##[ { c-. c^. c_. } #] +\test ##[ { c-_ c^_ c__ } #] +\test ##[ { c\trill c^\trill c_\trill } #] +\test ##[ { c-1 c^2 c_3 } #] % FingerEvent +\test ##[ { c-"foo" c^"foo" c_"foo" } #] % TextScriptEvent +\test ##[ { R1*4-"foo" R^"foo" R_"foo" } #] % MultiMeasureTextEvent +\test ##[ { < c\harmonic >4 < c e\harmonic > } #] % HarmonicEvent +\test ##[ { c\glissando c^\glissando c_\glissando } #] % GlissandoEvent +\test ##[ { c\arpeggio c^\arpeggio c_\arpeggio } #] % ArpeggioEvent +\test ##[ { c\p c^\ff c_\sfz } #] % AbsoluteDynamicEvent +\test ##[ { c[ c] c^[ c^] c_[ c_] } #] % BeamEvent +\test ##[ { c( c) c^( c^) c_( c_) } #] % SlurEvent +\test ##[ { c\< c\! c^\< c^\! c_\< c_\! } #] % CrescendoEvent +\test ##[ { c\> c\! c^\> c^\! c_\> c_\! } #] % DecrescendoEvent +\test ##[ { c\episemInitium c\episemFinis } #] % EpisemaEvent +\test ##[ { c\( c\) c^\( c^\) c_\( c_\) } #] % PhrasingSlurEvent +\test ##[ { c\sustainOn c\sustainOff } #] % SustainEvent +\test ##[ { c\sostenutoOn c\sostenutoOff } #] % SostenutoEvent +\test ##[ \melisma #] +\test ##[ \melismaEnd #] +\test ##[ { c\startTextSpan c\stopTextSpan } #] % TextSpanEvent +\test ##[ { c\startTrillSpan c\stopTrillSpan } #] % TrillSpanEvent +\test ##[ { c \startStaff c \stopStaff } #] % StaffSpanEvent +\test ##[ { c\startGroup c\stopGroup c^\startGroup c^\stopGroup c_\startGroup c_\stopGroup } #] % NoteGroupingEvent +\test ##[ { c\unaCorda c\treCorde } #] % UnaCordaEvent +\test ##[ \breathe #] +\test ##[ { c \[ c \] } #] % LigatureEvent +\test ##[ \~ #] % PesOrFlexaEvent +\test ##[ c\bendAfter #3 #] % BendAfterEvent +\test ##[ c\rightHandFinger #1 #] % StrokeFingerEvent + +\test ##[ \break #] +\test ##[ \noBreak #] +\test ##[ \pageBreak #] +\test ##[ \noPageBreak #] +\test ##[ \pageTurn #] +\test ##[ \noPageTurn #] %% Checks -\test "" ##[ \octaveCheck a' #] % RelativeOctaveCheck -\test "" ##[ | #] % BarCheck +\test ##[ \octaveCheck a' #] % RelativeOctaveCheck +\test ##[ | #] % BarCheck %% Marks -\test "" ##[ \mark \default #] % MarkEvent -\test "" ##[ \mark "Allegro" #] -\test "" ##[ \tempo 4 = 120 #] % MetronomeChangeEvent -\test "" ##[ \tempo 4 = 108 ~ 116 #] -\test "" ##[ \tempo "Allegro" 4 = 132 #] -\test "" ##[ \tempo "Andante" #] +\test ##[ \mark \default #] % MarkEvent +\test ##[ \mark "Allegro" #] +\test ##[ \tempo 4 = 120 #] % MetronomeChangeEvent +\test ##[ \tempo 4 = 108 ~ 116 #] +\test ##[ \tempo "Allegro" 4 = 132 #] +\test ##[ \tempo "Andante" #] %% key, time, clef, bar -\test "" ##[ \key \default #] % KeyChangeEvent -\test "" ##[ \key e \minor #] -\test "" ##[ \clef "bass" #] -\test "" ##[ \clef "french^2" #] -\test "" ##[ \clef "alto_3" #] -\test "" ##[ \time 2/4 #] -\test "" ##[ #(set-time-signature 5 8 '(3 2)) #] -\test "" ##[ \bar "|." #] +\test ##[ \key \default #] % KeyChangeEvent +\test ##[ \key e \minor #] +\test ##[ \clef "bass" #] +\test ##[ \clef "french^2" #] +\test ##[ \clef "alto_3" #] +\test ##[ \time 2/4 #] +\test ##[ \time #'(3 2) 5/8 #] +\test ##[ \bar "|." #] %% staff switches -\test "" ##[ \autochange { c d } #] % AutoChangeMusic -\test "" ##[ { \change Staff = "up" { c d } } #] % ContextChange +\test ##[ \autochange { c d } #] % AutoChangeMusic +\test ##[ { \change Staff = "up" { c d } } #] % ContextChange %% Tuplets -\test "" ##[ \times 2/3 { c8 d e } #] % TimeScaledMusic -\test "" ##[ \times 4/6 { c16 d e f g a } #] +\test ##[ \times 2/3 { c8 d e } #] % TimeScaledMusic +\test ##[ \times 4/6 { c16 d e f g a } #] +\test ##[ \times 2/3 { c d e \times 2/5 { f e d2 d4 } c } #] %} %% \relative and \tranpose \test #"NOT A BUG" ##[ \relative c' { c b } #] % RelativeOctaveMusic \test #"NOT A BUG" ##[ \transpose c d { c d } #] % TransposedMusic %} %% Repeats -\test "" ##[ \repeat volta 2 { c d } #] % VoltaRepeatedMusic -\test "" ##[ \repeat unfold 2 { c d } #] % UnfoldedRepeatedMusic -\test "" ##[ \repeat percent 2 { c d } #] % PercentRepeatedMusic -\test "" ##[ \repeat tremolo 4 { c16 d } #] % TremoloRepeatedMusic -\test "" ##[ \repeat volta 2 { c4 d } \alternative { { c d } { e f } } #] % +\test ##[ \repeat volta 2 { c d } #] % VoltaRepeatedMusic +\test ##[ \repeat unfold 2 { c d } #] % UnfoldedRepeatedMusic +\test ##[ \repeat percent 2 { c d } #] % PercentRepeatedMusic +\test ##[ \repeat tremolo 4 { c16 d } #] % TremoloRepeatedMusic +\test ##[ \repeat tremolo 7 { c''32 b' } #] +\test ##[ \repeat tremolo 15 { c''16 b' } #] +\test ##[ \repeat volta 2 { c4 d } \alternative { { c d } { e f } } #] % %% Context creation -\test "" ##[ \new Staff { c d } #] % ContextSpeccedMusic -\test "" ##[ \new Staff = "up" { c d } #] % ContextSpeccedMusic -\test "" ##[ \context Staff { c d } #] -\test "" ##[ \context Staff = "up" { c d } #] -\test "" ##[ +\test ##[ \new Staff { c d } #] % ContextSpeccedMusic +\test ##[ \new Staff = "up" { c d } #] % ContextSpeccedMusic +\test ##[ \context Staff { c d } #] +\test ##[ \context Staff = "up" { c d } #] +\test ##[ \new Staff \with { \consists "Timing_engraver" \remove "Clef_engraver" } { c d } #] %% Context properties -\test "" ##[ \once \set Score . skipBars = ##t #] % PropertySet -\test "" ##[ \set autoBeaming = ##f #] -\test "" ##[ \unset Score . skipBars #] % PropertyUnset -\test "" ##[ \unset autoBeaming #] +\test ##[ \once \set Score . skipBars = ##t #] % PropertySet +\test ##[ \set autoBeaming = ##f #] +\test ##[ \unset Score . skipBars #] % PropertyUnset +\test ##[ \unset autoBeaming #] %% Layout properties -\test "" ##[ \override Staff . Stem #'thickness = #4.0 #] % OverrideProperty -\test "" ##[ \once \override Beam #'beam-thickness = #0.6 #] -\test "" ##[ \revert Staff . Stem #'thickness #] % RevertProperty -\test "" ##[ \revert Beam #'beam-thickness #] +\test ##[ \override Staff . Stem #'thickness = #4.0 #] % OverrideProperty +\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)) #] +\test ##[ \applyOutput #'Foo #(lambda (arg) (list)) #] %% \applyContext -\test "" ##[ \applyContext #(lambda (arg) (list)) #] +\test ##[ \applyContext #(lambda (arg) (list)) #] %% \partial -\test "" ##[ \partial 2 #] -\test "" ##[ \partial 8. #] -\test "" ##[ \partial 4*2/3 #] +\test ##[ \partial 2 #] +\test ##[ \partial 8. #] +\test ##[ \partial 4*2/3 #] %% \partcombine -\test "" ##[ \partcombine { c e } +\test ##[ \partcombine { c e } { d f } #] % PartCombineMusic UnrelativableMusic %% Cue notes -\test "" ##[ \cueDuring #"foo" #1 { c d } #] -\test "" ##[ \quoteDuring #"foo" { c d } #] +\test ##[ \cueDuring #"foo" #1 { c d } #] +\test ##[ \quoteDuring #"foo" { c d } #] %% \ottava -\test "" ##[ \ottava #1 #] % OttavaMusic +\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 -> #] +\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 -> #] +\test ##[ < \tweak Accidental #'color #'(1.0 0.0 0.0) cis eis g > #] %% end test. diff --git a/input/regression/dot-column-engraver.ly b/input/regression/dot-column-engraver.ly new file mode 100644 index 0000000000..1b7449b1a7 --- /dev/null +++ b/input/regression/dot-column-engraver.ly @@ -0,0 +1,22 @@ +\version "2.16.0" + +\header { + texidoc = "Dot Columns are engraved in the Staff by default, +enabling dots to move vertically to make room for dots from another voice. +If Dot_column_engraver is moved to Voice, separate dot columns are engraved, +and these dots avoid notes in other voices." +} + +music = \relative c'' { \time 3/4 << { + 4. c c b g f a a +} \\ \times 1/2 { + 2. a-- -. a2. a-- a a b \bar "|." +} >> } + +\score{ \music } +\markup "move Dot_column_engraver to Voice :" +\score{ \music +\layout { + \context {\Staff \remove Dot_column_engraver} + \context {\Voice \consists Dot_column_engraver} +}} diff --git a/input/regression/dot-column-note-collision.ly b/input/regression/dot-column-note-collision.ly index 7e9650565a..b818ab7401 100644 --- a/input/regression/dot-column-note-collision.ly +++ b/input/regression/dot-column-note-collision.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Dots and note-heads should not collide." @@ -6,4 +6,5 @@ { 4. s8 \small 4. s8 4. s8 4. s8 + <<4 \\ 4. >> s8 <<4 \\ b'4. >> s8 } diff --git a/input/regression/dot-column-rest-collision.ly b/input/regression/dot-column-rest-collision.ly index 3419f7304f..767988e3f0 100644 --- a/input/regression/dot-column-rest-collision.ly +++ b/input/regression/dot-column-rest-collision.ly @@ -1,10 +1,12 @@ \header { - texidoc = "Dot columns do not trigger beam slanting too early." + texidoc = "Dot columns do not trigger beam slanting too early. +This input should compile with no programming error message, +and the dots should be correctly placed on their rests." } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right=##t } << - { e''8 e''8 g'' g''} \\ - { e8 r4. } + { e''8 e'' g'' g'' g''16[ r8. r8. g''16] } \\ + { e8 r4. c'16[ r8. 8. e'16] } >> diff --git a/input/regression/dot-column-vertical-positioning.ly b/input/regression/dot-column-vertical-positioning.ly new file mode 100644 index 0000000000..d3d1bfaaa7 --- /dev/null +++ b/input/regression/dot-column-vertical-positioning.ly @@ -0,0 +1,13 @@ +\version "2.16.0" + +\header { + texidoc = "Dot columns should not trigger vertical spacing before +line breaking. If the regtest issues a programming_error saying that +vertical spacing has been called before line breaking, it has failed. +" +} + +\context Staff << + \new Voice { \voiceOne f''8.[ e''16] } + \new Voice { \voiceThree r8. a'16} +>> diff --git a/input/regression/dot-dot-count-override.ly b/input/regression/dot-dot-count-override.ly index b7bd2bc96d..3b4d7af790 100644 --- a/input/regression/dot-dot-count-override.ly +++ b/input/regression/dot-dot-count-override.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The @code{dot-count} property diff --git a/input/regression/dot-flag-collision.ly b/input/regression/dot-flag-collision.ly index 045816968f..1c649d6d20 100644 --- a/input/regression/dot-flag-collision.ly +++ b/input/regression/dot-flag-collision.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Dots move to the right when a collision with the (up)flag happens." } diff --git a/input/regression/dot-rest-beam-trigger.ly b/input/regression/dot-rest-beam-trigger.ly index 51822ad38e..478663fcf3 100644 --- a/input/regression/dot-rest-beam-trigger.ly +++ b/input/regression/dot-rest-beam-trigger.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \new Staff \relative c'' { << diff --git a/input/regression/dot-rest-horizontal-spacing.ly b/input/regression/dot-rest-horizontal-spacing.ly index ebb0bb60c5..0888644b9a 100644 --- a/input/regression/dot-rest-horizontal-spacing.ly +++ b/input/regression/dot-rest-horizontal-spacing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The dots on a dotted rest are correctly accounted for diff --git a/input/regression/dot-up-voice-collision.ly b/input/regression/dot-up-voice-collision.ly index 72eb56cc59..fa3035fcc7 100644 --- a/input/regression/dot-up-voice-collision.ly +++ b/input/regression/dot-up-voice-collision.ly @@ -1,11 +1,11 @@ \header { - texidoc = "in collisions, the stems of outer voice are added to the - dot support of the inner voices." + texidoc = "in collisions, the dots of outer voices avoid + stems and flags of the inner voices." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } @@ -13,6 +13,6 @@ \key e \major \time 3/4 \relative c'' { << { dis4. } \\ - { fis,4 } \\ { b4 } >> + { fis,4 } \\ { b8 } >> } } diff --git a/input/regression/dots.ly b/input/regression/dots.ly index 204703ef87..a811a9dc10 100644 --- a/input/regression/dots.ly +++ b/input/regression/dots.ly @@ -1,4 +1,4 @@ -\version "2.14.0" \header{ +\version "2.16.0" \header{ texidoc=" Both noteheads and rests can have dots. diff --git a/input/regression/double-repeat-default-volta.ly b/input/regression/double-repeat-default-volta.ly index 985498fb06..f560324a6c 100644 --- a/input/regression/double-repeat-default-volta.ly +++ b/input/regression/double-repeat-default-volta.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "For volte, the style of double repeats can be set diff --git a/input/regression/double-repeat.ly b/input/regression/double-repeat.ly index 2bb21245f5..08cc5f835d 100644 --- a/input/regression/double-repeat.ly +++ b/input/regression/double-repeat.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Three types of double repeat bar line are supported." diff --git a/input/regression/drums.ly b/input/regression/drums.ly index 517930db87..706fe0214a 100644 --- a/input/regression/drums.ly +++ b/input/regression/drums.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 } drl = \drummode {\repeat "unfold" 3 {bd4 sn8 bd bd4 << bd ss >> } bd8 tommh tommh bd toml toml bd tomfh16 tomfh } @@ -36,10 +36,7 @@ timb = \drummode { \repeat "unfold" 2 {timh4 ssh timl8 ssh r timh r4 ssh8 timl r %% broken: \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 120 4) - } + \tempo 4 = 120 } diff --git a/input/regression/duration-identifier-compressed.ly b/input/regression/duration-identifier-compressed.ly index 356f6ff048..71f32a35eb 100644 --- a/input/regression/duration-identifier-compressed.ly +++ b/input/regression/duration-identifier-compressed.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The compression factor of a duration identifier is diff --git a/input/regression/dynamics-alignment-autobreak.ly b/input/regression/dynamics-alignment-autobreak.ly new file mode 100644 index 0000000000..d4ecfc9238 --- /dev/null +++ b/input/regression/dynamics-alignment-autobreak.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\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 index 0000000000..0d3bb86755 --- /dev/null +++ b/input/regression/dynamics-alignment-breaker-linebreak.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\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 index 0000000000..a295f8e551 --- /dev/null +++ b/input/regression/dynamics-alignment-breaker-order.ly @@ -0,0 +1,18 @@ +\version "2.16.0" + +\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 index 0000000000..a7c9e8d28e --- /dev/null +++ b/input/regression/dynamics-alignment-breaker-subsequent-spanner.ly @@ -0,0 +1,15 @@ +\version "2.16.0" + +\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-breaker.ly b/input/regression/dynamics-alignment-breaker.ly index 1a4c1812b4..b452c8d32d 100644 --- a/input/regression/dynamics-alignment-breaker.ly +++ b/input/regression/dynamics-alignment-breaker.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Hairpins, DynamicTextSpanners and dynamics can be diff --git a/input/regression/dynamics-alignment-no-line-linebreak.ly b/input/regression/dynamics-alignment-no-line-linebreak.ly new file mode 100644 index 0000000000..c6165db856 --- /dev/null +++ b/input/regression/dynamics-alignment-no-line-linebreak.ly @@ -0,0 +1,14 @@ +\version "2.16.0" + +\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 +} diff --git a/input/regression/dynamics-alignment-no-line.ly b/input/regression/dynamics-alignment-no-line.ly index 03a26d4b46..4211b4f891 100644 --- a/input/regression/dynamics-alignment-no-line.ly +++ b/input/regression/dynamics-alignment-no-line.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If the line for a @code{DynamicTextSpanner} is hidden, the diff --git a/input/regression/dynamics-avoid-cross-staff-stem.ly b/input/regression/dynamics-avoid-cross-staff-stem.ly new file mode 100644 index 0000000000..e0f4a738be --- /dev/null +++ b/input/regression/dynamics-avoid-cross-staff-stem.ly @@ -0,0 +1,16 @@ +\version "2.16.0" + +\header { + texidoc = "LilyPond automatically shifts dynamics that collide with +cross-staff stems when manual beams are used." +} + +\new GrandStaff << + \new Staff = "PnRH" { + \relative g { + \stemDown gis8 \p [ \change Staff = "PnLH" \stemUp a, \fff ] + \change Staff = "PnRH" r4 + } + } + \new Staff = "PnLH" { \clef "F" { s4 r4 } } +>> diff --git a/input/regression/dynamics-broken-hairpin.ly b/input/regression/dynamics-broken-hairpin.ly index 83b9473569..8946b5bbd3 100644 --- a/input/regression/dynamics-broken-hairpin.ly +++ b/input/regression/dynamics-broken-hairpin.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Broken crescendi should be open on one side." } diff --git a/input/regression/dynamics-context-textspan.ly b/input/regression/dynamics-context-textspan.ly index 1b7faf0716..e21ee623e2 100644 --- a/input/regression/dynamics-context-textspan.ly +++ b/input/regression/dynamics-context-textspan.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Text spanners work in the @code{Dynamics} context." diff --git a/input/regression/dynamics-custom-text-spanner-postfix.ly b/input/regression/dynamics-custom-text-spanner-postfix.ly index cb2a63e038..23e1512f86 100644 --- a/input/regression/dynamics-custom-text-spanner-postfix.ly +++ b/input/regression/dynamics-custom-text-spanner-postfix.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Postfix functions for custom crescendo text spanners. The spanners diff --git a/input/regression/dynamics-glyphs.ly b/input/regression/dynamics-glyphs.ly index 7193ab1740..693dc0b143 100644 --- a/input/regression/dynamics-glyphs.ly +++ b/input/regression/dynamics-glyphs.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header {texidoc = "Dynamic letters are kerned, and their weight matches that of the hairpin signs. The dynamic scripts should be diff --git a/input/regression/dynamics-hairpin-length.ly b/input/regression/dynamics-hairpin-length.ly index 822dd773f7..78d25a6f1c 100644 --- a/input/regression/dynamics-hairpin-length.ly +++ b/input/regression/dynamics-hairpin-length.ly @@ -6,7 +6,7 @@ respectively." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/dynamics-line.ly b/input/regression/dynamics-line.ly index dc22d33a30..584c766ab3 100644 --- a/input/regression/dynamics-line.ly +++ b/input/regression/dynamics-line.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Dynamics appear below or above the staff. If multiple dynamics are linked with (de)crescendi, they should be on the same diff --git a/input/regression/dynamics-rest-positioning.ly b/input/regression/dynamics-rest-positioning.ly index c0f87345bb..7082e4abcf 100644 --- a/input/regression/dynamics-rest-positioning.ly +++ b/input/regression/dynamics-rest-positioning.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Text dynamics are positioned correctly on rests, i.e., diff --git a/input/regression/dynamics-text-dynamics-context.ly b/input/regression/dynamics-text-dynamics-context.ly new file mode 100644 index 0000000000..18b1d5ba4e --- /dev/null +++ b/input/regression/dynamics-text-dynamics-context.ly @@ -0,0 +1,35 @@ +\version "2.16.0" + +\header { + texidoc = "The @code{X-offset} of @code{DynamicText} grobs in a +@code{Dynamics} context should be averaged over the center of +@code{NoteColumn} grobs in the @code{DynamicText}'s @code{PaperColumn}. +" +} + +\score { + << + \new PianoStaff << + \new Staff = "up" { + \clef treble + \relative c' { + c4\p c c\mp c | + c4\mf c c\f c | + << + \repeat unfold 8 c4 + \new Dynamics = "dynamics" \with { + alignBelowContext = "up" + } { + s4\p s s\mp s | + s4\mf s s\f s + } + >> + } + } + \new Staff = "down" { + \clef bass + \repeat unfold 16 c4 + } + >> + >> +} diff --git a/input/regression/dynamics-text-left-text-alignment.ly b/input/regression/dynamics-text-left-text-alignment.ly index 544fa6c65d..8d6f2ebf9c 100644 --- a/input/regression/dynamics-text-left-text-alignment.ly +++ b/input/regression/dynamics-text-left-text-alignment.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The left text of a @code{DynamicTextSpanner} is left-aligned to its anchor note. diff --git a/input/regression/dynamics-text-right-padding.ly b/input/regression/dynamics-text-right-padding.ly index c4f4ca8a32..0a8b0120e1 100644 --- a/input/regression/dynamics-text-right-padding.ly +++ b/input/regression/dynamics-text-right-padding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The space between an absolute dynamic and a dynamic text span can be changed using @code{'right-padding}. diff --git a/input/regression/dynamics-text-spanner-abs-dynamic.ly b/input/regression/dynamics-text-spanner-abs-dynamic.ly index 5f493c9867..410a953473 100644 --- a/input/regression/dynamics-text-spanner-abs-dynamic.ly +++ b/input/regression/dynamics-text-spanner-abs-dynamic.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \relative c' { diff --git a/input/regression/dynamics-text-spanner-padding.ly b/input/regression/dynamics-text-spanner-padding.ly index 60237bebfb..ecbf985aec 100644 --- a/input/regression/dynamics-text-spanner-padding.ly +++ b/input/regression/dynamics-text-spanner-padding.ly @@ -4,7 +4,7 @@ from the notes. " } -\version "2.14.0" +\version "2.16.0" \layout { indent = 0.0\mm diff --git a/input/regression/dynamics-text-spanner-postfix.ly b/input/regression/dynamics-text-spanner-postfix.ly index 75e6e1aa1f..214f8fcee9 100644 --- a/input/regression/dynamics-text-spanner-postfix.ly +++ b/input/regression/dynamics-text-spanner-postfix.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The \cresc, \dim and \decresc spanners are now postfix operators diff --git a/input/regression/dynamics-unbound-hairpin.ly b/input/regression/dynamics-unbound-hairpin.ly index efdb0eb54f..526a462cda 100644 --- a/input/regression/dynamics-unbound-hairpin.ly +++ b/input/regression/dynamics-unbound-hairpin.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Crescendi may start off-notes, however, they should not collapse into flat lines." diff --git a/input/regression/easy-notation-accidentals.ly b/input/regression/easy-notation-accidentals.ly index 310cd62576..3b0f0490e2 100644 --- a/input/regression/easy-notation-accidentals.ly +++ b/input/regression/easy-notation-accidentals.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/easy-notation.ly b/input/regression/easy-notation.ly index a147cca20d..c810ba9c22 100644 --- a/input/regression/easy-notation.ly +++ b/input/regression/easy-notation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " Easy-notation (or Ez-notation) prints names in note heads. diff --git a/input/regression/empty-chord.ly b/input/regression/empty-chord.ly new file mode 100644 index 0000000000..22790b8fbc --- /dev/null +++ b/input/regression/empty-chord.ly @@ -0,0 +1,10 @@ +\version "2.16.0" + +\header { texidoc = "Empty chords accept articulations, occupy no time, + and leave the current duration unchanged." + } + +\relative c' { + r4 e8( g <>) ^"sul D" \f \> \repeat unfold 8 { c-. } <>\sfz + <>\downbow \repeat unfold 2 { c g } c1\> <>\enddecr +} diff --git a/input/regression/episema.ly b/input/regression/episema.ly index 57691fada9..5de09630a0 100644 --- a/input/regression/episema.ly +++ b/input/regression/episema.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "An episema can be typeset over a single neume or a diff --git a/input/regression/event-listener-output.ly b/input/regression/event-listener-output.ly new file mode 100644 index 0000000000..b7af7fb715 --- /dev/null +++ b/input/regression/event-listener-output.ly @@ -0,0 +1,71 @@ +\version "2.16.0" + +\header { + texidoc = "Music events can be extracted from a score with event +listeners." + title = "Black-box Testing" + composer = "Graham Percival" +} + +#(define EVENT_LISTENER_CONSOLE_OUTPUT 1) + +\include "event-listener.ly" + + + +st = +#(define-music-function + (parser location text) + (string?) +#{ + \override TextSpanner #'(bound-details left text) = $text +#}) + + +vlnone = \new Staff { + \set Staff.instrumentName = "violin-1" + \set Staff.midiInstrument = "violin" + \override TextSpanner #'style = #'line + \override TextSpanner #'(bound-details right padding) = #-1 + \override TextSpanner #'(bound-details left stencil-align-dir-y) = + #CENTER + \override TextSpanner #'(bound-details right text) = + \markup { \draw-line #'(0 . -1) } +\relative c' { + \key d \major + \tempo 4 = 96 + + a4\f d fis8-. a-. r4 + d16(\downbow cis b a) g4 \breathe e8\p( g) fis4 | + + e4\< \glissando 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) + e16\mp\upbow ~ e-.\mp r8 e'-.\upbow^"tip" r e,4->^"mb" r4 | + + \key d \minor + \time 3/4 + \tempo 4 = 120 + d4.\mf^"pizz." e8 f4 + f'4. e8 d4 + d,4.\mp c8 bes4 | + \tempo 4 = 88 + 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 | +} + + + \bar "|." +} + +\score { + << \vlnone >> + \layout{} + \midi{} +} diff --git a/input/regression/extratoken.ly b/input/regression/extratoken.ly new file mode 100644 index 0000000000..6ea388fa5e --- /dev/null +++ b/input/regression/extratoken.ly @@ -0,0 +1,20 @@ +\header { + texidoc = "A mode switching command like @code{\\lyricsto} will +`pop state' when seeing the lookahead token @code{\\time}, a music +function, after its non-delimited argument. This must not cause the +extra token parsing state for the music function to disappear." +} + +\paper { + ragged-right = ##t +} + +\version "2.16.0" + +x=\lyrics { oh } + +<< + \new Voice = m { c'4 r r } + \lyricsto "m" \x + \time 3/4 +>> diff --git a/input/regression/fermata-rest-position.ly b/input/regression/fermata-rest-position.ly index 4a7e3c6598..5e424120e3 100644 --- a/input/regression/fermata-rest-position.ly +++ b/input/regression/fermata-rest-position.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " Fermatas over multimeasure rests are positioned as over normal rests. diff --git a/input/regression/figured-bass-alteration.ly b/input/regression/figured-bass-alteration.ly index 75c7d048de..0520c1ad9a 100644 --- a/input/regression/figured-bass-alteration.ly +++ b/input/regression/figured-bass-alteration.ly @@ -3,7 +3,7 @@ texidoc = "Bass figures can carry alterations." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right= ##t diff --git a/input/regression/figured-bass-continuation-center.ly b/input/regression/figured-bass-continuation-center.ly index 27fe204c74..691cc96243 100644 --- a/input/regression/figured-bass-continuation-center.ly +++ b/input/regression/figured-bass-continuation-center.ly @@ -6,7 +6,7 @@ true." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/figured-bass-continuation-end-position.ly b/input/regression/figured-bass-continuation-end-position.ly index 4901303df5..522a393c9f 100644 --- a/input/regression/figured-bass-continuation-end-position.ly +++ b/input/regression/figured-bass-continuation-end-position.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Figured bass extender for figures of different width (e.g. with @@ -15,4 +15,4 @@ alteration or two-digit figures) should still stop at the same position." <12 5>4. <12 5>4. r4 -} \ No newline at end of file +} diff --git a/input/regression/figured-bass-continuation-forbid.ly b/input/regression/figured-bass-continuation-forbid.ly index b4599ee67b..501b6a9ac5 100644 --- a/input/regression/figured-bass-continuation-forbid.ly +++ b/input/regression/figured-bass-continuation-forbid.ly @@ -4,7 +4,7 @@ may be forbidden. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \figures { diff --git a/input/regression/figured-bass-continuation-modifiers.ly b/input/regression/figured-bass-continuation-modifiers.ly index 638b550451..e05535bd3c 100644 --- a/input/regression/figured-bass-continuation-modifiers.ly +++ b/input/regression/figured-bass-continuation-modifiers.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" << \relative \new Voice { diff --git a/input/regression/figured-bass-continuation.ly b/input/regression/figured-bass-continuation.ly index 5bec65ddbf..916d8e8621 100644 --- a/input/regression/figured-bass-continuation.ly +++ b/input/regression/figured-bass-continuation.ly @@ -5,7 +5,7 @@ figures. They are switched on with @code{useBassFigureExtenders}" } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/figured-bass-durations.ly b/input/regression/figured-bass-durations.ly index 54ed642422..0469bc070c 100644 --- a/input/regression/figured-bass-durations.ly +++ b/input/regression/figured-bass-durations.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/figured-bass-extenders-markup.ly b/input/regression/figured-bass-extenders-markup.ly index 720dfaf9b6..601bdee186 100644 --- a/input/regression/figured-bass-extenders-markup.ly +++ b/input/regression/figured-bass-extenders-markup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/figured-bass-ignore-rest.ly b/input/regression/figured-bass-ignore-rest.ly index 7ee4d4c8f0..b09c1f6528 100644 --- a/input/regression/figured-bass-ignore-rest.ly +++ b/input/regression/figured-bass-ignore-rest.ly @@ -1,10 +1,10 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When figures appear inside a voice, @code{ignoreFiguredBassRest} causes all figures on rests to be discarded and all spanners ended. - If set to @code{##f}, figures on rests are printed. + If set to @code{#f}, figures on rests are printed. " } diff --git a/input/regression/figured-bass-implicit.ly b/input/regression/figured-bass-implicit.ly index 4c3876a265..b8128d2dd6 100644 --- a/input/regression/figured-bass-implicit.ly +++ b/input/regression/figured-bass-implicit.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/figured-bass-slashed-numbers.ly b/input/regression/figured-bass-slashed-numbers.ly index 16c55e5fdd..fc5a718b99 100644 --- a/input/regression/figured-bass-slashed-numbers.ly +++ b/input/regression/figured-bass-slashed-numbers.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Figured bass supports numbers with slashes through diff --git a/input/regression/figured-bass-staff.ly b/input/regression/figured-bass-staff.ly index 788f8c3f03..e7e4dd4597 100644 --- a/input/regression/figured-bass-staff.ly +++ b/input/regression/figured-bass-staff.ly @@ -3,7 +3,7 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/figured-bass.ly b/input/regression/figured-bass.ly index f480aa4168..5d445a1b52 100644 --- a/input/regression/figured-bass.ly +++ b/input/regression/figured-bass.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/fill-line-test.ly b/input/regression/fill-line-test.ly index 341082f693..295a7d0a88 100644 --- a/input/regression/fill-line-test.ly +++ b/input/regression/fill-line-test.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/filter-translators.ly b/input/regression/filter-translators.ly index cd68546602..b0c2ccb9f9 100644 --- a/input/regression/filter-translators.ly +++ b/input/regression/filter-translators.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Context modification via @code{\\with} filters translators diff --git a/input/regression/finger-chords-accidental.ly b/input/regression/finger-chords-accidental.ly index 760cd2ba27..c9d3353e64 100644 --- a/input/regression/finger-chords-accidental.ly +++ b/input/regression/finger-chords-accidental.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Scripts left of a chord avoid accidentals." diff --git a/input/regression/finger-chords-dot.ly b/input/regression/finger-chords-dot.ly index 987f5ab858..8b62bc0a3f 100644 --- a/input/regression/finger-chords-dot.ly +++ b/input/regression/finger-chords-dot.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Scripts right of a chord avoid dots." diff --git a/input/regression/finger-chords-order.ly b/input/regression/finger-chords-order.ly index 8d54a8a9cf..13ba41b7b6 100644 --- a/input/regression/finger-chords-order.ly +++ b/input/regression/finger-chords-order.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Ordering of the fingerings depends on vertical ordering of the notes, and -is independent of up/down direction." +is independent of up/@/down direction." } diff --git a/input/regression/finger-chords.ly b/input/regression/finger-chords.ly index 233a628b54..ba89ec6233 100644 --- a/input/regression/finger-chords.ly +++ b/input/regression/finger-chords.ly @@ -1,11 +1,11 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "It is possible to associate fingerings uniquely with notes. This makes it possible to add -horizontal fingerings to notes. - +horizontal fingerings to notes. Fingering clears stems and flags +if @code{'add-stem-support} is set. " } @@ -26,11 +26,18 @@ horizontal fingerings to notes. \once \override Fingering #'staff-padding = #'() < c-1 e-2 g-3 b-5 > 4 - \set fingeringOrientations = #'(up left) - < c-1 e-2 g-3 b-5 > 4 + \set fingeringOrientations = #'(up right) + < c-1 e-2 g-3 b-5 > 4. \set fingeringOrientations = #'(right) - < c-1 e-2 g-3 b-5 > 4 + < c-1 e-2 g-3 b-5 > 8 + + \override Fingering #'add-stem-support = ##t + \set fingeringOrientations = #'(up right) + < c-1 e-2 g-3 b-5 > 4. + + \set fingeringOrientations = #'(right) + < c-1 e-2 g-3 b-5 > 8 } diff --git a/input/regression/fingering-cross-staff.ly b/input/regression/fingering-cross-staff.ly index 9d38a417c6..61760733de 100644 --- a/input/regression/fingering-cross-staff.ly +++ b/input/regression/fingering-cross-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Fingerings work correctly with cross-staff beams." @@ -22,4 +22,4 @@ music = \relative c { \override Fingering #'direction = #down \transpose c c, \music } >> -} \ No newline at end of file +} diff --git a/input/regression/fingering.ly b/input/regression/fingering.ly index 219831a676..3e3381326d 100644 --- a/input/regression/fingering.ly +++ b/input/regression/fingering.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Automatic fingering tries to put fingering instructions diff --git a/input/regression/flag-stem-begin-position.ly b/input/regression/flag-stem-begin-position.ly new file mode 100644 index 0000000000..11ca4c4de9 --- /dev/null +++ b/input/regression/flag-stem-begin-position.ly @@ -0,0 +1,10 @@ +\version "2.16.0" + +\header { + texidoc = "Stems reach correct begin points of merged noteheads. +" +} + +<< { \aikenHeads f'8 } \\ { \aikenHeads f'8 } >> +<< { \aikenHeads f'4:32 } \\ { \aikenHeads f' } >> +<< { \aikenHeads e'8 f' s4 } \\ { \aikenHeads e'8 f' s4 } >> \ No newline at end of file diff --git a/input/regression/flags-default.ly b/input/regression/flags-default.ly index c74e64e767..4b27eb8ca0 100644 --- a/input/regression/flags-default.ly +++ b/input/regression/flags-default.ly @@ -1,10 +1,10 @@ -\version "2.14.0" +\version "2.16.0" #(set-global-staff-size 17) \header { texidoc = "Default flag styles: '(), 'mensural and 'no-flag. - Compare all three methods to print them: (1) C++ default implementation, - (2) Scheme implementation using the 'flag-style grob property and + Compare all three methods to print them: (1) C++ default implementation, + (2) Scheme implementation using the 'style grob property and (3) setting the 'flag property explicitly to the desired Scheme function. All three systems should be absolutely identical." } @@ -19,7 +19,7 @@ testnotes = { \autoBeamOff c''8 d''16 c''32 d''64 \acciaccatura {c''8} d''64 } -% Old settings: flag-style set to default, 'mensural, 'no-flag; using the +% Old settings: style set to default, 'mensural, 'no-flag; using the % default C++ function ly:stem::calc-stem { \override Score.RehearsalMark #'self-alignment-X = #LEFT @@ -29,11 +29,11 @@ testnotes = { \autoBeamOff \testnotes \mark "Symbol: 'mensural (C++)" - \override Stem #'flag-style = #'mensural + \override Flag #'style = #'mensural \testnotes \mark "Symbol: 'no-flag (C++)" - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag \testnotes } @@ -42,17 +42,17 @@ testnotes = { \autoBeamOff \override Score.RehearsalMark #'self-alignment-X = #LEFT \time 2/4 - \override Stem #'flag = #default-flag - \revert Stem #'flag-style + \override Flag #'stencil = #default-flag + \revert Flag #'style \mark "Default flags (Scheme)" \testnotes \mark "Symbol: 'mensural (Scheme)" - \override Stem #'flag-style = #'mensural + \override Flag #'style = #'mensural \testnotes \mark "Symbol: 'no-flag (Scheme)" - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag \testnotes } @@ -62,14 +62,14 @@ testnotes = { \autoBeamOff \time 2/4 \mark "Function: normal-flag" - \override Stem #'flag = #normal-flag + \override Flag #'stencil = #normal-flag \testnotes \mark "Function: mensural-flag" - \override Stem #'flag = #mensural-flag + \override Flag #'stencil = #mensural-flag \testnotes \mark "Function: no-flag" - \override Stem #'flag = #no-flag + \override Flag #'stencil = #no-flag \testnotes } diff --git a/input/regression/flags-in-scheme.ly b/input/regression/flags-in-scheme.ly index b26f9b71d6..23f2d563e5 100644 --- a/input/regression/flags-in-scheme.ly +++ b/input/regression/flags-in-scheme.ly @@ -1,7 +1,7 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "The 'flag property of the Stem grob can be set to a custom + texidoc = "The 'stencil property of the Flag grob can be set to a custom scheme function to generate the glyph for the flag." } @@ -9,26 +9,28 @@ scheme function to generate the glyph for the flag." % test notes, which will be shown in different style: testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 c''8 d''16 c''32 d''64 \acciaccatura {c''8} d''64 } -#(define-public (weight-flag stem-grob) - (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2)) +#(define-public (weight-flag grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (log (- (ly:grob-property stem-grob 'duration-log) 2)) (is-up (eqv? (ly:grob-property stem-grob 'direction) UP)) (yext (if is-up (cons (* log -0.8) 0) (cons 0 (* log 0.8)))) (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext)) - (stroke-style (ly:grob-property stem-grob 'stroke-style)) + (stroke-style (ly:grob-property grob 'stroke-style)) (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil))) (ly:stencil-add flag-stencil stroke-stencil))) % Create a flag stencil by looking up the glyph from the font -#(define (inverted-flag stem-grob) - (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) - (flag (retrieve-glyph-flag "" dir "" stem-grob)) - (line-thickness (ly:staff-symbol-line-thickness stem-grob)) +#(define (inverted-flag grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) + (flag (retrieve-glyph-flag "" dir "" grob)) + (line-thickness (ly:staff-symbol-line-thickness grob)) (stem-thickness (ly:grob-property stem-grob 'thickness)) (stem-width (* line-thickness stem-thickness)) - (stroke-style (ly:grob-property stem-grob 'stroke-style)) + (stroke-style (ly:grob-property grob 'stroke-style)) (stencil (if (null? stroke-style) flag - (add-stroke-glyph flag stem-grob dir stroke-style ""))) + (add-stroke-glyph flag grob dir stroke-style ""))) (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0))) (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0)))) @@ -36,11 +38,11 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 c''8 d''1 \override Score.RehearsalMark #'self-alignment-X = #LEFT \time 2/4 \mark "Function: weight-flag (custom)" - \override Stem #'flag = #weight-flag + \override Flag #'stencil = #weight-flag \testnotes \mark "Function: inverted-flag (custom)" - \override Stem #'flag = #inverted-flag + \override Flag #'stencil = #inverted-flag \testnotes } diff --git a/input/regression/flags-straight-stockhausen-boulez.ly b/input/regression/flags-straight-stockhausen-boulez.ly index 7a13d64bae..8fc0d1245e 100644 --- a/input/regression/flags-straight-stockhausen-boulez.ly +++ b/input/regression/flags-straight-stockhausen-boulez.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Flags can be drawn straight in the style used by @@ -10,14 +10,14 @@ Stockhausen and Boulez. stemLength = #(define-music-function (parser location length) (number?) "Set the length of the next stem explicitly." #{ - \once \override Stem #'length-fraction = #$length + \once \override Stem #'length-fraction = #length #} ) { \autoBeamOff \time 3/8 - \override Stem #'flag = #modern-straight-flag + \override Flag #'stencil = #modern-straight-flag \override Stem #'length-fraction = #'1.5 r8 \acciaccatura { diff --git a/input/regression/flags-straight.ly b/input/regression/flags-straight.ly index 918985e6ef..877d4ca406 100644 --- a/input/regression/flags-straight.ly +++ b/input/regression/flags-straight.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Straight flag styles." @@ -13,11 +13,11 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 \override Score.RehearsalMark #'self-alignment-X = #LEFT \time 2/4 \mark "modern straight" - \override Stem #'flag = #modern-straight-flag + \override Flag #'stencil = #modern-straight-flag \testnotes \mark "old straight (large angles)" - \override Stem #'flag = #old-straight-flag + \override Flag #'stencil = #old-straight-flag \testnotes % % \mark "custom slant" @@ -25,6 +25,6 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 % % flag thickness and spacing % % up-flag angle and length % % down-flag angle and length -% \override Stem #'flag = #(straight-flag 0.35 0.8 -5 0.5 60 2.0) +% \override Flag #'stencil = #(straight-flag 0.35 0.8 -5 0.5 60 2.0) % \testnotes } diff --git a/input/regression/follow-voice-break.ly b/input/regression/follow-voice-break.ly index 45cc987c7b..ffacdbc6fa 100644 --- a/input/regression/follow-voice-break.ly +++ b/input/regression/follow-voice-break.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = " The line-spanners connects to the Y position of the note on the next line. diff --git a/input/regression/follow-voice-consecutive.ly b/input/regression/follow-voice-consecutive.ly index 79a3cdd43e..308391312a 100644 --- a/input/regression/follow-voice-consecutive.ly +++ b/input/regression/follow-voice-consecutive.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc= "The voice follower is not confused when set for consecutive diff --git a/input/regression/font-bogus-ligature.ly b/input/regression/font-bogus-ligature.ly index 37e83eb2d8..61166e865a 100644 --- a/input/regression/font-bogus-ligature.ly +++ b/input/regression/font-bogus-ligature.ly @@ -1,11 +1,11 @@ \header { - texidoc = "TM and No should not be changed into trademark/number symbols. + texidoc = "TM and No should not be changed into trademark/@/number symbols. This may happen with incorrect font versions. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##T diff --git a/input/regression/font-family-override.ly b/input/regression/font-family-override.ly index e077176761..84a0a4fcea 100644 --- a/input/regression/font-family-override.ly +++ b/input/regression/font-family-override.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { % change for other default global staff size. diff --git a/input/regression/font-kern.ly b/input/regression/font-kern.ly index f50a771dfe..ceade658c6 100644 --- a/input/regression/font-kern.ly +++ b/input/regression/font-kern.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Text set in TrueType Fonts that contain kerning tables, are kerned. " diff --git a/input/regression/font-name-font-size.ly b/input/regression/font-name-font-size.ly index 429bf99473..e7a8043635 100644 --- a/input/regression/font-name-font-size.ly +++ b/input/regression/font-name-font-size.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/font-name.ly b/input/regression/font-name.ly index c4d2fc765e..523fc6f66d 100644 --- a/input/regression/font-name.ly +++ b/input/regression/font-name.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/font-postscript.ly b/input/regression/font-postscript.ly index 0fa6b4f707..54f4607628 100644 --- a/input/regression/font-postscript.ly +++ b/input/regression/font-postscript.ly @@ -4,7 +4,7 @@ fonts. The file @file{font.scm} shows how to define the scheme-function @code{make-century-schoolbook-tree}." } -\version "2.14.0" +\version "2.16.0" \paper { #(define text-font-defaults diff --git a/input/regression/footnote-auto-numbering-page-reset.ly b/input/regression/footnote-auto-numbering-page-reset.ly new file mode 100644 index 0000000000..0d8c91b0c0 --- /dev/null +++ b/input/regression/footnote-auto-numbering-page-reset.ly @@ -0,0 +1,44 @@ +\version "2.16.0" +\header { + texidoc = "This is an example of automatic footnote numbering +where the number is reset on each page. It uses the symbol-footnotes +numbering function, which assigns the symbols *, †, ‡, § and ¶ to +successive footnotes, doubling up on the symbol after five footnotes +have been reached. +" +} + +\paper { + footnote-numbering-function = #symbol-footnotes +} + +#(set-default-paper-size "a6") +\book { + +\markup { + a \auto-footnote b c + \auto-footnote d e + \auto-footnote f g +} + +\markup { h i } + +\relative c' { +\footnote #'(1 . -1) #'NoteHead \markup { j } \default +a b c d } + +\pageBreak + +\markup { k \auto-footnote l m } + +\relative c' { a1 } + +\relative c' { + d4 e + < f \footnote #'(1 . -1) \markup { n } a c > + a8-\footnote #'(1 . 1) \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ 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-vertical-order.ly b/input/regression/footnote-auto-numbering-vertical-order.ly new file mode 100644 index 0000000000..0206dc1e34 --- /dev/null +++ b/input/regression/footnote-auto-numbering-vertical-order.ly @@ -0,0 +1,91 @@ +\version "2.16.0" +\header { + texidoc = "This regtest makes sure that footnote numbers are laid out +in the correct vertical order. +" +} + +#(define (make-footnote-numbering-assertion-function n) + (lambda (x) + (if (not (= n x)) + (ly:error (_ "Expecting number ~a, got ~a") n x)))) + +#(define (simultaneous-footnote-numbering-assertion-function x y) + (lambda (grob) + (let ((n (if (grob::has-interface (ly:grob-parent grob Y) + 'beam-interface) + x + y))) + (lambda (x) + (if (not (= n x)) + (ly:error (_ "Expecting number ~a, got ~a") n x)))))) + +\paper { + reset-footnotes-on-new-page = ##f +} + +#(set-default-paper-size "a6") +\book { + \score { + << + \new Staff \relative c' { + d4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 0)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 2 4) + a8-\footnote #'(1 . 1) \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ b c d ] a4 b c\f | + d a b c |\break + d,4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 6)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 8 10) + a8-\footnote #'(1 . 1) \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ b c d ] a4 b c | + d a b c\f |\pageBreak + d,4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 12)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 14 16) + a8-\footnote #'(1 . 1) \markup { p } \< + -\footnote #'(1 . 1) #'Beam \markup { o } [ b c d ] a4 b c | + d a b c\! |\break + } + \new Staff \relative c' { + d4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 1)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 3 5) + a8-\footnote #'(1 . 1) #'Hairpin \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ b c d ] a4 b c\f | + d a b c |\break + d,4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 7)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 9 11) + a8-\footnote #'(1 . 1) \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ b c d ] a4 b c | + d a b c\f |\pageBreak + d,4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 13)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 15 17) + a8-\footnote #'(1 . 1) #'Hairpin \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ b c d ] a4 b c | + d a b c\! |\break + } + >> + } +} diff --git a/input/regression/footnote-auto-numbering.ly b/input/regression/footnote-auto-numbering.ly new file mode 100644 index 0000000000..333bcbdfa6 --- /dev/null +++ b/input/regression/footnote-auto-numbering.ly @@ -0,0 +1,65 @@ +\version "2.16.0" +\header { + texidoc = "This is an example of automatic footnote numbering +where the number is not reset on each page. It uses the default +numbering function, which assigns numbers starting at 1 to successive +footnotes. +" +} + +#(define (make-footnote-numbering-assertion-function n) + (lambda (x) + (if (not (= n x)) + (ly:error (_ "Expecting number ~a, got ~a") n x)))) + +#(define (simultaneous-footnote-numbering-assertion-function x y) + (lambda (grob) + (let ((n (if (grob::has-interface (ly:grob-parent grob Y) + 'beam-interface) + x + y))) + (lambda (x) + (if (not (= n x)) + (ly:error (_ "Expecting number ~a, got ~a") n x)))))) + +\paper { + reset-footnotes-on-new-page = ##f +} + +#(set-default-paper-size "a6") +\book { + +\markup { + a \auto-footnote b c + \auto-footnote d e + \auto-footnote f g +} + +\markup { h i } + +\relative c' { + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 3)) + \footnote #'(1 . -1) #'NoteHead \markup { j } \default + a b c d +} + +\pageBreak + +\markup { k \auto-footnote l m } + +\relative c' { a1 } + +\relative c' { + d4 e + \once \override FootnoteItem #'numbering-assertion-function = + #(lambda (grob) (make-footnote-numbering-assertion-function 5)) + < f \footnote #'(1 . -1) \markup { n } a c > + \once \override FootnoteSpanner #'numbering-assertion-function = + #(simultaneous-footnote-numbering-assertion-function 6 7) + a8-\footnote #'(1 . 1) \markup { p } \< + -\footnote #'(1 . 1) \markup { o } [ 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-break-visibility.ly b/input/regression/footnote-break-visibility.ly index 23e9035a71..e6a3698c71 100644 --- a/input/regression/footnote-break-visibility.ly +++ b/input/regression/footnote-break-visibility.ly @@ -1,24 +1,25 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "With grobs that have break visibility, footnotes will -automatically print to the first line of the break. This behavior -can be overrided." +automatically take the break visibility of the grob being footnoted. +This behavior can be overridden. +" } #(set-default-paper-size "a6") \book { -\new Staff \with { \consists "Footnote_engraver" } +\new Staff { \relative c' { c1 - \footnoteGrob #'TimeSignature #'(0 . 2) "foo" "bar" + \footnote "foo" #'(0 . 2) #'TimeSignature "bar" \default \time 3/4 \break \pageBreak c2. - \once \override Staff . FootnoteItem #'break-visibility = ##(#f #f #t) - \footnoteGrob #'TimeSignature #'(0 . 2) "foo" "bar" + \once \override Score . FootnoteItem #'break-visibility = ##(#f #f #t) + \footnote "foo" #'(0 . 2) #'TimeSignature "bar" \default \time 4/4 \break \pageBreak c1 \bar "|." diff --git a/input/regression/footnote-footer-padding.ly b/input/regression/footnote-footer-padding.ly index ce37e71426..ebc156c1e0 100644 --- a/input/regression/footnote-footer-padding.ly +++ b/input/regression/footnote-footer-padding.ly @@ -1,32 +1,30 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The padding between a footnote and the footer can be tweaked." } -#(set-default-paper-size "a6") +% TODO: then why isn't it tweaked? -\paper { - footnote-footer-padding = 1\in -} +#(set-default-paper-size "a6") \book { \relative c' { - \footnoteGrob #'NoteHead - #'(1 . -1) + \footnote \markup { \tiny 1 } + #'(1 . -1) \markup { 1. Tiny space below. } e1 - \footnoteGrob #'NoteHead - #'(1 . -1) + \footnote \markup { \tiny 2 } + #'(1 . -1) \markup { 2. Tiny space below. } e1 - \footnoteGrob #'NoteHead - #'(1 . -1) + \footnote \markup { \tiny 3 } + #'(1 . -1) \markup { 3. Big space below. } e1 }} diff --git a/input/regression/footnote-spanner.ly b/input/regression/footnote-spanner.ly index 6efca6671b..64b34e308a 100644 --- a/input/regression/footnote-spanner.ly +++ b/input/regression/footnote-spanner.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Footnotes are annotated at the correct place, and the annotation goes to the correct page." @@ -6,16 +6,19 @@ annotation goes to the correct page." #(set-default-paper-size "a6") -\paper { ragged-last-bottom = ##f } +\paper { + ragged-last-bottom = ##f +} \book { \relative c'' { -\footnoteGrob #'Hairpin - #'(0.5 . 0.5) +b4-\footnote \markup { \tiny "1." } + #'(0.5 . 0.5) #'Hairpin \markup { 1. \justify { Goes to the first broken spanner. } } -b4\< c d a + \< +c d a b c d a b c d a b c d a @@ -35,11 +38,12 @@ b c d a b c d a\! \once \override FootnoteSpanner #'spanner-placement = #RIGHT -\footnoteGrob #'Hairpin - #'(0.5 . 0.5) +b4-\footnote \markup { \tiny "2." } + #'(0.5 . 0.5) #'Hairpin \markup { 2. \justify { Goes to the last broken spanner. } } -b4\< c d a + \< +c d a b c d a b c d a b c d a diff --git a/input/regression/footnote.ly b/input/regression/footnote.ly index f13347d31a..e33602dfc4 100644 --- a/input/regression/footnote.ly +++ b/input/regression/footnote.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Lilypond does footnotes." } @@ -15,7 +15,7 @@ \markup { h i } \relative c' { -\footnoteGrob #'NoteHead #'(1 . -1) \markup { \tiny 4 } \markup { 4. j } +\footnote \markup { \tiny 4 } #'(1 . -1) \markup { 4. j } a b c d } \pageBreak @@ -26,8 +26,8 @@ a b c d } \relative c' { d4 e - < f a-\footnote #'(1 . -1) \markup { \tiny 6 } \markup { 6. n } c > - \footnoteGrob #'Beam #'(1 . 1) \markup { \tiny 7 } \markup { 7. o } - \footnoteGrob #'Hairpin #'(1 . 1) \markup { \tiny 8 } \markup { 8. p } - a8\< [ b c d\f ] r2. | + < f \footnote \markup { \tiny 6 } #'(1 . -1) \markup { 6. n } a c > + a8-\footnote \markup { \tiny 8 } #'(1 . 1) \markup { 8. p } \< + -\footnote \markup { \tiny 7 } #'(1 . 1) \markup { 7. o } + [ b c d\f ] r2. | }} diff --git a/input/regression/fret-board-alignment.ly b/input/regression/fret-board-alignment.ly index deecc69232..e58f9eca57 100644 --- a/input/regression/fret-board-alignment.ly +++ b/input/regression/fret-board-alignment.ly @@ -5,7 +5,7 @@ at the fret-zero, string 1 intersection." } -\version "2.14.0" +\version "2.16.0" \include "predefined-guitar-fretboards.ly" diff --git a/input/regression/fret-boards.ly b/input/regression/fret-boards.ly index c822bd6a6e..a580ab4c9a 100644 --- a/input/regression/fret-boards.ly +++ b/input/regression/fret-boards.ly @@ -6,7 +6,7 @@ best when one string number is indicated in advance " } -\version "2.14.0" +\version "2.16.0" foo = \relative c { _\markup { diff --git a/input/regression/fret-diagram-origins.ly b/input/regression/fret-diagram-origins.ly index b8d0f135a0..2c8803d426 100644 --- a/input/regression/fret-diagram-origins.ly +++ b/input/regression/fret-diagram-origins.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-capo.ly b/input/regression/fret-diagrams-capo.ly index 81c867a003..b8f887469c 100644 --- a/input/regression/fret-diagrams-capo.ly +++ b/input/regression/fret-diagrams-capo.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-dots.ly b/input/regression/fret-diagrams-dots.ly index 1321ba6ad8..569878084a 100644 --- a/input/regression/fret-diagrams-dots.ly +++ b/input/regression/fret-diagrams-dots.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" @@ -44,7 +44,7 @@ size, and coloring. (barre 5 1 3))} %% C major for guitar, verbose style - \revert TextScript #'fret-diagram-details #'dot-radius + \revert TextScript #'(fret-diagram-details dot-radius) \once \override TextScript #'fret-diagram-details #'dot-color = #'white c' ^\markup { diff --git a/input/regression/fret-diagrams-fingering.ly b/input/regression/fret-diagrams-fingering.ly index f8c19a72ba..7827f048c3 100644 --- a/input/regression/fret-diagrams-fingering.ly +++ b/input/regression/fret-diagrams-fingering.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-fret-label.ly b/input/regression/fret-diagrams-fret-label.ly index cb840ba8cf..9f8a8b0732 100644 --- a/input/regression/fret-diagrams-fret-label.ly +++ b/input/regression/fret-diagrams-fret-label.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" @@ -46,7 +46,7 @@ size, and number type. (barre 5 1 3))} %% C major for guitar, verbose style - \revert TextScript #'fret-diagram-details #'label-dir + \revert TextScript #'(fret-diagram-details label-dir) \override TextScript #'fret-diagram-details #'fret-label-font-mag = #0.4 \override TextScript #'fret-diagram-details @@ -63,7 +63,7 @@ size, and number type. (barre 5 1 3))} %% C major for guitar, verbose style - \revert TextScript #'fret-diagram-details #'label-dir + \revert TextScript #'(fret-diagram-details label-dir) \once \override TextScript #'fret-diagram-details #'number-type = #'custom \once \override TextScript #'fret-diagram-details diff --git a/input/regression/fret-diagrams-landscape.ly b/input/regression/fret-diagrams-landscape.ly index 5d1fd05785..95f4f5f4eb 100644 --- a/input/regression/fret-diagrams-landscape.ly +++ b/input/regression/fret-diagrams-landscape.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-opposing-landscape.ly b/input/regression/fret-diagrams-opposing-landscape.ly index 15d4c916ed..60c8737253 100644 --- a/input/regression/fret-diagrams-opposing-landscape.ly +++ b/input/regression/fret-diagrams-opposing-landscape.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-size.ly b/input/regression/fret-diagrams-size.ly index e492b5d85a..95942f78e5 100644 --- a/input/regression/fret-diagrams-size.ly +++ b/input/regression/fret-diagrams-size.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" Fret diagrams can be scaled using the @code{size} property. -The position and size of first fret label, mute/open signs, fingers, +The position and size of first fret label, mute/@/open signs, fingers, relative to the diagram grid, shall be the same in all cases. " diff --git a/input/regression/fret-diagrams-string-frets.ly b/input/regression/fret-diagrams-string-frets.ly index 97474dedb7..9e35f84756 100644 --- a/input/regression/fret-diagrams-string-frets.ly +++ b/input/regression/fret-diagrams-string-frets.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-string-thickness.ly b/input/regression/fret-diagrams-string-thickness.ly index bfbb323f89..aff93e9f4b 100644 --- a/input/regression/fret-diagrams-string-thickness.ly +++ b/input/regression/fret-diagrams-string-thickness.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fret-diagrams-xo-label.ly b/input/regression/fret-diagrams-xo-label.ly index c1403b8921..bfb0aa6125 100644 --- a/input/regression/fret-diagrams-xo-label.ly +++ b/input/regression/fret-diagrams-xo-label.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/fretboard-chordchanges.ly b/input/regression/fretboard-chordchanges.ly index 7ce738cea1..c583c6a1c3 100644 --- a/input/regression/fretboard-chordchanges.ly +++ b/input/regression/fretboard-chordchanges.ly @@ -5,7 +5,7 @@ or at the beginning of a new line." } - \version "2.14.0" + \version "2.16.0" myChords = \chordmode { c1 c1 \break diff --git a/input/regression/full-measure-rest-fermata.ly b/input/regression/full-measure-rest-fermata.ly index f68effa060..70804c3dba 100644 --- a/input/regression/full-measure-rest-fermata.ly +++ b/input/regression/full-measure-rest-fermata.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/general-scheme-bindings.ly b/input/regression/general-scheme-bindings.ly index 29db12f184..d3af8ab84e 100644 --- a/input/regression/general-scheme-bindings.ly +++ b/input/regression/general-scheme-bindings.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" %% todo : use macro, to show the statement tested. #(ly:progress "~a\n" (ly:expand-environment "${HOME} $HOME $$ ")) diff --git a/input/regression/generic-output-property.ly b/input/regression/generic-output-property.ly index b5b3b26025..0b3fca4b20 100644 --- a/input/regression/generic-output-property.ly +++ b/input/regression/generic-output-property.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/glissando-accidental.ly b/input/regression/glissando-accidental.ly new file mode 100644 index 0000000000..d3c023d3c1 --- /dev/null +++ b/input/regression/glissando-accidental.ly @@ -0,0 +1,9 @@ +\header { + texidoc = "Glissandi stop before hitting accidentals." + +} +\version "2.16.0" + +\relative c'' { + a1\glissando cis +} diff --git a/input/regression/glissando-broken-multiple.ly b/input/regression/glissando-broken-multiple.ly new file mode 100644 index 0000000000..f766c18d33 --- /dev/null +++ b/input/regression/glissando-broken-multiple.ly @@ -0,0 +1,25 @@ +\header { + texidoc = "When broken, glissandi can span multiple lines." + +} +\version "2.16.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/glissando-broken-unkilled.ly b/input/regression/glissando-broken-unkilled.ly index 8d5fb4b8ed..d1f46c5ea5 100644 --- a/input/regression/glissando-broken-unkilled.ly +++ b/input/regression/glissando-broken-unkilled.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Broken glissandi anticipate the pitch on the next line." diff --git a/input/regression/glissando-broken.ly b/input/regression/glissando-broken.ly index 9d41d5d878..c397a7fc3c 100644 --- a/input/regression/glissando-broken.ly +++ b/input/regression/glissando-broken.ly @@ -2,7 +2,7 @@ texidoc = "If broken, Glissandi anticipate on the pitch of the next line." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##T } diff --git a/input/regression/glissando-chord-linebreak.ly b/input/regression/glissando-chord-linebreak.ly index 957bf9da7c..8d58acf51f 100644 --- a/input/regression/glissando-chord-linebreak.ly +++ b/input/regression/glissando-chord-linebreak.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/glissando-chord.ly b/input/regression/glissando-chord.ly index 11d3030a1a..971074b133 100644 --- a/input/regression/glissando-chord.ly +++ b/input/regression/glissando-chord.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "LilyPond typesets glissandi between chords." diff --git a/input/regression/glissando-consecutive.ly b/input/regression/glissando-consecutive.ly index 41f9873f81..e99f56f084 100644 --- a/input/regression/glissando-consecutive.ly +++ b/input/regression/glissando-consecutive.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" %% This should really be 2.15.0, because the glissando code %% hasn't been backported -- this is a git-only test at this point diff --git a/input/regression/glissando-cross-staff.ly b/input/regression/glissando-cross-staff.ly new file mode 100644 index 0000000000..3f14acaca4 --- /dev/null +++ b/input/regression/glissando-cross-staff.ly @@ -0,0 +1,20 @@ +\version "2.16.0" +\header { + texidoc = "Cross staff glissandi reach their endpoints correctly. +" +} + +\new PianoStaff << +\new Staff = "right" { + e'''2\glissando + \change Staff = "left" + + a,,\glissando + \change Staff = "right" + b''8 +} +\new Staff = "left" { + \clef bass + s1 s8 +} +>> diff --git a/input/regression/glissando-index.ly b/input/regression/glissando-index.ly index 3f3d662762..8eb0b1cd86 100644 --- a/input/regression/glissando-index.ly +++ b/input/regression/glissando-index.ly @@ -1,6 +1,4 @@ -% FIXME: this is a fake version number to allow git master -% to compile. See discussion on lilypond-devel. -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Individual glissandi within a chord can be tweaked." diff --git a/input/regression/glissando-no-break.ly b/input/regression/glissando-no-break.ly index 0ce1613e18..5c611c27c8 100644 --- a/input/regression/glissando-no-break.ly +++ b/input/regression/glissando-no-break.ly @@ -1,10 +1,14 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "forced break was overridden by some other event, should you be using bar checks?")) + \header { texidoc = "Glissandi are not broken. Here a @code{\\break} is ineffective. Use @code{breakable} grob property to override." } -\version "2.14.0" + \layout { ragged-right = ##t } diff --git a/input/regression/glissando-skip.ly b/input/regression/glissando-skip.ly new file mode 100644 index 0000000000..be8ce1515b --- /dev/null +++ b/input/regression/glissando-skip.ly @@ -0,0 +1,12 @@ +\version "2.16.0" + +\header { + texidoc = "@code{NoteColumn} grobs can be skipped over by glissandi. +" +} + +\relative c' { + a2 \glissando + \once \override NoteColumn #'glissando-skip = ##t + f''4 d, +} diff --git a/input/regression/glissando.ly b/input/regression/glissando.ly index 4b352ebe58..057b8d3c4e 100644 --- a/input/regression/glissando.ly +++ b/input/regression/glissando.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/grace-auto-beam.ly b/input/regression/grace-auto-beam.ly index c22fc5eb09..352608a1ff 100644 --- a/input/regression/grace-auto-beam.ly +++ b/input/regression/grace-auto-beam.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The autobeamer is not confused by grace notes." diff --git a/input/regression/grace-bar-line.ly b/input/regression/grace-bar-line.ly index 50686c47f5..dbd2c32082 100644 --- a/input/regression/grace-bar-line.ly +++ b/input/regression/grace-bar-line.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Bar line should come before the grace note." } diff --git a/input/regression/grace-bar-number.ly b/input/regression/grace-bar-number.ly index f557eadc55..1f54387c68 100644 --- a/input/regression/grace-bar-number.ly +++ b/input/regression/grace-bar-number.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Grace notes do tricky things with timing. If a measure diff --git a/input/regression/grace-beam.ly b/input/regression/grace-beam.ly index 3d97e210d8..0aa75547f8 100644 --- a/input/regression/grace-beam.ly +++ b/input/regression/grace-beam.ly @@ -9,7 +9,7 @@ Unbeamed grace notes are not put into normal beams. \layout { ragged-right= ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { c4 d8[ \grace { e32[ d c d] } e8] diff --git a/input/regression/grace-direction-polyphony.ly b/input/regression/grace-direction-polyphony.ly index 965803eb67..49788a6062 100644 --- a/input/regression/grace-direction-polyphony.ly +++ b/input/regression/grace-direction-polyphony.ly @@ -4,7 +4,7 @@ finishing the grace section." } -\version "2.14.0" +\version "2.16.0" \relative c''' { \voiceOne diff --git a/input/regression/grace-end-2.ly b/input/regression/grace-end-2.ly index aa94183bae..6b50be23e2 100644 --- a/input/regression/grace-end-2.ly +++ b/input/regression/grace-end-2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) diff --git a/input/regression/grace-end.ly b/input/regression/grace-end.ly index 9beaad1ee1..9f9551e656 100644 --- a/input/regression/grace-end.ly +++ b/input/regression/grace-end.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) diff --git a/input/regression/grace-nest1.ly b/input/regression/grace-nest1.ly index 887d63815c..27b629d7c6 100644 --- a/input/regression/grace-nest1.ly +++ b/input/regression/grace-nest1.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Grace code should not be confused by nested sequential music containing grace notes; practically speaking, this means that the end-bar and measure bar coincide in this example." diff --git a/input/regression/grace-nest2.ly b/input/regression/grace-nest2.ly index 855d5bdfef..cd79ef57c4 100644 --- a/input/regression/grace-nest2.ly +++ b/input/regression/grace-nest2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Grace code should not be confused by nested sequential music containing grace notes; practically speaking, this means that the end-bar and measure bar coincide in this example." diff --git a/input/regression/grace-nest3.ly b/input/regression/grace-nest3.ly index 713489865e..0425408c48 100644 --- a/input/regression/grace-nest3.ly +++ b/input/regression/grace-nest3.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In nested syntax, graces are still properly handled." } diff --git a/input/regression/grace-nest4.ly b/input/regression/grace-nest4.ly index 862b748d44..1da4582567 100644 --- a/input/regression/grace-nest4.ly +++ b/input/regression/grace-nest4.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Also in the nested syntax here, grace notes appear rightly." } diff --git a/input/regression/grace-nest5.ly b/input/regression/grace-nest5.ly index fe501f9d26..2e4e221296 100644 --- a/input/regression/grace-nest5.ly +++ b/input/regression/grace-nest5.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Graces notes may have the same duration as the main note." } diff --git a/input/regression/grace-part-combine.ly b/input/regression/grace-part-combine.ly index 515c40b4e7..2862435d05 100644 --- a/input/regression/grace-part-combine.ly +++ b/input/regression/grace-part-combine.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Grace notes may be put in a @code{partcombine}r." } diff --git a/input/regression/grace-partial.ly b/input/regression/grace-partial.ly index 527b92b506..60f626e6c0 100644 --- a/input/regression/grace-partial.ly +++ b/input/regression/grace-partial.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/grace-slashed-no-slur.ly b/input/regression/grace-slashed-no-slur.ly new file mode 100644 index 0000000000..17456f0fb6 --- /dev/null +++ b/input/regression/grace-slashed-no-slur.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\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/grace-staff-length.ly b/input/regression/grace-staff-length.ly index 61be9136a8..71faa6c4c7 100644 --- a/input/regression/grace-staff-length.ly +++ b/input/regression/grace-staff-length.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Stripped version of trip.ly. Staves should be of correct length." } diff --git a/input/regression/grace-start.ly b/input/regression/grace-start.ly index 05165c719e..5e295964cb 100644 --- a/input/regression/grace-start.ly +++ b/input/regression/grace-start.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Pieces may begin with grace notes." } diff --git a/input/regression/grace-stem-length.ly b/input/regression/grace-stem-length.ly index 30cb14feef..45eb1b4c44 100644 --- a/input/regression/grace-stem-length.ly +++ b/input/regression/grace-stem-length.ly @@ -3,7 +3,7 @@ normal notes, if possible. They should never be longer, even if that would lead to beam quanting problems." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/grace-stems.ly b/input/regression/grace-stems.ly index 6bad83c68e..c45799d0eb 100644 --- a/input/regression/grace-stems.ly +++ b/input/regression/grace-stems.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Here @code{startGraceMusic} should set @code{no-stem-extend} to true; the two grace beams should be the same here. diff --git a/input/regression/grace-sync.ly b/input/regression/grace-sync.ly index 99cfc7e5ea..9032eb8c2e 100644 --- a/input/regression/grace-sync.ly +++ b/input/regression/grace-sync.ly @@ -1,6 +1,6 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Grace notes in different voices/staves are synchronized." + texidoc = "Grace notes in different voices/@/staves are synchronized." } \layout { ragged-right = ##t} diff --git a/input/regression/grace-types.ly b/input/regression/grace-types.ly index 2bf342676a..f645001872 100644 --- a/input/regression/grace-types.ly +++ b/input/regression/grace-types.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "There are three different kinds of grace types: the base grace switches to smaller type, the appoggiatura inserts also a slur, and the diff --git a/input/regression/grace-unfold-repeat.ly b/input/regression/grace-unfold-repeat.ly index 354add8d8c..09f1983a0e 100644 --- a/input/regression/grace-unfold-repeat.ly +++ b/input/regression/grace-unfold-repeat.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When grace notes are entered with unfolded repeats, line breaks take place before grace notes. diff --git a/input/regression/grace-volta-repeat-2.ly b/input/regression/grace-volta-repeat-2.ly index 2b37691c61..113de90be8 100644 --- a/input/regression/grace-volta-repeat-2.ly +++ b/input/regression/grace-volta-repeat-2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/grace-volta-repeat.ly b/input/regression/grace-volta-repeat.ly index 9808c736fa..b347600cb3 100644 --- a/input/regression/grace-volta-repeat.ly +++ b/input/regression/grace-volta-repeat.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/grace.ly b/input/regression/grace.ly index 347058ab77..820386f114 100644 --- a/input/regression/grace.ly +++ b/input/regression/grace.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/graphviz.ly b/input/regression/graphviz.ly index 42fab60ad3..d80c62f3dd 100644 --- a/input/regression/graphviz.ly +++ b/input/regression/graphviz.ly @@ -3,17 +3,16 @@ } -\version "2.14.0" +\version "2.16.0" \include "graphviz-init.ly" #(whitelist-grob 'NoteHead) #(whitelist-grob 'Stem) -#(whitelist-grob "NoteHead") -#(whitelist-grob "Stem") +#(whitelist-grob 'Flag) -#(map whitelist-symbol '(stencil style duration-log - stem-attachment end-position staff-position - glyph-name direction)) +#(for-each whitelist-symbol '(stencil style duration-log + stem-attachment end-position staff-position + glyph-name direction)) \book { \score { diff --git a/input/regression/grid-lines.ly b/input/regression/grid-lines.ly index 57d1eaf372..4ee9efe7cf 100644 --- a/input/regression/grid-lines.ly +++ b/input/regression/grid-lines.ly @@ -5,7 +5,7 @@ staves synchronized with the notes." } -\version "2.14.0" +\version "2.16.0" skips = { @@ -74,6 +74,7 @@ skips = \override NoteHead #'transparent = ##t \override NoteHead #'no-ledgers = ##t \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Beam #'transparent = ##t << \skips diff --git a/input/regression/grob-indirect-tweak.ly b/input/regression/grob-indirect-tweak.ly new file mode 100644 index 0000000000..c53bc4b143 --- /dev/null +++ b/input/regression/grob-indirect-tweak.ly @@ -0,0 +1,21 @@ +\header +{ + + texidoc = "With the full form of the @code{\\tweak} function, +individual grobs that are indirectly caused by events may be tuned." + +} + +\version "2.16.0" +\paper { + ragged-right = ##t +} + +\relative c'' +{ + < + \tweak Accidental #'color #red cis4 + \tweak Accidental #'color #green es + g + >4 +} diff --git a/input/regression/grob-tweak.ly b/input/regression/grob-tweak.ly index 9430633ce0..93f55d7ee7 100644 --- a/input/regression/grob-tweak.ly +++ b/input/regression/grob-tweak.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/hairpin-arpeggio.ly b/input/regression/hairpin-arpeggio.ly new file mode 100644 index 0000000000..dbdb734fdb --- /dev/null +++ b/input/regression/hairpin-arpeggio.ly @@ -0,0 +1,14 @@ +\version "2.16.0" + +\header { + texidoc = "Hairpins in @code{Dynamics} contexts do not collide with +arpeggios. +" +} + +\new PianoStaff<< + \set PianoStaff.connectArpeggios = ##t + { c''\arpeggio c'' } + \new Dynamics { s\< s\! } + { c'\arpeggio c'' } +>> diff --git a/input/regression/hairpin-barline-break.ly b/input/regression/hairpin-barline-break.ly index 4d442a3655..3a94a5292b 100644 --- a/input/regression/hairpin-barline-break.ly +++ b/input/regression/hairpin-barline-break.ly @@ -5,7 +5,7 @@ do not print that ending. But on the previous line, this hairpin should not be left open, and should end at the bar line. " } -\version "2.14.0" +\version "2.16.0" \relative c' { c1\> diff --git a/input/regression/hairpin-circled.ly b/input/regression/hairpin-circled.ly index f50d02653f..bfda3413cc 100644 --- a/input/regression/hairpin-circled.ly +++ b/input/regression/hairpin-circled.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/hairpin-dashed.ly b/input/regression/hairpin-dashed.ly index df85da0ace..ac6c007e94 100644 --- a/input/regression/hairpin-dashed.ly +++ b/input/regression/hairpin-dashed.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="Hairpin crescendi may be dashed. " diff --git a/input/regression/hairpin-ending.ly b/input/regression/hairpin-ending.ly index 176d36e252..38508a1167 100644 --- a/input/regression/hairpin-ending.ly +++ b/input/regression/hairpin-ending.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/hairpin-neighboring-span-dynamics.ly b/input/regression/hairpin-neighboring-span-dynamics.ly index 69fe8958a7..84392607e1 100644 --- a/input/regression/hairpin-neighboring-span-dynamics.ly +++ b/input/regression/hairpin-neighboring-span-dynamics.ly @@ -1,7 +1,7 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Bound padding for hairpins also works with neighboring + texidoc = "Bound padding for hairpins also applies before following @code{DynamicTextSpanner} grobs. In this case, @code{bound-padding} is not scaled down. " diff --git a/input/regression/hairpin-span-bar.ly b/input/regression/hairpin-span-bar.ly new file mode 100644 index 0000000000..cacea3ac2e --- /dev/null +++ b/input/regression/hairpin-span-bar.ly @@ -0,0 +1,30 @@ +\version "2.16.0" + +\header { + texidoc = "@code{Hairpin} grobs do not collide with @code{SpanBar} grobs. +@code{Hairpin} grobs should, however, go to the end of a line when the +@code{SpanBar} is not present. +" +} + +\score { + << + \new GrandStaff << + \new Staff \relative c'' { a\< a a a \break a a a a \break a a a a\! } + \new Staff \relative c'' { a4 a a a s1 a4 a a a } + >> + \new GrandStaff << + \new Staff \relative c'' { a^\< a a a a a a a a a a a\! } + \new Staff \relative c'' { \repeat unfold 12 a4 } + >> + \new GrandStaff << + \new Staff \relative c'' { a4 a a a s1 a4 a a a } + \new Staff \relative c'' { a^\< a a a a a a a a a a a\! } + >> + >> + \layout { + \context { + \RemoveEmptyStaffContext + } + } +} \ No newline at end of file diff --git a/input/regression/hairpin-to-barline-mark.ly b/input/regression/hairpin-to-barline-mark.ly index 808e68515a..c5f600a7dd 100644 --- a/input/regression/hairpin-to-barline-mark.ly +++ b/input/regression/hairpin-to-barline-mark.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/hairpin-to-barline.ly b/input/regression/hairpin-to-barline.ly index 00d6c648ae..2bc3a9bec8 100644 --- a/input/regression/hairpin-to-barline.ly +++ b/input/regression/hairpin-to-barline.ly @@ -5,7 +5,7 @@ should end at that bar line. " } -\version "2.14.0" +\version "2.16.0" \relative c'' { \override Hairpin #'bound-padding = #1.0 diff --git a/input/regression/hairpin-to-rest.ly b/input/regression/hairpin-to-rest.ly index 53f3db049e..0022f96130 100644 --- a/input/regression/hairpin-to-rest.ly +++ b/input/regression/hairpin-to-rest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Hairpins end at the left edge of a rest." } diff --git a/input/regression/hara-kiri-alive-with.ly b/input/regression/hara-kiri-alive-with.ly index 770f9e9842..f8dc4d921b 100644 --- a/input/regression/hara-kiri-alive-with.ly +++ b/input/regression/hara-kiri-alive-with.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Staves in a PianoStaff remain alive as long as any of diff --git a/input/regression/hara-kiri-drumstaff.ly b/input/regression/hara-kiri-drumstaff.ly index 46adbc9a3b..63079128d0 100644 --- a/input/regression/hara-kiri-drumstaff.ly +++ b/input/regression/hara-kiri-drumstaff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/hara-kiri-keep-previous-settings.ly b/input/regression/hara-kiri-keep-previous-settings.ly index 0b6b66ef05..0f9dca6466 100644 --- a/input/regression/hara-kiri-keep-previous-settings.ly +++ b/input/regression/hara-kiri-keep-previous-settings.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/hara-kiri-percent-repeat.ly b/input/regression/hara-kiri-percent-repeat.ly index e0975e1e2c..e74d0af493 100644 --- a/input/regression/hara-kiri-percent-repeat.ly +++ b/input/regression/hara-kiri-percent-repeat.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Staves, RhythmicStaves, TabStaves and DrumStaves diff --git a/input/regression/hara-kiri-rhythmicstaff.ly b/input/regression/hara-kiri-rhythmicstaff.ly index 89d2e3416e..08a0a020ad 100644 --- a/input/regression/hara-kiri-rhythmicstaff.ly +++ b/input/regression/hara-kiri-rhythmicstaff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/hara-kiri-staff.ly b/input/regression/hara-kiri-staff.ly index b73e8bf8b3..5ffea4ad8d 100644 --- a/input/regression/hara-kiri-staff.ly +++ b/input/regression/hara-kiri-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/hara-kiri-stanza-number.ly b/input/regression/hara-kiri-stanza-number.ly index 6648e1d18f..66d2bae701 100644 --- a/input/regression/hara-kiri-stanza-number.ly +++ b/input/regression/hara-kiri-stanza-number.ly @@ -11,7 +11,7 @@ lines." ragged-right = ##T } -\version "2.14.0" +\version "2.16.0" << \new Voice = melody \relative c'{ diff --git a/input/regression/hara-kiri-tabstaff.ly b/input/regression/hara-kiri-tabstaff.ly index 8f251b3c99..5e2a013cea 100644 --- a/input/regression/hara-kiri-tabstaff.ly +++ b/input/regression/hara-kiri-tabstaff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/harp-pedals-sanity-checks.ly b/input/regression/harp-pedals-sanity-checks.ly index 63270dfb4a..1482e24579 100644 --- a/input/regression/harp-pedals-sanity-checks.ly +++ b/input/regression/harp-pedals-sanity-checks.ly @@ -1,6 +1,11 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Harp pedal diagram contains dividers at positions ~a. Normally, there is only one divider after the third pedal.") '(1 3 5)) +#(ly:expect-warning (_ "Harp pedal diagram contains dividers at positions ~a. Normally, there is only one divider after the third pedal.") '(4)) +#(ly:expect-warning (_ "Harp pedal diagram contains ~a pedals rather than the usual 7.") 5) +#(ly:expect-warning (_ "Harp pedal diagram does not contain a divider (usually after third pedal).")) + \header { texidoc = "The harp-pedal markup function does some sanity checks. All diff --git a/input/regression/harp-pedals-tweaking.ly b/input/regression/harp-pedals-tweaking.ly index 6d28c5d5ad..3a2f3af762 100644 --- a/input/regression/harp-pedals-tweaking.ly +++ b/input/regression/harp-pedals-tweaking.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Harp pedals can be tweaked through the size, thickness and diff --git a/input/regression/harp-pedals.ly b/input/regression/harp-pedals.ly index e7e1c1c7d6..71e889c0a6 100644 --- a/input/regression/harp-pedals.ly +++ b/input/regression/harp-pedals.ly @@ -1,6 +1,16 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Harp pedal diagram contains ~a pedals rather than the usual 7.") 0) +#(ly:expect-warning (_ "Harp pedal diagram does not contain a divider (usually after third pedal).")) +#(ly:expect-warning (_ "Harp pedal diagram contains ~a pedals rather than the usual 7.") 1) +#(ly:expect-warning (_ "Harp pedal diagram does not contain a divider (usually after third pedal).")) +#(ly:expect-warning (_ "Unhandled entry in harp-pedal: ~a" ) "a") +#(ly:expect-warning (_ "Unhandled entry in harp-pedal: ~a" ) "s") +#(ly:expect-warning (_ "Unhandled entry in harp-pedal: ~a" ) "d") +#(ly:expect-warning (_ "Unhandled entry in harp-pedal: ~a" ) "f") +#(ly:expect-warning (_ "Unhandled entry in harp-pedal: ~a" ) "x") + \header { texidoc = "Basic harp diagram functionality, including circled pedal boxes. diff --git a/input/regression/header-book-multiple.ly b/input/regression/header-book-multiple.ly new file mode 100644 index 0000000000..c0234de498 --- /dev/null +++ b/input/regression/header-book-multiple.ly @@ -0,0 +1,35 @@ +\version "2.16.0" + +\header { + texidoc=" +A second book-level header block and headers nested in bookpart and score should not clear values from the first header block. This score should show composer, piece, subtitle and title." +} + +\book { + \header { + title = "Title incorrect (to be superseded at book level)" + subtitle = "Subtitle incorrect (to be superseded in bookpart)" + composer = "Composer correct (set in book)" + piece = "Piece incorrect (to be superseded in score)" + } + % This should replace title without affecting other fields + \header { + title = "Title correct (superseded at book level)" + } + \bookpart { + % This should replace subtitle without affecting other fields + \header { + subtitle = "Subtitle correct (superseded in bookpart)" + } + \markup \vspace #2 + \markup { \bold Note: title, subtitle, piece, and composer expected. } + \markup \vspace #2 + \score { + \new Staff { c'1 } + \header { + % This should replace piece without affecting other fields + piece = "Piece correct (superseded in score)" + } + } + } +} diff --git a/input/regression/header-book-multiplescores.ly b/input/regression/header-book-multiplescores.ly new file mode 100644 index 0000000000..3e33d1ae2e --- /dev/null +++ b/input/regression/header-book-multiplescores.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header { + texidoc=" +Changing the header fields in a book or a bookpart shall not have any effect on the global default values. +" +} + +\markup \vspace #2 +\markup { \bold Note: expect only title. } +\markup \vspace #2 + +\header { + title = "Title correct (set at top level)" +} +\score { + \relative c' { c1 } +} + + +\book { + % This should NOT set a global subtitle for the first score above: + \header { + subtitle = "Subtitle (set at book level)" + } + \markup \vspace #2 + \markup { \bold Note: expect title and subtitle. } + \markup \vspace #2 + %% Do we have a title, and is the subtitle set? + \score { + \new Staff { c'1 } + } +} diff --git a/input/regression/header-bookpart-multiple.ly b/input/regression/header-bookpart-multiple.ly new file mode 100644 index 0000000000..e26d0dc90b --- /dev/null +++ b/input/regression/header-bookpart-multiple.ly @@ -0,0 +1,30 @@ +\version "2.16.0" + +\header { + texidoc=" +A second bookpart-level header block shall retain previously set values from a first header block at the same or higher levels unless overriden. +" +} + +\header { composer = "Composer correct (set at top level)" } +\book { + \header { + title = "Title correct (set in book)" + subtitle = "Subtitle incorrect (to be superseded in bookpart)" + } + \bookpart { + \header { + subtitle = "Subtitle correct (superseded in bookpart)" + piece = "Piece incorrect (to be superseded at bookpart level)" + } + \header { + piece = "Piece correct (superseded at bookpart level)" + } + \markup \vspace #2 + \markup { \bold Note: expect title, subtitle, piece and composer. } + \markup \vspace #2 + \score { + \new Staff { c'4 } + } + } +} diff --git a/input/regression/header-cyclic-reference.ly b/input/regression/header-cyclic-reference.ly new file mode 100644 index 0000000000..765f57091d --- /dev/null +++ b/input/regression/header-cyclic-reference.ly @@ -0,0 +1,17 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Recursive definition of property ~a detected!") 'header:title) +#(ly:expect-warning (_ "Recursive definition of property ~a detected!") 'header:composer) + +\header { + texidoc = "Cyclic references in header fields should cause a warning, but +not crash LilyPond with an endless loop" + + title = \markup {Cyclic reference to \fromproperty #'header:title } + + composer = \markup {Cyclic reference to \fromproperty #'header:temp } + temp = \markup {Cyclic reference to \fromproperty #'header:composer } +} +\score { + { c' d' e' f' } +} diff --git a/input/regression/header-score-multiple.ly b/input/regression/header-score-multiple.ly new file mode 100644 index 0000000000..168aca9519 --- /dev/null +++ b/input/regression/header-score-multiple.ly @@ -0,0 +1,22 @@ +\version "2.16.0" +\header { + texidoc=" +A second score-level header block shall not entirely replace a first header block, but only update changed variables. +" +} + +\markup \vspace #3 +\markup { \bold Note: expect piece and opus. } +\markup \vspace #3 + +\score { + \new Staff { c'1 } + \header { + piece = "Piece correct (set in score)" + opus = "Opus incorrect (to be superseded at score level)" + } + \header { + % This should NOT overwrite the piece from above! + opus = "Opus correct (superseded at score level)" + } +} diff --git a/input/regression/header-toplevel-multiple.ly b/input/regression/header-toplevel-multiple.ly new file mode 100644 index 0000000000..52f5d96ab5 --- /dev/null +++ b/input/regression/header-toplevel-multiple.ly @@ -0,0 +1,19 @@ +\version "2.16.0" +\header { + texidoc=" +A second top-level header block shall not entirely replace a first header block, but only changed variables. +" + piece = "Piece correct (set at top level)" + title = "Title incorrect (to be superseded at top level)" +} +\header { + % This should NOT overwrite the piece from above! + title = "Title correct (superseded at top level)" +} +\markup \vspace #3 +\markup { \bold Note: expect title and piece. } +\markup \vspace #3 + +\score { + \new Staff { c'4 } +} diff --git a/input/regression/horizontal-bracket-break.ly b/input/regression/horizontal-bracket-break.ly index 17d2d7b718..f3e3f4ce70 100644 --- a/input/regression/horizontal-bracket-break.ly +++ b/input/regression/horizontal-bracket-break.ly @@ -2,7 +2,7 @@ texidoc = "Horizontal brackets connect over line breaks." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \new Voice \with { diff --git a/input/regression/horizontal-bracket-tweak.ly b/input/regression/horizontal-bracket-tweak.ly index 4a7b9a9d3c..1ce625fe6f 100644 --- a/input/regression/horizontal-bracket-tweak.ly +++ b/input/regression/horizontal-bracket-tweak.ly @@ -1,4 +1,4 @@ -\version "2.14.2" +\version "2.16.0" \header { texidoc = "Horizontal brackets are created with the correct event-cause, ensuring diff --git a/input/regression/horizontal-bracket.ly b/input/regression/horizontal-bracket.ly index bfa8c5da61..73262e1a77 100644 --- a/input/regression/horizontal-bracket.ly +++ b/input/regression/horizontal-bracket.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/id.ly b/input/regression/id.ly new file mode 100644 index 0000000000..e90f11d3c6 --- /dev/null +++ b/input/regression/id.ly @@ -0,0 +1,9 @@ +\version "2.16.0" + +\header { + texidoc = "Shows the id property of a grob being set. This should have +no effect in the PS backend. +" +} + +{ \override NoteHead #'id = #"foo" c } diff --git a/input/regression/identifier-following-chordmode.ly b/input/regression/identifier-following-chordmode.ly index bec19ea680..7269e91cb4 100644 --- a/input/regression/identifier-following-chordmode.ly +++ b/input/regression/identifier-following-chordmode.ly @@ -7,12 +7,12 @@ modifier." } -\version "2.14.0" +\version "2.16.0" myDisplayMusic = #(define-music-function (parser location music) (ly:music?) - (display-scheme-music music) + (display-scheme-music music (current-error-port)) (make-music 'SequentialMusic 'void #t)) \myDisplayMusic \chordmode { c } diff --git a/input/regression/identifiers.ly b/input/regression/identifiers.ly index d77b50580f..1db60350ff 100644 --- a/input/regression/identifiers.ly +++ b/input/regression/identifiers.ly @@ -2,7 +2,7 @@ \header { texidoc = "test identifiers." } -\version "2.14.0" +\version "2.16.0" num = #3 mus = { c'4 } diff --git a/input/regression/in-note.ly b/input/regression/in-note.ly new file mode 100644 index 0000000000..6963f99477 --- /dev/null +++ b/input/regression/in-note.ly @@ -0,0 +1,21 @@ +\version "2.16.0" + +\header { + texidoc = "LilyPond does in-notes. +" +} + +#(set-default-paper-size "a6") +\book { + \relative c' { + \repeat unfold 5 { + \once \override FootnoteItem #'footnote = ##f + \footnote + "" #'(0 . 0) #'NoteHead + \markup { \box \fill-line { "this is a test" } } \default + \repeat unfold 5 { a\< b c d\! } + \footnote #'(-1 . 1) #'NoteHead "foobar" \default + \repeat unfold 5 { a\< b c d\! } + } + } +} diff --git a/input/regression/incipit.ly b/input/regression/incipit.ly index ad25f3a7cf..7e8ea62a77 100644 --- a/input/regression/incipit.ly +++ b/input/regression/incipit.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Incipits can be printed using an @code{InstrumentName} @@ -6,14 +6,15 @@ grob." } %% to prevent warnings/programming errors: -#(set-object-property! 'music 'backend-type? ly:music?) -#(set-object-property! 'music 'backend-doc "Incipit music") -#(ly:add-interface 'incipit-interface "An incipit." '(music)) -#(let* ((instrument-def (assoc 'InstrumentName all-grob-descriptions)) - (meta-def (assoc 'meta (cdr instrument-def))) - (interfaces-def (assoc 'interfaces (cdr meta-def))) - (interfaces (cdr interfaces-def))) - (set-cdr! interfaces-def (cons 'incipit-interface interfaces))) +#(begin + (set-object-property! 'music 'backend-type? ly:music?) + (set-object-property! 'music 'backend-doc "Incipit music") + (ly:add-interface 'incipit-interface "An incipit." '(music)) + (let* ((instrument-def (assoc 'InstrumentName all-grob-descriptions)) + (meta-def (assoc 'meta (cdr instrument-def))) + (interfaces-def (assoc 'interfaces (cdr meta-def))) + (interfaces (cdr interfaces-def))) + (set-cdr! interfaces-def (cons 'incipit-interface interfaces)))) \score { \new Staff { @@ -59,4 +60,4 @@ grob." indent = 5\cm incipit-width = 3\cm } -} \ No newline at end of file +} diff --git a/input/regression/include-string.ly b/input/regression/include-string.ly index 5c88e94804..a5f772a44e 100644 --- a/input/regression/include-string.ly +++ b/input/regression/include-string.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@code{ly:parser-include-string} should include the current diff --git a/input/regression/incompatible-stem-warning.ly b/input/regression/incompatible-stem-warning.ly index 287c67403d..7115741b1a 100644 --- a/input/regression/incompatible-stem-warning.ly +++ b/input/regression/incompatible-stem-warning.ly @@ -1,4 +1,22 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 1) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 8) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 4 1) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 1) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 4) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 1) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 4) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "adding note head to incompatible stem (type = %d/%d)") 1 8) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "maybe input should specify polyphonic voices")) + \header { diff --git a/input/regression/instrument-cue-name.ly b/input/regression/instrument-cue-name.ly index adef665099..e7454346fb 100644 --- a/input/regression/instrument-cue-name.ly +++ b/input/regression/instrument-cue-name.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/instrument-name-dynamic.ly b/input/regression/instrument-name-dynamic.ly index 358c050b01..15f3f43e60 100644 --- a/input/regression/instrument-name-dynamic.ly +++ b/input/regression/instrument-name-dynamic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/instrument-name-groups.ly b/input/regression/instrument-name-groups.ly index 755d5df25d..fe1d7e5b6b 100644 --- a/input/regression/instrument-name-groups.ly +++ b/input/regression/instrument-name-groups.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" Instrument names can also be attached to staff groups. diff --git a/input/regression/instrument-name-hara-kiri.ly b/input/regression/instrument-name-hara-kiri.ly index f402271b2f..58de023f9e 100644 --- a/input/regression/instrument-name-hara-kiri.ly +++ b/input/regression/instrument-name-hara-kiri.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Instrument names are removed when the staves are diff --git a/input/regression/instrument-name-markup.ly b/input/regression/instrument-name-markup.ly index 89da9963fc..124e4e33c9 100644 --- a/input/regression/instrument-name-markup.ly +++ b/input/regression/instrument-name-markup.ly @@ -9,7 +9,7 @@ including alterations. " \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" textFlat = \markup {\smaller \flat} diff --git a/input/regression/instrument-name-partial.ly b/input/regression/instrument-name-partial.ly index 595fb66b15..0ce9495f9e 100644 --- a/input/regression/instrument-name-partial.ly +++ b/input/regression/instrument-name-partial.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Instrument names are also printed on partial starting measures." } diff --git a/input/regression/instrument-name-pedal-lyrics.ly b/input/regression/instrument-name-pedal-lyrics.ly new file mode 100644 index 0000000000..860a6b129f --- /dev/null +++ b/input/regression/instrument-name-pedal-lyrics.ly @@ -0,0 +1,40 @@ +\version "2.16.0" + +\header { + texidoc = "@code{Dynamics} and @code{Lyrics} lines below +a @code{PianoStaff} do not affect the placement of the instrument name." +} + +upper = \relative c'' { + a4 b c d +} + +lower = \relative c { + \clef bass + a2 c +} + +\score { +<< + \new PianoStaff + << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "Staff_pfUpper" << \upper >> + \new Staff = "Staff_pfLower" << \lower >> + \new Dynamics { s2\sustainOn s\sustainOff } + >> + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "Staff_pfUpper" << \upper >> + \new Staff = "Staff_pfLower" << \lower >> + \new Lyrics \lyricmode { la2 la2 } + >> + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "Staff_pfUpper" << \upper >> + \new Staff = "Staff_pfLower" << \lower >> + >> +>> +} diff --git a/input/regression/instrument-name-volta.ly b/input/regression/instrument-name-volta.ly index 22496702ec..9110d07fa4 100644 --- a/input/regression/instrument-name-volta.ly +++ b/input/regression/instrument-name-volta.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Moving the @code{Volta_engraver} to the @code{Staff} diff --git a/input/regression/instrument-name-x-align.ly b/input/regression/instrument-name-x-align.ly index 7a03f5f345..cbceec3d99 100644 --- a/input/regression/instrument-name-x-align.ly +++ b/input/regression/instrument-name-x-align.ly @@ -8,7 +8,7 @@ the following systems, respectively." } -\version "2.14.0" +\version "2.16.0" \paper { left-margin = 3\cm } \score { \new StaffGroup << diff --git a/input/regression/instrument-name.ly b/input/regression/instrument-name.ly index 7f31123fc9..0ecb8be567 100644 --- a/input/regression/instrument-name.ly +++ b/input/regression/instrument-name.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Staff margins are also markings attached to barlines. They should be diff --git a/input/regression/instrument-switch-invalid-warning.ly b/input/regression/instrument-switch-invalid-warning.ly new file mode 100644 index 0000000000..7a99c9d474 --- /dev/null +++ b/input/regression/instrument-switch-invalid-warning.ly @@ -0,0 +1,15 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "No such instrument: ~a") "bassClar") + +\header { + texidoc = "The @code{switchInstrument} music function prints a warning if +the given instrument definition does not exist." +} + +\relative +{ + c4 + \instrumentSwitch "bassClar" + c +} diff --git a/input/regression/instrument-switch.ly b/input/regression/instrument-switch.ly index a03a636d1a..2e0198591f 100644 --- a/input/regression/instrument-switch.ly +++ b/input/regression/instrument-switch.ly @@ -5,7 +5,7 @@ properties for an in staff instrument switch. " } -\version "2.14.0" +\version "2.16.0" \addInstrumentDefinition #"bassClar" #`((instrumentTransposition . ,(ly:make-pitch -1 6 FLAT)) (instrumentName . "bla") diff --git a/input/regression/invalid-engraver.ly b/input/regression/invalid-engraver.ly index 347c76471f..b83befbae2 100644 --- a/input/regression/invalid-engraver.ly +++ b/input/regression/invalid-engraver.ly @@ -1,6 +1,8 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "unknown translator: `%s'") "Rhythmic_column_engraver_foo") +#(ly:expect-warning (ly:translate-cpp-warning-scheme "cannot find: `%s'") "Rhythmic_column_engraver_foo") \header { texidoc = "Engravers which do not exist produce a warning." diff --git a/input/regression/key-clefs.ly b/input/regression/key-clefs.ly index 9f966fe4d9..44c499e277 100644 --- a/input/regression/key-clefs.ly +++ b/input/regression/key-clefs.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Each clef has its own accidental placing rules. "} diff --git a/input/regression/key-signature-cancellation.ly b/input/regression/key-signature-cancellation.ly index 6a62e5e1d2..520b7d0298 100644 --- a/input/regression/key-signature-cancellation.ly +++ b/input/regression/key-signature-cancellation.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/key-signature-left-edge.ly b/input/regression/key-signature-left-edge.ly index 5f8e646e7a..fd7fc1403e 100644 --- a/input/regression/key-signature-left-edge.ly +++ b/input/regression/key-signature-left-edge.ly @@ -5,7 +5,7 @@ proper padding > 0 to the start of the staff lines." } -\version "2.14.0" +\version "2.16.0" m = \relative c' { \key f \major c8 } diff --git a/input/regression/key-signature-padding.ly b/input/regression/key-signature-padding.ly index 6d23c9e375..4d2dbd66ab 100644 --- a/input/regression/key-signature-padding.ly +++ b/input/regression/key-signature-padding.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" { \override Staff.KeySignature #'padding-pairs diff --git a/input/regression/key-signature-scordatura-persist.ly b/input/regression/key-signature-scordatura-persist.ly index 96932d84c0..6a1e8ffd53 100644 --- a/input/regression/key-signature-scordatura-persist.ly +++ b/input/regression/key-signature-scordatura-persist.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When a custom key signature has entries which are diff --git a/input/regression/key-signature-scordatura.ly b/input/regression/key-signature-scordatura.ly index 4b63f973c1..fb51ebaf04 100644 --- a/input/regression/key-signature-scordatura.ly +++ b/input/regression/key-signature-scordatura.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "By setting @code{Staff.keySignature} directly, key signatures can be set invidually per pitch. diff --git a/input/regression/key-signature-space.ly b/input/regression/key-signature-space.ly index 28c113fc9a..28425c62e1 100644 --- a/input/regression/key-signature-space.ly +++ b/input/regression/key-signature-space.ly @@ -3,7 +3,7 @@ texidoc = "Key signatures get the required amount of horizontal space." } -\version "2.14.0" +\version "2.16.0" << \new Staff { \voiceOne diff --git a/input/regression/keys.ly b/input/regression/keys.ly index 5fca40bf7d..207f932095 100644 --- a/input/regression/keys.ly +++ b/input/regression/keys.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Key signatures may appear on key changes, even without a barline. diff --git a/input/regression/laissez-vibrer-arpeggio.ly b/input/regression/laissez-vibrer-arpeggio.ly index a063cc4658..f00a0066bf 100644 --- a/input/regression/laissez-vibrer-arpeggio.ly +++ b/input/regression/laissez-vibrer-arpeggio.ly @@ -5,7 +5,7 @@ l.v. ties should not collide with arpeggio indications. " } -\version "2.14.0" % regression: 2.10.33 and 2.8.8 are ok +\version "2.16.0" % regression: 2.10.33 and 2.8.8 are ok { \laissezVibrer \arpeggio diff --git a/input/regression/laissez-vibrer-chords.ly b/input/regression/laissez-vibrer-chords.ly new file mode 100644 index 0000000000..c756ec6630 --- /dev/null +++ b/input/regression/laissez-vibrer-chords.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\header { + texidoc = " +@code{\laissezVibrer} ties should also work on individual notes of a chord. +" } + +\relative c' { + 1 + 1 +} diff --git a/input/regression/laissez-vibrer-tie-beam.ly b/input/regression/laissez-vibrer-tie-beam.ly index a9565711c8..ab6295622e 100644 --- a/input/regression/laissez-vibrer-tie-beam.ly +++ b/input/regression/laissez-vibrer-tie-beam.ly @@ -5,7 +5,7 @@ premature beam slope calculation. " } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right=##t diff --git a/input/regression/laissez-vibrer-tie-head-direction.ly b/input/regression/laissez-vibrer-tie-head-direction.ly index e129578d34..9d28c006b1 100644 --- a/input/regression/laissez-vibrer-tie-head-direction.ly +++ b/input/regression/laissez-vibrer-tie-head-direction.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The 'head-direction of a LaissezVibrerTieColumn should diff --git a/input/regression/laissez-vibrer-ties.ly b/input/regression/laissez-vibrer-ties.ly index 8aa20f383a..a693c2109e 100644 --- a/input/regression/laissez-vibrer-ties.ly +++ b/input/regression/laissez-vibrer-ties.ly @@ -10,7 +10,7 @@ They have fixed size. Their formatting can be tuned with " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/landscape.ly b/input/regression/landscape.ly index 4c095efe6f..73f58967b8 100644 --- a/input/regression/landscape.ly +++ b/input/regression/landscape.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6" 'landscape) \header { texidoc = " Scores may be printed in landscape mode."} diff --git a/input/regression/layout-from.ly b/input/regression/layout-from.ly new file mode 100644 index 0000000000..05ca6d628b --- /dev/null +++ b/input/regression/layout-from.ly @@ -0,0 +1,19 @@ +\version "2.16.0" + +\header { + texidoc = " +Inside of output definitions like @code{\\layout} or @code{\\midi}, +music is harvested for layout definitions in order to turn them +into context modifications. +" +} + +\score { + \relative c' { cis cis cis cis } + \layout { + \accidentalStyle "dodecaphonic" + } + \midi { + \tempo 4 = 240 + } +} diff --git a/input/regression/ledger-line-minimum.ly b/input/regression/ledger-line-minimum.ly index cdbe1e6153..b5ba06a9c5 100644 --- a/input/regression/ledger-line-minimum.ly +++ b/input/regression/ledger-line-minimum.ly @@ -7,7 +7,7 @@ disappearing." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t} \relative c'' { \time 2/4 diff --git a/input/regression/ledger-line-shorten.ly b/input/regression/ledger-line-shorten.ly index 6f99a91626..7c688f8457 100644 --- a/input/regression/ledger-line-shorten.ly +++ b/input/regression/ledger-line-shorten.ly @@ -2,7 +2,7 @@ texidoc = "Ledger lines are shortened when they are very close. This ensures that ledger lines stay separate." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/ledger-lines-varying-staves.ly b/input/regression/ledger-lines-varying-staves.ly index e037de7f79..b36b52730d 100644 --- a/input/regression/ledger-lines-varying-staves.ly +++ b/input/regression/ledger-lines-varying-staves.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Ledger lines should appear at every other location for a variety of staves using both @code{line-count} and diff --git a/input/regression/les-nereides.ly b/input/regression/les-nereides.ly index fad2500f5b..ac44c5e3f3 100644 --- a/input/regression/les-nereides.ly +++ b/input/regression/les-nereides.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { composer = "ARTHUR GRAY" @@ -154,7 +154,7 @@ bass = \new Voice \relative c{ >> \grace { - \override Stem #'stroke-style = #"grace" + \override Flag #'stroke-style = #"grace" s8 s16 s s @@ -163,7 +163,7 @@ bass = \new Voice \relative c{ \clef bass 32(\sustainOff\sustainOn - \revert Stem #'stroke-style + \revert Flag #'stroke-style } 2) diff --git a/input/regression/ligature-bracket.ly b/input/regression/ligature-bracket.ly index 167f9f7943..667d7089a5 100644 --- a/input/regression/ligature-bracket.ly +++ b/input/regression/ligature-bracket.ly @@ -2,7 +2,7 @@ texidoc = "The ligature bracket right-end is not affected by other voices." } -\version "2.14.0" +\version "2.16.0" << \new Staff {\[b2 b\] | \[b b\] } \new Staff {b2 b | b4 b b b } diff --git a/input/regression/lily-in-scheme.ly b/input/regression/lily-in-scheme.ly index 15da5e6453..1232a90aac 100644 --- a/input/regression/lily-in-scheme.ly +++ b/input/regression/lily-in-scheme.ly @@ -12,21 +12,21 @@ the @code{TextScript} grob. } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } withPaddingA = #(define-music-function (parser location padding music) (number? ly:music?) - #{ \override TextScript #'padding = #$padding + #{ \override TextScript #'padding = #padding $music \revert TextScript #'padding #}) withPaddingB = #(define-music-function (parser location padding music) (number? ly:music?) - #{ \override TextScript #'padding = #$(* padding 2) + #{ \override TextScript #'padding = #(* padding 2) $music \revert TextScript #'padding #}) withPaddingC = #(define-music-function (parser location padding music) (number? ly:music?) - #{ \override TextScript #'padding = #(+ 1 $(* padding 2)) + #{ \override TextScript #'padding = #(+ 1 (* padding 2)) $music \revert TextScript #'padding #}) diff --git a/input/regression/lilypond-book/GNUmakefile b/input/regression/lilypond-book/GNUmakefile index a1e5bdc3b7..3f27361283 100644 --- a/input/regression/lilypond-book/GNUmakefile +++ b/input/regression/lilypond-book/GNUmakefile @@ -3,8 +3,44 @@ depth = ../../.. STEPMAKE_TEMPLATES=documentation texinfo LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc lilypond-book -COLLATED_FILES = $(OUT_FILES) - include $(depth)/make/stepmake.make TITLE=lilypond-book Test Suite + +SUBDIRS=include + +COLLATED_FILES = $(OUT_FILES) + +EXTRA_DIST_FILES = include.mxl +EXTRA_DIST_FILES += include.xml +EXTRA_DIST_FILES += $(call src-wildcard,*.ly) +EXTRA_DIST_FILES += $(call src-wildcard,*.ily) +EXTRA_DIST_FILES += $(call src-wildcard,*.tely) +EXTRA_DIST_FILES += $(call src-wildcard,*.itely) + +OUT_TEXI_FILES += ${TEXI_FILES:%.texi=$(outdir)/%.info} +OUT_TEXI_FILES += ${TEXI_FILES:%.texi=$(outdir)/%.pdf} +OUT_TEXINFO_FILES += ${TEXINFO_FILES:%.texinfo=$(outdir)/%.info} +OUT_TEXINFO_FILES += ${TEXINFO_FILES:%.texinfo=$(outdir)/%.pdf} +OUT_TELY_FILES += ${TELY_FILES:%.tely=$(outdir)/%.info} +OUT_TELY_FILES += ${TELY_FILES:%.tely=$(outdir)/%.pdf} + +XML_FILES = $(filter-out include%,$(call src-wildcard,*.xml)) + +local-test: $(OUT_FILES) + +$(outdir)/collated-files.list: $(OUT_FILES) + echo $(sort $(filter-out %.xml,$(OUT_FILES))) > $@ + +$(outdir)/suffix-texi.texi: suffix-texi.texi $(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_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $< + +# Due to automatic language detection the standard rule using the script +# extract_texi_filenames would create .es.xref-map for these files. The +# following rule is to circumvent this for the purpose of the build. For +# the regression tests the .xref-map files are empty and not used anyway. +$(XREF_MAPS_DIR)/texinfo-include-language-detection.xref-map $(XREF_MAPS_DIR)/texinfo-language-detection.xref-map: %: + touch $@ + +# Prevent parallel lilypond-book instances for this subdir +.NOTPARALLEL: diff --git a/input/regression/lilypond-book/html-musicxml-file-compressed.htmly b/input/regression/lilypond-book/html-musicxml-file-compressed.htmly new file mode 100644 index 0000000000..a839edd60e --- /dev/null +++ b/input/regression/lilypond-book/html-musicxml-file-compressed.htmly @@ -0,0 +1,6 @@ + + +Including a compressed MusicXML file: +include.mxl + + diff --git a/input/regression/lilypond-book/html-musicxml-file-options.htmly b/input/regression/lilypond-book/html-musicxml-file-options.htmly new file mode 100644 index 0000000000..6e05bbe3c8 --- /dev/null +++ b/input/regression/lilypond-book/html-musicxml-file-options.htmly @@ -0,0 +1,6 @@ + + +Including a MusicXML file: +include.xml + + diff --git a/input/regression/lilypond-book/html-musicxml-file.htmly b/input/regression/lilypond-book/html-musicxml-file.htmly new file mode 100644 index 0000000000..6f8d7e3657 --- /dev/null +++ b/input/regression/lilypond-book/html-musicxml-file.htmly @@ -0,0 +1,6 @@ + + +Including a MusicXML file: +include.xml + + diff --git a/input/regression/lilypond-book/html-newline-after-tag.html b/input/regression/lilypond-book/html-newline-after-tag.html index 2ad549cab8..1f5b82662e 100644 --- a/input/regression/lilypond-book/html-newline-after-tag.html +++ b/input/regression/lilypond-book/html-newline-after-tag.html @@ -1,6 +1,6 @@ -Lilypond fragment with newlines before the end tags. +A LilyPond fragment with newlines before the end tags. \key c \minor c4 es g2 diff --git a/input/regression/lilypond-book/html-space-after-tag.html b/input/regression/lilypond-book/html-space-after-tag.html index a0be117f61..50edb7da3f 100644 --- a/input/regression/lilypond-book/html-space-after-tag.html +++ b/input/regression/lilypond-book/html-space-after-tag.html @@ -1,6 +1,6 @@ -Lilypond fragment with spaces and tabs before the end tags. +A LilyPond fragment with spaces and tabs before the end tags. \key c \minor c4 es g2 diff --git a/input/regression/lilypond-book/html-version-newline.html b/input/regression/lilypond-book/html-version-newline.html index 8519705199..58bb007fe0 100644 --- a/input/regression/lilypond-book/html-version-newline.html +++ b/input/regression/lilypond-book/html-version-newline.html @@ -1,6 +1,6 @@ -Lilypond version: diff --git a/input/regression/lilypond-book/html-version.html b/input/regression/lilypond-book/html-version.html index 3fdc33272d..c4a58be45e 100644 --- a/input/regression/lilypond-book/html-version.html +++ b/input/regression/lilypond-book/html-version.html @@ -1,5 +1,5 @@ -Lilypond version: +LilyPond version: diff --git a/input/regression/lilypond-book/include.ly b/input/regression/lilypond-book/include.ly index 566a2a72b6..1e790908a6 100644 --- a/input/regression/lilypond-book/include.ly +++ b/input/regression/lilypond-book/include.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \score { \relative c'' { \key c \minor c4 es g2 } } diff --git a/input/regression/lilypond-book/include.mxl b/input/regression/lilypond-book/include.mxl new file mode 100644 index 0000000000000000000000000000000000000000..d7090944879500ac86e70ed9e46f6242e809cee1 GIT binary patch literal 28589 zcmaI6W2`Vd&@H-c+qP}nwr$({*|u%lwr$(C?fafD_uO-S-6qqtY1bsH$!gP?QIG}( zfdcqnE#sdZ`~M97-wqN06+l*0MUYlfPK;hv1rh)_0ghXI;ssYy)dK|J9QYhq;Xf?O zf4d<7RR6;=I(=9s{x^I5&(QvFtg*eFi=m~RsS}-tt9Lj2EB)_?ZD9p%V3zzq_h zY=5C1-y~li1Kb!Kny}02Kz3hBQy}Dv{pm%+xxTb^P3?G-hmBpY<0_Z#quOl3VR#|a zd{hNKUG%#%JjbvMpv&SZ@6|(P2vHz&PUHU;HCQ^vitE}zwdS0DF^mOs7M&a=PUwsp zYu5$7Gh^R?*oaAIrkRU?a*2tHrEv*%&)7GhRMD4c$a(<&A8JnRcARN|&B$#)006y^ z007wkQDb5-q!qTeb#O9ub~ZJkm34KtG}e%n`TzK}|943L%le1D!m-289!l?vT z=u!pGR#-kLa;zlmqr1I$~@py`*RM6%WDC9I2WC z0p?+{L=W9$!mS+X9Z)0-L>(apSHPxbGBYW$lF8S3n-J3wlBQUW@qSP}1}NI~Id5^_ zJSy|J=CCnM38x#!tBqKQ1uGeI@@85UTO4X)KJA=PLJLsaJu81(o=&P+@t{N<*MEoQ z*DzlHgdgBiVIAFNwt}%UeWkuBBuD+fNF}vP1UWqb7u5^mN~uow2a^OQw5WArFE&0L z%Pf!1R2t-FR&cQNxA&n&@_AL3Jrs z#}3P(34ROGw|r!lpe*sN;E=Am*|K97I7N+!q=dQcSBZ3TFNF` zDiW?*pf`aJt`iEKj2q6Btz^=I`XNfvgZmwCEKOqfhb0AS*?Dth6>9~uoma0rBVdah zR6AyVB4c)Lxj$92pD`?(E?P;|9>r13V1Rc*Z#7sJ&M`x%+D5n#qV6- z$O(UEAPe>Xj|eRN?AYCCBx*_f&ON}ZLBIjx?(Y6B>3+BC?Vi_k=X;iO*W*9IUS%b* z5|71tRtYFdM^7UKZ(vUf8_(9r=Ey>7Yg|&eU zC_?*!6B8T*V*?Z8;c1AAa})DiZJ@h!m4aS)uMyumYwof-Y!~cc-p9z3A9l|kAsp^E z9wc6!83hCQf%}=~-;ErjmC4LqaTs~RZW_CFSY5uaLbp8!LC!X+!?Dq7J7?90uTR69 zZ^y^^VrVH{1SMDJ>g8~vYgys)FoFUsN4iXBF|q1;M2b9ciPRT&!`m6_-oatU8DbGY z)9Ul6oYn^2h6|y?v+J~dD=`o(PFd#RNpZD^pTWoYF)!hC!i;l}iLskt)h|KZ0k;k( z0$0qDXBub%!D>Xm*IL~t>t{tpL>M?wQ1|j64r&MT?s8J+eOy{&0}d7VOy?FGX_Rs2 z7R#4(#{NW>R)f4Nfm!Fy3u3<(8obk_+g+1E_Xuob-a&vS)OMY50(OXJx)h{k7d{)2 zM@`u`+*5*5q^+v;NJj}-G|;4%dKy$lbcRA>j!aE;LI3F1FN=d_1E zjtlG~(1*Nxtthk;7F>UxtIAKLZitr~dOgheuZca`FiY_hsn}t<7;(gCldrM@X5o@a z@eK6ftpnl(+mvIS4ES+$$fV5VLcPP`ZzVgQ5K_^!_*9LBT)R3vZZa2^^s4cEIj~^q zV)%G_KW@m!^8Ve#dE*`^UQ~iZO6V%{L!AsFbke7~Nw1+ae8f$X3z6 z9MV6&$8|=AsK>B_(CrgRqrQZKy9+QqJGlDp5_E9g;~x5bC{4Fm1KwLxA2>Xk0(<;o zBKa&tJG0I%67$1Q7MT~mCSYK;5a3sk+daK}>(0EVw+Oj4dAhKJO16SN3 ziSpac(IFhvL&rkWl3#O#>SqW2QX{|>11f5}dj?;3A{k*PFT=D|=>r1^$_V0&*aQit zn!WwXkS`@qi>4b9)05nVdXiwZC-lW{3-j%|X~uAjU4!aX)-&gofE~mI|pSvbAJ4=7=R%HNT?H+PO*l#nD!LuI?AdP4o7_?nv0ORLOqmSrZ+H zi?iv3(_rf|g8c|{62(4oVSMvGPV-IclT}&sFTLT~ruxsq==Y37&8dkMX#6Sz1JEQI zX66~hRwsf5Lw|qZ^c|Zr{J|YbF-zSE;l6FsIvfB(Lwk#Z z%L2gv48r8+XYlnaw71xBAxgy6OBdFB<}^p}#6 zMnFz46k>epD=t^ykGHfCAfc!yX@TD{<2UdtE7k8}t3TmfRh!XAS2~M^(v6rt!hxl+5mX~nvvXrp0~=_%+BOGAKY;923=YnWZ54o;9Gn?gomv_oTro~>e01^^ zy?;Dj?^M03GMc5QAfW*`s05olKI7>{_J?Yr4$gl=eL-^XAq`~FY!&S1a zq{csTNKSz|z~B>A5;HR}H8(XP0%C4p?DLiIY8)6EoczDP$njywV~?NjJkjHKd7?nQ zBI5XyJU=KSzZY$SsXy!L@%PUU{>XQ2onK)QP=fO}h7te;gD=`f%5UcRfPeqNVW3TZ zaS_KMpiRDe#^I)Z?^yc%HLXBiaH9P{{r_bKuZy!%Y9Ufrtr^ssTbjtj8-3eqBCt6z z)U!9aHaCz1{h}TEuYJ(ZUv(Oq-R)DDRGR;FLP%cyD4GEIurRx@xX%AG1#(0PSl0+o z7o-uXp6=I|j(fS%Ezf9yL_Bxb`-}fYm*4LTA9-A>{|4W&2mWn(T$tAC-yFD}>#Wac zXjr&XdhdL->}LYf>lqwhmYACl7ytyBXJ%kv{+4ZByS!qs1&lRQ6N57&gApP?= zlQ&mHOHfrq`(!s)tZ!KSs%mohhW9zKXEXECZT0j0)BO4qDeLn&#rNy~1y9qr?X#I0 z_|E$ItAFbAhQ%g++T-|r%+l9CRqxdAeVU^FWn>~Fn95UkbBopgeS-eo;_y4@8#N~? z<=_1CzZLHHkCV6gTL}Ag3;O8W7w+!^>+yF_-m7f%s=HeB$F2g^$46y3&j>%))LakO z(EKMNfB-FVwf58(0gU)`C3R+Sf5myAPJMmF+fvh>kP&ggf7$2t3Hl=n10C;SYGX!V zU~Ba8`R}1qs)sIsN(8440JCXLbZ+yQUHyB;nP(OZll>b7a=bUX7#>aUMY9fQXO<=ZRmv?EkfoJ-bJ!Qk`E!_xHR zOc1MdM(CWAvw{Kw4>nIWabVXcaGHkqPU^9okLhZX%Ut%foY+>u8LH9h&_e6<090t( zMADP5ENRp1&&nGn9y-3ZgRHvVjF`RoNKD%4PUF|%rd5ZFhrD;q`=%(`dtG%Z8h@Gk z%w9txE9c^>e=RWiQ$fmV7XyWn0vUno5@mh zJwp>yhs_<~Swqr}(?gD5tE8~5u_DD$_}Qw(*s?KsX?@hnQ~TTqY{#s#Z?!B9f7`U9?G+`u z%tHH)B$=mNcexVO-c%hpegc*NHheVr?n!CB^_Nl;iS=PJOL{fE-_lq{)ujaoSMV?^ z6{Vo}gRy?FhG*8He)BY38m!pb%K_SSy#`wy7?(W_>O`H3WMFzRJ}narN#7Rrh)At! z9n7qqhh{1#-^7QQef4gzaVm}7<`(;ZQ@t`a=;eVw*6;^HV7NEm6y zfW<>y(5Ztgic`K&^h$}iG*W>O+4%Bz|~<+2}&#$%$gQN~tt zy)yMz2)IXUDVET<#4`M~R4MV5jaTlQpSZ$iaHacG1h~n#az1T*%#bRF=1>9h-xkw6 zX7Fc61%ovG_AEHiDi#hpKDy0U7v$VFK6dA*G01lomJAhUstdzUe97Gy*gTSKR&5r6 zo{th0Tz8ecB9|HVazPj<}>^wia0ObeUG_meIB6B0isHHa@zXTxo!-W6mjjGk5!{Ed?9RqXj&g^l&_6*U9nrx(B&see?SDs!mgHqHGbLy!Bi%_XRZT zBEJ>qq`sIHAQN3Ztv!tGXWq5w0?<{d?7Oo=($igwsQ?);9hq};spncS{51DuK2pkb z!`iM%mRPLhUDfg>oq>4;Z7rFaFiG(w3qlNk7AE>Dn0s_+oGT3Pcn1=lXHU(Z=1Jd1 zD_4xUxWm*R)w9{d%MRB`raMpdBJmi$-+wH-1TFJpSsAw$JK)paRxCr@_z-2ZGjY2- zCtL=m&I$(1SHh-j;xCzk8JtNMiIZb>UfM+YL@2@P_o0+uR56|j;_;XJ{0;Jwks~g`eh|j5pzP=9Md_>20RZ;3;DtEDXge-#h7H?!|-(6;o)gNzq>5U4emKzMK z8z%H5>bcmk z-n1G2_nj`iIvU2hhWm=)zu*CuiB5ncc28(-`TAU@bKP-e z7u9juo1s}*VZG?`zxL~o_$Ou;WrHC#`e_9x>j&pj#!4@xZ8udR47z#%^4RpTr9-Km z9v^QUQW!@a7>Uv1R0ll6bR``PXpfIt#!ruU;)Z@K#neQf-vg#o+Pjx5WU;gyz_fy_ zgAq2%KQa~-rm@!W#YuT8eFSLobmBUp7+1*}x>&cj*a_i@$-SE-IIQXfxd(FWew^)B zQ)dSdke5P0>CcZc{&}kag)Ck7B_QgrzRbb-q4{ylqDs+1Mt}U++0MQqTwB{E6PHFZ zpanVeGv-2k4WgMeT4weXuUwkIs1M;$r9#YcfZD`s4poR7qu(Q)3irjEK!;SG?om@2k4-XBT2pUEUgj6Tk|?7-w~DU zW#YvIgxV)W+^ASM^x^NsEmjXb5p{g^`{pOppdz6w^GW+2L1JoZ`(}zL`=dy*CH%&t zi7A&Fc{J{^F=$qC@7G%i{IjiLSN%VJBuTwmdjP6?vep_tV zOdb$HN9+o0)Wx?E3gR7)5#{RYC79Jz$w?wkei6Ym)!7ZIoU@6jk1|BE;Tji=E((il zE7pbI>l<{j6l6cuA$q%wg(I5k-W5+hdnTRxC?NGM(Yprsh52cQ!G4FW5 zOm$BU;_s|^*2o9#1Y(w|#&xg`#!d#~=<}I}sf^eOTRP{K3!FS^h~fvuM0=Aslf%{o&Uhn_ zRc?Q`)+X?S=?Y>N(&+Smt>ygSrPX8(kdzK@kutOjua4}|dQ}({ZRc34kw|Uz>M^A5 zRHkFT2{1KAifO9s;$|+6*M`MSV3vc(Vbr5xK2d_`95&xdnm&VQA4dDkAKT_S#_#Nq6?&Zc3q7JYcpw1yu;E1y~y<=pwdh5jX69ob56HH{0&i6=N% z3mSaa<8ns^8j$ioQ&-Hext-x?%;$0)TbkBo8EQh2k_#+wD}=8XEckFAU;&3 z9V$(lvz_b-%>q_Tkug{o>qY;~6i3CA=^mkt<(3Z5wMPwp;Jf?GwtBaCS3xDYIV@p)NSXCk&0F;*@WMV?U?O zZr`ae?^2AO+Y0#i%`T9uJ$f0Cy1r}M-uX5KZgi-_(cdM#3sVbbKrRaYQqpVsl zOUsWMa!HJWHGoW(Z`Gzz(i*V;DF~fBs=oO)kNgCuCPx9qt<*MS;2DD~N$;850hIrW zY^sbYECax@&*CeZ0t%g$!@9=a&12(OGj;r!RI4YQ2YVc+cIM!(@qQH(36n1ZCIp6WG*%nnS4FLA7_Km!cRxw_dFt5sKVbV#Xyx+BQ* zirD~W{%qagwBDDZ#@b#wq2gaK!#Jz6HH2+UVslfi^-~!%5lL}}xN^GgwXS>Y8tbsX zBn`^8Yrr#H!D3J9pJ82ykr-uav!nIt9#>ngRD)tPEr)mC{7Ufc-xe|8P#i2)-CXaI z2U2y0qv9=@M*G%Fu0z+Z;|Y2I>ZI$x{VkePby`5287tYSQ(5qyLx;3}3M*Brs$YC5`?!l*Clr!m!tM zcTc67lYqd8sq3j$)!%G)0+2<+w#-!y# zCNGQ^FuOoT=e?Ule#cmKEWUXzNAS0J=G7{k+#Di$W6 z|C3pXTKOm`o(Lf99{YJq7M+hq%g3BmOzc(Ey`0Ba(FB;`wSqJ!hPf19Aq^NM1JWU3 z;kY;Un$A8ag3nz#Z@AQ*8}~EHEyMcX*C`BEV`Dj~&Sx_w_#whhq2@ef3^(-3S%Y(S zghvySgb3aL1aPF2--q|#UL@t9{6G5QQrqbfE<;GgN%Bgv@>KBRZ{|g1MNv)%T&Dw> z194yE^zBN;jF+V_&*^OAKJVb6S6o%1cQ2n0wC_Zvii05qcL@Sn{RD!{jT^0ML4ydo zQ$lv_@Lav3pC|O~9)s#D*Mo1v;GhpN1Z~6MksnH3BwyI+{oFEM$#qhWT1tB*7Kh@d zaSbyhk|p4wb%yH94e!_^0>2PsNsKiqoey8gH-_2`6l#fU~-rArxR+Z2F-^vEFQz6{ON>Xp|1GfF%We|_91~@ zyI~6-yS2GI)y!lIzi2XFc##S-FKY(Nkq0LYLJVHsL~gQF?AHawX<`)E8V^)f4uZE1 z=<8CU3eYkAxH6gRN910ady$rWV|IKmtwjUOaS1Xiq$Y$Ry$850>7+7%p4*xlKj5q+ zI>JmP3^&TLRj^zu46jReXdx&g#+1N7UK*I*2j+_RoJPSmG+*JqK|}4M3THBuB5wKt z+Waw}&)D!wbVPO|0y=k?UGXYZqvT~R@BtvZGr4S)RnpkpJgcRJcBnk!>)ZWWMVP;>amBVpsi(YBrr!ux#nA0VrrXT`|hDD2{HkgdKAA9paF)3^lFRh zX|+5%w(Dq;XpGi{rsrvUPF-NK=GlO91rF(`Fv&vRIX}XGJtBCg6mY%u$99W7(eG)a z+QYjPh)8v1x7HSKU{ZnI@MT|aNfY6aSFlhLm@P|Zo*6)ry$PE3hXK-hvWGY{N@_ig zdBus9eRDIi+o5(gl*hv`g|7;P-SB*+ojm3SCDw>k=&?xhF^UWd2s$QMPy1REoRSTP zL)h^~CG4syUhWn_R=uQxoSf0A~P!*K)a?%DdCc){zx8%Qb00}IMf5~Eu7a|W$ z4Za_nS~$5y@fX;A7Y^b>1kJeD@?*Sy2?xmUNxGj?lN`EES-)HdW8>+k(A zBn3F?{j8M@MM?_jAdJ#_L!HnYeXpA3Jf1_Ffle*;-olIuU5L_-;#jJ=!zS=P;BdB$ z)5IcYxR8OoP>;u3e(kOS^EwY_?M83g*19xwhl$Fio>_>92$Jz`PUADt`<*Rz)9}t1 zMi`;=Nr{A>ZOaST7WO%_Lwbx;x-kHl&oml5#u3J!!;adb@pOGqk%!6zWl9Bpd|rHRCcYNp6X+^k@wd#T&6P<6*;E!M;fnh$$BdhhX=a z^yU#ykYzH2|4q~%P2Ug5msENk9)b5k_+lRuzz9|pz}p?ucclUGvN%a5V@Tc~h>ag# z9QEYj&!6(FH-rr08g6hqiwtKQ;%!^=S^R{bqx~h4YC7I482&O`hQ&PrqmUAPH>Af} zOk@~oW1{mZ0GKlbU04eGELHLakd5zZ0Y*L4^e_nNG@asw}pt%Q`pnxm2 zr@;!Rx=Et^c;50N_eL;3473$gq;o1yMJ0Pq_xrSFwH6eKGStzO_*`2xHeW*imr5{; zzHHXcZuW3&ex}Ln9wnJI(G<=&L|2{645YLubLHgNHAS^NBz?B*g+?Vm0Bm?0*PdXOw_UWB}o|<8#6qZEw1=I?4b1&^{;D6X^MQ z0(#kk?z_T8iWbQR#!^AK3X3F|dQd*-nCMW*FoN4M{&miC zR7MjMDo5&Y8&t$5;!I+wcTM9pznzs78Y!8WvgSA77rtKCUXS3VkwTm@@#{Jf0H5hW zDr2R(j_$X-{=P=$yGlKyeWnT92&aRRy~xF|kCshDErQis?&d4e zPA0;G{wvRW-G9V-a=OL`3wu4o$mTMqAGc=O+zAP|UW2?(MpHs*ON@OW&8u@s@ zBI41{WI7M?rI#lJCKE}sdFqgNN0o|9Q9#1yT_9^A2LzW4Z|e)(1H8ZX{O0oFXd4O| z7H(*P?($S$dgiQQ8g0^SdW)~nR$;W__45`}CydcNiHS>R z<8h;3*d722A8B60+H*50+G_3r&zr4df0Wt0()K1w7qgVed&Z+rYqgPJOfe3_yQUfp z+PaF1Wn~Kv72;r#XBRDTGMEb;u@fpVU$8=8tTh!&v_vLPuExfI^+OOBwBL*zLP0zu zR2}N>PSNv?dkEK}U56Z_WQ!(d`V)PhbQ2qTfPod#S+WAM6x)z`k*G{q4n%%RZ+kg> zR9Vp(L^CZxwYf!-7-PVfcdv{ydsN60J9|s#?WwKq+KH zrFR;d^O{{*g0x1MXOIePiz$jOIwCJ@p-RJ{v9+cei{4_WfP63|rZieQu-nP;MZ+U! zTaO;axn+Y#OZ_oBakJtK-T8j9sSR9#f(BROD~V3fj8y_=EQFR^J;`V~*v*9;0fl3? z*lo^TpXFjPeelZa>bkl%wYJq8r#3jbwi*?}e=GuE`A`f1 z7(megqh*X9dv#caK@hBVZpcks?8+rmzjs)GNe{m*#`mT0 zjWW$oOIGw~E)(Lq&s{5~3XQnyKdp#x*v+db-?zcT+T1~36n=5h^$EzzV zDkgkJP_Ax}3wVS)&Z_mE06~YEFIN9zGhdC6Ts>60(k(tldV$;Wy2b)dO$X|!PH?Te zY3St}pqCxhP;3i+ai1C)Y%T4x=Uul2cI~E>)mxq{mI``SPmVzM7go;cQbrE%8Gk)W zyaH&T%wiSptf!qJ%<4fTD{>#mW10TNkq3z>9Pjl$2yt zr~kE!TqO>TTqdrl?*S+z z5$jRQ;XRzuj#z+Rg>w~3kh<5<#+ggf*xOs?;WsufwAy7jhlyJJc1c;`^Iuk0%L*C_SqR$7-SVi(CWfKKy$sebuduKDmg}x&Ci_8t6|i<$ zXT>D<>dv1hpV$M2?Q#ustc|ih4U14^%Vjz1VeTyktart#dd*kA6r51BGmHDGYmA}O zZ~MV;R$`_97Agm!Oj){3do0YfYsHKno%j;;G^sK-i>y`z59kS-tYnTh5Fu113@lDY zOmQdECRezJF7i-mW8W%{-K01sR=g`npYy=TcK0L2^otmgl+8D8q{g613}vl#-|0$O zbT?^t@z?2eN}q>Eh{>A4t49$t+y$Z1J12*3EzGrz( z_T6Ae#}Wk(A{;x5R!9BF#LuDrGla%#6?*7h>K zWzqBqnMgDxslN0#UL$0NkPMDr3zNO@u~)$sU+k)@vaM3=?TR1~>&VK8!-)wK1p}LI zMxSha(llQ+VcIFHAy;H&T}zDRcg$qASWc#&`_iw5LoGI zj4b}?I?`?1tIpiL6gQ}i?w-ZQXWQiy>pzcHqqh8RgII%x?z+DwpizuX?sexa>jHEb zd}P_Va||6=Phk_$!bpT1qDnv&{?~vBPMIz!`@2ZW?sxl(8-Xx(r{L$|5!I+vci*HS zqgn=D%JaO36nRd(gdHZ{kfhyW4Q3bAEiDoc<^xFs%?mwZ>!~^-gDrQ!!RH7O2Q=k^tto02cx#{1pwZ{ym6x2UG`u@$VJ!V!AiCK^(5_xhCnFzv zV$C`wz8-A7$Iz3&yW?qD*g%7MdUKxD*z}_?`mWfUjN8ZC!!a-nMf_ZU)^2gDD4Uz0)47hL(&16a7nS#l*x_vLZb$;|*6rI=Pg1=DnHO&fzt5S0Amb zV9vRtbZJiKs(aOWtk^!+kVlo1dmkA6rPko?k=(z2TiE_weY;6X{MiVwmg`;5i7|9I zD%%*u2IN12nwllXWY&0TnMsk1j`H1{d3|#KEvGNo&X%z$(RAtFv9TAMv##?ss$NNY z^iR0v4dd}%i_R12NED9BXXN^xg7AnbNO>O~#aFXG^2MpsAanilC6mxGL%y|9sr%sY zlodRK-fFdpW19xc?hUgs?*femwI{o%lB&qU^Mx)s5Om`(p$0NMPyEiO6sj|&y1Y}7 z^4`4FOqc{jpNIys#`YAd4I~W>r!>*r-S6o~Z+iVw14Z;@UFfN4eN?;`6|s{fY19f; z<9dLuQ7da?NrXW1pZnX78fnNp*uBZ+<49^D)F|^I&LZsf70|KIpAhv*NTb~jG)K@B zu#!duN05aO#!w5l@Q-1ZQPg!1qv5!-L%6TQSU{MN^1AIym~fAyt}SZj0WIeNd;Lm2 z4446=Q;}!hvBGWHgB<0)KDByem!4-lRa#6J=LLvV+C0dR8N{{HEK%xBmNWmsIe@)~ z=+=+R!(v*cea|t-k62sT0>3-+{o@qa_g2e8A({+}P${5q9Mle*rtLH1AKUjO>}K1` ztX2TW!ZX_(DM(C?$%C+&hw=4D-Plc2?SgB9=z7 zz9_1oTos(J4tsHb(S+zbu7i3Z+UBs>=xOlYYtKG-+5u%_5uENke9H^46NkPb<3smu zlvNucV+(lkP*G_~5m;gp87=Jni@>6SafwI|EzKt!&r7SYLN9;4V6#2`T?3gLe;XK^ zCs0dRX2F14p70*tJ%8ilQ4Ni%T%z~SfS5dYRz3!F^ersMfLwajmLLYC)Lq`R-JSk{ zC*QplUfJ8{nG*NqtdwpEP`fv86#bT5xoLZKnioOCLZ*<9N<^5{ftq1x#>{g32LeD6 zN8Q&0uY@dOtrBr*hW#voLOOLD*1ufV+O2EzkhH0QDodL`$d_ZrV=!-O*xCi^NA%vnOQIk!kOLsTJ5_G=3UxS9? z=P^`-NG!wl!%A%5s3gU%B3YFp7W4WsL4-rg(`%lm<4%A*>%_*k17+zkVrEa;(%rjwZfQh4R5>3MDjY2fA)5#4}P5IKp943^{#g9c*-(-#!O|r z)-W&XDKE4p%C7*|1BLh}N^FZXdBGU8X>FH^GQQ0C&xkF=XifYFxS%zhFmWwoyF`J2 zPX0W?ss~qYxYKX~3Ayrs@U^?qN9z!pg@>TW42qARblGTPw=fn`g8Y|&PluU3u3@Pc z@{u$&9?|W(M@+WkRLP$h!!8p&!M3XI z<-U8xp8A#7HQOt7KZ74;DACxi8TN+*Tl?0|nN1gES(nOfO*lCNd8L(pcSx#7jQq^O zo3qAyL2!Gu{ZbkhP?*3hBa0838JXKV21xHIGuOxAEo#MPjIy|NTkaLlW``2r^4#^y zBHs+j$E49n$*n&_N3nrc=Rg!)TOSx3yZ0BK=841CDuMJ_k8n)}HH-|+B$tnC$dnzFj0ugZ}1QkRWfQBVAffMXhdj95g z^vN0ynRJZ{1s}*Sc2UGg*E_=1FPu5r{W?h^I#iaO|_BY}P%1UCLz74rJ%pDdG2?|O=-Tp@&meB&~GG$2HwV|S! zINLFcNb97+Ai!$a9Bbk5DD5xks)xL7ljG$$yq6reAMY9;E9ajt>IAI2FRrdFnEz`Y;*}c?M@Te0iw=9-$w}JFmzbl&=|L8 zSx3IJ<+lX7PA z74#`}cFDSq&LzJ7I$a3UaFVOx|BU9@*<?yCuXmX(m{AHIeH5eThT(295d%q{Q z3(nUx(tOhyUM`-}>+0eCOR84eB*oHRe#Qe&Ay|%Or)7@-AWeoPb9CbUDPQ)pf97 zkueCPIV5mz4U*ggH;g`mT z$vVyTAAQI7z_nZu;b~)N=5vR-0-IL0KDazC6{f`HX6iX3-8?$4tO3Vi~%l}wOPXl$=ILo_|Z8c#F{{X zh{u=bu+`}c&i7vyY~;L%=HmPXL2MR{sUs(etu zQKD0_%svqvqKc5&G{AD9xPT4|Q5ID>EO-N3eSgl|WnRLCEKhoH%`MwNc}<^YB6{B> zCi;lIS^l>@2X|vYweyV=e#ty|$0S#s(qPs(e=;raNf0cKn_pAMUdk3gkD-T_j`-tO zga1+@D1o zZ>y?w{bf08LX~tQ%^6>G`nSwR1f`H9Gt>?!_9>`Ql>(d5K`T2m*pP&;bf%#b=WE_Cd6M?8>`T zJcECf?)lSOE&ZaLzb&9>%Yp;DZ^9|=;JQq>Zn%vgB*%H($x>I$+DEY^miK$?&qZ26 z=U_Bbc*Qep{qja;0lEI+FxLlmLN>2WZ$MaM)&=f1Vn9t4t-{VB*Bx>AlWM>HK}T0w zmbD$0NU2a1brS}D`Ux*|M(<>4GTZtp!Ik3xJ62Px)zgsYn(CL1QqS)lkY>bQnFq-e zQmR)5moTe;+9DMN-I{jw;{D(CEwH!Wm9GlY_Q2PDpLSZAtSk7>p!v+8c4NcE19kIR*-gpS!RPTur7y z%0t$*L(D6o%G%#ucDzkPc#xTzcN`vls&v{pU~le$WuU!Pmp)q3PyhfUaat=L6xjz6 zuyCxT)~-LjdV$l=WPrLYWA<@R0GfJ3sZP4~JHmxvw1k$X%QTp$sdiMSzzx`zA;hM@ zj2kPDTs_sZ;uz(FpCPc`?d?&pfy!oAr^{2!OLUi(#|oFis2_5I{WLQIl<>-4apv0D zeS1gb39?Ii1Zphq>oZ7B=!Yq-H%}8a{e*R`c{teDn(|i@Q3Q;*X)9A9bfxPVXV}nY zqCd<*v))6bSdo(|iYi`2d_1F)Zmxc-{BH4J6T-F6?1R?z*}n z0Fq5kEBNM3IkY4gztF^+WpLw}`EA!G!81VxoC}#yJSmF%kwaq(T4a~D4g=vjvl*4T%oBrq3 zfG3qy&}GhcNNi{5sx+?p``ZZAPtguQsX0t|C-QbuF*Zp@U}PxPaymk;@sI$I?SRZq z!35>}*BsP{D7TWQ_WBaAIeY{8x>m%~H-HS~30YzP^9UE|L2-HqmuRPb3#IGX1;s7w zuT-K9N#qA4ihg{@a65&Baa}?KyYypkfhSs+Zil~=UfFg@fL9!B6-9nxer_cKcv?^} zd<>BssWK6%3wIg>yV0|U1yRk385rk?{l0~$Djs%1ZPilM%jzSPZ&oktAVM>Z#%UMZ zLRO$J8nAU+97u1iCj!2l6zyGmqNCUlCzE!VuyQ7Bn|+*ufL6hiX)-w6UTeAQj0#zP zzR}yx=d>4To*{DBgnC_A(TZ}fKwK9j-l2wO^NoSo1FE2`?h?@}Rcb}v(G#+ngWCB) z%sU8(4qe*q#e25gR~$}Jq|RU_m{x3UWC3aU%%PkO zMn1)BcRI!67U_10R{g`Spd%ahQ6Mxesab!hdSK3 zdws#*xxk5pI6>{6m{1UL_D=$B0Ihe&V(g`Ci=IBBjzRbi*sf}bJt^HSb4CkHWb*z| zp&DIF@i3dZp%K_87TOQ6M&}QWFZSL|MiG4Hw+uMT-nVCeF9rV;F(X>wj4Gqg$;P@Q zZ}uC25cv(Ji%5_KBd$j7q?@2bQR)D|4b`1zla0+I*S-b$cyrE6FA;l|%-5p3IEeA9 zuQIsNW+VP#`#T0qX|}H0)P$ByNLWB{A|;yzcXoL78VObucmz$V4pIW%P_F#dSkehH zLDa`okj8NZ{zap&dwbhPJ%jiPwx0Sa=7)PN_^_|5+|;ZjFM82~ zd*#r8P$JX+)7Lu%X%e*S+HKp@n6_=(wvFkYwx?}Q+qP}nwr%Te<8AHv{uO`3+Iz>^ zRRRk6gX@ zph`Pi?#-x(b3MIkSE*pZoC?ogJ8ZiGZ0x(JSy@>Q_xHSIhs*0{O>9^UX->2AjXPm= zvH*3<*vU*d1E5TNT@`RTFfjnFBZZQg9Ai9gC<|fM`ETvUrgP+TuTaD8NS&S?jDBrB z&Vu0!a2q#-m`}a299BK%`mE~wRi*5Q+|bt$F#_r7-xsp^?}mWiXZbw@tC)q-BL4!~ zo-oEvR4@t;`OwdZC7llw^7DriWbd2~-Bz)2>Mt~#5^u3I7Z(?hVNanJbXRQ(gYDKI zZ_zgZ$v{0`Q+w&_`VlO3_{s)uP$-UK&kvO2dbCJ>(q7*3DHN{{5^ z=rDDZechkpuGxxm1-7~RhPdakrbJvzqu%1q~FvD-Zqc8`@hGOe#J^mZzZm2)b@dJz!} z{s`k5NxO4OU&bciAnT>9ddqp2wv`pc&*`|n?{D`)J}MdXHT2mTyQ5lnxhTl!w1C$i z8ylu#T!84J^(OwDuC`G~>S3n2!#h#5Dq!?a_EkU&=HqU!mW?3mMmT-W*-z3O?!unA zE1s*u1v$BC>TjV=mZcD+f#{|}ebKGS2h#L2Uj@Y`0!urIJ~*d07)F3QLZgC37__bv z=9vBiB=ErrH#Y4olNRi?@s^2_F`lOqail7zN!5o0et^*>np#qI7y&R)%(>c)7B8k{ zD(<~56fXO6gq8I~4#u7DFnzYn0Uc^YhAujLj;ClF&nK(Sp-qew_MjQ`Hg<#qV3{Kk zn&SL0yW&@<{t=xmSv1=^QPc@G^p;wTR!O^HKMnPrR9u2lX{ zbp^gzBO$uL%pUbGEVRRRWF}{13#i>*%zKRfan*Vo?s*8<#u`*km}IApsGp=32$wLW z723Ut+k^!_p!IjRLMt>jt4}?S{cR!rfLnko!v>RG)Mjsy&tr;7u~Jp%ieiR>hPS;M zLw|24Ay_h`5y}toC$_b@sg8j3FnTd^6l~v*<0jITQSi$j3SpV@SwiteoyD|i0rgS| z>0J=wX!i?^BnC6|J)utnEuq+l@XX-<&aLw!mdn5;wUy~DU`WG>OOp1+;Yv27(bn4F z&g-rW!6wTL+rmq_q$ISK1b(*1fazQJSwx=d`%Og0s^4x}^I8OM|4Ro`t=Jb3!$^uM zperPUsE!Z98q)9GykuJVCgH4!a4;$l$LX>9$pL? z>7PysWBFo~`kvZx0jN)gvt?humKvXuSjCqTIy5?SSMh^xXi*vF`wv%cWi>vI{KhMrh;4L0%bMq0GFF99YPb@-J-Afrv>YtVR5nsF3E)Gu zS?b2bLf8)3?^w@{_0=9eORPrO0EHk9EsAUmN7ve4_XaBNbH_#;Lv}JG8Pr2E|BgSF zI#`m*N$=wy=M`GKI&_*e&c$0}$vdJ>tO)(|v+5pc)hJJHs&~$4c01{F)v8lg^jkPt z^J4ftBUUP-kk4!<%X&^La&}$0LcPkmC;hn3qR3Dl7v68bHq(=zO!}}bEPfk`tMj~I z?u~vjb)g>Ui@2hrDoMQ6hNHMa#Oma9iQkuW8Sc`3^dKj;cHoij1u&BO2pObIMSncv z>&pf@YA9cf>*vKplt3~yn8J^S{V~_nRV>9^K|+_Sk@02W6Fv;$E+s5WA>ET;|L%?{ z)A@qZupEHK=Wy=7xvol&dARcpDbUHz*6GVX;bl4OA3o_@R5~@j5PlxP1}YxA&|c2e&Pqd?Tn$G zGVk#Dk#6p40PH!E(}>`NBK7kK$s-H>!^ky5WB3r{9hD|Q-Z;|ISU!%=0JUrzhW$l9 zDyrgTdv~Xp`6*WDP3n}mm9t|Zz?rSP;S%`kwPgfv@IE1dT3_`NZYCP?Bi+?X?DaOh zKz1^Yho-m{P81B&{)V-|B^)if1+FDeoiAa#vv7L=+cyw4-6m`4_I|Ep$)!sum1B?N zlRtg0_S^cXcar>7(eLWpivg4ul^4>J5#m{=HFyL(CatiAh?-3T}|L_<#d zPH^x05R~RKvM~Q#9SY)b!&!cfU1gA>%@p02A#p`4Uw@*}fd2i2sDK5HS*Z-DI|-ls zcs1=pF}6_;=}=CnP!NdMji9l_Do>T(E=yI+$V{Wm#8fERyOHbaYVyalb|7%9)pH+j z?;-H{-K$;W^U*)QpT|G-Q_+%>k5A9Y`7eX`hN;8#UElHsjL}WD3t!My8rzL^L~I*Q z4!)4jT~7;zX~a%kuc1nXN$8ir+R2{8j7tWe4w9X47LDiJ?6~lbK_n|ibg@Gh;r_YoIm>zD z)$Tg~+9DU*n&dU!74rJvIw4oVLjU63;`kkv-`JNwP&hMYd}knLGJh;4V3h2=MzE^% z)>GBfi;Hq=*e?EaC_kHe`l^Gy*w#+*fL|Q1bY0#ce5id$nJ?(kC)HvtyGS%*GspPR z$VtW#Lech>z@_1@i+*dPohet=9X-d()?vMg>1xaTyUM`T&&76v++PGW(RA3Gxv$Xj z6(y<7%h#PFp0b-Oo=<$U)qhsBt&p8+pc^-RoLlkRegZ6!iBEJT>O)EKNp^JWD=JL< z^!23fegNtESNwJlrZXsOc-AyfPeCVKwQRG{X58FuS&N~l7h0ern+mF5rxp` z8j}SXQ|9uvlb`48WDcI(|XXtZ|l%K#m8(PeMM^h$0n5Uv{ zVuIDV91eT>vx|S+8_IY;Eg~QbVjEBgqHF)SgfLu4M$|7&K~|yCCqFBy5JB)F+||X< z+m$!4XVC*1Ir}cLk0LK@CvK;YrFG5T>Co1w(RwT#C)v4I>gl~l@|9<{nMqQer^;ez zaA+Jm!mvA!9JC1+bWvKidDSM+0lGFi-f{olM61y_pH0^aE>QE+a(;&55a%P)#B;X` zM$m`Lff46|@j;7dBK-%qu!TV5_DityHo3O!^vJ(f39>IaHd#aE=T zfwY%Hl{rd{e%_8Lyg5{y$mI=U+Xeb`g=O`fiIQp!yac||v9poR--|PmOooxK??`t1 z4($Wx_KbmqBqUIkK0IJx3TnHOU{LfS^AkDD=JE=~^98{@YCyetf1n+=xV8!w!(R}#0&)907;%L;C@o5eoxxy?3nO7yN8>YwJ0 z14`k^m>(uoE;#Ey|FI(>X&D#H0J`H?=nPVTdkK{QsCc!9Cai7g_Nyq@d*y3cbe>0G@6h*Wg1EGq*R?F*BR8(Z^bGKa8=^0Hy~bH%DtH;HQ4n zChsnv;1D9E*aENj8eDA#?!UhVJ!w&_)9|2_8JUeDP=SA9%wv4Ds->9YD@pI~C8HkI zw0NRm$ngg`_lgJsRU>gtN)rR2q{J`)d)dM__f6iuer8IU@tBogpprv^{ehnzxSp)- z4Vrm69cD(~ zc;xM`Fzr?;3+#gH#DnDM&H@lHMnQd2xUt?VU8BKawbtRikMc93X za2lrXIva2Olw8TiTI?Z;_%u0v5NwIg1N{B)b_?+Y7(Ty){DNXBPQ-GBk+hCRioMct z-{Ym?#g$8^*0u_u_C!~?D<{>SqCLU1tPW)lWgj`U2omtz6tb|?7`AsnVtA(8LIAl% z{X!N8G&el9N421VVPM016?40{&Y%kfi<$^6zL@YC8!c#-@s}*)Wh{YMB_VUysJ2=q zW+ZGRc&lU(yx>JtV?JO8O(wEUT!vLpsIguEUW^l{bK51emMku2rp+j5%^KRea~QQL z^v&MVJhn3Vw`&>Up97zn;C;02Bn2CBUBva6w2^mb+OhTa@%?A3rmvi zn9Qy~)4ikILVH>7d|We`?fzcv%%~5RZGYv@0Jq7;oy|S%UgMfthPfu6yyFt6FYmnT zhCxl!f;NYqpo<3|o|e>z4K&iijwXMJ5#!Cy%Wr=gWDI5x&T|L@y~2XBrf{elNNXFwTtvU?XQ=Q!7 z)xqWAa{f`V8<BkM=-uU%!u?<#CnN z{;jpeRdLwZA!w#!OIiEH4~e5QRIjLvP&h2D}cqe_~%Wh+wfZv#%eEExtaXZFc+TTk6r|yssgM%3K0(%^KqDD3ncM-bA+&z0!0Eq=z%s%+`ePyc^UU zDv&#&lfZF661*^2t}Pk)U)&*wTy~9Mf1jsS7aiD$C;FEB;OkMYPM1aj)FC>=&h*ZSMHLaKqJ{ly!WO$jP}Xy$ zLB=ktl% zol%KSGfOTa9cv}=W;_NDZYKTKflv+rCS&Bf)kKWN0WDqpIt^P{IU}m2Zfr=$tsM^(T z`c2SX6ctQJn3GdlZGE&BL>Yu=uHLgFBFA@a5k(*1n(F>h@1pz8&}z|URk|q4{~O9W zdIK|S!y)|0I}qkRbIfhJlc8S{tCrX-DcIFue|i&L6X)8FkD>FKpO3@=NoXC)x1B9E zFHbaUViZ^&l3+{-eTLZ-i!X|&0`hq+ae3c|_LAZtCb2tuEx@XZLb=_t# zHLfyO6n|~cEz51760W`?A2V?XgeI6b3#Yw0?>laj;ftI_zUH-U5g6mQ_e~2IxoT8$ zKX1D$IJhWeWU$XUR<)^fwP9t$Qakx_MGmY@ZN#+rfZjL(kCuMA2Rb4W3VTp;E}#Y3DOoO1;i-qyh24iY%T@@VwQAu*C)03aC)A|9O0kA z&yKOK*bQq*;RcD0IndancRwn4BjeBY<-nJ$t7 zeSq0nyb2gAJh@cDQCiN8J2Yd)w{o6vi=4FnwD4PaDWJ&j-pDPFp*obBMWDW~_!dh% zcs@^c8TJXAA?j^~PIXP4EpABkoNghxn>NULOY+V-9x|WD?Hvc5fG#s{WU@k@F=RfB zamlm(Tu4{>LN6NB!Y`X9$yC2_9u{kX)j#6R55;CFS-Qy>%vZRMJqp%bCdiCFnsWEot>IF6~~``|@|iwTbs-e(MpE*?0%E4H!^JzHnI$ z%=Z-KQ_%K0xeC6LCpfYAU&vweEv1EDUD^BbUNws)S#M63s5aDwF@&qVOG{InwT<_k z!o$jowj^~=+r5+|7HHwoFzXxYXXd;s*?HB?r(x6{nNq6K{~{j$|-tWM>gEa*eLpqQk>dc=cM+6GbFj{-*M{d$@Z@RR&=ScKB2#z{Ww&e zOdUo%Y|g^+N!nn86m|a82=Kf>_vFW{)+4qhgpx`E39(>+OlDUD`NXUfUbxG`5TTdv zZ}U0^c)KwsNg8H(#(2tuu`w#$zNN{dS8f`d@#zG4rnrauI;TF3(?Ag^qJG}X744Li zxu~6JV5}*SO=wudba5?|)aT1gZ94C}-*wp@yEi5u%!>3ey`W@v~fb`gEVAgEQem?wQ;EW|@!%7VdN=mP7rj%4L%-!Xw3HR`!=;H=PvzxpopY z7*r7kIVJjXhRF`?L*9#pD31zWHu(l(cO&M3Z3qNhntD{2yCVWsk7(Hjuij!^h?!B( z%wDUU{KSL)05Tvq#^ig-mLpE%DZT|rfY)C;B3g3 zj@S<@CXJm?K|z0^Qy%b=%#}3x*gKwfOe4ua=O3(mEf~c`Hd&gu7>e>kH>tIBhr2H^ zUVd{0!!ynyq=)X$L_LiardkR%AzM9Ga`P&d#^UJgNs|iJK}Q9tXKAhfo-m6lJcgj> zJN2BUarEKoQ4i&r?bAR(J-oeM9AIl4S zfqTiFBMO~v631z7#*aF&Az1D#L;0|{78Nc4feux=h0@DHH?un)d>NbUenjJUD21u1 z88~PN%T8F6zj(5L6$cpTgwi{;dZUSZ8OzCijmjOMx$!s3-tuLHdzv%^cxI1RoRxh! ziEuyPa?U7D3c+SUQw(VJetL=JJQ&=@cXFtZqD_mN=m~@<2Z1!ST`j*?6otNfVFoPl z?ZnNufs9r!whT?n*r@~YeiVrq#~X+U!Z?Q7SXqH!7wd&81kOd4q2Ig2fH-YsYWFIX zOHynyVxrNaCwGC#=?1eRhq-wUI?~m)UW``(%Kfdzz~^zSPhm!9W5t2Vcf>B)4SR}% zrOwyyyWo*vXd=t{ld6m%s;vm*S66l@4)+S(9F4;lW407PZrHU@saZns4~PTU_@5?J zg=Ju6sh<-!-A8NdF-|PD##b6<(N^26?OH00}`i>Zo=w;V;a=^jPo`sNWz5)%Y8p1<{4u#er6KH|7Pe zF=83>+R*J=6mu*R*4bB(!v!diZr%LgNlv95JU1OVm17JX`AsOG9%_UOYN`?WD)i7| z07MI~!_GEazoE?2e(RUh>ogjNso1->Z!%2+=AsIIY?vbDjz-TcNg`oIm$@gK=){Hcu4^0YBi({|-1S!}f za^6Ts|CBea)8LGNd#_od*8oIaa$F!Y1FKXN+1qR1^`;b4D~*#xr(|MFTu4Zu&0Au{ zPXgThX+?!Se?l)K7X2G6GJEBU5y?S$Jex-z5i(qrCSpl*6#ctwI-*PsmqCVmST;fg z%V^$sE?Gt}qNEHMZom<%+^dQrg|;XYH7hkK#XtZg64FD{4}C_VBlqq)lJuY)qB0!k zTf~lgl5EZ}5H&Pr=gHwkcf1dpoGEx7+?J@@ei74b zZ#Fm3-b<)nY|BOOY4+lMHy5$mD2i3%KRx0LvV{odV*Dgqun=HcS6(8p6Tqq2fEBR% zK9468rst-C^g(`{P((8z87LEjon^&*>3p;)U=Z7-LrQh)ztXm|Frx>4Xvb&rf3Ha4 zd$bz!C@=7B(Hu8QH6Ly+;YWh*C%L*%V~YbD@zu?QH0T zt8zH&tl#0?(Egq*i33y7py#u(!n$8y;k*UDLZd%>RMuU0E2(%v6fa78e?+&FyvFFU`kpmjU_)Z8E(fP{*H2C7>+cdrzcdM!7x>if6g z=k5?jAaiu09_Qxg$}XqJ?0&ZFYCUg^HF(aCC+00p9oe)Q=yTDY7Z&hspf86ywOeKp z9Fn^Yf^w5u8&2>UB5B%aDx;!=>ra&^Gi;cIsYm;AUl5GsM*W$yh5T1$v$&r0lPva3 z<|^1=h93a+;30RezOL}=yre2KnfP&}#7s`q=ik9Ga%EEZma%KJzQ=yvjdjcszsyRi z5nGaH0zQd}Z+~m?ktpMLMHf}0@9vIc#WebwS@N*3m*a5?66bnYbilOQS$wte16B{P0W&bBFbS7dDXKgfv7U)jqZeH<_#SXReBsplBzF zZUD*?YpOzjibEl(Mp3mBv~~Es#EDk_X`p8Y0zU5FA5CvsL4%hrX6i<`SMTun^oaJX zf{brH`r5mdIx`dFqWt#!=Q`fYp&9x7`g+mP`69kK{i95> z{GqKcR0b(eWT6Uy5>{VMGq~wE?|vS z(GPWR#H-1w*^CAc4RJCxKATRLGLC>bCY=^t2Yma#_HSG?!<;fHQhV6hT*B$g9_ZMr zcv9&93Ql}Ynb=qe>t)g}9Fghl7v0Z6fvH!B})t4tw6=W@Ze zYg&kS&etq|xv#Lv@)n#^@1_4asTs^ras5OS{P8{7P42JIw?5L~S;*m5(kv*|gly_j zXfb7(*bLiaFWV9HU~X%Ns0Rs+-D(siaPd)E5&UN+v%^dD83cbJ-+l)Sj^LKhaN(y9 zM9N7hj)3h`Io4IOBFBq;A>cY)JuFK`X(BuaVcHJ@l~xx4P@nkF_Q&}_r1zE;lA z`2B7Q%)=nU`%d%cijjiAJo+BNYF(zFuM@PrX91>9_>;exkaL3;b7n9AwUOYCNzKM_ zJe8AGntaQigtZ%`s=a#?)XWx^05YNz%|LpA4k-BCg(#k?oXK~{_qe;xWP&Vw1g}%& z#mwJkqMfiX_$f9W!PsTvOgYx=2BBYPOLS;b#LVmP$1q|f=B>8is-lj+NT7l@oW}4r$`iVRE=XR8VV+>Xn7UCgt1#n}Z`pHsA{E@PQS0;jU7) zdcJ|D50QB1uo|cBK|WiT(Tsc~!B446Y-Z1VS{!{!6gx!vOEht3N;ZUHR}e;Wax7ZO z^wxUPQ*%l0+>mnfz^i-=ucoJn&TOO*1(l$gMW%?voO+QVtv24hW}Qcb;~sBBIX}dS zUnR3FB@i1QE1Bvy)eH@_0`Zj$G^Jpba`u!69du_VCb$zBdwO}l(-;X7@m+`8Ai5Mk zxz|AMVfS&6mqPR3kAhxLYH4;qbjw(0b7Q9`=3j?M$Q;zy3W0Cbi-by!=7Ru|KU;=% zn&<60VE13@B5>XWZ3^#-RPTM7%8}7breCV*tZ;;12=@i_H#)s}j z_jUBZ^P?t5f-da>rndF-l5HUS>eZd#qmw6NX#}ro30A88ArFi6-t~k3iQn+SCJiD~ zxG6BqtOsUy*dvklx&C4RiW)T2oToZBEtAGVr|pWXr>P z3p7_fa&WauQh{#XB`7d+Otjb>R=HWJT@%k2>n|xR3>agfZdEWQzYhu*?TtUYrbnV<(R?5d7DqU9-OG1w{R%`0{VmW?Bva<4-z5Kz=a9M#uC*Xzc~7^g8$BHX;m^`rdD^XKJ-LL~!?eJ>S>#RoYH|i0cVisT~)!&Q=c95b3>O~iu z5(`sKFk3YQf~vhd^AN!{?5T%2agA1iS|Vb_ExP5Lomel4&vssF-S387LJY$A5H6NNN1Z z+9{$g0VFKP6heVs%q_><@~-*U>;Ow5MhqxHVZOqbL`hGOBxWAUmqe&-hV#oNBuZ|2 zX!|-EWBXS!!WKOO7XtO0yJ7jG0WU{^+j3(u=NEnHV8GZ|zkisRl(0_H5q2PLX=QTt z@+DKaUNv1c0hhi9l^^N8H~qI2loHx!=)v!P(Q+D6#iQS*rk2JhQV=G4Mj#8|>1W|l z*H2YZdNx<|;r<9!Nwsv>h|%1b!Q$UWuR4eMY_2X%#}FWTdU`l|X*f1l@*qM;NJt>0 zFd$&_y(V+KZQ8sS?F+iRaVlTJ79~K+^k(ouds7ppx_Yp*axi~{D1Sef$Jnf&ta#Q1 zhOYcRc$AVqWsvwOG(J}uy909aiTP1}4@u0v0t+lm%;z~laO+uuqO`u}6R&%tZg)F8 zA-kT3A1eY^(Mr3zqw^C3;`xz_)4JH=)5@cR4gvb;)D>fBG*?%hQpU{FR69~`} zsl7S+{YY5n-u^AtSg+~H&RN^g9MT*e+3a6kU7Q}U!zkSb>NmU(^&!6Yt$z2*?5h#1 zs>*jYAPS+hE;?Yb_JN%&_?yw|&5$iAzdv`d$+e;NV|pGD5kw+IqF3VRmPc*xk_!=$ zE86y|`q3c$@>8|Ax9eK{rB+CiRZ^C8XLp3m=={~If8k0KJ1fO=g@P}srWdJX!MVYu z$eVrIel4`Oa(CehnfF5i`jxWwdw|Pdu;je0jk02vLE>S!xp2a z7pbY11PKZ>-C-^xi3S!H1r~{Ef#8Ne(aGxVH{K91mV-h4t^d`OA0Z*>=B^8fiOB~ZeK_Q!n+{e>?|A8)sk&j^@2 zBhy2v$IUl0F%Vd5Q@n!RnC$>aDHwE1he#$^m_UeiF(D#~KN`jo9Dk5BD1;@jgyUce z%V1EbCf@x<<^n&jqm22zMt8H)&zGU_>yC~{oC@l`k(FdY!LY&qC$AjhKSSJqE)P@H_5V-xKV{-W{Lj??Pnz|Q`X6c5f7J>J^`E7I_;(Bct471_ HKX3mFTAG15 literal 0 HcmV?d00001 diff --git a/input/regression/lilypond-book/include.xml b/input/regression/lilypond-book/include.xml new file mode 100644 index 0000000000..839e14599e --- /dev/null +++ b/input/regression/lilypond-book/include.xml @@ -0,0 +1,55 @@ + + + + + + One simple chord + consisting of two notes. + + + + + MusicXML Part + + + + + + 960 + + + G + 2 + + + + + B + 4 + + 960 + 1 + quarter + + + + + G + 4 + + 960 + 1 + quarter + + + + 960 + 1 + quarter + + + + diff --git a/input/regression/lilypond-book/include/GNUmakefile b/input/regression/lilypond-book/include/GNUmakefile new file mode 100644 index 0000000000..0b6e885d6a --- /dev/null +++ b/input/regression/lilypond-book/include/GNUmakefile @@ -0,0 +1,11 @@ +depth = ../../../.. + +STEPMAKE_TEMPLATES= +LOCALSTEPMAKE_TEMPLATES= + +include $(depth)/make/stepmake.make + +EXTRA_DIST_FILES += $(call src-wildcard,*.ly) +EXTRA_DIST_FILES += $(call src-wildcard,*.ily) +EXTRA_DIST_FILES += $(call src-wildcard,*.tely) +EXTRA_DIST_FILES += $(call src-wildcard,*.itely) diff --git a/input/regression/lilypond-book/include/example.ly b/input/regression/lilypond-book/include/example.ly new file mode 100644 index 0000000000..ccc2582e0d --- /dev/null +++ b/input/regression/lilypond-book/include/example.ly @@ -0,0 +1,4 @@ +\version "2.16.0" +\score { + \relative c'' { d c b c } +} diff --git a/input/regression/lilypond-book/include/myvar.ily b/input/regression/lilypond-book/include/myvar.ily new file mode 100644 index 0000000000..48c9439466 --- /dev/null +++ b/input/regression/lilypond-book/include/myvar.ily @@ -0,0 +1 @@ +myVar = { a b c a } diff --git a/input/regression/lilypond-book/include2.ly b/input/regression/lilypond-book/include2.ly index 91fd2e094b..1624a24c56 100644 --- a/input/regression/lilypond-book/include2.ly +++ b/input/regression/lilypond-book/include2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \score { \relative c'' { \key c \minor d4 es g2 } } diff --git a/input/regression/lilypond-book/include3.ily b/input/regression/lilypond-book/include3.ily index 818ff12bd1..8aad8b1de1 100644 --- a/input/regression/lilypond-book/include3.ily +++ b/input/regression/lilypond-book/include3.ily @@ -1,9 +1,9 @@ -\version "2.13.20" +\version "2.16.0" \header { -doctitlees = "If you see this 'translated' doctitle, language detection work" +doctitlees = "If you see this 'translated' doctitle, language detection works!" -texidoces = "If you see this 'translated' texidoc, language detection work" +texidoces = "If you see this 'translated' texidoc, language detection works!" texidoc = "Original texidoc (you should not see this!)" doctitle = "Original doctitle (you should not see this!)" diff --git a/input/regression/lilypond-book/suffix-lyxml.lyxml b/input/regression/lilypond-book/suffix-lyxml.lyxml index 0e8c8ae9a4..c6fcc604ab 100644 --- a/input/regression/lilypond-book/suffix-lyxml.lyxml +++ b/input/regression/lilypond-book/suffix-lyxml.lyxml @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/input/regression/lilypond-book/tex-auto-linebreak.lytex b/input/regression/lilypond-book/tex-auto-linebreak.lytex index a76e9e17c8..1c3af72abc 100644 --- a/input/regression/lilypond-book/tex-auto-linebreak.lytex +++ b/input/regression/lilypond-book/tex-auto-linebreak.lytex @@ -19,4 +19,4 @@ snippets will be properly line-broken. For example, \end{lilypond} -\end{document} \ No newline at end of file +\end{document} diff --git a/input/regression/lilypond-book/tex-comment-firstline.lytex b/input/regression/lilypond-book/tex-comment-firstline.lytex index 5d0ae0c0a3..f14873fff0 100644 --- a/input/regression/lilypond-book/tex-comment-firstline.lytex +++ b/input/regression/lilypond-book/tex-comment-firstline.lytex @@ -4,8 +4,9 @@ \begin{document} -\section{A coment on the first line of the file} +\section{A comment on the first line of the file} +The source file for this document contains a comment on the first line. This should not confuse the auto-detection of lilypond-book... \begin{lilypond} diff --git a/input/regression/lilypond-book/tex-comments.lytex b/input/regression/lilypond-book/tex-comments.lytex index 72bf7f2a81..29505c51b8 100644 --- a/input/regression/lilypond-book/tex-comments.lytex +++ b/input/regression/lilypond-book/tex-comments.lytex @@ -15,7 +15,7 @@ The following snippet is preceded by a comment that would start a lilypond environment %%\begin{lilypond} -\begin{lilypond}[11pt,fragment] +\begin{lilypond}[staffsize=11,fragment] \context Voice <> \end{lilypond} diff --git a/input/regression/lilypond-book/tex-graphics-package-added.lytex b/input/regression/lilypond-book/tex-graphics-package-added.lytex index d94360ab54..b4b51b31cb 100644 --- a/input/regression/lilypond-book/tex-graphics-package-added.lytex +++ b/input/regression/lilypond-book/tex-graphics-package-added.lytex @@ -2,7 +2,7 @@ \begin{document} -\section{Lilypond-book should add the graphicx package} +\section{LilyPond-book should add the graphicx package} If a latex file does not yet include the graphicx package, it is added by lilypond-book. diff --git a/input/regression/lilypond-book/tex-include-file.lytex b/input/regression/lilypond-book/tex-include-file.lytex index 6705a7ff14..bcad93601b 100644 --- a/input/regression/lilypond-book/tex-include-file.lytex +++ b/input/regression/lilypond-book/tex-include-file.lytex @@ -1,5 +1,17 @@ \documentclass{article} \begin{document} -Including Lilypond file: +Including a LilyPond file without any options: + \lilypondfile{include2.ly} + +From a subdirectory: + +\lilypondfile{include/example.ly} + +Within a lilypond block: + +\begin{lilypond} + \include "include/myvar.ily" + \relative c'' { \myVar } +\end{lilypond} \end{document} diff --git a/input/regression/lilypond-book/tex-include-options.lytex b/input/regression/lilypond-book/tex-include-options.lytex index a53fb5dcd0..251fa087d8 100644 --- a/input/regression/lilypond-book/tex-include-options.lytex +++ b/input/regression/lilypond-book/tex-include-options.lytex @@ -1,5 +1,17 @@ \documentclass{article} \begin{document} -Including Lilypond file with options (quote and noindent): +Including a LilyPond file with options (quote and noindent): + \lilypondfile[quote,noindent]{include2.ly} + +From a subdirectory: + +\lilypondfile[quote,noindent]{include/example.ly} + +Within a lilypond block: + +\begin{lilypond}[quote,noindent] + \include "include/myvar.ily" + \relative c'' { \myVar } +\end{lilypond} \end{document} diff --git a/input/regression/lilypond-book/tex-inline-lilypond.lytex b/input/regression/lilypond-book/tex-inline-lilypond.lytex index 0d4886a5b0..cdc6c60c66 100644 --- a/input/regression/lilypond-book/tex-inline-lilypond.lytex +++ b/input/regression/lilypond-book/tex-inline-lilypond.lytex @@ -1,4 +1,4 @@ \documentclass{article} \begin{document} -Adding Lilypond code inline: \lilypond[relative=2]{ d g ceses } +Adding LilyPond code inline: \lilypond[relative=2]{ d g ceses } \end{document} diff --git a/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex b/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex index 91d78bb60f..5f525fc816 100644 --- a/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex +++ b/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex @@ -2,20 +2,20 @@ \begin{document} -\section{Lilypond snippets inside lists:} +\section{LilyPond snippets inside lists:} Itemize environment: \begin{itemize} \item -\lilypond[11pt,fragment]{ c'} do +\lilypond[staffsize=11,fragment]{ c'} do \item -\lilypond[11pt,fragment]{d'} re +\lilypond[staffsize=11,fragment]{d'} re \item -\lilypond[11pt,fragment]{e'} mi +\lilypond[staffsize=11,fragment]{e'} mi \item -\lilypond[11pt,fragment]{f'} fa +\lilypond[staffsize=11,fragment]{f'} fa \item -\lilypond[11pt,fragment]{g'} sol +\lilypond[staffsize=11,fragment]{g'} sol \end{itemize} \end{document} diff --git a/input/regression/lilypond-book/tex-lilypond-inside-table.lytex b/input/regression/lilypond-book/tex-lilypond-inside-table.lytex index a75c4df735..bd25edd182 100644 --- a/input/regression/lilypond-book/tex-lilypond-inside-table.lytex +++ b/input/regression/lilypond-book/tex-lilypond-inside-table.lytex @@ -2,7 +2,7 @@ \begin{document} -\section{Lilypond snippets inside tables:} +\section{LilyPond snippets inside tables:} Tables: @@ -10,10 +10,10 @@ Tables: \hline \em Notes & \em Name \\ \hline -\lilypond[11pt,fragment,filename="cdur"]{\context Voice <>} & major \\ -\lilypond[11pt,fragment]{\context Voice <>} & minor \\ -\lilypond[11pt,fragment]{\context Voice <>} & diminished \\ -\lilypond[11pt,fragment]{\context Voice <>} & augmented \\ +\lilypond[staffsize=11,fragment,filename="cdur"]{\context Voice <>} & major \\ +\lilypond[staffsize=11,fragment]{\context Voice <>} & minor \\ +\lilypond[staffsize=11,fragment]{\context Voice <>} & diminished \\ +\lilypond[staffsize=11,fragment]{\context Voice <>} & augmented \\ \hline \end{tabular} diff --git a/input/regression/lilypond-book/tex-musicxml-file-options.lytex b/input/regression/lilypond-book/tex-musicxml-file-options.lytex new file mode 100644 index 0000000000..daf1aa5586 --- /dev/null +++ b/input/regression/lilypond-book/tex-musicxml-file-options.lytex @@ -0,0 +1,5 @@ +\documentclass{article} +\begin{document} +Including a MusicXML file with options: +\musicxmlfile[language=deutsch,absolute,no-beaming]{include.xml} +\end{document} diff --git a/input/regression/lilypond-book/tex-musicxml-file.lytex b/input/regression/lilypond-book/tex-musicxml-file.lytex new file mode 100644 index 0000000000..f1df08562a --- /dev/null +++ b/input/regression/lilypond-book/tex-musicxml-file.lytex @@ -0,0 +1,5 @@ +\documentclass{article} +\begin{document} +Including a MusicXML file without options: +\musicxmlfile{include.xml} +\end{document} diff --git a/input/regression/lilypond-book/tex-paragraphs.lytex b/input/regression/lilypond-book/tex-paragraphs.lytex index da2452981e..f46683a15c 100644 --- a/input/regression/lilypond-book/tex-paragraphs.lytex +++ b/input/regression/lilypond-book/tex-paragraphs.lytex @@ -17,7 +17,7 @@ text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text -Next has no empty lines. +The next music has no surrounding empty lines. text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text diff --git a/input/regression/lilypond-book/tex-snippet-options.lytex b/input/regression/lilypond-book/tex-snippet-options.lytex index 1f175af37e..17f41dc8b7 100644 --- a/input/regression/lilypond-book/tex-snippet-options.lytex +++ b/input/regression/lilypond-book/tex-snippet-options.lytex @@ -4,32 +4,41 @@ \section{Snippet options} -Fragment: +This document shows the effect of various snippet options. + +The fragment option: + \begin{lilypond}[fragment] -c d e %\score +c' d' e' %\score \end{lilypond} -This shows the verbatim option: +The verbatim option: + \begin{lilypond}[fragment,verbatim] c' d' e' \end{lilypond} -printfilename: +The printfilename option: + \lilypondfile[printfilename]{include.ly} -staffsize: +The staffsize option: + \begin{lilypond}[staffsize=7,fragment] \context Voice <> \end{lilypond} \lilypond[fragment,staffsize=7]{\context Voice <>} -relative: +The relative option: + \lilypond[relative=1]{ c4 f b e } -quote: -\lilypond[quote,fragment]{\relative c' c1 } +The quote option: + +\lilypond[quote,fragment]{\relative c' c1 d4 c d e} + +Combining fragment, quote, staffsize=26, and verbatim options: -fragment, quote, staffsize=26, verbatim: \begin{lilypond}[fragment,quote,staffsize=26,verbatim] c'4 f16 \end{lilypond} diff --git a/input/regression/lilypond-book/tex-twocolumn.lytex b/input/regression/lilypond-book/tex-twocolumn.lytex index 69c10bb7be..b0f759f803 100644 --- a/input/regression/lilypond-book/tex-twocolumn.lytex +++ b/input/regression/lilypond-book/tex-twocolumn.lytex @@ -1,16 +1,39 @@ \documentclass[a4paper, 12pt]{article} -\begin{document} \twocolumn +\begin{document} \section{A latex file with two columns} -In this example, the width auto-detection shall detect the two columns -and produce snippets that have the smaller width for a column! +In this example, the width autodetection should detect the two-column +settings in the preamble of the document and produce snippets that +have the width of a column. + +\begin{lilypond} +\score{ + \relative c'{c d e f g a b c | c, d e f g a b c | c, d e f g a b c} +} +\end{lilypond} + +Wraping at the end of a column is similar to wraping at the end of a +page. + +Text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text. + +Text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text text text text text text text text text text text text text text +text. \begin{lilypond} \score{ - \relative c'{c d e f g a b c | c d e f g a b c | c d e f g a b c} + \relative c'{c d e f g a b c | c, d e f g a b c | c, d e f g a b c} } \end{lilypond} diff --git a/input/regression/lilypond-book/tex-verbatim.lytex b/input/regression/lilypond-book/tex-verbatim.lytex index 363138d454..8d0b71c31e 100644 --- a/input/regression/lilypond-book/tex-verbatim.lytex +++ b/input/regression/lilypond-book/tex-verbatim.lytex @@ -9,11 +9,15 @@ This file should not contain (and produce) any lilypond images! Snippets inside a verbatim environment or a comment are not run through lilypond, but left as is. +You should see the begin/end lilypond commands in all three of the below tests. + % TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now! % \verb|\lilypond[fragment]{c' d' e'}| % % and +The verbatim environment does not confuse lilypond-book: + \begin{verbatim} \begin{lilypond} c d e @@ -21,13 +25,10 @@ c d e \end{verbatim} -As you can see, the begin/end lilypond commands inside -do not confuse lilypond-book. - % TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now! % \verb|\begin{lilypond}[fragment]c d e\end{lilypond}| -% \verb+\lilypondfile[quote,noindent]{screech-boink.ly}+ +% \verb+\lilypondfile[quote,noindent]{screech-and-boink.ly}+ Neither does a verbatim inside verb: diff --git a/input/regression/lilypond-book/tex-version.lytex b/input/regression/lilypond-book/tex-version.lytex index 9509cc8a31..8573dfa8b7 100644 --- a/input/regression/lilypond-book/tex-version.lytex +++ b/input/regression/lilypond-book/tex-version.lytex @@ -1,4 +1,4 @@ \documentclass{article} \begin{document} -Lilypond version: \lilypondversion +LilyPond version: \lilypondversion \end{document} diff --git a/input/regression/lilypond-book/texinfo-include-file.tely b/input/regression/lilypond-book/texinfo-include-file.tely new file mode 100644 index 0000000000..610eb23a3e --- /dev/null +++ b/input/regression/lilypond-book/texinfo-include-file.tely @@ -0,0 +1,23 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename texinfo-include-file.info +@settitle Include lilypond files in texinfo + +@node Top +@top Include lilypond files in texinfo + +Lilypond files included in texinfo without any options: + +@lilypondfile{include2.ly} + +From a subdirectory: + +@lilypondfile{include/example.ly} + +Within a lilypond block: + +@lilypond + \include "include/myvar.ily" + \relative c'' { \myVar } +@end lilypond + +@bye diff --git a/input/regression/lilypond-book/texinfo-include-language-detection.tely b/input/regression/lilypond-book/texinfo-include-language-detection.tely index d4c4c1e396..55bb5c4e73 100644 --- a/input/regression/lilypond-book/texinfo-include-language-detection.tely +++ b/input/regression/lilypond-book/texinfo-include-language-detection.tely @@ -8,6 +8,11 @@ @node Top @top Texinfo language detection +@macro lydoctitle {TEXT} +@need 600 +@emph{\TEXT\} +@end macro + @include texinfo-include-language-detection-included.itely @bye diff --git a/input/regression/lilypond-book/texinfo-language-detection.tely b/input/regression/lilypond-book/texinfo-language-detection.tely index 7bf5289342..cf5adc868d 100644 --- a/input/regression/lilypond-book/texinfo-language-detection.tely +++ b/input/regression/lilypond-book/texinfo-language-detection.tely @@ -8,6 +8,11 @@ @node Top @top Texinfo language detection +@macro lydoctitle {TEXT} +@need 600 +@emph{\TEXT\} +@end macro + The texidoc of the following snippet should be "translated": @lilypondfile[printfilename,texidoc,doctitle]{include3.ily} diff --git a/input/regression/lilypond-book/texinfo-musicxml-file-options.tely b/input/regression/lilypond-book/texinfo-musicxml-file-options.tely new file mode 100644 index 0000000000..3a753a730e --- /dev/null +++ b/input/regression/lilypond-book/texinfo-musicxml-file-options.tely @@ -0,0 +1,12 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename texinfo-musicxml-file.info +@settitle MusicXML inside texinfo + +@node Top +@top MusicXML in texinfo + +A MusicXML file included in texinfo with options (language=deutsch, absolute, no-beaming): +@musicxmlfile[language=deutsch,absolute,no-beaming]{include.xml} + + +@bye diff --git a/input/regression/lilypond-book/texinfo-musicxml-file.tely b/input/regression/lilypond-book/texinfo-musicxml-file.tely new file mode 100644 index 0000000000..09391e2c09 --- /dev/null +++ b/input/regression/lilypond-book/texinfo-musicxml-file.tely @@ -0,0 +1,12 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +@setfilename texinfo-musicxml-file.info +@settitle MusicXML inside texinfo + +@node Top +@top MusicXML in texinfo + +A MusicXML file included in texinfo without any options: +@musicxmlfile{include.xml} + + +@bye diff --git a/input/regression/lilypond-book/papersize-docs.tely b/input/regression/lilypond-book/texinfo-papersize-docs.tely similarity index 98% rename from input/regression/lilypond-book/papersize-docs.tely rename to input/regression/lilypond-book/texinfo-papersize-docs.tely index e47e57fb25..9120bb6e53 100644 --- a/input/regression/lilypond-book/papersize-docs.tely +++ b/input/regression/lilypond-book/texinfo-papersize-docs.tely @@ -1,4 +1,4 @@ -\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: en -*- @setfilename papersize-docs.info @settitle Different paper sizes for documentation @documentencoding UTF-8 diff --git a/input/regression/line-arrows.ly b/input/regression/line-arrows.ly index dfae4a2f2a..affd3a7ab0 100644 --- a/input/regression/line-arrows.ly +++ b/input/regression/line-arrows.ly @@ -2,7 +2,7 @@ texidoc = "Arrows can be applied to text-spanners and line-spanners (such as the Glissando)" } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/line-dash-small-period.ly b/input/regression/line-dash-small-period.ly index def6afe7cd..a3542cb43e 100644 --- a/input/regression/line-dash-small-period.ly +++ b/input/regression/line-dash-small-period.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \relative c' { \override Staff.OttavaBracket #'dash-period = #0.1 diff --git a/input/regression/line-dashed-period.ly b/input/regression/line-dashed-period.ly index 4051398e65..3f63d32b5d 100644 --- a/input/regression/line-dashed-period.ly +++ b/input/regression/line-dashed-period.ly @@ -5,7 +5,7 @@ starts and ends on a full dash. " } -\version "2.14.0" +\version "2.16.0" \layout { indent = 0.0\mm diff --git a/input/regression/line-style-zigzag-spacing.ly b/input/regression/line-style-zigzag-spacing.ly index 8aaa4a0104..9d0a28137d 100644 --- a/input/regression/line-style-zigzag-spacing.ly +++ b/input/regression/line-style-zigzag-spacing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Setting @code{'zigzag} style for spanners does not diff --git a/input/regression/line-style.ly b/input/regression/line-style.ly index f3d31640ad..31f284e82f 100644 --- a/input/regression/line-style.ly +++ b/input/regression/line-style.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Cover all line styles available." diff --git a/input/regression/loglevels.ly b/input/regression/loglevels.ly new file mode 100644 index 0000000000..23ff272078 --- /dev/null +++ b/input/regression/loglevels.ly @@ -0,0 +1,43 @@ +\version "2.16.0" + +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Test warning\n")) +#(ly:expect-warning (_ "already have slur")) + +\header{ + texidoc=" +Test the different loglevels of lilypond. Run this file with --loglevel=NONE, +ERROR, WARNING, PROGRESS, DEBUG to see the different loglevels. The errors +are commented out. Comment them in to check the output manually. +" +} + +%%%% message functions of the Input class: +#(display "\nMessage functions of the Input class:\n" (current-error-port)) + +messageTest = #(define-music-function (parser location) () + (ly:input-message location "Test ly:input-message" ) + (make-music 'Music)) + +{ +% #(display "-) Testing message\n" (current-error-port)) + \messageTest % message +% #(display "-) Testing warning\n" (current-error-port)) + c4( c( c) % warning +% #(display "-) Testing error\n" (current-error-port)) +% sr % error +} + +%%%% message functions in the warn.hh file: +#(display "Message functions in the warn.hh file:\n" (current-error-port)) + +% #(display "-) Testing debug\n" (current-error-port)) +#(ly:debug "Test debug\n") +% #(display "-) Testing progress\n" (current-error-port)) +#(ly:progress "Test progress\n") +% #(display "-) Testing message\n" (current-error-port)) +#(ly:message "Test message\n") +% #(display "-) Testing warning\n" (current-error-port)) +#(ly:warning "Test warning\n") +% #(display "-) Testing error\n" (current-error-port)) +% #(ly:error "Test error\n" (current-error-port)) diff --git a/input/regression/lyric-combine-derived-voice.ly b/input/regression/lyric-combine-derived-voice.ly new file mode 100644 index 0000000000..0c7e45de15 --- /dev/null +++ b/input/regression/lyric-combine-derived-voice.ly @@ -0,0 +1,18 @@ +\version "2.16.0" +\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 index f87a266fc9..5c35ed00a2 100644 --- a/input/regression/lyric-combine-empty-warning.ly +++ b/input/regression/lyric-combine-empty-warning.ly @@ -1,4 +1,7 @@ -\version "2.14.2" +\version "2.16.0" + +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "cannot find Voice `%s'") "not-existing-notes") \header { @@ -8,7 +11,6 @@ no warning should be printed." } -#(ly:set-option 'warning-as-error #f) << \new Staff \new Voice = "notes" { diff --git a/input/regression/lyric-combine-new.ly b/input/regression/lyric-combine-new.ly index 16cc40bf18..053a23e1c4 100644 --- a/input/regression/lyric-combine-new.ly +++ b/input/regression/lyric-combine-new.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "With the @code{\\lyricsto} mechanism, individual lyric lines can be associated with one melody line. Each lyric line diff --git a/input/regression/lyric-combine-polyphonic.ly b/input/regression/lyric-combine-polyphonic.ly index eced3eae5e..16285dd6cf 100644 --- a/input/regression/lyric-combine-polyphonic.ly +++ b/input/regression/lyric-combine-polyphonic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="Polyphonic rhythms and rests do not disturb diff --git a/input/regression/lyric-combine-switch-voice-2.ly b/input/regression/lyric-combine-switch-voice-2.ly index e8e2e97b3e..4236de7c86 100644 --- a/input/regression/lyric-combine-switch-voice-2.ly +++ b/input/regression/lyric-combine-switch-voice-2.ly @@ -2,7 +2,7 @@ { texidoc = "switching voices in the middle of the lyrics is possible using @code{lyricsto}." } -\version "2.14.0" +\version "2.16.0" << \relative \new Voice = "lahlah" { diff --git a/input/regression/lyric-combine-switch-voice.ly b/input/regression/lyric-combine-switch-voice.ly index 1b50b1a2a1..d78a8a86b4 100644 --- a/input/regression/lyric-combine-switch-voice.ly +++ b/input/regression/lyric-combine-switch-voice.ly @@ -5,7 +5,7 @@ if the switch occurs together with context instantiation." } -\version "2.14.0" +\version "2.16.0" << \relative \new Voice = "lahlah" { diff --git a/input/regression/lyric-combine.ly b/input/regression/lyric-combine.ly index 0b5bf4db9c..9d0943f390 100644 --- a/input/regression/lyric-combine.ly +++ b/input/regression/lyric-combine.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ @@ -8,7 +8,7 @@ lyrics will be discarded. Lyrics will not be set over rests. You can have melismata either by setting a property melismaBusy, or by setting automaticMelismas (which will set melismas during slurs and ties). If you want a different order than first Music, then Lyrics, you must -precook a chord of staves/lyrics and label those. Of course, the +precook a chord of staves/@/lyrics and label those. Of course, the lyrics ignore any other rhythms in the piece." } diff --git a/input/regression/lyric-extender-broken.ly b/input/regression/lyric-extender-broken.ly index 0de0f3863a..7d36a12335 100644 --- a/input/regression/lyric-extender-broken.ly +++ b/input/regression/lyric-extender-broken.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/lyric-extender-completion.ly b/input/regression/lyric-extender-completion.ly index 7e7a79628d..fbe84a5422 100644 --- a/input/regression/lyric-extender-completion.ly +++ b/input/regression/lyric-extender-completion.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/lyric-extender-includegraces.ly b/input/regression/lyric-extender-includegraces.ly index 693555693d..cb34df9dcb 100644 --- a/input/regression/lyric-extender-includegraces.ly +++ b/input/regression/lyric-extender-includegraces.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/lyric-extender-no-heads.ly b/input/regression/lyric-extender-no-heads.ly index f263db9ae7..d99b486108 100644 --- a/input/regression/lyric-extender-no-heads.ly +++ b/input/regression/lyric-extender-no-heads.ly @@ -6,7 +6,7 @@ without a lyric attached." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/lyric-extender-rest.ly b/input/regression/lyric-extender-rest.ly index 94d84c2a6d..8f57a1753a 100644 --- a/input/regression/lyric-extender-rest.ly +++ b/input/regression/lyric-extender-rest.ly @@ -10,7 +10,7 @@ is not terminated upon encountering a rest. " ragged-right = ##T } -\version "2.14.0" +\version "2.16.0" << \new Voice = "one" \relative c'' { diff --git a/input/regression/lyric-extender-right-margin.ly b/input/regression/lyric-extender-right-margin.ly index 62029c715b..9b1a07bddc 100644 --- a/input/regression/lyric-extender-right-margin.ly +++ b/input/regression/lyric-extender-right-margin.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Extenders will not protrude into the right margin" } diff --git a/input/regression/lyric-extender.ly b/input/regression/lyric-extender.ly index 66a0360bcb..6df2a92b3a 100644 --- a/input/regression/lyric-extender.ly +++ b/input/regression/lyric-extender.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/lyric-hyphen-break.ly b/input/regression/lyric-hyphen-break.ly index b1ecf25294..2a67e35c02 100644 --- a/input/regression/lyric-hyphen-break.ly +++ b/input/regression/lyric-hyphen-break.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -29,8 +29,8 @@ they go past the first note. " } \addlyrics { bla16 -- bla -- bla -- bla -- bla -- bla -- bla -- bla8 -- - bla16 -- bla -- bla + bla16 -- bla -- bla } >> - + diff --git a/input/regression/lyric-hyphen-grace.ly b/input/regression/lyric-hyphen-grace.ly index 9535ea232a..94cfe25158 100644 --- a/input/regression/lyric-hyphen-grace.ly +++ b/input/regression/lyric-hyphen-grace.ly @@ -4,7 +4,7 @@ of a line if the grace's main note starts a new syllable." } -\version "2.14.0" +\version "2.16.0" << \new Staff { \appoggiatura f'8 g'2 g'( | \break diff --git a/input/regression/lyric-hyphen-retain.ly b/input/regression/lyric-hyphen-retain.ly index 9b965b0723..9428c029ab 100644 --- a/input/regression/lyric-hyphen-retain.ly +++ b/input/regression/lyric-hyphen-retain.ly @@ -14,7 +14,7 @@ effect of a setting is delayed is one syllable." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/lyric-hyphen.ly b/input/regression/lyric-hyphen.ly index 1a285722b7..bbff245607 100644 --- a/input/regression/lyric-hyphen.ly +++ b/input/regression/lyric-hyphen.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In lyrics, hyphens may be used." } diff --git a/input/regression/lyric-ignore-melisma-alignment.ly b/input/regression/lyric-ignore-melisma-alignment.ly index 994b8cfc04..5bda106f33 100644 --- a/input/regression/lyric-ignore-melisma-alignment.ly +++ b/input/regression/lyric-ignore-melisma-alignment.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If @code{ignoreMelismata} is set, lyrics should remain diff --git a/input/regression/lyric-melisma-alignment.ly b/input/regression/lyric-melisma-alignment.ly index 67d82abe8c..8e86687272 100644 --- a/input/regression/lyric-melisma-alignment.ly +++ b/input/regression/lyric-melisma-alignment.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@code{lyricMelismaAlignment} sets the default alignment for melismata. diff --git a/input/regression/lyric-melisma-manual.ly b/input/regression/lyric-melisma-manual.ly index a2d608abd8..d366988cc2 100644 --- a/input/regression/lyric-melisma-manual.ly +++ b/input/regression/lyric-melisma-manual.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Melismata may be entered manually by substituting diff --git a/input/regression/lyric-melisma-melisma.ly b/input/regression/lyric-melisma-melisma.ly index af0290ab22..ae46077db4 100644 --- a/input/regression/lyric-melisma-melisma.ly +++ b/input/regression/lyric-melisma-melisma.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A syllable aligned with a melisma delimited with @code{\melisma} and @code{\melismaEnd} should be left-aligned. diff --git a/input/regression/lyric-no-association-rhythm.ly b/input/regression/lyric-no-association-rhythm.ly index 669a53ae1d..84b07a52b9 100644 --- a/input/regression/lyric-no-association-rhythm.ly +++ b/input/regression/lyric-no-association-rhythm.ly @@ -8,7 +8,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \score { diff --git a/input/regression/lyric-octave-eight.ly b/input/regression/lyric-octave-eight.ly new file mode 100644 index 0000000000..f2985fa7ba --- /dev/null +++ b/input/regression/lyric-octave-eight.ly @@ -0,0 +1,16 @@ +\version "2.16.0" + +\header { + texidoc = "Lyrics should still slide under @code{TimeSignature} when an +@code{OctaveEight} is present. +" +} + +\new Staff { + \clef "treble_8" + b +} +\addlyrics { + \set stanza = "1." + aaa +} diff --git a/input/regression/lyric-phrasing.ly b/input/regression/lyric-phrasing.ly index 34724d77af..ab24aa3b22 100644 --- a/input/regression/lyric-phrasing.ly +++ b/input/regression/lyric-phrasing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/lyric-tie.ly b/input/regression/lyric-tie.ly index e1f2117adc..e8ad01dfb9 100644 --- a/input/regression/lyric-tie.ly +++ b/input/regression/lyric-tie.ly @@ -3,7 +3,7 @@ texidoc = "Tildes in lyric syllables are converted to tie symbols." } -\version "2.14.0" +\version "2.16.0" \lyrics { wa~o~a diff --git a/input/regression/lyric-tweak.ly b/input/regression/lyric-tweak.ly new file mode 100644 index 0000000000..aed4b8aae2 --- /dev/null +++ b/input/regression/lyric-tweak.ly @@ -0,0 +1,18 @@ +\header +{ + texidoc = "The @code{\\tweak} function can be used in Lyrics." +} + +\version "2.16.0" +\paper { + ragged-right = ##t +} + +\new Lyrics \lyricmode +{ + \markup \raise #1 \rotate #30 One 4 + \tweak #'extra-offset #'(0 . 2) fish, + \markup \raise #1 \rotate #-30 two fish, + \tweak #'color #red red fish, + \tweak #'color #blue blue fish. +} diff --git a/input/regression/lyrics-after-grace.ly b/input/regression/lyrics-after-grace.ly index 22f9c3a976..dafbe7d976 100644 --- a/input/regression/lyrics-after-grace.ly +++ b/input/regression/lyrics-after-grace.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/lyrics-aligned-above-stay-close-to-staff.ly b/input/regression/lyrics-aligned-above-stay-close-to-staff.ly index 1514066784..addf34a092 100644 --- a/input/regression/lyrics-aligned-above-stay-close-to-staff.ly +++ b/input/regression/lyrics-aligned-above-stay-close-to-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { title = "Aligned-above lyrics should stay close to their staff" diff --git a/input/regression/lyrics-bar.ly b/input/regression/lyrics-bar.ly index 1a82752274..c559bedebe 100644 --- a/input/regression/lyrics-bar.ly +++ b/input/regression/lyrics-bar.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/lyrics-includegraces.ly b/input/regression/lyrics-includegraces.ly index a3e778459d..ab2491d4ca 100644 --- a/input/regression/lyrics-includegraces.ly +++ b/input/regression/lyrics-includegraces.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/lyrics-melisma-beam.ly b/input/regression/lyrics-melisma-beam.ly index 4d1f4fc158..ba811ed8a9 100644 --- a/input/regression/lyrics-melisma-beam.ly +++ b/input/regression/lyrics-melisma-beam.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Melismata are triggered by manual beams. Notes in a diff --git a/input/regression/lyrics-no-notes.ly b/input/regression/lyrics-no-notes.ly index 924127a701..cb3fe3e868 100644 --- a/input/regression/lyrics-no-notes.ly +++ b/input/regression/lyrics-no-notes.ly @@ -6,7 +6,7 @@ paper column is very wide." \layout{ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" << \override Score.PaperColumn #'keep-inside-line = ##f \new Staff \relative c' { diff --git a/input/regression/lyrics-pass-under-bar.ly b/input/regression/lyrics-pass-under-bar.ly new file mode 100644 index 0000000000..90df8bffa9 --- /dev/null +++ b/input/regression/lyrics-pass-under-bar.ly @@ -0,0 +1,10 @@ +\version "2.16.0" + +\header { + texidoc = "Long lyrics should be allowed to pass under +the bar line. +" +} + +\relative c''' { c2 c c c } +\addlyrics { foo bar foooooooo bar } diff --git a/input/regression/lyrics-spanbar.ly b/input/regression/lyrics-spanbar.ly new file mode 100644 index 0000000000..7f1f8ca197 --- /dev/null +++ b/input/regression/lyrics-spanbar.ly @@ -0,0 +1,18 @@ +\version "2.16.0" + +\header { + texidoc = "Empty measures do not confuse @code{SpanBarStub}. +These lyrics should remain clear of the span bars. +" +} + +\new StaffGroup << + \new Staff { \repeat unfold 8 { R1 e'1 } } + \addlyrics { + Worked twice... + and then + I continued... + working... correctly. + } + \new Staff { R1*16 } +>> diff --git a/input/regression/lyrics-tenor-clef.ly b/input/regression/lyrics-tenor-clef.ly index 3d916d89bc..66acd5b324 100644 --- a/input/regression/lyrics-tenor-clef.ly +++ b/input/regression/lyrics-tenor-clef.ly @@ -2,7 +2,7 @@ texidoc = "Lyrics are not lowered despite the presence of an octavation 8." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/markup-arrows.ly b/input/regression/markup-arrows.ly index 2dfa45e6c5..4065545b4c 100644 --- a/input/regression/markup-arrows.ly +++ b/input/regression/markup-arrows.ly @@ -26,4 +26,4 @@ } } -\version "2.14.0" +\version "2.16.0" diff --git a/input/regression/markup-bidi-explicit-embedding.ly b/input/regression/markup-bidi-explicit-embedding.ly index 2393956321..ce0e31c16e 100644 --- a/input/regression/markup-bidi-explicit-embedding.ly +++ b/input/regression/markup-bidi-explicit-embedding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-bidi-explicit-overrides.ly b/input/regression/markup-bidi-explicit-overrides.ly index 5e1b0b76a8..15135ec6cb 100644 --- a/input/regression/markup-bidi-explicit-overrides.ly +++ b/input/regression/markup-bidi-explicit-overrides.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-bidi-implicit-marks.ly b/input/regression/markup-bidi-implicit-marks.ly index 234e44be41..e6c0deb064 100644 --- a/input/regression/markup-bidi-implicit-marks.ly +++ b/input/regression/markup-bidi-implicit-marks.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-bidi-pango.ly b/input/regression/markup-bidi-pango.ly index e532d17106..e7fea3dae5 100644 --- a/input/regression/markup-bidi-pango.ly +++ b/input/regression/markup-bidi-pango.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/markup-brace-warning.ly b/input/regression/markup-brace-warning.ly index 904a70a36b..cf8ef8dc91 100644 --- a/input/regression/markup-brace-warning.ly +++ b/input/regression/markup-brace-warning.ly @@ -1,6 +1,8 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "no brace found for point size ~S ") 10) +#(ly:expect-warning (_ "defaulting to ~S pt") 10.5) \header { texidoc = "If @code{\\left-brace} or @code{\\right-brace} cannot diff --git a/input/regression/markup-braces.ly b/input/regression/markup-braces.ly index 5878f18789..014d8e8725 100644 --- a/input/regression/markup-braces.ly +++ b/input/regression/markup-braces.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The markup command @code{\\left-brace} selects a diff --git a/input/regression/markup-center-align-nocollision.ly b/input/regression/markup-center-align-nocollision.ly new file mode 100644 index 0000000000..bb13a4cadb --- /dev/null +++ b/input/regression/markup-center-align-nocollision.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\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/markup-column-align.ly b/input/regression/markup-column-align.ly index 180b8825bd..99c7821b17 100644 --- a/input/regression/markup-column-align.ly +++ b/input/regression/markup-column-align.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Fixed horizontal alignment of columns of text can be set using diff --git a/input/regression/markup-commands.ly b/input/regression/markup-commands.ly index 5f52e9bb65..f3ececfd80 100644 --- a/input/regression/markup-commands.ly +++ b/input/regression/markup-commands.ly @@ -5,7 +5,7 @@ } \paper { ragged-right = ##T } -\version "2.14.0" +\version "2.16.0" \score{ { diff --git a/input/regression/markup-cyclic-reference.ly b/input/regression/markup-cyclic-reference.ly new file mode 100644 index 0000000000..9ca834b542 --- /dev/null +++ b/input/regression/markup-cyclic-reference.ly @@ -0,0 +1,26 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "Cyclic markup detected: %s") 'cycle-markup) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "Cyclic markup detected: %s") 'cycleI-markup) + +\header { + texidoc = "Cyclic markup definitions should cause a warning, but +not crash LilyPond with an endless loop" +} + +% A simple markup function that calls itself in a loop. +#(define-markup-command (cycle layout props m) + (markup?) + (interpret-markup layout props (make-cycle-markup m))) + +% Two simple markup functions that call each other in a loop. +#(define-markup-command (cycleI layout props m) + (markup?) + (interpret-markup layout props (make-cycleII-markup m))) +#(define-markup-command (cycleII layout props m) + (markup?) + (interpret-markup layout props (make-cycleI-markup m))) + + +\markup { \cycle "a" } +\markup { \cycleI "a" } diff --git a/input/regression/markup-depth-non-terminating.ly b/input/regression/markup-depth-non-terminating.ly new file mode 100644 index 0000000000..76db67f193 --- /dev/null +++ b/input/regression/markup-depth-non-terminating.ly @@ -0,0 +1,16 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "Markup depth exceeds maximal value of %d; Markup: %s") 1024 "recursive-explosion-markup") + +\header { + texidoc = "Markups have a maximum depth to prevent non-termination." + +} + +% A simple markup function that calls itself and increases its argument, so +% it will grow forever, unless we terminate it. +#(define-markup-command (recursive-explosion layout props nr) + (number?) + (interpret-markup layout props (make-recursive-explosion-markup (+ nr 1)))) + +\markup { Test: \recursive-explosion #1 } diff --git a/input/regression/markup-diacritic-marks.ly b/input/regression/markup-diacritic-marks.ly index 4f8b389de7..1a604a0769 100644 --- a/input/regression/markup-diacritic-marks.ly +++ b/input/regression/markup-diacritic-marks.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-eps.ly b/input/regression/markup-eps.ly index 4026d0587c..257de68051 100644 --- a/input/regression/markup-eps.ly +++ b/input/regression/markup-eps.ly @@ -3,7 +3,7 @@ texidoc = "The epsfile markup command reads an EPS file" } -\version "2.14.0" +\version "2.16.0" #(let* ((port (open-output-file "box.eps"))) diff --git a/input/regression/markup-eyeglasses.ly b/input/regression/markup-eyeglasses.ly index 8fa263aef2..a8d7684796 100644 --- a/input/regression/markup-eyeglasses.ly +++ b/input/regression/markup-eyeglasses.ly @@ -1,6 +1,6 @@ \header { texidoc = "The eyeglasses markup function prints out eyeglasses." } -\version "2.14.0" +\version "2.16.0" \relative c'' { \mark \markup{ \eyeglasses } c4_\markup{ \eyeglasses } } diff --git a/input/regression/markup-line-thickness.ly b/input/regression/markup-line-thickness.ly index 53eb619a3e..274e4f89b7 100644 --- a/input/regression/markup-line-thickness.ly +++ b/input/regression/markup-line-thickness.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/markup-lines-identifier.ly b/input/regression/markup-lines-identifier.ly index 579a735d9f..be144b352d 100644 --- a/input/regression/markup-lines-identifier.ly +++ b/input/regression/markup-lines-identifier.ly @@ -1,19 +1,19 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Text that can spread over pages is entered with the -@code{\\markuplines} command. It can be assigned to a variable and inserted -at top-level with or without preceding it by @code{\\markuplines}." +@code{\\markuplist} command. It can be assigned to a variable and inserted +at top-level with or without preceding it by @code{\\markuplist}." } #(set-default-paper-size "a6") -mytext = \markuplines { +mytext = \markuplist { \justified-lines { Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. ... } } -\markuplines \mytext +\markuplist \mytext \mytext diff --git a/input/regression/markup-lines.ly b/input/regression/markup-lines.ly index c0f61f2348..a0b0e18c87 100644 --- a/input/regression/markup-lines.ly +++ b/input/regression/markup-lines.ly @@ -1,10 +1,10 @@ -\version "2.14.0" +\version "2.16.0" \header { tagline = ##f texidoc = "Text that can spread over pages is entered with the -@code{\\markuplines} command. Widowed and orphaned lines are avoided -at the begininng and end of a @code{\\markuplines} containing more +@code{\\markuplist} command. Widowed and orphaned lines are avoided +at the begininng and end of a @code{\\markuplist} containing more than one line." } @@ -14,9 +14,9 @@ than one line." (interpret-markup-list layout props (make-justified-lines-markup-list (cons (make-hspace-markup 2) args)))) \book { - \markuplines {} % Empty list is handled gracefully + \markuplist {} % Empty list is handled gracefully %% Candide, Voltaire - \markuplines \override-lines #'(baseline-skip . 3.0) { + \markuplist \override-lines #'(baseline-skip . 3.0) { \paragraph { % The final two lines are placed on page 2. Il y avait en Westphalie, dans le château de M. le baron de Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné @@ -31,7 +31,7 @@ than one line." perdu par l'injure du temps. (not orphaned) } } - \markuplines \override-lines #'(baseline-skip . 3.9) { + \markuplist \override-lines #'(baseline-skip . 3.9) { \paragraph { Monsieur le baron était un des plus puissants seigneurs de la Westphalie, car son château avait une porte et des fenêtres. Sa @@ -42,7 +42,7 @@ than one line." riaient quand il faisait des contes. } } - \markuplines { + \markuplist { \paragraph { % A single-line paragraph may be orphaned Madame la ... (may be orphaned) } diff --git a/input/regression/markup-music-glyph.ly b/input/regression/markup-music-glyph.ly index 4aec56f9ee..4dda8b1754 100644 --- a/input/regression/markup-music-glyph.ly +++ b/input/regression/markup-music-glyph.ly @@ -1,6 +1,7 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Cannot find glyph ~a") "UNKNOWN-GLYPH") \header { texidoc = "Reset fontname for musicglyph. diff --git a/input/regression/markup-note-dot.ly b/input/regression/markup-note-dot.ly index 88319b9c8b..ea2fd05b9d 100644 --- a/input/regression/markup-note-dot.ly +++ b/input/regression/markup-note-dot.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " A dotted whole note displayed via the @code{\\note} diff --git a/input/regression/markup-note-grob-style.ly b/input/regression/markup-note-grob-style.ly index 8f3e882d97..24f8545c60 100644 --- a/input/regression/markup-note-grob-style.ly +++ b/input/regression/markup-note-grob-style.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The @code{'style} property from grobs such as diff --git a/input/regression/markup-note-styles.ly b/input/regression/markup-note-styles.ly index 11d655f442..bb1406b4cc 100644 --- a/input/regression/markup-note-styles.ly +++ b/input/regression/markup-note-styles.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@code{\\note-by-number} and @code{\\note} support diff --git a/input/regression/markup-note.ly b/input/regression/markup-note.ly index 7488531e2b..1fece8436e 100644 --- a/input/regression/markup-note.ly +++ b/input/regression/markup-note.ly @@ -3,7 +3,7 @@ texidoc = "The note markup function may be used to make metronome markings. It works for a variety of flag, dot and duration settings." } -\version "2.14.0" +\version "2.16.0" \score { \relative c'' diff --git a/input/regression/markup-path-fill.ly b/input/regression/markup-path-fill.ly index 6d0f5422a2..86f53604fc 100644 --- a/input/regression/markup-path-fill.ly +++ b/input/regression/markup-path-fill.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-path-linecap.ly b/input/regression/markup-path-linecap.ly index aca5352374..713f737290 100644 --- a/input/regression/markup-path-linecap.ly +++ b/input/regression/markup-path-linecap.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-path-linejoin.ly b/input/regression/markup-path-linejoin.ly index bf4aa5e112..659edfc06f 100644 --- a/input/regression/markup-path-linejoin.ly +++ b/input/regression/markup-path-linejoin.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-path.ly b/input/regression/markup-path.ly index dd5976f1a1..25ccc0dcfe 100644 --- a/input/regression/markup-path.ly +++ b/input/regression/markup-path.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/markup-scheme.ly b/input/regression/markup-scheme.ly index 7f5fd19e05..258ef98ffb 100644 --- a/input/regression/markup-scheme.ly +++ b/input/regression/markup-scheme.ly @@ -10,7 +10,7 @@ %{ -For maintenance reasons, we don't excercise the entire markup command set. +For maintenance reasons, we don't exercise the entire markup command set. %} @@ -25,7 +25,7 @@ For maintenance reasons, we don't excercise the entire markup command set. -\version "2.14.0" +\version "2.16.0" { \textLengthOn @@ -54,7 +54,7 @@ For maintenance reasons, we don't excercise the entire markup command set. \larger \sub "alike" } \break - f'1-#(markup* + f'1-$(markup "foo" #:raise 0.2 #:hbracket #:bold "bar" #:override '(baseline-skip . 4) diff --git a/input/regression/markup-score-multi-system.ly b/input/regression/markup-score-multi-system.ly index 6dd9f88d21..c0a9971bed 100644 --- a/input/regression/markup-score-multi-system.ly +++ b/input/regression/markup-score-multi-system.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "\\markup \\score displays all systems. Spacing between diff --git a/input/regression/markup-score.ly b/input/regression/markup-score.ly index 96fe251704..766149d6c6 100644 --- a/input/regression/markup-score.ly +++ b/input/regression/markup-score.ly @@ -2,7 +2,7 @@ texidoc = "Use \\score block as markup command." } -\version "2.14.0" +\version "2.16.0" tuning = \markup { \score { diff --git a/input/regression/markup-special-characters.ly b/input/regression/markup-special-characters.ly new file mode 100644 index 0000000000..8d3f2ce58f --- /dev/null +++ b/input/regression/markup-special-characters.ly @@ -0,0 +1,30 @@ +\version "2.16.0" +\header { + texidoc = " + A list of special character ASCII aliases can be easily included. + This works for markups and lyrics. +" +} + +\paper { + #(include-special-characters) + indent = 0 +} + +\markup \column { + \bold "Markup example:" + "Input:" + \override #'(replacement-alist . ()) \typewriter \justify { + №2 – &OE;dipe… + } + "Output:" + \italic \justify { + №2 – &OE;dipe… + } + \vspace #0.5 + \bold "Lyric example:" +} +\new Lyrics \lyricmode { + Ce&s;16 -- &s;ez In -- fi -- dè -- les, un c&oe;ur in -- no -- cent + ne craint rien&nnbsp;; +} diff --git a/input/regression/markup-stack.ly b/input/regression/markup-stack.ly index a461a7f87c..8de536008b 100644 --- a/input/regression/markup-stack.ly +++ b/input/regression/markup-stack.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header {texidoc="Markup scripts may be stacked."} \layout { ragged-right = ##t} { diff --git a/input/regression/markup-syntax.ly b/input/regression/markup-syntax.ly index 899909df27..cd475a1bbf 100644 --- a/input/regression/markup-syntax.ly +++ b/input/regression/markup-syntax.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Demo of markup texts, using LilyPond syntax." diff --git a/input/regression/markup-user.ly b/input/regression/markup-user.ly index 8c4afdf6ac..24a4fe4b8b 100644 --- a/input/regression/markup-user.ly +++ b/input/regression/markup-user.ly @@ -9,7 +9,7 @@ the @code{define-markup-command} scheme macro." -\version "2.14.0" +\version "2.16.0" #(define-markup-command (upcase paper props str) (string?) "Upcase the string characters. Syntax: \\upcase #\"string\"" diff --git a/input/regression/markup-word-wrap.ly b/input/regression/markup-word-wrap.ly index b9d58998bc..63b28b92fa 100644 --- a/input/regression/markup-word-wrap.ly +++ b/input/regression/markup-word-wrap.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \markup { this is normal text diff --git a/input/regression/measure-grouping.ly b/input/regression/measure-grouping.ly index 0e35f38b33..5fa0b8723b 100644 --- a/input/regression/measure-grouping.ly +++ b/input/regression/measure-grouping.ly @@ -7,7 +7,7 @@ brackets above beats when the beats of a time signature are grouped. " } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t @@ -20,13 +20,13 @@ brackets above beats when the beats of a time signature are grouped. " } \relative c' { - #(set-time-signature 2 4) + \time 2/4 c8 a'4 a8~ - #(set-time-signature 5 8 '(3 2)) + \time #'(3 2) 5/8 a8 bes4 r8 bes8-> \time 2/4 c,8 g'4 g8~ - #(set-time-signature 5 8 '(3 2)) + \time #'(3 2) 5/8 g8 a4 g a4.-> } diff --git a/input/regression/mensural-ligatures.ly b/input/regression/mensural-ligatures.ly index eb87f9c6e2..246a514811 100644 --- a/input/regression/mensural-ligatures.ly +++ b/input/regression/mensural-ligatures.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Mensural ligatures show different shapes, depending on the @@ -25,7 +25,7 @@ \clef "petrucci-c4" \set Staff.printKeyCancellation = ##f \cadenzaOn % turn off bar lines - #(set-accidental-style 'forget) + \accidentalStyle "forget" \textLengthOn % ligaturae binaria @@ -309,7 +309,7 @@ \clef "petrucci-c5" \set Staff.printKeyCancellation = ##f \cadenzaOn % turn off bar lines - #(set-accidental-style 'forget) + \accidentalStyle "forget" \textLengthOn \[ diff --git a/input/regression/mensural.ly b/input/regression/mensural.ly index 58da11d407..bf2fae37d8 100644 --- a/input/regression/mensural.ly +++ b/input/regression/mensural.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "There is limited support for mensural notation: note head diff --git a/input/regression/metronome-mark-broken-bound.ly b/input/regression/metronome-mark-broken-bound.ly new file mode 100644 index 0000000000..e75549626a --- /dev/null +++ b/input/regression/metronome-mark-broken-bound.ly @@ -0,0 +1,36 @@ +\version "2.16.0" + +\header { +texidoc = "A @code{MetronomeMark}, @code{RehearsalMark} and @code{BarNumber} +should not effect the starting point of spanners. +" +} + +<< + \new Staff { + e'1 \time 4/4 \break | + \tempo \markup { "fooooo" } 4 = 90 + e'1 | + e'1 | + } + + \new Staff { + \override Score.MetronomeMark #'break-visibility = #all-visible + \override TupletBracket #'breakable = ##t + \override Beam #'breakable = ##t + \override Glissando #'breakable = ##t + + \ottava #1 \times 1/1 { e'8\<\startTextSpan\startTrillSpan\glissando + [ \override NoteColumn #'glissando-skip = ##t\repeat unfold 22 e'8 + \revert NoteColumn #'glissando-skip e'8\!\stopTextSpan\stopTrillSpan ] } | + } + \addlyrics { ah __ \repeat unfold 21 { \skip 4 } _ rrgh } + \addlyrics { ah -- \repeat unfold 21 { \skip 4 } _ rrgh } +>> + +\layout { + \context { + \Voice + \remove "Forbid_line_break_engraver" + } +} diff --git a/input/regression/metronome-mark-loose-column.ly b/input/regression/metronome-mark-loose-column.ly index 799b14ef69..dd6f44b004 100644 --- a/input/regression/metronome-mark-loose-column.ly +++ b/input/regression/metronome-mark-loose-column.ly @@ -1,4 +1,4 @@ -\version "2.14.2" +\version "2.16.0" \header { texidoc = "Metronome marks aligned on notes do not interfere with diff --git a/input/regression/metronome-marking-align-order.ly b/input/regression/metronome-marking-align-order.ly index 3c5f596dc3..18edbe5859 100644 --- a/input/regression/metronome-marking-align-order.ly +++ b/input/regression/metronome-marking-align-order.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Metronome marks respect symbol order in diff --git a/input/regression/metronome-marking-break-align.ly b/input/regression/metronome-marking-break-align.ly index 6d21f0203d..849ebb6146 100644 --- a/input/regression/metronome-marking-break-align.ly +++ b/input/regression/metronome-marking-break-align.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@code{\\tempo} marks are aligned with the time signature diff --git a/input/regression/metronome-marking.ly b/input/regression/metronome-marking.ly index 4726024b70..e987176b7e 100644 --- a/input/regression/metronome-marking.ly +++ b/input/regression/metronome-marking.ly @@ -14,7 +14,7 @@ The marking is left aligned with the time signature, if there is one. \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { \tempo \breve = 100 c1 c1 \tempo 8.. = 50 c1 diff --git a/input/regression/metronome-multimeasure-rest-no-segfault.ly b/input/regression/metronome-multimeasure-rest-no-segfault.ly index ceec61db50..6b8d2f82e7 100644 --- a/input/regression/metronome-multimeasure-rest-no-segfault.ly +++ b/input/regression/metronome-multimeasure-rest-no-segfault.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " A metronome marking can be added to a multimeasure rest whose diff --git a/input/regression/metronome-parenthesized.ly b/input/regression/metronome-parenthesized.ly index b8d841f006..f4c3f8cd26 100644 --- a/input/regression/metronome-parenthesized.ly +++ b/input/regression/metronome-parenthesized.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/metronome-range.ly b/input/regression/metronome-range.ly index 29a4a15ddc..ac6b5c67a3 100644 --- a/input/regression/metronome-range.ly +++ b/input/regression/metronome-range.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " @@ -10,9 +10,8 @@ printed with an en-dash character, separated by thin-spaces. \relative c'' { \tempo 4 = 66 ~ 72 c1 | c - #(ly:export - (make-event-chord (list (make-music 'TempoChangeEvent + $(make-event-chord (list (make-music 'TempoChangeEvent 'tempo-unit (ly:make-duration 2 0 1 1) - 'metronome-count (cons 124 132))))) + 'metronome-count (cons 124 132)))) c1 | c } diff --git a/input/regression/metronome-text.ly b/input/regression/metronome-text.ly index f5f826a673..2dacf798c0 100644 --- a/input/regression/metronome-text.ly +++ b/input/regression/metronome-text.ly @@ -1,18 +1,17 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" -The tempo command supports text markup and/or duration=count. Using -@code{Score.tempoHideNote}, one can hide the duration=count in the tempo mark. +The tempo command supports text markup and/@/or `duration=count'. Using +@code{Score.tempoHideNote}, one can hide the `duration=count' in the tempo mark. " } \relative c'' { \tempo "Allegro" c1 \tempo "Allegro" c1 - #(ly:export - (make-event-chord (list (make-music 'TempoChangeEvent - 'text "blah")))) + $(make-event-chord (list (make-music 'TempoChangeEvent + 'text "blah"))) d1 \tempo \markup { \italic \medium "Allegro" } c1 \break \tempo 4 = 120 c1 diff --git a/input/regression/midi-drums.ly b/input/regression/midi-drums.ly index 7f6870f680..47ccaadbbe 100644 --- a/input/regression/midi-drums.ly +++ b/input/regression/midi-drums.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Midi can create drums." } diff --git a/input/regression/midi-dynamics.ly b/input/regression/midi-dynamics.ly index 9194bf2d58..05f0b9b282 100644 --- a/input/regression/midi-dynamics.ly +++ b/input/regression/midi-dynamics.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \score { \relative c' { diff --git a/input/regression/midi-grace.ly b/input/regression/midi-grace.ly index 64d6273b4d..eb06b5e83b 100644 --- a/input/regression/midi-grace.ly +++ b/input/regression/midi-grace.ly @@ -5,7 +5,7 @@ off will appear at tick 768 (2 * 384)." } -\version "2.14.0" +\version "2.16.0" \score { \relative c' { c4 diff --git a/input/regression/midi-key-signature.ly b/input/regression/midi-key-signature.ly index ce95beb1b6..89989f2529 100644 --- a/input/regression/midi-key-signature.ly +++ b/input/regression/midi-key-signature.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "MIDI key signatures are output, using an approximate key signature if MIDI format cannot represent the true key signature" diff --git a/input/regression/midi-lyric-barcheck.ly b/input/regression/midi-lyric-barcheck.ly index 4a2c973b0c..16c658e1e9 100644 --- a/input/regression/midi-lyric-barcheck.ly +++ b/input/regression/midi-lyric-barcheck.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Lyrics in MIDI are aligned to ties and beams: diff --git a/input/regression/midi-microtone-off.ly b/input/regression/midi-microtone-off.ly index 9524f6c0aa..abcd7547fa 100644 --- a/input/regression/midi-microtone-off.ly +++ b/input/regression/midi-microtone-off.ly @@ -4,7 +4,7 @@ the next (possibly grace) note. " } -\version "2.14.0" +\version "2.16.0" \score { diff --git a/input/regression/midi-microtone.ly b/input/regression/midi-microtone.ly index 4d1216d35e..eac7d61144 100644 --- a/input/regression/midi-microtone.ly +++ b/input/regression/midi-microtone.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The pitch wheel is used for microtones." } diff --git a/input/regression/midi-notes.ly b/input/regression/midi-notes.ly index 7ed715d36f..95c1dae1c7 100644 --- a/input/regression/midi-notes.ly +++ b/input/regression/midi-notes.ly @@ -6,7 +6,7 @@ Run @code{timidity -idvvv file.midi |grep Midi} to see midi events." } -\version "2.14.0" +\version "2.16.0" \score { << diff --git a/input/regression/midi-partial.ly b/input/regression/midi-partial.ly index 72cb7c611f..aa7f3b1488 100644 --- a/input/regression/midi-partial.ly +++ b/input/regression/midi-partial.ly @@ -1,7 +1,7 @@ \header { texidoc = "MIDI and partial measures work together." } -\version "2.14.0" +\version "2.16.0" \score { { \partial 4 diff --git a/input/regression/midi-pedal.ly b/input/regression/midi-pedal.ly index e9c4f23da1..a35fb5d9e9 100644 --- a/input/regression/midi-pedal.ly +++ b/input/regression/midi-pedal.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \score { \relative c' { diff --git a/input/regression/midi-scales.ly b/input/regression/midi-scales.ly index 6c9a6f2083..9c46fd1934 100644 --- a/input/regression/midi-scales.ly +++ b/input/regression/midi-scales.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" % candidate for regression. -gp \header { texidoc="Converting LilyPond input to MIDI and then again back with diff --git a/input/regression/midi-transposition.ly b/input/regression/midi-transposition.ly index 797331de03..1a777a6aa0 100644 --- a/input/regression/midi-transposition.ly +++ b/input/regression/midi-transposition.ly @@ -2,7 +2,7 @@ { texidoc = "should deliver f' in MIDI" } -\version "2.14.0" +\version "2.16.0" \score { { diff --git a/input/regression/midi-tuplets.ly b/input/regression/midi-tuplets.ly index 43b8fcde08..11153ded7d 100644 --- a/input/regression/midi-tuplets.ly +++ b/input/regression/midi-tuplets.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/midi-unisons.ly b/input/regression/midi-unisons.ly index e3c5f1b505..a6eea325fa 100644 --- a/input/regression/midi-unisons.ly +++ b/input/regression/midi-unisons.ly @@ -7,7 +7,7 @@ either the first note is truncated, or the notes are merged if } -\version "2.14.2" +\version "2.16.0" \score { { diff --git a/input/regression/midi-volume-equaliser.ly b/input/regression/midi-volume-equaliser.ly index df240189cd..fe2404bdda 100644 --- a/input/regression/midi-volume-equaliser.ly +++ b/input/regression/midi-volume-equaliser.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@cindex Midi Volume Equaliser The full orchestra plays a note, where groups stop one after @@ -124,10 +124,7 @@ violoncello = \relative c' { >> \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 60 1) - } + \tempo 1 = 60 } } diff --git a/input/regression/midi/key-initial.ly b/input/regression/midi/key-initial.ly index f1a8f00833..9dfe77b721 100644 --- a/input/regression/midi/key-initial.ly +++ b/input/regression/midi/key-initial.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out/initial-key.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/midi/key-option-all-staves.ly b/input/regression/midi/key-option-all-staves.ly index 2ba3fa8d27..4a788566e7 100644 --- a/input/regression/midi/key-option-all-staves.ly +++ b/input/regression/midi/key-option-all-staves.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Midi2ly --key works on all staves, this is G major (--key=1)" diff --git a/input/regression/midi/key-option.ly b/input/regression/midi/key-option.ly index 47b96b4cc7..1978cc50c2 100644 --- a/input/regression/midi/key-option.ly +++ b/input/regression/midi/key-option.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/option-key.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { @@ -19,7 +19,7 @@ % included from ./out-www/option-key.header \header { -texidoc="midi2ly @code{--key} works, this is F major" +texidoc="@code{midi2ly}'s option @option{--key} works, this is F major." options="--key=-1" } % end diff --git a/input/regression/midi/lyrics-addlyrics.ly b/input/regression/midi/lyrics-addlyrics.ly index c84077abce..982f7da5fa 100644 --- a/input/regression/midi/lyrics-addlyrics.ly +++ b/input/regression/midi/lyrics-addlyrics.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out/initial-key.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/midi/partcombine.ly b/input/regression/midi/partcombine.ly index 6cd50b03d9..66bf3a7b1a 100644 --- a/input/regression/midi/partcombine.ly +++ b/input/regression/midi/partcombine.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/midi/quantize-duration-2.ly b/input/regression/midi/quantize-duration-2.ly index 26f7d65a7c..adae24327a 100644 --- a/input/regression/midi/quantize-duration-2.ly +++ b/input/regression/midi/quantize-duration-2.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by out/bin/midi2ly from /home/janneke/testmidi.mid -\version "2.14.0" +\version "2.16.0" \layout { \context { @@ -18,7 +18,7 @@ } \header { -texidoc="midi2ly @code{--duration-quant} preserves first note length (16)" +texidoc="@code{midi2ly}'s option @option{--duration-quant} preserves first note length (16)." options="--duration-quant=16" } diff --git a/input/regression/midi/quantize-duration.ly b/input/regression/midi/quantize-duration.ly index f0d6bed9ae..2290663371 100644 --- a/input/regression/midi/quantize-duration.ly +++ b/input/regression/midi/quantize-duration.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { @@ -19,7 +19,7 @@ % included from ./out-www/voice-2.header \header { -texidoc="midi2ly @code{--duration-quant} quantizes durations of notes" +texidoc="@code{midi2ly}'s option @option{--duration-quant} quantizes durations of notes." options="--duration-quant=4" } % end diff --git a/input/regression/midi/quantize-start.ly b/input/regression/midi/quantize-start.ly index 2e5497f11e..b8e984e233 100644 --- a/input/regression/midi/quantize-start.ly +++ b/input/regression/midi/quantize-start.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { @@ -19,7 +19,7 @@ % included from ./out-www/voice-2.header \header { -texidoc="midi2ly @code{--start-quant} quantizes start of notes" +texidoc="@code{midi2ly}'s option @option{--start-quant} quantizes start of notes." options="--start-quant=4" } % end diff --git a/input/regression/midi/rest-dynamic.ly b/input/regression/midi/rest-dynamic.ly index ae1232b297..80de858bbe 100644 --- a/input/regression/midi/rest-dynamic.ly +++ b/input/regression/midi/rest-dynamic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="LilyPond respects rests, also when there are dynamics" options="" diff --git a/input/regression/midi/rest.ly b/input/regression/midi/rest.ly index 01e3c056e6..4aa3de56dd 100644 --- a/input/regression/midi/rest.ly +++ b/input/regression/midi/rest.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/rest.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/midi/staff-map-instrument.ly b/input/regression/midi/staff-map-instrument.ly index 46ae610b8c..6c4e8be5a8 100644 --- a/input/regression/midi/staff-map-instrument.ly +++ b/input/regression/midi/staff-map-instrument.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Midi2ly remaps voices correctly to staves in MIDI-files that use instrument<->channel mapping when combined with voice<->track mapping. TODO: pianostaff" diff --git a/input/regression/midi/staff-map-voice.ly b/input/regression/midi/staff-map-voice.ly index baa1f75bc6..dc76603ffe 100644 --- a/input/regression/midi/staff-map-voice.ly +++ b/input/regression/midi/staff-map-voice.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Midi2ly remaps voices correctly to staves in MIDI-files that use voice<->channel mapping when combined with staff<->track mapping. TODO: pianostaff" diff --git a/input/regression/midi/voice-2.ly b/input/regression/midi/voice-2.ly index 3a0d68b170..be0c4f5bee 100644 --- a/input/regression/midi/voice-2.ly +++ b/input/regression/midi/voice-2.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/midi/voice-4.ly b/input/regression/midi/voice-4.ly index 2ef09e7b69..7ca89e9385 100644 --- a/input/regression/midi/voice-4.ly +++ b/input/regression/midi/voice-4.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-4.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/midi/voice-5.ly b/input/regression/midi/voice-5.ly index 184b7865b9..a91c26c8e1 100644 --- a/input/regression/midi/voice-5.ly +++ b/input/regression/midi/voice-5.ly @@ -1,5 +1,5 @@ % Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-4.midi -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/mm-rests2.ly b/input/regression/mm-rests2.ly index 2f920fa28e..4c8db2eb04 100644 --- a/input/regression/mm-rests2.ly +++ b/input/regression/mm-rests2.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/modal-transforms.ly b/input/regression/modal-transforms.ly index cc50074660..d514a92a09 100644 --- a/input/regression/modal-transforms.ly +++ b/input/regression/modal-transforms.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "\modalTranspose, \retrograde, \inversion and \modalInversion work for an octatonic motif." diff --git a/input/regression/modern-tab-clef-scaled.ly b/input/regression/modern-tab-clef-scaled.ly index d1ad29e231..186b71c0eb 100644 --- a/input/regression/modern-tab-clef-scaled.ly +++ b/input/regression/modern-tab-clef-scaled.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "The sans serif style tab clef is automatically adjusted to different string spacings." @@ -36,4 +36,4 @@ guitar = \relative c { \guitar } >> -} \ No newline at end of file +} diff --git a/input/regression/modern-tab-clef.ly b/input/regression/modern-tab-clef.ly index b9fc3f945e..7c3110b396 100644 --- a/input/regression/modern-tab-clef.ly +++ b/input/regression/modern-tab-clef.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Sans serif style tab clefs are supported by @code{\\clef moderntab}. This alternative clef supports four- to seven-stringed instruments @@ -41,4 +41,4 @@ guitar = \relative c { \guitar } >> -} \ No newline at end of file +} diff --git a/input/regression/morgenlied.ly b/input/regression/morgenlied.ly index 9d67c32ca2..1a19c523ff 100644 --- a/input/regression/morgenlied.ly +++ b/input/regression/morgenlied.ly @@ -27,7 +27,7 @@ been lowered } -\version "2.14.0" +\version "2.16.0" manuscriptBreak = { \break } @@ -52,8 +52,9 @@ modernAccidentals = { melody = \relative c'' \repeat volta 2 \new Voice = "singer" { \time 6/8 \autoBeamOff - s1*0^\markup { \bold \large\larger\larger { \hspace #-3.0 Lieblich, etwas geschwind } } - R2. + << s2.^\markup { \bold \large\larger\larger { \hspace #-3.0 Lieblich, etwas geschwind } } + R2. + >> r4 r8 c4 g8 | e4 c8 << @@ -106,12 +107,12 @@ secondVerse = \lyricmode { } pianoRH = \relative c''' \repeat volta 2 { - #(set-accidental-style 'modern) + \accidentalStyle "modern" g16(_\p fis a g fis g f e d c b a ) | 8( ) r8 r | r8 c'( e,) f r a | \once \override DynamicLineSpanner #'padding =#3 - r8 << { s8 s8 } << { fis(\> g)\! + r8 << { s8\> s8\! } << { fis( g) } \\ { c,4 } >> >> r8 | 4. r8 \clef bass | e,16_" "_\markup { \bold\italic cresc. } g c g e g d gis b gis d gis | @@ -127,7 +128,7 @@ pianoRH = \relative c''' \repeat volta 2 { } pianoLH = \relative c'' \repeat volta 2 { - #(set-accidental-style 'modern) + \accidentalStyle "modern" g16( fis a g fis g f e d c b a) | \clef bass g4.( c,8) r r \clef treble r4 8([ )] r | @@ -154,7 +155,7 @@ pianoLH = \relative c'' \repeat volta 2 { \score { << \time 6/8 \new Staff << - \context Staff #(set-accidental-style 'modern) + \context Staff \accidentalStyle "modern" \melody >> \lyricsto "singer" \new Lyrics \firstVerse \lyricsto "singer" \new Lyrics \secondVerse @@ -180,10 +181,7 @@ pianoLH = \relative c'' \repeat volta 2 { } } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 70 4) - } + \tempo 4 = 70 } } } diff --git a/input/regression/mozart-hrn-3.ly b/input/regression/mozart-hrn-3.ly index 985b415a9e..3908f6bc60 100644 --- a/input/regression/mozart-hrn-3.ly +++ b/input/regression/mozart-hrn-3.ly @@ -19,19 +19,27 @@ source = "Edition Breitkopf 2563" footer = "Mutopia-2002/05/21-25" - tagline = \markup { \smaller - \column { - \fill-line { \footer "" } - \fill-line { { "This music is part of the Mutopia project," - \typewriter { "http://mutopiaproject.org/" } - } } - \fill-line { #(ly:export (string-append "It has been typeset and placed in the public " - "domain by " maintainer ".")) } - \fill-line { #(ly:export (string-append "Unrestricted modification and redistribution" - " is permitted and encouraged---copy this music" - " and share it!")) } - } - } + tagline = \markup { + \smaller \column { + \fill-line { \footer "" } + \fill-line { + \line { "This music is part of the Mutopia project," + \typewriter { "http://mutopiaproject.org/" } + } + } + \fill-line { + #(string-append "It has been typeset and placed in the public " + "domain by " maintainer ".") + } + \fill-line { + \line { + "Unrestricted modification and redistribution" + "is permitted and encouraged - copy this music" + "and share it!" + } + } + } + } texidoc=" This is the Mozart 3 for horn. It's from an Edition Breitkopf EB @@ -40,7 +48,7 @@ virtuoso that taught in Geneva. " } -\version "2.14.0" +\version "2.16.0" \include "mozart-hrn3-defs.ily" \include "mozart-hrn3-allegro.ily" @@ -48,58 +56,52 @@ virtuoso that taught in Geneva. \include "mozart-hrn3-rondo.ily" \paper { - obsolete-between-system-space = 20 \mm - system-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space) - score-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space) + system-system-spacing #'basic-distance = 10 + score-system-spacing #'basic-distance = 20 } - \book { - \score { - { \transpose c' bes \allegro } - \layout { } - \header { piece = "Allegro" opus = "" } - - \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 90 4) - } + \score { + { \transpose c' bes \allegro } + \layout { } + \header { + piece = "Allegro" + opus = "" } - + \midi { + \tempo 4 = 90 } + } - \score { - { \transpose c' bes \romanze } - \header { piece = "Romanze" opus = "" } - - \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 70 4) - } + \score { + { \transpose c' bes \romanze } + \header { + piece = "Romanze" + opus = "" } - - \layout {} + \midi { + \tempo 4 = 70 } - \score - { - { \transpose c' bes \rondo } - \header { piece = "Rondo" opus = "" } + \layout { } + } - \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 100 4) - } + \score + { + { \transpose c' bes \rondo } + \header { + piece = "Rondo" + opus = "" } - - \layout { } + \midi { + \tempo 4 = 100 } + + \layout { } + } } %% Local Variables: diff --git a/input/regression/mozart-hrn3-allegro.ily b/input/regression/mozart-hrn3-allegro.ily index 5f4f1d7269..5aff496652 100644 --- a/input/regression/mozart-hrn3-allegro.ily +++ b/input/regression/mozart-hrn3-allegro.ily @@ -1,198 +1,158 @@ -\version "2.11.61" -\include "mozart-hrn3-defs.ily" +\version "2.16.0" +\include "mozart-hrn3-defs.ily" -allegro = - - \relative c' -{ - \time 4/4 - \key c \major - \partial 4 - r4 - | - R1*4 - c'2^"Tutti" g - c, r - R1*1 - r8 g' g g g g e c - g'4 g, r2 - R1*18 - r2 r4^"Solo" g'4 | - \mark "A" - e'4. ( c8) f[ (d c b) ] - b[( c)] g4 r8 g[ c e] - g2. g16[( f e f)] - dis4 ( e4) r8 c8[-. c-. c-.] - c4.( d16[ e] f4 e) - a,( d g, c) - d-. d-. \grace { - \override Stem #'stroke-style = #"grace" - e16( - \revert Stem #'stroke-style } - d8.[) c16 d8. e16] - c4 r r2 - R1*3 - c,2 ~ c8[ e g c] - c[ b ] b4 r2 - c,8[ ( e) g c] e[( g) e c] - c[( b)] b4 r2 - c4.( g8 e'4. c8) - g'[( d) ] d4 r4 d - d8[ ( c)] c4.( d16[ e] d8[ c)] - c8[(\trill b)] b4 r2 | - d2( ~ d8[ e16 d] c8[ b)] | - b[( a)] a4 r8 a[ a a] - a4( cis e g) - \grace { - \override Stem #'stroke-style = #"grace" - \longgrace g16( \endlonggrace - \revert Stem #'stroke-style } +allegro = \relative c' { + \time 4/4 + \key c \major + \partial 4 + r4 \p + | + R1*4 + c'2^"Tutti" g + c, r + R1*1 + r8 g' g g g g e c + g'4 g, r2 + R1*18 + r2 r4^"Solo" g'4 | + \mark "A" + e'4. ( c8) f[ (d c b) ] + b[( c)] g4 r8 g[ c e] + g2. g16[( f e f)] + dis4 ( e4) r8 c8[-. c-. c-.] + c4.( d16[ e] f4 e) + a,( d g, c) + d-. d-. \acciaccatura e16 + d8.[ c16 d8. e16] + c4 r r2 + R1*3 + c,2 ~ c8[ e g c] + c[ b ] b4 r2 + c,8[ ( e) g c] e[( g) e c] + c[( b)] b4 r2 + c4.( g8 e'4. c8) + g'[( d) ] d4 r4 d + d8[ ( c)] c4.( d16[ e] d8[ c)] + c8[(\trill b)] b4 r2 | + d2( ~ d8[ e16 d] c8[ b)] | + b[( a)] a4 r8 a[ a a] + a4( cis e g) + \appoggiatura g16 + fis8[( e16 d)] d4-. r2 | + \mark "B" + R1*3 + r2 r4 d8[(_\markup { \italic \bold "con espressione" } b) ] + a[( g) d'( b)] a[( g) e'( c) ] + b8[( a)] a4 r4 a8[ a] + a[( \< b c cis\!\> ] d4 c\!) + ais8[( b)] r8 b\cresc b[( c)] r c + cis[ ( d)] r4 r2 + g,1\!\f ~ g2 ~ g8[ a16 b] c[( d) e c] + %% 64 + f4-. d-. b-. g-. + R1 + c,2\p e4 g c e\cresc g4. e8 | + d4.\!\f e16[ fis] g[ ( fis) e d] c[( b) a g] + \afterGrace a1(\trill { g16[ a] } + \mark "C" + g4) r r2 + R1*15 + \mark "D" + bes2\mf d4 f + g,2~ g8[ g' es c]| + bes4( a4.) c8[( d es)] + cis4( d) r8 bes[ (c d)] + es2 ( d4) r + es2 ( d4) r + c8[( g' es c)] bes4( c) + c4.( cis8 d4) r + R1*2 + es1~es1| + e! + d + c + c, + e' + e, + c'2 b8[( a gis a)] + gis8[ e gis b ] e4 r | + r8 e,[ a c] dis4 r + r8 e,[ gis b ] e4 r + r8 e,[ a c] dis4 r + r8 e,[ g b] e4 r + r8 fis,[ b dis] fis4 r + r8 gis,[ b d] f4 r + r8 g,[ b d_\ritenuto ] f4 r + \mark "E" + R1*8 + r2 r8 g,[ g g] + e'4.( c8) f[( d c b)] + b[( c)] g4 r8 g[ c e] | + g2. g16[( f e f)] + dis4( e) r8 c[-. c-. c-.] + c4.( d16[ e] f4 e) + a, ( d g, c) + d d + \acciaccatura e8 + d8.[ c16 d8. e16] + c4 r r2 + \mark "F" + R1*3 + c,2~ c8[ e g c] + c8[( b)] b4 r2 + c,8[ e g c ] e[ ( g) e c] + c[( b)] b4 r2 + c2 (bes a) a8[(b c cis)] + d2( ~ d8[ e16 d] \appoggiatura d16 + c8[ b16 c)] + \appoggiatura c16 + b8[( a16 g)] g4 r2 | + R1*3 + r2 r4 g'8[( e)] + \mark "G" + d[( c) g'( e)] d[( c) a'( f)] + e[( d)] d4 r d8[ d] + d4(~ d16[ e d e)] g8[( f) e d] | + c4 r r2 + R1 + c1 ~ + c | + c8[-. c-.] r c-. cis[( d)] r d-.\cresc | + dis[( e)] r e-. e[( f)] r f-. | + g4-.\f e-. c-. bes-. | + g-.\ff e-. c-. r | + a'2 ~ a8[_""_\markup { \bold \italic "sempre " \dynamic "f" } b16 c] d[( e d e)] - fis8[)( e16 d)] d4-. r2 | - \mark "B" - R1*3 - r2 r4 d8[(_\markup { \italic \bold "con espressione" } b) ] - a[( g) d'( b)] a[( g) e'( c) ] - b8[( a)] a4 r4 a8[ a] - a[( \< b c cis\!\> ] d4 c\!) - ais8[( b)] r8 b\cresc b[( c)] r c - cis[ ( d)] r4 r2 - g,1\!\f ~ g2 ~ g8[ a16 b] c[( d) e c] - %% 64 - f4-. d-. b-. g-. - R1 + f4. ( d8) f8[ ( d) f d] + c[ (e] g2) \appoggiatura f16 + e8[( d16 c)] + \afterGrace d1_(\trill { c16[ d] } + c4) r r2 + R1 | + \mark "H" + \times 2/3 { c8[ b a ] } + \times 2/3 { g[ a b] } + \times 2/3 { c[ d e] } + \times 2/3 { f[ e d] } | + \times 2/3 { c[ b a ] } + \times 2/3 { g[ a b] } + \times 2/3 { c[ d e] } + \times 2/3 { f[ e d] }| + c4 \times 2/3 { r8 g'[( e)]} c4 + \times 2/3 { r8 e[ ( c)]} | + g4 \times 2/3 { r8 c8[( g)] } + \times 2/3 { e[ ( g) e-. ] } + \times 2/3 { c[ ( e) c-.] }| + g4 r8 g'\f a[ b c d]| + \afterGrace d1_(\trill { c16[ d] } + c4) r r2 + R1*3 + c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata ( c16[ d)] + c4 r r2 + R1*8 + r4 c8.[^"tutti"\f c16] c4 c + c c,8.[ c16] c4 c| + c2 r2 \bar "|." - c,2\p e4 g c e\cresc g4. e8 | - d4.\!\f e16[ fis] g[ ( fis) e d] c[( b) a g] - - << a1(\trill - { s2 \grace { - \override Stem #'stroke-style = #"grace" - g16[ a] - \revert Stem #'stroke-style } - } >> - \mark "C" - g4) r r2 - R1*15 - \mark "D" - bes2\mf d4 f - g,2~ g8[ g' es c]| - bes4( a4.) c8[( d es)] - cis4( d) r8 bes[ (c d)] - es2 ( d4) r - es2 ( d4) r - c8[( g' es c)] bes4( c) - c4.( cis8 d4) r - R1*2 - es1~es1| - e! - d - c - c, - e' - e, - c'2 b8[( a gis a)] - gis8[ e gis b ] e4 r | - r8 e,[ a c] dis4 r - r8 e,[ gis b ] e4 r - r8 e,[ a c] dis4 r - r8 e,[ g b] e4 r - r8 fis,[ b dis] fis4 r - r8 gis,[ b d] f4 r - r8 g,[ b d_\ritenuto ] f4 r - \mark "E" - R1*8 - r2 r8 g,[ g g] - e'4.( c8) f[( d c b)] - b[( c)] g4 r8 g[ c e] | - g2. g16[( f e f)] - dis4( e) r8 c[-. c-. c-.] - c4.( d16[ e] f4 e) - a, ( d g, c) - d d - \grace { - \override Stem #'stroke-style = #"grace" - e8( - \revert Stem #'stroke-style } - - d8.[) c16 d8. e16] - c4 r r2 - \mark "F" - R1*3 - c,2~ c8[ e g c] - c8[( b)] b4 r2 - c,8[ e g c ] e[ ( g) e c] - c[( b)] b4 r2 - c2 (bes a) a8[(b c cis)] - d2( ~ d8[ e16 d] \grace { - \override Stem #'stroke-style = #"grace" - \longgrace d16( \endlonggrace - \revert Stem #'stroke-style } - -%% todo: should insert grace slur here. - c8[ b16 c)] - \grace { - \override Stem #'stroke-style = #"grace" - \longgrace c16 \endlonggrace - \revert Stem #'stroke-style } - b8[( a16 g)] g4 r2 | - R1*3 - r2 r4 g'8[( e)] - \mark "G" - d[( c) g'( e)] d[( c) a'( f)] - e[( d)] d4 r d8[ d] - d4(~ d16[ e d e)] g8[( f) e d] | - c4 r r2 - R1 - c1 ~ - c | - c8[-. c-.] r c-. cis[( d)] r d-.\cresc | - dis[( e)] r e-. e[( f)] r f-. | - g4-.\!\f e-. c-. bes-. | - g-.\ff e-. c-. r | - a'2 ~ a8[_""_\markup { \bold \italic "sempre " \dynamic "f" } b16 c] d[( e d e)] - - - f4. ( d8) f8[ ( d) f d] - c[ (e] g2) \grace { - \override Stem #'stroke-style = #"grace" - \longgrace f16( \endlonggrace - \revert Stem #'stroke-style } - e8[)( d16 c)] - - << d1\trill _( - { s2 \grace { - \override Stem #'stroke-style = #"grace" - c16[ d] - \revert Stem #'stroke-style } - } >> - - c4) r r2 - R1 | - \mark "H" - \times 2/3 { c8[ b a ] } \times 2/3 { g[ a b] } - \times 2/3 { c[ d e] } \times 2/3 { f[ e d] } | - \times 2/3 { c[ b a ] } \times 2/3 { g[ a b] } - \times 2/3 { c[ d e] } \times 2/3 { f[ e d] }| - c4 \times 2/3 { r8 g'[( e)]} c4 \times 2/3 { r8 e[ ( c)]} | - g4 \times 2/3 { r8 c8[( g)] } \times 2/3 { e[ ( g) e-. ] } \times 2/3 { c[ ( e) c-.] }| - g4 r8 g'\f a[ b c d]| - - << d1_(\trill - { s2 \grace { - \override Stem #'stroke-style = #"grace" - c16[ d] - \revert Stem #'stroke-style } - } >> - c4) r r2 - R1*3 - - c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata ( c16[ d)] - c4 r r2 - R1*8 - r4 c8.[^"tutti"\f c16] c4 c - c c,8.[ c16] c4 c| - c2 r2 \bar "|." - } diff --git a/input/regression/mozart-hrn3-defs.ily b/input/regression/mozart-hrn3-defs.ily index fe9966d71f..4fe4973efe 100644 --- a/input/regression/mozart-hrn3-defs.ily +++ b/input/regression/mozart-hrn3-defs.ily @@ -1,45 +1,28 @@ % -longgrace = \override Stem #'stroke-style = #'() -endlonggrace = \revert Stem #'stroke-style +longgrace = \override Flag #'stroke-style = #'() +endlonggrace = \revert Flag #'stroke-style ritenuto = \markup { \italic "rit." } -\version "2.11.61" - -\layout { - \context { - \Score - skipBars = ##t - midiInstrument = #"french horn" - %% try to mimic Breitkopf - \override RehearsalMark #'padding = #1 - \override MultiMeasureRest #'padding = #0.5 - restNumberThreshold = #1 - - \override RehearsalMark #'font-series = #'bold - \override RehearsalMark #'font-size = #4.5 +\version "2.16.0" - \override Beam #'thickness = #0.6 - \override Beam #'space-function = #(lambda (beam mult) 0.8) - } - \context { - \Staff - \override VerticalAxisGroup #'minimum-Y-extent = #'(-2.5 . 3.5) - } +\layout { + \context { + \Score + skipBars = ##t + midiInstrument = #"french horn" + %% try to mimic Breitkopf + \override RehearsalMark #'padding = #1 + restNumberThreshold = #1 + + \override RehearsalMark #'font-series = #'bold + \override RehearsalMark #'font-size = #4.5 + } } \paper{ - - % #(define fonts my-sheet) - - % stress page breaking on a6 paper: - % line-width = 80 \mm - % paper-width = 105 \mm - % paper-height = 149 \mm - - indent = 10. \mm - line-width = 189. \mm - ragged-last-bottom = ##f - + indent = 10\mm + line-width = 189\mm + ragged-last-bottom = ##f } diff --git a/input/regression/mozart-hrn3-romanze.ily b/input/regression/mozart-hrn3-romanze.ily index cca5e1885c..145551b2a9 100644 --- a/input/regression/mozart-hrn3-romanze.ily +++ b/input/regression/mozart-hrn3-romanze.ily @@ -1,88 +1,79 @@ -\version "2.11.61" +\version "2.16.0" \include "mozart-hrn3-defs.ily" romanze = \relative c' { - \key f \major - \time 2/2 - \set Score.skipBars = ##t + \key f \major + \time 2/2 - c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } } - f8) a,4 a - bes8[( c d bes] g4) r8 g - a r bes r c r d[( bes)] - a2( g8[) a( bes b)] - c4. ( f8) a,4 a | - % 6 - bes8[ (c d bes)] g4 r8 c, - c8[( e g bes)] a[( c f d)] - c r e r f r r4 - \mark "A" - R1*8 - g4.\mf f8 e[ d c bes] - % 18 - bes[( a d c)] c4 r - R1*2 - g'4. f8 e[ d c bes] - bes[ (a d c)] c4 r - R1 - % 25 - c16[ ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.] - c16[\p ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.] - c8[ \< c, c c] c[ c c c\!] - \mark "B" - c1\f - R1*9 - f'4.(\p d8) b4 r8 g - g'4.( e8) c4 r8 cis | - % 39 - d4(~ d16[ e d e)] f8[ ( d) f( d)] - c2( b4) r - R1*4 - e4. ( g8) c,4 ( cis) - d8[( e f d)] b4 r8 g - c[ ( e) g g] g[( f e d)] - c4( - \grace { - \override Stem #'stroke-style = #"grace" - \longgrace e16 \endlonggrace - \revert Stem #'stroke-style } - - d8.[ c16) \< ] c8[ c-.( c-. c)-.]\! - \mark "C" - - %% this is a trick to get the sfp-s to align. - \override Hairpin #'transparent = ##t - des1\sfp \> - g,1\sfp\! \> - c\sfp \! \> - c,\sfp\! - \revert Hairpin #'transparent - R1*3 - r8 c[\p c c] c2~ - c8[ c' c c] c2~ - c8[ \< e( g f] e[ d\!\> c bes] - \mark "D" - a4\!) r r2 - R1*3 - c4.\p ( f8) a,4 a | - bes8[ (c d bes)] g4 r8 c, - c8[( e g bes)] a[( c f d)] - c r e r f4 r4 - R1*3 - r2 r4 r8 c,8 - c8[( e g bes)] a[( c f d)] - c r e r f4 r4 - g,1 - c,2 c4. c8 - c8[( e g bes)] a[( c f d)] - c r e r f4 r4 % -. ? - - R1 - c8-. r e-. r f4 r4 - - % Finish with F if played separately - c8-.( r c,-. r c4) r4| - \bar "|." + c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } } + f8) a,4 a + bes8[( c d bes] g4) r8 g + a r bes r c r d[( bes)] + a2( g8[) a( bes b)] + c4. ( f8) a,4 a | + % 6 + bes8[ (c d bes)] g4 r8 c, + c8[( e g bes)] a[( c f d)] + c r e r f r r4 + \mark "A" + R1*8 + g4.\mf f8 e[ d c bes] + % 18 + bes[( a d c)] c4 r + R1*2 + g'4. f8 e[ d c bes] + bes[ (a d c)] c4 r + R1 + % 25 + c16[ ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.] + c16[\p ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.] + c8[ \< c, c c] c[ c c c\!] + \mark "B" + c1\f + R1*9 + f'4.(\p d8) b4 r8 g + g'4.( e8) c4 r8 cis | + % 39 + d4(~ d16[ e d e)] f8[ ( d) f( d)] + c2( b4) r + R1*4 + e4. ( g8) c,4 ( cis) + d8[( e f d)] b4 r8 g + c[ ( e) g g] g[( f e d)] + c4( + \grace e16 + d8.[ c16) \< ] c8[ c-.( c-. c)-.]\! + \mark "C" + \override DynamicLineSpanner #'staff-padding = #2.5 + des1\sfp + g,1\sfp + c\sfp + c,\sfp + \revert DynamicLineSpanner #'staff-padding + R1*3 + r8 c[\p c c] c2~ + c8[ c' c c] c2~ + c8[ \< e( g f] e[ d\!\> c bes] + \mark "D" + a4\!) r r2 + R1*3 + c4.\p ( f8) a,4 a | + bes8[ (c d bes)] g4 r8 c, + c8[( e g bes)] a[( c f d)] + c r e r f4 r4 + R1*3 + r2 r4 r8 c,8 + c8[( e g bes)] a[( c f d)] + c r e r f4 r4 + g,1 + c,2 c4. c8 + c8[( e g bes)] a[( c f d)] + c r e r f4 r4 + R1 + c8-. r e-. r f4 r4 + % Finish with F if played separately + c8-.( r c,-. r c4) r4| + \bar "|." } diff --git a/input/regression/mozart-hrn3-rondo.ily b/input/regression/mozart-hrn3-rondo.ily index 81e7834417..d3997e7774 100644 --- a/input/regression/mozart-hrn3-rondo.ily +++ b/input/regression/mozart-hrn3-rondo.ily @@ -1,194 +1,174 @@ -\version "2.11.61" +\version "2.16.0" -% \include "mozart-hrn3-defs.ily" +\include "mozart-hrn3-defs.ily" -rondotheme = \relative c' { - c'8[ c c] c[ c c] - c4( cis8 d) r g, - d'8[ d d] d[ d d] - d4( dis8 e) r c | - c[( d) e] f[ g a] - g[ ( e) c] c4 d8 - e4( d8) e4( f8) - e4.( d8) r r | +rondotheme = \relative c' { + c'8[ c c] c[ c c] + c4( cis8 d) r g, + d'8[ d d] d[ d d] + d4( dis8 e) r c | + c[( d) e] f[ g a] + g[ ( e) c] c4 d8 + e4( d8) e4( f8) + e4.( d8) r r | } -lipbreaker = \relative c' -{ - r8 g'[-. g-.] c[( e) g,-.] - c[( e) g,-.] c[( e) g,-.] - c[ c, c] c[ c c] - c[ c c] c[ c c] +lipbreaker = \relative c' { + r8 g'[-. g-.] c[( e) g,-.] + c[( e) g,-.] c[( e) g,-.] + c[ c, c] c[ c c] + c[ c c] c[ c c] } -rightsixteenth = { \set stemLeftBeamCount = 1 - \set stemRightBeamCount = 2 } -leftsixteenth = { \set stemLeftBeamCount = 2 - \set stemRightBeamCount = 1 } -bothsixteenth = { \set stemLeftBeamCount = 2 - \set stemRightBeamCount = 2 } +rondo = \relative c' { + \partial 8 + \time 6/8 + \key c \major -rondo = \relative c' -{ - \partial 8 - \time 6/8 - \key c \major - - g'8\p | - - \rondotheme - - R2.*13 | - r8 r^\fermata d' d[ e f] - g[ ( e) c-.] d[( e) d-.] - c4 c8 d[ e f] - g[( e) c-.] d[( e) d-.] - c4 r8 r4 r8 | - R2.*7 - \mark "A" - c4.\p \grace { - \override Stem #'stroke-style = #"grace" - e16( - \revert Stem #'stroke-style } - d8[) c d] - c4 r8 r4 r8 - e4. \grace { - \override Stem #'stroke-style = #"grace" - g16( - \revert Stem #'stroke-style } - f8[) e f] - e4 r8 r4 r8 - g4. e4 c8 - g2.~ - g8[ a b] c[ d e ] - e4.( d8) r r - R2.*4 - e2.~ | - e8[ d c] c[ b a] - d2.~ - d8[ c b] b[ a g] - g'4( e8) b4( cis8) - \mark "B" - d4 r8 r4 r8 - R2.*3 | - r8 d[-. d-.] d[( g) d-.] - d[( g) d-.] d[ d d] - d[( g)] r r4 r8 - R2.*1 - \lipbreaker - c,,4 r8 c'[ d e] - d4( g8) c,[ d e] - d4 r8 r4 r8 - R2. | - r4 r8 c[-. d-. e-.] - d4( g8) c,[ d e] - d[( g) fis] e[ d c] - b[ ( e) d] c[ b a] - \mark "C" - g4 r8 r4 r8 - R2. | - % - r8 g[\f g] g[( b) b-.] - b[( d) d-.] d[( g) g-.] - g2.~ - g8[ \> a g] f[ e d] - << \rondotheme - { s8\!\p } >> - - R2.*12 - r4 r8 r4 c8 - \mark "D" - c4 f8 c4 a8 - a4.~a4 a8 - bes4 c8 d4 bes8 - g4. ~ g8 r r - R2.*3 - r4 r8 r4 c8 - a4. c - f ~ f8.[ \rightsixteenth e16( \bothsixteenth d c)] - bes4 g8 e4 g8 - c,4. ~ c8 r r - R2.*3| - r4 r8 r4 c'8 - b4( c8) b4( c8) - bes4. ~ bes4 g8 - a4 ( c8) f4 ( b,8) - d4. ( c8) r r - R2.*3| - r4 r8 r4 c8 - b4( c8) b4( c8) - bes4. ~ bes4 g8 - a4 c8 f[ ( d) b!] - d4. ( c8) r r - \mark "E" - R2.*9 | - \lipbreaker - c,8[ c' c] c4.~ - c8[ c d] e[ e fis] - g4 r8 r4 r8 - R2. - r8 g,[ g] g[ g g] | - es'4. ~ es8[ d c] - b4 r8 r4 r8 - R2. | - r8 g[ g] g[ g g] - es'4. ~ es8[ d c] - b4.\cresc c4. d4. e4. - \mark "F" - - f2.\!\f ~ | - f4 r8 r4 r8 - r8 g,[\> g] g[ g g] - - % Edition breitkopf says a-flat (silly!) - fis[ g gis] - a[ bes b]\! + g'8\p | - %% EB does the slur in the Rondo differently from the 1st adn 2nd time. - %% why. Should check with MS. - << \rondotheme - { s8\p } >> - R2.*7 - \mark "G" - R2.*4 - c,4.\mf c4 c8 - c4. e4 c8 - g'4. g4 g8 - g4. g,4 g8 - c4 r8 r4 r8 - r4 r8 r4 g'8 - c[ ( e) g,-.] c[ ( e) g,-.] - c[ ( e) g,-.] c[ ( e) g,-.] - \mark "H" - g'2.\cresc bes,2. - a4. b16[ c d e f g] - a4. f4 d8 - c8[\!\f g' e] c[ g e] - c[ e' c] g[ e c] - g4 r8 g''8[ e c] + \rondotheme - - << d2._(\trill - { s2 \grace { - \override Stem #'stroke-style = #"grace" - c16[ d] - \revert Stem #'stroke-style } - } >> - - - c4) r8 r4 r8 - R2.*5 - r8 r8^\fermata d8\p d[ e f] - g[ ( e) c] d[( e) d] - c[\cresc c c] d[ e f] - g[( e) c] d[( e) d] - c4\!\f r8 r4 r8 - R2.*5 - c8[\f c, c] c[ c c] - c4 r8 c4 r8 + R2.*13 | + r8 r^\fermata d' d[ e f] + g[ ( e) c-.] d[( e) d-.] + c4 c8 d[ e f] + g[( e) c-.] d[( e) d-.] + c4 r8 r4 r8 | + R2.*7 + \mark "A" + c4.\p \acciaccatura e16 + d8[ c d] + c4 r8 r4 r8 + e4. \acciaccatura g16 + f8[ e f] + e4 r8 r4 r8 + g4. e4 c8 + g2.~ + g8[ a b] c[ d e ] + e4.( d8) r r + R2.*4 + e2.~ | + e8[ d c] c[ b a] + d2.~ + d8[ c b] b[ a g] + g'4( e8) b4( cis8) + \mark "B" + d4 r8 r4 r8 + R2.*3 | + r8 d[-. d-.] d[( g) d-.] + d[( g) d-.] d[ d d] + d[( g)] r r4 r8 + R2.*1 + \lipbreaker + c,,4 r8 c'[ d e] + d4( g8) c,[ d e] + d4 r8 r4 r8 + R2. | + r4 r8 c[-. d-. e-.] + d4( g8) c,[ d e] + d[( g) fis] e[ d c] + b[ ( e) d] c[ b a] + \mark "C" + g4 r8 r4 r8 + R2. | + r8 g[\f g] g[( b) b-.] + b[( d) d-.] d[( g) g-.] + g2.~ + g8[ \> a g] f[ e d] - % This is technically incorrect, since we started with an 8th - % note pickup, but both eulenburg and EB do this as well. - c4 r8 r4 r8 \bar "|." + << + \rondotheme + { s8\p } + >> + + R2.*12 + r4 r8 r4 c8 + \mark "D" + c4 f8 c4 a8 + a4.~a4 a8 + bes4 c8 d4 bes8 + g4. ~ g8 r r + R2.*3 + r4 r8 r4 c8 + a4. c + f ~ f8.[ e16( d c)] + bes4 g8 e4 g8 + c,4. ~ c8 r r + R2.*3| + r4 r8 r4 c'8 + b4( c8) b4( c8) + bes4. ~ bes4 g8 + a4 ( c8) f4 ( b,8) + d4. ( c8) r r + R2.*3| + r4 r8 r4 c8 + b4( c8) b4( c8) + bes4. ~ bes4 g8 + a4 c8 f[ ( d) b!] + d4. ( c8) r r + \mark "E" + R2.*9 | + \lipbreaker + c,8[ c' c] c4.~ + c8[ c d] e[ e fis] + g4 r8 r4 r8 + R2. + r8 g,[ g] g[ g g] | + es'4. ~ es8[ d c] + b4 r8 r4 r8 + R2. | + r8 g[ g] g[ g g] + es'4. ~ es8[ d c] + b4.\cresc c4. d4. e4. + \mark "F" + f2.\f ~ | + f4 r8 r4 r8 + r8 g,[\> g] g[ g g] + + % Edition breitkopf says a-flat (silly!) + fis[ g gis] + a[ bes b]\! + + %% EB does the slur in the Rondo differently from the 1st and 2nd time. + %% why. Should check with MS. + << + \rondotheme + { s8\p } + >> + + R2.*7 + \mark "G" + R2.*4 + c,4.\mf c4 c8 + c4. e4 c8 + g'4. g4 g8 + g4. g,4 g8 + c4 r8 r4 r8 + r4 r8 r4 g'8 + c[ ( e) g,-.] c[ ( e) g,-.] + c[ ( e) g,-.] c[ ( e) g,-.] + \mark "H" + g'2.\cresc bes,2. + a4. b16[ c d e f g] + a4. f4 d8 + c8[\f g' e] c[ g e] + c[ e' c] g[ e c] + g4 r8 g''8[ e c] + \afterGrace d2._(\trill { c16[ d] } + c4) r8 r4 r8 + R2.*5 + r8 r8^\fermata d8\p d[ e f] + g[ ( e) c] d[( e) d] + c[\cresc c c] d[ e f] + g[( e) c] d[( e) d] + c4\f r8 r4 r8 + R2.*5 + c8[\f c, c] c[ c c] + c4 r8 c4 r8 + + % This is technically incorrect, since we started with an 8th + % note pickup, but both eulenburg and EB do this as well. + c4 r8 r4 r8 \bar "|." } diff --git a/input/regression/multi-measure-rest-center.ly b/input/regression/multi-measure-rest-center.ly index c5fab88be7..bc1a648567 100644 --- a/input/regression/multi-measure-rest-center.ly +++ b/input/regression/multi-measure-rest-center.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The multimeasure rest is centered exactly between bar lines." diff --git a/input/regression/multi-measure-rest-center2.ly b/input/regression/multi-measure-rest-center2.ly index 8b6348726a..1d5f039c40 100644 --- a/input/regression/multi-measure-rest-center2.ly +++ b/input/regression/multi-measure-rest-center2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/multi-measure-rest-grace.ly b/input/regression/multi-measure-rest-grace.ly index cf1d7d6bf6..3f57c44006 100644 --- a/input/regression/multi-measure-rest-grace.ly +++ b/input/regression/multi-measure-rest-grace.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/multi-measure-rest-instr-name.ly b/input/regression/multi-measure-rest-instr-name.ly index 08ce7ab16b..6311b00ad5 100644 --- a/input/regression/multi-measure-rest-instr-name.ly +++ b/input/regression/multi-measure-rest-instr-name.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "There are both long and short instrument names. diff --git a/input/regression/multi-measure-rest-multi-staff-center.ly b/input/regression/multi-measure-rest-multi-staff-center.ly index 5ed91a15b1..2b9aa7e169 100644 --- a/input/regression/multi-measure-rest-multi-staff-center.ly +++ b/input/regression/multi-measure-rest-multi-staff-center.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Though the default spacing for multi-measure rests diff --git a/input/regression/multi-measure-rest-spacing.ly b/input/regression/multi-measure-rest-spacing.ly index d4fc8c7687..f37566df5b 100644 --- a/input/regression/multi-measure-rest-spacing.ly +++ b/input/regression/multi-measure-rest-spacing.ly @@ -8,7 +8,7 @@ extra spacing column is created. This should not cause problems." ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" << diff --git a/input/regression/multi-measure-rest-staff-position.ly b/input/regression/multi-measure-rest-staff-position.ly new file mode 100644 index 0000000000..241cd92040 --- /dev/null +++ b/input/regression/multi-measure-rest-staff-position.ly @@ -0,0 +1,12 @@ +\version "2.16.0" + +\header { + texidoc = "Multi measure rest staff position can be overridden +to 0. +" +} + +\relative c' { + \override MultiMeasureRest #'staff-position = #0 + R1 +} diff --git a/input/regression/multi-measure-rest-standard.ly b/input/regression/multi-measure-rest-standard.ly new file mode 100644 index 0000000000..8439ae9119 --- /dev/null +++ b/input/regression/multi-measure-rest-standard.ly @@ -0,0 +1,20 @@ +\header { + texidoc = "Only whole, breve, longa and maxima rests are used by default for multi-measure rests." +} + +\version "2.16.0" + +\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-text.ly b/input/regression/multi-measure-rest-text.ly index 2e2d4324da..cc58c2470f 100644 --- a/input/regression/multi-measure-rest-text.ly +++ b/input/regression/multi-measure-rest-text.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -6,7 +6,7 @@ Texts may be added to the multi-measure rests. By setting the appropriate @code{spacing-procedure}, we can make -measures stretch to accomodate wide texts. +measures stretch to accommodate wide texts. " diff --git a/input/regression/multi-measure-rest-tweaks.ly b/input/regression/multi-measure-rest-tweaks.ly new file mode 100644 index 0000000000..e05c7964ee --- /dev/null +++ b/input/regression/multi-measure-rest-tweaks.ly @@ -0,0 +1,25 @@ +\header { + texidoc = "Multi-measure rests standard values can be tweaked." +} + +\version "2.16.0" + +\markup "Use non-standard multi-measure rests:" +\new Staff { + \override MultiMeasureRest #'usable-duration-logs = #(iota 2 1) + \time 1/4 R4 + \time 2/4 R2 +} +\markup "Round up to the longer rest:" +\new Staff { + \override MultiMeasureRest #'round-up-to-longer-rest = ##t + \time 3/2 R1. + \time 7/2 R\breve.. +} +\markup "Round up to the longer rest only in specified time signatures:" +\new Staff { + \override MultiMeasureRest #'round-up-exceptions = #'((3 . 2)) + \time 3/2 R1. + \time 7/2 R\breve.. + \time 3/2 R1. +} diff --git a/input/regression/multi-measure-rest-usebreve.ly b/input/regression/multi-measure-rest-usebreve.ly deleted file mode 100644 index 2ed4f9c791..0000000000 --- a/input/regression/multi-measure-rest-usebreve.ly +++ /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 -} - - diff --git a/input/regression/multi-measure-rest.ly b/input/regression/multi-measure-rest.ly index d3a31db9e9..bf738c3af6 100644 --- a/input/regression/multi-measure-rest.ly +++ b/input/regression/multi-measure-rest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" diff --git a/input/regression/multiple-time-sig-settings.ly b/input/regression/multiple-time-sig-settings.ly index 2caad79c8e..883124d4a6 100644 --- a/input/regression/multiple-time-sig-settings.ly +++ b/input/regression/multiple-time-sig-settings.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/music-function-end-spanners.ly b/input/regression/music-function-end-spanners.ly index f36e586340..f86e1a0c7f 100644 --- a/input/regression/music-function-end-spanners.ly +++ b/input/regression/music-function-end-spanners.ly @@ -6,7 +6,7 @@ end span events at the end of a note." } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right = ##T } diff --git a/input/regression/music-function-post-event.ly b/input/regression/music-function-post-event.ly index 77346dcc87..4442352662 100644 --- a/input/regression/music-function-post-event.ly +++ b/input/regression/music-function-post-event.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/music-function-string-markup.ly b/input/regression/music-function-string-markup.ly index 849539ad8f..7c584e0f23 100644 --- a/input/regression/music-function-string-markup.ly +++ b/input/regression/music-function-string-markup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Music functions accept strings as markup arguments diff --git a/input/regression/music-function.ly b/input/regression/music-function.ly index 352dba89cb..0a1d36825a 100644 --- a/input/regression/music-function.ly +++ b/input/regression/music-function.ly @@ -7,7 +7,7 @@ demonstrate a @code{\\myBar} function, which works similar to @code{\\bar}, but is implemented completely in Scheme." } -\version "2.14.0" +\version "2.16.0" myBar = #(define-music-function (parser location bar-type) (string?) (context-spec-music diff --git a/input/regression/music-map.ly b/input/regression/music-map.ly index c0e8816ebf..43f346deac 100644 --- a/input/regression/music-map.ly +++ b/input/regression/music-map.ly @@ -10,7 +10,7 @@ and dynamics are left over. These are put onto the 2nd measure." } -\version "2.14.0" +\version "2.16.0" #(define (notes-to-skip m) "Convert all stuff with duration (notes, lyrics, bass figures, etc.) to skips. diff --git a/input/regression/musicxml/00-Introduction.itexi b/input/regression/musicxml/00-Introduction.itexi index f3eab7559b..a929697d19 100644 --- a/input/regression/musicxml/00-Introduction.itexi +++ b/input/regression/musicxml/00-Introduction.itexi @@ -107,4 +107,4 @@ MIDI generation don'thave any test cases yet. * 75 ... Other instrumental notation * 90 ... Compressed MusicXML files * 99 ... Compatibility with broken MusicXML -@end menu \ No newline at end of file +@end menu diff --git a/input/regression/musicxml/GNUmakefile b/input/regression/musicxml/GNUmakefile index b343d88b6f..65e73ea867 100644 --- a/input/regression/musicxml/GNUmakefile +++ b/input/regression/musicxml/GNUmakefile @@ -3,21 +3,22 @@ depth = ../../.. STEPMAKE_TEMPLATES=documentation texinfo tex LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc musicxml -EXTRA_DIST_FILES = LICENSE +EXTRA_DIST_FILES = LICENSE book-musicxml-testsuite.py TEXI2HTML_FLAGS += --nomenu -# Urgh, how can I do two replacements at once without messing up the order of the list? -TMP = $(sort $(MUSICXML_FILES) $(MUSICMXL_FILES) $(TEXINFO_SOURCES) ) -TMP1 = ${TMP:%.xml=$(outdir)/%.ly} -COLLATED_FILES = ${TMP1:%.mxl=$(outdir)/%.ly} +COLLATED_FILES = $(sort $(MUSICXML_FILES) $(MUSICMXL_FILES) $(TEXINFO_SOURCES) ) include $(depth)/make/stepmake.make TITLE=Unofficial MusicXML test suite +AUTHOR=Reinhold Kainhofer TEST_SUITE_VERSION=0.1 +LILYPOND_BOOK_FLAGS += --load-custom-package=$(src-dir)/book-musicxml-testsuite.py +# This breaks since *.tex and *.texi still contains ac/lily-xxxxxx references! +#LILYPOND_BOOK_FLAGS += --use-source-file-names ifeq ($(out),www) local-WWW-2: zip diff --git a/input/regression/musicxml/book-musicxml-testsuite.py b/input/regression/musicxml/book-musicxml-testsuite.py new file mode 100644 index 0000000000..a292db5489 --- /dev/null +++ b/input/regression/musicxml/book-musicxml-testsuite.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +import book_base as BookBase +import book_texinfo as BookTexinfo +import book_snippets as BookSnippet +import lilylib as ly + +MusicXMLOutputImage = r'''@noindent +@ifinfo +@image{%(info_image_path)s,,,%(alt)s,%(ext)s} +@end ifinfo +@html +

+ + %(alt)s + +

+@end html +''' + +MusicXMLOutput = r''' +@iftex +@include %(base)s-systems.texi +@end iftex +''' + +MusicXMLPrintFilename = r''' +@html + +@end html +@file{%(filename)s} +@html + +@end html +''' + + + + +class BookMusicXML (BookTexinfo.BookTexinfoOutputFormat): + def __init__ (self): + BookTexinfo.BookTexinfoOutputFormat.__init__ (self) + self.format = "MusicXMLTest" + self.output[BookBase.OUTPUTIMAGE] = MusicXMLOutputImage + self.output[BookBase.OUTPUT] = MusicXMLOutput + self.output[BookBase.PRINTFILENAME] = MusicXMLPrintFilename + def snippet_class (self, type): + if type == "musicxml_file": + return MusicXMLTestSuiteSnippet + else: + return BookSnippet.snippet_type_to_class.get (type, BookSnippet.Snippet) + def snippet_output (self, basename, snippet): + return BookTexinfo.BookTexinfoOutputFormat.snippet_output (self, basename, snippet) + + +class MusicXMLTestSuiteSnippet (BookSnippet.MusicXMLFileSnippet): + def __init__ (self, type, match, formatter, line_number, global_options): + BookSnippet.MusicXMLFileSnippet.__init__ (self, type, match, formatter, line_number, global_options) + +## TODO: Customize output with renderings from other MusicXML-supporting +# applications. Also add some link to the intermediate .ly file + + +BookBase.register_format (BookMusicXML ()); diff --git a/input/regression/nested-fill-lines.ly b/input/regression/nested-fill-lines.ly index f4236ea699..fa6d53e25f 100644 --- a/input/regression/nested-fill-lines.ly +++ b/input/regression/nested-fill-lines.ly @@ -1,10 +1,10 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " -Nested fill-lines should work properly. In this example, both occurences +Nested fill-lines should work properly. In this example, both occurrences of FOO should be centered. " diff --git a/input/regression/nested-property-revert.ly b/input/regression/nested-property-revert.ly deleted file mode 100644 index 38779ddec0..0000000000 --- a/input/regression/nested-property-revert.ly +++ /dev/null @@ -1,18 +0,0 @@ -\version "2.14.0" - -\header { - texidoc = " -If a nested property revert follows an override in the same grob for -a different property, the nested property's default setting should not -be evicted from the property alist. -" -} - -\relative c' { - c1\startTrillSpan - c1\stopTrillSpan - \override TrillSpanner #'color = #red - \revert TrillSpanner #'(bound-details left text) - c1\startTrillSpan - c1\stopTrillSpan -} diff --git a/input/regression/newaddlyrics-music-identifiers.ly b/input/regression/newaddlyrics-music-identifiers.ly index d79e4224f4..1d206a5b39 100644 --- a/input/regression/newaddlyrics-music-identifiers.ly +++ b/input/regression/newaddlyrics-music-identifiers.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "addlyrics do not need braces around their arguments, diff --git a/input/regression/newaddlyrics.ly b/input/regression/newaddlyrics.ly index fcadd2abe4..73c9ab1fe8 100644 --- a/input/regression/newaddlyrics.ly +++ b/input/regression/newaddlyrics.ly @@ -26,4 +26,4 @@ } >> -\version "2.14.0" +\version "2.16.0" diff --git a/input/regression/no-header.ly b/input/regression/no-header.ly index c5f2d4b3a5..54d655bf97 100644 --- a/input/regression/no-header.ly +++ b/input/regression/no-header.ly @@ -1,6 +1,6 @@ -\version "2.14.0" +\version "2.16.0" -\markuplines \wordwrap-lines { +\markuplist \wordwrap-lines { This regtest does not contain any header and paper blocks. Its purpose is to test whether anything breaks if these blocks are absent. } diff --git a/input/regression/no-staff.ly b/input/regression/no-staff.ly index 8a53c5a290..3532ac9217 100644 --- a/input/regression/no-staff.ly +++ b/input/regression/no-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" % possible rename to staff-something. -gp \header{ texidoc = "@cindex Staff Remove diff --git a/input/regression/non-centered-bar-lines.ly b/input/regression/non-centered-bar-lines.ly index 429fc41915..79e8ec88dc 100644 --- a/input/regression/non-centered-bar-lines.ly +++ b/input/regression/non-centered-bar-lines.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Bar lines are positioned correctly when using custom staves which are not centered around position@tie{}0. diff --git a/input/regression/non-empty-text.ly b/input/regression/non-empty-text.ly index e19bec8e79..a3ba0d92a6 100644 --- a/input/regression/non-empty-text.ly +++ b/input/regression/non-empty-text.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "By default, text is set with empty horizontal dimensions. diff --git a/input/regression/note-head-aiken.ly b/input/regression/note-head-aiken.ly index d2a4a1dac4..6d65fac1a7 100644 --- a/input/regression/note-head-aiken.ly +++ b/input/regression/note-head-aiken.ly @@ -3,7 +3,7 @@ texidoc = "Notes can be set in the Aiken (Christian Harmony) style." } -\version "2.14.0" +\version "2.16.0" \relative c' { \key c \major diff --git a/input/regression/note-head-chord.ly b/input/regression/note-head-chord.ly index 8214d8c832..0cc5d22522 100644 --- a/input/regression/note-head-chord.ly +++ b/input/regression/note-head-chord.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Note heads are flipped on the stem to prevent collisions. diff --git a/input/regression/note-head-funk.ly b/input/regression/note-head-funk.ly index 9e1d598572..ce9bcb09de 100644 --- a/input/regression/note-head-funk.ly +++ b/input/regression/note-head-funk.ly @@ -3,7 +3,7 @@ texidoc = "Notes can be set in the Funk (Harmonica Sacra) style." } -\version "2.14.0" +\version "2.16.0" \relative c' { \key c \major diff --git a/input/regression/note-head-harmonic-dotted.ly b/input/regression/note-head-harmonic-dotted.ly index f177dea86f..5dc8ca24d4 100644 --- a/input/regression/note-head-harmonic-dotted.ly +++ b/input/regression/note-head-harmonic-dotted.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/note-head-harmonic-whole.ly b/input/regression/note-head-harmonic-whole.ly index 9a1acec3e9..b3267998b4 100644 --- a/input/regression/note-head-harmonic-whole.ly +++ b/input/regression/note-head-harmonic-whole.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/note-head-harmonic.ly b/input/regression/note-head-harmonic.ly index a3f7338ec0..dcf30bd7a1 100644 --- a/input/regression/note-head-harmonic.ly +++ b/input/regression/note-head-harmonic.ly @@ -13,7 +13,7 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" { diff --git a/input/regression/note-head-sacred-harp.ly b/input/regression/note-head-sacred-harp.ly index 36ef448597..9c88819cdd 100644 --- a/input/regression/note-head-sacred-harp.ly +++ b/input/regression/note-head-sacred-harp.ly @@ -3,7 +3,7 @@ texidoc = "Notes can be set in the Sacred Harp style." } -\version "2.14.0" +\version "2.16.0" \relative c' { \key c \major diff --git a/input/regression/note-head-shape-minor.ly b/input/regression/note-head-shape-minor.ly index eaffe5d774..b41c57695a 100644 --- a/input/regression/note-head-shape-minor.ly +++ b/input/regression/note-head-shape-minor.ly @@ -3,7 +3,7 @@ texidoc = "Shape notes can be set to work properly in minor keys." } -\version "2.14.0" +\version "2.16.0" \relative c' { \key c \major diff --git a/input/regression/note-head-solfa.ly b/input/regression/note-head-solfa.ly index e3ee1bd485..67fffc1313 100644 --- a/input/regression/note-head-solfa.ly +++ b/input/regression/note-head-solfa.ly @@ -5,7 +5,7 @@ is adjusted according to the step of the scale, as measured relative to the @code{tonic} property." } -\version "2.14.0" +\version "2.16.0" fragment = { \key c \major diff --git a/input/regression/note-head-southern-harmony.ly b/input/regression/note-head-southern-harmony.ly index 21fce3cebe..d1a18e924c 100644 --- a/input/regression/note-head-southern-harmony.ly +++ b/input/regression/note-head-southern-harmony.ly @@ -3,7 +3,7 @@ texidoc = "Notes can be set in the Southern Harmony style." } -\version "2.14.0" +\version "2.16.0" \relative c' { \key c \major diff --git a/input/regression/note-head-style.ly b/input/regression/note-head-style.ly index 471b79d9ee..9ddc8b6ae8 100644 --- a/input/regression/note-head-style.ly +++ b/input/regression/note-head-style.ly @@ -1,13 +1,13 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" -Note head shapes may be set from several choices. -The stem endings should be adjusted according to the note head. +Note head shapes may be set from several choices. +The stem endings should be adjusted according to the note head. If you want different note head styles on one stem, you must create a special context. Harmonic notes have a different shape and different -dimensions. +dimensions. " } @@ -23,7 +23,7 @@ pattern = << } \new Voice { \override Stem #'direction = #DOWN - a4 a2. a1 a\breve*1/2 a\longa*1/4 + g4 g2. g1 g\breve*1/2 g\longa*1/4 } >> @@ -98,6 +98,13 @@ pattern = << \override Staff.NoteHead #'style = #'slash s1*0^\markup { "slash" } \pattern + + \break + + \override Staff.NoteHead #'style = #'kievan + s1*0^\markup { "kievan" } + \pattern + } diff --git a/input/regression/note-head-walker.ly b/input/regression/note-head-walker.ly index d7952805ef..65e1b5c989 100644 --- a/input/regression/note-head-walker.ly +++ b/input/regression/note-head-walker.ly @@ -3,7 +3,7 @@ texidoc = "Notes can be set in the Walker (Christian Harmony) style." } -\version "2.14.0" +\version "2.16.0" \relative c' { \key c \major diff --git a/input/regression/note-line.ly b/input/regression/note-line.ly index 86f8bdaf8e..c1be7be234 100644 --- a/input/regression/note-line.ly +++ b/input/regression/note-line.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Note head lines (e.g. glissando) diff --git a/input/regression/note-names-context.ly b/input/regression/note-names-context.ly index f06b6e3157..3041797736 100644 --- a/input/regression/note-names-context.ly +++ b/input/regression/note-names-context.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/note-names.ly b/input/regression/note-names.ly index 9c81b0e35b..dd8b9b02a1 100644 --- a/input/regression/note-names.ly +++ b/input/regression/note-names.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Various languages are supported for note names input. diff --git a/input/regression/number-staff-lines.ly b/input/regression/number-staff-lines.ly index a0ea6d89cf..489e62be63 100644 --- a/input/regression/number-staff-lines.ly +++ b/input/regression/number-staff-lines.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" The number of stafflines of a staff can be set. Ledger diff --git a/input/regression/one-line-breaking.ly b/input/regression/one-line-breaking.ly new file mode 100644 index 0000000000..a89c5c1b50 --- /dev/null +++ b/input/regression/one-line-breaking.ly @@ -0,0 +1,9 @@ +\version "2.16.0" + +\header { + texidoc = "The @var{ly:one-line-breaking} algorithm puts everything on one line." +} + +\paper { page-breaking = #ly:one-line-breaking } + +\include "typography-demo.ly" diff --git a/input/regression/optimal-page-breaking-hstretch.ly b/input/regression/optimal-page-breaking-hstretch.ly index b96107c098..973e1f580d 100644 --- a/input/regression/optimal-page-breaking-hstretch.ly +++ b/input/regression/optimal-page-breaking-hstretch.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") @@ -7,9 +7,9 @@ \header{ texidoc="The optimal page breaker will make trade-offs between horizontal and vertical stretching so that the overall spacing -will be more acceptable. The page-spacing-weight parameter -controls the relative importance of vertical/horizontal spacing. -Because ragged-last-bottom is on, there is no penalty for odd +will be more acceptable. The @code{page-spacing-weight} parameter +controls the relative importance of vertical/@/horizontal spacing. +Because @code{ragged-last-bottom} is on, there is no penalty for odd vertical spacing on the final page. As a result, only the first page should be horizontally stretched. " diff --git a/input/regression/option-help.ly b/input/regression/option-help.ly index a377279c3e..5259e9d790 100644 --- a/input/regression/option-help.ly +++ b/input/regression/option-help.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Print the option help text, for comparison against previous releases." } -#(ly:option-usage) +#(ly:option-usage (current-error-port)) diff --git a/input/regression/optional-args-backup.ly b/input/regression/optional-args-backup.ly new file mode 100644 index 0000000000..e48cc28d24 --- /dev/null +++ b/input/regression/optional-args-backup.ly @@ -0,0 +1,31 @@ +\version "2.16.0" + +\header{ + texidoc= "Test backup of predicate-based optional music function arguments. + +Unit expressions like @code{3\cm} can't be parsed as optional +arguments in one go since they would require lookahead after @code{3}. +The predicate is checked after @code{3}, and if it is suitable, +Lilypond commits to parsing as a unit number, and checks the result +again. For the predicate @code{integer?} and @code{3\cm}, you would +actually get a syntax error (since the combination is no longer an +integer) rather than Lilypond trying to see @code{3\cm} as two +separate arguments." + +} + +\layout { ragged-right = ##t } + +test=#(define-void-function (parser location expect . rest) + (list? (string? "def1") (integer? "def2") (fraction? "def3") integer?) + (if (not (equal? expect rest)) + (ly:parser-error parser + (format #f "Expected ~s, got ~s.\n" expect rest) + location))) + +twice=2 + +\test #'("x" 3 (3 . 4) 8) x 3 3/4 4\twice +\test #'("x" 3 "def3" 8) x 3 4\twice +\test #'("x" 8 "def3" 10) x 4\twice 5\twice +\test #'("def1" "def2" "def3" 8) 4\twice diff --git a/input/regression/optional-args-predicate.ly b/input/regression/optional-args-predicate.ly new file mode 100644 index 0000000000..d50230f594 --- /dev/null +++ b/input/regression/optional-args-predicate.ly @@ -0,0 +1,20 @@ +\version "2.16.0" + +\header{ + texidoc= "Test predicate-based optional music function argument skipping." +} + +\layout { ragged-right = ##t } + +test=#(define-scheme-function (parser location str int frac exp) + ((string? "def1") (integer? "def2") (number-pair? "def3") list?) + (if (not (equal? (list str int frac) exp)) + (ly:parser-error parser + (format #f "Expected ~a, got ~a.\n" exp + (list str int frac)) + location))) + +\test "a" #3 #'(3 . 4) #'("a" 3 (3 . 4)) +\test "a" #3 #'("a" 3 "def3") +\test "a" #'("a" "def2" "def3") +\test #'("def1" "def2" "def3") diff --git a/input/regression/optional-args.ly b/input/regression/optional-args.ly new file mode 100644 index 0000000000..1fbce42da9 --- /dev/null +++ b/input/regression/optional-args.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header{ + texidoc= "Test optional music function arguments. +The output is nonsensical, but if you wrack your brain, +you'll figure it out. Remember that optional arguments +are matched left to right, and after the first non-match, +the rest is skipped." +} + +\layout { ragged-right = ##t } + +% Get following pitch into Scheme +pitch = #(define-scheme-function (parser location p) (ly:pitch?) p) +% The same with a duration +dur = #(define-scheme-function (parser location p) (ly:duration?) p) + +% Just like \relative, but defaulting to f as reference, making the +% first note of the music the same as if written as absolute pitch +ablative = +#(define-music-function (parser location ref music) + ((ly:pitch? #{ \pitch f #}) ly:music?) + #{ \relative $ref $music #}) + +% Let's take a duration and four pitches, defaulting to 2 c' d' e' +zap = +#(define-music-function (parser location dur a b c d) + ((ly:duration? #{ \dur 2 #}) (ly:pitch? #{ \pitch c' #}) + (ly:pitch? #{ \pitch d' #}) (ly:pitch? #{ \pitch e' #}) + ly:music?) #{ $a $dur $b $c ^\markup{!} $d #}) + +\new Voice { \relative c' e' \relative { e' } \ablative c' e' \ablative { e' } + \zap 8. c'' d'' {e''4..} \zap f''8 g'' \zap 4 a'' b'' c''' d'''2 } diff --git a/input/regression/ottava-broken.ly b/input/regression/ottava-broken.ly index a22f29d648..30f4c57016 100644 --- a/input/regression/ottava-broken.ly +++ b/input/regression/ottava-broken.ly @@ -10,7 +10,7 @@ the end of the line (regardless of prefatory matter). } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/ottava-edge.ly b/input/regression/ottava-edge.ly index 68187ac12b..3dc29fbcb7 100644 --- a/input/regression/ottava-edge.ly +++ b/input/regression/ottava-edge.ly @@ -5,7 +5,7 @@ "Both edge heights of an ottava bracket can be specified." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t} diff --git a/input/regression/ottava.ly b/input/regression/ottava.ly index 548d5b74c8..54501c50c9 100644 --- a/input/regression/ottava.ly +++ b/input/regression/ottava.ly @@ -11,7 +11,7 @@ markup can be tuned with @code{Staff.ottavation}. } -\version "2.14.0" +\version "2.16.0" %% . There must be a minimum distance between the octavation line and the %% topmost staff line, taking into account the height of the closing diff --git a/input/regression/override-nest-scheme.ly b/input/regression/override-nest-scheme.ly index a0a1b5abda..3a629ee556 100644 --- a/input/regression/override-nest-scheme.ly +++ b/input/regression/override-nest-scheme.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A sublist of grob property lists may be overridden within a callback. diff --git a/input/regression/override-nest.ly b/input/regression/override-nest.ly index c10ec57d85..6c899c7b6c 100644 --- a/input/regression/override-nest.ly +++ b/input/regression/override-nest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Sublist of grob property lists may be also tuned. In the diff --git a/input/regression/page-break-between-scores.ly b/input/regression/page-break-between-scores.ly index 0de8cf2224..8f74ecfcec 100644 --- a/input/regression/page-break-between-scores.ly +++ b/input/regression/page-break-between-scores.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Page breaks work when they are placed at the end of a score, diff --git a/input/regression/page-break-turn-toplevel.ly b/input/regression/page-break-turn-toplevel.ly index 4bf59fb509..5cef689974 100644 --- a/input/regression/page-break-turn-toplevel.ly +++ b/input/regression/page-break-turn-toplevel.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Page breaking and page turning commands (@code{\\pageBreak}, diff --git a/input/regression/page-break-warn-forbidden.ly b/input/regression/page-break-warn-forbidden.ly index 224f572902..514962e1fc 100644 --- a/input/regression/page-break-warn-forbidden.ly +++ b/input/regression/page-break-warn-forbidden.ly @@ -1,3 +1,8 @@ +\version "2.16.0" + +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "forced break was overridden by some other event, should you be using bar checks?")) +#(ly:expect-warning (_ "forced break was overridden by some other event, should you be using bar checks?")) \header { @@ -6,8 +11,6 @@ } -\version "2.14.0" - \new Staff { c'1 \glissando \pageBreak diff --git a/input/regression/page-breaking-end-of-score.ly b/input/regression/page-breaking-end-of-score.ly new file mode 100644 index 0000000000..ce08dc1724 --- /dev/null +++ b/input/regression/page-breaking-end-of-score.ly @@ -0,0 +1,19 @@ +\version "2.16.0" + +\header { + texidoc = "Page breaks are allowed by default at the end of the score, +but the user can override them. There should be one line on the first +page and two (colliding) lines on the second page." +} + +\paper { + paper-height = 4\cm +} + +\book { +{ c'4 } + +{ c'4 } \noPageBreak + +{ c'4 } +} diff --git a/input/regression/page-breaking-good-estimation.ly b/input/regression/page-breaking-good-estimation.ly index b479f80b14..438d5f63c2 100644 --- a/input/regression/page-breaking-good-estimation.ly +++ b/input/regression/page-breaking-good-estimation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The page breaking algorithm can handle clefs combined diff --git a/input/regression/page-breaking-markup-padding.ly b/input/regression/page-breaking-markup-padding.ly index 3a19c06960..9b7ee4e718 100644 --- a/input/regression/page-breaking-markup-padding.ly +++ b/input/regression/page-breaking-markup-padding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-breaking-markup-padding2.ly b/input/regression/page-breaking-markup-padding2.ly index 6c0d2da0db..d7bec67528 100644 --- a/input/regression/page-breaking-markup-padding2.ly +++ b/input/regression/page-breaking-markup-padding2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-breaking-markup-padding3.ly b/input/regression/page-breaking-markup-padding3.ly index 76d0801f47..dd140776a3 100644 --- a/input/regression/page-breaking-markup-padding3.ly +++ b/input/regression/page-breaking-markup-padding3.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-breaking-max-systems-per-page.ly b/input/regression/page-breaking-max-systems-per-page.ly index 79796338ba..8e49819d7d 100644 --- a/input/regression/page-breaking-max-systems-per-page.ly +++ b/input/regression/page-breaking-max-systems-per-page.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The max-systems-per-page variable prevents more @@ -16,4 +16,4 @@ max-systems-per-page in unusual situations." } { c'1 \break c'1 \break \noPageBreak c'1 \break c'1 } -} \ No newline at end of file +} diff --git a/input/regression/page-breaking-min-distance.ly b/input/regression/page-breaking-min-distance.ly index c532916bb2..db23c7f274 100644 --- a/input/regression/page-breaking-min-distance.ly +++ b/input/regression/page-breaking-min-distance.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "minimum-distance is correctly accounted for in page breaking." diff --git a/input/regression/page-breaking-min-distance2.ly b/input/regression/page-breaking-min-distance2.ly index 90224e3957..fdfdd79327 100644 --- a/input/regression/page-breaking-min-distance2.ly +++ b/input/regression/page-breaking-min-distance2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "minimum-distance within a system is correctly accounted for in page breaking." @@ -8,8 +8,7 @@ \context { \Score \override VerticalAxisGroup #'staff-staff-spacing = - #'((basic-distance . 20) - (stretchability . 0)) + #'((minimum-distance . 20)) } } diff --git a/input/regression/page-breaking-min-distance3.ly b/input/regression/page-breaking-min-distance3.ly index cc1bfb2169..3b4ed80620 100644 --- a/input/regression/page-breaking-min-distance3.ly +++ b/input/regression/page-breaking-min-distance3.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "minimum-distance within a system is correctly accounted for in page breaking." diff --git a/input/regression/page-breaking-min-systems-per-page1.ly b/input/regression/page-breaking-min-systems-per-page1.ly index fe4dd32eef..2a5305cd75 100644 --- a/input/regression/page-breaking-min-systems-per-page1.ly +++ b/input/regression/page-breaking-min-systems-per-page1.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") @@ -14,4 +14,4 @@ a minimum number of systems. Titles do not count as systems here." } { \repeat unfold 11 { c'1 } \pageBreak \repeat unfold 6 { c'1 } } -} \ No newline at end of file +} diff --git a/input/regression/page-breaking-min-systems-per-page2.ly b/input/regression/page-breaking-min-systems-per-page2.ly index 14f3ecbb22..192389ef34 100644 --- a/input/regression/page-breaking-min-systems-per-page2.ly +++ b/input/regression/page-breaking-min-systems-per-page2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-breaking-outside-staff-estimation.ly b/input/regression/page-breaking-outside-staff-estimation.ly index b16c12414c..3339c0c434 100644 --- a/input/regression/page-breaking-outside-staff-estimation.ly +++ b/input/regression/page-breaking-outside-staff-estimation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The height-estimation routine takes into account diff --git a/input/regression/page-breaking-outside-staff-estimation2.ly b/input/regression/page-breaking-outside-staff-estimation2.ly index 9def181f80..a4385f1255 100644 --- a/input/regression/page-breaking-outside-staff-estimation2.ly +++ b/input/regression/page-breaking-outside-staff-estimation2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The height-estimation routine doesn't get confused diff --git a/input/regression/page-breaking-page-count1.ly b/input/regression/page-breaking-page-count1.ly index 414af383a4..8ea23229b5 100644 --- a/input/regression/page-breaking-page-count1.ly +++ b/input/regression/page-breaking-page-count1.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The number of pages in a score can be forced by setting @@ -10,4 +10,4 @@ \book { \paper { page-count = 2} \score { {c'1 c'1} } -} \ No newline at end of file +} diff --git a/input/regression/page-breaking-page-count2.ly b/input/regression/page-breaking-page-count2.ly index 8ecbb0c8df..1fe2a9d259 100644 --- a/input/regression/page-breaking-page-count2.ly +++ b/input/regression/page-breaking-page-count2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The number of pages in a score can be forced by setting @@ -11,4 +11,4 @@ few systems for the number of pages, we append blank pages." \book { \paper { page-count = 3} \score { {c'1 c'1} } -} \ No newline at end of file +} diff --git a/input/regression/page-breaking-page-count3.ly b/input/regression/page-breaking-page-count3.ly index 09f3c7ae73..5b3f31b636 100644 --- a/input/regression/page-breaking-page-count3.ly +++ b/input/regression/page-breaking-page-count3.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The number of pages in a score can be forced by setting @@ -11,4 +11,4 @@ too many systems for that number of pages, we will squeeze them in." \book { \paper { page-count = 1} \score { { \repeat unfold 10 {c'1 \break} } } -} \ No newline at end of file +} diff --git a/input/regression/page-breaking-rehearsal-mark.ly b/input/regression/page-breaking-rehearsal-mark.ly index b07a003358..a2caa2a256 100644 --- a/input/regression/page-breaking-rehearsal-mark.ly +++ b/input/regression/page-breaking-rehearsal-mark.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The height of RehearsalMarks is taken into account during page @@ -10,4 +10,4 @@ breaking." \book { \repeat unfold 2 { \mark \markup \column {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} c1 \break } -} \ No newline at end of file +} diff --git a/input/regression/page-breaking-system-count-forced-break.ly b/input/regression/page-breaking-system-count-forced-break.ly index bc457986a9..78a7c46afc 100644 --- a/input/regression/page-breaking-system-count-forced-break.ly +++ b/input/regression/page-breaking-system-count-forced-break.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-breaking-systems-per-page.ly b/input/regression/page-breaking-systems-per-page.ly index a534ff91ac..163557d6bd 100644 --- a/input/regression/page-breaking-systems-per-page.ly +++ b/input/regression/page-breaking-systems-per-page.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The systems-per-page variable forces a certain number of systems @@ -14,4 +14,4 @@ per page. Titles are not counted as systems." } { \repeat unfold 3 { c'1 } \pageBreak \repeat unfold 3 { c'1 } } -} \ No newline at end of file +} diff --git a/input/regression/page-breaks.ly b/input/regression/page-breaks.ly index 7e43b91be9..e47a85f142 100644 --- a/input/regression/page-breaks.ly +++ b/input/regression/page-breaks.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -59,12 +59,12 @@ \column { \fill-line { " " - \line { "Music engraving by LilyPond" #(ly:export (lilypond-version)) }4 + \line { "Music engraving by LilyPond" #(lilypond-version) }4 " " } \with-url %% todo: lilypond.org/music-engraving - #"http://lilypond.org/web/" + #"http://lilypond.org/" \fill-line { "www.lilypond.org" } diff --git a/input/regression/page-headers-and-footers.ly b/input/regression/page-headers-and-footers.ly new file mode 100644 index 0000000000..edec830b0e --- /dev/null +++ b/input/regression/page-headers-and-footers.ly @@ -0,0 +1,45 @@ +\version "2.16.0" + +\header { + + texidoc = "Page-headers and -footers. All headers and footers + should be printed on their specified page. " + +} + +\paper { + ragged-last-bottom = ##f + + oddHeaderMarkup = \markup { + \override #'(baseline-skip . 1) + \center-column { + \box \fill-line { \teeny " " " " } + \on-the-fly #first-page "first-page-header-text" + \on-the-fly #not-first-page \fromproperty #'page:page-number-string + \on-the-fly #(on-page 2) "page-2-header-text" + \on-the-fly #last-page "last-page-header-text" + } + } + + evenHeaderMarkup = \oddHeaderMarkup + + oddFooterMarkup = \markup \fill-line { + \override #'(baseline-skip . 0.5) + \center-column { + \on-the-fly #first-page "first-page-footer-text" + \on-the-fly #last-page "last-page-footer-text" + \on-the-fly #(on-page 2) "page-2-footer-text" + \box \fill-line { \teeny " " " " } + } + } +} + +#(set-default-paper-size "a6" 'portrait) + +\book { + \score { + \new Staff \relative c' { + \repeat unfold 18 { a b c d \break } + } + } +} diff --git a/input/regression/page-label-loose-column.ly b/input/regression/page-label-loose-column.ly index 4ecc672fe3..5d765dbe29 100644 --- a/input/regression/page-label-loose-column.ly +++ b/input/regression/page-label-loose-column.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Page labels on loose columns are not ignored: this includes both mid-line @@ -9,7 +9,7 @@ break-aligned grobs)." #(set-default-paper-size "a6") \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \relative c' { c2 \tocItem "Mid-line" c^"mid" diff --git a/input/regression/page-label.ly b/input/regression/page-label.ly index c7893c8e31..21fa1fe80b 100644 --- a/input/regression/page-label.ly +++ b/input/regression/page-label.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Page labels may be placed inside music or at top-level, -and refered to in markups." +and referred to in markups." } #(set-default-paper-size "a6") @@ -43,4 +43,4 @@ and refered to in markups." } \header { piece = "First score" } } -} \ No newline at end of file +} diff --git a/input/regression/page-layout-manual-position.ly b/input/regression/page-layout-manual-position.ly index 989214a52d..0067cf34dc 100644 --- a/input/regression/page-layout-manual-position.ly +++ b/input/regression/page-layout-manual-position.ly @@ -8,7 +8,7 @@ systems may be placed absolutely on the printable area of the page." } -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6" 'portrait) diff --git a/input/regression/page-layout.ly b/input/regression/page-layout.ly index 9b931b6890..655d34a6d9 100644 --- a/input/regression/page-layout.ly +++ b/input/regression/page-layout.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" diff --git a/input/regression/page-limited-space.ly b/input/regression/page-limited-space.ly index 469a164fa9..6af1fc1616 100644 --- a/input/regression/page-limited-space.ly +++ b/input/regression/page-limited-space.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") \header { diff --git a/input/regression/page-links-nolabel.ly b/input/regression/page-links-nolabel.ly index 6ebdf57063..9801c04f55 100644 --- a/input/regression/page-links-nolabel.ly +++ b/input/regression/page-links-nolabel.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -8,4 +8,4 @@ \book { \markup { \with-link #'dummy \concat { "Link to non-existing label" } } -} \ No newline at end of file +} diff --git a/input/regression/page-links.ly b/input/regression/page-links.ly index f9be4dd3e2..e033821653 100644 --- a/input/regression/page-links.ly +++ b/input/regression/page-links.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -28,4 +28,4 @@ d' d' } } -} \ No newline at end of file +} diff --git a/input/regression/page-minimal-page-breaking-last-page.ly b/input/regression/page-minimal-page-breaking-last-page.ly index 3a4ddf9891..3ee9129709 100644 --- a/input/regression/page-minimal-page-breaking-last-page.ly +++ b/input/regression/page-minimal-page-breaking-last-page.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") \header { @@ -20,4 +20,4 @@ textBox = \markup \fill-line { \override #'(box-padding . 13) \box Text } \markup \textBox \markup \textBox \markup \textBox -} \ No newline at end of file +} diff --git a/input/regression/page-minimal-page-breaking.ly b/input/regression/page-minimal-page-breaking.ly index 540894ea82..29c2d62a14 100644 --- a/input/regression/page-minimal-page-breaking.ly +++ b/input/regression/page-minimal-page-breaking.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") \header { @@ -32,4 +32,4 @@ only accounting for manual page break commands." \new Staff \repeat unfold 12 { g'4 } >> } -} \ No newline at end of file +} diff --git a/input/regression/page-overflow-compression.ly b/input/regression/page-overflow-compression.ly index f6c613d8f0..c22acc98ed 100644 --- a/input/regression/page-overflow-compression.ly +++ b/input/regression/page-overflow-compression.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/page-spacing-bass-figures.ly b/input/regression/page-spacing-bass-figures.ly index 481892a2d8..c068be2f33 100644 --- a/input/regression/page-spacing-bass-figures.ly +++ b/input/regression/page-spacing-bass-figures.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@var{alignment-distances} applies to the toplevel diff --git a/input/regression/page-spacing-bottom-spring.ly b/input/regression/page-spacing-bottom-spring.ly index dc29d10c4e..3a55bb1421 100644 --- a/input/regression/page-spacing-bottom-spring.ly +++ b/input/regression/page-spacing-bottom-spring.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") \book { @@ -17,4 +17,4 @@ page. However, it is sufficiently stiff to cause stretching." \new Staff c'1 \new Staff c'1 >> -} \ No newline at end of file +} diff --git a/input/regression/page-spacing-dynamics.ly b/input/regression/page-spacing-dynamics.ly index 06e512c594..d83ece346c 100644 --- a/input/regression/page-spacing-dynamics.ly +++ b/input/regression/page-spacing-dynamics.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Dynamic centering still works with alignment-distances." diff --git a/input/regression/page-spacing-markups.ly b/input/regression/page-spacing-markups.ly index 55acfaeef6..bc065ca135 100644 --- a/input/regression/page-spacing-markups.ly +++ b/input/regression/page-spacing-markups.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Adjacent lines of markup are placed as closely @@ -10,7 +10,7 @@ together as possible." \paper { ragged-last-bottom = ##f } - \markuplines { + \markuplist { \column { A B } C D E } } diff --git a/input/regression/page-spacing-nonstaff-lines-and-markup.ly b/input/regression/page-spacing-nonstaff-lines-and-markup.ly index c86dd50171..1e26dfe317 100644 --- a/input/regression/page-spacing-nonstaff-lines-and-markup.ly +++ b/input/regression/page-spacing-nonstaff-lines-and-markup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Having markup after a non-staff line doesn't confuse diff --git a/input/regression/page-spacing-nonstaff-lines-between-systems.ly b/input/regression/page-spacing-nonstaff-lines-between-systems.ly index b1d161bb8d..6495f7f12d 100644 --- a/input/regression/page-spacing-nonstaff-lines-between-systems.ly +++ b/input/regression/page-spacing-nonstaff-lines-between-systems.ly @@ -1,13 +1,13 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The vertical spacing engine is not confused by a non-staff line below a system followed by a loose line above the -next system." +next system. Systems are spaced far enough that loose lines +are not interleaved, even if gaps would allow interleaving." } \paper { - indent = 0 ragged-right = ##t } diff --git a/input/regression/page-spacing-nonstaff-lines-between.ly b/input/regression/page-spacing-nonstaff-lines-between.ly index bc1638d7b6..355edee9dd 100644 --- a/input/regression/page-spacing-nonstaff-lines-between.ly +++ b/input/regression/page-spacing-nonstaff-lines-between.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Non-staff lines between two systems don't confuse the diff --git a/input/regression/page-spacing-nonstaff-lines-bottom.ly b/input/regression/page-spacing-nonstaff-lines-bottom.ly index 0c0d9b21c4..ec4dceeaf4 100644 --- a/input/regression/page-spacing-nonstaff-lines-bottom.ly +++ b/input/regression/page-spacing-nonstaff-lines-bottom.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A non-staff line (such as @code{Lyrics}) at the diff --git a/input/regression/page-spacing-nonstaff-lines-header-padding.ly b/input/regression/page-spacing-nonstaff-lines-header-padding.ly index b98ec7eea5..99749aa80b 100644 --- a/input/regression/page-spacing-nonstaff-lines-header-padding.ly +++ b/input/regression/page-spacing-nonstaff-lines-header-padding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Padding from the header and footer is measured to the diff --git a/input/regression/page-spacing-nonstaff-lines-independent.ly b/input/regression/page-spacing-nonstaff-lines-independent.ly index 26d7a9d1ff..35b583429b 100644 --- a/input/regression/page-spacing-nonstaff-lines-independent.ly +++ b/input/regression/page-spacing-nonstaff-lines-independent.ly @@ -1,4 +1,4 @@ -\version "2.13.39" +\version "2.16.0" \header { texidoc = "Spacing rules between Staves coexist with rules affecting diff --git a/input/regression/page-spacing-nonstaff-lines-skylines.ly b/input/regression/page-spacing-nonstaff-lines-skylines.ly new file mode 100644 index 0000000000..8c67cf6b2e --- /dev/null +++ b/input/regression/page-spacing-nonstaff-lines-skylines.ly @@ -0,0 +1,19 @@ +\version "2.16.0" + +\header { + texidoc = "Relative indentation between systems is taken into + account in allowing space for loose lines between systems." +} + +\paper { + ragged-right = ##t + indent = 10 + short-indent = 00 +} + +\book { + \score { << + \chords {s1\break c2 c2 } + \new Staff {\clef bass c,1 | c''2 c2 } + >> } +} diff --git a/input/regression/page-spacing-nonstaff-lines-top.ly b/input/regression/page-spacing-nonstaff-lines-top.ly index 1916cab1e7..05566ca813 100644 --- a/input/regression/page-spacing-nonstaff-lines-top.ly +++ b/input/regression/page-spacing-nonstaff-lines-top.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A non-staff line (such as @code{Lyrics}) at the top diff --git a/input/regression/page-spacing-nonstaff-lines-unrelated.ly b/input/regression/page-spacing-nonstaff-lines-unrelated.ly index a385a5e6cc..16e5588d27 100644 --- a/input/regression/page-spacing-nonstaff-lines-unrelated.ly +++ b/input/regression/page-spacing-nonstaff-lines-unrelated.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Non-staff lines (such as @code{Lyrics}) can specify diff --git a/input/regression/page-spacing-rehearsal-mark.ly b/input/regression/page-spacing-rehearsal-mark.ly index 7a2a574f29..3bf843b15b 100644 --- a/input/regression/page-spacing-rehearsal-mark.ly +++ b/input/regression/page-spacing-rehearsal-mark.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The space taken up by rehearsal marks is correctly diff --git a/input/regression/page-spacing-staff-group-hara-kiri.ly b/input/regression/page-spacing-staff-group-hara-kiri.ly index d99dda7626..34dd520512 100644 --- a/input/regression/page-spacing-staff-group-hara-kiri.ly +++ b/input/regression/page-spacing-staff-group-hara-kiri.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "StaffGrouper interacts correctly with \RemoveEmptyStaffContext. diff --git a/input/regression/page-spacing-staff-group-nested.ly b/input/regression/page-spacing-staff-group-nested.ly index 0512020b5e..3d0ca6b0ca 100644 --- a/input/regression/page-spacing-staff-group-nested.ly +++ b/input/regression/page-spacing-staff-group-nested.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "StaffGroups can be nested, in which case the inner StaffGroup wins." diff --git a/input/regression/page-spacing-staff-group.ly b/input/regression/page-spacing-staff-group.ly index ba2552ecb3..d1889a0ee9 100644 --- a/input/regression/page-spacing-staff-group.ly +++ b/input/regression/page-spacing-staff-group.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") @@ -27,4 +27,4 @@ closely than staves not in a StaffGroup." \new Staff c'1 >> >> -} \ No newline at end of file +} diff --git a/input/regression/page-spacing-stretchability.ly b/input/regression/page-spacing-stretchability.ly index aa84d35eb5..3fec3cf67b 100644 --- a/input/regression/page-spacing-stretchability.ly +++ b/input/regression/page-spacing-stretchability.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-spacing-system-count-overfull.ly b/input/regression/page-spacing-system-count-overfull.ly index e92203621e..32c744fb84 100644 --- a/input/regression/page-spacing-system-count-overfull.ly +++ b/input/regression/page-spacing-system-count-overfull.ly @@ -1,4 +1,6 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "cannot find line breaking that satisfies constraints")) \header { texidoc = "Page breaking doesn't crash when the line-breaking diff --git a/input/regression/page-spacing-system-count.ly b/input/regression/page-spacing-system-count.ly index 9e39d6af37..4c2c60ac0d 100644 --- a/input/regression/page-spacing-system-count.ly +++ b/input/regression/page-spacing-system-count.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Page layout and stretching work with system-count enabled." diff --git a/input/regression/page-spacing-tall-headfoot.ly b/input/regression/page-spacing-tall-headfoot.ly index c4fce28b70..7a92ae57e1 100644 --- a/input/regression/page-spacing-tall-headfoot.ly +++ b/input/regression/page-spacing-tall-headfoot.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-spacing-top-markup-spacing.ly b/input/regression/page-spacing-top-markup-spacing.ly index 5f52058abf..ac6790491f 100644 --- a/input/regression/page-spacing-top-markup-spacing.ly +++ b/input/regression/page-spacing-top-markup-spacing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-spacing-top-system-spacing.ly b/input/regression/page-spacing-top-system-spacing.ly index a8b0d01df6..28dfa7c0f2 100644 --- a/input/regression/page-spacing-top-system-spacing.ly +++ b/input/regression/page-spacing-top-system-spacing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-spacing.ly b/input/regression/page-spacing.ly index b25589a4bb..197dbe38ea 100644 --- a/input/regression/page-spacing.ly +++ b/input/regression/page-spacing.ly @@ -13,7 +13,7 @@ By setting @code{annotate-spacing}, we can see the effect of each property. } -\version "2.14.0" +\version "2.16.0" #(set-global-staff-size 11) diff --git a/input/regression/page-top-space.ly b/input/regression/page-top-space.ly index 7aa4475c3e..bceef72a62 100644 --- a/input/regression/page-top-space.ly +++ b/input/regression/page-top-space.ly @@ -4,7 +4,7 @@ first system can be forced to be uniform." } -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6") diff --git a/input/regression/page-turn-page-breaking-auto-first-page.ly b/input/regression/page-turn-page-breaking-auto-first-page.ly index 64b15f130d..fcee7676c8 100644 --- a/input/regression/page-turn-page-breaking-auto-first-page.ly +++ b/input/regression/page-turn-page-breaking-auto-first-page.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "By default, we start with page 1, which is on the right hand side diff --git a/input/regression/page-turn-page-breaking-auto-first-page2.ly b/input/regression/page-turn-page-breaking-auto-first-page2.ly index 076173b5b6..667afe7726 100644 --- a/input/regression/page-turn-page-breaking-auto-first-page2.ly +++ b/input/regression/page-turn-page-breaking-auto-first-page2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "By default, we start with page 1, which is on the right hand side diff --git a/input/regression/page-turn-page-breaking-badturns.ly b/input/regression/page-turn-page-breaking-badturns.ly index 44a21bc85f..47168fa145 100644 --- a/input/regression/page-turn-page-breaking-badturns.ly +++ b/input/regression/page-turn-page-breaking-badturns.ly @@ -1,4 +1,6 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number.")) \header { texidoc="If there are no good places to have a page turn, diff --git a/input/regression/page-turn-page-breaking-repeats.ly b/input/regression/page-turn-page-breaking-repeats.ly index 1c9624dd97..f007c9ba90 100644 --- a/input/regression/page-turn-page-breaking-repeats.ly +++ b/input/regression/page-turn-page-breaking-repeats.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The page-turn engraver will not count potential page diff --git a/input/regression/page-turn-page-breaking.ly b/input/regression/page-turn-page-breaking.ly index e377daf7be..30a2270e9c 100644 --- a/input/regression/page-turn-page-breaking.ly +++ b/input/regression/page-turn-page-breaking.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="The page-turn breaker will put a page turn after diff --git a/input/regression/palm-mute.ly b/input/regression/palm-mute.ly index 945ab0372f..391c067057 100644 --- a/input/regression/palm-mute.ly +++ b/input/regression/palm-mute.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = diff --git a/input/regression/paper-default-margins-a6.ly b/input/regression/paper-default-margins-a6.ly index d8ce1f0c21..5c14f2e68f 100644 --- a/input/regression/paper-default-margins-a6.ly +++ b/input/regression/paper-default-margins-a6.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Default values for margins, indents, and offsets are diff --git a/input/regression/paper-default-margins-def.ly b/input/regression/paper-default-margins-def.ly index 4dbd0ac762..6f5c65ea6d 100644 --- a/input/regression/paper-default-margins-def.ly +++ b/input/regression/paper-default-margins-def.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Default values for margins, indents, and offsets are diff --git a/input/regression/paper-margins-consistency.ly b/input/regression/paper-margins-consistency.ly index af1a82aacc..3bb25d7907 100644 --- a/input/regression/paper-margins-consistency.ly +++ b/input/regression/paper-margins-consistency.ly @@ -1,6 +1,7 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "margins do not fit with line-width, setting default values")) \header { texidoc = "Margin values must fit the line-width, that means: paper-width = diff --git a/input/regression/paper-margins-left-margin.ly b/input/regression/paper-margins-left-margin.ly index 0facc775b9..8444b78fad 100644 --- a/input/regression/paper-margins-left-margin.ly +++ b/input/regression/paper-margins-left-margin.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Here only left-margin is given, right-margin will remain default." diff --git a/input/regression/paper-margins-line-width.ly b/input/regression/paper-margins-line-width.ly index f7bf047719..d32cbd5f50 100644 --- a/input/regression/paper-margins-line-width.ly +++ b/input/regression/paper-margins-line-width.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If only line-width is given, systems are horizontally centered." diff --git a/input/regression/paper-margins-no-checks.ly b/input/regression/paper-margins-no-checks.ly index 2f1fe1ecc5..9409ce6897 100644 --- a/input/regression/paper-margins-no-checks.ly +++ b/input/regression/paper-margins-no-checks.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "All checks can be avoided by setting check-consistency to ##f in \paper." diff --git a/input/regression/paper-margins-overrun.ly b/input/regression/paper-margins-overrun.ly index 85f34dc0c1..95f33f341f 100644 --- a/input/regression/paper-margins-overrun.ly +++ b/input/regression/paper-margins-overrun.ly @@ -1,6 +1,7 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "systems run off the page due to improper paper settings, setting default values")) \header { texidoc = "Normally, margin settings must not cause systems to run off the page." diff --git a/input/regression/paper-margins-right-margin.ly b/input/regression/paper-margins-right-margin.ly index 24e32094ec..c4a5361ca0 100644 --- a/input/regression/paper-margins-right-margin.ly +++ b/input/regression/paper-margins-right-margin.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Here only right-margin is given, left-margin will remain default." diff --git a/input/regression/paper-margins.ly b/input/regression/paper-margins.ly index 0b685c88c0..192d2cdc73 100644 --- a/input/regression/paper-margins.ly +++ b/input/regression/paper-margins.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Paper margin settings do not have to be complete. diff --git a/input/regression/paper-nested-override.ly b/input/regression/paper-nested-override.ly index ec2fd425fa..5af168c697 100644 --- a/input/regression/paper-nested-override.ly +++ b/input/regression/paper-nested-override.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Nested properties can be set in the paper block." diff --git a/input/regression/paper-nested-override2.ly b/input/regression/paper-nested-override2.ly index c70b12c718..ce359b7403 100644 --- a/input/regression/paper-nested-override2.ly +++ b/input/regression/paper-nested-override2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Setting individual nested paper properties does not diff --git a/input/regression/paper-twosided-bcorr.ly b/input/regression/paper-twosided-bcorr.ly index 34ea6c0273..ff61296161 100644 --- a/input/regression/paper-twosided-bcorr.ly +++ b/input/regression/paper-twosided-bcorr.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In two-sided mode, a binding offset can be specified, which is added diff --git a/input/regression/paper-twosided.ly b/input/regression/paper-twosided.ly index b8d893177a..fbc11a17aa 100644 --- a/input/regression/paper-twosided.ly +++ b/input/regression/paper-twosided.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Two-sided mode allows you to use different margins for diff --git a/input/regression/parenthesize-markup.ly b/input/regression/parenthesize-markup.ly index 9801e7af52..162285e954 100644 --- a/input/regression/parenthesize-markup.ly +++ b/input/regression/parenthesize-markup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/parenthesize-singlenotes-chords-rests.ly b/input/regression/parenthesize-singlenotes-chords-rests.ly index 6aaeeaa004..31cbe2e585 100644 --- a/input/regression/parenthesize-singlenotes-chords-rests.ly +++ b/input/regression/parenthesize-singlenotes-chords-rests.ly @@ -10,7 +10,7 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { diff --git a/input/regression/parenthesize.ly b/input/regression/parenthesize.ly index 1b4391c05d..52401ae0ab 100644 --- a/input/regression/parenthesize.ly +++ b/input/regression/parenthesize.ly @@ -12,7 +12,7 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c' { c4 -\parenthesize -. diff --git a/input/regression/part-combine-3voices.ly b/input/regression/part-combine-3voices.ly new file mode 100644 index 0000000000..c71e8e635f --- /dev/null +++ b/input/regression/part-combine-3voices.ly @@ -0,0 +1,18 @@ +\version "2.16.0" + +\header { + texidoc ="It is possible to use the part combiner for three + voices with \\partcombineUp and \\partcombineDown." +} + + +soprano = { d''2 f'' g'' } +alto = { a' c''4 d'' e''2 } +tenor = { f'2 a'4 b' c''2 } +basso = { d'4 e' f' g' g'2 } + +\new Staff << \partcombineUp \soprano \alto \\ \basso >> + +\new Staff << \soprano \\ \partcombineDown \tenor \basso >> + + diff --git a/input/regression/part-combine-a2.ly b/input/regression/part-combine-a2.ly index b13221eb85..d6dae3ac7b 100644 --- a/input/regression/part-combine-a2.ly +++ b/input/regression/part-combine-a2.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="The a2 string is printed only on notes (i.e. not on rests), and only after chords, solo or polyphony." diff --git a/input/regression/part-combine-cross.ly b/input/regression/part-combine-cross.ly index 979180cd11..490abbcb8a 100644 --- a/input/regression/part-combine-cross.ly +++ b/input/regression/part-combine-cross.ly @@ -4,7 +4,7 @@ " } -\version "2.14.0" +\version "2.16.0" vone = \relative a' { g4 g f f e e d d } vtwo = \relative a' { e4 e f f g g a a } diff --git a/input/regression/part-combine-force-mmrest-position.ly b/input/regression/part-combine-force-mmrest-position.ly index 141c41d7cc..0d3de55492 100644 --- a/input/regression/part-combine-force-mmrest-position.ly +++ b/input/regression/part-combine-force-mmrest-position.ly @@ -7,7 +7,7 @@ \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" mI = \relative c'' { \partcombineApart diff --git a/input/regression/part-combine-force-once.ly b/input/regression/part-combine-force-once.ly index 6247feda8e..6b784513dc 100644 --- a/input/regression/part-combine-force-once.ly +++ b/input/regression/part-combine-force-once.ly @@ -8,7 +8,7 @@ \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" mI = \relative c' { e4 e \partcombineApartOnce c c | diff --git a/input/regression/part-combine-force.ly b/input/regression/part-combine-force.ly index 26483c4ffc..47d64fd7cc 100644 --- a/input/regression/part-combine-force.ly +++ b/input/regression/part-combine-force.ly @@ -8,7 +8,7 @@ \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" mI = \relative c' { e4 e c2 | diff --git a/input/regression/part-combine-global.ly b/input/regression/part-combine-global.ly index cbf0dc84bc..bf2afed3ea 100644 --- a/input/regression/part-combine-global.ly +++ b/input/regression/part-combine-global.ly @@ -11,7 +11,7 @@ voices. " } -\version "2.14.0" +\version "2.16.0" vone = diff --git a/input/regression/part-combine-markup.ly b/input/regression/part-combine-markup.ly index ac46589613..cba4674dcf 100644 --- a/input/regression/part-combine-markup.ly +++ b/input/regression/part-combine-markup.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Part combine texts accept markup." diff --git a/input/regression/part-combine-mmrest-after-solo.ly b/input/regression/part-combine-mmrest-after-solo.ly index 8952b7b690..ca80ade765 100644 --- a/input/regression/part-combine-mmrest-after-solo.ly +++ b/input/regression/part-combine-mmrest-after-solo.ly @@ -1,7 +1,7 @@ \header { texidoc = " Multimeasure rests are printed after solos, both for solo1 and for solo2." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \new Staff diff --git a/input/regression/part-combine-solo-end.ly b/input/regression/part-combine-solo-end.ly index 6e6feb9e8a..35288ff897 100644 --- a/input/regression/part-combine-solo-end.ly +++ b/input/regression/part-combine-solo-end.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } << diff --git a/input/regression/part-combine-solo-global.ly b/input/regression/part-combine-solo-global.ly index 6d447b192c..1b98aac6ba 100644 --- a/input/regression/part-combine-solo-global.ly +++ b/input/regression/part-combine-solo-global.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \new Staff diff --git a/input/regression/part-combine-solo.ly b/input/regression/part-combine-solo.ly index abf58c9a6f..621282709e 100644 --- a/input/regression/part-combine-solo.ly +++ b/input/regression/part-combine-solo.ly @@ -17,7 +17,7 @@ Solo 1/2 can not be used when a spanner is active, so there is no solo vone = \relative a' { d4 r8 d8 d8 r8 d8 r8 d2 ~ d2 ~ d4 } vtwo = \relative g' { g4. g8 r2 g4 r4 r2 g4 } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/part-combine-text-wait.ly b/input/regression/part-combine-text-wait.ly index 4b0d1e0b01..bb868e430e 100644 --- a/input/regression/part-combine-text-wait.ly +++ b/input/regression/part-combine-text-wait.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/part-combine-text.ly b/input/regression/part-combine-text.ly index 41176572a3..cfa905f89b 100644 --- a/input/regression/part-combine-text.ly +++ b/input/regression/part-combine-text.ly @@ -9,7 +9,7 @@ texts accordingly. } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right= ##t } diff --git a/input/regression/part-combine-tuplet-end.ly b/input/regression/part-combine-tuplet-end.ly index dfdda8edf3..a1636a7e6f 100644 --- a/input/regression/part-combine-tuplet-end.ly +++ b/input/regression/part-combine-tuplet-end.ly @@ -5,7 +5,7 @@ even after a switch, a tuplet ends correctly." } -\version "2.14.0" +\version "2.16.0" \new Staff << \partcombine diff --git a/input/regression/part-combine-tuplet-single.ly b/input/regression/part-combine-tuplet-single.ly index cf02f5327a..37029bae09 100644 --- a/input/regression/part-combine-tuplet-single.ly +++ b/input/regression/part-combine-tuplet-single.ly @@ -5,7 +5,7 @@ \paper { ragged-right = ##T } -\version "2.14.0" +\version "2.16.0" \score { << diff --git a/input/regression/part-combine.ly b/input/regression/part-combine.ly index bdb2697001..8669f5bf12 100644 --- a/input/regression/part-combine.ly +++ b/input/regression/part-combine.ly @@ -3,7 +3,7 @@ texidoc ="The new part combiner stays apart from: @itemize @bullet @item different durations, -@item different articulations (taking into account only slur/beam/tie), and +@item different articulations (taking into account only slur/@/beam/@/tie), and @item wide pitch ranges. @end itemize " @@ -11,7 +11,7 @@ \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" vone = \relative a' { g2 g g g4 g f' c c( c) c c c ~ c diff --git a/input/regression/partial-polymetric.ly b/input/regression/partial-polymetric.ly index c99014bd38..cccf47e98c 100644 --- a/input/regression/partial-polymetric.ly +++ b/input/regression/partial-polymetric.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@code{\\partial} works with polymetric staves." diff --git a/input/regression/pdfmark-metadata-unicode.ly b/input/regression/pdfmark-metadata-unicode.ly index 80a2a45bb9..473b0b0e0f 100644 --- a/input/regression/pdfmark-metadata-unicode.ly +++ b/input/regression/pdfmark-metadata-unicode.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header @@ -23,4 +23,4 @@ \score { \new Staff c'1 -} \ No newline at end of file +} diff --git a/input/regression/pdfmark-metadata.ly b/input/regression/pdfmark-metadata.ly index f27a79dd6e..c4158ee29a 100644 --- a/input/regression/pdfmark-metadata.ly +++ b/input/regression/pdfmark-metadata.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The PDF backend uses several header fields to store metadata diff --git a/input/regression/pedal-bracket.ly b/input/regression/pedal-bracket.ly index ff66cc47aa..f7f6319c43 100644 --- a/input/regression/pedal-bracket.ly +++ b/input/regression/pedal-bracket.ly @@ -1,25 +1,29 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The brackets of a piano pedal should start and end at - the left side of the note. If a note is shared between two brackets, - these ends are flared. + the left side of the main note-column. If a note is shared between + two brackets, these ends are flared. -At a line-break, there are no vertical endings. " } +At a line-break, there are no vertical endings. Pedal changes can +be placed at spacer rests." } \score { \relative c'' { \set Staff.pedalSustainStyle = #'bracket - c4 d e \sustainOn b c c, \sustainOff \sustainOn d8[ c] e8[ - e \sustainOff \sustainOn] f4 d - \sustainOff g \sustainOn b b, \sustainOff c' + c4 d \sustainOn b c c, \sustainOff \sustainOn d8[ c] e8[ + e \sustainOff \sustainOn] f4 r \sustainOff + g \sustainOn bes bes, \sustainOff c' \set Staff.pedalUnaCordaStyle = #'mixed - c4 d \unaCorda e f g - b | \break c b c \treCorde c + c4 d \unaCorda e f g b \break + \mark "long mark" + c b \arpeggio \treCorde c | + b8\sustainOn g d b <> | + g1 } \layout { ragged-right = ##t } } diff --git a/input/regression/pedal-end.ly b/input/regression/pedal-end.ly index 0aeed0c93a..94c6c4904a 100644 --- a/input/regression/pedal-end.ly +++ b/input/regression/pedal-end.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Unterminated piano pedal brackets run to the end of the piece. " diff --git a/input/regression/pedal-ped.ly b/input/regression/pedal-ped.ly index d7ad11110c..a9cb0e4b8c 100644 --- a/input/regression/pedal-ped.ly +++ b/input/regression/pedal-ped.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The standard piano pedals style comes with Ped symbols. diff --git a/input/regression/phrasing-slur-dash.ly b/input/regression/phrasing-slur-dash.ly index f87c480415..cf0118a44d 100644 --- a/input/regression/phrasing-slur-dash.ly +++ b/input/regression/phrasing-slur-dash.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " The appearance of phrasing slurs may be changed from solid to dotted or dashed. " diff --git a/input/regression/phrasing-slur-multiple.ly b/input/regression/phrasing-slur-multiple.ly index fb7b499058..dbef390cb5 100644 --- a/input/regression/phrasing-slur-multiple.ly +++ b/input/regression/phrasing-slur-multiple.ly @@ -1,21 +1,25 @@ -\version "2.14.2" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "already have phrasing slur")) +#(ly:expect-warning (_ "cannot end phrasing slur")) +#(ly:expect-warning (_ "unterminated phrasing slur")) \header { - texidoc = "LilyPond does not support multiple concurrent phrasing slurs with the + 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") +sp=#(define-event-function (parser location n e) (index? ly:event?) + (set! (ly:music-property e 'spanner-id) (format "sp~a" n)) + e) -\relative c'' { +\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 | - + c4\(\(\sp1\( d4\)\(\sp1\( e4\) f\) | + % This will give two overlapping slurs and "unterminated phrasing slur" from above + d\( d\sp2\( e\) f\sp2\) | + } diff --git a/input/regression/phrasing-slur-slur-avoid.ly b/input/regression/phrasing-slur-slur-avoid.ly index cb8c7e218f..5e0b21698e 100644 --- a/input/regression/phrasing-slur-slur-avoid.ly +++ b/input/regression/phrasing-slur-slur-avoid.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="@code{PhrasingSlur}s go over normal slurs." } diff --git a/input/regression/phrasing-slur-tuplet.ly b/input/regression/phrasing-slur-tuplet.ly index 888e120a7b..5be066d2ce 100644 --- a/input/regression/phrasing-slur-tuplet.ly +++ b/input/regression/phrasing-slur-tuplet.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Phrasing slurs do not collide with tuplet numbers." diff --git a/input/regression/point-and-click-types.ly b/input/regression/point-and-click-types.ly new file mode 100644 index 0000000000..73f143d1c3 --- /dev/null +++ b/input/regression/point-and-click-types.ly @@ -0,0 +1,7 @@ +\version "2.16.0" + +\pointAndClickTypes #'note-event + +\relative c' { + c2\f( f) +} \ No newline at end of file diff --git a/input/regression/predefined-fretboards-transpose.ly b/input/regression/predefined-fretboards-transpose.ly index e2a329e19a..3e6159617f 100644 --- a/input/regression/predefined-fretboards-transpose.ly +++ b/input/regression/predefined-fretboards-transpose.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/predefined-fretboards.ly b/input/regression/predefined-fretboards.ly index 8bb8d496b7..c22c5760c4 100644 --- a/input/regression/predefined-fretboards.ly +++ b/input/regression/predefined-fretboards.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Predefined fretboards and chord shapes can be added. diff --git a/input/regression/prefatory-empty-spacing.ly b/input/regression/prefatory-empty-spacing.ly index 3e4d2c9115..4ef61ebc02 100644 --- a/input/regression/prefatory-empty-spacing.ly +++ b/input/regression/prefatory-empty-spacing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/prefatory-separation.ly b/input/regression/prefatory-separation.ly index e0e04f42b0..7217d4a125 100644 --- a/input/regression/prefatory-separation.ly +++ b/input/regression/prefatory-separation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/prefatory-spacing-matter.ly b/input/regression/prefatory-spacing-matter.ly index fb86b1ff8a..7ab076858f 100644 --- a/input/regression/prefatory-spacing-matter.ly +++ b/input/regression/prefatory-spacing-matter.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Distances between prefatory items (e.g. clef, bar, diff --git a/input/regression/profile-property-access.ly b/input/regression/profile-property-access.ly index be8016ffa5..3250a38d31 100644 --- a/input/regression/profile-property-access.ly +++ b/input/regression/profile-property-access.ly @@ -8,7 +8,7 @@ Note: lilypond must be compiled with --disable-optimising for this file to work. #(ly:set-option 'profile-property-accesses #t) -\version "2.14.0" +\version "2.16.0" \include "typography-demo.ly" %\book { \score { {c4 } } } @@ -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/property-grace-polyphony.ly b/input/regression/property-grace-polyphony.ly index 2fa8ffaaf6..0308e07ba6 100644 --- a/input/regression/property-grace-polyphony.ly +++ b/input/regression/property-grace-polyphony.ly @@ -7,7 +7,7 @@ } \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { << { \grace e8 d2 } diff --git a/input/regression/property-nested-override.ly b/input/regression/property-nested-override.ly index 0222f397d8..911e238437 100644 --- a/input/regression/property-nested-override.ly +++ b/input/regression/property-nested-override.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Nested properties may be overridden using Scheme list syntax. This test performs two property overrides: the first diff --git a/input/regression/property-nested-revert.ly b/input/regression/property-nested-revert.ly index 638b0d2b99..b7fb7f61a4 100644 --- a/input/regression/property-nested-revert.ly +++ b/input/regression/property-nested-revert.ly @@ -6,7 +6,7 @@ Scheme list syntax." } -\version "2.14.0" +\version "2.16.0" \relative c' { f2 \glissando c diff --git a/input/regression/property-once.ly b/input/regression/property-once.ly index 3ec9323409..642d18104b 100644 --- a/input/regression/property-once.ly +++ b/input/regression/property-once.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Once properties take effect during a single time step only." } diff --git a/input/regression/push-to-tag.ly b/input/regression/push-to-tag.ly new file mode 100644 index 0000000000..5b229c182c --- /dev/null +++ b/input/regression/push-to-tag.ly @@ -0,0 +1,26 @@ +\version "2.16.0" + +\header{ + texidoc=" +Adding material to a tag in sequential and simultaneous expressions +using @code{\\pushToTag} and @code{\\appendToTag}. One should get the +equivalent of +@example +@{ c' e' g' <> <> g' e' c' @} +@end example +" +} + +\layout { ragged-right = ##t } + +test = { \tag #'here { \tag #'here <> }} + +{ + \pushToTag #'here c' + \pushToTag #'here e' + \pushToTag #'here g' \test + \appendToTag #'here c' + \appendToTag #'here e' + \appendToTag #'here g' \test +} + diff --git a/input/regression/quote-cue-during.ly b/input/regression/quote-cue-during.ly index 6d17f09a78..9607f4a839 100644 --- a/input/regression/quote-cue-during.ly +++ b/input/regression/quote-cue-during.ly @@ -11,7 +11,7 @@ last note." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/quote-cue-event-types.ly b/input/regression/quote-cue-event-types.ly index ebdaa35676..1ae6fcfa5f 100644 --- a/input/regression/quote-cue-event-types.ly +++ b/input/regression/quote-cue-event-types.ly @@ -11,7 +11,7 @@ quoted for cue notes than for normal quotes. } -\version "2.14.0" +\version "2.16.0" quoteMe = \relative c' { fis8 r16-. a8.-> \acciaccatura c8 b4(-\ff~ b16 c8. b8) } \addQuote quoteMe \quoteMe diff --git a/input/regression/quote-cyclic.ly b/input/regression/quote-cyclic.ly index 492182acab..afbf309bc0 100644 --- a/input/regression/quote-cyclic.ly +++ b/input/regression/quote-cyclic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Two quoted voices may refer to each other. In this diff --git a/input/regression/quote-during-subvoice.ly b/input/regression/quote-during-subvoice.ly new file mode 100644 index 0000000000..8ec1ce676a --- /dev/null +++ b/input/regression/quote-during-subvoice.ly @@ -0,0 +1,68 @@ +\version "2.16.0" + +\header { + texidoc = "@code{\\quoteDuring} and @code{\\cueDuring} shall properly quote +voices that create a sub-voice. The sub-voice will not be quoted, though. +Exceptions are sections of parallel music @code{<< @{...@} \\ @{...@} >>}, +which will be quoted. +" +} + +% Simple case, normal sub-voice +quoteMe = \relative c' { + c4 c + \new Voice { + c4 c + } +} +\addQuote "quoteMe" \quoteMe +% Also works if wrapped with \new Voice +\addQuote "quoteMeA" \new Voice \quoteMe + +% Also works with voice directly inside relative +quoteMeI = \relative c' \new Voice { + c4 c4 +} +\addQuote "quoteMeI" \quoteMeI + +% Quoting music with some parallel sections (identical rhythm) +quoteMeII = \relative c' { + c4 c + << { d4 e4 } \\ { c4 b4 } >> + c4 +} +\addQuote "quoteMeII" \quoteMeII + +% Quoting music with some parallel sections (different rhythm) +quoteMeIII = \relative c' { + c4 c + << { d4 e4 } \\ { c4. b8 } >> + c4 +} +\addQuote "quoteMeIII" \quoteMeIII + + + + +<< + \new Staff \relative c'' { + c4 \cueDuring #"quoteMe" #DOWN { r4 } + c4 \cueDuring #"quoteMe" #DOWN { r4 } % <- no cue note due to sub-voice + } + \new Staff \relative c'' { + c4 \cueDuring #"quoteMeA" #DOWN { r4 } + c4 \cueDuring #"quoteMeA" #DOWN { r4 } % <- no cue note due to sub-voice + } + \new Staff \relative c'' { + c4 \cueDuring #"quoteMeI" #DOWN { r4 } + c4 + } + \new Staff \relative c'' { + c4 \cueDuring #"quoteMeII" #DOWN { r4 } + c4 \cueDuring #"quoteMeII" #DOWN { r4 } % <- quoted parallel notes + } + \new Staff \relative c'' { + c4 \cueDuring #"quoteMeIII" #DOWN { r4 } + c4 \cueDuring #"quoteMeIII" #DOWN { r4 } % <- quoted parallel notes + } +>> diff --git a/input/regression/quote-during.ly b/input/regression/quote-during.ly index 3abc0eb633..1f25719d09 100644 --- a/input/regression/quote-during.ly +++ b/input/regression/quote-during.ly @@ -8,7 +8,7 @@ quoted. In this example, a 16th rest is not quoted, since @code{rest-event} is not in @code{quotedEventTypes}." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } @@ -32,9 +32,9 @@ original = \relative c'' { c8 d s2 es8 gis8 } \set Staff.instrumentName = "orig+quote" \set Staff.quotedEventTypes = #'(note-event articulation-event) - \new Voice { + \new Voice {\voiceOne \override Voice . Beam #'collision-voice-only = ##t \original } - { s4 \quoteDuring #"quoteMe" { s2. } } + \new Voice {\voiceTwo s4 \quoteDuring #"quoteMe" { s2. } } >> >> diff --git a/input/regression/quote-grace.ly b/input/regression/quote-grace.ly index 9de4422ed9..74dc4b0700 100644 --- a/input/regression/quote-grace.ly +++ b/input/regression/quote-grace.ly @@ -7,7 +7,7 @@ } \paper { ragged-right= ##t } -\version "2.14.0" +\version "2.16.0" quoted = \relative c'' { R1 \grace g16 f4 \grace a16 bes4 \grace b16 c4 c4 diff --git a/input/regression/quote-kill-cues.ly b/input/regression/quote-kill-cues.ly index 2fe2735e2b..4678fe8bda 100644 --- a/input/regression/quote-kill-cues.ly +++ b/input/regression/quote-kill-cues.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "@code{\\killCues} shall only remove real cue notes generated by diff --git a/input/regression/quote-overrides.ly b/input/regression/quote-overrides.ly index 043864ed30..3c72a3fbb1 100644 --- a/input/regression/quote-overrides.ly +++ b/input/regression/quote-overrides.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The @code{\\quoteDuring} command shall also quote correctly all @@ -12,7 +12,7 @@ } mus = \relative c' { - % Acciaccaturas contain a slur and \override Stem #'stroke-style + % Acciaccaturas contain a slur and \override Flag #'stroke-style % Thus, we're checking \override here c4 \acciaccatura d8 c4 % Checking \set and \unset @@ -23,12 +23,12 @@ mus = \relative c' { % Checking \once \override \once \override Stem #'thickness = #8.0 d8 % Checking two overrides - \override Stem #'thickness = #8.0 \override Stem #'stroke-style = "grace" + \override Stem #'thickness = #8.0 \override Flag #'stroke-style = "grace" d8 % reverting one of them \revert Stem #'thickness d8 % and the other - \revert Stem #'stroke-style c8 + \revert Flag #'stroke-style c8 % checking tweaks c2-\tweak #'color #red -> diff --git a/input/regression/quote-tie.ly b/input/regression/quote-tie.ly index 05f9b43a3c..e003ffbdce 100644 --- a/input/regression/quote-tie.ly +++ b/input/regression/quote-tie.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Voices from different cues must not be tied together. In diff --git a/input/regression/quote-transposition.ly b/input/regression/quote-transposition.ly index a55145732a..438cdb822c 100644 --- a/input/regression/quote-transposition.ly +++ b/input/regression/quote-transposition.ly @@ -10,7 +10,7 @@ quoted ones) will transposed as well. " } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/quote-tuplet-end.ly b/input/regression/quote-tuplet-end.ly index aaa1769181..55798ba5a2 100644 --- a/input/regression/quote-tuplet-end.ly +++ b/input/regression/quote-tuplet-end.ly @@ -3,7 +3,7 @@ texidoc ="Tuplet bracket ends properly when quoting." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/quote-tuplet.ly b/input/regression/quote-tuplet.ly index e260d12663..943bc453eb 100644 --- a/input/regression/quote-tuplet.ly +++ b/input/regression/quote-tuplet.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/quote.ly b/input/regression/quote.ly index 97e158ed90..ffa937775b 100644 --- a/input/regression/quote.ly +++ b/input/regression/quote.ly @@ -7,7 +7,7 @@ things are quoted. In this example, a 16th rest is not quoted, since @code{rest-event} is not in @code{quotedEventTypes}." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } @@ -30,10 +30,9 @@ original = \relative c'' { c8 d s2 es8 gis8 } \new Staff \relative c'' << \set Staff.instrumentName = "orig+quote" \set Staff.quotedEventTypes = #'(note-event articulation-event) - \new Voice { - \override Voice . Beam #'collision-voice-only = ##t + \new Voice {\voiceOne \original } - \new Voice { + \new Voice {\voiceTwo s4 \set fontSize = #-4 \override Stem #'length-fraction = #(magstep -4) diff --git a/input/regression/ragged-bottom-one-page.ly b/input/regression/ragged-bottom-one-page.ly index 57be855074..805b844b0c 100644 --- a/input/regression/ragged-bottom-one-page.ly +++ b/input/regression/ragged-bottom-one-page.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "For a one-page score, ragged-bottom should have the diff --git a/input/regression/ragged-right-compressed.ly b/input/regression/ragged-right-compressed.ly index 06f5d2d65b..e217726ccc 100644 --- a/input/regression/ragged-right-compressed.ly +++ b/input/regression/ragged-right-compressed.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When a score takes up only a single line and it is compressed, it is not printed as ragged." } -{ \repeat unfold 9 {a b c d} } \ No newline at end of file +{ \repeat unfold 9 {a b c d} } diff --git a/input/regression/ragged-right-disabled.ly b/input/regression/ragged-right-disabled.ly index 606c1c41f1..f5521be9b9 100644 --- a/input/regression/ragged-right-disabled.ly +++ b/input/regression/ragged-right-disabled.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When ragged-right is specifically disabled, a score with only one @@ -9,4 +9,4 @@ line will not be printed as ragged." ragged-right = ##f } -{ a b c d } \ No newline at end of file +{ a b c d } diff --git a/input/regression/ragged-right-one-line.ly b/input/regression/ragged-right-one-line.ly index 6779e8dd6c..a0451aae54 100644 --- a/input/regression/ragged-right-one-line.ly +++ b/input/regression/ragged-right-one-line.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When a score takes up only a single line and it is stretched, it is printed as ragged by default." } -{ a b c d } \ No newline at end of file +{ a b c d } diff --git a/input/regression/rehearsal-mark-align-priority.ly b/input/regression/rehearsal-mark-align-priority.ly index 5f57600fef..ed1bb1fb92 100644 --- a/input/regression/rehearsal-mark-align-priority.ly +++ b/input/regression/rehearsal-mark-align-priority.ly @@ -4,7 +4,7 @@ the alignment depends on which symbols are visible." } -\version "2.14.0" +\version "2.16.0" \relative c' { \override Score.RehearsalMark #'break-align-symbols = #'(clef key-signature staff-bar) diff --git a/input/regression/rehearsal-mark-align-staff-context.ly b/input/regression/rehearsal-mark-align-staff-context.ly index 24bad30200..8350db59c6 100644 --- a/input/regression/rehearsal-mark-align-staff-context.ly +++ b/input/regression/rehearsal-mark-align-staff-context.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "RehearsalMarks still align correctly if Mark_engraver is moved to diff --git a/input/regression/rehearsal-mark-align.ly b/input/regression/rehearsal-mark-align.ly index b23dec1427..e2ba0068fc 100644 --- a/input/regression/rehearsal-mark-align.ly +++ b/input/regression/rehearsal-mark-align.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" \relative c' { c1 \mark "foo" diff --git a/input/regression/rehearsal-mark-direction.ly b/input/regression/rehearsal-mark-direction.ly index f748a53d99..3e9d577497 100644 --- a/input/regression/rehearsal-mark-direction.ly +++ b/input/regression/rehearsal-mark-direction.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Rehearsal marks with direction DOWN get placed at diff --git a/input/regression/rehearsal-mark-final-score.ly b/input/regression/rehearsal-mark-final-score.ly index 777b409d77..ee0b3ed2d7 100644 --- a/input/regression/rehearsal-mark-final-score.ly +++ b/input/regression/rehearsal-mark-final-score.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Rehearsal marks at the end of the last measure of a diff --git a/input/regression/rehearsal-mark-letter.ly b/input/regression/rehearsal-mark-letter.ly index 0c697999f9..979f43e478 100644 --- a/input/regression/rehearsal-mark-letter.ly +++ b/input/regression/rehearsal-mark-letter.ly @@ -8,7 +8,7 @@ after Z, double letters are used. The mark may be set with } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \relative c'' { diff --git a/input/regression/rehearsal-mark-number.ly b/input/regression/rehearsal-mark-number.ly index feee5d096f..c232ceb158 100644 --- a/input/regression/rehearsal-mark-number.ly +++ b/input/regression/rehearsal-mark-number.ly @@ -5,7 +5,7 @@ By setting @code{markFormatter} we may choose a different style of mark printing } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/relative-repeat.ly b/input/regression/relative-repeat.ly index a8d3ac1ee7..b3ff68fded 100644 --- a/input/regression/relative-repeat.ly +++ b/input/regression/relative-repeat.ly @@ -1,7 +1,7 @@ \header { texidoc = "Relative mode for repeats uses order of entry." } -\version "2.14.0" +\version "2.16.0" \relative c' { \repeat "unfold" 3 diff --git a/input/regression/remove-empty-context-mod.ly b/input/regression/remove-empty-context-mod.ly new file mode 100644 index 0000000000..9a503b53c6 --- /dev/null +++ b/input/regression/remove-empty-context-mod.ly @@ -0,0 +1,15 @@ +\version "2.16.0" + +\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 +} diff --git a/input/regression/remove-empty-staves-auto-knee.ly b/input/regression/remove-empty-staves-auto-knee.ly index 2b01d27434..39abb34ffc 100644 --- a/input/regression/remove-empty-staves-auto-knee.ly +++ b/input/regression/remove-empty-staves-auto-knee.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/remove-empty-staves-with-rests.ly b/input/regression/remove-empty-staves-with-rests.ly index 1f0aff8602..651147fa2a 100644 --- a/input/regression/remove-empty-staves-with-rests.ly +++ b/input/regression/remove-empty-staves-with-rests.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/repeat-line-break.ly b/input/regression/repeat-line-break.ly index 7fd5d4aaa2..003f287771 100644 --- a/input/regression/repeat-line-break.ly +++ b/input/regression/repeat-line-break.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/repeat-percent-count-visibility.ly b/input/regression/repeat-percent-count-visibility.ly index 5a8669c8da..e4d986d6a3 100644 --- a/input/regression/repeat-percent-count-visibility.ly +++ b/input/regression/repeat-percent-count-visibility.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " Percent repeat counters can be shown at regular diff --git a/input/regression/repeat-percent-count.ly b/input/regression/repeat-percent-count.ly index 1118381850..4c6099ae5a 100644 --- a/input/regression/repeat-percent-count.ly +++ b/input/regression/repeat-percent-count.ly @@ -9,7 +9,7 @@ only if there are more than two repeats." } -\version "2.14.0" +\version "2.16.0" \relative c'' \new Voice { \set countPercentRepeats = ##t diff --git a/input/regression/repeat-percent-grace.ly b/input/regression/repeat-percent-grace.ly index 6273ed1b41..8fd1ea0e52 100644 --- a/input/regression/repeat-percent-grace.ly +++ b/input/regression/repeat-percent-grace.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Percent repeats are also centered when there is a grace note in a parallel staff. " diff --git a/input/regression/repeat-percent-kerning.ly b/input/regression/repeat-percent-kerning.ly index c7278ac3ee..d9aafb8596 100644 --- a/input/regression/repeat-percent-kerning.ly +++ b/input/regression/repeat-percent-kerning.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The positioning of dots and slashes in percent repeat glyphs can be altered using @code{dot-negative-kern} and diff --git a/input/regression/repeat-percent-skipbars.ly b/input/regression/repeat-percent-skipbars.ly index 80c7fb506b..b63a866821 100644 --- a/input/regression/repeat-percent-skipbars.ly +++ b/input/regression/repeat-percent-skipbars.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/repeat-percent.ly b/input/regression/repeat-percent.ly index 853344df15..0146d36c45 100644 --- a/input/regression/repeat-percent.ly +++ b/input/regression/repeat-percent.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Measure repeats may be nested with beat repeats." } diff --git a/input/regression/repeat-sign-global-size-10.ly b/input/regression/repeat-sign-global-size-10.ly new file mode 100644 index 0000000000..05c1225f37 --- /dev/null +++ b/input/regression/repeat-sign-global-size-10.ly @@ -0,0 +1,43 @@ +\version "2.16.0" +\header { + texidoc = "The two dots of a repeat sign should be symmetric +to the staff centre and avoid staff lines even for exotic staves. +Test set-global-staff size 10 (with layout-set-staff-size)." +} + +#(set-global-staff-size 10) + +\score { + << + \context Staff = "s1" \with { + \override StaffSymbol #'line-positions = #'(-4 -2 0 2) + } { + s1 \bar ":|" + } + + \context Staff = "s2" \with { + \override StaffSymbol #'staff-space = #0.75 + } { + s1 \bar ":|" + } + >> +} + +\score { + << + \context Staff = "s1" { + s1 \bar ":|" + } + + \context Staff = "s2" \with { + \override StaffSymbol #'staff-space = #2 + \override StaffSymbol #'line-count = #4 + } { + s1 \bar ":|" + } + >> + + \layout { + #(layout-set-staff-size 30) + } +} diff --git a/input/regression/repeat-sign-global-size-30.ly b/input/regression/repeat-sign-global-size-30.ly new file mode 100644 index 0000000000..80717ad5b6 --- /dev/null +++ b/input/regression/repeat-sign-global-size-30.ly @@ -0,0 +1,46 @@ +\version "2.16.0" +\header { + texidoc = "The two dots of a repeat sign should be symmetric +to the staff centre and avoid staff lines even for exotic staves. +Test set-global-staff size 30 (with layout-set-staff-size)." +} + +#(set-global-staff-size 30) + +\score { + << + \context Staff = "s1" \with { + \override StaffSymbol #'staff-space = #0.65 + } { + s1 \bar ":|" + } + + \context Staff = "s2" \with { + \override StaffSymbol #'staff-space = #0.7 + \override StaffSymbol #'line-positions = #'(-4 -2 0 2) + } { + s1 \bar ":|" + } + >> +} + +\score { + << + \context Staff = "s1" \with { + \override StaffSymbol #'staff-space = #0.25 + } { + s1 \bar ":|" + } + + \context Staff = "s2" \with { + \override StaffSymbol #'staff-space = #0.3 + \override StaffSymbol #'line-count = #4 + } { + s1 \bar ":|" + } + >> + + \layout { + #(layout-set-staff-size 10) + } +} diff --git a/input/regression/repeat-sign-layout-size.ly b/input/regression/repeat-sign-layout-size.ly new file mode 100644 index 0000000000..4f84c20a08 --- /dev/null +++ b/input/regression/repeat-sign-layout-size.ly @@ -0,0 +1,43 @@ +\version "2.16.0" +\header { + texidoc = "The two dots of a repeat sign should be symmetric +to the staff centre and avoid staff lines even for exotic staves. +Test layout-set-staff-size." +} + +\score { + << + \context Staff = "s1" \with { + \override StaffSymbol #'staff-space = #0.4 + } { + s1 \bar ":|" + } + + \context Staff = "s2" \with { + \override StaffSymbol #'staff-space = #0.5 + } { + s1 \bar ":|" + } + >> + + \layout { + #(layout-set-staff-size 10) + } +} + +\score +{ + << + \context Staff = "s1" \with { + \override StaffSymbol #'staff-space = #0.7 + } { + s1 \bar ":|" + } + + \context Staff = "s2" \with { + \override StaffSymbol #'staff-space = #0.75 + } { + s1 \bar ":|" + } + >> +} diff --git a/input/regression/repeat-sign.ly b/input/regression/repeat-sign.ly new file mode 100644 index 0000000000..01775e2922 --- /dev/null +++ b/input/regression/repeat-sign.ly @@ -0,0 +1,139 @@ +\version "2.16.0" +\header { + texidoc = "The two dots of a repeat sign should be symmetric +to the staff centre and avoid staff lines even for exotic staves." +} + + +mus = \context Voice { \relative f' { d e f g \bar ":|" } } + +\new Staff { + << + \mus + \context Voice { s1^"standard staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-6 -4 -2 0 2) +} { + << + \clef french + \mus + \context Voice { s1^"excentric staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-count = #4 +} { + << + \mus + \context Voice { s1^"standard four-line staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-2 0 2 4) +} { + << + \mus + \context Voice { s1^"excentric four-line staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-7 -4) +} { + << + \clef french + \mus + \context Voice { s1^"very excentric staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol #'line-positions = #'(-2 0) +} { + << + \mus + \context Voice { s1^"as wide as previous" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-2.9 -2) +} { + << + \mus + \context Voice { s1^"narrow staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-4 -3 -2) +} { + << + \mus + \context Voice { s1^"dense staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-4 -3 -2) + \override StaffSymbol #'staff-space = #0.8 +} { + << + \mus + \context Voice { s1^"denser staff" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-6 -2 0 5) +} { + << + \mus + \context Voice { s1^"irregular staff, standard spacing" } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-4 -2 -1) + \override StaffSymbol #'staff-space = #1.5 +} { + << + \mus + \context Voice { s1^"irregular staff, nonstandard spacing" } + >> +} + +\new Staff \with { + \override StaffSymbol #'thickness = #4 +} { + << + \clef french + \mus + \context Voice { + s1^"thick-lined staff" + } + >> +} + +\new Staff \with { + \override StaffSymbol #'line-positions = #'(-2) +} { + << + \mus + \context Voice { s1^"single line staff (zero height)" } + >> +} + +\new Staff { + \stopStaff + << + \mus + \context Voice { s1^"no staff" } + >> +} diff --git a/input/regression/repeat-slash-mixed.ly b/input/regression/repeat-slash-mixed.ly index f378dc2a4c..0daf8a185e 100644 --- a/input/regression/repeat-slash-mixed.ly +++ b/input/regression/repeat-slash-mixed.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beat repeats for patterns containing mixed durations use diff --git a/input/regression/repeat-slash-multi.ly b/input/regression/repeat-slash-multi.ly index 00d2da87c0..eb77b49ac6 100644 --- a/input/regression/repeat-slash-multi.ly +++ b/input/regression/repeat-slash-multi.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Beat repeats for patterns containing identical durations diff --git a/input/regression/repeat-slash.ly b/input/regression/repeat-slash.ly index 226e307f61..3e7924b152 100644 --- a/input/regression/repeat-slash.ly +++ b/input/regression/repeat-slash.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Within a bar, beat repeats denote that a music snippet should be played again." diff --git a/input/regression/repeat-tie.ly b/input/regression/repeat-tie.ly index 38ccf7d476..ae6e4bc46a 100644 --- a/input/regression/repeat-tie.ly +++ b/input/regression/repeat-tie.ly @@ -5,7 +5,7 @@ note head." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/repeat-tremolo-beams.ly b/input/regression/repeat-tremolo-beams.ly index ed683f30c9..738cbe24cb 100644 --- a/input/regression/repeat-tremolo-beams.ly +++ b/input/regression/repeat-tremolo-beams.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Each of the staves here should have four tremolo beams." @@ -10,4 +10,4 @@ \repeat tremolo 12 { c64 e64 } \repeat tremolo 14 { c64 e64 } \repeat tremolo 15 { c64 e64 } ->> \ No newline at end of file +>> diff --git a/input/regression/repeat-tremolo-chord-rep.ly b/input/regression/repeat-tremolo-chord-rep.ly index 0bf4dd13f7..be148bf4dd 100644 --- a/input/regression/repeat-tremolo-chord-rep.ly +++ b/input/regression/repeat-tremolo-chord-rep.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Tremolos work with chord repetitions." diff --git a/input/regression/repeat-tremolo-dots.ly b/input/regression/repeat-tremolo-dots.ly index e5ab74c216..ccf16e612d 100644 --- a/input/regression/repeat-tremolo-dots.ly +++ b/input/regression/repeat-tremolo-dots.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Dots are added to tremolo notes if the durations involved require them." @@ -8,4 +8,4 @@ \score { \relative c' { c8 \repeat "tremolo" 14 { c32 a32 } | } -} \ No newline at end of file +} diff --git a/input/regression/repeat-tremolo-one-note-articulation.ly b/input/regression/repeat-tremolo-one-note-articulation.ly index 5d729c9497..cdd03934c7 100644 --- a/input/regression/repeat-tremolo-one-note-articulation.ly +++ b/input/regression/repeat-tremolo-one-note-articulation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A tremolo repeat containing only one note (no sequential music) diff --git a/input/regression/repeat-tremolo-three-notes.ly b/input/regression/repeat-tremolo-three-notes.ly index fcf86ba9d1..44285f6c9e 100644 --- a/input/regression/repeat-tremolo-three-notes.ly +++ b/input/regression/repeat-tremolo-three-notes.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A tremolo can have more than two notes. Also check that diff --git a/input/regression/repeat-unfold-all.ly b/input/regression/repeat-unfold-all.ly index eae3684bf9..dc8a79c279 100644 --- a/input/regression/repeat-unfold-all.ly +++ b/input/regression/repeat-unfold-all.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Volta repeats may be unfolded through the music function @code{\\unfoldRepeats}." diff --git a/input/regression/repeat-unfold-tremolo.ly b/input/regression/repeat-unfold-tremolo.ly index 36b51f789d..35866ca7ac 100644 --- a/input/regression/repeat-unfold-tremolo.ly +++ b/input/regression/repeat-unfold-tremolo.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Unfolding tremolo repeats. All fragments fill one diff --git a/input/regression/repeat-unfold.ly b/input/regression/repeat-unfold.ly index c48bb909cb..5002991829 100644 --- a/input/regression/repeat-unfold.ly +++ b/input/regression/repeat-unfold.ly @@ -1,4 +1,7 @@ -\version "2.14.0" +\version "2.16.0" + +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "More alternatives than repeats. Junking excess alternatives")) \header{ texidoc="LilyPond has two modes for repeats: unfolded and semi-unfolded. diff --git a/input/regression/repeat-volta-skip-alternatives.ly b/input/regression/repeat-volta-skip-alternatives.ly index ef5298c27a..6f4e422002 100644 --- a/input/regression/repeat-volta-skip-alternatives.ly +++ b/input/regression/repeat-volta-skip-alternatives.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When too few alternatives are present, the first diff --git a/input/regression/repeat-volta.ly b/input/regression/repeat-volta.ly index 2614b237e8..9d6011d64b 100644 --- a/input/regression/repeat-volta.ly +++ b/input/regression/repeat-volta.ly @@ -1,4 +1,6 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "More alternatives than repeats. Junking excess alternatives")) \header{ texidoc=" diff --git a/input/regression/rest-collision-beam-note.ly b/input/regression/rest-collision-beam-note.ly index 433510d78c..d2be3073b3 100644 --- a/input/regression/rest-collision-beam-note.ly +++ b/input/regression/rest-collision-beam-note.ly @@ -1,12 +1,12 @@ \header { - texidoc = "Beam/rest collision resolution and normal rest/note + texidoc = "Beam/rest collision resolution and normal rest/@/note collisions can be combined." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right=##t } diff --git a/input/regression/rest-collision-beam-quantized.ly b/input/regression/rest-collision-beam-quantized.ly index 3cdf960408..a73fb5bded 100644 --- a/input/regression/rest-collision-beam-quantized.ly +++ b/input/regression/rest-collision-beam-quantized.ly @@ -6,7 +6,7 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" fig = \relative c' { 8[ diff --git a/input/regression/rest-collision-beam-restdir.ly b/input/regression/rest-collision-beam-restdir.ly index 918b2366b2..16e19464a1 100644 --- a/input/regression/rest-collision-beam-restdir.ly +++ b/input/regression/rest-collision-beam-restdir.ly @@ -3,7 +3,7 @@ account properly." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/rest-collision-beam.ly b/input/regression/rest-collision-beam.ly index 1e5dd64a47..2dd30d5563 100644 --- a/input/regression/rest-collision-beam.ly +++ b/input/regression/rest-collision-beam.ly @@ -4,7 +4,7 @@ collision." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/rest-collision-note-duration.ly b/input/regression/rest-collision-note-duration.ly index 9d47dc667e..701b55e785 100644 --- a/input/regression/rest-collision-note-duration.ly +++ b/input/regression/rest-collision-note-duration.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Vertical rest positions in a multi-voice staff should obey the duration of diff --git a/input/regression/rest-collision.ly b/input/regression/rest-collision.ly index 884c059dc0..0383cccad2 100644 --- a/input/regression/rest-collision.ly +++ b/input/regression/rest-collision.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Rests should not collide with beams, stems and noteheads. Rests may diff --git a/input/regression/rest-dot-position.ly b/input/regression/rest-dot-position.ly index ffd1f69832..2aef41e8e3 100644 --- a/input/regression/rest-dot-position.ly +++ b/input/regression/rest-dot-position.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/rest-ledger.ly b/input/regression/rest-ledger.ly index 8c87844510..94eb2bdaac 100644 --- a/input/regression/rest-ledger.ly +++ b/input/regression/rest-ledger.ly @@ -1,30 +1,41 @@ -\version "2.14.0" +\version "2.16.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 } diff --git a/input/regression/rest-note-collision.ly b/input/regression/rest-note-collision.ly index bfdf061f79..2a448aa75b 100644 --- a/input/regression/rest-note-collision.ly +++ b/input/regression/rest-note-collision.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" \new Staff { << diff --git a/input/regression/rest-on-nonstandard-staff.ly b/input/regression/rest-on-nonstandard-staff.ly new file mode 100644 index 0000000000..8f43fb5b17 --- /dev/null +++ b/input/regression/rest-on-nonstandard-staff.ly @@ -0,0 +1,63 @@ +\version "2.16.0" + +\header { + texidoc = "half rests should lie on a staff line, whole rests should hang + from a staff line by default even for non-standard staves, except when + the position is set by pitch." +} + + +\layout { + ragged-right = ##t + indent = 0.0 +} + +mus = { + r2 + b\rest + c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest + c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest + r1 + b\rest + c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest + c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest + r\breve + b\rest + c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest + c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest + r\longa + b\rest + c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest + c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest + << + { r2 r2 r1 r\breve r\longa } + \\ + { r2 r2 r1 r\breve r\longa } + >> +} + +\new StaffGroup << + \new Staff { + \mus + } + + \new Staff { + \override Staff.StaffSymbol #'line-positions = #'(-4 -2 0 2) + \mus + } + + \new Staff { + \override Staff.StaffSymbol #'line-count = #4 + \mus + } + + \new Staff { + \override Staff.StaffSymbol #'line-positions = #'(-4 -2 1 5) + \mus + } + + \new Staff { + \stopStaff + \mus + } +>> diff --git a/input/regression/rest-pitch.ly b/input/regression/rest-pitch.ly index 93a9531558..c5ce21c008 100644 --- a/input/regression/rest-pitch.ly +++ b/input/regression/rest-pitch.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Rests can have pitches--these will be affected by -transposition and relativization. If a rest has a pitch, rest/rest and -beam/rest collision resolving will leave it alone." + texidoc = "Rests can have pitches -- these will be affected by +transposition and relativization. If a rest has a pitch, rest/@/rest and +beam/@/rest collision resolving will leave it alone." } diff --git a/input/regression/rest-pitched-beam.ly b/input/regression/rest-pitched-beam.ly index 4ce2fe3fff..df29b67476 100644 --- a/input/regression/rest-pitched-beam.ly +++ b/input/regression/rest-pitched-beam.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" \relative c'{ a\rest a8[ a\rest b] diff --git a/input/regression/rest-polyphonic-2.ly b/input/regression/rest-polyphonic-2.ly index 90229e14d2..67bb07ab11 100644 --- a/input/regression/rest-polyphonic-2.ly +++ b/input/regression/rest-polyphonic-2.ly @@ -3,16 +3,16 @@ texidoc = "Rests avoid notes. Each rest is moved in the direction of the stems in its voice. Rests may overlap other rests in voices with the same stem direction, in which case a warning is given, but -is supressed if the rest has a pitch." +is suppressed if the rest has a pitch." } -\version "2.14.2" +\version "2.16.0" \new Staff << \relative c''' { g8 g g r r2 } \\ \relative c' { a4\rest c r2 } \\ - \relative c'' { c4 c r2 } \\ + \relative c'' { c4 c f2\rest } \\ \relative c'' { r2 g } >> diff --git a/input/regression/rest-polyphonic.ly b/input/regression/rest-polyphonic.ly index 2a210d0d85..a1e762923b 100644 --- a/input/regression/rest-polyphonic.ly +++ b/input/regression/rest-polyphonic.ly @@ -1,20 +1,20 @@ \header { - texidoc = "In polyphonic situations, rests are moved down -even if there is no opposite note or rest. The amount is two -@code{staff-space}s. " + texidoc = "In polyphonic situations, rests are moved according +to their @code{direction} even if there is no opposite note or rest. +The amount is two @code{staff-space}s. " } \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \new Staff \relative c' { - << { r8 g''4 g8 r g4 g8 } \\ - { d,4 r d r } >> + << { r8 g''4 g8 r g4 g8 } \\ + { d,4 r \stemUp b r } >> } diff --git a/input/regression/rest.ly b/input/regression/rest.ly index 81e47ea824..ea2b4a3f61 100644 --- a/input/regression/rest.ly +++ b/input/regression/rest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/rhythmic-staff.ly b/input/regression/rhythmic-staff.ly index 8fd73df219..d60d420e4c 100644 --- a/input/regression/rhythmic-staff.ly +++ b/input/regression/rhythmic-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/safe.ly b/input/regression/safe.ly index b57f16fda9..33fdfe584c 100644 --- a/input/regression/safe.ly +++ b/input/regression/safe.ly @@ -1,12 +1,12 @@ -\version "2.14.0" +\version "2.16.0" -"expect-error" = ##t +expect-error = ##t % Ugh - this affects other files too. #(ly:set-option 'protected-scheme-parsing #t) #(ly:set-option 'safe #t) -"force-finish" = ##t +force-finish = ##t \header{ texidoc = "This should not survive lilypond --safe-mode" @@ -18,4 +18,3 @@ #(open-file "/tmp/safe-guile.scm") \include "this-should-fail.ly" - diff --git a/input/regression/scheme-book-scores.ly b/input/regression/scheme-book-scores.ly index 5c78b21dd3..678844e2a8 100644 --- a/input/regression/scheme-book-scores.ly +++ b/input/regression/scheme-book-scores.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/scheme-engraver-instance.ly b/input/regression/scheme-engraver-instance.ly index 4136171a10..717549b838 100644 --- a/input/regression/scheme-engraver-instance.ly +++ b/input/regression/scheme-engraver-instance.ly @@ -8,7 +8,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { \context { @@ -19,18 +19,18 @@ (set! instance-counter (1+ instance-counter)) (let ((instance-id instance-counter) (private-note-counter 0)) - `((listeners - (note-event - . ,(lambda (engraver event) - (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 - private-note-counter)))))))))) + (make-engraver + (listeners + ((note-event engraver event) + (set! private-note-counter (1+ private-note-counter)) + (let ((text (ly:engraver-make-grob engraver 'TextScript event))) + (ly:grob-set-property! text 'text + (format #f "~a.~a" instance-id + private-note-counter))))))))) } } << \relative c'' { c4 d e f } \\ \relative c' { c4 d e f } ->> \ No newline at end of file +>> diff --git a/input/regression/scheme-engraver.ly b/input/regression/scheme-engraver.ly index d5fefc6507..26d703613c 100644 --- a/input/regression/scheme-engraver.ly +++ b/input/regression/scheme-engraver.ly @@ -5,68 +5,49 @@ } -\version "2.14.0" +\version "2.16.0" \layout { \context { \Voice \consists - #(list - (cons 'initialize - (lambda (trans) - (display (list "initialize" - (ly:context-current-moment - (ly:translator-context trans)) "\n")))) - (cons 'start-translation-timestep - (lambda (trans) - (display (list "start-trans" - (ly:context-current-moment - (ly:translator-context trans)) "\n")))) - (cons 'listeners - (list - (cons 'rest-event (lambda (engraver event) - (let* - ((x (ly:engraver-make-grob engraver 'TextScript event))) - (display (list "caught event" event "\ncreate:\n" x "\n")) - (ly:grob-set-property! x 'text "hi")) - )) - )) - (cons 'acknowledgers - (list - (cons 'note-head-interface - (lambda (engraver grob source-engraver) - (display (list "saw head: " grob " coming from " source-engraver)) - )) - )) - (cons 'end-acknowledgers - (list - (cons 'beam-interface - (lambda (engraver grob source-engraver) - (display (list "saw end of beam: " grob " coming from " source-engraver)) - )) - )) - (cons 'process-music - (lambda (trans) - (display (list "process-music" - (ly:context-current-moment - (ly:translator-context trans)) "\n")))) - (cons 'process-acknowledged - (lambda (trans) - (display (list "process-acknowledged" - (ly:context-current-moment - (ly:translator-context trans)) "\n")))) - (cons 'stop-translation-timestep - (lambda (trans) - (display (list "stop-trans" - (ly:context-current-moment - (ly:translator-context trans)) "\n")))) - (cons 'finalize - (lambda (trans) - (display (list "finalize" - (ly:context-current-moment - (ly:translator-context trans)) "\n")))) - ) - + #(make-engraver + ((initialize trans) + (display (list "initialize" + (ly:context-current-moment + (ly:translator-context trans)) "\n") (current-error-port))) + ((start-translation-timestep trans) + (display (list "start-trans" + (ly:context-current-moment + (ly:translator-context trans)) "\n") (current-error-port))) + (listeners + ((rest-event engraver event) + (let* + ((x (ly:engraver-make-grob engraver 'TextScript event))) + (display (list "caught event" event "\ncreate:\n" x "\n") (current-error-port)) + (ly:grob-set-property! x 'text "hi")))) + (acknowledgers + ((note-head-interface engraver grob source-engraver) + (display (list "saw head: " grob " coming from " source-engraver) (current-error-port)))) + (end-acknowledgers + ((beam-interface engraver grob source-engraver) + (display (list "saw end of beam: " grob " coming from " source-engraver) (current-error-port)))) + ((process-music trans) + (display (list "process-music" + (ly:context-current-moment + (ly:translator-context trans)) "\n") (current-error-port))) + ((process-acknowledged trans) + (display (list "process-acknowledged" + (ly:context-current-moment + (ly:translator-context trans)) "\n") (current-error-port))) + ((stop-translation-timestep trans) + (display (list "stop-trans" + (ly:context-current-moment + (ly:translator-context trans)) "\n") (current-error-port))) + ((finalize trans) + (display (list "finalize" + (ly:context-current-moment + (ly:translator-context trans)) "\n") (current-error-port)))) }} diff --git a/input/regression/scheme-text-spanner.ly b/input/regression/scheme-text-spanner.ly index 6541f05a34..a83bec87aa 100644 --- a/input/regression/scheme-text-spanner.ly +++ b/input/regression/scheme-text-spanner.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Use @code{define-event-class}, scheme engraver methods, @@ -6,11 +6,27 @@ and grob creation methods to create a fully functional text spanner in scheme." } -#(define-event-class 'scheme-text-span-event - '(scheme-text-span-event - span-event - music-event - StreamEvent)) +#(define my-grob-descriptions '()) + +#(define my-event-classes (ly:make-context-mod)) + +defineEventClass = +#(define-void-function (parser location class parent) + (symbol? symbol?) + (ly:add-context-mod + my-event-classes + `(apply + ,(lambda (context class parent) + (ly:context-set-property! + context + 'EventClasses + (event-class-cons + class + parent + (ly:context-property context 'EventClasses '())))) + ,class ,parent))) + +\defineEventClass #'scheme-text-span-event #'span-event #(define (add-grob-definition grob-name grob-entry) (let* ((meta-entry (assoc-get 'meta grob-entry)) @@ -33,9 +49,9 @@ in scheme." (set! meta-entry (assoc-set! meta-entry 'interfaces ifaces-entry)) (set! grob-entry (assoc-set! grob-entry 'meta meta-entry)) - (set! all-grob-descriptions + (set! my-grob-descriptions (cons (cons grob-name grob-entry) - all-grob-descriptions)))) + my-grob-descriptions)))) #(add-grob-definition 'SchemeTextSpanner @@ -119,64 +135,58 @@ schemeTextSpannerEngraver = (finished '()) (current-event '()) (event-drul '(() . ()))) - (list (cons 'listeners - (list (cons 'scheme-text-span-event - (lambda (engraver event) - (if (= START (ly:event-property event 'span-direction)) - (set-car! event-drul event) - (set-cdr! event-drul event)))))) - (cons 'acknowledgers - (list (cons 'note-column-interface - (lambda (engraver grob source-engraver) - (if (ly:spanner? span) - (begin - (ly:pointer-group-interface::add-grob span 'note-columns grob) - (add-bound-item span grob))) - (if (ly:spanner? finished) - (begin - (ly:pointer-group-interface::add-grob finished 'note-columns grob) - (add-bound-item finished grob))))))) - (cons 'process-music - (lambda (trans) - (if (ly:stream-event? (cdr event-drul)) - (if (null? span) - (ly:warning "You're trying to end a scheme text spanner but you haven't started one.") - (begin (set! finished span) - (ly:engraver-announce-end-grob trans finished current-event) - (set! span '()) - (set! current-event '()) - (set-cdr! event-drul '())))) - (if (ly:stream-event? (car event-drul)) - (begin (set! current-event (car event-drul)) - (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner current-event)) - (set-axis! span Y) - (set-car! event-drul '()))))) - (cons 'stop-translation-timestep - (lambda (trans) - (if (and (ly:spanner? span) - (null? (ly:spanner-bound span LEFT))) - (set! (ly:spanner-bound span LEFT) - (ly:context-property context 'currentMusicalColumn))) - (if (ly:spanner? finished) - (begin - (if (null? (ly:spanner-bound finished RIGHT)) - (set! (ly:spanner-bound finished RIGHT) - (ly:context-property context 'currentMusicalColumn))) - (set! finished '()) - (set! event-drul '(() . ())))))) - (cons 'finalize - (lambda (trans) - (if (ly:spanner? finished) - (begin - (if (null? (ly:spanner-bound finished RIGHT)) - (set! (ly:spanner-bound finished RIGHT) - (ly:context-property context 'currentMusicalColumn))) - (set! finished '()))) - (if (ly:spanner? span) - (begin - (ly:warning "I think there's a dangling scheme text spanner :-(") - (ly:grob-suicide! span) - (set! span '())))))))) + (make-engraver + (listeners ((scheme-text-span-event engraver event) + (if (= START (ly:event-property event 'span-direction)) + (set-car! event-drul event) + (set-cdr! event-drul event)))) + (acknowledgers ((note-column-interface engraver grob source-engraver) + (if (ly:spanner? span) + (begin + (ly:pointer-group-interface::add-grob span 'note-columns grob) + (add-bound-item span grob))) + (if (ly:spanner? finished) + (begin + (ly:pointer-group-interface::add-grob finished 'note-columns grob) + (add-bound-item finished grob))))) + ((process-music trans) + (if (ly:stream-event? (cdr event-drul)) + (if (null? span) + (ly:warning "You're trying to end a scheme text spanner but you haven't started one.") + (begin (set! finished span) + (ly:engraver-announce-end-grob trans finished current-event) + (set! span '()) + (set! current-event '()) + (set-cdr! event-drul '())))) + (if (ly:stream-event? (car event-drul)) + (begin (set! current-event (car event-drul)) + (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner current-event)) + (set-axis! span Y) + (set-car! event-drul '())))) + ((stop-translation-timestep trans) + (if (and (ly:spanner? span) + (null? (ly:spanner-bound span LEFT))) + (set! (ly:spanner-bound span LEFT) + (ly:context-property context 'currentMusicalColumn))) + (if (ly:spanner? finished) + (begin + (if (null? (ly:spanner-bound finished RIGHT)) + (set! (ly:spanner-bound finished RIGHT) + (ly:context-property context 'currentMusicalColumn))) + (set! finished '()) + (set! event-drul '(() . ()))))) + ((finalize trans) + (if (ly:spanner? finished) + (begin + (if (null? (ly:spanner-bound finished RIGHT)) + (set! (ly:spanner-bound finished RIGHT) + (ly:context-property context 'currentMusicalColumn))) + (set! finished '()))) + (if (ly:spanner? span) + (begin + (ly:warning "I think there's a dangling scheme text spanner :-(") + (ly:grob-suicide! span) + (set! span '()))))))) schemeTextSpannerStart = #(make-span-event 'SchemeTextSpanEvent START) @@ -187,7 +197,8 @@ schemeTextSpannerEnd = \layout { \context { \Global - \grobdescriptions #all-grob-descriptions + \grobdescriptions #my-grob-descriptions + #my-event-classes } \context { \Voice diff --git a/input/regression/score-text.ly b/input/regression/score-text.ly index 15cfbd175d..05b8ec1769 100644 --- a/input/regression/score-text.ly +++ b/input/regression/score-text.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/script-accidental-collision.ly b/input/regression/script-accidental-collision.ly new file mode 100644 index 0000000000..e3815364a6 --- /dev/null +++ b/input/regression/script-accidental-collision.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header { + texidoc = "Scripts use skylines with accurate boxes to avoid accidentals. +" +} + +{ + ees''1^\espressivo + e''!1^\espressivo + eis''1^\espressivo + ees''1^\fermata + e''!1^\fermata + eis''1^\fermata + ees'1_\espressivo + e'!1_\espressivo + eis'1_\espressivo + ees'1_\fermata + e'!1_\fermata + eis'1_\fermata + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +} diff --git a/input/regression/script-center-seconds.ly b/input/regression/script-center-seconds.ly index d1600c6934..b0dbd5b8f5 100644 --- a/input/regression/script-center-seconds.ly +++ b/input/regression/script-center-seconds.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \relative c''{ diff --git a/input/regression/script-collision.ly b/input/regression/script-collision.ly index f93f3ea9cb..32e7d211c5 100644 --- a/input/regression/script-collision.ly +++ b/input/regression/script-collision.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/script-horizontal-slur.ly b/input/regression/script-horizontal-slur.ly index c8dedc9fc8..6cf552ac5f 100644 --- a/input/regression/script-horizontal-slur.ly +++ b/input/regression/script-horizontal-slur.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Horizontal scripts don't have @code{avoid-slur} set." diff --git a/input/regression/script-shift.ly b/input/regression/script-shift.ly index 729ba3dfeb..ad625693e0 100644 --- a/input/regression/script-shift.ly +++ b/input/regression/script-shift.ly @@ -7,7 +7,7 @@ means centered on the stem). " } -\version "2.14.0" +\version "2.16.0" \relative c'' { \override Script #'toward-stem-shift = #0.0 diff --git a/input/regression/script-stack-horizontal.ly b/input/regression/script-stack-horizontal.ly index 2a8809e689..ad6e9565f9 100644 --- a/input/regression/script-stack-horizontal.ly +++ b/input/regression/script-stack-horizontal.ly @@ -8,7 +8,7 @@ The scripts should not be folded under the time signature. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/script-stack-order.ly b/input/regression/script-stack-order.ly index 119e40c186..25dff724b2 100644 --- a/input/regression/script-stack-order.ly +++ b/input/regression/script-stack-order.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Scripts can be stacked. The order is determined by a priority field, but when objects have the same priority, the input diff --git a/input/regression/script-stacked.ly b/input/regression/script-stacked.ly index 706cc0c628..ffcca2434e 100644 --- a/input/regression/script-stacked.ly +++ b/input/regression/script-stacked.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \layout { ragged-right= ##t } diff --git a/input/regression/script-stem-tremolo.ly b/input/regression/script-stem-tremolo.ly index 6d4079a233..020deb3005 100644 --- a/input/regression/script-stem-tremolo.ly +++ b/input/regression/script-stem-tremolo.ly @@ -3,7 +3,7 @@ texidoc = "Scripts avoid stem tremolos even if there is no visible stem." } -\version "2.14.0" +\version "2.16.0" \layout {ragged-right =##t} { diff --git a/input/regression/semi-tie-manual-direction.ly b/input/regression/semi-tie-manual-direction.ly index 68054cdbaf..d8ddffd0ac 100644 --- a/input/regression/semi-tie-manual-direction.ly +++ b/input/regression/semi-tie-manual-direction.ly @@ -3,7 +3,7 @@ texidoc = "Semi tie directions may be forced from the input." } -\version "2.14.0" +\version "2.16.0" \layout{ ragged-right=##t diff --git a/input/regression/set-once.ly b/input/regression/set-once.ly new file mode 100644 index 0000000000..2566eb9c21 --- /dev/null +++ b/input/regression/set-once.ly @@ -0,0 +1,29 @@ +\version "2.16.0" + +\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) + 1 | + \once \set fingeringOrientations = #'(right) + | + -"left" | + + \once \set fingeringOrientations = #'(right) + + \once \set fingeringOrientations = #'(up) + + -"left" + + \set fingeringOrientations = #'(left) + + \once \set fingeringOrientations = #'(up) + \once \set fingeringOrientations = #'(right) + -"right" + + -"left" +} diff --git a/input/regression/shape-other-curves.ly b/input/regression/shape-other-curves.ly new file mode 100644 index 0000000000..6e8bda7774 --- /dev/null +++ b/input/regression/shape-other-curves.ly @@ -0,0 +1,46 @@ +\version "2.16.0" + +\header { + texidoc = "In addition to @code{Slur}, the music function @code{\\shape} works +with @code{PhrasingSlur}, @code{Tie}, @code{LaissezVibrerTie}, and @code{RepeatTie}. +Each is shown below, first unmodified and then (in blue) after application of the +function." +} + +\layout { + indent = 0 + ragged-right = ##t +} + +\relative c'' { + % PhrasingSlur + d4\( d' b g g,8 f' e d c2\) + \override PhrasingSlur #'color = #blue + \shape PhrasingSlur #'((0 . -2) (-1 . 3.5) (0.5 . 0.5) (0 . -2.5)) + d4\( d' b g g,8 f' e d c2\) + \break + + % Tie + cis1~ + \break + cis + \override Tie #'color = #blue + \shape Tie #'(() ((0 . -0.9) (0 . -0.5) (0 . -0.5) (0 . -0.9))) + cis~ + \break + cis + \break + + % LaissezVibrerTie + c\laissezVibrer + \override LaissezVibrerTie #'color = #blue + \shape LaissezVibrerTie #'((0 . 0) (0.5 . 0.2) (1.5 . 0.2) (2 . 0)) + c\laissezVibrer + \break + + % RepeatTie + c\repeatTie + \override RepeatTie #'color = #blue + \shape RepeatTie #'((-1 . 0) (-0.7 . 0) (-0.3 . 0) (0 . 0)) + c\repeatTie +} diff --git a/input/regression/shape-slurs.ly b/input/regression/shape-slurs.ly new file mode 100644 index 0000000000..8b4ad53a6d --- /dev/null +++ b/input/regression/shape-slurs.ly @@ -0,0 +1,34 @@ +\version "2.16.0" + +\header { + texidoc = "The control points of a broken or unbroken slur may be offset by +@code{\\shape}. The blue slurs are modified from the default slurs shown first." +} + +\layout { + indent = 0 + ragged-right = ##t +} + +% unmodified +\relative c'' { + d4( d' b g + g,8 f' e d c2) + d4( d' b g + \break + g,8 f' e d c2) +} + +% modified +\relative c'' { + \override Slur #'color = #blue + \shape Slur #'((0 . -2) (-1 . 3.5) (0.5 . 0.5) (0 . -2.5)) + d4( d' b g g,8 f' e d c2) + \shape Slur #'( + ((0 . -2.5) (0 . 1.5) (0 . 1) (0 . -0.5)) + ((1 . 2.5) (0 . 1.5) (0 . 1) (0 . 0)) + ) + d4( d' b g + \break + g,8 f' e d c2) +} diff --git a/input/regression/shift-durations-negative-dots.ly b/input/regression/shift-durations-negative-dots.ly new file mode 100644 index 0000000000..057cd93ede --- /dev/null +++ b/input/regression/shift-durations-negative-dots.ly @@ -0,0 +1,12 @@ +\version "2.16.0" + +\header { + + texidoc = " + @code{\shiftDurations} can use negative dot values without causing + a crash. + " +} + +\shiftDurations #1 #-1 { c''1 } + diff --git a/input/regression/size11.ly b/input/regression/size11.ly index 000ccacfef..da96091581 100644 --- a/input/regression/size11.ly +++ b/input/regression/size11.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/size13.ly b/input/regression/size13.ly index 1563cfe724..aed632f4a2 100644 --- a/input/regression/size13.ly +++ b/input/regression/size13.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" foollilypondbook = " \score " diff --git a/input/regression/size16.ly b/input/regression/size16.ly index bd99141592..9a14e7ded4 100644 --- a/input/regression/size16.ly +++ b/input/regression/size16.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" foollilypondbook = " \score " diff --git a/input/regression/size20.ly b/input/regression/size20.ly index 355a9affa5..6636931986 100644 --- a/input/regression/size20.ly +++ b/input/regression/size20.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" foollilypondbook = " \score " diff --git a/input/regression/size23.ly b/input/regression/size23.ly index 2843c7613b..74459d6dd8 100644 --- a/input/regression/size23.ly +++ b/input/regression/size23.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" foollilypondbook = " \score " diff --git a/input/regression/size26.ly b/input/regression/size26.ly index 37a228ab21..df4fa7698e 100644 --- a/input/regression/size26.ly +++ b/input/regression/size26.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" foollilypondbook = " \score " diff --git a/input/regression/skip-of-length.ly b/input/regression/skip-of-length.ly index 6b365ad84d..c65c57075b 100644 --- a/input/regression/skip-of-length.ly +++ b/input/regression/skip-of-length.ly @@ -7,7 +7,7 @@ last as long as their arguments." ragged-right = ##T } -\version "2.14.0" +\version "2.16.0" \relative << diff --git a/input/regression/skiptypesetting-all-true.ly b/input/regression/skiptypesetting-all-true.ly index 076548084e..d33f2c5ac2 100644 --- a/input/regression/skiptypesetting-all-true.ly +++ b/input/regression/skiptypesetting-all-true.ly @@ -1,4 +1,12 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) +#(ly:expect-warning (_ "system with empty extent")) +#(ly:expect-warning (_ "didn't find a vertical alignment in this system")) \header{ texidoc = " diff --git a/input/regression/skiptypesetting-bar-check.ly b/input/regression/skiptypesetting-bar-check.ly index 5658d5ef37..2503b72e4a 100644 --- a/input/regression/skiptypesetting-bar-check.ly +++ b/input/regression/skiptypesetting-bar-check.ly @@ -1,4 +1,6 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "barcheck failed at: %s") "3/4") \header { diff --git a/input/regression/skiptypesetting-multimeasurerest.ly b/input/regression/skiptypesetting-multimeasurerest.ly index 2a27f63050..ceccedc50c 100644 --- a/input/regression/skiptypesetting-multimeasurerest.ly +++ b/input/regression/skiptypesetting-multimeasurerest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/skiptypesetting-show-first-and-last.ly b/input/regression/skiptypesetting-show-first-and-last.ly index 727be4e61b..e7ad6ab5fe 100644 --- a/input/regression/skiptypesetting-show-first-and-last.ly +++ b/input/regression/skiptypesetting-show-first-and-last.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" showFirstLength = R1*1 showLastLength = R1*2 diff --git a/input/regression/skiptypesetting-show-first.ly b/input/regression/skiptypesetting-show-first.ly index 4f088ea46c..7d81f726f6 100644 --- a/input/regression/skiptypesetting-show-first.ly +++ b/input/regression/skiptypesetting-show-first.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" showFirstLength = R1*3 \paper { diff --git a/input/regression/skiptypesetting-show-last.ly b/input/regression/skiptypesetting-show-last.ly index 2549441068..0da71dd9f5 100644 --- a/input/regression/skiptypesetting-show-last.ly +++ b/input/regression/skiptypesetting-show-last.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" showLastLength = R1*3 \paper { diff --git a/input/regression/skiptypesetting-tuplet.ly b/input/regression/skiptypesetting-tuplet.ly index 4f87ffd0df..8849fa4907 100644 --- a/input/regression/skiptypesetting-tuplet.ly +++ b/input/regression/skiptypesetting-tuplet.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##T } diff --git a/input/regression/skyline-debug.ly b/input/regression/skyline-debug.ly index 6746e2ae05..68e433df3f 100644 --- a/input/regression/skyline-debug.ly +++ b/input/regression/skyline-debug.ly @@ -1,7 +1,7 @@ \header { - texidoc = "@code{-ddebug-skyline} draws the outline of the skyline used." + texidoc = "@option{-ddebug-skyline} draws the outline of the skyline used." } -\version "2.14.0" +\version "2.16.0" #(set-default-paper-size "a6" ) diff --git a/input/regression/skyline-horizontal-padding.ly b/input/regression/skyline-horizontal-padding.ly index 194e8ec765..4862ab71dd 100644 --- a/input/regression/skyline-horizontal-padding.ly +++ b/input/regression/skyline-horizontal-padding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/skyline-vertical-placement.ly b/input/regression/skyline-vertical-placement.ly index d8b44e95fd..748aa68dfc 100644 --- a/input/regression/skyline-vertical-placement.ly +++ b/input/regression/skyline-vertical-placement.ly @@ -5,7 +5,7 @@ using a skyline algorithm so that they don't collide with other objects." \layout {ragged-right = ##t} -\version "2.14.0" +\version "2.16.0" \relative c''' { \override Score.PaperColumn #'keep-inside-line = ##f \override TextScript #'outside-staff-priority = #2 diff --git a/input/regression/skyline-vertical-spacing.ly b/input/regression/skyline-vertical-spacing.ly index 8109616c93..15b33ec60b 100644 --- a/input/regression/skyline-vertical-spacing.ly +++ b/input/regression/skyline-vertical-spacing.ly @@ -7,7 +7,7 @@ systems more uniform." \paper {ragged-right = ##t} #(set-default-paper-size "a6") -\version "2.14.0" +\version "2.16.0" \book { \score { { diff --git a/input/regression/slur-avoid.ly b/input/regression/slur-avoid.ly new file mode 100644 index 0000000000..94d20b7f80 --- /dev/null +++ b/input/regression/slur-avoid.ly @@ -0,0 +1,11 @@ + +\version "2.16.0" + +\header { + texidoc = "Slurs handle avoid objects better. +" +} + +{ + a'8 ( b''4 \fermata ) +} diff --git a/input/regression/slur-broken-trend.ly b/input/regression/slur-broken-trend.ly index 64b4834aa4..aa1813e05c 100644 --- a/input/regression/slur-broken-trend.ly +++ b/input/regression/slur-broken-trend.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/slur-clef.ly b/input/regression/slur-clef.ly index e0974b8a25..cef45c186c 100644 --- a/input/regression/slur-clef.ly +++ b/input/regression/slur-clef.ly @@ -6,6 +6,6 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \new Staff { \clef bass c4^( \clef "G" g'4) s2 c''1_( f'') } diff --git a/input/regression/slur-cross-staff-beam.ly b/input/regression/slur-cross-staff-beam.ly index 713f35c175..12c9c1f7a9 100644 --- a/input/regression/slur-cross-staff-beam.ly +++ b/input/regression/slur-cross-staff-beam.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Slurs that depend on a cross-staff beam are not calculated until after line-breaking." diff --git a/input/regression/slur-cross-staff.ly b/input/regression/slur-cross-staff.ly index 6b27436034..10c12b1648 100644 --- a/input/regression/slur-cross-staff.ly +++ b/input/regression/slur-cross-staff.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Slurs behave decently when broken across a linebreak. diff --git a/input/regression/slur-dash.ly b/input/regression/slur-dash.ly index c133568989..0bcf3691a7 100644 --- a/input/regression/slur-dash.ly +++ b/input/regression/slur-dash.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header {texidoc = "@cindex Slur, dotted, dashed The appearance of slurs may be changed from solid to dotted or dashed. " diff --git a/input/regression/slur-dot-collision.ly b/input/regression/slur-dot-collision.ly new file mode 100644 index 0000000000..b3fc822159 --- /dev/null +++ b/input/regression/slur-dot-collision.ly @@ -0,0 +1,8 @@ +\version "2.16.0" + +\header { + texidoc = "Slurs avoid dots. +" +} + +\relative c''' { e16. ( e,,32 ) } \ No newline at end of file diff --git a/input/regression/slur-dots.ly b/input/regression/slur-dots.ly index 5c94c8ad65..50f6c00ce9 100644 --- a/input/regression/slur-dots.ly +++ b/input/regression/slur-dots.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Slurs should not get confused by augmentation dots. With a lot of dots, the problems becomes more visible." diff --git a/input/regression/slur-double.ly b/input/regression/slur-double.ly index 2fc2900016..f76ece0919 100644 --- a/input/regression/slur-double.ly +++ b/input/regression/slur-double.ly @@ -3,7 +3,7 @@ texidoc = "Some composers use slurs both above and below chords. This can be typeset by setting @code{doubleSlurs}" } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \relative c' { diff --git a/input/regression/slur-dynamics.ly b/input/regression/slur-dynamics.ly index 7cc17026bf..6e76f750c7 100644 --- a/input/regression/slur-dynamics.ly +++ b/input/regression/slur-dynamics.ly @@ -4,7 +4,7 @@ texidoc = "Dynamics avoid collision with slur." } -\version "2.14.0" +\version "2.16.0" \layout { indent = 0\mm ragged-right = ##t diff --git a/input/regression/slur-extreme.ly b/input/regression/slur-extreme.ly index d5b45e0314..786b23e735 100644 --- a/input/regression/slur-extreme.ly +++ b/input/regression/slur-extreme.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/slur-flag.ly b/input/regression/slur-flag.ly new file mode 100644 index 0000000000..200595c373 --- /dev/null +++ b/input/regression/slur-flag.ly @@ -0,0 +1,12 @@ +\version "2.16.0" + +\header { + texidoc = "Slurs take flag extents into account. +" +} + +\relative c'' { + \stemUp + \slurUp + b8( c) +} diff --git a/input/regression/slur-grace.ly b/input/regression/slur-grace.ly index eeebe458db..b08dcd1c0f 100644 --- a/input/regression/slur-grace.ly +++ b/input/regression/slur-grace.ly @@ -1,4 +1,4 @@ -\version "2.14.2" +\version "2.16.0" \header { texidoc = "Appoggiatura and acciaccaturas use a different slur than the diff --git a/input/regression/slur-height-capping.ly b/input/regression/slur-height-capping.ly new file mode 100644 index 0000000000..0d9a6a8611 --- /dev/null +++ b/input/regression/slur-height-capping.ly @@ -0,0 +1,15 @@ +\version "2.16.0" + +\header { + texidoc = "Slur shaping is not adapted to accommodate objects +towards the edges of slur. Said objects are thus ignored, +which should make the slur in this regtest flat. Objects towards +the edges are not, however, ignored in the slur scoring. +" +} + +\relative c { + \clef bass + c8( d' a d c, d' a d) + c,8( des' as des c, des' as des) | +} diff --git a/input/regression/slur-manual.ly b/input/regression/slur-manual.ly index 992a4a28d9..49613d4ba0 100644 --- a/input/regression/slur-manual.ly +++ b/input/regression/slur-manual.ly @@ -6,7 +6,7 @@ positioning of the slur. It selects the slur configuration closest to the given pair. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##T } \relative c' { diff --git a/input/regression/slur-multiple-linebreak.ly b/input/regression/slur-multiple-linebreak.ly index 1bf370e261..3f863ccda1 100644 --- a/input/regression/slur-multiple-linebreak.ly +++ b/input/regression/slur-multiple-linebreak.ly @@ -1,6 +1,7 @@ -\version "2.14.2" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "already have slur")) \header { texidoc = "An additional opening slur during a running slur should be ignored diff --git a/input/regression/slur-multiple.ly b/input/regression/slur-multiple.ly index 7773632238..1b2bec4d01 100644 --- a/input/regression/slur-multiple.ly +++ b/input/regression/slur-multiple.ly @@ -1,21 +1,25 @@ -\version "2.14.2" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "already have slur")) +#(ly:expect-warning (_ "cannot end slur")) +#(ly:expect-warning (_ "unterminated slur")) \header { - texidoc = "LilyPond does not support multiple concurrent slurs with the + 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") +sp=#(define-event-function (parser location n e) (index? ly:event?) + (set! (ly:music-property e 'spanner-id) (format "sp~a" n)) + e) -\relative c'' { +\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 | - + c4((\sp1( d4)(\sp1( e4) f) | + % This will give two overlapping slurs and "unterminated slur" from above + d( d\sp2( e) f\sp2) | + } diff --git a/input/regression/slur-nice.ly b/input/regression/slur-nice.ly index 1aab761c28..e2e2e13d4f 100644 --- a/input/regression/slur-nice.ly +++ b/input/regression/slur-nice.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" Slurs should look nice and symmetric. The curvature may increase diff --git a/input/regression/slur-rest.ly b/input/regression/slur-rest.ly index b41bb93225..37762861d6 100644 --- a/input/regression/slur-rest.ly +++ b/input/regression/slur-rest.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="Slurs may be placed over rests. The slur will avoid diff --git a/input/regression/slur-scoring.ly b/input/regression/slur-scoring.ly index e2810eea9b..87b544202f 100644 --- a/input/regression/slur-scoring.ly +++ b/input/regression/slur-scoring.ly @@ -7,12 +7,12 @@ one big file, since changing one score parameter for one situation may affect several other situations. - Tunable parameters are in @file{scm/slur.scm}. + Tunable parameters are in @file{scm/@/slur.scm}. " } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t % #(define debug-slur-scoring #t) diff --git a/input/regression/slur-script-inside.ly b/input/regression/slur-script-inside.ly index 0c85c5eb0f..56c0b8138f 100644 --- a/input/regression/slur-script-inside.ly +++ b/input/regression/slur-script-inside.ly @@ -8,7 +8,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/slur-script.ly b/input/regression/slur-script.ly index 60864a7483..b2fb1c50ab 100644 --- a/input/regression/slur-script.ly +++ b/input/regression/slur-script.ly @@ -6,7 +6,7 @@ slur responds appropriately if a script is moved." } -\version "2.14.0" +\version "2.16.0" \layout { indent = 0\mm ragged-right = ##t diff --git a/input/regression/slur-shift-region.ly b/input/regression/slur-shift-region.ly new file mode 100644 index 0000000000..5d3304f382 --- /dev/null +++ b/input/regression/slur-shift-region.ly @@ -0,0 +1,10 @@ +\version "2.16.0" + +\header { + texidoc = "A slur's shift region is automatically made +higher to accommodate extra encompass elements." +} + +\relative c' { + c'2( \times 2/3 { g4 e c) } +} diff --git a/input/regression/slur-symmetry-1.ly b/input/regression/slur-symmetry-1.ly index 08ed383af0..e2334bcf28 100644 --- a/input/regression/slur-symmetry-1.ly +++ b/input/regression/slur-symmetry-1.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Symmetric figures should lead to symmetric slurs." diff --git a/input/regression/slur-symmetry.ly b/input/regression/slur-symmetry.ly index fc1dc2bedd..8774bd036e 100644 --- a/input/regression/slur-symmetry.ly +++ b/input/regression/slur-symmetry.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Symmetric figures should lead to symmetric slurs." diff --git a/input/regression/slur-tie-control-points.ly b/input/regression/slur-tie-control-points.ly new file mode 100644 index 0000000000..5aa59a0f1d --- /dev/null +++ b/input/regression/slur-tie-control-points.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\header { + texidoc = "Slurs and ties should never share extremal control points. +" +} +\paper { ragged-right = ##f } + +\relative c'' { + c1~( c2 g) +} diff --git a/input/regression/slur-tilt.ly b/input/regression/slur-tilt.ly index 58d399565b..bf7d668a49 100644 --- a/input/regression/slur-tilt.ly +++ b/input/regression/slur-tilt.ly @@ -8,7 +8,7 @@ point into one note head, and point over another note head." \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c'' { \time 2/4 diff --git a/input/regression/slur-tuplet.ly b/input/regression/slur-tuplet.ly index 0f2e8e2755..3296fefa1d 100644 --- a/input/regression/slur-tuplet.ly +++ b/input/regression/slur-tuplet.ly @@ -5,7 +5,7 @@ This may not work if the slur starts after the tuplet. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/slur-vertical-skylines.ly b/input/regression/slur-vertical-skylines.ly new file mode 100644 index 0000000000..2e808b8573 --- /dev/null +++ b/input/regression/slur-vertical-skylines.ly @@ -0,0 +1,16 @@ +\version "2.16.0" + +\header { + texidoc = "Slurs do not force grobs with outside-staff-priority +too high. +" +} + +\relative c' { + f8^"rit"( c' f c' f) r8 r4 | + c2( c,2 | + g1)~\startTrillSpan + g1\stopTrillSpan + g1(\f + g,1) +} \ No newline at end of file diff --git a/input/regression/slur-vestigial-outside-staff-callback.ly b/input/regression/slur-vestigial-outside-staff-callback.ly new file mode 100644 index 0000000000..2388777846 --- /dev/null +++ b/input/regression/slur-vestigial-outside-staff-callback.ly @@ -0,0 +1,19 @@ + +\version "2.16.0" + +\header { + texidoc = "Outside staff callbacks that no longer apply to grobs +because they are outside the X boundary of a slur should terminate +early. The example below should generate no warnings about Bezier +curves and there should be no change in StrokeFinger position between +the first and second examples. +" +} + +\relative c'' { + \set strokeFingerOrientations = #'(up) + \override StrokeFinger #'avoid-slur = #'outside + \autoBeamOff + 16 b + 16( b) +} diff --git a/input/regression/song-associated-voice.ly b/input/regression/song-associated-voice.ly index a404b6f00a..ef6cefa5e3 100644 --- a/input/regression/song-associated-voice.ly +++ b/input/regression/song-associated-voice.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports associated voices. diff --git a/input/regression/song-basic-nonenglish.ly b/input/regression/song-basic-nonenglish.ly index 207a16d805..3a53832b5f 100644 --- a/input/regression/song-basic-nonenglish.ly +++ b/input/regression/song-basic-nonenglish.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports non-english syllabels. diff --git a/input/regression/song-basic.ly b/input/regression/song-basic.ly index 6b238b9ff0..ae0c40d122 100644 --- a/input/regression/song-basic.ly +++ b/input/regression/song-basic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports basic songs. diff --git a/input/regression/song-breathe.ly b/input/regression/song-breathe.ly index 6b52aaa3e1..72dfb8eb7c 100644 --- a/input/regression/song-breathe.ly +++ b/input/regression/song-breathe.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports breath marks. diff --git a/input/regression/song-melisma.ly b/input/regression/song-melisma.ly index a78f8a5096..6a597cb1c4 100644 --- a/input/regression/song-melisma.ly +++ b/input/regression/song-melisma.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports melismas. diff --git a/input/regression/song-reordering.ly b/input/regression/song-reordering.ly index 328c56a3cc..c774699fe2 100644 --- a/input/regression/song-reordering.ly +++ b/input/regression/song-reordering.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports reordered lyrics. diff --git a/input/regression/song-reordering2.ly b/input/regression/song-reordering2.ly index 68bd7aaf13..cd63ae0429 100644 --- a/input/regression/song-reordering2.ly +++ b/input/regression/song-reordering2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports reordered lyrics. diff --git a/input/regression/song-repetition.ly b/input/regression/song-repetition.ly index e64cb4c050..1f9ce28c07 100644 --- a/input/regression/song-repetition.ly +++ b/input/regression/song-repetition.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports repeat signs. diff --git a/input/regression/song-skip-noword.ly b/input/regression/song-skip-noword.ly index b683410d5f..9fcbbbf03f 100644 --- a/input/regression/song-skip-noword.ly +++ b/input/regression/song-skip-noword.ly @@ -1,17 +1,20 @@ -\version "2.14.0" +\version "2.16.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-") diff --git a/input/regression/song-skip.ly b/input/regression/song-skip.ly index 598f8b1de1..351113393c 100644 --- a/input/regression/song-skip.ly +++ b/input/regression/song-skip.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports skips. diff --git a/input/regression/song-slurs.ly b/input/regression/song-slurs.ly index 646366c002..8dd068162e 100644 --- a/input/regression/song-slurs.ly +++ b/input/regression/song-slurs.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports slurs. diff --git a/input/regression/song-splitpart.ly b/input/regression/song-splitpart.ly index 8ae1e31841..ee4ef160a5 100644 --- a/input/regression/song-splitpart.ly +++ b/input/regression/song-splitpart.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports divided voices. diff --git a/input/regression/song-stanzas.ly b/input/regression/song-stanzas.ly index 00307be6e0..761e62b8fb 100644 --- a/input/regression/song-stanzas.ly +++ b/input/regression/song-stanzas.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports multiple stanzas. diff --git a/input/regression/song-tempo.ly b/input/regression/song-tempo.ly index 18939dcadb..0205ab438d 100644 --- a/input/regression/song-tempo.ly +++ b/input/regression/song-tempo.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Festival song synthesis output supports changing tempo in the middle of a piece. diff --git a/input/regression/spacing-accidental-rest.ly b/input/regression/spacing-accidental-rest.ly index bba75ec1ff..3b5cdeb3d2 100644 --- a/input/regression/spacing-accidental-rest.ly +++ b/input/regression/spacing-accidental-rest.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Accidentals don't collide with shifted-down rests." diff --git a/input/regression/spacing-accidental-staffs.ly b/input/regression/spacing-accidental-staffs.ly index a7b2580dcc..cf80c66dc0 100644 --- a/input/regression/spacing-accidental-staffs.ly +++ b/input/regression/spacing-accidental-staffs.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Accidentals in different staves do not affect the diff --git a/input/regression/spacing-accidental-stretch.ly b/input/regression/spacing-accidental-stretch.ly index c343f37102..8c2c1f6daa 100644 --- a/input/regression/spacing-accidental-stretch.ly +++ b/input/regression/spacing-accidental-stretch.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Accidentals do not influence the amount of stretchable space. @@ -12,7 +12,7 @@ The accidental does add a little non-stretchable space. line-width = 18.\cm } \relative c'' { - #(set-accidental-style 'piano-cautionary) + \accidentalStyle "piano-cautionary" \time 2/4 d16 d d d d d cis d dis dis dis dis diff --git a/input/regression/spacing-accidental-tie.ly b/input/regression/spacing-accidental-tie.ly index 00b94623b8..b5fe6dc0c8 100644 --- a/input/regression/spacing-accidental-tie.ly +++ b/input/regression/spacing-accidental-tie.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Horizontal spacing works as expected on tied notes with diff --git a/input/regression/spacing-accidental.ly b/input/regression/spacing-accidental.ly index 3d8b7c6833..632099154d 100644 --- a/input/regression/spacing-accidental.ly +++ b/input/regression/spacing-accidental.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Accidentals sticking out to the left diff --git a/input/regression/spacing-bar-accidental.ly b/input/regression/spacing-bar-accidental.ly index b3087d4ddd..eee994d286 100644 --- a/input/regression/spacing-bar-accidental.ly +++ b/input/regression/spacing-bar-accidental.ly @@ -1,11 +1,11 @@ \header { texidoc = "An accidental following a bar gets space so - the left edge of the acc is at 0.3 - 0.6 staff space of the bar line" + the left edge of the acc is at 0.3 staff space from the bar line" } -\version "2.14.0" +\version "2.16.0" \layout{ ragged-right = ##t } diff --git a/input/regression/spacing-bar-arpeggio.ly b/input/regression/spacing-bar-arpeggio.ly index b96b690313..1079310431 100644 --- a/input/regression/spacing-bar-arpeggio.ly +++ b/input/regression/spacing-bar-arpeggio.ly @@ -3,7 +3,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout{ragged-right=##t} \new Staff { diff --git a/input/regression/spacing-bar-stem.ly b/input/regression/spacing-bar-stem.ly index 69f73930f4..a3ba1f82b8 100644 --- a/input/regression/spacing-bar-stem.ly +++ b/input/regression/spacing-bar-stem.ly @@ -9,7 +9,7 @@ to 1.5 staff space." } -\version "2.14.0" +\version "2.16.0" \layout{ ragged-right = ##t } diff --git a/input/regression/spacing-bar-whole-measure.ly b/input/regression/spacing-bar-whole-measure.ly index 4a7302a4c2..3fb2543b05 100644 --- a/input/regression/spacing-bar-whole-measure.ly +++ b/input/regression/spacing-bar-whole-measure.ly @@ -3,7 +3,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout{ ragged-right=##t diff --git a/input/regression/spacing-clef-first-note.ly b/input/regression/spacing-clef-first-note.ly index 86763f7653..8986eac7e7 100644 --- a/input/regression/spacing-clef-first-note.ly +++ b/input/regression/spacing-clef-first-note.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clef changes at the start of a line get much more space diff --git a/input/regression/spacing-correction-accidentals.ly b/input/regression/spacing-correction-accidentals.ly index a6a56b3602..cada938d57 100644 --- a/input/regression/spacing-correction-accidentals.ly +++ b/input/regression/spacing-correction-accidentals.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If right hand stems have accidentals, optical spacing diff --git a/input/regression/spacing-empty-bar.ly b/input/regression/spacing-empty-bar.ly index 9c630faab9..307f6f1749 100644 --- a/input/regression/spacing-empty-bar.ly +++ b/input/regression/spacing-empty-bar.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Empty barlines do not affect spacing." @@ -7,4 +7,4 @@ { c'4 c' \bar "" c' c' \break \repeat unfold 10 { c' c' c' c' \bar "" \noBreak } -} \ No newline at end of file +} diff --git a/input/regression/spacing-end-of-line.ly b/input/regression/spacing-end-of-line.ly index 1e3450584e..a4027f9af2 100644 --- a/input/regression/spacing-end-of-line.ly +++ b/input/regression/spacing-end-of-line.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="Broken engraving of a bar at the end of a line does not upset diff --git a/input/regression/spacing-ended-voice.ly b/input/regression/spacing-ended-voice.ly index 3a4842c997..19213cf8dd 100644 --- a/input/regression/spacing-ended-voice.ly +++ b/input/regression/spacing-ended-voice.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " A voicelet (a very short voice to get polyphonic chords correct) should not confuse the spacing engine." diff --git a/input/regression/spacing-folded-clef-cross-staff.ly b/input/regression/spacing-folded-clef-cross-staff.ly index 13b8eea0d6..7ed718561b 100644 --- a/input/regression/spacing-folded-clef-cross-staff.ly +++ b/input/regression/spacing-folded-clef-cross-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Clefs are also folded under cross staff constructs." } diff --git a/input/regression/spacing-folded-clef.ly b/input/regression/spacing-folded-clef.ly index 755c5d9509..665bae99e4 100644 --- a/input/regression/spacing-folded-clef.ly +++ b/input/regression/spacing-folded-clef.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A clef can be folded below notes in a different staff, if this does not disrupt the flow of the notes." diff --git a/input/regression/spacing-folded-clef2.ly b/input/regression/spacing-folded-clef2.ly index 2278f9c751..0df8f7cd31 100644 --- a/input/regression/spacing-folded-clef2.ly +++ b/input/regression/spacing-folded-clef2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A clef can be folded below notes in a different staff, if diff --git a/input/regression/spacing-folded-clef3.ly b/input/regression/spacing-folded-clef3.ly index 465dc30ab0..74e4fc392a 100644 --- a/input/regression/spacing-folded-clef3.ly +++ b/input/regression/spacing-folded-clef3.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Voices that go back and forth between staves do not confuse the spacing engine." @@ -22,4 +22,22 @@ \new Staff = "lh" \relative c' { s2. } ->> \ No newline at end of file +>> + +\new PianoStaff << + \new Staff = "rh" \relative c'' { + \time 6/8 + bes16 c d + \change Staff = lh + \stemUp bes a g + \change Staff = rh + \stemDown bes c d + \change Staff = lh + \clef bass + \stemUp ces, a g + + } + \new Staff = "lh" \relative c' { + s2. + } +>> diff --git a/input/regression/spacing-grace-duration.ly b/input/regression/spacing-grace-duration.ly index 1961cd845b..70f4f9b522 100644 --- a/input/regression/spacing-grace-duration.ly +++ b/input/regression/spacing-grace-duration.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Spacing uses the duration of the notes, but disregards diff --git a/input/regression/spacing-grace.ly b/input/regression/spacing-grace.ly index 533bed9353..78e1fb11a1 100644 --- a/input/regression/spacing-grace.ly +++ b/input/regression/spacing-grace.ly @@ -5,7 +5,7 @@ run are spaced accordingly. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/spacing-horizontal-skyline-grace.ly b/input/regression/spacing-horizontal-skyline-grace.ly index 4772d87498..a8430674d1 100644 --- a/input/regression/spacing-horizontal-skyline-grace.ly +++ b/input/regression/spacing-horizontal-skyline-grace.ly @@ -6,7 +6,7 @@ and the barline do not collide." } -\version "2.14.0" +\version "2.16.0" \paper { diff --git a/input/regression/spacing-horizontal-skyline.ly b/input/regression/spacing-horizontal-skyline.ly index 5f04d7ca35..27c0fa8685 100644 --- a/input/regression/spacing-horizontal-skyline.ly +++ b/input/regression/spacing-horizontal-skyline.ly @@ -3,7 +3,7 @@ texidoc = "accidentals may be folded under preceding notes." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/spacing-knee-compressed.ly b/input/regression/spacing-knee-compressed.ly index f3bcb4a025..ca7611d6c0 100644 --- a/input/regression/spacing-knee-compressed.ly +++ b/input/regression/spacing-knee-compressed.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Spacing corrections for kneed beams still work when @@ -24,4 +24,4 @@ lh = \change Staff = "lh" \clef bass \repeat unfold 12 { \rh a'16 \lh d \rh a' \lh d \noBreak } } ->> \ No newline at end of file +>> diff --git a/input/regression/spacing-knee.ly b/input/regression/spacing-knee.ly index 2f17c31629..050606112b 100644 --- a/input/regression/spacing-knee.ly +++ b/input/regression/spacing-knee.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "For knees, the spacing correction is such that the diff --git a/input/regression/spacing-loose-grace-error.ly b/input/regression/spacing-loose-grace-error.ly index 8a4752c269..f55dc72360 100644 --- a/input/regression/spacing-loose-grace-error.ly +++ b/input/regression/spacing-loose-grace-error.ly @@ -1,19 +1,30 @@ -\header -{ - +\version "2.16.0" + +#(ly:expect-warning (_ "Cannot determine neighbors for floating column. ")) +#(ly:expect-warning (_ "Loose column does not have right side to attach to.")) +#(ly:expect-warning (_ "Loose column does not have right side to attach to.")) + +\header { + texidoc = "Even in case of incorrect contexts (eg. shortlived contexts) that break linking of columns through spacing wishes, - @code{strict-note-spacing} defaults to a robust solution." + @code{strict-note-spacing} defaults to a robust solution. + This test passes if it does not seg fault; instead it should + produce three programming error messages. Note that, in tight + music with strict note spacing, grace notes will collide with + normal notes. This is expected." } -\version "2.14.0" - - %% \new Staff cause shortlived, disconnected Voice contexts %% breaking spacing-wishes links. -\new Staff { - \override Score.SpacingSpanner #'strict-note-spacing = ##t - \afterGrace c'4 {c'32 c'32 } - c'4 +\score { + \new Staff { + \override Score.SpacingSpanner #'strict-note-spacing = ##t + \afterGrace c'4 {c'32 c'32 } + c'4 + } + \layout { + ragged-right = ##f + } } diff --git a/input/regression/spacing-loose-grace-linebreak.ly b/input/regression/spacing-loose-grace-linebreak.ly index 3790c2a3a2..1ddfe3cdf7 100644 --- a/input/regression/spacing-loose-grace-linebreak.ly +++ b/input/regression/spacing-loose-grace-linebreak.ly @@ -4,7 +4,7 @@ across a line break, it gets attached to the end of line." } -\version "2.14.0" +\version "2.16.0" \layout { \context { diff --git a/input/regression/spacing-loose-grace.ly b/input/regression/spacing-loose-grace.ly index 93c08d3e1a..225e8292a0 100644 --- a/input/regression/spacing-loose-grace.ly +++ b/input/regression/spacing-loose-grace.ly @@ -8,7 +8,7 @@ spacing." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/spacing-loose-polyphony.ly b/input/regression/spacing-loose-polyphony.ly new file mode 100644 index 0000000000..18f2ba4628 --- /dev/null +++ b/input/regression/spacing-loose-polyphony.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\header { + texidoc = "Loose columns (here, the treble clef) are spaced +correctly in polyphonic music. +" +} + +\new PianoStaff << + \new Staff \relative c' { + \times 2/3 { g'4 a2 } + } + \new Staff \relative c' { + \clef bass fis,,8 cis' + \clef treble g'' fis, + } +>> diff --git a/input/regression/spacing-mark-width.ly b/input/regression/spacing-mark-width.ly index fa1159040e..3b86929f36 100644 --- a/input/regression/spacing-mark-width.ly +++ b/input/regression/spacing-mark-width.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/spacing-measure-length.ly b/input/regression/spacing-measure-length.ly index 5e94e485ca..3ab77b81bd 100644 --- a/input/regression/spacing-measure-length.ly +++ b/input/regression/spacing-measure-length.ly @@ -6,7 +6,7 @@ This means that the 3/8 setting does not affect the whole rest spacing." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/spacing-multi-tuplet.ly b/input/regression/spacing-multi-tuplet.ly index 6fe2acea27..acc53cc8fe 100644 --- a/input/regression/spacing-multi-tuplet.ly +++ b/input/regression/spacing-multi-tuplet.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/spacing-no-note.ly b/input/regression/spacing-no-note.ly index 0f1d347cce..392a4cabe2 100644 --- a/input/regression/spacing-no-note.ly +++ b/input/regression/spacing-no-note.ly @@ -6,7 +6,7 @@ more space. " } \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" { \time 2/4 \repeat "percent" 3 { c'4 } diff --git a/input/regression/spacing-non-adjacent-columns1.ly b/input/regression/spacing-non-adjacent-columns1.ly index 2acaa15909..0780f39775 100644 --- a/input/regression/spacing-non-adjacent-columns1.ly +++ b/input/regression/spacing-non-adjacent-columns1.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \paper {ragged-right = ##t} \header { texidoc = "The spacing engine avoids collisions between non-adjacent columns." @@ -18,4 +18,4 @@ bar = \relative c { \new Voice \foo \new Voice \bar >> -} \ No newline at end of file +} diff --git a/input/regression/spacing-non-adjacent-columns2.ly b/input/regression/spacing-non-adjacent-columns2.ly index 542acbe259..977647a985 100644 --- a/input/regression/spacing-non-adjacent-columns2.ly +++ b/input/regression/spacing-non-adjacent-columns2.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \paper {ragged-right = ##t} \header { texidoc = "The spacing engine avoids collisions between non-adjacent columns." diff --git a/input/regression/spacing-note-flags.ly b/input/regression/spacing-note-flags.ly index eaaa5a3032..9771c636a8 100644 --- a/input/regression/spacing-note-flags.ly +++ b/input/regression/spacing-note-flags.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/spacing-packed.ly b/input/regression/spacing-packed.ly index c6c7aeffc2..a187223b1f 100644 --- a/input/regression/spacing-packed.ly +++ b/input/regression/spacing-packed.ly @@ -10,7 +10,7 @@ " } -\version "2.14.0" +\version "2.16.0" \relative c' { \override Score.SpacingSpanner #'packed-spacing = ##t diff --git a/input/regression/spacing-paper-column-padding.ly b/input/regression/spacing-paper-column-padding.ly index c16f12249e..77984552d8 100644 --- a/input/regression/spacing-paper-column-padding.ly +++ b/input/regression/spacing-paper-column-padding.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The space after a paper column can be increased by overriding diff --git a/input/regression/spacing-proportional.ly b/input/regression/spacing-proportional.ly index df17362ee5..9160af59af 100644 --- a/input/regression/spacing-proportional.ly +++ b/input/regression/spacing-proportional.ly @@ -6,7 +6,7 @@ to the distance for the given duration." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/spacing-ragged-last.ly b/input/regression/spacing-ragged-last.ly index cd5216675d..d785143960 100644 --- a/input/regression/spacing-ragged-last.ly +++ b/input/regression/spacing-ragged-last.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/spacing-rest.ly b/input/regression/spacing-rest.ly index 4e6aabae5e..89dfc2770e 100644 --- a/input/regression/spacing-rest.ly +++ b/input/regression/spacing-rest.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Rests get a little less space, since they are narrower. However, the quarter rest in feta font is relatively wide, causing this diff --git a/input/regression/spacing-section.ly b/input/regression/spacing-section.ly index f166129a44..1ae03f66e9 100644 --- a/input/regression/spacing-section.ly +++ b/input/regression/spacing-section.ly @@ -11,7 +11,7 @@ the 4/16, and a 16th in the second section takes as much space as a { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \relative c' { \time 2/4 c4 c8 c diff --git a/input/regression/spacing-short-notes.ly b/input/regression/spacing-short-notes.ly index d05ef1dd7c..c556abafd3 100644 --- a/input/regression/spacing-short-notes.ly +++ b/input/regression/spacing-short-notes.ly @@ -1,10 +1,10 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Notes that are shorter than the common shortest note get a space (i.e. without the space needed for the note) proportional to -their duration. So, the 16th notes get 1/2 of the space of an eigth note. +their duration. So, the 16th notes get 1/2 of the space of an eighth note. The total distance for a 16th (which includes note head) is 3/4 of the eighth note. " diff --git a/input/regression/spacing-space-to-barline.ly b/input/regression/spacing-space-to-barline.ly index 1402d58559..996406aacb 100644 --- a/input/regression/spacing-space-to-barline.ly +++ b/input/regression/spacing-space-to-barline.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "When space-to-barline is false, we measure the space between the note and the @@ -20,4 +20,4 @@ the start of the barline." \override NoteSpacing #'space-to-barline = ##f c'2 c'2 c'1 -} \ No newline at end of file +} diff --git a/input/regression/spacing-stem-bar.ly b/input/regression/spacing-stem-bar.ly index 07e64a8ab7..7d568f8cd0 100644 --- a/input/regression/spacing-stem-bar.ly +++ b/input/regression/spacing-stem-bar.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Upstem notes before a barline are printed with some extra diff --git a/input/regression/spacing-stem-direction.ly b/input/regression/spacing-stem-direction.ly index f65d803c33..7b15bfc6ca 100644 --- a/input/regression/spacing-stem-direction.ly +++ b/input/regression/spacing-stem-direction.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/spacing-stem-same-direction.ly b/input/regression/spacing-stem-same-direction.ly index 12e9b4168e..9ff4b55fb2 100644 --- a/input/regression/spacing-stem-same-direction.ly +++ b/input/regression/spacing-stem-same-direction.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "For juxtaposed chords with the same direction, a slight optical correction is used. It is constant, and works only if diff --git a/input/regression/spacing-stick-out.ly b/input/regression/spacing-stick-out.ly index 91177649cc..cd78aa7bfd 100644 --- a/input/regression/spacing-stick-out.ly +++ b/input/regression/spacing-stick-out.ly @@ -7,7 +7,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/spacing-strict-notespacing.ly b/input/regression/spacing-strict-notespacing.ly index 705684a53f..250366491c 100644 --- a/input/regression/spacing-strict-notespacing.ly +++ b/input/regression/spacing-strict-notespacing.ly @@ -9,7 +9,7 @@ time. This may cause collisions. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/spacing-strict-spacing-grace.ly b/input/regression/spacing-strict-spacing-grace.ly index b61f51d448..1a9fefd824 100644 --- a/input/regression/spacing-strict-spacing-grace.ly +++ b/input/regression/spacing-strict-spacing-grace.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" << \override Score.SpacingSpanner #'strict-grace-spacing = ##t diff --git a/input/regression/spacing-to-empty-barline.ly b/input/regression/spacing-to-empty-barline.ly index 17091dd510..2a98453f55 100644 --- a/input/regression/spacing-to-empty-barline.ly +++ b/input/regression/spacing-to-empty-barline.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "An empty barline does not confuse the spacing engine too much. diff --git a/input/regression/spacing-to-grace.ly b/input/regression/spacing-to-grace.ly index fb504663e9..49c8c930fb 100644 --- a/input/regression/spacing-to-grace.ly +++ b/input/regression/spacing-to-grace.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="Space from a normal note (or barline) to a grace note is diff --git a/input/regression/spacing-uniform-stretching.ly b/input/regression/spacing-uniform-stretching.ly index 25af2105f1..3b889d2d41 100644 --- a/input/regression/spacing-uniform-stretching.ly +++ b/input/regression/spacing-uniform-stretching.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \relative c'' << diff --git a/input/regression/span-bar-allow-span-bar.ly b/input/regression/span-bar-allow-span-bar.ly new file mode 100644 index 0000000000..c4e150cec1 --- /dev/null +++ b/input/regression/span-bar-allow-span-bar.ly @@ -0,0 +1,59 @@ + +\version "2.16.0" + +\header { + texidoc = "The @code{SpanBarStub} grob takes care of horizontal spacing +for @code{SpanBar} grobs. When the @code{SpanBar} is disallowed, objects +in contexts that the span bar would have otherwise crossed align as if the +span bar were not there. +" +} + +<< + \new Staff { + \repeat unfold 64 { c''8 } + } + \new GrandStaff << + \new Staff + \new Voice = "upper" + \relative c'' { + c2 c c c + \once \override Staff . BarLine #'allow-span-bar = ##f + c2 c c c + c2 c c c + \once \override Staff . BarLine #'allow-span-bar = ##f + c2 c c c + } + \new Lyrics \lyricsto "upper" \lyricmode { + long-syllable a b c long-syllable a b c + long-syllable a b c long-syllable a b c + } + + \new Staff + \new Voice = "middle" + \relative c'' { + c2 c c c + c2 c c c + c2 c c c + \once \override Staff . BarLine #'allow-span-bar = ##f + c2 c c c + } + \new Lyrics \lyricsto "middle" \lyricmode { + syllable a b c syllable a b c + syllable a b c syllable a b c + } + + \new Staff + \new Voice = "lower" + \relative c'' { + c2 c c c + c2 c c c + c2 c c c + c2 c c c + } + \new Lyrics \lyricsto "lower" \lyricmode { + word a b c word a b c + word a b c word a b c + } + >> +>> diff --git a/input/regression/span-bar-articulation.ly b/input/regression/span-bar-articulation.ly new file mode 100644 index 0000000000..22e070ccb3 --- /dev/null +++ b/input/regression/span-bar-articulation.ly @@ -0,0 +1,13 @@ +\version "2.16.0" + +\header { + texidoc = "Articulations on cross-staff stems do not collide with +span bars." +} + +\new GrandStaff << + \new Staff = "a" {g1 R s } + \new Staff = "b" { + \clef bass R1 r2. g8( b | + d'\prall\espressivo \change Staff="a" b') g'2.} +>> diff --git a/input/regression/span-bar-break.ly b/input/regression/span-bar-break.ly index ce598eaa1f..5bd5b074df 100644 --- a/input/regression/span-bar-break.ly +++ b/input/regression/span-bar-break.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/span-bar-partial.ly b/input/regression/span-bar-partial.ly index 4d206bfa76..66ba86bbd0 100644 --- a/input/regression/span-bar-partial.ly +++ b/input/regression/span-bar-partial.ly @@ -1,6 +1,6 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Span bars can be turned on/off on a staff-by-staff basis." + texidoc = "Span bars can be turned on/@/off on a staff-by-staff basis." } \layout { diff --git a/input/regression/span-bar-spacing.ly b/input/regression/span-bar-spacing.ly index 2d3287c38e..f58812751d 100644 --- a/input/regression/span-bar-spacing.ly +++ b/input/regression/span-bar-spacing.ly @@ -1,9 +1,14 @@ \header { - texidoc = "SpanBars participate in the horizontal collision system; -the accidentals should not collide with the bar lines." + texidoc = "Because @code{BarLine} grobs take their +extra-positioning-height from their neighbors via the +@code{pure-from-neighbor-interface}, the left edge of an +accidental should never fall to the left of the right +edge of a bar line. This spacing should also take place when +@code{SpanBar} grobs are present. +" } -\version "2.14.0" +\version "2.16.0" upper = \relative c' { \key f \minor \time 12/8 diff --git a/input/regression/span-bar.ly b/input/regression/span-bar.ly index fc777550fc..f36f2c7878 100644 --- a/input/regression/span-bar.ly +++ b/input/regression/span-bar.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Span bars are drawn only between staff bar lines. By setting bar lines to transparent, they are shown only between systems. diff --git a/input/regression/spanner-after-line-breaking.ly b/input/regression/spanner-after-line-breaking.ly index 632da4ac38..95bebac832 100644 --- a/input/regression/spanner-after-line-breaking.ly +++ b/input/regression/spanner-after-line-breaking.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The visibility of left-broken line spanners and hairpins diff --git a/input/regression/spanner-alignment.ly b/input/regression/spanner-alignment.ly new file mode 100644 index 0000000000..02e04ece7d --- /dev/null +++ b/input/regression/spanner-alignment.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header { + texidoc = "Spanners align to musical grobs in paper columns, +ignoring things like pedal marks. + +" +} + +\score { + << + \new PianoStaff << + \new Staff = "up" { + \clef treble + \repeat unfold 32 c'4 + } + \new Dynamics = "dynamics" { + \repeat unfold 2 { + s1\cresc s1\f s1\dim s1\p + } + } + \new Staff = "down" { + \clef bass + \repeat unfold 32 c4 + } + \new Dynamics= "pedal" { + \repeat unfold 2 { + s1\sustainOn s1\sustainOff + } + } + >> + >> +} diff --git a/input/regression/spanner-break-beyond-parent.ly b/input/regression/spanner-break-beyond-parent.ly index 7c49de4d1f..1990838f81 100644 --- a/input/regression/spanner-break-beyond-parent.ly +++ b/input/regression/spanner-break-beyond-parent.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-bottom = ##t } diff --git a/input/regression/spanner-break-overshoot.ly b/input/regression/spanner-break-overshoot.ly index 369c3cb815..696f4fda0d 100644 --- a/input/regression/spanner-break-overshoot.ly +++ b/input/regression/spanner-break-overshoot.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The @code{break-overshoot} property sets the amount that diff --git a/input/regression/staccato-pos.ly b/input/regression/staccato-pos.ly index 8ec9e0fa55..df275a688a 100644 --- a/input/regression/staccato-pos.ly +++ b/input/regression/staccato-pos.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ diff --git a/input/regression/staff-change-autobeam.ly b/input/regression/staff-change-autobeam.ly new file mode 100644 index 0000000000..8a11a8464a --- /dev/null +++ b/input/regression/staff-change-autobeam.ly @@ -0,0 +1,14 @@ +\header { + texidoc = "Staves stay alive long enough to complete an automatic beam." +} + +\version "2.16.0" + +<< + { + g'2 g'8 g' + \change Staff = "down" + b' b' + } + \context Staff = "down" s1 +>> diff --git a/input/regression/staff-halfway.ly b/input/regression/staff-halfway.ly index 553c1f0aac..68e5e72beb 100644 --- a/input/regression/staff-halfway.ly +++ b/input/regression/staff-halfway.ly @@ -2,7 +2,7 @@ texidoc = "Staves can be started and stopped at command. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/staff-ledger-positions.ly b/input/regression/staff-ledger-positions.ly new file mode 100644 index 0000000000..ba6137e25f --- /dev/null +++ b/input/regression/staff-ledger-positions.ly @@ -0,0 +1,17 @@ +\header { + + texidoc = "The vertical positions of ledger lines may be customised +by setting the @code{ledger-positions} property of the StaffSymbol. +The given pattern is repeated. Bracketed groups are always shown together: +either all or none are shown. Ledger lines can be set to appear sooner or +later by setting the @code{ledger-extra} property." +} + +\version "2.16.0" + +\new Staff \relative c' { + \override Staff.StaffSymbol #'line-positions = #'(-5 -2 -1 2 5 6) + \override Staff.StaffSymbol #'ledger-positions = #'(-5 (-2 -1) 2) + \override Staff.StaffSymbol #'ledger-extra = #1 + g,4 c e b' c'' e g +} diff --git a/input/regression/staff-line-positions.ly b/input/regression/staff-line-positions.ly index 0b801a8744..de355e7dc0 100644 --- a/input/regression/staff-line-positions.ly +++ b/input/regression/staff-line-positions.ly @@ -6,7 +6,7 @@ } -\version "2.14.0" +\version "2.16.0" \new Staff \relative c' { diff --git a/input/regression/staff-mixed-size.ly b/input/regression/staff-mixed-size.ly index 07f0fb5638..82e34418fd 100644 --- a/input/regression/staff-mixed-size.ly +++ b/input/regression/staff-mixed-size.ly @@ -7,7 +7,7 @@ large on smaller staves." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/staff-online-symbol-absence.ly b/input/regression/staff-online-symbol-absence.ly index 6f60654502..ef3e589d04 100644 --- a/input/regression/staff-online-symbol-absence.ly +++ b/input/regression/staff-online-symbol-absence.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Symbols that need on-staffline info (like dots and ties) diff --git a/input/regression/staff-tabstaff-spacing.ly b/input/regression/staff-tabstaff-spacing.ly index b5673fc44b..cf45b98395 100644 --- a/input/regression/staff-tabstaff-spacing.ly +++ b/input/regression/staff-tabstaff-spacing.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/staff-tweak.ly b/input/regression/staff-tweak.ly index f7e525c653..0240b0d88e 100644 --- a/input/regression/staff-tweak.ly +++ b/input/regression/staff-tweak.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The staff is a grob (graphical object) which may be adjusted as well, for example, to have 6 thick lines and a slightly large @code{staff-space}. diff --git a/input/regression/stanza-number.ly b/input/regression/stanza-number.ly index 28ed6567b8..eaf7b7c936 100644 --- a/input/regression/stanza-number.ly +++ b/input/regression/stanza-number.ly @@ -1,9 +1,9 @@ -\version "2.14.0" +\version "2.16.0" -\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-cross-staff-articulation.ly b/input/regression/stem-cross-staff-articulation.ly new file mode 100644 index 0000000000..7513120744 --- /dev/null +++ b/input/regression/stem-cross-staff-articulation.ly @@ -0,0 +1,33 @@ +\version "2.16.0" + +\header { + texidoc = "Cross-staff stems avoid articulations. Articulations that don't +get in the way of stems do not cause unwanted horizontal space. +" +} + +\new GrandStaff << + \new Staff = "a" { s1 } + \new Staff = "b" { + \stemDown + \clef bass + d'8^\prall^\espressivo [\change Staff="a" g'' ] + g'' [\change Staff="b" d'8^\prall^\espressivo ] + \stemUp + f, [\change Staff="a" b8_\prall_\espressivo ] + b_\prall_\espressivo [\change Staff="b" f,8 ] + } +>> + +\new GrandStaff << + \new Staff = "a" { s1 } + \new Staff = "b" { + \stemDown + \clef bass + d'8 [\change Staff="a" g'' ] + g'' [\change Staff="b" d'8 ] + \stemUp + f, [\change Staff="a" b8 ] + b [\change Staff="b" f,8 ] + } +>> diff --git a/input/regression/stem-direction-context.ly b/input/regression/stem-direction-context.ly index 773a8801a8..76891556b3 100644 --- a/input/regression/stem-direction-context.ly +++ b/input/regression/stem-direction-context.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \relative c'' \new Voice \with { \consists "Melody_engraver" \override Stem #'neutral-direction = #'() diff --git a/input/regression/stem-direction.ly b/input/regression/stem-direction.ly index 698575e912..16af1ecc73 100644 --- a/input/regression/stem-direction.ly +++ b/input/regression/stem-direction.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/stem-length-estimation.ly b/input/regression/stem-length-estimation.ly index fd3c194d7c..d7c50ba466 100644 --- a/input/regression/stem-length-estimation.ly +++ b/input/regression/stem-length-estimation.ly @@ -1,8 +1,9 @@ -\version "2.14.0" +\version "2.16.0" \header { - texidoc = "Stems with overridden 'length should not confuse height estimation. -This example should fit snugly on one page. + texidoc = "Stems with overridden 'Y-extent should +not confuse height estimation. This example should fit snugly +on one page. " } @@ -25,7 +26,7 @@ This example should fit snugly on one page. \score { \new Voice { \voiceTwo - \override Stem #'length = #0 + \override Stem #'Y-extent = #'(0.0 . 0.0) \repeat unfold 144 a4 } \layout { diff --git a/input/regression/stem-length.ly b/input/regression/stem-length.ly new file mode 100644 index 0000000000..c8a72976f5 --- /dev/null +++ b/input/regression/stem-length.ly @@ -0,0 +1,20 @@ + +\version "2.16.0" + +\header { + texidoc = "Stem length and stem-begin-position can be set manually. +" +} + +\relative c' { + \autoBeamOff + \stemUp + a8 aes''8 + \override Stem #'length = #20 + a,,8 + \revert Stem #'length + aes''!8 + \stemNeutral + \override Stem #'stem-begin-position = #-2 + c,8 +} diff --git a/input/regression/stem-pure-height-beamed.ly b/input/regression/stem-pure-height-beamed.ly new file mode 100644 index 0000000000..619bb1ee9f --- /dev/null +++ b/input/regression/stem-pure-height-beamed.ly @@ -0,0 +1,13 @@ +\version "2.16.0" + +\header { + texidoc = "Lilypond gets beamed stem pure heights correct +to avoid outside staff collisions. +" +} + +{ + \stemUp + gis''8 a bes'' a + bes''! a bes''! a +} diff --git a/input/regression/stem-shorten.ly b/input/regression/stem-shorten.ly index 074012b4d5..2063b84cdf 100644 --- a/input/regression/stem-shorten.ly +++ b/input/regression/stem-shorten.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/stem-stemlet-whole.ly b/input/regression/stem-stemlet-whole.ly index eff15d8a2f..ff835d7d80 100644 --- a/input/regression/stem-stemlet-whole.ly +++ b/input/regression/stem-stemlet-whole.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Stemlets don't cause stems on whole notes." } diff --git a/input/regression/stem-stemlet.ly b/input/regression/stem-stemlet.ly index 5c6e50481b..caf7240d52 100644 --- a/input/regression/stem-stemlet.ly +++ b/input/regression/stem-stemlet.ly @@ -5,7 +5,7 @@ length can be set with @code{stemlet-length}." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } \relative c' { diff --git a/input/regression/stem-tremolo-forced-dir.ly b/input/regression/stem-tremolo-forced-dir.ly index ba60b84ba2..361f21752c 100644 --- a/input/regression/stem-tremolo-forced-dir.ly +++ b/input/regression/stem-tremolo-forced-dir.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Tremolo works even when a stem is forced in a diff --git a/input/regression/stem-tremolo-note-column.ly b/input/regression/stem-tremolo-note-column.ly new file mode 100644 index 0000000000..6848dd26e7 --- /dev/null +++ b/input/regression/stem-tremolo-note-column.ly @@ -0,0 +1,12 @@ +\version "2.16.0" +\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/stem-tremolo-position.ly b/input/regression/stem-tremolo-position.ly index c7215c722a..538b5133b9 100644 --- a/input/regression/stem-tremolo-position.ly +++ b/input/regression/stem-tremolo-position.ly @@ -5,7 +5,7 @@ tilted extra on stem-down notes with a flag." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##T } diff --git a/input/regression/stem-tremolo-staff-space.ly b/input/regression/stem-tremolo-staff-space.ly index b551e11c93..2194434559 100644 --- a/input/regression/stem-tremolo-staff-space.ly +++ b/input/regression/stem-tremolo-staff-space.ly @@ -4,7 +4,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/stem-tremolo.ly b/input/regression/stem-tremolo.ly index 166ebbceb6..b692c38922 100644 --- a/input/regression/stem-tremolo.ly +++ b/input/regression/stem-tremolo.ly @@ -1,5 +1,9 @@ +\version "2.16.0" + +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "tremolo duration is too long")) +#(ly:expect-warning (_ "tremolo duration is too long")) -\version "2.14.0" \header{ texidoc=" Stem tremolos or rolls are tremolo signs that look like beam segments @@ -12,16 +16,19 @@ and tilted extra if the stem is down. The tremolos should be positioned a fixed distance from the end of the stems unless there is no stem, in which case they should be positioned a fixed distance from the note head. + +If an impossible tremolo duration (e.g. :4) is given, a warning is +printed. " } - - \context Voice \relative c''{ \textSpannerUp \override TextScript #'padding = #5 + % The following note should print a warning (quarter tremolo cannot be notated) a1:4^":4" a:8^":8" c:16^":16" a:32^":32" a^"x" a:^":" a':32 a,,:32 + % The following note should print a warning (quarter tremolo cannot be notated) a'4:4 c:8 a:16 c:32 a a: a2: \break \stemUp diff --git a/input/regression/stencil-color-rotation.ly b/input/regression/stencil-color-rotation.ly index 9f4191dfd6..788a2cd445 100644 --- a/input/regression/stencil-color-rotation.ly +++ b/input/regression/stencil-color-rotation.ly @@ -2,7 +2,7 @@ texidoc = "Combinations of rotation and color do work." } -\version "2.14.0" +\version "2.16.0" \relative c'{ \override Hairpin #'rotation = #'(20 -1 0) \override Hairpin #'color = #(x11-color 'LimeGreen) diff --git a/input/regression/stencil-hacking.ly b/input/regression/stencil-hacking.ly index 304c3461df..dc5bf9ed6a 100644 --- a/input/regression/stencil-hacking.ly +++ b/input/regression/stencil-hacking.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" You can write stencil callbacks in Scheme, thus providing custom glyphs for notation elements. A simple example is diff --git a/input/regression/stencil-scale.ly b/input/regression/stencil-scale.ly index 7d564050e5..fb75e14c60 100644 --- a/input/regression/stencil-scale.ly +++ b/input/regression/stencil-scale.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Stencils can be scaled using @code{ly:stencil-scale}. diff --git a/input/regression/string-number-around-slur.ly b/input/regression/string-number-around-slur.ly index 0e48e0f878..a8938b1f09 100644 --- a/input/regression/string-number-around-slur.ly +++ b/input/regression/string-number-around-slur.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "String numbers should only be moved outside slurs when there @@ -7,6 +7,6 @@ is a collision." \relative c'' { \textLengthOn - 4-"inside"( d' -"inside" g + 4-"outside"( d' -"inside" g 1-"outside") } diff --git a/input/regression/string-number.ly b/input/regression/string-number.ly index 106c5a93c7..76243ba684 100644 --- a/input/regression/string-number.ly +++ b/input/regression/string-number.ly @@ -4,7 +4,7 @@ positioning mechanism as finger instructions." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/system-extents.ly b/input/regression/system-extents.ly index 47b183e5f5..e0ba0dcf79 100644 --- a/input/regression/system-extents.ly +++ b/input/regression/system-extents.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The size of every system is correctly determined; this diff --git a/input/regression/system-overstrike.ly b/input/regression/system-overstrike.ly index 18a5b0051c..d48ccae6cd 100644 --- a/input/regression/system-overstrike.ly +++ b/input/regression/system-overstrike.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "By setting the padding between systems to a negative diff --git a/input/regression/system-separator-spaceable-staves.ly b/input/regression/system-separator-spaceable-staves.ly index de2a1aad97..bab3ea3469 100644 --- a/input/regression/system-separator-spaceable-staves.ly +++ b/input/regression/system-separator-spaceable-staves.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "System separator positioning works with all spaceable diff --git a/input/regression/system-separator.ly b/input/regression/system-separator.ly index 4082b80a58..52b4f398ba 100644 --- a/input/regression/system-separator.ly +++ b/input/regression/system-separator.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "System separators may be defined as markups in the diff --git a/input/regression/system-start-bar-collapse-staffspace.ly b/input/regression/system-start-bar-collapse-staffspace.ly new file mode 100644 index 0000000000..165dfd1aa0 --- /dev/null +++ b/input/regression/system-start-bar-collapse-staffspace.ly @@ -0,0 +1,12 @@ +\version "2.16.0" + +\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/system-start-bracket.ly b/input/regression/system-start-bracket.ly index 6b04bdaff8..3373d915c3 100644 --- a/input/regression/system-start-bracket.ly +++ b/input/regression/system-start-bracket.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A piano context included within a staff group should cause the piano brace to be drawn to the left of the staff angle diff --git a/input/regression/system-start-heavy-bar.ly b/input/regression/system-start-heavy-bar.ly index d0499a7e55..cded6cb372 100644 --- a/input/regression/system-start-heavy-bar.ly +++ b/input/regression/system-start-heavy-bar.ly @@ -1,7 +1,7 @@ \header { texidoc = "A heavy-bar system start delimiter may be created by tuning the @code{SystemStartBar} grob." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/system-start-nesting.ly b/input/regression/system-start-nesting.ly index 301abd1084..d637b667f4 100644 --- a/input/regression/system-start-nesting.ly +++ b/input/regression/system-start-nesting.ly @@ -2,7 +2,7 @@ created with the @code{systemStartDelimiterHierarchy} property." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/tablature-banjo.ly b/input/regression/tablature-banjo.ly index 75f68bd0a8..5a7a5b65d4 100644 --- a/input/regression/tablature-banjo.ly +++ b/input/regression/tablature-banjo.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/tablature-chord-repetition-finger.ly b/input/regression/tablature-chord-repetition-finger.ly new file mode 100644 index 0000000000..27b68dbaca --- /dev/null +++ b/input/regression/tablature-chord-repetition-finger.ly @@ -0,0 +1,28 @@ +\version "2.16.0" + +\header { + texidoc = "In a TabStaff, the chord repetition function needs +to retain string and fingering information. Using +@code{\\tabChordRepeats} achieves that, in contrast to the music +on the main staff." +} + +Guitar = \relative c' { + r8 < gis-6 cis-6 b-0 > ~ q4 q8 ~ q q4 +} + +\score { + \new StaffGroup << + \new Staff { + \new Voice { + \clef "treble_8" + \Guitar + } + } + \new TabStaff { + \new TabVoice { + \tabChordRepeats \Guitar + } + } + >> +} diff --git a/input/regression/tablature-chord-repetition.ly b/input/regression/tablature-chord-repetition.ly index e89b1c52f1..01c93ff777 100644 --- a/input/regression/tablature-chord-repetition.ly +++ b/input/regression/tablature-chord-repetition.ly @@ -1,9 +1,11 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In a TabStaff, the chord repetition function needs -to save the string information. This is handled by -@code{\\tabChordRepetition}." +to save the string information. The obsolete function +@code{\\tabChordRepetition} establishes this setting score-wide. +Nowadays, you would rather use just @code{\\tabChordRepeat} on the +music in the tabstaff, not affecting other contexts." } \tabChordRepetition diff --git a/input/regression/tablature-default-strings.ly b/input/regression/tablature-default-strings.ly index 674ad96152..605b1af353 100644 --- a/input/regression/tablature-default-strings.ly +++ b/input/regression/tablature-default-strings.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/tablature-dot-placement.ly b/input/regression/tablature-dot-placement.ly index 8554a7057e..a7d3afc09f 100644 --- a/input/regression/tablature-dot-placement.ly +++ b/input/regression/tablature-dot-placement.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/tablature-double-stem-tremolo.ly b/input/regression/tablature-double-stem-tremolo.ly new file mode 100644 index 0000000000..7ddd227642 --- /dev/null +++ b/input/regression/tablature-double-stem-tremolo.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\header { + texidoc = "Tremoli applied to double stems in a @code{TabVoice} +should be centered on the double stem. +" +} +\new TabVoice \relative c' { + \tabFullNotation + a2:32 +} \ No newline at end of file diff --git a/input/regression/tablature-fretboard-open-string.ly b/input/regression/tablature-fretboard-open-string.ly index 63a559e04d..5aba45c881 100644 --- a/input/regression/tablature-fretboard-open-string.ly +++ b/input/regression/tablature-fretboard-open-string.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = diff --git a/input/regression/tablature-full-notation.ly b/input/regression/tablature-full-notation.ly index 8e31540b88..2fbe808836 100644 --- a/input/regression/tablature-full-notation.ly +++ b/input/regression/tablature-full-notation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "As default, tablature staves show only the fret numbers, because in most situations, they are combined with normal staves. @@ -13,9 +13,8 @@ tabstuff = { f4\f g a^\fermata | R2.*3 | c8\<\( c16 c ~ c2\! | - c'2.\) | \mark \default - R2. | + c'2.\) | \ottava #1 r4 d'4 r8 e | \ottava #0 diff --git a/input/regression/tablature-glissando.ly b/input/regression/tablature-glissando.ly index bcfbcaf52d..1d96ac09f7 100644 --- a/input/regression/tablature-glissando.ly +++ b/input/regression/tablature-glissando.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Glissando lines in tablature have the right slope." } diff --git a/input/regression/tablature-grace-notes.ly b/input/regression/tablature-grace-notes.ly index 99561d531e..a09ba83998 100644 --- a/input/regression/tablature-grace-notes.ly +++ b/input/regression/tablature-grace-notes.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "Fret numbers belonging to grace notes are smaller." } diff --git a/input/regression/tablature-harmonic-functions.ly b/input/regression/tablature-harmonic-functions.ly index c09624bbc7..aa1123aacf 100644 --- a/input/regression/tablature-harmonic-functions.ly +++ b/input/regression/tablature-harmonic-functions.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " @@ -35,9 +35,8 @@ test = { \score { << \new Staff { - \new Voice { + \new Voice \with { \override StringNumber #'stencil = ##f } { \clef "treble_8" - \override Voice.StringNumber #'transparent = ##t \test } } diff --git a/input/regression/tablature-harmonic-tie.ly b/input/regression/tablature-harmonic-tie.ly index 6ec2d473c7..5160684568 100644 --- a/input/regression/tablature-harmonic-tie.ly +++ b/input/regression/tablature-harmonic-tie.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/tablature-harmonic.ly b/input/regression/tablature-harmonic.ly index 71a531071b..139ca26c48 100644 --- a/input/regression/tablature-harmonic.ly +++ b/input/regression/tablature-harmonic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Harmonics get angled brackets in tablature. diff --git a/input/regression/tablature-letter.ly b/input/regression/tablature-letter.ly index 3fc098e8d8..2431769f91 100644 --- a/input/regression/tablature-letter.ly +++ b/input/regression/tablature-letter.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " @@ -16,25 +16,20 @@ if the length is too short. notes = \relative c' { \time 3/4 4. 8 4 - \set fretLabels = #`("a" "b" ,(markup #:italic #:smaller "c")) + \set fretLabels = \markuplist {"a" "b" \italic \smaller "c"} 4. 8 4 - \set fretLabels = #`(,(markup #:with-color red "a") + \set fretLabels = \markuplist {\with-color #red "a" "b" - ,(markup #:italic #:smaller "c")) + \italic \smaller "c"} 4. 8 4 - \set fretLabels = #'("α" "β" "γ") + \set fretLabels = \markuplist {"α" "β" "γ"} 4. 8 4 } \score { \new TabStaff \with { - stringTunings = #`(,(ly:make-pitch 1 3 0) - ,(ly:make-pitch 1 1 0) - ,(ly:make-pitch 0 5 0) - ,(ly:make-pitch 0 3 0) - ,(ly:make-pitch 0 1 0) - ,(ly:make-pitch -1 5 0)) + stringTunings = \stringTuning \notemode { } tablatureFormat = #fret-letter-tablature-format } \new TabVoice { diff --git a/input/regression/tablature-negative-fret.ly b/input/regression/tablature-negative-fret.ly index fd7b7cea2e..92a35fc09f 100644 --- a/input/regression/tablature-negative-fret.ly +++ b/input/regression/tablature-negative-fret.ly @@ -1,4 +1,14 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "Requested string for pitch requires negative fret: string ~a pitch ~a") 1 "#") +#(ly:expect-warning (_ "Ignoring string request and recalculating.")) +#(ly:expect-warning (_ "Negative fret for pitch ~a on string ~a") "#" 1) +#(ly:expect-warning (_ "Requested string for pitch requires negative fret: string ~a pitch ~a") 1 "#") +#(ly:expect-warning (_ "Ignoring note in tablature.")) + + + +% #(ly:expect-warning (ly:translate-cpp-warning-scheme "Markup depth exceeds maximal value of %d; Markup: %s") 1024 "recursive-explosion-markup") \header { diff --git a/input/regression/tablature-open-string-chord.ly b/input/regression/tablature-open-string-chord.ly new file mode 100644 index 0000000000..fbbe578111 --- /dev/null +++ b/input/regression/tablature-open-string-chord.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\header { + + texidoc = " +Open strings can always be part of a chord in tablature, even when frets +above 4 have been used in the chord. In this case, both chords should show +an open fourth string." + +} + +\score { + \new TabStaff { + \set TabStaff.stringTunings = \stringTuning + 1 1 + } +} diff --git a/input/regression/tablature-open-string-handling.ly b/input/regression/tablature-open-string-handling.ly new file mode 100644 index 0000000000..996bcaf201 --- /dev/null +++ b/input/regression/tablature-open-string-handling.ly @@ -0,0 +1,18 @@ +\version "2.16.0" + +\header { + + texidoc = " + Open strings are part of a chord in tablature, even when @code{minimumFret} is set. + This can be changed via @code{restrainOpenStrings}." + +} + +\score { + \new TabStaff { + \set TabStaff.minimumFret = #3 + < g, d >1 + \set TabStaff.restrainOpenStrings = ##t + < g, d >1 + } +} diff --git a/input/regression/tablature-slide.ly b/input/regression/tablature-slide.ly index 9dddd63e6b..295d882e93 100644 --- a/input/regression/tablature-slide.ly +++ b/input/regression/tablature-slide.ly @@ -4,7 +4,7 @@ texidoc = "Tab supports slides." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##T } diff --git a/input/regression/tablature-string-tunings.ly b/input/regression/tablature-string-tunings.ly index 0808e8d565..c38ae9e633 100644 --- a/input/regression/tablature-string-tunings.ly +++ b/input/regression/tablature-string-tunings.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { @@ -10,10 +10,7 @@ \new TabStaff { - \set TabStaff.stringTunings = #`(,(ly:make-pitch 0 3 0) - ,(ly:make-pitch 0 5 SHARP) - ,(ly:make-pitch 1 1 SHARP) - ,(ly:make-pitch 1 4 SHARP)) + \set TabStaff.stringTunings = \stringTuning \relative c'' { c4 d e f } } diff --git a/input/regression/tablature-tie-behaviour.ly b/input/regression/tablature-tie-behaviour.ly index e3f54916e8..9b32989b6f 100644 --- a/input/regression/tablature-tie-behaviour.ly +++ b/input/regression/tablature-tie-behaviour.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "In tablature, notes that are tied to are invisible except after a line break or within a second volta; diff --git a/input/regression/tablature-tie-spanner.ly b/input/regression/tablature-tie-spanner.ly index bdcf14c91e..fd3346d7b8 100644 --- a/input/regression/tablature-tie-spanner.ly +++ b/input/regression/tablature-tie-spanner.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/tablature-tremolo.ly b/input/regression/tablature-tremolo.ly index 23593b503e..5b1dc452ab 100644 --- a/input/regression/tablature-tremolo.ly +++ b/input/regression/tablature-tremolo.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/tablature-zero-finger.ly b/input/regression/tablature-zero-finger.ly index 89db7ab1aa..f201799d8a 100644 --- a/input/regression/tablature-zero-finger.ly +++ b/input/regression/tablature-zero-finger.ly @@ -1,4 +1,6 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "No open string for pitch ~a") "#") \header { texidoc=" diff --git a/input/regression/tablature.ly b/input/regression/tablature.ly index baf6236308..8a2616fc78 100644 --- a/input/regression/tablature.ly +++ b/input/regression/tablature.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc = "@cindex Tabulature A sample tablature, with both normal staff and tab. diff --git a/input/regression/tag-filter.ly b/input/regression/tag-filter.ly index 324416642b..f5131fe0af 100644 --- a/input/regression/tag-filter.ly +++ b/input/regression/tag-filter.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The @code{\\tag} command marks music expressions with a diff --git a/input/regression/test-output-distance.ly b/input/regression/test-output-distance.ly index 3c32147b58..6ea91213b7 100644 --- a/input/regression/test-output-distance.ly +++ b/input/regression/test-output-distance.ly @@ -5,7 +5,7 @@ it should always show up in the output-distance testing. " } -\version "2.14.0" +\version "2.16.0" #(define time (gettimeofday)) diff --git a/input/regression/text-spanner-attachment-alignment.ly b/input/regression/text-spanner-attachment-alignment.ly index 4391527ec7..4060ef4c56 100644 --- a/input/regression/text-spanner-attachment-alignment.ly +++ b/input/regression/text-spanner-attachment-alignment.ly @@ -9,7 +9,7 @@ ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" << \new Staff { \override TextSpanner #'(bound-details left text) = "*" diff --git a/input/regression/text-spanner-full-rest.ly b/input/regression/text-spanner-full-rest.ly index e7d1054d7b..92e44cc121 100644 --- a/input/regression/text-spanner-full-rest.ly +++ b/input/regression/text-spanner-full-rest.ly @@ -1,12 +1,13 @@ -\version "2.14.2" +\version "2.16.0" \header { - texidoc = "Text spanners ending on full-measure rests do -not stop prematurely on preceding note heads." + texidoc = "Text spanners ending on, or broken across, full-measure +rests extend to the rests, or over the rests, as appropriate." } +\layout { ragged-right = ##t } + \relative c'' { - a1\startTextSpan - b1 - R1\stopTextSpan + a1\startTextSpan b1 R1 \break + \tempo "tempo" R1 a1 b1 R1\stopTextSpan } diff --git a/input/regression/text-spanner-override-order.ly b/input/regression/text-spanner-override-order.ly index f253832ab0..9df1e12c69 100644 --- a/input/regression/text-spanner-override-order.ly +++ b/input/regression/text-spanner-override-order.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" sample = \relative c'' { c2\startTextSpan c2 \break diff --git a/input/regression/text-spanner.ly b/input/regression/text-spanner.ly index 287099354e..ae56d940df 100644 --- a/input/regression/text-spanner.ly +++ b/input/regression/text-spanner.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc= "Text spanners should not repeat start text when broken." } diff --git a/input/regression/tie-accidental.ly b/input/regression/tie-accidental.ly index 2f9c3bb2d6..fb00bbd844 100644 --- a/input/regression/tie-accidental.ly +++ b/input/regression/tie-accidental.ly @@ -4,7 +4,7 @@ " } -\version "2.14.0" +\version "2.16.0" \paper { debug-tie-scoring = ##t diff --git a/input/regression/tie-arpeggio-collision.ly b/input/regression/tie-arpeggio-collision.ly index 8788604fc3..7f433605de 100644 --- a/input/regression/tie-arpeggio-collision.ly +++ b/input/regression/tie-arpeggio-collision.ly @@ -8,7 +8,7 @@ unarpegiated case." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t } diff --git a/input/regression/tie-arpeggio.ly b/input/regression/tie-arpeggio.ly index 6c31362363..f37269d544 100644 --- a/input/regression/tie-arpeggio.ly +++ b/input/regression/tie-arpeggio.ly @@ -1,16 +1,18 @@ +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "unterminated tie")) +#(ly:expect-warning (_ "unterminated tie")) + \header { texidoc = - "when @code{tieWaitForNote} is set, the right-tied note does not have to follow the lef-tied note directly. When @code{tieWaitForNote} is set to false, any tie will erase all pending ties." } -\version "2.14.0" - \paper { ragged-right = ##t } \relative c' { c~ e~ g~ diff --git a/input/regression/tie-broken-minimum-length.ly b/input/regression/tie-broken-minimum-length.ly index d11ea4505b..5157e69b62 100644 --- a/input/regression/tie-broken-minimum-length.ly +++ b/input/regression/tie-broken-minimum-length.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/tie-broken-other-staff.ly b/input/regression/tie-broken-other-staff.ly index f92810fe06..10f2ed0650 100644 --- a/input/regression/tie-broken-other-staff.ly +++ b/input/regression/tie-broken-other-staff.ly @@ -3,7 +3,7 @@ in other staves." } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/tie-broken.ly b/input/regression/tie-broken.ly index 552af677b9..b444e23650 100644 --- a/input/regression/tie-broken.ly +++ b/input/regression/tie-broken.ly @@ -3,7 +3,7 @@ texidoc = "Ties behave properly at line breaks." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } diff --git a/input/regression/tie-chord-broken-extremal.ly b/input/regression/tie-chord-broken-extremal.ly index c2a5dcabd7..5c209bbecf 100644 --- a/input/regression/tie-chord-broken-extremal.ly +++ b/input/regression/tie-chord-broken-extremal.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/tie-chord-debug.ly b/input/regression/tie-chord-debug.ly index 7226a6a5e5..db69ea9485 100644 --- a/input/regression/tie-chord-debug.ly +++ b/input/regression/tie-chord-debug.ly @@ -5,7 +5,7 @@ decisions made." } -\version "2.14.0" +\version "2.16.0" \paper { diff --git a/input/regression/tie-chord-partial.ly b/input/regression/tie-chord-partial.ly index ee8fa529c6..e131b25479 100644 --- a/input/regression/tie-chord-partial.ly +++ b/input/regression/tie-chord-partial.ly @@ -2,7 +2,7 @@ { texidoc = "Individual chord notes can also be tied" } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/tie-chord.ly b/input/regression/tie-chord.ly index f4e973dc69..d830bd01a9 100644 --- a/input/regression/tie-chord.ly +++ b/input/regression/tie-chord.ly @@ -1,19 +1,17 @@ \header { - texidoc = "In chords, ties keep closer to the note head vertically, -but never collide with heads or stems. Seconds are formatted up/down; +but never collide with heads or stems. Seconds are formatted up/@/down; the rest of the ties are positioned according to their vertical position. -The code does not handle all cases. Sometimes ties will printed on top -of or very close to each other. This happens in the last chords of -each system. " - +The code does not handle all cases. Sometimes ties will printed on top +of or very close to each other. This happens in the last chords of +each system." } -\version "2.14.0" +\version "2.16.0" \paper { indent = #0.0 diff --git a/input/regression/tie-dash.ly b/input/regression/tie-dash.ly index 4913ae0bfa..82b34a194a 100644 --- a/input/regression/tie-dash.ly +++ b/input/regression/tie-dash.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header {texidoc = "@cindex Tie, dotted, dashed The appearance of ties may be changed from solid to dotted or dashed. " diff --git a/input/regression/tie-direction-broken.ly b/input/regression/tie-direction-broken.ly index e87b510310..d1260ecc1e 100644 --- a/input/regression/tie-direction-broken.ly +++ b/input/regression/tie-direction-broken.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/tie-direction-manual.ly b/input/regression/tie-direction-manual.ly index fb09db7cf0..ba29a6ead5 100644 --- a/input/regression/tie-direction-manual.ly +++ b/input/regression/tie-direction-manual.ly @@ -4,7 +4,7 @@ This makes correction in complex chords easier." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right= ##t diff --git a/input/regression/tie-dot.ly b/input/regression/tie-dot.ly index 070009e96b..f595dc582e 100644 --- a/input/regression/tie-dot.ly +++ b/input/regression/tie-dot.ly @@ -3,7 +3,7 @@ texidoc = "Ties avoid collisions with dots." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##T } diff --git a/input/regression/tie-grace.ly b/input/regression/tie-grace.ly index 9351ef89d4..3aa59a21e1 100644 --- a/input/regression/tie-grace.ly +++ b/input/regression/tie-grace.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Tying a grace to a following grace or main note works." } diff --git a/input/regression/tie-manual-vertical-tune.ly b/input/regression/tie-manual-vertical-tune.ly index 7b6c58edfd..9442bd3b20 100644 --- a/input/regression/tie-manual-vertical-tune.ly +++ b/input/regression/tie-manual-vertical-tune.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If using integers, the tie will vertically tuned for diff --git a/input/regression/tie-manual.ly b/input/regression/tie-manual.ly index 1a2c128c57..b7720bf78b 100644 --- a/input/regression/tie-manual.ly +++ b/input/regression/tie-manual.ly @@ -11,7 +11,7 @@ You can leave a Tie alone by introducing a non-pair value } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##t diff --git a/input/regression/tie-pitched-trill.ly b/input/regression/tie-pitched-trill.ly index 636cdfe498..79604891bf 100644 --- a/input/regression/tie-pitched-trill.ly +++ b/input/regression/tie-pitched-trill.ly @@ -1,7 +1,7 @@ -\version "2.14.2" +\version "2.16.0" \header { - texidoc = "The pitch of a pitched trill should not trigger a warning for + texidoc = "The pitch of a pitched trill should not trigger a warning for unterminated ties." } diff --git a/input/regression/tie-semi-single.ly b/input/regression/tie-semi-single.ly index f666db35e8..421dd11912 100644 --- a/input/regression/tie-semi-single.ly +++ b/input/regression/tie-semi-single.ly @@ -4,11 +4,11 @@ texidoc = "Like normal ties, single semities (LaissezVibrerTie or RepeatTie) get their direction from the stem direction, and may be -tweaked with @code{#'direction}." +tweaked with @code{'direction}." } -\version "2.14.0" +\version "2.16.0" \layout{ragged-right=##t} { diff --git a/input/regression/tie-single-chord.ly b/input/regression/tie-single-chord.ly index 9d35d3a1db..7997e39ec4 100644 --- a/input/regression/tie-single-chord.ly +++ b/input/regression/tie-single-chord.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { diff --git a/input/regression/tie-single-manual.ly b/input/regression/tie-single-manual.ly index 5859b488a6..24679f4268 100644 --- a/input/regression/tie-single-manual.ly +++ b/input/regression/tie-single-manual.ly @@ -1,11 +1,11 @@ \header { texidoc = "Individual ties may be formatted manually by -specifying their @code{direction} and/or @code{staff-position}." +specifying their @code{direction} and/@/or @code{staff-position}." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/tie-single.ly b/input/regression/tie-single.ly index 899c927b4c..7dcea62066 100644 --- a/input/regression/tie-single.ly +++ b/input/regression/tie-single.ly @@ -11,7 +11,7 @@ @item short ties are vertically centered in the space, as well those that otherwise don't fit in a space -@item extremely short ties are put over the noteheads, instead of inbetween. +@item extremely short ties are put over the noteheads, instead of between. @end itemize " @@ -22,7 +22,7 @@ that otherwise don't fit in a space ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" frag = \relative c'' { diff --git a/input/regression/tie-unterminated.ly b/input/regression/tie-unterminated.ly index 26b5559d8a..8e66e8a2a4 100644 --- a/input/regression/tie-unterminated.ly +++ b/input/regression/tie-unterminated.ly @@ -1,5 +1,6 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "unterminated tie")) \header { texidoc = "When a tie is followed only by unmatching notes and the tie cannot diff --git a/input/regression/tie-whole.ly b/input/regression/tie-whole.ly index 4c684dac7e..1b9dd8411e 100644 --- a/input/regression/tie-whole.ly +++ b/input/regression/tie-whole.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \relative diff --git a/input/regression/time-signature-settings-by-staff.ly b/input/regression/time-signature-settings-by-staff.ly index b5ddc6f818..ad6dec591f 100644 --- a/input/regression/time-signature-settings-by-staff.ly +++ b/input/regression/time-signature-settings-by-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " @@ -13,8 +13,8 @@ should be beamed 3/4, 1/4. The lower staff should be beamed 1/4, 3/4. \new StaffGroup << \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(3 1) % beatStructure #'() % beamExceptions \time 4/4 @@ -22,8 +22,8 @@ should be beamed 3/4, 1/4. The lower staff should be beamed 1/4, 3/4. } \new Staff { \overrideTimeSignatureSettings - #'(4 . 4) % timeSignatureFraction - #'(1 . 4) % baseMomentFraction + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction #'(1 3) % beatStructure #'() % beamExceptions \time 4/4 diff --git a/input/regression/to-xml.ly b/input/regression/to-xml.ly index 2ade5476e3..40c2722568 100644 --- a/input/regression/to-xml.ly +++ b/input/regression/to-xml.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" testMusic = { << c''4 \\ g'4 >> } diff --git a/input/regression/toc.ly b/input/regression/toc.ly index c16018afbb..933d1f313b 100644 --- a/input/regression/toc.ly +++ b/input/regression/toc.ly @@ -1,8 +1,8 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "A table of contents is included using -@code{\\markuplines \\table-of-contents}. The toc items are added with +@code{\\markuplist \\table-of-contents}. The toc items are added with the @code{\\tocItem} command. In the PDF backend, the toc items are linked to the corresponding pages." } @@ -10,7 +10,7 @@ to the corresponding pages." #(set-default-paper-size "a6") \book { - \markuplines \table-of-contents + \markuplist \table-of-contents \pageBreak \tocItem \markup "The first score" @@ -27,4 +27,4 @@ to the corresponding pages." { e' } \header { piece = "Second score" } } -} \ No newline at end of file +} diff --git a/input/regression/trill-spanner-auto-stop.ly b/input/regression/trill-spanner-auto-stop.ly index a9733a2d0a..22bee2755c 100644 --- a/input/regression/trill-spanner-auto-stop.ly +++ b/input/regression/trill-spanner-auto-stop.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Consecutive trill spans work without explicit @code{\\stopTrillSpan} commands, since successive trill spanners diff --git a/input/regression/trill-spanner-broken.ly b/input/regression/trill-spanner-broken.ly index 34b0c8f79c..efeb672a76 100644 --- a/input/regression/trill-spanner-broken.ly +++ b/input/regression/trill-spanner-broken.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/trill-spanner-chained.ly b/input/regression/trill-spanner-chained.ly index 59ebc0cac3..49d3a8052d 100644 --- a/input/regression/trill-spanner-chained.ly +++ b/input/regression/trill-spanner-chained.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Chained trills end at the next trill or barline. Collisions can be prevented by overriding @code{bound-details}. diff --git a/input/regression/trill-spanner-grace.ly b/input/regression/trill-spanner-grace.ly index cf75670f1a..ae0ff5a4a2 100644 --- a/input/regression/trill-spanner-grace.ly +++ b/input/regression/trill-spanner-grace.ly @@ -2,7 +2,7 @@ texidoc = "Trill spanner can end on a grace note" } -\version "2.14.0" +\version "2.16.0" \layout { ragged-right = ##T } diff --git a/input/regression/trill-spanner-pitched-consecutive.ly b/input/regression/trill-spanner-pitched-consecutive.ly index 3480435b25..db62e87f86 100644 --- a/input/regression/trill-spanner-pitched-consecutive.ly +++ b/input/regression/trill-spanner-pitched-consecutive.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Pitched trills on consecutive notes with the same diff --git a/input/regression/trill-spanner-pitched-forced.ly b/input/regression/trill-spanner-pitched-forced.ly index 7d3a9f4cd2..a419da9426 100644 --- a/input/regression/trill-spanner-pitched-forced.ly +++ b/input/regression/trill-spanner-pitched-forced.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Pitched trill accidentals can be forced." diff --git a/input/regression/trill-spanner-pitched.ly b/input/regression/trill-spanner-pitched.ly index 31ea764129..51d84f5b1c 100644 --- a/input/regression/trill-spanner-pitched.ly +++ b/input/regression/trill-spanner-pitched.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { diff --git a/input/regression/trill-spanner-scaled.ly b/input/regression/trill-spanner-scaled.ly index 7c50c65579..3cdc11bc51 100644 --- a/input/regression/trill-spanner-scaled.ly +++ b/input/regression/trill-spanner-scaled.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = " diff --git a/input/regression/trill-spanner.ly b/input/regression/trill-spanner.ly index b9dd36d968..c56ab05480 100644 --- a/input/regression/trill-spanner.ly +++ b/input/regression/trill-spanner.ly @@ -5,7 +5,7 @@ the wavy line should appear to come from the crook of the r" } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t } \relative c'' { c1\startTrillSpan diff --git a/input/regression/tuplet-beam.ly b/input/regression/tuplet-beam.ly index caef660f53..e65cbd8d95 100644 --- a/input/regression/tuplet-beam.ly +++ b/input/regression/tuplet-beam.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "In combination with a beam, the bracket of the tuplet diff --git a/input/regression/tuplet-bracket-avoid-fingering.ly b/input/regression/tuplet-bracket-avoid-fingering.ly new file mode 100644 index 0000000000..da2167cf1c --- /dev/null +++ b/input/regression/tuplet-bracket-avoid-fingering.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\header { + texidoc = "@code{TupletBracket} grobs avoid @code{Fingering} grobs. +" +} + +\relative d'' { + \override TupletBracket #'direction = #UP + \times 2/3 { d4 a8-4 } +} diff --git a/input/regression/tuplet-bracket-avoid-scripts.ly b/input/regression/tuplet-bracket-avoid-scripts.ly new file mode 100644 index 0000000000..8df61c5950 --- /dev/null +++ b/input/regression/tuplet-bracket-avoid-scripts.ly @@ -0,0 +1,10 @@ +\version "2.16.0" + +\header { + texidoc = "Tuplet brackets avoid scripts by default. +" +} + +\relative c'' { + \times 2/3 { a8^\espressivo r a^\espressivo } +} diff --git a/input/regression/tuplet-bracket-avoid-string-number.ly b/input/regression/tuplet-bracket-avoid-string-number.ly new file mode 100644 index 0000000000..0553472d6a --- /dev/null +++ b/input/regression/tuplet-bracket-avoid-string-number.ly @@ -0,0 +1,11 @@ +\version "2.16.0" + +\header { + texidoc = "@code{TupletBracket} grobs avoid @code{StringNumber} grobs. +" +} + +\relative d'' { + \override TupletBracket #'direction = #UP + \times 2/3 { d4 8 } +} diff --git a/input/regression/tuplet-bracket-cross-staff.ly b/input/regression/tuplet-bracket-cross-staff.ly index f94bccd404..5fb976ed58 100644 --- a/input/regression/tuplet-bracket-cross-staff.ly +++ b/input/regression/tuplet-bracket-cross-staff.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/tuplet-bracket-direction.ly b/input/regression/tuplet-bracket-direction.ly new file mode 100644 index 0000000000..ea8c1ea752 --- /dev/null +++ b/input/regression/tuplet-bracket-direction.ly @@ -0,0 +1,20 @@ +\version "2.16.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 index 0000000000..46204a8efe --- /dev/null +++ b/input/regression/tuplet-bracket-outside-staff-priority.ly @@ -0,0 +1,22 @@ +\version "2.16.0" +\header { + + texidoc = "Tuplet brackets' outside staff priority can be +set. Brackets, by default, carry their numbers with them." + +} + +\relative c'' { + \override TupletBracket #'avoid-scripts = ##f + % 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-bracket-visibility.ly b/input/regression/tuplet-bracket-visibility.ly index 94827649b6..adac9915b6 100644 --- a/input/regression/tuplet-bracket-visibility.ly +++ b/input/regression/tuplet-bracket-visibility.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "The default behavior of tuplet-bracket visibility is to print a bracket @@ -14,7 +14,7 @@ unless there is a beam of the same length as the tuplet. Overriding @code{#f} (never print a bracket) @item -@code{#'if-no-beam} (only print a bracket if there is no beam) +@code{'if-no-beam} (only print a bracket if there is no beam) @end itemize " diff --git a/input/regression/tuplet-broken.ly b/input/regression/tuplet-broken.ly index 365e205631..172d28cabc 100644 --- a/input/regression/tuplet-broken.ly +++ b/input/regression/tuplet-broken.ly @@ -8,7 +8,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t diff --git a/input/regression/tuplet-full-length-extent.ly b/input/regression/tuplet-full-length-extent.ly index 0a02f74031..4bf1509f5e 100644 --- a/input/regression/tuplet-full-length-extent.ly +++ b/input/regression/tuplet-full-length-extent.ly @@ -4,7 +4,7 @@ attaching column for a full-length tuplet bracket can be ignored." } -\version "2.14.0" +\version "2.16.0" \new Staff { \set tupletFullLength = ##t diff --git a/input/regression/tuplet-full-length-note.ly b/input/regression/tuplet-full-length-note.ly index 7055e9efba..9553f9101a 100644 --- a/input/regression/tuplet-full-length-note.ly +++ b/input/regression/tuplet-full-length-note.ly @@ -6,7 +6,7 @@ the next note, by setting @code{tupletFullLengthNote}." } -\version "2.14.0" +\version "2.16.0" \new RhythmicStaff { \set tupletFullLength = ##t diff --git a/input/regression/tuplet-full-length.ly b/input/regression/tuplet-full-length.ly index 8d38604c37..5e4b46bab5 100644 --- a/input/regression/tuplet-full-length.ly +++ b/input/regression/tuplet-full-length.ly @@ -5,7 +5,7 @@ start of the next non-tuplet note. " } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t indent = 0.0 } diff --git a/input/regression/tuplet-gap.ly b/input/regression/tuplet-gap.ly index 5210a0dc42..5e142e2502 100644 --- a/input/regression/tuplet-gap.ly +++ b/input/regression/tuplet-gap.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout { indent = 0.0\mm diff --git a/input/regression/tuplet-nest-beam.ly b/input/regression/tuplet-nest-beam.ly index 8c2674bb48..65a5773794 100644 --- a/input/regression/tuplet-nest-beam.ly +++ b/input/regression/tuplet-nest-beam.ly @@ -5,7 +5,7 @@ } -\version "2.14.0" +\version "2.16.0" \paper{ ragged-right=##t } diff --git a/input/regression/tuplet-nest-broken.ly b/input/regression/tuplet-nest-broken.ly new file mode 100644 index 0000000000..171cf13516 --- /dev/null +++ b/input/regression/tuplet-nest-broken.ly @@ -0,0 +1,53 @@ + +\version "2.16.0" + +\header { + texidoc = "Broken nested tuplets avoid each other correctly. +" +} + +\paper { + ragged-right = ##t + indent = 0.0 +} + +\score { + \new Staff + << + \relative c'' { + \override Score . Beam #'breakable = ##t + + r2 + + \times 4/3 { + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } + } + + \times 4/3 { + \times 2/3 { a8[ a a] } + \times 2/3 { a8[ a a] } + \times 2/3 { a8[ a a] } + } + + \override TupletNumber #'text = #tuplet-number::calc-fraction-text + \times 4/6 { + \times 2/3 { + a4 a a + } + \times 3/5 { + a4 a a a a + } + a4 + } + r2 + } + { \repeat unfold 3 { s1 \break } } + >> + \layout { + \context { + \Voice \remove Forbid_line_break_engraver + } + } +} diff --git a/input/regression/tuplet-nest.ly b/input/regression/tuplet-nest.ly index dfdd543450..8b727c2a5c 100644 --- a/input/regression/tuplet-nest.ly +++ b/input/regression/tuplet-nest.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" Tuplets may be nested." @@ -11,13 +11,25 @@ } \relative c'' { + \times 4/3 { + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } + } + + \times 4/3 { + \times 2/3 { a8[ a a] } + \times 2/3 { a8[ a a] } + \times 2/3 { a8[ a a] } + } + \override TupletNumber #'text = #tuplet-number::calc-fraction-text \times 4/6 { \times 2/3 { - a a a + a4 a a } \times 3/5 { - a a a a a + a4 a a a a } } diff --git a/input/regression/tuplet-no-stems.ly b/input/regression/tuplet-no-stems.ly index 702b9cf0eb..a624a9368f 100644 --- a/input/regression/tuplet-no-stems.ly +++ b/input/regression/tuplet-no-stems.ly @@ -3,7 +3,7 @@ } -\version "2.14.0" +\version "2.16.0" \layout{ \context{ diff --git a/input/regression/tuplet-number-outside-staff-priority.ly b/input/regression/tuplet-number-outside-staff-priority.ly new file mode 100644 index 0000000000..7320677be0 --- /dev/null +++ b/input/regression/tuplet-number-outside-staff-priority.ly @@ -0,0 +1,16 @@ +\version "2.16.0" +\header { + + texidoc = "Tuplet numbers' outside staff priority can be +set." + +} + +\relative c'' { + \override TupletBracket #'avoid-scripts = ##f + \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 } +} diff --git a/input/regression/tuplet-number-slur-script.ly b/input/regression/tuplet-number-slur-script.ly new file mode 100644 index 0000000000..b22f5ee35f --- /dev/null +++ b/input/regression/tuplet-number-slur-script.ly @@ -0,0 +1,14 @@ +\version "2.16.0" + +\header { + texidoc = "Tuplet number position is correct when slurs and scripts +are present. +" +} + +\relative c' +{ + R1 | + \break + \times 2/3 { e8(-> e e) } +} diff --git a/input/regression/tuplet-properties.ly b/input/regression/tuplet-properties.ly index 6d7ab0ddd5..3b6d8d9888 100644 --- a/input/regression/tuplet-properties.ly +++ b/input/regression/tuplet-properties.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Tuplet bracket formatting supports numerous options, diff --git a/input/regression/tuplet-rest.ly b/input/regression/tuplet-rest.ly index 3e7776d4a6..14d3364cbc 100644 --- a/input/regression/tuplet-rest.ly +++ b/input/regression/tuplet-rest.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Tuplets may contain rests. " diff --git a/input/regression/tuplet-single-note.ly b/input/regression/tuplet-single-note.ly index 8e5fcc135a..56509d27af 100644 --- a/input/regression/tuplet-single-note.ly +++ b/input/regression/tuplet-single-note.ly @@ -4,7 +4,7 @@ texidoc = "Show tuplet numbers also on single-note tuplets (otherwise the timing would look messed up!), but don't show a bracket. Make sure that tuplets without any notes don't show any number, either." } -\version "2.14.0" +\version "2.16.0" \paper { ragged-right = ##t indent = 0.0 } diff --git a/input/regression/tuplet-slope.ly b/input/regression/tuplet-slope.ly index b79c3687eb..cccb4ab56d 100644 --- a/input/regression/tuplet-slope.ly +++ b/input/regression/tuplet-slope.ly @@ -15,7 +15,7 @@ The bracket direction is determined by the dominating stem direction. ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" \new Voice { \relative c'' { diff --git a/input/regression/tuplet-staffline-collision.ly b/input/regression/tuplet-staffline-collision.ly index c41a0957e7..9ae2b584b1 100644 --- a/input/regression/tuplet-staffline-collision.ly +++ b/input/regression/tuplet-staffline-collision.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Horizontal tuplet brackets are shifted vertically diff --git a/input/regression/tuplet-subdivision.ly b/input/regression/tuplet-subdivision.ly new file mode 100644 index 0000000000..7a3b8b6f45 --- /dev/null +++ b/input/regression/tuplet-subdivision.ly @@ -0,0 +1,17 @@ +\version "2.16.0" + +\header { + + texinfo = " +Subdivision works properly for tuplets + " +} + +\relative c'' { + \set subdivideBeams = ##t + \set baseMoment = #(ly:make-moment 1 8) + \set beatStructure = #'(2 2 2 2) + \repeat unfold 8 { + \times 2/3 { c16 e d } + } +} diff --git a/input/regression/tuplet-text-different-numbers.ly b/input/regression/tuplet-text-different-numbers.ly index e59e8de666..0fae824667 100644 --- a/input/regression/tuplet-text-different-numbers.ly +++ b/input/regression/tuplet-text-different-numbers.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Non-standard tuplet texts: Printing other tuplet fractions than the ones actually assigned." } diff --git a/input/regression/tuplet-text-fraction-with-notes.ly b/input/regression/tuplet-text-fraction-with-notes.ly index 7a4e1e2a3c..944b592fb7 100644 --- a/input/regression/tuplet-text-fraction-with-notes.ly +++ b/input/regression/tuplet-text-fraction-with-notes.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Non-standard tuplet texts: Printing a tuplet fraction with note durations assigned to both the denominator and the numerator." } diff --git a/input/regression/tuplet-text-note-appended.ly b/input/regression/tuplet-text-note-appended.ly index 5aadbfee2d..8a53c80e8d 100644 --- a/input/regression/tuplet-text-note-appended.ly +++ b/input/regression/tuplet-text-note-appended.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc="Non-standard tuplet texts: Appending a note value to the normal text and to the fraction text." } diff --git a/input/regression/tuplets.ly b/input/regression/tuplets.ly index 9572742fa8..dc71b7f216 100644 --- a/input/regression/tuplets.ly +++ b/input/regression/tuplets.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" \header{ texidoc=" diff --git a/input/regression/typography-demo.ly b/input/regression/typography-demo.ly index e97ec8b8f7..1e8a1acb93 100644 --- a/input/regression/typography-demo.ly +++ b/input/regression/typography-demo.ly @@ -8,7 +8,9 @@ heavily mutilated Edition Peters Morgenlied by Schubert" } -\version "2.14.0" +\version "2.16.0" +#(ly:expect-warning (_ "(De)crescendo with unspecified starting volume in MIDI.")) +#(ly:expect-warning (_ "(De)crescendo with unspecified starting volume in MIDI.")) ignoreMelisma = \set ignoreMelismata = ##t ignoreMelismaOff = \unset ignoreMelismata @@ -33,8 +35,9 @@ modernAccidentals = { melody = \relative c'' \repeat volta 2 \context Voice = "singer" { \time 6/8 \autoBeamOff - s1*0^\markup { \larger { \hspace #-3.0 Lieblich, etwas geschwind } } - R2. + << s2.^\markup { \larger { \hspace #-3.0 Lieblich, etwas geschwind } } + R2. + >> r4 r8 c4 g8 | \acciaccatura { f16 } e4 c8 << @@ -74,7 +77,7 @@ secondVerse = \lyricmode { } pianoRH = \relative c''' \repeat volta 2\new Voice { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \voiceOne g16( fis a g fis g f e d c b \oneVoice @@ -97,7 +100,7 @@ pianoRH = \relative c''' \repeat volta 2\new Voice { } pianoLH = \relative c'' \repeat volta 2\new Voice { - #(set-accidental-style 'modern) + \accidentalStyle "modern" \voiceTwo g16( fis a g fis g @@ -123,7 +126,7 @@ pianoLH = \relative c'' \repeat volta 2\new Voice { fontSize = #-3 \override StaffSymbol #'staff-space = #(magstep -3) } << - \context Staff #(set-accidental-style 'modern) + \context Staff \accidentalStyle "modern" \melody >> \lyricsto "singer" \new Lyrics \firstVerse \lyricsto "singer" \new Lyrics \secondVerse @@ -158,10 +161,7 @@ pianoLH = \relative c'' \repeat volta 2\new Voice { } \midi { - \context { - \Score - tempoWholesPerMinute = #(ly:make-moment 70 4) - } + \tempo 4 = 70 } diff --git a/input/regression/unpure-pure-container.ly b/input/regression/unpure-pure-container.ly new file mode 100644 index 0000000000..b60479dc17 --- /dev/null +++ b/input/regression/unpure-pure-container.ly @@ -0,0 +1,25 @@ + +\version "2.16.0" + +\header { + texidoc = "unpure-pure containers take two arguments: an unpure property and +a pure property. The pure property is evaluated (and cached) for all +pure calculations, and the unpure is evaluated for all unpure calculations. +In this regtest, there are three groups of two eighth notes. In the first +group, the second note should move to accommodate the flag, whereas it should +not in the second group because it registers the flag as being higher. The +flag, however, remains at the Y-offset dictated by ly:flag::calc-y-offset. +In the third set of two 8th notes, the flag should be pushed up to a Y-offset +of 8. +" +} + +\relative c'' { + \stemUp \autoBeamOff + d,8 eis' + \once \override Flag #'Y-offset = + #(ly:make-unpure-pure-container ly:flag::calc-y-offset 8) + d,8 eis'! + \once \override Flag #'Y-offset = #8 + d,8 eis'! +} diff --git a/input/regression/utf-8-mixed-text.ly b/input/regression/utf-8-mixed-text.ly index eb6d00446b..7f93917c2f 100644 --- a/input/regression/utf-8-mixed-text.ly +++ b/input/regression/utf-8-mixed-text.ly @@ -5,6 +5,6 @@ } -\version "2.14.0" +\version "2.16.0" \markup { "Здравствуйте Hallo" } diff --git a/input/regression/utf-8.ly b/input/regression/utf-8.ly index ab0d30d6d9..cf5d79ddb4 100644 --- a/input/regression/utf-8.ly +++ b/input/regression/utf-8.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" %% Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs diff --git a/input/regression/voice-follower.ly b/input/regression/voice-follower.ly index 463d20fa17..a992a5cfbd 100644 --- a/input/regression/voice-follower.ly +++ b/input/regression/voice-follower.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc= " diff --git a/input/regression/volta-broken-left-edge.ly b/input/regression/volta-broken-left-edge.ly index a598aeaed9..f00287e019 100644 --- a/input/regression/volta-broken-left-edge.ly +++ b/input/regression/volta-broken-left-edge.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc ="Broken volta spanners behave correctly at their left edge in all cases." diff --git a/input/regression/volta-markup-text.ly b/input/regression/volta-markup-text.ly index f2cb7f1f2a..cd29427b5c 100644 --- a/input/regression/volta-markup-text.ly +++ b/input/regression/volta-markup-text.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "Volte using @code{repeatCommands} can have markup diff --git a/input/regression/volta-multi-staff-inner-staff.ly b/input/regression/volta-multi-staff-inner-staff.ly index ecbb891728..0578a89e8a 100644 --- a/input/regression/volta-multi-staff-inner-staff.ly +++ b/input/regression/volta-multi-staff-inner-staff.ly @@ -12,7 +12,7 @@ volta brackets on staves other than the topmost one." } } -\version "2.14.0" +\version "2.16.0" vmus = { \repeat volta 2 c1 \alternative { d e } } diff --git a/input/regression/volta-multi-staff.ly b/input/regression/volta-multi-staff.ly index e9100b0c3a..efceede790 100644 --- a/input/regression/volta-multi-staff.ly +++ b/input/regression/volta-multi-staff.ly @@ -3,7 +3,7 @@ } \layout { ragged-right = ##t } -\version "2.14.0" +\version "2.16.0" vmus = { \repeat volta 2 c1 \alternative { d e } } diff --git a/input/regression/warn-conflicting-key-signatures.ly b/input/regression/warn-conflicting-key-signatures.ly index 75d6cfc63a..7d805072a7 100644 --- a/input/regression/warn-conflicting-key-signatures.ly +++ b/input/regression/warn-conflicting-key-signatures.ly @@ -1,4 +1,7 @@ -\version "2.14.0" +\version "2.16.0" +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "Two simultaneous %s events, junking this one") "key-change") +#(ly:expect-warning (ly:translate-cpp-warning-scheme "Previous %s event here") "key-change") \header { texidoc = "If you specify two different key signatures at one point, a diff --git a/input/regression/warn-expected-warning-missing.ly b/input/regression/warn-expected-warning-missing.ly new file mode 100644 index 0000000000..bdb6dc2425 --- /dev/null +++ b/input/regression/warn-expected-warning-missing.ly @@ -0,0 +1,12 @@ +\version "2.16.0" + +#(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (_ "this is a warning that won't be triggered")) + +\header { + texidoc = "If a warning is expected, but not triggered, print out a +warning about this fact. This will be used to detect missing warnings +in our regtests." +} + +\relative c' { c4 } diff --git a/input/regression/warn-unterminated-span-dynamic.ly b/input/regression/warn-unterminated-span-dynamic.ly index fd53599ffb..43e0c9cbba 100644 --- a/input/regression/warn-unterminated-span-dynamic.ly +++ b/input/regression/warn-unterminated-span-dynamic.ly @@ -1,6 +1,8 @@ -\version "2.14.0" +\version "2.16.0" #(ly:set-option 'warning-as-error #f) +#(ly:expect-warning (ly:translate-cpp-warning-scheme "unterminated %s") "crescendo") +#(ly:expect-warning (ly:translate-cpp-warning-scheme "unterminated %s") "decrescendo") \header { texidoc = "A warning is printed if a dynamic spanner is diff --git a/input/regression/whiteout-lower-layers.ly b/input/regression/whiteout-lower-layers.ly index b9aa99fc76..514f740079 100644 --- a/input/regression/whiteout-lower-layers.ly +++ b/input/regression/whiteout-lower-layers.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc = "If the 'whiteout property of a grob is set to #t, that part of all objects in lower diff --git a/input/regression/whiteout.ly b/input/regression/whiteout.ly index bb0fae9691..b998e5867b 100644 --- a/input/regression/whiteout.ly +++ b/input/regression/whiteout.ly @@ -1,11 +1,10 @@ \header { texidoc = "The whiteout command underlays a white box under a -markup. The whitening effect only is only guaranteed for staff lines, -since staff lines are in a lower layer than most other grobs. " +markup. " } -\version "2.14.0" +\version "2.16.0" \paper { @@ -13,6 +12,7 @@ since staff lines are in a lower layer than most other grobs. " } \relative c'' { + \override TextScript #'layer = #'2 \override TextScript #'extra-offset = #'(2 . 4) c4-\markup { \whiteout \pad-markup #0.5 foo } c -} +} diff --git a/input/regression/woodwind-diagrams-empty.ly b/input/regression/woodwind-diagrams-empty.ly index f2404adabb..4bf1dba344 100644 --- a/input/regression/woodwind-diagrams-empty.ly +++ b/input/regression/woodwind-diagrams-empty.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Empty woodwind diagrams for all instruments diff --git a/input/regression/woodwind-diagrams-key-lists.ly b/input/regression/woodwind-diagrams-key-lists.ly index 1b70d8f7fa..a060a099e0 100644 --- a/input/regression/woodwind-diagrams-key-lists.ly +++ b/input/regression/woodwind-diagrams-key-lists.ly @@ -1,18 +1,22 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc="Lists all possible keys for all instruments in woodwind-diagrams.scm" } -#(print-keys-verbose 'piccolo) -#(print-keys-verbose 'flute) -#(print-keys-verbose 'flute-b-extension) -#(print-keys-verbose 'oboe) -#(print-keys-verbose 'clarinet) -#(print-keys-verbose 'bass-clarinet) -#(print-keys-verbose 'low-bass-clarinet) -#(print-keys-verbose 'saxophone) -#(print-keys-verbose 'baritone-saxophone) -#(print-keys-verbose 'bassoon) -#(print-keys-verbose 'contrabassoon) +#(print-keys-verbose 'piccolo (current-error-port)) +#(print-keys-verbose 'flute (current-error-port)) +#(print-keys-verbose 'flute-b-extension (current-error-port)) +#(print-keys-verbose 'tin-whistle (current-error-port)) +#(print-keys-verbose 'oboe (current-error-port)) +#(print-keys-verbose 'clarinet (current-error-port)) +#(print-keys-verbose 'bass-clarinet (current-error-port)) +#(print-keys-verbose 'low-bass-clarinet (current-error-port)) +#(print-keys-verbose 'saxophone (current-error-port)) +#(print-keys-verbose 'soprano-saxophone (current-error-port)) +#(print-keys-verbose 'alto-saxophone (current-error-port)) +#(print-keys-verbose 'tenor-saxophone (current-error-port)) +#(print-keys-verbose 'baritone-saxophone (current-error-port)) +#(print-keys-verbose 'bassoon (current-error-port)) +#(print-keys-verbose 'contrabassoon (current-error-port)) diff --git a/input/regression/zero-staff-space.ly b/input/regression/zero-staff-space.ly index 62e2e16bc9..65d2eb95de 100644 --- a/input/regression/zero-staff-space.ly +++ b/input/regression/zero-staff-space.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \header { texidoc=" @@ -10,6 +10,6 @@ Setting staff-space to 0 does not cause a segmentation fault. \override StaffSymbol #'staff-space = #0 } { \relative c' { - c1 + c1 \bar ":|" } } diff --git a/lily/GNUmakefile b/lily/GNUmakefile index 4056eefb93..1872af74ce 100644 --- a/lily/GNUmakefile +++ b/lily/GNUmakefile @@ -14,7 +14,6 @@ MODULE_CXXFLAGS= -Wno-pmf-conversions HELP2MAN_EXECS = lilypond STEPMAKE_TEMPLATES=c c++ executable po help2man -# list parser.hh first: making parser.hh removes parser.cc OUT_DIST_FILES=$(addprefix $(outdir)/,parser.hh parser.cc) include $(depth)/make/stepmake.make @@ -64,9 +63,12 @@ $(outdir)/lilypond: $(outdir)/libstdc++.a endif # force these: Make can't know these have to be generated in advance -$(outdir)/lily-parser.o: $(outdir)/parser.hh +$(outdir)/lily-parser.o $(outdir)/parser.o: $(outdir)/parser.hh $(outdir)/lily-lexer.o: $(outdir)/parser.hh $(outdir)/FlexLexer.h $(outdir)/lexer.o: $(outdir)/parser.hh $(outdir)/version.hh +$(outdir)/lily-lexer-scheme.o \ + $(outdir)/lily-parser-scheme.o \ + $(outdir)/parse-scm.o: $(outdir)/parser.hh ifneq ($(FLEXLEXER_FILE),) $(outdir)/FlexLexer.h: $(FLEXLEXER_FILE) $(config_h) @@ -79,11 +81,8 @@ $(outdir)/parser.cc: $(config_h) $(outdir)/general-scheme.o: $(outdir)/version.hh $(outdir)/lily-guile.o: $(outdir)/version.hh $(outdir)/lily-version.o: $(outdir)/version.hh +$(outdir)/main.o: $(outdir)/version.hh +$(outdir)/relocate.o: $(outdir)/version.hh +$(outdir)/warn-scheme.o: $(outdir)/version.hh local-po: $(outdir)/parser.cc - -# ugh. For --srcdir builds, these must exist to satisfy their broken -# lexer.dep and parser.dep file entries. -ifneq ($(configure-srcdir),.) -.PRECIOUS: $(outdir)/lexer.cc $(outdir)/parser.cc -endif diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc index 9bd02ee828..9c4d8976fe 100644 --- a/lily/accidental-engraver.cc +++ b/lily/accidental-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Modified 2001--2002 by Rune Zedeler LilyPond is free software: you can redistribute it and/or modify @@ -58,6 +58,7 @@ Accidental_entry::Accidental_entry () melodic_ = 0; accidental_ = 0; origin_ = 0; + origin_engraver_ = 0; head_ = 0; } @@ -87,14 +88,14 @@ protected: public: SCM last_keysig_; - vector left_objects_; - vector right_objects_; + vector left_objects_; + vector right_objects_; Grob *accidental_placement_; vector accidentals_; - vector ties_; - vector note_columns_; + vector ties_; + vector note_columns_; }; /* @@ -102,7 +103,6 @@ public: in grobs should always store ly_deep_copy ()s of those. */ - Accidental_engraver::Accidental_engraver () { accidental_placement_ = 0; @@ -120,8 +120,8 @@ Accidental_engraver::update_local_key_signature (SCM new_sig) { last_keysig_ = new_sig; set_context_property_on_children (context (), - ly_symbol2scm ("localKeySignature"), - new_sig); + ly_symbol2scm ("localKeySignature"), + new_sig); Context *trans = context ()->get_parent_context (); @@ -163,14 +163,14 @@ struct Accidental_result int score () const { return need_acc ? 1 : 0 - + need_restore ? 1 : 0; + + need_restore ? 1 : 0; } }; static Accidental_result check_pitch_against_rules (Pitch const &pitch, Context *origin, - SCM rules, int bar_number, SCM measurepos) + SCM rules, int bar_number, SCM measurepos) { Accidental_result result; SCM pitch_scm = pitch.smobbed_copy (); @@ -178,37 +178,37 @@ check_pitch_against_rules (Pitch const &pitch, Context *origin, if (scm_is_pair (rules) && !scm_is_symbol (scm_car (rules))) warning (_f ("accidental typesetting list must begin with context-name: %s", - ly_scm2string (scm_car (rules)).c_str ())); + ly_scm2string (scm_car (rules)).c_str ())); for (; scm_is_pair (rules) && origin; rules = scm_cdr (rules)) { SCM rule = scm_car (rules); if (ly_is_procedure (rule)) - { - SCM rule_result_scm = scm_call_4 (rule, origin->self_scm (), - pitch_scm, barnum_scm, measurepos); - Accidental_result rule_result (rule_result_scm); + { + SCM rule_result_scm = scm_call_4 (rule, origin->self_scm (), + pitch_scm, barnum_scm, measurepos); + Accidental_result rule_result (rule_result_scm); - result.need_acc |= rule_result.need_acc; - result.need_restore |= rule_result.need_restore; - } + result.need_acc |= rule_result.need_acc; + result.need_restore |= rule_result.need_restore; + } /* - If symbol then it is a context name. Scan parent contexts to - find it. + If symbol then it is a context name. Scan parent contexts to + find it. */ else if (scm_is_symbol (rule)) - { - Context *dad = origin; - while (dad && !dad->is_alias (rule)) - dad = dad->get_parent_context (); - - if (dad) - origin = dad; - } + { + Context *dad = origin; + while (dad && !dad->is_alias (rule)) + dad = dad->get_parent_context (); + + if (dad) + origin = dad; + } else - warning (_f ("procedure or context-name expected for accidental rule, found %s", - print_scm_val (rule).c_str ())); + warning (_f ("procedure or context-name expected for accidental rule, found %s", + print_scm_val (rule).c_str ())); } return result; @@ -222,59 +222,59 @@ Accidental_engraver::process_acknowledged () SCM accidental_rules = get_property ("autoAccidentals"); SCM cautionary_rules = get_property ("autoCautionaries"); SCM measure_position = get_property ("measurePosition"); - int barnum = measure_number (context()); + int barnum = measure_number (context ()); for (vsize i = 0; i < accidentals_.size (); i++) - { - if (accidentals_[i].done_) - continue; - accidentals_[i].done_ = true; - - Stream_event *note = accidentals_[i].melodic_; - Context *origin = accidentals_[i].origin_; - - Pitch *pitch = unsmob_pitch (note->get_property ("pitch")); - if (!pitch) - continue; - - Accidental_result acc = check_pitch_against_rules (*pitch, origin, accidental_rules, - barnum, measure_position); - Accidental_result caut = check_pitch_against_rules (*pitch, origin, cautionary_rules, - barnum, measure_position); - - bool cautionary = to_boolean (note->get_property ("cautionary")); - if (caut.score () > acc.score ()) - { - acc.need_acc |= caut.need_acc; - acc.need_restore |= caut.need_restore; - - cautionary = true; - } - - bool forced = to_boolean (note->get_property ("force-accidental")); - if (!acc.need_acc && forced) - acc.need_acc = true; - - /* - Cannot look for ties: it's not guaranteed that they reach - us before the notes. - */ - if (!note->in_event_class ("trill-span-event")) - { - if (acc.need_acc) - create_accidental (&accidentals_[i], acc.need_restore, cautionary); - - if (forced || cautionary) - accidentals_[i].accidental_->set_property ("forced", SCM_BOOL_T); - } - } + { + if (accidentals_[i].done_) + continue; + accidentals_[i].done_ = true; + + Stream_event *note = accidentals_[i].melodic_; + Context *origin = accidentals_[i].origin_; + + Pitch *pitch = unsmob_pitch (note->get_property ("pitch")); + if (!pitch) + continue; + + Accidental_result acc = check_pitch_against_rules (*pitch, origin, accidental_rules, + barnum, measure_position); + Accidental_result caut = check_pitch_against_rules (*pitch, origin, cautionary_rules, + barnum, measure_position); + + bool cautionary = to_boolean (note->get_property ("cautionary")); + if (caut.score () > acc.score ()) + { + acc.need_acc |= caut.need_acc; + acc.need_restore |= caut.need_restore; + + cautionary = true; + } + + bool forced = to_boolean (note->get_property ("force-accidental")); + if (!acc.need_acc && forced) + acc.need_acc = true; + + /* + Cannot look for ties: it's not guaranteed that they reach + us before the notes. + */ + if (!note->in_event_class ("trill-span-event")) + { + if (acc.need_acc) + create_accidental (&accidentals_[i], acc.need_restore, cautionary); + + if (forced || cautionary) + accidentals_[i].accidental_->set_property ("forced", SCM_BOOL_T); + } + } } } void Accidental_engraver::create_accidental (Accidental_entry *entry, - bool restore_natural, - bool cautionary) + bool restore_natural, + bool cautionary) { Stream_event *note = entry->melodic_; Grob *support = entry->head_; @@ -288,7 +288,7 @@ Accidental_engraver::create_accidental (Accidental_entry *entry, if (restore_natural) { if (to_boolean (get_property ("extraNatural"))) - a->set_property ("restore-first", SCM_BOOL_T); + a->set_property ("restore-first", SCM_BOOL_T); } entry->accidental_ = a; @@ -296,9 +296,9 @@ Accidental_engraver::create_accidental (Accidental_entry *entry, Grob * Accidental_engraver::make_standard_accidental (Stream_event * /* note */, - Grob *note_head, - Engraver *trans, - bool cautionary) + Grob *note_head, + Engraver *trans, + bool cautionary) { /* We construct the accidentals at the originating Voice @@ -318,7 +318,7 @@ Accidental_engraver::make_standard_accidental (Stream_event * /* note */, for (vsize i = 0; i < left_objects_.size (); i++) { if (left_objects_[i]->get_property ("side-axis") == scm_from_int (X_AXIS)) - Side_position_interface::add_support (left_objects_[i], a); + Side_position_interface::add_support (left_objects_[i], a); } for (vsize i = 0; i < right_objects_.size (); i++) @@ -328,7 +328,7 @@ Accidental_engraver::make_standard_accidental (Stream_event * /* note */, if (!accidental_placement_) accidental_placement_ = make_item ("AccidentalPlacement", - a->self_scm ()); + a->self_scm ()); Accidental_placement::add_accidental (accidental_placement_, a); note_head->set_object ("accidental-grob", a->self_scm ()); @@ -338,8 +338,8 @@ Accidental_engraver::make_standard_accidental (Stream_event * /* note */, Grob * Accidental_engraver::make_suggested_accidental (Stream_event * /* note */, - Grob *note_head, - Engraver *trans) + Grob *note_head, + Engraver *trans) { Grob *a = trans->make_item ("AccidentalSuggestion", note_head->self_scm ()); @@ -364,16 +364,16 @@ Accidental_engraver::stop_translation_timestep () { Grob *r = Tie::head (ties_[j], RIGHT); for (vsize i = accidentals_.size (); i--;) - if (accidentals_[i].head_ == r) - { - if (Grob *g = accidentals_[i].accidental_) - { - g->set_object ("tie", ties_[j]->self_scm ()); - accidentals_[i].tied_ = true; - } - ties_.erase (ties_.begin () + j); - break; - } + if (accidentals_[i].head_ == r) + { + if (Grob *g = accidentals_[i].accidental_) + { + g->set_object ("tie", ties_[j]->self_scm ()); + accidentals_[i].tied_ = true; + } + ties_.erase (ties_.begin () + j); + break; + } } for (vsize i = accidentals_.size (); i--;) @@ -385,7 +385,7 @@ Accidental_engraver::stop_translation_timestep () Pitch *pitch = unsmob_pitch (note->get_property ("pitch")); if (!pitch) - continue; + continue; int n = pitch->get_notename (); int o = pitch->get_octave (); @@ -393,42 +393,42 @@ Accidental_engraver::stop_translation_timestep () SCM key = scm_cons (scm_from_int (o), scm_from_int (n)); Moment end_mp = measure_position (context (), - unsmob_duration (note->get_property ("duration"))); + unsmob_duration (note->get_property ("duration"))); SCM position = scm_cons (scm_from_int (barnum), end_mp.smobbed_copy ()); SCM localsig = SCM_EOL; while (origin - && origin->where_defined (ly_symbol2scm ("localKeySignature"), &localsig)) - { - bool change = false; - if (accidentals_[i].tied_ - && !(to_boolean (accidentals_[i].accidental_->get_property ("forced")))) - { - /* - Remember an alteration that is different both from - that of the tied note and of the key signature. - */ - localsig = ly_assoc_prepend_x (localsig, key,scm_cons (ly_symbol2scm ("tied"), - position)); - change = true; - } - else - { - /* - not really correct if there is more than one - note head with the same notename. - */ - localsig = ly_assoc_prepend_x (localsig, key, - scm_cons (ly_rational2scm (a), - position)); - change = true; - } - - if (change) - origin->set_property ("localKeySignature", localsig); - - origin = origin->get_parent_context (); - } + && origin->where_defined (ly_symbol2scm ("localKeySignature"), &localsig)) + { + bool change = false; + if (accidentals_[i].tied_ + && !(to_boolean (accidentals_[i].accidental_->get_property ("forced")))) + { + /* + Remember an alteration that is different both from + that of the tied note and of the key signature. + */ + localsig = ly_assoc_prepend_x (localsig, key, scm_cons (ly_symbol2scm ("tied"), + position)); + change = true; + } + else + { + /* + not really correct if there is more than one + note head with the same notename. + */ + localsig = ly_assoc_prepend_x (localsig, key, + scm_cons (ly_rational2scm (a), + position)); + change = true; + } + + if (change) + origin->set_property ("localKeySignature", localsig); + + origin = origin->get_parent_context (); + } } if (accidental_placement_) @@ -448,22 +448,22 @@ Accidental_engraver::acknowledge_rhythmic_head (Grob_info info) Stream_event *note = info.event_cause (); if (note && (note->in_event_class ("note-event") - || note->in_event_class ("trill-span-event"))) + || note->in_event_class ("trill-span-event"))) { /* - string harmonics usually don't have accidentals. + string harmonics usually don't have accidentals. */ if (info.grob ()->get_property ("style") != ly_symbol2scm ("harmonic") - || to_boolean (get_property ("harmonicAccidentals"))) - { - Accidental_entry entry; - entry.head_ = info.grob (); - entry.origin_engraver_ = dynamic_cast (info.origin_translator ()); - entry.origin_ = entry.origin_engraver_->context (); - entry.melodic_ = note; - - accidentals_.push_back (entry); - } + || to_boolean (get_property ("harmonicAccidentals"))) + { + Accidental_entry entry; + entry.head_ = info.grob (); + entry.origin_engraver_ = dynamic_cast (info.origin_translator ()); + entry.origin_ = entry.origin_engraver_->context (); + entry.melodic_ = note; + + accidentals_.push_back (entry); + } } } @@ -506,28 +506,28 @@ ADD_ACKNOWLEDGER (Accidental_engraver, tie); ADD_ACKNOWLEDGER (Accidental_engraver, note_column); ADD_TRANSLATOR (Accidental_engraver, - /* doc */ - "Make accidentals." - " Catch note heads, ties and notices key-change events." - " This engraver usually lives at Staff level, but" - " reads the settings for Accidental at @code{Voice} level," - " so you can @code{\\override} them at @code{Voice}.", - - /* create */ - "Accidental " - "AccidentalCautionary " - "AccidentalPlacement " - "AccidentalSuggestion ", - - /* read */ - "autoAccidentals " - "autoCautionaries " - "internalBarNumber " - "extraNatural " - "harmonicAccidentals " - "keySignature " - "localKeySignature ", - - /* write */ - "localKeySignature " - ); + /* doc */ + "Make accidentals." + " Catch note heads, ties and notices key-change events." + " This engraver usually lives at Staff level, but" + " reads the settings for Accidental at @code{Voice} level," + " so you can @code{\\override} them at @code{Voice}.", + + /* create */ + "Accidental " + "AccidentalCautionary " + "AccidentalPlacement " + "AccidentalSuggestion ", + + /* read */ + "autoAccidentals " + "autoCautionaries " + "internalBarNumber " + "extraNatural " + "harmonicAccidentals " + "keySignature " + "localKeySignature ", + + /* write */ + "localKeySignature " + ); diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc index 4a535c7857..ff67181434 100644 --- a/lily/accidental-placement.cc +++ b/lily/accidental-placement.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -76,20 +76,20 @@ Accidental_placement::add_accidental (Grob *me, Grob *a) */ void Accidental_placement::split_accidentals (Grob *accs, - vector *break_reminder, - vector *real_acc) + vector *break_reminder, + vector *real_acc) { for (SCM acs = accs->get_object ("accidental-grobs"); scm_is_pair (acs); acs = scm_cdr (acs)) for (SCM s = scm_cdar (acs); scm_is_pair (s); s = scm_cdr (s)) { - Grob *a = unsmob_grob (scm_car (s)); + Grob *a = unsmob_grob (scm_car (s)); - if (unsmob_grob (a->get_object ("tie")) - && !to_boolean (a->get_property ("forced"))) - break_reminder->push_back (a); - else - real_acc->push_back (a); + if (unsmob_grob (a->get_object ("tie")) + && !to_boolean (a->get_property ("forced"))) + break_reminder->push_back (a); + else + real_acc->push_back (a); } } @@ -108,7 +108,7 @@ Accidental_placement::get_relevant_accidentals (vector const &elts, Grob ret.insert (ret.end (), ra.begin (), ra.end ()); if (right) - ret.insert (ret.end (), br.begin (), br.end ()); + ret.insert (ret.end (), br.begin (), br.end ()); } return ret; } @@ -128,7 +128,7 @@ Real ape_priority (Accidental_placement_entry const *a) } bool ape_less (Accidental_placement_entry *const &a, - Accidental_placement_entry *const &b) + Accidental_placement_entry *const &b) { return ape_priority (a) < ape_priority (b); } @@ -190,12 +190,12 @@ stagger_apes (vector *apes) { Accidental_placement_entry *a = 0; if (parity) - { - a = asc.back (); - asc.pop_back (); - } + { + a = asc.back (); + asc.pop_back (); + } else - a = asc[i++]; + a = asc[i++]; apes->push_back (a); parity = !parity; @@ -213,7 +213,7 @@ build_apes (SCM accs) Accidental_placement_entry *ape = new Accidental_placement_entry; for (SCM t = scm_cdar (s); scm_is_pair (t); t = scm_cdr (t)) - ape->grobs_.push_back (unsmob_grob (scm_car (t))); + ape->grobs_.push_back (unsmob_grob (scm_car (t))); apes.push_back (ape); } @@ -223,7 +223,7 @@ build_apes (SCM accs) static void set_ape_skylines (Accidental_placement_entry *ape, - Grob **common, Real padding) + Grob **common, Real padding) { vector accs (ape->grobs_); vector_sort (accs, &acc_less); @@ -243,29 +243,29 @@ set_ape_skylines (Accidental_placement_entry *ape, Pitch *p = accidental_pitch (a); if (!p) - continue; + continue; if (i == accs.size () - 1 || p->get_octave () != last_octave) - { - last_offset = 0; - offset = a->extent (a, X_AXIS)[LEFT] - padding; - } + { + last_offset = 0; + offset = a->extent (a, X_AXIS)[LEFT] - padding; + } else if (p->get_alteration () == last_alteration) - a->translate_axis (last_offset, X_AXIS); + a->translate_axis (last_offset, X_AXIS); else /* Our alteration is different from the last one */ - { - Real this_offset = offset - a->extent (a, X_AXIS)[RIGHT]; - a->translate_axis (this_offset, X_AXIS); + { + Real this_offset = offset - a->extent (a, X_AXIS)[RIGHT]; + a->translate_axis (this_offset, X_AXIS); - last_offset = this_offset; - offset -= a->extent (a, X_AXIS).length () + padding; - } + last_offset = this_offset; + offset -= a->extent (a, X_AXIS).length () + padding; + } vector boxes = Accidental_interface::accurate_boxes (a, common); ape->extents_.insert (ape->extents_.end (), boxes.begin (), boxes.end ()); for (vsize j = boxes.size (); j--;) - ape->vertical_extent_.unite (boxes[j][Y_AXIS]); + ape->vertical_extent_.unite (boxes[j][Y_AXIS]); last_octave = p->get_octave (); last_alteration = p->get_alteration (); @@ -284,16 +284,16 @@ extract_heads_and_stems (vector const &apes) { Accidental_placement_entry *ape = apes[i]; for (vsize j = ape->grobs_.size (); j--;) - { - Grob *acc = ape->grobs_[j]; - Grob *head = acc->get_parent (Y_AXIS); - Grob *col = head->get_parent (X_AXIS); - - if (Note_column::has_interface (col)) - note_cols.push_back (col); - else - ret.push_back (head); - } + { + Grob *acc = ape->grobs_[j]; + Grob *head = acc->get_parent (Y_AXIS); + Grob *col = head->get_parent (X_AXIS); + + if (Note_column::has_interface (col)) + note_cols.push_back (col); + else + ret.push_back (head); + } } /* @@ -304,10 +304,10 @@ extract_heads_and_stems (vector const &apes) { Grob *c = note_cols[i]->get_parent (X_AXIS); if (Note_collision_interface::has_interface (c)) - { - extract_grob_set (c, "elements", columns); - concat (note_cols, columns); - } + { + extract_grob_set (c, "elements", columns); + concat (note_cols, columns); + } } /* Now that we have all of the columns, grab all of the note-heads */ @@ -332,10 +332,10 @@ common_refpoint_of_accidentals (vector const &apes for (vsize i = apes.size (); i--;) for (vsize j = apes[i]->grobs_.size (); j--;) { - if (!ret) - ret = apes[i]->grobs_[j]; - else - ret = ret->common_refpoint (apes[i]->grobs_[j], a); + if (!ret) + ret = apes[i]->grobs_[j]; + else + ret = ret->common_refpoint (apes[i]->grobs_[j], a); } return ret; @@ -343,12 +343,12 @@ common_refpoint_of_accidentals (vector const &apes static Skyline build_heads_skyline (vector const &heads_and_stems, - Grob **common) + Grob **common) { vector head_extents; for (vsize i = heads_and_stems.size (); i--;) head_extents.push_back (Box (heads_and_stems[i]->extent (common[X_AXIS], X_AXIS), - heads_and_stems[i]->pure_height (common[Y_AXIS], 0, INT_MAX))); + heads_and_stems[i]->pure_height (common[Y_AXIS], 0, INT_MAX))); return Skyline (head_extents, 0, Y_AXIS, LEFT); } @@ -359,8 +359,8 @@ build_heads_skyline (vector const &heads_and_stems, */ static Interval position_apes (Grob *me, - vector const &apes, - Skyline const &heads_skyline) + vector const &apes, + Skyline const &heads_skyline) { Real padding = robust_scm2double (me->get_property ("padding"), 0.2); Skyline left_skyline = heads_skyline; @@ -377,9 +377,9 @@ position_apes (Grob *me, Real offset = -ape->right_skyline_.distance (left_skyline); if (isinf (offset)) - offset = last_offset; + offset = last_offset; else - offset -= padding; + offset -= padding; Skyline new_left_skyline = ape->left_skyline_; new_left_skyline.raise (offset); @@ -388,10 +388,10 @@ position_apes (Grob *me, /* Shift all of the accidentals in this ape */ for (vsize j = ape->grobs_.size (); j--;) - ape->grobs_[j]->translate_axis (offset, X_AXIS); + ape->grobs_[j]->translate_axis (offset, X_AXIS); for (vsize j = ape->extents_.size (); j--;) - width.unite (offset + ape->extents_[j][X_AXIS]); + width.unite (offset + ape->extents_[j][X_AXIS]); last_offset = offset; } @@ -436,7 +436,6 @@ position_apes (Grob *me, * |_| | * | | * - */ MAKE_SCHEME_CALLBACK (Accidental_placement, calc_positioning_done, 1); @@ -480,13 +479,13 @@ Accidental_placement::calc_positioning_done (SCM smob) } ADD_INTERFACE (Accidental_placement, - "Resolve accidental collisions.", - - /* properties */ - "accidental-grobs " - "direction " - "padding " - "positioning-done " - "right-padding " - "script-priority " - ); + "Resolve accidental collisions.", + + /* properties */ + "accidental-grobs " + "direction " + "padding " + "positioning-done " + "right-padding " + "script-priority " + ); diff --git a/lily/accidental.cc b/lily/accidental.cc index bee99c641d..77129b6f9d 100644 --- a/lily/accidental.cc +++ b/lily/accidental.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,8 +29,8 @@ Stencil parenthesize (Grob *me, Stencil m) { - Font_metric * font - = Font_interface::get_default_font (me); + Font_metric *font + = Font_interface::get_default_font (me); Stencil open = font->find_by_name ("accidentals.leftparen"); Stencil close @@ -72,18 +72,18 @@ MAKE_SCHEME_CALLBACK (Accidental_interface, pure_height, 3); SCM Accidental_interface::pure_height (SCM smob, SCM start_scm, SCM) { - Item *me = dynamic_cast (unsmob_grob (smob)); + Item *me = dynamic_cast (unsmob_grob (smob)); int start = scm_to_int (start_scm); int rank = me->get_column ()->get_rank (); if (to_boolean (me->get_property ("forced")) || !unsmob_grob (me->get_object ("tie")) || (rank == start + 1 && /* we are at the start of a line */ - !to_boolean (me->get_property ("hide-tied-accidental-after-break")))) + !to_boolean (me->get_property ("hide-tied-accidental-after-break")))) { Stencil *s = unsmob_stencil (get_stencil (me)); if (s) - return ly_interval2scm (s->extent (Y_AXIS)); + return ly_interval2scm (s->extent (Y_AXIS)); } return ly_interval2scm (Interval ()); @@ -108,51 +108,51 @@ Accidental_interface::accurate_boxes (Grob *me, Grob **common) SCM alist = me->get_property ("glyph-name-alist"); SCM alt = me->get_property ("alteration"); string glyph_name = robust_scm2string (ly_assoc_get (alt, alist, SCM_BOOL_F), - ""); - + ""); + if (glyph_name == "accidentals.flat" - || glyph_name == "accidentals.mirroredflat") - { - Box stem = b; - Box bulb = b; - - /* - we could make the stem thinner, but that places the flats - really close. - */ - Direction bulb_dir = - glyph_name == "accidentals.mirroredflat" ? LEFT : RIGHT; - stem[X_AXIS][bulb_dir] = stem[X_AXIS].center (); - - /* - To prevent vertical alignment for 6ths - */ - stem[Y_AXIS] *= 1.1; - bulb[Y_AXIS][UP] *= .35; - - boxes.push_back (bulb); - boxes.push_back (stem); - } - else if (glyph_name == "accidentals.natural") - { - Box lstem = b; - Box rstem = b; - Box belly = b; - - lstem[Y_AXIS] *= 1.1; - rstem[Y_AXIS] *= 1.1; - - belly[Y_AXIS] *= 0.75; - lstem[X_AXIS][RIGHT] *= .33; - rstem[X_AXIS][LEFT] = rstem[X_AXIS].linear_combination (1.0 / 3.0); - lstem[Y_AXIS][DOWN] = belly[Y_AXIS][DOWN]; - rstem[Y_AXIS][UP] = belly[Y_AXIS][UP]; - boxes.push_back (belly); - boxes.push_back (lstem); - boxes.push_back (rstem); - } + || glyph_name == "accidentals.mirroredflat") + { + Box stem = b; + Box bulb = b; + + /* + we could make the stem thinner, but that places the flats + really close. + */ + Direction bulb_dir + = glyph_name == "accidentals.mirroredflat" ? LEFT : RIGHT; + stem[X_AXIS][bulb_dir] = stem[X_AXIS].center (); + + /* + To prevent vertical alignment for 6ths + */ + stem[Y_AXIS] *= 1.1; + bulb[Y_AXIS][UP] *= .35; + + boxes.push_back (bulb); + boxes.push_back (stem); + } + else if (glyph_name == "accidentals.natural") + { + Box lstem = b; + Box rstem = b; + Box belly = b; + + lstem[Y_AXIS] *= 1.1; + rstem[Y_AXIS] *= 1.1; + + belly[Y_AXIS] *= 0.75; + lstem[X_AXIS][RIGHT] *= .33; + rstem[X_AXIS][LEFT] = rstem[X_AXIS].linear_combination (1.0 / 3.0); + lstem[Y_AXIS][DOWN] = belly[Y_AXIS][DOWN]; + rstem[Y_AXIS][UP] = belly[Y_AXIS][UP]; + boxes.push_back (belly); + boxes.push_back (lstem); + boxes.push_back (rstem); + } /* - TODO: add support for, double flat. + TODO: add support for, double flat. */ } @@ -160,7 +160,7 @@ Accidental_interface::accurate_boxes (Grob *me, Grob **common) boxes.push_back (b); Offset o (me->relative_coordinate (common[X_AXIS], X_AXIS), - me->relative_coordinate (common[Y_AXIS], Y_AXIS)); + me->relative_coordinate (common[Y_AXIS], Y_AXIS)); for (vsize i = boxes.size (); i--;) boxes[i].translate (o); @@ -175,9 +175,9 @@ Accidental_interface::print (SCM smob) Grob *me = unsmob_grob (smob); Grob *tie = unsmob_grob (me->get_object ("tie")); - if (tie && - (to_boolean (me->get_property ("hide-tied-accidental-after-break")) - || (!tie->original () && !to_boolean (me->get_property ("forced"))))) + if (tie + && (to_boolean (me->get_property ("hide-tied-accidental-after-break")) + || (!tie->original () && !to_boolean (me->get_property ("forced"))))) { me->suicide (); return SCM_EOL; @@ -194,46 +194,45 @@ Accidental_interface::get_stencil (Grob *me) SCM alist = me->get_property ("glyph-name-alist"); SCM alt = me->get_property ("alteration"); SCM glyph_name = ly_assoc_get (alt, alist, SCM_BOOL_F); - + if (!scm_is_string (glyph_name)) { me->warning (_f ("Could not find glyph-name for alteration %s", - ly_scm_write_string (alt).c_str ())); + ly_scm_write_string (alt).c_str ())); return SCM_EOL; } - + Stencil mol (fm->find_by_name (ly_scm2string (glyph_name))); if (to_boolean (me->get_property ("restore-first"))) { /* - this isn't correct for ancient accidentals, but they don't - use double flats/sharps anyway. - */ + this isn't correct for ancient accidentals, but they don't + use double flats/sharps anyway. + */ Stencil acc (fm->find_by_name ("accidentals.natural")); if (acc.is_empty ()) - me->warning (_ ("natural alteration glyph not found")); + me->warning (_ ("natural alteration glyph not found")); else - mol.add_at_edge (X_AXIS, LEFT, acc, 0.1); + mol.add_at_edge (X_AXIS, LEFT, acc, 0.1); } - + if (to_boolean (me->get_property ("parenthesized"))) mol = parenthesize (me, mol); return mol.smobbed_copy (); } - ADD_INTERFACE (Accidental_interface, - "A single accidental.", - - /* properties */ - "alteration " - "avoid-slur " - "forced " - "glyph-name-alist " - "hide-tied-accidental-after-break " - "parenthesized " - "restore-first " - "tie " - ); + "A single accidental.", + + /* properties */ + "alteration " + "avoid-slur " + "forced " + "glyph-name-alist " + "hide-tied-accidental-after-break " + "parenthesized " + "restore-first " + "tie " + ); diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 2fd49f5162..0e350c1426 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,6 @@ #include "system.hh" #include "warn.hh" - MAKE_SCHEME_CALLBACK (Align_interface, align_to_minimum_distances, 1); SCM Align_interface::align_to_minimum_distances (SCM smob) @@ -70,105 +69,105 @@ Align_interface::align_to_ideal_distances (SCM smob) // code. Split them into 2 functions, perhaps? static void get_skylines (Grob *me, - vector *const elements, - Axis a, - bool pure, int start, int end, - vector *const ret) + vector *const elements, + Axis a, + bool pure, int start, int end, + vector *const ret) { Grob *other_common = common_refpoint_of_array (*elements, me, other_axis (a)); - + for (vsize i = elements->size (); i--;) { Grob *g = (*elements)[i]; Skyline_pair skylines; if (!pure) - { - Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS - ? "vertical-skylines" - : "horizontal-skylines")); - if (skys) - skylines = *skys; - - /* This skyline was calculated relative to the grob g. In order to compare it to - skylines belonging to other grobs, we need to shift it so that it is relative - to the common reference. */ - Real offset = g->relative_coordinate (other_common, other_axis (a)); - skylines.shift (offset); - } + { + Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS + ? "vertical-skylines" + : "horizontal-skylines")); + if (skys) + skylines = *skys; + + /* This skyline was calculated relative to the grob g. In order to compare it to + skylines belonging to other grobs, we need to shift it so that it is relative + to the common reference. */ + Real offset = g->relative_coordinate (other_common, other_axis (a)); + skylines.shift (offset); + } else - { - assert (a == Y_AXIS); - Interval extent = g->pure_height (g, start, end); - - // This is a hack to get better accuracy on the pure-height of VerticalAlignment. - // It's quite common for a treble clef to be the highest element of one system - // and for a low note (or lyrics) to be the lowest note on another. The two will - // never collide, but the pure-height stuff only works with bounding boxes, so it - // doesn't know that. The result is a significant over-estimation of the pure-height, - // especially on systems with many staves. To correct for this, we build a skyline - // in two parts: the part we did above contains most of the grobs (note-heads, etc.) - // while the bit we're about to do only contains the breakable grobs at the beginning - // of the system. This way, the tall treble clefs are only compared with the treble - // clefs of the other staff and they will be ignored if the staff above is, for example, - // lyrics. - if (Axis_group_interface::has_interface (g) - && !Hara_kiri_group_spanner::request_suicide (g, start, end)) - { - extent = Axis_group_interface::rest_of_line_pure_height (g, start, end); - Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start); - if (!begin_of_line_extent.is_empty ()) - { - Box b; - b[a] = begin_of_line_extent; - b[other_axis (a)] = Interval (-infinity_f, -1); - skylines.insert (b, 0, other_axis (a)); - } - } - - if (!extent.is_empty ()) - { - Box b; - b[a] = extent; - b[other_axis (a)] = Interval (0, infinity_f); - skylines.insert (b, 0, other_axis (a)); - } - } + { + assert (a == Y_AXIS); + Interval extent = g->pure_height (g, start, end); + + // This is a hack to get better accuracy on the pure-height of VerticalAlignment. + // It's quite common for a treble clef to be the highest element of one system + // and for a low note (or lyrics) to be the lowest note on another. The two will + // never collide, but the pure-height stuff only works with bounding boxes, so it + // doesn't know that. The result is a significant over-estimation of the pure-height, + // especially on systems with many staves. To correct for this, we build a skyline + // in two parts: the part we did above contains most of the grobs (note-heads, etc.) + // while the bit we're about to do only contains the breakable grobs at the beginning + // of the system. This way, the tall treble clefs are only compared with the treble + // clefs of the other staff and they will be ignored if the staff above is, for example, + // lyrics. + if (Axis_group_interface::has_interface (g) + && !Hara_kiri_group_spanner::request_suicide (g, start, end)) + { + extent = Axis_group_interface::rest_of_line_pure_height (g, start, end); + Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start); + if (!begin_of_line_extent.is_empty ()) + { + Box b; + b[a] = begin_of_line_extent; + b[other_axis (a)] = Interval (-infinity_f, -1); + skylines.insert (b, 0, other_axis (a)); + } + } + + if (!extent.is_empty ()) + { + Box b; + b[a] = extent; + b[other_axis (a)] = Interval (0, infinity_f); + skylines.insert (b, 0, other_axis (a)); + } + } if (skylines.is_empty ()) - elements->erase (elements->begin () + i); + elements->erase (elements->begin () + i); else - ret->push_back (skylines); + ret->push_back (skylines); } reverse (*ret); } vector Align_interface::get_minimum_translations (Grob *me, - vector const &all_grobs, - Axis a) + vector const &all_grobs, + Axis a) { return internal_get_minimum_translations (me, all_grobs, a, true, false, 0, 0); } vector Align_interface::get_pure_minimum_translations (Grob *me, - vector const &all_grobs, - Axis a, int start, int end) + vector const &all_grobs, + Axis a, int start, int end) { return internal_get_minimum_translations (me, all_grobs, a, true, true, start, end); } vector Align_interface::get_minimum_translations_without_min_dist (Grob *me, - vector const &all_grobs, - Axis a) + vector const &all_grobs, + Axis a) { return internal_get_minimum_translations (me, all_grobs, a, false, false, 0, 0); } // If include_fixed_spacing is false, the only constraints that will be measured -// here are those that result from collisions (+ padding) and minimum-distance +// here are those that result from collisions (+ padding) and the spacing spec // between adjacent staves. // If include_fixed_spacing is true, constraints from line-break-system-details, // basic-distance+stretchable=0, and staff-staff-spacing of spaceable staves @@ -178,24 +177,24 @@ Align_interface::get_minimum_translations_without_min_dist (Grob *me, // else centered dynamics will break when there is a fixed alignment). vector Align_interface::internal_get_minimum_translations (Grob *me, - vector const &all_grobs, - Axis a, - bool include_fixed_spacing, - bool pure, int start, int end) + vector const &all_grobs, + Axis a, + bool include_fixed_spacing, + bool pure, int start, int end) { - if (!pure && a == Y_AXIS && dynamic_cast (me) && !me->get_system ()) + if (!pure && a == Y_AXIS && dynamic_cast (me) && !me->get_system ()) me->programming_error ("vertical alignment called before line-breaking"); // If include_fixed_spacing is true, we look at things like system-system-spacing // and alignment-distances, which only make sense for the toplevel VerticalAlignment. // If we aren't toplevel, we're working on something like BassFigureAlignment // and so we definitely don't want to include alignment-distances! - if (!dynamic_cast (me->get_parent (Y_AXIS))) + if (!dynamic_cast (me->get_parent (Y_AXIS))) include_fixed_spacing = false; - + Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"), - DOWN); - vector elems (all_grobs); // writable copy + DOWN); + vector elems (all_grobs); // writable copy vector skylines; get_skylines (me, &elems, a, pure, start, end, &skylines); @@ -214,47 +213,48 @@ Align_interface::internal_get_minimum_translations (Grob *me, Real padding = default_padding; if (j == 0) - dy = skylines[j][-stacking_dir].max_height () + padding; + dy = skylines[j][-stacking_dir].max_height () + padding; else - { - SCM spec = Page_layout_problem::get_spacing_spec (elems[j-1], elems[j], pure, start, end); - Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); - - dy = down_skyline.distance (skylines[j][-stacking_dir]) + padding; - - Real min_distance = 0; - 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 - // constraints coming from the previous spaceable staff - // as well as from the previous staff. - spec = Page_layout_problem::get_spacing_spec (last_spaceable_element, elems[j], pure, start, end); - Real spaceable_padding = 0; - Page_layout_problem::read_spacing_spec (spec, - &spaceable_padding, - ly_symbol2scm ("padding")); - dy = max(dy, (last_spaceable_skyline.distance (skylines[j][-stacking_dir]) - + stacking_dir*(last_spaceable_element_pos - where) + spaceable_padding)); - - Real spaceable_min_distance = 0; - if (Page_layout_problem::read_spacing_spec (spec, - &spaceable_min_distance, - ly_symbol2scm ("minimum-distance"))) - dy = max (dy, spaceable_min_distance + stacking_dir*(last_spaceable_element_pos - where)); - - dy = max (dy, Page_layout_problem::get_fixed_spacing (last_spaceable_element, elems[j], spaceable_count, - pure, start, end)); - } - } + { + SCM spec = Page_layout_problem::get_spacing_spec (elems[j - 1], elems[j], pure, start, end); + Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); + + dy = down_skyline.distance (skylines[j][-stacking_dir]) + padding; + + Real spec_distance = 0; + if (Page_layout_problem::read_spacing_spec (spec, &spec_distance, ly_symbol2scm ("minimum-distance"))) + dy = max (dy, spec_distance); + // Consider the likely final spacing when estimating distance between staves of the full score + if (INT_MAX == end && 0 == start + && Page_layout_problem::read_spacing_spec (spec, &spec_distance, ly_symbol2scm ("basic-distance"))) + dy = max (dy, spec_distance); + + if (include_fixed_spacing && Page_layout_problem::is_spaceable (elems[j]) && last_spaceable_element) + { + // Spaceable staves may have + // constraints coming from the previous spaceable staff + // as well as from the previous staff. + spec = Page_layout_problem::get_spacing_spec (last_spaceable_element, elems[j], pure, start, end); + Real spaceable_padding = 0; + Page_layout_problem::read_spacing_spec (spec, + &spaceable_padding, + ly_symbol2scm ("padding")); + dy = max (dy, (last_spaceable_skyline.distance (skylines[j][-stacking_dir]) + + stacking_dir * (last_spaceable_element_pos - where) + spaceable_padding)); + + Real spaceable_min_distance = 0; + if (Page_layout_problem::read_spacing_spec (spec, + &spaceable_min_distance, + ly_symbol2scm ("minimum-distance"))) + dy = max (dy, spaceable_min_distance + stacking_dir * (last_spaceable_element_pos - where)); + + dy = max (dy, Page_layout_problem::get_fixed_spacing (last_spaceable_element, elems[j], spaceable_count, + pure, start, end)); + } + } if (isinf (dy)) /* if the skyline is empty, maybe max_height is infinity_f */ - dy = 0.0; + dy = 0.0; dy = max (0.0, dy); down_skyline.raise (-stacking_dir * dy); @@ -263,12 +263,12 @@ Align_interface::internal_get_minimum_translations (Grob *me, translates.push_back (where); if (Page_layout_problem::is_spaceable (elems[j])) - { - spaceable_count++; - last_spaceable_element = elems[j]; - last_spaceable_element_pos = where; - last_spaceable_skyline = down_skyline; - } + { + spaceable_count++; + last_spaceable_element = elems[j]; + last_spaceable_element_pos = where; + last_spaceable_skyline = down_skyline; + } } // So far, we've computed the translates for all the non-empty elements. @@ -278,12 +278,12 @@ Align_interface::internal_get_minimum_translations (Grob *me, if (!translates.empty ()) { Real w = translates[0]; - for (vsize i = 0, j = 0; j < all_grobs.size (); j++) - { - if (i < elems.size () && all_grobs[j] == elems[i]) - w = translates[i++]; - all_translates.push_back (w); - } + for (vsize i = 0, j = 0; j < all_grobs.size (); j++) + { + if (i < elems.size () && all_grobs[j] == elems[i]) + w = translates[i++]; + all_translates.push_back (w); + } } return all_translates; } @@ -312,17 +312,30 @@ Align_interface::align_elements_to_minimum_distances (Grob *me, Axis a) all_grobs[j]->translate_axis (translates[j], a); } +MAKE_SCHEME_CALLBACK (Align_interface, full_score_pure_minimum_translations, 1); +SCM +Align_interface::full_score_pure_minimum_translations (SCM smob) +{ + Grob *me = unsmob_grob (smob); + extract_grob_set (me, "elements", all_grobs); + + vector pure_minimum_translations = Align_interface::get_pure_minimum_translations (me, all_grobs, Y_AXIS, 0, INT_MAX); + return ly_floatvector2scm (pure_minimum_translations); +} + Real Align_interface::get_pure_child_y_translation (Grob *me, Grob *ch, int start, int end) { extract_grob_set (me, "elements", all_grobs); - vector translates = get_pure_minimum_translations (me, all_grobs, Y_AXIS, start, end); + vector translates = start == 0 && end == INT_MAX + ? ly_scm2floatvector (me->get_object ("full-score-pure-minimum-translations")) + : get_pure_minimum_translations (me, all_grobs, Y_AXIS, start, end); if (translates.size ()) { for (vsize i = 0; i < all_grobs.size (); i++) - if (all_grobs[i] == ch) - return translates[i]; + if (all_grobs[i] == ch) + return translates[i]; } else return 0; @@ -343,7 +356,7 @@ Align_interface::add_element (Grob *me, Grob *element) Axis a = Align_interface::axis (me); SCM sym = axis_offset_symbol (a); SCM proc = axis_parent_positioning (a); - + element->set_property (sym, proc); Axis_group_interface::add_element (me, element); } @@ -364,17 +377,18 @@ Align_interface::set_ordered (Grob *me) } ADD_INTERFACE (Align_interface, - "Order grobs from top to bottom, left to right, right to left" - " or bottom to top. For vertical alignments of staves, the" - " @code{break-system-details} of the left" - " @rinternals{NonMusicalPaperColumn} may be set to tune" - " vertical spacing.", - - /* properties */ - "align-dir " - "axes " - "elements " - "padding " - "positioning-done " - "stacking-dir " - ); + "Order grobs from top to bottom, left to right, right to left" + " or bottom to top. For vertical alignments of staves, the" + " @code{break-system-details} of the left" + " @rinternals{NonMusicalPaperColumn} may be set to tune" + " vertical spacing.", + + /* properties */ + "align-dir " + "axes " + "full-score-pure-minimum-translations " + "elements " + "padding " + "positioning-done " + "stacking-dir " + ); diff --git a/lily/all-font-metrics-scheme.cc b/lily/all-font-metrics-scheme.cc index 0dd78123ea..aef6be4745 100644 --- a/lily/all-font-metrics-scheme.cc +++ b/lily/all-font-metrics-scheme.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,8 +22,8 @@ #include "main.hh" LY_DEFINE (ly_reset_all_fonts, "ly:reset-all-fonts", 0, 0, 0, - (), - "Forget all about previously loaded fonts.") + (), + "Forget all about previously loaded fonts.") { delete all_fonts_global; all_fonts_global = new All_font_metrics (global_path.to_string ()); @@ -31,23 +31,22 @@ LY_DEFINE (ly_reset_all_fonts, "ly:reset-all-fonts", 0, 0, 0, return SCM_UNSPECIFIED; } - LY_DEFINE (ly_system_font_load, "ly:system-font-load", 1, 0, 0, - (SCM name), - "Load the OpenType system font @file{@var{name}.otf}." - " Fonts loaded with this command must contain three" - " additional SFNT font tables called @code{LILC}," - " @code{LILF}, and @code{LILY}, needed for typesetting" - " musical elements. Currently, only the Emmentaler and" - " the Emmentaler-Brace fonts fulfill these requirements.\n" - "\n" - "Note that only @code{ly:font-get-glyph} and derived" - " code (like @code{\\lookup}) can access glyphs from" - " the system fonts; text strings are handled exclusively" - " via the Pango interface.") + (SCM name), + "Load the OpenType system font @file{@var{name}.otf}." + " Fonts loaded with this command must contain three" + " additional SFNT font tables called @code{LILC}," + " @code{LILF}, and @code{LILY}, needed for typesetting" + " musical elements. Currently, only the Emmentaler and" + " the Emmentaler-Brace fonts fulfill these requirements.\n" + "\n" + "Note that only @code{ly:font-get-glyph} and derived" + " code (like @code{\\lookup}) can access glyphs from" + " the system fonts; text strings are handled exclusively" + " via the Pango interface.") { LY_ASSERT_TYPE (scm_is_string, name, 1); - + string name_str = ly_scm2string (name); Font_metric *fm = all_fonts_global->find_font (name_str); diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index 23119125aa..36ede54bb4 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,11 +27,10 @@ #include "scm-hash.hh" #include "warn.hh" - Index_to_charcode_map const * All_font_metrics::get_index_to_charcode_map (string filename, - int face_index, - FT_Face face) + int face_index, + FT_Face face) { string key = filename + String_convert::int_string (face_index); if (filename_charcode_maps_map_.find (key) @@ -41,7 +40,6 @@ All_font_metrics::get_index_to_charcode_map (string filename, return &filename_charcode_maps_map_[key]; } - All_font_metrics::All_font_metrics (string path) { otf_dict_ = new Scheme_hash_table; @@ -53,7 +51,7 @@ All_font_metrics::All_font_metrics (string path) pango_dpi_ = PANGO_RESOLUTION; pango_ft2_font_map_set_resolution (pango_ft2_fontmap_, - pango_dpi_, pango_dpi_); + pango_dpi_, pango_dpi_); pango_dict_ = new Scheme_hash_table; #endif @@ -79,8 +77,8 @@ All_font_metrics::All_font_metrics (All_font_metrics const &) Pango_font * All_font_metrics::find_pango_font (PangoFontDescription const *description, - Real output_scale - ) + Real output_scale + ) { gchar *pango_fn = pango_font_description_to_filename (description); SCM key = ly_symbol2scm (pango_fn); @@ -88,23 +86,21 @@ All_font_metrics::find_pango_font (PangoFontDescription const *description, SCM val; if (!pango_dict_->try_retrieve (key, &val)) { - if (be_verbose_global) - progress_indication ("\n[" + string (pango_fn)); + debug_output ("[" + string (pango_fn), true); // start on a new line Pango_font *pf = new Pango_font (pango_ft2_fontmap_, - description, - output_scale - ); - + description, + output_scale + ); + val = pf->self_scm (); pango_dict_->set (key, val); pf->unprotect (); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); pf->description_ = scm_cons (SCM_BOOL_F, - scm_from_double (1.0)); + scm_from_double (1.0)); } g_free (pango_fn); return dynamic_cast (unsmob_metrics (val)); @@ -112,7 +108,6 @@ All_font_metrics::find_pango_font (PangoFontDescription const *description, #endif - Open_type_font * All_font_metrics::find_otf (string name) { @@ -123,22 +118,20 @@ All_font_metrics::find_otf (string name) string file_name; if (file_name.empty ()) - file_name = search_path_.find (name + ".otf"); + file_name = search_path_.find (name + ".otf"); if (file_name.empty ()) - return 0; + return 0; - if (be_verbose_global) - progress_indication ("\n[" + file_name); + debug_output ("[" + file_name, true); // start on a new line val = Open_type_font::make_otf (file_name); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); unsmob_metrics (val)->file_name_ = file_name; SCM name_string = ly_string2scm (name); unsmob_metrics (val)->description_ = scm_cons (name_string, - scm_from_double (1.0)); + scm_from_double (1.0)); otf_dict_->set (sname, val); unsmob_metrics (val)->unprotect (); } diff --git a/lily/ambitus-engraver.cc b/lily/ambitus-engraver.cc index 221c1e8881..92fee10a50 100644 --- a/lily/ambitus-engraver.cc +++ b/lily/ambitus-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter Han-Wen Nienhuys set_parent (heads_[d], Y_AXIS); heads_[d]->set_object ("accidental-grob", - accidentals_[d]->self_scm ()); + accidentals_[d]->self_scm ()); Axis_group_interface::add_element (group_, heads_[d]); Axis_group_interface::add_element (group_, accidentals_[d]); } - while (flip (&d) != DOWN); ambitus_->set_parent (heads_[DOWN], X_AXIS); Axis_group_interface::add_element (group_, ambitus_); @@ -120,8 +118,14 @@ Ambitus_engraver::stop_translation_timestep () * may then oversee a clef that is defined in a staff context if * we are in a voice context; middleCPosition would then be * assumed to be 0. + + * Don't use middleCPosition as this may be thwarted by a cue + * starting here. middleCOffset is not affected by cue clefs. */ - start_c0_ = robust_scm2int (get_property ("middleCPosition"), 0); + int clef_pos = robust_scm2int (get_property ("middleCClefPosition"), 0); + int offset = robust_scm2int (get_property ("middleCOffset"), 0); + + start_c0_ = clef_pos + offset; start_key_sig_ = get_property ("keySignature"); is_typeset_ = true; @@ -136,17 +140,17 @@ Ambitus_engraver::acknowledge_note_head (Grob_info info) { SCM p = nr->get_property ("pitch"); /* - If the engraver is added to a percussion context, - filter out unpitched note heads. + If the engraver is added to a percussion context, + filter out unpitched note heads. */ if (!unsmob_pitch (p)) - return; + return; Pitch pitch = *unsmob_pitch (p); Drul_array expands = pitch_interval_.add_point (pitch); if (expands[UP]) - causes_[UP] = nr; + causes_[UP] = nr; if (expands[DOWN]) - causes_[DOWN] = nr; + causes_[DOWN] = nr; } } @@ -155,63 +159,59 @@ Ambitus_engraver::finalize () { if (ambitus_ && !pitch_interval_.is_empty ()) { - Grob *accidental_placement = - make_item ("AccidentalPlacement", accidentals_[DOWN]->self_scm ()); - - Direction d = DOWN; - do - { - Pitch p = pitch_interval_[d]; - heads_[d]->set_property ("cause", causes_[d]->self_scm()); - heads_[d]->set_property ("staff-position", - scm_from_int (start_c0_ + p.steps ())); - - SCM handle = scm_assoc (scm_cons (scm_from_int (p.get_octave ()), - scm_from_int (p.get_notename ())), - start_key_sig_); - - if (handle == SCM_BOOL_F) - handle = scm_assoc (scm_from_int (p.get_notename ()), - start_key_sig_); - - Rational sig_alter = (handle != SCM_BOOL_F) - ? robust_scm2rational (scm_cdr (handle), Rational (0)) - : Rational (0); - - const Pitch other = pitch_interval_[-d]; - - if (sig_alter == p.get_alteration () - && !((p.steps () == other.steps ()) - && (p.get_alteration () != other.get_alteration ()))) - { - accidentals_[d]->suicide (); - heads_[d]->set_object ("accidental-grob", SCM_EOL); - } - else - accidentals_[d]-> - set_property ("alteration", - ly_rational2scm (p.get_alteration ())); - Separation_item::add_conditional_item (heads_[d], - accidental_placement); - Accidental_placement::add_accidental (accidental_placement, - accidentals_[d]); - Pointer_group_interface::add_grob (ambitus_, - ly_symbol2scm ("note-heads"), - heads_[d]); - } - while (flip (&d) != DOWN); + Grob *accidental_placement + = make_item ("AccidentalPlacement", accidentals_[DOWN]->self_scm ()); + + for (DOWN_and_UP (d)) + { + Pitch p = pitch_interval_[d]; + heads_[d]->set_property ("cause", causes_[d]->self_scm ()); + heads_[d]->set_property ("staff-position", + scm_from_int (start_c0_ + p.steps ())); + + SCM handle = scm_assoc (scm_cons (scm_from_int (p.get_octave ()), + scm_from_int (p.get_notename ())), + start_key_sig_); + + if (handle == SCM_BOOL_F) + handle = scm_assoc (scm_from_int (p.get_notename ()), + start_key_sig_); + + Rational sig_alter = (handle != SCM_BOOL_F) + ? robust_scm2rational (scm_cdr (handle), Rational (0)) + : Rational (0); + + const Pitch other = pitch_interval_[-d]; + + if (sig_alter == p.get_alteration () + && !((p.steps () == other.steps ()) + && (p.get_alteration () != other.get_alteration ()))) + { + accidentals_[d]->suicide (); + heads_[d]->set_object ("accidental-grob", SCM_EOL); + } + else + accidentals_[d]-> + set_property ("alteration", + ly_rational2scm (p.get_alteration ())); + Separation_item::add_conditional_item (heads_[d], + accidental_placement); + Accidental_placement::add_accidental (accidental_placement, + accidentals_[d]); + Pointer_group_interface::add_grob (ambitus_, + ly_symbol2scm ("note-heads"), + heads_[d]); + } Axis_group_interface::add_element (group_, accidental_placement); } else { - Direction d = DOWN; - do - { - accidentals_[d]->suicide (); - heads_[d]->suicide (); - } - while (flip (&d) != DOWN); + for (DOWN_and_UP (d)) + { + accidentals_[d]->suicide (); + heads_[d]->suicide (); + } ambitus_->suicide (); } @@ -219,20 +219,21 @@ Ambitus_engraver::finalize () ADD_ACKNOWLEDGER (Ambitus_engraver, note_head); ADD_TRANSLATOR (Ambitus_engraver, - /* doc */ - "Create an ambitus.", - - /* create */ - "AccidentalPlacement " - "Ambitus " - "AmbitusAccidental " - "AmbitusLine " - "AmbitusNoteHead ", - - /* read */ - "keySignature " - "middleCPosition ", - - /* write */ - "" - ); + /* doc */ + "Create an ambitus.", + + /* create */ + "AccidentalPlacement " + "Ambitus " + "AmbitusAccidental " + "AmbitusLine " + "AmbitusNoteHead ", + + /* read */ + "keySignature " + "middleCClefPosition " + "middleCOffset ", + + /* write */ + "" + ); diff --git a/lily/apply-context-iterator.cc b/lily/apply-context-iterator.cc index 65c7fe00a4..832d74ce1a 100644 --- a/lily/apply-context-iterator.cc +++ b/lily/apply-context-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/arpeggio-engraver.cc b/lily/arpeggio-engraver.cc index 62be51d90b..19f635f7f1 100644 --- a/lily/arpeggio-engraver.cc +++ b/lily/arpeggio-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,11 +64,11 @@ Arpeggio_engraver::acknowledge_stem (Grob_info info) if (arpeggio_) { if (!arpeggio_->get_parent (Y_AXIS)) - arpeggio_->set_parent (info.grob (), Y_AXIS); + arpeggio_->set_parent (info.grob (), Y_AXIS); Pointer_group_interface::add_grob (arpeggio_, - ly_symbol2scm ("stems"), - info.grob ()); + ly_symbol2scm ("stems"), + info.grob ()); } } void @@ -103,15 +103,15 @@ ADD_ACKNOWLEDGER (Arpeggio_engraver, stem); ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head); ADD_TRANSLATOR (Arpeggio_engraver, - /* doc */ - "Generate an Arpeggio symbol.", + /* doc */ + "Generate an Arpeggio symbol.", - /* create */ - "Arpeggio", + /* create */ + "Arpeggio", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index b609f846d7..96b6bbd3d5 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,6 +22,7 @@ #include "bezier.hh" #include "font-interface.hh" #include "grob.hh" +#include "international.hh" #include "lookup.hh" #include "output-def.hh" #include "pointer-group-interface.hh" @@ -49,7 +50,7 @@ Arpeggio::get_common_y (Grob *me) { Grob *stem = stems[i]; common = common->common_refpoint (Staff_symbol_referencer::get_staff_symbol (stem), - Y_AXIS); + Y_AXIS); } return common; @@ -94,27 +95,27 @@ Arpeggio::print (SCM smob) { Grob *me = unsmob_grob (smob); Interval heads = robust_scm2interval (me->get_property ("positions"), - Interval ()) - * Staff_symbol_referencer::staff_space (me); + Interval ()) + * Staff_symbol_referencer::staff_space (me); if (heads.is_empty () || heads.length () < 0.5) { if (to_boolean (me->get_property ("transparent"))) - { - /* - This is part of a cross-staff/-voice span-arpeggio, - so we need to ensure `heads' is large enough to encompass - a single trill-element since the span-arpeggio depends on - its children to prevent collisions. - */ - heads.unite (get_squiggle (me).extent (Y_AXIS)); - } + { + /* + This is part of a cross-staff/-voice span-arpeggio, + so we need to ensure `heads' is large enough to encompass + a single trill-element since the span-arpeggio depends on + its children to prevent collisions. + */ + heads.unite (get_squiggle (me).extent (Y_AXIS)); + } else - { - me->warning ("no heads for arpeggio found?"); - me->suicide (); - return SCM_EOL; - } + { + me->warning (_ ("no heads for arpeggio found?")); + me->suicide (); + return SCM_EOL; + } } SCM ad = me->get_property ("arpeggio-direction"); @@ -162,8 +163,8 @@ Arpeggio::brew_chord_bracket (SCM smob) { Grob *me = unsmob_grob (smob); Interval heads = robust_scm2interval (me->get_property ("positions"), - Interval ()) - * Staff_symbol_referencer::staff_space (me); + Interval ()) + * Staff_symbol_referencer::staff_space (me); Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real sp = 1.5 * Staff_symbol_referencer::staff_space (me); @@ -182,8 +183,8 @@ Arpeggio::brew_chord_slur (SCM smob) Grob *me = unsmob_grob (smob); SCM dash_definition = me->get_property ("dash-definition"); Interval heads = robust_scm2interval (me->get_property ("positions"), - Interval ()) - * Staff_symbol_referencer::staff_space (me); + Interval ()) + * Staff_symbol_referencer::staff_space (me); Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real dy = heads.length (); @@ -222,13 +223,13 @@ Arpeggio::pure_height (SCM smob, SCM, SCM) } ADD_INTERFACE (Arpeggio, - "Functions and settings for drawing an arpeggio symbol.", - - /* properties */ - "arpeggio-direction " - "positions " - "script-priority " // TODO: make around-note-interface - "stems " - "dash-definition " // TODO: make apply to non-slur arpeggios - ); + "Functions and settings for drawing an arpeggio symbol.", + + /* properties */ + "arpeggio-direction " + "positions " + "script-priority " // TODO: make around-note-interface + "stems " + "dash-definition " // TODO: make apply to non-slur arpeggios + ); diff --git a/lily/articulations.cc b/lily/articulations.cc index 93018656a5..07f74e11c7 100644 --- a/lily/articulations.cc +++ b/lily/articulations.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Carl Sorensen + Copyright (C) 2010--2012 Carl Sorensen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,8 +35,8 @@ SCM articulation_list (vector note_events, - vector articulation_events, - char const *articulation_name) + vector articulation_events, + char const *articulation_name) { vector string_events; SCM articulations = SCM_EOL; @@ -50,36 +50,36 @@ articulation_list (vector note_events, Stream_event *articulation_event = 0; /* - For notes inside a chord construct, string indications are - stored as articulations on the note, so we check through - the notes + For notes inside a chord construct, string indications are + stored as articulations on the note, so we check through + the notes */ for (SCM s = event->get_property ("articulations"); - !articulation_event && scm_is_pair (s); s = scm_cdr (s)) - { - Stream_event *art = unsmob_stream_event (scm_car (s)); + !articulation_event && scm_is_pair (s); s = scm_cdr (s)) + { + Stream_event *art = unsmob_stream_event (scm_car (s)); - if (art->in_event_class (articulation_name)) - articulation_event = art; - } + if (art->in_event_class (articulation_name)) + articulation_event = art; + } /* - For string indications listed outside a chord construct, - a string_number_event is generated, so if there was no string - in the articulations, we check for string events outside - the chord construct + For string indications listed outside a chord construct, + a string_number_event is generated, so if there was no string + in the articulations, we check for string events outside + the chord construct */ if (!articulation_event && j < articulation_events.size ()) - { - articulation_event = articulation_events[j]; - if (j + 1 < articulation_events.size ()) - j++; - } + { + articulation_event = articulation_events[j]; + if (j + 1 < articulation_events.size ()) + j++; + } articulations = scm_cons ((articulation_event - ? articulation_event->self_scm () - : SCM_EOL), - articulations); + ? articulation_event->self_scm () + : SCM_EOL), + articulations); } - return (scm_reverse (articulations)); + return scm_reverse_x (articulations, SCM_EOL); } diff --git a/lily/audio-column.cc b/lily/audio-column.cc index 105eb1dda8..64203fd937 100644 --- a/lily/audio-column.cc +++ b/lily/audio-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,4 +51,3 @@ Audio_column::offset_when (Moment m) when_ += m; } - diff --git a/lily/audio-element-info.cc b/lily/audio-element-info.cc index e7db515aab..85a74cccaf 100644 --- a/lily/audio-element-info.cc +++ b/lily/audio-element-info.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,11 +36,11 @@ Audio_element_info::Audio_element_info () origin_trans_ = 0; } -vector +vector Audio_element_info::origin_contexts (Translator *end) const { Context *t = origin_trans_->context (); - vector r; + vector r; do { r.push_back (t); diff --git a/lily/audio-element.cc b/lily/audio-element.cc index cd3f7c8d18..21105a1eb7 100644 --- a/lily/audio-element.cc +++ b/lily/audio-element.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with LilyPond. If not, see . */ -#include +#include #include "audio-element.hh" diff --git a/lily/audio-item.cc b/lily/audio-item.cc index 76a3923848..201e8fd98e 100644 --- a/lily/audio-item.cc +++ b/lily/audio-item.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,18 +39,18 @@ Audio_item::get_column () const } Audio_item::Audio_item () - : audio_column_ (0) - , channel_ (0) + : audio_column_ (0), + channel_ (0) { } Audio_note::Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposing) - : pitch_ (p) - , length_mom_ (m) - , transposing_ (transposing) - , dynamic_ (0) - , tied_ (0) - , tie_event_ (tie_event) + : pitch_ (p), + length_mom_ (m), + transposing_ (transposing), + dynamic_ (0), + tied_ (0), + tie_event_ (tie_event) { } @@ -74,14 +74,16 @@ Audio_key::Audio_key (int acc, bool major) } Audio_dynamic::Audio_dynamic () - : volume_ (-1) - , silent_ (false) + : volume_ (-1), + silent_ (false) { } -Audio_span_dynamic::Audio_span_dynamic () +Audio_span_dynamic::Audio_span_dynamic (Real min_volume, Real max_volume) { grow_dir_ = CENTER; + min_volume_ = min_volume; + max_volume_ = max_volume; } void @@ -94,8 +96,8 @@ Audio_span_dynamic::add_absolute (Audio_dynamic *d) Moment remap_grace_duration (Moment m) { - return Moment (m.main_part_ + Rational (9,40) * m.grace_part_, - Rational (0)); + return Moment (m.main_part_ + Rational (9, 40) * m.grace_part_, + Rational (0)); } Real @@ -114,13 +116,13 @@ void Audio_span_dynamic::render () { if (dynamics_.size () <= 1) - return ; + return; assert (dynamics_[0]->volume_ >= 0); - while (dynamics_.back ()->volume_ > 0 - && dynamics_.size () > 1 - && sign (dynamics_.back ()->volume_ - dynamics_[0]->volume_) != grow_dir_) + while (dynamics_.back ()->volume_ > 0 + && dynamics_.size () > 1 + && sign (dynamics_.back ()->volume_ - dynamics_[0]->volume_) != grow_dir_) { dynamics_.erase (dynamics_.end () - 1); } @@ -128,36 +130,37 @@ Audio_span_dynamic::render () if (dynamics_.size () <= 1) { programming_error ("Impossible or ambiguous (de)crescendo in MIDI."); - return ; + return; } - Real delta_v = grow_dir_ * 0.1; - Real start_v = dynamics_[0]->volume_; if (dynamics_.back ()->volume_ < 0) - dynamics_.back ()->volume_ = max (min (start_v + grow_dir_ * 0.25, 1.0), 0.1); + { + // The dynamic spanner does not end with an explicit dynamic script + // event. Adjust the end volume by at most 1/4 of the available + // volume range in this case. + dynamics_.back ()->volume_ = max (min (start_v + grow_dir_ * (max_volume_ - min_volume_) * 0.25, max_volume_), min_volume_); + } - delta_v = dynamics_.back ()->volume_ - dynamics_[0]->volume_; + Real delta_v = dynamics_.back ()->volume_ - dynamics_[0]->volume_; Moment start = dynamics_[0]->get_column ()->when (); Real total_t = moment_to_real (dynamics_.back ()->get_column ()->when () - start); - for (vsize i = 1; i < dynamics_.size (); i ++) + for (vsize i = 1; i < dynamics_.size (); i++) { Moment dt_moment = dynamics_[i]->get_column ()->when () - - start; + - start; - Real dt = moment_to_real (dt_moment); + Real dt = moment_to_real (dt_moment); - Real v = start_v + delta_v * (dt / total_t); + Real v = start_v + delta_v * (dt / total_t); dynamics_[i]->volume_ = v; } } - - Audio_tempo::Audio_tempo (int per_minute_4) { per_minute_4_ = per_minute_4; diff --git a/lily/audio-staff.cc b/lily/audio-staff.cc index ddab7e04bc..1877464f45 100644 --- a/lily/audio-staff.cc +++ b/lily/audio-staff.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ Audio_staff::output (Midi_stream &midi_stream, int track, bool port) i.process (); i.finalize (); - + midi_stream.write (midi_track); } diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 0d5fa60ed2..fe9c94ae54 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Jan Nieuwenhuizen + Copyright (C) 1999--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,10 +17,10 @@ along with LilyPond. If not, see . */ -#include "bar-line.hh" #include "beaming-pattern.hh" #include "beam.hh" #include "context.hh" +#include "context-handle.hh" #include "duration.hh" #include "engraver.hh" #include "item.hh" @@ -80,7 +80,10 @@ private: Moment extend_mom_; Moment beam_start_moment_; Moment beam_start_location_; - Context *beam_start_context_; + /* + Handle on the starting staff keeps it alive until beam is comlete + */ + Context_handle beam_start_context_; // We act as if beam were created, and start a grouping anyway. Beaming_pattern *grouping_; @@ -88,11 +91,9 @@ private: Beaming_pattern *finished_grouping_; - Beaming_options beaming_options_; Beaming_options finished_beaming_options_; - void check_bar_property (); }; @@ -127,7 +128,7 @@ Auto_beam_engraver::process_music () if (stems_) { if (extend_mom_ < now) - end_beam (); + end_beam (); } if (scm_is_string (get_property ("whichBar"))) @@ -139,9 +140,9 @@ Auto_beam_engraver::process_music () if (forbid_) { if (stems_) - end_beam (); + end_beam (); else - junk_beam (); + junk_beam (); } } @@ -168,11 +169,11 @@ bool Auto_beam_engraver::test_moment (Direction dir, Moment test_mom, Moment dur) { return scm_call_4 (get_property ("autoBeamCheck"), - context ()->self_scm (), - scm_from_int (dir), + context ()->self_scm (), + scm_from_int (dir), test_mom.smobbed_copy (), - dur.smobbed_copy ()) - != SCM_BOOL_F; + dur.smobbed_copy ()) + != SCM_BOOL_F; } void @@ -184,7 +185,7 @@ Auto_beam_engraver::consider_begin (Moment test_mom, Moment dur) { bool b = test_moment (START, test_mom, dur); if (b) - begin_beam (); + begin_beam (); } } @@ -194,10 +195,10 @@ Auto_beam_engraver::consider_end (Moment test_mom, Moment dur) if (stems_) { /* Allow already started autobeam to end: - don't check for autoBeaming */ + don't check for autoBeaming */ bool b = test_moment (STOP, test_mom, dur); if (b) - end_beam (); + end_beam (); } } @@ -221,7 +222,7 @@ Auto_beam_engraver::create_beam () Beam::add_stem (beam, (*stems_)[i]); Grob_info i = make_grob_info (beam, (*stems_)[0]->self_scm ()); - i.rerouting_daddy_context_ = beam_start_context_; + i.rerouting_daddy_context_ = beam_start_context_.get_context (); announce_grob (i); return beam; @@ -241,7 +242,7 @@ Auto_beam_engraver::begin_beam () beaming_options_.from_context (context ()); beam_settings_ = updated_grob_properties (context (), ly_symbol2scm ("Beam")); - beam_start_context_ = context ()->get_parent_context (); + beam_start_context_.set_context (context ()->get_parent_context ()); beam_start_moment_ = now_mom (); beam_start_location_ = robust_scm2moment (get_property ("measurePosition"), Moment (0)); @@ -272,20 +273,21 @@ Auto_beam_engraver::end_beam () finished_beam_ = create_beam (); if (finished_beam_) - { - Grob_info i = make_grob_info (finished_beam_, SCM_EOL); - i.rerouting_daddy_context_ = beam_start_context_; - - announce_end_grob (i); - finished_grouping_ = grouping_; - finished_beaming_options_ = beaming_options_; - } + { + Grob_info i = make_grob_info (finished_beam_, SCM_EOL); + i.rerouting_daddy_context_ = beam_start_context_.get_context (); + + announce_end_grob (i); + finished_grouping_ = grouping_; + finished_beaming_options_ = beaming_options_; + } delete stems_; stems_ = 0; grouping_ = 0; beam_settings_ = SCM_EOL; } + beam_start_context_.set_context (NULL); shortest_mom_ = Moment (Rational (1, 4)); } @@ -295,7 +297,7 @@ Auto_beam_engraver::typeset_beam () if (finished_beam_) { if (!finished_beam_->get_bound (RIGHT)) - finished_beam_->set_bound (RIGHT, finished_beam_->get_bound (LEFT)); + finished_beam_->set_bound (RIGHT, finished_beam_->get_bound (LEFT)); finished_grouping_->beamify (finished_beaming_options_); Beam::set_beaming (finished_beam_, finished_grouping_); @@ -324,7 +326,6 @@ Auto_beam_engraver::finalize () junk_beam (); } - void Auto_beam_engraver::acknowledge_beam (Grob_info /* info */) { @@ -375,14 +376,14 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info) if (!Stem::head_count (stem)) { if (stems_) - end_beam (); + end_beam (); return; } if (Stem::get_beam (stem)) { if (stems_) - junk_beam (); + junk_beam (); return; } @@ -391,7 +392,7 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info) if (durlog <= 2) { if (stems_) - end_beam (); + end_beam (); return; } @@ -402,15 +403,18 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info) if (bool (beam_start_location_.grace_part_) != bool (now.grace_part_)) return; - Moment dur = unsmob_duration (ev->get_property ("duration"))->get_length (); + Duration *stem_duration = unsmob_duration (ev->get_property ("duration")); + Moment dur = stem_duration->get_length (); + + //Moment dur = unsmob_duration (ev->get_property ("duration"))->get_length (); Moment measure_now = measure_position (context ()); bool recheck_needed = false; if (dur < shortest_mom_) { - /* new shortest moment, so store it and set recheck_needed */ - shortest_mom_ = dur; - recheck_needed = true; + /* new shortest moment, so store it and set recheck_needed */ + shortest_mom_ = dur; + recheck_needed = true; } /* end should be based on shortest_mom_, begin should be @@ -422,8 +426,10 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info) return; grouping_->add_stem (now - beam_start_moment_ + beam_start_location_, - durlog - 2, - Stem::is_invisible (stem)); + durlog - 2, + Stem::is_invisible (stem), + stem_duration->factor (), + (stem->get_property ("tuplet-start") == SCM_BOOL_T)); stems_->push_back (stem); last_add_mom_ = now; extend_mom_ = max (extend_mom_, now) + get_event_length (ev, now); @@ -447,7 +453,6 @@ Auto_beam_engraver::recheck_beam () bool found_end; - for (vsize i = 0; i < stems_->size () - 1;) { found_end = test_moment (STOP, @@ -506,7 +511,7 @@ Auto_beam_engraver::remove_end_stems (vsize split_index) void Auto_beam_engraver::process_acknowledged () { - Moment now = now_mom(); + Moment now = now_mom (); if (extend_mom_ > now) return; @@ -518,13 +523,13 @@ Auto_beam_engraver::process_acknowledged () else if (process_acknowledged_count_ > 1) { if (stems_) - { - if ((extend_mom_ < now) - || ((extend_mom_ == now) && (last_add_mom_ != now))) - end_beam (); - else if (!stems_->size ()) - junk_beam (); - } + { + if ((extend_mom_ < now) + || ((extend_mom_ == now) && (last_add_mom_ != now))) + end_beam (); + else if (!stems_->size ()) + junk_beam (); + } } process_acknowledged_count_++; @@ -552,9 +557,10 @@ ADD_TRANSLATOR (Auto_beam_engraver, "autoBeaming " "baseMoment " "beamExceptions " + "beamHalfMeasure " "beatStructure " "subdivideBeams ", /* write */ "" - ); + ); diff --git a/lily/auto-change-iterator.cc b/lily/auto-change-iterator.cc index 76e43dbccd..b52fb16bb4 100644 --- a/lily/auto-change-iterator.cc +++ b/lily/auto-change-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,7 +47,7 @@ private: void Auto_change_iterator::change_to (Music_iterator *it, SCM to_type_sym, - string to_id) + string to_id) { Context *current = it->get_outlet (); Context *last = 0; @@ -77,22 +77,22 @@ Auto_change_iterator::change_to (Music_iterator *it, SCM to_type_sym, if (current) { if (last) - { - Context *dest - = it->get_outlet ()->find_create_context (to_type_sym, to_id, SCM_EOL); - - send_stream_event (last, "ChangeParent", get_music ()->origin (), - ly_symbol2scm ("context"), dest->self_scm ()); - } + { + Context *dest + = it->get_outlet ()->find_create_context (to_type_sym, to_id, SCM_EOL); + + send_stream_event (last, "ChangeParent", get_music ()->origin (), + ly_symbol2scm ("context"), dest->self_scm ()); + } else - { - /* - We could change the current translator's id, but that would make - errors hard to catch - - */ - ; - } + { + /* + We could change the current translator's id, but that would make + errors hard to catch + + */ + ; + } } } @@ -110,19 +110,19 @@ Auto_change_iterator::process (Moment m) { splitm = unsmob_moment (scm_caar (split_list_)); if ((*splitm + start_moment_) > now) - break; + break; SCM tag = scm_cdar (split_list_); Direction d = to_dir (tag); if (d && d != where_dir_) - { - where_dir_ = d; - string to_id = (d >= 0) ? "up" : "down"; - change_to (child_iter_, - ly_symbol2scm ("Staff"), - to_id); - } + { + where_dir_ = d; + string to_id = (d >= 0) ? "up" : "down"; + change_to (child_iter_, + ly_symbol2scm ("Staff"), + to_id); + } } } @@ -140,17 +140,17 @@ Auto_change_iterator::construct_children () SCM props = get_outlet ()->get_property ("trebleStaffProperties"); Context *up = get_outlet ()->find_create_context (ly_symbol2scm ("Staff"), - "up", props); + "up", props); props = get_outlet ()->get_property ("bassStaffProperties"); Context *down = get_outlet ()->find_create_context (ly_symbol2scm ("Staff"), - "down", props); + "down", props); up_.set_context (up); down_.set_context (down); Context *voice = up->find_create_context (ly_symbol2scm ("Voice"), - "", SCM_EOL); + "", SCM_EOL); set_context (voice); Music_wrapper_iterator::construct_children (); } diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 60d16767b0..10ad7f5992 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -87,19 +87,19 @@ Axis_group_engraver::process_acknowledged () for (vsize i = 0; i < elts_.size (); i++) { if (!unsmob_grob (elts_[i]->get_object ("axis-group-parent-Y"))) - { - if (staffline_->get_parent (Y_AXIS) - && staffline_->get_parent (Y_AXIS) == elts_[i]) - { - staffline_->warning (_ ("Axis_group_engraver: vertical group already has a parent")); - staffline_->warning (_ ("are there two Axis_group_engravers?")); - staffline_->warning (_ ("removing this vertical group")); - staffline_->suicide (); - staffline_ = 0; - break; - } - add_element (elts_[i]); - } + { + if (staffline_->get_parent (Y_AXIS) + && staffline_->get_parent (Y_AXIS) == elts_[i]) + { + staffline_->warning (_ ("Axis_group_engraver: vertical group already has a parent")); + staffline_->warning (_ ("are there two Axis_group_engravers?")); + staffline_->warning (_ ("removing this vertical group")); + staffline_->suicide (); + staffline_ = 0; + break; + } + add_element (elts_[i]); + } } elts_.clear (); } @@ -113,16 +113,16 @@ Axis_group_engraver::add_element (Grob *e) ADD_ACKNOWLEDGER (Axis_group_engraver, grob); ADD_TRANSLATOR (Axis_group_engraver, - /* doc */ - "Group all objects created in this context in a" - " @code{VerticalAxisGroup} spanner.", + /* doc */ + "Group all objects created in this context in a" + " @code{VerticalAxisGroup} spanner.", - /* create */ - "VerticalAxisGroup ", + /* create */ + "VerticalAxisGroup ", - /* read */ - "currentCommandColumn ", + /* read */ + "currentCommandColumn ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/axis-group-interface-scheme.cc b/lily/axis-group-interface-scheme.cc index 744bff13aa..69b7c82fdf 100644 --- a/lily/axis-group-interface-scheme.cc +++ b/lily/axis-group-interface-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,9 +23,9 @@ #include "grob-array.hh" LY_DEFINE (ly_relative_group_extent, "ly:relative-group-extent", - 3, 0, 0, (SCM elements, SCM common, SCM axis), - "Determine the extent of @var{elements} relative to @var{common} in the" - " @var{axis} direction.") + 3, 0, 0, (SCM elements, SCM common, SCM axis), + "Determine the extent of @var{elements} relative to @var{common} in the" + " @var{axis} direction.") { Grob_array *ga = unsmob_grob_array (elements); @@ -33,23 +33,23 @@ LY_DEFINE (ly_relative_group_extent, "ly:relative-group-extent", LY_ASSERT_SMOB (Grob, common, 2); LY_ASSERT_TYPE (is_axis, axis, 3); - vector elts; + vector elts; if (!ga) { for (SCM s = elements; scm_is_pair (s); s = scm_cdr (s)) - elts.push_back (unsmob_grob (scm_car (s))); + elts.push_back (unsmob_grob (scm_car (s))); } Interval ext = Axis_group_interface::relative_group_extent (ga ? ga->array () : elts, - unsmob_grob (common), - (Axis) scm_to_int (axis)); + unsmob_grob (common), + (Axis) scm_to_int (axis)); return ly_interval2scm (ext); } LY_DEFINE (ly_axis_group_interface__add_element, "ly:axis-group-interface::add-element", - 2, 0, 0, (SCM grob, SCM grob_element), - "Set @var{grob} the parent of @var{grob-element} on all axes of" - " @var{grob}.") + 2, 0, 0, (SCM grob, SCM grob_element), + "Set @var{grob} the parent of @var{grob-element} on all axes of" + " @var{grob}.") { LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_SMOB (Grob, grob_element, 2); diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index 0b399fd248..febff36afb 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +31,11 @@ #include "separation-item.hh" #include "skyline-pair.hh" #include "staff-grouper-interface.hh" +#include "stem.hh" #include "stencil.hh" #include "system.hh" #include "warn.hh" +#include "unpure-pure-container.hh" static bool pure_staff_priority_less (Grob *const &g1, Grob *const &g2); @@ -50,12 +52,12 @@ Axis_group_interface::add_element (Grob *me, Grob *e) Axis a = (Axis) scm_to_int (scm_car (ax)); if (!e->get_parent (a)) - e->set_parent (me, a); + e->set_parent (me, a); e->set_object ((a == X_AXIS) - ? ly_symbol2scm ("axis-group-parent-X") - : ly_symbol2scm ("axis-group-parent-Y"), - me->self_scm ()); + ? ly_symbol2scm ("axis-group-parent-X") + : ly_symbol2scm ("axis-group-parent-Y"), + me->self_scm ()); } /* must be ordered, because Align_interface also uses @@ -72,23 +74,58 @@ Axis_group_interface::has_axis (Grob *me, Axis a) } Interval -Axis_group_interface::relative_group_extent (vector const &elts, - Grob *common, Axis a) +Axis_group_interface::relative_group_extent (vector const &elts, + Grob *common, Axis a) +{ + return relative_maybe_bound_group_extent (elts, common, a, false); +} + +Interval +Axis_group_interface::relative_maybe_bound_group_extent (vector const &elts, + Grob *common, Axis a, bool bound) { Interval r; for (vsize i = 0; i < elts.size (); i++) { Grob *se = elts[i]; if (!to_boolean (se->get_property ("cross-staff"))) - { - Interval dims = se->extent (common, a); - if (!dims.is_empty ()) - r.unite (dims); - } + { + Interval dims = (bound && has_interface (se) + ? generic_bound_extent (se, common, a) + : se->extent (common, a)); + if (!dims.is_empty ()) + r.unite (dims); + } } return r; } +Interval +Axis_group_interface::generic_bound_extent (Grob *me, Grob *common, Axis a) +{ + /* trigger the callback to do skyline-spacing on the children */ + if (a == Y_AXIS) + (void) me->get_property ("vertical-skylines"); + + extract_grob_set (me, "elements", elts); + vector new_elts; + + SCM interfaces = me->get_property ("bound-alignment-interfaces"); + + for (vsize i = 0; i < elts.size (); i++) + for (SCM l = interfaces; scm_is_pair (l); l = scm_cdr (l)) + if (elts[i]->internal_has_interface (scm_car (l))) + new_elts.push_back (elts[i]); + + if (!new_elts.size ()) + return robust_relative_extent (me, common, a); + + if (!common) + common = common_refpoint_of_array (new_elts, me, a); + + return relative_maybe_bound_group_extent (new_elts, common, a, true); +} + Interval Axis_group_interface::sum_partial_pure_heights (Grob *me, int start, int end) { @@ -101,10 +138,10 @@ Axis_group_interface::sum_partial_pure_heights (Grob *me, int start, int end) Interval Axis_group_interface::part_of_line_pure_height (Grob *me, bool begin, int start, int end) { - Spanner *sp = dynamic_cast (me); + Spanner *sp = dynamic_cast (me); SCM cache_symbol = begin - ? ly_symbol2scm ("begin-of-line-pure-height") - : ly_symbol2scm ("rest-of-line-pure-height"); + ? ly_symbol2scm ("begin-of-line-pure-height") + : ly_symbol2scm ("rest-of-line-pure-height"); SCM cached = sp->get_cached_pure_property (cache_symbol, start, end); if (scm_is_pair (cached)) return robust_scm2interval (cached, Interval (0, 0)); @@ -117,13 +154,13 @@ Axis_group_interface::part_of_line_pure_height (Grob *me, bool begin, int start, else { SCM these_pure_heights = begin - ? scm_car (adjacent_pure_heights) - : scm_cdr (adjacent_pure_heights); + ? scm_car (adjacent_pure_heights) + : scm_cdr (adjacent_pure_heights); if (scm_is_vector (these_pure_heights)) - ret = combine_pure_heights (me, these_pure_heights, start, end); + ret = combine_pure_heights (me, these_pure_heights, start, end); else - ret = Interval (0, 0); + ret = Interval (0, 0); } sp->cache_pure_property (cache_symbol, start, end, ly_interval2scm (ret)); @@ -147,17 +184,17 @@ Axis_group_interface::combine_pure_heights (Grob *me, SCM measure_extents, int s { Paper_score *ps = get_root_system (me)->paper_score (); vector breaks = ps->get_break_indices (); - vector cols = ps->get_columns (); + vector cols = ps->get_columns (); Interval ext; for (vsize i = 0; i + 1 < breaks.size (); i++) { int r = Paper_column::get_rank (cols[breaks[i]]); if (r >= end) - break; + break; if (r >= start) - ext.unite (ly_scm2interval (scm_c_vector_ref (measure_extents, i))); + ext.unite (ly_scm2interval (scm_c_vector_ref (measure_extents, i))); } return ext; @@ -193,7 +230,7 @@ Axis_group_interface::adjacent_pure_heights (SCM smob) Grob *g = elts[i]; if (to_boolean (g->get_property ("cross-staff"))) - continue; + continue; bool outside_staff = scm_is_number (g->get_property ("outside-staff-priority")); Real padding = robust_scm2double (g->get_property ("outside-staff-padding"), 0.5); @@ -205,10 +242,10 @@ Axis_group_interface::adjacent_pure_heights (SCM smob) // but only the fact that outside-staff grobs may need to be raised above // the staff. if (outside_staff && begin_line_staff_heights.empty ()) - { - begin_line_staff_heights = begin_line_heights; - mid_line_staff_heights = mid_line_heights; - } + { + begin_line_staff_heights = begin_line_heights; + mid_line_staff_heights = mid_line_heights; + } // TODO: consider a pure version of get_grob_direction? Direction d = to_dir (g->get_property_data ("direction")); @@ -217,42 +254,40 @@ Axis_group_interface::adjacent_pure_heights (SCM smob) Interval_t rank_span = g->spanned_rank_interval (); vsize first_break = lower_bound (ranks, (vsize)rank_span[LEFT], less ()); if (first_break > 0 && ranks[first_break] >= (vsize)rank_span[LEFT]) - first_break--; - - for (vsize j = first_break; j+1 < ranks.size () && (int)ranks[j] <= rank_span[RIGHT]; ++j) - { - int start = ranks[j]; - int end = ranks[j+1]; - - // Take grobs that are visible with respect to a slightly longer line. - // Otherwise, we will never include grobs at breakpoints which aren't - // end-of-line-visible. - int visibility_end = j + 2 < ranks.size () ? ranks[j+2] : end; - - if (g->pure_is_visible (start, visibility_end)) - { - Interval dims = g->pure_height (common, start, end); - if (!dims.is_empty ()) - { - if (rank_span[LEFT] <= start) - { - if (outside_staff) - begin_line_heights[j].unite ( - begin_line_staff_heights[j].union_disjoint (dims, padding, d)); - else - begin_line_heights[j].unite (dims); - } + first_break--; + + for (vsize j = first_break; j + 1 < ranks.size () && (int)ranks[j] <= rank_span[RIGHT]; ++j) + { + int start = ranks[j]; + int end = ranks[j + 1]; + + // Take grobs that are visible with respect to a slightly longer line. + // Otherwise, we will never include grobs at breakpoints which aren't + // end-of-line-visible. + int visibility_end = j + 2 < ranks.size () ? ranks[j + 2] : end; + + if (g->pure_is_visible (start, visibility_end)) + { + Interval dims = g->pure_height (common, start, end); + if (!dims.is_empty ()) + { + if (rank_span[LEFT] <= start) + { + if (outside_staff) + begin_line_heights[j].unite (begin_line_staff_heights[j].union_disjoint (dims, padding, d)); + else + begin_line_heights[j].unite (dims); + } if (rank_span[RIGHT] > start) - { - if (outside_staff) - mid_line_heights[j].unite ( - mid_line_staff_heights[j].union_disjoint (dims, padding, d)); - else - mid_line_heights[j].unite (dims); - } - } - } - } + { + if (outside_staff) + mid_line_heights[j].unite (mid_line_staff_heights[j].union_disjoint (dims, padding, d)); + else + mid_line_heights[j].unite (dims); + } + } + } + } } // Convert begin_line_heights and min_line_heights to SCM. @@ -291,13 +326,14 @@ Axis_group_interface::relative_pure_height (Grob *me, int start, int end) Grob *g = elts[i]; Interval_t rank_span = g->spanned_rank_interval (); if (rank_span[LEFT] <= end && rank_span[RIGHT] >= start - && g->pure_is_visible (start, end) - && !to_boolean (g->get_property ("cross-staff"))) - { - Interval dims = g->pure_height (common, start, end); - if (!dims.is_empty ()) - r.unite (dims); - } + && g->pure_is_visible (start, end) + && !(to_boolean (g->get_property ("cross-staff")) + && Stem::has_interface (g))) + { + Interval dims = g->pure_height (common, start, end); + if (!dims.is_empty ()) + r.unite (dims); + } } return r; } @@ -328,13 +364,13 @@ Axis_group_interface::pure_height (SCM smob, SCM start_scm, SCM end_scm) /* Maybe we are in the second pass of a two-pass spacing run. In that case, the Y-extent of a system is already given to us */ - System *system = dynamic_cast (me); + System *system = dynamic_cast (me); if (system) { SCM line_break_details = system->column (start)->get_property ("line-break-system-details"); SCM system_y_extent = scm_assq (ly_symbol2scm ("system-Y-extent"), line_break_details); if (scm_is_pair (system_y_extent)) - return scm_cdr (system_y_extent); + return scm_cdr (system_y_extent); } return ly_interval2scm (pure_group_height (me, start, end)); @@ -374,13 +410,13 @@ Axis_group_interface::combine_skylines (SCM smob) { SCM skyline_scm = elements[i]->get_property ("vertical-skylines"); if (Skyline_pair::unsmob (skyline_scm)) - { - Real offset = elements[i]->relative_coordinate (y_common, Y_AXIS); - Skyline_pair other = *Skyline_pair::unsmob (skyline_scm); - other.raise (offset); - other.shift (elements[i]->relative_coordinate (x_common, X_AXIS)); - ret.merge (other); - } + { + Real offset = elements[i]->relative_coordinate (y_common, Y_AXIS); + Skyline_pair other = *Skyline_pair::unsmob (skyline_scm); + other.raise (offset); + other.shift (elements[i]->relative_coordinate (x_common, X_AXIS)); + ret.merge (other); + } } return ret.smobbed_copy (); } @@ -408,7 +444,7 @@ Interval Axis_group_interface::staff_extent (Grob *me, Grob *refp, Axis ext_a, Grob *staff, Axis parent_a) { extract_grob_set (me, "elements", elts); - vector new_elts; + vector new_elts; for (vsize i = 0; i < elts.size (); i++) if (elts[i]->common_refpoint (staff, parent_a) == staff) @@ -417,34 +453,36 @@ Axis_group_interface::staff_extent (Grob *me, Grob *refp, Axis ext_a, Grob *staf return relative_group_extent (new_elts, refp, ext_a); } - MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_pure_relevant_grobs, 1); SCM Axis_group_interface::calc_pure_relevant_grobs (SCM smob) { Grob *me = unsmob_grob (smob); + return internal_calc_pure_relevant_grobs (me, "elements"); +} - extract_grob_set (me, "elements", elts); +SCM +Axis_group_interface::internal_calc_pure_relevant_grobs (Grob *me, string grob_set_name) +{ + extract_grob_set (me, grob_set_name.c_str (), elts); - vector relevant_grobs; + vector relevant_grobs; SCM pure_relevant_p = ly_lily_module_constant ("pure-relevant?"); for (vsize i = 0; i < elts.size (); i++) { if (to_boolean (scm_apply_1 (pure_relevant_p, elts[i]->self_scm (), SCM_EOL))) - relevant_grobs.push_back (elts[i]); - - if (Item *it = dynamic_cast (elts[i])) - { - Direction d = LEFT; - do - { - Item *piece = it->find_prebroken_piece (d); - if (piece && to_boolean (scm_apply_1 (pure_relevant_p, piece->self_scm (), SCM_EOL))) - relevant_grobs.push_back (piece); - } - while (flip (&d) != LEFT); - } + relevant_grobs.push_back (elts[i]); + + if (Item *it = dynamic_cast (elts[i])) + { + for (LEFT_and_RIGHT (d)) + { + Item *piece = it->find_prebroken_piece (d); + if (piece && to_boolean (scm_apply_1 (pure_relevant_p, piece->self_scm (), SCM_EOL))) + relevant_grobs.push_back (piece); + } + } } vector_sort (relevant_grobs, pure_staff_priority_less); @@ -485,7 +523,6 @@ Axis_group_interface::calc_common (Grob *me, Axis axis) return common->self_scm (); } - MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_x_common, 1); SCM Axis_group_interface::calc_x_common (SCM grob) @@ -517,7 +554,7 @@ Axis_group_interface::pure_group_height (Grob *me, int start, int end) } void -Axis_group_interface::get_children (Grob *me, vector *found) +Axis_group_interface::get_children (Grob *me, vector *found) { found->push_back (me); @@ -533,7 +570,7 @@ Axis_group_interface::get_children (Grob *me, vector *found) } static bool -staff_priority_less (Grob * const &g1, Grob * const &g2) +staff_priority_less (Grob *const &g1, Grob *const &g2) { Real priority_1 = robust_scm2double (g1->get_property ("outside-staff-priority"), -infinity_f); Real priority_2 = robust_scm2double (g2->get_property ("outside-staff-priority"), -infinity_f); @@ -557,7 +594,7 @@ staff_priority_less (Grob * const &g1, Grob * const &g2) } static bool -pure_staff_priority_less (Grob * const &g1, Grob * const &g2) +pure_staff_priority_less (Grob *const &g1, Grob *const &g2) { Real priority_1 = robust_scm2double (g1->get_property ("outside-staff-priority"), -infinity_f); Real priority_2 = robust_scm2double (g2->get_property ("outside-staff-priority"), -infinity_f); @@ -579,13 +616,13 @@ add_boxes (Grob *me, Grob *x_common, Grob *y_common, vector *const boxes, S else if (Grob_array *elements = unsmob_grob_array (me->get_object ("elements"))) { for (vsize i = 0; i < elements->size (); i++) - add_boxes (elements->grob (i), x_common, y_common, boxes, skylines); + add_boxes (elements->grob (i), x_common, y_common, boxes, skylines); } else if (!scm_is_number (me->get_property ("outside-staff-priority")) - && !to_boolean (me->get_property ("cross-staff"))) + && !to_boolean (me->get_property ("cross-staff"))) { boxes->push_back (Box (me->extent (x_common, X_AXIS), - me->extent (y_common, Y_AXIS))); + me->extent (y_common, Y_AXIS))); } } @@ -610,9 +647,9 @@ add_boxes (Grob *me, Grob *x_common, Grob *y_common, vector *const boxes, S */ static void add_grobs_of_one_priority (Skyline_pair *const skylines, - vector elements, - Grob *x_common, - Grob *y_common) + vector elements, + Grob *x_common, + Grob *y_common) { vector boxes; Drul_array last_affected_position; @@ -624,48 +661,57 @@ add_grobs_of_one_priority (Skyline_pair *const skylines, last_affected_position[DOWN] = -infinity_f; /* do one pass */ for (vsize i = elements.size (); i--;) - { - Direction dir = get_grob_direction (elements[i]); - if (dir == CENTER) - { - warning (_ ("an outside-staff object should have a direction, defaulting to up")); - dir = UP; - } - - Box b (elements[i]->extent (x_common, X_AXIS), - elements[i]->extent (y_common, Y_AXIS)); - SCM horizon_padding_scm = elements[i]->get_property ("outside-staff-horizontal-padding"); - Real horizon_padding = robust_scm2double (horizon_padding_scm, 0.0); - - if (b[X_AXIS][LEFT] - 2*horizon_padding < last_affected_position[dir]) - continue; - - if (!b[X_AXIS].is_empty () && !b[Y_AXIS].is_empty ()) - { - boxes.clear (); - boxes.push_back (b); - Skyline other = Skyline (boxes, horizon_padding, X_AXIS, -dir); - Real padding = robust_scm2double (elements[i]->get_property ("outside-staff-padding"), 0.5); - Real dist = (*skylines)[dir].distance (other) + padding; - - if (dist > 0) - { - b.translate (Offset (0, dir*dist)); - elements[i]->translate_axis (dir*dist, Y_AXIS); - } - skylines->insert (b, 0, X_AXIS); - elements[i]->set_property ("outside-staff-priority", SCM_BOOL_F); - last_affected_position[dir] = b[X_AXIS][RIGHT]; - } - - /* - Ugh: quadratic. --hwn - */ - elements.erase (elements.begin () + i); - } + { + Direction dir = get_grob_direction (elements[i]); + if (dir == CENTER) + { + warning (_ ("an outside-staff object should have a direction, defaulting to up")); + dir = UP; + } + + Box b (elements[i]->extent (x_common, X_AXIS), + elements[i]->extent (y_common, Y_AXIS)); + SCM horizon_padding_scm = elements[i]->get_property ("outside-staff-horizontal-padding"); + Real horizon_padding = robust_scm2double (horizon_padding_scm, 0.0); + + if (b[X_AXIS][LEFT] - 2 * horizon_padding < last_affected_position[dir]) + continue; + + if (!b[X_AXIS].is_empty () && !b[Y_AXIS].is_empty ()) + { + boxes.clear (); + boxes.push_back (b); + Skyline other = Skyline (boxes, horizon_padding, X_AXIS, -dir); + Real padding = robust_scm2double (elements[i]->get_property ("outside-staff-padding"), 0.5); + Real dist = (*skylines)[dir].distance (other) + padding; + + if (dist > 0) + { + b.translate (Offset (0, dir * dist)); + elements[i]->translate_axis (dir * dist, Y_AXIS); + } + skylines->insert (b, 0, X_AXIS); + elements[i]->set_property ("outside-staff-priority", SCM_BOOL_F); + last_affected_position[dir] = b[X_AXIS][RIGHT]; + } + + /* + Ugh: quadratic. --hwn + */ + elements.erase (elements.begin () + i); + } } } +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 @@ -676,7 +722,7 @@ add_grobs_of_one_priority (Skyline_pair *const skylines, // that there is no room for the cross-staff grob. It also means, of course, that // we don't get the benefits of skyline placement for cross-staff grobs. Skyline_pair -Axis_group_interface::skyline_spacing (Grob *me, vector elements) +Axis_group_interface::skyline_spacing (Grob *me, vector elements) { /* For grobs with an outside-staff-priority, the sorting function might call extent and cause suicide. This breaks the contract that is required @@ -698,8 +744,8 @@ Axis_group_interface::skyline_spacing (Grob *me, vector 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"))) + && !scm_is_number (elements[i]->get_property ("outside-staff-priority")); i++) + 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"); @@ -708,18 +754,18 @@ Axis_group_interface::skyline_spacing (Grob *me, vector elements) for (; i < elements.size (); i++) { if (to_boolean (elements[i]->get_property ("cross-staff"))) - continue; + continue; SCM priority = elements[i]->get_property ("outside-staff-priority"); - vector current_elts; + vector current_elts; current_elts.push_back (elements[i]); while (i + 1 < elements.size () - && scm_eq_p (elements[i+1]->get_property ("outside-staff-priority"), priority)) - { - if (!to_boolean (elements[i+1]->get_property ("cross-staff"))) - current_elts.push_back (elements[i+1]); - ++i; - } + && scm_is_eq (elements[i + 1]->get_property ("outside-staff-priority"), priority)) + { + if (!to_boolean (elements[i + 1]->get_property ("cross-staff"))) + current_elts.push_back (elements[i + 1]); + ++i; + } add_grobs_of_one_priority (&skylines, current_elts, x_common, y_common); } @@ -739,9 +785,9 @@ Axis_group_interface::print (SCM smob) if (Skyline_pair *s = Skyline_pair::unsmob (me->get_property ("vertical-skylines"))) { ret.add_stencil (Lookup::points_to_line_stencil (0.1, (*s)[UP].to_points (X_AXIS)) - .in_color (255, 0, 255)); + .in_color (255, 0, 255)); ret.add_stencil (Lookup::points_to_line_stencil (0.1, (*s)[DOWN].to_points (X_AXIS)) - .in_color (0, 255, 255)); + .in_color (0, 255, 255)); } return ret.smobbed_copy (); } @@ -751,9 +797,9 @@ SCM Axis_group_interface::calc_pure_staff_staff_spacing (SCM smob, SCM start, SCM end) { return calc_maybe_pure_staff_staff_spacing (unsmob_grob (smob), - true, - scm_to_int (start), - scm_to_int (end)); + true, + scm_to_int (start), + scm_to_int (end)); } MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_staff_staff_spacing, 1) @@ -761,9 +807,9 @@ SCM Axis_group_interface::calc_staff_staff_spacing (SCM smob) { return calc_maybe_pure_staff_staff_spacing (unsmob_grob (smob), - false, - 0, - INT_MAX); + false, + 0, + INT_MAX); } SCM @@ -775,50 +821,39 @@ Axis_group_interface::calc_maybe_pure_staff_staff_spacing (Grob *me, bool pure, { bool within_group = Staff_grouper_interface::maybe_pure_within_group (grouper, me, pure, start, end); if (within_group) - return grouper->get_maybe_pure_property ("staff-staff-spacing", pure, start, end); + return grouper->get_maybe_pure_property ("staff-staff-spacing", pure, start, end); else - return grouper->get_maybe_pure_property ("staffgroup-staff-spacing", pure, start, end); + return grouper->get_maybe_pure_property ("staffgroup-staff-spacing", pure, start, end); } return me->get_maybe_pure_property ("default-staff-staff-spacing", pure, start, end); } -Real -Axis_group_interface::minimum_distance (Grob *g1, Grob *g2, Axis a) -{ - SCM sym = ly_symbol2scm ((a == Y_AXIS) ? "vertical-skylines" : "horizontal-skylines"); - - Skyline_pair *s1 = Skyline_pair::unsmob (g1->get_property (sym)); - Skyline_pair *s2 = Skyline_pair::unsmob (g2->get_property (sym)); - if (s1 && s2) - return (*s1)[DOWN].distance ((*s2)[UP]); - return 0; -} - ADD_INTERFACE (Axis_group_interface, - "An object that groups other layout objects.", - - // TODO: some of these properties are specific to - // VerticalAxisGroup. We should split off a - // vertical-axis-group-interface. - /* properties */ - "adjacent-pure-heights " - "axes " - "default-staff-staff-spacing " - "elements " - "max-stretch " - "no-alignment " - "nonstaff-nonstaff-spacing " - "nonstaff-relatedstaff-spacing " - "nonstaff-unrelatedstaff-spacing " - "pure-relevant-grobs " - "pure-relevant-items " - "pure-relevant-spanners " - "pure-Y-common " - "staff-affinity " - "staff-grouper " - "staff-staff-spacing " - "system-Y-offset " - "vertical-skylines " - "X-common " - "Y-common " - ); + "An object that groups other layout objects.", + + // TODO: some of these properties are specific to + // VerticalAxisGroup. We should split off a + // vertical-axis-group-interface. + /* properties */ + "adjacent-pure-heights " + "axes " + "bound-alignment-interfaces " + "default-staff-staff-spacing " + "elements " + "max-stretch " + "no-alignment " + "nonstaff-nonstaff-spacing " + "nonstaff-relatedstaff-spacing " + "nonstaff-unrelatedstaff-spacing " + "pure-relevant-grobs " + "pure-relevant-items " + "pure-relevant-spanners " + "pure-Y-common " + "staff-affinity " + "staff-grouper " + "staff-staff-spacing " + "system-Y-offset " + "vertical-skylines " + "X-common " + "Y-common " + ); diff --git a/lily/balloon-engraver.cc b/lily/balloon-engraver.cc index 95e807339f..4899ab7c50 100644 --- a/lily/balloon-engraver.cc +++ b/lily/balloon-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,8 +33,8 @@ class Balloon_engraver : public Engraver vector events_; void stop_translation_timestep (); - - void balloonify (Grob *, Stream_event *); + + void balloonify (Grob *, Stream_event *); }; IMPLEMENT_TRANSLATOR_LISTENER (Balloon_engraver, annotate_output); @@ -57,7 +57,7 @@ Balloon_engraver::Balloon_engraver () void Balloon_engraver::balloonify (Grob *g, Stream_event *event) { - Grob * b = make_item ("BalloonTextItem", event->self_scm ()); + Grob *b = make_item ("BalloonTextItem", event->self_scm ()); b->set_property ("text", event->get_property ("text")); b->set_parent (g, Y_AXIS); b->set_parent (g, X_AXIS); @@ -67,38 +67,36 @@ void Balloon_engraver::acknowledge_grob (Grob_info info) { Stream_event *cause = info.event_cause (); - + SCM arts = cause ? cause->get_property ("articulations") : SCM_EOL; for (SCM s = arts; scm_is_pair (s); s = scm_cdr (s)) { Stream_event *e = unsmob_stream_event (scm_car (s)); if (e->in_event_class ("annotate-output-event")) - { - balloonify (info.grob (), e); - } + { + balloonify (info.grob (), e); + } } for (vsize i = 0; i < events_.size (); i++) { if (info.grob ()->name () == ly_symbol2string (events_[i]->get_property ("symbol"))) - balloonify (info.grob (), events_[i]); + balloonify (info.grob (), events_[i]); } } - - ADD_ACKNOWLEDGER (Balloon_engraver, grob); - + ADD_TRANSLATOR (Balloon_engraver, - /* doc */ - "Create balloon texts.", + /* doc */ + "Create balloon texts.", - /* create */ - "BalloonTextItem ", + /* create */ + "BalloonTextItem ", - /*read*/ - "", + /*read*/ + "", - /*write*/ - "" - ); + /*write*/ + "" + ); diff --git a/lily/balloon.cc b/lily/balloon.cc index c4efb46b68..d323121b3e 100644 --- a/lily/balloon.cc +++ b/lily/balloon.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,7 +51,7 @@ Balloon_interface::print (SCM smob) Grob *p = me->get_parent (X_AXIS); Offset off (me->relative_coordinate (p, X_AXIS), - me->relative_coordinate (p, Y_AXIS)); + me->relative_coordinate (p, Y_AXIS)); return internal_balloon_print (me, p, off); } @@ -65,24 +65,23 @@ Balloon_interface::print_spanner (SCM smob) if (orig) { - Direction spanner_placement = robust_scm2dir (me->get_property ("spanner-placement"), LEFT); + Direction spanner_placement = robust_scm2dir (me->get_property ("spanner-placement"), LEFT); Spanner *wanted = (spanner_placement != RIGHT) - ? orig->broken_intos_[0] - : orig->broken_intos_.back (); + ? orig->broken_intos_[0] + : orig->broken_intos_.back (); if (me != wanted) return SCM_EOL; } - Spanner *p = dynamic_cast (me->get_parent (Y_AXIS)); if (!p) return SCM_EOL; Offset off (me->relative_coordinate (me->get_bound (LEFT), X_AXIS), - me->relative_coordinate (p, Y_AXIS)); + me->relative_coordinate (p, Y_AXIS)); return internal_balloon_print (me, p, off); } @@ -90,7 +89,7 @@ SCM Balloon_interface::internal_balloon_print (Grob *me, Grob *p, Offset off) { Box b (p->extent (p, X_AXIS), - p->extent (p, Y_AXIS)); + p->extent (p, Y_AXIS)); Real padding = robust_scm2double (me->get_property ("padding"), .1); b.widen (padding, padding); @@ -101,13 +100,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); @@ -128,14 +126,14 @@ Balloon_interface::internal_balloon_print (Grob *me, Grob *p, Offset off) } ADD_INTERFACE (Balloon_interface, - "A collection of routines to put text balloons around an" - " object.", - - /* properties */ - "annotation-balloon " - "annotation-line " - "padding " - "spanner-placement " - "text " - ); + "A collection of routines to put text balloons around an" + " object.", + + /* properties */ + "annotation-balloon " + "annotation-line " + "padding " + "spanner-placement " + "text " + ); diff --git a/lily/bar-check-iterator.cc b/lily/bar-check-iterator.cc index 09f06b1fc2..a0fb8eaee1 100644 --- a/lily/bar-check-iterator.cc +++ b/lily/bar-check-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,38 +51,38 @@ Bar_check_iterator::process (Moment m) SCM check = tr->get_property ("ignoreBarChecks"); if (to_boolean (check)) - return; + return; SCM mp = tr->get_property ("measurePosition"); SCM sync = tr->get_property ("barCheckSynchronize"); Moment *where = unsmob_moment (mp); if (!where) - return; + return; if (where->main_part_) - { - bool warn = true; - if (to_boolean (sync)) - { - SCM mp; - tr = tr->where_defined (ly_symbol2scm ("measurePosition"), &mp); - Moment zero; - tr->set_property ("measurePosition", zero.smobbed_copy ()); - } - else - { - SCM lf = tr->get_property ("barCheckLastFail"); - if (unsmob_moment (lf) - && *unsmob_moment (lf) == *where) - warn = false; - else - tr->set_property ("barCheckLastFail", mp); - } + { + bool warn = true; + if (to_boolean (sync)) + { + SCM mp; + tr = tr->where_defined (ly_symbol2scm ("measurePosition"), &mp); + Moment zero; + tr->set_property ("measurePosition", zero.smobbed_copy ()); + } + else + { + SCM lf = tr->get_property ("barCheckLastFail"); + if (unsmob_moment (lf) + && *unsmob_moment (lf) == *where) + warn = false; + else + tr->set_property ("barCheckLastFail", mp); + } - if (warn) - get_music ()->origin ()->warning (_f ("barcheck failed at: %s", - where->to_string ())); - } + if (warn) + get_music ()->origin ()->warning (_f ("barcheck failed at: %s", + where->to_string ())); + } } } diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index badd058e54..b2594a2cb8 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -18,7 +18,6 @@ along with LilyPond. If not, see . */ -#include "bar-line.hh" #include "context.hh" #include "score-engraver.hh" #include "warn.hh" @@ -46,7 +45,7 @@ private: void create_bar (); Item *bar_; - vector spanners_; + vector spanners_; }; Bar_engraver::Bar_engraver () @@ -62,7 +61,7 @@ Bar_engraver::create_bar () bar_ = make_item ("BarLine", SCM_EOL); SCM gl = get_property ("whichBar"); if (scm_equal_p (gl, bar_->get_property ("glyph")) != SCM_BOOL_T) - bar_->set_property ("glyph", gl); + bar_->set_property ("glyph", gl); } } @@ -107,23 +106,23 @@ Bar_engraver::acknowledge_end_spanner (Grob_info gi) Grob *g = gi.grob (); if (to_boolean (g->get_property ("to-barline"))) - spanners_.push_back (dynamic_cast (g)); + spanners_.push_back (dynamic_cast (g)); } ADD_END_ACKNOWLEDGER (Bar_engraver, spanner); ADD_TRANSLATOR (Bar_engraver, - /* doc */ - "Create barlines. This engraver is controlled through the" - " @code{whichBar} property. If it has no bar line to create," - " it will forbid a linebreak at this point.", + /* doc */ + "Create barlines. This engraver is controlled through the" + " @code{whichBar} property. If it has no bar line to create," + " it will forbid a linebreak at this point.", - /* create */ - "BarLine ", + /* create */ + "BarLine ", - /* read */ - "whichBar ", + /* read */ + "whichBar ", - /* write */ - "forbidBreak " - ); + /* write */ + "forbidBreak " + ); diff --git a/lily/bar-line.cc b/lily/bar-line.cc index a2d6588726..fe4406956c 100644 --- a/lily/bar-line.cc +++ b/lily/bar-line.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,443 +18,11 @@ */ #include "bar-line.hh" - -#include "all-font-metrics.hh" -#include "font-interface.hh" -#include "line-interface.hh" -#include "lookup.hh" -#include "output-def.hh" #include "paper-column.hh" -#include "staff-symbol-referencer.hh" - -MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_extent, 1) -SCM -Bar_line::calc_bar_extent (SCM smob) -{ - Interval result; - Grob *me = unsmob_grob (smob); - if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me)) - result = staff->extent (staff, Y_AXIS); - - return ly_interval2scm (result); -} - -Interval -Bar_line::bar_y_extent (Grob *me, Grob *refpoint) -{ - Interval iv = robust_scm2interval (me->get_property ("bar-extent"), Interval ()); - - iv.translate (me->relative_coordinate (refpoint, Y_AXIS)); - return iv; -} bool Bar_line::non_empty_barline (Grob *me) { - return has_interface (me) && !me->extent (me, X_AXIS).is_empty (); -} - -MAKE_SCHEME_CALLBACK (Bar_line, print, 1); -SCM -Bar_line::print (SCM smob) -{ - Grob *me = unsmob_grob (smob); - - SCM s = me->get_property ("glyph-name"); - SCM extent = me->get_property ("bar-extent"); - - if (scm_is_string (s) && is_number_pair (extent)) - { - string str = ly_scm2string (s); - Interval ex = ly_scm2interval (extent); - if (ex.length () > 0) - { - Stencil result = compound_barline (me, str, ex, false); - - return result.smobbed_copy (); - } - } - return SCM_EOL; -} - -Stencil -Bar_line::compound_barline (Grob *me, string str, Interval const &extent, - bool rounded) -{ - Real kern = robust_scm2double (me->get_property ("kern"), 1); - Real thinkern = robust_scm2double (me->get_property ("thin-kern"), 1); - Real hair = robust_scm2double (me->get_property ("hair-thickness"), 1); - Real fatline = robust_scm2double (me->get_property ("thick-thickness"), 1); - - Real staffline = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); - Real staff_space = Staff_symbol_referencer::staff_space (me); - - kern *= staffline; - thinkern *= staffline; - hair *= staffline; - fatline *= staffline; - - Stencil thin = simple_barline (me, hair, extent, rounded); - Stencil thick = simple_barline (me, fatline, extent, rounded); - Stencil dot = Font_interface::get_default_font (me)->find_by_name ("dots.dot"); - - int lines = Staff_symbol_referencer::line_count (me); - Real dist - = ((lines & 1 || lines == 0) - ? 1 - : (staff_space < 2 ? 2 : .5)) * staff_space; - Stencil colon (dot); - colon.translate_axis (dist, Y_AXIS); - colon.add_stencil (dot); - colon.translate_axis (-dist / 2, Y_AXIS); - - Real const h = extent.length (); - Stencil m; - - if (str == "||:") - str = "|:"; - - if (str == "|S" || str == "S|") - str = "S"; - - if (str == "") - { - Stencil empty = Lookup::blank (Box (Interval (0, 0), extent)); - return empty; - } - else if (str == "|") - return thin; - else if (str == ".") - return thick; - else if (str == "|." || (h == 0 && str == ":|")) - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - } - else if (str == ".|" || (h == 0 && str == "|:")) - { - m.add_at_edge (X_AXIS, RIGHT, thick, 0); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - } - else if (str == ":|") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - } - else if (str == "|:") - { - m.add_at_edge (X_AXIS, RIGHT, thick, 0); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } - else if (str == ":|:") - { - m.add_at_edge (X_AXIS, LEFT, thick, thinkern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, thick, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } - else if (str == ":|.|:") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } - else if (str == ":|.:") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } - else if (str == ".|.") - { - m.add_at_edge (X_AXIS, LEFT, thick, thinkern); - m.add_at_edge (X_AXIS, RIGHT, thick, kern); - } - else if (str == "|.|") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - } - else if (str == "||") - { - /* - should align to other side? this never appears - on the system-start? - m.add_at_edge (X_AXIS, RIGHT, thin, 0); - m.add_at_edge (X_AXIS, RIGHT, thin, thinkern); - */ - m.add_at_edge (X_AXIS, LEFT, thin, thinkern); - m.add_at_edge (X_AXIS, RIGHT, thin, thinkern); - } - else if (str.find ("S") != NPOS || str == "|._.|") - { - // Handle all varsegno stuff - Stencil segno; - segno.add_at_edge (X_AXIS, LEFT, thin, thinkern); - segno.add_at_edge (X_AXIS, RIGHT, thin, thinkern); - segno.add_stencil (Font_interface::get_default_font (me)->find_by_name ("scripts.varsegno")); - - if (str == "S") - m.add_stencil (segno); - else if (str == "S|:" || str == ".S|:") - { - m.add_at_edge (X_AXIS, RIGHT, thick, 0); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - m.add_at_edge (X_AXIS, LEFT, segno, thinkern); - } - else if (str == ":|S" || str == ":|S.") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, segno, thinkern); - } - else if (str == ":|S|:" || str == ":|S.|:") - { - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, LEFT, colon, kern); - m.add_at_edge (X_AXIS, RIGHT, segno, thinkern); - m.add_at_edge (X_AXIS, RIGHT, thick, thinkern); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, colon, kern); - } - else if (str == "|._.|") // :|S|: or :|S.|: without segno and colon - { - // get the width of the segno sign - Real segno_width = segno.extent (X_AXIS).length (); - m.add_at_edge (X_AXIS, LEFT, thick, 0); - m.add_at_edge (X_AXIS, LEFT, thin, kern); - m.add_at_edge (X_AXIS, RIGHT, thick, segno_width + 2 * thinkern); - m.add_at_edge (X_AXIS, RIGHT, thin, kern); - } - // end varsegno block - } - else if (str == ":") - { - if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me)) - { - Interval staff_extent = staff->extent (staff, Y_AXIS); - - /* - assume staff lines are disposed equally at unit space; - put a dot into each space within extent (may extend staff_extent). - - staff_extent is an interval of two integers or two half-integers; - in the former case dots are to be placed at half-integers, - in the latter at integers. - - these integers are not exact due to staff line thickness. - */ - int const pos = int (rint (staff_extent.at (UP) * 2)); - Real const correction = pos & 1 ? 0.0 : 0.5; - - for (int i = int (rint (extent.at (DOWN) + (0.5 - correction))), - e = int (rint (extent.at (UP) + (0.5 - correction))); - i < e; - ++i) - { - Stencil d (dot); - - d.translate_axis (i + correction, Y_AXIS); - m.add_stencil (d); - } - } - } - else if (str == "dashed") - m = dashed_bar_line (me, extent, hair); - else if (str == "'") - m = tick_bar_line (me, extent.at (UP), rounded); - - return m; -} - -Stencil -Bar_line::simple_barline (Grob *me, - Real w, - Interval const &extent, - bool rounded) -{ - Real blot - = rounded - ? me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")) - : 0.0; - - return Lookup::round_filled_box (Box (Interval (0, w), extent), blot); -} - -Stencil -Bar_line::tick_bar_line (Grob *me, Real h, bool rounded) -{ - Real th = Staff_symbol_referencer::staff_space (me) / 2; - Real line_thick = Staff_symbol_referencer::line_thickness (me); - - Real blot - = rounded - ? me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")) - : 0.0; - - return Lookup::round_filled_box (Box (Interval (0, line_thick), - Interval (h - th, h + th)), blot); + return me->internal_has_interface (ly_symbol2scm ("bar-line-interface")) + && !me->extent (me, X_AXIS).is_empty (); } - -Stencil -Bar_line::dashed_bar_line (Grob *me, Interval const &extent, Real thick) -{ - Real dash_size - = 1.0 - robust_scm2double (me->get_property ("gap"), 0.3); - /* - this is a tad complex for what we want to achieve, but with a - simple line, the round blotting interferes with staff line - connections. - */ - Real ss = Staff_symbol_referencer::staff_space (me); - Real const h = extent.length (); - int dashes = int (rint (h / ss)); - - /* - there are two concerns: - 1. one dash plus one space should be one staff space - 2. the line should begin and end with half a dash - - both can be satisfied, if the extent is (roughly) an integer - multiple of staff space. - */ - if (fabs (h / ss - dashes) < 0.1) - { - Real blot - = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); - - Real const half_dash = dash_size / 2; - Stencil bar; - - for (int i = 0; i <= dashes; ++i) - { - Real top_y = extent.at (DOWN) - + (i == dashes ? h : (i + half_dash) * ss); - Real bot_y = extent.at (DOWN) + (i ? (i - half_dash) * ss : 0.0); - - bar.add_stencil (Lookup::round_filled_box (Box (Interval (0, thick), - Interval (bot_y, top_y)), - blot)); - } - return bar; - } - else - { - /* - We have to scale the dashing so it starts and ends with half a - dash exactly. - */ - Real total_dash_size = h / dashes; - Real factor = (dash_size - thick) / ss; - - SCM at = scm_list_n (ly_symbol2scm ("dashed-line"), - scm_from_double (thick), - scm_from_double (factor * total_dash_size), - scm_from_double ((1 - factor) * total_dash_size), - scm_from_double (0), - scm_from_double (h), - scm_from_double (factor * total_dash_size * 0.5), - SCM_UNDEFINED); - - Box box; - box.add_point (Offset (0, 0)); - box.add_point (Offset (0, h)); - - Stencil s (box, at); - s.translate (Offset (thick / 2, extent.at (DOWN))); - return s; - } - return Stencil (); -} - -MAKE_SCHEME_CALLBACK (Bar_line, calc_anchor, 1) -SCM -Bar_line::calc_anchor (SCM smob) -{ - Grob *me = unsmob_grob (smob); - Real kern = robust_scm2double (me->get_property ("kern"), 1); - Real staffline = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); - string str = robust_scm2string (me->get_property ("glyph-name"), ""); - - /* we put the anchor in the center of the barline, unless we are - a repeat bar, in which case we put the anchor in the center of - the barline without the dots. */ - Interval ext = me->extent (me, X_AXIS); - if (ext.is_empty ()) - return scm_from_double (0); - - Real anchor = ext.center (); - - Stencil dot = Font_interface::get_default_font (me)->find_by_name ("dots.dot"); - Real dot_width = dot.extent (X_AXIS).length () + kern * staffline; - if (str == "|:") - anchor -= dot_width / 2; - else if (str == ":|") - anchor += dot_width / 2; - - return scm_from_double (anchor); -} - -ADD_INTERFACE (Bar_line, - "Bar line.\n" - "\n" - "Print a special bar symbol. It replaces the regular bar" - " symbol with a special symbol. The argument @var{bartype}" - " is a string which specifies the kind of bar line to print." - " Options are @code{|}, @code{:|}, @code{|:}, @code{:|:}, @code{:|.|:}," - " @code{:|.:}, @code{.}, @code{||}, @code{|.}, @code{.|}, @code{.|.}," - " @code{|.|}, @code{:}, @code{dashed}, @code{'} and @code{S}.\n" - "\n" - "These produce, respectively, a normal bar line, a right repeat, a left repeat," - " a thick double repeat, a thin-thick-thin double repeat," - " a thin-thick double repeat, a thick bar, a double bar, a start bar," - " an end bar, a thick double bar, a thin-thick-thin bar," - " a dotted bar, a dashed bar, a tick as bar line and a segno bar.\n" - "\n" - "In addition, there is an option" - " @code{||:} which is equivalent to @code{|:} except at line" - " breaks, where it produces a double bar (@code{||}) at the" - " end of the line and a repeat sign (@code{|:}) at the" - " beginning of the new line.\n" - "\n" - "For segno, @code{S} produces a segno sign except at line breaks," - " where it produces a double bar (@code{||}) at the" - " end of the line and a segno sign at the beginning of the new line." - " @code{|S} is equivalent to @code{S} but produces a simple bar line" - " (@code{|}) instead of a double bar line (@code{||}) at line breaks." - " @code{S|} produces the segno sign at line breaks and starts the following" - " line without special bar lines.\n" - "\n" - "@code{S|:} and @code{:|S} are used for repeat/segno combinations that are" - " separated at line breaks. Alternatively, @code{.S|:} and @code{:|S.}" - " may be used which combine repeat signs and segno at the same line in" - " case of a line break. @code{:|S|:} is a combination of a left repeat" - " (@code{:|}), a segno (@code{S}) and a right repeat @code{|:} which" - " splits before the segno at line breaks; @code{:|S.|:} splits after" - " the segno sign.\n" - "\n" - "If @var{bartype} is set to @code{empty} then nothing is" - " printed, but a line break is allowed at that spot.\n" - "\n" - "@code{gap} is used for the gaps in dashed bar lines.", - - /* properties */ - "allow-span-bar " - "gap " - "kern " - "thin-kern " - "hair-thickness " - "thick-thickness " - "glyph " - "glyph-name " - "bar-extent " - ); diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 82bc09f0ed..f2c287c629 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,12 +17,15 @@ along with LilyPond. If not, see . */ +#include // for reverse + #include "paper-column.hh" #include "output-def.hh" #include "side-position-interface.hh" #include "engraver.hh" #include "context.hh" #include "grob-array.hh" +#include "stream-event.hh" #include "translator.icc" @@ -35,14 +38,52 @@ class Bar_number_engraver : public Engraver { protected: Item *text_; + int alternative_starting_bar_number_; + int alternative_number_; + int alternative_number_increment_; + Stream_event *alternative_event_; + protected: void stop_translation_timestep (); + DECLARE_TRANSLATOR_LISTENER (alternative); DECLARE_ACKNOWLEDGER (break_alignment); void process_music (); void create_items (); TRANSLATOR_DECLARATIONS (Bar_number_engraver); }; +IMPLEMENT_TRANSLATOR_LISTENER (Bar_number_engraver, alternative); +void +Bar_number_engraver::listen_alternative (Stream_event *ev) +{ + if (alternative_event_) + return; + + alternative_event_ = ev; + int current_barnumber = robust_scm2int (get_property ("currentBarNumber"), 0); + Direction alternative_dir = robust_scm2dir (ev->get_property ("alternative-dir"), CENTER); + bool make_alternative = get_property ("alternativeNumberingStyle") == ly_symbol2scm ("numbers") + || get_property ("alternativeNumberingStyle") == ly_symbol2scm ("numbers-with-letters"); + if (make_alternative) + { + /* + if we're starting the first alternative, we set the starting + bar number to the current bar number + */ + if (alternative_dir == LEFT) + alternative_starting_bar_number_ = current_barnumber; + + /* + if the alternative is not the last one, we send the + current bar number back to the alternative bar number. + */ + if (alternative_dir < RIGHT) + current_barnumber = alternative_starting_bar_number_; + + context ()->set_property ("currentBarNumber", scm_from_int (current_barnumber)); + } +} + void Bar_number_engraver::process_music () { @@ -51,25 +92,55 @@ Bar_number_engraver::process_music () if (scm_is_string (wb)) { Moment mp (robust_scm2moment (get_property ("measurePosition"), Moment (0))); - if (mp.main_part_ == Rational (0)) - { - SCM bn = get_property ("currentBarNumber"); - SCM proc = get_property ("barNumberVisibility"); - if (scm_is_number (bn) && ly_is_procedure (proc) - && to_boolean (scm_call_1 (proc, bn))) - { - create_items (); - // guh. - text_->set_property - ("text", scm_number_to_string (bn, scm_from_int (10))); - } - } + SCM bn = get_property ("currentBarNumber"); + SCM proc = get_property ("barNumberVisibility"); + if (scm_is_number (bn) && ly_is_procedure (proc) + && to_boolean (scm_call_2 (proc, bn, mp.smobbed_copy ()))) + { + create_items (); + SCM alternative_style = get_property ("alternativeNumberingStyle"); + string text_tag = ""; + if (alternative_style == ly_symbol2scm ("numbers-with-letters")) + { + if (alternative_event_) + { + Direction alternative_dir = robust_scm2dir (alternative_event_->get_property ("alternative-dir"), RIGHT); + switch (alternative_dir) + { + case LEFT: + alternative_number_ = 0; + break; + case CENTER: + break; + case RIGHT: + alternative_number_ = INT_MIN; + break; + default: + assert (false); + } + alternative_number_ += alternative_number_increment_; + + alternative_number_increment_ = robust_scm2int (alternative_event_->get_property ("alternative-increment"), 1); + } + } + SCM formatter = get_property ("barNumberFormatter"); + if (ly_is_procedure (formatter)) + text_->set_property ("text", scm_call_4 (formatter, + bn, + mp.smobbed_copy (), + scm_from_int (alternative_number_), + context ()->self_scm ())); + } } } Bar_number_engraver::Bar_number_engraver () { text_ = 0; + alternative_starting_bar_number_ = 0; + alternative_number_increment_ = 0; + alternative_number_ = INT_MIN; + alternative_event_ = 0; } void @@ -86,10 +157,11 @@ Bar_number_engraver::acknowledge_break_alignment (Grob_info inf) void Bar_number_engraver::stop_translation_timestep () { + alternative_event_ = 0; if (text_) { text_->set_object ("side-support-elements", - grob_list_to_grob_array (get_property ("stavesFound"))); + grob_list_to_grob_array (get_property ("stavesFound"))); text_ = 0; } } @@ -103,27 +175,28 @@ Bar_number_engraver::create_items () text_ = make_item ("BarNumber", SCM_EOL); } - ADD_ACKNOWLEDGER (Bar_number_engraver, break_alignment); ADD_TRANSLATOR (Bar_number_engraver, - /* doc */ - "A bar number is created whenever @code{measurePosition} is" - " zero and when there is a bar line (i.e., when" - " @code{whichBar} is set). It is put on top of all staves," - " and appears only at the left side of the staff. The staves" - " are taken from @code{stavesFound}, which is maintained by" - " @ref{Staff_collecting_engraver}.", - - /* create */ - "BarNumber ", - - /* read */ - "currentBarNumber " - "whichBar " - "stavesFound " - "barNumberVisibility ", - - /* write */ - "" - ); + /* doc */ + "A bar number is created whenever @code{measurePosition} is" + " zero and when there is a bar line (i.e., when" + " @code{whichBar} is set). It is put on top of all staves," + " and appears only at the left side of the staff. The staves" + " are taken from @code{stavesFound}, which is maintained by" + " @ref{Staff_collecting_engraver}.", + + /* create */ + "BarNumber ", + + /* read */ + "currentBarNumber " + "whichBar " + "stavesFound " + "barNumberFormatter " + "barNumberVisibility " + "alternativeNumberingStyle ", + + /* write */ + "currentBarNumber " + ); diff --git a/lily/beam-collision-engraver.cc b/lily/beam-collision-engraver.cc index cdb4be6270..b700dc733d 100644 --- a/lily/beam-collision-engraver.cc +++ b/lily/beam-collision-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2011 Mike Solomon + Copyright (C) 2011--2012 Mike Solomon LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,6 +37,7 @@ protected: DECLARE_ACKNOWLEDGER (key_signature); DECLARE_ACKNOWLEDGER (time_signature); DECLARE_ACKNOWLEDGER (beam); + DECLARE_ACKNOWLEDGER (flag); virtual void finalize (); @@ -77,6 +78,14 @@ Beam_collision_engraver::finalize () { Grob *beam_grob = beams_[i].grob (); + extract_grob_set (beam_grob, "normal-stems", stems); + Interval_t vertical_span; + for (vsize j = 0; j < stems.size (); j++) + { + int vag = Grob::get_vertical_axis_group_index (stems[j]); + if (vag >= 0) + vertical_span.add_point (vag); + } Context *beam_context = beams_[i].context (); Interval_t beam_spanned_rank_ = beam_grob->spanned_rank_interval (); @@ -88,6 +97,9 @@ Beam_collision_engraver::finalize () for (vsize j = start; j < covered_grobs_.size (); j++) { Grob *covered_grob = covered_grobs_[j].grob (); + int vag = Grob::get_vertical_axis_group_index (covered_grob); + if (!vertical_span.contains (vag)) + continue; Context *covered_grob_context = covered_grobs_[j].context (); Interval_t covered_grob_spanned_rank = covered_grob->spanned_rank_interval (); @@ -159,6 +171,12 @@ Beam_collision_engraver::acknowledge_time_signature (Grob_info i) covered_grobs_.push_back (i); } +void +Beam_collision_engraver::acknowledge_flag (Grob_info i) +{ + covered_grobs_.push_back (i); +} + void Beam_collision_engraver::acknowledge_beam (Grob_info i) { @@ -174,18 +192,19 @@ ADD_ACKNOWLEDGER (Beam_collision_engraver, accidental); ADD_ACKNOWLEDGER (Beam_collision_engraver, clef); ADD_ACKNOWLEDGER (Beam_collision_engraver, key_signature); ADD_ACKNOWLEDGER (Beam_collision_engraver, time_signature); +ADD_ACKNOWLEDGER (Beam_collision_engraver, flag); ADD_ACKNOWLEDGER (Beam_collision_engraver, beam); ADD_TRANSLATOR (Beam_collision_engraver, - /* doc */ - "Help beams avoid colliding with notes and clefs in other voices.", + /* doc */ + "Help beams avoid colliding with notes and clefs in other voices.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/beam-concave.cc b/lily/beam-concave.cc deleted file mode 100644 index 7ca626b609..0000000000 --- a/lily/beam-concave.cc +++ /dev/null @@ -1,173 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 2004 Han-Wen Nienhuys - - LilyPond is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - 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 . -*/ - -/* - Determine whether a beam is concave. - - A beam is concave when the middle notes get closer to the - beam than the left and right edge notes. - - This is determined in two ways: by looking at the positions of the - middle notes, or by looking at the deviation of the inside notes - compared to the line connecting first and last. - - The tricky thing is what to do with beams with chords. There are no - real guidelines in this case. -*/ - -#include "pointer-group-interface.hh" -#include "stem.hh" -#include "beam.hh" -#include "grob.hh" -#include "staff-symbol-referencer.hh" -#include "directional-element-interface.hh" - -bool -is_concave_single_notes (vector const &positions, Direction beam_dir) -{ - Interval covering; - covering.add_point (positions[0]); - covering.add_point (positions.back ()); - - bool above = false; - bool below = false; - bool concave = false; - - /* - notes above and below the interval covered by 1st and last note. - */ - for (vsize i = 1; i + 1 < positions.size (); i++) - { - above = above || (positions[i] > covering[UP]); - below = below || (positions[i] < covering[DOWN]); - } - - concave = concave || (above && below); - /* - A note as close or closer to the beam than begin and end, but the - note is reached in the opposite direction as the last-first dy - */ - int dy = positions.back () - positions[0]; - int closest = max (beam_dir * positions.back (), beam_dir * positions[0]); - for (vsize i = 2; !concave && i + 1 < positions.size (); i++) - { - int inner_dy = positions[i] - positions[i - 1]; - if (sign (inner_dy) != sign (dy) - && (beam_dir * positions[i] >= closest - || beam_dir * positions[i - 1] >= closest)) - concave = true; - } - - bool all_closer = true; - for (vsize i = 1; all_closer && i + 1 < positions.size (); i++) - { - all_closer = all_closer - && (beam_dir * positions[i] > closest); - } - - concave = concave || all_closer; - return concave; -} - -Real -calc_positions_concaveness (vector const &positions, Direction beam_dir) -{ - Real dy = positions.back () - positions[0]; - Real slope = dy / Real (positions.size () - 1); - Real concaveness = 0.0; - for (vsize i = 1; i + 1 < positions.size (); i++) - { - Real line_y = slope * i + positions[0]; - - concaveness += max (beam_dir * (positions[i] - line_y), 0.0); - } - - concaveness /= positions.size (); - - /* - Normalize. For dy = 0, the slope ends up as 0 anyway, so the - scaling of concaveness doesn't matter much. - */ - if (dy) - concaveness /= fabs (dy); - return concaveness; -} - - -MAKE_SCHEME_CALLBACK (Beam, calc_concaveness, 1); -SCM -Beam::calc_concaveness (SCM smob) -{ - Grob *me = unsmob_grob (smob); - - vector stems - = extract_grob_array (me, "stems"); - - if (is_knee (me)) - return scm_from_double (0.0); - - Direction beam_dir = CENTER; - for (vsize i = stems.size (); i--;) - { - if (Stem::is_normal_stem (stems[i])) - { - if (Direction dir = get_grob_direction (stems[i])) - beam_dir = dir; - } - else - stems.erase (stems.begin () + i); - } - - if (stems.size () <= 2) - return scm_from_int (0); - - vector close_positions; - vector far_positions; - for (vsize i = 0; i < stems.size (); i++) - { - /* - For chords, we take the note head that is closest to the beam. - - Hmmm.. wait, for the beams in the last measure of morgenlied, - this doesn't look so good. Let's try the heads farthest from - the beam. - */ - Interval posns = Stem::head_positions (stems[i]); - - close_positions.push_back ((int) rint (posns[beam_dir])); - far_positions.push_back ((int) rint (posns[-beam_dir])); - } - - Real concaveness = 0.0; - - if (is_concave_single_notes (beam_dir == UP ? close_positions : far_positions, beam_dir)) - { - concaveness = 10000; - } - else - { - concaveness = (calc_positions_concaveness (far_positions, beam_dir) - + calc_positions_concaveness (close_positions, beam_dir)) / 2; - } - - return scm_from_double (concaveness); -} - - - diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 04e571f68a..a89435de68 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -123,7 +123,7 @@ Beam_engraver::listen_beam (Stream_event *ev) Direction updown = to_dir (ev->get_property ("direction")); if (updown) - forced_direction_ = updown; + forced_direction_ = updown; } else if (d == STOP && valid_end_point ()) ASSIGN_EVENT_ONCE (stop_ev_, ev); @@ -143,17 +143,17 @@ Beam_engraver::process_music () if (start_ev_) { if (beam_) - { - start_ev_->origin ()->warning (_ ("already have a beam")); - return; - } + { + start_ev_->origin ()->warning (_ ("already have a beam")); + return; + } set_melisma (true); prev_start_ev_ = start_ev_; beam_ = make_spanner ("Beam", start_ev_->self_scm ()); Moment mp (robust_scm2moment (get_property ("measurePosition"), - Moment (0))); + Moment (0))); beam_start_location_ = mp; beam_start_mom_ = now_mom (); @@ -177,13 +177,13 @@ Beam_engraver::typeset_beam () if (finished_beam_) { if (!finished_beam_->get_bound (RIGHT)) - finished_beam_->set_bound (RIGHT, finished_beam_->get_bound (LEFT)); + finished_beam_->set_bound (RIGHT, finished_beam_->get_bound (LEFT)); if (forced_direction_) - { - Grob *stem = finished_beam_->get_bound (RIGHT); - set_grob_direction (stem, forced_direction_); - forced_direction_ = CENTER; - } + { + Grob *stem = finished_beam_->get_bound (RIGHT); + set_grob_direction (stem, forced_direction_); + forced_direction_ = CENTER; + } finished_beam_info_->beamify (finished_beaming_options_); Beam::set_beaming (finished_beam_, finished_beam_info_); @@ -230,8 +230,8 @@ Beam_engraver::finalize () prev_start_ev_->origin ()->warning (_ ("unterminated beam")); /* - we don't typeset it, (we used to, but it was commented - out. Reason unknown) */ + we don't typeset it, (we used to, but it was commented + out. Reason unknown) */ beam_->suicide (); delete beam_info_; } @@ -243,7 +243,7 @@ Beam_engraver::acknowledge_rest (Grob_info info) if (beam_ && !scm_is_number (info.grob ()->get_property_data ("staff-position"))) chain_offset_callback (info.grob (), - Beam::rest_collision_callback_proc, Y_AXIS); + Beam::rest_collision_callback_proc, Y_AXIS); } void @@ -268,15 +268,18 @@ Beam_engraver::acknowledge_stem (Grob_info info) } last_stem_added_at_ = now; - int durlog = unsmob_duration (ev->get_property ("duration"))->duration_log (); + + Duration *stem_duration = unsmob_duration (ev->get_property ("duration")); + int durlog = stem_duration->duration_log (); + //int durlog = unsmob_duration (ev->get_property ("duration"))->duration_log (); if (durlog <= 2) { ev->origin ()->warning (_ ("stem does not fit in beam")); prev_start_ev_->origin ()->warning (_ ("beam was started here")); /* - don't return, since + don't return, since - [r4 c8] can just as well be modern notation. + [r4 c8] can just as well be modern notation. */ } @@ -286,8 +289,10 @@ Beam_engraver::acknowledge_stem (Grob_info info) stem->set_property ("duration-log", scm_from_int (durlog)); Moment stem_location = now - beam_start_mom_ + beam_start_location_; beam_info_->add_stem (stem_location, - max (durlog- 2, 0), - Stem::is_invisible (stem)); + max (durlog - 2, 0), + Stem::is_invisible (stem), + stem_duration->factor (), + (stem->get_property ("tuplet-start") == SCM_BOOL_T)); Beam::add_stem (beam_, stem); } @@ -295,22 +300,22 @@ ADD_ACKNOWLEDGER (Beam_engraver, stem); ADD_ACKNOWLEDGER (Beam_engraver, rest); ADD_TRANSLATOR (Beam_engraver, - /* doc */ - "Handle @code{Beam} events by engraving beams. If omitted," - " then notes are printed with flags instead of beams.", + /* doc */ + "Handle @code{Beam} events by engraving beams. If omitted," + " then notes are printed with flags instead of beams.", - /* create */ - "Beam ", + /* create */ + "Beam ", - /* read */ + /* read */ "baseMoment " - "beamMelismaBusy " - "beatStructure " - "subdivideBeams ", + "beamMelismaBusy " + "beatStructure " + "subdivideBeams ", - /* write */ - "forbidBreak" - ); + /* write */ + "forbidBreak" + ); class Grace_beam_engraver : public Beam_engraver { @@ -357,26 +362,25 @@ Grace_beam_engraver::listen_beam (Stream_event *ev) stop_ev_ = ev; } - ADD_ACKNOWLEDGER (Grace_beam_engraver, stem); ADD_ACKNOWLEDGER (Grace_beam_engraver, rest); ADD_TRANSLATOR (Grace_beam_engraver, - /* doc */ - "Handle @code{Beam} events by engraving beams. If omitted," - " then notes are printed with flags instead of beams. Only" - " engraves beams when we are at grace points in time.", + /* doc */ + "Handle @code{Beam} events by engraving beams. If omitted," + " then notes are printed with flags instead of beams. Only" + " engraves beams when we are at grace points in time.", - /* create */ - "Beam ", + /* create */ + "Beam ", - /* read */ + /* read */ "baseMoment " - "beamMelismaBusy " - "beatStructure " - "subdivideBeams ", + "beamMelismaBusy " + "beatStructure " + "subdivideBeams ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/beam-performer.cc b/lily/beam-performer.cc index d14879bf93..d723d7a81c 100644 --- a/lily/beam-performer.cc +++ b/lily/beam-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -104,5 +104,5 @@ ADD_TRANSLATOR (Beam_performer, /* write */ "" - ); + ); diff --git a/lily/beam-quanting.cc b/lily/beam-quanting.cc index c5cafd5cfa..ac845103ea 100644 --- a/lily/beam-quanting.cc +++ b/lily/beam-quanting.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -21,7 +21,7 @@ #include "beam-scoring-problem.hh" #include -#include +#include #include using namespace std; @@ -30,11 +30,17 @@ using namespace std; #include "direction.hh" #include "directional-element-interface.hh" #include "grob.hh" +#include "grob-array.hh" +#include "item.hh" #include "international.hh" +#include "interval-minefield.hh" +#include "least-squares.hh" #include "libc-extension.hh" #include "main.hh" +#include "note-head.hh" #include "output-def.hh" #include "pointer-group-interface.hh" +#include "spanner.hh" #include "staff-symbol-referencer.hh" #include "stencil.hh" #include "stem.hh" @@ -103,15 +109,15 @@ void Beam_configuration::add (Real demerit, const string &reason) demerits += demerit; #if DEBUG_BEAM_SCORING - if (demerit) + if (demerit) score_card_ += to_string (" %s %.2f", reason.c_str (), demerit); #endif } - -Beam_configuration* Beam_configuration::new_config (Interval start, + +Beam_configuration *Beam_configuration::new_config (Interval start, Interval offset) { - Beam_configuration* qs = new Beam_configuration; + Beam_configuration *qs = new Beam_configuration; qs->y = Interval (int (start[LEFT]) + offset[LEFT], int (start[RIGHT]) + offset[RIGHT]); @@ -120,13 +126,14 @@ Beam_configuration* Beam_configuration::new_config (Interval start, Real start_score = abs (offset[RIGHT]) + abs (offset[LEFT]); qs->demerits = start_score / 1000.0; qs->next_scorer_todo = ORIGINAL_DISTANCE + 1; - + return qs; } Real -Beam_scoring_problem::y_at (Real x, Beam_configuration const* p) const { - return p->y[LEFT] + (x - x_span[LEFT]) * p->y.delta() / x_span.delta(); +Beam_scoring_problem::y_at (Real x, Beam_configuration const *p) const +{ + return p->y[LEFT] + x * p->y.delta () / x_span_; } /****************************************************************/ @@ -144,208 +151,712 @@ Beam_scoring_problem::y_at (Real x, Beam_configuration const* p) const { // priority queue on the beams to score. static int score_count = 0; LY_DEFINE (ly_beam_score_count, "ly:beam-score-count", 0, 0, 0, - (), - "count number of beam scores.") { + (), + "count number of beam scores.") +{ return scm_from_int (score_count); } void Beam_scoring_problem::add_collision (Real x, Interval y, Real score_factor) { - if (edge_dirs[LEFT] == edge_dirs[RIGHT]) { - Direction d = edge_dirs[LEFT]; - - Real quant_range_y = quant_range[LEFT][-d] + - (x - x_span[LEFT]) * (quant_range[RIGHT][-d] - quant_range[LEFT][-d]) / x_span.delta(); - - if (d*(quant_range_y - minmax(d, y[UP], y[DOWN])) > 0) { - return; - } - } + // We used to screen for quant range, but no more. Beam_collision c; c.beam_y_.set_empty (); for (vsize j = 0; j < segments_.size (); j++) { - if (segments_[j].horizontal_.contains(x)) - c.beam_y_.add_point (segments_[j].vertical_count_ * beam_translation); + if (segments_[j].horizontal_.contains (x)) + c.beam_y_.add_point (segments_[j].vertical_count_ * beam_translation_); if (segments_[j].horizontal_[LEFT] > x) break; } - c.beam_y_.widen (0.5 * beam_thickness); - + c.beam_y_.widen (0.5 * beam_thickness_); + c.x_ = x; - y *= 1/staff_space; + y *= 1 / staff_space_; c.y_ = y; c.base_penalty_ = score_factor; collisions_.push_back (c); } -void Beam_scoring_problem::init_collisions (vector grobs) +void Beam_scoring_problem::init_instance_variables (Grob *me, Drul_array ys, bool align_broken_intos) +{ + beam_ = dynamic_cast (me); + unquanted_y_ = ys; + + /* + If 'ys' are finite, use them as starting points for y-positions of the + ends of the beam, instead of the best-fit through the natural ends of + the stems. Otherwise, we want to do initial slope calculations. + */ + do_initial_slope_calculations_ = false; + for (LEFT_and_RIGHT (d)) + do_initial_slope_calculations_ |= isinf (unquanted_y_[d]) || isnan (unquanted_y_[d]); + + /* + Calculations are relative to a unit-scaled staff, i.e. the quants are + divided by the current staff_space_. + */ + staff_space_ = Staff_symbol_referencer::staff_space (beam_); + beam_thickness_ = Beam::get_beam_thickness (beam_) / staff_space_; + line_thickness_ = Staff_symbol_referencer::line_thickness (beam_) / staff_space_; + + // This is the least-squares DY, corrected for concave beams. + musical_dy_ = robust_scm2double (beam_->get_property ("least-squares-dy"), 0); + + vector beams; + align_broken_intos_ = align_broken_intos; + if (align_broken_intos_) + { + Spanner *orig = dynamic_cast (beam_->original ()); + if (!orig) + align_broken_intos_ = false; + else if (!orig->broken_intos_.size ()) + align_broken_intos_ = false; + else + beams.insert (beams.end (), orig->broken_intos_.begin (), orig->broken_intos_.end ()); + } + if (!align_broken_intos_) + beams.push_back (beam_); + + /* + x_span_ is a single scalar, cumulatively summing the length of all the + segments the parent beam was broken-into. + */ + x_span_ = 0.0; + is_knee_ = false; + normal_stem_count_ = 0; + for (vsize i = 0; i < beams.size (); i++) + { + extract_grob_set (beams[i], "stems", stems); + extract_grob_set (beams[i], "covered-grobs", fake_collisions); + vector collisions; + + for (vsize j = 0; j < fake_collisions.size (); j++) + if (fake_collisions[j]->get_system () == beams[i]->get_system ()) + collisions.push_back (fake_collisions[j]); + + Grob *common[2]; + for (int a = 2; a--;) + common[a] = common_refpoint_of_array (stems, beams[i], Axis (a)); + + for (LEFT_and_RIGHT (d)) + common[X_AXIS] = beams[i]->get_bound (d)->common_refpoint (common[X_AXIS], X_AXIS); + + // positions of the endpoints of this beam segment, including any overhangs + const Interval x_pos = robust_scm2interval (beams[i]->get_property ("X-positions"), + Interval (0.0, 0.0)); + + Drul_array edge_stems (Beam::first_normal_stem (beams[i]), + Beam::last_normal_stem (beams[i])); + + Drul_array dirs_found (0, 0); + + Real my_y = beams[i]->relative_coordinate (common[Y_AXIS], Y_AXIS); + + Interval beam_width (-1.0, -1.0); + for (vsize j = 0; j < stems.size (); j++) + { + Grob *s = stems[j]; + beam_multiplicity_.push_back (Stem::beam_multiplicity (stems[j])); + head_positions_.push_back (Stem::head_positions (stems[j])); + is_normal_.push_back (Stem::is_normal_stem (stems[j])); + + Stem_info si (Stem::get_stem_info (s)); + si.scale (1 / staff_space_); + stem_infos_.push_back (si); + chord_start_y_.push_back (Stem::chord_start_y (s)); + dirs_found[si.dir_] = true; + + bool f = to_boolean (s->get_property ("french-beaming")) + && s != edge_stems[LEFT] && s != edge_stems[RIGHT]; + + Real y = Beam::calc_stem_y (beams[i], s, common, x_pos[LEFT], x_pos[RIGHT], CENTER, + Interval (0, 0), f); + base_lengths_.push_back (y / staff_space_); + stem_xpositions_.push_back (s->relative_coordinate (common[X_AXIS], X_AXIS) - x_pos[LEFT] + x_span_); + stem_ypositions_.push_back (s->relative_coordinate (common[Y_AXIS], Y_AXIS) - my_y); + + if (is_normal_.back ()) + { + if (beam_width[LEFT] == -1.0) + beam_width[LEFT] = stem_xpositions_.back (); + beam_width[RIGHT] = stem_xpositions_.back (); + } + } + + edge_dirs_ = Drul_array (CENTER, CENTER); + normal_stem_count_ += Beam::normal_stem_count (beams[i]); + if (normal_stem_count_) + edge_dirs_ = Drul_array (stem_infos_[0].dir_, + stem_infos_.back ().dir_); + + is_xstaff_ = Align_interface::has_interface (common[Y_AXIS]); + is_knee_ |= dirs_found[DOWN] && dirs_found[UP]; + + staff_radius_ = Staff_symbol_referencer::staff_radius (beams[i]); + edge_beam_counts_ = Drul_array + (Stem::beam_multiplicity (stems[0]).length () + 1, + Stem::beam_multiplicity (stems.back ()).length () + 1); + + // TODO - why are we dividing by staff_space_? + beam_translation_ = Beam::get_beam_translation (beams[i]) / staff_space_; + + for (LEFT_and_RIGHT (d)) + { + quant_range_[d].set_full (); + if (!edge_stems[d]) + continue; + + Real stem_offset = edge_stems[d]->relative_coordinate (common[Y_AXIS], Y_AXIS) + - beams[i]->relative_coordinate (common[Y_AXIS], Y_AXIS); + Interval heads = Stem::head_positions (edge_stems[d]) * 0.5 * staff_space_; + + Direction ed = edge_dirs_[d]; + heads.widen (0.5 * staff_space_ + + (edge_beam_counts_[d] - 1) * beam_translation_ + beam_thickness_ * .5); + quant_range_[d][-ed] = heads[ed] + stem_offset; + } + + segments_ = Beam::get_beam_segments (beams[i]); + vector_sort (segments_, beam_segment_less); + for (vsize j = 0; j < segments_.size (); j++) + segments_[j].horizontal_ += (x_span_ - x_pos[LEFT]); + + set colliding_stems; + for (vsize j = 0; j < collisions.size (); j++) + { + if (!collisions[j]->is_live ()) + continue; + + if (Beam::has_interface (collisions[j]) && Beam::is_cross_staff (collisions[j])) + continue; + + Box b; + for (Axis a = X_AXIS; a < NO_AXES; incr (a)) + b[a] = collisions[j]->extent (common[a], a); + + if (b[X_AXIS][RIGHT] < x_pos[LEFT] || b[X_AXIS][LEFT] > x_pos[RIGHT]) + continue; + if (b[X_AXIS].is_empty () || b[Y_AXIS].is_empty ()) + continue; + + b[X_AXIS] += (x_span_ - x_pos[LEFT]); + b[Y_AXIS] -= my_y; + Real width = b[X_AXIS].length (); + Real width_factor = sqrt (width / staff_space_); + + for (LEFT_and_RIGHT (d)) + add_collision (b[X_AXIS][d], b[Y_AXIS], width_factor); + + Grob *stem = unsmob_grob (collisions[j]->get_object ("stem")); + if (stem && Stem::has_interface (stem) && Stem::is_normal_stem (stem)) + { + colliding_stems.insert (stem); + } + } + + for (set::const_iterator it (colliding_stems.begin ()); it != colliding_stems.end (); it++) + { + Grob *s = *it; + Real x = (s->extent (common[X_AXIS], X_AXIS) - x_pos[LEFT] + x_span_).center (); + + Direction stem_dir = get_grob_direction (*it); + Interval y; + y.set_full (); + y[-stem_dir] = Stem::chord_start_y (*it) + (*it)->relative_coordinate (common[Y_AXIS], Y_AXIS) + - my_y; + + Real factor = parameters_.STEM_COLLISION_FACTOR; + if (!unsmob_grob (s->get_object ("beam"))) + factor = 1.0; + add_collision (x, y, factor); + } + x_span_ += beams[i]->spanner_length (); + } +} + +Beam_scoring_problem::Beam_scoring_problem (Grob *me, Drul_array ys, bool align_broken_intos) +{ + beam_ = dynamic_cast (me); + unquanted_y_ = ys; + align_broken_intos_ = align_broken_intos; + + parameters_.fill (me); + init_instance_variables (me, ys, align_broken_intos); + if (do_initial_slope_calculations_) + { + least_squares_positions (); + slope_damping (); + shift_region_to_valid (); + } +} + +// Assuming V is not empty, pick a 'reasonable' point inside V. +static Real +point_in_interval (Interval v, Real dist) +{ + if (isinf (v[DOWN])) + return v[UP] - dist; + else if (isinf (v[UP])) + return v[DOWN] + dist; + else + return v.center (); +} + +/* Set stem's shorten property if unset. + +TODO: +take some y-position (chord/beam/nearest?) into account +scmify forced-fraction + +This is done in beam because the shorten has to be uniform over the +entire beam. +*/ + +void +set_minimum_dy (Grob *me, Real *dy) +{ + if (*dy) + { + /* + If dy is smaller than the smallest quant, we + get absurd direction-sign penalties. + */ + + Real ss = Staff_symbol_referencer::staff_space (me); + Real beam_thickness = Beam::get_beam_thickness (me) / ss; + Real slt = Staff_symbol_referencer::line_thickness (me) / ss; + Real sit = (beam_thickness - slt) / 2; + Real inter = 0.5; + Real hang = 1.0 - (beam_thickness - slt) / 2; + + *dy = sign (*dy) * max (fabs (*dy), + min (min (sit, inter), hang)); + } +} + +void +Beam_scoring_problem::no_visible_stem_positions () { - Grob* common_x = NULL; - segments_ = Beam::get_beam_segments (beam, &common_x); - vector_sort (segments_, beam_segment_less); - if (common[X_AXIS] != common_x) + if (!head_positions_.size ()) { - programming_error ("Disagree on common x. Skipping collisions in beam scoring."); + unquanted_y_ = Interval (0, 0); return; } - set stems; - for (vsize i = 0; i < grobs.size (); i++) { - Box b; - for (Axis a = X_AXIS; a < NO_AXES; incr (a)) - b[a] = grobs[i]->extent(common[a], a); + Interval head_positions; + Slice multiplicity; + for (vsize i = 0; i < head_positions_.size (); i++) + { + head_positions.unite (head_positions_[i]); + multiplicity.unite (beam_multiplicity_[i]); + } + + Direction dir = get_grob_direction (beam_); - Real width = b[X_AXIS].length (); - Real width_factor = sqrt (width / staff_space); + if (!dir) + programming_error ("The beam should have a direction by now."); + + Real y = head_positions.linear_combination (dir) + * 0.5 * staff_space_ + + dir * beam_translation_ * (multiplicity.length () + 1); + + unquanted_y_ = Interval (y, y); +} + +vsize +Beam_scoring_problem::first_normal_index () +{ + for (vsize i = 0; i < is_normal_.size (); i++) + if (is_normal_[i]) + return i; + + beam_->programming_error ("No normal stems, but asking for first normal stem index."); + return 0; +} + +vsize +Beam_scoring_problem::last_normal_index () +{ + for (vsize i = is_normal_.size (); i--;) + if (is_normal_[i]) + return i; + + beam_->programming_error ("No normal stems, but asking for first normal stem index."); + return 0; +} + +void +Beam_scoring_problem::least_squares_positions () +{ + if (!normal_stem_count_) + { + no_visible_stem_positions (); + return; + } - Direction d = LEFT; - do - add_collision (b[X_AXIS][d], b[Y_AXIS], width_factor); - while (flip (&d) != LEFT); + if (stem_infos_.size () < 1) + return; - Grob* stem = unsmob_grob (grobs[i]->get_object ("stem")); - if (stem && Stem::has_interface (stem) && Stem::is_normal_stem (stem)) + vsize fnx = first_normal_index (); + vsize lnx = last_normal_index (); + + Interval ideal (stem_infos_[fnx].ideal_y_ + stem_ypositions_[fnx], + stem_infos_[lnx].ideal_y_ + stem_ypositions_[lnx]); + + Real y = 0; + Real slope = 0; + Real dy = 0; + Real ldy = 0.0; + if (!ideal.delta ()) + { + Interval chord (chord_start_y_[0], + chord_start_y_.back ()); + + /* Simple beams (2 stems) on middle line should be allowed to be + slightly sloped. + + However, if both stems reach middle line, + ideal[LEFT] == ideal[RIGHT] and ideal.delta () == 0. + + For that case, we apply artificial slope */ + if (!ideal[LEFT] && chord.delta () && stem_infos_.size () == 2) + { + /* FIXME. -> UP */ + Direction d = (Direction) (sign (chord.delta ()) * UP); + unquanted_y_[d] = Beam::get_beam_thickness (beam_) / 2; + unquanted_y_[-d] = -unquanted_y_[d]; + } + else + unquanted_y_ = ideal; + + ldy = unquanted_y_[RIGHT] - unquanted_y_[LEFT]; + } + else + { + vector ideals; + for (vsize i = 0; i < stem_infos_.size (); i++) + if (is_normal_[i]) + ideals.push_back (Offset (stem_xpositions_[i], + stem_infos_[i].ideal_y_ + + stem_ypositions_[i])); + + minimise_least_squares (&slope, &y, ideals); + + dy = slope * x_span_; + + set_minimum_dy (beam_, &dy); + + ldy = dy; + unquanted_y_ = Interval (y, (y + dy)); + } + + musical_dy_ = ldy; + beam_->set_property ("least-squares-dy", scm_from_double (musical_dy_)); +} + +/* + Determine whether a beam is concave. + + A beam is concave when the middle notes get closer to the + beam than the left and right edge notes. + + This is determined in two ways: by looking at the positions of the + middle notes, or by looking at the deviation of the inside notes + compared to the line connecting first and last. + + The tricky thing is what to do with beams with chords. There are no + real guidelines in this case. +*/ + +bool +is_concave_single_notes (vector const &positions, Direction beam_dir) +{ + Interval covering; + covering.add_point (positions[0]); + covering.add_point (positions.back ()); + + bool above = false; + bool below = false; + bool concave = false; + + /* + notes above and below the interval covered by 1st and last note. + */ + for (vsize i = 1; i + 1 < positions.size (); i++) + { + above = above || (positions[i] > covering[UP]); + below = below || (positions[i] < covering[DOWN]); + } + + concave = concave || (above && below); + /* + A note as close or closer to the beam than begin and end, but the + note is reached in the opposite direction as the last-first dy + */ + int dy = positions.back () - positions[0]; + int closest = max (beam_dir * positions.back (), beam_dir * positions[0]); + for (vsize i = 2; !concave && i + 1 < positions.size (); i++) + { + int inner_dy = positions[i] - positions[i - 1]; + if (sign (inner_dy) != sign (dy) + && (beam_dir * positions[i] >= closest + || beam_dir * positions[i - 1] >= closest)) + concave = true; + } + + bool all_closer = true; + for (vsize i = 1; all_closer && i + 1 < positions.size (); i++) + { + all_closer = all_closer + && (beam_dir * positions[i] > closest); + } + + concave = concave || all_closer; + return concave; +} + +Real +calc_positions_concaveness (vector const &positions, Direction beam_dir) +{ + Real dy = positions.back () - positions[0]; + Real slope = dy / Real (positions.size () - 1); + Real concaveness = 0.0; + for (vsize i = 1; i + 1 < positions.size (); i++) + { + Real line_y = slope * i + positions[0]; + + concaveness += max (beam_dir * (positions[i] - line_y), 0.0); + } + + concaveness /= positions.size (); + + /* + Normalize. For dy = 0, the slope ends up as 0 anyway, so the + scaling of concaveness doesn't matter much. + */ + if (dy) + concaveness /= fabs (dy); + return concaveness; +} + +Real +Beam_scoring_problem::calc_concaveness () +{ + SCM conc = beam_->get_property ("concaveness"); + if (scm_is_number (conc)) + return scm_to_double (conc); + + if (is_knee_) + return 0.0; + + Direction beam_dir = CENTER; + for (vsize i = is_normal_.size (); i--;) + if (is_normal_[i] && stem_infos_[i].dir_) + beam_dir = stem_infos_[i].dir_; + + if (normal_stem_count_ <= 2) + return 0.0; + + vector close_positions; + vector far_positions; + for (vsize i = 0; i < is_normal_.size (); i++) + if (is_normal_[i]) { - stems.insert (stem); + /* + For chords, we take the note head that is closest to the beam. + + Hmmm.. wait, for the beams in the last measure of morgenlied, + this doesn't look so good. Let's try the heads farthest from + the beam. + */ + + close_positions.push_back ((int) rint (head_positions_[i][beam_dir])); + far_positions.push_back ((int) rint (head_positions_[i][-beam_dir])); } - } - - for (set::const_iterator it(stems.begin ()); it != stems.end (); it++) - { - Grob *s = *it; - Real x = s->extent (common[X_AXIS], X_AXIS).center(); - - Direction stem_dir = get_grob_direction (*it); - Interval y; - y.set_full (); - y[-stem_dir] = Stem::chord_start_y (*it) + (*it)->relative_coordinate (common[Y_AXIS], Y_AXIS) - - beam->relative_coordinate (common[Y_AXIS], Y_AXIS); - - Real factor = parameters.STEM_COLLISION_FACTOR; - if (!unsmob_grob (s->get_object ("beam")) - && !Stem::flag (s).is_empty ()) - factor = 1.0; - add_collision (x, y, factor); - } -} - -void Beam_scoring_problem::init_stems () -{ - extract_grob_set (beam, "covered-grobs", collisions); - extract_grob_set (beam, "stems", stems); - for (int a = 2; a--;) - { - common[a] = common_refpoint_of_array (stems, beam, Axis (a)); - common[a] = common_refpoint_of_array (collisions, common[a], Axis (a)); - } - - Drul_array edge_stems(Beam::first_normal_stem (beam), - Beam::last_normal_stem (beam)); - Direction d = LEFT; - do - x_span[d] = edge_stems[d] ? edge_stems[d]->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0; - while (flip (&d) != LEFT); - - Drul_array dirs_found (0, 0); - for (vsize i = 0; i < stems.size (); i++) - { - Grob *s = stems[i]; - if (!Stem::is_normal_stem (s)) - continue; - - Stem_info si (Stem::get_stem_info (s)); - si.scale (1 / staff_space); - stem_infos.push_back (si); - dirs_found[si.dir_] = true; - bool f = to_boolean (s->get_property ("french-beaming")) - && s != edge_stems[LEFT] && s != edge_stems[RIGHT]; + Real concaveness = 0.0; - Real y = Beam::calc_stem_y (beam, s, common, x_span[LEFT], x_span[RIGHT], CENTER, - Interval (0, 0), f); - base_lengths.push_back (y / staff_space); - stem_xpositions.push_back (s->relative_coordinate (common[X_AXIS], X_AXIS)); + if (is_concave_single_notes (beam_dir == UP ? close_positions : far_positions, beam_dir)) + { + concaveness = 10000; } - - edge_dirs = Drul_array (CENTER, CENTER); - if (stem_infos.size ()) + else { - edge_dirs = Drul_array (stem_infos[0].dir_, - stem_infos.back().dir_); + concaveness = (calc_positions_concaveness (far_positions, beam_dir) + + calc_positions_concaveness (close_positions, beam_dir)) / 2; } - is_xstaff = Align_interface::has_interface (common[Y_AXIS]); - is_knee = dirs_found[LEFT] && dirs_found[RIGHT]; - - staff_radius = Staff_symbol_referencer::staff_radius (beam); - edge_beam_counts = Drul_array - (Stem::beam_multiplicity (stems[0]).length () + 1, - Stem::beam_multiplicity (stems.back ()).length () + 1); + return concaveness; +} - // TODO - why are we dividing by staff_space? - beam_translation = Beam::get_beam_translation (beam) / staff_space; +void +Beam_scoring_problem::slope_damping () +{ + if (normal_stem_count_ <= 1) + return; - d = LEFT; - do + SCM s = beam_->get_property ("damping"); + Real damping = scm_to_double (s); + Real concaveness = calc_concaveness (); + if (concaveness >= 10000) { - quant_range[d].set_full (); - if (!edge_stems[d]) - continue; - - Real stem_offset = edge_stems[d]->relative_coordinate (common[Y_AXIS], Y_AXIS) - - beam->relative_coordinate (common[Y_AXIS], Y_AXIS); - Interval heads = Stem::head_positions(edge_stems[d]) * 0.5 * staff_space; - - Direction ed = edge_dirs[d]; - heads.widen(0.5 * staff_space - + (edge_beam_counts[d] - 1) * beam_translation + beam_thickness * .5); - quant_range[d][-ed] = heads[ed] + stem_offset; + unquanted_y_[LEFT] = unquanted_y_[RIGHT]; + musical_dy_ = 0; + damping = 0; } - while (flip (&d) != LEFT); - init_collisions (collisions); + if (damping) + { + Real dy = unquanted_y_[RIGHT] - unquanted_y_[LEFT]; + + Real slope = dy && x_span_ ? dy / x_span_ : 0; + + slope = 0.6 * tanh (slope) / (damping + concaveness); + + Real damped_dy = slope * x_span_; + + set_minimum_dy (beam_, &damped_dy); + + unquanted_y_[LEFT] += (dy - damped_dy) / 2; + unquanted_y_[RIGHT] -= (dy - damped_dy) / 2; + } } -Beam_scoring_problem::Beam_scoring_problem (Grob *me, Drul_array ys) +void +Beam_scoring_problem::shift_region_to_valid () { - beam = me; - unquanted_y = ys; - + if (!normal_stem_count_) + return; + + Real beam_dy = unquanted_y_[RIGHT] - unquanted_y_[LEFT]; + Real slope = x_span_ ? beam_dy / x_span_ : 0.0; + /* - Calculations are relative to a unit-scaled staff, i.e. the quants are - divided by the current staff_space. + Shift the positions so that we have a chance of finding good + quants (i.e. no short stem failures.) */ - staff_space = Staff_symbol_referencer::staff_space (me); - beam_thickness = Beam::get_beam_thickness (me) / staff_space; - line_thickness = Staff_symbol_referencer::line_thickness (me) / staff_space; + Interval feasible_left_point; + feasible_left_point.set_full (); - // This is the least-squares DY, corrected for concave beams. - musical_dy = robust_scm2double (me->get_property ("least-squares-dy"), 0); + for (vsize i = 0; i < stem_infos_.size (); i++) + { + // TODO - check for invisible here... + Real left_y + = stem_infos_[i].shortest_y_ + - slope * stem_xpositions_ [i]; + + /* + left_y is now relative to the stem S. We want relative to + ourselves, so translate: + */ + left_y += stem_ypositions_[i]; + Interval flp; + flp.set_full (); + flp[-stem_infos_[i].dir_] = left_y; + + feasible_left_point.intersect (flp); + } + + vector filtered; + /* + We only update these for objects that are too large for quanting + to find a workaround. Typically, these are notes with + stems, and timesig/keysig/clef, which take out the entire area + inside the staff as feasible. + + The code below disregards the thickness and multiplicity of the + beam. This should not be a problem, as the beam quanting will + take care of computing the impact those exactly. + */ + Real min_y_size = 2.0; + + // A list of intervals into which beams may not fall + vector forbidden_intervals; + + for (vsize i = 0; i < collisions_.size (); i++) + { + if (collisions_[i].x_ < 0 || collisions_[i].x_ > x_span_) + continue; + + if (collisions_[i].y_.length () < min_y_size) + continue; - parameters.fill (me); - init_stems (); + for (LEFT_and_RIGHT (d)) + { + Real dy = slope * collisions_[i].x_; + + Interval disallowed; + for (DOWN_and_UP (yd)) + { + Real left_y = collisions_[i].y_[yd] - dy; + disallowed[yd] = left_y; + } + + forbidden_intervals.push_back (disallowed); + } + } + + vector_sort (forbidden_intervals, Interval::left_less); + Real beam_left_y = unquanted_y_[LEFT]; + Interval feasible_beam_placements (beam_left_y, beam_left_y); + + Interval_minefield minefield (feasible_beam_placements, 0.0); + for (vsize i = 0; i < forbidden_intervals.size (); i++) + minefield.add_forbidden_interval (forbidden_intervals[i]); + minefield.solve (); + feasible_beam_placements = minefield.feasible_placements (); + + // if the beam placement falls out of the feasible region, we push it + // to infinity so that it can never be a feasible candidate below + for (DOWN_and_UP (d)) + { + if (!feasible_left_point.contains (feasible_beam_placements[d])) + feasible_beam_placements[d] = d * infinity_f; + } + + if ((feasible_beam_placements[UP] == infinity_f && feasible_beam_placements[DOWN] == -infinity_f) && !feasible_left_point.is_empty ()) + { + // We are somewhat screwed: we have a collision, but at least + // there is a way to satisfy stem length constraints. + beam_left_y = point_in_interval (feasible_left_point, 2.0); + } + else if (!feasible_left_point.is_empty ()) + { + // Only one of them offers is feasible solution. Pick that one. + if (abs (beam_left_y - feasible_beam_placements[DOWN]) > abs (beam_left_y - feasible_beam_placements[UP])) + beam_left_y = feasible_beam_placements[UP]; + else + beam_left_y = feasible_beam_placements[DOWN]; + } + else + { + // We are completely screwed. + beam_->warning (_ ("no viable initial configuration found: may not find good beam slope")); + } + + unquanted_y_ = Drul_array (beam_left_y, (beam_left_y + beam_dy)); } void -Beam_scoring_problem::generate_quants (vector *scores) const +Beam_scoring_problem::generate_quants (vector *scores) const { - int region_size = (int) parameters.REGION_SIZE; + int region_size = (int) parameters_.REGION_SIZE; // Knees and collisions are harder, lets try some more possibilities - if (is_knee) + if (is_knee_) region_size += 2; if (collisions_.size ()) region_size += 2; - + Real straddle = 0.0; - Real sit = (beam_thickness - line_thickness) / 2; + Real sit = (beam_thickness_ - line_thickness_) / 2; Real inter = 0.5; - Real hang = 1.0 - (beam_thickness - line_thickness) / 2; + Real hang = 1.0 - (beam_thickness_ - line_thickness_) / 2; Real base_quants [] = {straddle, sit, inter, hang}; int num_base_quants = int (sizeof (base_quants) / sizeof (Real)); @@ -362,73 +873,70 @@ Beam_scoring_problem::generate_quants (vector *scores) cons for (vsize i = 0; i < unshifted_quants.size (); i++) for (vsize j = 0; j < unshifted_quants.size (); j++) { - Beam_configuration *c = - Beam_configuration::new_config (unquanted_y, - Interval (unshifted_quants[i], - unshifted_quants[j])); - - Direction d = LEFT; - do + Beam_configuration *c + = Beam_configuration::new_config (unquanted_y_, + Interval (unshifted_quants[i], + unshifted_quants[j])); + + for (LEFT_and_RIGHT (d)) { - if (!quant_range[d].contains (c->y[d])) + if (!quant_range_[d].contains (c->y[d])) { delete c; c = NULL; break; } } - while (flip (&d) != LEFT); - if (c) + if (c) scores->push_back (c); } - -} - - -void Beam_scoring_problem::one_scorer (Beam_configuration* config) const -{ - score_count ++; - switch (config->next_scorer_todo) { - case SLOPE_IDEAL: - score_slope_ideal (config); - break; - case SLOPE_DIRECTION: - score_slope_direction (config); - break; - case SLOPE_MUSICAL: - score_slope_musical (config); - break; - case FORBIDDEN: - score_forbidden_quants (config); - break; - case STEM_LENGTHS: - score_stem_lengths (config); - break; - case COLLISIONS: - score_collisions (config); - break; - case HORIZONTAL_INTER: - score_horizontal_inter_quants (config); - break; - - case NUM_SCORERS: - case ORIGINAL_DISTANCE: - default: - assert (false); - } - config->next_scorer_todo++; -} +} + +void Beam_scoring_problem::one_scorer (Beam_configuration *config) const +{ + score_count++; + switch (config->next_scorer_todo) + { + case SLOPE_IDEAL: + score_slope_ideal (config); + break; + case SLOPE_DIRECTION: + score_slope_direction (config); + break; + case SLOPE_MUSICAL: + score_slope_musical (config); + break; + case FORBIDDEN: + score_forbidden_quants (config); + break; + case STEM_LENGTHS: + score_stem_lengths (config); + break; + case COLLISIONS: + score_collisions (config); + break; + case HORIZONTAL_INTER: + score_horizontal_inter_quants (config); + break; + + case NUM_SCORERS: + case ORIGINAL_DISTANCE: + default: + assert (false); + } + config->next_scorer_todo++; +} Beam_configuration * -Beam_scoring_problem::force_score (SCM inspect_quants, const vector &configs) const +Beam_scoring_problem::force_score (SCM inspect_quants, const vector &configs) const { Drul_array ins = ly_scm2interval (inspect_quants); Real mindist = 1e6; - Beam_configuration *best = NULL; + Beam_configuration *best = NULL; for (vsize i = 0; i < configs.size (); i++) { - Real d = fabs (configs[i]->y[LEFT]- ins[LEFT]) + fabs (configs[i]->y[RIGHT] - ins[RIGHT]); + Real d = fabs (configs[i]->y[LEFT] - ins[LEFT]) + fabs (configs[i]->y[RIGHT] - ins[RIGHT]); if (d < mindist) { best = configs[i]; @@ -440,37 +948,41 @@ Beam_scoring_problem::force_score (SCM inspect_quants, const vectordone ()) one_scorer (best); - + return best; } Drul_array -Beam_scoring_problem::solve () const { - vector configs; +Beam_scoring_problem::solve () const +{ + vector configs; generate_quants (&configs); if (configs.empty ()) { programming_error ("No viable beam quanting found. Using unquanted y value."); - return unquanted_y; + return unquanted_y_; } - Beam_configuration *best = NULL; + if (to_boolean (beam_->get_property ("skip-quanting"))) + return unquanted_y_; + + Beam_configuration *best = NULL; - bool debug = - to_boolean (beam->layout ()->lookup_variable (ly_symbol2scm ("debug-beam-scoring"))); - SCM inspect_quants = beam->get_property ("inspect-quants"); - if (scm_is_pair (inspect_quants)) + bool debug + = to_boolean (beam_->layout ()->lookup_variable (ly_symbol2scm ("debug-beam-scoring"))); + SCM inspect_quants = beam_->get_property ("inspect-quants"); + if (scm_is_pair (inspect_quants)) { debug = true; best = force_score (inspect_quants, configs); } else { - std::priority_queue, - Beam_configuration_less> queue; - for (vsize i = 0; i < configs.size(); i++) - queue.push(configs[i]); + std::priority_queue < Beam_configuration *, std::vector, + Beam_configuration_less > queue; + for (vsize i = 0; i < configs.size (); i++) + queue.push (configs[i]); /* TODO @@ -488,15 +1000,16 @@ Beam_scoring_problem::solve () const { that would allow us to do away with region_size altogether. */ - while (true) { - best = queue.top (); - if (best->done ()) - break; - - queue.pop (); - one_scorer (best); - queue.push (best); - } + while (true) + { + best = queue.top (); + if (best->done ()) + break; + + queue.pop (); + one_scorer (best); + queue.push (best); + } } Interval final_positions = best->y; @@ -512,33 +1025,45 @@ Beam_scoring_problem::solve () const { completed++; } - string card = best->score_card_ + to_string (" c%d/%d", completed, configs.size()); - beam->set_property ("annotation", ly_string2scm (card)); + string card = best->score_card_ + to_string (" c%d/%d", completed, configs.size ()); + beam_->set_property ("annotation", ly_string2scm (card)); } #endif junk_pointers (configs); + if (align_broken_intos_) + { + Interval normalized_endpoints = robust_scm2interval (beam_->get_property ("normalized-endpoints"), Interval (0, 1)); + Real y_length = final_positions[RIGHT] - final_positions[LEFT]; + + final_positions[LEFT] += normalized_endpoints[LEFT] * y_length; + final_positions[RIGHT] -= (1 - normalized_endpoints[RIGHT]) * y_length; + } + return final_positions; } void -Beam_scoring_problem::score_stem_lengths (Beam_configuration* config) const +Beam_scoring_problem::score_stem_lengths (Beam_configuration *config) const { - Real limit_penalty = parameters.STEM_LENGTH_LIMIT_PENALTY; + Real limit_penalty = parameters_.STEM_LENGTH_LIMIT_PENALTY; Drul_array score (0, 0); Drul_array count (0, 0); - for (vsize i = 0; i < stem_xpositions.size (); i++) + for (vsize i = 0; i < stem_xpositions_.size (); i++) { - Real x = stem_xpositions[i]; - Real dx = x_span.delta (); + if (!is_normal_[i]) + continue; + + Real x = stem_xpositions_[i]; + Real dx = x_span_; Real beam_y = dx - ? config->y[RIGHT] * (x - x_span[LEFT]) / dx + config->y[LEFT] * (x_span[RIGHT] - x) / dx - : (config->y[RIGHT] + config->y[LEFT]) / 2; - Real current_y = beam_y + base_lengths[i]; - Real length_pen = parameters.STEM_LENGTH_DEMERIT_FACTOR; + ? config->y[RIGHT] * x / dx + config->y[LEFT] * (x_span_ - x) / dx + : (config->y[RIGHT] + config->y[LEFT]) / 2; + Real current_y = beam_y + base_lengths_[i]; + Real length_pen = parameters_.STEM_LENGTH_DEMERIT_FACTOR; - Stem_info info = stem_infos[i]; + Stem_info info = stem_infos_[i]; Direction d = info.dir_; score[d] += limit_penalty * max (0.0, (d * (info.shortest_y_ - current_y))); @@ -549,18 +1074,26 @@ Beam_scoring_problem::score_stem_lengths (Beam_configuration* config) const /* We introduce a power, to make the scoring strictly convex. Otherwise a symmetric knee beam (up/down/up/down) does not have an optimum in the middle. */ - if (is_knee) - ideal_score = pow (ideal_score, 1.1); + if (is_knee_) + ideal_score = pow (ideal_score, 1.1); score[d] += length_pen * ideal_score; count[d]++; } /* Divide by number of stems, to make the measure scale-free. */ - Direction d = DOWN; - do + for (DOWN_and_UP (d)) score[d] /= max (count[d], 1); - while (flip (&d) != DOWN); + + /* + sometimes, two perfectly symmetric kneed beams will have the same score + and can either be quanted up or down. + + we choose the quanting in the direction of the slope so that the first stem + always seems longer, reaching to the second, rather than squashed. + */ + if (is_knee_ && count[LEFT] == count[RIGHT] && count[LEFT] == 1 && unquanted_y_.delta ()) + score[Direction (sign (unquanted_y_.delta ()))] += score[Direction (sign (unquanted_y_.delta ()))] < 1.0 ? 0.01 : 0.0; config->add (score[LEFT] + score[RIGHT], "L"); } @@ -569,7 +1102,7 @@ void Beam_scoring_problem::score_slope_direction (Beam_configuration *config) const { Real dy = config->y.delta (); - Real damped_dy = unquanted_y.delta(); + Real damped_dy = unquanted_y_.delta (); Real dem = 0.0; /* DAMPING_DIRECTION_PENALTY is a very harsh measure, while for @@ -581,26 +1114,26 @@ Beam_scoring_problem::score_slope_direction (Beam_configuration *config) const if (sign (damped_dy) != sign (dy)) { if (!dy) - { - if (fabs (damped_dy / x_span.delta ()) > parameters.ROUND_TO_ZERO_SLOPE) - dem += parameters.DAMPING_DIRECTION_PENALTY; - else - dem += parameters.HINT_DIRECTION_PENALTY; - } + { + if (fabs (damped_dy / x_span_) > parameters_.ROUND_TO_ZERO_SLOPE) + dem += parameters_.DAMPING_DIRECTION_PENALTY; + else + dem += parameters_.HINT_DIRECTION_PENALTY; + } else - dem += parameters.DAMPING_DIRECTION_PENALTY; + dem += parameters_.DAMPING_DIRECTION_PENALTY; } config->add (dem, "Sd"); } -// Score for going against the direction of the musical pattern +// Score for going against the direction of the musical pattern void Beam_scoring_problem::score_slope_musical (Beam_configuration *config) const { Real dy = config->y.delta (); - Real dem = parameters.MUSICAL_DIRECTION_FACTOR - * max (0.0, (fabs (dy) - fabs (musical_dy))); + Real dem = parameters_.MUSICAL_DIRECTION_FACTOR + * max (0.0, (fabs (dy) - fabs (musical_dy_))); config->add (dem, "Sm"); } @@ -609,19 +1142,19 @@ void Beam_scoring_problem::score_slope_ideal (Beam_configuration *config) const { Real dy = config->y.delta (); - Real damped_dy = unquanted_y.delta(); + Real damped_dy = unquanted_y_.delta (); Real dem = 0.0; - - Real slope_penalty = parameters.IDEAL_SLOPE_FACTOR; + + Real slope_penalty = parameters_.IDEAL_SLOPE_FACTOR; /* Xstaff beams tend to use extreme slopes to get short stems. We put in a penalty here. */ - if (is_xstaff) + if (is_xstaff_) slope_penalty *= 10; /* Huh, why would a too steep beam be better than a too flat one ? */ dem += shrink_extra_weight (fabs (damped_dy) - fabs (dy), 1.5) - * slope_penalty; + * slope_penalty; config->add (dem, "Si"); } @@ -639,11 +1172,11 @@ void Beam_scoring_problem::score_horizontal_inter_quants (Beam_configuration *config) const { if (config->y.delta () == 0.0 - && abs (config->y[LEFT]) < staff_radius * staff_space) + && abs (config->y[LEFT]) < staff_radius_ * staff_space_) { - Real yshift = config->y[LEFT] - 0.5 * staff_space; - if (fabs (my_round (yshift) - yshift) < 0.01 * staff_space) - config->add (parameters.HORIZONTAL_INTER_QUANT_PENALTY, "H"); + Real yshift = config->y[LEFT] - 0.5 * staff_space_; + if (fabs (my_round (yshift) - yshift) < 0.01 * staff_space_) + config->add (parameters_.HORIZONTAL_INTER_QUANT_PENALTY, "H"); } } @@ -657,88 +1190,91 @@ Beam_scoring_problem::score_forbidden_quants (Beam_configuration *config) const { Real dy = config->y.delta (); - Real extra_demerit = parameters.SECONDARY_BEAM_DEMERIT / - max (edge_beam_counts[LEFT], edge_beam_counts[RIGHT]); + Real extra_demerit = parameters_.SECONDARY_BEAM_DEMERIT + / max (edge_beam_counts_[LEFT], edge_beam_counts_[RIGHT]); - Direction d = LEFT; Real dem = 0.0; - Real eps = parameters.BEAM_EPS; - - do - { - for (int j = 1; j <= edge_beam_counts[d]; j++) - { - Direction stem_dir = edge_dirs[d]; - - /* - The 2.2 factor is to provide a little leniency for - borderline cases. If we do 2.0, then the upper outer line - will be in the gap of the (2, sit) quant, leading to a - false demerit. - */ - Real gap1 = config->y[d] - stem_dir * ((j - 1) * beam_translation + beam_thickness / 2 - line_thickness / 2.2); - Real gap2 = config->y[d] - stem_dir * (j * beam_translation - beam_thickness / 2 + line_thickness / 2.2); - - Interval gap; - gap.add_point (gap1); - gap.add_point (gap2); - - for (Real k = -staff_radius; - k <= staff_radius + eps; k += 1.0) - if (gap.contains (k)) - { - Real dist = min (fabs (gap[UP] - k), fabs (gap[DOWN] - k)); - - /* - this parameter is tuned to grace-stem-length.ly - */ - Real fixed_demerit = 0.4; - - dem += extra_demerit - * (fixed_demerit - + (1 - fixed_demerit) * (dist / gap.length ()) * 2); - } - } - } - while ((flip (&d)) != LEFT); - - if (max (edge_beam_counts[LEFT], edge_beam_counts[RIGHT]) >= 2) + Real eps = parameters_.BEAM_EPS; + + for (LEFT_and_RIGHT (d)) + { + for (int j = 1; j <= edge_beam_counts_[d]; j++) + { + Direction stem_dir = edge_dirs_[d]; + + /* + The 2.2 factor is to provide a little leniency for + borderline cases. If we do 2.0, then the upper outer line + will be in the gap of the (2, sit) quant, leading to a + false demerit. + */ + Real gap1 = config->y[d] - stem_dir * ((j - 1) * beam_translation_ + beam_thickness_ / 2 - line_thickness_ / 2.2); + Real gap2 = config->y[d] - stem_dir * (j * beam_translation_ - beam_thickness_ / 2 + line_thickness_ / 2.2); + + Interval gap; + gap.add_point (gap1); + gap.add_point (gap2); + + for (Real k = -staff_radius_; + k <= staff_radius_ + eps; k += 1.0) + if (gap.contains (k)) + { + Real dist = min (fabs (gap[UP] - k), fabs (gap[DOWN] - k)); + + /* + this parameter is tuned to grace-stem-length.ly + retuned from 0.40 to 0.39 by MS because of slight increases + in gap.length () resulting from measuring beams at real ends + instead of from the middle of stems. + + TODO: + This function needs better comments so we know what is forbidden + and why. + */ + Real fixed_demerit = 0.39; + + dem += extra_demerit + * (fixed_demerit + + (1 - fixed_demerit) * (dist / gap.length ()) * 2); + } + } + } + + if (max (edge_beam_counts_[LEFT], edge_beam_counts_[RIGHT]) >= 2) { Real straddle = 0.0; - Real sit = (beam_thickness - line_thickness) / 2; + Real sit = (beam_thickness_ - line_thickness_) / 2; Real inter = 0.5; - Real hang = 1.0 - (beam_thickness - line_thickness) / 2; - - Direction d = LEFT; - do - { - if (edge_beam_counts[d] >= 2 - && fabs (config->y[d] - edge_dirs[d] * beam_translation) < staff_radius + inter) - { + Real hang = 1.0 - (beam_thickness_ - line_thickness_) / 2; + + for (LEFT_and_RIGHT (d)) + { + if (edge_beam_counts_[d] >= 2 + && fabs (config->y[d] - edge_dirs_[d] * beam_translation_) < staff_radius_ + inter) + { // TODO up/down symmetry. - if (edge_dirs[d] == UP && dy <= eps - && fabs (my_modf (config->y[d]) - sit) < eps) - dem += extra_demerit; - - if (edge_dirs[d] == DOWN && dy >= eps - && fabs (my_modf (config->y[d]) - hang) < eps) - dem += extra_demerit; - } - - if (edge_beam_counts[d] >= 3 - && fabs (config->y[d] - 2 * edge_dirs[d] * beam_translation) < staff_radius + inter) - { + if (edge_dirs_[d] == UP && dy <= eps + && fabs (my_modf (config->y[d]) - sit) < eps) + dem += extra_demerit; + + if (edge_dirs_[d] == DOWN && dy >= eps + && fabs (my_modf (config->y[d]) - hang) < eps) + dem += extra_demerit; + } + + if (edge_beam_counts_[d] >= 3 + && fabs (config->y[d] - 2 * edge_dirs_[d] * beam_translation_) < staff_radius_ + inter) + { // TODO up/down symmetry. - if (edge_dirs[d] == UP && dy <= eps - && fabs (my_modf (config->y[d]) - straddle) < eps) - dem += extra_demerit; - - if (edge_dirs[d] == DOWN && dy >= eps - && fabs (my_modf (config->y[d]) - straddle) < eps) - dem += extra_demerit; - } - } - while (flip (&d) != LEFT); + if (edge_dirs_[d] == UP && dy <= eps + && fabs (my_modf (config->y[d]) - straddle) < eps) + dem += extra_demerit; + + if (edge_dirs_[d] == DOWN && dy >= eps + && fabs (my_modf (config->y[d]) - straddle) < eps) + dem += extra_demerit; + } + } } config->add (dem, "F"); @@ -746,7 +1282,7 @@ Beam_scoring_problem::score_forbidden_quants (Beam_configuration *config) const void Beam_scoring_problem::score_collisions (Beam_configuration *config) const -{ +{ Real demerits = 0.0; for (vsize i = 0; i < collisions_.size (); i++) { @@ -763,13 +1299,13 @@ Beam_scoring_problem::score_collisions (Beam_configuration *config) const dist = min (beam_y.distance (collision_y[DOWN]), beam_y.distance (collision_y[UP])); - Real scale_free = - max (parameters.COLLISION_PADDING - dist, 0.0)/ - parameters.COLLISION_PADDING; - demerits += - collisions_[i].base_penalty_ * - pow (scale_free, 3) * parameters.COLLISION_PENALTY; + Real scale_free + = max (parameters_.COLLISION_PADDING - dist, 0.0) + / parameters_.COLLISION_PADDING; + demerits + += collisions_[i].base_penalty_ * + pow (scale_free, 3) * parameters_.COLLISION_PENALTY; } config->add (demerits, "C"); -} +} diff --git a/lily/beam.cc b/lily/beam.cc index 66c58ef8dc..d73169a917 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -37,6 +37,7 @@ #include "beam.hh" +#include "axis-group-interface.hh" #include "align-interface.hh" #include "beam-scoring-problem.hh" #include "beaming-pattern.hh" @@ -45,7 +46,6 @@ #include "international.hh" #include "interval-set.hh" #include "item.hh" -#include "least-squares.hh" #include "lookup.hh" #include "main.hh" #include "misc.hh" @@ -54,6 +54,7 @@ #include "pointer-group-interface.hh" #include "rhythmic-head.hh" #include "spanner.hh" +#include "staff-symbol.hh" #include "staff-symbol-referencer.hh" #include "stem.hh" #include "warn.hh" @@ -65,10 +66,9 @@ #include - Beam_stem_segment::Beam_stem_segment () { - max_connect_ = 1000; // infinity + max_connect_ = 1000; // infinity stem_ = 0; width_ = 0.0; stem_x_ = 0.0; @@ -78,7 +78,7 @@ Beam_stem_segment::Beam_stem_segment () } bool -beam_segment_less (Beam_segment const& a, Beam_segment const& b) +beam_segment_less (Beam_segment const &a, Beam_segment const &b) { return a.horizontal_[LEFT] < b.horizontal_[LEFT]; } @@ -94,7 +94,7 @@ Beam::add_stem (Grob *me, Grob *s) if (Stem::get_beam (s)) { programming_error ("Stem already has beam"); - return ; + return; } Pointer_group_interface::add_grob (me, ly_symbol2scm ("stems"), s); @@ -106,7 +106,7 @@ Real Beam::get_beam_thickness (Grob *me) { return robust_scm2double (me->get_property ("beam-thickness"), 0) - * Staff_symbol_referencer::staff_space (me); + * Staff_symbol_referencer::staff_space (me); } /* Return the translation between 2 adjoining beams. */ @@ -120,8 +120,8 @@ Beam::get_beam_translation (Grob *me) Real fract = robust_scm2double (me->get_property ("length-fraction"), 1.0); Real beam_translation = beam_count < 4 - ? (2 * staff_space + line - beam_thickness) / 2.0 - : (3 * staff_space + line - beam_thickness) / 3.0; + ? (2 * staff_space + line - beam_thickness) / 2.0 + : (3 * staff_space + line - beam_thickness) / 3.0; return fract * beam_translation; } @@ -150,7 +150,7 @@ Beam::calc_normal_stems (SCM smob) extract_grob_set (me, "stems", stems); SCM val = Grob_array::make_array (); Grob_array *ga = unsmob_grob_array (val); - for (vsize i = 0; i < stems.size (); i++) + for (vsize i = 0; i < stems.size (); i++) if (Stem::is_normal_stem (stems[i])) ga->add (stems[i]); @@ -177,33 +177,33 @@ Beam::calc_direction (SCM smob) { extract_grob_set (me, "stems", stems); if (stems.size () == 0) - { - me->warning (_ ("removing beam with no stems")); - me->suicide (); + { + me->warning (_ ("removing beam with no stems")); + me->suicide (); - return SCM_UNSPECIFIED; - } + return SCM_UNSPECIFIED; + } else - { - Grob *stem = first_normal_stem (me); - - /* - This happens for chord tremolos. - */ - if (!stem) - stem = stems[0]; - - if (is_direction (stem->get_property_data ("direction"))) - dir = to_dir (stem->get_property_data ("direction")); - else - dir = to_dir (stem->get_property ("default-direction")); - } + { + Grob *stem = first_normal_stem (me); + + /* + This happens for chord tremolos. + */ + if (!stem) + stem = stems[0]; + + if (is_direction (stem->get_property_data ("direction"))) + dir = to_dir (stem->get_property_data ("direction")); + else + dir = to_dir (stem->get_property ("default-direction")); + } } if (count >= 1) { if (!dir) - dir = get_default_dir (me); + dir = get_default_dir (me); consider_auto_knees (me); } @@ -216,8 +216,6 @@ Beam::calc_direction (SCM smob) return scm_from_int (dir); } - - /* We want a maximal number of shared beams, but if there is choice, we * take the one that is closest to the end of the stem. This is for * situations like @@ -232,8 +230,8 @@ Beam::calc_direction (SCM smob) */ int position_with_maximal_common_beams (SCM left_beaming, SCM right_beaming, - Direction left_dir, - Direction right_dir) + Direction left_dir, + Direction right_dir) { Slice lslice = int_list_to_slice (scm_cdr (left_beaming)); @@ -244,17 +242,17 @@ position_with_maximal_common_beams (SCM left_beaming, SCM right_beaming, { int count = 0; for (SCM s = scm_car (right_beaming); scm_is_pair (s); s = scm_cdr (s)) - { - int k = -right_dir * scm_to_int (scm_car (s)) + i; - if (scm_c_memq (scm_from_int (k), left_beaming) != SCM_BOOL_F) - count++; - } + { + int k = -right_dir * scm_to_int (scm_car (s)) + i; + if (scm_c_memq (scm_from_int (k), left_beaming) != SCM_BOOL_F) + count++; + } if (count >= best_count) - { - best_count = count; - best_start = i; - } + { + best_count = count; + best_start = i; + } } return best_start; @@ -280,51 +278,49 @@ Beam::calc_beaming (SCM smob) Direction this_dir = get_grob_direction (this_stem); if (scm_is_pair (last_beaming) && scm_is_pair (this_beaming)) - { - int start_point = position_with_maximal_common_beams - (last_beaming, this_beaming, - last_dir ? last_dir : this_dir, - this_dir); - - Direction d = LEFT; - Slice new_slice; - do - { - new_slice.set_empty (); - SCM s = index_get_cell (this_beaming, d); - for (; scm_is_pair (s); s = scm_cdr (s)) - { - int new_beam_pos - = start_point - this_dir * scm_to_int (scm_car (s)); - - new_slice.add_point (new_beam_pos); - scm_set_car_x (s, scm_from_int (new_beam_pos)); - } - } - while (flip (&d) != LEFT); - - if (!new_slice.is_empty ()) - last_int = new_slice; - } + { + int start_point = position_with_maximal_common_beams + (last_beaming, this_beaming, + last_dir ? last_dir : this_dir, + this_dir); + + Slice new_slice; + for (LEFT_and_RIGHT (d)) + { + new_slice.set_empty (); + SCM s = index_get_cell (this_beaming, d); + for (; scm_is_pair (s); s = scm_cdr (s)) + { + int new_beam_pos + = start_point - this_dir * scm_to_int (scm_car (s)); + + new_slice.add_point (new_beam_pos); + scm_set_car_x (s, scm_from_int (new_beam_pos)); + } + } + + if (!new_slice.is_empty ()) + last_int = new_slice; + } else - { - /* - FIXME: what's this for? - */ - SCM s = scm_cdr (this_beaming); - for (; scm_is_pair (s); s = scm_cdr (s)) - { - int np = -this_dir * scm_to_int (scm_car (s)); - scm_set_car_x (s, scm_from_int (np)); - last_int.add_point (np); - } - } + { + /* + FIXME: what's this for? + */ + SCM s = scm_cdr (this_beaming); + for (; scm_is_pair (s); s = scm_cdr (s)) + { + int np = -this_dir * scm_to_int (scm_car (s)); + scm_set_car_x (s, scm_from_int (np)); + last_int.add_point (np); + } + } if (scm_ilength (scm_cdr (this_beaming)) > 0) - { - last_beaming = this_beaming; - last_dir = this_dir; - } + { + last_beaming = this_beaming; + last_dir = this_dir; + } } return SCM_EOL; @@ -332,30 +328,29 @@ Beam::calc_beaming (SCM smob) bool operator <(Beam_stem_segment const &a, - Beam_stem_segment const &b) + Beam_stem_segment const &b) { return a.rank_ < b.rank_; } -typedef map > Position_stem_segments_map; +typedef map > Position_stem_segments_map; -// TODO - should store result in a property? -vector -Beam::get_beam_segments (Grob *me_grob, Grob **common) +MAKE_SCHEME_CALLBACK (Beam, calc_beam_segments, 1); +SCM +Beam::calc_beam_segments (SCM smob) { /* ugh, this has a side-effect that we need to ensure that Stem #'beaming is correct */ + Grob *me_grob = unsmob_grob (smob); (void) me_grob->get_property ("beaming"); - Spanner *me = dynamic_cast (me_grob); + Spanner *me = dynamic_cast (me_grob); extract_grob_set (me, "stems", stems); - Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS); - commonx = me->get_bound (LEFT)->common_refpoint (commonx, X_AXIS); - commonx = me->get_bound (RIGHT)->common_refpoint (commonx, X_AXIS); - - *common = commonx; + Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS); + for (LEFT_and_RIGHT (d)) + commonx = me->get_bound (d)->common_refpoint (commonx, X_AXIS); int gap_count = robust_scm2int (me->get_property ("gap-count"), 0); Real gap_length = robust_scm2double (me->get_property ("gap"), 0.0); @@ -376,52 +371,51 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common) Real stem_width = robust_scm2double (stem->get_property ("thickness"), 1.0) * lt; Real stem_x = stem->relative_coordinate (commonx, X_AXIS); SCM beaming = stem->get_property ("beaming"); - Direction d = LEFT; - do - { - // Find the maximum and minimum beam ranks. - // Given that RANKS is never reset to empty, the interval will always be - // smallest for the left beamlet of the first stem, and then it might grow. - // Do we really want this? (It only affects the tremolo gaps) --jneem - for (SCM s = index_get_cell (beaming, d); - scm_is_pair (s); s = scm_cdr (s)) - { - if (!scm_is_integer (scm_car (s))) - continue; - - int beam_rank = scm_to_int (scm_car (s)); - ranks.add_point (beam_rank); - } - - for (SCM s = index_get_cell (beaming, d); - scm_is_pair (s); s = scm_cdr (s)) - { - if (!scm_is_integer (scm_car (s))) - continue; - - int beam_rank = scm_to_int (scm_car (s)); - Beam_stem_segment seg; - seg.stem_ = stem; - seg.stem_x_ = stem_x; - seg.rank_ = 2 * i + (d+1)/2; - seg.width_ = stem_width; - seg.stem_index_ = i; - seg.dir_ = d; - seg.max_connect_ = robust_scm2int (stem->get_property ("max-beam-connect"), 1000); - - Direction stem_dir = get_grob_direction (stem); - - seg.gapped_ - = (stem_dir * beam_rank < (stem_dir * ranks[-stem_dir] + gap_count)); - stem_segments[beam_rank].push_back (seg); - } - } - while (flip (&d) != LEFT); + + for (LEFT_and_RIGHT (d)) + { + // Find the maximum and minimum beam ranks. + // Given that RANKS is never reset to empty, the interval will always be + // smallest for the left beamlet of the first stem, and then it might grow. + // Do we really want this? (It only affects the tremolo gaps) --jneem + for (SCM s = index_get_cell (beaming, d); + scm_is_pair (s); s = scm_cdr (s)) + { + if (!scm_is_integer (scm_car (s))) + continue; + + int beam_rank = scm_to_int (scm_car (s)); + ranks.add_point (beam_rank); + } + + for (SCM s = index_get_cell (beaming, d); + scm_is_pair (s); s = scm_cdr (s)) + { + if (!scm_is_integer (scm_car (s))) + continue; + + int beam_rank = scm_to_int (scm_car (s)); + Beam_stem_segment seg; + seg.stem_ = stem; + seg.stem_x_ = stem_x; + seg.rank_ = 2 * i + (d + 1) / 2; + seg.width_ = stem_width; + seg.stem_index_ = i; + seg.dir_ = d; + seg.max_connect_ = robust_scm2int (stem->get_property ("max-beam-connect"), 1000); + + Direction stem_dir = get_grob_direction (stem); + + seg.gapped_ + = (stem_dir * beam_rank < (stem_dir * ranks[-stem_dir] + gap_count)); + stem_segments[beam_rank].push_back (seg); + } + } } Drul_array break_overshoot = robust_scm2drul (me->get_property ("break-overshoot"), - Drul_array (-0.5, 0.0)); + Drul_array (-0.5, 0.0)); vector segments; for (Position_stem_segments_map::const_iterator i (stem_segments.begin ()); @@ -435,114 +429,169 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common) // Iterate over all of the segments of the current beam rank, // merging the adjacent Beam_stem_segments into one Beam_segment // when appropriate. - int vertical_count = (*i).first; + int vertical_count = (*i).first; for (vsize j = 0; j < segs.size (); j++) - { - // Keeping track of the different directions here is a little tricky. - // segs[j].dir_ is the direction of the beam segment relative to the stem - // (ie. segs[j].dir_ == LEFT if the beam segment sticks out to the left of - // its stem) whereas event_dir refers to the edge of the beam segment that - // we are currently looking at (ie. if segs[j].dir_ == event_dir then we - // are looking at that edge of the beam segment that is furthest from its - // stem). - Direction event_dir = LEFT; - Beam_stem_segment const& seg = segs[j]; - do - { - Beam_stem_segment const& neighbor_seg = segs[j + event_dir]; - // TODO: make names clearer? --jneem - // on_line_bound: whether the current segment is on the boundary of the WHOLE beam - // on_beam_bound: whether the current segment is on the boundary of just that part - // of the beam with the current beam_rank - bool on_line_bound = (seg.dir_ == LEFT) ? seg.stem_index_ == 0 - : seg.stem_index_ == stems.size() - 1; - bool on_beam_bound = (event_dir == LEFT) ? j == 0 : - j == segs.size () - 1; - bool inside_stem = (event_dir == LEFT) - ? seg.stem_index_ > 0 - : seg.stem_index_ + 1 < stems.size () ; - - bool event = on_beam_bound - || abs (seg.rank_ - neighbor_seg.rank_) > 1 - || (abs (vertical_count) >= seg.max_connect_ - || abs (vertical_count) >= neighbor_seg.max_connect_); - - if (!event) - // Then this edge of the current segment is irrelevent because it will - // be connected with the next segment in the event_dir direction. - continue; - - current.vertical_count_ = vertical_count; - current.horizontal_[event_dir] = seg.stem_x_; - if (seg.dir_ == event_dir) - // then we are examining the edge of a beam segment that is furthest - // from its stem. - { - if (on_line_bound - && me->get_bound (event_dir)->break_status_dir ()) - { - current.horizontal_[event_dir] - = (robust_relative_extent (me->get_bound (event_dir), - commonx, X_AXIS)[RIGHT] - + event_dir * break_overshoot[event_dir]); - } - else - { - Grob *stem = stems[seg.stem_index_]; - Drul_array beamlet_length = - robust_scm2interval (stem->get_property ("beamlet-default-length"), Interval (1.1, 1.1)); - Drul_array max_proportion = - robust_scm2interval (stem->get_property ("beamlet-max-length-proportion"), Interval (0.75, 0.75)); - Real length = beamlet_length[seg.dir_]; - - if (inside_stem) - { - Grob *neighbor_stem = stems[seg.stem_index_ + event_dir]; - Real neighbor_stem_x = neighbor_stem->relative_coordinate (commonx, X_AXIS); - - length = min (length, - fabs (neighbor_stem_x - seg.stem_x_) * max_proportion[seg.dir_]); - } - current.horizontal_[event_dir] += event_dir * length; - } - } - else - // we are examining the edge of a beam segment that is closest - // (ie. touching, unless there is a gap) its stem. - { - current.horizontal_[event_dir] += event_dir * seg.width_/2; - if (seg.gapped_) - { - current.horizontal_[event_dir] -= event_dir * gap_length; - - if (Stem::is_invisible (seg.stem_)) - { - /* - Need to do this in case of whole notes. We don't want the - heads to collide with the beams. - */ - extract_grob_set (seg.stem_, "note-heads", heads); - - for (vsize k = 0; k < heads.size (); k ++) - current.horizontal_[event_dir] - = event_dir * min (event_dir * current.horizontal_[event_dir], - - gap_length/2 - + event_dir - * heads[k]->extent (commonx, - X_AXIS)[-event_dir]); - } - } - } - - if (event_dir == RIGHT) - { - segments.push_back (current); - current = Beam_segment (); - } - } - while (flip (&event_dir) != LEFT); - } + { + // Keeping track of the different directions here is a little tricky. + // segs[j].dir_ is the direction of the beam segment relative to the stem + // (ie. segs[j].dir_ == LEFT if the beam segment sticks out to the left of + // its stem) whereas event_dir refers to the edge of the beam segment that + // we are currently looking at (ie. if segs[j].dir_ == event_dir then we + // are looking at that edge of the beam segment that is furthest from its + // stem). + Beam_stem_segment const &seg = segs[j]; + for (LEFT_and_RIGHT (event_dir)) + { + Beam_stem_segment const &neighbor_seg = segs[j + event_dir]; + // TODO: make names clearer? --jneem + // on_line_bound: whether the current segment is on the boundary of the WHOLE beam + // on_beam_bound: whether the current segment is on the boundary of just that part + // of the beam with the current beam_rank + bool on_line_bound = (seg.dir_ == LEFT) ? seg.stem_index_ == 0 + : seg.stem_index_ == stems.size () - 1; + bool on_beam_bound = (event_dir == LEFT) ? j == 0 + : j == segs.size () - 1; + bool inside_stem = (event_dir == LEFT) + ? seg.stem_index_ > 0 + : seg.stem_index_ + 1 < stems.size (); + + bool event = on_beam_bound + || abs (seg.rank_ - neighbor_seg.rank_) > 1 + || (abs (vertical_count) >= seg.max_connect_ + || abs (vertical_count) >= neighbor_seg.max_connect_); + + if (!event) + // Then this edge of the current segment is irrelevant because it will + // be connected with the next segment in the event_dir direction. + // If we skip the left edge here, the right edge of + // the previous segment has already been skipped since + // the conditions are symmetric + continue; + + current.vertical_count_ = vertical_count; + current.horizontal_[event_dir] = seg.stem_x_; + if (seg.dir_ == event_dir) + // then we are examining the edge of a beam segment that is furthest + // from its stem. + { + if (on_line_bound + && me->get_bound (event_dir)->break_status_dir ()) + { + current.horizontal_[event_dir] + = (Axis_group_interface::generic_bound_extent (me->get_bound (event_dir), + commonx, X_AXIS)[RIGHT] + + event_dir * break_overshoot[event_dir]); + } + else + { + Grob *stem = stems[seg.stem_index_]; + Drul_array beamlet_length + = robust_scm2interval (stem->get_property ("beamlet-default-length"), Interval (1.1, 1.1)); + Drul_array max_proportion + = robust_scm2interval (stem->get_property ("beamlet-max-length-proportion"), Interval (0.75, 0.75)); + Real length = beamlet_length[seg.dir_]; + + if (inside_stem) + { + Grob *neighbor_stem = stems[seg.stem_index_ + event_dir]; + Real neighbor_stem_x = neighbor_stem->relative_coordinate (commonx, X_AXIS); + + length = min (length, + fabs (neighbor_stem_x - seg.stem_x_) * max_proportion[seg.dir_]); + } + current.horizontal_[event_dir] += event_dir * length; + } + } + else + // we are examining the edge of a beam segment that is closest + // (ie. touching, unless there is a gap) its stem. + { + current.horizontal_[event_dir] += event_dir * seg.width_ / 2; + if (seg.gapped_) + { + current.horizontal_[event_dir] -= event_dir * gap_length; + + if (Stem::is_invisible (seg.stem_)) + { + /* + Need to do this in case of whole notes. We don't want the + heads to collide with the beams. + */ + extract_grob_set (seg.stem_, "note-heads", heads); + + for (vsize k = 0; k < heads.size (); k++) + current.horizontal_[event_dir] + = event_dir * min (event_dir * current.horizontal_[event_dir], + - gap_length / 2 + + event_dir + * heads[k]->extent (commonx, + X_AXIS)[-event_dir]); + } + } + } + + if (event_dir == RIGHT) + { + segments.push_back (current); + current = Beam_segment (); + } + } + } + + } + + SCM segments_scm = SCM_EOL; + SCM *tail = &segments_scm; + + for (vsize i = 0; i < segments.size (); i++) + { + *tail = scm_cons (scm_list_2 (scm_cons (ly_symbol2scm ("vertical-count"), + scm_from_int (segments[i].vertical_count_)), + scm_cons (ly_symbol2scm ("horizontal"), + ly_interval2scm (segments[i].horizontal_))), + SCM_EOL); + tail = SCM_CDRLOC (*tail); + } + + return segments_scm; +} + +MAKE_SCHEME_CALLBACK (Beam, calc_x_positions, 1); +SCM +Beam::calc_x_positions (SCM smob) +{ + Spanner *me = unsmob_spanner (smob); + SCM segments = me->get_property ("beam-segments"); + Interval x_positions; + x_positions.set_empty (); + for (SCM s = segments; scm_is_pair (s); s = scm_cdr (s)) + x_positions.unite (robust_scm2interval (ly_assoc_get (ly_symbol2scm ("horizontal"), + scm_car (s), + SCM_EOL), + Interval (0.0, 0.0))); + + // Case for beams without segments (i.e. uniting two skips with a beam) + // TODO: should issue a warning? warning likely issued downstream, but couldn't hurt... + if (x_positions.is_empty ()) + { + extract_grob_set (me, "stems", stems); + Grob *common_x = common_refpoint_of_array (stems, me, X_AXIS); + for (LEFT_and_RIGHT (d)) + x_positions[d] = me->relative_coordinate (common_x, X_AXIS); + } + return ly_interval2scm (x_positions); +} +vector +Beam::get_beam_segments (Grob *me) +{ + SCM segments_scm = me->get_property ("beam-segments"); + vector segments; + for (SCM s = segments_scm; scm_is_pair (s); s = scm_cdr (s)) + { + segments.push_back (Beam_segment ()); + segments.back ().vertical_count_ = robust_scm2int (ly_assoc_get (ly_symbol2scm ("vertical-count"), scm_car (s), SCM_EOL), 0); + segments.back ().horizontal_ = robust_scm2interval (ly_assoc_get (ly_symbol2scm ("horizontal"), scm_car (s), SCM_EOL), Interval (0.0, 0.0)); } return segments; @@ -553,27 +602,28 @@ SCM Beam::print (SCM grob) { Spanner *me = unsmob_spanner (grob); - Grob *commonx = 0; - vector segments = get_beam_segments (me, &commonx); + /* + TODO - mild code dup for all the commonx calls. + Some use just common_refpoint_of_array, some (in print and + calc_beam_segments) use this plus calls to get_bound. + + Figure out if there is any particular reason for this and + consolidate in one Beam::get_common function. + */ + extract_grob_set (me, "stems", stems); + Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS); + for (LEFT_and_RIGHT (d)) + commonx = me->get_bound (d)->common_refpoint (commonx, X_AXIS); + + vector segments = get_beam_segments (me); + if (!segments.size ()) return SCM_EOL; - Interval span; - if (normal_stem_count (me)) - { - span[LEFT] = first_normal_stem (me)->relative_coordinate (commonx, X_AXIS); - span[RIGHT] = last_normal_stem (me)->relative_coordinate (commonx, X_AXIS); - } - else - { - extract_grob_set (me, "stems", stems); - span[LEFT] = stems[0]->relative_coordinate (commonx, X_AXIS); - span[RIGHT] = stems.back ()->relative_coordinate (commonx, X_AXIS); - } - Real blot = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); SCM posns = me->get_property ("quantized-positions"); + Interval span = robust_scm2interval (me->get_property ("X-positions"), Interval (0, 0)); Interval pos; if (!is_number_pair (posns)) { @@ -586,7 +636,7 @@ Beam::print (SCM grob) scale_drul (&pos, Staff_symbol_referencer::staff_space (me)); Real dy = pos[RIGHT] - pos[LEFT]; - Real slope = (dy && span.length ()) ? dy / span.length () : 0; + Real slope = (dy && span.length ()) ? dy / span.length () : 0; Real beam_thickness = get_beam_thickness (me); Real beam_dy = get_beam_translation (me); @@ -596,12 +646,11 @@ Beam::print (SCM grob) Interval placements = robust_scm2interval (me->get_property ("normalized-endpoints"), Interval (0.0, 0.0)); Stencil the_beam; - int extreme = (segments[0].vertical_count_ == 0 ? segments[0].vertical_count_ : segments.back ().vertical_count_); - for (vsize i = 0; i < segments.size (); i ++) + for (vsize i = 0; i < segments.size (); i++) { Real local_slope = slope; /* @@ -610,8 +659,8 @@ Beam::print (SCM grob) */ if (feather_dir) local_slope += (feather_dir * segments[i].vertical_count_ - * beam_dy - * placements.length () + * beam_dy + * placements.length () / span.length ()); Stencil b = Lookup::beam (local_slope, segments[i].horizontal_.length (), beam_thickness, blot); @@ -626,7 +675,7 @@ Beam::print (SCM grob) // we need two translations: the normal one and // the one of the lowest segment - int idx[] = {i, extreme}; + size_t idx[] = {i, extreme}; Real translations[2]; for (int j = 0; j < 2; j++) @@ -668,15 +717,15 @@ Beam::print (SCM grob) extract_grob_set (me, "stems", stems); /* - This code prints the demerits for each beam. Perhaps this - should be switchable for those who want to twiddle with the - parameters. + This code prints the demerits for each beam. Perhaps this + should be switchable for those who want to twiddle with the + parameters. */ string str; SCM properties = Font_interface::text_font_alist_chain (me); - properties = scm_cons(scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-5), SCM_EOL), - properties); + properties = scm_cons (scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-5), SCM_EOL), + properties); Direction stem_dir = stems.size () ? to_dir (stems[0]->get_property ("direction")) : UP; @@ -684,10 +733,10 @@ Beam::print (SCM grob) (me->layout ()->self_scm (), properties, annotation)); if (!score.is_empty ()) - { - score.translate_axis (me->relative_coordinate(commonx, X_AXIS), X_AXIS); - the_beam.add_at_edge (Y_AXIS, stem_dir, score, 1.0); - } + { + score.translate_axis (me->relative_coordinate (commonx, X_AXIS), X_AXIS); + the_beam.add_at_edge (Y_AXIS, stem_dir, score, 1.0); + } } #endif @@ -704,13 +753,11 @@ Beam::get_default_dir (Grob *me) for (iterof (s, stems); s != stems.end (); s++) { Interval positions = Stem::head_positions (*s); - Direction d = DOWN; - do - { - if (sign (positions[d]) == d) - extremes[d] = d * max (d * positions[d], d * extremes[d]); - } - while (flip (&d) != DOWN); + for (DOWN_and_UP (d)) + { + if (sign (positions[d]) == d) + extremes[d] = d * max (d * positions[d], d * extremes[d]); + } } Drul_array total (0, 0); @@ -723,30 +770,29 @@ Beam::get_default_dir (Grob *me) Direction stem_dir = CENTER; SCM stem_dir_scm = s->get_property_data ("direction"); if (is_direction (stem_dir_scm)) - { - stem_dir = to_dir (stem_dir_scm); - force_dir = true; - } + { + stem_dir = to_dir (stem_dir_scm); + force_dir = true; + } else - stem_dir = to_dir (s->get_property ("default-direction")); + stem_dir = to_dir (s->get_property ("default-direction")); if (!stem_dir) - stem_dir = to_dir (s->get_property ("neutral-direction")); + stem_dir = to_dir (s->get_property ("neutral-direction")); if (stem_dir) - { - count[stem_dir] ++; - total[stem_dir] += max (int (- stem_dir * Stem::head_positions (s) [-stem_dir]), 0); - } + { + count[stem_dir]++; + total[stem_dir] += max (int (- stem_dir * Stem::head_positions (s) [-stem_dir]), 0); + } } - if (!force_dir) { if (abs (extremes[UP]) > -extremes[DOWN]) - return DOWN; + return DOWN; else if (extremes[UP] < -extremes[DOWN]) - return UP; + return UP; } Direction dir = CENTER; @@ -754,10 +800,10 @@ Beam::get_default_dir (Grob *me) if ((d = (Direction) sign (count[UP] - count[DOWN]))) dir = d; else if (count[UP] - && count[DOWN] - && (d = (Direction) sign (total[UP] / count[UP] - total[DOWN]/count[DOWN]))) + && count[DOWN] + && (d = (Direction) sign (total[UP] / count[UP] - total[DOWN] / count[DOWN]))) dir = d; - else if ((d = (Direction) sign (total[UP] - total[DOWN]))) + else if ((d = (Direction) sign (total[UP] - total[DOWN]))) dir = d; else dir = to_dir (me->get_property ("neutral-direction")); @@ -779,7 +825,7 @@ Beam::set_stem_directions (Grob *me, Direction d) SCM forcedir = s->get_property_data ("direction"); if (!to_dir (forcedir)) - set_grob_direction (s, d); + set_grob_direction (s, d); } } @@ -818,24 +864,24 @@ Beam::consider_auto_knees (Grob *me) Interval head_extents = Stem::head_positions (stem); if (!head_extents.is_empty ()) - { - head_extents[LEFT] += -1; - head_extents[RIGHT] += 1; - head_extents *= staff_space * 0.5; - - /* - We could subtract beam Y position, but this routine only - sets stem directions, a constant shift does not have an - influence. - */ - head_extents += stem->pure_relative_y_coordinate (common, 0, INT_MAX); - - if (to_dir (stem->get_property_data ("direction"))) - { - Direction stemdir = to_dir (stem->get_property ("direction")); - head_extents[-stemdir] = -stemdir * infinity_f; - } - } + { + head_extents[LEFT] += -1; + head_extents[RIGHT] += 1; + head_extents *= staff_space * 0.5; + + /* + We could subtract beam Y position, but this routine only + sets stem directions, a constant shift does not have an + influence. + */ + head_extents += stem->pure_relative_y_coordinate (common, 0, INT_MAX); + + if (to_dir (stem->get_property_data ("direction"))) + { + Direction stemdir = to_dir (stem->get_property ("direction")); + head_extents[-stemdir] = -stemdir * infinity_f; + } + } head_extents_array.push_back (head_extents); gaps.remove_interval (head_extents); @@ -844,85 +890,49 @@ Beam::consider_auto_knees (Grob *me) Interval max_gap; Real max_gap_len = 0.0; - for (vsize i = gaps.allowed_regions_.size () -1; i != VPOS ;i--) + for (vsize i = gaps.allowed_regions_.size () - 1; i != VPOS; i--) { Interval gap = gaps.allowed_regions_[i]; /* - the outer gaps are not knees. + the outer gaps are not knees. */ if (isinf (gap[LEFT]) || isinf (gap[RIGHT])) - continue; + continue; if (gap.length () >= max_gap_len) - { - max_gap_len = gap.length (); - max_gap = gap; - } + { + max_gap_len = gap.length (); + max_gap = gap; + } } Real beam_translation = get_beam_translation (me); Real beam_thickness = Beam::get_beam_thickness (me); int beam_count = Beam::get_beam_count (me); Real height_of_beams = beam_thickness / 2 - + (beam_count - 1) * beam_translation; + + (beam_count - 1) * beam_translation; Real threshold = scm_to_double (scm) + height_of_beams; if (max_gap_len > threshold) { int j = 0; for (vsize i = 0; i < stems.size (); i++) - { - Grob *stem = stems[i]; - Interval head_extents = head_extents_array[j++]; - - Direction d = (head_extents.center () < max_gap.center ()) - ? UP : DOWN; - - stem->set_property ("direction", scm_from_int (d)); - - head_extents.intersect (max_gap); - assert (head_extents.is_empty () || head_extents.length () < 1e-6); - } - } -} - -/* Set stem's shorten property if unset. - -TODO: -take some y-position (chord/beam/nearest?) into account -scmify forced-fraction - -This is done in beam because the shorten has to be uniform over the -entire beam. -*/ - - + { + Grob *stem = stems[i]; + Interval head_extents = head_extents_array[j++]; -void -set_minimum_dy (Grob *me, Real *dy) -{ - if (*dy) - { - /* - If dy is smaller than the smallest quant, we - get absurd direction-sign penalties. - */ + Direction d = (head_extents.center () < max_gap.center ()) + ? UP : DOWN; - Real ss = Staff_symbol_referencer::staff_space (me); - Real beam_thickness = Beam::get_beam_thickness (me) / ss; - Real slt = Staff_symbol_referencer::line_thickness (me) / ss; - Real sit = (beam_thickness - slt) / 2; - Real inter = 0.5; - Real hang = 1.0 - (beam_thickness - slt) / 2; + stem->set_property ("direction", scm_from_int (d)); - *dy = sign (*dy) * max (fabs (*dy), - min (min (sit, inter), hang)); + head_extents.intersect (max_gap); + assert (head_extents.is_empty () || head_extents.length () < 1e-6); + } } } - - MAKE_SCHEME_CALLBACK (Beam, calc_stem_shorten, 1) SCM Beam::calc_stem_shorten (SCM smob) @@ -936,7 +946,7 @@ Beam::calc_stem_shorten (SCM smob) return scm_from_int (0); Real forced_fraction = 1.0 * forced_stem_count (me) - / normal_stem_count (me); + / normal_stem_count (me); int beam_count = get_beam_count (me); @@ -947,495 +957,31 @@ Beam::calc_stem_shorten (SCM smob) Real staff_space = Staff_symbol_referencer::staff_space (me); SCM shorten_elt - = robust_list_ref (beam_count -1, shorten_list); + = robust_list_ref (beam_count - 1, shorten_list); Real shorten = scm_to_double (shorten_elt) * staff_space; shorten *= forced_fraction; - if (shorten) return scm_from_double (shorten); return scm_from_double (0.0); } - -Interval -Beam::no_visible_stem_positions (Grob *me, Interval default_value) -{ - extract_grob_set (me, "stems", stems); - if (stems.empty ()) - return default_value; - - Interval head_positions; - Slice multiplicity; - for (vsize i = 0; i < stems.size(); i++) - { - head_positions.unite (Stem::head_positions (stems[i])); - multiplicity.unite (Stem::beam_multiplicity (stems[i])); - } - - Direction dir = get_grob_direction (me); - - 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); - - y /= Staff_symbol_referencer::staff_space (me); - return Interval (y,y); -} - - -/* - Compute a first approximation to the beam slope. -*/ -MAKE_SCHEME_CALLBACK (Beam, calc_least_squares_positions, 2); -SCM -Beam::calc_least_squares_positions (SCM smob, SCM /* posns */) -{ - Grob *me = unsmob_grob (smob); - - int count = normal_stem_count (me); - Interval pos (0,0); - if (count < 1) - return ly_interval2scm (no_visible_stem_positions (me, pos)); - - vector x_posns; - extract_grob_set (me, "normal-stems", stems); - Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS); - Grob *commony = common_refpoint_of_array (stems, me, Y_AXIS); - - Real my_y = me->relative_coordinate (commony, Y_AXIS); - - Grob *fvs = first_normal_stem (me); - Grob *lvs = last_normal_stem (me); - - Interval ideal (Stem::get_stem_info (fvs).ideal_y_ - + fvs->relative_coordinate (commony, Y_AXIS) - my_y, - Stem::get_stem_info (lvs).ideal_y_ - + lvs->relative_coordinate (commony, Y_AXIS) - my_y); - - Real x0 = first_normal_stem (me)->relative_coordinate (commonx, X_AXIS); - for (vsize i = 0; i < stems.size (); i++) - { - Grob *s = stems[i]; - - Real x = s->relative_coordinate (commonx, X_AXIS) - x0; - x_posns.push_back (x); - } - Real dx = last_normal_stem (me)->relative_coordinate (commonx, X_AXIS) - x0; - - Real y = 0; - Real slope = 0; - Real dy = 0; - Real ldy = 0.0; - if (!ideal.delta ()) - { - Interval chord (Stem::chord_start_y (stems[0]), - Stem::chord_start_y (stems.back ())); - - /* Simple beams (2 stems) on middle line should be allowed to be - slightly sloped. - - However, if both stems reach middle line, - ideal[LEFT] == ideal[RIGHT] and ideal.delta () == 0. - - For that case, we apply artificial slope */ - if (!ideal[LEFT] && chord.delta () && count == 2) - { - /* FIXME. -> UP */ - Direction d = (Direction) (sign (chord.delta ()) * UP); - pos[d] = get_beam_thickness (me) / 2; - pos[-d] = -pos[d]; - } - else - pos = ideal; - - /* - For broken beams this doesn't work well. In this case, the - slope esp. of the first part of a broken beam should predict - where the second part goes. - */ - ldy = pos[RIGHT] - pos[LEFT]; - } - else - { - vector ideals; - for (vsize i = 0; i < stems.size (); i++) - { - Grob *s = stems[i]; - ideals.push_back (Offset (x_posns[i], - Stem::get_stem_info (s).ideal_y_ - + s->relative_coordinate (commony, Y_AXIS) - - my_y)); - } - - minimise_least_squares (&slope, &y, ideals); - - dy = slope * dx; - - set_minimum_dy (me, &dy); - - ldy = dy; - pos = Interval (y, (y + dy)); - } - - /* - "position" is relative to the staff. - */ - scale_drul (&pos, 1 / Staff_symbol_referencer::staff_space (me)); - - me->set_property ("least-squares-dy", scm_from_double (ldy)); - return ly_interval2scm (pos); -} - - -// Assuming V is not empty, pick a 'reasonable' point inside V. -static Real -point_in_interval (Interval v, Real dist) -{ - if (isinf (v[DOWN])) - return v[UP] - dist; - else if (isinf (v[UP])) - return v[DOWN] + dist; - else - return v.center (); -} - -/* - We can't combine with previous function, since check concave and - slope damping comes first. - - TODO: we should use the concaveness to control the amount of damping - applied. -*/ -MAKE_SCHEME_CALLBACK (Beam, shift_region_to_valid, 2); -SCM -Beam::shift_region_to_valid (SCM grob, SCM posns) -{ - Grob *me = unsmob_grob (grob); - - /* - Code dup. - */ - vector x_posns; - extract_grob_set (me, "stems", stems); - extract_grob_set (me, "covered-grobs", covered); - - Grob *common[NO_AXES] = { me, me }; - for (Axis a = X_AXIS; a < NO_AXES; incr (a)) { - common[a] = common_refpoint_of_array (stems, me, a); - common[a] = common_refpoint_of_array (covered, common[a], a); - } - Grob *fvs = first_normal_stem (me); - - if (!fvs) - return posns; - Interval x_span; - x_span[LEFT] = fvs->relative_coordinate (common[X_AXIS], X_AXIS); - for (vsize i = 0; i < stems.size (); i++) - { - Grob *s = stems[i]; - - Real x = s->relative_coordinate (common[X_AXIS], X_AXIS) - x_span[LEFT]; - x_posns.push_back (x); - } - - Grob *lvs = last_normal_stem (me); - x_span[RIGHT] = lvs->relative_coordinate (common[X_AXIS], X_AXIS); - - Drul_array pos = ly_scm2interval (posns); - - scale_drul (&pos, Staff_symbol_referencer::staff_space (me)); - - Real beam_dy = pos[RIGHT] - pos[LEFT]; - Real beam_left_y = pos[LEFT]; - Real slope = x_span.delta () ? (beam_dy / x_span.delta ()) : 0.0; - - /* - Shift the positions so that we have a chance of finding good - quants (i.e. no short stem failures.) - */ - Interval feasible_left_point; - feasible_left_point.set_full (); - - for (vsize i = 0; i < stems.size (); i++) - { - Grob *s = stems[i]; - if (Stem::is_invisible (s)) - continue; - - Direction d = get_grob_direction (s); - Real left_y - = Stem::get_stem_info (s).shortest_y_ - - slope * x_posns [i]; - - /* - left_y is now relative to the stem S. We want relative to - ourselves, so translate: - */ - left_y - += + s->relative_coordinate (common[Y_AXIS], Y_AXIS) - - me->relative_coordinate (common[Y_AXIS], Y_AXIS); - - Interval flp; - flp.set_full (); - flp[-d] = left_y; - - feasible_left_point.intersect (flp); - } - - vector filtered; - /* - We only update these for objects that are too large for quanting - to find a workaround. Typically, these are notes with - stems, and timesig/keysig/clef, which take out the entire area - inside the staff as feasible. - - The code below disregards the thickness and multiplicity of the - beam. This should not be a problem, as the beam quanting will - take care of computing the impact those exactly. - */ - Real min_y_size = 2.0; - - // A list of intervals into which beams may not fall - vector forbidden_intervals; - - for (vsize i = 0; i < covered.size(); i++) - { - if (!covered[i]->is_live()) - continue; - - if (Beam::has_interface (covered[i]) && is_cross_staff (covered[i])) - continue; - - Box b; - for (Axis a = X_AXIS; a < NO_AXES; incr (a)) - b[a] = covered[i]->extent (common[a], a); - - if (b[X_AXIS].is_empty () || b[Y_AXIS].is_empty ()) - continue; - - if (intersection (b[X_AXIS], x_span).is_empty ()) - continue; - - filtered.push_back (covered[i]); - Grob *head_stem = Rhythmic_head::get_stem (covered[i]); - if (head_stem && Stem::is_normal_stem (head_stem) - && Note_head::has_interface (covered[i])) - { - if (Stem::get_beam (head_stem)) - { - /* - We must assume that stems are infinitely long in this - case, as asking for the length of the stem typically - leads to circular dependencies. - - This strategy assumes that we don't want to handle the - collision of beams in opposite non-forced directions - with this code, where shortening the stems of both - would resolve the problem, eg. - - x x - | | - ===== - - ===== - | | - x x - - Such beams would need a coordinating grob to resolve - the collision, since both will likely want to occupy - the centerline. - */ - Direction stemdir = get_grob_direction (head_stem); - b[Y_AXIS][stemdir] = stemdir * infinity_f; - } - else - { - // TODO - should we include the extent of the stem here? - } - } - - if (b[Y_AXIS].length () < min_y_size) - continue; - - Direction d = LEFT; - do - { - Real x = b[X_AXIS][d] - x_span[LEFT]; - Real dy = slope * x; - - Direction yd = DOWN; - Interval disallowed; - do - { - Real left_y = b[Y_AXIS][yd]; - - left_y -= dy; - - // Translate back to beam as ref point. - left_y -= me->relative_coordinate (common[Y_AXIS], Y_AXIS); - - disallowed[yd] = left_y; - } - while (flip (&yd) != DOWN); - - forbidden_intervals.push_back (disallowed); - } - while (flip (&d) != LEFT); - } - - Grob_array *arr = - Pointer_group_interface::get_grob_array (me, - ly_symbol2scm ("covered-grobs")); - arr->set_array (filtered); - - vector_sort (forbidden_intervals, Interval::left_less); - Real epsilon = 1.0e-10; - Interval feasible_beam_placements (beam_left_y, beam_left_y); - - /* - forbidden_intervals contains a vector of intervals in which - the beam cannot start. it iterates through these intervals, - pushing feasible_beam_placements epsilon over or epsilon under a - collision. when this type of change happens, the loop is marked - as "dirty" and re-iterated. - - TODO: figure out a faster ways that this loop can happen via - a better search algorithm and/or OOP. - */ - - bool dirty = false; - do - { - dirty = false; - for (vsize i = 0; i < forbidden_intervals.size (); i++) - { - Direction d = DOWN; - do - { - if (forbidden_intervals[i][d] == d * infinity_f) - feasible_beam_placements[d] = d * infinity_f; - else if (forbidden_intervals[i].contains (feasible_beam_placements[d])) - { - feasible_beam_placements[d] = d * epsilon + forbidden_intervals[i][d]; - dirty = true; - } - } - while (flip (&d) != DOWN); - } - } - while (dirty); - - // if the beam placement falls out of the feasible region, we push it - // to infinity so that it can never be a feasible candidate below - Direction d = DOWN; - do - { - if (!feasible_left_point.contains (feasible_beam_placements[d])) - feasible_beam_placements[d] = d*infinity_f; - } - while (flip (&d) != DOWN); - - if ((feasible_beam_placements[UP] == infinity_f && feasible_beam_placements[DOWN] == -infinity_f) && !feasible_left_point.is_empty ()) - { - // We are somewhat screwed: we have a collision, but at least - // there is a way to satisfy stem length constraints. - beam_left_y = point_in_interval (feasible_left_point, 2.0); - } - else if (!feasible_left_point.is_empty ()) - { - // Only one of them offers is feasible solution. Pick that one. - if (abs (beam_left_y - feasible_beam_placements[DOWN]) > abs (beam_left_y - feasible_beam_placements[UP])) - beam_left_y = feasible_beam_placements[UP]; - else - beam_left_y = feasible_beam_placements[DOWN]; - } - else - { - // We are completely screwed. - warning (_ ("no viable initial configuration found: may not find good beam slope")); - } - - pos = Drul_array (beam_left_y, (beam_left_y + beam_dy)); - scale_drul (&pos, 1 / Staff_symbol_referencer::staff_space (me)); - - return ly_interval2scm (pos); -} - -/* This neat trick is by Werner Lemberg, - damped = tanh (slope) - corresponds with some tables in [Wanske] CHECKME */ -MAKE_SCHEME_CALLBACK (Beam, slope_damping, 2); -SCM -Beam::slope_damping (SCM smob, SCM posns) -{ - Grob *me = unsmob_grob (smob); - Drul_array pos = ly_scm2interval (posns); - - if (normal_stem_count (me) <= 1) - return posns; - - SCM s = me->get_property ("damping"); - Real damping = scm_to_double (s); - Real concaveness = robust_scm2double (me->get_property ("concaveness"), 0.0); - if (concaveness >= 10000) - { - pos[LEFT] = pos[RIGHT]; - me->set_property ("least-squares-dy", scm_from_double (0)); - damping = 0; - } - - if (damping) - { - scale_drul (&pos, Staff_symbol_referencer::staff_space (me)); - - Real dy = pos[RIGHT] - pos[LEFT]; - - Grob *fvs = first_normal_stem (me); - Grob *lvs = last_normal_stem (me); - - Grob *commonx = fvs->common_refpoint (lvs, X_AXIS); - - Real dx = last_normal_stem (me)->relative_coordinate (commonx, X_AXIS) - - first_normal_stem (me)->relative_coordinate (commonx, X_AXIS); - - Real slope = dy && dx ? dy / dx : 0; - - slope = 0.6 * tanh (slope) / (damping + concaveness); - - Real damped_dy = slope * dx; - - set_minimum_dy (me, &damped_dy); - - pos[LEFT] += (dy - damped_dy) / 2; - pos[RIGHT] -= (dy - damped_dy) / 2; - - scale_drul (&pos, 1 / Staff_symbol_referencer::staff_space (me)); - } - - return ly_interval2scm (pos); -} - - -MAKE_SCHEME_CALLBACK (Beam, quanting, 2); +MAKE_SCHEME_CALLBACK (Beam, quanting, 3); SCM -Beam::quanting (SCM smob, SCM posns) +Beam::quanting (SCM smob, SCM ys_scm, SCM align_broken_intos) { Grob *me = unsmob_grob (smob); - Drul_array ys(0, 0); - ys = robust_scm2drul (posns, ys); - Beam_scoring_problem problem (me, ys); + Drul_array ys = robust_scm2drul (ys_scm, Drul_array (infinity_f, -infinity_f)); + bool cbs = to_boolean (align_broken_intos); + Beam_scoring_problem problem (me, ys, cbs); ys = problem.solve (); + return ly_interval2scm (ys); } - /* Report slice containing the numbers that are both in (car BEAMING) and (cdr BEAMING) @@ -1449,7 +995,7 @@ where_are_the_whole_beams (SCM beaming) { if (scm_c_memq (scm_car (s), scm_cdr (beaming)) != SCM_BOOL_F) - l.add_point (scm_to_int (scm_car (s))); + l.add_point (scm_to_int (scm_car (s))); } return l; @@ -1459,27 +1005,27 @@ where_are_the_whole_beams (SCM beaming) in POS for stem S. This Y position is relative to S. */ Real Beam::calc_stem_y (Grob *me, Grob *stem, Grob **common, - Real xl, Real xr, Direction feather_dir, - Drul_array pos, bool french) + Real xl, Real xr, Direction feather_dir, + Drul_array pos, bool french) { Real beam_translation = get_beam_translation (me); Direction stem_dir = get_grob_direction (stem); Real dx = xr - xl; - Real relx = dx ? (stem->relative_coordinate (common[X_AXIS], X_AXIS) - xl)/dx : 0; - Real xdir = 2*relx-1; + Real relx = dx ? (stem->relative_coordinate (common[X_AXIS], X_AXIS) - xl) / dx : 0; + Real xdir = 2 * relx - 1; - Real stem_y = linear_combination(pos, xdir); + Real stem_y = linear_combination (pos, xdir); SCM beaming = stem->get_property ("beaming"); Slice beam_slice (french - ? where_are_the_whole_beams (beaming) - : Stem::beam_multiplicity (stem)); + ? where_are_the_whole_beams (beaming) + : Stem::beam_multiplicity (stem)); if (beam_slice.is_empty ()) - beam_slice = Slice (0,0); - Interval beam_multiplicity(beam_slice[LEFT], - beam_slice[RIGHT]); + beam_slice = Slice (0, 0); + Interval beam_multiplicity (beam_slice[LEFT], + beam_slice[RIGHT]); /* feather dir = 1 , relx 0->1 : factor 0 -> 1 @@ -1493,9 +1039,9 @@ Beam::calc_stem_y (Grob *me, Grob *stem, Grob **common, feather_factor = 1 - relx; stem_y += feather_factor * beam_translation - * beam_multiplicity[Direction(((french) ? DOWN : UP)*stem_dir)]; + * beam_multiplicity[Direction (((french) ? DOWN : UP) * stem_dir)]; Real id = me->relative_coordinate (common[Y_AXIS], Y_AXIS) - - stem->relative_coordinate (common[Y_AXIS], Y_AXIS); + - stem->relative_coordinate (common[Y_AXIS], Y_AXIS); return stem_y + id; } @@ -1539,8 +1085,7 @@ Beam::set_stem_lengths (SCM smob) Grob *fvs = first_normal_stem (me); Grob *lvs = last_normal_stem (me); - Real xl = fvs ? fvs->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0; - Real xr = lvs ? lvs->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0; + Interval x_span = robust_scm2interval (me->get_property ("X-positions"), Interval (0, 0)); Direction feather_dir = to_dir (me->get_property ("grow-direction")); for (vsize i = 0; i < stems.size (); i++) @@ -1549,22 +1094,22 @@ Beam::set_stem_lengths (SCM smob) bool french = to_boolean (s->get_property ("french-beaming")); Real stem_y = calc_stem_y (me, s, common, - xl, xr, feather_dir, - pos, french && s != lvs && s!= fvs); + x_span[LEFT], x_span[RIGHT], feather_dir, + pos, french && s != lvs && s != fvs); /* - Make the stems go up to the end of the beam. This doesn't matter - for normal beams, but for tremolo beams it looks silly otherwise. + Make the stems go up to the end of the beam. This doesn't matter + for normal beams, but for tremolo beams it looks silly otherwise. */ if (gap - && !Stem::is_invisible (s)) - stem_y += thick * 0.5 * get_grob_direction (s); + && !Stem::is_invisible (s)) + stem_y += thick * 0.5 * get_grob_direction (s); /* - Do set_stemend for invisible stems too, so tuplet brackets - have a reference point for sloping + Do set_stem_positions for invisible stems too, so tuplet brackets + have a reference point for sloping */ - Stem::set_stemend (s, 2 * stem_y / staff_space); + Stem::set_stem_positions (s, 2 * stem_y / staff_space); } return posns; @@ -1575,35 +1120,33 @@ Beam::set_beaming (Grob *me, Beaming_pattern const *beaming) { extract_grob_set (me, "stems", stems); - Direction d = LEFT; for (vsize i = 0; i < stems.size (); i++) { /* - Don't overwrite user settings. + Don't overwrite user settings. */ - do - { - Grob *stem = stems[i]; - SCM beaming_prop = stem->get_property ("beaming"); - if (beaming_prop == SCM_EOL - || index_get_cell (beaming_prop, d) == SCM_EOL) - { - int count = beaming->beamlet_count (i, d); - if (i > 0 - && i + 1 < stems.size () - && Stem::is_invisible (stem)) - count = min (count, beaming->beamlet_count (i,-d)); - - if ( ((i == 0 && d == LEFT) - || (i == stems.size ()-1 && d == RIGHT)) - && stems.size () > 1 - && to_boolean (me->get_property ("clip-edges"))) - count = 0; - - Stem::set_beaming (stem, count, d); - } - } - while (flip (&d) != LEFT); + for (LEFT_and_RIGHT (d)) + { + Grob *stem = stems[i]; + SCM beaming_prop = stem->get_property ("beaming"); + if (beaming_prop == SCM_EOL + || index_get_cell (beaming_prop, d) == SCM_EOL) + { + int count = beaming->beamlet_count (i, d); + if (i > 0 + && i + 1 < stems.size () + && Stem::is_invisible (stem)) + count = min (count, beaming->beamlet_count (i, -d)); + + if ( ((i == 0 && d == LEFT) + || (i == stems.size () - 1 && d == RIGHT)) + && stems.size () > 1 + && to_boolean (me->get_property ("clip-edges"))) + count = 0; + + Stem::set_beaming (stem, count, d); + } + } } } @@ -1618,13 +1161,13 @@ Beam::forced_stem_count (Grob *me) Grob *s = stems[i]; /* I can imagine counting those boundaries as a half forced stem, - but let's count them full for now. */ + but let's count them full for now. */ Direction defdir = to_dir (s->get_property ("default-direction")); if (abs (Stem::chord_start_y (s)) > 0.1 - && defdir - && get_grob_direction (s) != defdir) - f++; + && defdir + && get_grob_direction (s) != defdir) + f++; } return f; } @@ -1680,8 +1223,13 @@ Beam::rest_collision_callback (SCM smob, SCM prev_offset) || !Beam::normal_stem_count (beam)) return scm_from_double (0.0); + Grob *common_y = rest->common_refpoint (beam, Y_AXIS); + Drul_array pos (robust_scm2drul (beam->get_property ("positions"), - Drul_array (0,0))); + Drul_array (0, 0))); + + for (LEFT_and_RIGHT (dir)) + pos[dir] += beam->relative_coordinate (common_y, Y_AXIS); Real staff_space = Staff_symbol_referencer::staff_space (rest); @@ -1689,19 +1237,18 @@ Beam::rest_collision_callback (SCM smob, SCM prev_offset) Real dy = pos[RIGHT] - pos[LEFT]; - Drul_array visible_stems (first_normal_stem (beam), - last_normal_stem (beam)); extract_grob_set (beam, "stems", stems); - Grob *common = common_refpoint_of_array (stems, beam, X_AXIS); - Real x0 = visible_stems[LEFT]->relative_coordinate (common, X_AXIS); - Real dx = visible_stems[RIGHT]->relative_coordinate (common, X_AXIS) - x0; + Interval x_span = robust_scm2interval (beam->get_property ("X-positions"), + Interval (0.0, 0.0)); + Real x0 = x_span[LEFT]; + Real dx = x_span.length (); Real slope = dy && dx ? dy / dx : 0; Direction d = get_grob_direction (stem); Real stem_y = pos[LEFT] - + (stem->relative_coordinate (common, X_AXIS) - x0) * slope; + + (stem->relative_coordinate (common, X_AXIS) - x0) * slope; Real beam_translation = get_beam_translation (beam); Real beam_thickness = Beam::get_beam_thickness (beam); @@ -1713,37 +1260,113 @@ Beam::rest_collision_callback (SCM smob, SCM prev_offset) = Stem::beam_multiplicity (stem).length () + 1; Real height_of_my_beams = beam_thickness / 2 - + (beam_count - 1) * beam_translation; + + (beam_count - 1) * beam_translation; Real beam_y = stem_y - d * height_of_my_beams; - Grob *common_y = rest->common_refpoint (beam, Y_AXIS); - Interval rest_extent = rest->extent (rest, Y_AXIS); rest_extent.translate (offset + rest->get_parent (Y_AXIS)->relative_coordinate (common_y, Y_AXIS)); Real rest_dim = rest_extent[d]; Real minimum_distance = staff_space * (robust_scm2double (stem->get_property ("stemlet-length"), 0.0) - + robust_scm2double (rest->get_property ("minimum-distance"), 0.0)); + + robust_scm2double (rest->get_property ("minimum-distance"), 0.0)); Real shift = d * min (d * (beam_y - d * minimum_distance - rest_dim), 0.0); shift /= staff_space; - Real rad = Staff_symbol_referencer::line_count (rest) * staff_space / 2; /* Always move discretely by half spaces */ shift = ceil (fabs (shift * 2.0)) / 2.0 * sign (shift); + Interval staff_span = Staff_symbol_referencer::staff_span (rest); + staff_span *= staff_space / 2; + /* Inside staff, move by whole spaces*/ - if ((rest_extent[d] + staff_space * shift) * d - < rad - || (rest_extent[-d] + staff_space * shift) * -d - < rad) + if (staff_span.contains (rest_extent[d] + staff_space * shift) + || staff_span.contains (rest_extent[-d] + staff_space * shift)) shift = ceil (fabs (shift)) * sign (shift); return scm_from_double (offset + staff_space * shift); } +/* + Estimate the position of a rest under a beam, + as the average position of its neighboring heads. +*/ +MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Beam, pure_rest_collision_callback, 4, 1, ""); +SCM +Beam::pure_rest_collision_callback (SCM smob, + SCM, /* start */ + SCM, /* end */ + SCM prev_offset) +{ + Real previous = robust_scm2double (prev_offset, 0.0); + + Grob *me = unsmob_grob (smob); + Grob *stem = unsmob_grob (me->get_object ("stem")); + if (!stem) + return scm_from_double (previous); + Grob *beam = unsmob_grob (stem->get_object ("beam")); + if (!beam + || !Beam::normal_stem_count (beam) + || !is_direction (beam->get_property_data ("direction"))) + return scm_from_double (previous); + + Real ss = Staff_symbol_referencer::staff_space (me); + + /* + This gives the extrema of rest positions. + Even with noteheads on ledgers, beams typically remain within the staff, + and push rests at most one staff-space (2 positions) from the staff. + */ + Grob *staff = Staff_symbol_referencer::get_staff_symbol (me); + Interval rest_max_pos = staff ? Staff_symbol::line_span (staff) : Interval (0.0, 0.0); + rest_max_pos.widen (2); + + extract_grob_set (beam, "stems", stems); + vector my_stems; + + for (vsize i = 0; i < stems.size (); i++) + if (Stem::head_count (stems[i]) || stems[i] == stem) + my_stems.push_back (stems[i]); + + vsize idx = -1; + + for (vsize i = 0; i < my_stems.size (); i++) + if (my_stems[i] == stem) + { + idx = i; + break; + } + Grob *left; + Grob *right; + + if (idx == (vsize) - 1 || my_stems.size () == 1) + return scm_from_double (previous); + else if (idx == 0) + left = right = my_stems[1]; + else if (idx == my_stems.size () - 1) + left = right = my_stems[idx - 1]; + else + { + left = my_stems[idx - 1]; + right = my_stems[idx + 1]; + } + + /* In stems with several heads, use the one closest to the beam. */ + Direction beamdir = get_grob_direction (beam); + Real shift = min (max ( (Stem::head_positions (left)[beamdir] + + Stem::head_positions (right)[beamdir]) / 2.0, + rest_max_pos[DOWN]), + rest_max_pos[UP] + ) * ss / 2.0 + - previous; + /* Always move by a whole number of staff spaces */ + shift = ceil (fabs (shift / ss)) * ss * sign (shift); + + return scm_from_double (previous + shift); +} + bool Beam::is_knee (Grob *me) { @@ -1758,10 +1381,10 @@ Beam::is_knee (Grob *me) { Direction dir = get_grob_direction (stems[i]); if (d && d != dir) - { - knee = true; - break; - } + { + knee = true; + break; + } d = dir; } @@ -1797,23 +1420,22 @@ Beam::get_direction_beam_count (Grob *me, Direction d) for (vsize i = stems.size (); i--;) { /* - Should we take invisible stems into account? + Should we take invisible stems into account? */ if (get_grob_direction (stems[i]) == d) - bc = max (bc, (Stem::beam_multiplicity (stems[i]).length () + 1)); + bc = max (bc, (Stem::beam_multiplicity (stems[i]).length () + 1)); } return bc; } ADD_INTERFACE (Beam, - "A beam.\n" - "\n" - "The @code{beam-thickness} property is the weight of beams," - " measured in staffspace. The @code{direction} property is" - " not user-serviceable. Use the @code{direction} property" - " of @code{Stem} instead.\n" + "A beam.\n" "\n" + "The @code{beam-thickness} property is the weight of beams," + " measured in staffspace. The @code{direction} property is" + " not user-serviceable. Use the @code{direction} property" + " of @code{Stem} instead.\n" "The following properties may be set in the @code{details}" " list.\n" "\n" @@ -1848,32 +1470,35 @@ ADD_INTERFACE (Beam, " calculating direction penalties.\n" "@end table\n", - /* properties */ - "annotation " - "auto-knee-gap " - "beamed-stem-shorten " - "beaming " - "beam-thickness " - "break-overshoot " - "clip-edges " - "concaveness " - "collision-interfaces " - "collision-voice-only " - "covered-grobs " - "damping " - "details " - "direction " - "gap " - "gap-count " - "grow-direction " - "inspect-quants " - "knee " - "length-fraction " - "least-squares-dy " - "neutral-direction " - "normal-stems " - "positions " - "quantized-positions " - "shorten " - "stems " - ); + /* properties */ + "annotation " + "auto-knee-gap " + "beamed-stem-shorten " + "beaming " + "beam-segments " + "beam-thickness " + "break-overshoot " + "clip-edges " + "concaveness " + "collision-interfaces " + "collision-voice-only " + "covered-grobs " + "damping " + "details " + "direction " + "gap " + "gap-count " + "grow-direction " + "inspect-quants " + "knee " + "length-fraction " + "least-squares-dy " + "neutral-direction " + "normal-stems " + "positions " + "quantized-positions " + "shorten " + "skip-quanting " + "stems " + "X-positions " + ); diff --git a/lily/beaming-pattern.cc b/lily/beaming-pattern.cc index b823d2ecda..411b5fbedb 100644 --- a/lily/beaming-pattern.cc +++ b/lily/beaming-pattern.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,16 +39,20 @@ Beam_rhythmic_element::Beam_rhythmic_element () beam_count_drul_[LEFT] = 0; beam_count_drul_[RIGHT] = 0; invisible_ = false; - + factor_ = Rational (1); + tuplet_start_ = false; } -Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv) +Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv, + Rational factor, bool tuplet_start) { start_moment_ = m; rhythmic_importance_ = 0; beam_count_drul_[LEFT] = i; beam_count_drul_[RIGHT] = i; invisible_ = inv; + factor_ = factor; + tuplet_start_ = tuplet_start; } void @@ -82,37 +86,40 @@ Beaming_pattern::flag_direction (Beaming_options const &options, vsize i) const return CENTER; int count = infos_[i].count (LEFT); // Both directions should still be the same - int left_count = infos_[i-1].count (RIGHT); - int right_count = infos_[i+1].count (LEFT); + int left_count = infos_[i - 1].count (RIGHT); + int right_count = infos_[i + 1].count (LEFT); // If we are told to subdivide beams and we are next to a beat, point the // beamlet away from the beat. if (options.subdivide_beams_) { if (infos_[i].rhythmic_importance_ < 0) - return RIGHT; - else if (infos_[i+1].rhythmic_importance_ < 0) - return LEFT; + return RIGHT; + else if (infos_[i + 1].rhythmic_importance_ < 0) + return LEFT; } if (count <= left_count && count <= right_count) return CENTER; - - // Try to avoid sticking-out flags as much as possible by pointing my flags - // at the neighbour with the most flags. - else if (right_count > left_count) - return RIGHT; - else if (left_count > right_count) - return LEFT; + else if (!options.strict_beat_beaming_) + { + // Try to avoid sticking-out flags as much as possible by pointing + // my flags at the neighbor with the most flags. + if (right_count > left_count) + return RIGHT; + else if (left_count > right_count) + return LEFT; + } // If all else fails, point the beamlet away from the important moment. - return (infos_[i].rhythmic_importance_ <= infos_[i+1].rhythmic_importance_) ? RIGHT : LEFT; + return (infos_[i].rhythmic_importance_ < infos_[i + 1].rhythmic_importance_) + ? RIGHT : LEFT; } void Beaming_pattern::de_grace () { - for (vsize i = 0; i < infos_.size (); i ++) + for (vsize i = 0; i < infos_.size (); i++) { infos_[i].de_grace (); } @@ -121,11 +128,11 @@ Beaming_pattern::de_grace () void Beaming_pattern::beamify (Beaming_options const &options) { - unbeam_invisible_stems (); - if (infos_.size () <= 1) return; + unbeam_invisible_stems (); + if (infos_[0].start_moment_.grace_part_) de_grace (); @@ -135,73 +142,164 @@ Beaming_pattern::beamify (Beaming_options const &options) find_rhythmic_importance (options); + vector flag_directions; + // Get the initial flag directions + for (vsize i = 0; i < infos_.size (); i++) + flag_directions.push_back (flag_direction (options, i)); + + // Correct flag directions for subdivision for (vsize i = 1; i < infos_.size () - 1; i++) { - Direction non_flag_dir = other_dir (flag_direction (options, i)); - if (non_flag_dir) - { - int importance = (non_flag_dir == LEFT) - ? infos_[i].rhythmic_importance_ : infos_[i+1].rhythmic_importance_; - int count = (importance < 0 && options.subdivide_beams_) - ? 1 : min (infos_[i].count (non_flag_dir), - infos_[i+non_flag_dir].count (-non_flag_dir)); - - infos_[i].beam_count_drul_[non_flag_dir] = count; - } + if ((flag_directions[i] == CENTER) && (flag_directions[i - 1] == LEFT)) + flag_directions[i] = RIGHT; + if ((flag_directions[i] == CENTER) && (flag_directions[i + 1] == RIGHT)) + flag_directions[i] = LEFT; + } + + // Set the count on each side of the stem + // We need to run this code twice to make both the + // left and the right counts work properly + for (int i = 0; i < 2; i++) + for (vsize i = 1; i < infos_.size () - 1; i++) + { + Direction non_flag_dir = other_dir (flag_directions[i]); + if (non_flag_dir) + { + int importance = infos_[i + 1].rhythmic_importance_; + int count = (importance < 0 && options.subdivide_beams_) + ? 1 : min (min (infos_[i].count (non_flag_dir), + infos_[i + non_flag_dir].count (-non_flag_dir)), + infos_[i - non_flag_dir].count (non_flag_dir)); + + infos_[i].beam_count_drul_[non_flag_dir] = count; + } + } +} + +/* + Set the tuplet start moment as necessary +*/ +void +update_tuplet (Moment start_moment, Rational factor, Moment *tuplet_start_moment) +{ + int tuplet_number = (int) factor.den (); + if ((tuplet_number > 1) && (tuplet_start_moment->num () < 0)) + *tuplet_start_moment = start_moment; + else if (tuplet_number == 1) + *tuplet_start_moment = Moment (-1, 1); +} + +/* + Get the group start position, the next group starting position, and the + next beat starting position, given start_moment, base_moment, + grouping, and factor +*/ +void +find_location (SCM grouping, Moment base_moment, Moment start_moment, + Rational factor, Moment *group_pos, Moment *next_group_pos, + Moment *next_beat_pos) +{ + *group_pos = Moment (0); + *next_group_pos = Moment (0); + *next_beat_pos = base_moment; + + while (*next_beat_pos <= start_moment) + *next_beat_pos += base_moment; + + while (*next_group_pos < *next_beat_pos) + { + int group_count = 1; //default -- 1 base moments in a beam + if (scm_is_pair (grouping)) + { + group_count = scm_to_int (scm_car (grouping)); + grouping = scm_cdr (grouping); + } + + // If we have a tuplet, the count should be determined from + // the maximum tuplet size for beamed tuplets. + int tuplet_number = factor.den (); + if (tuplet_number > 1) + { + // We use 1/8 as the base moment for the tuplet because it's + // the largest beamed value. If the tuplet is shorter, it's + // OK, the code still works + int test_count = ( Moment (Rational (1, 8) / factor) / base_moment).num (); + if (test_count > group_count) group_count = test_count; + } + *group_pos = *next_group_pos; + *next_group_pos = *group_pos + group_count * base_moment; } } void Beaming_pattern::find_rhythmic_importance (Beaming_options const &options) { - Moment measure_pos (0); + Moment group_pos (0); // 0 is the start of the first group + Moment next_group_pos (0); + Moment next_beat_pos (options.base_moment_); + Moment tuplet_start_moment (-1, 1); + int tuplet_number = 1; + SCM grouping = options.grouping_; vsize i = 0; + // Find where we are in the beat structure of the measure + if (infos_.size ()) + find_location (grouping, options.base_moment_, infos_[i].start_moment_, + infos_[i].factor_, &group_pos, &next_group_pos, &next_beat_pos); + // Mark the importance of stems that start at a beat or a beat group. while (i < infos_.size ()) { - // If a beat grouping is not specified, default to 2 beats per group. - int count = 2; - if (scm_is_pair (grouping)) - { - count = scm_to_int (scm_car (grouping)); - grouping = scm_cdr (grouping); - } - + if ((next_beat_pos > next_group_pos) + || (infos_[i].start_moment_ > next_beat_pos)) + // Find the new group ending point + find_location (grouping, options.base_moment_, infos_[i].start_moment_, + infos_[i].factor_, &group_pos, &next_group_pos, &next_beat_pos); // Mark the start of this beat group - if (infos_[i].start_moment_ == measure_pos) - infos_[i].rhythmic_importance_ = -2; - - // Mark the start of each unit up to the end of this beat group. - for (int unit = 1; unit <= count; unit++) - { - Moment next_measure_pos = measure_pos + options.base_moment_; - - while (i < infos_.size () && infos_[i].start_moment_ < next_measure_pos) - { - Moment dt = infos_[i].start_moment_ - measure_pos; - - // The rhythmic importance of a stem between beats depends on its fraction - // of a beat: those stems with a lower denominator are deemed more - // important. - // FIXME: This is not the right way to do things for tuplets. For example, - // in an 8th-note triplet with a quarter-note beat, 1/3 of a beat should be - // more important than 1/2. - if (infos_[i].rhythmic_importance_ >= 0) - infos_[i].rhythmic_importance_ = (int) (dt / options.base_moment_).den (); - - i++; - } - - measure_pos = next_measure_pos; - if (i < infos_.size () && infos_[i].start_moment_ == measure_pos) - infos_[i].rhythmic_importance_ = -1; - } + if (infos_[i].start_moment_ == group_pos) + infos_[i].rhythmic_importance_ = -2; + // Work through the end of the beat group or the end of the beam + while (i < infos_.size () && infos_[i].start_moment_ < next_group_pos) + { + // Set the tuplet start as necessary + update_tuplet (infos_[i].start_moment_, infos_[i].factor_, &tuplet_start_moment); + Moment dt = infos_[i].start_moment_ - group_pos; + Rational tuplet = infos_[i].factor_; + Moment tuplet_moment (tuplet); + Moment tuplet_dt = infos_[i].start_moment_ - tuplet_start_moment; + tuplet_number = tuplet.den (); + // set the beat end and increment the next beat + if (infos_[i].start_moment_ == next_beat_pos) + { + infos_[i].rhythmic_importance_ = -1; + next_beat_pos += options.base_moment_; + } + // The rhythmic importance of a stem between beats depends on its fraction + // of a beat: those stems with a lower denominator are deemed more + // important. For tuplets, we need to make sure that we use + // the fraction of the tuplet, instead of the fraction of + // a beat. + Moment ratio = (tuplet_number == 1) + ? dt / options.base_moment_ + : tuplet_dt / Moment (1, 8) / tuplet_moment; + if (infos_[i].rhythmic_importance_ >= 0) + infos_[i].rhythmic_importance_ = (int) ratio.den (); + + i++; + } + + if (i < infos_.size () && infos_[i].start_moment_ == next_beat_pos) + { + if (tuplet_number == 1) + infos_[i].rhythmic_importance_ = -1; + next_beat_pos += options.base_moment_; + if (infos_[i].start_moment_ == next_group_pos) + infos_[i].rhythmic_importance_ = -2; + } } } - /* Invisible stems should be treated as though they have the same number of beams as their least-beamed neighbour. Here we go through the stems and @@ -213,25 +311,25 @@ Beaming_pattern::unbeam_invisible_stems () for (vsize i = 1; i < infos_.size (); i++) if (infos_[i].invisible_) { - int b = min (infos_[i].count (LEFT), infos_[i-1].count (LEFT)); - infos_[i].beam_count_drul_[LEFT] = b; - infos_[i].beam_count_drul_[RIGHT] = b; + int b = min (infos_[i].count (LEFT), infos_[i - 1].count (LEFT)); + infos_[i].beam_count_drul_[LEFT] = b; + infos_[i].beam_count_drul_[RIGHT] = b; } - for (vsize i = infos_.size (); i--;) - if (infos_[i].invisible_) - { - int b = min (infos_[i].count (LEFT), infos_[i+1].count (LEFT)); - infos_[i].beam_count_drul_[LEFT] = b; - infos_[i].beam_count_drul_[RIGHT] = b; - } + if (infos_.size () > 1) + for (vsize i = infos_.size () - 1; i--;) + if (infos_[i].invisible_) + { + int b = min (infos_[i].count (LEFT), infos_[i + 1].count (LEFT)); + infos_[i].beam_count_drul_[LEFT] = b; + infos_[i].beam_count_drul_[RIGHT] = b; + } } - void -Beaming_pattern::add_stem (Moment m, int b, bool invisible) +Beaming_pattern::add_stem (Moment m, int b, bool invisible, Rational factor, bool tuplet_start) { - infos_.push_back (Beam_rhythmic_element (m, b, invisible)); + infos_.push_back (Beam_rhythmic_element (m, b, invisible, factor, tuplet_start)); } Beaming_pattern::Beaming_pattern () @@ -253,11 +351,12 @@ Beaming_pattern::start_moment (int i) const Moment Beaming_pattern::end_moment (int i) const { - Duration *dur = new Duration (2 + max (beamlet_count (i, LEFT), - beamlet_count (i, RIGHT)), - 0); + Duration dur (2 + max (beamlet_count (i, LEFT), + beamlet_count (i, RIGHT)), + 0); - return infos_.at (i).start_moment_ + dur->get_length(); + return infos_.at (i).start_moment_ + + infos_.at (i).factor_ * dur.get_length (); } bool @@ -266,25 +365,39 @@ Beaming_pattern::invisibility (int i) const return infos_.at (i).invisible_; } +Rational +Beaming_pattern::factor (int i) const +{ + return infos_.at (i).factor_; +} + +bool +Beaming_pattern::tuplet_start (int i) const +{ + return infos_.at (i).tuplet_start_; +} + /* - Split a beamin pattern at index i and return a new + Split a beaming pattern at index i and return a new Beaming_pattern containing the removed elements */ Beaming_pattern * Beaming_pattern::split_pattern (int i) { - Beaming_pattern* new_pattern=0; + Beaming_pattern *new_pattern = 0; int count; new_pattern = new Beaming_pattern (); - for (vsize j=i+1; jadd_stem (start_moment (j), count, - invisibility (j)); + invisibility (j), + factor (j), + tuplet_start (j)); } - for (vsize j=i+1; jget_property ("beatStructure"); subdivide_beams_ = to_boolean (context->get_property ("subdivideBeams")); + strict_beat_beaming_ = to_boolean (context->get_property ("strictBeatBeaming")); base_moment_ = robust_scm2moment (context->get_property ("baseMoment"), Moment (1, 4)); measure_length_ = robust_scm2moment (context->get_property ("measureLength"), @@ -304,4 +418,5 @@ Beaming_options::Beaming_options () { grouping_ = SCM_EOL; subdivide_beams_ = false; + strict_beat_beaming_ = false; } diff --git a/lily/bend-engraver.cc b/lily/bend-engraver.cc index cd2d47a9d7..d7ff790ae4 100644 --- a/lily/bend-engraver.cc +++ b/lily/bend-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,7 +38,7 @@ protected: void stop_translation_timestep (); void start_translation_timestep (); void stop_fall (); - + private: Moment stop_moment_; Stream_event *fall_event_; @@ -60,11 +60,10 @@ void Bend_engraver::stop_fall () { bool bar = scm_is_string (get_property ("whichBar")); - - + fall_->set_bound (RIGHT, unsmob_grob (bar - ? get_property ("currentCommandColumn") - : get_property ("currentMusicalColumn"))); + ? get_property ("currentCommandColumn") + : get_property ("currentMusicalColumn"))); last_fall_ = fall_; fall_ = 0; note_head_ = 0; @@ -74,10 +73,10 @@ Bend_engraver::stop_fall () void Bend_engraver::stop_translation_timestep () { - if (fall_ && !fall_->get_bound (LEFT)) + if (fall_ && !fall_->get_bound (LEFT)) { fall_->set_bound (LEFT, note_head_); - fall_->set_parent (note_head_, Y_AXIS); + fall_->set_parent (note_head_, Y_AXIS); } } @@ -97,7 +96,7 @@ Bend_engraver::acknowledge_note_head (Grob_info info) { if (!fall_event_) return; - + if (note_head_ && fall_) { stop_fall (); @@ -105,7 +104,7 @@ Bend_engraver::acknowledge_note_head (Grob_info info) note_head_ = info.grob (); stop_moment_ = now_mom () + get_event_length (info.event_cause (), - now_mom ()); + now_mom ()); } Bend_engraver::Bend_engraver () @@ -130,22 +129,22 @@ Bend_engraver::process_music () { fall_ = make_spanner ("BendAfter", fall_event_->self_scm ()); fall_->set_property ("delta-position", - scm_from_double (robust_scm2double (fall_event_->get_property ("delta-step"), 0))); + scm_from_double (robust_scm2double (fall_event_->get_property ("delta-step"), 0))); } } ADD_ACKNOWLEDGER (Bend_engraver, note_head); ADD_TRANSLATOR (Bend_engraver, - /* doc */ - "Create fall spanners.", + /* doc */ + "Create fall spanners.", - /* create */ - "BendAfter ", + /* create */ + "BendAfter ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/bezier-bow.cc b/lily/bezier-bow.cc index 587d3d65db..9252e288f5 100644 --- a/lily/bezier-bow.cc +++ b/lily/bezier-bow.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ static Real F0_1 (Real x) { - return 2 / M_PI *atan (M_PI *x / 2); + return 2 / M_PI * atan (M_PI * x / 2); } Real @@ -101,7 +101,7 @@ slur_height (Real width, Real h_inf, Real r_0) void get_slur_indent_height (Real *indent, Real *height, - Real width, Real h_inf, Real r_0) + Real width, Real h_inf, Real r_0) { Real max_fraction = 1.0 / 3.1; *height = slur_height (width, h_inf, r_0); @@ -117,7 +117,7 @@ slur_shape (Real width, Real h_inf, Real r_0) Real height; get_slur_indent_height (&indent, &height, - width, h_inf, r_0); + width, h_inf, r_0); Bezier curve; curve.control_[0] = Offset (0, 0); diff --git a/lily/bezier.cc b/lily/bezier.cc index e15b04827a..c4cdbb1c7b 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,9 @@ #include "warn.hh" #include "libc-extension.hh" -Real binomial_coefficient_3[] = { +Real binomial_coefficient_3[] += +{ 1, 3, 3, 1 }; @@ -62,7 +64,7 @@ translate (vector *array, Offset o) Real Bezier::get_other_coordinate (Axis a, Real x) const { - Axis other = Axis ((a +1) % NO_AXES); + Axis other = Axis ((a + 1) % NO_AXES); vector ts = solve_point (a, x); if (ts.size () == 0) @@ -80,6 +82,17 @@ Bezier::get_other_coordinate (Axis a, Real x) const return curve_coordinate (ts[0], other); } +vector +Bezier::get_other_coordinates (Axis a, Real x) const +{ + Axis other = other_axis (a); + vector ts = solve_point (a, x); + vector sols; + for (vsize i = 0; i < ts.size (); i++) + sols.push_back (curve_coordinate (ts[i], other)); + return sols; +} + Real Bezier::curve_coordinate (Real t, Axis a) const { @@ -93,7 +106,7 @@ Bezier::curve_coordinate (Real t, Axis a) const for (int j = 0; j < 4; j++) { r += control_[j][a] * binomial_coefficient_3[j] - * tj * one_min_tj[3 - j]; + * tj * one_min_tj[3 - j]; tj *= t; } @@ -114,7 +127,7 @@ Bezier::curve_point (Real t) const for (int j = 0; j < 4; j++) { o += control_[j] * binomial_coefficient_3[j] - * tj * one_min_tj[3 - j]; + * tj * one_min_tj[3 - j]; tj *= t; } @@ -130,15 +143,16 @@ Bezier::curve_point (Real t) const /* Cache binom (3, j) t^j (1-t)^{3-j} */ -struct Polynomial_cache { +struct Polynomial_cache +{ Polynomial terms_[4]; Polynomial_cache () { for (int j = 0; j <= 3; j++) terms_[j] - = binomial_coefficient_3[j] - * Polynomial::power (j, Polynomial (0, 1)) - * Polynomial::power (3 - j, Polynomial (1, -1)); + = binomial_coefficient_3[j] + * Polynomial::power (j, Polynomial (0, 1)) + * Polynomial::power (3 - j, Polynomial (1, -1)); } }; @@ -200,13 +214,60 @@ Bezier::solve_point (Axis ax, Real coordinate) const return filter_solutions (sol); } +/** + For the portion of the curve between L and R along axis AX, + return the bounding box limit in direction D along the cross axis to AX. + If there is no portion between L and R, return 0.0 and report error. +*/ +Real +Bezier::minmax (Axis ax, Real l, Real r, Direction d) const +{ + Axis bx = other_axis (ax); + + // The curve could hit its bounding box limit along BX at: + // points where the curve is parallel to AX, + Offset vec (0.0, 0.0); + vec[ax] = 1.0; + vector sols (solve_derivative (vec)); + // or endpoints of the curve, + sols.push_back (0.999); + sols.push_back (0.001); + // (using points just inside the ends, so that an endpoint is evaulated + // if it falls within rounding error of L or R and the curve lies inside) + + Interval iv; + for (vsize i = sols.size (); i--;) + { + Offset p (curve_point (sols[i])); + if (p[ax] >= l && p[ax] <= r) + iv.add_point (p[bx]); + } + + // or intersections of the curve with the bounding lines at L and R. + Interval lr (l, r); + for (LEFT_and_RIGHT (dir)) + { + vector v = get_other_coordinates (ax, lr[dir]); + for (vsize i = v.size (); i--;) + iv.add_point (v[i]); + } + + if (iv.is_empty ()) + { + programming_error ("Bezier curve does not cross region of concern"); + return 0.0; + } + + return iv.at (d); +} + /** Compute the bounding box dimensions in direction of A. */ Interval Bezier::extent (Axis a) const { - int o = (a + 1)%NO_AXES; + int o = (a + 1) % NO_AXES; Offset d; d[Axis (o)] = 1.0; Interval iv; @@ -228,10 +289,9 @@ Bezier::control_point_extent (Axis a) const for (int i = CONTROL_COUNT; i--;) ext.add_point (control_[i][a]); - return ext; + return ext; } - /** Flip around axis A */ @@ -265,7 +325,7 @@ Bezier::assert_sanity () const { for (int i = 0; i < CONTROL_COUNT; i++) assert (!isnan (control_[i].length ()) - && !isinf (control_[i].length ())); + && !isinf (control_[i].length ())); } void @@ -277,7 +337,6 @@ Bezier::reverse () *this = b2; } - /* Subdivide a bezier at T into LEFT_PART and RIGHT_PART using deCasteljau's algorithm. @@ -287,15 +346,15 @@ Bezier::subdivide (Real t, Bezier *left_part, Bezier *right_part) const { Offset p[CONTROL_COUNT][CONTROL_COUNT]; - for (int i = 0; i < CONTROL_COUNT ; i++) + for (int i = 0; i < CONTROL_COUNT; i++) p[i][CONTROL_COUNT - 1 ] = control_[i]; - for (int j = CONTROL_COUNT - 2; j >= 0 ; j--) - for (int i = 0; i < CONTROL_COUNT -1; i++) - p[i][j] = p[i][j+1] + t * (p[i+1][j+1] - p[i][j+1]); + for (int j = CONTROL_COUNT - 2; j >= 0; j--) + for (int i = 0; i < CONTROL_COUNT - 1; i++) + p[i][j] = p[i][j + 1] + t * (p[i + 1][j + 1] - p[i][j + 1]); for (int i = 0; i < CONTROL_COUNT; i++) { - left_part->control_[i]=p[0][CONTROL_COUNT - 1 - i]; - right_part->control_[i]=p[i][i]; + left_part->control_[i] = p[0][CONTROL_COUNT - 1 - i]; + right_part->control_[i] = p[i][i]; } } @@ -308,20 +367,20 @@ Bezier::extract (Real t_min, Real t_max) const { if ((t_min < 0) || (t_max) > 1) programming_error - ("bezier extract arguments outside of limits: curve may have bad shape"); + ("bezier extract arguments outside of limits: curve may have bad shape"); if (t_min >= t_max) - programming_error - ("lower bezier extract value not less than upper value: curve may have bad shape"); + programming_error + ("lower bezier extract value not less than upper value: curve may have bad shape"); Bezier bez1, bez2, bez3, bez4; if (t_min == 0.0) bez2 = *this; else - subdivide (t_min, &bez1, &bez2); + subdivide (t_min, &bez1, &bez2); if (t_max == 1.0) - return bez2; + return bez2; else - { - bez2.subdivide ((t_max-t_min)/(1-t_min), &bez3, &bez4); - return bez3; - } + { + bez2.subdivide ((t_max - t_min) / (1 - t_min), &bez3, &bez4); + return bez3; + } } diff --git a/lily/book-scheme.cc b/lily/book-scheme.cc index 339e2c2829..ae505af318 100644 --- a/lily/book-scheme.cc +++ b/lily/book-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,9 +25,9 @@ #include "ly-module.hh" LY_DEFINE (ly_make_book, "ly:make-book", - 2, 0, 1, (SCM paper, SCM header, SCM scores), - "Make a @code{\\book} of @var{paper} and @var{header}" - " (which may be @code{#f} as well) containing @code{\\scores}.") + 2, 0, 1, (SCM paper, SCM header, SCM scores), + "Make a @code{\\book} of @var{paper} and @var{header}" + " (which may be @code{#f} as well) containing @code{\\scores}.") { Output_def *odef = unsmob_output_def (paper); LY_ASSERT_SMOB (Output_def, paper, 1); @@ -46,8 +46,8 @@ LY_DEFINE (ly_make_book, "ly:make-book", } LY_DEFINE (ly_make_book_part, "ly:make-book-part", - 1, 0, 0, (SCM scores), - "Make a @code{\\bookpart} containing @code{\\scores}.") + 1, 0, 0, (SCM scores), + "Make a @code{\\bookpart} containing @code{\\scores}.") { Book *book = new Book; book->scores_ = scm_append (scm_list_2 (scores, book->scores_)); @@ -58,13 +58,13 @@ LY_DEFINE (ly_make_book_part, "ly:make-book-part", } LY_DEFINE (ly_book_process, "ly:book-process", - 4, 0, 0, (SCM book_smob, - SCM default_paper, - SCM default_layout, - SCM output), - "Print book. @var{output} is passed to the backend unchanged." - " For example, it may be a string (for file based outputs)" - " or a socket (for network based output).") + 4, 0, 0, (SCM book_smob, + SCM default_paper, + SCM default_layout, + SCM output), + "Print book. @var{output} is passed to the backend unchanged." + " For example, it may be a string (for file based outputs)" + " or a socket (for network based output).") { Book *book = unsmob_book (book_smob); @@ -73,7 +73,7 @@ LY_DEFINE (ly_book_process, "ly:book-process", LY_ASSERT_SMOB (Output_def, default_layout, 3); Paper_book *pb = book->process (unsmob_output_def (default_paper), - unsmob_output_def (default_layout)); + unsmob_output_def (default_layout)); if (pb) { pb->output (output); @@ -83,24 +83,23 @@ LY_DEFINE (ly_book_process, "ly:book-process", return SCM_UNSPECIFIED; } - LY_DEFINE (ly_book_process_to_systems, "ly:book-process-to-systems", - 4, 0, 0, (SCM book_smob, - SCM default_paper, - SCM default_layout, - SCM output), - "Print book. @var{output} is passed to the backend unchanged." - " For example, it may be a string (for file based outputs)" - " or a socket (for network based output).") + 4, 0, 0, (SCM book_smob, + SCM default_paper, + SCM default_layout, + SCM output), + "Print book. @var{output} is passed to the backend unchanged." + " For example, it may be a string (for file based outputs)" + " or a socket (for network based output).") { LY_ASSERT_SMOB (Book, book_smob, 1); LY_ASSERT_SMOB (Output_def, default_paper, 2); LY_ASSERT_SMOB (Output_def, default_layout, 3); - Book *book = unsmob_book (book_smob); + Book *book = unsmob_book (book_smob); Paper_book *pb = book->process (unsmob_output_def (default_paper), - unsmob_output_def (default_layout)); + unsmob_output_def (default_layout)); if (pb) { pb->classic_output (output); @@ -111,28 +110,28 @@ LY_DEFINE (ly_book_process_to_systems, "ly:book-process-to-systems", } LY_DEFINE (ly_book_add_score_x, "ly:book-add-score!", - 2, 0, 0, (SCM book_smob, SCM score), - "Add @var{score} to @var{book-smob} score list.") + 2, 0, 0, (SCM book_smob, SCM score), + "Add @var{score} to @var{book-smob} score list.") { LY_ASSERT_SMOB (Book, book_smob, 1); - Book *book = unsmob_book (book_smob); + Book *book = unsmob_book (book_smob); book->add_score (score); return SCM_UNSPECIFIED; } LY_DEFINE (ly_book_add_bookpart_x, "ly:book-add-bookpart!", - 2, 0, 0, (SCM book_smob, SCM book_part), - "Add @var{book-part} to @var{book-smob} book part list.") + 2, 0, 0, (SCM book_smob, SCM book_part), + "Add @var{book-part} to @var{book-smob} book part list.") { LY_ASSERT_SMOB (Book, book_smob, 1); - Book *book = unsmob_book (book_smob); + Book *book = unsmob_book (book_smob); book->add_bookpart (book_part); return SCM_UNSPECIFIED; } LY_DEFINE (ly_book_book_parts, "ly:book-book-parts", - 1, 0, 0, (SCM book), - "Return book parts in @var{book}.") + 1, 0, 0, (SCM book), + "Return book parts in @var{book}.") { LY_ASSERT_SMOB (Book, book, 1); Book *b = unsmob_book (book); @@ -140,8 +139,8 @@ LY_DEFINE (ly_book_book_parts, "ly:book-book-parts", } LY_DEFINE (ly_book_paper, "ly:book-paper", - 1, 0, 0, (SCM book), - "Return paper in @var{book}.") + 1, 0, 0, (SCM book), + "Return paper in @var{book}.") { LY_ASSERT_SMOB (Book, book, 1); Book *b = unsmob_book (book); @@ -149,19 +148,36 @@ LY_DEFINE (ly_book_paper, "ly:book-paper", } LY_DEFINE (ly_book_header, "ly:book-header", - 1, 0, 0, (SCM book), - "Return header in @var{book}.") + 1, 0, 0, (SCM book), + "Return header in @var{book}.") { LY_ASSERT_SMOB (Book, book, 1); Book *b = unsmob_book (book); return b->header_ ? b->header_ : SCM_BOOL_F; } +LY_DEFINE (ly_book_set_header_x, "ly:book-set-header!", + 2, 0, 0, (SCM book, SCM module), + "Set the book header.") +{ + LY_ASSERT_SMOB (Book, book, 1); + SCM_ASSERT_TYPE (ly_is_module (module), module, SCM_ARG2, __FUNCTION__, + "module"); + + Book *b = unsmob_book (book); + b->header_ = (module); + return SCM_UNSPECIFIED; +} + LY_DEFINE (ly_book_scores, "ly:book-scores", - 1, 0, 0, (SCM book), - "Return scores in @var{book}.") + 1, 0, 0, (SCM book), + "Return scores in @var{book}.") { LY_ASSERT_SMOB (Book, book, 1); Book *b = unsmob_book (book); return b->scores_; } + +#include "ly-smobs.icc" + +IMPLEMENT_TYPE_P (Book, "ly:book?"); diff --git a/lily/book.cc b/lily/book.cc index e1fdef644d..8e19823699 100644 --- a/lily/book.cc +++ b/lily/book.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -73,14 +73,14 @@ Book::Book (Book const &s) SCM entry = scm_car (p); if (Score *newscore = unsmob_score (entry)) - *t = scm_cons (newscore->clone ()->unprotect (), SCM_EOL); + * t = scm_cons (newscore->clone ()->unprotect (), SCM_EOL); else if (Page_marker *marker = unsmob_page_marker (entry)) - *t = scm_cons (marker->clone ()->unprotect (), SCM_EOL); + * t = scm_cons (marker->clone ()->unprotect (), SCM_EOL); else - { - /* This entry is a markup list */ - *t = scm_cons (entry, SCM_EOL); - } + { + /* This entry is a markup list */ + *t = scm_cons (entry, SCM_EOL); + } t = SCM_CDRLOC (*t); } @@ -123,7 +123,7 @@ Book::mark_smob (SCM s) } int -Book::print_smob (SCM, SCM p, scm_print_state*) +Book::print_smob (SCM, SCM p, scm_print_state *) { scm_puts ("#", p); return 1; @@ -190,19 +190,19 @@ Book::error_found () for (SCM s = scores_; scm_is_pair (s); s = scm_cdr (s)) if (Score *score = unsmob_score (scm_car (s))) if (score->error_found_) - return true; + return true; for (SCM part = bookparts_; scm_is_pair (part); part = scm_cdr (part)) if (Book *bookpart = unsmob_book (scm_car (part))) if (bookpart->error_found ()) - return true; + return true; return false; } Paper_book * Book::process (Output_def *default_paper, - Output_def *default_layout) + Output_def *default_layout) { return process (default_paper, default_layout, 0); } @@ -217,10 +217,10 @@ Book::process_bookparts (Paper_book *output_paper_book, Output_def *paper, Outpu { Paper_book *paper_book_part = book->process (paper, layout, output_paper_book); if (paper_book_part) - { - output_paper_book->add_bookpart (paper_book_part->self_scm ()); - paper_book_part->unprotect (); - } + { + output_paper_book->add_bookpart (paper_book_part->self_scm ()); + paper_book_part->unprotect (); + } } } /* In a Paper_book, bookparts are stored in straight order */ @@ -233,26 +233,26 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout) if (Score *score = unsmob_score (scm_car (s))) { SCM outputs = score - ->book_rendering (output_paper_book->paper_, layout); + ->book_rendering (output_paper_book->paper_, layout); while (scm_is_pair (outputs)) - { - Music_output *output = unsmob_music_output (scm_car (outputs)); - - if (Performance *perf = dynamic_cast (output)) - output_paper_book->add_performance (perf->self_scm ()); - else if (Paper_score *pscore = dynamic_cast (output)) - { - if (ly_is_module (score->get_header ())) - output_paper_book->add_score (score->get_header ()); - output_paper_book->add_score (pscore->self_scm ()); - } - - outputs = scm_cdr (outputs); - } + { + Music_output *output = unsmob_music_output (scm_car (outputs)); + + if (Performance *perf = dynamic_cast (output)) + output_paper_book->add_performance (perf->self_scm ()); + else if (Paper_score *pscore = dynamic_cast (output)) + { + if (ly_is_module (score->get_header ())) + output_paper_book->add_score (score->get_header ()); + output_paper_book->add_score (pscore->self_scm ()); + } + + outputs = scm_cdr (outputs); + } } else if (Text_interface::is_markup_list (scm_car (s)) - || unsmob_page_marker (scm_car (s))) + || unsmob_page_marker (scm_car (s))) output_paper_book->add_score (scm_car (s)); else assert (0); @@ -263,8 +263,8 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout) */ Paper_book * Book::process (Output_def *default_paper, - Output_def *default_layout, - Paper_book *parent_part) + Output_def *default_layout, + Paper_book *parent_part) { Output_def *paper = paper_ ? paper_ : default_paper; diff --git a/lily/box.cc b/lily/box.cc index 6b6088bf19..df4770ff78 100644 --- a/lily/box.cc +++ b/lily/box.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -80,7 +80,7 @@ Offset Box::center () const { return Offset (interval_a_[X_AXIS].center (), - interval_a_[Y_AXIS].center ()); + interval_a_[Y_AXIS].center ()); } void @@ -90,6 +90,16 @@ Box::widen (Real x, Real y) interval_a_[Y_AXIS].widen (y); } +// for debugging + +void +Box::print () +{ + printf ("X left %4.4f right %4.4f Y down %4.4f up %4.4f\n", + interval_a_[X_AXIS][LEFT], interval_a_[X_AXIS][RIGHT], + interval_a_[Y_AXIS][DOWN], interval_a_[Y_AXIS][UP]); +} + /****************************************************************/ #include "ly-smobs.icc" @@ -105,7 +115,7 @@ Box::mark_smob (SCM /* x */) } int -Box::print_smob (SCM /* x */, SCM p, scm_print_state*) +Box::print_smob (SCM /* x */, SCM p, scm_print_state *) { scm_puts ("#", p); return 1; diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc index 76d6e891f6..167f59de84 100644 --- a/lily/break-align-engraver.cc +++ b/lily/break-align-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -91,20 +91,20 @@ Break_align_engraver::acknowledge_break_aligned (Grob_info inf) if (Item *item = dynamic_cast (inf.grob ())) { /* - Removed check for item->empty (X_AXIS). --hwn 20/1/04 + Removed check for item->empty (X_AXIS). --hwn 20/1/04 */ if (item->get_parent (X_AXIS)) - return; + return; if (!Item::is_non_musical (item)) - return; + return; SCM align_name = item->get_property ("break-align-symbol"); if (!scm_is_symbol (align_name)) - return; + return; if (!align_) - create_alignment (inf); + create_alignment (inf); add_to_group (align_name, item); } @@ -127,7 +127,7 @@ Break_align_engraver::create_alignment (Grob_info inf) */ left_edge_ = random_source->make_item ("LeftEdge", SCM_EOL); add_to_group (left_edge_->get_property ("break-align-symbol"), - left_edge_); + left_edge_); } void @@ -158,20 +158,20 @@ Break_align_engraver::add_to_group (SCM align_name, Item *item) ADD_ACKNOWLEDGER (Break_align_engraver, break_aligned); ADD_ACKNOWLEDGER (Break_align_engraver, break_alignable); ADD_TRANSLATOR (Break_align_engraver, - /* doc */ - "Align grobs with corresponding @code{break-align-symbols}" - " into groups, and order the groups according to" - " @code{breakAlignOrder}. The left edge of the alignment gets" - " a separate group, with a symbol @code{left-edge}.", - - /* create */ - "BreakAlignment " - "BreakAlignGroup " - "LeftEdge ", - - /* read */ - "", - - /* write */ - "" - ); + /* doc */ + "Align grobs with corresponding @code{break-align-symbols}" + " into groups, and order the groups according to" + " @code{breakAlignOrder}. The left edge of the alignment gets" + " a separate group, with a symbol @code{left-edge}.", + + /* create */ + "BreakAlignment " + "BreakAlignGroup " + "LeftEdge ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/break-alignment-interface.cc b/lily/break-alignment-interface.cc index 18f0ae8404..242e39eacc 100644 --- a/lily/break-alignment-interface.cc +++ b/lily/break-alignment-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include "break-align-interface.hh" #include "align-interface.hh" @@ -31,8 +30,6 @@ #include "side-position-interface.hh" #include "warn.hh" - - /* This is tricky: we cannot modify 'elements, since callers are iterating the same list. Reordering the list in-place, or resetting @@ -49,43 +46,40 @@ Break_alignment_interface::break_align_order (Item *me) return SCM_BOOL_F; SCM order = scm_vector_ref (order_vec, - scm_from_int (me->break_status_dir () + 1)); - + scm_from_int (me->break_status_dir () + 1)); return order; } - -vector +vector Break_alignment_interface::ordered_elements (Grob *grob) { Item *me = dynamic_cast (grob); extract_grob_set (me, "elements", elts); - SCM order = break_align_order (me); if (order == SCM_BOOL_F) return elts; - - vector writable_elts (elts); - /* - Copy in order specified in BREAK-ALIGN-ORDER. + + vector writable_elts (elts); + /* + Copy in order specified in BREAK-ALIGN-ORDER. */ - vector new_elts; + vector new_elts; for (; scm_is_pair (order); order = scm_cdr (order)) { SCM sym = scm_car (order); for (vsize i = writable_elts.size (); i--;) - { - Grob *g = writable_elts[i]; - if (g && sym == g->get_property ("break-align-symbol")) - { - new_elts.push_back (g); - writable_elts.erase (writable_elts.begin () + i); - } - } + { + Grob *g = writable_elts[i]; + if (g && sym == g->get_property ("break-align-symbol")) + { + new_elts.push_back (g); + writable_elts.erase (writable_elts.begin () + i); + } + } } return new_elts; @@ -101,22 +95,18 @@ MAKE_SCHEME_CALLBACK (Break_alignment_interface, calc_positioning_done, 1) SCM Break_alignment_interface::calc_positioning_done (SCM smob) { - Grob *grob = unsmob_grob (smob); + Grob *grob = unsmob_grob (smob); Item *me = dynamic_cast (grob); - me->set_property ("positioning-done", SCM_BOOL_T); - vector elems = ordered_elements (me); + vector elems = ordered_elements (me); vector extents; - int last_nonempty = -1; for (vsize i = 0; i < elems.size (); i++) { Interval y = elems[i]->extent (elems[i], X_AXIS); extents.push_back (y); - if (!y.is_empty ()) - last_nonempty = i; } vsize idx = 0; @@ -125,7 +115,7 @@ Break_alignment_interface::calc_positioning_done (SCM smob) vector offsets; offsets.resize (elems.size ()); - for (vsize i = 0; i < offsets.size ();i++) + for (vsize i = 0; i < offsets.size (); i++) offsets[i] = 0.0; Real extra_right_space = 0.0; @@ -134,106 +124,106 @@ Break_alignment_interface::calc_positioning_done (SCM smob) { vsize next_idx = idx + 1; while (next_idx < elems.size () - && extents[next_idx].is_empty ()) - next_idx++; + && extents[next_idx].is_empty ()) + next_idx++; Grob *l = elems[idx]; Grob *r = 0; if (next_idx < elems.size ()) - r = elems[next_idx]; + r = elems[next_idx]; SCM alist = SCM_EOL; /* - Find the first grob with a space-alist entry. + Find the first grob with a space-alist entry. */ extract_grob_set (l, "elements", elts); for (vsize i = elts.size (); i--;) - { - Grob *elt = elts[i]; - - if (edge_idx == VPOS - && (elt->get_property ("break-align-symbol") - == ly_symbol2scm ("left-edge"))) - edge_idx = idx; - - SCM l = elt->get_property ("space-alist"); - if (scm_is_pair (l)) - { - alist = l; - break; - } - } + { + Grob *elt = elts[i]; + + if (edge_idx == VPOS + && (elt->get_property ("break-align-symbol") + == ly_symbol2scm ("left-edge"))) + edge_idx = idx; + + SCM l = elt->get_property ("space-alist"); + if (scm_is_pair (l)) + { + alist = l; + break; + } + } SCM rsym = r ? SCM_EOL : ly_symbol2scm ("right-edge"); /* - We used to use #'cause to find out the symbol and the spacing - table, but that gets icky when that grob is suicided for some - reason. + We used to use #'cause to find out the symbol and the spacing + table, but that gets icky when that grob is suicided for some + reason. */ if (r) - { - extract_grob_set (r, "elements", elts); - for (vsize i = elts.size (); - !scm_is_symbol (rsym) && i--;) - { - Grob *elt = elts[i]; - rsym = elt->get_property ("break-align-symbol"); - } - } + { + extract_grob_set (r, "elements", elts); + for (vsize i = elts.size (); + !scm_is_symbol (rsym) && i--;) + { + Grob *elt = elts[i]; + rsym = elt->get_property ("break-align-symbol"); + } + } if (rsym == ly_symbol2scm ("left-edge")) - edge_idx = next_idx; + edge_idx = next_idx; SCM entry = SCM_EOL; if (scm_is_symbol (rsym)) - entry = scm_assq (rsym, alist); + entry = scm_assq (rsym, alist); bool entry_found = scm_is_pair (entry); if (!entry_found) - { - string sym_string; - if (scm_is_symbol (rsym)) - sym_string = ly_symbol2string (rsym); + { + string sym_string; + if (scm_is_symbol (rsym)) + sym_string = ly_symbol2string (rsym); - string orig_string; - if (unsmob_grob (l->get_property ("cause"))) - orig_string = unsmob_grob (l->get_property ("cause"))->name (); + string orig_string; + if (unsmob_grob (l->get_property ("cause"))) + orig_string = unsmob_grob (l->get_property ("cause"))->name (); - programming_error (_f ("No spacing entry from %s to `%s'", - orig_string.c_str (), - sym_string.c_str ())); - } + programming_error (to_string ("No spacing entry from %s to `%s'", + orig_string.c_str (), + sym_string.c_str ())); + } Real distance = 1.0; SCM type = ly_symbol2scm ("extra-space"); if (entry_found) - { - entry = scm_cdr (entry); + { + entry = scm_cdr (entry); - distance = scm_to_double (scm_cdr (entry)); - type = scm_car (entry); - } + distance = scm_to_double (scm_cdr (entry)); + type = scm_car (entry); + } if (r) - { - if (type == ly_symbol2scm ("extra-space")) - offsets[next_idx] = extents[idx][RIGHT] + distance - - extents[next_idx][LEFT]; - /* should probably junk minimum-space */ - else if (type == ly_symbol2scm ("minimum-space")) - offsets[next_idx] = max (extents[idx][RIGHT], distance); - } + { + if (type == ly_symbol2scm ("extra-space")) + offsets[next_idx] = extents[idx][RIGHT] + distance + - extents[next_idx][LEFT]; + /* should probably junk minimum-space */ + else if (type == ly_symbol2scm ("minimum-space")) + offsets[next_idx] = max (extents[idx][RIGHT], distance); + } else - { - extra_right_space = distance; - if (idx + 1 < offsets.size ()) - offsets[idx+1] = extents[idx][RIGHT] + distance; - } + { + extra_right_space = distance; + if (idx + 1 < offsets.size ()) + offsets[idx + 1] = extents[idx][RIGHT] + distance; + } idx = next_idx; } @@ -246,7 +236,7 @@ Break_alignment_interface::calc_positioning_done (SCM smob) { here += offsets[i]; if (i == edge_idx) - alignment_off = -here; + alignment_off = -here; total_extent.unite (extents[i] + here); } @@ -268,40 +258,38 @@ Break_alignment_interface::calc_positioning_done (SCM smob) return SCM_BOOL_T; } - - MAKE_SCHEME_CALLBACK (Break_alignable_interface, self_align_callback, 1) SCM Break_alignable_interface::self_align_callback (SCM grob) { Grob *me = unsmob_grob (grob); - Item *alignment = dynamic_cast (me->get_parent (X_AXIS)); + Item *alignment = dynamic_cast (me->get_parent (X_AXIS)); if (!Break_alignment_interface::has_interface (alignment)) return scm_from_int (0); SCM symbol_list = me->get_property ("break-align-symbols"); - vector elements = Break_alignment_interface::ordered_elements (alignment); + vector elements = Break_alignment_interface::ordered_elements (alignment); if (elements.size () == 0) return scm_from_int (0); - + int break_aligned_grob = -1; for (; scm_is_pair (symbol_list); symbol_list = scm_cdr (symbol_list)) { SCM sym = scm_car (symbol_list); for (vsize i = 0; i < elements.size (); i++) - { - if (elements[i]->get_property ("break-align-symbol") == sym) - { - if (Item::break_visible (elements[i]) - && !elements[i]->extent (elements[i], X_AXIS).is_empty ()) - { - break_aligned_grob = i; - goto found_break_aligned_grob; /* ugh. need to break out of 2 loops */ - } - else if (break_aligned_grob == -1) - break_aligned_grob = i; - } - } + { + if (elements[i]->get_property ("break-align-symbol") == sym) + { + if (Item::break_visible (elements[i]) + && !elements[i]->extent (elements[i], X_AXIS).is_empty ()) + { + break_aligned_grob = i; + goto found_break_aligned_grob; /* ugh. need to break out of 2 loops */ + } + else if (break_aligned_grob == -1) + break_aligned_grob = i; + } + } } found_break_aligned_grob: @@ -313,8 +301,8 @@ found_break_aligned_grob: Real anchor = robust_scm2double (alignment_parent->get_property ("break-align-anchor"), 0); return scm_from_double (alignment_parent->relative_coordinate (common, X_AXIS) - - me->relative_coordinate (common, X_AXIS) - + anchor); + - me->relative_coordinate (common, X_AXIS) + + anchor); } MAKE_SCHEME_CALLBACK (Break_aligned_interface, calc_average_anchor, 1) @@ -331,10 +319,10 @@ Break_aligned_interface::calc_average_anchor (SCM grob) { SCM anchor = elts[i]->get_property ("break-align-anchor"); if (scm_is_number (anchor)) - { - count++; - avg += scm_to_double (anchor); - } + { + count++; + avg += scm_to_double (anchor); + } } return scm_from_double (count > 0 ? avg / count : 0); @@ -366,63 +354,63 @@ Break_aligned_interface::calc_break_visibility (SCM smob) { bool visible = false; for (vsize i = 0; i < elts.size (); i++) - { - SCM vis = elts[i]->get_property ("break-visibility"); - if (scm_is_vector (vis) && to_boolean (scm_c_vector_ref (vis, dir))) - visible = true; - } + { + SCM vis = elts[i]->get_property ("break-visibility"); + if (scm_is_vector (vis) && to_boolean (scm_c_vector_ref (vis, dir))) + visible = true; + } scm_c_vector_set_x (ret, dir, scm_from_bool (visible)); } return ret; } ADD_INTERFACE (Break_alignable_interface, - "Object that is aligned on a break alignment.", + "Object that is aligned on a break alignment.", - /* properties */ - "break-align-symbols " - "non-break-align-symbols " - ); + /* properties */ + "break-align-symbols " + "non-break-align-symbols " + ); ADD_INTERFACE (Break_aligned_interface, - "Items that are aligned in prefatory matter.\n" - "\n" - "The spacing of these items is controlled by the" - " @code{space-alist} property. It contains a list" - " @code{break-align-symbol}s with a specification of the" - " associated space. The space specification can be\n" - "\n" - "@table @code\n" - "@item (minimum-space . @var{spc}))\n" - "Pad space until the distance is @var{spc}.\n" - "@item (fixed-space . @var{spc})\n" - "Set a fixed space.\n" - "@item (semi-fixed-space . @var{spc})\n" - "Set a space. Half of it is fixed and half is stretchable." - " (does not work at start of line. fixme)\n" - "@item (extra-space . @var{spc})\n" - "Add @var{spc} amount of space.\n" - "@end table\n" - "\n" - "Special keys for the alist are @code{first-note} and" - " @code{next-note}, signifying the first note on a line, and" - " the next note halfway a line.\n" - "\n" - "Rules for this spacing are much more complicated than this." - " See [Wanske] page 126--134, [Ross] page 143--147.", - - /* properties */ - "break-align-anchor " - "break-align-anchor-alignment " - "break-align-symbol " - "space-alist " - ); + "Items that are aligned in prefatory matter.\n" + "\n" + "The spacing of these items is controlled by the" + " @code{space-alist} property. It contains a list" + " @code{break-align-symbol}s with a specification of the" + " associated space. The space specification can be\n" + "\n" + "@table @code\n" + "@item (minimum-space . @var{spc}))\n" + "Pad space until the distance is @var{spc}.\n" + "@item (fixed-space . @var{spc})\n" + "Set a fixed space.\n" + "@item (semi-fixed-space . @var{spc})\n" + "Set a space. Half of it is fixed and half is stretchable." + " (does not work at start of line. fixme)\n" + "@item (extra-space . @var{spc})\n" + "Add @var{spc} amount of space.\n" + "@end table\n" + "\n" + "Special keys for the alist are @code{first-note} and" + " @code{next-note}, signifying the first note on a line, and" + " the next note halfway a line.\n" + "\n" + "Rules for this spacing are much more complicated than this." + " See [Wanske] page 126--134, [Ross] page 143--147.", + + /* properties */ + "break-align-anchor " + "break-align-anchor-alignment " + "break-align-symbol " + "space-alist " + ); ADD_INTERFACE (Break_alignment_interface, - "The object that performs break alignment. See" - " @ref{break-aligned-interface}.", + "The object that performs break alignment. See" + " @ref{break-aligned-interface}.", - /* properties */ - "positioning-done " - "break-align-orders " - ); + /* properties */ + "positioning-done " + "break-align-orders " + ); diff --git a/lily/break-substitution.cc b/lily/break-substitution.cc index 2cd29707d6..a0f03f753c 100644 --- a/lily/break-substitution.cc +++ b/lily/break-substitution.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,39 +43,39 @@ substitute_grob (Grob *sc) Item *i = dynamic_cast (sc); Direction d = to_dir (break_criterion); if (i && i->break_status_dir () != d) - { - Item *br = i->find_prebroken_piece (d); - return br; - } + { + Item *br = i->find_prebroken_piece (d); + return br; + } } else { System *line - = dynamic_cast (unsmob_grob (break_criterion)); + = dynamic_cast (unsmob_grob (break_criterion)); if (sc->get_system () != line) - sc = sc->find_broken_piece (line); + sc = sc->find_broken_piece (line); /* now: !sc || (sc && sc->get_system () == line) */ if (!sc) - return 0; + return 0; /* now: sc && sc->get_system () == line */ if (!line) - return sc; + return sc; /* - We don't return SCM_UNDEFINED for - suicided grobs, for two reasons + We don't return SCM_UNDEFINED for + suicided grobs, for two reasons - - it doesn't work (strange disappearing objects) + - it doesn't work (strange disappearing objects) - - it forces us to mark the parents of a grob, leading to - a huge recursion in the GC routine. + - it forces us to mark the parents of a grob, leading to + a huge recursion in the GC routine. */ if (sc->common_refpoint (line, X_AXIS) - && sc->common_refpoint (line, Y_AXIS)) - return sc; + && sc->common_refpoint (line, Y_AXIS)) + return sc; return 0; } @@ -99,7 +99,7 @@ substitute_grob (Grob *sc) SCM do_break_substitution (SCM src) { - again: +again: if (unsmob_grob (src)) { @@ -111,33 +111,33 @@ do_break_substitution (SCM src) int len = scm_c_vector_length (src); SCM nv = scm_c_make_vector (len, SCM_UNDEFINED); for (int i = 0; i < len; i++) - { - SCM si = scm_from_int (i); - scm_vector_set_x (nv, si, - do_break_substitution (scm_vector_ref (src, si))); - } + { + SCM si = scm_from_int (i); + scm_vector_set_x (nv, si, + do_break_substitution (scm_vector_ref (src, si))); + } } else if (scm_is_pair (src)) { /* - UGH! breaks on circular lists. + UGH! breaks on circular lists. */ SCM newcar = do_break_substitution (scm_car (src)); SCM oldcdr = scm_cdr (src); if (newcar == SCM_UNDEFINED - && (scm_is_pair (oldcdr) || oldcdr == SCM_EOL)) - { - /* - This is tail-recursion, ie. + && (scm_is_pair (oldcdr) || oldcdr == SCM_EOL)) + { + /* + This is tail-recursion, ie. - return do_break_substution (cdr); + return do_break_substution (cdr); - We don't want to rely on the compiler to do this. Without - tail-recursion, this easily crashes with a stack overflow. */ - src = oldcdr; - goto again; - } + We don't want to rely on the compiler to do this. Without + tail-recursion, this easily crashes with a stack overflow. */ + src = oldcdr; + goto again; + } return scm_cons (newcar, do_break_substitution (oldcdr)); } @@ -150,14 +150,14 @@ do_break_substitution (SCM src) /* Perform substitution on GROB_LIST using a constant amount of stack. */ -vector temporary_substition_array; +vector temporary_substition_array; void substitute_grob_array (Grob_array *grob_arr, Grob_array *new_arr) { - vector &old_grobs (grob_arr->array_reference ()); - vector *new_grobs (new_arr == grob_arr - ? & temporary_substition_array - : &new_arr->array_reference ()); + vector &old_grobs (grob_arr->array_reference ()); + vector *new_grobs (new_arr == grob_arr + ? & temporary_substition_array + : &new_arr->array_reference ()); new_grobs->resize (old_grobs.size ()); Grob **array = (Grob **) new_grobs->data (); @@ -167,7 +167,7 @@ substitute_grob_array (Grob_array *grob_arr, Grob_array *new_arr) Grob *orig = old_grobs[i]; Grob *new_grob = substitute_grob (orig); if (new_grob) - *ptr++ = new_grob; + *ptr++ = new_grob; } new_grobs->resize (ptr - array); @@ -235,8 +235,8 @@ spanner_system_range (Spanner *sp) else { if (sp->broken_intos_.size ()) - rv = Slice (sp->broken_intos_[0]->get_system ()->get_rank (), - sp->broken_intos_.back ()->get_system ()->get_rank ()); + rv = Slice (sp->broken_intos_[0]->get_system ()->get_rank (), + sp->broken_intos_.back ()->get_system ()->get_rank ()); } return rv; } @@ -248,14 +248,12 @@ item_system_range (Item *it) return Slice (st->get_rank (), st->get_rank ()); Slice sr; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Item *bi = it->find_prebroken_piece (d); if (bi && bi->get_system ()) - sr.add_point (bi->get_system ()->get_rank ()); + sr.add_point (bi->get_system ()->get_rank ()); } - while (flip (&d) != LEFT); return sr; } @@ -287,16 +285,16 @@ struct Substitution_entry */ if (sr.is_empty ()) { - /* - overflow if we don't treat this specially. - */ - left_ = 1; - right_ = -1; + /* + overflow if we don't treat this specially. + */ + left_ = 1; + right_ = -1; } else { - left_ = (short) sr[LEFT]; - right_ = (short) sr[RIGHT]; + left_ = (short) sr[LEFT]; + right_ = (short) sr[RIGHT]; } } Substitution_entry () @@ -310,20 +308,20 @@ struct Substitution_entry item_compare (void const *a, void const *b) { return ((Substitution_entry *)a)->left_ - - ((Substitution_entry *)b)->left_; + - ((Substitution_entry *)b)->left_; } static int spanner_compare (void const *a, void const *b) { return ((Substitution_entry *)a)->length () - - ((Substitution_entry *)b)->length (); + - ((Substitution_entry *)b)->length (); } }; bool Spanner::fast_substitute_grob_array (SCM sym, - Grob_array *grob_array) + Grob_array *grob_array) { int len = grob_array->size (); @@ -361,15 +359,15 @@ Spanner::fast_substitute_grob_array (SCM sym, int idx = 0; if (dynamic_cast (g)) - idx = --spanner_index; + idx = --spanner_index; else if (dynamic_cast (g)) - idx = item_index++; + idx = item_index++; vec[idx].set (g, sr); } qsort (vec, item_index, - sizeof (Substitution_entry), &Substitution_entry::item_compare); + sizeof (Substitution_entry), &Substitution_entry::item_compare); vector item_indices; vector spanner_indices; @@ -380,14 +378,15 @@ Spanner::fast_substitute_grob_array (SCM sym, } vector *arrs[] - = { + = + { &item_indices, &spanner_indices }; - for (int i = 0; i < item_index;i++) + for (int i = 0; i < item_index; i++) { for (int j = vec[i].left_; j <= vec[i].right_; j++) - item_indices[j - system_range[LEFT]].add_point (i); + item_indices[j - system_range[LEFT]].add_point (i); } /* @@ -401,7 +400,7 @@ Spanner::fast_substitute_grob_array (SCM sym, assert (item_index <= spanner_index); assert ((broken_intos_.size () == (vsize)system_range.length () + 1) - || (broken_intos_.empty () && system_range.length () == 0)); + || (broken_intos_.empty () && system_range.length () == 0)); for (vsize i = 0; i < broken_intos_.size (); i++) { Grob *sc = broken_intos_[i]; @@ -410,28 +409,28 @@ Spanner::fast_substitute_grob_array (SCM sym, SCM newval = sc->internal_get_object (sym); if (!unsmob_grob_array (newval)) - { - newval = Grob_array::make_array (); - sc->set_object (sym, newval); - } + { + newval = Grob_array::make_array (); + sc->set_object (sym, newval); + } Grob_array *new_array = unsmob_grob_array (newval); - for (int k = 0; k < 2;k++) - for (int j = (*arrs[k])[i][LEFT]; j <= (*arrs[k])[i][RIGHT]; j++) - { - Grob *substituted = substitute_grob (vec[j].grob_); - if (substituted) - new_array->add (substituted); - } + for (int k = 0; k < 2; k++) + for (int j = (*arrs[k])[i][LEFT]; j <= (*arrs[k])[i][RIGHT]; j++) + { + Grob *substituted = substitute_grob (vec[j].grob_); + if (substituted) + new_array->add (substituted); + } #ifdef PARANOIA printf ("%d (%d), sp %d (%d)\n", - item_indices [i].length (), item_index, - spanner_indices[i].length (), len -spanner_index); + item_indices [i].length (), item_index, + spanner_indices[i].length (), len - spanner_index); { - SCM l1 = substitute_grob_list (grob_list); - assert (scm_ilength (l1) == scm_ilength (newval)); + SCM l1 = substitute_grob_list (grob_list); + assert (scm_ilength (l1) == scm_ilength (newval)); } #endif } @@ -463,37 +462,37 @@ substitute_object_alist (SCM alist, SCM dest) SCM val = scm_cdar (s); if (Grob_array *orig = unsmob_grob_array (val)) - { - SCM handle = scm_assq (sym, dest); - SCM newval - = (scm_is_pair (handle)) - ? scm_cdr (handle) - : Grob_array::make_array (); - - Grob_array *new_arr = unsmob_grob_array (newval); - - substitute_grob_array (orig, new_arr); - val = newval; - } + { + SCM handle = scm_assq (sym, dest); + SCM newval + = (scm_is_pair (handle)) + ? scm_cdr (handle) + : Grob_array::make_array (); + + Grob_array *new_arr = unsmob_grob_array (newval); + + substitute_grob_array (orig, new_arr); + val = newval; + } else - val = do_break_substitution (val); + val = do_break_substitution (val); if (val != SCM_UNDEFINED) - { - /* - for ly:grob? properties, SCM_UNDEFINED could leak out - through ly:grob-property - */ - *tail = scm_cons (scm_cons (sym, val), SCM_EOL); - tail = SCM_CDRLOC (*tail); - } + { + /* + for ly:grob? properties, SCM_UNDEFINED could leak out + through ly:grob-property + */ + *tail = scm_cons (scm_cons (sym, val), SCM_EOL); + tail = SCM_CDRLOC (*tail); + } } return l; } void Spanner::substitute_one_mutable_property (SCM sym, - SCM val) + SCM val) { Spanner *s = this; @@ -505,25 +504,25 @@ Spanner::substitute_one_mutable_property (SCM sym, if (!fast_done) for (vsize i = 0; i < s->broken_intos_.size (); i++) { - Grob *sc = s->broken_intos_[i]; - System *l = sc->get_system (); - set_break_subsititution (l ? l->self_scm () : SCM_UNDEFINED); - - if (grob_array) - { - SCM newval = sc->internal_get_object (sym); - if (!unsmob_grob_array (newval)) - { - newval = Grob_array::make_array (); - sc->set_object (sym, newval); - } - substitute_grob_array (grob_array, unsmob_grob_array (newval)); - } - else - { - SCM newval = do_break_substitution (val); - sc->set_object (sym, newval); - } + Grob *sc = s->broken_intos_[i]; + System *l = sc->get_system (); + set_break_subsititution (l ? l->self_scm () : SCM_UNDEFINED); + + if (grob_array) + { + SCM newval = sc->internal_get_object (sym); + if (!unsmob_grob_array (newval)) + { + newval = Grob_array::make_array (); + sc->set_object (sym, newval); + } + substitute_grob_array (grob_array, unsmob_grob_array (newval)); + } + else + { + SCM newval = do_break_substitution (val); + sc->set_object (sym, newval); + } } } diff --git a/lily/breathing-sign-engraver.cc b/lily/breathing-sign-engraver.cc index 4e583881c0..ff64684546 100644 --- a/lily/breathing-sign-engraver.cc +++ b/lily/breathing-sign-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Michael Krause + Copyright (C) 1999--2012 Michael Krause written for the GNU LilyPond music typesetter @@ -75,15 +75,15 @@ Breathing_sign_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Breathing_sign_engraver, - /* doc */ - "Create a breathing sign.", + /* doc */ + "Create a breathing sign.", - /* create */ - "BreathingSign ", + /* create */ + "BreathingSign ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index a59bd65070..02b29858af 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Michael Krause - Extensions for ancient notation (c) 2003--2011 by Juergen Reuter + Copyright (C) 1999--2012 Michael Krause + Extensions for ancient notation (c) 2003--2012 by Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -70,16 +70,9 @@ SCM Breathing_sign::divisio_maior (SCM smob) { Grob *me = unsmob_grob (smob); - Real staff_space = Staff_symbol_referencer::staff_space (me); - Real staff_size; Real thickness = Staff_symbol_referencer::line_thickness (me); thickness *= robust_scm2double (me->get_property ("thickness"), 1.0); - if (Staff_symbol_referencer::get_staff_symbol (me)) - staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space; - else - staff_size = 0.0; - Real blotdiameter = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); /* @@ -88,13 +81,19 @@ Breathing_sign::divisio_maior (SCM smob) * more than half the size of the staff, such that the endings of * the line are in the middle of a staff space. */ - int lines = Staff_symbol_referencer::line_count (me); - int height = lines / 2; // little more than half of staff size - if ((lines & 1) != (height & 1)) - height++; // ensure endings are centered in staff space + Interval ydim = Staff_symbol_referencer::staff_span (me); + ydim.widen (-0.25 * ydim.delta ()); + for (UP_and_DOWN (i)) + { + int const int_dim = (int) ydim[i]; + if (int_dim == ydim[i] + && Staff_symbol_referencer::on_staff_line (me, int_dim)) + ydim[i] += i; + } + + ydim *= 1.0 / Staff_symbol_referencer::staff_space (me); Interval xdim (0, thickness); - Interval ydim (-0.5 * height, +0.5 * height); Box b (xdim, ydim); Stencil out = Lookup::round_filled_box (b, blotdiameter); return out.smobbed_copy (); @@ -109,20 +108,15 @@ Breathing_sign::divisio_maxima (SCM smob) { Grob *me = unsmob_grob (smob); Real staff_space = Staff_symbol_referencer::staff_space (me); - Real staff_size; Real thickness = Staff_symbol_referencer::line_thickness (me); thickness *= robust_scm2double (me->get_property ("thickness"), 1.0); - if (Staff_symbol_referencer::get_staff_symbol (me)) - staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space; - else - staff_size = 0.0; - Real blotdiameter = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); // like a "|" type bar Interval xdim (0, thickness); - Interval ydim (-0.5 * staff_size, +0.5 * staff_size); + Interval ydim = Staff_symbol_referencer::staff_span (me); + ydim *= staff_space / 2; Box b (xdim, ydim); Stencil out = Lookup::round_filled_box (b, blotdiameter); return out.smobbed_copy (); @@ -137,20 +131,15 @@ Breathing_sign::finalis (SCM smob) { Grob *me = unsmob_grob (smob); Real staff_space = Staff_symbol_referencer::staff_space (me); - Real staff_size; Real thickness = Staff_symbol_referencer::line_thickness (me); thickness *= robust_scm2double (me->get_property ("thickness"), 1.0); - if (Staff_symbol_referencer::get_staff_symbol (me)) - staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space; - else - staff_size = 0.0; - Real blotdiameter = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); // like a "||" type bar Interval xdim (0, thickness); - Interval ydim (-0.5 * staff_size, +0.5 * staff_size); + Interval ydim = Staff_symbol_referencer::staff_span (me); + ydim *= staff_space / 2; Box b (xdim, ydim); Stencil line1 = Lookup::round_filled_box (b, blotdiameter); Stencil line2 (line1); @@ -177,7 +166,7 @@ Breathing_sign::offset_callback (SCM smob) if (staff) { Interval iv = Staff_symbol::line_span (staff); - Real inter = Staff_symbol::staff_space (me) / 2; + Real inter = Staff_symbol::staff_space (staff) / 2; return scm_from_double (inter * iv[d]); } @@ -185,8 +174,8 @@ Breathing_sign::offset_callback (SCM smob) } ADD_INTERFACE (Breathing_sign, - "A breathing sign.", + "A breathing sign.", - /* properties */ - "direction " - ); + /* properties */ + "direction " + ); diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc index 04647c111c..0adac3b8b3 100644 --- a/lily/change-iterator.cc +++ b/lily/change-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,14 +32,14 @@ Change_iterator::error (string reason) string to_id = ly_scm2string (get_music ()->get_property ("change-to-id")); string warn1 = _f ("cannot change `%s' to `%s'", to_type, to_id) - + ": " + reason; + + ": " + reason; /* GUHG! */ - string warn2= "Change_iterator::process (): " - + get_outlet ()->context_name () + " = `" - + get_outlet ()->id_string () + "': "; + string warn2 = "Change_iterator::process (): " + + get_outlet ()->context_name () + " = `" + + get_outlet ()->id_string () + "': "; warning (warn2); get_music ()->origin ()->warning (warn1); } @@ -75,31 +75,31 @@ Change_iterator::process (Moment m) if (current) if (last) { - Context *dest = 0; - Context *where = get_outlet (); - while (!dest && where) - { - dest = find_context_below (where, to_type, to_id); - where = where->get_parent_context (); - } - - if (dest) - { - send_stream_event (last, "ChangeParent", get_music ()->origin (), - ly_symbol2scm ("context"), dest->self_scm ()); - } - else - /* FIXME: constant error message. */ - get_music ()->origin ()->warning (_ ("cannot find context to switch to")); + Context *dest = 0; + Context *where = get_outlet (); + while (!dest && where) + { + dest = find_context_below (where, to_type, to_id); + where = where->get_parent_context (); + } + + if (dest) + { + send_stream_event (last, "ChangeParent", get_music ()->origin (), + ly_symbol2scm ("context"), dest->self_scm ()); + } + else + /* FIXME: constant error message. */ + get_music ()->origin ()->warning (_ ("cannot find context to switch to")); } else { - /* We could change the current translator's id, but that would make - errors hard to catch. + /* We could change the current translator's id, but that would make + errors hard to catch. - last->translator_id_string () = get_change - ()->change_to_id_string (); */ - error (_f ("not changing to same context type: %s", ly_symbol2string (to_type).c_str ())); + last->translator_id_string () = get_change + ()->change_to_id_string (); */ + error (_f ("not changing to same context type: %s", ly_symbol2string (to_type).c_str ())); } else /* FIXME: uncomprehensable message */ diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index d0ced5a395..eab4d94d07 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,8 +44,8 @@ protected: DECLARE_TRANSLATOR_LISTENER (rest); private: Item *chord_name_; - vector notes_; - + vector notes_; + SCM last_chord_; Stream_event *rest_event_; }; @@ -70,7 +70,7 @@ Chord_name_engraver::Chord_name_engraver () void Chord_name_engraver::process_music () -{ +{ SCM markup; SCM bass = SCM_EOL; SCM inversion = SCM_EOL; @@ -84,60 +84,60 @@ Chord_name_engraver::process_music () markup = no_chord_markup; } else - { + { if (!notes_.size ()) return; Stream_event *inversion_event = 0; for (vsize i = 0; i < notes_.size (); i++) - { - Stream_event *n = notes_[i]; - SCM p = n->get_property ("pitch"); - if (!unsmob_pitch (p)) - continue; - - if (n->get_property ("inversion") == SCM_BOOL_T) { - inversion_event = n; - inversion = p; + Stream_event *n = notes_[i]; + SCM p = n->get_property ("pitch"); + if (!unsmob_pitch (p)) + continue; + + if (n->get_property ("inversion") == SCM_BOOL_T) + { + inversion_event = n; + inversion = p; + } + else if (n->get_property ("bass") == SCM_BOOL_T) + bass = p; + else + pitches = scm_cons (p, pitches); } - else if (n->get_property ("bass") == SCM_BOOL_T) - bass = p; - else - pitches = scm_cons (p, pitches); - } if (inversion_event) - { - SCM oct = inversion_event->get_property ("octavation"); - if (scm_is_number (oct)) { - Pitch *p = unsmob_pitch (inversion_event->get_property ("pitch")); - int octavation = scm_to_int (oct); - Pitch orig = p->transposed (Pitch (-octavation, 0, 0)); - - pitches = scm_cons (orig.smobbed_copy (), pitches); + SCM oct = inversion_event->get_property ("octavation"); + if (scm_is_number (oct)) + { + Pitch *p = unsmob_pitch (inversion_event->get_property ("pitch")); + int octavation = scm_to_int (oct); + Pitch orig = p->transposed (Pitch (-octavation, 0, 0)); + + pitches = scm_cons (orig.smobbed_copy (), pitches); + } + else + programming_error ("inversion does not have original pitch"); } - else - programming_error ("inversion does not have original pitch"); - } pitches = scm_sort_list (pitches, Pitch::less_p_proc); SCM name_proc = get_property ("chordNameFunction"); markup = scm_call_4 (name_proc, pitches, bass, inversion, - context ()->self_scm ()); + context ()->self_scm ()); } /* Ugh. */ SCM chord_as_scm = scm_cons (pitches, scm_cons (bass, inversion)); - chord_name_ = make_item ("ChordName", - rest_event_ ? rest_event_->self_scm () : notes_[0]->self_scm ()); + chord_name_ = make_item ("ChordName", + rest_event_ ? rest_event_->self_scm () : notes_[0]->self_scm ()); chord_name_->set_property ("text", markup); - SCM chord_changes = get_property("chordChanges"); + SCM chord_changes = get_property ("chordChanges"); if (to_boolean (chord_changes) && scm_is_pair (last_chord_) && ly_is_equal (chord_as_scm, last_chord_)) chord_name_->set_property ("begin-of-line-visible", SCM_BOOL_T); @@ -156,9 +156,9 @@ IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, rest); void Chord_name_engraver::listen_rest (Stream_event *ev) { - ASSIGN_EVENT_ONCE(rest_event_, ev); + ASSIGN_EVENT_ONCE (rest_event_, ev); } - + void Chord_name_engraver::stop_translation_timestep () { @@ -172,22 +172,22 @@ Chord_name_engraver::stop_translation_timestep () which properties are read depend on the chord naming function active. */ ADD_TRANSLATOR (Chord_name_engraver, - /* doc */ - "Catch note and rest events and generate the appropriate chordname.", - - /* create */ - "ChordName ", - - /* read */ - "chordChanges " - "chordNameExceptions " - "chordNameFunction " - "chordNoteNamer " - "chordRootNamer " - "chordNameExceptions " - "majorSevenSymbol " + /* doc */ + "Catch note and rest events and generate the appropriate chordname.", + + /* create */ + "ChordName ", + + /* read */ + "chordChanges " + "chordNameExceptions " + "chordNameFunction " + "chordNoteNamer " + "chordRootNamer " + "chordNameExceptions " + "majorSevenSymbol " "noChordSymbol ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/chord-name.cc b/lily/chord-name.cc index ad0d91d3db..9d400a5da5 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Jan Nieuwenhuizen + Copyright (C) 1999--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,15 +37,15 @@ Chord_name::after_line_breaking (SCM smob) if (to_boolean (s)) { if (me->get_column ()->get_rank () - - me->get_system ()->spanned_rank_interval ()[LEFT] > 1) - me->suicide (); + - me->get_system ()->spanned_rank_interval ()[LEFT] > 1) + me->suicide (); } return SCM_UNSPECIFIED; } ADD_INTERFACE (Chord_name, - "A chord label (name or fretboard).", + "A chord label (name or fretboard).", - /* properties */ - "begin-of-line-visible " - ); + /* properties */ + "begin-of-line-visible " + ); diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc index 1cd9147839..fd4199527a 100644 --- a/lily/chord-tremolo-engraver.cc +++ b/lily/chord-tremolo-engraver.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys - Erik Sandberg + Copyright (C) 2000--2012 Han-Wen Nienhuys + Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -142,17 +142,16 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info) if (Stem::duration_log (s) != 1) beam_->set_property ("gap-count", scm_from_int (gap_count)); - if (info.ultimate_event_cause ()->in_event_class ("rhythmic-event")) - Beam::add_stem (beam_, s); + Beam::add_stem (beam_, s); else - { - string s = _ ("stem must have Rhythmic structure"); - if (info.event_cause ()) - info.event_cause ()->origin ()->warning (s); - else - ::warning (s); - } + { + string s = _ ("stem must have Rhythmic structure"); + if (info.event_cause ()) + info.event_cause ()->origin ()->warning (s); + else + ::warning (s); + } // Store current grob, so we can possibly end the spanner here (and // reset the beam direction to RIGHT) previous_stem_ = s; @@ -161,15 +160,15 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info) ADD_ACKNOWLEDGER (Chord_tremolo_engraver, stem); ADD_TRANSLATOR (Chord_tremolo_engraver, - /* doc */ - "Generate beams for tremolo repeats.", + /* doc */ + "Generate beams for tremolo repeats.", - /* create */ - "Beam ", + /* create */ + "Beam ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/chord-tremolo-iterator.cc b/lily/chord-tremolo-iterator.cc index c4454544b6..06a201f937 100644 --- a/lily/chord-tremolo-iterator.cc +++ b/lily/chord-tremolo-iterator.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys - Erik Sandberg + Copyright (C) 2000--2012 Han-Wen Nienhuys + Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,6 @@ Chord_tremolo_iterator::get_music_list () const { Music *mus = get_music (); Input *origin = mus->origin (); - Moment l = mus->get_length (); Music *body = Repeated_music::body (mus); bool body_is_sequential = body->is_mus_type ("sequential-music"); diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 5ddfea627e..00c3457717 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Mats Bengtsson LilyPond is free software: you can redistribute it and/or modify @@ -23,7 +23,6 @@ using namespace std; #include "item.hh" #include "context.hh" -#include "bar-line.hh" #include "staff-symbol-referencer.hh" #include "engraver.hh" #include "direction.hh" @@ -106,30 +105,30 @@ Clef_engraver::create_clef () SCM cpos = get_property ("clefPosition"); if (scm_is_number (cpos)) - clef_->set_property ("staff-position", cpos); + clef_->set_property ("staff-position", cpos); SCM oct = get_property ("clefOctavation"); if (scm_is_number (oct) && scm_to_int (oct)) - { - Item *g = make_item ("OctavateEight", SCM_EOL); - - int abs_oct = scm_to_int (oct); - int dir = sign (abs_oct); - abs_oct = abs (abs_oct) + 1; - - SCM txt = scm_number_to_string (scm_from_int (abs_oct), - scm_from_int (10)); - - g->set_property ("text", - scm_list_n (ly_lily_module_constant ("vcenter-markup"), - txt, SCM_UNDEFINED)); - Side_position_interface::add_support (g, clef_); - - g->set_parent (clef_, Y_AXIS); - g->set_parent (clef_, X_AXIS); - g->set_property ("direction", scm_from_int (dir)); - octavate_ = g; - } + { + Item *g = make_item ("OctavateEight", SCM_EOL); + + int abs_oct = scm_to_int (oct); + int dir = sign (abs_oct); + abs_oct = abs (abs_oct) + 1; + + SCM txt = scm_number_to_string (scm_from_int (abs_oct), + scm_from_int (10)); + + g->set_property ("text", + scm_list_n (ly_lily_module_constant ("vcenter-markup"), + txt, SCM_UNDEFINED)); + Side_position_interface::add_support (g, clef_); + + g->set_parent (clef_, Y_AXIS); + g->set_parent (clef_, X_AXIS); + g->set_property ("direction", scm_from_int (dir)); + octavate_ = g; + } } } void @@ -140,12 +139,11 @@ Clef_engraver::process_music () static void apply_on_children (Context *context, SCM fun) { - scm_call_1(fun, context->self_scm()); + scm_call_1 (fun, context->self_scm ()); for (SCM s = context->children_contexts (); - scm_is_pair(s); s = scm_cdr (s)) - apply_on_children(unsmob_context (scm_car(s)), fun); + scm_is_pair (s); s = scm_cdr (s)) + apply_on_children (unsmob_context (scm_car (s)), fun); } - void Clef_engraver::inspect_clef_properties () @@ -161,15 +159,15 @@ Clef_engraver::inspect_clef_properties () || scm_equal_p (octavation, prev_octavation_) == SCM_BOOL_F || to_boolean (force_clef)) { - apply_on_children(context (), - ly_lily_module_constant ("invalidate-alterations")); - + apply_on_children (context (), + ly_lily_module_constant ("invalidate-alterations")); + set_glyph (); if (prev_cpos_ != SCM_BOOL_F || to_boolean (get_property ("firstClef"))) - create_clef (); + create_clef (); if (clef_) - clef_->set_property ("non-default", SCM_BOOL_T); + clef_->set_property ("non-default", SCM_BOOL_T); prev_cpos_ = clefpos; prev_glyph_ = glyph; @@ -191,10 +189,10 @@ Clef_engraver::stop_translation_timestep () { SCM vis = 0; if (to_boolean (clef_->get_property ("non-default"))) - vis = get_property ("explicitClefVisibility"); + vis = get_property ("explicitClefVisibility"); if (vis) - clef_->set_property ("break-visibility", vis); + clef_->set_property ("break-visibility", vis); clef_ = 0; @@ -204,20 +202,20 @@ Clef_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Clef_engraver, bar_line); ADD_TRANSLATOR (Clef_engraver, - /* doc */ - "Determine and set reference point for pitches.", - - /* create */ - "Clef " - "OctavateEight ", - - /* read */ - "clefGlyph " - "clefOctavation " - "clefPosition " - "explicitClefVisibility " - "forceClef ", - - /* write */ - "" - ); + /* doc */ + "Determine and set reference point for pitches.", + + /* create */ + "Clef " + "OctavateEight ", + + /* read */ + "clefGlyph " + "clefOctavation " + "clefPosition " + "explicitClefVisibility " + "forceClef ", + + /* write */ + "" + ); diff --git a/lily/clef.cc b/lily/clef.cc index c6ad530e41..3c1ca37525 100644 --- a/lily/clef.cc +++ b/lily/clef.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,11 +36,11 @@ Clef::calc_glyph_name (SCM smob) string str = ly_scm2string (glyph); if (to_boolean (s->get_property ("non-default")) - && s->break_status_dir () != RIGHT - && !to_boolean (s->get_property ("full-size-change"))) - { - str += "_change"; - } + && s->break_status_dir () != RIGHT + && !to_boolean (s->get_property ("full-size-change"))) + { + str += "_change"; + } return ly_string2scm (str); } @@ -67,12 +67,12 @@ Clef::print (SCM smob) } ADD_INTERFACE (Clef, - "A clef sign.", - - /* properties */ - "full-size-change " - "glyph " - "glyph-name " - "non-default " - ); + "A clef sign.", + + /* properties */ + "full-size-change " + "glyph " + "glyph-name " + "non-default " + ); diff --git a/lily/cluster-engraver.cc b/lily/cluster-engraver.cc index 7ef6b63477..650ce2ba35 100644 --- a/lily/cluster-engraver.cc +++ b/lily/cluster-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -40,7 +40,7 @@ protected: virtual void process_music (); virtual void finalize (); private: - vector cluster_notes_; + vector cluster_notes_; Item *beacon_; void typeset_grobs (); @@ -70,12 +70,12 @@ Cluster_spanner_engraver::typeset_grobs () if (finished_spanner_) { if (!finished_spanner_->get_bound (RIGHT)) - { - finished_spanner_->set_bound (RIGHT, - finished_spanner_->get_bound (LEFT)); - - } - + { + finished_spanner_->set_bound (RIGHT, + finished_spanner_->get_bound (LEFT)); + + } + finished_spanner_ = 0; } beacon_ = 0; @@ -100,19 +100,19 @@ Cluster_spanner_engraver::process_music () int pmin = INT_MAX; for (vsize i = 0; i < cluster_notes_.size (); i++) - { - Pitch *pit = unsmob_pitch (cluster_notes_[i]->get_property ("pitch")); + { + Pitch *pit = unsmob_pitch (cluster_notes_[i]->get_property ("pitch")); - int p = (pit ? pit->steps () : 0) + c0; + int p = (pit ? pit->steps () : 0) + c0; - pmax = max (pmax, p); - pmin = min (pmin, p); - } + pmax = max (pmax, p); + pmin = min (pmin, p); + } beacon_ = make_item ("ClusterSpannerBeacon", cluster_notes_[0]->self_scm ()); beacon_->set_property ("positions", - scm_cons (scm_from_int (pmin), - scm_from_int (pmax))); + scm_cons (scm_from_int (pmin), + scm_from_int (pmax))); } if (beacon_ && !spanner_) @@ -144,17 +144,17 @@ Cluster_spanner_engraver::acknowledge_note_column (Grob_info info) ADD_ACKNOWLEDGER (Cluster_spanner_engraver, note_column); ADD_TRANSLATOR (Cluster_spanner_engraver, - /* doc */ - "Engrave a cluster using @code{Spanner} notation.", + /* doc */ + "Engrave a cluster using @code{Spanner} notation.", - /* create */ - "ClusterSpanner " - "ClusterSpannerBeacon ", + /* create */ + "ClusterSpanner " + "ClusterSpannerBeacon ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/cluster.cc b/lily/cluster.cc index 9922839099..ac0abc9c74 100644 --- a/lily/cluster.cc +++ b/lily/cluster.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -62,57 +62,57 @@ brew_cluster_piece (Grob *me, vector bottom_points, vector top_p if (shape == "leftsided-stairs") { for (int i = 0; i < size - 1; i++) - { - Box box; - box.add_point (bottom_points[i] - hvpadding); - box.add_point (Offset (top_points[i + 1][X_AXIS], - top_points[i][Y_AXIS]) + hvpadding); - out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); - } + { + Box box; + box.add_point (bottom_points[i] - hvpadding); + box.add_point (Offset (top_points[i + 1][X_AXIS], + top_points[i][Y_AXIS]) + hvpadding); + out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); + } } else if (shape == "rightsided-stairs") { for (int i = 0; i < size - 1; i++) - { - Box box; - box.add_point (Offset (bottom_points[i][X_AXIS], - bottom_points[i + 1][Y_AXIS]) - hvpadding); - box.add_point (top_points[i + 1] + hvpadding); - out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); - } + { + Box box; + box.add_point (Offset (bottom_points[i][X_AXIS], + bottom_points[i + 1][Y_AXIS]) - hvpadding); + box.add_point (top_points[i + 1] + hvpadding); + out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); + } } else if (shape == "centered-stairs") { Real left_xmid = bottom_points[0][X_AXIS]; for (int i = 0; i < size - 1; i++) - { - Real right_xmid - = 0.5 * (bottom_points[i][X_AXIS] + bottom_points[i + 1][X_AXIS]); - Box box; - box.add_point (Offset (left_xmid, bottom_points[i][Y_AXIS]) - - hvpadding); - box.add_point (Offset (right_xmid, top_points[i][Y_AXIS]) - + hvpadding); - out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); - left_xmid = right_xmid; - } + { + Real right_xmid + = 0.5 * (bottom_points[i][X_AXIS] + bottom_points[i + 1][X_AXIS]); + Box box; + box.add_point (Offset (left_xmid, bottom_points[i][Y_AXIS]) + - hvpadding); + box.add_point (Offset (right_xmid, top_points[i][Y_AXIS]) + + hvpadding); + out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); + left_xmid = right_xmid; + } Real right_xmid = bottom_points[size - 1][X_AXIS]; Box box; box.add_point (Offset (left_xmid, bottom_points[size - 1][Y_AXIS]) - - hvpadding); + - hvpadding); box.add_point (Offset (right_xmid, top_points[size - 1][Y_AXIS]) - + hvpadding); + + hvpadding); out.add_stencil (Lookup::round_filled_box (box, blotdiameter)); } else if (shape == "ramp") { points.push_back (bottom_points[0] - vpadding + hpadding); for (int i = 1; i < size - 1; i++) - points.push_back (bottom_points[i] - vpadding); + points.push_back (bottom_points[i] - vpadding); points.push_back (bottom_points[size - 1] - vpadding - hpadding); points.push_back (top_points[size - 1] + vpadding - hpadding); for (int i = size - 2; i > 0; i--) - points.push_back (top_points[i] + vpadding); + points.push_back (top_points[i] + vpadding); points.push_back (top_points[0] + vpadding + hpadding); out.add_stencil (Lookup::round_filled_polygon (points, blotdiameter)); } @@ -151,7 +151,7 @@ Cluster::print (SCM smob) Grob *commonx = left_bound->common_refpoint (right_bound, X_AXIS); - vector const &cols = extract_grob_array (me, "columns"); + vector const &cols = extract_grob_array (me, "columns"); if (cols.empty ()) { me->warning (_ ("junking empty cluster")); @@ -190,16 +190,16 @@ Cluster::print (SCM smob) { extract_grob_set (next, "columns", next_cols); if (next_cols.size () > 0) - { - Grob *next_commony = common_refpoint_of_array (next_cols, next, Y_AXIS); - Grob *col = next_cols[0]; + { + Grob *next_commony = common_refpoint_of_array (next_cols, next, Y_AXIS); + Grob *col = next_cols[0]; - Interval v = col->extent (next_commony, Y_AXIS); - Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord; + Interval v = col->extent (next_commony, Y_AXIS); + Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord; - bottom_points.push_back (Offset (x, v[DOWN])); - top_points.push_back (Offset (x, v[UP])); - } + bottom_points.push_back (Offset (x, v[DOWN])); + top_points.push_back (Offset (x, v[UP])); + } } Stencil out = brew_cluster_piece (me, bottom_points, top_points); @@ -208,21 +208,21 @@ Cluster::print (SCM smob) } ADD_INTERFACE (Cluster, - "A graphically drawn musical cluster.\n" - "\n" - "@code{padding} adds to the vertical extent of the shape (top" - " and bottom).\n" - "\n" - "The property @code{style} controls the shape of cluster" - " segments. Valid values include @code{leftsided-stairs}," - " @code{rightsided-stairs}, @code{centered-stairs}, and" - " @code{ramp}.\n", - - /* properties */ - "style " - "padding " - "columns " - ); + "A graphically drawn musical cluster.\n" + "\n" + "@code{padding} adds to the vertical extent of the shape (top" + " and bottom).\n" + "\n" + "The property @code{style} controls the shape of cluster" + " segments. Valid values include @code{leftsided-stairs}," + " @code{rightsided-stairs}, @code{centered-stairs}, and" + " @code{ramp}.\n", + + /* properties */ + "style " + "padding " + "columns " + ); struct Cluster_beacon { @@ -237,15 +237,15 @@ Cluster_beacon::height (SCM g) { Grob *me = unsmob_grob (g); Interval v = robust_scm2interval (me->get_property ("positions"), - Interval (0, 0)); + Interval (0, 0)); return ly_interval2scm (Staff_symbol_referencer::staff_space (me) * 0.5 * v); } ADD_INTERFACE (Cluster_beacon, - "A place holder for the cluster spanner to determine the" - " vertical extents of a cluster spanner at this" - " X@tie{}position.", + "A place holder for the cluster spanner to determine the" + " vertical extents of a cluster spanner at this" + " X@tie{}position.", - /* properties */ - "positions " - ); + /* properties */ + "positions " + ); diff --git a/lily/coherent-ligature-engraver.cc b/lily/coherent-ligature-engraver.cc index eb8fcaabb1..d0451afa92 100644 --- a/lily/coherent-ligature-engraver.cc +++ b/lily/coherent-ligature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -83,7 +83,6 @@ * example, Ligature_bracket_engraver does not share any of this code. */ - /* * TODO: move this function to class Item? */ @@ -98,21 +97,21 @@ Coherent_ligature_engraver::move_related_items_to_column { Item *sibling = elements[i]; if (!sibling) - // should not occur, but who knows... -jr - continue; + // should not occur, but who knows... -jr + continue; if (Staff_symbol_referencer::get_staff_symbol (sibling) != staff_symbol) - // sibling is from a staff different than that of the item of - // interest - continue; + // sibling is from a staff different than that of the item of + // interest + continue; #if 0 /* experimental code to collapse spacing after ligature */ Grob *sibling_parent = sibling->get_parent (X_AXIS); sibling_parent->warning (_f ("Coherent_ligature_engraver: " - "setting `spacing-increment=" - "0.01': ptr=%ul", parent)); + "setting `spacing-increment=" + "0.01': ptr=%ul", parent)); sibling_parent->set_property ("forced-spacing", - scm_from_double (0.01)); + scm_from_double (0.01)); #endif sibling->set_parent (target_column, X_AXIS); @@ -148,13 +147,13 @@ compute_delta_pitches (vector primitives) primitive = dynamic_cast (primitives[i].grob ()); Stream_event *cause = primitives[i].event_cause (); int pitch - = unsmob_pitch (cause->get_property ("pitch"))->steps (); + = unsmob_pitch (cause->get_property ("pitch"))->steps (); if (prev_primitive) - { - delta_pitch = pitch - prev_pitch; - prev_primitive->set_property ("delta-position", - scm_from_int (delta_pitch)); - } + { + delta_pitch = pitch - prev_pitch; + prev_primitive->set_property ("delta-position", + scm_from_int (delta_pitch)); + } prev_pitch = pitch; prev_primitive = primitive; } @@ -163,7 +162,7 @@ compute_delta_pitches (vector primitives) void Coherent_ligature_engraver::typeset_ligature (Spanner *ligature, - vector primitives) + vector primitives) { // compute some commonly needed context info stored as grob // properties diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc index a92a2a7171..4b4d91f2ba 100644 --- a/lily/collision-engraver.cc +++ b/lily/collision-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Collision_engraver : public Engraver { Item *col_; - vector note_columns_; + vector note_columns_; protected: DECLARE_ACKNOWLEDGER (note_column); @@ -55,11 +55,11 @@ Collision_engraver::acknowledge_note_column (Grob_info i) { /*should check Y axis? */ if (Note_column::has_rests (i.grob ()) || i.grob ()->get_parent (X_AXIS)) - return; + return; if (to_boolean (i.grob ()->get_property ("ignore-collision"))) - return; - + return; + note_columns_.push_back (i.grob ()); } } @@ -81,16 +81,16 @@ Collision_engraver::Collision_engraver () ADD_ACKNOWLEDGER (Collision_engraver, note_column); ADD_TRANSLATOR (Collision_engraver, - /* doc */ - "Collect @code{NoteColumns}, and as soon as there are two or" - " more, put them in a @code{NoteCollision} object.", + /* doc */ + "Collect @code{NoteColumns}, and as soon as there are two or" + " more, put them in a @code{NoteCollision} object.", - /* create */ - "NoteCollision ", + /* create */ + "NoteCollision ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/column-x-positions.cc b/lily/column-x-positions.cc index d1e87dd0a3..a5b5c65fb2 100644 --- a/lily/column-x-positions.cc +++ b/lily/column-x-positions.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/completion-note-heads-engraver.cc b/lily/completion-note-heads-engraver.cc index a2c606f472..e0b57b8248 100644 --- a/lily/completion-note-heads-engraver.cc +++ b/lily/completion-note-heads-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,6 +35,7 @@ using namespace std; #include "tie.hh" #include "tie-column.hh" #include "warn.hh" +#include "misc.hh" #include "translator.icc" @@ -47,7 +48,7 @@ using namespace std; Every time process_music () is called and there are note events, we figure out how long the note to typeset should be. It should be no longer than what's specified, than what is left to do and it should - not cross barlines. + not cross barlines or sub-bar units. We copy the events into scratch note events, to make sure that we get all durations exactly right. @@ -69,7 +70,7 @@ class Completion_heads_engraver : public Engraver Rational do_nothing_until_; Rational factor_; - Moment next_barline_moment (); + Moment next_moment (Rational const &); Item *make_note_head (Stream_event *); public: @@ -105,10 +106,10 @@ Completion_heads_engraver::listen_note (Stream_event *ev) } /* - The duration _until_ the next bar line. + The duration _until_ the next bar line or completion unit */ Moment -Completion_heads_engraver::next_barline_moment () +Completion_heads_engraver::next_moment (Rational const ¬e_len) { Moment *e = unsmob_moment (get_property ("measurePosition")); Moment *l = unsmob_moment (get_property ("measureLength")); @@ -117,7 +118,40 @@ Completion_heads_engraver::next_barline_moment () return Moment (0, 0); } - return (*l - *e); + Moment result = *l - *e; + Moment const *unit = unsmob_moment (get_property ("completionUnit")); + + if (unit) + { + Rational const now_unit = e->main_part_ / unit->main_part_; + if (now_unit.den () > 1) + { + /* + within a unit - go to the end of that + */ + result = unit->main_part_ + * (Rational (1) - (now_unit - now_unit.trunc_rat ())); + } + else + { + /* + at the beginning of a unit: + take a power-of-two number of units, but not more than required, + since then the Duration constructor destroys the unit structure + */ + if (note_len < result.main_part_) + result.main_part_ = note_len; + Rational const step_unit = result.main_part_ / unit->main_part_; + if (step_unit.den () < step_unit.num ()) + { + int const log2 + = intlog2 (int (step_unit.num () / step_unit.den ())); + result.main_part_ = unit->main_part_ * Rational (1 << log2); + } + } + } + + return result; } Item * @@ -153,13 +187,13 @@ Completion_heads_engraver::process_music () if (left_to_do_) { /* - note that note_dur may be strictly less than left_to_do_ - (say, if left_to_do_ == 5/8) + note that note_dur may be strictly less than left_to_do_ + (say, if left_to_do_ == 5/8) */ if (factor_.denominator () == 1 && factor_ > Rational (1, 1)) - note_dur = Duration (left_to_do_, false); + note_dur = Duration (left_to_do_, false); else - note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_); + note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_); } else { @@ -168,13 +202,13 @@ Completion_heads_engraver::process_music () factor_ = note_dur.factor (); left_to_do_ = orig->get_length (); } - Moment nb = next_barline_moment (); + Moment nb = next_moment (note_dur.get_length ()); if (nb.main_part_ && nb < note_dur.get_length ()) { - if (factor_.denominator () == 1 && factor_ > Rational (1, 1)) - note_dur = Duration (nb.main_part_, false); + if (factor_.denominator () == 1 && factor_.numerator () > 1) + note_dur = Duration (nb.main_part_, false); else - note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_); + note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_); } do_nothing_until_ = now.main_part_ + note_dur.get_length (); @@ -185,7 +219,7 @@ Completion_heads_engraver::process_music () Stream_event *event = note_events_[i]; if (need_clone) - event = event->clone (); + event = event->clone (); SCM pits = note_events_[i]->get_property ("pitch"); event->set_property ("pitch", pits); @@ -194,24 +228,24 @@ Completion_heads_engraver::process_music () 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. + 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))); + ly_bool2scm (left_to_do_ - note_dur.get_length () > Rational (0))); Item *note = make_note_head (event); if (need_clone) - event->unprotect (); + event->unprotect (); notes_.push_back (note); } if (prev_notes_.size () == notes_.size ()) { for (vsize i = 0; i < notes_.size (); i++) - make_tie (prev_notes_[i], notes_[i]); + make_tie (prev_notes_[i], notes_[i]); } if (ties_.size () && !tie_column_) @@ -264,7 +298,7 @@ Completion_heads_engraver::start_translation_timestep () prev_notes_.clear (); } context ()->set_property ("completionBusy", - ly_bool2scm (note_events_.size ())); + ly_bool2scm (note_events_.size ())); } Completion_heads_engraver::Completion_heads_engraver () @@ -273,22 +307,22 @@ Completion_heads_engraver::Completion_heads_engraver () } 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.", - - /* create */ - "NoteHead " - "Tie " - "TieColumn ", - - /* read */ - "measureLength " - "measurePosition " - "middleCPosition " - "timing ", - - /* write */ - "completionBusy " - ); + /* doc */ + "This engraver replaces @code{Note_heads_engraver}. It plays" + " some trickery to break long notes and automatically tie them" + " into the next measure.", + + /* create */ + "NoteHead " + "Tie " + "TieColumn ", + + /* read */ + "measureLength " + "measurePosition " + "middleCPosition " + "timing ", + + /* write */ + "completionBusy " + ); diff --git a/lily/completion-rest-engraver.cc b/lily/completion-rest-engraver.cc index 3d8d7211ff..3f918e2d0e 100644 --- a/lily/completion-rest-engraver.cc +++ b/lily/completion-rest-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -56,9 +56,9 @@ using namespace std; class Completion_rest_engraver : public Engraver { - vector rests_; - vector prev_rests_; - vector rest_events_; + vector rests_; + vector prev_rests_; + vector rest_events_; Moment rest_end_mom_; bool is_first_; Rational left_to_do_; @@ -66,7 +66,7 @@ class Completion_rest_engraver : public Engraver Rational factor_; Moment next_barline_moment (); - Item *make_rest (Stream_event*); + Item *make_rest (Stream_event *); public: TRANSLATOR_DECLARATIONS (Completion_rest_engraver); @@ -90,7 +90,7 @@ void Completion_rest_engraver::listen_rest (Stream_event *ev) { rest_events_.push_back (ev); - + is_first_ = true; Moment now = now_mom (); Moment musiclen = get_event_length (ev, now); @@ -115,7 +115,7 @@ Completion_rest_engraver::next_barline_moment () return (*l - *e); } -Item* +Item * Completion_rest_engraver::make_rest (Stream_event *ev) { Item *rest = make_item ("Rest", ev->self_scm ()); @@ -124,7 +124,7 @@ Completion_rest_engraver::make_rest (Stream_event *ev) int pos = p->steps (); SCM c0 = get_property ("middleCPosition"); if (scm_is_number (c0)) - pos += scm_to_int (c0); + pos += scm_to_int (c0); rest->set_property ("staff-position", scm_from_int (pos)); } @@ -149,13 +149,13 @@ Completion_rest_engraver::process_music () if (left_to_do_) { /* - rest that rest_dur may be strictly less than left_to_do_ - (say, if left_to_do_ == 5/8) + rest that rest_dur may be strictly less than left_to_do_ + (say, if left_to_do_ == 5/8) */ if (factor_.denominator () == 1 && factor_ > Rational (1, 1)) - rest_dur = Duration (left_to_do_, false); + rest_dur = Duration (left_to_do_, false); else - rest_dur = Duration (left_to_do_ / factor_, false).compressed (factor_); + rest_dur = Duration (left_to_do_ / factor_, false).compressed (factor_); appearance = Duration (left_to_do_, false); } else @@ -169,9 +169,9 @@ Completion_rest_engraver::process_music () if (nb.main_part_ && nb < rest_dur.get_length ()) { if (factor_.denominator () == 1 && factor_ > Rational (1, 1)) - rest_dur = Duration (nb.main_part_, false); + rest_dur = Duration (nb.main_part_, false); else - rest_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_); + rest_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_); } do_nothing_until_ = now.main_part_ + rest_dur.get_length (); @@ -182,7 +182,7 @@ Completion_rest_engraver::process_music () Stream_event *event = rest_events_[i]; if (need_clone) - event = event->clone (); + event = event->clone (); SCM pits = rest_events_[i]->get_property ("pitch"); event->set_property ("pitch", pits); @@ -192,13 +192,13 @@ Completion_rest_engraver::process_music () Item *rest = make_rest (event); if (need_clone) - event->unprotect (); + event->unprotect (); rests_.push_back (rest); } - + left_to_do_ -= rest_dur.get_length (); if (left_to_do_) - get_global_context ()->add_moment_to_process (now.main_part_ + rest_dur.get_length()); + get_global_context ()->add_moment_to_process (now.main_part_ + rest_dur.get_length ()); /* don't do complicated arithmetic with grace rests. */ @@ -224,7 +224,7 @@ Completion_rest_engraver::start_translation_timestep () prev_rests_.clear (); } context ()->set_property ("restCompletionBusy", - ly_bool2scm (rest_events_.size ())); + ly_bool2scm (rest_events_.size ())); } Completion_rest_engraver::Completion_rest_engraver () @@ -232,18 +232,18 @@ Completion_rest_engraver::Completion_rest_engraver () } ADD_TRANSLATOR (Completion_rest_engraver, - /* doc */ - "This engraver replaces @code{Rest_engraver}. It plays" - " some trickery to break long rests into the next measure." - , - /* create */ - "Rest " - , - /* read */ - "middleCPosition " - "measurePosition " - "measureLength " - , - /* write */ - "restCompletionBusy " - ); + /* doc */ + "This engraver replaces @code{Rest_engraver}. It plays" + " some trickery to break long rests into the next measure.", + + /* create */ + "Rest ", + + /* read */ + "middleCPosition " + "measurePosition " + "measureLength ", + + /* write */ + "restCompletionBusy " + ); diff --git a/lily/concurrent-hairpin-engraver.cc b/lily/concurrent-hairpin-engraver.cc new file mode 100644 index 0000000000..5d04d258fe --- /dev/null +++ b/lily/concurrent-hairpin-engraver.cc @@ -0,0 +1,118 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + + 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 . +*/ + +#include "engraver.hh" + +#include "international.hh" +#include "pointer-group-interface.hh" +#include "spanner.hh" +#include "stream-event.hh" +#include "warn.hh" +#include "item.hh" + +#include "translator.icc" + +class Concurrent_hairpin_engraver : public Engraver +{ +public: + TRANSLATOR_DECLARATIONS (Concurrent_hairpin_engraver); + +protected: + DECLARE_ACKNOWLEDGER (hairpin); + DECLARE_END_ACKNOWLEDGER (hairpin); + + void stop_translation_timestep (); + void finalize (); + +private: + vector arriving_hairpins_; + vector departing_hairpins_; + vector hairpins_hanging_out_; +}; + +Concurrent_hairpin_engraver::Concurrent_hairpin_engraver () +{ +} + +void +Concurrent_hairpin_engraver::acknowledge_hairpin (Grob_info info) +{ + arriving_hairpins_.push_back (info.grob ()); +} + +void +Concurrent_hairpin_engraver::acknowledge_end_hairpin (Grob_info info) +{ + departing_hairpins_.push_back (info.grob ()); +} + +void +Concurrent_hairpin_engraver::stop_translation_timestep () +{ + for (vsize i = 0; i < departing_hairpins_.size (); i++) + for (vsize j = 0; j < hairpins_hanging_out_.size (); j++) + if (departing_hairpins_[i] == hairpins_hanging_out_[j]) + { + hairpins_hanging_out_.erase (hairpins_hanging_out_.begin () + j); + break; + } + if (arriving_hairpins_.size ()) + { + if (arriving_hairpins_.size () > 1) + for (vsize i = 0; i < arriving_hairpins_.size () - 1; i++) + for (vsize j = i + 1; j < arriving_hairpins_.size (); j++) + { + Pointer_group_interface::add_grob (arriving_hairpins_[i], ly_symbol2scm ("concurrent-hairpins"), arriving_hairpins_[j]); + Pointer_group_interface::add_grob (arriving_hairpins_[j], ly_symbol2scm ("concurrent-hairpins"), arriving_hairpins_[i]); + } + + for (vsize i = 0; i < arriving_hairpins_.size (); i++) + for (vsize j = 0; j < hairpins_hanging_out_.size (); j++) + { + Pointer_group_interface::add_grob (arriving_hairpins_[i], ly_symbol2scm ("concurrent-hairpins"), hairpins_hanging_out_[j]); + Pointer_group_interface::add_grob (hairpins_hanging_out_[j], ly_symbol2scm ("concurrent-hairpins"), arriving_hairpins_[i]); + } + } + hairpins_hanging_out_.insert (hairpins_hanging_out_.end (), arriving_hairpins_.begin (), arriving_hairpins_.end ()); + arriving_hairpins_.resize (0); + departing_hairpins_.resize (0); +} + +void +Concurrent_hairpin_engraver::finalize () +{ + hairpins_hanging_out_.resize (0); +} + +ADD_ACKNOWLEDGER (Concurrent_hairpin_engraver, hairpin); +ADD_END_ACKNOWLEDGER (Concurrent_hairpin_engraver, hairpin); + +ADD_TRANSLATOR (Concurrent_hairpin_engraver, + /* doc */ + "Collect concurrent hairpins.", + + /* create */ + "", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index f6f84b8090..c8b7fc1d74 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -87,22 +87,22 @@ Constrained_breaking::calc_subproblem (vsize start, vsize sys, vsize brk) vsize start_col = starting_breakpoints_[start]; Matrix &st = state_[start]; vsize max_index = brk - start_col; - for (vsize j=max_index; j-- > sys;) + for (vsize j = max_index; j-- > sys;) { if (0 == sys && j > 0) continue; /* the first line cannot have its first break after the beginning */ Line_details const &cur = lines_.at (brk, j + start_col); if (isinf (cur.force_)) - break; + break; Real prev_f = 0; Real prev_dem = 0; if (sys > 0) { - prev_f = st.at (j, sys-1).details_.force_; - prev_dem = st.at (j, sys-1).demerits_; + prev_f = st.at (j, sys - 1).details_.force_; + prev_dem = st.at (j, sys - 1).demerits_; } if (isinf (prev_dem)) continue; @@ -120,16 +120,14 @@ Constrained_breaking::calc_subproblem (vsize start, vsize sys, vsize brk) return found_something; } - Column_x_positions 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 line (all_.begin () + breaks_[i], - all_.begin () + breaks_[j] + 1); + vector line (all_.begin () + breaks_[i], + all_.begin () + breaks_[j] + 1); Interval line_dims = line_dimensions_int (pscore_->layout (), i); bool last = j == breaks_.size () - 1; bool ragged = ragged_right || (last && ragged_last); @@ -176,7 +174,7 @@ Constrained_breaking::solve (vsize start, vsize end, vsize sys_count) vector ret; /* find the first solution that satisfies constraints */ - for (vsize sys = sys_count-1; sys != VPOS; sys--) + for (vsize sys = sys_count - 1; sys != VPOS; sys--) { for (vsize brk = end_brk; brk != VPOS; brk--) { @@ -184,8 +182,8 @@ Constrained_breaking::solve (vsize start, vsize end, vsize sys_count) { if (brk != end_brk) { - brk = st.at (brk, sys).prev_; - sys--; + brk = st.at (brk, sys).prev_; + sys--; warning (_ ("cannot find line breaking that satisfies constraints")); ret.push_back (space_line (brk, end_brk)); } @@ -193,7 +191,7 @@ Constrained_breaking::solve (vsize start, vsize end, vsize sys_count) /* build up the good part of the solution */ for (vsize cur_sys = sys; cur_sys != VPOS; cur_sys--) { - vsize prev_brk = st.at (brk, cur_sys).prev_; + vsize prev_brk = st.at (brk, cur_sys).prev_; assert (brk != VPOS); ret.push_back (space_line (prev_brk + start_brk, brk + start_brk)); brk = prev_brk; @@ -220,27 +218,27 @@ Constrained_breaking::best_solution (vsize start, vsize end) for (vsize i = min_systems; i <= max_systems; i++) { vsize brk = prepare_solution (start, end, i); - Real dem = state_[start].at (brk, i-1).demerits_; + Real dem = state_[start].at (brk, i - 1).demerits_; if (dem < best_demerits) - { - best_demerits = dem; - best_so_far = solve (start, end, i); - } + { + best_demerits = dem; + best_so_far = solve (start, end, i); + } else - { - vector cur = solve (start, end, i); - bool too_many_lines = true; - - for (vsize j = 0; j < cur.size (); j++) - if (cur[j].force_ < 0) - { - too_many_lines = false; - break; - } - if (too_many_lines) - return best_so_far; - } + { + vector cur = solve (start, end, i); + bool too_many_lines = true; + + for (vsize j = 0; j < cur.size (); j++) + if (cur[j].force_ < 0) + { + too_many_lines = false; + break; + } + if (too_many_lines) + return best_so_far; + } } if (best_so_far.size ()) return best_so_far; @@ -256,32 +254,32 @@ Constrained_breaking::line_details (vsize start, vsize end, vsize sys_count) /* This loop structure is C&Ped from solve(). */ /* find the first solution that satisfies constraints */ - for (vsize sys = sys_count-1; sys != VPOS; sys--) + for (vsize sys = sys_count - 1; sys != VPOS; sys--) { for (vsize brk = end_brk; brk != VPOS; brk--) { if (!isinf (st.at (brk, sys).details_.force_)) { if (brk != end_brk) - { - /* - During initialize(), we only fill out a - Line_details for lines that are valid (ie. not too - long), otherwise line breaking becomes O(n^3). - In case sys_count is such that no valid solution - is found, we need to fill in the Line_details. - */ - Line_details details; - brk = st.at (brk, sys).prev_; - sys--; - fill_line_details (&details, brk, end_brk); - ret.push_back (details); - } + { + /* + During initialize(), we only fill out a + Line_details for lines that are valid (ie. not too + long), otherwise line breaking becomes O(n^3). + In case sys_count is such that no valid solution + is found, we need to fill in the Line_details. + */ + Line_details details; + brk = st.at (brk, sys).prev_; + sys--; + fill_line_details (&details, brk, end_brk); + ret.push_back (details); + } /* build up the good part of the solution */ for (vsize cur_sys = sys; cur_sys != VPOS; cur_sys--) { - vsize prev_brk = st.at (brk, cur_sys).prev_; + vsize prev_brk = st.at (brk, cur_sys).prev_; assert (brk != VPOS); ret.push_back (st.at (brk, cur_sys).details_); brk = prev_brk; @@ -366,7 +364,7 @@ min_permission (SCM perm1, SCM perm2) if (perm1 == ly_symbol2scm ("force")) return perm2; if (perm1 == ly_symbol2scm ("allow") - && perm2 != ly_symbol2scm ("force")) + && perm2 != ly_symbol2scm ("force")) return perm2; return SCM_EOL; } @@ -397,40 +395,40 @@ Constrained_breaking::initialize () SCM page_breaking_spacing_spec = l->c_variable ("page-breaking-system-system-spacing"); Page_layout_problem::read_spacing_spec (spacing_spec, - &system_system_space_, - ly_symbol2scm ("basic-distance")); + &system_system_space_, + ly_symbol2scm ("basic-distance")); Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec, - &system_system_space_, - ly_symbol2scm ("basic-distance")); + &system_system_space_, + ly_symbol2scm ("basic-distance")); Page_layout_problem::read_spacing_spec (title_spec, - &system_markup_space_, - ly_symbol2scm ("basic-distance")); + &system_markup_space_, + ly_symbol2scm ("basic-distance")); Page_layout_problem::read_spacing_spec (spacing_spec, - &system_system_padding_, - ly_symbol2scm ("padding")); + &system_system_padding_, + ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (between_scores_spec, - &score_system_padding_, - ly_symbol2scm ("padding")); + &score_system_padding_, + ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec, - &system_system_padding_, - ly_symbol2scm ("padding")); + &system_system_padding_, + ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (title_spec, - &score_markup_padding_, - ly_symbol2scm ("padding")); + &score_markup_padding_, + ly_symbol2scm ("padding")); Page_layout_problem::read_spacing_spec (between_scores_spec, - &score_system_min_distance_, - ly_symbol2scm ("minimum-distance")); + &score_system_min_distance_, + ly_symbol2scm ("minimum-distance")); Page_layout_problem::read_spacing_spec (spacing_spec, - &system_system_min_distance_, - ly_symbol2scm ("minimum-distance")); + &system_system_min_distance_, + ly_symbol2scm ("minimum-distance")); Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec, - &system_system_min_distance_, - ly_symbol2scm ("minimum-distance")); + &system_system_min_distance_, + ly_symbol2scm ("minimum-distance")); Page_layout_problem::read_spacing_spec (title_spec, - &score_markup_min_distance_, - ly_symbol2scm ("minimum-distance")); + &score_markup_min_distance_, + ly_symbol2scm ("minimum-distance")); Interval first_line = line_dimensions_int (pscore_->layout (), 0); Interval other_lines = line_dimensions_int (pscore_->layout (), 1); @@ -439,25 +437,25 @@ Constrained_breaking::initialize () all_ = pscore_->root_system ()->used_columns (); lines_.resize (breaks_.size (), breaks_.size (), Line_details ()); vector forces = get_line_forces (all_, - other_lines.length (), - other_lines.length () - first_line.length (), - ragged_right_); + other_lines.length (), + other_lines.length () - first_line.length (), + ragged_right_); for (vsize i = 0; i + 1 < breaks_.size (); i++) { for (vsize j = i + 1; j < breaks_.size (); j++) - { - bool last = j == breaks_.size () - 1; - bool ragged = ragged_right_ || (last && ragged_last_); - Line_details &line = lines_.at (j, i); - - line.force_ = forces[i*breaks_.size () + j]; - if (ragged && last && !isinf (line.force_)) - line.force_ = (line.force_ < 0 && j > i + 1) ? infinity_f : 0; - if (isinf (line.force_)) - break; - - fill_line_details (&line, i, j); - } + { + bool last = j == breaks_.size () - 1; + bool ragged = ragged_right_ || (last && ragged_last_); + Line_details &line = lines_.at (j, i); + + line.force_ = forces[i * breaks_.size () + j]; + if (ragged && last && !isinf (line.force_)) + line.force_ = (line.force_ < 0 && j > i + 1) ? infinity_f : 0; + if (isinf (line.force_)) + break; + + fill_line_details (&line, i, j); + } } /* work out all the starting indices */ @@ -465,7 +463,7 @@ Constrained_breaking::initialize () { vsize j; for (j = 0; j + 1 < breaks_.size () && breaks_[j] < start_[i]; j++) - ; + ; starting_breakpoints_.push_back (j); start_[i] = breaks_[j]; } @@ -498,18 +496,18 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v /* turn permission should always be stricter than page permission and page permission should always be stricter than line permission */ out->page_permission_ = min_permission (out->break_permission_, - out->page_permission_); + out->page_permission_); out->turn_permission_ = min_permission (out->page_permission_, - out->turn_permission_); + out->turn_permission_); begin_of_line_extent = (begin_of_line_extent.is_empty () - || isnan (begin_of_line_extent[LEFT]) - || isnan (begin_of_line_extent[RIGHT])) - ? Interval (0, 0) : begin_of_line_extent; + || isnan (begin_of_line_extent[LEFT]) + || isnan (begin_of_line_extent[RIGHT])) + ? Interval (0, 0) : begin_of_line_extent; rest_of_line_extent = (rest_of_line_extent.is_empty () - || isnan (rest_of_line_extent[LEFT]) - || isnan (rest_of_line_extent[RIGHT])) - ? Interval (0, 0) : rest_of_line_extent; + || isnan (rest_of_line_extent[LEFT]) + || isnan (rest_of_line_extent[RIGHT])) + ? Interval (0, 0) : rest_of_line_extent; out->shape_ = Line_shape (begin_of_line_extent, rest_of_line_extent); out->padding_ = last ? score_system_padding_ : system_system_padding_; out->title_padding_ = score_markup_padding_; @@ -519,7 +517,8 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v out->title_space_ = system_markup_space_; out->inverse_hooke_ = out->full_height () + system_system_space_; - out->footnotes_ = sys->get_footnotes_in_range (start_rank, end_rank); + out->footnote_heights_ = sys->get_footnote_heights_in_range (start_rank, end_rank); + out->in_note_heights_ = sys->get_in_note_heights_in_range (start_rank, end_rank); out->refpoint_extent_ = sys->pure_refpoint_extent (start_rank, end_rank); if (out->refpoint_extent_.is_empty ()) @@ -553,9 +552,18 @@ 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))); + { + Stencil *sten = unsmob_stencil (scm_caddar (s)); + if (!sten) + { + programming_error ("expecting stencil, got empty pointer"); + continue; + } + footnote_heights_.push_back (sten->extent (Y_AXIS).length ()); + } last_column_ = 0; force_ = 0; @@ -573,8 +581,8 @@ Line_details::Line_details (Prob *pb, Output_def *paper) title_ = to_boolean (pb->get_property ("is-title")); compressed_lines_count_ = 1; compressed_nontitle_lines_count_ = title_ ? 0 : 1; - SCM last_scm = pb->get_property ("last-markup-line"); - last_markup_line_ = to_boolean (last_scm); + SCM last_scm = pb->get_property ("last-markup-line"); + last_markup_line_ = to_boolean (last_scm); SCM first_scm = pb->get_property ("first-markup-line"); first_markup_line_ = to_boolean (first_scm); tight_spacing_ = to_boolean (pb->get_property ("tight-spacing")); @@ -585,9 +593,9 @@ Real Line_details::full_height () const { Interval ret; - ret.unite(shape_.begin_); - ret.unite(shape_.rest_); - return ret.length(); + ret.unite (shape_.begin_); + ret.unite (shape_.rest_); + return ret.length (); } Real @@ -617,7 +625,7 @@ Line_shape::Line_shape (Interval begin, Interval rest) Line_shape Line_shape::piggyback (Line_shape mount, Real padding) const { - Real elevation = max (begin_[UP]-mount.begin_[DOWN], rest_[UP]-mount.rest_[DOWN]); + Real elevation = max (begin_[UP] - mount.begin_[DOWN], rest_[UP] - mount.rest_[DOWN]); Interval begin = Interval (begin_[DOWN], elevation + mount.begin_[UP] + padding); Interval rest = Interval (rest_[DOWN], elevation + mount.rest_[UP] + padding); return Line_shape (begin, rest); diff --git a/lily/context-def.cc b/lily/context-def.cc index 26e79f56ab..b4e1e2567c 100644 --- a/lily/context-def.cc +++ b/lily/context-def.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,6 +23,7 @@ #include "context-def.hh" #include "context.hh" +#include "context-mod.hh" #include "international.hh" #include "output-def.hh" #include "translator.hh" @@ -83,9 +84,10 @@ Context_def::~Context_def () #include "ly-smobs.icc" IMPLEMENT_SMOBS (Context_def); IMPLEMENT_DEFAULT_EQUAL_P (Context_def); +IMPLEMENT_TYPE_P (Context_def, "ly:context-def?"); int -Context_def::print_smob (SCM smob, SCM port, scm_print_state*) +Context_def::print_smob (SCM smob, SCM port, scm_print_state *) { Context_def *me = (Context_def *) SCM_CELL_WORD_1 (smob); @@ -98,7 +100,7 @@ Context_def::print_smob (SCM smob, SCM port, scm_print_state*) SCM Context_def::mark_smob (SCM smob) { - ASSERT_LIVE_IS_ALLOWED (); + ASSERT_LIVE_IS_ALLOWED (smob); Context_def *me = (Context_def *) SCM_CELL_WORD_1 (smob); @@ -134,17 +136,18 @@ Context_def::add_context_mod (SCM mod) if (ly_symbol2scm ("default-child") == tag) default_child_ = sym; else if (ly_symbol2scm ("consists") == tag - || ly_symbol2scm ("remove") == tag) + || ly_symbol2scm ("remove") == tag) { translator_mods_ = scm_cons (scm_list_2 (tag, sym), translator_mods_); } else if (ly_symbol2scm ("accepts") == tag - || ly_symbol2scm ("denies") == tag) + || ly_symbol2scm ("denies") == tag) accept_mods_ = scm_cons (scm_list_2 (tag, sym), accept_mods_); else if (ly_symbol2scm ("pop") == tag - || ly_symbol2scm ("push") == tag - || ly_symbol2scm ("assign") == tag - || ly_symbol2scm ("unset") == tag) + || ly_symbol2scm ("push") == tag + || ly_symbol2scm ("assign") == tag + || ly_symbol2scm ("unset") == tag + || ly_symbol2scm ("apply") == tag) property_ops_ = scm_cons (mod, property_ops_); else if (ly_symbol2scm ("alias") == tag) context_aliases_ = scm_cons (sym, context_aliases_); @@ -166,16 +169,15 @@ Context_def::get_accepted (SCM user_mod) const SCM tag = scm_caar (s); SCM sym = scm_cadar (s); if (tag == ly_symbol2scm ("accepts")) - acc = scm_cons (sym, acc); + acc = scm_cons (sym, acc); else if (tag == ly_symbol2scm ("denies")) - acc = scm_delete_x (sym, acc); + acc = scm_delete_x (sym, acc); } SCM def = get_default_child (user_mod); if (scm_is_symbol (def)) { - if (scm_memq (def, acc)) - acc = scm_delete_x (def, acc); + acc = scm_delete_x (def, acc); acc = scm_cons (def, acc); } @@ -190,10 +192,10 @@ Context_def::get_default_child (SCM user_mod) const { SCM entry = scm_car (s); if (scm_car (entry) == ly_symbol2scm ("default-child")) - { - name = scm_cadr (entry); - break; - } + { + name = scm_cadr (entry); + break; + } } return name; @@ -213,8 +215,8 @@ Context_def::get_default_child (SCM user_mod) const */ vector Context_def::path_to_acceptable_context (SCM type_sym, - Output_def *odef, - SCM additional_accepts) const + Output_def *odef, + SCM additional_accepts) const { set seen; return internal_path_to_acceptable_context (type_sym, odef, additional_accepts, &seen); @@ -224,32 +226,32 @@ Context_def::path_to_acceptable_context (SCM type_sym, The SEEN parameter is a set which keeps track of visited contexts, allowing contexts of the same type to be nested. */ -vector +vector Context_def::internal_path_to_acceptable_context (SCM type_sym, - Output_def *odef, - SCM additional_accepts, - set *seen) const + Output_def *odef, + SCM additional_accepts, + set *seen) const { assert (scm_is_symbol (type_sym)); SCM accepted = get_accepted (additional_accepts); - vector accepteds; + vector accepteds; for (SCM s = accepted; scm_is_pair (s); s = scm_cdr (s)) if (Context_def *t = unsmob_context_def (find_context_def (odef, - scm_car (s)))) + scm_car (s)))) accepteds.push_back (t); - vector best_result; + vector best_result; for (vsize i = 0; i < accepteds.size (); i++) { /* do not check aliases, because \context Staff should not - create RhythmicStaff. */ + create RhythmicStaff. */ if (ly_is_equal (accepteds[i]->get_context_name (), type_sym)) - { - best_result.push_back (accepteds[i]); - return best_result; - } + { + best_result.push_back (accepteds[i]); + return best_result; + } } seen->insert (this); @@ -259,16 +261,16 @@ Context_def::internal_path_to_acceptable_context (SCM type_sym, Context_def *g = accepteds[i]; if (!seen->count (g)) - { - vector result - = g->internal_path_to_acceptable_context (type_sym, odef, SCM_EOL, seen); - if (result.size () && result.size () < best_depth) - { - best_depth = result.size (); - result.insert (result.begin (), g); - best_result = result; - } - } + { + vector result + = g->internal_path_to_acceptable_context (type_sym, odef, SCM_EOL, seen); + if (result.size () && result.size () < best_depth) + { + best_depth = result.size (); + result.insert (result.begin (), g); + best_result = result; + } + } } seen->erase (this); @@ -288,13 +290,15 @@ Context_def::get_translator_names (SCM user_mod) const SCM arg = scm_cadar (s); if (scm_is_string (arg)) - arg = scm_string_to_symbol (arg); + arg = scm_string_to_symbol (arg); if (ly_symbol2scm ("consists") == tag) - l1 = scm_cons (arg, l1); + l1 = scm_cons (arg, l1); else if (ly_symbol2scm ("remove") == tag - && get_translator (arg)) - l1 = scm_delete_x (arg, l1); + && (scm_is_pair (arg) + || ly_is_procedure (arg) + || get_translator (arg))) + l1 = scm_delete_x (arg, l1); } return l1; @@ -323,7 +327,7 @@ Context_def::make_scm () void Context_def::apply_default_property_operations (Context *tg) { - apply_property_operations (tg, property_ops_); + apply_property_operations (tg, scm_reverse (property_ops_)); } SCM @@ -332,19 +336,93 @@ Context_def::to_alist () const SCM ell = SCM_EOL; ell = scm_cons (scm_cons (ly_symbol2scm ("consists"), - get_translator_names (SCM_EOL)), ell); + get_translator_names (SCM_EOL)), ell); ell = scm_cons (scm_cons (ly_symbol2scm ("description"), description_), ell); ell = scm_cons (scm_cons (ly_symbol2scm ("aliases"), context_aliases_), ell); ell = scm_cons (scm_cons (ly_symbol2scm ("accepts"), get_accepted (SCM_EOL)), - ell); + ell); ell = scm_cons (scm_cons (ly_symbol2scm ("property-ops"), property_ops_), - ell); + ell); ell = scm_cons (scm_cons (ly_symbol2scm ("context-name"), context_name_), - ell); + ell); if (scm_is_symbol (translator_group_type_)) ell = scm_cons (scm_cons (ly_symbol2scm ("group-type"), - translator_group_type_), ell); + translator_group_type_), ell); return ell; } +SCM +Context_def::lookup (SCM sym) const +{ + if (scm_is_eq (ly_symbol2scm ("default-child"), sym)) + return default_child_; + else if (scm_is_eq (ly_symbol2scm ("consists"), sym)) + return get_translator_names (SCM_EOL); + else if (scm_is_eq (ly_symbol2scm ("description"), sym)) + return description_; + else if (scm_is_eq (ly_symbol2scm ("aliases"), sym)) + return context_aliases_; + else if (scm_is_eq (ly_symbol2scm ("accepts"), sym)) + return get_accepted (SCM_EOL); + else if (scm_is_eq (ly_symbol2scm ("property-ops"), sym)) + return property_ops_; + else if (scm_is_eq (ly_symbol2scm ("context-name"), sym)) + return context_name_; + else if (scm_is_eq (ly_symbol2scm ("group-type"), sym)) + return translator_group_type_; + return SCM_UNDEFINED; +} + +bool +Context_def::is_alias (SCM sym) const +{ + if (scm_is_eq (sym, ly_symbol2scm ("Bottom"))) + return !scm_is_pair (get_accepted (SCM_EOL)); + + if (scm_is_eq (sym, get_context_name ())) + return true; + + return scm_is_true (scm_c_memq (sym, context_aliases_)); +} + +LY_DEFINE (ly_context_def_lookup, "ly:context-def-lookup", + 2, 1, 0, (SCM def, SCM sym, SCM val), + "Return the value of @var{sym} in output definition @var{def}" + " (e.g., @code{\\paper}). If no value is found, return" + " @var{val} or @code{'()} if @var{val} is undefined.") +{ + LY_ASSERT_SMOB (Context_def, def, 1); + Context_def *cd = unsmob_context_def (def); + LY_ASSERT_TYPE (ly_is_symbol, sym, 2); + + SCM res = cd->lookup (sym); + + scm_remember_upto_here_1 (def); + + if (SCM_UNBNDP (res)) + res = SCM_EOL; + + if (scm_is_null (res) && !SCM_UNBNDP (val)) + return val; + + return res; +} + +LY_DEFINE (ly_context_def_modify, "ly:context-def-modify", + 2, 0, 0, (SCM def, SCM mod), + "Return the result of applying the context-mod @var{mod} to" + " the context definition @var{def}. Does not change @var{def}.") +{ + LY_ASSERT_SMOB (Context_def, def, 1); + LY_ASSERT_SMOB (Context_mod, mod, 2); + + Context_def *cd = unsmob_context_def (def)->clone (); + + for (SCM s = unsmob_context_mod (mod)->get_mods (); + scm_is_pair (s); + s = scm_cdr (s)) + cd->add_context_mod (scm_car (s)); + + return cd->unprotect (); +} diff --git a/lily/context-handle.cc b/lily/context-handle.cc index 0ee1778661..c115c570d6 100644 --- a/lily/context-handle.cc +++ b/lily/context-handle.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,13 +48,13 @@ void Context_handle::up (Context *t) { outlet_ = t; - t->iterator_count_++; + t->client_count_++; } void Context_handle::down () { - outlet_->iterator_count_--; + outlet_->client_count_--; outlet_ = 0; } @@ -76,7 +76,7 @@ Context_handle::set_context (Context *trans) } Context * -Context_handle::get_outlet () const +Context_handle::get_context () const { return outlet_; @@ -85,5 +85,5 @@ Context_handle::get_outlet () const int Context_handle::get_count () const { - return outlet_->iterator_count_; + return outlet_->client_count_; } diff --git a/lily/context-mod-scheme.cc b/lily/context-mod-scheme.cc index bf1432be6d..5479581b1c 100644 --- a/lily/context-mod-scheme.cc +++ b/lily/context-mod-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Jan Nieuwenhuizen + Copyright (C) 2010--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -21,22 +21,20 @@ #include "context.hh" #include "context-mod.hh" -LY_DEFINE (ly_get_context_mods, - "ly:get-context-mods", - 1, 0, 0, (SCM contextmod), - "Returns the list of context modifications stored in" - " @var{contextmod}.") +LY_DEFINE (ly_get_context_mods, "ly:get-context-mods", + 1, 0, 0, (SCM contextmod), + "Returns the list of context modifications stored in" + " @var{contextmod}.") { Context_mod *tr = unsmob_context_mod (contextmod); LY_ASSERT_SMOB (Context_mod, contextmod, 1); return tr->get_mods (); } -LY_DEFINE (ly_add_context_mod, - "ly:add-context-mod", - 2, 0, 0, (SCM contextmods, SCM modification), - "Adds the given context @var{modification} to the list" - " @var{contextmods} of context modifications.") +LY_DEFINE (ly_add_context_mod, "ly:add-context-mod", + 2, 0, 0, (SCM contextmods, SCM modification), + "Adds the given context @var{modification} to the list" + " @var{contextmods} of context modifications.") { Context_mod *ctxmod = unsmob_context_mod (contextmods); LY_ASSERT_SMOB (Context_mod, contextmods, 1); @@ -44,3 +42,29 @@ LY_DEFINE (ly_add_context_mod, return SCM_UNSPECIFIED; } +LY_DEFINE (ly_make_context_mod, "ly:make-context-mod", + 0, 1, 0, (SCM mod_list), + "Creates a context modification, optionally initialized" + " via the list of modifications @var{mod-list}.") +{ + if (mod_list != SCM_UNDEFINED) + { + LY_ASSERT_TYPE (ly_cheap_is_list, mod_list, 1); + return Context_mod (mod_list).smobbed_copy (); + } + else + return Context_mod ().smobbed_copy (); +} + +LY_DEFINE (ly_context_mod_apply_x, "ly:context-mod-apply!", + 2, 0, 0, (SCM context, SCM mod), + "Apply the context modification @var{mod} to @var{context}.") +{ + LY_ASSERT_SMOB (Context, context, 1); + LY_ASSERT_SMOB (Context_mod, mod, 2); + + apply_property_operations (unsmob_context (context), + unsmob_context_mod (mod)->get_mods ()); + scm_remember_upto_here_1 (context); + return SCM_UNSPECIFIED; +} diff --git a/lily/context-mod.cc b/lily/context-mod.cc index a028930c2b..cb6cf83562 100644 --- a/lily/context-mod.cc +++ b/lily/context-mod.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Reinhold Kainhofer + Copyright (C) 2010--2012 Reinhold Kainhofer LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,17 +29,23 @@ Context_mod::Context_mod (Context_mod const &s) mods_ = s.mods_; } +Context_mod::Context_mod (SCM mod_list) +{ + mods_ = scm_reverse (mod_list); +} + #include "ly-smobs.icc" IMPLEMENT_SIMPLE_SMOBS (Context_mod); IMPLEMENT_DEFAULT_EQUAL_P (Context_mod); +IMPLEMENT_TYPE_P (Context_mod, "ly:context-mod?"); int -Context_mod::print_smob (SCM smob, SCM port, scm_print_state*) +Context_mod::print_smob (SCM smob, SCM port, scm_print_state *) { Context_mod *me = (Context_mod *) SCM_CELL_WORD_1 (smob); scm_puts ("#mods_, port); + scm_display (me->get_mods (), port); scm_puts (">", port); return 1; } @@ -47,11 +53,10 @@ Context_mod::print_smob (SCM smob, SCM port, scm_print_state*) SCM Context_mod::mark_smob (SCM smob) { - ASSERT_LIVE_IS_ALLOWED (); + ASSERT_LIVE_IS_ALLOWED (smob); Context_mod *me = (Context_mod *) SCM_CELL_WORD_1 (smob); - scm_gc_mark (me->mods_); return me->mods_; } diff --git a/lily/context-property.cc b/lily/context-property.cc index 4d1de24034..1ccfe5a970 100644 --- a/lily/context-property.cc +++ b/lily/context-property.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ #include "main.hh" #include "simple-closure.hh" #include "spanner.hh" +#include "unpure-pure-container.hh" #include "warn.hh" /* @@ -32,23 +33,22 @@ */ void general_pushpop_property (Context *context, - SCM context_property, - SCM grob_property_path, - SCM new_value) + SCM context_property, + SCM grob_property_path, + SCM new_value) { if (!scm_is_symbol (context_property) || !scm_is_symbol (scm_car (grob_property_path))) { warning (_ ("need symbol arguments for \\override and \\revert")); if (do_internal_type_checking_global) - assert (false); + assert (false); } sloppy_general_pushpop_property (context, context_property, - grob_property_path, new_value); + grob_property_path, new_value); } - /* Grob descriptions (ie. alists with layout properties) are represented as a (ALIST . BASED-ON) pair, where BASED-ON is the @@ -58,18 +58,17 @@ general_pushpop_property (Context *context, Push or pop (depending on value of VAL) a single entry from a translator property list by name of PROP. GROB_PROPERTY_PATH indicates nested alists, eg. '(beamed-stem-lengths details) - */ void execute_override_property (Context *context, - SCM context_property, - SCM grob_property_path, - SCM new_value) + SCM context_property, + SCM grob_property_path, + SCM new_value) { SCM current_context_val = SCM_EOL; Context *where = context->where_defined (context_property, - ¤t_context_val); + ¤t_context_val); /* Don't mess with MIDI. @@ -103,9 +102,9 @@ execute_override_property (Context *context, if (scm_is_pair (scm_cdr (grob_property_path))) { new_value = nested_property_alist (ly_assoc_get (symbol, target_alist, - SCM_EOL), - scm_cdr (grob_property_path), - new_value); + SCM_EOL), + scm_cdr (grob_property_path), + new_value); } /* it's tempting to replace the head of the list if it's the same @@ -115,10 +114,16 @@ execute_override_property (Context *context, target_alist = scm_acons (symbol, new_value, target_alist); bool ok = true; - if (!ly_is_procedure (new_value) - && !is_simple_closure (new_value)) - ok = type_check_assignment (symbol, new_value, - ly_symbol2scm ("backend-type?")); + bool pc = is_unpure_pure_container (new_value); + SCM vals[] = {pc ? unpure_pure_container_unpure_part (new_value) : new_value, + pc ? unpure_pure_container_pure_part (new_value) : SCM_BOOL_F + }; + + for (int i = 0; i < 2; i++) + if (!ly_is_procedure (vals[i]) + && !is_simple_closure (vals[i])) + ok = ok && type_check_assignment (symbol, vals[i], + ly_symbol2scm ("backend-type?")); /* tack onto alist. We can use set_car, since @@ -136,17 +141,17 @@ execute_override_property (Context *context, */ void sloppy_general_pushpop_property (Context *context, - SCM context_property, - SCM grob_property_path, - SCM new_value) + SCM context_property, + SCM grob_property_path, + SCM new_value) { if (new_value == SCM_UNDEFINED) execute_revert_property (context, context_property, - grob_property_path); + grob_property_path); else execute_override_property (context, context_property, - grob_property_path, - new_value); + grob_property_path, + new_value); } /* @@ -154,8 +159,8 @@ sloppy_general_pushpop_property (Context *context, */ void execute_revert_property (Context *context, - SCM context_property, - SCM grob_property_path) + SCM context_property, + SCM grob_property_path) { SCM current_context_val = SCM_EOL; if (context->where_defined (context_property, ¤t_context_val) @@ -165,38 +170,38 @@ execute_revert_property (Context *context, SCM daddy = scm_cdr (current_context_val); if (!scm_is_pair (grob_property_path) - || !scm_is_symbol (scm_car (grob_property_path))) - { - programming_error ("Grob property path should be list of symbols."); - return; - } + || !scm_is_symbol (scm_car (grob_property_path))) + { + programming_error ("Grob property path should be list of symbols."); + return; + } SCM symbol = scm_car (grob_property_path); if (scm_is_pair (scm_cdr (grob_property_path))) - { - SCM current_sub_alist = ly_assoc_get (symbol, current_alist, SCM_EOL); - SCM new_val - = nested_property_revert_alist (current_sub_alist, - scm_cdr (grob_property_path)); - - if (scm_is_pair (current_alist) - && scm_caar (current_alist) == symbol - && current_alist != daddy) - current_alist = scm_cdr (current_alist); - - current_alist = scm_acons (symbol, new_val, current_alist); - scm_set_car_x (current_context_val, current_alist); - } + { + SCM current_sub_alist = ly_assoc_get (symbol, current_alist, SCM_EOL); + SCM new_val + = nested_property_revert_alist (current_sub_alist, + scm_cdr (grob_property_path)); + + if (scm_is_pair (current_alist) + && scm_caar (current_alist) == symbol + && current_alist != daddy) + current_alist = scm_cdr (current_alist); + + current_alist = scm_acons (symbol, new_val, current_alist); + scm_set_car_x (current_context_val, current_alist); + } else - { - SCM new_alist = evict_from_alist (symbol, current_alist, daddy); - - if (new_alist == daddy) - context->unset_property (context_property); - else - context->set_property (context_property, - scm_cons (new_alist, daddy)); - } + { + SCM new_alist = evict_from_alist (symbol, current_alist, daddy); + + if (new_alist == daddy) + context->unset_property (context_property); + else + context->set_property (context_property, + scm_cons (new_alist, daddy)); + } } } /* @@ -205,13 +210,13 @@ execute_revert_property (Context *context, */ void execute_pushpop_property (Context *context, - SCM context_property, - SCM grob_property, - SCM new_value) + SCM context_property, + SCM grob_property, + SCM new_value) { general_pushpop_property (context, context_property, - scm_list_1 (grob_property), - new_value); + scm_list_1 (grob_property), + new_value); } /* @@ -220,29 +225,38 @@ execute_pushpop_property (Context *context, void apply_property_operations (Context *tg, SCM pre_init_ops) { - SCM correct_order = scm_reverse (pre_init_ops); - for (SCM s = correct_order; scm_is_pair (s); s = scm_cdr (s)) + for (SCM s = pre_init_ops; scm_is_pair (s); s = scm_cdr (s)) { SCM entry = scm_car (s); SCM type = scm_car (entry); entry = scm_cdr (entry); + if (!scm_is_pair (entry)) + continue; + SCM context_prop = scm_car (entry); + if (scm_is_pair (context_prop)) + { + if (tg->is_alias (scm_car (context_prop))) + context_prop = scm_cdr (context_prop); + else + continue; + } if (type == ly_symbol2scm ("push")) - { - SCM context_prop = scm_car (entry); - SCM val = scm_cadr (entry); - SCM grob_prop_path = scm_cddr (entry); - sloppy_general_pushpop_property (tg, context_prop, grob_prop_path, val); - } + { + SCM val = scm_cadr (entry); + SCM grob_prop_path = scm_cddr (entry); + sloppy_general_pushpop_property (tg, context_prop, grob_prop_path, val); + } else if (type == ly_symbol2scm ("pop")) - { - SCM context_prop = scm_car (entry); - SCM val = SCM_UNDEFINED; - SCM grob_prop_path = scm_cdr (entry); - sloppy_general_pushpop_property (tg, context_prop, grob_prop_path, val); - } + { + SCM val = SCM_UNDEFINED; + SCM grob_prop_path = scm_cdr (entry); + sloppy_general_pushpop_property (tg, context_prop, grob_prop_path, val); + } else if (type == ly_symbol2scm ("assign")) - tg->set_property (scm_car (entry), scm_cadr (entry)); + tg->set_property (context_prop, scm_cadr (entry)); + else if (type == ly_symbol2scm ("apply")) + scm_apply_1 (context_prop, tg->self_scm (), scm_cdr (entry)); } } @@ -262,8 +276,8 @@ updated_grob_properties (Context *tg, SCM sym) SCM daddy_props = (tg->get_parent_context ()) - ? updated_grob_properties (tg->get_parent_context (), sym) - : SCM_EOL; + ? updated_grob_properties (tg->get_parent_context (), sym) + : SCM_EOL; if (!scm_is_pair (props)) { @@ -280,11 +294,11 @@ updated_grob_properties (Context *tg, SCM sym) SCM *tail = © SCM p = scm_car (props); while (p != based_on) - { - *tail = scm_cons (scm_car (p), daddy_props); - tail = SCM_CDRLOC (*tail); - p = scm_cdr (p); - } + { + *tail = scm_cons (scm_car (p), daddy_props); + tail = SCM_CDRLOC (*tail); + p = scm_cdr (p); + } scm_set_car_x (props, copy); scm_set_cdr_x (props, daddy_props); diff --git a/lily/context-scheme.cc b/lily/context-scheme.cc index 043bfaa924..64f8dd8e15 100644 --- a/lily/context-scheme.cc +++ b/lily/context-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -23,9 +23,9 @@ #include "dispatcher.hh" LY_DEFINE (ly_context_current_moment, - "ly:context-current-moment", - 1, 0, 0, (SCM context), - "Return the current moment of @var{context}.") + "ly:context-current-moment", + 1, 0, 0, (SCM context), + "Return the current moment of @var{context}.") { Context *tr = unsmob_context (context); @@ -35,10 +35,10 @@ LY_DEFINE (ly_context_current_moment, } LY_DEFINE (ly_context_id, "ly:context-id", - 1, 0, 0, (SCM context), - "Return the ID string of @var{context}," - " i.e., for @code{\\context Voice = \"one\" @dots{}}" - " return the string @code{one}.") + 1, 0, 0, (SCM context), + "Return the ID string of @var{context}," + " i.e., for @code{\\context Voice = \"one\" @dots{}}" + " return the string @code{one}.") { Context *tr = unsmob_context (context); @@ -48,10 +48,10 @@ LY_DEFINE (ly_context_id, "ly:context-id", } LY_DEFINE (ly_context_name, "ly:context-name", - 1, 0, 0, (SCM context), - "Return the name of @var{context}," - " i.e., for @code{\\context Voice = \"one\" @dots{}}" - " return the symbol @code{Voice}.") + 1, 0, 0, (SCM context), + "Return the name of @var{context}," + " i.e., for @code{\\context Voice = \"one\" @dots{}}" + " return the symbol @code{Voice}.") { LY_ASSERT_SMOB (Context, context, 1); @@ -61,9 +61,9 @@ LY_DEFINE (ly_context_name, "ly:context-name", } LY_DEFINE (ly_context_grob_definition, "ly:context-grob-definition", - 2, 0, 0, (SCM context, SCM name), - "Return the definition of @var{name} (a symbol) within" - " @var{context} as an alist.") + 2, 0, 0, (SCM context, SCM name), + "Return the definition of @var{name} (a symbol) within" + " @var{context} as an alist.") { Context *tr = unsmob_context (context); @@ -74,11 +74,11 @@ LY_DEFINE (ly_context_grob_definition, "ly:context-grob-definition", } LY_DEFINE (ly_context_pushpop_property, "ly:context-pushpop-property", - 3, 1, 0, (SCM context, SCM grob, SCM eltprop, SCM val), - "Do a single @code{\\override} or @code{\\revert} operation" - " in @var{context}. The grob definition @var{grob} is extended" - " with @var{eltprop} (if @var{val} is specified) or reverted" - " (if unspecified).") + 3, 1, 0, (SCM context, SCM grob, SCM eltprop, SCM val), + "Do a single @code{\\override} or @code{\\revert} operation" + " in @var{context}. The grob definition @var{grob} is extended" + " with @var{eltprop} (if @var{val} is specified) or reverted" + " (if unspecified).") { Context *tg = unsmob_context (context); @@ -106,9 +106,9 @@ LY_DEFINE (ly_context_property, "ly:context-property", } LY_DEFINE (ly_context_set_property_x, "ly:context-set-property!", - 3, 0, 0, (SCM context, SCM name, SCM val), - "Set value of property @var{name} in context @var{context}" - " to @var{val}.") + 3, 0, 0, (SCM context, SCM name, SCM val), + "Set value of property @var{name} in context @var{context}" + " to @var{val}.") { LY_ASSERT_SMOB (Context, context, 1); LY_ASSERT_TYPE (ly_is_symbol, name, 2); @@ -121,9 +121,9 @@ LY_DEFINE (ly_context_set_property_x, "ly:context-set-property!", } LY_DEFINE (ly_context_property_where_defined, "ly:context-property-where-defined", - 2, 0, 0, (SCM context, SCM name), - "Return the context above @var{context}" - " where @var{name} is defined.") + 2, 0, 0, (SCM context, SCM name), + "Return the context above @var{context}" + " where @var{name} is defined.") { LY_ASSERT_SMOB (Context, context, 1); LY_ASSERT_TYPE (ly_is_symbol, name, 2); @@ -139,8 +139,8 @@ LY_DEFINE (ly_context_property_where_defined, "ly:context-property-where-defined } LY_DEFINE (ly_context_unset_property, "ly:context-unset-property", 2, 0, 0, - (SCM context, SCM name), - "Unset value of property @var{name} in context @var{context}.") + (SCM context, SCM name), + "Unset value of property @var{name} in context @var{context}.") { LY_ASSERT_SMOB (Context, context, 1); LY_ASSERT_TYPE (ly_is_symbol, name, 2); @@ -151,8 +151,8 @@ LY_DEFINE (ly_context_unset_property, "ly:context-unset-property", 2, 0, 0, } LY_DEFINE (ly_context_parent, "ly:context-parent", - 1, 0, 0, (SCM context), - "Return the parent of @var{context}, @code{#f} if none.") + 1, 0, 0, (SCM context), + "Return the parent of @var{context}, @code{#f} if none.") { LY_ASSERT_SMOB (Context, context, 1); Context *tr = unsmob_context (context); @@ -166,9 +166,9 @@ LY_DEFINE (ly_context_parent, "ly:context-parent", /* FIXME: todo: should support translator IDs, and creation? */ LY_DEFINE (ly_context_find, "ly:context-find", - 2, 0, 0, (SCM context, SCM name), - "Find a parent of @var{context} that has name or alias @var{name}." - " Return @code{#f} if not found.") + 2, 0, 0, (SCM context, SCM name), + "Find a parent of @var{context} that has name or alias @var{name}." + " Return @code{#f} if not found.") { LY_ASSERT_SMOB (Context, context, 1); LY_ASSERT_TYPE (ly_is_symbol, name, 2); @@ -177,7 +177,7 @@ LY_DEFINE (ly_context_find, "ly:context-find", while (tr) { if (tr->is_alias (name)) - return tr->self_scm (); + return tr->self_scm (); tr = tr->get_parent_context (); } @@ -185,8 +185,8 @@ LY_DEFINE (ly_context_find, "ly:context-find", } LY_DEFINE (ly_context_now, "ly:context-now", - 1, 0, 0, (SCM context), - "Return @code{now-moment} of context @var{context}.") + 1, 0, 0, (SCM context), + "Return @code{now-moment} of context @var{context}.") { LY_ASSERT_SMOB (Context, context, 1); Context *ctx = unsmob_context (context); @@ -211,3 +211,15 @@ LY_DEFINE (ly_context_events_below, "ly:context-events-below", Context *ctx = unsmob_context (context); return ctx->events_below ()->self_scm (); } + +LY_DEFINE (ly_make_event_class, "ly:make-event-class", + 2, 0, 0, (SCM context, SCM type), + "Make an event class (a list of types) from the given @var{type}" + " within the global context containing @var{context}.") +{ + LY_ASSERT_SMOB (Context, context, 1); + LY_ASSERT_TYPE (ly_is_symbol, type, 2); + + Context *ctx = unsmob_context (context); + return ctx->make_event_class (type); +} diff --git a/lily/context-specced-music-iterator.cc b/lily/context-specced-music-iterator.cc index b02d023545..e33a8806a6 100644 --- a/lily/context-specced-music-iterator.cc +++ b/lily/context-specced-music-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,6 @@ #include "context.hh" #include "music.hh" - class Context_specced_music_iterator : public Music_wrapper_iterator { public: diff --git a/lily/context.cc b/lily/context.cc index 0d7fbe35f6..4d949e8379 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,8 +35,8 @@ bool Context::is_removable () const { - return context_list_ == SCM_EOL && ! iterator_count_ - && !dynamic_cast (daddy_context_); + return context_list_ == SCM_EOL && ! client_count_ + && !dynamic_cast (daddy_context_); } void @@ -48,12 +48,12 @@ Context::check_removal () ctx->check_removal (); if (ctx->is_removable ()) - { - recurse_over_translators (ctx, &Translator::finalize, - &Translator_group::finalize, - UP); - send_stream_event (ctx, "RemoveContext", 0, 0); - } + { + recurse_over_translators (ctx, &Translator::finalize, + &Translator_group::finalize, + UP); + send_stream_event (ctx, "RemoveContext", 0, 0); + } } } @@ -72,18 +72,17 @@ void Context::add_context (Context *child) { context_list_ = ly_append2 (context_list_, - scm_cons (child->self_scm (), SCM_EOL)); + scm_cons (child->self_scm (), SCM_EOL)); child->daddy_context_ = this; this->events_below_->register_as_listener (child->events_below_); } - Context::Context () { daddy_context_ = 0; aliases_ = SCM_EOL; - iterator_count_ = 0; + client_count_ = 0; implementation_ = 0; properties_scm_ = SCM_EOL; accepts_list_ = SCM_EOL; @@ -92,6 +91,7 @@ Context::Context () definition_mods_ = SCM_EOL; event_source_ = 0; events_below_ = 0; + ancestor_lookup_ = SCM_UNDEFINED; smobify_self (); @@ -121,18 +121,18 @@ Context::create_unique_context (SCM name, string id, SCM operations) // Iterate through the path and create all of the implicit contexts. for (vsize i = 0; i < path.size (); i++) - { - SCM ops = SCM_EOL; - string id_str = "\\new"; - if (i == path.size () - 1) - { - ops = operations; - id_str = id; - } - current = current->create_context (path[i], - id_str, - ops); - } + { + SCM ops = SCM_EOL; + string id_str = "\\new"; + if (i == path.size () - 1) + { + ops = operations; + id_str = id; + } + current = current->create_context (path[i], + id_str, + ops); + } return current; } @@ -147,7 +147,7 @@ Context::create_unique_context (SCM name, string id, SCM operations) else { warning (_f ("cannot find or create new `%s'", - ly_symbol2string (name).c_str ())); + ly_symbol2string (name).c_str ())); ret = 0; } return ret; @@ -172,7 +172,7 @@ Context::find_create_context (SCM n, string id, SCM operations) return tg; } - vector path = path_to_acceptable_context (n); + vector path = path_to_acceptable_context (n); if (path.size ()) { @@ -180,17 +180,17 @@ Context::find_create_context (SCM n, string id, SCM operations) // start at 1. The first one (index 0) will be us. for (vsize i = 0; i < path.size (); i++) - { - SCM ops = (i == path.size () -1) ? operations : SCM_EOL; + { + SCM ops = (i == path.size () - 1) ? operations : SCM_EOL; - string this_id = ""; - if (i == path.size () -1) - this_id = id; + string this_id = ""; + if (i == path.size () - 1) + this_id = id; - current = current->create_context (path[i], - this_id, - ops); - } + current = current->create_context (path[i], + this_id, + ops); + } return current; } @@ -205,7 +205,7 @@ Context::find_create_context (SCM n, string id, SCM operations) else { warning (_f ("cannot find or create `%s' called `%s'", - ly_symbol2string (n).c_str (), id)); + ly_symbol2string (n).c_str (), id)); ret = 0; } return ret; @@ -223,16 +223,16 @@ void Context::set_property_from_event (SCM sev) { Stream_event *ev = unsmob_stream_event (sev); - + SCM sym = ev->get_property ("symbol"); if (scm_is_symbol (sym)) { SCM val = ev->get_property ("value"); bool ok = true; if (val != SCM_EOL) - ok = type_check_assignment (sym, val, ly_symbol2scm ("translation-type?")); + ok = type_check_assignment (sym, val, ly_symbol2scm ("translation-type?")); if (ok) - set_property (sym, val); + set_property (sym, val); } } @@ -241,7 +241,7 @@ void Context::unset_property_from_event (SCM sev) { Stream_event *ev = unsmob_stream_event (sev); - + SCM sym = ev->get_property ("symbol"); type_check_assignment (sym, SCM_EOL, ly_symbol2scm ("translation-type?")); unset_property (sym); @@ -256,45 +256,45 @@ void Context::create_context_from_event (SCM sev) { Stream_event *ev = unsmob_stream_event (sev); - + string id = ly_scm2string (ev->get_property ("id")); SCM ops = ev->get_property ("ops"); SCM type_scm = ev->get_property ("type"); string type = ly_symbol2string (type_scm); - - vector path = path_to_acceptable_context (type_scm); + + vector path = path_to_acceptable_context (type_scm); if (path.size () != 1) { - programming_error (_f ("Invalid CreateContext event: Cannot create %s context", type.c_str ())); + programming_error (to_string ("Invalid CreateContext event: Cannot create %s context", type.c_str ())); return; } Context_def *cdef = path[0]; - + Context *new_context = cdef->instantiate (ops); new_context->id_string_ = id; - + /* Register various listeners: - Make the new context hear events that universally affect contexts - connect events_below etc. properly */ /* We want to be the first ones to hear our own events. Therefore, wait before registering events_below_ */ new_context->event_source ()-> - add_listener (GET_LISTENER (new_context->create_context_from_event), - ly_symbol2scm ("CreateContext")); + add_listener (GET_LISTENER (new_context->create_context_from_event), + ly_symbol2scm ("CreateContext")); new_context->event_source ()-> - add_listener (GET_LISTENER (new_context->remove_context), - ly_symbol2scm ("RemoveContext")); + add_listener (GET_LISTENER (new_context->remove_context), + ly_symbol2scm ("RemoveContext")); new_context->event_source ()-> - add_listener (GET_LISTENER (new_context->change_parent), - ly_symbol2scm ("ChangeParent")); + add_listener (GET_LISTENER (new_context->change_parent), + ly_symbol2scm ("ChangeParent")); new_context->event_source ()-> - add_listener (GET_LISTENER (new_context->set_property_from_event), - ly_symbol2scm ("SetProperty")); + add_listener (GET_LISTENER (new_context->set_property_from_event), + ly_symbol2scm ("SetProperty")); new_context->event_source ()-> - add_listener (GET_LISTENER (new_context->unset_property_from_event), - ly_symbol2scm ("UnsetProperty")); + add_listener (GET_LISTENER (new_context->unset_property_from_event), + ly_symbol2scm ("UnsetProperty")); new_context->events_below_->register_as_listener (new_context->event_source_); this->add_context (new_context); @@ -309,40 +309,40 @@ Context::create_context_from_event (SCM sev) apply_property_operations (new_context, ops); send_stream_event (this, "AnnounceNewContext", 0, - ly_symbol2scm ("context"), new_context->self_scm (), - ly_symbol2scm ("creator"), sev); + ly_symbol2scm ("context"), new_context->self_scm (), + ly_symbol2scm ("creator"), sev); } -vector +vector Context::path_to_acceptable_context (SCM name) const { // The 'accepts elements in definition_mods_ is a list of ('accepts string), // but the Context_def expects to see elements of the form ('accepts symbol). SCM accepts = SCM_EOL; - for (SCM s = scm_reverse (definition_mods_); scm_is_pair (s); s = scm_cdr (s)) + for (SCM s = definition_mods_; scm_is_pair (s); s = scm_cdr (s)) if (scm_caar (s) == ly_symbol2scm ("accepts")) { - SCM elt = scm_list_2 (scm_caar (s), scm_string_to_symbol (scm_cadar (s))); - accepts = scm_cons (elt, accepts); + SCM elt = scm_list_2 (scm_caar (s), scm_string_to_symbol (scm_cadar (s))); + accepts = scm_cons (elt, accepts); } return unsmob_context_def (definition_)->path_to_acceptable_context (name, - get_output_def (), - accepts); - + get_output_def (), + scm_reverse_x (accepts, SCM_EOL)); + } Context * Context::create_context (Context_def *cdef, - string id, - SCM ops) + string id, + SCM ops) { infant_event_ = 0; /* TODO: This is fairly misplaced. We can fix this when we have taken out all iterator specific stuff from the Context class */ event_source_-> - add_listener (GET_LISTENER (acknowledge_infant), - ly_symbol2scm ("AnnounceNewContext")); + add_listener (GET_LISTENER (acknowledge_infant), + ly_symbol2scm ("AnnounceNewContext")); /* The CreateContext creates a new context, and sends an announcement of the new context through another event. That event will be stored in infant_event_ to create a return value. */ @@ -351,8 +351,8 @@ Context::create_context (Context_def *cdef, ly_symbol2scm ("type"), cdef->get_context_name (), ly_symbol2scm ("id"), ly_string2scm (id)); event_source_-> - remove_listener (GET_LISTENER (acknowledge_infant), - ly_symbol2scm ("AnnounceNewContext")); + remove_listener (GET_LISTENER (acknowledge_infant), + ly_symbol2scm ("AnnounceNewContext")); assert (infant_event_); SCM infant_scm = infant_event_->get_property ("context"); @@ -375,8 +375,8 @@ SCM Context::default_child_context_name () const { return scm_is_pair (accepts_list_) - ? scm_car (accepts_list_) - : SCM_EOL; + ? scm_car (accepts_list_) + : SCM_EOL; } bool @@ -396,10 +396,10 @@ Context::get_default_interpreter (string context_id) string name = ly_symbol2string (nm); Context_def *t = unsmob_context_def (st); if (!t) - { - warning (_f ("cannot find or create: `%s'", name.c_str ())); - t = unsmob_context_def (this->definition_); - } + { + warning (_f ("cannot find or create: `%s'", name.c_str ())); + t = unsmob_context_def (this->definition_); + } Context *tg = create_context (t, context_id, SCM_EOL); return tg->get_default_interpreter (context_id); @@ -453,10 +453,10 @@ be called from any other place than the send_stream_event macro. void Context::internal_send_stream_event (SCM type, Input *origin, SCM props[]) { - Stream_event *e = new Stream_event (type, origin); + Stream_event *e = new Stream_event (make_event_class (type), origin); for (int i = 0; props[i]; i += 2) { - e->set_property (props[i], props[i+1]); + e->set_property (props[i], props[i + 1]); } event_source_->broadcast (e); e->unprotect (); @@ -482,7 +482,7 @@ Context::add_alias (SCM sym) /* we don't (yet) instrument context properties */ void -Context::instrumented_set_property (SCM sym, SCM val, const char*, int, const char*) +Context::instrumented_set_property (SCM sym, SCM val, const char *, int, const char *) { internal_set_property (sym, val); } @@ -546,12 +546,12 @@ Context::disconnect_from_parent () */ Context * find_context_below (Context *where, - SCM type, string id) + SCM type, string id) { if (where->is_alias (type)) { if (id == "" || where->id_string () == id) - return where; + return where; } Context *found = 0; @@ -594,6 +594,14 @@ Context::get_score_context () const return 0; } +SCM +Context::make_event_class (SCM event_type) +{ + if (SCM_UNBNDP (ancestor_lookup_)) + ancestor_lookup_ = get_global_context ()->ancestor_lookup_; + return scm_hashq_ref (ancestor_lookup_, event_type, SCM_EOL); +} + Output_def * Context::get_output_def () const { @@ -662,6 +670,8 @@ Context::mark_smob (SCM sm) if (me->events_below_) scm_gc_mark (me->events_below_->self_scm ()); + scm_gc_mark (me->ancestor_lookup_); + return me->properties_scm_; } @@ -712,11 +722,11 @@ measure_position (Context const *context) m = *unsmob_moment (sm); if (m.main_part_ < Rational (0)) - { - Rational length (measure_length (context)); - while (m.main_part_ < Rational (0)) - m.main_part_ += length; - } + { + Rational length (measure_length (context)); + while (m.main_part_ < Rational (0)) + m.main_part_ += length; + } } return m; @@ -730,9 +740,9 @@ measure_position (Context const *context, Duration const *dur) Moment pos = measure_position (context); Rational dur_length = dur ? dur->get_length () : Rational (0); - Moment end_pos = pos.grace_part_ < Rational(0) - ? Moment(pos.main_part_, pos.grace_part_ + dur_length) - : Moment(pos.main_part_ + dur_length, 0); + Moment end_pos = pos.grace_part_ < Rational (0) + ? Moment (pos.main_part_, pos.grace_part_ + dur_length) + : Moment (pos.main_part_ + dur_length, 0); return end_pos; } @@ -751,7 +761,6 @@ measure_number (Context const *context) return bn; } - void set_context_property_on_children (Context *trans, SCM sym, SCM val) { @@ -781,7 +790,7 @@ check_repeat_count_visibility (Context const *context, SCM count) { SCM proc = context->get_property ("repeatCountVisibility"); return (ly_is_procedure (proc) - && to_boolean (scm_call_2 (proc, - count, - context->self_scm ()))); + && to_boolean (scm_call_2 (proc, + count, + context->self_scm ()))); } diff --git a/lily/control-track-performer.cc b/lily/control-track-performer.cc index 611bd6b48b..84f8044b47 100644 --- a/lily/control-track-performer.cc +++ b/lily/control-track-performer.cc @@ -21,7 +21,6 @@ protected: virtual void acknowledge_audio_element (Audio_element_info info); }; - Control_track_performer::Control_track_performer () { control_track_ = 0; @@ -30,11 +29,11 @@ Control_track_performer::Control_track_performer () void Control_track_performer::acknowledge_audio_element (Audio_element_info info) { - if (Audio_tempo *tempo = dynamic_cast (info.elem_)) + if (Audio_tempo *tempo = dynamic_cast (info.elem_)) { control_track_->add_audio_item (tempo); } - if (Audio_time_signature * sig = dynamic_cast (info.elem_)) + if (Audio_time_signature *sig = dynamic_cast (info.elem_)) { control_track_->add_audio_item (sig); } @@ -47,7 +46,7 @@ Control_track_performer::add_text (Audio_text::Type text_type, string str) control_track_->add_audio_item (text); announce_element (Audio_element_info (text, 0)); - + } void @@ -57,22 +56,22 @@ Control_track_performer::initialize () announce_element (Audio_element_info (control_track_, 0)); string id_string = String_convert::pad_to (gnu_lilypond_version_string (), 30); - + add_text (Audio_text::TRACK_NAME, "control track"); add_text (Audio_text::TEXT, "creator: "); add_text (Audio_text::TEXT, id_string); } ADD_TRANSLATOR (Control_track_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/cue-clef-engraver.cc b/lily/cue-clef-engraver.cc index c597b368e1..dad382a27a 100644 --- a/lily/cue-clef-engraver.cc +++ b/lily/cue-clef-engraver.cc @@ -1,9 +1,9 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Mats Bengtsson - Copyright (C) 2010--2011 Reinhold Kainhofer + Copyright (C) 2010--2012 Reinhold Kainhofer LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ using namespace std; #include "item.hh" #include "context.hh" -#include "bar-line.hh" #include "staff-symbol-referencer.hh" #include "engraver.hh" #include "direction.hh" @@ -112,11 +111,11 @@ Cue_clef_engraver::create_octavate_eight (SCM oct) abs_oct = abs (abs_oct) + 1; SCM txt = scm_number_to_string (scm_from_int (abs_oct), - scm_from_int (10)); + scm_from_int (10)); g->set_property ("text", - scm_list_n (ly_lily_module_constant ("vcenter-markup"), - txt, SCM_UNDEFINED)); + scm_list_n (ly_lily_module_constant ("vcenter-markup"), + txt, SCM_UNDEFINED)); Side_position_interface::add_support (g, clef_); g->set_parent (clef_, Y_AXIS); @@ -136,7 +135,7 @@ Cue_clef_engraver::create_clef () clef_ = c; SCM cpos = get_property ("cueClefPosition"); if (scm_is_number (cpos)) - clef_->set_property ("staff-position", cpos); + clef_->set_property ("staff-position", cpos); create_octavate_eight (get_property ("cueClefOctavation")); } @@ -150,7 +149,7 @@ Cue_clef_engraver::create_end_clef () clef_ = make_item ("CueEndClef", SCM_EOL); SCM cpos = get_property ("clefPosition"); if (scm_is_number (cpos)) - clef_->set_property ("staff-position", cpos); + clef_->set_property ("staff-position", cpos); create_octavate_eight (get_property ("clefOctavation")); } @@ -175,11 +174,11 @@ Cue_clef_engraver::inspect_clef_properties () { set_glyph (); if (scm_is_string (glyph)) - { - create_clef (); - if (clef_) - clef_->set_property ("non-default", SCM_BOOL_T); - } + { + create_clef (); + if (clef_) + clef_->set_property ("non-default", SCM_BOOL_T); + } else create_end_clef (); @@ -197,10 +196,10 @@ Cue_clef_engraver::stop_translation_timestep () { SCM vis = 0; if (to_boolean (clef_->get_property ("non-default"))) - vis = get_property ("explicitCueClefVisibility"); + vis = get_property ("explicitCueClefVisibility"); if (vis) - clef_->set_property ("break-visibility", vis); + clef_->set_property ("break-visibility", vis); clef_ = 0; octavate_ = 0; @@ -209,22 +208,22 @@ Cue_clef_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Cue_clef_engraver, bar_line); ADD_TRANSLATOR (Cue_clef_engraver, - /* doc */ - "Determine and set reference point for pitches in cued voices.", - - /* create */ - "CueClef " - "CueEndClef " - "OctavateEight ", - - /* read */ - "cueClefGlyph " - "cueClefOctavation " - "cueClefPosition " - "explicitCueClefVisibility " - "middleCCuePosition " - "clefOctavation ", - - /* write */ - "" - ); + /* doc */ + "Determine and set reference point for pitches in cued voices.", + + /* create */ + "CueClef " + "CueEndClef " + "OctavateEight ", + + /* read */ + "cueClefGlyph " + "cueClefOctavation " + "cueClefPosition " + "explicitCueClefVisibility " + "middleCCuePosition " + "clefOctavation ", + + /* write */ + "" + ); diff --git a/lily/custos-engraver.cc b/lily/custos-engraver.cc index f1111e829e..6b915f5cb4 100644 --- a/lily/custos-engraver.cc +++ b/lily/custos-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Juergen Reuter , + Copyright (C) 2000--2012 Juergen Reuter , Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -19,7 +19,6 @@ */ #include "engraver.hh" -#include "bar-line.hh" #include "item.hh" #include "note-head.hh" #include "pitch.hh" @@ -49,7 +48,7 @@ public: private: Item *create_custos (); bool custos_permitted_; - vector custodes_; + vector custodes_; vector pitches_; }; @@ -89,12 +88,12 @@ Custos_engraver::acknowledge_note_head (Grob_info info) { /* - ideally, we'd do custos->set_parent (Y_AXIS, notehead), - but since the note head lives on the other system, we can't + ideally, we'd do custos->set_parent (Y_AXIS, notehead), + but since the note head lives on the other system, we can't - So we copy the position from the note head pitch. We - don't look at the staff-position, since we can't be sure - whether Clef_engraver already applied a vertical shift. + So we copy the position from the note head pitch. We + don't look at the staff-position, since we can't be sure + whether Clef_engraver already applied a vertical shift. */ pitches_.push_back (*unsmob_pitch (ev->get_property ("pitch"))); } @@ -109,17 +108,17 @@ Custos_engraver::process_acknowledged () if (custos_permitted_) { for (vsize i = pitches_.size (); i--;) - { - Item *c = create_custos (); + { + Item *c = create_custos (); - int p = pitches_[i].steps (); - SCM c0 = get_property ("middleCPosition"); - if (scm_is_number (c0)) - p += scm_to_int (c0); + int p = pitches_[i].steps (); + SCM c0 = get_property ("middleCPosition"); + if (scm_is_number (c0)) + p += scm_to_int (c0); - c->set_property ("staff-position", - scm_from_int (p)); - } + c->set_property ("staff-position", + scm_from_int (p)); + } pitches_.clear (); } @@ -147,15 +146,15 @@ ADD_ACKNOWLEDGER (Custos_engraver, bar); ADD_ACKNOWLEDGER (Custos_engraver, note_head); ADD_TRANSLATOR (Custos_engraver, - /* doc */ - "Engrave custodes.", + /* doc */ + "Engrave custodes.", - /* create */ - "Custos ", + /* create */ + "Custos ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/custos.cc b/lily/custos.cc index f312e4a8ab..1366202f72 100644 --- a/lily/custos.cc +++ b/lily/custos.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Juergen Reuter + Copyright (C) 2000--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -62,7 +62,6 @@ Custos::print (SCM smob) = to_dir (me->get_property ("neutral-direction")); int pos = Staff_symbol_referencer::get_rounded_position (me); - int sz = Staff_symbol_referencer::line_count (me) - 1; string font_char = "custodes." + style + "."; if (pos < neutral_pos) @@ -77,7 +76,7 @@ Custos::print (SCM smob) font_char += "d"; if (adjust) - font_char += (((pos ^ sz) & 0x1) == 0) ? "1" : "0"; + font_char += Staff_symbol_referencer::on_line (me, pos) ? "1" : "0"; else font_char += "2"; @@ -93,12 +92,12 @@ Custos::print (SCM smob) } ADD_INTERFACE (Custos, - "A custos object. @code{style} can have four valid values:" - " @code{mensural}, @code{vaticana}, @code{medicaea}, and" - " @code{hufnagel}. @code{mensural} is the default style.", - - /* properties */ - "style " - "neutral-position " - "neutral-direction " - ); + "A custos object. @code{style} can have four valid values:" + " @code{mensural}, @code{vaticana}, @code{medicaea}, and" + " @code{hufnagel}. @code{mensural} is the default style.", + + /* properties */ + "style " + "neutral-position " + "neutral-direction " + ); diff --git a/lily/default-bar-line-engraver.cc b/lily/default-bar-line-engraver.cc index 5bd1232e30..3b5555f581 100644 --- a/lily/default-bar-line-engraver.cc +++ b/lily/default-bar-line-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,25 +38,25 @@ public: #include "translator.icc" ADD_TRANSLATOR (Default_bar_line_engraver, - /* doc */ - "This engraver determines what kind of automatic bar lines" - " should be produced, and sets @code{whichBar} accordingly." - " It should be at the same level as @ref{Timing_translator}.", - - /* create */ - "", - - /* read */ - "automaticBars " - "barAlways " - "defaultBarType " - "measureLength " - "whichBar " - "measurePosition ", - - /* write */ - "automaticBars " - ); + /* doc */ + "This engraver determines what kind of automatic bar lines" + " should be produced, and sets @code{whichBar} accordingly." + " It should be at the same level as @ref{Timing_translator}.", + + /* create */ + "", + + /* read */ + "automaticBars " + "barAlways " + "defaultBarType " + "measureLength " + "whichBar " + "measurePosition ", + + /* write */ + "automaticBars " + ); Default_bar_line_engraver::Default_bar_line_engraver () { @@ -76,18 +76,18 @@ Default_bar_line_engraver::start_translation_timestep () Moment mp = measure_position (context ()); bool start_of_measure = (last_moment_.main_part_ != now.main_part_ - && !mp.main_part_); + && !mp.main_part_); if (!scm_is_string (which) && to_boolean (automatic_bars)) { SCM always = get_property ("barAlways"); if ((start_of_measure && last_moment_.main_part_ >= Moment (0)) - || to_boolean (always)) - { - /* should this work, or be junked? See input/bugs/no-bars.ly */ - which = get_property ("defaultBarType"); - } + || to_boolean (always)) + { + /* should this work, or be junked? See input/bugs/no-bars.ly */ + which = get_property ("defaultBarType"); + } } context ()->set_property ("whichBar", which); diff --git a/lily/dimension-cache.cc b/lily/dimension-cache.cc index 8f0022957a..2d2fce49f3 100644 --- a/lily/dimension-cache.cc +++ b/lily/dimension-cache.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include "dimension-cache.hh" #include "warn.hh" diff --git a/lily/dimensions-scheme.cc b/lily/dimensions-scheme.cc index 3524faf49b..6d3b00efe7 100644 --- a/lily/dimensions-scheme.cc +++ b/lily/dimensions-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,46 +22,46 @@ #include "warn.hh" LY_DEFINE (ly_pt, "ly:pt", - 1, 0, 0, (SCM num), - "@var{num} printer points.") + 1, 0, 0, (SCM num), + "@var{num} printer points.") { LY_ASSERT_TYPE (scm_is_number, num, 1); return scm_from_double (point_constant - * scm_to_double (num)); + * scm_to_double (num)); } LY_DEFINE (ly_cm, "ly:cm", - 1, 0, 0, (SCM num), - "@var{num} cm.") + 1, 0, 0, (SCM num), + "@var{num} cm.") { LY_ASSERT_TYPE (scm_is_number, num, 1); return scm_from_double (cm_constant - * scm_to_double (num)); + * scm_to_double (num)); } LY_DEFINE (ly_inch, "ly:inch", - 1, 0, 0, (SCM num), - "@var{num} inches.") + 1, 0, 0, (SCM num), + "@var{num} inches.") { LY_ASSERT_TYPE (scm_is_number, num, 1); return scm_from_double (inch_constant - * scm_to_double (num)); + * scm_to_double (num)); } LY_DEFINE (ly_mm, "ly:mm", - 1, 0, 0, (SCM num), - "@var{num} mm.") + 1, 0, 0, (SCM num), + "@var{num} mm.") { LY_ASSERT_TYPE (scm_is_number, num, 1); return scm_from_double (mm_constant - * scm_to_double (num)); + * scm_to_double (num)); } LY_DEFINE (ly_bp, "ly:bp", - 1, 0, 0, (SCM num), - "@var{num} bigpoints (1/72th inch).") + 1, 0, 0, (SCM num), + "@var{num} bigpoints (1/72th inch).") { LY_ASSERT_TYPE (scm_is_number, num, 1); return scm_from_double (bigpoint_constant - * scm_to_double (num)); + * scm_to_double (num)); } diff --git a/lily/directional-element-interface.cc b/lily/directional-element-interface.cc index 1f7a620129..cd8d2c4d98 100644 --- a/lily/directional-element-interface.cc +++ b/lily/directional-element-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ get_grob_direction (Grob *me) if (d == ly_symbol2scm ("calculation-in-progress")) { programming_error ("Grob direction requested while calculation in" - " progress. "); + " progress."); return UP; } if (!is_direction (d)) diff --git a/lily/dispatcher-scheme.cc b/lily/dispatcher-scheme.cc index bd928173d4..13854b26d7 100644 --- a/lily/dispatcher-scheme.cc +++ b/lily/dispatcher-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Erik Sandberg + Copyright (C) 2006--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,39 +20,39 @@ #include "dispatcher.hh" LY_DEFINE (ly_make_dispatcher, "ly:make-dispatcher", - 0, 0, 0, (), - "Return a newly created dispatcher.") + 0, 0, 0, (), + "Return a newly created dispatcher.") { return (new Dispatcher ())->unprotect (); } LY_DEFINE (ly_connect_dispatchers, "ly:connect-dispatchers", - 2, 0, 0, (SCM to, SCM from), - "Make the dispatcher @var{to} listen to events from @var{from}.") + 2, 0, 0, (SCM to, SCM from), + "Make the dispatcher @var{to} listen to events from @var{from}.") { Dispatcher *t = unsmob_dispatcher (to); Dispatcher *f = unsmob_dispatcher (from); - - LY_ASSERT_SMOB (Dispatcher, to, 1); - LY_ASSERT_SMOB (Dispatcher, from, 2); + + LY_ASSERT_SMOB (Dispatcher, to, 1); + LY_ASSERT_SMOB (Dispatcher, from, 2); t->register_as_listener (f); - return SCM_UNDEFINED; + return SCM_UNSPECIFIED; } LY_DEFINE (ly_add_listener, "ly:add-listener", - 2, 0, 1, (SCM list, SCM disp, SCM cl), - "Add the listener @var{list} to the dispatcher @var{disp}." - " Whenever @var{disp} hears an event of class @var{cl}," - " it is forwarded to @var{list}.") + 2, 0, 1, (SCM list, SCM disp, SCM cl), + "Add the listener @var{list} to the dispatcher @var{disp}." + " Whenever @var{disp} hears an event of class @var{cl}," + " it is forwarded to @var{list}.") { Listener *l = unsmob_listener (list); Dispatcher *d = unsmob_dispatcher (disp); - LY_ASSERT_SMOB (Listener, list, 1); - LY_ASSERT_SMOB (Dispatcher, disp, 2); - + LY_ASSERT_SMOB (Listener, list, 1); + LY_ASSERT_SMOB (Dispatcher, disp, 2); + for (int arg = SCM_ARG3; scm_is_pair (cl); cl = scm_cdr (cl), arg++) { SCM sym = scm_car (cl); @@ -60,19 +60,48 @@ LY_DEFINE (ly_add_listener, "ly:add-listener", d->add_listener (*l, sym); } - return SCM_UNDEFINED; + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_listened_event_types, "ly:listened-event-types", + 1, 0, 0, (SCM disp), + "Return a list of all event types that @var{disp} listens" + " to.") +{ + LY_ASSERT_SMOB (Dispatcher, disp, 1); + + SCM result = unsmob_dispatcher (disp)->listened_types (); + + scm_remember_upto_here_1 (disp); + + return result; +} + +LY_DEFINE (ly_listened_event_class_p, "ly:listened-event-class?", + 2, 0, 0, (SCM disp, SCM cl), + "Does @var{disp} listen to any event type in the list" + " @var{cl}?") +{ + LY_ASSERT_SMOB (Dispatcher, disp, 1); + LY_ASSERT_TYPE (scm_is_pair, cl, 2); + + bool result = unsmob_dispatcher (disp)->is_listened_class (cl); + + scm_remember_upto_here_1 (disp); + + return scm_from_bool (result); } LY_DEFINE (ly_broadcast, "ly:broadcast", - 2, 0, 0, (SCM disp, SCM ev), - "Send the stream event @var{ev} to the dispatcher @var{disp}.") + 2, 0, 0, (SCM disp, SCM ev), + "Send the stream event @var{ev} to the dispatcher @var{disp}.") { Dispatcher *d = unsmob_dispatcher (disp); Stream_event *e = unsmob_stream_event (ev); - + LY_ASSERT_SMOB (Dispatcher, disp, 1); - LY_ASSERT_SMOB (Stream_event, ev, 2); + LY_ASSERT_SMOB (Stream_event, ev, 2); d->broadcast (e); - return SCM_UNDEFINED; + return SCM_UNSPECIFIED; } diff --git a/lily/dispatcher.cc b/lily/dispatcher.cc index 856090fdb1..0d899f94ba 100644 --- a/lily/dispatcher.cc +++ b/lily/dispatcher.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Erik Sandberg + Copyright (C) 2005--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,11 +54,12 @@ Dispatcher::mark_smob (SCM sm) } int -Dispatcher::print_smob (SCM s, SCM p, scm_print_state*) +Dispatcher::print_smob (SCM s, SCM p, scm_print_state *) { Dispatcher *me = (Dispatcher *) SCM_CELL_WORD_1 (s); scm_puts ("#listeners_), p); + scm_write (scm_call_1 (ly_lily_module_constant ("hash-table->alist"), + me->listeners_), p); scm_puts (">", p); return 1; } @@ -76,20 +77,16 @@ void Dispatcher::dispatch (SCM sev) { Stream_event *ev = unsmob_stream_event (sev); - SCM class_symbol = ev->get_property ("class"); - if (!scm_symbol_p (class_symbol)) - { - warning (_ ("Event class should be a symbol")); - return; - } - - SCM class_list = scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), class_symbol); + SCM class_list = ev->get_property ("class"); if (!scm_is_pair (class_list)) { - ev->origin ()->warning (_f ("Unknown event class %s", ly_symbol2string (class_symbol).c_str ())); + ev->origin ()->warning (_ ("Event class should be a list")); return; } + +#if 0 bool sent = false; +#endif int num_classes = scm_ilength (class_list); /* @@ -109,23 +106,23 @@ Dispatcher::dispatch (SCM sev) The first step is to collect all listener lists and to initially insert them in the priority queue. */ - struct { int prio; SCM list; } lists[num_classes+1]; + struct { int prio; SCM list; } lists[num_classes + 1]; int i = 0; for (SCM cl = class_list; scm_is_pair (cl); cl = scm_cdr (cl)) { SCM list = scm_hashq_ref (listeners_, scm_car (cl), SCM_EOL); if (!scm_is_pair (list)) - num_classes--; + num_classes--; else - { + { // bubblesort. int prio = scm_to_int (scm_caar (list)); - int j; - for (j = i; j > 0 && lists[j-1].prio > prio; j--) - lists[j] = lists[j-1]; - lists[j].prio = prio; - lists[j].list = list; - i++; + int j; + for (j = i; j > 0 && lists[j - 1].prio > prio; j--) + lists[j] = lists[j - 1]; + lists[j].prio = prio; + lists[j].list = list; + i++; } } lists[num_classes].prio = INT_MAX; @@ -148,23 +145,56 @@ Dispatcher::dispatch (SCM sev) Listener *l = unsmob_listener (scm_cdar (lists[0].list)); l->listen (ev->self_scm ()); +#if 0 sent = true; +#endif } // go to the next listener; bubble-sort the class list. SCM next = scm_cdr (lists[0].list); if (!scm_is_pair (next)) num_classes--; int prio = (scm_is_pair (next)) ? scm_to_int (scm_caar (next)) : INT_MAX; - for (i = 0; prio > lists[i+1].prio; i++) - lists[i] = lists[i+1]; + for (i = 0; prio > lists[i + 1].prio; i++) + lists[i] = lists[i + 1]; lists[i].prio = prio; lists[i].list = next; } -/* TODO: Uncomment. +#if 0 + /* TODO: Uncomment. */ if (!sent) warning (_f ("Junking event: %s", ly_symbol2string (class_symbol).c_str ())); -*/ +#endif +} + +bool +Dispatcher::is_listened_class (SCM cl) +{ + for (; scm_is_pair (cl); cl = scm_cdr (cl)) + { + SCM list = scm_hashq_ref (listeners_, scm_car (cl), SCM_EOL); + if (scm_is_pair (list)) + return true; + } + return false; +} + +static SCM +accumulate_types (void * /* closure */, + SCM key, + SCM val, + SCM result) +{ + if (scm_is_pair (val)) + return scm_cons (key, result); + return result; +} + +SCM +Dispatcher::listened_types () +{ + return scm_internal_hash_fold ((scm_t_hash_fold_fn) &accumulate_types, + NULL, SCM_EOL, listeners_); } void @@ -188,11 +218,11 @@ Dispatcher::internal_add_listener (Listener l, SCM ev_class, int priority) /* Tell all dispatchers that we listen to, that we want to hear ev_class events */ for (SCM disp = dispatchers_; scm_is_pair (disp); disp = scm_cdr (disp)) - { - int priority = scm_to_int (scm_cdar (disp)); - Dispatcher *d = unsmob_dispatcher (scm_caar (disp)); - d->internal_add_listener (GET_LISTENER (dispatch), ev_class, priority); - } + { + int priority = scm_to_int (scm_cdar (disp)); + Dispatcher *d = unsmob_dispatcher (scm_caar (disp)); + d->internal_add_listener (GET_LISTENER (dispatch), ev_class, priority); + } listen_classes_ = scm_cons (ev_class, listen_classes_); } SCM entry = scm_cons (scm_from_int (priority), l.smobbed_copy ()); @@ -219,9 +249,9 @@ Dispatcher::remove_listener (Listener l, SCM ev_class) while (scm_is_pair (scm_cdr (e))) if (*unsmob_listener (scm_cdadr (e)) == l && first) { - scm_set_cdr_x (e, scm_cddr (e)); - first = false; - break; + scm_set_cdr_x (e, scm_cddr (e)); + first = false; + break; } else e = scm_cdr (e); @@ -229,15 +259,15 @@ Dispatcher::remove_listener (Listener l, SCM ev_class) scm_hashq_set_x (listeners_, ev_class, list); if (first) - warning ("Attempting to remove nonexisting listener."); + warning (_ ("Attempting to remove nonexisting listener.")); else if (!scm_is_pair (list)) { /* Unregister with all dispatchers. */ for (SCM disp = dispatchers_; scm_is_pair (disp); disp = scm_cdr (disp)) - { - Dispatcher *d = unsmob_dispatcher (scm_caar (disp)); - d->remove_listener (GET_LISTENER (dispatch), ev_class); - } + { + Dispatcher *d = unsmob_dispatcher (scm_caar (disp)); + d->remove_listener (GET_LISTENER (dispatch), ev_class); + } listen_classes_ = scm_delq_x (ev_class, listen_classes_); } } @@ -251,7 +281,7 @@ Dispatcher::register_as_listener (Dispatcher *disp) // Don't register twice to the same dispatcher. if (scm_assq (disp->self_scm (), dispatchers_) != SCM_BOOL_F) { - warning ("Already listening to dispatcher, ignoring request"); + warning (_ ("Already listening to dispatcher, ignoring request")); return; } diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc index e83011281b..5a1b0a6759 100644 --- a/lily/dot-column-engraver.cc +++ b/lily/dot-column-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,25 +55,24 @@ Dot_column_engraver::acknowledge_rhythmic_head (Grob_info info) if (d) { if (!dotcol_) - dotcol_ = make_item ("DotColumn", SCM_EOL); + dotcol_ = make_item ("DotColumn", SCM_EOL); Dot_column::add_head (dotcol_, info.grob ()); } } - ADD_ACKNOWLEDGER (Dot_column_engraver, rhythmic_head); ADD_TRANSLATOR (Dot_column_engraver, - /* doc */ - "Engrave dots on dotted notes shifted to the right of the" - " note. If omitted, then dots appear on top of the notes.", + /* doc */ + "Engrave dots on dotted notes shifted to the right of the" + " note. If omitted, then dots appear on top of the notes.", - /* create */ - "DotColumn ", + /* create */ + "DotColumn ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 17d7effd7c..1aa0b728c0 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,7 +45,7 @@ MAKE_SCHEME_CALLBACK (Dot_column, calc_positioning_done, 1); SCM Dot_column::calc_positioning_done (SCM smob) { - Grob *me = unsmob_grob (smob); + Grob *me = unsmob_grob (smob); /* Trigger note collision resolution first, since that may kill off @@ -56,10 +56,10 @@ Dot_column::calc_positioning_done (SCM smob) me->set_property ("positioning-done", SCM_BOOL_T); - vector dots + vector dots = extract_grob_array (me, "dots"); - vector main_heads; + vector main_heads; Real ss = 0; Grob *commonx = me; @@ -67,93 +67,98 @@ Dot_column::calc_positioning_done (SCM smob) { Grob *n = dots[i]->get_parent (Y_AXIS); commonx = n->common_refpoint (commonx, X_AXIS); - - if (Grob *stem = unsmob_grob (n->get_object("stem"))) - { - commonx = stem->common_refpoint (commonx, X_AXIS); - - if (Stem::first_head (stem) == n) - main_heads.push_back (n); - } + + if (Grob *stem = unsmob_grob (n->get_object ("stem"))) + { + commonx = stem->common_refpoint (commonx, X_AXIS); + + if (Stem::first_head (stem) == n) + main_heads.push_back (n); + } } vector boxes; - set stems; + set stems; - extract_grob_set(me, "side-support-elements", support); + extract_grob_set (me, "side-support-elements", support); Interval base_x; for (vsize i = 0; i < main_heads.size (); i++) base_x.unite (main_heads[i]->extent (commonx, X_AXIS)); - + for (vsize i = 0; i < support.size (); i++) { Grob *s = support[i]; if (!ss) - ss = Staff_symbol_referencer::staff_space (s); + ss = Staff_symbol_referencer::staff_space (s); /* can't inspect Y extent of rest. - - Rest collisions should wait after line breaking. + + Rest collisions should wait after line breaking. */ Interval y; if (Rest::has_interface (s)) - { - base_x.unite (s->extent (commonx, X_AXIS)); - continue; - } + { + base_x.unite (s->extent (commonx, X_AXIS)); + continue; + } else if (Stem::has_interface (s)) - { - Real y1 = Stem::head_positions (s)[-get_grob_direction (s)]; - Real y2 = y1 + get_grob_direction (s) * 7; + { + Real y1 = Stem::head_positions (s)[-get_grob_direction (s)]; + Real y2 = y1 + get_grob_direction (s) * 7; + + y.add_point (y1); + y.add_point (y2); - y.add_point (y1); - y.add_point (y2); - } + stems.insert (s); + } else if (Note_head::has_interface (s)) - y = Interval (-1, 1); + y = Interval (-1.1, 1.1); else - { - programming_error ("unknown grob in dot col support"); - continue; - } + { + programming_error ("unknown grob in dot col support"); + continue; + } - y *= 2 / ss; y += Staff_symbol_referencer::get_position (s); Box b (s->extent (commonx, X_AXIS), y); boxes.push_back (b); if (Grob *stem = unsmob_grob (s->get_object ("stem"))) - stems.insert (stem); + stems.insert (stem); } - for (set::const_iterator i (stems.begin()); + for (set::const_iterator i (stems.begin ()); i != stems.end (); i++) { Grob *stem = (*i); - Stencil flag = Stem::flag (stem); - if (!flag.is_empty ()) - { - Interval y = flag.extent (Y_AXIS) - * (2 / ss) - + Stem::stem_end_position (stem); - - Interval x = stem->relative_coordinate (commonx, X_AXIS) - + flag.extent (X_AXIS); - - boxes.push_back (Box (x,y)); - } + Grob *flag = Stem::flag (stem); + if (flag) + { + Grob *commony = stem->common_refpoint (flag, Y_AXIS); + Interval y = flag->extent (commony, Y_AXIS) * (2 / ss); + Interval x = flag->extent (commonx, X_AXIS); + + boxes.push_back (Box (x, y)); + } } - - vector_sort (dots, position_less); + + /* + The use of pure_position_less and pure_get_rounded_position below + are due to the fact that this callback is called before line breaking + occurs. Because dots' actual Y posiitons may be linked to that of + beams (dots are attached to rests, which are shifted to avoid beams), + we instead must use their pure Y positions. + */ + vector_sort (dots, pure_position_less); for (vsize i = dots.size (); i--;) { if (!dots[i]->is_live ()) - dots.erase (dots.begin () + i); + dots.erase (dots.begin () + i); else - // Undo any fake translations that were done in add_head. - dots[i]->translate_axis (-dots[i]->relative_coordinate (me, X_AXIS), X_AXIS); + // Undo any fake translations that were done in add_head. + dots[i]->translate_axis (-dots[i]->relative_coordinate (me, X_AXIS), X_AXIS); } Dot_formatting_problem problem (boxes, base_x); @@ -166,27 +171,24 @@ Dot_column::calc_positioning_done (SCM smob) Grob *note = dots[i]->get_parent (Y_AXIS); if (note) - { - Grob *stem = unsmob_grob (note->get_object ("stem")); - if (stem) - dp.extremal_head_ = Stem::first_head (stem) == note; - - dp.x_extent_ = note->extent (commonx, X_AXIS); - } + { + if (Note_head::has_interface (note)) + dp.dir_ = to_dir (dp.dot_->get_property ("direction")); - int p = Staff_symbol_referencer::get_rounded_position (dp.dot_); + dp.x_extent_ = note->extent (commonx, X_AXIS); + } + + int p = Staff_symbol_referencer::pure_get_rounded_position (dp.dot_); /* icky, since this should go via a Staff_symbol_referencer - offset callback but adding a dot overwrites Y-offset. */ + offset callback but adding a dot overwrites Y-offset. */ p += (int) robust_scm2double (dp.dot_->get_property ("staff-position"), 0.0); dp.pos_ = p; - if (dp.extremal_head_) - dp.dir_ = to_dir (dp.dot_->get_property ("direction")); cfg.remove_collision (p); cfg[p] = dp; if (Staff_symbol_referencer::on_line (dp.dot_, p)) - cfg.remove_collision (p); + cfg.remove_collision (p); } problem.register_configuration (cfg); @@ -195,13 +197,13 @@ Dot_column::calc_positioning_done (SCM smob) i != cfg.end (); i++) { /* - Junkme? + Junkme? */ - Staff_symbol_referencer::set_position (i->second.dot_, i->first); + Staff_symbol_referencer::pure_set_position (i->second.dot_, i->first); } - + me->translate_axis (cfg.x_offset () - me->relative_coordinate (commonx, X_AXIS), - X_AXIS); + X_AXIS); return SCM_BOOL_T; } @@ -221,20 +223,21 @@ Dot_column::add_head (Grob *me, Grob *head) // The translation here is undone in calc_positioning_done, where we // do the X-offset properly. if (Rest::has_interface (head)) - d->translate_axis (head->extent (head, X_AXIS).length (), X_AXIS); + d->translate_axis (head->extent (head, X_AXIS).length (), X_AXIS); else - d->set_property ("X-offset", Grob::x_parent_positioning_proc); + d->set_property ("X-offset", Grob::x_parent_positioning_proc); Axis_group_interface::add_element (me, d); } } ADD_INTERFACE (Dot_column, - "Group dot objects so they form a column, and position" - " dots so they do not clash with staff lines.", - - /* properties */ - "dots " - "positioning-done " - "direction " - ); + "Group dot objects so they form a column, and position" + " dots so they do not clash with staff lines.", + + /* properties */ + "dots " + "positioning-done " + "direction " + "note-collision " + ); diff --git a/lily/dot-configuration.cc b/lily/dot-configuration.cc index b72bd54ef7..940420c312 100644 --- a/lily/dot-configuration.cc +++ b/lily/dot-configuration.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,6 @@ #include "dot-formatting-problem.hh" #include "staff-symbol-referencer.hh" - int Dot_configuration::badness () const { @@ -34,16 +33,11 @@ Dot_configuration::badness () const int demerit = sqr (p - i->second.pos_) * 2; int dot_move_dir = sign (p - i->second.pos_); - if (i->second.extremal_head_) - { - if (i->second.dir_ - && dot_move_dir != i->second.dir_) - demerit += 3; - else if (dot_move_dir != UP) - demerit += 2; - } + if (i->second.dir_ + && dot_move_dir != i->second.dir_) + demerit += 2; else if (dot_move_dir != UP) - demerit += 1; + demerit += 1; t += demerit; } @@ -77,55 +71,55 @@ Dot_configuration::shifted (int k, Direction d) const if (d > 0) { for (Dot_configuration::const_iterator i (begin ()); - i != end (); i++) - { - int p = i->first; - if (p == k) - { - if (Staff_symbol_referencer::on_line (i->second.dot_, p)) - p += d; - else - p += 2* d; - - offset = 2*d; - - new_cfg[p] = i->second; - } - else - { - if (new_cfg.find (p) == new_cfg.end ()) - offset = 0; - new_cfg[p + offset] = i->second; - } - } + i != end (); i++) + { + int p = i->first; + if (p == k) + { + if (Staff_symbol_referencer::on_line (i->second.dot_, p)) + p += d; + else + p += 2 * d; + + offset = 2 * d; + + new_cfg[p] = i->second; + } + else + { + if (new_cfg.find (p) == new_cfg.end ()) + offset = 0; + new_cfg[p + offset] = i->second; + } + } } else { Dot_configuration::const_iterator i (end ()); do - { - i--; - - int p = i->first; - if (p == k) - { - if (Staff_symbol_referencer::on_line (i->second.dot_, p)) - p += d; - else - p += 2* d; - - offset = 2*d; - - new_cfg[p] = i->second; - } - else - { - if (new_cfg.find (p) == new_cfg.end ()) - offset = 0; - - new_cfg[p + offset] = i->second; - } - } + { + i--; + + int p = i->first; + if (p == k) + { + if (Staff_symbol_referencer::on_line (i->second.dot_, p)) + p += d; + else + p += 2 * d; + + offset = 2 * d; + + new_cfg[p] = i->second; + } + else + { + if (new_cfg.find (p) == new_cfg.end ()) + offset = 0; + + new_cfg[p + offset] = i->second; + } + } while (i != begin ()); } diff --git a/lily/dot-formatting-problem.cc b/lily/dot-formatting-problem.cc index 1d83f64b31..be375b540d 100644 --- a/lily/dot-formatting-problem.cc +++ b/lily/dot-formatting-problem.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys + Copyright (C) 2007--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ #include "dot-configuration.hh" #include "skyline.hh" -Dot_formatting_problem::~Dot_formatting_problem() +Dot_formatting_problem::~Dot_formatting_problem () { delete best_; } @@ -44,8 +44,8 @@ Dot_formatting_problem::best () const } Dot_formatting_problem::Dot_formatting_problem (vector const &boxes, - Interval base_x) - : head_skyline_ (boxes, 0.0, Y_AXIS, RIGHT) + Interval base_x) + : head_skyline_ (boxes, 0.2, Y_AXIS, RIGHT) { best_ = 0; head_skyline_.set_minimum_height (base_x[RIGHT]); diff --git a/lily/dots-engraver.cc b/lily/dots-engraver.cc index efe927e0ec..d588e5e92b 100644 --- a/lily/dots-engraver.cc +++ b/lily/dots-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,8 +25,7 @@ #include "translator.icc" - -class Dots_engraver : public Engraver +class Dots_engraver : public Engraver { DECLARE_ACKNOWLEDGER (rhythmic_head); TRANSLATOR_DECLARATIONS (Dots_engraver); @@ -46,7 +45,7 @@ Dots_engraver::acknowledge_rhythmic_head (Grob_info gi) Grob *note = gi.grob (); if (unsmob_grob (note->get_object ("dot"))) return; - + Duration *dur = unsmob_duration (cause->get_property ("duration")); if (dur && dur->dot_count ()) { @@ -57,19 +56,18 @@ Dots_engraver::acknowledge_rhythmic_head (Grob_info gi) } } - ADD_ACKNOWLEDGER (Dots_engraver, rhythmic_head); ADD_TRANSLATOR (Dots_engraver, - "Create @ref{Dots} objects for" - " @ref{rhythmic-head-interface}s.", - - /* create */ - "Dots ", - - /* read */ - "", - - /* write */ - "" - ); + "Create @ref{Dots} objects for" + " @ref{rhythmic-head-interface}s.", + + /* create */ + "Dots ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/dots.cc b/lily/dots.cc index 8319118752..43c47b7719 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,46 +38,46 @@ Dots::print (SCM d) if (scm_is_number (c)) { SCM scm_style = sc->get_property ("style"); - string style =""; + string style = ""; if (scm_is_symbol (scm_style)) - style = ly_symbol2string (scm_style); - string idx = "dots.dot" + style; + style = ly_symbol2string (scm_style); + string idx = "dots.dot" + style; Stencil d = Font_interface::get_default_font (sc)->find_by_name (idx); if (d.is_empty ()) - { - sc->warning (_f ("dot `%s' not found", idx.c_str ())); - return SCM_EOL; - } + { + sc->warning (_f ("dot `%s' not found", idx.c_str ())); + return SCM_EOL; + } Real dw = d.extent (X_AXIS).length (); /* - we need to add a real blank box, to assure that - side-positioning doth not cancel the left-most padding. */ + we need to add a real blank box, to assure that + side-positioning doth not cancel the left-most padding. */ /* - TODO: this should be handled by side-position padding. + TODO: this should be handled by side-position padding. */ mol = Lookup::blank (Box (Interval (0, 0), - Interval (0, 0))); + Interval (0, 0))); for (int i = scm_to_int (c); i--;) - { - d.translate_axis (2 * dw, X_AXIS); - mol.add_at_edge (X_AXIS, RIGHT, d, dw); - } + { + d.translate_axis (2 * dw, X_AXIS); + mol.add_at_edge (X_AXIS, RIGHT, d, dw); + } } return mol.smobbed_copy (); } ADD_INTERFACE (Dots, - "The dots to go with a notehead or rest. @code{direction}" - " sets the preferred direction to move in case of staff line" - " collisions. @code{style} defaults to undefined, which is" - " normal 19th/20th century traditional style. Set" - " @code{style} to @code{vaticana} for ancient type dots.", + "The dots to go with a notehead or rest. @code{direction}" + " sets the preferred direction to move in case of staff line" + " collisions. @code{style} defaults to undefined, which is" + " normal 19th/20th century traditional style. Set" + " @code{style} to @code{vaticana} for ancient type dots.", - /* properties */ - "direction " - "dot-count " - "style " - ); + /* properties */ + "direction " + "dot-count " + "style " + ); diff --git a/lily/double-percent-repeat-engraver.cc b/lily/double-percent-repeat-engraver.cc index ad64657e97..cd455e008e 100644 --- a/lily/double-percent-repeat-engraver.cc +++ b/lily/double-percent-repeat-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2011 Neil Puttock + Copyright (C) 2011--2012 Neil Puttock LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,7 +55,7 @@ Double_percent_repeat_engraver::listen_double_percent (Stream_event *ev) if (!percent_event_) { Moment meas_len (robust_scm2moment (get_property ("measureLength"), - Moment (1))); + Moment (1))); start_mom_ = now_mom () + meas_len; get_global_context ()->add_moment_to_process (start_mom_); percent_event_ = ev; @@ -70,44 +70,44 @@ Double_percent_repeat_engraver::process_music () if (percent_event_ && now_mom ().main_part_ == start_mom_.main_part_) { Item *double_percent = make_item ("DoublePercentRepeat", - percent_event_->self_scm ()); + percent_event_->self_scm ()); SCM count = percent_event_->get_property ("repeat-count"); if (count != SCM_EOL && to_boolean (get_property ("countPercentRepeats")) - && check_repeat_count_visibility (context (), count)) - { - Item *double_percent_counter - = make_item ("DoublePercentRepeatCounter", - percent_event_->self_scm ()); - - SCM text = scm_number_to_string (count, scm_from_int (10)); - double_percent_counter->set_property ("text", text); - - Side_position_interface::add_support (double_percent_counter, - double_percent); - double_percent_counter->set_parent (double_percent, Y_AXIS); - double_percent_counter->set_parent (double_percent, X_AXIS); - } + && check_repeat_count_visibility (context (), count)) + { + Item *double_percent_counter + = make_item ("DoublePercentRepeatCounter", + percent_event_->self_scm ()); + + SCM text = scm_number_to_string (count, scm_from_int (10)); + double_percent_counter->set_property ("text", text); + + Side_position_interface::add_support (double_percent_counter, + double_percent); + double_percent_counter->set_parent (double_percent, Y_AXIS); + double_percent_counter->set_parent (double_percent, X_AXIS); + } // forbid breaks on a % line context ()->get_score_context ()->set_property ("forbidBreak", - SCM_BOOL_T); + SCM_BOOL_T); percent_event_ = 0; } } ADD_TRANSLATOR (Double_percent_repeat_engraver, - /* doc */ - "Make double measure repeats.", + /* doc */ + "Make double measure repeats.", - /* create */ - "DoublePercentRepeat " - "DoublePercentRepeatCounter ", + /* create */ + "DoublePercentRepeat " + "DoublePercentRepeatCounter ", - /* read */ - "countPercentRepeats " - "measureLength " - "repeatCountVisibility ", + /* read */ + "countPercentRepeats " + "measureLength " + "repeatCountVisibility ", - /* write */ - "forbidBreak " - ); + /* write */ + "forbidBreak " + ); diff --git a/lily/drum-note-engraver.cc b/lily/drum-note-engraver.cc index 605876ef60..251d2099fe 100644 --- a/lily/drum-note-engraver.cc +++ b/lily/drum-note-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -67,7 +67,7 @@ Drum_notes_engraver::process_music () for (vsize i = 0; i < events_.size (); i++) { if (!tab) - tab = get_property ("drumStyleTable"); + tab = get_property ("drumStyleTable"); Stream_event *ev = events_[i]; Item *note = make_item ("NoteHead", ev->self_scm ()); @@ -77,30 +77,30 @@ Drum_notes_engraver::process_music () SCM defn = SCM_EOL; if (scm_hash_table_p (tab) == SCM_BOOL_T) - defn = scm_hashq_ref (tab, drum_type, SCM_EOL); + defn = scm_hashq_ref (tab, drum_type, SCM_EOL); if (scm_is_pair (defn)) - { - SCM pos = scm_caddr (defn); - SCM style = scm_car (defn); - SCM script = scm_cadr (defn); - - if (scm_integer_p (pos) == SCM_BOOL_T) - note->set_property ("staff-position", pos); - if (scm_is_symbol (style)) - note->set_property ("style", style); - - if (scm_is_string (script)) - { - Item *p = make_item ("Script", ev->self_scm ()); - make_script_from_event (p, context (), script, - 0); - - p->set_parent (note, Y_AXIS); - Side_position_interface::add_support (p, note); - scripts_.push_back (p); - } - } + { + SCM pos = scm_caddr (defn); + SCM style = scm_car (defn); + SCM script = scm_cadr (defn); + + if (scm_integer_p (pos) == SCM_BOOL_T) + note->set_property ("staff-position", pos); + if (scm_is_symbol (style)) + note->set_property ("style", style); + + if (scm_is_string (script)) + { + Item *p = make_item ("Script", ev->self_scm ()); + make_script_from_event (p, context (), script, + 0); + + p->set_parent (note, Y_AXIS); + Side_position_interface::add_support (p, note); + scripts_.push_back (p); + } + } } } @@ -112,7 +112,7 @@ Drum_notes_engraver::acknowledge_stem (Grob_info inf) Grob *e = scripts_[i]; if (to_dir (e->get_property ("side-relative-direction"))) - e->set_object ("direction-source", inf.grob ()->self_scm ()); + e->set_object ("direction-source", inf.grob ()->self_scm ()); Side_position_interface::add_support (e, inf.grob ()); } @@ -126,8 +126,8 @@ Drum_notes_engraver::acknowledge_note_column (Grob_info inf) Grob *e = scripts_[i]; if (!e->get_parent (X_AXIS) - && Side_position_interface::get_axis (e) == Y_AXIS) - e->set_parent (inf.grob (), X_AXIS); + && Side_position_interface::get_axis (e) == Y_AXIS) + e->set_parent (inf.grob (), X_AXIS); } } @@ -142,16 +142,16 @@ ADD_ACKNOWLEDGER (Drum_notes_engraver, stem); ADD_ACKNOWLEDGER (Drum_notes_engraver, note_column); ADD_TRANSLATOR (Drum_notes_engraver, - /* doc */ - "Generate drum note heads.", + /* doc */ + "Generate drum note heads.", - /* create */ - "NoteHead " - "Script ", + /* create */ + "NoteHead " + "Script ", - /* read */ - "drumStyleTable ", + /* read */ + "drumStyleTable ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/drum-note-performer.cc b/lily/drum-note-performer.cc index b28a7cd9ec..94c2d55ea3 100644 --- a/lily/drum-note-performer.cc +++ b/lily/drum-note-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,11 +55,11 @@ Drum_note_performer::process_music () SCM defn = SCM_EOL; if (scm_is_symbol (sym) - && (scm_hash_table_p (tab) == SCM_BOOL_T)) - defn = scm_hashq_ref (tab, sym, SCM_EOL); + && (scm_hash_table_p (tab) == SCM_BOOL_T)) + defn = scm_hashq_ref (tab, sym, SCM_EOL); if (Pitch *pit = unsmob_pitch (defn)) - { + { SCM articulations = n->get_property ("articulations"); Stream_event *tie_event = 0; for (SCM s = articulations; @@ -69,18 +69,18 @@ Drum_note_performer::process_music () Stream_event *ev = unsmob_stream_event (scm_car (s)); if (!ev) continue; - + if (ev->in_event_class ("tie-event")) tie_event = ev; } - Moment len = get_event_length (n, now_mom ()); + Moment len = get_event_length (n, now_mom ()); - Audio_note *p = new Audio_note (*pit, len, + Audio_note *p = new Audio_note (*pit, len, tie_event, Pitch (0, 0, 0)); - Audio_element_info info (p, n); - announce_element (info); - } + Audio_element_info info (p, n); + announce_element (info); + } } note_evs_.clear (); @@ -100,15 +100,15 @@ Drum_note_performer::listen_note (Stream_event *ev) } ADD_TRANSLATOR (Drum_note_performer, - /* doc */ - "Play drum notes.", + /* doc */ + "Play drum notes.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/duration-scheme.cc b/lily/duration-scheme.cc index 439362bf82..ffb769e2e9 100644 --- a/lily/duration-scheme.cc +++ b/lily/duration-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -35,8 +35,8 @@ Duration::less_p (SCM p1, SCM p2) } LY_DEFINE (ly_duration_less_p, "ly:durationduration_log ()); } LY_DEFINE (ly_duration_dot_count, "ly:duration-dot-count", - 1, 0, 0, (SCM dur), - "Extract the dot count from @var{dur}.") + 1, 0, 0, (SCM dur), + "Extract the dot count from @var{dur}.") { LY_ASSERT_SMOB (Duration, dur, 1); return scm_from_int (unsmob_duration (dur)->dot_count ()); } LY_DEFINE (ly_intlog2, "ly:intlog2", - 1, 0, 0, (SCM d), - "The 2-logarithm of 1/@var{d}.") + 1, 0, 0, (SCM d), + "The 2-logarithm of 1/@var{d}.") { LY_ASSERT_TYPE (scm_is_number, d, 1); int log = intlog2 (scm_to_int (d)); @@ -123,27 +123,40 @@ LY_DEFINE (ly_intlog2, "ly:intlog2", } LY_DEFINE (ly_duration_length, "ly:duration-length", - 1, 0, 0, (SCM dur), - "The length of the duration as a @code{moment}.") + 1, 0, 0, (SCM dur), + "The length of the duration as a @code{moment}.") { LY_ASSERT_SMOB (Duration, dur, 1); return Moment (unsmob_duration (dur)->get_length ()).smobbed_copy (); } LY_DEFINE (ly_duration_2_string, "ly:duration->string", - 1, 0, 0, (SCM dur), - "Convert @var{dur} to a string.") + 1, 0, 0, (SCM dur), + "Convert @var{dur} to a string.") { LY_ASSERT_SMOB (Duration, dur, 1); return ly_string2scm (unsmob_duration (dur)->to_string ()); } LY_DEFINE (ly_duration_factor, "ly:duration-factor", - 1, 0, 0, (SCM dur), - "Extract the compression factor from @var{dur}." - " Return it as a pair.") + 1, 0, 0, (SCM dur), + "Extract the compression factor from @var{dur}." + " Return it as a pair.") { LY_ASSERT_SMOB (Duration, dur, 1); Rational r = unsmob_duration (dur)->factor (); return scm_cons (scm_from_int64 (r.num ()), scm_from_int64 (r.den ())); } + +// This is likely what ly:duration-factor should have been in the +// first place. +LY_DEFINE (ly_duration_scale, "ly:duration-scale", + 1, 0, 0, (SCM dur), + "Extract the compression factor from @var{dur}." + " Return it as a rational.") +{ + LY_ASSERT_SMOB (Duration, dur, 1); + Rational r = unsmob_duration (dur)->factor (); + + return ly_rational2scm (r); +} diff --git a/lily/duration.cc b/lily/duration.cc index 194ce3a89e..782804e9da 100644 --- a/lily/duration.cc +++ b/lily/duration.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -57,41 +57,41 @@ Duration::Duration (Rational r, bool scale) else { /* we want to find the integer k for which 2q/p > 2^k >= q/p. - It's simple to check that k' = \floor \log q - \floor \log p - satisfies the left inequality and is within a factor of 2 of - satistying the right one. Therefore either k = k' or k = k'+1 */ + It's simple to check that k' = \floor \log q - \floor \log p + satisfies the left inequality and is within a factor of 2 of + satistying the right one. Therefore either k = k' or k = k'+1 */ int p = (int) r.num (); int q = (int) r.den (); int k = intlog2 (q) - intlog2 (p); - if (shift_left(p, k) < q) - k++; + if (shift_left (p, k) < q) + k++; - assert (shift_left(p, k) >= q && shift_left(p, (k-1)) < q); + assert (shift_left (p, k) >= q && shift_left (p, (k - 1)) < q); /* If we were to write out log (p/q) in base 2, then the position of the - first non-zero bit (ie. k in our notation) would be the durlog - and the number of consecutive 1s after that bit would be the number of - dots */ - p = shift_left(p, k) - q; + first non-zero bit (ie. k in our notation) would be the durlog + and the number of consecutive 1s after that bit would be the number of + dots */ + p = shift_left (p, k) - q; dots_ = 0; while ((p *= 2) >= q) - { - p -= q; - dots_++; - } + { + p -= q; + dots_++; + } /* we only go up to 64th notes */ if (k > 6) - { - durlog_ = 6; - dots_ = 0; - } + { + durlog_ = 6; + dots_ = 0; + } else - durlog_ = k; + durlog_ = k; if (scale || k > 6) - factor_ = r / get_length (); + factor_ = r / get_length (); } } @@ -165,8 +165,8 @@ Duration::equal_p (SCM a, SCM b) Duration *q = (Duration *) SCM_CELL_WORD_1 (b); bool eq = p->dots_ == q->dots_ - && p->durlog_ == q->durlog_ - && p->factor_ == q->factor_; + && p->durlog_ == q->durlog_ + && p->factor_ == q->factor_; return eq ? SCM_BOOL_T : SCM_BOOL_F; } diff --git a/lily/dynamic-align-engraver.cc b/lily/dynamic-align-engraver.cc index f62c45f0dc..265498658a 100644 --- a/lily/dynamic-align-engraver.cc +++ b/lily/dynamic-align-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2008--2011 Han-Wen Nienhuys + Copyright (C) 2008--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -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 ended_; vector started_; vector scripts_; vector support_; set 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); @@ -72,7 +73,7 @@ Dynamic_align_engraver::create_line_spanner (Stream_event *event) { if (!line_) line_ = make_spanner ("DynamicLineSpanner", - event ? event->self_scm () : SCM_EOL); + event ? event->self_scm () : SCM_EOL); } void @@ -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 ()); @@ -132,7 +149,37 @@ Dynamic_align_engraver::acknowledge_dynamic (Grob_info info) if (cause) { if (Direction d = to_dir (cause->get_property ("direction"))) - set_grob_direction (line_, d); + set_grob_direction (line_, d); + } +} + +void +Dynamic_align_engraver::set_spanner_bounds (Spanner *line, bool end) +{ + if (!line) + return; + + for (LEFT_and_RIGHT (d)) + { + if ((d == LEFT && !line->get_bound (LEFT)) + || (end && d == RIGHT && !line->get_bound (RIGHT))) + { + vector const &spanners + = (d == LEFT) ? started_ : ended_; + + Grob *bound = 0; + if (scripts_.size ()) + bound = scripts_[0]; + else if (spanners.size ()) + bound = spanners[0]->get_bound (d); + else + { + bound = unsmob_grob (get_property ("currentMusicalColumn")); + programming_error ("started DynamicLineSpanner but have no left bound"); + } + + line->set_bound (d, bound); + } } } @@ -147,49 +194,31 @@ Dynamic_align_engraver::stop_translation_timestep () set::iterator it = running_.find (sp); if (it != running_.end ()) - running_.erase (it); + running_.erase (it); else - started_[i]->programming_error ("lost track of this dynamic spanner"); - } - - bool end = line_ && (running_.empty () - || early_end_); - Direction d = LEFT; - do - { - if (line_ - && ((d == LEFT && !line_->get_bound (LEFT)) - || (end && d == RIGHT && !line_->get_bound (RIGHT)))) - { - vector const &spanners - = (d == LEFT) ? started_ : ended_; - - Grob *bound = 0; - if (scripts_.size ()) - bound = scripts_[0]; - else if (spanners.size ()) - bound = spanners[0]->get_bound (d); - else - { - bound = unsmob_grob (get_property ("currentMusicalColumn")); - if (!early_end_) - programming_error ("started DynamicLineSpanner but have no left bound"); - } - - line_->set_bound (d, bound); - } + started_[i]->programming_error ("lost track of this dynamic spanner"); } - while (flip (&d) != LEFT); - 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 (); @@ -197,15 +226,15 @@ Dynamic_align_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Dynamic_align_engraver, - /* doc */ - "Align hairpins and dynamic texts on a horizontal line.", + /* doc */ + "Align hairpins and dynamic texts on a horizontal line.", - /* create */ - "DynamicLineSpanner ", + /* create */ + "DynamicLineSpanner ", - /* read */ - "currentMusicalColumn ", + /* read */ + "currentMusicalColumn ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 14522c6376..c492e59c55 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -70,8 +70,8 @@ class Dynamic_engraver : public Engraver Drul_array accepted_spanevents_drul_; - vector pending_columns_; - vector pending_elements_; + vector pending_columns_; + vector pending_elements_; void typeset_all (); @@ -118,10 +118,10 @@ Dynamic_engraver::listen_span_dynamic (Stream_event *ev) if (d == START) ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[START], ev); - + /* Cancel any ongoing crescendo, either explicitly by \! or implicitly by a new crescendo. Also avoid warning if cresc is - cancelled both implicitly and explicitly. */ + canceled both implicitly and explicitly. */ if ((d == STOP || current_cresc_ev_) && !accepted_spanevents_drul_[STOP]) ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[STOP], ev); } @@ -132,12 +132,12 @@ Dynamic_engraver::process_music () if (accepted_spanevents_drul_[START] || accepted_spanevents_drul_[STOP] || script_ev_) { if (!line_spanner_) - { - Stream_event *rq = accepted_spanevents_drul_[START]; - line_spanner_ = make_spanner ("DynamicLineSpanner", rq ? rq->self_scm () : SCM_EOL); - if (script_ev_) - rq = script_ev_; - } + { + Stream_event *rq = accepted_spanevents_drul_[START]; + line_spanner_ = make_spanner ("DynamicLineSpanner", rq ? rq->self_scm () : SCM_EOL); + if (script_ev_) + rq = script_ev_; + } } /* @@ -157,140 +157,134 @@ Dynamic_engraver::process_music () { script_ = make_item ("DynamicText", script_ev_->self_scm ()); script_->set_property ("text", - script_ev_->get_property ("text")); + script_ev_->get_property ("text")); if (Direction d = to_dir (script_ev_->get_property ("direction"))) - set_grob_direction (line_spanner_, d); + set_grob_direction (line_spanner_, d); else if (Direction d = to_dir (line_spanner_->get_property ("direction"))) - set_grob_direction (script_, d); + set_grob_direction (script_, d); Axis_group_interface::add_element (line_spanner_, script_); } - Stream_event *stop_ev = accepted_spanevents_drul_ [STOP] - ? accepted_spanevents_drul_[STOP] : script_ev_; - if (accepted_spanevents_drul_[STOP] || script_ev_) { /* - finish side position alignment if the (de)cresc ends here, and - there are no new dynamics. + finish side position alignment if the (de)cresc ends here, and + there are no new dynamics. */ if (cresc_) - { - assert (!finished_cresc_ && cresc_); - - if (script_) - { - cresc_->set_bound (RIGHT, script_); - add_bound_item (line_spanner_, script_); - } - - finished_cresc_ = cresc_; - announce_end_grob (finished_cresc_, SCM_EOL); - cresc_ = 0; - current_cresc_ev_ = 0; - } + { + assert (!finished_cresc_ && cresc_); + + if (script_) + { + cresc_->set_bound (RIGHT, script_); + add_bound_item (line_spanner_, script_); + } + + finished_cresc_ = cresc_; + announce_end_grob (finished_cresc_, SCM_EOL); + cresc_ = 0; + current_cresc_ev_ = 0; + } else if (accepted_spanevents_drul_[STOP]) - { - accepted_spanevents_drul_[STOP]->origin ()->warning (_ ("cannot find start of (de)crescendo")); - stop_ev = 0; - } + accepted_spanevents_drul_[STOP]->origin ()->warning (_ ("cannot find start of (de)crescendo")); } if (accepted_spanevents_drul_[START]) { if (current_cresc_ev_) - { - string msg = _ ("already have a decrescendo"); - if (current_cresc_ev_->in_event_class ("crescendo-event")) - msg = _ ("already have a crescendo"); - - accepted_spanevents_drul_[START]->origin ()->warning (msg); - current_cresc_ev_->origin ()->warning (_ ("cresc starts here")); - } + { + string msg = _ ("already have a decrescendo"); + if (current_cresc_ev_->in_event_class ("crescendo-event")) + msg = _ ("already have a crescendo"); + + accepted_spanevents_drul_[START]->origin ()->warning (msg); + current_cresc_ev_->origin ()->warning (_ ("cresc starts here")); + } else - { - current_cresc_ev_ = accepted_spanevents_drul_[START]; - - if (Direction d = to_dir (current_cresc_ev_->get_property ("direction"))) - set_grob_direction (line_spanner_, d); - - /* - TODO: Use symbols. - */ - - SCM start_sym = current_cresc_ev_->get_property ("class"); - string start_type; - - if (start_sym == ly_symbol2scm ("decrescendo-event")) - start_type = "decrescendo"; - else if (start_sym == ly_symbol2scm ("crescendo-event")) - start_type = "crescendo"; - else - { - programming_error ("unknown dynamic spanner type"); - return; - } - - /* - UGH. TODO: should read from original event, so appearance - may be altered with \tweak. - */ - SCM s = get_property ((start_type + "Spanner").c_str ()); - if (!scm_is_symbol (s) || s == ly_symbol2scm ("hairpin")) - { - cresc_ = make_spanner ("Hairpin", accepted_spanevents_drul_[START]->self_scm ()); - if (finished_cresc_) - { - Pointer_group_interface::add_grob (finished_cresc_, - ly_symbol2scm ("adjacent-hairpins"), - cresc_); - - Pointer_group_interface::add_grob (cresc_, - ly_symbol2scm ("adjacent-hairpins"), - finished_cresc_); - } - } - - /* - This is a convenient (and legacy) interface to TextSpanners - for use in (de)crescendi. - Hmm. - */ - else - { - cresc_ = make_spanner ("DynamicTextSpanner", accepted_spanevents_drul_[START]->self_scm ()); - cresc_->set_property ("style", s); - context ()->set_property ((start_type - + "Spanner").c_str (), SCM_EOL); - s = get_property ((start_type + "Text").c_str ()); - if (Text_interface::is_markup (s)) - { - cresc_->set_property ("text", s); - context ()->set_property ((start_type + "Text").c_str (), - SCM_EOL); - } - - if (script_) - { - set_nested_property (cresc_, - scm_list_3 (ly_symbol2scm ("bound-details"), - ly_symbol2scm ("left"), - ly_symbol2scm ("attach-dir") - ), - scm_from_int (RIGHT)); - } - } - - if (script_) - { - cresc_->set_bound (LEFT, script_); - add_bound_item (line_spanner_, cresc_->get_bound (LEFT)); - } - Axis_group_interface::add_element (line_spanner_, cresc_); - } + { + current_cresc_ev_ = accepted_spanevents_drul_[START]; + + if (Direction d = to_dir (current_cresc_ev_->get_property ("direction"))) + set_grob_direction (line_spanner_, d); + + /* + TODO: Use symbols. + */ + + SCM start_sym = scm_car (current_cresc_ev_->get_property ("class")); + string start_type; + + if (start_sym == ly_symbol2scm ("decrescendo-event")) + start_type = "decrescendo"; + else if (start_sym == ly_symbol2scm ("crescendo-event")) + start_type = "crescendo"; + else + { + programming_error ("unknown dynamic spanner type"); + return; + } + + /* + UGH. TODO: should read from original event, so appearance + may be altered with \tweak. + */ + SCM s = get_property ((start_type + "Spanner").c_str ()); + if (!scm_is_symbol (s) || s == ly_symbol2scm ("hairpin")) + { + cresc_ = make_spanner ("Hairpin", accepted_spanevents_drul_[START]->self_scm ()); + if (finished_cresc_) + { + Pointer_group_interface::add_grob (finished_cresc_, + ly_symbol2scm ("adjacent-hairpins"), + cresc_); + + Pointer_group_interface::add_grob (cresc_, + ly_symbol2scm ("adjacent-hairpins"), + finished_cresc_); + } + } + + /* + This is a convenient (and legacy) interface to TextSpanners + for use in (de)crescendi. + Hmm. + */ + else + { + cresc_ = make_spanner ("DynamicTextSpanner", accepted_spanevents_drul_[START]->self_scm ()); + cresc_->set_property ("style", s); + context ()->set_property ((start_type + + "Spanner").c_str (), SCM_EOL); + s = get_property ((start_type + "Text").c_str ()); + if (Text_interface::is_markup (s)) + { + cresc_->set_property ("text", s); + context ()->set_property ((start_type + "Text").c_str (), + SCM_EOL); + } + + if (script_) + { + set_nested_property (cresc_, + scm_list_3 (ly_symbol2scm ("bound-details"), + ly_symbol2scm ("left"), + ly_symbol2scm ("attach-dir") + ), + scm_from_int (RIGHT)); + } + } + + if (script_) + { + cresc_->set_bound (LEFT, script_); + add_bound_item (line_spanner_, cresc_->get_bound (LEFT)); + } + Axis_group_interface::add_element (line_spanner_, cresc_); + } } } @@ -348,18 +342,18 @@ Dynamic_engraver::typeset_all () if (finished_cresc_) { if (!finished_cresc_->get_bound (RIGHT)) - { - - Grob *column_bound = unsmob_grob (get_property ("currentMusicalColumn")); - - finished_cresc_->set_bound (RIGHT, script_ - ? script_ - : column_bound); - - if (finished_line_spanner_) - add_bound_item (finished_line_spanner_, - finished_cresc_->get_bound (RIGHT)); - } + { + + Grob *column_bound = unsmob_grob (get_property ("currentMusicalColumn")); + + finished_cresc_->set_bound (RIGHT, script_ + ? script_ + : column_bound); + + if (finished_line_spanner_) + add_bound_item (finished_line_spanner_, + finished_cresc_->get_bound (RIGHT)); + } finished_cresc_ = 0; } @@ -367,33 +361,33 @@ Dynamic_engraver::typeset_all () if (finished_line_spanner_) { /* - We used to have + We used to have - extend-spanner-over-elements (finished_line_spanner_); + extend-spanner-over-elements (finished_line_spanner_); - but this is rather kludgy, since finished_line_spanner_ - typically has a staff-symbol field set , extending it over the - entire staff. + but this is rather kludgy, since finished_line_spanner_ + typically has a staff-symbol field set , extending it over the + entire staff. */ Grob *l = finished_line_spanner_->get_bound (LEFT); Grob *r = finished_line_spanner_->get_bound (RIGHT); if (!r && l) - finished_line_spanner_->set_bound (RIGHT, l); + finished_line_spanner_->set_bound (RIGHT, l); else if (!l && r) - finished_line_spanner_->set_bound (LEFT, r); + finished_line_spanner_->set_bound (LEFT, r); else if (!r && !l) - { - /* - This is a isolated dynamic apparently, and does not even have - any interesting support item. - */ - Grob *cc = unsmob_grob (get_property ("currentMusicalColumn")); - Item *ci = dynamic_cast (cc); - finished_line_spanner_->set_bound (RIGHT, ci); - finished_line_spanner_->set_bound (LEFT, ci); - } + { + /* + This is a isolated dynamic apparently, and does not even have + any interesting support item. + */ + Grob *cc = unsmob_grob (get_property ("currentMusicalColumn")); + Item *ci = dynamic_cast (cc); + finished_line_spanner_->set_bound (RIGHT, ci); + finished_line_spanner_->set_bound (LEFT, ci); + } finished_line_spanner_ = 0; } } @@ -416,20 +410,20 @@ Dynamic_engraver::acknowledge_note_column (Grob_info info) { extract_grob_set (info.grob (), "note-heads", heads); if (heads.size ()) - { - Grob *head = heads[0]; - script_->set_parent (head, X_AXIS); - Self_alignment_interface::set_center_parent (script_, X_AXIS); - } + { + Grob *head = heads[0]; + script_->set_parent (head, X_AXIS); + Self_alignment_interface::set_center_parent (script_, X_AXIS); + } } if (cresc_) { if (!cresc_->get_bound (LEFT)) - { - cresc_->set_bound (LEFT, info.grob ()); - add_bound_item (line_spanner_, cresc_->get_bound (LEFT)); - } + { + cresc_->set_bound (LEFT, info.grob ()); + add_bound_item (line_spanner_, cresc_->get_bound (LEFT)); + } } if (finished_cresc_ && !finished_cresc_->get_bound (RIGHT)) @@ -439,21 +433,21 @@ Dynamic_engraver::acknowledge_note_column (Grob_info info) ADD_ACKNOWLEDGER (Dynamic_engraver, note_column); ADD_TRANSLATOR (Dynamic_engraver, - /* doc */ - "Create hairpins, dynamic texts, and their vertical" - " alignments. The symbols are collected onto a" - " @code{DynamicLineSpanner} grob which takes care of vertical" - " positioning.", - - /* create */ - "DynamicLineSpanner " - "DynamicTextSpanner " - "DynamicText " - "Hairpin ", - - /* read */ - "", - - /* write */ - "" - ); + /* doc */ + "Create hairpins, dynamic texts, and their vertical" + " alignments. The symbols are collected onto a" + " @code{DynamicLineSpanner} grob which takes care of vertical" + " positioning.", + + /* create */ + "DynamicLineSpanner " + "DynamicTextSpanner " + "DynamicText " + "Hairpin ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index d96545af95..86734d7ee6 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,6 +20,7 @@ #include "performer.hh" #include "audio-item.hh" #include "stream-event.hh" +#include "international.hh" #include "translator.icc" @@ -37,9 +38,10 @@ protected: DECLARE_TRANSLATOR_LISTENER (absolute_dynamic); private: Stream_event *script_event_; - Drul_array span_events_; - Drul_array grow_dir_; + Drul_array span_events_; + Drul_array grow_dir_; Real last_volume_; + bool last_volume_initialized_; Audio_dynamic *absolute_; Audio_span_dynamic *span_dynamic_; Audio_span_dynamic *finished_span_dynamic_; @@ -47,11 +49,12 @@ private: Dynamic_performer::Dynamic_performer () { - last_volume_ = 0.5; + last_volume_ = 0.0; + last_volume_initialized_ = false; script_event_ = 0; absolute_ = 0; - span_events_[LEFT] = - span_events_[RIGHT] = 0; + span_events_[LEFT] + = span_events_[RIGHT] = 0; span_dynamic_ = 0; finished_span_dynamic_ = 0; } @@ -68,78 +71,93 @@ Dynamic_performer::equalize_volume (Real volume) { Interval iv (0, 1); if (scm_is_number (min)) - iv[MIN] = scm_to_double (min); + iv[MIN] = scm_to_double (min); if (scm_is_number (max)) - iv[MAX] = scm_to_double (max); + iv[MAX] = scm_to_double (max); volume = iv[MIN] + iv.length () * volume; } else { /* - urg, code duplication:: staff_performer + urg, code duplication:: staff_performer */ SCM s = get_property ("midiInstrument"); if (!scm_is_string (s)) - s = get_property ("instrumentName"); + s = get_property ("instrumentName"); if (!scm_is_string (s)) - s = scm_from_locale_string ("piano"); + s = scm_from_locale_string ("piano"); SCM eq = get_property ("instrumentEqualizer"); if (ly_is_procedure (eq)) - s = scm_call_1 (eq, s); + s = scm_call_1 (eq, s); if (is_number_pair (s)) - { - Interval iv = ly_scm2interval (s); - volume = iv[MIN] + iv.length () * volume; - } + { + Interval iv = ly_scm2interval (s); + volume = iv[MIN] + iv.length () * volume; + } } return volume; } - void Dynamic_performer::process_music () { if (span_events_[STOP] || script_event_) { + // End of a dynamic spanner, or an explicit dynamic script event. finished_span_dynamic_ = span_dynamic_; span_dynamic_ = 0; } if (span_events_[START]) { - span_dynamic_ = new Audio_span_dynamic (); + // Start of a dynamic spanner. Create a new Audio_span_dynamic for + // collecting changes in dynamics within this spanner. + span_dynamic_ = new Audio_span_dynamic (equalize_volume (0.1), equalize_volume (1.0)); announce_element (Audio_element_info (span_dynamic_, span_events_[START])); span_dynamic_->grow_dir_ = grow_dir_[START]; + + if (!last_volume_initialized_ && !script_event_) + { + // No explicit dynamic script events have occurred yet, but there is + // nevertheless a dynamic spanner. Initialize last_volume_ to a + // value within the available range. + span_events_[START]->origin ()->warning (_ ("(De)crescendo with unspecified starting volume in MIDI.")); + last_volume_ = equalize_volume (0.5); + last_volume_initialized_ = true; + } } if (script_event_ || span_dynamic_ || finished_span_dynamic_) { + // New change in dynamics. absolute_ = new Audio_dynamic (); if (script_event_) - { - SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); - - SCM svolume = SCM_EOL; - if (ly_is_procedure (proc)) - { - // urg - svolume = scm_call_1 (proc, script_event_->get_property ("text")); - } - - Real volume = robust_scm2double (svolume, 0.5); - - last_volume_ - = absolute_->volume_ = equalize_volume (volume); - } - + { + // Explicit dynamic script event: determine the volume. + SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); + + SCM svolume = SCM_EOL; + if (ly_is_procedure (proc)) + { + // urg + svolume = scm_call_1 (proc, script_event_->get_property ("text")); + } + + Real volume = robust_scm2double (svolume, 0.5); + + last_volume_ + = absolute_->volume_ = equalize_volume (volume); + last_volume_initialized_ = true; + } + Audio_element_info info (absolute_, script_event_); announce_element (info); } @@ -159,7 +177,7 @@ Dynamic_performer::stop_translation_timestep () finished_span_dynamic_->render (); finished_span_dynamic_ = 0; } - + if (absolute_ && absolute_->volume_ < 0) { absolute_->volume_ = last_volume_; @@ -167,12 +185,13 @@ Dynamic_performer::stop_translation_timestep () else if (absolute_) { last_volume_ = absolute_->volume_; + last_volume_initialized_ = true; } - + absolute_ = 0; script_event_ = 0; - span_events_[LEFT] = - span_events_[RIGHT] = 0; + span_events_[LEFT] + = span_events_[RIGHT] = 0; } IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_performer, decrescendo); @@ -202,19 +221,19 @@ Dynamic_performer::listen_absolute_dynamic (Stream_event *r) } ADD_TRANSLATOR (Dynamic_performer, - /* doc */ - "", - - /* create */ - "", - - /* read */ - "dynamicAbsoluteVolumeFunction " - "instrumentEqualizer " - "midiMaximumVolume " - "midiMinimumVolume " - "midiInstrument ", - - /* write */ - "" - ); + /* doc */ + "", + + /* create */ + "", + + /* read */ + "dynamicAbsoluteVolumeFunction " + "instrumentEqualizer " + "midiMaximumVolume " + "midiMinimumVolume " + "midiInstrument ", + + /* write */ + "" + ); diff --git a/lily/enclosing-bracket.cc b/lily/enclosing-bracket.cc index d7cd672843..8fe1513170 100644 --- a/lily/enclosing-bracket.cc +++ b/lily/enclosing-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -27,27 +27,25 @@ struct Enclosing_bracket { DECLARE_GROB_INTERFACE (); - + public: DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (width, (SCM)); }; - ADD_INTERFACE (Enclosing_bracket, - "Brackets alongside bass figures.", - - /* properties */ - "bracket-flare " - "edge-height " - "elements " - "padding " - "shorten-pair " - "thickness " - ); + "Brackets alongside bass figures.", -/* ugh: should make bracket interface. */ + /* properties */ + "bracket-flare " + "edge-height " + "elements " + "padding " + "shorten-pair " + "thickness " + ); +/* ugh: should make bracket interface. */ MAKE_SCHEME_CALLBACK (Enclosing_bracket, width, 1); SCM @@ -64,13 +62,12 @@ Enclosing_bracket::width (SCM grob) return SCM_EOL; } - Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS); + Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS); Interval xext = Axis_group_interface::relative_group_extent (elements, common_x, X_AXIS); Stencil left_br = Horizontal_bracket::make_bracket (me, 10.0, Y_AXIS, LEFT); Stencil right_br = Horizontal_bracket::make_bracket (me, 10.0, Y_AXIS, LEFT); - xext.widen (robust_scm2double (me->get_property ("padding"), 0.25)); left_br.translate_axis (xext[LEFT], X_AXIS); right_br.translate_axis (xext[RIGHT], X_AXIS); @@ -93,7 +90,7 @@ Enclosing_bracket::print (SCM grob) return SCM_EOL; } - Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS); + Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS); Interval xext = Axis_group_interface::relative_group_extent (elements, common_x, X_AXIS); if (xext.is_empty ()) { @@ -102,14 +99,14 @@ Enclosing_bracket::print (SCM grob) } Stencil left_br = Horizontal_bracket::make_enclosing_bracket (me, me, elements, - Y_AXIS, LEFT); + Y_AXIS, LEFT); Stencil right_br = Horizontal_bracket::make_enclosing_bracket (me, me, elements, - Y_AXIS, RIGHT); + Y_AXIS, RIGHT); xext.widen (robust_scm2double (me->get_property ("padding"), 0.25)); left_br.translate_axis (xext[LEFT], X_AXIS); right_br.translate_axis (xext[RIGHT], X_AXIS); - + left_br.add_stencil (right_br); left_br.translate_axis (-me->relative_coordinate (common_x, X_AXIS), X_AXIS); diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index a5782d23b0..738c465a7a 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,11 +30,11 @@ void Engraver_group::override (SCM sev) { Stream_event *ev = unsmob_stream_event (sev); - + sloppy_general_pushpop_property (context (), - ev->get_property ("symbol"), - ev->get_property ("property-path"), - ev->get_property ("value")); + ev->get_property ("symbol"), + ev->get_property ("property-path"), + ev->get_property ("value")); } IMPLEMENT_LISTENER (Engraver_group, revert); @@ -42,11 +42,11 @@ void Engraver_group::revert (SCM sev) { Stream_event *ev = unsmob_stream_event (sev); - + sloppy_general_pushpop_property (context (), - ev->get_property ("symbol"), - ev->get_property ("property-path"), - SCM_UNDEFINED); + ev->get_property ("symbol"), + ev->get_property ("property-path"), + SCM_UNDEFINED); } void @@ -79,8 +79,8 @@ Engraver_group::announce_grob (Grob_info info) Engraver_group *dad_eng = dad_con - ? dynamic_cast (dad_con->implementation ()) - : 0; + ? dynamic_cast (dad_con->implementation ()) + : 0; if (dad_eng) dad_eng->announce_grob (info); @@ -98,35 +98,35 @@ Engraver_group::acknowledge_grobs () for (vsize j = 0; j < announce_infos_.size (); j++) { Grob_info info = announce_infos_[j]; - + SCM meta = info.grob ()->internal_get_property (meta_sym); SCM nm = scm_assoc (name_sym, meta); if (scm_is_pair (nm)) - nm = scm_cdr (nm); + nm = scm_cdr (nm); else - continue; + continue; SCM acklist = scm_hashq_ref (acknowledge_hash_table_drul_[info.start_end ()], - nm, SCM_BOOL_F); - + nm, SCM_BOOL_F); + Engraver_dispatch_list *dispatch - = Engraver_dispatch_list::unsmob (acklist); + = Engraver_dispatch_list::unsmob (acklist); if (acklist == SCM_BOOL_F) - { - SCM ifaces - = scm_cdr (scm_assoc (ly_symbol2scm ("interfaces"), meta)); - acklist = Engraver_dispatch_list::create (get_simple_trans_list (), - ifaces, info.start_end ()); + { + SCM ifaces + = scm_cdr (scm_assoc (ly_symbol2scm ("interfaces"), meta)); + acklist = Engraver_dispatch_list::create (get_simple_trans_list (), + ifaces, info.start_end ()); - dispatch - = Engraver_dispatch_list::unsmob (acklist); + dispatch + = Engraver_dispatch_list::unsmob (acklist); - scm_hashq_set_x (acknowledge_hash_table_drul_[info.start_end ()], nm, acklist); - } + scm_hashq_set_x (acknowledge_hash_table_drul_[info.start_end ()], nm, acklist); + } if (dispatch) - dispatch->apply (info); + dispatch->apply (info); } } @@ -143,10 +143,10 @@ Engraver_group::pending_grob_count () const { Context *c = unsmob_context (scm_car (s)); Engraver_group *group - = dynamic_cast (c->implementation ()); + = dynamic_cast (c->implementation ()); if (group) - count += group->pending_grob_count (); + count += group->pending_grob_count (); } return count; } @@ -157,38 +157,37 @@ Engraver_group::do_announces () do { /* - DOCME: why is this inside the loop? + DOCME: why is this inside the loop? */ for (SCM s = context ()->children_contexts (); - scm_is_pair (s); s = scm_cdr (s)) - { - Context *c = unsmob_context (scm_car (s)); - Engraver_group *group - = dynamic_cast (c->implementation ()); - if (group) - group->do_announces (); - } - - + scm_is_pair (s); s = scm_cdr (s)) + { + Context *c = unsmob_context (scm_car (s)); + Engraver_group *group + = dynamic_cast (c->implementation ()); + if (group) + group->do_announces (); + } + while (1) - { - precomputed_translator_foreach (PROCESS_ACKNOWLEDGED); - if (announce_infos_.size () == 0) - break; - - acknowledge_grobs (); - announce_infos_.clear (); - } + { + precomputed_translator_foreach (PROCESS_ACKNOWLEDGED); + if (announce_infos_.size () == 0) + break; + + acknowledge_grobs (); + announce_infos_.clear (); + } } while (pending_grob_count () > 0); } Engraver_group::Engraver_group () { - acknowledge_hash_table_drul_[LEFT] - = acknowledge_hash_table_drul_[RIGHT] - = SCM_EOL; - + acknowledge_hash_table_drul_[LEFT] + = acknowledge_hash_table_drul_[RIGHT] + = SCM_EOL; + acknowledge_hash_table_drul_[LEFT] = scm_c_make_hash_table (61); acknowledge_hash_table_drul_[RIGHT] = scm_c_make_hash_table (61); } @@ -196,18 +195,18 @@ Engraver_group::Engraver_group () #include "translator.icc" ADD_TRANSLATOR_GROUP (Engraver_group, - /* doc */ - "A group of engravers taken together.", + /* doc */ + "A group of engravers taken together.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); void Engraver_group::derived_mark () const diff --git a/lily/engraver-scheme.cc b/lily/engraver-scheme.cc index fa71a1444b..8789171d7e 100644 --- a/lily/engraver-scheme.cc +++ b/lily/engraver-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,36 +21,36 @@ #include "grob.hh" LY_DEFINE (ly_engraver_make_grob, "ly:engraver-make-grob", - 3, 0, 0, (SCM engraver, SCM grob_name, SCM cause), - "Create a grob originating from given @var{engraver} instance," - " with given @var{grob-name}, a symbol." - " @var{cause} should either be another grob" - " or a music event.") + 3, 0, 0, (SCM engraver, SCM grob_name, SCM cause), + "Create a grob originating from given @var{engraver} instance," + " with given @var{grob-name}, a symbol." + " @var{cause} should either be another grob" + " or a music event.") { LY_ASSERT_TYPE (unsmob_engraver, engraver, 1); LY_ASSERT_TYPE (ly_is_symbol, grob_name, 2); LY_ASSERT_TYPE (ly_is_grob_cause, cause, 3); Grob *g = unsmob_engraver (engraver)-> - internal_make_grob(grob_name, cause, - ly_symbol2string (grob_name).c_str (), - "scheme", 0, "scheme"); + internal_make_grob (grob_name, cause, + ly_symbol2string (grob_name).c_str (), + "scheme", 0, "scheme"); return g->self_scm (); } LY_DEFINE (ly_engraver_announce_end_grob, "ly:engraver-announce-end-grob", - 3, 0, 0, (SCM engraver, SCM grob, SCM cause), - "Announce the end of a grob (i.e., the end of a spanner)" - " originating from given @var{engraver} instance, with" - " @var{grob} being a grob. @var{cause} should either" - " be another grob or a music event.") + 3, 0, 0, (SCM engraver, SCM grob, SCM cause), + "Announce the end of a grob (i.e., the end of a spanner)" + " originating from given @var{engraver} instance, with" + " @var{grob} being a grob. @var{cause} should either" + " be another grob or a music event.") { LY_ASSERT_TYPE (unsmob_engraver, engraver, 1); LY_ASSERT_SMOB (Grob, grob, 2); LY_ASSERT_TYPE (ly_is_grob_cause, cause, 3); unsmob_engraver (engraver)-> - announce_end_grob (unsmob_grob (grob), cause); + announce_end_grob (unsmob_grob (grob), cause); return SCM_UNSPECIFIED; } diff --git a/lily/engraver.cc b/lily/engraver.cc index 12615eb8d6..db1303d63c 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,12 +48,12 @@ Engraver::announce_end_grob (Grob_info inf) } Grob_info -Engraver::make_grob_info(Grob *e, SCM cause) +Engraver::make_grob_info (Grob *e, SCM cause) { /* TODO: Remove Music code when it's no longer needed */ if (Music *m = unsmob_music (cause)) { - cause = m->to_event ()->unprotect (); + cause = m->to_event (context ())->unprotect (); } if (e->get_property ("cause") == SCM_EOL && (unsmob_stream_event (cause) || unsmob_grob (cause))) @@ -72,7 +72,6 @@ Engraver::announce_grob (Grob *e, SCM cause) announce_grob (make_grob_info (e, cause)); } - /* CAUSE is the object (typically a grob or stream-event object) that was the reason for ending E. */ @@ -82,7 +81,6 @@ Engraver::announce_end_grob (Grob *e, SCM cause) announce_end_grob (make_grob_info (e, cause)); } - Engraver::Engraver () { } @@ -90,12 +88,12 @@ Engraver::Engraver () #ifndef NDEBUG static SCM creation_callback = SCM_EOL; LY_DEFINE (ly_set_grob_creation_callback, "ly:set-grob-creation-callback", - 1, 0, 0, (SCM cb), - "Specify a procedure that will be called every time a new grob" - " is created. The callback will receive as arguments the grob" - " that was created, the name of the C++ source file that caused" - " the grob to be created, and the corresponding line number in" - " the C++ source file.") + 1, 0, 0, (SCM cb), + "Specify a procedure that will be called every time a new grob" + " is created. The callback will receive as arguments the grob" + " that was created, the name of the C++ source file that caused" + " the grob to be created, and the corresponding line number in" + " the C++ source file.") { LY_ASSERT_TYPE (ly_is_procedure, cb, 1); @@ -107,11 +105,11 @@ LY_DEFINE (ly_set_grob_creation_callback, "ly:set-grob-creation-callback", Grob * Engraver::internal_make_grob (SCM symbol, - SCM cause, - char const * /* name */, - char const *file, - int line, - char const *fun) + SCM cause, + char const * /* name */, + char const *file, + int line, + char const *fun) { #ifdef NDEBUG (void)file; @@ -139,8 +137,8 @@ Engraver::internal_make_grob (SCM symbol, #ifndef NDEBUG if (ly_is_procedure (creation_callback)) scm_apply_0 (creation_callback, - scm_list_n (grob->self_scm (), scm_from_locale_string (file), - scm_from_int (line), scm_from_locale_string (fun), SCM_UNDEFINED)); + scm_list_n (grob->self_scm (), scm_from_locale_string (file), + scm_from_int (line), scm_from_locale_string (fun), SCM_UNDEFINED)); #endif return grob; @@ -148,8 +146,8 @@ Engraver::internal_make_grob (SCM symbol, Item * Engraver::internal_make_item (SCM x, SCM cause, - char const *name, - char const *file, int line, char const *fun) + char const *name, + char const *file, int line, char const *fun) { Item *it = dynamic_cast (internal_make_grob (x, cause, name, file, line, fun)); assert (it); @@ -158,24 +156,24 @@ Engraver::internal_make_item (SCM x, SCM cause, Paper_column * Engraver::internal_make_column (SCM x, char const *name, - char const *file, int line, char const *fun) + char const *file, int line, char const *fun) { return dynamic_cast (internal_make_grob (x, SCM_EOL, name, file, line, fun)); } Spanner * Engraver::internal_make_spanner (SCM x, SCM cause, char const *name, - char const *file, int line, char const *fun) + char const *file, int line, char const *fun) { Spanner *sp = dynamic_cast (internal_make_grob (x, cause, name, file, line, fun)); assert (sp); return sp; } -Engraver* +Engraver * unsmob_engraver (SCM eng) { - return dynamic_cast (unsmob_translator (eng)); + return dynamic_cast (unsmob_translator (eng)); } bool @@ -187,17 +185,16 @@ ly_is_grob_cause (SCM obj) #include "translator.icc" ADD_TRANSLATOR (Engraver, - /* doc */ - "Base class for engravers. Does nothing, so it is not used.", - - /* create */ - "", + /* doc */ + "Base class for engravers. Does nothing, so it is not used.", - /* read */ - "", + /* create */ + "", - /* write */ - "" - ); + /* read */ + "", + /* write */ + "" + ); diff --git a/lily/episema-engraver.cc b/lily/episema-engraver.cc index 38d3950848..233de4efbd 100644 --- a/lily/episema-engraver.cc +++ b/lily/episema-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Neil Puttock + Copyright (C) 2010--2012 Neil Puttock LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,28 +72,28 @@ Episema_engraver::process_music () if (event_drul_[START]) { if (current_event_) - event_drul_[START]->origin ()->warning (_ ("already have an episema")); + event_drul_[START]->origin ()->warning (_ ("already have an episema")); else - { - current_event_ = event_drul_[START]; - span_ = make_spanner ("Episema", event_drul_[START]->self_scm ()); + { + current_event_ = event_drul_[START]; + span_ = make_spanner ("Episema", event_drul_[START]->self_scm ()); - event_drul_[START] = 0; - } + event_drul_[START] = 0; + } } if (event_drul_[STOP]) { if (!span_) - event_drul_[STOP] - ->origin ()->warning (_ ("cannot find start of episema")); + event_drul_[STOP] + ->origin ()->warning (_ ("cannot find start of episema")); else - { - finished_ = span_; - announce_end_grob (finished_, SCM_EOL); - span_ = 0; - current_event_ = 0; - note_columns_.clear (); - } + { + finished_ = span_; + announce_end_grob (finished_, SCM_EOL); + span_ = 0; + current_event_ = 0; + note_columns_.clear (); + } } } @@ -103,12 +103,12 @@ Episema_engraver::typeset_all () if (finished_) { if (!finished_->get_bound (RIGHT)) - { - Grob *col = (note_columns_.size () - ? note_columns_.back () - : unsmob_grob (get_property ("currentMusicalColumn"))); - finished_->set_bound (RIGHT, col); - } + { + Grob *col = (note_columns_.size () + ? note_columns_.back () + : unsmob_grob (get_property ("currentMusicalColumn"))); + finished_->set_bound (RIGHT, col); + } finished_ = 0; } } @@ -119,8 +119,8 @@ Episema_engraver::stop_translation_timestep () if (span_ && !span_->get_bound (LEFT)) { Grob *col = (note_columns_.size () - ? note_columns_.front () - : unsmob_grob (get_property ("currentMusicalColumn"))); + ? note_columns_.front () + : unsmob_grob (get_property ("currentMusicalColumn"))); span_->set_bound (LEFT, col); } @@ -165,15 +165,15 @@ ADD_ACKNOWLEDGER (Episema_engraver, note_column); ADD_ACKNOWLEDGER (Episema_engraver, note_head); ADD_TRANSLATOR (Episema_engraver, - /* doc */ - "Create an @emph{Editio Vaticana}-style episema line.", + /* doc */ + "Create an @emph{Editio Vaticana}-style episema line.", - /* create */ - "Episema ", + /* create */ + "Episema ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/event-chord-iterator.cc b/lily/event-chord-iterator.cc index a22c9ace6b..cab7b259b0 100644 --- a/lily/event-chord-iterator.cc +++ b/lily/event-chord-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,17 +44,17 @@ Event_chord_iterator::process (Moment m) if (last_processed_mom_ < Moment (0)) { for (SCM s = get_music ()->get_property ("elements"); - scm_is_pair (s); s = scm_cdr (s)) - { - Music *mus = unsmob_music (scm_car (s)); - report_event (mus); - } - for (SCM s = get_music ()->get_property ("events"); - scm_is_pair (s); s = scm_cdr (s)) - { - Stream_event *ev = unsmob_stream_event (scm_car (s)); - get_outlet ()->event_source ()->broadcast (ev); - } + scm_is_pair (s); s = scm_cdr (s)) + { + Music *mus = unsmob_music (scm_car (s)); + report_event (mus); + } + for (SCM s = get_music ()->get_property ("articulations"); + scm_is_pair (s); s = scm_cdr (s)) + { + Music *mus = unsmob_music (scm_car (s)); + report_event (mus); + } } Simple_music_iterator::process (m); } diff --git a/lily/event-iterator.cc b/lily/event-iterator.cc index fd8e376641..c47dea3ecb 100644 --- a/lily/event-iterator.cc +++ b/lily/event-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc index 49fcbcaf3f..19e0406279 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Glen Prideaux , + Copyright (C) 1999--2012 Glen Prideaux , Han-Wen Nienhuys , Jan Nieuwenhuizen @@ -67,7 +67,6 @@ Extender_engraver::listen_extender (Stream_event *ev) ASSIGN_EVENT_ONCE (ev_, ev); } - /* A CompletizeExtenderEvent is sent at the end of each lyrics block to ensure any pending extender can be correctly terminated if the lyrics @@ -116,33 +115,33 @@ Extender_engraver::stop_translation_timestep () Grob *h = voice ? get_current_note_head (voice, to_boolean (get_property ("includeGraceNotes"))) : 0; if (h) - { - if (extender_) - { - Pointer_group_interface::add_grob (extender_, - ly_symbol2scm ("heads"), h); - } - - if (pending_extender_) - { - Pointer_group_interface::add_grob (pending_extender_, - ly_symbol2scm ("heads"), h); - } - } + { + if (extender_) + { + Pointer_group_interface::add_grob (extender_, + ly_symbol2scm ("heads"), h); + } + + if (pending_extender_) + { + Pointer_group_interface::add_grob (pending_extender_, + ly_symbol2scm ("heads"), h); + } + } else - { - if (pending_extender_ - && !get_property ("extendersOverRests")) - { - completize_extender (pending_extender_); - pending_extender_ = 0; - } - } + { + if (pending_extender_ + && !get_property ("extendersOverRests")) + { + completize_extender (pending_extender_); + pending_extender_ = 0; + } + } if (extender_) - { - pending_extender_ = extender_; - extender_ = 0; - } + { + pending_extender_ = extender_; + extender_ = 0; + } } ev_ = 0; @@ -155,7 +154,7 @@ completize_extender (Spanner *sp) { extract_item_set (sp, "heads", heads); if (heads.size ()) - sp->set_bound (RIGHT, heads.back ()); + sp->set_bound (RIGHT, heads.back ()); } } @@ -167,7 +166,7 @@ Extender_engraver::finalize () completize_extender (extender_); if (!extender_->get_bound (RIGHT)) - extender_->warning (_ ("unterminated extender")); + extender_->warning (_ ("unterminated extender")); extender_ = 0; } @@ -176,23 +175,23 @@ Extender_engraver::finalize () completize_extender (pending_extender_); if (!pending_extender_->get_bound (RIGHT)) - pending_extender_->warning (_ ("unterminated extender")); + pending_extender_->warning (_ ("unterminated extender")); pending_extender_ = 0; } } ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable); ADD_TRANSLATOR (Extender_engraver, - /* doc */ - "Create lyric extenders.", + /* doc */ + "Create lyric extenders.", - /* create */ - "LyricExtender ", + /* create */ + "LyricExtender ", - /* read */ - "extendersOverRests " - "includeGraceNotes ", + /* read */ + "extendersOverRests " + "includeGraceNotes ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/figured-bass-continuation.cc b/lily/figured-bass-continuation.cc index 7fd868c559..bc216a2c4a 100644 --- a/lily/figured-bass-continuation.cc +++ b/lily/figured-bass-continuation.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -26,13 +26,12 @@ #include "pointer-group-interface.hh" #include "axis-group-interface.hh" - #include "horizontal-bracket.hh" struct Figured_bass_continuation { DECLARE_GROB_INTERFACE (); - + public: DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (center_on_figures, (SCM)); @@ -42,7 +41,7 @@ MAKE_SCHEME_CALLBACK (Figured_bass_continuation, center_on_figures, 1); SCM Figured_bass_continuation::center_on_figures (SCM grob) { - Spanner *me = dynamic_cast (unsmob_grob (grob)); + Spanner *me = dynamic_cast (unsmob_grob (grob)); extract_grob_set (me, "figures", figures); if (figures.empty ()) return scm_from_double (0.0); @@ -58,45 +57,44 @@ MAKE_SCHEME_CALLBACK (Figured_bass_continuation, print, 1); SCM Figured_bass_continuation::print (SCM grob) { - Spanner *me = dynamic_cast (unsmob_grob (grob)); + Spanner *me = dynamic_cast (unsmob_grob (grob)); + + Real thick + = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")) + * robust_scm2double (me->get_property ("thickness"), 1); - Real thick = - me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")) - * robust_scm2double (me->get_property ("thickness"), 1); - Interval spanned; - Direction d = LEFT; + Grob *common = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), - X_AXIS); - do + X_AXIS); + for (LEFT_and_RIGHT (d)) { Item *bound = me->get_bound (d); - Direction extdir = - (d == LEFT && to_boolean (bound->get_property ("implicit"))) - ? LEFT : RIGHT; + Direction extdir + = (d == LEFT && to_boolean (bound->get_property ("implicit"))) + ? LEFT : RIGHT; - spanned[d] - = robust_relative_extent (bound, common, X_AXIS)[extdir] - - me->relative_coordinate (common, X_AXIS); + spanned[d] + = robust_relative_extent (bound, common, X_AXIS)[extdir] + - me->relative_coordinate (common, X_AXIS); } - while (flip (&d) != LEFT); spanned.widen (- robust_scm2double (me->get_property ("padding"), 0.2)); - + Stencil extender; if (!spanned.is_empty ()) extender = Line_interface::make_line (thick, - Offset (spanned[LEFT], 0), - Offset (spanned[RIGHT], 0)); - + Offset (spanned[LEFT], 0), + Offset (spanned[RIGHT], 0)); + return extender.smobbed_copy (); } ADD_INTERFACE (Figured_bass_continuation, - "Simple extender line between bounds.", - - /* properties */ - "thickness " - "padding " - "figures " - ); - + "Simple extender line between bounds.", + + /* properties */ + "thickness " + "padding " + "figures " + ); + diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc index c0b4c09b92..2f8004f84c 100644 --- a/lily/figured-bass-engraver.cc +++ b/lily/figured-bass-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -110,7 +110,7 @@ struct Figured_bass_engraver : public Engraver void add_brackets (); void create_grobs (); - void center_continuations (vector const &consecutive_lines); + void center_continuations (vector const &consecutive_lines); void center_repeated_continuations (); protected: vector groups_; @@ -154,7 +154,7 @@ Figured_bass_engraver::start_translation_timestep () { if (now_mom ().main_part_ < stop_moment_.main_part_ || now_mom ().grace_part_ < Rational (0)) - return ; + return; have_rest_ = 0; new_events_.clear (); @@ -170,11 +170,11 @@ Figured_bass_engraver::stop_translation_timestep () if (groups_.empty () || now_mom ().main_part_ < stop_moment_.main_part_ || now_mom ().grace_part_ < Rational (0)) - return ; + return; bool found = false; for (vsize i = 0; !found && i < groups_.size (); i++) - found = found || groups_[i].current_event_; + found = found || groups_[i].current_event_; if (!found) clear_spanners (); @@ -192,7 +192,7 @@ void Figured_bass_engraver::listen_bass_figure (Stream_event *ev) { new_event_found_ = true; - Moment stop = now_mom () + get_event_length (ev, now_mom ()); + Moment stop = now_mom () + get_event_length (ev, now_mom ()); stop_moment_ = max (stop_moment_, stop); // Handle no-continuation here, don't even add it to the already existing @@ -215,27 +215,24 @@ Figured_bass_engraver::listen_bass_figure (Stream_event *ev) } void -Figured_bass_engraver::center_continuations (vector const &consecutive_lines) +Figured_bass_engraver::center_continuations (vector const &consecutive_lines) { - if (consecutive_lines.size () == 2) - { - vector left_figs; - for (vsize j = consecutive_lines.size (); j--;) - left_figs.push_back (consecutive_lines[j]->get_bound (LEFT)); + vector left_figs; + for (vsize j = consecutive_lines.size (); j--;) + left_figs.push_back (consecutive_lines[j]->get_bound (LEFT)); - SCM ga = Grob_array::make_array (); - unsmob_grob_array (ga)->set_array (left_figs); + SCM ga = Grob_array::make_array (); + unsmob_grob_array (ga)->set_array (left_figs); - for (vsize j = consecutive_lines.size (); j--;) - consecutive_lines[j]->set_object ("figures", - unsmob_grob_array (ga)->smobbed_copy ()); - } + for (vsize j = consecutive_lines.size (); j--;) + consecutive_lines[j]->set_object ("figures", + unsmob_grob_array (ga)->smobbed_copy ()); } void Figured_bass_engraver::center_repeated_continuations () { - vector consecutive_lines; + vector consecutive_lines; for (vsize i = 0; i <= groups_.size (); i++) { if (i < groups_.size () @@ -270,13 +267,13 @@ Figured_bass_engraver::clear_spanners () { if (groups_[i].group_) { - announce_end_grob (groups_[i].group_ , SCM_EOL); + announce_end_grob (groups_[i].group_, SCM_EOL); groups_[i].group_ = 0; } if (groups_[i].continuation_line_) { - announce_end_grob (groups_[i].continuation_line_ , SCM_EOL); + announce_end_grob (groups_[i].continuation_line_, SCM_EOL); groups_[i].continuation_line_ = 0; } } @@ -293,8 +290,8 @@ Figured_bass_engraver::process_music () // If we have a rest, or we have no new or continued events, clear all spanners bool ignore_rest = to_boolean (get_property ("ignoreFiguredBassRest")); - if ((ignore_rest && have_rest_) || - (!continuation_ && new_events_.empty ())) + if ((ignore_rest && have_rest_) + || (!continuation_ && new_events_.empty ())) { clear_spanners (); groups_.clear (); @@ -358,9 +355,9 @@ Figured_bass_engraver::process_music () { if (!group.continuation_line_) { - Spanner * line + Spanner *line = make_spanner ("BassFigureContinuation", SCM_EOL); - Item * item = group.figure_item_; + Item *item = group.figure_item_; group.continuation_line_ = line; line->set_bound (LEFT, item); @@ -381,13 +378,13 @@ Figured_bass_engraver::process_music () /* Ugh, repeated code. */ - vector consecutive; + vector consecutive; if (to_boolean (get_property ("figuredBassCenterContinuations"))) { for (vsize i = 0; i <= junk_continuations.size (); i++) { if (i < junk_continuations.size () - && (i == 0 || junk_continuations[i-1] == junk_continuations[i] - 1)) + && (i == 0 || junk_continuations[i - 1] == junk_continuations[i] - 1)) consecutive.push_back (groups_[junk_continuations[i]].continuation_line_); else { @@ -410,7 +407,7 @@ void Figured_bass_engraver::create_grobs () { Grob *muscol - = dynamic_cast (unsmob_grob (get_property ("currentMusicalColumn"))); + = dynamic_cast (unsmob_grob (get_property ("currentMusicalColumn"))); if (!alignment_) { alignment_ = make_spanner ("BassFigureAlignment", SCM_EOL); @@ -478,9 +475,9 @@ Figured_bass_engraver::create_grobs () void Figured_bass_engraver::add_brackets () { - vector encompass; + vector encompass; bool inside = false; - for (vsize i = 0; i < groups_.size (); i ++) + for (vsize i = 0; i < groups_.size (); i++) { if (!groups_[i].current_event_) continue; @@ -491,11 +488,11 @@ Figured_bass_engraver::add_brackets () if (inside && groups_[i].figure_item_) encompass.push_back (groups_[i].figure_item_); - if (to_boolean (groups_[i].current_event_->get_property ("bracket-stop"))) + if (to_boolean (groups_[i].current_event_->get_property ("bracket-stop"))) { inside = false; - Item * brack = make_item ("BassFigureBracket", groups_[i].current_event_->self_scm ()); + Item *brack = make_item ("BassFigureBracket", groups_[i].current_event_->self_scm ()); for (vsize j = 0; j < encompass.size (); j++) { Pointer_group_interface::add_grob (brack, @@ -528,4 +525,4 @@ ADD_TRANSLATOR (Figured_bass_engraver, /* write */ "" - ); + ); diff --git a/lily/figured-bass-position-engraver.cc b/lily/figured-bass-position-engraver.cc index 6db165a9ba..5fa27a69cb 100644 --- a/lily/figured-bass-position-engraver.cc +++ b/lily/figured-bass-position-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -33,8 +33,8 @@ class Figured_bass_position_engraver : public Engraver Spanner *bass_figure_alignment_; Spanner *positioner_; - vector support_; - vector span_support_; + vector support_; + vector span_support_; protected: DECLARE_ACKNOWLEDGER (note_column); DECLARE_ACKNOWLEDGER (slur); @@ -72,13 +72,13 @@ Figured_bass_position_engraver::stop_spanner () { positioner_->set_bound (RIGHT, bass_figure_alignment_->get_bound (RIGHT)); } - + positioner_ = 0; bass_figure_alignment_ = 0; } void -Figured_bass_position_engraver::finalize () +Figured_bass_position_engraver::finalize () { stop_spanner (); } @@ -92,8 +92,8 @@ Figured_bass_position_engraver::acknowledge_note_column (Grob_info info) void Figured_bass_position_engraver::acknowledge_end_slur (Grob_info info) { - vector::iterator i = find (span_support_.begin (), span_support_.end (), - info.grob ()); + vector::iterator i = find (span_support_.begin (), span_support_.end (), + info.grob ()); if (i < span_support_.end ()) span_support_.erase (i); @@ -117,9 +117,9 @@ Figured_bass_position_engraver::stop_translation_timestep () if (positioner_) { for (vsize i = 0; i < span_support_.size (); i++) - Side_position_interface::add_support (positioner_, span_support_[i]); + Side_position_interface::add_support (positioner_, span_support_[i]); for (vsize i = 0; i < support_.size (); i++) - Side_position_interface::add_support (positioner_, support_[i]); + Side_position_interface::add_support (positioner_, support_[i]); } support_.clear (); @@ -134,11 +134,10 @@ Figured_bass_position_engraver::acknowledge_end_bass_figure_alignment (Grob_info void Figured_bass_position_engraver::acknowledge_bass_figure_alignment (Grob_info info) { - bass_figure_alignment_ = dynamic_cast (info.grob ()); + bass_figure_alignment_ = dynamic_cast (info.grob ()); start_spanner (); } - ADD_ACKNOWLEDGER (Figured_bass_position_engraver, note_column); ADD_ACKNOWLEDGER (Figured_bass_position_engraver, slur); ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, slur); @@ -148,15 +147,15 @@ ADD_ACKNOWLEDGER (Figured_bass_position_engraver, bass_figure_alignment); ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, bass_figure_alignment); ADD_TRANSLATOR (Figured_bass_position_engraver, - /* doc */ - "Position figured bass alignments over notes.", - - /* create */ - "BassFigureAlignmentPositioning ", - - /* read */ - "", - - /* write */ - "" - ); + /* doc */ + "Position figured bass alignments over notes.", + + /* create */ + "BassFigureAlignmentPositioning ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/file-name-map.cc b/lily/file-name-map.cc index e0fd5d5fba..96be62c9a2 100644 --- a/lily/file-name-map.cc +++ b/lily/file-name-map.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,8 +34,8 @@ map_file_name (string s) } LY_DEFINE (ly_add_file_name_alist, "ly:add-file-name-alist", - 1, 0, 0, (SCM alist), - "Add mappings for error messages from @var{alist}.") + 1, 0, 0, (SCM alist), + "Add mappings for error messages from @var{alist}.") { for (SCM s = alist; scm_is_pair (s); s = scm_cdr (s)) { diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc index 8002378698..a364947b08 100644 --- a/lily/fingering-engraver.cc +++ b/lily/fingering-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,8 @@ class Fingering_engraver : public Engraver { - vector events_; - vector fingerings_; + vector events_; + vector fingerings_; public: TRANSLATOR_DECLARATIONS (Fingering_engraver); @@ -39,7 +39,6 @@ protected: void stop_translation_timestep (); void process_music (); DECLARE_TRANSLATOR_LISTENER (fingering); - DECLARE_TRANSLATOR_LISTENER (stroke_finger); DECLARE_ACKNOWLEDGER (rhythmic_head); DECLARE_ACKNOWLEDGER (stem); @@ -54,17 +53,6 @@ Fingering_engraver::listen_fingering (Stream_event *ev) events_.push_back (ev); } -IMPLEMENT_TRANSLATOR_LISTENER (Fingering_engraver, stroke_finger); -void -Fingering_engraver::listen_stroke_finger (Stream_event * /* ev */) -{ - /* - FIXME: should do something. - - This function is mainly here to shut up a warning - */ -} - void Fingering_engraver::acknowledge_stem (Grob_info inf) { @@ -80,7 +68,7 @@ Fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) Grob *t = fingerings_[i]; Side_position_interface::add_support (t, inf.grob ()); if (!t->get_parent (X_AXIS)) - t->set_parent (inf.grob (), X_AXIS); + t->set_parent (inf.grob (), X_AXIS); } } @@ -130,9 +118,9 @@ Fingering_engraver::make_script (Direction d, Stream_event *r, int i) if (!is_direction (fingering->get_property_data ("direction"))) { if (d) - fingering->set_property ("direction", scm_from_int (d)); + fingering->set_property ("direction", scm_from_int (d)); else - fingering->set_property ("direction", scm_from_int (RIGHT)); + fingering->set_property ("direction", scm_from_int (RIGHT)); } fingerings_.push_back (fingering); @@ -153,15 +141,15 @@ ADD_ACKNOWLEDGER (Fingering_engraver, rhythmic_head); ADD_ACKNOWLEDGER (Fingering_engraver, stem); ADD_TRANSLATOR (Fingering_engraver, - /* doc */ - "Create fingering scripts.", + /* doc */ + "Create fingering scripts.", - /* create */ - "Fingering ", + /* create */ + "Fingering ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/flag.cc b/lily/flag.cc new file mode 100644 index 0000000000..f997d6fe45 --- /dev/null +++ b/lily/flag.cc @@ -0,0 +1,195 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 1996--2012 Han-Wen Nienhuys + Jan Nieuwenhuizen + + 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 . +*/ + +#include "stem.hh" + +#include "directional-element-interface.hh" +#include "font-interface.hh" +#include "grob.hh" +#include "international.hh" +#include "output-def.hh" +#include "staff-symbol-referencer.hh" +#include "stencil.hh" +#include "warn.hh" + +class Flag +{ +public: + DECLARE_SCHEME_CALLBACK (print, (SCM)); + DECLARE_SCHEME_CALLBACK (width, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM)); + DECLARE_SCHEME_CALLBACK (pure_calc_y_offset, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (calc_x_offset, (SCM)); + DECLARE_GROB_INTERFACE (); + + static SCM internal_calc_y_offset (SCM smob, bool pure); +}; + +MAKE_SCHEME_CALLBACK (Flag, width, 1); +SCM +Flag::width (SCM smob) +{ + Grob *me = unsmob_grob (smob); + Stencil *sten = unsmob_stencil (me->get_property ("stencil")); + if (!sten) + return ly_interval2scm (Interval (0.0, 0.0)); + + Grob *stem = me->get_parent (X_AXIS); + + /* + TODO: + This reproduces a bad hard-coding that has been in the code for quite some time: + the bounding boxes for the flags are slightly off and need to be fixed. + */ + + return ly_interval2scm (sten->extent (X_AXIS) - stem->extent (stem, X_AXIS)[RIGHT]); +} +MAKE_SCHEME_CALLBACK (Flag, print, 1); +SCM +Flag::print (SCM smob) +{ + Grob *me = unsmob_grob (smob); + Grob *stem = me->get_parent (X_AXIS); + + Direction d = get_grob_direction (stem); + int log = Stem::duration_log (stem); + string flag_style; + + SCM flag_style_scm = me->get_property ("style"); + if (scm_is_symbol (flag_style_scm)) + flag_style = ly_symbol2string (flag_style_scm); + + if (flag_style == "no-flag") + return Stencil ().smobbed_copy (); + + bool adjust = true; + + string staffline_offs; + if (flag_style == "mensural") + /* Mensural notation: For notes on staff lines, use different + flags than for notes between staff lines. The idea is that + flags are always vertically aligned with the staff lines, + regardless if the note head is on a staff line or between two + staff lines. In other words, the inner end of a flag always + touches a staff line. + */ + { + if (adjust) + { + Real ss = Staff_symbol_referencer::staff_space (me); + int p = (int) (rint (stem->extent (stem, Y_AXIS)[d] * 2 / ss)); + staffline_offs + = Staff_symbol_referencer::on_line (stem, p) ? "0" : "1"; + } + else + staffline_offs = "2"; + } + else + staffline_offs = ""; + + char dir = (d == UP) ? 'u' : 'd'; + string font_char = flag_style + + to_string (dir) + staffline_offs + to_string (log); + Font_metric *fm = Font_interface::get_default_font (me); + Stencil flag = fm->find_by_name ("flags." + font_char); + if (flag.is_empty ()) + me->warning (_f ("flag `%s' not found", font_char)); + + /* + TODO: maybe property stroke-style should take different values, + e.g. "" (i.e. no stroke), "single" and "double" (currently, it's + '() or "grace"). */ + SCM stroke_style_scm = me->get_property ("stroke-style"); + if (scm_is_string (stroke_style_scm)) + { + string stroke_style = ly_scm2string (stroke_style_scm); + if (!stroke_style.empty ()) + { + string font_char = flag_style + to_string (dir) + stroke_style; + Stencil stroke = fm->find_by_name ("flags." + font_char); + if (stroke.is_empty ()) + { + font_char = to_string (dir) + stroke_style; + stroke = fm->find_by_name ("flags." + font_char); + } + if (stroke.is_empty ()) + me->warning (_f ("flag stroke `%s' not found", font_char)); + else + flag.add_stencil (stroke); + } + } + + return flag.smobbed_copy (); +} + +MAKE_SCHEME_CALLBACK (Flag, pure_calc_y_offset, 3); +SCM +Flag::pure_calc_y_offset (SCM smob, + SCM /* beg */, + SCM /* end */) +{ + return internal_calc_y_offset (smob, true); +} + +MAKE_SCHEME_CALLBACK (Flag, calc_y_offset, 1); +SCM +Flag::calc_y_offset (SCM smob) +{ + return internal_calc_y_offset (smob, false); +} + +SCM +Flag::internal_calc_y_offset (SCM smob, bool pure) +{ + Grob *me = unsmob_grob (smob); + Grob *stem = me->get_parent (X_AXIS); + Direction d = get_grob_direction (stem); + + Real blot + = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); + + Real y2 = pure + ? stem->pure_height (stem, 0, INT_MAX)[d] + : stem->extent (stem, Y_AXIS)[d]; + + return scm_from_double (y2 - d * blot / 2); +} + +MAKE_SCHEME_CALLBACK (Flag, calc_x_offset, 1); +SCM +Flag::calc_x_offset (SCM smob) +{ + Grob *me = unsmob_grob (smob); + Grob *stem = me->get_parent (X_AXIS); + return scm_from_double (stem->extent (stem, X_AXIS)[RIGHT]); +} + +ADD_INTERFACE (Flag, + "A flag that gets attached to a stem." + "The style property is symbol determining" + " what style of flag glyph is typeset on a" + " @code{Stem}. Valid options include @code{'()}" + " for standard flags, @code{'mensural} and" + " @code{'no-flag}, which switches off the flag.", + + /* properties */ + "style " + "stroke-style " + ); diff --git a/lily/font-config-scheme.cc b/lily/font-config-scheme.cc index cc01f20692..c759ab901c 100644 --- a/lily/font-config-scheme.cc +++ b/lily/font-config-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,14 +38,14 @@ display_fontset (FcFontSet *fs) font = FcNameUnparse (fs->fonts[j]); if (FcPatternGetString (fs->fonts[j], FC_FILE, 0, &str) == FcResultMatch) - retval += String_convert::form_string ("FILE %s\n", str); + retval += String_convert::form_string ("FILE %s\n", str); if (FcPatternGetString (fs->fonts[j], FC_INDEX, 0, &str) == FcResultMatch) - retval += String_convert::form_string ("INDEX %s\n", str); + retval += String_convert::form_string ("INDEX %s\n", str); if (FcPatternGetString (fs->fonts[j], FC_FAMILY, 0, &str) == FcResultMatch) - retval += String_convert::form_string ("family %s\n ", str); + retval += String_convert::form_string ("family %s\n ", str); if (FcPatternGetString (fs->fonts[j], - "designsize", 0, &str) == FcResultMatch) - retval += String_convert::form_string ("designsize %s\n ", str); + "designsize", 0, &str) == FcResultMatch) + retval += String_convert::form_string ("designsize %s\n ", str); retval += String_convert::form_string ("%s\n", (const char *)font); free (font); @@ -98,10 +98,9 @@ display_list (FcConfig *fcc) return retval; } - LY_DEFINE (ly_font_config_get_font_file, "ly:font-config-get-font-file", 1, 0, 0, - (SCM name), - "Get the file for font @var{name}.") + (SCM name), + "Get the file for font @var{name}.") { LY_ASSERT_TYPE (scm_is_string, name, 1); @@ -127,10 +126,10 @@ LY_DEFINE (ly_font_config_get_font_file, "ly:font-config-get-font-file", 1, 0, 0 return scm_result; } - + LY_DEFINE (ly_font_config_display_fonts, "ly:font-config-display-fonts", 0, 0, 0, - (), - "Dump a list of all fonts visible to FontConfig.") + (), + "Dump a list of all fonts visible to FontConfig.") { string str = display_list (NULL); str += display_config (NULL); @@ -141,8 +140,8 @@ LY_DEFINE (ly_font_config_display_fonts, "ly:font-config-display-fonts", 0, 0, 0 } LY_DEFINE (ly_font_config_add_directory, "ly:font-config-add-directory", 1, 0, 0, - (SCM dir), - "Add directory @var{dir} to FontConfig.") + (SCM dir), + "Add directory @var{dir} to FontConfig.") { LY_ASSERT_TYPE (scm_is_string, dir, 1); @@ -150,15 +149,15 @@ LY_DEFINE (ly_font_config_add_directory, "ly:font-config-add-directory", 1, 0, 0 if (!FcConfigAppFontAddDir (0, (const FcChar8 *)d.c_str ())) error (_f ("failed adding font directory: %s", d.c_str ())); - else if (be_verbose_global) - message (_f ("adding font directory: %s", d.c_str ())); + else + debug_output (_f ("Adding font directory: %s", d.c_str ())); return SCM_UNSPECIFIED; } LY_DEFINE (ly_font_config_add_font, "ly:font-config-add-font", 1, 0, 0, - (SCM font), - "Add font @var{font} to FontConfig.") + (SCM font), + "Add font @var{font} to FontConfig.") { LY_ASSERT_TYPE (scm_is_string, font, 1); @@ -166,8 +165,8 @@ LY_DEFINE (ly_font_config_add_font, "ly:font-config-add-font", 1, 0, 0, if (!FcConfigAppFontAddFile (0, (const FcChar8 *)f.c_str ())) error (_f ("failed adding font file: %s", f.c_str ())); - else if (be_verbose_global) - message (_f ("adding font file: %s", f.c_str ())); + else + debug_output (_f ("Adding font file: %s", f.c_str ())); return SCM_UNSPECIFIED; } diff --git a/lily/font-config.cc b/lily/font-config.cc index 54f04bee8e..641192b12c 100644 --- a/lily/font-config.cc +++ b/lily/font-config.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,41 +30,37 @@ #include "main.hh" #include "warn.hh" - FcConfig *font_config_global = 0; void init_fontconfig () { - if (be_verbose_global) - message (_ ("Initializing FontConfig...")); + debug_output (_ ("Initializing FontConfig...")); /* TODO: Find a way for Fontconfig to update its cache, if needed. */ font_config_global = FcInitLoadConfig (); - + vector dirs; /* Extra trailing slash suddenly breaks fontconfig (fc-cache 2.5.0) on windows. */ dirs.push_back (lilypond_datadir + "/fonts/otf"); - + for (vsize i = 0; i < dirs.size (); i++) { string dir = dirs[i]; if (!FcConfigAppFontAddDir (font_config_global, (FcChar8 *)dir.c_str ())) - error (_f ("failed adding font directory: %s", dir.c_str ())); - else if (be_verbose_global) - message (_f ("adding font directory: %s", dir.c_str ())); + error (_f ("failed adding font directory: %s", dir.c_str ())); + else + debug_output (_f ("Adding font directory: %s", dir.c_str ())); } - - if (be_verbose_global) - message (_ ("Building font database...")); + + debug_output (_ ("Building font database...")); FcConfigBuildFonts (font_config_global); FcConfigSetCurrent (font_config_global); - if (be_verbose_global) - message ("\n"); + debug_output ("\n"); } diff --git a/lily/font-interface.cc b/lily/font-interface.cc index 4085140311..629077415b 100644 --- a/lily/font-interface.cc +++ b/lily/font-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -61,15 +61,15 @@ Font_interface::text_font_alist_chain (Grob *g) } ADD_INTERFACE (Font_interface, - "Any symbol that is typeset through fixed sets of glyphs," - " (i.e., fonts).", + "Any symbol that is typeset through fixed sets of glyphs," + " (i.e., fonts).", - /* properties */ - "font " - "font-encoding " - "font-family " - "font-name " - "font-series " - "font-shape " - "font-size " - ); + /* properties */ + "font " + "font-encoding " + "font-family " + "font-name " + "font-series " + "font-shape " + "font-size " + ); diff --git a/lily/font-metric-scheme.cc b/lily/font-metric-scheme.cc index fda67e11ba..6d225dfeae 100644 --- a/lily/font-metric-scheme.cc +++ b/lily/font-metric-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,17 +24,17 @@ #include "modified-font-metric.hh" LY_DEFINE (ly_font_get_glyph, "ly:font-get-glyph", - 2, 0, 0, - (SCM font, SCM name), - "Return a stencil from @var{font} for the glyph named @var{name}." - " If the glyph is not available, return an empty stencil.\n" - "\n" - "Note that this command can only be used to access glyphs from" - " fonts loaded with @code{ly:system-font-load}; currently, this" - " means either the Emmentaler or Emmentaler-Brace " + 2, 0, 0, + (SCM font, SCM name), + "Return a stencil from @var{font} for the glyph named @var{name}." + " If the glyph is not available, return an empty stencil.\n" + "\n" + "Note that this command can only be used to access glyphs from" + " fonts loaded with @code{ly:system-font-load}; currently, this" + " means either the Emmentaler or Emmentaler-Brace " " fonts, corresponding" - " to the font encodings @code{fetaMusic} and @code{fetaBraces}," - " respectively.") + " to the font encodings @code{fetaMusic} and @code{fetaBraces}," + " respectively.") { Font_metric *fm = unsmob_metrics (font); LY_ASSERT_SMOB (Font_metric, font, 1); @@ -47,15 +47,15 @@ LY_DEFINE (ly_font_get_glyph, "ly:font-get-glyph", } LY_DEFINE (ly_font_glyph_name_to_index, "ly:font-glyph-name-to-index", - 2, 0, 0, - (SCM font, SCM name), - "Return the index for @var{name} in @var{font}.\n" - "\n" - "Note that this command can only be used to access glyphs from" - " fonts loaded with @code{ly:system-font-load}; currently, this" - " means either the Emmentaler or Emmentaler-Brace fonts, corresponding" - " to the font encodings @code{fetaMusic} and @code{fetaBraces}," - " respectively.") + 2, 0, 0, + (SCM font, SCM name), + "Return the index for @var{name} in @var{font}.\n" + "\n" + "Note that this command can only be used to access glyphs from" + " fonts loaded with @code{ly:system-font-load}; currently, this" + " means either the Emmentaler or Emmentaler-Brace fonts, corresponding" + " to the font encodings @code{fetaMusic} and @code{fetaBraces}," + " respectively.") { Font_metric *fm = unsmob_metrics (font); LY_ASSERT_SMOB (Font_metric, font, 1); @@ -65,15 +65,15 @@ LY_DEFINE (ly_font_glyph_name_to_index, "ly:font-glyph-name-to-index", } LY_DEFINE (ly_font_index_to_charcode, "ly:font-index-to-charcode", - 2, 0, 0, - (SCM font, SCM index), - "Return the character code for @var{index} in @var{font}.\n" - "\n" - "Note that this command can only be used to access glyphs from" - " fonts loaded with @code{ly:system-font-load}; currently, this" - " means either the Emmentaler or Emmentaler-Brace fonts, corresponding" - " to the font encodings @code{fetaMusic} and @code{fetaBraces}," - " respectively.") + 2, 0, 0, + (SCM font, SCM index), + "Return the character code for @var{index} in @var{font}.\n" + "\n" + "Note that this command can only be used to access glyphs from" + " fonts loaded with @code{ly:system-font-load}; currently, this" + " means either the Emmentaler or Emmentaler-Brace fonts, corresponding" + " to the font encodings @code{fetaMusic} and @code{fetaBraces}," + " respectively.") { Font_metric *fm = unsmob_metrics (font); LY_ASSERT_SMOB (Font_metric, font, 1); @@ -83,15 +83,15 @@ LY_DEFINE (ly_font_index_to_charcode, "ly:font-index-to-charcode", } LY_DEFINE (ly_font_glyph_name_to_charcode, "ly:font-glyph-name-to-charcode", - 2, 0, 0, - (SCM font, SCM name), - "Return the character code for glyph @var{name} in @var{font}.\n" - "\n" - "Note that this command can only be used to access glyphs from" - " fonts loaded with @code{ly:system-font-load}; currently, this" - " means either the Emmentaler or Emmentaler-Brace fonts, corresponding" - " to the font encodings @code{fetaMusic} and @code{fetaBraces}," - " respectively.") + 2, 0, 0, + (SCM font, SCM name), + "Return the character code for glyph @var{name} in @var{font}.\n" + "\n" + "Note that this command can only be used to access glyphs from" + " fonts loaded with @code{ly:system-font-load}; currently, this" + " means either the Emmentaler or Emmentaler-Brace fonts, corresponding" + " to the font encodings @code{fetaMusic} and @code{fetaBraces}," + " respectively.") { Font_metric *fm = unsmob_metrics (font); LY_ASSERT_SMOB (Font_metric, font, 1); @@ -104,10 +104,10 @@ LY_DEFINE (ly_font_glyph_name_to_charcode, "ly:font-glyph-name-to-charcode", TODO: when are non string retvals allowed? */ LY_DEFINE (ly_font_file_name, "ly:font-file-name", - 1, 0, 0, - (SCM font), - "Given the font metric @var{font}," - " return the corresponding file name.") + 1, 0, 0, + (SCM font), + "Given the font metric @var{font}," + " return the corresponding file name.") { LY_ASSERT_SMOB (Font_metric, font, 1); @@ -118,10 +118,10 @@ LY_DEFINE (ly_font_file_name, "ly:font-file-name", } LY_DEFINE (ly_font_name, "ly:font-name", - 1, 0, 0, - (SCM font), - "Given the font metric @var{font}," - " return the corresponding name.") + 1, 0, 0, + (SCM font), + "Given the font metric @var{font}," + " return the corresponding name.") { LY_ASSERT_SMOB (Font_metric, font, 1); Font_metric *fm = unsmob_metrics (font); @@ -130,9 +130,9 @@ LY_DEFINE (ly_font_name, "ly:font-name", } LY_DEFINE (ly_font_magnification, "ly:font-magnification", 1, 0, 0, - (SCM font), - "Given the font metric @var{font}, return the" - " magnification, relative to the current output-scale.") + (SCM font), + "Given the font metric @var{font}, return the" + " magnification, relative to the current output-scale.") { LY_ASSERT_SMOB (Font_metric, font, 1); @@ -141,9 +141,9 @@ LY_DEFINE (ly_font_magnification, "ly:font-magnification", 1, 0, 0, } LY_DEFINE (ly_font_design_size, "ly:font-design-size", 1, 0, 0, - (SCM font), - "Given the font metric @var{font}, return the" - " design size, relative to the current output-scale.") + (SCM font), + "Given the font metric @var{font}, return the" + " design size, relative to the current output-scale.") { LY_ASSERT_SMOB (Font_metric, font, 1); diff --git a/lily/font-metric.cc b/lily/font-metric.cc index 458528dd2e..6990afe547 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,8 +48,8 @@ Font_metric::find_by_name (string s) const if (idx >= 0) { expr = scm_list_3 (ly_symbol2scm ("named-glyph"), - self_scm (), - ly_string2scm (s)); + self_scm (), + ly_string2scm (s)); b = get_indexed_char_dimensions (idx); } @@ -87,7 +87,7 @@ Font_metric::get_indexed_char_dimensions (size_t) const size_t Font_metric::name_to_index (string) const { - return (size_t)-1; + return (size_t) - 1; } Offset @@ -161,7 +161,7 @@ Font_metric::text_stencil (Output_def *state, string, bool) const { (void) state; - + programming_error ("Cannot get a text stencil from this font"); return Stencil (Box (), SCM_EOL); } diff --git a/lily/font-select.cc b/lily/font-select.cc index f9f42ae25e..a633e685f2 100644 --- a/lily/font-select.cc +++ b/lily/font-select.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Han-Wen Nienhuys + Copyright (C) 2003--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include "dimensions.hh" #include "all-font-metrics.hh" #include "output-def.hh" @@ -28,7 +27,7 @@ Font_metric * get_font_by_design_size (Output_def *layout, Real requested, - SCM font_vector) + SCM font_vector) { int n = scm_c_vector_length (font_vector); Real size = 1e6; @@ -42,23 +41,23 @@ get_font_by_design_size (Output_def *layout, Real requested, SCM entry = scm_c_vector_ref (font_vector, i); if (scm_promise_p (entry) == SCM_BOOL_T) - { - Font_metric *fm = unsmob_metrics (scm_force (entry)); - size = fm->design_size (); - } + { + Font_metric *fm = unsmob_metrics (scm_force (entry)); + size = fm->design_size (); + } #if HAVE_PANGO_FT2 else if (scm_is_pair (entry) - && scm_is_number (scm_car (entry)) - && scm_is_string (scm_cdr (entry))) - { - size = scm_to_double (scm_car (entry)); - pango_description_string - = scm_cdr (entry); - } + && scm_is_number (scm_car (entry)) + && scm_is_string (scm_cdr (entry))) + { + size = scm_to_double (scm_car (entry)); + pango_description_string + = scm_cdr (entry); + } #endif if (size > requested) - break; + break; last_size = size; last_pango_description_string = pango_description_string; } @@ -68,11 +67,11 @@ get_font_by_design_size (Output_def *layout, Real requested, else if (i > 0) { if ((requested / last_size) < (size / requested)) - { - i--; - size = last_size; - pango_description_string = last_pango_description_string; - } + { + i--; + size = last_size; + pango_description_string = last_pango_description_string; + } } Font_metric *fm = 0; @@ -80,8 +79,8 @@ get_font_by_design_size (Output_def *layout, Real requested, { #if HAVE_PANGO_FT2 return find_pango_font (layout, - pango_description_string, - requested / size); + pango_description_string, + requested / size); #else error ("Trying to retrieve pango font without HAVE_PANGO_FT2."); #endif @@ -94,18 +93,18 @@ get_font_by_design_size (Output_def *layout, Real requested, Font_metric * get_font_by_mag_step (Output_def *layout, Real requested_step, - SCM font_vector, Real default_size) + SCM font_vector, Real default_size) { return get_font_by_design_size (layout, default_size - * pow (2.0, requested_step / 6.0), - font_vector); + * pow (2.0, requested_step / 6.0), + font_vector); } SCM properties_to_font_size_family (SCM fonts, SCM alist_chain) { return scm_call_2 (ly_lily_module_constant ("lookup-font"), fonts, - alist_chain); + alist_chain); } Font_metric * @@ -124,16 +123,16 @@ select_encoded_font (Output_def *layout, SCM chain) return select_pango_font (layout, chain); else #endif - if (scm_instance_p (name)) + if (scm_is_true (scm_instance_p (name))) { - SCM base_size = scm_slot_ref (name, ly_symbol2scm ("default-size")); - SCM vec = scm_slot_ref (name, ly_symbol2scm ("size-vector")); + SCM base_size = scm_slot_ref (name, ly_symbol2scm ("default-size")); + SCM vec = scm_slot_ref (name, ly_symbol2scm ("size-vector")); - Real req = robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-size"), chain, SCM_BOOL_F), - 0.0); + Real req = robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-size"), chain, SCM_BOOL_F), + 0.0); - return get_font_by_mag_step (layout, req, vec, - scm_to_double (base_size)); + return get_font_by_mag_step (layout, req, vec, + scm_to_double (base_size)); } assert (0); diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index c95e104c87..03802ac2ce 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,7 +55,7 @@ Font_size_engraver::acknowledge_font (Grob_info gi) return; Real font_size = size - + robust_scm2double (gi.grob ()->get_property ("font-size"), 0); + + robust_scm2double (gi.grob ()->get_property ("font-size"), 0); gi.grob ()->set_property ("font-size", scm_from_double (font_size)); } @@ -63,15 +63,15 @@ Font_size_engraver::acknowledge_font (Grob_info gi) ADD_ACKNOWLEDGER (Font_size_engraver, font); ADD_TRANSLATOR (Font_size_engraver, - /* doc */ - "Put @code{fontSize} into @code{font-size} grob property.", + /* doc */ + "Put @code{fontSize} into @code{font-size} grob property.", - /* create */ - "", + /* create */ + "", - /* read */ - "fontSize ", + /* read */ + "fontSize ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/footnote-engraver.cc b/lily/footnote-engraver.cc index 7539bf9503..efa7900b00 100644 --- a/lily/footnote-engraver.cc +++ b/lily/footnote-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2011 Mike Solomon + Copyright (C) 2011--2012 Mike Solomon LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,10 +19,13 @@ #include "engraver.hh" +#include "music.hh" #include "stream-event.hh" +#include "international.hh" #include "item.hh" #include "pointer-group-interface.hh" #include "spanner.hh" +#include "system.hh" #include "translator.icc" @@ -37,8 +40,10 @@ class Footnote_engraver : public Engraver vector > annotated_spanners_; void stop_translation_timestep (); + void finalize (); + virtual void derived_mark () const; - void footnotify (Grob *, Stream_event *); + void footnotify (Grob *, SCM); }; IMPLEMENT_TRANSLATOR_LISTENER (Footnote_engraver, footnote); @@ -54,27 +59,40 @@ Footnote_engraver::stop_translation_timestep () events_.clear (); } +void +Footnote_engraver::finalize () +{ + annotated_spanners_.clear (); +} + +void +Footnote_engraver::derived_mark () const +{ + for (vsize i = 0; i < events_.size (); ++i) + scm_gc_mark (events_[i]->self_scm ()); +} + Footnote_engraver::Footnote_engraver () { } void -Footnote_engraver::footnotify (Grob *g, Stream_event *event) +Footnote_engraver::footnotify (Grob *g, SCM cause) { Spanner *s = dynamic_cast(g); if (s) { - Spanner *b = make_spanner ("FootnoteSpanner", event->self_scm ()); + Spanner *b = make_spanner ("FootnoteSpanner", cause); b->set_parent (s, Y_AXIS); b->set_parent (s, X_AXIS); Grob *bound = unsmob_grob (get_property ("currentMusicalColumn")); b->set_bound (LEFT, bound); - annotated_spanners_.push_back (Drul_array (s,b)); + annotated_spanners_.push_back (Drul_array (s, b)); } else { - Grob *b = make_item ("FootnoteItem", event->self_scm ()); + Grob *b = make_item ("FootnoteItem", cause); b->set_parent (g, Y_AXIS); b->set_parent (g, X_AXIS); } @@ -83,20 +101,38 @@ Footnote_engraver::footnotify (Grob *g, Stream_event *event) void Footnote_engraver::acknowledge_grob (Grob_info info) { - Stream_event *cause = info.event_cause (); + Music *mus = unsmob_music (info.grob ()->get_property ("footnote-music")); - SCM arts = cause ? cause->get_property ("articulations") : SCM_EOL; - for (SCM s = arts; scm_is_pair (s); s = scm_cdr (s)) + if (mus) { - Stream_event *e = unsmob_stream_event (scm_car (s)); - if (e->in_event_class ("footnote-event")) - footnotify (info.grob (), e); + if (!mus->is_mus_type ("footnote-event")) + { + mus->origin ()->programming_error (_ ("Must be footnote-event.")); + return; + } + + footnotify (info.grob (), mus->to_event (context ())->unprotect ()); + + // This grob has exhausted its footnote + info.grob ()->set_property ("footnote-music", SCM_EOL); + return; } - for (vsize i = 0; i < events_.size (); i++) + if (!events_.empty ()) { - if (info.grob ()->name () == ly_symbol2string (events_[i]->get_property ("symbol"))) - footnotify (info.grob (), events_[i]); + string grobname = info.grob ()->name (); + + for (vsize i = 0; i < events_.size (); i++) + { + SCM name = events_[i]->get_property ("symbol"); + if (scm_is_symbol (name) + && grobname == ly_symbol2string (name)) + { + footnotify (info.grob (), events_[i]->self_scm ()); + // Event has exhausted its footnote + events_[i]->set_property ("symbol", SCM_EOL); + } + } } } @@ -121,16 +157,16 @@ ADD_ACKNOWLEDGER (Footnote_engraver, grob); ADD_END_ACKNOWLEDGER (Footnote_engraver, grob); ADD_TRANSLATOR (Footnote_engraver, - /* doc */ - "Create footnote texts.", + /* doc */ + "Create footnote texts.", - /* create */ - "FootnoteItem " - "FootnoteSpanner ", + /* create */ + "FootnoteItem " + "FootnoteSpanner ", - /*read*/ - "currentMusicalColumn ", + /*read*/ + "currentMusicalColumn ", - /*write*/ - "" - ); + /*write*/ + "" + ); diff --git a/lily/forbid-break-engraver.cc b/lily/forbid-break-engraver.cc index 81c03e15be..b1d89ddf24 100644 --- a/lily/forbid-break-engraver.cc +++ b/lily/forbid-break-engraver.cc @@ -59,16 +59,16 @@ Forbid_line_break_engraver::start_translation_timestep () } ADD_TRANSLATOR (Forbid_line_break_engraver, - /* doc */ - "Forbid line breaks when note heads are still playing at some" - " point.", + /* doc */ + "Forbid line breaks when note heads are still playing at some" + " point.", - /* create */ - "", + /* create */ + "", - /* read */ - "busyGrobs ", + /* read */ + "busyGrobs ", - /* write */ - "forbidBreak " - ); + /* write */ + "forbidBreak " + ); diff --git a/lily/freetype-error.cc b/lily/freetype-error.cc index 21cec33111..00e5cae351 100644 --- a/lily/freetype-error.cc +++ b/lily/freetype-error.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,34 +20,33 @@ #include "freetype.hh" -#undef __FTERRORS_H__ -#define FT_ERRORDEF(e, v, s) { e, s }, -#define FT_ERROR_START_LIST { -#define FT_ERROR_END_LIST { 0, 0 } }; - +#undef __FTERRORS_H__ +#define FT_ERRORDEF(e, v, s) { e, s }, +#define FT_ERROR_START_LIST { +#define FT_ERROR_END_LIST { 0, 0 } }; + const struct Freetype_error_message -{ - FT_Error err_code; - const char* err_msg; -} ft_errors[] = - +{ + FT_Error err_code; + const char *err_msg; +} ft_errors[] = + #include ; - #include string freetype_error_string (FT_Error code) { for (Freetype_error_message const *p = ft_errors; - p->err_msg; p ++) + p->err_msg; p++) { if (p->err_code == code) - return p->err_msg; + return p->err_msg; } - return ""; + return ""; } - + diff --git a/lily/freetype.cc b/lily/freetype.cc index 7ad6b42d6a..f19b164968 100644 --- a/lily/freetype.cc +++ b/lily/freetype.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/fretboard-engraver.cc b/lily/fretboard-engraver.cc index cb4345ccad..d53c9132eb 100644 --- a/lily/fretboard-engraver.cc +++ b/lily/fretboard-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -96,20 +96,20 @@ Fretboard_engraver::process_music () return; SCM tab_strings = articulation_list (note_events_, - tabstring_events_, - "string-number-event"); + tabstring_events_, + "string-number-event"); SCM fingers = articulation_list (note_events_, - fingering_events_, - "fingering-event"); + fingering_events_, + "fingering-event"); fret_board_ = make_item ("FretBoard", note_events_[0]->self_scm ()); SCM fret_notes = ly_cxx_vector_to_list (note_events_); SCM proc = get_property ("noteToFretFunction"); if (ly_is_procedure (proc)) scm_call_4 (proc, - context ()->self_scm (), - fret_notes, - scm_list_2 (tab_strings, fingers), - fret_board_->self_scm ()); + context ()->self_scm (), + fret_notes, + scm_list_2 (tab_strings, fingers), + fret_board_->self_scm ()); SCM changes = get_property ("chordChanges"); if (to_boolean (changes) && scm_is_pair (last_fret_notes_) && ly_is_equal (last_fret_notes_, fret_notes)) @@ -128,25 +128,25 @@ Fretboard_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Fretboard_engraver, - /* doc */ - "Generate fret diagram from one or more events of type" - " @code{NoteEvent}.", - - /* create */ - "FretBoard ", - - /* read */ - "chordChanges " - "defaultStrings " - "highStringOne " - "maximumFretStretch " - "minimumFret " - "noteToFretFunction " - "predefinedDiagramTable " - "stringTunings " - "tablatureFormat ", - - /* write */ - "" - ); + /* doc */ + "Generate fret diagram from one or more events of type" + " @code{NoteEvent}.", + + /* create */ + "FretBoard ", + + /* read */ + "chordChanges " + "defaultStrings " + "highStringOne " + "maximumFretStretch " + "minimumFret " + "noteToFretFunction " + "predefinedDiagramTable " + "stringTunings " + "tablatureFormat ", + + /* write */ + "" + ); diff --git a/lily/function-documentation.cc b/lily/function-documentation.cc index 8d7c14b999..b1384076b1 100644 --- a/lily/function-documentation.cc +++ b/lily/function-documentation.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ using namespace std; #include "lily-guile.hh" #include "warn.hh" - static SCM doc_hash_table; void @@ -33,16 +32,15 @@ ly_check_name (string cxx, string scm_name) string mangle = mangle_cxx_identifier (cxx); if (mangle != scm_name) { - programming_error ("wrong cxx name: " + mangle + ", " + cxx + ", " + scm_name); + programming_error ("wrong cxx name: " + mangle + ", " + cxx + ", " + scm_name); } } - void ly_add_function_documentation (SCM func, - string fname, - string varlist, - string doc) + string fname, + string varlist, + string doc) { if (doc == "") return; @@ -51,31 +49,30 @@ ly_add_function_documentation (SCM func, doc_hash_table = scm_permanent_object (scm_c_make_hash_table (59)); string s = string (" - ") + "LilyPond procedure: " + fname + " " + varlist - + "\n" + doc; + + "\n" + doc; scm_set_procedure_property_x (func, ly_symbol2scm ("documentation"), - ly_string2scm (s)); + ly_string2scm (s)); SCM entry = scm_cons (ly_string2scm (varlist), ly_string2scm (doc)); scm_hashq_set_x (doc_hash_table, ly_symbol2scm (fname.c_str ()), entry); } LY_DEFINE (ly_get_all_function_documentation, "ly:get-all-function-documentation", - 0, 0, 0, (), - "Get a hash table with all LilyPond Scheme extension functions.") + 0, 0, 0, (), + "Get a hash table with all LilyPond Scheme extension functions.") { return doc_hash_table; } - #include map type_names; - + void ly_add_type_predicate (void *ptr, - string name) + string name) { - type_names[ptr] = name; + type_names[ptr] = name; } string @@ -100,36 +97,38 @@ predicate_to_typename (void *ptr) #include "performance.hh" #include "spanner.hh" #include "stream-event.hh" +#include "unpure-pure-container.hh" void init_func_doc () { - ly_add_type_predicate ((void*) &is_direction, "direction"); - ly_add_type_predicate ((void*) &is_music_function, "Music_function"); - ly_add_type_predicate ((void*) &ly_is_port, "port"); - ly_add_type_predicate ((void*) &ly_cheap_is_list, "list"); - ly_add_type_predicate ((void*) &unsmob_global_context, "Global_context"); - ly_add_type_predicate ((void*) &unsmob_input, "Input"); - ly_add_type_predicate ((void*) &unsmob_moment, "Moment"); - ly_add_type_predicate ((void*) &unsmob_paper_score, "Paper_score"); - ly_add_type_predicate ((void*) &unsmob_performance, "Performance"); - - ly_add_type_predicate ((void*) &is_axis, "axis"); - ly_add_type_predicate ((void*) &is_number_pair, "number pair"); - ly_add_type_predicate ((void*) &ly_is_list, "list"); - ly_add_type_predicate ((void*) &ly_is_procedure, "procedure"); - ly_add_type_predicate ((void*) &ly_is_symbol, "symbol"); - ly_add_type_predicate ((void*) &scm_is_bool, "boolean"); - ly_add_type_predicate ((void*) &scm_is_integer, "integer"); - ly_add_type_predicate ((void*) &scm_is_number, "number"); - ly_add_type_predicate ((void*) &scm_is_pair, "pair"); - ly_add_type_predicate ((void*) &scm_is_rational, "rational"); - ly_add_type_predicate ((void*) &scm_is_string, "string"); - ly_add_type_predicate ((void*) &scm_is_vector, "vector"); - ly_add_type_predicate ((void*) &unsmob_item, "Item"); - ly_add_type_predicate ((void*) &unsmob_music, "Music"); - ly_add_type_predicate ((void*) &unsmob_spanner, "Spanner"); - ly_add_type_predicate ((void*) &unsmob_stream_event, "Stream_event"); + ly_add_type_predicate ((void *) &is_direction, "direction"); + ly_add_type_predicate ((void *) &is_music_function, "Music_function"); + ly_add_type_predicate ((void *) &ly_is_port, "port"); + ly_add_type_predicate ((void *) &ly_cheap_is_list, "list"); + ly_add_type_predicate ((void *) &unsmob_global_context, "Global_context"); + ly_add_type_predicate ((void *) &unsmob_input, "Input"); + ly_add_type_predicate ((void *) &unsmob_moment, "Moment"); + ly_add_type_predicate ((void *) &unsmob_paper_score, "Paper_score"); + ly_add_type_predicate ((void *) &unsmob_performance, "Performance"); + ly_add_type_predicate ((void *) &is_unpure_pure_container, "unpure pure container"); + + ly_add_type_predicate ((void *) &is_axis, "axis"); + ly_add_type_predicate ((void *) &is_number_pair, "number pair"); + ly_add_type_predicate ((void *) &ly_is_list, "list"); + ly_add_type_predicate ((void *) &ly_is_procedure, "procedure"); + ly_add_type_predicate ((void *) &ly_is_symbol, "symbol"); + ly_add_type_predicate ((void *) &scm_is_bool, "boolean"); + ly_add_type_predicate ((void *) &scm_is_integer, "integer"); + ly_add_type_predicate ((void *) &scm_is_number, "number"); + ly_add_type_predicate ((void *) &scm_is_pair, "pair"); + ly_add_type_predicate ((void *) &scm_is_rational, "rational"); + ly_add_type_predicate ((void *) &scm_is_string, "string"); + ly_add_type_predicate ((void *) &scm_is_vector, "vector"); + ly_add_type_predicate ((void *) &unsmob_item, "Item"); + ly_add_type_predicate ((void *) &unsmob_music, "Music"); + ly_add_type_predicate ((void *) &unsmob_spanner, "Spanner"); + ly_add_type_predicate ((void *) &unsmob_stream_event, "Stream_event"); } ADD_SCM_INIT_FUNC (func_doc, init_func_doc); diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc index ae31e1eb9f..f2b3ff1ae5 100644 --- a/lily/general-scheme.cc +++ b/lily/general-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -40,10 +40,13 @@ using namespace std; #include "version.hh" #include "warn.hh" +/* Declaration of log function(s) */ +SCM ly_progress (SCM, SCM); + LY_DEFINE (ly_start_environment, "ly:start-environment", - 0, 0, 0, (), - "Return the environment (a list of strings) that was in" - " effect at program start.") + 0, 0, 0, (), + "Return the environment (a list of strings) that was in" + " effect at program start.") { SCM l = SCM_EOL; SCM *tail = &l; @@ -51,18 +54,17 @@ LY_DEFINE (ly_start_environment, "ly:start-environment", for (vsize i = 0; i < start_environment_global.size (); i++) { *tail = scm_cons (ly_string2scm (start_environment_global[i]), - SCM_EOL); - tail = SCM_CDRLOC(*tail); + SCM_EOL); + tail = SCM_CDRLOC (*tail); } return l; } - LY_DEFINE (ly_find_file, "ly:find-file", - 1, 0, 0, (SCM name), - "Return the absolute file name of @var{name}," - " or @code{#f} if not found.") + 1, 0, 0, (SCM name), + "Return the absolute file name of @var{name}," + " or @code{#f} if not found.") { LY_ASSERT_TYPE (scm_is_string, name, 1); @@ -79,11 +81,11 @@ LY_DEFINE (ly_find_file, "ly:find-file", buffering.) */ LY_DEFINE (ly_gulp_file, "ly:gulp-file", - 1, 1, 0, (SCM name, SCM size), - "Read @var{size} characters from the file @var{name}," + 1, 1, 0, (SCM name, SCM size), + "Read @var{size} characters from the file @var{name}," " and return its contents in a string." " If @var{size} is undefined, the entire file is read." - " The file is looked up using the search path.") + " The file is looked up using the search path.") { LY_ASSERT_TYPE (scm_is_string, name, 1); int sz = INT_MAX; @@ -97,91 +99,14 @@ LY_DEFINE (ly_gulp_file, "ly:gulp-file", return scm_from_locale_stringn (contents.c_str (), contents.length ()); } -LY_DEFINE (ly_error, "ly:error", - 1, 0, 1, (SCM str, SCM rest), - "A Scheme callable function to issue the error @var{str}." - " The error is formatted with @code{format} and @var{rest}.") -{ - LY_ASSERT_TYPE (scm_is_string, str, 1); - str = scm_simple_format (SCM_BOOL_F, str, rest); - error (ly_scm2string (str)); - return SCM_UNSPECIFIED; -} - -LY_DEFINE (ly_message, "ly:message", - 1, 0, 1, (SCM str, SCM rest), - "A Scheme callable function to issue the message @var{str}." - " The message is formatted with @code{format} and @var{rest}.") -{ - LY_ASSERT_TYPE (scm_is_string, str, 1); - str = scm_simple_format (SCM_BOOL_F, str, rest); - message (ly_scm2string (str)); - return SCM_UNSPECIFIED; -} - -LY_DEFINE (ly_progress, "ly:progress", - 1, 0, 1, (SCM str, SCM rest), - "A Scheme callable function to print progress @var{str}." - " The message is formatted with @code{format} and @var{rest}.") -{ - LY_ASSERT_TYPE (scm_is_string, str, 1); - str = scm_simple_format (SCM_BOOL_F, str, rest); - progress_indication (ly_scm2string (str)); - return SCM_UNSPECIFIED; -} - -LY_DEFINE (ly_programming_error, "ly:programming-error", - 1, 0, 1, (SCM str, SCM rest), - "A Scheme callable function to issue the internal warning" - " @var{str}. The message is formatted with @code{format}" - " and @var{rest}.") -{ - LY_ASSERT_TYPE (scm_is_string, str, 1); - str = scm_simple_format (SCM_BOOL_F, str, rest); - - if (get_program_option ("warning-as-error")) - error (ly_scm2string (str)); - else - programming_error (ly_scm2string (str)); - - return SCM_UNSPECIFIED; -} - -LY_DEFINE (ly_success, "ly:success", - 1, 0, 1, (SCM str, SCM rest), - "A Scheme callable function to issue a success message @var{str}." - " The message is formatted with @code{format} and @var{rest}.") -{ - LY_ASSERT_TYPE (scm_is_string, str, 1); - str = scm_simple_format (SCM_BOOL_F, str, rest); - successful (ly_scm2string (str)); - return SCM_UNSPECIFIED; - -} -LY_DEFINE (ly_warning, "ly:warning", - 1, 0, 1, (SCM str, SCM rest), - "A Scheme callable function to issue the warning @var{str}." - " The message is formatted with @code{format} and @var{rest}.") -{ - LY_ASSERT_TYPE (scm_is_string, str, 1); - str = scm_simple_format (SCM_BOOL_F, str, rest); - - if (get_program_option ("warning-as-error")) - error (ly_scm2string (str)); - else - warning (ly_scm2string (str)); - - return SCM_UNSPECIFIED; -} - LY_DEFINE (ly_dir_p, "ly:dir?", - 1, 0, 0, (SCM s), - "Is @var{s} a direction? Valid directions are @code{-1}," - " @code{0}, or@tie{}@code{1}, where @code{-1} represents" - " left or down, @code{1}@tie{}represents right or up, and @code{0}" - " represents a neutral direction.") + 1, 0, 0, (SCM s), + "Is @var{s} a direction? Valid directions are @w{@code{-1}}," + " @code{0}, or@tie{}@code{1}, where @w{@code{-1}} represents" + " left or down, @code{1}@tie{}represents right or up, and @code{0}" + " represents a neutral direction.") { - if (scm_is_number (s)) + if (scm_is_integer (s)) { int i = scm_to_int (s); return (i >= -1 && i <= 1) ? SCM_BOOL_T : SCM_BOOL_F; @@ -190,14 +115,14 @@ LY_DEFINE (ly_dir_p, "ly:dir?", } LY_DEFINE (ly_assoc_get, "ly:assoc-get", - 2, 2, 0, - (SCM key, SCM alist, SCM default_value, SCM strict_checking), - "Return value if @var{key} in @var{alist}, else @var{default-value}" - " (or @code{#f} if not specified). If @var{strict-checking} is set" + 2, 2, 0, + (SCM key, SCM alist, SCM default_value, SCM strict_checking), + "Return value if @var{key} in @var{alist}, else @var{default-value}" + " (or @code{#f} if not specified). If @var{strict-checking} is set" " to @code{#t} and @var{key} is not in @var{alist}, a programming_error" " is output.") { - LY_ASSERT_TYPE(ly_cheap_is_list, alist, 2); + LY_ASSERT_TYPE (ly_cheap_is_list, alist, 2); SCM handle = scm_assoc (key, alist); if (scm_is_pair (handle)) @@ -209,23 +134,23 @@ LY_DEFINE (ly_assoc_get, "ly:assoc-get", if (strict_checking == SCM_BOOL_T) { string key_string = ly_scm2string - (scm_object_to_string (key, SCM_UNDEFINED)); + (scm_object_to_string (key, SCM_UNDEFINED)); string default_value_string = ly_scm2string - (scm_object_to_string (default_value, - SCM_UNDEFINED)); - programming_error ("Cannot find key `" + - key_string + - "' in alist, setting to `" + - default_value_string + "'."); + (scm_object_to_string (default_value, + SCM_UNDEFINED)); + programming_error ("Cannot find key `" + + key_string + + "' in alist, setting to `" + + default_value_string + "'."); } return default_value; } LY_DEFINE (ly_string_substitute, "ly:string-substitute", - 3, 0, 0, (SCM a, SCM b, SCM s), - "Replace string@tie{}@var{a} by string@tie{}@var{b} in" - " string@tie{}@var{s}.") + 3, 0, 0, (SCM a, SCM b, SCM s), + "Replace string@tie{}@var{a} by string@tie{}@var{b} in" + " string@tie{}@var{s}.") { LY_ASSERT_TYPE (scm_is_string, s, 1); LY_ASSERT_TYPE (scm_is_string, b, 2); @@ -233,7 +158,7 @@ LY_DEFINE (ly_string_substitute, "ly:string-substitute", string ss = ly_scm2string (s); replace_all (&ss, ly_scm2string (a), - ly_scm2string (b)); + ly_scm2string (b)); return ly_string2scm (ss); } @@ -258,11 +183,11 @@ is_not_escape_character (Byte c) } LY_DEFINE (ly_string_percent_encode, "ly:string-percent-encode", - 1, 0, 0, (SCM str), - "Encode all characters in string @var{str} with hexadecimal" - " percent escape sequences, with the following exceptions:" - " characters @code{-}, @code{.}, @code{/}, and @code{_}; and" - " characters in ranges @code{0-9}, @code{A-Z}, and @code{a-z}.") + 1, 0, 0, (SCM str), + "Encode all characters in string @var{str} with hexadecimal" + " percent escape sequences, with the following exceptions:" + " characters @w{@code{-},} @code{.}, @code{/}, and @code{_}; and" + " characters in ranges @code{0-9}, @code{A-Z}, and @code{a-z}.") { LY_ASSERT_TYPE (scm_is_string, str, 1); @@ -277,12 +202,12 @@ LY_DEFINE (ly_string_percent_encode, "ly:string-percent-encode", Byte cur = orig_str[i]; if (is_not_escape_character (cur)) - new_str += cur; + new_str += cur; else - { - new_str += '%'; - new_str += String_convert::bin2hex (cur); - } + { + new_str += '%'; + new_str += String_convert::bin2hex (cur); + } i++; } @@ -291,23 +216,23 @@ LY_DEFINE (ly_string_percent_encode, "ly:string-percent-encode", } LY_DEFINE (ly_number_2_string, "ly:number->string", - 1, 0, 0, (SCM s), - "Convert @var{s} to a string without generating many decimals.") + 1, 0, 0, (SCM s), + "Convert @var{s} to a string without generating many decimals.") { LY_ASSERT_TYPE (scm_is_number, s, 1); - char str[400]; // ugh. + char str[400]; // ugh. if (scm_exact_p (s) == SCM_BOOL_F) { Real r (scm_to_double (s)); - if (isinf (r) || isnan (r)) - { - programming_error (_ ("infinity or NaN encountered while converting Real number")); - programming_error (_ ("setting to zero")); + if (isinf (r) || isnan (r)) + { + programming_error ("infinity or NaN encountered while converting Real number, " + "setting to zero"); - r = 0.0; - } + r = 0.0; + } snprintf (str, sizeof (str), "%.4f", r); } @@ -318,8 +243,8 @@ LY_DEFINE (ly_number_2_string, "ly:number->string", } LY_DEFINE (ly_version, "ly:version", 0, 0, 0, (), - "Return the current lilypond version as a list, e.g.," - " @code{(1 3 127 uu1)}.") + "Return the current lilypond version as a list, e.g.," + " @code{(1 3 127 uu1)}.") { char const *vs = "\'(" MAJOR_VERSION " " MINOR_VERSION " " PATCH_LEVEL " " MY_PATCH_LEVEL ")"; @@ -327,14 +252,14 @@ LY_DEFINE (ly_version, "ly:version", 0, 0, 0, (), } LY_DEFINE (ly_unit, "ly:unit", 0, 0, 0, (), - "Return the unit used for lengths as a string.") + "Return the unit used for lengths as a string.") { return scm_from_locale_string (INTERNAL_UNIT); } LY_DEFINE (ly_dimension_p, "ly:dimension?", 1, 0, 0, (SCM d), - "Return @var{d} as a number. Used to distinguish length" - " variables from normal numbers.") + "Return @var{d} as a number. Used to distinguish length" + " variables from normal numbers.") { return scm_number_p (d); } @@ -343,24 +268,24 @@ LY_DEFINE (ly_dimension_p, "ly:dimension?", 1, 0, 0, (SCM d), Debugging mem leaks: */ LY_DEFINE (ly_protects, "ly:protects", - 0, 0, 0, (), - "Return hash of protected objects.") + 0, 0, 0, (), + "Return hash of protected objects.") { return scm_protects; } LY_DEFINE (ly_gettext, "ly:gettext", - 1, 0, 0, (SCM original), - "A Scheme wrapper function for @code{gettext}.") + 1, 0, 0, (SCM original), + "A Scheme wrapper function for @code{gettext}.") { LY_ASSERT_TYPE (scm_is_string, original, 1); return ly_string2scm (_ (ly_scm2string (original).c_str ())); } LY_DEFINE (ly_output_formats, "ly:output-formats", - 0, 0, 0, (), - "Formats passed to @option{--format} as a list of strings," - " used for the output.") + 0, 0, 0, (), + "Formats passed to @option{--format} as a list of strings," + " used for the output.") { vector output_formats = string_split (output_format_global, ','); @@ -373,8 +298,8 @@ LY_DEFINE (ly_output_formats, "ly:output-formats", } LY_DEFINE (ly_wide_char_2_utf_8, "ly:wide-char->utf-8", - 1, 0, 0, (SCM wc), - "Encode the Unicode codepoint @var{wc}, an integer, as UTF-8.") + 1, 0, 0, (SCM wc), + "Encode the Unicode codepoint @var{wc}, an integer, as UTF-8.") { char buf[5]; @@ -408,82 +333,84 @@ LY_DEFINE (ly_wide_char_2_utf_8, "ly:wide-char->utf-8", } LY_DEFINE (ly_effective_prefix, "ly:effective-prefix", - 0, 0, 0, (), - "Return effective prefix.") + 0, 0, 0, (), + "Return effective prefix.") { return ly_string2scm (lilypond_datadir); } LY_DEFINE (ly_chain_assoc_get, "ly:chain-assoc-get", - 2, 2, 0, (SCM key, SCM achain, SCM default_value, SCM strict_checking), - "Return value for @var{key} from a list of alists @var{achain}." - " If no entry is found, return @var{default-value} or @code{#f} if" - " @var{default-value} is not specified. With @var{strict-checking}" + 2, 2, 0, (SCM key, SCM achain, SCM default_value, SCM strict_checking), + "Return value for @var{key} from a list of alists @var{achain}." + " If no entry is found, return @var{default-value} or @code{#f} if" + " @var{default-value} is not specified. With @var{strict-checking}" " set to @code{#t}, a programming_error is output in such cases.") { if (scm_is_pair (achain)) { SCM handle = scm_assoc (key, scm_car (achain)); if (scm_is_pair (handle)) - return scm_cdr (handle); + return scm_cdr (handle); else - return ly_chain_assoc_get (key, scm_cdr (achain), default_value); + return ly_chain_assoc_get (key, scm_cdr (achain), default_value); } if (strict_checking == SCM_BOOL_T) { string key_string = ly_scm2string - (scm_object_to_string (key, SCM_UNDEFINED)); + (scm_object_to_string (key, SCM_UNDEFINED)); string default_value_string = ly_scm2string - (scm_object_to_string (default_value, - SCM_UNDEFINED)); - programming_error ("Cannot find key `" + - key_string + - "' in achain, setting to `" + - default_value_string + "'."); + (scm_object_to_string (default_value, + SCM_UNDEFINED)); + programming_error ("Cannot find key `" + + key_string + + "' in achain, setting to `" + + default_value_string + "'."); } return default_value == SCM_UNDEFINED ? SCM_BOOL_F : default_value; } - LY_DEFINE (ly_stderr_redirect, "ly:stderr-redirect", - 1, 1, 0, (SCM file_name, SCM mode), - "Redirect stderr to @var{file-name}, opened with @var{mode}.") + 1, 1, 0, (SCM file_name, SCM mode), + "Redirect stderr to @var{file-name}, opened with @var{mode}.") { LY_ASSERT_TYPE (scm_is_string, file_name, 1); string m = "w"; + string f = ly_scm2string (file_name); FILE *stderrfile; - if (mode != SCM_UNDEFINED && scm_string_p (mode)) + if (scm_is_string (mode)) m = ly_scm2string (mode); /* dup2 and (fileno (current-error-port)) do not work with mingw'c gcc -mwindows. */ fflush (stderr); - stderrfile = freopen (ly_scm2string (file_name).c_str (), m.c_str (), stderr); + stderrfile = freopen (f.c_str (), m.c_str (), stderr); + if (!stderrfile) + error (_f ("failed redirecting stderr to `%s'", f.c_str ())); return SCM_UNSPECIFIED; } static SCM accumulate_symbol (void * /* closure */, - SCM key, - SCM /* val */, - SCM result) + SCM key, + SCM /* val */, + SCM result) { return scm_cons (key, result); } LY_DEFINE (ly_hash_table_keys, "ly:hash-table-keys", - 1,0,0, (SCM tab), - "Return a list of keys in @var{tab}.") + 1, 0, 0, (SCM tab), + "Return a list of keys in @var{tab}.") { return scm_internal_hash_fold ((scm_t_hash_fold_fn) &accumulate_symbol, - NULL, SCM_EOL, tab); + NULL, SCM_EOL, tab); } LY_DEFINE (ly_camel_case_2_lisp_identifier, "ly:camel-case->lisp-identifier", - 1, 0, 0, (SCM name_sym), - "Convert @code{FooBar_Bla} to @code{foo-bar-bla} style symbol.") + 1, 0, 0, (SCM name_sym), + "Convert @code{FooBar_Bla} to @code{foo-bar-bla} style symbol.") { LY_ASSERT_TYPE (ly_is_symbol, name_sym, 1); @@ -498,18 +425,17 @@ LY_DEFINE (ly_camel_case_2_lisp_identifier, "ly:camel-case->lisp-identifier", } LY_DEFINE (ly_expand_environment, "ly:expand-environment", - 1, 0, 0, (SCM str), - "Expand @code{$VAR} and @code{$@{VAR@}} in @var{str}.") + 1, 0, 0, (SCM str), + "Expand @code{$VAR} and @code{$@{VAR@}} in @var{str}.") { LY_ASSERT_TYPE (scm_is_string, str, 1); return ly_string2scm (expand_environment_variables (ly_scm2string (str))); } - LY_DEFINE (ly_truncate_list_x, "ly:truncate-list!", - 2, 0, 0, (SCM lst, SCM i), - "Take at most the first @var{i} of list @var{lst}.") + 2, 0, 0, (SCM lst, SCM i), + "Take at most the first @var{i} of list @var{lst}.") { LY_ASSERT_TYPE (scm_is_integer, i, 1); @@ -521,10 +447,10 @@ LY_DEFINE (ly_truncate_list_x, "ly:truncate-list!", SCM s = lst; k--; for (; scm_is_pair (s) && k--; s = scm_cdr (s)) - ; + ; if (scm_is_pair (s)) - scm_set_cdr_x (s, SCM_EOL); + scm_set_cdr_x (s, SCM_EOL); } return lst; } @@ -539,14 +465,14 @@ format_single_argument (SCM arg, int precision, bool escape = false) Real val = scm_to_double (arg); if (isnan (val) || isinf (val)) - { - warning (_ ("Found infinity or nan in output. Substituting 0.0")); - return ("0.0"); - if (strict_infinity_checking) - abort (); - } + { + warning (_ ("Found infinity or nan in output. Substituting 0.0")); + return ("0.0"); + if (strict_infinity_checking) + abort (); + } else - return (String_convert::form_string ("%.*lf", precision, val)); + return (String_convert::form_string ("%.*lf", precision, val)); } else if (scm_is_string (arg)) { @@ -568,17 +494,16 @@ format_single_argument (SCM arg, int precision, bool escape = false) else { ly_progress (scm_from_locale_string ("\nUnsupported SCM value for format: ~a"), - scm_list_1 (arg)); + scm_list_1 (arg)); } - return ""; } LY_DEFINE (ly_format, "ly:format", - 1, 0, 1, (SCM str, SCM rest), - "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}." - " Basic support for @code{~s} is also provided.") + 1, 0, 1, (SCM str, SCM rest), + "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}." + " Basic support for @code{~s} is also provided.") { LY_ASSERT_TYPE (scm_is_string, str, 1); @@ -590,70 +515,70 @@ LY_DEFINE (ly_format, "ly:format", { vsize tilde = format.find ('~', i); - results.push_back (format.substr (i, (tilde-i))); + results.push_back (format.substr (i, (tilde - i))); if (tilde == NPOS) - break ; + break; - tilde ++; + tilde++; - char spec = format.at (tilde ++); + char spec = format.at (tilde++); if (spec == '~') - results.push_back ("~"); + results.push_back ("~"); else - { - if (!scm_is_pair (rest)) - { - programming_error (string (__FUNCTION__) - + ": not enough arguments for format."); - return ly_string2scm (""); - } - - SCM arg = scm_car (rest); - rest = scm_cdr (rest); - - int precision = 8; - - if (spec == '$') - precision = 2; - else if (isdigit (spec)) - { - precision = spec - '0'; - spec = format.at (tilde ++); - } - - if (spec == 'a' || spec == 'A' || spec == 'f' || spec == '$') - results.push_back (format_single_argument (arg, precision)); - else if (spec == 's' || spec == 'S') - results.push_back (format_single_argument (arg, precision, true)); - else if (spec == 'l') - { - SCM s = arg; - for (; scm_is_pair (s); s = scm_cdr (s)) - { - results.push_back (format_single_argument (scm_car (s), precision)); - if (scm_cdr (s) != SCM_EOL) - results.push_back (" "); - } - - if (s != SCM_EOL) - results.push_back (format_single_argument (s, precision)); - - } - } + { + if (!scm_is_pair (rest)) + { + programming_error (string (__FUNCTION__) + + ": not enough arguments for format."); + return ly_string2scm (""); + } + + SCM arg = scm_car (rest); + rest = scm_cdr (rest); + + int precision = 8; + + if (spec == '$') + precision = 2; + else if (isdigit (spec)) + { + precision = spec - '0'; + spec = format.at (tilde++); + } + + if (spec == 'a' || spec == 'A' || spec == 'f' || spec == '$') + results.push_back (format_single_argument (arg, precision)); + else if (spec == 's' || spec == 'S') + results.push_back (format_single_argument (arg, precision, true)); + else if (spec == 'l') + { + SCM s = arg; + for (; scm_is_pair (s); s = scm_cdr (s)) + { + results.push_back (format_single_argument (scm_car (s), precision)); + if (scm_cdr (s) != SCM_EOL) + results.push_back (" "); + } + + if (s != SCM_EOL) + results.push_back (format_single_argument (s, precision)); + + } + } i = tilde; } if (scm_is_pair (rest)) programming_error (string (__FUNCTION__) - + ": too many arguments"); + + ": too many arguments"); vsize len = 0; for (vsize i = 0; i < results.size (); i++) len += results[i].size (); - char *result = (char*) scm_malloc (len + 1); + char *result = (char *) scm_malloc (len + 1); char *ptr = result; for (vsize i = 0; i < results.size (); i++) { @@ -676,14 +601,14 @@ ly_run_command (char *argv[], char **standard_output, char **standard_error) if (!standard_error) flags |= G_SPAWN_STDERR_TO_DEV_NULL; if (!g_spawn_sync (0, argv, 0, GSpawnFlags (flags), - 0, 0, - standard_output, standard_error, - &exit_status, &error)) + 0, 0, + standard_output, standard_error, + &exit_status, &error)) { fprintf (stderr, "failed (%d): %s: %s\n", exit_status, argv[0], error->message); g_error_free (error); if (!exit_status) - exit_status = -1; + exit_status = -1; } return exit_status; @@ -699,10 +624,10 @@ ly_scm2utf8 (SCM str) } LY_DEFINE (ly_spawn, "ly:spawn", - 1, 0, 1, (SCM command, SCM rest), - "Simple interface to g_spawn_sync" - " @var{str}." - " The error is formatted with @code{format} and @var{rest}.") + 1, 0, 1, (SCM command, SCM rest), + "Simple interface to g_spawn_sync" + " @var{str}." + " The error is formatted with @code{format} and @var{rest}.") { LY_ASSERT_TYPE (scm_is_string, command, 1); @@ -718,16 +643,12 @@ LY_DEFINE (ly_spawn, "ly:spawn", char *standard_output = 0; char *standard_error = 0; - int exit_status = be_verbose_global - ? ly_run_command (argv, &standard_output, &standard_error) - : ly_run_command (argv, 0, 0); + // Always get the pointer to the stdout/stderr messages + int exit_status = ly_run_command (argv, &standard_output, &standard_error); + + // Print out stdout and stderr only in debug mode + debug_output (string ("\n") + standard_output + standard_error, true); - if (be_verbose_global) - { - fprintf (stderr, "\n%s", standard_output); - fprintf (stderr, "%s", standard_error); - } - for (int i = 0; i < n; i++) free (argv[i]); delete[] argv; diff --git a/lily/glissando-engraver.cc b/lily/glissando-engraver.cc index 26b869dd51..711bb1df81 100644 --- a/lily/glissando-engraver.cc +++ b/lily/glissando-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,8 +45,8 @@ protected: private: vector lines_; vector kill_me_; - bool start_glissandi; - bool stop_glissandi; + bool start_glissandi_; + bool stop_glissandi_; Stream_event *event_; vector note_column_1; @@ -56,8 +56,8 @@ private: Glissando_engraver::Glissando_engraver () { event_ = 0; - start_glissandi = false; - stop_glissandi = false; + start_glissandi_ = false; + stop_glissandi_ = false; } IMPLEMENT_TRANSLATOR_LISTENER (Glissando_engraver, glissando); @@ -71,18 +71,21 @@ void Glissando_engraver::process_music () { if (event_) - start_glissandi = true; + start_glissandi_ = true; } void Glissando_engraver::acknowledge_note_column (Grob_info info) { Grob *g = info.grob (); - if (stop_glissandi) + if (to_boolean (g->get_property ("glissando-skip"))) + return; + + if (stop_glissandi_) { extract_grob_set (g, "note-heads", note_heads); int glissando_index = 0; - for (vsize i=0; i < note_column_1.size (); i++) + for (vsize i = 0; i < note_column_1.size (); i++) { if (note_column_2[i] >= note_heads.size ()) { @@ -100,10 +103,10 @@ Glissando_engraver::acknowledge_note_column (Grob_info info) lines_.clear (); note_column_1.clear (); note_column_2.clear (); - stop_glissandi = false; - } + stop_glissandi_ = false; + } - if (start_glissandi) + if (start_glissandi_) { extract_grob_set (g, "note-heads", note_heads); SCM map = get_property ("glissandoMap"); @@ -121,12 +124,12 @@ Glissando_engraver::acknowledge_note_column (Grob_info info) continue; int n1 = robust_scm2int (scm_car (candidate), -1); int n2 = robust_scm2int (scm_cdr (candidate), -1); - if (n1 < 0 || n2 < 0 || n1 >= note_heads.size ()) + if ((n1 < 0) || (n2 < 0) || (size_t (n1) >= note_heads.size ())) continue; note_column_1.push_back (vsize (n1)); note_column_2.push_back (vsize (n2)); } - for (vsize i=0; i < note_column_1.size (); i++) + for (vsize i = 0; i < note_column_1.size (); i++) { lines_.push_back (make_spanner ("Glissando", event_->self_scm ())); lines_.back ()->set_bound (LEFT, note_heads[note_column_1[i]]); @@ -137,13 +140,12 @@ Glissando_engraver::acknowledge_note_column (Grob_info info) void Glissando_engraver::stop_translation_timestep () { - - if (start_glissandi) + if (start_glissandi_) { - if (stop_glissandi) - programming_error ("overwriting glissando"); - stop_glissandi = true; - start_glissandi = false; + if (stop_glissandi_) + programming_error ("overwriting glissando"); + stop_glissandi_ = true; + start_glissandi_ = false; } event_ = 0; } @@ -156,29 +158,29 @@ Glissando_engraver::finalize () string msg = _ ("unterminated glissando"); if (event_) - event_->origin ()->warning (msg); + event_->origin ()->warning (msg); else - warning (msg); + warning (msg); - for (vsize i=0; i < lines_.size (); i++) + for (vsize i = 0; i < lines_.size (); i++) lines_[i]->suicide (); } - for (vsize i=0; i < kill_me_.size (); i++) + for (vsize i = 0; i < kill_me_.size (); i++) kill_me_[i]->suicide (); } ADD_ACKNOWLEDGER (Glissando_engraver, note_column); ADD_TRANSLATOR (Glissando_engraver, - /* doc */ - "Engrave glissandi.", + /* doc */ + "Engrave glissandi.", - /* create */ - "Glissando ", + /* create */ + "Glissando ", - /* read */ - "glissandoMap ", + /* read */ + "glissandoMap ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/global-context-scheme.cc b/lily/global-context-scheme.cc index 46bdae7b90..1267793cf3 100644 --- a/lily/global-context-scheme.cc +++ b/lily/global-context-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,10 +29,10 @@ #include "warn.hh" LY_DEFINE (ly_format_output, "ly:format-output", - 1, 0, 0, (SCM context), - "Given a global context in its final state," - " process it and return the @code{Music_output} object" - " in its final state.") + 1, 0, 0, (SCM context), + "Given a global context in its final state," + " process it and return the @code{Music_output} object" + " in its final state.") { Global_context *g = dynamic_cast (unsmob_context (context)); @@ -48,9 +48,9 @@ LY_DEFINE (ly_format_output, "ly:format-output", } LY_DEFINE (ly_make_global_translator, "ly:make-global-translator", - 1, 0, 0, (SCM global), - "Create a translator group and connect it to the global context" - " @var{global}. The translator group is returned.") + 1, 0, 0, (SCM global), + "Create a translator group and connect it to the global context" + " @var{global}. The translator group is returned.") { Global_context *g = dynamic_cast (unsmob_context (global)); LY_ASSERT_TYPE (unsmob_global_context, global, 1); @@ -63,9 +63,9 @@ LY_DEFINE (ly_make_global_translator, "ly:make-global-translator", } LY_DEFINE (ly_make_global_context, "ly:make-global-context", - 1, 0, 0, (SCM output_def), - "Set up a global interpretation context, using the output" - " block @var{output-def}. The context is returned.") + 1, 0, 0, (SCM output_def), + "Set up a global interpretation context, using the output" + " block @var{output-def}. The context is returned.") { LY_ASSERT_SMOB (Output_def, output_def, 1); Output_def *odef = unsmob_output_def (output_def); @@ -82,9 +82,9 @@ LY_DEFINE (ly_make_global_context, "ly:make-global-context", } LY_DEFINE (ly_interpret_music_expression, "ly:interpret-music-expression", - 2, 0, 0, (SCM mus, SCM ctx), - "Interpret the music expression @var{mus} in the global context" - " @var{ctx}. The context is returned in its final state.") + 2, 0, 0, (SCM mus, SCM ctx), + "Interpret the music expression @var{mus} in the global context" + " @var{ctx}. The context is returned in its final state.") { LY_ASSERT_SMOB (Music, mus, 1); LY_ASSERT_TYPE (unsmob_global_context, ctx, 2); @@ -101,7 +101,7 @@ LY_DEFINE (ly_interpret_music_expression, "ly:interpret-music-expression", Cpu_timer timer; - message (_ ("Interpreting music... ")); + message (_ ("Interpreting music...")); SCM protected_iter = Music_iterator::get_static_get_iterator (music); Music_iterator *iter = unsmob_iterator (protected_iter); @@ -123,21 +123,20 @@ LY_DEFINE (ly_interpret_music_expression, "ly:interpret-music-expression", send_stream_event (g, "Finish", 0, 0); - if (be_verbose_global) - message (_f ("elapsed time: %.2f seconds", timer.read ())); + debug_output (_f ("elapsed time: %.2f seconds", timer.read ())); return ctx; } LY_DEFINE (ly_run_translator, "ly:run-translator", - 2, 1, 0, (SCM mus, SCM output_def), - "Process @var{mus} according to @var{output-def}. An" - " interpretation context is set up, and @var{mus} is" - " interpreted with it. The context is returned in its" - " final state.\n" - "\n" - "Optionally, this routine takes an object-key to" - " to uniquely identify the score block containing it.") + 2, 1, 0, (SCM mus, SCM output_def), + "Process @var{mus} according to @var{output-def}. An" + " interpretation context is set up, and @var{mus} is" + " interpreted with it. The context is returned in its" + " final state.\n" + "\n" + "Optionally, this routine takes an object-key to" + " to uniquely identify the score block containing it.") { LY_ASSERT_SMOB (Music, mus, 1); LY_ASSERT_SMOB (Output_def, output_def, 2); diff --git a/lily/global-context.cc b/lily/global-context.cc index 8d4164c4b2..005c54b45e 100644 --- a/lily/global-context.cc +++ b/lily/global-context.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,9 +41,9 @@ Global_context::Global_context (Output_def *o) /* We only need the most basic stuff to bootstrap the context tree */ event_source ()->add_listener (GET_LISTENER (create_context_from_event), - ly_symbol2scm ("CreateContext")); + ly_symbol2scm ("CreateContext")); event_source ()->add_listener (GET_LISTENER (prepare), - ly_symbol2scm ("Prepare")); + ly_symbol2scm ("Prepare")); events_below ()->register_as_listener (event_source_); Context_def *globaldef = unsmob_context_def (definition_); @@ -51,6 +51,13 @@ Global_context::Global_context (Output_def *o) programming_error ("no `Global' context found"); else globaldef->apply_default_property_operations (this); + + SCM p = get_property ("EventClasses"); + + ancestor_lookup_ = scm_make_hash_table (scm_length (p)); + for (; scm_is_pair (p); p = scm_cdr (p)) + scm_hashq_set_x (ancestor_lookup_, scm_caar (p), scm_car (p)); + accepts_list_ = scm_list_1 (ly_symbol2scm ("Score")); } @@ -112,14 +119,14 @@ Context * Global_context::get_score_context () const { return (scm_is_pair (context_list_)) - ? unsmob_context (scm_car (context_list_)) - : 0; + ? unsmob_context (scm_car (context_list_)) + : 0; } SCM Global_context::get_output () { - Context * c = get_score_context (); + Context *c = get_score_context (); if (c) return c->get_property ("output"); else @@ -139,33 +146,33 @@ Global_context::run_iterator_on_me (Music_iterator *iter) Moment w; w.set_infinite (1); if (iter->ok ()) - w = iter->pending_moment (); + w = iter->pending_moment (); w = sneaky_insert_extra_moment (w); if (w.main_part_.is_infinity () || w > final_mom) - break; + break; if (w == prev_mom_) - { - programming_error ("Moment is not increasing. Aborting interpretation."); - break ; - } + { + programming_error ("Moment is not increasing." + " Aborting interpretation."); + break; + } - if (first) - { - /* - Need this to get grace notes at start of a piece correct. - */ - first = false; - set_property ("measurePosition", w.smobbed_copy ()); - } + { + /* + Need this to get grace notes at start of a piece correct. + */ + first = false; + set_property ("measurePosition", w.smobbed_copy ()); + } send_stream_event (this, "Prepare", 0, - ly_symbol2scm ("moment"), w.smobbed_copy ()); + ly_symbol2scm ("moment"), w.smobbed_copy ()); if (iter->ok ()) - iter->process (w); + iter->process (w); send_stream_event (this, "OneTimeStep", 0, 0); apply_finalizations (); diff --git a/lily/global-ctor.cc b/lily/global-ctor.cc index d3c68da8ac..80ae93e361 100644 --- a/lily/global-ctor.cc +++ b/lily/global-ctor.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/grace-engraver.cc b/lily/grace-engraver.cc index 5055b86807..1ebc6c9a74 100644 --- a/lily/grace-engraver.cc +++ b/lily/grace-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,15 +54,15 @@ Grace_engraver::consider_change_grace_settings () if (last_moment_.grace_part_ && !now.grace_part_) { for (SCM s = grace_settings_; scm_is_pair (s); s = scm_cdr (s)) - { - SCM context = scm_caar (s); - SCM entry = scm_cdar (s); - SCM grob = scm_cadr (entry); - SCM sym = scm_caddr (entry); + { + SCM context = scm_caar (s); + SCM entry = scm_cdar (s); + SCM grob = scm_cadr (entry); + SCM sym = scm_caddr (entry); - execute_pushpop_property (unsmob_context (context), - grob, sym, SCM_UNDEFINED); - } + execute_pushpop_property (unsmob_context (context), + grob, sym, SCM_UNDEFINED); + } grace_settings_ = SCM_EOL; } @@ -72,28 +72,28 @@ Grace_engraver::consider_change_grace_settings () grace_settings_ = SCM_EOL; for (SCM s = settings; scm_is_pair (s); s = scm_cdr (s)) - { - SCM entry = scm_car (s); - SCM context_name = scm_car (entry); - SCM grob = scm_cadr (entry); - SCM sym = scm_caddr (entry); - SCM val = scm_cadr (scm_cddr (entry)); - - Context *c = context (); - while (c && !c->is_alias (context_name)) - c = c->get_parent_context (); - - if (c) - { - execute_pushpop_property (c, - grob, sym, val); - grace_settings_ - = scm_cons (scm_cons (c->self_scm (), entry), grace_settings_); - } - else - programming_error ("cannot find context from graceSettings: " - + ly_symbol2string (context_name)); - } + { + SCM entry = scm_car (s); + SCM context_name = scm_car (entry); + SCM grob = scm_cadr (entry); + SCM sym = scm_caddr (entry); + SCM val = scm_cadr (scm_cddr (entry)); + + Context *c = context (); + while (c && !c->is_alias (context_name)) + c = c->get_parent_context (); + + if (c) + { + execute_pushpop_property (c, + grob, sym, val); + grace_settings_ + = scm_cons (scm_cons (c->self_scm (), entry), grace_settings_); + } + else + programming_error ("cannot find context from graceSettings: " + + ly_symbol2string (context_name)); + } } last_moment_ = now_mom (); @@ -115,15 +115,15 @@ Grace_engraver::start_translation_timestep () #include "translator.icc" ADD_TRANSLATOR (Grace_engraver, - /* doc */ - "Set font size and other properties for grace notes.", + /* doc */ + "Set font size and other properties for grace notes.", - /* create */ - "", + /* create */ + "", - /* read */ - "graceSettings ", + /* read */ + "graceSettings ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/grace-iterator.cc b/lily/grace-iterator.cc index 2ca53ff561..5d95fef2e7 100644 --- a/lily/grace-iterator.cc +++ b/lily/grace-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/grace-music.cc b/lily/grace-music.cc index 13835c8027..b24593aece 100644 --- a/lily/grace-music.cc +++ b/lily/grace-music.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/grace-spacing-engraver.cc b/lily/grace-spacing-engraver.cc index 45c2bb7e7c..fce1f161d0 100644 --- a/lily/grace-spacing-engraver.cc +++ b/lily/grace-spacing-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen + Copyright (C) 2006--2012 Han-Wen LilyPond is free software: you can redistribute it and/or modify @@ -33,12 +33,11 @@ protected: Moment last_moment_; Spanner *grace_spacing_; - + void process_music (); void stop_translation_timestep (); }; - Grace_spacing_engraver::Grace_spacing_engraver () { grace_spacing_ = 0; @@ -53,20 +52,19 @@ Grace_spacing_engraver::process_music () grace_spacing_ = make_spanner ("GraceSpacing", SCM_EOL); } - if (grace_spacing_ && (now.grace_part_ || last_moment_.grace_part_)) { Grob *column = unsmob_grob (get_property ("currentMusicalColumn")); Pointer_group_interface::add_grob (grace_spacing_, - ly_symbol2scm ("columns"), - column); + ly_symbol2scm ("columns"), + column); column->set_object ("grace-spacing", grace_spacing_->self_scm ()); if (!grace_spacing_->get_bound (LEFT)) - grace_spacing_->set_bound (LEFT, column); + grace_spacing_->set_bound (LEFT, column); else - grace_spacing_->set_bound (RIGHT, column); + grace_spacing_->set_bound (RIGHT, column); } } @@ -79,17 +77,16 @@ Grace_spacing_engraver::stop_translation_timestep () grace_spacing_ = 0; } - ADD_TRANSLATOR (Grace_spacing_engraver, - "Bookkeeping of shortest starting and playing notes in grace" - " note runs.", - - /* create */ - "GraceSpacing ", - - /* read */ - "currentMusicalColumn ", - - /* write */ - "" - ); + "Bookkeeping of shortest starting and playing notes in grace" + " note runs.", + + /* create */ + "GraceSpacing ", + + /* read */ + "currentMusicalColumn ", + + /* write */ + "" + ); diff --git a/lily/gregorian-ligature-engraver.cc b/lily/gregorian-ligature-engraver.cc index fccf35355f..6ab68c8c9b 100644 --- a/lily/gregorian-ligature-engraver.cc +++ b/lily/gregorian-ligature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,8 +54,8 @@ Gregorian_ligature_engraver::listen_pes_or_flexa (Stream_event *ev) } void fix_prefix (char const *name, int mask, - int *current_set, int min_set, int max_set, - Grob *primitive) + int *current_set, int min_set, int max_set, + Grob *primitive) { bool current = *current_set & mask; bool min = min_set & mask; @@ -102,99 +102,99 @@ void check_and_fix_all_prefixes (vector primitives) /* compute head prefix set by inspecting primitive grob properties */ int prefix_set - = (VIRGA *to_boolean (primitive->get_property ("virga"))) - | (STROPHA *to_boolean (primitive->get_property ("stropha"))) - | (INCLINATUM *to_boolean (primitive->get_property ("inclinatum"))) - | (AUCTUM *to_boolean (primitive->get_property ("auctum"))) - | (DESCENDENS *to_boolean (primitive->get_property ("descendens"))) - | (ASCENDENS *to_boolean (primitive->get_property ("ascendens"))) - | (ORISCUS *to_boolean (primitive->get_property ("oriscus"))) - | (QUILISMA *to_boolean (primitive->get_property ("quilisma"))) - | (DEMINUTUM *to_boolean (primitive->get_property ("deminutum"))) - | (CAVUM *to_boolean (primitive->get_property ("cavum"))) - | (LINEA *to_boolean (primitive->get_property ("linea"))) - | (PES_OR_FLEXA *to_boolean (primitive->get_property ("pes-or-flexa"))); + = (VIRGA * to_boolean (primitive->get_property ("virga"))) + | (STROPHA * to_boolean (primitive->get_property ("stropha"))) + | (INCLINATUM * to_boolean (primitive->get_property ("inclinatum"))) + | (AUCTUM * to_boolean (primitive->get_property ("auctum"))) + | (DESCENDENS * to_boolean (primitive->get_property ("descendens"))) + | (ASCENDENS * to_boolean (primitive->get_property ("ascendens"))) + | (ORISCUS * to_boolean (primitive->get_property ("oriscus"))) + | (QUILISMA * to_boolean (primitive->get_property ("quilisma"))) + | (DEMINUTUM * to_boolean (primitive->get_property ("deminutum"))) + | (CAVUM * to_boolean (primitive->get_property ("cavum"))) + | (LINEA * to_boolean (primitive->get_property ("linea"))) + | (PES_OR_FLEXA * to_boolean (primitive->get_property ("pes-or-flexa"))); /* check: ascendens and descendens exclude each other; same with - auctum and deminutum */ + auctum and deminutum */ if (prefix_set & DESCENDENS) - { - fix_prefix_set (&prefix_set, - prefix_set & ~ASCENDENS, - prefix_set & ~ASCENDENS, - primitive); - } + { + fix_prefix_set (&prefix_set, + prefix_set & ~ASCENDENS, + prefix_set & ~ASCENDENS, + primitive); + } if (prefix_set & AUCTUM) - { - fix_prefix_set (&prefix_set, - prefix_set & ~DEMINUTUM, - prefix_set & ~DEMINUTUM, - primitive); - } + { + fix_prefix_set (&prefix_set, + prefix_set & ~DEMINUTUM, + prefix_set & ~DEMINUTUM, + primitive); + } /* check: virga, quilisma and oriscus cannot be combined with any - other prefix, but may be part of a pes or flexa */ + other prefix, but may be part of a pes or flexa */ if (prefix_set & VIRGA) - { - fix_prefix_set (&prefix_set, - VIRGA, - VIRGA | PES_OR_FLEXA, - primitive); - } + { + fix_prefix_set (&prefix_set, + VIRGA, + VIRGA | PES_OR_FLEXA, + primitive); + } if (prefix_set & QUILISMA) - { - fix_prefix_set (&prefix_set, - QUILISMA, - QUILISMA | PES_OR_FLEXA, - primitive); - } + { + fix_prefix_set (&prefix_set, + QUILISMA, + QUILISMA | PES_OR_FLEXA, + primitive); + } if (prefix_set & ORISCUS) - { - fix_prefix_set (&prefix_set, - ORISCUS, - ORISCUS | PES_OR_FLEXA, - primitive); - } + { + fix_prefix_set (&prefix_set, + ORISCUS, + ORISCUS | PES_OR_FLEXA, + primitive); + } /* check: auctum is the only valid optional prefix for stropha */ if (prefix_set & STROPHA) - { - fix_prefix_set (&prefix_set, - STROPHA, - STROPHA | AUCTUM, - primitive); - } + { + fix_prefix_set (&prefix_set, + STROPHA, + STROPHA | AUCTUM, + primitive); + } /* check: inclinatum may be prefixed with auctum or deminutum only */ if (prefix_set & INCLINATUM) - { - fix_prefix_set (&prefix_set, - INCLINATUM, - INCLINATUM | AUCTUM | DEMINUTUM, - primitive); - } + { + fix_prefix_set (&prefix_set, + INCLINATUM, + INCLINATUM | AUCTUM | DEMINUTUM, + primitive); + } /* check: semivocalis (deminutum but not inclinatum) must occur in - combination with and only with pes or flexa */ + combination with and only with pes or flexa */ else if (prefix_set & DEMINUTUM) - { - fix_prefix_set (&prefix_set, - DEMINUTUM | PES_OR_FLEXA, - DEMINUTUM | PES_OR_FLEXA, - primitive); - } + { + fix_prefix_set (&prefix_set, + DEMINUTUM | PES_OR_FLEXA, + DEMINUTUM | PES_OR_FLEXA, + primitive); + } /* check: cavum and linea (either or both) may be applied only - upon core punctum */ + upon core punctum */ if (prefix_set & (CAVUM | LINEA)) - { - fix_prefix_set (&prefix_set, - 0, - CAVUM | LINEA, - primitive); - } + { + fix_prefix_set (&prefix_set, + 0, + CAVUM | LINEA, + primitive); + } /* all other combinations should be valid (unless I made a - mistake) */ + mistake) */ primitive->set_property ("prefix-set", scm_from_int (prefix_set)); } @@ -219,28 +219,28 @@ provide_context_info (vector primitives) int prefix_set = scm_to_int (primitive->get_property ("prefix-set")); if (prefix_set & PES_OR_FLEXA) - { - if (!i) // ligature may not start with 2nd head of pes or flexa - primitive->warning (_ ("cannot apply `\\~' on first head of ligature")); - else if (pitch > prev_pitch) // pes - { - prev_context_info |= PES_LOWER; - context_info |= PES_UPPER; - } - else if (pitch < prev_pitch) // flexa - { - prev_context_info |= FLEXA_LEFT; - context_info |= FLEXA_RIGHT; - } - else // (pitch == prev_pitch) - primitive->warning (_ ("cannot apply `\\~' on heads with identical pitch")); - } + { + if (!i) // ligature may not start with 2nd head of pes or flexa + primitive->warning (_ ("cannot apply `\\~' on first head of ligature")); + else if (pitch > prev_pitch) // pes + { + prev_context_info |= PES_LOWER; + context_info |= PES_UPPER; + } + else if (pitch < prev_pitch) // flexa + { + prev_context_info |= FLEXA_LEFT; + context_info |= FLEXA_RIGHT; + } + else // (pitch == prev_pitch) + primitive->warning (_ ("cannot apply `\\~' on heads with identical pitch")); + } if (prev_prefix_set & DEMINUTUM) - context_info |= AFTER_DEMINUTUM; + context_info |= AFTER_DEMINUTUM; if (prev_primitive) - prev_primitive->set_property ("context-info", - scm_from_int (prev_context_info)); + prev_primitive->set_property ("context-info", + scm_from_int (prev_context_info)); prev_primitive = primitive; prev_prefix_set = prefix_set; prev_context_info = context_info; @@ -248,12 +248,12 @@ provide_context_info (vector primitives) } if (prev_primitive) prev_primitive->set_property ("context-info", - scm_from_int (prev_context_info)); + scm_from_int (prev_context_info)); } void Gregorian_ligature_engraver::build_ligature (Spanner *ligature, - vector primitives) + vector primitives) { // apply style-independent checking and transformation check_and_fix_all_prefixes (primitives); diff --git a/lily/gregorian-ligature.cc b/lily/gregorian-ligature.cc index f0606102cb..e6e16e4393 100644 --- a/lily/gregorian-ligature.cc +++ b/lily/gregorian-ligature.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Han-Wen Nienhuys + Copyright (C) 2003--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ void check_prefix (string name, int mask, int prefix_set, string *str) if (prefix_set & mask) { if (!str->empty ()) - *str += ", "; + *str += ", "; *str += name; } } @@ -60,21 +60,21 @@ Gregorian_ligature::prefixes_to_str (Grob *primitive) read by the associated item class, such as VaticanaLigature.--jr */ ADD_INTERFACE (Gregorian_ligature, - "A gregorian ligature.", + "A gregorian ligature.", - /* properties */ - "virga " - "stropha " - "inclinatum " - "auctum " - "descendens " - "ascendens " - "oriscus " - "quilisma " - "deminutum " - "cavum " - "linea " - "pes-or-flexa " - "context-info " - "prefix-set " - ); + /* properties */ + "virga " + "stropha " + "inclinatum " + "auctum " + "descendens " + "ascendens " + "oriscus " + "quilisma " + "deminutum " + "cavum " + "linea " + "pes-or-flexa " + "context-info " + "prefix-set " + ); diff --git a/lily/grid-line-interface.cc b/lily/grid-line-interface.cc index e942cb0a0e..52c11a4a3a 100644 --- a/lily/grid-line-interface.cc +++ b/lily/grid-line-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,11 +50,11 @@ Grid_line_interface::print (SCM smobbed_me) Real staffline = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real thick = robust_scm2double (me->get_property ("thickness"), 1.0) - * staffline; + * staffline; iv += -me->relative_coordinate (refp, Y_AXIS); Stencil st = Lookup::filled_box (Box (Interval (0, thick), - iv)); + iv)); return st.smobbed_copy (); } @@ -67,7 +67,7 @@ Grid_line_interface::width (SCM smob) Real staffline = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real thick = robust_scm2double (me->get_property ("thickness"), 1.0) - * staffline; + * staffline; return ly_interval2scm (Interval (0, thick)); } @@ -79,16 +79,16 @@ Grid_line_interface::add_grid_point (Grob *me, Grob *b) } ADD_INTERFACE (Grid_line_interface, - "A line that is spanned between grid-points.", + "A line that is spanned between grid-points.", - /* properties */ - "elements " - "thickness " - ); + /* properties */ + "elements " + "thickness " + ); ADD_INTERFACE (Grid_point_interface, - "A spanning point for grid lines.", + "A spanning point for grid lines.", - /* properties */ - "" - ); + /* properties */ + "" + ); diff --git a/lily/grid-line-span-engraver.cc b/lily/grid-line-span-engraver.cc index ad80c9ea7e..43425b6f46 100644 --- a/lily/grid-line-span-engraver.cc +++ b/lily/grid-line-span-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ class Grid_line_span_engraver : public Engraver { Item *spanline_; - vector lines_; + vector lines_; public: TRANSLATOR_DECLARATIONS (Grid_line_span_engraver); @@ -48,10 +48,10 @@ Grid_line_span_engraver::acknowledge_grid_point (Grob_info i) lines_.push_back (it); if (lines_.size () >= 2 && !spanline_) - { - spanline_ = make_item ("GridLine", SCM_EOL); - spanline_->set_parent (lines_[0], X_AXIS); - } + { + spanline_ = make_item ("GridLine", SCM_EOL); + spanline_->set_parent (lines_[0], X_AXIS); + } } } @@ -61,7 +61,7 @@ Grid_line_span_engraver::stop_translation_timestep () if (spanline_) { for (vsize i = 0; i < lines_.size (); i++) - Grid_line_interface::add_grid_point (spanline_, lines_[i]); + Grid_line_interface::add_grid_point (spanline_, lines_[i]); spanline_ = 0; } @@ -71,16 +71,16 @@ Grid_line_span_engraver::stop_translation_timestep () #include "translator.icc" ADD_ACKNOWLEDGER (Grid_line_span_engraver, grid_point); ADD_TRANSLATOR (Grid_line_span_engraver, - /* doc */ - "This engraver makes cross-staff lines: It catches all normal" - " lines and draws a single span line across them.", + /* doc */ + "This engraver makes cross-staff lines: It catches all normal" + " lines and draws a single span line across them.", - /* create */ - "GridLine ", + /* create */ + "GridLine ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/grid-point-engraver.cc b/lily/grid-point-engraver.cc index eb6376e98e..471997d48c 100644 --- a/lily/grid-point-engraver.cc +++ b/lily/grid-point-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ Grid_point_engraver::process_music () Moment now = now_mom (); if (!now.main_part_.mod_rat (mom->main_part_)) - make_item ("GridPoint", SCM_EOL); + make_item ("GridPoint", SCM_EOL); } } @@ -49,16 +49,16 @@ Grid_point_engraver::Grid_point_engraver () } ADD_TRANSLATOR (Grid_point_engraver, - /* doc */ - "Generate grid points.", + /* doc */ + "Generate grid points.", - /* create */ - "GridPoint ", + /* create */ + "GridPoint ", - /* read */ - "gridInterval ", + /* read */ + "gridInterval ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/grob-array-scheme.cc b/lily/grob-array-scheme.cc index 5326626e0e..2268ab6eda 100644 --- a/lily/grob-array-scheme.cc +++ b/lily/grob-array-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -22,21 +22,20 @@ #include "grob.hh" LY_DEFINE (ly_grob_array_length, "ly:grob-array-length", - 1, 0, 0, - (SCM grob_arr), - "Return the length of @var{grob-arr}.") + 1, 0, 0, + (SCM grob_arr), + "Return the length of @var{grob-arr}.") { LY_ASSERT_SMOB (Grob_array, grob_arr, 1); Grob_array *me = unsmob_grob_array (grob_arr); - return scm_from_int (me->size ()); + return scm_from_int (me->size ()); } - LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref", - 2, 0, 0, - (SCM grob_arr, SCM index), - "Retrieve the @var{index}th element of @var{grob-arr}.") + 2, 0, 0, + (SCM grob_arr, SCM index), + "Retrieve the @var{index}th element of @var{grob-arr}.") { Grob_array *me = unsmob_grob_array (grob_arr); LY_ASSERT_SMOB (Grob_array, grob_arr, 1); @@ -44,15 +43,15 @@ LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref", vsize i = scm_to_uint (index); if (i == VPOS || i >= me->size ()) - scm_out_of_range (NULL, scm_from_unsigned_integer (i)); - + scm_out_of_range (NULL, scm_from_unsigned_integer (i)); + return me->grob (i)->self_scm (); } LY_DEFINE (ly_grob_array_2_list, "ly:grob-array->list", - 1, 0, 0, - (SCM grob_arr), - "Return the elements of @var{grob-arr} as a Scheme list.") + 1, 0, 0, + (SCM grob_arr), + "Return the elements of @var{grob-arr} as a Scheme list.") { Grob_array *me = unsmob_grob_array (grob_arr); LY_ASSERT_SMOB (Grob_array, grob_arr, 1); diff --git a/lily/grob-array.cc b/lily/grob-array.cc index 217ea78aa9..62d071cee1 100644 --- a/lily/grob-array.cc +++ b/lily/grob-array.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,13 +40,13 @@ Grob_array::Grob_array () ordered_ = true; } -vector & +vector & Grob_array::array_reference () { return grobs_; } -vector const & +vector const & Grob_array::array () const { return grobs_; @@ -66,7 +66,7 @@ Grob_array::mark_smob (SCM s) } int -Grob_array::print_smob (SCM arr, SCM port, scm_print_state*) +Grob_array::print_smob (SCM arr, SCM port, scm_print_state *) { scm_puts ("# ()); + + vector_sort (grobs_, less ()); ::uniq (grobs_); } @@ -109,7 +109,7 @@ Grob_array::empty () const } void -Grob_array::set_array (vector const &src) +Grob_array::set_array (vector const &src) { grobs_ = src; } diff --git a/lily/grob-closure.cc b/lily/grob-closure.cc index 124d143793..4f6c0adc81 100644 --- a/lily/grob-closure.cc +++ b/lily/grob-closure.cc @@ -5,20 +5,18 @@ SCM axis_offset_symbol (Axis a) { return a == X_AXIS - ? ly_symbol2scm ("X-offset") - : ly_symbol2scm ("Y-offset"); + ? ly_symbol2scm ("X-offset") + : ly_symbol2scm ("Y-offset"); } SCM axis_parent_positioning (Axis a) { return (a == X_AXIS) - ? Grob::x_parent_positioning_proc - : Grob::y_parent_positioning_proc; + ? Grob::x_parent_positioning_proc + : Grob::y_parent_positioning_proc; } - - /* Replace @@ -27,7 +25,6 @@ axis_parent_positioning (Axis a) by (+ (PROC GROB) (orig-proc GROB)) - */ void add_offset_callback (Grob *g, SCM proc, Axis a) @@ -38,11 +35,11 @@ add_offset_callback (Grob *g, SCM proc, Axis a) && !is_simple_closure (data)) { g->set_property (axis_offset_symbol (a), proc); - return ; + return; } if (ly_is_procedure (data)) - data = ly_make_simple_closure (scm_list_1 (data)); + data = ly_make_simple_closure (scm_list_1 (data)); else if (is_simple_closure (data)) data = simple_closure_expression (data); @@ -50,12 +47,11 @@ add_offset_callback (Grob *g, SCM proc, Axis a) if (ly_is_procedure (proc)) proc = ly_make_simple_closure (scm_list_1 (proc)); - + SCM expr = scm_list_3 (plus, proc, data); g->set_property (axis_offset_symbol (a), ly_make_simple_closure (expr)); } - /* replace @@ -63,8 +59,7 @@ add_offset_callback (Grob *g, SCM proc, Axis a) by - (PROC GROB (orig-proc GROB)) - + (PROC GROB (orig-proc GROB)) */ void chain_callback (Grob *g, SCM proc, SCM sym) @@ -72,7 +67,7 @@ chain_callback (Grob *g, SCM proc, SCM sym) SCM data = g->get_property_data (sym); if (ly_is_procedure (data)) - data = ly_make_simple_closure (scm_list_1 (data)); + data = ly_make_simple_closure (scm_list_1 (data)); else if (is_simple_closure (data)) data = simple_closure_expression (data); else @@ -85,10 +80,10 @@ chain_callback (Grob *g, SCM proc, SCM sym) SCM expr = scm_list_2 (proc, data); g->set_property (sym, - - // twice: one as a wrapper for grob property routines, - // once for the actual delayed binding. - ly_make_simple_closure (ly_make_simple_closure (expr))); + + // twice: one as a wrapper for grob property routines, + // once for the actual delayed binding. + ly_make_simple_closure (ly_make_simple_closure (expr))); } void diff --git a/lily/grob-info.cc b/lily/grob-info.cc index b710477a8e..4e5d8889f3 100644 --- a/lily/grob-info.cc +++ b/lily/grob-info.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,11 +53,11 @@ Grob_info::event_cause () const return unsmob_stream_event (cause); } -vector +vector Grob_info::origin_contexts (Translator *end) const { Context *t = origin_trans_->context (); - vector r; + vector r; do { r.push_back (t); diff --git a/lily/grob-interface-scheme.cc b/lily/grob-interface-scheme.cc index 75755994d3..bbbe7cfe85 100644 --- a/lily/grob-interface-scheme.cc +++ b/lily/grob-interface-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,18 +31,18 @@ internal_add_interface (SCM a, SCM b, SCM c) all_ifaces = tab; scm_permanent_object (tab); } - + SCM entry = scm_list_n (a, b, c, SCM_UNDEFINED); scm_hashq_set_x (all_ifaces, a, entry); } LY_DEFINE (ly_add_interface, "ly:add-interface", - 3, 0, 0, (SCM iface, SCM desc, SCM props), - "Add a new grob interface. @var{iface} is the" - " interface name, @var{desc} is the interface" - " description, and @var{props} is the list of" - " user-settable properties for the interface.") + 3, 0, 0, (SCM iface, SCM desc, SCM props), + "Add a new grob interface. @var{iface} is the" + " interface name, @var{desc} is the interface" + " description, and @var{props} is the list of" + " user-settable properties for the interface.") { LY_ASSERT_TYPE (ly_is_symbol, iface, 1); LY_ASSERT_TYPE (scm_is_string, desc, 2); @@ -54,8 +54,8 @@ LY_DEFINE (ly_add_interface, "ly:add-interface", } LY_DEFINE (ly_all_grob_interfaces, "ly:all-grob-interfaces", - 0, 0, 0, (), - "Return the hash table with all grob interface descriptions.") + 0, 0, 0, (), + "Return the hash table with all grob interface descriptions.") { return all_ifaces; } diff --git a/lily/grob-interface.cc b/lily/grob-interface.cc index 2771a8001c..ecc2a6e08f 100644 --- a/lily/grob-interface.cc +++ b/lily/grob-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,8 +27,8 @@ #include "misc.hh" SCM add_interface (char const *cxx_name, - char const *descr, - char const *vars) + char const *descr, + char const *vars) { string suffix ("-interface"); string lispy_name = camel_case_to_lisp_identifier (cxx_name); @@ -51,7 +51,7 @@ check_interfaces_for_property (Grob const *me, SCM sym) if (sym == ly_symbol2scm ("meta")) { /* - otherwise we get in a nasty recursion loop. + otherwise we get in a nasty recursion loop. */ return; } @@ -64,12 +64,12 @@ check_interfaces_for_property (Grob const *me, SCM sym) { SCM iface = scm_hashq_ref (all_ifaces, scm_car (ifs), SCM_BOOL_F); if (iface == SCM_BOOL_F) - { - string msg = to_string (_f ("Unknown interface `%s'", - ly_symbol2string (scm_car (ifs)).c_str ())); - programming_error (msg); - continue; - } + { + string msg = to_string (_f ("Unknown interface `%s'", + ly_symbol2string (scm_car (ifs)).c_str ())); + programming_error (msg); + continue; + } found = found || (scm_c_memq (sym, scm_caddr (iface)) != SCM_BOOL_F); } @@ -77,8 +77,8 @@ check_interfaces_for_property (Grob const *me, SCM sym) if (!found) { string str = to_string (_f ("Grob `%s' has no interface for property `%s'", - me->name ().c_str (), - ly_symbol2string (sym).c_str ())); + me->name ().c_str (), + ly_symbol2string (sym).c_str ())); programming_error (str); } } diff --git a/lily/grob-pq-engraver.cc b/lily/grob-pq-engraver.cc index 57ba04f9c9..6ad7ccf0fa 100644 --- a/lily/grob-pq-engraver.cc +++ b/lily/grob-pq-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ struct Grob_pq_entry }; bool -operator< (Grob_pq_entry const &a, Grob_pq_entry const &b) +operator < (Grob_pq_entry const &a, Grob_pq_entry const &b) { return a.end_ < b.end_; } @@ -44,7 +44,7 @@ protected: void start_translation_timestep (); void stop_translation_timestep (); void process_acknowledged (); - + vector started_now_; }; @@ -59,12 +59,12 @@ Grob_pq_engraver::initialize () } LY_DEFINE (ly_grob_pq_less_p, "ly:grob-pqself_scm (), - SCM_EOL); + started_now_[i].grob_->self_scm (), + SCM_EOL); tail = SCM_CDRLOC (*tail); } @@ -136,8 +136,8 @@ Grob_pq_engraver::start_translation_timestep () while (scm_is_pair (busy) && *unsmob_moment (scm_caar (busy)) < now) { /* - The grob-pq-engraver is not water tight, and stuff like - tupletSpannerDuration confuses it. + The grob-pq-engraver is not water tight, and stuff like + tupletSpannerDuration confuses it. */ busy = scm_cdr (busy); } @@ -149,16 +149,16 @@ Grob_pq_engraver::start_translation_timestep () #include "translator.icc" ADD_ACKNOWLEDGER (Grob_pq_engraver, grob); ADD_TRANSLATOR (Grob_pq_engraver, - /* doc */ - "Administrate when certain grobs (e.g., note heads) stop" - " playing.", + /* doc */ + "Administrate when certain grobs (e.g., note heads) stop" + " playing.", - /* create */ - "", + /* create */ + "", - /* read */ - "busyGrobs ", + /* read */ + "busyGrobs ", - /* write */ - "busyGrobs " - ); + /* write */ + "busyGrobs " + ); diff --git a/lily/grob-property.cc b/lily/grob-property.cc index f174f7ee01..22c5fe2e71 100644 --- a/lily/grob-property.cc +++ b/lily/grob-property.cc @@ -18,6 +18,7 @@ #include "program-option.hh" #include "profile.hh" #include "simple-closure.hh" +#include "unpure-pure-container.hh" #include "warn.hh" #include "protected-scm.hh" @@ -35,65 +36,61 @@ print_property_callback_stack () } #endif -static SCM modification_callback = SCM_EOL; -static SCM cache_callback = SCM_EOL; - +static Protected_scm modification_callback = SCM_EOL; +static Protected_scm cache_callback = SCM_EOL; /* - FIXME: this should use ly:set-option interface instead. - */ LY_DEFINE (ly_set_grob_modification_callback, "ly:set-grob-modification-callback", - 1, 0, 0, (SCM cb), - "Specify a procedure that will be called every time LilyPond" - " modifies a grob property. The callback will receive as" - " arguments the grob that is being modified, the name of the" - " C++ file in which the modification was requested, the line" - " number in the C++ file in which the modification was requested," - " the name of the function in which the modification was" - " requested, the property to be changed, and the new value for" - " the property.") + 1, 0, 0, (SCM cb), + "Specify a procedure that will be called every time LilyPond" + " modifies a grob property. The callback will receive as" + " arguments the grob that is being modified, the name of the" + " C++ file in which the modification was requested, the line" + " number in the C++ file in which the modification was requested," + " the name of the function in which the modification was" + " requested, the property to be changed, and the new value for" + " the property.") { - modification_callback = (ly_is_procedure (cb)) ? cb : SCM_BOOL_F; + modification_callback = (ly_is_procedure (cb)) ? cb : SCM_BOOL_F; return SCM_UNSPECIFIED; } LY_DEFINE (ly_set_property_cache_callback, "ly:set-property-cache-callback", - 1, 0, 0, (SCM cb), - "Specify a procedure that will be called whenever lilypond" - " calculates a callback function and caches the result. The" - " callback will receive as arguments the grob whose property it" - " is, the name of the property, the name of the callback that" - " calculated the property, and the new (cached) value of the" - " property.") + 1, 0, 0, (SCM cb), + "Specify a procedure that will be called whenever lilypond" + " calculates a callback function and caches the result. The" + " callback will receive as arguments the grob whose property it" + " is, the name of the property, the name of the callback that" + " calculated the property, and the new (cached) value of the" + " property.") { - cache_callback = (ly_is_procedure (cb)) ? cb : SCM_BOOL_F; + cache_callback = (ly_is_procedure (cb)) ? cb : SCM_BOOL_F; return SCM_UNSPECIFIED; } - void Grob::instrumented_set_property (SCM sym, SCM v, - char const *file, - int line, - char const *fun) + char const *file, + int line, + char const *fun) { #ifndef NDEBUG if (ly_is_procedure (modification_callback)) scm_apply_0 (modification_callback, - scm_list_n (self_scm (), - scm_from_locale_string (file), - scm_from_int (line), - scm_from_locale_string (fun), - sym, v, SCM_UNDEFINED)); + scm_list_n (self_scm (), + scm_from_locale_string (file), + scm_from_int (line), + scm_from_locale_string (fun), + sym, v, SCM_UNDEFINED)); #else (void) file; (void) line; (void) fun; #endif - + internal_set_property (sym, v); } @@ -101,9 +98,9 @@ SCM Grob::get_property_alist_chain (SCM def) const { return scm_list_n (mutable_property_alist_, - immutable_property_alist_, - def, - SCM_UNDEFINED); + immutable_property_alist_, + def, + SCM_UNDEFINED); } extern void check_interfaces_for_property (Grob const *me, SCM sym); @@ -112,7 +109,7 @@ void Grob::internal_set_property (SCM sym, SCM v) { internal_set_value_on_alist (&mutable_property_alist_, - sym, v); + sym, v); } @@ -126,9 +123,10 @@ Grob::internal_set_value_on_alist (SCM *alist, SCM sym, SCM v) if (do_internal_type_checking_global) { if (!ly_is_procedure (v) - && !is_simple_closure (v) - && v != ly_symbol2scm ("calculation-in-progress")) - type_check_assignment (sym, v, ly_symbol2scm ("backend-type?")); + && !is_simple_closure (v) + && !is_unpure_pure_container (v) + && v != ly_symbol2scm ("calculation-in-progress")) + type_check_assignment (sym, v, ly_symbol2scm ("backend-type?")); check_interfaces_for_property (this, sym); } @@ -143,7 +141,7 @@ Grob::internal_get_property_data (SCM sym) const if (profile_property_accesses) note_property_access (&grob_property_lookup_table, sym); #endif - + SCM handle = scm_sloppy_assq (sym, mutable_property_alist_); if (handle != SCM_BOOL_F) return scm_cdr (handle); @@ -153,12 +151,12 @@ Grob::internal_get_property_data (SCM sym) const if (do_internal_type_checking_global && scm_is_pair (handle)) { SCM val = scm_cdr (handle); - if (!ly_is_procedure (val) && !is_simple_closure (val)) - type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")); + if (!ly_is_procedure (val) && !is_simple_closure (val) && !is_unpure_pure_container (val)) + type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")); check_interfaces_for_property (this, sym); } - + return (handle == SCM_BOOL_F) ? SCM_EOL : scm_cdr (handle); } @@ -170,24 +168,26 @@ Grob::internal_get_property (SCM sym) const #ifndef NDEBUG if (val == ly_symbol2scm ("calculation-in-progress")) { - programming_error (_f ("cyclic dependency: calculation-in-progress encountered for #'%s (%s)", - ly_symbol2string (sym).c_str (), - name ().c_str ())); + programming_error (to_string ("cyclic dependency: calculation-in-progress encountered for #'%s (%s)", + ly_symbol2string (sym).c_str (), + name ().c_str ())); if (debug_property_callbacks) - { - message ("backtrace: "); - print_property_callback_stack (); - } + { + message ("backtrace: "); + print_property_callback_stack (); + } } #endif - + + if (is_unpure_pure_container (val)) + val = unpure_pure_container_unpure_part (val); if (ly_is_procedure (val) || is_simple_closure (val)) { - Grob *me = ((Grob*)this); + Grob *me = ((Grob *)this); val = me->try_callback_on_alist (&me->mutable_property_alist_, sym, val); } - + return val; } @@ -196,12 +196,12 @@ SCM Grob::internal_get_pure_property (SCM sym, int start, int end) const { SCM val = internal_get_property_data (sym); - if (ly_is_procedure (val)) + if (ly_is_procedure (val) || is_unpure_pure_container (val)) return call_pure_function (val, scm_list_1 (self_scm ()), start, end); if (is_simple_closure (val)) return evaluate_with_simple_closure (self_scm (), - simple_closure_expression (val), - true, start, end); + simple_closure_expression (val), + true, start, end); return val; } @@ -213,7 +213,7 @@ Grob::internal_get_maybe_pure_property (SCM sym, bool pure, int start, int end) SCM Grob::try_callback_on_alist (SCM *alist, SCM sym, SCM proc) -{ +{ SCM marker = ly_symbol2scm ("calculation-in-progress"); /* need to put a value in SYM to ensure that we don't get a @@ -232,15 +232,15 @@ Grob::try_callback_on_alist (SCM *alist, SCM sym, SCM proc) else if (is_simple_closure (proc)) { value = evaluate_with_simple_closure (self_scm (), - simple_closure_expression (proc), - false, 0, 0); + simple_closure_expression (proc), + false, 0, 0); } - + #ifndef NDEBUG if (debug_property_callbacks) grob_property_callback_stack = scm_cdr (grob_property_callback_stack); #endif - + /* If the function returns SCM_UNSPECIFIED, we assume the property has been set with an explicit set_property () @@ -251,22 +251,22 @@ Grob::try_callback_on_alist (SCM *alist, SCM sym, SCM proc) value = get_property_data (sym); assert (value == SCM_EOL || value == marker); if (value == marker) - *alist = scm_assq_remove_x (*alist, marker); + *alist = scm_assq_remove_x (*alist, marker); } else { #ifndef NDEBUG if (ly_is_procedure (cache_callback)) - scm_apply_0 (cache_callback, - scm_list_n (self_scm (), - sym, - proc, - value, - SCM_UNDEFINED)); + scm_apply_0 (cache_callback, + scm_list_n (self_scm (), + sym, + proc, + value, + SCM_UNDEFINED)); #endif internal_set_value_on_alist (alist, sym, value); } - + return value; } @@ -293,17 +293,18 @@ Grob::internal_get_object (SCM sym) const note_property_access (&grob_property_lookup_table, sym); SCM s = scm_sloppy_assq (sym, object_alist_); - + if (s != SCM_BOOL_F) { SCM val = scm_cdr (s); if (ly_is_procedure (val) - || is_simple_closure (val)) - { - Grob *me = ((Grob*)this); - val = me->try_callback_on_alist (&me->object_alist_, sym, val); - } - + || is_simple_closure (val) + || is_unpure_pure_container (val)) + { + Grob *me = ((Grob *)this); + val = me->try_callback_on_alist (&me->object_alist_, sym, val); + } + return val; } @@ -328,6 +329,6 @@ call_pure_function (SCM unpure, SCM args, int start, int end) SCM scm_call_pure_function = ly_lily_module_constant ("call-pure-function"); return scm_apply_0 (scm_call_pure_function, - scm_list_4 (unpure, args, scm_from_int (start), scm_from_int (end))); + scm_list_4 (unpure, args, scm_from_int (start), scm_from_int (end))); } diff --git a/lily/grob-scheme.cc b/lily/grob-scheme.cc index 9554883464..81ff7864ff 100644 --- a/lily/grob-scheme.cc +++ b/lily/grob-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -18,18 +18,19 @@ along with LilyPond. If not, see . */ -#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), - "Return the value for property @var{sym} of @var{grob}," - " but do not process callbacks.") + 2, 0, 0, (SCM grob, SCM sym), + "Return the value for property @var{sym} of @var{grob}," + " but do not process callbacks.") { Grob *sc = unsmob_grob (grob); @@ -40,15 +41,16 @@ LY_DEFINE (ly_grob_property_data, "ly:grob-property-data", } LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!", - 3, 0, 0, (SCM grob, SCM sym, SCM val), - "Set @var{sym} in grob @var{grob} to value @var{val}.") + 3, 0, 0, (SCM grob, SCM sym, SCM val), + "Set @var{sym} in grob @var{grob} to value @var{val}.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); 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"); @@ -57,8 +59,8 @@ LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!", } LY_DEFINE (ly_grob_set_nested_property_x, "ly:grob-set-nested-property!", - 3, 0, 0, (SCM grob, SCM symlist, SCM val), - "Set nested property @var{symlist} in grob @var{grob} to value @var{val}.") + 3, 0, 0, (SCM grob, SCM symlist, SCM val), + "Set nested property @var{symlist} in grob @var{grob} to value @var{val}.") { Grob *sc = unsmob_grob (grob); @@ -76,12 +78,54 @@ LY_DEFINE (ly_grob_set_nested_property_x, "ly:grob-set-nested-property!", return SCM_UNSPECIFIED; } +LY_DEFINE (ly_grob_pure_property, "ly:grob-pure-property", + 4, 1, 0, (SCM grob, SCM sym, SCM beg, SCM end, SCM val), + "Return the pure value for property @var{sym} of @var{grob}." + " If no value is found, return @var{val} or @code{'()}" + " if @var{val} is not specified.") +{ + Grob *sc = unsmob_grob (grob); + + LY_ASSERT_SMOB (Grob, grob, 1); + LY_ASSERT_TYPE (ly_is_symbol, sym, 2); + LY_ASSERT_TYPE (scm_is_integer, beg, 3); + LY_ASSERT_TYPE (scm_is_integer, end, 4); + if (val == SCM_UNDEFINED) + val = SCM_EOL; + + SCM retval = sc->internal_get_pure_property (sym, scm_to_int (beg), scm_to_int (end)); + if (retval == SCM_EOL) + retval = val; + + return retval; +} + +LY_DEFINE (ly_grob_pure_height, "ly:grob-pure-height", + 4, 1, 0, (SCM grob, SCM refp, SCM beg, SCM end, SCM val), + "Return the pure height of @var{grob} given refpoint @var{refp}." + " If no value is found, return @var{val} or @code{'()}" + " if @var{val} is not specified.") +{ + Grob *sc = unsmob_grob (grob); + Grob *ref = unsmob_grob (refp); + + LY_ASSERT_SMOB (Grob, grob, 1); + LY_ASSERT_SMOB (Grob, refp, 2); + LY_ASSERT_TYPE (scm_is_integer, beg, 3); + LY_ASSERT_TYPE (scm_is_integer, end, 4); + if (val == SCM_UNDEFINED) + val = SCM_EOL; + + Interval retval = sc->pure_height (ref, scm_to_int (beg), scm_to_int (end)); + + return ly_interval2scm (retval); +} LY_DEFINE (ly_grob_property, "ly:grob-property", - 2, 1, 0, (SCM grob, SCM sym, SCM val), - "Return the value for property @var{sym} of @var{grob}." - " If no value is found, return @var{val} or @code{'()}" - " if @var{val} is not specified.") + 2, 1, 0, (SCM grob, SCM sym, SCM val), + "Return the value for property @var{sym} of @var{grob}." + " If no value is found, return @var{val} or @code{'()}" + " if @var{val} is not specified.") { Grob *sc = unsmob_grob (grob); @@ -93,43 +137,41 @@ LY_DEFINE (ly_grob_property, "ly:grob-property", SCM retval = sc->internal_get_property (sym); if (retval == SCM_EOL) retval = val; - + return retval; } - LY_DEFINE (ly_grob_interfaces, "ly:grob-interfaces", - 1, 0, 0, (SCM grob), - "Return the interfaces list of grob @var{grob}.") + 1, 0, 0, (SCM grob), + "Return the interfaces list of grob @var{grob}.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); return sc->interfaces (); } LY_DEFINE (ly_grob_object, "ly:grob-object", - 2, 0, 0, (SCM grob, SCM sym), - "Return the value of a pointer in grob @var{grob} of property" - " @var{sym}. It returns @code{'()} (end-of-list) if @var{sym}" - " is undefined in @var{grob}.") + 2, 0, 0, (SCM grob, SCM sym), + "Return the value of a pointer in grob @var{grob} of property" + " @var{sym}. It returns @code{'()} (end-of-list) if @var{sym}" + " is undefined in @var{grob}.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_TYPE (ly_is_symbol, sym, 2); return sc->internal_get_object (sym); } - LY_DEFINE (ly_grob_set_object_x, "ly:grob-set-object!", - 3, 0, 0, (SCM grob, SCM sym, SCM val), - "Set @var{sym} in grob @var{grob} to value @var{val}.") + 3, 0, 0, (SCM grob, SCM sym, SCM val), + "Set @var{sym} in grob @var{grob} to value @var{val}.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_TYPE (ly_is_symbol, sym, 2); @@ -140,52 +182,50 @@ LY_DEFINE (ly_grob_set_object_x, "ly:grob-set-object!", /* TODO: make difference between scaled and unscalead variable in calling (i.e different funcs.) */ LY_DEFINE (ly_grob_layout, "ly:grob-layout", - 1, 0, 0, (SCM grob), - "Get @code{\\layout} definition from grob @var{grob}.") + 1, 0, 0, (SCM grob), + "Get @code{\\layout} definition from grob @var{grob}.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); return sc->layout ()->self_scm (); } LY_DEFINE (ly_grob_alist_chain, "ly:grob-alist-chain", - 1, 1, 0, (SCM grob, SCM global), - "Get an alist chain for grob @var{grob}, with @var{global} as" - " the global default. If unspecified, @code{font-defaults}" - " from the layout block is taken.") + 1, 1, 0, (SCM grob, SCM global), + "Get an alist chain for grob @var{grob}, with @var{global} as" + " the global default. If unspecified, @code{font-defaults}" + " from the layout block is taken.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); if (global == SCM_UNDEFINED) { global = sc->layout ()->lookup_variable (ly_symbol2scm ("font-defaults")); if (global == SCM_UNDEFINED) - global = SCM_EOL; + global = SCM_EOL; } return sc->get_property_alist_chain (global); } LY_DEFINE (ly_grob_extent, "ly:grob-extent", - 3, 0, 0, (SCM grob, SCM refp, SCM axis), - "Get the extent in @var{axis} direction of @var{grob} relative to" - " the grob @var{refp}.") + 3, 0, 0, (SCM grob, SCM refp, SCM axis), + "Get the extent in @var{axis} direction of @var{grob} relative to" + " the grob @var{refp}.") { Grob *sc = unsmob_grob (grob); Grob *ref = unsmob_grob (refp); - - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_SMOB (Grob, refp, 2); LY_ASSERT_TYPE (is_axis, axis, 3); Axis a = Axis (scm_to_int (axis)); - if (ref->common_refpoint (sc, a) != ref) { // ugh. should use other error message @@ -195,20 +235,19 @@ LY_DEFINE (ly_grob_extent, "ly:grob-extent", } LY_DEFINE (ly_grob_robust_relative_extent, "ly:grob-robust-relative-extent", - 3, 0, 0, (SCM grob, SCM refp, SCM axis), - "Get the extent in @var{axis} direction of @var{grob} relative to" - " the grob @var{refp}, or @code{(0,0)} if empty.") + 3, 0, 0, (SCM grob, SCM refp, SCM axis), + "Get the extent in @var{axis} direction of @var{grob} relative to" + " the grob @var{refp}, or @code{(0,0)} if empty.") { Grob *sc = unsmob_grob (grob); Grob *ref = unsmob_grob (refp); - - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_SMOB (Grob, refp, 2); LY_ASSERT_TYPE (is_axis, axis, 3); Axis a = Axis (scm_to_int (axis)); - + if (ref->common_refpoint (sc, a) != ref) { // ugh. should use other error message @@ -219,21 +258,19 @@ LY_DEFINE (ly_grob_robust_relative_extent, "ly:grob-robust-relative-extent", } LY_DEFINE (ly_grob_relative_coordinate, "ly:grob-relative-coordinate", - 3, 0, 0, (SCM grob, SCM refp, SCM axis), - "Get the coordinate in @var{axis} direction of @var{grob} relative" - " to the grob @var{refp}.") + 3, 0, 0, (SCM grob, SCM refp, SCM axis), + "Get the coordinate in @var{axis} direction of @var{grob} relative" + " to the grob @var{refp}.") { Grob *sc = unsmob_grob (grob); Grob *ref = unsmob_grob (refp); - - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_SMOB (Grob, refp, 2); LY_ASSERT_TYPE (is_axis, axis, 3); Axis a = Axis (scm_to_int (axis)); - if (ref->common_refpoint (sc, a) != ref) { // ugh. should use other error message @@ -243,14 +280,13 @@ LY_DEFINE (ly_grob_relative_coordinate, "ly:grob-relative-coordinate", return scm_from_double (sc->relative_coordinate (ref, a)); } - LY_DEFINE (ly_grob_parent, "ly:grob-parent", - 2, 0, 0, (SCM grob, SCM axis), - "Get the parent of @var{grob}. @var{axis} is 0 for the X-axis," - " 1@tie{}for the Y-axis.") + 2, 0, 0, (SCM grob, SCM axis), + "Get the parent of @var{grob}. @var{axis} is 0 for the X-axis," + " 1@tie{}for the Y-axis.") { Grob *sc = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_TYPE (is_axis, axis, 2); @@ -259,8 +295,8 @@ LY_DEFINE (ly_grob_parent, "ly:grob-parent", } LY_DEFINE (ly_grob_set_parent_x, "ly:grob-set-parent!", - 3, 0, 0, (SCM grob, SCM axis, SCM parent_grob), - "Set @var{parent-grob} the parent of grob @var{grob} in axis @var{axis}.") + 3, 0, 0, (SCM grob, SCM axis, SCM parent_grob), + "Set @var{parent-grob} the parent of grob @var{grob} in axis @var{axis}.") { Grob *gr = unsmob_grob (grob); Grob *parent = unsmob_grob (parent_grob); @@ -275,11 +311,11 @@ LY_DEFINE (ly_grob_set_parent_x, "ly:grob-set-parent!", } LY_DEFINE (ly_grob_properties, "ly:grob-properties", - 1, 0, 0, (SCM grob), - "Get the mutable properties of @var{grob}.") + 1, 0, 0, (SCM grob), + "Get the mutable properties of @var{grob}.") { Grob *g = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); /* FIXME: uhg? copy/read only? */ @@ -287,11 +323,11 @@ LY_DEFINE (ly_grob_properties, "ly:grob-properties", } LY_DEFINE (ly_grob_basic_properties, "ly:grob-basic-properties", - 1, 0, 0, (SCM grob), - "Get the immutable properties of @var{grob}.") + 1, 0, 0, (SCM grob), + "Get the immutable properties of @var{grob}.") { Grob *g = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); /* FIXME: uhg? copy/read only? */ @@ -299,11 +335,11 @@ LY_DEFINE (ly_grob_basic_properties, "ly:grob-basic-properties", } LY_DEFINE (ly_grob_system, "ly:grob-system", - 1, 0, 0, (SCM grob), - "Return the system grob of @var{grob}.") + 1, 0, 0, (SCM grob), + "Return the system grob of @var{grob}.") { Grob *me = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); if (System *g = me->get_system ()) @@ -313,22 +349,21 @@ LY_DEFINE (ly_grob_system, "ly:grob-system", } LY_DEFINE (ly_grob_original, "ly:grob-original", - 1, 0, 0, (SCM grob), - "Return the unbroken original grob of @var{grob}.") + 1, 0, 0, (SCM grob), + "Return the unbroken original grob of @var{grob}.") { Grob *me = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); return me->original () ? me->original ()->self_scm () : me->self_scm (); } - LY_DEFINE (ly_grob_suicide_x, "ly:grob-suicide!", - 1, 0, 0, (SCM grob), - "Kill @var{grob}.") + 1, 0, 0, (SCM grob), + "Kill @var{grob}.") { Grob *me = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); me->suicide (); @@ -336,12 +371,12 @@ LY_DEFINE (ly_grob_suicide_x, "ly:grob-suicide!", } LY_DEFINE (ly_grob_translate_axis_x, "ly:grob-translate-axis!", - 3, 0, 0, (SCM grob, SCM d, SCM a), - "Translate @var{grob} on axis@tie{}@var{a} over" - " distance@tie{}@var{d}.") + 3, 0, 0, (SCM grob, SCM d, SCM a), + "Translate @var{grob} on axis@tie{}@var{a} over" + " distance@tie{}@var{d}.") { Grob *me = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_TYPE (scm_is_number, d, 2); LY_ASSERT_TYPE (is_axis, a, 3); @@ -351,30 +386,29 @@ LY_DEFINE (ly_grob_translate_axis_x, "ly:grob-translate-axis!", } LY_DEFINE (ly_grob_default_font, "ly:grob-default-font", - 1, 0, 0, (SCM grob), - "Return the default font for grob @var{grob}.") + 1, 0, 0, (SCM grob), + "Return the default font for grob @var{grob}.") { Grob *gr = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); return Font_interface::get_default_font (gr)->self_scm (); } - /* TODO: consider swapping order, so we can do (grob-common-refpoint a b c d e) */ LY_DEFINE (ly_grob_common_refpoint, "ly:grob-common-refpoint", - 3, 0, 0, (SCM grob, SCM other, SCM axis), - "Find the common refpoint of @var{grob} and @var{other}" - " for @var{axis}.") + 3, 0, 0, (SCM grob, SCM other, SCM axis), + "Find the common refpoint of @var{grob} and @var{other}" + " for @var{axis}.") { - + Grob *gr = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_SMOB (Grob, other, 2); @@ -382,17 +416,17 @@ LY_DEFINE (ly_grob_common_refpoint, "ly:grob-common-refpoint", LY_ASSERT_TYPE (is_axis, axis, 3); - Grob *refp = gr->common_refpoint (o, Axis (scm_to_int (axis))); + Grob *refp = gr->common_refpoint (o, Axis (scm_to_int (axis))); return refp ? refp->self_scm () : SCM_BOOL_F; } LY_DEFINE (ly_grob_common_refpoint_of_array, "ly:grob-common-refpoint-of-array", - 3, 0, 0, (SCM grob, SCM others, SCM axis), - "Find the common refpoint of @var{grob} and @var{others}" - " (a grob-array) for @var{axis}.") + 3, 0, 0, (SCM grob, SCM others, SCM axis), + "Find the common refpoint of @var{grob} and @var{others}" + " (a grob-array) for @var{axis}.") { Grob *gr = unsmob_grob (grob); - + LY_ASSERT_SMOB (Grob, grob, 1); LY_ASSERT_SMOB (Grob_array, others, 2); @@ -404,11 +438,11 @@ LY_DEFINE (ly_grob_common_refpoint_of_array, "ly:grob-common-refpoint-of-array", } LY_DEFINE (ly_grob_chain_callback, "ly:grob-chain-callback", - 3, 0, 0, (SCM grob, SCM proc, SCM sym), - "Find the callback that is stored as property" - " @var{sym} of grob @var{grob} and chain @var{proc}" - " to the head of this, meaning that it is called" - " using @var{grob} and the previous callback's result.") + 3, 0, 0, (SCM grob, SCM proc, SCM sym), + "Find the callback that is stored as property" + " @var{sym} of grob @var{grob} and chain @var{proc}" + " to the head of this, meaning that it is called" + " using @var{grob} and the previous callback's result.") { Grob *gr = unsmob_grob (grob); @@ -419,3 +453,16 @@ LY_DEFINE (ly_grob_chain_callback, "ly:grob-chain-callback", chain_callback (gr, proc, sym); return SCM_UNSPECIFIED; } + +LY_DEFINE (ly_grob_vertical_less_p, "ly:grob-vertical + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,8 +31,8 @@ IMPLEMENT_TYPE_P (Grob, "ly:grob?"); SCM Grob::mark_smob (SCM ses) { - ASSERT_LIVE_IS_ALLOWED (); - + ASSERT_LIVE_IS_ALLOWED (ses); + Grob *s = (Grob *) SCM_CELL_WORD_1 (ses); scm_gc_mark (s->immutable_property_alist_); diff --git a/lily/grob.cc b/lily/grob.cc index c613effccc..828ae7f07b 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,9 +45,9 @@ Grob::clone () const return new Grob (*this); } -Grob::Grob (SCM basicprops) +Grob::Grob (SCM basicprops) { - + /* FIXME: default should be no callback. */ self_scm_ = SCM_EOL; layout_ = 0; @@ -56,7 +56,7 @@ Grob::Grob (SCM basicprops) immutable_property_alist_ = basicprops; mutable_property_alist_ = SCM_EOL; object_alist_ = SCM_EOL; - + /* We do smobify_self () as the first step. Since the object lives on the heap, none of its SCM variables are protected from GC. After smobify_self (), they are. */ @@ -69,12 +69,12 @@ Grob::Grob (SCM basicprops) SCM object_cbs = scm_assq (ly_symbol2scm ("object-callbacks"), meta); if (scm_is_pair (object_cbs)) - { - for (SCM s = scm_cdr (object_cbs); scm_is_pair (s); s = scm_cdr (s)) - set_object (scm_caar (s), scm_cdar (s)); - } + { + for (SCM s = scm_cdr (object_cbs); scm_is_pair (s); s = scm_cdr (s)) + set_object (scm_caar (s), scm_cdar (s)); + } } - + if (get_property_data ("X-extent") == SCM_EOL) set_property ("X-extent", Grob::stencil_width_proc); if (get_property_data ("Y-extent") == SCM_EOL) @@ -88,13 +88,16 @@ Grob::Grob (Grob const &s) self_scm_ = SCM_EOL; immutable_property_alist_ = s.immutable_property_alist_; - mutable_property_alist_ = ly_deep_copy (s.mutable_property_alist_); + mutable_property_alist_ = SCM_EOL; interfaces_ = s.interfaces_; object_alist_ = SCM_EOL; layout_ = 0; smobify_self (); + + mutable_property_alist_ = ly_deep_copy (s.mutable_property_alist_); + } Grob::~Grob () @@ -126,36 +129,36 @@ Grob::get_print_stencil () const bool transparent = to_boolean (get_property ("transparent")); if (transparent) - retval = Stencil (m->extent_box (), SCM_EOL); + retval = Stencil (m->extent_box (), SCM_EOL); else - { - SCM expr = m->expr (); - expr = scm_list_3 (ly_symbol2scm ("grob-cause"), - self_scm (), expr); + { + SCM expr = m->expr (); + expr = scm_list_3 (ly_symbol2scm ("grob-cause"), + self_scm (), expr); - retval = Stencil (m->extent_box (), expr); - } + retval = Stencil (m->extent_box (), expr); + } SCM rot = get_property ("rotation"); if (scm_is_pair (rot)) - { - Real angle = scm_to_double (scm_car (rot)); - Real x = scm_to_double (scm_cadr (rot)); - Real y = scm_to_double (scm_caddr (rot)); + { + Real angle = scm_to_double (scm_car (rot)); + Real x = scm_to_double (scm_cadr (rot)); + Real y = scm_to_double (scm_caddr (rot)); - retval.rotate_degrees (angle, Offset (x, y)); - } + retval.rotate_degrees (angle, Offset (x, y)); + } /* color support... see interpret_stencil_expression () for more... */ SCM color = get_property ("color"); if (scm_is_pair (color)) - { - SCM expr = scm_list_3 (ly_symbol2scm ("color"), - color, - retval.expr ()); + { + SCM expr = scm_list_3 (ly_symbol2scm ("color"), + color, + retval.expr ()); - retval = Stencil (retval.extent_box (), expr); - } + retval = Stencil (retval.extent_box (), expr); + } /* process whiteout */ /* a grob has to be visible, otherwise the whiteout property has no effect */ @@ -165,8 +168,19 @@ Grob::get_print_stencil () const /* to add a round-filled-box stencil to the stencil list */ retval = *unsmob_stencil (scm_call_1 (ly_lily_module_constant ("stencil-whiteout"), - retval.smobbed_copy())); + retval.smobbed_copy ())); } + + SCM id = get_property ("id"); + if (scm_is_string (id)) + { + SCM expr = scm_list_3 (ly_symbol2scm ("id"), + id, + retval.expr ()); + + retval = Stencil (retval.extent_box (), expr); + } + } return retval; @@ -196,7 +210,7 @@ Grob::get_system () const one system in the whole score and we can find it just by following parent pointers. */ System * -Grob::get_system(Grob *me) +Grob::get_system (Grob *me) { Grob *p = me->get_parent (X_AXIS); return p ? get_system (p) : dynamic_cast(me); @@ -215,7 +229,7 @@ Grob::handle_broken_dependencies () properties, and a special function fixes FOO */ { for (SCM s = object_alist_; scm_is_pair (s); s = scm_cdr (s)) - sp->substitute_one_mutable_property (scm_caar (s), scm_cdar (s)); + sp->substitute_one_mutable_property (scm_caar (s), scm_cdar (s)); } System *system = get_system (); @@ -264,7 +278,7 @@ Grob::handle_prebroken_dependencies () { Item *it = dynamic_cast (this); substitute_object_links (scm_from_int (it->break_status_dir ()), - original ()->object_alist_); + original ()->object_alist_); } } @@ -283,14 +297,14 @@ Grob::translate_axis (Real y, Axis a) { if (isinf (y) || isnan (y)) { - programming_error (_ ("Infinity or NaN encountered")); - return ; + programming_error ("Infinity or NaN encountered"); + return; } - + if (!dim_cache_[a].offset_) dim_cache_[a].offset_ = new Real (y); else - *dim_cache_[a].offset_ += y; + *dim_cache_[a].offset_ += y; } /* Find the offset relative to D. If D equals THIS, then it is 0. @@ -309,7 +323,7 @@ Grob::relative_coordinate (Grob const *refp, Axis a) const Real off = get_offset (a); if (refp == dim_cache_[a].parent_) return off; - + off += dim_cache_[a].parent_->relative_coordinate (refp, a); return off; @@ -326,7 +340,7 @@ Grob::pure_relative_y_coordinate (Grob const *refp, int start, int end) if (dim_cache_[Y_AXIS].offset_) { if (to_boolean (get_property ("pure-Y-offset-in-progress"))) - programming_error ("cyclic chain in pure-Y-offset callbacks"); + programming_error ("cyclic chain in pure-Y-offset callbacks"); off = *dim_cache_[Y_AXIS].offset_; } @@ -337,9 +351,9 @@ Grob::pure_relative_y_coordinate (Grob const *refp, int start, int end) dim_cache_[Y_AXIS].offset_ = new Real (0.0); set_property ("pure-Y-offset-in-progress", SCM_BOOL_T); off = robust_scm2double (call_pure_function (proc, - scm_list_1 (self_scm ()), - start, end), - 0.0); + scm_list_1 (self_scm ()), + start, end), + 0.0); del_property ("pure-Y-offset-in-progress"); delete dim_cache_[Y_AXIS].offset_; dim_cache_[Y_AXIS].offset_ = 0; @@ -354,7 +368,7 @@ Grob::pure_relative_y_coordinate (Grob const *refp, int start, int end) { Real trans = 0; if (Align_interface::has_interface (p) && !dim_cache_[Y_AXIS].offset_) - trans = Align_interface::get_pure_child_y_translation (p, this, start, end); + trans = Align_interface::get_pure_child_y_translation (p, this, start, end); return off + trans + p->pure_relative_y_coordinate (refp, start, end); } @@ -394,7 +408,7 @@ Grob::maybe_pure_coordinate (Grob const *refp, Axis a, bool pure, int start, int if (pure && a != Y_AXIS) programming_error ("tried to get pure X-offset"); return (pure && a == Y_AXIS) ? pure_relative_y_coordinate (refp, start, end) - : relative_coordinate (refp, a); + : relative_coordinate (refp, a); } /**************************************************************** @@ -407,18 +421,17 @@ Grob::flush_extent_cache (Axis axis) if (dim_cache_[axis].extent_) { /* - Ugh, this is not accurate; will flush property, causing - callback to be called if. + Ugh, this is not accurate; will flush property, causing + callback to be called if. */ del_property ((axis == X_AXIS) ? ly_symbol2scm ("X-extent") : ly_symbol2scm ("Y-extent")); delete dim_cache_[axis].extent_; dim_cache_[axis].extent_ = 0; if (get_parent (axis)) - get_parent (axis)->flush_extent_cache (axis); + get_parent (axis)->flush_extent_cache (axis); } } - Interval Grob::extent (Grob *refp, Axis a) const { @@ -431,30 +444,33 @@ Grob::extent (Grob *refp, Axis a) const else { /* - Order is significant: ?-extent may trigger suicide. + Order is significant: ?-extent may trigger suicide. */ - SCM ext_sym = - (a == X_AXIS) - ? ly_symbol2scm ("X-extent") - : ly_symbol2scm ("Y-extent"); - + SCM ext_sym + = (a == X_AXIS) + ? ly_symbol2scm ("X-extent") + : ly_symbol2scm ("Y-extent"); + SCM ext = internal_get_property (ext_sym); if (is_number_pair (ext)) - real_ext.unite (ly_scm2interval (ext)); + real_ext.unite (ly_scm2interval (ext)); - SCM min_ext_sym = - (a == X_AXIS) - ? ly_symbol2scm ("minimum-X-extent") - : ly_symbol2scm ("minimum-Y-extent"); + SCM min_ext_sym + = (a == X_AXIS) + ? ly_symbol2scm ("minimum-X-extent") + : ly_symbol2scm ("minimum-Y-extent"); SCM min_ext = internal_get_property (min_ext_sym); if (is_number_pair (min_ext)) - real_ext.unite (ly_scm2interval (min_ext)); + real_ext.unite (ly_scm2interval (min_ext)); - ((Grob*)this)->dim_cache_[a].extent_ = new Interval (real_ext); + ((Grob *)this)->dim_cache_[a].extent_ = new Interval (real_ext); } - - real_ext.translate (offset); - + + // We never want nan, so we avoid shifting infinite values. + for (LEFT_and_RIGHT (d)) + if (!isinf (real_ext[d])) + real_ext[d] += offset; + return real_ext; } @@ -481,8 +497,6 @@ Grob::pure_height (Grob *refp, int start, int end) Interval Grob::maybe_pure_extent (Grob *refp, Axis a, bool pure, int start, int end) { - if (pure && a != Y_AXIS) - programming_error ("tried to get pure width"); return (pure && a == Y_AXIS) ? pure_height (refp, start, end) : extent (refp, a); } @@ -513,15 +527,39 @@ Grob::less (Grob *g1, Grob *g2) Grob * Grob::common_refpoint (Grob const *s, Axis a) const { - /* I don't like the quadratic aspect of this code, but I see no - other way. The largest chain of parents might be 10 high or so, - so it shouldn't be a real issue. */ - for (Grob const *c = this; c; c = c->dim_cache_[a].parent_) - for (Grob const *d = s; d; d = d->dim_cache_[a].parent_) - if (d == c) - return (Grob *) d; - return 0; + /* Catching the trivial cases is likely costlier than just running + through: one can't avoid going to the respective chain ends + anyway. We might save the second run through when the chain ends + differ, but keeping track of the ends makes the loop more costly. + */ + + int balance = 0; + Grob const *c; + Grob const *d; + + for (c = this; c; ++balance) + c = c->dim_cache_[a].parent_; + + for (d = s; d; --balance) + d = d->dim_cache_[a].parent_; + + /* Cut down ancestry to same size */ + + for (c = this; balance > 0; --balance) + c = c->dim_cache_[a].parent_; + + for (d = s; balance < 0; ++balance) + d = d->dim_cache_[a].parent_; + + /* Now find point where our lineages converge */ + while (c != d) + { + c = c->dim_cache_[a].parent_; + d = d->dim_cache_[a].parent_; + } + + return (Grob *) c; } void @@ -536,7 +574,6 @@ Grob::get_parent (Axis a) const return dim_cache_[a].parent_; } - void Grob::fixup_refpoint () { @@ -546,156 +583,243 @@ Grob::fixup_refpoint () Grob *parent = get_parent (ax); if (!parent) - continue; + continue; if (parent->get_system () != get_system () && get_system ()) - { - Grob *newparent = parent->find_broken_piece (get_system ()); - set_parent (newparent, ax); - } + { + Grob *newparent = parent->find_broken_piece (get_system ()); + set_parent (newparent, ax); + } if (Item *i = dynamic_cast (this)) - { - Item *parenti = dynamic_cast (parent); - - if (parenti && i) - { - Direction my_dir = i->break_status_dir (); - if (my_dir != parenti->break_status_dir ()) - { - Item *newparent = parenti->find_prebroken_piece (my_dir); - set_parent (newparent, ax); - } - } - } + { + Item *parenti = dynamic_cast (parent); + + if (parenti && i) + { + Direction my_dir = i->break_status_dir (); + if (my_dir != parenti->break_status_dir ()) + { + Item *newparent = parenti->find_prebroken_piece (my_dir); + set_parent (newparent, ax); + } + } + } } } +/**************************************************************** + VERTICAL ORDERING +****************************************************************/ + +Grob * +get_maybe_root_vertical_alignment (Grob *g, Grob *maybe) +{ + if (!g) + return maybe; + if (Align_interface::has_interface (g)) + return get_maybe_root_vertical_alignment (g->get_parent (Y_AXIS), g); + return get_maybe_root_vertical_alignment (g->get_parent (Y_AXIS), maybe); + +} + +Grob * +Grob::get_root_vertical_alignment (Grob *g) +{ + return get_maybe_root_vertical_alignment (g, 0); +} + +Grob * +Grob::get_vertical_axis_group (Grob *g) +{ + if (!g) + return 0; + if (!g->get_parent (Y_AXIS)) + return 0; + if (Axis_group_interface::has_interface (g) + && Align_interface::has_interface (g->get_parent (Y_AXIS))) + return g; + return get_vertical_axis_group (g->get_parent (Y_AXIS)); + +} + +int +Grob::get_vertical_axis_group_index (Grob *g) +{ + Grob *val = get_root_vertical_alignment (g); + if (!val) + return -1; + Grob *vax = get_vertical_axis_group (g); + extract_grob_set (val, "elements", elts); + for (vsize i = 0; i < elts.size (); i++) + if (elts[i] == vax) + return (int) i; + g->programming_error ("could not find this grob's vertical axis group in the vertical alignment"); + return -1; +} + +bool +Grob::vertical_less (Grob *g1, Grob *g2) +{ + return internal_vertical_less (g1, g2, false); +} + +bool +Grob::pure_vertical_less (Grob *g1, Grob *g2) +{ + return internal_vertical_less (g1, g2, true); +} + +bool +Grob::internal_vertical_less (Grob *g1, Grob *g2, bool pure) +{ + Grob *vag = get_root_vertical_alignment (g1); + if (!vag) + { + g1->programming_error ("grob does not belong to a VerticalAlignment?"); + return false; + } + + Grob *ag1 = get_vertical_axis_group (g1); + Grob *ag2 = get_vertical_axis_group (g2); + + extract_grob_set (vag, "elements", elts); + + if (ag1 == ag2 && !pure) + { + Grob *common = g1->common_refpoint (g2, Y_AXIS); + return g1->relative_coordinate (common, Y_AXIS) > g2->relative_coordinate (common, Y_AXIS); + } + + for (vsize i = 0; i < elts.size (); i++) + { + if (elts[i] == ag1) + return true; + if (elts[i] == ag2) + return false; + } + + g1->programming_error ("could not place this grob in its axis group"); + return false; +} /**************************************************************** MESSAGES ****************************************************************/ void -Grob::warning (string s) const +Grob::programming_error (string s) const { - if (get_program_option ("warning-as-error")) - error (s); - SCM cause = self_scm (); while (Grob *g = unsmob_grob (cause)) cause = g->get_property ("cause"); /* ES TODO: cause can't be Music*/ if (Music *m = unsmob_music (cause)) - m->origin ()->warning (s); + m->origin ()->programming_error (s); else if (Stream_event *ev = unsmob_stream_event (cause)) - ev->origin ()->warning (s); + ev->origin ()->programming_error (s); else - ::warning (s); -} - - -string -Grob::name () const -{ - SCM meta = get_property ("meta"); - SCM nm = scm_assq (ly_symbol2scm ("name"), meta); - nm = (scm_is_pair (nm)) ? scm_cdr (nm) : SCM_EOL; - return scm_is_symbol (nm) ? ly_symbol2string (nm) : this->class_name (); + ::programming_error (s); } void -Grob::programming_error (string s) const +Grob::warning (string s) const { - if (get_program_option ("warning-as-error")) - error (s); - SCM cause = self_scm (); while (Grob *g = unsmob_grob (cause)) cause = g->get_property ("cause"); - s = _f ("programming error: %s", s); - /* ES TODO: cause can't be Music*/ if (Music *m = unsmob_music (cause)) - m->origin ()->message (s); + m->origin ()->warning (s); else if (Stream_event *ev = unsmob_stream_event (cause)) - ev->origin ()->message (s); + ev->origin ()->warning (s); else - ::message (s); + ::warning (s); } +string +Grob::name () const +{ + SCM meta = get_property ("meta"); + SCM nm = scm_assq (ly_symbol2scm ("name"), meta); + nm = (scm_is_pair (nm)) ? scm_cdr (nm) : SCM_EOL; + return scm_is_symbol (nm) ? ly_symbol2string (nm) : this->class_name (); +} ADD_INTERFACE (Grob, - "A grob represents a piece of music notation.\n" - "\n" - "All grobs have an X and Y@tie{}position on the page. These" - " X and Y@tie{}positions are stored in a relative format, thus" - " they can easily be combined by stacking them, hanging one" - " grob to the side of another, or coupling them into grouping" - " objects.\n" - "\n" - "Each grob has a reference point (a.k.a.@: parent): The" - " position of a grob is stored relative to that reference" - " point. For example, the X@tie{}reference point of a staccato" - " dot usually is the note head that it applies to. When the" - " note head is moved, the staccato dot moves along" - " automatically.\n" - "\n" - "A grob is often associated with a symbol, but some grobs do" - " not print any symbols. They take care of grouping objects." - " For example, there is a separate grob that stacks staves" - " vertically. The @ref{NoteCollision} object is also an" - " abstract grob: It only moves around chords, but doesn't print" - " anything.\n" - "\n" - "Grobs have properties (Scheme variables) that can be read and" - " set. Two types of them exist: immutable and mutable." - " Immutable variables define the default style and behavior." - " They are shared between many objects. They can be changed" - " using @code{\\override} and @code{\\revert}. Mutable" - " properties are variables that are specific to one grob." - " Typically, lists of other objects, or results from" - " computations are stored in mutable properties. In" - " particular, every call to @code{ly:grob-set-property!}" - " (or its C++ equivalent) sets a mutable property.\n" - "\n" - "The properties @code{after-line-breaking} and" - " @code{before-line-breaking} are dummies that are not" - " user-serviceable.", - - /* properties */ - "X-extent " - "X-offset " - "Y-extent " - "Y-offset " - "after-line-breaking " - "avoid-slur " - "axis-group-parent-X " - "axis-group-parent-Y " - "before-line-breaking " - "cause " - "color " - "cross-staff " - "extra-X-extent " - "extra-Y-extent " - "extra-offset " - "interfaces " - "layer " - "meta " - "minimum-X-extent " - "minimum-Y-extent " - "outside-staff-horizontal-padding " - "outside-staff-padding " - "outside-staff-priority " - "pure-Y-offset-in-progress " - "rotation " - "springs-and-rods " - "staff-symbol " - "stencil " - "transparent " - "whiteout " - ); + "A grob represents a piece of music notation.\n" + "\n" + "All grobs have an X and Y@tie{}position on the page. These" + " X and Y@tie{}positions are stored in a relative format, thus" + " they can easily be combined by stacking them, hanging one" + " grob to the side of another, or coupling them into grouping" + " objects.\n" + "\n" + "Each grob has a reference point (a.k.a.@: parent): The" + " position of a grob is stored relative to that reference" + " point. For example, the X@tie{}reference point of a staccato" + " dot usually is the note head that it applies to. When the" + " note head is moved, the staccato dot moves along" + " automatically.\n" + "\n" + "A grob is often associated with a symbol, but some grobs do" + " not print any symbols. They take care of grouping objects." + " For example, there is a separate grob that stacks staves" + " vertically. The @ref{NoteCollision} object is also an" + " abstract grob: It only moves around chords, but doesn't print" + " anything.\n" + "\n" + "Grobs have properties (Scheme variables) that can be read and" + " set. Two types of them exist: immutable and mutable." + " Immutable variables define the default style and behavior." + " They are shared between many objects. They can be changed" + " using @code{\\override} and @code{\\revert}. Mutable" + " properties are variables that are specific to one grob." + " Typically, lists of other objects, or results from" + " computations are stored in mutable properties. In" + " particular, every call to @code{ly:grob-set-property!}" + " (or its C++ equivalent) sets a mutable property.\n" + "\n" + "The properties @code{after-line-breaking} and" + " @code{before-line-breaking} are dummies that are not" + " user-serviceable.", + + /* properties */ + "X-extent " + "X-offset " + "Y-extent " + "Y-offset " + "after-line-breaking " + "avoid-slur " + "axis-group-parent-X " + "axis-group-parent-Y " + "before-line-breaking " + "cause " + "color " + "cross-staff " + "id " + "extra-X-extent " + "extra-Y-extent " + "extra-offset " + "footnote-music " + "forced-spacing " + "interfaces " + "layer " + "meta " + "minimum-X-extent " + "minimum-Y-extent " + "outside-staff-horizontal-padding " + "outside-staff-padding " + "outside-staff-priority " + "pure-Y-offset-in-progress " + "rotation " + "springs-and-rods " + "staff-symbol " + "stencil " + "transparent " + "whiteout " + ); /**************************************************************** CALLBACKS @@ -711,7 +835,6 @@ grob_stencil_extent (Grob *me, Axis a) return ly_interval2scm (e); } - MAKE_SCHEME_CALLBACK (Grob, stencil_height, 1); SCM Grob::stencil_height (SCM smob) @@ -732,13 +855,12 @@ Grob::y_parent_positioning (SCM smob) return scm_from_double (0.0); } - MAKE_SCHEME_CALLBACK (Grob, x_parent_positioning, 1); SCM Grob::x_parent_positioning (SCM smob) { Grob *me = unsmob_grob (smob); - + Grob *par = me->get_parent (X_AXIS); if (par) (void) par->get_property ("positioning-done"); @@ -754,24 +876,23 @@ Grob::stencil_width (SCM smob) return grob_stencil_extent (me, X_AXIS); } - Grob * common_refpoint_of_list (SCM elist, Grob *common, Axis a) { for (; scm_is_pair (elist); elist = scm_cdr (elist)) if (Grob *s = unsmob_grob (scm_car (elist))) { - if (common) - common = common->common_refpoint (s, a); - else - common = s; + if (common) + common = common->common_refpoint (s, a); + else + common = s; } return common; } Grob * -common_refpoint_of_array (vector const &arr, Grob *common, Axis a) +common_refpoint_of_array (vector const &arr, Grob *common, Axis a) { for (vsize i = 0; i < arr.size (); i++) if (common) diff --git a/lily/guile-init.cc b/lily/guile-init.cc index 5f1bb6e27f..6b27711b9f 100644 --- a/lily/guile-init.cc +++ b/lily/guile-init.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys - + Copyright (C) 2006--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,15 +18,14 @@ along with LilyPond. If not, see . */ -#include "lily-guile.hh" -#include "main.hh" -#include "warn.hh" +#include "lily-guile.hh" +#include "main.hh" +#include "warn.hh" /* INIT */ - typedef void (*Void_fptr) (); vector *scm_init_funcs_; @@ -44,12 +43,12 @@ ly_init_ly_module (void *) for (vsize i = scm_init_funcs_->size (); i--;) (scm_init_funcs_->at (i)) (); - if (be_verbose_global) + if (is_loglevel (LOG_DEBUG)) { - progress_indication ("["); + debug_output ("[", true); scm_display (scm_c_eval_string ("(%search-load-path \"lily.scm\")"), - scm_current_error_port ()); - progress_indication ("]\n"); + scm_current_error_port ()); + debug_output ("]\n", false); } scm_primitive_load_path (scm_from_locale_string ("lily.scm")); diff --git a/lily/hairpin.cc b/lily/hairpin.cc index 399b5d995e..cacfb0f51c 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,9 @@ #include "hairpin.hh" +#include "axis-group-interface.hh" #include "dimensions.hh" +#include "directional-element-interface.hh" #include "international.hh" #include "line-interface.hh" #include "output-def.hh" @@ -29,6 +31,7 @@ #include "staff-symbol-referencer.hh" #include "text-interface.hh" #include "note-column.hh" +#include "system.hh" #include "warn.hh" MAKE_SCHEME_CALLBACK (Hairpin, pure_height, 3); @@ -37,15 +40,69 @@ Hairpin::pure_height (SCM smob, SCM, SCM) { Grob *me = unsmob_grob (smob); Real height = robust_scm2double (me->get_property ("height"), 0.0) - * Staff_symbol_referencer::staff_space (me); + * Staff_symbol_referencer::staff_space (me); Real thickness = robust_scm2double (me->get_property ("thickness"), 1) - * Staff_symbol_referencer::line_thickness (me); + * Staff_symbol_referencer::line_thickness (me); height += thickness / 2; return ly_interval2scm (Interval (-height, height)); } +MAKE_SCHEME_CALLBACK (Hairpin, broken_bound_padding, 1); +SCM +Hairpin::broken_bound_padding (SCM smob) +{ + Spanner *me = unsmob_spanner (smob); + Item *r_bound = me->get_bound (RIGHT); + if (r_bound->break_status_dir () != -1) + { + me->warning (_ ("Asking for broken bound padding at a non-broken bound.")); + return scm_from_double (0.0); + } + + System *sys = dynamic_cast (me->get_system ()); + Direction dir = get_grob_direction (me->get_parent (Y_AXIS)); + if (!dir) + return scm_from_double (0.0); + + Grob *my_vertical_axis_group = Grob::get_vertical_axis_group (me); + Drul_array vertical_axis_groups; + for (DOWN_and_UP (d)) + vertical_axis_groups[d] = d == dir + ? sys->get_neighboring_staff (d, my_vertical_axis_group, Interval_t (me->spanned_rank_interval ())) + : my_vertical_axis_group; + + if (!vertical_axis_groups[dir]) + return scm_from_double (0.0); + + Drul_array span_bars (0, 0); + for (DOWN_and_UP (d)) + { + extract_grob_set (vertical_axis_groups[d], "elements", elts); + for (vsize i = elts.size (); i--;) + if (elts[i]->internal_has_interface (ly_symbol2scm ("bar-line-interface")) + && dynamic_cast (elts[i])->break_status_dir () == -1) + { + SCM hsb = elts[i]->get_property ("has-span-bar"); + if (!scm_is_pair (hsb)) + break; + + span_bars[d] = unsmob_grob ((d == UP ? scm_car : scm_cdr) (hsb)); + break; + } + + if (!span_bars[d]) + return scm_from_double (0.0); + } + + if (span_bars[DOWN] != span_bars[UP]) + return scm_from_double (0.0); + + return scm_from_double (robust_scm2double (me->get_property ("bound-padding"), 0.5) + / 2.0); +} + MAKE_SCHEME_CALLBACK (Hairpin, print, 1); SCM Hairpin::print (SCM smob) @@ -64,13 +121,11 @@ Hairpin::print (SCM smob) Drul_array broken; Drul_array bounds; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { bounds[d] = me->get_bound (d); broken[d] = bounds[d]->break_status_dir () != CENTER; } - while (flip (&d) != LEFT); broken[RIGHT] = broken[RIGHT] && me->broken_neighbor (RIGHT); broken[RIGHT] = broken[RIGHT] && me->broken_neighbor (RIGHT)->is_live (); @@ -80,7 +135,7 @@ Hairpin::print (SCM smob) Spanner *next = me->broken_neighbor (RIGHT); Stencil *s = next->get_stencil (); if (!s || s->is_empty ()) - broken[RIGHT] = false; + broken[RIGHT] = false; } Grob *common = bounds[LEFT]->common_refpoint (bounds[RIGHT], X_AXIS); @@ -91,7 +146,7 @@ Hairpin::print (SCM smob) */ bool circled_tip = ly_scm2bool (me->get_property ("circled-tip")); Real height = robust_scm2double (me->get_property ("height"), 0.2) - * Staff_symbol_referencer::staff_space (me); + * Staff_symbol_referencer::staff_space (me); /* FIXME: 0.525 is still just a guess... */ @@ -99,108 +154,122 @@ Hairpin::print (SCM smob) Real thick = 1.0; if (circled_tip) thick = robust_scm2double (me->get_property ("thickness"), 1.0) - * Staff_symbol_referencer::line_thickness (me); + * Staff_symbol_referencer::line_thickness (me); - do + for (LEFT_and_RIGHT (d)) { Item *b = bounds[d]; + Interval e = Axis_group_interface::generic_bound_extent (b, common, X_AXIS); + x_points[d] = b->relative_coordinate (common, X_AXIS); if (broken [d]) - { - if (d == LEFT) - x_points[d] = b->extent (common, X_AXIS)[RIGHT]; - } + { + if (d == LEFT) + x_points[d] = e[-d]; + else + { + Real broken_bound_padding + = robust_scm2double (me->get_property ("broken-bound-padding"), 0.0); + extract_grob_set (me, "concurrent-hairpins", chp); + for (vsize i = 0; i < chp.size (); i++) + { + Spanner *span_elt = dynamic_cast (chp[i]); + if (span_elt->get_bound (RIGHT)->break_status_dir () == LEFT) + broken_bound_padding = max (broken_bound_padding, + robust_scm2double (span_elt->get_property ("broken-bound-padding"), 0.0)); + } + x_points[d] -= d * broken_bound_padding; + } + } else - { - if (Text_interface::has_interface (b)) - { - Interval e = b->extent (common, X_AXIS); - if (!e.is_empty ()) - x_points[d] = e[-d] - d * padding; - } - else - { - bool neighbor_found = false; - Spanner *adjacent; - extract_grob_set (me, "adjacent-spanners", neighbors); - for (vsize i = 0; i < neighbors.size (); i++) - { - /* - FIXME: this will fuck up in case of polyphonic - notes in other voices. Need to look at note-columns - in the current staff/voice. - */ - adjacent = dynamic_cast (neighbors[i]); - if (adjacent - && (adjacent->get_bound (-d)->get_column () - == b->get_column ())) - { - neighbor_found = true; - break; - } - } - - Interval e = robust_relative_extent (b, common, X_AXIS); - if (neighbor_found) - { - if (Hairpin::has_interface (adjacent)) - { - /* - Handle back-to-back hairpins with a circle in the middle - */ - if (circled_tip && (grow_dir != d)) - x_points[d] = e.center () + d * (rad - thick / 2.0); - /* - If we're hung on a paper column, that means we're not - adjacent to a text-dynamic, and we may move closer. We - make the padding a little smaller, here. - */ - else - x_points[d] = e.center () - d * padding / 3; - } - // Our neighbor is a dynamic text spanner, so add the - // same amount of padding as for text dynamics - else - x_points[d] = e[-d] - d * padding; - } - else - { - if (Note_column::has_interface (b) - && Note_column::has_rests (b)) - x_points[d] = e[-d]; - else - x_points[d] = e[d]; - - Item *bound = me->get_bound (d); - if (bound->is_non_musical (bound)) - x_points[d] -= d * padding; - } - } - } + { + if (Text_interface::has_interface (b)) + { + if (!e.is_empty ()) + x_points[d] = e[-d] - d * padding; + } + else + { + bool neighbor_found = false; + Spanner *adjacent = NULL; + extract_grob_set (me, "adjacent-spanners", neighbors); + for (vsize i = 0; i < neighbors.size (); i++) + { + /* + FIXME: this will fuck up in case of polyphonic + notes in other voices. Need to look at note-columns + in the current staff/voice. + */ + adjacent = dynamic_cast (neighbors[i]); + if (adjacent + && (adjacent->get_bound (-d)->get_column () + == b->get_column ())) + { + neighbor_found = true; + break; + } + } + + if (neighbor_found) + { + if (Hairpin::has_interface (adjacent)) + { + /* + Handle back-to-back hairpins with a circle in the middle + */ + if (circled_tip && (grow_dir != d)) + x_points[d] = e.center () + d * (rad - thick / 2.0); + /* + If we're hung on a paper column, that means we're not + adjacent to a text-dynamic, and we may move closer. We + make the padding a little smaller, here. + */ + else + x_points[d] = e.center () - d * padding / 3; + } + // Our neighbor is a dynamic text spanner. + // If we end on the text, pad as for text dynamics + else if (d == RIGHT) + x_points[d] = e[-d] - d * padding; + } + else + { + if (Note_column::has_interface (b) + && Note_column::has_rests (b)) + x_points[d] = e[-d]; + else + x_points[d] = e[d]; + + if (Item::is_non_musical (b)) + x_points[d] -= d * padding; + } + } + } } - while (flip (&d) != LEFT); Real width = x_points[RIGHT] - x_points[LEFT]; + if (width < 0) { me->warning (_ ((grow_dir < 0) ? "decrescendo too small" - : "crescendo too small")); + : "crescendo too small")); width = 0; } bool continued = broken[Direction (-grow_dir)]; + bool continuing = broken[Direction (grow_dir)]; Real starth = 0; Real endh = 0; if (grow_dir < 0) { - starth = height; - endh = continued ? height / 2 : 0.0; + starth = continuing ? 2 * height / 3 : height; + endh = continued ? height / 3 : 0.0; } else { - starth = continued ? height / 2 : 0.0; - endh = height; + starth = continued ? height / 3 : 0.0; + endh = continuing ? 2 * height / 3 : height; } /* @@ -216,14 +285,14 @@ Hairpin::print (SCM smob) if (circled_tip && !broken[tip_dir]) { if (grow_dir > 0) - x = rad * 2.0; + x = rad * 2.0; else if (grow_dir < 0) - width -= rad *2.0; + width -= rad * 2.0; } mol = Line_interface::line (me, Offset (x, starth), Offset (width, endh)); mol.add_stencil (Line_interface::line (me, - Offset (x, -starth), - Offset (width, -endh))); + Offset (x, -starth), + Offset (width, -endh))); /* Support al/del niente notation by putting a circle at the @@ -235,31 +304,33 @@ Hairpin::print (SCM smob) /* Hmmm, perhaps we should have a Lookup::circle () method? */ Stencil circle (extent, - scm_list_4 (ly_symbol2scm ("circle"), - scm_from_double (rad), - scm_from_double (thick), - SCM_BOOL_F)); + scm_list_4 (ly_symbol2scm ("circle"), + scm_from_double (rad), + scm_from_double (thick), + SCM_BOOL_F)); /* - don't add another circle if the hairpin is broken + don't add another circle if the hairpin is broken */ if (!broken[tip_dir]) - mol.add_at_edge (X_AXIS, tip_dir, Stencil (circle), 0); + mol.add_at_edge (X_AXIS, tip_dir, Stencil (circle), 0); } mol.translate_axis (x_points[LEFT] - - bounds[LEFT]->relative_coordinate (common, X_AXIS), - X_AXIS); + - bounds[LEFT]->relative_coordinate (common, X_AXIS), + X_AXIS); return mol.smobbed_copy (); } ADD_INTERFACE (Hairpin, - "A hairpin crescendo or decrescendo.", - - /* properties */ - "adjacent-spanners " - "circled-tip " - "bound-padding " - "grow-direction " - "height " - ); + "A hairpin crescendo or decrescendo.", + + /* properties */ + "adjacent-spanners " + "circled-tip " + "concurrent-hairpins " + "broken-bound-padding " + "bound-padding " + "grow-direction " + "height " + ); diff --git a/lily/hara-kiri-engraver.cc b/lily/hara-kiri-engraver.cc index b8cd0cb9da..243d9cbaf5 100644 --- a/lily/hara-kiri-engraver.cc +++ b/lily/hara-kiri-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ #include "translator.icc" /* - TODO: fold together with axis_group_engraver? + TODO: fold together with axis_group_engraver? */ class Hara_kiri_engraver : public Axis_group_engraver @@ -41,7 +41,6 @@ public: TRANSLATOR_DECLARATIONS (Hara_kiri_engraver); }; - Hara_kiri_engraver::Hara_kiri_engraver () { interesting_ = SCM_EOL; @@ -80,28 +79,27 @@ Hara_kiri_engraver::acknowledge_grob (Grob_info i) if (staffline_) { for (SCM s = interesting_; scm_is_pair (s); s = scm_cdr (s)) - { - if (i.grob ()->internal_has_interface (scm_car (s))) - Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ()); - } + { + if (i.grob ()->internal_has_interface (scm_car (s))) + Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ()); + } } } - ADD_ACKNOWLEDGER (Hara_kiri_engraver, grob); ADD_TRANSLATOR (Hara_kiri_engraver, - /* doc */ - "Like @code{Axis_group_engraver}, but make a hara-kiri" - " spanner, and add interesting items (i.e., note heads, lyric" - " syllables, and normal rests).", + /* doc */ + "Like @code{Axis_group_engraver}, but make a hara-kiri" + " spanner, and add interesting items (i.e., note heads, lyric" + " syllables, and normal rests).", - /* create */ - "VerticalAxisGroup ", + /* create */ + "VerticalAxisGroup ", - /* read */ - "keepAliveInterfaces ", + /* read */ + "keepAliveInterfaces ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/hara-kiri-group-spanner.cc b/lily/hara-kiri-group-spanner.cc index c32735aa8e..cb5aacecc5 100644 --- a/lily/hara-kiri-group-spanner.cc +++ b/lily/hara-kiri-group-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -70,7 +70,7 @@ bool find_in_range (SCM vector, int low, int hi, int min, int max) if (val >= min && val <= max) return true; else if (val < min) - return find_in_range (vector, mid+1, hi, min, max); + return find_in_range (vector, mid + 1, hi, min, max); return find_in_range (vector, low, mid, min, max); } @@ -103,7 +103,7 @@ Hara_kiri_group_spanner::request_suicide_alone (Grob *me, int start, int end) { int len = scm_c_vector_length (important); if (find_in_range (important, 0, len, start, end)) - return false; + return false; } else /* build the important-columns-cache */ { @@ -111,17 +111,17 @@ Hara_kiri_group_spanner::request_suicide_alone (Grob *me, int start, int end) vector ranks; for (vsize i = 0; i < worth.size (); i++) - { - Interval_t iv = worth[i]->spanned_rank_interval (); - for (int j = iv[LEFT]; j <= iv[RIGHT]; j++) - ranks.push_back (j); - } + { + Interval_t iv = worth[i]->spanned_rank_interval (); + for (int j = iv[LEFT]; j <= iv[RIGHT]; j++) + ranks.push_back (j); + } vector_sort (ranks, less ()); uniq (ranks); SCM scm_vec = scm_c_make_vector (ranks.size (), SCM_EOL); for (vsize i = 0; i < ranks.size (); i++) - scm_vector_set_x (scm_vec, scm_from_int (i), scm_from_int (ranks[i])); + scm_vector_set_x (scm_vec, scm_from_int (i), scm_from_int (ranks[i])); me->set_property ("important-column-ranks", scm_vec); return request_suicide (me, start, end); @@ -133,13 +133,13 @@ Hara_kiri_group_spanner::request_suicide_alone (Grob *me, int start, int end) void Hara_kiri_group_spanner::consider_suicide (Grob *me) { - Spanner *sp = dynamic_cast (me); + Spanner *sp = dynamic_cast (me); int left = sp->get_bound (LEFT)->get_column ()->get_rank (); int right = sp->get_bound (RIGHT)->get_column ()->get_rank (); if (!request_suicide (me, left, right)) return; - vector childs; + vector childs; Axis_group_interface::get_children (me, &childs); for (vsize i = 0; i < childs.size (); i++) childs[i]->suicide (); @@ -179,16 +179,15 @@ Hara_kiri_group_spanner::add_interesting_item (Grob *me, Grob *n) } ADD_INTERFACE (Hara_kiri_group_spanner, - "A group spanner that keeps track of interesting items. If it" - " doesn't contain any after line breaking, it removes itself" - " and all its children.", - - /* properties */ - "items-worth-living " - "important-column-ranks " - "keep-alive-with " - "remove-empty " - "remove-first " - ); - + "A group spanner that keeps track of interesting items. If it" + " doesn't contain any after line breaking, it removes itself" + " and all its children.", + + /* properties */ + "items-worth-living " + "important-column-ranks " + "keep-alive-with " + "remove-empty " + "remove-first " + ); diff --git a/lily/horizontal-bracket-engraver.cc b/lily/horizontal-bracket-engraver.cc index 9d5c00503d..941f78a172 100644 --- a/lily/horizontal-bracket-engraver.cc +++ b/lily/horizontal-bracket-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,7 +59,7 @@ Horizontal_bracket_engraver::listen_note_grouping (Stream_event *ev) { pop_count_++; if (pop_count_ > bracket_stack_.size ()) - ev->origin ()->warning (_ ("do not have that many brackets")); + ev->origin ()->warning (_ ("do not have that many brackets")); } else { @@ -78,9 +78,9 @@ Horizontal_bracket_engraver::acknowledge_note_column (Grob_info gi) { Side_position_interface::add_support (bracket_stack_[i], gi.grob ()); Pointer_group_interface::add_grob (bracket_stack_[i], - ly_symbol2scm ("columns"), gi.grob ()); + ly_symbol2scm ("columns"), gi.grob ()); add_bound_item (bracket_stack_[i], - gi.grob ()); + gi.grob ()); } } @@ -92,8 +92,8 @@ Horizontal_bracket_engraver::process_music () Spanner *sp = make_spanner ("HorizontalBracket", events_[k]->self_scm ()); for (vsize i = 0; i < bracket_stack_.size (); i++) - /* sp is the smallest, it should be added to the bigger brackets. */ - Side_position_interface::add_support (bracket_stack_[i], sp); + /* sp is the smallest, it should be added to the bigger brackets. */ + Side_position_interface::add_support (bracket_stack_[i], sp); bracket_stack_.push_back (sp); } } @@ -111,16 +111,16 @@ Horizontal_bracket_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column); ADD_TRANSLATOR (Horizontal_bracket_engraver, - /* doc */ - "Create horizontal brackets over notes for musical analysis" - " purposes.", + /* doc */ + "Create horizontal brackets over notes for musical analysis" + " purposes.", - /* create */ - "HorizontalBracket ", + /* create */ + "HorizontalBracket ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/horizontal-bracket.cc b/lily/horizontal-bracket.cc index f7a0337a3b..279ee0baf2 100644 --- a/lily/horizontal-bracket.cc +++ b/lily/horizontal-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ along with LilyPond. If not, see . */ -#include "horizontal-bracket.hh" +#include "horizontal-bracket.hh" #include "lookup.hh" #include "side-position-interface.hh" @@ -30,55 +30,50 @@ #include "spanner.hh" #include "item.hh" - Stencil Horizontal_bracket::make_bracket (Grob *me, - Real length, - Axis a, Direction dir) + Real length, + Axis a, Direction dir) { Drul_array edge_height = robust_scm2interval (me->get_property ("edge-height"), - Interval (1.0, 1.0)); + Interval (1.0, 1.0)); Drul_array flare = robust_scm2interval (me->get_property ("bracket-flare"), - Interval (0, 0)); + Interval (0, 0)); Drul_array shorten = robust_scm2interval (me->get_property ("shorten-pair"), - Interval (0, 0)); + Interval (0, 0)); - // Make sure that it points in the correct direction: scale_drul (&edge_height, Real (-dir)); - + Interval empty; Offset start; start[a] = length; - Drul_array connect_to_other = - robust_scm2booldrul (me->get_property ("connect-to-neighbor"), - Drul_array (false, false)); + Drul_array connect_to_other + = robust_scm2booldrul (me->get_property ("connect-to-neighbor"), + Drul_array (false, false)); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { if (connect_to_other[d]) - { - edge_height[d] = 0.0; - flare[d] = 0.0; - shorten[d] = 0.0; - } + { + edge_height[d] = 0.0; + flare[d] = 0.0; + shorten[d] = 0.0; + } } - while (flip (&d) != LEFT); - + /* - ugh, Tuplet_bracket should use Horizontal_bracket, not the other way around. + ugh, Tuplet_bracket should use Horizontal_bracket, not the other way around. */ - return Tuplet_bracket::make_bracket (me, other_axis (a), start, - edge_height, empty, flare, shorten); + return Tuplet_bracket::make_bracket (me, other_axis (a), start, + edge_height, empty, flare, shorten); } - Stencil Horizontal_bracket::make_enclosing_bracket (Grob *me, Grob *refpoint, - vector grobs, - Axis a, Direction dir) + vector grobs, + Axis a, Direction dir) { Grob *common = common_refpoint_of_array (grobs, refpoint, a); Interval ext = Axis_group_interface::relative_group_extent (grobs, common, a); @@ -109,34 +104,32 @@ Horizontal_bracket::print (SCM smob) Spanner *me = unsmob_spanner (smob); extract_grob_set (me, "columns", gs); - vector enclosed = gs; + vector enclosed = gs; if (!gs.size ()) { me->suicide (); return SCM_EOL; } - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Item *b = me->get_bound (d); if (b->break_status_dir ()) - enclosed.push_back (b); + enclosed.push_back (b); } - while (flip (&d) != LEFT); - + Stencil b = make_enclosing_bracket (me, me, enclosed, X_AXIS, get_grob_direction (me)); return b.smobbed_copy (); } ADD_INTERFACE (Horizontal_bracket, - "A horizontal bracket encompassing notes.", - - /* properties */ - "bracket-flare " - "columns " - "edge-height " - "shorten-pair " - "connect-to-neighbor " - ); + "A horizontal bracket encompassing notes.", + + /* properties */ + "bracket-flare " + "columns " + "edge-height " + "shorten-pair " + "connect-to-neighbor " + ); diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc index 55696e9315..c1f2a04e37 100644 --- a/lily/hyphen-engraver.cc +++ b/lily/hyphen-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Glen Prideaux , + Copyright (C) 1999--2012 Glen Prideaux , Han-Wen Nienhuys , Jan Nieuwenhuizen @@ -88,7 +88,7 @@ completize_hyphen (Spanner *sp) { extract_item_set (sp, "heads", heads); if (heads.size ()) - sp->set_bound (RIGHT, heads.back ()); + sp->set_bound (RIGHT, heads.back ()); } } @@ -100,10 +100,10 @@ Hyphen_engraver::finalize () completize_hyphen (hyphen_); if (!hyphen_->get_bound (RIGHT)) - { - hyphen_->warning (_ ("removing unterminated hyphen")); - hyphen_->suicide (); - } + { + hyphen_->warning (_ ("removing unterminated hyphen")); + hyphen_->suicide (); + } hyphen_ = 0; } @@ -113,11 +113,11 @@ Hyphen_engraver::finalize () completize_hyphen (finished_hyphen_); if (!finished_hyphen_->get_bound (RIGHT)) - { - if (finished_ev_) - finished_hyphen_->warning (_ ("unterminated hyphen; removing")); - finished_hyphen_->suicide (); - } + { + if (finished_ev_) + finished_hyphen_->warning (_ ("unterminated hyphen; removing")); + finished_hyphen_->suicide (); + } finished_hyphen_ = 0; } } @@ -158,16 +158,16 @@ Hyphen_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Hyphen_engraver, lyric_syllable); ADD_TRANSLATOR (Hyphen_engraver, - /* doc */ - "Create lyric hyphens and distance constraints between words.", + /* doc */ + "Create lyric hyphens and distance constraints between words.", - /* create */ - "LyricHyphen " - "LyricSpace ", + /* create */ + "LyricHyphen " + "LyricSpace ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/identifier-smob.cc b/lily/identifier-smob.cc deleted file mode 100644 index d0e9f6e473..0000000000 --- a/lily/identifier-smob.cc +++ /dev/null @@ -1,64 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 2002--2011 Han-Wen Nienhuys - - LilyPond is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - 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 . -*/ - -#include "identifier-smob.hh" - -scm_t_bits package_tag; - -static int -print_box (SCM b, SCM port, scm_print_state *) -{ - SCM value = SCM_CELL_OBJECT_1 (b); - - scm_puts ("#", port); - - /* Non-zero means success. */ - return 1; -} - -/* This defines the primitve `make-box', which returns a new smob of - type `box', initialized to `#f'. */ -LY_DEFINE (ly_export, "ly:export", - 1, 0, 0, (SCM arg), - "Export a Scheme object to the parser" - " so it is treated as an identifier.") -{ - SCM_RETURN_NEWSMOB (package_tag, arg); -} - -SCM -unpack_identifier (SCM box) -{ - if (SCM_IMP (box) || SCM_CELL_TYPE (box) != package_tag) - return SCM_UNDEFINED; - - return SCM_CELL_OBJECT_1 (box); -} - -static void -init_box_type (void) -{ - package_tag = scm_make_smob_type ("box", 0); - scm_set_smob_mark (package_tag, scm_markcdr); - scm_set_smob_print (package_tag, print_box); -} - -ADD_SCM_INIT_FUNC (package, init_box_type); diff --git a/lily/includable-lexer.cc b/lily/includable-lexer.cc index 4c6766c7fd..806eb1512f 100644 --- a/lily/includable-lexer.cc +++ b/lily/includable-lexer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,14 +37,14 @@ using namespace std; #endif #ifndef YY_START -#define YY_START \ +#define YY_START \ ((yy_start - 1) / 2) #define YYSTATE YY_START #endif /* Flex >= 2.5.29 has include stack; but we don't use that yet. */ #if !HAVE_FLEXLEXER_YY_CURRENT_BUFFER -#define yy_current_buffer \ +#define yy_current_buffer \ (yy_buffer_stack != 0 ? yy_buffer_stack[yy_buffer_stack_top] : 0) #endif @@ -71,7 +71,7 @@ Includable_lexer::new_input (string name, Sources *sources) string msg = _f ("cannot find file: `%s'", name); msg += "\n"; msg += _f ("(search path: `%s')", - (current_dir.length () ? (current_dir + PATHSEP) : "") + sources->path_->to_string ().c_str ()); + (current_dir.length () ? (current_dir + PATHSEP) : "") + sources->path_->to_string ().c_str ()); LexerError (msg.c_str ()); return; } @@ -81,13 +81,8 @@ Includable_lexer::new_input (string name, Sources *sources) if (yy_current_buffer) state_stack_.push_back (yy_current_buffer); - if (be_verbose_global) - { - string spaces = ""; - for (size_t i = 0; i < state_stack_.size (); i++) - spaces += " "; - progress_indication (string ("\n") + spaces + string ("[") + file->name_string ()); - } + debug_output (string (state_stack_.size (), ' ') // indentation! + + string ("[") + file->name_string ()); include_stack_.push_back (file); @@ -109,24 +104,13 @@ Includable_lexer::new_input (string name, string data, Sources *sources) if (yy_current_buffer) state_stack_.push_back (yy_current_buffer); - if (be_verbose_global) - { - string spaces = ""; - for (size_t i = 0; i < state_stack_.size (); i++) - spaces += " "; - progress_indication (string ("\n") + spaces + string ("[") + name); - } + debug_output (string (state_stack_.size (), ' ') // indentation! + + string ("[") + name); include_stack_.push_back (file); yy_switch_to_buffer (yy_create_buffer (file->get_istream (), YY_BUF_SIZE)); } -void -Includable_lexer::add_string_include (string data) -{ - pending_string_includes_.push_back (data); -} - /** pop the inputstack. conceptually this is a destructor, but it does not destruct the Source_file that Includable_lexer::new_input creates. */ @@ -135,8 +119,7 @@ Includable_lexer::close_input () { include_stack_.pop_back (); char_count_stack_.pop_back (); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); yy_delete_buffer (yy_current_buffer); #if HAVE_FLEXLEXER_YY_CURRENT_BUFFER yy_current_buffer = 0; diff --git a/lily/include/accidental-interface.hh b/lily/include/accidental-interface.hh index c3e6f51667..bf4bfb7a58 100644 --- a/lily/include/accidental-interface.hh +++ b/lily/include/accidental-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,8 +33,8 @@ public: DECLARE_SCHEME_CALLBACK (height, (SCM)); DECLARE_SCHEME_CALLBACK (width, (SCM)); DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); - - DECLARE_GROB_INTERFACE(); + + DECLARE_GROB_INTERFACE (); static string get_fontcharname (string style, int alteration); static vector accurate_boxes (Grob *me, Grob **common); static SCM get_stencil (Grob *me); diff --git a/lily/include/accidental-placement.hh b/lily/include/accidental-placement.hh index 6f9696ef5e..fa0902e1ae 100644 --- a/lily/include/accidental-placement.hh +++ b/lily/include/accidental-placement.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,13 +29,13 @@ public: DECLARE_SCHEME_CALLBACK (alignment_callback, (SCM element)); static void add_accidental (Grob *, Grob *); - static vector get_relevant_accidentals (vector const &elts, Grob *left); + static vector get_relevant_accidentals (vector const &elts, Grob *left); static void split_accidentals (Grob *accs, - vector *break_reminder, - vector *real_acc); + vector *break_reminder, + vector *real_acc); - DECLARE_SCHEME_CALLBACK(calc_positioning_done, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); + DECLARE_GROB_INTERFACE (); }; #endif /* ACCIDENTAL_PLACEMENT_HH */ diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh index 0cc63b2ad1..a17f523551 100644 --- a/lily/include/align-interface.hh +++ b/lily/include/align-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,26 +29,27 @@ class Align_interface public: DECLARE_SCHEME_CALLBACK (align_to_minimum_distances, (SCM)); DECLARE_SCHEME_CALLBACK (align_to_ideal_distances, (SCM)); - static void align_elements_to_minimum_distances(Grob *, Axis a); - static void align_elements_to_ideal_distances(Grob *); - static vector get_minimum_translations (Grob *, vector const&, Axis a); - static vector get_minimum_translations_without_min_dist (Grob *, vector const&, Axis a); - static vector get_pure_minimum_translations (Grob *, vector const&, - Axis a, int start, int end); + DECLARE_SCHEME_CALLBACK (full_score_pure_minimum_translations, (SCM)); + static void align_elements_to_minimum_distances (Grob *, Axis a); + static void align_elements_to_ideal_distances (Grob *); + static vector get_minimum_translations (Grob *, vector const &, Axis a); + static vector get_minimum_translations_without_min_dist (Grob *, vector const &, Axis a); + static vector get_pure_minimum_translations (Grob *, vector const &, + Axis a, int start, int end); static void set_ordered (Grob *); static Axis axis (Grob *); static void add_element (Grob *, Grob *); static int get_count (Grob *, Grob *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end); protected: - static vector internal_get_minimum_translations (Grob *, vector const&, - Axis a, - bool include_fixed_spacing, - bool pure, int start, int end); + static vector internal_get_minimum_translations (Grob *, vector const &, + Axis a, + bool include_fixed_spacing, + bool pure, int start, int end); }; #endif /* ALIGN_INTERFACE_HH */ diff --git a/lily/include/all-font-metrics.hh b/lily/include/all-font-metrics.hh index d170e818a7..3bb5b58377 100644 --- a/lily/include/all-font-metrics.hh +++ b/lily/include/all-font-metrics.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,6 @@ #include #endif - /* Interface to all fonts (both system fonts and fonts loaded via Pango). @@ -46,19 +45,19 @@ class All_font_metrics #endif map filename_charcode_maps_map_; - + All_font_metrics (All_font_metrics const &); public: Index_to_charcode_map const *get_index_to_charcode_map (string filename, - int face_index, - FT_Face face); + int face_index, + FT_Face face); All_font_metrics (string search_path); ~All_font_metrics (); Pango_font *find_pango_font (PangoFontDescription const *description, - Real scale); + Real scale); Font_metric *find_font (string name); Open_type_font *find_otf (string name); diff --git a/lily/include/arpeggio.hh b/lily/include/arpeggio.hh index 094afe687b..a03beaa7a8 100644 --- a/lily/include/arpeggio.hh +++ b/lily/include/arpeggio.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include "lily-proto.hh" #include "grob-interface.hh" - class Arpeggio { public: @@ -34,7 +33,7 @@ public: DECLARE_SCHEME_CALLBACK (brew_chord_slur, (SCM)); DECLARE_SCHEME_CALLBACK (width, (SCM)); DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* ARPEGGIO_HH */ diff --git a/lily/include/articulations.hh b/lily/include/articulations.hh index f30c3bfac7..543c43ebd0 100644 --- a/lily/include/articulations.hh +++ b/lily/include/articulations.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Carl Sorensen + Copyright (C) 2010--2012 Carl Sorensen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,8 +24,8 @@ #include "stream-event.hh" SCM articulation_list (vector notes, - vector articulations, - char const *articulation_name); + vector articulations, + char const *articulation_name); #endif /* ARTICULATIONS_HH */ diff --git a/lily/include/audio-column.hh b/lily/include/audio-column.hh index 4f51d8c00c..42899dbd9e 100644 --- a/lily/include/audio-column.hh +++ b/lily/include/audio-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,9 +37,9 @@ public: void add_audio_item (Audio_item *i); Moment when () const; - vector audio_items_; + vector audio_items_; Moment when_; - int ticks () const ; + int ticks () const; protected: void offset_when (Moment m); friend class Score_performer; diff --git a/lily/include/audio-element-info.hh b/lily/include/audio-element-info.hh index 9f58f4ea0d..e03cceff73 100644 --- a/lily/include/audio-element-info.hh +++ b/lily/include/audio-element-info.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ public: Stream_event *event_; Translator *origin_trans_; - vector origin_contexts (Translator *) const; + vector origin_contexts (Translator *) const; Audio_element_info (Audio_element *, Stream_event *); Audio_element_info (); diff --git a/lily/include/audio-element.hh b/lily/include/audio-element.hh index fac2068773..510d745a6d 100644 --- a/lily/include/audio-element.hh +++ b/lily/include/audio-element.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ public: Audio_element (); virtual ~Audio_element (); - DECLARE_CLASSNAME(Audio_element); + DECLARE_CLASSNAME (Audio_element); virtual char const *name () const; }; diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index da0abbce38..45dcc7b799 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ public: Audio_column *get_column () const; virtual void render (); - + private: Audio_item (Audio_item const &); Audio_item &operator = (Audio_item const &); @@ -53,15 +53,15 @@ class Audio_span_dynamic : public Audio_element { public: Direction grow_dir_; - vector dynamics_; - + vector dynamics_; + Real min_volume_; + Real max_volume_; virtual void render (); - void add_absolute (Audio_dynamic*); - Audio_span_dynamic (); + void add_absolute (Audio_dynamic *); + Audio_span_dynamic (Real min_volume, Real max_volume); }; - class Audio_key : public Audio_item { public: @@ -90,8 +90,8 @@ public: Pitch pitch_; Moment length_mom_; Pitch transposing_; - Audio_dynamic* dynamic_; - + Audio_dynamic *dynamic_; + Audio_note *tied_; bool tie_event_; }; @@ -107,10 +107,10 @@ class Audio_text : public Audio_item { public: enum Type - { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; + { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + MARKER, CUE_POINT + }; Audio_text (Audio_text::Type type, string text_string); diff --git a/lily/include/audio-staff.hh b/lily/include/audio-staff.hh index 665593edd6..6fe9b8d6d4 100644 --- a/lily/include/audio-staff.hh +++ b/lily/include/audio-staff.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,10 +30,10 @@ struct Audio_staff : public Audio_element void output (Midi_stream &midi_stream_r, int track, bool port); Audio_staff (); - + bool percussion_; bool merge_unisons_; - vector audio_items_; + vector audio_items_; }; #endif // AUDIO_STAFF_HH diff --git a/lily/include/axis-group-engraver.hh b/lily/include/axis-group-engraver.hh index 2f63de076c..9f87aa3e52 100644 --- a/lily/include/axis-group-engraver.hh +++ b/lily/include/axis-group-engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ class Axis_group_engraver : public Engraver { protected: Spanner *staffline_; - vector elts_; + vector elts_; void process_music (); virtual void finalize (); DECLARE_ACKNOWLEDGER (grob); @@ -38,7 +38,7 @@ protected: virtual Spanner *get_spanner (); virtual void add_element (Grob *); virtual bool must_be_last () const; - + public: TRANSLATOR_DECLARATIONS (Axis_group_engraver); }; diff --git a/lily/include/axis-group-interface.hh b/lily/include/axis-group-interface.hh index fa66202096..19bdc1e2ee 100644 --- a/lily/include/axis-group-interface.hh +++ b/lily/include/axis-group-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,6 +28,7 @@ struct Axis_group_interface { static SCM generic_group_extent (Grob *me, Axis a); + static Interval generic_bound_extent (Grob *me, Grob *common, Axis a); static Interval pure_group_height (Grob *me, int start, int end); DECLARE_SCHEME_CALLBACK (width, (SCM smob)); DECLARE_SCHEME_CALLBACK (calc_x_common, (SCM smob)); @@ -44,8 +45,11 @@ struct Axis_group_interface DECLARE_SCHEME_CALLBACK (calc_pure_relevant_items, (SCM)); DECLARE_SCHEME_CALLBACK (calc_pure_relevant_spanners, (SCM)); DECLARE_SCHEME_CALLBACK (calc_pure_y_common, (SCM)); - static Interval relative_group_extent (vector const &list, - Grob *common, Axis); + static SCM internal_calc_pure_relevant_grobs (Grob *, string); + static Interval relative_group_extent (vector const &list, + Grob *common, Axis); + static Interval relative_maybe_bound_group_extent (vector const &list, + Grob *common, Axis, bool); static Interval relative_pure_height (Grob *me, int start, int end); static Interval combine_pure_heights (Grob *me, SCM, int, int); static Interval sum_partial_pure_heights (Grob *me, int, int); @@ -53,16 +57,17 @@ 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 Skyline_pair skyline_spacing (Grob *me, vector elements); + static bool has_outside_staff_parent (Grob *me); + static Skyline_pair skyline_spacing (Grob *me, vector elements); static void add_element (Grob *me, Grob *); static void set_axes (Grob *, Axis, Axis); static bool has_axis (Grob *, Axis); - static void get_children (Grob *, vector *); + static void get_children (Grob *, vector *); static Interval staff_extent (Grob *me, Grob *ref, Axis, Grob *staff, Axis); static SCM calc_common (Grob *, Axis); - static Real minimum_distance (Grob*, Grob*, Axis); - static SCM calc_maybe_pure_staff_staff_spacing (Grob*, bool, int, int); - DECLARE_GROB_INTERFACE(); + static Real minimum_distance (Grob *, Grob *, Axis); + static SCM calc_maybe_pure_staff_staff_spacing (Grob *, bool, int, int); + DECLARE_GROB_INTERFACE (); }; #endif /* AXIS_GROUP_INTERFACE_HH */ diff --git a/lily/include/bar-line.hh b/lily/include/bar-line.hh index 442fe27770..8f7b1a24dd 100644 --- a/lily/include/bar-line.hh +++ b/lily/include/bar-line.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,19 +26,8 @@ class Bar_line { public: - DECLARE_GROB_INTERFACE(); - - static Stencil dashed_bar_line (Grob *me, Interval const &extent, Real thick); - static Stencil tick_bar_line (Grob *me, Real h, bool rounded); - static Stencil compound_barline (Grob *, string, Interval const &extent, - bool rounded); - static Stencil simple_barline (Grob *, Real wid, Interval const &extent, - bool rounded); - static Interval bar_y_extent (Grob *, Grob *); - static bool non_empty_barline (Grob *me); + DECLARE_GROB_INTERFACE (); - DECLARE_SCHEME_CALLBACK (calc_bar_extent, (SCM)); - DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_anchor, (SCM)); + static bool non_empty_barline (Grob *me); }; #endif // BAR_LINE_HH diff --git a/lily/include/beam-scoring-problem.hh b/lily/include/beam-scoring-problem.hh index 08664049e8..6e2302d19a 100644 --- a/lily/include/beam-scoring-problem.hh +++ b/lily/include/beam-scoring-problem.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -23,13 +23,14 @@ #include "beam.hh" #include "interval.hh" -#include "lily-guile.hh" -#include "lily-proto.hh" +#include "lily-guile.hh" +#include "lily-proto.hh" #include "main.hh" // DEBUG_BEAM_SCORING -#include "std-vector.hh" -#include "stem-info.hh" +#include "std-vector.hh" +#include "stem-info.hh" -enum Scorers { +enum Scorers +{ // Should be ordered by increasing expensiveness. ORIGINAL_DISTANCE, SLOPE_IDEAL, @@ -55,22 +56,21 @@ struct Beam_configuration Beam_configuration (); bool done () const; void add (Real demerit, const string &reason); - static Beam_configuration* new_config(Interval start, - Interval offset); + static Beam_configuration *new_config (Interval start, + Interval offset); }; // Comparator for a queue of Beam_configuration*. class Beam_configuration_less { public: - bool operator() (Beam_configuration* const& l, Beam_configuration* const& r) + bool operator () (Beam_configuration *const &l, Beam_configuration *const &r) { // Invert return l->demerits > r->demerits; } }; - struct Beam_quant_parameters { Real SECONDARY_BEAM_DEMERIT; @@ -93,11 +93,12 @@ struct Beam_quant_parameters Real COLLISION_PADDING; Real HORIZONTAL_INTER_QUANT_PENALTY; Real STEM_COLLISION_FACTOR; - + void fill (Grob *him); }; -struct Beam_collision { +struct Beam_collision +{ Real x_; Interval y_; Real base_penalty_; @@ -105,34 +106,31 @@ struct Beam_collision { // Need to add beam_config->y to get actual offsets. Interval beam_y_; }; - /* Parameters for a single beam. Precomputed to save time in scoring individual configurations. - TODO - use trailing _ on data members. - */ class Beam_scoring_problem { public: - Beam_scoring_problem (Grob *me, Drul_array ys); - Drul_array solve() const; + Beam_scoring_problem (Grob *me, Drul_array ys, bool); + Drul_array solve () const; private: - Grob *beam; + Spanner *beam_; - Interval unquanted_y; - - Real staff_space; - Real beam_thickness; - Real line_thickness; - Real musical_dy; + Interval unquanted_y_; + bool align_broken_intos_; + bool do_initial_slope_calculations_; - Interval x_span; - - vector stem_infos; + Real staff_space_; + Real beam_thickness_; + Real line_thickness_; + Real musical_dy_; + int normal_stem_count_; + Real x_span_; /* Do stem computations. These depend on YL and YR linearly, so we can @@ -142,36 +140,48 @@ private: affine linear in YL and YR. If YL == YR == 0, then we might have stem_y != 0.0, when we're cross staff. */ - vector base_lengths; - vector stem_xpositions; - - Grob *common[2]; - bool is_xstaff; - bool is_knee; + vector stem_infos_; + vector chord_start_y_; + vector head_positions_; + vector beam_multiplicity_; + vector is_normal_; + vector base_lengths_; + vector stem_xpositions_; + vector stem_ypositions_; - Beam_quant_parameters parameters; + bool is_xstaff_; + bool is_knee_; - Real staff_radius; - Drul_array edge_beam_counts; - Drul_array edge_dirs; + Beam_quant_parameters parameters_; + + Real staff_radius_; + Drul_array edge_beam_counts_; + Drul_array edge_dirs_; // Half-open intervals, representing allowed positions for the beam, // starting from close to the notehead to the direction of the stem // end. This is used for quickly weeding out invalid // Beam_configurations. - Drul_array quant_range; - Real beam_translation; + Drul_array quant_range_; + Real beam_translation_; vector collisions_; vector segments_; - - void init_stems (); - void init_collisions (vector grobs); + + vsize first_normal_index (); + vsize last_normal_index (); + + void init_instance_variables (Grob *me, Drul_array ys, bool align_broken_intos); void add_collision (Real x, Interval y, Real factor); - - void one_scorer (Beam_configuration* config) const; + void no_visible_stem_positions (); + void least_squares_positions (); + Real calc_concaveness (); + void slope_damping (); + void shift_region_to_valid (); + + void one_scorer (Beam_configuration *config) const; Beam_configuration *force_score (SCM inspect_quants, - const vector &configs) const; - Real y_at (Real x, Beam_configuration const* c) const; + const vector &configs) const; + Real y_at (Real x, Beam_configuration const *c) const; // Scoring functions: void score_forbidden_quants (Beam_configuration *config) const; @@ -179,8 +189,8 @@ private: void score_slope_ideal (Beam_configuration *config) const; void score_slope_direction (Beam_configuration *config) const; void score_slope_musical (Beam_configuration *config) const; - void score_stem_lengths (Beam_configuration* config) const; - void generate_quants(vector* scores) const; + void score_stem_lengths (Beam_configuration *config) const; + void generate_quants (vector* scores) const; void score_collisions (Beam_configuration *config) const; }; diff --git a/lily/include/beam.hh b/lily/include/beam.hh index f541a216be..116ae6aa57 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -29,13 +29,13 @@ struct Beam_segment { int vertical_count_; - Interval horizontal_; + Interval horizontal_; Beam_segment (); }; -bool beam_segment_less (Beam_segment const& a, Beam_segment const& b); +bool beam_segment_less (Beam_segment const &a, Beam_segment const &b); -struct Beam_stem_segment +struct Beam_stem_segment { Beam_stem_segment (); @@ -49,7 +49,6 @@ struct Beam_stem_segment int max_connect_; }; - bool operator <(Beam_stem_segment const &a, Beam_stem_segment const &b); class Beam @@ -58,7 +57,7 @@ public: static int normal_stem_count (Grob *); static Grob *first_normal_stem (Grob *); static Grob *last_normal_stem (Grob *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static void add_stem (Grob *, Grob *); static bool is_cross_staff (Grob *); static bool is_knee (Grob *); @@ -68,41 +67,38 @@ public: static Real get_beam_translation (Grob *me); static Real get_beam_thickness (Grob *me); static void connect_beams (Grob *me); - static vector get_beam_segments (Grob *me_grob, Grob **common); - static Interval no_visible_stem_positions (Grob *me, Interval default_value); - + static vector get_beam_segments (Grob *me_grob, Grob **common); + DECLARE_SCHEME_CALLBACK (rest_collision_callback, (SCM element, SCM prev_off)); + DECLARE_SCHEME_CALLBACK (pure_rest_collision_callback, (SCM element, SCM, SCM, SCM prev_off)); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM)); DECLARE_SCHEME_CALLBACK (calc_stem_shorten, (SCM)); DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (calc_positions, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_least_squares_positions, (SCM, SCM)); - DECLARE_SCHEME_CALLBACK (calc_normal_stems, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_concaveness, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_normal_stems, (SCM)); DECLARE_SCHEME_CALLBACK (set_stem_lengths, (SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); - + DECLARE_SCHEME_CALLBACK (calc_beam_segments, (SCM)); /* position callbacks */ - DECLARE_SCHEME_CALLBACK (shift_region_to_valid, (SCM, SCM)); - DECLARE_SCHEME_CALLBACK (slope_damping, (SCM, SCM)); - DECLARE_SCHEME_CALLBACK (quanting, (SCM, SCM)); - + DECLARE_SCHEME_CALLBACK (quanting, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (calc_x_positions, (SCM)); + static int get_direction_beam_count (Grob *me, Direction d); private: friend class Beam_scoring_problem; - + static Direction get_default_dir (Grob *); + static vector get_beam_segments (Grob *); static void set_stem_directions (Grob *, Direction); static void consider_auto_knees (Grob *); static void set_stem_shorten (Grob *); static int forced_stem_count (Grob *); static Real calc_stem_y (Grob *, Grob *s, Grob **c, - Real, Real, Direction, - Drul_array pos, bool french); + Real, Real, Direction, + Drul_array pos, bool french); }; - #endif /* BEAM_HH */ diff --git a/lily/include/beaming-pattern.hh b/lily/include/beaming-pattern.hh index 6eed0606b3..8b9318da5d 100644 --- a/lily/include/beaming-pattern.hh +++ b/lily/include/beaming-pattern.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,11 +28,12 @@ struct Beaming_options { SCM grouping_; bool subdivide_beams_; + bool strict_beat_beaming_; Moment base_moment_; Moment measure_length_; Beaming_options (); - void from_context (Context*); + void from_context (Context *); }; struct Beam_rhythmic_element @@ -43,7 +44,11 @@ struct Beam_rhythmic_element int rhythmic_importance_; bool invisible_; - Beam_rhythmic_element (Moment, int, bool); + Rational factor_; + + bool tuplet_start_; + + Beam_rhythmic_element (Moment, int, bool, Rational, bool); Beam_rhythmic_element (); int count (Direction d) const; @@ -59,19 +64,21 @@ class Beaming_pattern public: Beaming_pattern (); - void beamify (Beaming_options const&); + void beamify (Beaming_options const &); void de_grace (); - void add_stem (Moment d, int beams, bool invisible); + void add_stem (Moment d, int beams, bool invisible, Rational factor, bool tuplet_starrt); int beamlet_count (int idx, Direction d) const; bool invisibility (int idx) const; + Rational factor (int idx) const; + bool tuplet_start (int idx) const; Moment start_moment (int idx) const; Moment end_moment (int idx) const; - Beaming_pattern* split_pattern(int idx); + Beaming_pattern *split_pattern (int idx); private: vector infos_; - Direction flag_direction (Beaming_options const&, vsize) const; - void find_rhythmic_importance (Beaming_options const&); + Direction flag_direction (Beaming_options const &, vsize) const; + void find_rhythmic_importance (Beaming_options const &); void unbeam_invisible_stems (); }; diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index bd66558a19..1e88dbb764 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,11 +39,13 @@ public: Bezier extract (Real, Real) const; Real get_other_coordinate (Axis a, Real x) const; + vector get_other_coordinates (Axis a, Real x) const; vector solve_point (Axis, Real coordinate) const; + Real minmax (Axis, Real, Real, Direction) const; vector solve_derivative (Offset) const; Interval extent (Axis) const; Interval control_point_extent (Axis) const; - + Polynomial polynomial (Axis)const; Offset curve_point (Real t) const; Real curve_coordinate (Real t, Axis) const; @@ -63,7 +65,7 @@ void rotate (vector *array, Real phi); void translate (vector *array, Offset o); Bezier slur_shape (Real width, Real height_limit, - Real height_proportion); + Real height_proportion); Real slur_height (Real width, Real height_limit, Real height_proportion); void get_slur_indent_height (Real *indent, Real *height, Real width, Real h_inf, Real r_0); diff --git a/lily/include/book.hh b/lily/include/book.hh index fa74cd5654..e5dd86e041 100644 --- a/lily/include/book.hh +++ b/lily/include/book.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,10 +44,10 @@ public: void add_score (SCM); void add_bookpart (SCM); Paper_book *process (Output_def *def_paper, - Output_def *def_layout); + Output_def *def_layout); Paper_book *process (Output_def *default_paper, - Output_def *default_layout, - Paper_book *parent_part); + Output_def *default_layout, + Paper_book *parent_part); void set_keys (); protected: @@ -55,11 +55,11 @@ protected: void add_scores_to_bookpart (); bool error_found (); void process_score (SCM score, - Paper_book *output_paper_book, - Output_def *layout); + Paper_book *output_paper_book, + Output_def *layout); void process_bookparts (Paper_book *output_paper_book, - Output_def *paper, - Output_def *layout); + Output_def *paper, + Output_def *layout); }; DECLARE_UNSMOB (Book, book); diff --git a/lily/include/box.hh b/lily/include/box.hh index baa4ce0b76..af5695b3bc 100644 --- a/lily/include/box.hh +++ b/lily/include/box.hh @@ -15,9 +15,9 @@ class Box DECLARE_SIMPLE_SMOBS (Box); public: Interval &x () {return interval_a_[X_AXIS]; } - Interval &y (){ return interval_a_[Y_AXIS]; } - Interval x () const{ return interval_a_[X_AXIS]; } - Interval y () const{return interval_a_[Y_AXIS]; } + Interval &y () { return interval_a_[Y_AXIS]; } + Interval x () const { return interval_a_[X_AXIS]; } + Interval y () const {return interval_a_[Y_AXIS]; } Interval operator [] (Axis a) const; Interval &operator [] (Axis a); @@ -31,6 +31,7 @@ public: void widen (Real x, Real y); void scale (Real r); void unite (Box b); + void print (); Box (); Box (Interval ix, Interval iy); }; diff --git a/lily/include/break-align-interface.hh b/lily/include/break-align-interface.hh index c3c594ba96..28ff88b159 100644 --- a/lily/include/break-align-interface.hh +++ b/lily/include/break-align-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,8 +26,8 @@ class Break_alignment_interface { public: - static vector ordered_elements (Grob *me); - DECLARE_GROB_INTERFACE(); + static vector ordered_elements (Grob *me); + DECLARE_GROB_INTERFACE (); static void add_element (Grob *me, Grob *add); static SCM break_align_order (Item *me); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM element)); @@ -39,13 +39,13 @@ struct Break_aligned_interface DECLARE_SCHEME_CALLBACK (calc_average_anchor, (SCM)); DECLARE_SCHEME_CALLBACK (calc_extent_aligned_anchor, (SCM)); DECLARE_SCHEME_CALLBACK (calc_break_visibility, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; struct Break_alignable_interface { DECLARE_SCHEME_CALLBACK (self_align_callback, (SCM element)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // BREAK_ALIGN_INTERFACE_HH diff --git a/lily/include/breathing-sign.hh b/lily/include/breathing-sign.hh index 948dd09d75..a76b10ed79 100644 --- a/lily/include/breathing-sign.hh +++ b/lily/include/breathing-sign.hh @@ -1,7 +1,7 @@ /* breathing-sign.hh - Copyright (c) 1999--2011 Michael Krause + Copyright (c) 1999--2012 Michael Krause written for the GNU LilyPond music typesetter */ @@ -29,7 +29,7 @@ public: DECLARE_SCHEME_CALLBACK (finalis, (SCM)); DECLARE_SCHEME_CALLBACK (offset_callback, (SCM element)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // BREATHING_SIGN_HH diff --git a/lily/include/change-iterator.hh b/lily/include/change-iterator.hh index 99a3dde190..482f53d970 100644 --- a/lily/include/change-iterator.hh +++ b/lily/include/change-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ public: /* constructor is public */ virtual void process (Moment); DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_CLASSNAME(Change_iterator); + DECLARE_CLASSNAME (Change_iterator); private: void error (string); diff --git a/lily/include/chord-name.hh b/lily/include/chord-name.hh index 91e6593361..f9e82ef41f 100644 --- a/lily/include/chord-name.hh +++ b/lily/include/chord-name.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Jan Nieuwenhuizen + Copyright (C) 1999--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class Chord_name { public: DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // CHORD_NAME_HH diff --git a/lily/include/chord-tremolo-iterator.hh b/lily/include/chord-tremolo-iterator.hh index 9ab96ec5d4..dc27f6693f 100644 --- a/lily/include/chord-tremolo-iterator.hh +++ b/lily/include/chord-tremolo-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class Chord_tremolo_iterator : public Sequential_iterator public: DECLARE_SCHEME_CALLBACK (constructor, ()); /* construction */ - DECLARE_CLASSNAME(Chord_tremolo_iterator); + DECLARE_CLASSNAME (Chord_tremolo_iterator); Chord_tremolo_iterator (); protected: virtual SCM get_music_list () const; diff --git a/lily/include/clef.hh b/lily/include/clef.hh index 50cd925f70..b80093d245 100644 --- a/lily/include/clef.hh +++ b/lily/include/clef.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ struct Clef { DECLARE_SCHEME_CALLBACK (calc_glyph_name, (SCM)); DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* CLEF_HH */ diff --git a/lily/include/cluster.hh b/lily/include/cluster.hh index 2c7bc1dac8..2aee1886e5 100644 --- a/lily/include/cluster.hh +++ b/lily/include/cluster.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ class Cluster public: DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // CLUSTER_HH diff --git a/lily/include/coherent-ligature-engraver.hh b/lily/include/coherent-ligature-engraver.hh index c109a69ce9..cc3ed8d695 100644 --- a/lily/include/coherent-ligature-engraver.hh +++ b/lily/include/coherent-ligature-engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,9 +29,9 @@ public: protected: virtual void build_ligature (Spanner *ligature, - vector primitives) = 0; + vector primitives) = 0; virtual void typeset_ligature (Spanner *ligature, - vector primitives); + vector primitives); virtual void move_related_items_to_column (Item *, Paper_column *, Real); private: void collect_accidentals (Spanner *, vector); diff --git a/lily/include/column-x-positions.hh b/lily/include/column-x-positions.hh index 3b6410b646..2356294d9d 100644 --- a/lily/include/column-x-positions.hh +++ b/lily/include/column-x-positions.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,8 +25,8 @@ struct Column_x_positions { - vector cols_; - vector loose_cols_; + vector cols_; + vector loose_cols_; vector config_; Real force_; diff --git a/lily/include/constrained-breaking.hh b/lily/include/constrained-breaking.hh index d0e631d901..731e20c1e3 100644 --- a/lily/include/constrained-breaking.hh +++ b/lily/include/constrained-breaking.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,22 +40,26 @@ struct Line_shape Line_shape piggyback (Line_shape mount, Real padding) const; }; -struct Line_details { +struct Line_details +{ Grob *last_column_; Real force_; Line_shape shape_; - vector footnotes_; /* The footnotes at the bottom of the + vector footnote_heights_; /* The footnotes at the bottom of the page, where each stencil represents a different footnote. */ + vector in_note_heights_; /* The in-notes under a system, + where each stencil represents + a different in-note. */ Interval refpoint_extent_; /* The refpoints of the first and last - spaceable staff in this line. min-distance - should be measured from the bottom - refpoint_extent of one line to the - top refpoint_extent of the next. */ + spaceable staff in this line. min-distance + should be measured from the bottom + refpoint_extent of one line to the + top refpoint_extent of the next. */ Real tallness_; /* Y-extent, adjusted according to begin/rest-of-line*/ Real padding_; /* compulsory space after this system (if we're not - last on a page) */ + last on a page) */ Real title_padding_; Real min_distance_; Real title_min_distance_; @@ -187,7 +191,7 @@ private: vector start_; /* the columns at which we might be asked to start breaking */ vector starting_breakpoints_; /* the corresponding index in breaks_ */ - vector all_; + vector all_; vector breaks_; void initialize (); diff --git a/lily/include/context-def.hh b/lily/include/context-def.hh index 6024c68e06..2fddd980b7 100644 --- a/lily/include/context-def.hh +++ b/lily/include/context-def.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,6 @@ #include "virtual-methods.hh" #include - /* The definition of a interpretation context as given in the input. The lists are stored in order of definition. @@ -57,16 +56,18 @@ public: SCM get_translator_names (SCM) const; SCM get_translator_group_type () const { return translator_group_type_; } void set_acceptor (SCM accepts, bool add); - - VIRTUAL_COPY_CONSTRUCTOR(Context_def, Context_def); - - vector path_to_acceptable_context (SCM type_string, - Output_def *, - SCM) const; - vector internal_path_to_acceptable_context (SCM type_string, - Output_def *, - SCM, - set *seen) const; + SCM lookup (SCM sym) const; + bool is_alias (SCM sym) const; + + VIRTUAL_COPY_CONSTRUCTOR (Context_def, Context_def); + + vector path_to_acceptable_context (SCM type_string, + Output_def *, + SCM) const; + vector internal_path_to_acceptable_context (SCM type_string, + Output_def *, + SCM, + set *seen) const; Context *instantiate (SCM extra_ops); SCM to_alist () const; diff --git a/lily/include/context-handle.hh b/lily/include/context-handle.hh index c9980eb46c..f4fc18bd4d 100644 --- a/lily/include/context-handle.hh +++ b/lily/include/context-handle.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,6 @@ #include "lily-proto.hh" - class Context_handle { public: @@ -32,7 +31,7 @@ public: void set_context (Context *); void operator = (Context_handle const &); Context_handle (Context_handle const &); - Context *get_outlet () const; + Context *get_context () const; int get_count () const; private: diff --git a/lily/include/context-mod.hh b/lily/include/context-mod.hh index 3bcb987263..297ec4bb39 100644 --- a/lily/include/context-mod.hh +++ b/lily/include/context-mod.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Reinhold Kainhofer + Copyright (C) 2010--2012 Reinhold Kainhofer LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,6 @@ #include "smobs.hh" #include "virtual-methods.hh" - /* Modifications for an interpretation context as given in the input. @@ -49,6 +48,7 @@ public: Context_mod (); Context_mod (Context_mod const &); + Context_mod (SCM mod_list); DECLARE_SIMPLE_SMOBS (Context_mod); }; diff --git a/lily/include/context.hh b/lily/include/context.hh index 4121f84c78..5543235c25 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,13 +34,14 @@ class Context Context (Context const &src); DECLARE_SMOBS (Context); - DECLARE_CLASSNAME(Context); + DECLARE_CLASSNAME (Context); void terminate (); private: friend class Context_handle; - int iterator_count_; - + /* how many Context_handles point to this Context */ + int client_count_; + /* Used internally by create_context */ Stream_event *infant_event_; @@ -50,14 +51,14 @@ protected: SCM definition_; /* Additions to the Context_def, given by \with */ SCM definition_mods_; - + SCM properties_scm_; SCM context_list_; SCM accepts_list_; SCM aliases_; Translator_group *implementation_; string id_string_; - + /* Events reported in the context is sent to this dispatcher. */ Dispatcher *event_source_; @@ -74,7 +75,7 @@ protected: DECLARE_LISTENER (set_property_from_event); DECLARE_LISTENER (unset_property_from_event); - + public: string id_string () const { return id_string_; } SCM children_contexts () const { return context_list_; } @@ -97,7 +98,7 @@ public: Context *where_defined (SCM name_sym, SCM *value) const; void unset_property (SCM var_sym); - void instrumented_set_property (SCM, SCM, const char*, int, const char*); + void instrumented_set_property (SCM, SCM, const char *, int, const char *); void internal_set_property (SCM var_sym, SCM value); Context *create_context (Context_def *, string, SCM); @@ -116,6 +117,13 @@ public: virtual Moment now_mom () const; virtual Context *get_default_interpreter (string context_id = ""); + // It would make some sense to have the following just available in + // a global context. It would be decidedly tricky, however, to have + // it initialized before the constructor of its Context base class + // was able to trigger garbage collection. + SCM ancestor_lookup_; + SCM make_event_class (SCM); + bool is_alias (SCM) const; void add_alias (SCM); void add_context (Context *trans); @@ -123,10 +131,10 @@ public: bool is_removable () const; Context *find_create_context (SCM context_name, - string id, SCM ops); + string id, SCM ops); Context *create_unique_context (SCM context_name, string context_id, - SCM ops); - vector path_to_acceptable_context (SCM alias) const; + SCM ops); + vector path_to_acceptable_context (SCM alias) const; }; /* @@ -135,14 +143,14 @@ public: void apply_property_operations (Context *tg, SCM pre_init_ops); void execute_revert_property (Context *context, - SCM context_property, - SCM grob_property_path); + SCM context_property, + SCM grob_property_path); void execute_pushpop_property (Context *trg, SCM prop, SCM eltprop, SCM val); void sloppy_general_pushpop_property (Context *context, - SCM context_property, SCM grob_property_path, SCM val); + SCM context_property, SCM grob_property_path, SCM val); SCM updated_grob_properties (Context *tg, SCM sym); Context *find_context_below (Context *where, - SCM type_sym, string id); + SCM type_sym, string id); bool melisma_busy (Context *); Context *get_voice_to_lyrics (Context *lyrics); @@ -160,10 +168,10 @@ bool check_repeat_count_visibility (Context const *context, SCM count); void set_context_property_on_children (Context *trans, SCM sym, SCM val); /* Shorthand for creating and broadcasting stream events. */ -#define send_stream_event(ctx, type, origin, ...) \ -{ \ - SCM props[] = { __VA_ARGS__, 0 }; \ - ctx->internal_send_stream_event (ly_symbol2scm (type), origin, props); \ +#define send_stream_event(ctx, type, origin, ...) \ +{ \ + SCM props[] = { __VA_ARGS__, 0 }; \ + ctx->internal_send_stream_event (ly_symbol2scm (type), origin, props); \ } SCM nested_property_alist (SCM alist, SCM prop_path, SCM value); diff --git a/lily/include/custos.hh b/lily/include/custos.hh index 9638a51657..3d998edd39 100644 --- a/lily/include/custos.hh +++ b/lily/include/custos.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Juergen Reuter + Copyright (C) 2000--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ struct Custos { DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); private: static void add_streepjes (Grob *me, int pos, int interspaces, Stencil *custos_); diff --git a/lily/include/dimension-cache.hh b/lily/include/dimension-cache.hh index 84ea317d53..581bcff8a9 100644 --- a/lily/include/dimension-cache.hh +++ b/lily/include/dimension-cache.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,9 +32,9 @@ class Dimension_cache Grob *parent_; void init (); void clear (); - + friend class Grob; - + Dimension_cache (Dimension_cache const &); ~Dimension_cache (); Dimension_cache (); diff --git a/lily/include/directional-element-interface.hh b/lily/include/directional-element-interface.hh index 07aae0be66..8e00394f46 100644 --- a/lily/include/directional-element-interface.hh +++ b/lily/include/directional-element-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/dispatcher.hh b/lily/include/dispatcher.hh index d812b27c63..31bed90c7e 100644 --- a/lily/include/dispatcher.hh +++ b/lily/include/dispatcher.hh @@ -39,6 +39,8 @@ class Dispatcher public: Dispatcher (); void broadcast (Stream_event *ev); + bool is_listened_class (SCM); + SCM listened_types (); void add_listener (Listener, SCM event_class); void remove_listener (Listener, SCM event_class); void register_as_listener (Dispatcher *dist); diff --git a/lily/include/dot-column.hh b/lily/include/dot-column.hh index 5337c85d6e..d6109bb876 100644 --- a/lily/include/dot-column.hh +++ b/lily/include/dot-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include "lily-proto.hh" #include "grob-interface.hh" - class Grob; /** @@ -35,7 +34,7 @@ public: static int compare (Grob *const &, Grob *const &); static void add_head (Grob *dotcol, Grob *rh); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (side_position, (SCM)); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); }; diff --git a/lily/include/dot-configuration.hh b/lily/include/dot-configuration.hh index b6b39dd41d..c3013bb4fd 100644 --- a/lily/include/dot-configuration.hh +++ b/lily/include/dot-configuration.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys + Copyright (C) 2007--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,22 +32,20 @@ struct Dot_position Direction dir_; Grob *dot_; Box dot_extents_; - bool extremal_head_; Interval x_extent_; - + Dot_position () { dot_ = 0; pos_ = 0; dir_ = CENTER; - extremal_head_ = false; } }; struct Dot_configuration : public map { Dot_formatting_problem const *problem_; - + Dot_configuration (Dot_formatting_problem const &); Real x_offset () const; int badness () const; diff --git a/lily/include/dot-formatting-problem.hh b/lily/include/dot-formatting-problem.hh index da248545bb..fcb6d19a22 100644 --- a/lily/include/dot-formatting-problem.hh +++ b/lily/include/dot-formatting-problem.hh @@ -1,7 +1,6 @@ #ifndef DOT_FORMATTING_PROBLEM_HH #define DOT_FORMATTING_PROBLEM_HH - #include "skyline.hh" #include "std-vector.hh" @@ -16,7 +15,7 @@ struct Dot_formatting_problem void register_configuration (Dot_configuration const &); Dot_configuration *best () const; Dot_formatting_problem (vector const &boxes, Interval base_x); - ~Dot_formatting_problem(); + ~Dot_formatting_problem (); }; #endif diff --git a/lily/include/dots.hh b/lily/include/dots.hh index 366e4f13e2..d126934d10 100644 --- a/lily/include/dots.hh +++ b/lily/include/dots.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class Dots { public: DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // DOTS_HH diff --git a/lily/include/duration.hh b/lily/include/duration.hh index 003b9e8efa..a7efb98eab 100644 --- a/lily/include/duration.hh +++ b/lily/include/duration.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -56,5 +56,7 @@ private: INSTANTIATE_COMPARE (Duration, Duration::compare); DECLARE_UNSMOB (Duration, duration); +extern SCM Duration_type_p_proc; + #endif // DURATION_HH diff --git a/lily/include/engraver-group.hh b/lily/include/engraver-group.hh index 9bb3aba0c3..5738b8a9f2 100644 --- a/lily/include/engraver-group.hh +++ b/lily/include/engraver-group.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ #include "engraver.hh" #include "translator-group.hh" -class Engraver_group : public virtual Translator_group +class Engraver_group : public Translator_group { protected: vector announce_infos_; @@ -50,4 +50,3 @@ void engraver_each (SCM list, Engraver_method method); #endif /* ENGRAVERGROUP_HH */ - diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index 162724b808..81713bb4e5 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ class Engraver : public Translator { Grob *internal_make_grob (SCM sym, SCM cause, char const *name, - char const *f, int l, char const *fun); + char const *f, int l, char const *fun); friend SCM ly_engraver_make_grob (SCM, SCM, SCM); friend class Engraver_group; protected: @@ -55,11 +55,11 @@ public: Grob_info make_grob_info (Grob *, SCM cause); Item *internal_make_item (SCM sym, SCM cause, char const *name, - char const *f, int l, char const *fun); + char const *f, int l, char const *fun); Spanner *internal_make_spanner (SCM sym, SCM cause, char const *name, - char const *f, int l, char const *fun); + char const *f, int l, char const *fun); Paper_column *internal_make_column (SCM sym, char const *name, - char const *f, int l, char const *fun); + char const *f, int l, char const *fun); /** override other ctor @@ -71,7 +71,7 @@ public: #define make_spanner(x, cause) internal_make_spanner (ly_symbol2scm (x), cause, x, __FILE__, __LINE__, __FUNCTION__) #define make_paper_column(x) internal_make_column (ly_symbol2scm (x), x, __FILE__, __LINE__, __FUNCTION__) -Engraver* unsmob_engraver (SCM eng); +Engraver *unsmob_engraver (SCM eng); bool ly_is_grob_cause (SCM obj); #endif // ENGRAVER_HH diff --git a/lily/include/event-chord-iterator.hh b/lily/include/event-chord-iterator.hh index 7c902f863d..aaecc3d923 100644 --- a/lily/include/event-chord-iterator.hh +++ b/lily/include/event-chord-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ class Event_chord_iterator : public Simple_music_iterator /** Find a bottom notation context to deliver events to. */ - DECLARE_CLASSNAME(Event_chord_iterator); + DECLARE_CLASSNAME (Event_chord_iterator); public: DECLARE_SCHEME_CALLBACK (constructor, ()); diff --git a/lily/include/event-iterator.hh b/lily/include/event-iterator.hh index adabf9d704..c22ebab1fc 100644 --- a/lily/include/event-iterator.hh +++ b/lily/include/event-iterator.hh @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys - Erik Sandberg + Copyright (C) 2006--2012 Han-Wen Nienhuys + Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ class Event_iterator : public Simple_music_iterator { - DECLARE_CLASSNAME(Event_iterator); + DECLARE_CLASSNAME (Event_iterator); public: DECLARE_SCHEME_CALLBACK (constructor, ()); diff --git a/lily/include/file-name-map.hh b/lily/include/file-name-map.hh index e6a338da80..3e25d7e5cf 100644 --- a/lily/include/file-name-map.hh +++ b/lily/include/file-name-map.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/font-interface.hh b/lily/include/font-interface.hh index 5e9fb5ecee..8d4df894d7 100644 --- a/lily/include/font-interface.hh +++ b/lily/include/font-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ struct Font_interface static SCM text_font_alist_chain (Grob *); static SCM music_font_alist_chain (Grob *); static Font_metric *get_default_font (Grob *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* FONT_INTERFACE_HH */ diff --git a/lily/include/font-metric.hh b/lily/include/font-metric.hh index 8c287da18b..4743e42b60 100644 --- a/lily/include/font-metric.hh +++ b/lily/include/font-metric.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ typedef std::map Index_to_charcode_map; class Font_metric { - DECLARE_CLASSNAME(Font_metric); + DECLARE_CLASSNAME (Font_metric); public: SCM description_; diff --git a/lily/include/freetype.hh b/lily/include/freetype.hh index f16864e358..3ddc07e67f 100644 --- a/lily/include/freetype.hh +++ b/lily/include/freetype.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/global-context.hh b/lily/include/global-context.hh index c814b61c07..079162d272 100644 --- a/lily/include/global-context.hh +++ b/lily/include/global-context.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,12 +23,12 @@ #include "context.hh" #include "pqueue.hh" -class Global_context : public virtual Context +class Global_context : public Context { PQueue extra_mom_pq_; Output_def *output_def_; - DECLARE_CLASSNAME(Global_context); + DECLARE_CLASSNAME (Global_context); friend class Output_def; public: diff --git a/lily/include/global-ctor.hh b/lily/include/global-ctor.hh index 4e4b3b3da2..cb082b19ab 100644 --- a/lily/include/global-ctor.hh +++ b/lily/include/global-ctor.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,15 +20,15 @@ #ifndef GLOBAL_CTOR_HH #define GLOBAL_CTOR_HH -#define ADD_GLOBAL_CTOR_WITHNAME(y, x) \ - class Global_ctor_ ## y \ - { \ - public: \ - Global_ctor_ ## y () \ - { \ - add_constructor (x); \ - } \ - } \ +#define ADD_GLOBAL_CTOR_WITHNAME(y, x) \ + class Global_ctor_ ## y \ + { \ + public: \ + Global_ctor_ ## y () \ + { \ + add_constructor (x); \ + } \ + } \ _ ## y ## _ctor_init; #define ADD_GLOBAL_CTOR(x) ADD_GLOBAL_CTOR_WITHNAME (x, x); diff --git a/lily/include/grace-fixup.hh b/lily/include/grace-fixup.hh index f18dc7e286..03e8129ed9 100644 --- a/lily/include/grace-fixup.hh +++ b/lily/include/grace-fixup.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/grace-iterator.hh b/lily/include/grace-iterator.hh index 2efb1754e3..08a69abffa 100644 --- a/lily/include/grace-iterator.hh +++ b/lily/include/grace-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class Grace_iterator : public Music_wrapper_iterator public: virtual void process (Moment); DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_CLASSNAME(Grace_iterator); + DECLARE_CLASSNAME (Grace_iterator); Moment pending_moment () const; }; diff --git a/lily/include/gregorian-ligature-engraver.hh b/lily/include/gregorian-ligature-engraver.hh index 790de04a8c..3ebf372eed 100644 --- a/lily/include/gregorian-ligature-engraver.hh +++ b/lily/include/gregorian-ligature-engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,7 +35,7 @@ protected: virtual void listen_pes_or_flexa (Stream_event *ev); virtual void build_ligature (Spanner *ligature, vector primitives); virtual void transform_heads (Spanner *ligature, - vector primitives) = 0; + vector primitives) = 0; void stop_translation_timestep (); }; diff --git a/lily/include/gregorian-ligature.hh b/lily/include/gregorian-ligature.hh index cfe81bcf94..957e796ba1 100644 --- a/lily/include/gregorian-ligature.hh +++ b/lily/include/gregorian-ligature.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,11 +24,10 @@ class Grob; #include "std-string.hh" #include "grob-interface.hh" - class Gregorian_ligature { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static string prefixes_to_str (Grob *); }; diff --git a/lily/include/grid-line-interface.hh b/lily/include/grid-line-interface.hh index 9adfea1480..85128ce6e6 100644 --- a/lily/include/grid-line-interface.hh +++ b/lily/include/grid-line-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,20 +23,19 @@ #include "lily-proto.hh" #include "grob-interface.hh" - class Grid_line_interface { public: static void add_grid_point (Grob *me, Grob *b); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (width, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; class Grid_point_interface { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* GRID_LINE_INTERFACE_HH */ diff --git a/lily/include/grob-array.hh b/lily/include/grob-array.hh index f33bc82f71..c21fc3cf50 100644 --- a/lily/include/grob-array.hh +++ b/lily/include/grob-array.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Grob_array { - vector grobs_; + vector grobs_; bool ordered_; DECLARE_SIMPLE_SMOBS (Grob_array); @@ -43,15 +43,15 @@ public: void remove_duplicates (); void clear (); void add (Grob *x) { grobs_.push_back (x); } - void set_array (vector const &src); - vector &array_reference (); - vector const &array () const; + void set_array (vector const &src); + vector &array_reference (); + vector const &array () const; static SCM make_array (); }; DECLARE_UNSMOB (Grob_array, grob_array); -vector const &ly_scm2link_array (SCM x); +vector const &ly_scm2link_array (SCM x); SCM grob_list_to_grob_array (SCM lst); SCM grob_array_to_list (Grob_array *array); diff --git a/lily/include/grob-info.hh b/lily/include/grob-info.hh index 56a49170a4..c62df2c20c 100644 --- a/lily/include/grob-info.hh +++ b/lily/include/grob-info.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,7 +33,6 @@ class Grob_info Grob *grob_; Direction start_end_; - friend class Engraver; public: Direction start_end () const { return start_end_; } @@ -43,7 +42,7 @@ public: Context *context () const; Stream_event *event_cause () const; Stream_event *ultimate_event_cause () const; - vector origin_contexts (Translator *) const; + vector origin_contexts (Translator *) const; Grob_info (Translator *, Grob *); Grob_info (); diff --git a/lily/include/grob-interface.hh b/lily/include/grob-interface.hh index 2c476bbb94..b060e85589 100644 --- a/lily/include/grob-interface.hh +++ b/lily/include/grob-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,24 +23,24 @@ #include "lily-guile.hh" #define DECLARE_GROB_INTERFACE() \ - static SCM interface_symbol_; \ + static SCM interface_symbol_; \ static bool has_interface (Grob*) -#define ADD_INTERFACE(cl, b, c) \ +#define ADD_INTERFACE(cl, b, c) \ SCM cl::interface_symbol_; \ - bool cl::has_interface (Grob *me) \ - { \ - return me->internal_has_interface (interface_symbol_); \ - } \ - void cl ## _init_ifaces () \ - { \ - cl::interface_symbol_ = add_interface (#cl, b, c); \ - } \ + bool cl::has_interface (Grob *me) \ + { \ + return me->internal_has_interface (interface_symbol_); \ + } \ + void cl ## _init_ifaces () \ + { \ + cl::interface_symbol_ = add_interface (#cl, b, c); \ + } \ ADD_SCM_INIT_FUNC (cl ## ifaces, cl ## _init_ifaces); SCM add_interface (char const *cxx_name, - char const *descr, - char const *vars); + char const *descr, + char const *vars); SCM ly_add_interface (SCM, SCM, SCM); void internal_add_interface (SCM, SCM, SCM); diff --git a/lily/include/grob.hh b/lily/include/grob.hh index eda94b6d58..fd55dbf209 100644 --- a/lily/include/grob.hh +++ b/lily/include/grob.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,8 +29,8 @@ class Grob { private: DECLARE_SMOBS (Grob); - DECLARE_CLASSNAME(Grob); - + DECLARE_CLASSNAME (Grob); + void init (); protected: @@ -43,13 +43,13 @@ protected: SCM immutable_property_alist_; SCM mutable_property_alist_; SCM object_alist_; - + /* If this is a property, it accounts for 25% of the property lookups. */ SCM interfaces_; - + void substitute_object_links (SCM, SCM); Real get_offset (Axis a) const; SCM try_callback (SCM, SCM); @@ -57,7 +57,7 @@ protected: void internal_set_value_on_alist (SCM *alist, SCM sym, SCM val); public: - + /* friends */ friend class Spanner; friend class System; @@ -75,7 +75,7 @@ public: Grob *original () const { return original_; } SCM interfaces () const { return interfaces_; } - /* life & death */ + /* life & death */ Grob (SCM basic_props); Grob (Grob const &); virtual Grob *clone () const; @@ -97,14 +97,13 @@ public: SCM internal_get_object (SCM symbol) const; void internal_set_object (SCM sym, SCM val); void internal_del_property (SCM symbol); - void instrumented_set_property (SCM, SCM, char const*, int, char const*); + void instrumented_set_property (SCM, SCM, char const *, int, char const *); void internal_set_property (SCM sym, SCM val); - /* messages */ + /* messages */ void warning (string) const; void programming_error (string) const; - /* class hierarchy */ virtual System *get_system () const; static System *get_system (Grob *); @@ -121,7 +120,7 @@ public: /* interfaces */ bool internal_has_interface (SCM intf); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); /* offsets */ void translate_axis (Real, Axis); @@ -141,6 +140,14 @@ public: Grob *get_parent (Axis a) const; void fixup_refpoint (); + /* vertical ordering */ + static Grob *get_root_vertical_alignment (Grob *g); + static Grob *get_vertical_axis_group (Grob *g); + static bool vertical_less (Grob *g1, Grob *g2); + static bool pure_vertical_less (Grob *g1, Grob *g2); + static bool internal_vertical_less (Grob *g1, Grob *g2, bool pure); + static int get_vertical_axis_group_index (Grob *g); + virtual Interval_t spanned_rank_interval () const; virtual bool pure_is_visible (int start, int end) const; bool check_cross_staff (Grob *common); @@ -154,10 +161,10 @@ Item *unsmob_item (SCM); /* refpoints */ Grob *common_refpoint_of_list (SCM elt_list, Grob *, Axis a); -Grob *common_refpoint_of_array (vector const &, Grob *, Axis a); +Grob *common_refpoint_of_array (vector const &, Grob *, Axis a); System *get_root_system (Grob *me); -/* extents */ +/* extents */ Interval robust_relative_extent (Grob *, Grob *, Axis); /* offset/extent callbacks. */ diff --git a/lily/include/group-interface.hh b/lily/include/group-interface.hh index 48ddac33a8..c40d615299 100644 --- a/lily/include/group-interface.hh +++ b/lily/include/group-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/hairpin.hh b/lily/include/hairpin.hh index 9e636f6e8c..db072f48db 100644 --- a/lily/include/hairpin.hh +++ b/lily/include/hairpin.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,9 +26,11 @@ struct Hairpin { public: + static Real span_bar_correction (Spanner *me); DECLARE_SCHEME_CALLBACK (print, (SCM)); + DECLARE_SCHEME_CALLBACK (broken_bound_padding, (SCM)); DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // HAIRPIN_HH diff --git a/lily/include/hara-kiri-group-spanner.hh b/lily/include/hara-kiri-group-spanner.hh index 294415577b..e0cbac3c9c 100644 --- a/lily/include/hara-kiri-group-spanner.hh +++ b/lily/include/hara-kiri-group-spanner.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ public: DECLARE_SCHEME_CALLBACK (pure_height, (SCM smob, SCM start, SCM end)); DECLARE_SCHEME_CALLBACK (force_hara_kiri_in_y_parent_callback, (SCM)); DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static bool request_suicide (Grob *me, int start, int end); static bool request_suicide_alone (Grob *me, int start, int end); static void consider_suicide (Grob *me); diff --git a/lily/include/horizontal-bracket.hh b/lily/include/horizontal-bracket.hh index 3d140ae839..4226d7c553 100644 --- a/lily/include/horizontal-bracket.hh +++ b/lily/include/horizontal-bracket.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,9 +29,9 @@ struct Horizontal_bracket DECLARE_SCHEME_CALLBACK (print, (SCM)); static Stencil make_bracket (Grob *, Real, Axis, Direction); static Stencil make_enclosing_bracket (Grob *me, Grob *refpoint, - vector grobs, - Axis a, Direction dir); - DECLARE_GROB_INTERFACE(); + vector grobs, + Axis a, Direction dir); + DECLARE_GROB_INTERFACE (); }; #endif /* HORIZONTAL_BRACKET_HH */ diff --git a/lily/include/includable-lexer.hh b/lily/include/includable-lexer.hh index a7ca04ca24..c9595f923b 100644 --- a/lily/include/includable-lexer.hh +++ b/lily/include/includable-lexer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,9 +40,8 @@ class Includable_lexer : public yyFlexLexer protected: bool close_input (); - vector include_stack_; + vector include_stack_; vector char_count_stack_; - vector pending_string_includes_; public: @@ -55,10 +54,9 @@ public: Source_file *get_source_file () const; virtual void new_input (string s, Sources *); - + void new_input (string name, string data, Sources *); - void add_string_include (string data); - + char const *here_str0 () const; }; diff --git a/lily/include/input.hh b/lily/include/input.hh index b8dc7384ca..2ae9f093ee 100644 --- a/lily/include/input.hh +++ b/lily/include/input.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,11 +36,12 @@ public: char const *end () const; void set (Source_file *, char const *, char const *); - void warning (string) const; + void error (string) const; void programming_error (string) const; void non_fatal_error (string) const; - void error (string) const; + void warning (string) const; void message (string) const; + void debug_output (string) const; void set_spot (Input const &); void step_forward (); void set_location (Input const &, Input const &); @@ -60,9 +61,11 @@ public: Input (Input const &i); Input (); +protected: + string message_location () const; + string message_string (string msg) const; }; - #include "smobs.hh" SCM make_input (Input spot); diff --git a/lily/include/interval-minefield.hh b/lily/include/interval-minefield.hh new file mode 100644 index 0000000000..b618b94720 --- /dev/null +++ b/lily/include/interval-minefield.hh @@ -0,0 +1,42 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + Jan Nieuwenhuizen + + 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 . +*/ + +#ifndef INTERVAL_MINEFIELD_HH +#define INTERVAL_MINEFIELD_HH + +#include "lily-proto.hh" +#include "std-vector.hh" +#include "interval.hh" + +class Interval_minefield +{ +public: + Interval_minefield (Interval, Real); + void add_forbidden_interval (Interval forbidden); + Interval feasible_placements (); + void solve (); + +private: + vector forbidden_intervals_; + Interval feasible_placements_; + Real bulk_; +}; + +#endif // INTERVAL_MINEFIELD_HH diff --git a/lily/include/item.hh b/lily/include/item.hh index d3478245dd..c67b160636 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,7 +31,7 @@ class Item : public Grob { Drul_array broken_to_drul_; - DECLARE_CLASSNAME(Item); + DECLARE_CLASSNAME (Item); public: Item (SCM); Item (Item const &); @@ -39,7 +39,8 @@ public: virtual Grob *clone () const; static bool is_non_musical (Grob *); - static bool break_visible(Grob *); + static bool break_visible (Grob *); + bool is_broken () const; virtual bool pure_is_visible (int start, int end) const; @@ -52,7 +53,8 @@ public: virtual void handle_prebroken_dependencies (); virtual Interval_t spanned_rank_interval () const; virtual Interval pure_height (Grob *ref, int start, int end); - DECLARE_GROB_INTERFACE(); + virtual void cache_pure_height (Interval height); + DECLARE_GROB_INTERFACE (); protected: virtual void discretionary_processing (); void copy_breakable_items (); diff --git a/lily/include/keyword.hh b/lily/include/keyword.hh index 56173de258..26cc606b89 100644 --- a/lily/include/keyword.hh +++ b/lily/include/keyword.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/least-squares.hh b/lily/include/least-squares.hh index 368e33dba8..0f258bf893 100644 --- a/lily/include/least-squares.hh +++ b/lily/include/least-squares.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/ligature-engraver.hh b/lily/include/ligature-engraver.hh index 4a2da856c2..afb349980f 100644 --- a/lily/include/ligature-engraver.hh +++ b/lily/include/ligature-engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,7 +36,7 @@ protected: void process_music (); virtual Spanner *create_ligature_spanner () = 0; virtual void typeset_ligature (Spanner *ligature, - vector primitives) = 0; + vector primitives) = 0; virtual Spanner *current_ligature (); SCM brew_ligature_primitive_proc; diff --git a/lily/include/lily-guile-macros.hh b/lily/include/lily-guile-macros.hh index ba2c955248..c0df658498 100644 --- a/lily/include/lily-guile-macros.hh +++ b/lily/include/lily-guile-macros.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,7 +51,8 @@ inline SCM scm_or_str2symbol (char const *c) { return scm_from_locale_symbol (c); } inline SCM -scm_or_str2symbol (SCM s) { +scm_or_str2symbol (SCM s) +{ assert (scm_is_symbol (s)); return s; } @@ -61,19 +62,19 @@ scm_or_str2symbol (SCM s) { variable per ly_symbol2scm() use, and one boolean evaluation for every call. */ -#define ly_symbol2scm(x) \ - ({ \ - static SCM cached; \ - /* We store this one locally, since G++ -O2 fucks up else */ \ - SCM value = cached; \ - if (__builtin_constant_p ((x))) \ - { \ - if (!cached) \ - value = cached = scm_gc_protect_object (scm_or_str2symbol (x)); \ - } \ - else \ - value = scm_or_str2symbol (x); \ - value; \ +#define ly_symbol2scm(x) \ + ({ \ + static SCM cached; \ + /* We store this one locally, since G++ -O2 fucks up else */ \ + SCM value = cached; \ + if (__builtin_constant_p ((x))) \ + { \ + if (!cached) \ + value = cached = scm_gc_protect_object (scm_or_str2symbol (x)); \ + } \ + else \ + value = scm_or_str2symbol (x); \ + value; \ }) #else inline SCM ly_symbol2scm (char const *x) { return scm_from_locale_symbol ((x)); } @@ -86,45 +87,45 @@ inline SCM ly_symbol2scm (char const *x) { return scm_from_locale_symbol ((x)); exports list of the module. */ -#define ly_lily_module_constant(x) \ - ({ \ - static SCM cached; \ - /* We store this one locally, since G++ -O2 fucks up else */ \ - SCM value = cached; \ - if (__builtin_constant_p ((x))) \ - { \ - if (!cached) \ - value = cached = scm_eval (scm_from_locale_symbol (x), \ - global_lily_module); \ - } \ - else \ - value = scm_eval (scm_from_locale_symbol (x), global_lily_module); \ - value; \ +#define ly_lily_module_constant(x) \ + ({ \ + static SCM cached; \ + /* We store this one locally, since G++ -O2 fucks up else */ \ + SCM value = cached; \ + if (__builtin_constant_p ((x))) \ + { \ + if (!cached) \ + value = cached = scm_eval (scm_from_locale_symbol (x), \ + global_lily_module); \ + } \ + else \ + value = scm_eval (scm_from_locale_symbol (x), global_lily_module); \ + value; \ }) /* Adds the NAME as a Scheme function, and a variable to store the SCM version of the function in the static variable NAME_proc */ -#define DECLARE_SCHEME_CALLBACK(NAME, ARGS) \ - static SCM NAME ARGS; \ +#define DECLARE_SCHEME_CALLBACK(NAME, ARGS) \ + static SCM NAME ARGS; \ static SCM NAME ## _proc #define ADD_TYPE_PREDICATE(func, type_name) \ void \ - func ## _type_adder () \ + func ## _type_adder () \ {\ - ly_add_type_predicate ((Type_predicate_ptr)func, type_name); \ + ly_add_type_predicate ((Type_predicate_ptr)func, type_name); \ }\ ADD_SCM_INIT_FUNC(func ## _type_adder_ctor, \ - func ## _type_adder); + func ## _type_adder); #define ADD_TYPE_PREDICATE(func, type_name) \ void \ - func ## _type_adder () \ + func ## _type_adder () \ {\ - ly_add_type_predicate ((Type_predicate_ptr)func, type_name); \ + ly_add_type_predicate ((Type_predicate_ptr)func, type_name); \ }\ ADD_SCM_INIT_FUNC(func ## _type_adder_ctor, \ - func ## _type_adder); + func ## _type_adder); string mangle_cxx_identifier (string); @@ -135,72 +136,72 @@ string predicate_to_typename (void *ptr); Make TYPE::FUNC available as a Scheme function. */ #define MAKE_SCHEME_CALLBACK_WITH_OPTARGS(TYPE, FUNC, ARGCOUNT, OPTIONAL_COUNT, DOC) \ - SCM TYPE ::FUNC ## _proc; \ - void \ - TYPE ## _ ## FUNC ## _init_functions () \ - { \ + SCM TYPE ::FUNC ## _proc; \ + void \ + TYPE ## _ ## FUNC ## _init_functions () \ + { \ string cxx = string (#TYPE) + "::" + string (#FUNC); \ string id = mangle_cxx_identifier (cxx); \ - TYPE ::FUNC ## _proc = scm_c_define_gsubr (id.c_str(), \ - (ARGCOUNT-OPTIONAL_COUNT), OPTIONAL_COUNT, 0, \ - (scm_t_subr) TYPE::FUNC); \ + TYPE ::FUNC ## _proc = scm_c_define_gsubr (id.c_str(), \ + (ARGCOUNT-OPTIONAL_COUNT), OPTIONAL_COUNT, 0, \ + (scm_t_subr) TYPE::FUNC); \ ly_add_function_documentation (TYPE :: FUNC ## _proc, id.c_str(), "", \ - DOC); \ - scm_c_export (id.c_str (), NULL); \ - } \ - \ - ADD_SCM_INIT_FUNC (TYPE ## _ ## FUNC ## _callback, \ - TYPE ## _ ## FUNC ## _init_functions); - -#define MAKE_DOCUMENTED_SCHEME_CALLBACK(TYPE, FUNC, ARGCOUNT, DOC) \ + DOC); \ + scm_c_export (id.c_str (), NULL); \ + } \ + \ + ADD_SCM_INIT_FUNC (TYPE ## _ ## FUNC ## _callback, \ + TYPE ## _ ## FUNC ## _init_functions); + +#define MAKE_DOCUMENTED_SCHEME_CALLBACK(TYPE, FUNC, ARGCOUNT, DOC) \ MAKE_SCHEME_CALLBACK_WITH_OPTARGS(TYPE, FUNC, ARGCOUNT, 0, DOC); -#define MAKE_SCHEME_CALLBACK(TYPE, FUNC, ARGCOUNT) \ +#define MAKE_SCHEME_CALLBACK(TYPE, FUNC, ARGCOUNT) \ MAKE_SCHEME_CALLBACK_WITH_OPTARGS(TYPE,FUNC,ARGCOUNT, 0, ""); void ly_add_function_documentation (SCM proc, string fname, string varlist, string doc); void ly_check_name (string cxx, string fname); -#define ADD_SCM_INIT_FUNC(name, func) \ - class name ## _scm_initter \ - { \ - public: \ - name ## _scm_initter () \ - { \ - add_scm_init_func (func); \ - } \ - } \ +#define ADD_SCM_INIT_FUNC(name, func) \ + class name ## _scm_initter \ + { \ + public: \ + name ## _scm_initter () \ + { \ + add_scm_init_func (func); \ + } \ + } \ _ ## name ## _scm_initter; /* end define */ #define LY_DEFINE_WITHOUT_DECL(INITPREFIX, FNAME, PRIMNAME, REQ, OPT, VAR, \ - ARGLIST, DOCSTRING) \ - SCM FNAME ## _proc; \ - void \ - INITPREFIX ## init () \ - { \ - FNAME ## _proc = scm_c_define_gsubr (PRIMNAME, REQ, OPT, VAR, \ - (scm_t_subr) FNAME); \ + ARGLIST, DOCSTRING) \ + SCM FNAME ## _proc; \ + void \ + INITPREFIX ## init () \ + { \ + FNAME ## _proc = scm_c_define_gsubr (PRIMNAME, REQ, OPT, VAR, \ + (scm_t_subr) FNAME); \ ly_check_name (#FNAME, PRIMNAME);\ - ly_add_function_documentation (FNAME ## _proc, PRIMNAME, #ARGLIST, \ - DOCSTRING); \ - scm_c_export (PRIMNAME, NULL); \ - } \ + ly_add_function_documentation (FNAME ## _proc, PRIMNAME, #ARGLIST, \ + DOCSTRING); \ + scm_c_export (PRIMNAME, NULL); \ + } \ ADD_SCM_INIT_FUNC (INITPREFIX ## init_unique_prefix, INITPREFIX ## init); \ - SCM \ + SCM \ FNAME ARGLIST -#define LY_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ - SCM FNAME ARGLIST; \ +#define LY_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ + SCM FNAME ARGLIST; \ LY_DEFINE_WITHOUT_DECL (FNAME, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, \ - DOCSTRING) + DOCSTRING) #define LY_DEFINE_MEMBER_FUNCTION(CLASS, FNAME, PRIMNAME, REQ, OPT, VAR, \ - ARGLIST, DOCSTRING) \ - SCM FNAME ARGLIST; \ + ARGLIST, DOCSTRING) \ + SCM FNAME ARGLIST; \ LY_DEFINE_WITHOUT_DECL (CLASS ## FNAME, CLASS::FNAME, PRIMNAME, REQ, OPT, \ - VAR, ARGLIST, DOCSTRING) + VAR, ARGLIST, DOCSTRING) #define get_property(x) internal_get_property (ly_symbol2scm (x)) #define get_pure_property(x,y,z) \ @@ -222,20 +223,16 @@ void ly_check_name (string cxx, string fname); #define set_property(x, y) internal_set_property (ly_symbol2scm (x), y) #endif - - -#define LY_ASSERT_TYPE(pred, var, number) \ - { \ +#define LY_ASSERT_TYPE(pred, var, number) \ + { \ if (!pred (var)) \ - { \ - scm_wrong_type_arg_msg(mangle_cxx_identifier (__FUNCTION__).c_str(), \ - number, var, \ - predicate_to_typename ((void*) &pred).c_str()); \ - } \ + { \ + scm_wrong_type_arg_msg(mangle_cxx_identifier (__FUNCTION__).c_str(), \ + number, var, \ + predicate_to_typename ((void*) &pred).c_str()); \ + } \ } #define LY_ASSERT_SMOB(klass, var, number) LY_ASSERT_TYPE(klass::unsmob, var, number) - - #endif /* LILY_GUILE_MACROS_HH */ diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 3fefd5dc3c..f2b8f08ba1 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,13 +31,14 @@ Hack for various MacOS incarnations. */ #ifndef GUILE_ELLIPSIS -#define GUILE_ELLIPSIS +#define GUILE_ELLIPSIS #endif #include "guile-compatibility.hh" #include "interval.hh" #include "lily-guile-macros.hh" #include "ly-module.hh" +#include "std-vector.hh" /** Conversion functions follow the GUILE naming convention, i.e. A ly_B2A (B b); */ @@ -54,6 +55,7 @@ string gulp_file_to_string (string fn, bool must_exist, int size); SCM ly_string2scm (string const &s); string ly_scm2string (SCM s); string ly_symbol2string (SCM); +string robust_symbol2string (SCM, string); Rational ly_scm2rational (SCM); SCM ly_rational2scm (Rational); SCM ly_offset2scm (Offset); @@ -70,6 +72,7 @@ char *ly_scm2str0 (SCM str); Real robust_scm2double (SCM, double); int robust_scm2int (SCM, int); +vsize robust_scm2vsize (SCM, vsize); Direction robust_scm2dir (SCM, Direction); Drul_array robust_scm2drul (SCM, Drul_array); Drul_array robust_scm2booldrul (SCM, Drul_array); @@ -77,8 +80,9 @@ Interval robust_scm2interval (SCM, Drul_array); Offset robust_scm2offset (SCM, Offset); string robust_scm2string (SCM, string); Rational robust_scm2rational (SCM, Rational); +vector ly_scm2floatvector (SCM); +SCM ly_floatvector2scm (vector v); - SCM ly_quote_scm (SCM s); bool type_check_assignment (SCM val, SCM sym, SCM type_symbol); string print_scm_val (SCM val); @@ -93,13 +97,13 @@ SCM ly_hash2alist (SCM tab); SCM ly_hash_table_keys (SCM tab); SCM ly_assoc_prepend_x (SCM alist, SCM key, SCM val); -inline bool ly_is_fraction (SCM x) { return SCM_FRACTIONP(x) || scm_is_integer (x); } - -inline bool ly_is_list (SCM x) { return SCM_NFALSEP (scm_list_p (x)); } + +inline bool ly_is_list (SCM x) { return scm_is_true (scm_list_p (x)); } inline bool ly_cheap_is_list (SCM x) { return scm_is_pair (x) || x == SCM_EOL; } -inline bool ly_is_procedure (SCM x) { return SCM_NFALSEP (scm_procedure_p (x)); } -inline bool ly_is_port (SCM x) { return SCM_NFALSEP (scm_port_p (x)); } +inline bool ly_is_procedure (SCM x) { return scm_is_true (scm_procedure_p (x)); } +inline bool ly_is_port (SCM x) { return scm_is_true (scm_port_p (x)); } +bool ly_is_rational (SCM); /* want to take the address of this function; scm_is_symbol() is a macro. @@ -108,12 +112,12 @@ inline bool ly_is_symbol (SCM x) { return scm_is_symbol (x); } inline bool ly_is_equal (SCM x, SCM y) { - return SCM_NFALSEP (scm_equal_p (x, y)); + return scm_is_true (scm_equal_p (x, y)); } -inline bool ly_scm2bool (SCM x) { return SCM_NFALSEP (x); } +inline bool ly_scm2bool (SCM x) { return scm_is_true (x); } inline char ly_scm2char (SCM x) { return (char)SCM_CHAR (x); } -inline SCM ly_bool2scm (bool x) { return SCM_BOOL (x); } +inline SCM ly_bool2scm (bool x) { return scm_from_bool (x); } inline SCM ly_append2 (SCM x1, SCM x2) { @@ -166,7 +170,7 @@ SCM ly_output_formats (); /* snarfing. */ -void add_scm_init_func (void (*) ()); +void add_scm_init_func (void ( *) ()); extern "C" { typedef SCM (*Scheme_function_unknown) (GUILE_ELLIPSIS); @@ -184,7 +188,6 @@ typedef SCM (*Scheme_function_2) (GUILE_ELLIPSIS); typedef SCM (*Scheme_function_3) (GUILE_ELLIPSIS); #endif - /* Inline these for performance reasons. */ @@ -199,22 +202,19 @@ inline SCM ly_car (SCM x) { return SCM_CAR (x); } inline SCM ly_cdr (SCM x) { return SCM_CDR (x); } inline bool ly_is_pair (SCM x) { return SCM_I_CONSP (x); } - - -#include "std-vector.hh" +#include "std-vector.hh" template SCM -ly_cxx_vector_to_list (vector const &src) +ly_cxx_vector_to_list (vector const &src) { SCM l = SCM_EOL; - for (vsize i = src.size (); i --; ) + for (vsize i = src.size (); i--;) l = scm_cons (src[i]->self_scm (), l); return l; } - SCM ly_offsets2scm (vector os); vector ly_scm2offsets (SCM s); diff --git a/lily/include/lily-lexer.hh b/lily/include/lily-lexer.hh index 4f5f92d4e1..caa3b4b44b 100644 --- a/lily/include/lily-lexer.hh +++ b/lily/include/lily-lexer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,25 +25,12 @@ #include "input.hh" #include "duration.hh" #include "pitch.hh" +#include "parser.hh" bool busy_parsing (); void kill_lexer (); void set_lexer (); -struct Chord_repetition -{ - Chord_repetition () - { - last_chord_ = SCM_EOL; - repetition_function_ = SCM_EOL; - repetition_symbol_ = SCM_EOL; - } - - SCM repetition_symbol_; - SCM repetition_function_; - SCM last_chord_; -}; - class Lily_lexer : public Includable_lexer { DECLARE_SMOBS (Lily_lexer); @@ -53,35 +40,37 @@ private: int scan_bare_word (string); SCM scan_markup_word (string); int scan_escaped_word (string); + int scan_scm_id (SCM); int identifier_type (SCM); char escaped_char (char) const; + const char *YYText_utf8 (); Lily_parser *parser_; Keyword_table *keytable_; SCM scopes_; SCM start_module_; int hidden_state_; + SCM eval_scm (SCM, char extra_token = 0); public: - vector extra_token_types_; - void *lexval_; + SCM eval_scm_token (SCM sval) { return eval_scm (sval, '#'); } + SCM extra_tokens_; + YYSTYPE *lexval_; Input *lexloc_; bool is_main_input_; - + Sources *sources_; /* Scheme hash tables with (oct name acc) values, and symbol keys. */ SCM chordmodifier_tab_; SCM pitchname_tab_stack_; - Chord_repetition chord_repetition_; - int error_level_; Input last_input_; Lily_lexer (Sources *, Lily_parser *); Lily_lexer (Lily_lexer const &, Lily_parser *); int yylex (); - + void add_lexed_char (int); void prepare_for_next_token (); @@ -98,18 +87,20 @@ public: virtual void new_input (string s, Sources *); virtual void new_input (string s, string d, Sources *); + bool top_input () { return include_stack_.size () < 2; } SCM keyword_list () const; SCM lookup_identifier (string s); SCM lookup_identifier_symbol (SCM s); - void push_extra_token (int token_type); - void push_chord_state (SCM tab); + void push_extra_token (int token_type, SCM scm = SCM_UNDEFINED); + void push_chord_state (SCM alist); void push_figuredbass_state (); void push_lyric_state (); void push_initial_state (); void push_markup_state (); - void push_note_state (SCM tab); + void push_note_state (SCM alist); void pop_state (); void LexerError (char const *); + void LexerWarning (char const *); void set_identifier (SCM path, SCM val); int get_state () const; bool is_note_state () const; diff --git a/lily/include/lily-parser.hh b/lily/include/lily-parser.hh index fe58940460..2e065ff31d 100644 --- a/lily/include/lily-parser.hh +++ b/lily/include/lily-parser.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,14 +33,11 @@ class Lily_parser { DECLARE_SMOBS (Lily_parser); - friend int yyparse (void *); - - vector define_spots_; char const *here_str0 () const; Simultaneous_music *get_chord (Pitch tonic, - vector *adds, vector *subs, - Pitch *inversion, Pitch *bass, Duration d); + vector *adds, vector *subs, + Pitch *inversion, Pitch *bass, Duration d); void set_chord_tremolo (int type); void set_last_duration (Duration const *); void set_last_pitch (Pitch const *); @@ -50,13 +47,14 @@ public: Sources *sources_; Duration default_duration_; string output_basename_; + SCM closures_; int fatal_error_; int error_level_; bool ignore_version_b_; Lily_parser (Sources *sources); - Lily_parser (Lily_parser const &); + Lily_parser (Lily_parser const &, SCM closures = SCM_EOL); DECLARE_SCHEME_CALLBACK (layout_description, ()); @@ -66,11 +64,14 @@ public: void include_string (string ly_code); void parse_file (string init, string name, string out_name); void parse_string (string ly_code); + SCM parse_string_expression (string ly_code, string filename, int line); void parser_error (string); void parser_error (Input const &, string); + // The following is called as yyerror + static void parser_error (Input const *i, Lily_parser *parser, string s); void set_yydebug (bool); - SCM make_scope () const; + SCM make_scope () const; }; DECLARE_UNSMOB (Lily_parser, lily_parser); diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 5cde918e3f..9ecb1b44aa 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -151,6 +151,7 @@ class Property_iterator; class Rational; class Relative_octave_music; class Repeated_music; +class Rhythmic_music_iterator; class Scale; class Scheme_hash_table; class Scheme_engraver; @@ -199,7 +200,7 @@ class Transposed_music; class yyFlexLexer; typedef void (*Engraver_void_function_engraver_grob_info) (Engraver *, - Grob_info); + Grob_info); typedef void (*Translator_void_method_ptr) (Translator *); #endif /* LILY_PROTO_HH */ diff --git a/lily/include/lily-version.hh b/lily/include/lily-version.hh index e2bca68b8a..1db84e4de4 100644 --- a/lily/include/lily-version.hh +++ b/lily/include/lily-version.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Jan Nieuwenhuizen + Copyright (C) 1999--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/lilypond-version.hh b/lily/include/lilypond-version.hh index a832beb7c3..952b19b8e1 100644 --- a/lily/include/lilypond-version.hh +++ b/lily/include/lilypond-version.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/line-interface.hh b/lily/include/line-interface.hh index 1888062132..e4e267c7cc 100644 --- a/lily/include/line-interface.hh +++ b/lily/include/line-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,20 +26,20 @@ struct Line_interface { static Stencil line (Grob *me, Offset from, Offset to); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Stencil make_zigzag_line (Grob *me, - Offset from, - Offset to); + Offset from, + Offset to); static Stencil make_trill_line (Grob *me, - Offset from, - Offset to); + Offset from, + Offset to); static Stencil make_dashed_line (Real th, Offset from, Offset to, Real, Real); static Stencil make_line (Real th, Offset from, Offset to); static Stencil make_arrow (Offset beg, Offset end, Real thick, - Real length, Real width); + Real length, Real width); static Stencil arrows (Grob *me, Offset from, Offset to, - bool from_arrow, - bool to_arrow); + bool from_arrow, + bool to_arrow); }; #endif /* LINE_INTERFACE_HH */ diff --git a/lily/include/listener.hh b/lily/include/listener.hh index ed7aced9c9..e0827f8786 100644 --- a/lily/include/listener.hh +++ b/lily/include/listener.hh @@ -27,7 +27,7 @@ register a method as an event handler in a dispatcher, then you must: - - declare the method using the DECLARE_LISTENER macro. + - declare the method using the DECLARE_LISTENER macro. class Foo { DECLARE_LISTENER (method); @@ -53,7 +53,7 @@ Stream_distributor *d = (...); Listener l = GET_LISTENER (foo->method); d->register_listener (l, "EventClass"); - + Whenever d hears a stream-event ev of class "EventClass", the implemented procedure is called. @@ -63,12 +63,15 @@ #include "smobs.hh" -typedef struct { +typedef struct +{ void (*listen_callback) (void *, SCM); void (*mark_callback) (void *); + bool (*equal_callback) (void *, void *); } Listener_function_table; -class Listener { +class Listener +{ void *target_; Listener_function_table *type_; public: @@ -79,40 +82,50 @@ public: void listen (SCM ev) const; bool operator == (Listener const &other) const - { return target_ == other.target_ && type_ == other.type_; } + { + return type_ == other.type_ + && (*type_->equal_callback) ((void *) target_, (void *) other.target_); + } DECLARE_SIMPLE_SMOBS (Listener); }; DECLARE_UNSMOB (Listener, listener); -#define IMPLEMENT_LISTENER(cl, method) \ -void \ -cl :: method ## _callback (void *self, SCM ev) \ -{ \ - cl *s = (cl *)self; \ - s->method (ev); \ -} \ -void \ -cl :: method ## _mark (void *self) \ -{ \ - cl *s = (cl *)self; \ - scm_gc_mark (s->self_scm ()); \ -} \ -Listener \ -cl :: method ## _listener () const \ -{ \ - static Listener_function_table callbacks; \ - callbacks.listen_callback = &cl::method ## _callback; \ - callbacks.mark_callback = &cl::method ## _mark; \ - return Listener (this, &callbacks); \ +#define IMPLEMENT_LISTENER(cl, method) \ +void \ +cl :: method ## _callback (void *self, SCM ev) \ +{ \ + cl *s = (cl *)self; \ + s->method (ev); \ +} \ +void \ +cl :: method ## _mark (void *self) \ +{ \ + cl *s = (cl *)self; \ + scm_gc_mark (s->self_scm ()); \ +} \ +bool \ +cl :: method ## _is_equal (void *a, void *b) \ +{ \ + return a == b; \ +} \ +Listener \ +cl :: method ## _listener () const \ +{ \ + static Listener_function_table callbacks; \ + callbacks.listen_callback = &cl::method ## _callback; \ + callbacks.mark_callback = &cl::method ## _mark; \ + callbacks.equal_callback = &cl::method ## _is_equal; \ + return Listener (this, &callbacks); \ } #define GET_LISTENER(proc) proc ## _listener () -#define DECLARE_LISTENER(name) \ - inline void name (SCM); \ - static void name ## _callback (void *self, SCM ev); \ - static void name ## _mark (void *self); \ +#define DECLARE_LISTENER(name) \ + inline void name (SCM); \ + static void name ## _callback (void *self, SCM ev); \ + static void name ## _mark (void *self); \ + static bool name ## _is_equal (void *a, void *b); \ Listener name ## _listener () const #endif /* LISTENER_HH */ diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index d7157cf3c7..f95a7e2a40 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -26,12 +26,12 @@ struct Lookup { - static Stencil dot (Offset p, Real radius); static Stencil bracket (Axis a, Interval iv, Real thick, Real protrude, Real blot); + static Stencil circle (Real rad, Real thick, bool filled); static Stencil rotated_box (Real slope, Real width, Real thick, Real blot); static Stencil round_filled_polygon (vector const &points, Real blotdiameter); static Stencil frame (Box b, Real thick, Real blot); - static Stencil slur (Bezier controls, Real cthick, Real thick, + static Stencil slur (Bezier controls, Real cthick, Real thick, SCM dash_definition); static Stencil bezier_sandwich (Bezier top_curve, Bezier bottom_curve, Real thickness); diff --git a/lily/include/ly-module.hh b/lily/include/ly-module.hh index f4483ed2d9..daa99ab6b6 100644 --- a/lily/include/ly-module.hh +++ b/lily/include/ly-module.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,6 +39,5 @@ typedef SCM (*scm_t_hash_fold_fn) (GUILE_ELLIPSIS); typedef SCM (*scm_t_hash_handle_fn) (GUILE_ELLIPSIS); #endif - #endif /* LY_MODULE_HH */ diff --git a/lily/include/ly-smobs.icc b/lily/include/ly-smobs.icc index 1cb9e32590..db642e253d 100644 --- a/lily/include/ly-smobs.icc +++ b/lily/include/ly-smobs.icc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,116 +23,116 @@ #include "lily-guile-macros.hh" #include "smobs.hh" -#define IMPLEMENT_TYPE_P(CL, FUNCNAME) \ - SCM CL ## _type_p_proc; \ - void init_type_ ## CL () \ - { \ - SCM subr = scm_c_define_gsubr (FUNCNAME, 1, 0, 0, \ - (scm_t_subr) CL::smob_p); \ - CL ## _type_p_proc = subr; \ - ly_add_function_documentation (subr, FUNCNAME, "(SCM x)", \ - "Is @var{x} a @code{" #CL "} object?"); \ - scm_c_export (FUNCNAME, NULL); \ - } \ +#define IMPLEMENT_TYPE_P(CL, FUNCNAME) \ + SCM CL ## _type_p_proc; \ + void init_type_ ## CL () \ + { \ + SCM subr = scm_c_define_gsubr (FUNCNAME, 1, 0, 0, \ + (scm_t_subr) CL::smob_p); \ + CL ## _type_p_proc = subr; \ + ly_add_function_documentation (subr, FUNCNAME, "(SCM x)", \ + "Is @var{x} a @code{" #CL "} object?"); \ + scm_c_export (FUNCNAME, NULL); \ + } \ ADD_SCM_INIT_FUNC (init_type_ ## CL, init_type_ ## CL) -#define IMPLEMENT_BASE_SMOBS(CL) \ +#define IMPLEMENT_BASE_SMOBS(CL) \ void \ - CL ## _type_adder () \ + CL ## _type_adder () \ {\ - ly_add_type_predicate ((void*) &CL::unsmob, #CL); \ + ly_add_type_predicate ((void*) &CL::unsmob, #CL); \ }\ ADD_SCM_INIT_FUNC(CL ## _type_adder_ctor, \ - CL ## _type_adder);\ - const char *CL::smob_name_ = #CL; \ - scm_t_bits CL::smob_tag_; \ - SCM \ - CL::smob_p (SCM s) \ - { \ - if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_) \ - return SCM_BOOL_T; \ - else \ - return SCM_BOOL_F; \ - \ - } \ - \ - void \ - CL::init_smobs () \ - { \ - smob_tag_ = scm_make_smob_type (#CL, 0); \ - scm_set_smob_mark (smob_tag_, CL::mark_smob); \ - scm_set_smob_free (smob_tag_, CL::free_smob); \ - scm_set_smob_print (smob_tag_, CL::print_smob); \ - scm_set_smob_equalp (smob_tag_, CL::equal_p); \ - } \ - \ - size_t \ - CL::free_smob (SCM ses) \ - { \ - CL *s = (CL *) SCM_CELL_WORD_1 (ses); \ - delete s; \ + CL ## _type_adder);\ + const char *CL::smob_name_ = #CL; \ + scm_t_bits CL::smob_tag_; \ + SCM \ + CL::smob_p (SCM s) \ + { \ + if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_) \ + return SCM_BOOL_T; \ + else \ + return SCM_BOOL_F; \ + \ + } \ + \ + void \ + CL::init_smobs () \ + { \ + smob_tag_ = scm_make_smob_type (#CL, 0); \ + scm_set_smob_mark (smob_tag_, CL::mark_smob); \ + scm_set_smob_free (smob_tag_, CL::free_smob); \ + scm_set_smob_print (smob_tag_, CL::print_smob); \ + scm_set_smob_equalp (smob_tag_, CL::equal_p); \ + } \ + \ + size_t \ + CL::free_smob (SCM ses) \ + { \ + CL *s = (CL *) SCM_CELL_WORD_1 (ses); \ + delete s; \ /* scm_gc_unregister_collectable_memory (s, sizeof (CL), #CL " smob"); */ \ - return SMOB_FREE_RETURN_VAL (CL); \ - } \ - \ + return SMOB_FREE_RETURN_VAL (CL); \ + } \ + \ ADD_SCM_INIT_FUNC (CL, CL::init_smobs) -#define IMPLEMENT_SIMPLE_SMOBS(CL) \ - IMPLEMENT_BASE_SMOBS (CL); \ - SCM CL::smobbed_copy () const \ - { \ - CL *ptr = new CL (*this); \ - SCM s; \ - s = scm_cons (SCM_PACK (CL::smob_tag_), SCM_PACK (ptr)); \ +#define IMPLEMENT_SIMPLE_SMOBS(CL) \ + IMPLEMENT_BASE_SMOBS (CL); \ + SCM CL::smobbed_copy () const \ + { \ + CL *ptr = new CL (*this); \ + SCM s; \ + s = scm_cons (SCM_PACK (CL::smob_tag_), SCM_PACK (ptr)); \ scm_gc_register_collectable_memory ((CL *)this, sizeof (CL), #CL " smob"); \ - \ - return s; \ + \ + return s; \ } -#define IMPLEMENT_SMOBS(CL) \ - IMPLEMENT_BASE_SMOBS (CL) \ - void \ - CL::smobify_self () \ - { \ - protection_cons_ = SCM_EOL; \ - self_scm_ = unprotected_smobify_self (); \ - protect (); \ - } \ - void \ - CL::protect () \ - { \ - protect_smob (self_scm_, &protection_cons_); \ - } \ - SCM \ - CL::unprotect () \ - { \ - unprotect_smob (self_scm_, &protection_cons_); \ - return self_scm_; \ - } \ - SCM \ - CL::unprotected_smobify_self () \ - { \ - /* \ - This is local. We don't assign to self_scm_ directly, to assure \ - that S isn't GC-ed from under us. \ - \ +#define IMPLEMENT_SMOBS(CL) \ + IMPLEMENT_BASE_SMOBS (CL) \ + void \ + CL::smobify_self () \ + { \ + protection_cons_ = SCM_EOL; \ + self_scm_ = unprotected_smobify_self (); \ + protect (); \ + } \ + void \ + CL::protect () \ + { \ + protect_smob (self_scm_, &protection_cons_); \ + } \ + SCM \ + CL::unprotect () \ + { \ + unprotect_smob (self_scm_, &protection_cons_); \ + return self_scm_; \ + } \ + SCM \ + CL::unprotected_smobify_self () \ + { \ + /* \ + This is local. We don't assign to self_scm_ directly, to assure \ + that S isn't GC-ed from under us. \ + \ We don't use smobbed_self () to ensure that mark_smob () doesn't \ have to deal half-initialized objects: scm_done_malloc ( ) might \ trigger GC.the warning in smobs.hh is just to be doubleplus \ goodly sure \ - */ \ - SCM s; \ - SCM_NEWSMOB (s, CL::smob_tag_, this); \ - self_scm_ = s; \ + */ \ + SCM s; \ + SCM_NEWSMOB (s, CL::smob_tag_, this); \ + self_scm_ = s; \ scm_gc_register_collectable_memory (this, sizeof (CL), #CL " smob"); \ - return s; \ + return s; \ } -#define IMPLEMENT_DEFAULT_EQUAL_P(CL) \ - SCM \ - CL::equal_p (SCM a, SCM b) \ - { \ - return a == b ? SCM_BOOL_T : SCM_BOOL_F; \ +#define IMPLEMENT_DEFAULT_EQUAL_P(CL) \ + SCM \ + CL::equal_p (SCM a, SCM b) \ + { \ + return a == b ? SCM_BOOL_T : SCM_BOOL_F; \ } #endif /* LY_SMOBS_ICC */ diff --git a/lily/include/lyric-extender.hh b/lily/include/lyric-extender.hh index 94709ae72c..1fda9f8657 100644 --- a/lily/include/lyric-extender.hh +++ b/lily/include/lyric-extender.hh @@ -2,7 +2,7 @@ /* extender-spanner.hh -- part of GNU LilyPond - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen */ #ifndef EXTENDER_SPANNER_HH @@ -27,7 +27,7 @@ class Lyric_extender { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (print, (SCM)); }; diff --git a/lily/include/lyric-hyphen.hh b/lily/include/lyric-hyphen.hh index 4617832282..f455a8a64f 100644 --- a/lily/include/lyric-hyphen.hh +++ b/lily/include/lyric-hyphen.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Glen Prideaux + Copyright (C) 1999--2012 Glen Prideaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ struct Lyric_hyphen { public: DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (print, (SCM)); }; diff --git a/lily/include/main.hh b/lily/include/main.hh index 7fa0905c83..e9113b4e08 100644 --- a/lily/include/main.hh +++ b/lily/include/main.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,9 +42,7 @@ extern vector start_environment_global; extern string output_backend_global; extern string output_name_global; extern bool be_safe_global; -extern bool be_verbose_global; extern bool do_internal_type_checking_global; -extern bool point_and_click_global; extern string lilypond_datadir; extern bool use_object_keys; extern bool strict_infinity_checking; @@ -62,7 +60,6 @@ extern int exit_status_global; extern File_path global_path; extern const char *LILYPOND_DATADIR; - /* Debugging options: switch on diff --git a/lily/include/measure-grouping-spanner.hh b/lily/include/measure-grouping-spanner.hh index 0748770e6f..76c0817db8 100644 --- a/lily/include/measure-grouping-spanner.hh +++ b/lily/include/measure-grouping-spanner.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,13 +23,12 @@ #include "grob-interface.hh" #include "lily-proto.hh" - class Measure_grouping { public: DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* MEASURE_GROUPING_SPANNER_HH */ diff --git a/lily/include/melody-spanner.hh b/lily/include/melody-spanner.hh index bcfab163e5..7a441b31a9 100644 --- a/lily/include/melody-spanner.hh +++ b/lily/include/melody-spanner.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,9 +26,9 @@ class Melody_spanner { public: - DECLARE_GROB_INTERFACE(); - static void add_stem (Grob*, Grob*); - DECLARE_SCHEME_CALLBACK(calc_neutral_stem_direction, (SCM)); + DECLARE_GROB_INTERFACE (); + static void add_stem (Grob *, Grob *); + DECLARE_SCHEME_CALLBACK (calc_neutral_stem_direction, (SCM)); }; #endif /* MELODY_SPANNER_HH */ diff --git a/lily/include/mensural-ligature.hh b/lily/include/mensural-ligature.hh index cb676e5916..900a046b15 100644 --- a/lily/include/mensural-ligature.hh +++ b/lily/include/mensural-ligature.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter , + Copyright (C) 2002--2012 Juergen Reuter , Pal Benko LilyPond is free software: you can redistribute it and/or modify @@ -24,7 +24,6 @@ #include "lily-proto.hh" #include "grob-interface.hh" - /* * These are all possible mensural ligature primitives. */ @@ -46,7 +45,7 @@ struct Mensural_ligature { DECLARE_SCHEME_CALLBACK (brew_ligature_primitive, (SCM)); DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* MENSURAL_LIGATURE_HH */ diff --git a/lily/include/midi-chunk.hh b/lily/include/midi-chunk.hh index c567e904f1..d73b6af790 100644 --- a/lily/include/midi-chunk.hh +++ b/lily/include/midi-chunk.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys + Copyright (C) 2007--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ #include "virtual-methods.hh" #include "std-vector.hh" - /** timed MIDI event */ @@ -38,9 +37,6 @@ public: string to_string () const; }; - - - /** variable sized MIDI data */ @@ -73,7 +69,7 @@ public: int port_; DECLARE_CLASSNAME (Midi_track); - vector events_; + vector events_; Midi_track (int number, bool port); ~Midi_track (); diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh index cc59ed0abe..c5a9cc9fdd 100644 --- a/lily/include/midi-item.hh +++ b/lily/include/midi-item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ #include "std-vector.hh" string int2midi_varint_string (int i); - + /** Any piece of midi information. @@ -40,7 +40,6 @@ public: static Midi_item *get_midi (Audio_item *a); - virtual string to_string () const = 0; }; @@ -61,7 +60,6 @@ public: Real seconds_; }; - /** Change instrument event */ @@ -111,7 +109,6 @@ public: Audio_note *audio_; - static int const c0_pitch_ = 60; Byte dynamic_byte_; }; @@ -132,10 +129,10 @@ class Midi_text : public Midi_item { public: enum Type - { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; + { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + MARKER, CUE_POINT + }; DECLARE_CLASSNAME (Midi_text); Midi_text (Audio_text *); diff --git a/lily/include/midi-stream.hh b/lily/include/midi-stream.hh index de719d2991..ee1534da07 100644 --- a/lily/include/midi-stream.hh +++ b/lily/include/midi-stream.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/midi-walker.hh b/lily/include/midi-walker.hh index 3d99b34021..ea76a02a6d 100644 --- a/lily/include/midi-walker.hh +++ b/lily/include/midi-walker.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -43,7 +43,7 @@ public: ~Midi_walker (); void process (); - void operator ++ (int); + void operator ++(int); bool ok () const; void finalize (); @@ -51,16 +51,16 @@ private: void do_start_note (Midi_note *note); void do_stop_notes (int); void output_event (int, Midi_item *l); - Midi_item *get_midi (Audio_item*); + Midi_item *get_midi (Audio_item *); Midi_track *track_; bool percussion_; bool merge_unisons_; vsize index_; - vector items_; + vector items_; PQueue stop_note_queue; int last_tick_; - vector midi_events_; + vector midi_events_; }; #endif // MIDI_WALKER_HH diff --git a/lily/include/mingw-compatibility.hh b/lily/include/mingw-compatibility.hh index 3fa2a69d04..7c0ffc481b 100644 --- a/lily/include/mingw-compatibility.hh +++ b/lily/include/mingw-compatibility.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Jan Nieuwenhuizen + Copyright (C) 2005--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/minimal-page-breaking.hh b/lily/include/minimal-page-breaking.hh index 84207b0e14..22589a420e 100644 --- a/lily/include/minimal-page-breaking.hh +++ b/lily/include/minimal-page-breaking.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Nicolas Sceaux + Copyright (C) 2007--2012 Nicolas Sceaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/misc.hh b/lily/include/misc.hh index f36e7cecc6..b70d2c2ce2 100644 --- a/lily/include/misc.hh +++ b/lily/include/misc.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,7 +42,7 @@ sign (int i) inline int shift_left (int value, int shiftamount) { - if (shiftamount < 0) return (value >> -shiftamount); + if (shiftamount < 0) return (value >> -shiftamount); else return (value << shiftamount); } @@ -50,15 +50,20 @@ inline Real linear_interpolate (Real x, Real x1, Real x2, Real y1, Real y2) { return (x2 - x) / (x2 - x1) * y1 - + (x - x1) / (x2 - x1) * y2; + + (x - x1) / (x2 - x1) * y2; +} + +inline Real +normalize (Real x, Real x1, Real x2) +{ + return (x - x1) / (x2 - x1); } Real directed_round (Real f, Direction d); -Real peak_around (Real epsilon, Real threshold, Real x); +Real peak_around (Real epsilon, Real threshold, Real x); Real convex_amplifier (Real standard_x, Real increase_factor, Real x); string camel_case_to_lisp_identifier (string in); -vsize utf8_char_len (char); #endif diff --git a/lily/include/modified-font-metric.hh b/lily/include/modified-font-metric.hh index 04af68b6e7..cd5cd6116f 100644 --- a/lily/include/modified-font-metric.hh +++ b/lily/include/modified-font-metric.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/moment.hh b/lily/include/moment.hh index 6a3922066e..2aede3ce52 100644 --- a/lily/include/moment.hh +++ b/lily/include/moment.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,9 +64,9 @@ public: IMPLEMENT_ARITHMETIC_OPERATOR (Moment, +); IMPLEMENT_ARITHMETIC_OPERATOR (Moment, -); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, /); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / ); IMPLEMENT_ARITHMETIC_OPERATOR (Moment, *); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, %); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, % ); DECLARE_UNSMOB (Moment, moment); int compare (Moment const &, Moment const &); diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh index 7c07b3c8dc..55943c4b44 100644 --- a/lily/include/multi-measure-rest.hh +++ b/lily/include/multi-measure-rest.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Multi_measure_rest { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (percent, (SCM)); static void add_column (Grob *, Item *); @@ -34,7 +34,6 @@ public: DECLARE_SCHEME_CALLBACK (set_text_rods, (SCM)); DECLARE_SCHEME_CALLBACK (centered_stencil, (SCM)); - static void calculate_spacing_rods (Grob *me, Real length); static Stencil big_rest (Grob *, Real); static Stencil symbol_stencil (Grob *, Real); diff --git a/lily/include/music-function.hh b/lily/include/music-function.hh index 986337b39c..d257b136b8 100644 --- a/lily/include/music-function.hh +++ b/lily/include/music-function.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,6 +26,7 @@ SCM ly_make_music_function (SCM, SCM); SCM make_music_function (SCM, SCM); SCM get_music_function_transform (SCM); +SCM get_music_function_signature (SCM); bool is_music_function (SCM); #endif /* MUSIC_FUNCTION_HH */ diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index 863f87f31b..a34e300903 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,7 +64,7 @@ protected: Moment music_length_; Moment start_mom_; - DECLARE_CLASSNAME(Music_iterator); + DECLARE_CLASSNAME (Music_iterator); DECLARE_SMOBS (Music_iterator); Music_iterator (Music_iterator const &); @@ -102,15 +102,15 @@ private: bool is_child_context (Context *me, Context *child); -#define IMPLEMENT_CTOR_CALLBACK(Class) \ +#define IMPLEMENT_CTOR_CALLBACK(Class) \ LY_DEFINE_MEMBER_FUNCTION (Class, constructor, \ - mangle_cxx_identifier (string (#Class) + "::constructor").c_str(), \ - 0, 0, 0, \ - (), \ - "") \ - { \ - Class *c = (new Class); \ - return c->unprotect (); \ + mangle_cxx_identifier (string (#Class) + "::constructor").c_str(), \ + 0, 0, 0, \ + (), \ + "") \ + { \ + Class *c = (new Class); \ + return c->unprotect (); \ } DECLARE_UNSMOB (Music_iterator, iterator); diff --git a/lily/include/music-output.hh b/lily/include/music-output.hh index 27c6c423a8..cda3118be4 100644 --- a/lily/include/music-output.hh +++ b/lily/include/music-output.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ class Music_output { DECLARE_SMOBS (Music_output); - DECLARE_CLASSNAME(Music_output); + DECLARE_CLASSNAME (Music_output); protected: Music_output (); diff --git a/lily/include/music-sequence.hh b/lily/include/music-sequence.hh index 711209ca1f..590b48b22d 100644 --- a/lily/include/music-sequence.hh +++ b/lily/include/music-sequence.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,11 +29,11 @@ struct Music_sequence public: DECLARE_SCHEME_CALLBACK (cumulative_length_callback, (SCM)); DECLARE_SCHEME_CALLBACK (maximum_length_callback, (SCM)); + DECLARE_SCHEME_CALLBACK (event_chord_length_callback, (SCM)); DECLARE_SCHEME_CALLBACK (minimum_start_callback, (SCM)); DECLARE_SCHEME_CALLBACK (first_start_callback, (SCM)); DECLARE_SCHEME_CALLBACK (simultaneous_relative_callback, (SCM, SCM)); DECLARE_SCHEME_CALLBACK (event_chord_relative_callback, (SCM, SCM)); - DECLARE_SCHEME_CALLBACK (repeated_chord_relative_callback, (SCM, SCM)); Pitch do_relative_octave (Pitch p, bool b); diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh index 82a069574e..a306226724 100644 --- a/lily/include/music-wrapper-iterator.hh +++ b/lily/include/music-wrapper-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ class Music_wrapper_iterator : public Music_iterator public: DECLARE_SCHEME_CALLBACK (constructor, ()); Music_wrapper_iterator (); - DECLARE_CLASSNAME(Music_wrapper_iterator); + DECLARE_CLASSNAME (Music_wrapper_iterator); virtual void derived_substitute (Context *f, Context *t); virtual void derived_mark () const; diff --git a/lily/include/music-wrapper.hh b/lily/include/music-wrapper.hh index 1017afd627..b295075ec3 100644 --- a/lily/include/music-wrapper.hh +++ b/lily/include/music-wrapper.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/music.hh b/lily/include/music.hh index e3fdb3f83d..b0f4837104 100644 --- a/lily/include/music.hh +++ b/lily/include/music.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ #include "moment.hh" #include "pitch.hh" #include "prob.hh" +#include "context.hh" #define is_mus_type(x) internal_is_music_type (ly_symbol2scm (x)) @@ -39,7 +40,7 @@ public: bool internal_is_music_type (SCM) const; - Stream_event *to_event () const; + Stream_event *to_event (Context *) const; DECLARE_SCHEME_CALLBACK (relative_callback, (SCM, SCM)); Pitch to_relative_octave (Pitch); @@ -53,12 +54,12 @@ public: /// Scale the music in time by #factor#. void compress (Moment factor); - + // Broadcast the event in a context's event-source. void send_to_context (Context *c); DECLARE_SCHEME_CALLBACK (duration_length_callback, (SCM)); - + protected: virtual SCM copy_mutable_properties () const; virtual void type_check_assignment (SCM, SCM) const; diff --git a/lily/include/note-collision.hh b/lily/include/note-collision.hh index b2464067c8..ae0f3271b0 100644 --- a/lily/include/note-collision.hh +++ b/lily/include/note-collision.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ #include "grob-interface.hh" #include "lily-proto.hh" - /** Resolve conflicts between various Note_columns (chords). @@ -38,12 +37,12 @@ class Note_collision_interface { public: - static SCM automatic_shift (Grob *, Drul_array >); + static SCM automatic_shift (Grob *, Drul_array >); static SCM forced_shift (Grob *); - static Drul_array > get_clash_groups (Grob *me); + static Drul_array > get_clash_groups (Grob *me); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM smob)); static void add_column (Grob *me, Grob *ncol); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // COLLISION_HH diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh index d2138e9fcd..280a5c969f 100644 --- a/lily/include/note-column.hh +++ b/lily/include/note-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include "grob-interface.hh" #include "lily-proto.hh" - /** a struct for treating a group of noteheads (noteheads, stem (chord) and scripts) as a single entity. @@ -44,9 +43,10 @@ public: static bool has_rests (Grob *me); static Grob *dot_column (Grob *me); static Interval cross_staff_extent (Grob *me, Grob *refp); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Item *get_stem (Grob *); + static Item *get_flag (Grob *); }; #endif // NOTE_COLUMN_HH diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh index a7faff9305..532933b84b 100644 --- a/lily/include/note-head.hh +++ b/lily/include/note-head.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include "stencil.hh" #include "grob-interface.hh" - class Note_head { public: @@ -32,7 +31,7 @@ public: DECLARE_SCHEME_CALLBACK (stem_x_shift, (SCM)); DECLARE_SCHEME_CALLBACK (calc_stem_attachment, (SCM)); DECLARE_SCHEME_CALLBACK (include_ledger_line_height, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Real stem_attachment_coordinate (Grob *, Axis a); static int get_balltype (Grob *); diff --git a/lily/include/note-spacing.hh b/lily/include/note-spacing.hh index d5465b639f..9b8a4fd922 100644 --- a/lily/include/note-spacing.hh +++ b/lily/include/note-spacing.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,11 +27,11 @@ class Note_spacing { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Spring get_spacing (Grob *me, Item *, Real, Real); static void stem_dir_correction (Grob *me, Item *next_col, Real incr, - Real *, Real *); + Real *, Real *); }; #endif /* NOTE_SPACING_HH */ diff --git a/lily/include/one-line-page-breaking.hh b/lily/include/one-line-page-breaking.hh new file mode 100644 index 0000000000..12ea58a610 --- /dev/null +++ b/lily/include/one-line-page-breaking.hh @@ -0,0 +1,35 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2012 Joe Neeman + + 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 . +*/ + +#ifndef ONE_LINE_PAGE_BREAKING_HH +#define ONE_LINE_PAGE_BREAKING_HH + +#include "page-breaking.hh" +#include "page-spacing.hh" + +class One_line_page_breaking: public Page_breaking +{ +public: + virtual SCM solve (); + + One_line_page_breaking (Paper_book *pb); + virtual ~One_line_page_breaking (); +}; + +#endif /* ONE_LINE_PAGE_BREAKING_HH */ diff --git a/lily/include/open-type-font.hh b/lily/include/open-type-font.hh index 486606fd95..6ee62823ec 100644 --- a/lily/include/open-type-font.hh +++ b/lily/include/open-type-font.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,12 +20,11 @@ #ifndef OPEN_TYPE_FONT_HH #define OPEN_TYPE_FONT_HH - #include "font-metric.hh" Index_to_charcode_map make_index_to_charcode_map (FT_Face face); -void get_unicode_name (char*s, FT_ULong code); -void get_glyph_index_name (char*s, FT_ULong code); +void get_unicode_name (char *s, FT_ULong code); +void get_glyph_index_name (char *s, FT_ULong code); class Open_type_font : public Font_metric { @@ -40,13 +39,13 @@ class Open_type_font : public Font_metric Index_to_charcode_map index_to_charcode_map_; Open_type_font (FT_Face); - DECLARE_CLASSNAME(Open_type_font); + DECLARE_CLASSNAME (Open_type_font); public: SCM get_subfonts () const; SCM get_global_table () const; SCM get_char_table () const; SCM glyph_list () const; - + string get_otf_table (string tag) const; static SCM make_otf (string); string font_name () const; @@ -65,5 +64,4 @@ public: string get_otf_table (FT_Face face, string tag); FT_Face open_ft_face (string str, FT_Long idx); - #endif /* OPEN_TYPE_FONT_HH */ diff --git a/lily/include/optimal-page-breaking.hh b/lily/include/optimal-page-breaking.hh index 1bfd8d5b1b..0e6a71d0d4 100644 --- a/lily/include/optimal-page-breaking.hh +++ b/lily/include/optimal-page-breaking.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/output-def.hh b/lily/include/output-def.hh index 531bd12543..3f44061513 100644 --- a/lily/include/output-def.hh +++ b/lily/include/output-def.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/page-breaking.hh b/lily/include/page-breaking.hh index 17f64d754b..c84a56e679 100644 --- a/lily/include/page-breaking.hh +++ b/lily/include/page-breaking.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,23 +53,23 @@ struct Break_position { /* index into system_specs_, if this is VPOS, the Break_position represents the - start of the book. + start of the book. */ vsize system_spec_index_; /* if system_spec_index_ indexes a score, then we start at the score_brk_'th possible page-break in the score */ - vsize score_break_; + vsize score_break_; /* if system_spec_index_ indexes a score, this points to the broken column */ - Grob *col_; + Grob *col_; bool score_ender_; /* if non-zero, this is the (fixed, uncompressed) number of lines between this Break_position and the previous. */ int forced_line_count_; - Break_position (vsize s=VPOS, vsize brk=VPOS, Grob *g=NULL, bool end=false) + Break_position (vsize s = VPOS, vsize brk = VPOS, Grob *g = NULL, bool end = false) { system_spec_index_ = s; score_break_ = brk; @@ -81,18 +81,18 @@ struct Break_position /* lexicographic in (system_spec_index_, score_break_) */ - bool operator< (const Break_position &other) + bool operator < (const Break_position &other) { return (system_spec_index_ == VPOS && other.system_spec_index_ != VPOS) - || (system_spec_index_ < other.system_spec_index_) - || (system_spec_index_ == other.system_spec_index_ && score_break_ < other.score_break_); + || (system_spec_index_ < other.system_spec_index_) + || (system_spec_index_ == other.system_spec_index_ && score_break_ < other.score_break_); } - bool operator<= (const Break_position &other) + bool operator <= (const Break_position &other) { return (system_spec_index_ == VPOS) - || (system_spec_index_ < other.system_spec_index_ && other.system_spec_index_ != VPOS) - || (system_spec_index_ == other.system_spec_index_ && score_break_ <= other.score_break_); + || (system_spec_index_ < other.system_spec_index_ && other.system_spec_index_ != VPOS) + || (system_spec_index_ == other.system_spec_index_ && score_break_ <= other.score_break_); } }; @@ -102,7 +102,7 @@ public: typedef bool (*Break_predicate) (Grob *); typedef bool (*Prob_break_predicate) (Prob *); typedef vector Line_division; - + /* TODO: naming. @@ -126,13 +126,15 @@ public: vsize system_count () const; Real footnote_separator_stencil_height () const; Real footnote_padding () const; + Real in_note_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; bool too_many_lines (int line_count) const; bool too_few_lines (int line_count) const; - Real min_whitespace_at_top_of_page (Line_details const&) const; - Real min_whitespace_at_bottom_of_page (Line_details const&) const; + Real min_whitespace_at_top_of_page (Line_details const &) const; + Real min_whitespace_at_bottom_of_page (Line_details const &) const; int orphan_penalty () const; protected: @@ -145,31 +147,30 @@ protected: vsize min_system_count (vsize start, vsize end); vsize max_system_count (vsize start, vsize end); - void break_into_pieces (vsize start, vsize end, Line_division const &div); SCM systems (); SCM footnotes (); void set_current_breakpoints (vsize start, - vsize end, - vsize system_count, - Line_division lower_bound = Line_division (), - Line_division upper_bound = Line_division ()); + vsize end, + vsize system_count, + Line_division lower_bound = Line_division (), + Line_division upper_bound = Line_division ()); void set_to_ideal_line_configuration (vsize start, vsize end); vsize current_configuration_count () const; Line_division current_configuration (vsize configuration_index) const; Page_spacing_result space_systems_on_n_pages (vsize configuration_index, - vsize n, vsize first_page_num); + vsize n, vsize first_page_num); Page_spacing_result space_systems_on_n_or_one_more_pages (vsize configuration_index, vsize n, - vsize first_page_num, - Real penalty_for_fewer_pages); + vsize first_page_num, + Real penalty_for_fewer_pages); Page_spacing_result space_systems_on_best_pages (vsize configuration_index, - vsize first_page_num); + vsize first_page_num); Page_spacing_result space_systems_with_fixed_number_per_page (vsize configuration_index, - vsize first_page_num); + vsize first_page_num); Page_spacing_result pack_systems_on_least_pages (vsize configuration_index, - vsize first_page_num); + vsize first_page_num); vsize min_page_count (vsize configuration_index, vsize first_page_num); bool all_lines_stretched (vsize configuration_index); Real blank_page_penalty () const; @@ -177,10 +178,11 @@ protected: SCM breakpoint_property (vsize breakpoint, char const *str); vsize last_break_position () const; + + vector system_specs_; private: vector breaks_; vector chunks_; - vector system_specs_; vector line_breaking_; bool ragged_; bool ragged_last_; @@ -190,6 +192,8 @@ private: vsize system_count_; Real footnote_separator_stencil_height_; Real footnote_padding_; + Real in_note_padding_; + Real footnote_number_raise_; Real footnote_footer_padding_; int orphan_penalty_; @@ -212,15 +216,15 @@ private: vector chunk_list (vsize start, vsize end); Line_division system_count_bounds (vector const &chunks, bool min); void line_breaker_args (vsize i, - Break_position const &start, - Break_position const &end, - vsize *line_breaker_start, - vsize *line_breaker_end); + Break_position const &start, + Break_position const &end, + vsize *line_breaker_start, + vsize *line_breaker_end); void line_divisions_rec (vsize system_count, - Line_division const &min, - Line_division const &max, - Line_division *cur); + Line_division const &min, + Line_division const &max, + Line_division *cur); vector line_details (vsize start, vsize end, Line_division const &div); Page_spacing_result space_systems_on_1_page (vector const &lines, Real page_height, bool ragged); diff --git a/lily/include/page-layout-problem.hh b/lily/include/page-layout-problem.hh index ff6fcece22..b7d63a2e13 100644 --- a/lily/include/page-layout-problem.hh +++ b/lily/include/page-layout-problem.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2009--2011 Joe Neeman + Copyright (C) 2009--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,49 +22,58 @@ #include "simple-spacer.hh" #include "skyline.hh" +#include "stencil.hh" class Page_layout_problem { public: - Page_layout_problem (Paper_book*, SCM page, SCM systems); + Page_layout_problem (Paper_book *, SCM page, SCM systems); SCM solution (bool ragged); + SCM fixed_force_solution (Real force); void set_header_height (Real); void set_footer_height (Real); - static bool read_spacing_spec (SCM spec, Real* dest, SCM sym); + Real force () const; + 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 Stencil* get_footnote_separator_stencil (Output_def *paper); + static vector get_footnote_grobs (SCM lines); + static vsize get_footnote_count (SCM lines); + static SCM get_footnotes_from_lines (SCM lines); + static void add_footnotes_to_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); - static void add_footnotes_to_footer (SCM footnotes, Stencil *foot, Paper_book *pb); + static Stencil add_footnotes_to_footer (SCM footnotes, Stencil foot, Paper_book *pb); protected: - void append_system (System*, Spring const&, Real indent, Real padding); - void append_prob (Prob*, Spring const&, Real padding); + void append_system (System *, Spring const &, Real indent, Real padding); + void append_prob (Prob *, Spring const &, Real padding); - void solve_rod_spring_problem (bool ragged); + void solve_rod_spring_problem (bool ragged, Real fixed_force); SCM find_system_offsets (); - void distribute_loose_lines (vector const&, vector const&, Real, Real); + void distribute_loose_lines (vector const &, vector const &, Real, Real); - static void build_system_skyline (vector const&, vector const&, Skyline* up, Skyline* down); - static vector filter_dead_elements (vector const&); + static void build_system_skyline (vector const &, vector const &, Skyline *up, Skyline *down); + static vector filter_dead_elements (vector const &); // This is a union (in spirit). // Either staves must be empty or prob must be null. - typedef struct Element { + typedef struct Element + { Prob *prob; - vector staves; + vector staves; vector min_offsets; - // Store the appropriate '*-*-spacing 'padding, - // for spacing any adjacent loose line + // Store the appropriate '*-*-spacing 'padding, and skyline-distance, + // considering indentation, from the previous system. + Real min_distance; Real padding; - Element (vector const& a, vector const& o, Real p) + Element (vector const &a, vector const &o, Real m, Real p) { staves = a; min_offsets = o; + min_distance = m; padding = p; prob = 0; } @@ -76,23 +85,27 @@ protected: } } Element; - static Interval first_staff_extent (Element const&); - static Interval last_staff_extent (Element const&); - static Interval prob_extent (Prob*); - static SCM get_details (Element const&); - static SCM details_get_property (SCM details, const char*); - static void alter_spring_from_spacing_spec (SCM spec, Spring* spring); - static void mark_as_spaceable (Grob*); + static Interval first_staff_extent (Element const &); + static Interval last_staff_extent (Element const &); + static Interval prob_extent (Prob *); + static SCM get_details (Element const &); + static SCM details_get_property (SCM details, const char *); + static void alter_spring_from_spacing_spec (SCM spec, Spring *spring); + static void mark_as_spaceable (Grob *); vector springs_; vector elements_; vector solution_; + Real force_; Skyline bottom_skyline_; + Real bottom_loose_baseline_; Real page_height_; Real header_height_; Real footer_height_; Real header_padding_; Real footer_padding_; + Real in_note_padding_; + Direction in_note_direction_; }; #endif /* PAGE_LAYOUT_HH */ diff --git a/lily/include/page-marker.hh b/lily/include/page-marker.hh index 6c3769828f..b608e080a9 100644 --- a/lily/include/page-marker.hh +++ b/lily/include/page-marker.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Nicolas Sceaux + Copyright (C) 2007--2012 Nicolas Sceaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/page-spacing-result.hh b/lily/include/page-spacing-result.hh index 6d32bc6c2b..e076a52da8 100644 --- a/lily/include/page-spacing-result.hh +++ b/lily/include/page-spacing-result.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys + Copyright (C) 2007--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,13 +27,15 @@ // to represent the system count of several pages simultaneously, // it could be that one page has too many systems while another // has too few. -typedef enum { +typedef enum +{ SYSTEM_COUNT_OK = 0, SYSTEM_COUNT_TOO_MANY = 1, SYSTEM_COUNT_TOO_FEW = 2 } System_count_status; -struct Page_spacing_result { +struct Page_spacing_result +{ vector systems_per_page_; vector force_; Real penalty_; @@ -42,7 +44,7 @@ struct Page_spacing_result { Real average_force () const; vsize page_count () const; - void print () const; + void print () const; Page_spacing_result (); }; diff --git a/lily/include/page-spacing.hh b/lily/include/page-spacing.hh index 206bcbf426..8f524537bd 100644 --- a/lily/include/page-spacing.hh +++ b/lily/include/page-spacing.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,7 +43,6 @@ const Real BAD_SPACING_PENALTY = 1e6; const Real TERRIBLE_SPACING_PENALTY = 1e8; - /* for page_count > 2, we use a dynamic algorithm similar to constrained-breaking -- we have a class that stores the intermediate calculations so they can be reused for querying different page counts. @@ -51,7 +50,7 @@ const Real TERRIBLE_SPACING_PENALTY = 1e8; class Page_spacer { public: - Page_spacer (vector const &lines, vsize first_page_num, Page_breaking const*); + Page_spacer (vector const &lines, vsize first_page_num, Page_breaking const *); Page_spacing_result solve (vsize page_count); Page_spacing_result solve (); diff --git a/lily/include/page-turn-page-breaking.hh b/lily/include/page-turn-page-breaking.hh index 6717e5ba4a..5bb74e801b 100644 --- a/lily/include/page-turn-page-breaking.hh +++ b/lily/include/page-turn-page-breaking.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -63,9 +63,9 @@ protected: vsize total_page_count (Break_node const &b); Break_node put_systems_on_pages (vsize start, - vsize end, - vsize configuration, - vsize page_number); + vsize end, + vsize configuration, + vsize page_number); SCM make_lines (vector *breaks); SCM make_pages (vector const &breaks, SCM systems); diff --git a/lily/include/pango-font.hh b/lily/include/pango-font.hh index 3d435af9ca..6b4ad4b68f 100644 --- a/lily/include/pango-font.hh +++ b/lily/include/pango-font.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,11 +42,11 @@ class Pango_font : public Font_metric public: SCM physical_font_tab () const; Pango_font (PangoFT2FontMap *, - PangoFontDescription const *, - Real); + PangoFontDescription const *, + Real); ~Pango_font (); - string description_string () const; + string description_string () const; SCM font_file_name () const; void register_font_file (string, string, int); @@ -59,10 +59,10 @@ public: PangoFontDescription * symbols_to_pango_font_description (SCM family, - SCM style, - SCM variant, - SCM weight, - SCM stretch); + SCM style, + SCM variant, + SCM weight, + SCM stretch); Font_metric * select_pango_font (Output_def *layout, SCM chain); diff --git a/lily/include/paper-book.hh b/lily/include/paper-book.hh index dd05ee41d2..d00c8bcd9b 100644 --- a/lily/include/paper-book.hh +++ b/lily/include/paper-book.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Jan Nieuwenhuizen + Copyright (C) 2004--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ class Paper_book void add_score_title (SCM); SCM get_score_title (SCM); - + public: SCM header_; SCM header_0_; @@ -59,20 +59,19 @@ public: SCM pages (); SCM get_system_specs (); - Stencil book_title (); Stencil score_title (SCM); - + void classic_output (SCM output_channel); void output (SCM output_channel); protected: void classic_output_aux (SCM output, - int *first_performance_number); - int output_aux (SCM output_channel, - bool is_last, - int *first_page_number, - int *first_performance_number); + long *first_performance_number); + long output_aux (SCM output_channel, + bool is_last, + long *first_page_number, + long *first_performance_number); }; DECLARE_UNSMOB (Paper_book, paper_book) diff --git a/lily/include/paper-column-engraver.hh b/lily/include/paper-column-engraver.hh index 449b26d9a4..3249432b40 100644 --- a/lily/include/paper-column-engraver.hh +++ b/lily/include/paper-column-engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,6 +38,7 @@ protected: void stop_translation_timestep (); void start_translation_timestep (); void process_music (); + void handle_manual_breaks (bool); virtual void initialize (); virtual void finalize (); @@ -49,12 +50,12 @@ protected: DECLARE_ACKNOWLEDGER (staff_spacing); System *system_; - vector break_events_; - vector label_events_; - int breaks_; // used for stat printing + vector break_events_; + vector label_events_; + int breaks_; // used for stat printing Paper_column *command_column_; Paper_column *musical_column_; - vector items_; + vector items_; bool first_; bool made_columns_; Moment last_moment_; diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh index bc2eec12c2..01a84d50df 100644 --- a/lily/include/paper-column.hh +++ b/lily/include/paper-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,10 +39,10 @@ public: virtual System *get_system () const; void set_system (System *); - static int compare (Grob * const &a, - Grob * const &b); + static int compare (Grob *const &a, + Grob *const &b); static bool less_than (Grob *const &a, - Grob *const &b); + Grob *const &b); int get_rank () const { return rank_; } void set_rank (int); @@ -50,7 +50,7 @@ public: DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static int get_rank (Grob const *); static bool is_musical (Grob *); static Moment when_mom (Grob *); diff --git a/lily/include/paper-outputter.hh b/lily/include/paper-outputter.hh index c0cb9f22ef..1ac0a74dfd 100644 --- a/lily/include/paper-outputter.hh +++ b/lily/include/paper-outputter.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/paper-score.hh b/lily/include/paper-score.hh index aec2846232..f980ee154e 100644 --- a/lily/include/paper-score.hh +++ b/lily/include/paper-score.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,13 +31,13 @@ class Paper_score : public Music_output SCM systems_; SCM paper_systems_; - mutable vector cols_; + mutable vector cols_; mutable vector break_indices_; mutable vector break_ranks_; public: Paper_score (Output_def *); - - DECLARE_CLASSNAME(Paper_score); + + DECLARE_CLASSNAME (Paper_score); Output_def *layout () const; System *root_system () const; @@ -46,7 +46,7 @@ public: vector calc_breaking (); vector get_break_indices () const; vector get_break_ranks () const; - vector get_columns () const; + vector get_columns () const; SCM get_paper_systems (); protected: void find_break_indices () const; diff --git a/lily/include/paper-system.hh b/lily/include/paper-system.hh index 1aaa530b8a..5d0688d936 100644 --- a/lily/include/paper-system.hh +++ b/lily/include/paper-system.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Jan Nieuwenhuizen + Copyright (C) 2004--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/parse-scm.hh b/lily/include/parse-scm.hh index 0322502e16..047399a322 100644 --- a/lily/include/parse-scm.hh +++ b/lily/include/parse-scm.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,18 +32,24 @@ struct Parse_start int nchars; Input start_location_; bool safe_; + SCM (*func_) (Parse_start *ps); + SCM form_; Lily_parser *parser_; - Parse_start() { + Parse_start () + { str = 0; nchars = 0; safe_ = false; parser_ = 0; - } + form_ = SCM_UNDEFINED; + func_ = 0; + } }; SCM catch_protected_parse_body (void *); SCM protected_ly_parse_scm (Parse_start *, bool); SCM ly_parse_scm (char const *, int *, Input, bool, Lily_parser *); +SCM ly_eval_scm (SCM, Input, bool, Lily_parser *); #endif /* PARSE_SCM_HH */ diff --git a/lily/include/percent-repeat-item.hh b/lily/include/percent-repeat-item.hh index a9e59e35f5..1c8e0f44b0 100644 --- a/lily/include/percent-repeat-item.hh +++ b/lily/include/percent-repeat-item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Percent_repeat_item_interface { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (beat_slash, (SCM)); DECLARE_SCHEME_CALLBACK (double_percent, (SCM)); static Stencil x_percent (Grob *, int); diff --git a/lily/include/performance.hh b/lily/include/performance.hh index 9612fb8aed..9c3ce3742d 100644 --- a/lily/include/performance.hh +++ b/lily/include/performance.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,9 +27,9 @@ class Performance : public Music_output { public: - Performance (bool ports=false); + Performance (bool ports = false); ~Performance (); - DECLARE_CLASSNAME(Performance); + DECLARE_CLASSNAME (Performance); void add_element (Audio_element *p); virtual void process (); @@ -40,8 +40,8 @@ public: void print () const; void write_output (string filename) const; - vector audio_staffs_; - vector audio_elements_; + vector audio_staffs_; + vector audio_elements_; Output_def *midi_; bool ports_; }; diff --git a/lily/include/performer-group.hh b/lily/include/performer-group.hh index 16cc7d71cc..4316d8bb73 100644 --- a/lily/include/performer-group.hh +++ b/lily/include/performer-group.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -26,7 +26,7 @@ typedef void (Performer:: *Performer_method) (void); -class Performer_group : public virtual Translator_group +class Performer_group : public Translator_group { public: VIRTUAL_COPY_CONSTRUCTOR (Translator_group, Performer_group); diff --git a/lily/include/performer.hh b/lily/include/performer.hh index 686479c6f1..0e6729a81f 100644 --- a/lily/include/performer.hh +++ b/lily/include/performer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify diff --git a/lily/include/pitch-interval.hh b/lily/include/pitch-interval.hh index a6e027f8ba..e067590f52 100644 --- a/lily/include/pitch-interval.hh +++ b/lily/include/pitch-interval.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/pitch.hh b/lily/include/pitch.hh index 1ef59f3e94..d7b36c2eb6 100644 --- a/lily/include/pitch.hh +++ b/lily/include/pitch.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ #include "smobs.hh" #include "rational.hh" - /* A "tonal" pitch. This is a pitch used in diatonal western music (24 quartertones in an octave), as opposed to a frequency in Hz or a @@ -75,8 +74,8 @@ public: DECLARE_SIMPLE_SMOBS (Pitch); }; - -enum { +enum +{ DOUBLE_FLAT = -4, THREE_Q_FLAT, FLAT, @@ -106,5 +105,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 */ diff --git a/lily/include/pointer-group-interface.hh b/lily/include/pointer-group-interface.hh index 4d1a96aede..e265bedc79 100644 --- a/lily/include/pointer-group-interface.hh +++ b/lily/include/pointer-group-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,12 +32,12 @@ public: static void add_grob (Grob *, SCM nm, SCM x); static void add_unordered_grob (Grob *, SCM nm, Grob *); static void set_ordered (Grob *, SCM, bool); - static Grob_array *get_grob_array (Grob*, SCM); - static Grob *find_grob (Grob*, SCM, bool (*pred) (Grob*)); + static Grob_array *get_grob_array (Grob *, SCM); + static Grob *find_grob (Grob *, SCM, bool (*pred) (Grob *)); }; -vector const &internal_extract_grob_array (Grob const *elt, SCM symbol); -vector internal_extract_item_array (Grob const *elt, SCM symbol); +vector const &internal_extract_grob_array (Grob const *elt, SCM symbol); +vector internal_extract_item_array (Grob const *elt, SCM symbol); #define extract_grob_array(x, prop) internal_extract_grob_array (x, ly_symbol2scm (prop)) #define extract_item_array(x, prop) internal_extract_item_array (x, ly_symbol2scm (prop)) @@ -46,9 +46,9 @@ vector internal_extract_item_array (Grob const *elt, SCM symbol); This is dubious coding style, but lets not risk that we change the representation of grob sets again. */ -#define extract_grob_set(grob, prop, set) \ +#define extract_grob_set(grob, prop, set) \ vector const &set (internal_extract_grob_array (grob, ly_symbol2scm (prop))) -#define extract_item_set(grob, prop, set) \ +#define extract_item_set(grob, prop, set) \ vector set (internal_extract_item_array (grob, ly_symbol2scm (prop))) #endif /* POINTER_GROUP_INTERFACE_HH */ diff --git a/lily/include/prob.hh b/lily/include/prob.hh index 5d4a50029f..58d93cae23 100644 --- a/lily/include/prob.hh +++ b/lily/include/prob.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Jan Nieuwenhuizen + Copyright (C) 2004--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include "stencil.hh" #include "virtual-methods.hh" - /* A formatted "system" (A block of titling also is a Property_object) @@ -35,18 +34,18 @@ class Prob { DECLARE_SMOBS (Prob); - DECLARE_CLASSNAME(Prob); + DECLARE_CLASSNAME (Prob); void init_vars (); protected: SCM mutable_property_alist_; SCM immutable_property_alist_; SCM type_; - + virtual void derived_mark () const; virtual SCM copy_mutable_properties () const; - virtual void type_check_assignment (SCM,SCM) const; - + virtual void type_check_assignment (SCM, SCM) const; + public: Prob (SCM, SCM); Prob (Prob const &); @@ -54,15 +53,15 @@ public: SCM type () const { return type_; } SCM get_property_alist (bool _mutable) const; SCM internal_get_property (SCM sym) const; - void instrumented_set_property (SCM, SCM, const char*, int, const char*); + void instrumented_set_property (SCM, SCM, const char *, int, const char *); void internal_set_property (SCM sym, SCM val); }; -DECLARE_UNSMOB(Prob,prob); +DECLARE_UNSMOB (Prob, prob); SCM ly_prob_set_property_x (SCM system, SCM sym, SCM value); SCM ly_prob_property (SCM prob, SCM sym, SCM val); SCM ly_prob_type_p (SCM obj, SCM sym); - + #endif /* PROPERTY_OBJECT_HH */ diff --git a/lily/include/profile.hh b/lily/include/profile.hh index 3a2deab250..6ed139d6a2 100644 --- a/lily/include/profile.hh +++ b/lily/include/profile.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/program-option.hh b/lily/include/program-option.hh index 607a8ecdf8..ae131d3f5d 100644 --- a/lily/include/program-option.hh +++ b/lily/include/program-option.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Jan Nieuwenhuizen + Copyright (C) 2001--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/property-iterator.hh b/lily/include/property-iterator.hh index 8aa0cec11d..08f7a983b8 100644 --- a/lily/include/property-iterator.hh +++ b/lily/include/property-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,8 +29,8 @@ class Property_iterator : public Simple_music_iterator { public: DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM)); - DECLARE_CLASSNAME(Property_iterator); + DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM, SCM)); + DECLARE_CLASSNAME (Property_iterator); protected: virtual void do_quit (); @@ -44,7 +44,7 @@ class Property_unset_iterator : public Simple_music_iterator { public: DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_CLASSNAME(Property_unset_iterator); + DECLARE_CLASSNAME (Property_unset_iterator); protected: virtual void process (Moment); }; @@ -54,7 +54,7 @@ class Push_property_iterator : public Simple_music_iterator public: DECLARE_SCHEME_CALLBACK (constructor, ()); DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM)); - DECLARE_CLASSNAME(Push_property_iterator); + DECLARE_CLASSNAME (Push_property_iterator); protected: virtual void process (Moment); virtual void do_quit (); @@ -64,7 +64,7 @@ class Pop_property_iterator : public Simple_music_iterator { public: DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_CLASSNAME(Pop_property_iterator); + DECLARE_CLASSNAME (Pop_property_iterator); protected: virtual void process (Moment); }; diff --git a/lily/include/protected-scm.hh b/lily/include/protected-scm.hh index b8f9b084c2..ccd0012690 100644 --- a/lily/include/protected-scm.hh +++ b/lily/include/protected-scm.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/span-bar.hh b/lily/include/pure-from-neighbor-interface.hh similarity index 50% rename from lily/include/span-bar.hh rename to lily/include/pure-from-neighbor-interface.hh index 7ebedb4d46..015ea1948b 100644 --- a/lily/include/span-bar.hh +++ b/lily/include/pure-from-neighbor-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 2011--2012 Mike Solomon LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,30 +17,18 @@ along with LilyPond. If not, see . */ -#ifndef SPAN_BAR_HH -#define SPAN_BAR_HH +#ifndef PURE_FROM_NEIGHBOR_INTERFACE_HH +#define PURE_FROM_NEIGHBOR_INTERFACE_HH #include "lily-proto.hh" #include "grob-interface.hh" -/** - This is a barline that is spanned across other bar lines. This is - the implementation of the long barlines that occur in orchestral - score and other multi-staff music. -*/ -class Span_bar +class Pure_from_neighbor_interface { public: + DECLARE_SCHEME_CALLBACK (calc_pure_relevant_grobs, (SCM)); + DECLARE_GROB_INTERFACE (); - DECLARE_GROB_INTERFACE(); - static Interval get_spanned_interval (Grob *); - static void add_bar (Grob *, Grob *); - static void evaluate_glyph (Grob *); - DECLARE_SCHEME_CALLBACK (width, (SCM smob)); - DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_glyph_name, (SCM)); - DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM)); - DECLARE_SCHEME_CALLBACK (center_on_spanned_callback, (SCM element)); }; -#endif // SPAN_BAR_HH +#endif diff --git a/lily/include/relocate.hh b/lily/include/relocate.hh index 796af63660..1a3e8a38d9 100644 --- a/lily/include/relocate.hh +++ b/lily/include/relocate.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/repeated-music.hh b/lily/include/repeated-music.hh index 62368cbc56..35a4aaa6e0 100644 --- a/lily/include/repeated-music.hh +++ b/lily/include/repeated-music.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/rest-collision.hh b/lily/include/rest-collision.hh index a954b6f24b..53c2cda6a0 100644 --- a/lily/include/rest-collision.hh +++ b/lily/include/rest-collision.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ class Rest_collision public: static void add_column (Grob *me, Grob *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM element)); DECLARE_SCHEME_CALLBACK (force_shift_callback_rest, (SCM element, SCM off)); static SCM do_shift (Grob *); diff --git a/lily/include/rest.hh b/lily/include/rest.hh index 053e3960c0..208da0499a 100644 --- a/lily/include/rest.hh +++ b/lily/include/rest.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,10 +29,10 @@ class Rest public: DECLARE_SCHEME_CALLBACK (y_offset_callback, (SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static string glyph_name (Grob *, int, string, bool); - static SCM brew_internal_stencil (Grob*, bool); - static SCM generic_extent_callback (Grob*, Axis); + static SCM brew_internal_stencil (Grob *, bool); + static SCM generic_extent_callback (Grob *, Axis); static void translate (Grob *me, int dy); DECLARE_SCHEME_CALLBACK (polyphonic_offset_callback, (SCM)); DECLARE_SCHEME_CALLBACK (print, (SCM)); diff --git a/lily/include/rhythmic-head.hh b/lily/include/rhythmic-head.hh index 7dbe9fa2e7..0739daad0f 100644 --- a/lily/include/rhythmic-head.hh +++ b/lily/include/rhythmic-head.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ public: static Item *get_dots (Grob *); static int dot_count (Grob *); DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif // RHYTHMIC_HEAD_HH diff --git a/lily/include/rhythmic-music-iterator.hh b/lily/include/rhythmic-music-iterator.hh new file mode 100644 index 0000000000..f639a1c051 --- /dev/null +++ b/lily/include/rhythmic-music-iterator.hh @@ -0,0 +1,44 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2012 Mike Solomon + + 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 . +*/ + +#ifndef RHYTHMIC_MUSIC_ITERATOR_HH +#define RHYTHMIC_MUSIC_ITERATOR_HH + +#include "simple-music-iterator.hh" + +/* + Iterator for rhythmic music events that are not enclosed by EventChord +*/ +class Rhythmic_music_iterator : public Simple_music_iterator +{ +protected: + DECLARE_CLASSNAME (Rhythmic_music_iterator); + +public: + DECLARE_SCHEME_CALLBACK (constructor, ()); + Rhythmic_music_iterator (); + Rhythmic_music_iterator (Rhythmic_music_iterator const &); + +protected: + virtual void process (Moment); + virtual void construct_children (); +}; + +#endif /* RHYTHMIC_MUSIC_ITERATOR_HH */ + diff --git a/lily/include/rod.hh b/lily/include/rod.hh index ae837e1f67..077b8cfc1d 100644 --- a/lily/include/rod.hh +++ b/lily/include/rod.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/scale.hh b/lily/include/scale.hh index 7f6a881762..62d8d553ec 100644 --- a/lily/include/scale.hh +++ b/lily/include/scale.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,8 +27,8 @@ struct Scale { public: - Scale (vector const&); - Scale (Scale const&); + Scale (vector const &); + Scale (Scale const &); Rational tones_at_step (int step, int octave) const; Rational step_size (int step) const; @@ -45,4 +45,3 @@ extern Scale *default_global_scale; #endif /* SCALE_HH */ - diff --git a/lily/include/scheme-engraver.hh b/lily/include/scheme-engraver.hh index 9ae0591bb4..a90252d04a 100644 --- a/lily/include/scheme-engraver.hh +++ b/lily/include/scheme-engraver.hh @@ -1,9 +1,9 @@ -/* +/* scheme-engraver.hh -- declare Scheme_engraver - + source file of the GNU LilyPond music typesetter - - Copyright (c) 2009--2011 Han-Wen Nienhuys + + Copyright (c) 2009--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,8 +16,7 @@ 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 . - + along with LilyPond. If not, see . */ #ifndef SCHEME_ENGRAVER_HH @@ -25,16 +24,17 @@ #include "engraver.hh" -class Scheme_engraver : public Engraver { +class Scheme_engraver : public Engraver +{ public: void init_from_scheme (SCM definition); TRANSLATOR_DECLARATIONS_NO_LISTENER (Scheme_engraver); - + static Listener get_listener (void *generic_arg, SCM event); - + protected: ~Scheme_engraver (); - + void stop_translation_timestep (); void start_translation_timestep (); void process_music (); @@ -54,7 +54,7 @@ private: DECLARE_END_ACKNOWLEDGER (grob); bool must_be_last_; - + SCM acknowledge_grob_function_; SCM stop_translation_timestep_function_; SCM start_translation_timestep_function_; diff --git a/lily/include/scheme-listener.hh b/lily/include/scheme-listener.hh index e7d89d73bc..7905ef9e1d 100644 --- a/lily/include/scheme-listener.hh +++ b/lily/include/scheme-listener.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Erik Sandberg + Copyright (C) 2006--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/scm-hash.hh b/lily/include/scm-hash.hh index 2d21c4787e..c81225913f 100644 --- a/lily/include/scm-hash.hh +++ b/lily/include/scm-hash.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 3be8eb42f1..ffff8c41aa 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Score_engraver : public Engraver_group { System *system_; - vector elems_; + vector elems_; Paper_score *pscore_; void typeset_all (); diff --git a/lily/include/score-performer.hh b/lily/include/score-performer.hh index eba810f59d..8eb67b3f29 100644 --- a/lily/include/score-performer.hh +++ b/lily/include/score-performer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify diff --git a/lily/include/score.hh b/lily/include/score.hh index 24bf2e997c..1b34d40410 100644 --- a/lily/include/score.hh +++ b/lily/include/score.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/script-column.hh b/lily/include/script-column.hh index ea76373e55..4b9a52ad9c 100644 --- a/lily/include/script-column.hh +++ b/lily/include/script-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,8 @@ public: static void add_side_positioned (Grob *, Grob *); DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM)); DECLARE_SCHEME_CALLBACK (row_before_line_breaking, (SCM)); - DECLARE_GROB_INTERFACE(); - static void order_grobs (vector grobs); + DECLARE_GROB_INTERFACE (); + static void order_grobs (vector grobs); }; diff --git a/lily/include/script-interface.hh b/lily/include/script-interface.hh index 4ec00d01df..00e2e6d81f 100644 --- a/lily/include/script-interface.hh +++ b/lily/include/script-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,15 +34,15 @@ public: static Stencil get_stencil (Grob *, Direction d); static Direction get_direction (Grob *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); }; -void make_script_from_event (Grob *p, Context *tg, - SCM type, int index); +void make_script_from_event (Grob *p, Context *tg, + SCM type, int index); #endif /* SCRIPT_INTERFACE_HH */ diff --git a/lily/include/self-alignment-interface.hh b/lily/include/self-alignment-interface.hh index be51ee061a..c3c7e9c878 100644 --- a/lily/include/self-alignment-interface.hh +++ b/lily/include/self-alignment-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,23 +25,27 @@ struct Self_alignment_interface { - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static SCM aligned_on_self (Grob *me, Axis a, bool pure, int start, int end); static SCM centered_on_object (Grob *me, Axis a); static SCM aligned_on_parent (Grob *me, Axis a); + static SCM avoid_colliding_grobs (Grob *me, Axis a, Real offset); static void set_center_parent (Grob *me, Axis a); static void set_align_self (Grob *me, Axis a); - + static void avoid_x_collisions (Grob *me); + DECLARE_SCHEME_CALLBACK (x_aligned_on_self, (SCM element)); DECLARE_SCHEME_CALLBACK (y_aligned_on_self, (SCM element)); DECLARE_SCHEME_CALLBACK (pure_y_aligned_on_self, (SCM element, SCM start, SCM end)); + DECLARE_SCHEME_CALLBACK (centered_on_note_columns, (SCM element)); DECLARE_SCHEME_CALLBACK (centered_on_x_parent, (SCM element)); DECLARE_SCHEME_CALLBACK (centered_on_y_parent, (SCM element)); DECLARE_SCHEME_CALLBACK (x_centered_on_y_parent, (SCM element)); - + DECLARE_SCHEME_CALLBACK (avoid_x_colliding_grobs, (SCM element, SCM offset)); + DECLARE_SCHEME_CALLBACK (x_colliding_grobs, (SCM element)); DECLARE_SCHEME_CALLBACK (aligned_on_x_parent, (SCM element)); DECLARE_SCHEME_CALLBACK (aligned_on_y_parent, (SCM element)); }; diff --git a/lily/include/semi-tie-column.hh b/lily/include/semi-tie-column.hh index 58511cb170..51a3d74388 100644 --- a/lily/include/semi-tie-column.hh +++ b/lily/include/semi-tie-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -26,12 +26,11 @@ struct Semi_tie_column { - DECLARE_GROB_INTERFACE(); - + DECLARE_GROB_INTERFACE (); + DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); DECLARE_SCHEME_CALLBACK (calc_head_direction, (SCM)); }; - #endif /* SEMI_TIE_COLUMN_HH */ diff --git a/lily/include/semi-tie.hh b/lily/include/semi-tie.hh index 8cbb3601d7..a92b89fb4a 100644 --- a/lily/include/semi-tie.hh +++ b/lily/include/semi-tie.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,18 +20,17 @@ #ifndef SEMI_TIE_HH #define SEMI_TIE_HH - #include "grob-interface.hh" #include "lily-proto.hh" struct Semi_tie { - DECLARE_GROB_INTERFACE(); - + DECLARE_GROB_INTERFACE (); + DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); static bool less (Grob *const &s1, - Grob *const &s2); + Grob *const &s2); static int get_position (Grob *); }; diff --git a/lily/include/separation-item.hh b/lily/include/separation-item.hh index 8eb4086f09..392c59ca48 100644 --- a/lily/include/separation-item.hh +++ b/lily/include/separation-item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/sequential-iterator.hh b/lily/include/sequential-iterator.hh index 60bdac96bf..a4fcdb0cc3 100644 --- a/lily/include/sequential-iterator.hh +++ b/lily/include/sequential-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ class Sequential_iterator : public Music_iterator { public: DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_CLASSNAME(Sequential_iterator); + DECLARE_CLASSNAME (Sequential_iterator); Sequential_iterator (); Sequential_iterator (Sequential_iterator const &); virtual void derived_substitute (Context *f, Context *t); @@ -45,10 +45,10 @@ public: protected: virtual void process (Moment); virtual bool run_always () const; - + protected: Music_iterator *iter_; - + virtual SCM get_music_list () const; virtual void next_element (bool side_effect); diff --git a/lily/include/side-position-interface.hh b/lily/include/side-position-interface.hh index 624bff4e89..edb6dc6a7a 100644 --- a/lily/include/side-position-interface.hh +++ b/lily/include/side-position-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,13 +40,15 @@ public: DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM element)); DECLARE_SCHEME_CALLBACK (move_to_extremal_staff, (SCM)); - static SCM aligned_side (Grob*me, Axis a, bool pure, int start, int end, Real *current_off_ptr); + static SCM aligned_side (Grob *me, Axis a, bool pure, int start, int end, Real *current_off_ptr); static SCM general_side_position (Grob *, Axis, bool, bool my_extents, - bool pure, int start, int end, Real *current_off); + bool pure, int start, int end, Real *current_off); + static SCM skyline_side_position (Grob *me, Axis a, bool pure, int start, int end, Real *current_offset); + static Axis get_axis (Grob *); static void set_axis (Grob *, Axis); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static void add_support (Grob *, Grob *); static void add_staff_support (Grob *); }; diff --git a/lily/include/simple-closure.hh b/lily/include/simple-closure.hh index c77985634d..a4587c2a95 100644 --- a/lily/include/simple-closure.hh +++ b/lily/include/simple-closure.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/simple-music-iterator.hh b/lily/include/simple-music-iterator.hh index f046b84689..75a648b6bd 100644 --- a/lily/include/simple-music-iterator.hh +++ b/lily/include/simple-music-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ class Simple_music_iterator : public Music_iterator { protected: - DECLARE_CLASSNAME(Simple_music_iterator); + DECLARE_CLASSNAME (Simple_music_iterator); Moment last_processed_mom_; public: diff --git a/lily/include/simple-spacer.hh b/lily/include/simple-spacer.hh index 895fbcf8d8..675e3baf54 100644 --- a/lily/include/simple-spacer.hh +++ b/lily/include/simple-spacer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,12 +32,13 @@ public: void solve (Real line_len, bool ragged); void add_rod (int l, int r, Real dist); - void add_spring (Spring const&); + void add_spring (Spring const &); Real range_ideal_len (int l, int r) const; Real range_stiffness (int l, int r, bool stretch) const; Real configuration_length (Real) const; vector spring_positions () const; + void set_force (Real force); Real force () const; Real force_penalty (bool ragged) const; bool fits () const; @@ -57,15 +58,15 @@ private: }; /* returns a vector of dimensions breaks.size () * breaks.size () */ -vector get_line_forces (vector const &columns, - Real line_len, - Real indent, - bool ragged); - -Column_x_positions get_line_configuration (vector const &columns, - Real line_len, - Real indent, - bool ragged); +vector get_line_forces (vector const &columns, + Real line_len, + Real indent, + bool ragged); + +Column_x_positions get_line_configuration (vector const &columns, + Real line_len, + Real indent, + bool ragged); #endif /* SIMPLE_SPACER_HH */ diff --git a/lily/include/simultaneous-music-iterator.hh b/lily/include/simultaneous-music-iterator.hh index ff1100fb6d..c8766cd77c 100644 --- a/lily/include/simultaneous-music-iterator.hh +++ b/lily/include/simultaneous-music-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ public: virtual void derived_substitute (Context *f, Context *t); virtual void derived_mark () const; DECLARE_SCHEME_CALLBACK (constructor, ()); - DECLARE_CLASSNAME(Simultaneous_music_iterator); + DECLARE_CLASSNAME (Simultaneous_music_iterator); /// make a new context for every child. bool create_separate_contexts_; diff --git a/lily/include/skyline-pair.hh b/lily/include/skyline-pair.hh index b32bd13815..22dd639332 100644 --- a/lily/include/skyline-pair.hh +++ b/lily/include/skyline-pair.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2008--2011 Han-Wen Nienhuys + Copyright (C) 2008--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class Skyline_pair private: Drul_array skylines_; - DECLARE_SIMPLE_SMOBS(Skyline_pair); + DECLARE_SIMPLE_SMOBS (Skyline_pair); public: Skyline_pair (); Skyline_pair (vector const &boxes, Real horizon_padding, Axis a); @@ -41,6 +41,8 @@ public: bool is_empty () const; void print () const; void print_points () const; + + DECLARE_SCHEME_CALLBACK (skyline, (SCM, SCM)); }; #endif /* SKYLINE_PAIR_HH */ diff --git a/lily/include/skyline.hh b/lily/include/skyline.hh index bb637a21bb..0715c545a6 100644 --- a/lily/include/skyline.hh +++ b/lily/include/skyline.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,10 +55,10 @@ private: Direction sky_; void internal_merge_skyline (list*, list*, - list *const result); + list *const result); list internal_build_skyline (list*, Real, Axis, Direction); - DECLARE_SIMPLE_SMOBS(Skyline); + DECLARE_SIMPLE_SMOBS (Skyline); public: Skyline (); @@ -76,11 +76,22 @@ public: void raise (Real); void shift (Real); Real distance (Skyline const &, Real horizon_padding = 0) const; + Real touching_point (Skyline const &, Real horizon_padding = 0) const; Real height (Real airplane) const; Real max_height () const; + Real max_height_position () const; void set_minimum_height (Real height); void clear (); bool is_empty () const; + + DECLARE_SCHEME_CALLBACK (get_touching_point, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (get_distance, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (get_max_height, (SCM)); + DECLARE_SCHEME_CALLBACK (get_max_height_position, (SCM)); + DECLARE_SCHEME_CALLBACK (get_height, (SCM, SCM)); + +protected: + Real internal_distance (Skyline const &, Real horizon_padding, Real *touch_point) const; }; extern bool debug_skylines; diff --git a/lily/include/slur-configuration.hh b/lily/include/slur-configuration.hh index a4d78f99c9..48ec736448 100644 --- a/lily/include/slur-configuration.hh +++ b/lily/include/slur-configuration.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,15 +46,15 @@ public: }; int next_scorer_todo; - + Slur_configuration (); Real score () const { return score_; } - string card () const { return score_card_; } + string card () const { return score_card_; } void add_score (Real, string); - + void generate_curve (Slur_score_state const &state, Real r0, Real h_inf, - vector const &); + vector const &); void run_next_scorer (Slur_score_state const &); bool done () const; static Slur_configuration *new_config (Drul_array const &offs, int idx); @@ -72,7 +72,7 @@ protected: class Slur_configuration_less { public: - bool operator () (Slur_configuration* const& l, Slur_configuration* const& r) + bool operator () (Slur_configuration *const &l, Slur_configuration *const &r) { // Invert return l->score_ > r->score_; diff --git a/lily/include/slur-score-parameters.hh b/lily/include/slur-score-parameters.hh index 49d159b939..75b1ae8e46 100644 --- a/lily/include/slur-score-parameters.hh +++ b/lily/include/slur-score-parameters.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,6 @@ struct Slur_score_parameters Real head_encompass_penalty_; Real stem_encompass_penalty_; - Real closeness_factor_; Real edge_attraction_factor_; Real same_slope_penalty_; Real steeper_slope_factor_; @@ -43,8 +42,12 @@ struct Slur_score_parameters Real extra_encompass_free_distance_; Real absolute_closeness_measure_; Real edge_slope_exponent_; + Real close_to_edge_length_; Real head_slur_distance_max_ratio_; Real head_slur_distance_factor_; + Real encompass_object_range_overshoot_; + Real slur_tie_extrema_min_distance_; + Real slur_tie_extrema_min_distance_penalty_; void fill (Grob *him); }; diff --git a/lily/include/slur-scoring.hh b/lily/include/slur-scoring.hh index 866b216942..e5ff38d611 100644 --- a/lily/include/slur-scoring.hh +++ b/lily/include/slur-scoring.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ struct Extra_collision_info Real penalty_; Grob *grob_; SCM type_; - + Extra_collision_info (Grob *g, Real idx, Interval x, Interval y, Real p); Extra_collision_info (); }; @@ -66,6 +66,7 @@ struct Bound_info Grob *slur_head_; Grob *staff_; Grob *stem_; + Grob *flag_; Interval slur_head_x_extent_; Real staff_space_; @@ -89,7 +90,7 @@ struct Slur_score_state bool has_same_beam_; Real musical_dy_; - vector columns_; + vector columns_; vector encompass_infos_; vector extra_encompass_infos_; @@ -97,7 +98,7 @@ struct Slur_score_state Slur_score_parameters parameters_; Drul_array extremes_; Drul_array base_attachments_; - vector configurations_; + vector configurations_; Real staff_space_; Real thickness_; @@ -108,18 +109,18 @@ struct Slur_score_state Slur_configuration *get_best_curve () const; void fill (Grob *); Direction slur_direction () const; - + vector generate_avoid_offsets () const; Drul_array get_bound_info () const; void generate_curves () const; - vector enumerate_attachments (Drul_array end_ys) const; + vector enumerate_attachments (Drul_array end_ys) const; Drul_array get_base_attachments () const; Drul_array get_y_attachment_range () const; Encompass_info get_encompass_info (Grob *col) const; vector get_extra_encompass_infos () const; Real move_away_from_staffline (Real y, Grob *on_staff) const; - Grob *breakable_bound_item (Direction) const; + Interval breakable_bound_extent (Direction) const; }; void set_slur_control_points (Grob *me); diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 7abc764559..d1f743ca8e 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,17 +30,18 @@ public: static void add_column (Grob *me, Grob *col); static void add_extra_encompass (Grob *me, Grob *col); static void replace_breakable_encompass_objects (Grob *me); - static void auxiliary_acknowledge_extra_object (Grob_info const &, vector&, vector&); + static void auxiliary_acknowledge_extra_object (Grob_info const &, vector&, vector&); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); DECLARE_SCHEME_CALLBACK (height, (SCM)); + DECLARE_SCHEME_CALLBACK (vertical_skylines, (SCM)); DECLARE_SCHEME_CALLBACK (outside_slur_callback, (SCM, SCM)); DECLARE_SCHEME_CALLBACK (pure_outside_slur_callback, (SCM, SCM, SCM, SCM)); DECLARE_SCHEME_CALLBACK (outside_slur_cross_staff, (SCM, SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Bezier get_curve (Grob *me); }; diff --git a/lily/include/smobs.hh b/lily/include/smobs.hh index cf6ffcc9a3..fb4fa530ee 100644 --- a/lily/include/smobs.hh +++ b/lily/include/smobs.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,7 +46,7 @@ The constructor for a complex smob should have 3 steps: - * initialize all SCM members to a non-immediate value (like SCM_EOL) + * initialize all SCM members to an immediate value (like SCM_EOL) * call smobify_self () @@ -67,7 +67,13 @@ Complex_smob *p = new Complex_smob; list = scm_cons (p->self_scm (), list); - scm_gc_unprotect_object (p->self_scm ()); + p->unprotect (); + + Since unprotect returns the SCM object itself, this particular case + can be written as + + Complex_smob *p = new Complex_smob; + list = scm_cons (p->unprotect (), list); Complex smobs are made with DECLARE_SMOBS (Classname) in the class declaration. @@ -99,52 +105,52 @@ from file "ly-smobs.icc" */ -#define DECLARE_SIMPLE_SMOBS(CL) \ - public: \ - SCM smobbed_copy () const; \ +#define DECLARE_SIMPLE_SMOBS(CL) \ + public: \ + SCM smobbed_copy () const; \ DECLARE_BASE_SMOBS (CL) -#define DECLARE_BASE_SMOBS(CL) \ - friend class Non_existent_class; \ - private: \ +#define DECLARE_BASE_SMOBS(CL) \ + friend class Non_existent_class; \ + private: \ static const char* smob_name_; \ - static scm_t_bits smob_tag_; \ - static SCM mark_smob (SCM); \ - static size_t free_smob (SCM s); \ - static int print_smob (SCM s, SCM p, scm_print_state*); \ - public: \ - static SCM equal_p (SCM a, SCM b); \ - static CL *unsmob (SCM s) __attribute__((pure)) \ - { \ - if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_) \ - return (CL *) SCM_CELL_WORD_1 (s); \ - else \ - return 0; \ - } \ - static SCM smob_p (SCM); \ - static void init_smobs (); \ + static scm_t_bits smob_tag_; \ + static SCM mark_smob (SCM); \ + static size_t free_smob (SCM s); \ + static int print_smob (SCM s, SCM p, scm_print_state*); \ + public: \ + static SCM equal_p (SCM a, SCM b); \ + static CL *unsmob (SCM s) __attribute__((pure)) \ + { \ + if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_) \ + return (CL *) SCM_CELL_WORD_1 (s); \ + else \ + return 0; \ + } \ + static SCM smob_p (SCM); \ + static void init_smobs (); \ private: -#define DECLARE_SMOBS(CL) \ - DECLARE_BASE_SMOBS (CL) \ - protected: \ - virtual ~CL (); \ - SCM unprotected_smobify_self (); \ - private: \ - void smobify_self (); \ - SCM self_scm_; \ - SCM protection_cons_; \ - public: \ - SCM unprotect (); \ - void protect (); \ - SCM self_scm () const { return self_scm_; } \ +#define DECLARE_SMOBS(CL) \ + DECLARE_BASE_SMOBS (CL) \ + protected: \ + virtual ~CL (); \ + SCM unprotected_smobify_self (); \ + private: \ + void smobify_self (); \ + SCM self_scm_; \ + SCM protection_cons_; \ + public: \ + SCM unprotect (); \ + void protect (); \ + SCM self_scm () const { return self_scm_; } \ private: -#define DECLARE_UNSMOB(CL, name) \ - inline CL * \ - unsmob_ ## name (SCM s) \ - { \ - return CL::unsmob (s); \ +#define DECLARE_UNSMOB(CL, name) \ + inline CL * \ + unsmob_ ## name (SCM s) \ + { \ + return CL::unsmob (s); \ } #define DECLARE_TYPE_P(CL) extern SCM CL ## _type_p_proc @@ -153,19 +159,34 @@ void protect_smob (SCM smob, SCM *prot_cons); void unprotect_smob (SCM smob, SCM *prot_cons); extern bool parsed_objects_should_be_dead; +class parsed_dead +{ + static vector elements; + SCM data; + SCM readout_one () + { + SCM res = data; + data = SCM_UNDEFINED; + return res; + } +public: + parsed_dead () : data (SCM_UNDEFINED) + { + elements.push_back (this); + } + void checkin (SCM arg) { data = arg; } + static SCM readout (); +}; #ifndef NDEBUG -#define ASSERT_LIVE_IS_ALLOWED() \ - do { \ - static bool passed_here_once;\ - if (parsed_objects_should_be_dead && !passed_here_once) { \ - ::programming_error (string ("Parsed object should be dead: ") + __PRETTY_FUNCTION__ ); \ - passed_here_once = true;\ - } \ - } \ - while (0) +#define ASSERT_LIVE_IS_ALLOWED(arg) \ + do { \ + static parsed_dead pass_here; \ + if (parsed_objects_should_be_dead) \ + pass_here.checkin (arg); \ + } while (0) #else -#define ASSERT_LIVE_IS_ALLOWED() do { } \ +#define ASSERT_LIVE_IS_ALLOWED(arg) do { } \ while (0) #endif diff --git a/lily/include/source-file.hh b/lily/include/source-file.hh index 9dedceb48b..e4bdc3f638 100644 --- a/lily/include/source-file.hh +++ b/lily/include/source-file.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Jan Nieuwenhuizen + Copyright (C) 1999--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ using namespace std; class Source_file { - vector newline_locations_; + vector newline_locations_; istream *istream_; vector characters_; SCM str_port_; @@ -45,7 +45,7 @@ class Source_file void load_stdin (); void init_port (); void init (); - + DECLARE_SMOBS (Source_file); public: Source_file (string fn); @@ -65,7 +65,7 @@ public: Slice line_slice (char const *pos_str0) const; string line_string (char const *pos_str0) const; void get_counts (char const *pos_str0, int *, int *, int *, int *) const; - + SCM get_port () const; string name_; diff --git a/lily/include/sources.hh b/lily/include/sources.hh index b873ac8bc0..5743fc56cf 100644 --- a/lily/include/sources.hh +++ b/lily/include/sources.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,13 +26,13 @@ class Sources { Sources (Sources const &); - vector sourcefiles_; + vector sourcefiles_; public: Sources (); ~Sources (); - Source_file *get_file (string file_name, string const& currentpath); + Source_file *get_file (string file_name, string const ¤tpath); void add (Source_file *sourcefile); void set_path (File_path *); diff --git a/lily/include/spaceable-grob.hh b/lily/include/spaceable-grob.hh index 5788fecb47..8293675ddf 100644 --- a/lily/include/spaceable-grob.hh +++ b/lily/include/spaceable-grob.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,7 +31,7 @@ struct Spaceable_grob static void add_spring (Grob *me, Grob *to, Spring sp); static Spring get_spring (Grob *me, Grob *other); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static SCM get_minimum_distances (Grob *); static SCM get_ideal_distances (Grob *); }; diff --git a/lily/include/spacing-interface.hh b/lily/include/spacing-interface.hh index 5b23672c30..d599df7566 100644 --- a/lily/include/spacing-interface.hh +++ b/lily/include/spacing-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,14 +25,14 @@ struct Spacing_interface { static Real minimum_distance (Grob *me, Grob *right_col); - static vector right_note_columns (Grob *me); - static vector left_note_columns (Grob *me); - static Item* right_column (Grob *me); - static Item* left_column (Grob *me); + static vector right_note_columns (Grob *me); + static vector left_note_columns (Grob *me); + static Item *right_column (Grob *me); + static Item *left_column (Grob *me); static Drul_array skylines (Grob *me, Grob *right_col); - static Grob* extremal_break_aligned_grob (Grob *me, Direction, Direction, Interval*); + static Grob *extremal_break_aligned_grob (Grob *me, Direction, Direction, Interval *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* SPACING_INTERFACE_HH */ diff --git a/lily/include/spacing-options.hh b/lily/include/spacing-options.hh index c96f1d0cfb..2ca45c5e85 100644 --- a/lily/include/spacing-options.hh +++ b/lily/include/spacing-options.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,8 +38,8 @@ struct Spacing_options Rational global_shortest_; Real increment_; Real shortest_duration_space_; - - Spacing_options(); + + Spacing_options (); void init_from_grob (Grob *me); Real get_duration_space (Rational d) const; }; diff --git a/lily/include/spacing-spanner.hh b/lily/include/spacing-spanner.hh index d469c3f463..165f04a8ad 100644 --- a/lily/include/spacing-spanner.hh +++ b/lily/include/spacing-spanner.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,26 +31,26 @@ class Spacing_spanner private: static void set_distances_for_loose_col (Grob *me, Grob *c, Drul_array next_door, Spacing_options const *); static void generate_pair_spacing (Grob *me, - Paper_column *l, Paper_column *r, - Paper_column *nextr, - Spacing_options const *options); + Paper_column *l, Paper_column *r, + Paper_column *nextr, + Spacing_options const *options); static Real default_bar_spacing (Grob *, Grob *, Grob *, Moment); - static Rational effective_shortest_duration (Grob *me, vector const &all); + static Rational effective_shortest_duration (Grob *me, vector const &all); static void breakable_column_spacing (Grob *, Item *l, Item *r, Spacing_options const *); - static void prune_loose_columns (Grob *, vector *cols, Spacing_options *); - static void set_explicit_neighbor_columns (vector const &cols); - static void set_implicit_neighbor_columns (vector const &cols); - static void generate_springs (Grob *me, vector const &cols, Spacing_options const *); + static void prune_loose_columns (Grob *, vector *cols, Spacing_options *); + static void set_explicit_neighbor_columns (vector const &cols); + static void set_implicit_neighbor_columns (vector const &cols); + static void generate_springs (Grob *me, vector const &cols, Spacing_options const *); static void musical_column_spacing (Grob *, Item *, Item *, Spacing_options const *); static bool fills_measure (Grob *, Item *, Item *); public: - static vector get_columns (Grob *me); + static vector get_columns (Grob *me); static Real note_spacing (Grob *, Grob *, Grob *, Spacing_options const *); static Spring standard_breakable_column_spacing (Grob *me, Item *l, Item *r, Spacing_options const *); - + DECLARE_SCHEME_CALLBACK (set_springs, (SCM)); DECLARE_SCHEME_CALLBACK (calc_common_shortest_duration, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; #endif /* SPACING_SPANNER_HH */ diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 7bda060c86..cce03ee437 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ class Spanner : public Grob Drul_array spanned_drul_; vsize break_index_; - DECLARE_CLASSNAME(Spanner); + DECLARE_CLASSNAME (Spanner); public: DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); @@ -52,11 +52,11 @@ public: DECLARE_SCHEME_CALLBACK (bounds_width, (SCM)); DECLARE_SCHEME_CALLBACK (kill_zero_spanned_time, (SCM)); - vector broken_intos_; + vector broken_intos_; vsize get_break_index () const; Spanner *broken_neighbor (Direction d) const; - + // todo: move to somewhere else. Real get_broken_left_end_align () const; void substitute_one_mutable_property (SCM sym, SCM val); @@ -76,7 +76,7 @@ public: static bool less (Spanner *const &, Spanner *const &); virtual Grob *find_broken_piece (System *) const; virtual void derived_mark () const; - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); virtual System *get_system () const; SCM get_cached_pure_property (SCM sym, int start, int end); diff --git a/lily/include/spring.hh b/lily/include/spring.hh index 7172809499..fe02fe898c 100644 --- a/lily/include/spring.hh +++ b/lily/include/spring.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,7 +45,7 @@ public: Real inverse_stretch_strength () const {return inverse_stretch_strength_;} Real inverse_compress_strength () const {return inverse_compress_strength_;} Real blocking_force () const {return blocking_force_;} - + Real length (Real f) const; void set_distance (Real); @@ -58,8 +58,8 @@ public: void set_default_compress_strength (); void set_default_stretch_strength (); - void operator*= (Real); - bool operator> (Spring const&) const; + void operator *= (Real); + bool operator > (Spring const &) const; }; DECLARE_UNSMOB (Spring, spring); diff --git a/lily/include/staff-grouper-interface.hh b/lily/include/staff-grouper-interface.hh index d26169e4bd..7d55392f6a 100644 --- a/lily/include/staff-grouper-interface.hh +++ b/lily/include/staff-grouper-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2009--2011 Joe Neeman + Copyright (C) 2009--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/staff-spacing.hh b/lily/include/staff-spacing.hh index fb572dc157..c20e1d5df8 100644 --- a/lily/include/staff-spacing.hh +++ b/lily/include/staff-spacing.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,8 @@ class Staff_spacing static Real next_notes_correction (Grob *, Grob *); public: - DECLARE_GROB_INTERFACE(); - static Spring get_spacing (Grob *, Grob *right_col); + DECLARE_GROB_INTERFACE (); + static Spring get_spacing (Grob *, Grob *, Real); static Interval bar_y_positions (Grob *); }; diff --git a/lily/include/staff-symbol-referencer.hh b/lily/include/staff-symbol-referencer.hh index ed6156c62c..79d07cfe7c 100644 --- a/lily/include/staff-symbol-referencer.hh +++ b/lily/include/staff-symbol-referencer.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,9 +30,10 @@ class Staff_symbol_referencer { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static bool ugly_hack (Grob *); static void set_position (Grob *, Real); + static void pure_set_position (Grob *, Real); DECLARE_SCHEME_CALLBACK (callback, (SCM element)); /** @@ -46,12 +47,29 @@ public: static bool on_staff_line (Grob *, int); static int line_count (Grob *); static Real get_position (Grob *); + static Real pure_get_position (Grob *); + + /** + Interval of staff lines. + */ + static Interval staff_span (Grob *); + + /** + Half of the height, in staff space, i.e. 2.0 for a normal staff. + */ static Real staff_radius (Grob *); + static int get_rounded_position (Grob *); - static Interval extent_in_staff (Grob *); + static int pure_get_rounded_position (Grob *); + static Interval extent_in_staff (Grob *); + +private: + static void internal_set_position (Grob *, Real, bool); + static Real internal_get_position (Grob *, bool); }; int compare_position (Grob *const &, Grob *const &); bool position_less (Grob *const &, Grob *const &); +bool pure_position_less (Grob *const &, Grob *const &); #endif /* STAFF_SYMBOL_REFERENCER_HH */ diff --git a/lily/include/staff-symbol.hh b/lily/include/staff-symbol.hh index 1c091c6388..688dccb0a6 100644 --- a/lily/include/staff-symbol.hh +++ b/lily/include/staff-symbol.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,13 +32,14 @@ public: static Real staff_space (Grob *); static Real get_line_thickness (Grob *); static Real get_ledger_line_thickness (Grob *); - - static int get_steps (Grob *); + + static vector line_positions (Grob *); + static vector ledger_positions (Grob *me, int pos); static int line_count (Grob *); - static bool on_line (Grob *me, int pos); + static bool on_line (Grob *me, int pos, bool allow_ledger = true); static Interval line_span (Grob *); DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_SCHEME_CALLBACK (height, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_SCHEME_CALLBACK (height, (SCM)); + DECLARE_GROB_INTERFACE (); }; #endif // STAFF_SYMBOL_HH diff --git a/lily/include/stem-info.hh b/lily/include/stem-info.hh index 252961e532..5b92ac7524 100644 --- a/lily/include/stem-info.hh +++ b/lily/include/stem-info.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/stem-tremolo.hh b/lily/include/stem-tremolo.hh index f3f5931adc..03a6f8c908 100644 --- a/lily/include/stem-tremolo.hh +++ b/lily/include/stem-tremolo.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,16 +27,18 @@ class Stem_tremolo { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (calc_slope, (SCM)); DECLARE_SCHEME_CALLBACK (calc_width, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM)); + DECLARE_SCHEME_CALLBACK (pure_calc_y_offset, (SCM, SCM, 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); + static Real y_offset (Grob *, bool pure); + static Stencil untranslated_stencil (Grob *, Real slope); static Real get_beam_translation (Grob *me); static Real vertical_length (Grob *me); }; diff --git a/lily/include/stem.hh b/lily/include/stem.hh index 27fe988b61..de1b7d6c9a 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ class Stem { public: - static vector note_head_positions (Grob *); + static vector note_head_positions (Grob *, bool filter = false); static int duration_log (Grob *); static void set_beaming (Grob *, int, Direction d); static int get_beaming (Grob *, Direction d); @@ -40,34 +40,42 @@ public: static void add_head (Grob *me, Grob *n); static Stem_info get_stem_info (Grob *); static Real chord_start_y (Grob *); - static void set_stemend (Grob *, Real); + static void set_stem_positions (Grob *, Real); + static void cache_pure_height (Grob *, Interval, Interval); static Slice beam_multiplicity (Grob *); - static Direction get_default_dir (Grob*); + static Direction get_default_dir (Grob *); static Real thickness (Grob *); + static Real beam_end_corrective (Grob *); static int head_count (Grob *); static bool is_invisible (Grob *); static bool is_normal_stem (Grob *); static bool is_cross_staff (Grob *); static Interval head_positions (Grob *); - static Real stem_end_position (Grob *); - static Stencil flag (Grob *); - static Stencil get_translated_flag (Grob*); - DECLARE_GROB_INTERFACE(); + static Interval internal_pure_height (Grob *, bool); + static Interval internal_height (Grob *, bool); + static bool is_valid_stem (Grob *); + static Grob *get_reference_head (Grob *); + static Real internal_calc_stem_end_position (Grob *, bool); + static Real internal_calc_stem_begin_position (Grob *, bool); + + DECLARE_GROB_INTERFACE (); static void set_spacing_hints (Grob *); - + static Grob *flag (Grob *); + DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_default_direction, (SCM)); DECLARE_SCHEME_CALLBACK (offset_callback, (SCM element)); 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 (pure_calc_stem_begin_position, (SCM, SCM, SCM)); DECLARE_SCHEME_CALLBACK (calc_stem_end_position, (SCM)); + DECLARE_SCHEME_CALLBACK (pure_calc_stem_end_position, (SCM, SCM, SCM)); DECLARE_SCHEME_CALLBACK (calc_stem_info, (SCM)); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); DECLARE_SCHEME_CALLBACK (width, (SCM smob)); DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); DECLARE_SCHEME_CALLBACK (height, (SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_flag, (SCM)); }; #endif diff --git a/lily/include/stencil.hh b/lily/include/stencil.hh index 2e38cdfdfc..00c295316c 100644 --- a/lily/include/stencil.hh +++ b/lily/include/stencil.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #ifndef STENCIL_HH #define STENCIL_HH -#include // size_t +#include // size_t using namespace std; #include "lily-proto.hh" @@ -90,14 +90,13 @@ public: DECLARE_UNSMOB (Stencil, stencil); void interpret_stencil_expression (SCM expr, - void (*func) (void *, SCM), - void *func_arg, - Offset o); + void (*func) (void *, SCM), + void *func_arg, + Offset o); SCM find_expression_fonts (SCM expr); void register_stencil_head (SCM symbol); bool is_stencil_head (SCM symbol); SCM all_stencil_heads (); - #endif /* STENCIL_HH */ diff --git a/lily/include/stream-event.hh b/lily/include/stream-event.hh index 18b162a17c..f255ab5353 100644 --- a/lily/include/stream-event.hh +++ b/lily/include/stream-event.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Erik Sandberg + Copyright (C) 2005--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,12 +30,13 @@ public: Stream_event (); VIRTUAL_COPY_CONSTRUCTOR (Stream_event, Stream_event); - Stream_event (SCM event_class, SCM mutable_props=SCM_EOL); + Stream_event (SCM event_class, SCM immutable_props = SCM_EOL); Stream_event (SCM class_name, Input *); Input *origin () const; void set_spot (Input *i); bool internal_in_event_class (SCM class_name); + void make_transposable (); virtual SCM copy_mutable_properties () const; diff --git a/lily/include/stream.hh b/lily/include/stream.hh index 2547900e9e..000ec16f1c 100644 --- a/lily/include/stream.hh +++ b/lily/include/stream.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ using namespace std; #if __GNUC__ > 2 ostream *open_file_stream (string file_name, - ios_base::openmode mode = ios::out); + ios_base::openmode mode = ios::out); #else ostream *open_file_stream (string file_name, int mode = ios::out); #endif diff --git a/lily/include/system-start-delimiter.hh b/lily/include/system-start-delimiter.hh index 5131eeb469..f3b183b1c8 100644 --- a/lily/include/system-start-delimiter.hh +++ b/lily/include/system-start-delimiter.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,14 +31,14 @@ class System_start_delimiter public: DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static void try_collapse (Grob *); static Stencil staff_bracket (Grob *, Real); static Stencil old_staff_bracket (Grob *, Real); static Stencil staff_brace (Grob *, Real); static Stencil simple_bar (Grob *, Real); static Stencil line_bracket (Grob *, Real); - + }; #endif /* SYSTEM_START_DELIMITER_HH */ diff --git a/lily/include/system.hh b/lily/include/system.hh index 940f6a5fb8..453e48234d 100644 --- a/lily/include/system.hh +++ b/lily/include/system.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,32 +34,37 @@ class System : public Spanner int rank_; Grob_array *all_elements_; void init_elements (); - friend class Paper_score; // ugh. - Paper_score *pscore_; // ugh. - bool checked_footnotes_; - vector footnote_grobs_; // TODO: make this a grob array + friend class Paper_score; // ugh. + Paper_score *pscore_; // ugh. public: Paper_score *paper_score () const; Grob *get_vertical_alignment (); - Grob *get_extremal_staff (Direction dir, Interval const&); + Grob *get_extremal_staff (Direction dir, Interval const &); + Grob *get_neighboring_staff (Direction dir, Grob *vertical_axis_group, Interval_t bounds); Grob *get_pure_bound (Direction dir, int start, int end); Grob *get_maybe_pure_bound (Direction dir, bool pure, int start, int end); int get_rank () const; - vector get_footnotes_in_range (vsize st, vsize end); - void get_footnote_grobs_in_range (vector &out, vsize st, vsize end); - Stencil make_footnote_stencil (Real padding); + vector get_footnote_heights_in_range (vsize st, vsize end); + vector get_in_note_heights_in_range (vsize st, vsize end); + vector internal_get_note_heights_in_range (vsize st, vsize end, bool foot); + vector get_footnote_grobs_in_range (vsize st, vsize end); + vsize num_footnotes (); void do_break_substitution_and_fixup_refpoints (); void post_processing (); - void populate_footnote_grob_vector (); SCM get_paper_system (); SCM get_paper_systems (); SCM get_broken_system_grobs (); SCM get_broken_footnote_stencils (); + DECLARE_SCHEME_CALLBACK (footnotes_before_line_breaking, (SCM)); + DECLARE_SCHEME_CALLBACK (footnotes_after_line_breaking, (SCM)); DECLARE_SCHEME_CALLBACK (calc_pure_relevant_grobs, (SCM)); DECLARE_SCHEME_CALLBACK (height, (SCM)); DECLARE_SCHEME_CALLBACK (calc_pure_height, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (get_staves, (SCM)); + DECLARE_SCHEME_CALLBACK (get_spaceable_staves, (SCM)); + DECLARE_SCHEME_CALLBACK (get_nonspaceable_staves, (SCM)); System (SCM); System (System const &); @@ -68,10 +73,10 @@ public: int spanner_count () const; void break_into_pieces (vector const &); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); - vector broken_col_range (Item const *, Item const *) const; - vector used_columns () const; + vector broken_col_range (Item const *, Item const *) const; + vector used_columns () const; Paper_column *column (vsize i) const; void add_column (Paper_column *); diff --git a/lily/include/text-interface.hh b/lily/include/text-interface.hh index e01bd4aeab..1e736a5071 100644 --- a/lily/include/text-interface.hh +++ b/lily/include/text-interface.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -24,14 +24,13 @@ #include "stencil.hh" #include "grob-interface.hh" - class Text_interface { public: DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (interpret_markup, (SCM, SCM, SCM)); DECLARE_SCHEME_CALLBACK (interpret_string, (SCM, SCM, SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static bool is_markup (SCM); static bool is_markup_list (SCM); }; diff --git a/lily/include/tie-column-format.hh b/lily/include/tie-column-format.hh index 0a5ca6cacf..8a2a16a907 100644 --- a/lily/include/tie-column-format.hh +++ b/lily/include/tie-column-format.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,26 +24,25 @@ #include "tie-configuration.hh" void set_chord_outline (Skyline *skyline, - vector bounds, - Grob *common, - Direction d); + vector bounds, + Grob *common, + Direction d); void set_tie_config_directions (Ties_configuration *tie_configs_ptr); void shift_small_ties (Ties_configuration *tie_configs, - Grob *staff_referencer, - Tie_details const &details); + Grob *staff_referencer, + Tie_details const &details); void final_shape_adjustment (Tie_configuration &conf, - Tie_formatting_problem const&, - Grob *staff_referencer); + Tie_formatting_problem const &, + Grob *staff_referencer); void set_chord_outlines (Drul_array *skyline_drul, - vector ties, - Grob *common); + vector ties, + Grob *common); void set_manual_tie_configuration (Ties_configuration *tie_configs, - bool *manual_override, - SCM manual_configs - ); - + bool *manual_override, + SCM manual_configs + ); #endif /* TIE_COLUMN_FORMAT_HH */ diff --git a/lily/include/tie-column.hh b/lily/include/tie-column.hh index 3821f3b80a..4832efe0bc 100644 --- a/lily/include/tie-column.hh +++ b/lily/include/tie-column.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Tie_column { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static void add_tie (Grob *me, Grob *); DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM)); diff --git a/lily/include/tie-configuration.hh b/lily/include/tie-configuration.hh index 715928fd9b..32ffb45a95 100644 --- a/lily/include/tie-configuration.hh +++ b/lily/include/tie-configuration.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,7 +42,7 @@ public: Direction dir_; Real delta_y_; Drul_array column_ranks_; - + /* computed. */ Interval attachment_x_; @@ -51,13 +51,13 @@ public: void center_tie_vertically (Tie_details const &); Bezier get_transformed_bezier (Tie_details const &) const; Bezier get_untransformed_bezier (Tie_details const &) const; - Real height (Tie_details const&) const; + Real height (Tie_details const &) const; int column_span_length () const; - + static int compare (Tie_configuration const &a, - Tie_configuration const &b); + Tie_configuration const &b); static Real distance (Tie_configuration const &a, - Tie_configuration const &b); + Tie_configuration const &b); }; INSTANTIATE_COMPARE (Tie_configuration, Tie_configuration::compare); @@ -76,13 +76,11 @@ public: void add_tie_score (Real amount, int i, string description); Real score () const; void reset_score (); - string card () const; + string card () const; string tie_card (int i) const { return tie_score_cards_[i]; } string complete_tie_card (vsize i) const; - string complete_score_card () const; + string complete_score_card () const; }; #endif /* TIE_CONFIGURATION_HH */ - - diff --git a/lily/include/tie-details.hh b/lily/include/tie-details.hh index e43fc7e13a..b03b497007 100644 --- a/lily/include/tie-details.hh +++ b/lily/include/tie-details.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ struct Tie_details Real ratio_; Real staff_space_; Real x_gap_; - Real stem_gap_; + Real stem_gap_; Real between_length_limit_; Real wrong_direction_offset_penalty_; Real same_dir_as_stem_penalty_; @@ -54,11 +54,10 @@ struct Tie_details int single_tie_region_size_; int multi_tie_region_size_; Direction neutral_direction_; - + Tie_details (); void from_grob (Grob *); }; #endif /* TIE_DETAILS_HH */ - diff --git a/lily/include/tie-formatting-problem.hh b/lily/include/tie-formatting-problem.hh index 9799839cb3..3f21dba6a1 100644 --- a/lily/include/tie-formatting-problem.hh +++ b/lily/include/tie-formatting-problem.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,12 +30,12 @@ #include #include -typedef map< Tuple, Tie_configuration *> Tie_configuration_map; +typedef map< Tuple, Tie_configuration *> Tie_configuration_map; struct Tie_configuration_variation { vector > index_suggestion_pairs_; - void add_suggestion(int index, Tie_configuration* suggestion) + void add_suggestion (int index, Tie_configuration *suggestion) { index_suggestion_pairs_.push_back (make_pair (index, suggestion)); } @@ -51,45 +51,44 @@ class Tie_formatting_problem Column_extent_map stem_extents_; Column_extent_map head_extents_; Position_extent_map head_positions_; - + set dot_positions_; Interval dot_x_; vector specifications_; bool use_horizontal_spacing_; - + Tie_configuration_map possibilities_; Grob *x_refpoint_; Grob *y_refpoint_; - Tie_configuration *get_configuration (int position, Direction dir, Drul_array cols, bool tune_y) const; Tie_configuration *generate_configuration (int position, Direction dir, Drul_array cols, bool tune_y) const; vector generate_collision_variations (Ties_configuration const &ties) const; vector generate_extremal_tie_variations (Ties_configuration const &ties) const; vector generate_single_tie_variations (Ties_configuration const &ties) const; - + void score_configuration (Tie_configuration *) const; Real score_aptitude (Tie_configuration *, Tie_specification const &, - Ties_configuration *, int) const; + Ties_configuration *, int) const; void score_ties_aptitude (Ties_configuration *ties) const; void score_ties_configuration (Ties_configuration *ties) const; void set_ties_config_standard_directions (Ties_configuration *tie_configs_ptr); void score_ties (Ties_configuration *) const; - + Slice head_positions_slice (int) const; Ties_configuration generate_base_chord_configuration (); Ties_configuration find_best_variation (Ties_configuration const &base, - vector const &vars); + vector const &vars); public: Tie_details details_; void print_ties_configuration (Ties_configuration const *); - Interval get_stem_extent (int, Direction, Axis) const; - Interval get_head_extent (int, Direction, Axis) const; - + Interval get_stem_extent (int, Direction, Axis) const; + Interval get_head_extent (int, Direction, Axis) const; + public: Tie_formatting_problem (); ~Tie_formatting_problem (); @@ -98,11 +97,11 @@ public: Ties_configuration generate_optimal_configuration (); Ties_configuration generate_ties_configuration (Ties_configuration const &); - void from_ties (vector const &ties); + void from_ties (vector const &ties); void from_tie (Grob *tie); - void from_semi_ties (vector const &, Direction head_dir); - void set_chord_outline (vector, Direction); - void set_column_chord_outline (vector, Direction, int rank); + void from_semi_ties (vector const &, Direction head_dir); + void set_chord_outline (vector, Direction); + void set_column_chord_outline (vector, Direction, int rank); void set_manual_tie_configuration (SCM); Interval get_attachment (Real, Drul_array) const; Grob *common_x_refpoint () const; diff --git a/lily/include/tie-specification.hh b/lily/include/tie-specification.hh index a41aa3626b..36f65fabd9 100644 --- a/lily/include/tie-specification.hh +++ b/lily/include/tie-specification.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys + Copyright (C) 2007--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,18 +26,18 @@ struct Tie_specification { int position_; - Drul_array note_head_drul_; + Drul_array note_head_drul_; Drul_array column_ranks_; Grob *tie_grob_; - + bool has_manual_position_; bool has_manual_dir_; bool has_manual_delta_y_; bool has_accidental_; - + Real manual_position_; Direction manual_dir_; - + Tie_specification (); int column_span () const; void from_grob (Grob *); diff --git a/lily/include/tie.hh b/lily/include/tie.hh index 9da006c8ef..9e24099cdc 100644 --- a/lily/include/tie.hh +++ b/lily/include/tie.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,29 +24,25 @@ #include "skyline.hh" #include "grob-interface.hh" - - - class Tie { public: static void set_head (Grob *, Direction, Grob *head); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Grob *head (Grob *, Direction); static int get_column_rank (Grob *, Direction); static int get_position (Grob *); - static Direction get_default_dir (Grob *); + static Direction get_default_dir (Grob *); static SCM get_control_points (Grob *, Grob *, - Tie_configuration const&, - Tie_details const&); + Tie_configuration const &, + Tie_details const &); static SCM get_default_control_points (Grob *); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); static bool less (Grob *const &s1, - Grob *const &s2); + Grob *const &s2); }; - #endif // TIE_HH diff --git a/lily/include/time-scaled-music-iterator.hh b/lily/include/time-scaled-music-iterator.hh index b3a4ce480d..3985e0b0ea 100644 --- a/lily/include/time-scaled-music-iterator.hh +++ b/lily/include/time-scaled-music-iterator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys , + Copyright (C) 1998--2012 Han-Wen Nienhuys , Erik Sandberg LilyPond is free software: you can redistribute it and/or modify @@ -28,7 +28,7 @@ class Time_scaled_music_iterator : public Sequential_iterator public: DECLARE_SCHEME_CALLBACK (constructor, ()); /* construction */ - DECLARE_CLASSNAME(Time_scaled_music_iterator); + DECLARE_CLASSNAME (Time_scaled_music_iterator); Time_scaled_music_iterator (); protected: virtual SCM get_music_list () const; diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh index 95190025bc..4fa922419d 100644 --- a/lily/include/time-signature.hh +++ b/lily/include/time-signature.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ */ struct Time_signature { - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Stencil special_time_signature (Grob *, SCM, int, int); static Stencil numbered_time_signature (Grob *, int, int); DECLARE_SCHEME_CALLBACK (print, (SCM)); diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh index bd0a0788c2..7629009d3e 100644 --- a/lily/include/timing-translator.hh +++ b/lily/include/timing-translator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/include/translator-dispatch-list.hh b/lily/include/translator-dispatch-list.hh index 1504ebcecc..afb9ce45a2 100644 --- a/lily/include/translator-dispatch-list.hh +++ b/lily/include/translator-dispatch-list.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,7 +36,7 @@ class Engraver_dispatch_list public: void apply (Grob_info); SCM static create (SCM trans_list, - SCM iface_list, Direction); + SCM iface_list, Direction); DECLARE_SIMPLE_SMOBS (Engraver_dispatch_list); }; diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index 3eaf8a85b7..e5004c2925 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -95,7 +95,7 @@ protected: SCM names_to_translators (SCM namelist, Context *tg); void recurse_over_translators (Context *c, Translator_method ptr, - Translator_group_method ptr2, Direction); + Translator_group_method ptr2, Direction); void precomputed_recurse_over_translators (Context *c, Translator_precompute_index idx, Direction dir); Translator_group *get_translator_group (SCM sym); diff --git a/lily/include/translator.hh b/lily/include/translator.hh index d2723929ee..41e2d9745b 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ #include "global-ctor.hh" #include "lily-proto.hh" #include "virtual-methods.hh" -#include "input.hh" // for error reporting +#include "input.hh" // for error reporting #include "smobs.hh" #include "std-vector.hh" #include "protected-scm.hh" @@ -33,85 +33,86 @@ struct Acknowledge_information SCM symbol_; Engraver_void_function_engraver_grob_info function_; - Acknowledge_information () { + Acknowledge_information () + { symbol_ = SCM_EOL; function_ = 0; } }; - /* Each translator class has a static list of listener records. Each record makes one explains how to register one of the class's stream event listeners to a context. */ -typedef struct translator_listener_record { +typedef struct translator_listener_record +{ Listener (*get_listener_) (void *, SCM event_class); SCM event_class_; struct translator_listener_record *next_; - translator_listener_record () { + translator_listener_record () + { next_ = 0; event_class_ = SCM_EOL; get_listener_ = 0; } - -} translator_listener_record; +} translator_listener_record; #define TRANSLATOR_DECLARATIONS_NO_LISTENER(NAME) \ -private: \ - public: \ - NAME (); \ - VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME); \ - static SCM static_description_; \ +private: \ + public: \ + NAME (); \ + VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME); \ + static SCM static_description_; \ static Drul_array > acknowledge_static_array_drul_; \ virtual void fetch_precomputable_methods (Translator_void_method_ptr methods[]); \ - virtual SCM static_translator_description () const; \ - virtual SCM translator_description () const; \ + virtual SCM static_translator_description () const; \ + virtual SCM translator_description () const; \ static Engraver_void_function_engraver_grob_info static_get_acknowledger (SCM sym); \ static Engraver_void_function_engraver_grob_info static_get_end_acknowledger(SCM); \ virtual Engraver_void_function_engraver_grob_info get_acknowledger (SCM sym) \ - { \ - return static_get_acknowledger (sym); \ - } \ + { \ + return static_get_acknowledger (sym); \ + } \ virtual Engraver_void_function_engraver_grob_info get_end_acknowledger (SCM sym) \ - { \ - return static_get_end_acknowledger (sym); \ + { \ + return static_get_end_acknowledger (sym); \ } \ /* end #define */ -#define TRANSLATOR_DECLARATIONS(NAME) \ - TRANSLATOR_DECLARATIONS_NO_LISTENER(NAME) \ -private: \ - static translator_listener_record *listener_list_; \ -public: \ - virtual translator_listener_record *get_listener_list () const \ - { \ - return listener_list_; \ - } \ +#define TRANSLATOR_DECLARATIONS(NAME) \ + TRANSLATOR_DECLARATIONS_NO_LISTENER(NAME) \ +private: \ + static translator_listener_record *listener_list_; \ +public: \ + virtual translator_listener_record *get_listener_list () const \ + { \ + return listener_list_; \ + } \ /* end #define */ -#define DECLARE_TRANSLATOR_LISTENER(m) \ -public: \ -inline void listen_ ## m (Stream_event *); \ -/* Should be private */ \ -static void _internal_declare_ ## m (); \ -private: \ - static Listener _get_ ## m ## _listener (void *, SCM); \ +#define DECLARE_TRANSLATOR_LISTENER(m) \ +public: \ +inline void listen_ ## m (Stream_event *); \ +/* Should be private */ \ +static void _internal_declare_ ## m (); \ +private: \ + static Listener _get_ ## m ## _listener (void *, SCM); \ DECLARE_LISTENER (_listen_scm_ ## m); #define DECLARE_ACKNOWLEDGER(x) public : void acknowledge_ ## x (Grob_info); protected: #define DECLARE_END_ACKNOWLEDGER(x) public : void acknowledge_end_ ## x (Grob_info); protected: enum Translator_precompute_index - { - START_TRANSLATION_TIMESTEP, - STOP_TRANSLATION_TIMESTEP, - PROCESS_MUSIC, - PROCESS_ACKNOWLEDGED, - TRANSLATOR_METHOD_PRECOMPUTE_COUNT, - }; +{ + START_TRANSLATION_TIMESTEP, + STOP_TRANSLATION_TIMESTEP, + PROCESS_MUSIC, + PROCESS_ACKNOWLEDGED, + TRANSLATOR_METHOD_PRECOMPUTE_COUNT, +}; /* Translate music into grobs. @@ -150,19 +151,19 @@ public: TRANSLATOR_DECLARATIONS (Translator); DECLARE_SMOBS (Translator); -protected: // should be private. +protected: // should be private. Context *daddy_context_; void protect_event (SCM ev); virtual void derived_mark () const; static void add_translator_listener (translator_listener_record **listener_list, - translator_listener_record *r, - Listener (*get_listener) (void *, SCM), - const char *ev_class); - SCM static_translator_description (const char *grobs, - const char *desc, - translator_listener_record *listener_list, - const char *read, - const char *write) const; + translator_listener_record *r, + Listener (*get_listener) (void *, SCM), + const char *ev_class); + SCM static_translator_description (const char *grobs, + const char *desc, + translator_listener_record *listener_list, + const char *read, + const char *write) const; friend class Translator_group; }; @@ -174,13 +175,10 @@ Moment get_event_length (Stream_event *s, Moment now); Moment get_event_length (Stream_event *s); DECLARE_UNSMOB (Translator, translator); - /* This helper is only meaningful inside listen_* methods. */ extern bool internal_event_assignment (Stream_event **old_ev, Stream_event *new_ev, const char *function); #define ASSIGN_EVENT_ONCE(o,n) internal_event_assignment (&o, n, __FUNCTION__) - - #endif // TRANSLATOR_HH diff --git a/lily/include/translator.icc b/lily/include/translator.icc index a7bb910608..4ce8f6902e 100644 --- a/lily/include/translator.icc +++ b/lily/include/translator.icc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,131 +31,131 @@ /** A macro to automate administration of translators. */ -#define ADD_THIS_TRANSLATOR(T) \ - SCM T::static_description_ = SCM_EOL; \ - static void _ ## T ## _adder () \ - { \ - T *t = new T; \ - T::static_description_ = t->static_translator_description (); \ - scm_permanent_object (T::static_description_); \ - add_translator (t); \ - } \ - SCM T::translator_description () const \ - { \ - return static_description_; \ - } \ +#define ADD_THIS_TRANSLATOR(T) \ + SCM T::static_description_ = SCM_EOL; \ + static void _ ## T ## _adder () \ + { \ + T *t = new T; \ + T::static_description_ = \ + scm_permanent_object (t->static_translator_description ()); \ + add_translator (t); \ + } \ + SCM T::translator_description () const \ + { \ + return static_description_; \ + } \ ADD_GLOBAL_CTOR (_ ## T ## _adder); \ /* end define */ #define DEFINE_TRANSLATOR_LISTENER_LIST(T) \ - translator_listener_record *T::listener_list_; \ + translator_listener_record *T::listener_list_; \ /* end define */ #define DEFINE_ACKNOWLEDGERS(classname) \ - Drul_array< vector > classname::acknowledge_static_array_drul_; \ - Engraver_void_function_engraver_grob_info \ - classname::static_get_acknowledger (SCM sym) \ - { \ - return generic_get_acknowledger (sym, &acknowledge_static_array_drul_[START]); \ - } \ - Engraver_void_function_engraver_grob_info \ - classname::static_get_end_acknowledger (SCM sym) \ - { \ - return generic_get_acknowledger (sym, &acknowledge_static_array_drul_[STOP]); \ - } \ + Drul_array< vector > classname::acknowledge_static_array_drul_; \ + Engraver_void_function_engraver_grob_info \ + classname::static_get_acknowledger (SCM sym) \ + { \ + return generic_get_acknowledger (sym, &acknowledge_static_array_drul_[START]); \ + } \ + Engraver_void_function_engraver_grob_info \ + classname::static_get_end_acknowledger (SCM sym) \ + { \ + return generic_get_acknowledger (sym, &acknowledge_static_array_drul_[STOP]); \ + } \ /* end define */ -#define DEFINE_TRANSLATOR_DOC(classname, desc, grobs, read, write) \ - SCM \ - classname::static_translator_description () const \ - { \ +#define DEFINE_TRANSLATOR_DOC(classname, desc, grobs, read, write) \ + SCM \ + classname::static_translator_description () const \ + { \ return Translator::static_translator_description (grobs, desc, listener_list_, read, write); \ } -#define ADD_TRANSLATOR(classname, desc, grobs, read, write) \ - IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS (classname); \ - ADD_THIS_TRANSLATOR (classname); \ - DEFINE_TRANSLATOR_DOC(classname, desc, grobs, read, write) \ +#define ADD_TRANSLATOR(classname, desc, grobs, read, write) \ + IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS (classname); \ + ADD_THIS_TRANSLATOR (classname); \ + DEFINE_TRANSLATOR_DOC(classname, desc, grobs, read, write) \ DEFINE_ACKNOWLEDGERS(classname) \ DEFINE_TRANSLATOR_LISTENER_LIST(classname) \ - -#define IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS(T) \ - void \ - T::fetch_precomputable_methods (Translator_void_method_ptr ptrs[]) \ - { \ - ptrs[START_TRANSLATION_TIMESTEP] = \ - ((Translator_void_method_ptr) & T::start_translation_timestep == \ + +#define IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS(T) \ + void \ + T::fetch_precomputable_methods (Translator_void_method_ptr ptrs[]) \ + { \ + ptrs[START_TRANSLATION_TIMESTEP] = \ + ((Translator_void_method_ptr) & T::start_translation_timestep == \ (Translator_void_method_ptr) & Translator::start_translation_timestep) \ - ? 0 \ - : (Translator_void_method_ptr) & T::start_translation_timestep; \ - \ - ptrs[STOP_TRANSLATION_TIMESTEP] = \ + ? 0 \ + : (Translator_void_method_ptr) & T::start_translation_timestep; \ + \ + ptrs[STOP_TRANSLATION_TIMESTEP] = \ ((Translator_void_method_ptr) & T::stop_translation_timestep == (Translator_void_method_ptr) & Translator::stop_translation_timestep) \ - ? 0 \ - : (Translator_void_method_ptr) & T::stop_translation_timestep; \ - \ - ptrs[PROCESS_MUSIC] = \ + ? 0 \ + : (Translator_void_method_ptr) & T::stop_translation_timestep; \ + \ + ptrs[PROCESS_MUSIC] = \ ((Translator_void_method_ptr) & T::process_music == (Translator_void_method_ptr) & Translator::process_music) \ - ? 0 \ - : (Translator_void_method_ptr) & T::process_music; \ - \ - ptrs[PROCESS_ACKNOWLEDGED] = \ + ? 0 \ + : (Translator_void_method_ptr) & T::process_music; \ + \ + ptrs[PROCESS_ACKNOWLEDGED] = \ ((Translator_void_method_ptr) & T::process_acknowledged == (Translator_void_method_ptr) & Translator::process_acknowledged) \ - ? 0 \ - : (Translator_void_method_ptr) & T::process_acknowledged; \ + ? 0 \ + : (Translator_void_method_ptr) & T::process_acknowledged; \ } void add_acknowledger (Engraver_void_function_engraver_grob_info ptr, - char const *func_name, - vector *ack_array); + char const *func_name, + vector *ack_array); Engraver_void_function_engraver_grob_info generic_get_acknowledger (SCM sym, - vector const *ack_array); + vector const *ack_array); -#define ADD_ACKNOWLEDGER(CLASS, NAME) \ - void CLASS ## NAME ## _ack_adder () \ - { \ +#define ADD_ACKNOWLEDGER(CLASS, NAME) \ + void CLASS ## NAME ## _ack_adder () \ + { \ add_acknowledger ((Engraver_void_function_engraver_grob_info) & CLASS::acknowledge_ ## NAME, #NAME, &CLASS::acknowledge_static_array_drul_[START]); \ - } \ + } \ ADD_SCM_INIT_FUNC (CLASS ## NAME ## _ack_adder_initclass, CLASS ## NAME ## _ack_adder); -#define ADD_END_ACKNOWLEDGER(CLASS, NAME) \ - void CLASS ## NAME ## _end_ack_adder () \ - { \ +#define ADD_END_ACKNOWLEDGER(CLASS, NAME) \ + void CLASS ## NAME ## _end_ack_adder () \ + { \ add_acknowledger ((Engraver_void_function_engraver_grob_info) & CLASS::acknowledge_end_ ## NAME, #NAME, &CLASS::acknowledge_static_array_drul_[STOP]); \ - } \ + } \ ADD_SCM_INIT_FUNC (CLASS ## NAME ## _end_ack_adder_initclass, CLASS ## NAME ## _end_ack_adder); /* - Implement the method cl::listen_##m, and make it listen to stream + Implement the method cl::listen_##m, and make it listen to stream events of class m. */ -#define IMPLEMENT_TRANSLATOR_LISTENER(cl, m) \ -void \ -cl :: _internal_declare_ ## m () \ -{ \ - static translator_listener_record r; \ +#define IMPLEMENT_TRANSLATOR_LISTENER(cl, m) \ +void \ +cl :: _internal_declare_ ## m () \ +{ \ + static translator_listener_record r; \ add_translator_listener (&listener_list_, &r, _get_ ## m ## _listener, #m); \ -} \ - \ -ADD_SCM_INIT_FUNC (cl ## _declare_event_ ## m, cl::_internal_declare_ ## m); \ - \ -Listener \ +} \ + \ +ADD_SCM_INIT_FUNC (cl ## _declare_event_ ## m, cl::_internal_declare_ ## m); \ + \ +Listener \ cl :: _get_ ## m ## _listener (void *me, SCM unused) \ -{ \ - cl *obj = (cl *) me; \ +{ \ + cl *obj = (cl *) me; \ (void) unused; \ - return obj->GET_LISTENER (_listen_scm_ ## m); \ -} \ - \ -IMPLEMENT_LISTENER (cl, _listen_scm_ ## m) \ -void \ -cl::_listen_scm_ ## m (SCM sev) \ -{ \ - Stream_event *ev = unsmob_stream_event (sev); \ - protect_event (sev); \ - listen_ ## m (ev); \ + return obj->GET_LISTENER (_listen_scm_ ## m); \ +} \ + \ +IMPLEMENT_LISTENER (cl, _listen_scm_ ## m) \ +void \ +cl::_listen_scm_ ## m (SCM sev) \ +{ \ + Stream_event *ev = unsmob_stream_event (sev); \ + protect_event (sev); \ + listen_ ## m (ev); \ } #endif /* TRANSLATOR_ICC */ diff --git a/lily/include/tuplet-bracket.hh b/lily/include/tuplet-bracket.hh index 17285a0917..2f4bf38e19 100644 --- a/lily/include/tuplet-bracket.hh +++ b/lily/include/tuplet-bracket.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,24 +29,25 @@ class Tuplet_bracket public: DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (calc_positions, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_x_positions, (SCM)); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_connect_to_neighbors, (SCM smob)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); - - DECLARE_GROB_INTERFACE(); - static Grob* get_common_x (Spanner *); + + DECLARE_GROB_INTERFACE (); + static Grob *get_common_x (Spanner *); static void add_tuplet_bracket (Grob *me, Grob *smaller_bracket); static void get_bounds (Grob *, Grob **, Grob **); static void add_column (Grob *me, Item *); + static void add_script (Grob *me, Item *); static void add_beam (Grob *me, Grob *); - static Grob *parallel_beam (Grob *me, vector const &cols, - bool *equally_long); + static Grob *parallel_beam (Grob *me, vector const &cols, + bool *equally_long); static void calc_position_and_height (Grob *, Real *, Real *dy); static Stencil make_bracket (Grob *me, Axis protrusion_axis, - Offset dz, Drul_array height, - Interval gap, Drul_array widen, - Drul_array shorten); + Offset dz, Drul_array height, + Interval gap, Drul_array widen, + Drul_array shorten); static Direction get_default_dir (Grob *); }; diff --git a/lily/include/identifier-smob.hh b/lily/include/unpure-pure-container.hh similarity index 67% rename from lily/include/identifier-smob.hh rename to lily/include/unpure-pure-container.hh index 529e7919f2..ccf0971844 100644 --- a/lily/include/identifier-smob.hh +++ b/lily/include/unpure-pure-container.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,14 +17,14 @@ along with LilyPond. If not, see . */ -#ifndef IDENTIFIER_SMOB_HH -#define IDENTIFIER_SMOB_HH +#ifndef UNPURE_PURE_CONTAINER_HH +#define UNPURE_PURE_CONTAINER_HH #include "lily-guile.hh" -SCM package_identifier (SCM); -bool identifier_smob_p (SCM); -SCM unpack_identifier (SCM); - -#endif /* IDENTIFIER_SMOB_HH */ +bool is_unpure_pure_container (SCM s); +SCM unpure_pure_container_unpure_part (SCM smob); +SCM unpure_pure_container_pure_part (SCM smob); +SCM ly_make_unpure_pure_container (SCM, SCM); +#endif /* UNPURE_PURE_CONTAINER_HH */ diff --git a/lily/include/vaticana-ligature.hh b/lily/include/vaticana-ligature.hh index 7379510aa8..e3c6d51df8 100644 --- a/lily/include/vaticana-ligature.hh +++ b/lily/include/vaticana-ligature.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ struct Vaticana_ligature { DECLARE_SCHEME_CALLBACK (brew_ligature_primitive, (SCM)); DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); }; /* diff --git a/lily/include/volta-bracket.hh b/lily/include/volta-bracket.hh index 12821ffa0b..d9a7bfb249 100644 --- a/lily/include/volta-bracket.hh +++ b/lily/include/volta-bracket.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ class Volta_bracket_interface { public: - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); DECLARE_SCHEME_CALLBACK (print, (SCM)); static void modify_edge_height (Spanner *); static void add_bar (Grob *me, Item *bar); diff --git a/lily/input-scheme.cc b/lily/input-scheme.cc index 379c2fa9bd..280a32de9e 100644 --- a/lily/input-scheme.cc +++ b/lily/input-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,21 +23,39 @@ /* We don't use IMPLEMENT_TYPE_P, since the smobification part is implemented separately from the class. */ LY_DEFINE (ly_input_location_p, "ly:input-location?", 1, 0, 0, - (SCM x), - "Is @var{x} an @code{input-location}?") + (SCM x), + "Is @var{x} an @code{input-location}?") { return unsmob_input (x) ? SCM_BOOL_T : SCM_BOOL_F; } +LY_DEFINE (ly_input_warning, "ly:input-warning", 2, 0, 1, (SCM sip, SCM msg, SCM rest), + "Print @var{msg} as a GNU compliant warning message, pointing" + " to the location in @var{sip}. @var{msg} is interpreted" + " similar to @code{format}'s argument, using @var{rest}.") +{ + Input *ip = unsmob_input (sip); + + LY_ASSERT_TYPE (unsmob_input, sip, 1); + LY_ASSERT_TYPE (scm_is_string, msg, 2); + + msg = scm_simple_format (SCM_BOOL_F, msg, rest); + + string m = ly_scm2string (msg); + ip->warning (m); + + return SCM_UNSPECIFIED; +} + LY_DEFINE (ly_input_message, "ly:input-message", 2, 0, 1, (SCM sip, SCM msg, SCM rest), - "Print @var{msg} as a GNU compliant error message, pointing" - " to the location in @var{sip}. @var{msg} is interpreted" - " similar to @code{format}'s argument, using @var{rest}.") + "Print @var{msg} as a GNU compliant error message, pointing" + " to the location in @var{sip}. @var{msg} is interpreted" + " similar to @code{format}'s argument, using @var{rest}.") { Input *ip = unsmob_input (sip); LY_ASSERT_TYPE (unsmob_input, sip, 1); - LY_ASSERT_TYPE (scm_is_string, msg,2); + LY_ASSERT_TYPE (scm_is_string, msg, 2); msg = scm_simple_format (SCM_BOOL_F, msg, rest); @@ -47,12 +65,11 @@ LY_DEFINE (ly_input_message, "ly:input-message", 2, 0, 1, (SCM sip, SCM msg, SCM return SCM_UNSPECIFIED; } - LY_DEFINE (ly_input_file_line_char_column, - "ly:input-file-line-char-column", - 1, 0, 0, (SCM sip), - "Return input location in @var{sip} as" - " @code{(file-name line char column)}.") + "ly:input-file-line-char-column", + 1, 0, 0, (SCM sip), + "Return input location in @var{sip} as" + " @code{(file-name line char column)}.") { LY_ASSERT_TYPE (unsmob_input, sip, 1); Input *ip = unsmob_input (sip); @@ -60,24 +77,24 @@ LY_DEFINE (ly_input_file_line_char_column, int l, ch, col, offset = 0; ip->get_counts (&l, &ch, &col, &offset); return scm_list_4 (ly_string2scm (ip->file_string ()), - scm_from_int (l), - scm_from_int (ch), - scm_from_int (col)); + scm_from_int (l), + scm_from_int (ch), + scm_from_int (col)); } LY_DEFINE (ly_input_both_locations, - "ly:input-both-locations", - 1, 0, 0, (SCM sip), - "Return input location in @var{sip} as" - " @code{(file-name first-line first-column last-line last-column)}.") + "ly:input-both-locations", + 1, 0, 0, (SCM sip), + "Return input location in @var{sip} as" + " @code{(file-name first-line first-column last-line last-column)}.") { - + LY_ASSERT_TYPE (unsmob_input, sip, 1); Input *ip = unsmob_input (sip); - + return scm_list_5 (ly_string2scm (ip->file_string ()), - scm_from_int (ip->line_number ()), - scm_from_int (ip->column_number ()), - scm_from_int (ip->end_line_number ()), - scm_from_int (ip->end_column_number ())); + scm_from_int (ip->line_number ()), + scm_from_int (ip->column_number ()), + scm_from_int (ip->end_line_number ()), + scm_from_int (ip->end_column_number ())); } diff --git a/lily/input-smob.cc b/lily/input-smob.cc index 716c41d713..4d446ab6c0 100644 --- a/lily/input-smob.cc +++ b/lily/input-smob.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,9 +59,9 @@ equal_smob (SCM sa, SCM sb) { Input *a = (Input *) SCM_CELL_WORD_1 (sa); Input *b = (Input *) SCM_CELL_WORD_1 (sb); - if (a->get_source_file () == b->get_source_file () && - a->start () == b->start () && - a->end () == b->end ()) + if (a->get_source_file () == b->get_source_file () + && a->start () == b->start () + && a->end () == b->end ()) return SCM_BOOL_T; else return SCM_BOOL_F; diff --git a/lily/input.cc b/lily/input.cc index cbb609941f..bc1e79b373 100644 --- a/lily/input.cc +++ b/lily/input.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -78,49 +78,56 @@ Input::set_location (Input const &i_start, Input const &i_end) [file:line:column:][warning:]message */ -void -Input::message (string s) const +string +Input::message_string (string msg) const { if (source_file_) - s = location_string () + ": " + s + "\n" - + source_file_->quote_input (start_) + "\n"; - ::message (s); + return msg + "\n" + source_file_->quote_input (start_); + else + return msg; } +string +Input::message_location () const +{ + return (source_file_) ? location_string () : ""; +} +void +Input::error (string s) const +{ + ::non_fatal_error (message_string (s), message_location ()); + // UGH, fix naming or usage (use non_fatal_error in most places, instead) + // exit (1); +} void Input::programming_error (string s) const { - if (get_program_option ("warning-as-error")) - ::error (s); - else { - message (_f ("programming error: %s", s.c_str ())); - message (_ ("continuing, cross fingers") + "\n"); - } + ::programming_error (message_string (s), message_location ()); } +void +Input::non_fatal_error (string s) const +{ + ::non_fatal_error (message_string (s), message_location ()); +} void Input::warning (string s) const { - if (get_program_option ("warning-as-error")) - ::error (s); - else - message (_f ("warning: %s", s)); + ::warning (message_string (s), message_location ()); } void -Input::error (string s) const +Input::message (string s) const { - message (_f ("error: %s", s)); - // UGH, fix naming or usage - // exit (1); + ::message (message_string (s), true, message_location ()); } void -Input::non_fatal_error (string s) const +Input::debug_output (string s) const { - message (_f ("error: %s", s)); + ::debug_output (message_string (s), true, message_location ()); } string diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 56fa84ee26..0abc7e4329 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,13 +17,14 @@ along with LilyPond. If not, see . */ +#include "align-interface.hh" +#include "axis-group-interface.hh" #include "engraver.hh" +#include "page-layout-problem.hh" #include "pointer-group-interface.hh" #include "side-position-interface.hh" -#include "axis-group-interface.hh" -#include "align-interface.hh" -#include "text-interface.hh" #include "system.hh" +#include "text-interface.hh" #include "translator.icc" @@ -39,7 +40,8 @@ protected: SCM short_text_; vector axis_groups_; - + vector backup_axis_groups_; + virtual void finalize (); DECLARE_ACKNOWLEDGER (axis_group); void process_music (); @@ -78,7 +80,7 @@ Instrument_name_engraver::consider_start_spanner () SCM short_text = get_property ("shortInstrumentName"); if (!(Text_interface::is_markup (long_text) - || Text_interface::is_markup (short_text))) + || Text_interface::is_markup (short_text))) { long_text = get_property ("vocalName"); short_text = get_property ("shortVocalName"); @@ -87,11 +89,11 @@ Instrument_name_engraver::consider_start_spanner () if ((Text_interface::is_markup (long_text) || Text_interface::is_markup (short_text)) && (!text_spanner_ - || short_text_ != short_text - || long_text_ != long_text)) + || short_text_ != short_text + || long_text_ != long_text)) { if (text_spanner_) - stop_spanner (); + stop_spanner (); short_text_ = short_text; long_text_ = long_text; @@ -133,7 +135,13 @@ Instrument_name_engraver::acknowledge_axis_group (Grob_info info) && !info.grob ()->internal_has_interface (ly_symbol2scm ("volta-interface")) && (!Align_interface::has_interface (info.grob ()))) { - axis_groups_.push_back (info.grob ()); + if (Page_layout_problem::is_spaceable (info.grob ())) + axis_groups_.push_back (info.grob ()); + else + // By default, don't include non-spaceable staves in the + // support of an instrument name. However, if the only staves + // are non-spaceable, we'll fall back to using them. + backup_axis_groups_.push_back (info.grob ()); } } @@ -147,38 +155,40 @@ Instrument_name_engraver::finalize () void Instrument_name_engraver::stop_spanner () { + if (axis_groups_.empty ()) + axis_groups_ = backup_axis_groups_; + for (vsize i = 0; i < axis_groups_.size (); i++) Pointer_group_interface::add_grob (text_spanner_, - ly_symbol2scm ("elements"), - axis_groups_[i]); - + ly_symbol2scm ("elements"), + axis_groups_[i]); + text_spanner_->set_bound (RIGHT, - unsmob_grob (get_property ("currentCommandColumn"))); + unsmob_grob (get_property ("currentCommandColumn"))); Pointer_group_interface::set_ordered (text_spanner_, - ly_symbol2scm ("elements"), - false); + ly_symbol2scm ("elements"), + false); text_spanner_ = 0; } - ADD_ACKNOWLEDGER (Instrument_name_engraver, axis_group); ADD_TRANSLATOR (Instrument_name_engraver, - /* doc */ - "Create a system start text for instrument or vocal names.", - - /* create */ - "InstrumentName ", - - /* read */ - "currentCommandColumn " - "instrumentName " - "shortInstrumentName " - "shortVocalName " - "vocalName ", - - /* write */ - "" - ); + /* doc */ + "Create a system start text for instrument or vocal names.", + + /* create */ + "InstrumentName ", + + /* read */ + "currentCommandColumn " + "instrumentName " + "shortInstrumentName " + "shortVocalName " + "vocalName ", + + /* write */ + "" + ); diff --git a/lily/instrument-switch-engraver.cc b/lily/instrument-switch-engraver.cc index 8ae322fae0..c18ca4666b 100644 --- a/lily/instrument-switch-engraver.cc +++ b/lily/instrument-switch-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -24,7 +24,6 @@ #include "translator.icc" - class Instrument_switch_engraver : public Engraver { @@ -77,15 +76,15 @@ Instrument_switch_engraver::stop_translation_time_step () } ADD_TRANSLATOR (Instrument_switch_engraver, - /* doc */ - "Create a cue text for taking instrument.", - - /* create */ - "InstrumentSwitch ", - - /* read */ - "instrumentCueName ", - - /* write */ - "" - ); + /* doc */ + "Create a cue text for taking instrument.", + + /* create */ + "InstrumentSwitch ", + + /* read */ + "instrumentCueName ", + + /* write */ + "" + ); diff --git a/lily/interval-minefield.cc b/lily/interval-minefield.cc new file mode 100644 index 0000000000..ffe784fae8 --- /dev/null +++ b/lily/interval-minefield.cc @@ -0,0 +1,80 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + Jan Nieuwenhuizen + + 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 . +*/ + +#include "interval-minefield.hh" +#include "grob.hh" +Interval_minefield::Interval_minefield (Interval feasible_placements, Real bulk) +{ + feasible_placements_ = feasible_placements; + bulk_ = bulk; +} + +void +Interval_minefield::add_forbidden_interval (Interval forbidden) +{ + forbidden_intervals_.push_back (forbidden); +} + +Interval +Interval_minefield::feasible_placements () +{ + return feasible_placements_; +} + +/* + forbidden_intervals_ contains a vector of intervals in which + the beam cannot start. it iterates through these intervals, + pushing feasible_placements_ epsilon over or epsilon under a + collision. when this type of change happens, the loop is marked + as "dirty" and re-iterated. + + TODO: figure out a faster ways that this loop can happen via + a better search algorithm. +*/ +void +Interval_minefield::solve () +{ + Real epsilon = 1.0e-10; + bool dirty = false; + do + { + dirty = false; + for (vsize i = 0; i < forbidden_intervals_.size (); i++) + { + for (DOWN_and_UP (d)) + { + Interval feasible_widened = Interval (feasible_placements_[d], feasible_placements_[d]); + feasible_widened.widen (bulk_ / 2.); + + if (forbidden_intervals_[i][d] == d * infinity_f) + feasible_placements_[d] = d * infinity_f; + else if (forbidden_intervals_[i].contains (feasible_widened[d]) + || forbidden_intervals_[i].contains (feasible_widened[-d]) + || feasible_widened.contains (forbidden_intervals_[i][d]) + || feasible_widened.contains (forbidden_intervals_[i][-d])) + { + feasible_placements_[d] = forbidden_intervals_[i][d] + d * (epsilon + (bulk_ / 2)); + dirty = true; + } + } + } + } + while (dirty); +} diff --git a/lily/item-scheme.cc b/lily/item-scheme.cc index 405fe776cd..c316ac311e 100644 --- a/lily/item-scheme.cc +++ b/lily/item-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -20,10 +20,9 @@ #include "item.hh" - LY_DEFINE (ly_item_p, "ly:item?", - 1, 0, 0, (SCM g), - "Is @var{g} an @code{Item} object?") + 1, 0, 0, (SCM g), + "Is @var{g} an @code{Item} object?") { Grob *me = unsmob_grob (g); bool b = dynamic_cast (me); @@ -31,10 +30,10 @@ LY_DEFINE (ly_item_p, "ly:item?", } LY_DEFINE (ly_item_break_dir, "ly:item-break-dir", - 1, 0, 0, (SCM it), - "The break status direction of item @var{it}. @code{-1} means" - " end of line, @code{0}@tie{}unbroken, and" - " @code{1}@tie{}beginning of line.") + 1, 0, 0, (SCM it), + "The break status direction of item @var{it}. @w{@code{-1}} means" + " end of line, @code{0}@tie{}unbroken, and" + " @code{1}@tie{}beginning of line.") { LY_ASSERT_TYPE (unsmob_item, it, 1); Item *me = unsmob_item (it); diff --git a/lily/item.cc b/lily/item.cc index 0a853484e0..9941bc13c2 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,6 @@ #include "moment.hh" - Grob * Item::clone () const { @@ -56,9 +55,6 @@ Item::Item (Item const &s) bool Item::is_non_musical (Grob *me) { - if (me->original ()) - return false; - Item *i = dynamic_cast (me->get_parent (X_AXIS)); return i ? Item::is_non_musical (i) : to_boolean (me->get_property ("non-musical")); } @@ -81,15 +77,13 @@ void Item::copy_breakable_items () { Drul_array new_copies; - Direction i = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *dolly = clone (); Item *item = dynamic_cast (dolly); get_root_system (this)->typeset_grob (item); - new_copies[i] = item; + new_copies[d] = item; } - while (flip (&i) != LEFT); broken_to_drul_ = new_copies; } @@ -106,7 +100,7 @@ Item::is_broken () const void Item::discretionary_processing () { - if (is_broken ()) + if (is_broken () || original ()) return; if (Item::is_non_musical (this)) @@ -119,14 +113,12 @@ Item::find_broken_piece (System *l) const if (get_system () == l) return (Item *) (this); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *s = broken_to_drul_[d]; if (s && s->get_system () == l) - return s; + return s; } - while (flip (&d) != LEFT); return 0; } @@ -169,7 +161,7 @@ Item::handle_prebroken_dependencies () bool Item::break_visible (Grob *g) { - Item *it = dynamic_cast (g); + Item *it = dynamic_cast (g); SCM vis = g->get_property ("break-visibility"); if (scm_is_vector (vis)) return to_boolean (scm_c_vector_ref (vis, it->break_status_dir () + 1)); @@ -185,9 +177,9 @@ Item::pure_is_visible (int start, int end) const int pos = 1; int pc_rank = Paper_column::get_rank (get_column ()); if (pc_rank == start) - pos = 2; + pos = 2; else if (pc_rank == end) - pos = 0; + pos = 0; return to_boolean (scm_vector_ref (vis, scm_from_int (pos))); } return true; @@ -201,32 +193,27 @@ Item::spanned_rank_interval () const } Interval_t -spanned_time_interval (Item *l, Item *r) +spanned_time_interval (Item *l, Item *r) { - Drul_array bounds (l, r); + Drul_array bounds (l, r); Interval_t iv; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { if (bounds[d] && bounds[d]->get_column ()) - iv[d] = robust_scm2moment (bounds[d]->get_column ()->get_property ("when"), - iv[d]); + iv[d] = robust_scm2moment (bounds[d]->get_column ()->get_property ("when"), + iv[d]); } - while (flip (&d) != LEFT); - do + for (LEFT_and_RIGHT (d)) { if (!bounds[d] || !bounds[d]->get_column ()) - iv[d] = iv[-d]; + iv[d] = iv[-d]; } - while (flip (&d) != LEFT); - - + return iv; } - void Item::derived_mark () const { @@ -247,53 +234,63 @@ Item::pure_height (Grob *g, int start, int end) { if (cached_pure_height_valid_) return cached_pure_height_ + pure_relative_y_coordinate (g, start, end); + /* Note: cached_pure_height_ does not notice if start changes, implicitly + assuming that Items' pure_heights do not depend on 'start' or 'end'. + Accidental_interface::pure_height(), however, does depend on 'start'. + */ - cached_pure_height_ = Grob::pure_height (this, start, end); - cached_pure_height_valid_ = true; + cache_pure_height (Grob::pure_height (this, start, end)); return cached_pure_height_ + pure_relative_y_coordinate (g, start, end); } +void +Item::cache_pure_height (Interval height) +{ + cached_pure_height_ = height; + cached_pure_height_valid_ = true; +} + ADD_INTERFACE (Item, - "Grobs can be distinguished in their role in the horizontal" - " spacing. Many grobs define constraints on the spacing by" - " their sizes, for example, note heads, clefs, stems, and all" - " other symbols with a fixed shape. These grobs form a" - " subtype called @code{Item}.\n" - "\n" - "Some items need special treatment for line breaking. For" - " example, a clef is normally only printed at the start of a" - " line (i.e., after a line break). To model this," - " @q{breakable} items (clef, key signature, bar lines, etc.)" - " are copied twice. Then we have three versions of each" - " breakable item: one version if there is no line break, one" - " version that is printed before the line break (at the end of" - " a system), and one version that is printed after the line" - " break.\n" - "\n" - "Whether these versions are visible and take up space is" - " determined by the outcome of the @code{break-visibility}" - " grob property, which is a function taking a direction" - " (@code{-1}, @code{0} or@tie{}@code{1}) as an argument. It" - " returns a cons of booleans, signifying whether this grob" - " should be transparent and have no extent.\n" - "\n" - "The following variables for @code{break-visibility} are" - " predefined:\n" - "@example\n" - " grob will show: before no after\n" - " break break break\n" - " all-invisible no no no\n" - " begin-of-line-visible no no yes\n" - " end-of-line-visible yes no no\n" - " all-visible yes yes yes\n" - " begin-of-line-invisible yes yes no\n" - " end-of-line-invisible no yes yes\n" - " center-invisible yes no yes\n" - "@end example", - - /* properties */ - "break-visibility " - "extra-spacing-height " - "extra-spacing-width " - "non-musical " - ); + "Grobs can be distinguished in their role in the horizontal" + " spacing. Many grobs define constraints on the spacing by" + " their sizes, for example, note heads, clefs, stems, and all" + " other symbols with a fixed shape. These grobs form a" + " subtype called @code{Item}.\n" + "\n" + "Some items need special treatment for line breaking. For" + " example, a clef is normally only printed at the start of a" + " line (i.e., after a line break). To model this," + " @q{breakable} items (clef, key signature, bar lines, etc.)" + " are copied twice. Then we have three versions of each" + " breakable item: one version if there is no line break, one" + " version that is printed before the line break (at the end of" + " a system), and one version that is printed after the line" + " break.\n" + "\n" + "Whether these versions are visible and take up space is" + " determined by the outcome of the @code{break-visibility}" + " grob property, which is a function taking a direction" + " (@w{@code{-1}}, @code{0} or@tie{}@code{1}) as an argument. It" + " returns a cons of booleans, signifying whether this grob" + " should be transparent and have no extent.\n" + "\n" + "The following variables for @code{break-visibility} are" + " predefined:\n" + "@example\n" + " grob will show: before no after\n" + " break break break\n" + " all-invisible no no no\n" + " begin-of-line-visible no no yes\n" + " end-of-line-visible yes no no\n" + " all-visible yes yes yes\n" + " begin-of-line-invisible yes yes no\n" + " end-of-line-invisible no yes yes\n" + " center-invisible yes no yes\n" + "@end example", + + /* properties */ + "break-visibility " + "extra-spacing-height " + "extra-spacing-width " + "non-musical " + ); diff --git a/lily/keep-alive-together-engraver.cc b/lily/keep-alive-together-engraver.cc index 8cda5a0d5f..f6ba297ccf 100644 --- a/lily/keep-alive-together-engraver.cc +++ b/lily/keep-alive-together-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Joe Neeman + Copyright (C) 2010--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class Keep_alive_together_engraver: public Engraver { - vector group_spanners_; + vector group_spanners_; public: TRANSLATOR_DECLARATIONS (Keep_alive_together_engraver); @@ -65,21 +65,21 @@ Keep_alive_together_engraver::finalize () ADD_ACKNOWLEDGER (Keep_alive_together_engraver, hara_kiri_group_spanner); ADD_TRANSLATOR (Keep_alive_together_engraver, - /* doc */ - "This engraver collects all @code{Hara_kiri_group_spanner}s " - "that are created in contexts at or below its own. " - "These spanners are then tied together so that one will " - "be removed only if all are removed. For example, " - "if a @code{StaffGroup} uses this engraver, then the staves " - "in the group will all be visible as long as there is a note " - "in at least one of them.", - - /* create */ - "", - - /* read */ - "", - - /* write */ - "" - ); + /* doc */ + "This engraver collects all @code{Hara_kiri_group_spanner}s " + "that are created in contexts at or below its own. " + "These spanners are then tied together so that one will " + "be removed only if all are removed. For example, " + "if a @code{StaffGroup} uses this engraver, then the staves " + "in the group will all be visible as long as there is a note " + "in at least one of them.", + + /* create */ + "", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 2264e27876..5707b548b9 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,10 +17,10 @@ along with LilyPond. If not, see . */ -#include "bar-line.hh" #include "clef.hh" #include "context.hh" #include "engraver.hh" +#include "international.hh" #include "item.hh" #include "pitch.hh" #include "protected-scm.hh" @@ -63,55 +63,52 @@ Key_engraver::Key_engraver () cancellation_ = 0; } - void Key_engraver::create_key (bool is_default) { if (!item_) { item_ = make_item ("KeySignature", - key_event_ ? key_event_->self_scm () : SCM_EOL); + key_event_ ? key_event_->self_scm () : SCM_EOL); /* Use middleCClefPosition rather than middleCPosition, because cue - * notes with a different clef will modify middleCPosition. The + * 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 ("middleCClefPosition")); + get_property ("middleCClefPosition")); SCM last = get_property ("lastKeySignature"); SCM key = get_property ("keySignature"); if ((to_boolean (get_property ("printKeyCancellation")) - || key == SCM_EOL) - && !scm_is_eq (last, key)) - { - SCM restore = SCM_EOL; - SCM *tail = &restore; - for (SCM s = last; scm_is_pair (s); s = scm_cdr (s)) - { - SCM new_alter_pair = scm_assoc (scm_caar (s), key); - Rational old_alter = robust_scm2rational (scm_cdar (s), 0); - if (new_alter_pair == SCM_BOOL_F - || ((ly_scm2rational (scm_cdr (new_alter_pair)) - old_alter) * old_alter - < Rational (0))) - { - *tail = scm_cons (scm_car (s), *tail); - tail = SCM_CDRLOC (*tail); - } - } - - if (scm_is_pair (restore)) - { - cancellation_ = make_item ("KeyCancellation", - key_event_ - ? key_event_->self_scm () : SCM_EOL); - - cancellation_->set_property ("alteration-alist", scm_reverse (restore)); - cancellation_->set_property ("c0-position", - get_property ("middleCPosition")); - } - } + || key == SCM_EOL) + && !scm_is_eq (last, key)) + { + SCM restore = SCM_EOL; + for (SCM s = last; scm_is_pair (s); s = scm_cdr (s)) + { + SCM new_alter_pair = scm_assoc (scm_caar (s), key); + Rational old_alter = robust_scm2rational (scm_cdar (s), 0); + if (new_alter_pair == SCM_BOOL_F + || ((ly_scm2rational (scm_cdr (new_alter_pair)) - old_alter) * old_alter + < Rational (0))) + { + restore = scm_cons (scm_car (s), restore); + } + } + + if (scm_is_pair (restore)) + { + cancellation_ = make_item ("KeyCancellation", + key_event_ + ? key_event_->self_scm () : SCM_EOL); + + cancellation_->set_property ("alteration-alist", restore); + cancellation_->set_property ("c0-position", + get_property ("middleCPosition")); + } + } item_->set_property ("alteration-alist", scm_reverse (key)); } @@ -179,31 +176,31 @@ Key_engraver::read_event (Stream_event const *r) scm_is_pair (s) && scm_is_pair (alist); s = scm_cdr (s)) { SCM head = scm_member (scm_car (s), alist); - + if (scm_is_pair (head)) - { - accs = scm_cons (scm_car (head), accs); - alist = scm_delete_x (scm_car (head), alist); - } + { + accs = scm_cons (scm_car (head), accs); + alist = scm_delete_x (scm_car (head), alist); + } } if (scm_is_pair (alist)) { bool warn = false; for (SCM s = alist; scm_is_pair (s); s = scm_cdr (s)) - if (ly_scm2rational (scm_cdar (s))) - { - warn = true; - accs = scm_cons (scm_car (s), accs); - } + if (ly_scm2rational (scm_cdar (s))) + { + warn = true; + accs = scm_cons (scm_car (s), accs); + } if (warn) - r->origin ()->warning ("Incomplete keyAlterationOrder for key signature"); + r->origin ()->warning (_ ("Incomplete keyAlterationOrder for key signature")); } - - context ()->set_property ("keySignature", scm_reverse (accs)); + + context ()->set_property ("keySignature", scm_reverse_x (accs, SCM_EOL)); context ()->set_property ("tonic", - r->get_property ("tonic")); + r->get_property ("tonic")); } void @@ -220,25 +217,25 @@ ADD_ACKNOWLEDGER (Key_engraver, clef); ADD_ACKNOWLEDGER (Key_engraver, bar_line); ADD_TRANSLATOR (Key_engraver, - /* doc */ - "Engrave a key signature.", - - /* create */ - "KeyCancellation " - "KeySignature ", - - /* read */ - "createKeyOnClefChange " - "explicitKeySignatureVisibility " - "extraNatural " - "keyAlterationOrder " - "keySignature " - "lastKeySignature " - "printKeyCancellation " - "middleCClefPosition ", - - /* write */ - "keySignature " - "lastKeySignature " - "tonic " - ); + /* doc */ + "Engrave a key signature.", + + /* create */ + "KeyCancellation " + "KeySignature ", + + /* read */ + "createKeyOnClefChange " + "explicitKeySignatureVisibility " + "extraNatural " + "keyAlterationOrder " + "keySignature " + "lastKeySignature " + "printKeyCancellation " + "middleCClefPosition ", + + /* write */ + "keySignature " + "lastKeySignature " + "tonic " + ); diff --git a/lily/key-performer.cc b/lily/key-performer.cc index 93d932b8d5..a611405244 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -62,26 +62,26 @@ Key_performer::process_music () SCM acc = scm_call_1 (proc, pitchlist); Pitch key_do (0, - scm_to_int (scm_caar (pitchlist)), - ly_scm2rational (scm_cdar (pitchlist))); + scm_to_int (scm_caar (pitchlist)), + ly_scm2rational (scm_cdar (pitchlist))); Pitch c_do (0, 0, 0); SCM c_pitchlist - = ly_transpose_key_alist (pitchlist, - pitch_interval (key_do, c_do).smobbed_copy ()); + = ly_transpose_key_alist (pitchlist, + pitch_interval (key_do, c_do).smobbed_copy ()); /* MIDI keys are too limited for lilypond scales. - We check for minor scale and assume major otherwise. */ + We check for minor scale and assume major otherwise. */ SCM third = scm_assoc (scm_from_int (2), - c_pitchlist); + c_pitchlist); bool minor = (scm_is_pair (third) - && scm_is_number (scm_cdr (third)) - && ly_scm2rational (scm_cdr (third)) == FLAT_ALTERATION); + && scm_is_number (scm_cdr (third)) + && ly_scm2rational (scm_cdr (third)) == FLAT_ALTERATION); audio_ = new Audio_key (scm_to_int (acc), - !minor); + !minor); Audio_element_info info (audio_, key_ev_); announce_element (info); @@ -107,15 +107,15 @@ Key_performer::listen_key_change (Stream_event *ev) } ADD_TRANSLATOR (Key_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/key-signature-interface.cc b/lily/key-signature-interface.cc index f05dc7dabe..a7b65530fc 100644 --- a/lily/key-signature-interface.cc +++ b/lily/key-signature-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys keyplacement by Mats Bengtsson @@ -34,7 +34,6 @@ struct Key_signature_interface DECLARE_GROB_INTERFACE (); }; - /* TODO - space the `natural' signs wider @@ -52,7 +51,7 @@ Key_signature_interface::print (SCM smob) SCM c0s = me->get_property ("c0-position"); bool is_cancellation = me->internal_has_interface - (ly_symbol2scm ("key-cancellation-interface")); + (ly_symbol2scm ("key-cancellation-interface")); /* SCM lists are stacks, so we work from right to left, ending with @@ -62,60 +61,60 @@ Key_signature_interface::print (SCM smob) int last_pos = -1000; SCM last_glyph_name = SCM_BOOL_F; SCM padding_pairs = me->get_property ("padding-pairs"); - + Font_metric *fm = Font_interface::get_default_font (me); SCM alist = me->get_property ("glyph-name-alist"); for (SCM s = me->get_property ("alteration-alist"); scm_is_pair (s); s = scm_cdr (s)) { SCM alt = is_cancellation - ? scm_from_int (0) - : scm_cdar (s); + ? scm_from_int (0) + : scm_cdar (s); SCM glyph_name_scm = ly_assoc_get (alt, alist, SCM_BOOL_F); if (!scm_is_string (glyph_name_scm)) - { - me->warning (_f ("No glyph found for alteration: %s", - ly_scm2rational (alt).to_string ().c_str ())); - continue; - } + { + me->warning (_f ("No glyph found for alteration: %s", + ly_scm2rational (alt).to_string ().c_str ())); + continue; + } string glyph_name = ly_scm2string (glyph_name_scm); Stencil acc (fm->find_by_name (glyph_name)); if (acc.is_empty ()) - me->warning (_ ("alteration not found")); + me->warning (_ ("alteration not found")); else - { - SCM what = scm_caar (s); - - SCM proc = ly_lily_module_constant ("key-signature-interface::alteration-position"); - - int pos = scm_to_int (scm_call_3 (proc, what, scm_cdar (s), c0s)); - acc.translate_axis (pos * inter, Y_AXIS); - - /* - The natural sign (unlike flat & sharp) - has vertical edges on both sides. A little padding is - needed to prevent collisions. - */ - Real padding = robust_scm2double (me->get_property ("padding"), - 0.0); - SCM handle = scm_assoc (scm_cons (glyph_name_scm, last_glyph_name), - padding_pairs); - if (scm_is_pair (handle)) - padding = robust_scm2double (scm_cdr (handle), 0.0); - else if (glyph_name == "accidentals.natural" - && last_pos < pos + 2 - && last_pos > pos - 6) - padding += 0.3; - - mol.add_at_edge (X_AXIS, LEFT, acc, padding); - - last_pos = pos; - last_glyph_name = glyph_name_scm; - } + { + SCM what = scm_caar (s); + + SCM proc = ly_lily_module_constant ("key-signature-interface::alteration-position"); + + int pos = scm_to_int (scm_call_3 (proc, what, scm_cdar (s), c0s)); + acc.translate_axis (pos * inter, Y_AXIS); + + /* + The natural sign (unlike flat & sharp) + has vertical edges on both sides. A little padding is + needed to prevent collisions. + */ + Real padding = robust_scm2double (me->get_property ("padding"), + 0.0); + SCM handle = scm_assoc (scm_cons (glyph_name_scm, last_glyph_name), + padding_pairs); + if (scm_is_pair (handle)) + padding = robust_scm2double (scm_cdr (handle), 0.0); + else if (glyph_name == "accidentals.natural" + && last_pos < pos + 2 + && last_pos > pos - 6) + padding += 0.3; + + mol.add_at_edge (X_AXIS, LEFT, acc, padding); + + last_pos = pos; + last_glyph_name = glyph_name_scm; + } } mol.align_to (X_AXIS, LEFT); @@ -124,12 +123,12 @@ Key_signature_interface::print (SCM smob) } ADD_INTERFACE (Key_signature_interface, - "A group of accidentals, to be printed as signature sign.", - - /* properties */ - "alteration-alist " - "c0-position " - "glyph-name-alist " - "padding " - "padding-pairs " - ); + "A group of accidentals, to be printed as signature sign.", + + /* properties */ + "alteration-alist " + "c0-position " + "glyph-name-alist " + "padding " + "padding-pairs " + ); diff --git a/lily/laissez-vibrer-engraver.cc b/lily/laissez-vibrer-engraver.cc index 49c64ce772..edbd2c1dfb 100644 --- a/lily/laissez-vibrer-engraver.cc +++ b/lily/laissez-vibrer-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -29,7 +29,7 @@ class Laissez_vibrer_engraver : public Engraver { Stream_event *event_; Grob *lv_column_; - vector lv_ties_; + vector lv_ties_; void stop_translation_timestep (); DECLARE_ACKNOWLEDGER (note_head); @@ -63,19 +63,35 @@ Laissez_vibrer_engraver::listen_laissez_vibrer (Stream_event *ev) void Laissez_vibrer_engraver::acknowledge_note_head (Grob_info inf) { - if (!event_) + /* use the heard event_ for all note heads, or an individual event for just + * a single note head (attached as an articulation inside a chord) */ + Stream_event *tie_ev = event_; + Grob *head = inf.grob (); + Stream_event *note_ev = unsmob_stream_event (head->get_property ("cause")); + if (!tie_ev && note_ev && note_ev->in_event_class ("note-event")) + { + SCM articulations = note_ev->get_property ("articulations"); + for (SCM s = articulations; !tie_ev && scm_is_pair (s); s = scm_cdr (s)) + { + Stream_event *ev = unsmob_stream_event (scm_car (s)); + if (ev && ev->in_event_class ("laissez-vibrer-event")) + tie_ev = ev; + } + } + + if (!tie_ev) return; - SCM cause = event_->self_scm (); + SCM cause = tie_ev->self_scm (); if (!lv_column_) lv_column_ = make_item ("LaissezVibrerTieColumn", cause); Grob *lv_tie = make_item ("LaissezVibrerTie", cause); - lv_tie->set_object ("note-head", inf.grob ()->self_scm ()); + lv_tie->set_object ("note-head", head->self_scm ()); Pointer_group_interface::add_grob (lv_column_, ly_symbol2scm ("ties"), - lv_tie); + lv_tie); if (is_direction (unsmob_stream_event (cause)->get_property ("direction"))) { @@ -90,16 +106,16 @@ Laissez_vibrer_engraver::acknowledge_note_head (Grob_info inf) ADD_ACKNOWLEDGER (Laissez_vibrer_engraver, note_head); ADD_TRANSLATOR (Laissez_vibrer_engraver, - /* doc */ - "Create laissez vibrer items.", + /* doc */ + "Create laissez vibrer items.", - /* create */ - "LaissezVibrerTie " - "LaissezVibrerTieColumn ", + /* create */ + "LaissezVibrerTie " + "LaissezVibrerTieColumn ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/least-squares.cc b/lily/least-squares.cc index 048920b192..0d539104fe 100644 --- a/lily/least-squares.cc +++ b/lily/least-squares.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,21 +23,21 @@ void minimise_least_squares (Real *coef, Real *offset, - vector const &input) + vector const &input) { Real sx = 0.0; Real sy = 0.0; Real sqx = 0.0; Real sxy = 0.0; - for (vsize i = 0; i < input.size ();i++) + for (vsize i = 0; i < input.size (); i++) { Real x = input[i][X_AXIS]; Real y = input[i][Y_AXIS]; sx += x; sy += y; sqx += sqr (x); - sxy += x*y; + sxy += x * y; } int count = input.size (); @@ -49,8 +49,8 @@ minimise_least_squares (Real *coef, Real *offset, if (!count || !den) { programming_error ("minimise_least_squares (): Nothing to minimise\n" - "This means that vertical spacing is triggered\n" - "before line breaking\n"); + "This means that vertical spacing is triggered\n" + "before line breaking\n"); *coef = 0.0; *offset = count ? sy / count : 0.0; } diff --git a/lily/ledger-line-engraver.cc b/lily/ledger-line-engraver.cc index bd0a323e97..614874a8e8 100644 --- a/lily/ledger-line-engraver.cc +++ b/lily/ledger-line-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,8 +25,8 @@ class Ledger_line_engraver : public Engraver { Spanner *span_; - vector ledgered_grobs_; - + vector ledgered_grobs_; + public: TRANSLATOR_DECLARATIONS (Ledger_line_engraver); @@ -62,12 +62,12 @@ Ledger_line_engraver::stop_translation_timestep () if (span_) { for (vsize i = 0; i < ledgered_grobs_.size (); i++) - { - if (!to_boolean (ledgered_grobs_[i]->get_property ("no-ledgers"))) - Pointer_group_interface::add_grob (span_, - ly_symbol2scm ("note-heads"), - ledgered_grobs_[i]); - } + { + if (!to_boolean (ledgered_grobs_[i]->get_property ("no-ledgers"))) + Pointer_group_interface::add_grob (span_, + ly_symbol2scm ("note-heads"), + ledgered_grobs_[i]); + } } ledgered_grobs_.clear (); @@ -77,7 +77,7 @@ void Ledger_line_engraver::process_music () { /* - Need to do this, otherwise the first note might miss ledgers. + Need to do this, otherwise the first note might miss ledgers. */ if (!span_) start_spanner (); @@ -124,16 +124,16 @@ Ledger_line_engraver::acknowledge_ledgered (Grob_info s) ADD_ACKNOWLEDGER (Ledger_line_engraver, ledgered); ADD_ACKNOWLEDGER (Ledger_line_engraver, staff_symbol); ADD_TRANSLATOR (Ledger_line_engraver, - /* doc */ - "Create the spanner to draw ledger lines, and notices" - " objects that need ledger lines.", + /* doc */ + "Create the spanner to draw ledger lines, and notices" + " objects that need ledger lines.", - /* create */ - "LedgerLineSpanner ", + /* create */ + "LedgerLineSpanner ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/ledger-line-spanner.cc b/lily/ledger-line-spanner.cc index a518bc9225..114ddb3f02 100644 --- a/lily/ledger-line-spanner.cc +++ b/lily/ledger-line-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,90 +32,38 @@ struct Ledger_line_spanner { DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); - static Stencil brew_ledger_lines (Grob *me, - int pos, - Interval, - Real, Real, - Interval x_extent, - Real left_shorten); - DECLARE_GROB_INTERFACE (); }; -Stencil -Ledger_line_spanner::brew_ledger_lines (Grob *staff, - int pos, - Interval staff_extent, - Real halfspace, - Real ledgerlinethickness, - Interval x_extent, - Real left_shorten) -{ - int line_count = (staff_extent.contains (pos) - ? 0 - : sign (pos) * int (rint (pos - staff_extent[Direction (sign (pos))])) / 2); - Stencil stencil; - if (line_count) - { - Real blotdiameter = ledgerlinethickness; - Interval y_extent - = Interval (-0.5 * (ledgerlinethickness), - +0.5 * (ledgerlinethickness)); - Stencil proto_ledger_line - = Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter); - - x_extent[LEFT] += left_shorten; - Stencil proto_first_line - = Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter); - - Direction dir = (Direction)sign (pos); - Real offs = (Staff_symbol_referencer::on_line (staff, pos)) - ? 0.0 - : -dir * halfspace; - - offs += pos * halfspace; - for (int i = 0; i < line_count; i++) - { - Stencil ledger_line ((i == 0) - ? proto_first_line - : proto_ledger_line); - ledger_line.translate_axis (-dir * halfspace * i * 2 + offs, Y_AXIS); - stencil.add_stencil (ledger_line); - } - } - - return stencil; -} - static void set_rods (Drul_array const ¤t_extents, - Drul_array const &previous_extents, - Item *current_column, - Item *previous_column, - Real min_length_fraction) + Drul_array const &previous_extents, + Item *current_column, + Item *previous_column, + Real min_length_fraction) { Direction d = UP; do { if (!current_extents[d].is_empty () - && !previous_extents[d].is_empty ()) - { - Real total_head_length = previous_extents[d].length () - + current_extents[d].length (); - - Rod rod; - rod.distance_ = total_head_length - * (3 / 2 * min_length_fraction) - /* - we go from right to left. - */ - - previous_extents[d][LEFT] - + current_extents[d][RIGHT]; - - rod.item_drul_[LEFT] = current_column; - rod.item_drul_[RIGHT] = previous_column; - rod.add_to_cols (); - } + && !previous_extents[d].is_empty ()) + { + Real total_head_length = previous_extents[d].length () + + current_extents[d].length (); + + Rod rod; + rod.distance_ = total_head_length + * (3 / 2 * min_length_fraction) + /* + we go from right to left. + */ + - previous_extents[d][LEFT] + + current_extents[d][RIGHT]; + + rod.item_drul_[LEFT] = current_column; + rod.item_drul_[RIGHT] = previous_column; + rod.add_to_cols (); + } } while (flip (&d) != DOWN); } @@ -146,7 +94,7 @@ Ledger_line_spanner::set_spacing_rods (SCM smob) Interval staff_extent = staff->extent (staff, Y_AXIS); staff_extent *= 1 / halfspace; - + /* Run through heads using a loop. Since Ledger_line_spanner can contain a lot of noteheads, superlinear performance is too slow. @@ -158,35 +106,35 @@ Ledger_line_spanner::set_spacing_rods (SCM smob) int pos = Staff_symbol_referencer::get_rounded_position (h); if (staff_extent.contains (pos)) - continue; + continue; Item *column = h->get_column (); if (current_column != column) - { - set_rods (current_extents, previous_extents, - current_column, previous_column, - min_length_fraction); + { + set_rods (current_extents, previous_extents, + current_column, previous_column, + min_length_fraction); - previous_column = current_column; - current_column = column; - previous_extents = current_extents; + previous_column = current_column; + current_column = column; + previous_extents = current_extents; - current_extents[DOWN].set_empty (); - current_extents[UP].set_empty (); - } + current_extents[DOWN].set_empty (); + current_extents[UP].set_empty (); + } Interval head_extent = h->extent (column, X_AXIS); Direction vdir = Direction (sign (pos)); if (!vdir) - continue; + continue; current_extents[vdir].unite (head_extent); } if (previous_column && current_column) set_rods (current_extents, previous_extents, - current_column, previous_column, - min_length_fraction); + current_column, previous_column, + min_length_fraction); return SCM_UNSPECIFIED; } @@ -196,7 +144,6 @@ struct Ledger_request Interval ledger_extent_; Interval head_extent_; int position_; - bool excentric_; Ledger_request () { ledger_extent_.set_empty (); @@ -231,12 +178,11 @@ Ledger_line_spanner::print (SCM smob) Interval staff_extent = staff->extent (staff, Y_AXIS); staff_extent *= 1 / halfspace; - + Real length_fraction = robust_scm2double (me->get_property ("length-fraction"), 0.25); Stencil ledgers; - Stencil default_ledger; Grob *common[NO_AXES]; @@ -245,8 +191,8 @@ Ledger_line_spanner::print (SCM smob) Axis a = Axis (i); common[a] = common_refpoint_of_array (heads, me, a); for (vsize i = heads.size (); i--;) - if (Grob *g = unsmob_grob (me->get_object ("accidental-grob"))) - common[a] = common[a]->common_refpoint (g, a); + if (Grob *g = unsmob_grob (me->get_object ("accidental-grob"))) + common[a] = common[a]->common_refpoint (g, a); } Ledger_requests reqs; @@ -256,19 +202,19 @@ Ledger_line_spanner::print (SCM smob) int pos = Staff_symbol_referencer::get_rounded_position (h); if (pos && !staff_extent.contains (pos)) - { - Interval head_extent = h->extent (common[X_AXIS], X_AXIS); - Interval ledger_extent = head_extent; - ledger_extent.widen (length_fraction * head_extent.length ()); - - Direction vdir = Direction (sign (pos)); - int rank = h->get_column ()->get_rank (); - - reqs[rank][vdir].ledger_extent_.unite (ledger_extent); - reqs[rank][vdir].head_extent_.unite (head_extent); - reqs[rank][vdir].position_ - = vdir * max (vdir * reqs[rank][vdir].position_, vdir * pos); - } + { + Interval head_extent = h->extent (common[X_AXIS], X_AXIS); + Interval ledger_extent = head_extent; + ledger_extent.widen (length_fraction * head_extent.length ()); + + Direction vdir = Direction (sign (pos)); + int rank = h->get_column ()->get_rank (); + + reqs[rank][vdir].ledger_extent_.unite (ledger_extent); + reqs[rank][vdir].head_extent_.unite (head_extent); + reqs[rank][vdir].position_ + = vdir * max (vdir * reqs[rank][vdir].position_, vdir * pos); + } } // determine maximum size for non-colliding ledger. @@ -278,38 +224,34 @@ Ledger_line_spanner::print (SCM smob) i != reqs.end (); last = i++) { if (last == reqs.end ()) - continue; - - Direction d = DOWN; - do - { - if (!staff_extent.contains (last->second[d].position_) - && !staff_extent.contains (i->second[d].position_)) - { - Real center - = (last->second[d].head_extent_[RIGHT] - + i->second[d].head_extent_[LEFT]) / 2; - - Direction which = LEFT; - do - { - Ledger_request &lr = ((which == LEFT) ? * last : *i).second[d]; - - // due tilt of quarter note-heads - /* FIXME */ - bool both - = (!staff_extent.contains (last->second[d].position_ - - sign (last->second[d].position_)) - && !staff_extent.contains (i->second[d].position_ - - sign (i->second[d].position_))); - Real limit = (center + (both ? which * gap / 2 : 0)); - lr.ledger_extent_.at (-which) - = which * max (which * lr.ledger_extent_[-which], which * limit); - } - while (flip (&which) != LEFT); - } - } - while (flip (&d) != DOWN); + continue; + + for (DOWN_and_UP (d)) + { + if (!staff_extent.contains (last->second[d].position_) + && !staff_extent.contains (i->second[d].position_)) + { + Real center + = (last->second[d].head_extent_[RIGHT] + + i->second[d].head_extent_[LEFT]) / 2; + + for (LEFT_and_RIGHT (which)) + { + Ledger_request &lr = ((which == LEFT) ? * last : *i).second[d]; + + // due tilt of quarter note-heads + /* FIXME */ + bool both + = (!staff_extent.contains (last->second[d].position_ + - sign (last->second[d].position_)) + && !staff_extent.contains (i->second[d].position_ + - sign (i->second[d].position_))); + Real limit = (center + (both ? which * gap / 2 : 0)); + lr.ledger_extent_.at (-which) + = which * max (which * lr.ledger_extent_[-which], which * limit); + } + } + } } // create ledgers for note heads @@ -320,59 +262,77 @@ Ledger_line_spanner::print (SCM smob) Item *h = dynamic_cast (heads[i]); int pos = Staff_symbol_referencer::get_rounded_position (h); - if (!staff_extent.contains (pos - sign (pos)) && !staff_extent.is_empty ()) - { - Interval head_size = h->extent (common[X_AXIS], X_AXIS); - Interval ledger_size = head_size; - ledger_size.widen (ledger_size.length () * length_fraction); - - Interval max_size = reqs[h->get_column ()->get_rank ()] - [Direction (sign (pos))].ledger_extent_; - - ledger_size.intersect (max_size); - Real left_shorten = 0.0; - if (Grob *g = unsmob_grob (h->get_object ("accidental-grob"))) - { - Interval accidental_size = g->extent (common[X_AXIS], X_AXIS); - Real d - = linear_combination (Drul_array (accidental_size[RIGHT], - head_size[LEFT]), - 0.0); - - left_shorten = max (-ledger_size[LEFT] + d, 0.0); - - /* - TODO: shorten 2 ledger lines for the case natural + - downstem. - */ - } - - ledgers.add_stencil (brew_ledger_lines (staff, pos, staff_extent, - halfspace, - ledgerlinethickness, - ledger_size, - left_shorten)); - } + vector ledger_positions = Staff_symbol::ledger_positions (staff, pos); + if (!ledger_positions.empty ()) + { + int ledger_count = ledger_positions.size (); + Interval head_size = h->extent (common[X_AXIS], X_AXIS); + Interval ledger_size = head_size; + ledger_size.widen (ledger_size.length () * length_fraction); + + if (pos && !staff_extent.contains (pos)) + { + Interval max_size = reqs[h->get_column ()->get_rank ()] + [Direction (sign (pos))].ledger_extent_; + + if (!max_size.is_empty ()) + ledger_size.intersect (max_size); + } + + for (int i = 0; i < ledger_count; i++) + { + Real lpos = ledger_positions[i]; + Interval x_extent = ledger_size; + + if (i == 0) + if (Grob *g = unsmob_grob (h->get_object ("accidental-grob"))) + { + Interval accidental_size = g->extent (common[X_AXIS], X_AXIS); + Real d + = linear_combination (Drul_array (accidental_size[RIGHT], + head_size[LEFT]), + 0.0); + + Real left_shorten = max (-ledger_size[LEFT] + d, 0.0); + + x_extent[LEFT] += left_shorten; + /* + TODO: shorten 2 ledger lines for the case natural + + downstem. + */ + } + + Real blotdiameter = ledgerlinethickness; + Interval y_extent + = Interval (-0.5 * (ledgerlinethickness), + +0.5 * (ledgerlinethickness)); + Stencil ledger_line + = Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter); + + ledger_line.translate_axis ( lpos * halfspace, Y_AXIS); + ledgers.add_stencil (ledger_line); + } + } } ledgers.translate_axis (-me->relative_coordinate (common[X_AXIS], X_AXIS), - X_AXIS); + X_AXIS); return ledgers.smobbed_copy (); } ADD_INTERFACE (Ledger_line_spanner, - "This spanner draws the ledger lines of a staff. This is a" - " separate grob because it has to process all potential" - " collisions between all note heads.", - - /* properties */ - "gap " - "length-fraction " - "minimum-length-fraction " - "note-heads " - "thickness " - ); + "This spanner draws the ledger lines of a staff. This is a" + " separate grob because it has to process all potential" + " collisions between all note heads.", + + /* properties */ + "gap " + "length-fraction " + "minimum-length-fraction " + "note-heads " + "thickness " + ); struct Ledgered_interface { @@ -380,9 +340,9 @@ struct Ledgered_interface }; ADD_INTERFACE (Ledgered_interface, - "Objects that need ledger lines, typically note heads. See" - " also @ref{ledger-line-spanner-interface}.", + "Objects that need ledger lines, typically note heads. See" + " also @ref{ledger-line-spanner-interface}.", - /* properties */ - "no-ledgers " - ); + /* properties */ + "no-ledgers " + ); diff --git a/lily/lexer.ll b/lily/lexer.ll index 882418242d..57b9a59967 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -1,8 +1,8 @@ -%{ // -*-Fundamental-*- +%{ // -*- mode: c++; c-file-style: "linux" -*- /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -19,6 +19,14 @@ along with LilyPond. If not, see . */ +/* Mode and indentation are at best a rough approximation based on TAB + * formatting (reasonable for compatibility with unspecific editor + * modes as Flex modes are hard to find) and need manual correction + * frequently. Without a reasonably dependable way of formatting a + * Flex file sensibly, there is little point in trying to fix the + * inconsistent state of indentation. + */ + /* backup rules @@ -46,7 +54,7 @@ using namespace std; #include "context-def.hh" -#include "identifier-smob.hh" +#include "duration.hh" #include "international.hh" #include "interval.hh" #include "lily-guile.hh" @@ -58,6 +66,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" @@ -85,11 +94,9 @@ bool is_valid_version (string s); yy_push_state (lyric_quote);\ yylval.string = new string -#define yylval \ - (*(YYSTYPE*)lexval_) +#define yylval (*lexval_) -#define yylloc \ - (*(YYLTYPE*)lexloc_) +#define yylloc (*lexloc_) #define YY_USER_ACTION add_lexed_char (YYLeng ()); @@ -124,35 +131,42 @@ SCM (* scm_parse_error_handler) (void *); %x sourcefilename %x version +/* The strategy concerning multibyte characters is to accept them but + * call YYText_utf8 for patterns that might contain them, in order to + * get a single code path responsible for flagging non-UTF-8 input: + * Patterns for accepting only valid UTF-8 without backing up are + * really hard to do and complex, and if nice error messages are + * wanted, one would need patterns catching the invalid input as well. + * + * Since editors and operating environments don't necessarily behave + * reasonably in the presence of mixed encodings, we flag encoding + * errors also in identifiers, comments, and strings where it would be + * conceivable to just transparently work with the byte string. But + * the whole point of caring about UTF-8 in here at all is too avoid + * stranger errors later when input passes into backends or log files + * or console output or error messages. + */ + A [a-zA-Z\200-\377] AA {A}|_ N [0-9] -AN {AA}|{N} ANY_CHAR (.|\n) -PUNCT [?!:'`] -ACCENT \\[`'"^] +PUNCT [][()?!:'`] +SPECIAL_CHAR [&@] NATIONAL [\001-\006\021-\027\031\036] -TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} -WORD {A}{AN}* -DASHED_WORD {A}({AN}|-)* -DASHED_KEY_WORD \\{DASHED_WORD} - +TEX {AA}|-|{PUNCT}|{NATIONAL}|{SPECIAL_CHAR} +WORD {A}([-_]{A}|{A})* +COMMAND \\{WORD} - -ALPHAWORD {A}+ -DIGIT {N} UNSIGNED {N}+ E_UNSIGNED \\{N}+ FRACTION {N}+\/{N}+ INT -?{UNSIGNED} REAL ({INT}\.{N}*)|(-?\.{N}+) -KEYWORD \\{WORD} WHITE [ \n\t\f\r] HORIZONTALWHITE [ \t] BLACK [^ \n\t\f\r] RESTNAME [rs] -NOTECOMMAND \\{A}+ -MARKUPCOMMAND \\({A}|[-_])+ LYRICS ({AA}|{TEX})[^0-9 \t\n\r\f]* ESCAPED [nt\\'"] EXTENDER __ @@ -163,7 +177,7 @@ BOM_UTF8 \357\273\277 <*>\r { - // windows-suck-suck-suck + // swallow and ignore carriage returns } {ANY_CHAR} { @@ -174,9 +188,23 @@ BOM_UTF8 \357\273\277 yyless (0); /* produce requested token */ - int type = extra_token_types_.back (); - extra_token_types_.pop_back (); - if (extra_token_types_.empty ()) + int type = scm_to_int (scm_caar (extra_tokens_)); + yylval.scm = scm_cdar (extra_tokens_); + extra_tokens_ = scm_cdr (extra_tokens_); + if (scm_is_null (extra_tokens_)) + yy_pop_state (); + + return type; +} + +<> { + /* Generate a token without swallowing anything */ + + /* produce requested token */ + int type = scm_to_int (scm_caar (extra_tokens_)); + yylval.scm = scm_cdar (extra_tokens_); + extra_tokens_ = scm_cdr (extra_tokens_); + if (scm_is_null (extra_tokens_)) yy_pop_state (); return type; @@ -187,11 +215,10 @@ BOM_UTF8 \357\273\277 {BOM_UTF8}/.* { if (this->lexloc_->line_number () != 1 || this->lexloc_->column_number () != 0) { - LexerError (_ ("stray UTF-8 BOM encountered").c_str ()); - exit (1); + LexerWarning (_ ("stray UTF-8 BOM encountered").c_str ()); + // exit (1); } - if (be_verbose_global) - message (_ ("Skipping UTF-8 BOM")); + debug_output (_ ("Skipping UTF-8 BOM")); } { @@ -199,12 +226,15 @@ BOM_UTF8 \357\273\277 yy_push_state (longcomment); } %[^{\n\r][^\n\r]*[\n\r] { + (void) YYText_utf8 (); } %[^{\n\r] { // backup rule + (void) YYText_utf8 (); } %[\n\r] { } %[^{\n\r][^\n\r]* { + (void) YYText_utf8 (); } {WHITE}+ { @@ -227,7 +257,7 @@ BOM_UTF8 \357\273\277 yy_push_state (sourcefileline); } \"[^"]*\" { /* got the version number */ - string s (YYText () + 1); + string s (YYText_utf8 () + 1); s = s.substr (0, s.rfind ('\"')); yy_pop_state (); @@ -240,8 +270,8 @@ BOM_UTF8 \357\273\277 } -\"[^"]*\" { - string s (YYText () + 1); +\"[^""]*\" { + string s (YYText_utf8 () + 1); s = s.substr (0, s.rfind ('\"')); yy_pop_state (); @@ -262,33 +292,28 @@ BOM_UTF8 \357\273\277 this->here_input ().get_source_file ()->set_line (here_input ().start (), i); } -. { +{ANY_CHAR} { LexerError (_ ("quoted string expected after \\version").c_str ()); yy_pop_state (); } -. { +{ANY_CHAR} { LexerError (_ ("quoted string expected after \\sourcefilename").c_str ()); yy_pop_state (); } -. { +{ANY_CHAR} { LexerError (_ ("integer expected after \\sourcefileline").c_str ()); yy_pop_state (); } { [^\%]* { + (void) YYText_utf8 (); } \%*[^}%]* { - + (void) YYText_utf8 (); } "%"+"}" { yy_pop_state (); } - <> { - LexerError (_ ("EOF found inside a comment").c_str ()); - is_main_input_ = false; // should be safe , can't have \include in --safe. - if (! close_input ()) - yyterminate (); // can't move this, since it actually rets a YY_NULL - } } @@ -305,15 +330,15 @@ BOM_UTF8 \357\273\277 \\include { yy_push_state (incl); } -\"[^"]*\" { /* got the include file name */ - string s (YYText ()+1); +\"[^""]*\" { /* got the include file name */ + string s (YYText_utf8 ()+1); s = s.substr (0, s.rfind ('"')); new_input (s, sources_); yy_pop_state (); } -\\{BLACK}*{WHITE} { /* got the include identifier */ - string s = YYText () + 1; +\\{BLACK}*{WHITE}? { /* got the include identifier */ + string s = YYText_utf8 () + 1; strip_trailing_white (s); if (s.length () && (s[s.length () - 1] == ';')) s = s.substr (0, s.length () - 1); @@ -322,7 +347,7 @@ BOM_UTF8 \357\273\277 if (scm_is_string (sid)) { new_input (ly_scm2string (sid), sources_); yy_pop_state (); - } else { + } else { string msg (_f ("wrong or undefined identifier: `%s'", s )); LexerError (msg.c_str ()); @@ -331,15 +356,56 @@ BOM_UTF8 \357\273\277 scm_display (sid, err); } } -\"[^"]* { // backup rule +(\$|#) { // scm for the filename + int n = 0; + Input hi = here_input(); + hi.step_forward (); + SCM sval = ly_parse_scm (hi.start (), &n, hi, + be_safe_global && is_main_input_, parser_); + sval = eval_scm (sval); + + for (int i = 0; i < n; i++) + { + yyinput (); + } + char_count_stack_.back () += n; + + if (scm_is_string (sval)) { + new_input (ly_scm2string (sval), sources_); + yy_pop_state (); + } else { + LexerError (_ ("string expected after \\include").c_str ()); + if (sval != SCM_UNDEFINED) { + SCM err = scm_current_error_port (); + scm_puts ("This value was found instead: ", err); + scm_display (sval, err); + } + } +} + +\"[^""]* { // backup rule error (_ ("end quote missing")); exit (1); } + + /* Flex picks the longest matching pattern including trailing + * contexts. Without the backup pattern, r-. does not trigger the + * {RESTNAME} rule but rather the {WORD}/[-_] rule coming later, + * needed for avoiding backup states. + */ + +{RESTNAME}/[-_] | // pseudo backup rule {RESTNAME} { char const *s = YYText (); yylval.scm = scm_from_locale_string (s); return RESTNAME; } +q/[-_] | // pseudo backup rule +q { + return CHORD_REPETITION; +} + +R/[-_] | // pseudo backup rule R { return MULTI_MEASURE_REST; } @@ -351,10 +417,7 @@ BOM_UTF8 \357\273\277 be_safe_global && is_main_input_, parser_); if (sval == SCM_UNDEFINED) - { - sval = SCM_UNSPECIFIED; error_level_ = 1; - } for (int i = 0; i < n; i++) { @@ -362,20 +425,30 @@ BOM_UTF8 \357\273\277 } char_count_stack_.back () += n; - if (unpack_identifier (sval) != SCM_UNDEFINED) + yylval.scm = sval; + return SCM_TOKEN; +} + +\$ { //immediate scm + int n = 0; + Input hi = here_input(); + hi.step_forward (); + SCM sval = ly_parse_scm (hi.start (), &n, hi, + be_safe_global && is_main_input_, parser_); + + for (int i = 0; i < n; i++) { - yylval.scm = unpack_identifier(sval); - return identifier_type (yylval.scm); + yyinput (); } + char_count_stack_.back () += n; - for (size_t i = 0; i < pending_string_includes_.size (); i++) - new_input ("", pending_string_includes_[i], - parser_->sources_); - pending_string_includes_.clear (); - - yylval.scm = sval; - return SCM_TOKEN; + sval = eval_scm (sval, '$'); + + int token = scan_scm_id (sval); + if (!scm_is_eq (yylval.scm, SCM_UNSPECIFIED)) + return token; } + { \<\< { return DOUBLE_ANGLE_OPEN; @@ -407,24 +480,22 @@ BOM_UTF8 \357\273\277 } { - {ALPHAWORD} { - return scan_bare_word (YYText ()); + {WORD}/[-_] | // backup rule + {WORD} { + return scan_bare_word (YYText_utf8 ()); } - {NOTECOMMAND} { - return scan_escaped_word (YYText () + 1); + {COMMAND}/[-_] | // backup rule + {COMMAND} { + return scan_escaped_word (YYText_utf8 () + 1); } {FRACTION} { yylval.scm = scan_fraction (YYText ()); return FRACTION; } - - {DIGIT} { - yylval.i = String_convert::dec2int (string (YYText ())); - return DIGIT; - } + {UNSIGNED}/\/ | // backup rule {UNSIGNED} { - yylval.i = String_convert::dec2int (string (YYText ())); + yylval.scm = scm_c_read_string (YYText ()); return UNSIGNED; } {E_UNSIGNED} { @@ -438,7 +509,7 @@ BOM_UTF8 \357\273\277 *yylval.string += to_string (escaped_char (YYText ()[1])); } [^\\""]+ { - *yylval.string += YYText (); + *yylval.string += YYText_utf8 (); } \" { @@ -450,7 +521,7 @@ BOM_UTF8 \357\273\277 delete sp; return is_lyric_state () ? LYRICS_STRING : STRING; } - . { + \\ { *yylval.string += YYText (); } } @@ -463,16 +534,18 @@ BOM_UTF8 \357\273\277 yylval.scm = scan_fraction (YYText ()); return FRACTION; } + {UNSIGNED}/\/ | // backup rule {UNSIGNED} { - yylval.i = String_convert::dec2int (string (YYText ())); + yylval.scm = scm_c_read_string (YYText ()); return UNSIGNED; } - {NOTECOMMAND} { - return scan_escaped_word (YYText () + 1); + {COMMAND}/[-_] | // backup rule + {COMMAND} { + return scan_escaped_word (YYText_utf8 () + 1); } {LYRICS} { /* ugr. This sux. */ - string s (YYText ()); + string s (YYText_utf8 ()); if (s == "__") return yylval.i = EXTENDER; if (s == "--") @@ -489,22 +562,25 @@ BOM_UTF8 \357\273\277 return LYRICS_STRING; } . { - return YYText ()[0]; + return YYText ()[0]; // LYRICS already catches all multibytes. } } { - {ALPHAWORD} { - return scan_bare_word (YYText ()); + {WORD}/[-_] | // backup rule + {WORD} { + return scan_bare_word (YYText_utf8 ()); } - {NOTECOMMAND} { - return scan_escaped_word (YYText () + 1); + {COMMAND}/[-_] | // backup rule + {COMMAND} { + return scan_escaped_word (YYText_utf8 () + 1); } {FRACTION} { yylval.scm = scan_fraction (YYText ()); return FRACTION; } + {UNSIGNED}/\/ | // backup rule {UNSIGNED} { - yylval.i = String_convert::dec2int (string (YYText ())); + yylval.scm = scm_c_read_string (YYText ()); return UNSIGNED; } - { @@ -523,7 +599,7 @@ BOM_UTF8 \357\273\277 return CHORD_CARET; } . { - return YYText ()[0]; + return YYText ()[0]; // WORD catches all multibyte. } } @@ -532,8 +608,9 @@ BOM_UTF8 \357\273\277 \\score { return SCORE; } - {MARKUPCOMMAND} { - string str (YYText () + 1); + {COMMAND}/[-_] | // backup rule + {COMMAND} { + string str (YYText_utf8 () + 1); int token_type = MARKUP_FUNCTION; SCM s = lookup_markup_command (str); @@ -578,15 +655,15 @@ BOM_UTF8 \357\273\277 else if (predicate == ly_lily_module_constant ("markup?")) push_extra_token(EXPECT_MARKUP); else - push_extra_token(EXPECT_SCM); + push_extra_token(EXPECT_SCM, predicate); } return token_type; } [{}] { return YYText ()[0]; } - [^#{}"\\ \t\n\r\f]+ { - string s (YYText ()); + [^$#{}\"\\ \t\n\r\f]+ { + string s (YYText_utf8 ()); char c = s[s.length () - 1]; /* brace open is for not confusing dumb tools. */ @@ -599,12 +676,18 @@ BOM_UTF8 \357\273\277 return STRING; } . { - return YYText()[0]; + return YYText()[0]; // Above is catchall for multibyte } } -<*><> { - if (is_main_input_) +<> { + LexerError (_ ("EOF found inside a comment").c_str ()); + is_main_input_ = false; // should be safe , can't have \include in --safe. + if (!close_input ()) + yyterminate (); // can't move this, since it actually rets a YY_NULL + } + +<> { if (is_main_input_) { /* 2 = init.ly + current file. > because we're before closing, but is_main_input_ should @@ -621,32 +704,30 @@ BOM_UTF8 \357\273\277 } { - {DASHED_WORD} { - return scan_bare_word (YYText ()); + {WORD}/[-_] | // backup rule + {WORD} { + return scan_bare_word (YYText_utf8 ()); } - {DASHED_KEY_WORD} { - return scan_escaped_word (YYText () + 1); + {COMMAND}/[-_] | // backup rule + {COMMAND} { + return scan_escaped_word (YYText_utf8 () + 1); } } -{WORD} { - return scan_bare_word (YYText ()); +{FRACTION} { + yylval.scm = scan_fraction (YYText ()); + return FRACTION; } -{KEYWORD} { - return scan_escaped_word (YYText () + 1); -} -{REAL} { - Real r; - int cnv = sscanf (YYText (), "%lf", &r); - assert (cnv == 1); - (void) cnv; - yylval.scm = scm_from_double (r); +-{UNSIGNED} | // backup rule +{REAL} { + yylval.scm = scm_c_read_string (YYText ()); return REAL; } +{UNSIGNED}/\/ | // backup rule {UNSIGNED} { - yylval.i = String_convert::dec2int (string (YYText ())); + yylval.scm = scm_c_read_string (YYText ()); return UNSIGNED; } @@ -655,6 +736,8 @@ BOM_UTF8 \357\273\277 return YYText ()[0]; } + +-/\. | // backup rule [*:=] { char c = YYText ()[0]; @@ -695,10 +778,10 @@ BOM_UTF8 \357\273\277 } } -<*>. { - string msg = _f ("invalid character: `%c'", YYText ()[0]); +<*>.[\200-\277]* { + string msg = _f ("invalid character: `%s'", YYText_utf8 ()); LexerError (msg.c_str ()); - return YYText ()[0]; + return '%'; // Better not return half a utf8 character. } %% @@ -706,21 +789,25 @@ BOM_UTF8 \357\273\277 /* Make the lexer generate a token of the given type as the next token. TODO: make it possible to define a value for the token as well */ void -Lily_lexer::push_extra_token (int token_type) +Lily_lexer::push_extra_token (int token_type, SCM scm) { - if (extra_token_types_.empty ()) + if (scm_is_null (extra_tokens_)) { if (YY_START != extratoken) hidden_state_ = YY_START; yy_push_state (extratoken); } - extra_token_types_.push_back (token_type); + extra_tokens_ = scm_acons (scm_from_int (token_type), scm, extra_tokens_); } void -Lily_lexer::push_chord_state (SCM tab) +Lily_lexer::push_chord_state (SCM alist) { - pitchname_tab_stack_ = scm_cons (tab, pitchname_tab_stack_); + SCM p = scm_assq (alist, pitchname_tab_stack_); + + if (scm_is_false (p)) + p = scm_cons (alist, alist_to_hashq (alist)); + pitchname_tab_stack_ = scm_cons (p, pitchname_tab_stack_); yy_push_state (chords); } @@ -749,19 +836,43 @@ Lily_lexer::push_markup_state () } void -Lily_lexer::push_note_state (SCM tab) +Lily_lexer::push_note_state (SCM alist) { - pitchname_tab_stack_ = scm_cons (tab, pitchname_tab_stack_); + bool extra = (YYSTATE == extratoken); + + SCM p = scm_assq (alist, pitchname_tab_stack_); + + if (extra) + yy_pop_state (); + + if (scm_is_false (p)) + p = scm_cons (alist, alist_to_hashq (alist)); + pitchname_tab_stack_ = scm_cons (p, pitchname_tab_stack_); yy_push_state (notes); + + if (extra) { + hidden_state_ = YYSTATE; + yy_push_state (extratoken); + } } void Lily_lexer::pop_state () { + bool extra = (YYSTATE == extratoken); + + if (extra) + yy_pop_state (); + if (YYSTATE == notes || YYSTATE == chords) pitchname_tab_stack_ = scm_cdr (pitchname_tab_stack_); yy_pop_state (); + + if (extra) { + hidden_state_ = YYSTATE; + yy_push_state (extratoken); + } } int @@ -786,30 +897,8 @@ Lily_lexer::scan_escaped_word (string str) return i; SCM sid = lookup_identifier (str); - if (is_music_function (sid)) - { - yylval.scm = get_music_function_transform (sid); - - SCM s = scm_object_property (yylval.scm, ly_symbol2scm ("music-function-signature")); - push_extra_token (EXPECT_NO_MORE_ARGS); - for (; scm_is_pair (s); s = scm_cdr (s)) - { - if (scm_car (s) == ly_music_p_proc) - push_extra_token (EXPECT_MUSIC); - else if (scm_car (s) == ly_lily_module_constant ("markup?")) - push_extra_token (EXPECT_MARKUP); - else if (ly_is_procedure (scm_car (s))) - push_extra_token (EXPECT_SCM); - else programming_error ("Function parameter without type-checking predicate"); - } - return MUSIC_FUNCTION; - } - if (sid != SCM_UNDEFINED) - { - yylval.scm = sid; - return identifier_type (sid); - } + return scan_scm_id (sid); string msg (_f ("unknown escaped string: `\\%s'", str)); LexerError (msg.c_str ()); @@ -819,6 +908,63 @@ Lily_lexer::scan_escaped_word (string str) return STRING; } +int +Lily_lexer::scan_scm_id (SCM sid) +{ + if (is_music_function (sid)) + { + int funtype = SCM_FUNCTION; + + yylval.scm = sid; + + SCM s = get_music_function_signature (sid); + SCM cs = scm_car (s); + + if (scm_is_pair (cs)) + { + cs = SCM_CAR (cs); + } + + if (scm_is_eq (cs, ly_lily_module_constant ("ly:music?"))) + funtype = MUSIC_FUNCTION; + else if (scm_is_eq (cs, ly_lily_module_constant ("ly:event?"))) + funtype = EVENT_FUNCTION; + else if (ly_is_procedure (cs)) + funtype = SCM_FUNCTION; + else programming_error ("Bad syntax function predicate"); + + push_extra_token (EXPECT_NO_MORE_ARGS); + for (s = scm_cdr (s); scm_is_pair (s); s = scm_cdr (s)) + { + SCM optional = SCM_UNDEFINED; + cs = scm_car (s); + + if (scm_is_pair (cs)) + { + optional = SCM_CDR (cs); + cs = SCM_CAR (cs); + } + + 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 (ly_is_procedure (cs)) + push_extra_token (EXPECT_SCM, cs); + else + { + programming_error ("Function parameter without type-checking predicate"); + continue; + } + if (!scm_is_eq (optional, SCM_UNDEFINED)) + push_extra_token (EXPECT_OPTIONAL, optional); + } + return funtype; + } + yylval.scm = sid; + return identifier_type (sid); +} + int Lily_lexer::scan_bare_word (string str) { @@ -826,7 +972,7 @@ Lily_lexer::scan_bare_word (string str) if ((YYSTATE == notes) || (YYSTATE == chords)) { SCM handle = SCM_BOOL_F; if (scm_is_pair (pitchname_tab_stack_)) - handle = scm_hashq_get_handle (scm_car (pitchname_tab_stack_), sym); + handle = scm_hashq_get_handle (scm_cdar (pitchname_tab_stack_), sym); if (scm_is_pair (handle)) { yylval.scm = scm_cdr (handle); @@ -841,11 +987,7 @@ Lily_lexer::scan_bare_word (string str) yylval.scm = scm_cdr (handle); return CHORD_MODIFIER; } - if ((chord_repetition_.repetition_symbol_ != SCM_EOL) - && to_boolean (scm_equal_p (chord_repetition_.repetition_symbol_, sym))) - return CHORD_REPETITION; } - yylval.scm = ly_string2scm (str); return STRING; } @@ -883,6 +1025,170 @@ Lily_lexer::is_figure_state () const return get_state () == figures; } +// The extra_token parameter specifies how to convert multiple values +// into additional tokens. For '#', additional values get pushed as +// SCM_IDENTIFIER. For '$', they get checked for their type and get +// pushed as a corresponding *_IDENTIFIER token. Since the latter +// tampers with yylval, it can only be done from the lexer itself, so +// this function is private. + +SCM +Lily_lexer::eval_scm (SCM readerdata, char extra_token) +{ + SCM sval = SCM_UNDEFINED; + + if (!SCM_UNBNDP (readerdata)) + { + sval = ly_eval_scm (scm_car (readerdata), + *unsmob_input (scm_cdr (readerdata)), + be_safe_global && is_main_input_, + parser_); + } + + if (SCM_UNBNDP (sval)) + { + error_level_ = 1; + return SCM_UNSPECIFIED; + } + + if (extra_token && SCM_VALUESP (sval)) + { + sval = scm_struct_ref (sval, SCM_INUM0); + + if (scm_is_pair (sval)) { + for (SCM v = scm_reverse (scm_cdr (sval)); + scm_is_pair (v); + v = scm_cdr (v)) + { + int token; + switch (extra_token) { + case '$': + token = scan_scm_id (scm_car (v)); + if (!scm_is_eq (yylval.scm, SCM_UNSPECIFIED)) + push_extra_token (token, yylval.scm); + break; + case '#': + push_extra_token (SCM_IDENTIFIER, scm_car (v)); + break; + } + } + sval = scm_car (sval); + } else + sval = SCM_UNSPECIFIED; + } + + return sval; +} + +/* Check for valid UTF-8 that has no overlong or surrogate codes and + is in the range 0-0x10ffff */ + +const char * +Lily_lexer::YYText_utf8 () +{ + const char * const p = YYText (); + for (int i=0; p[i];) { + if ((p[i] & 0xff) < 0x80) { + ++i; + continue; + } + int oldi = i; // start of character + int more = 0; // # of followup bytes, 0 if bad + switch (p[i++] & 0xff) { + // 0xc0 and 0xc1 are overlong prefixes for + // 0x00-0x3f and 0x40-0x7f respectively, bad. + case 0xc2: // 0x80-0xbf + case 0xc3: // 0xc0-0xff + case 0xc4: // 0x100-0x13f + case 0xc5: // 0x140-0x17f + case 0xc6: // 0x180-0x1bf + case 0xc7: // 0x1c0-0x1ff + case 0xc8: // 0x200-0x23f + case 0xc9: // 0x240-0x27f + case 0xca: // 0x280-0x2bf + case 0xcb: // 0x2c0-0x2ff + case 0xcc: // 0x300-0x33f + case 0xcd: // 0x340-0x37f + case 0xce: // 0x380-0x3bf + case 0xcf: // 0x3c0-0x3ff + case 0xd0: // 0x400-0x43f + case 0xd1: // 0x440-0x47f + case 0xd2: // 0x480-0x4bf + case 0xd3: // 0x4c0-0x4ff + case 0xd4: // 0x500-0x53f + case 0xd5: // 0x540-0x57f + case 0xd6: // 0x580-0x5bf + case 0xd7: // 0x5c0-0x5ff + case 0xd8: // 0x600-0x63f + case 0xd9: // 0x640-0x67f + case 0xda: // 0x680-0x6bf + case 0xdb: // 0x6c0-0x6ff + case 0xdc: // 0x700-0x73f + case 0xdd: // 0x740-0x77f + case 0xde: // 0x780-0x7bf + case 0xdf: // 0x7c0-0x7ff + more = 1; // 2-byte sequences, 0x80-0x7ff + break; + case 0xe0: + // don't allow overlong sequences for 0-0x7ff + if ((p[i] & 0xff) < 0xa0) + break; + case 0xe1: // 0x1000-0x1fff + case 0xe2: // 0x2000-0x2fff + case 0xe3: // 0x3000-0x3fff + case 0xe4: // 0x4000-0x4fff + case 0xe5: // 0x5000-0x5fff + case 0xe6: // 0x6000-0x6fff + case 0xe7: // 0x7000-0x7fff + case 0xe8: // 0x8000-0x8fff + case 0xe9: // 0x9000-0x9fff + case 0xea: // 0xa000-0xafff + case 0xeb: // 0xb000-0xbfff + case 0xec: // 0xc000-0xcfff + more = 2; // 3-byte sequences, 0x7ff-0xcfff + break; + case 0xed: // 0xd000-0xdfff + // Don't allow surrogate codes 0xd800-0xdfff + if ((p[i] & 0xff) >= 0xa0) + break; + case 0xee: // 0xe000-0xefff + case 0xef: // 0xf000-0xffff + more = 2; // 3-byte sequences, + // 0xd000-0xd7ff, 0xe000-0xffff + break; + case 0xf0: + // don't allow overlong sequences for 0-0xffff + if ((p[i] & 0xff) < 0x90) + break; + case 0xf1: // 0x40000-0x7ffff + case 0xf2: // 0x80000-0xbffff + case 0xf3: // 0xc0000-0xfffff + more = 3; // 4-byte sequences, 0x10000-0xfffff + break; + case 0xf4: + // don't allow more than 0x10ffff + if ((p[i] & 0xff) >= 0x90) + break; + more = 3; // 4-byte sequence, 0x100000-0x10ffff + break; + } + if (more) { + // check that all continuation bytes are valid + do { + if ((p[i++] & 0xc0) != 0x80) + break; + } while (--more); + if (!more) + continue; + } + Input h = here_input (); + h.set (h.get_source_file (), h.start () + oldi, h.start () + i); + h.warning (_ ("non-UTF-8 input").c_str ()); + } + return p; +} + + /* urg, belong to string (_convert) and should be generalised @@ -936,30 +1242,18 @@ is_valid_version (string s) /* - substitute _ and \, + substitute _ */ string lyric_fudge (string s) { - char *chars = string_copy (s); + size_t i=0; - for (char *p = chars; *p ; p++) - { - if (*p == '_' && (p == chars || *(p-1) != '\\')) - *p = ' '; - } - - s = string (chars); - delete[] chars; - - ssize i = 0; - if ((i = s.find ("\\,")) != NPOS) // change "\," to TeX's "\c " - { - * (((char*)s.c_str ()) + i + 1) = 'c'; - s = s.substr (0, i + 2) + " " + s.substr (i - 2); - } - - return s; + while ((i = s.find ('_', i)) != string::npos) + { + s[i++] = ' '; + } + return s; } /* diff --git a/lily/ligature-bracket-engraver.cc b/lily/ligature-bracket-engraver.cc index b467ec998a..7453c05840 100644 --- a/lily/ligature-bracket-engraver.cc +++ b/lily/ligature-bracket-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -63,15 +63,15 @@ Ligature_bracket_engraver::Ligature_bracket_engraver () } void -Ligature_bracket_engraver::process_music() +Ligature_bracket_engraver::process_music () { if (events_drul_[STOP]) { if (!ligature_) - { - events_drul_[STOP]->origin ()->warning (_ ("cannot find start of ligature")); - return; - } + { + events_drul_[STOP]->origin ()->warning (_ ("cannot find start of ligature")); + return; + } finished_ligature_ = ligature_; ligature_ = 0; @@ -81,10 +81,10 @@ Ligature_bracket_engraver::process_music() if (events_drul_[START]) { if (ligature_) - { - events_drul_[START]->origin ()->warning (_ ("already have a ligature")); - return; - } + { + events_drul_[START]->origin ()->warning (_ ("already have a ligature")); + return; + } previous_start_event_ = events_drul_[START]; ligature_ = make_spanner ("LigatureBracket", events_drul_[START]->self_scm ()); @@ -97,23 +97,22 @@ Ligature_bracket_engraver::acknowledge_note_column (Grob_info info) if (ligature_) { Tuplet_bracket::add_column (ligature_, - info.item ()); - add_bound_item (ligature_, info.item()); + info.item ()); + add_bound_item (ligature_, info.item ()); } } void Ligature_bracket_engraver::acknowledge_rest (Grob_info info) { - acknowledge_note_column(info); + acknowledge_note_column (info); } - void Ligature_bracket_engraver::stop_translation_timestep () { - events_drul_[LEFT] = - events_drul_[RIGHT] = 0; + events_drul_[LEFT] + = events_drul_[RIGHT] = 0; finished_ligature_ = 0; } @@ -121,16 +120,16 @@ ADD_ACKNOWLEDGER (Ligature_bracket_engraver, rest); ADD_ACKNOWLEDGER (Ligature_bracket_engraver, note_column); ADD_TRANSLATOR (Ligature_bracket_engraver, - /* doc */ - "Handle @code{Ligature_events} by engraving @code{Ligature}" - " brackets.", + /* doc */ + "Handle @code{Ligature_events} by engraving @code{Ligature}" + " brackets.", - /* create */ - "LigatureBracket ", + /* create */ + "LigatureBracket ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc index 99e86ed20b..fb6f54c706 100644 --- a/lily/ligature-engraver.cc +++ b/lily/ligature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -100,15 +100,15 @@ Ligature_engraver::process_music () if (events_drul_[STOP]) { if (!ligature_) - { - events_drul_[STOP]->origin ()->warning (_ ("cannot find start of ligature")); - return; - } + { + events_drul_[STOP]->origin ()->warning (_ ("cannot find start of ligature")); + return; + } if (!last_bound_) - events_drul_[STOP]->origin ()->warning (_ ("no right bound")); + events_drul_[STOP]->origin ()->warning (_ ("no right bound")); else - ligature_->set_bound (RIGHT, last_bound_); + ligature_->set_bound (RIGHT, last_bound_); prev_start_event_ = 0; finished_primitives_ = primitives_; @@ -127,19 +127,19 @@ Ligature_engraver::process_music () if (events_drul_[START]) { if (ligature_) - { - events_drul_[START]->origin ()->warning (_ ("already have a ligature")); - return; - } + { + events_drul_[START]->origin ()->warning (_ ("already have a ligature")); + return; + } prev_start_event_ = events_drul_[START]; ligature_ = create_ligature_spanner (); Grob *bound = unsmob_grob (get_property ("currentMusicalColumn")); if (!bound) - events_drul_[START]->origin ()->warning (_ ("no left bound")); + events_drul_[START]->origin ()->warning (_ ("no left bound")); else - ligature_->set_bound (LEFT, bound); + ligature_->set_bound (LEFT, bound); ligature_start_mom_ = now_mom (); @@ -154,16 +154,15 @@ Ligature_engraver::stop_translation_timestep () if (finished_ligature_) { if (!finished_primitives_.size ()) - { - finished_ligature_->programming_error ( - "Ligature_engraver::stop_translation_timestep ():" - " junking empty ligature"); - } + { + finished_ligature_->programming_error ("Ligature_engraver::stop_translation_timestep ():" + " junking empty ligature"); + } else - { - typeset_ligature (finished_ligature_, finished_primitives_); - finished_primitives_.clear (); - } + { + typeset_ligature (finished_ligature_, finished_primitives_); + finished_primitives_.clear (); + } finished_ligature_ = 0; } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 1763a5cebb..e8380324fb 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -41,7 +41,6 @@ using namespace std; #include "version.hh" #include "warn.hh" - /* symbols/strings. */ @@ -49,9 +48,9 @@ string ly_scm_write_string (SCM s) { SCM port = scm_mkstrport (SCM_INUM0, - scm_make_string (SCM_INUM0, SCM_UNDEFINED), - SCM_OPN | SCM_WRTNG, - "ly_write2string"); + scm_make_string (SCM_INUM0, SCM_UNDEFINED), + SCM_OPN | SCM_WRTNG, + "ly_write2string"); // SCM write = scm_eval_3 (ly_symbol2scm ("write"), s, SCM_EOL); SCM write = scm_primitive_eval (ly_symbol2scm ("write")); @@ -72,8 +71,13 @@ ly_symbol2string (SCM s) /* Ugh. this is not very efficient. */ - SCM str = scm_symbol_to_string (s); - return ly_scm2string (str); + return ly_scm2string (scm_symbol_to_string (s)); +} + +string +robust_symbol2string (SCM sym, string str) +{ + return scm_is_symbol (sym) ? ly_symbol2string (sym) : str; } string @@ -83,24 +87,22 @@ gulp_file_to_string (string fn, bool must_exist, int size) if (s == "") { if (must_exist) - { - string e = _f ("cannot find file: `%s'", fn); - e += " "; - e += _f ("(load path: `%s')", global_path.to_string ()); - error (e); - /* unreachable */ - } + { + string e = _f ("cannot find file: `%s'", fn); + e += " "; + e += _f ("(load path: `%s')", global_path.to_string ()); + error (e); + /* unreachable */ + } return s; } - if (be_verbose_global) - progress_indication ("[" + s); + debug_output ("[" + s, true); vector chars = gulp_file (s, size); string result (&chars[0], chars.size ()); - if (be_verbose_global) - progress_indication ("]\n"); + debug_output ("]\n", false); return result; } @@ -124,10 +126,11 @@ ly_scm2string (SCM str) assert (scm_is_string (str)); string result; size_t len = scm_c_string_length (str); - if (len) { - result.resize(len); - scm_to_locale_stringbuf(str, &result.at(0), len); - } + if (len) + { + result.resize (len); + scm_to_locale_stringbuf (str, &result.at (0), len); + } return result; } @@ -135,7 +138,7 @@ SCM ly_string2scm (string const &str) { return scm_from_locale_stringn (str.c_str (), - str.length ()); + str.length ()); } char * @@ -147,7 +150,7 @@ ly_scm2str0 (SCM str) /* PAIRS */ -SCM +SCM index_get_cell (SCM s, Direction d) { assert (d); @@ -168,10 +171,9 @@ bool is_number_pair (SCM p) { return scm_is_pair (p) - && scm_is_number (scm_car (p)) && scm_is_number (scm_cdr (p)); + && scm_is_number (scm_car (p)) && scm_is_number (scm_cdr (p)); } - unsigned int ly_scm_hash (SCM s) { @@ -181,7 +183,7 @@ ly_scm_hash (SCM s) bool is_axis (SCM s) { - if (scm_is_number (s)) + if (scm_is_integer (s)) { int i = scm_to_int (s); return i == 0 || i == 1; @@ -229,14 +231,15 @@ is_direction (SCM s) Interval ly_scm2interval (SCM p) { - return Interval (scm_to_double (scm_car (p)), scm_to_double (scm_cdr (p))); + return Interval (scm_to_double (scm_car (p)), + scm_to_double (scm_cdr (p))); } Drul_array ly_scm2realdrul (SCM p) { return Drul_array (scm_to_double (scm_car (p)), - scm_to_double (scm_cdr (p))); + scm_to_double (scm_cdr (p))); } SCM @@ -245,7 +248,6 @@ ly_interval2scm (Drul_array i) return scm_cons (scm_from_double (i[LEFT]), scm_from_double (i[RIGHT])); } - Interval robust_scm2interval (SCM k, Drul_array v) { @@ -289,7 +291,7 @@ Offset ly_scm2offset (SCM s) { return Offset (scm_to_double (scm_car (s)), - scm_to_double (scm_cdr (s))); + scm_to_double (scm_cdr (s))); } Offset @@ -321,31 +323,9 @@ ly_scm2offsets (SCM s) return os; } - - - /* ALIST */ - -bool -alist_equal_p (SCM a, SCM b) -{ - for (SCM s = a; - scm_is_pair (s); s = scm_cdr (s)) - { - SCM key = scm_caar (s); - SCM val = scm_cdar (s); - SCM l = scm_assoc (key, b); - - if (l == SCM_BOOL_F - || !ly_is_equal (scm_cdr (l), val)) - - return false; - } - return true; -} - SCM ly_alist_vals (SCM alist) { @@ -371,7 +351,6 @@ robust_list_ref (int i, SCM l) return scm_car (l); } - SCM ly_deep_copy (SCM src) { @@ -381,11 +360,11 @@ ly_deep_copy (SCM src) { int len = scm_c_vector_length (src); SCM nv = scm_c_make_vector (len, SCM_UNDEFINED); - for (int i = 0;i < len; i++) - { - SCM si = scm_from_int (i); - scm_vector_set_x (nv, si, ly_deep_copy (scm_vector_ref (src, si))); - } + for (int i = 0; i < len; i++) + { + SCM si = scm_from_int (i); + scm_vector_set_x (nv, si, ly_deep_copy (scm_vector_ref (src, si))); + } } return src; } @@ -396,8 +375,8 @@ print_scm_val (SCM val) string realval = ly_scm_write_string (val); if (realval.length () > 200) realval = realval.substr (0, 100) - + "\n :\n :\n" - + realval.substr (realval.length () - 100); + + "\n :\n :\n" + + realval.substr (realval.length () - 100); return realval; } @@ -419,15 +398,15 @@ type_check_assignment (SCM sym, SCM val, SCM type_symbol) #if 0 return false; #else - /* - This is used for autoBeamSettings. + /* + This is used for autoBeamSettings. - TODO: deprecate the use of \override and \revert for - autoBeamSettings? + TODO: deprecate the use of \override and \revert for + autoBeamSettings? - or use a symbol autoBeamSettingS? - */ - return true; + or use a symbol autoBeamSettingS? + */ + return true; #endif SCM type = scm_object_property (sym, type_symbol); @@ -435,33 +414,33 @@ type_check_assignment (SCM sym, SCM val, SCM type_symbol) if (type != SCM_EOL && !ly_is_procedure (type)) { warning (_f ("cannot find property type-check for `%s' (%s).", - ly_symbol2string (sym).c_str (), - ly_symbol2string (type_symbol).c_str ()) - + " " + _ ("perhaps a typing error?")); + ly_symbol2string (sym).c_str (), + ly_symbol2string (type_symbol).c_str ()) + + " " + _ ("perhaps a typing error?")); /* Be strict when being anal :) */ if (do_internal_type_checking_global) - scm_throw (ly_symbol2scm ("ly-file-failed"), scm_list_3 (ly_symbol2scm ("typecheck"), - sym, val)); + scm_throw (ly_symbol2scm ("ly-file-failed"), scm_list_3 (ly_symbol2scm ("typecheck"), + sym, val)); warning (_ ("doing assignment anyway")); } else { if (val != SCM_EOL - && ly_is_procedure (type) - && scm_call_1 (type, val) == SCM_BOOL_F) - { - ok = false; - SCM typefunc = ly_lily_module_constant ("type-name"); - SCM type_name = scm_call_1 (typefunc, type); - - warning (_f ("type check for `%s' failed; value `%s' must be of type `%s'", - ly_symbol2string (sym).c_str (), - print_scm_val (val), - ly_scm2string (type_name).c_str ())); - progress_indication ("\n"); - } + && ly_is_procedure (type) + && scm_call_1 (type, val) == SCM_BOOL_F) + { + ok = false; + SCM typefunc = ly_lily_module_constant ("type-name"); + SCM type_name = scm_call_1 (typefunc, type); + + warning (_f ("type check for `%s' failed; value `%s' must be of type `%s'", + ly_symbol2string (sym).c_str (), + print_scm_val (val), + ly_scm2string (type_name).c_str ())); + progress_indication ("\n"); + } } return ok; } @@ -479,13 +458,12 @@ ly_unique (SCM list) for (SCM i = list; scm_is_pair (i); i = scm_cdr (i)) { if (!scm_is_pair (scm_cdr (i)) - || !ly_is_equal (scm_car (i), scm_cadr (i))) - unique = scm_cons (scm_car (i), unique); + || !ly_is_equal (scm_car (i), scm_cadr (i))) + unique = scm_cons (scm_car (i), unique); } return scm_reverse_x (unique, SCM_EOL); } - /* Split list at member s, removing s. Return (BEFORE . AFTER) */ SCM @@ -498,7 +476,7 @@ ly_split_list (SCM s, SCM list) SCM i = scm_car (after); after = scm_cdr (after); if (ly_is_equal (i, s)) - break; + break; before = scm_cons (i, before); } return scm_cons (scm_reverse_x (before, SCM_EOL), after); @@ -549,6 +527,27 @@ robust_scm2double (SCM k, double x) return x; } +vector +ly_scm2floatvector (SCM l) +{ + vector floats; + for (SCM s = l; scm_is_pair (s); s = scm_cdr (s)) + floats.push_back (robust_scm2double (scm_car (s), 0.0)); + return floats; +} + +SCM +ly_floatvector2scm (vector v) +{ + SCM l = SCM_EOL; + SCM *tail = &l; + for (vsize i = 0; i < v.size (); i++) + { + *tail = scm_cons (scm_from_double (v[i]), SCM_EOL); + tail = SCM_CDRLOC (*tail); + } + return l; +} string robust_scm2string (SCM k, string s) @@ -566,31 +565,73 @@ robust_scm2int (SCM k, int o) return o; } +vsize +robust_scm2vsize (SCM k, vsize o) +{ + if (scm_integer_p (k) == SCM_BOOL_T) + { + int i = scm_to_int (k); + if (i >= 0) + return (vsize) i; + } + return o; +} SCM ly_rational2scm (Rational r) { + if (r.is_infinity ()) + { + if (r > Rational (0)) + return scm_inf (); + + return scm_difference (scm_inf (), SCM_UNDEFINED); + } + return scm_divide (scm_from_int64 (r.numerator ()), - scm_from_int64 (r.denominator ())); + scm_from_int64 (r.denominator ())); } - Rational ly_scm2rational (SCM r) { + if (scm_is_true (scm_inf_p (r))) + { + if (scm_is_true (scm_positive_p (r))) + { + Rational r; + r.set_infinite (1); + return r; + } + else + { + Rational r; + r.set_infinite (-1); + return r; + } + } + return Rational (scm_to_int64 (scm_numerator (r)), - scm_to_int64 (scm_denominator (r))); + scm_to_int64 (scm_denominator (r))); } Rational robust_scm2rational (SCM n, Rational rat) { - if (ly_is_fraction (n)) + if (ly_is_rational (n)) return ly_scm2rational (n); else return rat; } +bool +ly_is_rational (SCM n) +{ + return (scm_is_real (n) + && (scm_is_true (scm_exact_p (n)) + || scm_is_true (scm_inf_p (n)))); +} + SCM alist_to_hashq (SCM alist) { @@ -614,7 +655,6 @@ ly_hash2alist (SCM tab) return scm_call_1 (func, tab); } - /* C++ interfacing. */ @@ -639,17 +679,14 @@ mangle_cxx_identifier (string cxx_id) replace_all (&cxx_id, "__", "::"); replace_all (&cxx_id, '_', '-'); - return cxx_id; } - - SCM ly_string_array_to_scm (vector a) { SCM s = SCM_EOL; - for (vsize i = a.size (); i ; i--) + for (vsize i = a.size (); i; i--) s = scm_cons (ly_symbol2scm (a[i - 1].c_str ()), s); return s; } diff --git a/lily/lily-lexer-scheme.cc b/lily/lily-lexer-scheme.cc index e2be4fca43..3cc187d39c 100644 --- a/lily/lily-lexer-scheme.cc +++ b/lily/lily-lexer-scheme.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys - + Copyright (C) 2006--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,12 +21,12 @@ #include "lily-lexer.hh" LY_DEFINE (ly_lexer_keywords, "ly:lexer-keywords", - 1, 0, 0, (SCM lexer), - "Return a list of @code{(KEY . CODE)} pairs, signifying the" - " LilyPond reserved words list.") + 1, 0, 0, (SCM lexer), + "Return a list of @code{(KEY . CODE)} pairs, signifying the" + " LilyPond reserved words list.") { LY_ASSERT_SMOB (Lily_lexer, lexer, 1); - Lily_lexer * lex = Lily_lexer::unsmob (lexer); + Lily_lexer *lex = Lily_lexer::unsmob (lexer); return lex->keyword_list (); } diff --git a/lily/lily-lexer.cc b/lily/lily-lexer.cc index 1160fe69f6..71533da700 100644 --- a/lily/lily-lexer.cc +++ b/lily/lily-lexer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,7 +37,8 @@ using namespace std; #include "lily-parser.hh" static Keyword_ent the_key_tab[] -= { += +{ {"accepts", ACCEPTS}, {"addlyrics", ADDLYRICS}, {"alias", ALIAS}, @@ -57,25 +58,19 @@ static Keyword_ent the_key_tab[] {"drums", DRUMS}, {"figuremode", FIGUREMODE}, {"figures", FIGURES}, - {"grobdescriptions", GROBDESCRIPTIONS}, {"header", HEADER}, - {"key", KEY}, {"layout", LAYOUT}, {"lyricmode", LYRICMODE}, {"lyrics", LYRICS}, {"lyricsto", LYRICSTO}, - {"mark", MARK}, {"markup", MARKUP}, - {"markuplines", MARKUPLINES}, + {"markuplist", MARKUPLIST}, {"midi", MIDI}, {"name", NAME}, {"new", NEWCONTEXT}, {"notemode", NOTEMODE}, - {"once", ONCE}, {"override", OVERRIDE}, {"paper", PAPER}, - {"partial", PARTIAL}, - {"relative", RELATIVE}, {"remove", REMOVE}, {"repeat", REPEAT}, {"rest", REST}, @@ -84,11 +79,7 @@ static Keyword_ent the_key_tab[] {"sequential", SEQUENTIAL}, {"set", SET}, {"simultaneous", SIMULTANEOUS}, - {"skip", SKIP}, {"tempo", TEMPO}, - {"time", TIME_T}, - {"times", TIMES}, - {"transpose", TRANSPOSE}, {"type", TYPE}, {"unset", UNSET}, {"with", WITH}, @@ -106,11 +97,11 @@ Lily_lexer::Lily_lexer (Sources *sources, Lily_parser *parser) error_level_ = 0; is_main_input_ = false; start_module_ = SCM_EOL; - chord_repetition_ = Chord_repetition (); + extra_tokens_ = SCM_EOL; smobify_self (); add_scope (ly_make_module (false)); - push_note_state (scm_c_make_hash_table (0)); + push_note_state (SCM_EOL); chordmodifier_tab_ = scm_make_vector (scm_from_int (1), SCM_EOL); } @@ -123,12 +114,12 @@ Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser) pitchname_tab_stack_ = src.pitchname_tab_stack_; sources_ = src.sources_; start_module_ = SCM_EOL; - chord_repetition_ = src.chord_repetition_; - error_level_ = src.error_level_; + error_level_ = 0; is_main_input_ = src.is_main_input_; scopes_ = SCM_EOL; + extra_tokens_ = SCM_EOL; smobify_self (); @@ -143,7 +134,7 @@ Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser) } scopes_ = scopes; - push_note_state (scm_c_make_hash_table (0)); + push_note_state (SCM_EOL); } Lily_lexer::~Lily_lexer () @@ -209,8 +200,8 @@ Lily_lexer::keyword_list () const for (vsize i = 0; i < keytable_->table_.size (); i++) { *tail = scm_acons (scm_from_locale_string (keytable_->table_[i].name_), - scm_from_int (keytable_->table_[i].tokcode_), - SCM_EOL); + scm_from_int (keytable_->table_[i].tokcode_), + SCM_EOL); tail = SCM_CDRLOC (*tail); } @@ -225,7 +216,7 @@ Lily_lexer::lookup_identifier_symbol (SCM sym) { SCM var = ly_module_lookup (scm_car (s), sym); if (var != SCM_BOOL_F) - return scm_variable_ref (var); + return scm_variable_ref (var); } return SCM_UNDEFINED; @@ -246,8 +237,8 @@ Lily_lexer::start_main_input () new_input (main_input_name_, sources_); scm_module_define (scm_car (scopes_), - ly_symbol2scm ("input-file-name"), - ly_string2scm (main_input_name_)); + ly_symbol2scm ("input-file-name"), + ly_string2scm (main_input_name_)); } void @@ -286,19 +277,19 @@ Lily_lexer::set_identifier (SCM path, SCM val) if (scm_is_symbol (sym)) { if (lookup_keyword (ly_symbol2string (sym)) >= 0) - { - string symstr = ly_symbol2string (sym); - warning (_f ("identifier name is a keyword: `%s'", symstr.c_str ())); - } + { + string symstr = ly_symbol2string (sym); + warning (_f ("identifier name is a keyword: `%s'", symstr.c_str ())); + } SCM mod = scm_car (scopes_); if (scm_is_pair (path)) - { - SCM prev = ly_module_lookup (mod, sym); - if (prev != SCM_BOOL_F) - val = nested_property_alist (scm_variable_ref (prev), path, val); - } + { + SCM prev = ly_module_lookup (mod, sym); + if (prev != SCM_BOOL_F) + val = nested_property_alist (scm_variable_ref (prev), path, val); + } scm_module_define (mod, sym, val); } else @@ -309,7 +300,7 @@ void Lily_lexer::LexerError (char const *s) { if (include_stack_.empty ()) - message (_f ("error at EOF: %s", s) + "\n"); + non_fatal_error (s, _f ("%s:EOF", s)); else { error_level_ |= 1; @@ -318,6 +309,18 @@ Lily_lexer::LexerError (char const *s) } } +void +Lily_lexer::LexerWarning (char const *s) +{ + if (include_stack_.empty ()) + warning (s, _f ("%s:EOF", s)); + else + { + Input spot (*lexloc_); + spot.warning (s); + } +} + char Lily_lexer::escaped_char (char c) const { @@ -356,7 +359,7 @@ Lily_lexer::add_lexed_char (int count) { char const *start = here_str0 (); lexloc_->set (get_source_file (), - start, start + count); + start, start + count); char_count_stack_.back () += count; } @@ -369,7 +372,7 @@ IMPLEMENT_DEFAULT_EQUAL_P (Lily_lexer); SCM Lily_lexer::mark_smob (SCM s) { - ASSERT_LIVE_IS_ALLOWED (); + ASSERT_LIVE_IS_ALLOWED (s); Lily_lexer *lexer = (Lily_lexer *) SCM_CELL_WORD_1 (s); @@ -378,11 +381,12 @@ Lily_lexer::mark_smob (SCM s) scm_gc_mark (lexer->parser_->self_scm ()); scm_gc_mark (lexer->pitchname_tab_stack_); scm_gc_mark (lexer->start_module_); + scm_gc_mark (lexer->extra_tokens_); return lexer->scopes_; } int -Lily_lexer::print_smob (SCM s, SCM port, scm_print_state*) +Lily_lexer::print_smob (SCM s, SCM port, scm_print_state *) { Lily_lexer *lexer = Lily_lexer::unsmob (s); diff --git a/lily/lily-parser-scheme.cc b/lily/lily-parser-scheme.cc index 6a5f8d791b..059cac3149 100644 --- a/lily/lily-parser-scheme.cc +++ b/lily/lily-parser-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,9 +33,9 @@ #include "warn.hh" LY_DEFINE (ly_parse_file, "ly:parse-file", - 1, 0, 0, (SCM name), - "Parse a single @code{.ly} file." - " Upon failure, throw @code{ly-file-failed} key.") + 1, 0, 0, (SCM name), + "Parse a single @code{.ly} file." + " Upon failure, throw @code{ly-file-failed} key.") { LY_ASSERT_TYPE (scm_is_string, name, 1); string file = ly_scm2string (name); @@ -51,9 +51,10 @@ LY_DEFINE (ly_parse_file, "ly:parse-file", out_file_name.ext_ = ""; out_file_name.root_ = ""; if (ly_get_option (ly_symbol2scm ("gui")) != SCM_BOOL_T - && ly_get_option (ly_symbol2scm ("strip-output-dir")) == SCM_BOOL_T) { - out_file_name.dir_ = ""; - } + && ly_get_option (ly_symbol2scm ("strip-output-dir")) == SCM_BOOL_T) + { + out_file_name.dir_ = ""; + } /* When running from gui, generate output in .ly source directory. */ string output_name = output_name_global; @@ -62,29 +63,28 @@ LY_DEFINE (ly_parse_file, "ly:parse-file", /* Interpret --output=DIR to mean --output=DIR/BASE. */ string dir; if (is_dir (output_name)) - { - dir = output_name; - output_name = ""; - } + { + dir = output_name; + output_name = ""; + } else - { - File_name out (output_name); - if (is_dir (out.dir_part ())) - { - dir = out.dir_part (); - out_file_name = out.file_part (); - } - } + { + File_name out (output_name); + dir = out.dir_part (); + out_file_name = out.file_part (); + } if (dir != "" && dir != "." && dir != get_working_directory ()) - { - global_path.prepend (get_working_directory ()); - message (_f ("Changing working directory to: `%s'", - dir.c_str ())); - chdir (dir.c_str ()); - } + { + global_path.prepend (get_working_directory ()); + message (_f ("Changing working directory to: `%s'", dir)); + // If we can't change to the output dir (not existing, wrong + // permissions), exit lilypond + if (chdir (dir.c_str ()) != 0) + error (_f ("unable to change directory to: `%s'", dir)); + } else - out_file_name = File_name (output_name); + out_file_name = File_name (output_name); } string init; @@ -98,11 +98,10 @@ LY_DEFINE (ly_parse_file, "ly:parse-file", { warning (_f ("cannot find init file: `%s'", init)); warning (_f ("(search path: `%s')", - global_path.to_string ().c_str ())); + global_path.to_string ().c_str ())); exit (2); } - bool error = false; if ((file_name != "-") && file_name.empty ()) { @@ -115,8 +114,7 @@ LY_DEFINE (ly_parse_file, "ly:parse-file", sources.set_path (&global_path); string mapped_fn = map_file_name (file_name); - message (_f ("Processing `%s'", mapped_fn.c_str ())); - progress_indication ("\n"); + basic_progress (_f ("Processing `%s'", mapped_fn.c_str ())); Lily_parser *parser = new Lily_parser (&sources); @@ -134,34 +132,40 @@ LY_DEFINE (ly_parse_file, "ly:parse-file", if (error) /* TODO: pass renamed input file too. */ scm_throw (ly_symbol2scm ("ly-file-failed"), - scm_list_1 (ly_string2scm (file_name))); + scm_list_1 (ly_string2scm (file_name))); return SCM_UNSPECIFIED; } - LY_DEFINE (ly_parser_lexer, "ly:parser-lexer", - 1, 0, 0, (SCM parser_smob), - "Return the lexer for @var{parser-smob}.") + 1, 0, 0, (SCM parser_smob), + "Return the lexer for @var{parser-smob}.") { Lily_parser *parser = unsmob_lily_parser (parser_smob); return parser->lexer_->self_scm (); } LY_DEFINE (ly_parser_clone, "ly:parser-clone", - 1, 0, 0, (SCM parser_smob), - "Return a clone of @var{parser-smob}.") + 1, 1, 0, (SCM parser_smob, SCM closures), + "Return a clone of @var{parser-smob}. An association list" + " of port positions to closures can be specified in @var{closures}" + " in order to have @code{$} and @code{#} interpreted in their original" + " lexical environment.") { LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); Lily_parser *parser = unsmob_lily_parser (parser_smob); - Lily_parser *clone = new Lily_parser (*parser); + if (SCM_UNBNDP (closures)) + closures = SCM_EOL; + else + LY_ASSERT_TYPE (ly_is_list, closures, 2); + Lily_parser *clone = new Lily_parser (*parser, closures); return clone->unprotect (); } LY_DEFINE (ly_parser_define_x, "ly:parser-define!", - 3, 0, 0, (SCM parser_smob, SCM symbol, SCM val), - "Bind @var{symbol} to @var{val} in @var{parser-smob}'s module.") + 3, 0, 0, (SCM parser_smob, SCM symbol, SCM val), + "Bind @var{symbol} to @var{val} in @var{parser-smob}'s module.") { LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); @@ -174,9 +178,9 @@ LY_DEFINE (ly_parser_define_x, "ly:parser-define!", } LY_DEFINE (ly_parser_lookup, "ly:parser-lookup", - 2, 0, 0, (SCM parser_smob, SCM symbol), - "Look up @var{symbol} in @var{parser-smob}'s module." - " Return @code{'()} if not defined.") + 2, 0, 0, (SCM parser_smob, SCM symbol), + "Look up @var{symbol} in @var{parser-smob}'s module." + " Return @code{'()} if not defined.") { LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); @@ -184,7 +188,7 @@ LY_DEFINE (ly_parser_lookup, "ly:parser-lookup", LY_ASSERT_TYPE (ly_is_symbol, symbol, 2); - SCM val = parser->lexer_->lookup_identifier (ly_scm2string (scm_symbol_to_string (symbol))); + SCM val = parser->lexer_->lookup_identifier (ly_symbol2string (symbol)); if (val != SCM_UNDEFINED) return val; else @@ -192,9 +196,9 @@ LY_DEFINE (ly_parser_lookup, "ly:parser-lookup", } LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string", - 2, 0, 0, (SCM parser_smob, SCM ly_code), - "Parse the string @var{ly-code} with @var{parser-smob}." - " Upon failure, throw @code{ly-file-failed} key.") + 2, 0, 0, (SCM parser_smob, SCM ly_code), + "Parse the string @var{ly-code} with @var{parser-smob}." + " Upon failure, throw @code{ly-file-failed} key.") { LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); Lily_parser *parser = unsmob_lily_parser (parser_smob); @@ -202,74 +206,81 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string", if (!parser->lexer_->is_clean ()) parser->parser_error (_ ("ly:parser-parse-string is only valid with a new parser." - " Use ly:parser-include-string instead.")); + " Use ly:parser-include-string instead.")); else parser->parse_string (ly_scm2string (ly_code)); return SCM_UNSPECIFIED; } -LY_DEFINE (ly_parser_include_string, "ly:parser-include-string", - 2, 0, 0, (SCM parser_smob, SCM ly_code), - "Include the string @var{ly-code} into the input stream" - " for @var{parser-smob}.") +LY_DEFINE (ly_parse_string_expression, "ly:parse-string-expression", + 2, 2, 0, (SCM parser_smob, SCM ly_code, SCM filename, + SCM line), + "Parse the string @var{ly-code} with @var{parser-smob}." + " Return the contained music expression." + " @var{filename} and @var{line} are optional source indicators.") { LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); Lily_parser *parser = unsmob_lily_parser (parser_smob); LY_ASSERT_TYPE (scm_is_string, ly_code, 2); + string fn; + if (SCM_UNBNDP (filename) || !scm_is_string (filename)) + fn = ""; + else + fn = ly_scm2string (filename); + int ln; + if (SCM_UNBNDP (line) || !scm_is_integer (line)) + ln = 0; + else + ln = scm_to_int (line); - parser->include_string (ly_scm2string (ly_code)); - - return SCM_UNSPECIFIED; -} - -LY_DEFINE (ly_parser_set_note_names, "ly:parser-set-note-names", - 2, 0, 0, (SCM parser, SCM names), - "Replace current note names in @var{parser}." - " @var{names} is an alist of symbols. This only has effect" - " if the current mode is notes.") -{ - LY_ASSERT_SMOB (Lily_parser, parser, 1); - Lily_parser *p = unsmob_lily_parser (parser); - - if (p->lexer_->is_note_state ()) + if (!parser->lexer_->is_clean ()) { - p->lexer_->pop_state (); - p->lexer_->push_note_state (alist_to_hashq (names)); + parser->parser_error (_ ("ly:parse-string-expression is only valid with a new parser." + " Use ly:parser-include-string instead.")); + return SCM_UNSPECIFIED; } - return SCM_UNSPECIFIED; + return parser->parse_string_expression (ly_scm2string (ly_code), + fn, ln); } -LY_DEFINE (ly_parser_set_repetition_symbol, "ly:parser-set-repetition-symbol", - 2, 0, 0, (SCM parser, SCM sym), - "Replace the current repetition symbol in @var{parser}." - " @var{sym} is the new repetition symbol.") +LY_DEFINE (ly_parser_include_string, "ly:parser-include-string", + 2, 0, 0, (SCM parser_smob, SCM ly_code), + "Include the string @var{ly-code} into the input stream" + " for @var{parser-smob}. Can only be used in immediate" + " Scheme expressions (@code{$} instead of @code{#}).") { - LY_ASSERT_SMOB (Lily_parser, parser, 1); - Lily_parser *p = unsmob_lily_parser (parser); + LY_ASSERT_SMOB (Lily_parser, parser_smob, 1); + Lily_parser *parser = unsmob_lily_parser (parser_smob); + LY_ASSERT_TYPE (scm_is_string, ly_code, 2); - p->lexer_->chord_repetition_.repetition_symbol_ = sym; + parser->include_string (ly_scm2string (ly_code)); return SCM_UNSPECIFIED; } -LY_DEFINE (ly_parser_set_repetition_function, "ly:parser-set-repetition-function", - 2, 0, 0, (SCM parser, SCM fun), - "Replace the current repetition function in @var{parser}." - " @var{fun} is the new repetition function.") +LY_DEFINE (ly_parser_set_note_names, "ly:parser-set-note-names", + 2, 0, 0, (SCM parser, SCM names), + "Replace current note names in @var{parser}." + " @var{names} is an alist of symbols. This only has effect" + " if the current mode is notes.") { LY_ASSERT_SMOB (Lily_parser, parser, 1); Lily_parser *p = unsmob_lily_parser (parser); - p->lexer_->chord_repetition_.repetition_function_ = fun; + if (p->lexer_->is_note_state ()) + { + p->lexer_->pop_state (); + p->lexer_->push_note_state (names); + } return SCM_UNSPECIFIED; } LY_DEFINE (ly_parser_output_name, "ly:parser-output-name", - 1, 0, 0, (SCM parser), - "Return the base name of the output file.") + 1, 0, 0, (SCM parser), + "Return the base name of the output file.") { LY_ASSERT_SMOB (Lily_parser, parser, 1); Lily_parser *p = unsmob_lily_parser (parser); @@ -278,8 +289,8 @@ LY_DEFINE (ly_parser_output_name, "ly:parser-output-name", } LY_DEFINE (ly_parser_error, "ly:parser-error", - 2, 1, 0, (SCM parser, SCM msg, SCM input), - "Display an error message and make the parser fail.") + 2, 1, 0, (SCM parser, SCM msg, SCM input), + "Display an error message and make the parser fail.") { LY_ASSERT_SMOB (Lily_parser, parser, 1); Lily_parser *p = unsmob_lily_parser (parser); @@ -297,13 +308,12 @@ LY_DEFINE (ly_parser_error, "ly:parser-error", } LY_DEFINE (ly_parser_clear_error, "ly:parser-clear-error", - 1, 0, 0, (SCM parser), - "Clear the error flag for the parser.") + 1, 0, 0, (SCM parser), + "Clear the error flag for the parser.") { LY_ASSERT_SMOB (Lily_parser, parser, 1); Lily_parser *p = unsmob_lily_parser (parser); - p->error_level_ = 0; p->lexer_->error_level_ = 0; @@ -311,8 +321,8 @@ LY_DEFINE (ly_parser_clear_error, "ly:parser-clear-error", } LY_DEFINE (ly_parser_has_error_p, "ly:parser-has-error?", - 1, 0, 0, (SCM parser), - "Does @var{parser} have an error flag?") + 1, 0, 0, (SCM parser), + "Does @var{parser} have an error flag?") { LY_ASSERT_SMOB (Lily_parser, parser, 1); Lily_parser *p = unsmob_lily_parser (parser); diff --git a/lily/lily-parser.cc b/lily/lily-parser.cc index 2ee77b1e6d..cec4893d8d 100644 --- a/lily/lily-parser.cc +++ b/lily/lily-parser.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -32,6 +32,7 @@ #include "paper-book.hh" #include "parser.hh" #include "score.hh" +#include "source-file.hh" #include "sources.hh" #include "warn.hh" #include "program-option.hh" @@ -44,6 +45,7 @@ Lily_parser::Lily_parser (Sources *sources) sources_ = sources; default_duration_ = Duration (2, 0); error_level_ = 0; + closures_ = SCM_EOL; smobify_self (); @@ -51,13 +53,14 @@ Lily_parser::Lily_parser (Sources *sources) lexer_->unprotect (); } -Lily_parser::Lily_parser (Lily_parser const &src) +Lily_parser::Lily_parser (Lily_parser const &src, SCM closures) { lexer_ = 0; sources_ = src.sources_; default_duration_ = src.default_duration_; - error_level_ = src.error_level_; + error_level_ = 0; output_basename_ = src.output_basename_; + closures_ = closures; smobify_self (); if (src.lexer_) @@ -72,16 +75,16 @@ Lily_parser::~Lily_parser () { } - SCM Lily_parser::mark_smob (SCM s) { Lily_parser *parser = (Lily_parser *) SCM_CELL_WORD_1 (s); + scm_gc_mark (parser->closures_); return (parser->lexer_) ? parser->lexer_->self_scm () : SCM_EOL; } int -Lily_parser::print_smob (SCM s, SCM port, scm_print_state*) +Lily_parser::print_smob (SCM s, SCM port, scm_print_state *) { scm_puts ("#set_identifier (ly_symbol2scm ("parser"), - SCM_EOL); + SCM_EOL); ly_reexport_module (scm_current_module ()); scm_set_current_module (mod); - if (!define_spots_.empty ()) - { - define_spots_.back ().warning (_ ("braces do not match")); - error_level_ = 1; - } - error_level_ = error_level_ | lexer_->error_level_; clear (); } @@ -144,7 +141,7 @@ Lily_parser::parse_string (string ly_code) { // TODO: use $parser lexer_->set_identifier (ly_symbol2scm ("parser"), - self_scm ()); + self_scm ()); lexer_->main_input_name_ = ""; lexer_->is_main_input_ = true; @@ -154,20 +151,40 @@ Lily_parser::parse_string (string ly_code) do_yyparse (); scm_set_current_module (mod); - if (!define_spots_.empty ()) + error_level_ = error_level_ | lexer_->error_level_; +} + +SCM +Lily_parser::parse_string_expression (string ly_code, string filename, + int line) +{ + // TODO: use $parser + lexer_->set_identifier (ly_symbol2scm ("parser"), + self_scm ()); + + lexer_->main_input_name_ = filename; + lexer_->is_main_input_ = true; + lexer_->new_input (lexer_->main_input_name_, ly_code, sources_); + if (line) { - if (define_spots_.empty () - && !error_level_) - programming_error ("define_spots_ don't match, but error_level_ not set."); + lexer_->get_source_file ()->set_line (0, line); } + SCM mod = lexer_->set_current_scope (); + lexer_->push_extra_token (EMBEDDED_LILY); + do_yyparse (); + SCM result = lexer_->lookup_identifier_symbol (ly_symbol2scm ("parseStringResult")); + // parseStringResult is set in the grammar rule for embedded_lilypond + + scm_set_current_module (mod); error_level_ = error_level_ | lexer_->error_level_; + return result; } void Lily_parser::include_string (string ly_code) { - lexer_->add_string_include (ly_code); + lexer_->new_input ("", ly_code, sources_); } void @@ -176,7 +193,7 @@ Lily_parser::clear () if (lexer_) { while (lexer_->has_scope ()) - lexer_->remove_scope (); + lexer_->remove_scope (); } lexer_ = 0; @@ -202,13 +219,10 @@ Lily_parser::parser_error (Input const &i, string s) error_level_ = 1; } - - IMPLEMENT_SMOBS (Lily_parser); IMPLEMENT_TYPE_P (Lily_parser, "ly:lily-parser?"); IMPLEMENT_DEFAULT_EQUAL_P (Lily_parser); - /**************************************************************** OUTPUT-DEF ****************************************************************/ @@ -240,8 +254,8 @@ Output_def * get_paper (Lily_parser *parser) { SCM papers = parser->lexer_->lookup_identifier ("$papers"); - Output_def *layout = ((papers == SCM_UNDEFINED) || scm_is_null (papers)) ? - 0 : unsmob_output_def (scm_car (papers)); + Output_def *layout = ((papers == SCM_UNDEFINED) || scm_is_null (papers)) + ? 0 : unsmob_output_def (scm_car (papers)); SCM default_paper = parser->lexer_->lookup_identifier ("$defaultpaper"); layout = layout ? layout : unsmob_output_def (default_paper); diff --git a/lily/lily-version.cc b/lily/lily-version.cc index d118c3c50a..99e9b7df4c 100644 --- a/lily/lily-version.cc +++ b/lily/lily-version.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Jan Nieuwenhuizen + Copyright (C) 1999--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/lilypond-version.cc b/lily/lilypond-version.cc index e7b686a208..28bb08d761 100644 --- a/lily/lilypond-version.cc +++ b/lily/lilypond-version.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,10 +32,10 @@ Lilypond_version::Lilypond_version (int major, int minor, int patch) Lilypond_version::Lilypond_version (string str) { - major_ = 0; + major_ = 0; minor_ = 0; patch_ = 0; - + vector version; version = string_split (str, '.'); @@ -43,7 +43,7 @@ Lilypond_version::Lilypond_version (string str) major_ = String_convert::dec2int (version[0]); if (version.size () > 1 && isdigit (version[1][0])) minor_ = String_convert::dec2int (version[1]); - + patch_ = 0; if (version.size () >= 3 && isdigit (version[2][0])) @@ -57,8 +57,8 @@ string Lilypond_version::to_string () const { return ::to_string (major_) - + "." + ::to_string (minor_) - + "." + ::to_string (patch_); + + "." + ::to_string (minor_) + + "." + ::to_string (patch_); } Lilypond_version::operator int () const diff --git a/lily/lilypond.rc.in b/lily/lilypond.rc.in index 52b059b6a8..4045c65a29 100644 --- a/lily/lilypond.rc.in +++ b/lily/lilypond.rc.in @@ -20,7 +20,7 @@ VS_VERSION_INFO VERSIONINFO VALUE "FileDescription", "LilyPond" VALUE "FileVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_LEVEL@.@BUILD_VERSION@" VALUE "InternalName", "LilyPond@" - VALUE "LegalCopyright ", "Copyright (C) 1995--2011 Han-Wen Nienhuys and Jan Nieuwenhuizen, and others." + VALUE "LegalCopyright ", "Copyright (C) 1995--2012 Han-Wen Nienhuys and Jan Nieuwenhuizen, and others." VALUE "OriginalFilename", "lilypond.exe" VALUE "ProductName", "LilyPond" VALUE "ProductVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_LEVEL@" diff --git a/lily/line-interface.cc b/lily/line-interface.cc index ebbd62ef4f..bc6099916a 100644 --- a/lily/line-interface.cc +++ b/lily/line-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,8 +27,8 @@ Stencil Line_interface::make_arrow (Offset begin, Offset end, - Real thick, - Real length, Real width) + Real thick, + Real length, Real width) { Real angle = (end - begin).arg (); vector points; @@ -45,8 +45,8 @@ Line_interface::make_arrow (Offset begin, Offset end, Stencil Line_interface::make_trill_line (Grob *me, - Offset from, - Offset to) + Offset from, + Offset to) { Offset dz = (to - from); @@ -60,7 +60,7 @@ Line_interface::make_trill_line (Grob *me, programming_error ("can't find scripts.trill_element"); return Stencil (); } - + Stencil line; Real len = 0.0; do @@ -73,19 +73,18 @@ Line_interface::make_trill_line (Grob *me, line.rotate (dz.arg (), Offset (LEFT, CENTER)); line.translate (from); - return line; + return line; } - Stencil Line_interface::make_zigzag_line (Grob *me, - Offset from, - Offset to) + Offset from, + Offset to) { Offset dz = to - from; Real thick = Staff_symbol_referencer::line_thickness (me); - thick *= robust_scm2double (me->get_property ("thickness"), 1.0); // todo: staff sym referencer? + thick *= robust_scm2double (me->get_property ("thickness"), 1.0); // todo: staff sym referencer? Real staff_space = Staff_symbol_referencer::staff_space (me); @@ -119,23 +118,22 @@ Line_interface::make_zigzag_line (Grob *me, return total; } - Stencil Line_interface::make_dashed_line (Real thick, Offset from, Offset to, - Real dash_period, Real dash_fraction) + Real dash_period, Real dash_fraction) { dash_fraction = min (max (dash_fraction, 0.0), 1.0); Real on = dash_fraction * dash_period + thick; Real off = max (0.0, dash_period - on); SCM at = scm_list_n (ly_symbol2scm ("dashed-line"), - scm_from_double (thick), - scm_from_double (on), - scm_from_double (off), - scm_from_double (to[X_AXIS] - from[X_AXIS]), - scm_from_double (to[Y_AXIS] - from[Y_AXIS]), - scm_from_double (0.0), - SCM_UNDEFINED); + scm_from_double (thick), + scm_from_double (on), + scm_from_double (off), + scm_from_double (to[X_AXIS] - from[X_AXIS]), + scm_from_double (to[Y_AXIS] - from[Y_AXIS]), + scm_from_double (0.0), + SCM_UNDEFINED); Box box; box.add_point (Offset (0, 0)); @@ -153,12 +151,12 @@ Stencil Line_interface::make_line (Real th, Offset from, Offset to) { SCM at = scm_list_n (ly_symbol2scm ("draw-line"), - scm_from_double (th), - scm_from_double (from[X_AXIS]), - scm_from_double (from[Y_AXIS]), - scm_from_double (to[X_AXIS]), - scm_from_double (to[Y_AXIS]), - SCM_UNDEFINED); + scm_from_double (th), + scm_from_double (from[X_AXIS]), + scm_from_double (from[Y_AXIS]), + scm_from_double (to[X_AXIS]), + scm_from_double (to[Y_AXIS]), + SCM_UNDEFINED); Box box; box.add_point (from); @@ -172,24 +170,24 @@ Line_interface::make_line (Real th, Offset from, Offset to) Stencil Line_interface::arrows (Grob *me, Offset from, Offset to, - bool from_arrow, - bool to_arrow) + bool from_arrow, + bool to_arrow) { Stencil a; if (from_arrow || to_arrow) { Real thick = Staff_symbol_referencer::line_thickness (me) - * robust_scm2double (me->get_property ("thickness"), 1); + * robust_scm2double (me->get_property ("thickness"), 1); Real ss = Staff_symbol_referencer::staff_space (me); Real len = robust_scm2double (me->get_property ("arrow-length"), 1.3 * ss); Real wid = robust_scm2double (me->get_property ("arrow-width"), 0.5 * ss); if (to_arrow) - a.add_stencil (make_arrow (from, to, thick, len, wid)); + a.add_stencil (make_arrow (from, to, thick, len, wid)); if (from_arrow) - a.add_stencil (make_arrow (to, from, thick, len, wid)); + a.add_stencil (make_arrow (to, from, thick, len, wid)); } return a; @@ -199,7 +197,7 @@ Stencil Line_interface::line (Grob *me, Offset from, Offset to) { Real thick = Staff_symbol_referencer::line_thickness (me) - * robust_scm2double (me->get_property ("thickness"), 1); + * robust_scm2double (me->get_property ("thickness"), 1); SCM type = me->get_property ("style"); if (type == ly_symbol2scm ("zigzag")) @@ -208,36 +206,36 @@ Line_interface::line (Grob *me, Offset from, Offset to) return make_trill_line (me, from, to); else if (type == ly_symbol2scm ("none")) return Stencil (); - + Stencil stencil; if (type == ly_symbol2scm ("dashed-line") || type == ly_symbol2scm ("dotted-line")) { Real fraction - = type == ly_symbol2scm ("dotted-line") - ? 0.0 - : robust_scm2double (me->get_property ("dash-fraction"), 0.4); + = type == ly_symbol2scm ("dotted-line") + ? 0.0 + : robust_scm2double (me->get_property ("dash-fraction"), 0.4); fraction = min (max (fraction, 0.0), 1.0); Real period = Staff_symbol_referencer::staff_space (me) - * robust_scm2double (me->get_property ("dash-period"), 1.0); + * robust_scm2double (me->get_property ("dash-period"), 1.0); if (period <= 0) - return Stencil (); + return Stencil (); Real len = (to - from).length (); - + int n = (int) rint ((len - period * fraction) / period); n = max (0, n); if (n > 0) - { - /* - TODO: figure out something intelligent for really short - sections. - */ - period = ((to - from).length () - period * fraction) / n; - } + { + /* + TODO: figure out something intelligent for really short + sections. + */ + period = ((to - from).length () - period * fraction) / n; + } stencil = make_dashed_line (thick, from, to, period, fraction); } else @@ -247,22 +245,22 @@ Line_interface::line (Grob *me, Offset from, Offset to) } ADD_INTERFACE (Line_interface, - "Generic line objects. Any object using lines supports this." - " The property @code{style} can be @code{line}," - " @code{dashed-line}, @code{trill}, @code{dotted-line}," - " @code{zigzag} or @code{none} (a transparent line).\n" - "\n" - "For @code{dashed-line}, the length of the dashes is tuned" - " with @code{dash-fraction}. If the latter is set to@tie{}0, a" - " dotted line is produced.", - - /* properties */ - "arrow-length " - "arrow-width " - "dash-fraction " - "dash-period " - "style " - "thickness " - "zigzag-length " - "zigzag-width " - ); + "Generic line objects. Any object using lines supports this." + " The property @code{style} can be @code{line}," + " @code{dashed-line}, @code{trill}, @code{dotted-line}," + " @code{zigzag} or @code{none} (a transparent line).\n" + "\n" + "For @code{dashed-line}, the length of the dashes is tuned" + " with @code{dash-fraction}. If the latter is set to@tie{}0, a" + " dotted line is produced.", + + /* properties */ + "arrow-length " + "arrow-width " + "dash-fraction " + "dash-period " + "style " + "thickness " + "zigzag-length " + "zigzag-width " + ); diff --git a/lily/line-spanner.cc b/lily/line-spanner.cc index 0235243628..f42628820e 100644 --- a/lily/line-spanner.cc +++ b/lily/line-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,10 +21,13 @@ #include "axis-group-interface.hh" #include "font-interface.hh" #include "grob-interface.hh" +#include "international.hh" #include "item.hh" #include "lily-proto.hh" #include "line-interface.hh" +#include "note-column.hh" #include "output-def.hh" +#include "paper-column.hh" #include "pointer-group-interface.hh" #include "spanner.hh" #include "staff-symbol-referencer.hh" @@ -36,6 +39,7 @@ class Line_spanner { public: DECLARE_SCHEME_CALLBACK (print, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); DECLARE_SCHEME_CALLBACK (calc_left_bound_info, (SCM)); DECLARE_SCHEME_CALLBACK (calc_left_bound_info_and_text, (SCM)); DECLARE_SCHEME_CALLBACK (calc_right_bound_info, (SCM)); @@ -63,17 +67,16 @@ Line_spanner::calc_bound_info (SCM smob, Direction dir) SCM details = SCM_BOOL_F; if (details == SCM_BOOL_F) details = ly_assoc_get ((dir == LEFT) - ? ly_symbol2scm ("left") - : ly_symbol2scm ("right"), bound_details, SCM_BOOL_F); + ? ly_symbol2scm ("left") + : ly_symbol2scm ("right"), bound_details, SCM_BOOL_F); if (me->get_bound (dir)->break_status_dir ()) { SCM extra = ly_assoc_get ((dir == LEFT) - ? ly_symbol2scm ("left-broken") - : ly_symbol2scm ("right-broken"), bound_details, SCM_EOL); + ? ly_symbol2scm ("left-broken") + : ly_symbol2scm ("right-broken"), bound_details, SCM_EOL); - for (SCM s = scm_reverse (extra); scm_is_pair (s); s = scm_cdr (s)) - details = scm_cons (scm_car (s), details); + details = scm_append (scm_list_2 (extra, details)); } if (details == SCM_BOOL_F) @@ -85,102 +88,135 @@ Line_spanner::calc_bound_info (SCM smob, Direction dir) Output_def *layout = me->layout (); SCM properties = Font_interface::text_font_alist_chain (me); details = scm_acons (ly_symbol2scm ("stencil"), - Text_interface::interpret_markup (layout->self_scm (), - properties, text), - details); + Text_interface::interpret_markup (layout->self_scm (), + properties, text), + details); } if (!scm_is_number (ly_assoc_get (ly_symbol2scm ("X"), details, SCM_BOOL_F))) { Direction attach = (Direction) - robust_scm2int (ly_assoc_get (ly_symbol2scm ("attach-dir"), - details, SCM_BOOL_F), - CENTER); + robust_scm2int (ly_assoc_get (ly_symbol2scm ("attach-dir"), + details, SCM_BOOL_F), + CENTER); Item *bound_item = me->get_bound (dir); Grob *bound_grob = bound_item; if (to_boolean (ly_assoc_get (ly_symbol2scm ("end-on-note"), details, SCM_BOOL_F)) - && bound_item->break_status_dir ()) - { - extract_grob_set (me, "note-columns", columns); - if (columns.size ()) - bound_grob = (dir == LEFT) - ? columns[0] : columns.back(); - } + && bound_item->break_status_dir ()) + { + extract_grob_set (me, "note-columns", columns); + if (columns.size ()) + bound_grob = (dir == LEFT) + ? columns[0] : columns.back (); + } + + Real x_coord = (Paper_column::has_interface (bound_grob) + ? Axis_group_interface::generic_bound_extent (bound_grob, commonx, X_AXIS) + : robust_relative_extent (bound_grob, commonx, X_AXIS)).linear_combination (attach); + + Grob *acc = Note_column::accidentals (bound_grob->get_parent (X_AXIS)); + if (acc && to_boolean (ly_assoc_get (ly_symbol2scm ("end-on-accidental"), details, SCM_BOOL_F))) + x_coord = robust_relative_extent (acc, commonx, X_AXIS).linear_combination (attach); details = scm_acons (ly_symbol2scm ("X"), - scm_from_double (robust_relative_extent (bound_grob, commonx, X_AXIS) - .linear_combination (attach)), - details); + scm_from_double (x_coord), + details); } - if (!scm_is_number (ly_assoc_get (ly_symbol2scm ("Y"), details, SCM_BOOL_F))) { Real y = 0.0; Real extra_dy = robust_scm2double (me->get_property ("extra-dy"), - 0.0); + 0.0); 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 ()) - { - 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); - - /* - 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. - */ - 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); - } - } + { + if (to_boolean (me->get_property ("simple-Y"))) + { + Spanner *orig = dynamic_cast(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); + + /* + 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. + */ + 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 - { - y = me->get_bound (dir)->extent (common_y, Y_AXIS).center (); - details = scm_acons (ly_symbol2scm ("common-Y"), common_y->self_scm (), details); - } + { + y = me->get_bound (dir)->extent (common_y, Y_AXIS).center (); + details = scm_acons (ly_symbol2scm ("common-Y"), common_y->self_scm (), details); + } - y += dir * extra_dy / 2; + y += dir * extra_dy / 2; details = scm_acons (ly_symbol2scm ("Y"), scm_from_double (y), details); } return details; } +MAKE_SCHEME_CALLBACK (Line_spanner, calc_cross_staff, 1); +SCM +Line_spanner::calc_cross_staff (SCM smob) +{ + Spanner *me = unsmob_spanner (smob); + if (!me) + return SCM_BOOL_F; + + if (to_boolean (me->get_bound (LEFT)->get_property ("non-musical")) + || to_boolean (me->get_bound (RIGHT)->get_property ("non-musical"))) + return SCM_BOOL_F; + + return scm_from_bool (Staff_symbol_referencer::get_staff_symbol (me->get_bound (LEFT)) + != Staff_symbol_referencer::get_staff_symbol (me->get_bound (RIGHT))); +} + MAKE_SCHEME_CALLBACK (Line_spanner, calc_right_bound_info, 1); SCM Line_spanner::calc_right_bound_info (SCM smob) @@ -210,9 +246,9 @@ Line_spanner::calc_left_bound_info_and_text (SCM smob) Output_def *layout = me->layout (); SCM properties = Font_interface::text_font_alist_chain (me); alist = scm_acons (ly_symbol2scm ("stencil"), - Text_interface::interpret_markup (layout->self_scm (), - properties, text), - alist); + Text_interface::interpret_markup (layout->self_scm (), + properties, text), + alist); } return alist; @@ -224,57 +260,57 @@ Line_spanner::print (SCM smob) { Spanner *me = dynamic_cast (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 bounds (me->get_property ("left-bound-info"), - me->get_property ("right-bound-info")); + me->get_property ("right-bound-info")); Grob *commonx = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), X_AXIS); commonx = me->common_refpoint (commonx, X_AXIS); Drul_array span_points; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Offset z (robust_scm2double (ly_assoc_get (ly_symbol2scm ("X"), - bounds[d], SCM_BOOL_F), 0.0), - robust_scm2double (ly_assoc_get (ly_symbol2scm ("Y"), - bounds[d], SCM_BOOL_F), 0.0)); + bounds[d], SCM_BOOL_F), 0.0), + robust_scm2double (ly_assoc_get (ly_symbol2scm ("Y"), + bounds[d], SCM_BOOL_F), 0.0)); span_points[d] = z; } - while (flip (&d) != LEFT); Drul_array gaps (0, 0); Drul_array arrows (0, 0); - Drul_array anchor_align (0, 0); - Drul_array stencils (0,0); + Drul_array stencils (0, 0); Drul_array common_y (0, 0); // For scaling of 'padding and 'stencil-offset Real magstep = pow (2, robust_scm2double (me->get_property ("font-size"), 0.0) / 6); - do + for (LEFT_and_RIGHT (d)) { gaps[d] = robust_scm2double (ly_assoc_get (ly_symbol2scm ("padding"), - bounds[d], SCM_BOOL_F), 0.0); + 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); + bounds[d], SCM_BOOL_F)); stencils[d] = unsmob_stencil (ly_assoc_get (ly_symbol2scm ("stencil"), - bounds[d], SCM_BOOL_F)); + bounds[d], SCM_BOOL_F)); common_y[d] = unsmob_grob (ly_assoc_get (ly_symbol2scm ("common-Y"), - bounds[d], SCM_BOOL_F)); + bounds[d], SCM_BOOL_F)); if (!common_y[d]) - common_y[d] = me; + common_y[d] = me; } - 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) + { + for (LEFT_and_RIGHT (d)) + span_points[d][Y_AXIS] += common_y[d]->relative_coordinate (my_common_y, Y_AXIS); + } 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]; @@ -290,74 +326,70 @@ Line_spanner::print (SCM smob) } Stencil line; - do + for (LEFT_and_RIGHT (d)) { span_points[d] += -d * gaps[d] * magstep * dz.direction (); 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); - SCM off = ly_assoc_get (ly_symbol2scm ("stencil-offset"), - bounds[d], SCM_BOOL_F); + { + Stencil s = stencils[d]->translated (span_points[d]); + SCM align = ly_assoc_get (ly_symbol2scm ("stencil-align-dir-y"), + bounds[d], SCM_BOOL_F); + SCM off = ly_assoc_get (ly_symbol2scm ("stencil-offset"), + bounds[d], SCM_BOOL_F); - if (scm_is_number (align)) - s.align_to (Y_AXIS, scm_to_double (align)); + if (scm_is_number (align)) + s.align_to (Y_AXIS, scm_to_double (align)); - if (is_number_pair (off)) - s.translate (ly_scm2offset (off) * magstep); + if (is_number_pair (off)) + s.translate (ly_scm2offset (off) * magstep); - line.add_stencil (s); - } + line.add_stencil (s); + } } - while (flip (&d) != LEFT); - do + for (LEFT_and_RIGHT (d)) { if (stencils[d]) - span_points[d] += dz_dir * - (stencils[d]->extent (X_AXIS)[-d] / dz_dir[X_AXIS]); + span_points[d] += dz_dir * + (stencils[d]->extent (X_AXIS)[-d] / dz_dir[X_AXIS]); } - while (flip (&d) != LEFT); - Offset adjust = dz.direction() * Staff_symbol_referencer::staff_space (me); + Offset adjust = dz.direction () * Staff_symbol_referencer::staff_space (me); - Offset line_left = span_points[LEFT] + (arrows[LEFT] ? adjust*1.4 : Offset (0, 0)); - Offset line_right = span_points[RIGHT] - (arrows[RIGHT] ? adjust*0.55 : Offset (0, 0)); + Offset line_left = span_points[LEFT] + (arrows[LEFT] ? adjust * 1.4 : Offset (0, 0)); + Offset line_right = span_points[RIGHT] - (arrows[RIGHT] ? adjust * 0.55 : Offset (0, 0)); if (line_right[X_AXIS] > line_left[X_AXIS]) { line.add_stencil (Line_interface::line (me, line_left, line_right)); line.add_stencil (Line_interface::arrows (me, - span_points[LEFT], - span_points[RIGHT], - arrows[LEFT], - arrows[RIGHT])); + span_points[LEFT], + span_points[RIGHT], + arrows[LEFT], + arrows[RIGHT])); } + else + me->warning (_ ("Line spanner's left point is to the right of its right point.")); 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 (); } ADD_INTERFACE (Line_spanner, - "Generic line drawn between two objects, e.g., for use with" - " glissandi.", - - /* properties */ - "bound-details " - "extra-dy " - "gap " - "left-bound-info " - "note-columns " - "right-bound-info " - "thickness " - "to-barline " - ); + "Generic line drawn between two objects, e.g., for use with" + " glissandi.", + + /* properties */ + "bound-details " + "extra-dy " + "gap " + "left-bound-info " + "note-columns " + "right-bound-info " + "simple-Y " + "thickness " + "to-barline " + ); diff --git a/lily/listener.cc b/lily/listener.cc index 686ee3ad67..c785ff3d72 100644 --- a/lily/listener.cc +++ b/lily/listener.cc @@ -36,10 +36,11 @@ Listener::Listener (const void *target, Listener_function_table *type) Listener::Listener (Listener const &other) { target_ = other.target_; - type_ = other.type_; + type_ = other.type_; } -void Listener::listen (SCM ev) const { +void Listener::listen (SCM ev) const +{ (type_->listen_callback) (target_, ev); } @@ -53,7 +54,7 @@ Listener::mark_smob (SCM sm) } int -Listener::print_smob (SCM, SCM p, scm_print_state*) +Listener::print_smob (SCM, SCM p, scm_print_state *) { scm_puts ("#", p); return 1; diff --git a/lily/lookup.cc b/lily/lookup.cc index aec43fe8fb..1acb34f783 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen @@ -33,20 +33,6 @@ using namespace std; #include "main.hh" #include "lily-guile.hh" -Stencil -Lookup::dot (Offset p, Real radius) -{ - SCM at = (scm_list_n (ly_symbol2scm ("dot"), - scm_from_double (p[X_AXIS]), - scm_from_double (p[Y_AXIS]), - scm_from_double (radius), - SCM_UNDEFINED)); - Box box; - box.add_point (p - Offset (radius, radius)); - box.add_point (p + Offset (radius, radius)); - return Stencil (box, at); -} - Stencil Lookup::beam (Real slope, Real width, Real thick, Real blot) { @@ -61,38 +47,38 @@ Lookup::beam (Real slope, Real width, Real thick, Real blot) SCM points = SCM_EOL; points = scm_cons (scm_from_double (p[X_AXIS]), - scm_cons (scm_from_double (p[Y_AXIS]), - points)); + scm_cons (scm_from_double (p[Y_AXIS]), + points)); p = Offset (0, -thick / 2); b.add_point (p); p += Offset (1, 1) * (blot / 2); points = scm_cons (scm_from_double (p[X_AXIS]), - scm_cons (scm_from_double (p[Y_AXIS]), - points)); + scm_cons (scm_from_double (p[Y_AXIS]), + points)); p = Offset (width, width * slope - thick / 2); b.add_point (p); p += Offset (-1, 1) * (blot / 2); points = scm_cons (scm_from_double (p[X_AXIS]), - scm_cons (scm_from_double (p[Y_AXIS]), - points)); + scm_cons (scm_from_double (p[Y_AXIS]), + points)); p = Offset (width, width * slope + thick / 2); b.add_point (p); p += Offset (-1, -1) * (blot / 2); points = scm_cons (scm_from_double (p[X_AXIS]), - scm_cons (scm_from_double (p[Y_AXIS]), - points)); + scm_cons (scm_from_double (p[Y_AXIS]), + points)); SCM expr = scm_list_n (ly_symbol2scm ("polygon"), - ly_quote_scm (points), - scm_from_double (blot), - SCM_BOOL_T, - SCM_UNDEFINED); + ly_quote_scm (points), + scm_from_double (blot), + SCM_BOOL_T, + SCM_UNDEFINED); return Stencil (b, expr); } @@ -103,9 +89,9 @@ Lookup::rotated_box (Real slope, Real width, Real thick, Real blot) vector pts; Offset rot (1, slope); - thick -= 2*blot; - width -= 2*blot; - rot /= sqrt (1 + slope*slope); + thick -= 2 * blot; + width -= 2 * blot; + rot /= sqrt (1 + slope * slope); pts.push_back (Offset (0, -thick / 2) * rot); pts.push_back (Offset (width, -thick / 2) * rot); pts.push_back (Offset (width, thick / 2) * rot); @@ -117,12 +103,12 @@ Stencil Lookup::horizontal_line (Interval w, Real th) { SCM at = scm_list_n (ly_symbol2scm ("draw-line"), - scm_from_double (th), - scm_from_double (w[LEFT]), - scm_from_double (0), - scm_from_double (w[RIGHT]), - scm_from_double (0), - SCM_UNDEFINED); + scm_from_double (th), + scm_from_double (w[LEFT]), + scm_from_double (0), + scm_from_double (w[RIGHT]), + scm_from_double (0), + SCM_UNDEFINED); Box box; box[X_AXIS] = w; @@ -137,6 +123,16 @@ Lookup::blank (Box b) return Stencil (b, scm_from_locale_string ("")); } +Stencil +Lookup::circle (Real rad, Real thick, bool filled) +{ + Box b (Interval (-rad, rad), Interval (-rad, rad)); + return Stencil (b, scm_list_4 (ly_symbol2scm ("circle"), + scm_from_double (rad), + scm_from_double (thick), + scm_from_bool (filled))); +} + Stencil Lookup::filled_box (Box b) { @@ -179,12 +175,12 @@ Lookup::round_filled_box (Box b, Real blotdiameter) blotdiameter = b.y ().length (); SCM at = (scm_list_n (ly_symbol2scm ("round-filled-box"), - scm_from_double (-b[X_AXIS][LEFT]), - scm_from_double (b[X_AXIS][RIGHT]), - scm_from_double (-b[Y_AXIS][DOWN]), - scm_from_double (b[Y_AXIS][UP]), - scm_from_double (blotdiameter), - SCM_UNDEFINED)); + scm_from_double (-b[X_AXIS][LEFT]), + scm_from_double (b[X_AXIS][RIGHT]), + scm_from_double (-b[Y_AXIS][DOWN]), + scm_from_double (b[Y_AXIS][UP]), + scm_from_double (blotdiameter), + SCM_UNDEFINED)); return Stencil (b, at); } @@ -231,7 +227,7 @@ Lookup::round_filled_box (Box b, Real blotdiameter) */ Stencil Lookup::round_filled_polygon (vector const &points, - Real blotdiameter) + Real blotdiameter) { /* TODO: Maybe print a warning if one of the above limitations applies to the given polygon. However, this is quite complicated @@ -246,7 +242,7 @@ Lookup::round_filled_polygon (vector const &points, int next = (i + 1) % points.size (); Real d = (points[i] - points[next]).length (); if (d < epsilon) - programming_error ("Polygon should not have duplicate points"); + programming_error ("Polygon should not have duplicate points"); } #endif @@ -254,7 +250,11 @@ Lookup::round_filled_polygon (vector const &points, if (points.size () == 0) return Stencil (); if (points.size () == 1) - return dot (points[0], 0.5 * blotdiameter); + { + Stencil circ = circle (0.5 * blotdiameter, 0, true); + circ.translate (points[0]); + return circ; + } if (points.size () == 2) return Line_interface::make_line (blotdiameter, points[0], points[1]); @@ -273,17 +273,18 @@ Lookup::round_filled_polygon (vector const &points, Offset p10 = p0 - p1; Offset p12 = p2 - p1; if (p10.length () != 0.0) - { // recompute ccw - Real phi = p10.arg (); - // rotate (p2 - p0) by (-phi) - Offset q = complex_multiply (p2 - p0, complex_exp (Offset (1.0, -phi))); - - if (q[Y_AXIS] > 0) - ccw = 1; - else if (q[Y_AXIS] < 0) - ccw = 0; - else {} // keep ccw unchanged - } + { + // recompute ccw + Real phi = p10.arg (); + // rotate (p2 - p0) by (-phi) + Offset q = complex_multiply (p2 - p0, complex_exp (Offset (1.0, -phi))); + + if (q[Y_AXIS] > 0) + ccw = 1; + else if (q[Y_AXIS] < 0) + ccw = 0; + else {} // keep ccw unchanged + } else {} // keep ccw unchanged Offset p10n = (1.0 / p10.length ()) * p10; // normalize length to 1.0 Offset p12n = (1.0 / p12.length ()) * p12; @@ -292,15 +293,15 @@ Lookup::round_filled_polygon (vector const &points, Offset p13; Real d = p13n.length () * p14n.length (); // distance p3n to line (p1..p0) if (d < epsilon) - // special case: p0, p1, p2 are on a single line => build - // vector orthogonal to (p2-p0) of length 0.5 blotdiameter - { - p13[X_AXIS] = p10[Y_AXIS]; - p13[Y_AXIS] = -p10[X_AXIS]; - p13 = (0.5 * blotdiameter / p13.length ()) * p13; - } + // special case: p0, p1, p2 are on a single line => build + // vector orthogonal to (p2-p0) of length 0.5 blotdiameter + { + p13[X_AXIS] = p10[Y_AXIS]; + p13[Y_AXIS] = -p10[X_AXIS]; + p13 = (0.5 * blotdiameter / p13.length ()) * p13; + } else - p13 = (0.5 * blotdiameter / d) * p13n; + p13 = (0.5 * blotdiameter / d) * p13n; shrunk_points[i1] = p1 + ((ccw) ? p13 : -p13); } @@ -315,10 +316,10 @@ Lookup::round_filled_polygon (vector const &points, box.add_point (points[i]); } SCM polygon_scm = scm_list_n (ly_symbol2scm ("polygon"), - ly_quote_scm (shrunk_points_scm), - scm_from_double (blotdiameter), - SCM_BOOL_T, - SCM_UNDEFINED); + ly_quote_scm (shrunk_points_scm), + scm_from_double (blotdiameter), + SCM_BOOL_T, + SCM_UNDEFINED); Stencil polygon = Stencil (box, polygon_scm); shrunk_points.clear (); @@ -332,20 +333,18 @@ Stencil Lookup::frame (Box b, Real thick, Real blot) { Stencil m; - Direction d = LEFT; for (Axis a = X_AXIS; a < NO_AXES; a = Axis (a + 1)) { - Axis o = Axis ((a + 1)%NO_AXES); - do - { - Box edges; - edges[a] = b[a][d] + 0.5 * thick * Interval (-1, 1); - edges[o][DOWN] = b[o][DOWN] - thick / 2; - edges[o][UP] = b[o][UP] + thick / 2; - - m.add_stencil (round_filled_box (edges, blot)); - } - while (flip (&d) != LEFT); + Axis o = Axis ((a + 1) % NO_AXES); + for (LEFT_and_RIGHT (d)) + { + Box edges; + edges[a] = b[a][d] + 0.5 * thick * Interval (-1, 1); + edges[o][DOWN] = b[o][DOWN] - thick / 2; + edges[o][UP] = b[o][UP] + thick / 2; + + m.add_stencil (round_filled_box (edges, blot)); + } } return m; } @@ -359,7 +358,7 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick, { Stencil return_value; - /* + /* calculate the offset for the two beziers that make the sandwich for the slur */ @@ -371,36 +370,36 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick, curve.control_[1] -= perp; curve.control_[2] -= perp; - + if (!scm_is_pair (dash_details)) - { + { /* solid slur */ return_value = bezier_sandwich (back, curve, linethick); } else - { + { /* dashed or combination slur */ int num_segments = scm_to_int (scm_length (dash_details)); - for (int i=0; i points; - Real blotdiameter = 0.0; - - Offset p1 (0, 0); - Offset p2 (w, w * s); - - return Lookup::round_filled_polygon (points, blotdiameter); -#endif - SCM wid = scm_from_double (w); - SCM sl = scm_from_double (s); - SCM thick = scm_from_double (t); - SCM slashnodot = scm_list_n (ly_symbol2scm ("repeat-slash"), - wid, sl, thick, SCM_UNDEFINED); + Real x_width = sqrt ((t * t) + ((t / s) * (t / s))); + Real height = w * s; + + SCM controls = scm_list_n (ly_symbol2scm ("moveto"), + scm_from_double (0), + scm_from_double (0), + ly_symbol2scm ("rlineto"), + scm_from_double (x_width), + scm_from_double (0), + ly_symbol2scm ("rlineto"), + scm_from_double (w), + scm_from_double (height), + ly_symbol2scm ("rlineto"), + scm_from_double (-x_width), + scm_from_double (0), + ly_symbol2scm ("closepath"), + SCM_UNDEFINED); + + SCM slashnodot = scm_list_n (ly_symbol2scm ("path"), + scm_from_double (0), + ly_quote_scm (controls), + ly_quote_scm (ly_symbol2scm ("round")), + ly_quote_scm (ly_symbol2scm ("round")), + SCM_BOOL_T, + SCM_UNDEFINED); Box b (Interval (0, w + sqrt (sqr (t / s) + sqr (t))), - Interval (0, w * s)); + Interval (0, w * s)); return Stencil (b, slashnodot); // http://slashnodot.org } @@ -506,7 +525,7 @@ Stencil Lookup::bracket (Axis a, Interval iv, Real thick, Real protrude, Real blot) { Box b; - Axis other = Axis ((a + 1)%2); + Axis other = Axis ((a + 1) % 2); b[a] = iv; b[other] = Interval (-1, 1) * thick * 0.5; @@ -540,20 +559,18 @@ Lookup::triangle (Interval iv, Real thick, Real protrude) } - - Stencil Lookup::points_to_line_stencil (Real thick, vector const &points) { Stencil ret; for (vsize i = 1; i < points.size (); i++) { - if (points[i-1].is_sane () && points[i].is_sane ()) - { - Stencil line - = Line_interface::make_line (thick, points[i-1], points[i]); - ret.add_stencil (line); - } + if (points[i - 1].is_sane () && points[i].is_sane ()) + { + Stencil line + = Line_interface::make_line (thick, points[i - 1], points[i]); + ret.add_stencil (line); + } } return ret; } diff --git a/lily/ly-module.cc b/lily/ly-module.cc index 210c74293a..51e473b68d 100644 --- a/lily/ly-module.cc +++ b/lily/ly-module.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,8 +23,6 @@ #include "std-string.hh" #include "protected-scm.hh" - - SCM ly_make_module (bool safe) { @@ -36,17 +34,17 @@ ly_make_module (bool safe) SCM maker = ly_lily_module_constant ("make-module"); mod = scm_call_0 (maker); /* - Look up and call Guile module-export-all! or, when using - Guile V1.8, the compatible shim defined in lily.scm. + Look up and call Guile module-export-all! or, when using + Guile V1.8, the compatible shim defined in lily.scm. */ SCM module_export_all_x = ly_lily_module_constant ("module-export-all!"); scm_call_1 (module_export_all_x, mod); /* - Evaluate Guile module "the-root-module", - and ensure we inherit definitions from it and the "lily" module - N.B. this used to be "the-scm-module" and is deprecated in - Guile V1.9/2.0 + Evaluate Guile module "the-root-module", + and ensure we inherit definitions from it and the "lily" module + N.B. this used to be "the-scm-module" and is deprecated in + Guile V1.9/2.0 */ SCM scm_module = ly_lily_module_constant ("the-root-module"); ly_use_module (mod, scm_module); @@ -87,7 +85,6 @@ ly_use_module (SCM mod, SCM used) #define FUNC_NAME __FUNCTION__ - SCM ly_module_symbols (SCM mod) { @@ -99,9 +96,9 @@ ly_module_symbols (SCM mod) static SCM entry_to_alist (void * /* closure */, - SCM key, - SCM val, - SCM result) + SCM key, + SCM val, + SCM result) { if (scm_variable_bound_p (val) == SCM_BOOL_T) return scm_cons (scm_cons (key, scm_variable_ref (val)), result); @@ -110,14 +107,14 @@ entry_to_alist (void * /* closure */, } LY_DEFINE (ly_module_2_alist, "ly:module->alist", - 1, 0, 0, (SCM mod), - "Dump the contents of module @var{mod} as an alist.") + 1, 0, 0, (SCM mod), + "Dump the contents of module @var{mod} as an alist.") { SCM_VALIDATE_MODULE (1, mod); SCM obarr = SCM_MODULE_OBARRAY (mod); return scm_internal_hash_fold ((scm_t_hash_fold_fn) &entry_to_alist, - NULL, SCM_EOL, obarr); + NULL, SCM_EOL, obarr); } void diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index 5327ff9ced..48c8af205e 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -70,7 +70,7 @@ private: Moment busy_moment_; Moment pending_grace_moment_; - + Music_iterator *lyric_iter_; }; @@ -85,11 +85,10 @@ Lyric_combine_music_iterator::Lyric_combine_music_iterator () busy_moment_.set_infinite (-1); } - /* It's dubious whether we can ever make this fully work. Due to - associatedVoice switching, this routine may be triggered for - the wrong music_context_ + associatedVoice switching, this routine may be triggered for + the wrong music_context_ */ IMPLEMENT_LISTENER (Lyric_combine_music_iterator, set_busy) void @@ -99,10 +98,10 @@ Lyric_combine_music_iterator::set_busy (SCM se) if ((e->in_event_class ("note-event") || e->in_event_class ("cluster-note-event")) && music_context_) - + busy_moment_ = max (music_context_->now_mom (), - busy_moment_); - + busy_moment_); + } void @@ -111,14 +110,14 @@ Lyric_combine_music_iterator::set_music_context (Context *to) if (music_context_) { music_context_->event_source ()-> - remove_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event")); + remove_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event")); } music_context_ = to; if (to) { to->event_source ()->add_listener (GET_LISTENER (set_busy), - ly_symbol2scm ("music-event")); + ly_symbol2scm ("music-event")); } } @@ -135,7 +134,7 @@ Lyric_combine_music_iterator::start_new_syllable () const { bool m = melisma_busy (music_context_); if (m) - return false; + return false; } return true; @@ -193,13 +192,13 @@ Lyric_combine_music_iterator::construct_children () if (!lyric_iter_) return; lyrics_context_ = find_context_below (lyric_iter_->get_outlet (), - ly_symbol2scm ("Lyrics"), ""); + ly_symbol2scm ("Lyrics"), ""); if (!lyrics_context_) { - m->origin ()->warning ("argument of \\lyricsto should contain Lyrics context"); + m->origin ()->warning (_ ("argument of \\lyricsto should contain Lyrics context")); } - + lyricsto_voice_name_ = get_music ()->get_property ("associated-context"); Context *voice = find_voice (); @@ -207,7 +206,7 @@ Lyric_combine_music_iterator::construct_children () set_music_context (voice); /* - Wait for a Create_context event. If this isn't done, lyrics can be + Wait for a Create_context event. If this isn't done, lyrics can be delayed when voices are created implicitly. */ Global_context *g = get_outlet ()->get_global_context (); @@ -222,18 +221,14 @@ Lyric_combine_music_iterator::construct_children () IMPLEMENT_LISTENER (Lyric_combine_music_iterator, check_new_context) void -Lyric_combine_music_iterator::check_new_context (SCM sev) +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 ; - - Context *voice = find_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); @@ -252,8 +247,8 @@ Lyric_combine_music_iterator::find_voice () { SCM voice_name = lyricsto_voice_name_; SCM running = lyrics_context_ - ? lyrics_context_->get_property ("associatedVoice") - : SCM_EOL; + ? lyrics_context_->get_property ("associatedVoice") + : SCM_EOL; if (scm_is_string (running)) voice_name = running; @@ -263,7 +258,7 @@ Lyric_combine_music_iterator::find_voice () { Context *t = get_outlet (); while (t && t->get_parent_context ()) - t = t->get_parent_context (); + t = t->get_parent_context (); string name = ly_scm2string (voice_name); return find_context_below (t, ly_symbol2scm ("Voice"), name); @@ -287,35 +282,35 @@ Lyric_combine_music_iterator::process (Moment /* when */) if (!music_context_->get_parent_context ()) { /* - The melody has died. - We die too. + The melody has died. + We die too. */ if (lyrics_context_) - lyrics_context_->unset_property (ly_symbol2scm ("associatedVoiceContext")); + lyrics_context_->unset_property (ly_symbol2scm ("associatedVoiceContext")); lyric_iter_ = 0; set_music_context (0); } if (music_context_ - && (start_new_syllable () || - (busy_moment_ >= pending_grace_moment_)) + && (start_new_syllable () + || (busy_moment_ >= pending_grace_moment_)) && lyric_iter_->ok ()) { Moment now = music_context_->now_mom (); if (now.grace_part_ && !to_boolean (lyrics_context_->get_property ("includeGraceNotes"))) - { - pending_grace_moment_ = now; - pending_grace_moment_.grace_part_ = Rational (0); - return; - } + { + pending_grace_moment_ = now; + pending_grace_moment_.grace_part_ = Rational (0); + return; + } else - { - pending_grace_moment_.set_infinite (1); - } + { + pending_grace_moment_.set_infinite (1); + } Moment m = lyric_iter_->pending_moment (); lyrics_context_->set_property (ly_symbol2scm ("associatedVoiceContext"), - music_context_->self_scm ()); + music_context_->self_scm ()); lyric_iter_->process (m); music_found_ = true; diff --git a/lily/lyric-combine-music.cc b/lily/lyric-combine-music.cc index e8b67e6b07..0110645667 100644 --- a/lily/lyric-combine-music.cc +++ b/lily/lyric-combine-music.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index c52cba8356..e4b23d1f94 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -71,22 +71,22 @@ Lyric_engraver::process_music () SCM text = event_->get_property ("text"); if (ly_is_equal (text, scm_from_locale_string (" "))) - { - if (last_text_) - last_text_->set_property ("self-alignment-X", - get_property ("lyricMelismaAlignment")); - } + { + if (last_text_) + last_text_->set_property ("self-alignment-X", + get_property ("lyricMelismaAlignment")); + } else - text_ = make_item ("LyricText", event_->self_scm ()); + text_ = make_item ("LyricText", event_->self_scm ()); } - Context *voice = get_voice_to_lyrics (context ()); - if (last_text_ - && voice - && to_boolean (voice->get_property ("melismaBusy")) - && !to_boolean (context ()->get_property ("ignoreMelismata"))) - last_text_->set_property ("self-alignment-X", - get_property ("lyricMelismaAlignment")); + Context *voice = get_voice_to_lyrics (context ()); + if (last_text_ + && voice + && to_boolean (voice->get_property ("melismaBusy")) + && !to_boolean (context ()->get_property ("ignoreMelismata"))) + last_text_->set_property ("self-alignment-X", + get_property ("lyricMelismaAlignment")); } Context * @@ -109,7 +109,7 @@ get_voice_to_lyrics (Context *lyrics) { ssize idx = nm.rfind ('-'); if (idx != NPOS) - nm = nm.substr (0, idx); + nm = nm.substr (0, idx); } Context *parent = lyrics; @@ -144,17 +144,17 @@ get_current_note_head (Context *voice, bool include_grace_notes) Grob *g = unsmob_grob (scm_cdar (s));; Moment *end_mom = unsmob_moment (scm_caar (s)); if (!end_mom || !g) - { - programming_error ("busyGrobs invalid"); - continue; - } + { + programming_error ("busyGrobs invalid"); + continue; + } - if (((end_mom->main_part_ > now.main_part_) || - (include_grace_notes && end_mom->grace_part_ > now.grace_part_)) + if (((end_mom->main_part_ > now.main_part_) + || (include_grace_notes && end_mom->grace_part_ > now.grace_part_)) && dynamic_cast (g) && Note_head::has_interface (g)) { - return g; + return g; } } @@ -169,24 +169,25 @@ Lyric_engraver::stop_translation_timestep () Context *voice = get_voice_to_lyrics (context ()); if (voice) - { - bool include_grace_notes = to_boolean (get_property ("includeGraceNotes")); - Grob *head = get_current_note_head (voice, include_grace_notes); - - if (head) - { - text_->set_parent (head, X_AXIS); - if (melisma_busy (voice) - && !to_boolean (get_property ("ignoreMelismata"))) - text_->set_property ("self-alignment-X", - get_property ("lyricMelismaAlignment")); - } - else - { - text_->warning (_ ("Lyric syllable does not have note. Use \\lyricsto or associatedVoice.")); - text_->set_property ("X-offset", scm_from_int (0)); - } - } + { + bool include_grace_notes = to_boolean (get_property ("includeGraceNotes")); + Grob *head = get_current_note_head (voice, include_grace_notes); + + if (head) + { + text_->set_parent (head, X_AXIS); + if (melisma_busy (voice) + && !to_boolean (get_property ("ignoreMelismata"))) + text_->set_property ("self-alignment-X", + get_property ("lyricMelismaAlignment")); + } + else + { + text_->warning (_ ("Lyric syllable does not have note." + " Use \\lyricsto or associatedVoice.")); + text_->set_property ("X-offset", scm_from_int (0)); + } + } last_text_ = text_; text_ = 0; @@ -195,18 +196,18 @@ Lyric_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Lyric_engraver, - /* doc */ - "Engrave text for lyrics.", + /* doc */ + "Engrave text for lyrics.", - /* create */ - "LyricText ", + /* create */ + "LyricText ", - /* read */ - "ignoreMelismata " - "includeGraceNotes " - "lyricMelismaAlignment " - "searchForVoice", + /* read */ + "ignoreMelismata " + "includeGraceNotes " + "lyricMelismaAlignment " + "searchForVoice", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc index 088881fc1d..f61acbe5fe 100644 --- a/lily/lyric-extender.cc +++ b/lily/lyric-extender.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -43,7 +43,7 @@ Lyric_extender::print (SCM smob) common = common->common_refpoint (me->get_bound (RIGHT), X_AXIS); common = common->common_refpoint (me->get_system (), X_AXIS); - + Real sl = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); extract_grob_set (me, "heads", heads); @@ -71,13 +71,13 @@ Lyric_extender::print (SCM smob) = left_point + (robust_scm2double (minlen, 0)); right_point = min (right_point, me->get_system ()->get_bound (RIGHT)->relative_coordinate (common, X_AXIS)); - + if (heads.size ()) right_point = max (right_point, heads.back ()->extent (common, X_AXIS)[RIGHT]); Real h = sl * robust_scm2double (me->get_property ("thickness"), 0); Drul_array paddings (robust_scm2double (me->get_property ("left-padding"), h), - robust_scm2double (me->get_property ("right-padding"), h)); + robust_scm2double (me->get_property ("right-padding"), h)); if (right_text) right_point = min (right_point, (robust_relative_extent (right_text, common, X_AXIS)[LEFT] - paddings[RIGHT])); @@ -93,22 +93,22 @@ Lyric_extender::print (SCM smob) return SCM_EOL; Stencil mol (Lookup::round_filled_box (Box (Interval (0, w), - Interval (0, h)), - 0.8 * h)); + Interval (0, h)), + 0.8 * h)); mol.translate_axis (left_point - me->relative_coordinate (common, X_AXIS), - X_AXIS); + X_AXIS); return mol.smobbed_copy (); } ADD_INTERFACE (Lyric_extender, - "The extender is a simple line at the baseline of the lyric" - " that helps show the length of a melisma (a tied or slurred" - " note).", - - /* properties */ - "heads " - "left-padding " - "next " - "right-padding " - "thickness " - ); + "The extender is a simple line at the baseline of the lyric" + " that helps show the length of a melisma (a tied or slurred" + " note).", + + /* properties */ + "heads " + "left-padding " + "next " + "right-padding " + "thickness " + ); diff --git a/lily/lyric-hyphen.cc b/lily/lyric-hyphen.cc index 5fae21fc34..0e3a67e348 100644 --- a/lily/lyric-hyphen.cc +++ b/lily/lyric-hyphen.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Han-Wen Nienhuys + Copyright (C) 2003--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #include "lyric-hyphen.hh" - +#include "axis-group-interface.hh" #include "lookup.hh" #include "output-def.hh" #include "paper-column.hh" @@ -37,33 +37,30 @@ Lyric_hyphen::print (SCM smob) { Spanner *me = unsmob_spanner (smob); Drul_array bounds (me->get_bound (LEFT), - me->get_bound (RIGHT)); + me->get_bound (RIGHT)); if (bounds[LEFT]->break_status_dir () && (Paper_column::when_mom (bounds[LEFT]) - == Paper_column::when_mom (bounds[RIGHT]->get_column ()))) + == Paper_column::when_mom (bounds[RIGHT]->get_column ()))) return SCM_EOL; Grob *common = bounds[LEFT]->common_refpoint (bounds[RIGHT], X_AXIS); Interval span_points; - Direction d = LEFT; - Drul_array broken; - do + for (LEFT_and_RIGHT (d)) { - Interval iv = bounds[d]->extent (common, X_AXIS); + Interval iv = Axis_group_interface::generic_bound_extent (bounds[d], common, X_AXIS); span_points[d] = iv.is_empty () - ? bounds[d]->relative_coordinate (common, X_AXIS) - : iv[-d]; + ? bounds[d]->relative_coordinate (common, X_AXIS) + : iv[-d]; } - while (flip (&d) != LEFT); Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real th = robust_scm2double (me->get_property ("thickness"), 1) * lt; Real font_size_step = robust_scm2double (me->get_property ("font-size"), 0.0); Real h = robust_scm2double (me->get_property ("height"), 0.5) - * pow (2.0, font_size_step / 6.0); + * pow (2.0, font_size_step / 6.0); // interval? @@ -124,14 +121,12 @@ Lyric_hyphen::set_spacing_rods (SCM smob) Spanner *sp = dynamic_cast (me); r.distance_ = robust_scm2double (me->get_property ("minimum-distance"), 0); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { r.item_drul_[d] = sp->get_bound (d); if (r.item_drul_[d]) - r.distance_ += -d * r.item_drul_[d]->extent (r.item_drul_[d], X_AXIS)[-d]; + r.distance_ += -d * r.item_drul_[d]->extent (r.item_drul_[d], X_AXIS)[-d]; } - while (flip (&d) != LEFT); if (r.item_drul_[LEFT] && r.item_drul_[RIGHT]) @@ -141,16 +136,16 @@ Lyric_hyphen::set_spacing_rods (SCM smob) } ADD_INTERFACE (Lyric_hyphen, - "A centered hyphen is simply a line between lyrics used to" - " divide syllables.", - - /* properties */ - "dash-period " - "height " - "length " - "minimum-distance " - "minimum-length " - "padding " - "thickness " - ); + "A centered hyphen is simply a line between lyrics used to" + " divide syllables.", + + /* properties */ + "dash-period " + "height " + "length " + "minimum-distance " + "minimum-length " + "padding " + "thickness " + ); diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc index decb4c9c6c..3fd9900e7e 100644 --- a/lily/lyric-performer.cc +++ b/lily/lyric-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ Lyric_performer::process_music () && ly_scm2string (events_[0]->get_property ("text")).length ()) { audio_ = new Audio_text (Audio_text::LYRIC, - ly_scm2string (events_[0]->get_property ("text"))); + ly_scm2string (events_[0]->get_property ("text"))); Audio_element_info info (audio_, events_[0]); announce_element (info); } @@ -75,15 +75,15 @@ Lyric_performer::listen_lyric (Stream_event *event) } ADD_TRANSLATOR (Lyric_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/main.cc b/lily/main.cc index 9e33ec13dc..239ff1b39d 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -65,7 +65,6 @@ vector dump_header_fieldnames_global; /* Name of initialisation file. */ string init_name_global; - /* Output formats to generate. */ string output_format_global = ""; @@ -75,12 +74,6 @@ string output_name_global; /* Run in safe mode? */ bool be_safe_global = false; -/* Provide URI links to the original file */ -bool point_and_click_global = true; - -/* Verbose progress indication? */ -bool be_verbose_global = false; - /* Scheme code to execute before parsing, after .scm init. This is where -e arguments are appended to. */ string init_scheme_code_global; @@ -88,7 +81,6 @@ string init_scheme_variables_global; bool relocate_binary = true; - /* * Miscellaneous global stuff. */ @@ -99,33 +91,33 @@ File_path global_path; */ static char const *AUTHORS -= " Han-Wen Nienhuys \n" - " Jan Nieuwenhuizen \n"; + = " Han-Wen Nienhuys \n" + " Jan Nieuwenhuizen \n"; static char const *PROGRAM_NAME = "lilypond"; static char const *PROGRAM_URL = "http://lilypond.org"; static char const *NOTICE -= _i ("This program is free software. It is covered by the GNU General Public\n" - "License and you are welcome to change it and/or distribute copies of it\n" - "under certain conditions. Invoke as `%s --warranty' for more\n" - "information.\n"); + = _i ("This program is free software. It is covered by the GNU General Public\n" + "License and you are welcome to change it and/or distribute copies of it\n" + "under certain conditions. Invoke as `%s --warranty' for more\n" + "information.\n"); static char const *WARRANTY -= _i (" This program is free software; you can redistribute it and/or\n" - "modify it under the terms of the GNU General Public License as \n" - "published by the Free Software Foundation, either version 3 of\n" - "the License, or (at your option) any later version.\n" - "\n" - " This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" - "General Public License for more details.\n" - "\n" - " You should have received a copy of the\n" - "GNU General Public License along with this program; if not, write to\n" - "the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" - "Boston, MA 02111-1307, USA.\n"); + = _i (" This program is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU General Public License as \n" + "published by the Free Software Foundation, either version 3 of\n" + "the License, or (at your option) any later version.\n" + "\n" + " This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" + "General Public License for more details.\n" + "\n" + " You should have received a copy of the\n" + "GNU General Public License along with this program; if not, write to\n" + "the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" + "Boston, MA 02111-1307, USA.\n"); /* Where the init files live. Typically: LILYPOND_DATADIR = /usr/share/lilypond @@ -143,10 +135,13 @@ static Getopt_long *option_parser = 0; * call gettext () explicitly for actual "translation" */ static Long_option_init options_static[] -= { - {_i ("SYM[=VAL]"), "define-default", 'd', - _i ("set Scheme option SYM to VAL (default: #t).\n" - "Use -dhelp for help.")}, += +{ + { + _i ("SYM[=VAL]"), "define-default", 'd', + _i ("set Scheme option SYM to VAL (default: #t).\n" + "Use -dhelp for help.") + }, {_i ("EXPR"), "evaluate", 'e', _i ("evaluate scheme code")}, /* Bug in option parser: --output =foe is taken as an abbreviation @@ -155,33 +150,42 @@ static Long_option_init options_static[] {0, "pdf", 0, _i ("generate PDF (default)")}, {0, "png", 0, _i ("generate PNG")}, {0, "ps", 0, _i ("generate PostScript")}, - {0, "help", 'h', _i ("show this help and exit")}, - {_i ("FIELD"), "header", 'H', _i ("dump header field FIELD to file\n" - "named BASENAME.FIELD")}, - {_i ("DIR"), "include", 'I', _i ("add DIR to search path")}, - {_i ("FILE"), "init", 'i', _i ("use FILE as init file")}, + {0, "help", 'h', _i ("show this help and exit")}, + { + _i ("FIELD"), "header", 'H', _i ("dump header field FIELD to file\n" + "named BASENAME.FIELD") + }, + {_i ("DIR"), "include", 'I', _i ("add DIR to search path")}, + {_i ("FILE"), "init", 'i', _i ("use FILE as init file")}, #if HAVE_CHROOT - {_i ("USER, GROUP, JAIL, DIR"), "jail", 'j', _i ("chroot to JAIL, become USER:GROUP\n" - "and cd into DIR")}, + { + _i ("USER, GROUP, JAIL, DIR"), "jail", 'j', _i ("chroot to JAIL, become USER:GROUP\n" + "and cd into DIR") + }, #endif - {_i ("FILE"), "output", 'o', _i ("write output to FILE (suffix will be added)")}, + { + _i ("LOGLEVEL"), "loglevel", 'l', _i ("print log messages according to" + " LOGLEVEL. Possible values are:\n" + "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG.") + }, + {_i ("FILE"), "output", 'o', _i ("write output to FILE (suffix will be added)")}, {0, "relocate", 0, _i ("relocate using directory of lilypond program")}, - {0, "version", 'v', _i ("show version number and exit")}, - {0, "verbose", 'V', _i ("be verbose")}, - {0, "warranty", 'w', _i ("show warranty and copyright")}, + {0, "silent", 's', _i ("no progress, only error messages (equivalent to loglevel=ERROR)")}, + {0, "version", 'v', _i ("show version number and exit")}, + {0, "verbose", 'V', _i ("be verbose (equivalent to loglevel=DEBUG)")}, + {0, "warranty", 'w', _i ("show warranty and copyright")}, {0, 0, 0, 0} }; char const *LILYPOND_DATADIR = PACKAGE_DATADIR "/" TOPLEVEL_VERSION; - /* x86 defaults to using 80-bit extended precision arithmetic. This can cause problems because the truncation from 80 bits to 64 bits can occur in unpredictable places. To get around this, we tell the x87 FPU to use only double precision. Note that this is not needed for x86_64 because that uses the SSE unit by default instead of the x87 FPU. */ -#if ((defined(__x86__) || defined(__i386__)) \ - && defined(HAVE_FPU_CONTROL_H) && (HAVE_FPU_CONTROL_H == 1)) +#if ((defined (__x86__) || defined (__i386__)) \ + && defined (HAVE_FPU_CONTROL_H) && (HAVE_FPU_CONTROL_H == 1)) #include static void @@ -200,7 +204,6 @@ configure_fpu () #endif /* defined(__x86__) || defined(__i386__) */ - static void env_var_info (FILE *out, char const *key) { @@ -236,7 +239,7 @@ static void copyright () { /* Do not update the copyright years here, run `make grand-replace' */ - printf ("%s", (_f ("Copyright (c) %s by\n%s and others.", "1996--2011", + printf ("%s", (_f ("Copyright (c) %s by\n%s and others.", "1996--2012", AUTHORS).c_str ())); printf ("\n"); } @@ -259,8 +262,8 @@ notice () } LY_DEFINE (ly_usage, "ly:usage", - 0, 0, 0, (), - "Print usage message.") + 0, 0, 0, (), + "Print usage message.") { /* No version number or newline here. It confuses help2man. */ printf ("%s", (_f ("Usage: %s [OPTION]... FILE...", PROGRAM_NAME).c_str ())); @@ -280,8 +283,8 @@ LY_DEFINE (ly_usage, "ly:usage", or if there is a LilyPond users list or forum in your language "Report bugs in English via %s or in YOUR_LANG via URI" */ printf ("%s", (_f ("Report bugs via %s", - "http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs" - ).c_str ())); + "http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs" + ).c_str ())); printf ("\n"); printf ("\n"); return SCM_UNSPECIFIED; @@ -318,15 +321,15 @@ do_chroot_jail () actual actions. */ enum Jail - { - USER_NAME, GROUP_NAME, JAIL, DIR, JAIL_MAX - }; + { + USER_NAME, GROUP_NAME, JAIL, DIR, JAIL_MAX + }; vector components = string_split (jail_spec, ','); if (components.size () != JAIL_MAX) { error (_f ("expected %d arguments with jail, found: %u", JAIL_MAX, - (unsigned) components.size ())); + (unsigned) components.size ())); exit (2); } @@ -334,16 +337,16 @@ do_chroot_jail () errno = 0; int uid; - if (passwd * passwd = getpwnam (components[USER_NAME].c_str ())) + if (passwd *passwd = getpwnam (components[USER_NAME].c_str ())) uid = passwd->pw_uid; else { if (errno == 0) - error (_f ("no such user: %s", components[USER_NAME])); + error (_f ("no such user: %s", components[USER_NAME])); else - error (_f ("cannot get user id from user name: %s: %s", - components[USER_NAME], - strerror (errno))); + error (_f ("cannot get user id from user name: %s: %s", + components[USER_NAME], + strerror (errno))); exit (3); } @@ -351,23 +354,23 @@ do_chroot_jail () errno = 0; int gid; - if (group * group = getgrnam (components[GROUP_NAME].c_str ())) + if (group *group = getgrnam (components[GROUP_NAME].c_str ())) gid = group->gr_gid; else { if (errno == 0) - error (_f ("no such group: %s", components[GROUP_NAME])); + error (_f ("no such group: %s", components[GROUP_NAME])); else - error (_f ("cannot get group id from group name: %s: %s", - components[GROUP_NAME], - strerror (errno))); + error (_f ("cannot get group id from group name: %s: %s", + components[GROUP_NAME], + strerror (errno))); exit (3); } if (chroot (components[JAIL].c_str ())) { error (_f ("cannot chroot to: %s: %s", components[JAIL], - strerror (errno))); + strerror (errno))); exit (3); } @@ -386,7 +389,7 @@ do_chroot_jail () if (chdir (components[DIR].c_str ())) { error (_f ("cannot change working directory to: %s: %s", components[DIR], - strerror (errno))); + strerror (errno))); exit (3); } } @@ -401,7 +404,7 @@ main_with_guile (void *, int, char **) prepend_load_path (lilypond_datadir); prepend_load_path (lilypond_datadir + "/scm"); - if (be_verbose_global) + if (is_loglevel (LOG_DEBUG)) dir_info (stderr); init_scheme_variables_global = "(list " + init_scheme_variables_global + ")"; @@ -477,90 +480,96 @@ parse_argv (int argc, char **argv) while (Long_option_init const *opt = (*option_parser) ()) { switch (opt->shortname_char_) - { - case 0: - if (string (opt->longname_str0_) == "pdf" - || string (opt->longname_str0_) == "png" - || string (opt->longname_str0_) == "ps") - add_output_format (opt->longname_str0_); - else if (string (opt->longname_str0_) == "relocate") - relocate_binary = true; - break; - - case 'd': - { - string arg (option_parser->optional_argument_str0_); - ssize eq = arg.find ('='); - - string key = arg; - string val = "#t"; - - if (eq != NPOS) - { - key = arg.substr (0, eq); - val = arg.substr (eq + 1, arg.length () - 1); - } - - init_scheme_variables_global - += "(cons \'" + key + " '" + val + ")\n"; - } - break; - - case 'v': - notice (); - exit (0); - break; - case 'o': - { - string s = option_parser->optional_argument_str0_; - File_name file_name (s); - output_name_global = file_name.to_string (); - } - break; - case 'j': - jail_spec = option_parser->optional_argument_str0_; - break; - - case 'e': - init_scheme_code_global - += option_parser->optional_argument_str0_ + string (" "); - break; - case 'w': - warranty (); - exit (0); - break; - - case 'f': - { - vector components - = string_split (option_parser->optional_argument_str0_, ','); - for (vsize i = 0; i < components.size (); i++) - add_output_format (components[i]); - } - break; - - case 'H': - dump_header_fieldnames_global - .push_back (option_parser->optional_argument_str0_); - break; - case 'I': - global_path.append (option_parser->optional_argument_str0_); - break; - case 'i': - init_name_global = option_parser->optional_argument_str0_; - break; - case 'h': - show_help = true; - break; - case 'V': - be_verbose_global = true; - break; - default: - programming_error (to_string ("unhandled short option: %c", - opt->shortname_char_)); - assert (false); - break; - } + { + case 0: + if (string (opt->longname_str0_) == "pdf" + || string (opt->longname_str0_) == "png" + || string (opt->longname_str0_) == "ps") + add_output_format (opt->longname_str0_); + else if (string (opt->longname_str0_) == "relocate") + relocate_binary = true; + break; + + case 'd': + { + string arg (option_parser->optional_argument_str0_); + ssize eq = arg.find ('='); + + string key = arg; + string val = "#t"; + + if (eq != NPOS) + { + key = arg.substr (0, eq); + val = arg.substr (eq + 1, arg.length () - 1); + } + + init_scheme_variables_global + += "(cons \'" + key + " '" + val + ")\n"; + } + break; + + case 'v': + notice (); + exit (0); + break; + case 'o': + { + string s = option_parser->optional_argument_str0_; + File_name file_name (s); + output_name_global = file_name.to_string (); + } + break; + case 'j': + jail_spec = option_parser->optional_argument_str0_; + break; + + case 'e': + init_scheme_code_global + += option_parser->optional_argument_str0_ + string (" "); + break; + case 'w': + warranty (); + exit (0); + break; + + case 'f': + { + vector components + = string_split (option_parser->optional_argument_str0_, ','); + for (vsize i = 0; i < components.size (); i++) + add_output_format (components[i]); + } + break; + + case 'H': + dump_header_fieldnames_global + .push_back (option_parser->optional_argument_str0_); + break; + case 'I': + global_path.append (option_parser->optional_argument_str0_); + break; + case 'i': + init_name_global = option_parser->optional_argument_str0_; + break; + case 'h': + show_help = true; + break; + case 'V': + set_loglevel (LOGLEVEL_DEBUG); + break; + case 's': + set_loglevel (LOGLEVEL_ERROR); + break; + case 'l': + set_loglevel (option_parser->optional_argument_str0_); + break; + default: + programming_error (to_string ("unhandled short option: %c", + opt->shortname_char_)); + assert (false); + break; + } } if (output_format_global == "") @@ -569,8 +578,8 @@ parse_argv (int argc, char **argv) if (show_help) { ly_usage (); - if (be_verbose_global) - dir_info (stdout); + if (is_loglevel (LOG_DEBUG)) + dir_info (stdout); exit (0); } } @@ -590,11 +599,10 @@ setup_guile_env () sane_putenv ("GUILE_MIN_YIELD_2", yield, overwrite); sane_putenv ("GUILE_MIN_YIELD_MALLOC", yield, overwrite); - sane_putenv ("GUILE_INIT_SEGMENT_SIZE_1", - "10485760", overwrite); + "10485760", overwrite); sane_putenv ("GUILE_MAX_SEGMENT_SIZE", - "104857600", overwrite); + "104857600", overwrite); } vector start_environment_global; @@ -602,17 +610,19 @@ vector start_environment_global; int main (int argc, char **argv, char **envp) { - configure_fpu(); + configure_fpu (); for (char **p = envp; *p; p++) - start_environment_global.push_back(*p); + start_environment_global.push_back (*p); if (getenv ("LILYPOND_VERBOSE")) - be_verbose_global = true; + set_loglevel (LOGLEVEL_DEBUG); + if (getenv ("LILYPOND_LOGLEVEL")) + set_loglevel (getenv ("LILYPOND_LOGLEVEL")); setup_localisation (); parse_argv (argc, argv); - if (isatty (STDIN_FILENO)) + if (isatty (STDIN_FILENO) && (is_loglevel (LOG_BASIC))) identify (stderr); setup_paths (argv[0]); diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 67ad884824..25b19bd18a 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ using namespace std; #include "engraver.hh" #include "axis-group-interface.hh" -#include "bar-line.hh" #include "context.hh" #include "grob-array.hh" #include "international.hh" @@ -85,12 +84,12 @@ void Mark_engraver::stop_translation_timestep () { if (text_) - { - text_->set_object ("side-support-elements", - grob_list_to_grob_array (get_property ("stavesFound"))); - final_text_ = text_; - text_ = 0; - } + { + text_->set_object ("side-support-elements", + grob_list_to_grob_array (get_property ("stavesFound"))); + final_text_ = text_; + text_ = 0; + } mark_ev_ = 0; } @@ -99,7 +98,7 @@ Mark_engraver::finalize () { if (final_text_) final_text_->set_property ("break-visibility", - scm_c_make_vector (3, SCM_BOOL_T)); + scm_c_make_vector (3, SCM_BOOL_T)); final_text_ = 0; } @@ -130,58 +129,58 @@ Mark_engraver::process_music () create_items (mark_ev_); /* - automatic marks. + automatic marks. */ SCM m = mark_ev_->get_property ("label"); SCM proc = get_property ("markFormatter"); if (!Text_interface::is_markup (m) - && ly_is_procedure (proc)) - { - if (!scm_is_number (m)) - m = get_property ("rehearsalMark"); - - if (scm_integer_p (m) == SCM_BOOL_T - && scm_exact_p (m) == SCM_BOOL_T) - { - int mark_count = scm_to_int (m); - mark_count++; - context ()->set_property ("rehearsalMark", - scm_from_int (mark_count)); - } - - if (scm_is_number (m)) - m = scm_call_2 (proc, m, context ()->self_scm ()); - else - /* FIXME: constant error message. */ - warning (_ ("rehearsalMark must have integer value")); - } + && ly_is_procedure (proc)) + { + if (!scm_is_number (m)) + m = get_property ("rehearsalMark"); + + if (scm_integer_p (m) == SCM_BOOL_T + && scm_exact_p (m) == SCM_BOOL_T) + { + int mark_count = scm_to_int (m); + mark_count++; + context ()->set_property ("rehearsalMark", + scm_from_int (mark_count)); + } + + if (scm_is_number (m)) + m = scm_call_2 (proc, m, context ()->self_scm ()); + else + /* FIXME: constant error message. */ + warning (_ ("rehearsalMark must have integer value")); + } if (Text_interface::is_markup (m)) - text_->set_property ("text", m); + text_->set_property ("text", m); else - warning (_ ("mark label must be a markup object")); + warning (_ ("mark label must be a markup object")); } } ADD_ACKNOWLEDGER (Mark_engraver, break_alignment); ADD_TRANSLATOR (Mark_engraver, - /* doc */ - "Create @code{RehearsalMark} objects. It puts them on top of" - " all staves (which is taken from the property" - " @code{stavesFound}). If moving this engraver to a different" - " context, @ref{Staff_collecting_engraver} must move along," - " otherwise all marks end up on the same Y@tie{}location.", - - /* create */ - "RehearsalMark ", - - /* read */ - "markFormatter " - "rehearsalMark " - "stavesFound ", - - /* write */ - "" - ); + /* doc */ + "Create @code{RehearsalMark} objects. It puts them on top of" + " all staves (which is taken from the property" + " @code{stavesFound}). If moving this engraver to a different" + " context, @ref{Staff_collecting_engraver} must move along," + " otherwise all marks end up on the same Y@tie{}location.", + + /* create */ + "RehearsalMark ", + + /* read */ + "markFormatter " + "rehearsalMark " + "stavesFound ", + + /* write */ + "" + ); diff --git a/lily/measure-grouping-engraver.cc b/lily/measure-grouping-engraver.cc index 7a788dc3d2..526091944b 100644 --- a/lily/measure-grouping-engraver.cc +++ b/lily/measure-grouping-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,7 +64,7 @@ Measure_grouping_engraver::process_music () if (grouping_ && now.main_part_ >= stop_grouping_mom_ && !now.grace_part_) { grouping_->set_bound (RIGHT, - unsmob_grob (get_property ("currentMusicalColumn"))); + unsmob_grob (get_property ("currentMusicalColumn"))); grouping_ = 0; } @@ -83,34 +83,34 @@ Measure_grouping_engraver::process_music () Rational where (0); for (SCM s = grouping; scm_is_pair (s); - where += Rational ((int) scm_to_int (scm_car (s))) * base_moment, - s = scm_cdr (s)) - { - int grouplen = scm_to_int (scm_car (s)); - if (where == mp) - { - if (grouping_) - { - programming_error ("last grouping not finished yet"); - continue; - } + where += Rational ((int) scm_to_int (scm_car (s))) * base_moment, + s = scm_cdr (s)) + { + int grouplen = scm_to_int (scm_car (s)); + if (where == mp) + { + if (grouping_) + { + programming_error ("last grouping not finished yet"); + continue; + } if (grouplen > 1) - { - grouping_ = make_spanner ("MeasureGrouping", SCM_EOL); - grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn"))); - - stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * base_moment; - get_global_context ()->add_moment_to_process (Moment (stop_grouping_mom_)); - - if (grouplen == 3) - grouping_->set_property ("style", ly_symbol2scm ("triangle")); - else - grouping_->set_property ("style", ly_symbol2scm ("bracket")); - - break; - } - } - } + { + grouping_ = make_spanner ("MeasureGrouping", SCM_EOL); + grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn"))); + + stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * base_moment; + get_global_context ()->add_moment_to_process (Moment (stop_grouping_mom_)); + + if (grouplen == 3) + grouping_->set_property ("style", ly_symbol2scm ("triangle")); + else + grouping_->set_property ("style", ly_symbol2scm ("bracket")); + + break; + } + } + } } } @@ -121,18 +121,18 @@ Measure_grouping_engraver::Measure_grouping_engraver () ADD_ACKNOWLEDGER (Measure_grouping_engraver, note_column); ADD_TRANSLATOR (Measure_grouping_engraver, - /* doc */ - "Create @code{MeasureGrouping} to indicate beat subdivision.", + /* doc */ + "Create @code{MeasureGrouping} to indicate beat subdivision.", - /* create */ - "MeasureGrouping ", + /* create */ + "MeasureGrouping ", - /* read */ + /* read */ "baseMoment " - "beatStructure " - "currentMusicalColumn " - "measurePosition ", + "beatStructure " + "currentMusicalColumn " + "measurePosition ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/measure-grouping-spanner.cc b/lily/measure-grouping-spanner.cc index db6b4fced2..e668f57beb 100644 --- a/lily/measure-grouping-spanner.cc +++ b/lily/measure-grouping-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,10 +36,10 @@ Measure_grouping::print (SCM grob) Real t = Staff_symbol_referencer::line_thickness (me) * robust_scm2double (me->get_property ("thickness"), 1); Grob *common = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), - X_AXIS); + X_AXIS); Real right_point = robust_relative_extent (me->get_bound (RIGHT), - common, X_AXIS).linear_combination (CENTER); + common, X_AXIS).linear_combination (CENTER); Real left_point = me->get_bound (LEFT)->relative_coordinate (common, X_AXIS); Interval iv (left_point, right_point); @@ -59,12 +59,12 @@ Measure_grouping::print (SCM grob) } ADD_INTERFACE (Measure_grouping, - "This object indicates groups of beats. Valid choices for" - " @code{style} are @code{bracket} and @code{triangle}.", - - /* properties */ - "thickness " - "style " - "height " - ); + "This object indicates groups of beats. Valid choices for" + " @code{style} are @code{bracket} and @code{triangle}.", + + /* properties */ + "thickness " + "style " + "height " + ); diff --git a/lily/melody-engraver.cc b/lily/melody-engraver.cc index 96873d3293..0ebd132450 100644 --- a/lily/melody-engraver.cc +++ b/lily/melody-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include "engraver.hh" #include "item.hh" @@ -27,9 +26,9 @@ class Melody_engraver : public Engraver { Grob *melody_item_; - Grob *stem_; + Grob *stem_; protected: - + DECLARE_ACKNOWLEDGER (stem); DECLARE_ACKNOWLEDGER (slur); TRANSLATOR_DECLARATIONS (Melody_engraver); @@ -37,7 +36,6 @@ protected: void process_music (); }; - Melody_engraver::Melody_engraver () { stem_ = 0; @@ -50,7 +48,7 @@ Melody_engraver::process_music () if (scm_is_string (get_property ("whichBar"))) melody_item_ = 0; } - + void Melody_engraver::stop_translation_timestep () { @@ -59,51 +57,47 @@ Melody_engraver::stop_translation_timestep () { extract_grob_set (stem_, "rests", rests); if (rests.size ()) - melody_item_ = 0; + melody_item_ = 0; else - { - if (!melody_item_) - melody_item_ = make_item ("MelodyItem", stem_->self_scm ()); + { + if (!melody_item_) + melody_item_ = make_item ("MelodyItem", stem_->self_scm ()); - Melody_spanner::add_stem (melody_item_, stem_); - } + Melody_spanner::add_stem (melody_item_, stem_); + } } stem_ = 0; } - void Melody_engraver::acknowledge_slur (Grob_info /* info */) { melody_item_ = 0; } - void Melody_engraver::acknowledge_stem (Grob_info info) { stem_ = info.grob (); } - - #include "translator.icc" ADD_ACKNOWLEDGER (Melody_engraver, stem); ADD_ACKNOWLEDGER (Melody_engraver, slur); ADD_TRANSLATOR (Melody_engraver, - /* doc */ - "Create information for context dependent typesetting" - " decisions.", + /* doc */ + "Create information for context dependent typesetting" + " decisions.", + + /* create */ + "MelodyItem ", - /* create */ - "MelodyItem ", + /* read */ + "", - /* read */ - "", + /* write */ + "" + ); - /* write */ - "" - ); - diff --git a/lily/melody-spanner.cc b/lily/melody-spanner.cc index 8a96a2feb7..4fdaa4eb55 100644 --- a/lily/melody-spanner.cc +++ b/lily/melody-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -27,7 +27,6 @@ let's take item for now. */ - /* Interpolate stem directions for neutral stems. */ @@ -36,10 +35,10 @@ SCM Melody_spanner::calc_neutral_stem_direction (SCM smob) { Grob *stem = unsmob_grob (smob); - Grob *me = unsmob_grob (stem->get_object ("melody-spanner")); + Grob *me = unsmob_grob (stem->get_object ("melody-spanner")); if (!me || !me->is_live ()) return scm_from_int (DOWN); - + extract_grob_set (me, "stems", stems); vector dirs; @@ -49,47 +48,47 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob) vsize last_nonneutral = VPOS; vsize next_nonneutral = 0; while (next_nonneutral != VPOS && next_nonneutral < dirs.size () - && !dirs[next_nonneutral]) + && !dirs[next_nonneutral]) next_nonneutral++; SCM retval = SCM_EOL; - while (last_nonneutral == VPOS || last_nonneutral + 1 < dirs.size ()) + while (last_nonneutral == VPOS || last_nonneutral + 1 < dirs.size ()) { Direction d1 = CENTER; Direction d2 = CENTER; if (last_nonneutral != VPOS) - d1 = dirs[last_nonneutral]; + d1 = dirs[last_nonneutral]; if (next_nonneutral < dirs.size ()) - d2 = dirs[next_nonneutral]; + d2 = dirs[next_nonneutral]; Direction total = CENTER; if (d1 && d1 == d2) - total = d1; + total = d1; else if (d1 && !d2) - total = d1; + total = d1; else if (d2 && !d1) - total = d2; + total = d2; else - total = to_dir (me->get_property ("neutral-direction")); - - for (vsize i = last_nonneutral + 1; i < next_nonneutral; i++) - { - if (stems[i] == stem) - retval = scm_from_int (total); - else - stems[i]->set_property ("neutral-direction", scm_from_int (total)); - } + total = to_dir (me->get_property ("neutral-direction")); + + for (vsize i = last_nonneutral + 1; i < next_nonneutral; i++) + { + if (stems[i] == stem) + retval = scm_from_int (total); + else + stems[i]->set_property ("neutral-direction", scm_from_int (total)); + } last_nonneutral = next_nonneutral; while (last_nonneutral < dirs.size () - && dirs[last_nonneutral]) - last_nonneutral++; + && dirs[last_nonneutral]) + last_nonneutral++; next_nonneutral = last_nonneutral; last_nonneutral--; while (next_nonneutral < dirs.size () - && !dirs[next_nonneutral]) - next_nonneutral++; + && !dirs[next_nonneutral]) + next_nonneutral++; } return retval; @@ -104,11 +103,10 @@ Melody_spanner::add_stem (Grob *me, Grob *stem) } ADD_INTERFACE (Melody_spanner, - "Context dependent typesetting decisions.", + "Context dependent typesetting decisions.", - /* properties */ - "stems " - "neutral-direction " - ); + /* properties */ + "stems " + "neutral-direction " + ); - diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc index ead5f1f0ad..35b8614b0d 100644 --- a/lily/mensural-ligature-engraver.cc +++ b/lily/mensural-ligature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter , + Copyright (C) 2002--2012 Juergen Reuter , Pal Benko LilyPond is free software: you can redistribute it and/or modify @@ -78,8 +78,8 @@ Mensural_ligature_engraver::listen_ligature (Stream_event *ev) Mensural_ligature_engraver::Mensural_ligature_engraver () { - brew_ligature_primitive_proc = - Mensural_ligature::brew_ligature_primitive_proc; + brew_ligature_primitive_proc + = Mensural_ligature::brew_ligature_primitive_proc; } Spanner * @@ -115,52 +115,52 @@ Mensural_ligature_engraver::transform_heads (vector primitives) Stream_event *nr = info.event_cause (); /* - ugh. why not simply check for pitch? + ugh. why not simply check for pitch? */ if (!nr->in_event_class ("note-event")) - { - nr->origin ()->warning - (_ ("cannot determine pitch of ligature primitive -> skipping")); - at_beginning = true; - continue; - } + { + nr->origin ()->warning + (_ ("cannot determine pitch of ligature primitive -> skipping")); + at_beginning = true; + continue; + } int pitch = unsmob_pitch (nr->get_property ("pitch"))->steps (); int prim = 0; if (at_beginning) - { - if (i == s - 1) - { - // we can get here after invalid input - nr->origin ()->warning - (_ ("single note ligature - skipping")); - break; - } - prev_semibrevis = prev_brevis_shape = false; - prev_primitive = NULL; - } + { + if (i == s - 1) + { + // we can get here after invalid input + nr->origin ()->warning + (_ ("single note ligature - skipping")); + break; + } + prev_semibrevis = prev_brevis_shape = false; + prev_primitive = NULL; + } else - { - if (pitch == prev_pitch) - { - nr->origin ()->warning - (_ ("prime interval within ligature -> skipping")); - at_beginning = true; + { + if (pitch == prev_pitch) + { + nr->origin ()->warning + (_ ("prime interval within ligature -> skipping")); + at_beginning = true; prim = MLP_NONE; - continue; - } - } + continue; + } + } if (duration_log < -3 // is this possible at all??? - || duration_log > 0) - { - nr->origin ()->warning - (_ ("mensural ligature: duration none of Mx, L, B, S -> skipping")); + || duration_log > 0) + { + nr->origin ()->warning + (_ ("mensural ligature: duration none of Mx, L, B, S -> skipping")); prim = MLP_NONE; - at_beginning = true; - continue; - } + at_beginning = true; + continue; + } bool general_case = true; bool make_flexa = false; @@ -169,82 +169,82 @@ Mensural_ligature_engraver::transform_heads (vector primitives) // first check special cases // 1. beginning if (at_beginning) - { - // a. semibreves - if (duration_log == 0) - { + { + // a. semibreves + if (duration_log == 0) + { prim = MLP_UP | MLP_BREVIS; - general_case = false; - } - // b. descendens longa or brevis - else if (i < s - 1 - && (unsmob_pitch (primitives[i + 1].event_cause () - ->get_property ("pitch"))->steps () < pitch) - && duration_log > -3) - { - int left_stem = duration_log == -1 ? MLP_DOWN : 0; + general_case = false; + } + // b. descendens longa or brevis + else if (i < s - 1 + && (unsmob_pitch (primitives[i + 1].event_cause () + ->get_property ("pitch"))->steps () < pitch) + && duration_log > -3) + { + int left_stem = duration_log == -1 ? MLP_DOWN : 0; prim = left_stem | MLP_BREVIS; - general_case = false; - } - } + general_case = false; + } + } // 2. initial semibrevis must be followed by another one else if (prev_semibrevis) - { - prev_semibrevis = false; - if (duration_log == 0) - { - prim = MLP_BREVIS; - general_case = false; - } - else - { - nr->origin ()->warning - (_ ("semibrevis must be followed by another one -> skipping")); + { + prev_semibrevis = false; + if (duration_log == 0) + { + prim = MLP_BREVIS; + general_case = false; + } + else + { + nr->origin ()->warning + (_ ("semibrevis must be followed by another one -> skipping")); prim = MLP_NONE; - at_beginning = true; - continue; - } - } + at_beginning = true; + continue; + } + } // 3. semibreves are otherwise not allowed else if (duration_log == 0) - { - nr->origin ()->warning - (_ ("semibreves can only appear at the beginning of a ligature,\n" - "and there may be only zero or two of them")); + { + nr->origin ()->warning + (_ ("semibreves can only appear at the beginning of a ligature,\n" + "and there may be only zero or two of them")); prim = MLP_NONE; - at_beginning = true; - continue; - } + at_beginning = true; + continue; + } // 4. end, descendens else if (i == s - 1 && pitch < prev_pitch) - { - // brevis; previous note must be turned into flexa - if (duration_log == -1) - { - if (prev_brevis_shape) - { + { + // brevis; previous note must be turned into flexa + if (duration_log == -1) + { + if (prev_brevis_shape) + { make_flexa = true; general_case = false; - } - else - { - nr->origin ()->warning - (_ ("invalid ligatura ending:\n" - "when the last note is a descending brevis,\n" - "the penultimate note must be another one,\n" - "or the ligatura must be LB or SSB")); - prim = MLP_NONE; - break; - } - } - // longa - else if (duration_log == -2) - { - prim = MLP_BREVIS; - general_case = allow_flexa = false; - } - // else maxima; fall through to regular case below - } + } + else + { + nr->origin ()->warning + (_ ("invalid ligatura ending:\n" + "when the last note is a descending brevis,\n" + "the penultimate note must be another one,\n" + "or the ligatura must be LB or SSB")); + prim = MLP_NONE; + break; + } + } + // longa + else if (duration_log == -2) + { + prim = MLP_BREVIS; + general_case = allow_flexa = false; + } + // else maxima; fall through to regular case below + } if (allow_flexa && to_boolean (primitive->get_property ("ligature-flexa"))) @@ -272,22 +272,22 @@ Mensural_ligature_engraver::transform_heads (vector primitives) breve: check whether descending */ int const next_pitch = unsmob_pitch - (next_info.event_cause ()->get_property ("pitch"))->steps (); + (next_info.event_cause ()->get_property ("pitch"))->steps (); if (next_pitch < pitch) - /* - sorry, forbidden - */ - make_flexa = false; + /* + sorry, forbidden + */ + make_flexa = false; } } } if (general_case) - { + { static int const shape[3] = {MLP_MAXIMA, MLP_LONGA, MLP_BREVIS}; prim = shape[duration_log + 3]; - } + } if (make_flexa) { @@ -295,21 +295,21 @@ Mensural_ligature_engraver::transform_heads (vector primitives) turn the note with the previous one into a flexa */ prev_primitive->set_property - ("primitive", - scm_from_int - (MLP_FLEXA_BEGIN - | (scm_to_int (prev_primitive->get_property ("primitive")) - & MLP_STEM))); + ("primitive", + scm_from_int + (MLP_FLEXA_BEGIN + | (scm_to_int (prev_primitive->get_property ("primitive")) + & MLP_STEM))); prev_primitive->set_property - ("flexa-interval", scm_from_int (pitch - prev_pitch)); + ("flexa-interval", scm_from_int (pitch - prev_pitch)); prim = MLP_FLEXA_END; primitive->set_property - ("flexa-interval", scm_from_int (pitch - prev_pitch)); + ("flexa-interval", scm_from_int (pitch - prev_pitch)); } // join_primitives replacement if (!(at_beginning || make_flexa)) - prev_primitive->set_property ("add-join", ly_bool2scm (true)); + prev_primitive->set_property ("add-join", ly_bool2scm (true)); at_beginning = false; prev_primitive = primitive; @@ -336,19 +336,19 @@ Mensural_ligature_engraver::transform_heads (vector primitives) */ void Mensural_ligature_engraver::propagate_properties (Spanner *ligature, - vector primitives) + vector primitives) { Real thickness - = robust_scm2double (ligature->get_property ("thickness"), 1.4); + = robust_scm2double (ligature->get_property ("thickness"), 1.3); thickness - *= ligature->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); + *= ligature->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real head_width = Font_interface::get_default_font (ligature)-> - find_by_name ("noteheads.sM1mensural").extent (X_AXIS).length (); + find_by_name ("noteheads.sM1mensural").extent (X_AXIS).length (); Real maxima_head_width = Font_interface::get_default_font (ligature)-> - find_by_name ("noteheads.sM3ligmensural").extent (X_AXIS).length (); + find_by_name ("noteheads.sM3ligmensural").extent (X_AXIS).length (); Item *prev_primitive = NULL; for (vsize i = 0; i < primitives.size (); i++) @@ -356,36 +356,37 @@ Mensural_ligature_engraver::propagate_properties (Spanner *ligature, Item *primitive = dynamic_cast (primitives[i].grob ()); int output = scm_to_int (primitive->get_property ("primitive")); primitive->set_property ("thickness", - scm_from_double (thickness)); - - switch (output & MLP_ANY) { - case MLP_BREVIS: - case MLP_LONGA: - primitive->set_property ("head-width", scm_from_double (head_width)); - break; - case MLP_MAXIMA: - primitive->set_property ("head-width", - scm_from_double (maxima_head_width)); - break; - case MLP_FLEXA_BEGIN: - /* - the next note (should be MLP_FLEXA_END) will handle this one - */ - break; - case MLP_FLEXA_END: + scm_from_double (thickness)); + + switch (output & MLP_ANY) { - SCM flexa_scm = primitive->get_property ("flexa-width"); - Real const flexa_width = robust_scm2double (flexa_scm, 2.0); - SCM head_width = scm_from_double (0.5 * (flexa_width + thickness)); - primitive->set_property ("head-width", head_width); - prev_primitive->set_property ("head-width", head_width); - prev_primitive->set_property ("flexa-width", flexa_scm); + case MLP_BREVIS: + case MLP_LONGA: + primitive->set_property ("head-width", scm_from_double (head_width)); + break; + case MLP_MAXIMA: + primitive->set_property ("head-width", + scm_from_double (maxima_head_width)); + break; + case MLP_FLEXA_BEGIN: + /* + the next note (should be MLP_FLEXA_END) will handle this one + */ + break; + case MLP_FLEXA_END: + { + SCM flexa_scm = primitive->get_property ("flexa-width"); + Real const flexa_width = robust_scm2double (flexa_scm, 2.0); + SCM head_width = scm_from_double (0.5 * (flexa_width + thickness)); + primitive->set_property ("head-width", head_width); + prev_primitive->set_property ("head-width", head_width); + prev_primitive->set_property ("flexa-width", flexa_scm); + } + break; + default: + programming_error (_ ("unexpected case fall-through")); + break; } - break; - default: - programming_error (_ ("unexpected case fall-through")); - break; - } prev_primitive = primitive; } @@ -403,69 +404,69 @@ Mensural_ligature_engraver::fold_up_primitives (vector primitives) { Item *current = dynamic_cast (primitives[i].grob ()); if (i == 0) - { - first = current; - staff_space = Staff_symbol_referencer::staff_space (first); - thickness = scm_to_double (current->get_property ("thickness")); - } + { + first = current; + staff_space = Staff_symbol_referencer::staff_space (first); + thickness = scm_to_double (current->get_property ("thickness")); + } move_related_items_to_column (current, first->get_column (), - distance); + distance); Real head_width = scm_to_double (current->get_property ("head-width")); distance += head_width - thickness; if (Rhythmic_head::dot_count (current) > 0) - /* - Move dots above/behind the ligature. - dots should also avoid staff lines. - */ - { - Grob *dot_gr = Rhythmic_head::get_dots (current); - - bool const on_line = Staff_symbol_referencer::on_line - (current, - robust_scm2int (current->get_property ("staff-position"), 0)); - Real vert_shift = on_line ? staff_space * 0.5 : 0.0; - bool const flexa_begin = - scm_to_int (current->get_property ("primitive")) - & MLP_FLEXA_BEGIN; - - if (i + 1 < primitives.size ()) - /* - dot in the midst => avoid next note; - what to avoid and where depends on - being on a line or between lines - */ - { - int const delta = - scm_to_int (current->get_property ("delta-position")); - if (flexa_begin) - vert_shift += delta < 0 - ? staff_space : (on_line ? -2.0 : -1.0) * staff_space; - else if (on_line) - { - if (0 < delta && delta < 3) - vert_shift -= staff_space; - } - else if (delta == 1 || delta == -1) - vert_shift -= delta * staff_space; - } - - dot_gr->translate_axis (vert_shift, Y_AXIS); - - /* - move all dots behind head - */ - dot_gr->translate_axis - ((flexa_begin ? staff_space * 0.6 : head_width) - 2.0*thickness, X_AXIS); - } + /* + Move dots above/behind the ligature. + dots should also avoid staff lines. + */ + { + Grob *dot_gr = Rhythmic_head::get_dots (current); + + bool const on_line = Staff_symbol_referencer::on_line + (current, + robust_scm2int (current->get_property ("staff-position"), 0)); + Real vert_shift = on_line ? staff_space * 0.5 : 0.0; + bool const flexa_begin + = scm_to_int (current->get_property ("primitive")) + & MLP_FLEXA_BEGIN; + + if (i + 1 < primitives.size ()) + /* + dot in the midst => avoid next note; + what to avoid and where depends on + being on a line or between lines + */ + { + int const delta + = scm_to_int (current->get_property ("delta-position")); + if (flexa_begin) + vert_shift += delta < 0 + ? staff_space : (on_line ? -2.0 : -1.0) * staff_space; + else if (on_line) + { + if (0 < delta && delta < 3) + vert_shift -= staff_space; + } + else if (delta == 1 || delta == -1) + vert_shift -= delta * staff_space; + } + + dot_gr->translate_axis (vert_shift, Y_AXIS); + + /* + move all dots behind head + */ + dot_gr->translate_axis + ((flexa_begin ? staff_space * 0.6 : head_width) - 2.0 * thickness, X_AXIS); + } } } void Mensural_ligature_engraver::build_ligature (Spanner *ligature, - vector primitives) + vector primitives) { transform_heads (primitives); propagate_properties (ligature, primitives); @@ -476,16 +477,16 @@ ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest); ADD_ACKNOWLEDGER (Mensural_ligature_engraver, ligature_head); ADD_TRANSLATOR (Mensural_ligature_engraver, - /* doc */ - "Handle @code{Mensural_ligature_events} by glueing special" - " ligature heads together.", + /* doc */ + "Handle @code{Mensural_ligature_events} by glueing special" + " ligature heads together.", - /* create */ - "MensuralLigature ", + /* create */ + "MensuralLigature ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/mensural-ligature.cc b/lily/mensural-ligature.cc index ad2f0918a9..3bffcb841c 100644 --- a/lily/mensural-ligature.cc +++ b/lily/mensural-ligature.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter , + Copyright (C) 2002--2012 Juergen Reuter , Pal Benko LilyPond is free software: you can redistribute it and/or modify @@ -20,6 +20,7 @@ #include "mensural-ligature.hh" +#include "directional-element-interface.hh" #include "font-interface.hh" #include "international.hh" #include "item.hh" @@ -40,10 +41,10 @@ */ Stencil brew_flexa (Grob *me, - bool solid, - Real width, - Real thickness, - bool begin) + bool solid, + Real width, + Real thickness, + bool begin) { Real staff_space = Staff_symbol_referencer::staff_space (me); @@ -60,8 +61,8 @@ brew_flexa (Grob *me, Real height = staff_space - horizontal_line_thickness; Stencil stencil; - Real const interval = - robust_scm2double (me->get_property ("flexa-interval"), 0.0); + Real const interval + = robust_scm2double (me->get_property ("flexa-interval"), 0.0); Real slope = (interval / 2.0 * staff_space) / width; // Compensate optical illusion regarding vertical position of left @@ -69,31 +70,34 @@ brew_flexa (Grob *me, Real ypos_correction = -0.1 * staff_space * sign (slope); Real slope_correction = 0.2 * staff_space * sign (slope); Real corrected_slope = slope + slope_correction / width; + Real blotdiameter + = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); + width += 2 * blotdiameter; if (solid) // colorated flexae { - stencil = Lookup::beam (corrected_slope, width * 0.5, staff_space, 0.0); + stencil = Lookup::beam (corrected_slope, width * 0.5, staff_space, blotdiameter); } else // outline { - stencil = Lookup::beam (corrected_slope, thickness, height, 0.0); + stencil = Lookup::beam (corrected_slope, thickness, height, blotdiameter); if (!begin) - { - stencil.translate_axis (width*0.5 - thickness, X_AXIS); - stencil.translate_axis (corrected_slope * (width*0.5 - thickness), + { + stencil.translate_axis (width * 0.5 - thickness, X_AXIS); + stencil.translate_axis (corrected_slope * (width * 0.5 - thickness), Y_AXIS); } - Stencil bottom_edge = - Lookup::beam (corrected_slope, width * 0.5, horizontal_line_thickness, - 0.0); - bottom_edge.translate_axis (-0.5*height, Y_AXIS); + Stencil bottom_edge + = Lookup::beam (corrected_slope, width * 0.5, horizontal_line_thickness, + blotdiameter); + bottom_edge.translate_axis (-0.5 * height, Y_AXIS); stencil.add_stencil (bottom_edge); - Stencil top_edge = - Lookup::beam (corrected_slope, width * 0.5, horizontal_line_thickness, - 0.0); - top_edge.translate_axis (+0.5*height, Y_AXIS); + Stencil top_edge + = Lookup::beam (corrected_slope, width * 0.5, horizontal_line_thickness, + blotdiameter); + top_edge.translate_axis (+0.5 * height, Y_AXIS); stencil.add_stencil (top_edge); } @@ -101,7 +105,7 @@ brew_flexa (Grob *me, stencil.translate_axis (ypos_correction, Y_AXIS); else { - stencil.translate_axis (0.5 * thickness, X_AXIS); + stencil.translate_axis (0.5 * thickness - blotdiameter, X_AXIS); stencil.translate_axis (interval / -4.0 * staff_space, Y_AXIS); } @@ -116,76 +120,98 @@ internal_brew_primitive (Grob *me) if (primitive_scm == SCM_EOL) { programming_error ("Mensural_ligature:" - " undefined primitive -> ignoring grob"); + " undefined primitive -> ignoring grob"); return Lookup::blank (Box (Interval (0, 0), Interval (0, 0))); } int primitive = scm_to_int (primitive_scm); - Stencil out; Real thickness = 0.0; Real width = 0.0; Real flexa_width = 0.0; Real staff_space = Staff_symbol_referencer::staff_space (me); - bool const color = - me->get_property ("style") == ly_symbol2scm ("blackpetrucci"); - bool const semi = - me->get_property ("style") == ly_symbol2scm ("semipetrucci"); + SCM style = me->get_property ("style"); + bool const black + = scm_is_eq (style, ly_symbol2scm ("blackpetrucci")); + bool const semi + = scm_is_eq (style, ly_symbol2scm ("semipetrucci")); if (primitive & MLP_ANY) { - thickness = robust_scm2double (me->get_property ("thickness"), .14); + thickness = robust_scm2double (me->get_property ("thickness"), .13); width = robust_scm2double (me->get_property ("head-width"), staff_space); } if (primitive & MLP_FLEXA) flexa_width = robust_scm2double (me->get_property ("flexa-width"), 2.0) - * staff_space; + * staff_space; + Stencil out; int const note_shape = primitive & MLP_ANY; + int duration_log = 0; + Font_metric *fm = Font_interface::get_default_font (me); + string prefix = "noteheads."; + string index; + string suffix; + string color = ""; + if (black) + color = "black"; + if (semi) + color = "semi"; switch (note_shape) { case MLP_NONE: return Lookup::blank (Box (Interval (0, 0), Interval (0, 0))); - case MLP_LONGA: // mensural brevis head with right cauda - out = Font_interface::get_default_font (me)->find_by_name - (color ? "noteheads.sM2blackmensural" : - semi ? "noteheads.sM2semimensural" : "noteheads.sM2mensural"); - break; - case MLP_BREVIS: // mensural brevis head - out = Font_interface::get_default_font (me)->find_by_name - (color ? "noteheads.sM1blackmensural" : - semi ? "noteheads.sM1semimensural" : "noteheads.sM1mensural"); - break; - case MLP_MAXIMA: // should be mensural maxima head without stem - out = Font_interface::get_default_font (me)->find_by_name - (color ? "noteheads.sM3blackligmensural" : - semi ? "noteheads.sM3semiligmensural" : "noteheads.sM3ligmensural"); + case MLP_MAXIMA: + duration_log--; + case MLP_LONGA: + duration_log--; + case MLP_BREVIS: + duration_log--; + suffix = to_string (duration_log) + color + + (duration_log < -1 ? "lig" : "") + "mensural"; + index = prefix + "s"; + out = fm->find_by_name (index + "r" + suffix); + if (!out.is_empty () + && !Staff_symbol_referencer::on_line + (me, + robust_scm2int (me->get_property ("staff-position"), 0))) + index += "r"; + out = fm->find_by_name (index + suffix); break; case MLP_FLEXA_BEGIN: case MLP_FLEXA_END: - out = brew_flexa (me, color, flexa_width, thickness, - note_shape == MLP_FLEXA_BEGIN); + out = brew_flexa (me, black, flexa_width, thickness, + note_shape == MLP_FLEXA_BEGIN); break; default: - programming_error (_ ("Mensural_ligature:" - " unexpected case fall-through")); + programming_error ("Mensural_ligature:" + " unexpected case fall-through"); return Lookup::blank (Box (Interval (0, 0), Interval (0, 0))); } - Real blotdiameter - = (me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"))); + /* + we use thickness because the stem end of the glyph + "noteheads.sM2ligmensural" is round. + */ + Real blotdiameter = thickness; + /* + instead of 2.5 the length of a longa stem should be used + Font_interface::get_default_font (???)->find_by_name + ("noteheads.sM2ligmensural").extent (Y_AXIS).length () * 0.5 + */ + Real stem_length = 2.5 * staff_space; if (primitive & MLP_STEM) { // assume MLP_UP - Real y_bottom = 0.0, y_top = 3.0 * staff_space; + Real y_bottom = 0.0, y_top = stem_length; if (primitive & MLP_DOWN) - { - y_bottom = -y_top; - y_top = 0.0; - } + { + y_bottom = -y_top; + y_top = 0.0; + } Interval x_extent (0, thickness); Interval y_extent (y_bottom, y_top); @@ -199,38 +225,33 @@ internal_brew_primitive (Grob *me) { int join_right = scm_to_int (me->get_property ("delta-position")); if (join_right) - { - Real y_top = join_right * 0.5 * staff_space; - Real y_bottom = 0.0; - - if (y_top < 0.0) - { - y_bottom = y_top; - y_top = 0.0; - - /* - if the previous note is longa-shaped, - the joining line may hide the stem, so made it longer - to serve as stem as well - */ - if (primitive & MLP_LONGA) - /* - instead of 3.0 the length of a longa stem should be used - Font_interface::get_default_font (???)->find_by_name - ("noteheads.s-2mensural").extent (Y_AXIS).length () * 0.5 - */ - y_bottom -= 3.0 * staff_space; - } - - Interval x_extent (width - thickness, width); - Interval y_extent (y_bottom, y_top); - Box join_box (x_extent, y_extent); - Stencil join = Lookup::round_filled_box (join_box, blotdiameter); - - out.add_stencil (join); - } + { + Real y_top = join_right * 0.5 * staff_space; + Real y_bottom = 0.0; + + if (y_top < 0.0) + { + y_bottom = y_top; + y_top = 0.0; + + /* + if the previous note is longa-shaped, + the joining line may hide the stem, so made it longer + to serve as stem as well + */ + if (primitive & MLP_LONGA) + y_bottom -= stem_length + 0.25 * blotdiameter; + } + + Interval x_extent (width - thickness, width); + Interval y_extent (y_bottom, y_top); + Box join_box (x_extent, y_extent); + Stencil join = Lookup::round_filled_box (join_box, blotdiameter); + + out.add_stencil (join); + } else - programming_error (_ ("Mensural_ligature: (join_right == 0)")); + programming_error ("Mensural_ligature: (join_right == 0)"); } #if 0 /* what happend with the ledger lines? */ @@ -261,14 +282,14 @@ Mensural_ligature::print (SCM) } ADD_INTERFACE (Mensural_ligature, - "A mensural ligature.", - - /* properties */ - "delta-position " - "ligature-flexa " - "head-width " - "add-join " - "flexa-interval " - "primitive " - "thickness " - ); + "A mensural ligature.", + + /* properties */ + "delta-position " + "ligature-flexa " + "head-width " + "add-join " + "flexa-interval " + "primitive " + "thickness " + ); diff --git a/lily/metronome-engraver.cc b/lily/metronome-engraver.cc index 09606c261e..b4cd2ce328 100644 --- a/lily/metronome-engraver.cc +++ b/lily/metronome-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,7 +72,7 @@ static bool safe_is_member (SCM scm, SCM lst) { return scm_list_p (lst) == SCM_BOOL_T - && scm_member (scm, lst) != SCM_BOOL_F; + && scm_member (scm, lst) != SCM_BOOL_F; } void @@ -85,10 +85,10 @@ Metronome_mark_engraver::acknowledge_break_aligned (Grob_info info) == ly_symbol2scm ("staff-bar")) bar_ = g; else if (text_ - && !support_ - && safe_is_member (g->get_property ("break-align-symbol"), - text_->get_property ("break-align-symbols")) - && Item::break_visible (g)) + && !support_ + && safe_is_member (g->get_property ("break-align-symbol"), + text_->get_property ("break-align-symbols")) + && Item::break_visible (g)) { support_ = g; text_->set_parent (g, X_AXIS); @@ -115,10 +115,10 @@ Metronome_mark_engraver::acknowledge_grob (Grob_info info) if (text_) for (SCM s = text_->get_property ("non-break-align-symbols"); - scm_is_pair (s); - s = scm_cdr (s)) + scm_is_pair (s); + s = scm_cdr (s)) if (g->internal_has_interface (scm_car (s))) - text_->set_parent (g, X_AXIS); + text_->set_parent (g, X_AXIS); } void @@ -127,25 +127,25 @@ Metronome_mark_engraver::stop_translation_timestep () if (text_) { if (text_->get_parent (X_AXIS) - && text_->get_parent (X_AXIS)->internal_has_interface (ly_symbol2scm ("multi-measure-rest-interface")) - && bar_) - text_->set_parent (bar_, X_AXIS); + && text_->get_parent (X_AXIS)->internal_has_interface (ly_symbol2scm ("multi-measure-rest-interface")) + && bar_) + text_->set_parent (bar_, X_AXIS); else if (!support_) - { - /* - Gardner Read "Music Notation", p.278 - - Align the metronome mark over the time signature (or the - first notational element of the measure if no time - signature is present in that measure). - */ - if (Grob *mc = unsmob_grob (get_property ("currentMusicalColumn"))) - text_->set_parent (mc, X_AXIS); - else if (Grob *cc = unsmob_grob (get_property ("currentCommandColumn"))) - text_->set_parent (cc, X_AXIS); - } + { + /* + Gardner Read "Music Notation", p.278 + + Align the metronome mark over the time signature (or the + first notational element of the measure if no time + signature is present in that measure). + */ + if (Grob *mc = unsmob_grob (get_property ("currentMusicalColumn"))) + text_->set_parent (mc, X_AXIS); + else if (Grob *cc = unsmob_grob (get_property ("currentCommandColumn"))) + text_->set_parent (cc, X_AXIS); + } text_->set_object ("side-support-elements", - grob_list_to_grob_array (get_property ("stavesFound"))); + grob_list_to_grob_array (get_property ("stavesFound"))); text_ = 0; support_ = 0; bar_ = 0; @@ -162,8 +162,8 @@ Metronome_mark_engraver::process_music () SCM proc = get_property ("metronomeMarkFormatter"); SCM result = scm_call_2 (proc, - tempo_ev_->self_scm (), - context ()->self_scm ()); + tempo_ev_->self_scm (), + context ()->self_scm ()); text_->set_property ("text", result); } @@ -174,23 +174,23 @@ ADD_ACKNOWLEDGER (Metronome_mark_engraver, break_alignment); ADD_ACKNOWLEDGER (Metronome_mark_engraver, grob); ADD_TRANSLATOR (Metronome_mark_engraver, - /* doc */ - "Engrave metronome marking. This delegates the formatting" - " work to the function in the @code{metronomeMarkFormatter}" - " property. The mark is put over all staves. The staves are" - " taken from the @code{stavesFound} property, which is" - " maintained by @ref{Staff_collecting_engraver}.", - - /* create */ - "MetronomeMark ", - - /* read */ - "currentCommandColumn " - "currentMusicalColumn " - "metronomeMarkFormatter " - "stavesFound " - "tempoHideNote ", - - /* write */ - "" - ); + /* doc */ + "Engrave metronome marking. This delegates the formatting" + " work to the function in the @code{metronomeMarkFormatter}" + " property. The mark is put over all staves. The staves are" + " taken from the @code{stavesFound} property, which is" + " maintained by @ref{Staff_collecting_engraver}.", + + /* create */ + "MetronomeMark ", + + /* read */ + "currentCommandColumn " + "currentMusicalColumn " + "metronomeMarkFormatter " + "stavesFound " + "tempoHideNote ", + + /* write */ + "" + ); diff --git a/lily/midi-chunk.cc b/lily/midi-chunk.cc index 0aa11eb549..699ec7e898 100644 --- a/lily/midi-chunk.cc +++ b/lily/midi-chunk.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ #include "string-convert.hh" Midi_track::Midi_track (int number, bool port) - : number_ (number) + : number_ (number) { // 4D 54 72 6B MTrk // 00 00 00 3B chunk length (59) @@ -42,14 +42,14 @@ Midi_track::Midi_track (int number, bool port) // mi = 1: minor key char const *data_str0 = "" - // "00" "ff58" "0404" "0218" "08" - // "00" "ff51" "0307" "a120" - // why a key at all, in midi? - // key: C - // "00" "ff59" "02" "00" "00" - // key: F (scsii-menuetto) - // "00" "ff59" "02" "ff" "00" - ; + // "00" "ff58" "0404" "0218" "08" + // "00" "ff51" "0307" "a120" + // why a key at all, in midi? + // key: C + // "00" "ff59" "02" "00" "00" + // key: F (scsii-menuetto) + // "00" "ff59" "02" "ff" "00" + ; string data_string; // only for format 0 (currently using format 1)? @@ -58,7 +58,7 @@ Midi_track::Midi_track (int number, bool port) if (port) { string port = "00" "ff" "21" "01" - + String_convert::int2hex (number_, 2, '0'); + + String_convert::int2hex (number_, 2, '0'); data_string += String_convert::hex2bin (port); } @@ -74,7 +74,48 @@ Midi_track::add (int delta_ticks, Midi_item *midi) assert (delta_ticks >= 0); Midi_event *e = new Midi_event (delta_ticks, midi); - events_.push_back (e); + + // Insertion position for the new event in the track. + vector::iterator position (events_.end ()); + if (delta_ticks == 0 + && (! dynamic_cast (midi) + || dynamic_cast (midi))) + { + // If the new event occurs at the same time as the most recently added + // one, and the event does not represent the start of a note, insert the + // new event before all notes (if any) already starting at this time. + // This is to force notes to be started only after all other events + // (such as changes in instruments) which occur at the same time have + // taken effect. + while (position != events_.begin ()) + { + vector::iterator previous (position - 1); + if (! dynamic_cast ((*previous)->midi_) + || dynamic_cast ((*previous)->midi_)) + { + // Found an event that does not represent the start of a note. + // Exit the loop to insert the new event in the track after this + // event. + break; + } + else if ((*previous)->delta_ticks_ != 0) + { + // Found the start of a new note with delta_ticks_ != 0. Prepare + // to insert the new event before this event, swapping the + // delta_ticks_ fields of the events to keep the sequence of + // deltas consistent. + e->delta_ticks_ = (*previous)->delta_ticks_; + (*previous)->delta_ticks_ = 0; + position = previous; + break; + } + // Otherwise, the event in the track is the start of a note occurring + // at the same time as the new event: continue searching for the + // insertion position. + position = previous; + } + } + events_.insert (position, e); } string @@ -82,18 +123,17 @@ Midi_track::data_string () const { string str = Midi_chunk::data_string (); - for (vector::const_iterator i (events_.begin ()); - i != events_.end (); i ++) + for (vector::const_iterator i (events_.begin ()); + i != events_.end (); i++) { str += (*i)->to_string (); } return str; } - Midi_track::~Midi_track () { - junk_pointers (events_); + junk_pointers (events_); } /**************************************************************** @@ -114,7 +154,7 @@ Midi_event::to_string () const } /**************************************************************** header -*/ +*/ Midi_header::Midi_header (int format, int tracks, int clocks_per_4) { @@ -132,13 +172,12 @@ Midi_header::Midi_header (int format, int tracks, int clocks_per_4) set ("MThd", str, ""); } - /**************************************************************** chunk */ Midi_chunk::~Midi_chunk () { - + } void @@ -161,7 +200,7 @@ Midi_chunk::to_string () const string str = header_string_; string dat = data_string (); string length_string = String_convert::int2hex (dat.length () - + footer_string_.length (), 8, '0'); + + footer_string_.length (), 8, '0'); length_string = String_convert::hex2bin (length_string); str += length_string; diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 1fcb259ae1..0d0edbb4c7 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,10 +28,8 @@ #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) @@ -58,8 +56,6 @@ Midi_item::get_midi (Audio_item *a) return 0; } - - Midi_duration::Midi_duration (Real seconds_f) { seconds_ = seconds_f; @@ -72,8 +68,8 @@ Midi_duration::to_string () const } Midi_instrument::Midi_instrument (Audio_instrument *a) - : Midi_channel_item (a) - , audio_ (a) + : Midi_channel_item (a), + audio_ (a) { audio_->str_ = String_convert::to_lower (audio_->str_); } @@ -126,9 +122,9 @@ int2midi_varint_string (int i) { str += ::to_string ((char)buffer); if (buffer & 0x80) - buffer >>= 8; + buffer >>= 8; else - break; + break; } return str; } @@ -151,8 +147,8 @@ Midi_key::to_string () const } Midi_time_signature::Midi_time_signature (Audio_time_signature *a) - : audio_ (a) - , clocks_per_1_ (18) + : audio_ (a), + clocks_per_1_ (18) { } @@ -162,14 +158,12 @@ Midi_time_signature::to_string () const int num = abs (audio_->beats_); if (num > 255) { - warning ("Time signature with more than 255 beats. Truncating"); + warning (_ ("Time signature with more than 255 beats. Truncating")); num = 255; } int den = audio_->one_beat_; - - string str = "ff5804"; str += String_convert::int2hex (num, 2, '0'); str += String_convert::int2hex (intlog2 (den), 2, '0'); @@ -179,10 +173,10 @@ Midi_time_signature::to_string () const } Midi_note::Midi_note (Audio_note *a) - : Midi_channel_item (a) - , audio_ (a) - , dynamic_byte_ (a->dynamic_ && a->dynamic_->volume_ >= 0 - ? Byte (a->dynamic_->volume_ * 0x7f) : Byte (0x5a)) + : Midi_channel_item (a), + audio_ (a), + dynamic_byte_ (a->dynamic_ && a->dynamic_->volume_ >= 0 + ? Byte (a->dynamic_->volume_ * 0x7f) : Byte (0x5a)) { } @@ -190,18 +184,19 @@ int Midi_note::get_fine_tuning () const { Rational tune = (audio_->pitch_.tone_pitch () - + audio_->transposing_.tone_pitch ()) * Rational (2); + + 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 +209,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)); @@ -256,7 +248,7 @@ Midi_note_off::to_string () const // Move pitch wheel back to the central position. str += ::to_string ((char) 0x00); str += ::to_string ((char) (0xE0 + channel_)); - str += ::to_string ((char) (PITCH_WHEEL_CENTER &0x7F)); + str += ::to_string ((char) (PITCH_WHEEL_CENTER & 0x7F)); str += ::to_string ((char) (PITCH_WHEEL_CENTER >> 7)); } @@ -264,8 +256,8 @@ Midi_note_off::to_string () const } Midi_dynamic::Midi_dynamic (Audio_dynamic *a) - : Midi_channel_item (a) - , audio_ (a) + : Midi_channel_item (a), + audio_ (a) { } @@ -291,15 +283,15 @@ Midi_dynamic::to_string () const int const volume_default = 100; if (audio_->volume_ < 0 || audio_->silent_) volume = volume_default; - + str += ::to_string ((char)0x07); str += ::to_string ((char)volume); return str; } Midi_piano_pedal::Midi_piano_pedal (Audio_piano_pedal *a) - : Midi_channel_item (a) - , audio_ (a) + : Midi_channel_item (a), + audio_ (a) { } @@ -353,5 +345,5 @@ Midi_text::to_string () const char const * Midi_item::name () const { - return this->class_name (); + return this->class_name (); } diff --git a/lily/midi-stream.cc b/lily/midi-stream.cc index c7a48ad706..9409762d66 100644 --- a/lily/midi-stream.cc +++ b/lily/midi-stream.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc index 6fbb780a1b..6d0b1290a3 100644 --- a/lily/midi-walker.cc +++ b/lily/midi-walker.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -46,10 +46,10 @@ compare (Midi_note_event const &left, Midi_note_event const &right) } bool -audio_item_less (Audio_item * const a, - Audio_item * const b) +audio_item_less (Audio_item *const a, + Audio_item *const b) { - return a->get_column ()->when_ < b->get_column ()->when_; + return a->get_column ()->when_ < b->get_column ()->when_; } Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track) @@ -89,39 +89,39 @@ Midi_walker::do_start_note (Midi_note *note) { /* if this pitch already in queue */ if (stop_note_queue[i].val->get_semitone_pitch () - == note->get_semitone_pitch ()) - { - int queued_ticks - = stop_note_queue[i].val->audio_->audio_column_->ticks (); - // If the two notes started at the same time, or option is set, - if (now_ticks == queued_ticks || merge_unisons_) - { - // merge them. - if (stop_note_queue[i].key < stop_ticks) - { - Midi_note_event e; - e.val = stop_note_queue[i].val; - e.key = stop_ticks; - stop_note_queue[i].ignore_ = true; - stop_note_queue.insert (e); - } - note = 0; - break; - } - else - { - // A note was played that interruped a played note. - // Stop the old note, and continue to the greatest moment - // between the two. - if (stop_note_queue[i].key > stop_ticks) - { - stop_ticks = stop_note_queue[i].key; - } - output_event (now_ticks, stop_note_queue[i].val); - stop_note_queue[i].ignore_ = true; - break; - } - } + == note->get_semitone_pitch ()) + { + int queued_ticks + = stop_note_queue[i].val->audio_->audio_column_->ticks (); + // If the two notes started at the same time, or option is set, + if (now_ticks == queued_ticks || merge_unisons_) + { + // merge them. + if (stop_note_queue[i].key < stop_ticks) + { + Midi_note_event e; + e.val = stop_note_queue[i].val; + e.key = stop_ticks; + stop_note_queue[i].ignore_ = true; + stop_note_queue.insert (e); + } + note = 0; + break; + } + else + { + // A note was played that interruped a played note. + // Stop the old note, and continue to the greatest moment + // between the two. + if (stop_note_queue[i].key > stop_ticks) + { + stop_ticks = stop_note_queue[i].key; + } + output_event (now_ticks, stop_note_queue[i].val); + stop_note_queue[i].ignore_ = true; + break; + } + } } if (note) @@ -144,9 +144,9 @@ Midi_walker::do_stop_notes (int max_ticks) { Midi_note_event e = stop_note_queue.get (); if (e.ignore_) - { - continue; - } + { + continue; + } int stop_ticks = e.key; Midi_note *note = e.val; @@ -183,22 +183,22 @@ Midi_walker::process () if (Midi_item *midi = get_midi (audio)) { if (Midi_note *note = dynamic_cast (midi)) - { - if (note->audio_->length_mom_.to_bool ()) - do_start_note (note); - } + { + if (note->audio_->length_mom_.to_bool ()) + do_start_note (note); + } else - output_event (audio->audio_column_->ticks (), midi); + output_event (audio->audio_column_->ticks (), midi); } } -Midi_item* +Midi_item * Midi_walker::get_midi (Audio_item *i) { Midi_item *mi = Midi_item::get_midi (i); if (percussion_) - if (Midi_channel_item *mci = dynamic_cast (mi)) + if (Midi_channel_item *mci = dynamic_cast (mi)) mci->channel_ = 9; midi_events_.push_back (mi); @@ -212,7 +212,7 @@ Midi_walker::ok () const } void -Midi_walker::operator ++ (int) +Midi_walker::operator ++(int) { assert (ok ()); index_++; diff --git a/lily/minimal-page-breaking.cc b/lily/minimal-page-breaking.cc index ded389733e..7ff43755b1 100644 --- a/lily/minimal-page-breaking.cc +++ b/lily/minimal-page-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Nicolas Sceaux + Copyright (C) 2007--2012 Nicolas Sceaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/misc.cc b/lily/misc.cc index 4b7dc472ed..801266d79b 100644 --- a/lily/misc.cc +++ b/lily/misc.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -18,7 +18,6 @@ along with LilyPond. If not, see . */ - #include "misc.hh" #include "warn.hh" @@ -55,13 +54,11 @@ directed_round (Real f, Direction d) return ceil (f); } - - /* 0 at threshold, 1 at 0, with 1/x falloff. */ Real -peak_around (Real epsilon, Real threshold, Real x) +peak_around (Real epsilon, Real threshold, Real x) { if (x < 0) return 1.0; @@ -69,51 +66,31 @@ peak_around (Real epsilon, Real threshold, Real x) } /* - 0 at 0, 1 at standard_x, and increasing thereafter. + 0 at 0, 1 at standard_x, and increasing thereafter. */ Real convex_amplifier (Real standard_x, Real increase_factor, Real x) { - return (exp (increase_factor * x / standard_x) - 1.0) / (exp (increase_factor) - 1.0); + return (exp (increase_factor * x / standard_x) - 1.0) / (exp (increase_factor) - 1.0); } string camel_case_to_lisp_identifier (string in) { vector out; - + /* don't add '-' before first character */ out.push_back (char (tolower (in[0]))); - + for (size_t inpos = 1; inpos < in.size (); inpos++) { if (isupper (in[inpos])) - out.push_back ('-'); - out.push_back ( char(tolower (in[inpos]))); + out.push_back ('-'); + out.push_back ( char (tolower (in[inpos]))); } - + string result (&out[0], out.size ()); replace_all (&result, '_', '-'); return result; } - -vsize -utf8_char_len (char current) -{ - vsize char_len = 1; - - // U+10000 - U+10FFFF - if ((current & 0xF0) == 0xF0) - char_len = 4; - // U+0800 - U+FFFF - else if ((current & 0xE0) == 0xE0) - char_len = 3; - // U+0080 - U+07FF - else if ((current & 0xC0) == 0xC0) - char_len = 2; - else if (current & 0x80) - programming_error ("invalid UTF-8 string"); - - return char_len; -} diff --git a/lily/modified-font-metric.cc b/lily/modified-font-metric.cc index eff730176b..0acee12649 100644 --- a/lily/modified-font-metric.cc +++ b/lily/modified-font-metric.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ using namespace std; #include "program-option.hh" Modified_font_metric::Modified_font_metric (Font_metric *fm, - Real magnification) + Real magnification) { magnification_ = magnification; diff --git a/lily/module-scheme.cc b/lily/module-scheme.cc index f2e66459a0..4fc43ca32b 100644 --- a/lily/module-scheme.cc +++ b/lily/module-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ #include "main.hh" #include "std-string.hh" - /* If a variable is changed in SRC, then DEST doesn't see the definitions. @@ -31,9 +30,9 @@ static SCM module_define_closure_func (void *closure, - SCM key, - SCM val, - SCM /* result */) + SCM key, + SCM val, + SCM /* result */) { SCM module = (SCM) closure; if (scm_variable_bound_p (val) == SCM_BOOL_T) @@ -42,18 +41,17 @@ module_define_closure_func (void *closure, } LY_DEFINE (ly_module_copy, "ly:module-copy", - 2, 0, 0, (SCM dest, SCM src), - "Copy all bindings from module @var{src} into @var{dest}.") + 2, 0, 0, (SCM dest, SCM src), + "Copy all bindings from module @var{src} into @var{dest}.") { #define FUNC_NAME __FUNCTION__ SCM_VALIDATE_MODULE (1, src); scm_internal_hash_fold ((scm_t_hash_fold_fn) &module_define_closure_func, - (void *) dest, - SCM_EOL, SCM_MODULE_OBARRAY (src)); + (void *) dest, + SCM_EOL, SCM_MODULE_OBARRAY (src)); return SCM_UNSPECIFIED; } - /* Lookup SYM, but don't give error when it is not defined. */ SCM ly_module_lookup (SCM module, SCM sym) @@ -68,18 +66,18 @@ ly_module_lookup (SCM module, SCM sym) /* Lookup SYM in a list of modules, which do not have to be related. Return the first instance. */ LY_DEFINE (ly_modules_lookup, "ly:modules-lookup", - 2, 1, 0, - (SCM modules, SCM sym, SCM def), - "Look up @var{sym} in the list @var{modules}," - " returning the first occurence. If not found, return" - " @var{def} or @code{#f} if @var{def} isn't specified.") + 2, 1, 0, + (SCM modules, SCM sym, SCM def), + "Look up @var{sym} in the list @var{modules}," + " returning the first occurence. If not found, return" + " @var{def} or @code{#f} if @var{def} isn't specified.") { for (SCM s = modules; scm_is_pair (s); s = scm_cdr (s)) { SCM mod = scm_car (s); SCM v = ly_module_lookup (mod, sym); if (SCM_VARIABLEP (v) && SCM_VARIABLE_REF (v) != SCM_UNDEFINED) - return scm_variable_ref (v); + return scm_variable_ref (v); } if (def != SCM_UNDEFINED) diff --git a/lily/moment-scheme.cc b/lily/moment-scheme.cc index 6b10541403..e7ed72f093 100644 --- a/lily/moment-scheme.cc +++ b/lily/moment-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,43 +21,63 @@ /* TODO: add optional factor argument. */ LY_DEFINE (ly_make_moment, "ly:make-moment", - 2, 2, 0, (SCM n, SCM d, SCM gn, SCM gd), - "Create the rational number with main timing @var{n}/@var{d}," - " and optional grace timing @var{gn}/@var{gd}.\n" - "\n" - "A @dfn{moment} is a point in musical time. It consists of" - " a pair of rationals (@var{m},@tie{}@var{g}), where @var{m} is" - " the timing for the main notes, and @var{g} the timing for" - " grace notes. In absence of grace notes, @var{g}@tie{}is zero.") + 1, 3, 0, (SCM m, SCM g, SCM gn, SCM gd), + "Create the moment with rational main timing @var{m}," + " and optional grace timing @var{g}.\n" + "\n" + "A @dfn{moment} is a point in musical time. It consists of" + " a pair of rationals (@var{m},@tie{}@var{g}), where @var{m} is" + " the timing for the main notes, and @var{g} the timing for" + " grace notes. In absence of grace notes, @var{g}@tie{}is zero.\n" + "\n" + "For compatibility reasons, it is possible to write two" + " numbers specifying numerator and denominator instead of" + " the rationals. These forms cannot be mixed, and the two-" + "argument form is disambiguated by the sign of the second" + " argument: if it is positive, it can only be a denominator" + " and not a grace timing." + ) { - LY_ASSERT_TYPE (scm_is_integer, n, 1); - LY_ASSERT_TYPE (scm_is_integer, d, 2); + LY_ASSERT_TYPE (ly_is_rational, m, 1); + if (SCM_UNBNDP (g)) + return Moment (ly_scm2rational (m)).smobbed_copy (); - int grace_num = 0; - if (gn != SCM_UNDEFINED) + if (SCM_UNBNDP (gn)) { - LY_ASSERT_TYPE (scm_is_integer, gn, 3); - grace_num = scm_to_int (gn); + LY_ASSERT_TYPE (ly_is_rational, g, 2); + if (scm_is_true (scm_positive_p (g))) + { + LY_ASSERT_TYPE (scm_is_integer, m, 1); + LY_ASSERT_TYPE (scm_is_integer, g, 2); + return Moment (Rational (scm_to_int64 (m), + scm_to_int64 (g))).smobbed_copy (); + } + return Moment (ly_scm2rational (m), + ly_scm2rational (g)).smobbed_copy (); } - int grace_den = 1; - if (gd != SCM_UNDEFINED) + LY_ASSERT_TYPE (scm_is_integer, m, 1); + LY_ASSERT_TYPE (scm_is_integer, g, 2); + LY_ASSERT_TYPE (scm_is_integer, gn, 3); + I64 grace_num = scm_to_int64 (gn); + I64 grace_den = 1; + if (!SCM_UNBNDP (gd)) { LY_ASSERT_TYPE (scm_is_integer, gd, 4); - grace_den = scm_to_int (gd); + grace_den = scm_to_int64 (gd); } - return Moment (Rational (scm_to_int (n), scm_to_int (d)), - Rational (grace_num, grace_den)).smobbed_copy (); + return Moment (Rational (scm_to_int64 (m), scm_to_int64 (g)), + Rational (grace_num, grace_den)).smobbed_copy (); } LY_DEFINE (ly_moment_sub, "ly:moment-sub", - 2, 0, 0, (SCM a, SCM b), - "Subtract two moments.") + 2, 0, 0, (SCM a, SCM b), + "Subtract two moments.") { - LY_ASSERT_SMOB (Moment, a, 1); + LY_ASSERT_SMOB (Moment, a, 1); LY_ASSERT_SMOB (Moment, b, 2); - + Moment *ma = unsmob_moment (a); Moment *mb = unsmob_moment (b); @@ -65,11 +85,11 @@ LY_DEFINE (ly_moment_sub, "ly:moment-sub", } LY_DEFINE (ly_moment_add, "ly:moment-add", - 2, 0, 0, (SCM a, SCM b), - "Add two moments.") + 2, 0, 0, (SCM a, SCM b), + "Add two moments.") { - LY_ASSERT_SMOB (Moment, a, 1); - LY_ASSERT_SMOB (Moment, b, 2); + LY_ASSERT_SMOB (Moment, a, 1); + LY_ASSERT_SMOB (Moment, b, 2); Moment *ma = unsmob_moment (a); Moment *mb = unsmob_moment (b); @@ -78,11 +98,11 @@ LY_DEFINE (ly_moment_add, "ly:moment-add", } LY_DEFINE (ly_moment_mul, "ly:moment-mul", - 2, 0, 0, (SCM a, SCM b), - "Multiply two moments.") + 2, 0, 0, (SCM a, SCM b), + "Multiply two moments.") { - LY_ASSERT_SMOB (Moment, a, 1); - LY_ASSERT_SMOB (Moment, b, 2); + LY_ASSERT_SMOB (Moment, a, 1); + LY_ASSERT_SMOB (Moment, b, 2); Moment *ma = unsmob_moment (a); Moment *mb = unsmob_moment (b); @@ -90,33 +110,42 @@ LY_DEFINE (ly_moment_mul, "ly:moment-mul", } LY_DEFINE (ly_moment_div, "ly:moment-div", - 2, 0, 0, (SCM a, SCM b), - "Divide two moments.") + 2, 0, 0, (SCM a, SCM b), + "Divide two moments.") { - LY_ASSERT_SMOB (Moment, a, 1); - LY_ASSERT_SMOB (Moment, b, 2); + LY_ASSERT_SMOB (Moment, a, 1); + LY_ASSERT_SMOB (Moment, b, 2); Moment *ma = unsmob_moment (a); Moment *mb = unsmob_moment (b); - + return (*ma / * mb).smobbed_copy (); } LY_DEFINE (ly_moment_mod, "ly:moment-mod", - 2, 0, 0, (SCM a, SCM b), - "Modulo of two moments.") + 2, 0, 0, (SCM a, SCM b), + "Modulo of two moments.") { - LY_ASSERT_SMOB (Moment, a, 1); - LY_ASSERT_SMOB (Moment, b, 2); - + LY_ASSERT_SMOB (Moment, a, 1); + LY_ASSERT_SMOB (Moment, b, 2); + Moment *ma = unsmob_moment (a); Moment *mb = unsmob_moment (b); return (*ma % * mb).smobbed_copy (); } +LY_DEFINE (ly_moment_grace, "ly:moment-grace", + 1, 0, 0, (SCM mom), + "Extract grace timing as a rational number from @var{mom}.") +{ + LY_ASSERT_SMOB (Moment, mom, 1); + + return ly_rational2scm (unsmob_moment (mom)->grace_part_); +} + LY_DEFINE (ly_moment_grace_numerator, "ly:moment-grace-numerator", - 1, 0, 0, (SCM mom), - "Extract numerator from grace timing.") + 1, 0, 0, (SCM mom), + "Extract numerator from grace timing.") { LY_ASSERT_SMOB (Moment, mom, 1); @@ -126,17 +155,27 @@ LY_DEFINE (ly_moment_grace_numerator, "ly:moment-grace-numerator", } LY_DEFINE (ly_moment_grace_denominator, "ly:moment-grace-denominator", - 1, 0, 0, (SCM mom), - "Extract denominator from grace timing.") + 1, 0, 0, (SCM mom), + "Extract denominator from grace timing.") { LY_ASSERT_SMOB (Moment, mom, 1); Moment *ma = unsmob_moment (mom); return scm_from_int64 (ma->grace_part_.denominator ()); } + +LY_DEFINE (ly_moment_main, "ly:moment-main", + 1, 0, 0, (SCM mom), + "Extract main timing as a rational number from @var{mom}.") +{ + LY_ASSERT_SMOB (Moment, mom, 1); + + return ly_rational2scm (unsmob_moment (mom)->main_part_); +} + LY_DEFINE (ly_moment_main_numerator, "ly:moment-main-numerator", - 1, 0, 0, (SCM mom), - "Extract numerator from main timing.") + 1, 0, 0, (SCM mom), + "Extract numerator from main timing.") { LY_ASSERT_SMOB (Moment, mom, 1); Moment *ma = unsmob_moment (mom); @@ -145,8 +184,8 @@ LY_DEFINE (ly_moment_main_numerator, "ly:moment-main-numerator", } LY_DEFINE (ly_moment_main_denominator, "ly:moment-main-denominator", - 1, 0, 0, (SCM mom), - "Extract denominator from main timing.") + 1, 0, 0, (SCM mom), + "Extract denominator from main timing.") { LY_ASSERT_SMOB (Moment, mom, 1); Moment *ma = unsmob_moment (mom); @@ -155,12 +194,12 @@ LY_DEFINE (ly_moment_main_denominator, "ly:moment-main-denominator", } LY_DEFINE (ly_moment_less_p, "ly:moment + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -71,10 +71,10 @@ SCM Moment::as_scheme () const { return scm_list_5 (ly_symbol2scm ("ly:make-moment"), - scm_from_int64 (main_part_.num ()), - scm_from_int64 (main_part_.den ()), - scm_from_int64 (grace_part_.num ()), - scm_from_int64 (grace_part_.den ())); + scm_from_int64 (main_part_.num ()), + scm_from_int64 (main_part_.den ()), + scm_from_int64 (grace_part_.num ()), + scm_from_int64 (grace_part_.den ())); } SCM diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index 3fbcdb612b..7fede1a3e7 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -47,7 +47,7 @@ protected: private: Stream_event *rest_ev_; - vector text_events_; + vector text_events_; int start_measure_; Rational last_main_moment_; Moment stop_moment_; @@ -57,8 +57,8 @@ private: Spanner *last_rest_; Spanner *mmrest_; - vector numbers_; - vector last_numbers_; + vector numbers_; + vector last_numbers_; }; Multi_measure_rest_engraver::Multi_measure_rest_engraver () @@ -105,53 +105,51 @@ Multi_measure_rest_engraver::process_music () mmrest_ = make_spanner ("MultiMeasureRest", rest_ev_->self_scm ()); Spanner *sp - = make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm ()); + = make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm ()); numbers_.push_back (sp); if (text_events_.size ()) - { - for (vsize i = 0; i < text_events_.size (); i++) - { - Stream_event *e = text_events_[i]; - Spanner *sp - = make_spanner ("MultiMeasureRestText", e->self_scm ()); - SCM t = e->get_property ("text"); - SCM dir = e->get_property ("direction"); - sp->set_property ("text", t); - if (is_direction (dir)) - sp->set_property ("direction", dir); - - numbers_.push_back (sp); - } - - /* - Stack different scripts. - */ - Direction d = DOWN; - do - { - Grob *last = 0; - for (vsize i = 0; i < numbers_.size (); i++) - { - if (scm_from_int (d) == numbers_[i]->get_property ("direction")) - { - if (last) - Side_position_interface::add_support (numbers_[i], last); - last = numbers_[i]; - } - } - } - while (flip (&d) != DOWN); - } + { + for (vsize i = 0; i < text_events_.size (); i++) + { + Stream_event *e = text_events_[i]; + Spanner *sp + = make_spanner ("MultiMeasureRestText", e->self_scm ()); + SCM t = e->get_property ("text"); + SCM dir = e->get_property ("direction"); + sp->set_property ("text", t); + if (is_direction (dir)) + sp->set_property ("direction", dir); + + numbers_.push_back (sp); + } + + /* + Stack different scripts. + */ + for (DOWN_and_UP (d)) + { + Grob *last = 0; + for (vsize i = 0; i < numbers_.size (); i++) + { + if (scm_from_int (d) == numbers_[i]->get_property ("direction")) + { + if (last) + Side_position_interface::add_support (numbers_[i], last); + last = numbers_[i]; + } + } + } + } for (vsize i = 0; i < numbers_.size (); i++) - { - Side_position_interface::add_support (numbers_[i], mmrest_); - numbers_[i]->set_parent (mmrest_, Y_AXIS); - } + { + Side_position_interface::add_support (numbers_[i], mmrest_); + numbers_[i]->set_parent (mmrest_, Y_AXIS); + } start_measure_ - = scm_to_int (get_property ("internalBarNumber")); + = scm_to_int (get_property ("internalBarNumber")); } bar_seen_ = bar_seen_ || scm_is_string (get_property ("whichBar")); @@ -176,20 +174,20 @@ Multi_measure_rest_engraver::stop_translation_timestep () if (last_command_item_ && (mmrest_ || last_rest_)) { if (last_rest_) - { - add_bound_item (last_rest_, last_command_item_); - for (vsize i = 0; i < last_numbers_.size (); i++) - add_bound_item (last_numbers_[i], last_command_item_); - } + { + add_bound_item (last_rest_, last_command_item_); + for (vsize i = 0; i < last_numbers_.size (); i++) + add_bound_item (last_numbers_[i], last_command_item_); + } if (mmrest_) - { - add_bound_item (mmrest_, last_command_item_); - for (vsize i = 0; i < numbers_.size (); i++) - add_bound_item (numbers_[i], last_command_item_); + { + add_bound_item (mmrest_, last_command_item_); + for (vsize i = 0; i < numbers_.size (); i++) + add_bound_item (numbers_[i], last_command_item_); - last_command_item_ = 0; - } + last_command_item_ = 0; + } } Moment mp (robust_scm2moment (get_property ("measurePosition"), Moment (0))); @@ -223,36 +221,31 @@ Multi_measure_rest_engraver::start_translation_timestep () int num = cur - start_measure_; /* - We can't plug a markup directly into the grob, since the - measure-count determines the formatting of the mmrest. + We can't plug a markup directly into the grob, since the + measure-count determines the formatting of the mmrest. */ 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 (); Grob *last = last_numbers_.size () ? last_numbers_[0] : 0; if (last && last->get_property ("text") == SCM_EOL) - { - SCM thres = get_property ("restNumberThreshold"); - int t = 1; - if (scm_is_number (thres)) - t = scm_to_int (thres); - - if (num <= t) - last->suicide (); - else - { - SCM text - = scm_number_to_string (scm_from_int (num), scm_from_int (10)); - last->set_property ("text", text); - } - } + { + SCM thres = get_property ("restNumberThreshold"); + int t = 1; + if (scm_is_number (thres)) + t = scm_to_int (thres); + + if (num <= t) + last->suicide (); + else + { + SCM text + = scm_number_to_string (scm_from_int (num), scm_from_int (10)); + last->set_property ("text", text); + } + } } last_main_moment_ = now.main_part_; @@ -264,26 +257,23 @@ Multi_measure_rest_engraver::finalize () } ADD_TRANSLATOR (Multi_measure_rest_engraver, - /* doc */ - "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.", - - /* create */ - "MultiMeasureRest " - "MultiMeasureRestNumber " - "MultiMeasureRestText ", - - /* read */ - "internalBarNumber " - "restNumberThreshold " - "currentCommandColumn " - "measurePosition " - "measureLength ", - - /* write */ - "" - ); + /* doc */ + "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}.", + + /* create */ + "MultiMeasureRest " + "MultiMeasureRestNumber " + "MultiMeasureRestText ", + + /* read */ + "internalBarNumber " + "restNumberThreshold " + "currentCommandColumn " + "measurePosition ", + + /* write */ + "" + ); diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index 9628402a5e..47718a2fec 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,14 +19,18 @@ #include "multi-measure-rest.hh" +#include "duration.hh" #include "font-interface.hh" +#include "international.hh" #include "lookup.hh" #include "misc.hh" +#include "moment.hh" #include "output-def.hh" #include "paper-column.hh" // urg #include "percent-repeat-item.hh" #include "rest.hh" #include "separation-item.hh" +#include "spacing-options.hh" #include "spanner.hh" #include "staff-symbol-referencer.hh" #include "system.hh" @@ -38,19 +42,17 @@ Multi_measure_rest::bar_width (Spanner *me) { SCM spacing_pair = me->get_property ("spacing-pair"); Interval iv; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Item *col = me->get_bound (d)->get_column (); SCM align_sym - = (scm_is_pair (spacing_pair) - ? index_get_cell (spacing_pair, d) - : ly_symbol2scm ("staff-bar")); + = (scm_is_pair (spacing_pair) + ? index_get_cell (spacing_pair, d) + : ly_symbol2scm ("staff-bar")); Interval coldim = Paper_column::break_align_width (col, align_sym); iv[d] = coldim[-d]; } - while (flip (&d) != LEFT); return iv; } @@ -68,7 +70,7 @@ Multi_measure_rest::percent (SCM smob) // ugh copy & paste. Grob *common_x = sp->get_bound (LEFT)->common_refpoint (sp->get_bound (RIGHT), - X_AXIS); + X_AXIS); Interval sp_iv = bar_width (sp); Real x_off = 0.0; @@ -109,27 +111,92 @@ Multi_measure_rest::print (SCM smob) Stencil mol; mol.add_stencil (symbol_stencil (me, space)); - int measures = 0; - SCM m (me->get_property ("measure-count")); - if (scm_is_number (m)) - measures = scm_to_int (m); - mol.translate_axis (x_off, X_AXIS); return mol.smobbed_copy (); } +int +calc_closest_duration_log (Grob *me, double duration, bool force_round_up, bool paranoid) +{ + bool round_up = force_round_up + || to_boolean (me->get_property ("round-up-to-longer-rest")); + int closest_usable_duration_log; + + // Out of range initial values. + if (round_up) + closest_usable_duration_log = -15; // high value + else + closest_usable_duration_log = 15; // low value + int minimum_usable_duration_log = -15; + int maximum_usable_duration_log = 15; + + SCM duration_logs_list = me->get_property ("usable-duration-logs"); + if (paranoid + && (to_boolean (scm_null_p (duration_logs_list)) + || !to_boolean (scm_list_p (duration_logs_list)))) + { + warning (_ ("usable-duration-logs must be a non-empty list." + " Falling back to whole rests.")); + closest_usable_duration_log = 0; + } + else + { + for (SCM s = duration_logs_list; scm_is_pair (s); s = scm_cdr (s)) + { + int dur_log = scm_to_int (scm_car (s)); + if (dur_log > minimum_usable_duration_log) + minimum_usable_duration_log = dur_log; + if (dur_log < maximum_usable_duration_log) + maximum_usable_duration_log = dur_log; + double dur = pow (2.0, -dur_log); + if (round_up) + { + if (duration <= dur && dur_log > closest_usable_duration_log) + closest_usable_duration_log = dur_log; + } + else + { + if (duration >= dur && dur_log < closest_usable_duration_log) + closest_usable_duration_log = dur_log; + } + } + } + + if (closest_usable_duration_log == 15) + closest_usable_duration_log = minimum_usable_duration_log; + if (closest_usable_duration_log == -15) + closest_usable_duration_log = maximum_usable_duration_log; + + return closest_usable_duration_log; +} + +int +calc_measure_duration_log (Grob *me, bool paranoid) +{ + SCM sml = dynamic_cast (me)->get_bound (LEFT) + ->get_property ("measure-length"); + Rational ml = (unsmob_moment (sml)) ? unsmob_moment (sml)->main_part_ + : Rational (1); + double measure_duration = ml.Rational::to_double (); + bool force_round_up = to_boolean (scm_list_p (scm_member (scm_cons (scm_from_int64 (ml.numerator ()), + scm_from_int64 (ml.denominator ())), + me->get_property ("round-up-exceptions")))); + + return calc_closest_duration_log (me, measure_duration, force_round_up, paranoid); +} + Stencil Multi_measure_rest::symbol_stencil (Grob *me, Real space) { - int measures = 0; + int measure_count = 0; SCM m (me->get_property ("measure-count")); if (scm_is_number (m)) - measures = scm_to_int (m); - if (measures <= 0) + measure_count = scm_to_int (m); + if (measure_count <= 0) return Stencil (); SCM limit = me->get_property ("expand-limit"); - if (measures > scm_to_int (limit)) + if (measure_count > scm_to_int (limit)) { Real padding = 0.15; Stencil s = big_rest (me, (1.0 - 2 * padding) * space); @@ -137,38 +204,26 @@ Multi_measure_rest::symbol_stencil (Grob *me, Real space) return s; } - Real staff_space = Staff_symbol_referencer::staff_space (me); - Font_metric *musfont = Font_interface::get_default_font (me); + int mdl = calc_measure_duration_log (me, true); - SCM sml = me->get_property ("use-breve-rest"); - if (measures == 1) + if (measure_count == 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)); + if (mdl == 0 && me->get_property ("staff-position") == SCM_EOL) + { + if (Staff_symbol_referencer::on_staff_line (me, 2)) + me->set_property ("staff-position", scm_from_int (2)); + else if (Staff_symbol_referencer::on_staff_line (me, 3)) + me->set_property ("staff-position", scm_from_int (3)); + } - /* - ugh. - */ - if (Staff_symbol_referencer::get_position (me) == 0.0) - s.translate_axis (staff_space, Y_AXIS); + Stencil s = musfont->find_by_name (Rest::glyph_name (me, mdl, "", true)); - s.translate_axis ((space - s.extent (X_AXIS).length ()) / 2, X_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); + return church_rest (me, musfont, measure_count, space); } /* @@ -203,80 +258,43 @@ Multi_measure_rest::big_rest (Grob *me, Real width) Kirchenpause (?) */ Stencil -Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measures, - Real space) +Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measure_count, + Real space) { SCM mols = SCM_EOL; - - /* See Wanske pp. 125 */ - int l = measures; - int count = 0; + int symbol_count = 0; Real symbols_width = 0.0; + double total_duration = measure_count * pow (2.0, -calc_measure_duration_log (me, true)); - bool use_breve = to_boolean (me->get_property ("use-breve-rest")); - - while (l) + while (total_duration > 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++; + int dl = calc_closest_duration_log (me, total_duration, false, true); + double duration = pow (2.0, -dl); + + total_duration -= duration; + + Stencil r = musfont->find_by_name (Rest::glyph_name (me, dl, "", true)); + if (dl == 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); + symbol_count++; } /* Make outer padding this much bigger. */ Real outer_padding_factor = 1.5; Real inner_padding = (space - symbols_width) - / (2 * outer_padding_factor + (count - 1)); + / (2 * outer_padding_factor + (symbol_count - 1)); if (inner_padding < 0) inner_padding = 1.0; Stencil mol; for (SCM s = mols; scm_is_pair (s); s = scm_cdr (s)) mol.add_at_edge (X_AXIS, LEFT, *unsmob_stencil (scm_car (s)), - inner_padding); + inner_padding); mol.align_to (X_AXIS, LEFT); mol.translate_axis (outer_padding_factor * inner_padding, X_AXIS); @@ -303,11 +321,26 @@ Multi_measure_rest::calculate_spacing_rods (Grob *me, Real length) Item *ri = sp->get_bound (RIGHT)->get_column (); Item *lb = li->find_prebroken_piece (RIGHT); Item *rb = ri->find_prebroken_piece (LEFT); + Grob *spacing = unsmob_grob (li->get_object ("spacing")); + if (!spacing) + spacing = unsmob_grob (ri->get_object ("spacing")); + if (!spacing) + me->warning (_ ("Using naive multi measure rest spacing.")); + else + { + Spacing_options options; + options.init_from_grob (me); + int dl = calc_measure_duration_log (me, false); + Duration dur = Duration (dl, 0); + Rational rat = dur.get_length (); + length = max (length, options.get_duration_space (rat)); + } Item *combinations[4][2] = {{li, ri}, - {lb, ri}, - {li, rb}, - {lb, rb}}; + {lb, ri}, + {li, rb}, + {lb, rb} + }; for (int i = 0; i < 4; i++) { @@ -315,15 +348,15 @@ Multi_measure_rest::calculate_spacing_rods (Grob *me, Real length) Item *ri = combinations[i][1]; if (!li || !ri) - continue; + continue; Rod rod; rod.item_drul_[LEFT] = li; rod.item_drul_[RIGHT] = ri; rod.distance_ = Paper_column::minimum_distance (li, ri) - + length - + 2 * robust_scm2double (me->get_property ("bound-padding"), 1.0); + + length + + 2 * robust_scm2double (me->get_property ("bound-padding"), 1.0); Real minlen = robust_scm2double (me->get_property ("minimum-length"), 0); rod.distance_ = max (rod.distance_, minlen); @@ -351,23 +384,25 @@ Multi_measure_rest::set_text_rods (SCM smob) /* FIXME uncached */ Real len = (stil && !stil->extent (X_AXIS).is_empty ()) - ? stil->extent (X_AXIS).length () - : 0.0; + ? stil->extent (X_AXIS).length () + : 0.0; calculate_spacing_rods (me, len); return SCM_UNSPECIFIED; } ADD_INTERFACE (Multi_measure_rest, - "A rest that spans a whole number of measures.", - - /* properties */ - "bound-padding " - "expand-limit " - "hair-thickness " - "measure-count " - "minimum-length " - "spacing-pair " - "thick-thickness " - "use-breve-rest " - ); + "A rest that spans a whole number of measures.", + + /* properties */ + "bound-padding " + "expand-limit " + "hair-thickness " + "measure-count " + "minimum-length " + "round-up-exceptions " + "round-up-to-longer-rest " + "spacing-pair " + "thick-thickness " + "usable-duration-logs " + ); diff --git a/lily/music-function-scheme.cc b/lily/music-function-scheme.cc index b6473b19d1..e9e9a68ec6 100644 --- a/lily/music-function-scheme.cc +++ b/lily/music-function-scheme.cc @@ -1,30 +1,52 @@ #include "music-function.hh" LY_DEFINE (ly_music_function_p, "ly:music-function?", 1, 0, 0, - (SCM x), - "Is @var{x} a @code{music-function}?") + (SCM x), + "Is @var{x} a @code{music-function}?") { return is_music_function (x) ? SCM_BOOL_T : SCM_BOOL_F; } - + LY_DEFINE (ly_music_function_extract, "ly:music-function-extract", 1, 0, 0, - (SCM x), - "Return the Scheme function inside@tie{}@var{x}.") + (SCM x), + "Return the Scheme function inside@tie{}@var{x}.") { LY_ASSERT_TYPE (is_music_function, x, 1); - - return SCM_CELL_OBJECT_1(x); + + return get_music_function_transform (x); } -LY_DEFINE (ly_make_music_function, "ly:make-music-function", 2, 0, 0, - (SCM signature, SCM func), - "Make a function to process music, to be used for the" - " parser. @var{func} is the function, and @var{signature}" - " describes its arguments. @var{signature} is a list" - " containing either @code{ly:music?} predicates or other type" - " predicates.") +LY_DEFINE (ly_music_function_signature, "ly:music-function-signature", 1, 0, 0, + (SCM x), + "Return the function signature inside@tie{}@var{x}.") { - LY_ASSERT_TYPE (ly_is_procedure, func, 1); - return make_music_function (signature, func); + LY_ASSERT_TYPE (is_music_function, x, 1); + + return get_music_function_signature (x); } +LY_DEFINE (ly_make_music_function, "ly:make-music-function", 2, 0, 0, + (SCM signature, SCM func), + "Make a function to process music, to be used for the" + " parser. @var{func} is the function, and @var{signature}" + " describes its arguments. @var{signature}'s cdr is a list" + " containing either @code{ly:music?} predicates or other type" + " predicates. Its car is the syntax function to call.") +{ + LY_ASSERT_TYPE (ly_is_list, signature, 1); + LY_ASSERT_TYPE (ly_is_procedure, func, 2); + int n = 0; + for (SCM p = signature; scm_is_pair (p); p = scm_cdr (p), ++n) + { + SCM proc = scm_car (p); + if (scm_is_pair (proc)) + proc = scm_car (proc); + if (scm_is_false (scm_procedure_p (proc))) + { + scm_wrong_type_arg_msg ("music-function", n, p, + "music function predicate"); + } + } + + return make_music_function (signature, func); +} diff --git a/lily/music-function.cc b/lily/music-function.cc index 85eecb7c33..f206b6b382 100644 --- a/lily/music-function.cc +++ b/lily/music-function.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,17 +20,29 @@ #include "music-function.hh" #include "music.hh" +#include "ly-smobs.icc" -static scm_t_bits music_function_tag; +class Musicfunction +{ + DECLARE_SIMPLE_SMOBS (Musicfunction); + SCM signature_; + SCM function_; +public: + Musicfunction (SCM signature, SCM function): + signature_ (signature), function_ (function) { } + SCM get_function () { return function_; } + SCM get_signature () { return signature_; } +}; + +IMPLEMENT_SIMPLE_SMOBS (Musicfunction); +IMPLEMENT_DEFAULT_EQUAL_P (Musicfunction); /* Print a textual represenation of the smob to a given port. */ -static int -print_music_function (SCM b, SCM port, scm_print_state *) +int +Musicfunction::print_smob (SCM b, SCM port, scm_print_state *) { - SCM value = SCM_CELL_OBJECT_1 (b); - scm_puts ("#get_function (), port); scm_puts (">", port); /* Non-zero means success. */ @@ -40,7 +52,7 @@ print_music_function (SCM b, SCM port, scm_print_state *) bool is_music_function (SCM music_function) { - return (SCM_NIMP (music_function) && SCM_CELL_TYPE (music_function) == music_function_tag); + return Musicfunction::unsmob (music_function); } SCM @@ -49,25 +61,29 @@ get_music_function_transform (SCM music_function) if (!is_music_function (music_function)) return SCM_UNDEFINED; - return SCM_CELL_OBJECT_1 (music_function); + return Musicfunction::unsmob (music_function)->get_function (); } -static void -init_music_function (void) +SCM +make_music_function (SCM signature, SCM func) { - music_function_tag = scm_make_smob_type ("music-function", 0); - scm_set_smob_mark (music_function_tag, scm_markcdr); - scm_set_smob_print (music_function_tag, print_music_function); + return Musicfunction (signature, func).smobbed_copy (); } SCM -make_music_function (SCM signature, SCM func) +get_music_function_signature (SCM music_function) { - scm_set_object_property_x (func, ly_symbol2scm ("music-function-signature"), - signature); + if (!is_music_function (music_function)) + return SCM_UNDEFINED; - SCM_RETURN_NEWSMOB (music_function_tag, func); + return Musicfunction::unsmob (music_function)->get_signature (); } -ADD_SCM_INIT_FUNC (music_function_tag, init_music_function); - +SCM +Musicfunction::mark_smob (SCM s) +{ + Musicfunction *p = Musicfunction::unsmob (s); + scm_gc_mark (p->signature_); + ASSERT_LIVE_IS_ALLOWED (s); + return p->function_; +} diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 46d9fb035d..c076b7ad65 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include using namespace std; @@ -51,7 +50,7 @@ Music_iterator::~Music_iterator () Context * Music_iterator::get_outlet () const { - return handle_.get_outlet (); + return handle_.get_context (); } void @@ -97,11 +96,11 @@ Music_iterator::get_static_get_iterator (Music *m) else { if (dynamic_cast (m)) - p = new Music_wrapper_iterator; + p = new Music_wrapper_iterator; else if (m->is_mus_type ("event")) p = new Event_iterator; else - p = new Simple_music_iterator; + p = new Simple_music_iterator; iter = p->self_scm (); p->unprotect (); @@ -170,16 +169,16 @@ Music_iterator::descend_to_bottom_context () set_context (get_outlet ()->get_default_interpreter ()); } -void +void Music_iterator::report_event (Music *m) { descend_to_bottom_context (); /* - FIXME: then don't do it. + FIXME: then don't do it. */ if (!m->is_mus_type ("event")) - m->origin ()->programming_error (_ ("Sending non-event to context")); + m->origin ()->programming_error ("Sending non-event to context"); m->send_to_context (get_outlet ()); } @@ -217,7 +216,7 @@ Music_iterator::mark_smob (SCM smob) } int -Music_iterator::print_smob (SCM sm, SCM port, scm_print_state*) +Music_iterator::print_smob (SCM sm, SCM port, scm_print_state *) { char s[1000]; diff --git a/lily/music-output.cc b/lily/music-output.cc index 9b8a99c724..dfb8b4e46b 100644 --- a/lily/music-output.cc +++ b/lily/music-output.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,7 +54,7 @@ Music_output::mark_smob (SCM s) } int -Music_output::print_smob (SCM s, SCM p, scm_print_state*) +Music_output::print_smob (SCM s, SCM p, scm_print_state *) { Music_output *sc = (Music_output *) SCM_CELL_WORD_1 (s); scm_puts ("#<", p); diff --git a/lily/music-scheme.cc b/lily/music-scheme.cc index c0e4eb3167..ffa903b4eb 100644 --- a/lily/music-scheme.cc +++ b/lily/music-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,12 +20,13 @@ #include "music.hh" #include "duration.hh" +#include "program-option.hh" #include "warn.hh" LY_DEFINE (ly_music_length, "ly:music-length", - 1, 0, 0, (SCM mus), - "Get the length of music expression @var{mus} and return" - " it as a @code{Moment} object.") + 1, 0, 0, (SCM mus), + "Get the length of music expression @var{mus} and return" + " it as a @code{Moment} object.") { LY_ASSERT_TYPE (unsmob_music, mus, 1); Music *sc = unsmob_music (mus); @@ -33,53 +34,63 @@ LY_DEFINE (ly_music_length, "ly:music-length", } LY_DEFINE (ly_music_property, "ly:music-property", - 2, 1, 0, (SCM mus, SCM sym, SCM val), - "Return the value for property @var{sym} of music expression" - " @var{mus}. If no value is found, return @var{val} or" - " @code{'()} if @var{val} is not specified.") + 2, 1, 0, (SCM mus, SCM sym, SCM val), + "Return the value for property @var{sym} of music expression" + " @var{mus}. If no value is found, return @var{val} or" + " @code{'()} if @var{val} is not specified.") { LY_ASSERT_TYPE (unsmob_music, mus, 1); return ly_prob_property (mus, sym, val); } LY_DEFINE (ly_music_set_property_x, "ly:music-set-property!", - 3, 0, 0, (SCM mus, SCM sym, SCM val), - "Set property @var{sym} in music expression @var{mus} to" - " @var{val}.") + 3, 0, 0, (SCM mus, SCM sym, SCM val), + "Set property @var{sym} in music expression @var{mus} to" + " @var{val}.") { LY_ASSERT_TYPE (unsmob_music, mus, 1); return ly_prob_set_property_x (mus, sym, val); } - /* todo: property args */ LY_DEFINE (ly_make_music, "ly:make-music", - 1, 0, 0, (SCM props), - "Make a C++ @code{Music} object and initialize it with" - " @var{props}.\n" - "\n" - "This function is for internal use and is only called by" - " @code{make-music}, which is the preferred interface" - " for creating music objects.") + 1, 0, 0, (SCM props), + "Make a C++ @code{Music} object and initialize it with" + " @var{props}.\n" + "\n" + "This function is for internal use and is only called by" + " @code{make-music}, which is the preferred interface" + " for creating music objects.") { Music *ms = new Music (props); return ms->unprotect (); } LY_DEFINE (ly_music_p, "ly:music?", - 1, 0, 0, (SCM obj), - "Is @var{obj} a music object?") + 1, 0, 0, (SCM obj), + "Is @var{obj} a music object?") { return scm_from_bool (unsmob_music (obj)); } +LY_DEFINE (ly_event_p, "ly:event?", + 1, 0, 0, (SCM obj), + "Is @var{obj} a proper (non-rhythmic) event object?") +{ + if (Music *m = unsmob_music (obj)) + { + return scm_from_bool (m->is_mus_type ("post-event")); + } + return SCM_BOOL_F; +} + /* todo: property args */ LY_DEFINE (ly_music_mutable_properties, "ly:music-mutable-properties", - 1, 0, 0, (SCM mus), - "Return an alist containing the mutable properties of @var{mus}." - " The immutable properties are not available, since they are" - " constant and initialized by the @code{make-music} function.") + 1, 0, 0, (SCM mus), + "Return an alist containing the mutable properties of @var{mus}." + " The immutable properties are not available, since they are" + " constant and initialized by the @code{make-music} function.") { LY_ASSERT_TYPE (unsmob_music, mus, 1); Music *m = unsmob_music (mus); @@ -87,23 +98,23 @@ LY_DEFINE (ly_music_mutable_properties, "ly:music-mutable-properties", } LY_DEFINE (ly_music_list_p, "ly:music-list?", - 1, 0, 0, (SCM lst), - "Is @var{lst} a list of music objects?") + 1, 0, 0, (SCM lst), + "Is @var{lst} a list of music objects?") { if (scm_list_p (lst) == SCM_BOOL_T) while (scm_is_pair (lst)) { - if (!unsmob_music (scm_car (lst))) - return SCM_BOOL_F; - lst = scm_cdr (lst); + if (!unsmob_music (scm_car (lst))) + return SCM_BOOL_F; + lst = scm_cdr (lst); } return SCM_BOOL_T; } LY_DEFINE (ly_music_deep_copy, "ly:music-deep-copy", - 1, 0, 0, (SCM m), - "Copy @var{m} and all sub expressions of@tie{}@var{m}.") + 1, 0, 0, (SCM m), + "Copy @var{m} and all sub expressions of@tie{}@var{m}.") { SCM copy = m; if (unsmob_music (m)) @@ -113,14 +124,14 @@ LY_DEFINE (ly_music_deep_copy, "ly:music-deep-copy", } else if (scm_is_pair (m)) copy = scm_cons (ly_music_deep_copy (scm_car (m)), - ly_music_deep_copy (scm_cdr (m))); + ly_music_deep_copy (scm_cdr (m))); return copy; } LY_DEFINE (ly_music_transpose, "ly:music-transpose", - 2, 0, 0, (SCM m, SCM p), - "Transpose @var{m} such that central@tie{}C is mapped" - " to@tie{}@var{p}. Return@tie{}@var{m}.") + 2, 0, 0, (SCM m, SCM p), + "Transpose @var{m} such that central@tie{}C is mapped" + " to@tie{}@var{p}. Return@tie{}@var{m}.") { LY_ASSERT_TYPE (unsmob_music, m, 1); LY_ASSERT_SMOB (Pitch, p, 2); @@ -137,8 +148,8 @@ LY_DEFINE (ly_music_transpose, "ly:music-transpose", TODO: should take moment factor? */ LY_DEFINE (ly_music_compress, "ly:music-compress", - 2, 0, 0, (SCM m, SCM factor), - "Compress music object@tie{}@var{m} by moment @var{factor}.") + 2, 0, 0, (SCM m, SCM factor), + "Compress music object@tie{}@var{m} by moment @var{factor}.") { LY_ASSERT_TYPE (unsmob_music, m, 1); LY_ASSERT_TYPE (unsmob_moment, factor, 2); @@ -148,10 +159,27 @@ LY_DEFINE (ly_music_compress, "ly:music-compress", return sc->self_scm (); } +LY_DEFINE (ly_make_music_relative_x, "ly:make-music-relative!", + 2, 0, 0, (SCM music, SCM pitch), + "Make @var{music} relative to @var{pitch}," + " return final pitch.") +{ + LY_ASSERT_TYPE (unsmob_music, music, 1); + LY_ASSERT_TYPE (unsmob_pitch, pitch, 2); + + Pitch start = *unsmob_pitch (pitch); + Music *m = unsmob_music (music); + Pitch last = m->to_relative_octave (start); + if (lily_1_8_relative) + m->set_property ("last-pitch", last.smobbed_copy ()); + + return last.smobbed_copy (); +} + LY_DEFINE (ly_music_duration_length, "ly:music-duration-length", 1, 0, 0, - (SCM mus), - "Extract the duration field from @var{mus} and return the" - " length.") + (SCM mus), + "Extract the duration field from @var{mus} and return the" + " length.") { LY_ASSERT_TYPE (unsmob_music, mus, 1); Music *m = unsmob_music (mus); @@ -167,13 +195,13 @@ LY_DEFINE (ly_music_duration_length, "ly:music-duration-length", 1, 0, 0, } LY_DEFINE (ly_music_duration_compress, "ly:music-duration-compress", 2, 0, 0, - (SCM mus, SCM fact), - "Compress @var{mus} by factor @var{fact}, which is a" - " @code{Moment}.") + (SCM mus, SCM fact), + "Compress @var{mus} by factor @var{fact}, which is a" + " @code{Moment}.") { LY_ASSERT_TYPE (unsmob_music, mus, 1); LY_ASSERT_SMOB (Moment, fact, 2); - + Music *m = unsmob_music (mus); Moment *f = unsmob_moment (fact); @@ -191,9 +219,9 @@ LY_DEFINE (ly_music_duration_compress, "ly:music-duration-compress", 2, 0, 0, TODO: this should use ly:pitch. */ LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist", - 2, 0, 0, (SCM l, SCM pit), - "Make a new key alist of@tie{}@var{l} transposed by" - " pitch @var{pit}.") + 2, 0, 0, (SCM l, SCM pit), + "Make a new key alist of@tie{}@var{l} transposed by" + " pitch @var{pit}.") { SCM newlist = SCM_EOL; Pitch *p = unsmob_pitch (pit); @@ -203,28 +231,28 @@ LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist", SCM key = scm_caar (s); SCM alter = scm_cdar (s); if (scm_is_pair (key)) - { - Pitch orig (scm_to_int (scm_car (key)), - scm_to_int (scm_cdr (key)), - ly_scm2rational (alter)); + { + Pitch orig (scm_to_int (scm_car (key)), + scm_to_int (scm_cdr (key)), + ly_scm2rational (alter)); - orig = orig.transposed (*p); + orig = orig.transposed (*p); - SCM key = scm_cons (scm_from_int (orig.get_octave ()), - scm_from_int (orig.get_notename ())); + SCM key = scm_cons (scm_from_int (orig.get_octave ()), + scm_from_int (orig.get_notename ())); - newlist = scm_cons (scm_cons (key, ly_rational2scm (orig.get_alteration ())), - newlist); - } + newlist = scm_cons (scm_cons (key, ly_rational2scm (orig.get_alteration ())), + newlist); + } else if (scm_is_number (key)) - { - Pitch orig (0, scm_to_int (key), ly_scm2rational (alter)); - orig = orig.transposed (*p); - - key = scm_from_int (orig.get_notename ()); - alter = ly_rational2scm (orig.get_alteration ()); - newlist = scm_cons (scm_cons (key, alter), newlist); - } + { + Pitch orig (0, scm_to_int (key), ly_scm2rational (alter)); + orig = orig.transposed (*p); + + key = scm_from_int (orig.get_notename ()); + alter = ly_rational2scm (orig.get_alteration ()); + newlist = scm_cons (scm_cons (key, alter), newlist); + } } return scm_reverse_x (newlist, SCM_EOL); } diff --git a/lily/music-sequence.cc b/lily/music-sequence.cc index 8c9642c860..7ab62470b5 100644 --- a/lily/music-sequence.cc +++ b/lily/music-sequence.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,6 +21,8 @@ #include "warn.hh" #include "program-option.hh" +#include "duration.hh" +#include "moment.hh" #include "music.hh" #include "input.hh" @@ -41,7 +43,7 @@ Music_sequence::cumulative_length (SCM l) { Moment l = unsmob_music (scm_car (s))->get_length (); if (last_len.grace_part_ && l.main_part_) - last_len.grace_part_ = Rational (0); + last_len.grace_part_ = Rational (0); cumulative += last_len; last_len = l; } @@ -60,12 +62,12 @@ Music_sequence::maximum_length (SCM l) { Music *m = unsmob_music (scm_car (s)); if (!m) - programming_error ("Music sequence should have music elements"); + programming_error ("Music sequence should have music elements"); else - { - Moment l = m->get_length (); - dur = max (dur, l); - } + { + Moment l = m->get_length (); + dur = max (dur, l); + } } return dur; @@ -79,6 +81,21 @@ Music_sequence::maximum_length_callback (SCM m) return maximum_length (me->get_property ("elements")).smobbed_copy (); } +MAKE_SCHEME_CALLBACK (Music_sequence, event_chord_length_callback, 1); +SCM +Music_sequence::event_chord_length_callback (SCM m) +{ + Music *me = unsmob_music (m); + Duration *d = unsmob_duration (me->get_property ("duration")); + // Preset duration is used in chord repetitions. + if (d) + { + Moment mom = d->get_length (); + return mom.smobbed_copy (); + } + return maximum_length (me->get_property ("elements")).smobbed_copy (); +} + MAKE_SCHEME_CALLBACK (Music_sequence, cumulative_length_callback, 1); SCM Music_sequence::cumulative_length_callback (SCM m) @@ -113,11 +130,11 @@ music_list_to_relative (SCM l, Pitch p, bool ret_first) for (SCM s = l; scm_is_pair (s); s = scm_cdr (s)) { if (Music *m = unsmob_music (scm_car (s))) - { - last = m->to_relative_octave (last); - if (!count++) - first = last; - } + { + last = m->to_relative_octave (last); + if (!count++) + first = last; + } } return (ret_first) ? first : last; @@ -143,17 +160,15 @@ Music_sequence::minimum_start (SCM l) Moment Music_sequence::first_start (SCM l) { - Moment m; for (SCM s = l; scm_is_pair (s); s = scm_cdr (s)) { Music *mus = unsmob_music (scm_car (s)); - Moment l = mus->get_length (); - Moment s = mus->start_mom (); - if (l.to_bool () || s.to_bool ()) - return s; + Moment start = mus->start_mom (); + if (mus->get_length ().to_bool () || start.to_bool ()) + return start; } - return m; + return Moment (); } MAKE_SCHEME_CALLBACK (Music_sequence, simultaneous_relative_callback, 2); @@ -175,7 +190,7 @@ Music_sequence::simultaneous_relative_callback (SCM music, SCM pitch) Pitch retval_1_8 = music_list_to_relative (copied, p, true); if (retval_1_8 != retval) - lily_1_8_compatibility_used = true; + lily_1_8_compatibility_used = true; retval = retval_1_8; } @@ -190,61 +205,5 @@ Music_sequence::event_chord_relative_callback (SCM music, SCM pitch) Music *me = unsmob_music (music); Pitch p = *unsmob_pitch (pitch); return music_list_to_relative (me->get_property ("elements"), - p, true).smobbed_copy (); -} - -MAKE_SCHEME_CALLBACK (Music_sequence, repeated_chord_relative_callback, 2); -SCM -Music_sequence::repeated_chord_relative_callback (SCM music, SCM pitch) -{ - Music *me = unsmob_music (music); - Music *repeated_chord = unsmob_music (me->get_property ("element")); - Music *original_chord = unsmob_music (me->get_property ("original-chord")); - - /* A repeated chord octave is not computed from the previous pitch, - * (this function `pitch' argument), but from the original chord, so - * that repeated chords have the same octave have the original chord, - * even though other simple notes have been entered meanwhile. - */ - assert (repeated_chord); - Pitch *p = 0; - /* Get the original chord first pitch */ - if (original_chord) - { - for (SCM s = original_chord->get_property ("elements"); scm_is_pair (s); s = scm_cdr (s)) - { - if (Music *m = unsmob_music (scm_car (s))) - { - p = unsmob_pitch (m->get_property ("pitch")); - if (p) - break; - } - } - } - /* Use the `pitch' argument if no pitch found in original chord. */ - if (! p) - p = unsmob_pitch (pitch); - - /* Change the first note pitch to -1, to avoid octaviation. Indeed, - * the first pitch should be the same as the original chord first - * pitch. */ - for (SCM s = repeated_chord->get_property ("elements"); scm_is_pair (s); s = scm_cdr (s)) - { - if (Music *m = unsmob_music (scm_car (s))) - { - Pitch *first_pitch = unsmob_pitch (m->get_property ("pitch")); - if (first_pitch) - { - Pitch new_pitch = Pitch (-1, - first_pitch->get_notename (), - first_pitch->get_alteration ()); - m->set_property ("pitch", new_pitch.smobbed_copy ()); - break; - } - } - } - music_list_to_relative (repeated_chord->get_property ("elements"), *p, true).smobbed_copy (); - /* Return `pitch' instead of the repeated chord first pitch, - * because `pitch' is the last explicitly entered pitch */ - return pitch; + p, true).smobbed_copy (); } diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc index 4a47357355..e208d135f5 100644 --- a/lily/music-wrapper-iterator.cc +++ b/lily/music-wrapper-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,8 +53,8 @@ Music_wrapper_iterator::construct_children () Music *my_music = get_music (); Music *child = unsmob_music (my_music->get_property ("element")); child_iter_ = (child) - ? unsmob_iterator (get_iterator (child)) - : 0; + ? unsmob_iterator (get_iterator (child)) + : 0; } bool @@ -84,5 +84,5 @@ IMPLEMENT_CTOR_CALLBACK (Music_wrapper_iterator); bool Music_wrapper_iterator::run_always () const { - return (child_iter_ && child_iter_->run_always ()); + return (child_iter_ && child_iter_->run_always ()); } diff --git a/lily/music-wrapper.cc b/lily/music-wrapper.cc index 00eb2f11cd..5dbc265b00 100644 --- a/lily/music-wrapper.cc +++ b/lily/music-wrapper.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/music.cc b/lily/music.cc index 401e9efafb..7a38d7af41 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -83,7 +83,7 @@ Music::Music (Music const &m) length_callback_ = m.length_callback_; start_callback_ = m.start_callback_; - /// why? + /// why? set_spot (*m.origin ()); } @@ -130,7 +130,6 @@ print_alist (SCM a, SCM port) } } - Pitch Music::generic_to_relative_octave (Pitch last) { @@ -143,16 +142,16 @@ Music::generic_to_relative_octave (Pitch last) SCM check = get_property ("absolute-octave"); if (scm_is_number (check) - && new_pit.get_octave () != scm_to_int (check)) - { - Pitch expected_pit (scm_to_int (check), - new_pit.get_notename (), - new_pit.get_alteration ()); - origin ()->warning (_f ("octave check failed; expected \"%s\", found: \"%s\"", - expected_pit.to_string (), - new_pit.to_string ())); - new_pit = expected_pit; - } + && new_pit.get_octave () != scm_to_int (check)) + { + Pitch expected_pit (scm_to_int (check), + new_pit.get_notename (), + new_pit.get_alteration ()); + origin ()->warning (_f ("octave check failed; expected \"%s\", found: \"%s\"", + expected_pit.to_string (), + new_pit.to_string ())); + new_pit = expected_pit; + } set_property ("pitch", new_pit.smobbed_copy ()); @@ -162,6 +161,7 @@ Music::generic_to_relative_octave (Pitch last) if (Music *m = unsmob_music (elt)) last = m->to_relative_octave (last); + (void) music_list_to_relative (get_property ("articulations"), last, true); last = music_list_to_relative (get_property ("elements"), last, false); return last; } @@ -173,7 +173,7 @@ Music::to_relative_octave (Pitch last) if (ly_is_procedure (callback)) { Pitch *p = unsmob_pitch (scm_call_2 (callback, self_scm (), - last.smobbed_copy ())); + last.smobbed_copy ())); return *p; } @@ -192,11 +192,11 @@ Music::compress (Moment factor) Duration *d = unsmob_duration (get_property ("duration")); if (d) set_property ("duration", - d->compressed (factor.main_part_).smobbed_copy ()); + d->compressed (factor.main_part_).smobbed_copy ()); } /* - This mutates alist. Hence, make sure that it is not shared + This mutates alist. Hence, make sure that it is not shared */ void transpose_mutable (SCM alist, Pitch delta) @@ -209,38 +209,39 @@ transpose_mutable (SCM alist, Pitch delta) SCM new_val = val; if (Pitch *p = unsmob_pitch (val)) - { - Pitch transposed = p->transposed (delta); - if (transposed.get_alteration ().abs () > Rational (1,1)) - { - string delta_str; - if (delta.get_alteration ().abs () > Rational (1, 1)) - delta_str = (delta.normalized ().to_string () - + " " + _ ("(normalized pitch)")); - else - delta_str = delta.to_string (); - - warning (_f ("Transposing %s by %s makes alteration larger than double", - p->to_string (), - delta_str)); - transposed = transposed.normalized (); - } - - new_val = transposed.smobbed_copy (); - } + { + Pitch transposed = p->transposed (delta); + if (transposed.get_alteration ().abs () > Rational (1, 1)) + { + string delta_str; + if (delta.get_alteration ().abs () > Rational (1, 1)) + delta_str = (delta.normalized ().to_string () + + " " + _ ("(normalized pitch)")); + else + delta_str = delta.to_string (); + + warning (_f ("Transposing %s by %s makes alteration larger than double", + p->to_string (), + delta_str)); + transposed = transposed.normalized (); + } + + new_val = transposed.smobbed_copy (); + } else if (prop == ly_symbol2scm ("element")) - { - if (Music *m = unsmob_music (val)) - m->transpose (delta); - } - else if (prop == ly_symbol2scm ("elements")) - transpose_music_list (val, delta); - else if (prop == ly_symbol2scm ("pitch-alist") && - scm_is_pair (val)) - new_val = ly_transpose_key_alist (val, delta.smobbed_copy ()); + { + if (Music *m = unsmob_music (val)) + m->transpose (delta); + } + else if (prop == ly_symbol2scm ("elements") + || prop == ly_symbol2scm ("articulations")) + transpose_music_list (val, delta); + else if (prop == ly_symbol2scm ("pitch-alist") + && scm_is_pair (val)) + new_val = ly_transpose_key_alist (val, delta.smobbed_copy ()); if (val != new_val) - scm_set_cdr_x (entry , new_val); + scm_set_cdr_x (entry, new_val); } } @@ -270,7 +271,7 @@ Music::origin () const ES TODO: This method should probably be reworked or junked. */ Stream_event * -Music::to_event () const +Music::to_event (Context *c) const { SCM class_name = ly_camel_case_2_lisp_identifier (get_property ("name")); @@ -278,7 +279,8 @@ Music::to_event () const if (!internal_is_music_type (class_name)) programming_error ("Not a music type"); - Stream_event *e = new Stream_event (class_name, mutable_property_alist_); + Stream_event *e = new Stream_event (c->make_event_class (class_name), + mutable_property_alist_); Moment length = get_length (); if (length.to_bool ()) e->set_property ("length", length.smobbed_copy ()); @@ -289,11 +291,10 @@ Music::to_event () const { SCM art_ev = SCM_EOL; for (; scm_is_pair (art_mus); art_mus = scm_cdr (art_mus)) - { - Music *m = unsmob_music (scm_car (art_mus)); - SCM ev = m ? m->to_event ()->unprotect () : scm_car (art_mus); - art_ev = scm_cons (ev, art_ev); - } + { + Music *m = unsmob_music (scm_car (art_mus)); + art_ev = scm_cons (m->to_event (c)->unprotect (), art_ev); + } e->set_property ("articulations", scm_reverse_x (art_ev, SCM_EOL)); } @@ -309,7 +310,7 @@ Music::to_event () const void Music::send_to_context (Context *c) { - Stream_event *ev = to_event (); + Stream_event *ev = to_event (c); c->event_source ()->broadcast (ev); ev->unprotect (); } diff --git a/lily/nested-property.cc b/lily/nested-property.cc index db897d3fd8..9c3cc73387 100644 --- a/lily/nested-property.cc +++ b/lily/nested-property.cc @@ -1,7 +1,6 @@ #include "context.hh" #include "grob.hh" - /* Drop symbol from the list alist..alist_end. */ @@ -14,10 +13,10 @@ evict_from_alist (SCM symbol, SCM alist, SCM alist_end) while (alist != alist_end) { if (ly_is_equal (scm_caar (alist), symbol)) - { - alist = scm_cdr (alist); - break; - } + { + alist = scm_cdr (alist); + break; + } *tail = scm_cons (scm_car (alist), SCM_EOL); tail = SCM_CDRLOC (*tail); @@ -61,9 +60,7 @@ nested_property_alist (SCM alist, SCM prop_path, SCM value) SCM nested_property_revert_alist (SCM alist, SCM prop_path) { - int copy_count = 0; - bool drop = false; - assert(scm_is_pair (prop_path)); + assert (scm_is_pair (prop_path)); SCM wanted_sym = scm_car (prop_path); @@ -73,62 +70,37 @@ nested_property_revert_alist (SCM alist, SCM prop_path) { SCM sub_sym = scm_caar (s); SCM old_val = scm_cdar (s); - drop = false; if (sub_sym == wanted_sym) - { - if (scm_is_pair (scm_cdr (prop_path))) - { - SCM new_val = nested_property_revert_alist (old_val, scm_cdr (prop_path)); - - /* nothing changed: drop newly constructed list. */ - if (old_val == new_val) - return alist; - - *tail = scm_acons (sub_sym, new_val, SCM_EOL); - tail = SCM_CDRLOC(*tail); - *tail = scm_cdr (s); - return new_list; - } - else - { - /* old value should be dropped only if we have another copy of it in the alist */ - copy_count++; - /* - Only drop the first instance found. - the overridden value is always the first - if this was the only copy, we will return - the original list anyways so it is not relevant - if we drop this pair - */ - if (copy_count == 1) - drop = true; - } - /* we now iterate over every item */ - } - /* - Make a new list with every item - except for the eventual dropped one - */ - if (!drop) { - *tail = scm_acons (sub_sym, old_val, SCM_EOL); - tail = SCM_CDRLOC (*tail); + if (scm_is_pair (scm_cdr (prop_path))) + { + SCM new_val = nested_property_revert_alist (old_val, scm_cdr (prop_path)); + + /* nothing changed: drop newly constructed list. */ + if (old_val == new_val) + return alist; + + *tail = scm_acons (sub_sym, new_val, SCM_EOL); + tail = SCM_CDRLOC (*tail); + } + else + { + /* old value is dropped. */ + } + + *tail = scm_cdr (s); + return new_list; } + + *tail = scm_acons (sub_sym, old_val, SCM_EOL); + tail = SCM_CDRLOC (*tail); } - /* - If we find more than one copy of the property - push the new list, else it means we are trying to - revert the original value - */ - if (copy_count > 1) - return new_list; - else - return alist; + /* Wanted symbol not found: drop newly constructed list. */ + return alist; } - void set_nested_property (Grob *me, SCM big_to_small, SCM value) { @@ -138,4 +110,3 @@ set_nested_property (Grob *me, SCM big_to_small, SCM value) me->set_property (scm_car (big_to_small), alist); } - diff --git a/lily/new-dynamic-engraver.cc b/lily/new-dynamic-engraver.cc index e225d97f1f..749f9aaa16 100644 --- a/lily/new-dynamic-engraver.cc +++ b/lily/new-dynamic-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2008--2011 Han-Wen Nienhuys + Copyright (C) 2008--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -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 (); @@ -44,7 +45,7 @@ protected: private: SCM get_property_setting (Stream_event *evt, char const *evprop, - char const *ctxprop); + char const *ctxprop); string get_spanner_type (Stream_event *ev); Drul_array accepted_spanevents_drul_; @@ -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,10 +85,26 @@ 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, - char const *ctxprop) + char const *evprop, + char const *ctxprop) { SCM spanner_type = evt->get_property (evprop); if (spanner_type == SCM_EOL) @@ -98,15 +117,15 @@ New_dynamic_engraver::process_music () { if (current_spanner_ && (accepted_spanevents_drul_[STOP] - || script_event_ - || accepted_spanevents_drul_[START])) + || script_event_ + || accepted_spanevents_drul_[START])) { Stream_event *ender = accepted_spanevents_drul_[STOP]; if (!ender) - ender = script_event_; + ender = script_event_; if (!ender) - ender = accepted_spanevents_drul_[START]; + ender = accepted_spanevents_drul_[START]; finished_spanner_ = current_spanner_; announce_end_grob (finished_spanner_, ender->self_scm ()); @@ -120,53 +139,66 @@ New_dynamic_engraver::process_music () string start_type = get_spanner_type (current_span_event_); SCM cresc_type = get_property_setting (current_span_event_, "span-type", - (start_type + "Spanner").c_str ()); + (start_type + "Spanner").c_str ()); if (cresc_type == ly_symbol2scm ("text")) - { - current_spanner_ - = make_spanner ("DynamicTextSpanner", - accepted_spanevents_drul_[START]->self_scm ()); - - SCM text = get_property_setting (current_span_event_, "span-text", - (start_type + "Text").c_str ()); - if (Text_interface::is_markup (text)) - current_spanner_->set_property ("text", text); - } + { + current_spanner_ + = make_spanner ("DynamicTextSpanner", + accepted_spanevents_drul_[START]->self_scm ()); + + SCM text = get_property_setting (current_span_event_, "span-text", + (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 - { - if (cresc_type != ly_symbol2scm ("hairpin")) - { - string as_string = ly_scm_write_string (cresc_type); - current_span_event_ - ->origin()->warning (_f ("unknown crescendo style: %s\ndefaulting to hairpin.", as_string.c_str())); - } - current_spanner_ = make_spanner ("Hairpin", - current_span_event_->self_scm ()); - } + { + if (cresc_type != ly_symbol2scm ("hairpin")) + { + string as_string = ly_scm_write_string (cresc_type); + current_span_event_ + ->origin ()->warning (_f ("unknown crescendo style: %s\ndefaulting to hairpin.", as_string.c_str ())); + } + 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_)) - Pointer_group_interface::add_grob (finished_spanner_, - ly_symbol2scm ("adjacent-spanners"), - current_spanner_); - if (Hairpin::has_interface (current_spanner_)) - Pointer_group_interface::add_grob (current_spanner_, - ly_symbol2scm ("adjacent-spanners"), - finished_spanner_); - } + { + if (Hairpin::has_interface (finished_spanner_)) + Pointer_group_interface::add_grob (finished_spanner_, + ly_symbol2scm ("adjacent-spanners"), + current_spanner_); + if (Hairpin::has_interface (current_spanner_)) + Pointer_group_interface::add_grob (current_spanner_, + ly_symbol2scm ("adjacent-spanners"), + finished_spanner_); + } } if (script_event_) { script_ = make_item ("DynamicText", script_event_->self_scm ()); script_->set_property ("text", - script_event_->get_property ("text")); + script_event_->get_property ("text")); if (finished_spanner_) - finished_spanner_->set_bound (RIGHT, script_); + finished_spanner_->set_bound (RIGHT, script_); if (current_spanner_) - current_spanner_->set_bound (LEFT, script_); + current_spanner_->set_bound (LEFT, script_); } } @@ -175,17 +207,18 @@ New_dynamic_engraver::stop_translation_timestep () { if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT)) finished_spanner_ - ->set_bound (RIGHT, - unsmob_grob (get_property ("currentMusicalColumn"))); + ->set_bound (RIGHT, + unsmob_grob (get_property ("currentMusicalColumn"))); if (current_spanner_ && !current_spanner_->get_bound (LEFT)) current_spanner_ - ->set_bound (LEFT, - unsmob_grob (get_property ("currentMusicalColumn"))); + ->set_bound (LEFT, + unsmob_grob (get_property ("currentMusicalColumn"))); script_ = 0; script_event_ = 0; accepted_spanevents_drul_.set (0, 0); finished_spanner_ = 0; + end_new_spanner_ = false; } void @@ -197,9 +230,9 @@ New_dynamic_engraver::finalize () if (current_spanner_) { current_span_event_ - ->origin ()->warning (_f ("unterminated %s", - get_spanner_type (current_span_event_) - .c_str ())); + ->origin ()->warning (_f ("unterminated %s", + get_spanner_type (current_span_event_) + .c_str ())); current_spanner_->suicide (); current_spanner_ = 0; } @@ -209,7 +242,7 @@ string New_dynamic_engraver::get_spanner_type (Stream_event *ev) { string type; - SCM start_sym = ev->get_property ("class"); + SCM start_sym = scm_car (ev->get_property ("class")); if (start_sym == ly_symbol2scm ("decrescendo-event")) type = "decrescendo"; @@ -227,18 +260,22 @@ New_dynamic_engraver::acknowledge_note_column (Grob_info info) if (script_ && !script_->get_parent (X_AXIS)) { extract_grob_set (info.grob (), "note-heads", heads); + Grob *stem = unsmob_grob (info.grob ()->get_object ("stem")); /* - Spacing constraints may require dynamics to be aligned on rests, - so check for a rest if this note column has no note heads. + Spacing constraints may require dynamics to be aligned on rests, + so check for a rest if this note column has no note heads. */ Grob *x_parent = (heads.size () - ? heads[0] - : unsmob_grob (info.grob ()->get_object ("rest"))); + ? heads[0] + : unsmob_grob (info.grob ()->get_object ("rest"))); if (x_parent) - { - script_->set_parent (x_parent, X_AXIS); - Self_alignment_interface::set_center_parent (script_, X_AXIS); - } + { + script_->set_parent (x_parent, X_AXIS); + Self_alignment_interface::set_center_parent (script_, X_AXIS); + Self_alignment_interface::avoid_x_collisions (script_); + } + if (stem) + Pointer_group_interface::add_grob (script_, ly_symbol2scm ("potential-X-colliding-grobs"), stem); } if (current_spanner_ && !current_spanner_->get_bound (LEFT)) @@ -249,21 +286,21 @@ New_dynamic_engraver::acknowledge_note_column (Grob_info info) ADD_ACKNOWLEDGER (New_dynamic_engraver, note_column); ADD_TRANSLATOR (New_dynamic_engraver, - /* doc */ - "Create hairpins, dynamic texts and dynamic text spanners.", - - /* create */ - "DynamicTextSpanner " - "DynamicText " - "Hairpin ", - - /* read */ - "crescendoSpanner " - "crescendoText " - "currentMusicalColumn " - "decrescendoSpanner " - "decrescendoText ", - - /* write */ - "" - ); + /* doc */ + "Create hairpins, dynamic texts and dynamic text spanners.", + + /* create */ + "DynamicTextSpanner " + "DynamicText " + "Hairpin ", + + /* read */ + "crescendoSpanner " + "crescendoText " + "currentMusicalColumn " + "decrescendoSpanner " + "decrescendoText ", + + /* write */ + "" + ); diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index db99dede95..574591a23e 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,7 +31,6 @@ #include "translator.icc" - struct Finger_tuple { Grob *head_; @@ -51,7 +50,7 @@ struct Finger_tuple }; bool -operator< (Finger_tuple const &a, Finger_tuple const &b) +operator < (Finger_tuple const &a, Finger_tuple const &b) { return a.position_ < b.position_; } @@ -64,6 +63,7 @@ class New_fingering_engraver : public Engraver vector string_numbers_; vector heads_; + vector accidentals_; Grob *stem_; void position_all (); @@ -72,15 +72,22 @@ public: protected: void stop_translation_timestep (); DECLARE_ACKNOWLEDGER (rhythmic_head); + DECLARE_ACKNOWLEDGER (inline_accidental); DECLARE_ACKNOWLEDGER (stem); void add_fingering (Grob *, SCM, - vector *, - Stream_event *, Stream_event *); + vector *, + Stream_event *, Stream_event *); void add_script (Grob *, Stream_event *, Stream_event *); void add_string (Grob *, Stream_event *, Stream_event *); void position_scripts (SCM orientations, vector *); }; +void +New_fingering_engraver::acknowledge_inline_accidental (Grob_info inf) +{ + accidentals_.push_back (inf.grob ()); +} + void New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) { @@ -95,32 +102,40 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) Stream_event *ev = unsmob_stream_event (scm_car (s)); if (!ev) - continue; + continue; if (ev->in_event_class ("fingering-event")) - add_fingering (inf.grob (), - ly_symbol2scm ("Fingering"), - &fingerings_, - ev, note_ev); + add_fingering (inf.grob (), + ly_symbol2scm ("Fingering"), + &fingerings_, + ev, note_ev); else if (ev->in_event_class ("text-script-event")) - ev->origin ()->warning (_ ("cannot add text scripts to individual note heads")); + ev->origin ()->warning (_ ("cannot add text scripts to individual note heads")); else if (ev->in_event_class ("script-event")) - add_script (inf.grob (), ev, note_ev); + add_script (inf.grob (), ev, note_ev); else if (ev->in_event_class ("string-number-event")) - add_fingering (inf.grob (), - ly_symbol2scm ("StringNumber"), &string_numbers_, - ev, note_ev); + { + // String numbers are used in calculating harmonics even + // when we don't want them displayed. So don't make space + // for them if 'stencil is #f + Grob *g = make_item ("StringNumber", ev->self_scm ()); + if (g->get_property ("stencil") != SCM_BOOL_F) + add_fingering (inf.grob (), + ly_symbol2scm ("StringNumber"), &string_numbers_, + ev, note_ev); + g->suicide (); // Kill grob created to check stencil + } else if (ev->in_event_class ("stroke-finger-event")) - add_fingering (inf.grob (), - ly_symbol2scm ("StrokeFinger"), &stroke_fingerings_, - ev, note_ev); + add_fingering (inf.grob (), + ly_symbol2scm ("StrokeFinger"), &stroke_fingerings_, + ev, note_ev); else if (ev->in_event_class ("harmonic-event")) - { - inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic")); - Grob *d = unsmob_grob (inf.grob ()->get_object ("dot")); - if (d && !to_boolean (get_property ("harmonicDots"))) - d->suicide (); - } + { + inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic")); + Grob *d = unsmob_grob (inf.grob ()->get_object ("dot")); + if (d && !to_boolean (get_property ("harmonicDots"))) + d->suicide (); + } } heads_.push_back (inf.grob ()); @@ -134,14 +149,14 @@ New_fingering_engraver::acknowledge_stem (Grob_info inf) void New_fingering_engraver::add_script (Grob *head, - Stream_event *event, - Stream_event * /* note */) + Stream_event *event, + Stream_event * /* note */) { Finger_tuple ft; Grob *g = make_item ("Script", event->self_scm ()); make_script_from_event (g, context (), - event->get_property ("articulation-type"), 0); + event->get_property ("articulation-type"), 0); ft.script_ = g; ft.script_->set_parent (head, X_AXIS); @@ -154,16 +169,16 @@ New_fingering_engraver::add_script (Grob *head, void New_fingering_engraver::add_fingering (Grob *head, - SCM grob_sym, - vector *tuple_vector, - Stream_event *event, - Stream_event *hevent) + SCM grob_sym, + vector *tuple_vector, + Stream_event *event, + Stream_event *hevent) { Finger_tuple ft; ft.script_ = internal_make_item (grob_sym, event->self_scm (), - ly_symbol2string (grob_sym).c_str (), - __FILE__, __LINE__, __FUNCTION__); + ly_symbol2string (grob_sym).c_str (), + __FILE__, __LINE__, __FUNCTION__); Side_position_interface::add_support (ft.script_, head); @@ -176,11 +191,15 @@ New_fingering_engraver::add_fingering (Grob *head, void New_fingering_engraver::position_scripts (SCM orientations, - vector *scripts) + vector *scripts) { for (vsize i = 0; i < scripts->size (); i++) if (stem_ && to_boolean (scripts->at (i).script_->get_property ("add-stem-support"))) - Side_position_interface::add_support (scripts->at (i).script_, stem_); + { + Side_position_interface::add_support (scripts->at (i).script_, stem_); + if (Grob *flag = unsmob_grob (stem_->get_object ("flag"))) + Side_position_interface::add_support (scripts->at (i).script_, flag); + } /* This is not extremely elegant, but we have to do a little @@ -203,10 +222,10 @@ New_fingering_engraver::position_scripts (SCM orientations, { SCM d = (*scripts)[i].finger_event_->get_property ("direction"); if (to_dir (d)) - { - ((to_dir (d) == UP) ? up : down).push_back ((*scripts)[i]); - scripts->erase (scripts->begin () + i); - } + { + ((to_dir (d) == UP) ? up : down).push_back ((*scripts)[i]); + scripts->erase (scripts->begin () + i); + } } vector_sort (*scripts, less ()); @@ -219,16 +238,16 @@ New_fingering_engraver::position_scripts (SCM orientations, if (left_p || right_p) { if (up_p && !up.size () && scripts->size ()) - { - up.push_back (scripts->back ()); - scripts->pop_back (); - } + { + up.push_back (scripts->back ()); + scripts->pop_back (); + } if (down_p && !down.size () && scripts->size ()) - { - down.push_back ((*scripts)[0]); - scripts->erase (scripts->begin ()); - } + { + down.push_back ((*scripts)[0]); + scripts->erase (scripts->begin ()); + } horiz.insert (horiz.end (), scripts->begin (), scripts->end ()); } @@ -246,10 +265,10 @@ New_fingering_engraver::position_scripts (SCM orientations, else { if (!down_p) - { - warning (_ ("no placement found for fingerings")); - warning (_ ("placing below")); - } + { + warning (_ ("no placement found for fingerings")); + warning (_ ("placing below")); + } down.insert (down.end (), scripts->begin (), scripts->end ()); scripts->clear (); } @@ -260,14 +279,14 @@ New_fingering_engraver::position_scripts (SCM orientations, Grob *f = ft.script_; f->set_parent (ft.head_, X_AXIS); f->set_parent (ft.head_, Y_AXIS); - f->set_property ("avoid-slur", SCM_BOOL_F); + f->set_property ("avoid-slur", ly_symbol2scm ("inside")); if (hordir == LEFT - && unsmob_grob (ft.head_->get_object ("accidental-grob"))) - Side_position_interface::add_support (f, - unsmob_grob (ft.head_->get_object ("accidental-grob"))); + && unsmob_grob (ft.head_->get_object ("accidental-grob"))) + Side_position_interface::add_support (f, + unsmob_grob (ft.head_->get_object ("accidental-grob"))); else if (unsmob_grob (ft.head_->get_object ("dot"))) - Side_position_interface::add_support (f, - unsmob_grob (ft.head_->get_object ("dot"))); + Side_position_interface::add_support (f, + unsmob_grob (ft.head_->get_object ("dot"))); Self_alignment_interface::set_align_self (f, Y_AXIS); Self_alignment_interface::set_center_parent (f, Y_AXIS); @@ -276,27 +295,25 @@ New_fingering_engraver::position_scripts (SCM orientations, f->set_property ("direction", scm_from_int (hordir)); } - Direction d = DOWN; Drul_array< vector > vertical (down, up); - do + for (DOWN_and_UP (d)) { for (vsize i = 0; i < vertical[d].size (); i++) - { - Finger_tuple ft = vertical[d][i]; - Grob *f = ft.script_; - int finger_prio = robust_scm2int (f->get_property ("script-priority"), 200); - f->set_parent (ft.head_, X_AXIS); - f->set_property ("script-priority", - scm_from_int (finger_prio + d * ft.position_)); - - Self_alignment_interface::set_align_self (f, X_AXIS); - Self_alignment_interface::set_center_parent (f, X_AXIS); - Side_position_interface::set_axis (f, Y_AXIS); - - f->set_property ("direction", scm_from_int (d)); - } + { + Finger_tuple ft = vertical[d][i]; + Grob *f = ft.script_; + int finger_prio = robust_scm2int (f->get_property ("script-priority"), 200); + f->set_parent (ft.head_, X_AXIS); + f->set_property ("script-priority", + scm_from_int (finger_prio + d * ft.position_)); + + Self_alignment_interface::set_align_self (f, X_AXIS); + Self_alignment_interface::set_center_parent (f, X_AXIS); + Side_position_interface::set_axis (f, Y_AXIS); + + f->set_property ("direction", scm_from_int (d)); + } } - while (flip (&d) != DOWN); } void @@ -313,21 +330,21 @@ New_fingering_engraver::position_all () if (fingerings_.size ()) { position_scripts (get_property ("fingeringOrientations"), - &fingerings_); + &fingerings_); fingerings_.clear (); } if (string_numbers_.size ()) { position_scripts (get_property ("stringNumberOrientations"), - &string_numbers_); + &string_numbers_); string_numbers_.clear (); } if (stroke_fingerings_.size ()) { position_scripts (get_property ("strokeFingerOrientations"), - &stroke_fingerings_); + &stroke_fingerings_); stroke_fingerings_.clear (); } @@ -335,14 +352,18 @@ New_fingering_engraver::position_all () { Grob *script = articulations_[i].script_; + for (vsize j = 0; j < accidentals_.size (); j++) + Side_position_interface::add_support (script, accidentals_[j]); + + accidentals_.resize (0); for (vsize j = heads_.size (); j--;) - Side_position_interface::add_support (script, heads_[j]); + Side_position_interface::add_support (script, heads_[j]); if (stem_ && to_dir (script->get_property ("side-relative-direction"))) - script->set_object ("direction-source", stem_->self_scm ()); + script->set_object ("direction-source", stem_->self_scm ()); if (stem_ && to_boolean (script->get_property ("add-stem-support"))) - Side_position_interface::add_support (script, stem_); + Side_position_interface::add_support (script, stem_); } articulations_.clear (); } @@ -353,26 +374,27 @@ New_fingering_engraver::New_fingering_engraver () } ADD_ACKNOWLEDGER (New_fingering_engraver, rhythmic_head); +ADD_ACKNOWLEDGER (New_fingering_engraver, inline_accidental); ADD_ACKNOWLEDGER (New_fingering_engraver, stem); ADD_TRANSLATOR (New_fingering_engraver, - /* doc */ - "Create fingering scripts for notes in a new chord. This" - " engraver is ill-named, since it also takes care of" - " articulations and harmonic note heads.", - - /* create */ - "Fingering " - "StringNumber " - "StrokeFinger " - "Script ", - - /* read */ - "fingeringOrientations " - "harmonicDots " - "strokeFingerOrientations " - "stringNumberOrientations ", - - /* write */ - "" - ); + /* doc */ + "Create fingering scripts for notes in a new chord. This" + " engraver is ill-named, since it also takes care of" + " articulations and harmonic note heads.", + + /* create */ + "Fingering " + "StringNumber " + "StrokeFinger " + "Script ", + + /* read */ + "fingeringOrientations " + "harmonicDots " + "strokeFingerOrientations " + "stringNumberOrientations ", + + /* write */ + "" + ); diff --git a/lily/note-collision.cc b/lily/note-collision.cc index b0049c69ea..3ab245ca5e 100644 --- a/lily/note-collision.cc +++ b/lily/note-collision.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,12 +33,11 @@ #include "stem.hh" #include "warn.hh" - void check_meshing_chords (Grob *me, - Drul_array > *offsets, - Drul_array > const &extents, - Drul_array > const &clash_groups) + Drul_array > *offsets, + Drul_array > const &extents, + Drul_array > const &clash_groups) { if (!extents[UP].size () || !extents[DOWN].size ()) @@ -51,26 +50,51 @@ check_meshing_chords (Grob *me, if (!Note_column::get_stem (clash_up) || !Note_column::get_stem (clash_down)) return; - Drul_array stems (Note_column::get_stem (clash_down), - Note_column::get_stem (clash_up)); + Drul_array stems (Note_column::get_stem (clash_down), + Note_column::get_stem (clash_up)); Grob *head_up = Note_column::first_head (clash_up); Grob *head_down = Note_column::first_head (clash_down); - vector ups = Stem::note_head_positions (Note_column::get_stem (clash_up)); - vector dps = Stem::note_head_positions (Note_column::get_stem (clash_down)); + Interval extent_up = head_up->extent (head_up, X_AXIS); + Interval extent_down = head_down->extent (head_down, X_AXIS); + + /* Staff-positions of all noteheads on each stem */ + vector ups = Stem::note_head_positions (stems[UP]); + vector dps = Stem::note_head_positions (stems[DOWN]); /* Too far apart to collide. */ if (ups[0] > dps.back () + 1) return; + /* If the chords just 'touch' their extreme noteheads, + then we can align their stems. + */ + bool touch = false; + if (ups[0] >= dps.back () + && (dps.size () < 2 || ups[0] >= dps[dps.size () - 2] + 2) + && (ups.size () < 2 || ups[1] >= dps.back () + 2)) + touch = true; + + /* Filter out the 'o's in this configuration, since they're no + * part in the collision. + * + * | + * x|o + * x|o + * x + * + */ + ups = Stem::note_head_positions (stems[UP], true); + dps = Stem::note_head_positions (stems[DOWN], true); + /* Merge heads if the notes lie the same line, or if the "stem-up-note" is above the "stem-down-note". */ bool merge_possible = (ups[0] >= dps[0]) && (ups.back () >= dps.back ()); /* Do not merge notes typeset in different style. */ if (!ly_is_equal (head_up->get_property ("style"), - head_down->get_property ("style"))) + head_down->get_property ("style"))) merge_possible = false; int up_ball_type = Rhythmic_head::duration_log (head_up); @@ -95,97 +119,95 @@ check_meshing_chords (Grob *me, them indistinguishable. */ if (merge_possible && ((Stem::duration_log (stems[UP]) == 1 - && Stem::duration_log (stems[DOWN]) == 2) - || (Stem::duration_log (stems[UP]) == 2 - && Stem::duration_log (stems[DOWN]) == 1))) + && Stem::duration_log (stems[DOWN]) == 2) + || (Stem::duration_log (stems[UP]) == 2 + && Stem::duration_log (stems[DOWN]) == 1))) merge_possible = false; /* - this case (distant half collide), - - | - x | - | x - | - - the noteheads may be closer than this case (close half collide) - - | - | - x - x - | - | - - */ - - /* TODO: filter out the 'o's in this configuration, since they're no - part in the collision. - - | - x|o - x|o - x - - */ + * this case (distant half collide), + * + * | + * x | + * | x + * | + * + * the noteheads may be closer than this case (close half collide) + * + * | + * | + * x + * x + * | + * | + * + */ bool close_half_collide = false; bool distant_half_collide = false; bool full_collide = false; - for (vsize i = 0, j = 0; i < ups.size () && j < dps.size (); ) + for (vsize i = 0, j = 0; i < ups.size () && j < dps.size ();) { if (abs (ups[i] - dps[j]) == 1) - { - merge_possible = false; - if (ups[i] > dps[j]) - close_half_collide = true; - else - distant_half_collide = true; - } + { + merge_possible = false; + if (ups[i] > dps[j]) + close_half_collide = true; + else + distant_half_collide = true; + } else if (ups[i] == dps[j]) - full_collide = true; + full_collide = true; else if (ups[i] > dps[0] && ups[i] < dps.back ()) - merge_possible = false; + merge_possible = false; else if (dps[j] > ups[0] && dps[j] < ups.back ()) - merge_possible = false; + merge_possible = false; if (ups[i] < dps[j]) - i++; + i++; else if (ups[i] > dps[j]) - j++; + j++; else - { - i++; - j++; - } + { + i++; + j++; + } } full_collide = full_collide || (close_half_collide - && distant_half_collide); - - Real shift_amount = 1; - - bool touch = (ups[0] >= dps.back ()); - /* As a special case, if the topmost part of the downstem chord is a second, - the top note of which is the same pitch as the lowest upstem note, they - shouldn't count as touching. + && distant_half_collide) + || ( distant_half_collide // like full_ for wholes and longer + && (up_ball_type <= 0 || down_ball_type <= 0)); + + /* Determine which chord goes on the left, and which goes right. + Up-stem usually goes on the right, but if chords just 'touch' we can put + both stems on a common vertical line. In the presense of collisions, + right hand heads may obscure dots, so dotted heads to go the right. */ - if (dps.back () == ups[0] && dps.size () > 1 && dps[dps.size() - 2] == ups[0] - 1) - touch = false; - - if (touch) - shift_amount *= -1; - - /* For full collisions, the right hand head may obscure dots, so - make sure the dotted heads go to the right. */ + Real shift_amount = 1; bool stem_to_stem = false; - if (full_collide) + if ((full_collide + || ((close_half_collide || distant_half_collide) + && to_boolean (me->get_property ("prefer-dotted-right")))) + && Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down)) { - if (Rhythmic_head::dot_count (head_up) > Rhythmic_head::dot_count (head_down)) - shift_amount = 1; - else if (Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down)) - stem_to_stem = true; + shift_amount = -1; + if (!touch) + // remember to leave clearance between stems + stem_to_stem = true; + } + else if (touch) + { + // Up-stem note on a line has a raised dot, so no risk of collision + Grob *staff = Staff_symbol_referencer::get_staff_symbol (me); + if ((full_collide + || (!Staff_symbol_referencer::on_line (staff, ups[0]) + && to_boolean (me->get_property ("prefer-dotted-right")))) + && Rhythmic_head::dot_count (head_up) > Rhythmic_head::dot_count (head_down)) + touch = false; + else + shift_amount = -1; } /* The solfa is a triangle, which is inverted depending on stem @@ -198,7 +220,6 @@ check_meshing_chords (Grob *me, && (up_style == ly_symbol2scm ("fa") || up_style == ly_symbol2scm ("faThin")) && (down_style == ly_symbol2scm ("fa") || down_style == ly_symbol2scm ("faThin"))) { - Interval uphead_size = head_up->extent (head_up, Y_AXIS); Offset att = Offset (0.0, -1.0); head_up->set_property ("stem-attachment", ly_offset2scm (att)); head_up->set_property ("transparent", SCM_BOOL_T); @@ -209,65 +230,66 @@ check_meshing_chords (Grob *me, shift_amount = 0; /* If possible, don't wipe any heads. Else, wipe shortest head, - or head with smallest amount of dots. Note: when merging - different heads, dots on the smaller one disappear. */ + or head with smallest amount of dots. Note: when merging + different heads, dots on the smaller one disappear. */ Grob *wipe_ball = 0; Grob *dot_wipe_head = head_up; if (up_ball_type == down_ball_type) - { - if (Rhythmic_head::dot_count (head_down) < Rhythmic_head::dot_count (head_up)) - { - wipe_ball = head_down; - dot_wipe_head = head_down; - } - else if (Rhythmic_head::dot_count (head_down) > Rhythmic_head::dot_count (head_up)) - { - dot_wipe_head = head_up; - wipe_ball = head_up; - } - else - dot_wipe_head = head_up; - } + { + if (Rhythmic_head::dot_count (head_down) < Rhythmic_head::dot_count (head_up)) + { + wipe_ball = head_down; + dot_wipe_head = head_down; + } + else if (Rhythmic_head::dot_count (head_down) > Rhythmic_head::dot_count (head_up)) + { + dot_wipe_head = head_up; + wipe_ball = head_up; + } + else + dot_wipe_head = head_up; + } else if (down_ball_type > up_ball_type) - { - wipe_ball = head_down; - dot_wipe_head = head_down; - } + { + wipe_ball = head_down; + dot_wipe_head = head_down; + } else if (down_ball_type < up_ball_type) - { - wipe_ball = head_up; - dot_wipe_head = head_up; - /* - If upper head is eighth note or shorter, and lower head is half note, - shift by the difference between the open and filled note head widths, - otherwise upper stem will be misaligned slightly. - */ - if (Stem::duration_log (stems[DOWN]) == 1 - && Stem::duration_log (stems[UP]) >= 3) - shift_amount = (1 - head_up->extent (head_up, X_AXIS).length () / - head_down->extent (head_down, X_AXIS).length ()) * 0.5; - } + { + wipe_ball = head_up; + dot_wipe_head = head_up; + /* + If upper head is eighth note or shorter, and lower head is half note, + shift by the difference between the open and filled note head widths, + otherwise upper stem will be misaligned slightly. + */ + if (Stem::duration_log (stems[DOWN]) == 1 + && Stem::duration_log (stems[UP]) >= 3) + shift_amount = (1 - extent_up[RIGHT] / extent_down[RIGHT]) * 0.5; + } if (dot_wipe_head) - { - if (Grob *d = unsmob_grob (dot_wipe_head->get_object ("dot"))) - d->suicide (); - } + { + if (Grob *d = unsmob_grob (dot_wipe_head->get_object ("dot"))) + d->suicide (); + } if (wipe_ball && wipe_ball->is_live ()) - wipe_ball->set_property ("transparent", SCM_BOOL_T); + wipe_ball->set_property ("transparent", SCM_BOOL_T); } /* TODO: these numbers are magic; should devise a set of grob props to tune this behavior. */ else if (stem_to_stem) - shift_amount = -abs (shift_amount) * 0.65; - else if (close_half_collide && !touch) + shift_amount *= 0.65; + else if (touch) + shift_amount *= 0.5; + else if (close_half_collide) shift_amount *= 0.52; - else if (distant_half_collide && !touch) - shift_amount *= 0.4; - else if (distant_half_collide || close_half_collide || full_collide) + else if (full_collide) shift_amount *= 0.5; + else if (distant_half_collide) + shift_amount *= 0.4; /* we're meshing. */ else if (Rhythmic_head::dot_count (head_up) || Rhythmic_head::dot_count (head_down)) @@ -275,91 +297,74 @@ check_meshing_chords (Grob *me, else shift_amount *= 0.17; - /* - - */ - if (full_collide - && down_ball_type * up_ball_type == 0) - { - if (up_ball_type == 0 && down_ball_type == 1) - shift_amount *= 1.25; - else if (up_ball_type == 0 && down_ball_type == 2) - shift_amount *= 1.35; - else if (down_ball_type == 0 && up_ball_type == 1) - shift_amount *= 0.7; - else if (down_ball_type == 0 && up_ball_type == 2) - shift_amount *= 0.75; - } - - /* - * Fix issue #44: - * - * Dots from left note head collide with right note head. Only occurs - * with a close half collide, if the left note head is between - * lines and the right note head is on a line, and if right note head - * hasn't got any dots. + /* The offsets computed in this routine are multiplied, + in calc_positioning_done(), by the width of the downstem note. + The shift required to clear collisions, however, depends on the extents + of the note heads on the sides that interfere. */ + if (shift_amount < 0.0) // Down-stem shifts right. + shift_amount *= (extent_up[RIGHT] - extent_down[LEFT]) / extent_down.length (); + else // Up-stem shifts right. + shift_amount *= (extent_down[RIGHT] - extent_up[LEFT]) / extent_down.length (); + + /* If any dotted notes ended up on the left, + tell the Dot_Columnn to avoid the note heads on the right. */ - if (close_half_collide - && Rhythmic_head::dot_count (head_up) - && !Rhythmic_head::dot_count (head_down)) + if (shift_amount < -1e-6 + && Rhythmic_head::dot_count (head_up)) { - Grob *staff = Staff_symbol_referencer::get_staff_symbol (me); - if (!Staff_symbol_referencer::on_line (staff, ups[0])) - { - /* - TODO: consider junking the else body. - */ - if (to_boolean (me->get_property ("prefer-dotted-right"))) - shift_amount = 0.5; - else - { - Grob *d = unsmob_grob (head_up->get_object ("dot")); - Grob *parent = d->get_parent (X_AXIS); - if (Dot_column::has_interface (parent)) - Side_position_interface::add_support (parent, head_down); - } - } + Grob *d = unsmob_grob (head_up->get_object ("dot")); + Grob *parent = d->get_parent (X_AXIS); + if (Dot_column::has_interface (parent)) + Side_position_interface::add_support (parent, head_down); } - - /* For full or close half collisions, the right hand head may - obscure dots. Move dots to the right. */ - if (abs (shift_amount) > 1e-6 - && Rhythmic_head::dot_count (head_down) > Rhythmic_head::dot_count (head_up) - && (full_collide || close_half_collide)) + else if (Rhythmic_head::dot_count (head_down)) { Grob *d = unsmob_grob (head_down->get_object ("dot")); Grob *parent = d->get_parent (X_AXIS); - - /* - FIXME: - - | - x . o - | - - - the . is put right of o which is erroneous o force-shifted - far to the right. - */ if (Dot_column::has_interface (parent)) - { - Grob *stem = unsmob_grob (head_up->get_object ("stem")); - extract_grob_set (stem, "note-heads", heads); - for (vsize i = 0; i < heads.size (); i++) - Side_position_interface::add_support (parent, heads[i]); - } + { + Grob *stem = unsmob_grob (head_up->get_object ("stem")); + // Loop over all heads on an up-pointing-stem to see if dots + // need to clear any heads suspended on its right side. + extract_grob_set (stem, "note-heads", heads); + for (vsize i = 0; i < heads.size (); i++) + Side_position_interface::add_support (parent, heads[i]); + } } - Direction d = UP; - do + // In meshed chords with dots on the left, adjust dot direction + if (shift_amount > 1e-6 + && Rhythmic_head::dot_count (head_down)) + { + Grob *dot_down = unsmob_grob (head_down->get_object ("dot")); + Grob *col_down = dot_down->get_parent (X_AXIS); + Direction dir = UP; + if (Rhythmic_head::dot_count (head_up)) + { + Grob *dot_up = unsmob_grob (head_up->get_object ("dot")); + Grob *col_up = dot_up->get_parent (X_AXIS); + if (col_up == col_down) // let the common DotColumn arrange dots + dir = CENTER; + else // conform to the dot direction on the up-stem chord + dir = robust_scm2dir (dot_up->get_property ("direction"), UP); + } + if (dir != CENTER) + { + Grob *stem = unsmob_grob (head_down->get_object ("stem")); + extract_grob_set (stem, "note-heads", heads); + for (vsize i = 0; i < heads.size (); i++) + if (Grob *dot = unsmob_grob (heads[i]->get_object ("dot"))) + dot->set_property ("direction", scm_from_int (dir)); + } + } + + for (UP_and_DOWN (d)) { for (vsize i = 0; i < clash_groups[d].size (); i++) - (*offsets)[d][i] += d * shift_amount; + (*offsets)[d][i] += d * shift_amount; } - while ((flip (&d)) != UP); } - MAKE_SCHEME_CALLBACK (Note_collision_interface, calc_positioning_done, 1) SCM Note_collision_interface::calc_positioning_done (SCM smob) @@ -367,38 +372,35 @@ Note_collision_interface::calc_positioning_done (SCM smob) Grob *me = unsmob_grob (smob); me->set_property ("positioning-done", SCM_BOOL_T); - Drul_array > clash_groups = get_clash_groups (me); + Drul_array > clash_groups = get_clash_groups (me); - Direction d = UP; - do + for (UP_and_DOWN (d)) { - for (vsize i = clash_groups[d].size (); i--; ) - { - /* - Trigger positioning - */ - clash_groups[d][i]->extent (me, X_AXIS); - } + for (vsize i = clash_groups[d].size (); i--;) + { + /* + Trigger positioning + */ + clash_groups[d][i]->extent (me, X_AXIS); + } } - while (flip (&d) != UP); SCM autos (automatic_shift (me, clash_groups)); SCM hand (forced_shift (me)); Real wid = 0.0; - do + for (UP_and_DOWN (d)) { if (clash_groups[d].size ()) - { - Grob *h = clash_groups[d][0]; - Grob *fh = Note_column::first_head (h); - if (fh) - wid = fh->extent (h, X_AXIS).length (); - } + { + Grob *h = clash_groups[d][0]; + Grob *fh = Note_column::first_head (h); + if (fh) + wid = fh->extent (h, X_AXIS).length (); + } } - while (flip (&d) != UP); - vector done; + vector done; Real left_most = 1e6; vector amounts; @@ -410,7 +412,7 @@ Note_collision_interface::calc_positioning_done (SCM smob) done.push_back (s); amounts.push_back (amount); if (amount < left_most) - left_most = amount; + left_most = amount; } for (; scm_is_pair (autos); autos = scm_cdr (autos)) { @@ -419,12 +421,12 @@ Note_collision_interface::calc_positioning_done (SCM smob) vsize x = find (done, s) - done.begin (); if (x == VPOS || x >= done.size ()) - { - done.push_back (s); - amounts.push_back (amount); - if (amount < left_most) - left_most = amount; - } + { + done.push_back (s); + amounts.push_back (amount); + if (amount < left_most) + left_most = amount; + } } for (vsize i = 0; i < amounts.size (); i++) @@ -433,31 +435,29 @@ Note_collision_interface::calc_positioning_done (SCM smob) return SCM_BOOL_T; } -Drul_array < vector > +Drul_array < vector > Note_collision_interface::get_clash_groups (Grob *me) { - Drul_array > clash_groups; + Drul_array > clash_groups; extract_grob_set (me, "elements", elements); for (vsize i = 0; i < elements.size (); i++) { Grob *se = elements[i]; if (Note_column::has_interface (se)) - { - if (!Note_column::dir (se)) - se->programming_error ("note-column has no direction"); - else - clash_groups[Note_column::dir (se)].push_back (se); - } + { + if (!Note_column::dir (se)) + se->programming_error ("note-column has no direction"); + else + clash_groups[Note_column::dir (se)].push_back (se); + } } - Direction d = UP; - do + for (UP_and_DOWN (d)) { - vector &clashes (clash_groups[d]); + vector &clashes (clash_groups[d]); vector_sort (clashes, Note_column::shift_less); } - while ((flip (&d)) != UP); return clash_groups; } @@ -468,78 +468,72 @@ Note_collision_interface::get_clash_groups (Grob *me) */ SCM Note_collision_interface::automatic_shift (Grob *me, - Drul_array > clash_groups) + Drul_array > clash_groups) { Drul_array < vector > shifts; SCM tups = SCM_EOL; - Direction d = UP; - do + for (UP_and_DOWN (d)) { vector &shift (shifts[d]); - vector &clashes (clash_groups[d]); + vector &clashes (clash_groups[d]); for (vsize i = 0; i < clashes.size (); i++) - { - SCM sh - = clashes[i]->get_property ("horizontal-shift"); + { + SCM sh + = clashes[i]->get_property ("horizontal-shift"); - if (scm_is_number (sh)) - shift.push_back (scm_to_int (sh)); - else - shift.push_back (0); - } + if (scm_is_number (sh)) + shift.push_back (scm_to_int (sh)); + else + shift.push_back (0); + } for (vsize i = 1; i < shift.size (); i++) - { - if (shift[i - 1] == shift[i]) - { - clashes[0]->warning (_ ("ignoring too many clashing note columns")); - return tups; - } - } + { + if (shift[i - 1] == shift[i]) + { + clashes[0]->warning (_ ("ignoring too many clashing note columns")); + return tups; + } + } } - while ((flip (&d)) != UP); Drul_array > extents; Drul_array > offsets; - d = UP; - do + for (UP_and_DOWN (d)) { for (vsize i = 0; i < clash_groups[d].size (); i++) - { - Slice s (Note_column::head_positions_interval (clash_groups[d][i])); - s[LEFT]--; - s[RIGHT]++; - extents[d].push_back (s); - offsets[d].push_back (d * 0.5 * i); - } + { + Slice s (Note_column::head_positions_interval (clash_groups[d][i])); + s[LEFT]--; + s[RIGHT]++; + extents[d].push_back (s); + offsets[d].push_back (d * 0.5 * i); + } } - while ((flip (&d)) != UP); /* - do horizontal shifts of each direction - - | - x|| - x|| - x| + * do horizontal shifts of each direction + * + * | + * x|| + * x|| + * x| */ - do + for (UP_and_DOWN (d)) { for (vsize i = 1; i < clash_groups[d].size (); i++) - { - Slice prev = extents[d][i - 1]; - prev.intersect (extents[d][i]); - if (prev.length () > 0 - || (extents[-d].size () && d * (extents[d][i][-d] - extents[-d][0][d]) < 0)) - for (vsize j = i; j < clash_groups[d].size (); j++) - offsets[d][j] += d * 0.5; - } + { + Slice prev = extents[d][i - 1]; + prev.intersect (extents[d][i]); + if (prev.length () > 0 + || (extents[-d].size () && d * (extents[d][i][-d] - extents[-d][0][d]) < 0)) + for (vsize j = i; j < clash_groups[d].size (); j++) + offsets[d][j] += d * 0.5; + } } - while ((flip (&d)) != UP); - /* see input/regression/dot-up-voice-collision.ly @@ -550,11 +544,11 @@ Note_collision_interface::automatic_shift (Grob *me, Grob *dc = Note_column::dot_column (g); if (dc) - for (vsize j = i + 1; j < clash_groups[UP].size (); j++) - { - Grob *stem = Note_column::get_stem (clash_groups[UP][j]); - Side_position_interface::add_support (dc, stem); - } + for (vsize j = i + 1; j < clash_groups[UP].size (); j++) + { + Grob *stem = Note_column::get_stem (clash_groups[UP][j]); + Side_position_interface::add_support (dc, stem); + } } /* @@ -563,14 +557,13 @@ Note_collision_interface::automatic_shift (Grob *me, check_meshing_chords (me, &offsets, extents, clash_groups); - do + for (UP_and_DOWN (d)) { for (vsize i = 0; i < clash_groups[d].size (); i++) - tups = scm_cons (scm_cons (clash_groups[d][i]->self_scm (), - scm_from_double (offsets[d][i])), - tups); + tups = scm_cons (scm_cons (clash_groups[d][i]->self_scm (), + scm_from_double (offsets[d][i])), + tups); } - while (flip (&d) != UP); return tups; } @@ -587,8 +580,8 @@ Note_collision_interface::forced_shift (Grob *me) SCM force = se->get_property ("force-hshift"); if (scm_is_number (force)) - tups = scm_cons (scm_cons (se->self_scm (), force), - tups); + tups = scm_cons (scm_cons (se->self_scm (), force), + tups); } return tups; } @@ -601,15 +594,15 @@ Note_collision_interface::add_column (Grob *me, Grob *ncol) } ADD_INTERFACE (Note_collision_interface, - "An object that handles collisions between notes with" - " different stem directions and horizontal shifts. Most of" - " the interesting properties are to be set in" - " @ref{note-column-interface}: these are @code{force-hshift}" - " and @code{horizontal-shift}.", - - /* properties */ - "merge-differently-dotted " - "merge-differently-headed " - "positioning-done " - "prefer-dotted-right " - ); + "An object that handles collisions between notes with" + " different stem directions and horizontal shifts. Most of" + " the interesting properties are to be set in" + " @ref{note-column-interface}: these are @code{force-hshift}" + " and @code{horizontal-shift}.", + + /* properties */ + "merge-differently-dotted " + "merge-differently-headed " + "positioning-done " + "prefer-dotted-right " + ); diff --git a/lily/note-column-scheme.cc b/lily/note-column-scheme.cc index bf76ce9112..d828d36f5c 100644 --- a/lily/note-column-scheme.cc +++ b/lily/note-column-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Nicolas Sceaux + Copyright (C) 2010--2012 Nicolas Sceaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -10,11 +10,11 @@ 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 + 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 . + along with LilyPond. If not, see . */ #include "note-column.hh" @@ -22,9 +22,9 @@ #include "grob.hh" LY_DEFINE (ly_note_column_accidentals, "ly:note-column-accidentals", - 1, 0, 0, (SCM note_column), - "Return the @code{AccidentalPlacement} grob from @var{note-column}" - " if any, or @code{SCM_EOL} otherwise.") + 1, 0, 0, (SCM note_column), + "Return the @code{AccidentalPlacement} grob from @var{note-column}" + " if any, or @code{SCM_EOL} otherwise.") { Grob *grob = unsmob_grob (note_column); LY_ASSERT_SMOB (Grob, note_column, 1); @@ -35,9 +35,9 @@ LY_DEFINE (ly_note_column_accidentals, "ly:note-column-accidentals", } LY_DEFINE (ly_note_column_dot_column, "ly:note-column-dot-column", - 1, 0, 0, (SCM note_column), - "Return the @code{DotColumn} grob from @var{note-column}" - " if any, or @code{SCM_EOL} otherwise.") + 1, 0, 0, (SCM note_column), + "Return the @code{DotColumn} grob from @var{note-column}" + " if any, or @code{SCM_EOL} otherwise.") { Grob *grob = unsmob_grob (note_column); LY_ASSERT_SMOB (Grob, note_column, 1); diff --git a/lily/note-column.cc b/lily/note-column.cc index 2ba81c66c4..da52093797 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #include "note-column.hh" -#include // ceil +#include // ceil using namespace std; #include "accidental-placement.hh" @@ -64,6 +64,18 @@ Note_column::get_stem (Grob *me) return unsmob_item (s); } +Item * +Note_column::get_flag (Grob *me) +{ + Item *stem = get_stem (me); + if (stem) + { + SCM s = stem->get_object ("flag"); + return unsmob_item (s); + } + return 0; +} + Slice Note_column::head_positions_interval (Grob *me) { @@ -92,7 +104,7 @@ Note_column::dir (Grob *me) { extract_grob_set (me, "note-heads", heads); if (heads.size ()) - return (Direction)sign (head_positions_interval (me).center ()); + return (Direction)sign (head_positions_interval (me).center ()); } programming_error ("note column without heads and stem"); @@ -120,14 +132,14 @@ Note_column::add_head (Grob *me, Grob *h) { extract_grob_set (me, "note-heads", heads); if (heads.size ()) - both = true; + both = true; else - me->set_object ("rest", h->self_scm ()); + me->set_object ("rest", h->self_scm ()); } else if (Note_head::has_interface (h)) { if (unsmob_grob (me->get_object ("rest"))) - both = true; + both = true; Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-heads"), h); } @@ -157,7 +169,7 @@ Note_column::accidentals (Grob *me) Grob *h = heads[i]; acc = h ? unsmob_grob (h->get_object ("accidental-grob")) : 0; if (acc) - break; + break; } if (!acc) @@ -178,7 +190,7 @@ Note_column::dot_column (Grob *me) { Grob *dots = unsmob_grob (heads[i]->get_object ("dot")); if (dots) - return dots->get_parent (X_AXIS); + return dots->get_parent (X_AXIS); } return 0; @@ -205,15 +217,15 @@ Note_column::cross_staff_extent (Grob *me, Grob *refp) } ADD_INTERFACE (Note_column, - "Stem and noteheads combined.", - - /* properties */ - "arpeggio " - "force-hshift " - "horizontal-shift " - "ignore-collision " - "note-heads " - "rest " - "rest-collision " - "stem " - ); + "Stem and noteheads combined.", + + /* properties */ + "arpeggio " + "force-hshift " + "horizontal-shift " + "ignore-collision " + "note-heads " + "rest " + "rest-collision " + "stem " + ); diff --git a/lily/note-head-line-engraver.cc b/lily/note-head-line-engraver.cc index 2d41d10758..f4794474ab 100644 --- a/lily/note-head-line-engraver.cc +++ b/lily/note-head-line-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,6 @@ #include "spanner.hh" #include "item.hh" - /** Create line-spanner grobs for lines that connect note heads. @@ -91,7 +90,7 @@ Note_head_line_engraver::process_acknowledged () Should probably store follow_ in line_, and suicide at some later point */ if (follow_) - line_ = make_spanner ("VoiceFollower", head_->self_scm ()); + line_ = make_spanner ("VoiceFollower", head_->self_scm ()); line_->set_bound (LEFT, last_head_); line_->set_bound (RIGHT, head_); @@ -113,18 +112,18 @@ Note_head_line_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Note_head_line_engraver, rhythmic_head); ADD_TRANSLATOR (Note_head_line_engraver, - /* doc */ - "Engrave a line between two note heads, for example a" - " glissando. If @code{followVoice} is set, staff switches" - " also generate a line.", + /* doc */ + "Engrave a line between two note heads, for example a" + " glissando. If @code{followVoice} is set, staff switches" + " also generate a line.", - /* create */ - "Glissando " - "VoiceFollower ", + /* create */ + "Glissando " + "VoiceFollower ", - /* read */ - "followVoice ", + /* read */ + "followVoice ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/note-head-scheme.cc b/lily/note-head-scheme.cc index 6698973339..ef6770888a 100644 --- a/lily/note-head-scheme.cc +++ b/lily/note-head-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -21,16 +21,15 @@ #include "note-head.hh" #include "font-metric.hh" - LY_DEFINE (ly_note_head__stem_attachment, "ly:note-head::stem-attachment", - 2, 0, 0, (SCM font_metric, SCM glyph_name), - "Get attachment in @var{font-metric} for attaching a stem to" - " notehead @var{glyph-name}.") + 2, 0, 0, (SCM font_metric, SCM glyph_name), + "Get attachment in @var{font-metric} for attaching a stem to" + " notehead @var{glyph-name}.") { LY_ASSERT_SMOB (Font_metric, font_metric, 1); Font_metric *fm = unsmob_metrics (font_metric); LY_ASSERT_TYPE (scm_is_string, glyph_name, 2); - + return ly_offset2scm (Note_head::get_stem_attachment (fm, ly_scm2string (glyph_name))); } diff --git a/lily/note-head.cc b/lily/note-head.cc index aeb7b4a19b..287b10dc04 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ #include #include -#include // min, max +#include // min, max using namespace std; @@ -36,45 +36,64 @@ using namespace std; static Stencil internal_print (Grob *me, string *font_char) { - SCM style = me->get_property ("style"); - if (!scm_is_symbol (style)) - style = ly_symbol2scm ("default"); + string style = robust_symbol2string (me->get_property ("style"), "default"); string suffix = to_string (min (robust_scm2int (me->get_property ("duration-log"), 2), 2)); - if (style != ly_symbol2scm ("default")) - { - SCM gn = me->get_property ("glyph-name"); - if (scm_is_string (gn)) - suffix = ly_scm2string (gn); - } + if (style != "default") + suffix = robust_scm2string (me->get_property ("glyph-name"), ""); Font_metric *fm = Font_interface::get_default_font (me); + string prefix = "noteheads."; string idx_symmetric; string idx_directed; - string idx_either; - idx_symmetric = idx_either = "noteheads.s" + suffix; - Stencil out = fm->find_by_name (idx_symmetric); + string idx_either = idx_symmetric = prefix + "s"; + Stencil out = fm->find_by_name (idx_either + suffix); if (out.is_empty ()) { - string prefix = "noteheads."; - Grob *stem = unsmob_grob (me->get_object ("stem")); Direction stem_dir = stem ? get_grob_direction (stem) : CENTER; - + if (stem_dir == CENTER) - programming_error ("must have stem dir for note head"); - - idx_directed = idx_either = - prefix + ((stem_dir == UP) ? "u" : "d") + suffix; - out = fm->find_by_name (idx_directed); + programming_error ("must have stem dir for note head"); + + idx_either = idx_directed = prefix + (stem_dir == UP ? "u" : "d"); + out = fm->find_by_name (idx_either + suffix); } + if (style == "mensural" + || style == "neomensural" + || style == "petrucci" + || style == "baroque" + || style == "kievan") + { + if (!Staff_symbol_referencer::on_line + (me, + robust_scm2int (me->get_property ("staff-position"), 0))) + { + Stencil test = fm->find_by_name (idx_either + "r" + suffix); + if (!test.is_empty ()) + { + idx_either += "r"; + out = test; + } + } + } + if (style == "kievan" + && 3 == robust_scm2int (me->get_property ("duration-log"), 2)) + { + Grob *stem = unsmob_grob (me->get_object ("stem")); + Grob *beam = unsmob_grob (stem->get_object ("beam")); + if (beam) + out = fm->find_by_name (idx_either + "2kievan"); + } + + idx_either += suffix; if (out.is_empty ()) { me->warning (_f ("none of note heads `%s' or `%s' found", - idx_symmetric.c_str (), idx_directed.c_str ())); + idx_symmetric.c_str (), idx_directed.c_str ())); out = Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL); } else @@ -84,7 +103,7 @@ internal_print (Grob *me, string *font_char) } /* - TODO: make stem X-parent of notehead. + TODO: make stem X-parent of notehead. */ MAKE_SCHEME_CALLBACK (Note_head, stem_x_shift, 1); SCM @@ -126,7 +145,7 @@ Note_head::include_ledger_line_height (SCM smob) // the interval between the note and the first ledger line, not // the whole interval between the note and the staff. Interval iv (min (0.0, lines[UP] - my_ext[DOWN] + 1), - max (0.0, lines[DOWN] - my_ext[UP] - 1)); + max (0.0, lines[DOWN] - my_ext[UP] - 1)); return ly_interval2scm (iv); } @@ -137,8 +156,8 @@ Real Note_head::stem_attachment_coordinate (Grob *me, Axis a) { Offset off = robust_scm2offset (me->get_property ("stem-attachment"), - Offset (0,0)); - + Offset (0, 0)); + return off [a]; } @@ -146,22 +165,22 @@ Offset Note_head::get_stem_attachment (Font_metric *fm, string key) { Offset att; - + int k = fm->name_to_index (key); if (k >= 0) { Box b = fm->get_indexed_char_dimensions (k); Offset wxwy = fm->attachment_point (key); - for (int i = X_AXIS ; i < NO_AXES; i++) - { - Axis a = Axis (i); - - Interval v = b[a]; - if (!v.is_empty ()) - { - att[a] = (2 * (wxwy[a] - v.center ()) / v.length ()); - } - } + for (int i = X_AXIS; i < NO_AXES; i++) + { + Axis a = Axis (i); + + Interval v = b[a]; + if (!v.is_empty ()) + { + att[a] = (2 * (wxwy[a] - v.center ()) / v.length ()); + } + } } return att; @@ -171,7 +190,7 @@ MAKE_SCHEME_CALLBACK (Note_head, calc_stem_attachment, 1); SCM Note_head::calc_stem_attachment (SCM smob) { - Grob *me = unsmob_grob (smob); + Grob *me = unsmob_grob (smob); Font_metric *fm = Font_interface::get_default_font (me); string key; internal_print (me, &key); @@ -179,17 +198,16 @@ Note_head::calc_stem_attachment (SCM smob) return ly_offset2scm (get_stem_attachment (fm, key)); } - ADD_INTERFACE (Note_head, - "A note head. There are many possible values for" - " @code{style}. For a complete list, see" - " @ruser{Note head styles}.", - - /* properties */ - "note-names " - "accidental-grob " - "glyph-name " - "stem-attachment " - "style " - ); + "A note head. There are many possible values for" + " @code{style}. For a complete list, see" + " @ruser{Note head styles}.", + + /* properties */ + "note-names " + "accidental-grob " + "glyph-name " + "stem-attachment " + "style " + ); diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 4aa97dd4b9..436861c0ae 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -73,45 +73,45 @@ Note_heads_engraver::process_music () #if 0 /* TODO: should have a mechanism to switch off these warnings. */ if (!pit) - ev->origin ()->warning (_ ("NoteEvent without pitch")); + ev->origin ()->warning (_ ("NoteEvent without pitch")); #endif int pos; if (pit == 0) - pos = 0; + pos = 0; else if (ly_is_procedure (layout_proc)) - { - SCM pitch = ev->get_property ("pitch"); - pos = scm_to_int (scm_call_1 (layout_proc, pitch)); - } + { + SCM pitch = ev->get_property ("pitch"); + pos = scm_to_int (scm_call_1 (layout_proc, pitch)); + } else - pos = pit->steps (); + pos = pit->steps (); if (scm_is_number (c0)) - pos += scm_to_int (c0); + pos += scm_to_int (c0); note->set_property ("staff-position", scm_from_int (pos)); /* - Shape note heads change on step of the scale. + Shape note heads change on step of the scale. */ SCM shape_vector = get_property ("shapeNoteStyles"); if (scm_is_vector (shape_vector)) - { - SCM scm_tonic = get_property ("tonic"); - Pitch tonic (0, 0, 0); - if (unsmob_pitch (scm_tonic)) - tonic = *unsmob_pitch (scm_tonic); - - unsigned int delta = (pit->get_notename () - tonic.get_notename () + 7) % 7; - - SCM style = SCM_EOL; - if (scm_c_vector_length (shape_vector) > delta - && scm_is_symbol (scm_vector_ref (shape_vector, scm_from_int (delta)))) - style = scm_vector_ref (shape_vector, scm_from_int (delta)); - if (scm_is_symbol (style)) - note->set_property ("style", style); - } + { + SCM scm_tonic = get_property ("tonic"); + Pitch tonic (0, 0, 0); + if (unsmob_pitch (scm_tonic)) + tonic = *unsmob_pitch (scm_tonic); + + unsigned int delta = (pit->get_notename () - tonic.get_notename () + 7) % 7; + + SCM style = SCM_EOL; + if (scm_c_vector_length (shape_vector) > delta + && scm_is_symbol (scm_vector_ref (shape_vector, scm_from_int (delta)))) + style = scm_vector_ref (shape_vector, scm_from_int (delta)); + if (scm_is_symbol (style)) + note->set_property ("style", style); + } } } @@ -122,16 +122,16 @@ Note_heads_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Note_heads_engraver, - /* doc */ - "Generate note heads.", + /* doc */ + "Generate note heads.", - /* create */ - "NoteHead ", + /* create */ + "NoteHead ", - /* read */ - "middleCPosition " - "staffLineLayoutFunction ", + /* read */ + "middleCPosition " + "staffLineLayoutFunction ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/note-name-engraver.cc b/lily/note-name-engraver.cc index d2a6b91535..c96b3776c0 100644 --- a/lily/note-name-engraver.cc +++ b/lily/note-name-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -49,11 +49,11 @@ Note_name_engraver::process_music () for (vsize i = 0; i < events_.size (); i++) { if (i) - s += " "; + s += " "; Pitch p = *unsmob_pitch (events_[i]->get_property ("pitch")); if (!to_boolean (get_property ("printOctaveNames"))) - p = Pitch (-1, p.get_notename (), p.get_alteration ()); + p = Pitch (-1, p.get_notename (), p.get_alteration ()); s += p.to_string (); } @@ -75,15 +75,15 @@ Note_name_engraver::Note_name_engraver () } ADD_TRANSLATOR (Note_name_engraver, - /* doc */ - "Print pitches as words.", + /* doc */ + "Print pitches as words.", - /* create */ - "NoteName ", + /* create */ + "NoteName ", - /* read */ - "printOctaveNames ", + /* read */ + "printOctaveNames ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/note-performer.cc b/lily/note-performer.cc index ff3f5b3f81..01086620ef 100644 --- a/lily/note-performer.cc +++ b/lily/note-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,13 +37,12 @@ protected: DECLARE_TRANSLATOR_LISTENER (note); private: - vector note_evs_; - vector notes_; + vector note_evs_; + vector notes_; - - vector last_notes_; + vector last_notes_; Moment last_start_; - + }; void @@ -57,48 +56,48 @@ Note_performer::process_music () if (unsmob_pitch (prop)) transposing = *unsmob_pitch (prop); - for (vsize i = 0; i < note_evs_.size (); i ++) + for (vsize i = 0; i < note_evs_.size (); i++) { Stream_event *n = note_evs_[i]; SCM pit = n->get_property ("pitch"); if (Pitch *pitp = unsmob_pitch (pit)) - { - SCM articulations = n->get_property ("articulations"); - Stream_event *tie_event = 0; - for (SCM s = articulations; - !tie_event && scm_is_pair (s); - s = scm_cdr (s)) - { - Stream_event *ev = unsmob_stream_event (scm_car (s)); - if (!ev) - continue; - - if (ev->in_event_class ("tie-event")) - tie_event = ev; - } - - Moment len = get_event_length (n, now_mom ()); - - Audio_note *p = new Audio_note (*pitp, len, - tie_event, transposing.negated ()); - Audio_element_info info (p, n); - announce_element (info); - notes_.push_back (p); - - /* - shorten previous note. - */ - if (now_mom ().grace_part_) - { - if (last_start_.grace_part_ == Rational (0)) - { - for (vsize i = 0; i < last_notes_.size (); i++) - last_notes_[i]->length_mom_ += Moment (0, - now_mom().grace_part_); - } - } - } + { + SCM articulations = n->get_property ("articulations"); + Stream_event *tie_event = 0; + for (SCM s = articulations; + !tie_event && scm_is_pair (s); + s = scm_cdr (s)) + { + Stream_event *ev = unsmob_stream_event (scm_car (s)); + if (!ev) + continue; + + if (ev->in_event_class ("tie-event")) + tie_event = ev; + } + + Moment len = get_event_length (n, now_mom ()); + + Audio_note *p = new Audio_note (*pitp, len, + tie_event, transposing.negated ()); + Audio_element_info info (p, n); + announce_element (info); + notes_.push_back (p); + + /* + shorten previous note. + */ + if (now_mom ().grace_part_) + { + if (last_start_.grace_part_ == Rational (0)) + { + for (vsize i = 0; i < last_notes_.size (); i++) + last_notes_[i]->length_mom_ += Moment (0, + now_mom ().grace_part_); + } + } + } } } @@ -123,18 +122,18 @@ Note_performer::listen_note (Stream_event *ev) } ADD_TRANSLATOR (Note_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); Note_performer::Note_performer () { diff --git a/lily/note-spacing-engraver.cc b/lily/note-spacing-engraver.cc index 761e01aa0b..8cb1b3539d 100644 --- a/lily/note-spacing-engraver.cc +++ b/lily/note-spacing-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,10 +30,10 @@ class Note_spacing_engraver : public Engraver { - typedef map Last_spacing_map; + typedef map Last_spacing_map; Last_spacing_map last_spacings_; Grob *last_spacing_; - + Grob *spacing_; void add_spacing_item (Grob *); @@ -68,21 +68,20 @@ Note_spacing_engraver::add_spacing_item (Grob *g) { spacing_ = make_item ("NoteSpacing", g->self_scm ()); } - + if (spacing_) { Pointer_group_interface::add_grob (spacing_, - ly_symbol2scm ("left-items"), - g); + ly_symbol2scm ("left-items"), + g); if (last_spacing_) - Pointer_group_interface::add_grob (last_spacing_, - ly_symbol2scm ("right-items"), - g); + Pointer_group_interface::add_grob (last_spacing_, + ly_symbol2scm ("right-items"), + g); } } - void Note_spacing_engraver::acknowledge_note_column (Grob_info gi) { @@ -104,11 +103,11 @@ Note_spacing_engraver::finalize () if (last_spacing && !unsmob_grob_array (last_spacing->get_object ("right-items"))) { - Grob *col = unsmob_grob (get_property ("currentCommandColumn")); - + Grob *col = unsmob_grob (get_property ("currentCommandColumn")); + Pointer_group_interface::add_grob (last_spacing, - ly_symbol2scm ("right-items"), - col); + ly_symbol2scm ("right-items"), + col); } } @@ -123,10 +122,10 @@ Note_spacing_engraver::stop_translation_timestep () { Grob *col = unsmob_grob (get_property ("currentCommandColumn")); Pointer_group_interface::add_grob (last_spacing, - ly_symbol2scm ("right-items"), - col); + ly_symbol2scm ("right-items"), + col); } - + if (spacing_) { last_spacings_[parent] = spacing_; @@ -140,16 +139,16 @@ ADD_ACKNOWLEDGER (Note_spacing_engraver, note_column); ADD_ACKNOWLEDGER (Note_spacing_engraver, rhythmic_grob); ADD_TRANSLATOR (Note_spacing_engraver, - /* doc */ - "Generate @code{NoteSpacing}, an object linking horizontal" - " lines for use in spacing.", + /* doc */ + "Generate @code{NoteSpacing}, an object linking horizontal" + " lines for use in spacing.", - /* create */ - "NoteSpacing ", + /* create */ + "NoteSpacing ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc index 73faa02100..477236775d 100644 --- a/lily/note-spacing.cc +++ b/lily/note-spacing.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,6 +31,7 @@ #include "separation-item.hh" #include "spacing-interface.hh" #include "staff-spacing.hh" +#include "staff-symbol-referencer.hh" #include "stem.hh" #include "warn.hh" @@ -41,7 +42,7 @@ Spring Note_spacing::get_spacing (Grob *me, Item *right_col, - Real base_space, Real increment) + Real base_space, Real increment) { vector note_columns = Spacing_interface::left_note_columns (me); Real left_head_end = 0; @@ -53,19 +54,19 @@ Note_spacing::get_spacing (Grob *me, Item *right_col, Grob *col = note_columns[i]->get_column (); if (!g) - g = Note_column::first_head (note_columns[i]); + g = Note_column::first_head (note_columns[i]); /* - Ugh. If Stem is switched off, we don't know what the - first note head will be. + Ugh. If Stem is switched off, we don't know what the + first note head will be. */ if (g) - { - if (g->common_refpoint (col, X_AXIS) != col) - programming_error ("Note_spacing::get_spacing (): Common refpoint incorrect"); - else - left_head_end = g->extent (col, X_AXIS)[RIGHT]; - } + { + if (g->common_refpoint (col, X_AXIS) != col) + programming_error ("Note_spacing::get_spacing (): Common refpoint incorrect"); + else + left_head_end = g->extent (col, X_AXIS)[RIGHT]; + } } /* @@ -90,17 +91,17 @@ Note_spacing::get_spacing (Grob *me, Item *right_col, && to_boolean (me->get_property ("space-to-barline"))) { Grob *bar = Pointer_group_interface::find_grob (right_col, - ly_symbol2scm ("elements"), - Bar_line::non_empty_barline); + ly_symbol2scm ("elements"), + Bar_line::non_empty_barline); if (bar) - { - Real shift = bar->extent (right_col, X_AXIS)[LEFT]; - ideal -= shift; - min_desired_space -= max (shift, 0.0); - } + { + Real shift = bar->extent (right_col, X_AXIS)[LEFT]; + ideal -= shift; + min_desired_space -= max (shift, 0.0); + } else - ideal -= right_col->extent (right_col, X_AXIS)[RIGHT]; + ideal -= right_col->extent (right_col, X_AXIS)[RIGHT]; } ideal = max (ideal, min_desired_space); @@ -127,19 +128,19 @@ knee_correction (Grob *note_spacing, Grob *right_stem, Real increment) head_extent = head->extent (rcolumn, X_AXIS); if (!head_extent.is_empty ()) - note_head_width = head_extent[RIGHT]; + note_head_width = head_extent[RIGHT]; note_head_width -= Stem::thickness (right_stem); } return -note_head_width * get_grob_direction (right_stem) - * robust_scm2double (note_spacing->get_property ("knee-spacing-correction"), 0); + * robust_scm2double (note_spacing->get_property ("knee-spacing-correction"), 0); } static Real different_directions_correction (Grob *note_spacing, - Drul_array stem_posns, - Direction left_stem_dir) + Drul_array stem_posns, + Direction left_stem_dir) { Real ret = 0.0; Interval intersect = stem_posns[LEFT]; @@ -150,11 +151,11 @@ different_directions_correction (Grob *note_spacing, ret = abs (intersect.length ()); /* - Ugh. 7 is hardcoded. + Ugh. 7 is hardcoded. */ ret = min (ret / 7, 1.0) - * left_stem_dir - * robust_scm2double (note_spacing->get_property ("stem-spacing-correction"), 0); + * left_stem_dir + * robust_scm2double (note_spacing->get_property ("stem-spacing-correction"), 0); } return ret; } @@ -204,14 +205,14 @@ same_direction_correction (Grob *note_spacing, Drul_array head_posns) */ void Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, - Real increment, - Real *space, Real *fixed) + Real increment, + Real *space, Real *fixed) { Drul_array stem_dirs (CENTER, CENTER); Drul_array stem_posns; Drul_array head_posns; Drul_array props (me->get_object ("left-items"), - me->get_object ("right-items")); + me->get_object ("right-items")); Drul_array beams_drul (0, 0); Drul_array stems_drul (0, 0); @@ -221,74 +222,62 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, Interval bar_xextent; Interval bar_yextent; - Direction d = LEFT; - bool acc_right = false; Grob *bar = Spacing_interface::extremal_break_aligned_grob (me, RIGHT, - rcolumn->break_status_dir (), - &bar_xextent); + rcolumn->break_status_dir (), + &bar_xextent); if (bar && dynamic_cast (bar)->get_column () == rcolumn) bar_yextent = Staff_spacing::bar_y_positions (bar); - do + for (LEFT_and_RIGHT (d)) { vector const &items (ly_scm2link_array (props [d])); for (vsize i = 0; i < items.size (); i++) - { - Item *it = dynamic_cast (items[i]); - if (!Note_column::has_interface (it)) - continue; - if (d == RIGHT && it->get_column () != rcolumn) - continue; - - /* - Find accidentals which are sticking out of the right side. - */ - if (d == RIGHT) - acc_right = acc_right || Note_column::accidentals (it); - - Grob *stem = Note_column::get_stem (it); - - if (!stem || !stem->is_live () || Stem::is_invisible (stem)) - return; - - stems_drul[d] = stem; - beams_drul[d] = Stem::get_beam (stem); - - Direction stem_dir = get_grob_direction (stem); - if (stem_dirs[d] && stem_dirs[d] != stem_dir) - return; - - stem_dirs[d] = stem_dir; - - /* - Correction doesn't seem appropriate when there is a large flag - hanging from the note. - */ - if (d == LEFT - && Stem::duration_log (stem) > 2 && !Stem::get_beam (stem)) - return; - - Interval hp = Stem::head_positions (stem); - if (!hp.is_empty ()) - { - Real chord_start = hp[stem_dir]; - - /* - can't look at stem-end-position, since that triggers - beam slope computations. - */ - Real stem_end = hp[stem_dir] - + stem_dir * robust_scm2double (stem->get_property ("length"), 7); - - stem_posns[d] = Interval (min (chord_start, stem_end), - max (chord_start, stem_end)); - head_posns[d].unite (hp); - } - } + { + Item *it = dynamic_cast (items[i]); + if (!Note_column::has_interface (it)) + continue; + if (d == RIGHT && it->get_column () != rcolumn) + continue; + + /* + Find accidentals which are sticking out of the right side. + */ + if (d == RIGHT) + acc_right = acc_right || Note_column::accidentals (it); + + Grob *stem = Note_column::get_stem (it); + + if (!stem || !stem->is_live () || Stem::is_invisible (stem)) + return; + + stems_drul[d] = stem; + beams_drul[d] = Stem::get_beam (stem); + + Direction stem_dir = get_grob_direction (stem); + if (stem_dirs[d] && stem_dirs[d] != stem_dir) + return; + + stem_dirs[d] = stem_dir; + + /* + Correction doesn't seem appropriate when there is a large flag + hanging from the note. + */ + if (d == LEFT + && Stem::duration_log (stem) > 2 && !Stem::get_beam (stem)) + return; + + Interval hp = Stem::head_positions (stem); + if (!hp.is_empty ()) + { + Real ss = Staff_symbol_referencer::staff_space (stem); + stem_posns[d] = stem->pure_height (stem, 0, INT_MAX) * (2 / ss); + head_posns[d].unite (hp); + } + } } - while (flip (&d) != LEFT); Real correction = 0.0; @@ -302,26 +291,26 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, if (stem_dirs[LEFT] * stem_dirs[RIGHT] == -1) { if (beams_drul[LEFT] && beams_drul[LEFT] == beams_drul[RIGHT]) - { - correction = knee_correction (me, stems_drul[RIGHT], increment); - *fixed += correction; - } + { + correction = knee_correction (me, stems_drul[RIGHT], increment); + } else - { - correction = different_directions_correction (me, stem_posns, stem_dirs[LEFT]); + { + correction = different_directions_correction (me, stem_posns, stem_dirs[LEFT]); - if (!bar_yextent.is_empty ()) - correction *= 0.5; - } + if (!bar_yextent.is_empty ()) + correction *= 0.5; + } } /* Only apply same direction correction if there are no accidentals sticking out of the right hand side. */ else if (stem_dirs[LEFT] * stem_dirs[RIGHT] == 1 - && !acc_right) + && !acc_right) correction = same_direction_correction (me, head_posns); + *fixed += correction; *space += correction; /* there used to be a correction for bar_xextent () here, but @@ -330,14 +319,14 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, } ADD_INTERFACE (Note_spacing, - "This object calculates spacing wishes for individual voices.", - - /* properties */ - "knee-spacing-correction " - "left-items " - "right-items " - "same-direction-correction " - "stem-spacing-correction " - "space-to-barline " - ); + "This object calculates spacing wishes for individual voices.", + + /* properties */ + "knee-spacing-correction " + "left-items " + "right-items " + "same-direction-correction " + "stem-spacing-correction " + "space-to-barline " + ); diff --git a/lily/one-line-page-breaking.cc b/lily/one-line-page-breaking.cc new file mode 100644 index 0000000000..213864462f --- /dev/null +++ b/lily/one-line-page-breaking.cc @@ -0,0 +1,92 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2012 Joe Neeman + + 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 . +*/ + +#include "one-line-page-breaking.hh" + +#include + +#include "column-x-positions.hh" +#include "international.hh" +#include "output-def.hh" +#include "page-spacing.hh" +#include "paper-book.hh" +#include "paper-score.hh" +#include "simple-spacer.hh" +#include "system.hh" + +One_line_page_breaking::One_line_page_breaking (Paper_book *pb) + : Page_breaking (pb, 0, 0) +{ +} + +One_line_page_breaking::~One_line_page_breaking () +{ +} + +/* + This is a somewhat unconventional page-breaking algorithm. Every + score will be put on a single page, whose width is enough + to fit the entire score one one line. Line breaks and page breaks + are ignored, and the paper-width setting in the paper block + will be modified to fit the music. +*/ +SCM +One_line_page_breaking::solve () +{ + SCM all_pages = SCM_EOL; + Real max_width = 0; + for (vsize i = 0; i < system_specs_.size (); ++i) + { + if (Paper_score *ps = system_specs_[i].pscore_) + { + vector cols = ps->root_system ()->used_columns (); + + // No indent, "infinite" line width, ragged. + Column_x_positions pos = get_line_configuration (cols, numeric_limits::max (), 0, true); + vector positions; + positions.push_back (pos); + + ps->root_system ()->break_into_pieces (positions); + ps->root_system ()->do_break_substitution_and_fixup_refpoints (); + Grob *system = ps->root_system ()->broken_intos_[0]; + + vector lines_per_page; + lines_per_page.push_back (1); + SCM systems = scm_list_1 (system->self_scm ()); + SCM pages = make_pages (lines_per_page, systems); + + max_width = max (max_width, system->extent (system, X_AXIS).length ()); + all_pages = scm_cons (scm_car (pages), all_pages); + } + else if (Prob *pb = system_specs_[i].prob_) + // Because we don't call Page_breaking::systems in this algorithm, + // we need to manually unprotect the titles. + pb->unprotect (); + } + + // Alter paper-width so that it is large enough to fit every system. + // TODO: it might be nice to allow different pages to have different widths. + // This would need support in the backends (eg. framework-ps.scm). + Real right_margin = robust_scm2double (book_->paper_->c_variable ("right-margin"), 0.0); + Real left_margin = robust_scm2double (book_->paper_->c_variable ("left-margin"), 0.0); + Real width = max_width + right_margin + left_margin; + book_->paper_->set_variable (ly_symbol2scm ("paper-width"), scm_from_double (width)); + + return scm_reverse_x (all_pages, SCM_EOL); +} diff --git a/lily/open-type-font-scheme.cc b/lily/open-type-font-scheme.cc index fd48290aa0..5b43a8d9da 100644 --- a/lily/open-type-font-scheme.cc +++ b/lily/open-type-font-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,9 +21,9 @@ #include "open-type-font.hh" LY_DEFINE (ly_font_sub_fonts, "ly:font-sub-fonts", 1, 0, 0, - (SCM font), - "Given the font metric @var{font} of an OpenType font, return the" - " names of the subfonts within @var{font}.") + (SCM font), + "Given the font metric @var{font} of an OpenType font, return the" + " names of the subfonts within @var{font}.") { LY_ASSERT_SMOB (Font_metric, font, 1); @@ -32,15 +32,15 @@ LY_DEFINE (ly_font_sub_fonts, "ly:font-sub-fonts", 1, 0, 0, } LY_DEFINE (ly_otf_font_glyph_info, "ly:otf-font-glyph-info", 2, 0, 0, - (SCM font, SCM glyph), - "Given the font metric @var{font} of an OpenType font, return the" - " information about named glyph @var{glyph} (a string).") + (SCM font, SCM glyph), + "Given the font metric @var{font} of an OpenType font, return the" + " information about named glyph @var{glyph} (a string).") { Modified_font_metric *fm = dynamic_cast (unsmob_metrics (font)); Open_type_font *otf = fm - ? dynamic_cast (fm->original_font ()) - : dynamic_cast (unsmob_metrics (font)); + ? dynamic_cast (fm->original_font ()) + : dynamic_cast (unsmob_metrics (font)); SCM_ASSERT_TYPE (otf, font, SCM_ARG1, __FUNCTION__, "OpenType font"); LY_ASSERT_TYPE (scm_is_string, glyph, 2); @@ -50,15 +50,15 @@ LY_DEFINE (ly_otf_font_glyph_info, "ly:otf-font-glyph-info", 2, 0, 0, } LY_DEFINE (ly_otf_font_table_data, "ly:otf-font-table-data", 2, 0, 0, - (SCM font, SCM tag), - "Extract a table @var{tag} from @var{font}. Return empty string" - " for non-existent @var{tag}.") + (SCM font, SCM tag), + "Extract a table @var{tag} from @var{font}. Return empty string" + " for non-existent @var{tag}.") { Modified_font_metric *fm = dynamic_cast (unsmob_metrics (font)); Open_type_font *otf = fm - ? dynamic_cast (fm->original_font ()) - : dynamic_cast (unsmob_metrics (font)); + ? dynamic_cast (fm->original_font ()) + : dynamic_cast (unsmob_metrics (font)); SCM_ASSERT_TYPE (otf, font, SCM_ARG1, __FUNCTION__, "OpenType font"); LY_ASSERT_TYPE (scm_is_string, tag, 2); @@ -74,27 +74,27 @@ LY_DEFINE (ly_otf_font_table_data, "ly:otf-font-table-data", 2, 0, 0, } LY_DEFINE (ly_otf_font_p, "ly:otf-font?", 1, 0, 0, - (SCM font), - "Is @var{font} an OpenType font?") + (SCM font), + "Is @var{font} an OpenType font?") { Modified_font_metric *fm = dynamic_cast (unsmob_metrics (font)); Open_type_font *otf = fm - ? dynamic_cast (fm->original_font ()) - : dynamic_cast (unsmob_metrics (font)); + ? dynamic_cast (fm->original_font ()) + : dynamic_cast (unsmob_metrics (font)); return scm_from_bool (otf); } LY_DEFINE (ly_otf_glyph_count, "ly:otf-glyph-count", 1, 0, 0, - (SCM font), - "Return the number of glyphs in @var{font}.") + (SCM font), + "Return the number of glyphs in @var{font}.") { Modified_font_metric *fm = dynamic_cast (unsmob_metrics (font)); Open_type_font *otf = fm - ? dynamic_cast (fm->original_font ()) - : dynamic_cast (unsmob_metrics (font)); + ? dynamic_cast (fm->original_font ()) + : dynamic_cast (unsmob_metrics (font)); SCM_ASSERT_TYPE (otf, font, SCM_ARG1, __FUNCTION__, "OpenType font"); @@ -102,14 +102,14 @@ LY_DEFINE (ly_otf_glyph_count, "ly:otf-glyph-count", 1, 0, 0, } LY_DEFINE (ly_otf_glyph_list, "ly:otf-glyph-list", 1, 0, 0, - (SCM font), - "Return a list of glyph names for @var{font}.") + (SCM font), + "Return a list of glyph names for @var{font}.") { Modified_font_metric *fm = dynamic_cast (unsmob_metrics (font)); Open_type_font *otf = fm - ? dynamic_cast (fm->original_font ()) - : dynamic_cast (unsmob_metrics (font)); + ? dynamic_cast (fm->original_font ()) + : dynamic_cast (unsmob_metrics (font)); SCM_ASSERT_TYPE (otf, font, SCM_ARG1, __FUNCTION__, "OpenType font"); diff --git a/lily/open-type-font.cc b/lily/open-type-font.cc index 50c89a4065..fc97b99687 100644 --- a/lily/open-type-font.cc +++ b/lily/open-type-font.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,18 +41,18 @@ load_table (char const *tag_str, FT_Face face, FT_ULong *length) { FT_Byte *buffer = (FT_Byte *) malloc (*length); if (buffer == NULL) - error (_f ("cannot allocate %lu bytes", *length)); + error (_f ("cannot allocate %lu bytes", *length)); error_code = FT_Load_Sfnt_Table (face, tag, 0, buffer, length); if (error_code) - error (_f ("cannot load font table: %s", tag_str)); + error (_f ("cannot load font table: %s", tag_str)); return buffer; } else programming_error (_f ("FreeType error: %s", - freetype_error_string (error_code).c_str () - )); + freetype_error_string (error_code).c_str () + )); return 0; } @@ -72,7 +72,7 @@ load_scheme_table (char const *tag_str, FT_Face face) SCM tab = SCM_EOL; if (buffer) { - string contents ((char const*)buffer, length); + string contents ((char const *)buffer, length); contents = "(quote (" + contents + "))"; tab = scm_c_eval_string (contents.c_str ()); @@ -81,7 +81,6 @@ load_scheme_table (char const *tag_str, FT_Face face) return tab; } - Open_type_font::~Open_type_font () { FT_Done_Face (face_); @@ -95,7 +94,7 @@ get_otf_table (FT_Face face, string tag) { FT_ULong len; FT_Byte *tab = load_table (tag.c_str (), face, &len); - string ret ((char const*) tab, len); + string ret ((char const *) tab, len); free (tab); return ret; @@ -110,9 +109,9 @@ open_ft_face (string str, FT_Long idx) if (error_code == FT_Err_Unknown_File_Format) error (_f ("unsupported font format: %s", str.c_str ())); else if (error_code) - error (_f ("error reading font file %s: %s", - str.c_str (), - freetype_error_string (error_code).c_str ())); + error (_f ("error reading font file %s: %s", + str.c_str (), + freetype_error_string (error_code).c_str ())); return face; } @@ -172,10 +171,10 @@ Open_type_font::get_indexed_char_dimensions (size_t signed_idx) const if (SCM_HASHTABLE_P (lily_index_to_bbox_table_)) { SCM box = scm_hashq_ref (lily_index_to_bbox_table_, - scm_from_unsigned_integer (signed_idx), SCM_BOOL_F); + scm_from_unsigned_integer (signed_idx), SCM_BOOL_F); Box *box_ptr = Box::unsmob (box); if (box_ptr) - return *box_ptr; + return *box_ptr; } if (SCM_HASHTABLE_P (lily_character_table_)) @@ -183,35 +182,35 @@ Open_type_font::get_indexed_char_dimensions (size_t signed_idx) const const size_t len = 256; char name[len]; FT_Error code = FT_Get_Glyph_Name (face_, FT_UInt (signed_idx), - name, FT_UInt (len)); + name, FT_UInt (len)); if (code) - warning (_f ("FT_Get_Glyph_Name () Freetype error: %s", - freetype_error_string (code))); + warning (_f ("FT_Get_Glyph_Name () Freetype error: %s", + freetype_error_string (code))); SCM sym = ly_symbol2scm (name); SCM alist = scm_hashq_ref (lily_character_table_, sym, SCM_BOOL_F); if (alist != SCM_BOOL_F) - { - SCM bbox = scm_cdr (scm_assq (ly_symbol2scm ("bbox"), alist)); - - Box b; - b[X_AXIS][LEFT] = scm_to_double (scm_car (bbox)); - bbox = scm_cdr (bbox); - b[Y_AXIS][LEFT] = scm_to_double (scm_car (bbox)); - bbox = scm_cdr (bbox); - b[X_AXIS][RIGHT] = scm_to_double (scm_car (bbox)); - bbox = scm_cdr (bbox); - b[Y_AXIS][RIGHT] = scm_to_double (scm_car (bbox)); - bbox = scm_cdr (bbox); - - b.scale (point_constant); - - scm_hashq_set_x (lily_index_to_bbox_table_, - scm_from_unsigned_integer (signed_idx), - b.smobbed_copy ()); - return b; - } + { + SCM bbox = scm_cdr (scm_assq (ly_symbol2scm ("bbox"), alist)); + + Box b; + b[X_AXIS][LEFT] = scm_to_double (scm_car (bbox)); + bbox = scm_cdr (bbox); + b[Y_AXIS][LEFT] = scm_to_double (scm_car (bbox)); + bbox = scm_cdr (bbox); + b[X_AXIS][RIGHT] = scm_to_double (scm_car (bbox)); + bbox = scm_cdr (bbox); + b[Y_AXIS][RIGHT] = scm_to_double (scm_car (bbox)); + bbox = scm_cdr (bbox); + + b.scale (point_constant); + + scm_hashq_set_x (lily_index_to_bbox_table_, + scm_from_unsigned_integer (signed_idx), + b.smobbed_copy ()); + return b; + } } FT_UInt idx = FT_UInt (signed_idx); @@ -221,7 +220,7 @@ Open_type_font::get_indexed_char_dimensions (size_t signed_idx) const FT_Pos hb = m.horiBearingX; FT_Pos vb = m.horiBearingY; Box b (Interval (Real (-hb), Real (m.width - hb)), - Interval (Real (-vb), Real (m.height - vb))); + Interval (Real (-vb), Real (m.height - vb))); b.scale (design_size () / Real (face_->units_per_EM)); return b; @@ -233,8 +232,8 @@ Open_type_font::name_to_index (string nm) const char *nm_str = (char *) nm.c_str (); if (FT_UInt idx = FT_Get_Name_Index (face_, nm_str)) return (size_t) idx; - - return (size_t) -1; + + return (size_t) - 1; } size_t @@ -262,15 +261,15 @@ Real Open_type_font::design_size () const { SCM entry = scm_hashq_ref (lily_global_table_, - ly_symbol2scm ("design_size"), - - /* - Hmm. Design size is arbitrary for - non-design-size fonts. I vote for 1 - - which will trip errors more - quickly. --hwn. - */ - scm_from_unsigned_integer (1)); + ly_symbol2scm ("design_size"), + + /* + Hmm. Design size is arbitrary for + non-design-size fonts. I vote for 1 - + which will trip errors more + quickly. --hwn. + */ + scm_from_unsigned_integer (1)); return scm_to_double (entry) * Real (point_constant); } @@ -309,19 +308,19 @@ Open_type_font::glyph_list () const { SCM retval = SCM_EOL; SCM *tail = &retval; - + for (int i = 0; i < face_->num_glyphs; i++) { const size_t len = 256; char name[len]; FT_Error code = FT_Get_Glyph_Name (face_, i, name, len); if (code) - warning (_f ("FT_Get_Glyph_Name () error: %s", - freetype_error_string (code).c_str ())); + warning (_f ("FT_Get_Glyph_Name () error: %s", + freetype_error_string (code).c_str ())); *tail = scm_cons (scm_from_locale_string (name), SCM_EOL); tail = SCM_CDRLOC (*tail); } - + return retval; } diff --git a/lily/optimal-page-breaking.cc b/lily/optimal-page-breaking.cc index e404711b4b..2b0910f887 100644 --- a/lily/optimal-page-breaking.cc +++ b/lily/optimal-page-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,49 +55,49 @@ Optimal_page_breaking::solve () // Note that system_count () only counts non-title systems. vsize ideal_sys_count = system_count (); - + if (!scm_is_integer (forced_page_count)) { /* find out the ideal number of pages */ message (_ ("Finding the ideal number of pages...")); - + best = space_systems_on_best_pages (0, first_page_num); page_count = best.systems_per_page_.size (); min_sys_count = ideal_sys_count - best.systems_per_page_.back (); - + if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1) - min_sys_count -= best.systems_per_page_[page_count - 2]; + min_sys_count -= best.systems_per_page_[page_count - 2]; min_sys_count = max (min_sys_count, (vsize)1); } else { /* If systems-per-page and page-count are both specified, we know exactly - how many systems should be present. */ + how many systems should be present. */ if (systems_per_page () > 0) - { - ideal_sys_count = systems_per_page () * page_count; - - if (ideal_sys_count > max_system_count (0, end) - || ideal_sys_count < min_system_count (0, end)) - { - warning (_ ("could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page")); - ideal_sys_count = system_count (); - min_sys_count = page_count; - } - else - { - set_current_breakpoints (0, end, ideal_sys_count); - min_sys_count = max_sys_count = ideal_sys_count; - ideal_line_division = best_division = current_configuration (0); - } - } + { + ideal_sys_count = systems_per_page () * page_count; + + if (ideal_sys_count > max_system_count (0, end) + || ideal_sys_count < min_system_count (0, end)) + { + warning (_ ("could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page")); + ideal_sys_count = system_count (); + min_sys_count = page_count; + } + else + { + set_current_breakpoints (0, end, ideal_sys_count); + min_sys_count = max_sys_count = ideal_sys_count; + ideal_line_division = best_division = current_configuration (0); + } + } else - min_sys_count = page_count; + min_sys_count = page_count; /* TODO: the following line will spit out programming errors if the - ideal line spacing doesn't fit on PAGE_COUNT pages */ + ideal line spacing doesn't fit on PAGE_COUNT pages */ best = space_systems_on_n_pages (0, page_count, first_page_num); } @@ -106,7 +106,7 @@ Optimal_page_breaking::solve () else if (scm_is_integer (forced_page_count)) message (_f ("Fitting music on %d pages...", (int)page_count)); else - message (_f ("Fitting music on %d or %d pages...", (int)page_count-1, (int)page_count)); + message (_f ("Fitting music on %d or %d pages...", (int)page_count - 1, (int)page_count)); /* try a smaller number of systems than the ideal number for line breaking */ Line_division bound = ideal_line_division; @@ -116,93 +116,92 @@ Optimal_page_breaking::solve () set_current_breakpoints (0, end, sys_count, Line_division (), bound); if (debug_page_breaking_scoring) - message (_f ("trying %d systems", (int)sys_count)); + message (_f ("trying %d systems", (int)sys_count)); for (vsize i = 0; i < current_configuration_count (); i++) - { - Page_spacing_result cur; + { + Page_spacing_result cur; - if (scm_is_integer (forced_page_count)) - cur = space_systems_on_n_pages (i, page_count, first_page_num); - else - cur = space_systems_on_best_pages (i, first_page_num); + if (scm_is_integer (forced_page_count)) + cur = space_systems_on_n_pages (i, page_count, first_page_num); + else + cur = space_systems_on_best_pages (i, first_page_num); - if (cur.demerits_ < best_for_this_sys_count.demerits_) - { - best_for_this_sys_count = cur; - bound = current_configuration (i); - } - } + if (cur.demerits_ < best_for_this_sys_count.demerits_) + { + best_for_this_sys_count = cur; + bound = current_configuration (i); + } + } if (debug_page_breaking_scoring) - message (_f ("best score for this sys-count: %f", best_for_this_sys_count.demerits_)); + message (_f ("best score for this sys-count: %f", best_for_this_sys_count.demerits_)); if (best_for_this_sys_count.demerits_ < best.demerits_) - { - best = best_for_this_sys_count; - best_division = bound; - } + { + best = best_for_this_sys_count; + best_division = bound; + } /* Check to see if we already have too few systems. There are two ways - we check this: if we are trying one less than the ideal number of pages - and the pages are stretched on average then we have too - few systems. If the spacing is worse than BAD_SPACING_PENALTY, then we - have too few systems. In either case, though, we need to continue reducing - the number of systems if max-systems-per-page requires it. */ + we check this: if we are trying one less than the ideal number of pages + and the pages are stretched on average then we have too + few systems. If the spacing is worse than BAD_SPACING_PENALTY, then we + have too few systems. In either case, though, we need to continue reducing + the number of systems if max-systems-per-page requires it. */ if (!(best.system_count_status_ & SYSTEM_COUNT_TOO_MANY)) - { - if (best_for_this_sys_count.page_count () < page_count - && best_for_this_sys_count.average_force () > 0) - break; - - if (best_for_this_sys_count.demerits_ >= BAD_SPACING_PENALTY) - break; - } + { + if (best_for_this_sys_count.page_count () < page_count + && best_for_this_sys_count.average_force () > 0) + break; + + if (best_for_this_sys_count.demerits_ >= BAD_SPACING_PENALTY) + break; + } } /* try a larger number of systems than the ideal line breaking number. This - is more or less C&P, but the loop bounds make it difficult to try something - like do {...} while (flip(&d) != UP). */ + is more or less C&P. */ bound = ideal_line_division; - for (vsize sys_count = ideal_sys_count+1; sys_count <= max_sys_count; sys_count++) + for (vsize sys_count = ideal_sys_count + 1; sys_count <= max_sys_count; sys_count++) { Real best_demerits_for_this_sys_count = infinity_f; set_current_breakpoints (0, end, sys_count, bound); if (debug_page_breaking_scoring) - message (_f ("trying %d systems", (int)sys_count)); + message (_f ("trying %d systems", (int)sys_count)); for (vsize i = 0; i < current_configuration_count (); i++) - { - vsize min_p_count = min_page_count (i, first_page_num); - Page_spacing_result cur; - - if (min_p_count > page_count) - continue; - else if (scm_is_integer (forced_page_count)) - cur = space_systems_on_n_pages (i, page_count, first_page_num); - else - cur = space_systems_on_best_pages (i, first_page_num); - - if (cur.demerits_ < best.demerits_) - { - best = cur; - best_division = current_configuration (i); - } - - if (cur.demerits_ < best_demerits_for_this_sys_count) - { - best_demerits_for_this_sys_count = cur.demerits_; - bound = current_configuration (i); - } - } + { + vsize min_p_count = min_page_count (i, first_page_num); + Page_spacing_result cur; + + if (min_p_count > page_count) + continue; + else if (scm_is_integer (forced_page_count)) + cur = space_systems_on_n_pages (i, page_count, first_page_num); + else + cur = space_systems_on_best_pages (i, first_page_num); + + if (cur.demerits_ < best.demerits_) + { + best = cur; + best_division = current_configuration (i); + } + + if (cur.demerits_ < best_demerits_for_this_sys_count) + { + best_demerits_for_this_sys_count = cur.demerits_; + bound = current_configuration (i); + } + } if (debug_page_breaking_scoring) - message (_f ("best score for this sys-count: %f", best_demerits_for_this_sys_count)); + message (_f ("best score for this sys-count: %f", best_demerits_for_this_sys_count)); if (best_demerits_for_this_sys_count >= BAD_SPACING_PENALTY - && !(best.system_count_status_ & SYSTEM_COUNT_TOO_FEW)) - break; + && !(best.system_count_status_ & SYSTEM_COUNT_TOO_FEW)) + break; } message (_ ("Drawing systems...")); diff --git a/lily/ottava-bracket.cc b/lily/ottava-bracket.cc index 1fa77ec799..f70a30b404 100644 --- a/lily/ottava-bracket.cc +++ b/lily/ottava-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,6 +17,7 @@ along with LilyPond. If not, see . */ +#include "axis-group-interface.hh" #include "text-interface.hh" #include "spanner.hh" #include "font-interface.hh" @@ -55,110 +56,106 @@ Ottava_bracket::print (SCM smob) Output_def *layout = me->layout (); Drul_array broken; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Item *b = me->get_bound (d); broken[d] = (b->break_status_dir () != CENTER); if (Note_column::has_interface (b)) - { - extract_grob_set (b, "note-heads", heads); - common = common_refpoint_of_array (heads, common, X_AXIS); - for (vsize i = 0; i < heads.size (); i++) - { - Grob *h = heads[i]; - Grob *dots = Rhythmic_head::get_dots (h); - if (dots) - common = dots->common_refpoint (common, X_AXIS); - } - } + { + extract_grob_set (b, "note-heads", heads); + common = common_refpoint_of_array (heads, common, X_AXIS); + for (vsize i = 0; i < heads.size (); i++) + { + Grob *h = heads[i]; + Grob *dots = Rhythmic_head::get_dots (h); + if (dots) + common = dots->common_refpoint (common, X_AXIS); + } + } } - while (flip (&d) != LEFT); SCM properties = Font_interface::text_font_alist_chain (me); SCM markup = me->get_property ("text"); Stencil text; if (Text_interface::is_markup (markup)) text = *unsmob_stencil (Text_interface::interpret_markup (layout->self_scm (), - properties, markup)); + properties, markup)); Drul_array shorten = robust_scm2interval (me->get_property ("shorten-pair"), - Interval (0, 0)); + Interval (0, 0)); /* TODO: we should check if there are ledgers, and modify length of the spanner to that. */ - do + for (LEFT_and_RIGHT (d)) { Item *b = me->get_bound (d); Interval ext; if (Note_column::has_interface (b)) - { - extract_grob_set (b, "note-heads", heads); - for (vsize i = 0; i < heads.size (); i++) - { - Grob *h = heads[i]; - ext.unite (h->extent (common, X_AXIS)); - Grob *dots = Rhythmic_head::get_dots (h); - - if (dots && d == RIGHT) - ext.unite (dots->extent (common, X_AXIS)); - } - } + { + extract_grob_set (b, "note-heads", heads); + for (vsize i = 0; i < heads.size (); i++) + { + Grob *h = heads[i]; + ext.unite (h->extent (common, X_AXIS)); + Grob *dots = Rhythmic_head::get_dots (h); + + if (dots && d == RIGHT) + ext.unite (dots->extent (common, X_AXIS)); + } + } if (ext.is_empty ()) - ext = robust_relative_extent (b, common, X_AXIS); + ext = robust_relative_extent (b, common, X_AXIS); if (broken[d]) - { - span_points[d] = b->extent (common, X_AXIS)[RIGHT]; - shorten[d] = 0.; - } + { + span_points[d] = Axis_group_interface::generic_bound_extent (b, common, X_AXIS)[RIGHT]; + shorten[d] = 0.; + } else - span_points[d] = ext[d]; + span_points[d] = ext[d]; } - while (flip (&d) != LEFT); /* 0.3 is ~ italic correction. */ Real text_size = text.extent (X_AXIS).is_empty () - ? 0.0 : text.extent (X_AXIS)[RIGHT] + 0.3; + ? 0.0 : text.extent (X_AXIS)[RIGHT] + 0.3; span_points[LEFT] = min (span_points[LEFT], - (span_points[RIGHT] - text_size - - robust_scm2double (me->get_property ("minimum-length"), -1.0))); + (span_points[RIGHT] - text_size + - robust_scm2double (me->get_property ("minimum-length"), -1.0))); Interval bracket_span_points = span_points; bracket_span_points[LEFT] += text_size; Drul_array edge_height = robust_scm2interval (me->get_property ("edge-height"), - Interval (1.0, 1.0)); + Interval (1.0, 1.0)); Drul_array flare = robust_scm2interval (me->get_property ("bracket-flare"), - Interval (0, 0)); + Interval (0, 0)); - do + for (LEFT_and_RIGHT (d)) { edge_height[d] *= -get_grob_direction (me); if (broken[d]) - edge_height[d] = 0.0; + edge_height[d] = 0.0; } - while (flip(&d) != LEFT); Stencil b; Interval empty; if (!bracket_span_points.is_empty () && bracket_span_points.length () > 0.001) b = Tuplet_bracket::make_bracket (me, - Y_AXIS, Offset (bracket_span_points.length (), 0), - edge_height, - empty, - flare, shorten); + Y_AXIS, Offset (bracket_span_points.length (), 0), + edge_height, + empty, + flare, shorten); /* The vertical lines should not take space, for the following scenario: @@ -176,8 +173,8 @@ Ottava_bracket::print (SCM smob) */ b = Stencil (Box (b.extent (X_AXIS), - Interval (0.1, 0.1)), - b.expr ()); + Interval (0.1, 0.1)), + b.expr ()); b.translate_axis (bracket_span_points[LEFT], X_AXIS); text.translate_axis (span_points[LEFT], X_AXIS); @@ -190,12 +187,12 @@ Ottava_bracket::print (SCM smob) } ADD_INTERFACE (Ottava_bracket, - "An ottava bracket.", - - /* properties */ - "edge-height " - "bracket-flare " - "shorten-pair " - "minimum-length " - ); + "An ottava bracket.", + + /* properties */ + "edge-height " + "bracket-flare " + "shorten-pair " + "minimum-length " + ); diff --git a/lily/ottava-engraver.cc b/lily/ottava-engraver.cc index fd59b33b8e..bd39702bdb 100644 --- a/lily/ottava-engraver.cc +++ b/lily/ottava-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,6 @@ #include "spanner.hh" #include "text-interface.hh" - class Ottava_spanner_engraver : public Engraver { public: @@ -69,14 +68,14 @@ Ottava_spanner_engraver::process_music () finished_ = span_; span_ = 0; if (Text_interface::is_markup (ott)) - { - span_ = make_spanner ("OttavaBracket", SCM_EOL); - span_->set_property ("text", ott); - - SCM offset (get_property ("middleCOffset")); - if (robust_scm2double (offset, 0) > 0) - span_->set_property ("direction", scm_from_int (DOWN)); - } + { + span_ = make_spanner ("OttavaBracket", SCM_EOL); + span_->set_property ("text", ott); + + SCM offset (get_property ("middleCOffset")); + if (robust_scm2double (offset, 0) > 0) + span_->set_property ("direction", scm_from_int (DOWN)); + } } last_ottavation_ = ott; } @@ -90,7 +89,7 @@ Ottava_spanner_engraver::acknowledge_note_column (Grob_info info) Side_position_interface::add_support (span_, it); if (!span_->get_bound (LEFT)) - span_->set_bound (LEFT, it); + span_->set_bound (LEFT, it); span_->set_bound (RIGHT, it); } } @@ -100,16 +99,14 @@ Ottava_spanner_engraver::typeset_all () { if (finished_) { - Direction d = LEFT; - do - { - if (!finished_->get_bound (RIGHT)) - { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); - finished_->set_bound (d, e); - } - } - while (flip (&d) != LEFT); + for (LEFT_and_RIGHT (d)) + { + if (!finished_->get_bound (RIGHT)) + { + Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); + finished_->set_bound (d, e); + } + } finished_ = 0; } @@ -142,17 +139,17 @@ Ottava_spanner_engraver::finalize () ADD_ACKNOWLEDGER (Ottava_spanner_engraver, note_column); ADD_TRANSLATOR (Ottava_spanner_engraver, - /* doc */ - "Create a text spanner when the ottavation property changes.", - - /* create */ - "OttavaBracket ", - - /* read */ - "middleCOffset " - "ottavation " - "currentMusicalColumn ", - - /* write */ - "" - ); + /* doc */ + "Create a text spanner when the ottavation property changes.", + + /* create */ + "OttavaBracket ", + + /* read */ + "middleCOffset " + "ottavation " + "currentMusicalColumn ", + + /* write */ + "" + ); diff --git a/lily/out/parser.cc b/lily/out/parser.cc index 9c1de4bdbd..b84e63d987 100644 --- a/lily/out/parser.cc +++ b/lily/out/parser.cc @@ -66,272 +66,264 @@ /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { - PREC_TOP = 258, - ADDLYRICS = 259, - PREC_BOT = 260, - ACCEPTS = 261, - ALIAS = 262, - ALTERNATIVE = 263, - BOOK = 264, - BOOKPART = 265, - CHANGE = 266, - CHORDMODE = 267, - CHORDS = 268, - CONSISTS = 269, - CONTEXT = 270, - DEFAULT = 271, - DEFAULTCHILD = 272, - DENIES = 273, - DESCRIPTION = 274, - DRUMMODE = 275, - DRUMS = 276, - FIGUREMODE = 277, - FIGURES = 278, - GROBDESCRIPTIONS = 279, - HEADER = 280, - INVALID = 281, - KEY = 282, - LAYOUT = 283, - LYRICMODE = 284, - LYRICS = 285, - LYRICSTO = 286, - MARK = 287, - MARKUP = 288, - MARKUPLINES = 289, - MIDI = 290, - NAME = 291, - NOTEMODE = 292, - OCTAVE = 293, - ONCE = 294, - OVERRIDE = 295, - PAPER = 296, - PARTIAL = 297, - RELATIVE = 298, - REMOVE = 299, - REPEAT = 300, - REST = 301, - REVERT = 302, - SCORE = 303, - SEQUENTIAL = 304, - SET = 305, - SIMULTANEOUS = 306, - SKIP = 307, - TEMPO = 308, - TIMES = 309, - TRANSPOSE = 310, - TYPE = 311, - UNSET = 312, - WITH = 313, - TIME_T = 314, - NEWCONTEXT = 315, - CHORD_BASS = 316, - CHORD_CARET = 317, - CHORD_COLON = 318, - CHORD_MINUS = 319, - CHORD_SLASH = 320, - ANGLE_OPEN = 321, - ANGLE_CLOSE = 322, - DOUBLE_ANGLE_OPEN = 323, - DOUBLE_ANGLE_CLOSE = 324, - E_BACKSLASH = 325, - E_ANGLE_CLOSE = 326, - E_CHAR = 327, - E_CLOSE = 328, - E_EXCLAMATION = 329, - E_BRACKET_OPEN = 330, - E_OPEN = 331, - E_BRACKET_CLOSE = 332, - E_ANGLE_OPEN = 333, - E_PLUS = 334, - E_TILDE = 335, - EXTENDER = 336, - FIGURE_CLOSE = 337, - FIGURE_OPEN = 338, - FIGURE_SPACE = 339, - HYPHEN = 340, - CHORDMODIFIERS = 341, - LYRIC_MARKUP = 342, - MULTI_MEASURE_REST = 343, - DIGIT = 344, - E_UNSIGNED = 345, - UNSIGNED = 346, - EXPECT_MARKUP = 347, - EXPECT_MUSIC = 348, - EXPECT_SCM = 349, - EXPECT_MARKUP_LIST = 350, + PREC_BOT = 258, + REPEAT = 259, + ALTERNATIVE = 260, + COMPOSITE = 261, + ADDLYRICS = 262, + DEFAULT = 263, + FUNCTION_ARGLIST = 264, + DURATION_IDENTIFIER = 265, + REAL = 266, + UNSIGNED = 267, + TONICNAME_PITCH = 268, + NOTENAME_PITCH = 269, + PITCH_IDENTIFIER = 270, + NUMBER_IDENTIFIER = 271, + PREC_TOP = 272, + ACCEPTS = 273, + ALIAS = 274, + BOOK = 275, + BOOKPART = 276, + CHANGE = 277, + CHORDMODE = 278, + CHORDS = 279, + CONSISTS = 280, + CONTEXT = 281, + DEFAULTCHILD = 282, + DENIES = 283, + DESCRIPTION = 284, + DRUMMODE = 285, + DRUMS = 286, + FIGUREMODE = 287, + FIGURES = 288, + HEADER = 289, + INVALID = 290, + LAYOUT = 291, + LYRICMODE = 292, + LYRICS = 293, + LYRICSTO = 294, + MARKUP = 295, + MARKUPLIST = 296, + MIDI = 297, + NAME = 298, + NOTEMODE = 299, + OVERRIDE = 300, + PAPER = 301, + REMOVE = 302, + REST = 303, + REVERT = 304, + SCORE = 305, + SEQUENTIAL = 306, + SET = 307, + SIMULTANEOUS = 308, + TEMPO = 309, + TYPE = 310, + UNSET = 311, + WITH = 312, + NEWCONTEXT = 313, + CHORD_BASS = 314, + CHORD_CARET = 315, + CHORD_COLON = 316, + CHORD_MINUS = 317, + CHORD_SLASH = 318, + ANGLE_OPEN = 319, + ANGLE_CLOSE = 320, + DOUBLE_ANGLE_OPEN = 321, + DOUBLE_ANGLE_CLOSE = 322, + E_BACKSLASH = 323, + E_ANGLE_CLOSE = 324, + E_CHAR = 325, + E_CLOSE = 326, + E_EXCLAMATION = 327, + E_BRACKET_OPEN = 328, + E_OPEN = 329, + E_BRACKET_CLOSE = 330, + E_ANGLE_OPEN = 331, + E_PLUS = 332, + E_TILDE = 333, + EXTENDER = 334, + FIGURE_CLOSE = 335, + FIGURE_OPEN = 336, + FIGURE_SPACE = 337, + HYPHEN = 338, + CHORDMODIFIERS = 339, + LYRIC_MARKUP = 340, + MULTI_MEASURE_REST = 341, + E_UNSIGNED = 342, + EXPECT_MARKUP = 343, + EXPECT_PITCH = 344, + EXPECT_DURATION = 345, + EXPECT_SCM = 346, + BACKUP = 347, + REPARSE = 348, + EXPECT_MARKUP_LIST = 349, + EXPECT_OPTIONAL = 350, EXPECT_NO_MORE_ARGS = 351, - BOOK_IDENTIFIER = 352, - CHORDMODIFIER_PITCH = 353, - CHORD_MODIFIER = 354, - CHORD_REPETITION = 355, - CONTEXT_DEF_IDENTIFIER = 356, - CONTEXT_MOD_IDENTIFIER = 357, - DRUM_PITCH = 358, - DURATION_IDENTIFIER = 359, + EMBEDDED_LILY = 352, + BOOK_IDENTIFIER = 353, + CHORDMODIFIER_PITCH = 354, + CHORD_MODIFIER = 355, + CHORD_REPETITION = 356, + CONTEXT_DEF_IDENTIFIER = 357, + CONTEXT_MOD_IDENTIFIER = 358, + DRUM_PITCH = 359, EVENT_IDENTIFIER = 360, - FRACTION = 361, - LYRICS_STRING = 362, - LYRIC_MARKUP_IDENTIFIER = 363, - MARKUP_FUNCTION = 364, - MARKUP_LIST_FUNCTION = 365, - MARKUP_IDENTIFIER = 366, - MARKUPLINES_IDENTIFIER = 367, - MUSIC_FUNCTION = 368, - MUSIC_IDENTIFIER = 369, - NOTENAME_PITCH = 370, - NUMBER_IDENTIFIER = 371, + EVENT_FUNCTION = 361, + FRACTION = 362, + LYRICS_STRING = 363, + LYRIC_ELEMENT = 364, + LYRIC_MARKUP_IDENTIFIER = 365, + MARKUP_FUNCTION = 366, + MARKUP_LIST_FUNCTION = 367, + MARKUP_IDENTIFIER = 368, + MARKUPLIST_IDENTIFIER = 369, + MUSIC_FUNCTION = 370, + MUSIC_IDENTIFIER = 371, OUTPUT_DEF_IDENTIFIER = 372, - REAL = 373, - RESTNAME = 374, + RESTNAME = 373, + SCM_FUNCTION = 374, SCM_IDENTIFIER = 375, SCM_TOKEN = 376, SCORE_IDENTIFIER = 377, STRING = 378, STRING_IDENTIFIER = 379, - TONICNAME_PITCH = 380, - UNARY_MINUS = 381 + UNARY_MINUS = 380 }; #endif /* Tokens. */ -#define PREC_TOP 258 -#define ADDLYRICS 259 -#define PREC_BOT 260 -#define ACCEPTS 261 -#define ALIAS 262 -#define ALTERNATIVE 263 -#define BOOK 264 -#define BOOKPART 265 -#define CHANGE 266 -#define CHORDMODE 267 -#define CHORDS 268 -#define CONSISTS 269 -#define CONTEXT 270 -#define DEFAULT 271 -#define DEFAULTCHILD 272 -#define DENIES 273 -#define DESCRIPTION 274 -#define DRUMMODE 275 -#define DRUMS 276 -#define FIGUREMODE 277 -#define FIGURES 278 -#define GROBDESCRIPTIONS 279 -#define HEADER 280 -#define INVALID 281 -#define KEY 282 -#define LAYOUT 283 -#define LYRICMODE 284 -#define LYRICS 285 -#define LYRICSTO 286 -#define MARK 287 -#define MARKUP 288 -#define MARKUPLINES 289 -#define MIDI 290 -#define NAME 291 -#define NOTEMODE 292 -#define OCTAVE 293 -#define ONCE 294 -#define OVERRIDE 295 -#define PAPER 296 -#define PARTIAL 297 -#define RELATIVE 298 -#define REMOVE 299 -#define REPEAT 300 -#define REST 301 -#define REVERT 302 -#define SCORE 303 -#define SEQUENTIAL 304 -#define SET 305 -#define SIMULTANEOUS 306 -#define SKIP 307 -#define TEMPO 308 -#define TIMES 309 -#define TRANSPOSE 310 -#define TYPE 311 -#define UNSET 312 -#define WITH 313 -#define TIME_T 314 -#define NEWCONTEXT 315 -#define CHORD_BASS 316 -#define CHORD_CARET 317 -#define CHORD_COLON 318 -#define CHORD_MINUS 319 -#define CHORD_SLASH 320 -#define ANGLE_OPEN 321 -#define ANGLE_CLOSE 322 -#define DOUBLE_ANGLE_OPEN 323 -#define DOUBLE_ANGLE_CLOSE 324 -#define E_BACKSLASH 325 -#define E_ANGLE_CLOSE 326 -#define E_CHAR 327 -#define E_CLOSE 328 -#define E_EXCLAMATION 329 -#define E_BRACKET_OPEN 330 -#define E_OPEN 331 -#define E_BRACKET_CLOSE 332 -#define E_ANGLE_OPEN 333 -#define E_PLUS 334 -#define E_TILDE 335 -#define EXTENDER 336 -#define FIGURE_CLOSE 337 -#define FIGURE_OPEN 338 -#define FIGURE_SPACE 339 -#define HYPHEN 340 -#define CHORDMODIFIERS 341 -#define LYRIC_MARKUP 342 -#define MULTI_MEASURE_REST 343 -#define DIGIT 344 -#define E_UNSIGNED 345 -#define UNSIGNED 346 -#define EXPECT_MARKUP 347 -#define EXPECT_MUSIC 348 -#define EXPECT_SCM 349 -#define EXPECT_MARKUP_LIST 350 +#define PREC_BOT 258 +#define REPEAT 259 +#define ALTERNATIVE 260 +#define COMPOSITE 261 +#define ADDLYRICS 262 +#define DEFAULT 263 +#define FUNCTION_ARGLIST 264 +#define DURATION_IDENTIFIER 265 +#define REAL 266 +#define UNSIGNED 267 +#define TONICNAME_PITCH 268 +#define NOTENAME_PITCH 269 +#define PITCH_IDENTIFIER 270 +#define NUMBER_IDENTIFIER 271 +#define PREC_TOP 272 +#define ACCEPTS 273 +#define ALIAS 274 +#define BOOK 275 +#define BOOKPART 276 +#define CHANGE 277 +#define CHORDMODE 278 +#define CHORDS 279 +#define CONSISTS 280 +#define CONTEXT 281 +#define DEFAULTCHILD 282 +#define DENIES 283 +#define DESCRIPTION 284 +#define DRUMMODE 285 +#define DRUMS 286 +#define FIGUREMODE 287 +#define FIGURES 288 +#define HEADER 289 +#define INVALID 290 +#define LAYOUT 291 +#define LYRICMODE 292 +#define LYRICS 293 +#define LYRICSTO 294 +#define MARKUP 295 +#define MARKUPLIST 296 +#define MIDI 297 +#define NAME 298 +#define NOTEMODE 299 +#define OVERRIDE 300 +#define PAPER 301 +#define REMOVE 302 +#define REST 303 +#define REVERT 304 +#define SCORE 305 +#define SEQUENTIAL 306 +#define SET 307 +#define SIMULTANEOUS 308 +#define TEMPO 309 +#define TYPE 310 +#define UNSET 311 +#define WITH 312 +#define NEWCONTEXT 313 +#define CHORD_BASS 314 +#define CHORD_CARET 315 +#define CHORD_COLON 316 +#define CHORD_MINUS 317 +#define CHORD_SLASH 318 +#define ANGLE_OPEN 319 +#define ANGLE_CLOSE 320 +#define DOUBLE_ANGLE_OPEN 321 +#define DOUBLE_ANGLE_CLOSE 322 +#define E_BACKSLASH 323 +#define E_ANGLE_CLOSE 324 +#define E_CHAR 325 +#define E_CLOSE 326 +#define E_EXCLAMATION 327 +#define E_BRACKET_OPEN 328 +#define E_OPEN 329 +#define E_BRACKET_CLOSE 330 +#define E_ANGLE_OPEN 331 +#define E_PLUS 332 +#define E_TILDE 333 +#define EXTENDER 334 +#define FIGURE_CLOSE 335 +#define FIGURE_OPEN 336 +#define FIGURE_SPACE 337 +#define HYPHEN 338 +#define CHORDMODIFIERS 339 +#define LYRIC_MARKUP 340 +#define MULTI_MEASURE_REST 341 +#define E_UNSIGNED 342 +#define EXPECT_MARKUP 343 +#define EXPECT_PITCH 344 +#define EXPECT_DURATION 345 +#define EXPECT_SCM 346 +#define BACKUP 347 +#define REPARSE 348 +#define EXPECT_MARKUP_LIST 349 +#define EXPECT_OPTIONAL 350 #define EXPECT_NO_MORE_ARGS 351 -#define BOOK_IDENTIFIER 352 -#define CHORDMODIFIER_PITCH 353 -#define CHORD_MODIFIER 354 -#define CHORD_REPETITION 355 -#define CONTEXT_DEF_IDENTIFIER 356 -#define CONTEXT_MOD_IDENTIFIER 357 -#define DRUM_PITCH 358 -#define DURATION_IDENTIFIER 359 +#define EMBEDDED_LILY 352 +#define BOOK_IDENTIFIER 353 +#define CHORDMODIFIER_PITCH 354 +#define CHORD_MODIFIER 355 +#define CHORD_REPETITION 356 +#define CONTEXT_DEF_IDENTIFIER 357 +#define CONTEXT_MOD_IDENTIFIER 358 +#define DRUM_PITCH 359 #define EVENT_IDENTIFIER 360 -#define FRACTION 361 -#define LYRICS_STRING 362 -#define LYRIC_MARKUP_IDENTIFIER 363 -#define MARKUP_FUNCTION 364 -#define MARKUP_LIST_FUNCTION 365 -#define MARKUP_IDENTIFIER 366 -#define MARKUPLINES_IDENTIFIER 367 -#define MUSIC_FUNCTION 368 -#define MUSIC_IDENTIFIER 369 -#define NOTENAME_PITCH 370 -#define NUMBER_IDENTIFIER 371 +#define EVENT_FUNCTION 361 +#define FRACTION 362 +#define LYRICS_STRING 363 +#define LYRIC_ELEMENT 364 +#define LYRIC_MARKUP_IDENTIFIER 365 +#define MARKUP_FUNCTION 366 +#define MARKUP_LIST_FUNCTION 367 +#define MARKUP_IDENTIFIER 368 +#define MARKUPLIST_IDENTIFIER 369 +#define MUSIC_FUNCTION 370 +#define MUSIC_IDENTIFIER 371 #define OUTPUT_DEF_IDENTIFIER 372 -#define REAL 373 -#define RESTNAME 374 +#define RESTNAME 373 +#define SCM_FUNCTION 374 #define SCM_IDENTIFIER 375 #define SCM_TOKEN 376 #define SCORE_IDENTIFIER 377 #define STRING 378 #define STRING_IDENTIFIER 379 -#define TONICNAME_PITCH 380 -#define UNARY_MINUS 381 +#define UNARY_MINUS 380 /* Copy the first part of user declarations. */ -#line 21 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 30 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" -#define YYDEBUG 1 -#define YYERROR_VERBOSE 1 -#define YYPARSE_PARAM my_lily_parser -#define YYLEX_PARAM my_lily_parser -#define PARSER ((Lily_parser *) my_lily_parser) - -#define yyerror PARSER->parser_error +#define yyerror Lily_parser::parser_error /* We use custom location type: Input objects */ #define YYLTYPE Input @@ -339,7 +331,7 @@ ((Current).set_location ((Rhs)[1], (Rhs)[N])) -#line 67 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 108 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" // -*-Fundamental-*- /* @@ -371,20 +363,51 @@ using namespace std; #include "main.hh" #include "misc.hh" #include "music.hh" -#include "music.hh" #include "output-def.hh" #include "paper-book.hh" -#include "program-option.hh" #include "scm-hash.hh" #include "score.hh" #include "text-interface.hh" #include "warn.hh" +void +Lily_parser::parser_error (Input const *i, Lily_parser *parser, string s) +{ + parser->parser_error (*i, s); +} + +#define MYBACKUP(Token, Value, Location) \ +do \ + if (yychar == YYEMPTY) \ + { \ + if (Token) \ + parser->lexer_->push_extra_token (Token, Value); \ + parser->lexer_->push_extra_token (BACKUP); \ + } else { \ + parser->parser_error \ + (Location, _("Too much lookahead")); \ + } \ +while (0) + + +#define MYREPARSE(Location, Pred, Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + parser->lexer_->push_extra_token (Token, Value); \ + parser->lexer_->push_extra_token (REPARSE, \ + Pred); \ + } else { \ + parser->parser_error \ + (Location, _("Too much lookahead")); \ + } \ +while (0) + /* Enabling traces. */ #ifndef YYDEBUG -# define YYDEBUG 0 +# define YYDEBUG 1 #endif /* Enabling verbose error messages. */ @@ -392,7 +415,7 @@ using namespace std; # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else -# define YYERROR_VERBOSE 0 +# define YYERROR_VERBOSE 1 #endif /* Enabling the token table. */ @@ -402,18 +425,17 @@ using namespace std; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 110 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 182 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Book *book; Output_def *outputdef; SCM scm; std::string *string; - Music *music; Score *score; int i; } /* Line 187 of yacc.c. */ -#line 417 "out/parser.cc" +#line 439 "out/parser.cc" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -435,7 +457,7 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ -#line 120 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 191 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" #define MY_MAKE_MUSIC(x, spot) make_music_with_input (ly_symbol2scm (x), spot) @@ -448,7 +470,11 @@ typedef struct YYLTYPE scm_apply_0 (proc, args) /* Syntactic Sugar. */ #define MAKE_SYNTAX(name, location, ...) \ - LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant (name), scm_list_n (PARSER->self_scm (), make_input (location), __VA_ARGS__, SCM_UNDEFINED)); + LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant (name), scm_list_n (parser->self_scm (), make_input (location) , ##__VA_ARGS__, SCM_UNDEFINED)) +#define START_MAKE_SYNTAX(name, ...) \ + scm_list_n (ly_lily_module_constant (name) , ##__VA_ARGS__, SCM_UNDEFINED) +#define FINISH_MAKE_SYNTAX(start, location, ...) \ + LOWLEVEL_MAKE_SYNTAX (scm_car (start), scm_cons2 (parser->self_scm (), make_input (location), scm_append_x (scm_list_2 (scm_cdr (start), scm_list_n (__VA_ARGS__, SCM_UNDEFINED))))) SCM get_next_unique_context_id (); SCM get_next_unique_lyrics_context_id (); @@ -463,22 +489,21 @@ SCM get_next_unique_lyrics_context_id (); static Music *make_music_with_input (SCM name, Input where); -SCM make_music_relative (Pitch start, SCM music, Input loc); -SCM run_music_function (Lily_parser *, SCM expr); -SCM get_first_context_id (SCM type, Music *m); -SCM make_chord_elements (SCM pitch, SCM dur, SCM modification_list); +SCM check_scheme_arg (Lily_parser *parser, Input loc, + SCM arg, SCM args, SCM pred); +SCM loc_on_music (Input loc, SCM arg); +SCM make_chord_elements (Input loc, SCM pitch, SCM dur, SCM modification_list); SCM make_chord_step (int step, Rational alter); SCM make_simple_markup (SCM a); bool is_duration (int t); bool is_regular_identifier (SCM id); -bool ly_input_procedure_p (SCM x); -int yylex (YYSTYPE *s, YYLTYPE *loc, void *v); +int yylex (YYSTYPE *s, YYLTYPE *loc, Lily_parser *parser); void set_music_properties (Music *p, SCM a); /* Line 216 of yacc.c. */ -#line 482 "out/parser.cc" +#line 507 "out/parser.cc" #ifdef short # undef short @@ -693,22 +718,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 +#define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1916 +#define YYLAST 4878 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 148 +#define YYNTOKENS 147 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 145 +#define YYNNTS 186 /* YYNRULES -- Number of rules. */ -#define YYNRULES 415 +#define YYNRULES 529 /* YYNRULES -- Number of states. */ -#define YYNSTATES 585 +#define YYNSTATES 784 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 381 +#define YYMAXUTOK 380 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -719,16 +744,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 146, 2, 2, 2, 2, 2, 139, - 137, 138, 143, 127, 140, 126, 132, 144, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 145, 2, - 2, 131, 2, 147, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 145, 2, 2, 2, 2, 2, 142, + 140, 141, 144, 128, 143, 127, 133, 17, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 10, 2, + 2, 132, 2, 146, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 134, 2, 135, 141, 142, 2, 2, 2, 2, + 2, 137, 2, 138, 135, 136, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 129, 133, 130, 136, 2, 2, 2, + 2, 2, 2, 130, 134, 131, 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -742,19 +767,19 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 128 + 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, + 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 129 }; #if YYDEBUG @@ -762,210 +787,268 @@ static const yytype_uint8 yytranslate[] = YYRHS. */ static const yytype_uint16 yyprhs[] = { - 0, 0, 3, 4, 7, 10, 13, 16, 18, 20, - 22, 24, 26, 28, 30, 32, 34, 36, 37, 40, - 45, 47, 49, 53, 58, 60, 62, 64, 66, 68, - 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, - 93, 94, 96, 100, 103, 106, 111, 112, 114, 117, - 120, 123, 126, 129, 132, 135, 138, 143, 144, 146, - 149, 152, 155, 158, 161, 164, 167, 172, 174, 176, - 179, 182, 185, 187, 190, 192, 194, 196, 198, 201, - 205, 208, 211, 214, 219, 225, 228, 229, 232, 235, - 238, 240, 242, 243, 248, 254, 259, 263, 268, 272, - 274, 276, 278, 280, 281, 287, 290, 292, 293, 295, - 296, 299, 302, 304, 306, 308, 310, 312, 314, 318, - 322, 326, 330, 332, 336, 340, 344, 346, 348, 350, - 353, 354, 357, 359, 365, 371, 375, 377, 382, 385, - 389, 391, 393, 395, 397, 399, 401, 403, 405, 407, - 409, 411, 415, 418, 419, 423, 424, 428, 429, 434, - 435, 440, 443, 446, 447, 452, 457, 459, 462, 464, - 468, 471, 477, 481, 483, 485, 487, 489, 491, 493, - 495, 497, 499, 501, 504, 507, 509, 513, 519, 523, - 528, 531, 533, 536, 538, 540, 544, 546, 548, 550, - 552, 554, 556, 558, 560, 562, 565, 569, 573, 575, - 577, 581, 585, 586, 589, 595, 598, 600, 602, 607, - 610, 615, 618, 620, 623, 625, 627, 629, 631, 634, - 637, 640, 642, 645, 647, 650, 654, 655, 658, 660, - 663, 665, 667, 670, 673, 675, 677, 679, 681, 683, - 685, 687, 689, 691, 693, 695, 697, 699, 701, 703, - 705, 707, 708, 710, 713, 716, 718, 721, 723, 726, - 728, 731, 734, 736, 739, 742, 744, 746, 748, 750, - 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, - 772, 774, 776, 778, 779, 781, 784, 787, 789, 793, - 797, 799, 803, 804, 807, 809, 812, 814, 816, 818, - 820, 822, 824, 826, 828, 830, 833, 836, 839, 841, - 843, 845, 847, 849, 852, 853, 856, 860, 861, 863, - 870, 873, 876, 879, 881, 883, 886, 888, 890, 893, - 898, 899, 902, 904, 906, 909, 912, 914, 916, 918, - 920, 924, 926, 929, 932, 934, 938, 942, 946, 948, - 950, 954, 958, 961, 963, 965, 967, 969, 972, 975, - 977, 979, 981, 983, 984, 987, 988, 991, 993, 994, - 998, 1000, 1001, 1005, 1007, 1008, 1012, 1014, 1017, 1019, - 1021, 1023, 1025, 1027, 1030, 1034, 1035, 1038, 1041, 1044, - 1048, 1052, 1054, 1056, 1060, 1064, 1066, 1069, 1071, 1073, - 1075, 1077, 1078, 1084, 1087, 1090 + 0, 0, 3, 5, 6, 10, 11, 14, 17, 20, + 23, 24, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, + 63, 65, 67, 69, 71, 73, 75, 77, 80, 81, + 83, 87, 89, 92, 93, 96, 101, 103, 105, 109, + 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, + 134, 136, 138, 140, 142, 144, 149, 151, 153, 155, + 156, 158, 161, 164, 167, 172, 173, 175, 178, 181, + 184, 187, 190, 193, 194, 198, 201, 204, 209, 210, + 212, 215, 218, 221, 224, 227, 228, 232, 235, 238, + 243, 245, 247, 248, 252, 255, 258, 260, 263, 265, + 267, 269, 271, 273, 274, 280, 283, 287, 290, 291, + 295, 298, 303, 309, 312, 313, 316, 319, 323, 325, + 327, 329, 331, 333, 335, 337, 339, 341, 346, 353, + 356, 358, 361, 365, 367, 369, 371, 372, 378, 381, + 383, 386, 387, 389, 390, 393, 396, 399, 401, 403, + 405, 408, 410, 412, 414, 416, 418, 420, 424, 428, + 432, 437, 442, 447, 452, 458, 464, 470, 472, 477, + 482, 484, 489, 494, 496, 498, 500, 502, 507, 512, + 517, 522, 527, 532, 537, 543, 549, 555, 560, 565, + 570, 574, 578, 580, 582, 584, 588, 592, 596, 600, + 602, 604, 608, 612, 617, 622, 627, 631, 633, 635, + 637, 641, 645, 650, 655, 660, 664, 668, 672, 674, + 677, 681, 685, 687, 690, 694, 698, 700, 702, 704, + 706, 708, 711, 713, 717, 721, 726, 731, 736, 739, + 740, 743, 745, 747, 749, 752, 757, 762, 765, 769, + 771, 773, 775, 777, 779, 781, 783, 785, 787, 788, + 792, 793, 798, 801, 802, 807, 812, 814, 817, 819, + 823, 826, 832, 836, 838, 840, 842, 844, 846, 848, + 850, 852, 854, 856, 859, 862, 864, 868, 874, 878, + 883, 886, 888, 890, 892, 896, 898, 900, 902, 904, + 906, 908, 910, 912, 914, 916, 918, 921, 924, 928, + 932, 934, 936, 940, 944, 945, 948, 954, 957, 959, + 961, 963, 966, 969, 971, 973, 975, 977, 979, 981, + 983, 984, 987, 989, 992, 994, 996, 999, 1002, 1004, + 1007, 1010, 1012, 1015, 1017, 1019, 1021, 1023, 1025, 1027, + 1029, 1031, 1033, 1035, 1037, 1039, 1041, 1043, 1045, 1047, + 1049, 1050, 1052, 1055, 1058, 1060, 1063, 1065, 1068, 1070, + 1073, 1076, 1078, 1081, 1084, 1086, 1088, 1090, 1092, 1094, + 1096, 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, + 1116, 1118, 1120, 1121, 1123, 1125, 1128, 1131, 1133, 1137, + 1141, 1142, 1145, 1147, 1150, 1152, 1154, 1156, 1158, 1160, + 1162, 1164, 1166, 1169, 1172, 1175, 1177, 1179, 1181, 1183, + 1185, 1188, 1189, 1192, 1196, 1197, 1199, 1206, 1209, 1212, + 1214, 1217, 1219, 1221, 1223, 1227, 1231, 1235, 1239, 1242, + 1247, 1248, 1251, 1253, 1255, 1258, 1261, 1263, 1265, 1267, + 1269, 1273, 1275, 1278, 1281, 1283, 1287, 1291, 1295, 1297, + 1299, 1303, 1307, 1310, 1312, 1314, 1317, 1320, 1322, 1324, + 1326, 1328, 1330, 1332, 1333, 1336, 1337, 1340, 1342, 1343, + 1347, 1349, 1350, 1354, 1356, 1357, 1361, 1363, 1366, 1368, + 1369, 1373, 1375, 1377, 1379, 1381, 1384, 1387, 1391, 1392, + 1395, 1398, 1401, 1405, 1409, 1411, 1413, 1417, 1421, 1423, + 1426, 1428, 1430, 1432, 1434, 1435, 1441, 1444, 1447, 1450 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 149, 0, -1, -1, 149, 150, -1, 149, 155, -1, - 149, 1, -1, 149, 26, -1, 153, -1, 159, -1, - 161, -1, 163, -1, 182, -1, 278, -1, 276, -1, - 166, -1, 121, -1, 120, -1, -1, 152, 155, -1, - 25, 129, 152, 130, -1, 123, -1, 107, -1, 154, - 131, 156, -1, 154, 204, 131, 156, -1, 151, -1, - 163, -1, 159, -1, 161, -1, 166, -1, 157, -1, - 172, -1, 225, -1, 266, -1, 211, -1, 151, -1, - 278, -1, 276, -1, 89, -1, 178, -1, 15, 129, - 158, 130, -1, -1, 101, -1, 158, 24, 151, -1, - 158, 207, -1, 158, 178, -1, 9, 129, 160, 130, - -1, -1, 97, -1, 160, 165, -1, 160, 161, -1, - 160, 163, -1, 160, 182, -1, 160, 278, -1, 160, - 276, -1, 160, 153, -1, 160, 1, -1, 10, 129, - 162, 130, -1, -1, 97, -1, 162, 165, -1, 162, - 163, -1, 162, 182, -1, 162, 278, -1, 162, 276, - -1, 162, 153, -1, 162, 1, -1, 48, 129, 164, - 130, -1, 172, -1, 122, -1, 164, 153, -1, 164, - 166, -1, 164, 1, -1, 166, -1, 169, 130, -1, - 41, -1, 35, -1, 28, -1, 167, -1, 168, 129, - -1, 168, 129, 117, -1, 169, 155, -1, 169, 157, - -1, 169, 1, -1, 53, 243, 131, 265, -1, 53, - 213, 243, 131, 265, -1, 53, 213, -1, -1, 171, - 172, -1, 171, 151, -1, 171, 1, -1, 177, -1, - 182, -1, -1, 8, 129, 171, 130, -1, 45, 212, - 271, 172, 173, -1, 49, 129, 171, 130, -1, 129, - 171, 130, -1, 51, 129, 171, 130, -1, 68, 171, - 69, -1, 214, -1, 114, -1, 210, -1, 202, -1, - -1, 58, 179, 129, 181, 130, -1, 58, 102, -1, - 102, -1, -1, 178, -1, -1, 181, 207, -1, 181, - 102, -1, 191, -1, 183, -1, 176, -1, 175, -1, - 151, -1, 212, -1, 93, 188, 172, -1, 92, 188, - 278, -1, 92, 188, 212, -1, 94, 188, 184, -1, - 96, -1, 92, 187, 278, -1, 92, 187, 212, -1, - 94, 187, 184, -1, 96, -1, 185, -1, 186, -1, - 113, 188, -1, -1, 131, 212, -1, 189, -1, 15, - 212, 190, 180, 172, -1, 60, 212, 190, 180, 172, - -1, 54, 245, 172, -1, 174, -1, 55, 236, 236, - 172, -1, 192, 183, -1, 193, 180, 183, -1, 194, - -1, 200, -1, 37, -1, 20, -1, 22, -1, 12, - -1, 29, -1, 21, -1, 23, -1, 13, -1, 30, - -1, 43, 240, 172, -1, 43, 182, -1, -1, 4, - 196, 183, -1, -1, 4, 197, 114, -1, -1, 195, - 4, 198, 183, -1, -1, 195, 4, 199, 114, -1, - 183, 195, -1, 114, 195, -1, -1, 31, 212, 201, - 172, -1, 11, 123, 131, 123, -1, 151, -1, 203, - 151, -1, 203, -1, 123, 131, 213, -1, 57, 212, - -1, 40, 212, 204, 131, 213, -1, 47, 212, 151, - -1, 14, -1, 44, -1, 6, -1, 17, -1, 18, - -1, 7, -1, 56, -1, 19, -1, 36, -1, 205, - -1, 206, 123, -1, 206, 151, -1, 212, -1, 212, - 132, 212, -1, 40, 208, 204, 131, 213, -1, 47, - 208, 151, -1, 50, 208, 131, 213, -1, 57, 208, - -1, 209, -1, 39, 209, -1, 123, -1, 124, -1, - 211, 127, 211, -1, 123, -1, 107, -1, 124, -1, - 211, -1, 107, -1, 269, -1, 151, -1, 278, -1, - 89, -1, 257, 224, -1, 100, 242, 224, -1, 88, - 242, 224, -1, 222, -1, 215, -1, 216, 242, 224, - -1, 66, 217, 67, -1, -1, 217, 218, -1, 235, - 272, 273, 230, 224, -1, 103, 224, -1, 220, -1, - 113, -1, 219, 93, 187, 218, -1, 219, 187, -1, - 219, 93, 187, 225, -1, 219, 187, -1, 223, -1, - 52, 241, -1, 75, -1, 77, -1, 70, -1, 133, - -1, 42, 241, -1, 59, 245, -1, 32, 213, -1, - 80, -1, 32, 16, -1, 170, -1, 27, 16, -1, - 27, 115, 120, -1, -1, 224, 225, -1, 228, -1, - 239, 221, -1, 85, -1, 81, -1, 239, 229, -1, - 239, 228, -1, 226, -1, 90, -1, 134, -1, 135, - -1, 136, -1, 137, -1, 138, -1, 74, -1, 76, - -1, 73, -1, 71, -1, 78, -1, 227, -1, 105, - -1, 247, -1, 237, -1, 238, -1, -1, 131, -1, - 131, 232, -1, 131, 231, -1, 139, -1, 231, 139, - -1, 140, -1, 232, 140, -1, 115, -1, 115, 231, - -1, 115, 232, -1, 125, -1, 125, 231, -1, 125, - 232, -1, 233, -1, 235, -1, 234, -1, 278, -1, - 211, -1, 89, -1, 141, -1, 127, -1, 126, -1, - 133, -1, 67, -1, 132, -1, 142, -1, 142, -1, - 141, -1, 126, -1, 233, -1, 244, -1, -1, 244, - -1, 270, 246, -1, 104, 246, -1, 243, -1, 244, - 143, 270, -1, 244, 143, 106, -1, 106, -1, 91, - 144, 91, -1, -1, 246, 132, -1, 145, -1, 145, - 270, -1, 89, -1, 91, -1, 123, -1, 278, -1, - 126, -1, 127, -1, 146, -1, 84, -1, 248, -1, - 250, 135, -1, 250, 249, -1, 250, 251, -1, 79, - -1, 74, -1, 144, -1, 70, -1, 250, -1, 134, - 250, -1, -1, 253, 252, -1, 83, 253, 82, -1, - -1, 46, -1, 235, 272, 273, 230, 242, 255, -1, - 103, 242, -1, 119, 242, -1, 258, 242, -1, 256, - -1, 259, -1, 254, 242, -1, 274, -1, 107, -1, - 234, 242, -1, 234, 242, 261, 260, -1, -1, 260, - 262, -1, 63, -1, 62, -1, 65, 234, -1, 61, - 234, -1, 261, -1, 263, -1, 99, -1, 264, -1, - 263, 132, 264, -1, 270, -1, 270, 127, -1, 270, - 64, -1, 270, -1, 270, 136, 270, -1, 266, 127, - 267, -1, 266, 126, 267, -1, 267, -1, 268, -1, - 268, 143, 268, -1, 268, 144, 268, -1, 126, 268, - -1, 269, -1, 91, -1, 118, -1, 116, -1, 118, - 116, -1, 91, 116, -1, 91, -1, 89, -1, 270, - -1, 116, -1, -1, 272, 146, -1, -1, 273, 147, - -1, 108, -1, -1, 87, 275, 280, -1, 112, -1, - -1, 34, 277, 281, -1, 111, -1, -1, 33, 279, - 280, -1, 281, -1, 289, 290, -1, 290, -1, 112, - -1, 282, -1, 283, -1, 285, -1, 289, 283, -1, - 129, 284, 130, -1, -1, 284, 292, -1, 284, 281, - -1, 110, 287, -1, 95, 287, 281, -1, 94, 287, - 151, -1, 96, -1, 286, -1, 92, 287, 292, -1, - 109, 92, 287, -1, 288, -1, 289, 288, -1, 123, - -1, 111, -1, 108, -1, 124, -1, -1, 48, 291, - 129, 164, 130, -1, 109, 286, -1, 289, 290, -1, - 290, -1 + 148, 0, -1, 150, -1, -1, 99, 149, 158, -1, + -1, 150, 151, -1, 150, 162, -1, 150, 1, -1, + 150, 37, -1, -1, 152, 160, -1, 168, -1, 171, + -1, 174, -1, 200, -1, 316, -1, 314, -1, 178, + -1, 123, -1, 122, -1, 153, -1, 125, -1, 126, + -1, 316, -1, 314, -1, 196, -1, 174, -1, 164, + -1, 168, -1, 171, -1, 178, -1, 153, -1, 157, + -1, 154, -1, 157, -1, 190, -1, 121, 211, -1, + -1, 163, -1, 189, 189, 186, -1, 1, -1, 37, + 158, -1, -1, 159, 162, -1, 36, 130, 159, 131, + -1, 125, -1, 110, -1, 161, 132, 163, -1, 161, + 237, 132, 163, -1, 155, -1, 174, -1, 168, -1, + 171, -1, 178, -1, 164, -1, 191, -1, 259, -1, + 303, -1, 109, -1, 244, -1, 155, -1, 316, -1, + 314, -1, 196, -1, 28, 130, 167, 131, -1, 155, + -1, 200, -1, 165, -1, -1, 104, -1, 167, 240, + -1, 167, 196, -1, 167, 166, -1, 22, 130, 169, + 131, -1, -1, 100, -1, 169, 177, -1, 169, 171, + -1, 169, 174, -1, 169, 200, -1, 169, 316, -1, + 169, 314, -1, -1, 169, 170, 160, -1, 169, 155, + -1, 169, 1, -1, 23, 130, 172, 131, -1, -1, + 100, -1, 172, 177, -1, 172, 174, -1, 172, 200, + -1, 172, 316, -1, 172, 314, -1, -1, 172, 173, + 160, -1, 172, 155, -1, 172, 1, -1, 52, 130, + 175, 131, -1, 188, -1, 124, -1, -1, 175, 176, + 160, -1, 175, 178, -1, 175, 1, -1, 178, -1, + 183, 131, -1, 48, -1, 44, -1, 38, -1, 179, + -1, 190, -1, -1, 28, 182, 130, 167, 131, -1, + 180, 130, -1, 180, 130, 119, -1, 183, 162, -1, + -1, 183, 184, 181, -1, 183, 1, -1, 56, 279, + 132, 302, -1, 56, 247, 279, 132, 302, -1, 56, + 246, -1, -1, 186, 189, -1, 186, 1, -1, 130, + 186, 131, -1, 190, -1, 295, -1, 188, -1, 155, + -1, 195, -1, 200, -1, 195, -1, 200, -1, 295, + -1, 4, 245, 309, 188, -1, 4, 245, 309, 188, + 5, 187, -1, 53, 187, -1, 187, -1, 55, 187, + -1, 68, 186, 69, -1, 248, -1, 243, -1, 235, + -1, -1, 59, 197, 130, 199, 131, -1, 59, 105, + -1, 105, -1, 59, 219, -1, -1, 196, -1, -1, + 199, 240, -1, 199, 105, -1, 199, 166, -1, 225, + -1, 202, -1, 202, -1, 226, 201, -1, 227, -1, + 118, -1, 203, -1, 194, -1, 193, -1, 212, -1, + 97, 91, 204, -1, 97, 92, 204, -1, 97, 93, + 204, -1, 97, 91, 211, 271, -1, 97, 92, 215, + 276, -1, 97, 93, 215, 109, -1, 97, 93, 215, + 259, -1, 97, 93, 215, 127, 13, -1, 97, 93, + 215, 127, 12, -1, 97, 93, 215, 127, 18, -1, + 205, -1, 97, 93, 211, 220, -1, 97, 93, 215, + 307, -1, 205, -1, 97, 93, 211, 156, -1, 97, + 93, 215, 306, -1, 212, -1, 210, -1, 216, -1, + 210, -1, 97, 93, 208, 220, -1, 97, 93, 209, + 259, -1, 97, 93, 208, 293, -1, 97, 93, 209, + 13, -1, 97, 93, 209, 12, -1, 97, 93, 209, + 18, -1, 97, 93, 209, 109, -1, 97, 93, 209, + 127, 13, -1, 97, 93, 209, 127, 12, -1, 97, + 93, 209, 127, 18, -1, 97, 91, 208, 271, -1, + 97, 92, 209, 276, -1, 97, 93, 210, 94, -1, + 210, 95, 220, -1, 210, 95, 306, -1, 212, -1, + 207, -1, 222, -1, 93, 217, 156, -1, 93, 218, + 306, -1, 93, 218, 109, -1, 93, 218, 259, -1, + 214, -1, 213, -1, 93, 217, 293, -1, 213, 95, + 294, -1, 93, 218, 127, 13, -1, 93, 218, 127, + 12, -1, 93, 218, 127, 18, -1, 214, 95, 306, + -1, 216, -1, 206, -1, 222, -1, 93, 217, 220, + -1, 93, 218, 306, -1, 93, 218, 127, 13, -1, + 93, 218, 127, 12, -1, 93, 218, 127, 18, -1, + 93, 218, 259, -1, 93, 218, 109, -1, 93, 217, + 293, -1, 208, -1, 210, 94, -1, 97, 91, 217, + -1, 97, 92, 217, -1, 209, -1, 210, 94, -1, + 97, 91, 218, -1, 97, 92, 218, -1, 153, -1, + 221, -1, 154, -1, 221, -1, 201, -1, 121, 215, + -1, 98, -1, 91, 217, 271, -1, 92, 218, 276, + -1, 97, 91, 204, 8, -1, 97, 92, 204, 8, + -1, 97, 93, 204, 8, -1, 117, 211, -1, -1, + 132, 245, -1, 223, -1, 192, -1, 233, -1, 226, + 188, -1, 28, 245, 224, 198, -1, 60, 245, 224, + 198, -1, 228, 203, -1, 229, 198, 203, -1, 46, + -1, 32, -1, 34, -1, 25, -1, 39, -1, 33, + -1, 35, -1, 26, -1, 40, -1, -1, 7, 231, + 200, -1, -1, 230, 7, 232, 200, -1, 200, 230, + -1, -1, 41, 245, 234, 188, -1, 24, 125, 132, + 125, -1, 219, -1, 236, 219, -1, 236, -1, 125, + 132, 246, -1, 58, 245, -1, 47, 245, 237, 132, + 246, -1, 51, 245, 155, -1, 27, -1, 49, -1, + 20, -1, 29, -1, 30, -1, 21, -1, 57, -1, + 31, -1, 45, -1, 238, -1, 239, 125, -1, 239, + 155, -1, 245, -1, 245, 133, 245, -1, 47, 241, + 237, 132, 246, -1, 51, 241, 155, -1, 54, 241, + 132, 246, -1, 58, 241, -1, 242, -1, 125, -1, + 126, -1, 244, 128, 244, -1, 125, -1, 110, -1, + 126, -1, 156, -1, 306, -1, 109, -1, 293, -1, + 220, -1, 306, -1, 109, -1, 293, -1, 291, 258, + -1, 292, 258, -1, 103, 278, 258, -1, 88, 278, + 258, -1, 256, -1, 249, -1, 250, 278, 258, -1, + 66, 251, 67, -1, -1, 251, 252, -1, 270, 310, + 311, 265, 258, -1, 106, 258, -1, 253, -1, 223, + -1, 118, -1, 117, 215, -1, 108, 215, -1, 257, + -1, 75, -1, 77, -1, 70, -1, 134, -1, 80, + -1, 185, -1, -1, 258, 260, -1, 263, -1, 275, + 254, -1, 85, -1, 81, -1, 275, 264, -1, 275, + 263, -1, 261, -1, 135, 273, -1, 136, 273, -1, + 259, -1, 127, 273, -1, 89, -1, 137, -1, 138, + -1, 139, -1, 140, -1, 141, -1, 74, -1, 76, + -1, 73, -1, 71, -1, 78, -1, 262, -1, 107, + -1, 282, -1, 255, -1, 272, -1, 274, -1, -1, + 132, -1, 132, 267, -1, 132, 266, -1, 142, -1, + 266, 142, -1, 143, -1, 267, 143, -1, 15, -1, + 15, 266, -1, 15, 267, -1, 14, -1, 14, 266, + -1, 14, 267, -1, 268, -1, 16, -1, 270, -1, + 269, -1, 316, -1, 245, -1, 13, -1, 135, -1, + 128, -1, 127, -1, 134, -1, 67, -1, 133, -1, + 136, -1, 136, -1, 135, -1, 127, -1, 280, -1, + -1, 280, -1, 277, -1, 308, 281, -1, 11, 281, + -1, 279, -1, 280, 144, 308, -1, 280, 144, 109, + -1, -1, 281, 133, -1, 10, -1, 10, 308, -1, + 13, -1, 125, -1, 316, -1, 127, -1, 128, -1, + 145, -1, 84, -1, 283, -1, 285, 138, -1, 285, + 284, -1, 285, 286, -1, 79, -1, 74, -1, 17, + -1, 70, -1, 285, -1, 137, 285, -1, -1, 288, + 287, -1, 83, 288, 82, -1, -1, 50, -1, 270, + 310, 311, 265, 277, 290, -1, 106, 278, -1, 120, + 278, -1, 296, -1, 289, 278, -1, 312, -1, 110, + -1, 293, -1, 293, 280, 258, -1, 293, 260, 258, + -1, 111, 278, 258, -1, 293, 278, 258, -1, 269, + 278, -1, 269, 278, 298, 297, -1, -1, 297, 299, + -1, 63, -1, 62, -1, 65, 269, -1, 61, 269, + -1, 298, -1, 300, -1, 102, -1, 301, -1, 300, + 133, 301, -1, 308, -1, 308, 128, -1, 308, 64, + -1, 308, -1, 308, 139, 308, -1, 303, 128, 304, + -1, 303, 127, 304, -1, 304, -1, 305, -1, 305, + 144, 305, -1, 305, 17, 305, -1, 127, 305, -1, + 306, -1, 307, -1, 13, 18, -1, 12, 18, -1, + 13, -1, 12, -1, 18, -1, 13, -1, 13, -1, + 18, -1, -1, 310, 145, -1, -1, 311, 146, -1, + 112, -1, -1, 87, 313, 318, -1, 116, -1, -1, + 43, 315, 321, -1, 115, -1, -1, 42, 317, 318, + -1, 321, -1, 329, 330, -1, 330, -1, -1, 153, + 320, 94, -1, 116, -1, 322, -1, 323, -1, 325, + -1, 319, 116, -1, 329, 323, -1, 130, 324, 131, + -1, -1, 324, 332, -1, 324, 321, -1, 114, 327, + -1, 96, 327, 321, -1, 93, 327, 219, -1, 98, + -1, 326, -1, 90, 327, 332, -1, 113, 90, 327, + -1, 328, -1, 329, 328, -1, 125, -1, 115, -1, + 112, -1, 126, -1, -1, 52, 331, 130, 175, 131, + -1, 113, 326, -1, 319, 115, -1, 329, 330, -1, + 330, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 456, 456, 457, 459, 461, 464, 471, 474, 480, - 486, 493, 498, 502, 506, 523, 524, 529, 533, 539, - 548, 549, 553, 556, 568, 573, 577, 581, 585, 589, - 592, 604, 607, 610, 613, 616, 619, 622, 625, 631, - 638, 642, 646, 657, 660, 672, 683, 695, 701, 706, - 712, 718, 723, 727, 731, 734, 742, 749, 754, 760, - 764, 770, 775, 779, 783, 786, 793, 799, 809, 814, - 817, 829, 840, 853, 862, 867, 872, 881, 888, 892, - 902, 905, 908, 914, 917, 920, 933, 936, 946, 949, - 966, 967, 971, 974, 981, 988, 991, 997, 1000, 1006, - 1007, 1008, 1009, 1013, 1013, 1018, 1022, 1029, 1032, 1039, - 1042, 1045, 1053, 1054, 1058, 1059, 1063, 1064, 1072, 1078, - 1081, 1084, 1089, 1092, 1095, 1098, 1103, 1108, 1109, 1113, - 1120, 1121, 1128, 1131, 1138, 1146, 1149, 1150, 1156, 1167, - 1179, 1180, 1184, 1190, 1197, 1202, 1210, 1217, 1223, 1228, - 1235, 1243, 1247, 1254, 1254, 1263, 1263, 1269, 1269, 1275, - 1275, 1284, 1287, 1290, 1290, 1299, 1306, 1309, 1315, 1321, - 1325, 1329, 1334, 1341, 1342, 1344, 1345, 1346, 1348, 1349, - 1350, 1351, 1355, 1356, 1359, 1373, 1382, 1389, 1396, 1402, - 1408, 1416, 1419, 1425, 1428, 1431, 1436, 1439, 1442, 1447, - 1450, 1453, 1456, 1459, 1462, 1471, 1480, 1488, 1494, 1499, - 1506, 1524, 1531, 1532, 1538, 1564, 1575, 1580, 1593, 1596, - 1605, 1608, 1614, 1617, 1620, 1625, 1630, 1633, 1647, 1651, - 1656, 1662, 1665, 1669, 1672, 1676, 1694, 1697, 1704, 1707, - 1714, 1719, 1724, 1732, 1740, 1744, 1752, 1755, 1758, 1761, - 1764, 1767, 1770, 1773, 1776, 1779, 1785, 1799, 1802, 1810, - 1813, 1824, 1825, 1826, 1827, 1831, 1834, 1840, 1843, 1849, - 1852, 1857, 1869, 1872, 1877, 1886, 1892, 1893, 1897, 1902, - 1908, 1916, 1919, 1922, 1925, 1928, 1931, 1934, 1940, 1941, - 1942, 1947, 1953, 1959, 1963, 1970, 1979, 1989, 1992, 1995, - 2003, 2004, 2010, 2013, 2019, 2022, 2030, 2033, 2036, 2037, - 2041, 2042, 2043, 2047, 2051, 2062, 2066, 2077, 2100, 2103, - 2106, 2109, 2115, 2118, 2125, 2128, 2134, 2141, 2142, 2146, - 2172, 2179, 2192, 2204, 2207, 2212, 2222, 2225, 2231, 2234, - 2241, 2244, 2250, 2253, 2256, 2259, 2265, 2268, 2271, 2277, - 2278, 2284, 2287, 2290, 2296, 2299, 2311, 2314, 2317, 2321, - 2324, 2327, 2333, 2336, 2341, 2344, 2347, 2350, 2353, 2360, - 2363, 2369, 2370, 2376, 2377, 2381, 2382, 2390, 2394, 2393, - 2402, 2406, 2405, 2414, 2418, 2417, 2426, 2429, 2432, 2438, - 2441, 2444, 2447, 2453, 2460, 2466, 2467, 2470, 2476, 2482, - 2485, 2488, 2494, 2495, 2501, 2507, 2510, 2516, 2519, 2522, - 2525, 2528, 2528, 2537, 2543, 2547 + 0, 564, 564, 565, 565, 574, 575, 577, 579, 582, + 589, 589, 594, 600, 606, 613, 618, 622, 626, 643, + 647, 651, 652, 653, 654, 655, 656, 657, 662, 663, + 668, 673, 683, 684, 688, 689, 690, 694, 702, 705, + 706, 714, 717, 723, 725, 731, 740, 741, 745, 748, + 760, 765, 769, 773, 777, 781, 784, 787, 790, 793, + 796, 799, 802, 805, 808, 814, 821, 822, 826, 842, + 846, 850, 853, 860, 872, 883, 893, 899, 904, 910, + 916, 921, 925, 930, 929, 933, 934, 942, 949, 954, + 960, 964, 970, 975, 979, 984, 983, 989, 990, 997, + 1003, 1013, 1019, 1018, 1024, 1036, 1047, 1060, 1069, 1074, + 1079, 1088, 1100, 1105, 1104, 1114, 1118, 1128, 1132, 1131, + 1147, 1153, 1156, 1159, 1168, 1171, 1175, 1185, 1191, 1192, + 1196, 1197, 1211, 1221, 1225, 1226, 1227, 1231, 1235, 1242, + 1245, 1251, 1254, 1260, 1261, 1262, 1266, 1266, 1271, 1275, + 1279, 1291, 1294, 1301, 1304, 1307, 1312, 1319, 1320, 1325, + 1326, 1333, 1334, 1335, 1339, 1340, 1348, 1349, 1353, 1357, + 1365, 1368, 1371, 1375, 1379, 1395, 1401, 1410, 1411, 1415, + 1422, 1423, 1427, 1434, 1435, 1439, 1440, 1444, 1454, 1464, + 1481, 1492, 1503, 1513, 1523, 1543, 1553, 1562, 1566, 1570, + 1575, 1580, 1588, 1589, 1593, 1594, 1599, 1604, 1609, 1614, + 1615, 1619, 1650, 1659, 1676, 1682, 1687, 1694, 1695, 1699, + 1700, 1705, 1710, 1726, 1732, 1738, 1743, 1748, 1756, 1757, + 1758, 1762, 1769, 1770, 1771, 1775, 1782, 1783, 1787, 1788, + 1789, 1793, 1800, 1803, 1806, 1809, 1812, 1815, 1821, 1829, + 1830, 1836, 1837, 1838, 1839, 1846, 1853, 1863, 1874, 1889, + 1895, 1902, 1907, 1915, 1922, 1928, 1933, 1940, 1947, 1947, + 1956, 1956, 1965, 1968, 1968, 1977, 1984, 1987, 1993, 1999, + 2003, 2007, 2012, 2019, 2020, 2022, 2023, 2024, 2026, 2027, + 2028, 2029, 2033, 2034, 2037, 2054, 2063, 2070, 2077, 2083, + 2089, 2097, 2103, 2106, 2109, 2114, 2117, 2120, 2126, 2127, + 2128, 2129, 2133, 2134, 2135, 2136, 2141, 2155, 2164, 2170, + 2176, 2177, 2182, 2200, 2207, 2208, 2215, 2241, 2251, 2268, + 2269, 2278, 2285, 2292, 2295, 2300, 2305, 2308, 2325, 2328, + 2335, 2338, 2345, 2348, 2355, 2360, 2365, 2373, 2381, 2382, + 2387, 2395, 2396, 2402, 2410, 2413, 2416, 2419, 2422, 2425, + 2428, 2431, 2434, 2437, 2443, 2457, 2460, 2465, 2469, 2472, + 2483, 2484, 2485, 2486, 2490, 2493, 2499, 2502, 2508, 2511, + 2516, 2528, 2531, 2536, 2545, 2548, 2552, 2553, 2557, 2562, + 2571, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2603, 2604, + 2605, 2609, 2615, 2618, 2626, 2634, 2643, 2653, 2656, 2659, + 2667, 2670, 2676, 2679, 2687, 2688, 2689, 2693, 2694, 2695, + 2699, 2703, 2714, 2718, 2729, 2752, 2755, 2758, 2761, 2767, + 2770, 2777, 2780, 2786, 2793, 2794, 2798, 2830, 2837, 2853, + 2858, 2868, 2871, 2877, 2878, 2884, 2890, 2900, 2909, 2912, + 2919, 2922, 2928, 2931, 2934, 2937, 2943, 2946, 2949, 2955, + 2956, 2962, 2965, 2968, 2974, 2977, 2989, 2992, 2995, 2999, + 3002, 3005, 3011, 3014, 3019, 3020, 3023, 3029, 3030, 3031, + 3035, 3041, 3042, 3046, 3047, 3051, 3052, 3060, 3064, 3063, + 3072, 3076, 3075, 3084, 3088, 3087, 3096, 3099, 3102, 3109, + 3108, 3123, 3126, 3129, 3132, 3135, 3142, 3149, 3155, 3156, + 3159, 3165, 3171, 3174, 3177, 3183, 3184, 3190, 3196, 3199, + 3205, 3208, 3211, 3214, 3217, 3217, 3226, 3229, 3236, 3240 }; #endif @@ -974,83 +1057,97 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "PREC_TOP", "\"\\\\addlyrics\"", - "PREC_BOT", "\"\\\\accepts\"", "\"\\\\alias\"", "\"\\\\alternative\"", - "\"\\\\book\"", "\"\\\\bookpart\"", "\"\\\\change\"", - "\"\\\\chordmode\"", "\"\\\\chords\"", "\"\\\\consists\"", - "\"\\\\context\"", "\"\\\\default\"", "\"\\\\defaultchild\"", + "$end", "error", "$undefined", "PREC_BOT", "\"\\\\repeat\"", + "\"\\\\alternative\"", "COMPOSITE", "\"\\\\addlyrics\"", + "\"\\\\default\"", "FUNCTION_ARGLIST", "':'", "DURATION_IDENTIFIER", + "REAL", "UNSIGNED", "TONICNAME_PITCH", "NOTENAME_PITCH", + "PITCH_IDENTIFIER", "'/'", "NUMBER_IDENTIFIER", "PREC_TOP", + "\"\\\\accepts\"", "\"\\\\alias\"", "\"\\\\book\"", "\"\\\\bookpart\"", + "\"\\\\change\"", "\"\\\\chordmode\"", "\"\\\\chords\"", + "\"\\\\consists\"", "\"\\\\context\"", "\"\\\\defaultchild\"", "\"\\\\denies\"", "\"\\\\description\"", "\"\\\\drummode\"", "\"\\\\drums\"", "\"\\\\figuremode\"", "\"\\\\figures\"", - "\"\\\\grobdescriptions\"", "\"\\\\header\"", "\"\\\\invalid\"", - "\"\\\\key\"", "\"\\\\layout\"", "\"\\\\lyricmode\"", "\"\\\\lyrics\"", - "\"\\\\lyricsto\"", "\"\\\\mark\"", "\"\\\\markup\"", - "\"\\\\markuplines\"", "\"\\\\midi\"", "\"\\\\name\"", - "\"\\\\notemode\"", "\"\\\\octave\"", "\"\\\\once\"", "\"\\\\override\"", - "\"\\\\paper\"", "\"\\\\partial\"", "\"\\\\relative\"", "\"\\\\remove\"", - "\"\\\\repeat\"", "\"\\\\rest\"", "\"\\\\revert\"", "\"\\\\score\"", + "\"\\\\header\"", "\"\\\\version-error\"", "\"\\\\layout\"", + "\"\\\\lyricmode\"", "\"\\\\lyrics\"", "\"\\\\lyricsto\"", + "\"\\\\markup\"", "\"\\\\markuplist\"", "\"\\\\midi\"", "\"\\\\name\"", + "\"\\\\notemode\"", "\"\\\\override\"", "\"\\\\paper\"", + "\"\\\\remove\"", "\"\\\\rest\"", "\"\\\\revert\"", "\"\\\\score\"", "\"\\\\sequential\"", "\"\\\\set\"", "\"\\\\simultaneous\"", - "\"\\\\skip\"", "\"\\\\tempo\"", "\"\\\\times\"", "\"\\\\transpose\"", - "\"\\\\type\"", "\"\\\\unset\"", "\"\\\\with\"", "\"\\\\time\"", + "\"\\\\tempo\"", "\"\\\\type\"", "\"\\\\unset\"", "\"\\\\with\"", "\"\\\\new\"", "\"/+\"", "\"^\"", "\":\"", "\"-\"", "\"/\"", "\"<\"", "\">\"", "\"<<\"", "\">>\"", "\"\\\\\"", "\"\\\\>\"", "\"\\\\C[haracter]\"", "\"\\\\)\"", "\"\\\\!\"", "\"\\\\[\"", "\"\\\\(\"", "\"\\\\]\"", "\"\\\\<\"", "\"\\\\+\"", "\"\\\\~\"", "\"__\"", "FIGURE_CLOSE", "FIGURE_OPEN", "\"_\"", "\"--\"", - "CHORDMODIFIERS", "LYRIC_MARKUP", "MULTI_MEASURE_REST", "DIGIT", - "E_UNSIGNED", "UNSIGNED", "EXPECT_MARKUP", "EXPECT_MUSIC", "EXPECT_SCM", - "EXPECT_MARKUP_LIST", "EXPECT_NO_MORE_ARGS", "BOOK_IDENTIFIER", + "CHORDMODIFIERS", "LYRIC_MARKUP", "MULTI_MEASURE_REST", "E_UNSIGNED", + "\"markup?\"", "\"ly:pitch?\"", "\"ly:duration?\"", "\"scheme?\"", + "\"(backed-up?)\"", "\"(reparsed?)\"", "\"markup-list?\"", + "\"optional?\"", "EXPECT_NO_MORE_ARGS", "\"#{\"", "BOOK_IDENTIFIER", "CHORDMODIFIER_PITCH", "CHORD_MODIFIER", "CHORD_REPETITION", "CONTEXT_DEF_IDENTIFIER", "CONTEXT_MOD_IDENTIFIER", "DRUM_PITCH", - "DURATION_IDENTIFIER", "EVENT_IDENTIFIER", "FRACTION", "LYRICS_STRING", - "LYRIC_MARKUP_IDENTIFIER", "MARKUP_FUNCTION", "MARKUP_LIST_FUNCTION", - "MARKUP_IDENTIFIER", "MARKUPLINES_IDENTIFIER", "MUSIC_FUNCTION", - "MUSIC_IDENTIFIER", "NOTENAME_PITCH", "NUMBER_IDENTIFIER", - "OUTPUT_DEF_IDENTIFIER", "REAL", "RESTNAME", "SCM_IDENTIFIER", - "SCM_TOKEN", "SCORE_IDENTIFIER", "STRING", "STRING_IDENTIFIER", - "TONICNAME_PITCH", "'-'", "'+'", "UNARY_MINUS", "'{'", "'}'", "'='", - "'.'", "'|'", "'['", "']'", "'~'", "'('", "')'", "'''", "','", "'^'", - "'_'", "'*'", "'/'", "':'", "'!'", "'?'", "$accept", "lilypond", - "toplevel_expression", "embedded_scm", "lilypond_header_body", - "lilypond_header", "assignment_id", "assignment", "identifier_init", - "context_def_spec_block", "context_def_spec_body", "book_block", - "book_body", "bookpart_block", "bookpart_body", "score_block", - "score_body", "paper_block", "output_def", "output_def_head", - "output_def_head_with_mode_switch", "output_def_body", "tempo_event", - "music_list", "music", "alternative_music", "repeated_music", - "sequential_music", "simultaneous_music", "simple_music", - "context_modification", "@1", "optional_context_mod", "context_mod_list", - "composite_music", "grouped_music_list", "function_scm_argument", - "function_arglist_music_last", "function_arglist_nonmusic_last", - "function_arglist_nonmusic", "function_arglist", - "generic_prefix_music_scm", "optional_id", "prefix_composite_music", - "mode_changing_head", "mode_changing_head_with_context", - "relative_music", "new_lyrics", "@2", "@3", "@4", "@5", - "re_rhythmed_music", "@6", "context_change", "property_path_revved", + "EVENT_IDENTIFIER", "EVENT_FUNCTION", "FRACTION", "LYRICS_STRING", + "LYRIC_ELEMENT", "LYRIC_MARKUP_IDENTIFIER", "MARKUP_FUNCTION", + "MARKUP_LIST_FUNCTION", "MARKUP_IDENTIFIER", "MARKUPLIST_IDENTIFIER", + "MUSIC_FUNCTION", "MUSIC_IDENTIFIER", "OUTPUT_DEF_IDENTIFIER", + "RESTNAME", "SCM_FUNCTION", "SCM_IDENTIFIER", "SCM_TOKEN", + "SCORE_IDENTIFIER", "STRING", "STRING_IDENTIFIER", "'-'", "'+'", + "UNARY_MINUS", "'{'", "'}'", "'='", "'.'", "'|'", "'^'", "'_'", "'['", + "']'", "'~'", "'('", "')'", "'''", "','", "'*'", "'!'", "'?'", "$accept", + "start_symbol", "@1", "lilypond", "toplevel_expression", "@2", + "embedded_scm_bare", "embedded_scm_bare_arg", "embedded_scm", + "embedded_scm_arg", "scm_function_call", "embedded_lilypond", + "lilypond_header_body", "lilypond_header", "assignment_id", "assignment", + "identifier_init", "context_def_spec_block", "context_mod_arg", + "context_mod_embedded", "context_def_spec_body", "book_block", + "book_body", "@3", "bookpart_block", "bookpart_body", "@4", + "score_block", "score_body", "@5", "paper_block", "output_def", + "output_def_head", "output_def_head_with_mode_switch", + "music_or_context_def", "@6", "output_def_body", "@7", "tempo_event", + "music_list", "braced_music_list", "music", "music_embedded", + "music_arg", "music_assign", "repeated_music", "sequential_music", + "simultaneous_music", "simple_music", "context_modification", "@8", + "optional_context_mod", "context_mod_list", "composite_music", + "closed_music", "music_bare", "grouped_music_list", + "function_arglist_skip", "function_arglist_nonbackup_common", + "function_arglist_closed_nonbackup", "function_arglist_nonbackup", + "function_arglist_keep", "function_arglist_closed_keep", + "function_arglist_backup", "function_arglist", "function_arglist_common", + "function_arglist_common_lyric", "function_arglist_common_minus", + "function_arglist_closed", "function_arglist_closed_common", + "function_arglist_optional", "function_arglist_closed_optional", + "embedded_scm_closed", "embedded_scm_arg_closed", + "scm_function_call_closed", "function_arglist_bare", + "music_function_call", "optional_id", "complex_music", + "complex_music_prefix", "mode_changed_music", "mode_changing_head", + "mode_changing_head_with_context", "new_lyrics", "@9", "@10", + "re_rhythmed_music", "@11", "context_change", "property_path_revved", "property_path", "property_operation", "context_def_mod", "context_mod", "context_prop_spec", "simple_music_property_def", "music_property_def", - "string", "simple_string", "scalar", "event_chord", "note_chord_element", - "chord_body", "chord_body_elements", "chord_body_element", - "music_function_identifier_musicless_prefix", - "music_function_chord_body", "music_function_event", "command_element", - "command_event", "post_events", "post_event", "string_number_event", - "direction_less_char", "direction_less_event", "direction_reqd_event", - "octave_check", "sup_quotes", "sub_quotes", "steno_pitch", - "steno_tonic_pitch", "pitch", "pitch_also_in_chords", "gen_text_def", - "script_abbreviation", "script_dir", "absolute_pitch", "duration_length", + "string", "simple_string", "scalar", "scalar_closed", "event_chord", + "note_chord_element", "chord_body", "chord_body_elements", + "chord_body_element", "music_function_chord_body", + "music_function_event", "event_function_event", "command_element", + "command_event", "post_events", "post_event_nofinger", "post_event", + "string_number_event", "direction_less_char", "direction_less_event", + "direction_reqd_event", "octave_check", "sup_quotes", "sub_quotes", + "steno_pitch", "steno_tonic_pitch", "pitch", "pitch_also_in_chords", + "gen_text_def", "fingering", "script_abbreviation", "script_dir", + "duration_length", "maybe_notemode_duration", "optional_notemode_duration", "steno_duration", "multiplied_duration", - "fraction", "dots", "tremolo_type", "bass_number", - "figured_bass_alteration", "bass_figure", "figured_bass_modification", - "br_bass_figure", "figure_list", "figure_spec", "optional_rest", - "simple_element", "simple_chord_elements", "lyric_element", "new_chord", - "chord_items", "chord_separator", "chord_item", "step_numbers", - "step_number", "tempo_range", "number_expression", "number_term", - "number_factor", "bare_number", "bare_unsigned", "unsigned_number", - "exclamations", "questions", "lyric_markup", "@7", "full_markup_list", - "@8", "full_markup", "@9", "markup_top", "markup_list", + "dots", "tremolo_type", "bass_number", "figured_bass_alteration", + "bass_figure", "figured_bass_modification", "br_bass_figure", + "figure_list", "figure_spec", "optional_rest", "simple_element", + "simple_chord_elements", "lyric_element", "lyric_element_arg", + "lyric_element_music", "new_chord", "chord_items", "chord_separator", + "chord_item", "step_numbers", "step_number", "tempo_range", + "number_expression", "number_term", "number_factor", "bare_number", + "bare_number_closed", "bare_unsigned", "unsigned_number", "exclamations", + "questions", "lyric_markup", "@12", "full_markup_list", "@13", + "full_markup", "@14", "markup_top", "markup_scm", "@15", "markup_list", "markup_composed_list", "markup_braced_list", "markup_braced_list_body", "markup_command_list", "markup_command_basic_arguments", "markup_command_list_arguments", "markup_head_1_item", - "markup_head_1_list", "simple_markup", "@10", "markup", 0 + "markup_head_1_list", "simple_markup", "@16", "markup", 0 }; #endif @@ -1060,115 +1157,137 @@ static const char *const yytname[] = static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 45, 43, 381, 123, - 125, 61, 46, 124, 91, 93, 126, 40, 41, 39, - 44, 94, 95, 42, 47, 58, 33, 63 + 58, 265, 266, 267, 268, 269, 270, 47, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 45, 43, 380, + 123, 125, 61, 46, 124, 94, 95, 91, 93, 126, + 40, 41, 39, 44, 42, 33, 63 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 148, 149, 149, 149, 149, 149, 150, 150, 150, - 150, 150, 150, 150, 150, 151, 151, 152, 152, 153, - 154, 154, 155, 155, 155, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, - 158, 158, 158, 158, 158, 159, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 161, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 163, 164, 164, 164, - 164, 164, 165, 166, 167, 167, 167, 168, 169, 169, - 169, 169, 169, 170, 170, 170, 171, 171, 171, 171, - 172, 172, 173, 173, 174, 175, 175, 176, 176, 177, - 177, 177, 177, 179, 178, 178, 178, 180, 180, 181, - 181, 181, 182, 182, 183, 183, 184, 184, 185, 186, - 186, 186, 187, 187, 187, 187, 188, 188, 188, 189, - 190, 190, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 192, 192, 192, 192, 192, 193, 193, 193, - 193, 194, 194, 196, 195, 197, 195, 198, 195, 199, - 195, 200, 200, 201, 200, 202, 203, 203, 204, 205, - 205, 205, 205, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 207, 207, 207, 208, 208, 209, 209, 209, - 209, 210, 210, 211, 211, 211, 212, 212, 212, 213, - 213, 213, 213, 213, 213, 214, 214, 214, 214, 214, - 215, 216, 217, 217, 218, 218, 218, 219, 220, 220, - 221, 221, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 223, 223, 223, 223, 223, 224, 224, 225, 225, - 225, 225, 225, 225, 225, 226, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 228, 228, 228, 229, - 229, 230, 230, 230, 230, 231, 231, 232, 232, 233, - 233, 233, 234, 234, 234, 235, 236, 236, 237, 237, - 237, 238, 238, 238, 238, 238, 238, 238, 239, 239, - 239, 240, 241, 242, 242, 243, 243, 244, 244, 244, - 245, 245, 246, 246, 247, 247, 248, 248, 248, 248, - 249, 249, 249, 250, 250, 250, 250, 250, 251, 251, - 251, 251, 252, 252, 253, 253, 254, 255, 255, 256, - 256, 256, 256, 257, 257, 257, 258, 258, 259, 259, - 260, 260, 261, 261, 261, 261, 262, 262, 262, 263, - 263, 264, 264, 264, 265, 265, 266, 266, 266, 267, - 267, 267, 268, 268, 269, 269, 269, 269, 269, 270, - 270, 271, 271, 272, 272, 273, 273, 274, 275, 274, - 276, 277, 276, 278, 279, 278, 280, 280, 280, 281, - 281, 281, 281, 282, 283, 284, 284, 284, 285, 286, - 286, 286, 287, 287, 288, 289, 289, 290, 290, 290, - 290, 291, 290, 290, 292, 292 + 0, 147, 148, 149, 148, 150, 150, 150, 150, 150, + 152, 151, 151, 151, 151, 151, 151, 151, 151, 153, + 153, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 155, 155, 156, 156, 156, 157, 158, 158, + 158, 158, 158, 159, 159, 160, 161, 161, 162, 162, + 162, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 164, 165, 165, 166, 167, + 167, 167, 167, 167, 168, 169, 169, 169, 169, 169, + 169, 169, 169, 170, 169, 169, 169, 171, 172, 172, + 172, 172, 172, 172, 172, 173, 172, 172, 172, 174, + 175, 175, 176, 175, 175, 175, 177, 178, 179, 179, + 179, 180, 181, 182, 181, 183, 183, 183, 184, 183, + 183, 185, 185, 185, 186, 186, 186, 187, 188, 188, + 189, 189, 190, 190, 191, 191, 191, 192, 192, 193, + 193, 194, 194, 195, 195, 195, 197, 196, 196, 196, + 196, 198, 198, 199, 199, 199, 199, 200, 200, 201, + 201, 202, 202, 202, 203, 203, 204, 204, 204, 204, + 205, 205, 205, 205, 205, 205, 205, 206, 206, 206, + 207, 207, 207, 208, 208, 209, 209, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 211, 211, 212, 212, 212, 212, 212, 212, + 212, 213, 213, 214, 214, 214, 214, 215, 215, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 217, 217, + 217, 217, 218, 218, 218, 218, 219, 219, 220, 220, + 220, 221, 222, 222, 222, 222, 222, 222, 223, 224, + 224, 225, 225, 225, 225, 226, 226, 227, 227, 228, + 228, 228, 228, 228, 229, 229, 229, 229, 231, 230, + 232, 230, 233, 234, 233, 235, 236, 236, 237, 238, + 238, 238, 238, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 240, 240, 240, 241, 241, 242, 242, 242, + 242, 243, 244, 244, 244, 245, 245, 245, 246, 246, + 246, 246, 247, 247, 247, 247, 248, 248, 248, 248, + 248, 248, 249, 250, 251, 251, 252, 252, 252, 253, + 253, 254, 255, 256, 256, 256, 256, 256, 257, 257, + 258, 258, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 260, 260, 261, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 263, 263, 263, 263, 264, 264, + 265, 265, 265, 265, 266, 266, 267, 267, 268, 268, + 268, 269, 269, 269, 270, 270, 271, 271, 272, 272, + 273, 274, 274, 274, 274, 274, 274, 274, 275, 275, + 275, 276, 277, 277, 278, 279, 279, 280, 280, 280, + 281, 281, 282, 282, 283, 283, 283, 284, 284, 284, + 285, 285, 285, 285, 285, 286, 286, 286, 286, 287, + 287, 288, 288, 289, 290, 290, 291, 291, 291, 292, + 292, 293, 293, 294, 294, 294, 294, 295, 296, 296, + 297, 297, 298, 298, 298, 298, 299, 299, 299, 300, + 300, 301, 301, 301, 302, 302, 303, 303, 303, 304, + 304, 304, 305, 305, 306, 306, 306, 307, 307, 307, + 308, 309, 309, 310, 310, 311, 311, 312, 313, 312, + 314, 315, 314, 316, 317, 316, 318, 318, 318, 320, + 319, 321, 321, 321, 321, 321, 322, 323, 324, 324, + 324, 325, 326, 326, 326, 327, 327, 328, 329, 329, + 330, 330, 330, 330, 331, 330, 330, 330, 332, 332 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 0, 2, 2, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 2, 4, - 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 0, 1, 3, 2, 2, 4, 0, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 4, 0, 1, 2, - 2, 2, 2, 2, 2, 2, 4, 1, 1, 2, - 2, 2, 1, 2, 1, 1, 1, 1, 2, 3, - 2, 2, 2, 4, 5, 2, 0, 2, 2, 2, - 1, 1, 0, 4, 5, 4, 3, 4, 3, 1, - 1, 1, 1, 0, 5, 2, 1, 0, 1, 0, - 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 3, 1, 3, 3, 3, 1, 1, 1, 2, - 0, 2, 1, 5, 5, 3, 1, 4, 2, 3, + 0, 2, 1, 0, 3, 0, 2, 2, 2, 2, + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 3, 1, 2, 0, 2, 4, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 2, 0, 3, 0, 3, 0, 4, 0, - 4, 2, 2, 0, 4, 4, 1, 2, 1, 3, + 1, 1, 1, 1, 1, 4, 1, 1, 1, 0, + 1, 2, 2, 2, 4, 0, 1, 2, 2, 2, + 2, 2, 2, 0, 3, 2, 2, 4, 0, 1, + 2, 2, 2, 2, 2, 0, 3, 2, 2, 4, + 1, 1, 0, 3, 2, 2, 1, 2, 1, 1, + 1, 1, 1, 0, 5, 2, 3, 2, 0, 3, + 2, 4, 5, 2, 0, 2, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 4, 6, 2, + 1, 2, 3, 1, 1, 1, 0, 5, 2, 1, + 2, 0, 1, 0, 2, 2, 2, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, + 4, 4, 4, 4, 5, 5, 5, 1, 4, 4, + 1, 4, 4, 1, 1, 1, 1, 4, 4, 4, + 4, 4, 4, 4, 5, 5, 5, 4, 4, 4, + 3, 3, 1, 1, 1, 3, 3, 3, 3, 1, + 1, 3, 3, 4, 4, 4, 3, 1, 1, 1, + 3, 3, 4, 4, 4, 3, 3, 3, 1, 2, + 3, 3, 1, 2, 3, 3, 1, 1, 1, 1, + 1, 2, 1, 3, 3, 4, 4, 4, 2, 0, + 2, 1, 1, 1, 2, 4, 4, 2, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, + 0, 4, 2, 0, 4, 4, 1, 2, 1, 3, 2, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 3, 5, 3, 4, - 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 3, 3, 1, 1, - 3, 3, 0, 2, 5, 2, 1, 1, 4, 2, - 4, 2, 1, 2, 1, 1, 1, 1, 2, 2, - 2, 1, 2, 1, 2, 3, 0, 2, 1, 2, - 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 3, 3, 0, 2, 5, 2, 1, 1, + 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 1, 2, 1, 1, 2, 2, 1, 2, + 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 2, 2, 1, 2, 1, 2, 1, - 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, + 0, 1, 2, 2, 1, 2, 1, 2, 1, 2, + 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 2, 2, 1, 3, 3, - 1, 3, 0, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, - 1, 1, 1, 2, 0, 2, 3, 0, 1, 6, - 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, + 1, 1, 0, 1, 1, 2, 2, 1, 3, 3, + 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, + 2, 0, 2, 3, 0, 1, 6, 2, 2, 1, + 2, 1, 1, 1, 3, 3, 3, 3, 2, 4, 0, 2, 1, 1, 2, 2, 1, 1, 1, 1, 3, 1, 2, 2, 1, 3, 3, 3, 1, 1, - 3, 3, 2, 1, 1, 1, 1, 2, 2, 1, + 3, 3, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, 1, 0, 3, - 1, 0, 3, 1, 0, 3, 1, 2, 1, 1, - 1, 1, 1, 2, 3, 0, 2, 2, 2, 3, - 3, 1, 1, 3, 3, 1, 2, 1, 1, 1, - 1, 0, 5, 2, 2, 1 + 1, 0, 3, 1, 0, 3, 1, 2, 1, 0, + 3, 1, 1, 1, 1, 2, 2, 3, 0, 2, + 2, 2, 3, 3, 1, 1, 3, 3, 1, 2, + 1, 1, 1, 1, 0, 5, 2, 2, 2, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1176,633 +1295,1293 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 5, 0, 0, 145, 149, 0, 143, - 147, 144, 148, 0, 6, 76, 146, 150, 0, 384, - 381, 75, 142, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 21, 383, 380, 0, 0, 16, 15, - 20, 86, 3, 24, 7, 0, 4, 8, 9, 10, - 14, 77, 0, 0, 136, 115, 114, 11, 113, 132, - 112, 0, 107, 140, 141, 13, 12, 46, 57, 197, - 196, 198, 130, 17, 163, 0, 0, 269, 152, 291, - 0, 0, 0, 86, 86, 0, 300, 0, 272, 275, - 277, 276, 0, 130, 0, 0, 0, 0, 126, 127, - 128, 129, 153, 162, 0, 0, 166, 168, 0, 78, - 82, 0, 73, 80, 81, 161, 138, 103, 106, 108, - 0, 47, 0, 58, 0, 0, 107, 0, 0, 411, - 409, 0, 0, 408, 389, 407, 410, 395, 385, 386, - 390, 391, 392, 405, 0, 388, 0, 382, 0, 265, - 267, 270, 271, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 212, 226, 224, 225, 231, - 324, 378, 293, 293, 293, 337, 377, 100, 293, 227, - 233, 151, 90, 91, 102, 191, 101, 99, 209, 293, - 208, 222, 293, 373, 293, 333, 236, 293, 334, 336, - 370, 369, 372, 371, 0, 68, 0, 67, 0, 0, - 0, 135, 273, 274, 0, 107, 89, 98, 88, 87, - 0, 0, 0, 0, 0, 157, 96, 0, 254, 253, - 251, 252, 255, 241, 240, 37, 245, 364, 257, 366, - 365, 193, 194, 290, 246, 247, 248, 249, 250, 289, - 288, 304, 34, 22, 29, 26, 27, 25, 28, 30, - 38, 33, 31, 244, 256, 238, 0, 258, 32, 358, - 359, 363, 36, 35, 167, 0, 79, 40, 105, 0, - 139, 55, 45, 54, 49, 50, 48, 72, 51, 53, - 52, 65, 56, 64, 60, 59, 61, 63, 62, 131, - 0, 19, 18, 164, 0, 0, 0, 0, 401, 413, - 0, 402, 398, 0, 393, 406, 387, 266, 268, 0, - 234, 0, 232, 204, 200, 202, 199, 230, 201, 203, - 192, 0, 185, 302, 228, 297, 292, 302, 0, 0, - 223, 204, 364, 85, 0, 190, 229, 0, 0, 0, - 236, 294, 236, 330, 331, 236, 338, 375, 335, 205, - 332, 92, 71, 66, 69, 70, 95, 97, 301, 137, - 0, 120, 119, 118, 116, 121, 117, 154, 156, 0, - 0, 368, 367, 0, 362, 305, 0, 285, 280, 217, - 283, 282, 286, 284, 281, 287, 279, 0, 239, 243, - 242, 259, 260, 278, 0, 0, 0, 0, 23, 41, - 0, 109, 133, 0, 404, 0, 0, 0, 394, 397, - 0, 415, 396, 0, 235, 0, 0, 296, 0, 295, - 188, 0, 0, 0, 211, 236, 213, 0, 216, 373, - 326, 313, 306, 307, 308, 0, 314, 322, 325, 309, - 379, 207, 206, 210, 0, 343, 342, 0, 340, 374, - 261, 290, 237, 0, 94, 134, 158, 160, 195, 0, - 0, 0, 122, 221, 357, 356, 360, 361, 175, 178, - 173, 176, 177, 180, 0, 181, 0, 174, 0, 179, - 0, 0, 39, 44, 182, 0, 43, 0, 0, 400, - 399, 0, 403, 414, 165, 0, 186, 303, 299, 298, - 189, 0, 83, 354, 215, 0, 219, 375, 323, 321, - 319, 318, 310, 311, 315, 320, 312, 316, 317, 345, - 344, 339, 262, 376, 293, 86, 0, 0, 0, 42, - 0, 0, 170, 0, 183, 184, 111, 104, 110, 412, - 187, 84, 0, 0, 261, 348, 346, 341, 347, 349, - 351, 264, 263, 327, 0, 124, 123, 220, 125, 0, - 172, 169, 355, 218, 236, 0, 353, 352, 328, 329, - 93, 0, 214, 350, 171 + 5, 3, 0, 0, 0, 1, 8, 0, 0, 0, + 262, 266, 0, 260, 264, 261, 265, 9, 110, 263, + 267, 0, 494, 491, 109, 259, 108, 0, 0, 0, + 0, 124, 47, 493, 490, 0, 162, 0, 20, 19, + 46, 124, 6, 0, 32, 50, 33, 0, 7, 12, + 13, 14, 18, 111, 0, 0, 140, 252, 165, 164, + 15, 158, 163, 251, 157, 0, 161, 0, 151, 253, + 17, 16, 41, 412, 478, 477, 381, 378, 385, 479, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 324, + 336, 362, 361, 359, 334, 360, 335, 363, 338, 345, + 431, 344, 488, 402, 353, 402, 149, 402, 365, 0, + 59, 442, 487, 402, 302, 303, 400, 337, 399, 398, + 354, 355, 356, 357, 358, 131, 4, 39, 55, 52, + 53, 51, 54, 339, 130, 0, 128, 56, 132, 64, + 133, 145, 301, 144, 60, 143, 321, 402, 367, 320, + 333, 57, 348, 364, 342, 384, 402, 483, 0, 366, + 402, 340, 340, 402, 129, 439, 58, 468, 469, 473, + 474, 441, 63, 62, 306, 305, 307, 0, 75, 88, + 249, 273, 0, 0, 0, 139, 141, 249, 0, 0, + 0, 0, 0, 242, 180, 203, 248, 202, 210, 209, + 204, 37, 0, 0, 11, 0, 0, 236, 276, 237, + 278, 0, 115, 120, 107, 117, 0, 268, 272, 254, + 132, 133, 129, 257, 152, 0, 480, 413, 476, 475, + 374, 376, 382, 383, 379, 380, 0, 69, 42, 0, + 295, 0, 0, 410, 477, 310, 0, 22, 23, 21, + 34, 308, 35, 28, 29, 30, 27, 31, 36, 26, + 240, 158, 312, 239, 0, 123, 0, 0, 311, 309, + 410, 25, 24, 300, 148, 0, 150, 0, 0, 0, + 404, 340, 407, 403, 340, 437, 0, 0, 177, 218, + 332, 217, 219, 438, 0, 472, 390, 349, 350, 131, + 124, 0, 340, 448, 485, 395, 0, 393, 392, 396, + 394, 391, 397, 389, 343, 347, 346, 368, 369, 388, + 440, 316, 317, 340, 0, 0, 0, 0, 481, 482, + 0, 76, 0, 89, 0, 0, 151, 0, 524, 522, + 0, 0, 521, 501, 520, 523, 508, 499, 495, 0, + 496, 502, 503, 504, 518, 0, 498, 0, 0, 492, + 0, 101, 0, 100, 151, 126, 142, 125, 0, 228, + 184, 183, 0, 0, 232, 186, 185, 0, 0, 0, + 184, 0, 0, 204, 0, 0, 0, 0, 0, 127, + 43, 241, 61, 48, 134, 135, 136, 277, 0, 116, + 113, 119, 112, 0, 270, 258, 375, 377, 0, 70, + 0, 0, 0, 298, 0, 406, 0, 180, 160, 0, + 0, 405, 153, 323, 340, 330, 329, 325, 328, 483, + 414, 433, 420, 415, 0, 421, 429, 432, 416, 489, + 319, 0, 318, 0, 0, 0, 0, 304, 322, 0, + 453, 452, 0, 450, 484, 370, 331, 400, 351, 341, + 447, 467, 466, 471, 470, 137, 86, 74, 85, 0, + 78, 79, 77, 106, 80, 82, 81, 98, 87, 97, + 0, 91, 90, 92, 94, 93, 250, 255, 274, 0, + 0, 0, 0, 514, 526, 0, 515, 511, 0, 0, + 527, 505, 0, 506, 519, 497, 105, 99, 0, 104, + 256, 0, 0, 0, 229, 0, 387, 386, 243, 0, + 0, 233, 244, 401, 0, 0, 0, 0, 229, 34, + 205, 211, 207, 400, 208, 206, 0, 0, 0, 202, + 0, 0, 166, 0, 0, 0, 0, 0, 402, 443, + 212, 216, 0, 49, 0, 269, 0, 275, 285, 288, + 283, 286, 287, 290, 291, 0, 284, 0, 289, 0, + 0, 65, 66, 68, 73, 72, 67, 292, 0, 71, + 0, 296, 310, 299, 311, 309, 411, 0, 0, 121, + 464, 0, 327, 485, 430, 427, 428, 426, 425, 417, + 418, 422, 419, 423, 424, 409, 408, 238, 159, 220, + 0, 227, 226, 400, 225, 221, 0, 0, 455, 454, + 449, 371, 486, 402, 352, 0, 84, 96, 0, 517, + 0, 0, 0, 507, 510, 0, 529, 509, 500, 103, + 0, 228, 183, 230, 0, 184, 231, 0, 0, 0, + 184, 200, 201, 0, 0, 184, 234, 232, 235, 211, + 207, 400, 208, 206, 0, 214, 213, 215, 0, 0, + 0, 245, 170, 0, 246, 171, 0, 247, 181, 172, + 400, 173, 182, 340, 340, 340, 45, 44, 69, 271, + 0, 0, 280, 0, 293, 294, 297, 0, 0, 122, + 0, 155, 147, 156, 154, 370, 223, 222, 224, 178, + 478, 477, 179, 458, 456, 451, 457, 459, 461, 373, + 372, 434, 138, 0, 513, 512, 0, 516, 528, 0, + 0, 0, 197, 198, 0, 0, 187, 189, 191, 190, + 192, 193, 400, 188, 199, 0, 0, 214, 213, 215, + 0, 0, 167, 168, 169, 175, 174, 176, 446, 445, + 444, 0, 0, 282, 279, 474, 465, 340, 0, 463, + 462, 435, 436, 525, 184, 186, 195, 194, 196, 114, + 0, 326, 460, 281 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 42, 325, 127, 364, 45, 46, 253, 254, - 410, 255, 122, 256, 124, 257, 206, 286, 258, 51, - 52, 53, 180, 94, 219, 464, 54, 55, 56, 182, - 119, 279, 120, 497, 183, 58, 375, 99, 100, 473, - 101, 59, 126, 60, 61, 62, 63, 103, 223, 224, - 379, 380, 64, 128, 184, 107, 108, 494, 495, 496, - 331, 185, 186, 326, 332, 327, 187, 188, 189, 347, - 436, 437, 438, 398, 190, 191, 359, 462, 263, 264, - 265, 400, 534, 151, 152, 89, 192, 193, 92, 401, - 402, 266, 80, 334, 350, 335, 351, 87, 427, 267, - 446, 527, 447, 528, 448, 348, 194, 579, 195, 196, - 197, 198, 531, 458, 557, 558, 559, 512, 268, 269, - 270, 271, 337, 204, 357, 460, 199, 349, 272, 76, - 329, 75, 138, 139, 140, 141, 313, 142, 311, 312, - 143, 144, 145, 304, 422 + -1, 2, 4, 3, 42, 43, 44, 529, 299, 251, + 46, 126, 552, 204, 47, 48, 127, 253, 573, 574, + 410, 254, 332, 469, 255, 334, 480, 256, 362, 508, + 472, 257, 53, 54, 401, 554, 55, 216, 133, 188, + 56, 134, 367, 136, 137, 57, 58, 59, 220, 259, + 275, 225, 591, 221, 260, 61, 62, 752, 417, 289, + 195, 369, 374, 380, 201, 642, 198, 199, 391, 376, + 643, 656, 208, 609, 263, 383, 63, 336, 64, 65, + 66, 67, 68, 218, 403, 556, 69, 337, 141, 210, + 211, 577, 578, 579, 239, 142, 143, 144, 240, 265, + 266, 145, 146, 147, 277, 427, 428, 314, 148, 149, + 150, 321, 458, 459, 152, 153, 154, 316, 623, 232, + 233, 155, 156, 157, 732, 317, 297, 318, 158, 733, + 280, 281, 282, 283, 415, 159, 435, 603, 436, 604, + 437, 278, 160, 772, 161, 162, 163, 550, 222, 165, + 620, 453, 715, 716, 717, 589, 166, 167, 168, 169, + 170, 270, 330, 304, 455, 171, 279, 271, 183, 272, + 182, 348, 502, 499, 350, 351, 352, 498, 353, 496, + 497, 354, 355, 356, 489, 637 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -370 +#define YYPACT_NINF -542 static const yytype_int16 yypact[] = { - -370, 1281, -370, -370, -66, -58, -370, -370, -8, -370, - -370, -370, -370, -9, -370, -370, -370, -370, -8, -370, - -370, -370, -370, -370, 1758, -8, 15, 18, 34, 50, - 75, -8, -370, -370, -370, -370, 285, 168, -370, -370, - -370, -370, -370, -370, -370, 150, -370, -370, -370, -370, - -370, -370, 48, 41, -370, -370, -370, -370, 168, -370, - -370, 16, -5, -370, -370, -370, -370, 84, 91, -370, - -370, -370, 74, -370, -370, 777, -35, -52, -370, -370, - 1643, 7, 1528, -370, -370, 95, -370, 1643, -52, -370, - -370, -370, 75, 74, 675, 285, 285, 285, -370, -370, - -370, -370, 117, 239, 790, 537, -370, 10, 125, 131, - -370, 139, -370, -370, -370, 239, -370, 185, -370, -370, - 16, -370, 1330, -370, 1433, -8, -5, 115, 1643, -370, - -370, 310, 362, -370, -370, -370, -370, -370, -370, -370, - -370, -370, -370, -370, 260, -370, 180, -370, -19, -370, - -370, 166, 167, 187, 25, 126, 78, -8, 106, -8, - -8, 106, 355, -8, 50, -370, -370, -370, -370, -370, - -370, -370, 106, 106, 106, -370, -370, 168, 106, -370, - -370, -370, -370, -370, -370, -370, -370, -370, -370, 106, - -370, -370, 106, -370, 106, -370, -370, 106, -370, -370, - -370, -370, -370, -370, 1643, -370, 45, -370, 913, 1036, - 221, -370, 166, 167, 1643, -5, -370, -370, -370, -370, - 26, 1643, 220, 16, 201, 207, -370, -15, -370, -370, - -370, -370, -370, -370, -370, -370, -370, 208, -370, -370, - 210, -370, -370, 20, -370, -370, -370, -370, -370, -370, - -370, -13, -370, -370, -370, -370, -370, -370, -370, -370, - -370, 211, -370, -370, -370, -370, 1757, -370, 87, -370, - 135, -370, -370, -370, -370, 537, -370, 231, -370, 217, - -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, - -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, - 1643, -370, -370, -370, 218, 362, 362, 362, -370, -370, - 362, -370, -370, 153, -370, -370, -370, -370, -370, 228, - -370, 219, -370, -370, -370, -370, 211, -370, -370, -370, - -370, 10, 229, -370, -370, -370, 224, -370, 10, 233, - -370, 120, 60, 106, 234, -370, -370, 40, 222, 777, - -370, 224, -370, -370, -370, -370, 366, 214, -370, 1771, - -370, 364, -370, -370, -370, -370, -370, -370, -370, -370, - 1643, -370, -370, -370, -370, -370, -370, -370, -370, 16, - 259, -370, -370, 108, -370, -370, 205, -370, -370, -370, - -370, -370, -370, -370, -370, -370, 211, 324, -370, -370, - -370, -370, -370, -370, 108, 108, 108, 108, -370, -370, - 278, -370, -370, 1528, -370, 10, -35, 301, -370, -370, - 260, -370, -370, 251, -370, 263, -8, 250, 63, 250, - -370, 399, 264, -13, -370, -370, -370, 371, -370, -370, - -370, -370, -370, -370, -370, 28, -370, 672, -370, -370, - -370, 1771, 1771, 1771, 262, -370, -370, 262, -370, -370, - -62, -370, -370, 261, -370, -370, -370, -370, -370, 133, - 133, 133, -370, -370, -370, -370, -370, -370, -370, -370, - -370, -370, -370, -370, 10, -370, -8, -370, -8, -370, - -8, 268, -370, -370, -370, 170, -370, 379, 54, -370, - -370, 301, -370, -370, -370, 399, -370, -370, -370, -370, - -370, -13, -370, 255, 1771, 133, -370, 214, 672, -370, - -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, - -370, 141, -52, -370, 106, -370, 26, 1771, 220, -370, - 10, 10, -370, 399, -370, -370, -370, -370, -370, -370, - -370, -370, -13, 154, -62, -370, -370, -370, 271, -370, - -14, 166, 167, 361, 1159, -370, -370, -370, -370, 280, - -370, -370, -370, -370, -370, -13, -370, -370, -370, -370, - -370, 399, 1771, -370, -370 + 12, -542, 128, 4145, 877, -542, -542, 54, 17, 48, + -542, -542, 54, -542, -542, -542, -542, -542, -542, -542, + -542, 54, -542, -542, -542, -542, -542, 64, 75, 75, + 54, -542, -542, -542, -542, 480, -542, 480, -542, -542, + -542, -542, -542, 135, -542, -542, -542, 292, -542, -542, + -542, -542, -542, -542, 139, 1505, -542, -542, -542, -542, + 136, -542, -542, -542, -542, 3928, -542, 209, 22, -542, + -542, -542, -542, 161, 211, 254, 92, 92, -542, -542, + 151, 23, 877, 54, 54, 54, 2972, 54, 168, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, 107, -542, 107, -542, 107, -542, 600, + -542, -542, -542, 107, -542, -542, 308, -542, 266, 266, + -542, -542, -542, -542, -542, 293, -542, -542, -542, -542, + -542, -542, -542, -542, -542, 3710, -542, -542, 299, -542, + 89, -542, -542, -542, 179, -542, -542, 107, -542, -542, + -542, -542, -542, -542, -542, -542, 107, -542, 1567, -542, + 107, -542, -542, 107, 317, -542, 245, -542, 73, -542, + -542, -542, -542, -542, -542, -542, -542, 118, 219, 224, + 213, -542, 1260, 411, 3821, -542, -542, 213, 1281, 626, + 706, 733, 163, -542, -542, -542, -542, -542, 246, 255, + -542, -542, 1393, 253, -542, 600, 1041, -542, -542, -542, + 485, 222, 271, -542, -542, -542, 4035, -542, 378, -542, + -542, 136, -542, -542, -542, 209, -542, -542, -542, -542, + -542, -542, 252, 257, 252, 257, 265, 316, -542, 485, + 303, 581, 313, -542, 59, 148, 766, -542, -542, -542, + 1751, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, 1792, -542, -542, 3928, -542, 107, 314, 202, 291, + -542, -542, -542, -542, -542, 295, -542, 633, 210, 1260, + -542, -542, -542, 306, -542, -542, 733, 656, -542, -542, + -542, -542, -542, -542, 112, -542, -542, -542, -542, -542, + -542, 279, -542, 675, 312, -542, 600, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, 1525, 1525, -542, 112, 112, 112, 112, -542, -542, + 3928, -542, 4191, -542, 4291, 54, 22, 3928, -542, -542, + 405, 433, -542, -542, -542, -542, -542, -542, -542, 212, + -542, -542, -542, -542, -542, 1362, -542, 370, 352, -542, + -14, -542, 122, -542, 22, -542, -542, -542, 685, -542, + 323, -542, 802, 744, -542, 335, -542, 107, 733, 748, + 1638, 3218, 2448, 1884, 777, 928, 951, 200, 308, -542, + -542, -542, -542, -542, -542, 136, -542, -542, 1041, -542, + 54, -542, -542, 755, -542, -542, -542, -542, 344, -542, + 4336, 343, 54, -542, 3095, 346, 774, 1905, -542, 351, + 161, 346, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, 156, -542, 158, -542, -542, -542, + 1525, 45, 1525, 4642, 2528, 951, 1169, -542, 1525, 477, + -542, -542, 477, -542, -542, -17, -542, 266, -542, -542, + 1525, -542, -542, -542, -542, 488, -542, -542, -542, 135, + -542, -542, -542, -542, 136, -542, -542, -542, -542, -542, + 135, -542, -542, 136, -542, -542, -542, -542, -542, 374, + 433, 433, 433, -542, -542, 433, -542, -542, 730, 406, + -542, -542, 390, -542, -542, -542, -542, -542, 135, -542, + -542, 1040, 1043, 1114, -542, 4601, -542, -542, -542, 1167, + 1167, -542, -542, 306, 3341, 2602, 1226, 1226, 2641, -542, + -542, -542, -542, 440, -542, -542, 791, 499, 802, 505, + 805, 508, -542, 107, 815, 509, 3464, 2680, 107, 2834, + -542, -542, 632, -542, 400, -542, 755, -542, -542, -542, + -542, -542, -542, -542, -542, 54, -542, 54, -542, 54, + 388, -542, -542, -542, -542, -542, 136, -542, 684, -542, + 3095, -542, -542, -542, -542, -542, -542, 951, 161, -542, + 393, 4487, 1525, 312, 158, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + 1208, -542, -542, 452, -542, -542, 4748, 2754, -542, -542, + 196, 92, -542, 107, -542, 75, -542, -542, 3821, -542, + 485, 411, 915, -542, -542, 1362, -542, -542, -542, -542, + 847, 802, 505, -542, 107, 173, -542, 917, 4642, 2793, + 1712, -542, -542, 931, 802, 188, -542, 107, -542, 1985, + 2065, 464, 2086, 2166, 942, -542, -542, -542, 777, 928, + 951, -542, -542, 951, -542, -542, 951, -542, -542, -542, + 533, -542, -542, -542, -542, 306, -542, -542, 316, -542, + 485, 581, -542, 3095, -542, -542, -542, 3587, 2680, -542, + 161, -542, -542, -542, -542, -17, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, 403, -542, 27, 252, + 257, 494, -542, 149, -542, -542, 915, -542, -542, 1040, + 1043, 1114, -542, -542, 1262, 1114, -542, -542, -542, -542, + -542, -542, 592, -542, -542, 1167, 1167, 2246, 2267, 2347, + 1226, 1226, -542, -542, -542, -542, -542, -542, 1525, 1525, + 1525, 4443, 415, -542, -542, 2427, -542, -542, 161, -542, + -542, -542, -542, -542, 460, 460, -542, -542, -542, -542, + 3095, 1525, -542, -542 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -370, -370, -370, -1, -370, 44, -370, 38, 138, 368, - -370, 438, -370, 65, -370, 56, 27, 318, 5, -370, - -370, -370, -370, -36, -47, -370, -370, -370, -370, -370, - -79, -370, -83, -370, 36, -37, -95, -370, -370, -369, - 256, -370, 354, -370, -370, -370, -370, 390, -370, -370, - -370, -370, -370, -370, -370, -370, -299, -370, -370, -48, - 157, 294, -370, -77, -4, -151, -370, -370, -370, -370, - -98, 194, -370, -370, -370, -370, -301, -96, -370, -370, - 195, -370, -86, -81, -80, 445, -20, -28, 378, -370, - -370, -370, -370, 311, -158, -124, 51, 313, 143, -370, - -370, -370, 42, -370, -370, -370, -370, -370, -370, -370, - -370, -370, -370, -46, -370, -370, -84, -22, -370, -146, - -213, -143, -78, -370, 53, -24, -370, -370, 61, -370, - 0, -370, 146, -53, -370, -119, -370, -370, 365, -7, - -126, -59, -131, -370, 81 + -542, -542, -542, -542, -542, -542, -37, -16, -3, -276, + -58, 481, -542, -374, -542, -24, -135, 18, -542, -29, + -123, 69, -542, -542, 44, -542, -542, 94, -59, -542, + 240, 4, -542, -542, -542, -542, -542, -542, -542, 13, + 9, -42, 90, -84, -542, -542, -542, -542, 25, 1, + -542, -227, -542, 0, -214, -68, 11, 301, -5, -542, + -542, 41, 103, -1, -2, -26, -542, -542, 95, 3, + -164, -134, -71, -66, -28, -22, 304, 389, -542, -52, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -204, -542, -542, -7, 134, -542, -542, 288, 32, -306, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -146, 10, 43, -542, -542, 445, -542, -91, -53, + -51, -542, -308, -232, -287, -542, -45, -542, -542, -297, + 2, -46, -40, -302, 348, -542, -542, -542, 186, -542, + -542, -542, -542, -542, -542, -542, -65, -542, 39, -542, + -542, 6, -542, -542, -128, 34, -542, 114, -61, -74, + -541, -67, -542, 223, 58, -542, -542, 99, -542, 37, + -542, 375, -117, -542, -141, -542, -267, -542, -542, 315, + 146, -292, -147, -271, -542, 26 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -371 +#define YYTABLE_NINF -481 static const yytype_int16 yytable[] = { - 43, 66, 91, 203, 72, 104, 50, 212, 213, 262, - 90, 343, 328, 316, 74, 352, 353, 148, 315, 328, - 354, 81, 315, 147, 116, 314, 260, 93, 261, 314, - 384, 355, 425, 181, 356, 207, 358, 57, 344, 360, - 211, 320, 110, 300, 106, 44, 362, 208, 209, 451, - 576, 452, 43, 117, 453, 362, 111, 49, 259, 19, - 78, 19, 65, 67, 91, 27, 48, 28, 516, 532, - 13, 68, 90, 15, 146, 132, 200, 134, 201, 13, - 21, 303, 15, 280, 32, 533, 23, 149, 150, 21, - 146, 113, 69, 218, 137, 23, 200, 118, 201, 69, - 536, 537, 538, 218, 252, 273, 274, 434, 70, 71, - 137, 237, 441, 577, 277, 70, 71, 442, 157, 443, - 73, 299, 290, 202, 298, 159, 43, 287, 160, 287, - 38, 39, 370, 69, 514, 163, 239, 34, 240, 34, - 321, 85, 322, 435, 82, 41, 553, 83, 33, 70, - 71, 444, 200, 389, 201, 77, 86, 361, 288, 19, - 296, 38, 39, 84, 40, 302, 283, 369, 293, 508, - 384, 112, 102, 385, 373, 363, 381, 109, 285, 262, - 294, 121, 421, 289, 549, 297, 377, 284, 123, 396, - 77, -369, -369, 476, 477, 200, 260, 201, 261, 237, - 88, 129, 454, 455, 456, 125, 457, 218, 218, 336, - 333, 365, 336, 404, 405, 323, 371, 237, 376, 432, - 372, 374, 33, 72, 239, 469, 240, 471, 259, 472, - 200, -155, 201, 324, 383, 38, 39, 34, 40, 210, - 555, 569, 239, 225, 240, 301, 38, 39, 276, 241, - 242, -370, -370, 412, 420, 19, 275, 435, 474, 475, - 419, 130, 131, 132, 133, 134, 403, 389, 277, 77, - 38, 39, 305, 582, 252, 273, 135, 136, 406, 407, - 510, 105, 137, 418, 478, 479, 421, 278, 328, 503, - 38, 39, 480, 544, 315, 481, 482, 483, 414, 415, - 416, 314, 484, 417, 440, 317, 441, 318, 129, 468, - 319, 442, 368, 443, 485, 378, 338, 339, 486, 439, - 345, -159, 487, 465, 381, 488, 382, 69, 241, 242, - 106, 493, 409, 34, 489, 490, 117, 430, 386, 424, - 38, 39, 466, 70, 71, 444, 411, 413, 449, 129, - 509, 220, 221, 222, 550, 513, 445, 148, 501, 423, - 459, 426, 328, 500, 431, 433, 207, 428, 130, 131, - 503, 133, 463, 467, 504, 315, 563, 95, 96, 97, - 118, 98, 507, 135, 136, 478, 479, 88, 19, 137, - 535, 552, 571, 480, 505, 511, 481, 482, 483, 543, - 328, 491, 305, 575, 306, 307, 308, 578, 492, 130, - 131, 581, 133, 408, 499, 485, 469, 470, 471, 486, - 472, 114, 506, 487, 135, 136, 488, 454, 455, 456, - 584, 457, 19, 513, 529, 489, 490, 530, 328, 47, - 498, 567, 295, 568, 341, 449, 342, 215, 115, 548, - 330, 561, 562, 560, 310, 573, 306, 307, 308, 333, - 397, 399, 324, 469, 515, 471, 34, 472, 574, 79, - 214, 239, 340, 240, 572, 38, 39, 346, 241, 242, - 429, 546, 540, 539, 541, 556, 542, 518, 323, 551, - 237, 583, 517, 554, 545, 450, 309, 560, 502, 564, - 0, 0, 491, 365, 0, 0, 324, 0, 0, 547, - 34, 0, 0, 0, 0, 239, 0, 240, 0, 38, - 39, 0, 241, 242, 0, 439, 0, 0, 0, 0, - 0, 0, 565, 0, 376, 0, 566, 374, 0, 106, - 570, 0, 0, 0, 0, 0, 4, 5, 153, 6, - 7, 0, 227, 0, 0, 0, 0, 9, 10, 11, - 12, 0, 0, 218, 154, 15, 16, 17, 18, 155, - 19, 20, 21, 0, 22, 0, 156, 157, 23, 158, - 24, 0, 25, 0, 159, 26, 27, 160, 28, 161, - 162, 29, 30, 0, 163, 117, 164, 31, 0, 0, - 0, 0, 0, 165, 0, 32, 0, 166, 228, 0, - 229, 230, 167, 231, 168, 232, 0, 169, 233, 0, - 170, 0, 234, 0, 171, 172, 235, 236, 237, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 0, 118, - 174, 0, 238, 0, 175, 176, 0, 0, 34, 35, - 36, 177, 77, 239, 0, 240, 178, 38, 39, 0, - 241, 242, 88, 243, 0, 0, 41, 0, 0, 0, - 179, 244, 245, 246, 247, 248, 216, 0, 249, 250, - 0, 0, 251, 0, 0, 0, 153, 6, 7, 0, - 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, - 0, 0, 154, 0, 16, 17, 18, 155, 0, 0, - 0, 0, 22, 0, 156, 157, 0, 158, 24, 0, - 25, 0, 159, 0, 27, 160, 28, 161, 162, 29, - 30, 0, 163, 0, 164, 31, 0, 0, 0, 0, - 0, 165, 519, 32, 217, 166, 520, 0, 0, 0, - 167, 521, 168, 0, 0, 169, 0, 0, 170, 0, - 0, 0, 171, 172, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 173, 0, 0, 174, 0, - 0, 0, 175, 176, 0, 0, 0, 0, 36, 177, - 77, 216, 0, 0, 178, 38, 39, 0, 522, 523, - 88, 153, 6, 7, 41, 8, 0, 524, 179, 0, - 9, 10, 11, 12, 0, 0, 525, 154, 526, 16, - 17, 18, 155, 0, 0, 129, 0, 22, 0, 156, - 157, 0, 158, 24, 0, 25, 0, 159, 0, 27, - 160, 28, 161, 162, 29, 30, 0, 163, 0, 164, - 31, 0, 0, 0, 0, 0, 165, 0, 32, 0, - 166, 0, 0, 0, 0, 167, 0, 168, 0, 0, - 169, 0, 0, 170, 0, 0, 0, 171, 172, 0, - 0, 0, 0, 0, 0, 130, 131, 132, 133, 134, - 173, 0, 0, 174, 0, 0, 0, 175, 176, 0, - 135, 136, 0, 36, 177, 77, 137, 0, 0, 178, - 38, 39, 0, 0, 216, 88, 0, 0, 0, 41, - 226, 0, 0, 179, 153, 6, 7, 0, 8, 0, - 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, - 154, 0, 16, 17, 18, 155, 0, 0, 0, 0, - 22, 0, 156, 157, 0, 158, 24, 0, 25, 0, - 159, 0, 27, 160, 28, 161, 162, 29, 30, 0, - 163, 0, 164, 31, 0, 0, 0, 0, 0, 165, - 0, 32, 0, 166, 0, 0, 0, 0, 167, 0, - 168, 0, 0, 169, 0, 0, 170, 0, 0, 0, - 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 173, 0, 0, 174, 0, 0, 0, - 175, 176, 0, 0, 0, 0, 36, 177, 77, 0, - 0, 0, 178, 38, 39, 0, 0, 216, 88, 0, - 0, 0, 41, 366, 0, 0, 179, 153, 6, 7, - 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, - 0, 0, 0, 154, 0, 16, 17, 18, 155, 0, - 0, 0, 0, 22, 0, 156, 157, 0, 158, 24, - 0, 25, 0, 159, 0, 27, 160, 28, 161, 162, - 29, 30, 0, 163, 0, 164, 31, 0, 0, 0, - 0, 0, 165, 0, 32, 0, 166, 0, 0, 0, - 0, 167, 0, 168, 0, 0, 169, 0, 0, 170, - 0, 0, 0, 171, 172, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 0, 0, 174, - 0, 0, 0, 175, 176, 0, 0, 0, 0, 36, - 177, 77, 0, 0, 0, 178, 38, 39, 0, 0, - 216, 88, 0, 0, 0, 41, 367, 0, 0, 179, - 153, 6, 7, 0, 8, 0, 0, 0, 0, 9, - 10, 11, 12, 0, 0, 0, 154, 0, 16, 17, - 18, 155, 0, 0, 0, 0, 22, 0, 156, 157, - 0, 158, 24, 0, 25, 0, 159, 0, 27, 160, - 28, 161, 162, 29, 30, 0, 163, 0, 164, 31, - 0, 0, 0, 0, 0, 165, 0, 32, 0, 166, - 0, 0, 0, 0, 167, 0, 168, 0, 0, 169, - 0, 0, 170, 0, 0, 0, 171, 172, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, - 0, 0, 174, 0, 0, 0, 175, 176, 0, 0, - 0, 0, 36, 177, 77, 0, 0, 0, 178, 38, - 39, 2, 3, 0, 88, 0, 0, 0, 41, 580, - 4, 5, 179, 6, 7, 0, 8, 0, 0, 0, - 0, 9, 10, 11, 12, 0, 13, 14, 0, 15, - 16, 17, 18, 0, 19, 20, 21, 0, 22, 0, - 0, 0, 23, 0, 24, 0, 25, 0, 0, 26, - 27, 281, 28, 0, 0, 29, 30, 0, 0, 0, - 5, 31, 6, 7, 0, 8, 0, 0, 0, 32, - 9, 10, 11, 12, 0, 13, 0, 0, 15, 16, - 17, 18, 0, 19, 20, 21, 0, 22, 0, 0, - 0, 23, 0, 24, 0, 25, 0, 0, 26, 27, - 0, 28, 0, 0, 29, 30, 0, 0, 33, 0, - 31, 0, 34, 35, 36, 37, 0, 0, 32, 0, - 0, 38, 39, 0, 40, 0, 0, 0, 0, 0, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45, 125, 258, 60, 140, 139, 227, 52, 132, 197, + 207, 197, 269, 200, 151, 200, 322, 276, 261, 209, + 262, 268, 128, 219, 234, 372, 235, 381, 252, 138, + 194, 215, 194, 196, 264, 411, 360, 185, 186, 177, + 71, 173, 359, 164, 180, 429, 267, 50, 130, 249, + 418, 207, 45, 181, 202, 295, 377, 382, 226, 284, + 209, 285, 187, 504, 516, 349, 358, 293, 504, 224, + 250, 393, 49, 129, 298, 523, 712, 229, 223, 125, + 522, 88, 140, 139, 505, 518, 132, 292, 503, -135, + 326, 769, 151, 503, 135, 626, 217, 51, 131, 357, + 128, 302, 70, 172, 288, 530, 627, 138, 583, 487, + 303, 1, 291, 180, 320, 621, 346, 323, 243, 173, + 226, 164, 443, 506, 74, 75, 130, 106, 5, 622, + 79, 328, 402, 174, 639, 440, 329, 510, 442, 397, + 517, 618, 363, 217, 619, 347, 347, 178, 175, 176, + 506, 129, 444, 237, 605, 770, 448, 765, -102, -314, + 18, -314, 349, 371, 174, 371, 24, 200, 292, 430, + 26, 203, 135, 207, 226, 595, 131, 460, 179, 175, + 176, 172, 209, 292, -186, -102, -186, 18, 370, 375, + 313, -480, -480, 24, 184, 319, 261, 26, 22, -186, + 288, -186, 207, 392, 290, 41, 395, 139, 291, 226, + 132, 209, 264, -315, 524, -315, 151, 327, 241, 242, + 197, 273, 219, 430, 128, 300, 419, 636, 596, 228, + 516, 394, 597, 295, 230, 231, 405, 598, 413, 294, + 432, 523, 347, 173, 525, 396, 675, 685, 530, 291, + 130, 672, 22, 507, 384, 385, 386, 449, 450, 451, + 371, 452, 28, 553, 29, 463, 464, 514, 515, 212, + 678, 33, 229, 274, 696, 129, 236, 31, 592, 296, + 773, 433, 521, 515, 292, 599, 600, 102, 465, 205, + 38, 39, 431, -61, 432, 488, 601, 258, 713, -134, + 131, 288, -313, 602, -313, 172, 517, 301, 535, 291, + 111, 548, 112, 446, 551, 438, 531, -136, 347, 331, + 74, 75, 549, 252, 333, 33, 79, 500, 501, 468, + 258, 479, 474, 516, 483, 433, 473, 224, 473, 41, + 585, 387, 523, 504, 249, 335, 516, 434, 646, 584, + 388, 635, 371, 590, 398, 523, 252, 634, 539, 542, + 539, 636, 200, 646, 728, 224, 509, 486, 503, 476, + 615, 485, 324, 325, 606, 608, 470, 249, 611, 194, + 288, 349, 538, 390, 546, 404, 658, 764, 291, 291, + 399, 610, 534, 658, 406, 392, 418, 408, 395, 139, + 407, 456, 132, 555, 114, 115, 249, 572, 151, 517, + 576, 575, 624, 205, 38, 39, 128, 514, 515, 539, + 409, 678, 517, 394, 206, 422, 471, 607, 481, 521, + 515, 475, 180, 484, 504, 173, 412, 396, 461, 462, + 258, 652, 130, 616, 581, 414, 420, 608, 291, 651, + 441, 663, 665, 666, 614, 728, 261, 454, 667, 659, + 490, 347, 258, 610, 706, 707, 252, 129, 501, 557, + 708, 438, 264, 682, 783, 580, 747, 748, 249, 586, + 543, 547, 749, 588, 360, 726, 762, 249, 252, 200, + 725, 76, 131, 625, 542, 490, 258, 172, 491, 607, + 638, 492, 683, 493, 628, 500, 585, 671, 250, 249, + 370, 645, 650, -166, 358, 584, 674, 677, 655, 375, + 693, 590, 252, 495, 357, 341, 491, 343, 687, 492, + 688, 493, 700, 38, 39, 662, 768, 758, 759, 760, + 617, 346, 608, 249, 771, 755, 756, 780, 608, 45, + 709, 757, 641, 718, 648, 515, 689, 681, 610, 724, + 654, 539, 703, 238, 610, 761, 646, 641, 719, 723, + 720, 189, 190, 191, 482, 695, 364, 192, 193, 249, + 608, 426, 736, 737, 704, 697, 363, 646, 572, 447, + 291, 576, 684, 207, 347, 347, 610, 690, 347, 691, + 607, 692, 209, 315, 776, 777, 205, 38, 39, 258, + 778, 249, 658, 258, 767, 644, 649, 658, 421, 585, + 594, 781, 699, 657, 682, 721, 714, 681, 584, 261, + 657, 709, 607, 766, 722, 252, 629, 630, 631, 252, + 782, 632, 539, 542, 539, 264, 200, 539, 77, 78, + 539, 705, 593, 207, 439, 494, 249, 0, 727, 743, + 249, 0, 209, 194, 288, 0, 538, 0, 546, 0, + 0, 616, 291, 291, 697, 0, 291, 0, 0, 291, + 0, 250, 698, 0, 0, 537, 541, 545, 763, 347, + 0, 189, 190, 286, 0, 0, 258, 287, 193, 0, + 423, 718, 37, 38, 39, 0, 585, 200, 681, 542, + 0, 0, 200, 0, 0, 584, 0, 189, 190, 191, + 542, 0, 252, 368, 193, 0, 0, 509, 370, 645, + 650, 0, 0, 774, 775, 0, 449, 450, 451, 424, + 452, 0, 32, 249, 655, 375, 545, 384, 385, 445, + 35, 425, 0, 37, 38, 39, 0, 40, 572, 7, + 0, 576, 575, 686, 543, 547, 0, 0, 617, 0, + 641, 698, 648, 0, 0, 654, 511, 512, 513, 0, + 10, 11, 338, 12, 0, 0, 654, 13, 14, 15, + 16, 641, 0, 0, 19, 20, 21, 189, 190, 286, + 0, 25, 0, 373, 193, 37, 38, 39, 28, 694, + 29, 0, 537, 541, 545, 30, 76, 77, 78, 0, + 537, 541, 0, 31, 189, 190, 378, 537, 541, 0, + 379, 193, 0, 644, 649, 519, 520, 513, 644, 526, + 527, 513, 339, 340, 341, 342, 343, 0, 0, 657, + 0, 0, 38, 39, 657, 344, 345, 189, 190, 378, + 346, 633, 0, 416, 193, 384, 385, 587, 189, 190, + 191, 0, 35, 36, 536, 193, 0, -38, 72, 0, + 0, 7, 668, 669, 670, 41, 0, 73, 545, 74, + 75, 76, 77, 78, 0, 79, 668, 669, 673, 8, + 9, 80, 10, 11, 0, 81, 668, 669, 676, 13, + 14, 15, 16, 0, 82, 18, 19, 20, 21, 22, + 23, 24, 0, 25, 83, 26, 0, 0, 84, 27, + 28, 85, 29, 86, 0, 87, 88, 30, 729, 730, + 731, 0, 0, 89, 0, 31, 0, 90, 91, 0, + 92, 93, 94, 95, 96, 97, 0, 98, 99, 0, + 100, 0, 101, 0, 102, 103, 104, 338, 0, 0, + 753, 754, 0, 0, 754, 0, 0, 754, 0, 0, + 105, 0, 106, 107, 108, 109, 110, 111, 0, 112, + 0, 0, 33, 34, 35, 36, 0, 113, 37, 38, + 39, 0, 114, 115, 116, 0, 0, 41, 734, 735, + 731, 117, 118, 119, 120, 121, 122, 123, 124, 189, + 190, 378, 745, 746, 731, 540, 193, 339, 340, 0, + 342, 753, 754, 750, 751, 731, 753, 38, 39, 0, + 344, 345, 189, 190, 378, 7, 0, 753, 544, 193, + 0, 73, 753, 74, 75, 76, 77, 78, 0, 79, + 0, 0, 0, 8, 9, 80, 10, 11, 0, 81, + 0, 0, 0, 13, 14, 15, 16, 0, 0, 18, + 19, 20, 21, 22, 23, 24, 0, 25, 83, 26, + 0, 0, 84, 27, 28, 85, 29, 86, 0, 87, + 88, 30, 0, 0, 0, 0, 0, 89, 0, 31, + 0, 90, 91, 0, 92, 93, 94, 95, 96, 97, + 0, 98, 99, 0, 100, 0, 101, 0, 102, 103, + 104, 189, 190, 191, 189, 190, 378, 640, 193, 0, + 640, 193, 0, 0, 105, 0, 106, 107, 108, 109, + 110, 111, 0, 112, 0, 0, 33, 34, 35, 36, + 0, 113, 37, 38, 39, 0, 114, 115, 116, -40, + 365, 41, 0, 7, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 76, 77, 78, 0, 0, 0, 0, + 0, 0, 0, 80, 10, 11, 0, 12, 0, 0, + 0, 13, 14, 15, 16, 189, 190, 378, 19, 20, + 21, 647, 193, 0, 0, 25, 83, 0, 0, 0, + 84, 0, 28, 85, 29, 86, 0, 87, 0, 30, + 0, 0, 0, 10, 11, 89, 12, 31, 0, 90, + 13, 14, 15, 16, 94, 0, 96, 19, 20, 98, + 0, 0, 100, 0, 25, 0, 102, 103, 189, 190, + 378, 28, 0, 29, 653, 193, 0, 0, 30, 0, + 0, 0, 105, 0, 0, 107, 31, 0, 0, 111, + 0, 112, 365, 0, 0, 7, 35, 36, 0, 113, + 37, 38, 39, 0, 0, 76, 77, 78, 0, 41, + 0, 0, 0, 117, 0, 80, 10, 11, 0, 12, + 0, 0, 338, 13, 14, 15, 16, 189, 190, 378, + 19, 20, 21, 664, 193, 0, 36, 25, 83, 0, + 0, 0, 84, 0, 28, 85, 29, 86, 41, 87, + 0, 30, 0, 0, 0, 0, 0, 89, 0, 31, + 366, 90, 0, 189, 190, 191, 94, 0, 96, 647, + 193, 98, 0, 0, 100, 0, 0, 0, 102, 103, + 0, 0, 339, 340, 341, 342, 343, 0, 0, 0, + 0, 0, 38, 39, 105, 344, 345, 107, 0, 0, + 346, 111, 0, 112, 365, 0, 0, 7, 35, 36, + 0, 113, 37, 38, 39, 0, 0, 76, 77, 78, + 0, 41, 0, 0, 338, 117, 0, 80, 10, 11, + 0, 12, 0, 0, 0, 13, 14, 15, 16, 0, + 0, 0, 19, 20, 21, 0, 0, 0, 0, 25, + 83, 0, 0, 0, 84, 0, 28, 85, 29, 86, + 0, 87, 0, 30, 0, 0, 0, 0, 0, 89, + 0, 31, 0, 90, 0, 0, 0, 0, 94, 0, + 96, 0, 0, 98, 339, 340, 100, 342, 0, 0, + 102, 103, 0, 0, 38, 39, 0, 344, 345, 0, + 0, 0, 346, 0, 0, 0, 105, 0, 0, 107, + 0, 0, 0, 111, 0, 112, 213, 0, 0, -118, + 35, 36, 0, 113, 37, 38, 39, 0, 0, -118, + -118, -118, 0, 41, 389, 0, 0, 117, 0, -118, + -118, -118, 0, -118, 0, 73, 0, -118, -118, -118, + -118, 0, 0, 0, -118, -118, -118, 0, 0, 0, + 0, -118, -118, 0, 0, 0, -118, 0, -118, -118, + -118, -118, 0, -118, 0, -118, 0, 0, 0, 0, + 0, -118, 0, -118, 0, -118, 0, 73, 0, 0, + -118, 0, -118, 0, 0, -118, 0, 0, -118, 0, + 0, 0, 0, -118, 0, 0, 91, 0, 92, 93, + 0, 95, 0, 97, 0, 0, 99, 0, -118, 22, + 101, -118, 0, 0, 104, 32, 0, 0, 0, 0, + 0, 0, -118, -118, 0, -118, 37, 38, 39, 0, + 40, 0, 108, 109, 305, -118, 214, 0, 91, -118, + 92, 93, 0, 95, 0, 97, 0, 0, -186, -186, + -186, -186, 457, 0, 0, 0, -186, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 0, + 0, 0, 0, 0, 108, 109, 0, 174, 0, 0, + 0, 0, 33, 0, 306, 0, 0, 0, 0, 0, + 0, 0, 175, 176, 307, 308, 0, 0, 0, 0, + 309, 310, 311, 312, 120, 121, 122, 123, 124, -186, + 0, -186, -186, 0, -186, 0, -186, 0, 0, -186, + 0, 0, -186, -186, -186, -186, 0, -186, 0, 0, + -186, 0, 528, 515, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -186, -186, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, - 0, 34, 35, 36, 37, 6, 7, 0, 8, 0, - 0, 0, 0, 9, 10, 11, 12, 0, 13, 41, - 282, 15, 16, 17, 18, 0, 19, 20, 21, 0, - 22, 0, 0, 0, 23, 0, 24, 0, 25, 0, - 0, 26, 27, 0, 28, 0, 0, 29, 30, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -238, -238, -238, -238, -186, 0, 0, 0, -238, + 0, 0, 0, -186, -186, -186, -186, -186, -186, -186, + 0, 0, 0, -186, 0, -186, -186, 0, -186, 0, + -186, 0, 0, -186, 0, 0, 0, -186, 0, 0, + 0, -186, -159, -159, -159, -159, 744, 515, 0, 0, + -159, 0, 0, 0, 0, 0, 0, 0, 0, -186, + -186, -186, -238, 0, -238, -238, 0, -238, 0, -238, + 0, 0, -238, 0, 0, 0, -238, 0, 0, -186, + -238, 0, 0, 0, 0, 0, 0, -186, -186, -186, + -186, -186, -186, -186, 0, 0, 0, 0, -238, -238, + -238, 0, 0, -159, 0, -159, -159, 0, -159, 0, + -159, 0, 0, -159, 0, 0, 0, -159, -238, 0, + 0, -159, 0, 0, 0, 0, -238, -238, -238, -238, + -238, -238, -238, 0, -219, -219, -219, -219, 0, -159, + -159, -159, -219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -177, -177, -177, -177, -159, + 0, 0, 0, -177, 0, 0, 0, -159, -159, -159, + -159, -159, -159, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -219, 0, -219, -219, 0, + -219, 0, -219, 0, 0, -219, 0, 0, 0, -219, + 0, 0, 0, -219, 0, 0, -177, 0, -177, -177, + 0, -177, 0, -177, 0, 0, -177, 0, 0, 0, + -177, -219, -219, -219, -177, -227, -227, -227, -227, 0, + 0, 0, 0, -227, 0, 0, 0, 0, 0, 0, + 0, -219, -177, -177, -177, 0, 0, 0, 0, -219, + -219, -219, -219, -219, -219, -219, 0, 0, 0, 0, + 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, + -177, -177, -177, -177, -177, -177, -177, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -227, 0, -227, -227, + 0, -227, 0, -227, 0, 0, -227, 0, 0, 0, + -227, 0, 0, 0, -227, -226, -226, -226, -226, 0, + 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, + 0, 0, -227, -227, -227, 0, -225, -225, -225, -225, + 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, + 0, 0, -227, 0, 0, 0, 0, 0, 0, 0, + -227, -227, -227, -227, -227, -227, -227, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -226, 0, -226, -226, + 0, -226, 0, -226, 0, 0, -226, 0, 0, 0, + -226, 0, 0, 0, -226, 0, 0, -225, 0, -225, + -225, 0, -225, 0, -225, 0, 0, -225, 0, 0, + 0, -225, -226, -226, -226, -225, -221, -221, -221, -221, + 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, + 0, 0, -226, -225, -225, -225, 0, 0, 0, 0, + -226, -226, -226, -226, -226, -226, -226, 0, 0, 0, + 0, 0, 0, -225, 0, 0, 0, 0, 0, 0, + 0, -225, -225, -225, -225, -225, -225, -225, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -221, 0, -221, + -221, 0, -221, 0, -221, 0, 0, -221, 0, 0, + 0, -221, 0, 0, 0, -221, -223, -223, -223, -223, + 0, 0, 0, 0, -223, 0, 0, 0, 0, 0, + 0, 0, 0, -221, -221, -221, 0, -222, -222, -222, + -222, 0, 0, 0, 0, -222, 0, 0, 0, 0, + 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, + 0, -221, -221, -221, -221, -221, -221, -221, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -223, 0, -223, + -223, 0, -223, 0, -223, 0, 0, -223, 0, 0, + 0, -223, 0, 0, 0, -223, 0, 0, -222, 0, + -222, -222, 0, -222, 0, -222, 0, 0, -222, 0, + 0, 0, -222, -223, -223, -223, -222, -224, -224, -224, + -224, 0, 0, 0, 0, -224, 0, 0, 0, 0, + 0, 0, 0, -223, -222, -222, -222, 0, 0, 0, + 0, -223, -223, -223, -223, -223, -223, -223, 0, 0, + 0, 0, 0, 0, -222, 0, 0, 0, 0, 0, + 0, 0, -222, -222, -222, -222, -222, -222, -222, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -224, 0, + -224, -224, 0, -224, 0, -224, 0, 0, -224, 0, + 0, 0, -224, 0, 0, 0, -224, -179, -179, -179, + -179, 0, 0, 0, 0, -179, 0, 0, 0, 0, + 0, 0, 0, 0, -224, -224, -224, 0, 73, 0, + 74, 75, 0, 0, 0, 0, 79, 0, 0, 0, + 0, 0, 0, 0, -224, 0, 0, 0, 0, 0, + 0, 0, -224, -224, -224, -224, -224, -224, -224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -179, 0, + -179, -179, 0, -179, 0, -179, 0, 0, -179, 0, + 0, 0, -179, 0, 0, 0, -179, 0, 0, 91, + 0, 92, 93, 0, 95, 0, 97, 0, 0, 99, + 0, 0, 0, 101, -179, -179, -179, 104, 73, 0, + 74, 75, 0, 0, 0, 0, 79, 0, 0, 0, + 0, 0, 0, 0, -179, 108, 109, 532, 0, 0, + 0, 0, -179, -179, -179, -179, -179, -179, -179, 0, + 0, 0, 0, 0, 0, 533, 0, 0, 0, 0, + 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 0, 92, 93, 0, 95, 0, 97, 0, 0, 99, + 0, 0, 73, 101, 74, 75, 0, 104, 0, 0, + 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 109, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, - 6, 7, 0, 8, 34, 35, 36, 37, 9, 10, - 11, 12, 0, 0, 0, 154, 0, 16, 17, 18, - 155, 0, 41, 292, 0, 22, 0, 156, 157, 0, - 158, 24, 0, 25, 0, 159, 0, 27, 160, 28, - 161, 162, 29, 30, 0, 163, 0, 164, 31, 0, - 0, 0, 0, 0, 165, 0, 32, 0, 166, 0, - 0, 0, 0, 167, 0, 168, 0, 0, 169, 0, - 0, 170, 0, 0, 0, 171, 172, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, - 0, 174, 0, 0, 0, 175, 176, 0, 0, 0, - 0, 36, 177, 77, 0, 0, 0, 178, 0, 0, - 205, 0, 0, 88, 153, 6, 7, 41, 8, 0, - 0, 179, 0, 9, 10, 11, 12, 0, 0, 0, - 154, 0, 16, 17, 18, 155, 0, 0, 0, 0, - 22, 0, 156, 157, 0, 158, 24, 0, 25, 0, - 159, 0, 27, 160, 28, 161, 162, 29, 30, 0, - 163, 0, 164, 31, 0, 0, 0, 0, 0, 165, - 0, 32, 0, 166, 0, 0, 0, 0, 167, 0, - 168, 0, 0, 169, 0, 0, 170, 0, 0, 0, - 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 173, 0, 0, 174, 0, 0, 0, - 175, 176, 0, 0, 0, 0, 36, 177, 77, 0, - 0, 0, 178, 0, 0, 0, 0, 0, 88, 0, - 6, 7, 41, 8, 0, 0, 179, 0, 9, 10, - 11, 12, 0, 0, 0, 0, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 24, 0, 25, 0, 0, 0, 27, 0, 28, - 0, 0, 29, 30, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 387, 0, 32, 0, 228, 0, - 229, 230, 0, 231, 0, 232, 0, 0, 0, 0, - 0, 0, 228, 0, 229, 230, 388, 231, 0, 232, - 0, 0, 233, 0, 0, 0, 234, 0, 0, 0, - 0, 236, 238, 0, 0, 0, 0, 0, 34, 0, - 389, 36, 37, 77, 0, 0, 238, 0, 0, 0, - 241, 242, 0, 390, 391, 0, 0, 41, 0, 392, - 393, 244, 245, 246, 247, 248, 0, 461, 394, 395, - 0, 0, 251, 0, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 250, 0, 0, 251 + 0, -233, 0, -233, -233, 613, 0, 0, 0, -233, + 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, + 0, 0, 0, 91, 0, 92, 93, 0, 95, 0, + 97, 0, 0, 99, 0, 0, 0, 101, 0, 0, + 73, 104, 74, 75, 0, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 109, 660, -233, 0, -233, -233, 0, -233, 0, -233, + 0, 0, -233, 0, 0, 0, -233, 0, 0, 661, + -233, 0, 0, 0, 0, 0, 0, 118, 119, 120, + 121, 122, 123, 124, 0, 0, 0, 0, -233, -233, + -233, 91, 0, 92, 93, 0, 95, 0, 97, 0, + 0, 99, 0, 0, 73, 101, 710, 711, -233, 104, + 0, 0, 79, 0, 0, 0, -233, -233, -233, -233, + -233, -233, -233, 0, 0, 0, 0, 108, 109, 679, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 73, 0, 738, 739, 680, 0, 0, + 0, 740, 0, 0, 0, 118, 119, 120, 121, 122, + 123, 124, 0, 0, 0, 91, 0, 92, 93, 0, + 95, 0, 97, 0, 0, 99, 0, 0, 0, 101, + 0, 0, 0, 104, 73, 243, 0, 226, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 679, 91, 0, 92, 93, 0, 95, + 0, 97, 0, 0, 99, 0, 0, 0, 101, 0, + 0, 680, 104, 0, 0, 0, 0, 0, 0, 118, + 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, + 108, 109, 741, 0, 0, 91, 0, 92, 93, 0, + 95, 0, 97, 0, 0, 99, 0, 0, 0, 101, + 742, 0, 0, 104, 0, 0, 0, 0, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 0, 0, 0, + 0, 108, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 457, 0, 0, 0, 0, 0, 0, 0, 118, + 119, 120, 121, 122, 123, 124, 7, 0, 0, 0, + 0, 0, 0, 243, 74, 244, 76, 77, 78, 0, + 79, 0, 0, 0, 8, 9, 80, 10, 11, 0, + 81, 0, 0, 0, 13, 14, 15, 16, 0, 0, + 18, 19, 20, 21, 22, 23, 24, 0, 25, 83, + 26, 0, 0, 84, 27, 28, 85, 29, 86, 0, + 87, 88, 30, 0, 0, 0, 0, 0, 89, 0, + 31, 0, 90, 0, 0, 0, 0, 94, 0, 96, + 0, 0, 98, 0, 0, 100, 0, 0, 0, 102, + 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 0, 106, 107, 0, + 0, 245, 111, 0, 112, 0, 0, 33, 34, 35, + 36, 0, 113, 246, 38, 39, 0, 247, 248, 7, + 0, 0, 41, 0, 0, 0, 117, 74, 75, 76, + 77, 78, 0, 79, 0, 0, 0, 8, 9, 80, + 10, 11, 0, 81, 0, 0, 0, 13, 14, 15, + 16, 0, 0, 18, 19, 20, 21, 22, 23, 24, + 0, 25, 83, 26, 0, 0, 84, 27, 28, 85, + 29, 86, 0, 87, 88, 30, 0, 0, 0, 0, + 0, 89, 0, 31, 0, 90, 0, 0, 0, 0, + 94, 0, 96, 0, 0, 98, 0, 0, 100, 0, + 0, 0, 102, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, + 106, 107, 0, 0, 582, 111, 0, 112, 0, 0, + 33, 34, 35, 36, 0, 113, 37, 38, 39, 0, + 247, 248, 7, 0, 0, 41, 0, 0, 0, 117, + 0, 0, 76, 77, 78, 0, 0, 0, 0, 0, + 8, 9, 80, 10, 11, 0, 81, 0, 0, 0, + 13, 14, 15, 16, 0, 0, 18, 19, 20, 21, + 22, 23, 24, 0, 25, 83, 26, 0, 0, 84, + 27, 28, 85, 29, 86, 0, 87, 88, 30, 0, + 0, 0, 0, 0, 89, 0, 31, 0, 90, 0, + 0, 0, 0, 94, 0, 96, 0, 0, 98, 0, + 0, 100, 0, 0, 0, 102, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 0, 106, 107, 0, 0, 0, 111, 0, + 112, 0, 0, 33, 34, 35, 36, 0, 113, 37, + 38, 39, 0, 247, 248, 7, 0, 0, 41, 0, + 0, 0, 117, 0, 0, 76, 77, 78, 0, 0, + 0, 0, 0, 8, 9, 80, 10, 11, 0, 81, + 0, 0, 0, 13, 14, 15, 16, 0, 0, 18, + 19, 20, 21, 22, 23, 24, 0, 25, 83, 26, + 0, 0, 84, 27, 28, 85, 29, 86, 0, 87, + 88, 30, 0, 0, 0, 0, 0, 89, 0, 31, + 0, 90, 0, 0, 0, 0, 94, 0, 96, 0, + 0, 98, 0, 0, 100, 0, 0, 0, 102, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 0, 106, 107, 0, 0, + 0, 111, 0, 112, 0, 0, 33, 34, 35, 36, + 0, 113, 246, 38, 39, 0, 247, 248, 7, 0, + 0, 41, 0, 0, 0, 117, 0, 0, 76, 77, + 78, 0, 0, 0, 0, 0, 8, 9, 80, 10, + 11, 0, 81, 0, 0, 0, 13, 14, 15, 16, + 0, 0, 18, 19, 20, 21, 22, 23, 24, 0, + 25, 83, 26, 0, 0, 84, 27, 28, 85, 29, + 86, 0, 87, 88, 30, 0, 0, 0, 0, 0, + 89, 0, 31, 0, 90, 0, 0, 0, 0, 94, + 0, 96, 0, 0, 98, 0, 0, 100, 0, 0, + 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 0, 106, + 107, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 34, 35, 36, 0, 113, 37, 38, 39, 0, 247, + 248, 7, 0, 0, 41, 0, 0, 0, 117, 0, + 0, 76, 77, 78, 0, 0, 0, 0, 0, 8, + 9, 80, 10, 11, 0, 81, 0, 0, 0, 13, + 14, 15, 16, 0, 0, 18, 19, 20, 21, 22, + 23, 24, 0, 25, 83, 26, 0, 0, 84, 27, + 28, 85, 29, 86, 0, 87, 88, 30, 0, 0, + 0, 0, 0, 89, 0, 31, 0, 90, 0, 0, + 0, 0, 94, 0, 96, 0, 0, 98, 0, 0, + 100, 0, 0, 0, 0, 103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105, 0, 106, 107, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 34, 35, 36, 0, 113, 246, 38, + 39, 0, 247, 248, 7, 0, 0, 41, 0, 0, + 0, 117, 0, 0, 76, 77, 78, 0, 0, 0, + 0, 0, 0, 0, 80, 10, 11, 0, 12, 0, + 0, 0, 13, 14, 15, 16, 0, 0, 0, 19, + 20, 21, 0, 0, 0, 0, 25, 83, 0, 0, + 0, 84, 0, 28, 85, 29, 86, 0, 87, 0, + 30, 0, 0, 0, 0, 0, 89, 0, 31, 0, + 90, 0, 0, 0, 0, 94, 0, 96, 0, 0, + 98, 0, 0, 100, 0, 0, 0, 102, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 0, 0, 107, 0, 0, 0, + 111, 0, 112, 0, 0, 7, 0, 35, 36, 0, + 113, 37, 38, 39, 0, 76, 77, 78, 0, 0, + 41, 0, 0, 0, 117, 80, 10, 11, 0, 12, + 0, 0, 0, 13, 14, 15, 16, 0, 0, 0, + 19, 20, 21, 0, 0, 0, 0, 25, 83, 0, + 0, 0, 84, 0, 28, 85, 29, 86, 0, 87, + 0, 30, 0, 0, 0, 0, 0, 89, 0, 31, + 0, 90, 0, 0, 0, 0, 94, 0, 96, 0, + 0, 98, 0, 0, 100, 0, 0, 0, 102, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 0, 0, 107, 0, 0, + 0, 111, 7, 112, 0, 0, 0, 0, 35, 36, + 0, 113, 76, 77, 78, 361, 0, 0, 0, 0, + 0, 41, 80, 10, 11, 117, 12, 0, 0, 0, + 13, 14, 15, 16, 0, 0, 0, 19, 20, 21, + 0, 0, 0, 0, 25, 83, 0, 0, 0, 84, + 0, 28, 85, 29, 86, 0, 87, 0, 30, 0, + 0, 0, 0, 0, 89, 0, 31, 0, 90, 0, + 0, 0, 0, 94, 0, 96, 0, 0, 98, 0, + 0, 100, 0, 0, 0, 102, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 0, 0, 107, 0, 0, 0, 111, 7, + 112, 0, 0, 0, 0, 35, 36, 0, 113, 76, + 77, 78, 0, 0, 0, 0, 0, 0, 41, 80, + 10, 11, 117, 400, 0, 0, 0, 13, 14, 15, + 16, 0, 0, 0, 19, 20, 21, 0, 0, 0, + 0, 25, 83, 0, 0, 0, 84, 0, 28, 85, + 29, 86, 0, 87, 0, 30, 0, 0, 0, 0, + 0, 89, 0, 31, 0, 90, 0, 0, 0, 0, + 94, 0, 96, 0, 0, 98, 0, 0, 100, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, + 0, 107, 0, 0, 0, -2, 6, 0, 0, 7, + 0, 0, 35, 36, 0, 113, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 8, 9, 117, + 10, 11, 0, 12, 0, 0, 0, 13, 14, 15, + 16, -10, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 25, 466, 26, 0, 7, 0, 27, 28, 0, + 29, 0, 0, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 0, 31, 9, 0, 10, 11, 0, 12, + 0, 0, 0, 13, 14, 15, 16, -83, 0, 18, + 19, 20, 21, 22, 23, 24, 0, 25, 0, 26, + 0, 0, 0, 27, 28, 0, 29, 0, 0, 0, + 0, 30, 0, 0, 0, 32, 0, 0, 0, 31, + 33, 34, 35, 36, 0, 0, 37, 38, 39, 0, + 40, 0, 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 477, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, + 0, 0, 37, 38, 39, 0, 10, 11, 0, 12, + 0, 41, 467, 13, 14, 15, 16, -95, 0, 18, + 19, 20, 21, 22, 23, 24, 0, 25, 0, 26, + 7, 0, 0, 27, 28, 0, 29, 0, 0, 0, + 0, 30, 0, 0, 0, 0, 558, 559, 0, 31, + 0, 10, 11, 560, 12, 561, 562, 563, 13, 14, + 15, 16, 0, 0, 0, 19, 20, 21, 0, 0, + 0, 564, 25, 565, 0, 566, 0, 567, 0, 28, + 0, 29, 0, 568, 569, 88, 30, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 33, 34, 35, 36, + 0, 0, 37, 38, 39, 0, 0, 0, 0, 0, + 0, 41, 478, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 106, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 35, 36, 0, 0, 37, 38, 39, + 0, 570, 0, 558, 559, 0, 41, 571, 10, 11, + 560, 12, 561, 562, 563, 13, 14, 15, 16, 0, + 0, 0, 19, 20, 21, 0, 0, 0, 564, 25, + 565, 7, 566, 0, 567, 0, 28, 0, 29, 0, + 568, 569, 88, 30, 0, 0, 0, 558, 559, 0, + 0, 31, 10, 11, 560, 12, 561, 562, 563, 13, + 14, 15, 16, 0, 0, 0, 19, 20, 21, 0, + 0, 0, 564, 25, 565, 0, 566, 0, 567, 0, + 28, 0, 29, 0, 568, 569, 0, 30, 106, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, + 35, 36, 0, 0, 37, 38, 39, 0, 570, 0, + 0, 0, 0, 41, 779, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 701, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 36, 0, 0, 37, 38, + 39, 0, 570, 74, 75, 0, 0, 41, 702, 79, + 0, 0, 0, 8, 9, 0, 10, 11, 0, 81, + 0, 0, 0, 13, 14, 15, 16, 0, 0, 18, + 19, 20, 0, 22, 23, 24, 0, 25, 0, 26, + 0, 0, 0, 27, 28, 0, 29, 0, 0, 0, + 88, 30, 0, 0, 8, 9, 0, 10, 11, 31, + 81, 0, 0, 0, 13, 14, 15, 16, 0, 0, + 18, 19, 20, 0, 22, 23, 24, 0, 25, 0, + 26, 0, 0, 0, 27, 28, 0, 29, 0, 0, + 0, 88, 30, 0, 0, 0, 106, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 33, 34, 0, 36, + 0, 0, 205, 38, 39, 0, 247, 248, 0, 102, + 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, + 0, 0, 111, 0, 112, 0, 0, 33, 34, 0, + 36, 0, 0, 205, 38, 39, 0, 247, 248, 0, + 8, 9, 41, 10, 11, 0, 81, 0, 0, 0, + 13, 14, 15, 16, 0, 0, 18, 19, 20, 0, + 22, 23, 24, 0, 25, 0, 26, 0, 0, 0, + 27, 28, 0, 29, 0, 0, 0, 88, 30, 0, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33, 34, 0, 36, 0, 0, 205, + 38, 39, 0, 247, 248, 0, 0, 0, 41 }; static const yytype_int16 yycheck[] = { - 1, 1, 30, 81, 8, 41, 1, 88, 88, 105, - 30, 162, 155, 144, 18, 173, 174, 76, 144, 162, - 178, 25, 148, 76, 61, 144, 105, 31, 105, 148, - 243, 189, 331, 80, 192, 82, 194, 1, 162, 197, - 87, 16, 1, 126, 45, 1, 1, 83, 84, 350, - 64, 352, 53, 58, 355, 1, 15, 1, 105, 33, - 24, 33, 1, 129, 92, 49, 1, 51, 437, 131, - 25, 129, 92, 28, 109, 110, 89, 112, 91, 25, - 35, 128, 28, 120, 68, 147, 41, 139, 140, 35, - 109, 53, 107, 94, 129, 41, 89, 102, 91, 107, - 469, 470, 471, 104, 105, 105, 107, 67, 123, 124, - 129, 91, 84, 127, 129, 123, 124, 89, 40, 91, - 129, 125, 122, 116, 124, 47, 127, 122, 50, 124, - 120, 121, 215, 107, 435, 57, 116, 111, 118, 111, - 115, 91, 16, 103, 129, 129, 515, 129, 107, 123, - 124, 123, 89, 113, 91, 115, 106, 204, 122, 33, - 124, 120, 121, 129, 123, 127, 122, 214, 124, 106, - 383, 130, 4, 251, 221, 130, 116, 129, 122, 275, - 124, 97, 313, 122, 130, 124, 223, 122, 97, 266, - 115, 131, 132, 406, 407, 89, 275, 91, 275, 91, - 125, 48, 61, 62, 63, 131, 65, 208, 209, 158, - 104, 206, 161, 126, 127, 89, 220, 91, 222, 343, - 220, 222, 107, 227, 116, 92, 118, 94, 275, 96, - 89, 114, 91, 107, 126, 120, 121, 111, 123, 144, - 99, 540, 116, 4, 118, 130, 120, 121, 117, 123, - 124, 131, 132, 300, 313, 33, 131, 103, 404, 405, - 313, 108, 109, 110, 111, 112, 266, 113, 129, 115, - 120, 121, 92, 574, 275, 275, 123, 124, 143, 144, - 431, 131, 129, 130, 6, 7, 417, 102, 431, 420, - 120, 121, 14, 123, 420, 17, 18, 19, 305, 306, - 307, 420, 24, 310, 82, 139, 84, 140, 48, 386, - 123, 89, 91, 91, 36, 114, 159, 160, 40, 347, - 163, 114, 44, 370, 116, 47, 116, 107, 123, 124, - 331, 410, 101, 111, 56, 57, 58, 338, 127, 120, - 120, 121, 379, 123, 124, 123, 129, 129, 348, 48, - 428, 95, 96, 97, 505, 433, 134, 416, 417, 131, - 146, 132, 505, 416, 131, 131, 413, 143, 108, 109, - 501, 111, 8, 114, 123, 501, 534, 92, 93, 94, - 102, 96, 132, 123, 124, 6, 7, 125, 33, 129, - 129, 136, 543, 14, 131, 131, 17, 18, 19, 131, - 543, 123, 92, 132, 94, 95, 96, 46, 130, 108, - 109, 131, 111, 275, 415, 36, 92, 93, 94, 40, - 96, 53, 426, 44, 123, 124, 47, 61, 62, 63, - 581, 65, 33, 511, 454, 56, 57, 457, 581, 1, - 413, 537, 124, 538, 89, 445, 91, 93, 58, 497, - 156, 532, 532, 531, 92, 553, 94, 95, 96, 104, - 266, 266, 107, 92, 93, 94, 111, 96, 554, 24, - 92, 116, 161, 118, 552, 120, 121, 164, 123, 124, - 337, 102, 486, 484, 488, 531, 490, 445, 89, 511, - 91, 575, 439, 517, 495, 349, 131, 575, 417, 535, - -1, -1, 123, 498, -1, -1, 107, -1, -1, 130, - 111, -1, -1, -1, -1, 116, -1, 118, -1, 120, - 121, -1, 123, 124, -1, 553, -1, -1, -1, -1, - -1, -1, 536, -1, 538, -1, 536, 538, -1, 540, - 541, -1, -1, -1, -1, -1, 9, 10, 11, 12, - 13, -1, 15, -1, -1, -1, -1, 20, 21, 22, - 23, -1, -1, 564, 27, 28, 29, 30, 31, 32, - 33, 34, 35, -1, 37, -1, 39, 40, 41, 42, - 43, -1, 45, -1, 47, 48, 49, 50, 51, 52, - 53, 54, 55, -1, 57, 58, 59, 60, -1, -1, - -1, -1, -1, 66, -1, 68, -1, 70, 71, -1, + 3, 4, 86, 3, 4, 4, 73, 3, 4, 35, + 47, 37, 86, 35, 4, 37, 162, 88, 86, 47, + 86, 86, 4, 65, 77, 189, 77, 191, 86, 4, + 35, 55, 37, 35, 86, 239, 183, 28, 29, 7, + 3, 4, 183, 4, 12, 277, 86, 3, 4, 86, + 264, 88, 55, 21, 41, 116, 190, 191, 13, 105, + 88, 107, 30, 355, 372, 182, 183, 113, 360, 68, + 86, 206, 3, 4, 119, 377, 617, 18, 67, 82, + 377, 59, 82, 82, 355, 372, 82, 109, 355, 0, + 17, 64, 82, 360, 4, 469, 7, 3, 4, 113, + 82, 147, 3, 4, 109, 381, 480, 82, 414, 336, + 156, 99, 109, 81, 160, 132, 130, 163, 11, 82, + 13, 82, 286, 1, 12, 13, 82, 105, 0, 146, + 18, 13, 216, 110, 508, 281, 18, 364, 284, 210, + 372, 449, 184, 7, 452, 182, 183, 130, 125, 126, + 1, 82, 286, 130, 109, 128, 302, 698, 36, 11, + 38, 13, 279, 189, 110, 191, 44, 189, 190, 13, + 48, 36, 82, 210, 13, 17, 82, 323, 130, 125, + 126, 82, 210, 205, 11, 36, 13, 38, 189, 190, + 158, 132, 133, 44, 130, 158, 264, 48, 42, 11, + 205, 13, 239, 206, 109, 130, 206, 206, 205, 13, + 206, 239, 264, 11, 378, 13, 206, 144, 84, 85, + 246, 87, 264, 13, 206, 135, 266, 498, 70, 18, + 538, 206, 74, 294, 142, 143, 225, 79, 241, 127, + 84, 543, 279, 206, 378, 206, 543, 549, 524, 246, + 206, 538, 42, 131, 91, 92, 93, 61, 62, 63, + 286, 65, 53, 398, 55, 326, 327, 94, 95, 130, + 546, 115, 18, 105, 580, 206, 125, 68, 424, 13, + 131, 125, 94, 95, 306, 127, 128, 87, 330, 121, + 122, 123, 82, 0, 84, 337, 138, 381, 102, 0, + 206, 306, 11, 145, 13, 206, 538, 128, 382, 306, + 110, 111, 112, 300, 388, 278, 381, 0, 355, 100, + 12, 13, 387, 381, 100, 115, 18, 115, 116, 332, + 414, 334, 332, 641, 334, 125, 332, 336, 334, 130, + 414, 95, 644, 635, 381, 132, 654, 137, 512, 414, + 95, 498, 378, 420, 132, 657, 414, 498, 384, 385, + 386, 632, 384, 527, 635, 364, 362, 335, 635, 332, + 444, 334, 127, 128, 441, 443, 332, 414, 443, 384, + 385, 498, 384, 130, 386, 7, 520, 693, 385, 386, + 119, 443, 382, 527, 142, 398, 610, 132, 398, 398, + 143, 306, 398, 403, 125, 126, 443, 410, 398, 641, + 410, 410, 457, 121, 122, 123, 398, 94, 95, 445, + 104, 697, 654, 398, 132, 130, 332, 443, 334, 94, + 95, 332, 400, 334, 726, 398, 133, 398, 324, 325, + 524, 515, 398, 445, 412, 132, 132, 515, 445, 515, + 144, 525, 12, 13, 444, 726, 524, 145, 18, 524, + 90, 498, 546, 515, 12, 13, 524, 398, 116, 125, + 18, 434, 524, 547, 780, 132, 12, 13, 515, 133, + 385, 386, 18, 132, 631, 632, 690, 524, 546, 511, + 631, 14, 398, 5, 520, 90, 580, 398, 93, 515, + 94, 96, 548, 98, 130, 115, 580, 8, 524, 546, + 511, 512, 513, 8, 631, 580, 8, 8, 519, 520, + 132, 588, 580, 90, 113, 114, 93, 116, 552, 96, + 130, 98, 139, 122, 123, 525, 133, 683, 684, 685, + 445, 130, 610, 580, 50, 12, 13, 132, 616, 552, + 616, 18, 511, 620, 513, 95, 556, 547, 610, 630, + 519, 587, 591, 82, 616, 688, 730, 526, 621, 628, + 621, 91, 92, 93, 334, 578, 187, 97, 98, 616, + 648, 277, 648, 648, 591, 587, 628, 751, 591, 301, + 587, 591, 549, 630, 631, 632, 648, 565, 635, 567, + 616, 569, 630, 158, 12, 13, 121, 122, 123, 693, + 18, 648, 746, 697, 705, 512, 513, 751, 270, 693, + 434, 767, 588, 520, 698, 623, 620, 617, 693, 697, + 527, 697, 648, 700, 625, 693, 490, 491, 492, 697, + 768, 495, 668, 669, 670, 697, 668, 673, 15, 16, + 676, 593, 429, 690, 279, 340, 693, -1, 632, 649, + 697, -1, 690, 668, 669, -1, 668, -1, 670, -1, + -1, 673, 669, 670, 676, -1, 673, -1, -1, 676, + -1, 697, 587, -1, -1, 384, 385, 386, 691, 726, + -1, 91, 92, 93, -1, -1, 780, 97, 98, -1, + 67, 768, 121, 122, 123, -1, 780, 729, 698, 735, + -1, -1, 734, -1, -1, 780, -1, 91, 92, 93, + 746, -1, 780, 97, 98, -1, -1, 723, 729, 730, + 731, -1, -1, 734, 735, -1, 61, 62, 63, 106, + 65, -1, 110, 780, 745, 746, 445, 91, 92, 93, + 117, 118, -1, 121, 122, 123, -1, 125, 761, 4, + -1, 761, 761, 131, 669, 670, -1, -1, 673, -1, + 729, 676, 731, -1, -1, 734, 91, 92, 93, -1, + 25, 26, 52, 28, -1, -1, 745, 32, 33, 34, + 35, 750, -1, -1, 39, 40, 41, 91, 92, 93, + -1, 46, -1, 97, 98, 121, 122, 123, 53, 125, + 55, -1, 511, 512, 513, 60, 14, 15, 16, -1, + 519, 520, -1, 68, 91, 92, 93, 526, 527, -1, + 97, 98, -1, 730, 731, 91, 92, 93, 735, 91, + 92, 93, 112, 113, 114, 115, 116, -1, -1, 746, + -1, -1, 122, 123, 751, 125, 126, 91, 92, 93, + 130, 131, -1, 97, 98, 91, 92, 93, 91, 92, + 93, -1, 117, 118, 97, 98, -1, 0, 1, -1, + -1, 4, 91, 92, 93, 130, -1, 10, 587, 12, + 13, 14, 15, 16, -1, 18, 91, 92, 93, 22, + 23, 24, 25, 26, -1, 28, 91, 92, 93, 32, + 33, 34, 35, -1, 37, 38, 39, 40, 41, 42, + 43, 44, -1, 46, 47, 48, -1, -1, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, 91, 92, + 93, -1, -1, 66, -1, 68, -1, 70, 71, -1, 73, 74, 75, 76, 77, 78, -1, 80, 81, -1, - 83, -1, 85, -1, 87, 88, 89, 90, 91, -1, - -1, -1, -1, -1, -1, -1, -1, 100, -1, 102, - 103, -1, 105, -1, 107, 108, -1, -1, 111, 112, - 113, 114, 115, 116, -1, 118, 119, 120, 121, -1, - 123, 124, 125, 126, -1, -1, 129, -1, -1, -1, - 133, 134, 135, 136, 137, 138, 1, -1, 141, 142, - -1, -1, 145, -1, -1, -1, 11, 12, 13, -1, - 15, -1, -1, -1, -1, 20, 21, 22, 23, -1, - -1, -1, 27, -1, 29, 30, 31, 32, -1, -1, - -1, -1, 37, -1, 39, 40, -1, 42, 43, -1, - 45, -1, 47, -1, 49, 50, 51, 52, 53, 54, - 55, -1, 57, -1, 59, 60, -1, -1, -1, -1, - -1, 66, 70, 68, 69, 70, 74, -1, -1, -1, - 75, 79, 77, -1, -1, 80, -1, -1, 83, -1, + 83, -1, 85, -1, 87, 88, 89, 52, -1, -1, + 669, 670, -1, -1, 673, -1, -1, 676, -1, -1, + 103, -1, 105, 106, 107, 108, 109, 110, -1, 112, + -1, -1, 115, 116, 117, 118, -1, 120, 121, 122, + 123, -1, 125, 126, 127, -1, -1, 130, 91, 92, + 93, 134, 135, 136, 137, 138, 139, 140, 141, 91, + 92, 93, 91, 92, 93, 97, 98, 112, 113, -1, + 115, 730, 731, 91, 92, 93, 735, 122, 123, -1, + 125, 126, 91, 92, 93, 4, -1, 746, 97, 98, + -1, 10, 751, 12, 13, 14, 15, 16, -1, 18, + -1, -1, -1, 22, 23, 24, 25, 26, -1, 28, + -1, -1, -1, 32, 33, 34, 35, -1, -1, 38, + 39, 40, 41, 42, 43, 44, -1, 46, 47, 48, + -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, -1, -1, -1, 66, -1, 68, + -1, 70, 71, -1, 73, 74, 75, 76, 77, 78, + -1, 80, 81, -1, 83, -1, 85, -1, 87, 88, + 89, 91, 92, 93, 91, 92, 93, 97, 98, -1, + 97, 98, -1, -1, 103, -1, 105, 106, 107, 108, + 109, 110, -1, 112, -1, -1, 115, 116, 117, 118, + -1, 120, 121, 122, 123, -1, 125, 126, 127, 0, + 1, 130, -1, 4, -1, 134, 135, 136, 137, 138, + 139, 140, 141, 14, 15, 16, -1, -1, -1, -1, + -1, -1, -1, 24, 25, 26, -1, 28, -1, -1, + -1, 32, 33, 34, 35, 91, 92, 93, 39, 40, + 41, 97, 98, -1, -1, 46, 47, -1, -1, -1, + 51, -1, 53, 54, 55, 56, -1, 58, -1, 60, + -1, -1, -1, 25, 26, 66, 28, 68, -1, 70, + 32, 33, 34, 35, 75, -1, 77, 39, 40, 80, + -1, -1, 83, -1, 46, -1, 87, 88, 91, 92, + 93, 53, -1, 55, 97, 98, -1, -1, 60, -1, + -1, -1, 103, -1, -1, 106, 68, -1, -1, 110, + -1, 112, 1, -1, -1, 4, 117, 118, -1, 120, + 121, 122, 123, -1, -1, 14, 15, 16, -1, 130, + -1, -1, -1, 134, -1, 24, 25, 26, -1, 28, + -1, -1, 52, 32, 33, 34, 35, 91, 92, 93, + 39, 40, 41, 97, 98, -1, 118, 46, 47, -1, + -1, -1, 51, -1, 53, 54, 55, 56, 130, 58, + -1, 60, -1, -1, -1, -1, -1, 66, -1, 68, + 69, 70, -1, 91, 92, 93, 75, -1, 77, 97, + 98, 80, -1, -1, 83, -1, -1, -1, 87, 88, + -1, -1, 112, 113, 114, 115, 116, -1, -1, -1, + -1, -1, 122, 123, 103, 125, 126, 106, -1, -1, + 130, 110, -1, 112, 1, -1, -1, 4, 117, 118, + -1, 120, 121, 122, 123, -1, -1, 14, 15, 16, + -1, 130, -1, -1, 52, 134, -1, 24, 25, 26, + -1, 28, -1, -1, -1, 32, 33, 34, 35, -1, + -1, -1, 39, 40, 41, -1, -1, -1, -1, 46, + 47, -1, -1, -1, 51, -1, 53, 54, 55, 56, + -1, 58, -1, 60, -1, -1, -1, -1, -1, 66, + -1, 68, -1, 70, -1, -1, -1, -1, 75, -1, + 77, -1, -1, 80, 112, 113, 83, 115, -1, -1, + 87, 88, -1, -1, 122, 123, -1, 125, 126, -1, + -1, -1, 130, -1, -1, -1, 103, -1, -1, 106, + -1, -1, -1, 110, -1, 112, 1, -1, -1, 4, + 117, 118, -1, 120, 121, 122, 123, -1, -1, 14, + 15, 16, -1, 130, 131, -1, -1, 134, -1, 24, + 25, 26, -1, 28, -1, 10, -1, 32, 33, 34, + 35, -1, -1, -1, 39, 40, 41, -1, -1, -1, + -1, 46, 47, -1, -1, -1, 51, -1, 53, 54, + 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, + -1, 66, -1, 68, -1, 70, -1, 10, -1, -1, + 75, -1, 77, -1, -1, 80, -1, -1, 83, -1, + -1, -1, -1, 88, -1, -1, 71, -1, 73, 74, + -1, 76, -1, 78, -1, -1, 81, -1, 103, 42, + 85, 106, -1, -1, 89, 110, -1, -1, -1, -1, + -1, -1, 117, 118, -1, 120, 121, 122, 123, -1, + 125, -1, 107, 108, 67, 130, 131, -1, 71, 134, + 73, 74, -1, 76, -1, 78, -1, -1, 10, 11, + 12, 13, 127, -1, -1, -1, 18, -1, -1, -1, + 135, 136, 137, 138, 139, 140, 141, -1, -1, -1, + -1, -1, -1, -1, 107, 108, -1, 110, -1, -1, + -1, -1, 115, -1, 117, -1, -1, -1, -1, -1, + -1, -1, 125, 126, 127, 128, -1, -1, -1, -1, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 71, + -1, 73, 74, -1, 76, -1, 78, -1, -1, 81, + -1, -1, 10, 85, 12, 13, -1, 89, -1, -1, + 18, -1, 94, 95, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 127, -1, -1, -1, 18, + -1, -1, -1, 135, 136, 137, 138, 139, 140, 141, + -1, -1, -1, 71, -1, 73, 74, -1, 76, -1, + 78, -1, -1, 81, -1, -1, -1, 85, -1, -1, + -1, 89, 10, 11, 12, 13, 94, 95, -1, -1, + 18, -1, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 71, -1, 73, 74, -1, 76, -1, 78, + -1, -1, 81, -1, -1, -1, 85, -1, -1, 127, + 89, -1, -1, -1, -1, -1, -1, 135, 136, 137, + 138, 139, 140, 141, -1, -1, -1, -1, 107, 108, + 109, -1, -1, 71, -1, 73, 74, -1, 76, -1, + 78, -1, -1, 81, -1, -1, -1, 85, 127, -1, + -1, 89, -1, -1, -1, -1, 135, 136, 137, 138, + 139, 140, 141, -1, 10, 11, 12, 13, -1, 107, + 108, 109, 18, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 10, 11, 12, 13, 127, + -1, -1, -1, 18, -1, -1, -1, 135, 136, 137, + 138, 139, 140, 141, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, -1, 73, 74, -1, + 76, -1, 78, -1, -1, 81, -1, -1, -1, 85, + -1, -1, -1, 89, -1, -1, 71, -1, 73, 74, + -1, 76, -1, 78, -1, -1, 81, -1, -1, -1, + 85, 107, 108, 109, 89, 10, 11, 12, 13, -1, + -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, + -1, 127, 107, 108, 109, -1, -1, -1, -1, 135, + 136, 137, 138, 139, 140, 141, -1, -1, -1, -1, + -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, + 135, 136, 137, 138, 139, 140, 141, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, 73, 74, + -1, 76, -1, 78, -1, -1, 81, -1, -1, -1, + 85, -1, -1, -1, 89, 10, 11, 12, 13, -1, + -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, -1, 10, 11, 12, 13, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, + 135, 136, 137, 138, 139, 140, 141, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, 73, 74, + -1, 76, -1, 78, -1, -1, 81, -1, -1, -1, + 85, -1, -1, -1, 89, -1, -1, 71, -1, 73, + 74, -1, 76, -1, 78, -1, -1, 81, -1, -1, + -1, 85, 107, 108, 109, 89, 10, 11, 12, 13, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, 127, 107, 108, 109, -1, -1, -1, -1, + 135, 136, 137, 138, 139, 140, 141, -1, -1, -1, + -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, + -1, 135, 136, 137, 138, 139, 140, 141, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, 73, + 74, -1, 76, -1, 78, -1, -1, 81, -1, -1, + -1, 85, -1, -1, -1, 89, 10, 11, 12, 13, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, -1, 10, 11, 12, + 13, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, + -1, 135, 136, 137, 138, 139, 140, 141, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, 73, + 74, -1, 76, -1, 78, -1, -1, 81, -1, -1, + -1, 85, -1, -1, -1, 89, -1, -1, 71, -1, + 73, 74, -1, 76, -1, 78, -1, -1, 81, -1, + -1, -1, 85, 107, 108, 109, 89, 10, 11, 12, + 13, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, -1, -1, 127, 107, 108, 109, -1, -1, -1, + -1, 135, 136, 137, 138, 139, 140, 141, -1, -1, + -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, + -1, -1, 135, 136, 137, 138, 139, 140, 141, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, + 73, 74, -1, 76, -1, 78, -1, -1, 81, -1, + -1, -1, 85, -1, -1, -1, 89, 10, 11, 12, + 13, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, -1, 10, -1, + 12, 13, -1, -1, -1, -1, 18, -1, -1, -1, + -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, + -1, -1, 135, 136, 137, 138, 139, 140, 141, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, + 73, 74, -1, 76, -1, 78, -1, -1, 81, -1, + -1, -1, 85, -1, -1, -1, 89, -1, -1, 71, + -1, 73, 74, -1, 76, -1, 78, -1, -1, 81, + -1, -1, -1, 85, 107, 108, 109, 89, 10, -1, + 12, 13, -1, -1, -1, -1, 18, -1, -1, -1, + -1, -1, -1, -1, 127, 107, 108, 109, -1, -1, + -1, -1, 135, 136, 137, 138, 139, 140, 141, -1, + -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, + -1, -1, -1, 135, 136, 137, 138, 139, 140, 141, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, + -1, 73, 74, -1, 76, -1, 78, -1, -1, 81, + -1, -1, 10, 85, 12, 13, -1, 89, -1, -1, + 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, -1, 12, 13, 127, -1, -1, -1, 18, + -1, -1, -1, 135, 136, 137, 138, 139, 140, 141, + -1, -1, -1, 71, -1, 73, 74, -1, 76, -1, + 78, -1, -1, 81, -1, -1, -1, 85, -1, -1, + 10, 89, 12, 13, -1, -1, -1, -1, 18, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 71, -1, 73, 74, -1, 76, -1, 78, + -1, -1, 81, -1, -1, -1, 85, -1, -1, 127, + 89, -1, -1, -1, -1, -1, -1, 135, 136, 137, + 138, 139, 140, 141, -1, -1, -1, -1, 107, 108, + 109, 71, -1, 73, 74, -1, 76, -1, 78, -1, + -1, 81, -1, -1, 10, 85, 12, 13, 127, 89, + -1, -1, 18, -1, -1, -1, 135, 136, 137, 138, + 139, 140, 141, -1, -1, -1, -1, 107, 108, 109, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 10, -1, 12, 13, 127, -1, -1, + -1, 18, -1, -1, -1, 135, 136, 137, 138, 139, + 140, 141, -1, -1, -1, 71, -1, 73, 74, -1, + 76, -1, 78, -1, -1, 81, -1, -1, -1, 85, + -1, -1, -1, 89, 10, 11, -1, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 71, -1, 73, 74, -1, 76, + -1, 78, -1, -1, 81, -1, -1, -1, 85, -1, + -1, 127, 89, -1, -1, -1, -1, -1, -1, 135, + 136, 137, 138, 139, 140, 141, -1, -1, -1, -1, + 107, 108, 109, -1, -1, 71, -1, 73, 74, -1, + 76, -1, 78, -1, -1, 81, -1, -1, -1, 85, + 127, -1, -1, 89, -1, -1, -1, -1, 135, 136, + 137, 138, 139, 140, 141, -1, -1, -1, -1, -1, + -1, 107, 108, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 127, -1, -1, -1, -1, -1, -1, -1, 135, + 136, 137, 138, 139, 140, 141, 4, -1, -1, -1, + -1, -1, -1, 11, 12, 13, 14, 15, 16, -1, + 18, -1, -1, -1, 22, 23, 24, 25, 26, -1, + 28, -1, -1, -1, 32, 33, 34, 35, -1, -1, + 38, 39, 40, 41, 42, 43, 44, -1, 46, 47, + 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, + 58, 59, 60, -1, -1, -1, -1, -1, 66, -1, + 68, -1, 70, -1, -1, -1, -1, 75, -1, 77, + -1, -1, 80, -1, -1, 83, -1, -1, -1, 87, + 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 103, -1, 105, 106, -1, + -1, 109, 110, -1, 112, -1, -1, 115, 116, 117, + 118, -1, 120, 121, 122, 123, -1, 125, 126, 4, + -1, -1, 130, -1, -1, -1, 134, 12, 13, 14, + 15, 16, -1, 18, -1, -1, -1, 22, 23, 24, + 25, 26, -1, 28, -1, -1, -1, 32, 33, 34, + 35, -1, -1, 38, 39, 40, 41, 42, 43, 44, + -1, 46, 47, 48, -1, -1, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, -1, -1, + -1, 66, -1, 68, -1, 70, -1, -1, -1, -1, + 75, -1, 77, -1, -1, 80, -1, -1, 83, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 100, -1, -1, 103, -1, - -1, -1, 107, 108, -1, -1, -1, -1, 113, 114, - 115, 1, -1, -1, 119, 120, 121, -1, 126, 127, - 125, 11, 12, 13, 129, 15, -1, 135, 133, -1, - 20, 21, 22, 23, -1, -1, 144, 27, 146, 29, - 30, 31, 32, -1, -1, 48, -1, 37, -1, 39, - 40, -1, 42, 43, -1, 45, -1, 47, -1, 49, - 50, 51, 52, 53, 54, 55, -1, 57, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, 103, -1, + 105, 106, -1, -1, 109, 110, -1, 112, -1, -1, + 115, 116, 117, 118, -1, 120, 121, 122, 123, -1, + 125, 126, 4, -1, -1, 130, -1, -1, -1, 134, + -1, -1, 14, 15, 16, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, -1, 28, -1, -1, -1, + 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, + 42, 43, 44, -1, 46, 47, 48, -1, -1, 51, + 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, + -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, + -1, -1, -1, 75, -1, 77, -1, -1, 80, -1, + -1, 83, -1, -1, -1, 87, 88, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 103, -1, 105, 106, -1, -1, -1, 110, -1, + 112, -1, -1, 115, 116, 117, 118, -1, 120, 121, + 122, 123, -1, 125, 126, 4, -1, -1, 130, -1, + -1, -1, 134, -1, -1, 14, 15, 16, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, -1, 28, + -1, -1, -1, 32, 33, 34, 35, -1, -1, 38, + 39, 40, 41, 42, 43, 44, -1, 46, 47, 48, + -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, -1, -1, -1, 66, -1, 68, + -1, 70, -1, -1, -1, -1, 75, -1, 77, -1, + -1, 80, -1, -1, 83, -1, -1, -1, 87, 88, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 103, -1, 105, 106, -1, -1, + -1, 110, -1, 112, -1, -1, 115, 116, 117, 118, + -1, 120, 121, 122, 123, -1, 125, 126, 4, -1, + -1, 130, -1, -1, -1, 134, -1, -1, 14, 15, + 16, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, -1, 28, -1, -1, -1, 32, 33, 34, 35, + -1, -1, 38, 39, 40, 41, 42, 43, 44, -1, + 46, 47, 48, -1, -1, 51, 52, 53, 54, 55, + 56, -1, 58, 59, 60, -1, -1, -1, -1, -1, + 66, -1, 68, -1, 70, -1, -1, -1, -1, 75, + -1, 77, -1, -1, 80, -1, -1, 83, -1, -1, + -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 103, -1, 105, + 106, -1, -1, -1, -1, -1, -1, -1, -1, 115, + 116, 117, 118, -1, 120, 121, 122, 123, -1, 125, + 126, 4, -1, -1, 130, -1, -1, -1, 134, -1, + -1, 14, 15, 16, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, -1, 28, -1, -1, -1, 32, + 33, 34, 35, -1, -1, 38, 39, 40, 41, 42, + 43, 44, -1, 46, 47, 48, -1, -1, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, + -1, -1, 75, -1, 77, -1, -1, 80, -1, -1, + 83, -1, -1, -1, -1, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, -1, 105, 106, -1, -1, -1, -1, -1, -1, + -1, -1, 115, 116, 117, 118, -1, 120, 121, 122, + 123, -1, 125, 126, 4, -1, -1, 130, -1, -1, + -1, 134, -1, -1, 14, 15, 16, -1, -1, -1, + -1, -1, -1, -1, 24, 25, 26, -1, 28, -1, + -1, -1, 32, 33, 34, 35, -1, -1, -1, 39, + 40, 41, -1, -1, -1, -1, 46, 47, -1, -1, + -1, 51, -1, 53, 54, 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, -1, -1, 75, -1, 77, -1, -1, 80, -1, -1, 83, -1, -1, -1, 87, 88, -1, - -1, -1, -1, -1, -1, 108, 109, 110, 111, 112, - 100, -1, -1, 103, -1, -1, -1, 107, 108, -1, - 123, 124, -1, 113, 114, 115, 129, -1, -1, 119, - 120, 121, -1, -1, 1, 125, -1, -1, -1, 129, - 130, -1, -1, 133, 11, 12, 13, -1, 15, -1, - -1, -1, -1, 20, 21, 22, 23, -1, -1, -1, - 27, -1, 29, 30, 31, 32, -1, -1, -1, -1, - 37, -1, 39, 40, -1, 42, 43, -1, 45, -1, - 47, -1, 49, 50, 51, 52, 53, 54, 55, -1, - 57, -1, 59, 60, -1, -1, -1, -1, -1, 66, - -1, 68, -1, 70, -1, -1, -1, -1, 75, -1, - 77, -1, -1, 80, -1, -1, 83, -1, -1, -1, - 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 100, -1, -1, 103, -1, -1, -1, - 107, 108, -1, -1, -1, -1, 113, 114, 115, -1, - -1, -1, 119, 120, 121, -1, -1, 1, 125, -1, - -1, -1, 129, 130, -1, -1, 133, 11, 12, 13, - -1, 15, -1, -1, -1, -1, 20, 21, 22, 23, - -1, -1, -1, 27, -1, 29, 30, 31, 32, -1, - -1, -1, -1, 37, -1, 39, 40, -1, 42, 43, - -1, 45, -1, 47, -1, 49, 50, 51, 52, 53, - 54, 55, -1, 57, -1, 59, 60, -1, -1, -1, - -1, -1, 66, -1, 68, -1, 70, -1, -1, -1, - -1, 75, -1, 77, -1, -1, 80, -1, -1, 83, - -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 100, -1, -1, 103, - -1, -1, -1, 107, 108, -1, -1, -1, -1, 113, - 114, 115, -1, -1, -1, 119, 120, 121, -1, -1, - 1, 125, -1, -1, -1, 129, 130, -1, -1, 133, - 11, 12, 13, -1, 15, -1, -1, -1, -1, 20, - 21, 22, 23, -1, -1, -1, 27, -1, 29, 30, - 31, 32, -1, -1, -1, -1, 37, -1, 39, 40, - -1, 42, 43, -1, 45, -1, 47, -1, 49, 50, - 51, 52, 53, 54, 55, -1, 57, -1, 59, 60, - -1, -1, -1, -1, -1, 66, -1, 68, -1, 70, - -1, -1, -1, -1, 75, -1, 77, -1, -1, 80, - -1, -1, 83, -1, -1, -1, 87, 88, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, - -1, -1, 103, -1, -1, -1, 107, 108, -1, -1, - -1, -1, 113, 114, 115, -1, -1, -1, 119, 120, - 121, 0, 1, -1, 125, -1, -1, -1, 129, 130, - 9, 10, 133, 12, 13, -1, 15, -1, -1, -1, - -1, 20, 21, 22, 23, -1, 25, 26, -1, 28, - 29, 30, 31, -1, 33, 34, 35, -1, 37, -1, - -1, -1, 41, -1, 43, -1, 45, -1, -1, 48, - 49, 1, 51, -1, -1, 54, 55, -1, -1, -1, - 10, 60, 12, 13, -1, 15, -1, -1, -1, 68, - 20, 21, 22, 23, -1, 25, -1, -1, 28, 29, - 30, 31, -1, 33, 34, 35, -1, 37, -1, -1, - -1, 41, -1, 43, -1, 45, -1, -1, 48, 49, - -1, 51, -1, -1, 54, 55, -1, -1, 107, -1, - 60, -1, 111, 112, 113, 114, -1, -1, 68, -1, - -1, 120, 121, -1, 123, -1, -1, -1, -1, -1, - 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, 111, 112, 113, 114, 12, 13, -1, 15, -1, - -1, -1, -1, 20, 21, 22, 23, -1, 25, 129, - 130, 28, 29, 30, 31, -1, 33, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, -1, 45, -1, - -1, 48, 49, -1, 51, -1, -1, 54, 55, -1, - -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, - -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 103, -1, -1, 106, -1, -1, -1, + 110, -1, 112, -1, -1, 4, -1, 117, 118, -1, + 120, 121, 122, 123, -1, 14, 15, 16, -1, -1, + 130, -1, -1, -1, 134, 24, 25, 26, -1, 28, + -1, -1, -1, 32, 33, 34, 35, -1, -1, -1, + 39, 40, 41, -1, -1, -1, -1, 46, 47, -1, + -1, -1, 51, -1, 53, 54, 55, 56, -1, 58, + -1, 60, -1, -1, -1, -1, -1, 66, -1, 68, + -1, 70, -1, -1, -1, -1, 75, -1, 77, -1, + -1, 80, -1, -1, 83, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, - 12, 13, -1, 15, 111, 112, 113, 114, 20, 21, - 22, 23, -1, -1, -1, 27, -1, 29, 30, 31, - 32, -1, 129, 130, -1, 37, -1, 39, 40, -1, - 42, 43, -1, 45, -1, 47, -1, 49, 50, 51, - 52, 53, 54, 55, -1, 57, -1, 59, 60, -1, + -1, -1, -1, -1, 103, -1, -1, 106, -1, -1, + -1, 110, 4, 112, -1, -1, -1, -1, 117, 118, + -1, 120, 14, 15, 16, 124, -1, -1, -1, -1, + -1, 130, 24, 25, 26, 134, 28, -1, -1, -1, + 32, 33, 34, 35, -1, -1, -1, 39, 40, 41, + -1, -1, -1, -1, 46, 47, -1, -1, -1, 51, + -1, 53, 54, 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, -1, -1, 75, -1, 77, -1, -1, 80, -1, -1, 83, -1, -1, -1, 87, 88, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, - -1, 103, -1, -1, -1, 107, 108, -1, -1, -1, - -1, 113, 114, 115, -1, -1, -1, 119, -1, -1, - 122, -1, -1, 125, 11, 12, 13, 129, 15, -1, - -1, 133, -1, 20, 21, 22, 23, -1, -1, -1, - 27, -1, 29, 30, 31, 32, -1, -1, -1, -1, - 37, -1, 39, 40, -1, 42, 43, -1, 45, -1, - 47, -1, 49, 50, 51, 52, 53, 54, 55, -1, - 57, -1, 59, 60, -1, -1, -1, -1, -1, 66, - -1, 68, -1, 70, -1, -1, -1, -1, 75, -1, - 77, -1, -1, 80, -1, -1, 83, -1, -1, -1, - 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 100, -1, -1, 103, -1, -1, -1, - 107, 108, -1, -1, -1, -1, 113, 114, 115, -1, - -1, -1, 119, -1, -1, -1, -1, -1, 125, -1, - 12, 13, 129, 15, -1, -1, 133, -1, 20, 21, - 22, 23, -1, -1, -1, -1, -1, 29, 30, 31, - 33, -1, -1, -1, -1, 37, -1, -1, -1, -1, - -1, 43, -1, 45, -1, -1, -1, 49, -1, 51, - -1, -1, 54, 55, -1, -1, -1, -1, 60, -1, - -1, -1, -1, -1, 67, -1, 68, -1, 71, -1, - 73, 74, -1, 76, -1, 78, -1, -1, -1, -1, - -1, -1, 71, -1, 73, 74, 89, 76, -1, 78, - -1, -1, 81, -1, -1, -1, 85, -1, -1, -1, - -1, 90, 105, -1, -1, -1, -1, -1, 111, -1, - 113, 113, 114, 115, -1, -1, 105, -1, -1, -1, - 123, 124, -1, 126, 127, -1, -1, 129, -1, 132, - 133, 134, 135, 136, 137, 138, -1, 126, 141, 142, - -1, -1, 145, -1, -1, 134, 135, 136, 137, 138, - -1, -1, 141, 142, -1, -1, 145 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 103, -1, -1, 106, -1, -1, -1, 110, 4, + 112, -1, -1, -1, -1, 117, 118, -1, 120, 14, + 15, 16, -1, -1, -1, -1, -1, -1, 130, 24, + 25, 26, 134, 28, -1, -1, -1, 32, 33, 34, + 35, -1, -1, -1, 39, 40, 41, -1, -1, -1, + -1, 46, 47, -1, -1, -1, 51, -1, 53, 54, + 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, + -1, 66, -1, 68, -1, 70, -1, -1, -1, -1, + 75, -1, 77, -1, -1, 80, -1, -1, 83, -1, + -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 103, -1, + -1, 106, -1, -1, -1, 0, 1, -1, -1, 4, + -1, -1, 117, 118, -1, 120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 130, -1, 22, 23, 134, + 25, 26, -1, 28, -1, -1, -1, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + -1, 46, 1, 48, -1, 4, -1, 52, 53, -1, + 55, -1, -1, -1, -1, 60, -1, -1, -1, -1, + -1, -1, -1, 68, 23, -1, 25, 26, -1, 28, + -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, + 39, 40, 41, 42, 43, 44, -1, 46, -1, 48, + -1, -1, -1, 52, 53, -1, 55, -1, -1, -1, + -1, 60, -1, -1, -1, 110, -1, -1, -1, 68, + 115, 116, 117, 118, -1, -1, 121, 122, 123, -1, + 125, -1, -1, -1, -1, 130, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1, -1, -1, 4, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 115, 116, 117, 118, + -1, -1, 121, 122, 123, -1, 25, 26, -1, 28, + -1, 130, 131, 32, 33, 34, 35, 36, -1, 38, + 39, 40, 41, 42, 43, 44, -1, 46, -1, 48, + 4, -1, -1, 52, 53, -1, 55, -1, -1, -1, + -1, 60, -1, -1, -1, -1, 20, 21, -1, 68, + -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, -1, -1, -1, 39, 40, 41, -1, -1, + -1, 45, 46, 47, -1, 49, -1, 51, -1, 53, + -1, 55, -1, 57, 58, 59, 60, -1, -1, -1, + -1, -1, -1, -1, 68, -1, 115, 116, 117, 118, + -1, -1, 121, 122, 123, -1, -1, -1, -1, -1, + -1, 130, 131, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 105, -1, -1, -1, -1, -1, 4, -1, -1, + -1, -1, -1, 117, 118, -1, -1, 121, 122, 123, + -1, 125, -1, 20, 21, -1, 130, 131, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, + -1, -1, 39, 40, 41, -1, -1, -1, 45, 46, + 47, 4, 49, -1, 51, -1, 53, -1, 55, -1, + 57, 58, 59, 60, -1, -1, -1, 20, 21, -1, + -1, 68, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, -1, -1, -1, 39, 40, 41, -1, + -1, -1, 45, 46, 47, -1, 49, -1, 51, -1, + 53, -1, 55, -1, 57, 58, -1, 60, 105, -1, + -1, -1, -1, -1, -1, 68, -1, -1, -1, -1, + 117, 118, -1, -1, 121, 122, 123, -1, 125, -1, + -1, -1, -1, 130, 131, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 117, 118, -1, -1, 121, 122, + 123, -1, 125, 12, 13, -1, -1, 130, 131, 18, + -1, -1, -1, 22, 23, -1, 25, 26, -1, 28, + -1, -1, -1, 32, 33, 34, 35, -1, -1, 38, + 39, 40, -1, 42, 43, 44, -1, 46, -1, 48, + -1, -1, -1, 52, 53, -1, 55, -1, -1, -1, + 59, 60, -1, -1, 22, 23, -1, 25, 26, 68, + 28, -1, -1, -1, 32, 33, 34, 35, -1, -1, + 38, 39, 40, -1, 42, 43, 44, -1, 46, -1, + 48, -1, -1, -1, 52, 53, -1, 55, -1, -1, + -1, 59, 60, -1, -1, -1, 105, -1, -1, -1, + 68, -1, -1, -1, -1, -1, 115, 116, -1, 118, + -1, -1, 121, 122, 123, -1, 125, 126, -1, 87, + -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, + -1, -1, 110, -1, 112, -1, -1, 115, 116, -1, + 118, -1, -1, 121, 122, 123, -1, 125, 126, -1, + 22, 23, 130, 25, 26, -1, 28, -1, -1, -1, + 32, 33, 34, 35, -1, -1, 38, 39, 40, -1, + 42, 43, 44, -1, 46, -1, 48, -1, -1, -1, + 52, 53, -1, 55, -1, -1, -1, 59, 60, -1, + -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 115, 116, -1, 118, -1, -1, 121, + 122, 123, -1, 125, 126, -1, -1, -1, 130 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 149, 0, 1, 9, 10, 12, 13, 15, 20, - 21, 22, 23, 25, 26, 28, 29, 30, 31, 33, - 34, 35, 37, 41, 43, 45, 48, 49, 51, 54, - 55, 60, 68, 107, 111, 112, 113, 114, 120, 121, - 123, 129, 150, 151, 153, 154, 155, 159, 161, 163, - 166, 167, 168, 169, 174, 175, 176, 182, 183, 189, - 191, 192, 193, 194, 200, 276, 278, 129, 129, 107, - 123, 124, 212, 129, 212, 279, 277, 115, 182, 233, - 240, 212, 129, 129, 129, 91, 106, 245, 125, 233, - 234, 235, 236, 212, 171, 92, 93, 94, 96, 185, - 186, 188, 4, 195, 171, 131, 151, 203, 204, 129, - 1, 15, 130, 155, 157, 195, 183, 58, 102, 178, - 180, 97, 160, 97, 162, 131, 190, 152, 201, 48, - 108, 109, 110, 111, 112, 123, 124, 129, 280, 281, - 282, 283, 285, 288, 289, 290, 109, 281, 289, 139, - 140, 231, 232, 11, 27, 32, 39, 40, 42, 47, - 50, 52, 53, 57, 59, 66, 70, 75, 77, 80, - 83, 87, 88, 100, 103, 107, 108, 114, 119, 133, - 170, 172, 177, 182, 202, 209, 210, 214, 215, 216, - 222, 223, 234, 235, 254, 256, 257, 258, 259, 274, - 89, 91, 116, 270, 271, 122, 164, 172, 171, 171, - 144, 172, 231, 232, 236, 190, 1, 69, 151, 172, - 188, 188, 188, 196, 197, 4, 130, 15, 71, 73, - 74, 76, 78, 81, 85, 89, 90, 91, 105, 116, - 118, 123, 124, 126, 134, 135, 136, 137, 138, 141, - 142, 145, 151, 156, 157, 159, 161, 163, 166, 172, - 178, 211, 225, 226, 227, 228, 239, 247, 266, 267, - 268, 269, 276, 278, 151, 131, 117, 129, 102, 179, - 183, 1, 130, 153, 161, 163, 165, 166, 182, 276, - 278, 1, 130, 153, 163, 165, 182, 276, 278, 212, - 180, 130, 155, 172, 291, 92, 94, 95, 96, 286, - 92, 286, 287, 284, 283, 288, 290, 139, 140, 123, - 16, 115, 16, 89, 107, 151, 211, 213, 269, 278, - 209, 208, 212, 104, 241, 243, 244, 270, 208, 208, - 241, 89, 91, 213, 243, 208, 245, 217, 253, 275, - 242, 244, 242, 242, 242, 242, 242, 272, 242, 224, - 242, 172, 1, 130, 153, 166, 130, 130, 91, 172, - 180, 212, 278, 172, 151, 184, 212, 183, 114, 198, - 199, 116, 116, 126, 268, 270, 127, 67, 89, 113, - 126, 127, 132, 133, 141, 142, 211, 219, 221, 228, - 229, 237, 238, 278, 126, 127, 143, 144, 156, 101, - 158, 129, 172, 129, 287, 287, 287, 287, 130, 281, - 289, 290, 292, 131, 120, 204, 132, 246, 143, 246, - 151, 131, 243, 131, 67, 103, 218, 219, 220, 235, - 82, 84, 89, 91, 123, 134, 248, 250, 252, 278, - 280, 224, 224, 224, 61, 62, 63, 65, 261, 146, - 273, 126, 225, 8, 173, 172, 183, 114, 211, 92, - 93, 94, 96, 187, 267, 267, 268, 268, 6, 7, - 14, 17, 18, 19, 24, 36, 40, 44, 47, 56, - 57, 123, 130, 178, 205, 206, 207, 181, 164, 151, - 281, 289, 292, 290, 123, 131, 212, 132, 106, 270, - 213, 131, 265, 270, 224, 93, 187, 272, 250, 70, - 74, 79, 126, 127, 135, 144, 146, 249, 251, 234, - 234, 260, 131, 147, 230, 129, 187, 187, 187, 151, - 212, 212, 212, 131, 123, 151, 102, 130, 207, 130, - 213, 265, 136, 187, 273, 99, 261, 262, 263, 264, - 270, 231, 232, 242, 171, 212, 278, 225, 184, 204, - 151, 213, 270, 218, 230, 132, 64, 127, 46, 255, - 130, 131, 224, 264, 213 + 0, 99, 148, 150, 149, 0, 1, 4, 22, 23, + 25, 26, 28, 32, 33, 34, 35, 37, 38, 39, + 40, 41, 42, 43, 44, 46, 48, 52, 53, 55, + 60, 68, 110, 115, 116, 117, 118, 121, 122, 123, + 125, 130, 151, 152, 153, 155, 157, 161, 162, 168, + 171, 174, 178, 179, 180, 183, 187, 192, 193, 194, + 200, 202, 203, 223, 225, 226, 227, 228, 229, 233, + 314, 316, 1, 10, 12, 13, 14, 15, 16, 18, + 24, 28, 37, 47, 51, 54, 56, 58, 59, 66, + 70, 71, 73, 74, 75, 76, 77, 78, 80, 81, + 83, 85, 87, 88, 89, 103, 105, 106, 107, 108, + 109, 110, 112, 120, 125, 126, 127, 134, 135, 136, + 137, 138, 139, 140, 141, 155, 158, 163, 164, 168, + 171, 174, 178, 185, 188, 189, 190, 191, 195, 196, + 200, 235, 242, 243, 244, 248, 249, 250, 255, 256, + 257, 259, 261, 262, 263, 268, 269, 270, 275, 282, + 289, 291, 292, 293, 295, 296, 303, 304, 305, 306, + 307, 312, 314, 316, 110, 125, 126, 245, 130, 130, + 245, 245, 317, 315, 130, 187, 187, 245, 186, 91, + 92, 93, 97, 98, 205, 207, 211, 212, 213, 214, + 222, 211, 186, 36, 160, 121, 132, 153, 219, 221, + 236, 237, 130, 1, 131, 162, 184, 7, 230, 188, + 195, 200, 295, 203, 196, 198, 13, 308, 18, 18, + 142, 143, 266, 267, 266, 267, 125, 130, 158, 241, + 245, 241, 241, 11, 13, 109, 121, 125, 126, 153, + 154, 156, 157, 164, 168, 171, 174, 178, 190, 196, + 201, 202, 220, 221, 226, 246, 247, 279, 293, 306, + 308, 314, 316, 241, 105, 197, 219, 251, 288, 313, + 277, 278, 279, 280, 278, 278, 93, 97, 205, 206, + 215, 216, 222, 278, 127, 305, 13, 273, 273, 155, + 189, 128, 278, 278, 310, 67, 117, 127, 128, 133, + 134, 135, 136, 245, 254, 263, 264, 272, 274, 316, + 278, 258, 258, 278, 127, 128, 17, 144, 13, 18, + 309, 100, 169, 100, 172, 132, 224, 234, 52, 112, + 113, 114, 115, 116, 125, 126, 130, 153, 318, 319, + 321, 322, 323, 325, 328, 329, 330, 113, 319, 321, + 329, 124, 175, 188, 224, 1, 69, 189, 97, 208, + 210, 212, 217, 97, 209, 210, 216, 218, 93, 97, + 210, 217, 218, 222, 91, 92, 93, 95, 95, 131, + 130, 215, 155, 163, 195, 200, 295, 219, 132, 119, + 28, 181, 190, 231, 7, 203, 142, 143, 132, 104, + 167, 237, 133, 155, 132, 281, 97, 205, 201, 279, + 132, 281, 130, 67, 106, 118, 223, 252, 253, 270, + 13, 82, 84, 125, 137, 283, 285, 287, 316, 318, + 258, 144, 258, 217, 218, 93, 186, 244, 258, 61, + 62, 63, 65, 298, 145, 311, 215, 127, 259, 260, + 258, 304, 304, 305, 305, 188, 1, 131, 155, 170, + 171, 174, 177, 178, 200, 314, 316, 1, 131, 155, + 173, 174, 177, 200, 314, 316, 245, 198, 188, 331, + 90, 93, 96, 98, 326, 90, 326, 327, 324, 320, + 115, 116, 319, 323, 328, 330, 1, 131, 176, 178, + 198, 91, 92, 93, 94, 95, 269, 270, 271, 91, + 92, 94, 276, 280, 217, 218, 91, 92, 94, 154, + 156, 293, 109, 127, 259, 306, 97, 204, 211, 212, + 97, 204, 212, 215, 97, 204, 211, 215, 111, 293, + 294, 306, 159, 163, 182, 200, 232, 125, 20, 21, + 27, 29, 30, 31, 45, 47, 49, 51, 57, 58, + 125, 131, 155, 165, 166, 196, 200, 238, 239, 240, + 132, 245, 109, 246, 293, 306, 133, 93, 132, 302, + 308, 199, 258, 310, 285, 17, 70, 74, 79, 127, + 128, 138, 145, 284, 286, 109, 308, 154, 202, 220, + 226, 293, 109, 127, 259, 306, 211, 215, 269, 269, + 297, 132, 146, 265, 273, 5, 160, 160, 130, 327, + 327, 327, 327, 131, 321, 329, 330, 332, 94, 160, + 97, 208, 212, 217, 209, 210, 217, 97, 208, 209, + 210, 220, 306, 97, 208, 210, 218, 209, 218, 293, + 109, 127, 259, 306, 97, 12, 13, 18, 91, 92, + 93, 8, 271, 93, 8, 276, 93, 8, 156, 109, + 127, 259, 306, 278, 260, 280, 131, 162, 130, 200, + 245, 245, 245, 132, 125, 155, 246, 211, 215, 302, + 139, 105, 131, 166, 240, 311, 12, 13, 18, 220, + 12, 13, 307, 102, 298, 299, 300, 301, 308, 266, + 267, 277, 187, 175, 219, 321, 329, 332, 330, 91, + 92, 93, 271, 276, 91, 92, 220, 293, 12, 13, + 18, 109, 127, 259, 94, 91, 92, 12, 13, 18, + 91, 92, 204, 204, 204, 12, 13, 18, 258, 258, + 258, 167, 237, 155, 246, 307, 308, 265, 133, 64, + 128, 50, 290, 131, 210, 210, 12, 13, 18, 131, + 132, 258, 301, 246 }; #define yyerrok (yyerrstatus = 0) @@ -1835,7 +2614,7 @@ do \ } \ else \ { \ - yyerror (YY_("syntax error: cannot back up")); \ + yyerror (&yylloc, parser, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) @@ -1892,7 +2671,7 @@ while (YYID (0)) #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) #else -# define YYLEX yylex (&yylval, &yylloc) +# define YYLEX yylex (&yylval, &yylloc, parser) #endif /* Enable debugging if requested. */ @@ -1915,7 +2694,7 @@ do { \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value, Location); \ + Type, Value, Location, parser); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) @@ -1929,19 +2708,21 @@ do { \ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, Lily_parser *parser) #else static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parser) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; YYLTYPE const * const yylocationp; + Lily_parser *parser; #endif { if (!yyvaluep) return; YYUSE (yylocationp); + YYUSE (parser); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); @@ -1963,14 +2744,15 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, Lily_parser *parser) #else static void -yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parser) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; YYLTYPE const * const yylocationp; + Lily_parser *parser; #endif { if (yytype < YYNTOKENS) @@ -1980,7 +2762,7 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); - yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp); + yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parser); YYFPRINTF (yyoutput, ")"); } @@ -2020,13 +2802,14 @@ do { \ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, Lily_parser *parser) #else static void -yy_reduce_print (yyvsp, yylsp, yyrule) +yy_reduce_print (yyvsp, yylsp, yyrule, parser) YYSTYPE *yyvsp; YYLTYPE *yylsp; int yyrule; + Lily_parser *parser; #endif { int yynrhs = yyr2[yyrule]; @@ -2040,7 +2823,7 @@ yy_reduce_print (yyvsp, yylsp, yyrule) fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) ); + , &(yylsp[(yyi + 1) - (yynrhs)]) , parser); fprintf (stderr, "\n"); } } @@ -2048,7 +2831,7 @@ yy_reduce_print (yyvsp, yylsp, yyrule) # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ - yy_reduce_print (yyvsp, yylsp, Rule); \ + yy_reduce_print (yyvsp, yylsp, Rule, parser); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that @@ -2299,18 +3082,20 @@ yysyntax_error (char *yyresult, int yystate, int yychar) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, Lily_parser *parser) #else static void -yydestruct (yymsg, yytype, yyvaluep, yylocationp) +yydestruct (yymsg, yytype, yyvaluep, yylocationp, parser) const char *yymsg; int yytype; YYSTYPE *yyvaluep; YYLTYPE *yylocationp; + Lily_parser *parser; #endif { YYUSE (yyvaluep); YYUSE (yylocationp); + YYUSE (parser); if (!yymsg) yymsg = "Deleting"; @@ -2335,7 +3120,7 @@ int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus -int yyparse (void); +int yyparse (Lily_parser *parser); #else int yyparse (); #endif @@ -2364,11 +3149,11 @@ yyparse (YYPARSE_PARAM) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int -yyparse (void) +yyparse (Lily_parser *parser) #else int -yyparse () - +yyparse (parser) + Lily_parser *parser; #endif #endif { @@ -2639,96 +3424,124 @@ yyreduce: switch (yyn) { case 3: -#line 457 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 565 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); ;} break; case 4: -#line 459 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 568 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - ;} + parser->lexer_->pop_state (); + parser->lexer_->set_identifier (ly_symbol2scm ("parseStringResult"), (yyvsp[(3) - (3)].scm)); + ;} break; case 5: -#line 461 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - PARSER->error_level_ = 1; - ;} +#line 574 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { ;} break; case 6: -#line 464 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 575 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->error_level_ = 1; ;} break; case 7: -#line 471 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 577 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->set_identifier (ly_symbol2scm ("$defaultheader"), (yyvsp[(1) - (1)].scm)); ;} break; case 8: -#line 474 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 579 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->error_level_ = 1; + ;} + break; + + case 9: +#line 582 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->error_level_ = 1; + ;} + break; + + case 10: +#line 589 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->lexer_->add_scope (get_header (parser)); + ;} + break; + + case 11: +#line 591 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->lexer_->set_identifier (ly_symbol2scm ("$defaultheader"), (yyvsp[(2) - (2)].scm)); + ;} + break; + + case 12: +#line 594 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Book *book = (yyvsp[(1) - (1)].book); - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-book-handler"); - scm_call_2 (proc, PARSER->self_scm (), book->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-book-handler"); + scm_call_2 (proc, parser->self_scm (), book->self_scm ()); book->unprotect (); ;} break; - case 9: -#line 480 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 13: +#line 600 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Book *bookpart = (yyvsp[(1) - (1)].book); - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-bookpart-handler"); - scm_call_2 (proc, PARSER->self_scm (), bookpart->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-bookpart-handler"); + scm_call_2 (proc, parser->self_scm (), bookpart->self_scm ()); bookpart->unprotect (); ;} break; - case 10: -#line 486 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 14: +#line 606 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Score *score = (yyvsp[(1) - (1)].score); - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-score-handler"); - scm_call_2 (proc, PARSER->self_scm (), score->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-score-handler"); + scm_call_2 (proc, parser->self_scm (), score->self_scm ()); score->unprotect (); ;} break; - case 11: -#line 493 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 15: +#line 613 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *music = unsmob_music ((yyvsp[(1) - (1)].scm)); - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-music-handler"); - scm_call_2 (proc, PARSER->self_scm (), music->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-music-handler"); + scm_call_2 (proc, parser->self_scm (), music->self_scm ()); ;} break; - case 12: -#line 498 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 16: +#line 618 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-text-handler"); - scm_call_2 (proc, PARSER->self_scm (), scm_list_1 ((yyvsp[(1) - (1)].scm))); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-text-handler"); + scm_call_2 (proc, parser->self_scm (), scm_list_1 ((yyvsp[(1) - (1)].scm))); ;} break; - case 13: -#line 502 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 17: +#line 622 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-text-handler"); - scm_call_2 (proc, PARSER->self_scm (), (yyvsp[(1) - (1)].scm)); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-text-handler"); + scm_call_2 (proc, parser->self_scm (), (yyvsp[(1) - (1)].scm)); ;} break; - case 14: -#line 506 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 18: +#line 626 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { SCM id = SCM_EOL; Output_def * od = (yyvsp[(1) - (1)].outputdef); @@ -2740,55 +3553,127 @@ yyreduce: else if ((yyvsp[(1) - (1)].outputdef)->c_variable ("is-layout") == SCM_BOOL_T) id = ly_symbol2scm ("$defaultlayout"); - PARSER->lexer_->set_identifier (id, od->self_scm ()); + parser->lexer_->set_identifier (id, od->self_scm ()); od->unprotect(); ;} break; - case 17: -#line 529 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 19: +#line 644 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = get_header (PARSER); - PARSER->lexer_->add_scope ((yyval.scm)); + (yyval.scm) = parser->lexer_->eval_scm_token ((yyvsp[(1) - (1)].scm)); ;} break; - case 18: -#line 533 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 27: +#line 658 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { + (yyval.scm) = (yyvsp[(1) - (1)].score)->self_scm (); + (yyvsp[(1) - (1)].score)->unprotect (); + ;} + break; + + case 29: +#line 664 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].book)->self_scm (); + (yyvsp[(1) - (1)].book)->unprotect (); + ;} + break; + case 30: +#line 669 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].book)->self_scm (); + (yyvsp[(1) - (1)].book)->unprotect (); ;} break; - case 19: -#line 539 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 31: +#line 674 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].outputdef)->self_scm (); + (yyvsp[(1) - (1)].outputdef)->unprotect (); + ;} + break; + + case 37: +#line 694 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = MAKE_SYNTAX ("music-function", (yyloc), + (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); + ;} + break; + + case 38: +#line 702 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = MAKE_SYNTAX ("void-music", (yyloc)); + ;} + break; + + case 40: +#line 706 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyvsp[(3) - (3)].scm) = scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL); + if (unsmob_music ((yyvsp[(2) - (3)].scm))) + (yyvsp[(3) - (3)].scm) = scm_cons ((yyvsp[(2) - (3)].scm), (yyvsp[(3) - (3)].scm)); + if (unsmob_music ((yyvsp[(1) - (3)].scm))) + (yyvsp[(3) - (3)].scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); + (yyval.scm) = MAKE_SYNTAX ("sequential-music", (yyloc), (yyvsp[(3) - (3)].scm)); + ;} + break; + + case 41: +#line 714 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->error_level_ = 1; + ;} + break; + + case 42: +#line 717 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->error_level_ = 1; + ;} + break; + + case 44: +#line 725 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + + ;} + break; + + case 45: +#line 731 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = PARSER->lexer_->remove_scope (); + (yyval.scm) = parser->lexer_->remove_scope (); ;} break; - case 20: -#line 548 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 46: +#line 740 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 21: -#line 549 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 47: +#line 741 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 22: -#line 553 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 48: +#line 745 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->set_identifier ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); + parser->lexer_->set_identifier ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 23: -#line 556 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 49: +#line 748 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { SCM path = scm_cons (scm_string_to_symbol ((yyvsp[(1) - (4)].scm)), (yyvsp[(2) - (4)].scm)); - PARSER->lexer_->set_identifier (path, (yyvsp[(4) - (4)].scm)); + parser->lexer_->set_identifier (path, (yyvsp[(4) - (4)].scm)); ; /* TODO: devise standard for protection in parser. @@ -2800,169 +3685,171 @@ all objects can be unprotected as soon as they're here. ;} break; - case 24: -#line 568 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 50: +#line 760 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { ;} break; - case 25: -#line 573 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 51: +#line 765 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].score)->self_scm (); (yyvsp[(1) - (1)].score)->unprotect (); ;} break; - case 26: -#line 577 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 52: +#line 769 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].book)->self_scm (); (yyvsp[(1) - (1)].book)->unprotect (); ;} break; - case 27: -#line 581 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 53: +#line 773 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].book)->self_scm (); (yyvsp[(1) - (1)].book)->unprotect (); ;} break; - case 28: -#line 585 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 54: +#line 777 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].outputdef)->self_scm (); (yyvsp[(1) - (1)].outputdef)->unprotect (); ;} break; - case 29: -#line 589 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 55: +#line 781 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 30: -#line 592 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - /* Hack: Create event-chord around standalone events. - Prevents the identifier from being interpreted as a post-event. */ - Music *mus = unsmob_music ((yyvsp[(1) - (1)].scm)); - bool is_event = mus && - (scm_memq (ly_symbol2scm ("event"), mus->get_property ("types")) - != SCM_BOOL_F); - if (!is_event) - (yyval.scm) = (yyvsp[(1) - (1)].scm); - else - (yyval.scm) = MAKE_SYNTAX ("event-chord", (yyloc), scm_list_1 ((yyvsp[(1) - (1)].scm))); + case 56: +#line 784 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 31: -#line 604 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 57: +#line 787 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 32: -#line 607 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 58: +#line 790 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 33: -#line 610 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 59: +#line 793 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 34: -#line 613 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 60: +#line 796 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 35: -#line 616 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 61: +#line 799 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 36: -#line 619 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 62: +#line 802 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 37: -#line 622 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 63: +#line 805 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); + (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 38: -#line 625 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 64: +#line 808 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 39: -#line 632 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 65: +#line 815 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(3) - (4)].scm); ;} break; - case 40: -#line 638 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 68: +#line 827 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (unsmob_music ((yyvsp[(1) - (1)].scm))) { + SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler"); + (yyvsp[(1) - (1)].scm) = scm_call_2 (proc, parser->self_scm (), (yyvsp[(1) - (1)].scm)); + } + if (unsmob_context_mod ((yyvsp[(1) - (1)].scm))) + (yyval.scm) = (yyvsp[(1) - (1)].scm); + else { + parser->parser_error ((yylsp[(1) - (1)]), _ ("not a context mod")); + } + ;} + break; + + case 69: +#line 842 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = Context_def::make_scm (); unsmob_context_def ((yyval.scm))->origin ()->set_spot ((yyloc)); ;} break; - case 41: -#line 642 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 70: +#line 846 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); unsmob_context_def ((yyval.scm))->origin ()->set_spot ((yyloc)); ;} break; - case 42: -#line 646 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 71: +#line 850 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Context_def*td = unsmob_context_def ((yyval.scm)); - - for (SCM p = (yyvsp[(3) - (3)].scm); scm_is_pair (p); p = scm_cdr (p)) { - SCM tag = scm_caar (p); - - /* TODO: should make new tag "grob-definition" ? */ - td->add_context_mod (scm_list_3 (ly_symbol2scm ("assign"), - tag, scm_cons (scm_cdar (p), SCM_EOL))); - } + unsmob_context_def ((yyval.scm))->add_context_mod ((yyvsp[(2) - (2)].scm)); ;} break; - case 43: -#line 657 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 72: +#line 853 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - unsmob_context_def ((yyval.scm))->add_context_mod ((yyvsp[(2) - (2)].scm)); + Context_def *td = unsmob_context_def ((yyval.scm)); + SCM new_mods = unsmob_context_mod ((yyvsp[(2) - (2)].scm))->get_mods (); + for (SCM m = new_mods; scm_is_pair (m); m = scm_cdr (m)) { + td->add_context_mod (scm_car (m)); + } ;} break; - case 44: -#line 660 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 73: +#line 860 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Context_def *td = unsmob_context_def ((yyval.scm)); SCM new_mods = unsmob_context_mod ((yyvsp[(2) - (2)].scm))->get_mods (); @@ -2972,104 +3859,107 @@ all objects can be unprotected as soon as they're here. ;} break; - case 45: -#line 672 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 74: +#line 872 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book) = (yyvsp[(3) - (4)].book); - pop_paper (PARSER); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), SCM_BOOL_F); + pop_paper (parser); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), SCM_BOOL_F); ;} break; - case 46: -#line 683 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 75: +#line 883 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book) = new Book; - init_papers (PARSER); + init_papers (parser); (yyval.book)->origin ()->set_spot ((yyloc)); - (yyval.book)->paper_ = dynamic_cast (unsmob_output_def (PARSER->lexer_->lookup_identifier ("$defaultpaper"))->clone ()); + (yyval.book)->paper_ = dynamic_cast (unsmob_output_def (parser->lexer_->lookup_identifier ("$defaultpaper"))->clone ()); (yyval.book)->paper_->unprotect (); - push_paper (PARSER, (yyval.book)->paper_); - (yyval.book)->header_ = PARSER->lexer_->lookup_identifier ("$defaultheader"); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), (yyval.book)->self_scm ()); - PARSER->lexer_->set_identifier (ly_symbol2scm ("book-output-suffix"), SCM_BOOL_F); - PARSER->lexer_->set_identifier (ly_symbol2scm ("book-filename"), SCM_BOOL_F); + push_paper (parser, (yyval.book)->paper_); + (yyval.book)->header_ = get_header (parser); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), (yyval.book)->self_scm ()); ;} break; - case 47: -#line 695 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 76: +#line 893 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book) = unsmob_book ((yyvsp[(1) - (1)].scm)); (yyval.book)->protect (); (yyval.book)->origin ()->set_spot ((yyloc)); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), (yyvsp[(1) - (1)].scm)); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), (yyvsp[(1) - (1)].scm)); ;} break; - case 48: -#line 701 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 77: +#line 899 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book)->paper_ = (yyvsp[(2) - (2)].outputdef); (yyvsp[(2) - (2)].outputdef)->unprotect (); - set_paper (PARSER, (yyvsp[(2) - (2)].outputdef)); + set_paper (parser, (yyvsp[(2) - (2)].outputdef)); ;} break; - case 49: -#line 706 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 78: +#line 904 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Book *bookpart = (yyvsp[(2) - (2)].book); - SCM proc = PARSER->lexer_->lookup_identifier ("book-bookpart-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-bookpart-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), bookpart->self_scm ()); bookpart->unprotect (); ;} break; - case 50: -#line 712 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 79: +#line 910 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Score *score = (yyvsp[(2) - (2)].score); - SCM proc = PARSER->lexer_->lookup_identifier ("book-score-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-score-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), score->self_scm ()); score->unprotect (); ;} break; - case 51: -#line 718 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 80: +#line 916 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *music = unsmob_music ((yyvsp[(2) - (2)].scm)); - SCM proc = PARSER->lexer_->lookup_identifier ("book-music-handler"); - scm_call_3 (proc, PARSER->self_scm (), (yyval.book)->self_scm (), music->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("book-music-handler"); + scm_call_3 (proc, parser->self_scm (), (yyval.book)->self_scm (), music->self_scm ()); ;} break; - case 52: -#line 723 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 81: +#line 921 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-text-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), scm_list_1 ((yyvsp[(2) - (2)].scm))); ;} break; - case 53: -#line 727 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 82: +#line 925 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-text-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), (yyvsp[(2) - (2)].scm)); ;} break; - case 54: -#line 731 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 83: +#line 930 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.book)->header_ = (yyvsp[(2) - (2)].scm); + parser->lexer_->add_scope ((yyvsp[(1) - (1)].book)->header_); ;} break; - case 55: -#line 734 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 85: +#line 933 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { ;} + break; + + case 86: +#line 934 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book)->paper_ = 0; (yyval.book)->scores_ = SCM_EOL; @@ -3077,104 +3967,111 @@ all objects can be unprotected as soon as they're here. ;} break; - case 56: -#line 742 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 87: +#line 942 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book) = (yyvsp[(3) - (4)].book); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), SCM_BOOL_F); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), SCM_BOOL_F); ;} break; - case 57: -#line 749 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 88: +#line 949 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book) = new Book; (yyval.book)->origin ()->set_spot ((yyloc)); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), (yyval.book)->self_scm ()); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), (yyval.book)->self_scm ()); ;} break; - case 58: -#line 754 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 89: +#line 954 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book) = unsmob_book ((yyvsp[(1) - (1)].scm)); (yyval.book)->protect (); (yyval.book)->origin ()->set_spot ((yyloc)); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), (yyvsp[(1) - (1)].scm)); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), (yyvsp[(1) - (1)].scm)); ;} break; - case 59: -#line 760 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 90: +#line 960 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book)->paper_ = (yyvsp[(2) - (2)].outputdef); (yyvsp[(2) - (2)].outputdef)->unprotect (); ;} break; - case 60: -#line 764 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 91: +#line 964 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Score *score = (yyvsp[(2) - (2)].score); - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-score-handler"); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-score-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), score->self_scm ()); score->unprotect (); ;} break; - case 61: -#line 770 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 92: +#line 970 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *music = unsmob_music ((yyvsp[(2) - (2)].scm)); - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-music-handler"); - scm_call_3 (proc, PARSER->self_scm (), (yyval.book)->self_scm (), music->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-music-handler"); + scm_call_3 (proc, parser->self_scm (), (yyval.book)->self_scm (), music->self_scm ()); ;} break; - case 62: -#line 775 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 93: +#line 975 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-text-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), scm_list_1 ((yyvsp[(2) - (2)].scm))); ;} break; - case 63: -#line 779 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 94: +#line 979 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-text-handler"); scm_call_2 (proc, (yyval.book)->self_scm (), (yyvsp[(2) - (2)].scm)); ;} break; - case 64: -#line 783 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 95: +#line 984 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.book)->header_ = (yyvsp[(2) - (2)].scm); + if (!ly_is_module ((yyvsp[(1) - (1)].book)->header_)) + (yyvsp[(1) - (1)].book)->header_ = ly_make_module (false); + parser->lexer_->add_scope ((yyvsp[(1) - (1)].book)->header_); ;} break; - case 65: -#line 786 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 97: +#line 989 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { ;} + break; + + case 98: +#line 990 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.book)->paper_ = 0; (yyval.book)->scores_ = SCM_EOL; ;} break; - case 66: -#line 793 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 99: +#line 997 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.score) = (yyvsp[(3) - (4)].score); ;} break; - case 67: -#line 799 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 100: +#line 1003 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { SCM m = (yyvsp[(1) - (1)].scm); SCM scorify = ly_lily_module_constant ("scorify-music"); - SCM score = scm_call_2 (scorify, m, PARSER->self_scm ()); + SCM score = scm_call_2 (scorify, m, parser->self_scm ()); // pass ownernship to C++ again. (yyval.score) = unsmob_score (score); @@ -3183,8 +4080,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 68: -#line 809 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 101: +#line 1013 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.score) = unsmob_score ((yyvsp[(1) - (1)].scm)); (yyval.score)->protect (); @@ -3192,19 +4089,21 @@ all objects can be unprotected as soon as they're here. ;} break; - case 69: -#line 814 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 102: +#line 1019 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.score)->set_header ((yyvsp[(2) - (2)].scm)); + if (!ly_is_module ((yyvsp[(1) - (1)].score)->get_header ())) + (yyvsp[(1) - (1)].score)->set_header (ly_make_module (false)); + parser->lexer_->add_scope ((yyvsp[(1) - (1)].score)->get_header ()); ;} break; - case 70: -#line 817 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 104: +#line 1024 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { if ((yyvsp[(2) - (2)].outputdef)->lookup_variable (ly_symbol2scm ("is-paper")) == SCM_BOOL_T) { - PARSER->parser_error ((yylsp[(2) - (2)]), _("\\paper cannot be used in \\score, use \\layout instead")); + parser->parser_error ((yylsp[(2) - (2)]), _("\\paper cannot be used in \\score, use \\layout instead")); } else @@ -3215,82 +4114,103 @@ all objects can be unprotected as soon as they're here. ;} break; - case 71: -#line 829 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 105: +#line 1036 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.score)->error_found_ = true; ;} break; - case 72: -#line 840 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 106: +#line 1047 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.outputdef) = (yyvsp[(1) - (1)].outputdef); if ((yyval.outputdef)->lookup_variable (ly_symbol2scm ("is-paper")) != SCM_BOOL_T) { - PARSER->parser_error ((yylsp[(1) - (1)]), _ ("need \\paper for paper block")); + parser->parser_error ((yylsp[(1) - (1)]), _ ("need \\paper for paper block")); (yyvsp[(1) - (1)].outputdef)->unprotect (); - (yyval.outputdef) = get_paper (PARSER); + (yyval.outputdef) = get_paper (parser); } ;} break; - case 73: -#line 853 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 107: +#line 1060 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.outputdef) = (yyvsp[(1) - (2)].outputdef); - PARSER->lexer_->remove_scope (); - PARSER->lexer_->pop_state (); + parser->lexer_->remove_scope (); + parser->lexer_->pop_state (); ;} break; - case 74: -#line 862 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 108: +#line 1069 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.outputdef) = get_paper (PARSER); + (yyval.outputdef) = get_paper (parser); (yyval.outputdef)->input_origin_ = (yyloc); - PARSER->lexer_->add_scope ((yyval.outputdef)->scope_); + parser->lexer_->add_scope ((yyval.outputdef)->scope_); ;} break; - case 75: -#line 867 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 109: +#line 1074 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Output_def *p = get_midi (PARSER); + Output_def *p = get_midi (parser); (yyval.outputdef) = p; - PARSER->lexer_->add_scope (p->scope_); + parser->lexer_->add_scope (p->scope_); ;} break; - case 76: -#line 872 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 110: +#line 1079 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Output_def *p = get_layout (PARSER); + Output_def *p = get_layout (parser); - PARSER->lexer_->add_scope (p->scope_); + parser->lexer_->add_scope (p->scope_); (yyval.outputdef) = p; ;} break; - case 77: -#line 881 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 111: +#line 1088 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->push_initial_state (); + parser->lexer_->push_initial_state (); (yyval.outputdef) = (yyvsp[(1) - (1)].outputdef); ;} break; - case 78: -#line 888 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 112: +#line 1101 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->lexer_->pop_state (); + ;} + break; + + case 113: +#line 1105 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->lexer_->pop_state (); + ;} + break; + + case 114: +#line 1108 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(4) - (5)].scm); + ;} + break; + + case 115: +#line 1114 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.outputdef) = (yyvsp[(1) - (2)].outputdef); (yyval.outputdef)->input_origin_.set_spot ((yyloc)); ;} break; - case 79: -#line 892 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 116: +#line 1118 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyvsp[(1) - (3)].outputdef)->unprotect (); @@ -3298,369 +4218,907 @@ all objects can be unprotected as soon as they're here. o->input_origin_.set_spot ((yyloc)); (yyval.outputdef) = o; (yyval.outputdef)->protect (); - PARSER->lexer_->remove_scope (); - PARSER->lexer_->add_scope (o->scope_); + parser->lexer_->remove_scope (); + parser->lexer_->add_scope (o->scope_); ;} break; - case 80: -#line 902 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 117: +#line 1128 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { ;} break; - case 81: -#line 905 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 118: +#line 1132 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - assign_context_def ((yyval.outputdef), (yyvsp[(2) - (2)].scm)); + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); ;} break; - case 82: -#line 908 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 119: +#line 1136 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { + if (unsmob_context_def ((yyvsp[(3) - (3)].scm))) + assign_context_def ((yyval.outputdef), (yyvsp[(3) - (3)].scm)); + else { + SCM proc = parser->lexer_->lookup_identifier + ("output-def-music-handler"); + scm_call_3 (proc, parser->self_scm (), + (yyvsp[(1) - (3)].outputdef)->self_scm (), (yyvsp[(3) - (3)].scm)); + } ;} break; - case 83: -#line 914 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 120: +#line 1147 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + + ;} + break; + + case 121: +#line 1153 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MAKE_SYNTAX ("tempo", (yyloc), SCM_EOL, (yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)); ;} break; - case 84: -#line 917 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 122: +#line 1156 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MAKE_SYNTAX ("tempo", (yyloc), (yyvsp[(2) - (5)].scm), (yyvsp[(3) - (5)].scm), (yyvsp[(5) - (5)].scm)); ;} break; - case 85: -#line 920 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 123: +#line 1159 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MAKE_SYNTAX ("tempo", (yyloc), (yyvsp[(2) - (2)].scm)); ;} break; - case 86: -#line 933 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 124: +#line 1168 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons (SCM_EOL, SCM_EOL); + (yyval.scm) = SCM_EOL; ;} break; - case 87: -#line 936 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 125: +#line 1171 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM s = (yyval.scm); - SCM c = scm_cons ((yyvsp[(2) - (2)].scm), SCM_EOL); + if (unsmob_music ((yyvsp[(2) - (2)].scm))) + (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); + ;} + break; - if (scm_is_pair (scm_cdr (s))) - scm_set_cdr_x (scm_cdr (s), c); /* append */ + case 126: +#line 1175 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + Music *m = MY_MAKE_MUSIC("Music", (yyloc)); + // ugh. code dup + m->set_property ("error-found", SCM_BOOL_T); + (yyval.scm) = scm_cons (m->self_scm (), (yyvsp[(1) - (2)].scm)); + m->unprotect (); /* UGH */ + ;} + break; + + case 127: +#line 1186 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_reverse_x ((yyvsp[(2) - (3)].scm), SCM_EOL); + ;} + break; + + case 131: +#line 1198 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (unsmob_music ((yyvsp[(1) - (1)].scm)) + || scm_is_eq ((yyvsp[(1) - (1)].scm), SCM_UNSPECIFIED)) + (yyval.scm) = (yyvsp[(1) - (1)].scm); else - scm_set_car_x (s, c); /* set first cons */ - scm_set_cdr_x (s, c); /* remember last cell */ + { + (yyloc).warning (_ ("Ignoring non-music expression")); + (yyval.scm) = SCM_UNSPECIFIED; + } ;} break; - case 88: -#line 946 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 132: +#line 1212 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (unsmob_pitch ((yyvsp[(1) - (1)].scm))) { + Music *n = MY_MAKE_MUSIC ("NoteEvent", (yylsp[(1) - (1)])); + n->set_property ("pitch", (yyvsp[(1) - (1)].scm)); + n->set_property ("duration", + parser->default_duration_.smobbed_copy ()); + (yyval.scm) = n->unprotect (); + } + ;} + break; + + case 137: +#line 1232 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { + (yyval.scm) = MAKE_SYNTAX ("repeat", (yyloc), (yyvsp[(2) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(4) - (4)].scm), SCM_EOL); + ;} + break; + case 138: +#line 1236 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = MAKE_SYNTAX ("repeat", (yyloc), (yyvsp[(2) - (6)].scm), (yyvsp[(3) - (6)].scm), (yyvsp[(4) - (6)].scm), (yyvsp[(6) - (6)].scm)); ;} break; - case 89: -#line 949 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 139: +#line 1242 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Music *m = MY_MAKE_MUSIC("Music", (yyloc)); - // ugh. code dup - m->set_property ("error-found", SCM_BOOL_T); - SCM s = (yyval.scm); - SCM c = scm_cons (m->self_scm (), SCM_EOL); - m->unprotect (); /* UGH */ + (yyval.scm) = MAKE_SYNTAX ("sequential-music", (yyloc), (yyvsp[(2) - (2)].scm)); + ;} + break; - if (scm_is_pair (scm_cdr (s))) - scm_set_cdr_x (scm_cdr (s), c); /* append */ - else - scm_set_car_x (s, c); /* set first cons */ - scm_set_cdr_x (s, c); /* remember last cell */ + case 140: +#line 1245 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = MAKE_SYNTAX ("sequential-music", (yyloc), (yyvsp[(1) - (1)].scm)); + ;} + break; + + case 141: +#line 1251 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = MAKE_SYNTAX ("simultaneous-music", (yyloc), (yyvsp[(2) - (2)].scm)); + ;} + break; + + case 142: +#line 1254 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = MAKE_SYNTAX ("simultaneous-music", (yyloc), scm_reverse_x ((yyvsp[(2) - (3)].scm), SCM_EOL)); + ;} + break; + + case 146: +#line 1266 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_initial_state (); ;} + break; + + case 147: +#line 1267 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + parser->lexer_->pop_state (); + (yyval.scm) = (yyvsp[(4) - (5)].scm); + ;} + break; + + case 148: +#line 1272 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(2) - (2)].scm); + ;} + break; + + case 149: +#line 1276 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].scm); + ;} + break; + + case 150: +#line 1280 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (unsmob_context_mod ((yyvsp[(2) - (2)].scm))) + (yyval.scm) = (yyvsp[(2) - (2)].scm); + else { + parser->parser_error ((yylsp[(2) - (2)]), _ ("not a context mod")); + (yyval.scm) = Context_mod ().smobbed_copy (); + } + ;} + break; + + case 151: +#line 1291 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = SCM_EOL; + ;} + break; + + case 152: +#line 1295 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].scm); + ;} + break; + + case 153: +#line 1301 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = Context_mod ().smobbed_copy (); + ;} + break; + + case 154: +#line 1304 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + unsmob_context_mod ((yyvsp[(1) - (2)].scm))->add_context_mod ((yyvsp[(2) - (2)].scm)); + ;} + break; + + case 155: +#line 1307 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + Context_mod *md = unsmob_context_mod ((yyvsp[(2) - (2)].scm)); + if (md) + unsmob_context_mod ((yyvsp[(1) - (2)].scm))->add_context_mods (md->get_mods ()); + ;} + break; + + case 156: +#line 1312 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + unsmob_context_mod ((yyvsp[(1) - (2)].scm))->add_context_mods + (unsmob_context_mod ((yyvsp[(2) - (2)].scm))->get_mods ()); + ;} + break; + + case 160: +#line 1327 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = FINISH_MAKE_SYNTAX ((yyvsp[(1) - (2)].scm), (yyloc), (yyvsp[(2) - (2)].scm)); + ;} + break; + + case 164: +#line 1339 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + break; + + case 165: +#line 1340 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + break; + + case 167: +#line 1350 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); + ;} + break; + + case 168: +#line 1354 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); + ;} + break; + + case 169: +#line 1358 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); + ;} + break; + + case 170: +#line 1365 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + ;} + break; + + case 171: +#line 1368 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + ;} + break; + + case 172: +#line 1372 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), (yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(2) - (4)].scm)); + ;} + break; + + case 173: +#line 1376 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), (yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(2) - (4)].scm)); + ;} + break; + + case 174: +#line 1380 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + SCM n = scm_difference ((yyvsp[(5) - (5)].scm), SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (5)].scm), n))) + (yyval.scm) = scm_cons (n, (yyvsp[(3) - (5)].scm)); + else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", (yylsp[(5) - (5)])); + t->set_property ("digit", (yyvsp[(5) - (5)].scm)); + (yyval.scm) = t->unprotect (); + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (5)].scm), (yyval.scm)))) + (yyval.scm) = scm_cons ((yyval.scm), (yyvsp[(3) - (5)].scm)); + else + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (5)]), n, (yyvsp[(3) - (5)].scm), (yyvsp[(2) - (5)].scm)); + } + + ;} + break; + + case 175: +#line 1396 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (5)]), + scm_difference ((yyvsp[(5) - (5)].scm), SCM_UNDEFINED), + (yyvsp[(3) - (5)].scm), (yyvsp[(2) - (5)].scm)); + ;} + break; + + case 176: +#line 1402 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (5)]), + scm_difference ((yyvsp[(5) - (5)].scm), SCM_UNDEFINED), + (yyvsp[(3) - (5)].scm), (yyvsp[(2) - (5)].scm)); + ;} + break; + + case 178: +#line 1412 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), (yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(2) - (4)].scm)); + ;} + break; + + case 179: +#line 1416 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), (yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(2) - (4)].scm)); + ;} + break; + + case 181: +#line 1424 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), (yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(2) - (4)].scm)); + ;} + break; + + case 182: +#line 1428 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), (yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm), (yyvsp[(2) - (4)].scm)); + ;} + break; + + case 187: +#line 1445 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + } else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (SCM_IDENTIFIER, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 188: +#line 1455 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + } else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (EVENT_IDENTIFIER, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 189: +#line 1465 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + // There is no point interpreting a lyrics string as + // an event, since we don't allow music possibly + // followed by durations or postevent into closed + // music, and we only accept closed music in optional + // arguments at the moment. If this changes, more + // complex schemes might become interesting here as + // well: see how we do this at the mandatory argument + // point. + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (LYRICS_STRING, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 190: +#line 1482 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + { + (yyval.scm) = (yyvsp[(3) - (4)].scm); + MYREPARSE ((yylsp[(4) - (4)]), (yyvsp[(2) - (4)].scm), UNSIGNED, (yyvsp[(4) - (4)].scm)); + } else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (UNSIGNED, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 191: +#line 1493 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + { + (yyval.scm) = (yyvsp[(3) - (4)].scm); + MYREPARSE ((yylsp[(4) - (4)]), (yyvsp[(2) - (4)].scm), REAL, (yyvsp[(4) - (4)].scm)); + } else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (REAL, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 192: +#line 1504 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + } else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (NUMBER_IDENTIFIER, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 193: +#line 1514 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)))) + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + } else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (4)]), (yyvsp[(1) - (4)].scm)), (yyvsp[(3) - (4)].scm)); + MYBACKUP (FRACTION, (yyvsp[(4) - (4)].scm), (yylsp[(4) - (4)])); + } + ;} + break; + + case 194: +#line 1524 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + SCM n = scm_difference ((yyvsp[(5) - (5)].scm), SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (5)].scm), n))) { + (yyval.scm) = (yyvsp[(3) - (5)].scm); + MYREPARSE ((yylsp[(5) - (5)]), (yyvsp[(2) - (5)].scm), REAL, n); + } else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", (yylsp[(5) - (5)])); + t->set_property ("digit", (yyvsp[(5) - (5)].scm)); + (yyval.scm) = t->unprotect (); + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (5)].scm), (yyval.scm)))) + (yyval.scm) = scm_cons ((yyval.scm), (yyvsp[(3) - (5)].scm)); + else { + (yyval.scm) = scm_cons (loc_on_music ((yylsp[(3) - (5)]), (yyvsp[(1) - (5)].scm)), (yyvsp[(3) - (5)].scm)); + MYBACKUP (UNSIGNED, (yyvsp[(5) - (5)].scm), (yylsp[(5) - (5)])); + parser->lexer_->push_extra_token ('-'); + } + } + + ;} + break; + + case 195: +#line 1544 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + SCM n = scm_difference ((yyvsp[(5) - (5)].scm), SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (5)].scm), n))) { + MYREPARSE ((yylsp[(5) - (5)]), (yyvsp[(2) - (5)].scm), REAL, n); + (yyval.scm) = (yyvsp[(3) - (5)].scm); + } else { + MYBACKUP (REAL, n, (yylsp[(5) - (5)])); + } + ;} + break; + + case 196: +#line 1554 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + SCM n = scm_difference ((yyvsp[(5) - (5)].scm), SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ((yyvsp[(2) - (5)].scm), n))) { + (yyval.scm) = scm_cons (n, (yyvsp[(3) - (5)].scm)); + } else { + MYBACKUP (NUMBER_IDENTIFIER, n, (yylsp[(5) - (5)])); + } + ;} + break; + + case 197: +#line 1563 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + ;} + break; + + case 198: +#line 1567 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(3) - (4)].scm)); + ;} + break; + + case 199: +#line 1571 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(1) - (4)].scm), (yyvsp[(3) - (4)].scm)); + MYBACKUP(0, SCM_UNDEFINED, (yylsp[(3) - (4)])); + ;} + break; + + case 200: +#line 1576 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 92: -#line 971 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 201: +#line 1581 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = SCM_EOL; + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 93: -#line 974 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 205: +#line 1595 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_car ((yyvsp[(3) - (4)].scm)); + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); ;} break; - case 94: -#line 982 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 206: +#line 1600 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = MAKE_SYNTAX ("repeat", (yyloc), (yyvsp[(2) - (5)].scm), (yyvsp[(3) - (5)].scm), (yyvsp[(4) - (5)].scm), (yyvsp[(5) - (5)].scm)); + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); ;} break; - case 95: -#line 988 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 207: +#line 1605 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = MAKE_SYNTAX ("sequential-music", (yyloc), scm_car ((yyvsp[(3) - (4)].scm))); + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); ;} break; - case 96: -#line 991 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 208: +#line 1610 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = MAKE_SYNTAX ("sequential-music", (yyloc), scm_car ((yyvsp[(2) - (3)].scm))); + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); ;} break; - case 97: -#line 997 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = MAKE_SYNTAX ("simultaneous-music", (yyloc), scm_car ((yyvsp[(3) - (4)].scm))); + case 211: +#line 1620 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + // We check how the predicate thinks about a lyrics + // event or about a markup. If it accepts neither, we + // backup the original token. Otherwise we commit to + // taking the token. Depending on what the predicate + // is willing to accept, we interpret as a string, as + // a lyric event, or ambiguously (meaning that if + // something looking like a duration or post event + // follows, we take the event, otherwise the string). + SCM lyric_event = MAKE_SYNTAX ("lyric-event", (yylsp[(3) - (3)]), (yyvsp[(3) - (3)].scm), + parser->default_duration_.smobbed_copy ()); + if (scm_is_true (scm_call_1 ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)))) + if (scm_is_true (scm_call_1 ((yyvsp[(1) - (3)].scm), lyric_event))) + { + (yyval.scm) = (yyvsp[(2) - (3)].scm); + MYREPARSE ((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].scm), LYRICS_STRING, (yyvsp[(3) - (3)].scm)); + } else { + (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + } + else if (scm_is_true (scm_call_1 ((yyvsp[(1) - (3)].scm), lyric_event))) + { + (yyval.scm) = (yyvsp[(2) - (3)].scm); + MYREPARSE ((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].scm), LYRIC_ELEMENT, (yyvsp[(3) - (3)].scm)); + } else { + // This is going to flag a syntax error, we + // know the predicate to be false. + check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); + } ;} break; - case 98: -#line 1000 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 212: +#line 1651 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = MAKE_SYNTAX ("simultaneous-music", (yyloc), scm_car ((yyvsp[(2) - (3)].scm))); + // This should never be false + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 103: -#line 1013 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_initial_state (); ;} + case 213: +#line 1660 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + SCM n = scm_difference ((yyvsp[(4) - (4)].scm), SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ((yyvsp[(1) - (4)].scm), n))) { + (yyval.scm) = (yyvsp[(2) - (4)].scm); + MYREPARSE ((yylsp[(4) - (4)]), (yyvsp[(1) - (4)].scm), REAL, n); + } else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", (yylsp[(4) - (4)])); + t->set_property ("digit", (yyvsp[(4) - (4)].scm)); + (yyval.scm) = t->unprotect (); + if (scm_is_true (scm_call_1 ((yyvsp[(1) - (4)].scm), (yyval.scm)))) + (yyval.scm) = scm_cons ((yyval.scm), (yyvsp[(2) - (4)].scm)); + else + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (4)]), n, (yyvsp[(2) - (4)].scm), (yyvsp[(1) - (4)].scm)); + } + + ;} break; - case 104: -#line 1014 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 214: +#line 1677 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->pop_state (); - (yyval.scm) = (yyvsp[(4) - (5)].scm); - ;} + (yyval.scm) = (yyvsp[(2) - (4)].scm); + SCM n = scm_difference ((yyvsp[(4) - (4)].scm), SCM_UNDEFINED); + MYREPARSE ((yylsp[(4) - (4)]), (yyvsp[(1) - (4)].scm), REAL, n); + ;} break; - case 105: -#line 1019 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 215: +#line 1683 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(2) - (2)].scm); - ;} + SCM n = scm_difference ((yyvsp[(4) - (4)].scm), SCM_UNDEFINED); + (yyval.scm) = check_scheme_arg (parser, (yylsp[(4) - (4)]), n, (yyvsp[(2) - (4)].scm), (yyvsp[(1) - (4)].scm)); + ;} break; - case 106: -#line 1023 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 216: +#line 1688 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), (yyvsp[(3) - (3)].scm), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); + ;} break; - case 107: -#line 1029 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 220: +#line 1701 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = SCM_EOL; - ;} + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); + ;} break; - case 108: -#line 1033 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 221: +#line 1706 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); + ;} break; - case 109: -#line 1039 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 222: +#line 1711 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = Context_mod ().smobbed_copy (); - ;} + SCM n = scm_difference ((yyvsp[(4) - (4)].scm), SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ((yyvsp[(1) - (4)].scm), n))) { + (yyval.scm) = scm_cons (n, (yyvsp[(2) - (4)].scm)); + } else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", (yylsp[(4) - (4)])); + t->set_property ("digit", (yyvsp[(4) - (4)].scm)); + (yyval.scm) = t->unprotect (); + if (scm_is_true (scm_call_1 ((yyvsp[(1) - (4)].scm), (yyval.scm)))) + (yyval.scm) = scm_cons ((yyval.scm), (yyvsp[(2) - (4)].scm)); + else + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (4)]), n, (yyvsp[(2) - (4)].scm), (yyvsp[(1) - (4)].scm)); + } + + ;} break; - case 110: -#line 1042 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 223: +#line 1727 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - unsmob_context_mod ((yyvsp[(1) - (2)].scm))->add_context_mod ((yyvsp[(2) - (2)].scm)); - ;} + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (4)]), + scm_difference ((yyvsp[(4) - (4)].scm), SCM_UNDEFINED), + (yyvsp[(2) - (4)].scm), (yyvsp[(1) - (4)].scm)); + ;} break; - case 111: -#line 1045 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 224: +#line 1733 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Context_mod *md = unsmob_context_mod ((yyvsp[(2) - (2)].scm)); - if (md) - unsmob_context_mod ((yyvsp[(1) - (2)].scm))->add_context_mods (md->get_mods ()); - ;} + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (4)]), + scm_difference ((yyvsp[(4) - (4)].scm), SCM_UNDEFINED), + (yyvsp[(2) - (4)].scm), (yyvsp[(1) - (4)].scm)); + ;} break; - case 112: -#line 1053 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + case 225: +#line 1739 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); + ;} break; - case 113: -#line 1054 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + case 226: +#line 1744 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); + ;} break; - case 114: -#line 1058 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + case 227: +#line 1749 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), + (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); + ;} break; - case 115: -#line 1059 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + case 230: +#line 1759 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); + ;} break; - case 118: -#line 1072 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 231: +#line 1763 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 119: -#line 1078 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 234: +#line 1772 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 120: -#line 1081 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 235: +#line 1776 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 121: -#line 1084 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 241: +#line 1793 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + (yyval.scm) = MAKE_SYNTAX ("music-function", (yyloc), + (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 122: -#line 1089 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 242: +#line 1800 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 123: -#line 1092 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 243: +#line 1803 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 124: -#line 1095 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 244: +#line 1806 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 125: -#line 1098 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 245: +#line 1809 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + (yyval.scm) = scm_cons ((yyvsp[(1) - (4)].scm), (yyvsp[(3) - (4)].scm)); ;} break; - case 126: -#line 1103 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 246: +#line 1812 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - /* This is for 0-ary functions, so they don't need to - read a lookahead token */ - (yyval.scm) = SCM_EOL; + (yyval.scm) = scm_cons ((yyvsp[(1) - (4)].scm), (yyvsp[(3) - (4)].scm)); + ;} + break; + + case 247: +#line 1815 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = scm_cons ((yyvsp[(1) - (4)].scm), (yyvsp[(3) - (4)].scm)); ;} break; - case 129: -#line 1113 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 248: +#line 1821 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = ly_append2 (scm_list_2 ((yyvsp[(1) - (2)].scm), make_input ((yyloc))), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); + (yyval.scm) = MAKE_SYNTAX ("music-function", (yyloc), + (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 130: -#line 1120 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 249: +#line 1829 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 131: -#line 1121 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 250: +#line 1830 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(2) - (2)].scm); ;} break; - case 132: -#line 1128 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 252: +#line 1837 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + break; + + case 253: +#line 1838 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} + break; + + case 254: +#line 1840 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = run_music_function (PARSER, (yyvsp[(1) - (1)].scm)); + (yyval.scm) = FINISH_MAKE_SYNTAX ((yyvsp[(1) - (2)].scm), (yyloc), (yyvsp[(2) - (2)].scm)); ;} break; - case 133: -#line 1131 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 255: +#line 1846 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Context_mod *ctxmod = unsmob_context_mod ((yyvsp[(4) - (5)].scm)); + Context_mod *ctxmod = unsmob_context_mod ((yyvsp[(4) - (4)].scm)); SCM mods = SCM_EOL; if (ctxmod) mods = ctxmod->get_mods (); - (yyval.scm) = MAKE_SYNTAX ("context-specification", (yyloc), (yyvsp[(2) - (5)].scm), (yyvsp[(3) - (5)].scm), (yyvsp[(5) - (5)].scm), mods, SCM_BOOL_F); + (yyval.scm) = START_MAKE_SYNTAX ("context-specification", (yyvsp[(2) - (4)].scm), (yyvsp[(3) - (4)].scm), mods, SCM_BOOL_F); ;} break; - case 134: -#line 1138 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 256: +#line 1853 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Context_mod *ctxmod = unsmob_context_mod ((yyvsp[(4) - (5)].scm)); + Context_mod *ctxmod = unsmob_context_mod ((yyvsp[(4) - (4)].scm)); SCM mods = SCM_EOL; if (ctxmod) mods = ctxmod->get_mods (); - (yyval.scm) = MAKE_SYNTAX ("context-specification", (yyloc), (yyvsp[(2) - (5)].scm), (yyvsp[(3) - (5)].scm), (yyvsp[(5) - (5)].scm), mods, SCM_BOOL_T); - ;} - break; - - case 135: -#line 1146 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = MAKE_SYNTAX ("time-scaled-music", (yyloc), (yyvsp[(2) - (3)].scm), (yyvsp[(3) - (3)].scm)); - ;} - break; - - case 136: -#line 1149 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} - break; - - case 137: -#line 1150 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - Pitch from = *unsmob_pitch ((yyvsp[(2) - (4)].scm)); - Pitch to = *unsmob_pitch ((yyvsp[(3) - (4)].scm)); - SCM pitch = pitch_interval (from, to).smobbed_copy (); - (yyval.scm) = MAKE_SYNTAX ("transpose-music", (yyloc), pitch, (yyvsp[(4) - (4)].scm)); + (yyval.scm) = START_MAKE_SYNTAX ("context-specification", (yyvsp[(2) - (4)].scm), (yyvsp[(3) - (4)].scm), mods, SCM_BOOL_T); ;} break; - case 138: -#line 1156 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 257: +#line 1863 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { if ((yyvsp[(1) - (2)].scm) == ly_symbol2scm ("chords")) { @@ -3670,272 +5128,210 @@ all objects can be unprotected as soon as they're here. { (yyval.scm) = (yyvsp[(2) - (2)].scm); } - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); ;} break; - case 139: -#line 1167 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 258: +#line 1874 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Context_mod *ctxmod = unsmob_context_mod ((yyvsp[(2) - (3)].scm)); SCM mods = SCM_EOL; if (ctxmod) mods = ctxmod->get_mods (); - (yyval.scm) = MAKE_SYNTAX ("context-specification", (yyloc), (yyvsp[(1) - (3)].scm), SCM_EOL, (yyvsp[(3) - (3)].scm), mods, SCM_BOOL_T); + (yyval.scm) = MAKE_SYNTAX ("context-specification", (yyloc), (yyvsp[(1) - (3)].scm), SCM_EOL, mods, SCM_BOOL_T, (yyvsp[(3) - (3)].scm)); if ((yyvsp[(1) - (3)].scm) == ly_symbol2scm ("ChordNames")) { (yyval.scm) = MAKE_SYNTAX ("unrelativable-music", (yyloc), (yyval.scm)); } - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); ;} break; - case 140: -#line 1179 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} - break; - - case 141: -#line 1180 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} - break; - - case 142: -#line 1184 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 259: +#line 1889 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); (yyval.scm) = ly_symbol2scm ("notes"); ;} break; - case 143: -#line 1191 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 260: +#line 1896 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM nn = PARSER->lexer_->lookup_identifier ("drumPitchNames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("drumPitchNames"); + parser->lexer_->push_note_state (nn); (yyval.scm) = ly_symbol2scm ("drums"); ;} break; - case 144: -#line 1197 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 261: +#line 1902 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->push_figuredbass_state (); + parser->lexer_->push_figuredbass_state (); (yyval.scm) = ly_symbol2scm ("figures"); ;} break; - case 145: -#line 1202 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 262: +#line 1907 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM nn = PARSER->lexer_->lookup_identifier ("chordmodifiers"); - PARSER->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); - nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_chord_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("chordmodifiers"); + parser->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); + nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_chord_state (nn); (yyval.scm) = ly_symbol2scm ("chords"); ;} break; - case 146: -#line 1211 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_lyric_state (); + case 263: +#line 1916 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_lyric_state (); (yyval.scm) = ly_symbol2scm ("lyrics"); ;} break; - case 147: -#line 1217 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 264: +#line 1922 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM nn = PARSER->lexer_->lookup_identifier ("drumPitchNames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("drumPitchNames"); + parser->lexer_->push_note_state (nn); (yyval.scm) = ly_symbol2scm ("DrumStaff"); ;} break; - case 148: -#line 1223 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 265: +#line 1928 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->push_figuredbass_state (); + parser->lexer_->push_figuredbass_state (); (yyval.scm) = ly_symbol2scm ("FiguredBass"); ;} break; - case 149: -#line 1228 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 266: +#line 1933 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM nn = PARSER->lexer_->lookup_identifier ("chordmodifiers"); - PARSER->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); - nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_chord_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("chordmodifiers"); + parser->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); + nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_chord_state (nn); (yyval.scm) = ly_symbol2scm ("ChordNames"); ;} break; - case 150: -#line 1236 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_lyric_state (); + case 267: +#line 1941 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_lyric_state (); (yyval.scm) = ly_symbol2scm ("Lyrics"); ;} break; - case 151: -#line 1243 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - Pitch start = *unsmob_pitch ((yyvsp[(2) - (3)].scm)); - (yyval.scm) = make_music_relative (start, (yyvsp[(3) - (3)].scm), (yyloc)); - ;} - break; - - case 152: -#line 1247 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - Pitch middle_c (0, 0, 0); - (yyval.scm) = make_music_relative (middle_c, (yyvsp[(2) - (2)].scm), (yyloc)); - ;} - break; - - case 153: -#line 1254 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_lyric_state (); ;} + case 268: +#line 1947 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_lyric_state (); ;} break; - case 154: -#line 1256 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 269: +#line 1949 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { /* Can also use music at the expensive of two S/Rs similar to \repeat \alternative */ - PARSER->lexer_->pop_state (); - - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), SCM_EOL); - ;} - break; - - case 155: -#line 1263 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - PARSER->lexer_->push_lyric_state (); ;} - break; + parser->lexer_->pop_state (); - case 156: -#line 1265 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - PARSER->lexer_->pop_state (); (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), SCM_EOL); ;} break; - case 157: -#line 1269 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - PARSER->lexer_->push_lyric_state (); - ;} - break; - - case 158: -#line 1271 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - PARSER->lexer_->pop_state (); - (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(1) - (4)].scm)); - ;} - break; - - case 159: -#line 1275 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 270: +#line 1956 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->push_lyric_state (); + parser->lexer_->push_lyric_state (); ;} break; - case 160: -#line 1277 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 271: +#line 1958 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); (yyval.scm) = scm_cons ((yyvsp[(4) - (4)].scm), (yyvsp[(1) - (4)].scm)); ;} break; - case 161: -#line 1284 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = MAKE_SYNTAX ("add-lyrics", (yyloc), (yyvsp[(1) - (2)].scm), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); - ;} - break; - - case 162: -#line 1287 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 272: +#line 1965 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MAKE_SYNTAX ("add-lyrics", (yyloc), (yyvsp[(1) - (2)].scm), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); ;} break; - case 163: -#line 1290 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 273: +#line 1968 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->push_lyric_state (); + parser->lexer_->push_lyric_state (); ;} break; - case 164: -#line 1292 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 274: +#line 1970 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); (yyval.scm) = MAKE_SYNTAX ("lyric-combine", (yyloc), (yyvsp[(2) - (4)].scm), (yyvsp[(4) - (4)].scm)); ;} break; - case 165: -#line 1299 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 275: +#line 1977 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MAKE_SYNTAX ("context-change", (yyloc), scm_string_to_symbol ((yyvsp[(2) - (4)].scm)), (yyvsp[(4) - (4)].scm)); ;} break; - case 166: -#line 1306 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 276: +#line 1984 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(1) - (1)].scm), SCM_EOL); ;} break; - case 167: -#line 1309 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 277: +#line 1987 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); ;} break; - case 168: -#line 1315 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 278: +#line 1993 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_reverse_x ((yyvsp[(1) - (1)].scm), SCM_EOL); ;} break; - case 169: -#line 1321 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 279: +#line 1999 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_3 (ly_symbol2scm ("assign"), scm_string_to_symbol ((yyvsp[(1) - (3)].scm)), (yyvsp[(3) - (3)].scm)); ;} break; - case 170: -#line 1325 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 280: +#line 2003 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_2 (ly_symbol2scm ("unset"), scm_string_to_symbol ((yyvsp[(2) - (2)].scm))); ;} break; - case 171: -#line 1329 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 281: +#line 2007 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_append (scm_list_2 (scm_list_3 (ly_symbol2scm ("push"), scm_string_to_symbol ((yyvsp[(2) - (5)].scm)), (yyvsp[(5) - (5)].scm)), @@ -3943,88 +5339,90 @@ all objects can be unprotected as soon as they're here. ;} break; - case 172: -#line 1334 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 282: +#line 2012 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_3 (ly_symbol2scm ("pop"), scm_string_to_symbol ((yyvsp[(2) - (3)].scm)), (yyvsp[(3) - (3)].scm)); ;} break; - case 173: -#line 1341 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 283: +#line 2019 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("consists"); ;} break; - case 174: -#line 1342 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 284: +#line 2020 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("remove"); ;} break; - case 175: -#line 1344 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 285: +#line 2022 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("accepts"); ;} break; - case 176: -#line 1345 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 286: +#line 2023 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("default-child"); ;} break; - case 177: -#line 1346 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 287: +#line 2024 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("denies"); ;} break; - case 178: -#line 1348 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 288: +#line 2026 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("alias"); ;} break; - case 179: -#line 1349 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 289: +#line 2027 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("translator-type"); ;} break; - case 180: -#line 1350 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 290: +#line 2028 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("description"); ;} break; - case 181: -#line 1351 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 291: +#line 2029 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("context-name"); ;} break; - case 182: -#line 1355 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 292: +#line 2033 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 183: -#line 1356 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 293: +#line 2034 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_2 ((yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 184: -#line 1359 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 294: +#line 2038 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - if (ly_symbol2scm ("consists") != (yyvsp[(1) - (2)].scm)) - { - (yyval.scm) = SCM_EOL; - PARSER->parser_error ((yylsp[(1) - (2)]), _ ("only \\consists takes non-string argument.")); - } - else - { - (yyval.scm) = scm_list_2 ((yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); - } + if (!scm_is_string ((yyvsp[(2) - (2)].scm)) + && ly_symbol2scm ("consists") != (yyvsp[(1) - (2)].scm) + && ly_symbol2scm ("remove") != (yyvsp[(1) - (2)].scm)) + { + (yyval.scm) = SCM_EOL; + parser->parser_error ((yylsp[(1) - (2)]), _ ("only \\consists and \\remove take non-string argument.")); + } + else + { + (yyval.scm) = scm_list_2 ((yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); + } ;} break; - case 185: -#line 1373 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 295: +#line 2054 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { if (!is_regular_identifier ((yyvsp[(1) - (1)].scm))) { @@ -4036,16 +5434,16 @@ all objects can be unprotected as soon as they're here. ;} break; - case 186: -#line 1382 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 296: +#line 2063 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_2 (scm_string_to_symbol ((yyvsp[(1) - (3)].scm)), scm_string_to_symbol ((yyvsp[(3) - (3)].scm))); ;} break; - case 187: -#line 1389 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 297: +#line 2070 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_append (scm_list_2 (scm_list_n (scm_car ((yyvsp[(2) - (5)].scm)), ly_symbol2scm ("OverrideProperty"), @@ -4055,8 +5453,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 188: -#line 1396 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 298: +#line 2077 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_4 (scm_car ((yyvsp[(2) - (3)].scm)), ly_symbol2scm ("RevertProperty"), @@ -4065,8 +5463,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 189: -#line 1402 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 299: +#line 2083 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_4 (scm_car ((yyvsp[(2) - (4)].scm)), ly_symbol2scm ("PropertySet"), @@ -4075,8 +5473,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 190: -#line 1408 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 300: +#line 2089 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_3 (scm_car ((yyvsp[(2) - (2)].scm)), ly_symbol2scm ("PropertyUnset"), @@ -4084,106 +5482,75 @@ all objects can be unprotected as soon as they're here. ;} break; - case 191: -#line 1416 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("property-operation"), scm_cons (PARSER->self_scm (), scm_cons2 (make_input ((yyloc)), SCM_BOOL_F, (yyvsp[(1) - (1)].scm)))); - ;} - break; - - case 192: -#line 1419 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 301: +#line 2097 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("property-operation"), scm_cons (PARSER->self_scm (), scm_cons2 (make_input ((yyloc)), SCM_BOOL_T, (yyvsp[(2) - (2)].scm)))); + (yyval.scm) = LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("property-operation"), scm_cons2 (parser->self_scm (), make_input ((yyloc)), (yyvsp[(1) - (1)].scm))); ;} break; - case 193: -#line 1425 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 302: +#line 2103 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 194: -#line 1428 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 303: +#line 2106 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 195: -#line 1431 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 304: +#line 2109 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_string_append (scm_list_2 ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm))); ;} break; - case 196: -#line 1436 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 197: -#line 1439 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 198: -#line 1442 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 199: -#line 1447 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 200: -#line 1450 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 201: -#line 1453 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 305: +#line 2114 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 202: -#line 1456 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 306: +#line 2117 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 203: -#line 1459 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 307: +#line 2120 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 204: -#line 1462 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 316: +#line 2141 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); + // Let the rhythmic music iterator sort this mess out. + if (scm_is_pair ((yyvsp[(2) - (2)].scm))) { + if (unsmob_pitch ((yyvsp[(1) - (2)].scm))) { + Music *n = MY_MAKE_MUSIC ("NoteEvent", (yylsp[(1) - (2)])); + n->set_property ("pitch", (yyvsp[(1) - (2)].scm)); + n->set_property ("duration", + parser->default_duration_.smobbed_copy ()); + (yyval.scm) = n->unprotect (); + } + unsmob_music ((yyval.scm))->set_property ("articulations", + scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); + } ;} break; - case 205: -#line 1471 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 317: +#line 2155 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { SCM elts = ly_append2 ((yyvsp[(1) - (2)].scm), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); @@ -4195,20 +5562,18 @@ all objects can be unprotected as soon as they're here. ;} break; - case 206: -#line 1480 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 318: +#line 2164 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Input i; i.set_location ((yylsp[(1) - (3)]), (yylsp[(3) - (3)])); (yyval.scm) = MAKE_SYNTAX ("repetition-chord", i, - PARSER->lexer_->chord_repetition_.last_chord_, - PARSER->lexer_->chord_repetition_.repetition_function_, (yyvsp[(2) - (3)].scm), scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL)); ;} break; - case 207: -#line 1488 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 319: +#line 2170 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Input i; i.set_location ((yylsp[(1) - (3)]), (yylsp[(3) - (3)])); @@ -4217,15 +5582,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 209: -#line 1499 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - PARSER->lexer_->chord_repetition_.last_chord_ = (yyval.scm); - ;} - break; - - case 210: -#line 1507 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 322: +#line 2183 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *m = unsmob_music ((yyvsp[(1) - (3)].scm)); SCM dur = unsmob_duration ((yyvsp[(2) - (3)].scm))->smobbed_copy (); @@ -4242,27 +5600,28 @@ all objects can be unprotected as soon as they're here. ;} break; - case 211: -#line 1525 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 323: +#line 2201 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MAKE_SYNTAX ("event-chord", (yyloc), scm_reverse_x ((yyvsp[(2) - (3)].scm), SCM_EOL)); ;} break; - case 212: -#line 1531 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 324: +#line 2207 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 213: -#line 1532 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 325: +#line 2208 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); + if (!SCM_UNBNDP ((yyvsp[(2) - (2)].scm))) + (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); ;} break; - case 214: -#line 1539 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 326: +#line 2216 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { int q = (yyvsp[(3) - (5)].i); int ex = (yyvsp[(2) - (5)].i); @@ -4290,11 +5649,10 @@ all objects can be unprotected as soon as they're here. ;} break; - case 215: -#line 1564 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 327: +#line 2241 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *n = MY_MAKE_MUSIC ("NoteEvent", (yyloc)); - n->set_property ("duration", (yyvsp[(2) - (2)].scm)); n->set_property ("drum-type", (yyvsp[(1) - (2)].scm)); if (scm_is_pair ((yyvsp[(2) - (2)].scm))) { @@ -4305,68 +5663,48 @@ all objects can be unprotected as soon as they're here. ;} break; - case 216: -#line 1575 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 328: +#line 2252 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = run_music_function (PARSER, (yyvsp[(1) - (1)].scm)); - ;} - break; + Music *m = unsmob_music ((yyvsp[(1) - (1)].scm)); - case 217: -#line 1580 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - 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 ((yyloc), "Music function applied to event may not have a Music argument, except as the last argument."); + while (m && m->is_mus_type ("music-wrapper-music")) { + (yyval.scm) = m->get_property ("element"); + m = unsmob_music ((yyval.scm)); } - ;} - break; - - case 218: -#line 1593 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = ly_append2 (scm_list_2 ((yyvsp[(1) - (4)].scm), make_input ((yyloc))), scm_reverse_x ((yyvsp[(3) - (4)].scm), scm_list_1 ((yyvsp[(4) - (4)].scm)))); - ;} - break; - case 219: -#line 1596 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = ly_append2 (scm_list_2 ((yyvsp[(1) - (2)].scm), make_input ((yyloc))), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); + if (!(m && m->is_mus_type ("rhythmic-event"))) { + parser->parser_error ((yyloc), _ ("not a rhythmic event")); + (yyval.scm) = SCM_UNDEFINED; + } ;} break; - case 220: -#line 1605 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 331: +#line 2278 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = ly_append2 (scm_list_2 ((yyvsp[(1) - (4)].scm), make_input ((yyloc))), scm_reverse_x ((yyvsp[(3) - (4)].scm), scm_list_1 ((yyvsp[(4) - (4)].scm)))); + (yyval.scm) = MAKE_SYNTAX ("music-function", (yyloc), + (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 221: -#line 1608 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 332: +#line 2285 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = ly_append2 (scm_list_2 ((yyvsp[(1) - (2)].scm), make_input ((yyloc))), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); + (yyval.scm) = MAKE_SYNTAX ("music-function", (yyloc), + (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 222: -#line 1614 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 333: +#line 2292 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 223: -#line 1617 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = MAKE_SYNTAX ("skip-music", (yyloc), (yyvsp[(2) - (2)].scm)); - ;} - break; - - case 224: -#line 1620 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 334: +#line 2295 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *m = MY_MAKE_MUSIC ("LigatureEvent", (yyloc)); m->set_property ("span-direction", scm_from_int (START)); @@ -4374,8 +5712,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 225: -#line 1625 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 335: +#line 2300 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *m = MY_MAKE_MUSIC ("LigatureEvent", (yyloc)); m->set_property ("span-direction", scm_from_int (STOP)); @@ -4383,17 +5721,17 @@ all objects can be unprotected as soon as they're here. ;} break; - case 226: -#line 1630 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 336: +#line 2305 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = MAKE_SYNTAX ("voice-separator", (yyloc), SCM_UNDEFINED); + (yyval.scm) = MAKE_SYNTAX ("voice-separator", (yyloc)); ;} break; - case 227: -#line 1633 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 337: +#line 2308 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM pipe = PARSER->lexer_->lookup_identifier ("pipeSymbol"); + SCM pipe = parser->lexer_->lookup_identifier ("pipeSymbol"); Music *m = unsmob_music (pipe); if (m) @@ -4403,108 +5741,51 @@ all objects can be unprotected as soon as they're here. (yyval.scm) = m->unprotect (); } else - (yyval.scm) = MAKE_SYNTAX ("bar-check", (yyloc), SCM_UNDEFINED); - - ;} - break; - - case 228: -#line 1647 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = MAKE_SYNTAX ("partial", (yyloc), (yyvsp[(2) - (2)].scm)); - ;} - break; - - case 229: -#line 1651 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - SCM proc = ly_lily_module_constant ("make-time-signature-set"); - - (yyval.scm) = scm_apply_2 (proc, scm_car ((yyvsp[(2) - (2)].scm)), scm_cdr ((yyvsp[(2) - (2)].scm)), SCM_EOL); - ;} - break; + (yyval.scm) = MAKE_SYNTAX ("bar-check", (yyloc)); - case 230: -#line 1656 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = MAKE_SYNTAX ("make-mark-set", (yyloc), (yyvsp[(2) - (2)].scm)); ;} break; - case 231: -#line 1662 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 338: +#line 2325 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = MY_MAKE_MUSIC ("PesOrFlexaEvent", (yyloc))->unprotect (); ;} break; - case 232: -#line 1665 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - Music *m = MY_MAKE_MUSIC ("MarkEvent", (yyloc)); - (yyval.scm) = m->unprotect (); - ;} - break; - - case 233: -#line 1669 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 339: +#line 2328 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 234: -#line 1672 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - Music *key = MY_MAKE_MUSIC ("KeyChangeEvent", (yyloc)); - (yyval.scm) = key->unprotect (); - ;} - break; - - case 235: -#line 1676 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - - Music *key = MY_MAKE_MUSIC ("KeyChangeEvent", (yyloc)); - if (scm_ilength ((yyvsp[(3) - (3)].scm)) > 0) - { - key->set_property ("pitch-alist", (yyvsp[(3) - (3)].scm)); - key->set_property ("tonic", Pitch (0, 0, 0).smobbed_copy ()); - key->transpose (* unsmob_pitch ((yyvsp[(2) - (3)].scm))); - } else { - PARSER->parser_error ((yylsp[(3) - (3)]), _ ("second argument must be pitch list")); - } - - (yyval.scm) = key->unprotect (); - ;} - break; - - case 236: -#line 1694 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 340: +#line 2335 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 237: -#line 1697 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 341: +#line 2338 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { unsmob_music ((yyvsp[(2) - (2)].scm))->set_spot ((yylsp[(2) - (2)])); (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyval.scm)); ;} break; - case 238: -#line 1704 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 342: +#line 2345 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 239: -#line 1707 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 343: +#line 2348 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = run_music_function (PARSER, (yyvsp[(2) - (2)].scm)); + (yyval.scm) = (yyvsp[(2) - (2)].scm); if ((yyvsp[(1) - (2)].i)) { unsmob_music ((yyval.scm))->set_property ("direction", scm_from_int ((yyvsp[(1) - (2)].i))); @@ -4512,26 +5793,26 @@ all objects can be unprotected as soon as they're here. ;} break; - case 240: -#line 1714 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 344: +#line 2355 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - if (!PARSER->lexer_->is_lyric_state ()) - PARSER->parser_error ((yylsp[(1) - (1)]), _ ("have to be in Lyric mode for lyrics")); + if (!parser->lexer_->is_lyric_state ()) + parser->parser_error ((yylsp[(1) - (1)]), _ ("have to be in Lyric mode for lyrics")); (yyval.scm) = MY_MAKE_MUSIC ("HyphenEvent", (yyloc))->unprotect (); ;} break; - case 241: -#line 1719 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 345: +#line 2360 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - if (!PARSER->lexer_->is_lyric_state ()) - PARSER->parser_error ((yylsp[(1) - (1)]), _ ("have to be in Lyric mode for lyrics")); + if (!parser->lexer_->is_lyric_state ()) + parser->parser_error ((yylsp[(1) - (1)]), _ ("have to be in Lyric mode for lyrics")); (yyval.scm) = MY_MAKE_MUSIC ("ExtenderEvent", (yyloc))->unprotect (); ;} break; - case 242: -#line 1724 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 346: +#line 2365 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { if ((yyvsp[(1) - (2)].i)) { @@ -4542,8 +5823,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 243: -#line 1732 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 347: +#line 2373 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { if ((yyvsp[(1) - (2)].i)) { @@ -4554,8 +5835,31 @@ all objects can be unprotected as soon as they're here. ;} break; - case 245: -#line 1744 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 349: +#line 2383 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(2) - (2)].scm); + unsmob_music ((yyval.scm))->set_property ("direction", scm_from_int (UP)); + ;} + break; + + case 350: +#line 2388 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(2) - (2)].scm); + unsmob_music ((yyval.scm))->set_property ("direction", scm_from_int (DOWN)); + ;} + break; + + case 352: +#line 2396 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(2) - (2)].scm); + ;} + break; + + case 353: +#line 2402 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *s = MY_MAKE_MUSIC ("StringNumberEvent", (yyloc)); s->set_property ("string-number", scm_from_int ((yyvsp[(1) - (1)].i))); @@ -4563,80 +5867,80 @@ all objects can be unprotected as soon as they're here. ;} break; - case 246: -#line 1752 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 354: +#line 2410 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("bracketOpenSymbol"); ;} break; - case 247: -#line 1755 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 355: +#line 2413 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("bracketCloseSymbol"); ;} break; - case 248: -#line 1758 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 356: +#line 2416 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("tildeSymbol"); ;} break; - case 249: -#line 1761 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 357: +#line 2419 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("parenthesisOpenSymbol"); ;} break; - case 250: -#line 1764 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 358: +#line 2422 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("parenthesisCloseSymbol"); ;} break; - case 251: -#line 1767 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 359: +#line 2425 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("escapedExclamationSymbol"); ;} break; - case 252: -#line 1770 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 360: +#line 2428 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("escapedParenthesisOpenSymbol"); ;} break; - case 253: -#line 1773 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 361: +#line 2431 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("escapedParenthesisCloseSymbol"); ;} break; - case 254: -#line 1776 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 362: +#line 2434 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("escapedBiggerSymbol"); ;} break; - case 255: -#line 1779 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 363: +#line 2437 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("escapedSmallerSymbol"); ;} break; - case 256: -#line 1785 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 364: +#line 2443 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM predefd = PARSER->lexer_->lookup_identifier_symbol ((yyvsp[(1) - (1)].scm)); + SCM predefd = parser->lexer_->lookup_identifier_symbol ((yyvsp[(1) - (1)].scm)); Music *m = 0; if (unsmob_music (predefd)) { @@ -4651,15 +5955,15 @@ all objects can be unprotected as soon as they're here. ;} break; - case 257: -#line 1799 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 365: +#line 2457 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 258: -#line 1802 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 366: +#line 2460 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *a = MY_MAKE_MUSIC ("TremoloEvent", (yyloc)); a->set_property ("tremolo-type", scm_from_int ((yyvsp[(1) - (1)].i))); @@ -4667,82 +5971,82 @@ all objects can be unprotected as soon as they're here. ;} break; - case 259: -#line 1810 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 368: +#line 2469 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 260: -#line 1813 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 369: +#line 2472 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM s = PARSER->lexer_->lookup_identifier ("dash" + ly_scm2string ((yyvsp[(1) - (1)].scm))); + SCM s = parser->lexer_->lookup_identifier ("dash" + ly_scm2string ((yyvsp[(1) - (1)].scm))); Music *a = MY_MAKE_MUSIC ("ArticulationEvent", (yyloc)); if (scm_is_string (s)) a->set_property ("articulation-type", s); - else PARSER->parser_error ((yylsp[(1) - (1)]), _ ("expecting string as script definition")); + else parser->parser_error ((yylsp[(1) - (1)]), _ ("expecting string as script definition")); (yyval.scm) = a->unprotect (); ;} break; - case 261: -#line 1824 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 370: +#line 2483 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 262: -#line 1825 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 371: +#line 2484 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_int (0); ;} break; - case 263: -#line 1826 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 372: +#line 2485 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_int (-(yyvsp[(2) - (2)].i)); ;} break; - case 264: -#line 1827 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 373: +#line 2486 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_int ((yyvsp[(2) - (2)].i)); ;} break; - case 265: -#line 1831 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 374: +#line 2490 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 1; ;} break; - case 266: -#line 1834 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 375: +#line 2493 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) ++; ;} break; - case 267: -#line 1840 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 376: +#line 2499 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 1; ;} break; - case 268: -#line 1843 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 377: +#line 2502 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i)++; ;} break; - case 269: -#line 1849 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 378: +#line 2508 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 270: -#line 1852 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 379: +#line 2511 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Pitch p = *unsmob_pitch ((yyvsp[(1) - (2)].scm)); p = p.transposed (Pitch ((yyvsp[(2) - (2)].i),0,0)); @@ -4750,8 +6054,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 271: -#line 1857 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 380: +#line 2516 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Pitch p =* unsmob_pitch ((yyvsp[(1) - (2)].scm)); p = p.transposed (Pitch (-(yyvsp[(2) - (2)].i),0,0)); @@ -4759,15 +6063,15 @@ all objects can be unprotected as soon as they're here. ;} break; - case 272: -#line 1869 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 381: +#line 2528 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 273: -#line 1872 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 382: +#line 2531 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Pitch p = *unsmob_pitch ((yyvsp[(1) - (2)].scm)); p = p.transposed (Pitch ((yyvsp[(2) - (2)].i),0,0)); @@ -4775,8 +6079,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 274: -#line 1877 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 383: +#line 2536 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Pitch p = *unsmob_pitch ((yyvsp[(1) - (2)].scm)); @@ -4785,15 +6089,15 @@ all objects can be unprotected as soon as they're here. ;} break; - case 275: -#line 1886 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 384: +#line 2545 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 278: -#line 1897 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 388: +#line 2557 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *t = MY_MAKE_MUSIC ("TextScriptEvent", (yyloc)); t->set_property ("text", (yyvsp[(1) - (1)].scm)); @@ -4801,8 +6105,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 279: -#line 1902 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 389: +#line 2562 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *t = MY_MAKE_MUSIC ("TextScriptEvent", (yyloc)); t->set_property ("text", @@ -4811,115 +6115,115 @@ all objects can be unprotected as soon as they're here. ;} break; - case 280: -#line 1908 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 390: +#line 2571 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *t = MY_MAKE_MUSIC ("FingeringEvent", (yyloc)); - t->set_property ("digit", scm_from_int ((yyvsp[(1) - (1)].i))); + t->set_property ("digit", (yyvsp[(1) - (1)].scm)); (yyval.scm) = t->unprotect (); ;} break; - case 281: -#line 1916 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 391: +#line 2579 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Hat"); ;} break; - case 282: -#line 1919 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 392: +#line 2582 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Plus"); ;} break; - case 283: -#line 1922 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 393: +#line 2585 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Dash"); ;} break; - case 284: -#line 1925 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 394: +#line 2588 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Bar"); ;} break; - case 285: -#line 1928 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 395: +#line 2591 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Larger"); ;} break; - case 286: -#line 1931 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 396: +#line 2594 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Dot"); ;} break; - case 287: -#line 1934 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 397: +#line 2597 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_locale_string ("Underscore"); ;} break; - case 288: -#line 1940 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 398: +#line 2603 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = DOWN; ;} break; - case 289: -#line 1941 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 399: +#line 2604 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = UP; ;} break; - case 290: -#line 1942 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 400: +#line 2605 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = CENTER; ;} break; - case 291: -#line 1947 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 401: +#line 2609 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 292: -#line 1953 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 402: +#line 2615 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); + (yyval.scm) = SCM_UNDEFINED; ;} break; - case 293: -#line 1959 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 403: +#line 2618 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - Duration dd = PARSER->default_duration_; - (yyval.scm) = dd.smobbed_copy (); + (yyval.scm) = (yyvsp[(1) - (1)].scm); + parser->default_duration_ = *unsmob_duration ((yyval.scm)); ;} break; - case 294: -#line 1963 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 404: +#line 2627 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - PARSER->default_duration_ = *unsmob_duration ((yyval.scm)); + if (SCM_UNBNDP ((yyval.scm))) + (yyval.scm) = parser->default_duration_.smobbed_copy (); ;} break; - case 295: -#line 1970 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 405: +#line 2634 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { int len = 0; if (!is_duration ((yyvsp[(1) - (2)].i))) - PARSER->parser_error ((yylsp[(1) - (2)]), _f ("not a duration: %d", (yyvsp[(1) - (2)].i))); + parser->parser_error ((yylsp[(1) - (2)]), _f ("not a duration: %d", (yyvsp[(1) - (2)].i))); else len = intlog2 ((yyvsp[(1) - (2)].i)); @@ -4927,8 +6231,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 296: -#line 1979 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 406: +#line 2643 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Duration *d = unsmob_duration ((yyvsp[(1) - (2)].scm)); Duration k (d->duration_log (), d->dot_count () + (yyvsp[(2) - (2)].i)); @@ -4938,22 +6242,22 @@ all objects can be unprotected as soon as they're here. ;} break; - case 297: -#line 1989 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 407: +#line 2653 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 298: -#line 1992 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 408: +#line 2656 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = unsmob_duration ((yyval.scm))->compressed ( (yyvsp[(3) - (3)].i)) .smobbed_copy (); ;} break; - case 299: -#line 1995 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 409: +#line 2659 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Rational m (scm_to_int (scm_car ((yyvsp[(3) - (3)].scm))), scm_to_int (scm_cdr ((yyvsp[(3) - (3)].scm)))); @@ -4961,97 +6265,76 @@ all objects can be unprotected as soon as they're here. ;} break; - case 300: -#line 2003 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} - break; - - case 301: -#line 2004 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = scm_cons (scm_from_int ((yyvsp[(1) - (3)].i)), scm_from_int ((yyvsp[(3) - (3)].i))); - ;} - break; - - case 302: -#line 2010 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 410: +#line 2667 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 0; ;} break; - case 303: -#line 2013 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 411: +#line 2670 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) ++; ;} break; - case 304: -#line 2019 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 412: +#line 2676 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 0; ;} break; - case 305: -#line 2022 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 413: +#line 2679 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { if (!is_duration ((yyvsp[(2) - (2)].i))) - PARSER->parser_error ((yylsp[(2) - (2)]), _f ("not a duration: %d", (yyvsp[(2) - (2)].i))); + parser->parser_error ((yylsp[(2) - (2)]), _f ("not a duration: %d", (yyvsp[(2) - (2)].i))); (yyval.i) = (yyvsp[(2) - (2)].i); ;} break; - case 306: -#line 2030 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); - ;} - break; - - case 307: -#line 2033 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); - ;} + case 414: +#line 2687 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 308: -#line 2036 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 415: +#line 2688 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 309: -#line 2037 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 416: +#line 2689 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 310: -#line 2041 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 417: +#line 2693 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_rational2scm (FLAT_ALTERATION); ;} break; - case 311: -#line 2042 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 418: +#line 2694 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_rational2scm (SHARP_ALTERATION); ;} break; - case 312: -#line 2043 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 419: +#line 2695 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_int (0); ;} break; - case 313: -#line 2047 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 420: +#line 2699 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *bfr = MY_MAKE_MUSIC ("BassFigureEvent", (yyloc)); (yyval.scm) = bfr->unprotect (); ;} break; - case 314: -#line 2051 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 421: +#line 2703 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *bfr = MY_MAKE_MUSIC ("BassFigureEvent", (yyloc)); (yyval.scm) = bfr->self_scm (); @@ -5065,16 +6348,16 @@ all objects can be unprotected as soon as they're here. ;} break; - case 315: -#line 2062 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 422: +#line 2714 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (2)].scm); unsmob_music ((yyvsp[(1) - (2)].scm))->set_property ("bracket-stop", SCM_BOOL_T); ;} break; - case 316: -#line 2066 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 423: +#line 2718 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *m = unsmob_music ((yyvsp[(1) - (2)].scm)); if (scm_to_double ((yyvsp[(2) - (2)].scm))) { @@ -5088,8 +6371,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 317: -#line 2077 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 424: +#line 2729 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *m = unsmob_music ((yyvsp[(1) - (2)].scm)); if ((yyvsp[(2) - (2)].scm) == ly_symbol2scm ("plus")) @@ -5111,112 +6394,118 @@ all objects can be unprotected as soon as they're here. ;} break; - case 318: -#line 2100 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 425: +#line 2752 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("plus"); ;} break; - case 319: -#line 2103 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 426: +#line 2755 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("exclamation"); ;} break; - case 320: -#line 2106 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 427: +#line 2758 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("slash"); ;} break; - case 321: -#line 2109 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 428: +#line 2761 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("backslash"); ;} break; - case 322: -#line 2115 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 429: +#line 2767 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 323: -#line 2118 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 430: +#line 2770 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(2) - (2)].scm); unsmob_music ((yyval.scm))->set_property ("bracket-start", SCM_BOOL_T); ;} break; - case 324: -#line 2125 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 431: +#line 2777 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 325: -#line 2128 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 432: +#line 2780 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); ;} break; - case 326: -#line 2134 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 433: +#line 2786 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_reverse_x ((yyvsp[(2) - (3)].scm), SCM_EOL); ;} break; - case 327: -#line 2141 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 434: +#line 2793 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 0; ;} break; - case 328: -#line 2142 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 435: +#line 2794 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 1; ;} break; - case 329: -#line 2146 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 436: +#line 2798 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - if (!PARSER->lexer_->is_note_state ()) - PARSER->parser_error ((yylsp[(1) - (6)]), _ ("have to be in Note mode for notes")); - - Music *n = 0; - if ((yyvsp[(6) - (6)].i)) - n = MY_MAKE_MUSIC ("RestEvent", (yyloc)); - else - n = MY_MAKE_MUSIC ("NoteEvent", (yyloc)); - - n->set_property ("pitch", (yyvsp[(1) - (6)].scm)); - n->set_property ("duration", (yyvsp[(5) - (6)].scm)); - - if (scm_is_number ((yyvsp[(4) - (6)].scm))) + if (!parser->lexer_->is_note_state ()) + parser->parser_error ((yylsp[(1) - (6)]), _ ("have to be in Note mode for notes")); + if ((yyvsp[(2) - (6)].i) || (yyvsp[(3) - (6)].i) || scm_is_number ((yyvsp[(4) - (6)].scm)) || !SCM_UNBNDP ((yyvsp[(5) - (6)].scm)) || (yyvsp[(6) - (6)].i)) { - int q = scm_to_int ((yyvsp[(4) - (6)].scm)); - n->set_property ("absolute-octave", scm_from_int (q-1)); + Music *n = 0; + if ((yyvsp[(6) - (6)].i)) + n = MY_MAKE_MUSIC ("RestEvent", (yyloc)); + else + n = MY_MAKE_MUSIC ("NoteEvent", (yyloc)); + + n->set_property ("pitch", (yyvsp[(1) - (6)].scm)); + if (SCM_UNBNDP ((yyvsp[(5) - (6)].scm))) + n->set_property ("duration", + parser->default_duration_.smobbed_copy ()); + else + n->set_property ("duration", (yyvsp[(5) - (6)].scm)); + + if (scm_is_number ((yyvsp[(4) - (6)].scm))) + { + int q = scm_to_int ((yyvsp[(4) - (6)].scm)); + n->set_property ("absolute-octave", scm_from_int (q-1)); + } + + if ((yyvsp[(3) - (6)].i) % 2) + n->set_property ("cautionary", SCM_BOOL_T); + if ((yyvsp[(2) - (6)].i) % 2 || (yyvsp[(3) - (6)].i) % 2) + n->set_property ("force-accidental", SCM_BOOL_T); + + (yyval.scm) = n->unprotect (); } - - if ((yyvsp[(3) - (6)].i) % 2) - n->set_property ("cautionary", SCM_BOOL_T); - if ((yyvsp[(2) - (6)].i) % 2 || (yyvsp[(3) - (6)].i) % 2) - n->set_property ("force-accidental", SCM_BOOL_T); - - (yyval.scm) = n->unprotect (); ;} break; - case 330: -#line 2172 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 437: +#line 2830 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *n = MY_MAKE_MUSIC ("NoteEvent", (yyloc)); n->set_property ("duration", (yyvsp[(2) - (2)].scm)); @@ -5226,8 +6515,8 @@ all objects can be unprotected as soon as they're here. ;} break; - case 331: -#line 2179 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 438: +#line 2837 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Music *ev = 0; if (ly_scm2string ((yyvsp[(1) - (2)].scm)) == "s") { @@ -5243,575 +6532,583 @@ all objects can be unprotected as soon as they're here. ;} break; - case 332: -#line 2192 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 439: +#line 2853 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (!parser->lexer_->is_chord_state ()) + parser->parser_error ((yylsp[(1) - (1)]), _ ("have to be in Chord mode for chords")); + (yyval.scm) = (yyvsp[(1) - (1)].scm); + ;} + break; + + case 440: +#line 2858 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - if (!PARSER->lexer_->is_lyric_state ()) - PARSER->parser_error ((yylsp[(1) - (2)]), _ ("have to be in Lyric mode for lyrics")); + for (SCM s = (yyvsp[(1) - (2)].scm); scm_is_pair (s); s = scm_cdr (s)) + { + unsmob_music (scm_car (s))->set_property ("duration", (yyvsp[(2) - (2)].scm)); + } + (yyval.scm) = (yyvsp[(1) - (2)].scm); + ;} + break; - Music *levent = MY_MAKE_MUSIC ("LyricEvent", (yyloc)); - levent->set_property ("text", (yyvsp[(1) - (2)].scm)); - levent->set_property ("duration",(yyvsp[(2) - (2)].scm)); - (yyval.scm)= levent->unprotect (); + case 441: +#line 2868 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 333: -#line 2204 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 442: +#line 2871 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_list_1 ((yyvsp[(1) - (1)].scm)); + (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 334: -#line 2207 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 444: +#line 2878 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - if (!PARSER->lexer_->is_chord_state ()) - PARSER->parser_error ((yylsp[(1) - (1)]), _ ("have to be in Chord mode for chords")); - (yyval.scm) = (yyvsp[(1) - (1)].scm); + (yyval.scm) = MAKE_SYNTAX ("lyric-event", (yyloc), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); + if (scm_is_pair ((yyvsp[(3) - (3)].scm))) + unsmob_music ((yyval.scm))->set_property + ("articulations", scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL)); ;} break; - case 335: -#line 2212 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 445: +#line 2884 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - for (SCM s = (yyvsp[(1) - (2)].scm); scm_is_pair (s); s = scm_cdr (s)) - { - unsmob_music (scm_car (s))->set_property ("duration", (yyvsp[(2) - (2)].scm)); - } - (yyval.scm) = (yyvsp[(1) - (2)].scm); + (yyval.scm) = MAKE_SYNTAX ("lyric-event", (yyloc), (yyvsp[(1) - (3)].scm), + parser->default_duration_.smobbed_copy ()); + unsmob_music ((yyval.scm))->set_property + ("articulations", scm_cons ((yyvsp[(2) - (3)].scm), scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL))); ;} break; - case 336: -#line 2222 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 446: +#line 2890 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); + (yyval.scm) = MAKE_SYNTAX ("lyric-event", (yyloc), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); + if (scm_is_pair ((yyvsp[(3) - (3)].scm))) + unsmob_music ((yyval.scm))->set_property + ("articulations", scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL)); ;} break; - case 337: -#line 2225 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 447: +#line 2900 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); + (yyval.scm) = MAKE_SYNTAX ("lyric-event", (yyloc), (yyvsp[(1) - (3)].scm), (yyvsp[(2) - (3)].scm)); + if (scm_is_pair ((yyvsp[(3) - (3)].scm))) + unsmob_music ((yyval.scm))->set_property + ("articulations", scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL)); ;} break; - case 338: -#line 2231 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 448: +#line 2909 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = make_chord_elements ((yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm), SCM_EOL); + (yyval.scm) = make_chord_elements ((yyloc), (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm), SCM_EOL); ;} break; - case 339: -#line 2234 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 449: +#line 2912 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { SCM its = scm_reverse_x ((yyvsp[(4) - (4)].scm), SCM_EOL); - (yyval.scm) = make_chord_elements ((yyvsp[(1) - (4)].scm), (yyvsp[(2) - (4)].scm), scm_cons ((yyvsp[(3) - (4)].scm), its)); + (yyval.scm) = make_chord_elements ((yyloc), (yyvsp[(1) - (4)].scm), (yyvsp[(2) - (4)].scm), scm_cons ((yyvsp[(3) - (4)].scm), its)); ;} break; - case 340: -#line 2241 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 450: +#line 2919 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 341: -#line 2244 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 451: +#line 2922 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyval.scm)); ;} break; - case 342: -#line 2250 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 452: +#line 2928 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("chord-colon"); ;} break; - case 343: -#line 2253 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 453: +#line 2931 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = ly_symbol2scm ("chord-caret"); ;} break; - case 344: -#line 2256 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 454: +#line 2934 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_2 (ly_symbol2scm ("chord-slash"), (yyvsp[(2) - (2)].scm)); ;} break; - case 345: -#line 2259 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 455: +#line 2937 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_2 (ly_symbol2scm ("chord-bass"), (yyvsp[(2) - (2)].scm)); ;} break; - case 346: -#line 2265 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 456: +#line 2943 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 347: -#line 2268 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 457: +#line 2946 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_reverse_x ((yyvsp[(1) - (1)].scm), SCM_EOL); ;} break; - case 348: -#line 2271 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 458: +#line 2949 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 349: -#line 2277 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 459: +#line 2955 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(1) - (1)].scm), SCM_EOL); ;} break; - case 350: -#line 2278 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 460: +#line 2956 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyval.scm)); ;} break; - case 351: -#line 2284 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 461: +#line 2962 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = make_chord_step ((yyvsp[(1) - (1)].i), 0); ;} break; - case 352: -#line 2287 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 462: +#line 2965 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = make_chord_step ((yyvsp[(1) - (2)].i), SHARP_ALTERATION); ;} break; - case 353: -#line 2290 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 463: +#line 2968 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = make_chord_step ((yyvsp[(1) - (2)].i), FLAT_ALTERATION); ;} break; - case 354: -#line 2296 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 464: +#line 2974 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); ;} break; - case 355: -#line 2299 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 465: +#line 2977 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons (scm_from_int ((yyvsp[(1) - (3)].i)), scm_from_int ((yyvsp[(3) - (3)].i))); ;} break; - case 356: -#line 2311 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 466: +#line 2989 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_sum ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 357: -#line 2314 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 467: +#line 2992 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_difference ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 359: -#line 2321 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 469: +#line 2999 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 360: -#line 2324 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 470: +#line 3002 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_product ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 361: -#line 2327 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 471: +#line 3005 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_divide ((yyvsp[(1) - (3)].scm), (yyvsp[(3) - (3)].scm)); ;} break; - case 362: -#line 2333 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 472: +#line 3011 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { /* %prec UNARY_MINUS */ (yyval.scm) = scm_difference ((yyvsp[(2) - (2)].scm), SCM_UNDEFINED); ;} break; - case 364: -#line 2341 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); - ;} - break; - - case 365: -#line 2344 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 366: -#line 2347 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = (yyvsp[(1) - (1)].scm); - ;} - break; - - case 367: -#line 2350 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = scm_from_double (scm_to_double ((yyvsp[(1) - (2)].scm)) *scm_to_double ((yyvsp[(2) - (2)].scm))); - ;} - break; - - case 368: -#line 2353 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { - (yyval.scm) = scm_from_double ((yyvsp[(1) - (2)].i) *scm_to_double ((yyvsp[(2) - (2)].scm))); - ;} - break; - - case 369: -#line 2360 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 475: +#line 3020 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.i) = (yyvsp[(1) - (1)].i); + (yyval.scm) = scm_product ((yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 370: -#line 2363 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 476: +#line 3023 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.i) = (yyvsp[(1) - (1)].i); + (yyval.scm) = scm_product ((yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 371: -#line 2369 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { (yyval.scm) = scm_from_int ((yyvsp[(1) - (1)].i)); ;} - break; - - case 372: -#line 2370 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 480: +#line 3035 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = (yyvsp[(1) - (1)].scm); + (yyval.i) = scm_to_int ((yyvsp[(1) - (1)].scm)); ;} break; - case 373: -#line 2376 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 483: +#line 3046 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 0; ;} break; - case 374: -#line 2377 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 484: +#line 3047 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) ++; ;} break; - case 375: -#line 2381 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 485: +#line 3051 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) = 0; ;} break; - case 376: -#line 2382 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 486: +#line 3052 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.i) ++; ;} break; - case 377: -#line 2390 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 487: +#line 3060 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 378: -#line 2394 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_markup_state (); ;} + case 488: +#line 3064 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_markup_state (); ;} break; - case 379: -#line 2395 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 489: +#line 3065 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(3) - (3)].scm); - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); ;} break; - case 380: -#line 2402 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 490: +#line 3072 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 381: -#line 2406 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_markup_state (); ;} + case 491: +#line 3076 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_markup_state (); ;} break; - case 382: -#line 2407 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 492: +#line 3077 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(3) - (3)].scm); - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); ;} break; - case 383: -#line 2414 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 493: +#line 3084 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 384: -#line 2418 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" - { PARSER->lexer_->push_markup_state (); ;} + case 494: +#line 3088 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { parser->lexer_->push_markup_state (); ;} break; - case 385: -#line 2419 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 495: +#line 3089 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(3) - (3)].scm); - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); ;} break; - case 386: -#line 2426 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 496: +#line 3096 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_2 (ly_lily_module_constant ("line-markup"), (yyvsp[(1) - (1)].scm)); ;} break; - case 387: -#line 2429 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 497: +#line 3099 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_car (scm_call_2 (ly_lily_module_constant ("map-markup-command-list"), (yyvsp[(1) - (2)].scm), scm_list_1 ((yyvsp[(2) - (2)].scm)))); ;} break; - case 388: -#line 2432 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 498: +#line 3102 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 389: -#line 2438 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 499: +#line 3109 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + if (Text_interface::is_markup ((yyvsp[(1) - (1)].scm))) + MYBACKUP (MARKUP_IDENTIFIER, (yyvsp[(1) - (1)].scm), (yylsp[(1) - (1)])); + else if (Text_interface::is_markup_list ((yyvsp[(1) - (1)].scm))) + MYBACKUP (MARKUPLIST_IDENTIFIER, (yyvsp[(1) - (1)].scm), (yylsp[(1) - (1)])); + else { + parser->parser_error ((yylsp[(1) - (1)]), _ ("not a markup")); + MYBACKUP (MARKUP_IDENTIFIER, scm_string (SCM_EOL), (yylsp[(1) - (1)])); + } + ;} + break; + + case 501: +#line 3123 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 390: -#line 2441 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 502: +#line 3126 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 391: -#line 2444 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 503: +#line 3129 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 392: -#line 2447 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 504: +#line 3132 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_1 ((yyvsp[(1) - (1)].scm)); ;} break; - case 393: -#line 2453 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 505: +#line 3136 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(2) - (2)].scm); + ;} + break; + + case 506: +#line 3142 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_call_2 (ly_lily_module_constant ("map-markup-command-list"), (yyvsp[(1) - (2)].scm), (yyvsp[(2) - (2)].scm)); ;} break; - case 394: -#line 2460 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 507: +#line 3149 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_reverse_x ((yyvsp[(2) - (3)].scm), SCM_EOL); ;} break; - case 395: -#line 2466 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 508: +#line 3155 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 396: -#line 2467 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 509: +#line 3156 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); ;} break; - case 397: -#line 2470 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 510: +#line 3159 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_reverse_x ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); ;} break; - case 398: -#line 2476 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 511: +#line 3165 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(1) - (2)].scm), scm_reverse_x((yyvsp[(2) - (2)].scm), SCM_EOL)); ;} break; - case 399: -#line 2482 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 512: +#line 3171 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 400: -#line 2485 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 513: +#line 3174 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); + (yyval.scm) = check_scheme_arg (parser, (yylsp[(3) - (3)]), (yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm), (yyvsp[(1) - (3)].scm)); ;} break; - case 401: -#line 2488 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 514: +#line 3177 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = SCM_EOL; ;} break; - case 402: -#line 2494 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 515: +#line 3183 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 403: -#line 2495 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 516: +#line 3184 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(3) - (3)].scm), (yyvsp[(2) - (3)].scm)); ;} break; - case 404: -#line 2501 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 517: +#line 3190 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(1) - (3)].scm), scm_reverse_x ((yyvsp[(3) - (3)].scm), SCM_EOL)); ;} break; - case 405: -#line 2507 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 518: +#line 3196 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_list_1 ((yyvsp[(1) - (1)].scm)); ;} break; - case 406: -#line 2510 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 519: +#line 3199 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(2) - (2)].scm), (yyvsp[(1) - (2)].scm)); ;} break; - case 407: -#line 2516 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 520: +#line 3205 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = make_simple_markup ((yyvsp[(1) - (1)].scm)); ;} break; - case 408: -#line 2519 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 521: +#line 3208 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 409: -#line 2522 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 522: +#line 3211 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 410: -#line 2525 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 523: +#line 3214 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} break; - case 411: -#line 2528 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 524: +#line 3217 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { - SCM nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); ;} break; - case 412: -#line 2531 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 525: +#line 3220 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Score * sc = (yyvsp[(4) - (5)].score); (yyval.scm) = scm_list_2 (ly_lily_module_constant ("score-markup"), sc->self_scm ()); sc->unprotect (); - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); ;} break; - case 413: -#line 2537 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 526: +#line 3226 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = scm_cons ((yyvsp[(1) - (2)].scm), scm_reverse_x ((yyvsp[(2) - (2)].scm), SCM_EOL)); ;} break; - case 414: -#line 2543 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 527: +#line 3230 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" + { + (yyval.scm) = (yyvsp[(2) - (2)].scm); + ;} + break; + + case 528: +#line 3236 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { SCM mapper = ly_lily_module_constant ("map-markup-command-list"); (yyval.scm) = scm_car (scm_call_2 (mapper, (yyvsp[(1) - (2)].scm), scm_list_1 ((yyvsp[(2) - (2)].scm)))); ;} break; - case 415: -#line 2547 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" + case 529: +#line 3240 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { (yyval.scm) = (yyvsp[(1) - (1)].scm); ;} @@ -5819,7 +7116,7 @@ all objects can be unprotected as soon as they're here. /* Line 1267 of yacc.c. */ -#line 5823 "out/parser.cc" +#line 7120 "out/parser.cc" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -5855,7 +7152,7 @@ yyerrlab: { ++yynerrs; #if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); + yyerror (&yylloc, parser, YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); @@ -5879,11 +7176,11 @@ yyerrlab: if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); + yyerror (&yylloc, parser, yymsg); } else { - yyerror (YY_("syntax error")); + yyerror (&yylloc, parser, YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } @@ -5907,7 +7204,7 @@ yyerrlab: else { yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc); + yytoken, &yylval, &yylloc, parser); yychar = YYEMPTY; } } @@ -5964,7 +7261,7 @@ yyerrlab1: yyerror_range[0] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp); + yystos[yystate], yyvsp, yylsp, parser); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -6007,7 +7304,7 @@ yyabortlab: | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: - yyerror (YY_("memory exhausted")); + yyerror (&yylloc, parser, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif @@ -6015,7 +7312,7 @@ yyexhaustedlab: yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, &yylloc); + yytoken, &yylval, &yylloc, parser); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); @@ -6023,7 +7320,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp); + yystos[*yyssp], yyvsp, yylsp, parser); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6039,7 +7336,7 @@ yyreturn: } -#line 2552 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 3245 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" void @@ -6051,7 +7348,7 @@ Lily_parser::set_yydebug (bool x) void Lily_parser::do_yyparse () { - yyparse ((void*)this); + yyparse (this); } @@ -6102,11 +7399,12 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid) unsmob_music (*destination)-> set_property ("origin", make_input (last_input_)); - bool is_event = scm_memq (ly_symbol2scm ("event"), mus->get_property ("types")) - != SCM_BOOL_F; - + bool is_event = mus->is_mus_type ("post-event"); mus->unprotect (); return is_event ? EVENT_IDENTIFIER : MUSIC_IDENTIFIER; + } else if (unsmob_pitch (sid)) { + *destination = unsmob_pitch (sid)->smobbed_copy (); + return PITCH_IDENTIFIER; } else if (unsmob_duration (sid)) { *destination = unsmob_duration (sid)->smobbed_copy (); return DURATION_IDENTIFIER; @@ -6124,7 +7422,7 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid) return MARKUP_IDENTIFIER; } else if (Text_interface::is_markup_list (sid)) { *destination = sid; - return MARKUPLINES_IDENTIFIER; + return MARKUPLIST_IDENTIFIER; } return -1; @@ -6146,25 +7444,27 @@ get_next_unique_lyrics_context_id () return scm_from_locale_string (s); } - -SCM -run_music_function (Lily_parser *parser, SCM expr) +SCM check_scheme_arg (Lily_parser *parser, Input loc, + SCM arg, SCM args, SCM pred) { - SCM func = scm_car (expr); - Input *loc = unsmob_input (scm_cadr (expr)); - SCM args = scm_cddr (expr); - SCM sig = scm_object_property (func, ly_symbol2scm ("music-function-signature")); - - SCM type_check_proc = ly_lily_module_constant ("type-check-list"); + args = scm_cons (arg, args); + if (scm_is_true (scm_call_1 (pred, arg))) + return args; + scm_set_cdr_x (scm_last_pair (args), SCM_EOL); + MAKE_SYNTAX ("argument-error", loc, scm_length (args), pred, arg); + scm_set_cdr_x (scm_last_pair (args), SCM_BOOL_F); + return args; +} - if (!to_boolean (scm_call_3 (type_check_proc, scm_cadr (expr), sig, args))) +SCM loc_on_music (Input loc, SCM arg) +{ + if (Music *m = unsmob_music (arg)) { - parser->error_level_ = 1; - return LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("void-music"), scm_list_2 (parser->self_scm (), make_input (*loc))); + m = m->clone (); + m->set_spot (loc); + return m->unprotect (); } - - SCM syntax_args = scm_list_4 (parser->self_scm (), make_input (*loc), func, args); - return LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("music-function"), syntax_args); + return arg; } bool @@ -6194,19 +7494,6 @@ make_music_with_input (SCM name, Input where) return m; } -SCM -get_first_context_id (SCM type, Music *m) -{ - SCM id = m->get_property ("context-id"); - if (SCM_BOOL_T == scm_equal_p (m->get_property ("context-type"), type) - && scm_is_string (m->get_property ("context-id")) - && scm_c_string_length (id) > 0) - { - return id; - } - return SCM_EOL; -} - SCM make_simple_markup (SCM a) { @@ -6241,41 +7528,23 @@ make_chord_step (int step, Rational alter) SCM -make_chord_elements (SCM pitch, SCM dur, SCM modification_list) +make_chord_elements (Input loc, SCM pitch, SCM dur, SCM modification_list) { SCM chord_ctor = ly_lily_module_constant ("construct-chord-elements"); - return scm_call_3 (chord_ctor, pitch, dur, modification_list); -} - - -/* Todo: actually also use apply iso. call too ... */ -bool -ly_input_procedure_p (SCM x) -{ - return ly_is_procedure (x) - || (scm_is_pair (x) && ly_is_procedure (scm_car (x))); -} - -SCM -make_music_relative (Pitch start, SCM music, Input loc) -{ - Music *relative = MY_MAKE_MUSIC ("RelativeOctaveMusic", loc); - relative->set_property ("element", music); - - Music *m = unsmob_music (music); - Pitch last = m->to_relative_octave (start); - if (lily_1_8_relative) - m->set_property ("last-pitch", last.smobbed_copy ()); - return relative->unprotect (); + SCM res = scm_call_3 (chord_ctor, pitch, dur, modification_list); + for (SCM s = res; scm_is_pair (s); s = scm_cdr (s)) + { + unsmob_music (scm_car (s))->set_spot (loc); + } + return res; } int -yylex (YYSTYPE *s, YYLTYPE *loc, void *v) +yylex (YYSTYPE *s, YYLTYPE *loc, Lily_parser *parser) { - Lily_parser *pars = (Lily_parser*) v; - Lily_lexer *lex = pars->lexer_; + Lily_lexer *lex = parser->lexer_; - lex->lexval_ = (void*) s; + lex->lexval_ = s; lex->lexloc_ = loc; lex->prepare_for_next_token (); return lex->yylex (); diff --git a/lily/out/parser.hh b/lily/out/parser.hh index 122e9937a0..365da7b6b9 100644 --- a/lily/out/parser.hh +++ b/lily/out/parser.hh @@ -39,275 +39,272 @@ /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { - PREC_TOP = 258, - ADDLYRICS = 259, - PREC_BOT = 260, - ACCEPTS = 261, - ALIAS = 262, - ALTERNATIVE = 263, - BOOK = 264, - BOOKPART = 265, - CHANGE = 266, - CHORDMODE = 267, - CHORDS = 268, - CONSISTS = 269, - CONTEXT = 270, - DEFAULT = 271, - DEFAULTCHILD = 272, - DENIES = 273, - DESCRIPTION = 274, - DRUMMODE = 275, - DRUMS = 276, - FIGUREMODE = 277, - FIGURES = 278, - GROBDESCRIPTIONS = 279, - HEADER = 280, - INVALID = 281, - KEY = 282, - LAYOUT = 283, - LYRICMODE = 284, - LYRICS = 285, - LYRICSTO = 286, - MARK = 287, - MARKUP = 288, - MARKUPLINES = 289, - MIDI = 290, - NAME = 291, - NOTEMODE = 292, - OCTAVE = 293, - ONCE = 294, - OVERRIDE = 295, - PAPER = 296, - PARTIAL = 297, - RELATIVE = 298, - REMOVE = 299, - REPEAT = 300, - REST = 301, - REVERT = 302, - SCORE = 303, - SEQUENTIAL = 304, - SET = 305, - SIMULTANEOUS = 306, - SKIP = 307, - TEMPO = 308, - TIMES = 309, - TRANSPOSE = 310, - TYPE = 311, - UNSET = 312, - WITH = 313, - TIME_T = 314, - NEWCONTEXT = 315, - CHORD_BASS = 316, - CHORD_CARET = 317, - CHORD_COLON = 318, - CHORD_MINUS = 319, - CHORD_SLASH = 320, - ANGLE_OPEN = 321, - ANGLE_CLOSE = 322, - DOUBLE_ANGLE_OPEN = 323, - DOUBLE_ANGLE_CLOSE = 324, - E_BACKSLASH = 325, - E_ANGLE_CLOSE = 326, - E_CHAR = 327, - E_CLOSE = 328, - E_EXCLAMATION = 329, - E_BRACKET_OPEN = 330, - E_OPEN = 331, - E_BRACKET_CLOSE = 332, - E_ANGLE_OPEN = 333, - E_PLUS = 334, - E_TILDE = 335, - EXTENDER = 336, - FIGURE_CLOSE = 337, - FIGURE_OPEN = 338, - FIGURE_SPACE = 339, - HYPHEN = 340, - CHORDMODIFIERS = 341, - LYRIC_MARKUP = 342, - MULTI_MEASURE_REST = 343, - DIGIT = 344, - E_UNSIGNED = 345, - UNSIGNED = 346, - EXPECT_MARKUP = 347, - EXPECT_MUSIC = 348, - EXPECT_SCM = 349, - EXPECT_MARKUP_LIST = 350, + PREC_BOT = 258, + REPEAT = 259, + ALTERNATIVE = 260, + COMPOSITE = 261, + ADDLYRICS = 262, + DEFAULT = 263, + FUNCTION_ARGLIST = 264, + DURATION_IDENTIFIER = 265, + REAL = 266, + UNSIGNED = 267, + TONICNAME_PITCH = 268, + NOTENAME_PITCH = 269, + PITCH_IDENTIFIER = 270, + NUMBER_IDENTIFIER = 271, + PREC_TOP = 272, + ACCEPTS = 273, + ALIAS = 274, + BOOK = 275, + BOOKPART = 276, + CHANGE = 277, + CHORDMODE = 278, + CHORDS = 279, + CONSISTS = 280, + CONTEXT = 281, + DEFAULTCHILD = 282, + DENIES = 283, + DESCRIPTION = 284, + DRUMMODE = 285, + DRUMS = 286, + FIGUREMODE = 287, + FIGURES = 288, + HEADER = 289, + INVALID = 290, + LAYOUT = 291, + LYRICMODE = 292, + LYRICS = 293, + LYRICSTO = 294, + MARKUP = 295, + MARKUPLIST = 296, + MIDI = 297, + NAME = 298, + NOTEMODE = 299, + OVERRIDE = 300, + PAPER = 301, + REMOVE = 302, + REST = 303, + REVERT = 304, + SCORE = 305, + SEQUENTIAL = 306, + SET = 307, + SIMULTANEOUS = 308, + TEMPO = 309, + TYPE = 310, + UNSET = 311, + WITH = 312, + NEWCONTEXT = 313, + CHORD_BASS = 314, + CHORD_CARET = 315, + CHORD_COLON = 316, + CHORD_MINUS = 317, + CHORD_SLASH = 318, + ANGLE_OPEN = 319, + ANGLE_CLOSE = 320, + DOUBLE_ANGLE_OPEN = 321, + DOUBLE_ANGLE_CLOSE = 322, + E_BACKSLASH = 323, + E_ANGLE_CLOSE = 324, + E_CHAR = 325, + E_CLOSE = 326, + E_EXCLAMATION = 327, + E_BRACKET_OPEN = 328, + E_OPEN = 329, + E_BRACKET_CLOSE = 330, + E_ANGLE_OPEN = 331, + E_PLUS = 332, + E_TILDE = 333, + EXTENDER = 334, + FIGURE_CLOSE = 335, + FIGURE_OPEN = 336, + FIGURE_SPACE = 337, + HYPHEN = 338, + CHORDMODIFIERS = 339, + LYRIC_MARKUP = 340, + MULTI_MEASURE_REST = 341, + E_UNSIGNED = 342, + EXPECT_MARKUP = 343, + EXPECT_PITCH = 344, + EXPECT_DURATION = 345, + EXPECT_SCM = 346, + BACKUP = 347, + REPARSE = 348, + EXPECT_MARKUP_LIST = 349, + EXPECT_OPTIONAL = 350, EXPECT_NO_MORE_ARGS = 351, - BOOK_IDENTIFIER = 352, - CHORDMODIFIER_PITCH = 353, - CHORD_MODIFIER = 354, - CHORD_REPETITION = 355, - CONTEXT_DEF_IDENTIFIER = 356, - CONTEXT_MOD_IDENTIFIER = 357, - DRUM_PITCH = 358, - DURATION_IDENTIFIER = 359, + EMBEDDED_LILY = 352, + BOOK_IDENTIFIER = 353, + CHORDMODIFIER_PITCH = 354, + CHORD_MODIFIER = 355, + CHORD_REPETITION = 356, + CONTEXT_DEF_IDENTIFIER = 357, + CONTEXT_MOD_IDENTIFIER = 358, + DRUM_PITCH = 359, EVENT_IDENTIFIER = 360, - FRACTION = 361, - LYRICS_STRING = 362, - LYRIC_MARKUP_IDENTIFIER = 363, - MARKUP_FUNCTION = 364, - MARKUP_LIST_FUNCTION = 365, - MARKUP_IDENTIFIER = 366, - MARKUPLINES_IDENTIFIER = 367, - MUSIC_FUNCTION = 368, - MUSIC_IDENTIFIER = 369, - NOTENAME_PITCH = 370, - NUMBER_IDENTIFIER = 371, + EVENT_FUNCTION = 361, + FRACTION = 362, + LYRICS_STRING = 363, + LYRIC_ELEMENT = 364, + LYRIC_MARKUP_IDENTIFIER = 365, + MARKUP_FUNCTION = 366, + MARKUP_LIST_FUNCTION = 367, + MARKUP_IDENTIFIER = 368, + MARKUPLIST_IDENTIFIER = 369, + MUSIC_FUNCTION = 370, + MUSIC_IDENTIFIER = 371, OUTPUT_DEF_IDENTIFIER = 372, - REAL = 373, - RESTNAME = 374, + RESTNAME = 373, + SCM_FUNCTION = 374, SCM_IDENTIFIER = 375, SCM_TOKEN = 376, SCORE_IDENTIFIER = 377, STRING = 378, STRING_IDENTIFIER = 379, - TONICNAME_PITCH = 380, - UNARY_MINUS = 381 + UNARY_MINUS = 380 }; #endif /* Tokens. */ -#define PREC_TOP 258 -#define ADDLYRICS 259 -#define PREC_BOT 260 -#define ACCEPTS 261 -#define ALIAS 262 -#define ALTERNATIVE 263 -#define BOOK 264 -#define BOOKPART 265 -#define CHANGE 266 -#define CHORDMODE 267 -#define CHORDS 268 -#define CONSISTS 269 -#define CONTEXT 270 -#define DEFAULT 271 -#define DEFAULTCHILD 272 -#define DENIES 273 -#define DESCRIPTION 274 -#define DRUMMODE 275 -#define DRUMS 276 -#define FIGUREMODE 277 -#define FIGURES 278 -#define GROBDESCRIPTIONS 279 -#define HEADER 280 -#define INVALID 281 -#define KEY 282 -#define LAYOUT 283 -#define LYRICMODE 284 -#define LYRICS 285 -#define LYRICSTO 286 -#define MARK 287 -#define MARKUP 288 -#define MARKUPLINES 289 -#define MIDI 290 -#define NAME 291 -#define NOTEMODE 292 -#define OCTAVE 293 -#define ONCE 294 -#define OVERRIDE 295 -#define PAPER 296 -#define PARTIAL 297 -#define RELATIVE 298 -#define REMOVE 299 -#define REPEAT 300 -#define REST 301 -#define REVERT 302 -#define SCORE 303 -#define SEQUENTIAL 304 -#define SET 305 -#define SIMULTANEOUS 306 -#define SKIP 307 -#define TEMPO 308 -#define TIMES 309 -#define TRANSPOSE 310 -#define TYPE 311 -#define UNSET 312 -#define WITH 313 -#define TIME_T 314 -#define NEWCONTEXT 315 -#define CHORD_BASS 316 -#define CHORD_CARET 317 -#define CHORD_COLON 318 -#define CHORD_MINUS 319 -#define CHORD_SLASH 320 -#define ANGLE_OPEN 321 -#define ANGLE_CLOSE 322 -#define DOUBLE_ANGLE_OPEN 323 -#define DOUBLE_ANGLE_CLOSE 324 -#define E_BACKSLASH 325 -#define E_ANGLE_CLOSE 326 -#define E_CHAR 327 -#define E_CLOSE 328 -#define E_EXCLAMATION 329 -#define E_BRACKET_OPEN 330 -#define E_OPEN 331 -#define E_BRACKET_CLOSE 332 -#define E_ANGLE_OPEN 333 -#define E_PLUS 334 -#define E_TILDE 335 -#define EXTENDER 336 -#define FIGURE_CLOSE 337 -#define FIGURE_OPEN 338 -#define FIGURE_SPACE 339 -#define HYPHEN 340 -#define CHORDMODIFIERS 341 -#define LYRIC_MARKUP 342 -#define MULTI_MEASURE_REST 343 -#define DIGIT 344 -#define E_UNSIGNED 345 -#define UNSIGNED 346 -#define EXPECT_MARKUP 347 -#define EXPECT_MUSIC 348 -#define EXPECT_SCM 349 -#define EXPECT_MARKUP_LIST 350 +#define PREC_BOT 258 +#define REPEAT 259 +#define ALTERNATIVE 260 +#define COMPOSITE 261 +#define ADDLYRICS 262 +#define DEFAULT 263 +#define FUNCTION_ARGLIST 264 +#define DURATION_IDENTIFIER 265 +#define REAL 266 +#define UNSIGNED 267 +#define TONICNAME_PITCH 268 +#define NOTENAME_PITCH 269 +#define PITCH_IDENTIFIER 270 +#define NUMBER_IDENTIFIER 271 +#define PREC_TOP 272 +#define ACCEPTS 273 +#define ALIAS 274 +#define BOOK 275 +#define BOOKPART 276 +#define CHANGE 277 +#define CHORDMODE 278 +#define CHORDS 279 +#define CONSISTS 280 +#define CONTEXT 281 +#define DEFAULTCHILD 282 +#define DENIES 283 +#define DESCRIPTION 284 +#define DRUMMODE 285 +#define DRUMS 286 +#define FIGUREMODE 287 +#define FIGURES 288 +#define HEADER 289 +#define INVALID 290 +#define LAYOUT 291 +#define LYRICMODE 292 +#define LYRICS 293 +#define LYRICSTO 294 +#define MARKUP 295 +#define MARKUPLIST 296 +#define MIDI 297 +#define NAME 298 +#define NOTEMODE 299 +#define OVERRIDE 300 +#define PAPER 301 +#define REMOVE 302 +#define REST 303 +#define REVERT 304 +#define SCORE 305 +#define SEQUENTIAL 306 +#define SET 307 +#define SIMULTANEOUS 308 +#define TEMPO 309 +#define TYPE 310 +#define UNSET 311 +#define WITH 312 +#define NEWCONTEXT 313 +#define CHORD_BASS 314 +#define CHORD_CARET 315 +#define CHORD_COLON 316 +#define CHORD_MINUS 317 +#define CHORD_SLASH 318 +#define ANGLE_OPEN 319 +#define ANGLE_CLOSE 320 +#define DOUBLE_ANGLE_OPEN 321 +#define DOUBLE_ANGLE_CLOSE 322 +#define E_BACKSLASH 323 +#define E_ANGLE_CLOSE 324 +#define E_CHAR 325 +#define E_CLOSE 326 +#define E_EXCLAMATION 327 +#define E_BRACKET_OPEN 328 +#define E_OPEN 329 +#define E_BRACKET_CLOSE 330 +#define E_ANGLE_OPEN 331 +#define E_PLUS 332 +#define E_TILDE 333 +#define EXTENDER 334 +#define FIGURE_CLOSE 335 +#define FIGURE_OPEN 336 +#define FIGURE_SPACE 337 +#define HYPHEN 338 +#define CHORDMODIFIERS 339 +#define LYRIC_MARKUP 340 +#define MULTI_MEASURE_REST 341 +#define E_UNSIGNED 342 +#define EXPECT_MARKUP 343 +#define EXPECT_PITCH 344 +#define EXPECT_DURATION 345 +#define EXPECT_SCM 346 +#define BACKUP 347 +#define REPARSE 348 +#define EXPECT_MARKUP_LIST 349 +#define EXPECT_OPTIONAL 350 #define EXPECT_NO_MORE_ARGS 351 -#define BOOK_IDENTIFIER 352 -#define CHORDMODIFIER_PITCH 353 -#define CHORD_MODIFIER 354 -#define CHORD_REPETITION 355 -#define CONTEXT_DEF_IDENTIFIER 356 -#define CONTEXT_MOD_IDENTIFIER 357 -#define DRUM_PITCH 358 -#define DURATION_IDENTIFIER 359 +#define EMBEDDED_LILY 352 +#define BOOK_IDENTIFIER 353 +#define CHORDMODIFIER_PITCH 354 +#define CHORD_MODIFIER 355 +#define CHORD_REPETITION 356 +#define CONTEXT_DEF_IDENTIFIER 357 +#define CONTEXT_MOD_IDENTIFIER 358 +#define DRUM_PITCH 359 #define EVENT_IDENTIFIER 360 -#define FRACTION 361 -#define LYRICS_STRING 362 -#define LYRIC_MARKUP_IDENTIFIER 363 -#define MARKUP_FUNCTION 364 -#define MARKUP_LIST_FUNCTION 365 -#define MARKUP_IDENTIFIER 366 -#define MARKUPLINES_IDENTIFIER 367 -#define MUSIC_FUNCTION 368 -#define MUSIC_IDENTIFIER 369 -#define NOTENAME_PITCH 370 -#define NUMBER_IDENTIFIER 371 +#define EVENT_FUNCTION 361 +#define FRACTION 362 +#define LYRICS_STRING 363 +#define LYRIC_ELEMENT 364 +#define LYRIC_MARKUP_IDENTIFIER 365 +#define MARKUP_FUNCTION 366 +#define MARKUP_LIST_FUNCTION 367 +#define MARKUP_IDENTIFIER 368 +#define MARKUPLIST_IDENTIFIER 369 +#define MUSIC_FUNCTION 370 +#define MUSIC_IDENTIFIER 371 #define OUTPUT_DEF_IDENTIFIER 372 -#define REAL 373 -#define RESTNAME 374 +#define RESTNAME 373 +#define SCM_FUNCTION 374 #define SCM_IDENTIFIER 375 #define SCM_TOKEN 376 #define SCORE_IDENTIFIER 377 #define STRING 378 #define STRING_IDENTIFIER 379 -#define TONICNAME_PITCH 380 -#define UNARY_MINUS 381 +#define UNARY_MINUS 380 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 110 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.14/lily/parser.yy" +#line 182 "/main/src/gub/target/linux-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.16/lily/parser.yy" { Book *book; Output_def *outputdef; SCM scm; std::string *string; - Music *music; Score *score; int i; } /* Line 1489 of yacc.c. */ -#line 311 "out/parser.hh" +#line 308 "out/parser-tmp.hh" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/lily/output-def-scheme.cc b/lily/output-def-scheme.cc index d1ee310837..a2e1e34513 100644 --- a/lily/output-def-scheme.cc +++ b/lily/output-def-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -91,6 +91,8 @@ LY_DEFINE (ly_output_description, "ly:output-description", 1, 0, 0, (SCM output_def), "Return the description of translators in @var{output-def}.") { + LY_ASSERT_SMOB (Output_def, output_def, 1); + Output_def *id = unsmob_output_def (output_def); SCM al = ly_module_2_alist (id->scope_); @@ -105,6 +107,31 @@ LY_DEFINE (ly_output_description, "ly:output-description", return ell; } +LY_DEFINE (ly_output_find_context_def, "ly:output-find-context-def", + 1, 1, 0, (SCM output_def, SCM context_name), + "Return an alist of all context defs (matching @var{context-name}" + "if given) in @var{output-def}.") +{ + LY_ASSERT_SMOB (Output_def, output_def, 1); + if (!SCM_UNBNDP (context_name)) + LY_ASSERT_TYPE (ly_is_symbol, context_name, 2); + + Output_def *id = unsmob_output_def (output_def); + + SCM al = ly_module_2_alist (id->scope_); + SCM ell = SCM_EOL; + for (SCM s = al; scm_is_pair (s); s = scm_cdr (s)) + { + SCM p = scm_car (s); + Context_def *td = unsmob_context_def (scm_cdr (p)); + if (td && scm_is_eq (scm_car (p), td->get_context_name ()) + && (SCM_UNBNDP (context_name) || td->is_alias (context_name))) + ell = scm_cons (p, ell); + } + return ell; +} + + LY_DEFINE (ly_output_def_p, "ly:output-def?", 1, 0, 0, (SCM def), "Is @var{def} an output definition?") diff --git a/lily/output-def.cc b/lily/output-def.cc index a67e8edb67..e425dbf4f9 100644 --- a/lily/output-def.cc +++ b/lily/output-def.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/output-property-engraver.cc b/lily/output-property-engraver.cc index 08196f8dc9..78901a2157 100644 --- a/lily/output-property-engraver.cc +++ b/lily/output-property-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/page-breaking-scheme.cc b/lily/page-breaking-scheme.cc index 653815dd30..12929e510d 100644 --- a/lily/page-breaking-scheme.cc +++ b/lily/page-breaking-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,35 +19,46 @@ #include "paper-book.hh" #include "page-turn-page-breaking.hh" +#include "one-line-page-breaking.hh" #include "optimal-page-breaking.hh" #include "minimal-page-breaking.hh" LY_DEFINE (ly_page_turn_breaking, "ly:page-turn-breaking", - 1, 0, 0, (SCM pb), - "Optimally break (pages and lines) the @code{Paper_book} object" - " @var{pb} such that page turns only happen in specified places," - " returning its pages.") + 1, 0, 0, (SCM pb), + "Optimally break (pages and lines) the @code{Paper_book} object" + " @var{pb} such that page turns only happen in specified places," + " returning its pages.") { Page_turn_page_breaking b (unsmob_paper_book (pb)); return b.solve (); } LY_DEFINE (ly_optimal_breaking, "ly:optimal-breaking", - 1, 0, 0, (SCM pb), - "Optimally break (pages and lines) the @code{Paper_book} object" - " @var{pb} to minimize badness in bother vertical and horizontal" - " spacing.") + 1, 0, 0, (SCM pb), + "Optimally break (pages and lines) the @code{Paper_book} object" + " @var{pb} to minimize badness in bother vertical and horizontal" + " spacing.") { Optimal_page_breaking b (unsmob_paper_book (pb)); return b.solve (); } LY_DEFINE (ly_minimal_breaking, "ly:minimal-breaking", - 1, 0, 0, (SCM pb), - "Break (pages and lines) the @code{Paper_book} object @var{pb}" - " without looking for optimal spacing: stack as many lines on" - " a page before moving to the next one.") + 1, 0, 0, (SCM pb), + "Break (pages and lines) the @code{Paper_book} object @var{pb}" + " without looking for optimal spacing: stack as many lines on" + " a page before moving to the next one.") { Minimal_page_breaking b (unsmob_paper_book (pb)); return b.solve (); } + +LY_DEFINE (ly_one_line_breaking, "ly:one-line-breaking", + 1, 0, 0, (SCM pb), + "Put each score on a single line, and put each line on its own" + " page. The paper-width setting will be modified so that" + " every page will be wider than the widest line.") +{ + One_line_page_breaking b (unsmob_paper_book (pb)); + return b.solve (); +} diff --git a/lily/page-breaking.cc b/lily/page-breaking.cc index fe1d163658..692244b897 100644 --- a/lily/page-breaking.cc +++ b/lily/page-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -152,47 +152,51 @@ compress_lines (const vector &orig) for (vsize i = 0; i < orig.size (); i++) { if (ret.size () && !scm_is_symbol (ret.back ().page_permission_)) - { - Line_details const &old = ret.back (); - Line_details compressed = orig[i]; - /* - We must account for the padding between the lines that we are compressing. - The padding values come from "old," which is the upper system here. Note - the meaning of tight-spacing: if a system has tight-spacing, then the padding - _before_ it is ignored. - */ - Real padding = 0; - if (!orig[i].tight_spacing_) - padding = orig[i].title_ ? old.title_padding_ : old.padding_; - - // FIXME: double check these. Doesn't foo.piggyback (bar) mean - // that foo goes on top? - // TODO: break out a Line_details::piggyback from here? - compressed.shape_ = old.shape_.piggyback (orig[i].shape_, padding); - compressed.refpoint_extent_[UP] = old.refpoint_extent_[UP]; - compressed.refpoint_extent_[DOWN] += compressed.shape_.rest_[UP] - old.shape_.rest_[UP]; - compressed.space_ += old.space_; - compressed.inverse_hooke_ += old.inverse_hooke_; - - compressed.compressed_lines_count_ = old.compressed_lines_count_ + 1; - compressed.compressed_nontitle_lines_count_ = - old.compressed_nontitle_lines_count_ + (compressed.title_ ? 0 : 1); - - // compressed.title_ is true if and only if the first of its - // compressed lines was a title. + { + Line_details const &old = ret.back (); + Line_details compressed = orig[i]; + /* + We must account for the padding between the lines that we are compressing. + The padding values come from "old," which is the upper system here. Note + the meaning of tight-spacing: if a system has tight-spacing, then the padding + _before_ it is ignored. + */ + Real padding = 0; + if (!orig[i].tight_spacing_) + padding = orig[i].title_ ? old.title_padding_ : old.padding_; + + // FIXME: double check these. Doesn't foo.piggyback (bar) mean + // that foo goes on top? + // TODO: break out a Line_details::piggyback from here? + compressed.shape_ = old.shape_.piggyback (orig[i].shape_, padding); + compressed.refpoint_extent_[UP] = old.refpoint_extent_[UP]; + compressed.refpoint_extent_[DOWN] += compressed.shape_.rest_[UP] - old.shape_.rest_[UP]; + compressed.space_ += old.space_; + compressed.inverse_hooke_ += old.inverse_hooke_; + + compressed.compressed_lines_count_ = old.compressed_lines_count_ + 1; + compressed.compressed_nontitle_lines_count_ + = old.compressed_nontitle_lines_count_ + (compressed.title_ ? 0 : 1); + + // compressed.title_ is true if and only if the first of its + // compressed lines was a title. compressed.title_ = old.title_; // adds footnotes of one line to the footnotes of another - compressed.footnotes_.insert (compressed.footnotes_.begin (), - old.footnotes_.begin (), old.footnotes_.end ()); - - ret.back () = compressed; - } + compressed.footnote_heights_.insert (compressed.footnote_heights_.begin (), + old.footnote_heights_.begin (), + old.footnote_heights_.end ()); + compressed.in_note_heights_.insert (compressed.in_note_heights_.begin (), + old.in_note_heights_.begin (), + old.in_note_heights_.end ()); + + ret.back () = compressed; + } else - { - ret.push_back (orig[i]); - ret.back ().force_ = 0; - } + { + ret.push_back (orig[i]); + ret.back ().force_ = 0; + } } return ret; } @@ -202,7 +206,7 @@ compress_lines (const vector &orig) */ static vector uncompress_solution (vector const &systems_per_page, - vector const &compressed) + vector const &compressed) { vector ret; vsize start_sys = 0; @@ -211,7 +215,7 @@ uncompress_solution (vector const &systems_per_page, { int compressed_count = 0; for (vsize j = start_sys; j < start_sys + systems_per_page[i]; j++) - compressed_count += compressed[j].compressed_lines_count_ - 1; + compressed_count += compressed[j].compressed_lines_count_ - 1; ret.push_back (systems_per_page[i] + compressed_count); start_sys += systems_per_page[i]; @@ -250,11 +254,11 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_bre min_systems_per_page_ = max (0, robust_scm2int (pb->paper_->c_variable ("min-systems-per-page"), 0)); orphan_penalty_ = robust_scm2int (pb->paper_->c_variable ("orphan-penalty"), 100000); - Stencil *footnote_separator = Page_layout_problem::get_footnote_separator_stencil (pb->paper_); + Stencil footnote_separator = Page_layout_problem::get_footnote_separator_stencil (pb->paper_); - if (footnote_separator) + if (!footnote_separator.is_empty ()) { - Interval separator_extent = footnote_separator->extent (Y_AXIS); + Interval separator_extent = footnote_separator.extent (Y_AXIS); Real separator_span = separator_extent.length (); footnote_separator_stencil_height_ = separator_span; @@ -263,8 +267,11 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_bre footnote_separator_stencil_height_ = 0.0; footnote_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0); + in_note_padding_ = robust_scm2double (pb->paper_->c_variable ("in-note-padding"), 0.0); footnote_footer_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-footer-padding"), 0.0); + footnote_number_raise_ = robust_scm2double (pb->paper_->c_variable ("footnote-number-raise"), 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")); @@ -330,6 +337,12 @@ Page_breaking::footnote_separator_stencil_height () const return footnote_separator_stencil_height_; } +Real +Page_breaking::in_note_padding () const +{ + return in_note_padding_; +} + Real Page_breaking::footnote_padding () const { @@ -342,6 +355,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 { @@ -379,10 +398,10 @@ Page_breaking::line_count_status (int line_count) const /* translate indices into breaks_ into start-end parameters for the line breaker */ void Page_breaking::line_breaker_args (vsize sys, - Break_position const &start, - Break_position const &end, - vsize *line_breaker_start, - vsize *line_breaker_end) + Break_position const &start, + Break_position const &end, + vsize *line_breaker_start, + vsize *line_breaker_end) { assert (system_specs_[sys].pscore_); assert (next_system (start) <= sys && sys <= end.system_spec_index_); @@ -400,7 +419,7 @@ Page_breaking::line_breaker_args (vsize sys, void Page_breaking::break_into_pieces (vsize start_break, vsize end_break, - Line_division const &div) + Line_division const &div) { vector chunks = chunk_list (start_break, end_break); bool ignore_div = false; @@ -414,16 +433,16 @@ Page_breaking::break_into_pieces (vsize start_break, vsize end_break, { vsize sys = next_system (chunks[i]); if (system_specs_[sys].pscore_) - { - vsize start; - vsize end; - line_breaker_args (sys, chunks[i], chunks[i+1], &start, &end); - - vector pos = ignore_div - ? line_breaking_[sys].best_solution (start, end) - : line_breaking_[sys].solve (start, end, div[i]); - system_specs_[sys].pscore_->root_system ()->break_into_pieces (pos); - } + { + vsize start; + vsize end; + line_breaker_args (sys, chunks[i], chunks[i + 1], &start, &end); + + vector pos = ignore_div + ? line_breaking_[sys].best_solution (start, end) + : line_breaking_[sys].solve (start, end, div[i]); + system_specs_[sys].pscore_->root_system ()->break_into_pieces (pos); + } } } @@ -434,20 +453,20 @@ Page_breaking::systems () for (vsize sys = 0; sys < system_specs_.size (); sys++) { if (system_specs_[sys].pscore_) - { - system_specs_[sys].pscore_->root_system () - ->do_break_substitution_and_fixup_refpoints (); - SCM lines = system_specs_[sys].pscore_->root_system () - ->get_broken_system_grobs (); - ret = scm_cons (lines, ret); - } + { + system_specs_[sys].pscore_->root_system () + ->do_break_substitution_and_fixup_refpoints (); + SCM lines = system_specs_[sys].pscore_->root_system () + ->get_broken_system_grobs (); + ret = scm_cons (lines, ret); + } else if (Prob *pb = system_specs_[sys].prob_) - { - ret = scm_cons (scm_list_1 (pb->self_scm ()), ret); - pb->unprotect (); - } + { + ret = scm_cons (scm_list_1 (pb->self_scm ()), ret); + pb->unprotect (); + } } - return scm_append (scm_reverse (ret)); + return scm_append (scm_reverse_x (ret, SCM_EOL)); } SCM @@ -460,11 +479,11 @@ Page_breaking::make_page (int page_num, bool last) const make_page_scm = scm_variable_ref (make_page_scm); return scm_apply_0 (make_page_scm, - scm_list_n (book_->self_scm (), - ly_symbol2scm ("page-number"), scm_from_int (page_num), - ly_symbol2scm ("is-last-bookpart"), scm_from_bool (last_part), - ly_symbol2scm ("is-bookpart-last-page"), scm_from_bool (last), - SCM_UNDEFINED)); + scm_list_n (book_->self_scm (), + ly_symbol2scm ("page-number"), scm_from_int (page_num), + ly_symbol2scm ("is-last-bookpart"), scm_from_bool (last_part), + ly_symbol2scm ("is-bookpart-last-page"), scm_from_bool (last), + SCM_UNDEFINED)); } // Returns the total height of the paper, including margins and @@ -499,11 +518,11 @@ Page_breaking::page_height (int page_num, bool last) const Real height = scm_to_double (height_scm); if (page_num >= 0) - { - if ((int) cache.size () <= page_num) - cache.resize (page_num + 1, -1); - cache[page_num] = height; - } + { + if ((int) cache.size () <= page_num) + cache.resize (page_num + 1, -1); + cache[page_num] = height; + } return height; } } @@ -533,34 +552,34 @@ Page_breaking::draw_page (SCM systems, SCM configuration, int page_num, bool las { // Create a stencil for each system. SCM paper_systems = SCM_EOL; - for (SCM s = scm_reverse (systems); scm_is_pair (s); s = scm_cdr (s)) + for (SCM s = systems; scm_is_pair (s); s = scm_cdr (s)) { SCM paper_system = scm_car (s); if (Grob *g = unsmob_grob (scm_car (s))) - { - System *sys = dynamic_cast (g); - paper_system = sys->get_paper_system (); - } + { + System *sys = dynamic_cast (g); + paper_system = sys->get_paper_system (); + } paper_systems = scm_cons (paper_system, paper_systems); } + paper_systems = scm_reverse_x (paper_systems, SCM_EOL); // Create the page and draw it. SCM page = make_page (page_num, last); - SCM page_module = scm_c_resolve_module ("scm page"); - SCM page_stencil = scm_c_module_lookup (page_module, "page-stencil"); - page_stencil = scm_variable_ref (page_stencil); Prob *p = unsmob_prob (page); p->set_property ("lines", paper_systems); 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"))); + Stencil *foot_p = unsmob_stencil (p->get_property ("foot-stencil")); + Stencil foot = foot_p ? *foot_p : Stencil (); + + SCM footnotes = Page_layout_problem::get_footnotes_from_lines (systems); + + foot = 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); + p->set_property ("foot-stencil", foot.smobbed_copy ()); return page; } @@ -574,17 +593,22 @@ Page_breaking::make_pages (vector lines_per_page, SCM systems) int first_page_number = robust_scm2int (book_->paper_->c_variable ("first-page-number"), 1); SCM ret = SCM_EOL; + bool reset_footnotes_on_new_page = to_boolean (book_->top_paper ()->c_variable ("reset-footnotes-on-new-page")); SCM label_page_table = book_->top_paper ()->c_variable ("label-page-table"); if (label_page_table == SCM_UNDEFINED) label_page_table = SCM_EOL; - // Build a list of (systems . configuration) pairs. Note that we lay out - // the staves and find the configurations before drawing anything. Some + // Build a list of (systems configuration . footnote-count) triples. + // Note that we lay out the staves and find the configurations, + // but we do not draw anything in this function. It is important + // that all staves are laid out vertically before any are drawn; some // grobs (like tuplet brackets) look at their neighbours while drawing - // themselves. If this happens before the neighbouring staves have + // 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; + Real last_page_force = 0; for (vsize i = 0; i < lines_per_page.size (); i++) { @@ -593,39 +617,56 @@ Page_breaking::make_pages (vector 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); + int fn_lines = Page_layout_problem::get_footnote_count (lines); + Page_layout_problem::add_footnotes_to_lines (lines, reset_footnotes_on_new_page ? 0 : footnote_count, book_); + + SCM config = SCM_EOL; + SCM dummy_page = make_page (page_num, bookpart_last_page); + Page_layout_problem layout (book_, dummy_page, lines); + if (!scm_is_pair (systems)) + config = SCM_EOL; + else if (rag && !ragged ()) + // If we're ragged-last but not ragged, make the last page + // have the same force as the previous page. + config = layout.fixed_force_solution (last_page_force); + else + config = layout.solution (rag); + + last_page_force = layout.force (); - systems_and_configs = scm_cons (scm_cons (lines, config), systems_and_configs); + systems_configs_fncounts = scm_cons (scm_cons (lines, config), systems_configs_fncounts); + footnote_count += fn_lines; systems = scm_list_tail (systems, line_count); } - // Now it's safe to make the pages. + // TODO: previously, the following loop caused the systems to be + // drawn. Now that we no longer draw anything in Page_breaking, + // it is safe to merge these two loops. 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); + bool bookpart_last_page = (s == systems_configs_fncounts); + SCM page = draw_page (lines, config, page_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)) - { - SCM labels = SCM_EOL; - if (Grob * line = unsmob_grob (scm_car (l))) - { - System *system = dynamic_cast (line); - labels = system->get_property ("labels"); - } - else if (Prob *prob = unsmob_prob (scm_car (l))) - labels = prob->get_property ("labels"); - - for (SCM lbls = labels ; scm_is_pair (lbls) ; lbls = scm_cdr (lbls)) - label_page_table = scm_cons (scm_cons (scm_car (lbls), page_num_scm), - label_page_table); - } + for (SCM l = lines; scm_is_pair (l); l = scm_cdr (l)) + { + SCM labels = SCM_EOL; + if (Grob *line = unsmob_grob (scm_car (l))) + { + System *system = dynamic_cast (line); + labels = system->get_property ("labels"); + } + else if (Prob *prob = unsmob_prob (scm_car (l))) + labels = prob->get_property ("labels"); + + for (SCM lbls = labels; scm_is_pair (lbls); lbls = scm_cdr (lbls)) + label_page_table = scm_cons (scm_cons (scm_car (lbls), page_num_scm), + label_page_table); + } ret = scm_cons (page, ret); --page_num; @@ -639,24 +680,16 @@ Page_breaking::make_pages (vector lines_per_page, SCM systems) return ret; } -/* The page-turn-page-breaker needs to have a line-breaker between any two - columns with non-NULL page-turn-permission. - - The optimal-breaker needs to have a line-breaker between any two columns - with page-break-permission = 'force. - - By using a grob predicate, we can accommodate both of these uses. -*/ void Page_breaking::create_system_list () { SCM specs = book_->get_system_specs (); for (SCM s = specs; scm_is_pair (s); s = scm_cdr (s)) { - if (Paper_score *ps = dynamic_cast (unsmob_music_output (scm_car (s)))) - { - system_specs_.push_back (System_spec (ps)); - } + if (Paper_score *ps = dynamic_cast (unsmob_music_output (scm_car (s)))) + { + system_specs_.push_back (System_spec (ps)); + } else { Prob *pb = unsmob_prob (scm_car (s)); @@ -670,6 +703,14 @@ Page_breaking::create_system_list () system_specs_.push_back (System_spec ()); } +/* The page-turn-page-breaker needs to have a line-breaker between any two + columns with non-NULL page-turn-permission. + + The optimal-breaker needs to have a line-breaker between any two columns + with page-break-permission = 'force. + + By using a grob predicate, we can accommodate both of these uses. +*/ void Page_breaking::find_chunks_and_breaks (Break_predicate is_break, Prob_break_predicate prob_is_break) { @@ -681,81 +722,81 @@ Page_breaking::find_chunks_and_breaks (Break_predicate is_break, Prob_break_pred for (vsize i = 0; i < system_specs_.size (); i++) { if (system_specs_[i].pscore_) - { - vector cols = system_specs_[i].pscore_->root_system ()->used_columns (); - vector forced_line_break_cols; - - SCM system_count = system_specs_[i].pscore_->layout ()->c_variable ("system-count"); - if (scm_is_number (system_count)) - { - // With system-count given, the line configuration for - // this score is fixed. We need to ensure that chunk - // boundaries only occur at line breaks. - Constrained_breaking breaking (system_specs_[i].pscore_); - vector details = breaking.line_details (0, VPOS, scm_to_int (system_count)); - - for (vsize j = 0; j < details.size (); j++) - forced_line_break_cols.push_back (details[j].last_column_); - } - - int last_forced_line_break_idx = 0; - vsize forced_line_break_idx = 0; - vector line_breaker_columns; - line_breaker_columns.push_back (0); - - for (vsize j = 1; j < cols.size (); j++) - { - if (forced_line_break_cols.size ()) - { - if (forced_line_break_idx >= forced_line_break_cols.size () - || forced_line_break_cols[forced_line_break_idx] != cols[j]) - continue; - else - forced_line_break_idx++; - } - - bool last = (j == cols.size () - 1); - bool break_point = is_break && is_break (cols[j]); - bool chunk_end = cols[j]->get_property ("page-break-permission") == force_sym; - Break_position cur_pos = Break_position (i, - line_breaker_columns.size (), - cols[j], - last); - - // NOTE: even in the breaks_ list, forced_line_count_ - // refers to the number of lines between a - // Break_position and the start of that /chunk/. This - // is needed for system_count_bounds to work correctly, - // since it mixes Break_positions from breaks_ and - // chunks_. - if (scm_is_number (system_count)) - cur_pos.forced_line_count_ = forced_line_break_idx - last_forced_line_break_idx; - - if (break_point || (i == system_specs_.size () - 1 && last)) - breaks_.push_back (cur_pos); - if (chunk_end || last) - { - chunks_.push_back (cur_pos); - last_forced_line_break_idx = forced_line_break_idx; - } - - if ((break_point || chunk_end) && !last) - line_breaker_columns.push_back (j); - } - line_breaking_.push_back (Constrained_breaking (system_specs_[i].pscore_, line_breaker_columns)); - } + { + vector cols = system_specs_[i].pscore_->root_system ()->used_columns (); + vector forced_line_break_cols; + + SCM system_count = system_specs_[i].pscore_->layout ()->c_variable ("system-count"); + if (scm_is_number (system_count)) + { + // With system-count given, the line configuration for + // this score is fixed. We need to ensure that chunk + // boundaries only occur at line breaks. + Constrained_breaking breaking (system_specs_[i].pscore_); + vector details = breaking.line_details (0, VPOS, scm_to_int (system_count)); + + for (vsize j = 0; j < details.size (); j++) + forced_line_break_cols.push_back (details[j].last_column_); + } + + int last_forced_line_break_idx = 0; + vsize forced_line_break_idx = 0; + vector line_breaker_columns; + line_breaker_columns.push_back (0); + + for (vsize j = 1; j < cols.size (); j++) + { + if (forced_line_break_cols.size ()) + { + if (forced_line_break_idx >= forced_line_break_cols.size () + || forced_line_break_cols[forced_line_break_idx] != cols[j]) + continue; + else + forced_line_break_idx++; + } + + bool last = (j == cols.size () - 1); + bool break_point = is_break && is_break (cols[j]); + bool chunk_end = cols[j]->get_property ("page-break-permission") == force_sym; + Break_position cur_pos = Break_position (i, + line_breaker_columns.size (), + cols[j], + last); + + // NOTE: even in the breaks_ list, forced_line_count_ + // refers to the number of lines between a + // Break_position and the start of that /chunk/. This + // is needed for system_count_bounds to work correctly, + // since it mixes Break_positions from breaks_ and + // chunks_. + if (scm_is_number (system_count)) + cur_pos.forced_line_count_ = forced_line_break_idx - last_forced_line_break_idx; + + if (break_point || (i == system_specs_.size () - 1 && last)) + breaks_.push_back (cur_pos); + if (chunk_end || last) + { + chunks_.push_back (cur_pos); + last_forced_line_break_idx = forced_line_break_idx; + } + + if ((break_point || chunk_end) && !last) + line_breaker_columns.push_back (j); + } + line_breaking_.push_back (Constrained_breaking (system_specs_[i].pscore_, line_breaker_columns)); + } else if (system_specs_[i].prob_) - { - bool break_point = prob_is_break && prob_is_break (system_specs_[i].prob_); - if (break_point || i == system_specs_.size () - 1) - breaks_.push_back (Break_position (i)); + { + bool break_point = prob_is_break && prob_is_break (system_specs_[i].prob_); + if (break_point || i == system_specs_.size () - 1) + breaks_.push_back (Break_position (i)); - chunks_.push_back (Break_position (i)); + chunks_.push_back (Break_position (i)); - /* FIXME: shouldn't we push a Null_breaker or similar dummy - class? --hwn */ - line_breaking_.push_back (Constrained_breaking (NULL)); - } + /* FIXME: shouldn't we push a Null_breaker or similar dummy + class? --hwn */ + line_breaking_.push_back (Constrained_breaking (NULL)); + } } } @@ -808,7 +849,7 @@ Page_breaking::max_system_count (vsize start, vsize end) // per chunk. Page_breaking::Line_division Page_breaking::system_count_bounds (vector const &chunks, - bool min) + bool min) { assert (chunks.size () >= 2); @@ -819,17 +860,17 @@ Page_breaking::system_count_bounds (vector const &chunks, { vsize sys = next_system (chunks[i]); - if (chunks[i+1].forced_line_count_) - ret[i] = chunks[i+1].forced_line_count_; + if (chunks[i + 1].forced_line_count_) + ret[i] = chunks[i + 1].forced_line_count_; else if (system_specs_[sys].pscore_) - { - vsize start; - vsize end; - line_breaker_args (sys, chunks[i], chunks[i+1], &start, &end); - ret[i] = min - ? line_breaking_[sys].min_system_count (start, end) - : line_breaking_[sys].max_system_count (start, end); - } + { + vsize start; + vsize end; + line_breaker_args (sys, chunks[i], chunks[i + 1], &start, &end); + ret[i] = min + ? line_breaking_[sys].min_system_count (start, end) + : line_breaking_[sys].max_system_count (start, end); + } } return ret; @@ -837,10 +878,10 @@ Page_breaking::system_count_bounds (vector const &chunks, void Page_breaking::set_current_breakpoints (vsize start, - vsize end, - vsize system_count, - Line_division lower_bound, - Line_division upper_bound) + vsize end, + vsize system_count, + Line_division lower_bound, + Line_division upper_bound) { system_count_ = system_count; current_chunks_ = chunk_list (start, end); @@ -859,32 +900,32 @@ Page_breaking::set_current_breakpoints (vsize start, Line_division work_in_progress; current_configurations_.clear (); line_divisions_rec (system_count, - lower_bound, - upper_bound, - &work_in_progress); + lower_bound, + upper_bound, + &work_in_progress); /* we only consider a constant number of configurations. Otherwise, this becomes slow when there are many small scores. The constant 5 is somewhat arbitrary. */ if (current_configurations_.size () > 5) { - vector > dems_and_indices; + vector > dems_and_indices; for (vsize i = 0; i < current_configurations_.size (); i++) - { - cache_line_details (i); - Real dem = 0; - for (vsize j = 0; j < cached_line_details_.size (); j++) - dem += cached_line_details_[j].force_ * cached_line_details_[j].force_ - + cached_line_details_[j].break_penalty_; + { + cache_line_details (i); + Real dem = 0; + for (vsize j = 0; j < cached_line_details_.size (); j++) + dem += cached_line_details_[j].force_ * cached_line_details_[j].force_ + + cached_line_details_[j].break_penalty_; - dems_and_indices.push_back (pair (dem, i)); - } - vector_sort (dems_and_indices, less > ()); + dems_and_indices.push_back (pair (dem, i)); + } + vector_sort (dems_and_indices, less > ()); vector best_5_configurations; for (vsize i = 0; i < 5; i++) - best_5_configurations.push_back (current_configurations_[dems_and_indices[i].second]); + best_5_configurations.push_back (current_configurations_[dems_and_indices[i].second]); clear_line_details_cache (); current_configurations_ = best_5_configurations; @@ -901,19 +942,19 @@ Page_breaking::set_to_ideal_line_configuration (vsize start, vsize end) system_count_ = 0; Line_division div; - for (vsize i = 0; i+1 < current_chunks_.size (); i++) + for (vsize i = 0; i + 1 < current_chunks_.size (); i++) { vsize sys = next_system (current_chunks_[i]); - if (current_chunks_[i+1].forced_line_count_) - div.push_back (current_chunks_[i+1].forced_line_count_); + if (current_chunks_[i + 1].forced_line_count_) + div.push_back (current_chunks_[i + 1].forced_line_count_); else if (system_specs_[sys].pscore_) - { - line_breaker_args (sys, current_chunks_[i], current_chunks_[i+1], &start, &end); - div.push_back (line_breaking_[sys].best_solution (start, end).size ()); - } + { + line_breaker_args (sys, current_chunks_[i], current_chunks_[i + 1], &start, &end); + div.push_back (line_breaking_[sys].best_solution (start, end).size ()); + } else - div.push_back (0); + div.push_back (0); system_count_ += div.back (); } @@ -937,25 +978,25 @@ Page_breaking::cache_line_details (vsize configuration_index) Line_division &div = current_configurations_[configuration_index]; uncompressed_line_details_.clear (); for (vsize i = 0; i + 1 < current_chunks_.size (); i++) - { - vsize sys = next_system (current_chunks_[i]); - if (system_specs_[sys].pscore_) - { - vsize start; - vsize end; - line_breaker_args (sys, current_chunks_[i], current_chunks_[i+1], &start, &end); - - vector details = line_breaking_[sys].line_details (start, end, div[i]); - uncompressed_line_details_.insert (uncompressed_line_details_.end (), details.begin (), details.end ()); - } - else - { - assert (div[i] == 0); - uncompressed_line_details_.push_back (system_specs_[sys].prob_ - ? Line_details (system_specs_[sys].prob_, book_->paper_) - : Line_details ()); - } - } + { + vsize sys = next_system (current_chunks_[i]); + if (system_specs_[sys].pscore_) + { + vsize start; + vsize end; + line_breaker_args (sys, current_chunks_[i], current_chunks_[i + 1], &start, &end); + + vector details = line_breaking_[sys].line_details (start, end, div[i]); + uncompressed_line_details_.insert (uncompressed_line_details_.end (), details.begin (), details.end ()); + } + else + { + assert (div[i] == 0); + uncompressed_line_details_.push_back (system_specs_[sys].prob_ + ? Line_details (system_specs_[sys].prob_, book_->paper_) + : Line_details ()); + } + } cached_line_details_ = compress_lines (uncompressed_line_details_); compute_line_heights (); } @@ -971,9 +1012,9 @@ Page_breaking::clear_line_details_cache () void Page_breaking::line_divisions_rec (vsize system_count, - Line_division const &min_sys, - Line_division const &max_sys, - Line_division *cur_division) + Line_division const &min_sys, + Line_division const &max_sys, + Line_division *cur_division) { vsize my_index = cur_division->size (); int others_min = 0; @@ -991,8 +1032,8 @@ Page_breaking::line_divisions_rec (vsize system_count, if (real_min > real_max || real_min < 0) { /* this should never happen within a recursive call. If it happens - at all, it means that we were called with an unsolvable problem - and we should return an empty result */ + at all, it means that we were called with an unsolvable problem + and we should return an empty result */ assert (my_index == 0); return; } @@ -1001,7 +1042,7 @@ Page_breaking::line_divisions_rec (vsize system_count, { cur_division->push_back (i); if (my_index == min_sys.size () - 1) - current_configurations_.push_back (*cur_division); + current_configurations_.push_back (*cur_division); else line_divisions_rec (system_count - i, min_sys, max_sys, cur_division); cur_division->pop_back (); @@ -1021,7 +1062,7 @@ Page_breaking::compute_line_heights () Real prev_refpoint_hanging = 0; for (vsize i = 0; i < cached_line_details_.size (); i++) { - Line_details& cur = cached_line_details_[i]; + Line_details &cur = cached_line_details_[i]; Line_shape shape = cur.shape_; Real a = shape.begin_[UP]; Real b = shape.rest_[UP]; @@ -1029,20 +1070,20 @@ Page_breaking::compute_line_heights () Real refpoint_hanging = max (prev_hanging_begin + a, prev_hanging_rest + b); if (i > 0) - { - Real padding = 0; - Line_details const& prev = cached_line_details_[i-1]; - if (!cur.tight_spacing_) - padding = title - ? prev.title_padding_ - : prev.padding_; - Real min_dist = title - ? prev.title_min_distance_ - : prev.min_distance_; - refpoint_hanging = max (refpoint_hanging + padding, - prev_refpoint_hanging - prev.refpoint_extent_[DOWN] - + cur.refpoint_extent_[UP] + min_dist); - } + { + Real padding = 0; + Line_details const &prev = cached_line_details_[i - 1]; + if (!cur.tight_spacing_) + padding = title + ? prev.title_padding_ + : prev.padding_; + Real min_dist = title + ? prev.title_min_distance_ + : prev.min_distance_; + refpoint_hanging = max (refpoint_hanging + padding, + prev_refpoint_hanging - prev.refpoint_extent_[DOWN] + + cur.refpoint_extent_[UP] + min_dist); + } Real hanging_begin = refpoint_hanging - shape.begin_[DOWN]; Real hanging_rest = refpoint_hanging - shape.rest_[DOWN]; @@ -1073,40 +1114,40 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num) for (vsize i = 0; i < cached_line_details_.size (); i++) { Line_details const &cur = cached_line_details_[i]; - Line_details const *const prev = (i > 0) ? &cached_line_details_[i-1] : 0; + Line_details const *const prev = (i > 0) ? &cached_line_details_[i - 1] : 0; Real ext_len; if (cur_rod_height > 0) - ext_len = cur.tallness_; + ext_len = cur.tallness_; else - ext_len = cur.full_height(); + ext_len = cur.full_height (); Real spring_len = (i > 0) ? prev->spring_length (cur) : 0; Real next_rod_height = cur_rod_height + ext_len; Real next_spring_height = cur_spring_height + spring_len; Real next_height = next_rod_height + (ragged () ? next_spring_height : 0) - + min_whitespace_at_bottom_of_page (cur); + + min_whitespace_at_bottom_of_page (cur); int next_line_count = line_count + cur.compressed_nontitle_lines_count_; if ((!too_few_lines (line_count) && (next_height > cur_page_height && cur_rod_height > 0)) - || too_many_lines (next_line_count) - || (prev && prev->page_permission_ == ly_symbol2scm ("force"))) - { - line_count = cur.compressed_nontitle_lines_count_; - cur_rod_height = cur.full_height(); - cur_spring_height = 0; - page_starter = i; - - cur_page_height = page_height (first_page_num + ret, false); - cur_page_height -= min_whitespace_at_top_of_page (cur); - - ret++; - } + || too_many_lines (next_line_count) + || (prev && prev->page_permission_ == ly_symbol2scm ("force"))) + { + line_count = cur.compressed_nontitle_lines_count_; + cur_rod_height = cur.full_height (); + cur_spring_height = 0; + page_starter = i; + + cur_page_height = page_height (first_page_num + ret, false); + cur_page_height -= min_whitespace_at_top_of_page (cur); + + ret++; + } else - { - cur_rod_height = next_rod_height; - cur_spring_height = next_spring_height; - line_count = next_line_count; - } + { + cur_rod_height = next_rod_height; + cur_spring_height = next_spring_height; + line_count = next_line_count; + } } /* there are two potential problems with the last page (because we didn't know @@ -1130,10 +1171,10 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num) Real cur_height = cur_rod_height + ((ragged_last () || ragged ()) ? cur_spring_height : 0); if (!too_few_lines (line_count - cached_line_details_.back ().compressed_nontitle_lines_count_) - && cur_height > cur_page_height - /* don't increase the page count if the last page had only one system */ - && cur_rod_height > cached_line_details_.back ().full_height ()) - ret++; + && cur_height > cur_page_height + /* don't increase the page count if the last page had only one system */ + && cur_rod_height > cached_line_details_.back ().full_height ()) + ret++; assert (ret <= cached_line_details_.size ()); } @@ -1157,15 +1198,15 @@ Page_breaking::space_systems_on_n_pages (vsize configuration, vsize n, vsize fir cache_line_details (configuration); bool valid_n = (n >= min_page_count (configuration, first_page_num) - && n <= cached_line_details_.size ()); + && n <= cached_line_details_.size ()); if (!valid_n) programming_error ("number of pages is out of bounds"); if (n == 1 && valid_n) ret = space_systems_on_1_page (cached_line_details_, - page_height (first_page_num, is_last ()), - ragged () || (is_last () && ragged_last ())); + page_height (first_page_num, is_last ()), + ragged () || (is_last () && ragged_last ())); else if (n == 2 && valid_n) ret = space_systems_on_2_pages (configuration, first_page_num); else @@ -1200,7 +1241,7 @@ Page_breaking::blank_page_penalty () const // or N+1 pages; see the comment to space_systems_on_n_pages. Page_spacing_result Page_breaking::space_systems_on_n_or_one_more_pages (vsize configuration, vsize n, vsize first_page_num, - Real penalty_for_fewer_pages) + Real penalty_for_fewer_pages) { Page_spacing_result n_res; Page_spacing_result m_res; @@ -1208,7 +1249,7 @@ Page_breaking::space_systems_on_n_or_one_more_pages (vsize configuration, vsize if (systems_per_page_ > 0) { Page_spacing_result ret = space_systems_with_fixed_number_per_page (configuration, first_page_num); - ret.demerits_ += (ret.force_.size () == n || ret.force_.size () == (n-1)) ? 0 : BAD_SPACING_PENALTY; + ret.demerits_ += (ret.force_.size () == n || ret.force_.size () == (n - 1)) ? 0 : BAD_SPACING_PENALTY; return ret; } @@ -1225,18 +1266,18 @@ Page_breaking::space_systems_on_n_or_one_more_pages (vsize configuration, vsize Real height = page_height (first_page_num, is_last ()); if (1 >= min_p_count) - n_res = space_systems_on_1_page (cached_line_details_, height, rag); + n_res = space_systems_on_1_page (cached_line_details_, height, rag); if (1 < cached_line_details_.size ()) - m_res = space_systems_on_2_pages (configuration, first_page_num); + m_res = space_systems_on_2_pages (configuration, first_page_num); } else { Page_spacer ps (cached_line_details_, first_page_num, this); - + if (n >= min_p_count || !valid_n) - n_res = ps.solve (n); + n_res = ps.solve (n); if (n < cached_line_details_.size () || !valid_n) - m_res = ps.solve (n+1); + m_res = ps.solve (n + 1); } m_res = finalize_spacing_result (configuration, m_res); @@ -1265,7 +1306,7 @@ Page_breaking::space_systems_on_best_pages (vsize configuration, vsize first_pag Page_spacing_result Page_breaking::space_systems_with_fixed_number_per_page (vsize configuration, - vsize first_page_num) + vsize first_page_num) { Page_spacing_result res; Page_spacing space (page_height (first_page_num, false), this); @@ -1282,27 +1323,27 @@ Page_breaking::space_systems_with_fixed_number_per_page (vsize configuration, int system_count_on_this_page = 0; while (system_count_on_this_page < systems_per_page_ - && line < cached_line_details_.size ()) - { - Line_details const &cur_line = cached_line_details_[line]; - space.append_system (cur_line); - system_count_on_this_page += cur_line.compressed_nontitle_lines_count_; - line++; + && line < cached_line_details_.size ()) + { + Line_details const &cur_line = cached_line_details_[line]; + space.append_system (cur_line); + system_count_on_this_page += cur_line.compressed_nontitle_lines_count_; + line++; - if (cur_line.page_permission_ == ly_symbol2scm ("force")) - break; - } + if (cur_line.page_permission_ == ly_symbol2scm ("force")) + break; + } res.systems_per_page_.push_back (line - page_first_line); res.force_.push_back (space.force_); - res.penalty_ += cached_line_details_[line-1].page_penalty_; + res.penalty_ += cached_line_details_[line - 1].page_penalty_; if (system_count_on_this_page != systems_per_page_) - { - res.penalty_ += abs (system_count_on_this_page - systems_per_page_) * TERRIBLE_SPACING_PENALTY; - res.system_count_status_ |= ((system_count_on_this_page < systems_per_page_)) - ? SYSTEM_COUNT_TOO_FEW : SYSTEM_COUNT_TOO_MANY; - } + { + res.penalty_ += abs (system_count_on_this_page - systems_per_page_) * TERRIBLE_SPACING_PENALTY; + res.system_count_status_ |= ((system_count_on_this_page < systems_per_page_)) + ? SYSTEM_COUNT_TOO_FEW : SYSTEM_COUNT_TOO_MANY; + } page_first_line = line; } @@ -1329,47 +1370,47 @@ Page_breaking::pack_systems_on_least_pages (vsize configuration, vsize first_pag Real prev_force = space.force_; space.append_system (cached_line_details_[line]); if ((line > page_first_line) - && (isinf (space.force_) - || ((line > 0) - && (cached_line_details_[line-1].page_permission_ == ly_symbol2scm ("force"))))) - { - res.systems_per_page_.push_back (line - page_first_line); - res.force_.push_back (prev_force); - res.penalty_ += cached_line_details_[line-1].page_penalty_; - page++; - space.resize (page_height (first_page_num + page, false)); - space.clear (); + && (isinf (space.force_) + || ((line > 0) + && (cached_line_details_[line - 1].page_permission_ == ly_symbol2scm ("force"))))) + { + res.systems_per_page_.push_back (line - page_first_line); + res.force_.push_back (prev_force); + res.penalty_ += cached_line_details_[line - 1].page_penalty_; + page++; + space.resize (page_height (first_page_num + page, false)); + space.clear (); space.append_system (cached_line_details_[line]); - page_first_line = line; - } + page_first_line = line; + } if (line == cached_line_details_.size () - 1) - { - /* This is the last line */ - /* When the last page height was computed, we did not know yet that it - * was the last one. If the systems put on it don't fit anymore, the last - * system is moved to a new page */ - space.resize (page_height (first_page_num + page, true)); - if ((line > page_first_line) && (isinf (space.force_))) - { - res.systems_per_page_.push_back (line - page_first_line); - res.force_.push_back (prev_force); - /* the last page containing the last line */ - space.resize (page_height (first_page_num + page + 1, true)); - space.clear (); - space.append_system (cached_line_details_[line]); - res.systems_per_page_.push_back (1); - res.force_.push_back (space.force_); - res.penalty_ += cached_line_details_[line-1].page_penalty_; + { + /* This is the last line */ + /* When the last page height was computed, we did not know yet that it + * was the last one. If the systems put on it don't fit anymore, the last + * system is moved to a new page */ + space.resize (page_height (first_page_num + page, true)); + if ((line > page_first_line) && (isinf (space.force_))) + { + res.systems_per_page_.push_back (line - page_first_line); + res.force_.push_back (prev_force); + /* the last page containing the last line */ + space.resize (page_height (first_page_num + page + 1, true)); + space.clear (); + space.append_system (cached_line_details_[line]); + res.systems_per_page_.push_back (1); + res.force_.push_back (space.force_); + res.penalty_ += cached_line_details_[line - 1].page_penalty_; res.penalty_ += cached_line_details_[line].page_penalty_; - } - else - { - res.systems_per_page_.push_back (line + 1 - page_first_line); - res.force_.push_back (space.force_); + } + else + { + res.systems_per_page_.push_back (line + 1 - page_first_line); + res.force_.push_back (space.force_); res.penalty_ += cached_line_details_[line].page_penalty_; - } - } + } + } } return finalize_spacing_result (configuration, res); } @@ -1400,7 +1441,7 @@ Page_breaking::finalize_spacing_result (vsize configuration, Page_spacing_result { Real f = res.force_[i]; - page_demerits += min(f*f, BAD_SPACING_PENALTY); + page_demerits += min (f * f, BAD_SPACING_PENALTY); } /* for a while we tried averaging page and line forces across pages instead @@ -1455,16 +1496,16 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n for (vsize i = 0; i + 1 < cached_line_details_.size (); i++) if (cached_line_details_[i].page_permission_ == ly_symbol2scm ("force")) { - vector lines1 (cached_line_details_.begin (), cached_line_details_.begin () + i + 1); - vector lines2 (cached_line_details_.begin () + i + 1, cached_line_details_.end ()); - Page_spacing_result p1 = space_systems_on_1_page (lines1, page1_height, ragged1); - Page_spacing_result p2 = space_systems_on_1_page (lines2, page2_height, ragged2); - - p1.systems_per_page_.push_back (p2.systems_per_page_[0]); - p1.force_.push_back (p2.force_[0]); - p1.penalty_ += p2.penalty_ - cached_line_details_[i].turn_penalty_; - p1.system_count_status_ |= p2.system_count_status_; - return p1; + vector lines1 (cached_line_details_.begin (), cached_line_details_.begin () + i + 1); + vector lines2 (cached_line_details_.begin () + i + 1, cached_line_details_.end ()); + Page_spacing_result p1 = space_systems_on_1_page (lines1, page1_height, ragged1); + Page_spacing_result p2 = space_systems_on_1_page (lines2, page2_height, ragged2); + + p1.systems_per_page_.push_back (p2.systems_per_page_[0]); + p1.force_.push_back (p2.force_[0]); + p1.penalty_ += p2.penalty_ - cached_line_details_[i].turn_penalty_; + p1.system_count_status_ |= p2.system_count_status_; + return p1; } vector page1_force; @@ -1505,10 +1546,10 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n page1_status[i] = line_count_status (page1_line_count); if (ragged2) - page2_force[page2_force.size () - 1 - i] = - (page2.force_ < 0 && i + 1 < page1_force.size ()) ? infinity_f : 0; + page2_force[page2_force.size () - 1 - i] + = (page2.force_ < 0 && i + 1 < page1_force.size ()) ? infinity_f : 0; else - page2_force[page2_force.size () - 1 - i] = page2.force_; + page2_force[page2_force.size () - 1 - i] = page2.force_; page2_penalty[page2_penalty.size () - 1 - i] = line_count_penalty (page2_line_count); page2_status[page2_penalty.size () - 1 - i] = line_count_status (page2_line_count); } @@ -1524,26 +1565,26 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n // constraints. That is, we penalize harshly when they don't happen // but we don't completely reject. Real dem = f - + page1_penalty[i] + page2_penalty[i] - + cached_line_details_[i+1].page_penalty_ - + cached_line_details_.back ().page_penalty_ + cached_line_details_.back ().turn_penalty_; + + page1_penalty[i] + page2_penalty[i] + + cached_line_details_[i + 1].page_penalty_ + + cached_line_details_.back ().page_penalty_ + cached_line_details_.back ().turn_penalty_; if (dem < best_demerits) - { - best_demerits = dem; - best_sys_count = i+1; - } + { + best_demerits = dem; + best_sys_count = i + 1; + } } Page_spacing_result ret; ret.systems_per_page_.push_back (best_sys_count); ret.systems_per_page_.push_back (cached_line_details_.size () - best_sys_count); - ret.force_.push_back (page1_force[best_sys_count-1]); - ret.force_.push_back (page2_force[best_sys_count-1]); - ret.system_count_status_ = page1_status[best_sys_count-1] | page2_status[best_sys_count-1]; - ret.penalty_ = cached_line_details_[best_sys_count-1].page_penalty_ - + cached_line_details_.back ().page_penalty_ - + cached_line_details_.back ().turn_penalty_ - + page1_penalty[best_sys_count-1] + page2_penalty[best_sys_count-1]; + ret.force_.push_back (page1_force[best_sys_count - 1]); + ret.force_.push_back (page2_force[best_sys_count - 1]); + ret.system_count_status_ = page1_status[best_sys_count - 1] | page2_status[best_sys_count - 1]; + ret.penalty_ = cached_line_details_[best_sys_count - 1].page_penalty_ + + cached_line_details_.back ().page_penalty_ + + cached_line_details_.back ().turn_penalty_ + + page1_penalty[best_sys_count - 1] + page2_penalty[best_sys_count - 1]; /* don't do finalize_spacing_result () because we are only an internal function */ return ret; @@ -1581,7 +1622,7 @@ Page_breaking::ends_score () const vsize Page_breaking::last_break_position () const { - return breaks_.size () - 1; + return breaks_.size () - 1; } // This gives the minimum distance between the top of the @@ -1598,11 +1639,11 @@ Page_breaking::min_whitespace_at_top_of_page (Line_details const &line) const Real padding = 0; Page_layout_problem::read_spacing_spec (first_system_spacing, - &min_distance, - ly_symbol2scm ("minimum-distance")); + &min_distance, + ly_symbol2scm ("minimum-distance")); Page_layout_problem::read_spacing_spec (first_system_spacing, - &padding, - ly_symbol2scm ("padding")); + &padding, + ly_symbol2scm ("padding")); // FIXME: take into account the height of the header Real translate = max (line.shape_.begin_[UP], line.shape_.rest_[UP]); @@ -1617,11 +1658,11 @@ Page_breaking::min_whitespace_at_bottom_of_page (Line_details const &line) const Real padding = 0; Page_layout_problem::read_spacing_spec (last_system_spacing, - &min_distance, - ly_symbol2scm ("minimum-distance")); + &min_distance, + ly_symbol2scm ("minimum-distance")); Page_layout_problem::read_spacing_spec (last_system_spacing, - &padding, - ly_symbol2scm ("padding")); + &padding, + ly_symbol2scm ("padding")); // FIXME: take into account the height of the footer Real translate = min (line.shape_.begin_[DOWN], line.shape_.rest_[DOWN]); diff --git a/lily/page-layout-problem-scheme.cc b/lily/page-layout-problem-scheme.cc new file mode 100644 index 0000000000..19be67cd2e --- /dev/null +++ b/lily/page-layout-problem-scheme.cc @@ -0,0 +1,36 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Joe Neeman + + 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 . +*/ + +#include "lily-guile.hh" +#include "grob.hh" +#include "page-layout-problem.hh" + +LY_DEFINE (ly_get_spacing_spec, "ly:get-spacing-spec", 2, 0, 0, + (SCM from_scm, SCM to_scm), + "Return the spacing spec going between the two given grobs," + " @var{from_scm} and @var{to_scm}.") +{ + LY_ASSERT_SMOB (Grob, from_scm, 1); + LY_ASSERT_SMOB (Grob, to_scm, 2); + + Grob *from = unsmob_grob (from_scm); + Grob *to = unsmob_grob (to_scm); + + return Page_layout_problem::get_spacing_spec (from, to, false, 0, 0); +} diff --git a/lily/page-layout-problem.cc b/lily/page-layout-problem.cc index 9ee2b3fea1..7c99670551 100644 --- a/lily/page-layout-problem.cc +++ b/lily/page-layout-problem.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2009--2011 Joe Neeman + Copyright (C) 2009--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,47 +35,294 @@ #include "text-interface.hh" /* - Returns a stencil for the footnote of each system. This stencil may - itself be comprised of several footnotes. + Returns the number of footntoes associated with a given line. */ -SCM -Page_layout_problem::get_footnotes_from_lines (SCM lines, Real padding) +vector +Page_layout_problem::get_footnote_grobs (SCM lines) { - SCM footnotes = SCM_EOL; - // ugh...code dup from the Page_layout_problem constructor + vector footnotes; for (SCM s = lines; scm_is_pair (s); s = scm_cdr (s)) { if (Grob *g = unsmob_grob (scm_car (s))) - { - System *sys = dynamic_cast (g); - if (!sys) + { + System *sys = dynamic_cast (g); + if (!sys) { programming_error ("got a grob for footnotes that wasn't a System"); continue; } - footnotes = scm_cons (sys->make_footnote_stencil (padding).smobbed_copy (), footnotes); + extract_grob_set (sys, "footnotes-after-line-breaking", footnote_grobs); + footnotes.insert (footnotes.end (), footnote_grobs.begin (), footnote_grobs.end ()); } else if (Prob *p = unsmob_prob (scm_car (s))) { SCM stencils = p->get_property ("footnotes"); if (stencils == SCM_EOL) continue; - 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); - footnotes = scm_cons (footnote_stencil.smobbed_copy (), footnotes); + footnotes.push_back (0); } } - if (!scm_is_pair (footnotes)) + return footnotes; +} + +vsize +Page_layout_problem::get_footnote_count (SCM lines) +{ + vector notes = get_footnote_grobs (lines); + return notes.size (); +} + +SCM +Page_layout_problem::get_footnotes_from_lines (SCM lines) +{ + if (!scm_is_pair (lines)) return SCM_EOL; - return scm_reverse (footnotes); + bool footnotes_added; + if (Grob *g = unsmob_grob (scm_car (lines))) + footnotes_added = !scm_is_null (g->get_property ("footnote-stencil")); + else if (Prob *p = unsmob_prob (scm_car (lines))) + footnotes_added = !scm_is_null (p->get_property ("footnote-stencil")); + else + { + programming_error ("Systems on a page must be a prob or grob."); + return SCM_EOL; + } + if (!footnotes_added) + { + programming_error ("Footnotes must be added to lines before they are retrieved."); + return SCM_EOL; + } + + SCM out = SCM_EOL; + for (SCM s = lines; scm_is_pair (s); s = scm_cdr (s)) + { + if (Grob *g = unsmob_grob (scm_car (s))) + out = scm_cons (g->get_property ("footnote-stencil"), out); + else if (Prob *p = unsmob_prob (scm_car (s))) + out = scm_cons (p->get_property ("footnote-stencil"), out); + else + programming_error ("Systems on a page must be a prob or grob."); + } + + return scm_reverse_x (out, SCM_EOL); } -Stencil* +/* + Adds a footnote stencil to 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. +*/ + +void +Page_layout_problem::add_footnotes_to_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 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); + + vector fn_grobs = get_footnote_grobs (lines); + vsize fn_count = fn_grobs.size (); + + // now, make the footnote stencils with the numbering function + SCM numbers = SCM_EOL; + SCM in_text_numbers = SCM_EOL; + /* + 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. + */ + vector footnote_number_markups; // Holds the numbering markups. + vector footnote_number_stencils; // Holds translated versions of the stencilized numbering markups. + for (vsize i = 0; i < fn_count; i++) + { + if (fn_grobs[i]) + { + SCM assertion_function = fn_grobs[i]->get_property ("numbering-assertion-function"); + if (ly_is_procedure (assertion_function)) + (void) scm_call_1 (assertion_function, scm_from_int (counter)); + } + 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."); + footnote_number_markups.push_back (SCM_EOL); + footnote_number_stencils.push_back (Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL)); + } + else + { + 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. + */ + + for (vsize i = 0; i < fn_count; i++) + { + in_text_numbers = scm_cons (footnote_number_markups[i], in_text_numbers); + footnote_number_stencils[i].translate_axis ((max_length + - footnote_number_stencils[i].extent (X_AXIS).length ()), + X_AXIS); + numbers = scm_cons (footnote_number_stencils[i].smobbed_copy (), numbers); + } + + in_text_numbers = scm_reverse_x (in_text_numbers, SCM_EOL); + numbers = scm_reverse_x (numbers, SCM_EOL); + + // build the footnotes + + 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 (g); + if (!sys) + { + programming_error ("got a grob for footnotes that wasn't a System"); + continue; + } + Stencil mol; + Stencil in_note_mol; + extract_grob_set (sys, "footnotes-after-line-breaking", footnote_grobs); + for (vsize i = 0; i < footnote_grobs.size (); i++) + { + Grob *footnote = footnote_grobs[i]; + SCM footnote_markup = footnote->get_property ("footnote-text"); + if (Spanner *orig = dynamic_cast(footnote)) + if (orig->is_broken ()) + footnote_markup = orig->broken_intos_[0]->get_property ("footnote-text"); + + 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); + bool do_numbering = to_boolean (footnote->get_property ("automatically-numbered")); + if (Spanner *orig = dynamic_cast(footnote)) + { + if (orig->is_broken ()) + for (vsize i = 0; i < orig->broken_intos_.size (); i++) + do_numbering = do_numbering + || to_boolean (orig->broken_intos_[i]->get_property ("automatically-numbered")); + } + if (do_numbering) + { + SCM annotation_scm = scm_car (in_text_numbers); + footnote->set_property ("text", annotation_scm); + if (Spanner *orig = dynamic_cast(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); + } + if (!footnote_stencil.is_empty ()) + { + if (to_boolean (footnote->get_property ("footnote"))) + mol.add_at_edge (Y_AXIS, DOWN, footnote_stencil, padding); + else + in_note_mol.add_at_edge (Y_AXIS, DOWN, footnote_stencil, padding); + } + } + sys->set_property ("in-note-stencil", in_note_mol.smobbed_copy ()); + sys->set_property ("footnote-stencil", mol.smobbed_copy ()); + } + // Take care of top-level markups + else if (Prob *p = unsmob_prob (scm_car (s))) + { + SCM stencils = p->get_property ("footnotes"); + Stencil mol; + + for (SCM st = stencils; scm_is_pair (st); st = scm_cdr (st)) + { + Stencil footnote_stencil = *unsmob_stencil (scm_caddar (st)); + bool do_numbering = to_boolean (scm_cadar (st)); + SCM in_text_stencil = Stencil ().smobbed_copy (); + if (do_numbering) + { + Stencil annotation = *unsmob_stencil (scm_car (numbers)); + SCM in_text_annotation = scm_car (in_text_numbers); + in_text_stencil = Text_interface::interpret_markup (layout, + props, + in_text_annotation); + if (!unsmob_stencil (in_text_stencil)) + in_text_stencil = SCM_EOL; + 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); + } + number_footnote_table = scm_cons (scm_cons (scm_caar (st), + in_text_stencil), + number_footnote_table); + if (!footnote_stencil.is_empty ()) + mol.add_at_edge (Y_AXIS, DOWN, footnote_stencil, padding); + } + p->set_property ("footnote-stencil", mol.smobbed_copy ()); + } + } + + // 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); +} + +Stencil Page_layout_problem::get_footnote_separator_stencil (Output_def *paper) { SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"), @@ -84,23 +331,24 @@ Page_layout_problem::get_footnote_separator_stencil (Output_def *paper) SCM markup = paper->c_variable ("footnote-separator-markup"); if (!Text_interface::is_markup (markup)) - return NULL; + return Stencil (); SCM footnote_stencil = Text_interface::interpret_markup (paper->self_scm (), props, markup); Stencil *footnote_separator = unsmob_stencil (footnote_stencil); - return footnote_separator; + return footnote_separator ? *footnote_separator : Stencil (); } -void -Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil *foot, Paper_book *pb) +Stencil +Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil foot, Paper_book *pb) { + bool footnotes_found = false; Real footnote_padding = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0); Real footnote_footer_padding = robust_scm2double (pb->paper_->c_variable ("footnote-footer-padding"), 0.0); - + footnotes = scm_reverse (footnotes); for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s)) @@ -112,42 +360,50 @@ Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil *foot, Pape if (!stencil->is_empty ()) { - foot->add_at_edge (Y_AXIS, UP, *stencil, (!footnotes_found ? footnote_footer_padding : footnote_padding)); + foot.add_at_edge (Y_AXIS, UP, *stencil, (!footnotes_found ? footnote_footer_padding : footnote_padding)); footnotes_found = true; } } - + if (footnotes_found) { - Stencil *separator = get_footnote_separator_stencil (pb->paper_); - if (separator) - foot->add_at_edge (Y_AXIS, UP, *separator, footnote_padding); + Stencil separator = get_footnote_separator_stencil (pb->paper_); + if (!separator.is_empty ()) + foot.add_at_edge (Y_AXIS, UP, separator, footnote_padding); } + + return foot; } Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM systems) : bottom_skyline_ (DOWN) { Prob *page = unsmob_prob (page_scm); + bottom_loose_baseline_ = 0; header_height_ = 0; footer_height_ = 0; header_padding_ = 0; footer_padding_ = 0; page_height_ = 100; + force_ = 0; if (page) { Stencil *head = unsmob_stencil (page->get_property ("head-stencil")); Stencil *foot = unsmob_stencil (page->get_property ("foot-stencil")); - - Real footnote_padding = 0.0; + + Stencil foot_stencil = foot ? *foot : Stencil (); + 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); - + { + SCM footnotes = get_footnotes_from_lines (systems); + foot_stencil = add_footnotes_to_footer (footnotes, foot_stencil, 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; + footer_height_ = foot_stencil.extent (Y_AXIS).length (); page_height_ = robust_scm2double (page->get_property ("paper-height"), 100); } @@ -179,64 +435,65 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst last_bottom_spacing = paper->c_variable ("last-bottom-spacing"); top_system_spacing = paper->c_variable ("top-system-spacing"); if (scm_is_pair (systems) && unsmob_prob (scm_car (systems))) - top_system_spacing = paper->c_variable ("top-markup-spacing"); + top_system_spacing = paper->c_variable ("top-markup-spacing"); // Note: the page height here does _not_ reserve space for headers and // footers. This is because we want to anchor the top-system-spacing // spring at the _top_ of the header. page_height_ -= robust_scm2double (paper->c_variable ("top-margin"), 0) - + robust_scm2double (paper->c_variable ("bottom-margin"), 0); + + robust_scm2double (paper->c_variable ("bottom-margin"), 0); read_spacing_spec (top_system_spacing, &header_padding_, ly_symbol2scm ("padding")); read_spacing_spec (last_bottom_spacing, &footer_padding_, ly_symbol2scm ("padding")); + in_note_padding_ = robust_scm2double (paper->c_variable ("in-note-padding"), 0.5); + in_note_direction_ = robust_scm2dir (paper->c_variable ("in-note-direction"), UP); } bool last_system_was_title = false; - for (SCM s = systems; scm_is_pair (s); s = scm_cdr (s)) { bool first = (s == systems); if (Grob *g = unsmob_grob (scm_car (s))) - { - System *sys = dynamic_cast (g); - if (!sys) - { - programming_error ("got a grob for vertical spacing that wasn't a System"); - continue; - } - - SCM spec = system_system_spacing; - if (first) - spec = top_system_spacing; - else if (last_system_was_title) - spec = markup_system_spacing; - else if (0 == Paper_column::get_rank (sys->get_bound (LEFT))) - spec = score_system_spacing; - - Spring spring (0, 0); - Real padding = 0.0; - Real indent = line_dimensions_int (sys->paper_score ()->layout (), sys->get_rank ())[LEFT]; - alter_spring_from_spacing_spec (spec, &spring); - read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); - - append_system (sys, spring, indent, padding); - last_system_was_title = false; - } + { + System *sys = dynamic_cast (g); + if (!sys) + { + programming_error ("got a grob for vertical spacing that wasn't a System"); + continue; + } + + SCM spec = system_system_spacing; + if (first) + spec = top_system_spacing; + else if (last_system_was_title) + spec = markup_system_spacing; + else if (0 == Paper_column::get_rank (sys->get_bound (LEFT))) + spec = score_system_spacing; + + Spring spring (0, 0); + Real padding = 0.0; + Real indent = line_dimensions_int (sys->paper_score ()->layout (), sys->get_rank ())[LEFT]; + alter_spring_from_spacing_spec (spec, &spring); + read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); + + append_system (sys, spring, indent, padding); + last_system_was_title = false; + } else if (Prob *p = unsmob_prob (scm_car (s))) - { - SCM spec = first ? top_system_spacing - : (last_system_was_title ? markup_markup_spacing : score_markup_spacing); - Spring spring (0, 0); - Real padding = 0.0; - alter_spring_from_spacing_spec (spec, &spring); - read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); - - append_prob (p, spring, padding); - last_system_was_title = true; - } + { + SCM spec = first ? top_system_spacing + : (last_system_was_title ? markup_markup_spacing : score_markup_spacing); + Spring spring (0, 0); + Real padding = 0.0; + alter_spring_from_spacing_spec (spec, &spring); + read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); + + append_prob (p, spring, padding); + last_system_was_title = true; + } else - programming_error ("got a system that was neither a Grob nor a Prob"); + programming_error ("got a system that was neither a Grob nor a Prob"); } Spring last_spring (0, 0); @@ -254,15 +511,15 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst // bottom-space has the flexibility that one can do it per-system. // NOTE: bottom-space is misnamed since it is not stretchable space. if (Prob *p = elements_.back ().prob) - bottom_padding = robust_scm2double (p->get_property ("bottom-space"), 0); + bottom_padding = robust_scm2double (p->get_property ("bottom-space"), 0); else if (elements_.back ().staves.size ()) - { - SCM details = get_details (elements_.back ()); - bottom_padding = robust_scm2double (ly_assoc_get (ly_symbol2scm ("bottom-space"), - details, - SCM_BOOL_F), - 0.0); - } + { + SCM details = get_details (elements_.back ()); + bottom_padding = robust_scm2double (ly_assoc_get (ly_symbol2scm ("bottom-space"), + details, + SCM_BOOL_F), + 0.0); + } page_height_ -= bottom_padding; } } @@ -280,7 +537,7 @@ Page_layout_problem::set_footer_height (Real height) } void -Page_layout_problem::append_system (System *sys, Spring const& spring, Real indent, Real padding) +Page_layout_problem::append_system (System *sys, Spring const &spring, Real indent, Real padding) { Grob *align = sys->get_vertical_alignment (); if (!align) @@ -289,7 +546,7 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real inde align->set_property ("positioning-done", SCM_BOOL_T); extract_grob_set (align, "elements", all_elts); - vector elts = filter_dead_elements (all_elts); + vector elts = filter_dead_elements (all_elts); vector minimum_offsets = Align_interface::get_minimum_translations_without_min_dist (align, elts, Y_AXIS); vector minimum_offsets_with_min_dist = Align_interface::get_minimum_translations (align, elts, Y_AXIS); @@ -298,6 +555,18 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real inde build_system_skyline (elts, minimum_offsets_with_min_dist, &up_skyline, &down_skyline); up_skyline.shift (indent); down_skyline.shift (indent); + Stencil *in_note_stencil = unsmob_stencil (sys->get_property ("in-note-stencil")); + + if (in_note_stencil && in_note_stencil->extent (Y_AXIS).length () > 0) + { + sys->set_property ("in-note-padding", scm_from_double (in_note_padding_)); + sys->set_property ("in-note-direction", scm_from_int (in_note_direction_)); + Skyline *sky = in_note_direction_ == UP ? &up_skyline : &down_skyline; + sky->set_minimum_height (sky->max_height () + + in_note_direction_ + * (in_note_padding_ + + in_note_stencil->extent (Y_AXIS).length ())); + } /* We need to call distance with skyline-horizontal-padding because @@ -305,14 +574,28 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real inde of an individual staff. So we add the padding for the distance check at the time of adding in the system. */ - Real minimum_distance = up_skyline.distance (bottom_skyline_, robust_scm2double (sys->get_property ("skyline-horizontal-padding"), 0)) + padding; + Real minimum_distance = up_skyline.distance (bottom_skyline_, + robust_scm2double (sys->get_property ("skyline-horizontal-padding"), + 0)) + + padding; Spring spring_copy = spring; spring_copy.ensure_min_distance (minimum_distance); springs_.push_back (spring_copy); + if (elts.size () && !is_spaceable (elts[0])) + { + // store the minimum distance, considering relative indents, + // for a loose line + Skyline first_skyline (UP); + Skyline_pair *sky = Skyline_pair::unsmob (elts[0]->get_property ("vertical-skylines")); + if (sky) + first_skyline.merge ((*sky)[UP]); + first_skyline.shift (indent); + minimum_distance = first_skyline.distance (bottom_skyline_) - bottom_loose_baseline_; + } bottom_skyline_ = down_skyline; - elements_.push_back (Element (elts, minimum_offsets, padding)); + elements_.push_back (Element (elts, minimum_offsets, minimum_distance, padding)); // Add the springs for the VerticalAxisGroups in this system. @@ -325,40 +608,50 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real inde for (vsize i = 0; i < elts.size (); ++i) { if (is_spaceable (elts[i])) - { - // We don't add a spring for the first staff, since - // we are only adding springs _between_ staves here. - if (!found_spaceable_staff) - { - found_spaceable_staff = true; - last_spaceable_staff = i; - continue; - } - - Spring spring (0.5, 0.0); - SCM spec = elts[last_spaceable_staff]->get_property ("staff-staff-spacing"); - alter_spring_from_spacing_spec (spec, &spring); - - springs_.push_back (spring); - Real min_distance = (found_spaceable_staff ? minimum_offsets_with_min_dist[last_spaceable_staff] : 0) - minimum_offsets_with_min_dist[i]; - springs_.back ().ensure_min_distance (min_distance); - - if (scm_is_pair (manual_dists)) - { - if (scm_is_number (scm_car (manual_dists))) - { - Real dy = scm_to_double (scm_car (manual_dists)); - - springs_.back ().set_distance (dy); - springs_.back ().set_min_distance (dy); - springs_.back ().set_inverse_stretch_strength (0); - } - manual_dists = scm_cdr (manual_dists); - } - last_spaceable_staff = i; - } + { + if (!found_spaceable_staff) + { + // Ensure space for any loose lines above this system + if (i > 0) + springs_.back ().ensure_min_distance (bottom_loose_baseline_ + - minimum_offsets_with_min_dist[i] + + padding); + found_spaceable_staff = true; + last_spaceable_staff = i; + // We don't add a spring for the first staff, since + // we are only adding springs _between_ staves here. + continue; + } + + Spring spring (0.5, 0.0); + SCM spec = elts[last_spaceable_staff]->get_property ("staff-staff-spacing"); + alter_spring_from_spacing_spec (spec, &spring); + + springs_.push_back (spring); + Real min_distance = (found_spaceable_staff ? minimum_offsets_with_min_dist[last_spaceable_staff] : 0) - minimum_offsets_with_min_dist[i]; + springs_.back ().ensure_min_distance (min_distance); + + if (scm_is_pair (manual_dists)) + { + if (scm_is_number (scm_car (manual_dists))) + { + Real dy = scm_to_double (scm_car (manual_dists)); + + springs_.back ().set_distance (dy); + springs_.back ().set_min_distance (dy); + springs_.back ().set_inverse_stretch_strength (0); + } + manual_dists = scm_cdr (manual_dists); + } + last_spaceable_staff = i; + } } + bottom_loose_baseline_ = found_spaceable_staff + ? ( minimum_offsets_with_min_dist[last_spaceable_staff] + - minimum_offsets_with_min_dist.back ()) + : 0; + // Corner case: there was only one staff, and it wasn't spaceable. // Mark it spaceable, because we do not allow non-spaceable staves // to be at the top or bottom of a system. @@ -367,7 +660,7 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real inde } void -Page_layout_problem::append_prob (Prob *prob, Spring const& spring, Real padding) +Page_layout_problem::append_prob (Prob *prob, Spring const &spring, Real padding) { Skyline_pair *sky = Skyline_pair::unsmob (prob->get_property ("vertical-skylines")); Real minimum_distance = 0; @@ -401,36 +694,61 @@ Page_layout_problem::append_prob (Prob *prob, Spring const& spring, Real padding elements_.push_back (Element (prob, padding)); } +/** + For ragged-last pages, we usually want to stretch the page so that it + is not much more compressed than the previous page. Here, if ragged is + true and you pass a value of fixed_force that !isinf, then I will try + to space this page using the given force. If it does not fit, I will + resort to just filling the page (non-raggedly). +*/ void -Page_layout_problem::solve_rod_spring_problem (bool ragged) +Page_layout_problem::solve_rod_spring_problem (bool ragged, Real fixed_force) { Simple_spacer spacer; for (vsize i = 0; i < springs_.size (); ++i) spacer.add_spring (springs_[i]); - spacer.solve (page_height_, ragged); + if (ragged && !isinf (fixed_force)) + { + // We need to tell the spacer it isn't ragged. Otherwise, it will + // refuse to stretch. + spacer.solve (page_height_, false); + + if (spacer.configuration_length (fixed_force) <= page_height_) + spacer.set_force (fixed_force); + } + else + spacer.solve (page_height_, ragged); + solution_ = spacer.spring_positions (); + force_ = spacer.force (); if (!spacer.fits ()) { Real overflow = spacer.configuration_length (spacer.force ()) - - page_height_; + - page_height_; if (ragged && overflow < 1e-6) - warning (_ ("cannot fit music on page: ragged-spacing was requested, but page was compressed")); + warning (_ ("cannot fit music on page: ragged-spacing was requested, but page was compressed")); else - { - warning (_f ("cannot fit music on page: overflow is %f", - overflow)); - warning (_ ("compressing music to fit")); - vsize space_count = solution_.size (); - Real spacing_increment = overflow / (space_count - 2); - for (vsize i = 2; i < space_count; i++) - solution_[i] -= (i-1) * spacing_increment; - } + { + warning (_f ("cannot fit music on page: overflow is %f", + overflow)); + warning (_ ("compressing music to fit")); + vsize space_count = solution_.size (); + Real spacing_increment = overflow / (space_count - 2); + for (vsize i = 2; i < space_count; i++) + solution_[i] -= (i - 1) * spacing_increment; + } } } +Real +Page_layout_problem::force () const +{ + return force_; +} + // The solution_ vector stores the position of every live VerticalAxisGroup // and every title. From that information, // 1) within each system, stretch the staves so they land at the right position @@ -444,7 +762,7 @@ Page_layout_problem::find_system_offsets () // spring_idx 0 is the top of the page. Interesting values start from 1. vsize spring_idx = 1; - vector loose_lines; + vector loose_lines; vector loose_line_min_distances; Grob *last_spaceable_line = 0; Real last_spaceable_line_translation = 0; @@ -452,126 +770,134 @@ Page_layout_problem::find_system_offsets () for (vsize i = 0; i < elements_.size (); ++i) { if (elements_[i].prob) - { - *tail = scm_cons (scm_from_double (solution_[spring_idx]), SCM_EOL); - tail = SCM_CDRLOC (*tail); - Interval prob_extent = unsmob_stencil (elements_[i].prob->get_property ("stencil"))->extent (Y_AXIS); - - // Lay out any non-spaceable lines between this line and - // the last one. - if (loose_lines.size ()) - { - Interval loose_extent = loose_lines.back ()->extent (loose_lines.back (), Y_AXIS); - Real min_distance = (-loose_extent[DOWN] + prob_extent[UP] - + elements_[i].padding); - - loose_line_min_distances.push_back (min_distance); - loose_lines.push_back (0); - - distribute_loose_lines (loose_lines, loose_line_min_distances, - last_spaceable_line_translation, -solution_[spring_idx]); - loose_lines.clear (); - loose_line_min_distances.clear (); - } - - last_spaceable_line = 0; - last_spaceable_line_translation = -solution_[spring_idx]; - last_title_extent = prob_extent; - spring_idx++; - } + { + *tail = scm_cons (scm_from_double (solution_[spring_idx]), SCM_EOL); + tail = SCM_CDRLOC (*tail); + Interval prob_extent = unsmob_stencil (elements_[i].prob->get_property ("stencil"))->extent (Y_AXIS); + + // Lay out any non-spaceable lines between this line and + // the last one. + if (loose_lines.size ()) + { + Interval loose_extent = loose_lines.back ()->extent (loose_lines.back (), Y_AXIS); + Real min_distance = (-loose_extent[DOWN] + prob_extent[UP] + + elements_[i].padding); + + loose_line_min_distances.push_back (min_distance); + loose_lines.push_back (0); + + distribute_loose_lines (loose_lines, loose_line_min_distances, + last_spaceable_line_translation, -solution_[spring_idx]); + loose_lines.clear (); + loose_line_min_distances.clear (); + } + + last_spaceable_line = 0; + last_spaceable_line_translation = -solution_[spring_idx]; + last_title_extent = prob_extent; + spring_idx++; + } else - { - // Getting this signs right here is a little tricky. The configuration - // we return has zero at the top of the page and positive numbers further - // down, as does the solution_ vector. Within a staff, however, positive - // numbers are up. - // TODO: perhaps change the way the page 'configuration variable works so - // that it is consistent with the usual up/down sign conventions in - // Lilypond. Then this would be less confusing. - - // These two positions are relative to the page (with positive numbers being - // down). - Real first_staff_position = solution_[spring_idx]; - Real first_staff_min_translation = elements_[i].min_offsets.size () ? elements_[i].min_offsets[0] : 0; - Real system_position = first_staff_position + first_staff_min_translation; - - // Position the staves within this system. - vector const& min_offsets = elements_[i].min_offsets; - bool found_spaceable_staff = false; - for (vsize staff_idx = 0; staff_idx < elements_[i].staves.size (); ++staff_idx) - { - Grob *staff = elements_[i].staves[staff_idx]; - staff->set_property ("system-Y-offset", scm_from_double (-system_position)); - - if (is_spaceable (staff)) - { - // this is relative to the system: negative numbers are down. - staff->translate_axis (system_position - solution_[spring_idx], Y_AXIS); - - // Lay out any non-spaceable lines between this line and - // the last one. - if (loose_lines.size ()) - { - if (staff_idx) - loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]); - else - loose_line_min_distances.push_back (elements_[i].padding - min_offsets[staff_idx]); - loose_lines.push_back (staff); - - distribute_loose_lines (loose_lines, loose_line_min_distances, - last_spaceable_line_translation, -solution_[spring_idx]); - loose_lines.clear (); - loose_line_min_distances.clear (); - } - last_spaceable_line = staff; - last_spaceable_line_translation = -solution_[spring_idx]; - found_spaceable_staff = true; - spring_idx++; - } - else - { - if (loose_lines.empty ()) - loose_lines.push_back (last_spaceable_line); - - if (staff_idx) - // NOTE: the way we do distances between loose lines (and other lines too, actually) - // is not the most accurate way possible: we only insert rods between adjacent - // lines. To be more accurate, we could insert rods between non-adjacent lines - // using a scheme similar to the one in set_column_rods. - loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]); - else - { // this is the first line in a system - Real min_dist = 0; - if (loose_lines.back ()) - // distance to the final line in the preceding system, - // including 'system-system-spacing 'padding - min_dist = (Axis_group_interface::minimum_distance (loose_lines.back (), - staff, - Y_AXIS) - + elements_[i].padding); - else if (!last_title_extent.is_empty ()) - // distance to the preceding title, - // including 'markup-system-spacing 'padding - min_dist = (staff->extent (staff, Y_AXIS)[UP] - last_title_extent[DOWN] - + elements_[i].padding); - else // distance to the top margin - min_dist = header_padding_ + header_height_ + staff->extent (staff, Y_AXIS)[UP]; - - loose_line_min_distances.push_back (min_dist); - } - loose_lines.push_back (staff); - } - } - - // Corner case: even if a system has no live staves, it still takes up - // one spring (a system with one live staff also takes up one spring), - // which we need to increment past. - if (!found_spaceable_staff) - spring_idx++; - - *tail = scm_cons (scm_from_double (system_position), SCM_EOL); - tail = SCM_CDRLOC (*tail); - } + { + // Getting this signs right here is a little tricky. The configuration + // we return has zero at the top of the page and positive numbers further + // down, as does the solution_ vector. Within a staff, however, positive + // numbers are up. + // TODO: perhaps change the way the page 'configuration variable works so + // that it is consistent with the usual up/down sign conventions in + // Lilypond. Then this would be less confusing. + + // These two positions are relative to the page (with positive numbers being + // down). + Real first_staff_position = solution_[spring_idx]; + Real first_staff_min_translation = elements_[i].min_offsets.size () ? elements_[i].min_offsets[0] : 0; + Real system_position = first_staff_position + first_staff_min_translation; + + // Position the staves within this system. + vector const &min_offsets = elements_[i].min_offsets; + bool found_spaceable_staff = false; + for (vsize staff_idx = 0; staff_idx < elements_[i].staves.size (); ++staff_idx) + { + Grob *staff = elements_[i].staves[staff_idx]; + staff->set_property ("system-Y-offset", scm_from_double (-system_position)); + + if (is_spaceable (staff)) + { + // this is relative to the system: negative numbers are down. + staff->translate_axis (system_position - solution_[spring_idx], Y_AXIS); + + // Lay out any non-spaceable lines between this line and + // the last one. + if (loose_lines.size ()) + { + if (staff_idx) + loose_line_min_distances.push_back (min_offsets[staff_idx - 1] - min_offsets[staff_idx]); + else + { + // A null line to break any staff-affinity from the previous system + loose_line_min_distances.push_back (0.0); + loose_lines.push_back (0); + loose_line_min_distances.push_back (elements_[i].padding - min_offsets[0]); + } + loose_lines.push_back (staff); + + distribute_loose_lines (loose_lines, loose_line_min_distances, + last_spaceable_line_translation, -solution_[spring_idx]); + loose_lines.clear (); + loose_line_min_distances.clear (); + } + last_spaceable_line = staff; + last_spaceable_line_translation = -solution_[spring_idx]; + found_spaceable_staff = true; + spring_idx++; + } + else // ! is_spaceable + { + if (loose_lines.empty ()) + loose_lines.push_back (last_spaceable_line); + + if (staff_idx) + // NOTE: the way we do distances between loose lines (and other lines too, actually) + // is not the most accurate way possible: we only insert rods between adjacent + // lines. To be more accurate, we could insert rods between non-adjacent lines + // using a scheme similar to the one in set_column_rods. + loose_line_min_distances.push_back (min_offsets[staff_idx - 1] - min_offsets[staff_idx]); + else + { + // this is the first line in a system + Real min_dist = 0; + if (loose_lines.back ()) + { + // distance to the final line in the preceding system, + // including 'system-system-spacing 'padding + min_dist = elements_[i].min_distance + elements_[i].padding; + // A null line to break any staff-affinity for the previous system + loose_line_min_distances.push_back (0.0); + loose_lines.push_back (0); + } + else if (!last_title_extent.is_empty ()) + // distance to the preceding title, + // including 'markup-system-wg 'padding + min_dist = (staff->extent (staff, Y_AXIS)[UP] - last_title_extent[DOWN] + + elements_[i].padding); + else // distance to the top margin + min_dist = header_padding_ + header_height_ + staff->extent (staff, Y_AXIS)[UP]; + + loose_line_min_distances.push_back (min_dist); + } + loose_lines.push_back (staff); + } + } + + // Corner case: even if a system has no live staves, it still takes up + // one spring (a system with one live staff also takes up one spring), + // which we need to increment past. + if (!found_spaceable_staff) + spring_idx++; + + *tail = scm_cons (scm_from_double (system_position), SCM_EOL); + tail = SCM_CDRLOC (*tail); + } } if (loose_lines.size ()) @@ -582,7 +908,7 @@ Page_layout_problem::find_system_offsets () loose_lines.push_back (0); distribute_loose_lines (loose_lines, loose_line_min_distances, - last_spaceable_line_translation, -page_height_); + last_spaceable_line_translation, -page_height_); } @@ -595,14 +921,14 @@ Page_layout_problem::find_system_offsets () // them. // first_translation and last_translation are relative to the page. void -Page_layout_problem::distribute_loose_lines (vector const &loose_lines, - vector const &min_distances, - Real first_translation, Real last_translation) +Page_layout_problem::distribute_loose_lines (vector const &loose_lines, + vector const &min_distances, + Real first_translation, Real last_translation) { Simple_spacer spacer; for (vsize i = 0; i + 1 < loose_lines.size (); ++i) { - SCM spec = get_spacing_spec (loose_lines[i], loose_lines[i+1], false, 0, INT_MAX); + SCM spec = get_spacing_spec (loose_lines[i], loose_lines[i + 1], false, 0, INT_MAX); Spring spring (1.0, 0.0); alter_spring_from_spacing_spec (spec, &spring); spring.ensure_min_distance (min_distances[i]); @@ -614,16 +940,24 @@ Page_layout_problem::distribute_loose_lines (vector const &loose_lines, vector solution = spacer.spring_positions (); for (vsize i = 1; i + 1 < solution.size (); ++i) - { - Real system_offset = scm_to_double (loose_lines[i]->get_property ("system-Y-offset")); - loose_lines[i]->translate_axis (first_translation - solution[i] - system_offset, Y_AXIS); - } + if (loose_lines[i]) + { + Real system_offset = scm_to_double (loose_lines[i]->get_property ("system-Y-offset")); + loose_lines[i]->translate_axis (first_translation - solution[i] - system_offset, Y_AXIS); + } +} + +SCM +Page_layout_problem::fixed_force_solution (Real force) +{ + solve_rod_spring_problem (true, force); + return find_system_offsets (); } SCM Page_layout_problem::solution (bool ragged) { - solve_rod_spring_problem (ragged); + solve_rod_spring_problem (ragged, -infinity_f); return find_system_offsets (); } @@ -637,10 +971,10 @@ Page_layout_problem::solution (bool ragged) // The upper skyline is relative to the top staff; the lower skyline is relative to // the bottom staff. void -Page_layout_problem::build_system_skyline (vector const& staves, - vector const& minimum_translations, - Skyline *up, - Skyline *down) +Page_layout_problem::build_system_skyline (vector const &staves, + vector const &minimum_translations, + Skyline *up, + Skyline *down) { if (minimum_translations.empty ()) return; @@ -657,24 +991,24 @@ Page_layout_problem::build_system_skyline (vector const& staves, Grob *g = staves[i]; Skyline_pair *sky = Skyline_pair::unsmob (g->get_property ("vertical-skylines")); if (sky) - { - up->raise (-dy); - up->merge ((*sky)[UP]); - up->raise (dy); - - down->raise (-dy); - down->merge ((*sky)[DOWN]); - down->raise (dy); - } + { + up->raise (-dy); + up->merge ((*sky)[UP]); + up->raise (dy); + + down->raise (-dy); + down->merge ((*sky)[DOWN]); + down->raise (dy); + } if (is_spaceable (staves[i])) - { - if (!found_spaceable_staff) - { - found_spaceable_staff = true; - first_spaceable_dy = dy; - } - last_spaceable_dy = dy; - } + { + if (!found_spaceable_staff) + { + found_spaceable_staff = true; + first_spaceable_dy = dy; + } + last_spaceable_dy = dy; + } } // Leave the up skyline at a position relative @@ -694,7 +1028,7 @@ Page_layout_problem::prob_extent (Prob *p) } Interval -Page_layout_problem::first_staff_extent (Element const& e) +Page_layout_problem::first_staff_extent (Element const &e) { if (e.prob) return prob_extent (e.prob); @@ -705,7 +1039,7 @@ Page_layout_problem::first_staff_extent (Element const& e) } Interval -Page_layout_problem::last_staff_extent (Element const& e) +Page_layout_problem::last_staff_extent (Element const &e) { if (e.prob) return prob_extent (e.prob); @@ -716,7 +1050,7 @@ Page_layout_problem::last_staff_extent (Element const& e) } SCM -Page_layout_problem::get_details (Element const& elt) +Page_layout_problem::get_details (Element const &elt) { if (elt.staves.empty ()) return SCM_EOL; @@ -727,7 +1061,7 @@ Page_layout_problem::get_details (Element const& elt) SCM Page_layout_problem::get_details (Grob *g) { - Grob *left_bound = dynamic_cast (g)->get_bound (LEFT); + Grob *left_bound = dynamic_cast (g)->get_bound (LEFT); return left_bound->get_property ("line-break-system-details"); } @@ -744,7 +1078,7 @@ Page_layout_problem::mark_as_spaceable (Grob *g) } bool -Page_layout_problem::read_spacing_spec (SCM spec, Real* dest, SCM sym) +Page_layout_problem::read_spacing_spec (SCM spec, Real *dest, SCM sym) { SCM pair = scm_sloppy_assq (sym, spec); if (scm_is_pair (pair) && scm_is_number (scm_cdr (pair))) @@ -762,25 +1096,20 @@ Page_layout_problem::read_spacing_spec (SCM spec, Real* dest, SCM sym) Real Page_layout_problem::get_fixed_spacing (Grob *before, Grob *after, int spaceable_index, bool pure, int start, int end) { - Spanner *after_sp = dynamic_cast (after); + Spanner *after_sp = dynamic_cast (after); SCM cache_symbol = (is_spaceable (before) && is_spaceable (after)) - ? ly_symbol2scm ("spaceable-fixed-spacing") - : ly_symbol2scm ("loose-fixed-spacing"); + ? ly_symbol2scm ("spaceable-fixed-spacing") + : ly_symbol2scm ("loose-fixed-spacing"); if (pure) { // The result of this function doesn't depend on "end," so we can reduce the // size of the cache by ignoring it. SCM cached = after_sp->get_cached_pure_property (cache_symbol, start, 0); if (scm_is_number (cached)) - return robust_scm2double (cached, 0.0); + 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. @@ -792,17 +1121,17 @@ Page_layout_problem::get_fixed_spacing (Grob *before, Grob *after, int spaceable SCM details = left_bound->get_property ("line-break-system-details"); SCM manual_dists = ly_assoc_get (ly_symbol2scm ("alignment-distances"), details, SCM_EOL); if (scm_is_pair (manual_dists)) - { - SCM forced = robust_list_ref (spaceable_index - 1, manual_dists); - if (scm_is_number (forced)) - ret = max (ret, scm_to_double (forced)); - } + { + SCM forced = robust_list_ref (spaceable_index - 1, manual_dists); + if (scm_is_number (forced)) + ret = max (ret, scm_to_double (forced)); + } } // 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; } @@ -837,44 +1166,44 @@ Page_layout_problem::get_spacing_spec (Grob *before, Grob *after, bool pure, int if (is_spaceable (before)) { if (is_spaceable (after)) - return before->get_maybe_pure_property ("staff-staff-spacing", pure, start, end); + return before->get_maybe_pure_property ("staff-staff-spacing", pure, start, end); else - { - Direction affinity = to_dir (after->get_maybe_pure_property ("staff-affinity", pure, start, end)); - return (affinity == DOWN) - ? add_stretchability (after->get_maybe_pure_property ("nonstaff-unrelatedstaff-spacing", pure, start, end), - LARGE_STRETCH) - : after->get_maybe_pure_property ("nonstaff-relatedstaff-spacing", pure, start, end); - } + { + Direction affinity = to_dir (after->get_maybe_pure_property ("staff-affinity", pure, start, end)); + return (affinity == DOWN) + ? add_stretchability (after->get_maybe_pure_property ("nonstaff-unrelatedstaff-spacing", pure, start, end), + LARGE_STRETCH) + : after->get_maybe_pure_property ("nonstaff-relatedstaff-spacing", pure, start, end); + } } else { if (is_spaceable (after)) - { - Direction affinity = to_dir (before->get_maybe_pure_property ("staff-affinity", pure, start, end)); - return (affinity == UP) - ? add_stretchability (before->get_maybe_pure_property ("nonstaff-unrelatedstaff-spacing", pure, start, end), - LARGE_STRETCH) - : before->get_maybe_pure_property ("nonstaff-relatedstaff-spacing", pure, start, end); - } + { + Direction affinity = to_dir (before->get_maybe_pure_property ("staff-affinity", pure, start, end)); + return (affinity == UP) + ? add_stretchability (before->get_maybe_pure_property ("nonstaff-unrelatedstaff-spacing", pure, start, end), + LARGE_STRETCH) + : before->get_maybe_pure_property ("nonstaff-relatedstaff-spacing", pure, start, end); + } else - { - Direction before_affinity = to_dir (before->get_maybe_pure_property ("staff-affinity", pure, start, end)); - Direction after_affinity = to_dir (after->get_maybe_pure_property ("staff-affinity", pure, start, end)); - static bool warned = false; - if (after_affinity > before_affinity - && !warned && !pure) - { - warning (_ ("staff-affinities should only decrease")); - warned = true; - } - if (before_affinity != UP) - return before->get_maybe_pure_property ("nonstaff-nonstaff-spacing", pure, start, end); - else if (after_affinity != DOWN) - return before->get_maybe_pure_property ("nonstaff-nonstaff-spacing", pure, start, end); - return add_stretchability (before->get_maybe_pure_property ("nonstaff-unrelatedstaff-spacing", pure, start, end), - LARGE_STRETCH); - } + { + Direction before_affinity = to_dir (before->get_maybe_pure_property ("staff-affinity", pure, start, end)); + Direction after_affinity = to_dir (after->get_maybe_pure_property ("staff-affinity", pure, start, end)); + static bool warned = false; + if (after_affinity > before_affinity + && !warned && !pure) + { + warning (_ ("staff-affinities should only decrease")); + warned = true; + } + if (before_affinity != UP) + return before->get_maybe_pure_property ("nonstaff-nonstaff-spacing", pure, start, end); + else if (after_affinity != DOWN) + return before->get_maybe_pure_property ("nonstaff-nonstaff-spacing", pure, start, end); + return add_stretchability (before->get_maybe_pure_property ("nonstaff-unrelatedstaff-spacing", pure, start, end), + LARGE_STRETCH); + } } assert (0); @@ -882,7 +1211,7 @@ Page_layout_problem::get_spacing_spec (Grob *before, Grob *after, bool pure, int } void -Page_layout_problem::alter_spring_from_spacing_spec (SCM spec, Spring* spring) +Page_layout_problem::alter_spring_from_spacing_spec (SCM spec, Spring *spring) { Real space; Real stretch; @@ -894,23 +1223,20 @@ 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 -Page_layout_problem::filter_dead_elements (vector const& input) +vector +Page_layout_problem::filter_dead_elements (vector const &input) { - vector output; + vector output; for (vsize i = 0; i < input.size (); ++i) { if (Hara_kiri_group_spanner::has_interface (input[i])) - Hara_kiri_group_spanner::consider_suicide (input[i]); + Hara_kiri_group_spanner::consider_suicide (input[i]); if (input[i]->is_live ()) - output.push_back (input[i]); + output.push_back (input[i]); } return output; diff --git a/lily/page-marker-scheme.cc b/lily/page-marker-scheme.cc index 09bb3abdfe..819fcca894 100644 --- a/lily/page-marker-scheme.cc +++ b/lily/page-marker-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Nicolas Sceaux + Copyright (C) 2007--2012 Nicolas Sceaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,9 +20,9 @@ #include "page-marker.hh" LY_DEFINE (ly_make_page_permission_marker, "ly:make-page-permission-marker", - 2, 0, 0, - (SCM symbol, SCM permission), - "Return page marker with page breaking and turning permissions.") + 2, 0, 0, + (SCM symbol, SCM permission), + "Return page marker with page breaking and turning permissions.") { LY_ASSERT_TYPE (ly_is_symbol, symbol, 1); Page_marker *page_marker = new Page_marker (); @@ -31,9 +31,9 @@ LY_DEFINE (ly_make_page_permission_marker, "ly:make-page-permission-marker", } LY_DEFINE (ly_make_page_label_marker, "ly:make-page-label-marker", - 1, 0, 0, - (SCM label), - "Return page marker with label @var{label}.") + 1, 0, 0, + (SCM label), + "Return page marker with label @var{label}.") { LY_ASSERT_TYPE (ly_is_symbol, label, 1); Page_marker *page_marker = new Page_marker (); diff --git a/lily/page-marker.cc b/lily/page-marker.cc index b4bbc00e34..adf623ffd0 100644 --- a/lily/page-marker.cc +++ b/lily/page-marker.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Nicolas Sceaux + Copyright (C) 2007--2012 Nicolas Sceaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/page-spacing-result.cc b/lily/page-spacing-result.cc index 827dbd4444..9d545e33e8 100644 --- a/lily/page-spacing-result.cc +++ b/lily/page-spacing-result.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,7 +31,7 @@ Page_spacing_result::Page_spacing_result () vsize Page_spacing_result::page_count () const { - return systems_per_page_.size(); + return systems_per_page_.size (); } Real @@ -48,8 +48,8 @@ Page_spacing_result::average_force () const void Page_spacing_result::print () const { - printf ("penalty %lf, demerits %lf\n" , penalty_, demerits_); + printf ("penalty %lf, demerits %lf\n", penalty_, demerits_); for (vsize i = 0; i < page_count (); i++) printf (" %d: #sys=%d, force=%lf\n", int (i), int (systems_per_page_[i]), - force_[i]); + force_[i]); } diff --git a/lily/page-spacing.cc b/lily/page-spacing.cc index b04d3f394a..9434fb910a 100644 --- a/lily/page-spacing.cc +++ b/lily/page-spacing.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,14 +28,14 @@ void Page_spacing::calc_force () { Real height = page_height_ - - breaker_->min_whitespace_at_top_of_page (first_line_) - - breaker_->min_whitespace_at_bottom_of_page (last_line_); + - breaker_->min_whitespace_at_top_of_page (first_line_) + - breaker_->min_whitespace_at_bottom_of_page (last_line_); if (rod_height_ + last_line_.bottom_padding_ >= height) force_ = -infinity_f; else force_ = (height - rod_height_ - last_line_.bottom_padding_ - spring_len_) - / max (0.1, inverse_spring_k_); + / max (0.1, inverse_spring_k_); } void @@ -72,23 +72,39 @@ Real Page_spacing::account_for_footnotes (Line_details const &line) { Real footnote_height = 0.0; - for (vsize i = 0; i < line.footnotes_.size (); i++) + Real in_note_height = 0.0; + bool has_in_notes = false; + for (vsize i = 0; i < line.in_note_heights_.size (); i++) + { + in_note_height += (has_in_notes + ? 0.0 + : breaker_->in_note_padding ()); + has_in_notes = true; + in_note_height += line.in_note_heights_[i]; + } + + for (vsize i = 0; i < line.footnote_heights_.size (); i++) { 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); - footnote_height += extent[UP] - extent[DOWN]; + footnote_height += line.footnote_heights_[i]; footnote_height += breaker_->footnote_padding (); } - return (footnote_height - - (has_footnotes_ - ? breaker_->footnote_padding () + breaker_->footnote_footer_padding () - : 0.0)); + return (in_note_height + - (has_in_notes + ? breaker_->in_note_padding () + : 0.0)) + + + (footnote_height + - (has_footnotes_ + ? breaker_->footnote_padding () + breaker_->footnote_footer_padding () + : 0.0)); } void @@ -101,7 +117,7 @@ Page_spacing::prepend_system (const Line_details &line) rod_height_ -= first_line_.full_height (); rod_height_ += first_line_.tallness_; - rod_height_ += line.full_height(); + rod_height_ += line.full_height (); rod_height_ += account_for_footnotes (line); inverse_spring_k_ += line.inverse_hooke_; @@ -118,7 +134,6 @@ Page_spacing::clear () has_footnotes_ = false; } - Page_spacer::Page_spacer (vector const &lines, vsize first_page_num, Page_breaking const *breaker) : lines_ (lines) { @@ -136,18 +151,18 @@ Page_spacer::solve () { simple_state_.resize (lines_.size ()); for (vsize i = 0; i < lines_.size (); ++i) - calc_subproblem (VPOS, i); + calc_subproblem (VPOS, i); } Page_spacing_result ret; ret.penalty_ = simple_state_.back ().penalty_ - + lines_.back ().page_penalty_ + lines_.back ().turn_penalty_; + + lines_.back ().page_penalty_ + lines_.back ().turn_penalty_; ret.system_count_status_ = simple_state_.back ().system_count_status_; vsize system = lines_.size () - 1; while (system != VPOS) { - Page_spacing_node const& cur = simple_state_[system]; + Page_spacing_node const &cur = simple_state_[system]; vsize system_count = (cur.prev_ == VPOS) ? system + 1 : system - cur.prev_; ret.force_.push_back (cur.force_); @@ -173,45 +188,45 @@ Page_spacer::solve (vsize page_count) vsize extra_systems = 0; vsize extra_pages = 0; - if (isinf (state_.at (system, page_count-1).demerits_)) + if (isinf (state_.at (system, page_count - 1).demerits_)) { programming_error ("tried to space systems on a bad number of pages"); /* Usually, this means that we tried to cram too many systems into - to few pages. To avoid crashing, we look for the largest number of - systems that we can fit properly onto the right number of pages. - All the systems that don't fit get tacked onto the last page. + to few pages. To avoid crashing, we look for the largest number of + systems that we can fit properly onto the right number of pages. + All the systems that don't fit get tacked onto the last page. */ vsize i; - for (i = system; isinf (state_.at (i, page_count-1).demerits_) && i; i--) - ; + for (i = system; isinf (state_.at (i, page_count - 1).demerits_) && i; i--) + ; if (i) - { - extra_systems = system - i; - system = i; - } + { + extra_systems = system - i; + system = i; + } else - { - /* try chopping off pages from the end */ - vsize j; - for (j = page_count; j && isinf (state_.at (system, j-1).demerits_); j--) - ; - - if (j) - { - extra_pages = page_count - j; - page_count = j; - } - else - return Page_spacing_result (); /* couldn't salvage it -- probably going to crash */ - } + { + /* try chopping off pages from the end */ + vsize j; + for (j = page_count; j && isinf (state_.at (system, j - 1).demerits_); j--) + ; + + if (j) + { + extra_pages = page_count - j; + page_count = j; + } + else + return Page_spacing_result (); /* couldn't salvage it -- probably going to crash */ + } } ret.force_.resize (page_count); ret.systems_per_page_.resize (page_count); - ret.system_count_status_ = state_.at (system, page_count-1).system_count_status_; - ret.penalty_ = state_.at (system, page_count-1).penalty_ - + lines_.back ().page_penalty_ + lines_.back ().turn_penalty_; + ret.system_count_status_ = state_.at (system, page_count - 1).system_count_status_; + ret.penalty_ = state_.at (system, page_count - 1).penalty_ + + lines_.back ().page_penalty_ + lines_.back ().turn_penalty_; ret.demerits_ = 0; for (vsize p = page_count; p--;) @@ -222,9 +237,9 @@ Page_spacer::solve (vsize page_count) ret.force_[p] = ps.force_; ret.demerits_ += ps.force_ * ps.force_; if (p == 0) - ret.systems_per_page_[p] = system + 1; + ret.systems_per_page_[p] = system + 1; else - ret.systems_per_page_[p] = system - ps.prev_; + ret.systems_per_page_[p] = system - ps.prev_; system = ps.prev_; } @@ -254,7 +269,7 @@ Page_spacer::resize (vsize page_count) for (vsize page = max_page_count_; page < page_count; page++) for (vsize line = page; line < lines_.size (); line++) if (!calc_subproblem (page, line)) - break; + break; max_page_count_ = page_count; } @@ -286,92 +301,92 @@ Page_spacer::calc_subproblem (vsize page, vsize line) vsize page_num = page == VPOS ? 0 : page; Real paper_height = breaker_->paper_height (); Page_spacing space (breaker_->page_height (page_num + first_page_num_, last), - breaker_); + breaker_); Page_spacing_node &cur = page == VPOS ? simple_state_[line] : state_.at (line, page); bool ragged = ragged_ || (ragged_last_ && last); int line_count = 0; - for (vsize page_start = line+1; page_start > page_num && page_start--;) + for (vsize page_start = line + 1; page_start > page_num && page_start--;) { Page_spacing_node const *prev = 0; if (page == VPOS) - { - if (page_start > 0) - { - prev = &simple_state_[page_start-1]; - space.resize (breaker_->page_height (prev->page_ + 1, last)); - } - else - space.resize (breaker_->page_height (first_page_num_, last)); - } + { + if (page_start > 0) + { + prev = &simple_state_[page_start - 1]; + space.resize (breaker_->page_height (prev->page_ + 1, last)); + } + else + space.resize (breaker_->page_height (first_page_num_, last)); + } else if (page > 0) - prev = &state_.at (page_start-1, page-1); + prev = &state_.at (page_start - 1, page - 1); space.prepend_system (lines_[page_start]); bool overfull = (space.rod_height_ > paper_height - || (ragged - && (space.rod_height_ + space.spring_len_ > paper_height))); + || (ragged + && (space.rod_height_ + space.spring_len_ > paper_height))); // This 'if' statement is a little hard to parse. It won't consider this configuration // if it is overfull unless the current configuration is the first one with this start // point. We also make an exception (and consider this configuration) if the previous // configuration we tried had fewer lines than min-systems-per-page. if (!breaker_->too_few_lines (line_count) - && page_start < line - && overfull) - break; + && page_start < line + && overfull) + break; line_count += lines_[page_start].compressed_nontitle_lines_count_; if (page > 0 || page_start == 0) - { - // If the last page is ragged, set its force to zero. This way, we will leave - // the last page half-empty rather than trying to balance things out - // (which only makes sense in non-ragged situations). - if (line == lines_.size () - 1 && ragged && last && space.force_ > 0) - space.force_ = 0; - - Real demerits = space.force_ * space.force_; - - // Clamp the demerits at BAD_SPACING_PENALTY, even if the page - // is overfull. This ensures that TERRIBLE_SPACING_PENALTY takes - // precedence over overfull pages. - demerits = min (demerits, BAD_SPACING_PENALTY); - demerits += (prev ? prev->demerits_ : 0); - - Real penalty = breaker_->line_count_penalty (line_count); - if (page_start > 0) - penalty += lines_[page_start-1].page_penalty_ - + (page % 2 == 0) ? lines_[page_start-1].turn_penalty_ : 0; - - /* Deal with widow/orphan lines */ - /* Last line of paragraph is first line on the new page */ - if ((page_start > 0) && - (page_start < lines_.size ()) && - (lines_[page_start].last_markup_line_)) - penalty += breaker_->orphan_penalty (); - /* First line of paragraph is last line on the previous page */ - if ((page_start > 0) && - (page_start < lines_.size ()) && - (lines_[page_start-1].first_markup_line_)) - penalty += breaker_->orphan_penalty (); - - demerits += penalty; - if (demerits < cur.demerits_ || page_start == line) - { - cur.demerits_ = demerits; - cur.force_ = space.force_; - cur.penalty_ = penalty + (prev ? prev->penalty_ : 0); - cur.system_count_status_ = breaker_->line_count_status (line_count) - | (prev ? prev->system_count_status_ : 0); - cur.prev_ = page_start - 1; - cur.page_ = prev ? prev->page_ + 1 : first_page_num_; - } - } + { + // If the last page is ragged, set its force to zero. This way, we will leave + // the last page half-empty rather than trying to balance things out + // (which only makes sense in non-ragged situations). + if (line == lines_.size () - 1 && ragged && last && space.force_ > 0) + space.force_ = 0; + + Real demerits = space.force_ * space.force_; + + // Clamp the demerits at BAD_SPACING_PENALTY, even if the page + // is overfull. This ensures that TERRIBLE_SPACING_PENALTY takes + // precedence over overfull pages. + demerits = min (demerits, BAD_SPACING_PENALTY); + demerits += (prev ? prev->demerits_ : 0); + + Real penalty = breaker_->line_count_penalty (line_count); + if (page_start > 0) + penalty += lines_[page_start - 1].page_penalty_ + + (page % 2 == 0) ? lines_[page_start - 1].turn_penalty_ : 0; + + /* Deal with widow/orphan lines */ + /* Last line of paragraph is first line on the new page */ + if ((page_start > 0) + && (page_start < lines_.size ()) + && (lines_[page_start].last_markup_line_)) + penalty += breaker_->orphan_penalty (); + /* First line of paragraph is last line on the previous page */ + if ((page_start > 0) + && (page_start < lines_.size ()) + && (lines_[page_start - 1].first_markup_line_)) + penalty += breaker_->orphan_penalty (); + + demerits += penalty; + if (demerits < cur.demerits_ || page_start == line) + { + cur.demerits_ = demerits; + cur.force_ = space.force_; + cur.penalty_ = penalty + (prev ? prev->penalty_ : 0); + cur.system_count_status_ = breaker_->line_count_status (line_count) + | (prev ? prev->system_count_status_ : 0); + cur.prev_ = page_start - 1; + cur.page_ = prev ? prev->page_ + 1 : first_page_num_; + } + } if (page_start > 0 - && lines_[page_start-1].page_permission_ == ly_symbol2scm ("force")) - break; + && lines_[page_start - 1].page_permission_ == ly_symbol2scm ("force")) + break; } return !isinf (cur.demerits_); } diff --git a/lily/page-turn-engraver.cc b/lily/page-turn-engraver.cc index 5d08a24b91..d7c7ccec32 100644 --- a/lily/page-turn-engraver.cc +++ b/lily/page-turn-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,8 @@ #include "translator.icc" -class Page_turn_event { +class Page_turn_event +{ public: SCM permission_; Real penalty_; @@ -56,8 +57,8 @@ public: if (intersect.is_empty ()) { - ret.push_back (*this); - return ret; + ret.push_back (*this); + return ret; } Real new_pen = max (penalty_, penalty.penalty_); @@ -88,7 +89,7 @@ class Page_turn_engraver : public Engraver /* the next 3 are in sync (ie. same number of elements, etc.) */ vector breakable_moments_; - vector breakable_columns_; + vector breakable_columns_; vector special_barlines_; SCM max_permission (SCM perm1, SCM perm2); @@ -114,7 +115,7 @@ Page_turn_engraver::Page_turn_engraver () note_end_ = 0; } -Grob* +Grob * Page_turn_engraver::breakable_column (Page_turn_event const &brk) { vsize start = lower_bound (breakable_moments_, brk.duration_[LEFT], less ()); @@ -147,9 +148,9 @@ Page_turn_engraver::acknowledge_note_head (Grob_info gi) Stream_event *cause = gi.event_cause (); Duration *dur_ptr = cause - ? unsmob_duration (cause->get_property ("duration")) - : 0; - + ? unsmob_duration (cause->get_property ("duration")) + : 0; + if (!dur_ptr) return; @@ -157,9 +158,9 @@ Page_turn_engraver::acknowledge_note_head (Grob_info gi) { Real pen = penalty ((now_mom () - rest_begin_).main_part_); if (!isinf (pen)) - automatic_breaks_.push_back (Page_turn_event (rest_begin_.main_part_, - now_mom ().main_part_, - ly_symbol2scm ("allow"), 0)); + automatic_breaks_.push_back (Page_turn_event (rest_begin_.main_part_, + now_mom ().main_part_, + ly_symbol2scm ("allow"), 0)); } if (rest_begin_ <= repeat_begin_) @@ -171,7 +172,7 @@ IMPLEMENT_TRANSLATOR_LISTENER (Page_turn_engraver, break); void Page_turn_engraver::listen_break (Stream_event *ev) { - string name = ly_scm2string (scm_symbol_to_string (ev->get_property ("class"))); + string name = ly_symbol2string (scm_car (ev->get_property ("class"))); if (name == "page-turn-event") { @@ -229,9 +230,9 @@ Page_turn_engraver::stop_translation_timestep () { SCM command = scm_car (cs); if (command == ly_symbol2scm ("start-repeat")) - start = true; + start = true; else if (command == ly_symbol2scm ("end-repeat")) - end = true; + end = true; } if (end && repeat_begin_.main_part_ >= Moment (0)) @@ -240,12 +241,12 @@ Page_turn_engraver::stop_translation_timestep () Real pen = penalty ((now_mom () - rest_begin_).main_part_ + repeat_begin_rest_length_); Moment *m = unsmob_moment (get_property ("minimumRepeatLengthForPageTurn")); if (m && *m > (now_mom () - repeat_begin_)) - pen = infinity_f; + pen = infinity_f; if (pen == infinity_f) - repeat_penalties_.push_back (Page_turn_event (repeat_begin_.main_part_, now, SCM_EOL, -infinity_f)); + repeat_penalties_.push_back (Page_turn_event (repeat_begin_.main_part_, now, SCM_EOL, -infinity_f)); else - repeat_penalties_.push_back (Page_turn_event (repeat_begin_.main_part_, now, ly_symbol2scm ("allow"), pen)); + repeat_penalties_.push_back (Page_turn_event (repeat_begin_.main_part_, now, ly_symbol2scm ("allow"), pen)); repeat_begin_ = Moment (-1); } @@ -284,30 +285,30 @@ Page_turn_engraver::finalize () /* find the next applicable repeat penalty */ for (; - rep_index < repeat_penalties_.size () - && repeat_penalties_[rep_index].duration_[RIGHT] <= brk.duration_[LEFT]; - rep_index++) - ; + rep_index < repeat_penalties_.size () + && repeat_penalties_[rep_index].duration_[RIGHT] <= brk.duration_[LEFT]; + rep_index++) + ; if (rep_index >= repeat_penalties_.size () - || brk.duration_[RIGHT] <= repeat_penalties_[rep_index].duration_[LEFT]) - auto_breaks.push_back (brk); + || brk.duration_[RIGHT] <= repeat_penalties_[rep_index].duration_[LEFT]) + auto_breaks.push_back (brk); else - { - vector split = brk.penalize (repeat_penalties_[rep_index]); - - /* it's possible that the last of my newly-split events overlaps the next repeat_penalty, - in which case we need to refilter that event */ - if (rep_index + 1 < repeat_penalties_.size () - && split.size () - && split.back ().duration_[RIGHT] > repeat_penalties_[rep_index+1].duration_[LEFT]) - { - automatic_breaks_[i] = split.back (); - split.pop_back (); - i--; - } - auto_breaks.insert (auto_breaks.end (), split.begin (), split.end ()); - } + { + vector split = brk.penalize (repeat_penalties_[rep_index]); + + /* it's possible that the last of my newly-split events overlaps the next repeat_penalty, + in which case we need to refilter that event */ + if (rep_index + 1 < repeat_penalties_.size () + && split.size () + && split.back ().duration_[RIGHT] > repeat_penalties_[rep_index + 1].duration_[LEFT]) + { + automatic_breaks_[i] = split.back (); + split.pop_back (); + i--; + } + auto_breaks.insert (auto_breaks.end (), split.begin (), split.end ()); + } } /* apply the automatic breaks */ @@ -316,12 +317,12 @@ Page_turn_engraver::finalize () Page_turn_event const &brk = auto_breaks[i]; Grob *pc = breakable_column (auto_breaks[i]); if (pc) - { - SCM perm = max_permission (pc->get_property ("page-turn-permission"), brk.permission_); - Real pen = min (robust_scm2double (pc->get_property ("page-turn-penalty"), infinity_f), brk.penalty_); - pc->set_property ("page-turn-permission", perm); - pc->set_property ("page-turn-penalty", scm_from_double (pen)); - } + { + SCM perm = max_permission (pc->get_property ("page-turn-permission"), brk.permission_); + Real pen = min (robust_scm2double (pc->get_property ("page-turn-penalty"), infinity_f), brk.penalty_); + pc->set_property ("page-turn-permission", perm); + pc->set_property ("page-turn-penalty", scm_from_double (pen)); + } } /* unless a manual break overrides it, allow a page turn at the end of the piece */ @@ -333,10 +334,10 @@ Page_turn_engraver::finalize () Page_turn_event const &brk = forced_breaks_[i]; Grob *pc = breakable_column (forced_breaks_[i]); if (pc) - { - pc->set_property ("page-turn-permission", brk.permission_); - pc->set_property ("page-turn-penalty", scm_from_double (brk.penalty_)); - } + { + pc->set_property ("page-turn-permission", brk.permission_); + pc->set_property ("page-turn-penalty", scm_from_double (brk.penalty_)); + } } } @@ -350,9 +351,9 @@ ADD_TRANSLATOR (Page_turn_engraver, "", /* read */ - "minimumPageTurnLength " - "minimumRepeatLengthForPageTurn ", + "minimumPageTurnLength " + "minimumRepeatLengthForPageTurn ", /* write */ "" - ); + ); diff --git a/lily/page-turn-page-breaking.cc b/lily/page-turn-page-breaking.cc index 07b61d92bf..2055214c82 100644 --- a/lily/page-turn-page-breaking.cc +++ b/lily/page-turn-page-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,9 +35,9 @@ is_break (T *g) { bool turnable = scm_is_symbol (g->get_property ("page-turn-permission")); - if (turnable && - (!scm_is_symbol (g->get_property ("page-break-permission")) - || !scm_is_symbol (g->get_property ("line-break-permission")))) + if (turnable + && (!scm_is_symbol (g->get_property ("page-break-permission")) + || !scm_is_symbol (g->get_property ("line-break-permission")))) { programming_error ("found a page-turnable place which was not breakable"); turnable = false; @@ -57,9 +57,9 @@ Page_turn_page_breaking::~Page_turn_page_breaking () Page_turn_page_breaking::Break_node Page_turn_page_breaking::put_systems_on_pages (vsize start, - vsize end, - vsize configuration, - vsize page_number) + vsize end, + vsize configuration, + vsize page_number) { vsize min_p_count = min_page_count (configuration, page_number); bool auto_first = to_boolean (book_->paper_->c_variable ("auto-first-page-number")); @@ -87,9 +87,9 @@ Page_turn_page_breaking::put_systems_on_pages (vsize start, if (start == 0 && auto_first) { if (min_p_count % 2) - result = space_systems_on_n_or_one_more_pages (configuration, min_p_count, page_number, 0); + result = space_systems_on_n_or_one_more_pages (configuration, min_p_count, page_number, 0); else - result = space_systems_on_n_pages (configuration, min_p_count, page_number); + result = space_systems_on_n_pages (configuration, min_p_count, page_number); } else if (page_number % 2 == min_p_count % 2) result = space_systems_on_n_pages (configuration, min_p_count, page_number); @@ -110,7 +110,7 @@ Page_turn_page_breaking::put_systems_on_pages (vsize start, ret.too_many_lines_ = all_lines_stretched (configuration); ret.demerits_ = result.demerits_; if (start > 0) - ret.demerits_ += state_[start-1].demerits_; + ret.demerits_ += state_[start - 1].demerits_; return ret; } @@ -137,22 +137,22 @@ Page_turn_page_breaking::calc_subproblem (vsize ending_breakpoint) for (vsize start = end; start--;) { - if (start < end-1 - && breakpoint_property (start+1, "page-turn-permission") == ly_symbol2scm ("force")) - break; + if (start < end - 1 + && breakpoint_property (start + 1, "page-turn-permission") == ly_symbol2scm ("force")) + break; - if (start > 0 && best.demerits_ < state_[start-1].demerits_) + if (start > 0 && best.demerits_ < state_[start - 1].demerits_) continue; int p_num = robust_scm2int (book_->paper_->c_variable ("first-page-number"), 1); if (start > 0) { - /* except possibly for the first page, enforce the fact that first_page_number_ - should always be even (left hand page). - TODO: are there different conventions in right-to-left languages? - */ - p_num = state_[start-1].first_page_number_ + state_[start-1].page_count_; - p_num += p_num % 2; + /* except possibly for the first page, enforce the fact that first_page_number_ + should always be even (left hand page). + TODO: are there different conventions in right-to-left languages? + */ + p_num = state_[start - 1].first_page_number_ + state_[start - 1].page_count_; + p_num += p_num % 2; } Line_division min_division; @@ -165,14 +165,14 @@ Page_turn_page_breaking::calc_subproblem (vsize ending_breakpoint) bool ok_page = true; if (debug_page_breaking_scoring) - message (_f ("page-turn-page-breaking: breaking from %d to %d", (int) start, (int) end)); + message (_f ("page-turn-page-breaking: breaking from %d to %d", (int) start, (int) end)); /* heuristic: we've just added a breakpoint, we'll need at least as many systems as before */ min_sys_count = max (min_sys_count, prev_best_system_count); for (vsize sys_count = min_sys_count; sys_count <= max_sys_count && ok_page; sys_count++) { - set_current_breakpoints (start, end, sys_count, min_division, max_division); + set_current_breakpoints (start, end, sys_count, min_division, max_division); bool found = false; for (vsize i = 0; i < current_configuration_count (); i++) @@ -180,9 +180,9 @@ Page_turn_page_breaking::calc_subproblem (vsize ending_breakpoint) cur = put_systems_on_pages (start, end, i, p_num); if (isinf (cur.demerits_) - || (cur.page_count_ + (p_num % 2) > 2 - && (!isinf (this_start_best.demerits_)) - && total_page_count (cur) > total_page_count (this_start_best))) + || (cur.page_count_ + (p_num % 2) > 2 + && (!isinf (this_start_best.demerits_)) + && total_page_count (cur) > total_page_count (this_start_best))) { ok_page = false; break; @@ -190,16 +190,16 @@ Page_turn_page_breaking::calc_subproblem (vsize ending_breakpoint) if (cur.demerits_ < this_start_best.demerits_) { - if (debug_page_breaking_scoring) - print_break_node (cur); + if (debug_page_breaking_scoring) + print_break_node (cur); found = true; this_start_best = cur; prev_best_system_count = sys_count; - /* heuristic: if we increase the number of systems, we can bound the - division from below by our current best division */ - min_division = current_configuration (i); + /* heuristic: if we increase the number of systems, we can bound the + division from below by our current best division */ + min_division = current_configuration (i); } } if (!found && this_start_best.too_many_lines_) @@ -212,13 +212,13 @@ Page_turn_page_breaking::calc_subproblem (vsize ending_breakpoint) } if (start == 0 && end == 1 - && this_start_best.first_page_number_ == 1 - && this_start_best.page_count_ > 1) - warning (_ ("cannot fit the first page turn onto a single page." - " Consider setting first-page-number to an even number.")); + && this_start_best.first_page_number_ == 1 + && this_start_best.page_count_ > 1) + warning (_ ("cannot fit the first page turn onto a single page." + " Consider setting first-page-number to an even number.")); if (this_start_best.demerits_ < best.demerits_) - best = this_start_best; + best = this_start_best; } state_.push_back (best); } @@ -257,7 +257,7 @@ Page_turn_page_breaking::make_lines (vector *psoln) vector &soln = *psoln; for (vsize n = 0; n < soln.size (); n++) { - vsize start = n > 0 ? soln[n-1].break_pos_ : 0; + vsize start = n > 0 ? soln[n - 1].break_pos_ : 0; vsize end = soln[n].break_pos_; break_into_pieces (start, end, soln[n].div_); @@ -276,17 +276,17 @@ Page_turn_page_breaking::make_pages (vector const &soln, SCM systems for (vsize i = 0; i < soln.size (); i++) { for (vsize j = 0; j < soln[i].page_count_; j++) - lines_per_page.push_back (soln[i].system_count_[j]); + lines_per_page.push_back (soln[i].system_count_[j]); if (i + 1 < soln.size () && (soln[i].first_page_number_ + soln[i].page_count_) % 2) - /* add a blank page */ - lines_per_page.push_back (0); + /* add a blank page */ + lines_per_page.push_back (0); } /* this should only actually modify first-page-number if auto-first-page-number was true. */ book_->paper_->set_variable (ly_symbol2scm ("first-page-number"), - scm_from_int (soln[0].first_page_number_)); + scm_from_int (soln[0].first_page_number_)); return Page_breaking::make_pages (lines_per_page, systems); } diff --git a/lily/pango-font-scheme.cc b/lily/pango-font-scheme.cc index f2ae021912..5b43792ff5 100644 --- a/lily/pango-font-scheme.cc +++ b/lily/pango-font-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,18 +31,18 @@ #include "stencil.hh" LY_DEFINE (ly_pango_font_p, "ly:pango-font?", - 1, 0, 0, - (SCM f), - "Is @var{f} a pango font?") + 1, 0, 0, + (SCM f), + "Is @var{f} a pango font?") { return scm_from_bool (dynamic_cast (unsmob_metrics (f))); } LY_DEFINE (ly_pango_font_physical_fonts, "ly:pango-font-physical-fonts", - 1, 0, 0, - (SCM f), - "Return alist of @code{(ps-name file-name font-index)} lists" - " for Pango font@tie{}@var{f}.") + 1, 0, 0, + (SCM f), + "Return alist of @code{(ps-name file-name font-index)} lists" + " for Pango font@tie{}@var{f}.") { Pango_font *pf = dynamic_cast (unsmob_metrics (f)); diff --git a/lily/pango-font.cc b/lily/pango-font.cc index a4fea75109..32e7a89c02 100644 --- a/lily/pango-font.cc +++ b/lily/pango-font.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ #include "dimensions.hh" #include "file-name.hh" #include "international.hh" -#include "lookup.hh" // debugging +#include "lookup.hh" // debugging #include "main.hh" #include "string-convert.hh" #include "warn.hh" @@ -44,9 +44,13 @@ #include "stencil.hh" Pango_font::Pango_font (PangoFT2FontMap *fontmap, - PangoFontDescription const *description, - Real output_scale) + 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 (); @@ -61,7 +65,7 @@ Pango_font::Pango_font (PangoFT2FontMap *fontmap, // --hwn output_scale_ = output_scale; scale_ = INCH_TO_BP - / (Real (PANGO_SCALE) * Real (PANGO_RESOLUTION) * output_scale); + / (Real (PANGO_SCALE) * Real (PANGO_RESOLUTION) * output_scale); // ugh. Should make this configurable. pango_context_set_language (context_, pango_language_from_string ("en_US")); @@ -78,13 +82,13 @@ Pango_font::~Pango_font () void Pango_font::register_font_file (string filename, - string ps_name, - int face_index) + string ps_name, + int face_index) { scm_hash_set_x (physical_font_tab_, - ly_string2scm (ps_name), - scm_list_2 (ly_string2scm (filename), - scm_from_int (face_index))); + ly_string2scm (ps_name), + scm_list_2 (ly_string2scm (filename), + scm_from_int (face_index))); } void @@ -95,14 +99,14 @@ Pango_font::derived_mark () const void get_glyph_index_name (char *s, - FT_ULong code) + FT_ULong code) { sprintf (s, "glyphIndex%lX", code); } void get_unicode_name (char *s, - FT_ULong code) + FT_ULong code) { if (code > 0xFFFF) sprintf (s, "u%lX", code); @@ -128,9 +132,9 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const FT_Face ftface = pango_fc_font_lock_face (fcfont); Box b (Interval (PANGO_LBEARING (logical_rect), - PANGO_RBEARING (logical_rect)), - Interval (-PANGO_DESCENT (ink_rect), - PANGO_ASCENT (ink_rect))); + PANGO_RBEARING (logical_rect)), + Interval (-PANGO_DESCENT (ink_rect), + PANGO_ASCENT (ink_rect))); b.scale (scale_); @@ -157,8 +161,7 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const Index_to_charcode_map const *cmap = 0; bool has_glyph_names = ftface->face_flags & FT_FACE_FLAG_GLYPH_NAMES; if (!has_glyph_names) - cmap = all_fonts_global->get_index_to_charcode_map ( - file_name, face_index, ftface); + cmap = all_fonts_global->get_index_to_charcode_map (file_name, face_index, ftface); bool is_ttf = string (FT_Get_X11_Font_Format (ftface)) == "TrueType"; bool cid_keyed = false; @@ -171,71 +174,69 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const PangoGlyphGeometry ggeo = pgi->geometry; /* - Zero-width characters are valid Unicode characters, - but glyph lookups need to be skipped. + Zero-width characters are valid Unicode characters, + but glyph lookups need to be skipped. */ if (!(pg ^ PANGO_GLYPH_EMPTY)) - continue; + continue; glyph_name[0] = '\0'; if (has_glyph_names) - { - FT_Error errorcode = FT_Get_Glyph_Name (ftface, pg, glyph_name, - GLYPH_NAME_LEN); - if (errorcode) - programming_error ( - _f ("FT_Get_Glyph_Name () error: %s", - freetype_error_string (errorcode).c_str ())); - } + { + FT_Error errorcode = FT_Get_Glyph_Name (ftface, pg, glyph_name, + GLYPH_NAME_LEN); + if (errorcode) + programming_error (_f ("FT_Get_Glyph_Name () error: %s", + freetype_error_string (errorcode).c_str ())); + } SCM char_id = SCM_EOL; if (glyph_name[0] == '\0' - && cmap - && is_ttf - && cmap->find (pg) != cmap->end ()) - { - FT_ULong char_code = cmap->find (pg)->second; - get_unicode_name (glyph_name, char_code); - } + && cmap + && is_ttf + && cmap->find (pg) != cmap->end ()) + { + FT_ULong char_code = cmap->find (pg)->second; + get_unicode_name (glyph_name, char_code); + } if (glyph_name[0] == '\0' && has_glyph_names) - { - programming_error ( - _f ("Glyph has no name, but font supports glyph naming.\n" - "Skipping glyph U+%0X, file %s", - pg, file_name.c_str ())); - continue; - } + { + programming_error (_f ("Glyph has no name, but font supports glyph naming.\n" + "Skipping glyph U+%0X, file %s", + pg, file_name.c_str ())); + continue; + } if (glyph_name == string (".notdef") && is_ttf) - glyph_name[0] = '\0'; + glyph_name[0] = '\0'; if (glyph_name[0] == '\0' && is_ttf) - // Access by glyph index directly. - get_glyph_index_name (glyph_name, pg); + // Access by glyph index directly. + get_glyph_index_name (glyph_name, pg); if (glyph_name[0] == '\0') - { - // CID entry - cid_keyed = true; - char_id = scm_from_uint32 (pg); - } + { + // CID entry + cid_keyed = true; + char_id = scm_from_uint32 (pg); + } else - char_id = scm_from_locale_string (glyph_name); + char_id = scm_from_locale_string (glyph_name); *tail = scm_cons (scm_list_4 (scm_from_double (ggeo.width * scale_), - scm_from_double (ggeo.x_offset * scale_), - scm_from_double (- ggeo.y_offset * scale_), - char_id), - SCM_EOL); + scm_from_double (ggeo.x_offset * scale_), + scm_from_double (- ggeo.y_offset * scale_), + char_id), + SCM_EOL); tail = SCM_CDRLOC (*tail); } - + pango_fc_font_unlock_face (fcfont); pango_glyph_string_free (pgs); pgs = 0; PangoFontDescription *descr = pango_font_describe (pa->font); Real size = pango_font_description_get_size (descr) - / (Real (PANGO_SCALE)); + / (Real (PANGO_SCALE)); if (!ps_name_str0) warning (_f ("no PostScript font name for font `%s'", file_name)); @@ -244,23 +245,23 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const if (!ps_name_str0 && file_name != "" && (file_name.find (".otf") != NPOS - || file_name.find (".cff") != NPOS)) + || file_name.find (".cff") != NPOS)) { // UGH: kludge a PS name for OTF/CFF fonts. string name = file_name; ssize idx = file_name.find (".otf"); if (idx == NPOS) - idx = file_name.find (".cff"); + idx = file_name.find (".cff"); name = name.substr (0, idx); ssize slash_idx = name.rfind ('/'); if (slash_idx != NPOS) - { - slash_idx ++; - name = name.substr (slash_idx, - name.length () - slash_idx); - } + { + slash_idx++; + name = name.substr (slash_idx, + name.length () - slash_idx); + } string initial = name.substr (0, 1); initial = String_convert::to_upper (initial); @@ -274,15 +275,15 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const if (ps_name.length ()) { ((Pango_font *) this)->register_font_file (file_name, - ps_name, - face_index); + ps_name, + face_index); pango_fc_font_unlock_face (fcfont); SCM expr = scm_list_5 (ly_symbol2scm ("glyph-string"), - ly_string2scm (ps_name), - scm_from_double (size), - scm_from_bool (cid_keyed), - ly_quote_scm (glyph_exprs)); + ly_string2scm (ps_name), + scm_from_double (size), + scm_from_bool (cid_keyed), + ly_quote_scm (glyph_exprs)); return Stencil (b, expr); } @@ -301,7 +302,7 @@ extern bool music_strings_to_paths; Stencil Pango_font::text_stencil (Output_def * /* state */, - string str, bool music_string) const + string str, bool music_string) const { /* The text assigned to a PangoLayout is automatically divided @@ -321,26 +322,26 @@ Pango_font::text_stencil (Output_def * /* state */, GSList *layout_runs = line->runs; for (GSList *p = layout_runs; p; p = p->next) - { - PangoGlyphItem *item = (PangoGlyphItem *) p->data; - Stencil item_stencil = pango_item_string_stencil (item); + { + PangoGlyphItem *item = (PangoGlyphItem *) p->data; + Stencil item_stencil = pango_item_string_stencil (item); - item_stencil.translate_axis (last_x, X_AXIS); - last_x = item_stencil.extent (X_AXIS)[RIGHT]; + item_stencil.translate_axis (last_x, X_AXIS); + last_x = item_stencil.extent (X_AXIS)[RIGHT]; #if 0 // Check extents. - if (!item_stencil.extent_box ()[X_AXIS].is_empty ()) - { - Stencil frame = Lookup::frame (item_stencil.extent_box (), 0.1, 0.1); - Box empty; - empty.set_empty (); - Stencil dimless_frame (empty, frame.expr ()); - dest.add_stencil (frame); - } + if (!item_stencil.extent_box ()[X_AXIS].is_empty ()) + { + Stencil frame = Lookup::frame (item_stencil.extent_box (), 0.1, 0.1); + Box empty; + empty.set_empty (); + Stencil dimless_frame (empty, frame.expr ()); + dest.add_stencil (frame); + } #endif - dest.add_stencil (item_stencil); - } + dest.add_stencil (item_stencil); + } } string name = get_output_backend_name (); @@ -353,13 +354,13 @@ Pango_font::text_stencil (Output_def * /* state */, { SCM utf8_string = ly_module_lookup (mod, ly_symbol2scm ("utf-8-string")); /* - has_utf8_string should only be true when utf8_string is a - variable that is bound to a *named* procedure, i.e. not a - lambda expression. + has_utf8_string should only be true when utf8_string is a + variable that is bound to a *named* procedure, i.e. not a + lambda expression. */ if (utf8_string != SCM_BOOL_F - && scm_procedure_name (SCM_VARIABLE_REF (utf8_string)) != SCM_BOOL_F) - has_utf8_string = true; + && scm_procedure_name (SCM_VARIABLE_REF (utf8_string)) != SCM_BOOL_F) + has_utf8_string = true; } bool to_paths = music_strings_to_paths; @@ -374,8 +375,8 @@ Pango_font::text_stencil (Output_def * /* state */, { // For Pango based backends, we take a shortcut. SCM exp = scm_list_3 (ly_symbol2scm ("utf-8-string"), - ly_string2scm (description_string ()), - ly_string2scm (str)); + ly_string2scm (description_string ()), + ly_string2scm (str)); Box b (Interval (0, 0), Interval (0, 0)); b.unite (dest.extent_box ()); diff --git a/lily/pango-select-scheme.cc b/lily/pango-select-scheme.cc index 643d407820..1e7605d2c0 100644 --- a/lily/pango-select-scheme.cc +++ b/lily/pango-select-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,9 +23,9 @@ #include "pango-font.hh" LY_DEFINE (ly_make_pango_description_string, "ly:make-pango-description-string", - 2, 0, 0, (SCM chain, SCM size), - "Make a @code{PangoFontDescription} string for the property" - " alist @var{chain} at size @var{size}.") + 2, 0, 0, (SCM chain, SCM size), + "Make a @code{PangoFontDescription} string for the property" + " alist @var{chain} at size @var{size}.") { LY_ASSERT_TYPE (scm_is_number, size, 1); PangoFontDescription *pfd = properties_to_pango_description (chain, scm_to_double (size)); diff --git a/lily/pango-select.cc b/lily/pango-select.cc index a0832d4369..cb05b0c183 100644 --- a/lily/pango-select.cc +++ b/lily/pango-select.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,22 +36,22 @@ properties_to_pango_description (SCM chain, Real text_size) else { SCM family = ly_chain_assoc_get (ly_symbol2scm ("font-family"), chain, - SCM_BOOL_F); + SCM_BOOL_F); SCM variant = ly_chain_assoc_get (ly_symbol2scm ("font-shape"), chain, - SCM_BOOL_F); + SCM_BOOL_F); SCM style = ly_chain_assoc_get (ly_symbol2scm ("font-shape"), chain, - SCM_BOOL_F); + SCM_BOOL_F); SCM weight = ly_chain_assoc_get (ly_symbol2scm ("font-series"), chain, - SCM_BOOL_F); + SCM_BOOL_F); description - = symbols_to_pango_font_description (family, style, variant, weight, - SCM_BOOL_F); + = symbols_to_pango_font_description (family, style, variant, weight, + SCM_BOOL_F); } Real step = robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-size"), chain, SCM_BOOL_F), - 0.0); + 0.0); Real size = text_size * pow (2.0, step / 6.0); pango_font_description_set_size (description, gint (size * PANGO_SCALE)); @@ -63,14 +63,14 @@ select_pango_font (Output_def *layout, SCM chain) { PangoFontDescription *pfd = properties_to_pango_description (chain, - point_constant - * layout->get_dimension (ly_symbol2scm ("text-font-size"))); + point_constant + * layout->get_dimension (ly_symbol2scm ("text-font-size"))); char *str = pango_font_description_to_string (pfd); SCM scm_str = scm_from_locale_string (str); g_free (str); pango_font_description_free (pfd); - + return find_pango_font (layout, scm_str, 1.0); } @@ -81,7 +81,7 @@ symbol_to_pango_style (SCM style) if (style == ly_symbol2scm ("italic")) pstyle = PANGO_STYLE_ITALIC; else if (style == ly_symbol2scm ("oblique") - || style == ly_symbol2scm ("slanted")) + || style == ly_symbol2scm ("slanted")) pstyle = PANGO_STYLE_OBLIQUE; return pstyle; @@ -137,10 +137,10 @@ symbol_to_pango_stretch (SCM) // stretch) PangoFontDescription * symbols_to_pango_font_description (SCM family, - SCM style, - SCM variant, - SCM weight, - SCM stretch) + SCM style, + SCM variant, + SCM weight, + SCM stretch) { PangoFontDescription *description = pango_font_description_new (); @@ -151,15 +151,15 @@ symbols_to_pango_font_description (SCM family, family_str = ly_scm2string (family); pango_font_description_set_family (description, - family_str.c_str ()); + family_str.c_str ()); pango_font_description_set_style (description, - symbol_to_pango_style (style)); + symbol_to_pango_style (style)); pango_font_description_set_variant (description, - symbol_to_pango_variant (variant)); + symbol_to_pango_variant (variant)); pango_font_description_set_weight (description, - symbol_to_pango_weight (weight)); + symbol_to_pango_weight (weight)); pango_font_description_set_stretch (description, - symbol_to_pango_stretch (stretch)); + symbol_to_pango_stretch (stretch)); return description; } diff --git a/lily/paper-book-scheme.cc b/lily/paper-book-scheme.cc index 9158444530..2bfdc79988 100644 --- a/lily/paper-book-scheme.cc +++ b/lily/paper-book-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,16 +22,16 @@ #include "output-def.hh" LY_DEFINE (ly_paper_book_pages, "ly:paper-book-pages", - 1, 0, 0, (SCM pb), - "Return pages in @code{Paper_book} object @var{pb}.") + 1, 0, 0, (SCM pb), + "Return pages in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); return unsmob_paper_book (pb)->pages (); } LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes", - 1, 0, 0, (SCM pb), - "Return scopes in @code{Paper_book} object @var{pb}.") + 1, 0, 0, (SCM pb), + "Return scopes in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); Paper_book *book = unsmob_paper_book (pb); @@ -48,25 +48,25 @@ LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes", } LY_DEFINE (ly_paper_book_performances, "ly:paper-book-performances", - 1, 0, 0, (SCM pb), - "Return performances in @code{Paper_book} object @var{pb}.") + 1, 0, 0, (SCM pb), + "Return performances in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); return unsmob_paper_book (pb)->performances (); } LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems", - 1, 0, 0, (SCM pb), - "Return systems in @code{Paper_book} object @var{pb}.") + 1, 0, 0, (SCM pb), + "Return systems in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); return unsmob_paper_book (pb)->systems (); } LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper", - 1, 0, 0, (SCM pb), - "Return the paper output definition (@code{\\paper})" - " in @code{Paper_book} object @var{pb}.") + 1, 0, 0, (SCM pb), + "Return the paper output definition (@code{\\paper})" + " in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); Paper_book *pbook = unsmob_paper_book (pb); @@ -74,9 +74,9 @@ LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper", } LY_DEFINE (ly_paper_book_header, "ly:paper-book-header", - 1, 0, 0, (SCM pb), - "Return the header definition (@code{\\header})" - " in @code{Paper_book} object @var{pb}.") + 1, 0, 0, (SCM pb), + "Return the header definition (@code{\\header})" + " in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); Paper_book *pbook = unsmob_paper_book (pb); diff --git a/lily/paper-book.cc b/lily/paper-book.cc index 9907e56d95..aecafbe3a0 100644 --- a/lily/paper-book.cc +++ b/lily/paper-book.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Jan Nieuwenhuizen + Copyright (C) 2004--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -98,7 +98,7 @@ dump_fields () for (vsize i = dump_header_fieldnames_global.size (); i--;) fields = scm_cons (ly_symbol2scm (dump_header_fieldnames_global[i].c_str ()), - fields); + fields); return fields; } @@ -120,44 +120,44 @@ Paper_book::add_performance (SCM s) performances_ = scm_cons (s, performances_); } -int +long Paper_book::output_aux (SCM output_channel, - bool is_last, - int *first_page_number, - int *first_performance_number) + bool is_last, + long *first_page_number, + long *first_performance_number) { - int page_nb = 0; + long page_nb = 0; if (scm_is_pair (performances_)) { SCM proc = ly_lily_module_constant ("write-performances-midis"); - + scm_call_3 (proc, - performances (), - output_channel, - scm_from_long (*first_performance_number)); + performances (), + output_channel, + scm_from_long (*first_performance_number)); *first_performance_number += scm_ilength (performances_); } if (scm_is_pair (bookparts_)) { for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p)) - if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p))) - { - bool is_last_part = (is_last && !scm_is_pair (scm_cdr (p))); - page_nb += pbookpart->output_aux (output_channel, - is_last_part, - first_page_number, - first_performance_number); - } + if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p))) + { + bool is_last_part = (is_last && !scm_is_pair (scm_cdr (p))); + page_nb += pbookpart->output_aux (output_channel, + is_last_part, + first_page_number, + first_performance_number); + } } else { if (scores_ == SCM_EOL) - return 0; + return 0; paper_->set_variable (ly_symbol2scm ("first-page-number"), - scm_from_long (*first_page_number)); + scm_from_long (*first_page_number)); paper_->set_variable (ly_symbol2scm ("is-last-bookpart"), - ly_bool2scm (is_last)); + ly_bool2scm (is_last)); /* Generate all stencils to trigger font loads. */ page_nb = scm_ilength (pages ()); *first_page_number += page_nb; @@ -168,9 +168,9 @@ Paper_book::output_aux (SCM output_channel, void Paper_book::output (SCM output_channel) { - int first_page_number + long first_page_number = robust_scm2int (paper_->c_variable ("first-page-number"), 1); - int first_performance_number = 0; + long first_performance_number = 0; /* FIXME: We need a line-width for ps output (framework-ps.scm:92). If we don't have any, we take the paper-width unless we know @@ -180,12 +180,12 @@ Paper_book::output (SCM output_channel) if (paper_->c_variable ("line-width") == SCM_UNDEFINED) paper_->set_variable (ly_symbol2scm ("line-width"), - paper_->c_variable ("paper-width")); - + paper_->c_variable ("paper-width")); + if (!output_aux (output_channel, - true, - &first_page_number, - &first_performance_number)) + true, + &first_page_number, + &first_performance_number)) return; SCM scopes = SCM_EOL; @@ -199,56 +199,56 @@ Paper_book::output (SCM output_channel) if (get_program_option ("print-pages")) { SCM framework = ly_module_lookup (mod, - ly_symbol2scm ("output-framework")); + ly_symbol2scm ("output-framework")); if (framework != SCM_BOOL_F) - { - SCM func = scm_variable_ref (framework); - scm_apply_0 (func, scm_list_n (output_channel, - self_scm (), - scopes, - dump_fields (), - SCM_UNDEFINED)); - } + { + SCM func = scm_variable_ref (framework); + scm_apply_0 (func, scm_list_n (output_channel, + self_scm (), + scopes, + dump_fields (), + SCM_UNDEFINED)); + } else - warning (_f ("program option -dprint-pages not supported by backend `%s'", - get_output_backend_name ())); + warning (_f ("program option -dprint-pages not supported by backend `%s'", + get_output_backend_name ())); } if (get_program_option ("preview")) { SCM framework - = ly_module_lookup (mod, ly_symbol2scm ("output-preview-framework")); + = ly_module_lookup (mod, ly_symbol2scm ("output-preview-framework")); if (framework != SCM_BOOL_F) - { - SCM func = scm_variable_ref (framework); - scm_apply_0 (func, scm_list_n (output_channel, - self_scm (), - scopes, - dump_fields (), - SCM_UNDEFINED)); - } + { + SCM func = scm_variable_ref (framework); + scm_apply_0 (func, scm_list_n (output_channel, + self_scm (), + scopes, + dump_fields (), + SCM_UNDEFINED)); + } else - warning (_f ("program option -dpreview not supported by backend `%s'", - get_output_backend_name ())); + warning (_f ("program option -dpreview not supported by backend `%s'", + get_output_backend_name ())); } } void Paper_book::classic_output_aux (SCM output, - int *first_performance_number) + long *first_performance_number) { if (scm_is_pair (performances_)) { SCM proc = ly_lily_module_constant ("write-performances-midis"); scm_call_3 (proc, - performances (), - output, - scm_from_long (*first_performance_number)); + performances (), + output, + scm_from_long (*first_performance_number)); *first_performance_number += scm_ilength (performances_); } - + /* Generate all stencils to trigger font loads. */ systems (); } @@ -256,7 +256,7 @@ Paper_book::classic_output_aux (SCM output, void Paper_book::classic_output (SCM output) { - int first_performance_number = 0; + long first_performance_number = 0; classic_output_aux (output, &first_performance_number); SCM scopes = SCM_EOL; @@ -274,10 +274,10 @@ Paper_book::classic_output (SCM output) func = scm_variable_ref (func); scm_apply_0 (func, scm_list_n (output, - self_scm (), - scopes, - dump_fields (), - SCM_UNDEFINED)); + self_scm (), + scopes, + dump_fields (), + SCM_UNDEFINED)); progress_indication ("\n"); } @@ -296,8 +296,8 @@ Paper_book::book_title () SCM tit = SCM_EOL; if (ly_is_procedure (title_func)) tit = scm_call_2 (title_func, - paper_->self_scm (), - scopes); + paper_->self_scm (), + scopes); if (unsmob_stencil (tit)) title = *unsmob_stencil (tit); @@ -325,8 +325,8 @@ Paper_book::score_title (SCM header) SCM tit = SCM_EOL; if (ly_is_procedure (title_func)) tit = scm_call_2 (title_func, - paper_->self_scm (), - scopes); + paper_->self_scm (), + scopes); if (unsmob_stencil (tit)) title = *unsmob_stencil (tit); @@ -344,11 +344,11 @@ set_page_permission (SCM sys, SCM symbol, SCM permission) { vector cols = ps->get_columns (); if (cols.size ()) - { - Paper_column *col = dynamic_cast (cols.back ()); - col->set_property (symbol, permission); - col->find_prebroken_piece (LEFT)->set_property (symbol, permission); - } + { + Paper_column *col = dynamic_cast (cols.back ()); + col->set_property (symbol, permission); + col->find_prebroken_piece (LEFT)->set_property (symbol, permission); + } } else if (Prob *pb = unsmob_prob (sys)) pb->set_property (symbol, permission); @@ -365,19 +365,19 @@ set_system_penalty (SCM sys, SCM header) { SCM force = ly_module_lookup (header, ly_symbol2scm ("breakbefore")); if (SCM_VARIABLEP (force) - && scm_is_bool (SCM_VARIABLE_REF (force))) - { - if (to_boolean (SCM_VARIABLE_REF (force))) - { - set_page_permission (sys, ly_symbol2scm ("page-break-permission"), - ly_symbol2scm ("force")); - set_page_permission (sys, ly_symbol2scm ("line-break-permission"), - ly_symbol2scm ("force")); - } - else - set_page_permission (sys, ly_symbol2scm ("page-break-permission"), - SCM_EOL); - } + && scm_is_bool (SCM_VARIABLE_REF (force))) + { + if (to_boolean (SCM_VARIABLE_REF (force))) + { + set_page_permission (sys, ly_symbol2scm ("page-break-permission"), + ly_symbol2scm ("force")); + set_page_permission (sys, ly_symbol2scm ("line-break-permission"), + ly_symbol2scm ("force")); + } + else + set_page_permission (sys, ly_symbol2scm ("page-break-permission"), + SCM_EOL); + } } } @@ -386,24 +386,24 @@ set_labels (SCM sys, SCM labels) { if (Paper_score *ps = dynamic_cast (unsmob_music_output (sys))) { - vector cols = ps->get_columns (); + vector cols = ps->get_columns (); if (cols.size ()) - { - Paper_column *col = dynamic_cast (cols[0]); - col->set_property ("labels", - scm_append_x (scm_list_2 (col->get_property ("labels"), - labels))); - Paper_column *col_right - = dynamic_cast (col->find_prebroken_piece (RIGHT)); - col_right->set_property ("labels", - scm_append_x (scm_list_2 (col_right->get_property ("labels"), - labels))); - } + { + Paper_column *col = dynamic_cast (cols[0]); + col->set_property ("labels", + scm_append_x (scm_list_2 (col->get_property ("labels"), + labels))); + Paper_column *col_right + = dynamic_cast (col->find_prebroken_piece (RIGHT)); + col_right->set_property ("labels", + scm_append_x (scm_list_2 (col_right->get_property ("labels"), + labels))); + } } else if (Prob *pb = unsmob_prob (sys)) - pb->set_property ("labels", - scm_append_x (scm_list_2 (pb->get_property ("labels"), - labels))); + pb->set_property ("labels", + scm_append_x (scm_list_2 (pb->get_property ("labels"), + labels))); } SCM @@ -415,11 +415,11 @@ Paper_book::get_score_title (SCM header) if (!title.is_empty ()) { /* - TODO: this should come from the \layout {} block, which should - override settings from \paper {} + TODO: this should come from the \layout {} block, which should + override settings from \paper {} */ SCM props - = paper_->lookup_variable (ly_symbol2scm ("score-title-properties")); + = paper_->lookup_variable (ly_symbol2scm ("score-title-properties")); Prob *ps = make_paper_system (props); paper_system_set_stencil (ps, title); @@ -429,7 +429,6 @@ Paper_book::get_score_title (SCM header) return SCM_BOOL_F; } - SCM Paper_book::get_system_specs () { @@ -439,7 +438,7 @@ Paper_book::get_system_specs () if (!title.is_empty ()) { SCM props - = paper_->lookup_variable (ly_symbol2scm ("book-title-properties")); + = paper_->lookup_variable (ly_symbol2scm ("book-title-properties")); Prob *ps = make_paper_system (props); paper_system_set_stencil (ps, title); @@ -449,7 +448,7 @@ Paper_book::get_system_specs () SCM page_properties = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"), - paper_->self_scm ()); + paper_->self_scm ()); SCM interpret_markup_list = ly_lily_module_constant ("interpret-markup-list"); SCM header = SCM_EOL; @@ -457,115 +456,115 @@ Paper_book::get_system_specs () for (SCM s = scm_reverse (scores_); scm_is_pair (s); s = scm_cdr (s)) { if (ly_is_module (scm_car (s))) - { - header = scm_car (s); - if (header_0_ == SCM_EOL) - header_0_ = header; - } + { + header = scm_car (s); + if (header_0_ == SCM_EOL) + header_0_ = header; + } else if (Page_marker *page_marker = unsmob_page_marker (scm_car (s))) - { - /* page markers are used to set page breaking/turning permission, - or to place bookmarking labels */ - if (scm_is_symbol (page_marker->permission_symbol ())) - { - /* set previous element page break or turn permission */ - if (scm_is_pair (system_specs)) - set_page_permission (scm_car (system_specs), - page_marker->permission_symbol (), - page_marker->permission_value ()); - } - if (scm_is_symbol (page_marker->label ())) - { - /* The next element label is to be set */ - labels = scm_cons (page_marker->label (), labels); - } - } + { + /* page markers are used to set page breaking/turning permission, + or to place bookmarking labels */ + if (scm_is_symbol (page_marker->permission_symbol ())) + { + /* set previous element page break or turn permission */ + if (scm_is_pair (system_specs)) + set_page_permission (scm_car (system_specs), + page_marker->permission_symbol (), + page_marker->permission_value ()); + } + if (scm_is_symbol (page_marker->label ())) + { + /* The next element label is to be set */ + labels = scm_cons (page_marker->label (), labels); + } + } else if (Music_output *mop = unsmob_music_output (scm_car (s))) - { - if (Paper_score *pscore = dynamic_cast (mop)) - { - SCM title = get_score_title (header); - - if (scm_is_pair (system_specs)) - set_system_penalty (scm_car (system_specs), header); - - if (unsmob_prob (title)) - { - system_specs = scm_cons (title, system_specs); - unsmob_prob (title)->unprotect (); - } - - header = SCM_EOL; - system_specs = scm_cons (pscore->self_scm (), system_specs); - if (scm_is_pair (labels)) - { - set_labels (scm_car (system_specs), labels); - labels = SCM_EOL; - } - } - else - { - /* - Ignore MIDI - */ - } - } + { + if (Paper_score *pscore = dynamic_cast (mop)) + { + SCM title = get_score_title (header); + + if (scm_is_pair (system_specs)) + set_system_penalty (scm_car (system_specs), header); + + if (unsmob_prob (title)) + { + system_specs = scm_cons (title, system_specs); + unsmob_prob (title)->unprotect (); + } + + header = SCM_EOL; + system_specs = scm_cons (pscore->self_scm (), system_specs); + if (scm_is_pair (labels)) + { + set_labels (scm_car (system_specs), labels); + labels = SCM_EOL; + } + } + else + { + /* + Ignore MIDI + */ + } + } else if (Text_interface::is_markup_list (scm_car (s))) - { - SCM texts = scm_call_3 (interpret_markup_list, - paper_->self_scm (), - page_properties, - scm_car (s)); - Prob *first = 0; - Prob *last = 0; - for (SCM list = texts; scm_is_pair (list); list = scm_cdr (list)) - { - SCM t = scm_car (list); - // TODO: init props - Prob *ps = make_paper_system (SCM_EOL); - ps->set_property ("page-break-permission", - ly_symbol2scm ("allow")); - ps->set_property ("page-turn-permission", - ly_symbol2scm ("allow")); - ps->set_property ("last-markup-line", SCM_BOOL_F); - 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); - if (list == texts) - first = ps; - else - { - // last line so far, in a multi-line paragraph - last = ps; - //Place closely to previous line, no stretching. - ps->set_property ("tight-spacing", SCM_BOOL_T); - } - system_specs = scm_cons (ps->self_scm (), system_specs); - ps->unprotect (); - - if (scm_is_pair (labels)) - { - set_labels (scm_car (system_specs), labels); - labels = SCM_EOL; - } - // FIXME: figure out penalty. - //set_system_penalty (ps, scores_[i].header_); - } - /* Set properties to avoid widowed/orphaned lines. - Single-line markup_lists are excluded, but in future - we may want to add the case of a very short, single line. */ - if (first && last) - { - last->set_property ("last-markup-line", SCM_BOOL_T); - first->set_property ("first-markup-line", SCM_BOOL_T); - } - } + { + SCM texts = scm_call_3 (interpret_markup_list, + paper_->self_scm (), + page_properties, + scm_car (s)); + Prob *first = 0; + Prob *last = 0; + for (SCM list = texts; scm_is_pair (list); list = scm_cdr (list)) + { + SCM t = scm_car (list); + // TODO: init props + Prob *ps = make_paper_system (SCM_EOL); + ps->set_property ("page-break-permission", + ly_symbol2scm ("allow")); + ps->set_property ("page-turn-permission", + ly_symbol2scm ("allow")); + ps->set_property ("last-markup-line", SCM_BOOL_F); + 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); + if (list == texts) + first = ps; + else + { + // last line so far, in a multi-line paragraph + last = ps; + //Place closely to previous line, no stretching. + ps->set_property ("tight-spacing", SCM_BOOL_T); + } + system_specs = scm_cons (ps->self_scm (), system_specs); + ps->unprotect (); + + if (scm_is_pair (labels)) + { + set_labels (scm_car (system_specs), labels); + labels = SCM_EOL; + } + // FIXME: figure out penalty. + //set_system_penalty (ps, scores_[i].header_); + } + /* Set properties to avoid widowed/orphaned lines. + Single-line markup_lists are excluded, but in future + we may want to add the case of a very short, single line. */ + if (first && last) + { + last->set_property ("last-markup-line", SCM_BOOL_T); + first->set_property ("first-markup-line", SCM_BOOL_T); + } + } else - assert (0); + assert (0); } system_specs = scm_reverse_x (system_specs, SCM_EOL); @@ -581,56 +580,56 @@ Paper_book::systems () systems_ = SCM_EOL; if (scm_is_pair (bookparts_)) { + SCM system_list = SCM_EOL; for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p)) - if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p))) - systems_ = scm_append_x (scm_list_2 (systems_, - pbookpart->systems ())); + if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p))) + system_list = scm_cons (pbookpart->systems (), system_list); + systems_ = scm_append (scm_reverse_x (system_list, SCM_EOL)); } else { SCM specs = get_system_specs (); for (SCM s = specs; scm_is_pair (s); s = scm_cdr (s)) - { - if (Paper_score *pscore - = dynamic_cast (unsmob_music_output (scm_car (s)))) - { - SCM system_list - = scm_vector_to_list (pscore->get_paper_systems ()); - - system_list = scm_reverse (system_list); - systems_ = scm_append (scm_list_2 (system_list, systems_)); - } - else - { - systems_ = scm_cons (scm_car (s), systems_); - } - } - systems_ = scm_reverse (systems_); + { + if (Paper_score * pscore + = dynamic_cast (unsmob_music_output (scm_car (s)))) + { + SCM system_list + = scm_vector_to_list (pscore->get_paper_systems ()); + + systems_ = scm_reverse_x (system_list, systems_); + } + else + { + systems_ = scm_cons (scm_car (s), systems_); + } + } + systems_ = scm_reverse_x (systems_, SCM_EOL); /* backwards compatibility for the old page breaker */ int i = 0; Prob *last = 0; for (SCM s = systems_; scm_is_pair (s); s = scm_cdr (s)) - { - Prob *ps = unsmob_prob (scm_car (s)); - ps->set_property ("number", scm_from_int (++i)); - - if (last - && to_boolean (last->get_property ("is-title")) - && !scm_is_number (ps->get_property ("penalty"))) - ps->set_property ("penalty", scm_from_int (10000)); - last = ps; - - if (scm_is_pair (scm_cdr (s))) - { - SCM perm = ps->get_property ("page-break-permission"); - Prob *next = unsmob_prob (scm_cadr (s)); - if (perm == SCM_EOL) - next->set_property ("penalty", scm_from_int (10001)); - else if (perm == ly_symbol2scm ("force")) - next->set_property ("penalty", scm_from_int (-10001)); - } - } + { + Prob *ps = unsmob_prob (scm_car (s)); + ps->set_property ("number", scm_from_int (++i)); + + if (last + && to_boolean (last->get_property ("is-title")) + && !scm_is_number (ps->get_property ("penalty"))) + ps->set_property ("penalty", scm_from_int (10000)); + last = ps; + + if (scm_is_pair (scm_cdr (s))) + { + SCM perm = ps->get_property ("page-break-permission"); + Prob *next = unsmob_prob (scm_cadr (s)); + if (perm == SCM_EOL) + next->set_property ("penalty", scm_from_int (10001)); + else if (perm == ly_symbol2scm ("force")) + next->set_property ("penalty", scm_from_int (-10001)); + } + } } return systems_; @@ -646,28 +645,37 @@ Paper_book::pages () if (scm_is_pair (bookparts_)) { for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p)) - if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p))) - pages_ = scm_append_x (scm_list_2 (pages_, pbookpart->pages ())); + if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p))) + pages_ = scm_append_x (scm_list_2 (pages_, pbookpart->pages ())); } else if (scm_is_pair (scores_)) { SCM page_breaking = paper_->c_variable ("page-breaking"); pages_ = scm_apply_0 (page_breaking, scm_list_1 (self_scm ())); + + // Create all the page stencils. + SCM page_module = scm_c_resolve_module ("scm page"); + SCM page_stencil = scm_c_module_lookup (page_module, "page-stencil"); + page_stencil = scm_variable_ref (page_stencil); + for (SCM pages = pages_; scm_is_pair (pages); pages = scm_cdr (pages)) + scm_apply_1 (page_stencil, scm_car (pages), SCM_EOL); + + // Perform any user-supplied post-processing. SCM post_process = paper_->c_variable ("page-post-process"); if (ly_is_procedure (post_process)) - scm_apply_2 (post_process, paper_->self_scm (), pages_, SCM_EOL); + scm_apply_2 (post_process, paper_->self_scm (), pages_, SCM_EOL); /* set systems_ from the pages */ if (systems_ == SCM_BOOL_F) - { - systems_ = SCM_EOL; - for (SCM p = pages_; scm_is_pair (p); p = scm_cdr (p)) - { - Prob *page = unsmob_prob (scm_car (p)); - SCM systems = page->get_property ("lines"); - systems_ = scm_append (scm_list_2 (systems_, systems)); - } - } + { + systems_ = SCM_EOL; + for (SCM p = pages_; scm_is_pair (p); p = scm_cdr (p)) + { + Prob *page = unsmob_prob (scm_car (p)); + SCM systems = page->get_property ("lines"); + systems_ = scm_append (scm_list_2 (systems_, systems)); + } + } } return pages_; } diff --git a/lily/paper-column-engraver.cc b/lily/paper-column-engraver.cc index 8b2b550f2f..8ff894d8fa 100644 --- a/lily/paper-column-engraver.cc +++ b/lily/paper-column-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,7 +36,7 @@ Paper_column_engraver::Paper_column_engraver () { - last_moment_.main_part_ = Rational (-1,1); + last_moment_.main_part_ = Rational (-1, 1); command_column_ = 0; musical_column_ = 0; breaks_ = 0; @@ -61,8 +61,18 @@ Paper_column_engraver::finalize () if (command_column_) { + // At the end of the score, allow page breaks and turns by default, but... + command_column_->set_property ("page-break-permission", ly_symbol2scm ("allow")); + command_column_->set_property ("page-turn-permission", ly_symbol2scm ("allow")); + + // ...allow the user to override them. + handle_manual_breaks (true); + + // On the other hand, line breaks are always allowed at the end of a score, + // even if they try to stop us. if (!scm_is_symbol (command_column_->get_property ("line-break-permission"))) - command_column_->set_property ("line-break-permission", ly_symbol2scm ("allow")); + command_column_->set_property ("line-break-permission", ly_symbol2scm ("allow")); + system_->set_bound (RIGHT, command_column_); } } @@ -75,7 +85,7 @@ Paper_column_engraver::make_columns () */ Paper_column *p1 = make_paper_column ("NonMusicalPaperColumn"); Paper_column *p2 = make_paper_column ("PaperColumn"); - /* + /* The columns are timestamped with now_mom () in stop_translation_timestep. Cannot happen now, because the first column is sometimes created before now_mom is initialised. @@ -104,21 +114,21 @@ void Paper_column_engraver::acknowledge_staff_spacing (Grob_info gi) { Pointer_group_interface::add_grob (command_column_, - ly_symbol2scm ("spacing-wishes"), - gi.grob ()); + ly_symbol2scm ("spacing-wishes"), + gi.grob ()); } void Paper_column_engraver::acknowledge_note_spacing (Grob_info gi) { Pointer_group_interface::add_grob (musical_column_, - ly_symbol2scm ("spacing-wishes"), - gi.grob ()); + ly_symbol2scm ("spacing-wishes"), + gi.grob ()); } void Paper_column_engraver::set_columns (Paper_column *new_command, - Paper_column *new_musical) + Paper_column *new_musical) { command_column_ = new_command; musical_column_ = new_musical; @@ -147,21 +157,21 @@ Paper_column_engraver::listen_label (Stream_event *ev) } void -Paper_column_engraver::process_music () +Paper_column_engraver::handle_manual_breaks (bool only_do_permissions) { for (vsize i = 0; i < break_events_.size (); i++) { string prefix; - SCM name_sym = break_events_[i]->get_property ("class"); - string name = ly_scm2string (scm_symbol_to_string (name_sym)); + SCM name_sym = scm_car (break_events_[i]->get_property ("class")); + string name = ly_symbol2string (name_sym); size_t end = name.rfind ("-event"); if (end) - prefix = name.substr (0, end); + prefix = name.substr (0, end); else - { - programming_error ("Paper_column_engraver doesn't know about this break-event"); - return; - } + { + programming_error ("Paper_column_engraver doesn't know about this break-event"); + return; + } string perm_str = prefix + "-permission"; string pen_str = prefix + "-penalty"; @@ -170,17 +180,23 @@ Paper_column_engraver::process_music () SCM pen = break_events_[i]->get_property ("break-penalty"); SCM perm = break_events_[i]->get_property ("break-permission"); - if (scm_is_number (pen)) - { - Real new_pen = robust_scm2double (cur_pen, 0.0) + scm_to_double (pen); - command_column_->set_property (pen_str.c_str (), scm_from_double (new_pen)); - command_column_->set_property (perm_str.c_str (), ly_symbol2scm ("allow")); - } + if (!only_do_permissions && scm_is_number (pen)) + { + Real new_pen = robust_scm2double (cur_pen, 0.0) + scm_to_double (pen); + command_column_->set_property (pen_str.c_str (), scm_from_double (new_pen)); + command_column_->set_property (perm_str.c_str (), ly_symbol2scm ("allow")); + } else - command_column_->set_property (perm_str.c_str (), perm); + command_column_->set_property (perm_str.c_str (), perm); } +} - for (vsize i = 0 ; i < label_events_.size () ; i ++) +void +Paper_column_engraver::process_music () +{ + handle_manual_breaks (false); + + for (vsize i = 0; i < label_events_.size (); i++) { SCM label = label_events_[i]->get_property ("page-label"); SCM labels = command_column_->get_property ("labels"); @@ -188,7 +204,7 @@ Paper_column_engraver::process_music () } bool start_of_measure = (last_moment_.main_part_ != now_mom ().main_part_ - && !measure_position (context ()).main_part_); + && !measure_position (context ()).main_part_); /* We can't do this in start_translation_timestep (), since time sig @@ -199,9 +215,9 @@ Paper_column_engraver::process_music () Moment mlen = Moment (measure_length (context ())); Grob *column = unsmob_grob (get_property ("currentCommandColumn")); if (column) - column->set_property ("measure-length", mlen.smobbed_copy ()); + column->set_property ("measure-length", mlen.smobbed_copy ()); else - programming_error ("No command column?"); + programming_error ("No command column?"); } } @@ -221,43 +237,42 @@ Paper_column_engraver::stop_translation_timestep () Grob *col = Item::is_non_musical (elem) ? command_column_ : musical_column_; if (!elem->get_parent (X_AXIS)) - elem->set_parent (col, X_AXIS); + elem->set_parent (col, X_AXIS); if (!unsmob_grob (elem->get_object ("axis-group-parent-X"))) - elem->set_object ("axis-group-parent-X", col->self_scm ()); + elem->set_object ("axis-group-parent-X", col->self_scm ()); if (Accidental_placement::has_interface (elem)) - Separation_item::add_conditional_item (col, elem); + Separation_item::add_conditional_item (col, elem); else if (!Accidental_interface::has_interface (elem)) - Separation_item::add_item (col, elem); + Separation_item::add_item (col, elem); } items_.clear (); if (to_boolean (get_property ("forbidBreak")) - && breaks_) /* don't honour forbidBreak if it occurs on the first moment of a score */ + && breaks_) /* don't honour forbidBreak if it occurs on the first moment of a score */ { command_column_->set_property ("page-turn-permission", SCM_EOL); command_column_->set_property ("page-break-permission", SCM_EOL); command_column_->set_property ("line-break-permission", SCM_EOL); for (vsize i = 0; i < break_events_.size (); i++) - { - SCM perm = break_events_[i]->get_property ("break-permission"); - if (perm == ly_symbol2scm ("force") || perm == ly_symbol2scm ("allow")) - warning (_ ("forced break was overridden by some other event, " - "should you be using bar checks?")); - } + { + SCM perm = break_events_[i]->get_property ("break-permission"); + if (perm == ly_symbol2scm ("force") || perm == ly_symbol2scm ("allow")) + warning (_ ("forced break was overridden by some other event, " + "should you be using bar checks?")); + } } else if (Paper_column::is_breakable (command_column_)) { breaks_++; - if (! (breaks_%8)) - progress_indication ("[" + to_string (breaks_) + "]"); + if (! (breaks_ % 8)) + progress_indication ("[" + to_string (breaks_) + "]"); } context ()->get_score_context ()->unset_property (ly_symbol2scm ("forbidBreak")); first_ = false; - break_events_.clear (); label_events_.clear (); SCM mpos = get_property ("measurePosition"); @@ -266,7 +281,7 @@ Paper_column_engraver::stop_translation_timestep () && scm_is_integer (barnum)) { SCM where = scm_cons (barnum, - mpos); + mpos); command_column_->set_property ("rhythmic-location", where); musical_column_->set_property ("rhythmic-location", where); @@ -276,6 +291,7 @@ Paper_column_engraver::stop_translation_timestep () void Paper_column_engraver::start_translation_timestep () { + break_events_.clear (); if (!first_ && !to_boolean (get_property ("skipTypesetting"))) { make_columns (); @@ -288,27 +304,27 @@ ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing); ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing); ADD_TRANSLATOR (Paper_column_engraver, - /* doc */ - "Take care of generating columns.\n" - "\n" - "This engraver decides whether a column is breakable. The" - " default is that a column is always breakable. However," - " every @code{Bar_engraver} that does not have a barline at a" - " certain point will set @code{forbidBreaks} in the score" - " context to stop line breaks. In practice, this means that" - " you can make a break point by creating a bar line (assuming" - " that there are no beams or notes that prevent a break" - " point).", - - /* create */ - "PaperColumn " - "NonMusicalPaperColumn ", - - /* read */ + /* doc */ + "Take care of generating columns.\n" + "\n" + "This engraver decides whether a column is breakable. The" + " default is that a column is always breakable. However," + " every @code{Bar_engraver} that does not have a barline at a" + " certain point will set @code{forbidBreaks} in the score" + " context to stop line breaks. In practice, this means that" + " you can make a break point by creating a bar line (assuming" + " that there are no beams or notes that prevent a break" + " point).", + + /* create */ + "PaperColumn " + "NonMusicalPaperColumn ", + + /* read */ "forbidBreak ", - /* write */ + /* write */ "forbidBreak " - "currentCommandColumn " - "currentMusicalColumn " - ); + "currentCommandColumn " + "currentMusicalColumn " + ); diff --git a/lily/paper-column.cc b/lily/paper-column.cc index f81818ea68..cdf3d595ca 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -98,15 +98,15 @@ Paper_column::Paper_column (Paper_column const &src) int Paper_column::compare (Grob *const &a, - Grob *const &b) + Grob *const &b) { return sign (dynamic_cast (a)->rank_ - - dynamic_cast (b)->rank_); + - dynamic_cast (b)->rank_); } bool Paper_column::less_than (Grob *const &a, - Grob *const &b) + Grob *const &b) { Paper_column *pa = dynamic_cast (a); Paper_column *pb = dynamic_cast (b); @@ -168,14 +168,12 @@ Paper_column::minimum_distance (Grob *left, Grob *right) Drul_array cols (left, right); Drul_array skys = Drul_array (Skyline (RIGHT), Skyline (LEFT)); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Skyline_pair *sp = Skyline_pair::unsmob (cols[d]->get_property ("horizontal-skylines")); if (sp) - skys[d] = (*sp)[-d]; + skys[d] = (*sp)[-d]; } - while (flip (&d) != LEFT); skys[RIGHT].merge (Separation_item::conditional_skyline (right, left)); @@ -198,20 +196,20 @@ Paper_column::break_align_width (Grob *me, SCM align_sym) || align_sym == ly_symbol2scm ("break-alignment")) align = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"), - (align_sym == ly_symbol2scm ("staff-bar") - ? Bar_line::non_empty_barline - : Break_alignment_interface::has_interface)); + (align_sym == ly_symbol2scm ("staff-bar") + ? Bar_line::non_empty_barline + : Break_alignment_interface::has_interface)); else { extract_grob_set (me, "elements", elts); for (vsize i = 0; i < elts.size (); i++) - { - if (elts[i]->get_property ("break-align-symbol") == align_sym) - { - align = elts[i]; - break; - } - } + { + if (elts[i]->get_property ("break-align-symbol") == align_sym) + { + align = elts[i]; + break; + } + } } if (!align) @@ -238,22 +236,22 @@ Paper_column::print (SCM p) SCM properties = Font_interface::text_font_alist_chain (me); SCM scm_mol = Text_interface::interpret_markup (me->layout ()->self_scm (), - properties, - ly_string2scm (r)); + properties, + ly_string2scm (r)); SCM when_mol = Text_interface::interpret_markup (me->layout ()->self_scm (), - properties, - ly_string2scm (when)); + properties, + ly_string2scm (when)); Stencil t = *unsmob_stencil (scm_mol); t.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (when_mol), 0.1); t.align_to (X_AXIS, CENTER); t.align_to (Y_AXIS, DOWN); Stencil l = Lookup::filled_box (Box (Interval (-0.01, 0.01), - Interval (-2, -1))); + Interval (-2, -1))); SCM small_letters = scm_cons (scm_acons (ly_symbol2scm ("font-size"), - scm_from_int (-6), SCM_EOL), - properties); + scm_from_int (-6), SCM_EOL), + properties); int j = 0; for (SCM s = me->get_object ("ideal-distances"); @@ -261,11 +259,11 @@ Paper_column::print (SCM p) { Spring *sp = unsmob_spring (scm_caar (s)); if (!unsmob_grob (scm_cdar (s)) - || !unsmob_grob (scm_cdar (s))->get_system ()) - continue; + || !unsmob_grob (scm_cdar (s))->get_system ()) + continue; j++; - Real y = -j * 1 -3; + Real y = -j * 1 - 3; vector pts; pts.push_back (Offset (0, y)); @@ -276,12 +274,12 @@ Paper_column::print (SCM p) Stencil head (musfont->find_by_name ("arrowheads.open.01")); SCM distance_stc = Text_interface::interpret_markup (me->layout ()->self_scm (), - small_letters, - ly_string2scm (String_convert::form_string ("%5.2lf", sp->distance ()))); + small_letters, + ly_string2scm (String_convert::form_string ("%5.2lf", sp->distance ()))); id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (sp->distance () / 3, y + 1))); id_stencil.add_stencil (head.translated (p2)); - id_stencil = id_stencil.in_color (0,0,1); + id_stencil = id_stencil.in_color (0, 0, 1); l.add_stencil (id_stencil); } @@ -291,11 +289,11 @@ Paper_column::print (SCM p) Real dist = scm_to_double (scm_cdar (s)); Grob *other = unsmob_grob (scm_caar (s)); if (!other || other->get_system () != me->get_system ()) - continue; + continue; j++; - Real y = -j * 1.0 -3.5; + Real y = -j * 1.0 - 3.5; vector pts; pts.push_back (Offset (0, y)); @@ -308,13 +306,13 @@ Paper_column::print (SCM p) id_stencil.add_stencil (head); SCM distance_stc = Text_interface::interpret_markup (me->layout ()->self_scm (), - small_letters, - ly_string2scm (String_convert::form_string ("%5.2lf", - dist))); + small_letters, + ly_string2scm (String_convert::form_string ("%5.2lf", + dist))); id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (dist / 3, y - 1))); - id_stencil = id_stencil.in_color (1,0,0); + id_stencil = id_stencil.in_color (1, 0, 0); l.add_stencil (id_stencil); } t.add_stencil (l); @@ -347,8 +345,8 @@ Paper_column::before_line_breaking (SCM grob) Grob *g = array[i]; if (!g || !g->is_live ()) - /* UGH . potentially quadratic. */ - array.erase (array.begin () + i); + /* UGH . potentially quadratic. */ + array.erase (array.begin () + i); } return SCM_UNSPECIFIED; @@ -372,47 +370,47 @@ Paper_column::is_extraneous_column_from_ligature (Grob *me) for (vsize i = 0; i < elts.size (); i++) { if (Rhythmic_head::has_interface (elts[i])) - { - has_notehead = true; - if (dynamic_cast (elts[i])->get_column () == me) - return false; - } + { + has_notehead = true; + if (dynamic_cast (elts[i])->get_column () == me) + return false; + } } return has_notehead; } ADD_INTERFACE (Paper_column, - "@code{Paper_column} objects form the top-most X@tie{}parents" - " for items. There are two types of columns: musical and" - " non-musical, to which musical and non-musical objects are" - " attached respectively. The spacing engine determines the" - " X@tie{}positions of these objects.\n" - "\n" - "They are numbered, the first (leftmost) is column@tie{}0." - " Numbering happens before line breaking, and columns are not" - " renumbered after line breaking. Since many columns go" - " unused, you should only use the rank field to get ordering" - " information. Two adjacent columns may have non-adjacent" - " numbers.", - - /* properties */ - "between-cols " - "bounded-by-me " - "full-measure-extra-space " - "grace-spacing " - "labels " - "line-break-system-details " - "line-break-penalty " - "line-break-permission " - "maybe-loose " - "page-break-penalty " - "page-break-permission " - "page-turn-penalty " - "page-turn-permission " - "rhythmic-location " - "shortest-playing-duration " - "shortest-starter-duration " - "spacing " - "used " - "when "); + "@code{Paper_column} objects form the top-most X@tie{}parents" + " for items. There are two types of columns: musical and" + " non-musical, to which musical and non-musical objects are" + " attached respectively. The spacing engine determines the" + " X@tie{}positions of these objects.\n" + "\n" + "They are numbered, the first (leftmost) is column@tie{}0." + " Numbering happens before line breaking, and columns are not" + " renumbered after line breaking. Since many columns go" + " unused, you should only use the rank field to get ordering" + " information. Two adjacent columns may have non-adjacent" + " numbers.", + + /* properties */ + "between-cols " + "bounded-by-me " + "full-measure-extra-space " + "grace-spacing " + "labels " + "line-break-system-details " + "line-break-penalty " + "line-break-permission " + "maybe-loose " + "page-break-penalty " + "page-break-permission " + "page-turn-penalty " + "page-turn-permission " + "rhythmic-location " + "shortest-playing-duration " + "shortest-starter-duration " + "spacing " + "used " + "when "); diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 14f1546d60..aa3a296c1f 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -93,15 +93,14 @@ find_pango_font (Output_def *layout, SCM descr, Real factor) = pango_font_description_from_string (scm_i_string_chars (descr)); pango_font_description_set_size (description, - gint (factor * - pango_font_description_get_size (description))); + gint (factor * + pango_font_description_get_size (description))); - Font_metric *fm = all_fonts_global->find_pango_font (description, - output_scale (layout)); + output_scale (layout)); pango_font_description_free (description); - + sizes = scm_acons (size_key, fm->self_scm (), sizes); scm_hash_set_x (table, descr, sizes); diff --git a/lily/paper-outputter-scheme.cc b/lily/paper-outputter-scheme.cc index be3d315cf1..0e13e1d203 100644 --- a/lily/paper-outputter-scheme.cc +++ b/lily/paper-outputter-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,9 +24,9 @@ #include "warn.hh" LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter", - 2, 0, 0, (SCM port, SCM format), - "Create an outputter that evaluates within" - " @code{output-}@var{format}, writing to @var{port}.") + 2, 0, 0, (SCM port, SCM format), + "Create an outputter that evaluates within" + " @code{output-}@var{format}, writing to @var{port}.") { LY_ASSERT_TYPE (ly_is_port, port, 1); LY_ASSERT_TYPE (ly_is_symbol, format, 2); @@ -39,7 +39,7 @@ LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter", output_name = ly_scm2string (port_name); message (_f ("Layout output to `%s'...", - output_name.c_str ())); + output_name.c_str ())); progress_indication ("\n"); Paper_outputter *po = new Paper_outputter (port, f); @@ -50,10 +50,10 @@ LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter", /* FIXME: why is output_* wrapper called dump? */ LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil", - 2, 0, 0, (SCM outputter, SCM stencil), - "Dump stencil @var{expr} onto @var{outputter}.") + 2, 0, 0, (SCM outputter, SCM stencil), + "Dump stencil @var{expr} onto @var{outputter}.") { - + LY_ASSERT_SMOB (Paper_outputter, outputter, 1); LY_ASSERT_SMOB (Stencil, stencil, 2); @@ -65,8 +65,8 @@ LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil", } LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string", - 2, 0, 0, (SCM outputter, SCM str), - "Dump @var{str} onto @var{outputter}.") + 2, 0, 0, (SCM outputter, SCM str), + "Dump @var{str} onto @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); LY_ASSERT_TYPE (scm_is_string, str, 2); @@ -77,8 +77,8 @@ LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string", } LY_DEFINE (ly_outputter_port, "ly:outputter-port", - 1, 0, 0, (SCM outputter), - "Return output port for @var{outputter}.") + 1, 0, 0, (SCM outputter), + "Return output port for @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); Paper_outputter *po = unsmob_outputter (outputter); @@ -87,8 +87,8 @@ LY_DEFINE (ly_outputter_port, "ly:outputter-port", } LY_DEFINE (ly_outputter_close, "ly:outputter-close", - 1, 0, 0, (SCM outputter), - "Close port of @var{outputter}.") + 1, 0, 0, (SCM outputter), + "Close port of @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); Paper_outputter *po = unsmob_outputter (outputter); @@ -98,8 +98,8 @@ LY_DEFINE (ly_outputter_close, "ly:outputter-close", } LY_DEFINE (ly_outputter_output_scheme, "ly:outputter-output-scheme", - 2, 0, 0, (SCM outputter, SCM expr), - "Eval @var{expr} in module of @var{outputter}.") + 2, 0, 0, (SCM outputter, SCM expr), + "Eval @var{expr} in module of @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); Paper_outputter *po = unsmob_outputter (outputter); @@ -110,8 +110,8 @@ LY_DEFINE (ly_outputter_output_scheme, "ly:outputter-output-scheme", } LY_DEFINE (ly_outputter_module, "ly:outputter-module", - 1, 0, 0, (SCM outputter), - "Return output module of @var{outputter}.") + 1, 0, 0, (SCM outputter), + "Return output module of @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index e08cbd6590..57efb2fb35 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -74,8 +74,8 @@ Paper_outputter::mark_smob (SCM x) int Paper_outputter::print_smob (SCM /* x */, - SCM p, - scm_print_state *) + SCM p, + scm_print_state *) { scm_puts ("#", p); return 1; @@ -122,7 +122,7 @@ void Paper_outputter::output_stencil (Stencil stil) { interpret_stencil_expression (stil.expr (), paper_outputter_dump, - (void *) this, Offset (0, 0)); + (void *) this, Offset (0, 0)); } void @@ -132,9 +132,9 @@ Paper_outputter::close () { scm_close_port (file_); /* - Remove the "warning" definitions for missing stencil - expressions so that we start fresh with the next \book - block. --pmccarty + Remove the "warning" definitions for missing stencil + expressions so that we start fresh with the next \book + block. --pmccarty */ SCM proc = ly_lily_module_constant ("remove-stencil-warnings"); scm_call_1 (proc, output_module_); diff --git a/lily/paper-score-scheme.cc b/lily/paper-score-scheme.cc index 033f1b6477..d303b9c24f 100644 --- a/lily/paper-score-scheme.cc +++ b/lily/paper-score-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,10 +20,10 @@ #include "paper-score.hh" LY_DEFINE (ly_paper_score_paper_systems, "ly:paper-score-paper-systems", - 1, 0, 0, - (SCM paper_score), - "Return vector of @code{paper_system} objects from" - " @var{paper-score}.") + 1, 0, 0, + (SCM paper_score), + "Return vector of @code{paper_system} objects from" + " @var{paper-score}.") { LY_ASSERT_TYPE (unsmob_paper_score, paper_score, 1); diff --git a/lily/paper-score.cc b/lily/paper-score.cc index 9b5e8aa7df..65ac88333d 100644 --- a/lily/paper-score.cc +++ b/lily/paper-score.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -78,14 +78,14 @@ Paper_score::find_break_indices () const for (vsize i = 0; i < cols_.size (); i++) { - Item *it = dynamic_cast (cols_[i]); + Item *it = dynamic_cast (cols_[i]); if (Paper_column::is_breakable (cols_[i]) - && (i == 0 || it->find_prebroken_piece (LEFT)) - && (i == cols_.size () - 1 || it->find_prebroken_piece (RIGHT))) - { - break_indices_.push_back (i); - break_ranks_.push_back (it->get_column ()->get_rank ()); - } + && (i == 0 || it->find_prebroken_piece (LEFT)) + && (i == cols_.size () - 1 || it->find_prebroken_piece (RIGHT))) + { + break_indices_.push_back (i); + break_ranks_.push_back (it->get_column ()->get_rank ()); + } } } @@ -97,7 +97,7 @@ Paper_score::get_break_indices () const return break_indices_; } -vector +vector Paper_score::get_columns () const { if (cols_.empty ()) @@ -131,10 +131,9 @@ Paper_score::calc_breaking () void Paper_score::process () { - if (be_verbose_global) - message (_f ("Element count %d (spanners %d) ", - system_->element_count (), - system_->spanner_count ())); + debug_output (_f ("Element count %d (spanners %d) ", + system_->element_count (), + system_->spanner_count ())); message (_ ("Preprocessing graphical objects...")); @@ -167,9 +166,8 @@ Paper_score::get_paper_systems () return paper_systems_; } - Paper_score * unsmob_paper_score (SCM x) { - return dynamic_cast (unsmob_music_output (x)); + return dynamic_cast (unsmob_music_output (x)); } diff --git a/lily/paper-system-scheme.cc b/lily/paper-system-scheme.cc index 4187cfa3db..8732dfeda6 100644 --- a/lily/paper-system-scheme.cc +++ b/lily/paper-system-scheme.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2008--2011 Han-Wen Nienhuys - + Copyright (C) 2008--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,20 +21,20 @@ #include "prob.hh" #include "skyline-pair.hh" - + LY_DEFINE (ly_paper_system_p, "ly:paper-system?", - 1, 0, 0, (SCM obj), - "Is @var{obj} a C++ @code{Prob} object of type" - " @code{paper-system}?") + 1, 0, 0, (SCM obj), + "Is @var{obj} a C++ @code{Prob} object of type" + " @code{paper-system}?") { return ly_prob_type_p (obj, ly_symbol2scm ("paper-system")); } LY_DEFINE (ly_paper_system_minimum_distance, "ly:paper-system-minimum-distance", - 2, 0, 0, (SCM sys1, SCM sys2), - "Measure the minimum distance between these two paper-systems," - " using their stored skylines if possible and falling back to" - " their extents otherwise.") + 2, 0, 0, (SCM sys1, SCM sys2), + "Measure the minimum distance between these two paper-systems," + " using their stored skylines if possible and falling back to" + " their extents otherwise.") { Real ret = 0; Prob *p1 = unsmob_prob (sys1); diff --git a/lily/paper-system.cc b/lily/paper-system.cc index 711d919446..909d40479d 100644 --- a/lily/paper-system.cc +++ b/lily/paper-system.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Jan Nieuwenhuizen + Copyright (C) 2004--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ */ #include "paper-system.hh" +#include "international.hh" #include "item.hh" Prob * @@ -30,9 +31,9 @@ make_paper_system (SCM immutable_init) /* TODO it might be interesting to split off the footnotes as well, ie. - - get_footnotes(SCM expr, SCM* footnotes, SCM* cleaned) - + + get_footnotes(SCM expr, SCM* footnotes, SCM* cleaned) + by doing it this way and overwriting the old expr in the caller, you can make sure nobody tries to handle footnotes differently downstream. @@ -50,7 +51,7 @@ get_footnotes (SCM expr) // we likely need to do something here...just don't know what... return SCM_EOL; } - + if (head == ly_symbol2scm ("combine-stencil")) { SCM out = SCM_EOL; @@ -59,32 +60,23 @@ 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; } - void paper_system_set_stencil (Prob *prob, Stencil s) { diff --git a/lily/parenthesis-engraver.cc b/lily/parenthesis-engraver.cc index 1fe8005e4d..5422d1d441 100644 --- a/lily/parenthesis-engraver.cc +++ b/lily/parenthesis-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -46,45 +46,45 @@ Parenthesis_engraver::acknowledge_grob (Grob_info info) if (Stream_event *ev = info.event_cause ()) { if (to_boolean (ev->get_property ("parenthesize"))) - { - if (Item *victim = dynamic_cast (info.grob ())) - { - Engraver *eng = dynamic_cast (info.origin_translator ()); - Item *paren = eng->make_item ("ParenthesesItem", victim->self_scm ()); - Pointer_group_interface::add_grob (paren, ly_symbol2scm ("elements"), victim); - - paren->set_parent (victim, Y_AXIS); - - Real size = robust_scm2double (paren->get_property ("font-size"), 0.0) - + robust_scm2double (victim->get_property ("font-size"), 0.0); - paren->set_property ("font-size", scm_from_double (size)); - - /* - TODO? - - enlarge victim to allow for parentheses space? - */ - } - else - { - programming_error ("Don't know how to parenthesize spanners."); - } - } + { + if (Item *victim = dynamic_cast (info.grob ())) + { + Engraver *eng = dynamic_cast (info.origin_translator ()); + Item *paren = eng->make_item ("ParenthesesItem", victim->self_scm ()); + Pointer_group_interface::add_grob (paren, ly_symbol2scm ("elements"), victim); + + paren->set_parent (victim, Y_AXIS); + + Real size = robust_scm2double (paren->get_property ("font-size"), 0.0) + + robust_scm2double (victim->get_property ("font-size"), 0.0); + paren->set_property ("font-size", scm_from_double (size)); + + /* + TODO? + + enlarge victim to allow for parentheses space? + */ + } + else + { + programming_error ("Don't know how to parenthesize spanners."); + } + } } } ADD_ACKNOWLEDGER (Parenthesis_engraver, grob); ADD_TRANSLATOR (Parenthesis_engraver, - /* doc */ - "Parenthesize objects whose music cause has the" - " @code{parenthesize} property.", - - /* create */ - "ParenthesesItem ", - - /* read */ - "", - - /* write */ - "" - ); + /* doc */ + "Parenthesize objects whose music cause has the" + " @code{parenthesize} property.", + + /* create */ + "ParenthesesItem ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/parse-scm.cc b/lily/parse-scm.cc index b51dcb296a..44b99db2ad 100644 --- a/lily/parse-scm.cc +++ b/lily/parse-scm.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,12 +23,13 @@ using namespace std; #include "lily-parser.hh" +#include "lily-lexer.hh" #include "international.hh" #include "main.hh" #include "paper-book.hh" #include "source-file.hh" -/* Pass string to scm parser, evaluate one expression. +/* Pass string to scm parser, read one expression. Return result value and #chars read. Thanks to Gary Houston */ @@ -38,42 +39,39 @@ internal_ly_parse_scm (Parse_start *ps) Source_file *sf = ps->start_location_.get_source_file (); SCM port = sf->get_port (); - int off = ps->start_location_.start () - sf->c_str (); + long off = ps->start_location_.start () - sf->c_str (); scm_seek (port, scm_from_long (off), scm_from_long (SEEK_SET)); SCM from = scm_ftell (port); - scm_set_port_line_x (port, scm_from_int (ps->start_location_.line_number () -1)); - scm_set_port_column_x (port, scm_from_int (ps->start_location_.column_number () -1)); - - SCM answer = SCM_UNSPECIFIED; - SCM form = scm_read (port); + scm_set_port_line_x (port, scm_from_int (ps->start_location_.line_number () - 1)); + scm_set_port_column_x (port, scm_from_int (ps->start_location_.column_number () - 1)); + + bool multiple = ly_is_equal (scm_peek_char (port), SCM_MAKE_CHAR ('@')); + + if (multiple) + (void) scm_read_char (port); + SCM form = scm_read (port); SCM to = scm_ftell (port); + ps->nchars = scm_to_int (to) - scm_to_int (from); - - /* Read expression from port. */ if (!SCM_EOF_OBJECT_P (form)) { - if (ps->safe_) - { - static SCM module = SCM_BOOL_F; - if (module == SCM_BOOL_F) - { - SCM function = ly_lily_module_constant ("make-safe-lilypond-module"); - module = scm_call_0 (function); - } - - // We define the parser so trusted Scheme functions can - // access the real namespace underlying the parser. - if (ps->parser_) - scm_module_define (module, ly_symbol2scm ("parser"), - ps->parser_->self_scm()); - answer = scm_eval (form, module); - } - else - answer = scm_primitive_eval (form); + if (ps->parser_->lexer_->top_input ()) + { + // Find any precompiled form. + SCM c = scm_assv_ref (ps->parser_->closures_, from); + if (scm_is_true (c)) + // Replace form with a call to previously compiled closure + form = scm_list_1 (c); + } + if (multiple) + form = scm_list_3 (ly_symbol2scm ("apply"), + ly_symbol2scm ("values"), + form); + return scm_cons (form, make_input (ps->start_location_)); } /* Don't close the port here; if we re-enter this function via a @@ -82,7 +80,29 @@ internal_ly_parse_scm (Parse_start *ps) early. */ // scm_close_port (port); - return answer; + return SCM_UNDEFINED; +} + +SCM +internal_ly_eval_scm (Parse_start *ps) +{ + if (ps->safe_) + { + static SCM module = SCM_BOOL_F; + if (module == SCM_BOOL_F) + { + SCM function = ly_lily_module_constant ("make-safe-lilypond-module"); + module = scm_gc_protect_object (scm_call_0 (function)); + } + + // We define the parser so trusted Scheme functions can + // access the real namespace underlying the parser. + if (ps->parser_) + scm_module_define (module, ly_symbol2scm ("parser"), + ps->parser_->self_scm ()); + return scm_eval (ps->form_, module); + } + return scm_primitive_eval (ps->form_); } SCM @@ -90,7 +110,7 @@ catch_protected_parse_body (void *p) { Parse_start *ps = (Parse_start *) p; - return internal_ly_parse_scm (ps); + return (*ps->func_) (ps); } SCM @@ -115,17 +135,17 @@ protected_ly_parse_scm (Parse_start *ps) /* Catch #t : catch all Scheme level errors. */ - return scm_internal_catch (SCM_BOOL_T, - &catch_protected_parse_body, - (void *) ps, - &parse_handler, (void *) ps); + return scm_internal_catch (SCM_BOOL_T, + &catch_protected_parse_body, + (void *) ps, + &parse_handler, (void *) ps); } bool parse_protect_global = true; bool parsed_objects_should_be_dead = false; -/* Try parsing. Upon failure return SCM_UNDEFINED. - FIXME: shouldn't we return SCM_UNSCPECIFIED -- jcn */ +/* Try parsing. Upon failure return SCM_UNDEFINED. */ + SCM ly_parse_scm (char const *s, int *n, Input i, bool safe, Lily_parser *parser) { @@ -133,12 +153,30 @@ ly_parse_scm (char const *s, int *n, Input i, bool safe, Lily_parser *parser) ps.str = s; ps.start_location_ = i; ps.safe_ = safe; + ps.form_ = SCM_UNDEFINED; ps.parser_ = parser; + ps.func_ = internal_ly_parse_scm; SCM ans = parse_protect_global ? protected_ly_parse_scm (&ps) - : internal_ly_parse_scm (&ps); + : internal_ly_parse_scm (&ps); *n = ps.nchars; return ans; } +SCM +ly_eval_scm (SCM form, Input i, bool safe, Lily_parser *parser) +{ + Parse_start ps; + ps.str = 0; + ps.start_location_ = i; + ps.safe_ = safe; + ps.form_ = form; + ps.parser_ = parser; + ps.func_ = internal_ly_eval_scm; + + SCM ans = parse_protect_global ? protected_ly_parse_scm (&ps) + : internal_ly_eval_scm (&ps); + scm_remember_upto_here_1 (form); + return ans; +} diff --git a/lily/parser.yy b/lily/parser.yy index 0bb4c152f2..fc9aea63be 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1,7 +1,8 @@ +/* -*- mode: c++; c-file-style: "linux" -*- */ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -18,15 +19,17 @@ along with LilyPond. If not, see . */ -%{ +/* Mode and indentation are at best a rough approximation based on TAB + * formatting (reasonable for compatibility with unspecific editor + * modes as Bison modes are hard to find) and need manual correction + * frequently. Without a reasonably dependable way of formatting a + * Bison file sensibly, there is little point in trying to fix the + * inconsistent state of indentation. + */ -#define YYDEBUG 1 -#define YYERROR_VERBOSE 1 -#define YYPARSE_PARAM my_lily_parser -#define YYLEX_PARAM my_lily_parser -#define PARSER ((Lily_parser *) my_lily_parser) +%{ -#define yyerror PARSER->parser_error +#define yyerror Lily_parser::parser_error /* We use custom location type: Input objects */ #define YYLTYPE Input @@ -36,17 +39,20 @@ %} +%parse-param {Lily_parser *parser} +%lex-param {Lily_parser *parser} +%error-verbose +%debug + /* We use SCMs to do strings, because it saves us the trouble of -deleting them. Let's hope that a stack overflow doesnt trigger a move +deleting them. Let's hope that a stack overflow doesn't trigger a move of the parse stack onto the heap. */ -%left PREC_TOP -%left ADDLYRICS %left PREC_BOT +%nonassoc REPEAT +%nonassoc ALTERNATIVE -%expect 1 - -/* One shift/reduce problem +/* The above precedences tackle the shift/reduce problem 1. \repeat \repeat .. \alternative @@ -58,6 +64,41 @@ or \repeat { \repeat } \alternative */ +%nonassoc COMPOSITE +%left ADDLYRICS + + /* ADDLYRICS needs to have lower precedence than argument scanning, + * or we won't be able to tell music apart from closed_music without + * lookahead in the context of function calls. + */ + +%nonassoc DEFAULT + + /* \default is only applied after exhausting function arguments */ + +%nonassoc FUNCTION_ARGLIST + + /* expressions with units are permitted into argument lists */ + +%right PITCH_IDENTIFIER NOTENAME_PITCH TONICNAME_PITCH + UNSIGNED REAL DURATION_IDENTIFIER ':' + + /* The above are the symbols that can start optional function arguments + that are recognized in the grammar rather than by predicate + */ + +%nonassoc NUMBER_IDENTIFIER '/' + + /* Number-unit expressions, where permitted, are concatenated into + * function arguments, just like fractions and tremoli. Tremoli must + * not have higher precedence than UNSIGNED, or Lilypond will not + * join ':' with a following optional number. + */ + +%left PREC_TOP + + + %pure_parser %locations @@ -95,15 +136,46 @@ using namespace std; #include "main.hh" #include "misc.hh" #include "music.hh" -#include "music.hh" #include "output-def.hh" #include "paper-book.hh" -#include "program-option.hh" #include "scm-hash.hh" #include "score.hh" #include "text-interface.hh" #include "warn.hh" +void +Lily_parser::parser_error (Input const *i, Lily_parser *parser, string s) +{ + parser->parser_error (*i, s); +} + +#define MYBACKUP(Token, Value, Location) \ +do \ + if (yychar == YYEMPTY) \ + { \ + if (Token) \ + parser->lexer_->push_extra_token (Token, Value); \ + parser->lexer_->push_extra_token (BACKUP); \ + } else { \ + parser->parser_error \ + (Location, _("Too much lookahead")); \ + } \ +while (0) + + +#define MYREPARSE(Location, Pred, Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + parser->lexer_->push_extra_token (Token, Value); \ + parser->lexer_->push_extra_token (REPARSE, \ + Pred); \ + } else { \ + parser->parser_error \ + (Location, _("Too much lookahead")); \ + } \ +while (0) + %} @@ -112,7 +184,6 @@ using namespace std; Output_def *outputdef; SCM scm; std::string *string; - Music *music; Score *score; int i; } @@ -129,7 +200,11 @@ using namespace std; scm_apply_0 (proc, args) /* Syntactic Sugar. */ #define MAKE_SYNTAX(name, location, ...) \ - LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant (name), scm_list_n (PARSER->self_scm (), make_input (location), __VA_ARGS__, SCM_UNDEFINED)); + LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant (name), scm_list_n (parser->self_scm (), make_input (location) , ##__VA_ARGS__, SCM_UNDEFINED)) +#define START_MAKE_SYNTAX(name, ...) \ + scm_list_n (ly_lily_module_constant (name) , ##__VA_ARGS__, SCM_UNDEFINED) +#define FINISH_MAKE_SYNTAX(start, location, ...) \ + LOWLEVEL_MAKE_SYNTAX (scm_car (start), scm_cons2 (parser->self_scm (), make_input (location), scm_append_x (scm_list_2 (scm_cdr (start), scm_list_n (__VA_ARGS__, SCM_UNDEFINED))))) SCM get_next_unique_context_id (); SCM get_next_unique_lyrics_context_id (); @@ -144,16 +219,15 @@ SCM get_next_unique_lyrics_context_id (); static Music *make_music_with_input (SCM name, Input where); -SCM make_music_relative (Pitch start, SCM music, Input loc); -SCM run_music_function (Lily_parser *, SCM expr); -SCM get_first_context_id (SCM type, Music *m); -SCM make_chord_elements (SCM pitch, SCM dur, SCM modification_list); +SCM check_scheme_arg (Lily_parser *parser, Input loc, + SCM arg, SCM args, SCM pred); +SCM loc_on_music (Input loc, SCM arg); +SCM make_chord_elements (Input loc, SCM pitch, SCM dur, SCM modification_list); SCM make_chord_step (int step, Rational alter); SCM make_simple_markup (SCM a); bool is_duration (int t); bool is_regular_identifier (SCM id); -bool ly_input_procedure_p (SCM x); -int yylex (YYSTYPE *s, YYLTYPE *loc, void *v); +int yylex (YYSTYPE *s, YYLTYPE *loc, Lily_parser *parser); void set_music_properties (Music *p, SCM a); %} @@ -185,26 +259,19 @@ void set_music_properties (Music *p, SCM a); %token DRUMS "\\drums" %token FIGUREMODE "\\figuremode" %token FIGURES "\\figures" -%token GROBDESCRIPTIONS "\\grobdescriptions" %token HEADER "\\header" -%token INVALID "\\invalid" -%token KEY "\\key" +%token INVALID "\\version-error" %token LAYOUT "\\layout" %token LYRICMODE "\\lyricmode" %token LYRICS "\\lyrics" %token LYRICSTO "\\lyricsto" -%token MARK "\\mark" %token MARKUP "\\markup" -%token MARKUPLINES "\\markuplines" +%token MARKUPLIST "\\markuplist" %token MIDI "\\midi" %token NAME "\\name" %token NOTEMODE "\\notemode" -%token OCTAVE "\\octave" -%token ONCE "\\once" %token OVERRIDE "\\override" %token PAPER "\\paper" -%token PARTIAL "\\partial" -%token RELATIVE "\\relative" %token REMOVE "\\remove" %token REPEAT "\\repeat" %token REST "\\rest" @@ -213,16 +280,12 @@ void set_music_properties (Music *p, SCM a); %token SEQUENTIAL "\\sequential" %token SET "\\set" %token SIMULTANEOUS "\\simultaneous" -%token SKIP "\\skip" %token TEMPO "\\tempo" -%token TIMES "\\times" -%token TRANSPOSE "\\transpose" %token TYPE "\\type" %token UNSET "\\unset" %token WITH "\\with" /* Keyword token exceptions. */ -%token TIME_T "\\time" %token NEWCONTEXT "\\new" @@ -263,18 +326,24 @@ If we give names, Bison complains. %token MULTI_MEASURE_REST -%token DIGIT %token E_UNSIGNED -%token UNSIGNED +%token UNSIGNED /* Artificial tokens, for more generic function syntax */ -%token EXPECT_MARKUP; -%token EXPECT_MUSIC; -%token EXPECT_SCM; -%token EXPECT_MARKUP_LIST +%token EXPECT_MARKUP "markup?" +%token EXPECT_PITCH "ly:pitch?" +%token EXPECT_DURATION "ly:duration?" +%token EXPECT_SCM "scheme?" +%token BACKUP "(backed-up?)" +%token REPARSE "(reparsed?)" +%token EXPECT_MARKUP_LIST "markup-list?" +%token EXPECT_OPTIONAL "optional?" /* After the last argument. */ %token EXPECT_NO_MORE_ARGS; +/* An artificial token for parsing embedded Lilypond */ +%token EMBEDDED_LILY "#{" + %token BOOK_IDENTIFIER %token CHORDMODIFIER_PITCH %token CHORD_MODIFIER @@ -282,15 +351,18 @@ If we give names, Bison complains. %token CONTEXT_DEF_IDENTIFIER %token CONTEXT_MOD_IDENTIFIER %token DRUM_PITCH +%token PITCH_IDENTIFIER %token DURATION_IDENTIFIER %token EVENT_IDENTIFIER +%token EVENT_FUNCTION %token FRACTION %token LYRICS_STRING +%token LYRIC_ELEMENT %token LYRIC_MARKUP_IDENTIFIER %token MARKUP_FUNCTION %token MARKUP_LIST_FUNCTION %token MARKUP_IDENTIFIER -%token MARKUPLINES_IDENTIFIER +%token MARKUPLIST_IDENTIFIER %token MUSIC_FUNCTION %token MUSIC_IDENTIFIER %token NOTENAME_PITCH @@ -298,6 +370,7 @@ If we give names, Bison complains. %token OUTPUT_DEF_IDENTIFIER %token REAL %token RESTNAME +%token SCM_FUNCTION %token SCM_IDENTIFIER %token SCM_TOKEN %token SCORE_IDENTIFIER @@ -325,8 +398,17 @@ If we give names, Bison complains. /* Music */ %type composite_music %type grouped_music_list +%type braced_music_list +%type closed_music %type music -%type prefix_composite_music +%type music_bare +%type music_arg +%type music_assign +%type music_embedded +%type music_or_context_def +%type complex_music +%type complex_music_prefix +%type mode_changed_music %type repeated_music %type sequential_music %type simple_music @@ -339,15 +421,18 @@ If we give names, Bison complains. %type context_change %type direction_less_event %type direction_reqd_event +%type embedded_lilypond %type event_chord +%type fingering %type gen_text_def %type music_property_def %type note_chord_element %type post_event +%type post_event_nofinger %type re_rhythmed_music -%type relative_music %type simple_element %type simple_music_property_def +%type start_symbol %type string_number_event %type tempo_event @@ -357,12 +442,11 @@ If we give names, Bison complains. %type output_def %type paper_block -%type alternative_music -%type generic_prefix_music_scm +%type music_function_call %type music_list -%type absolute_pitch %type assignment_id %type bare_number +%type bare_number_closed %type unsigned_number %type bass_figure %type figured_bass_modification @@ -376,25 +460,45 @@ If we give names, Bison complains. %type context_def_spec_block %type context_def_spec_body %type context_mod +%type context_mod_arg +%type context_mod_embedded %type context_mod_list %type context_prop_spec %type direction_less_char %type duration_length %type embedded_scm +%type embedded_scm_arg +%type embedded_scm_arg_closed +%type embedded_scm_bare +%type embedded_scm_bare_arg +%type embedded_scm_closed +%type event_function_event %type figure_list %type figure_spec -%type fraction %type full_markup %type full_markup_list -%type function_scm_argument %type function_arglist -%type function_arglist_music_last -%type function_arglist_nonmusic_last -%type function_arglist_nonmusic +%type function_arglist_optional +%type function_arglist_backup +%type function_arglist_nonbackup +%type function_arglist_nonbackup_common +%type function_arglist_closed_nonbackup +%type function_arglist_skip +%type function_arglist_bare +%type function_arglist_closed +%type function_arglist_closed_optional +%type function_arglist_common +%type function_arglist_common_lyric +%type function_arglist_common_minus +%type function_arglist_closed_common +%type function_arglist_keep +%type function_arglist_closed_keep %type identifier_init +%type lilypond %type lilypond_header -%type lilypond_header_body %type lyric_element +%type lyric_element_arg +%type lyric_element_music %type lyric_markup %type markup %type markup_braced_list @@ -407,10 +511,10 @@ If we give names, Bison complains. %type markup_head_1_list %type markup_list %type markup_top +%type maybe_notemode_duration %type mode_changing_head %type mode_changing_head_with_context %type multiplied_duration -%type music_function_identifier_musicless_prefix %type music_function_event %type music_function_chord_body %type new_chord @@ -428,6 +532,9 @@ If we give names, Bison complains. %type property_operation %type property_path property_path_revved %type scalar +%type scalar_closed +%type scm_function_call +%type scm_function_call_closed %type script_abbreviation %type simple_chord_elements %type simple_markup @@ -453,55 +560,68 @@ prec levels in different prods */ %% -lilypond: /* empty */ +start_symbol: + lilypond + | EMBEDDED_LILY { + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); + } embedded_lilypond { + parser->lexer_->pop_state (); + parser->lexer_->set_identifier (ly_symbol2scm ("parseStringResult"), $3); + } + ; + +lilypond: /* empty */ { } | lilypond toplevel_expression { } | lilypond assignment { } | lilypond error { - PARSER->error_level_ = 1; + parser->error_level_ = 1; } | lilypond INVALID { - PARSER->error_level_ = 1; + parser->error_level_ = 1; } ; toplevel_expression: - lilypond_header { - PARSER->lexer_->set_identifier (ly_symbol2scm ("$defaultheader"), $1); + { + parser->lexer_->add_scope (get_header (parser)); + } lilypond_header { + parser->lexer_->set_identifier (ly_symbol2scm ("$defaultheader"), $2); } | book_block { Book *book = $1; - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-book-handler"); - scm_call_2 (proc, PARSER->self_scm (), book->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-book-handler"); + scm_call_2 (proc, parser->self_scm (), book->self_scm ()); book->unprotect (); } | bookpart_block { Book *bookpart = $1; - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-bookpart-handler"); - scm_call_2 (proc, PARSER->self_scm (), bookpart->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-bookpart-handler"); + scm_call_2 (proc, parser->self_scm (), bookpart->self_scm ()); bookpart->unprotect (); } | score_block { Score *score = $1; - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-score-handler"); - scm_call_2 (proc, PARSER->self_scm (), score->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-score-handler"); + scm_call_2 (proc, parser->self_scm (), score->self_scm ()); score->unprotect (); } | composite_music { Music *music = unsmob_music ($1); - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-music-handler"); - scm_call_2 (proc, PARSER->self_scm (), music->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-music-handler"); + scm_call_2 (proc, parser->self_scm (), music->self_scm ()); } | full_markup { - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-text-handler"); - scm_call_2 (proc, PARSER->self_scm (), scm_list_1 ($1)); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-text-handler"); + scm_call_2 (proc, parser->self_scm (), scm_list_1 ($1)); } | full_markup_list { - SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-text-handler"); - scm_call_2 (proc, PARSER->self_scm (), $1); + SCM proc = parser->lexer_->lookup_identifier ("toplevel-text-handler"); + scm_call_2 (proc, parser->self_scm (), $1); } | output_def { SCM id = SCM_EOL; @@ -514,22 +634,94 @@ toplevel_expression: else if ($1->c_variable ("is-layout") == SCM_BOOL_T) id = ly_symbol2scm ("$defaultlayout"); - PARSER->lexer_->set_identifier (id, od->self_scm ()); + parser->lexer_->set_identifier (id, od->self_scm ()); od->unprotect(); } ; -embedded_scm: +embedded_scm_bare: SCM_TOKEN + { + $$ = parser->lexer_->eval_scm_token ($1); + } | SCM_IDENTIFIER ; +embedded_scm_bare_arg: + embedded_scm_bare + | STRING + | STRING_IDENTIFIER + | full_markup + | full_markup_list + | context_modification + | score_block + { + $$ = $1->self_scm (); + $1->unprotect (); + } + | context_def_spec_block + | book_block + { + $$ = $1->self_scm (); + $1->unprotect (); + } + | bookpart_block + { + $$ = $1->self_scm (); + $1->unprotect (); + } + | output_def + { + $$ = $1->self_scm (); + $1->unprotect (); + } + ; + +/* The generic version may end in music, or not */ -lilypond_header_body: +embedded_scm: + embedded_scm_bare + | scm_function_call + ; + +embedded_scm_arg: + embedded_scm_bare_arg + | scm_function_call + | music_arg + ; + +scm_function_call: + SCM_FUNCTION function_arglist { + $$ = MAKE_SYNTAX ("music-function", @$, + $1, $2); + } + ; + +embedded_lilypond: + /* empty */ { - $$ = get_header (PARSER); - PARSER->lexer_->add_scope ($$); + $$ = MAKE_SYNTAX ("void-music", @$); + } + | identifier_init + | music_embedded music_embedded music_list { + $3 = scm_reverse_x ($3, SCM_EOL); + if (unsmob_music ($2)) + $3 = scm_cons ($2, $3); + if (unsmob_music ($1)) + $3 = scm_cons ($1, $3); + $$ = MAKE_SYNTAX ("sequential-music", @$, $3); + } + | error { + parser->error_level_ = 1; } + | INVALID embedded_lilypond { + parser->error_level_ = 1; + } + ; + + +lilypond_header_body: + /* empty */ | lilypond_header_body assignment { } @@ -537,7 +729,7 @@ lilypond_header_body: lilypond_header: HEADER '{' lilypond_header_body '}' { - $$ = PARSER->lexer_->remove_scope (); + $$ = parser->lexer_->remove_scope (); } ; @@ -551,11 +743,11 @@ assignment_id: assignment: assignment_id '=' identifier_init { - PARSER->lexer_->set_identifier ($1, $3); + parser->lexer_->set_identifier ($1, $3); } | assignment_id property_path '=' identifier_init { SCM path = scm_cons (scm_string_to_symbol ($1), $2); - PARSER->lexer_->set_identifier (path, $4); + parser->lexer_->set_identifier (path, $4); ; /* TODO: devise standard for protection in parser. @@ -589,24 +781,18 @@ identifier_init: | context_def_spec_block { $$ = $1; } - | music { - /* Hack: Create event-chord around standalone events. - Prevents the identifier from being interpreted as a post-event. */ - Music *mus = unsmob_music ($1); - bool is_event = mus && - (scm_memq (ly_symbol2scm ("event"), mus->get_property ("types")) - != SCM_BOOL_F); - if (!is_event) - $$ = $1; - else - $$ = MAKE_SYNTAX ("event-chord", @$, scm_list_1 ($1)); + | music_assign { + $$ = $1; } - | post_event { + | post_event_nofinger { $$ = $1; } | number_expression { $$ = $1; } + | FRACTION { + $$ = $1; + } | string { $$ = $1; } @@ -619,9 +805,6 @@ identifier_init: | full_markup_list { $$ = $1; } - | DIGIT { - $$ = scm_from_int ($1); - } | context_modification { $$ = $1; } @@ -634,6 +817,27 @@ context_def_spec_block: } ; +context_mod_arg: + embedded_scm + | composite_music + ; + +context_mod_embedded: + context_mod_arg + { + if (unsmob_music ($1)) { + SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler"); + $1 = scm_call_2 (proc, parser->self_scm (), $1); + } + if (unsmob_context_mod ($1)) + $$ = $1; + else { + parser->parser_error (@1, _ ("not a context mod")); + } + } + ; + + context_def_spec_body: /**/ { $$ = Context_def::make_scm (); @@ -643,17 +847,6 @@ context_def_spec_body: $$ = $1; unsmob_context_def ($$)->origin ()->set_spot (@$); } - | context_def_spec_body GROBDESCRIPTIONS embedded_scm { - Context_def*td = unsmob_context_def ($$); - - for (SCM p = $3; scm_is_pair (p); p = scm_cdr (p)) { - SCM tag = scm_caar (p); - - /* TODO: should make new tag "grob-definition" ? */ - td->add_context_mod (scm_list_3 (ly_symbol2scm ("assign"), - tag, scm_cons (scm_cdar (p), SCM_EOL))); - } - } | context_def_spec_body context_mod { unsmob_context_def ($$)->add_context_mod ($2); } @@ -664,6 +857,13 @@ context_def_spec_body: td->add_context_mod (scm_car (m)); } } + | context_def_spec_body context_mod_embedded { + Context_def *td = unsmob_context_def ($$); + SCM new_mods = unsmob_context_mod ($2)->get_mods (); + for (SCM m = new_mods; scm_is_pair (m); m = scm_cdr (m)) { + td->add_context_mod (scm_car (m)); + } + } ; @@ -671,8 +871,8 @@ context_def_spec_body: book_block: BOOK '{' book_body '}' { $$ = $3; - pop_paper (PARSER); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), SCM_BOOL_F); + pop_paper (parser); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), SCM_BOOL_F); } ; @@ -682,55 +882,55 @@ book_block: book_body: { $$ = new Book; - init_papers (PARSER); + init_papers (parser); $$->origin ()->set_spot (@$); - $$->paper_ = dynamic_cast (unsmob_output_def (PARSER->lexer_->lookup_identifier ("$defaultpaper"))->clone ()); + $$->paper_ = dynamic_cast (unsmob_output_def (parser->lexer_->lookup_identifier ("$defaultpaper"))->clone ()); $$->paper_->unprotect (); - push_paper (PARSER, $$->paper_); - $$->header_ = PARSER->lexer_->lookup_identifier ("$defaultheader"); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $$->self_scm ()); - PARSER->lexer_->set_identifier (ly_symbol2scm ("book-output-suffix"), SCM_BOOL_F); - PARSER->lexer_->set_identifier (ly_symbol2scm ("book-filename"), SCM_BOOL_F); + push_paper (parser, $$->paper_); + $$->header_ = get_header (parser); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $$->self_scm ()); } | BOOK_IDENTIFIER { $$ = unsmob_book ($1); $$->protect (); $$->origin ()->set_spot (@$); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $1); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $1); } | book_body paper_block { $$->paper_ = $2; $2->unprotect (); - set_paper (PARSER, $2); + set_paper (parser, $2); } | book_body bookpart_block { Book *bookpart = $2; - SCM proc = PARSER->lexer_->lookup_identifier ("book-bookpart-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-bookpart-handler"); scm_call_2 (proc, $$->self_scm (), bookpart->self_scm ()); bookpart->unprotect (); } | book_body score_block { Score *score = $2; - SCM proc = PARSER->lexer_->lookup_identifier ("book-score-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-score-handler"); scm_call_2 (proc, $$->self_scm (), score->self_scm ()); score->unprotect (); } | book_body composite_music { Music *music = unsmob_music ($2); - SCM proc = PARSER->lexer_->lookup_identifier ("book-music-handler"); - scm_call_3 (proc, PARSER->self_scm (), $$->self_scm (), music->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("book-music-handler"); + scm_call_3 (proc, parser->self_scm (), $$->self_scm (), music->self_scm ()); } | book_body full_markup { - SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-text-handler"); scm_call_2 (proc, $$->self_scm (), scm_list_1 ($2)); } | book_body full_markup_list { - SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("book-text-handler"); scm_call_2 (proc, $$->self_scm (), $2); } - | book_body lilypond_header { - $$->header_ = $2; - } + | book_body + { + parser->lexer_->add_scope ($1->header_); + } lilypond_header + | book_body embedded_scm { } | book_body error { $$->paper_ = 0; $$->scores_ = SCM_EOL; @@ -741,7 +941,7 @@ book_body: bookpart_block: BOOKPART '{' bookpart_body '}' { $$ = $3; - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), SCM_BOOL_F); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), SCM_BOOL_F); } ; @@ -749,13 +949,13 @@ bookpart_body: { $$ = new Book; $$->origin ()->set_spot (@$); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $$->self_scm ()); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $$->self_scm ()); } | BOOK_IDENTIFIER { $$ = unsmob_book ($1); $$->protect (); $$->origin ()->set_spot (@$); - PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $1); + parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $1); } | bookpart_body paper_block { $$->paper_ = $2; @@ -763,26 +963,30 @@ bookpart_body: } | bookpart_body score_block { Score *score = $2; - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-score-handler"); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-score-handler"); scm_call_2 (proc, $$->self_scm (), score->self_scm ()); score->unprotect (); } | bookpart_body composite_music { Music *music = unsmob_music ($2); - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-music-handler"); - scm_call_3 (proc, PARSER->self_scm (), $$->self_scm (), music->self_scm ()); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-music-handler"); + scm_call_3 (proc, parser->self_scm (), $$->self_scm (), music->self_scm ()); } | bookpart_body full_markup { - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-text-handler"); scm_call_2 (proc, $$->self_scm (), scm_list_1 ($2)); } | bookpart_body full_markup_list { - SCM proc = PARSER->lexer_->lookup_identifier ("bookpart-text-handler"); + SCM proc = parser->lexer_->lookup_identifier ("bookpart-text-handler"); scm_call_2 (proc, $$->self_scm (), $2); } - | bookpart_body lilypond_header { - $$->header_ = $2; - } + | bookpart_body + { + if (!ly_is_module ($1->header_)) + $1->header_ = ly_make_module (false); + parser->lexer_->add_scope ($1->header_); + } lilypond_header + | bookpart_body embedded_scm { } | bookpart_body error { $$->paper_ = 0; $$->scores_ = SCM_EOL; @@ -799,7 +1003,7 @@ score_body: music { SCM m = $1; SCM scorify = ly_lily_module_constant ("scorify-music"); - SCM score = scm_call_2 (scorify, m, PARSER->self_scm ()); + SCM score = scm_call_2 (scorify, m, parser->self_scm ()); // pass ownernship to C++ again. $$ = unsmob_score (score); @@ -811,13 +1015,16 @@ score_body: $$->protect (); $$->origin ()->set_spot (@$); } - | score_body lilypond_header { - $$->set_header ($2); - } + | score_body + { + if (!ly_is_module ($1->get_header ())) + $1->set_header (ly_make_module (false)); + parser->lexer_->add_scope ($1->get_header ()); + } lilypond_header | score_body output_def { if ($2->lookup_variable (ly_symbol2scm ("is-paper")) == SCM_BOOL_T) { - PARSER->parser_error (@2, _("\\paper cannot be used in \\score, use \\layout instead")); + parser->parser_error (@2, _("\\paper cannot be used in \\score, use \\layout instead")); } else @@ -841,9 +1048,9 @@ paper_block: $$ = $1; if ($$->lookup_variable (ly_symbol2scm ("is-paper")) != SCM_BOOL_T) { - PARSER->parser_error (@1, _ ("need \\paper for paper block")); + parser->parser_error (@1, _ ("need \\paper for paper block")); $1->unprotect (); - $$ = get_paper (PARSER); + $$ = get_paper (parser); } } ; @@ -853,37 +1060,56 @@ output_def: output_def_body '}' { $$ = $1; - PARSER->lexer_->remove_scope (); - PARSER->lexer_->pop_state (); + parser->lexer_->remove_scope (); + parser->lexer_->pop_state (); } ; output_def_head: PAPER { - $$ = get_paper (PARSER); + $$ = get_paper (parser); $$->input_origin_ = @$; - PARSER->lexer_->add_scope ($$->scope_); + parser->lexer_->add_scope ($$->scope_); } | MIDI { - Output_def *p = get_midi (PARSER); + Output_def *p = get_midi (parser); $$ = p; - PARSER->lexer_->add_scope (p->scope_); + parser->lexer_->add_scope (p->scope_); } | LAYOUT { - Output_def *p = get_layout (PARSER); + Output_def *p = get_layout (parser); - PARSER->lexer_->add_scope (p->scope_); + parser->lexer_->add_scope (p->scope_); $$ = p; } ; output_def_head_with_mode_switch: output_def_head { - PARSER->lexer_->push_initial_state (); + parser->lexer_->push_initial_state (); $$ = $1; } ; +// We need this weird nonterminal because both music as well as a +// context definition can start with \context and the difference is +// only apparent after looking at the next token. If it is '{', there +// is still time to escape from notes mode. + +music_or_context_def: + music_arg + { + parser->lexer_->pop_state (); + } + | CONTEXT + { + parser->lexer_->pop_state (); + } '{' context_def_spec_body '}' + { + $$ = $4; + } + ; + output_def_body: output_def_head_with_mode_switch '{' { $$ = $1; @@ -896,14 +1122,27 @@ output_def_body: o->input_origin_.set_spot (@$); $$ = o; $$->protect (); - PARSER->lexer_->remove_scope (); - PARSER->lexer_->add_scope (o->scope_); + parser->lexer_->remove_scope (); + parser->lexer_->add_scope (o->scope_); } | output_def_body assignment { } - | output_def_body context_def_spec_block { - assign_context_def ($$, $2); + | output_def_body + { + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); + } music_or_context_def + { + if (unsmob_context_def ($3)) + assign_context_def ($$, $3); + else { + + SCM proc = parser->lexer_->lookup_identifier + ("output-def-music-handler"); + scm_call_3 (proc, parser->self_scm (), + $1->self_scm (), $3); + } } | output_def_body error { @@ -914,7 +1153,7 @@ tempo_event: TEMPO steno_duration '=' tempo_range { $$ = MAKE_SYNTAX ("tempo", @$, SCM_EOL, $2, $4); } - | TEMPO scalar steno_duration '=' tempo_range { + | TEMPO scalar_closed steno_duration '=' tempo_range { $$ = MAKE_SYNTAX ("tempo", @$, $2, $3, $5); } | TEMPO scalar { @@ -923,96 +1162,110 @@ tempo_event: ; /* -The representation of a list is the - - (LIST . LAST-CONS) - - to have efficient append. */ +The representation of a list is reversed to have efficient append. */ music_list: /* empty */ { - $$ = scm_cons (SCM_EOL, SCM_EOL); - } - | music_list music { - SCM s = $$; - SCM c = scm_cons ($2, SCM_EOL); - - if (scm_is_pair (scm_cdr (s))) - scm_set_cdr_x (scm_cdr (s), c); /* append */ - else - scm_set_car_x (s, c); /* set first cons */ - scm_set_cdr_x (s, c); /* remember last cell */ + $$ = SCM_EOL; } - | music_list embedded_scm { - + | music_list music_embedded { + if (unsmob_music ($2)) + $$ = scm_cons ($2, $1); } | music_list error { Music *m = MY_MAKE_MUSIC("Music", @$); // ugh. code dup m->set_property ("error-found", SCM_BOOL_T); - SCM s = $$; - SCM c = scm_cons (m->self_scm (), SCM_EOL); + $$ = scm_cons (m->self_scm (), $1); m->unprotect (); /* UGH */ + } + ; - if (scm_is_pair (scm_cdr (s))) - scm_set_cdr_x (scm_cdr (s), c); /* append */ - else - scm_set_car_x (s, c); /* set first cons */ - scm_set_cdr_x (s, c); /* remember last cell */ +braced_music_list: + '{' music_list '}' + { + $$ = scm_reverse_x ($2, SCM_EOL); } ; -music: - simple_music - | composite_music +music: music_arg + | lyric_element_music ; -alternative_music: - /* empty */ { - $$ = SCM_EOL; +music_embedded: + music + | embedded_scm + { + if (unsmob_music ($1) + || scm_is_eq ($1, SCM_UNSPECIFIED)) + $$ = $1; + else + { + @$.warning (_ ("Ignoring non-music expression")); + $$ = SCM_UNSPECIFIED; + } } - | ALTERNATIVE '{' music_list '}' { - $$ = scm_car ($3); + ; + +music_arg: + simple_music + { + if (unsmob_pitch ($1)) { + Music *n = MY_MAKE_MUSIC ("NoteEvent", @1); + n->set_property ("pitch", $1); + n->set_property ("duration", + parser->default_duration_.smobbed_copy ()); + $$ = n->unprotect (); + } } + | composite_music %prec COMPOSITE ; +music_assign: + simple_music + | composite_music %prec COMPOSITE + | lyric_element_music + ; repeated_music: - REPEAT simple_string unsigned_number music alternative_music + REPEAT simple_string unsigned_number music { - $$ = MAKE_SYNTAX ("repeat", @$, $2, $3, $4, $5); + $$ = MAKE_SYNTAX ("repeat", @$, $2, $3, $4, SCM_EOL); + } + | REPEAT simple_string unsigned_number music ALTERNATIVE braced_music_list + { + $$ = MAKE_SYNTAX ("repeat", @$, $2, $3, $4, $6); } ; sequential_music: - SEQUENTIAL '{' music_list '}' { - $$ = MAKE_SYNTAX ("sequential-music", @$, scm_car ($3)); + SEQUENTIAL braced_music_list { + $$ = MAKE_SYNTAX ("sequential-music", @$, $2); } - | '{' music_list '}' { - $$ = MAKE_SYNTAX ("sequential-music", @$, scm_car ($2)); + | braced_music_list { + $$ = MAKE_SYNTAX ("sequential-music", @$, $1); } ; simultaneous_music: - SIMULTANEOUS '{' music_list '}'{ - $$ = MAKE_SYNTAX ("simultaneous-music", @$, scm_car ($3)); + SIMULTANEOUS braced_music_list { + $$ = MAKE_SYNTAX ("simultaneous-music", @$, $2); } | DOUBLE_ANGLE_OPEN music_list DOUBLE_ANGLE_CLOSE { - $$ = MAKE_SYNTAX ("simultaneous-music", @$, scm_car ($2)); + $$ = MAKE_SYNTAX ("simultaneous-music", @$, scm_reverse_x ($2, SCM_EOL)); } ; simple_music: event_chord - | MUSIC_IDENTIFIER | music_property_def | context_change ; context_modification: - WITH { PARSER->lexer_->push_initial_state (); } '{' context_mod_list '}' + WITH { parser->lexer_->push_initial_state (); } '{' context_mod_list '}' { - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); $$ = $4; } | WITH CONTEXT_MOD_IDENTIFIER @@ -1023,6 +1276,15 @@ context_modification: { $$ = $1; } + | WITH embedded_scm_closed + { + if (unsmob_context_mod ($2)) + $$ = $2; + else { + parser->parser_error (@2, _ ("not a context mod")); + $$ = Context_mod ().smobbed_copy (); + } + } ; optional_context_mod: @@ -1047,71 +1309,518 @@ context_mod_list: if (md) unsmob_context_mod ($1)->add_context_mods (md->get_mods ()); } + | context_mod_list context_mod_embedded { + unsmob_context_mod ($1)->add_context_mods + (unsmob_context_mod ($2)->get_mods ()); + } ; composite_music: - prefix_composite_music { $$ = $1; } - | grouped_music_list { $$ = $1; } + complex_music + | music_bare + ; + +/* Music that can be parsed without lookahead */ +closed_music: + music_bare + | complex_music_prefix closed_music + { + $$ = FINISH_MAKE_SYNTAX ($1, @$, $2); + } + ; + +music_bare: + mode_changed_music + | MUSIC_IDENTIFIER + | grouped_music_list + ; + +grouped_music_list: + simultaneous_music { $$ = $1; } + | sequential_music { $$ = $1; } + ; + +/* An argument list. If a function \foo expects scm scm pitch, then the lexer expands \foo into the token sequence: + MUSIC_FUNCTION EXPECT_PITCH EXPECT_SCM EXPECT_SCM EXPECT_NO_MORE_ARGS +and this rule returns the reversed list of arguments. */ + +function_arglist_skip: + function_arglist_common + | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_skip + { + $$ = scm_cons ($1, $3); + } %prec FUNCTION_ARGLIST + | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_skip + { + $$ = scm_cons ($1, $3); + } %prec FUNCTION_ARGLIST + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip + { + $$ = scm_cons ($1, $3); + } %prec FUNCTION_ARGLIST + ; + + +function_arglist_nonbackup_common: + EXPECT_OPTIONAL EXPECT_PITCH function_arglist pitch_also_in_chords { + $$ = scm_cons ($4, $3); + } + | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_closed duration_length { + $$ = scm_cons ($4, $3); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed FRACTION + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed post_event_nofinger + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed '-' UNSIGNED + { + SCM n = scm_difference ($5, SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ($2, n))) + $$ = scm_cons (n, $3); + else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", @5); + t->set_property ("digit", $5); + $$ = t->unprotect (); + if (scm_is_true (scm_call_1 ($2, $$))) + $$ = scm_cons ($$, $3); + else + $$ = check_scheme_arg (parser, @4, n, $3, $2); + } + + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed '-' REAL + { + $$ = check_scheme_arg (parser, @4, + scm_difference ($5, SCM_UNDEFINED), + $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed '-' NUMBER_IDENTIFIER + { + $$ = check_scheme_arg (parser, @4, + scm_difference ($5, SCM_UNDEFINED), + $3, $2); + } + ; + +function_arglist_closed_nonbackup: + function_arglist_nonbackup_common + | EXPECT_OPTIONAL EXPECT_SCM function_arglist embedded_scm_arg_closed + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed bare_number_closed + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + ; + +function_arglist_nonbackup: + function_arglist_nonbackup_common + | EXPECT_OPTIONAL EXPECT_SCM function_arglist embedded_scm_arg + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed bare_number + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + ; + +function_arglist_keep: + function_arglist_common + | function_arglist_backup + ; + +function_arglist_closed_keep: + function_arglist_closed_common + | function_arglist_backup + ; + +function_arglist_backup: + EXPECT_OPTIONAL EXPECT_SCM function_arglist_keep embedded_scm_arg_closed + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = scm_cons ($4, $3); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (SCM_IDENTIFIER, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep post_event_nofinger + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = scm_cons ($4, $3); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (EVENT_IDENTIFIER, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_keep lyric_element + { + // There is no point interpreting a lyrics string as + // an event, since we don't allow music possibly + // followed by durations or postevent into closed + // music, and we only accept closed music in optional + // arguments at the moment. If this changes, more + // complex schemes might become interesting here as + // well: see how we do this at the mandatory argument + // point. + if (scm_is_true (scm_call_1 ($2, $4))) + $$ = scm_cons ($4, $3); + else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (LYRICS_STRING, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep UNSIGNED + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = $3; + MYREPARSE (@4, $2, UNSIGNED, $4); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (UNSIGNED, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep REAL + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = $3; + MYREPARSE (@4, $2, REAL, $4); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (REAL, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep NUMBER_IDENTIFIER + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = scm_cons ($4, $3); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (NUMBER_IDENTIFIER, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep FRACTION + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = scm_cons ($4, $3); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (FRACTION, $4, @4); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep '-' UNSIGNED + { + SCM n = scm_difference ($5, SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ($2, n))) { + $$ = $3; + MYREPARSE (@5, $2, REAL, n); + } else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", @5); + t->set_property ("digit", $5); + $$ = t->unprotect (); + if (scm_is_true (scm_call_1 ($2, $$))) + $$ = scm_cons ($$, $3); + else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (UNSIGNED, $5, @5); + parser->lexer_->push_extra_token ('-'); + } + } + + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep '-' REAL + { + SCM n = scm_difference ($5, SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ($2, n))) { + MYREPARSE (@5, $2, REAL, n); + $$ = $3; + } else { + MYBACKUP (REAL, n, @5); + } + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep '-' NUMBER_IDENTIFIER + { + SCM n = scm_difference ($5, SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ($2, n))) { + $$ = scm_cons (n, $3); + } else { + MYBACKUP (NUMBER_IDENTIFIER, n, @5); + } + } + | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_keep pitch_also_in_chords + { + $$ = scm_cons ($4, $3); + } + | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_closed_keep duration_length + { + $$ = scm_cons ($4, $3); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup BACKUP + { + $$ = scm_cons ($1, $3); + MYBACKUP(0, SCM_UNDEFINED, @3); + } + | function_arglist_backup REPARSE embedded_scm_arg_closed + { + $$ = check_scheme_arg (parser, @3, + $3, $1, $2); + } + | function_arglist_backup REPARSE bare_number + { + $$ = check_scheme_arg (parser, @3, + $3, $1, $2); + } + ; + +function_arglist: + function_arglist_common + | function_arglist_nonbackup + ; + +function_arglist_common: + function_arglist_bare + | EXPECT_SCM function_arglist_optional embedded_scm_arg + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional bare_number + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional FRACTION + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional post_event_nofinger + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | function_arglist_common_minus + | function_arglist_common_lyric + ; + +function_arglist_common_lyric: + EXPECT_SCM function_arglist_optional lyric_element + { + // We check how the predicate thinks about a lyrics + // event or about a markup. If it accepts neither, we + // backup the original token. Otherwise we commit to + // taking the token. Depending on what the predicate + // is willing to accept, we interpret as a string, as + // a lyric event, or ambiguously (meaning that if + // something looking like a duration or post event + // follows, we take the event, otherwise the string). + SCM lyric_event = MAKE_SYNTAX ("lyric-event", @3, $3, + parser->default_duration_.smobbed_copy ()); + if (scm_is_true (scm_call_1 ($1, $3))) + if (scm_is_true (scm_call_1 ($1, lyric_event))) + { + $$ = $2; + MYREPARSE (@3, $1, LYRICS_STRING, $3); + } else { + $$ = scm_cons ($3, $2); + } + else if (scm_is_true (scm_call_1 ($1, lyric_event))) + { + $$ = $2; + MYREPARSE (@3, $1, LYRIC_ELEMENT, $3); + } else { + // This is going to flag a syntax error, we + // know the predicate to be false. + check_scheme_arg (parser, @3, + $3, $2, $1); + } + } + | function_arglist_common_lyric REPARSE lyric_element_arg + { + // This should never be false + $$ = check_scheme_arg (parser, @3, + $3, $1, $2); + } ; -grouped_music_list: - simultaneous_music { $$ = $1; } - | sequential_music { $$ = $1; } +function_arglist_common_minus: + EXPECT_SCM function_arglist_closed_optional '-' UNSIGNED + { + SCM n = scm_difference ($4, SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ($1, n))) { + $$ = $2; + MYREPARSE (@4, $1, REAL, n); + } else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", @4); + t->set_property ("digit", $4); + $$ = t->unprotect (); + if (scm_is_true (scm_call_1 ($1, $$))) + $$ = scm_cons ($$, $2); + else + $$ = check_scheme_arg (parser, @3, n, $2, $1); + } + + } + | EXPECT_SCM function_arglist_closed_optional '-' REAL + { + $$ = $2; + SCM n = scm_difference ($4, SCM_UNDEFINED); + MYREPARSE (@4, $1, REAL, n); + } + | EXPECT_SCM function_arglist_closed_optional '-' NUMBER_IDENTIFIER + { + SCM n = scm_difference ($4, SCM_UNDEFINED); + $$ = check_scheme_arg (parser, @4, n, $2, $1); + } + | function_arglist_common_minus REPARSE bare_number + { + $$ = check_scheme_arg (parser, @3, $3, $1, $2); + } ; -function_scm_argument: - embedded_scm - | simple_string +function_arglist_closed: + function_arglist_closed_common + | function_arglist_closed_nonbackup ; -/* An argument list. If a function \foo expects scm scm music, then the lexer expands \foo into the token sequence: - 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_common: + function_arglist_bare + | EXPECT_SCM function_arglist_optional embedded_scm_arg_closed + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional bare_number + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional '-' UNSIGNED + { + SCM n = scm_difference ($4, SCM_UNDEFINED); + if (scm_is_true (scm_call_1 ($1, n))) { + $$ = scm_cons (n, $2); + } else { + Music *t = MY_MAKE_MUSIC ("FingeringEvent", @4); + t->set_property ("digit", $4); + $$ = t->unprotect (); + if (scm_is_true (scm_call_1 ($1, $$))) + $$ = scm_cons ($$, $2); + else + $$ = check_scheme_arg (parser, @3, n, $2, $1); + } + + } + | EXPECT_SCM function_arglist_closed_optional '-' REAL + { + $$ = check_scheme_arg (parser, @3, + scm_difference ($4, SCM_UNDEFINED), + $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional '-' NUMBER_IDENTIFIER + { + $$ = check_scheme_arg (parser, @3, + scm_difference ($4, SCM_UNDEFINED), + $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional post_event_nofinger + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_closed_optional FRACTION + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } + | EXPECT_SCM function_arglist_optional lyric_element + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); } ; -function_arglist_nonmusic_last: - EXPECT_MARKUP function_arglist full_markup { - $$ = scm_cons ($3, $2); +function_arglist_optional: + function_arglist_keep %prec FUNCTION_ARGLIST + | function_arglist_backup BACKUP + | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_optional + { + $$ = scm_cons ($1, $3); } - | EXPECT_MARKUP function_arglist simple_string { - $$ = scm_cons ($3, $2); + | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_optional + { + $$ = scm_cons ($1, $3); } - | EXPECT_SCM function_arglist function_scm_argument { - $$ = scm_cons ($3, $2); + ; + +function_arglist_closed_optional: + function_arglist_closed_keep %prec FUNCTION_ARGLIST + | function_arglist_backup BACKUP + | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_closed_optional + { + $$ = scm_cons ($1, $3); + } + | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_closed_optional + { + $$ = scm_cons ($1, $3); } ; -function_arglist_nonmusic: EXPECT_NO_MORE_ARGS { +embedded_scm_closed: + embedded_scm_bare + | scm_function_call_closed + ; + +embedded_scm_arg_closed: + embedded_scm_bare_arg + | scm_function_call_closed + | closed_music + ; + +scm_function_call_closed: + SCM_FUNCTION function_arglist_closed { + $$ = MAKE_SYNTAX ("music-function", @$, + $1, $2); + } %prec FUNCTION_ARGLIST + ; + +function_arglist_bare: + EXPECT_NO_MORE_ARGS { $$ = SCM_EOL; } - | EXPECT_MARKUP function_arglist_nonmusic full_markup { + | EXPECT_PITCH function_arglist_optional pitch_also_in_chords { $$ = scm_cons ($3, $2); } - | EXPECT_MARKUP function_arglist_nonmusic simple_string { + | EXPECT_DURATION function_arglist_closed_optional duration_length { $$ = scm_cons ($3, $2); } - | EXPECT_SCM function_arglist_nonmusic function_scm_argument { - $$ = scm_cons ($3, $2); + | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_skip DEFAULT { + $$ = scm_cons ($1, $3); } - ; - -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_OPTIONAL EXPECT_DURATION function_arglist_skip DEFAULT { + $$ = scm_cons ($1, $3); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip DEFAULT { + $$ = scm_cons ($1, $3); } - | function_arglist_music_last - | function_arglist_nonmusic_last ; -generic_prefix_music_scm: +music_function_call: MUSIC_FUNCTION function_arglist { - $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($2, SCM_EOL)); + $$ = MAKE_SYNTAX ("music-function", @$, + $1, $2); } ; @@ -1123,37 +1832,35 @@ optional_id: } ; - -prefix_composite_music: - generic_prefix_music_scm { - $$ = run_music_function (PARSER, $1); +complex_music: + music_function_call + | repeated_music { $$ = $1; } + | re_rhythmed_music { $$ = $1; } + | complex_music_prefix music + { + $$ = FINISH_MAKE_SYNTAX ($1, @$, $2); } - | CONTEXT simple_string optional_id optional_context_mod music { + ; + +complex_music_prefix: + CONTEXT simple_string optional_id optional_context_mod { Context_mod *ctxmod = unsmob_context_mod ($4); SCM mods = SCM_EOL; if (ctxmod) mods = ctxmod->get_mods (); - $$ = MAKE_SYNTAX ("context-specification", @$, $2, $3, $5, mods, SCM_BOOL_F); + $$ = START_MAKE_SYNTAX ("context-specification", $2, $3, mods, SCM_BOOL_F); } - | NEWCONTEXT simple_string optional_id optional_context_mod music { + | NEWCONTEXT simple_string optional_id optional_context_mod { Context_mod *ctxmod = unsmob_context_mod ($4); SCM mods = SCM_EOL; if (ctxmod) mods = ctxmod->get_mods (); - $$ = MAKE_SYNTAX ("context-specification", @$, $2, $3, $5, mods, SCM_BOOL_T); + $$ = START_MAKE_SYNTAX ("context-specification", $2, $3, mods, SCM_BOOL_T); } + ; - | TIMES fraction music { - $$ = MAKE_SYNTAX ("time-scaled-music", @$, $2, $3); - } - | repeated_music { $$ = $1; } - | TRANSPOSE pitch_also_in_chords pitch_also_in_chords music { - Pitch from = *unsmob_pitch ($2); - Pitch to = *unsmob_pitch ($3); - SCM pitch = pitch_interval (from, to).smobbed_copy (); - $$ = MAKE_SYNTAX ("transpose-music", @$, pitch, $4); - } - | mode_changing_head grouped_music_list { +mode_changed_music: + mode_changing_head grouped_music_list { if ($1 == ly_symbol2scm ("chords")) { $$ = MAKE_SYNTAX ("unrelativable-music", @$, $2); @@ -1162,135 +1869,106 @@ prefix_composite_music: { $$ = $2; } - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); } | mode_changing_head_with_context optional_context_mod grouped_music_list { Context_mod *ctxmod = unsmob_context_mod ($2); SCM mods = SCM_EOL; if (ctxmod) mods = ctxmod->get_mods (); - $$ = MAKE_SYNTAX ("context-specification", @$, $1, SCM_EOL, $3, mods, SCM_BOOL_T); + $$ = MAKE_SYNTAX ("context-specification", @$, $1, SCM_EOL, mods, SCM_BOOL_T, $3); if ($1 == ly_symbol2scm ("ChordNames")) { $$ = MAKE_SYNTAX ("unrelativable-music", @$, $$); } - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); } - | relative_music { $$ = $1; } - | re_rhythmed_music { $$ = $1; } ; mode_changing_head: NOTEMODE { - SCM nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); $$ = ly_symbol2scm ("notes"); } | DRUMMODE { - SCM nn = PARSER->lexer_->lookup_identifier ("drumPitchNames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("drumPitchNames"); + parser->lexer_->push_note_state (nn); $$ = ly_symbol2scm ("drums"); } | FIGUREMODE { - PARSER->lexer_->push_figuredbass_state (); + parser->lexer_->push_figuredbass_state (); $$ = ly_symbol2scm ("figures"); } | CHORDMODE { - SCM nn = PARSER->lexer_->lookup_identifier ("chordmodifiers"); - PARSER->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); - nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_chord_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("chordmodifiers"); + parser->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); + nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_chord_state (nn); $$ = ly_symbol2scm ("chords"); } | LYRICMODE - { PARSER->lexer_->push_lyric_state (); + { parser->lexer_->push_lyric_state (); $$ = ly_symbol2scm ("lyrics"); } ; mode_changing_head_with_context: DRUMS { - SCM nn = PARSER->lexer_->lookup_identifier ("drumPitchNames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("drumPitchNames"); + parser->lexer_->push_note_state (nn); $$ = ly_symbol2scm ("DrumStaff"); } | FIGURES { - PARSER->lexer_->push_figuredbass_state (); + parser->lexer_->push_figuredbass_state (); $$ = ly_symbol2scm ("FiguredBass"); } | CHORDS { - SCM nn = PARSER->lexer_->lookup_identifier ("chordmodifiers"); - PARSER->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); - nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_chord_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("chordmodifiers"); + parser->lexer_->chordmodifier_tab_ = alist_to_hashq (nn); + nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_chord_state (nn); $$ = ly_symbol2scm ("ChordNames"); } | LYRICS - { PARSER->lexer_->push_lyric_state (); + { parser->lexer_->push_lyric_state (); $$ = ly_symbol2scm ("Lyrics"); } ; - -relative_music: - RELATIVE absolute_pitch music { - Pitch start = *unsmob_pitch ($2); - $$ = make_music_relative (start, $3, @$); - } - | RELATIVE composite_music { - Pitch middle_c (0, 0, 0); - $$ = make_music_relative (middle_c, $2, @$); - } - ; - new_lyrics: - ADDLYRICS { PARSER->lexer_->push_lyric_state (); } + ADDLYRICS { parser->lexer_->push_lyric_state (); } /*cont */ - grouped_music_list { + composite_music { /* Can also use music at the expensive of two S/Rs similar to \repeat \alternative */ - PARSER->lexer_->pop_state (); + 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 { - PARSER->lexer_->pop_state (); + parser->lexer_->push_lyric_state (); + } composite_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 { + composite_music new_lyrics { $$ = MAKE_SYNTAX ("add-lyrics", @$, $1, scm_reverse_x ($2, SCM_EOL)); - } + } %prec COMPOSITE | LYRICSTO simple_string { - PARSER->lexer_->push_lyric_state (); + parser->lexer_->push_lyric_state (); } music { - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); $$ = MAKE_SYNTAX ("lyric-combine", @$, $2, $4); } ; @@ -1303,10 +1981,10 @@ context_change: property_path_revved: - embedded_scm { + embedded_scm_closed { $$ = scm_cons ($1, SCM_EOL); } - | property_path_revved embedded_scm { + | property_path_revved embedded_scm_closed { $$ = scm_cons ($2, $1); } ; @@ -1356,16 +2034,19 @@ context_mod: | context_def_mod STRING { $$ = scm_list_2 ($1, $2); } - | context_def_mod embedded_scm { - if (ly_symbol2scm ("consists") != $1) - { - $$ = SCM_EOL; - PARSER->parser_error (@1, _ ("only \\consists takes non-string argument.")); - } - else - { - $$ = scm_list_2 ($1, $2); - } + | context_def_mod embedded_scm + { + if (!scm_is_string ($2) + && ly_symbol2scm ("consists") != $1 + && ly_symbol2scm ("remove") != $1) + { + $$ = SCM_EOL; + parser->parser_error (@1, _ ("only \\consists and \\remove take non-string argument.")); + } + else + { + $$ = scm_list_2 ($1, $2); + } } ; @@ -1414,10 +2095,7 @@ simple_music_property_def: music_property_def: simple_music_property_def { - $$ = LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("property-operation"), scm_cons (PARSER->self_scm (), scm_cons2 (make_input (@$), SCM_BOOL_F, $1))); - } - | ONCE simple_music_property_def { - $$ = LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("property-operation"), scm_cons (PARSER->self_scm (), scm_cons2 (make_input (@$), SCM_BOOL_T, $2))); + $$ = LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("property-operation"), scm_cons2 (parser->self_scm (), make_input (@$), $1)); } ; @@ -1444,31 +2122,37 @@ simple_string: STRING { } ; -scalar: string { - $$ = $1; - } - | LYRICS_STRING { - $$ = $1; - } - | bare_number { - $$ = $1; - } - | embedded_scm { - $$ = $1; - } - | full_markup { - $$ = $1; - } - | DIGIT { - $$ = scm_from_int ($1); - } +scalar: + embedded_scm_arg + | bare_number + | FRACTION + | lyric_element + ; + +scalar_closed: + embedded_scm_arg_closed + | bare_number + | FRACTION + | lyric_element ; + event_chord: - /* TODO: Create a special case that avoids the creation of - EventChords around simple_elements that have no post_events? - */ - simple_chord_elements post_events { + simple_element post_events { + // Let the rhythmic music iterator sort this mess out. + if (scm_is_pair ($2)) { + if (unsmob_pitch ($1)) { + Music *n = MY_MAKE_MUSIC ("NoteEvent", @1); + n->set_property ("pitch", $1); + n->set_property ("duration", + parser->default_duration_.smobbed_copy ()); + $$ = n->unprotect (); + } + unsmob_music ($$)->set_property ("articulations", + scm_reverse_x ($2, SCM_EOL)); + } + } + | simple_chord_elements post_events { SCM elts = ly_append2 ($1, scm_reverse_x ($2, SCM_EOL)); Input i; @@ -1481,8 +2165,6 @@ event_chord: Input i; i.set_location (@1, @3); $$ = MAKE_SYNTAX ("repetition-chord", i, - PARSER->lexer_->chord_repetition_.last_chord_, - PARSER->lexer_->chord_repetition_.repetition_function_, $2, scm_reverse_x ($3, SCM_EOL)); } | MULTI_MEASURE_REST optional_notemode_duration post_events { @@ -1492,13 +2174,7 @@ event_chord: scm_reverse_x ($3, SCM_EOL)); } | command_element - /* note chord elements are memorized into - PARSER->lexer_->chord_repetition_ so that the chord repetition - mechanism copy them when a chord repetition symbol is found - */ - | note_chord_element { - PARSER->lexer_->chord_repetition_.last_chord_ = $$; - } + | note_chord_element ; @@ -1530,7 +2206,8 @@ chord_body: chord_body_elements: /* empty */ { $$ = SCM_EOL; } | chord_body_elements chord_body_element { - $$ = scm_cons ($2, $1); + if (!SCM_UNBNDP ($2)) + $$ = scm_cons ($2, $1); } ; @@ -1563,7 +2240,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)) { @@ -1572,41 +2248,43 @@ chord_body_element: } $$ = n->unprotect (); } - | music_function_chord_body { - $$ = run_music_function (PARSER, $1); - } - ; + | music_function_chord_body + { + Music *m = unsmob_music ($1); -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."); + while (m && m->is_mus_type ("music-wrapper-music")) { + $$ = m->get_property ("element"); + m = unsmob_music ($$); + } + + if (!(m && m->is_mus_type ("rhythmic-event"))) { + parser->parser_error (@$, _ ("not a rhythmic event")); + $$ = SCM_UNDEFINED; } } ; 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_identifier_musicless_prefix function_arglist_nonmusic { - $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($2, SCM_EOL)); - } + music_function_call + | MUSIC_IDENTIFIER ; +// Event functions may only take closed arglists, otherwise it would +// not be clear whether a following postevent should be associated +// with the last argument of the event function or with the expression +// for which the function call acts itself as event. + music_function_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 function_arglist_closed { + $$ = MAKE_SYNTAX ("music-function", @$, + $1, $2); } - | music_function_identifier_musicless_prefix function_arglist_nonmusic { - $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($2, SCM_EOL)); + ; + +event_function_event: + EVENT_FUNCTION function_arglist_closed { + $$ = MAKE_SYNTAX ("music-function", @$, + $1, $2); } ; @@ -1614,9 +2292,6 @@ command_element: command_event { $$ = $1; } - | SKIP duration_length { - $$ = MAKE_SYNTAX ("skip-music", @$, $2); - } | E_BRACKET_OPEN { Music *m = MY_MAKE_MUSIC ("LigatureEvent", @$); m->set_property ("span-direction", scm_from_int (START)); @@ -1628,10 +2303,10 @@ command_element: $$ = m->unprotect (); } | E_BACKSLASH { - $$ = MAKE_SYNTAX ("voice-separator", @$, SCM_UNDEFINED); + $$ = MAKE_SYNTAX ("voice-separator", @$); } | '|' { - SCM pipe = PARSER->lexer_->lookup_identifier ("pipeSymbol"); + SCM pipe = parser->lexer_->lookup_identifier ("pipeSymbol"); Music *m = unsmob_music (pipe); if (m) @@ -1641,20 +2316,8 @@ command_element: $$ = m->unprotect (); } else - $$ = MAKE_SYNTAX ("bar-check", @$, SCM_UNDEFINED); - - } - | PARTIAL duration_length { - $$ = MAKE_SYNTAX ("partial", @$, $2); - } - - | TIME_T fraction { - SCM proc = ly_lily_module_constant ("make-time-signature-set"); + $$ = MAKE_SYNTAX ("bar-check", @$); - $$ = scm_apply_2 (proc, scm_car ($2), scm_cdr ($2), SCM_EOL); - } - | MARK scalar { - $$ = MAKE_SYNTAX ("make-mark-set", @$, $2); } ; @@ -1662,31 +2325,9 @@ command_event: E_TILDE { $$ = MY_MAKE_MUSIC ("PesOrFlexaEvent", @$)->unprotect (); } - | MARK DEFAULT { - Music *m = MY_MAKE_MUSIC ("MarkEvent", @$); - $$ = m->unprotect (); - } | tempo_event { $$ = $1; } - | KEY DEFAULT { - Music *key = MY_MAKE_MUSIC ("KeyChangeEvent", @$); - $$ = key->unprotect (); - } - | KEY NOTENAME_PITCH SCM_IDENTIFIER { - - Music *key = MY_MAKE_MUSIC ("KeyChangeEvent", @$); - if (scm_ilength ($3) > 0) - { - key->set_property ("pitch-alist", $3); - key->set_property ("tonic", Pitch (0, 0, 0).smobbed_copy ()); - key->transpose (* unsmob_pitch ($2)); - } else { - PARSER->parser_error (@3, _ ("second argument must be pitch list")); - } - - $$ = key->unprotect (); - } ; @@ -1700,25 +2341,25 @@ post_events: } ; -post_event: +post_event_nofinger: direction_less_event { $$ = $1; } | script_dir music_function_event { - $$ = run_music_function (PARSER, $2); + $$ = $2; if ($1) { unsmob_music ($$)->set_property ("direction", scm_from_int ($1)); } } | HYPHEN { - if (!PARSER->lexer_->is_lyric_state ()) - PARSER->parser_error (@1, _ ("have to be in Lyric mode for lyrics")); + if (!parser->lexer_->is_lyric_state ()) + parser->parser_error (@1, _ ("have to be in Lyric mode for lyrics")); $$ = MY_MAKE_MUSIC ("HyphenEvent", @$)->unprotect (); } | EXTENDER { - if (!PARSER->lexer_->is_lyric_state ()) - PARSER->parser_error (@1, _ ("have to be in Lyric mode for lyrics")); + if (!parser->lexer_->is_lyric_state ()) + parser->parser_error (@1, _ ("have to be in Lyric mode for lyrics")); $$ = MY_MAKE_MUSIC ("ExtenderEvent", @$)->unprotect (); } | script_dir direction_reqd_event { @@ -1738,6 +2379,23 @@ post_event: $$ = $2; } | string_number_event + | '^' fingering + { + $$ = $2; + unsmob_music ($$)->set_property ("direction", scm_from_int (UP)); + } + | '_' fingering + { + $$ = $2; + unsmob_music ($$)->set_property ("direction", scm_from_int (DOWN)); + } + ; + +post_event: + post_event_nofinger + | '-' fingering { + $$ = $2; + } ; string_number_event: @@ -1783,7 +2441,7 @@ direction_less_char: direction_less_event: direction_less_char { - SCM predefd = PARSER->lexer_->lookup_identifier_symbol ($1); + SCM predefd = parser->lexer_->lookup_identifier_symbol ($1); Music *m = 0; if (unsmob_music (predefd)) { @@ -1804,6 +2462,7 @@ direction_less_event: a->set_property ("tremolo-type", scm_from_int ($1)); $$ = a->unprotect (); } + | event_function_event ; direction_reqd_event: @@ -1811,11 +2470,11 @@ direction_reqd_event: $$ = $1; } | script_abbreviation { - SCM s = PARSER->lexer_->lookup_identifier ("dash" + ly_scm2string ($1)); + SCM s = parser->lexer_->lookup_identifier ("dash" + ly_scm2string ($1)); Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$); if (scm_is_string (s)) a->set_property ("articulation-type", s); - else PARSER->parser_error (@1, _ ("expecting string as script definition")); + else parser->parser_error (@1, _ ("expecting string as script definition")); $$ = a->unprotect (); } ; @@ -1886,6 +2545,7 @@ pitch: steno_pitch { $$ = $1; } + | PITCH_IDENTIFIER ; pitch_also_in_chords: @@ -1899,15 +2559,18 @@ gen_text_def: t->set_property ("text", $1); $$ = t->unprotect (); } - | string { + | simple_string { Music *t = MY_MAKE_MUSIC ("TextScriptEvent", @$); t->set_property ("text", make_simple_markup ($1)); $$ = t->unprotect (); } - | DIGIT { + ; + +fingering: + UNSIGNED { Music *t = MY_MAKE_MUSIC ("FingeringEvent", @$); - t->set_property ("digit", scm_from_int ($1)); + t->set_property ("digit", $1); $$ = t->unprotect (); } ; @@ -1942,27 +2605,28 @@ script_dir: | '-' { $$ = CENTER; } ; - -absolute_pitch: - steno_pitch { - $$ = $1; - } - ; - duration_length: multiplied_duration { $$ = $1; } ; -optional_notemode_duration: +maybe_notemode_duration: { - Duration dd = PARSER->default_duration_; - $$ = dd.smobbed_copy (); + $$ = SCM_UNDEFINED; } | multiplied_duration { $$ = $1; - PARSER->default_duration_ = *unsmob_duration ($$); + parser->default_duration_ = *unsmob_duration ($$); + } +; + + +optional_notemode_duration: + maybe_notemode_duration + { + if (SCM_UNBNDP ($$)) + $$ = parser->default_duration_.smobbed_copy (); } ; @@ -1970,7 +2634,7 @@ steno_duration: bare_unsigned dots { int len = 0; if (!is_duration ($1)) - PARSER->parser_error (@1, _f ("not a duration: %d", $1)); + parser->parser_error (@1, _f ("not a duration: %d", $1)); else len = intlog2 ($1); @@ -1999,13 +2663,6 @@ multiplied_duration: } ; -fraction: - FRACTION { $$ = $1; } - | UNSIGNED '/' UNSIGNED { - $$ = scm_cons (scm_from_int ($1), scm_from_int ($3)); - } - ; - dots: /* empty */ { $$ = 0; @@ -2021,18 +2678,13 @@ tremolo_type: } | ':' bare_unsigned { if (!is_duration ($2)) - PARSER->parser_error (@2, _f ("not a duration: %d", $2)); + parser->parser_error (@2, _f ("not a duration: %d", $2)); $$ = $2; } ; bass_number: - DIGIT { - $$ = scm_from_int ($1); - } - | UNSIGNED { - $$ = scm_from_int ($1); - } + UNSIGNED { $$ = $1; } | STRING { $$ = $1; } | full_markup { $$ = $1; } ; @@ -2143,31 +2795,37 @@ optional_rest: ; simple_element: - pitch exclamations questions octave_check optional_notemode_duration optional_rest { - if (!PARSER->lexer_->is_note_state ()) - PARSER->parser_error (@1, _ ("have to be in Note mode for notes")); - - Music *n = 0; - if ($6) - n = MY_MAKE_MUSIC ("RestEvent", @$); - else - n = MY_MAKE_MUSIC ("NoteEvent", @$); - - n->set_property ("pitch", $1); - n->set_property ("duration", $5); - - if (scm_is_number ($4)) + pitch exclamations questions octave_check maybe_notemode_duration optional_rest { + if (!parser->lexer_->is_note_state ()) + parser->parser_error (@1, _ ("have to be in Note mode for notes")); + if ($2 || $3 || scm_is_number ($4) || !SCM_UNBNDP ($5) || $6) { - int q = scm_to_int ($4); - n->set_property ("absolute-octave", scm_from_int (q-1)); + Music *n = 0; + if ($6) + n = MY_MAKE_MUSIC ("RestEvent", @$); + else + n = MY_MAKE_MUSIC ("NoteEvent", @$); + + n->set_property ("pitch", $1); + if (SCM_UNBNDP ($5)) + n->set_property ("duration", + parser->default_duration_.smobbed_copy ()); + else + n->set_property ("duration", $5); + + if (scm_is_number ($4)) + { + int q = scm_to_int ($4); + n->set_property ("absolute-octave", scm_from_int (q-1)); + } + + if ($3 % 2) + n->set_property ("cautionary", SCM_BOOL_T); + if ($2 % 2 || $3 % 2) + n->set_property ("force-accidental", SCM_BOOL_T); + + $$ = n->unprotect (); } - - if ($3 % 2) - n->set_property ("cautionary", SCM_BOOL_T); - if ($2 % 2 || $3 % 2) - n->set_property ("force-accidental", SCM_BOOL_T); - - $$ = n->unprotect (); } | DRUM_PITCH optional_notemode_duration { Music *n = MY_MAKE_MUSIC ("NoteEvent", @$); @@ -2189,24 +2847,12 @@ simple_element: ev->set_property ("duration", $2); $$ = ev->unprotect (); } - | lyric_element optional_notemode_duration { - if (!PARSER->lexer_->is_lyric_state ()) - PARSER->parser_error (@1, _ ("have to be in Lyric mode for lyrics")); - - Music *levent = MY_MAKE_MUSIC ("LyricEvent", @$); - levent->set_property ("text", $1); - levent->set_property ("duration",$2); - $$= levent->unprotect (); - } ; simple_chord_elements: - simple_element { - $$ = scm_list_1 ($1); - } - | new_chord { - if (!PARSER->lexer_->is_chord_state ()) - PARSER->parser_error (@1, _ ("have to be in Chord mode for chords")); + new_chord { + if (!parser->lexer_->is_chord_state ()) + parser->parser_error (@1, _ ("have to be in Chord mode for chords")); $$ = $1; } | figure_spec optional_notemode_duration { @@ -2227,13 +2873,45 @@ lyric_element: } ; +lyric_element_arg: + lyric_element + | lyric_element multiplied_duration post_events { + $$ = MAKE_SYNTAX ("lyric-event", @$, $1, $2); + if (scm_is_pair ($3)) + unsmob_music ($$)->set_property + ("articulations", scm_reverse_x ($3, SCM_EOL)); + } + | lyric_element post_event post_events { + $$ = MAKE_SYNTAX ("lyric-event", @$, $1, + parser->default_duration_.smobbed_copy ()); + unsmob_music ($$)->set_property + ("articulations", scm_cons ($2, scm_reverse_x ($3, SCM_EOL))); + } + | LYRIC_ELEMENT optional_notemode_duration post_events { + $$ = MAKE_SYNTAX ("lyric-event", @$, $1, $2); + if (scm_is_pair ($3)) + unsmob_music ($$)->set_property + ("articulations", scm_reverse_x ($3, SCM_EOL)); + } + ; + + +lyric_element_music: + lyric_element optional_notemode_duration post_events { + $$ = MAKE_SYNTAX ("lyric-event", @$, $1, $2); + if (scm_is_pair ($3)) + unsmob_music ($$)->set_property + ("articulations", scm_reverse_x ($3, SCM_EOL)); + } + ; + new_chord: steno_tonic_pitch optional_notemode_duration { - $$ = make_chord_elements ($1, $2, SCM_EOL); + $$ = make_chord_elements (@$, $1, $2, SCM_EOL); } | steno_tonic_pitch optional_notemode_duration chord_separator chord_items { SCM its = scm_reverse_x ($4, SCM_EOL); - $$ = make_chord_elements ($1, $2, scm_cons ($3, its)); + $$ = make_chord_elements (@$, $1, $2, scm_cons ($3, its)); } ; @@ -2338,38 +3016,30 @@ number_factor: bare_number: - UNSIGNED { - $$ = scm_from_int ($1); - } - | REAL { - $$ = $1; - } - | NUMBER_IDENTIFIER { - $$ = $1; + bare_number_closed + | UNSIGNED NUMBER_IDENTIFIER { + $$ = scm_product ($1, $2); } | REAL NUMBER_IDENTIFIER { - $$ = scm_from_double (scm_to_double ($1) *scm_to_double ($2)); - } - | UNSIGNED NUMBER_IDENTIFIER { - $$ = scm_from_double ($1 *scm_to_double ($2)); + $$ = scm_product ($1, $2); } ; +bare_number_closed: + UNSIGNED + | REAL + | NUMBER_IDENTIFIER + ; bare_unsigned: UNSIGNED { - $$ = $1; - } - | DIGIT { - $$ = $1; + $$ = scm_to_int ($1); } ; unsigned_number: - bare_unsigned { $$ = scm_from_int ($1); } - | NUMBER_IDENTIFIER { - $$ = $1; - } + UNSIGNED + | NUMBER_IDENTIFIER ; exclamations: @@ -2391,22 +3061,22 @@ lyric_markup: $$ = $1; } | LYRIC_MARKUP - { PARSER->lexer_->push_markup_state (); } + { parser->lexer_->push_markup_state (); } markup_top { $$ = $3; - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); } ; full_markup_list: - MARKUPLINES_IDENTIFIER { + MARKUPLIST_IDENTIFIER { $$ = $1; } - | MARKUPLINES - { PARSER->lexer_->push_markup_state (); } + | MARKUPLIST + { parser->lexer_->push_markup_state (); } markup_list { $$ = $3; - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); } ; @@ -2415,10 +3085,10 @@ full_markup: $$ = $1; } | MARKUP - { PARSER->lexer_->push_markup_state (); } + { parser->lexer_->push_markup_state (); } markup_top { $$ = $3; - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); } ; @@ -2434,8 +3104,23 @@ markup_top: } ; +markup_scm: + embedded_scm_bare + { + if (Text_interface::is_markup ($1)) + MYBACKUP (MARKUP_IDENTIFIER, $1, @1); + else if (Text_interface::is_markup_list ($1)) + MYBACKUP (MARKUPLIST_IDENTIFIER, $1, @1); + else { + parser->parser_error (@1, _ ("not a markup")); + MYBACKUP (MARKUP_IDENTIFIER, scm_string (SCM_EOL), @1); + } + } BACKUP + ; + + markup_list: - MARKUPLINES_IDENTIFIER { + MARKUPLIST_IDENTIFIER { $$ = $1; } | markup_composed_list { @@ -2447,6 +3132,10 @@ markup_list: | markup_command_list { $$ = scm_list_1 ($1); } + | markup_scm MARKUPLIST_IDENTIFIER + { + $$ = $2; + } ; markup_composed_list: @@ -2482,8 +3171,8 @@ markup_command_basic_arguments: EXPECT_MARKUP_LIST markup_command_list_arguments markup_list { $$ = scm_cons ($3, $2); } - | EXPECT_SCM markup_command_list_arguments embedded_scm { - $$ = scm_cons ($3, $2); + | EXPECT_SCM markup_command_list_arguments embedded_scm_closed { + $$ = check_scheme_arg (parser, @3, $3, $2, $1); } | EXPECT_NO_MORE_ARGS { $$ = SCM_EOL; @@ -2526,17 +3215,21 @@ simple_markup: $$ = $1; } | SCORE { - SCM nn = PARSER->lexer_->lookup_identifier ("pitchnames"); - PARSER->lexer_->push_note_state (alist_to_hashq (nn)); + SCM nn = parser->lexer_->lookup_identifier ("pitchnames"); + parser->lexer_->push_note_state (nn); } '{' score_body '}' { Score * sc = $4; $$ = scm_list_2 (ly_lily_module_constant ("score-markup"), sc->self_scm ()); sc->unprotect (); - PARSER->lexer_->pop_state (); + parser->lexer_->pop_state (); } | MARKUP_FUNCTION markup_command_basic_arguments { $$ = scm_cons ($1, scm_reverse_x ($2, SCM_EOL)); } + | markup_scm MARKUP_IDENTIFIER + { + $$ = $2; + } ; markup: @@ -2560,7 +3253,7 @@ Lily_parser::set_yydebug (bool x) void Lily_parser::do_yyparse () { - yyparse ((void*)this); + yyparse (this); } @@ -2611,11 +3304,12 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid) unsmob_music (*destination)-> set_property ("origin", make_input (last_input_)); - bool is_event = scm_memq (ly_symbol2scm ("event"), mus->get_property ("types")) - != SCM_BOOL_F; - + bool is_event = mus->is_mus_type ("post-event"); mus->unprotect (); return is_event ? EVENT_IDENTIFIER : MUSIC_IDENTIFIER; + } else if (unsmob_pitch (sid)) { + *destination = unsmob_pitch (sid)->smobbed_copy (); + return PITCH_IDENTIFIER; } else if (unsmob_duration (sid)) { *destination = unsmob_duration (sid)->smobbed_copy (); return DURATION_IDENTIFIER; @@ -2633,7 +3327,7 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid) return MARKUP_IDENTIFIER; } else if (Text_interface::is_markup_list (sid)) { *destination = sid; - return MARKUPLINES_IDENTIFIER; + return MARKUPLIST_IDENTIFIER; } return -1; @@ -2655,25 +3349,27 @@ get_next_unique_lyrics_context_id () return scm_from_locale_string (s); } - -SCM -run_music_function (Lily_parser *parser, SCM expr) +SCM check_scheme_arg (Lily_parser *parser, Input loc, + SCM arg, SCM args, SCM pred) { - SCM func = scm_car (expr); - Input *loc = unsmob_input (scm_cadr (expr)); - SCM args = scm_cddr (expr); - SCM sig = scm_object_property (func, ly_symbol2scm ("music-function-signature")); - - SCM type_check_proc = ly_lily_module_constant ("type-check-list"); + args = scm_cons (arg, args); + if (scm_is_true (scm_call_1 (pred, arg))) + return args; + scm_set_cdr_x (scm_last_pair (args), SCM_EOL); + MAKE_SYNTAX ("argument-error", loc, scm_length (args), pred, arg); + scm_set_cdr_x (scm_last_pair (args), SCM_BOOL_F); + return args; +} - if (!to_boolean (scm_call_3 (type_check_proc, scm_cadr (expr), sig, args))) +SCM loc_on_music (Input loc, SCM arg) +{ + if (Music *m = unsmob_music (arg)) { - parser->error_level_ = 1; - return LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("void-music"), scm_list_2 (parser->self_scm (), make_input (*loc))); + m = m->clone (); + m->set_spot (loc); + return m->unprotect (); } - - SCM syntax_args = scm_list_4 (parser->self_scm (), make_input (*loc), func, args); - return LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant ("music-function"), syntax_args); + return arg; } bool @@ -2703,19 +3399,6 @@ make_music_with_input (SCM name, Input where) return m; } -SCM -get_first_context_id (SCM type, Music *m) -{ - SCM id = m->get_property ("context-id"); - if (SCM_BOOL_T == scm_equal_p (m->get_property ("context-type"), type) - && scm_is_string (m->get_property ("context-id")) - && scm_c_string_length (id) > 0) - { - return id; - } - return SCM_EOL; -} - SCM make_simple_markup (SCM a) { @@ -2750,41 +3433,23 @@ make_chord_step (int step, Rational alter) SCM -make_chord_elements (SCM pitch, SCM dur, SCM modification_list) +make_chord_elements (Input loc, SCM pitch, SCM dur, SCM modification_list) { SCM chord_ctor = ly_lily_module_constant ("construct-chord-elements"); - return scm_call_3 (chord_ctor, pitch, dur, modification_list); -} - - -/* Todo: actually also use apply iso. call too ... */ -bool -ly_input_procedure_p (SCM x) -{ - return ly_is_procedure (x) - || (scm_is_pair (x) && ly_is_procedure (scm_car (x))); -} - -SCM -make_music_relative (Pitch start, SCM music, Input loc) -{ - Music *relative = MY_MAKE_MUSIC ("RelativeOctaveMusic", loc); - relative->set_property ("element", music); - - Music *m = unsmob_music (music); - Pitch last = m->to_relative_octave (start); - if (lily_1_8_relative) - m->set_property ("last-pitch", last.smobbed_copy ()); - return relative->unprotect (); + SCM res = scm_call_3 (chord_ctor, pitch, dur, modification_list); + for (SCM s = res; scm_is_pair (s); s = scm_cdr (s)) + { + unsmob_music (scm_car (s))->set_spot (loc); + } + return res; } int -yylex (YYSTYPE *s, YYLTYPE *loc, void *v) +yylex (YYSTYPE *s, YYLTYPE *loc, Lily_parser *parser) { - Lily_parser *pars = (Lily_parser*) v; - Lily_lexer *lex = pars->lexer_; + Lily_lexer *lex = parser->lexer_; - lex->lexval_ = (void*) s; + lex->lexval_ = s; lex->lexloc_ = loc; lex->prepare_for_next_token (); return lex->yylex (); diff --git a/lily/part-combine-engraver.cc b/lily/part-combine-engraver.cc index f12cfbad95..6d11c155f8 100644 --- a/lily/part-combine-engraver.cc +++ b/lily/part-combine-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen Han-Wen Nienhuys @@ -79,7 +79,7 @@ Part_combine_engraver::Part_combine_engraver () void Part_combine_engraver::create_item (Stream_event *ev) { - SCM what = ev->get_property ("class"); + SCM what = scm_car (ev->get_property ("class")); SCM text = SCM_EOL; if (what == ly_symbol2scm ("solo-one-event")) text = get_property ("soloText"); @@ -117,8 +117,8 @@ Part_combine_engraver::acknowledge_note_head (Grob_info i) Grob *t = text_; Side_position_interface::add_support (t, i.grob ()); if (Side_position_interface::get_axis (t) == X_AXIS - && !t->get_parent (Y_AXIS)) - t->set_parent (i.grob (), Y_AXIS); + && !t->get_parent (Y_AXIS)) + t->set_parent (i.grob (), Y_AXIS); } } @@ -140,20 +140,20 @@ Part_combine_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Part_combine_engraver, note_head); ADD_ACKNOWLEDGER (Part_combine_engraver, stem); ADD_TRANSLATOR (Part_combine_engraver, - /* doc */ - "Part combine engraver for orchestral scores: Print markings" - " @q{a2}, @q{Solo}, @q{Solo II}, and @q{unisono}.", - - /* create */ - "CombineTextScript ", - - /* read */ - "printPartCombineTexts " - "partCombineTextsOnNote " - "soloText " - "soloIIText " - "aDueText ", - - /* write */ - "" - ); + /* doc */ + "Part combine engraver for orchestral scores: Print markings" + " @q{a2}, @q{Solo}, @q{Solo II}, and @q{unisono}.", + + /* create */ + "CombineTextScript ", + + /* read */ + "printPartCombineTexts " + "partCombineTextsOnNote " + "soloText " + "soloIIText " + "aDueText ", + + /* write */ + "" + ); diff --git a/lily/part-combine-iterator.cc b/lily/part-combine-iterator.cc index adbc2beb32..c0c9acc893 100644 --- a/lily/part-combine-iterator.cc +++ b/lily/part-combine-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,14 +26,14 @@ #include "warn.hh" enum Outlet_type - { - CONTEXT_ONE, CONTEXT_TWO, - CONTEXT_SHARED, CONTEXT_SOLO, - CONTEXT_NULL, NUM_OUTLETS - }; +{ + CONTEXT_ONE, CONTEXT_TWO, + CONTEXT_SHARED, CONTEXT_SOLO, + CONTEXT_NULL, NUM_OUTLETS +}; -static const char *outlet_names_[NUM_OUTLETS] = - {"one", "two", "shared", "solo", "null"}; +static const char *outlet_names_[NUM_OUTLETS] + = {"one", "two", "shared", "solo", "null"}; class Part_combine_iterator : public Music_iterator { @@ -65,6 +65,11 @@ private: Moment start_moment_; SCM split_list_; + SCM direction_; + SCM directionOne_; + SCM directionTwo_; + SCM horizontalShiftOne_; + SCM horizontalShiftTwo_; Stream_event *unisono_event_; Stream_event *solo_one_event_; @@ -72,14 +77,14 @@ private: Stream_event *mmrest_event_; enum Status - { - APART, - TOGETHER, - SOLO1, - SOLO2, - UNISONO, - UNISILENCE, - }; + { + APART, + TOGETHER, + SOLO1, + SOLO2, + UNISONO, + UNISILENCE, + }; Status state_; Status playing_state_; @@ -89,12 +94,12 @@ private: Status last_playing_; /* - TODO: this is getting of hand... + TODO: this is getting off hand... */ Context_handle handles_[NUM_OUTLETS]; void substitute_both (Outlet_type to1, - Outlet_type to2); + Outlet_type to2); /* parameter is really Outlet_type */ void kill_mmrest (int in); @@ -116,9 +121,9 @@ Part_combine_iterator::do_quit () // Add listeners to all contexts except Devnull. for (int i = 0; i < NUM_OUTLETS; i++) { - Context *c = handles_[i].get_outlet (); + Context *c = handles_[i].get_context (); if (c->is_alias (ly_symbol2scm ("Voice"))) - c->event_source ()->remove_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event")); + c->event_source ()->remove_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event")); handles_[i].set_context (0); } } @@ -128,13 +133,19 @@ Part_combine_iterator::Part_combine_iterator () mmrest_event_ = 0; unisono_event_ = 0; solo_two_event_ = 0; - solo_one_event_= 0; + solo_one_event_ = 0; first_iter_ = 0; second_iter_ = 0; split_list_ = SCM_EOL; + direction_ = SCM_BOOL_F; + directionOne_ = scm_from_int (1); + directionTwo_ = scm_from_int (-1); + horizontalShiftOne_ = scm_from_int (0); + horizontalShiftTwo_ = scm_from_int (1); state_ = APART; playing_state_ = APART; + last_playing_ = APART; busy_ = false; notice_busy_ = false; @@ -147,22 +158,19 @@ Part_combine_iterator::derived_mark () const scm_gc_mark (first_iter_->self_scm ()); if (second_iter_) scm_gc_mark (second_iter_->self_scm ()); - - Stream_event *ptrs[] = { - unisono_event_, - mmrest_event_, - solo_two_event_, - solo_one_event_, - 0 - }; - for (int i = 0; ptrs[i]; i++) - if (ptrs[i]) - scm_gc_mark (ptrs[i]->self_scm ()); + if (unisono_event_) + scm_gc_mark (unisono_event_->self_scm ()); + if (mmrest_event_) + scm_gc_mark (mmrest_event_->self_scm ()); + if (solo_one_event_) + scm_gc_mark (solo_one_event_->self_scm ()); + if (solo_two_event_) + scm_gc_mark (solo_two_event_->self_scm ()); } void Part_combine_iterator::derived_substitute (Context *f, - Context *t) + Context *t) { if (first_iter_) first_iter_->substitute_outlet (f, t); @@ -189,7 +197,7 @@ Part_combine_iterator::ok () const void Part_combine_iterator::substitute_both (Outlet_type to1, - Outlet_type to2) + Outlet_type to2) { Outlet_type tos[] = {to1, to2}; @@ -198,14 +206,14 @@ Part_combine_iterator::substitute_both (Outlet_type to1, for (int i = 0; i < 2; i++) { for (int j = 0; j < NUM_OUTLETS; j++) - if (j != tos[i]) - mis[i]->substitute_outlet (handles_[j].get_outlet (), handles_[tos[i]].get_outlet ()); + if (j != tos[i]) + mis[i]->substitute_outlet (handles_[j].get_context (), handles_[tos[i]].get_context ()); } for (int j = 0; j < NUM_OUTLETS; j++) { if (j != to1 && j != to2) - kill_mmrest (j); + kill_mmrest (j); } } @@ -215,12 +223,14 @@ Part_combine_iterator::kill_mmrest (int in) if (!mmrest_event_) { - mmrest_event_ = new Stream_event (ly_symbol2scm ("multi-measure-rest-event")); + mmrest_event_ = new Stream_event + (handles_[in].get_context ()->make_event_class + (ly_symbol2scm ("multi-measure-rest-event"))); mmrest_event_->set_property ("duration", SCM_EOL); mmrest_event_->unprotect (); } - handles_[in].get_outlet ()->event_source ()->broadcast (mmrest_event_); + handles_[in].get_context ()->event_source ()->broadcast (mmrest_event_); } void @@ -233,32 +243,31 @@ Part_combine_iterator::unisono (bool silent) else { /* - If we're coming from SOLO2 state, we might have kill mmrests - in the 1st voice, so in that case, we use the second voice - as a basis for events. + If we're coming from SOLO2 state, we might have kill mmrests + in the 1st voice, so in that case, we use the second voice + as a basis for events. */ Outlet_type c1 = (last_playing_ == SOLO2) ? CONTEXT_NULL : CONTEXT_SHARED; Outlet_type c2 = (last_playing_ == SOLO2) ? CONTEXT_SHARED : CONTEXT_NULL; substitute_both (c1, c2); - kill_mmrest ((last_playing_ == SOLO2) - ? CONTEXT_ONE : CONTEXT_TWO); + kill_mmrest ((last_playing_ == SOLO2) ? CONTEXT_ONE : CONTEXT_TWO); kill_mmrest (CONTEXT_SHARED); if (playing_state_ != UNISONO - && newstate == UNISONO) - { - if (!unisono_event_) - { - unisono_event_ = new Stream_event (ly_symbol2scm ("unisono-event")); - unisono_event_->unprotect (); - } - - - Context *out = (last_playing_ == SOLO2 ? second_iter_ : first_iter_) - ->get_outlet (); - out->event_source ()->broadcast (unisono_event_); - playing_state_ = UNISONO; - } + && newstate == UNISONO) + { + Context *out = (last_playing_ == SOLO2 ? second_iter_ : first_iter_) + ->get_outlet (); + if (!unisono_event_) + { + unisono_event_ = new Stream_event + (out->make_event_class (ly_symbol2scm ("unisono-event"))); + unisono_event_->unprotect (); + } + + out->event_source ()->broadcast (unisono_event_); + playing_state_ = UNISONO; + } state_ = newstate; } } @@ -277,15 +286,17 @@ Part_combine_iterator::solo1 () kill_mmrest (CONTEXT_SHARED); if (playing_state_ != SOLO1) - { - if (!solo_one_event_) - { - solo_one_event_ = new Stream_event (ly_symbol2scm ("solo-one-event")); - solo_one_event_->unprotect (); - } - - first_iter_->get_outlet ()->event_source ()->broadcast (solo_one_event_); - } + { + if (!solo_one_event_) + { + solo_one_event_ = new Stream_event + (first_iter_->get_outlet ()->make_event_class + (ly_symbol2scm ("solo-one-event"))); + solo_one_event_->unprotect (); + } + + first_iter_->get_outlet ()->event_source ()->broadcast (solo_one_event_); + } playing_state_ = SOLO1; } } @@ -302,16 +313,18 @@ Part_combine_iterator::solo2 () substitute_both (CONTEXT_NULL, CONTEXT_SOLO); if (playing_state_ != SOLO2) - { - if (!solo_two_event_) - { - solo_two_event_ = new Stream_event (ly_symbol2scm ("solo-two-event")); - solo_two_event_->unprotect (); - } - - second_iter_->get_outlet ()->event_source ()->broadcast (solo_two_event_); - playing_state_ = SOLO2; - } + { + if (!solo_two_event_) + { + solo_two_event_ = new Stream_event + (second_iter_->get_outlet ()->make_event_class + (ly_symbol2scm ("solo-two-event"))); + solo_two_event_->unprotect (); + } + + second_iter_->get_outlet ()->event_source ()->broadcast (solo_two_event_); + playing_state_ = SOLO2; + } } } @@ -349,6 +362,17 @@ Part_combine_iterator::construct_children () { start_moment_ = get_outlet ()->now_mom (); split_list_ = get_music ()->get_property ("split-list"); + direction_ = get_music ()->get_property ("direction"); + if (is_direction (direction_)) + { + directionOne_ = direction_; + directionTwo_ = direction_; + if (scm_is_true (scm_negative_p (direction_))) + { + horizontalShiftOne_ = scm_from_int (1); + horizontalShiftTwo_ = scm_from_int (0); + } + } Context *c = get_outlet (); @@ -359,23 +383,25 @@ Part_combine_iterator::construct_children () c = c->find_create_context (type, outlet_names_[i], SCM_EOL); handles_[i].set_context (c); if (c->is_alias (ly_symbol2scm ("Voice"))) - c->event_source ()->add_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event")); + c->event_source ()->add_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event")); } SCM lst = get_music ()->get_property ("elements"); - Context *one = handles_[CONTEXT_ONE].get_outlet (); + Context *one = handles_[CONTEXT_ONE].get_context (); set_context (one); first_iter_ = unsmob_iterator (get_iterator (unsmob_music (scm_car (lst)))); - Context *two = handles_[CONTEXT_TWO].get_outlet (); + Context *two = handles_[CONTEXT_TWO].get_context (); set_context (two); second_iter_ = unsmob_iterator (get_iterator (unsmob_music (scm_cadr (lst)))); - + Context *shared = handles_[CONTEXT_SHARED].get_context (); + set_context (shared); /* Mimic all settings of voiceOne/voiceTwo for the two separate voices...*/ /* FIXME: Is there any way to use the definition of \voiceOne/\voiceTwo directly??? */ char const *syms[] - = { + = + { "Stem", "DynamicLineSpanner", "Tie", @@ -391,21 +417,25 @@ Part_combine_iterator::construct_children () { SCM sym = ly_symbol2scm (*p); execute_pushpop_property (one, sym, - ly_symbol2scm ("direction"), scm_from_int (1)); + ly_symbol2scm ("direction"), directionOne_); execute_pushpop_property (two, sym, - ly_symbol2scm ("direction"), scm_from_int (-1)); + ly_symbol2scm ("direction"), directionTwo_); + + if (scm_is_number (direction_)) + execute_pushpop_property (shared, sym, + ly_symbol2scm ("direction"), direction_); } - /* Handle horizontal shifts for crossing notes */ + /* Handle horizontal shifts for crossing notes */ execute_pushpop_property (one, ly_symbol2scm ("NoteColumn"), - ly_symbol2scm ("horizontal-shift"), scm_from_int (0)); + ly_symbol2scm ("horizontal-shift"), horizontalShiftOne_); execute_pushpop_property (two, ly_symbol2scm ("NoteColumn"), - ly_symbol2scm ("horizontal-shift"), scm_from_int (1)); - /* Also handle MultiMeasureRest positions for voice 1/2 */ + ly_symbol2scm ("horizontal-shift"), horizontalShiftTwo_); + /* Also handle MultiMeasureRest positions for voice 1/2 */ execute_pushpop_property (one, ly_symbol2scm ("MultiMeasureRest"), - ly_symbol2scm ("staff-position"), scm_from_int (4)); + ly_symbol2scm ("staff-position"), scm_from_int (4)); execute_pushpop_property (two, ly_symbol2scm ("MultiMeasureRest"), - ly_symbol2scm ("staff-position"), scm_from_int (-4)); + ly_symbol2scm ("staff-position"), scm_from_int (-4)); } @@ -453,30 +483,30 @@ Part_combine_iterator::process (Moment m) { splitm = unsmob_moment (scm_caar (split_list_)); if (splitm && *splitm + start_moment_ > now) - break; + break; SCM tag = scm_cdar (split_list_); if (tag == ly_symbol2scm ("chords")) - chords_together (); + chords_together (); else if (tag == ly_symbol2scm ("apart") - || tag == ly_symbol2scm ("apart-silence") - || tag == ly_symbol2scm ("apart-spanner")) - apart (tag == ly_symbol2scm ("apart-silence")); + || tag == ly_symbol2scm ("apart-silence") + || tag == ly_symbol2scm ("apart-spanner")) + apart (tag == ly_symbol2scm ("apart-silence")); else if (tag == ly_symbol2scm ("unisono")) - unisono (false); + unisono (false); else if (tag == ly_symbol2scm ("unisilence")) - unisono (true); + unisono (true); else if (tag == ly_symbol2scm ("solo1")) - solo1 (); + solo1 (); else if (tag == ly_symbol2scm ("solo2")) - solo2 (); + solo2 (); else if (scm_is_symbol (tag)) - { - string s = "Unknown split directive: " - + (scm_is_symbol (tag) ? ly_symbol2string (tag) : string ("not a symbol")); - programming_error (s); - } + { + string s = "Unknown split directive: " + + (scm_is_symbol (tag) ? ly_symbol2string (tag) : string ("not a symbol")); + programming_error (s); + } } if (first_iter_->ok ()) @@ -488,7 +518,7 @@ Part_combine_iterator::process (Moment m) if (second_iter_->ok ()) { if (try_process (second_iter_, m)) - last_playing_ = SOLO2; + last_playing_ = SOLO2; } } diff --git a/lily/partial-iterator.cc b/lily/partial-iterator.cc index d38a951465..2b1ff3eb5b 100644 --- a/lily/partial-iterator.cc +++ b/lily/partial-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Neil Puttock + Copyright (C) 2010--2012 Neil Puttock LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,21 +28,21 @@ class Partial_iterator : public Simple_music_iterator { public: DECLARE_SCHEME_CALLBACK (constructor, ()); - protected: +protected: virtual void process (Moment); }; void Partial_iterator::process (Moment m) { - if (Duration *dur + if (Duration * dur = unsmob_duration (get_music ()->get_property ("partial-duration"))) { Context *ctx = get_outlet (); Moment now = ctx->now_mom (); if (now.main_part_ > Rational (0)) - get_music ()->origin ()-> - warning (_ ("trying to use \\partial after the start of a piece")); + get_music ()->origin ()-> + warning (_ ("trying to use \\partial after the start of a piece")); Moment length = Moment (dur->get_length ()); now = Moment (0, now.grace_part_); ctx->set_property ("measurePosition", (now - length).smobbed_copy ()); diff --git a/lily/pdf-scheme.cc b/lily/pdf-scheme.cc index e813e08ec3..1801ae286d 100644 --- a/lily/pdf-scheme.cc +++ b/lily/pdf-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2011 Reinhold Kainhofer + Copyright (C) 2011--2012 Reinhold Kainhofer LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,17 +24,16 @@ using namespace std; #include "warn.hh" #include "lily-guile.hh" - LY_DEFINE (ly_encode_string_for_pdf, "ly:encode-string-for-pdf", - 1, 0, 0, (SCM str), - "Encode the given string to either Latin1 (which is a subset of" - " the PDFDocEncoding) or if that's not possible to full UTF-16BE" - " with Byte-Order-Mark (BOM).") + 1, 0, 0, (SCM str), + "Encode the given string to either Latin1 (which is a subset of" + " the PDFDocEncoding) or if that's not possible to full UTF-16BE" + " with Byte-Order-Mark (BOM).") { LY_ASSERT_TYPE (scm_is_string, str, 1); char *p = ly_scm2str0 (str); char *g = NULL; - char const *charset="UTF-8"; // Input is ALWAYS UTF-8! + char const *charset = "UTF-8"; // Input is ALWAYS UTF-8! gsize bytes_written = 0; /* First, try to convert to ISO-8859-1 (no encodings required). This will @@ -42,28 +41,28 @@ LY_DEFINE (ly_encode_string_for_pdf, "ly:encode-string-for-pdf", * for errors. */ g = g_convert (p, -1, "ISO-8859-1", charset, 0, &bytes_written, 0); /* If that fails, we have to resolve to full UTF-16BE */ - if (!g) + if (!g) { GError *e = NULL; - char *g_without_BOM = g_convert (p, -1, "UTF-16BE", charset, 0, &bytes_written, &e); - if (e != NULL) + char *g_without_BOM = g_convert (p, -1, "UTF-16BE", charset, 0, &bytes_written, &e); + if (e != NULL) { - warning (_f("Conversion of string `%s' to UTF-16be failed: %s", p, e->message)); + warning (_f ("Conversion of string `%s' to UTF-16be failed: %s", p, e->message)); g_error_free (e); } - /* UTF-16BE allows/recommends a byte-order-mark (BOM) of two bytes - * \xFE\xFF at the begin of the string. The pdfmark specification + /* UTF-16BE allows/recommends a byte-order-mark (BOM) of two bytes + * \xFE\xFF at the begin of the string. The pdfmark specification * requires it and depends on it to distinguish PdfDocEncoding from - * UTF-16BE. As g_convert does not automatically prepend this BOM - * for UTF-16BE (only for UTF-16, which uses lower endian by default, + * UTF-16BE. As g_convert does not automatically prepend this BOM + * for UTF-16BE (only for UTF-16, which uses lower endian by default, * though), we have to prepend it manually. */ if (g_without_BOM) // conversion to UTF-16be might have failed (shouldn't!) - { - g = new char[bytes_written+3]; + { + g = (char *)malloc ( sizeof (char) * (bytes_written + 3)); char const *BOM = "\xFE\xFF"; strcpy (g, BOM); - memcpy (&g[2], g_without_BOM, bytes_written+1); // Copy string + \0 - free (g_without_BOM); + memcpy (&g[2], g_without_BOM, bytes_written + 1); // Copy string + \0 + g_free (g_without_BOM); bytes_written += 2; } } @@ -71,12 +70,12 @@ LY_DEFINE (ly_encode_string_for_pdf, "ly:encode-string-for-pdf", /* Convert back to SCM object and return it */ /* FIXME guile-2.0: With guile 2.0 the internal representation of a string - * has changed (char vector rather than binary bytes in + * has changed (char vector rather than binary bytes in * UTF-8). However, with guile 2.0, ly:encode-string-for-pdf - * is no longer needed and can be replaced by the new + * is no longer needed and can be replaced by the new * (string->utf16 str 'big) */ - if (g) + if (g) return scm_take_str (g, bytes_written); // scm_take_str eventually frees g! else return str; diff --git a/lily/percent-repeat-engraver.cc b/lily/percent-repeat-engraver.cc index 1b437b2822..a6ef072ea6 100644 --- a/lily/percent-repeat-engraver.cc +++ b/lily/percent-repeat-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys , Erik Sandberg + Copyright (C) 2000--2012 Han-Wen Nienhuys , Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include "engraver.hh" #include "global-context.hh" #include "international.hh" @@ -35,7 +34,7 @@ class Percent_repeat_engraver : public Engraver public: TRANSLATOR_DECLARATIONS (Percent_repeat_engraver); - + protected: Stream_event *percent_event_; @@ -74,14 +73,14 @@ Percent_repeat_engraver::start_translation_timestep () if (now_mom ().main_part_ != command_moment_.main_part_) { first_command_column_ - = unsmob_grob (get_property ("currentCommandColumn")); + = unsmob_grob (get_property ("currentCommandColumn")); command_moment_ = now_mom (); } if (stop_mom_.main_part_ == now_mom ().main_part_) { if (percent_) - typeset_perc (); + typeset_perc (); percent_event_ = 0; } } @@ -101,8 +100,8 @@ Percent_repeat_engraver::listen_percent (Stream_event *ev) else { /* - print a warning: no assignment happens because - percent_event_ != 0 + print a warning: no assignment happens because + percent_event_ != 0 */ ASSIGN_EVENT_ONCE (percent_event_, ev); } @@ -115,7 +114,7 @@ Percent_repeat_engraver::process_music () && now_mom ().main_part_ == start_mom_.main_part_) { if (percent_) - typeset_perc (); + typeset_perc (); percent_ = make_spanner ("PercentRepeat", percent_event_->self_scm ()); @@ -124,19 +123,19 @@ Percent_repeat_engraver::process_music () SCM count = percent_event_->get_property ("repeat-count"); if (count != SCM_EOL && to_boolean (get_property ("countPercentRepeats")) - && check_repeat_count_visibility (context (), count)) - { - percent_counter_ = make_spanner ("PercentRepeatCounter", - percent_event_->self_scm ()); - - SCM text = scm_number_to_string (count, scm_from_int (10)); - percent_counter_->set_property ("text", text); - percent_counter_->set_bound (LEFT, col); - Side_position_interface::add_support (percent_counter_, percent_); - percent_counter_->set_parent (percent_, Y_AXIS); - } + && check_repeat_count_visibility (context (), count)) + { + percent_counter_ = make_spanner ("PercentRepeatCounter", + percent_event_->self_scm ()); + + SCM text = scm_number_to_string (count, scm_from_int (10)); + percent_counter_->set_property ("text", text); + percent_counter_->set_bound (LEFT, col); + Side_position_interface::add_support (percent_counter_, percent_); + percent_counter_->set_parent (percent_, Y_AXIS); + } else - percent_counter_ = 0; + percent_counter_ = 0; } } @@ -170,18 +169,18 @@ Percent_repeat_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Percent_repeat_engraver, - /* doc */ - "Make whole measure repeats.", - - /* create */ - "PercentRepeat " - "PercentRepeatCounter ", - - /* read */ - "countPercentRepeats " - "currentCommandColumn " - "repeatCountVisibility ", - - /* write */ - "" - ); + /* doc */ + "Make whole measure repeats.", + + /* create */ + "PercentRepeat " + "PercentRepeatCounter ", + + /* read */ + "countPercentRepeats " + "currentCommandColumn " + "repeatCountVisibility ", + + /* write */ + "" + ); diff --git a/lily/percent-repeat-item.cc b/lily/percent-repeat-item.cc index 1e97753fee..928089af8b 100644 --- a/lily/percent-repeat-item.cc +++ b/lily/percent-repeat-item.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,8 +37,8 @@ Percent_repeat_item_interface::brew_slash (Grob *me, int count) Stencil slash = Lookup::repeat_slash (wid, slope, thick); Stencil m = slash; - Real slash_neg_kern = - robust_scm2double (me->get_property ("slash-negative-kern"), 1.6); + Real slash_neg_kern + = robust_scm2double (me->get_property ("slash-negative-kern"), 1.6); for (int i = count - 1; i--;) m.add_at_edge (X_AXIS, RIGHT, slash, -slash_neg_kern); @@ -51,8 +51,8 @@ Percent_repeat_item_interface::x_percent (Grob *me, int count) { Stencil m = brew_slash (me, count); - Real dot_neg_kern = - robust_scm2double (me->get_property ("dot-negative-kern"), 0.75); + Real dot_neg_kern + = robust_scm2double (me->get_property ("dot-negative-kern"), 0.75); Stencil d1 = Font_interface::get_default_font (me)->find_by_name ("dots.dot"); Stencil d2 = d1; @@ -93,11 +93,11 @@ Percent_repeat_item_interface::beat_slash (SCM grob) } ADD_INTERFACE (Percent_repeat_item_interface, - "Repeats that look like percent signs.", - - /* properties */ - "dot-negative-kern " - "slash-negative-kern " - "slope " - "thickness " - ); + "Repeats that look like percent signs.", + + /* properties */ + "dot-negative-kern " + "slash-negative-kern " + "slope " + "thickness " + ); diff --git a/lily/percent-repeat-iterator.cc b/lily/percent-repeat-iterator.cc index d829553557..dd149049f4 100644 --- a/lily/percent-repeat-iterator.cc +++ b/lily/percent-repeat-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys Erik Sandberg LilyPond is free software: you can redistribute it and/or modify @@ -59,26 +59,26 @@ Percent_repeat_iterator::get_music_list () const else { slash_count - = scm_call_1 (ly_lily_module_constant ("calc-repeat-slash-count"), - child->self_scm ()); + = scm_call_1 (ly_lily_module_constant ("calc-repeat-slash-count"), + child->self_scm ()); event_type = "RepeatSlashEvent"; } int repeats = scm_to_int (mus->get_property ("repeat-count")); for (int i = repeats; i > 1; i--) - { - Music *percent = make_music_by_name (ly_symbol2scm (event_type.c_str ())); - percent->set_spot (*mus->origin ()); - percent->set_property ("length", length); - if (repeats > 1) - { - percent->set_property ("repeat-count", scm_from_int (i)); - if (event_type == "RepeatSlashEvent") - percent->set_property ("slash-count", slash_count); - } + { + Music *percent = make_music_by_name (ly_symbol2scm (event_type.c_str ())); + percent->set_spot (*mus->origin ()); + percent->set_property ("length", length); + if (repeats > 1) + { + percent->set_property ("repeat-count", scm_from_int (i)); + if (event_type == "RepeatSlashEvent") + percent->set_property ("slash-count", slash_count); + } - child_list = scm_cons (percent->unprotect (), child_list); - } + child_list = scm_cons (percent->unprotect (), child_list); + } child_list = scm_cons (child->self_scm (), child_list); diff --git a/lily/performance-scheme.cc b/lily/performance-scheme.cc index 10a1de6659..affc4f04cf 100644 --- a/lily/performance-scheme.cc +++ b/lily/performance-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,8 +20,8 @@ #include "performance.hh" LY_DEFINE (ly_performance_write, "ly:performance-write", - 2, 0, 0, (SCM performance, SCM filename), - "Write @var{performance} to @var{filename}.") + 2, 0, 0, (SCM performance, SCM filename), + "Write @var{performance} to @var{filename}.") { LY_ASSERT_TYPE (unsmob_performance, performance, 1); LY_ASSERT_TYPE (scm_is_string, filename, 2); diff --git a/lily/performance.cc b/lily/performance.cc index bcd8b42c50..4e19544d41 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,8 +35,8 @@ using namespace std; #include "warn.hh" Performance::Performance (bool ports) - : midi_ (0) - , ports_ (ports) + : midi_ (0), + ports_ (ports) { } @@ -51,17 +51,14 @@ Performance::output (Midi_stream &midi_stream) const int tracks_ = audio_staffs_.size (); midi_stream.write (Midi_header (1, tracks_, 384)); - if (be_verbose_global) - progress_indication (_ ("Track...") + " "); - + debug_output (_ ("Track...") + " ", false); + for (vsize i = 0; i < audio_staffs_.size (); i++) { Audio_staff *s = audio_staffs_[i]; - if (be_verbose_global) - progress_indication ("[" + to_string (i)); + debug_output ("[" + to_string (i), true); s->output (midi_stream, i, ports_); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); } } @@ -88,7 +85,6 @@ Performance::write_output (string out) const progress_indication ("\n"); } - void Performance::process () { @@ -97,5 +93,5 @@ Performance::process () Performance * unsmob_performance (SCM x) { - return dynamic_cast (unsmob_music_output (x)); + return dynamic_cast (unsmob_music_output (x)); } diff --git a/lily/performer-group.cc b/lily/performer-group.cc index 70a3f84484..8a8cb4719d 100644 --- a/lily/performer-group.cc +++ b/lily/performer-group.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -25,18 +25,18 @@ #include "warn.hh" ADD_TRANSLATOR_GROUP (Performer_group, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); void Performer_group::announce_element (Audio_element_info info) @@ -57,12 +57,12 @@ Performer_group::acknowledge_audio_elements () Audio_element_info info = announce_infos_[j]; for (SCM p = get_simple_trans_list (); scm_is_pair (p); p = scm_cdr (p)) - { - Translator *t = unsmob_translator (scm_car (p)); - Performer *eng = dynamic_cast (t); - if (eng && eng != info.origin_trans_) - eng->acknowledge_audio_element (info); - } + { + Translator *t = unsmob_translator (scm_car (p)); + Performer *eng = dynamic_cast (t); + if (eng && eng != info.origin_trans_) + eng->acknowledge_audio_element (info); + } } } @@ -73,7 +73,7 @@ performer_each (SCM list, Performer_method method) { Performer *e = dynamic_cast (unsmob_translator (scm_car (p))); if (e) - (e->*method) (); + (e->*method) (); } } @@ -85,18 +85,18 @@ Performer_group::do_announces () { Context *c = unsmob_context (scm_car (s)); Performer_group *group - = dynamic_cast (c->implementation ()); + = dynamic_cast (c->implementation ()); if (group) - group->do_announces (); + group->do_announces (); } while (1) { performer_each (get_simple_trans_list (), - &Performer::create_audio_elements); + &Performer::create_audio_elements); if (!announce_infos_.size ()) - break; + break; acknowledge_audio_elements (); announce_infos_.clear (); diff --git a/lily/performer.cc b/lily/performer.cc index 871367af15..d6ea9bd4d9 100644 --- a/lily/performer.cc +++ b/lily/performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -23,7 +23,6 @@ #include "performer-group.hh" #include "warn.hh" - Performer_group * Performer::get_daddy_performer () const { diff --git a/lily/pfb-scheme.cc b/lily/pfb-scheme.cc index 89666192a3..f8a6c1278f 100644 --- a/lily/pfb-scheme.cc +++ b/lily/pfb-scheme.cc @@ -7,48 +7,44 @@ #include "warn.hh" LY_DEFINE (ly_pfb_2_pfa, "ly:pfb->pfa", - 1, 0, 0, (SCM pfb_file_name), - "Convert the contents of a Type@tie{}1 font in PFB format" - " to PFA format.") + 1, 0, 0, (SCM pfb_file_name), + "Convert the contents of a Type@tie{}1 font in PFB format" + " to PFA format.") { LY_ASSERT_TYPE (scm_is_string, pfb_file_name, 1); string file_name = ly_scm2string (pfb_file_name); - if (be_verbose_global) - progress_indication ("\n[" + file_name); - + debug_output ("[" + file_name); // start message on a new line + vector pfb_string = gulp_file (file_name, 0); char *pfa = pfb2pfa ((Byte *) &pfb_string[0], pfb_string.size ()); - + SCM pfa_scm = scm_from_locale_string (pfa); free (pfa); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); return pfa_scm; } LY_DEFINE (ly_otf_2_cff, "ly:otf->cff", - 1, 0, 0, (SCM otf_file_name), - "Convert the contents of an OTF file to a CFF file," - " returning it as a string.") + 1, 0, 0, (SCM otf_file_name), + "Convert the contents of an OTF file to a CFF file," + " returning it as a string.") { LY_ASSERT_TYPE (scm_is_string, otf_file_name, 1); string file_name = ly_scm2string (otf_file_name); - if (be_verbose_global) - progress_indication ("\n[" + file_name); + debug_output ("[" + file_name); // start message on a new line FT_Face face = open_ft_face (file_name, 0 /* index */); string table = get_otf_table (face, "CFF "); SCM asscm = scm_from_locale_stringn ((char *) table.data (), - table.length ()); + table.length ()); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); return asscm; } diff --git a/lily/pfb.cc b/lily/pfb.cc index ba31e17513..0fb1d5b76e 100644 --- a/lily/pfb.cc +++ b/lily/pfb.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,49 +32,49 @@ using namespace std; char * pfb2pfa (Byte const *pfb, int length) { - char *out = (char*) malloc(sizeof(char)); - int olen = 0; + char *out = (char *) malloc (sizeof (char)); + long olen = 0; Byte const *p = pfb; while (p < pfb + length) { if (*p++ != 128) - break; + break; Byte type = *p++; if (type == 3) - break; + break; unsigned seglen - = p[0] | (p[1] << 8) - | (p[2] << 16) | (p[3] << 24); + = p[0] | (p[1] << 8) + | (p[2] << 16) | (p[3] << 24); p += 4; if (type == 1) - { - out = (char *)realloc (out, olen + seglen + 1); - char *outp = out + olen; - memcpy (outp, p, seglen); - olen += seglen; - p += seglen; - } + { + out = (char *)realloc (out, olen + seglen + 1); + char *outp = out + olen; + memcpy (outp, p, seglen); + olen += seglen; + p += seglen; + } else if (type == 2) - { - unsigned outlength = (seglen * 2) + (seglen / 32) + 2; - - out = (char *)realloc (out, olen + outlength + 1); - - char *outp = out + olen; - for (int i = seglen; i--;) - { - sprintf (outp, "%02x", *p++); - outp += 2; - if (! (i % 32)) - *outp++ = '\n'; - } - - olen = outp - out; - } + { + unsigned outlength = (seglen * 2) + (seglen / 32) + 2; + + out = (char *)realloc (out, olen + outlength + 1); + + char *outp = out + olen; + for (int i = seglen; i--;) + { + sprintf (outp, "%02x", *p++); + outp += 2; + if (! (i % 32)) + *outp++ = '\n'; + } + + olen = outp - out; + } } out[olen] = 0; diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index 839554f7e9..123878b644 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,37 +30,37 @@ #include "translator.icc" - /* NOTE NOTE NOTE This is largely similar to Slur_engraver. Check if fixes - apply there too. + 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 { vector start_events_; vector stop_events_; - vector slurs_; - vector end_slurs_; + vector slurs_; + vector end_slurs_; + vector objects_to_acknowledge_; protected: DECLARE_TRANSLATOR_LISTENER (phrasing_slur); - DECLARE_ACKNOWLEDGER (accidental); + DECLARE_ACKNOWLEDGER (inline_accidental); DECLARE_ACKNOWLEDGER (fingering); DECLARE_ACKNOWLEDGER (note_column); DECLARE_ACKNOWLEDGER (slur); DECLARE_ACKNOWLEDGER (script); + DECLARE_ACKNOWLEDGER (dots); DECLARE_ACKNOWLEDGER (text_script); DECLARE_ACKNOWLEDGER (tie); DECLARE_ACKNOWLEDGER (tuplet_number); @@ -70,7 +70,7 @@ protected: void process_music (); virtual void finalize (); - + virtual void derived_mark () const; public: TRANSLATOR_DECLARATIONS (Phrasing_slur_engraver); @@ -80,17 +80,26 @@ Phrasing_slur_engraver::Phrasing_slur_engraver () { } +void +Phrasing_slur_engraver::derived_mark () const +{ + for (vsize i = start_events_.size (); i--;) + scm_gc_mark (start_events_[i]->self_scm ()); + for (vsize i = stop_events_.size (); i--;) + scm_gc_mark (stop_events_[i]->self_scm ()); +} + IMPLEMENT_TRANSLATOR_LISTENER (Phrasing_slur_engraver, phrasing_slur); void Phrasing_slur_engraver::listen_phrasing_slur (Stream_event *ev) { Direction d = to_dir (ev->get_property ("span-direction")); if (d == START) - start_events_.push_back(ev); + start_events_.push_back (ev); else if (d == STOP) - stop_events_.push_back(ev); + stop_events_.push_back (ev); else ev->origin ()->warning (_f ("direction of %s invalid: %d", - "phrasing-slur-event", int (d))); + "phrasing-slur-event", int (d))); } void @@ -106,11 +115,17 @@ Phrasing_slur_engraver::acknowledge_note_column (Grob_info info) void Phrasing_slur_engraver::acknowledge_extra_object (Grob_info info) { - Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_); + objects_to_acknowledge_.push_back (info); } void -Phrasing_slur_engraver::acknowledge_accidental (Grob_info info) +Phrasing_slur_engraver::acknowledge_inline_accidental (Grob_info info) +{ + acknowledge_extra_object (info); +} + +void +Phrasing_slur_engraver::acknowledge_dots (Grob_info info) { acknowledge_extra_object (info); } @@ -160,6 +175,7 @@ Phrasing_slur_engraver::finalize () slurs_[i]->warning (_ ("unterminated phrasing slur")); slurs_[i]->suicide (); } + slurs_.clear (); } void @@ -170,7 +186,7 @@ Phrasing_slur_engraver::process_music () 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) + // Find the slurs that are ended with this event (by checking the spanner-id) bool ended = false; for (vsize j = slurs_.size (); j--;) { @@ -181,26 +197,78 @@ Phrasing_slur_engraver::process_music () slurs_.erase (slurs_.begin () + j); } } - if (!ended) + if (ended) + { + // Ignore redundant stop events for this id + for (vsize j = stop_events_.size (); --j > i;) + { + if (id == robust_scm2string (stop_events_[j]->get_property ("spanner-id"), "")) + stop_events_.erase (stop_events_.begin () + j); + } + } + else ev->origin ()->warning (_ ("cannot end phrasing slur")); } - for (vsize i = 0; i < start_events_.size (); i++) + vsize old_slurs = slurs_.size (); + for (vsize i = start_events_.size (); i--;) { 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 + Direction updown = to_dir (ev->get_property ("direction")); + + bool completed; + for (vsize j = slurs_.size (); !(completed = (j-- == 0));) + { + // Check if we already have a slur with the same spanner-id. + if (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), "")) + { + if (j < old_slurs) + { + // We already have an old slur, so give a warning + // and completely ignore the new slur. + ev->origin ()->warning (_ ("already have phrasing slur")); + start_events_.erase (start_events_.begin () + i); + break; + } + + // If this slur event has no direction, it will not + // contribute anything new to the existing slur(s), so + // we can ignore it. + + if (!updown) + break; + + Stream_event *c = unsmob_stream_event (slurs_[j]->get_property ("cause")); + + if (!c) + { + slurs_[j]->programming_error ("phrasing slur without a cause"); + continue; + } + + Direction slur_dir = to_dir (c->get_property ("direction")); + + // If the existing slur does not have a direction yet, + // we'd rather take the new one. + + if (!slur_dir) + { + slurs_[j]->suicide (); + slurs_.erase (slurs_.begin () + j); + continue; + } + + // If the existing slur has the same direction as ours, drop ours + + if (slur_dir == updown) + break; + } + } + // If the loop completed, our slur is new + if (completed) { 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); @@ -212,30 +280,53 @@ Phrasing_slur_engraver::process_music () void Phrasing_slur_engraver::stop_translation_timestep () { + if (Grob *g = unsmob_grob (get_property ("currentCommandColumn"))) + { + for (vsize i = 0; i < end_slurs_.size (); i++) + Slur::add_extra_encompass (end_slurs_[i], g); + + if (!start_events_.size ()) + for (vsize i = 0; i < slurs_.size (); i++) + Slur::add_extra_encompass (slurs_[i], g); + } + + for (vsize i = 0; i < end_slurs_.size (); i++) + { + Spanner *s = dynamic_cast (end_slurs_[i]); + if (!s->get_bound (RIGHT)) + s->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn"))); + announce_end_grob (s, SCM_EOL); + } + + for (vsize i = 0; i < objects_to_acknowledge_.size (); i++) + Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_, end_slurs_); + + objects_to_acknowledge_.clear (); end_slurs_.clear (); start_events_.clear (); stop_events_.clear (); } -ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental); +ADD_ACKNOWLEDGER (Phrasing_slur_engraver, inline_accidental); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering) ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script); +ADD_ACKNOWLEDGER (Phrasing_slur_engraver, dots); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, text_script); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tie); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tuplet_number); ADD_TRANSLATOR (Phrasing_slur_engraver, - /* doc */ - "Print phrasing slurs. Similar to @ref{Slur_engraver}.", + /* doc */ + "Print phrasing slurs. Similar to @ref{Slur_engraver}.", - /* create */ - "PhrasingSlur ", + /* create */ + "PhrasingSlur ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/piano-pedal-align-engraver.cc b/lily/piano-pedal-align-engraver.cc index f5aa652a4a..3111592599 100644 --- a/lily/piano-pedal-align-engraver.cc +++ b/lily/piano-pedal-align-engraver.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys - + Copyright (C) 2006--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,7 +18,6 @@ along with LilyPond. If not, see . */ - #include "engraver.hh" #include "spanner.hh" @@ -28,18 +27,15 @@ #include "warn.hh" #include "axis-group-interface.hh" - /* TODO: * Detach from pedal specifics, - + * Also use this engraver for dynamics. - */ - struct Pedal_align_info { Spanner *line_spanner_; @@ -77,7 +73,7 @@ public: protected: virtual void finalize (); - + DECLARE_ACKNOWLEDGER (piano_pedal_script); DECLARE_ACKNOWLEDGER (piano_pedal_bracket); DECLARE_ACKNOWLEDGER (note_column); @@ -86,9 +82,10 @@ protected: void stop_translation_timestep (); void start_translation_timestep (); - + private: - enum Pedal_type { + enum Pedal_type + { SOSTENUTO, SUSTAIN, UNA_CORDA, @@ -114,46 +111,45 @@ Piano_pedal_align_engraver::start_translation_timestep () void Piano_pedal_align_engraver::stop_translation_timestep () { - for (int i = 0; i < NUM_PEDAL_TYPES; i ++) + for (int i = 0; i < NUM_PEDAL_TYPES; i++) { if (pedal_info_[i].line_spanner_) - { - - if (pedal_info_[i].carrying_item_) - { - if (!pedal_info_[i].line_spanner_->get_bound (LEFT)) - pedal_info_[i].line_spanner_->set_bound (LEFT, - pedal_info_[i].carrying_item_); - - pedal_info_[i].line_spanner_->set_bound (RIGHT, - pedal_info_[i].carrying_item_); - } - else if (pedal_info_[i].carrying_spanner_ - || pedal_info_[i].finished_carrying_spanner_ - ) - { - if (!pedal_info_[i].line_spanner_->get_bound (LEFT) - && pedal_info_[i].carrying_spanner_->get_bound (LEFT)) - pedal_info_[i].line_spanner_->set_bound (LEFT, - pedal_info_[i].carrying_spanner_->get_bound (LEFT)); - - - if (pedal_info_[i].finished_carrying_spanner_) - pedal_info_[i].line_spanner_->set_bound (RIGHT, - pedal_info_[i].finished_carrying_spanner_->get_bound (RIGHT)); - } - - for (vsize j = 0; j < supports_.size (); j++) - { - Side_position_interface::add_support (pedal_info_[i].line_spanner_, supports_[j]); - } - - if (pedal_info_[i].is_finished ()) - { - announce_end_grob (pedal_info_[i].line_spanner_, SCM_EOL); - pedal_info_[i].clear (); - } - } + { + + if (pedal_info_[i].carrying_item_) + { + if (!pedal_info_[i].line_spanner_->get_bound (LEFT)) + pedal_info_[i].line_spanner_->set_bound (LEFT, + pedal_info_[i].carrying_item_); + + pedal_info_[i].line_spanner_->set_bound (RIGHT, + pedal_info_[i].carrying_item_); + } + else if (pedal_info_[i].carrying_spanner_ + || pedal_info_[i].finished_carrying_spanner_ + ) + { + if (!pedal_info_[i].line_spanner_->get_bound (LEFT) + && pedal_info_[i].carrying_spanner_->get_bound (LEFT)) + pedal_info_[i].line_spanner_->set_bound (LEFT, + pedal_info_[i].carrying_spanner_->get_bound (LEFT)); + + if (pedal_info_[i].finished_carrying_spanner_) + pedal_info_[i].line_spanner_->set_bound (RIGHT, + pedal_info_[i].finished_carrying_spanner_->get_bound (RIGHT)); + } + + for (vsize j = 0; j < supports_.size (); j++) + { + Side_position_interface::add_support (pedal_info_[i].line_spanner_, supports_[j]); + } + + if (pedal_info_[i].is_finished ()) + { + announce_end_grob (pedal_info_[i].line_spanner_, SCM_EOL); + pedal_info_[i].clear (); + } + } pedal_info_[i].carrying_item_ = 0; } @@ -169,11 +165,10 @@ Piano_pedal_align_engraver::get_grob_pedal_type (Grob_info g) if (g.event_cause ()->in_event_class ("una-corda-event")) return UNA_CORDA; - programming_error ("Unknown piano pedal type. Defaulting to sustain"); + programming_error ("Unknown piano pedal type. Defaulting to sustain"); return SUSTAIN; } - Spanner * Piano_pedal_align_engraver::make_line_spanner (Pedal_type t, SCM cause) { @@ -181,24 +176,24 @@ Piano_pedal_align_engraver::make_line_spanner (Pedal_type t, SCM cause) if (!sp) { switch (t) - { - case (SOSTENUTO): - sp = make_spanner ("SostenutoPedalLineSpanner", cause); - break; - case (SUSTAIN): - sp = make_spanner ("SustainPedalLineSpanner", cause); - break; - case (UNA_CORDA): - sp = make_spanner ("UnaCordaPedalLineSpanner", cause); - break; - default: - programming_error ("No pedal type fonud!") ; - return sp; - } - + { + case (SOSTENUTO): + sp = make_spanner ("SostenutoPedalLineSpanner", cause); + break; + case (SUSTAIN): + sp = make_spanner ("SustainPedalLineSpanner", cause); + break; + case (UNA_CORDA): + sp = make_spanner ("UnaCordaPedalLineSpanner", cause); + break; + default: + programming_error ("No pedal type fonud!"); + return sp; + } + pedal_info_[t].line_spanner_ = sp; } - + return sp; } @@ -229,26 +224,25 @@ void Piano_pedal_align_engraver::acknowledge_piano_pedal_script (Grob_info gi) { Pedal_type type = get_grob_pedal_type (gi); - + Grob *sp = make_line_spanner (type, gi.grob ()->self_scm ()); Axis_group_interface::add_element (sp, gi.grob ()); pedal_info_[type].carrying_item_ = gi.grob (); } - void Piano_pedal_align_engraver::finalize () { - for (int i = 0; i < NUM_PEDAL_TYPES; i ++) + for (int i = 0; i < NUM_PEDAL_TYPES; i++) { if (pedal_info_[i].line_spanner_) - { - SCM cc = get_property ("currentCommandColumn"); - Item *c = unsmob_item (cc); - pedal_info_[i].line_spanner_->set_bound (RIGHT, c); + { + SCM cc = get_property ("currentCommandColumn"); + Item *c = unsmob_item (cc); + pedal_info_[i].line_spanner_->set_bound (RIGHT, c); - pedal_info_[i].clear (); - } + pedal_info_[i].clear (); + } } } @@ -260,19 +254,18 @@ ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_script); ADD_END_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_bracket); - ADD_TRANSLATOR (Piano_pedal_align_engraver, - /* doc */ - "Align piano pedal symbols and brackets.", + /* doc */ + "Align piano pedal symbols and brackets.", - /* create */ - "SostenutoPedalLineSpanner " - "SustainPedalLineSpanner " - "UnaCordaPedalLineSpanner ", + /* create */ + "SostenutoPedalLineSpanner " + "SustainPedalLineSpanner " + "UnaCordaPedalLineSpanner ", - /* read */ - "currentCommandColumn ", + /* read */ + "currentCommandColumn ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/piano-pedal-bracket.cc b/lily/piano-pedal-bracket.cc index 40ebbaef7d..89a97fb4e3 100644 --- a/lily/piano-pedal-bracket.cc +++ b/lily/piano-pedal-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Han-Wen Nienhuys + Copyright (C) 2003--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,6 +21,7 @@ #include "spanner.hh" #include "item.hh" #include "tuplet-bracket.hh" +#include "axis-group-interface.hh" struct Piano_pedal_bracket { @@ -37,40 +38,40 @@ Piano_pedal_bracket::print (SCM smob) Drul_array broken (false, false); Drul_array height = robust_scm2drul - (me->get_property ("edge-height"), Interval (0, 0)); + (me->get_property ("edge-height"), Interval (0, 0)); Drul_array shorten = robust_scm2drul - (me->get_property ("shorten-pair"), Interval (0, 0)); + (me->get_property ("shorten-pair"), Interval (0, 0)); Drul_array flare = robust_scm2drul - (me->get_property ("bracket-flare"), Interval (0, 0)); + (me->get_property ("bracket-flare"), Interval (0, 0)); Grob *common = me->get_bound (LEFT) - ->common_refpoint (me->get_bound (RIGHT), X_AXIS); + ->common_refpoint (me->get_bound (RIGHT), X_AXIS); Grob *textbit = unsmob_grob (me->get_object ("pedal-text")); if (textbit) common = common->common_refpoint (textbit, X_AXIS); Interval span_points (0, 0); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Item *b = me->get_bound (d); broken[d] = b->break_status_dir () != CENTER; if (broken[d]) - { - if (orig - && ((d == RIGHT - && me->get_break_index () != orig->broken_intos_.size () - 1) - || (d == LEFT && me->get_break_index ()))) - height[d] = 0.0; - else - flare[d] = 0.0; - } - - Interval ext = robust_relative_extent (b, common, X_AXIS); - span_points[d] = ext [broken[d] ? RIGHT : LEFT]; + { + if (orig + && ((d == RIGHT + && me->get_break_index () != orig->broken_intos_.size () - 1) + || (d == LEFT && me->get_break_index ()))) + height[d] = 0.0; + else + flare[d] = 0.0; + + span_points[d] + = Axis_group_interface::generic_bound_extent (b, common, X_AXIS)[RIGHT]; + } + else + span_points[d] = b->relative_coordinate (common, X_AXIS); } - while (flip (&d) != LEFT); /* For 'Mixed' style pedals, i.e. a bracket preceded by text: Ped._____| need to shorten by the extent of the text grob @@ -82,7 +83,7 @@ Piano_pedal_bracket::print (SCM smob) Real padding = robust_scm2double (me->get_property ("bound-padding"), 0); span_points[LEFT] = padding - + robust_relative_extent (textbit, common, X_AXIS)[RIGHT]; + + robust_relative_extent (textbit, common, X_AXIS)[RIGHT]; } Stencil m; @@ -90,24 +91,24 @@ Piano_pedal_bracket::print (SCM smob) && span_points.length () > 0.001) { m = Tuplet_bracket::make_bracket (me, Y_AXIS, - Offset (span_points.length (), 0), - height, - Interval (), - flare, shorten); + Offset (span_points.length (), 0), + height, + Interval (), + flare, shorten); } m.translate_axis (span_points[LEFT] - - me->relative_coordinate (common, X_AXIS), X_AXIS); + - me->relative_coordinate (common, X_AXIS), X_AXIS); return m.smobbed_copy (); } ADD_INTERFACE (Piano_pedal_bracket, - "The bracket of the piano pedal. It can be tuned through" - " the regular bracket properties.", - - /* properties */ - "bound-padding " - "edge-height " - "shorten-pair " - "bracket-flare " - "pedal-text " - ); + "The bracket of the piano pedal. It can be tuned through" + " the regular bracket properties.", + + /* properties */ + "bound-padding " + "edge-height " + "shorten-pair " + "bracket-flare " + "pedal-text " + ); diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc index 43666efbdd..c976863e02 100644 --- a/lily/piano-pedal-engraver.cc +++ b/lily/piano-pedal-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen , + Copyright (C) 2000--2012 Jan Nieuwenhuizen , Erik Sandberg Chris Jackson - extended to support @@ -48,11 +48,11 @@ Softcode using (list (sustain-event SustainPedal PianoPedalBracket) ... ) * Try to use same engraver for dynamics. - */ /* Ugh: This declaration is duplicated in piano-pedal-performer */ -enum Pedal_type { +enum Pedal_type +{ SOSTENUTO, SUSTAIN, UNA_CORDA, @@ -69,7 +69,7 @@ struct Pedal_type_info SCM event_class_sym_; SCM style_sym_; SCM strings_sym_; - + const char *pedal_c_str_; Pedal_type_info () @@ -126,7 +126,6 @@ protected: DECLARE_TRANSLATOR_LISTENER (sustain); DECLARE_TRANSLATOR_LISTENER (una_corda); DECLARE_TRANSLATOR_LISTENER (sostenuto); - DECLARE_ACKNOWLEDGER (note_column); void stop_translation_timestep (); void process_music (); @@ -138,7 +137,6 @@ private: void typeset_all (Pedal_info *p); }; - static void init_pedal_types () { @@ -154,29 +152,29 @@ init_pedal_types () string base_name = name; /* foo-bar */ string base_ident = ""; - int prev_pos=0; + int prev_pos = 0; int cur_pos; for (cur_pos = 1; name[cur_pos]; cur_pos++) - if (isupper (name[cur_pos])) - { - base_ident = base_ident + String_convert::to_lower (string (name, prev_pos, cur_pos - prev_pos)) + "-"; - prev_pos = cur_pos; - } + if (isupper (name[cur_pos])) + { + base_ident = base_ident + String_convert::to_lower (string (name, prev_pos, cur_pos - prev_pos)) + "-"; + prev_pos = cur_pos; + } base_ident += String_convert::to_lower (string (name, prev_pos, cur_pos - prev_pos)); /* - be careful, as we don't want to loose references to the _sym_ members. + be careful, as we don't want to loose references to the _sym_ members. */ Pedal_type_info info; info.event_class_sym_ = scm_from_locale_symbol ((base_ident + "-event").c_str ()); info.style_sym_ = scm_from_locale_symbol (("pedal" + base_name + "Style").c_str ()); info.strings_sym_ = scm_from_locale_symbol (("pedal" + base_name + "Strings").c_str ()); - + info.base_name_ = name; info.pedal_c_str_ = strdup ((base_name + "Pedal").c_str ()); info.protect (); - + pedal_types_[i] = info; } } @@ -207,23 +205,6 @@ Piano_pedal_engraver::initialize () info_list_[NUM_PEDAL_TYPES].type_ = 0; } - -/* - Urg: Code dup - I'm a script -*/ -void -Piano_pedal_engraver::acknowledge_note_column (Grob_info info) -{ - for (Pedal_info *p = info_list_; p->type_; p++) - { - if (p->bracket_) - add_bound_item (p->bracket_, info.grob ()); - if (p->finished_bracket_) - add_bound_item (p->finished_bracket_, info.grob ()); - } -} - IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, sostenuto); void Piano_pedal_engraver::listen_sostenuto (Stream_event *ev) @@ -254,33 +235,33 @@ Piano_pedal_engraver::process_music () for (Pedal_info *p = info_list_; p->type_; p++) { if (p->event_drul_[STOP] || p->event_drul_[START]) - { - /* Choose the appropriate grobs to add to the line spanner - These can be text items or text-spanners - */ - - /* - ugh, code dup, should read grob to create from other - property. - - bracket: |_________/\____| - text: Ped. *Ped. * - mixed: Ped. _____/\____| - */ - - SCM style = internal_get_property (p->type_->style_sym_); - - bool mixed = style == ly_symbol2scm ("mixed"); - bool bracket = (mixed - || style == ly_symbol2scm ("bracket")); - bool text = (style == ly_symbol2scm ("text") - || mixed); - - if (text && !p->item_) - create_text_grobs (p, mixed); - if (bracket) - create_bracket_grobs (p, mixed); - } + { + /* Choose the appropriate grobs to add to the line spanner + These can be text items or text-spanners + */ + + /* + ugh, code dup, should read grob to create from other + property. + + bracket: |_________/\____| + text: Ped. *Ped. * + mixed: Ped. _____/\____| + */ + + SCM style = internal_get_property (p->type_->style_sym_); + + bool mixed = style == ly_symbol2scm ("mixed"); + bool bracket = (mixed + || style == ly_symbol2scm ("bracket")); + bool text = (style == ly_symbol2scm ("text") + || mixed); + + if (text && !p->item_) + create_text_grobs (p, mixed); + if (bracket) + create_bracket_grobs (p, mixed); + } } } @@ -296,11 +277,11 @@ Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed) if (!m) m = p->event_drul_ [STOP]; string msg = _f ("expect 3 strings for piano pedals, found: %ld", - scm_ilength (strings)); + scm_ilength (strings)); if (m) - m->origin ()->warning (msg); + m->origin ()->warning (msg); else - warning (msg); + warning (msg); return; } @@ -308,38 +289,38 @@ Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed) if (p->event_drul_[STOP] && p->event_drul_[START]) { if (!mixed) - { - if (!p->start_ev_) - p->event_drul_[STOP]->origin ()->warning (_f ("cannot find start of piano pedal: `%s'", p->type_->base_name_.c_str ())); - else - s = scm_cadr (strings); - p->start_ev_ = p->event_drul_[START]; - } + { + if (!p->start_ev_) + p->event_drul_[STOP]->origin ()->warning (_f ("cannot find start of piano pedal: `%s'", p->type_->base_name_.c_str ())); + else + s = scm_cadr (strings); + p->start_ev_ = p->event_drul_[START]; + } } else if (p->event_drul_[STOP]) { if (!mixed) - { - if (!p->start_ev_) - p->event_drul_[STOP]->origin ()->warning (_f ("cannot find start of piano pedal: `%s'", p->type_->base_name_.c_str ())); - else - s = scm_caddr (strings); - p->start_ev_ = 0; - } + { + if (!p->start_ev_) + p->event_drul_[STOP]->origin ()->warning (_f ("cannot find start of piano pedal: `%s'", p->type_->base_name_.c_str ())); + else + s = scm_caddr (strings); + p->start_ev_ = 0; + } } else if (p->event_drul_[START]) { p->start_ev_ = p->event_drul_[START]; s = scm_car (strings); - } + } if (scm_is_string (s)) { const char *propname = p->type_->pedal_c_str_; p->item_ = make_item (propname, (p->event_drul_[START] - ? p->event_drul_[START] - : p->event_drul_[STOP])->self_scm ()); + ? p->event_drul_[START] + : p->event_drul_[STOP])->self_scm ()); p->item_->set_property ("text", s); } @@ -366,28 +347,26 @@ Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed) assert (!p->finished_bracket_); Grob *cmc = unsmob_grob (get_property ("currentMusicalColumn")); - - if (!p->bracket_->get_bound (RIGHT)) - p->bracket_->set_bound (RIGHT, cmc); + p->bracket_->set_bound (RIGHT, cmc); /* - Set properties so that the stencil-creating function will - know whether the right edge should be flared ___/ + Set properties so that the stencil-creating function will + know whether the right edge should be flared ___/ */ if (!p->event_drul_[START]) - { - SCM flare = p->bracket_->get_property ("bracket-flare"); - if (scm_is_pair (flare)) - p->bracket_->set_property ("bracket-flare", scm_cons (scm_car (flare), - scm_from_double (0))); - } + { + SCM flare = p->bracket_->get_property ("bracket-flare"); + if (scm_is_pair (flare)) + p->bracket_->set_property ("bracket-flare", scm_cons (scm_car (flare), + scm_from_double (0))); + } p->finished_bracket_ = p->bracket_; p->bracket_ = 0; announce_end_grob (p->finished_bracket_, p->event_drul_[STOP]->self_scm ()); - + p->current_bracket_ev_ = 0; } @@ -399,34 +378,34 @@ Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed) p->bracket_ = make_spanner ("PianoPedalBracket", p->event_drul_[START]->self_scm ()); /* - Set properties so that the stencil-creating function will - know whether the left edge should be flared \___ + Set properties so that the stencil-creating function will + know whether the left edge should be flared \___ */ if (!p->finished_bracket_) - { - SCM flare = p->bracket_->get_property ("bracket-flare"); - p->bracket_->set_property ("bracket-flare", scm_cons (scm_from_double (0), scm_cdr (flare))); - } + { + SCM flare = p->bracket_->get_property ("bracket-flare"); + p->bracket_->set_property ("bracket-flare", scm_cons (scm_from_double (0), scm_cdr (flare))); + } /* Set this property for 'mixed style' pedals, Ped._______/\ , - so the stencil function will shorten the ____ line by the length of the Ped. text. + so the stencil function will shorten the ____ line by the length of the Ped. text. */ if (mixed) - { - /* - Mixed style: Store a pointer to the preceding text for use in - calculating the length of the line + { + /* + Mixed style: Store a pointer to the preceding text for use in + calculating the length of the line - TODO: + TODO: - WTF is pedal-text not the bound of the object? --hwn - */ - if (p->item_) - p->bracket_->set_object ("pedal-text", p->item_->self_scm ()); - } + WTF is pedal-text not the bound of the object? --hwn + */ + if (p->item_) + p->bracket_->set_object ("pedal-text", p->item_->self_scm ()); + } } p->event_drul_[START] = 0; @@ -439,19 +418,19 @@ Piano_pedal_engraver::finalize () for (Pedal_info *p = info_list_; p->type_; p++) { if (p->bracket_ - && !p->bracket_->is_live ()) - p->bracket_ = 0; + && !p->bracket_->is_live ()) + p->bracket_ = 0; if (p->bracket_) - { - SCM cc = get_property ("currentCommandColumn"); - Item *c = unsmob_item (cc); - p->bracket_->set_bound (RIGHT, c); + { + SCM cc = get_property ("currentCommandColumn"); + Item *c = unsmob_item (cc); + p->bracket_->set_bound (RIGHT, c); - p->finished_bracket_ = p->bracket_; - p->bracket_ = 0; - typeset_all (p); - } + p->finished_bracket_ = p->bracket_; + p->bracket_ = 0; + typeset_all (p); + } } } @@ -461,15 +440,13 @@ Piano_pedal_engraver::stop_translation_timestep () { for (Pedal_info *p = info_list_; p->type_; p++) { - + typeset_all (p); if (p->bracket_ && !p->bracket_->get_bound (LEFT)) - { - Grob *cmc = unsmob_grob (get_property ("currentMusicalColumn")); - - if (!p->bracket_->get_bound (LEFT)) - p->bracket_->set_bound (LEFT, cmc); - } + { + Grob *cmc = unsmob_grob (get_property ("currentMusicalColumn")); + p->bracket_->set_bound (LEFT, cmc); + } } for (Pedal_info *p = info_list_; p->type_; p++) @@ -496,33 +473,31 @@ Piano_pedal_engraver::typeset_all (Pedal_info *p) { Grob *r = p->finished_bracket_->get_bound (RIGHT); if (!r) - p->finished_bracket_->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn"))); + p->finished_bracket_->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn"))); p->finished_bracket_ = 0; } } -ADD_ACKNOWLEDGER (Piano_pedal_engraver, note_column); - ADD_TRANSLATOR (Piano_pedal_engraver, - /* doc */ - "Engrave piano pedal symbols and brackets.", - - /* create */ - "PianoPedalBracket " - "SostenutoPedal " - "SustainPedal " - "UnaCordaPedal ", - - /* read */ - "currentCommandColumn " - "pedalSostenutoStrings " - "pedalSostenutoStyle " - "pedalSustainStrings " - "pedalSustainStyle " - "pedalUnaCordaStrings " - "pedalUnaCordaStyle ", - - /* write */ - "" - ); + /* doc */ + "Engrave piano pedal symbols and brackets.", + + /* create */ + "PianoPedalBracket " + "SostenutoPedal " + "SustainPedal " + "UnaCordaPedal ", + + /* read */ + "currentCommandColumn " + "pedalSostenutoStrings " + "pedalSostenutoStyle " + "pedalSustainStrings " + "pedalSustainStyle " + "pedalUnaCordaStrings " + "pedalUnaCordaStyle ", + + /* write */ + "" + ); diff --git a/lily/piano-pedal-performer.cc b/lily/piano-pedal-performer.cc index cd191d3ea0..dd288025dd 100644 --- a/lily/piano-pedal-performer.cc +++ b/lily/piano-pedal-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -52,7 +52,7 @@ protected: DECLARE_TRANSLATOR_LISTENER (una_corda); DECLARE_TRANSLATOR_LISTENER (sostenuto); private: - vector audios_; + vector audios_; Pedal_info info_alist_[NUM_PEDAL_TYPES]; }; @@ -65,11 +65,11 @@ Piano_pedal_performer::pedal_type_str (int t) { switch (t) { - case SOSTENUTO: + case SOSTENUTO: return "Sostenuto"; case SUSTAIN: return "Sustain"; - case UNA_CORDA: + case UNA_CORDA: return "UnaCorda"; default: programming_error ("Unknown pedal type"); @@ -99,31 +99,31 @@ Piano_pedal_performer::process_music () { string pedal_type = pedal_type_str (i); if (p->event_drul_[STOP]) - { - if (!p->start_event_) - p->event_drul_[STOP]->origin ()->warning (_f ("cannot find start of piano pedal: `%s'", pedal_type)); - else - { - Audio_piano_pedal *a = new Audio_piano_pedal; - a->type_string_ = pedal_type; - a->dir_ = STOP; - audios_.push_back (a); + { + if (!p->start_event_) + p->event_drul_[STOP]->origin ()->warning (_f ("cannot find start of piano pedal: `%s'", pedal_type)); + else + { + Audio_piano_pedal *a = new Audio_piano_pedal; + a->type_string_ = pedal_type; + a->dir_ = STOP; + audios_.push_back (a); Audio_element_info info (a, p->event_drul_[STOP]); announce_element (info); - } - p->start_event_ = 0; - } + } + p->start_event_ = 0; + } if (p->event_drul_[START]) - { - p->start_event_ = p->event_drul_[START]; - Audio_piano_pedal *a = new Audio_piano_pedal; - a->type_string_ = pedal_type; - a->dir_ = START; - audios_.push_back (a); + { + p->start_event_ = p->event_drul_[START]; + Audio_piano_pedal *a = new Audio_piano_pedal; + a->type_string_ = pedal_type; + a->dir_ = START; + audios_.push_back (a); Audio_element_info info (a, p->event_drul_[START]); announce_element (info); - } + } p->event_drul_[START] = 0; p->event_drul_[STOP] = 0; } @@ -171,15 +171,15 @@ Piano_pedal_performer::listen_una_corda (Stream_event *r) } ADD_TRANSLATOR (Piano_pedal_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/pitch-interval.cc b/lily/pitch-interval.cc index e92a721ae0..084084e4f9 100644 --- a/lily/pitch-interval.cc +++ b/lily/pitch-interval.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,7 +42,7 @@ Pitch_interval::is_empty () const Drul_array Pitch_interval::add_point (Pitch p) { - Drul_array expansions(false,false); + Drul_array expansions (false, false); if (at (LEFT).tone_pitch () > p.tone_pitch ()) { at (LEFT) = p; @@ -56,7 +56,6 @@ Pitch_interval::add_point (Pitch p) return expansions; } - Pitch_lexicographic_interval::Pitch_lexicographic_interval (Pitch p1, Pitch p2) { at (LEFT) = p1; @@ -78,7 +77,7 @@ Pitch_lexicographic_interval::is_empty () const Drul_array Pitch_lexicographic_interval::add_point (Pitch p) { - Drul_array expansions(false,false); + Drul_array expansions (false, false); if (at (LEFT) > p) { at (LEFT) = p; diff --git a/lily/pitch-scheme.cc b/lily/pitch-scheme.cc index bc69b633a7..0433325523 100644 --- a/lily/pitch-scheme.cc +++ b/lily/pitch-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,9 +20,9 @@ #include "pitch.hh" LY_DEFINE (ly_pitch_transpose, "ly:pitch-transpose", - 2, 0, 0, (SCM p, SCM delta), - "Transpose @var{p} by the amount @var{delta}," - " where @var{delta} is relative to middle@tie{}C.") + 2, 0, 0, (SCM p, SCM delta), + "Transpose @var{p} by the amount @var{delta}," + " where @var{delta} is relative to middle@tie{}C.") { LY_ASSERT_SMOB (Pitch, p, 1); LY_ASSERT_SMOB (Pitch, delta, 2); @@ -32,29 +32,31 @@ LY_DEFINE (ly_pitch_transpose, "ly:pitch-transpose", return t->transposed (*d).smobbed_copy (); } -/* Should add optional args. */ LY_DEFINE (ly_make_pitch, "ly:make-pitch", - 2, 1, 0, (SCM octave, SCM note, SCM alter), - "@var{octave} is specified by an integer, zero for the octave" - " containing middle@tie{}C. @var{note} is a number indexing the" - " global default scale, with 0 corresponding to pitch@tie{}C" - " and 6 usually corresponding to pitch@tie{}B. @var{alter} is" - " a rational number of 200-cent whole tones for alteration.") + 2, 1, 0, (SCM octave, SCM note, SCM alter), + "@var{octave} is specified by an integer, zero for the octave" + " containing middle@tie{}C. @var{note} is a number indexing the" + " global default scale, with 0 corresponding to pitch@tie{}C" + " and 6 usually corresponding to pitch@tie{}B." + " Optional @var{alter} is" + " a rational number of 200-cent whole tones for alteration.") { LY_ASSERT_TYPE (scm_is_integer, octave, 1); LY_ASSERT_TYPE (scm_is_integer, note, 2); + if (SCM_UNBNDP (alter)) + alter = SCM_INUM0; LY_ASSERT_TYPE (scm_is_rational, alter, 3); - + Pitch p (scm_to_int (octave), scm_to_int (note), - ly_scm2rational (alter)); - + ly_scm2rational (alter)); + return p.smobbed_copy (); } LY_DEFINE (ly_pitch_negate, "ly:pitch-negate", 1, 0, 0, - (SCM p), - "Negate @var{p}.") + (SCM p), + "Negate @var{p}.") { LY_ASSERT_SMOB (Pitch, p, 1); Pitch *pp = unsmob_pitch (p); @@ -62,9 +64,9 @@ LY_DEFINE (ly_pitch_negate, "ly:pitch-negate", 1, 0, 0, } LY_DEFINE (ly_pitch_steps, "ly:pitch-steps", 1, 0, 0, - (SCM p), - "Number of steps counted from middle@tie{}C of the" - " pitch@tie{}@var{p}.") + (SCM p), + "Number of steps counted from middle@tie{}C of the" + " pitch@tie{}@var{p}.") { LY_ASSERT_SMOB (Pitch, p, 1); Pitch *pp = unsmob_pitch (p); @@ -72,8 +74,8 @@ LY_DEFINE (ly_pitch_steps, "ly:pitch-steps", 1, 0, 0, } LY_DEFINE (ly_pitch_octave, "ly:pitch-octave", - 1, 0, 0, (SCM pp), - "Extract the octave from pitch@tie{}@var{pp}.") + 1, 0, 0, (SCM pp), + "Extract the octave from pitch@tie{}@var{pp}.") { LY_ASSERT_SMOB (Pitch, pp, 1); Pitch *p = unsmob_pitch (pp); @@ -82,8 +84,8 @@ LY_DEFINE (ly_pitch_octave, "ly:pitch-octave", } LY_DEFINE (ly_pitch_alteration, "ly:pitch-alteration", - 1, 0, 0, (SCM pp), - "Extract the alteration from pitch@tie{}@var{pp}.") + 1, 0, 0, (SCM pp), + "Extract the alteration from pitch@tie{}@var{pp}.") { LY_ASSERT_SMOB (Pitch, pp, 1); Pitch *p = unsmob_pitch (pp); @@ -92,9 +94,9 @@ LY_DEFINE (ly_pitch_alteration, "ly:pitch-alteration", return ly_rational2scm (q); } -LY_DEFINE (pitch_notename, "ly:pitch-notename", - 1, 0, 0, (SCM pp), - "Extract the note name from pitch @var{pp}.") +LY_DEFINE (ly_pitch_notename, "ly:pitch-notename", + 1, 0, 0, (SCM pp), + "Extract the note name from pitch @var{pp}.") { LY_ASSERT_SMOB (Pitch, pp, 1); Pitch *p = unsmob_pitch (pp); @@ -102,10 +104,19 @@ LY_DEFINE (pitch_notename, "ly:pitch-notename", return scm_from_int (q); } +LY_DEFINE (ly_pitch_tones, "ly:pitch-tones", + 1, 0, 0, (SCM pp), + "Calculate the number of tones of@tie{}@var{pp} from" + " middle@tie{}C as a rational number.") +{ + LY_ASSERT_SMOB (Pitch, pp, 1); + return ly_rational2scm (unsmob_pitch (pp)->tone_pitch ()); +} + LY_DEFINE (ly_pitch_quartertones, "ly:pitch-quartertones", - 1, 0, 0, (SCM pp), - "Calculate the number of quarter tones of@tie{}@var{pp} from" - " middle@tie{}C.") + 1, 0, 0, (SCM pp), + "Calculate the number of quarter tones of@tie{}@var{pp} from" + " middle@tie{}C.") { LY_ASSERT_SMOB (Pitch, pp, 1); Pitch *p = unsmob_pitch (pp); @@ -114,9 +125,9 @@ LY_DEFINE (ly_pitch_quartertones, "ly:pitch-quartertones", } LY_DEFINE (ly_pitch_semitones, "ly:pitch-semitones", - 1, 0, 0, (SCM pp), - "Calculate the number of semitones of@tie{}@var{pp} from" - " middle@tie{}C.") + 1, 0, 0, (SCM pp), + "Calculate the number of semitones of@tie{}@var{pp} from" + " middle@tie{}C.") { LY_ASSERT_SMOB (Pitch, pp, 1); Pitch *p = unsmob_pitch (pp); @@ -125,8 +136,8 @@ LY_DEFINE (ly_pitch_semitones, "ly:pitch-semitones", } LY_DEFINE (ly_pitch_less_p, "ly:pitchset_property (ly_symbol2scm ("middleCPosition"), scm_from_int (clef_pos + offset)); - return SCM_UNDEFINED; + return SCM_UNSPECIFIED; } diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc index 1ad824ee07..d52b02dee9 100644 --- a/lily/pitch-squash-engraver.cc +++ b/lily/pitch-squash-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,18 +46,18 @@ Pitch_squash_engraver::Pitch_squash_engraver () #include "translator.icc" ADD_ACKNOWLEDGER (Pitch_squash_engraver, note_head); ADD_TRANSLATOR (Pitch_squash_engraver, - /* doc */ - "Set the vertical position of note heads to" - " @code{squashedPosition}, if that property is set. This can" - " be used to make a single-line staff demonstrating the" - " rhythm of a melody.", + /* doc */ + "Set the vertical position of note heads to" + " @code{squashedPosition}, if that property is set. This can" + " be used to make a single-line staff demonstrating the" + " rhythm of a melody.", - /* create */ - "", + /* create */ + "", - /* read */ - "squashedPosition ", + /* read */ + "squashedPosition ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/pitch.cc b/lily/pitch.cc index c87f6f7610..b26076a008 100644 --- a/lily/pitch.cc +++ b/lily/pitch.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,14 +25,14 @@ #include "warn.hh" #include "ly-smobs.icc" - +#include 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 @@ -56,8 +57,8 @@ Pitch::compare (Pitch const &m1, Pitch const &m2) if (n) return n; if (a) - return a > (Rational)0; - + return a > (Rational)0 ? 1 : -1; + return 0; } @@ -78,13 +79,13 @@ Pitch::tone_pitch () const int Pitch::rounded_semitone_pitch () const { - return int (double (tone_pitch () * Rational (2))); + return int (floor (double (tone_pitch () * Rational (2) + Rational (1, 2)))); } int Pitch::rounded_quartertone_pitch () const { - return int (double (tone_pitch () * Rational (4))); + return int (floor (double (tone_pitch () * Rational (4) + Rational (1, 2)))); } void @@ -137,9 +138,9 @@ pitch_interval (Pitch const &from, Pitch const &to) { Rational sound = to.tone_pitch () - from.tone_pitch (); Pitch pt (to.get_octave () - from.get_octave (), - to.get_notename () - from.get_notename (), + to.get_notename () - from.get_notename (), - to.get_alteration () - from.get_alteration ()); + to.get_alteration () - from.get_alteration ()); return pt.transposed (Pitch (0, 0, sound - pt.tone_pitch ())); } @@ -147,14 +148,15 @@ pitch_interval (Pitch const &from, Pitch const &to) /* FIXME Merge with *pitch->text* funcs in chord-name.scm */ char const *accname[] = {"eses", "eseh", "es", "eh", "", - "ih", "is", "isih", "isis"}; + "ih", "is", "isih", "isis" + }; string Pitch::to_string () const { int n = (notename_ + 2) % scale_->step_count (); string s = ::to_string (char (n + 'a')); - Rational qtones = alteration_ * Rational (4,1); + Rational qtones = alteration_ * Rational (4, 1); int qt = int (rint (Real (qtones))); s += string (accname[qt + 4]); @@ -162,13 +164,13 @@ Pitch::to_string () const { int o = octave_ + 1; while (o--) - s += "'"; + s += "'"; } else if (octave_ < 0) { int o = (-octave_) - 1; while (o--) - s += ::to_string (','); + s += ::to_string (','); } return s; @@ -221,7 +223,7 @@ IMPLEMENT_TYPE_P (Pitch, "ly:pitch?"); SCM Pitch::mark_smob (SCM x) { - Pitch *p = (Pitch*) SCM_CELL_WORD_1 (x); + Pitch *p = (Pitch *) SCM_CELL_WORD_1 (x); return p->scale_->self_scm (); } @@ -243,8 +245,8 @@ Pitch::equal_p (SCM a, SCM b) Pitch *q = (Pitch *) SCM_CELL_WORD_1 (b); bool eq = p->notename_ == q->notename_ - && p->octave_ == q->octave_ - && p->alteration_ == q->alteration_; + && p->octave_ == q->octave_ + && p->alteration_ == q->alteration_; return eq ? SCM_BOOL_T : SCM_BOOL_F; } diff --git a/lily/pitched-trill-engraver.cc b/lily/pitched-trill-engraver.cc index 6960d3e2dd..ef49b217d1 100644 --- a/lily/pitched-trill-engraver.cc +++ b/lily/pitched-trill-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,7 +46,7 @@ private: Item *trill_group_; Item *trill_accidental_; - vector heads_; + vector heads_; void make_trill (Stream_event *); }; @@ -89,24 +89,24 @@ Pitched_trill_engraver::make_trill (Stream_event *ev) SCM keysig = get_property ("localKeySignature"); SCM key = scm_cons (scm_from_int (p->get_octave ()), - scm_from_int (p->get_notename ())); + scm_from_int (p->get_notename ())); - int bn = measure_number (context()); + int bn = measure_number (context ()); SCM handle = scm_assoc (key, keysig); if (handle != SCM_BOOL_F) { bool same_bar = (bn == robust_scm2int (scm_caddr (handle), 0)); bool same_alt - = (p->get_alteration () == robust_scm2rational (scm_cadr (handle), 0)); + = (p->get_alteration () == robust_scm2rational (scm_cadr (handle), 0)); if (!same_bar || (same_bar && !same_alt)) - handle = SCM_BOOL_F; + handle = SCM_BOOL_F; } bool print_acc = (handle == SCM_BOOL_F) || p->get_alteration () == Rational (0) - || (ev->get_property ("force-accidental") == SCM_BOOL_T); + || (ev->get_property ("force-accidental") == SCM_BOOL_T); if (trill_head_) { @@ -120,8 +120,8 @@ Pitched_trill_engraver::make_trill (Stream_event *ev) int c0 = scm_is_number (c0scm) ? scm_to_int (c0scm) : 0; trill_head_->set_property ("staff-position", - scm_from_int (unsmob_pitch (scm_pitch)->steps () - + c0)); + scm_from_int (unsmob_pitch (scm_pitch)->steps () + + c0)); trill_group_ = make_item ("TrillPitchGroup", ev->self_scm ()); trill_group_->set_parent (trill_head_, Y_AXIS); @@ -135,7 +135,7 @@ Pitched_trill_engraver::make_trill (Stream_event *ev) // fixme: naming -> alterations trill_accidental_->set_property ("alteration", ly_rational2scm (p->get_alteration ())); Side_position_interface::add_support (trill_accidental_, trill_head_); - + trill_head_->set_object ("accidental-grob", trill_accidental_->self_scm ()); trill_accidental_->set_parent (trill_head_, Y_AXIS); Axis_group_interface::add_element (trill_group_, trill_accidental_); @@ -155,7 +155,6 @@ Pitched_trill_engraver::stop_translation_timestep () trill_accidental_ = 0; } - #include "translator.icc" ADD_ACKNOWLEDGER (Pitched_trill_engraver, note_head); @@ -163,17 +162,17 @@ ADD_ACKNOWLEDGER (Pitched_trill_engraver, dots); ADD_ACKNOWLEDGER (Pitched_trill_engraver, trill_spanner); ADD_TRANSLATOR (Pitched_trill_engraver, - /* doc */ - "Print the bracketed note head after a note head with trill.", + /* doc */ + "Print the bracketed note head after a note head with trill.", - /* create */ - "TrillPitchHead " - "TrillPitchAccidental " - "TrillPitchGroup ", + /* create */ + "TrillPitchHead " + "TrillPitchAccidental " + "TrillPitchGroup ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/pointer-group-interface-scheme.cc b/lily/pointer-group-interface-scheme.cc index 53fe7b2097..0c786f4488 100644 --- a/lily/pointer-group-interface-scheme.cc +++ b/lily/pointer-group-interface-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Han-Wen Nienhuys + Copyright (C) 2010--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,16 +21,16 @@ #include "grob.hh" LY_DEFINE (ly_pointer_group_interface__add_grob, "ly:pointer-group-interface::add-grob", - 3, 0, 0, (SCM grob, SCM sym, SCM grob_element), - "Add @var{grob-element} to @var{grob}'s @var{sym} grob array.") + 3, 0, 0, (SCM grob, SCM sym, SCM grob_element), + "Add @var{grob-element} to @var{grob}'s @var{sym} grob array.") { LY_ASSERT_TYPE (unsmob_grob, grob, 1); LY_ASSERT_TYPE (ly_is_symbol, sym, 2); LY_ASSERT_TYPE (unsmob_grob, grob_element, 3); Pointer_group_interface::add_grob (unsmob_grob (grob), - sym, - unsmob_grob (grob_element)); + sym, + unsmob_grob (grob_element)); return SCM_UNSPECIFIED; } diff --git a/lily/pointer-group-interface.cc b/lily/pointer-group-interface.cc index 78c4166d73..045563d457 100644 --- a/lily/pointer-group-interface.cc +++ b/lily/pointer-group-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -57,7 +57,7 @@ Pointer_group_interface::get_grob_array (Grob *me, SCM sym) } Grob * -Pointer_group_interface::find_grob (Grob *me, SCM sym, bool (*pred) (Grob*)) +Pointer_group_interface::find_grob (Grob *me, SCM sym, bool (*pred) (Grob *)) { Grob_array *arr = get_grob_array (me, sym); @@ -83,28 +83,28 @@ Pointer_group_interface::add_unordered_grob (Grob *me, SCM sym, Grob *p) arr->set_ordered (false); } -static vector empty_array; +static vector empty_array; -vector const & +vector const & ly_scm2link_array (SCM x) { Grob_array *arr = unsmob_grob_array (x); return arr ? arr->array () : empty_array; } -vector const & +vector const & internal_extract_grob_array (Grob const *elt, SCM symbol) { return elt - ? ly_scm2link_array (elt->internal_get_object (symbol)) - : empty_array; + ? ly_scm2link_array (elt->internal_get_object (symbol)) + : empty_array; } -vector +vector internal_extract_item_array (Grob const *elt, SCM symbol) { Grob_array *arr = unsmob_grob_array (elt->internal_get_object (symbol)); - vector items; + vector items; for (vsize i = 0; arr && i < arr->size (); i++) items.push_back (arr->item (i)); diff --git a/lily/prob-scheme.cc b/lily/prob-scheme.cc index 57881112d4..30704f5fc6 100644 --- a/lily/prob-scheme.cc +++ b/lily/prob-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,8 +20,8 @@ #include "prob.hh" LY_DEFINE (ly_prob_set_property_x, "ly:prob-set-property!", - 2, 1, 0, (SCM obj, SCM sym, SCM value), - "Set property @var{sym} of @var{obj} to @var{value}.") + 2, 1, 0, (SCM obj, SCM sym, SCM value), + "Set property @var{sym} of @var{obj} to @var{value}.") { LY_ASSERT_SMOB (Prob, obj, 1); Prob *ps = unsmob_prob (obj); @@ -35,17 +35,17 @@ LY_DEFINE (ly_prob_set_property_x, "ly:prob-set-property!", Hmm, this is not orthogonal. */ LY_DEFINE (ly_prob_property_p, "ly:prob-property?", - 2, 1, 0, (SCM obj, SCM sym), - "Is boolean prop @var{sym} of @var{sym} set?") + 2, 1, 0, (SCM obj, SCM sym), + "Is boolean prop @var{sym} of @var{sym} set?") { return scm_equal_p (SCM_BOOL_T, ly_prob_property (obj, sym, SCM_BOOL_F)); } LY_DEFINE (ly_prob_property, "ly:prob-property", - 2, 1, 0, (SCM prob, SCM sym, SCM val), - "Return the value for property @var{sym} of Prob object" - " @var{prob}. If no value is found, return @var{val} or" - " @code{'()} if @var{val} is not specified.") + 2, 1, 0, (SCM prob, SCM sym, SCM val), + "Return the value for property @var{sym} of Prob object" + " @var{prob}. If no value is found, return @var{val} or" + " @code{'()} if @var{val} is not specified.") { LY_ASSERT_SMOB (Prob, prob, 1); Prob *ps = unsmob_prob (prob); @@ -62,18 +62,18 @@ LY_DEFINE (ly_prob_property, "ly:prob-property", } LY_DEFINE (ly_prob_type_p, "ly:prob-type?", - 2, 0, 0, - (SCM obj, SCM type), - "Is @var{obj} the specified prob-type?") + 2, 0, 0, + (SCM obj, SCM type), + "Is @var{obj} the specified prob-type?") { - Prob*prob = unsmob_prob (obj); + Prob *prob = unsmob_prob (obj); return scm_from_bool (prob && prob->type () == type); } LY_DEFINE (ly_make_prob, "ly:make-prob", - 2, 0, 1, - (SCM type, SCM init, SCM rest), - "Create a @code{Prob} object.") + 2, 0, 1, + (SCM type, SCM init, SCM rest), + "Create a @code{Prob} object.") { Prob *pr = new Prob (type, init); @@ -85,15 +85,14 @@ LY_DEFINE (ly_make_prob, "ly:make-prob", pr->set_property (sym, val); } - + return pr->unprotect (); } - LY_DEFINE (ly_prob_mutable_properties, "ly:prob-mutable-properties", - 1, 0, 0, - (SCM prob), - "Retrieve an alist of mutable properties.") + 1, 0, 0, + (SCM prob), + "Retrieve an alist of mutable properties.") { LY_ASSERT_SMOB (Prob, prob, 1); Prob *ps = unsmob_prob (prob); @@ -101,9 +100,9 @@ LY_DEFINE (ly_prob_mutable_properties, "ly:prob-mutable-properties", } LY_DEFINE (ly_prob_immutable_properties, "ly:prob-immutable-properties", - 1, 0, 0, - (SCM prob), - "Retrieve an alist of immutable properties.") + 1, 0, 0, + (SCM prob), + "Retrieve an alist of immutable properties.") { LY_ASSERT_SMOB (Prob, prob, 1); Prob *ps = unsmob_prob (prob); diff --git a/lily/prob.cc b/lily/prob.cc index 233c5b6d5f..367d1616a7 100644 --- a/lily/prob.cc +++ b/lily/prob.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Jan Nieuwenhuizen + Copyright (C) 2004--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,22 +58,21 @@ Prob::equal_p (SCM sa, SCM sb) SCM bprop = props[1][i]; for (; - scm_is_pair (aprop) && scm_is_pair (bprop); - aprop = scm_cdr (aprop), bprop = scm_cdr (bprop)) - { - SCM aval = scm_cdar (aprop); - SCM bval = scm_cdar (bprop); - if (scm_caar (aprop) != scm_caar (bprop) || - ( - !(unsmob_input (aval) && unsmob_input (bval)) - && - !to_boolean (scm_equal_p (aval, bval)))) - return SCM_BOOL_F; - } + scm_is_pair (aprop) && scm_is_pair (bprop); + aprop = scm_cdr (aprop), bprop = scm_cdr (bprop)) + { + SCM aval = scm_cdar (aprop); + SCM bval = scm_cdar (bprop); + if (scm_caar (aprop) != scm_caar (bprop) + || (!(unsmob_input (aval) && unsmob_input (bval)) + && + !to_boolean (scm_equal_p (aval, bval)))) + return SCM_BOOL_F; + } /* is one list shorter? */ if (aprop != SCM_EOL || bprop != SCM_EOL) - return SCM_BOOL_F; + return SCM_BOOL_F; } return SCM_BOOL_T; @@ -88,7 +87,6 @@ Prob::Prob (SCM type, SCM immutable_init) smobify_self (); } - Prob::~Prob () { } @@ -107,7 +105,6 @@ Prob::Prob (Prob const &src) mutable_property_alist_ = src.copy_mutable_properties (); } - SCM Prob::copy_mutable_properties () const { @@ -122,7 +119,7 @@ Prob::derived_mark () const SCM Prob::mark_smob (SCM smob) { - ASSERT_LIVE_IS_ALLOWED (); + ASSERT_LIVE_IS_ALLOWED (smob); Prob *system = (Prob *) SCM_CELL_WORD_1 (smob); scm_gc_mark (system->mutable_property_alist_); @@ -132,7 +129,7 @@ Prob::mark_smob (SCM smob) } int -Prob::print_smob (SCM smob, SCM port, scm_print_state*) +Prob::print_smob (SCM smob, SCM port, scm_print_state *) { Prob *p = (Prob *) SCM_CELL_WORD_1 (smob); scm_puts ("#<", port); @@ -147,8 +144,6 @@ Prob::print_smob (SCM smob, SCM port, scm_print_state*) return 1; } - - SCM Prob::internal_get_property (SCM sym) const { @@ -170,7 +165,7 @@ Prob::internal_get_property (SCM sym) const /* We don't (yet) instrument probs */ void -Prob::instrumented_set_property (SCM sym, SCM val, const char*, int, const char*) +Prob::instrumented_set_property (SCM sym, SCM val, const char *, int, const char *) { internal_set_property (sym, val); } diff --git a/lily/profile.cc b/lily/profile.cc index 4a1c0b08f9..d621564e47 100644 --- a/lily/profile.cc +++ b/lily/profile.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,24 +26,23 @@ SCM grob_property_lookup_table; SCM prob_property_lookup_table; LY_DEFINE (ly_property_lookup_stats, "ly:property-lookup-stats", - 1, 0, 0, (SCM sym), - "Return hash table with a property access corresponding to" - " @var{sym}. Choices are @code{prob}, @code{grob}, and" - " @code{context}.") + 1, 0, 0, (SCM sym), + "Return hash table with a property access corresponding to" + " @var{sym}. Choices are @code{prob}, @code{grob}, and" + " @code{context}.") { if (sym == ly_symbol2scm ("context")) return context_property_lookup_table ? context_property_lookup_table - : scm_c_make_hash_table (1); + : scm_c_make_hash_table (1); if (sym == ly_symbol2scm ("prob")) return prob_property_lookup_table ? prob_property_lookup_table - : scm_c_make_hash_table (1); + : scm_c_make_hash_table (1); if (sym == ly_symbol2scm ("grob")) return grob_property_lookup_table ? grob_property_lookup_table - : scm_c_make_hash_table (1); + : scm_c_make_hash_table (1); return scm_c_make_hash_table (1); } - void note_property_access (SCM *table, SCM sym) { diff --git a/lily/program-option-scheme.cc b/lily/program-option-scheme.cc index 63266566ac..616e99397a 100644 --- a/lily/program-option-scheme.cc +++ b/lily/program-option-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,92 +51,92 @@ bool strict_infinity_checking = false; static SCM option_hash; - void internal_set_option (SCM var, - SCM val) + SCM val) { + string varstr = robust_symbol2string (var, ""); + bool valbool = to_boolean (val); + SCM val_scm_bool = scm_from_bool (valbool); if (0) ; - else if (var == ly_symbol2scm ("profile-property-accesses")) - { - profile_property_accesses = to_boolean (val); - val = scm_from_bool (to_boolean (val)); - } - else if (var == ly_symbol2scm ("point-and-click")) + else if (varstr == "profile-property-accesses") { - point_and_click_global = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + profile_property_accesses = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("protected-scheme-parsing")) + else if (varstr == "protected-scheme-parsing") { - parse_protect_global = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + parse_protect_global = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("check-internal-types")) + else if (varstr == "check-internal-types") { - do_internal_type_checking_global = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + do_internal_type_checking_global = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("debug-gc-assert-parsed-dead")) + else if (varstr == "debug-gc-assert-parsed-dead") { - parsed_objects_should_be_dead = to_boolean (val); - val = scm_from_bool (parsed_objects_should_be_dead); + parsed_objects_should_be_dead = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("safe")) + else if (varstr == "safe") { - be_safe_global = to_boolean (val); - val = scm_from_bool (be_safe_global); + be_safe_global = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("old-relative")) + else if (varstr == "old-relative") { - lily_1_8_relative = to_boolean (val); + lily_1_8_relative = valbool; /* Needs to be reset for each file that uses this option. */ - lily_1_8_compatibility_used = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + lily_1_8_compatibility_used = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("strict-infinity-checking")) + else if (varstr == "strict-infinity-checking") { - strict_infinity_checking = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + strict_infinity_checking = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("debug-skylines")) + else if (varstr == "debug-skylines") { - debug_skylines = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + debug_skylines = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("debug-property-callbacks")) + else if (varstr == "debug-property-callbacks") { - debug_property_callbacks = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + debug_property_callbacks = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("debug-page-breaking-scoring")) + else if (varstr == "debug-page-breaking-scoring") { - debug_page_breaking_scoring = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + debug_page_breaking_scoring = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("datadir")) + else if (varstr == "datadir") { /* ignore input value. */ val = ly_string2scm (lilypond_datadir); } - else if (var == ly_symbol2scm ("relative-includes")) + else if (varstr == "relative-includes") { - relative_includes = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + relative_includes = valbool; + val = val_scm_bool; } - else if (var == ly_symbol2scm ("warning-as-error")) - val = scm_from_bool (to_boolean (val)); - else if (var == ly_symbol2scm ("music-strings-to-paths")) + else if (varstr == "warning-as-error") { - music_strings_to_paths = to_boolean (val); - val = scm_from_bool (to_boolean (val)); + /* warning_as_error is defined in flower/warn.cc */ + warning_as_error = valbool; + val = val_scm_bool; + } + else if (varstr == "music-strings-to-paths") + { + music_strings_to_paths = valbool; + val = val_scm_bool; } scm_hashq_set_x (option_hash, var, val); } - ssize const HELP_INDENT = 30; ssize const INDENT = 2; ssize const SEPARATION = 5; @@ -157,25 +157,25 @@ get_help_string () SCM sym = scm_caar (s); SCM val = scm_cdar (s); string opt_spec = String_convert::char_string (' ', INDENT) - + ly_symbol2string (sym) - + " (" - + ly_scm2string (scm_call_1 (converter, val)) - + ")"; + + ly_symbol2string (sym) + + " (" + + ly_scm2string (scm_call_1 (converter, val)) + + ")"; if (opt_spec.length () + SEPARATION > HELP_INDENT) - opt_spec += "\n" + String_convert::char_string (' ', HELP_INDENT); + opt_spec += "\n" + String_convert::char_string (' ', HELP_INDENT); else - opt_spec += String_convert::char_string (' ', HELP_INDENT - - opt_spec.length ()); + opt_spec += String_convert::char_string (' ', HELP_INDENT + - opt_spec.length ()); SCM opt_help_scm - = scm_object_property (sym, - ly_symbol2scm ("program-option-documentation")); + = scm_object_property (sym, + ly_symbol2scm ("program-option-documentation")); string opt_help = ly_scm2string (opt_help_scm); replace_all (&opt_help, - string ("\n"), - string ("\n") - + String_convert::char_string (' ', HELP_INDENT)); + string ("\n"), + string ("\n") + + String_convert::char_string (' ', HELP_INDENT)); opts.push_back (opt_spec + opt_help + "\n"); } @@ -187,21 +187,20 @@ get_help_string () return help; } - -LY_DEFINE (ly_option_usage, "ly:option-usage", 0, 0, 0, (), - "Print @code{ly:set-option} usage.") +LY_DEFINE (ly_option_usage, "ly:option-usage", 0, 1, 0, (SCM port), + "Print @code{ly:set-option} usage. Optional @var{port} argument" + "for the destination defaults to current output port.") { - string help = get_help_string (); - puts (help.c_str()); + SCM str = scm_from_locale_string (get_help_string ().c_str ()); + scm_write_line (str, port); return SCM_UNSPECIFIED; } - LY_DEFINE (ly_add_option, "ly:add-option", 3, 0, 0, - (SCM sym, SCM val, SCM description), - "Add a program option @var{sym}. @var{val} is the default" - " value and @var{description} is a string description.") + (SCM sym, SCM val, SCM description), + "Add a program option @var{sym}. @var{val} is the default" + " value and @var{description} is a string description.") { if (!option_hash) option_hash = scm_permanent_object (scm_c_make_hash_table (11)); @@ -211,21 +210,20 @@ LY_DEFINE (ly_add_option, "ly:add-option", 3, 0, 0, internal_set_option (sym, val); scm_set_object_property_x (sym, ly_symbol2scm ("program-option-documentation"), - description); + description); return SCM_UNSPECIFIED; } - LY_DEFINE (ly_set_option, "ly:set-option", 1, 1, 0, (SCM var, SCM val), - "Set a program option.") + "Set a program option.") { LY_ASSERT_TYPE (ly_is_symbol, var, 1); if (val == SCM_UNDEFINED) val = SCM_BOOL_T; - string varstr = ly_scm2string (scm_symbol_to_string (var)); + string varstr = robust_symbol2string (var, ""); if (varstr.substr (0, 3) == string ("no-")) { var = ly_symbol2scm (varstr.substr (3, varstr.length () - 3).c_str ()); @@ -240,38 +238,33 @@ LY_DEFINE (ly_set_option, "ly:set-option", 1, 1, 0, (SCM var, SCM val), return SCM_UNSPECIFIED; } - LY_DEFINE (ly_command_line_options, "ly:command-line-options", 0, 0, 0, (), - "The Scheme options specified on command-line with @option{-d}.") + "The Scheme options specified on command-line with @option{-d}.") { return ly_string2scm (init_scheme_variables_global); } - LY_DEFINE (ly_command_line_code, "ly:command-line-code", 0, 0, 0, (), - "The Scheme code specified on command-line with @option{-e}.") + "The Scheme code specified on command-line with @option{-e}.") { return ly_string2scm (init_scheme_code_global); } - -LY_DEFINE (ly_command_line_verbose_p, "ly:command-line-verbose?", 0, 0, 0, (), - "Was @code{be_verbose_global} set?") +LY_DEFINE (ly_verbose_output_p, "ly:verbose-output?", 0, 0, 0, (), + "Was verbose output requested, i.e. loglevel at least @code{DEBUG}?") { - return scm_from_bool (be_verbose_global); + return scm_from_bool (is_loglevel (LOG_DEBUG)); } - LY_DEFINE (ly_all_options, "ly:all-options", - 0, 0, 0, (), - "Get all option settings in an alist.") + 0, 0, 0, (), + "Get all option settings in an alist.") { return ly_hash2alist (option_hash); } - LY_DEFINE (ly_get_option, "ly:get-option", 1, 0, 0, (SCM var), - "Get a global option setting.") + "Get a global option setting.") { LY_ASSERT_TYPE (ly_is_symbol, var, 1); return scm_hashq_ref (option_hash, var, SCM_BOOL_F); diff --git a/lily/program-option.cc b/lily/program-option.cc index 8155025ee4..51d8ca82d8 100644 --- a/lily/program-option.cc +++ b/lily/program-option.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/property-iterator.cc b/lily/property-iterator.cc index 62f316b7f1..af1b38d159 100644 --- a/lily/property-iterator.cc +++ b/lily/property-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -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")); - - Simple_music_iterator::process (m); + 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 (mom); } void @@ -45,35 +58,30 @@ Property_unset_iterator::process (Moment m) { SCM sym = get_music ()->get_property ("symbol"); send_stream_event (get_outlet (), "UnsetProperty", get_music ()->origin (), - ly_symbol2scm ("symbol"), sym); + ly_symbol2scm ("symbol"), sym); 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 @@ -83,7 +91,7 @@ check_grob (Music *mus, SCM sym) if (!g) mus->origin ()->warning (_f ("not a grob name, `%s'", - ly_symbol2string (sym))); + ly_symbol2string (sym))); return g; } @@ -112,15 +120,15 @@ Push_property_iterator::process (Moment m) SCM val = get_music ()->get_property ("grob-value"); if (to_boolean (get_music ()->get_property ("pop-first")) - && !to_boolean (get_music ()->get_property ("once"))) - send_stream_event (get_outlet (), "Revert", get_music ()->origin (), - ly_symbol2scm ("symbol"), sym, - ly_symbol2scm ("property-path"), grob_property_path); - + && !to_boolean (get_music ()->get_property ("once"))) + send_stream_event (get_outlet (), "Revert", get_music ()->origin (), + ly_symbol2scm ("symbol"), sym, + ly_symbol2scm ("property-path"), grob_property_path); + send_stream_event (get_outlet (), "Override", get_music ()->origin (), - ly_symbol2scm ("symbol"), sym, - ly_symbol2scm ("property-path"), grob_property_path, - ly_symbol2scm ("value"), val); + ly_symbol2scm ("symbol"), sym, + ly_symbol2scm ("property-path"), grob_property_path, + ly_symbol2scm ("value"), val); } Simple_music_iterator::process (m); } @@ -138,8 +146,8 @@ Push_property_iterator::once_finalization (SCM ctx, SCM music) SCM grob_property_path = get_property_path (mus); send_stream_event (c, "Revert", mus->origin (), - ly_symbol2scm ("symbol"), sym, - ly_symbol2scm ("property-path"), grob_property_path); + ly_symbol2scm ("symbol"), sym, + ly_symbol2scm ("property-path"), grob_property_path); } return SCM_UNSPECIFIED; } @@ -154,7 +162,7 @@ Push_property_iterator::do_quit () Global_context *tg = get_outlet ()->get_global_context (); tg->add_finalization (scm_list_n (once_finalization_proc, - trans, music, SCM_UNDEFINED)); + trans, music, SCM_UNDEFINED)); } } @@ -168,8 +176,8 @@ Pop_property_iterator::process (Moment m) SCM grob_property_path = get_property_path (get_music ()); send_stream_event (get_outlet (), "Revert", get_music ()->origin (), - ly_symbol2scm ("symbol"), sym, - ly_symbol2scm ("property-path"), grob_property_path); + ly_symbol2scm ("symbol"), sym, + ly_symbol2scm ("property-path"), grob_property_path); } Simple_music_iterator::process (m); } diff --git a/lily/protected-scm.cc b/lily/protected-scm.cc index 4447371a83..147b83fefd 100644 --- a/lily/protected-scm.cc +++ b/lily/protected-scm.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ Protected_scm::Protected_scm (SCM s) Protected_scm::Protected_scm (Protected_scm const &s) { object_ = (SCM_NIMP (s.object_) ? scm_gc_protect_object (s.object_) - : s.object_); + : s.object_); } Protected_scm::~Protected_scm () diff --git a/lily/pure-from-neighbor-engraver.cc b/lily/pure-from-neighbor-engraver.cc new file mode 100644 index 0000000000..1018dc54f6 --- /dev/null +++ b/lily/pure-from-neighbor-engraver.cc @@ -0,0 +1,155 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + + 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 . +*/ + +#include +#include + +#include "grob.hh" +#include "item.hh" +#include "pointer-group-interface.hh" +#include "pure-from-neighbor-interface.hh" +#include "engraver.hh" + +class Pure_from_neighbor_engraver : public Engraver +{ + vector pure_relevants_; + vector need_pure_heights_from_neighbors_; + +public: + TRANSLATOR_DECLARATIONS (Pure_from_neighbor_engraver); +protected: + DECLARE_ACKNOWLEDGER (pure_from_neighbor); + DECLARE_ACKNOWLEDGER (item); + void finalize (); +}; + +Pure_from_neighbor_engraver::Pure_from_neighbor_engraver () +{ +} + +void +Pure_from_neighbor_engraver::acknowledge_item (Grob_info i) +{ + SCM pure_relevant_p = ly_lily_module_constant ("pure-relevant?"); + if (!Pure_from_neighbor_interface::has_interface (i.item ()) + && to_boolean (scm_call_1 (pure_relevant_p, i.item ()->self_scm ()))) + pure_relevants_.push_back (i.item ()); +} + +bool +in_same_column (Grob *g1, Grob *g2) +{ + return (g1->spanned_rank_interval ()[LEFT] + == g2->spanned_rank_interval ()[LEFT]) + && (g1->spanned_rank_interval ()[RIGHT] + == g2->spanned_rank_interval ()[RIGHT]) + && (g1->spanned_rank_interval ()[LEFT] + == g1->spanned_rank_interval ()[RIGHT]); +} + +void +Pure_from_neighbor_engraver::acknowledge_pure_from_neighbor (Grob_info i) +{ + need_pure_heights_from_neighbors_.push_back (i.item ()); +} + +void +Pure_from_neighbor_engraver::finalize () +{ + if (!need_pure_heights_from_neighbors_.size ()) + return; + + vector_sort (need_pure_heights_from_neighbors_, Grob::less); + vector_sort (pure_relevants_, Grob::less); + + /* + first, clump need_pure_heights_from_neighbors into + vectors of grobs that have the same column. + */ + + vsize l = 0; + vector > need_pure_heights_from_neighbors; + do + { + vector temp; + temp.push_back (need_pure_heights_from_neighbors_[l]); + for (; + (l < need_pure_heights_from_neighbors_.size () - 1 + && ((need_pure_heights_from_neighbors_[l] + ->spanned_rank_interval ()[LEFT]) + == (need_pure_heights_from_neighbors_[l + 1] + ->spanned_rank_interval ()[LEFT]))); + l++) + temp.push_back (need_pure_heights_from_neighbors_[l + 1]); + need_pure_heights_from_neighbors.push_back (temp); + l++; + } + while (l < need_pure_heights_from_neighbors_.size ()); + + /* + then, loop through the pure_relevants_ list, adding the items + to the elements of need_pure_heights_from_neighbors_ on either side. + */ + + int pos[2] = { -1, 0}; + for (vsize i = 0; i < pure_relevants_.size (); i++) + { + while (pos[1] < (int) need_pure_heights_from_neighbors.size () + && (pure_relevants_[i]->spanned_rank_interval ()[LEFT] + > (need_pure_heights_from_neighbors[pos[1]][0] + ->spanned_rank_interval ()[LEFT]))) + { + pos[0] = pos[1]; + pos[1]++; + } + for (int j = 0; j < 2; j++) + if (pos[j] >= 0 && pos[j] + < (int) need_pure_heights_from_neighbors.size ()) + for (vsize k = 0; + k < need_pure_heights_from_neighbors[pos[j]].size (); + k++) + if (!in_same_column (need_pure_heights_from_neighbors[pos[j]][k], + pure_relevants_[i])) + Pointer_group_interface::add_grob + (need_pure_heights_from_neighbors[pos[j]][k], + ly_symbol2scm ("neighbors"), + pure_relevants_[i]); + } + + need_pure_heights_from_neighbors_.clear (); + pure_relevants_.clear (); +} + +#include "translator.icc" + +ADD_ACKNOWLEDGER (Pure_from_neighbor_engraver, item); +ADD_ACKNOWLEDGER (Pure_from_neighbor_engraver, pure_from_neighbor); +ADD_TRANSLATOR (Pure_from_neighbor_engraver, + /* doc */ + "Coordinates items that get their pure heights from their neighbors.", + + /* create */ + "", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/pure-from-neighbor-interface.cc b/lily/pure-from-neighbor-interface.cc new file mode 100644 index 0000000000..ce202bcf82 --- /dev/null +++ b/lily/pure-from-neighbor-interface.cc @@ -0,0 +1,64 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + + 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 . +*/ + +#include "axis-group-interface.hh" +#include "grob.hh" +#include "grob-array.hh" +#include "moment.hh" +#include "paper-column.hh" +#include "pointer-group-interface.hh" +#include "pure-from-neighbor-interface.hh" +#include "spanner.hh" +#include "system.hh" + +MAKE_SCHEME_CALLBACK (Pure_from_neighbor_interface, calc_pure_relevant_grobs, 1); +SCM +Pure_from_neighbor_interface::calc_pure_relevant_grobs (SCM smob) +{ + Grob *me = unsmob_grob (smob); + extract_grob_set ((me->original () && me->original ()->is_live () + ? me->original () + : me), + "neighbors", + elts); + + vector new_elts; + new_elts.insert (new_elts.end (), elts.begin (), elts.end ()); + + SCM neighbors_scm = me->get_object ("neighbors"); + if (Grob_array::unsmob (neighbors_scm)) + { + vector &arr + = unsmob_grob_array (neighbors_scm)->array_reference (); + arr = new_elts; + } + + return Axis_group_interface::internal_calc_pure_relevant_grobs (me, "neighbors"); +} + +ADD_INTERFACE (Pure_from_neighbor_interface, + "A collection of routines to allow for objects' pure" + "heights and heights to be calculated based on the" + "heights of the objects' neighbors.", + + /* properties */ + "neighbors " + "pure-relevant-grobs " + "pure-Y-common " + ); diff --git a/lily/quote-iterator.cc b/lily/quote-iterator.cc index 749bc13407..69c580f5d5 100644 --- a/lily/quote-iterator.cc +++ b/lily/quote-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ public: SCM event_vector_; int event_idx_; int end_idx_; - + SCM transposed_musics_; DECLARE_SCHEME_CALLBACK (constructor, ()); @@ -77,7 +77,7 @@ Quote_iterator::accept_music_type (Stream_event *ev, bool is_cue) const for (; scm_is_pair (accept); accept = scm_cdr (accept)) { if (ev->internal_in_event_class (scm_car (accept))) - return true; + return true; } return false; } @@ -111,9 +111,9 @@ binsearch_scm_vector (SCM vec, SCM key, bool (*is_less) (SCM a, SCM b)) SCM when = scm_caar (scm_c_vector_ref (vec, cmp)); bool result = (*is_less) (key, when); if (result) - hi = cmp; + hi = cmp; else - lo = cmp; + lo = cmp; } while (hi - lo > 1); @@ -124,7 +124,7 @@ void Quote_iterator::construct_children () { Music_wrapper_iterator::construct_children (); - + SCM name = get_music ()->get_property ("quoted-context-type"); SCM id = get_music ()->get_property ("quoted-context-id"); @@ -132,7 +132,7 @@ Quote_iterator::construct_children () && scm_is_symbol (name)) { Context *cue_context = get_outlet ()->find_create_context (name, - ly_scm2string (id), SCM_EOL); + ly_scm2string (id), SCM_EOL); quote_outlet_.set_context (cue_context); } else @@ -160,13 +160,13 @@ bool Quote_iterator::quote_ok () const { return (event_idx_ >= 0 - && scm_is_vector (event_vector_) - && event_idx_ <= end_idx_ + && scm_is_vector (event_vector_) + && event_idx_ <= end_idx_ - /* - Don't quote the grace notes leading to an unquoted note. - */ - && vector_moment (event_idx_).main_part_ < stop_moment_.main_part_); + /* + Don't quote the grace notes leading to an unquoted note. + */ + && vector_moment (event_idx_).main_part_ < stop_moment_.main_part_); } Moment @@ -208,14 +208,14 @@ Quote_iterator::process (Moment m) if (event_idx_ < 0) { event_idx_ = binsearch_scm_vector (event_vector_, - get_outlet ()->now_mom ().smobbed_copy (), - &moment_less); + get_outlet ()->now_mom ().smobbed_copy (), + &moment_less); start_moment_ = get_outlet ()->now_mom () - music_start_mom (); stop_moment_ = start_moment_ + get_music ()->get_length (); end_idx_ = binsearch_scm_vector (event_vector_, - stop_moment_.smobbed_copy (), - &moment_less); + stop_moment_.smobbed_copy (), + &moment_less); } m += start_moment_; @@ -223,10 +223,10 @@ Quote_iterator::process (Moment m) { Moment em = vector_moment (event_idx_); if (em > m) - return; + return; if (em == m) - break; + break; event_idx_++; } @@ -237,41 +237,42 @@ Quote_iterator::process (Moment m) Pitch *quote_pitch = unsmob_pitch (scm_cdar (entry)); /* - The pitch that sounds like central C + The pitch that sounds like central C */ Pitch *me_pitch = unsmob_pitch (get_music ()->get_property ("quoted-transposition")); if (!me_pitch) - me_pitch = unsmob_pitch (get_outlet ()->get_property ("instrumentTransposition")); + me_pitch = unsmob_pitch (get_outlet ()->get_property ("instrumentTransposition")); SCM cid = get_music ()->get_property ("quoted-context-id"); bool is_cue = scm_is_string (cid) && (ly_scm2string (cid) == "cue"); for (SCM s = scm_cdr (entry); scm_is_pair (s); s = scm_cdr (s)) - { - SCM ev_acc = scm_car (s); - - Stream_event *ev = unsmob_stream_event (scm_car (ev_acc)); - if (!ev) - programming_error ("no music found in quote"); - else if (accept_music_type (ev, is_cue)) - { - /* create a transposed copy if necessary */ - if (quote_pitch || me_pitch) - { - Pitch qp, mp; - if (quote_pitch) - qp = *quote_pitch; - if (me_pitch) - mp = *me_pitch; - - Pitch diff = pitch_interval (qp, mp); - ev = ev->clone (); - - transpose_mutable (ev->get_property_alist (true), diff); - transposed_musics_ = scm_cons (ev->unprotect (), transposed_musics_); - } - quote_outlet_.get_outlet ()->event_source ()->broadcast (ev); - } - } + { + SCM ev_acc = scm_car (s); + + Stream_event *ev = unsmob_stream_event (scm_car (ev_acc)); + if (!ev) + programming_error ("no music found in quote"); + else if (accept_music_type (ev, is_cue)) + { + /* create a transposed copy if necessary */ + if (quote_pitch || me_pitch) + { + Pitch qp, mp; + if (quote_pitch) + qp = *quote_pitch; + if (me_pitch) + mp = *me_pitch; + + Pitch diff = pitch_interval (qp, mp); + ev = ev->clone (); + ev->make_transposable (); + + transpose_mutable (ev->get_property_alist (true), diff); + transposed_musics_ = scm_cons (ev->unprotect (), transposed_musics_); + } + quote_outlet_.get_context ()->event_source ()->broadcast (ev); + } + } event_idx_++; } diff --git a/lily/relative-octave-check.cc b/lily/relative-octave-check.cc index bb597f97cb..91360f52b1 100644 --- a/lily/relative-octave-check.cc +++ b/lily/relative-octave-check.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ public: }; MAKE_SCHEME_CALLBACK (Relative_octave_check, relative_callback, 2) - SCM +SCM Relative_octave_check::relative_callback (SCM music, SCM last_pitch) { Pitch p = *unsmob_pitch (last_pitch); @@ -39,23 +39,23 @@ Relative_octave_check::relative_callback (SCM music, SCM last_pitch) if (check_p) { Pitch no_octave (-1, - check_p->get_notename (), - check_p->get_alteration ()); + check_p->get_notename (), + check_p->get_alteration ()); Pitch result = no_octave.to_relative_octave (p); if (result != *check_p) - { - string s = _ ("Failed octave check, got: "); - s += result.to_string (); + { + string s = _ ("Failed octave check, got: "); + s += result.to_string (); - m->origin ()->warning (s); + m->origin ()->warning (s); - delta_oct = check_p->get_octave () - result.get_octave (); - } + delta_oct = check_p->get_octave () - result.get_octave (); + } } return Pitch (p.get_octave () + delta_oct, - p.get_notename (), - p.get_alteration ()).smobbed_copy (); + p.get_notename (), + p.get_alteration ()).smobbed_copy (); } diff --git a/lily/relative-octave-music.cc b/lily/relative-octave-music.cc index 6c23ac3ed7..94f566357c 100644 --- a/lily/relative-octave-music.cc +++ b/lily/relative-octave-music.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,15 +29,15 @@ public: }; MAKE_SCHEME_CALLBACK (Relative_octave_music, no_relative_callback, 2) - SCM +SCM Relative_octave_music::no_relative_callback (SCM /* music */, - SCM pitch) + SCM pitch) { return pitch; } MAKE_SCHEME_CALLBACK (Relative_octave_music, relative_callback, 2) - SCM +SCM Relative_octave_music::relative_callback (SCM music, SCM pitch) { Music *me = unsmob_music (music); @@ -45,11 +45,11 @@ Relative_octave_music::relative_callback (SCM music, SCM pitch) { lily_1_8_compatibility_used = true; /* last-pitch should be junked some time, when - we ditch 1.8 compat too. + we ditch 1.8 compat too. - When you do, B should start where A left off. + When you do, B should start where A left off. - \relative { A \relative { ...} B } */ + \relative { A \relative { ...} B } */ SCM last_pitch = me->get_property ("last-pitch"); Pitch *ptr = unsmob_pitch (last_pitch); return (ptr) ? last_pitch : pitch; diff --git a/lily/relocate.cc b/lily/relocate.cc index 628187363b..0d600820ae 100644 --- a/lily/relocate.cc +++ b/lily/relocate.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,6 @@ #include "config.hh" - /* TODO: autoconf support */ #include @@ -50,18 +49,17 @@ sane_putenv (char const *key, string value, bool overwrite) string combine = string (key) + "=" + value; char *s = strdup (combine.c_str ()); - if (be_verbose_global) - progress_indication (_f ("Setting %s to %s" , key, value.c_str ()) - + "\n"); - - int retval = putenv (s); + debug_output (_f ("Setting %s to %s", key, value.c_str ()) + + "\n"); + + int retval = putenv (s); /* - unfortunately, we can't portably free S here, - due to various bugs in glibc prior to 2.1.1 - */ + unfortunately, we can't portably free S here, + due to various bugs in glibc prior to 2.1.1 + */ return retval; } - + return -1; } @@ -70,7 +68,8 @@ set_env_file (char const *key, string value, bool overwrite = false) { if (is_file (value)) return sane_putenv (key, value, overwrite); - else if (be_verbose_global) + else if (is_loglevel (LOG_DEBUG)) + // this warning should only be printed in debug mode! warning (_f ("no such file: %s for %s", value, key)); return -1; } @@ -80,7 +79,8 @@ set_env_dir (char const *key, string value) { if (is_dir (value)) return sane_putenv (key, value, false); - else if (be_verbose_global) + else if (is_loglevel (LOG_DEBUG)) + // this warning should only be printed in debug mode! warning (_f ("no such directory: %s for %s", value, key)); return -1; } @@ -90,15 +90,15 @@ prepend_env_path (char const *key, string value) { if (is_dir (value)) { - if (be_verbose_global) - progress_indication (_f ("%s=%s (prepend)\n", key, value.c_str ())); + debug_output (_f ("%s=%s (prepend)\n", key, value.c_str ()), false); if (char const *cur = getenv (key)) - value += to_string (PATHSEP) + cur; + value += to_string (PATHSEP) + cur; return sane_putenv (key, value.c_str (), true); } - else if (be_verbose_global) + else if (is_loglevel (LOG_DEBUG)) + // this warning should only be printed in debug mode warning (_f ("no such directory: %s for %s", value, key)); return -1; } @@ -122,8 +122,8 @@ prefix_relocation (string prefix) lilypond_datadir = package_datadir + "/current"; else warning (_f ("not relocating, no %s/ or current/ found under %s", - TOPLEVEL_VERSION, package_datadir.c_str ())); - + TOPLEVEL_VERSION, package_datadir.c_str ())); + #if HAVE_GETTEXT if (is_dir (localedir)) bindtextdomain ("lilypond", localedir.c_str ()); @@ -131,10 +131,9 @@ prefix_relocation (string prefix) prepend_env_path ("PATH", bindir); - if (be_verbose_global) - warning (_f ("Relocation: compile datadir=%s, new datadir=%s", - old_lilypond_datadir.c_str (), - lilypond_datadir.c_str ())); + debug_output (_f ("Relocation: compile datadir=%s, new datadir=%s", + old_lilypond_datadir.c_str (), + lilypond_datadir.c_str ())); } /* @@ -144,15 +143,14 @@ prefix_relocation (string prefix) static void framework_relocation (string prefix) { - if (be_verbose_global) - warning (_f ("Relocation: framework_prefix=%s", prefix)); + debug_output (_f ("Relocation: framework_prefix=%s", prefix)); sane_putenv ("INSTALLER_PREFIX", prefix, true); - + read_relocation_dir (prefix + "/etc/relocate/"); string bindir = prefix + "/bin"; - + prepend_env_path ("PATH", bindir); } @@ -163,77 +161,74 @@ void setup_paths (char const *argv0_ptr) { File_name argv0_filename (argv0_ptr); - + if (relocate_binary) { string prefix_directory; if (getenv ("LILYPOND_RELOCATE_PREFIX")) - { - prefix_directory = getenv ("LILYPOND_RELOCATE_PREFIX"); + { + prefix_directory = getenv ("LILYPOND_RELOCATE_PREFIX"); #ifdef __MINGW32__ - /* Normalize file name. */ - prefix_directory = File_name (prefix_directory).to_string (); + /* Normalize file name. */ + prefix_directory = File_name (prefix_directory).to_string (); #endif /* __MINGW32__ */ - - prefix_relocation (prefix_directory); - string bindir = prefix_directory + "/bin"; - framework_relocation (bindir); - } + + prefix_relocation (prefix_directory); + string bindir = prefix_directory + "/bin"; + framework_relocation (bindir); + } else if (relocate_binary) - { - string argv0_abs; - if (argv0_filename.is_absolute ()) - { - argv0_abs = argv0_filename.to_string (); - if (be_verbose_global) - warning (_f ("Relocation: is absolute: argv0=%s", argv0_ptr)); - } - else if (argv0_filename.dir_.length ()) - { - argv0_abs = get_working_directory () - + "/" + string (argv0_filename.to_string ()); - if (be_verbose_global) - warning (_f ("Relocation: from cwd: argv0=%s", argv0_ptr)); - } - else - { - /* Find absolute ARGV0 name, using PATH. */ - File_path path; - path.parse_path (getenv ("PATH")); + { + string argv0_abs; + if (argv0_filename.is_absolute ()) + { + argv0_abs = argv0_filename.to_string (); + debug_output (_f ("Relocation: is absolute: argv0=%s\n", argv0_ptr)); + } + else if (argv0_filename.dir_.length ()) + { + argv0_abs = get_working_directory () + + "/" + string (argv0_filename.to_string ()); + debug_output (_f ("Relocation: from cwd: argv0=%s\n", argv0_ptr)); + } + else + { + /* Find absolute ARGV0 name, using PATH. */ + File_path path; + path.parse_path (getenv ("PATH")); #ifndef __MINGW32__ - argv0_abs = path.find (argv0_filename.to_string ()); + argv0_abs = path.find (argv0_filename.to_string ()); #else /* __MINGW32__ */ - path.prepend (get_working_directory ()); - char const *ext[] = {"exe", "", 0 }; - argv0_abs = path.find (argv0_filename.to_string (), ext); + path.prepend (get_working_directory ()); + char const *ext[] = {"exe", "", 0 }; + argv0_abs = path.find (argv0_filename.to_string (), ext); #endif /* __MINGW32__ */ - if (be_verbose_global) - warning (_f ("Relocation: from PATH=%s\nargv0=%s", - path.to_string ().c_str (), argv0_ptr)); - - if (argv0_abs.empty ()) - programming_error ("cannot find absolute argv0"); - } - - string bindir = dir_name (argv0_abs); - string argv0_prefix = dir_name (bindir); - string compile_prefix = dir_name (dir_name (dir_name (lilypond_datadir))); - if (argv0_prefix != compile_prefix) - { - prefix_relocation (argv0_prefix); - prefix_directory = argv0_prefix; - } - if (argv0_prefix != compile_prefix || string (FRAMEWORKDIR) != "..") - { - framework_relocation (bindir + "/" + FRAMEWORKDIR); - prefix_directory = bindir + "/" + FRAMEWORKDIR; - } - } + debug_output (_f ("Relocation: from PATH=%s\nargv0=%s", + path.to_string ().c_str (), argv0_ptr), true); + + if (argv0_abs.empty ()) + programming_error ("cannot find absolute argv0"); + } + + string bindir = dir_name (argv0_abs); + string argv0_prefix = dir_name (bindir); + string compile_prefix = dir_name (dir_name (dir_name (lilypond_datadir))); + if (argv0_prefix != compile_prefix) + { + prefix_relocation (argv0_prefix); + prefix_directory = argv0_prefix; + } + if (argv0_prefix != compile_prefix || string (FRAMEWORKDIR) != "..") + { + framework_relocation (bindir + "/" + FRAMEWORKDIR); + prefix_directory = bindir + "/" + FRAMEWORKDIR; + } + } lilypond_datadir = prefix_directory - + "/share/lilypond/" TOPLEVEL_VERSION; + + "/share/lilypond/" TOPLEVEL_VERSION; } if (getenv ("LILYPONDPREFIX")) @@ -253,26 +248,25 @@ setup_paths (char const *argv0_ptr) && is_dir (build_datadir_current.c_str ())) lilypond_datadir = build_datadir_current; + lilypond_datadir = File_name (lilypond_datadir).canonicalized ().to_string (); - lilypond_datadir = File_name (lilypond_datadir).canonicalized().to_string(); - global_path.append (""); /* Adding mf/out make lilypond unchanged source directory, when setting LILYPONDPREFIX to lilypond-x.y.z */ char const *suffixes[] = {"ly", "ps", "scm", 0 }; - + vector dirs; for (char const **s = suffixes; *s; s++) { string path = lilypond_datadir + to_string ('/') + string (*s); dirs.push_back (path); } - + dirs.push_back (lilypond_datadir + "/fonts/otf/"); dirs.push_back (lilypond_datadir + "/fonts/type1/"); dirs.push_back (lilypond_datadir + "/fonts/svg/"); - + for (vsize i = 0; i < dirs.size (); i++) global_path.prepend (dirs[i]); } @@ -288,57 +282,57 @@ expand_environment_variables (string orig) while (ptr < start_ptr + len) { char const *dollar = strchr (ptr, '$'); - + if (dollar != NULL) - { - char const *start_var = dollar + 1; - char const *end_var = start_var; - char const *start_next = end_var; - - out += string (ptr, dollar - ptr); - ptr = dollar; - - if (*start_var == '{') - { - start_var ++; - - end_var = strchr (start_var, '}'); - - if (end_var == NULL) - { - end_var = start_var + len; - start_next = end_var; - } - else - { - start_next = end_var + 1; - } - } - else - { - /* - Hmm. what to do for $1 , $~ etc.? - */ - do - { - end_var ++; - } - while (isalnum (*end_var) || *end_var == '_'); - start_next = end_var; - } - - if (start_var < end_var) - { - string var_name (start_var, end_var - start_var); - char const *value = getenv (var_name.c_str ()); - if (value != NULL) - out += string (value); - - ptr = start_next; - } - } + { + char const *start_var = dollar + 1; + char const *end_var = start_var; + char const *start_next = end_var; + + out += string (ptr, dollar - ptr); + ptr = dollar; + + if (*start_var == '{') + { + start_var++; + + end_var = strchr (start_var, '}'); + + if (end_var == NULL) + { + end_var = start_var + len; + start_next = end_var; + } + else + { + start_next = end_var + 1; + } + } + else + { + /* + Hmm. what to do for $1 , $~ etc.? + */ + do + { + end_var++; + } + while (isalnum (*end_var) || *end_var == '_'); + start_next = end_var; + } + + if (start_var < end_var) + { + string var_name (start_var, end_var - start_var); + char const *value = getenv (var_name.c_str ()); + if (value != NULL) + out += string (value); + + ptr = start_next; + } + } else - break; + break; } @@ -352,10 +346,10 @@ static string read_line (FILE *f) { string out; - + int c = 0; while ((c = fgetc (f)) != EOF && c != '\n') - out += char(c); + out += char (c); return out; } @@ -363,10 +357,7 @@ read_line (FILE *f) void read_relocation_file (string filename) { - if (be_verbose_global) - progress_indication (_f ("Relocation file: %s", filename.c_str ()) - + "\n"); - + debug_output (_f ("Relocation file: %s", filename.c_str ()) + "\n"); char const *cname = filename.c_str (); FILE *f = fopen (cname, "r"); if (!f) @@ -377,13 +368,13 @@ read_relocation_file (string filename) string line = read_line (f); size_t idx = line.find (' '); if (idx == NPOS) - continue; - + continue; + string command = line.substr (0, idx); line = line.substr (idx + 1); - + if (idx == NPOS) - continue; + continue; idx = line.find ('='); string variable = line.substr (0, idx); @@ -392,15 +383,15 @@ read_relocation_file (string filename) value = expand_environment_variables (value); if (command == "set") - sane_putenv (variable.c_str (), value, true); + sane_putenv (variable.c_str (), value, true); else if (command == "setdir") - set_env_dir (variable.c_str (), value); + set_env_dir (variable.c_str (), value); else if (command == "setfile") - set_env_file (variable.c_str (), value); + set_env_file (variable.c_str (), value); else if (command == "prependdir") - prepend_env_path (variable.c_str (), value); + prepend_env_path (variable.c_str (), value); else - error (_f ("Unknown relocation command %s", command)); + error (_f ("Unknown relocation command %s", command)); } fclose (f); @@ -412,8 +403,8 @@ read_relocation_dir (string dirname) if (DIR *dir = opendir (dirname.c_str ())) while (struct dirent *ent = readdir (dir)) { - File_name name (ent->d_name); - if (name.ext_ == "reloc") - read_relocation_file (dirname + "/" + name.to_string ()); + File_name name (ent->d_name); + if (name.ext_ == "reloc") + read_relocation_file (dirname + "/" + name.to_string ()); } } diff --git a/lily/repeat-acknowledge-engraver.cc b/lily/repeat-acknowledge-engraver.cc index ed2f41fcf0..6d3234c6c6 100644 --- a/lily/repeat-acknowledge-engraver.cc +++ b/lily/repeat-acknowledge-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -80,25 +80,42 @@ Repeat_acknowledge_engraver::process_music () string s = ""; bool start = false; bool end = false; + bool segno = false; bool volta_found = false; while (scm_is_pair (cs)) { SCM command = scm_car (cs); if (command == ly_symbol2scm ("start-repeat")) - start = true; + start = true; else if (command == ly_symbol2scm ("end-repeat")) - end = true; + end = true; + else if (command == ly_symbol2scm ("segno-display")) + segno = true; else if (scm_is_pair (command) && scm_car (command) == ly_symbol2scm ("volta")) - volta_found = true; + volta_found = true; cs = scm_cdr (cs); } - if (start && end) - s = robust_scm2string (get_property ("doubleRepeatType"), ":|:"); + /* + Select which bar type to set + */ + if (segno) + if (start) + if (end) // { segno, start, end } + s = robust_scm2string (get_property ("doubleRepeatSegnoType"), ":|S|:"); + else // { segno, start } + s = robust_scm2string (get_property ("startRepeatSegnoType"), ".S|:"); + else if (end) // { segno, end } + s = robust_scm2string (get_property ("endRepeatSegnoType"), ":|S"); + else // { segno } + s = robust_scm2string (get_property ("segnoType"), "S"); else if (start) - s = "|:"; - else if (end) - s = ":|"; + if (end) // { start, end } + s = robust_scm2string (get_property ("doubleRepeatType"), ":|:"); + else // { start } + s = robust_scm2string (get_property ("startRepeatType"), "|:"); + else if (end) // { end } + s = robust_scm2string (get_property ("endRepeatType"), ":|"); /* TODO: line breaks might be allowed if we set whichBar to "". @@ -113,24 +130,30 @@ Repeat_acknowledge_engraver::process_music () if (!scm_is_string (wb) || ly_is_equal (db, wb)) { if (s != "" || (volta_found && !scm_is_string (wb))) - context ()->set_property ("whichBar", ly_string2scm (s)); + context ()->set_property ("whichBar", ly_string2scm (s)); } } ADD_TRANSLATOR (Repeat_acknowledge_engraver, - /* doc */ - "Acknowledge repeated music, and convert the contents of" - " @code{repeatCommands} into an appropriate setting for" - " @code{whichBar}.", - - /* create */ - "", - - /* read */ - "doubleRepeatType " - "repeatCommands " - "whichBar ", - - /* write */ - "" - ); + /* doc */ + "Acknowledge repeated music, and convert the contents of" + " @code{repeatCommands} into an appropriate setting for" + " @code{whichBar}.", + + /* create */ + "", + + /* read */ + "doubleRepeatType " + "startRepeatType " + "endRepeatType " + "doubleRepeatSegnoType " + "startRepeatSegnoType " + "endRepeatSegnoType " + "segnoType " + "repeatCommands " + "whichBar ", + + /* write */ + "" + ); diff --git a/lily/repeat-tie-engraver.cc b/lily/repeat-tie-engraver.cc index b2d5d6134e..854df8cadc 100644 --- a/lily/repeat-tie-engraver.cc +++ b/lily/repeat-tie-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -18,7 +18,6 @@ along with LilyPond. If not, see . */ - #include "engraver.hh" #include "item.hh" #include "pointer-group-interface.hh" @@ -30,12 +29,12 @@ class Repeat_tie_engraver : public Engraver { Stream_event *event_; Grob *semi_tie_column_; - vector semi_ties_; - - void stop_translation_timestep (); + vector semi_ties_; + + void stop_translation_timestep (); DECLARE_ACKNOWLEDGER (note_head); DECLARE_TRANSLATOR_LISTENER (repeat_tie); - + public: TRANSLATOR_DECLARATIONS (Repeat_tie_engraver); }; @@ -75,33 +74,32 @@ Repeat_tie_engraver::acknowledge_note_head (Grob_info inf) SCM cause = event_->self_scm (); Grob *semi_tie = make_item ("RepeatTie", cause); semi_tie->set_object ("note-head", inf.grob ()->self_scm ()); - + Pointer_group_interface::add_grob (semi_tie_column_, ly_symbol2scm ("ties"), - semi_tie); + semi_tie); semi_tie->set_parent (semi_tie_column_, Y_AXIS); semi_ties_.push_back (semi_tie); - if (is_direction (unsmob_stream_event (cause)->get_property ("direction"))) { Direction d = to_dir (unsmob_stream_event (cause)->get_property ("direction")); - semi_tie->set_property ("direction", scm_from_int (d)); + semi_tie->set_property ("direction", scm_from_int (d)); } } ADD_ACKNOWLEDGER (Repeat_tie_engraver, note_head); -ADD_TRANSLATOR (Repeat_tie_engraver, - /* doc */ - "Create repeat ties.", - - /* create */ - "RepeatTie " - "RepeatTieColumn ", - - /* read */ - "", - - /* write */ - "" - ); +ADD_TRANSLATOR (Repeat_tie_engraver, + /* doc */ + "Create repeat ties.", + + /* create */ + "RepeatTie " + "RepeatTieColumn ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/repeated-music.cc b/lily/repeated-music.cc index 581b1ac17a..13e12df2a4 100644 --- a/lily/repeated-music.cc +++ b/lily/repeated-music.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,16 +45,16 @@ Repeated_music::relative_callback (SCM music, SCM pitch) { Music *body = unsmob_music (me->get_property ("element")); if (body) - p = body->to_relative_octave (p); + p = body->to_relative_octave (p); Pitch last = p; SCM alternatives = me->get_property ("elements"); for (SCM s = alternatives; scm_is_pair (s); s = scm_cdr (s)) - { - lily_1_8_compatibility_used = true; - unsmob_music (scm_car (s))->to_relative_octave (p); - } + { + lily_1_8_compatibility_used = true; + unsmob_music (scm_car (s))->to_relative_octave (p); + } return last.smobbed_copy (); } @@ -83,7 +83,7 @@ Repeated_music::alternatives_get_length (Music *me, bool fold) m = m + unsmob_music (scm_car (p))->get_length (); done++; if (count - done < len) - p = scm_cdr (p); + p = scm_cdr (p); } return m; } @@ -167,7 +167,7 @@ Repeated_music::first_start (SCM m) Music *body = unsmob_music (me->get_property ("element")); Moment rv = (body) ? body->start_mom () - : Music_sequence::first_start (me->get_property ("elements")); + : Music_sequence::first_start (me->get_property ("elements")); return rv.smobbed_copy (); } diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index d1f1640cf3..1c28520d5c 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -52,7 +52,7 @@ void Rest_collision_engraver::process_acknowledged () { vsize rest_count = 0; - set columns; + set columns; Moment now = now_mom (); for (SCM s = get_property ("busyGrobs"); scm_is_pair (s); s = scm_cdr (s)) @@ -60,32 +60,32 @@ Rest_collision_engraver::process_acknowledged () Grob *g = unsmob_grob (scm_cdar (s)); Moment *m = unsmob_moment (scm_caar (s)); if (!g || !m) - continue; + continue; if (Rhythmic_head::has_interface (g) && (*m) > now) - { - Grob *column = g->get_parent (X_AXIS); - if (!column) - { - g->warning (_ ("rhythmic head is not part of a rhythmic column")); - continue; - } - - // Only include rests that start now. Include notes that started any time. - Paper_column *paper_column = dynamic_cast (column)->get_column (); - if (!Rest::has_interface (g) || !paper_column || Paper_column::when_mom (paper_column) == now) - { - columns.insert (column); - rest_count += Note_column::has_rests (column); - } - } + { + Grob *column = g->get_parent (X_AXIS); + if (!column) + { + g->warning (_ ("rhythmic head is not part of a rhythmic column")); + continue; + } + + // Only include rests that start now. Include notes that started any time. + Paper_column *paper_column = dynamic_cast (column)->get_column (); + if (!Rest::has_interface (g) || !paper_column || Paper_column::when_mom (paper_column) == now) + { + columns.insert (column); + rest_count += Note_column::has_rests (column); + } + } } if (!rest_collision_ && rest_count && columns.size () > 1) { rest_collision_ = make_item ("RestCollision", SCM_EOL); - for (set::iterator i = columns.begin (); i != columns.end (); ++i) - Rest_collision::add_column (rest_collision_, *i); + for (set::iterator i = columns.begin (); i != columns.end (); ++i) + Rest_collision::add_column (rest_collision_, *i); } } @@ -98,15 +98,15 @@ Rest_collision_engraver::stop_translation_timestep () #include "translator.icc" ADD_TRANSLATOR (Rest_collision_engraver, - /* doc */ - "Handle collisions of rests.", + /* doc */ + "Handle collisions of rests.", - /* create */ - "RestCollision ", + /* create */ + "RestCollision ", - /* read */ - "busyGrobs ", + /* read */ + "busyGrobs ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index 8be91e3f23..e2b0db5ef2 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #include "rest-collision.hh" -#include // ceil. +#include // ceil. using namespace std; #include "directional-element-interface.hh" @@ -49,13 +49,13 @@ Rest_collision::force_shift_callback_rest (SCM rest, SCM offset) */ if (scm_is_number (offset)) rest_grob->translate_axis (scm_to_double (offset), Y_AXIS); - + if (Note_column::has_interface (parent) && Note_column::has_rests (parent)) { Grob *collision = unsmob_grob (parent->get_object ("rest-collision")); if (collision) - (void) collision->get_property ("positioning-done"); + (void) collision->get_property ("positioning-done"); } return scm_from_double (0.0); @@ -72,7 +72,7 @@ Rest_collision::add_column (Grob *me, Grob *p) if (rest) { chain_offset_callback (rest, - Rest_collision::force_shift_callback_rest_proc, Y_AXIS); + Rest_collision::force_shift_callback_rest_proc, Y_AXIS); } } @@ -98,16 +98,16 @@ Rest_collision::calc_positioning_done (SCM smob) extract_grob_set (me, "elements", elts); - vector rests; - vector notes; + vector rests; + vector notes; for (vsize i = 0; i < elts.size (); i++) { Grob *e = elts[i]; if (unsmob_grob (e->get_object ("rest"))) - rests.push_back (e); + rests.push_back (e); else - notes.push_back (e); + notes.push_back (e); } /* @@ -131,160 +131,151 @@ Rest_collision::calc_positioning_done (SCM smob) { /* - This is incomplete: in case of an uneven number of rests, the - center one should be centered on the staff. + This is incomplete: in case of an uneven number of rests, the + center one should be centered on the staff. */ - Drul_array > ordered_rests; + Drul_array > ordered_rests; for (vsize i = 0; i < rests.size (); i++) - { - Grob *r = Note_column::get_rest (rests[i]); - - Direction d = get_grob_direction (r); - if (d) - ordered_rests[d].push_back (r); - else - rests[d]->warning (_ ("cannot resolve rest collision: rest direction not set")); - } - - Direction d = LEFT; - do - vector_sort (ordered_rests[d], rest_shift_less); - while (flip (&d) != LEFT) - ; - - do - { - if (ordered_rests[d].size () < 1) - { - if (ordered_rests[-d].size () > 1) - ordered_rests[-d][0]->warning (_ ("too many colliding rests")); - - return SCM_BOOL_T; - } - } - while (flip (&d) != LEFT); + { + Grob *r = Note_column::get_rest (rests[i]); + + Direction d = get_grob_direction (r); + if (d) + ordered_rests[d].push_back (r); + else + rests[d]->warning (_ ("cannot resolve rest collision: rest direction not set")); + } + + for (LEFT_and_RIGHT (d)) + vector_sort (ordered_rests[d], rest_shift_less); + + for (LEFT_and_RIGHT (d)) + { + if (ordered_rests[d].size () < 1) + { + if (ordered_rests[-d].size () > 1) + ordered_rests[-d][0]->warning (_ ("too many colliding rests")); + + return SCM_BOOL_T; + } + } Grob *common = common_refpoint_of_array (ordered_rests[DOWN], me, Y_AXIS); common = common_refpoint_of_array (ordered_rests[UP], common, Y_AXIS); Real diff - = (ordered_rests[DOWN].back ()->extent (common, Y_AXIS)[UP] - - ordered_rests[UP].back ()->extent (common, Y_AXIS)[DOWN]) / staff_space; + = (ordered_rests[DOWN].back ()->extent (common, Y_AXIS)[UP] + - ordered_rests[UP].back ()->extent (common, Y_AXIS)[DOWN]) / staff_space; if (diff > 0) - { - int amount_down = (int) ceil (diff / 2); - diff -= amount_down; - Rest::translate (ordered_rests[DOWN].back (), - -2 * amount_down); - if (diff > 0) - Rest::translate (ordered_rests[UP].back (), - 2 * int (ceil (diff))); - } - - do - { - for (vsize i = ordered_rests[d].size () - 1; i-- > 0;) - { - Real last_y = ordered_rests[d][i + 1]->extent (common, Y_AXIS)[d]; - Real y = ordered_rests[d][i]->extent (common, Y_AXIS)[-d]; - - Real diff = d * ((last_y - y) / staff_space); - if (diff > 0) - Rest::translate (ordered_rests[d][i], d * (int) ceil (diff) * 2); - } - } - while (flip (&d) != LEFT); + { + int amount_down = (int) ceil (diff / 2); + diff -= amount_down; + Rest::translate (ordered_rests[DOWN].back (), + -2 * amount_down); + if (diff > 0) + Rest::translate (ordered_rests[UP].back (), + 2 * int (ceil (diff))); + } + + for (LEFT_and_RIGHT (d)) + { + for (vsize i = ordered_rests[d].size () - 1; i-- > 0;) + { + Real last_y = ordered_rests[d][i + 1]->extent (common, Y_AXIS)[d]; + Real y = ordered_rests[d][i]->extent (common, Y_AXIS)[-d]; + + Real diff = d * ((last_y - y) / staff_space); + if (diff > 0) + Rest::translate (ordered_rests[d][i], d * (int) ceil (diff) * 2); + } + } } else { /* - Rests and notes. + Rests and notes. */ // Count how many rests we move Drul_array rcount (0, 0); for (vsize i = 0; i < rests.size (); i++) - { - Grob *rcol = rests[i]; - Direction dir = Note_column::dir (rcol); - if (!dir) - continue; - - Grob *rest = Note_column::get_rest (rcol); - // Do not compute a translation for pre-positioned rests, - // nor count them for the "too many colliding rests" warning - if (scm_is_number (rest->get_property ("staff-position"))) - continue; - - Grob *common = common_refpoint_of_array (notes, rcol, Y_AXIS); - Interval restdim = rest->extent (common, Y_AXIS); - if (restdim.is_empty ()) - continue; - - Real staff_space = Staff_symbol_referencer::staff_space (rcol); - Real minimum_dist = robust_scm2double (me->get_property ("minimum-distance"), 1.0) * staff_space; - - Interval notedim; - for (vsize i = 0; i < notes.size (); i++) - { - if (Note_column::dir (notes[i]) == -dir - // If the note has already happened (but it has a long - // duration, so there is a collision), don't look at the stem. - // If we do, the rest gets shifted down a lot and it looks bad. - || dynamic_cast (notes[i])->get_column () != dynamic_cast (rest)->get_column ()) - { - /* try not to look at the stem, as looking at a beamed - note may trigger beam positioning prematurely. - - This happens with dotted rests, which need Y - positioning to compute X-positioning. - */ - Grob *head = Note_column::first_head (notes[i]); - if (head) - notedim.unite (head->extent (common, Y_AXIS)); - else - programming_error ("Note_column without first_head()"); - } - else - notedim.unite (notes[i]->extent (common, Y_AXIS)); - } - - Real y = dir * max (0.0, - -dir * restdim[-dir] + dir * notedim[dir] + minimum_dist); - - int stafflines = Staff_symbol_referencer::line_count (me); - if (!stafflines) - { - programming_error ("no staff line count"); - stafflines = 5; - } - - // move discretely by half spaces. - int discrete_y = dir * int (ceil (y / (0.5 * dir * staff_space))); - - // move by whole spaces inside the staff. - if (fabs (Staff_symbol_referencer::get_position (rest) - + discrete_y) < stafflines + 1) - { - discrete_y = dir * int (ceil (dir * discrete_y / 2.0) * 2.0); - } - - Rest::translate (rest, discrete_y); - if (rcount[dir]++) - rest->warning (_ ("too many colliding rests")); - } + { + Grob *rcol = rests[i]; + Grob *rest = Note_column::get_rest (rcol); + + Direction dir = get_grob_direction (rest); + if (!dir) + dir = Note_column::dir (rcol); + + // Do not compute a translation for pre-positioned rests, + // nor count them for the "too many colliding rests" warning + if (scm_is_number (rest->get_property ("staff-position"))) + continue; + + Grob *common = common_refpoint_of_array (notes, rcol, Y_AXIS); + Interval restdim = rest->extent (common, Y_AXIS); + if (restdim.is_empty ()) + continue; + + Real staff_space = Staff_symbol_referencer::staff_space (rcol); + Real minimum_dist = robust_scm2double (me->get_property ("minimum-distance"), 1.0) * staff_space; + + Interval notedim; + for (vsize i = 0; i < notes.size (); i++) + { + if (Note_column::dir (notes[i]) == -dir + // If the note has already happened (but it has a long + // duration, so there is a collision), don't look at the stem. + // If we do, the rest gets shifted down a lot and it looks bad. + || dynamic_cast (notes[i])->get_column () != dynamic_cast (rest)->get_column ()) + { + /* try not to look at the stem, as looking at a beamed + note may trigger beam positioning prematurely. + + This happens with dotted rests, which need Y + positioning to compute X-positioning. + */ + Grob *head = Note_column::first_head (notes[i]); + if (head) + notedim.unite (head->extent (common, Y_AXIS)); + else + programming_error ("Note_column without first_head()"); + } + else + notedim.unite (notes[i]->extent (common, Y_AXIS)); + } + + Real y = dir * max (0.0, + -dir * restdim[-dir] + dir * notedim[dir] + minimum_dist); + + // move discretely by half spaces. + int discrete_y = dir * int (ceil (y / (0.5 * dir * staff_space))); + + Interval staff_span = Staff_symbol_referencer::staff_span (rest); + staff_span.widen (1); + // move by whole spaces inside the staff. + if (staff_span.contains + (Staff_symbol_referencer::get_position (rest) + discrete_y)) + { + discrete_y = dir * int (ceil (dir * discrete_y / 2.0) * 2.0); + } + + Rest::translate (rest, discrete_y); + if (rcount[dir]++) + rest->warning (_ ("too many colliding rests")); + } } return SCM_BOOL_T; } ADD_INTERFACE (Rest_collision, - "Move ordinary rests (not multi-measure nor pitched rests)" - " to avoid conflicts.", - - /* properties */ - "minimum-distance " - "positioning-done " - "elements " - ); + "Move ordinary rests (not multi-measure nor pitched rests)" + " to avoid conflicts.", + + /* properties */ + "minimum-distance " + "positioning-done " + "elements " + ); diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc index 8a5622ce46..402f412d2a 100644 --- a/lily/rest-engraver.cc +++ b/lily/rest-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -69,14 +69,14 @@ Rest_engraver::process_music () Pitch *p = unsmob_pitch (rest_event_->get_property ("pitch")); if (p) - { - int pos = p->steps (); - SCM c0 = get_property ("middleCPosition"); - if (scm_is_number (c0)) - pos += scm_to_int (c0); - - rest_->set_property ("staff-position", scm_from_int (pos)); - } + { + int pos = p->steps (); + SCM c0 = get_property ("middleCPosition"); + if (scm_is_number (c0)) + pos += scm_to_int (c0); + + rest_->set_property ("staff-position", scm_from_int (pos)); + } } } @@ -88,15 +88,15 @@ Rest_engraver::listen_rest (Stream_event *ev) } ADD_TRANSLATOR (Rest_engraver, - /* doc */ - "Engrave rests.", + /* doc */ + "Engrave rests.", - /* create */ - "Rest ", + /* create */ + "Rest ", - /* read */ - "middleCPosition ", + /* read */ + "middleCPosition ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/rest.cc b/lily/rest.cc index 9b85523f80..8e45405de2 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,6 +26,7 @@ #include "output-def.hh" #include "paper-score.hh" #include "staff-symbol-referencer.hh" +#include "staff-symbol.hh" #include "stencil.hh" #include "grob.hh" @@ -36,24 +37,58 @@ Rest::y_offset_callback (SCM smob) { Grob *me = unsmob_grob (smob); int duration_log = scm_to_int (me->get_property ("duration-log")); - int line_count = Staff_symbol_referencer::line_count (me); Real ss = Staff_symbol_referencer::staff_space (me); bool position_override = scm_is_number (me->get_property ("staff-position")); - Real amount = robust_scm2double (me->get_property ("staff-position"), 0) - * 0.5 * ss; - - if (line_count % 2) + Real amount; + + if (position_override) { - if (duration_log == 0 && line_count > 1) - amount += ss; + amount + = robust_scm2double (me->get_property ("staff-position"), 0) * 0.5 * ss; + + /* + semibreve rests are positioned one staff line off + */ + if (duration_log == 0) + amount += ss; + + /* + trust the client on good positioning; + would be tempting to adjust position of rests longer than a quarter + to be properly aligned to staff lines, + but custom rest shapes may not need that sort of care. + */ } else - amount += ss / 2; + { + int pos = 4 * get_grob_direction (me); + + /* + make a semibreve rest hang from the next line, + except for a single line staff + */ + if (duration_log == 0 && Staff_symbol_referencer::line_count (me) > 1) + pos += 2; + + /* + make sure rest is aligned to a staff line + */ + if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me)) + { + std::vector linepos = Staff_symbol::line_positions (staff); + std::sort (linepos.begin (), linepos.end ()); + std::vector::const_iterator it + = std::lower_bound (linepos.begin (), linepos.end (), pos); + if (it != linepos.end ()) + { + pos = (int)ceil (*it); + } + } + + amount = ss * 0.5 * pos; + } - if (!position_override) - amount += 2 * ss * get_grob_direction (me);; - return scm_from_double (amount); } @@ -77,21 +112,22 @@ Rest::calc_cross_staff (SCM smob) make this function easily usable in C++ */ string -Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers) +Rest::glyph_name (Grob *me, int durlog, string style, bool try_ledgers) { bool is_ledgered = false; - if (try_ledgers && (balltype == 0 || balltype == 1)) + if (try_ledgers && (durlog == -1 || durlog == 0 || durlog == 1)) { - Real rad = Staff_symbol_referencer::staff_radius (me) * 2.0; - Real pos = Staff_symbol_referencer::get_position (me); + int const pos = int (Staff_symbol_referencer::get_position (me)); /* - Figure out when the rest is far enough outside the staff. This - could bemore generic, but hey, we understand this even after - dinner. + half rests need ledger if not lying on a staff line, + whole rests need ledger if not hanging from a staff line, + breve rests need ledger if neither lying on nor hanging from a staff line */ - is_ledgered |= (balltype == 0) && (pos >= +rad + 2 || pos < -rad); - is_ledgered |= (balltype == 1) && (pos <= -rad - 2 || pos > +rad); + if (-1 <= durlog && durlog <= 1) + is_ledgered = !Staff_symbol_referencer::on_staff_line (me, pos) + && !(durlog == -1 + && Staff_symbol_referencer::on_staff_line (me, pos + 2)); } string actual_style (style.c_str ()); @@ -100,26 +136,26 @@ Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers) { /* - FIXME: Currently, ancient font does not provide ledgered rests; - hence the "o" suffix in the glyph name is bogus. But do we need - ledgered rests at all now that we can draw ledger lines with - variable width, length and blotdiameter? -- jr + FIXME: Currently, ancient font does not provide ledgered rests; + hence the "o" suffix in the glyph name is bogus. But do we need + ledgered rests at all now that we can draw ledger lines with + variable width, length and blotdiameter? -- jr */ is_ledgered = 0; /* - There are no 32th/64th/128th mensural/neomensural rests. In - these cases, revert back to default style. + There are no 32th/64th/128th mensural/neomensural rests. In + these cases, revert back to default style. */ - if (balltype > 4) - actual_style = ""; + if (durlog > 4) + actual_style = ""; } - if ((style == "classical") && (balltype != 2)) + if ((style == "classical") && (durlog != 2)) { /* - classical style: revert back to default style for any rest other - than quarter rest + classical style: revert back to default style for any rest other + than quarter rest */ actual_style = ""; } @@ -127,33 +163,30 @@ Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers) if (style == "default") { /* - Some parts of lily still prefer style "default" over "". - Correct this here. -- jr + Some parts of lily still prefer style "default" over "". + Correct this here. -- jr */ actual_style = ""; } - return ("rests." + to_string (balltype) + (is_ledgered ? "o" : "") - + actual_style); + return ("rests." + to_string (durlog) + (is_ledgered ? "o" : "") + + actual_style); } MAKE_SCHEME_CALLBACK (Rest, print, 1); SCM Rest::brew_internal_stencil (Grob *me, bool ledgered) { - SCM balltype_scm = me->get_property ("duration-log"); - if (!scm_is_number (balltype_scm)) + SCM durlog_scm = me->get_property ("duration-log"); + if (!scm_is_number (durlog_scm)) return Stencil ().smobbed_copy (); - int balltype = scm_to_int (balltype_scm); + int durlog = scm_to_int (durlog_scm); - string style; - SCM style_scm = me->get_property ("style"); - if (scm_is_symbol (style_scm)) - style = ly_scm2string (scm_symbol_to_string (style_scm)); + string style = robust_symbol2string (me->get_property ("style"), "default"); Font_metric *fm = Font_interface::get_default_font (me); - string font_char = glyph_name (me, balltype, style, ledgered); + string font_char = glyph_name (me, durlog, style, ledgered); Stencil out = fm->find_by_name (font_char); if (out.is_empty ()) me->warning (_f ("rest `%s' not found", font_char.c_str ())); @@ -220,8 +253,8 @@ Rest::generic_extent_callback (Grob *me, Axis a) MAKE_SCHEME_CALLBACK (Rest, pure_height, 3); SCM Rest::pure_height (SCM smob, - SCM /* start */, - SCM /* end */) + SCM /* start */, + SCM /* end */) { Grob *me = unsmob_grob (smob); SCM m = brew_internal_stencil (me, false); @@ -229,13 +262,12 @@ Rest::pure_height (SCM smob, } ADD_INTERFACE (Rest, - "A rest symbol. The property @code{style} can be" - " @code{default}, @code{mensural}, @code{neomensural} or" - " @code{classical}.", - - /* properties */ - "direction " - "minimum-distance " - "style " - ); - + "A rest symbol. The property @code{style} can be" + " @code{default}, @code{mensural}, @code{neomensural} or" + " @code{classical}.", + + /* properties */ + "direction " + "minimum-distance " + "style " + ); diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index 9768cafcab..e4e78ecee6 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,16 +53,17 @@ class Rhythmic_column_engraver : public Engraver { - vector rheads_; + vector rheads_; Grob *stem_; + Grob *flag_; Grob *note_column_; - Grob *dotcol_; Grob *arpeggio_; TRANSLATOR_DECLARATIONS (Rhythmic_column_engraver); protected: DECLARE_ACKNOWLEDGER (stem); + DECLARE_ACKNOWLEDGER (flag); DECLARE_ACKNOWLEDGER (rhythmic_head); DECLARE_ACKNOWLEDGER (arpeggio); void process_acknowledged (); @@ -73,22 +74,22 @@ Rhythmic_column_engraver::Rhythmic_column_engraver () { stem_ = 0; + flag_ = 0; note_column_ = 0; arpeggio_ = 0; } - void Rhythmic_column_engraver::process_acknowledged () { if (rheads_.size ()) { if (!note_column_) - note_column_ = make_item ("NoteColumn", rheads_[0]->self_scm ()); + note_column_ = make_item ("NoteColumn", rheads_[0]->self_scm ()); for (vsize i = 0; i < rheads_.size (); i++) - if (!rheads_[i]->get_parent (X_AXIS)) - Note_column::add_head (note_column_, rheads_[i]); + if (!rheads_[i]->get_parent (X_AXIS)) + Note_column::add_head (note_column_, rheads_[i]); rheads_.resize (0); } @@ -96,14 +97,19 @@ Rhythmic_column_engraver::process_acknowledged () if (note_column_) { if (stem_ - && !stem_->get_parent (X_AXIS)) - { - Note_column::set_stem (note_column_, stem_); - stem_ = 0; - } + && !stem_->get_parent (X_AXIS)) + { + Note_column::set_stem (note_column_, stem_); + stem_ = 0; + } if (arpeggio_) - note_column_->set_object ("arpeggio", arpeggio_->self_scm ()); + { + Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), arpeggio_); + note_column_->set_object ("arpeggio", arpeggio_->self_scm ()); + } + if (flag_) + Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), flag_); } } @@ -113,6 +119,12 @@ Rhythmic_column_engraver::acknowledge_stem (Grob_info i) stem_ = i.grob (); } +void +Rhythmic_column_engraver::acknowledge_flag (Grob_info i) +{ + flag_ = i.grob (); +} + void Rhythmic_column_engraver::acknowledge_rhythmic_head (Grob_info i) { @@ -131,23 +143,25 @@ Rhythmic_column_engraver::stop_translation_timestep () note_column_ = 0; stem_ = 0; arpeggio_ = 0; + flag_ = 0; } ADD_ACKNOWLEDGER (Rhythmic_column_engraver, stem); +ADD_ACKNOWLEDGER (Rhythmic_column_engraver, flag); ADD_ACKNOWLEDGER (Rhythmic_column_engraver, rhythmic_head); ADD_ACKNOWLEDGER (Rhythmic_column_engraver, arpeggio); ADD_TRANSLATOR (Rhythmic_column_engraver, - /* doc */ - "Generate @code{NoteColumn}, an object that groups stems," - " note heads, and rests.", + /* doc */ + "Generate @code{NoteColumn}, an object that groups stems," + " note heads, and rests.", - /* create */ - "NoteColumn ", + /* create */ + "NoteColumn ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc index adeb4a871c..d144279427 100644 --- a/lily/rhythmic-head.cc +++ b/lily/rhythmic-head.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ int Rhythmic_head::dot_count (Grob *me) { return get_dots (me) - ? robust_scm2int (get_dots (me)->get_property ("dot-count"), 0) : 0; + ? robust_scm2int (get_dots (me)->get_property ("dot-count"), 0) : 0; } void @@ -60,10 +60,11 @@ Rhythmic_head::duration_log (Grob *me) } ADD_INTERFACE (Rhythmic_head, - "Note head or rest.", + "Note head or rest.", - /* properties */ - "dot " - "duration-log " - "stem " - ); + /* properties */ + "dot " + "duration-log " + "glissando-skip " + "stem " + ); diff --git a/lily/rhythmic-music-iterator.cc b/lily/rhythmic-music-iterator.cc new file mode 100644 index 0000000000..b50122e8bb --- /dev/null +++ b/lily/rhythmic-music-iterator.cc @@ -0,0 +1,84 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2012 Mike Solomon + + 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 . +*/ + +#include "rhythmic-music-iterator.hh" + +#include "context.hh" +#include "dispatcher.hh" +#include "duration.hh" +#include "input.hh" +#include "international.hh" +#include "music.hh" +#include "warn.hh" + +Rhythmic_music_iterator::Rhythmic_music_iterator () +{ +} + +void +Rhythmic_music_iterator::construct_children () +{ + Simple_music_iterator::construct_children (); + descend_to_bottom_context (); +} + +void +Rhythmic_music_iterator::process (Moment m) +{ + if (last_processed_mom_ < Moment (0)) + { + + descend_to_bottom_context (); + + Context *c = get_outlet (); + Stream_event *ev = get_music ()->to_event (c); + SCM arts = ev->get_property ("articulations"); + + if (scm_is_pair (arts)) + { + // There is no point in broadcasting articulations like + // harmonic events that nobody listens to. Those work + // exclusively as articulations. + SCM listened = SCM_EOL; + SCM unlistened = SCM_EOL; + for (; scm_is_pair (arts); arts = scm_cdr (arts)) + { + SCM art = scm_car (arts); + + if (c->event_source ()->is_listened_class + (unsmob_stream_event (art)->get_property ("class"))) + listened = scm_cons (art, listened); + else + unlistened = scm_cons (art, unlistened); + } + ev->set_property ("articulations", scm_reverse_x (unlistened, SCM_EOL)); + c->event_source ()->broadcast (ev); + arts = scm_reverse_x (listened, SCM_EOL); + for (; scm_is_pair (arts); arts = scm_cdr (arts)) + c->event_source ()->broadcast (unsmob_stream_event (scm_car (arts))); + } + else + c->event_source ()->broadcast (ev); + + ev->unprotect (); + } + Simple_music_iterator::process (m); +} + +IMPLEMENT_CTOR_CALLBACK (Rhythmic_music_iterator); diff --git a/lily/rod.cc b/lily/rod.cc index 1198dee36f..f7b38397c5 100644 --- a/lily/rod.cc +++ b/lily/rod.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,14 +37,12 @@ Rod::columnize () || !item_drul_[RIGHT]) return; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Paper_column *pc = item_drul_[d]->get_column (); distance_ += -d * item_drul_[d]->relative_coordinate (pc, X_AXIS); item_drul_[d] = pc; } - while ((flip (&d)) != LEFT); } void @@ -54,7 +52,7 @@ Rod::add_to_cols () if (item_drul_[LEFT] != item_drul_[RIGHT] && item_drul_[LEFT] && item_drul_[RIGHT]) Spaceable_grob::add_rod (item_drul_[LEFT], - item_drul_[RIGHT], - distance_); + item_drul_[RIGHT], + distance_); } diff --git a/lily/scale.cc b/lily/scale.cc index 5de25f5c43..c4b3ccf2c5 100644 --- a/lily/scale.cc +++ b/lily/scale.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys 2007--2008 Rune Zedeler 2008 Joe Neeman @@ -25,65 +25,62 @@ /* todo: put string <-> pitch here too. - */ LY_DEFINE (ly_make_scale, "ly:make-scale", - 1, 0, 0, (SCM steps), - "Create a scale." - " The argument is a vector of rational numbers, each of which" - " represents the number of 200 cent tones of a pitch above the" - " tonic.") + 1, 0, 0, (SCM steps), + "Create a scale." + " The argument is a vector of rational numbers, each of which" + " represents the number of 200 cent tones of a pitch above the" + " tonic.") { bool type_ok = scm_is_vector (steps); - vector tones; + vector tones; if (type_ok) { int len = scm_c_vector_length (steps); - for (int i = 0 ; i < len; i++) - { - SCM step = scm_c_vector_ref (steps, i); - type_ok = type_ok && scm_is_rational (step); - if (type_ok) - { - Rational from_c (scm_to_int (scm_numerator (step)), - scm_to_int (scm_denominator (step))); - tones.push_back (from_c); - } - } + for (int i = 0; i < len; i++) + { + SCM step = scm_c_vector_ref (steps, i); + type_ok = type_ok && scm_is_rational (step); + if (type_ok) + { + Rational from_c (scm_to_int (scm_numerator (step)), + scm_to_int (scm_denominator (step))); + tones.push_back (from_c); + } + } } - - + SCM_ASSERT_TYPE (type_ok, steps, SCM_ARG1, __FUNCTION__, "vector of rational"); Scale *s = new Scale (tones); - SCM retval = s->self_scm (); + SCM retval = s->self_scm (); s->unprotect (); - + return retval; } LY_DEFINE (ly_default_scale, "ly:default-scale", - 0, 0, 0, (), - "Get the global default scale.") + 0, 0, 0, (), + "Get the global default scale.") { return default_global_scale - ? default_global_scale->self_scm () - : SCM_BOOL_F; + ? default_global_scale->self_scm () + : SCM_BOOL_F; } - -Scale * default_global_scale = 0; +Scale *default_global_scale = 0; LY_DEFINE (ly_set_default_scale, "ly:set-default-scale", - 1, 0, 0, (SCM scale), - "Set the global default scale. This determines the tuning of" - " pitches with no accidentals or key signatures. The first" - " pitch is C. Alterations are calculated relative to this" - " scale. The number of pitches in this scale determines the" - " number of scale steps that make up an octave. Usually the" - " 7-note major scale.") + 1, 0, 0, (SCM scale), + "Set the global default scale. This determines the tuning of" + " pitches with no accidentals or key signatures. The first" + " pitch is C. Alterations are calculated relative to this" + " scale. The number of pitches in this scale determines the" + " number of scale steps that make up an octave. Usually the" + " 7-note major scale.") { LY_ASSERT_SMOB (Scale, scale, 1); @@ -92,7 +89,7 @@ LY_DEFINE (ly_set_default_scale, "ly:set-default-scale", default_global_scale->unprotect (); default_global_scale = s; s->protect (); - + return SCM_UNSPECIFIED; } @@ -110,7 +107,7 @@ Scale::tones_at_step (int step, int octave) const octave += (step - normalized_step) / step_count (); // There are 6 tones in an octave. - return step_tones_[normalized_step] + Rational (octave*6); + return step_tones_[normalized_step] + Rational (octave * 6); } Rational @@ -122,7 +119,7 @@ Scale::step_size (int step) const // scale (6 is the number of tones of the octave above the // first note). if (normalized_step + 1 == step_count ()) - return Rational(6) - step_tones_[normalized_step]; + return Rational (6) - step_tones_[normalized_step]; return step_tones_[normalized_step + 1] - step_tones_[normalized_step]; } @@ -139,10 +136,10 @@ Scale::normalize_step (int step) const int Scale::print_smob (SCM /* x */, - SCM port, - scm_print_state *) + SCM port, + scm_print_state *) { - scm_puts ("#", port); + scm_puts ("#", port); return 1; } @@ -165,7 +162,6 @@ Scale::Scale (Scale const &src) smobify_self (); } - Scale::~Scale () { } diff --git a/lily/scheme-engraver.cc b/lily/scheme-engraver.cc index 22774f3952..1b1aad924a 100644 --- a/lily/scheme-engraver.cc +++ b/lily/scheme-engraver.cc @@ -1,9 +1,9 @@ -/* +/* scheme-engraver.cc -- implement Scheme_engraver - + source file of the GNU LilyPond music typesetter - - Copyright (c) 2009--2011 Han-Wen Nienhuys + + Copyright (c) 2009--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ 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 . + along with LilyPond. If not, see . */ #include "scheme-engraver.hh" @@ -71,12 +71,12 @@ void Scheme_engraver::init_from_scheme (SCM definition) { start_translation_timestep_function_ = callable (ly_symbol2scm ("start-translation-timestep"), - definition); + definition); stop_translation_timestep_function_ = callable (ly_symbol2scm ("stop-translation-timestep"), - definition); + definition); process_music_function_ = callable (ly_symbol2scm ("process-music"), definition); process_acknowledged_function_ = callable (ly_symbol2scm ("process-acknowledged"), - definition); + definition); initialize_function_ = callable (ly_symbol2scm ("initialize"), definition); finalize_function_ = callable (ly_symbol2scm ("finalize"), definition); @@ -85,9 +85,9 @@ Scheme_engraver::init_from_scheme (SCM definition) listeners_alist_ = SCM_EOL; must_be_last_ = to_boolean (ly_assoc_get (ly_symbol2scm ("must-be-last"), - definition, - SCM_BOOL_F)); - + definition, + SCM_BOOL_F)); + translator_listener_record **tail = &per_instance_listeners_; for (SCM p = listeners; scm_is_pair (p); p = scm_cdr (p)) { @@ -95,10 +95,10 @@ Scheme_engraver::init_from_scheme (SCM definition) SCM proc = scm_cdar (p); if (!(ly_is_procedure (proc) && ly_is_symbol (event_class))) - continue; + continue; // We should check the arity of the function? - + // Record for later lookup. listeners_alist_ = scm_acons (event_class, proc, listeners_alist_); @@ -109,13 +109,13 @@ Scheme_engraver::init_from_scheme (SCM definition) tail = &rec->next_; } - init_acknowledgers (ly_assoc_get(ly_symbol2scm ("acknowledgers"), - definition, SCM_EOL), - &interface_acknowledger_hash_); - - init_acknowledgers (ly_assoc_get(ly_symbol2scm ("end-acknowledgers"), - definition, SCM_EOL), - &interface_end_acknowledger_hash_); + init_acknowledgers (ly_assoc_get (ly_symbol2scm ("acknowledgers"), + definition, SCM_EOL), + &interface_acknowledger_hash_); + + init_acknowledgers (ly_assoc_get (ly_symbol2scm ("end-acknowledgers"), + definition, SCM_EOL), + &interface_end_acknowledger_hash_); // TODO: hook up description, props read/written, grobs created // etc. to provide automatic documentation. @@ -123,16 +123,16 @@ Scheme_engraver::init_from_scheme (SCM definition) void Scheme_engraver::init_acknowledgers (SCM alist, - SCM *hash) -{ - *hash = scm_c_make_hash_table(7); + SCM *hash) +{ + *hash = scm_c_make_hash_table (7); for (SCM p = alist; scm_is_pair (p); p = scm_cdr (p)) { SCM iface = scm_caar (p); SCM proc = scm_cdar (p); if (!(ly_is_procedure (proc) && ly_is_symbol (iface))) - continue; + continue; scm_hashq_set_x (*hash, iface, proc); } @@ -141,7 +141,7 @@ Scheme_engraver::init_acknowledgers (SCM alist, // This is the easy way to do it, at the cost of too many invocations // of Scheme_engraver::acknowledge_grob. The clever dispatching of // acknowledgers is hardwired to have 1 method per engraver per -// grob-type, which doesn't work for this case. +// grob-type, which doesn't work for this case. void Scheme_engraver::acknowledge_grob (Grob_info info) { @@ -156,18 +156,18 @@ Scheme_engraver::acknowledge_end_grob (Grob_info info) void Scheme_engraver::acknowledge_grob_by_hash (Grob_info info, - SCM iface_function_hash) + SCM iface_function_hash) { SCM meta = info.grob ()->internal_get_property (ly_symbol2scm ("meta")); SCM ifaces = scm_cdr (scm_assoc (ly_symbol2scm ("interfaces"), meta)); for (SCM s = ifaces; scm_is_pair (s); s = scm_cdr (s)) { SCM func = scm_hashq_ref (iface_function_hash, - scm_car (s), SCM_BOOL_F); + scm_car (s), SCM_BOOL_F); if (ly_is_procedure (func)) - scm_call_3 (func, self_scm (), info.grob ()->self_scm (), - info.origin_translator ()->self_scm ()); + scm_call_3 (func, self_scm (), info.grob ()->self_scm (), + info.origin_translator ()->self_scm ()); } } @@ -186,42 +186,53 @@ void mark_listen_closure (void *target) scm_gc_mark ((SCM)target); } -Listener_function_table listen_closure = { - call_listen_closure, mark_listen_closure +static +bool equal_listen_closure (void *a, void *b) +{ + SCM target_a = (SCM) a; + SCM target_b = (SCM) b; + + return ly_is_equal (target_a, target_b); +} + +Listener_function_table listen_closure += +{ + call_listen_closure, mark_listen_closure, equal_listen_closure }; /* static */ Listener Scheme_engraver::get_listener (void *arg, SCM name) { - Scheme_engraver *me = (Scheme_engraver*) arg; + Scheme_engraver *me = (Scheme_engraver *) arg; SCM func = ly_assoc_get (name, me->listeners_alist_, SCM_BOOL_F); assert (ly_is_procedure (func)); - SCM closure = scm_cons (func, me->self_scm()); - return Listener((void*)closure, &listen_closure); + SCM closure = scm_cons (func, me->self_scm ()); + return Listener ((void *)closure, &listen_closure); } translator_listener_record * -Scheme_engraver::get_listener_list () const -{ +Scheme_engraver::get_listener_list () const +{ return per_instance_listeners_; } -#define DISPATCH(what) \ - void \ - Scheme_engraver::what () \ - { \ - if (what ## _function_ != SCM_BOOL_F) \ - scm_call_1 (what ## _function_, self_scm ()); \ +#define DISPATCH(what) \ + void \ + Scheme_engraver::what () \ + { \ + if (what ## _function_ != SCM_BOOL_F) \ + scm_call_1 (what ## _function_, self_scm ()); \ } -DISPATCH(start_translation_timestep); -DISPATCH(stop_translation_timestep); -DISPATCH(initialize); -DISPATCH(finalize); -DISPATCH(process_music); -DISPATCH(process_acknowledged); +DISPATCH (start_translation_timestep); +DISPATCH (stop_translation_timestep); +DISPATCH (initialize); +DISPATCH (finalize); +DISPATCH (process_music); +DISPATCH (process_acknowledged); void Scheme_engraver::derived_mark () const @@ -232,25 +243,25 @@ Scheme_engraver::derived_mark () const scm_gc_mark (finalize_function_); scm_gc_mark (process_music_function_); scm_gc_mark (process_acknowledged_function_); - scm_gc_mark (listeners_alist_); - scm_gc_mark (interface_acknowledger_hash_); - scm_gc_mark (interface_end_acknowledger_hash_); -} + scm_gc_mark (listeners_alist_); + scm_gc_mark (interface_acknowledger_hash_); + scm_gc_mark (interface_end_acknowledger_hash_); +} ADD_ACKNOWLEDGER (Scheme_engraver, grob); ADD_END_ACKNOWLEDGER (Scheme_engraver, grob); ADD_TRANSLATOR (Scheme_engraver, - /* doc */ - "Implement engravers in Scheme. Interprets arguments to" - " @code{\\consists} as callbacks.", + /* doc */ + "Implement engravers in Scheme. Interprets arguments to" + " @code{\\consists} as callbacks.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/scheme-listener-scheme.cc b/lily/scheme-listener-scheme.cc index 436d595ed0..7f1a15627d 100644 --- a/lily/scheme-listener-scheme.cc +++ b/lily/scheme-listener-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Erik Sandberg + Copyright (C) 2006--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,11 +20,11 @@ #include "scheme-listener.hh" LY_DEFINE (ly_make_listener, "ly:make-listener", - 1, 0, 0, (SCM callback), - "Create a listener. Any time the listener hears an object," - " it will call @var{callback} with that object.\n" - "\n" - "@var{callback} should take exactly one argument.") + 1, 0, 0, (SCM callback), + "Create a listener. Any time the listener hears an object," + " it will call @var{callback} with that object.\n" + "\n" + "@var{callback} should take exactly one argument.") { LY_ASSERT_TYPE (ly_is_procedure, callback, 1); Scheme_listener *l = new Scheme_listener (callback); diff --git a/lily/scheme-listener.cc b/lily/scheme-listener.cc index 52efdbe541..a576aa18d0 100644 --- a/lily/scheme-listener.cc +++ b/lily/scheme-listener.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Erik Sandberg + Copyright (C) 2006--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ Scheme_listener::Scheme_listener (SCM c) callback_ = SCM_EOL; self_scm_ = SCM_EOL; smobify_self (); - callback_ = c; + callback_ = c; } SCM @@ -45,7 +45,7 @@ Scheme_listener::mark_smob (SCM obj) } int -Scheme_listener::print_smob (SCM obj, SCM p, scm_print_state*) +Scheme_listener::print_smob (SCM obj, SCM p, scm_print_state *) { Scheme_listener *me = (Scheme_listener *) SCM_CELL_WORD_1 (obj); scm_puts ("# + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ static void copy_scm_hashes (SCM dest, SCM src) { scm_internal_hash_for_each_handle ((scm_t_hash_handle_fn) ©_handle, - dest, src); + dest, src); } Scheme_hash_table::Scheme_hash_table () @@ -63,7 +63,7 @@ Scheme_hash_table::copy (Scheme_hash_table const &src) if (&src == this) return; - hash_tab_ = scm_c_make_hash_table (SCM_HASHTABLE_N_ITEMS(src.hash_tab_)); + hash_tab_ = scm_c_make_hash_table (SCM_HASHTABLE_N_ITEMS (src.hash_tab_)); copy_scm_hashes (hash_tab_, src.hash_tab_); } @@ -80,7 +80,7 @@ Scheme_hash_table::mark_smob (SCM s) } int -Scheme_hash_table::print_smob (SCM s, SCM p, scm_print_state*) +Scheme_hash_table::print_smob (SCM s, SCM p, scm_print_state *) { assert (unsmob (s)); scm_puts ("# + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -60,8 +60,8 @@ void Score_engraver::finish (SCM) { recurse_over_translators (context (), &Translator::finalize, - &Translator_group::finalize, - UP); + &Translator_group::finalize, + UP); } #define MUSIC_FONT "emmentaler-20" @@ -76,12 +76,12 @@ Score_engraver::initialize () if (!fm) { error (_f ("cannot find `%s'", MUSIC_FONT ".otf") - + "\n" - + _ ("Music font has not been installed properly.") - + "\n" - + _f ("Search path `%s'", global_path.to_string ().c_str ()) - + "\n" - + _ ("Aborting")); + + "\n" + + _ ("Music font has not been installed properly.") + + "\n" + + _f ("Search path `%s'", global_path.to_string ().c_str ()) + + "\n" + + _ ("Aborting")); } pscore_ = new Paper_score (dynamic_cast (context ()->get_output_def ())); @@ -91,7 +91,7 @@ Score_engraver::initialize () SCM props = updated_grob_properties (context (), ly_symbol2scm ("System")); pscore_->typeset_system (new System (props)); - + system_ = pscore_->root_system (); context ()->set_property ("rootSystem", system_->self_scm ()); @@ -102,7 +102,7 @@ void Score_engraver::connect_to_context (Context *c) { Engraver_group::connect_to_context (c); - + Dispatcher *d = c->get_global_context ()->event_source (); d->add_listener (GET_LISTENER (one_time_step), ly_symbol2scm ("OneTimeStep")); d->add_listener (GET_LISTENER (prepare), ly_symbol2scm ("Prepare")); @@ -111,16 +111,16 @@ Score_engraver::connect_to_context (Context *c) /* uncovered: - - check_removal always returns false for Score contexts, it has been that way -since I joined the project. There is a reason for this: The typeset score is -stored in the Score_engraver, which in turn is accessed through the -Global_context returned by ly:run-translator. So the score-translator must be + + check_removal always returns false for Score contexts, it has been that way +since I joined the project. There is a reason for this: The typeset score is +stored in the Score_engraver, which in turn is accessed through the +Global_context returned by ly:run-translator. So the score-translator must be connected to the score-context after run-translator finishes. -I plan to change this: we should junk run-translator, and instead keep track -of both context and translator in the SCM code, and access the typeset score -directly via the created global-translator. Then it would be possible to +I plan to change this: we should junk run-translator, and instead keep track +of both context and translator in the SCM code, and access the typeset score +directly via the created global-translator. Then it would be possible to disconnect score-translators at iteration time. -es */ void @@ -175,33 +175,33 @@ Score_engraver::typeset_all () Grob *elem = elems_[i]; if (!elem->get_parent (Y_AXIS)) - Axis_group_interface::add_element (system_, elem); + Axis_group_interface::add_element (system_, elem); } elems_.clear (); } ADD_TRANSLATOR_GROUP (Score_engraver, - /* doc */ - "The top-level engraver. Takes care of generating" - " columns and the complete system (i.e.," - " @code{System}).\n" - "\n" - "This engraver decides whether a column is breakable." - " The default is that a column is always breakable." - " However, every @code{Bar_engraver} that does not have" - " a bar line at a certain point sets @code{forbidBreaks}" - " to stop line breaks. In practice, this means that you" - " can make a break point by creating a bar line" - " (assuming that there are no beams or notes that" - " prevent a break point).", - - /* create */ - "System ", - - /* read */ - "currentMusicalColumn " - "currentCommandColumn ", - - /* write */ - "" - ); + /* doc */ + "The top-level engraver. Takes care of generating" + " columns and the complete system (i.e.," + " @code{System}).\n" + "\n" + "This engraver decides whether a column is breakable." + " The default is that a column is always breakable." + " However, every @code{Bar_engraver} that does not have" + " a bar line at a certain point sets @code{forbidBreaks}" + " to stop line breaks. In practice, this means that you" + " can make a break point by creating a bar line" + " (assuming that there are no beams or notes that" + " prevent a break point).", + + /* create */ + "System ", + + /* read */ + "currentMusicalColumn " + "currentCommandColumn ", + + /* write */ + "" + ); diff --git a/lily/score-performer.cc b/lily/score-performer.cc index 5257788df6..9dc229a48d 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,18 +33,18 @@ #include "audio-item.hh" ADD_TRANSLATOR_GROUP (Score_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); Score_performer::Score_performer () { @@ -61,7 +61,7 @@ void Score_performer::announce_element (Audio_element_info info) { announce_infos_.push_back (info); - if (Audio_staff *s = dynamic_cast (info.elem_)) + if (Audio_staff *s = dynamic_cast (info.elem_)) { performance_->audio_staffs_.push_back (s); } @@ -75,17 +75,16 @@ Score_performer::acknowledge_audio_elements () for (vsize i = 0; i < announce_infos_.size (); i++) { if (Audio_item *ai = dynamic_cast (announce_infos_[i].elem_)) - audio_column_->add_audio_item (ai); + audio_column_->add_audio_item (ai); } Performer_group::acknowledge_audio_elements (); } - void Score_performer::connect_to_context (Context *c) { Performer_group::connect_to_context (c); - + Dispatcher *d = c->get_global_context ()->event_source (); d->add_listener (GET_LISTENER (one_time_step), ly_symbol2scm ("OneTimeStep")); d->add_listener (GET_LISTENER (prepare), ly_symbol2scm ("Prepare")); @@ -123,9 +122,9 @@ Score_performer::finish (SCM) bool use_ports = channel_mapping == ly_symbol2scm ("voice"); performance_->ports_ = use_ports; recurse_over_translators (context (), - &Translator::finalize, - &Translator_group::finalize, - UP); + &Translator::finalize, + &Translator_group::finalize, + UP); } IMPLEMENT_LISTENER (Score_performer, one_time_step); @@ -136,17 +135,17 @@ Score_performer::one_time_step (SCM) { if (!skipping_) { - skip_start_mom_ = audio_column_->when (); - skipping_ = true; + skip_start_mom_ = audio_column_->when (); + skipping_ = true; } } else { if (skipping_) { - offset_mom_ -= audio_column_->when () - skip_start_mom_; - skipping_ = false; - } + offset_mom_ -= audio_column_->when () - skip_start_mom_; + skipping_ = false; + } audio_column_->offset_when (offset_mom_); precomputed_recurse_over_translators (context (), PROCESS_MUSIC, UP); @@ -170,11 +169,9 @@ Score_performer::initialize () { performance_ = new Performance; performance_->unprotect (); - context ()->set_property ("output", performance_->self_scm ()); + context ()->set_property ("output", performance_->self_scm ()); performance_->midi_ = context ()->get_output_def (); - Translator_group::initialize (); } - diff --git a/lily/score-scheme.cc b/lily/score-scheme.cc index f3afd1429b..7a306af442 100644 --- a/lily/score-scheme.cc +++ b/lily/score-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,9 +27,9 @@ #include "paper-book.hh" LY_DEFINE (ly_make_score, "ly:make-score", - 1, 0, 0, - (SCM music), - "Return score with @var{music} encapsulated in it.") + 1, 0, 0, + (SCM music), + "Return score with @var{music} encapsulated in it.") { LY_ASSERT_SMOB (Music, music, 1); @@ -40,8 +40,8 @@ LY_DEFINE (ly_make_score, "ly:make-score", } LY_DEFINE (ly_score_output_defs, "ly:score-output-defs", - 1, 0, 0, (SCM score), - "All output definitions in a score.") + 1, 0, 0, (SCM score), + "All output definitions in a score.") { LY_ASSERT_SMOB (Score, score, 1); Score *sc = unsmob_score (score); @@ -53,8 +53,8 @@ LY_DEFINE (ly_score_output_defs, "ly:score-output-defs", } LY_DEFINE (ly_score_add_output_def_x, "ly:score-add-output-def!", - 2, 0, 0, (SCM score, SCM def), - "Add an output definition @var{def} to @var{score}.") + 2, 0, 0, (SCM score, SCM def), + "Add an output definition @var{def} to @var{score}.") { LY_ASSERT_SMOB (Score, score, 1); LY_ASSERT_SMOB (Output_def, def, 2); @@ -65,8 +65,8 @@ LY_DEFINE (ly_score_add_output_def_x, "ly:score-add-output-def!", } LY_DEFINE (ly_score_header, "ly:score-header", - 1, 0, 0, (SCM score), - "Return score header.") + 1, 0, 0, (SCM score), + "Return score header.") { LY_ASSERT_SMOB (Score, score, 1); Score *sc = unsmob_score (score); @@ -74,12 +74,12 @@ LY_DEFINE (ly_score_header, "ly:score-header", } LY_DEFINE (ly_score_set_header_x, "ly:score-set-header!", - 2, 0, 0, (SCM score, SCM module), - "Set the score header.") + 2, 0, 0, (SCM score, SCM module), + "Set the score header.") { LY_ASSERT_SMOB (Score, score, 1); SCM_ASSERT_TYPE (ly_is_module (module), module, SCM_ARG2, __FUNCTION__, - "module"); + "module"); Score *sc = unsmob_score (score); sc->set_header (module); @@ -87,8 +87,8 @@ LY_DEFINE (ly_score_set_header_x, "ly:score-set-header!", } LY_DEFINE (ly_score_music, "ly:score-music", - 1, 0, 0, (SCM score), - "Return score music.") + 1, 0, 0, (SCM score), + "Return score music.") { LY_ASSERT_SMOB (Score, score, 1); Score *sc = unsmob_score (score); @@ -96,8 +96,8 @@ LY_DEFINE (ly_score_music, "ly:score-music", } LY_DEFINE (ly_score_error_p, "ly:score-error?", - 1, 0, 0, (SCM score), - "Was there an error in the score?") + 1, 0, 0, (SCM score), + "Was there an error in the score?") { LY_ASSERT_SMOB (Score, score, 1); Score *sc = unsmob_score (score); @@ -105,10 +105,10 @@ LY_DEFINE (ly_score_error_p, "ly:score-error?", } LY_DEFINE (ly_score_embedded_format, "ly:score-embedded-format", - 2, 0, 0, (SCM score, SCM layout), - "Run @var{score} through @var{layout} (an output definition)" - " scaled to correct output-scale already, returning a list of" - " layout-lines.") + 2, 0, 0, (SCM score, SCM layout), + "Run @var{score} through @var{layout} (an output definition)" + " scaled to correct output-scale already, returning a list of" + " layout-lines.") { LY_ASSERT_SMOB (Score, score, 1); LY_ASSERT_SMOB (Output_def, layout, 2); diff --git a/lily/score.cc b/lily/score.cc index c3125df5ad..77002d82ab 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,6 @@ Score::origin () const return unsmob_input (input_location_); } - Score::Score () { header_ = SCM_EOL; @@ -79,7 +78,7 @@ Score::mark_smob (SCM s) } int -Score::print_smob (SCM, SCM p, scm_print_state*) +Score::print_smob (SCM, SCM p, scm_print_state *) { scm_puts ("#", p); @@ -116,7 +115,6 @@ Score::Score (Score const &s) ly_module_copy (header_, s.header_); } - /* Format score, return list of Music_output objects. @@ -124,50 +122,46 @@ Score::Score (Score const &s) */ SCM Score::book_rendering (Output_def *layoutbook, - Output_def *default_def) + Output_def *default_def) { if (error_found_) return SCM_EOL; - SCM scaled_bookdef = SCM_EOL; Real scale = 1.0; if (layoutbook && layoutbook->c_variable ("is-paper") == SCM_BOOL_T) scale = scm_to_double (layoutbook->c_variable ("output-scale")); SCM outputs = SCM_EOL; - SCM *tail = &outputs; int outdef_count = defs_.size (); for (int i = 0; !i || i < outdef_count; i++) { Output_def *def = outdef_count ? defs_[i] : default_def; - SCM scaled = SCM_EOL; + SCM scaled = def->self_scm (); if (def->c_variable ("is-layout") == SCM_BOOL_T) - { - def = scale_output_def (def, scale); - def->parent_ = layoutbook; + { + def = scale_output_def (def, scale); + def->parent_ = layoutbook; - scaled = def->unprotect (); - } + scaled = def->unprotect (); + } /* TODO: fix or junk --no-layout. */ - SCM context = ly_run_translator (music_, def->self_scm ()); + SCM context = ly_run_translator (music_, scaled); if (dynamic_cast (unsmob_context (context))) - { - SCM s = ly_format_output (context); + { + SCM s = ly_format_output (context); - *tail = scm_cons (s, SCM_EOL); - tail = SCM_CDRLOC (*tail); - } + outputs = scm_cons (s, outputs); + } scm_remember_upto_here_1 (scaled); } - scm_remember_upto_here_1 (scaled_bookdef); - return outputs; + return scm_reverse_x (outputs, SCM_EOL); } void @@ -184,7 +178,7 @@ Score::set_music (SCM music) m->origin ()->error (_ ("errors found, ignoring music expression")); this->error_found_ = this->error_found_ - || to_boolean (m->get_property ("error-found")); + || to_boolean (m->get_property ("error-found")); } if (this->error_found_) diff --git a/lily/script-column-engraver.cc b/lily/script-column-engraver.cc index a5be1ef660..d9a894f63e 100644 --- a/lily/script-column-engraver.cc +++ b/lily/script-column-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ class Script_column_engraver : public Engraver { Grob *script_column_; - vector scripts_; + vector scripts_; public: TRANSLATOR_DECLARATIONS (Script_column_engraver); @@ -51,8 +51,8 @@ Script_column_engraver::stop_translation_timestep () if (script_column_) { for (vsize i = 0; i < scripts_.size (); i++) - if (Side_position_interface::get_axis (scripts_[i]) == Y_AXIS) - Script_column::add_side_positioned (script_column_, scripts_[i]); + if (Side_position_interface::get_axis (scripts_[i]) == Y_AXIS) + Script_column::add_side_positioned (script_column_, scripts_[i]); } script_column_ = 0; @@ -66,7 +66,7 @@ Script_column_engraver::acknowledge_side_position (Grob_info inf) if (thing) { if (!Item::is_non_musical (thing)) - scripts_.push_back (thing); + scripts_.push_back (thing); } } @@ -79,16 +79,16 @@ Script_column_engraver::process_acknowledged () ADD_ACKNOWLEDGER (Script_column_engraver, side_position); ADD_TRANSLATOR (Script_column_engraver, - /* doc */ - "Find potentially colliding scripts and put them into a" - " @code{ScriptColumn} object; that will fix the collisions.", + /* doc */ + "Find potentially colliding scripts and put them into a" + " @code{ScriptColumn} object; that will fix the collisions.", - /* create */ - "ScriptColumn ", + /* create */ + "ScriptColumn ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/script-column.cc b/lily/script-column.cc index b9c9e178f4..0a014a3800 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ #include -typedef map > Grob_scripts_map; +typedef map > Grob_scripts_map; void Script_column::add_side_positioned (Grob *me, Grob *script) @@ -42,8 +42,8 @@ Script_column::add_side_positioned (Grob *me, Grob *script) } LY_DEFINE (ly_grob_script_priority_less, "ly:grob-script-priority-less", - 2, 0, 0, (SCM a, SCM b), - "Compare two grobs by script priority. For internal use.") + 2, 0, 0, (SCM a, SCM b), + "Compare two grobs by script priority. For internal use.") { Grob *i1 = unsmob_grob (a); Grob *i2 = unsmob_grob (b); @@ -59,7 +59,7 @@ SCM Script_column::row_before_line_breaking (SCM smob) { Grob *me = unsmob_grob (smob); - vector horizontal_grobs; + vector horizontal_grobs; extract_grob_set (me, "scripts", scripts); Grob_scripts_map head_scripts_map; @@ -69,25 +69,25 @@ Script_column::row_before_line_breaking (SCM smob) Grob *sc = scripts[i]; /* - Don't want to consider scripts horizontally next to notes. + Don't want to consider scripts horizontally next to notes. */ if (Accidental_placement::has_interface (sc) - || Arpeggio::has_interface (sc)) - { - affect_all_grobs.push_back (sc); - } - else if (sc->get_property_data ("Y-offset") != - Side_position_interface::y_aligned_side_proc) - { - head_scripts_map[sc->get_parent (Y_AXIS)].push_back (sc); - } + || Arpeggio::has_interface (sc)) + { + affect_all_grobs.push_back (sc); + } + else if (sc->get_property_data ("Y-offset") + != Side_position_interface::y_aligned_side_proc) + { + head_scripts_map[sc->get_parent (Y_AXIS)].push_back (sc); + } } for (Grob_scripts_map::const_iterator i (head_scripts_map.begin ()); i != head_scripts_map.end (); i++) { - vector grobs = (*i).second; + vector grobs = (*i).second; // this isn't right in all cases, but in general a safe assumption. concat (grobs, affect_all_grobs); @@ -97,24 +97,23 @@ Script_column::row_before_line_breaking (SCM smob) return SCM_UNSPECIFIED; } - MAKE_SCHEME_CALLBACK (Script_column, before_line_breaking, 1); SCM Script_column::before_line_breaking (SCM smob) { Grob *me = unsmob_grob (smob); - vector staff_sided; + vector staff_sided; extract_grob_set (me, "scripts", scripts); for (vsize i = 0; i < scripts.size (); i++) { Grob *sc = scripts[i]; /* - Don't want to consider scripts horizontally next to notes. + Don't want to consider scripts horizontally next to notes. */ - if (sc->get_property_data ("X-offset") != - Side_position_interface::x_aligned_side_proc) - staff_sided.push_back (sc); + if (sc->get_property_data ("X-offset") + != Side_position_interface::x_aligned_side_proc) + staff_sided.push_back (sc); } order_grobs (staff_sided); @@ -122,7 +121,7 @@ Script_column::before_line_breaking (SCM smob) } void -Script_column::order_grobs (vector grobs) +Script_column::order_grobs (vector grobs) { Drul_array scripts_drul (SCM_EOL, SCM_EOL); for (vsize i = 0; i < grobs.size (); i++) @@ -133,8 +132,7 @@ Script_column::order_grobs (vector grobs) scripts_drul[d] = scm_cons (g->self_scm (), scripts_drul[d]); } - Direction d = DOWN; - do + for (DOWN_and_UP (d)) { SCM ss = scm_reverse_x (scripts_drul[d], SCM_EOL); ss = scm_stable_sort_x (ss, ly_grob_script_priority_less_proc); @@ -147,40 +145,38 @@ Script_column::order_grobs (vector grobs) // loop over all grobs in script column (already sorted by script_priority) for (SCM s = ss; scm_is_pair (s); s = scm_cdr (s), last = g, last_initial_outside_staff = initial_outside_staff) - { - g = unsmob_grob (scm_car (s)); + { + g = unsmob_grob (scm_car (s)); initial_outside_staff = g->get_property ("outside-staff-priority"); if (last) //not the first grob in the list { - SCM last_outside_staff = last->get_property ("outside-staff-priority"); + SCM last_outside_staff = last->get_property ("outside-staff-priority"); /* if outside_staff_priority is missing for previous grob, just use it as a support for the current grob */ - if (!scm_is_number (last_outside_staff)) - Side_position_interface::add_support (g, last); + if (!scm_is_number (last_outside_staff)) + Side_position_interface::add_support (g, last); /* if outside_staff_priority is missing or is equal to original outside_staff_priority of previous grob, set new outside_staff_priority to just higher than outside_staff_priority of previous grob in order to preserve ordering. */ - else if ((!scm_is_number (initial_outside_staff)) || - (fabs (scm_to_double (initial_outside_staff) - - robust_scm2double (last_initial_outside_staff, 0)) < 0.001)) + else if ((!scm_is_number (initial_outside_staff)) + || (fabs (scm_to_double (initial_outside_staff) + - robust_scm2double (last_initial_outside_staff, 0)) < 0.001)) g->set_property ("outside-staff-priority", - scm_from_double ( - scm_to_double (last_outside_staff) + 0.1)); - } - } + scm_from_double (scm_to_double (last_outside_staff) + 0.1)); + } + } } - while (flip (&d) != DOWN); } ADD_INTERFACE (Script_column, - "An interface that sorts scripts according to their" - " @code{script-priority} and @code{outside-staff-priority}.", + "An interface that sorts scripts according to their" + " @code{script-priority} and @code{outside-staff-priority}.", - /* properties */ - "" - ); + /* properties */ + "" + ); diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index f10f29da8a..288d771ef2 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,6 +59,7 @@ protected: DECLARE_ACKNOWLEDGER (stem); DECLARE_ACKNOWLEDGER (stem_tremolo); DECLARE_ACKNOWLEDGER (note_column); + DECLARE_ACKNOWLEDGER (inline_accidental); public: TRANSLATOR_DECLARATIONS (Script_engraver); @@ -73,11 +74,10 @@ void Script_engraver::listen_articulation (Stream_event *ev) { /* Discard double articulations for part-combining. */ - int script_count = scripts_.size (); - for (int i = 0; i < script_count; i++) + for (vsize i = 0; i < scripts_.size (); i++) if (ly_is_equal (scripts_[i].event_ - ->get_property ("articulation-type"), - ev->get_property ("articulation-type"))) + ->get_property ("articulation-type"), + ev->get_property ("articulation-type"))) return; Script_tuple t; @@ -92,7 +92,7 @@ copy_property (Grob *g, SCM sym, SCM alist) { SCM entry = scm_assoc (sym, alist); if (scm_is_pair (entry)) - g->set_property (sym, scm_cdr (entry)); + g->set_property (sym, scm_cdr (entry)); } } @@ -101,8 +101,8 @@ copy_property (Grob *g, SCM sym, SCM alist) ScriptStaccato , ScriptMarcato, etc. ). */ void -make_script_from_event (Grob *p, Context *tg, - SCM art_type, int index) +make_script_from_event (Grob *p, Context *tg, + SCM art_type, int index) { SCM alist = tg->get_property ("scriptDefinitions"); SCM art = scm_assoc (art_type, alist); @@ -126,31 +126,31 @@ make_script_from_event (Grob *p, Context *tg, SCM sym = scm_caar (s); SCM type = scm_object_property (sym, ly_symbol2scm ("backend-type?")); if (!ly_is_procedure (type)) - continue; + continue; SCM val = scm_cdar (s); if (sym == ly_symbol2scm ("script-priority")) - { - priority_found = true; - /* Make sure they're in order of user input by adding index i. - Don't use the direction in this priority. Smaller means closer - to the head. */ - int prio = scm_to_int (val) + index; + { + priority_found = true; + /* Make sure they're in order of user input by adding index i. + Don't use the direction in this priority. Smaller means closer + to the head. */ + int prio = scm_to_int (val) + index; - val = scm_from_int (prio); - } + val = scm_from_int (prio); + } SCM preset = p->get_property_data (sym); if (val == SCM_EOL - || scm_call_1 (type, preset) == SCM_BOOL_F) - p->set_property (sym, val); + || scm_call_1 (type, preset) == SCM_BOOL_F) + p->set_property (sym, val); } if (!priority_found) { p->set_property ("script-priority", - scm_from_int (index)); + scm_from_int (index)); } } @@ -164,27 +164,26 @@ Script_engraver::process_music () Grob *p = make_item ("Script", ev->self_scm ()); make_script_from_event (p, context (), - ev->get_property ("articulation-type"), - i); + ev->get_property ("articulation-type"), + i); scripts_[i].script_ = p; SCM force_dir = ev->get_property ("direction"); if (is_direction (force_dir) && to_dir (force_dir)) - p->set_property ("direction", force_dir); + p->set_property ("direction", force_dir); } } void Script_engraver::acknowledge_stem (Grob_info info) { - int script_count = scripts_.size (); - for (int i = 0; i < script_count; i++) + for (vsize i = 0; i < scripts_.size (); i++) { Grob *e = scripts_[i].script_; if (to_dir (e->get_property ("side-relative-direction"))) - e->set_object ("direction-source", info.grob ()->self_scm ()); + e->set_object ("direction-source", info.grob ()->self_scm ()); Side_position_interface::add_support (e, info.grob ()); } @@ -193,14 +192,22 @@ Script_engraver::acknowledge_stem (Grob_info info) void Script_engraver::acknowledge_stem_tremolo (Grob_info info) { - int script_count = scripts_.size (); - for (int i = 0; i < script_count; i++) + for (vsize i = 0; i < scripts_.size (); i++) { Grob *e = scripts_[i].script_; Side_position_interface::add_support (e, info.grob ()); } } +void +Script_engraver::acknowledge_inline_accidental (Grob_info info) +{ + for (vsize i = 0; i < scripts_.size (); i++) + { + Grob *e = scripts_[i].script_; + Side_position_interface::add_support (e, info.grob ()); + } +} void Script_engraver::acknowledge_rhythmic_head (Grob_info info) @@ -208,16 +215,16 @@ Script_engraver::acknowledge_rhythmic_head (Grob_info info) if (info.event_cause ()) { for (vsize i = 0; i < scripts_.size (); i++) - { - Grob *e = scripts_[i].script_; - - if (Side_position_interface::get_axis (e) == X_AXIS - && !e->get_parent (Y_AXIS)) - { - e->set_parent (info.grob (), Y_AXIS); - } - Side_position_interface::add_support (e, info.grob ()); - } + { + Grob *e = scripts_[i].script_; + + if (Side_position_interface::get_axis (e) == X_AXIS + && !e->get_parent (Y_AXIS)) + { + e->set_parent (info.grob (), Y_AXIS); + } + Side_position_interface::add_support (e, info.grob ()); + } } } @@ -235,8 +242,8 @@ Script_engraver::acknowledge_note_column (Grob_info info) Grob *e = scripts_[i].script_; if (!e->get_parent (X_AXIS) - && Side_position_interface::get_axis (e) == Y_AXIS) - e->set_parent (info.grob (), X_AXIS); + && Side_position_interface::get_axis (e) == Y_AXIS) + e->set_parent (info.grob (), X_AXIS); } } @@ -250,17 +257,18 @@ ADD_ACKNOWLEDGER (Script_engraver, rhythmic_head); ADD_ACKNOWLEDGER (Script_engraver, stem); ADD_ACKNOWLEDGER (Script_engraver, note_column); ADD_ACKNOWLEDGER (Script_engraver, stem_tremolo); +ADD_ACKNOWLEDGER (Script_engraver, inline_accidental); ADD_TRANSLATOR (Script_engraver, - /* doc */ - "Handle note scripted articulations.", + /* doc */ + "Handle note scripted articulations.", - /* create */ - "Script ", + /* create */ + "Script ", - /* read */ - "scriptDefinitions ", + /* read */ + "scriptDefinitions ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/script-interface.cc b/lily/script-interface.cc index a1dfd85dc6..40a251a077 100644 --- a/lily/script-interface.cc +++ b/lily/script-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,9 +40,9 @@ Script_interface::get_stencil (Grob *me, Direction d) { SCM name_entry = scm_cdr (s); SCM str = ((scm_is_pair (name_entry)) ? index_get_cell (name_entry, d) - : name_entry); + : name_entry); return Font_interface::get_default_font (me) - ->find_by_name ("scripts." + ly_scm2string (str)); + ->find_by_name ("scripts." + ly_scm2string (str)); } else assert (false); @@ -59,7 +59,7 @@ Script_interface::calc_positioning_done (SCM smob) { Grob *stem = Note_column::get_stem (par); if (stem && Stem::first_head (stem)) - me->set_parent (Stem::first_head (stem), X_AXIS); + me->set_parent (Stem::first_head (stem), X_AXIS); } return SCM_BOOL_T; } @@ -111,7 +111,7 @@ Script_interface::calc_cross_staff (SCM smob) SCM avoid_slur = me->get_property ("avoid-slur"); if (slur && to_boolean (slur->get_property ("cross-staff")) && (avoid_slur == ly_symbol2scm ("outside") - || avoid_slur == ly_symbol2scm ("around"))) + || avoid_slur == ly_symbol2scm ("around"))) return SCM_BOOL_T; return SCM_BOOL_F; @@ -135,31 +135,31 @@ struct Text_script }; ADD_INTERFACE (Text_script, - "An object that is put above or below a note.", + "An object that is put above or below a note.", - /* properties */ - "add-stem-support " - "avoid-slur " - "script-priority " - "slur " - ); + /* properties */ + "add-stem-support " + "avoid-slur " + "script-priority " + "slur " + ); /* Hmm. Where should we put add-stem-support ? */ ADD_INTERFACE (Script_interface, - "An object that is put above or below a note.", - - /* properties */ - "add-stem-support " - "avoid-slur " - "direction-source " - "positioning-done " - "script-priority " - "script-stencil " - "side-relative-direction " - "slur " - "slur-padding " - "toward-stem-shift " - ); + "An object that is put above or below a note.", + + /* properties */ + "add-stem-support " + "avoid-slur " + "direction-source " + "positioning-done " + "script-priority " + "script-stencil " + "side-relative-direction " + "slur " + "slur-padding " + "toward-stem-shift " + ); diff --git a/lily/script-row-engraver.cc b/lily/script-row-engraver.cc index 430c2c9dc3..c7c4286021 100644 --- a/lily/script-row-engraver.cc +++ b/lily/script-row-engraver.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys - + Copyright (C) 2006--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,6 @@ #include "translator.icc" - /** Find potentially colliding scripts, and put them in a Script_row @@ -35,8 +34,8 @@ class Script_row_engraver : public Engraver { Grob *script_row_; - vector scripts_; - + vector scripts_; + public: TRANSLATOR_DECLARATIONS (Script_row_engraver); protected: @@ -57,9 +56,9 @@ Script_row_engraver::stop_translation_timestep () if (script_row_) { for (vsize i = 0; i < scripts_.size (); i++) - if (Accidental_placement::has_interface (scripts_[i]) - || Side_position_interface::get_axis (scripts_[i]) == X_AXIS) - Script_column::add_side_positioned (script_row_, scripts_[i]); + if (Accidental_placement::has_interface (scripts_[i]) + || Side_position_interface::get_axis (scripts_[i]) == X_AXIS) + Script_column::add_side_positioned (script_row_, scripts_[i]); } scripts_.clear (); @@ -73,18 +72,16 @@ Script_row_engraver::acknowledge_side_position (Grob_info inf) if (thing) { if (!Item::is_non_musical (thing)) - scripts_.push_back (thing); + scripts_.push_back (thing); } } - void Script_row_engraver::acknowledge_accidental_placement (Grob_info inf) { scripts_.push_back (inf.grob ()); } - void Script_row_engraver::process_acknowledged () { @@ -92,19 +89,18 @@ Script_row_engraver::process_acknowledged () script_row_ = make_item ("ScriptRow", SCM_EOL); } - ADD_ACKNOWLEDGER (Script_row_engraver, accidental_placement); ADD_ACKNOWLEDGER (Script_row_engraver, side_position); ADD_TRANSLATOR (Script_row_engraver, - /* doc */ - "Determine order in horizontal side position elements.", + /* doc */ + "Determine order in horizontal side position elements.", - /* create */ - "ScriptRow ", + /* create */ + "ScriptRow ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/self-alignment-interface.cc b/lily/self-alignment-interface.cc index 637ce67521..a37b587100 100644 --- a/lily/self-alignment-interface.cc +++ b/lily/self-alignment-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,8 +19,13 @@ #include "self-alignment-interface.hh" +#include "directional-element-interface.hh" #include "grob.hh" +#include "grob-array.hh" +#include "interval-minefield.hh" +#include "note-column.hh" #include "paper-column.hh" +#include "pointer-group-interface.hh" #include "warn.hh" MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1); @@ -48,21 +53,18 @@ SCM Self_alignment_interface::aligned_on_self (Grob *me, Axis a, bool pure, int start, int end) { SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") - : ly_symbol2scm ("self-alignment-Y"); + : ly_symbol2scm ("self-alignment-Y"); SCM align (me->internal_get_property (sym)); if (scm_is_number (align)) { Interval ext (me->maybe_pure_extent (me, a, pure, start, end)); - if (ext.is_empty ()) - programming_error ("cannot align on self: empty element"); - else - return scm_from_double (- ext.linear_combination (scm_to_double (align))); + if (!ext.is_empty ()) + return scm_from_double (- ext.linear_combination (scm_to_double (align))); } return scm_from_double (0.0); } - SCM Self_alignment_interface::centered_on_object (Grob *him, Axis a) { @@ -76,6 +78,27 @@ Self_alignment_interface::centered_on_x_parent (SCM smob) return centered_on_object (unsmob_grob (smob)->get_parent (X_AXIS), X_AXIS); } +MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_note_columns, 1); +SCM +Self_alignment_interface::centered_on_note_columns (SCM smob) +{ + Item *it = unsmob_item (smob)->get_column (); + if (!it) + return scm_from_double (0.0); + + extract_grob_set (it, "elements", elts); + vector ncs; + Interval centers; + for (vsize i = 0; i < elts.size (); i++) + if (Note_column::has_interface (elts[i])) + centers.add_point (scm_to_double (centered_on_object (elts[i], X_AXIS))); + + if (centers.is_empty ()) + return scm_from_double (0.0); + + return scm_from_double (centers.center ()); +} + MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_y_parent, 1); SCM Self_alignment_interface::centered_on_y_parent (SCM smob) @@ -90,14 +113,14 @@ Self_alignment_interface::x_centered_on_y_parent (SCM smob) return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), X_AXIS); } -MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_x_parent,1); +MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_x_parent, 1); SCM Self_alignment_interface::aligned_on_x_parent (SCM smob) { return aligned_on_parent (unsmob_grob (smob), X_AXIS); } -MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_y_parent,1); +MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_y_parent, 1); SCM Self_alignment_interface::aligned_on_y_parent (SCM smob) { @@ -114,7 +137,7 @@ Self_alignment_interface::aligned_on_parent (Grob *me, Axis a) Interval he = him->extent (him, a); SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") - : ly_symbol2scm ("self-alignment-Y"); + : ly_symbol2scm ("self-alignment-Y"); SCM align_prop (me->internal_get_property (sym)); if (!scm_is_number (align_prop)) @@ -135,37 +158,111 @@ Self_alignment_interface::aligned_on_parent (Grob *me, Axis a) return scm_from_double (x); } +MAKE_SCHEME_CALLBACK (Self_alignment_interface, avoid_x_colliding_grobs, 2); +SCM +Self_alignment_interface::avoid_x_colliding_grobs (SCM smob, SCM o) +{ + SCM avoided = avoid_colliding_grobs (unsmob_grob (smob), X_AXIS, robust_scm2double (o, 0.0)); + return scm_is_null (avoided) ? o : avoided; +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_colliding_grobs, 1); +SCM +Self_alignment_interface::x_colliding_grobs (SCM smob) +{ + Grob *me = unsmob_grob (smob); + extract_grob_set (me, "potential-X-colliding-grobs", pot); + vector act; + Direction d = get_grob_direction (me->get_parent (Y_AXIS)); + for (vsize i = 0; i < pot.size (); i++) + if (d == get_grob_direction (pot[i]) + && to_boolean (pot[i]->get_property ("cross-staff"))) + act.push_back (pot[i]); + + SCM grobs_scm = Grob_array::make_array (); + unsmob_grob_array (grobs_scm)->set_array (act); + + return grobs_scm; +} + +SCM +Self_alignment_interface::avoid_colliding_grobs (Grob *me, Axis a, Real offset) +{ + extract_grob_set (me, a == X_AXIS ? "X-colliding-grobs" : "Y-colliding-grobs", colls); + if (!colls.size ()) + return SCM_EOL; + vector ivs; + + Item *refp = dynamic_cast (common_refpoint_of_array (colls, me, a)); + if (!refp) + return SCM_EOL; + + Interval iv = me->extent (me, a) + offset; + for (vsize i = 0; i < colls.size (); i++) + ivs.push_back (colls[i]->extent (refp, a)); + + Interval_minefield minefield (Interval (iv.center (), iv.center ()), iv.length ()); + for (vsize i = 0; i < ivs.size (); i++) + minefield.add_forbidden_interval (ivs[i]); + minefield.solve (); + Interval pos = minefield.feasible_placements (); + + if (pos[LEFT] == pos[RIGHT]) + return SCM_EOL; + + Direction col_dir = ((abs (pos[LEFT] - iv.center ()) + + robust_scm2double (me->get_property ("collision-bias"), 0.0)) + > abs (pos[RIGHT] - iv.center ())) + ? RIGHT + : LEFT; + + return scm_from_double ((pos[col_dir] - (iv.length () / 2) + + col_dir + * robust_scm2double (me->get_property ("collision-padding"), 0.0))); +} + void Self_alignment_interface::set_center_parent (Grob *me, Axis a) { add_offset_callback (me, - (a == X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc, - a); + (a == X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc, + a); +} + +void +Self_alignment_interface::avoid_x_collisions (Grob *me) +{ + chain_offset_callback (me, avoid_x_colliding_grobs_proc, X_AXIS); } void Self_alignment_interface::set_align_self (Grob *me, Axis a) { add_offset_callback (me, - (a == X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc, - a); + (a == X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc, + a); } ADD_INTERFACE (Self_alignment_interface, - "Position this object on itself and/or on its parent. To this" - " end, the following functions are provided:\n" - "\n" - "@table @code\n" - "@item Self_alignment_interface::[xy]_aligned_on_self\n" - "Align self on reference point, using" - " @code{self-alignment-X} and @code{self-alignment-Y}." - "@item Self_alignment_interface::aligned_on_[xy]_parent\n" - "@item Self_alignment_interface::centered_on_[xy]_parent\n" - "Shift the object so its own reference point is centered on" - " the extent of the parent\n" - "@end table\n", - - /* properties */ - "self-alignment-X " - "self-alignment-Y " - ); + "Position this object on itself and/or on its parent. To this" + " end, the following functions are provided:\n" + "\n" + "@table @code\n" + "@item Self_alignment_interface::[xy]_aligned_on_self\n" + "Align self on reference point, using" + " @code{self-alignment-X} and @code{self-alignment-Y}." + "@item Self_alignment_interface::aligned_on_[xy]_parent\n" + "@item Self_alignment_interface::centered_on_[xy]_parent\n" + "Shift the object so its own reference point is centered on" + " the extent of the parent\n" + "@end table\n", + + /* properties */ + "collision-bias " + "collision-padding " + "potential-X-colliding-grobs " + "self-alignment-X " + "self-alignment-Y " + "X-colliding-grobs " + "Y-colliding-grobs " + ); diff --git a/lily/semi-tie-column.cc b/lily/semi-tie-column.cc index f31e23050a..f47171fb5a 100644 --- a/lily/semi-tie-column.cc +++ b/lily/semi-tie-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -30,21 +30,19 @@ #include "tie-formatting-problem.hh" #include "tie-column-format.hh" - ADD_INTERFACE (Semi_tie_column, - "The interface for a column of l.v. (laissez vibrer) ties.", - - /* properties */ - "positioning-done " - "head-direction " - "tie-configuration " - ); - + "The interface for a column of l.v. (laissez vibrer) ties.", + /* properties */ + "positioning-done " + "head-direction " + "tie-configuration " + "ties " + ); /* Cut & paste from tie-column.cc - */ + */ MAKE_SCHEME_CALLBACK (Semi_tie_column, calc_positioning_done, 1); SCM Semi_tie_column::calc_positioning_done (SCM smob) @@ -52,17 +50,16 @@ Semi_tie_column::calc_positioning_done (SCM smob) Grob *me = unsmob_grob (smob); me->set_property ("positioning-done", SCM_BOOL_T); - + extract_grob_set (me, "ties", lv_ro_ties); - vector lv_ties (lv_ro_ties); + vector lv_ties (lv_ro_ties); vector_sort (lv_ties, Semi_tie::less); Ties_configuration ties_config; - Tie_formatting_problem problem; - + problem.from_semi_ties (lv_ties, to_dir (me->get_property ("head-direction"))); SCM manual_configs = me->get_property ("tie-configuration"); @@ -72,17 +69,17 @@ Semi_tie_column::calc_positioning_done (SCM smob) for (vsize i = 0; i < lv_ties.size (); i++) { SCM cp = Tie::get_control_points (lv_ties[i], problem.common_x_refpoint (), base[i], - problem.details_); + problem.details_); lv_ties[i]->set_property ("control-points", cp); set_grob_direction (lv_ties[i], base[i].dir_); problem.set_debug_scoring (base); } - + return SCM_BOOL_T; } - + MAKE_SCHEME_CALLBACK (Semi_tie_column, calc_head_direction, 1); SCM Semi_tie_column::calc_head_direction (SCM smob) @@ -95,10 +92,10 @@ Semi_tie_column::calc_head_direction (SCM smob) { Direction this_d = to_dir (ties[i]->get_property ("head-direction")); if (i > 0 && d != this_d) - { - programming_error ("all semi-ties in a semi-tie-column should have the same head-direction"); - return scm_from_int (d); - } + { + programming_error ("all semi-ties in a semi-tie-column should have the same head-direction"); + return scm_from_int (d); + } d = this_d; } return scm_from_int (d); diff --git a/lily/semi-tie.cc b/lily/semi-tie.cc index 91d50a44be..02b7f29415 100644 --- a/lily/semi-tie.cc +++ b/lily/semi-tie.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -27,16 +27,16 @@ #include "staff-symbol-referencer.hh" ADD_INTERFACE (Semi_tie, - "A tie which is only on one side connected to a note head.", + "A tie which is only on one side connected to a note head.", - /* properties */ - "control-points " - "direction " - "details " - "head-direction " - "note-head " - "thickness " - ); + /* properties */ + "control-points " + "direction " + "details " + "head-direction " + "note-head " + "thickness " + ); MAKE_SCHEME_CALLBACK (Semi_tie, calc_control_points, 1) SCM @@ -44,15 +44,15 @@ Semi_tie::calc_control_points (SCM smob) { Grob *me = unsmob_grob (smob); (void) me->get_property ("direction"); - + if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS))) { me->get_parent (Y_AXIS)->get_property ("positioning-done"); } else { - programming_error ("lv tie without Semi_tie_column. Killing lv tie."); - me->suicide (); + programming_error ("lv tie without Semi_tie_column. Killing lv tie."); + me->suicide (); } return me->get_property_data ("control-points"); @@ -67,8 +67,8 @@ Semi_tie::get_position (Grob *me) bool Semi_tie::less (Grob *const &s1, - Grob *const &s2) + Grob *const &s2) { return get_position (s1) < get_position (s2); } - + diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index 86c45fb55a..288b948152 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,7 +35,7 @@ struct Spacings { Item *staff_spacing_; - vector note_spacings_; + vector note_spacings_; Spacings () { @@ -64,7 +64,7 @@ protected: void stop_translation_timestep (); void start_translation_timestep (); - vector break_aligned_; + vector break_aligned_; public: TRANSLATOR_DECLARATIONS (Separating_line_group_engraver); }; @@ -94,24 +94,24 @@ Separating_line_group_engraver::acknowledge_item (Grob_info i) context ()->set_property ("hasStaffSpacing", SCM_BOOL_T); Pointer_group_interface::add_grob (current_spacings_.staff_spacing_, - ly_symbol2scm ("left-items"), - col); - + ly_symbol2scm ("left-items"), + col); + if (!last_spacings_.note_spacings_.size () - && last_spacings_.staff_spacing_) - { - SCM ri = last_spacings_.staff_spacing_->get_object ("right-items"); - Grob_array *ga = unsmob_grob_array (ri); - if (!ga) - { - SCM ga_scm = Grob_array::make_array (); - last_spacings_.staff_spacing_->set_object ("right-items", ga_scm); - ga = unsmob_grob_array (ga_scm); - } - - ga->clear (); - ga->add (col); - } + && last_spacings_.staff_spacing_) + { + SCM ri = last_spacings_.staff_spacing_->get_object ("right-items"); + Grob_array *ga = unsmob_grob_array (ri); + if (!ga) + { + SCM ga_scm = Grob_array::make_array (); + last_spacings_.staff_spacing_->set_object ("right-items", ga_scm); + ga = unsmob_grob_array (ga_scm); + } + + ga->clear (); + ga->add (col); + } } } @@ -135,11 +135,11 @@ Separating_line_group_engraver::stop_translation_timestep () SCM smob = break_aligned_[i]->self_scm (); if (Item *sp = current_spacings_.staff_spacing_) - Pointer_group_interface::add_grob (sp, ly_symbol2scm ("left-break-aligned"), smob); + Pointer_group_interface::add_grob (sp, ly_symbol2scm ("left-break-aligned"), smob); for (vsize j = 0; j < last_spacings_.note_spacings_.size (); j++) - Pointer_group_interface::add_grob (last_spacings_.note_spacings_[j], - ly_symbol2scm ("right-break-aligned"), smob); + Pointer_group_interface::add_grob (last_spacings_.note_spacings_[j], + ly_symbol2scm ("right-break-aligned"), smob); } if (!current_spacings_.is_empty ()) @@ -157,15 +157,15 @@ ADD_ACKNOWLEDGER (Separating_line_group_engraver, item); ADD_ACKNOWLEDGER (Separating_line_group_engraver, break_aligned); ADD_TRANSLATOR (Separating_line_group_engraver, - /* doc */ - "Generate objects for computing spacing parameters.", + /* doc */ + "Generate objects for computing spacing parameters.", - /* create */ - "StaffSpacing ", + /* create */ + "StaffSpacing ", - /* read */ - "createSpacing ", + /* read */ + "createSpacing ", - /* write */ - "hasStaffSpacing " - ); + /* write */ + "hasStaffSpacing " + ); diff --git a/lily/separation-item.cc b/lily/separation-item.cc index 013e457034..b3e574dad8 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,17 +46,17 @@ Separation_item::add_conditional_item (Grob *me, Grob *e) Real Separation_item::set_distance (Item *l, Item *r, Real padding) { - Drul_array lines (Skyline_pair::unsmob (l->get_property ("horizontal-skylines")), - Skyline_pair::unsmob (r->get_property ("horizontal-skylines"))); + Drul_array lines (Skyline_pair::unsmob (l->get_property ("horizontal-skylines")), + Skyline_pair::unsmob (r->get_property ("horizontal-skylines"))); Skyline right = conditional_skyline (r, l); right.merge ((*lines[RIGHT])[LEFT]); - + Real dist = padding + (*lines[LEFT])[RIGHT].distance (right); if (dist > 0) { Rod rod; - rod.item_drul_ = Drul_array (l, r); + rod.item_drul_ = Drul_array (l, r); rod.distance_ = dist; rod.add_to_cols (); @@ -84,8 +84,7 @@ Separation_item::conditional_skyline (Grob *me, Grob *left) return Skyline (bs, horizon_padding, Y_AXIS, LEFT); } - -MAKE_SCHEME_CALLBACK (Separation_item, calc_skylines,1); +MAKE_SCHEME_CALLBACK (Separation_item, calc_skylines, 1); SCM Separation_item::calc_skylines (SCM smob) { @@ -109,48 +108,37 @@ Separation_item::boxes (Grob *me, Grob *left) Paper_column *pc = item->get_column (); vector out; extract_grob_set (me, left ? "conditional-elements" : "elements", read_only_elts); - vector elts; + vector elts; if (left) elts = Accidental_placement::get_relevant_accidentals (read_only_elts, left); else - { - elts = read_only_elts; - - /* This is a special-case for NoteColumn: we want to include arpeggio in its - skyline (so spacing takes it into account) but we don't want to include it - in the NoteColumn's extent because some spanners (eg. Hairpin) bound themselves - on the NoteColumn and we don't want them to include arpeggios in their bounds. - */ - if (Grob *a = Note_column::arpeggio (me)) { - elts.push_back (a); - } - } + elts = read_only_elts; Grob *ycommon = common_refpoint_of_array (elts, me, Y_AXIS); - + for (vsize i = 0; i < elts.size (); i++) { Item *il = dynamic_cast (elts[i]); if (pc != il->get_column ()) - continue; + continue; /* ugh. We want to exclude groups of grobs (so that we insert each grob - individually into the skyline instead of adding a single box that - bounds all of them). However, we can't exclude an axis-group that - adds to its childrens' stencil. Currently, this is just TrillPitchGroup; - hence the check for note-head-interface. */ + individually into the skyline instead of adding a single box that + bounds all of them). However, we can't exclude an axis-group that + adds to its childrens' stencil. Currently, this is just TrillPitchGroup; + hence the check for note-head-interface. */ if (Axis_group_interface::has_interface (il) - && !Note_head::has_interface (il)) - continue; + && !Note_head::has_interface (il)) + continue; Interval y (il->pure_height (ycommon, 0, very_large)); Interval x (il->extent (pc, X_AXIS)); Interval extra_width = robust_scm2interval (elts[i]->get_property ("extra-spacing-width"), - Interval (-0.1, 0.1)); + Interval (-0.1, 0.1)); Interval extra_height = robust_scm2interval (elts[i]->get_property ("extra-spacing-height"), - Interval (0.0, 0.0)); + Interval (0.0, 0.0)); x[LEFT] += extra_width[LEFT]; x[RIGHT] += extra_width[RIGHT]; @@ -158,10 +146,10 @@ Separation_item::boxes (Grob *me, Grob *left) y[UP] += extra_height[UP]; if (!x.is_empty () && !y.is_empty ()) - out.push_back (Box (x, y)); + out.push_back (Box (x, y)); } - return out; + return out; } MAKE_SCHEME_CALLBACK (Separation_item, print, 1) @@ -182,13 +170,13 @@ Separation_item::print (SCM smob) } ADD_INTERFACE (Separation_item, - "Item that computes widths to generate spacing rods.", - - /* properties */ - "X-extent " - "conditional-elements " - "elements " - "padding " - "horizontal-skylines " - "skyline-vertical-padding " - ); + "Item that computes widths to generate spacing rods.", + + /* properties */ + "X-extent " + "conditional-elements " + "elements " + "padding " + "horizontal-skylines " + "skyline-vertical-padding " + ); diff --git a/lily/sequential-iterator.cc b/lily/sequential-iterator.cc index 84d677df00..d616abb0f9 100644 --- a/lily/sequential-iterator.cc +++ b/lily/sequential-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,7 +55,7 @@ Sequential_iterator::get_music_list () const { Music *m = get_music (); SCM proc = m->get_property ("elements-callback"); - if (scm_procedure_p (proc)) + if (ly_is_procedure (proc)) return scm_call_1 (proc, m->self_scm ()); else return SCM_EOL; @@ -101,26 +101,26 @@ create_grace_fixup_list (SCM cursor) Moment l = mus->get_length () - s; if (s.grace_part_) - { - if (last != Moment (-1)) - { - Grace_fixup *p = new Grace_fixup; - p->start_ = last; - p->length_ = here - last; - p->grace_start_ = s.grace_part_; - p->next_ = 0; - *tail = p; - tail = &(*tail)->next_; - } - - here.grace_part_ = s.grace_part_; - } + { + if (last != Moment (-1)) + { + Grace_fixup *p = new Grace_fixup; + p->start_ = last; + p->length_ = here - last; + p->grace_start_ = s.grace_part_; + p->next_ = 0; + *tail = p; + tail = &(*tail)->next_; + } + + here.grace_part_ = s.grace_part_; + } if (l.to_bool ()) - { - last = here; - here += l; - } + { + last = here; + here += l; + } } return head; @@ -181,10 +181,10 @@ Sequential_iterator::next_element (bool) else { /* - !len.grace_part_ || len.main_part_ + !len.grace_part_ || len.main_part_ - We skip over a big chunk (mainpart != 0). Any starting graces - in that chunk should be in len.grace_part_ + We skip over a big chunk (mainpart != 0). Any starting graces + in that chunk should be in len.grace_part_ */ last_mom_ = here_mom_; @@ -207,28 +207,28 @@ Sequential_iterator::process (Moment until) { Grace_fixup *gf = get_grace_fixup (); if (gf - && gf->start_ + gf->length_ - + Moment (Rational (0), gf->grace_start_) == until) - { - /* - do the stuff/note/rest preceding a grace. - */ - iter_->process (iter_->music_get_length ()); - } + && gf->start_ + gf->length_ + + Moment (Rational (0), gf->grace_start_) == until) + { + /* + do the stuff/note/rest preceding a grace. + */ + iter_->process (iter_->music_get_length ()); + } else - { - Moment w = until - here_mom_ + iter_->music_start_mom (); - iter_->process (w); - } + { + Moment w = until - here_mom_ + iter_->music_start_mom (); + iter_->process (w); + } /* - if the iter is still OK, there must be events left that have + if the iter is still OK, there must be events left that have - TIME > LEFT + TIME > LEFT */ if (iter_->ok ()) - return; + return; descend_to_child (iter_->get_outlet ()); next_element (true); diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 9e8c71f6e6..6fad89ea54 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,11 +19,12 @@ #include "side-position-interface.hh" -#include // ceil. +#include // ceil. #include using namespace std; +#include "accidental-interface.hh" #include "axis-group-interface.hh" #include "directional-element-interface.hh" #include "grob.hh" @@ -45,6 +46,37 @@ Side_position_interface::add_support (Grob *me, Grob *e) Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("side-support-elements"), e); } +SCM +finish_offset (Grob *me, Direction dir, Real total_off, Real *current_offset) +{ + Real ss = Staff_symbol_referencer::staff_space (me); + Real minimum_space = ss * robust_scm2double (me->get_property ("minimum-space"), -1); + total_off += dir * ss * robust_scm2double (me->get_property ("padding"), 0); + + if (minimum_space >= 0 + && dir + && total_off * dir < minimum_space) + total_off = minimum_space * dir; + + if (current_offset) + total_off = dir * max (dir * total_off, + dir * (*current_offset)); + + /* FIXME: 1000 should relate to paper size. */ + if (fabs (total_off) > 1000) + { + string msg + = String_convert::form_string ("Improbable offset for grob %s: %f", + me->name ().c_str (), total_off); + + programming_error (msg); + if (strict_infinity_checking) + scm_misc_error (__FUNCTION__, "Improbable offset.", SCM_EOL); + } + + return scm_from_double (total_off); +} + /* Put the element next to the support, optionally taking in account the extent of the support. @@ -52,21 +84,19 @@ Side_position_interface::add_support (Grob *me, Grob *e) */ SCM Side_position_interface::general_side_position (Grob *me, Axis a, bool use_extents, - bool include_my_extent, - bool pure, int start, int end, - Real *current_offset) + bool include_my_extent, + bool pure, int start, int end, + Real *current_offset) { - Real ss = Staff_symbol_referencer::staff_space (me); - extract_grob_set (me, "side-support-elements", support); Grob *common = common_refpoint_of_array (support, me->get_parent (a), a); Grob *staff_symbol = Staff_symbol_referencer::get_staff_symbol (me); - bool include_staff = - staff_symbol - && a == Y_AXIS - && scm_is_number (me->get_property ("staff-padding")) - && !to_boolean (me->get_property ("quantize-position")); + bool include_staff + = staff_symbol + && a == Y_AXIS + && scm_is_number (me->get_property ("staff-padding")) + && !to_boolean (me->get_property ("quantize-position")); Interval dim; Interval staff_extents; @@ -76,7 +106,7 @@ Side_position_interface::general_side_position (Grob *me, Axis a, bool use_exten staff_extents = staff_symbol->maybe_pure_extent (common, Y_AXIS, pure, start, end); if (include_staff) - dim.unite (staff_extents); + dim.unite (staff_extents); } Direction dir = get_grob_direction (me); @@ -89,70 +119,135 @@ Side_position_interface::general_side_position (Grob *me, Axis a, bool use_exten // ignoring the stem solves cyclic dependencies if the stem is // attached to a cross-staff beam. if (a == Y_AXIS - && Stem::has_interface (e) - && dir == - get_grob_direction (e)) - continue; + && Stem::has_interface (e) + && dir == - get_grob_direction (e)) + continue; if (e) - { - if (use_extents) - dim.unite (e->maybe_pure_extent (common, a, pure, start, end)); - else - { - Real x = e->maybe_pure_coordinate (common, a, pure, start, end); - dim.unite (Interval (x, x)); - } - } + { + if (use_extents) + dim.unite (e->maybe_pure_extent (common, a, pure, start, end)); + else + { + Real x = e->maybe_pure_coordinate (common, a, pure, start, end); + dim.unite (Interval (x, x)); + } + } } if (dim.is_empty ()) dim = Interval (0, 0); Real off = me->get_parent (a)->maybe_pure_coordinate (common, a, pure, start, end); - Real minimum_space = ss * robust_scm2double (me->get_property ("minimum-space"), -1); Real total_off = dim.linear_combination (dir) - off; - total_off += dir * ss * robust_scm2double (me->get_property ("padding"), 0); - - if (minimum_space >= 0 - && dir - && total_off * dir < minimum_space) - total_off = minimum_space * dir; - if (include_my_extent) { Interval iv = me->maybe_pure_extent (me, a, pure, start, end); if (!iv.is_empty ()) - { - if (!dir) - { - programming_error ("direction unknown, but aligned-side wanted"); - dir = DOWN; - } - total_off += -iv[-dir]; - } + { + if (!dir) + { + programming_error ("direction unknown, but aligned-side wanted"); + dir = DOWN; + } + total_off += -iv[-dir]; + } } - if (current_offset) - total_off = dir * max (dir * total_off, - dir * (*current_offset)); + return finish_offset (me, dir, total_off, current_offset); +} +SCM +Side_position_interface::skyline_side_position (Grob *me, Axis a, + bool pure, int start, int end, + Real *current_offset) +{ + extract_grob_set (me, "side-support-elements", support); - /* FIXME: 1000 should relate to paper size. */ - if (fabs (total_off) > 1000) + Grob *common[2]; + for (Axis ax = X_AXIS; ax < NO_AXES; incr (ax)) + common[ax] = common_refpoint_of_array (support, ax == a ? me->get_parent (ax) : me, ax); + + Grob *staff_symbol = Staff_symbol_referencer::get_staff_symbol (me); + Direction dir = get_grob_direction (me); + + Box off; + for (Axis ax = X_AXIS; ax < NO_AXES; incr (ax)) { - string msg - = String_convert::form_string ("Improbable offset for grob %s: %f", - me->name ().c_str (), total_off); + if (ax == a) + off[ax] = me->get_parent (ax)->maybe_pure_coordinate (common[ax], ax, pure, start, end) + + me->maybe_pure_extent (me, ax, pure, start, end); + else + off[ax] = me->maybe_pure_extent (common[ax], ax, pure, start, end); + } - programming_error (msg); - if (strict_infinity_checking) - scm_misc_error (__FUNCTION__, "Improbable offset.", SCM_EOL); + if (off[X_AXIS].is_empty () || off[Y_AXIS].is_empty ()) + return scm_from_double (0.0); + + Real skyline_padding = 0.1; + + Skyline my_dim (off, skyline_padding, other_axis (a), -dir); + + bool include_staff + = staff_symbol + && a == Y_AXIS + && scm_is_number (me->get_property ("staff-padding")) + && !to_boolean (me->get_property ("quantize-position")); + + vector boxes; + Real min_h = dir == LEFT ? infinity_f : -infinity_f; + for (vsize i = 0; i < support.size (); i++) + { + Grob *e = support[i]; + + // In the case of a stem, we will find a note head as well + // ignoring the stem solves cyclic dependencies if the stem is + // attached to a cross-staff beam. + if (a == Y_AXIS + && Stem::has_interface (e) + && dir == - get_grob_direction (e)) + continue; + + if (e) + { + if (Accidental_interface::has_interface (e)) + { + vector bs = Accidental_interface::accurate_boxes (e, common); + boxes.insert (boxes.end (), bs.begin (), bs.end ()); + } + else + { + Box b; + for (Axis ax = X_AXIS; ax < NO_AXES; incr (ax)) + b[ax] = e->maybe_pure_extent (common[ax], ax, pure, start, end); + + if (b[X_AXIS].is_empty () || b[Y_AXIS].is_empty ()) + continue; + + boxes.push_back (b); + min_h = minmax (dir, b[a][-dir], min_h); + } + } } - return scm_from_double (total_off); -} + Skyline dim (boxes, skyline_padding, other_axis (a), dir); + if (!boxes.size ()) + dim.set_minimum_height (0.0); + else + dim.set_minimum_height (min_h); + if (include_staff) + { + Interval staff_extents; + common[Y_AXIS] = staff_symbol->common_refpoint (common[Y_AXIS], Y_AXIS); + staff_extents = staff_symbol->maybe_pure_extent (common[Y_AXIS], Y_AXIS, pure, start, end); + dim.set_minimum_height (minmax (dir, min_h, staff_extents[dir])); + } + + Real total_off = dir * dim.distance (my_dim); + return finish_offset (me, dir, total_off, current_offset); +} MAKE_SCHEME_CALLBACK (Side_position_interface, y_aligned_on_support_refpoints, 1); SCM @@ -166,10 +261,9 @@ SCM Side_position_interface::pure_y_aligned_on_support_refpoints (SCM smob, SCM start, SCM end) { return general_side_position (unsmob_grob (smob), Y_AXIS, false, false, - true, scm_to_int (start), scm_to_int (end), 0); + true, scm_to_int (start), scm_to_int (end), 0); } - /* Position next to support, taking into account my own dimensions and padding. */ @@ -187,7 +281,6 @@ axis_aligned_side_helper (SCM smob, Axis a, bool pure, int start, int end, SCM c return Side_position_interface::aligned_side (unsmob_grob (smob), a, pure, start, end, current_off_ptr); } - MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Side_position_interface, x_aligned_side, 2, 1, ""); SCM Side_position_interface::x_aligned_side (SCM smob, SCM current_off) @@ -207,9 +300,9 @@ SCM Side_position_interface::pure_y_aligned_side (SCM smob, SCM start, SCM end, SCM cur_off) { return axis_aligned_side_helper (smob, Y_AXIS, true, - scm_to_int (start), - scm_to_int (end), - cur_off); + scm_to_int (start), + scm_to_int (end), + cur_off); } MAKE_SCHEME_CALLBACK (Side_position_interface, calc_cross_staff, 1) @@ -229,11 +322,14 @@ Side_position_interface::calc_cross_staff (SCM smob) SCM Side_position_interface::aligned_side (Grob *me, Axis a, bool pure, int start, int end, - Real *current_off) + Real *current_off) { Direction dir = get_grob_direction (me); + bool skyline = to_boolean (me->get_property ("use-skylines")); - Real o = scm_to_double (general_side_position (me, a, true, true, pure, start, end, current_off)); + Real o = scm_to_double (skyline + ? skyline_side_position (me, a, pure, start, end, current_off) + : general_side_position (me, a, true, true, pure, start, end, current_off)); /* Maintain a minimum distance to the staff. This is similar to side @@ -244,33 +340,35 @@ Side_position_interface::aligned_side (Grob *me, Axis a, bool pure, int start, i if (staff && a == Y_AXIS) { if (to_boolean (me->get_property ("quantize-position"))) - { - Grob *common = me->common_refpoint (staff, Y_AXIS); - Real my_off = me->get_parent (Y_AXIS)->maybe_pure_coordinate (common, Y_AXIS, pure, start, end); - Real staff_off = staff->maybe_pure_coordinate (common, Y_AXIS, pure, start, end); - Real ss = Staff_symbol::staff_space (staff); - Real position = 2 * (my_off + o - staff_off) / ss; - Real rounded = directed_round (position, dir); - Grob *head = me->get_parent (X_AXIS); - - if (fabs (position) <= 2 * Staff_symbol_referencer::staff_radius (me) + 1 - /* In case of a ledger lines, quantize even if we're outside the staff. */ - || (Note_head::has_interface (head) - - && abs (Staff_symbol_referencer::get_position (head)) > abs (position))) - { - o += (rounded - position) * 0.5 * ss; - if (Staff_symbol_referencer::on_line (me, int (rounded))) - o += dir * 0.5 * ss; - } - } + { + Grob *common = me->common_refpoint (staff, Y_AXIS); + Real my_off = me->get_parent (Y_AXIS)->maybe_pure_coordinate (common, Y_AXIS, pure, start, end); + Real staff_off = staff->maybe_pure_coordinate (common, Y_AXIS, pure, start, end); + Real ss = Staff_symbol::staff_space (staff); + Real position = 2 * (my_off + o - staff_off) / ss; + Real rounded = directed_round (position, dir); + Grob *head = me->get_parent (X_AXIS); + + Interval staff_span = Staff_symbol::line_span (staff); + staff_span.widen (1); + if (staff_span.contains (position) + /* In case of a ledger lines, quantize even if we're outside the staff. */ + || (Note_head::has_interface (head) + + && abs (Staff_symbol_referencer::get_position (head)) > abs (position))) + { + o += (rounded - position) * 0.5 * ss; + if (Staff_symbol_referencer::on_line (me, int (rounded))) + o += dir * 0.5 * ss; + } + } else if (scm_is_number (me->get_property ("staff-padding")) && dir) - { - Interval iv = me->maybe_pure_extent (me, a, pure, start, end); + { + Interval iv = me->maybe_pure_extent (me, a, pure, start, end); - Real staff_padding - = Staff_symbol_referencer::staff_space (me) - * scm_to_double (me->get_property ("staff-padding")); + Real staff_padding + = Staff_symbol_referencer::staff_space (me) + * scm_to_double (me->get_property ("staff-padding")); Grob *parent = me->get_parent (Y_AXIS); Grob *common = me->common_refpoint (staff, Y_AXIS); @@ -281,7 +379,7 @@ Side_position_interface::aligned_side (Grob *me, Axis a, bool pure, int start, i - dir * (o + iv[-dir]) + dir * (staff_position - parent_position)); o += dir * max (diff, 0.0); - } + } } return scm_from_double (o); } @@ -293,10 +391,10 @@ Side_position_interface::set_axis (Grob *me, Axis a) { me->set_property ("side-axis", scm_from_int (a)); chain_offset_callback (me, - (a==X_AXIS) - ? x_aligned_side_proc - : y_aligned_side_proc, - a); + (a == X_AXIS) + ? x_aligned_side_proc + : y_aligned_side_proc, + a); } } @@ -307,7 +405,7 @@ Side_position_interface::get_axis (Grob *me) return Axis (scm_to_int (me->get_property ("side-axis"))); string msg = String_convert::form_string ("side-axis not set for grob %s.", - me->name ().c_str ()); + me->name ().c_str ()); me->programming_error (msg); return NO_AXES; } @@ -317,7 +415,7 @@ SCM Side_position_interface::move_to_extremal_staff (SCM smob) { Grob *me = unsmob_grob (smob); - System *sys = dynamic_cast (me->get_system ()); + System *sys = dynamic_cast (me->get_system ()); Direction dir = get_grob_direction (me); if (dir != DOWN) dir = UP; @@ -344,36 +442,36 @@ Side_position_interface::move_to_extremal_staff (SCM smob) Grob_array *ga = unsmob_grob_array (me->get_object ("side-support-elements")); if (ga) { - vector const& elts = ga->array (); - vector new_elts; + vector const &elts = ga->array (); + vector new_elts; for (vsize i = 0; i < elts.size (); ++i) - { - if (me->common_refpoint (elts[i], Y_AXIS) == top_staff) - new_elts.push_back (elts[i]); - } + { + if (me->common_refpoint (elts[i], Y_AXIS) == top_staff) + new_elts.push_back (elts[i]); + } ga->set_array (new_elts); } return SCM_BOOL_T; } - ADD_INTERFACE (Side_position_interface, - "Position a victim object (this one) next to other objects" - " (the support). The property @code{direction} signifies where" - " to put the victim object relative to the support (left or" - " right, up or down?)\n" - "\n" - "The routine also takes the size of the staff into account if" - " @code{staff-padding} is set. If undefined, the staff symbol" - " is ignored.", - - /* properties */ - "direction " - "minimum-space " - "padding " - "quantize-position " - "side-axis " - "side-support-elements " - "slur-padding " - "staff-padding " - ); + "Position a victim object (this one) next to other objects" + " (the support). The property @code{direction} signifies where" + " to put the victim object relative to the support (left or" + " right, up or down?)\n" + "\n" + "The routine also takes the size of the staff into account if" + " @code{staff-padding} is set. If undefined, the staff symbol" + " is ignored.", + + /* properties */ + "direction " + "minimum-space " + "padding " + "quantize-position " + "side-axis " + "side-support-elements " + "slur-padding " + "staff-padding " + "use-skylines " + ); diff --git a/lily/simple-closure.cc b/lily/simple-closure.cc index 7c46c0198b..0c5dca8e95 100644 --- a/lily/simple-closure.cc +++ b/lily/simple-closure.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -33,7 +33,7 @@ SCM simple_closure_expression (SCM smob) { assert (is_simple_closure (smob)); - return (SCM) SCM_CELL_WORD_1(smob); + return (SCM) SCM_CELL_WORD_1 (smob); } SCM @@ -44,33 +44,33 @@ evaluate_args (SCM delayed_argument, SCM args, bool pure, int start, int end) for (SCM s = args; scm_is_pair (s); s = scm_cdr (s)) { *tail = scm_cons (evaluate_with_simple_closure (delayed_argument, scm_car (s), - pure, start, end), - SCM_EOL); + pure, start, end), + SCM_EOL); if (scm_car (*tail) == SCM_UNSPECIFIED) - return SCM_UNSPECIFIED; + return SCM_UNSPECIFIED; tail = SCM_CDRLOC (*tail); } - + return new_args; } SCM evaluate_with_simple_closure (SCM delayed_argument, - SCM expr, - bool pure, - int start, - int end) + SCM expr, + bool pure, + int start, + int end) { if (is_simple_closure (expr)) { SCM inside = simple_closure_expression (expr); SCM args = scm_cons (delayed_argument, - evaluate_args (delayed_argument, scm_cdr (inside), - pure, start, end)); + evaluate_args (delayed_argument, scm_cdr (inside), + pure, start, end)); if (scm_cdr (args) == SCM_UNSPECIFIED) - return SCM_UNSPECIFIED; + return SCM_UNSPECIFIED; if (pure) - return call_pure_function (scm_car (inside), args, start, end); + return call_pure_function (scm_car (inside), args, start, end); return scm_apply_0 (scm_car (inside), args); } else if (!scm_is_pair (expr)) @@ -81,32 +81,32 @@ evaluate_with_simple_closure (SCM delayed_argument, { SCM args = evaluate_args (delayed_argument, scm_cdr (expr), pure, start, end); if (args == SCM_UNSPECIFIED) - return SCM_UNSPECIFIED; + return SCM_UNSPECIFIED; if (pure) - return call_pure_function (scm_car (expr), args, start, end); + return call_pure_function (scm_car (expr), args, start, end); return scm_apply_0 (scm_car (expr), args); } else - // ugh. deviation from standard. Should print error? - return evaluate_args (delayed_argument, scm_cdr (expr), pure, start, end); - + // ugh. deviation from standard. Should print error? + return evaluate_args (delayed_argument, scm_cdr (expr), pure, start, end); + assert (false); return SCM_EOL; } LY_DEFINE (ly_simple_closure_p, "ly:simple-closure?", - 1, 0, 0, (SCM clos), - "Is @var{clos} a simple closure?") + 1, 0, 0, (SCM clos), + "Is @var{clos} a simple closure?") { return scm_from_bool (is_simple_closure (clos)); } LY_DEFINE (ly_make_simple_closure, "ly:make-simple-closure", - 1, 0, 0, (SCM expr), - "Make a simple closure. @var{expr} should be form of" - " @code{(@var{func} @var{a1} @var{a2} @dots{})}, and will be" - " invoked as @code{(@var{func} @var{delayed-arg} @var{a1}" - " @var{a2} @dots{})}.") + 1, 0, 0, (SCM expr), + "Make a simple closure. @var{expr} should be form of" + " @code{(@var{func} @var{a1} @var{a2} @dots{})}, and will be" + " invoked as @code{(@var{func} @var{delayed-arg} @var{a1}" + " @var{a2} @dots{})}.") { SCM z; @@ -115,10 +115,10 @@ LY_DEFINE (ly_make_simple_closure, "ly:make-simple-closure", } LY_DEFINE (ly_eval_simple_closure, "ly:eval-simple-closure", - 2, 2, 0, (SCM delayed, SCM closure, SCM scm_start, SCM scm_end), - "Evaluate a simple @var{closure} with the given @var{delayed}" - " argument. If @var{scm-start} and @var{scm-end} are defined," - " evaluate it purely with those start and end points.") + 2, 2, 0, (SCM delayed, SCM closure, SCM scm_start, SCM scm_end), + "Evaluate a simple @var{closure} with the given @var{delayed}" + " argument. If @var{scm-start} and @var{scm-end} are defined," + " evaluate it purely with those start and end points.") { bool pure = (scm_is_number (scm_start) && scm_is_number (scm_end)); int start = robust_scm2int (scm_start, 0); @@ -126,7 +126,7 @@ LY_DEFINE (ly_eval_simple_closure, "ly:eval-simple-closure", SCM expr = simple_closure_expression (closure); return evaluate_with_simple_closure (delayed, expr, pure, start, end); } - + int print_simple_closure (SCM s, SCM port, scm_print_state *) { @@ -136,7 +136,6 @@ print_simple_closure (SCM s, SCM port, scm_print_state *) return 1; } - void init_simple_closure () { simple_closure_tag = scm_make_smob_type ("simple-closure", 0); @@ -144,6 +143,4 @@ void init_simple_closure () scm_set_smob_print (simple_closure_tag, print_simple_closure); }; - - ADD_SCM_INIT_FUNC (simple_closure, init_simple_closure); diff --git a/lily/simple-music-iterator.cc b/lily/simple-music-iterator.cc index e2910ba25c..60856235ee 100644 --- a/lily/simple-music-iterator.cc +++ b/lily/simple-music-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/lily/simple-spacer-scheme.cc b/lily/simple-spacer-scheme.cc index 3df7d2f7dd..3b47562595 100644 --- a/lily/simple-spacer-scheme.cc +++ b/lily/simple-spacer-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,27 +25,27 @@ #include "simple-spacer.hh" LY_DEFINE (ly_solve_spring_rod_problem, "ly:solve-spring-rod-problem", - 4, 1, 0, (SCM springs, SCM rods, SCM length, SCM ragged), - "Solve a spring and rod problem for @var{count} objects, that" - " are connected by @var{count}-1 @var{springs}, and an arbitrary" - " number of @var{rods}. @var{count} is implicitly given by" - " @var{springs} and @var{rods}. The @var{springs} argument has" - " the format @code{(ideal, inverse_hook)} and @var{rods} is of" - " the form @code{(idx1, idx2, distance)}.\n" - "\n" - "@var{length} is a number, @var{ragged} a boolean.\n" - "\n" - "The function returns a list containing the force (positive for" - " stretching, negative for compressing and @code{#f} for" - " non-satisfied constraints) followed by @var{spring-count}+1" - " positions of the objects.") + 4, 1, 0, (SCM springs, SCM rods, SCM length, SCM ragged), + "Solve a spring and rod problem for @var{count} objects, that" + " are connected by @var{count}-1 @var{springs}, and an arbitrary" + " number of @var{rods}. @var{count} is implicitly given by" + " @var{springs} and @var{rods}. The @var{springs} argument has" + " the format @code{(ideal, inverse_hook)} and @var{rods} is of" + " the form @code{(idx1, idx2, distance)}.\n" + "\n" + "@var{length} is a number, @var{ragged} a boolean.\n" + "\n" + "The function returns a list containing the force (positive for" + " stretching, negative for compressing and @code{#f} for" + " non-satisfied constraints) followed by @var{spring-count}+1" + " positions of the objects.") { int len = scm_ilength (springs); if (len == 0) return scm_list_2 (scm_from_double (0.0), scm_from_double (0.0)); SCM_ASSERT_TYPE (len >= 0, springs, SCM_ARG1, __FUNCTION__, "list of springs"); - SCM_ASSERT_TYPE (scm_ilength (rods) > 0, rods, SCM_ARG1, __FUNCTION__, "list of rods"); + SCM_ASSERT_TYPE (scm_ilength (rods) > 0, rods, SCM_ARG1, __FUNCTION__, "list of rods"); LY_ASSERT_TYPE (scm_is_number, length, 3); bool is_ragged = ragged == SCM_BOOL_T; diff --git a/lily/simple-spacer.cc b/lily/simple-spacer.cc index 14c7cbeebd..88ebae09d8 100644 --- a/lily/simple-spacer.cc +++ b/lily/simple-spacer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys TODO: - add support for different stretch/shrink constants? @@ -25,7 +25,7 @@ #include "column-x-positions.hh" #include "dimensions.hh" #include "international.hh" -#include "libc-extension.hh" // isinf +#include "libc-extension.hh" // isinf #include "paper-column.hh" #include "simple-spacer.hh" #include "spaceable-grob.hh" @@ -115,13 +115,13 @@ Simple_spacer::add_rod (int l, int r, Real dist) { Real spring_dist = range_ideal_len (l, r); if (spring_dist < dist) - for (int i = l; i < r; i++) - { - if (spring_dist) - springs_[i].set_distance (springs_[i].distance () * dist / spring_dist); - else - springs_[i].set_distance (dist / (r - l)); - } + for (int i = l; i < r; i++) + { + if (spring_dist) + springs_[i].set_distance (springs_[i].distance () * dist / spring_dist); + else + springs_[i].set_distance (dist / (r - l)); + } return; } @@ -145,7 +145,7 @@ Simple_spacer::range_stiffness (int l, int r, bool stretch) const Real den = 0.0; for (int i = l; i < r; i++) den += stretch ? springs_[i].inverse_stretch_strength () - : springs_[i].inverse_compress_strength (); + : springs_[i].inverse_compress_strength (); return 1 / den; } @@ -160,6 +160,12 @@ Simple_spacer::configuration_length (Real force) const return l; } +void +Simple_spacer::set_force (Real force) +{ + force_ = force; +} + void Simple_spacer::solve (Real line_len, bool ragged) { @@ -183,7 +189,7 @@ Simple_spacer::expand_line () double cur_len = configuration_length (force_); fits_ = true; - for (vsize i=0; i < springs_.size (); i++) + for (vsize i = 0; i < springs_.size (); i++) inv_hooke += springs_[i].inverse_stretch_strength (); if (inv_hooke == 0.0) /* avoid division by zero. If springs are infinitely stiff */ @@ -196,7 +202,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,39 +218,40 @@ 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 sorted_springs = springs_; sort (sorted_springs.begin (), sorted_springs.end (), greater ()); - 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; + break; double block_dist = (cur_force - sp.blocking_force ()) * inv_hooke; if (cur_len - block_dist < line_len_) - { - cur_force += (line_len_ - cur_len) / inv_hooke; - cur_len = line_len_; - - /* - Paranoia check. - */ - assert (fabs (configuration_length (cur_force) - cur_len) < 1e-6); - return cur_force; - } - + { + cur_force += (line_len_ - cur_len) / inv_hooke; + cur_len = line_len_; + + /* + Paranoia check. + */ + assert (fabs (configuration_length (cur_force) - cur_len) < 1e-6); + return cur_force; + } + cur_len -= block_dist; inv_hooke -= compressed ? sp.inverse_compress_strength () : sp.inverse_stretch_strength (); cur_force = sp.blocking_force (); @@ -284,7 +290,7 @@ Simple_spacer::force_penalty (bool ragged) const /* Use a convex compression penalty. */ Real f = force_; - return f - (f < 0 ? f*f*f*f*2 : 0); + return f - (f < 0 ? f * f * f * f * 2 : 0); } /****************************************************************/ @@ -294,7 +300,7 @@ struct Rod_description vsize r_; Real dist_; - bool operator< (const Rod_description r) + bool operator < (const Rod_description r) { return r_ < r.r_; } @@ -334,26 +340,26 @@ is_loose (Grob *g) return (scm_is_pair (g->get_object ("between-cols"))); } -static Grob* +static Grob * maybe_find_prebroken_piece (Grob *g, Direction d) { - Grob *ret = dynamic_cast (g)->find_prebroken_piece (d); + Grob *ret = dynamic_cast (g)->find_prebroken_piece (d); if (ret) return ret; return g; } -static Grob* -next_spaceable_column (vector const &list, vsize starting) +static Grob * +next_spaceable_column (vector const &list, vsize starting) { - for (vsize i = starting+1; i < list.size (); i++) + for (vsize i = starting + 1; i < list.size (); i++) if (!is_loose (list[i])) return list[i]; return 0; } static Column_description -get_column_description (vector const &cols, vsize col_index, bool line_starter) +get_column_description (vector const &cols, vsize col_index, bool line_starter) { Grob *col = cols[col_index]; if (line_starter) @@ -364,7 +370,7 @@ get_column_description (vector const &cols, vsize col_index, bool line_st if (next_col) description.spring_ = Spaceable_grob::get_spring (col, next_col); - Grob *end_col = dynamic_cast (cols[col_index+1])->find_prebroken_piece (LEFT); + Grob *end_col = dynamic_cast (cols[col_index + 1])->find_prebroken_piece (LEFT); if (end_col) description.end_spring_ = Spaceable_grob::get_spring (col, end_col); @@ -374,14 +380,14 @@ get_column_description (vector const &cols, vsize col_index, bool line_st Grob *other = unsmob_grob (scm_caar (s)); vsize j = binary_search (cols, other, Paper_column::less_than, col_index); if (j != VPOS) - { - if (cols[j] == other) - description.rods_.push_back (Rod_description (j, scm_to_double (scm_cdar (s)))); - else /* it must end at the LEFT prebroken_piece */ - description.end_rods_.push_back (Rod_description (j, scm_to_double (scm_cdar (s)))); - } + { + if (cols[j] == other) + description.rods_.push_back (Rod_description (j, scm_to_double (scm_cdar (s)))); + else /* it must end at the LEFT prebroken_piece */ + description.end_rods_.push_back (Rod_description (j, scm_to_double (scm_cdar (s)))); + } } - + if (!line_starter && to_boolean (col->get_property ("keep-inside-line"))) description.keep_inside_line_ = col->extent (col, X_AXIS); @@ -390,12 +396,12 @@ get_column_description (vector const &cols, vsize col_index, bool line_st } vector -get_line_forces (vector const &columns, - Real line_len, Real indent, bool ragged) +get_line_forces (vector const &columns, + Real line_len, Real indent, bool ragged) { vector breaks; vector force; - vector non_loose; + vector non_loose; vector cols; SCM force_break = ly_symbol2scm ("force"); @@ -409,7 +415,7 @@ get_line_forces (vector const &columns, for (vsize i = 1; i + 1 < non_loose.size (); i++) { if (Paper_column::is_breakable (non_loose[i])) - breaks.push_back (cols.size ()); + breaks.push_back (cols.size ()); cols.push_back (get_column_description (non_loose, i, false)); } @@ -421,67 +427,66 @@ get_line_forces (vector const &columns, cols[breaks[b]] = get_column_description (non_loose, breaks[b], true); vsize st = breaks[b]; - for (vsize c = b+1; c < breaks.size (); c++) - { - vsize end = breaks[c]; - Simple_spacer spacer; - - for (vsize i = breaks[b]; i < end - 1; i++) - spacer.add_spring (cols[i].spring_); - spacer.add_spring (cols[end-1].end_spring_); - - - for (vsize i = breaks[b]; i < end; i++) - { - for (vsize r = 0; r < cols[i].rods_.size (); r++) - if (cols[i].rods_[r].r_ < end) - spacer.add_rod (i - st, cols[i].rods_[r].r_ - st, cols[i].rods_[r].dist_); - for (vsize r = 0; r < cols[i].end_rods_.size (); r++) - if (cols[i].end_rods_[r].r_ == end) - spacer.add_rod (i - st, end - st, cols[i].end_rods_[r].dist_); - if (!cols[i].keep_inside_line_.is_empty ()) - { - spacer.add_rod (i - st, end - st, cols[i].keep_inside_line_[RIGHT]); - spacer.add_rod (0, i - st, -cols[i].keep_inside_line_[LEFT]); - } - } - spacer.solve ((b == 0) ? line_len - indent : line_len, ragged); - force[b * breaks.size () + c] = spacer.force_penalty (ragged); - - if (!spacer.fits ()) - { - if (c == b + 1) - force[b * breaks.size () + c] = -200000; - else - force[b * breaks.size () + c] = infinity_f; - break; - } - if (end < cols.size () && cols[end].break_permission_ == force_break) - break; - } + for (vsize c = b + 1; c < breaks.size (); c++) + { + vsize end = breaks[c]; + Simple_spacer spacer; + + for (vsize i = breaks[b]; i < end - 1; i++) + spacer.add_spring (cols[i].spring_); + spacer.add_spring (cols[end - 1].end_spring_); + + for (vsize i = breaks[b]; i < end; i++) + { + for (vsize r = 0; r < cols[i].rods_.size (); r++) + if (cols[i].rods_[r].r_ < end) + spacer.add_rod (i - st, cols[i].rods_[r].r_ - st, cols[i].rods_[r].dist_); + for (vsize r = 0; r < cols[i].end_rods_.size (); r++) + if (cols[i].end_rods_[r].r_ == end) + spacer.add_rod (i - st, end - st, cols[i].end_rods_[r].dist_); + if (!cols[i].keep_inside_line_.is_empty ()) + { + spacer.add_rod (i - st, end - st, cols[i].keep_inside_line_[RIGHT]); + spacer.add_rod (0, i - st, -cols[i].keep_inside_line_[LEFT]); + } + } + spacer.solve ((b == 0) ? line_len - indent : line_len, ragged); + force[b * breaks.size () + c] = spacer.force_penalty (ragged); + + if (!spacer.fits ()) + { + if (c == b + 1) + force[b * breaks.size () + c] = -200000; + else + force[b * breaks.size () + c] = infinity_f; + break; + } + if (end < cols.size () && cols[end].break_permission_ == force_break) + break; + } } return force; } Column_x_positions -get_line_configuration (vector const &columns, - Real line_len, - Real indent, - bool ragged) +get_line_configuration (vector const &columns, + Real line_len, + Real indent, + bool ragged) { vector cols; Simple_spacer spacer; Column_x_positions ret; - ret.cols_.push_back (dynamic_cast (columns[0])->find_prebroken_piece (RIGHT)); + ret.cols_.push_back (dynamic_cast (columns[0])->find_prebroken_piece (RIGHT)); for (vsize i = 1; i + 1 < columns.size (); i++) { if (is_loose (columns[i])) - ret.loose_cols_.push_back (columns[i]); + ret.loose_cols_.push_back (columns[i]); else - ret.cols_.push_back (columns[i]); + ret.cols_.push_back (columns[i]); } - ret.cols_.push_back (dynamic_cast (columns.back ())->find_prebroken_piece (LEFT)); + ret.cols_.push_back (dynamic_cast (columns.back ())->find_prebroken_piece (LEFT)); /* since we've already put our line-ending column in the column list, we can ignore the end_XXX_ fields of our column_description */ @@ -493,13 +498,13 @@ get_line_configuration (vector const &columns, for (vsize i = 0; i < cols.size (); i++) { for (vsize r = 0; r < cols[i].rods_.size (); r++) - spacer.add_rod (i, cols[i].rods_[r].r_, cols[i].rods_[r].dist_); + spacer.add_rod (i, cols[i].rods_[r].r_, cols[i].rods_[r].dist_); if (!cols[i].keep_inside_line_.is_empty ()) - { - spacer.add_rod (i, cols.size (), cols[i].keep_inside_line_[RIGHT]); - spacer.add_rod (0, i, -cols[i].keep_inside_line_[LEFT]); - } + { + spacer.add_rod (i, cols.size (), cols[i].keep_inside_line_[RIGHT]); + spacer.add_rod (0, i, -cols[i].keep_inside_line_[LEFT]); + } } spacer.solve (line_len, ragged); @@ -518,9 +523,27 @@ get_line_configuration (vector const &columns, { SCM p = ret.cols_[i]->get_property ("line-break-permission"); if (p == ly_symbol2scm ("force")) - ret.satisfies_constraints_ = false; + ret.satisfies_constraints_ = false; } return ret; } +#include "ly-smobs.icc" + +IMPLEMENT_SIMPLE_SMOBS (Simple_spacer); +IMPLEMENT_DEFAULT_EQUAL_P (Simple_spacer); + +SCM +Simple_spacer::mark_smob (SCM /* x */) +{ + return SCM_EOL; +} + +int +Simple_spacer::print_smob (SCM /* x */, SCM p, scm_print_state *) +{ + scm_puts ("#", p); + return 1; +} + diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc index 3723c2695f..3b891e8e79 100644 --- a/lily/simultaneous-music-iterator.cc +++ b/lily/simultaneous-music-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,26 +59,26 @@ Simultaneous_music_iterator::construct_children () Music_iterator *mi = unsmob_iterator (scm_iter); /* if create_separate_contexts_ is set, create a new context with the - number number as name */ + number number as name */ SCM name = ly_symbol2scm (get_outlet ()->context_name ().c_str ()); Context *c = (j && create_separate_contexts_) - ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL) - : get_outlet (); + ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL) + : get_outlet (); if (!c) - c = get_outlet (); + c = get_outlet (); mi->init_context (mus, c); mi->construct_children (); if (mi->ok ()) - { - *tail = scm_cons (scm_iter, *tail); - tail = SCM_CDRLOC (*tail); - } + { + *tail = scm_cons (scm_iter, *tail); + tail = SCM_CDRLOC (*tail); + } else - mi->quit (); + mi->quit (); } } @@ -90,15 +90,15 @@ Simultaneous_music_iterator::process (Moment until) { Music_iterator *i = unsmob_iterator (scm_car (*proc)); if (i->run_always () - || i->pending_moment () == until) - i->process (until); + || i->pending_moment () == until) + i->process (until); if (!i->ok ()) - { - i->quit (); - *proc = scm_cdr (*proc); - } + { + i->quit (); + *proc = scm_cdr (*proc); + } else - proc = SCM_CDRLOC (*proc); + proc = SCM_CDRLOC (*proc); } } @@ -125,9 +125,9 @@ Simultaneous_music_iterator::ok () const { Music_iterator *it = unsmob_iterator (scm_car (s)); if (!it->run_always ()) - return true; + return true; else - run_always_ok = run_always_ok || it->ok (); + run_always_ok = run_always_ok || it->ok (); } return run_always_ok; } @@ -139,7 +139,7 @@ Simultaneous_music_iterator::run_always () const { Music_iterator *it = unsmob_iterator (scm_car (s)); if (it->run_always ()) - return true; + return true; } return false; } diff --git a/lily/skyline-pair.cc b/lily/skyline-pair.cc index 2f7ea73575..6f6b4e1b88 100644 --- a/lily/skyline-pair.cc +++ b/lily/skyline-pair.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2008--2011 Han-Wen Nienhuys - + Copyright (C) 2008--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,6 +20,7 @@ #include "skyline-pair.hh" +#include "international.hh" #include "ly-smobs.icc" Skyline_pair::Skyline_pair () @@ -79,21 +80,20 @@ Skyline_pair::print_points () const skylines_[DOWN].print (); } - bool Skyline_pair::is_empty () const { return skylines_[UP].is_empty () - && skylines_[DOWN].is_empty (); + && skylines_[DOWN].is_empty (); } -Skyline& +Skyline & Skyline_pair::operator [] (Direction d) { return skylines_[d]; } -Skyline const& +Skyline const & Skyline_pair::operator [] (Direction d) const { return skylines_[d]; @@ -118,3 +118,19 @@ Skyline_pair::print_smob (SCM s, SCM port, scm_print_state *) scm_puts ("#", port); return 1; } + +MAKE_SCHEME_CALLBACK (Skyline_pair, skyline, 2); +SCM +Skyline_pair::skyline (SCM smob, SCM dir_scm) +{ + Skyline_pair *sp = Skyline_pair::unsmob (smob); + Direction dir = robust_scm2dir (dir_scm, UP); + + if (dir == CENTER) + { + warning (_f ("direction must not be CENTER in ly:skyline-pair::skyline")); + dir = UP; + } + + return (*sp)[dir].smobbed_copy (); +} diff --git a/lily/skyline.cc b/lily/skyline.cc index fe30291f78..0250fc07f4 100644 --- a/lily/skyline.cc +++ b/lily/skyline.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -78,8 +78,8 @@ Skyline::print_points () const vector ps (to_points (X_AXIS)); for (vsize i = 0; i < ps.size (); i++) - printf ("(%f,%f)%s" , ps[i][X_AXIS], ps[i][Y_AXIS], - (i%2)==1 ? "\n" : " "); + printf ("(%f,%f)%s", ps[i][X_AXIS], ps[i][Y_AXIS], + (i % 2) == 1 ? "\n" : " "); } Building::Building (Real start, Real start_height, Real end_height, Real end) @@ -122,7 +122,7 @@ Building::precompute (Real start, Real start_height, Real end_height, Real end) Real Building::height (Real x) const { - return isinf (x) ? y_intercept_ : slope_*x + y_intercept_; + return isinf (x) ? y_intercept_ : slope_ * x + y_intercept_; } void @@ -168,15 +168,15 @@ first_intersection (Building const &b, list *const s, Real start_x) { Building c = s->front (); if (c.conceals (b, start_x)) - return start_x; + return start_x; Real i = b.intersection_x (c); if (i > start_x && i <= b.end_ && i <= c.end_) - return i; + return i; start_x = c.end_; if (b.end_ > c.end_) - s->pop_front (); + s->pop_front (); } return b.end_; } @@ -190,12 +190,12 @@ Building::conceals (Building const &other, Real x) const /* their slopes were not equal, so there is an intersection point */ Real i = intersection_x (other); return (i <= x && slope_ > other.slope_) - || (i > x && slope_ < other.slope_); + || (i > x && slope_ < other.slope_); } void Skyline::internal_merge_skyline (list *s1, list *s2, - list *const result) + list *const result) { if (s1->empty () || s2->empty ()) { @@ -207,26 +207,26 @@ Skyline::internal_merge_skyline (list *s1, list *s2, while (!s1->empty ()) { if (s2->front ().conceals (s1->front (), x)) - swap (s1, s2); + swap (s1, s2); Building b = s1->front (); Real end = first_intersection (b, s2, x); if (s2->empty ()) - { - result->push_front (b); - break; - } + { + result->push_front (b); + break; + } /* only include buildings wider than epsilon */ if (end > x + EPS) - { - b.leading_part (end); - result->push_front (b); - } + { + b.leading_part (end); + result->push_front (b); + } if (end >= s1->front ().end_) - s1->pop_front (); + s1->pop_front (); x = end; } @@ -249,7 +249,7 @@ single_skyline (Building b, Real start, Real horizon_padding, list *co bool sloped_neighbours = horizon_padding > 0 && !isinf (start) && !isinf (b.end_); if (!isinf (b.end_)) ret->push_front (Building (b.end_ + horizon_padding, -infinity_f, - -infinity_f, infinity_f)); + -infinity_f, infinity_f)); if (sloped_neighbours) ret->push_front (b.sloped_neighbour (start, horizon_padding, RIGHT)); @@ -261,7 +261,7 @@ single_skyline (Building b, Real start, Real horizon_padding, list *co if (!isinf (start)) ret->push_front (Building (-infinity_f, -infinity_f, - -infinity_f, start - horizon_padding)); + -infinity_f, start - horizon_padding)); } /* remove a non-overlapping set of boxes from BOXES and build a skyline @@ -277,21 +277,21 @@ non_overlapping_skyline (list *const boxes, Real horizon_padding, Axis hori Interval iv = (*i)[horizon_axis]; if (iv[LEFT] - horizon_padding < last_end) - { - i++; - continue; - } + { + i++; + continue; + } if (iv[LEFT] - horizon_padding > last_end + EPS) - result.push_front (Building (last_end, -infinity_f, -infinity_f, iv[LEFT] - 2*horizon_padding)); + result.push_front (Building (last_end, -infinity_f, -infinity_f, iv[LEFT] - 2 * horizon_padding)); Building b (*i, horizon_padding, horizon_axis, sky); bool sloped_neighbours = horizon_padding > 0 && !isinf (iv.length ()); if (sloped_neighbours) - result.push_front (b.sloped_neighbour (iv[LEFT] - horizon_padding, horizon_padding, LEFT)); + result.push_front (b.sloped_neighbour (iv[LEFT] - horizon_padding, horizon_padding, LEFT)); result.push_front (b); if (sloped_neighbours) - result.push_front (b.sloped_neighbour (iv[LEFT] - horizon_padding, horizon_padding, RIGHT)); + result.push_front (b.sloped_neighbour (iv[LEFT] - horizon_padding, horizon_padding, RIGHT)); list::iterator j = i++; boxes->erase (j); @@ -313,7 +313,7 @@ public: a_ = a; } - bool operator() (Box const &b1, Box const &b2) + bool operator () (Box const &b1, Box const &b2) { return b1[a_][LEFT] < b2[a_][LEFT]; } @@ -334,8 +334,8 @@ Skyline::internal_build_skyline (list *boxes, Real horizon_padding, Axis ho { list result; single_skyline (Building (boxes->front (), horizon_padding, horizon_axis, sky), - boxes->front ()[horizon_axis][LEFT] - horizon_padding, - horizon_padding, &result); + boxes->front ()[horizon_axis][LEFT] - horizon_padding, + horizon_padding, &result); return result; } @@ -352,7 +352,7 @@ Skyline::internal_build_skyline (list *boxes, Real horizon_padding, Axis ho list one = partials.front (); partials.pop_front (); if (partials.empty ()) - return one; + return one; list two = partials.front (); partials.pop_front (); @@ -392,7 +392,7 @@ Skyline::Skyline (Direction sky) added to it. */ -Skyline::Skyline (Skyline const &src, Real horizon_padding, Axis a) +Skyline::Skyline (Skyline const &src, Real horizon_padding, Axis /*a*/) { /* We extract boxes from the skyline, then build a new skyline from @@ -406,18 +406,18 @@ Skyline::Skyline (Skyline const &src, Real horizon_padding, Axis a) list boxes; // establish a baseline box + // FIXME: This has hardcoded logic, assuming a == X_AXIS! boxes.push_back (Box (Interval (-infinity_f, infinity_f), - Interval (0, 0))); + Interval (0, 0))); list::const_iterator end = src.buildings_.end (); - for (list::const_iterator i = src.buildings_.begin (); i != end; start=i->end_, i++ ) + for (list::const_iterator i = src.buildings_.begin (); i != end; start = i->end_, i++) if ((i->slope_ == 0) && !isinf (i->y_intercept_)) boxes.push_back (Box (Interval (start, i->end_), - Interval (-infinity_f , i->y_intercept_))); + Interval (-infinity_f, i->y_intercept_))); buildings_ = internal_build_skyline (&boxes, horizon_padding, X_AXIS, UP); sky_ = src.sky_; } - /* build skyline from a set of boxes. If horizon_padding > 0, expand all the boxes by that amount and add 45-degree sloped boxes to the edges of each box (of @@ -438,7 +438,7 @@ Skyline::Skyline (vector const &boxes, Real horizon_padding, Axis horizon_a Interval iv = boxes[i][horizon_axis]; iv.widen (horizon_padding); if (iv.length () > EPS && !boxes[i][vert_axis].is_empty ()) - filtered_boxes.push_front (boxes[i]); + filtered_boxes.push_front (boxes[i]); } buildings_ = internal_build_skyline (&filtered_boxes, horizon_padding, horizon_axis, sky); @@ -449,7 +449,7 @@ Skyline::Skyline (Box const &b, Real horizon_padding, Axis horizon_axis, Directi sky_ = sky; Building front (b, horizon_padding, horizon_axis, sky); single_skyline (front, b[horizon_axis][LEFT] - horizon_padding, - horizon_padding, &buildings_); + horizon_padding, &buildings_); } void @@ -484,7 +484,7 @@ Skyline::insert (Box const &b, Real horizon_padding, Axis a) my_bld.splice (my_bld.begin (), buildings_); single_skyline (Building (b, horizon_padding, a, sky_), b[a][LEFT] - horizon_padding, - horizon_padding, &other_bld); + horizon_padding, &other_bld); internal_merge_skyline (&other_bld, &my_bld, &buildings_); } @@ -509,11 +509,27 @@ Skyline::shift (Real s) Real Skyline::distance (Skyline const &other, Real horizon_padding) const +{ + Real dummy; + return internal_distance (other, horizon_padding, &dummy); +} + +Real +Skyline::touching_point (Skyline const &other, Real horizon_padding) const +{ + Real touch; + internal_distance (other, horizon_padding, &touch); + return touch; +} + +Real +Skyline::internal_distance (Skyline const &other, Real horizon_padding, Real *touch_point) const { assert (sky_ == -other.sky_); Skyline const *padded_this = this; Skyline const *padded_other = &other; + bool created_tmp_skylines = false; /* For systems, padding is not added at creation time. Padding is @@ -525,6 +541,7 @@ Skyline::distance (Skyline const &other, Real horizon_padding) const { padded_this = new Skyline (*padded_this, horizon_padding, X_AXIS); padded_other = new Skyline (*padded_other, horizon_padding, X_AXIS); + created_tmp_skylines = true; } list::const_iterator i = padded_this->buildings_.begin (); @@ -532,18 +549,33 @@ Skyline::distance (Skyline const &other, Real horizon_padding) const Real dist = -infinity_f; Real start = -infinity_f; + Real touch = -infinity_f; while (i != padded_this->buildings_.end () && j != padded_other->buildings_.end ()) { Real end = min (i->end_, j->end_); Real start_dist = i->height (start) + j->height (start); Real end_dist = i->height (end) + j->height (end); dist = max (dist, max (start_dist, end_dist)); + + if (end_dist == dist) + touch = end; + else if (start_dist == dist) + touch = start; + if (i->end_ <= j->end_) - i++; + i++; else - j++; + j++; start = end; } + + if (created_tmp_skylines) + { + delete padded_this; + delete padded_other; + } + + *touch_point = touch; return dist; } @@ -556,7 +588,7 @@ Skyline::height (Real airplane) const for (i = buildings_.begin (); i != buildings_.end (); i++) { if (i->end_ >= airplane) - return sky_ * i->height (airplane); + return sky_ * i->height (airplane); } assert (0); @@ -571,6 +603,14 @@ Skyline::max_height () const return sky_ * distance (s); } +Real +Skyline::max_height_position () const +{ + Skyline s (-sky_); + s.set_minimum_height (0); + return touching_point (s); +} + void Skyline::set_minimum_height (Real h) { @@ -579,7 +619,6 @@ Skyline::set_minimum_height (Real h) merge (s); } - vector Skyline::to_points (Axis horizon_axis) const { @@ -617,15 +656,14 @@ Skyline::clear () /****************************************************************/ - IMPLEMENT_SIMPLE_SMOBS (Skyline); IMPLEMENT_TYPE_P (Skyline, "ly:skyline?"); IMPLEMENT_DEFAULT_EQUAL_P (Skyline); SCM -Skyline::mark_smob (SCM) +Skyline::mark_smob (SCM s) { - ASSERT_LIVE_IS_ALLOWED (); + ASSERT_LIVE_IS_ALLOWED (s); return SCM_EOL; } @@ -639,3 +677,61 @@ Skyline::print_smob (SCM s, SCM port, scm_print_state *) return 1; } + +MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Skyline, get_touching_point, 3, 1, "") +SCM +Skyline::get_touching_point (SCM skyline_scm, SCM other_skyline_scm, SCM horizon_padding_scm) +{ + LY_ASSERT_SMOB (Skyline, other_skyline_scm, 1); + + Real horizon_padding = 0; + if (horizon_padding_scm != SCM_UNDEFINED) + { + LY_ASSERT_TYPE (scm_is_number, horizon_padding_scm, 3); + horizon_padding = scm_to_double (horizon_padding_scm); + } + + Skyline *skyline = Skyline::unsmob (skyline_scm); + Skyline *other_skyline = Skyline::unsmob (other_skyline_scm); + return scm_from_double (skyline->touching_point (*other_skyline, horizon_padding)); +} + +MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Skyline, get_distance, 3, 1, "") +SCM +Skyline::get_distance (SCM skyline_scm, SCM other_skyline_scm, SCM horizon_padding_scm) +{ + LY_ASSERT_SMOB (Skyline, other_skyline_scm, 1); + + Real horizon_padding = 0; + if (horizon_padding_scm != SCM_UNDEFINED) + { + LY_ASSERT_TYPE (scm_is_number, horizon_padding_scm, 3); + horizon_padding = scm_to_double (horizon_padding_scm); + } + + Skyline *skyline = Skyline::unsmob (skyline_scm); + Skyline *other_skyline = Skyline::unsmob (other_skyline_scm); + return scm_from_double (skyline->distance (*other_skyline, horizon_padding)); +} + +MAKE_SCHEME_CALLBACK (Skyline, get_max_height, 1) +SCM +Skyline::get_max_height (SCM skyline_scm) +{ + return scm_from_double (Skyline::unsmob (skyline_scm)->max_height ()); +} + +MAKE_SCHEME_CALLBACK (Skyline, get_max_height_position, 1) +SCM +Skyline::get_max_height_position (SCM skyline_scm) +{ + return scm_from_double (Skyline::unsmob (skyline_scm)->max_height_position ()); +} + +MAKE_SCHEME_CALLBACK (Skyline, get_height, 2) +SCM +Skyline::get_height (SCM skyline_scm, SCM x_scm) +{ + Real x = robust_scm2double (x_scm, 0.0); + return scm_from_double (Skyline::unsmob (skyline_scm)->height (x)); +} diff --git a/lily/slash-repeat-engraver.cc b/lily/slash-repeat-engraver.cc index 0db3ceffb3..7844faf604 100644 --- a/lily/slash-repeat-engraver.cc +++ b/lily/slash-repeat-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys , Erik Sandberg + Copyright (C) 2000--2012 Han-Wen Nienhuys , Erik Sandberg LilyPond is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ IMPLEMENT_TRANSLATOR_LISTENER (Slash_repeat_engraver, repeat_slash); void Slash_repeat_engraver::listen_repeat_slash (Stream_event *ev) { - ASSIGN_EVENT_ONCE (slash_, ev); + ASSIGN_EVENT_ONCE (slash_, ev); } void @@ -58,24 +58,24 @@ Slash_repeat_engraver::process_music () { SCM count = slash_->get_property ("slash-count"); if (scm_to_int (count) == 0) - make_item ("DoubleRepeatSlash", slash_->self_scm ()); + make_item ("DoubleRepeatSlash", slash_->self_scm ()); else - make_item ("RepeatSlash", slash_->self_scm ()); + make_item ("RepeatSlash", slash_->self_scm ()); slash_ = 0; } } ADD_TRANSLATOR (Slash_repeat_engraver, - /* doc */ - "Make beat repeats.", + /* doc */ + "Make beat repeats.", - /* create */ - "DoubleRepeatSlash " - "RepeatSlash ", + /* create */ + "DoubleRepeatSlash " + "RepeatSlash ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/slur-configuration.cc b/lily/slur-configuration.cc index 1285a3bb5d..b144b2656f 100644 --- a/lily/slur-configuration.cc +++ b/lily/slur-configuration.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,6 @@ #include "slur-configuration.hh" - #include "item.hh" #include "libc-extension.hh" #include "misc.hh" @@ -29,11 +28,12 @@ #include "spanner.hh" #include "staff-symbol-referencer.hh" #include "stem.hh" +#include "tie.hh" #include "warn.hh" Bezier avoid_staff_line (Slur_score_state const &state, - Bezier bez) + Bezier bez) { Offset horiz (1, 0); vector ts = bez.solve_derivative (horiz); @@ -48,34 +48,30 @@ avoid_staff_line (Slur_score_state const &state, Grob *staff = state.extremes_[LEFT].staff_; Real p = 2 * (y - staff->relative_coordinate (state.common_[Y_AXIS], Y_AXIS)) - / state.staff_space_; - - Real distance = fabs (my_round (p) - p); // in halfspaces - if (distance < 4 * state.thickness_ - && (int) fabs (my_round (p)) - <= 2 * Staff_symbol_referencer::staff_radius (staff) + 0.1 - && (int (fabs (my_round (p))) % 2 - != Staff_symbol_referencer::line_count (staff) % 2)) - { - Direction resolution_dir - = (distance ? state.dir_ : Direction (sign (p - my_round (p)))); - - // TODO: parameter - Real newp = my_round (p) + resolution_dir - * 5 * state.thickness_; - - Real dy = (newp - p) * state.staff_space_ / 2.0; - - bez.control_[1][Y_AXIS] += dy; - bez.control_[2][Y_AXIS] += dy; - } + / state.staff_space_; + + Real const round = my_round (p); + Real const frac = p - round; + if (fabs (frac) < 4 * state.thickness_ + && Staff_symbol_referencer::on_staff_line (staff, int (round))) + { + Direction resolution_dir = frac ? state.dir_ : CENTER; + + // TODO: parameter + Real newp = round + resolution_dir * 5 * state.thickness_; + + Real dy = (newp - p) * state.staff_space_ / 2.0; + + bez.control_[1][Y_AXIS] += dy; + bez.control_[2][Y_AXIS] += dy; + } } return bez; } Real -fit_factor (Offset dz_unit, Offset dz_perp, - Bezier curve, Direction d, vector const &avoid) +fit_factor (Offset dz_unit, Offset dz_perp, Real close_to_edge_length, + Bezier curve, Direction d, vector const &avoid) { Real fit_factor = 0.0; Offset x0 = curve.control_[0]; @@ -91,27 +87,35 @@ fit_factor (Offset dz_unit, Offset dz_perp, { Offset z = (avoid[i] - x0); Offset p (dot_product (z, dz_unit), - d * dot_product (z, dz_perp)); + d * dot_product (z, dz_perp)); + + bool close_to_edge = false; + for (LEFT_and_RIGHT (d)) + close_to_edge = close_to_edge || -d * (p[X_AXIS] - curve_xext[d]) < close_to_edge_length; + + if (close_to_edge) + continue; Real eps = 0.01; - Interval pext = eps * Interval (-1,1) + p[X_AXIS]; + Interval pext = eps * Interval (-1, 1) + p[X_AXIS]; pext.intersect (curve_xext); + if (pext.is_empty () || pext.length () <= 1.999 * eps) - continue; + continue; Real y = curve.get_other_coordinate (X_AXIS, p[X_AXIS]); if (y) - fit_factor = max (fit_factor, (p[Y_AXIS] / y)); + fit_factor = max (fit_factor, (p[Y_AXIS] / y)); } return fit_factor; } void Slur_configuration::generate_curve (Slur_score_state const &state, - Real r_0, Real h_inf, - vector const &avoid) + Real r_0, Real h_inf, + vector const &avoid) { - Offset dz = attachment_[RIGHT]- attachment_[LEFT];; + Offset dz = attachment_[RIGHT] - attachment_[LEFT];; Offset dz_unit = dz; dz_unit *= 1 / dz.length (); Offset dz_perp = dz_unit * Offset (0, 1); @@ -155,20 +159,21 @@ Slur_configuration::generate_curve (Slur_score_state const &state, Bezier curve; curve.control_[0] = attachment_[LEFT]; curve.control_[1] = attachment_[LEFT] + dz_perp * height * state.dir_ - + dz_unit * x1; + + dz_unit * x1; curve.control_[2] = attachment_[RIGHT] + dz_perp * height * state.dir_ - + dz_unit * x2; + + dz_unit * x2; curve.control_[3] = attachment_[RIGHT]; - Real ff = fit_factor (dz_unit, dz_perp, curve, state.dir_, avoid); + Real ff = fit_factor (dz_unit, dz_perp, state.parameters_.close_to_edge_length_, + curve, state.dir_, avoid); height = max (height, min (height * ff, max_h)); curve.control_[0] = attachment_[LEFT]; curve.control_[1] = attachment_[LEFT] + dz_perp * height * state.dir_ - + dz_unit * x1; + + dz_unit * x1; curve.control_[2] = attachment_[RIGHT] + dz_perp * height * state.dir_ - + dz_unit * x2; + + dz_unit * x2; curve.control_[3] = attachment_[RIGHT]; curve_ = avoid_staff_line (state, curve); @@ -186,14 +191,14 @@ Slur_configuration::add_score (Real s, string desc) { if (s < 0) { - programming_error ("Negative demerits found for slur. Ignoring"); + programming_error ("Negative demerits found for slur. Ignoring"); s = 0.0; } - + if (s) { if (score_card_.length () > 0) - score_card_ += ", "; + score_card_ += ", "; score_card_ += to_string ("%s=%.2f", desc.c_str (), s); score_ += s; } @@ -219,100 +224,88 @@ Slur_configuration::score_encompass (Slur_score_state const &state) bool edge = l_edge || r_edge; if (! (x < attachment_[RIGHT][X_AXIS] - && x > attachment_[LEFT][X_AXIS])) - continue; + && x > attachment_[LEFT][X_AXIS])) + continue; Real y = bez.get_other_coordinate (X_AXIS, x); if (!edge) - { - Real head_dy = (y - state.encompass_infos_[j].head_); - if (state.dir_ * head_dy < 0) - { - demerit += state.parameters_.head_encompass_penalty_; - convex_head_distances.push_back (0.0); - } - else - { - Real hd = (head_dy) - ? (1 / fabs (head_dy) - 1 / state.parameters_.free_head_distance_) - : state.parameters_.head_encompass_penalty_; - hd = min (max (hd, 0.0), state.parameters_.head_encompass_penalty_); - - demerit += hd; - } - - Real line_y = linear_interpolate (x, - attachment_[RIGHT][X_AXIS], - attachment_[LEFT][X_AXIS], - attachment_[RIGHT][Y_AXIS], - attachment_[LEFT][Y_AXIS]); - - if (1) // state.dir_ * state.encompass_infos_[j].get_point (state.dir_) > state.dir_ *line_y ) - { - - Real closest - = state.dir_ * max (state.dir_ * state.encompass_infos_[j].get_point (state.dir_), state.dir_ * line_y); - Real d = fabs (closest - y); - - convex_head_distances.push_back (d); - } - } + { + Real head_dy = (y - state.encompass_infos_[j].head_); + if (state.dir_ * head_dy < 0) + { + demerit += state.parameters_.head_encompass_penalty_; + convex_head_distances.push_back (0.0); + } + else + { + Real hd = (head_dy) + ? (1 / fabs (head_dy) - 1 / state.parameters_.free_head_distance_) + : state.parameters_.head_encompass_penalty_; + hd = min (max (hd, 0.0), state.parameters_.head_encompass_penalty_); + + demerit += hd; + } + + Real line_y = linear_interpolate (x, + attachment_[RIGHT][X_AXIS], + attachment_[LEFT][X_AXIS], + attachment_[RIGHT][Y_AXIS], + attachment_[LEFT][Y_AXIS]); + + if (1) // state.dir_ * state.encompass_infos_[j].get_point (state.dir_) > state.dir_ *line_y ) + { + + Real closest + = state.dir_ * max (state.dir_ * state.encompass_infos_[j].get_point (state.dir_), state.dir_ * line_y); + Real d = fabs (closest - y); + + convex_head_distances.push_back (d); + } + } if (state.dir_ * (y - state.encompass_infos_[j].stem_) < 0) - { - Real stem_dem = state.parameters_.stem_encompass_penalty_; - if ((l_edge && state.dir_ == UP) - || (r_edge && state.dir_ == DOWN)) - stem_dem /= 5; - - demerit += stem_dem; - } - else if (!edge) - { - Interval ext; - ext.add_point (state.encompass_infos_[j].stem_); - ext.add_point (state.encompass_infos_[j].head_); - - // ? - demerit += -state.parameters_.closeness_factor_ - * min (state.dir_ - * (y - (ext[state.dir_] + state.dir_ * state.parameters_.free_head_distance_)), 0.0) - / state.encompass_infos_.size (); - } + { + Real stem_dem = state.parameters_.stem_encompass_penalty_; + if ((l_edge && state.dir_ == UP) + || (r_edge && state.dir_ == DOWN)) + stem_dem /= 5; + + demerit += stem_dem; + } } add_score (demerit, "encompass"); - - if (convex_head_distances.size ()) + + if (vsize n = convex_head_distances.size ()) { Real avg_distance = 0.0; Real min_dist = infinity_f; - for (vsize j = 0; j < convex_head_distances.size (); j++) - { - min_dist = min (min_dist, convex_head_distances[j]); - avg_distance += convex_head_distances[j]; - } + + for (vsize j = 0; j < n; j++) + { + min_dist = min (min_dist, convex_head_distances[j]); + avg_distance += convex_head_distances[j]; + } /* - For slurs over 3 or 4 heads, the average distance is not a - good normalizer. + For slurs over 3 or 4 heads, the average distance is not a + good normalizer. */ - Real n = convex_head_distances.size (); if (n <= 2) - { - Real fact = 1.0; - avg_distance += height_ * fact; - n += fact; - } + { + Real fact = 1.0; + avg_distance += height_ * fact; + ++n; + } /* - TODO: maybe it's better to use (avgdist - mindist)*factor - as penalty. + TODO: maybe it's better to use (avgdist - mindist)*factor + as penalty. */ avg_distance /= n; Real variance_penalty = state.parameters_.head_slur_distance_max_ratio_; if (min_dist > 0.0) - variance_penalty - = min ((avg_distance / (min_dist + state.parameters_.absolute_closeness_measure_) - 1.0), variance_penalty); + variance_penalty + = min ((avg_distance / (min_dist + state.parameters_.absolute_closeness_measure_) - 1.0), variance_penalty); variance_penalty = max (variance_penalty, 0.0); variance_penalty *= state.parameters_.head_slur_distance_factor_; @@ -324,73 +317,105 @@ Slur_configuration::score_encompass (Slur_score_state const &state) void Slur_configuration::score_extra_encompass (Slur_score_state const &state) { + // we find forbidden attachments + vector forbidden_attachments; + for (vsize i = 0; i < state.extra_encompass_infos_.size (); i++) + if (Tie::has_interface (state.extra_encompass_infos_[i].grob_)) + { + Grob *t = state.extra_encompass_infos_[i].grob_; + Grob *common_x = Grob::get_vertical_axis_group (t); + Real rp = t->relative_coordinate (common_x, X_AXIS); + SCM cp = t->get_property ("control-points"); + + Bezier b; + int j = 0; + for (SCM s = cp; scm_is_pair (s); s = scm_cdr (s)) + { + b.control_[j] = ly_scm2offset (scm_car (s)); + j++; + } + forbidden_attachments.push_back (Offset (b.control_[0]) + Offset (rp, 0)); + forbidden_attachments.push_back (Offset (b.control_[3]) + Offset (rp, 0)); + } + + bool too_close = false; + for (vsize k = 0; k < forbidden_attachments.size (); k++) + for (LEFT_and_RIGHT (side)) + if ((forbidden_attachments[k] - attachment_[side]).length () < state.parameters_.slur_tie_extrema_min_distance_) + { + too_close = true; + break; + } + + if (too_close) + add_score (state.parameters_.slur_tie_extrema_min_distance_penalty_, "extra"); + for (vsize j = 0; j < state.extra_encompass_infos_.size (); j++) { Drul_array attachment = attachment_; Extra_collision_info const &info (state.extra_encompass_infos_[j]); - + Interval slur_wid (attachment[LEFT][X_AXIS], attachment[RIGHT][X_AXIS]); /* - to prevent numerical inaccuracies in - Bezier::get_other_coordinate (). + to prevent numerical inaccuracies in + Bezier::get_other_coordinate (). */ - Direction d = LEFT; + bool found = false; Real y = 0.0; - do - { - /* - We need to check for the bound explicitly, since the - slur-ending can be almost vertical, making the Y - coordinate a bad approximation of the object-slur - distance. - */ - Item *as_item = dynamic_cast (state.extra_encompass_infos_[j].grob_); - if (!as_item) - continue; - - Interval item_x = as_item->extent (state.common_[X_AXIS], X_AXIS); - item_x.intersect (state.extremes_[d].slur_head_x_extent_); - if (!item_x.is_empty ()) - { - y = attachment[d][Y_AXIS]; - found = true; - } - - } - while (flip (&d) != LEFT); + for (LEFT_and_RIGHT (d)) + { + /* + We need to check for the bound explicitly, since the + slur-ending can be almost vertical, making the Y + coordinate a bad approximation of the object-slur + distance. + */ + Item *as_item = dynamic_cast (state.extra_encompass_infos_[j].grob_); + if (!as_item) + continue; + + Interval item_x = as_item->extent (state.common_[X_AXIS], X_AXIS); + item_x.intersect (state.extremes_[d].slur_head_x_extent_); + if (!item_x.is_empty ()) + { + y = attachment[d][Y_AXIS]; + found = true; + } + + } if (!found) - { - Real x = info.extents_[X_AXIS].linear_combination (info.idx_); + { + Real x = info.extents_[X_AXIS].linear_combination (info.idx_); - if (!slur_wid.contains (x)) - continue; + if (!slur_wid.contains (x)) + continue; - y = curve_.get_other_coordinate (X_AXIS, x); - } + y = curve_.get_other_coordinate (X_AXIS, x); + } Real dist = 0.0; if (info.type_ == ly_symbol2scm ("around")) - dist = info.extents_[Y_AXIS].distance (y); + dist = info.extents_[Y_AXIS].distance (y); /* - Have to score too: the curve enumeration is limited in its - shape, and may produce curves which collide anyway. + Have to score too: the curve enumeration is limited in its + shape, and may produce curves which collide anyway. */ else if (info.type_ == ly_symbol2scm ("inside")) - dist = state.dir_ * (y - info.extents_[Y_AXIS][state.dir_]); + dist = state.dir_ * (y - info.extents_[Y_AXIS][state.dir_]); else - programming_error ("unknown avoidance type"); + programming_error ("unknown avoidance type"); dist = max (dist, 0.0); - + Real penalty = info.penalty_ * peak_around (0.1 * state.parameters_.extra_encompass_free_distance_, - state.parameters_.extra_encompass_free_distance_, - dist); - + state.parameters_.extra_encompass_free_distance_, + dist); + add_score (penalty, "extra"); } } @@ -398,11 +423,11 @@ Slur_configuration::score_extra_encompass (Slur_score_state const &state) void Slur_configuration::score_edges (Slur_score_state const &state) { - Direction d = LEFT; + Offset dz = attachment_[RIGHT] - - attachment_[LEFT]; + - attachment_[LEFT]; Real slope = dz[Y_AXIS] / dz[X_AXIS]; - do + for (LEFT_and_RIGHT (d)) { Real y = attachment_[d][Y_AXIS]; Real dy = fabs (y - state.base_attachments_[d][Y_AXIS]); @@ -410,23 +435,21 @@ Slur_configuration::score_edges (Slur_score_state const &state) Real factor = state.parameters_.edge_attraction_factor_; Real demerit = factor * dy; if (state.extremes_[d].stem_ - && state.extremes_[d].stem_dir_ == state.dir_ + && state.extremes_[d].stem_dir_ == state.dir_ // TODO - Stem::get_beaming() should be precomputed. - && !Stem::get_beaming (state.extremes_[d].stem_, -d)) - demerit /= 5; + && !Stem::get_beaming (state.extremes_[d].stem_, -d)) + demerit /= 5; demerit *= exp (state.dir_ * d * slope - * state.parameters_.edge_slope_exponent_); - + * state.parameters_.edge_slope_exponent_); string dir_str = d == LEFT ? "L" : "R"; add_score (demerit, dir_str + " edge"); } - while (flip (&d) != LEFT); } 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]; @@ -434,8 +457,8 @@ Slur_configuration ::score_slopes (Slur_score_state const &state) Real demerit = 0.0; demerit += max ((fabs (slur_dy / slur_dz[X_AXIS]) - - state.parameters_.max_slope_), 0.0) - * state.parameters_.max_slope_factor_; + - state.parameters_.max_slope_), 0.0) + * state.parameters_.max_slope_factor_; /* 0.2: account for staffline offset. */ Real max_dy = (fabs (dy) + 0.2); @@ -444,11 +467,11 @@ Slur_configuration ::score_slopes (Slur_score_state const &state) if (!state.is_broken_) demerit += state.parameters_.steeper_slope_factor_ - * (max (fabs (slur_dy) -max_dy, 0.0)); + * (max (fabs (slur_dy) - max_dy, 0.0)); demerit += max ((fabs (slur_dy / slur_dz[X_AXIS]) - - state.parameters_.max_slope_), 0.0) - * state.parameters_.max_slope_factor_; + - state.parameters_.max_slope_), 0.0) + * state.parameters_.max_slope_factor_; if (sign (dy) == 0 && sign (slur_dy) != 0 @@ -460,41 +483,42 @@ Slur_configuration ::score_slopes (Slur_score_state const &state) && sign (slur_dy) && sign (slur_dy) != sign (dy)) demerit += state.edge_has_beams_ - ? state.parameters_.same_slope_penalty_ / 10 - : state.parameters_.same_slope_penalty_; + ? state.parameters_.same_slope_penalty_ / 10 + : state.parameters_.same_slope_penalty_; add_score (demerit, "slope"); } - // This is a temporary hack to see how much we can gain by using a // priority queue on the beams to score. static int score_count = 0; LY_DEFINE (ly_slur_score_count, "ly:slur-score-count", 0, 0, 0, - (), - "count number of slur scores.") { + (), + "count number of slur scores.") +{ return scm_from_int (score_count); } void Slur_configuration::run_next_scorer (Slur_score_state const &state) { - switch (next_scorer_todo) { - case EXTRA_ENCOMPASS: - score_extra_encompass (state); - break; - case SLOPE: - score_slopes (state); - break; - case EDGES: - score_edges (state); - break; - case ENCOMPASS: - score_encompass (state); - break; - default: - assert (false); - } + switch (next_scorer_todo) + { + case EXTRA_ENCOMPASS: + score_extra_encompass (state); + break; + case SLOPE: + score_slopes (state); + break; + case EDGES: + score_edges (state); + break; + case ENCOMPASS: + score_encompass (state); + break; + default: + assert (false); + } next_scorer_todo++; score_count++; } diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 45aa121a71..03f5a5c430 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,6 @@ #include "translator.icc" - /* NOTE NOTE NOTE @@ -38,7 +37,7 @@ apply there too. (on principle, engravers don't use inheritance for code sharing) - + */ /* @@ -50,17 +49,19 @@ class Slur_engraver : public Engraver { vector start_events_; vector stop_events_; - vector slurs_; - vector end_slurs_; + vector slurs_; + vector end_slurs_; + vector objects_to_acknowledge_; void set_melisma (bool); protected: DECLARE_TRANSLATOR_LISTENER (slur); - DECLARE_ACKNOWLEDGER (accidental); + DECLARE_ACKNOWLEDGER (inline_accidental); DECLARE_ACKNOWLEDGER (fingering); DECLARE_ACKNOWLEDGER (note_column); DECLARE_ACKNOWLEDGER (script); + DECLARE_ACKNOWLEDGER (dots); DECLARE_ACKNOWLEDGER (text_script); DECLARE_ACKNOWLEDGER (tie); DECLARE_ACKNOWLEDGER (tuplet_number); @@ -70,7 +71,7 @@ protected: void process_music (); virtual void finalize (); - + virtual void derived_mark () const; public: TRANSLATOR_DECLARATIONS (Slur_engraver); @@ -80,17 +81,26 @@ Slur_engraver::Slur_engraver () { } +void +Slur_engraver::derived_mark () const +{ + for (vsize i = start_events_.size (); i--;) + scm_gc_mark (start_events_[i]->self_scm ()); + for (vsize i = stop_events_.size (); i--;) + scm_gc_mark (stop_events_[i]->self_scm ()); +} + IMPLEMENT_TRANSLATOR_LISTENER (Slur_engraver, slur); void Slur_engraver::listen_slur (Stream_event *ev) { Direction d = to_dir (ev->get_property ("span-direction")); if (d == START) - start_events_.push_back(ev); + start_events_.push_back (ev); else if (d == STOP) - stop_events_.push_back(ev); + stop_events_.push_back (ev); else ev->origin ()->warning (_f ("direction of %s invalid: %d", - "slur-event", int (d))); + "slur-event", int (d))); } void @@ -112,11 +122,17 @@ Slur_engraver::acknowledge_note_column (Grob_info info) void Slur_engraver::acknowledge_extra_object (Grob_info info) { - Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_); + objects_to_acknowledge_.push_back (info); +} + +void +Slur_engraver::acknowledge_inline_accidental (Grob_info info) +{ + acknowledge_extra_object (info); } void -Slur_engraver::acknowledge_accidental (Grob_info info) +Slur_engraver::acknowledge_dots (Grob_info info) { acknowledge_extra_object (info); } @@ -160,6 +176,7 @@ Slur_engraver::finalize () slurs_[i]->warning (_ ("unterminated slur")); slurs_[i]->suicide (); } + slurs_.clear (); } void @@ -170,7 +187,7 @@ Slur_engraver::process_music () 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) + // Find the slurs that are ended with this event (by checking the spanner-id) bool ended = false; for (vsize j = slurs_.size (); j--;) { @@ -181,31 +198,78 @@ Slur_engraver::process_music () slurs_.erase (slurs_.begin () + j); } } - if (!ended) + if (ended) + { + // Ignore redundant stop events for this id + for (vsize j = stop_events_.size (); --j > i;) + { + if (id == robust_scm2string (stop_events_[j]->get_property ("spanner-id"), "")) + stop_events_.erase (stop_events_.begin () + j); + } + } + else ev->origin ()->warning (_ ("cannot end slur")); } + vsize old_slurs = slurs_.size (); for (vsize i = start_events_.size (); i--;) { 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) + Direction updown = to_dir (ev->get_property ("direction")); + + bool completed; + for (vsize j = slurs_.size (); !(completed = (j-- == 0));) { - // 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); + // Check if we already have a slur with the same spanner-id. + if (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), "")) + { + if (j < old_slurs) + { + // We already have an old slur, so give a warning + // and completely ignore the new slur. + ev->origin ()->warning (_ ("already have slur")); + start_events_.erase (start_events_.begin () + i); + break; + } + + // If this slur event has no direction, it will not + // contribute anything new to the existing slur(s), so + // we can ignore it. + + if (!updown) + break; + + Stream_event *c = unsmob_stream_event (slurs_[j]->get_property ("cause")); + + if (!c) + { + slurs_[j]->programming_error ("slur without a cause"); + continue; + } + + Direction slur_dir = to_dir (c->get_property ("direction")); + + // If the existing slur does not have a direction yet, + // we'd rather take the new one. + + if (!slur_dir) + { + slurs_[j]->suicide (); + slurs_.erase (slurs_.begin () + j); + continue; + } + + // If the existing slur has the same direction as ours, drop ours + + if (slur_dir == updown) + break; + } } - else + // If the loop completed, our slur is new + if (completed) { 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); @@ -230,44 +294,49 @@ Slur_engraver::stop_translation_timestep () if (Grob *g = unsmob_grob (get_property ("currentCommandColumn"))) { for (vsize i = 0; i < end_slurs_.size (); i++) - Slur::add_extra_encompass (end_slurs_[i], g); + Slur::add_extra_encompass (end_slurs_[i], g); if (!start_events_.size ()) - for (vsize i = 0; i < slurs_.size (); i++) - Slur::add_extra_encompass (slurs_[i], g); + for (vsize i = 0; i < slurs_.size (); i++) + Slur::add_extra_encompass (slurs_[i], g); } - - + for (vsize i = 0; i < end_slurs_.size (); i++) { - Spanner * s = dynamic_cast (end_slurs_[i]); + Spanner *s = dynamic_cast (end_slurs_[i]); if (!s->get_bound (RIGHT)) - s->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn"))); + s->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn"))); announce_end_grob (s, SCM_EOL); } + + for (vsize i = 0; i < objects_to_acknowledge_.size (); i++) + Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_, end_slurs_); + + objects_to_acknowledge_.clear (); end_slurs_.clear (); start_events_.clear (); stop_events_.clear (); } -ADD_ACKNOWLEDGER (Slur_engraver, accidental); +ADD_ACKNOWLEDGER (Slur_engraver, inline_accidental); ADD_ACKNOWLEDGER (Slur_engraver, fingering); ADD_ACKNOWLEDGER (Slur_engraver, note_column); ADD_ACKNOWLEDGER (Slur_engraver, script); ADD_ACKNOWLEDGER (Slur_engraver, text_script); +ADD_ACKNOWLEDGER (Slur_engraver, dots); ADD_ACKNOWLEDGER (Slur_engraver, tie); ADD_ACKNOWLEDGER (Slur_engraver, tuplet_number); ADD_TRANSLATOR (Slur_engraver, - /* doc */ - "Build slur grobs from slur events.", + /* doc */ + "Build slur grobs from slur events.", - /* create */ - "Slur ", + /* create */ + "Slur ", - /* read */ - "slurMelismaBusy " - "doubleSlurs ", + /* read */ + "slurMelismaBusy " + "doubleSlurs ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/slur-performer.cc b/lily/slur-performer.cc index bd466fe8c2..f57a9b7a38 100644 --- a/lily/slur-performer.cc +++ b/lily/slur-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,7 +39,7 @@ protected: void start_translation_timestep (); void process_music (); void set_melisma (bool); - + DECLARE_TRANSLATOR_LISTENER (slur); private: Stream_event *start_ev_; @@ -96,15 +96,15 @@ Slur_performer::listen_slur (Stream_event *ev) } ADD_TRANSLATOR (Slur_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/slur-score-parameters.cc b/lily/slur-score-parameters.cc index 1683aeea2f..a8cbe4b7f9 100644 --- a/lily/slur-score-parameters.cc +++ b/lily/slur-score-parameters.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -18,19 +18,17 @@ along with LilyPond. If not, see . */ - #include "slur-score-parameters.hh" #include "grob.hh" - Real get_detail (SCM alist, SCM sym) { SCM entry = scm_assq (sym, alist); return robust_scm2double (scm_is_pair (entry) - ? scm_cdr (entry) - : SCM_EOL, - 0.0); + ? scm_cdr (entry) + : SCM_EOL, + 0.0); } void @@ -44,8 +42,6 @@ Slur_score_parameters::fill (Grob *me) = get_detail (details, ly_symbol2scm ("head-encompass-penalty")); stem_encompass_penalty_ = get_detail (details, ly_symbol2scm ("stem-encompass-penalty")); - closeness_factor_ - = get_detail (details, ly_symbol2scm ("closeness-factor")); edge_attraction_factor_ = get_detail (details, ly_symbol2scm ("edge-attraction-factor")); same_slope_penalty_ @@ -78,4 +74,12 @@ Slur_score_parameters::fill (Grob *me) = get_detail (details, ly_symbol2scm ("free-slur-distance")); edge_slope_exponent_ = get_detail (details, ly_symbol2scm ("edge-slope-exponent")); + close_to_edge_length_ + = get_detail (details, ly_symbol2scm ("close-to-edge-length")); + encompass_object_range_overshoot_ + = get_detail (details, ly_symbol2scm ("encompass-object-range-overshoot")); + slur_tie_extrema_min_distance_ + = get_detail (details, ly_symbol2scm ("slur-tie-extrema-min-distance")); + slur_tie_extrema_min_distance_penalty_ + = get_detail (details, ly_symbol2scm ("slur-tie-extrema-min-distance-penalty")); } diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc index 63160a9917..e1025fa545 100644 --- a/lily/slur-scoring.cc +++ b/lily/slur-scoring.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -18,16 +18,19 @@ along with LilyPond. If not, see . */ - #include "slur-scoring.hh" #include +#include "axis-group-interface.hh" #include "accidental-interface.hh" #include "beam.hh" +#include "clef.hh" #include "directional-element-interface.hh" +#include "dots.hh" #include "libc-extension.hh" #include "main.hh" +#include "misc.hh" #include "note-column.hh" #include "output-def.hh" #include "paper-column.hh" @@ -39,6 +42,7 @@ #include "staff-symbol-referencer.hh" #include "staff-symbol.hh" #include "stem.hh" +#include "time-signature.hh" #include "warn.hh" /* @@ -111,7 +115,7 @@ Slur_score_state::get_encompass_info (Grob *col) const programming_error ("no stem for note column"); ei.x_ = col->relative_coordinate (common_[X_AXIS], X_AXIS); ei.head_ = ei.stem_ = col->extent (common_[Y_AXIS], - Y_AXIS)[dir_]; + Y_AXIS)[dir_]; return ei; } Direction stem_dir = get_grob_direction (stem); @@ -135,12 +139,12 @@ Slur_score_state::get_encompass_info (Grob *col) const { ei.stem_ = stem->extent (common_[Y_AXIS], Y_AXIS)[dir_]; if (Grob *b = Stem::get_beam (stem)) - ei.stem_ += stem_dir * 0.5 * Beam::get_beam_thickness (b); + ei.stem_ += stem_dir * 0.5 * Beam::get_beam_thickness (b); Interval x = stem->extent (common_[X_AXIS], X_AXIS); ei.x_ = x.is_empty () - ? stem->relative_coordinate (common_[X_AXIS], X_AXIS) - : x.center (); + ? stem->relative_coordinate (common_[X_AXIS], X_AXIS) + : x.center (); } else ei.stem_ = ei.head_; @@ -153,54 +157,56 @@ Slur_score_state::get_bound_info () const { Drul_array extremes; - Direction d = LEFT; Direction dir = dir_; - do + for (LEFT_and_RIGHT (d)) { extremes[d].bound_ = slur_->get_bound (d); if (Note_column::has_interface (extremes[d].bound_)) - { - extremes[d].note_column_ = extremes[d].bound_; - extremes[d].stem_ = Note_column::get_stem (extremes[d].note_column_); - if (extremes[d].stem_) - { - extremes[d].stem_dir_ = get_grob_direction (extremes[d].stem_); - - for (int a = X_AXIS; a < NO_AXES; a++) - { - Axis ax = Axis (a); - Interval s = extremes[d].stem_->extent (common_[ax], ax); - if (s.is_empty ()) - { - /* - do not issue warning. This happens for rests and - whole notes. - */ - s = Interval (0, 0) - + extremes[d].stem_->relative_coordinate (common_[ax], ax); - } - extremes[d].stem_extent_[ax] = s; - } - - extremes[d].slur_head_ - = Stem::extremal_heads (extremes[d].stem_)[dir]; - if (!extremes[d].slur_head_ - && Note_column::has_rests (extremes[d].bound_)) - extremes[d].slur_head_ = Note_column::get_rest (extremes[d].bound_); - extremes[d].staff_ = Staff_symbol_referencer - ::get_staff_symbol (extremes[d].stem_); - extremes[d].staff_space_ = Staff_symbol_referencer - ::staff_space (extremes[d].stem_); - } - - if (extremes[d].slur_head_) - extremes[d].slur_head_x_extent_ - = extremes[d].slur_head_->extent (common_[X_AXIS], X_AXIS); - - } + { + extremes[d].note_column_ = extremes[d].bound_; + extremes[d].stem_ = Note_column::get_stem (extremes[d].note_column_); + extremes[d].flag_ = Note_column::get_flag (extremes[d].note_column_); + + if (extremes[d].stem_) + { + extremes[d].stem_dir_ = get_grob_direction (extremes[d].stem_); + + for (int a = X_AXIS; a < NO_AXES; a++) + { + Axis ax = Axis (a); + Interval s = extremes[d].stem_->extent (common_[ax], ax); + if (extremes[d].flag_) + s.unite (extremes[d].flag_->extent (common_[ax], ax)); + if (s.is_empty ()) + { + /* + do not issue warning. This happens for rests and + whole notes. + */ + s = Interval (0, 0) + + extremes[d].stem_->relative_coordinate (common_[ax], ax); + } + extremes[d].stem_extent_[ax] = s; + } + + extremes[d].slur_head_ + = Stem::extremal_heads (extremes[d].stem_)[dir]; + if (!extremes[d].slur_head_ + && Note_column::has_rests (extremes[d].bound_)) + extremes[d].slur_head_ = Note_column::get_rest (extremes[d].bound_); + extremes[d].staff_ = Staff_symbol_referencer + ::get_staff_symbol (extremes[d].stem_); + extremes[d].staff_space_ = Staff_symbol_referencer + ::staff_space (extremes[d].stem_); + } + + if (extremes[d].slur_head_) + extremes[d].slur_head_x_extent_ + = extremes[d].slur_head_->extent (common_[X_AXIS], X_AXIS); + + } } - while (flip (&d) != LEFT); return extremes; } @@ -211,7 +217,7 @@ Slur_score_state::fill (Grob *me) slur_ = dynamic_cast (me); columns_ = internal_extract_grob_array (me, ly_symbol2scm ("note-columns")); - + if (columns_.empty ()) { me->suicide (); @@ -237,22 +243,20 @@ Slur_score_state::fill (Grob *me) common_[a] = common_refpoint_of_array (columns, me, a); common_[a] = common_refpoint_of_array (extra_objects, common_[a], a); - Direction d = LEFT; - do - { - /* - If bound is not in note-columns, we don't want to know about - its Y-position - */ - if (a != Y_AXIS) - common_[a] = common_[a]->common_refpoint (sp->get_bound (d), a); - } - while (flip (&d) != LEFT); + for (LEFT_and_RIGHT (d)) + { + /* + If bound is not in note-columns, we don't want to know about + its Y-position + */ + if (a != Y_AXIS) + common_[a] = common_[a]->common_refpoint (sp->get_bound (d), a); + } } extremes_ = get_bound_info (); is_broken_ = (!extremes_[LEFT].note_column_ - || !extremes_[RIGHT].note_column_); + || !extremes_[RIGHT].note_column_); has_same_beam_ = (extremes_[LEFT].stem_ && extremes_[RIGHT].stem_ @@ -263,33 +267,66 @@ Slur_score_state::fill (Grob *me) Drul_array end_ys = get_y_attachment_range (); + extra_encompass_infos_ = get_extra_encompass_infos (); + + Interval additional_ys (0.0, 0.0); + + for (vsize i = 0; i < extra_encompass_infos_.size (); i++) + { + if (extra_encompass_infos_[i].extents_[X_AXIS].is_empty ()) + continue; + + Real y_place = linear_interpolate (extra_encompass_infos_[i].extents_[X_AXIS].center (), + base_attachments_[RIGHT][X_AXIS], + base_attachments_[LEFT][X_AXIS], + end_ys[RIGHT], + end_ys[LEFT]); + Real encompass_place = extra_encompass_infos_[i].extents_[Y_AXIS][dir_]; + if (extra_encompass_infos_[i].type_ == ly_symbol2scm ("inside") + && minmax (dir_, encompass_place, y_place) == encompass_place + && (!extra_encompass_infos_[i].grob_->internal_has_interface (ly_symbol2scm ("key-signature-interface")) + && !Clef::has_interface (extra_encompass_infos_[i].grob_) + && !Time_signature::has_interface (extra_encompass_infos_[i].grob_))) + { + for (LEFT_and_RIGHT (d)) + additional_ys[d] = minmax (dir_, + additional_ys[d], + (dir_ + * (parameters_.encompass_object_range_overshoot_ + + (y_place - encompass_place) + * (normalize (extra_encompass_infos_[i].extents_[X_AXIS].center (), + base_attachments_[RIGHT][X_AXIS], + base_attachments_[LEFT][X_AXIS]) + + (dir_ == LEFT ? 0 : -1))))); + } + } + + for (LEFT_and_RIGHT (d)) + end_ys[d] += additional_ys[d]; + configurations_ = enumerate_attachments (end_ys); for (vsize i = 0; i < columns_.size (); i++) encompass_infos_.push_back (get_encompass_info (columns_[i])); - extra_encompass_infos_ = get_extra_encompass_infos (); valid_ = true; musical_dy_ = 0.0; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { if (!is_broken_ - && extremes_[d].slur_head_) - musical_dy_ += d - * extremes_[d].slur_head_->relative_coordinate (common_[Y_AXIS], Y_AXIS); + && extremes_[d].slur_head_) + musical_dy_ += d + * extremes_[d].slur_head_->relative_coordinate (common_[Y_AXIS], Y_AXIS); } - while (flip (&d) != LEFT); edge_has_beams_ = (extremes_[LEFT].stem_ && Stem::get_beam (extremes_[LEFT].stem_)) - || (extremes_[RIGHT].stem_ && Stem::get_beam (extremes_[RIGHT].stem_)); + || (extremes_[RIGHT].stem_ && Stem::get_beam (extremes_[RIGHT].stem_)); if (is_broken_) musical_dy_ = 0.0; } - MAKE_SCHEME_CALLBACK (Slur, calc_control_points, 1) SCM Slur::calc_control_points (SCM smob) @@ -307,17 +344,17 @@ Slur::calc_control_points (SCM smob) SCM end_ys = me->get_property ("positions"); SCM inspect_quants = me->get_property ("inspect-quants"); bool debug_slurs = to_boolean (me->layout () - ->lookup_variable (ly_symbol2scm ("debug-slur-scoring"))); + ->lookup_variable (ly_symbol2scm ("debug-slur-scoring"))); if (is_number_pair (inspect_quants)) { debug_slurs = true; end_ys = inspect_quants; } - + Slur_configuration *best = NULL; if (is_number_pair (end_ys)) - best = state.get_forced_configuration (ly_scm2interval(end_ys)); + best = state.get_forced_configuration (ly_scm2interval (end_ys)); else best = state.get_best_curve (); @@ -325,24 +362,24 @@ Slur::calc_control_points (SCM smob) if (debug_slurs) { string total = best->card (); - total += to_string (" TOTAL=%.2f idx=%d", best->score (), best->index_); + total += to_string (" TOTAL=%.2f idx=%d", best->score (), best->index_); me->set_property ("annotation", ly_string2scm (total)); } #endif - + SCM controls = SCM_EOL; for (int i = 4; i--;) { Offset o = best->curve_.control_[i] - - Offset (me->relative_coordinate (state.common_[X_AXIS], X_AXIS), - me->relative_coordinate (state.common_[Y_AXIS], Y_AXIS)); + - Offset (me->relative_coordinate (state.common_[X_AXIS], X_AXIS), + me->relative_coordinate (state.common_[Y_AXIS], Y_AXIS)); controls = scm_cons (ly_offset2scm (o), controls); } return controls; } -Slur_configuration* +Slur_configuration * Slur_score_state::get_forced_configuration (Interval ys) const { Slur_configuration *best = NULL; @@ -350,61 +387,63 @@ Slur_score_state::get_forced_configuration (Interval ys) const for (vsize i = 0; i < configurations_.size (); i++) { Real d = fabs (configurations_[i]->attachment_[LEFT][Y_AXIS] - ys[LEFT]) - + fabs (configurations_[i]->attachment_[RIGHT][Y_AXIS] - ys[RIGHT]); + + fabs (configurations_[i]->attachment_[RIGHT][Y_AXIS] - ys[RIGHT]); if (d < mindist) - { - best = configurations_[i]; - mindist = d; - } + { + best = configurations_[i]; + mindist = d; + } } while (!best->done ()) best->run_next_scorer (*this); - + if (mindist > 1e5) programming_error ("cannot find quant"); return best; } - Slur_configuration * Slur_score_state::get_best_curve () const { - std::priority_queue, - Slur_configuration_less> queue; + std::priority_queue < Slur_configuration *, std::vector, + Slur_configuration_less > queue; for (vsize i = 0; i < configurations_.size (); i++) queue.push (configurations_[i]); Slur_configuration *best = NULL; - while (true) { - best = queue.top (); - if (best->done ()) - break; - - queue.pop (); - best->run_next_scorer (*this); - queue.push (best); - } + while (true) + { + best = queue.top (); + if (best->done ()) + break; + + queue.pop (); + best->run_next_scorer (*this); + queue.push (best); + } return best; } -Grob * -Slur_score_state::breakable_bound_item (Direction d) const +Interval +Slur_score_state::breakable_bound_extent (Direction d) const { Grob *col = slur_->get_bound (d)->get_column (); + Interval ret; + ret.set_empty (); extract_grob_set (slur_, "encompass-objects", extra_encompasses); for (vsize i = 0; i < extra_encompasses.size (); i++) { - Item *item = dynamic_cast (extra_encompasses[i]); + Item *item = dynamic_cast (extra_encompasses[i]); if (item && col == item->get_column ()) - return item; + ret.unite (robust_relative_extent (item, common_[X_AXIS], X_AXIS)); } - return 0; + return ret; } /* @@ -416,21 +455,19 @@ Drul_array Slur_score_state::get_y_attachment_range () const { Drul_array end_ys; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { if (extremes_[d].note_column_) - { - end_ys[d] = dir_ - * max (max (dir_ * (base_attachments_[d][Y_AXIS] - + parameters_.region_size_ * dir_), - dir_ * (dir_ + extremes_[d].note_column_->extent (common_[Y_AXIS], Y_AXIS)[dir_])), - dir_ * base_attachments_[-d][Y_AXIS]); - } + { + end_ys[d] = dir_ + * max (max (dir_ * (base_attachments_[d][Y_AXIS] + + parameters_.region_size_ * dir_), + dir_ * (dir_ + extremes_[d].note_column_->extent (common_[Y_AXIS], Y_AXIS)[dir_])), + dir_ * base_attachments_[-d][Y_AXIS]); + } else - end_ys[d] = base_attachments_[d][Y_AXIS] + parameters_.region_size_ * dir_; + end_ys[d] = base_attachments_[d][Y_AXIS] + parameters_.region_size_ * dir_; } - while (flip (&d) != LEFT); return end_ys; } @@ -439,24 +476,21 @@ bool spanner_less (Spanner *s1, Spanner *s2) { Slice b1, b2; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { b1[d] = s1->get_bound (d)->get_column ()->get_rank (); b2[d] = s2->get_bound (d)->get_column ()->get_rank (); } - while (flip (&d) != LEFT); return b2[LEFT] <= b1[LEFT] && b2[RIGHT] >= b1[RIGHT] - && (b2[LEFT] != b1[LEFT] || b2[RIGHT] != b1[RIGHT]); + && (b2[LEFT] != b1[LEFT] || b2[RIGHT] != b1[RIGHT]); } Drul_array Slur_score_state::get_base_attachments () const { Drul_array base_attachment; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *stem = extremes_[d].stem_; Grob *head = extremes_[d].slur_head_; @@ -464,110 +498,104 @@ Slur_score_state::get_base_attachments () const Real x = 0.0; Real y = 0.0; if (extremes_[d].note_column_) - { - - /* - fixme: X coord should also be set in this case. - */ - if (stem - && !Stem::is_invisible (stem) - && extremes_[d].stem_dir_ == dir_ - && Stem::get_beaming (stem, -d) - && Stem::get_beam (stem) - && (!spanner_less (slur_, Stem::get_beam (stem)) - || has_same_beam_)) - y = extremes_[d].stem_extent_[Y_AXIS][dir_]; - else if (head) - y = head->extent (common_[Y_AXIS], Y_AXIS)[dir_]; - y += dir_ * 0.5 * staff_space_; - - y = move_away_from_staffline (y, head); - - Grob *fh = Note_column::first_head (extremes_[d].note_column_); - x - = (fh ? fh->extent (common_[X_AXIS], X_AXIS) - : extremes_[d].bound_->extent (common_[X_AXIS], X_AXIS)) - .linear_combination (CENTER); - } + { + + /* + fixme: X coord should also be set in this case. + */ + if (stem + && !Stem::is_invisible (stem) + && extremes_[d].stem_dir_ == dir_ + && Stem::get_beaming (stem, -d) + && Stem::get_beam (stem) + && (!spanner_less (slur_, Stem::get_beam (stem)) + || has_same_beam_)) + y = extremes_[d].stem_extent_[Y_AXIS][dir_]; + else if (head) + y = head->extent (common_[Y_AXIS], Y_AXIS)[dir_]; + y += dir_ * 0.5 * staff_space_; + + y = move_away_from_staffline (y, head); + + Grob *fh = Note_column::first_head (extremes_[d].note_column_); + x + = (fh ? fh->extent (common_[X_AXIS], X_AXIS) + : extremes_[d].bound_->extent (common_[X_AXIS], X_AXIS)) + .linear_combination (CENTER); + } base_attachment[d] = Offset (x, y); } - while (flip (&d) != LEFT); - do + for (LEFT_and_RIGHT (d)) { if (!extremes_[d].note_column_) - { - Real x = 0; - Real y = 0; - - if (Grob *g = breakable_bound_item (d)) - { - x = robust_relative_extent (g, common_[X_AXIS], X_AXIS)[RIGHT]; - } - else if (d == RIGHT) - x = robust_relative_extent (extremes_[d].bound_, common_[X_AXIS], X_AXIS)[d]; - else - x = slur_->get_broken_left_end_align (); - - Grob *col = (d == LEFT) ? columns_[0] : columns_.back (); - - if (extremes_[-d].bound_ != col) - { - y = robust_relative_extent (col, common_[Y_AXIS], Y_AXIS)[dir_]; - y += dir_ * 0.5 * staff_space_; - - if (get_grob_direction (col) == dir_ - && Note_column::get_stem (col) - && !Stem::is_invisible (Note_column::get_stem (col))) - y -= dir_ * 1.5 * staff_space_; - } - else - y = base_attachment[-d][Y_AXIS]; - - y = move_away_from_staffline (y, col); - - base_attachment[d] = Offset (x, y); - } + { + Real x = 0; + Real y = 0; + + Interval ext = breakable_bound_extent (d); + if (ext.is_empty ()) + ext = Axis_group_interface:: + generic_bound_extent (extremes_[d].bound_, + common_[X_AXIS], X_AXIS); + x = ext[-d]; + + Grob *col = (d == LEFT) ? columns_[0] : columns_.back (); + + if (extremes_[-d].bound_ != col) + { + y = robust_relative_extent (col, common_[Y_AXIS], Y_AXIS)[dir_]; + y += dir_ * 0.5 * staff_space_; + + if (get_grob_direction (col) == dir_ + && Note_column::get_stem (col) + && !Stem::is_invisible (Note_column::get_stem (col))) + y -= dir_ * 1.5 * staff_space_; + } + else + y = base_attachment[-d][Y_AXIS]; + + y = move_away_from_staffline (y, col); + + base_attachment[d] = Offset (x, y); + } } - while (flip (&d) != LEFT); - do + for (LEFT_and_RIGHT (d)) { for (int a = X_AXIS; a < NO_AXES; a++) - { - Real &b = base_attachment[d][Axis (a)]; - - if (isinf (b) || isnan (b)) - { - programming_error ("slur attachment is inf/nan"); - b = 0.0; - } - } + { + Real &b = base_attachment[d][Axis (a)]; + + if (isinf (b) || isnan (b)) + { + programming_error ("slur attachment is inf/nan"); + b = 0.0; + } + } } - while (flip (&d) != LEFT); return base_attachment; } Real Slur_score_state::move_away_from_staffline (Real y, - Grob *on_staff) const + Grob *on_staff) const { if (!on_staff) return y; - + Grob *staff_symbol = Staff_symbol_referencer::get_staff_symbol (on_staff); if (!staff_symbol) return y; Real pos = (y - staff_symbol->relative_coordinate (common_[Y_AXIS], - Y_AXIS)) - * 2.0 / staff_space_; + Y_AXIS)) + * 2.0 / staff_space_; if (fabs (pos - my_round (pos)) < 0.2 - && Staff_symbol_referencer::on_line (on_staff, (int) rint (pos)) - && Staff_symbol_referencer::line_count (on_staff) - 1 >= rint (pos)) + && Staff_symbol_referencer::on_staff_line (on_staff, (int) rint (pos))) y += 1.5 * staff_space_ * dir_ / 10; return y; @@ -577,13 +605,13 @@ vector Slur_score_state::generate_avoid_offsets () const { vector avoid; - vector encompasses = columns_; + vector encompasses = columns_; for (vsize i = 0; i < encompasses.size (); i++) { if (extremes_[LEFT].note_column_ == encompasses[i] - || extremes_[RIGHT].note_column_ == encompasses[i]) - continue; + || extremes_[RIGHT].note_column_ == encompasses[i]) + continue; Encompass_info inf (get_encompass_info (encompasses[i])); Real y = dir_ * (max (dir_ * inf.head_, dir_ * inf.stem_)); @@ -595,28 +623,28 @@ Slur_score_state::generate_avoid_offsets () const for (vsize i = 0; i < extra_encompasses.size (); i++) { if (Slur::has_interface (extra_encompasses[i])) - { - Grob *small_slur = extra_encompasses[i]; - Bezier b = Slur::get_curve (small_slur); + { + Grob *small_slur = extra_encompasses[i]; + Bezier b = Slur::get_curve (small_slur); - Offset z = b.curve_point (0.5); - z += Offset (small_slur->relative_coordinate (common_[X_AXIS], X_AXIS), - small_slur->relative_coordinate (common_[Y_AXIS], Y_AXIS)); + Offset z = b.curve_point (0.5); + z += Offset (small_slur->relative_coordinate (common_[X_AXIS], X_AXIS), + small_slur->relative_coordinate (common_[Y_AXIS], Y_AXIS)); - z[Y_AXIS] += dir_ * parameters_.free_slur_distance_; - avoid.push_back (z); - } + z[Y_AXIS] += dir_ * parameters_.free_slur_distance_; + avoid.push_back (z); + } else if (extra_encompasses[i]->get_property ("avoid-slur") == ly_symbol2scm ("inside")) - { - Grob *g = extra_encompasses [i]; - Interval xe = g->extent (common_[X_AXIS], X_AXIS); - Interval ye = g->extent (common_[Y_AXIS], Y_AXIS); - - if (!xe.is_empty () - && !ye.is_empty ()) - avoid.push_back (Offset (xe.center (), ye[dir_])); - } - } + { + Grob *g = extra_encompasses [i]; + Interval xe = g->extent (common_[X_AXIS], X_AXIS); + Interval ye = g->extent (common_[Y_AXIS], Y_AXIS); + + if (!xe.is_empty () + && !ye.is_empty ()) + avoid.push_back (Offset (xe.center (), ye[dir_])); + } + } return avoid; } @@ -631,85 +659,82 @@ Slur_score_state::generate_curves () const configurations_[i]->generate_curve (*this, r_0, h_inf, avoid); } -vector +vector Slur_score_state::enumerate_attachments (Drul_array end_ys) const { - vector scores; + vector scores; Drul_array os; os[LEFT] = base_attachments_[LEFT]; Real minimum_length = staff_space_ - * robust_scm2double (slur_->get_property ("minimum-length"), 2.0); + * robust_scm2double (slur_->get_property ("minimum-length"), 2.0); for (int i = 0; dir_ * os[LEFT][Y_AXIS] <= dir_ * end_ys[LEFT]; i++) { os[RIGHT] = base_attachments_[RIGHT]; for (int j = 0; dir_ * os[RIGHT][Y_AXIS] <= dir_ * end_ys[RIGHT]; j++) - { - Direction d = LEFT; - Drul_array attach_to_stem (false, false); - do - { - os[d][X_AXIS] = base_attachments_[d][X_AXIS]; - if (extremes_[d].stem_ - && !Stem::is_invisible (extremes_[d].stem_) - && extremes_[d].stem_dir_ == dir_) - { - Interval stem_y = extremes_[d].stem_extent_[Y_AXIS]; - stem_y.widen (0.25 * staff_space_); - if (stem_y.contains (os[d][Y_AXIS])) - { - os[d][X_AXIS] = extremes_[d].stem_extent_[X_AXIS][-d] - - d * 0.3; - attach_to_stem[d] = true; - } - else if (dir_ * extremes_[d].stem_extent_[Y_AXIS][dir_] - < dir_ * os[d][Y_AXIS] - && !extremes_[d].stem_extent_[X_AXIS].is_empty ()) - - os[d][X_AXIS] = extremes_[d].stem_extent_[X_AXIS].center (); - } - } - while (flip (&d) != LEFT); - - Offset dz; - dz = os[RIGHT] - os[LEFT]; - if (dz[X_AXIS] < minimum_length - || fabs (dz[Y_AXIS] / dz[X_AXIS]) > parameters_.max_slope_) - { - do - { - if (extremes_[d].slur_head_ - && !extremes_[d].slur_head_x_extent_.is_empty ()) - { - os[d][X_AXIS] = extremes_[d].slur_head_x_extent_.center (); - attach_to_stem[d] = false; - } - } - while (flip (&d) != LEFT); - } - - dz = os[RIGHT] - os[LEFT]; - do - { - if (extremes_[d].slur_head_ - && !attach_to_stem[d]) - { - /* Horizontally move tilted slurs a little. Move - more for bigger tilts. - - TODO: parameter */ - os[d][X_AXIS] - -= dir_ * extremes_[d].slur_head_x_extent_.length () - * sin (dz.arg ()) / 3; - } - } - while (flip (&d) != LEFT); - - scores.push_back (Slur_configuration::new_config (os, scores.size ())); - - os[RIGHT][Y_AXIS] += dir_ * staff_space_ / 2; - } + { + + Drul_array attach_to_stem (false, false); + for (LEFT_and_RIGHT (d)) + { + os[d][X_AXIS] = base_attachments_[d][X_AXIS]; + if (extremes_[d].stem_ + && !Stem::is_invisible (extremes_[d].stem_) + && extremes_[d].stem_dir_ == dir_) + { + Interval stem_y = extremes_[d].stem_extent_[Y_AXIS]; + stem_y.widen (0.25 * staff_space_); + if (stem_y.contains (os[d][Y_AXIS])) + { + os[d][X_AXIS] = extremes_[d].stem_extent_[X_AXIS][-d] + - d * 0.3; + attach_to_stem[d] = true; + } + else if (dir_ * extremes_[d].stem_extent_[Y_AXIS][dir_] + < dir_ * os[d][Y_AXIS] + && !extremes_[d].stem_extent_[X_AXIS].is_empty ()) + + os[d][X_AXIS] = extremes_[d].stem_extent_[X_AXIS].center (); + } + } + + Offset dz; + dz = os[RIGHT] - os[LEFT]; + if (dz[X_AXIS] < minimum_length + || fabs (dz[Y_AXIS] / dz[X_AXIS]) > parameters_.max_slope_) + { + for (LEFT_and_RIGHT (d)) + { + if (extremes_[d].slur_head_ + && !extremes_[d].slur_head_x_extent_.is_empty ()) + { + os[d][X_AXIS] = extremes_[d].slur_head_x_extent_.center (); + attach_to_stem[d] = false; + } + } + } + + dz = os[RIGHT] - os[LEFT]; + for (LEFT_and_RIGHT (d)) + { + if (extremes_[d].slur_head_ + && !attach_to_stem[d]) + { + /* Horizontally move tilted slurs a little. Move + more for bigger tilts. + + TODO: parameter */ + os[d][X_AXIS] + -= dir_ * extremes_[d].slur_head_x_extent_.length () + * sin (dz.arg ()) / 3; + } + } + + scores.push_back (Slur_configuration::new_config (os, scores.size ())); + + os[RIGHT][Y_AXIS] += dir_ * staff_space_ / 2; + } os[LEFT][Y_AXIS] += dir_ * staff_space_ / 2; } @@ -726,80 +751,82 @@ Slur_score_state::get_extra_encompass_infos () const for (vsize i = encompasses.size (); i--;) { if (Slur::has_interface (encompasses[i])) - { - Spanner *small_slur = dynamic_cast (encompasses[i]); - Bezier b = Slur::get_curve (small_slur); - - Offset relative (small_slur->relative_coordinate (common_[X_AXIS], X_AXIS), - small_slur->relative_coordinate (common_[Y_AXIS], Y_AXIS)); - - for (int k = 0; k < 3; k++) - { - Direction hdir = Direction (k - 1); - - /* - Only take bound into account if small slur starts - together with big slur. - */ - if (hdir && small_slur->get_bound (hdir) != slur_->get_bound (hdir)) - continue; - - Offset z = b.curve_point (k / 2.0); - z += relative; - - Interval yext; - yext.set_full (); - yext[dir_] = z[Y_AXIS] + dir_ * thickness_ * 1.0; - - Interval xext (-1, 1); - xext = xext * (thickness_ * 2) + z[X_AXIS]; - Extra_collision_info info (small_slur, - hdir, - xext, - yext, - parameters_.extra_object_collision_penalty_); - collision_infos.push_back (info); - } - } + { + Spanner *small_slur = dynamic_cast (encompasses[i]); + Bezier b = Slur::get_curve (small_slur); + + Offset relative (small_slur->relative_coordinate (common_[X_AXIS], X_AXIS), + small_slur->relative_coordinate (common_[Y_AXIS], Y_AXIS)); + + for (int k = 0; k < 3; k++) + { + Direction hdir = Direction (k - 1); + + /* + Only take bound into account if small slur starts + together with big slur. + */ + if (hdir && small_slur->get_bound (hdir) != slur_->get_bound (hdir)) + continue; + + Offset z = b.curve_point (k / 2.0); + z += relative; + + Interval yext; + yext.set_full (); + yext[dir_] = z[Y_AXIS] + dir_ * thickness_ * 1.0; + + Interval xext (-1, 1); + xext = xext * (thickness_ * 2) + z[X_AXIS]; + Extra_collision_info info (small_slur, + hdir, + xext, + yext, + parameters_.extra_object_collision_penalty_); + collision_infos.push_back (info); + } + } else - { - Grob *g = encompasses [i]; - Interval xe = g->extent (common_[X_AXIS], X_AXIS); - Interval ye = g->extent (common_[Y_AXIS], Y_AXIS); - - Real xp = 0.0; - Real penalty = parameters_.extra_object_collision_penalty_; - if (Accidental_interface::has_interface (g)) - { - penalty = parameters_.accidental_collision_; - - Rational alt = ly_scm2rational (g->get_property ("alteration")); - SCM scm_style = g->get_property ("style"); - if (!scm_is_symbol (scm_style) - && !to_boolean (g->get_property ("parenthesized")) - && !to_boolean (g->get_property ("restore-first"))) - { - /* End copy accidental.cc */ - if (alt == FLAT_ALTERATION - || alt == DOUBLE_FLAT_ALTERATION) - xp = LEFT; - else if (alt == SHARP_ALTERATION) - xp = 0.5 * dir_; - else if (alt == NATURAL_ALTERATION) - xp = -dir_; - } - } - - ye.widen (thickness_ * 0.5); - xe.widen (thickness_ * 1.0); - Extra_collision_info info (g, xp, xe, ye, penalty); - collision_infos.push_back (info); - } + { + Grob *g = encompasses [i]; + Interval xe = g->extent (common_[X_AXIS], X_AXIS); + Interval ye = g->extent (common_[Y_AXIS], Y_AXIS); + if (Dots::has_interface (g)) + ye.widen (0.2); + + Real xp = 0.0; + Real penalty = parameters_.extra_object_collision_penalty_; + if (Accidental_interface::has_interface (g)) + { + penalty = parameters_.accidental_collision_; + + Rational alt = ly_scm2rational (g->get_property ("alteration")); + SCM scm_style = g->get_property ("style"); + if (!scm_is_symbol (scm_style) + && !to_boolean (g->get_property ("parenthesized")) + && !to_boolean (g->get_property ("restore-first"))) + { + /* End copy accidental.cc */ + if (alt == FLAT_ALTERATION + || alt == DOUBLE_FLAT_ALTERATION) + xp = LEFT; + else if (alt == SHARP_ALTERATION) + xp = 0.5 * dir_; + else if (alt == NATURAL_ALTERATION) + xp = -dir_; + } + } + + ye.widen (thickness_ * 0.5); + xe.widen (thickness_ * 1.0); + Extra_collision_info info (g, xp, xe, ye, penalty); + collision_infos.push_back (info); + } } return collision_infos; } - + Extra_collision_info::Extra_collision_info (Grob *g, Real idx, Interval x, Interval y, Real p) { idx_ = idx; @@ -815,5 +842,5 @@ Extra_collision_info::Extra_collision_info () idx_ = 0.0; penalty_ = 0.; grob_ = 0; - type_ = SCM_EOL; + type_ = SCM_EOL; } diff --git a/lily/slur.cc b/lily/slur.cc index 433406c92a..6d0d84203e 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -28,10 +28,11 @@ #include "item.hh" #include "pointer-group-interface.hh" #include "lookup.hh" -#include "main.hh" // DEBUG_SLUR_SCORING +#include "main.hh" // DEBUG_SLUR_SCORING #include "note-column.hh" #include "output-def.hh" #include "spanner.hh" +#include "skyline-pair.hh" #include "staff-symbol-referencer.hh" #include "stem.hh" #include "text-interface.hh" @@ -41,8 +42,6 @@ #include "separation-item.hh" #include "international.hh" - - MAKE_SCHEME_CALLBACK (Slur, calc_direction, 1) SCM Slur::calc_direction (SCM smob) @@ -60,10 +59,10 @@ Slur::calc_direction (SCM smob) for (vsize i = 0; i < encompasses.size (); i++) { if (Note_column::dir (encompasses[i]) < 0) - { - d = UP; - break; - } + { + d = UP; + break; + } } return scm_from_int (d); } @@ -72,15 +71,26 @@ MAKE_SCHEME_CALLBACK (Slur, pure_height, 3); SCM Slur::pure_height (SCM smob, SCM start_scm, SCM end_scm) { + /* + Note that this estimation uses a rote add-on of 0.5 to the + highest encompassed note-head for a slur estimate. This is, + in most cases, shorter than the actual slur. + + Ways to improve this could include: + -- adding extra height for scripts that avoid slurs on the inside + -- adding extra height for the "bulge" in a slur above a note head + */ Grob *me = unsmob_grob (smob); int start = scm_to_int (start_scm); int end = scm_to_int (end_scm); - Real height = robust_scm2double (me->get_property ("height-limit"), 2.0); + Direction dir = get_grob_direction (me); extract_grob_set (me, "note-columns", encompasses); Interval ret; + ret.set_empty (); Grob *parent = me->get_parent (Y_AXIS); + Drul_array extremal_heights (infinity_f, -infinity_f); if (common_refpoint_of_array (encompasses, me, Y_AXIS) != parent) /* this could happen if, for example, we are a cross-staff slur. in this case, we want to be ignored */ @@ -90,13 +100,31 @@ Slur::pure_height (SCM smob, SCM start_scm, SCM end_scm) { Interval d = encompasses[i]->pure_height (parent, start, end); if (!d.is_empty ()) - ret.unite (d); + { + for (DOWN_and_UP (downup)) + ret.add_point (d[dir]); + + if (extremal_heights[LEFT] == infinity_f) + extremal_heights[LEFT] = d[dir]; + extremal_heights[RIGHT] = d[dir]; + } } - // The +0.5 comes from the fact that we try to place a slur - // 0.5 staff spaces from the note-head. - // (see Slur_score_state.get_base_attachments ()) - ret.widen (height * 0.5 + 0.5); + if (ret.is_empty ()) + return ly_interval2scm (Interval ()); + + Interval extremal_span; + extremal_span.set_empty (); + for (LEFT_and_RIGHT (d)) + extremal_span.add_point (extremal_heights[d]); + ret[-dir] = minmax (dir, extremal_span[-dir], ret[-dir]); + + /* + The +0.5 comes from the fact that we try to place a slur + 0.5 staff spaces from the note-head. + (see Slur_score_state.get_base_attachments ()) + */ + ret += 0.5 * dir; return ly_interval2scm (ret); } @@ -109,7 +137,7 @@ Slur::height (SCM smob) // FIXME uncached Stencil *m = me->get_stencil (); return m ? ly_interval2scm (m->extent (Y_AXIS)) - : ly_interval2scm (Interval ()); + : ly_interval2scm (Interval ()); } MAKE_SCHEME_CALLBACK (Slur, print, 1); @@ -126,9 +154,9 @@ Slur::print (SCM smob) Real staff_thick = Staff_symbol_referencer::line_thickness (me); Real base_thick = staff_thick - * robust_scm2double (me->get_property ("thickness"), 1); + * robust_scm2double (me->get_property ("thickness"), 1); Real line_thick = staff_thick - * robust_scm2double (me->get_property ("line-thickness"), 1); + * robust_scm2double (me->get_property ("line-thickness"), 1); Bezier one = get_curve (me); Stencil a; @@ -136,7 +164,7 @@ Slur::print (SCM smob) SCM dash_definition = me->get_property ("dash-definition"); a = Lookup::slur (one, get_grob_direction (me) * base_thick, - line_thick, + line_thick, dash_definition); #if DEBUG_SLUR_SCORING @@ -147,12 +175,12 @@ Slur::print (SCM smob) SCM properties = Font_interface::text_font_alist_chain (me); if (!scm_is_number (me->get_property ("font-size"))) - properties = scm_cons (scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-6), SCM_EOL), - properties); - + properties = scm_cons (scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-6), SCM_EOL), + properties); + Stencil tm = *unsmob_stencil (Text_interface::interpret_markup - (me->layout ()->self_scm (), properties, - annotation)); + (me->layout ()->self_scm (), properties, + annotation)); a.add_at_edge (Y_AXIS, get_grob_direction (me), tm, 1.0); } #endif @@ -160,7 +188,6 @@ Slur::print (SCM smob) return a.smobbed_copy (); } - /* it would be better to do this at engraver level, but that is fragile, as the breakable items are generated on staff level, at @@ -175,26 +202,26 @@ Slur::replace_breakable_encompass_objects (Grob *me) for (vsize i = 0; i < extra_objects.size (); i++) { Grob *g = extra_objects[i]; - + if (Separation_item::has_interface (g)) - { - extract_grob_set (g, "elements", breakables); - for (vsize j = 0; j < breakables.size (); j++) - /* if we encompass a separation-item that spans multiple staves, - we filter out the grobs that don't belong to our staff */ - if (me->common_refpoint (breakables[j], Y_AXIS) == me->get_parent (Y_AXIS) - && breakables[j]->get_property ("avoid-slur") == ly_symbol2scm ("inside")) - new_encompasses.push_back (breakables[j]); - } + { + extract_grob_set (g, "elements", breakables); + for (vsize j = 0; j < breakables.size (); j++) + /* if we encompass a separation-item that spans multiple staves, + we filter out the grobs that don't belong to our staff */ + if (me->common_refpoint (breakables[j], Y_AXIS) == me->get_parent (Y_AXIS) + && breakables[j]->get_property ("avoid-slur") == ly_symbol2scm ("inside")) + new_encompasses.push_back (breakables[j]); + } else - new_encompasses.push_back (g); + new_encompasses.push_back (g); } SCM encompass_scm = me->get_object ("encompass-objects"); if (Grob_array::unsmob (encompass_scm)) { - vector &arr = - unsmob_grob_array (encompass_scm)->array_reference (); + vector &arr + = unsmob_grob_array (encompass_scm)->array_reference (); arr = new_encompasses; } } @@ -249,7 +276,7 @@ SCM Slur::outside_slur_callback (SCM grob, SCM offset_scm) { Grob *script = unsmob_grob (grob); - Grob *slur = unsmob_grob (script->get_object ("slur")); + Grob *slur = unsmob_grob (script->get_object ("slur")); if (!slur) return offset_scm; @@ -258,7 +285,7 @@ Slur::outside_slur_callback (SCM grob, SCM offset_scm) if (avoid != ly_symbol2scm ("outside") && avoid != ly_symbol2scm ("around")) return offset_scm; - + Direction dir = get_grob_direction (script); if (dir == CENTER) return offset_scm; @@ -269,98 +296,139 @@ Slur::outside_slur_callback (SCM grob, SCM offset_scm) Bezier curve = Slur::get_curve (slur); curve.translate (Offset (slur->relative_coordinate (cx, X_AXIS), - slur->relative_coordinate (cy, Y_AXIS))); + slur->relative_coordinate (cy, Y_AXIS))); Interval yext = robust_relative_extent (script, cy, Y_AXIS); Interval xext = robust_relative_extent (script, cx, X_AXIS); + Interval slur_wid (curve.control_[0][X_AXIS], curve.control_[3][X_AXIS]); + + /* + cannot use is_empty because some 0-extent scripts + come up with TabStaffs. + */ + if (xext.length () <= 0 || yext.length () <= 0) + return offset_scm; + + bool contains = false; + for (LEFT_and_RIGHT (d)) + contains |= slur_wid.contains (xext[d]); + + if (!contains) + return offset_scm; Real offset = robust_scm2double (offset_scm, 0); yext.translate (offset); - + /* FIXME: slur property, script property? */ Real slur_padding = robust_scm2double (script->get_property ("slur-padding"), - 0.0); + 0.0); yext.widen (slur_padding); - const Real EPS = 1e-3; - Interval bezext (curve.control_[0][X_AXIS], curve.control_[3][X_AXIS]); - bool consider[] = {false, false, false}; - Real ys[] = {0, 0, 0}; + Interval exts[] = {xext, yext}; bool do_shift = false; - - for (int d = LEFT, k = 0; d <= RIGHT; d++, k++) + Real EPS = 1.0e-5; + if (avoid == ly_symbol2scm ("outside")) { - Real x = xext.linear_combination ((Direction) d); - consider[k] = bezext.contains (x); - - if (consider[k]) - { - ys[k] - = (fabs (bezext[LEFT] - x) < EPS) - ? curve.control_[0][Y_AXIS] - : ((fabs (bezext[RIGHT] - x) < EPS) - ? curve.control_[3][Y_AXIS] - : curve.get_other_coordinate (X_AXIS, x)); - - /* Request shift if slur is contained script's Y, or if - script is inside slur and avoid == outside. */ - if (yext.contains (ys[k]) - || (dir * ys[k] > dir * yext[-dir] && avoid == ly_symbol2scm ("outside"))) - do_shift = true; - } + for (LEFT_and_RIGHT (d)) + { + Real x = minmax (-d, xext[d], curve.control_[d == LEFT ? 0 : 3][X_AXIS] + -d * EPS); + Real y = curve.get_other_coordinate (X_AXIS, x); + do_shift = y == minmax (dir, yext[-dir], y); + if (do_shift) + break; + } } - - Real avoidance_offset = 0.0; - if (do_shift) + else { - for (int d = LEFT, k = 0; d <= RIGHT; d++, k++) - if (consider[k]) - avoidance_offset = dir * (max (dir * avoidance_offset, - dir * (ys[k] - yext[-dir] + dir * slur_padding))); + for (int a = X_AXIS; a < NO_AXES; a++) + { + for (LEFT_and_RIGHT (d)) + { + vector coords = curve.get_other_coordinates (Axis (a), exts[a][d]); + for (vsize i = 0; i < coords.size (); i++) + { + do_shift = exts[(a + 1) % NO_AXES].contains (coords[i]); + if (do_shift) + break; + } + if (do_shift) + break; + } + if (do_shift) + break; + } } + + Real avoidance_offset = do_shift ? curve.minmax (X_AXIS, max (xext[LEFT], curve.control_[0][X_AXIS] + EPS), min (xext[RIGHT], curve.control_[3][X_AXIS] - EPS), dir) - yext[-dir] : 0.0; + return scm_from_double (offset + avoidance_offset); } +MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Slur, vertical_skylines, 1, 0, ""); +SCM +Slur::vertical_skylines (SCM smob) +{ + Grob *me = unsmob_grob (smob); + vector boxes; + + if (!me) + return Skyline_pair (boxes, 0.0, X_AXIS).smobbed_copy (); + + Bezier curve = Slur::get_curve (me); + vsize box_count = robust_scm2vsize (me->get_property ("skyline-quantizing"), 10); + for (vsize i = 0; i < box_count; i++) + { + Box b; + b.add_point (curve.curve_point (i * 1.0 / box_count)); + b.add_point (curve.curve_point ((i + 1) * 1.0 / box_count)); + boxes.push_back (b); + } + + return Skyline_pair (boxes, 0.0, X_AXIS).smobbed_copy (); +} + /* * Used by Slur_engraver:: and Phrasing_slur_engraver:: */ void Slur::auxiliary_acknowledge_extra_object (Grob_info const &info, - vector &slurs, - vector &end_slurs) + vector &slurs, + vector &end_slurs) { if (slurs.empty () && end_slurs.empty ()) return; - + Grob *e = info.grob (); SCM avoid = e->get_property ("avoid-slur"); + Grob *slur; + if (end_slurs.size () && !slurs.size ()) + slur = end_slurs[0]; + else + slur = slurs[0]; + if (Tie::has_interface (e) || avoid == ly_symbol2scm ("inside")) { for (vsize i = slurs.size (); i--;) - add_extra_encompass (slurs[i], e); + add_extra_encompass (slurs[i], e); for (vsize i = end_slurs.size (); i--;) - add_extra_encompass (end_slurs[i], e); + add_extra_encompass (end_slurs[i], e); + if (slur) + e->set_object ("slur", slur->self_scm ()); } else if (avoid == ly_symbol2scm ("outside") - || avoid == ly_symbol2scm ("around")) + || avoid == ly_symbol2scm ("around")) { - Grob *slur; - if (end_slurs.size () && !slurs.size ()) - slur = end_slurs[0]; - else - slur = slurs[0]; - if (slur) - { - chain_offset_callback (e, outside_slur_callback_proc, Y_AXIS); - chain_callback (e, outside_slur_cross_staff_proc, ly_symbol2scm("cross-staff")); - e->set_object ("slur", slur->self_scm ()); - } + { + chain_offset_callback (e, outside_slur_callback_proc, Y_AXIS); + chain_callback (e, outside_slur_cross_staff_proc, ly_symbol2scm ("cross-staff")); + e->set_object ("slur", slur->self_scm ()); + } } else if (avoid != ly_symbol2scm ("ignore")) - e->warning (_f ("Ignoring grob for slur: %s. avoid-slur not set?", - e->name().c_str ())); + e->warning (_f ("Ignoring grob for slur: %s. avoid-slur not set?", + e->name ().c_str ())); } /* @@ -396,13 +464,13 @@ Slur::calc_cross_staff (SCM smob) for (vsize i = 0; i < cols.size (); i++) { if (Grob *s = Note_column::get_stem (cols[i])) - if (to_boolean (s->get_property ("cross-staff"))) - return SCM_BOOL_T; + if (to_boolean (s->get_property ("cross-staff"))) + return SCM_BOOL_T; } /* the separation items are dealt with in replace_breakable_encompass_objects so we can ignore them here */ - vector non_sep_extras; + vector non_sep_extras; for (vsize i = 0; i < extras.size (); i++) if (!Separation_item::has_interface (extras[i])) non_sep_extras.push_back (extras[i]); @@ -414,90 +482,90 @@ Slur::calc_cross_staff (SCM smob) } ADD_INTERFACE (Slur, - "A slur." - "\n" - "The following properties may be set in the @code{details}" - " list.\n" - "\n" - "@table @code\n" - "@item region-size\n" - "Size of region (in staff spaces) for determining" - " potential endpoints in the Y direction.\n" - "@item head-encompass-penalty\n" - "Demerit to apply when note heads collide with a slur.\n" - "@item stem-encompass-penalty\n" - "Demerit to apply when stems collide with a slur.\n" - "@item closeness-factor\n" - "Additional demerit used when scoring encompasses.\n" - "@item edge-attraction-factor\n" - "Factor used to calculate the demerit for distances" - " between slur endpoints and their corresponding base" - " attachments.\n" - "@item same-slope-penalty\n" - "Demerit for slurs with attachment points that are" - " horizontally aligned.\n" - "@item steeper-slope-factor\n" - "Factor used to calculate demerit only if this slur is" - " not broken.\n" - "@item non-horizontal-penalty\n" - "Demerit for slurs with attachment points that are not" - " horizontally aligned.\n" - "@item max-slope\n" - "The maximum slope allowed for this slur.\n" - "@item max-slope-factor\n" - "Factor that calculates demerit based on the max slope.\n" - "@item free-head-distance\n" - "The amount of vertical free space that must exist" - " between a slur and note heads.\n" - "@item absolute-closeness-measure\n" - "Factor to calculate demerit for variance between a note" - " head and slur.\n" - "@item extra-object-collision-penalty\n" - "Factor to calculate demerit for extra objects that the" - " slur encompasses, including accidentals, fingerings, and" - " tuplet numbers.\n" - "@item accidental-collision\n" - "Factor to calculate demerit for @code{Accidental} objects" - " that the slur encompasses. This property value replaces" - " the value of @code{extra-object-collision-penalty}.\n" - "@item extra-encompass-free-distance\n" - "The amount of vertical free space that must exist" - " between a slur and various objects it encompasses," - " including accidentals, fingerings, and tuplet numbers.\n" - "@item extra-encompass-collision-distance\n" - "This detail is currently unused.\n" - "@item head-slur-distance-factor\n" - "Factor to calculate demerit for variance between a note" - " head and slur.\n" - "@item head-slur-distance-max-ratio\n" - "The maximum value for the ratio of distance between a" - " note head and slur.\n" - "@item free-slur-distance\n" - "The amount of vertical free space that must exist" - " between adjacent slurs. This subproperty only works" - " for @code{PhrasingSlur}.\n" - "@item edge-slope-exponent\n" - "Factor used to calculate the demerit for the slope of" - " a slur near its endpoints; a larger value yields a" - " larger demerit.\n" - "@end table\n", - - /* properties */ - "annotation " - "avoid-slur " /* UGH. */ - "control-points " + "A slur." + "\n" + "The following properties may be set in the @code{details}" + " list.\n" + "\n" + "@table @code\n" + "@item region-size\n" + "Size of region (in staff spaces) for determining" + " potential endpoints in the Y direction.\n" + "@item head-encompass-penalty\n" + "Demerit to apply when note heads collide with a slur.\n" + "@item stem-encompass-penalty\n" + "Demerit to apply when stems collide with a slur.\n" + "@item edge-attraction-factor\n" + "Factor used to calculate the demerit for distances" + " between slur endpoints and their corresponding base" + " attachments.\n" + "@item same-slope-penalty\n" + "Demerit for slurs with attachment points that are" + " horizontally aligned.\n" + "@item steeper-slope-factor\n" + "Factor used to calculate demerit only if this slur is" + " not broken.\n" + "@item non-horizontal-penalty\n" + "Demerit for slurs with attachment points that are not" + " horizontally aligned.\n" + "@item max-slope\n" + "The maximum slope allowed for this slur.\n" + "@item max-slope-factor\n" + "Factor that calculates demerit based on the max slope.\n" + "@item free-head-distance\n" + "The amount of vertical free space that must exist" + " between a slur and note heads.\n" + "@item absolute-closeness-measure\n" + "Factor to calculate demerit for variance between a note" + " head and slur.\n" + "@item extra-object-collision-penalty\n" + "Factor to calculate demerit for extra objects that the" + " slur encompasses, including accidentals, fingerings, and" + " tuplet numbers.\n" + "@item accidental-collision\n" + "Factor to calculate demerit for @code{Accidental} objects" + " that the slur encompasses. This property value replaces" + " the value of @code{extra-object-collision-penalty}.\n" + "@item extra-encompass-free-distance\n" + "The amount of vertical free space that must exist" + " between a slur and various objects it encompasses," + " including accidentals, fingerings, and tuplet numbers.\n" + "@item extra-encompass-collision-distance\n" + "This detail is currently unused.\n" + "@item head-slur-distance-factor\n" + "Factor to calculate demerit for variance between a note" + " head and slur.\n" + "@item head-slur-distance-max-ratio\n" + "The maximum value for the ratio of distance between a" + " note head and slur.\n" + "@item free-slur-distance\n" + "The amount of vertical free space that must exist" + " between adjacent slurs. This subproperty only works" + " for @code{PhrasingSlur}.\n" + "@item edge-slope-exponent\n" + "Factor used to calculate the demerit for the slope of" + " a slur near its endpoints; a larger value yields a" + " larger demerit.\n" + "@end table\n", + + /* properties */ + "annotation " + "avoid-slur " /* UGH. */ + "control-points " "dash-definition " - "details " - "direction " - "eccentricity " - "encompass-objects " - "height-limit " - "inspect-quants " - "inspect-index " - "line-thickness " - "note-columns " - "positions " - "ratio " - "thickness " - ); + "details " + "direction " + "eccentricity " + "encompass-objects " + "height-limit " + "inspect-quants " + "inspect-index " + "line-thickness " + "note-columns " + "skyline-quantizing " + "positions " + "ratio " + "thickness " + "vertical-skylines " + ); diff --git a/lily/smobs.cc b/lily/smobs.cc index 5544d95d7b..164ac21b03 100644 --- a/lily/smobs.cc +++ b/lily/smobs.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,12 +33,12 @@ init_smob_protection () ADD_SCM_INIT_FUNC (init_smob_protection, init_smob_protection); LY_DEFINE (ly_smob_protects, "ly:smob-protects", - 0, 0, 0, (), - "Return LilyPond's internal smob protection list.") + 0, 0, 0, (), + "Return LilyPond's internal smob protection list.") { return scm_is_pair (smob_protection_list) - ? scm_cdr (smob_protection_list) - : SCM_EOL; + ? scm_cdr (smob_protection_list) + : SCM_EOL; } void @@ -52,10 +52,10 @@ protect_smob (SCM smob, SCM *prot_cons) } SCM prot = scm_cons (smob, s); scm_set_cdr_x (smob_protection_list, - prot); + prot); *prot_cons = prot; #else - (void) prot_cons; + (void) prot_cons; scm_gc_protect_object (smob); #endif } @@ -64,7 +64,7 @@ void unprotect_smob (SCM smob, SCM *prot_cons) { #if 1 - (void) prot_cons; + (void) prot_cons; scm_gc_unprotect_object (smob); #else SCM next = scm_cdr (*prot_cons); @@ -75,9 +75,9 @@ unprotect_smob (SCM smob, SCM *prot_cons) { scm_set_car_x (*prot_cons, SCM_BOOL_F); while (scm_is_pair (next) - && scm_car (next) == SCM_BOOL_F) + && scm_car (next) == SCM_BOOL_F) - next = scm_cdr (next); + next = scm_cdr (next); scm_set_cdr_x (*prot_cons, next); } diff --git a/lily/source-file.cc b/lily/source-file.cc index b016763558..d847605425 100644 --- a/lily/source-file.cc +++ b/lily/source-file.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -52,7 +52,7 @@ Source_file::load_stdin () } /* - return contents of FILENAME. *Not 0-terminated!* + return contents of FILENAME. *Not 0-terminated!* */ vector gulp_file (string filename, int desired_size) @@ -74,7 +74,7 @@ gulp_file (string filename, int desired_size) if (desired_size > 0) read_count = min (read_count, desired_size); - + rewind (f); char *str = new char[read_count + 1]; @@ -83,7 +83,7 @@ gulp_file (string filename, int desired_size) int bytes_read = fread (str, sizeof (char), read_count, f); if (bytes_read != read_count) warning (_f ("expected to read %d characters, got %d", bytes_read, - read_count)); + read_count)); fclose (f); int filesize = bytes_read; @@ -91,7 +91,7 @@ gulp_file (string filename, int desired_size) cxx_arr.resize (filesize); copy (str, str + filesize, cxx_arr.begin ()); - + delete[] str; return cxx_arr; } @@ -109,14 +109,14 @@ Source_file::init () Source_file::Source_file (string filename, string data) { init (); - + name_ = filename; characters_.resize (data.length ()); copy (data.begin (), data.end (), characters_.begin ()); characters_.push_back (0); - + init_port (); for (vsize i = 0; i < characters_.size (); i++) @@ -127,7 +127,7 @@ Source_file::Source_file (string filename, string data) Source_file::Source_file (string filename_string) { init (); - + name_ = filename_string; if (filename_string == "-") @@ -154,20 +154,19 @@ Source_file::init_port () scm_set_port_filename_x (str_port_, ly_string2scm (name_)); } - istream * Source_file::get_istream () { if (!istream_) { if (length ()) // can-t this be done without such a hack? - istream_ = new istringstream (c_str ()); + istream_ = new istringstream (c_str ()); else - { - istream_ = new istringstream (""); - istream_->setstate (ios::eofbit); - // istream_->set (ios::eofbit); - } + { + istream_ = new istringstream (""); + istream_->setstate (ios::eofbit); + // istream_->set (ios::eofbit); + } } return istream_; } @@ -183,7 +182,7 @@ Source_file::file_line_column_string (char const *context_str0) const get_counts (context_str0, &l, &ch, &col, &offset); return name_string () + ":" + to_string (l) - + ":" + to_string (col); + + ":" + to_string (col); } } @@ -197,9 +196,9 @@ Source_file::quote_input (char const *pos_str0) const get_counts (pos_str0, &l, &ch, &col, &offset); string line = line_string (pos_str0); string context = line.substr (0, offset) - + to_string ('\n') - + to_string (' ', col) - + line.substr (offset, line.length () - offset); + + to_string ('\n') + + to_string (' ', col) + + line.substr (offset, line.length () - offset); return context; } @@ -229,16 +228,16 @@ Source_file::line_slice (char const *pos_str0) const while (begin_str0 > data_str0) if (*--begin_str0 == '\n') { - begin_str0++; - break; + begin_str0++; + break; } char const *end_str0 = pos_str0; while (end_str0 < eof_C_) if (*end_str0++ == '\n') { - end_str0--; - break; + end_str0--; + break; } return Slice (begin_str0 - data_str0, end_str0 - data_str0); @@ -257,13 +256,17 @@ Source_file::line_string (char const *pos_str0) const void Source_file::get_counts (char const *pos_str0, - int *line_number, - int *line_char, - int *column, - int *byte_offset) const + int *line_number, + int *line_char, + int *column, + int *byte_offset) const { + // Initialize arguments to defaults, needed if pos_str0 is not in source *line_number = 0; - + *line_char = 0; + *column = 0; + *byte_offset = 0; + if (!contains (pos_str0)) return; @@ -274,34 +277,27 @@ Source_file::get_counts (char const *pos_str0, char const *line_start = (char const *)data + line[LEFT]; ssize left = (char const *) pos_str0 - line_start; + *byte_offset = left; + string line_begin (line_start, left); char const *line_chars = line_begin.c_str (); - *line_char = 0; - *column = 0; - *byte_offset = 0; - - while (left > 0) + for (; left > 0; --left, ++line_chars) { - size_t thislen = utf8_char_len (*line_chars); - - if (thislen == 1 && line_chars[0] == '\t') - (*column) = (*column / 8 + 1) * 8; + // Skip UTF-8 continuation bytes. This is simplistic but + // robust, and we warn against non-UTF-8 input in the lexer + // already. In the case of non-UTF-8 or of this function being + // called in mid-character, the results are somewhat arbitrary, + // but there is no really sane definition anyway. + if ((*line_chars & 0xc0) == 0x80) + continue; + + if (*line_chars == '\t') + (*column) = (*column / 8 + 1) * 8; else - (*column)++; + (*column)++; (*line_char)++; - - /* - To have decent output in UTF-8 aware terminals, - we must keep track of the number of bytes from - the left edge of the terminal. - */ - *byte_offset += thislen; - - /* Advance past this character. */ - line_chars += thislen; - left -= thislen; } } @@ -318,12 +314,12 @@ Source_file::get_line (char const *pos_str0) const return 0; if (!newline_locations_.size ()) - return 1; + return 1 + line_offset_; /* this will find the '\n' character at the end of our line */ vsize lo = lower_bound (newline_locations_, - pos_str0, - less ()); + pos_str0, + less ()); /* the return value will be indexed from 1 */ return lo + 1 + line_offset_; @@ -332,10 +328,15 @@ Source_file::get_line (char const *pos_str0) const void Source_file::set_line (char const *pos_str0, int line) { - int current_line = get_line (pos_str0); - line_offset_ += line - current_line; + if (pos_str0) + { + int current_line = get_line (pos_str0); + line_offset_ += line - current_line; - assert (line == get_line (pos_str0)); + assert (line == get_line (pos_str0)); + } + else + line_offset_ = line; } int @@ -372,7 +373,6 @@ Source_file::mark_smob (SCM smob) return sc->str_port_; } - int Source_file::print_smob (SCM smob, SCM port, scm_print_state *) { diff --git a/lily/sources.cc b/lily/sources.cc index 0b33c92f9e..2c0e665047 100644 --- a/lily/sources.cc +++ b/lily/sources.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,13 +29,11 @@ Sources::Sources () path_ = 0; } - Sources::Sources (Sources const &) { assert (false); } - void Sources::set_path (File_path *f) { @@ -51,27 +49,27 @@ Sources::set_path (File_path *f) working directory. */ Source_file * -Sources::get_file (string file_string, string const& current_dir) -{ +Sources::get_file (string file_string, string const ¤t_dir) +{ if (file_string != "-") { // First, check for a path relative to the directory of the // file currently being parsed. if (current_dir.length () - && file_string.length () - && !File_name (file_string).is_absolute () - && is_file (current_dir + DIRSEP + file_string)) - file_string = current_dir + DIRSEP + file_string; + && file_string.length () + && !File_name (file_string).is_absolute () + && is_file (current_dir + DIRSEP + file_string)) + file_string = current_dir + DIRSEP + file_string; // Otherwise, check the rest of the path. else if (path_) - { - string file_string_o = path_->find (file_string); - if ((file_string_o == "") && (file_string != "")) - return 0; + { + string file_string_o = path_->find (file_string); + if ((file_string_o == "") && (file_string != "")) + return 0; - file_string = file_string_o; - } + file_string = file_string_o; + } } Source_file *f = new Source_file (file_string); diff --git a/lily/spaceable-grob.cc b/lily/spaceable-grob.cc index 268259b088..daaf1c71ed 100644 --- a/lily/spaceable-grob.cc +++ b/lily/spaceable-grob.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -52,11 +52,11 @@ Spaceable_grob::add_rod (Grob *me, Grob *p, Real d) { SCM dist = scm_car (s); if (scm_car (dist) == p->self_scm ()) - { - scm_set_cdr_x (dist, scm_max (scm_cdr (dist), - newdist)); - return; - } + { + scm_set_cdr_x (dist, scm_max (scm_cdr (dist), + newdist)); + return; + } } if (Paper_column::get_rank (p) < Paper_column::get_rank (me)) @@ -85,31 +85,29 @@ Spaceable_grob::get_spring (Grob *this_col, Grob *next_col) s = scm_cdr (s)) { if (scm_is_pair (scm_car (s)) - && unsmob_grob (scm_cdar (s)) == next_col - && unsmob_spring (scm_caar (s))) - spring = unsmob_spring (scm_caar (s)); + && unsmob_grob (scm_cdar (s)) == next_col + && unsmob_spring (scm_caar (s))) + spring = unsmob_spring (scm_caar (s)); } if (!spring) - programming_error (_f ("No spring between column %d and next one", - Paper_column::get_rank (this_col))); + programming_error (to_string ("No spring between column %d and next one", + Paper_column::get_rank (this_col))); return spring ? *spring : Spring (); } - - ADD_INTERFACE (Spaceable_grob, - "A layout object that takes part in the spacing problem.", - - /* properties */ - "allow-loose-spacing " - "ideal-distances " - "keep-inside-line " - "left-neighbor " - "measure-length " - "minimum-distances " - "right-neighbor " - "spacing-wishes " - ); + "A layout object that takes part in the spacing problem.", + + /* properties */ + "allow-loose-spacing " + "ideal-distances " + "keep-inside-line " + "left-neighbor " + "measure-length " + "minimum-distances " + "right-neighbor " + "spacing-wishes " + ); diff --git a/lily/spacing-basic.cc b/lily/spacing-basic.cc index 6b7773f8de..dd40037390 100644 --- a/lily/spacing-basic.cc +++ b/lily/spacing-basic.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,17 +47,17 @@ Spacing_spanner::standard_breakable_column_spacing (Grob *me, Item *l, Item *r, Moment *dt = unsmob_moment (l->get_property ("measure-length")); Moment mlen (1); if (dt) - mlen = *dt; + mlen = *dt; Real incr = robust_scm2double (me->get_property ("spacing-increment"), 1); Real space = incr * double (mlen.main_part_ / options->global_shortest_) * 0.8; Spring spring = Spring (min_dist + space, min_dist); /* - By default, the spring will have an inverse_stretch_strength of space+min_dist. - However, we don't want stretchability to scale with min_dist or else an - empty first measure on a line (which has a large min_dist because of the clef) - will stretch much more than an empty measure later in the line. + By default, the spring will have an inverse_stretch_strength of space+min_dist. + However, we don't want stretchability to scale with min_dist or else an + empty first measure on a line (which has a large min_dist because of the clef) + will stretch much more than an empty measure later in the line. */ spring.set_inverse_stretch_strength (space); return spring; @@ -69,8 +69,8 @@ Spacing_spanner::standard_breakable_column_spacing (Grob *me, Item *l, Item *r, if (dt == Moment (0, 0)) { /* - In this case, Staff_spacing should handle the job, - using dt when it is 0 is silly. + In this case, Staff_spacing should handle the job, + using dt when it is 0 is silly. */ ideal = min_dist + 0.5; } @@ -83,29 +83,29 @@ Spacing_spanner::standard_breakable_column_spacing (Grob *me, Item *l, Item *r, Moment * get_measure_length (Grob *column) { - Grob * sys = column->get_parent (X_AXIS); + Grob *sys = column->get_parent (X_AXIS); extract_grob_set (sys, "columns", cols); vsize col_idx = Paper_column::get_rank (column); - + do { if (Moment *len = unsmob_moment (cols[col_idx]->get_property ("measure-length"))) - { - return len; - } + { + return len; + } } while (col_idx-- != 0); - + return 0; } Real Spacing_spanner::note_spacing (Grob * /* me */, - Grob *lc, - Grob *rc, - Spacing_options const *options) + Grob *lc, + Grob *rc, + Spacing_options const *options) { Moment shortest_playing_len = 0; SCM s = lc->get_property ("shortest-playing-duration"); @@ -138,8 +138,8 @@ Spacing_spanner::note_spacing (Grob * /* me */, delta_t = min (delta_t, *measure_len); /* - The following is an extra safety measure, such that - the length of a mmrest event doesn't cause havoc. + The following is an extra safety measure, such that + the length of a mmrest event doesn't cause havoc. */ shortest_playing_len = min (shortest_playing_len, *measure_len); } @@ -153,19 +153,19 @@ Spacing_spanner::note_spacing (Grob * /* me */, else if (delta_t.grace_part_) { /* - Crude hack for spacing graces: we take the shortest space - available (namely the space for the global shortest note), and - multiply that by grace-space-factor + Crude hack for spacing graces: we take the shortest space + available (namely the space for the global shortest note), and + multiply that by grace-space-factor */ dist = options->get_duration_space (options->global_shortest_) / 2.0; Grob *grace_spacing = unsmob_grob (lc->get_object ("grace-spacing")); if (grace_spacing) - { - Spacing_options grace_opts; - grace_opts.init_from_grob (grace_spacing); - dist = grace_opts.get_duration_space (delta_t.grace_part_); - } - + { + Spacing_options grace_opts; + grace_opts.init_from_grob (grace_spacing); + dist = grace_opts.get_duration_space (delta_t.grace_part_); + } + } return dist; diff --git a/lily/spacing-determine-loose-columns.cc b/lily/spacing-determine-loose-columns.cc index 5a2411b322..2deae13b27 100644 --- a/lily/spacing-determine-loose-columns.cc +++ b/lily/spacing-determine-loose-columns.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,7 +47,6 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options) { if (!to_boolean (col->get_property ("allow-loose-spacing"))) return false; - if ((options->float_nonmusical_columns_ || options->float_grace_columns_) @@ -56,7 +55,6 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options) return true; } - if (Paper_column::is_musical (col)) return false; @@ -92,7 +90,7 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options) its neighbor (ie. no funny polyphonic stuff), don't make it loose. */ if (l == l_neighbor && r == r_neighbor && col->extent (col, X_AXIS).length () > 0) - return false; + return false; /* Only declare loose if the bounds make a little sense. This means @@ -100,7 +98,7 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options) nicely folded, but hey, then don't do that. */ if (! ((Paper_column::is_musical (l_neighbor) || Paper_column::is_breakable (l_neighbor)) - && (Paper_column::is_musical (r_neighbor) || Paper_column::is_breakable (r_neighbor)))) + && (Paper_column::is_musical (r_neighbor) || Paper_column::is_breakable (r_neighbor)))) return false; /* @@ -111,21 +109,21 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options) { Grob *g = elts[i]; if (g && Break_alignment_interface::has_interface (g)) - { - extract_grob_set (g, "elements", gelts); - for (vsize j = gelts.size (); j--;) - { - Grob *h = gelts[j]; - - if (h && h->get_property ("break-align-symbol") == ly_symbol2scm ("staff-bar")) - { - extract_grob_set (h, "elements", helts); - for (vsize k = helts.size (); k--;) - if ("" != robust_scm2string (helts[k]->get_property ("glyph-name"), "")) - return false; - } - } - } + { + extract_grob_set (g, "elements", gelts); + for (vsize j = gelts.size (); j--;) + { + Grob *h = gelts[j]; + + if (h && h->get_property ("break-align-symbol") == ly_symbol2scm ("staff-bar")) + { + extract_grob_set (h, "elements", helts); + for (vsize k = helts.size (); k--;) + if ("" != robust_scm2string (helts[k]->get_property ("glyph-name"), "")) + return false; + } + } + } } return true; @@ -133,55 +131,52 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options) void Spacing_spanner::set_distances_for_loose_col (Grob *me, Grob *c, - Drul_array next_door, - Spacing_options const *options) + Drul_array next_door, + Spacing_options const *options) { - Direction d = LEFT; Drul_array dists (0, 0); - do + for (LEFT_and_RIGHT (d)) { Item *lc = dynamic_cast ((d == LEFT) ? next_door[LEFT] : c); Item *rc = dynamic_cast (d == LEFT ? c : next_door[RIGHT]); extract_grob_set (lc, "spacing-wishes", wishes); for (vsize k = wishes.size (); k--;) - { - Grob *sp = wishes[k]; - if (Spacing_interface::left_column (sp) != lc - || Spacing_interface::right_column (sp) != rc) - continue; - - if (Note_spacing::has_interface (sp)) - { - /* - The note spacing should be taken from the musical - columns. - */ - Real base = note_spacing (me, lc, rc, options); - Spring spring = Note_spacing::get_spacing (sp, rc, base, options->increment_); - - dists[d] = max (dists[d], spring.min_distance ()); - } - else if (Staff_spacing::has_interface (sp)) - { - Spring spring = Staff_spacing::get_spacing (sp, rc); - - dists[d] = max (dists[d], spring.min_distance ()); - } - else - programming_error ("Subversive spacing wish"); - } + { + Grob *sp = wishes[k]; + if (Spacing_interface::left_column (sp) != lc + || Spacing_interface::right_column (sp) != rc) + continue; + + if (Note_spacing::has_interface (sp)) + { + /* + The note spacing should be taken from the musical + columns. + */ + Real base = note_spacing (me, lc, rc, options); + Spring spring = Note_spacing::get_spacing (sp, rc, base, options->increment_); + + dists[d] = max (dists[d], spring.min_distance ()); + } + else if (Staff_spacing::has_interface (sp)) + { + Spring spring = Staff_spacing::get_spacing (sp, rc, 0.0); + + dists[d] = max (dists[d], spring.min_distance ()); + } + else + programming_error ("Subversive spacing wish"); + } } - while (flip (&d) != LEFT); Rod r; r.distance_ = dists[LEFT] + dists[RIGHT]; r.item_drul_ = next_door; - - r.add_to_cols (); -} + r.add_to_cols (); +} /* Remove columns that are not tightly fitting from COLS. In the @@ -190,72 +185,70 @@ Spacing_spanner::set_distances_for_loose_col (Grob *me, Grob *c, */ void Spacing_spanner::prune_loose_columns (Grob *me, - vector *cols, - Spacing_options *options) + vector *cols, + Spacing_options *options) { - vector newcols; - + vector newcols; for (vsize i = 0; i < cols->size (); i++) { Grob *c = cols->at (i); bool loose = (i > 0 && i + 1 < cols->size ()) - && is_loose_column (cols->at (i - 1), c, cols->at (i + 1), options); + && is_loose_column (cols->at (i - 1), c, cols->at (i + 1), options); /* Breakable columns never get pruned; even if they are loose, their broken pieces are not. However, we mark them so that the spacing can take their mid-line looseness into account. */ if (loose && Paper_column::is_breakable (c)) - { - loose = false; - c->set_property ("maybe-loose", SCM_BOOL_T); - } + { + loose = false; + c->set_property ("maybe-loose", SCM_BOOL_T); + } /* - Unbreakable columns which only contain page-labels also - never get pruned, otherwise the labels are lost before they can - be collected by the System: so we mark these columns too. + Unbreakable columns which only contain page-labels also + never get pruned, otherwise the labels are lost before they can + be collected by the System: so we mark these columns too. */ if (!loose && !Paper_column::is_breakable (c) - && scm_is_pair (c->get_property ("labels"))) - { - extract_grob_set (c, "elements", elts); - if (elts.empty ()) - c->set_property ("maybe-loose", SCM_BOOL_T); - } + && scm_is_pair (c->get_property ("labels"))) + { + extract_grob_set (c, "elements", elts); + if (elts.empty ()) + c->set_property ("maybe-loose", SCM_BOOL_T); + } if (loose) - { - Grob *right_neighbor = unsmob_grob (c->get_object ("right-neighbor")); - Grob *left_neighbor = unsmob_grob (c->get_object ("left-neighbor")); - - /* - Either object can be non existent, if the score ends - prematurely. - */ - if (!right_neighbor || !left_neighbor) - { - c->programming_error ("Cannot determine neighbors for floating column. "); - c->set_object ("between-cols", scm_cons (cols->at (i-1)->self_scm (), - cols->at (i+1)->self_scm ())); - } - else - { - c->set_object ("between-cols", scm_cons (left_neighbor->self_scm (), - right_neighbor->self_scm ())); - - - /* - Set distance constraints for loose columns - */ - Drul_array next_door (dynamic_cast (cols->at (i - 1)), - dynamic_cast (cols->at (i + 1))); - - set_distances_for_loose_col (me, c, next_door, options); - } - } - - if (!loose) - newcols.push_back (c); + { + Grob *right_neighbor = unsmob_grob (c->get_object ("right-neighbor")); + Grob *left_neighbor = unsmob_grob (c->get_object ("left-neighbor")); + + /* + Either object can be non existent, if the score ends + prematurely. + */ + if (!right_neighbor || !left_neighbor) + { + c->programming_error ("Cannot determine neighbors for floating column."); + c->set_object ("between-cols", scm_cons (cols->at (i - 1)->self_scm (), + cols->at (i + 1)->self_scm ())); + } + else + { + c->set_object ("between-cols", scm_cons (left_neighbor->self_scm (), + right_neighbor->self_scm ())); + + /* + Set distance constraints for loose columns + */ + Drul_array next_door (dynamic_cast (left_neighbor), + dynamic_cast (right_neighbor)); + + set_distances_for_loose_col (me, c, next_door, options); + } + } + + else + newcols.push_back (c); } *cols = newcols; @@ -265,35 +258,35 @@ Spacing_spanner::prune_loose_columns (Grob *me, Set neighboring columns determined by the spacing-wishes grob property. */ void -Spacing_spanner::set_explicit_neighbor_columns (vector const &cols) +Spacing_spanner::set_explicit_neighbor_columns (vector const &cols) { for (vsize i = 0; i < cols.size (); i++) { extract_grob_set (cols[i], "spacing-wishes", wishes); for (vsize j = wishes.size (); j--;) - { - Item *wish = dynamic_cast (wishes[j]); - Item *left_col = wish->get_column (); - int left_rank = Paper_column::get_rank (left_col); - int min_right_rank = INT_MAX; - - extract_grob_set (wish, "right-items", right_items); - for (vsize k = right_items.size (); k--;) - { - Item *right_col = dynamic_cast (right_items[k])->get_column (); - int right_rank = Paper_column::get_rank (right_col); - - if (right_rank < min_right_rank) - { - left_col->set_object ("right-neighbor", right_col->self_scm ()); - min_right_rank = right_rank; - } - - Grob *old_left_neighbor = unsmob_grob (right_col->get_object ("left-neighbor")); - if (!old_left_neighbor || left_rank > Paper_column::get_rank (old_left_neighbor)) - right_col->set_object ("left-neighbor", left_col->self_scm ()); - } - } + { + Item *wish = dynamic_cast (wishes[j]); + Item *left_col = wish->get_column (); + int left_rank = Paper_column::get_rank (left_col); + int min_right_rank = INT_MAX; + + extract_grob_set (wish, "right-items", right_items); + for (vsize k = right_items.size (); k--;) + { + Item *right_col = dynamic_cast (right_items[k])->get_column (); + int right_rank = Paper_column::get_rank (right_col); + + if (right_rank < min_right_rank) + { + left_col->set_object ("right-neighbor", right_col->self_scm ()); + min_right_rank = right_rank; + } + + Grob *old_left_neighbor = unsmob_grob (right_col->get_object ("left-neighbor")); + if (!old_left_neighbor || left_rank > Paper_column::get_rank (old_left_neighbor)) + right_col->set_object ("left-neighbor", left_col->self_scm ()); + } + } } } @@ -303,17 +296,17 @@ Spacing_spanner::set_explicit_neighbor_columns (vector const &cols) Why only these? --jneem */ void -Spacing_spanner::set_implicit_neighbor_columns (vector const &cols) +Spacing_spanner::set_implicit_neighbor_columns (vector const &cols) { for (vsize i = 0; i < cols.size (); i++) { Item *it = dynamic_cast (cols[i]); if (!Paper_column::is_breakable (it) && !Paper_column::is_musical (it)) - continue; + continue; if (i && !unsmob_grob (cols[i]->get_object ("left-neighbor"))) - cols[i]->set_object ("left-neighbor", cols[i-1]->self_scm ()); + cols[i]->set_object ("left-neighbor", cols[i - 1]->self_scm ()); if (i + 1 < cols.size () && !unsmob_grob (cols[i]->get_object ("right-neighbor"))) - cols[i]->set_object ("right-neighbor", cols[i+1]->self_scm ()); + cols[i]->set_object ("right-neighbor", cols[i + 1]->self_scm ()); } } diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index 65cea5cbec..fee5c34085 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,7 +53,7 @@ compare (Rhythmic_tuple const &a, Rhythmic_tuple const &b) int Rhythmic_tuple::time_compare (Rhythmic_tuple const &h1, - Rhythmic_tuple const &h2) + Rhythmic_tuple const &h2) { return (h1.end_ - h2.end_).main_part_.sign (); } @@ -72,7 +72,7 @@ class Spacing_engraver : public Engraver Moment now_; Spanner *spacing_; Stream_event *start_section_; - + TRANSLATOR_DECLARATIONS (Spacing_engraver); protected: @@ -111,7 +111,7 @@ Spacing_engraver::process_music () { if (start_section_ && spacing_) stop_spanner (); - + if (!spacing_) start_spanner (); } @@ -121,10 +121,9 @@ Spacing_engraver::start_spanner () { assert (!spacing_); - spacing_ = make_spanner ("SpacingSpanner", SCM_EOL); spacing_->set_bound (LEFT, - unsmob_grob (get_property ("currentCommandColumn"))); + unsmob_grob (get_property ("currentCommandColumn"))); } void @@ -160,7 +159,7 @@ Spacing_engraver::acknowledge_staff_spacing (Grob_info i) void Spacing_engraver::acknowledge_rhythmic_grob (Grob_info i) { - add_starter_duration (i); + add_starter_duration (i); } void @@ -169,7 +168,6 @@ Spacing_engraver::acknowledge_rhythmic_head (Grob_info i) add_starter_duration (i); } - void Spacing_engraver::add_starter_duration (Grob_info i) { @@ -184,11 +182,11 @@ Spacing_engraver::add_starter_duration (Grob_info i) { Stream_event *r = i.event_cause (); if (r && r->in_event_class ("rhythmic-event")) - { - Moment len = get_event_length (r, now_); - Rhythmic_tuple t (i, now_mom () + len); - now_durations_.push_back (t); - } + { + Moment len = get_event_length (r, now_); + Rhythmic_tuple t (i, now_mom () + len); + now_durations_.push_back (t); + } } } @@ -198,14 +196,13 @@ Spacing_engraver::stop_translation_timestep () Paper_column *musical_column = dynamic_cast (unsmob_grob (get_property ("currentMusicalColumn"))); - if (!spacing_) start_spanner (); musical_column->set_object ("spacing", spacing_->self_scm ()); unsmob_grob (get_property ("currentCommandColumn")) - ->set_object ("spacing", spacing_->self_scm ()); - + ->set_object ("spacing", spacing_->self_scm ()); + SCM proportional = get_property ("proportionalNotationDuration"); if (unsmob_moment (proportional)) { @@ -221,11 +218,10 @@ Spacing_engraver::stop_translation_timestep () { Stream_event *ev = playing_durations_[i].info_.event_cause (); if (ev) - { - Moment now = now_mom (); - Moment m = get_event_length (ev); - shortest_playing = min (shortest_playing, m); - } + { + Moment m = get_event_length (ev); + shortest_playing = min (shortest_playing, m); + } } Moment starter; starter.set_infinite (1); @@ -234,10 +230,10 @@ Spacing_engraver::stop_translation_timestep () { Moment m = get_event_length (now_durations_[i].info_.event_cause ()); if (m.to_bool ()) - { - starter = min (starter, m); - playing_durations_.insert (now_durations_[i]); - } + { + starter = min (starter, m); + playing_durations_.insert (now_durations_[i]); + } } now_durations_.clear (); @@ -251,8 +247,6 @@ Spacing_engraver::stop_translation_timestep () musical_column->set_property ("shortest-starter-duration", st); } - - void Spacing_engraver::start_translation_timestep () { @@ -260,7 +254,7 @@ Spacing_engraver::start_translation_timestep () now_ = now_mom (); stopped_durations_.clear (); - + while (playing_durations_.size () && playing_durations_.front ().end_ < now_) playing_durations_.delmin (); while (playing_durations_.size () && playing_durations_.front ().end_ == now_) @@ -273,18 +267,18 @@ ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_head); ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob); ADD_TRANSLATOR (Spacing_engraver, - /* doc */ - "Make a @code{SpacingSpanner} and do bookkeeping of shortest" - " starting and playing notes.", - - /* create */ - "SpacingSpanner ", - - /* read */ - "currentMusicalColumn " - "currentCommandColumn " - "proportionalNotationDuration ", - - /* write */ - "" - ); + /* doc */ + "Make a @code{SpacingSpanner} and do bookkeeping of shortest" + " starting and playing notes.", + + /* create */ + "SpacingSpanner ", + + /* read */ + "currentMusicalColumn " + "currentCommandColumn " + "proportionalNotationDuration ", + + /* write */ + "" + ); diff --git a/lily/spacing-interface.cc b/lily/spacing-interface.cc index f9d3287cb0..27c99bb159 100644 --- a/lily/spacing-interface.cc +++ b/lily/spacing-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Joe Neeman + Copyright (C) 2007--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,51 +44,49 @@ Spacing_interface::skylines (Grob *me, Grob *right_col) */ Grob *orig = me->original () ? me->original () : me; - Drul_array break_dirs (dynamic_cast (me)->break_status_dir (), - dynamic_cast (right_col)->break_status_dir ()); + Drul_array break_dirs (dynamic_cast (me)->break_status_dir (), + dynamic_cast (right_col)->break_status_dir ()); Drul_array skylines = Drul_array (Skyline (RIGHT), Skyline (LEFT)); - Drul_array > items (ly_scm2link_array (orig->get_object ("left-items")), - ly_scm2link_array (orig->get_object ("right-items"))); + Drul_array > items (ly_scm2link_array (orig->get_object ("left-items")), + ly_scm2link_array (orig->get_object ("right-items"))); Grob *system = me->get_system (); - Grob *left_col = dynamic_cast (me)->get_column (); + Grob *left_col = dynamic_cast (me)->get_column (); - Drul_array columns (left_col, right_col); + Drul_array columns (left_col, right_col); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { for (vsize i = 0; i < items[d].size (); i++) - { - Item *g = dynamic_cast (items[d][i]); - if (g) - if (Item *piece = g->find_prebroken_piece (break_dirs[d])) - g = piece; - - if (g && Separation_item::has_interface (g) && g->get_column () == columns[d]) - { - SCM sky_scm = g->get_property ("horizontal-skylines"); - Skyline_pair *sky = Skyline_pair::unsmob (sky_scm); - - extract_grob_set (g, "elements", elts); - Grob *ycommon = common_refpoint_of_array (elts, g, Y_AXIS); - Real shift = ycommon->pure_relative_y_coordinate (system, 0, INT_MAX); - - skylines[d].shift (-shift); - - if (sky) - skylines[d].merge ((*sky)[-d]); - else - programming_error ("separation item has no skyline"); - - if (d == RIGHT && items[LEFT].size ()) - skylines[d].merge (Separation_item::conditional_skyline (items[d][i], items[LEFT][0])); - - skylines[d].shift (shift); - } - } + { + Item *g = dynamic_cast (items[d][i]); + if (g) + if (Item *piece = g->find_prebroken_piece (break_dirs[d])) + g = piece; + + if (g && Separation_item::has_interface (g) && g->get_column () == columns[d]) + { + SCM sky_scm = g->get_property ("horizontal-skylines"); + Skyline_pair *sky = Skyline_pair::unsmob (sky_scm); + + extract_grob_set (g, "elements", elts); + Grob *ycommon = common_refpoint_of_array (elts, g, Y_AXIS); + Real shift = ycommon->pure_relative_y_coordinate (system, 0, INT_MAX); + + skylines[d].shift (-shift); + + if (sky) + skylines[d].merge ((*sky)[-d]); + else + programming_error ("separation item has no skyline"); + + if (d == RIGHT && items[LEFT].size ()) + skylines[d].merge (Separation_item::conditional_skyline (items[d][i], items[LEFT][0])); + + skylines[d].shift (shift); + } + } } - while (flip (&d) != LEFT); return skylines; } @@ -121,10 +119,10 @@ Spacing_interface::right_column (Grob *me) int rank = Paper_column::get_rank (col); if (rank < min_rank) - { - min_rank = rank; - mincol = col; - } + { + min_rank = rank; + mincol = col; + } } return mincol; @@ -139,35 +137,35 @@ Spacing_interface::left_column (Grob *me) return dynamic_cast (me)->get_column (); } -static vector -get_note_columns (vector const &elts) +static vector +get_note_columns (vector const &elts) { - vector ret; + vector ret; for (vsize i = 0; i < elts.size (); i++) { if (Note_column::has_interface (elts[i])) - ret.push_back (dynamic_cast (elts[i])); + ret.push_back (dynamic_cast (elts[i])); else if (Separation_item::has_interface (elts[i])) - { - extract_grob_set (elts[i], "elements", more_elts); - vector ncs = get_note_columns (more_elts); + { + extract_grob_set (elts[i], "elements", more_elts); + vector ncs = get_note_columns (more_elts); - ret.insert (ret.end (), ncs.begin (), ncs.end ()); - } + ret.insert (ret.end (), ncs.begin (), ncs.end ()); + } } return ret; } -vector +vector Spacing_interface::right_note_columns (Grob *me) { extract_grob_set (me, "right-items", elts); return get_note_columns (elts); } -vector +vector Spacing_interface::left_note_columns (Grob *me) { extract_grob_set (me, "left-items", elts); @@ -180,9 +178,9 @@ Spacing_interface::left_note_columns (Grob *me) */ Grob * Spacing_interface::extremal_break_aligned_grob (Grob *me, - Direction d, - Direction break_dir, - Interval *last_ext) + Direction d, + Direction break_dir, + Interval *last_ext) { Grob *col = 0; last_ext->set_empty (); @@ -192,39 +190,38 @@ Spacing_interface::extremal_break_aligned_grob (Grob *me, for (vsize i = elts.size (); i--;) { - Item *break_item = dynamic_cast (elts[i]); + Item *break_item = dynamic_cast (elts[i]); if (break_item->break_status_dir () != break_dir) - break_item = break_item->find_prebroken_piece (break_dir); + break_item = break_item->find_prebroken_piece (break_dir); if (!break_item || !scm_is_pair (break_item->get_property ("space-alist"))) - continue; + continue; if (!col) - col = dynamic_cast (elts[0])->get_column ()->find_prebroken_piece (break_dir); + col = dynamic_cast (elts[0])->get_column ()->find_prebroken_piece (break_dir); Interval ext = break_item->extent (col, X_AXIS); if (ext.is_empty ()) - continue; + continue; if (!last_grob - || (last_grob && d * (ext[-d]- (*last_ext)[-d]) < 0)) - { - *last_ext = ext; - last_grob = break_item; - } + || (last_grob && d * (ext[-d] - (*last_ext)[-d]) < 0)) + { + *last_ext = ext; + last_grob = break_item; + } } return last_grob; } - ADD_INTERFACE (Spacing_interface, - "This object calculates the desired and minimum distances" - " between two columns.", + "This object calculates the desired and minimum distances" + " between two columns.", - /* properties */ - "left-items " - "right-items " - ); + /* properties */ + "left-items " + "right-items " + ); diff --git a/lily/spacing-loose-columns.cc b/lily/spacing-loose-columns.cc index 03cac8431c..bf8e13593a 100644 --- a/lily/spacing-loose-columns.cc +++ b/lily/spacing-loose-columns.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,135 +48,171 @@ set_loose_columns (System *which, Column_x_positions const *posns) Item *left = 0; Item *right = 0; - vector clique; + vector clique; while (1) - { - SCM between = loose->get_object ("between-cols"); - if (!scm_is_pair (between)) - break; + { + SCM between = loose->get_object ("between-cols"); + if (!scm_is_pair (between)) + break; - /* If the line was broken at one of the loose columns, split - the clique at that column. */ - if (!loose->get_system ()) - break; + /* If the line was broken at one of the loose columns, split + the clique at that column. */ + if (!loose->get_system ()) + break; - Paper_column *le = dynamic_cast (unsmob_grob (scm_car (between))); - Paper_column *re = dynamic_cast (unsmob_grob (scm_cdr (between))); + Paper_column *le = dynamic_cast (unsmob_grob (scm_car (between))); + Paper_column *re = dynamic_cast (unsmob_grob (scm_cdr (between))); - if (! (le && re)) - break; + if (! (le && re)) + break; - if (!left && le) - { - left = le->get_column (); - if (!left->get_system ()) - left = left->find_prebroken_piece (RIGHT); + if (!left && le) + { + left = le->get_column (); + if (!left->get_system ()) + left = left->find_prebroken_piece (RIGHT); - clique.push_back (left); - } + clique.push_back (left); + } - clique.push_back (loose); + clique.push_back (loose); - divide_over++; - loose = right = re->get_column (); - } + divide_over++; + loose = right = re->get_column (); + } if (!right) - { - programming_error ("Can't attach loose column sensibly. Attaching to end of system."); - right = which->get_bound (RIGHT); - } + { + programming_error ("Can't attach loose column sensibly." + " Attaching to end of system."); + right = which->get_bound (RIGHT); + } if (right->get_system ()) - ; /* do nothing */ + ; /* do nothing */ else if (right->find_prebroken_piece (LEFT) - && right->find_prebroken_piece (LEFT)->get_system () == which) - right = right->find_prebroken_piece (LEFT); + && right->find_prebroken_piece (LEFT)->get_system () == which) + right = right->find_prebroken_piece (LEFT); else if (Paper_column::get_rank (which->get_bound (RIGHT)) < Paper_column::get_rank (right)) - right = which->get_bound (RIGHT); + right = which->get_bound (RIGHT); else - { - clique.back ()->programming_error ("Loose column does not have right side to attach to."); - System *base_system = dynamic_cast (which->original ()); - int j = Paper_column::get_rank (clique.back ()) + 1; - int end_rank = Paper_column::get_rank (which->get_bound (RIGHT)); - extract_grob_set (base_system, "columns", base_cols); - for (; j < end_rank; j++) - { - if (base_cols[j]->get_system () == which) - right = dynamic_cast ((Grob*)base_cols[j]); - } - } - + { + clique.back ()->programming_error ("Loose column does not have right side to attach to."); + System *base_system = dynamic_cast (which->original ()); + int j = Paper_column::get_rank (clique.back ()) + 1; + int end_rank = Paper_column::get_rank (which->get_bound (RIGHT)); + extract_grob_set (base_system, "columns", base_cols); + for (; j < end_rank; j++) + { + if (base_cols[j]->get_system () == which) + right = dynamic_cast ((Grob *)base_cols[j]); + } + } + Grob *common = right->common_refpoint (left, X_AXIS); clique.push_back (right); + /* + We use two vectors to keep track of loose column spacing: + clique_spacing keeps track of ideal spaces. + clique_tight_spacing keeps track of minimum spaces. + Below, a scale factor is applied to the shifting of loose columns that + aims to preserve clique_spacing but gets closer to clique_tight_spacing as the + space becomes smaller. This is used because the rods placed for loose columns + are tight (meaning they use minimum distances - see set_distances_for_loose_columns). + However, other rods may widen this distance, in which case we don't want a crammed score. + Thus, we aim for non-crammed, and fall back on crammed as needed. + */ vector clique_spacing; + vector clique_tight_spacing; clique_spacing.push_back (0.0); - for (vsize j = 1; j + 1 < clique.size (); j ++) - { - Grob *clique_col = clique[j]; - - Paper_column *loose_col = dynamic_cast (clique[j]); - Paper_column *next_col = dynamic_cast (clique[j + 1]); - - Grob *spacing = unsmob_grob (clique_col->get_object ("spacing")); - if (Grob *grace_spacing = unsmob_grob (clique_col->get_object ("grace-spacing"))) - { - spacing = grace_spacing; - } - - Spacing_options options; - if (spacing) - options.init_from_grob (spacing); - else - programming_error ("Column without spacing object"); - - Real base_note_space = 0.0; - - if (Paper_column::is_musical (next_col) - && Paper_column::is_musical (loose_col)) - base_note_space = Spacing_spanner::note_spacing (spacing, loose_col, next_col, - &options); - else - { - Spring spring = Spacing_spanner::standard_breakable_column_spacing (spacing, - loose_col, next_col, - &options); - - base_note_space = spring.distance (); - } - - base_note_space = max (base_note_space, - robust_relative_extent (loose_col, loose_col, X_AXIS)[RIGHT] - - robust_relative_extent (next_col, next_col, X_AXIS)[LEFT]); - - clique_spacing.push_back (base_note_space); - } - - Real default_padding = 1.0; - clique_spacing.push_back (default_padding); - + clique_tight_spacing.push_back (0.0); + for (vsize j = 1; j + 1 < clique.size (); j++) + { + Grob *clique_col = clique[j]; + + Paper_column *loose_col = dynamic_cast (clique[j]); + Paper_column *next_col = dynamic_cast (clique[j + 1]); + + Grob *spacing = unsmob_grob (clique_col->get_object ("spacing")); + if (Grob *grace_spacing = unsmob_grob (clique_col->get_object ("grace-spacing"))) + { + spacing = grace_spacing; + } + + Spacing_options options; + if (spacing) + options.init_from_grob (spacing); + else + programming_error ("Column without spacing object"); + + Real base_note_space = 0.0; + Real tight_note_space = 0.0; + + if (Paper_column::is_musical (next_col) + && Paper_column::is_musical (loose_col)) + { + Real base = Spacing_spanner::note_spacing (spacing, loose_col, next_col, + &options); + if (Note_spacing::has_interface (spacing)) + { + Spring spring = Note_spacing::get_spacing (spacing, next_col, base, options.increment_);; + base_note_space = spring.distance (); + tight_note_space = spring.min_distance (); + } + else + { + base_note_space = base; + tight_note_space = base; + } + } + else + { + Spring spring = Spacing_spanner::standard_breakable_column_spacing (spacing, + loose_col, next_col, + &options); + + base_note_space = spring.distance (); + tight_note_space = spring.min_distance (); + } + + Real loose_col_horizontal_length = loose_col->extent (loose_col, X_AXIS).length (); + base_note_space = max (base_note_space, loose_col_horizontal_length); + tight_note_space = max (tight_note_space, loose_col_horizontal_length); + + clique_spacing.push_back (base_note_space); + clique_tight_spacing.push_back (tight_note_space); + } + + Real permissible_distance = clique.back ()->relative_coordinate (common, X_AXIS) - robust_relative_extent (clique[0], common, X_AXIS)[RIGHT]; Real right_point = robust_relative_extent (clique.back (), common, X_AXIS)[LEFT]; - - Grob *finished_right_column = clique.back (); - + + Real sum_tight_spacing = 0; + Real sum_spacing = 0; + // currently a magic number - what would be a good grob to hold this property? + Real left_padding = 0.15; + for (vsize j = 0; j < clique_spacing.size (); j++) + { + sum_tight_spacing += clique_tight_spacing[j]; + sum_spacing += clique_spacing[j]; + } + Real scale_factor = max (0.0, min (1.0, (permissible_distance - left_padding - sum_tight_spacing) / (sum_spacing - sum_tight_spacing))); for (vsize j = clique.size () - 2; j > 0; j--) - { - Paper_column *clique_col = dynamic_cast (clique[j]); - - right_point = finished_right_column->relative_coordinate (common, X_AXIS); + { + Paper_column *clique_col = dynamic_cast (clique[j]); + + right_point = finished_right_column->relative_coordinate (common, X_AXIS); + + Real distance_to_next = clique_tight_spacing[j] + (clique_spacing[j] - clique_tight_spacing[j]) * scale_factor; - Real distance_to_next = clique_spacing[j]; - - Real my_offset = right_point - distance_to_next; + Real my_offset = right_point - distance_to_next; - clique_col->translate_axis (my_offset - clique_col->relative_coordinate (common, X_AXIS), X_AXIS); + clique_col->translate_axis (my_offset - clique_col->relative_coordinate (common, X_AXIS), X_AXIS); - finished_right_column = clique_col; - } + finished_right_column = clique_col; + } } } diff --git a/lily/spacing-options.cc b/lily/spacing-options.cc index 934acb20cc..e90dcebcab 100644 --- a/lily/spacing-options.cc +++ b/lily/spacing-options.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -38,9 +38,8 @@ Spacing_options::init_from_grob (Grob *me) = to_boolean (me->get_property ("strict-grace-spacing")); shortest_duration_space_ = robust_scm2double (me->get_property ("shortest-duration-space"), 1); - Moment shortest_dur = robust_scm2moment (me->get_property ("common-shortest-duration"), - Moment (Rational (1,8), Rational (1,16))); + Moment (Rational (1, 8), Rational (1, 16))); if (shortest_dur.main_part_) global_shortest_ = shortest_dur.main_part_; @@ -61,8 +60,6 @@ Spacing_options::Spacing_options () global_shortest_ = Rational (1, 8); } - - /* Get the measure wide ant for arithmetic spacing. */ @@ -74,18 +71,18 @@ Spacing_options::get_duration_space (Rational d) const if (d < global_shortest_) { /* - We don't space really short notes using the log of the - duration, since it would disproportionally stretches the long - notes in a piece. In stead, we use geometric spacing with constant 0.5 - (i.e. linear.) + We don't space really short notes using the log of the + duration, since it would disproportionally stretches the long + notes in a piece. In stead, we use geometric spacing with constant 0.5 + (i.e. linear.) - This should probably be tunable, to use other base numbers. + This should probably be tunable, to use other base numbers. - In Mozart hrn3 by EB., we have 8th note = 3.9 mm (total), 16th note = - 3.6 mm (total). head-width = 2.4, so we 1.2mm for 16th, 1.5 - mm for 8th. (white space), suggesting that we use + In Mozart hrn3 by EB., we have 8th note = 3.9 mm (total), 16th note = + 3.6 mm (total). head-width = 2.4, so we 1.2mm for 16th, 1.5 + mm for 8th. (white space), suggesting that we use - (1.2 / 1.5)^{-log2(duration ratio)} + (1.2 / 1.5)^{-log2(duration ratio)} */ @@ -96,9 +93,9 @@ Spacing_options::get_duration_space (Rational d) const else { /* - John S. Gourlay. ``Spacing a Line of Music, '' Technical - Report OSU-CISRC-10/87-TR35, Department of Computer and - Information Science, The Ohio State University, 1987. + John S. Gourlay. ``Spacing a Line of Music, '' Technical + Report OSU-CISRC-10/87-TR35, Department of Computer and + Information Science, The Ohio State University, 1987. */ Real log = log_2 (global_shortest_); k -= log; diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 0395506bbc..657ff0cd6a 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,18 +39,18 @@ #include "system.hh" #include "warn.hh" -vector +vector Spacing_spanner::get_columns (Grob *me_grob) { - Spanner *me = dynamic_cast (me_grob); - vector all (get_root_system (me)->used_columns ()); - vsize start = binary_search (all, (Grob*)me->get_bound (LEFT), - &Paper_column::less_than); - vsize end = binary_search (all, (Grob*) me->get_bound (RIGHT), - &Paper_column::less_than); - - all = vector (all.begin () + start, - all.begin () + end + 1); + Spanner *me = dynamic_cast (me_grob); + vector all (get_root_system (me)->used_columns ()); + vsize start = binary_search (all, (Grob *)me->get_bound (LEFT), + &Paper_column::less_than); + vsize end = binary_search (all, (Grob *) me->get_bound (RIGHT), + &Paper_column::less_than); + + all = vector (all.begin () + start, + all.begin () + end + 1); return all; } @@ -65,7 +65,7 @@ Spacing_spanner::set_springs (SCM smob) */ Spacing_options options; options.init_from_grob (me); - vector cols = Spacing_spanner::get_columns (me); + vector cols = Spacing_spanner::get_columns (me); set_explicit_neighbor_columns (cols); prune_loose_columns (me, &cols, &options); @@ -86,13 +86,13 @@ Spacing_spanner::set_springs (SCM smob) */ MAKE_SCHEME_CALLBACK (Spacing_spanner, calc_common_shortest_duration, 1); -SCM +SCM Spacing_spanner::calc_common_shortest_duration (SCM grob) { Spanner *me = unsmob_spanner (grob); - vector cols (get_columns (me)); - + vector cols (get_columns (me)); + /* ascending in duration */ @@ -105,47 +105,47 @@ Spacing_spanner::calc_common_shortest_duration (SCM grob) for (vsize i = 0; i < cols.size (); i++) { if (Paper_column::is_musical (cols[i])) - { - Moment *when = unsmob_moment (cols[i]->get_property ("when")); - - /* - ignore grace notes for shortest notes. - */ - if (when && when->grace_part_) - continue; - - SCM st = cols[i]->get_property ("shortest-starter-duration"); - Moment this_shortest = *unsmob_moment (st); - assert (this_shortest.to_bool ()); - shortest_in_measure = min (shortest_in_measure, this_shortest.main_part_); - } + { + Moment *when = unsmob_moment (cols[i]->get_property ("when")); + + /* + ignore grace notes for shortest notes. + */ + if (when && when->grace_part_) + continue; + + SCM st = cols[i]->get_property ("shortest-starter-duration"); + Moment this_shortest = *unsmob_moment (st); + assert (this_shortest.to_bool ()); + shortest_in_measure = min (shortest_in_measure, this_shortest.main_part_); + } else if (!shortest_in_measure.is_infinity () - && Paper_column::is_breakable (cols[i])) - { - vsize j = 0; - for (; j < durations.size (); j++) - { - if (durations[j] > shortest_in_measure) - { - counts.insert (counts.begin () + j, 1); - durations.insert (durations.begin () + j, shortest_in_measure); - break; - } - else if (durations[j] == shortest_in_measure) - { - counts[j]++; - break; - } - } - - if (durations.size () == j) - { - durations.push_back (shortest_in_measure); - counts.push_back (1); - } - - shortest_in_measure.set_infinite (1); - } + && Paper_column::is_breakable (cols[i])) + { + vsize j = 0; + for (; j < durations.size (); j++) + { + if (durations[j] > shortest_in_measure) + { + counts.insert (counts.begin () + j, 1); + durations.insert (durations.begin () + j, shortest_in_measure); + break; + } + else if (durations[j] == shortest_in_measure) + { + counts[j]++; + break; + } + } + + if (durations.size () == j) + { + durations.push_back (shortest_in_measure); + counts.push_back (1); + } + + shortest_in_measure.set_infinite (1); + } } vsize max_idx = VPOS; @@ -153,10 +153,10 @@ Spacing_spanner::calc_common_shortest_duration (SCM grob) for (vsize i = durations.size (); i--;) { if (counts[i] >= max_count) - { - max_idx = i; - max_count = counts[i]; - } + { + max_idx = i; + max_count = counts[i]; + } } SCM bsd = me->get_property ("base-shortest-duration"); @@ -172,144 +172,144 @@ Spacing_spanner::calc_common_shortest_duration (SCM grob) void Spacing_spanner::generate_pair_spacing (Grob *me, - Paper_column *left_col, Paper_column *right_col, - Paper_column *after_right_col, - Spacing_options const *options) + Paper_column *left_col, Paper_column *right_col, + Paper_column *after_right_col, + Spacing_options const *options) { if (Paper_column::is_musical (left_col)) { if (!Paper_column::is_musical (right_col) - && (options->float_nonmusical_columns_ || to_boolean (right_col->get_property ("maybe-loose"))) - && after_right_col - && Paper_column::is_musical (after_right_col)) - { - /* - TODO: should generate rods to prevent collisions. - */ - musical_column_spacing (me, left_col, after_right_col, options); - right_col->set_object ("between-cols", scm_cons (left_col->self_scm (), - after_right_col->self_scm ())); - } + && (options->float_nonmusical_columns_ || to_boolean (right_col->get_property ("maybe-loose"))) + && after_right_col + && Paper_column::is_musical (after_right_col)) + { + /* + TODO: should generate rods to prevent collisions. + */ + musical_column_spacing (me, left_col, after_right_col, options); + right_col->set_object ("between-cols", scm_cons (left_col->self_scm (), + after_right_col->self_scm ())); + } else - musical_column_spacing (me, left_col, right_col, options); + musical_column_spacing (me, left_col, right_col, options); if (Item *rb = right_col->find_prebroken_piece (LEFT)) - musical_column_spacing (me, left_col, rb, options); + musical_column_spacing (me, left_col, rb, options); } else { /* - The case that the right part is broken as well is rather - rare, but it is possible, eg. with a single empty measure, - or if one staff finishes a tad earlier than the rest. + The case that the right part is broken as well is rather + rare, but it is possible, eg. with a single empty measure, + or if one staff finishes a tad earlier than the rest. */ Item *lb = left_col->find_prebroken_piece (RIGHT); Item *rb = right_col->find_prebroken_piece (LEFT); if (left_col && right_col) - breakable_column_spacing (me, left_col, right_col, options); + breakable_column_spacing (me, left_col, right_col, options); if (lb && right_col) - breakable_column_spacing (me, lb, right_col, options); + breakable_column_spacing (me, lb, right_col, options); if (left_col && rb) - breakable_column_spacing (me, left_col, rb, options); + breakable_column_spacing (me, left_col, rb, options); if (lb && rb) - breakable_column_spacing (me, lb, rb, options); + breakable_column_spacing (me, lb, rb, options); } } static void -set_column_rods (vector const &cols, Real padding) +set_column_rods (vector const &cols, Real padding) { /* distances[i] will be the minimum distance between column i and column i+1 */ vector distances; for (vsize i = 1; i < cols.size (); i++) { - assert (distances.size () == i-1); + assert (distances.size () == i - 1); - Item *r = dynamic_cast (cols[i]); + Item *r = dynamic_cast (cols[i]); Item *rb = r->find_prebroken_piece (LEFT); if (Separation_item::is_empty (r) && (!rb || Separation_item::is_empty (rb))) - { - distances.push_back (0); - continue; - } + { + distances.push_back (0); + continue; + } Skyline_pair *skys = Skyline_pair::unsmob (r->get_property ("horizontal-skylines")); Real right_stickout = skys ? (*skys)[LEFT].max_height () : 0.0; /* min rather than max because right-stickout will be negative if the right-hand column - sticks out a lot to the left */ + sticks out a lot to the left */ right_stickout = min (right_stickout, - Separation_item::conditional_skyline (r, cols[i-1]).max_height ()); + Separation_item::conditional_skyline (r, cols[i - 1]).max_height ()); - Drul_array r_cols (r, rb); + Drul_array r_cols (r, rb); Drul_array cur_dist (0.0, 0.0); /* This is an inner loop and hence it is potentially quadratic. However, we only continue - as long as there is a rod to insert. Therefore, this loop will usually only execute - a constant number of times per iteration of the outer loop. */ + as long as there is a rod to insert. Therefore, this loop will usually only execute + a constant number of times per iteration of the outer loop. */ for (vsize j = i; j--;) - { - Item *l = dynamic_cast (cols[j]); - Item *lb = l->find_prebroken_piece (RIGHT); - Skyline_pair *skys = Skyline_pair::unsmob (l->get_property ("horizontal-skylines")); - Real left_stickout = skys ? (*skys)[RIGHT].max_height () : 0.0; - bool done = true; - - Direction d = LEFT; - do - { - if (j < i-1) - cur_dist[d] += distances[j]; - - Item *r_col = r_cols[d]; - bool touches = right_stickout - left_stickout + cur_dist[d] < 0.0; - Real dist = 0.0; - - /* we set a distance for the line-starter column even if its non-broken counterpart - doesn't touch the right column. */ - if (lb) - Separation_item::set_distance (lb, r_col, padding); - - if (touches || j == i-1) - dist = Separation_item::set_distance (l, r_col, padding); - - if (j == i-1 && d == LEFT) - distances.push_back (dist); - - if (j == i-1) - cur_dist[d] = distances[j]; - - cur_dist[d] = max (cur_dist[d], dist); - done = done && !touches; - } - while (flip (&d) != LEFT && rb); - - /* we need the empty check for gregorian notation, where there are a lot of - extraneous paper-columns that we need to skip over */ - if (done && !Separation_item::is_empty (l)) - break; - } + { + Item *l = dynamic_cast (cols[j]); + Item *lb = l->find_prebroken_piece (RIGHT); + Skyline_pair *skys = Skyline_pair::unsmob (l->get_property ("horizontal-skylines")); + Real left_stickout = skys ? (*skys)[RIGHT].max_height () : 0.0; + bool done = true; + + for (LEFT_and_RIGHT (d)) + { + if (j < i - 1) + cur_dist[d] += distances[j]; + + Item *r_col = r_cols[d]; + bool touches = right_stickout - left_stickout + cur_dist[d] < 0.0; + Real dist = 0.0; + + /* we set a distance for the line-starter column even if its non-broken counterpart + doesn't touch the right column. */ + if (lb) + Separation_item::set_distance (lb, r_col, padding); + + if (touches || j == i - 1) + dist = Separation_item::set_distance (l, r_col, padding); + + if (j == i - 1 && d == LEFT) + distances.push_back (dist); + + if (j == i - 1) + cur_dist[d] = distances[j]; + + cur_dist[d] = max (cur_dist[d], dist); + done = done && !touches; + + if (!rb) + break; + } + + /* we need the empty check for gregorian notation, where there are a lot of + extraneous paper-columns that we need to skip over */ + if (done && !Separation_item::is_empty (l)) + break; + } } } - void Spacing_spanner::generate_springs (Grob *me, - vector const &cols, - Spacing_options const *options) + vector const &cols, + Spacing_options const *options) { - Paper_column *prev = dynamic_cast (cols[0]); + Paper_column *prev = dynamic_cast (cols[0]); for (vsize i = 1; i < cols.size (); i++) { Paper_column *col = dynamic_cast (cols[i]); - Paper_column *next = (i + 1 < cols.size ()) ? dynamic_cast (cols[i+1]) : 0; - + Paper_column *next = (i + 1 < cols.size ()) ? dynamic_cast (cols[i + 1]) : 0; + generate_pair_spacing (me, prev, col, next, options); prev = col; @@ -324,9 +324,9 @@ Spacing_spanner::generate_springs (Grob *me, */ void Spacing_spanner::musical_column_spacing (Grob *me, - Item *left_col, - Item *right_col, - Spacing_options const *options) + Item *left_col, + Item *right_col, + Spacing_options const *options) { Real base_note_space = note_spacing (me, left_col, right_col, options); Spring spring; @@ -339,76 +339,76 @@ Spacing_spanner::musical_column_spacing (Grob *me, extract_grob_set (left_col, "spacing-wishes", wishes); for (vsize i = 0; i < wishes.size (); i++) - { - Grob *wish = wishes[i]; - if (Spacing_interface::left_column (wish) != left_col) - { - /* This shouldn't really happen, but the ancient music - stuff really messes up the spacing code, grrr - */ - continue; - } - - extract_grob_set (wish, "right-items", right_items); - bool found_matching_column = false; - for (vsize j = 0; j < right_items.size (); j++) - { - Item *it = dynamic_cast (right_items[j]); - if (it && (right_col == it->get_column () - || right_col->original () == it->get_column ())) - found_matching_column = true; - } - - /* - This is probably a waste of time in the case of polyphonic - music. */ - if (found_matching_column && Note_spacing::has_interface (wish)) - { - Real inc = options->increment_; - Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing")); - if (gsp && Paper_column::when_mom (left_col).grace_part_) - { - Spacing_options grace_opts; - grace_opts.init_from_grob (gsp); - inc = grace_opts.increment_; - } - springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, inc)); - } - } + { + Grob *wish = wishes[i]; + if (Spacing_interface::left_column (wish) != left_col) + { + /* This shouldn't really happen, but the ancient music + stuff really messes up the spacing code, grrr + */ + continue; + } + + extract_grob_set (wish, "right-items", right_items); + bool found_matching_column = false; + for (vsize j = 0; j < right_items.size (); j++) + { + Item *it = dynamic_cast (right_items[j]); + if (it && (right_col == it->get_column () + || right_col->original () == it->get_column ())) + found_matching_column = true; + } + + /* + This is probably a waste of time in the case of polyphonic + music. */ + if (found_matching_column && Note_spacing::has_interface (wish)) + { + Real inc = options->increment_; + Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing")); + if (gsp && Paper_column::when_mom (left_col).grace_part_) + { + Spacing_options grace_opts; + grace_opts.init_from_grob (gsp); + inc = grace_opts.increment_; + } + springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, inc)); + } + } if (springs.empty ()) - { - - if (!Paper_column::is_musical (right_col)) - { - /* - There used to be code that examined left_col->extent - (X_AXIS), but this is resulted in unexpected wide - spacing, because the width of s^"text" output is also - taken into account here. - */ - spring = Spring (max (base_note_space, options->increment_), - options->increment_); - } - else - { - /* - Min distance should be 0.0. If there are no spacing - wishes, we're probably dealing with polyphonic spacing - of hemiolas. - */ - spring = Spring (base_note_space, 0.0); - } - } + { + + if (!Paper_column::is_musical (right_col)) + { + /* + There used to be code that examined left_col->extent + (X_AXIS), but this is resulted in unexpected wide + spacing, because the width of s^"text" output is also + taken into account here. + */ + spring = Spring (max (base_note_space, options->increment_), + options->increment_); + } + else + { + /* + Min distance should be 0.0. If there are no spacing + wishes, we're probably dealing with polyphonic spacing + of hemiolas. + */ + spring = Spring (base_note_space, 0.0); + } + } else - spring = merge_springs (springs); + spring = merge_springs (springs); } if (Paper_column::when_mom (right_col).grace_part_ && !Paper_column::when_mom (left_col).grace_part_) { /* - Ugh. 0.8 is arbitrary. + Ugh. 0.8 is arbitrary. */ spring *= 0.8; } @@ -419,30 +419,30 @@ Spacing_spanner::musical_column_spacing (Grob *me, if (options->packed_) { /* - In packed mode, pack notes as tight as possible. This makes - sense mostly in combination with ragged-right mode: the notes - are then printed at minimum distance. This is mostly useful - for ancient notation, but may also be useful for some flavours - of contemporary music. If not in ragged-right mode, lily will - pack as many bars of music as possible into a line, but the - line will then be stretched to fill the whole linewidth. - - Note that we don't actually pack things as tightly as possible: - we don't allow the next column to begin before this one ends. + In packed mode, pack notes as tight as possible. This makes + sense mostly in combination with ragged-right mode: the notes + are then printed at minimum distance. This is mostly useful + for ancient notation, but may also be useful for some flavours + of contemporary music. If not in ragged-right mode, lily will + pack as many bars of music as possible into a line, but the + line will then be stretched to fill the whole linewidth. + + Note that we don't actually pack things as tightly as possible: + we don't allow the next column to begin before this one ends. */ /* FIXME: the else clause below is the "right" thing to do, - but we can't do it because of all the empty columns that the - ligature-engravers leave lying around. In that case, the extent of - the column is incorrect because it includes note-heads that aren't - there. We get around this by only including the column extent if - the left-hand column is "genuine". This is a dirty hack and it - should be fixed in the ligature-engravers. --jneem + but we can't do it because of all the empty columns that the + ligature-engravers leave lying around. In that case, the extent of + the column is incorrect because it includes note-heads that aren't + there. We get around this by only including the column extent if + the left-hand column is "genuine". This is a dirty hack and it + should be fixed in the ligature-engravers. --jneem */ if (Paper_column::is_extraneous_column_from_ligature (left_col)) - spring.set_distance (spring.min_distance ()); + spring.set_distance (spring.min_distance ()); else - spring.set_distance (max (left_col->extent (left_col, X_AXIS)[RIGHT], - spring.min_distance ())); + spring.set_distance (max (left_col->extent (left_col, X_AXIS)[RIGHT], + spring.min_distance ())); spring.set_inverse_stretch_strength (1.0); } @@ -466,21 +466,21 @@ Spacing_spanner::fills_measure (Grob *me, Item *left, Item *col) || !Paper_column::is_musical (col) || !Paper_column::is_used (next)) return false; - - Moment dt = - Paper_column::when_mom (next) - Paper_column::when_mom (col); - + + Moment dt + = Paper_column::when_mom (next) - Paper_column::when_mom (col); + Moment *len = unsmob_moment (left->get_property ("measure-length")); if (!len) return false; - + /* Don't check for exact measure length, since ending measures are often shortened due to pickups. */ if (dt.main_part_ > len->main_part_ / Rational (2) && (next->is_broken () - || next->break_status_dir ())) + || next->break_status_dir ())) return true; return false; @@ -491,11 +491,17 @@ Spacing_spanner::fills_measure (Grob *me, Item *left, Item *col) */ void Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, - Spacing_options const *options) + Spacing_options const *options) { vector springs; Spring spring; + Real full_measure_space = 0.0; + if (Paper_column::is_musical (r) + && l->break_status_dir () == CENTER + && fills_measure (me, l, r)) + full_measure_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0); + Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l); if (dt == Moment (0, 0)) @@ -503,20 +509,21 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, extract_grob_set (l, "spacing-wishes", wishes); for (vsize i = 0; i < wishes.size (); i++) - { - Item *spacing_grob = dynamic_cast (wishes[i]); + { + Item *spacing_grob = dynamic_cast (wishes[i]); - if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob)) - continue; + if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob)) + continue; - /* - column for the left one settings should be ok due automatic - pointer munging. - */ - assert (spacing_grob->get_column () == l); + /* + column for the left one settings should be ok due automatic + pointer munging. + */ + assert (spacing_grob->get_column () == l); - springs.push_back (Staff_spacing::get_spacing (spacing_grob, r)); - } + springs.push_back (Staff_spacing::get_spacing (spacing_grob, r, + full_measure_space)); + } } if (springs.empty ()) @@ -527,22 +534,13 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, if (Paper_column::when_mom (r).grace_part_) { /* - Correct for grace notes. - - Ugh. The 0.8 is arbitrary. + Correct for grace notes. + + Ugh. The 0.8 is arbitrary. */ spring *= 0.8; } - if (Paper_column::is_musical (r) - && l->break_status_dir () == CENTER - && fills_measure (me, l, r)) - { - Real full_measure_extra_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0); - spring.set_distance (spring.distance () + full_measure_extra_space); - spring.set_default_compress_strength (); - } - if (options->stretch_uniformly_ && l->break_status_dir () != RIGHT) { spring.set_min_distance (0.0); @@ -553,28 +551,28 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, } ADD_INTERFACE (Spacing_spanner, - "The space taken by a note is dependent on its duration." - " Doubling a duration adds @code{spacing-increment} to the" - " space. The most common shortest note gets" - " @code{shortest-duration-space}. Notes that are even shorter" - " are spaced proportonial to their duration.\n" - "\n" - "Typically, the increment is the width of a black note head." - " In a piece with lots of 8th notes, and some 16th notes, the" - " eighth note gets a 2@tie{}note heads width (i.e., the space" - " following a note is a 1@tie{}note head width). A 16th note" - " is followed by 0.5 note head width. The quarter note is" - " followed by 3@tie{}NHW, the half by 4@tie{}NHW, etc.", - - /* properties */ - "average-spacing-wishes " - "base-shortest-duration " - "common-shortest-duration " - "packed-spacing " - "shortest-duration-space " - "spacing-increment " - "strict-grace-spacing " - "strict-note-spacing " - "uniform-stretching " - ); + "The space taken by a note is dependent on its duration." + " Doubling a duration adds @code{spacing-increment} to the" + " space. The most common shortest note gets" + " @code{shortest-duration-space}. Notes that are even shorter" + " are spaced proportonial to their duration.\n" + "\n" + "Typically, the increment is the width of a black note head." + " In a piece with lots of 8th notes, and some 16th notes, the" + " eighth note gets a 2@tie{}note heads width (i.e., the space" + " following a note is a 1@tie{}note head width). A 16th note" + " is followed by 0.5 note head width. The quarter note is" + " followed by 3@tie{}NHW, the half by 4@tie{}NHW, etc.", + + /* properties */ + "average-spacing-wishes " + "base-shortest-duration " + "common-shortest-duration " + "packed-spacing " + "shortest-duration-space " + "spacing-increment " + "strict-grace-spacing " + "strict-note-spacing " + "uniform-stretching " + ); diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc index adb465b382..61ebd16dfe 100644 --- a/lily/span-arpeggio-engraver.cc +++ b/lily/span-arpeggio-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen Han-Wen Nienhuys @@ -42,7 +42,7 @@ protected: private: Item *span_arpeggio_; - vector arpeggios_; + vector arpeggios_; }; Span_arpeggio_engraver::Span_arpeggio_engraver () @@ -53,7 +53,7 @@ Span_arpeggio_engraver::Span_arpeggio_engraver () void Span_arpeggio_engraver::acknowledge_arpeggio (Grob_info info) { - if (info.origin_contexts (this).size ()) // huh? what's this test for? + if (info.origin_contexts (this).size ()) // huh? what's this test for? arpeggios_.push_back (info.grob ()); } @@ -81,28 +81,27 @@ Span_arpeggio_engraver::stop_translation_timestep () if (span_arpeggio_) { /* - we do this very late, to make sure we also catch `extra' - side-pos support like accidentals. + we do this very late, to make sure we also catch `extra' + side-pos support like accidentals. */ for (vsize j = 0; j < arpeggios_.size (); j++) - { - extract_grob_set (arpeggios_[j], "stems", stems); - for (vsize i = 0; i < stems.size (); i++) - Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm ("stems"), - stems[i]); - - extract_grob_set (arpeggios_[j], "side-support-elements", sses); - for (vsize i = 0; i < sses.size (); i++) - Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm ("side-support-elements"), - sses[i]); - - /* - we can't kill the children, since we don't want to the - previous note to bump into the span arpeggio; so we make - it transparent. */ - arpeggios_[j]->set_property ("transparent", SCM_BOOL_T); - } - + { + extract_grob_set (arpeggios_[j], "stems", stems); + for (vsize i = 0; i < stems.size (); i++) + Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm ("stems"), + stems[i]); + + extract_grob_set (arpeggios_[j], "side-support-elements", sses); + for (vsize i = 0; i < sses.size (); i++) + Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm ("side-support-elements"), + sses[i]); + + /* + we can't kill the children, since we don't want to the + previous note to bump into the span arpeggio; so we make + it transparent. */ + arpeggios_[j]->set_property ("transparent", SCM_BOOL_T); + } span_arpeggio_->set_parent (arpeggios_[0]->get_parent (Y_AXIS), Y_AXIS); span_arpeggio_ = 0; @@ -114,15 +113,15 @@ Span_arpeggio_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Span_arpeggio_engraver, arpeggio); ADD_TRANSLATOR (Span_arpeggio_engraver, - /* doc */ - "Make arpeggios that span multiple staves.", + /* doc */ + "Make arpeggios that span multiple staves.", - /* create */ - "Arpeggio ", + /* create */ + "Arpeggio ", - /* read */ - "connectArpeggios ", + /* read */ + "connectArpeggios ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc index 5378eab765..09c846f896 100644 --- a/lily/span-bar-engraver.cc +++ b/lily/span-bar-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,10 +17,9 @@ along with LilyPond. If not, see . */ -#include "bar-line.hh" #include "item.hh" -#include "span-bar.hh" #include "engraver.hh" +#include "pointer-group-interface.hh" /** @@ -33,35 +32,48 @@ dependencies to the spanbars. class Span_bar_engraver : public Engraver { Item *spanbar_; - vector bars_; + bool make_spanbar_; + vector bars_; public: TRANSLATOR_DECLARATIONS (Span_bar_engraver); protected: DECLARE_ACKNOWLEDGER (bar_line); void stop_translation_timestep (); + void process_acknowledged (); }; Span_bar_engraver::Span_bar_engraver () { spanbar_ = 0; + make_spanbar_ = false; } void Span_bar_engraver::acknowledge_bar_line (Grob_info i) { int depth = i.origin_contexts (this).size (); - if (depth && !Span_bar::has_interface (i.grob ())) + if (depth && !i.grob ()->internal_has_interface (ly_symbol2scm ("span-bar-interface"))) { Item *it = dynamic_cast (i.grob ()); bars_.push_back (it); if (bars_.size () >= 2 && !spanbar_) - { - spanbar_ = make_item ("SpanBar", SCM_EOL); + make_spanbar_ = true; + } +} + +void +Span_bar_engraver::process_acknowledged () +{ + if (make_spanbar_) + { + spanbar_ = make_item ("SpanBar", SCM_EOL); - spanbar_->set_parent (bars_[0], X_AXIS); - } + spanbar_->set_parent (bars_[0], X_AXIS); + for (vsize i = 0; i < bars_.size (); i++) + Pointer_group_interface::add_grob (spanbar_, ly_symbol2scm ("elements"), bars_[i]); + make_spanbar_ = false; } } @@ -70,14 +82,11 @@ Span_bar_engraver::stop_translation_timestep () { if (spanbar_) { - for (vsize i = 0; i < bars_.size (); i++) - Span_bar::add_bar (spanbar_, bars_[i]); - SCM vissym = ly_symbol2scm ("break-visibility"); SCM vis = bars_[0]->internal_get_property (vissym); if (ly_is_equal (spanbar_->internal_get_property (vissym), vis)) - spanbar_->set_property (vissym, vis); - + spanbar_->set_property (vissym, vis); + scm_call_1 (ly_lily_module_constant ("span-bar::notify-grobs-of-my-existence"), spanbar_->self_scm ()); spanbar_ = 0; } bars_.resize (0); @@ -87,16 +96,16 @@ Span_bar_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Span_bar_engraver, bar_line); ADD_TRANSLATOR (Span_bar_engraver, - /* doc */ - "Make cross-staff bar lines: It catches all normal bar lines" - " and draws a single span bar across them.", + /* doc */ + "Make cross-staff bar lines: It catches all normal bar lines" + " and draws a single span bar across them.", - /* create */ - "SpanBar ", + /* create */ + "SpanBar ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/span-bar-stub-engraver.cc b/lily/span-bar-stub-engraver.cc new file mode 100644 index 0000000000..10d97241bd --- /dev/null +++ b/lily/span-bar-stub-engraver.cc @@ -0,0 +1,192 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + + 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 . +*/ + +#include + +#include "align-interface.hh" +#include "context.hh" +#include "grob.hh" +#include "item.hh" +#include "pointer-group-interface.hh" +#include "engraver.hh" + +/* + The Span_bar_stub_engraver creates SpanBarStub grobs in the contexts + that a grouping context contains. For example, if a PianoStaff contains + two Staffs, a Dynamics, and a Lyrics, SpanBarStubs will be created in + all contexts that do not have bar lines (Dynamics and Lyrics). + + We only want to create these SpanBarStubs in contexts that the SpanBar + traverses. However, Contexts do not contain layout information and it + is thus difficult to know if they will eventually be above or below other + Contexts. To determine this we use the VerticalAxisGroup created in the + Context. We relate VerticalAxisGroups to Contexts in the variable + axis_groups_ and weed out unused contexts after each translation timestep. + + Note that SpanBarStubs exist for pure height calculations ONLY. + They should never be visually present on the page and should never + be engraved in contexts where BarLines are engraved. +*/ + +class Span_bar_stub_engraver : public Engraver +{ + vector spanbars_; + SCM axis_groups_; + +public: + TRANSLATOR_DECLARATIONS (Span_bar_stub_engraver); +protected: + DECLARE_ACKNOWLEDGER (span_bar); + DECLARE_ACKNOWLEDGER (hara_kiri_group_spanner); + void process_acknowledged (); + void stop_translation_timestep (); + virtual void derived_mark () const; +}; + +Span_bar_stub_engraver::Span_bar_stub_engraver () +{ + axis_groups_ = SCM_EOL; +} + +void +Span_bar_stub_engraver::derived_mark () const +{ + scm_gc_mark (axis_groups_); +} + +void +Span_bar_stub_engraver::acknowledge_span_bar (Grob_info i) +{ + spanbars_.push_back (i.grob ()); +} + +void +Span_bar_stub_engraver::acknowledge_hara_kiri_group_spanner (Grob_info i) +{ + axis_groups_ = scm_cons (scm_cons (i.grob ()->self_scm (), i.context ()->self_scm ()), axis_groups_); +} + +void +Span_bar_stub_engraver::process_acknowledged () +{ + if (!spanbars_.size ()) + return; + + if (!scm_is_pair (axis_groups_)) + { + programming_error ("At least one vertical axis group needs to be created in the first time step."); + return; + } + Grob *vertical_alignment = Grob::get_root_vertical_alignment (unsmob_grob (scm_caar (axis_groups_))); + if (!vertical_alignment) // we are at the beginning of a score, so no need for stubs + return; + + for (vsize i = 0; i < spanbars_.size (); i++) + { + extract_grob_set (spanbars_[i], "elements", bars); + vector bar_axis_indices; + for (vsize j = 0; j < bars.size (); j++) + { + int i = Grob::get_vertical_axis_group_index (bars[j]); + if (i >= 0) + bar_axis_indices.push_back ((vsize) i); + } + vector affected_contexts; + vector y_parents; + vector keep_extent; + for (SCM s = axis_groups_; scm_is_pair (s); s = scm_cdr (s)) + { + Context *c = unsmob_context (scm_cdar (s)); + Grob *g = unsmob_grob (scm_caar (s)); + if (!c || !g) + continue; + if (c->is_removable ()) + continue; + + vsize j = Grob::get_vertical_axis_group_index (g); + if (j > bar_axis_indices[0] + && j < bar_axis_indices.back () + && find (bar_axis_indices.begin (), bar_axis_indices.end (), j) == bar_axis_indices.end ()) + { + vsize k = 0; + for (; k < bar_axis_indices.size (); k++) + if (bar_axis_indices[k] > j) + break; + + k--; + + if (c && c->get_parent_context ()) + { + keep_extent.push_back (to_boolean (bars[k]->get_property ("allow-span-bar"))); + y_parents.push_back (g); + affected_contexts.push_back (c); + } + } + } + + for (vsize j = 0; j < affected_contexts.size (); j++) + { + Item *it = new Item (updated_grob_properties (affected_contexts[j], ly_symbol2scm ("SpanBarStub"))); + it->set_parent (spanbars_[i], X_AXIS); + Grob_info gi = make_grob_info (it, spanbars_[i]->self_scm ()); + gi.rerouting_daddy_context_ = affected_contexts[j]; + announce_grob (gi); + if (!keep_extent[j]) + it->suicide (); + } + } + + spanbars_.clear (); +} + +// removes all unused contexts +void +Span_bar_stub_engraver::stop_translation_timestep () +{ + SCM axis_groups = SCM_EOL; + for (SCM s = axis_groups_; scm_is_pair (s); s = scm_cdr (s)) + { + Context *c = unsmob_context (scm_cdar (s)); + Grob *g = unsmob_grob (scm_caar (s)); + if (!c || !g) + continue; + if (c->is_removable ()) + continue; + axis_groups = scm_cons (scm_car (s), axis_groups); + } + axis_groups_ = axis_groups; +} + +#include "translator.icc" + +ADD_ACKNOWLEDGER (Span_bar_stub_engraver, span_bar); +ADD_ACKNOWLEDGER (Span_bar_stub_engraver, hara_kiri_group_spanner); +ADD_TRANSLATOR (Span_bar_stub_engraver, + /* doc */ + "Make stubs for span bars in all contexts that the span bars cross.", + + /* create */ + "SpanBarStub ", + + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/span-bar.cc b/lily/span-bar.cc deleted file mode 100644 index 00e22fb085..0000000000 --- a/lily/span-bar.cc +++ /dev/null @@ -1,241 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 1997--2011 Han-Wen Nienhuys - - LilyPond is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - 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 . -*/ - -#include "span-bar.hh" - -#include "font-interface.hh" -#include "dimensions.hh" -#include "output-def.hh" -#include "stencil.hh" -#include "warn.hh" -#include "axis-group-interface.hh" -#include "bar-line.hh" -#include "grob.hh" -#include "pointer-group-interface.hh" -#include "staff-symbol-referencer.hh" - - -void -Span_bar::add_bar (Grob *me, Grob *b) -{ - Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), b); -} - -MAKE_SCHEME_CALLBACK (Span_bar, print, 1); - -/* Limitations/Bugs: - -(1) Elements from 'me->get_object ("elements")' must be -ordered according to their y coordinates relative to their common -axis group parent. Otherwise, the computation goes mad. - -(2) This method depends on bar_engraver not being removed from -staff context. If bar_engraver is removed, the size of the staff -lines is evaluated as 0, which results in a solid span bar line -with faulty y coordinate. */ - -/* This routine was originally by Juergen Reuter, but it was a on the - bulky side. Rewritten by Han-Wen. */ -SCM -Span_bar::print (SCM smobbed_me) -{ - Grob *me = unsmob_grob (smobbed_me); - extract_grob_set (me, "elements", elements); - Grob *refp = common_refpoint_of_array (elements, me, Y_AXIS); - - SCM glyph = me->get_property ("glyph-name"); - - /* glyph may not be a string, when ME is killed by Hara Kiri in - between. */ - if (!scm_is_string (glyph)) - return SCM_EOL; - - string glyph_string = ly_scm2string (glyph); - - /* compose span_bar_mol */ - vector extents; - vector make_span_bar; - Grob *model_bar = 0; - for (vsize i = elements.size (); i--;) - { - Grob *bar = elements[i]; - Interval ext = Bar_line::bar_y_extent (bar, refp); - if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (bar)) - ext.unite (staff->extent (refp, Y_AXIS)); - if (ext.is_empty ()) - continue; - - extents.push_back (ext); - make_span_bar.push_back (to_boolean (bar->get_property ("allow-span-bar"))); - model_bar = bar; - } - - if (!model_bar) - model_bar = me; - - vector_sort (extents, Interval::left_less); - - Stencil span_bar; - for (vsize i = 1; i < extents.size (); i++) - { - Interval prev_extent = extents[i - 1]; - Interval ext = extents[i]; - if (!prev_extent.is_empty ()) - { - Interval l (prev_extent [UP], - ext[DOWN]); - - if (l.is_empty () || !make_span_bar[i]) - { - /* There is overlap between the bar lines. Do nothing. */ - } - else - { - Stencil interbar = Bar_line::compound_barline (model_bar, - glyph_string, - l, - false); - span_bar.add_stencil (interbar); - } - } - prev_extent = ext; - } - - span_bar.translate_axis (- me->relative_coordinate (refp, Y_AXIS), - Y_AXIS); - - return span_bar.smobbed_copy (); -} - -MAKE_SCHEME_CALLBACK (Span_bar, width, 1); -SCM -Span_bar::width (SCM smob) -{ - Grob *me = unsmob_grob (smob); - SCM gn = me->get_property ("glyph-name"); - if (!me->is_live ()) - return ly_interval2scm (Interval ()); - - string gl = ly_scm2string (gn); - - /* - urg. - */ - Stencil m = - Bar_line::compound_barline (me, gl, Interval (-20 PT, 20 PT), false); - - return ly_interval2scm (m.extent (X_AXIS)); -} - -MAKE_SCHEME_CALLBACK (Span_bar, before_line_breaking, 1); -SCM -Span_bar::before_line_breaking (SCM smob) -{ - Grob *me = unsmob_grob (smob); - extract_grob_set (me, "elements", elements); - if (elements.empty ()) - me->suicide (); - - return SCM_UNSPECIFIED; -} - -MAKE_SCHEME_CALLBACK (Span_bar, center_on_spanned_callback, 1); - -SCM -Span_bar::center_on_spanned_callback (SCM smob) -{ - Grob *me = unsmob_grob (smob); - Interval i (get_spanned_interval (me)); - - /* Bar_line::print delivers a barline of y-extent (-h/2, h/2), so - we have to translate ourselves to be in the center of the - interval that we span. */ - if (i.is_empty ()) - { - me->suicide (); - return scm_from_double (0.0); - } - - return scm_from_double (i.center ()); -} - - - -MAKE_SCHEME_CALLBACK(Span_bar, calc_glyph_name, 1); -SCM -Span_bar::calc_glyph_name (SCM smob) -{ - Grob *me = unsmob_grob (smob); - extract_grob_set (me, "elements", elements); - SCM gl = SCM_EOL; - for (vsize i = elements.size (); - i-- && !scm_is_string (gl);) - gl = elements[i]->get_property ("glyph-name"); - - if (!scm_is_string (gl)) - { - me->suicide (); - return SCM_UNSPECIFIED; - } - - string type = ly_scm2string (gl); - if (type == "|:" || type == "||:") - type = ".|"; - else if (type == ":|") - type = "|."; - else if (type == ":|:") - type = ".|."; - else if (type == ":|.|:") - type = "|.|"; - else if (type == ":|.:") - type = "|."; - else if (type == "S" || type == "S|" || type == "|S") - type = "||"; - else if (type == "S|:" || type == ".S|:") - type = ".|"; - else if (type == ":|S" || type == ":|S.") - type = "|."; - else if (type == ":|S|:" || type == ":|S.|:") - type = "|._.|"; - else if (type == "'") - type = ""; - - return ly_string2scm (type); -} - -Interval -Span_bar::get_spanned_interval (Grob *me) -{ - return ly_scm2interval (Axis_group_interface::generic_group_extent (me, Y_AXIS)); -} - -ADD_INTERFACE (Span_bar, - "A bar line that is spanned between other barlines. This" - " interface is used for bar lines that connect different" - " staves.", - - /* properties */ - "glyph-name " - "elements " - "pure-Y-common " - "pure-relevant-grobs " - "pure-relevant-items " - "pure-relevant-spanners " - ); - diff --git a/lily/spanner-break-forbid-engraver.cc b/lily/spanner-break-forbid-engraver.cc index a37056ba8d..82e9622ffc 100644 --- a/lily/spanner-break-forbid-engraver.cc +++ b/lily/spanner-break-forbid-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys + Copyright (C) 2007--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,8 +17,6 @@ along with LilyPond. If not, see . */ - - #include "engraver.hh" #include "international.hh" #include "spanner.hh" @@ -31,7 +29,7 @@ class Spanner_break_forbid_engraver : public Engraver { TRANSLATOR_DECLARATIONS (Spanner_break_forbid_engraver); - vector running_spanners_; + vector running_spanners_; protected: DECLARE_ACKNOWLEDGER (unbreakable_spanner); DECLARE_END_ACKNOWLEDGER (unbreakable_spanner); @@ -39,7 +37,6 @@ protected: void process_music (); }; - void Spanner_break_forbid_engraver::process_music () { @@ -52,8 +49,8 @@ Spanner_break_forbid_engraver::process_music () void Spanner_break_forbid_engraver::acknowledge_end_unbreakable_spanner (Grob_info gi) { - vector::iterator i = find (running_spanners_.begin (), running_spanners_.end (), - gi.spanner ()); + vector::iterator i = find (running_spanners_.begin (), running_spanners_.end (), + gi.spanner ()); if (i != running_spanners_.end ()) running_spanners_.erase (i); } @@ -69,19 +66,18 @@ Spanner_break_forbid_engraver::Spanner_break_forbid_engraver () { } - ADD_END_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner); ADD_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner); ADD_TRANSLATOR (Spanner_break_forbid_engraver, - /* doc */ - "Forbid breaks in certain spanners.", + /* doc */ + "Forbid breaks in certain spanners.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/spanner-scheme.cc b/lily/spanner-scheme.cc index f2a9f0f939..f7517045b1 100644 --- a/lily/spanner-scheme.cc +++ b/lily/spanner-scheme.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,9 +22,9 @@ #include "item.hh" LY_DEFINE (ly_spanner_bound, "ly:spanner-bound", - 2, 0, 0, (SCM spanner, SCM dir), - "Get one of the bounds of @var{spanner}. @var{dir} is @code{-1}" - " for left, and @code{1} for right.") + 2, 0, 0, (SCM spanner, SCM dir), + "Get one of the bounds of @var{spanner}. @var{dir} is @w{@code{-1}}" + " for left, and @code{1} for right.") { LY_ASSERT_TYPE (unsmob_spanner, spanner, 1); LY_ASSERT_TYPE (is_direction, dir, 2); @@ -33,9 +33,9 @@ LY_DEFINE (ly_spanner_bound, "ly:spanner-bound", } LY_DEFINE (ly_spanner_set_bound_x, "ly:spanner-set-bound!", - 3, 0, 0, (SCM spanner, SCM dir, SCM item), - "Set grob @var{item} as bound in direction @var{dir} for" - " @var{spanner}.") + 3, 0, 0, (SCM spanner, SCM dir, SCM item), + "Set grob @var{item} as bound in direction @var{dir} for" + " @var{spanner}.") { LY_ASSERT_TYPE (unsmob_spanner, spanner, 1); LY_ASSERT_TYPE (is_direction, dir, 2); @@ -48,8 +48,8 @@ LY_DEFINE (ly_spanner_set_bound_x, "ly:spanner-set-bound!", /* TODO: maybe we should return a vector -- random access is more logical for this list? */ LY_DEFINE (ly_spanner_broken_into, "ly:spanner-broken-into", - 1, 0, 0, (SCM spanner), - "Return broken-into list for @var{spanner}.") + 1, 0, 0, (SCM spanner), + "Return broken-into list for @var{spanner}.") { LY_ASSERT_TYPE (unsmob_spanner, spanner, 1); Spanner *me = dynamic_cast (unsmob_grob (spanner)); @@ -61,8 +61,8 @@ LY_DEFINE (ly_spanner_broken_into, "ly:spanner-broken-into", } LY_DEFINE (ly_spanner_p, "ly:spanner?", - 1, 0, 0, (SCM g), - "Is @var{g} a spanner object?") + 1, 0, 0, (SCM g), + "Is @var{g} a spanner object?") { Grob *me = unsmob_grob (g); bool b = dynamic_cast (me); diff --git a/lily/spanner.cc b/lily/spanner.cc index 22282aa231..af2ea7137f 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,38 +42,35 @@ Spanner::do_break_processing () if (!left || !right) return; - if (get_system () || is_broken ()) return; if (left == right) { /* - If we have a spanner spanning one column, we must break it - anyway because it might provide a parent for another item. */ - Direction d = LEFT; - do - { - Item *bound = left->find_prebroken_piece (d); - if (!bound) - programming_error ("no broken bound"); - else if (bound->get_system ()) - { - Spanner *span = dynamic_cast (clone ()); - span->set_bound (LEFT, bound); - span->set_bound (RIGHT, bound); - - assert (span->get_system ()); - span->get_system ()->typeset_grob (span); - broken_intos_.push_back (span); - } - } - while ((flip (&d)) != LEFT); + If we have a spanner spanning one column, we must break it + anyway because it might provide a parent for another item. */ + for (LEFT_and_RIGHT (d)) + { + Item *bound = left->find_prebroken_piece (d); + if (!bound) + programming_error ("no broken bound"); + else if (bound->get_system ()) + { + Spanner *span = dynamic_cast (clone ()); + span->set_bound (LEFT, bound); + span->set_bound (RIGHT, bound); + + assert (span->get_system ()); + span->get_system ()->typeset_grob (span); + broken_intos_.push_back (span); + } + } } else { - System *root = get_root_system (this); - vector break_points = root->broken_col_range (left, right); + System *root = get_root_system (this); + vector break_points = root->broken_col_range (left, right); break_points.insert (break_points.begin () + 0, left); break_points.push_back (right); @@ -82,62 +79,60 @@ Spanner::do_break_processing () parent_rank_slice.set_full (); /* - Check if our parent in X-direction spans equally wide - or wider than we do. + Check if our parent in X-direction spans equally wide + or wider than we do. */ for (int a = X_AXIS; a < NO_AXES; a++) - { - if (Spanner *parent = dynamic_cast (get_parent ((Axis)a))) - parent_rank_slice.intersect (parent->spanned_rank_interval ()); - } + { + if (Spanner *parent = dynamic_cast (get_parent ((Axis)a))) + parent_rank_slice.intersect (parent->spanned_rank_interval ()); + } for (vsize i = 1; i < break_points.size (); i++) - { - Drul_array bounds; - bounds[LEFT] = break_points[i - 1]; - bounds[RIGHT] = break_points[i]; - Direction d = LEFT; - do - { - if (!bounds[d]->get_system ()) - bounds[d] = bounds[d]->find_prebroken_piece (- d); - } - while ((flip (&d)) != LEFT); - - if (!bounds[LEFT] || ! bounds[RIGHT]) - { - programming_error ("bounds of this piece aren't breakable. "); - continue; - } - - bool ok = parent_rank_slice.contains (bounds[LEFT]->get_column ()->get_rank ()); - ok = ok && parent_rank_slice.contains (bounds[RIGHT]->get_column ()->get_rank ()); - - if (!ok) - { - programming_error (to_string ("Spanner `%s' is not fully contained in parent spanner. Ignoring orphaned part", - name ().c_str ())); - continue; - } - - - Spanner *span = dynamic_cast (clone ()); - span->set_bound (LEFT, bounds[LEFT]); - span->set_bound (RIGHT, bounds[RIGHT]); - - if (!bounds[LEFT]->get_system () - || !bounds[RIGHT]->get_system () - || bounds[LEFT]->get_system () != bounds[RIGHT]->get_system ()) - { - programming_error ("bounds of spanner are invalid"); - span->suicide (); - } - else - { - bounds[LEFT]->get_system ()->typeset_grob (span); - broken_intos_.push_back (span); - } - } + { + Drul_array bounds; + bounds[LEFT] = break_points[i - 1]; + bounds[RIGHT] = break_points[i]; + for (LEFT_and_RIGHT (d)) + { + if (!bounds[d]->get_system ()) + bounds[d] = bounds[d]->find_prebroken_piece (- d); + } + + if (!bounds[LEFT] || ! bounds[RIGHT]) + { + programming_error ("bounds of this piece aren't breakable."); + continue; + } + + bool ok = parent_rank_slice.contains (bounds[LEFT]->get_column ()->get_rank ()); + ok = ok && parent_rank_slice.contains (bounds[RIGHT]->get_column ()->get_rank ()); + + if (!ok) + { + programming_error (to_string ("Spanner `%s' is not fully contained in parent spanner." + " Ignoring orphaned part", + name ().c_str ())); + continue; + } + + Spanner *span = dynamic_cast (clone ()); + span->set_bound (LEFT, bounds[LEFT]); + span->set_bound (RIGHT, bounds[RIGHT]); + + if (!bounds[LEFT]->get_system () + || !bounds[RIGHT]->get_system () + || bounds[LEFT]->get_system () != bounds[RIGHT]->get_system ()) + { + programming_error ("bounds of spanner are invalid"); + span->suicide (); + } + else + { + bounds[LEFT]->get_system ()->typeset_grob (span); + broken_intos_.push_back (span); + } + } } vector_sort (broken_intos_, Spanner::less); for (vsize i = broken_intos_.size (); i--;) @@ -153,13 +148,11 @@ Spanner::get_break_index () const void Spanner::set_my_columns () { - Direction i = (Direction) LEFT; - do + for (LEFT_and_RIGHT (d)) { - if (!spanned_drul_[i]->get_system ()) - set_bound (i, spanned_drul_[i]->find_prebroken_piece ((Direction) -i)); + if (!spanned_drul_[d]->get_system ()) + set_bound (d, spanned_drul_[d]->find_prebroken_piece ((Direction) - d)); } - while (flip (&i) != LEFT); } Interval_t @@ -178,10 +171,9 @@ Interval_t Spanner::spanned_time () const { return spanned_time_interval (spanned_drul_[LEFT], - spanned_drul_[RIGHT]); + spanned_drul_[RIGHT]); } - Item * Spanner::get_bound (Direction d) const { @@ -198,7 +190,7 @@ Spanner::set_bound (Direction d, Grob *s) Item *i = dynamic_cast (s); if (!i) { - programming_error ("must have Item for spanner bound of " + name()); + programming_error ("must have Item for spanner bound of " + name ()); return; } @@ -236,25 +228,38 @@ Spanner::Spanner (Spanner const &s) pure_property_cache_ = SCM_UNDEFINED; } +/* + Certain spanners have pre-computed X values that lie either in + X-positions or the X key of the alists returned for left-bound-info + and right-bound-info. These are calculated to give the real length + of a spanner (which, because of various padding or overhang properties, + can extend pass or arrive short of a given bound). If possible, we + use these to calculate the spanner's length, and otherwise, we use + the bound. + + For those writing a new spanner, DO NOT use both X-positions and + left-bound-info/right-bound-info. +*/ Real Spanner::spanner_length () const { - Interval lr; + Interval lr = robust_scm2interval (get_property ("X-positions"), + Interval (1, -1)); - Drul_array bounds (get_property ("left-bound-info"), - get_property ("right-bound-info")); + if (lr.is_empty ()) + { + Drul_array 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); + for (LEFT_and_RIGHT (d)) + lr[d] = robust_scm2double (ly_assoc_get (ly_symbol2scm ("X"), + bounds[d], SCM_BOOL_F), -d); + } if (lr.is_empty ()) { - do + for (LEFT_and_RIGHT (d)) lr[d] = spanned_drul_[d]->relative_coordinate (0, X_AXIS); - while (flip (&d) != LEFT); } if (lr.is_empty ()) @@ -289,7 +294,7 @@ Spanner::broken_neighbor (Direction d) const return 0; vsize k = get_break_index (); - Spanner *orig = dynamic_cast (original_); + Spanner *orig = dynamic_cast (original_); int j = int (k) + d; if (j < 0 || vsize (j) >= orig->broken_intos_.size ()) return 0; @@ -315,43 +320,15 @@ Spanner::is_broken () const return broken_intos_.size (); } -/* - If this is a broken spanner, return the amount the left end is to be - shifted horizontally so that the spanner starts after the initial - clef and key on the staves. This is necessary for ties, slurs, - crescendo and decrescendo signs, for example. -*/ -Real -Spanner::get_broken_left_end_align () const -{ - Paper_column *sc = dynamic_cast (spanned_drul_[LEFT]->get_column ()); - - // Relevant only if left span point is first column in line - if (sc != NULL - && sc->break_status_dir () == RIGHT) - { - /* - We used to do a full search for the Break_align_item. - But that doesn't make a difference, since the Paper_column - is likely to contain only a Break_align_item. - */ - return sc->extent (sc, X_AXIS)[RIGHT]; - } - - return 0.0; -} - void Spanner::derived_mark () const { scm_gc_mark (pure_property_cache_); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) if (spanned_drul_[d]) scm_gc_mark (spanned_drul_[d]->self_scm ()); - while (flip (&d) != LEFT) - ; + ; for (vsize i = broken_intos_.size (); i--;) scm_gc_mark (broken_intos_[i]->self_scm ()); @@ -383,26 +360,26 @@ Spanner::set_spacing_rods (SCM smob) Rod r; Spanner *sp = dynamic_cast (me); System *root = get_root_system (me); - Drul_array bounds (sp->get_bound (LEFT), - sp->get_bound (RIGHT)); + Drul_array bounds (sp->get_bound (LEFT), + sp->get_bound (RIGHT)); if (!bounds[LEFT] || !bounds[RIGHT]) - return SCM_UNSPECIFIED; + return SCM_UNSPECIFIED; - vector cols (root->broken_col_range (bounds[LEFT]->get_column (), - bounds[RIGHT]->get_column ())); + vector cols (root->broken_col_range (bounds[LEFT]->get_column (), + bounds[RIGHT]->get_column ())); if (cols.size ()) - { - Rod r ; - r.item_drul_[LEFT] = sp->get_bound (LEFT); - r.item_drul_[RIGHT] = cols[0]->find_prebroken_piece (LEFT); - r.distance_ = robust_scm2double (num_length, 0); - r.add_to_cols (); - - r.item_drul_[LEFT] = cols.back ()->find_prebroken_piece (RIGHT); - r.item_drul_[RIGHT] = sp->get_bound (RIGHT); - r.add_to_cols (); - } + { + Rod r; + r.item_drul_[LEFT] = sp->get_bound (LEFT); + r.item_drul_[RIGHT] = cols[0]->find_prebroken_piece (LEFT); + r.distance_ = robust_scm2double (num_length, 0); + r.add_to_cols (); + + r.item_drul_[LEFT] = cols.back ()->find_prebroken_piece (RIGHT); + r.item_drul_[RIGHT] = sp->get_bound (RIGHT); + r.add_to_cols (); + } r.distance_ = robust_scm2double (num_length, 0); r.item_drul_[LEFT] = sp->get_bound (LEFT); @@ -475,7 +452,7 @@ Spanner::bounds_width (SCM grob) Grob *common = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), X_AXIS); Interval w (me->get_bound (LEFT)->relative_coordinate (common, X_AXIS), - me->get_bound (RIGHT)->relative_coordinate (common, X_AXIS)); + me->get_bound (RIGHT)->relative_coordinate (common, X_AXIS)); w -= me->relative_coordinate (common, X_AXIS); @@ -537,16 +514,17 @@ Spanner::cache_pure_property (SCM sym, int start, int end, SCM val) } ADD_INTERFACE (Spanner, - "Some objects are horizontally spanned between objects. For" - " example, slurs, beams, ties, etc. These grobs form a subtype" - " called @code{Spanner}. All spanners have two span points" - " (these must be @code{Item} objects), one on the left and one" - " on the right. The left bound is also the X@tie{}reference" - " point of the spanner.", - - /* properties */ - "normalized-endpoints " - "minimum-length " + "Some objects are horizontally spanned between objects. For" + " example, slurs, beams, ties, etc. These grobs form a subtype" + " called @code{Spanner}. All spanners have two span points" + " (these must be @code{Item} objects), one on the left and one" + " on the right. The left bound is also the X@tie{}reference" + " point of the spanner.", + + /* properties */ + "normalized-endpoints " + "minimum-length " + "spanner-broken " "spanner-id " - "to-barline " - ); + "to-barline " + ); diff --git a/lily/spring-smob.cc b/lily/spring-smob.cc index a679eeae5f..95d20c4333 100644 --- a/lily/spring-smob.cc +++ b/lily/spring-smob.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,6 +39,44 @@ Spring::print_smob (SCM, SCM p, scm_print_state *) SCM Spring::equal_p (SCM a, SCM b) { - return a == b? SCM_BOOL_T : SCM_BOOL_F; + return a == b ? SCM_BOOL_T : SCM_BOOL_F; } +LY_DEFINE (ly_make_spring, "ly:make-spring", + 2, 0, 0, (SCM ideal, SCM min_dist), + "Make a spring. @var{ideal} is the ideal distance of the" + " spring, and @var{min-dist} is the minimum distance.") +{ + LY_ASSERT_TYPE (scm_is_number, ideal, 1); + LY_ASSERT_TYPE (scm_is_number, min_dist, 2); + + Spring s (scm_to_double (ideal), scm_to_double (min_dist)); + + return s.smobbed_copy (); +} + +LY_DEFINE (ly_spring_set_inverse_compress_strength_x, "ly:spring-set-inverse-compress-strength!", + 2, 0, 0, (SCM spring, SCM strength), + "Set the inverse compress @var{strength} of @var{spring}.") +{ + LY_ASSERT_SMOB (Spring, spring, 1); + LY_ASSERT_TYPE (scm_is_number, strength, 2); + + Spring *s = unsmob_spring (spring); + s->set_inverse_compress_strength (scm_to_double (strength)); + return s->smobbed_copy (); +} + +LY_DEFINE (ly_spring_set_inverse_stretch_strength_x, "ly:spring-set-inverse-stretch-strength!", + 2, 0, 0, (SCM spring, SCM strength), + "Set the inverse stretch @var{strength} of @var{spring}.") +{ + LY_ASSERT_SMOB (Spring, spring, 1); + LY_ASSERT_TYPE (scm_is_number, strength, 2); + + Spring *s = unsmob_spring (spring); + s->set_inverse_stretch_strength (scm_to_double (strength)); + return s->smobbed_copy (); +} + +IMPLEMENT_TYPE_P (Spring, "ly:spring?"); diff --git a/lily/spring.cc b/lily/spring.cc index 60bc0aec77..312b2ed00f 100644 --- a/lily/spring.cc +++ b/lily/spring.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Joe Neeman + Copyright (C) 2007--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,25 +45,27 @@ 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_; - else + 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 if (inverse_compress_strength_ > 0.0) 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; + else + blocking_force_ = 0.0; } /* scale a spring, but in a way that doesn't violate min_distance */ void -Spring::operator*= (Real r) +Spring::operator *= (Real r) { distance_ = max (min_distance_, distance_ * r); inverse_compress_strength_ = max (0.0, distance_ - min_distance_); @@ -72,7 +74,7 @@ Spring::operator*= (Real r) } bool -Spring::operator> (Spring const &other) const +Spring::operator > (Spring const &other) const { return blocking_force_ > other.blocking_force_; } @@ -95,9 +97,9 @@ merge_springs (vector const &springs) min_distance = max (springs[i].min_distance (), min_distance); } - avg_stretch /= springs.size (); - avg_compress /= springs.size (); - avg_distance /= springs.size (); + avg_stretch /= Real (springs.size ()); + avg_compress /= Real (springs.size ()); + avg_distance /= Real (springs.size ()); avg_distance = max (min_distance + 0.3, avg_distance); Spring ret = Spring (avg_distance, min_distance); @@ -200,7 +202,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; diff --git a/lily/staff-collecting-engraver.cc b/lily/staff-collecting-engraver.cc index 29ddd8d70b..60c516c428 100644 --- a/lily/staff-collecting-engraver.cc +++ b/lily/staff-collecting-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,15 +58,15 @@ ADD_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol); ADD_END_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol); ADD_TRANSLATOR (Staff_collecting_engraver, - /* doc */ - "Maintain the @code{stavesFound} variable.", + /* doc */ + "Maintain the @code{stavesFound} variable.", - /* create */ - "", + /* create */ + "", - /* read */ - "stavesFound ", + /* read */ + "stavesFound ", - /* write */ - "stavesFound " - ); + /* write */ + "stavesFound " + ); diff --git a/lily/staff-grouper-interface.cc b/lily/staff-grouper-interface.cc index 803e1ee82d..3c12882fdd 100644 --- a/lily/staff-grouper-interface.cc +++ b/lily/staff-grouper-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2009--2011 Joe Neeman + Copyright (C) 2009--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,15 +32,15 @@ Staff_grouper_interface::maybe_pure_within_group (Grob *me, Grob *child, bool pu { extract_grob_set (me, "elements", elts); - vector::const_iterator i = find (elts, child); + vector::const_iterator i = find (elts, child); if (i == elts.end ()) return false; for (++i; i != elts.end (); ++i) if (Page_layout_problem::is_spaceable (*i) - && ((pure && !Hara_kiri_group_spanner::request_suicide (*i, start, end)) - || (!pure && (*i)->is_live ()))) + && ((pure && !Hara_kiri_group_spanner::request_suicide (*i, start, end)) + || (!pure && (*i)->is_live ()))) return me == unsmob_grob ((*i)->get_object ("staff-grouper")); // If there was no spaceable, living child after me, I don't @@ -49,10 +49,10 @@ Staff_grouper_interface::maybe_pure_within_group (Grob *me, Grob *child, bool pu } ADD_INTERFACE (Staff_grouper_interface, - "A grob that collects staves together.", + "A grob that collects staves together.", - /* properties */ - "staff-staff-spacing " - "staffgroup-staff-spacing " - ); + /* properties */ + "staff-staff-spacing " + "staffgroup-staff-spacing " + ); diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index bab8ae0257..77dc986cfe 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ */ #include +#include #include "audio-column.hh" #include "audio-item.hh" @@ -48,9 +49,9 @@ private: void set_instrument_name (string voice); void set_instrument (int channel, string voice); int get_channel (string instrument); - Audio_staff* get_audio_staff (string voice); - Audio_staff* new_audio_staff (string voice); - Audio_dynamic* get_dynamic (string voice); + Audio_staff *get_audio_staff (string voice); + Audio_staff *new_audio_staff (string voice); + Audio_dynamic *get_dynamic (string voice); string instrument_string_; int channel_; @@ -58,37 +59,44 @@ private: Audio_text *instrument_name_; Audio_text *name_; Audio_tempo *tempo_; - map staff_map_; + map > note_map_; + map staff_map_; map channel_map_; - map dynamic_map_; + map 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 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 Staff_performer::static_channel_map_; int Staff_performer::channel_count_ = 0; +int Staff_performer::staff_performer_count_ = 0; #include "translator.icc" ADD_TRANSLATOR (Staff_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - ""); + /* write */ + ""); Staff_performer::Staff_performer () - : channel_ (-1) - , instrument_ (0) - , instrument_name_ (0) - , name_ (0) - , tempo_ (0) + : channel_ (-1), + instrument_ (0), + instrument_name_ (0), + name_ (0), + tempo_ (0) { } @@ -99,19 +107,20 @@ Staff_performer::~Staff_performer () void Staff_performer::initialize () { + ++staff_performer_count_; } -Audio_staff* +Audio_staff * Staff_performer::new_audio_staff (string voice) { - Audio_staff* audio_staff = new Audio_staff; + Audio_staff *audio_staff = new Audio_staff; audio_staff->merge_unisons_ = to_boolean (get_property ("midiMergeUnisons")); string track_name = context ()->id_string () + ":" + voice; if (track_name != ":") { name_ = new Audio_text (Audio_text::TRACK_NAME, context ()->id_string () - + ":" + voice); + + ":" + voice); audio_staff->add_audio_item (name_); announce_element (Audio_element_info (name_, 0)); } @@ -122,7 +131,7 @@ Staff_performer::new_audio_staff (string voice) return audio_staff; } -Audio_staff* +Audio_staff * Staff_performer::get_audio_staff (string voice) { SCM channel_mapping = get_property ("midiChannelMapping"); @@ -130,10 +139,10 @@ Staff_performer::get_audio_staff (string voice) && staff_map_.size ()) return staff_map_.begin ()->second; - map::const_iterator i = staff_map_.find (voice); + map::const_iterator i = staff_map_.find (voice); if (i != staff_map_.end ()) return i->second; - map::const_iterator e = staff_map_.find (""); + map::const_iterator e = staff_map_.find (""); if (staff_map_.size () == 1 && e != staff_map_.end ()) { staff_map_[voice] = e->second; @@ -142,10 +151,10 @@ Staff_performer::get_audio_staff (string voice) return new_audio_staff (voice); } -Audio_dynamic* +Audio_dynamic * Staff_performer::get_dynamic (string voice) { - map::const_iterator i = dynamic_map_.find (voice); + map::const_iterator i = dynamic_map_.find (voice); if (i != dynamic_map_.end ()) return i->second; return 0; @@ -162,7 +171,7 @@ Staff_performer::set_instrument (int channel, string voice) instrument_ = new Audio_instrument (instrument_string_); instrument_->channel_ = channel; announce_element (Audio_element_info (instrument_, 0)); - Audio_staff* audio_staff = get_audio_staff (voice); + Audio_staff *audio_staff = get_audio_staff (voice); audio_staff->add_audio_item (instrument_); SCM proc = ly_lily_module_constant ("percussion?"); SCM drums = scm_call_1 (proc, ly_symbol2scm (instrument_string_.c_str ())); @@ -173,7 +182,7 @@ void Staff_performer::set_instrument_name (string voice) { instrument_name_ = new Audio_text (Audio_text::INSTRUMENT_NAME, - instrument_string_); + instrument_string_); announce_element (Audio_element_info (instrument_name_, 0)); get_audio_staff (voice)->add_audio_item (instrument_name_); } @@ -185,6 +194,22 @@ Staff_performer::stop_translation_timestep () tempo_ = 0; instrument_name_ = 0; instrument_ = 0; + // For each voice with a note played in the current translation time step, + // check if the voice has an Audio_dynamic registered: if yes, apply this + // dynamic to every note played in the voice in the current translation time + // step. + for (map >::iterator vi = note_map_.begin (); + vi != note_map_.end (); ++vi) + { + Audio_dynamic *d = get_dynamic (vi->first); + if (d) + { + for (deque::iterator ni = vi->second.begin (); + ni != vi->second.end (); ++ni) + (*ni)->dynamic_ = d; + } + } + note_map_.clear (); } void @@ -192,6 +217,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 @@ -215,8 +247,8 @@ Staff_performer::get_channel (string instrument) SCM channel_mapping = get_property ("midiChannelMapping"); map& channel_map = (channel_mapping != ly_symbol2scm ("instrument")) - ? channel_map_ - : static_channel_map_; + ? channel_map_ + : static_channel_map_; if (channel_mapping == ly_symbol2scm ("staff") && channel_ >= 0) @@ -225,10 +257,10 @@ Staff_performer::get_channel (string instrument) map::const_iterator i = channel_map.find (instrument); if (i != channel_map.end ()) return i->second; - + int channel = (channel_mapping == ly_symbol2scm ("staff")) - ? channel_count_++ - : channel_map.size (); + ? channel_count_++ + : channel_map.size (); /* MIDI players tend to ignore instrument settings on channel 10, the percussion channel. */ @@ -242,7 +274,7 @@ Staff_performer::get_channel (string instrument) { warning (_ ("MIDI channel wrapped around")); warning (_ ("remapping modulo 16")); - channel = channel % 16; + channel = channel % 16; } channel_map[instrument] = channel; @@ -255,38 +287,42 @@ Staff_performer::acknowledge_audio_element (Audio_element_info inf) if (Audio_item *ai = dynamic_cast (inf.elem_)) { /* map each context (voice) to its own track */ - Context* c = inf.origin_contexts (this)[0]; + Context *c = inf.origin_contexts (this)[0]; string voice; if (c->is_alias (ly_symbol2scm ("Voice"))) - voice = c->id_string (); + voice = c->id_string (); SCM channel_mapping = get_property ("midiChannelMapping"); string str = new_instrument_string (); if (channel_mapping != ly_symbol2scm ("instrument")) - channel_ = get_channel (voice); + channel_ = get_channel (voice); else if (channel_ < 0 && str.empty ()) - channel_ = get_channel (str); + channel_ = get_channel (str); if (str.length ()) - { - if (channel_mapping != ly_symbol2scm ("voice")) - channel_ = get_channel (str); - set_instrument (channel_, voice); - set_instrument_name (voice); - } + { + if (channel_mapping != ly_symbol2scm ("voice")) + channel_ = get_channel (str); + set_instrument (channel_, voice); + set_instrument_name (voice); + } ai->channel_ = channel_; bool encode_dynamics_as_velocity_ = true; if (encode_dynamics_as_velocity_) - { - if (Audio_dynamic *d = dynamic_cast (inf.elem_)) - { - dynamic_map_[voice] = d; - // Output volume as velocity: must disable Midi_dynamic output - d->silent_ = true; - } - if (Audio_dynamic *d = get_dynamic (voice)) - if (Audio_note *n = dynamic_cast (inf.elem_)) - n->dynamic_ = d; - } - Audio_staff* audio_staff = get_audio_staff (voice); + { + if (Audio_note *n = dynamic_cast (inf.elem_)) + { + // Keep track of the notes played in the current voice in this + // translation time step (for adjusting their dynamics later in + // stop_translation_timestep). + note_map_[voice].push_back (n); + } + else if (Audio_dynamic *d = dynamic_cast (inf.elem_)) + { + dynamic_map_[voice] = d; + // Output volume as velocity: must disable Midi_dynamic output + d->silent_ = true; + } + } + Audio_staff *audio_staff = get_audio_staff (voice); audio_staff->add_audio_item (ai); } } diff --git a/lily/staff-spacing.cc b/lily/staff-spacing.cc index ff064b5c0f..49f42ea4a6 100644 --- a/lily/staff-spacing.cc +++ b/lily/staff-spacing.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,6 @@ using namespace std; #include "paper-column.hh" #include "separation-item.hh" #include "warn.hh" -#include "bar-line.hh" #include "staff-symbol-referencer.hh" #include "note-column.hh" #include "stem.hh" @@ -55,24 +54,14 @@ Staff_spacing::optical_correction (Grob *me, Grob *g, Interval bar_height) { Direction d = get_grob_direction (stem); if (Stem::is_normal_stem (stem) && d == DOWN) - { - - /* - can't look at stem-end-position, since that triggers - beam slope computations. - */ - Real stem_start = Stem::head_positions (stem) [d]; - Real stem_end = stem_start + - d * robust_scm2double (stem->get_property ("length"), 7); - - Interval stem_posns (min (stem_start, stem_end), - max (stem_end, stem_start)); - - stem_posns.intersect (bar_height); - - ret = min (abs (stem_posns.length () / 7.0), 1.0); - ret *= robust_scm2double (me->get_property ("stem-spacing-correction"), 1); - } + { + Interval stem_posns = stem->pure_height (stem, 0, INT_MAX); + + stem_posns.intersect (bar_height); + + ret = min (abs (stem_posns.length () / 7.0), 1.0); + ret *= robust_scm2double (me->get_property ("stem-spacing-correction"), 1); + } } return ret; } @@ -85,30 +74,31 @@ Staff_spacing::bar_y_positions (Grob *bar_grob) { Interval bar_size; bar_size.set_empty (); - if (Bar_line::has_interface (bar_grob)) + + if (bar_grob->internal_has_interface (ly_symbol2scm ("bar-line-interface"))) { SCM glyph = bar_grob->get_property ("glyph-name"); Grob *staff_sym = Staff_symbol_referencer::get_staff_symbol (bar_grob); string glyph_string = scm_is_string (glyph) ? ly_scm2string (glyph) : ""; if (glyph_string.substr (0, 1) == "|" - || glyph_string.substr (0, 1) == ".") - { - Grob *common = bar_grob->common_refpoint (staff_sym, Y_AXIS); - bar_size = bar_grob->extent (common, Y_AXIS); - bar_size *= 1.0 / Staff_symbol_referencer::staff_space (bar_grob); - } + || glyph_string.substr (0, 1) == ".") + { + Grob *common = bar_grob->common_refpoint (staff_sym, Y_AXIS); + bar_size = bar_grob->extent (common, Y_AXIS); + bar_size *= 1.0 / Staff_symbol_referencer::staff_space (bar_grob); + } } return bar_size; } Real Staff_spacing::next_notes_correction (Grob *me, - Grob *last_grob) + Grob *last_grob) { Interval bar_size = bar_y_positions (last_grob); Grob *orig = me->original () ? me->original () : me; - vector note_columns = Spacing_interface::right_note_columns (orig); + vector note_columns = Spacing_interface::right_note_columns (orig); Real max_optical = 0.0; @@ -124,7 +114,7 @@ Staff_spacing::next_notes_correction (Grob *me, We arrange things so that the fixed distance will be attained when the line is compressed with a force of 1.0 */ Spring -Staff_spacing::get_spacing (Grob *me, Grob *right_col) +Staff_spacing::get_spacing (Grob *me, Grob *right_col, Real situational_space) { Item *me_item = dynamic_cast (me); Grob *left_col = me_item->get_column (); @@ -132,26 +122,26 @@ Staff_spacing::get_spacing (Grob *me, Grob *right_col) Interval last_ext; Direction break_dir = me_item->break_status_dir (); Grob *last_grob = Spacing_interface::extremal_break_aligned_grob (me, LEFT, - break_dir, - &last_ext); + break_dir, + &last_ext); if (!last_grob) { /* - TODO: + TODO: - Should insert a adjustable space here? For excercises, you might want to - use a staff without a clef in the beginning. + Should insert a adjustable space here? For excercises, you might want to + use a staff without a clef in the beginning. */ /* - we used to have a warning here, but it generates a lot of - spurious error messages. + we used to have a warning here, but it generates a lot of + spurious error messages. */ return Spring (); } SCM alist = last_grob->get_property ("space-alist"); - if (!scm_list_p (alist)) + if (!ly_is_list (alist)) return Spring (); SCM space_def = scm_sloppy_assq (ly_symbol2scm ("first-note"), alist); @@ -159,7 +149,7 @@ Staff_spacing::get_spacing (Grob *me, Grob *right_col) { SCM nndef = scm_sloppy_assq (ly_symbol2scm ("next-note"), alist); if (scm_is_pair (nndef)) - space_def = nndef; + space_def = nndef; } if (!scm_is_pair (space_def)) @@ -195,27 +185,34 @@ Staff_spacing::get_spacing (Grob *me, Grob *right_col) ideal = fixed; } + Real stretchability = ideal - fixed; + + /* 'situational_space' passed by the caller + could include full-measure-extra-space */ + ideal += situational_space; Real optical_correction = next_notes_correction (me, last_grob); + fixed += optical_correction; + ideal += optical_correction; + Real min_dist = Paper_column::minimum_distance (left_col, right_col); /* ensure that the "fixed" distance will leave a gap of at least 0.3 ss. */ Real min_dist_correction = max (0.0, 0.3 + min_dist - fixed); - Real correction = max (optical_correction, min_dist_correction); - - fixed += correction; - ideal += correction; + fixed += min_dist_correction; + ideal = max (ideal, fixed); Spring ret (ideal, min_dist); - ret.set_inverse_stretch_strength (max (0.0, ideal - fixed)); + ret.set_inverse_stretch_strength (max (0.0, stretchability)); + ret.set_inverse_compress_strength (max (0.0, ideal - fixed)); return ret; } ADD_INTERFACE (Staff_spacing, - "This object calculates spacing details from a breakable" - " symbol (left) to another object. For example, it takes care" - " of optical spacing from a bar line to a note.", + "This object calculates spacing details from a breakable" + " symbol (left) to another object. For example, it takes care" + " of optical spacing from a bar line to a note.", - /* properties */ - "stem-spacing-correction " - ); + /* properties */ + "stem-spacing-correction " + ); diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 55e118245f..1ca6a4dce1 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,8 +46,19 @@ protected: DECLARE_TRANSLATOR_LISTENER (staff_span); virtual void finalize (); void process_music (); + virtual void derived_mark () const; }; +void +Staff_symbol_engraver::derived_mark () const +{ + for (LEFT_and_RIGHT (d)) + { + if (span_events_[d]) + scm_gc_mark (span_events_[d]->self_scm ()); + } +} + Staff_symbol_engraver::~Staff_symbol_engraver () { if (span_) @@ -84,7 +95,7 @@ Staff_symbol_engraver::process_music () finished_span_ = span_; span_ = 0; if (first_start_) - first_start_ = false; + first_start_ = false; } if (span_events_[START] @@ -99,7 +110,7 @@ Staff_symbol_engraver::start_spanner () { span_ = make_spanner ("StaffSymbol", SCM_EOL); span_->set_bound (LEFT, - unsmob_grob (get_property ("currentCommandColumn"))); + unsmob_grob (get_property ("currentCommandColumn"))); } } @@ -113,9 +124,9 @@ Staff_symbol_engraver::stop_spanner () finished_span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); announce_end_grob (finished_span_, - span_events_[STOP] - ? span_events_[STOP]->self_scm () - : SCM_EOL); + span_events_[STOP] + ? span_events_[STOP]->self_scm () + : SCM_EOL); finished_span_ = 0; } @@ -155,15 +166,15 @@ Staff_symbol_engraver::acknowledge_grob (Grob_info s) ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob); ADD_TRANSLATOR (Staff_symbol_engraver, - /* doc */ - "Create the constellation of five (default) staff lines.", + /* doc */ + "Create the constellation of five (default) staff lines.", - /* create */ - "StaffSymbol ", + /* create */ + "StaffSymbol ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/staff-symbol-referencer-scheme.cc b/lily/staff-symbol-referencer-scheme.cc index e954dd37fe..1fe886ec0a 100644 --- a/lily/staff-symbol-referencer-scheme.cc +++ b/lily/staff-symbol-referencer-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ LY_DEFINE (ly_grob_staff_position, "ly:grob-staff-position", Grob *g = unsmob_grob (sg); Real pos = Staff_symbol_referencer::get_position (g); - if (fabs (rint (pos) -pos) < 1e-6) // ugh. + if (fabs (rint (pos) - pos) < 1e-6) // ugh. return scm_from_int ((int) my_round (pos)); else return scm_from_double (pos); @@ -71,3 +71,14 @@ LY_DEFINE (ly_staff_symbol_staff_space, "ly:staff-symbol-staff-space", Real staff_space = Staff_symbol_referencer::staff_space (g); return scm_from_double (staff_space); } + +LY_DEFINE (ly_staff_symbol_staff_radius, "ly:staff-symbol-staff-radius", + 1, 0, 0, (SCM grob), + "Returns the radius of the staff associated with" + " @var{grob}.") +{ + LY_ASSERT_SMOB (Grob, grob, 1); + Grob *g = unsmob_grob (grob); + Real staff_radius = Staff_symbol_referencer::staff_radius (g); + return scm_from_double (staff_radius); +} diff --git a/lily/staff-symbol-referencer.cc b/lily/staff-symbol-referencer.cc index 2939e0c061..3b8aa6ba18 100644 --- a/lily/staff-symbol-referencer.cc +++ b/lily/staff-symbol-referencer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2011 Han-Wen Nienhuys + Copyright (C) 1999--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,7 +41,8 @@ Staff_symbol_referencer::on_line (Grob *me, int pos) bool Staff_symbol_referencer::on_staff_line (Grob *me, int pos) { - return on_line (me, pos) && abs (pos) <= 2 * staff_radius (me); + Grob *st = get_staff_symbol (me); + return st ? Staff_symbol::on_line (st, pos, false) : false; } Grob * @@ -74,14 +75,28 @@ Staff_symbol_referencer::line_thickness (Grob *me) Real Staff_symbol_referencer::get_position (Grob *me) +{ + return internal_get_position (me, false); +} + +Real +Staff_symbol_referencer::pure_get_position (Grob *me) +{ + return internal_get_position (me, true); +} + +Real +Staff_symbol_referencer::internal_get_position (Grob *me, bool pure) { Real p = 0.0; Grob *st = get_staff_symbol (me); Grob *c = st ? me->common_refpoint (st, Y_AXIS) : 0; if (st && c) { - Real y = me->relative_coordinate (c, Y_AXIS) - - st->relative_coordinate (c, Y_AXIS); + Real y = (pure + ? me->pure_relative_y_coordinate (c, 0, INT_MAX) + : me->relative_coordinate (c, Y_AXIS)) + - st->relative_coordinate (c, Y_AXIS); Real space = Staff_symbol::staff_space (st); p = (space == 0) ? 0 : 2.0 * y / space; return p; @@ -91,7 +106,6 @@ Staff_symbol_referencer::get_position (Grob *me) return robust_scm2double (me->get_property ("staff-position"), p); } - Interval Staff_symbol_referencer::extent_in_staff (Grob *me) { @@ -101,8 +115,8 @@ Staff_symbol_referencer::extent_in_staff (Grob *me) Interval retval; if (st && c) { - retval = me->extent (c, Y_AXIS) - - st->relative_coordinate (c, Y_AXIS); + retval = me->extent (c, Y_AXIS) + - st->relative_coordinate (c, Y_AXIS); } return retval; @@ -114,6 +128,12 @@ Staff_symbol_referencer::get_rounded_position (Grob *me) return int (rint (get_position (me))); } +int +Staff_symbol_referencer::pure_get_rounded_position (Grob *me) +{ + return int (rint (pure_get_position (me))); +} + MAKE_SCHEME_CALLBACK (Staff_symbol_referencer, callback, 1); SCM Staff_symbol_referencer::callback (SCM smob) @@ -145,45 +165,76 @@ will be extracted from staff-position */ void Staff_symbol_referencer::set_position (Grob *me, Real p) +{ + internal_set_position (me, p, false); +} + +void +Staff_symbol_referencer::pure_set_position (Grob *me, Real p) +{ + internal_set_position (me, p, true); +} + +void +Staff_symbol_referencer::internal_set_position (Grob *me, Real p, bool pure) { Grob *st = get_staff_symbol (me); Real oldpos = 0.0; if (st && me->common_refpoint (st, Y_AXIS)) { - oldpos = get_position (me); + oldpos = pure ? pure_get_position (me) : get_position (me); } Real ss = Staff_symbol_referencer::staff_space (me); - me->translate_axis ((p - oldpos) * ss * 0.5, Y_AXIS); + me->translate_axis ((p - oldpos) * ss * 0.5, Y_AXIS); +} + +Interval +Staff_symbol_referencer::staff_span (Grob *me) +{ + Interval result; + if (me) + if (Grob *symb = get_staff_symbol (me)) + result = Staff_symbol::line_span (symb); + return result; } -/* Half of the height, in staff space, i.e. 2.0 for a normal staff. */ Real Staff_symbol_referencer::staff_radius (Grob *me) { - return (line_count (me) - 1) / 2.0; + /* + line_span is measured in pitch steps, not in staff spaces + */ + return staff_span (me).length () / 4.0; } int compare_position (Grob *const &a, Grob *const &b) { return sign (Staff_symbol_referencer::get_position ((Grob *)a) - - Staff_symbol_referencer::get_position ((Grob *) b)); + - Staff_symbol_referencer::get_position ((Grob *) b)); } bool position_less (Grob *const &a, Grob *const &b) { return Staff_symbol_referencer::get_position (a) - < Staff_symbol_referencer::get_position (b); + < Staff_symbol_referencer::get_position (b); +} + +bool +pure_position_less (Grob *const &a, Grob *const &b) +{ + return Staff_symbol_referencer::pure_get_position (a) + < Staff_symbol_referencer::pure_get_position (b); } ADD_INTERFACE (Staff_symbol_referencer, - "An object whose Y@tie{}position is meant relative to a staff" - " symbol. These usually" - " have @code{Staff_symbol_referencer::callback} in their" - " @code{Y-offset-callbacks}.", - - /* properties */ - "staff-position " - ); + "An object whose Y@tie{}position is meant relative to a staff" + " symbol. These usually" + " have @code{Staff_symbol_referencer::callback} in their" + " @code{Y-offset-callbacks}.", + + /* properties */ + "staff-position " + ); diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index d1629dfb24..3b0eef00b5 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,6 +22,7 @@ #include "lookup.hh" #include "dimensions.hh" #include "output-def.hh" +#include "paper-column.hh" #include "warn.hh" #include "item.hh" #include "staff-symbol-referencer.hh" @@ -49,82 +50,206 @@ Staff_symbol::print (SCM smob) Real t = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); t *= robust_scm2double (me->get_property ("thickness"), 1.0); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { SCM width_scm = me->get_property ("width"); if (d == RIGHT && scm_is_number (width_scm)) - { - /* - don't multiply by Staff_symbol_referencer::staff_space (me), - since that would make aligning staff symbols of different sizes to - one right margin hell. - */ - span_points[RIGHT] = scm_to_double (width_scm); - } + { + /* + don't multiply by Staff_symbol_referencer::staff_space (me), + since that would make aligning staff symbols of different sizes to + one right margin hell. + */ + span_points[RIGHT] = scm_to_double (width_scm); + } else - { - Item *x = sp->get_bound (d); + { + Item *x = sp->get_bound (d); - span_points[d] = x->relative_coordinate (common, X_AXIS); - if (!x->break_status_dir () - && !x->extent (x, X_AXIS).is_empty ()) - span_points[d] += x->extent (x, X_AXIS)[d]; - } + span_points[d] = ((!x->break_status_dir () + && !x->extent (x, X_AXIS).is_empty ()) + ? Paper_column::break_align_width (x, ly_symbol2scm ("break-alignment"))[d] + : x->relative_coordinate (common, X_AXIS)); + } - span_points[d] -= d* t / 2; + span_points[d] -= d * t / 2; } - while (flip (&d) != LEFT); Stencil m; - SCM line_positions = me->get_property ("line-positions"); + vector line_positions = Staff_symbol::line_positions (me); + Stencil line = Lookup::horizontal_line (span_points - -me->relative_coordinate (common, X_AXIS), - t); + - me->relative_coordinate (common, X_AXIS), + t); Real space = staff_space (me); + for (vector::const_iterator i = line_positions.begin (), + e = line_positions.end (); + i != e; + ++i) + { + Stencil b (line); + b.translate_axis (*i * 0.5 * space, Y_AXIS); + m.add_stencil (b); + } + return m.smobbed_copy (); +} + +vector +Staff_symbol::line_positions (Grob *me) +{ + SCM line_positions = me->get_property ("line-positions"); if (scm_is_pair (line_positions)) { + int line_count = scm_ilength (line_positions); + vector values (line_count); + int i = 0; for (SCM s = line_positions; scm_is_pair (s); - s = scm_cdr (s)) - { - Stencil b (line); - b.translate_axis (scm_to_double (scm_car (s)) - * 0.5 * space, Y_AXIS); - m.add_stencil (b); - } + s = scm_cdr (s)) + { + values[i++] = scm_to_double (scm_car (s)); + } + return values; } else { - int l = Staff_symbol::line_count (me); - Real height = (l - 1) * staff_space (me) / 2; - for (int i = 0; i < l; i++) - { - Stencil b (line); - b.translate_axis (height - i * space, Y_AXIS); - m.add_stencil (b); - } + int line_count = Staff_symbol::line_count (me); + Real height = line_count - 1; + vector values (line_count); + for (int i = 0; i < line_count; i++) + { + values[i] = height - i * 2; + } + return values; } - return m.smobbed_copy (); } - -int -Staff_symbol::get_steps (Grob *me) +vector +Staff_symbol::ledger_positions (Grob *me, int pos) { - return line_count (me) * 2; + SCM ledger_positions = me->get_property ("ledger-positions"); + Real ledger_extra = robust_scm2double (me->get_property ("ledger-extra"), 0); + vector line_positions = Staff_symbol::line_positions (me); + vector values; + + if (line_positions.empty ()) + return values; + + // find the staff line nearest to note position + Real nearest_line = line_positions[0]; + Real line_dist = abs (line_positions[0] - pos); + for (vector::const_iterator i = line_positions.begin (), + e = line_positions.end (); + i != e; + ++i) + { + if (abs (*i - pos) < line_dist) + { + nearest_line = *i; + line_dist = abs (*i - pos); + } + } + + if (line_dist < .5) + return values; + + Direction dir = (Direction)sign (pos - nearest_line); + + if (scm_is_pair (ledger_positions)) + // custom ledger line positions + { + Real min_pos = HUGE_VAL; + Real max_pos = -HUGE_VAL; + SCM s2; + + // find the extent of the ledger pattern + for (SCM s = ledger_positions; scm_is_pair (s); s = scm_cdr (s)) + { + s2 = scm_car (s); + if (!scm_is_number (s2)) + s2 = scm_car (s2); + Real current_ledger = scm_to_double (s2); + if (current_ledger > max_pos) + max_pos = current_ledger; + if (current_ledger < min_pos) + min_pos = current_ledger; + } + + Real cycle = max_pos - min_pos; + + Interval ledger_fill; + ledger_fill.add_point (nearest_line + 0.5 * dir); + ledger_fill.add_point (pos + 0.5 * dir + ledger_extra * dir); + + // fill the Interval ledger_fill with ledger lines + int n = (int) floor ((ledger_fill[DOWN] - min_pos) / cycle); + Real current; + SCM s = scm_cdr (ledger_positions); + if (!scm_is_pair (s) || cycle < 0.1) + return values; + do + { + s2 = scm_car (s); + if (scm_is_number (s2)) + { + current = scm_to_double (s2) + n * cycle; + if (ledger_fill.contains (current)) + values.push_back (current); + } + else + // grouped ledger lines, either add all or none + { + do + { + current = scm_to_double (scm_car (s2)) + n * cycle; + if (ledger_fill.contains (current)) + { + s2 = scm_car (s); + do + { + current = scm_to_double (scm_car (s2)) + n * cycle; + values.push_back (current); + s2 = scm_cdr (s2); + } + while (scm_is_pair (s2)); + } + else + s2 = scm_cdr (s2); + } + while (scm_is_pair (s2)); + } + s = scm_cdr (s); + if (!scm_is_pair (s)) + { + s = scm_cdr (ledger_positions); + n++; + } + } + while (current <= ledger_fill[UP]); + } + else + // normal ledger lines + { + int ledger_count = (int) floor ((abs (nearest_line - pos) + ledger_extra) / 2); + values.resize (ledger_count); + for (int i = 0; i < ledger_count; i++) + { + values[i] = nearest_line + dir * (ledger_count - i) * 2; + } + } + return values; } int Staff_symbol::line_count (Grob *me) { - SCM c = me->get_property ("line-count"); - if (scm_is_number (c)) - return scm_to_int (c); + SCM line_positions = me->get_property ("line-positions"); + if (scm_is_pair (line_positions)) + return scm_ilength (line_positions); else - return 0; + return robust_scm2int (me->get_property ("line-count"), 0); } Real @@ -150,14 +275,14 @@ Staff_symbol::get_ledger_line_thickness (Grob *me) return z[X_AXIS] * get_line_thickness (me) + z[Y_AXIS] * staff_space (me); } -MAKE_SCHEME_CALLBACK (Staff_symbol, height,1); +MAKE_SCHEME_CALLBACK (Staff_symbol, height, 1); SCM -Staff_symbol::height (SCM smob) +Staff_symbol::height (SCM smob) { Grob *me = unsmob_grob (smob); Real t = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); t *= robust_scm2double (me->get_property ("thickness"), 1.0); - + SCM line_positions = me->get_property ("line-positions"); Interval y_ext; @@ -165,8 +290,8 @@ Staff_symbol::height (SCM smob) if (scm_is_pair (line_positions)) { for (SCM s = line_positions; scm_is_pair (s); - s = scm_cdr (s)) - y_ext.add_point (scm_to_double (scm_car (s)) * 0.5 * space); + s = scm_cdr (s)) + y_ext.add_point (scm_to_double (scm_car (s)) * 0.5 * space); } else { @@ -174,12 +299,12 @@ Staff_symbol::height (SCM smob) Real height = (l - 1) * staff_space (me) / 2; y_ext = Interval (-height, height); } - y_ext.widen (t/2); + y_ext.widen (t / 2); return ly_interval2scm (y_ext); } bool -Staff_symbol::on_line (Grob *me, int pos) +Staff_symbol::on_line (Grob *me, int pos, bool allow_ledger) { SCM line_positions = me->get_property ("line-positions"); if (scm_is_pair (line_positions)) @@ -187,25 +312,37 @@ Staff_symbol::on_line (Grob *me, int pos) Real min_line = HUGE_VAL; Real max_line = -HUGE_VAL; for (SCM s = line_positions; scm_is_pair (s); s = scm_cdr (s)) - { - Real current_line = scm_to_double (scm_car (s)); - if (pos == current_line) - return true; - if (current_line > max_line) - max_line = current_line; - if (current_line < min_line) - min_line = current_line; - - } - if (pos < min_line) - return (( (int) (rint (pos - min_line)) % 2) == 0); - if (pos > max_line) - return (( (int) (rint (pos - max_line)) % 2) == 0); + { + Real current_line = scm_to_double (scm_car (s)); + if (pos == current_line) + return true; + if (current_line > max_line) + max_line = current_line; + if (current_line < min_line) + min_line = current_line; + + } + + if (allow_ledger) + { + if (pos < min_line) + return (( (int) (rint (pos - min_line)) % 2) == 0); + if (pos > max_line) + return (( (int) (rint (pos - max_line)) % 2) == 0); + } return false; } else - return ((abs (pos + line_count (me)) % 2) == 1); + { + int const line_cnt = line_count (me); + bool result = abs (pos + line_cnt) % 2 == 1; + if (result && !allow_ledger) + { + result = -line_cnt < pos && pos < line_cnt; + } + return result; + } } Interval @@ -227,18 +364,20 @@ Staff_symbol::line_span (Grob *me) } ADD_INTERFACE (Staff_symbol, - "This spanner draws the lines of a staff. A staff symbol" - " defines a vertical unit, the @emph{staff space}. Quantities" - " that go by a half staff space are called @emph{positions}." - " The center (i.e., middle line or space) is position@tie{}0." - " The length of the symbol may be set by hand through the" - " @code{width} property.", - - /* properties */ - "ledger-line-thickness " - "line-count " - "line-positions " - "staff-space " - "thickness " - "width " - ); + "This spanner draws the lines of a staff. A staff symbol" + " defines a vertical unit, the @emph{staff space}. Quantities" + " that go by a half staff space are called @emph{positions}." + " The center (i.e., middle line or space) is position@tie{}0." + " The length of the symbol may be set by hand through the" + " @code{width} property.", + + /* properties */ + "ledger-extra " + "ledger-line-thickness " + "ledger-positions " + "line-count " + "line-positions " + "staff-space " + "thickness " + "width " + ); diff --git a/lily/stanza-number-align-engraver.cc b/lily/stanza-number-align-engraver.cc index 1acf51f362..e16560d263 100644 --- a/lily/stanza-number-align-engraver.cc +++ b/lily/stanza-number-align-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2011 Han-Wen Nienhuys + Copyright (C) 2004--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,8 +32,8 @@ public: TRANSLATOR_DECLARATIONS (Stanza_number_align_engraver); protected: - vector lyrics_; - vector stanza_numbers_; + vector lyrics_; + vector stanza_numbers_; DECLARE_ACKNOWLEDGER (lyric_syllable); DECLARE_ACKNOWLEDGER (stanza_number); @@ -73,16 +73,16 @@ ADD_ACKNOWLEDGER (Stanza_number_align_engraver, lyric_syllable); ADD_ACKNOWLEDGER (Stanza_number_align_engraver, stanza_number); ADD_TRANSLATOR (Stanza_number_align_engraver, - /* doc */ - "This engraver ensures that stanza numbers are neatly" - " aligned.", + /* doc */ + "This engraver ensures that stanza numbers are neatly" + " aligned.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - ""); + /* write */ + ""); diff --git a/lily/stanza-number-engraver.cc b/lily/stanza-number-engraver.cc index 0737e969df..370a4ac1ae 100644 --- a/lily/stanza-number-engraver.cc +++ b/lily/stanza-number-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys , Glen Prideaux + Copyright (C) 2000--2012 Han-Wen Nienhuys , Glen Prideaux LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -85,15 +85,15 @@ Stanza_number_engraver::stop_translation_timestep () ADD_ACKNOWLEDGER (Stanza_number_engraver, lyric_syllable); ADD_TRANSLATOR (Stanza_number_engraver, - /* doc */ - "Engrave stanza numbers.", + /* doc */ + "Engrave stanza numbers.", - /* create */ - "StanzaNumber ", + /* create */ + "StanzaNumber ", - /* read */ - "stanza ", + /* read */ + "stanza ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index e21d796765..c1ab5f6f05 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,17 +38,22 @@ class Stem_engraver : public Engraver { Grob *stem_; Grob *tremolo_; + vector maybe_flags_; Stream_event *rhythmic_ev_; Stream_event *tremolo_ev_; + bool tuplet_start_; TRANSLATOR_DECLARATIONS (Stem_engraver); protected: - void make_stem (Grob_info); + void make_stem (Grob_info, bool); DECLARE_TRANSLATOR_LISTENER (tremolo); + DECLARE_TRANSLATOR_LISTENER (tuplet_span); DECLARE_ACKNOWLEDGER (rhythmic_head); void stop_translation_timestep (); + void finalize (); + void kill_unused_flags (); }; Stem_engraver::Stem_engraver () @@ -57,64 +62,66 @@ Stem_engraver::Stem_engraver () stem_ = 0; tremolo_ = 0; rhythmic_ev_ = 0; + tuplet_start_ = false; } void -Stem_engraver::make_stem (Grob_info gi) +Stem_engraver::make_stem (Grob_info gi, bool tuplet_start) { /* Announce the cause of the head as cause of the stem. The stem needs a rhythmic structure to fit it into a beam. */ stem_ = make_item ("Stem", gi.grob ()->self_scm ()); - + if (tuplet_start) + stem_->set_property ("tuplet-start", SCM_BOOL_T); + (void) make_item ("StemStub", gi.grob ()->self_scm ()); if (tremolo_ev_) { /* Stem tremolo is never applied to a note by default, - it must be requested. But there is a default for the - tremolo value: + it must be requested. But there is a default for the + tremolo value: - c4:8 c c: + c4:8 c c: - the first and last (quarter) note both get one tremolo flag. */ + the first and last (quarter) note both get one tremolo flag. */ int requested_type - = robust_scm2int (tremolo_ev_->get_property ("tremolo-type"), 0); + = robust_scm2int (tremolo_ev_->get_property ("tremolo-type"), 0); SCM f = get_property ("tremoloFlags"); if (!requested_type) - { - if (scm_is_number (f)) - requested_type = scm_to_int (f); - else - requested_type = 8; - } + { + if (scm_is_number (f)) + requested_type = scm_to_int (f); + else + requested_type = 8; + } else - context ()->set_property ("tremoloFlags", scm_from_int (requested_type)); - + context ()->set_property ("tremoloFlags", scm_from_int (requested_type)); /* - we take the duration log from the Event, since the duration-log - for a note head is always <= 2. + we take the duration log from the Event, since the duration-log + for a note head is always <= 2. */ Stream_event *ev = gi.event_cause (); Duration *dur = unsmob_duration (ev->get_property ("duration")); - + int tremolo_flags = intlog2 (requested_type) - 2 - - (dur->duration_log () > 2 ? dur->duration_log () - 2 : 0); + - (dur->duration_log () > 2 ? dur->duration_log () - 2 : 0); if (tremolo_flags <= 0) - { - tremolo_ev_->origin ()->warning (_ ("tremolo duration is too long")); - tremolo_flags = 0; - } + { + tremolo_ev_->origin ()->warning (_ ("tremolo duration is too long")); + tremolo_flags = 0; + } if (tremolo_flags) - { - tremolo_ = make_item ("StemTremolo", tremolo_ev_->self_scm ()); - - /* The number of tremolo flags is the number of flags of the - tremolo-type minus the number of flags of the note itself. */ - tremolo_->set_property ("flag-count", scm_from_int (tremolo_flags)); - tremolo_->set_parent (stem_, X_AXIS); - stem_->set_object ("tremolo-flag", tremolo_->self_scm ()); - tremolo_->set_object ("stem", stem_->self_scm ()); - } + { + tremolo_ = make_item ("StemTremolo", tremolo_ev_->self_scm ()); + + /* The number of tremolo flags is the number of flags of the + tremolo-type minus the number of flags of the note itself. */ + tremolo_->set_property ("flag-count", scm_from_int (tremolo_flags)); + tremolo_->set_parent (stem_, X_AXIS); + stem_->set_object ("tremolo-flag", tremolo_->self_scm ()); + tremolo_->set_object ("stem", stem_->self_scm ()); + } } } @@ -132,45 +139,102 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi) return; if (!stem_) - make_stem (gi); + make_stem (gi, tuplet_start_); 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, - ds > 0 ? 1 << ds : 1)); + ds < 0 ? 1 << -ds : 1, + ds > 0 ? 1 << ds : 1)); gi.event_cause ()->origin ()->warning (_ ("maybe input should specify polyphonic voices")); } Stem::add_head (stem_, gi.grob ()); + + if (Stem::is_normal_stem (stem_) + && Stem::duration_log (stem_) > 2) + { + Item *flag = make_item ("Flag", stem_->self_scm ()); + flag->set_parent (stem_, X_AXIS); + stem_->set_object ("flag", flag->self_scm ()); + maybe_flags_.push_back (flag); + } + if (tuplet_start_) + stem_->set_property ("tuplet-start", SCM_BOOL_T); +} + +void +Stem_engraver::kill_unused_flags () +{ + for (vsize i = 0; i < maybe_flags_.size (); i++) + if (unsmob_grob (maybe_flags_[i]->get_parent (X_AXIS)->get_object ("beam"))) + maybe_flags_[i]->suicide (); +} + +void +Stem_engraver::finalize () +{ + kill_unused_flags (); } void Stem_engraver::stop_translation_timestep () { + if (scm_is_string (get_property ("whichBar"))) + kill_unused_flags (); + tremolo_ = 0; if (stem_) { /* FIXME: junk these properties. */ SCM prop = get_property ("stemLeftBeamCount"); if (scm_is_number (prop)) - { - Stem::set_beaming (stem_, scm_to_int (prop), LEFT); - context ()->unset_property (ly_symbol2scm ("stemLeftBeamCount")); - } + { + Stem::set_beaming (stem_, scm_to_int (prop), LEFT); + context ()->unset_property (ly_symbol2scm ("stemLeftBeamCount")); + } prop = get_property ("stemRightBeamCount"); if (scm_is_number (prop)) - { - Stem::set_beaming (stem_, scm_to_int (prop), RIGHT); - context ()->unset_property (ly_symbol2scm ("stemRightBeamCount")); - } + { + Stem::set_beaming (stem_, scm_to_int (prop), RIGHT); + context ()->unset_property (ly_symbol2scm ("stemRightBeamCount")); + } stem_ = 0; } + tuplet_start_ = false; tremolo_ev_ = 0; } +IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tuplet_span); +void +Stem_engraver::listen_tuplet_span (Stream_event *ev) +{ + Direction dir = to_dir (ev->get_property ("span-direction")); + if (dir == START) + { + // set stem property if stem already exists + if (stem_) + stem_->set_property ("tuplet-start", SCM_BOOL_T); + tuplet_start_ = true; // stash the value for use in later creation + } +} + IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tremolo); void Stem_engraver::listen_tremolo (Stream_event *ev) @@ -181,19 +245,20 @@ Stem_engraver::listen_tremolo (Stream_event *ev) ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head); ADD_TRANSLATOR (Stem_engraver, - /* doc */ - "Create stems and single-stem tremolos. It also works" - " together with the beam engraver for overriding beaming.", - - /* create */ - "Stem " - "StemTremolo ", - - /* read */ - "tremoloFlags " - "stemLeftBeamCount " - "stemRightBeamCount ", - - /* write */ - "" - ); + /* doc */ + "Create stems and single-stem tremolos. It also works" + " together with the beam engraver for overriding beaming.", + + /* create */ + "Stem " + "StemTremolo ", + + /* read */ + "tremoloFlags " + "stemLeftBeamCount " + "stemRightBeamCount " + "whichBar ", + + /* write */ + "" + ); diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 4d1678889a..d48091537a 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,23 +42,22 @@ Stem_tremolo::calc_slope (SCM smob) Real dy = 0; SCM s = beam->get_property ("quantized-positions"); if (is_number_pair (s)) - dy = - scm_to_double (scm_car (s)) + scm_to_double (scm_cdr (s)); + dy = - scm_to_double (scm_car (s)) + scm_to_double (scm_cdr (s)); Grob *s2 = Beam::last_normal_stem (beam); Grob *s1 = Beam::first_normal_stem (beam); - + Grob *common = s1->common_refpoint (s2, X_AXIS); - Real dx = s2->relative_coordinate (common, X_AXIS) - - s1->relative_coordinate (common, X_AXIS); + Real dx = s2->relative_coordinate (common, X_AXIS) + - s1->relative_coordinate (common, X_AXIS); return scm_from_double (dx ? dy / dx : 0); } else /* down stems with flags should have more sloped trems (helps avoid flag/stem collisions without making the stem very long) */ - return scm_from_double ( - (Stem::duration_log (stem) >= 3 && get_grob_direction (stem) == DOWN) ? - 0.40 : 0.25); + return scm_from_double ((Stem::duration_log (stem) >= 3 && get_grob_direction (stem) == DOWN) + ? 0.40 : 0.25); } MAKE_SCHEME_CALLBACK (Stem_tremolo, calc_width, 1) @@ -72,7 +71,7 @@ Stem_tremolo::calc_width (SCM smob) bool flag = Stem::duration_log (stem) >= 3 && !beam; /* beamed stems and up-stems with flags have shorter tremolos */ - return scm_from_double (((stemdir == UP && flag) || beam)? 1.0 : 1.5); + return scm_from_double (((stemdir == UP && flag) || beam) ? 1.0 : 1.5); } MAKE_SCHEME_CALLBACK (Stem_tremolo, calc_style, 1) @@ -95,9 +94,9 @@ Stem_tremolo::get_beam_translation (Grob *me) Spanner *beam = Stem::get_beam (stem); return (beam && beam->is_live ()) - ? Beam::get_beam_translation (beam) - : (Staff_symbol_referencer::staff_space (me) - * robust_scm2double (me->get_property ("length-fraction"), 1.0) * 0.81); + ? Beam::get_beam_translation (beam) + : (Staff_symbol_referencer::staff_space (me) + * robust_scm2double (me->get_property ("length-fraction"), 1.0) * 0.81); } Stencil @@ -144,20 +143,39 @@ Stem_tremolo::raw_stencil (Grob *me, Real slope, Direction stemdir) return mol; } - - -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); + Item *me = unsmob_item (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)); + Item *stem = unsmob_item (me->get_object ("stem")); + if (!stem) + return ly_interval2scm (s1.extent (Y_AXIS)); + + Direction stemdir = get_grob_direction (stem); + if (stemdir == 0) + stemdir = UP; - return ly_interval2scm (s1.extent (Y_AXIS)); + Spanner *beam = Stem::get_beam (stem); + + if (!beam) + return ly_interval2scm (s1.extent (Y_AXIS)); + + Interval ph = stem->pure_height (stem, 0, INT_MAX); + Stem_info si = Stem::get_stem_info (stem); + ph[-stemdir] = si.shortest_y_; + int beam_count = Stem::beam_multiplicity (stem).length () + 1; + Real beam_translation = get_beam_translation (me); + + ph = ph - stemdir * max (beam_count, 1) * beam_translation; + ph = ph - ph.center (); + + return ly_interval2scm (ph); } MAKE_SCHEME_CALLBACK (Stem_tremolo, width, 1); @@ -179,7 +197,7 @@ Stem_tremolo::vertical_length (Grob *me) { return untranslated_stencil (me, 0.35).extent (Y_AXIS).length (); } - + Stencil Stem_tremolo::untranslated_stencil (Grob *me, Real slope) { @@ -202,16 +220,31 @@ Stem_tremolo::untranslated_stencil (Grob *me, Real slope) return raw_stencil (me, slope, stencil_dir); } - -Stencil -Stem_tremolo::translated_stencil (Grob *me, Real slope) +MAKE_SCHEME_CALLBACK (Stem_tremolo, calc_y_offset, 1); +SCM +Stem_tremolo::calc_y_offset (SCM smob) { - Stencil mol = untranslated_stencil (me, slope); + Grob *me = unsmob_grob (smob); + return scm_from_double (y_offset (me, false)); +} - Grob *stem = unsmob_grob (me->get_object ("stem")); +MAKE_SCHEME_CALLBACK (Stem_tremolo, pure_calc_y_offset, 3); +SCM +Stem_tremolo::pure_calc_y_offset (SCM smob, + SCM, /* start */ + SCM /* end */) +{ + Grob *me = unsmob_grob (smob); + return scm_from_double (y_offset (me, true)); +} + +Real +Stem_tremolo::y_offset (Grob *me, bool pure) +{ + Item *stem = unsmob_item (me->get_object ("stem")); if (!stem) - return Stencil (); - + return 0.0; + Direction stemdir = get_grob_direction (stem); if (stemdir == 0) stemdir = UP; @@ -220,11 +253,22 @@ Stem_tremolo::translated_stencil (Grob *me, Real slope) Real beam_translation = get_beam_translation (me); int beam_count = beam ? (Stem::beam_multiplicity (stem).length () + 1) : 0; - Real ss = Staff_symbol_referencer::staff_space (me); + + if (pure && beam) + { + Interval ph = stem->pure_height (stem, 0, INT_MAX); + Stem_info si = Stem::get_stem_info (stem); + ph[-stemdir] = si.shortest_y_; + + return (ph - stemdir * max (beam_count, 1) * beam_translation)[stemdir] - stemdir * 0.5 * me->pure_height (me, 0, INT_MAX).length (); + } Real end_y - = Stem::stem_end_position (stem) * ss / 2 - - stemdir * max (beam_count, 1) * beam_translation; + = (pure + ? stem->pure_height (stem, 0, INT_MAX)[stemdir] + : stem->extent (stem, Y_AXIS)[stemdir]) + - stemdir * max (beam_count, 1) * beam_translation + - Stem::beam_end_corrective (stem); if (!beam && Stem::duration_log (stem) >= 3) { @@ -238,13 +282,13 @@ Stem_tremolo::translated_stencil (Grob *me, Real slope) { /* we shouldn't position relative to the end of the stem since the stem is invisible */ + Real ss = Staff_symbol_referencer::staff_space (me); vector nhp = Stem::note_head_positions (stem); Real note_head = (stemdir == UP ? nhp.back () : nhp[0]) * ss / 2; end_y = note_head + stemdir * 1.5; } - mol.translate_axis (end_y, Y_AXIS); - return mol; + return end_y; } MAKE_SCHEME_CALLBACK (Stem_tremolo, print, 1); @@ -252,21 +296,21 @@ SCM Stem_tremolo::print (SCM grob) { Grob *me = unsmob_grob (grob); - - Stencil s = translated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25)); + + Stencil s = untranslated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25)); return s.smobbed_copy (); } ADD_INTERFACE (Stem_tremolo, - "A beam slashing a stem to indicate a tremolo. The property" - " @code{style} can be @code{default} or @code{rectangle}.", + "A beam slashing a stem to indicate a tremolo. The property" + " @code{style} can be @code{default} or @code{rectangle}.", /* properties */ - "beam-thickness " - "beam-width " - "flag-count " - "length-fraction " - "stem " + "beam-thickness " + "beam-width " + "flag-count " + "length-fraction " + "stem " "style " - "slope " - ); + "slope " + ); diff --git a/lily/stem.cc b/lily/stem.cc index 04bc410592..8069a456c8 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys Jan Nieuwenhuizen TODO: This is way too hairy @@ -24,10 +24,23 @@ along with LilyPond. If not, see . */ +/* + Note that several internal functions have a calc_beam bool argument. + This argument means: "If set, acknowledge the fact that there is a beam + and deal with it. If not, give me the measurements as if there is no beam." + Most pure functions are called WITHOUT calc_beam, whereas non-pure functions + are called WITH calc_beam. + + The only exception to this is ::pure_height, which calls internal_pure_height + with "true" for calc_beam in order to trigger the calculations of other + pure heights in case there is a beam. It passes false, however, to + internal_height and internal_pure_height for all subsequent iterations. +*/ + #include "stem.hh" #include "spanner.hh" -#include // rint +#include // rint using namespace std; #include "beam.hh" @@ -65,7 +78,7 @@ Stem::set_beaming (Grob *me, int beam_count, Direction d) lst = scm_cons (scm_from_int (i), lst); else lst = SCM_BOOL_F; - + index_set_cell (pair, d, lst); } @@ -89,7 +102,7 @@ Stem::head_positions (Grob *me) { Drul_array e (extremal_heads (me)); return Interval (Staff_symbol_referencer::get_position (e[DOWN]), - Staff_symbol_referencer::get_position (e[UP])); + Staff_symbol_referencer::get_position (e[UP])); } return Interval (); } @@ -100,22 +113,56 @@ Stem::chord_start_y (Grob *me) Interval hp = head_positions (me); if (!hp.is_empty ()) return hp[get_grob_direction (me)] * Staff_symbol_referencer::staff_space (me) - * 0.5; + * 0.5; return 0; } - - void -Stem::set_stemend (Grob *me, Real se) +Stem::set_stem_positions (Grob *me, Real se) { // todo: margins Direction d = get_grob_direction (me); + Grob *beam = unsmob_grob (me->get_object ("beam")); if (d && d * head_positions (me)[get_grob_direction (me)] >= se * d) me->warning (_ ("weird stem size, check for narrow beams")); - me->set_property ("stem-end-position", scm_from_double (se)); + // trigger note collision mechanisms + Real stem_beg = internal_calc_stem_begin_position (me, false); + Real staff_space = Staff_symbol_referencer::staff_space (me); + Real half_space = staff_space * 0.5; + + Interval height; + height[-d] = stem_beg * half_space; + height[d] = se * half_space + beam_end_corrective (me); + + Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"), + 0.0); + bool stemlet = stemlet_length > 0.0; + + Grob *lh = get_reference_head (me); + + if (!lh) + { + if (stemlet && beam) + { + Real beam_translation = Beam::get_beam_translation (beam); + Real beam_thickness = Beam::get_beam_thickness (beam); + int beam_count = beam_multiplicity (me).length () + 1; + + height[-d] = (height[d] - d + * (0.5 * beam_thickness + + beam_translation * max (0, (beam_count - 1)) + + stemlet_length)); + } + else if (!stemlet && beam) + height[-d] = height[d]; + else if (stemlet && !beam) + me->programming_error ("Can't have a stemlet without a beam."); + } + + me->set_property ("stem-begin-position", scm_from_double (height[-d] * 2 / staff_space)); + me->set_property ("length", scm_from_double (height.length () * 2 / staff_space)); } /* Note head that determines hshift for upstems @@ -178,32 +225,35 @@ Stem::extremal_heads (Grob *me) Grob *n = heads[i]; int p = Staff_symbol_referencer::get_rounded_position (n); - Direction d = LEFT; - do - { - if (d * p > d * extpos[d]) - { - exthead[d] = n; - extpos[d] = p; - } - } - while (flip (&d) != DOWN); + for (LEFT_and_RIGHT (d)) + { + if (d * p > d * extpos[d]) + { + exthead[d] = n; + extpos[d] = p; + } + } } return exthead; } -/* The positions, in ascending order. */ +/* The staff positions, in ascending order. + * If FILTER, include the main column of noteheads only */ vector -Stem::note_head_positions (Grob *me) +Stem::note_head_positions (Grob *me, bool filter) { vector ps; extract_grob_set (me, "note-heads", heads); + Grob *xref = common_refpoint_of_array (heads, me, X_AXIS); for (vsize i = heads.size (); i--;) { Grob *n = heads[i]; - int p = Staff_symbol_referencer::get_rounded_position (n); + if (filter + && n->relative_coordinate (xref, X_AXIS) != 0.0) + continue; + int p = Staff_symbol_referencer::get_rounded_position (n); ps.push_back (p); } @@ -226,66 +276,101 @@ bool Stem::is_invisible (Grob *me) { return !is_normal_stem (me) - && (robust_scm2double (me->get_property ("stemlet-length"), - 0.0) == 0.0); + && (robust_scm2double (me->get_property ("stemlet-length"), + 0.0) == 0.0); } - bool Stem::is_normal_stem (Grob *me) { - return head_count (me) && scm_to_int (me->get_property ("duration-log")) >= 1; -} + if (!head_count (me)) + return false; + extract_grob_set (me, "note-heads", heads); + SCM style = heads[0]->get_property ("style"); + return style != ly_symbol2scm ("kievan") && scm_to_int (me->get_property ("duration-log")) >= 1; +} MAKE_SCHEME_CALLBACK (Stem, pure_height, 3) SCM Stem::pure_height (SCM smob, - SCM /* start */, - SCM /* end */) + SCM /* start */, + SCM /* end */) { Grob *me = unsmob_grob (smob); - Interval iv; + return ly_interval2scm (internal_pure_height (me, true)); +} +Interval +Stem::internal_pure_height (Grob *me, bool calc_beam) +{ if (!is_normal_stem (me)) - return ly_interval2scm (iv); + return Interval (0.0, 0.0); - Real ss = Staff_symbol_referencer::staff_space (me); - Real rad = Staff_symbol_referencer::staff_radius (me); + Grob *beam = unsmob_grob (me->get_object ("beam")); - if (!to_boolean (me->get_property ("cross-staff"))) + Interval iv = internal_height (me, false); + + if (!beam) + return iv; + if (calc_beam) { - Real len_in_halfspaces; - SCM user_set_len_scm = me->get_property_data ("length"); - if (scm_is_number (user_set_len_scm)) - len_in_halfspaces = scm_to_double (user_set_len_scm); - else - len_in_halfspaces = scm_to_double (calc_length (smob)); - Real len = len_in_halfspaces * ss / 2; + Interval overshoot; Direction dir = get_grob_direction (me); + for (DOWN_and_UP (d)) + overshoot[d] = d == dir ? dir * infinity_f : iv[d]; + + vector heights; + vector my_stems; + extract_grob_set (beam, "normal-stems", normal_stems); + for (vsize i = 0; i < normal_stems.size (); i++) + if (get_grob_direction (normal_stems[i]) == dir) + { + if (normal_stems[i] != me) + heights.push_back (Stem::internal_pure_height (normal_stems[i], false)); + else + heights.push_back (iv); + my_stems.push_back (normal_stems[i]); + } + //iv.unite (heights.back ()); + // look for cross staff effects + vector coords; + Grob *common = common_refpoint_of_array (my_stems, me, Y_AXIS); + Real min_pos = infinity_f; + Real max_pos = -infinity_f; + for (vsize i = 0; i < my_stems.size (); i++) + { + coords.push_back (my_stems[i]->pure_relative_y_coordinate (common, 0, INT_MAX)); + min_pos = min (min_pos, coords[i]); + max_pos = max (max_pos, coords[i]); + } + for (vsize i = 0; i < heights.size (); i++) + { + heights[i][dir] += dir == DOWN + ? coords[i] - max_pos + : coords[i] - min_pos; + } - Interval hp = head_positions (me); - if (dir == UP) - iv = Interval (0, len); - else - iv = Interval (-len, 0); - - if (!hp.is_empty ()) - { - iv.translate (hp[dir] * ss / 2); - iv.add_point (hp[-dir] * ss / 2); - } + for (vsize i = 0; i < heights.size (); i++) iv.unite (heights[i]); - /* extend the stem (away from the head) to cover the staff */ - if (dir == UP) - iv[UP] = max (iv[UP], rad * ss); - else - iv[DOWN] = min (iv[DOWN], -rad * ss); + for (vsize i = 0; i < my_stems.size (); i++) + cache_pure_height (my_stems[i], iv, heights[i]); + iv.intersect (overshoot); } - else - iv = Interval (-rad * ss, rad * ss); - return ly_interval2scm (iv); + return iv; +} + +void +Stem::cache_pure_height (Grob *me, Interval iv, Interval my_iv) +{ + Interval overshoot; + Direction dir = get_grob_direction (me); + for (DOWN_and_UP (d)) + overshoot[d] = d == dir ? dir * infinity_f : my_iv[d]; + + iv.intersect (overshoot); + dynamic_cast (me)->cache_pure_height (iv); } MAKE_SCHEME_CALLBACK (Stem, calc_stem_end_position, 1) @@ -293,52 +378,48 @@ SCM Stem::calc_stem_end_position (SCM smob) { Grob *me = unsmob_grob (smob); + return scm_from_double (internal_calc_stem_end_position (me, true)); +} + +MAKE_SCHEME_CALLBACK (Stem, pure_calc_stem_end_position, 3) +SCM +Stem::pure_calc_stem_end_position (SCM smob, + SCM, /* start */ + SCM /* end */) +{ + Grob *me = unsmob_grob (smob); + return scm_from_double (internal_calc_stem_end_position (me, false)); +} +Real +Stem::internal_calc_stem_end_position (Grob *me, bool calc_beam) +{ if (!head_count (me)) - return scm_from_double (0.0); + return 0.0; + + Grob *beam = get_beam (me); + Real ss = Staff_symbol_referencer::staff_space (me); + Direction dir = get_grob_direction (me); - if (Grob *beam = get_beam (me)) + if (beam && calc_beam) { (void) beam->get_property ("quantized-positions"); - return me->get_property ("stem-end-position"); + return robust_scm2double (me->get_property ("length"), 0.0) + + dir * robust_scm2double (me->get_property ("stem-begin-position"), 0.0); } - + vector a; /* WARNING: IN HALF SPACES */ - Real length = robust_scm2double (me->get_property ("length"), 7); - - Direction dir = get_grob_direction (me); - Interval hp = head_positions (me); - Real stem_end = dir ? hp[dir] + dir * length : 0; - - /* TODO: change name to extend-stems to staff/center/'() */ - bool no_extend = to_boolean (me->get_property ("no-stem-extend")); - if (!no_extend && dir * stem_end < 0) - stem_end = 0.0; - - return scm_from_double (stem_end); -} - -/* Length is in half-spaces (or: positions) here. */ -MAKE_SCHEME_CALLBACK (Stem, calc_length, 1) -SCM -Stem::calc_length (SCM smob) -{ - Grob *me = unsmob_grob (smob); - SCM details = me->get_property ("details"); int durlog = duration_log (me); - Real ss = Staff_symbol_referencer::staff_space (me); Real staff_rad = Staff_symbol_referencer::staff_radius (me); Real length = 7; SCM s = ly_assoc_get (ly_symbol2scm ("lengths"), details, SCM_EOL); if (scm_is_pair (s)) length = 2 * scm_to_double (robust_list_ref (durlog - 2, s)); - Direction dir = get_grob_direction (me); - /* Stems in unnatural (forced) direction should be shortened, according to [Roush & Gourlay] */ Interval hp = head_positions (me); @@ -346,7 +427,7 @@ Stem::calc_length (SCM smob) { SCM sshorten = ly_assoc_get (ly_symbol2scm ("stem-shorten"), details, SCM_EOL); SCM scm_shorten = scm_is_pair (sshorten) - ? robust_list_ref (max (duration_log (me) - 2, 0), sshorten) : SCM_EOL; + ? robust_list_ref (max (duration_log (me) - 2, 0), sshorten) : SCM_EOL; Real shorten_property = 2 * robust_scm2double (scm_shorten, 0); /* change in length between full-size and shortened stems is executed gradually. "transition area" = stems between full-sized and fully-shortened. @@ -364,7 +445,7 @@ Stem::calc_length (SCM smob) Shortening of flagged stems begins in the same moment as unflagged ones, but not earlier than on the middle line note. */ - Real which_step = (min (1.0, quarter_stem_length - (2 * staff_rad) - 2.0)) + abs(hp[dir]); + Real which_step = (min (1.0, quarter_stem_length - (2 * staff_rad) - 2.0)) + abs (hp[dir]); Real shorten = min (max (0.0, (shortening_step * which_step)), shorten_property); length -= shorten; @@ -374,7 +455,7 @@ Stem::calc_length (SCM smob) /* Tremolo stuff. */ Grob *t_flag = unsmob_grob (me->get_object ("tremolo-flag")); - if (t_flag && !unsmob_grob (me->get_object ("beam"))) + if (t_flag && (!unsmob_grob (me->get_object ("beam")) || !calc_beam)) { /* Crude hack: add extra space if tremolo flag is there. @@ -382,7 +463,7 @@ Stem::calc_length (SCM smob) (Stem_tremolo::raw_stencil () looks at the beam.) --hwn */ Real minlen = 1.0 - + 2 * Stem_tremolo::vertical_length (t_flag) / ss; + + 2 * Stem_tremolo::vertical_length (t_flag) / ss; /* We don't want to add the whole extent of the flag because the trem and the flag can overlap partly. beam_translation gives a good @@ -401,9 +482,17 @@ Stem::calc_length (SCM smob) } length = max (length, minlen + 1.0); } - - return scm_from_double (length); + + Real stem_end = dir ? hp[dir] + dir * length : 0; + + /* TODO: change name to extend-stems to staff/center/'() */ + bool no_extend = to_boolean (me->get_property ("no-stem-extend")); + if (!no_extend && dir * stem_end < 0) + stem_end = 0.0; + + return stem_end; } + /* The log of the duration (Number of hooks on the flag minus two) */ int Stem::duration_log (Grob *me) @@ -416,14 +505,14 @@ MAKE_SCHEME_CALLBACK (Stem, calc_positioning_done, 1); SCM Stem::calc_positioning_done (SCM smob) { - Grob *me = unsmob_grob (smob); + Grob *me = unsmob_grob (smob); if (!head_count (me)) return SCM_BOOL_T; me->set_property ("positioning-done", SCM_BOOL_T); - + extract_grob_set (me, "note-heads", ro_heads); - vector heads (ro_heads); + vector heads (ro_heads); vector_sort (heads, position_less); Direction dir = get_grob_direction (me); @@ -442,8 +531,8 @@ Stem::calc_positioning_done (SCM smob) bool is_harmonic_centered = false; for (vsize i = 0; i < heads.size (); i++) - is_harmonic_centered = is_harmonic_centered - || heads[i]->get_property ("style") == ly_symbol2scm ("harmonic"); + is_harmonic_centered = is_harmonic_centered + || heads[i]->get_property ("style") == ly_symbol2scm ("harmonic"); is_harmonic_centered = is_harmonic_centered && is_invisible (me); Real w = hed->extent (hed, X_AXIS)[dir]; @@ -452,10 +541,10 @@ Stem::calc_positioning_done (SCM smob) Real amount = w - heads[i]->extent (heads[i], X_AXIS)[dir]; if (is_harmonic_centered) - amount = - hed->extent (hed, X_AXIS).linear_combination (CENTER) - - heads[i]->extent (heads[i], X_AXIS).linear_combination (CENTER); - + amount + = hed->extent (hed, X_AXIS).linear_combination (CENTER) + - heads[i]->extent (heads[i], X_AXIS).linear_combination (CENTER); + heads[i]->translate_axis (amount, X_AXIS); } bool parity = true; @@ -463,54 +552,54 @@ Stem::calc_positioning_done (SCM smob) for (vsize i = 1; i < heads.size (); i++) { Real p = Staff_symbol_referencer::get_position (heads[i]); - Real dy = fabs (lastpos- p); + Real dy = fabs (lastpos - p); /* - dy should always be 0.5, 0.0, 1.0, but provide safety margin - for rounding errors. + dy should always be 0.5, 0.0, 1.0, but provide safety margin + for rounding errors. */ if (dy < 1.1) - { - if (parity) - { - Real ell = heads[i]->extent (heads[i], X_AXIS).length (); + { + if (parity) + { + Real ell = heads[i]->extent (heads[i], X_AXIS).length (); - Direction d = get_grob_direction (me); - /* - Reversed head should be shifted ell-thickness, but this - looks too crowded, so we only shift ell-0.5*thickness. + Direction d = get_grob_direction (me); + /* + Reversed head should be shifted ell-thickness, but this + looks too crowded, so we only shift ell-0.5*thickness. - This leads to assymetry: Normal heads overlap the - stem 100% whereas reversed heads only overlaps the - stem 50% - */ + This leads to assymetry: Normal heads overlap the + stem 100% whereas reversed heads only overlaps the + stem 50% + */ - Real reverse_overlap = 0.5; - heads[i]->translate_axis ((ell - thick * reverse_overlap) * d, - X_AXIS); + Real reverse_overlap = 0.5; + heads[i]->translate_axis ((ell - thick * reverse_overlap) * d, + X_AXIS); - if (is_invisible (me)) - heads[i]->translate_axis (-thick * (2 - reverse_overlap) * d, - X_AXIS); + if (is_invisible (me)) + heads[i]->translate_axis (-thick * (2 - reverse_overlap) * d, + X_AXIS); - /* TODO: + /* TODO: - For some cases we should kern some more: when the - distance between the next or prev note is too large, we'd - get large white gaps, eg. + For some cases we should kern some more: when the + distance between the next or prev note is too large, we'd + get large white gaps, eg. - | + | X| - |X <- kern this. - | - X - - */ - } - parity = !parity; - } + |X <- kern this. + | + X + + */ + } + parity = !parity; + } else - parity = true; + parity = true; lastpos = int (p); } @@ -535,9 +624,9 @@ Stem::calc_direction (SCM smob) SCM dd = me->get_property ("default-direction"); dir = to_dir (dd); if (!dir) - return me->get_property ("neutral-direction"); + return me->get_property ("neutral-direction"); } - + return scm_from_int (dir); } @@ -554,152 +643,86 @@ Stem::calc_default_direction (SCM smob) { int udistance = (int) (UP * hp[UP] - staff_center); int ddistance = (int) (DOWN * hp[DOWN] - staff_center); - + dir = Direction (sign (ddistance - udistance)); } - + return scm_from_int (dir); } - +// note - height property necessary to trigger quantized beam positions +// otherwise, we could just use Grob::stencil_height_proc MAKE_SCHEME_CALLBACK (Stem, height, 1); SCM Stem::height (SCM smob) { Grob *me = unsmob_grob (smob); - if (!is_normal_stem (me)) - return ly_interval2scm (Interval ()); - - Direction dir = get_grob_direction (me); - - Grob *beam = get_beam (me); - if (beam) - { - /* trigger set-stem-lengths. */ - beam->get_property ("quantized-positions"); - } + return ly_interval2scm (internal_height (me, true)); +} - /* - Can't get_stencil (), since that would cache stencils too early. - This causes problems with beams. - */ - Stencil *stencil = unsmob_stencil (print (smob)); - Interval iv = stencil ? stencil->extent (Y_AXIS) : Interval (); +Grob * +Stem::get_reference_head (Grob *me) +{ + return to_boolean (me->get_property ("avoid-note-head")) + ? last_head (me) + : first_head (me); +} + +Real +Stem::beam_end_corrective (Grob *me) +{ + Grob *beam = unsmob_grob (me->get_object ("beam")); + Direction dir = get_grob_direction (me); if (beam) { if (dir == CENTER) - { - programming_error ("no stem direction"); - dir = UP; - } - iv[dir] += dir * Beam::get_beam_thickness (beam) * 0.5; + { + programming_error ("no stem direction"); + dir = UP; + } + return dir * Beam::get_beam_thickness (beam) * 0.5; } - - return ly_interval2scm (iv); + return 0.0; } -Real -Stem::stem_end_position (Grob *me) +Interval +Stem::internal_height (Grob *me, bool calc_beam) { - return robust_scm2double (me->get_property ("stem-end-position"), 0); -} + Grob *beam = get_beam (me); + if (!is_valid_stem (me) && !beam) + return Interval (); -MAKE_SCHEME_CALLBACK (Stem, calc_flag, 1); -SCM -Stem::calc_flag (SCM smob) -{ - Grob *me = unsmob_grob (smob); + Direction dir = get_grob_direction (me); - int log = duration_log (me); - /* - TODO: maybe property stroke-style should take different values, - e.g. "" (i.e. no stroke), "single" and "double" (currently, it's - '() or "grace"). */ - string flag_style; - - SCM flag_style_scm = me->get_property ("flag-style"); - if (scm_is_symbol (flag_style_scm)) - flag_style = ly_symbol2string (flag_style_scm); - - if (flag_style == "no-flag") - return Stencil ().smobbed_copy (); - - bool adjust = true; - - string staffline_offs; - if (flag_style == "mensural") - /* Mensural notation: For notes on staff lines, use different - flags than for notes between staff lines. The idea is that - flags are always vertically aligned with the staff lines, - regardless if the note head is on a staff line or between two - staff lines. In other words, the inner end of a flag always - touches a staff line. - */ + if (beam && calc_beam) { - if (adjust) - { - int p = (int) (rint (stem_end_position (me))); - staffline_offs - = Staff_symbol_referencer::on_line (me, p) ? "0" : "1"; - } - else - staffline_offs = "2"; - } - else - staffline_offs = ""; - - char dir = (get_grob_direction (me) == UP) ? 'u' : 'd'; - string font_char = flag_style - + to_string (dir) + staffline_offs + to_string (log); - Font_metric *fm = Font_interface::get_default_font (me); - Stencil flag = fm->find_by_name ("flags." + font_char); - if (flag.is_empty ()) - me->warning (_f ("flag `%s' not found", font_char)); - - SCM stroke_style_scm = me->get_property ("stroke-style"); - if (scm_is_string (stroke_style_scm)) - { - string stroke_style = ly_scm2string (stroke_style_scm); - if (!stroke_style.empty ()) - { - string font_char = flag_style + to_string (dir) + stroke_style; - Stencil stroke = fm->find_by_name ("flags." + font_char); - if (stroke.is_empty ()) - { - font_char = to_string (dir) + stroke_style; - stroke = fm->find_by_name ("flags." + font_char); - } - if (stroke.is_empty ()) - me->warning (_f ("flag stroke `%s' not found", font_char)); - else - flag.add_stencil (stroke); - } - } + /* trigger set-stem-lengths. */ + (void) beam->get_property ("quantized-positions"); + } - return flag.smobbed_copy (); -} + /* + If there is a beam but no stem, slope calculations depend on this + routine to return where the stem end /would/ be. + */ + if (calc_beam && !beam && !unsmob_stencil (me->get_property ("stencil"))) + return Interval (); + + Real y1 = robust_scm2double ((calc_beam + ? me->get_property ("stem-begin-position") + : me->get_pure_property ("stem-begin-position", 0, INT_MAX)), + 0.0); + + Real y2 = dir * robust_scm2double ((calc_beam + ? me->get_property ("length") + : me->get_pure_property ("length", 0, INT_MAX)), + 0.0) + + y1; + Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5; -Stencil -Stem::flag (Grob *me) -{ - int log = duration_log (me); - if (log < 3 - || unsmob_grob (me->get_object ("beam"))) - return Stencil (); + Interval stem_y = Interval (min (y1, y2), max (y2, y1)) * half_space; - if (!is_normal_stem (me)) - return Stencil (); - - // This get_property call already evaluates the scheme function with - // the grob passed as argument! Thus, we only have to check if a valid - // stencil is returned. - SCM flag_style_scm = me->get_property ("flag"); - if (Stencil *flag = unsmob_stencil (flag_style_scm)) { - return *flag; - } else { - return Stencil (); - } + return stem_y; } MAKE_SCHEME_CALLBACK (Stem, width, 1); @@ -712,17 +735,12 @@ Stem::width (SCM e) if (is_invisible (me)) r.set_empty (); - else if (unsmob_grob (me->get_object ("beam")) - || abs (duration_log (me)) <= 2) + else { r = Interval (-1, 1); r *= thickness (me) / 2; } - else - { - r = Interval (-1, 1) * thickness (me) * 0.5; - r.unite (flag (me).extent (X_AXIS)); - } + return ly_interval2scm (r); } @@ -730,73 +748,95 @@ Real Stem::thickness (Grob *me) { return scm_to_double (me->get_property ("thickness")) - * Staff_symbol_referencer::line_thickness (me); + * Staff_symbol_referencer::line_thickness (me); } -MAKE_SCHEME_CALLBACK (Stem, print, 1); +MAKE_SCHEME_CALLBACK (Stem, calc_stem_begin_position, 1); SCM -Stem::print (SCM smob) +Stem::calc_stem_begin_position (SCM smob) { Grob *me = unsmob_grob (smob); + return scm_from_double (internal_calc_stem_begin_position (me, true)); +} + +MAKE_SCHEME_CALLBACK (Stem, pure_calc_stem_begin_position, 3); +SCM +Stem::pure_calc_stem_begin_position (SCM smob, + SCM, /* start */ + SCM /* end */) +{ + Grob *me = unsmob_grob (smob); + return scm_from_double (internal_calc_stem_begin_position (me, false)); +} + +Real +Stem::internal_calc_stem_begin_position (Grob *me, bool calc_beam) +{ Grob *beam = get_beam (me); - - Stencil mol; + Real ss = Staff_symbol_referencer::staff_space (me); + if (beam && calc_beam) + { + (void) beam->get_property ("quantized-positions"); + return robust_scm2double (me->get_property ("stem-begin-position"), 0.0); + } + Direction d = get_grob_direction (me); + Grob *lh = get_reference_head (me); - Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"), - 0.0); - bool stemlet = stemlet_length > 0.0; + if (!lh) + return 0.0; + 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 * 2 / ss; + } + + return pos; +} + +bool +Stem::is_valid_stem (Grob *me) +{ /* TODO: make the stem start a direction ? This is required to avoid stems passing in tablature chords. */ - Grob *lh - = to_boolean (me->get_property ("avoid-note-head")) - ? last_head (me) - : first_head (me); + Grob *lh = get_reference_head (me); + Grob *beam = unsmob_grob (me->get_object ("beam")); - if (!lh && !stemlet) - return SCM_EOL; + if (!lh && !beam) + return false; - if (!lh && stemlet && !beam) - return SCM_EOL; - - if (lh && robust_scm2int (lh->get_property ("duration-log"), 0) < 1) - return SCM_EOL; + if (lh && robust_scm2int (lh->get_property ("duration-log"), 0) < 1) + return false; if (is_invisible (me)) - return SCM_EOL; + return false; - Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0); - Real y1 = y2; - Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5; + return true; +} - if (lh) - y2 = Staff_symbol_referencer::get_position (lh); - else if (stemlet) - { - Real beam_translation = Beam::get_beam_translation (beam); - Real beam_thickness = Beam::get_beam_thickness (beam); - int beam_count = beam_multiplicity (me).length () + 1; - - y2 -= d - * (0.5 * beam_thickness - + beam_translation * max (0, (beam_count - 1)) - + stemlet_length) / half_space; - } +MAKE_SCHEME_CALLBACK (Stem, print, 1); +SCM +Stem::print (SCM smob) +{ + Grob *me = unsmob_grob (smob); + if (!is_valid_stem (me)) + return SCM_EOL; - Interval stem_y (min (y1, y2), max (y2, y1)); + Direction dir = get_grob_direction (me); + Real y1 = robust_scm2double (me->get_property ("stem-begin-position"), 0.0); + Real y2 = dir * robust_scm2double (me->get_property ("length"), 0.0) + 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); + Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5; - y_attach = head_height.linear_combination (y_attach); - stem_y[Direction (-d)] += d * y_attach / half_space; - } + Interval stem_y = Interval (min (y1, y2), max (y2, y1)) * half_space; + + stem_y[dir] -= beam_end_corrective (me); // URG Real stem_width = thickness (me); @@ -804,35 +844,15 @@ Stem::print (SCM smob) = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); Box b = Box (Interval (-stem_width / 2, stem_width / 2), - Interval (stem_y[DOWN] * half_space, stem_y[UP] * half_space)); + stem_y); + Stencil mol; Stencil ss = Lookup::round_filled_box (b, blot); mol.add_stencil (ss); - mol.add_stencil (get_translated_flag (me)); - return mol.smobbed_copy (); } -Stencil -Stem::get_translated_flag (Grob *me) -{ - Stencil fl = flag (me); - if (!fl.is_empty ()) - { - Direction d = get_grob_direction (me); - Real blot - = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); - Real stem_width = thickness (me); - Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5; - Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0); - fl.translate_axis (y2 * half_space - d * blot / 2, Y_AXIS); - fl.translate_axis (stem_width / 2, X_AXIS); - } - return fl; -} - - /* move the stem to right of the notehead if it is up. */ @@ -850,27 +870,29 @@ Stem::offset_callback (SCM smob) return scm_from_double (r); } - if (Grob *f = first_head (me)) { Interval head_wid = f->extent (f, X_AXIS); Real attach = 0.0; if (is_invisible (me)) - attach = 0.0; + attach = 0.0; else - attach = Note_head::stem_attachment_coordinate (f, X_AXIS); + attach = Note_head::stem_attachment_coordinate (f, X_AXIS); Direction d = get_grob_direction (me); Real real_attach = head_wid.linear_combination (d * attach); Real r = real_attach; /* If not centered: correct for stem thickness. */ - if (attach) - { - Real rule_thick = thickness (me); - r += -d * rule_thick * 0.5; - } + string style = robust_symbol2string (f->get_property ("style"), "default"); + if (attach && style != "mensural" + && style != "neomensural" + && style != "petrucci") + { + Real rule_thick = thickness (me); + r += -d * rule_thick * 0.5; + } return scm_from_double (r); } @@ -890,7 +912,7 @@ Stem::get_stem_info (Grob *me) { Stem_info si; si.dir_ = get_grob_direction (me); - + SCM scm_info = me->get_property ("stem-info"); si.ideal_y_ = scm_to_double (scm_car (scm_info)); si.shortest_y_ = scm_to_double (scm_cadr (scm_info)); @@ -917,7 +939,7 @@ Stem::calc_stem_info (SCM smob) { (void) beam->get_property ("beaming"); } - + Real beam_translation = Beam::get_beam_translation (beam); Real beam_thickness = Beam::get_beam_thickness (beam); int beam_count = Beam::get_direction_beam_count (beam, my_dir); @@ -927,27 +949,27 @@ Stem::calc_stem_info (SCM smob) /* Simple standard stem length */ SCM details = me->get_property ("details"); SCM lengths = ly_assoc_get (ly_symbol2scm ("beamed-lengths"), details, SCM_EOL); - + Real ideal_length = (scm_is_pair (lengths) ? (scm_to_double (robust_list_ref (beam_count - 1, lengths)) - * staff_space - * length_fraction - /* - stem only extends to center of beam - */ - - 0.5 * beam_thickness) + * staff_space + * length_fraction + /* + stem only extends to center of beam + */ + - 0.5 * beam_thickness) : 0.0); /* Condition: sane minimum free stem length (chord to beams) */ lengths = ly_assoc_get (ly_symbol2scm ("beamed-minimum-free-lengths"), - details, SCM_EOL); + details, SCM_EOL); Real ideal_minimum_free = (scm_is_pair (lengths) ? (scm_to_double (robust_list_ref (beam_count - 1, lengths)) - * staff_space - * length_fraction) + * staff_space + * length_fraction) : 0.0); Real height_of_my_trem = 0.0; @@ -955,12 +977,11 @@ Stem::calc_stem_info (SCM smob) if (trem) { height_of_my_trem - = Stem_tremolo::vertical_length (trem) - /* hack a bit of space around the trem. */ - + beam_translation; + = Stem_tremolo::vertical_length (trem) + /* hack a bit of space around the trem. */ + + beam_translation; } - /* UGH It seems that also for ideal minimum length, we must use the maximum beam count (for this direction): @@ -969,21 +990,21 @@ Stem::calc_stem_info (SCM smob) must be horizontal. */ Real height_of_my_beams = beam_thickness - + (beam_count - 1) * beam_translation; + + (beam_count - 1) * beam_translation; Real ideal_minimum_length = ideal_minimum_free - + height_of_my_beams - + height_of_my_trem - /* stem only extends to center of beam */ - - 0.5 * beam_thickness; + + height_of_my_beams + + height_of_my_trem + /* stem only extends to center of beam */ + - 0.5 * beam_thickness; ideal_length = max (ideal_length, ideal_minimum_length); /* Convert to Y position, calculate for dir == UP */ Real note_start = /* staff positions */ - head_positions (me)[my_dir] * 0.5 - * my_dir * staff_space; + head_positions (me)[my_dir] * 0.5 + * my_dir * staff_space; Real ideal_y = note_start + ideal_length; /* Conditions for Y position */ @@ -1002,40 +1023,40 @@ Stem::calc_stem_info (SCM smob) Also, not for knees. Seems to be a good thing. */ bool no_extend = to_boolean (me->get_property ("no-stem-extend")); - bool is_knee = to_boolean (beam->get_property ("knee")); + bool is_knee = Beam::is_knee (beam); if (!no_extend && !is_knee) { /* Highest beam of (UP) beam must never be lower than middle - staffline */ + staffline */ ideal_y = max (ideal_y, 0.0); /* Lowest beam of (UP) beam must never be lower than second staffline */ ideal_y = max (ideal_y, (-staff_space - - beam_thickness + height_of_my_beams)); + - beam_thickness + height_of_my_beams)); } ideal_y -= robust_scm2double (beam->get_property ("shorten"), 0); SCM bemfl = ly_assoc_get (ly_symbol2scm ("beamed-extreme-minimum-free-lengths"), - details, SCM_EOL); - + details, SCM_EOL); + Real minimum_free = (scm_is_pair (bemfl) ? (scm_to_double (robust_list_ref (beam_count - 1, bemfl)) - * staff_space - * length_fraction) + * staff_space + * length_fraction) : 0.0); Real minimum_length = max (minimum_free, height_of_my_trem) - + height_of_my_beams - /* stem only extends to center of beam */ - - 0.5 * beam_thickness; + + height_of_my_beams + /* stem only extends to center of beam */ + - 0.5 * beam_thickness; ideal_y *= my_dir; Real minimum_y = note_start + minimum_length; Real shortest_y = minimum_y * my_dir; return scm_list_2 (scm_from_double (ideal_y), - scm_from_double (shortest_y)); + scm_from_double (shortest_y)); } Slice @@ -1062,61 +1083,67 @@ Stem::calc_cross_staff (SCM smob) return scm_from_bool (is_cross_staff (unsmob_grob (smob))); } +Grob * +Stem::flag (Grob *me) +{ + return unsmob_grob (me->get_object ("flag")); +} + /* FIXME: Too many properties */ ADD_INTERFACE (Stem, - "The stem represents the graphical stem. In addition, it" - " internally connects note heads, beams, and tremolos. Rests" - " and whole notes have invisible stems.\n" - "\n" - "The following properties may be set in the @code{details}" - " list.\n" - "\n" - "@table @code\n" - "@item beamed-lengths\n" - "List of stem lengths given beam multiplicity.\n" - "@item beamed-minimum-free-lengths\n" - "List of normal minimum free stem lengths (chord to beams)" - " given beam multiplicity.\n" - "@item beamed-extreme-minimum-free-lengths\n" - "List of extreme minimum free stem lengths (chord to beams)" - " given beam multiplicity.\n" - "@item lengths\n" - "Default stem lengths. The list gives a length for each" - " flag count.\n" - "@item stem-shorten\n" - "How much a stem in a forced direction should be shortened." - " The list gives an amount depending on the number of flags" - " and beams.\n" - "@end table\n", - - /* properties */ - "avoid-note-head " - "beam " - "beaming " - "beamlet-default-length " - "beamlet-max-length-proportion " - "default-direction " - "details " - "direction " - "duration-log " - "flag " - "flag-style " - "french-beaming " - "length " - "length-fraction " - "max-beam-connect " - "neutral-direction " - "no-stem-extend " - "note-heads " - "positioning-done " - "rests " - "stem-end-position " - "stem-info " - "stemlet-length " - "stroke-style " - "thickness " - "tremolo-flag " - ); + "The stem represents the graphical stem. In addition, it" + " internally connects note heads, beams, and tremolos. Rests" + " and whole notes have invisible stems.\n" + "\n" + "The following properties may be set in the @code{details}" + " list.\n" + "\n" + "@table @code\n" + "@item beamed-lengths\n" + "List of stem lengths given beam multiplicity.\n" + "@item beamed-minimum-free-lengths\n" + "List of normal minimum free stem lengths (chord to beams)" + " given beam multiplicity.\n" + "@item beamed-extreme-minimum-free-lengths\n" + "List of extreme minimum free stem lengths (chord to beams)" + " given beam multiplicity.\n" + "@item lengths\n" + "Default stem lengths. The list gives a length for each" + " flag count.\n" + "@item stem-shorten\n" + "How much a stem in a forced direction should be shortened." + " The list gives an amount depending on the number of flags" + " and beams.\n" + "@end table\n", + + /* properties */ + "avoid-note-head " + "beam " + "beaming " + "beamlet-default-length " + "beamlet-max-length-proportion " + "default-direction " + "details " + "direction " + "duration-log " + "flag " + "french-beaming " + "length " + "length-fraction " + "max-beam-connect " + "melody-spanner " + "neutral-direction " + "no-stem-extend " + "note-heads " + "positioning-done " + "rests " + "stem-begin-position " + "stem-info " + "stemlet-length " + "thickness " + "tremolo-flag " + "tuplet-start " + ); /****************************************************************/ diff --git a/lily/stencil-expression.cc b/lily/stencil-expression.cc index d5926c6205..750d088e16 100644 --- a/lily/stencil-expression.cc +++ b/lily/stencil-expression.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,16 +25,16 @@ void register_stencil_head (SCM symbol) { if (!heads) heads = scm_permanent_object (scm_cons (SCM_EOL, SCM_EOL)); - + scm_set_object_property_x (symbol, ly_symbol2scm ("stencil-head?"), SCM_BOOL_T); - scm_set_cdr_x (heads, scm_cons (symbol, scm_cdr (heads))); + scm_set_cdr_x (heads, scm_cons (symbol, scm_cdr (heads))); } bool is_stencil_head (SCM symbol) { return scm_object_property (symbol, ly_symbol2scm ("stencil-head?")) - == SCM_BOOL_T; + == SCM_BOOL_T; } SCM diff --git a/lily/stencil-interpret.cc b/lily/stencil-interpret.cc index 4f8c6bbc8b..8214af5dcc 100644 --- a/lily/stencil-interpret.cc +++ b/lily/stencil-interpret.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,100 +21,110 @@ void interpret_stencil_expression (SCM expr, - void (*func) (void *, SCM), - void *func_arg, - Offset o) + void (*func) (void *, SCM), + void *func_arg, + Offset o) { while (1) { if (!scm_is_pair (expr)) - return; + return; SCM head = scm_car (expr); if (head == ly_symbol2scm ("delay-stencil-evaluation")) - { - interpret_stencil_expression (scm_force (scm_cadr (expr)), func, func_arg, o); - return; - } + { + interpret_stencil_expression (scm_force (scm_cadr (expr)), func, func_arg, o); + return; + } if (head == ly_symbol2scm ("footnote")) return; if (head == ly_symbol2scm ("translate-stencil")) - { - o += ly_scm2offset (scm_cadr (expr)); - expr = scm_caddr (expr); - } + { + o += ly_scm2offset (scm_cadr (expr)); + expr = scm_caddr (expr); + } else if (head == ly_symbol2scm ("combine-stencil")) - { + { - for (SCM x = scm_cdr (expr); scm_is_pair (x); x = scm_cdr (x)) - interpret_stencil_expression (scm_car (x), func, func_arg, o); - return; - } + for (SCM x = scm_cdr (expr); scm_is_pair (x); x = scm_cdr (x)) + interpret_stencil_expression (scm_car (x), func, func_arg, o); + return; + } else if (head == ly_symbol2scm ("grob-cause")) - { - SCM grob = scm_cadr (expr); - - (*func) (func_arg, scm_list_3 (head, - ly_quote_scm (ly_offset2scm (o)), grob)); - interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); - (*func) (func_arg, scm_list_1 (ly_symbol2scm ("no-origin"))); - return; - } + { + SCM grob = scm_cadr (expr); + + (*func) (func_arg, scm_list_3 (head, + ly_quote_scm (ly_offset2scm (o)), grob)); + interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); + (*func) (func_arg, scm_list_1 (ly_symbol2scm ("no-origin"))); + return; + } else if (head == ly_symbol2scm ("color")) - { - SCM color = scm_cadr (expr); - SCM r = scm_car (color); - SCM g = scm_cadr (color); - SCM b = scm_caddr (color); - - (*func) (func_arg, scm_list_4 (ly_symbol2scm ("setcolor"), r, g, b)); - interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); - (*func) (func_arg, scm_list_1 (ly_symbol2scm ("resetcolor"))); - - return; - } + { + SCM color = scm_cadr (expr); + SCM r = scm_car (color); + SCM g = scm_cadr (color); + SCM b = scm_caddr (color); + + (*func) (func_arg, scm_list_4 (ly_symbol2scm ("setcolor"), r, g, b)); + interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); + (*func) (func_arg, scm_list_1 (ly_symbol2scm ("resetcolor"))); + + return; + } + else if (head == ly_symbol2scm ("id")) + { + SCM id = scm_cadr (expr); + + (*func) (func_arg, scm_list_2 (ly_symbol2scm ("start-enclosing-id-node"), id)); + interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); + (*func) (func_arg, scm_list_1 (ly_symbol2scm ("end-enclosing-id-node"))); + + return; + } else if (head == ly_symbol2scm ("rotate-stencil")) - { - SCM args = scm_cadr (expr); - SCM angle = scm_car (args); - Offset tmp = o + robust_scm2offset (scm_cadr (args), Offset (0.0, 0.0)); + { + SCM args = scm_cadr (expr); + SCM angle = scm_car (args); + Offset tmp = o + robust_scm2offset (scm_cadr (args), Offset (0.0, 0.0)); - SCM offset = ly_offset2scm (tmp); - SCM x = scm_car (offset); - SCM y = scm_cdr (offset); + SCM offset = ly_offset2scm (tmp); + SCM x = scm_car (offset); + SCM y = scm_cdr (offset); - (*func) (func_arg, scm_list_4 (ly_symbol2scm ("setrotation"), angle, x, y)); - interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); - (*func) (func_arg, scm_list_4 (ly_symbol2scm ("resetrotation"), angle, x, y)); + (*func) (func_arg, scm_list_4 (ly_symbol2scm ("setrotation"), angle, x, y)); + interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); + (*func) (func_arg, scm_list_4 (ly_symbol2scm ("resetrotation"), angle, x, y)); - return; - } + return; + } else if (head == ly_symbol2scm ("scale-stencil")) - { - SCM args = scm_cadr (expr); - SCM x_scale = scm_car (args); - SCM y_scale = scm_cadr (args); - Offset unscaled = o.scale (Offset (1 / scm_to_double (x_scale), - 1 / scm_to_double (y_scale))); - - (*func) (func_arg, scm_list_3 (ly_symbol2scm ("setscale"), x_scale, - y_scale)); - interpret_stencil_expression (scm_caddr (expr), func, func_arg, - unscaled); - (*func) (func_arg, scm_list_1 (ly_symbol2scm ("resetscale"))); - - return; - } + { + SCM args = scm_cadr (expr); + SCM x_scale = scm_car (args); + SCM y_scale = scm_cadr (args); + Offset unscaled = o.scale (Offset (1 / scm_to_double (x_scale), + 1 / scm_to_double (y_scale))); + + (*func) (func_arg, scm_list_3 (ly_symbol2scm ("setscale"), x_scale, + y_scale)); + interpret_stencil_expression (scm_caddr (expr), func, func_arg, + unscaled); + (*func) (func_arg, scm_list_1 (ly_symbol2scm ("resetscale"))); + + return; + } else - { - (*func) (func_arg, - scm_list_4 (ly_symbol2scm ("placebox"), - scm_from_double (o[X_AXIS]), - scm_from_double (o[Y_AXIS]), - expr)); - return; - } + { + (*func) (func_arg, + scm_list_4 (ly_symbol2scm ("placebox"), + scm_from_double (o[X_AXIS]), + scm_from_double (o[Y_AXIS]), + expr)); + return; + } } } @@ -134,13 +144,13 @@ find_font_function (void *fs, SCM x) SCM what = scm_caddr (args); if (scm_is_pair (what)) - { - SCM head = scm_car (what); - if (ly_symbol2scm ("text") == head) - me->fonts_ = scm_cons (scm_cadr (what), me->fonts_); - else if (head == ly_symbol2scm ("char")) - me->fonts_ = scm_cons (scm_cadr (what), me->fonts_); - } + { + SCM head = scm_car (what); + if (ly_symbol2scm ("text") == head) + me->fonts_ = scm_cons (scm_cadr (what), me->fonts_); + else if (head == ly_symbol2scm ("char")) + me->fonts_ = scm_cons (scm_cadr (what), me->fonts_); + } } } @@ -152,7 +162,7 @@ find_expression_fonts (SCM expr) fl.fonts_ = SCM_EOL; interpret_stencil_expression (expr, &find_font_function, - (void *) & fl, Offset (0, 0)); + (void *) & fl, Offset (0, 0)); return fl.fonts_; } diff --git a/lily/stencil-scheme.cc b/lily/stencil-scheme.cc index 0e7f0cd8c7..7e346ca7f8 100644 --- a/lily/stencil-scheme.cc +++ b/lily/stencil-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ along with LilyPond. If not, see . */ - #include "font-metric.hh" #include "libc-extension.hh" #include "lookup.hh" @@ -28,9 +27,9 @@ */ LY_DEFINE (ly_stencil_translate_axis, "ly:stencil-translate-axis", - 3, 0, 0, (SCM stil, SCM amount, SCM axis), - "Return a copy of @var{stil} but translated by @var{amount}" - " in @var{axis} direction.") + 3, 0, 0, (SCM stil, SCM amount, SCM axis), + "Return a copy of @var{stil} but translated by @var{amount}" + " in @var{axis} direction.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -46,9 +45,9 @@ LY_DEFINE (ly_stencil_translate_axis, "ly:stencil-translate-axis", } LY_DEFINE (ly_stencil_translate, "ly:stencil-translate", - 2, 0, 0, (SCM stil, SCM offset), - "Return a @var{stil}, but translated by @var{offset}" - " (a pair of numbers).") + 2, 0, 0, (SCM stil, SCM offset), + "Return a @var{stil}, but translated by @var{offset}" + " (a pair of numbers).") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -62,8 +61,8 @@ LY_DEFINE (ly_stencil_translate, "ly:stencil-translate", } LY_DEFINE (ly_stencil_expr, "ly:stencil-expr", - 1, 0, 0, (SCM stil), - "Return the expression of @var{stil}.") + 1, 0, 0, (SCM stil), + "Return the expression of @var{stil}.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -71,10 +70,10 @@ LY_DEFINE (ly_stencil_expr, "ly:stencil-expr", } LY_DEFINE (ly_stencil_extent, "ly:stencil-extent", - 2, 0, 0, (SCM stil, SCM axis), - "Return a pair of numbers signifying the extent of @var{stil} in" - " @var{axis} direction (@code{0} or @code{1} for x and" - " y@tie{}axis, respectively).") + 2, 0, 0, (SCM stil, SCM axis), + "Return a pair of numbers signifying the extent of @var{stil} in" + " @var{axis} direction (@code{0} or @code{1} for x and" + " y@tie{}axis, respectively).") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -84,8 +83,8 @@ LY_DEFINE (ly_stencil_extent, "ly:stencil-extent", } LY_DEFINE (ly_stencil_empty_p, "ly:stencil-empty?", - 1, 0, 0, (SCM stil), - "Return whether @var{stil} is empty.") + 1, 0, 0, (SCM stil), + "Return whether @var{stil} is empty.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -93,28 +92,25 @@ LY_DEFINE (ly_stencil_empty_p, "ly:stencil-empty?", } LY_DEFINE (ly_stencil_combine_at_edge, "ly:stencil-combine-at-edge", - 4, 2, 0, (SCM first, SCM axis, SCM direction, - SCM second, - SCM padding, - SCM minimum), - "Construct a stencil by putting @var{second} next to @var{first}." - " @var{axis} can be 0 (x-axis) or@tie{}1 (y-axis)." - " @var{direction} can be -1 (left or down) or@tie{}1 (right or" - " up). The stencils are juxtaposed with @var{padding} as extra" - " space. If this puts the reference points closer than" - " @var{minimum}, they are moved by the latter amount." - " @var{first} and @var{second} may also be @code{'()} or" - " @code{#f}.") + 4, 1, 0, (SCM first, SCM axis, SCM direction, + SCM second, + SCM padding), + "Construct a stencil by putting @var{second} next to @var{first}." + " @var{axis} can be 0 (x-axis) or@tie{}1 (y-axis)." + " @var{direction} can be -1 (left or down) or@tie{}1 (right or" + " up). The stencils are juxtaposed with @var{padding} as extra" + " space. @var{first} and @var{second} may also be @code{'()} or" + " @code{#f}.") { Stencil *s1 = unsmob_stencil (first); Stencil *s2 = unsmob_stencil (second); Stencil result; SCM_ASSERT_TYPE (s1 || first == SCM_BOOL_F || first == SCM_EOL, - first, SCM_ARG1, __FUNCTION__, "Stencil, #f or ()"); + first, SCM_ARG1, __FUNCTION__, "Stencil, #f or ()"); SCM_ASSERT_TYPE (s2 || second == SCM_BOOL_F || second == SCM_EOL, - second, SCM_ARG4, __FUNCTION__, "Stencil, #f or ()"); - LY_ASSERT_TYPE (is_axis, axis, 2); + second, SCM_ARG4, __FUNCTION__, "Stencil, #f or ()"); + LY_ASSERT_TYPE (is_axis, axis, 2); LY_ASSERT_TYPE (is_direction, direction, 3); Real p = 0.0; @@ -123,26 +119,20 @@ LY_DEFINE (ly_stencil_combine_at_edge, "ly:stencil-combine-at-edge", LY_ASSERT_TYPE (scm_is_number, padding, 5); p = scm_to_double (padding); } - Real m = 0.0; - if (minimum != SCM_UNDEFINED) - { - LY_ASSERT_TYPE (scm_is_number, minimum, 6); - m = scm_to_double (minimum); - } if (s1) result = *s1; if (s2) result.add_at_edge (Axis (scm_to_int (axis)), - Direction (scm_to_int (direction)), *s2, p); + Direction (scm_to_int (direction)), *s2, p); return result.smobbed_copy (); } LY_DEFINE (ly_stencil_add, "ly:stencil-add", - 0, 0, 1, (SCM args), - "Combine stencils. Takes any number of arguments.") + 0, 0, 1, (SCM args), + "Combine stencils. Takes any number of arguments.") { #define FUNC_NAME __FUNCTION__ SCM_VALIDATE_REST_ARGUMENT (args); @@ -156,7 +146,7 @@ LY_DEFINE (ly_stencil_add, "ly:stencil-add", { Stencil *s = unsmob_stencil (scm_car (args)); if (!s) - SCM_ASSERT_TYPE (s, scm_car (args), SCM_ARGn, __FUNCTION__, "Stencil"); + SCM_ASSERT_TYPE (s, scm_car (args), SCM_ARGn, __FUNCTION__, "Stencil"); extent.unite (s->extent_box ()); *tail = scm_cons (s->expr (), SCM_EOL); @@ -169,35 +159,34 @@ LY_DEFINE (ly_stencil_add, "ly:stencil-add", } LY_DEFINE (ly_make_stencil, "ly:make-stencil", - 1, 2, 0, (SCM expr, SCM xext, SCM yext), - "Stencils are device independent output expressions." - " They carry two pieces of information:\n" - "\n" - "@enumerate\n" - "@item\n" - "A specification of how to print this object." - " This specification is processed by the output backends," - " for example @file{scm/output-ps.scm}.\n" - "\n" - "@item\n" - "The vertical and horizontal extents of the object, given as" - " pairs. If an extent is unspecified (or if you use" - " @code{(1000 . -1000)} as its value), it is taken to be empty.\n" - "@end enumerate\n") + 1, 2, 0, (SCM expr, SCM xext, SCM yext), + "Stencils are device independent output expressions." + " They carry two pieces of information:\n" + "\n" + "@enumerate\n" + "@item\n" + "A specification of how to print this object." + " This specification is processed by the output backends," + " for example @file{scm/output-ps.scm}.\n" + "\n" + "@item\n" + "The vertical and horizontal extents of the object, given as" + " pairs. If an extent is unspecified (or if you use" + " @code{(1000 . -1000)} as its value), it is taken to be empty.\n" + "@end enumerate\n") { SCM_ASSERT_TYPE (!scm_is_pair (expr) - || is_stencil_head (scm_car (expr)), - expr, SCM_ARG1, __FUNCTION__, "registered stencil expression"); - + || is_stencil_head (scm_car (expr)), + expr, SCM_ARG1, __FUNCTION__, "registered stencil expression"); - Interval x; + Interval x; if (xext != SCM_UNDEFINED) { LY_ASSERT_TYPE (is_number_pair, xext, 2); x = ly_scm2interval (xext); } - Interval y; + Interval y; if (yext != SCM_UNDEFINED) { LY_ASSERT_TYPE (is_number_pair, yext, 3); @@ -210,10 +199,10 @@ LY_DEFINE (ly_make_stencil, "ly:make-stencil", } LY_DEFINE (ly_stencil_aligned_to, "ly:stencil-aligned-to", - 3, 0, 0, (SCM stil, SCM axis, SCM dir), - "Align @var{stil} using its own extents. @var{dir} is a number." - " @code{-1} and @code{1} are left and right, respectively." - " Other values are interpolated (so @code{0} means the center).") + 3, 0, 0, (SCM stil, SCM axis, SCM dir), + "Align @var{stil} using its own extents. @var{dir} is a number." + " @w{@code{-1}} and @code{1} are left and right, respectively." + " Other values are interpolated (so @code{0} means the center).") { LY_ASSERT_SMOB (Stencil, stil, 1); LY_ASSERT_TYPE (is_axis, axis, 2); @@ -222,14 +211,14 @@ LY_DEFINE (ly_stencil_aligned_to, "ly:stencil-aligned-to", Stencil target = *unsmob_stencil (stil); target.align_to ((Axis)scm_to_int (axis), - scm_to_double (dir)); + scm_to_double (dir)); return target.smobbed_copy (); } LY_DEFINE (ly_stencil_fonts, "ly:stencil-fonts", - 1, 0, 0, (SCM s), - "Analyze @var{s}, and return a list of fonts used" - " in@tie{}@var{s}.") + 1, 0, 0, (SCM s), + "Analyze @var{s}, and return a list of fonts used" + " in@tie{}@var{s}.") { LY_ASSERT_SMOB (Stencil, s, 1); Stencil *stil = unsmob_stencil (s); @@ -237,15 +226,15 @@ LY_DEFINE (ly_stencil_fonts, "ly:stencil-fonts", } LY_DEFINE (ly_stencil_in_color, "ly:stencil-in-color", - 4, 0, 0, (SCM stc, SCM r, SCM g, SCM b), - "Put @var{stc} in a different color.") + 4, 0, 0, (SCM stc, SCM r, SCM g, SCM b), + "Put @var{stc} in a different color.") { LY_ASSERT_SMOB (Stencil, stc, 1); Stencil *stil = unsmob_stencil (stc); return Stencil (stil->extent_box (), - scm_list_3 (ly_symbol2scm ("color"), - scm_list_3 (r, g, b), - stil->expr ())).smobbed_copy (); + scm_list_3 (ly_symbol2scm ("color"), + scm_list_3 (r, g, b), + stil->expr ())).smobbed_copy (); } struct Stencil_interpret_arguments @@ -261,9 +250,9 @@ void stencil_interpret_in_scm (void *p, SCM expr) } LY_DEFINE (ly_interpret_stencil_expression, "ly:interpret-stencil-expression", - 4, 0, 0, (SCM expr, SCM func, SCM arg1, SCM offset), - "Parse @var{expr}, feed bits to @var{func} with first arg" - " @var{arg1} having offset @var{offset}.") + 4, 0, 0, (SCM expr, SCM func, SCM arg1, SCM offset), + "Parse @var{expr}, feed bits to @var{func} with first arg" + " @var{arg1} having offset @var{offset}.") { LY_ASSERT_TYPE (ly_is_procedure, func, 2); @@ -278,12 +267,12 @@ LY_DEFINE (ly_interpret_stencil_expression, "ly:interpret-stencil-expression", } LY_DEFINE (ly_bracket, "ly:bracket", - 4, 0, 0, - (SCM a, SCM iv, SCM t, SCM p), - "Make a bracket in direction@tie{}@var{a}. The extent of the" - " bracket is given by @var{iv}. The wings protrude by an amount" - " of@tie{}@var{p}, which may be negative. The thickness is given" - " by@tie{}@var{t}.") + 4, 0, 0, + (SCM a, SCM iv, SCM t, SCM p), + "Make a bracket in direction@tie{}@var{a}. The extent of the" + " bracket is given by @var{iv}. The wings protrude by an amount" + " of@tie{}@var{p}, which may be negative. The thickness is given" + " by@tie{}@var{t}.") { LY_ASSERT_TYPE (is_axis, a, 1); LY_ASSERT_TYPE (is_number_pair, iv, 2); @@ -291,16 +280,16 @@ LY_DEFINE (ly_bracket, "ly:bracket", LY_ASSERT_TYPE (scm_is_number, p, 4); return Lookup::bracket ((Axis)scm_to_int (a), ly_scm2interval (iv), - scm_to_double (t), - scm_to_double (p), - 0.95 * scm_to_double (t)).smobbed_copy (); + scm_to_double (t), + scm_to_double (p), + 0.95 * scm_to_double (t)).smobbed_copy (); } LY_DEFINE (ly_stencil_rotate, "ly:stencil-rotate", - 4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y), - "Return a stencil @var{stil} rotated @var{angle} degrees around" - " the relative offset (@var{x}, @var{y}). E.g. an offset of" - " (-1, 1) will rotate the stencil around the left upper corner.") + 4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y), + "Return a stencil @var{stil} rotated @var{angle} degrees around" + " the relative offset (@var{x}, @var{y}). E.g., an offset of" + " (-1, 1) will rotate the stencil around the left upper corner.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -318,9 +307,9 @@ LY_DEFINE (ly_stencil_rotate, "ly:stencil-rotate", } LY_DEFINE (ly_stencil_rotate_absolute, "ly:stencil-rotate-absolute", - 4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y), - "Return a stencil @var{stil} rotated @var{angle} degrees around" - " point (@var{x}, @var{y}), given in absolute coordinates.") + 4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y), + "Return a stencil @var{stil} rotated @var{angle} degrees around" + " point (@var{x}, @var{y}), given in absolute coordinates.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -338,25 +327,25 @@ LY_DEFINE (ly_stencil_rotate_absolute, "ly:stencil-rotate-absolute", } LY_DEFINE (ly_round_filled_box, "ly:round-filled-box", - 3, 0, 0, - (SCM xext, SCM yext, SCM blot), - "Make a @code{Stencil} object that prints a black box of" - " dimensions @var{xext}, @var{yext} and roundness @var{blot}.") + 3, 0, 0, + (SCM xext, SCM yext, SCM blot), + "Make a @code{Stencil} object that prints a black box of" + " dimensions @var{xext}, @var{yext} and roundness @var{blot}.") { LY_ASSERT_TYPE (is_number_pair, xext, 1); LY_ASSERT_TYPE (is_number_pair, yext, 2); LY_ASSERT_TYPE (scm_is_number, blot, 3); return Lookup::round_filled_box (Box (ly_scm2interval (xext), ly_scm2interval (yext)), - scm_to_double (blot)).smobbed_copy (); + scm_to_double (blot)).smobbed_copy (); } LY_DEFINE (ly_round_filled_polygon, "ly:round-filled-polygon", - 2, 0, 0, - (SCM points, SCM blot), - "Make a @code{Stencil} object that prints a black polygon with" - " corners at the points defined by @var{points} (list of coordinate" - " pairs) and roundness @var{blot}.") + 2, 0, 0, + (SCM points, SCM blot), + "Make a @code{Stencil} object that prints a black polygon with" + " corners at the points defined by @var{points} (list of coordinate" + " pairs) and roundness @var{blot}.") { SCM_ASSERT_TYPE (scm_ilength (points) > 0, points, SCM_ARG1, __FUNCTION__, "list of coordinate pairs"); LY_ASSERT_TYPE (scm_is_number, blot, 2); @@ -364,19 +353,22 @@ LY_DEFINE (ly_round_filled_polygon, "ly:round-filled-polygon", for (SCM p = points; scm_is_pair (p); p = scm_cdr (p)) { SCM scm_pt = scm_car (p); - if (scm_is_pair (scm_pt)) { - pts.push_back (ly_scm2offset (scm_pt)); - } else { - // TODO: Print out warning - } + if (scm_is_pair (scm_pt)) + { + pts.push_back (ly_scm2offset (scm_pt)); + } + else + { + // TODO: Print out warning + } } return Lookup::round_filled_polygon (pts, scm_to_double (blot)).smobbed_copy (); } LY_DEFINE (ly_register_stencil_expression, "ly:register-stencil-expression", - 1, 0, 0, - (SCM symbol), - "Add @var{symbol} as head of a stencil expression.") + 1, 0, 0, + (SCM symbol), + "Add @var{symbol} as head of a stencil expression.") { LY_ASSERT_TYPE (ly_is_symbol, symbol, 1); register_stencil_head (symbol); @@ -384,17 +376,17 @@ LY_DEFINE (ly_register_stencil_expression, "ly:register-stencil-expression", } LY_DEFINE (ly_all_stencil_expressions, "ly:all-stencil-expressions", - 0, 0, 0, - (), - "Return all symbols recognized as stencil expressions.") + 0, 0, 0, + (), + "Return all symbols recognized as stencil expressions.") { return all_stencil_heads (); } LY_DEFINE (ly_stencil_scale, "ly:stencil-scale", - 3, 0, 0, (SCM stil, SCM x, SCM y), - "Scale @var{stil} using the horizontal and vertical scaling" - " factors @var{x} and @var{y}.") + 3, 0, 0, (SCM stil, SCM x, SCM y), + "Scale @var{stil} using the horizontal and vertical scaling" + " factors @var{x} and @var{y}.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); diff --git a/lily/stencil.cc b/lily/stencil.cc index 6a094d2890..a488c59813 100644 --- a/lily/stencil.cc +++ b/lily/stencil.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -68,8 +68,8 @@ bool Stencil::is_empty () const { return (expr_ == SCM_EOL - || dim_[X_AXIS].is_empty () - || dim_[Y_AXIS].is_empty ()); + || dim_[X_AXIS].is_empty () + || dim_[Y_AXIS].is_empty ()); } SCM @@ -87,7 +87,7 @@ Stencil::extent_box () const void Stencil::rotate (Real a, Offset off) { - rotate_degrees (a * 180/M_PI, off); + rotate_degrees (a * 180 / M_PI, off); } /* @@ -112,9 +112,9 @@ Stencil::rotate_degrees_absolute (Real a, Offset absolute_off) */ expr_ = scm_list_n (ly_symbol2scm ("rotate-stencil"), - scm_list_2 (scm_from_double (a), - scm_cons (scm_from_double (x), scm_from_double (y))), - expr_, SCM_UNDEFINED); + scm_list_2 (scm_from_double (a), + scm_cons (scm_from_double (x), scm_from_double (y))), + expr_, SCM_UNDEFINED); /* * Calculate the new bounding box @@ -123,10 +123,10 @@ Stencil::rotate_degrees_absolute (Real a, Offset absolute_off) shifted_box.translate (-absolute_off); vector pts; - pts.push_back (Offset (shifted_box.x ().at(LEFT), shifted_box.y ().at(DOWN))); - pts.push_back (Offset (shifted_box.x ().at(RIGHT), shifted_box.y ().at(DOWN))); - pts.push_back (Offset (shifted_box.x ().at(RIGHT), shifted_box.y ().at(UP))); - pts.push_back (Offset (shifted_box.x ().at(LEFT), shifted_box.y ().at(UP))); + pts.push_back (Offset (shifted_box.x ().at (LEFT), shifted_box.y ().at (DOWN))); + pts.push_back (Offset (shifted_box.x ().at (RIGHT), shifted_box.y ().at (DOWN))); + pts.push_back (Offset (shifted_box.x ().at (RIGHT), shifted_box.y ().at (UP))); + pts.push_back (Offset (shifted_box.x ().at (LEFT), shifted_box.y ().at (UP))); const Offset rot = complex_exp (Offset (0, a * M_PI / 180.0)); dim_.set_empty (); @@ -158,24 +158,24 @@ Stencil::translate (Offset o) while (a < NO_AXES) { if (isinf (o[a]) - || isnan (o[a]) - - // ugh, hardcoded. - || fabs (o[a]) > 1e6) - { - programming_error (String_convert::form_string ("Improbable offset for stencil: %f staff space", o[a]) - + "\n" - + "Setting to zero."); - o[a] = 0.0; - if (strict_infinity_checking) - scm_misc_error (__FUNCTION__, "Improbable offset.", SCM_EOL); - } + || isnan (o[a]) + + // ugh, hardcoded. + || fabs (o[a]) > 1e6) + { + programming_error (String_convert::form_string ("Improbable offset for stencil: %f staff space", o[a]) + + "\n" + + "Setting to zero."); + o[a] = 0.0; + if (strict_infinity_checking) + scm_misc_error (__FUNCTION__, "Improbable offset.", SCM_EOL); + } incr (a); } expr_ = scm_list_n (ly_symbol2scm ("translate-stencil"), - ly_offset2scm (o), - expr_, SCM_UNDEFINED); + ly_offset2scm (o), + expr_, SCM_UNDEFINED); if (!is_empty ()) dim_.translate (o); } @@ -192,9 +192,9 @@ void Stencil::scale (Real x, Real y) { expr_ = scm_list_3 (ly_symbol2scm ("scale-stencil"), - scm_list_2 (scm_from_double (x), - scm_from_double (y)), - expr_); + scm_list_2 (scm_from_double (x), + scm_from_double (y)), + expr_); dim_[X_AXIS] *= x; dim_[Y_AXIS] *= y; } @@ -247,7 +247,7 @@ Stencil::add_at_edge (Axis a, Direction d, Stencil const &s, Real padding) his_extent = i[-d]; Real offset = (my_extent.is_empty () ? 0.0 : my_extent[d] - his_extent) - + d * padding; + + d * padding; Stencil toadd (s); toadd.translate_axis (offset, a); @@ -258,11 +258,11 @@ Stencil Stencil::in_color (Real r, Real g, Real b) const { Stencil new_stencil (extent_box (), - scm_list_3 (ly_symbol2scm ("color"), - scm_list_3 (scm_from_double (r), - scm_from_double (g), - scm_from_double (b)), - expr ())); + scm_list_3 (ly_symbol2scm ("color"), + scm_list_3 (scm_from_double (r), + scm_from_double (g), + scm_from_double (b)), + expr ())); return new_stencil; } diff --git a/lily/stream-event-scheme.cc b/lily/stream-event-scheme.cc index 99f8a3c832..8a83f499e2 100644 --- a/lily/stream-event-scheme.cc +++ b/lily/stream-event-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Erik Sandberg + Copyright (C) 2006--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,22 +20,22 @@ #include "stream-event.hh" LY_DEFINE (ly_stream_event_p, "ly:stream-event?", - 1, 0, 0, (SCM obj), - "Is @code{@var{obj}} a @code{Stream_event} object?") + 1, 0, 0, (SCM obj), + "Is @code{@var{obj}} a @code{Stream_event} object?") { return scm_from_bool (unsmob_stream_event (obj)); } LY_DEFINE (ly_make_stream_event, "ly:make-stream-event", - 1, 1, 0, (SCM cl, SCM proplist), - "Create a stream event of class @var{cl} with the given" - " mutable property list.") + 1, 1, 0, (SCM cl, SCM proplist), + "Create a stream event of class @var{cl} with the given" + " mutable property list.") { LY_ASSERT_TYPE (ly_is_symbol, cl, 1); /* should be scm_list_p, but scm_list_p is expensive. */ LY_ASSERT_TYPE (scm_is_pair, proplist, 2); - + if (proplist == SCM_UNDEFINED) proplist = SCM_EOL; @@ -43,10 +43,10 @@ LY_DEFINE (ly_make_stream_event, "ly:make-stream-event", return e->unprotect (); } -LY_DEFINE (ly_event_property, "ly:event-property", +LY_DEFINE (ly_event_property, "ly:event-property", 2, 0, 0, (SCM sev, SCM sym), - "Get the property @var{sym} of stream event @var{mus}." - " If @var{sym} is undefined, return @code{'()}.") + "Get the property @var{sym} of stream event @var{mus}." + " If @var{sym} is undefined, return @code{'()}.") { LY_ASSERT_TYPE (unsmob_stream_event, sev, 1); LY_ASSERT_TYPE (ly_is_symbol, sym, 2); @@ -62,13 +62,13 @@ LY_DEFINE (ly_event_set_property_x, "ly:event-set-property!", { LY_ASSERT_TYPE (unsmob_stream_event, ev, 1); LY_ASSERT_TYPE (ly_is_symbol, sym, 2); - + return ly_prob_set_property_x (ev, sym, val); } LY_DEFINE (ly_event_deep_copy, "ly:event-deep-copy", - 1, 0, 0, (SCM m), - "Copy @var{m} and all sub expressions of@tie{}@var{m}.") + 1, 0, 0, (SCM m), + "Copy @var{m} and all sub expressions of@tie{}@var{m}.") { SCM copy = m; if (Stream_event *ev = unsmob_stream_event (m)) @@ -78,7 +78,7 @@ LY_DEFINE (ly_event_deep_copy, "ly:event-deep-copy", } else if (scm_is_pair (m)) copy = scm_cons (ly_event_deep_copy (scm_car (m)), - ly_event_deep_copy (scm_cdr (m))); + ly_event_deep_copy (scm_cdr (m))); return copy; } diff --git a/lily/stream-event.cc b/lily/stream-event.cc index 840695301a..5ce03ec08d 100644 --- a/lily/stream-event.cc +++ b/lily/stream-event.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Erik Sandberg + Copyright (C) 2005--2012 Erik Sandberg LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,8 @@ #include "ly-smobs.icc" #include "context.hh" #include "input.hh" -#include "input.hh" +#include "music.hh" +#include "pitch.hh" /* TODO: Rename Stream_event -> Event */ @@ -31,16 +32,15 @@ Stream_event::Stream_event () { } -Stream_event::Stream_event (SCM event_class, SCM mutable_props) +Stream_event::Stream_event (SCM event_class, SCM immutable_props) : Prob (ly_symbol2scm ("Stream_event"), - scm_list_1 (scm_cons (ly_symbol2scm ("class"), event_class))) + scm_acons (ly_symbol2scm ("class"), event_class, immutable_props)) { - mutable_property_alist_ = mutable_props; } Stream_event::Stream_event (SCM class_name, Input *origin) : Prob (ly_symbol2scm ("Stream_event"), - scm_list_1 (scm_cons (ly_symbol2scm ("class"), class_name))) + scm_list_1 (scm_cons (ly_symbol2scm ("class"), class_name))) { if (origin) set_spot (origin); @@ -69,20 +69,41 @@ bool Stream_event::internal_in_event_class (SCM class_name) { SCM cl = get_property ("class"); - cl = scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), cl); return scm_c_memq (class_name, cl) != SCM_BOOL_F; } MAKE_SCHEME_CALLBACK (Stream_event, undump, 1); MAKE_SCHEME_CALLBACK (Stream_event, dump, 1); +void +Stream_event::make_transposable () +{ + /* This is in preparation for transposing stuff + that may be defined in the immutable part */ + + for (SCM s = immutable_property_alist_; scm_is_pair (s); s = scm_cdr (s)) + { + SCM entry = scm_car (s); + SCM prop = scm_car (entry); + SCM val = scm_cdr (entry); + + if ((unsmob_pitch (val) + || (prop == ly_symbol2scm ("element") && unsmob_music (val)) + || (prop == ly_symbol2scm ("elements") && scm_is_pair (val)) + || (prop == ly_symbol2scm ("pitch-alist") && scm_is_pair (val))) + && scm_is_false (scm_assq (prop, mutable_property_alist_))) + mutable_property_alist_ + = scm_acons (prop, ly_music_deep_copy (val), mutable_property_alist_); + } +} + SCM Stream_event::dump (SCM self) { Stream_event *ev = unsmob_stream_event (self); // Reversed alists look prettier. return scm_cons (scm_reverse (ev->immutable_property_alist_), - scm_reverse (ev->mutable_property_alist_)); + scm_reverse (ev->mutable_property_alist_)); } SCM @@ -97,5 +118,5 @@ Stream_event::undump (SCM data) Stream_event * unsmob_stream_event (SCM m) { - return dynamic_cast (unsmob_prob (m)); + return dynamic_cast (unsmob_prob (m)); } diff --git a/lily/sustain-pedal.cc b/lily/sustain-pedal.cc index 74ac54930a..98b4e2df8a 100644 --- a/lily/sustain-pedal.cc +++ b/lily/sustain-pedal.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ #include "stencil.hh" #include "font-interface.hh" -// update comment --hwn +// update comment --hwn /* Urg. This is almost text @@ -61,15 +61,15 @@ Sustain_pedal::print (SCM smob) { string idx ("pedal."); if (text.substr (i, 3) == "Ped") - { - idx += "Ped"; - i += 2; - } + { + idx += "Ped"; + i += 2; + } else - idx += string (&text.c_str ()[i], 1); + idx += string (&text.c_str ()[i], 1); Stencil m = Font_interface::get_default_font (e)->find_by_name (idx); if (!m.is_empty ()) - mol.add_at_edge (X_AXIS, RIGHT, m, 0); + mol.add_at_edge (X_AXIS, RIGHT, m, 0); } return mol.smobbed_copy (); diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index a0bc503925..b8770feebb 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ public: struct Bracket_nesting_group : public Bracket_nesting_node { Spanner *delimiter_; - vector children_; + vector children_; SCM symbol_; void from_list (SCM); @@ -53,7 +53,6 @@ struct Bracket_nesting_group : public Bracket_nesting_node Bracket_nesting_group (); }; - struct Bracket_nesting_staff : public Bracket_nesting_node { Grob *staff_; @@ -62,7 +61,6 @@ struct Bracket_nesting_staff : public Bracket_nesting_node virtual bool add_staff (Grob *); }; - Bracket_nesting_group::Bracket_nesting_group () { symbol_ = SCM_EOL; @@ -85,9 +83,9 @@ Bracket_nesting_group::create_grobs (Engraver *engraver, SCM default_type) { SCM type = scm_is_symbol (symbol_) ? symbol_ : default_type; delimiter_ = engraver->make_spanner (ly_symbol2string (type).c_str (), - SCM_EOL); + SCM_EOL); - for (vsize i = 0 ; i < children_.size (); i++) + for (vsize i = 0; i < children_.size (); i++) children_[i]->create_grobs (engraver, default_type); } @@ -95,7 +93,7 @@ void Bracket_nesting_group::add_support (Grob *g) { Side_position_interface::add_support (g, delimiter_); - for (vsize i = 0 ; i < children_.size (); i++) + for (vsize i = 0; i < children_.size (); i++) children_[i]->add_support (g); } @@ -108,7 +106,7 @@ void Bracket_nesting_group::set_bound (Direction d, Grob *g) { delimiter_->set_bound (d, g); - for (vsize i = 0 ; i < children_.size (); i++) + for (vsize i = 0; i < children_.size (); i++) children_[i]->set_bound (d, g); } @@ -118,11 +116,10 @@ Bracket_nesting_group::set_nesting_support (Grob *parent) if (parent) Side_position_interface::add_support (delimiter_, parent); - for (vsize i = 0 ; i < children_.size (); i++) + for (vsize i = 0; i < children_.size (); i++) children_[i]->set_nesting_support (delimiter_); } - void Bracket_nesting_group::from_list (SCM x) { @@ -130,18 +127,18 @@ Bracket_nesting_group::from_list (SCM x) { SCM entry = scm_car (s); if (scm_is_pair (entry)) - { - Bracket_nesting_group *node = new Bracket_nesting_group; - node->from_list (entry); - children_.push_back (node); - } + { + Bracket_nesting_group *node = new Bracket_nesting_group; + node->from_list (entry); + children_.push_back (node); + } else if (entry == ly_symbol2scm ("SystemStartBrace") - || entry == ly_symbol2scm ("SystemStartBracket") - || entry == ly_symbol2scm ("SystemStartBar") - || entry == ly_symbol2scm ("SystemStartSquare")) - symbol_ = entry; + || entry == ly_symbol2scm ("SystemStartBracket") + || entry == ly_symbol2scm ("SystemStartBar") + || entry == ly_symbol2scm ("SystemStartSquare")) + symbol_ = entry; else - children_.push_back (new Bracket_nesting_staff (0)); + children_.push_back (new Bracket_nesting_staff (0)); } } @@ -151,18 +148,15 @@ Bracket_nesting_group::add_staff (Grob *grob) for (vsize i = 0; i < children_.size (); i++) { if (children_[i]->add_staff (grob)) - { - Pointer_group_interface::add_grob (delimiter_, - ly_symbol2scm ("elements"), grob); - return true; - } + { + Pointer_group_interface::add_grob (delimiter_, + ly_symbol2scm ("elements"), grob); + return true; + } } return false; } - - - /****************/ class System_start_delimiter_engraver : public Engraver @@ -197,7 +191,7 @@ System_start_delimiter_engraver::process_music () nesting_->from_list (hierarchy); nesting_->create_grobs (this, delimiter_name); nesting_->set_bound (LEFT, - unsmob_grob (get_property ("currentCommandColumn"))); + unsmob_grob (get_property ("currentCommandColumn"))); } } @@ -207,7 +201,7 @@ System_start_delimiter_engraver::finalize () if (nesting_) { nesting_->set_bound (RIGHT, - unsmob_grob (get_property ("currentCommandColumn"))); + unsmob_grob (get_property ("currentCommandColumn"))); nesting_->set_nesting_support (0); delete nesting_; @@ -239,23 +233,23 @@ ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol); ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter); ADD_TRANSLATOR (System_start_delimiter_engraver, - /* doc */ - "Create a system start delimiter (i.e., a" - " @code{SystemStartBar}, @code{SystemStartBrace}," - " @code{SystemStartBracket} or @code{SystemStartSquare}" - " spanner).", - - /* create */ - "SystemStartSquare " - "SystemStartBrace " - "SystemStartBracket " - "SystemStartBar ", - - /* read */ - "systemStartDelimiter " - "systemStartDelimiterHierarchy " - "currentCommandColumn ", - - /* write */ - "" - ); + /* doc */ + "Create a system start delimiter (i.e., a" + " @code{SystemStartBar}, @code{SystemStartBrace}," + " @code{SystemStartBracket} or @code{SystemStartSquare}" + " spanner).", + + /* create */ + "SystemStartSquare " + "SystemStartBrace " + "SystemStartBracket " + "SystemStartBar ", + + /* read */ + "systemStartDelimiter " + "systemStartDelimiterHierarchy " + "currentCommandColumn ", + + /* write */ + "" + ); diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 3f671e3316..d4b523c06c 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,25 +36,23 @@ System_start_delimiter::staff_bracket (Grob *me, Real height) Font_metric *fm = Font_interface::get_default_font (me); Drul_array tips (fm->find_by_name ("brackettips.down"), - fm->find_by_name ("brackettips.up")); + fm->find_by_name ("brackettips.up")); Real thickness = robust_scm2double (me->get_property ("thickness"), 0.25); Real overlap = 0.1 * thickness; Box box (Interval (0, thickness), - Interval (-1, 1) - * (height / 2 + overlap)); - + Interval (-1, 1) + * (height / 2 + overlap)); + Stencil bracket = Lookup::filled_box (box); - Direction d = DOWN; - do + for (DOWN_and_UP (d)) bracket.add_at_edge (Y_AXIS, d, tips[d], -overlap); - while (flip (&d) != DOWN); bracket = Stencil (box, bracket.expr ()); bracket.translate_axis (-0.8, X_AXIS); - + return bracket; } @@ -63,18 +61,18 @@ System_start_delimiter::line_bracket (Grob *me, Real height) { Real thick = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")) - * robust_scm2double (me->get_property ("thickness"), 1); + * robust_scm2double (me->get_property ("thickness"), 1); Real w = 0.8; - + Stencil tip1 = Line_interface::make_line (thick, - Offset (0, -height/2), - Offset (w, -height/2)); + Offset (0, -height / 2), + Offset (w, -height / 2)); Stencil tip2 = Line_interface::make_line (thick, - Offset (0, height/2), - Offset (w, height/2)); + Offset (0, height / 2), + Offset (w, height / 2)); Stencil vline = Line_interface::make_line (thick, - Offset (0, -height/2), - Offset (0, height/2)); + Offset (0, -height / 2), + Offset (0, height / 2)); vline.add_stencil (tip1); vline.add_stencil (tip2); @@ -88,7 +86,7 @@ System_start_delimiter::simple_bar (Grob *me, Real h) Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real w = lt * robust_scm2double (me->get_property ("thickness"), 1); return Lookup::round_filled_box (Box (Interval (0, w), Interval (-h / 2, h / 2)), - lt); + lt); } MAKE_SCHEME_CALLBACK (System_start_delimiter, print, 1); @@ -100,27 +98,31 @@ 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--;) { Spanner *sp = dynamic_cast (elts[i]); if (sp - && sp->get_bound (LEFT) == me->get_bound (LEFT)) - { - Interval dims = sp->extent (common, Y_AXIS); - if (!dims.is_empty ()) - { - non_empty_count ++; - ext.unite (dims); - } - } + && sp->get_bound (LEFT) == me->get_bound (LEFT)) + { + Interval dims = sp->extent (common, Y_AXIS); + if (!dims.is_empty ()) + { + 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; @@ -151,7 +153,7 @@ System_start_delimiter::staff_brace (Grob *me, Real y) fm = Font_interface::get_default_font (me); int - lo = 0; + lo = 0; int hi = max ((int) fm->count () - 1, 2); /* do a binary search for each Y, not very efficient, but passable? */ @@ -161,48 +163,48 @@ System_start_delimiter::staff_brace (Grob *me, Real y) int cmp = (lo + hi) / 2; b = fm->get_indexed_char_dimensions (cmp); if (b[Y_AXIS].is_empty () || b[Y_AXIS].length () > y) - hi = cmp; + hi = cmp; else - lo = cmp; + lo = cmp; } while (hi - lo > 1); Stencil stil (fm->find_by_name ("brace" + to_string (lo))); - stil.translate_axis (-b[X_AXIS].length ()/2, X_AXIS); + stil.translate_axis (-b[X_AXIS].length () / 2, X_AXIS); stil.translate_axis (-0.2, X_AXIS); - + return stil; } ADD_INTERFACE (System_start_delimiter, - "The brace, bracket or bar in front of the system. The" - " following values for @code{style} are recognized:\n" - "\n" - "@table @code\n" - "@item bracket\n" - "A thick bracket, normally used to group similar" - " instruments in a score. Default for @code{StaffGroup}." - " @code{SystemStartBracket} uses this style.\n" - "@item brace\n" - "A @q{piano style} brace normally used for an instrument" - " that uses two staves. The default style for" - " @code{GrandStaff}. @code{SystemStartBrace} uses this" - " style.\n" - "@item bar-line\n" - "A simple line between the staves in a score. Default" - " for staves enclosed in @code{<<} and @code{>>}." - " @code{SystemStartBar} uses this style.\n" - "@item line-bracket\n" - "A simple square, normally used for subgrouping" - " instruments in a score. @code{SystemStartSquare} uses" - " this style.\n" - "@end table\n" - "\n" - "See also @file{input/regression/system-start-nesting.ly}.", - - /* properties */ - "collapse-height " - "style " - "thickness " - ); + "The brace, bracket or bar in front of the system. The" + " following values for @code{style} are recognized:\n" + "\n" + "@table @code\n" + "@item bracket\n" + "A thick bracket, normally used to group similar" + " instruments in a score. Default for @code{StaffGroup}." + " @code{SystemStartBracket} uses this style.\n" + "@item brace\n" + "A @q{piano style} brace normally used for an instrument" + " that uses two staves. The default style for" + " @code{GrandStaff}. @code{SystemStartBrace} uses this" + " style.\n" + "@item bar-line\n" + "A simple line between the staves in a score. Default" + " for staves enclosed in @code{<<} and @code{>>}." + " @code{SystemStartBar} uses this style.\n" + "@item line-bracket\n" + "A simple square, normally used for subgrouping" + " instruments in a score. @code{SystemStartSquare} uses" + " this style.\n" + "@end table\n" + "\n" + "See also @file{input/regression/system-start-nesting.ly}.", + + /* properties */ + "collapse-height " + "style " + "thickness " + ); diff --git a/lily/system.cc b/lily/system.cc index 1cd582de75..be3c9ec192 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,6 +38,7 @@ #include "staff-symbol-referencer.hh" #include "text-interface.hh" #include "warn.hh" +#include "unpure-pure-container.hh" System::System (System const &src) : Spanner (src) @@ -45,7 +46,6 @@ System::System (System const &src) all_elements_ = 0; pscore_ = 0; rank_ = 0; - checked_footnotes_ = false; init_elements (); } @@ -54,7 +54,6 @@ System::System (SCM s) { all_elements_ = 0; rank_ = 0; - checked_footnotes_ = false; init_elements (); } @@ -110,10 +109,10 @@ System::derived_mark () const Grob **ptr = &all_elements_->array_reference ()[0]; Grob **end = ptr + all_elements_->size (); while (ptr < end) - { - scm_gc_mark ((*ptr)->self_scm ()); - ptr++; - } + { + scm_gc_mark ((*ptr)->self_scm ()); + ptr++; + } } if (pscore_) @@ -136,20 +135,20 @@ System::do_break_substitution_and_fixup_refpoints () { Grob *g = all_elements_->grob (i); if (g->internal_has_interface (ly_symbol2scm ("only-prebreak-interface"))) - { - /* - Kill no longer needed grobs. - */ - Item *it = dynamic_cast (g); - if (it && Item::is_non_musical (it)) - { - it->find_prebroken_piece (LEFT)->suicide (); - it->find_prebroken_piece (RIGHT)->suicide (); - } - g->suicide (); - } + { + /* + Kill no longer needed grobs. + */ + Item *it = dynamic_cast (g); + if (it && Item::is_non_musical (it)) + { + it->find_prebroken_piece (LEFT)->suicide (); + it->find_prebroken_piece (RIGHT)->suicide (); + } + g->suicide (); + } else if (g->is_live ()) - g->do_break_processing (); + g->do_break_processing (); } /* @@ -162,11 +161,11 @@ System::do_break_substitution_and_fixup_refpoints () extract_grob_set (se, "all-elements", all_elts); for (vsize j = 0; j < all_elts.size (); j++) - { - Grob *g = all_elts[j]; - g->fixup_refpoint (); - } - + { + Grob *g = all_elts[j]; + g->fixup_refpoint (); + } + count += all_elts.size (); } @@ -189,16 +188,16 @@ System::do_break_substitution_and_fixup_refpoints () { System *child = dynamic_cast (broken_intos_[i]); child->all_elements_->remove_duplicates (); + for (vsize j = 0; j < child->all_elements_->size (); j++) - { - Grob *g = child->all_elements_->grob (j); + { + Grob *g = child->all_elements_->grob (j); - (void) g->get_property ("after-line-breaking"); - } + (void) g->get_property ("after-line-breaking"); + } } - if (be_verbose_global) - message (_f ("Element count %d", count + element_count ()) + "\n"); + debug_output (_f ("Element count %d", count + element_count ()) + "\n"); } SCM @@ -207,7 +206,7 @@ System::get_broken_system_grobs () SCM ret = SCM_EOL; for (vsize i = 0; i < broken_intos_.size (); i++) ret = scm_cons (broken_intos_[i]->self_scm (), ret); - return scm_reverse (ret); + return scm_reverse_x (ret, SCM_EOL); } SCM @@ -216,80 +215,109 @@ System::get_paper_systems () SCM lines = scm_c_make_vector (broken_intos_.size (), SCM_EOL); for (vsize i = 0; i < broken_intos_.size (); i++) { - if (be_verbose_global) - progress_indication ("["); + debug_output ("[", false); System *system = dynamic_cast (broken_intos_[i]); scm_vector_set_x (lines, scm_from_int (i), - system->get_paper_system ()); + system->get_paper_system ()); - if (be_verbose_global) - progress_indication (to_string (i) + "]"); + debug_output (to_string (i) + "]", false); } return lines; } -void -System::populate_footnote_grob_vector () -{ - extract_grob_set (this, "all-elements", all_elts); - for (vsize i = 0; i < all_elts.size (); i++) - if (all_elts[i]->internal_has_interface (ly_symbol2scm ("footnote-interface"))) - footnote_grobs_.push_back (all_elts[i]); - - sort (footnote_grobs_.begin (), footnote_grobs_.end (), Grob::less); - checked_footnotes_ = true; -} - -void -System::get_footnote_grobs_in_range (vector &out, vsize start, vsize end) +vector +System::get_footnote_grobs_in_range (vsize start, vsize end) { - if (!checked_footnotes_) - populate_footnote_grob_vector (); - - for (vsize i = 0; i < footnote_grobs_.size (); i++) + vector out; + extract_grob_set (this, "footnotes-before-line-breaking", footnote_grobs); + for (vsize i = 0; i < footnote_grobs.size (); i++) { - int pos = footnote_grobs_[i]->spanned_rank_interval ()[LEFT]; + Grob *at_bat = footnote_grobs[i]; + int pos = at_bat->spanned_rank_interval ()[LEFT]; bool end_of_line_visible = true; - if (Spanner *s = dynamic_cast(footnote_grobs_[i])) + if (Spanner *s = dynamic_cast(at_bat)) { - Direction spanner_placement = robust_scm2dir (s->get_property ("spanner-placement"), LEFT); + Direction spanner_placement = robust_scm2dir (s->get_property ("spanner-placement"), LEFT); if (spanner_placement == CENTER) spanner_placement = LEFT; pos = s->spanned_rank_interval ()[spanner_placement]; + if (s->original ()) + { + Spanner *orig = dynamic_cast(s->original ()); + at_bat = spanner_placement == LEFT ? orig->broken_intos_[0] : orig->broken_intos_.back (); + pos = at_bat->spanned_rank_interval ()[RIGHT]; + } } - - if (Item *item = dynamic_cast(footnote_grobs_[i])) + + if (Item *item = dynamic_cast(at_bat)) { + /* + We use this to weed out grobs that fall at the end + of the line when we want grobs at the beginning. + */ + end_of_line_visible = item->break_status_dir () == LEFT; + if (!Item::break_visible (item)) continue; // safeguard to bring down the column rank so that end of line footnotes show up on the correct line - end_of_line_visible = (LEFT == item->break_status_dir ()); + if (pos == int (start) && item->break_status_dir () != RIGHT) + continue; + if (pos == int (end) && item->break_status_dir () != LEFT) + continue; + if (pos != int (end) && pos != int (start) && item->break_status_dir () != CENTER) + continue; } if (pos < int (start)) continue; if (pos > int (end)) - break; + continue; if (pos == int (start) && end_of_line_visible) continue; if (pos == int (end) && !end_of_line_visible) continue; - if (!footnote_grobs_[i]->is_live ()) + if (!at_bat->is_live ()) + continue; + /* + TODO + Sometimes, there are duplicate entries in the all_elements_ + list. In a separate patch, this practice should be squashed + so that the check below can be eliminated. + */ + if (find (out.begin (), out.end (), at_bat) != out.end ()) continue; - out.push_back (footnote_grobs_[i]); + out.push_back (at_bat); } + return out; +} + +vector +System::get_footnote_heights_in_range (vsize start, vsize end) +{ + return internal_get_note_heights_in_range (start, end, true); +} + +vector +System::get_in_note_heights_in_range (vsize start, vsize end) +{ + return internal_get_note_heights_in_range (start, end, false); } -vector -System::get_footnotes_in_range (vsize start, vsize end) +vector +System::internal_get_note_heights_in_range (vsize start, vsize end, bool foot) { - vector footnote_grobs; - get_footnote_grobs_in_range (footnote_grobs, start, end); - vector out; + vector footnote_grobs = get_footnote_grobs_in_range (start, end); + vector out; + + for (vsize i = footnote_grobs.size (); i--;) + if (foot + ? !to_boolean (footnote_grobs[i]->get_property ("footnote")) + : to_boolean (footnote_grobs[i]->get_property ("footnote"))) + footnote_grobs.erase (footnote_grobs.begin () + i); for (vsize i = 0; i < footnote_grobs.size (); i++) { @@ -305,37 +333,75 @@ System::get_footnotes_in_range (vsize start, vsize end) props, footnote_markup); Stencil *footnote_stencil = unsmob_stencil (footnote_stl); - out.push_back (footnote_stencil); + out.push_back (footnote_stencil->extent (Y_AXIS).length ()); } return out; } -Stencil -System::make_footnote_stencil (Real padding) +vsize +System::num_footnotes () +{ + extract_grob_set (this, "footnotes-after-line-breaking", footnote_grobs); + return footnote_grobs.size (); +} + +bool +grob_2D_less (Grob *g1, Grob *g2) { - Stencil mol; + int sri[] = {0, 0}; + Grob *gs[] = {g1, g2}; - for (vsize i = 0; i < footnote_grobs_.size (); i++) + for (int i = 0; i < 2; i++) { - SCM footnote_markup = footnote_grobs_[i]->get_property ("footnote-text"); - if (Spanner *orig = dynamic_cast(footnote_grobs_[i])) - if (orig->is_broken ()) - footnote_markup = orig->broken_intos_[0]->get_property ("footnote-text"); + sri[i] = gs[i]->spanned_rank_interval ()[LEFT]; + if (Spanner *s = dynamic_cast (gs[i])) + { + if (s->broken_intos_.size ()) + s = (scm_to_int (s->broken_intos_[0]->get_property ("spanner-placement")) == LEFT + ? s->broken_intos_[0] + : s->broken_intos_.back ()); + gs[i] = s; + if (robust_scm2double (s->get_property ("X-offset"), 0.0) > 0) + sri[i] = s->spanned_rank_interval ()[RIGHT]; + } + } - if (!Text_interface::is_markup (footnote_markup)) - continue; + if (sri[0] == sri[1]) + return Grob::vertical_less (gs[0], gs[1]); - SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"), - pscore_->layout ()->self_scm ()); + return sri[0] < sri[1]; +} - SCM footnote_stl = Text_interface::interpret_markup (pscore_->layout ()->self_scm (), - props, footnote_markup); +MAKE_SCHEME_CALLBACK (System, footnotes_before_line_breaking, 1); +SCM +System::footnotes_before_line_breaking (SCM smob) +{ + Grob *me = unsmob_grob (smob); + vector footnotes; + SCM grobs_scm = Grob_array::make_array (); + extract_grob_set (me, "all-elements", elts); + for (vsize i = 0; i < elts.size (); i++) + if (elts[i]->internal_has_interface (ly_symbol2scm ("footnote-interface"))) + footnotes.push_back (elts[i]); - mol.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (footnote_stl), padding); - } + unsmob_grob_array (grobs_scm)->set_array (footnotes); + return grobs_scm; +} + +MAKE_SCHEME_CALLBACK (System, footnotes_after_line_breaking, 1); +SCM +System::footnotes_after_line_breaking (SCM smob) +{ + Spanner *sys_span = unsmob_spanner (smob); + System *sys = dynamic_cast (sys_span); + Interval_t sri = sys->spanned_rank_interval (); + vector footnote_grobs = sys->get_footnote_grobs_in_range (sri[LEFT], sri[RIGHT]); + vector_sort (footnote_grobs, grob_2D_less); - return mol; + SCM grobs_scm = Grob_array::make_array (); + unsmob_grob_array (grobs_scm)->set_array (footnote_grobs); + return grobs_scm; } void @@ -354,25 +420,23 @@ System::break_into_pieces (vector const &breaking) Interval iv (pure_height (this, st, end)); system->set_property ("pure-Y-extent", ly_interval2scm (iv)); - get_footnote_grobs_in_range (system->footnote_grobs_, st, end); - system->set_bound (LEFT, c[0]); system->set_bound (RIGHT, c.back ()); SCM system_labels = SCM_EOL; for (vsize j = 0; j < c.size (); j++) - { - c[j]->translate_axis (breaking[i].config_[j], X_AXIS); - dynamic_cast (c[j])->set_system (system); - /* collect the column labels */ - collect_labels (c[j], &system_labels); - } + { + c[j]->translate_axis (breaking[i].config_[j], X_AXIS); + dynamic_cast (c[j])->set_system (system); + /* collect the column labels */ + collect_labels (c[j], &system_labels); + } /* - Collect labels from any loose columns too: theses will be set on - an empty bar line or a column which is otherwise unused mid-line + Collect labels from any loose columns too: theses will be set on + an empty bar line or a column which is otherwise unused mid-line */ vector loose (breaking[i].loose_cols_); for (vsize j = 0; j < loose.size (); j++) - collect_labels (loose[j], &system_labels); + collect_labels (loose[j], &system_labels); system->set_property ("labels", system_labels); @@ -413,8 +477,7 @@ System::pre_processing () for (vsize i = 0; i < all_elements_->size (); i++) all_elements_->grob (i)->discretionary_processing (); - if (be_verbose_global) - message (_f ("Grob count %d", element_count ())); + debug_output (_f ("Grob count %d", element_count ())); /* order is significant: broken grobs are added to the end of the @@ -470,8 +533,8 @@ struct Layer_entry }; bool -operator< (Layer_entry const &a, - Layer_entry const &b) +operator < (Layer_entry const &a, + Layer_entry const &b) { return a.layer_ < b.layer_; } @@ -501,18 +564,18 @@ System::get_paper_system () Stencil st = g->get_print_stencil (); if (st.expr () == SCM_EOL) - continue; + continue; Offset o; for (int a = X_AXIS; a < NO_AXES; a++) - o[Axis (a)] = g->relative_coordinate (this, Axis (a)); + o[Axis (a)] = g->relative_coordinate (this, Axis (a)); Offset extra = robust_scm2offset (g->get_property ("extra-offset"), - Offset (0, 0)) - * Staff_symbol_referencer::staff_space (g); + Offset (0, 0)) + * Staff_symbol_referencer::staff_space (g); /* Must copy the stencil, for we cannot change the stencil - cached in G. */ + cached in G. */ st.translate (o + extra); @@ -526,20 +589,20 @@ System::get_paper_system () Interval x (extent (this, X_AXIS)); Interval y (extent (this, Y_AXIS)); Stencil sys_stencil (Box (x, y), - scm_cons (ly_symbol2scm ("combine-stencil"), - exprs)); + scm_cons (ly_symbol2scm ("combine-stencil"), + exprs)); if (debug_skylines) { Skyline_pair *skylines = Skyline_pair::unsmob (get_property ("vertical-skylines")); if (skylines) - { - Stencil up - = Lookup::points_to_line_stencil (0.1, (*skylines)[UP].to_points (X_AXIS)); - Stencil down - = Lookup::points_to_line_stencil (0.1, (*skylines)[DOWN].to_points (X_AXIS)); - sys_stencil.add_stencil (up.in_color (255, 0, 0)); - sys_stencil.add_stencil (down.in_color (0, 255, 0)); - } + { + Stencil up + = Lookup::points_to_line_stencil (0.1, (*skylines)[UP].to_points (X_AXIS)); + Stencil down + = Lookup::points_to_line_stencil (0.1, (*skylines)[DOWN].to_points (X_AXIS)); + sys_stencil.add_stencil (up.in_color (255, 0, 0)); + sys_stencil.add_stencil (down.in_color (0, 255, 0)); + } } Grob *left_bound = this->get_bound (LEFT); @@ -555,15 +618,18 @@ System::get_paper_system () pl->set_property ("page-break-penalty", right_bound->get_property ("page-break-penalty")); pl->set_property ("page-turn-penalty", right_bound->get_property ("page-turn-penalty")); + if (right_bound->original () == dynamic_cast (original ())->get_bound (RIGHT)) + pl->set_property ("last-in-score", SCM_BOOL_T); + Interval staff_refpoints; if (Grob *align = get_vertical_alignment ()) { extract_grob_set (align, "elements", staves); for (vsize i = 0; i < staves.size (); i++) - if (staves[i]->is_live () - && Page_layout_problem::is_spaceable (staves[i])) - staff_refpoints.add_point (staves[i]->relative_coordinate (this, - Y_AXIS)); + if (staves[i]->is_live () + && Page_layout_problem::is_spaceable (staves[i])) + staff_refpoints.add_point (staves[i]->relative_coordinate (this, + Y_AXIS)); } pl->set_property ("staff-refpoint-extent", ly_interval2scm (staff_refpoints)); @@ -588,11 +654,11 @@ System::broken_col_range (Item const *left, Item const *right) const i++; while (i < cols.size () - && Paper_column::get_rank (cols[i]) < end_rank) + && Paper_column::get_rank (cols[i]) < end_rank) { Paper_column *c = dynamic_cast (cols[i]); if (Paper_column::is_breakable (c) && !c->get_system ()) - ret.push_back (c); + ret.push_back (c); i++; } @@ -611,14 +677,14 @@ System::used_columns () const while (last_breakable--) { if (Paper_column::is_breakable (ro_columns [last_breakable])) - break; + break; } vector columns; for (int i = 0; i <= last_breakable; i++) { if (Paper_column::is_used (ro_columns[i])) - columns.push_back (ro_columns[i]); + columns.push_back (ro_columns[i]); } return columns; @@ -665,9 +731,9 @@ System::get_vertical_alignment () for (vsize i = 0; i < elts.size (); i++) if (Align_interface::has_interface (elts[i])) { - if (ret) - programming_error ("found multiple vertical alignments in this system"); - ret = elts[i]; + if (ret) + programming_error ("found multiple vertical alignments in this system"); + ret = elts[i]; } if (!ret) @@ -690,13 +756,43 @@ System::get_extremal_staff (Direction dir, Interval const &iv) for (vsize i = start; i != end; i += dir) { if (Hara_kiri_group_spanner::has_interface (elts[i])) - Hara_kiri_group_spanner::consider_suicide (elts[i]); + Hara_kiri_group_spanner::consider_suicide (elts[i]); Interval intersection = elts[i]->extent (this, X_AXIS); intersection.intersect (iv); if (elts[i]->is_live () && !intersection.is_empty ()) - return elts[i]; + return elts[i]; + } + return 0; +} + +// Finds the neighboring staff in the given direction over bounds +Grob * +System::get_neighboring_staff (Direction dir, Grob *vertical_axis_group, Interval_t bounds) +{ + Grob *align = get_vertical_alignment (); + if (!align) + return 0; + + extract_grob_set (align, "elements", elts); + vsize start = (dir == UP) ? 0 : elts.size () - 1; + vsize end = (dir == UP) ? elts.size () : VPOS; + + Grob *out = 0; + + for (vsize i = start; i != end; i += dir) + { + if (elts[i] == vertical_axis_group) + return out; + + if (Hara_kiri_group_spanner::has_interface (elts[i])) + Hara_kiri_group_spanner::consider_suicide (elts[i]); + + bounds.intersect (elts[i]->spanned_rank_interval ()); + if (elts[i]->is_live () && !bounds.is_empty ()) + out = elts[i]; } + return 0; } @@ -714,15 +810,15 @@ System::pure_refpoint_extent (vsize start, vsize end) for (vsize i = 0; i < offsets.size (); ++i) if (Page_layout_problem::is_spaceable (staves[i])) { - ret[UP] = offsets[i]; - break; + ret[UP] = offsets[i]; + break; } for (vsize i = offsets.size (); i--;) if (Page_layout_problem::is_spaceable (staves[i])) { - ret[DOWN] = offsets[i]; - break; + ret[DOWN] = offsets[i]; + break; } return ret; @@ -742,16 +838,16 @@ System::part_of_line_pure_height (vsize start, vsize end, bool begin) for (vsize i = 0; i < staves.size (); ++i) { Interval iv = begin - ? Axis_group_interface::begin_of_line_pure_height (staves[i], start) - : Axis_group_interface::rest_of_line_pure_height (staves[i], start, end); + ? Axis_group_interface::begin_of_line_pure_height (staves[i], start) + : Axis_group_interface::rest_of_line_pure_height (staves[i], start, end); if (i < offsets.size ()) - iv.translate (offsets[i]); + iv.translate (offsets[i]); ret.unite (iv); } Interval other_elements = begin - ? Axis_group_interface::begin_of_line_pure_height (this, start) - : Axis_group_interface::rest_of_line_pure_height (this, start, end); + ? Axis_group_interface::begin_of_line_pure_height (this, start) + : Axis_group_interface::rest_of_line_pure_height (this, start, end); ret.unite (other_elements); @@ -786,22 +882,20 @@ System::calc_pure_relevant_grobs (SCM smob) for (vsize i = 0; i < elts.size (); ++i) { if (!Axis_group_interface::has_interface (elts[i])) - { - if (to_boolean (scm_apply_1 (pure_relevant_p, elts[i]->self_scm (), SCM_EOL))) - relevant_grobs.push_back (elts[i]); - - if (Item *it = dynamic_cast (elts[i])) - { - Direction d = LEFT; - do - { - Item *piece = it->find_prebroken_piece (d); - if (piece && to_boolean (scm_apply_1 (pure_relevant_p, piece->self_scm (), SCM_EOL))) - relevant_grobs.push_back (piece); - } - while (flip (&d) != LEFT); - } - } + { + if (to_boolean (scm_apply_1 (pure_relevant_p, elts[i]->self_scm (), SCM_EOL))) + relevant_grobs.push_back (elts[i]); + + if (Item *it = dynamic_cast (elts[i])) + { + for (LEFT_and_RIGHT (d)) + { + Item *piece = it->find_prebroken_piece (d); + if (piece && to_boolean (scm_apply_1 (pure_relevant_p, piece->self_scm (), SCM_EOL))) + relevant_grobs.push_back (piece); + } + } + } } SCM grobs_scm = Grob_array::make_array (); @@ -832,16 +926,16 @@ System::calc_pure_height (SCM smob, SCM start_scm, SCM end_scm) return ly_interval2scm (begin); } -Grob* +Grob * System::get_pure_bound (Direction d, int start, int end) { vector ranks = pscore_->get_break_ranks (); vector indices = pscore_->get_break_indices (); - vector cols = pscore_->get_columns (); + vector cols = pscore_->get_columns (); vsize target_rank = (d == LEFT ? start : end); - vector::const_iterator i = - lower_bound (ranks.begin (), ranks.end (), target_rank, std::less ()); + vector::const_iterator i + = lower_bound (ranks.begin (), ranks.end (), target_rank, std::less ()); if (i != ranks.end () && (*i) == target_rank) return cols[indices[i - ranks.begin ()]]; @@ -849,21 +943,84 @@ System::get_pure_bound (Direction d, int start, int end) return 0; } -Grob* +Grob * System::get_maybe_pure_bound (Direction d, bool pure, int start, int end) { return pure ? get_pure_bound (d, start, end) : get_bound (d); } +enum +{ + SPACEABLE_STAVES, + NONSPACEABLE_STAVES, + ALL_STAVES +}; + +static SCM +get_maybe_spaceable_staves (SCM smob, int filter) +{ + System *me = dynamic_cast (unsmob_grob (smob)); + Grob *align = me->get_vertical_alignment (); + SCM ret = SCM_EOL; + + if (align) + { + SCM *tail = &ret; + extract_grob_set (align, "elements", staves); + + for (vsize i = 0; i < staves.size (); ++i) + { + bool spaceable = Page_layout_problem::is_spaceable (staves[i]); + if (staves[i]->is_live () + && ((filter == ALL_STAVES) + || (filter == SPACEABLE_STAVES && spaceable) + || (filter == NONSPACEABLE_STAVES && !spaceable))) + { + *tail = scm_cons (staves[i]->self_scm (), SCM_EOL); + tail = SCM_CDRLOC (*tail); + } + } + } + + return ret; +} + +MAKE_SCHEME_CALLBACK (System, get_staves, 1) +SCM +System::get_staves (SCM smob) +{ + return get_maybe_spaceable_staves (smob, ALL_STAVES); +} + +MAKE_SCHEME_CALLBACK (System, get_spaceable_staves, 1) +SCM +System::get_spaceable_staves (SCM smob) +{ + return get_maybe_spaceable_staves (smob, SPACEABLE_STAVES); +} + +MAKE_SCHEME_CALLBACK (System, get_nonspaceable_staves, 1) +SCM +System::get_nonspaceable_staves (SCM smob) +{ + return get_maybe_spaceable_staves (smob, NONSPACEABLE_STAVES); +} + ADD_INTERFACE (System, - "This is the top-level object: Each object in a score" - " ultimately has a @code{System} object as its X and" - " Y@tie{}parent.", - - /* properties */ - "all-elements " - "columns " - "labels " - "pure-Y-extent " - "skyline-horizontal-padding " - ); + "This is the top-level object: Each object in a score" + " ultimately has a @code{System} object as its X and" + " Y@tie{}parent.", + + /* properties */ + "all-elements " + "columns " + "footnote-stencil " + "footnotes-before-line-breaking " + "footnotes-after-line-breaking " + "in-note-direction " + "in-note-padding " + "in-note-stencil " + "labels " + "pure-Y-extent " + "skyline-horizontal-padding " + ); diff --git a/lily/tab-note-heads-engraver.cc b/lily/tab-note-heads-engraver.cc index 4e3f393a2d..79807acf04 100644 --- a/lily/tab-note-heads-engraver.cc +++ b/lily/tab-note-heads-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys, Jean-Baptiste Lamy , + Copyright (C) 2002--2012 Han-Wen Nienhuys, Jean-Baptiste Lamy , LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -86,20 +86,20 @@ void Tab_note_heads_engraver::process_music () { SCM tab_strings = articulation_list (note_events_, - tabstring_events_, - "string-number-event"); + tabstring_events_, + "string-number-event"); SCM defined_fingers = articulation_list (note_events_, - fingering_events_, - "fingering-event"); + fingering_events_, + "fingering-event"); SCM tab_notes = ly_cxx_vector_to_list (note_events_); SCM proc = get_property ("noteToFretFunction"); SCM string_fret_finger = SCM_EOL; if (ly_is_procedure (proc)) string_fret_finger = scm_call_3 (proc, - context ()->self_scm (), - tab_notes, - scm_list_2 (tab_strings, - defined_fingers)); + context ()->self_scm (), + tab_notes, + scm_list_2 (tab_strings, + defined_fingers)); SCM note_entry = SCM_EOL; SCM string_number = SCM_EOL; SCM fret = SCM_EOL; @@ -114,22 +114,22 @@ Tab_note_heads_engraver::process_music () if (string_fret_finger != SCM_EOL) for (vsize i = 0; i < fret_count; i++) { - note_entry = scm_list_ref (string_fret_finger, scm_from_int (i)); - string_number = scm_car (note_entry); + note_entry = scm_list_ref (string_fret_finger, scm_from_int (i)); + string_number = scm_car (note_entry); if (string_number != SCM_BOOL_F) { - fret = scm_cadr (note_entry); - fret_label = scm_call_3 (fret_procedure, - context ()->self_scm (), - string_number, - fret); - index = length_changed ? 0 : i; - Item *note = make_item ("TabNoteHead", note_events_[index]->self_scm ()); - note->set_property ("text", fret_label); - staff_position = scm_call_2 (staff_line_procedure, - context ()->self_scm (), - string_number); - note->set_property ("staff-position", staff_position); + fret = scm_cadr (note_entry); + fret_label = scm_call_3 (fret_procedure, + context ()->self_scm (), + string_number, + fret); + index = length_changed ? 0 : i; + Item *note = make_item ("TabNoteHead", note_events_[index]->self_scm ()); + note->set_property ("text", fret_label); + staff_position = scm_call_2 (staff_line_procedure, + context ()->self_scm (), + string_number); + note->set_property ("staff-position", staff_position); } } } @@ -143,26 +143,26 @@ Tab_note_heads_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Tab_note_heads_engraver, - /* doc */ - "Generate one or more tablature note heads from event of type" - " @code{NoteEvent}.", - - /* create */ - "TabNoteHead ", - - /* read */ - "defaultStrings " - "fretLabels " - "highStringOne " - "middleCPosition " - "minimumFret " - "noteToFretFunction " - "stringOneTopmost " - "stringTunings " - "tablatureFormat " - "tabStaffLineLayoutFunction ", - - /* write */ - "" - ); + /* doc */ + "Generate one or more tablature note heads from event of type" + " @code{NoteEvent}.", + + /* create */ + "TabNoteHead ", + + /* read */ + "defaultStrings " + "fretLabels " + "highStringOne " + "middleCPosition " + "minimumFret " + "noteToFretFunction " + "stringOneTopmost " + "stringTunings " + "tablatureFormat " + "tabStaffLineLayoutFunction ", + + /* write */ + "" + ); diff --git a/lily/tab-staff-symbol-engraver.cc b/lily/tab-staff-symbol-engraver.cc index 5b33971127..488e605b2c 100644 --- a/lily/tab-staff-symbol-engraver.cc +++ b/lily/tab-staff-symbol-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,16 +44,16 @@ Tab_staff_symbol_engraver::Tab_staff_symbol_engraver () ADD_ACKNOWLEDGER (Tab_staff_symbol_engraver, staff_symbol); ADD_TRANSLATOR (Tab_staff_symbol_engraver, - /* doc */ - "Create a tablature staff symbol, but look at" - " @code{stringTunings} for the number of lines.", + /* doc */ + "Create a tablature staff symbol, but look at" + " @code{stringTunings} for the number of lines.", - /* create */ - "StaffSymbol ", + /* create */ + "StaffSymbol ", - /* read */ - "stringTunings ", + /* read */ + "stringTunings ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/tab-tie-follow-engraver.cc b/lily/tab-tie-follow-engraver.cc index a815c5a3bb..b036599014 100644 --- a/lily/tab-tie-follow-engraver.cc +++ b/lily/tab-tie-follow-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2010--2011 Carl D. Sorensen + Copyright (C) 2010--2012 Carl D. Sorensen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -81,12 +81,12 @@ Tab_tie_follow_engraver::stop_translation_timestep () bool spanner_start = false; for (vsize j = 0; j < slurs_.size (); j++) { - Item* left_item = slurs_[j]->get_bound (LEFT); + Item *left_item = slurs_[j]->get_bound (LEFT); if (left_item) { SCM left_cause = left_item->get_property ("cause"); Item *slur_cause = unsmob_item (left_cause); - if (slur_cause == note_heads_[k]) + if (slur_cause == note_heads_[k]) { note_heads_[k]->set_property ("span-start", SCM_BOOL_T); spanner_start = true; @@ -107,25 +107,24 @@ Tab_tie_follow_engraver::stop_translation_timestep () } slurs_.clear (); glissandi_.clear (); - note_heads_.clear(); + note_heads_.clear (); } ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, slur); ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, glissando); ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, tab_note_head); - ADD_TRANSLATOR (Tab_tie_follow_engraver, - /* doc */ - "Adjust TabNoteHead properties when a tie is followed" - " by a slur or glissando.", + /* doc */ + "Adjust TabNoteHead properties when a tie is followed" + " by a slur or glissando.", - /* create */ - " ", + /* create */ + " ", - /* read */ + /* read */ " ", - /* write */ + /* write */ " " - ); + ); diff --git a/lily/template5.cc b/lily/template5.cc index 2537ea2bbe..9c9613d1ba 100644 --- a/lily/template5.cc +++ b/lily/template5.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,6 @@ Interval_t::infinity () return infty; } - template<> string Interval_t::T_to_string (Rational a) @@ -42,18 +41,16 @@ Interval_t::T_to_string (Rational a) template INTERVAL__INSTANTIATE (Rational); - template<> Moment Interval_t::infinity () { Moment infty; - + infty.main_part_.set_infinite (1); return infty; } - template<> string Interval_t::T_to_string (Moment a) diff --git a/lily/tempo-performer.cc b/lily/tempo-performer.cc index 95de5faa83..7d32d3b612 100644 --- a/lily/tempo-performer.cc +++ b/lily/tempo-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,12 +33,12 @@ public: protected: - virtual void derived_mark () const; + virtual void derived_mark () const; void stop_translation_timestep (); void process_music (); private: Audio_tempo *audio_; - SCM last_tempo_; + SCM last_tempo_; }; void @@ -86,15 +86,15 @@ Tempo_performer::stop_translation_timestep () } ADD_TRANSLATOR (Tempo_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "tempoWholesPerMinute ", + /* read */ + "tempoWholesPerMinute ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index 270855febd..6bd2356cab 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,7 +59,7 @@ Text_engraver::process_music () Item *text = make_item ("TextScript", r->self_scm ()); int priority = robust_scm2int (text->get_property ("script-priority"), - 200); + 200); /* see script-engraver.cc */ priority += i; @@ -68,7 +68,7 @@ Text_engraver::process_music () Direction dir = to_dir (r->get_property ("direction")); if (dir) - set_grob_direction (text, dir); + set_grob_direction (text, dir); SCM mark = r->get_property ("text"); @@ -87,15 +87,15 @@ Text_engraver::Text_engraver () } ADD_TRANSLATOR (Text_engraver, - /* doc */ - "Create text scripts.", + /* doc */ + "Create text scripts.", - /* create */ - "TextScript ", + /* create */ + "TextScript ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/text-interface.cc b/lily/text-interface.cc index 983902f6af..cd906c2e8e 100644 --- a/lily/text-interface.cc +++ b/lily/text-interface.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -28,33 +28,47 @@ #include "modified-font-metric.hh" #include "output-def.hh" #include "pango-font.hh" +#include "program-option.hh" +#include "international.hh" #include "warn.hh" static void -replace_whitespace (string *str) +replace_special_characters (string &str, SCM props) { - vsize i = 0; - vsize n = str->size (); + SCM replacement_alist = ly_chain_assoc_get (ly_symbol2scm ("replacement-alist"), + props, + SCM_EOL); - while (i < n) + int max_length = 0; + for (SCM s = replacement_alist; scm_is_pair (s); s = scm_cdr (s)) { - char cur = (*str)[i]; - - // avoid the locale-dependent isspace - if (cur == '\n' || cur == '\t' || cur == '\v') - (*str)[i] = ' '; - - vsize char_len = utf8_char_len (cur); + max_length = max (max_length, scm_to_int + (scm_string_length (scm_caar (s)))); + } - i += char_len; + for (vsize i = 0; i < str.size (); i++) + { + /* Don't match in mid-UTF-8 */ + if ((str[i] & 0xc0) == 0x80) + continue; + for (vsize j = max_length + 1; j--;) + { + if (j > str.size () - i) + continue; + string dummy = str.substr (i, j); + SCM ligature = ly_assoc_get (ly_string2scm (dummy), + replacement_alist, SCM_BOOL_F); + if (scm_is_true (ligature)) + str.replace (i, j, robust_scm2string (ligature, "")); + } } } MAKE_SCHEME_CALLBACK (Text_interface, interpret_string, 3); SCM Text_interface::interpret_string (SCM layout_smob, - SCM props, - SCM markup) + SCM props, + SCM markup) { LY_ASSERT_SMOB (Output_def, layout_smob, 1); LY_ASSERT_TYPE (scm_is_string, markup, 3); @@ -63,7 +77,7 @@ Text_interface::interpret_string (SCM layout_smob, Output_def *layout = unsmob_output_def (layout_smob); Font_metric *fm = select_encoded_font (layout, props); - replace_whitespace (&str); + replace_special_characters (str, props); /* We want to filter strings with a music font that pass through @@ -71,8 +85,8 @@ Text_interface::interpret_string (SCM layout_smob, if it matches one of the music font encodings. --pmccarty */ SCM encoding = ly_chain_assoc_get (ly_symbol2scm ("font-encoding"), - props, - SCM_BOOL_F); + props, + SCM_BOOL_F); SCM music_encodings = ly_lily_module_constant ("all-music-font-encodings"); bool is_music = (scm_memq (encoding, music_encodings) != SCM_BOOL_F); @@ -80,14 +94,14 @@ Text_interface::interpret_string (SCM layout_smob, } MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Text_interface, interpret_markup, 3, 0, - "Convert a text markup into a stencil." -" Takes three arguments, @var{layout}, @var{props}, and @var{markup}.\n" -"\n" -"@var{layout} is a @code{\\layout} block; it may be obtained from a grob with" -" @code{ly:grob-layout}. @var{props} is an alist chain, i.e. a list of" -" alists. This is typically obtained with" -" @code{(ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults))}." -" @var{markup} is the markup text to be processed."); + "Convert a text markup into a stencil." + " Takes three arguments, @var{layout}, @var{props}, and @var{markup}.\n" + "\n" + "@var{layout} is a @code{\\layout} block; it may be obtained from a grob with" + " @code{ly:grob-layout}. @var{props} is an alist chain, i.e. a list of" + " alists. This is typically obtained with" + " @code{(ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults))}." + " @var{markup} is the markup text to be processed."); SCM Text_interface::interpret_markup (SCM layout_smob, SCM props, SCM markup) { @@ -98,23 +112,51 @@ Text_interface::interpret_markup (SCM layout_smob, SCM props, SCM markup) SCM func = scm_car (markup); SCM args = scm_cdr (markup); if (!is_markup (markup)) - programming_error ("markup head has no markup signature"); - - return scm_apply_2 (func, layout_smob, props, args); + programming_error ("markup head has no markup signature"); + + /* Use a hare/tortoise algorithm to detect whether we are in a cycle, + * i.e. whether we have already encountered the same markup in the + * current branch of the markup tree structure. */ + static vector encountered_markups; + size_t depth = encountered_markups.size (); + if (depth > 0) + { + int slow = depth / 2; + if (ly_is_equal (encountered_markups[slow], markup)) + { + string name = ly_symbol2string (scm_procedure_name (func)); + // TODO: Also print the arguments of the markup! + non_fatal_error (_f ("Cyclic markup detected: %s", name)); + return Stencil ().smobbed_copy (); + } + } + + /* Check for non-terminating markups, e.g. recursive calls with + * changing arguments */ + SCM opt_depth = ly_get_option (ly_symbol2scm ("max-markup-depth")); + size_t max_depth = robust_scm2int (opt_depth, 1024); + if (depth > max_depth) + { + string name = ly_symbol2string (scm_procedure_name (func)); + // TODO: Also print the arguments of the markup! + non_fatal_error (_f ("Markup depth exceeds maximal value of %d; " + "Markup: %s", max_depth, name.c_str ())); + return Stencil ().smobbed_copy (); + } + + encountered_markups.push_back (markup); + SCM retval = scm_apply_2 (func, layout_smob, props, args); + encountered_markups.pop_back (); + return retval; } else { - programming_error ("Object is not a markup. "); + programming_error ("Object is not a markup."); scm_puts ("This object should be a markup: ", scm_current_error_port ()); scm_display (markup, scm_current_error_port ()); scm_puts ("\n", scm_current_error_port ()); - Box b; - b[X_AXIS].set_empty (); - b[Y_AXIS].set_empty (); - - Stencil s (b, SCM_EOL); - return s.smobbed_copy (); + return Stencil ().smobbed_copy (); } } @@ -134,10 +176,10 @@ bool Text_interface::is_markup (SCM x) { return (scm_is_string (x) - || (scm_is_pair (x) - && SCM_BOOL_F - != scm_object_property (scm_car (x), - ly_symbol2scm ("markup-signature")))); + || (scm_is_pair (x) + && SCM_BOOL_F + != scm_object_property (scm_car (x), + ly_symbol2scm ("markup-signature")))); } bool @@ -147,20 +189,20 @@ Text_interface::is_markup_list (SCM x) return scm_is_true (scm_call_1 (music_list_p, x)); } - ADD_INTERFACE (Text_interface, - "A Scheme markup text, see @ruser{Formatting text} and" - " @rextend{New markup command definition}.\n" - "\n" - "There are two important commands:" - " @code{ly:text-interface::print}, which is a" - " grob callback, and" - " @code{ly:text-interface::interpret-markup}.", - - /* properties */ - "baseline-skip " - "text " - "word-space " - "text-direction " - ); + "A Scheme markup text, see @ruser{Formatting text} and" + " @rextend{New markup command definition}.\n" + "\n" + "There are two important commands:" + " @code{ly:text-interface::print}, which is a" + " grob callback, and" + " @code{ly:text-interface::interpret-markup}.", + + /* properties */ + "baseline-skip " + "replacement-alist " + "text " + "word-space " + "text-direction " + ); diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index c18bf098f2..f4dc2de070 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -69,28 +69,28 @@ Text_spanner_engraver::process_music () if (event_drul_[STOP]) { if (!span_) - event_drul_[STOP]->origin ()->warning (_ ("cannot find start of text spanner")); + event_drul_[STOP]->origin ()->warning (_ ("cannot find start of text spanner")); else - { - finished_ = span_; - announce_end_grob (finished_, SCM_EOL); - span_ = 0; - current_event_ = 0; - } + { + finished_ = span_; + announce_end_grob (finished_, SCM_EOL); + span_ = 0; + current_event_ = 0; + } } if (event_drul_[START]) { if (current_event_) - event_drul_[START]->origin ()->warning (_ ("already have a text spanner")); + event_drul_[START]->origin ()->warning (_ ("already have a text spanner")); else - { - current_event_ = event_drul_[START]; - span_ = make_spanner ("TextSpanner", event_drul_[START]->self_scm ()); + { + current_event_ = event_drul_[START]; + span_ = make_spanner ("TextSpanner", event_drul_[START]->self_scm ()); - Side_position_interface::set_axis (span_, Y_AXIS); - event_drul_[START] = 0; - } + Side_position_interface::set_axis (span_, Y_AXIS); + event_drul_[START] = 0; + } } } @@ -100,10 +100,10 @@ Text_spanner_engraver::typeset_all () if (finished_) { if (!finished_->get_bound (RIGHT)) - { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); - finished_->set_bound (RIGHT, e); - } + { + Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); + finished_->set_bound (RIGHT, e); + } finished_ = 0; } } @@ -139,33 +139,33 @@ Text_spanner_engraver::acknowledge_note_column (Grob_info info) if (span_) { Pointer_group_interface::add_grob (span_, - ly_symbol2scm ("note-columns"), - info.grob ()); + ly_symbol2scm ("note-columns"), + info.grob ()); if (!span_->get_bound (LEFT)) - add_bound_item (span_, info.grob ()); + add_bound_item (span_, info.grob ()); } else if (finished_) { Pointer_group_interface::add_grob (finished_, - ly_symbol2scm ("note-columns"), - info.grob ()); + ly_symbol2scm ("note-columns"), + info.grob ()); if (!finished_->get_bound (RIGHT)) - add_bound_item (finished_, info.grob ()); + add_bound_item (finished_, info.grob ()); } } ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column); ADD_TRANSLATOR (Text_spanner_engraver, - /* doc */ - "Create text spanner from an event.", + /* doc */ + "Create text spanner from an event.", - /* create */ - "TextSpanner ", + /* create */ + "TextSpanner ", - /* read */ - "currentMusicalColumn ", + /* read */ + "currentMusicalColumn ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/tie-column.cc b/lily/tie-column.cc index 6e0eaecec0..bc14eb9bdf 100644 --- a/lily/tie-column.cc +++ b/lily/tie-column.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,19 +39,19 @@ void Tie_column::add_tie (Grob *tc, Grob *tie) { Spanner *me = dynamic_cast (tc); - + if (tie->get_parent (Y_AXIS) && Tie_column::has_interface (tie->get_parent (Y_AXIS))) return; if (!me->get_bound (LEFT) || (Paper_column::get_rank (me->get_bound (LEFT)->get_column ()) - > Paper_column::get_rank (dynamic_cast (tie)->get_bound (LEFT)->get_column ()))) + > Paper_column::get_rank (dynamic_cast (tie)->get_bound (LEFT)->get_column ()))) { - me->set_bound (LEFT, Tie::head (tie, LEFT)); - me->set_bound (RIGHT, Tie::head (tie, RIGHT)); + me->set_bound (LEFT, Tie::head (tie, LEFT)); + me->set_bound (RIGHT, Tie::head (tie, RIGHT)); } - + tie->set_parent (me, Y_AXIS); Pointer_group_interface::add_grob (me, ly_symbol2scm ("ties"), tie); } @@ -67,16 +67,14 @@ Tie_column::before_line_breaking (SCM smob) for (SCM s = me->get_property ("ties"); scm_is_pair (s); s = scm_cdr (s)) { Spanner *tie = dynamic_cast (unsmob_grob (scm_car (s))); - Direction dir = LEFT; - do - { - if (dir * tie->get_bound (dir)->get_column ()->get_rank () - > dir * me->get_bound (dir)->get_column ()->get_rank ()) - me->set_bound (dir, Tie::head (tie, dir)); - } - while (flip (&dir) != LEFT); + for (LEFT_and_RIGHT (dir)) + { + if (dir * tie->get_bound (dir)->get_column ()->get_rank () + > dir * me->get_bound (dir)->get_column ()->get_rank ()) + me->set_bound (dir, Tie::head (tie, dir)); + } } - + return SCM_UNSPECIFIED; } @@ -86,7 +84,7 @@ Tie_column::calc_positioning_done (SCM smob) { Grob *me = unsmob_grob (smob); extract_grob_set (me, "ties", ro_ties); - vector ties (ro_ties); + vector ties (ro_ties); if (!ties.size ()) return SCM_BOOL_T; @@ -103,26 +101,25 @@ Tie_column::calc_positioning_done (SCM smob) for (vsize i = 0; i < base.size (); i++) { SCM cp = Tie::get_control_points (ties[i], problem.common_x_refpoint (), - base[i], - problem.details_); + base[i], + problem.details_); ties[i]->set_property ("control-points", cp); set_grob_direction (ties[i], - base[i].dir_); + base[i].dir_); problem.set_debug_scoring (base); } return SCM_BOOL_T; } - - ADD_INTERFACE (Tie_column, - "Object that sets directions of multiple ties in a tied" - " chord.", - - /* properties */ - "positioning-done " - "tie-configuration " - ); + "Object that sets directions of multiple ties in a tied" + " chord.", + + /* properties */ + "positioning-done " + "tie-configuration " + "ties " + ); diff --git a/lily/tie-configuration.cc b/lily/tie-configuration.cc index f84908c651..79992fb808 100644 --- a/lily/tie-configuration.cc +++ b/lily/tie-configuration.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -26,13 +26,12 @@ int Tie_configuration::compare (Tie_configuration const &a, - Tie_configuration const &b) + Tie_configuration const &b) { if (a.position_ - b.position_) return sign (a.position_ - b.position_); return sign (a.dir_ - b.dir_); } - Tie_configuration::Tie_configuration () { @@ -44,19 +43,17 @@ Tie_configuration::Tie_configuration () column_ranks_ = Drul_array (0, 0); } - void Tie_configuration::center_tie_vertically (Tie_details const &details) { Bezier b = get_untransformed_bezier (details); Offset middle = b.curve_point (0.5); Offset edge = b.curve_point (0.0); - Real center = (edge[Y_AXIS] + middle[Y_AXIS])/2.0; + Real center = (edge[Y_AXIS] + middle[Y_AXIS]) / 2.0; delta_y_ = - dir_ * center; } - Bezier Tie_configuration::get_transformed_bezier (Tie_details const &details) const { @@ -64,7 +61,7 @@ Tie_configuration::get_transformed_bezier (Tie_details const &details) const b.scale (1, dir_); b.translate (Offset (attachment_x_[LEFT], - delta_y_ + details.staff_space_ * 0.5 * position_)); + delta_y_ + details.staff_space_ * 0.5 * position_)); return b; } @@ -82,8 +79,8 @@ Tie_configuration::get_untransformed_bezier (Tie_details const &details) const l = 1.0; } return slur_shape (l, - details.height_limit_, - details.ratio_); + details.height_limit_, + details.ratio_); } int @@ -94,7 +91,7 @@ Tie_configuration::column_span_length () const Real Tie_configuration::distance (Tie_configuration const &a, - Tie_configuration const &b) + Tie_configuration const &b) { Real d = 3 * (a.position_ - b.position_); @@ -104,7 +101,6 @@ Tie_configuration::distance (Tie_configuration const &a, return d + (2 + (a.dir_ - b.dir_)); } - void Tie_configuration::add_score (Real s, string desc) { @@ -120,8 +116,8 @@ Tie_configuration::height (Tie_details const &details) const Real l = attachment_x_.length (); return slur_shape (l, - details.height_limit_, - details.ratio_).curve_point (0.5)[Y_AXIS]; + details.height_limit_, + details.ratio_).curve_point (0.5)[Y_AXIS]; } Ties_configuration::Ties_configuration () @@ -147,7 +143,7 @@ Ties_configuration::add_tie_score (Real s, int i, string desc) if (s) { while (tie_score_cards_.size () < size ()) - tie_score_cards_.push_back (""); + tie_score_cards_.push_back (""); tie_score_cards_[i] += to_string ("%s=%.2f ", desc.c_str (), s); } @@ -168,15 +164,14 @@ Ties_configuration::score () const return score_; } - string Ties_configuration::complete_tie_card (vsize i) const { string s; s += to_string ("%d (%.2f) %c: ", (*this)[i].position_, (*this)[i].delta_y_, - ((*this)[i].dir_ == UP ? 'u' : 'd')) - + (*this)[i].card () + (*this).tie_card (i); - + ((*this)[i].dir_ == UP ? 'u' : 'd')) + + (*this)[i].card () + (*this).tie_card (i); + /* this is a little awkward, but we must decide where to put aggregrates. @@ -186,7 +181,7 @@ Ties_configuration::complete_tie_card (vsize i) const if (i + 1 == size ()) s += to_string ("TOTAL=%.2f", score ()); - + return s; } @@ -194,7 +189,7 @@ Ties_configuration::complete_tie_card (vsize i) const string Ties_configuration::complete_score_card () const { - string s; + string s; for (vsize i = 0; i < size (); i++) { s += complete_tie_card (i); @@ -203,8 +198,6 @@ Ties_configuration::complete_score_card () const return s; } - - string Ties_configuration::card () const { diff --git a/lily/tie-details.cc b/lily/tie-details.cc index f169e1fae9..a13533a6aa 100644 --- a/lily/tie-details.cc +++ b/lily/tie-details.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -25,9 +25,8 @@ #include "warn.hh" #include "tie-details.hh" - /* - this is a macro because we want ly_symbol2scm() + this is a macro because we want ly_symbol2scm() */ #define get_real_detail(src, defvalue) \ robust_scm2double(ly_assoc_get (ly_symbol2scm (src), details, SCM_EOL), defvalue) @@ -39,23 +38,22 @@ Tie_details::from_grob (Grob *me) { staff_symbol_referencer_ = me; staff_space_ = Staff_symbol_referencer::staff_space (me); - + neutral_direction_ = to_dir (me->get_property ("neutral-direction")); if (!neutral_direction_) neutral_direction_ = DOWN; - + SCM details = me->get_property ("details"); height_limit_ = get_real_detail ("height-limit", 0.75); - ratio_ = get_real_detail ("ratio", .333); + ratio_ = get_real_detail ("ratio", .333); between_length_limit_ = get_real_detail ("between-length-limit", 1.0); - + wrong_direction_offset_penalty_ = get_real_detail ("wrong-direction-offset-penalty", 10); - + min_length_ = get_real_detail ("min-length", 1.0); min_length_penalty_factor_ = get_real_detail ("min-length-penalty-factor", 1.0); - // in half-space center_staff_line_clearance_ = get_real_detail ("center-staff-line-clearance", 0.4); tip_staff_line_clearance_ = get_real_detail ("tip-staff-line-clearance", 0.4); @@ -73,7 +71,7 @@ Tie_details::from_grob (Grob *me) intra_space_threshold_ = get_real_detail ("intra-space-threshold", 1.0); outer_tie_length_symmetry_penalty_factor_ = get_real_detail ("outer-tie-length-symmetry-penalty-factor", 3.0); outer_tie_vertical_distance_symmetry_penalty_factor_ = get_real_detail ("outer-tie-vertical-distance-symmetry-penalty-factor", 3.0); - + outer_tie_vertical_gap_ = get_real_detail ("outer-tie-vertical-gap", 0.15); single_tie_region_size_ = get_int_detail ("single-tie-region-size", 3); @@ -83,8 +81,8 @@ Tie_details::from_grob (Grob *me) Tie_details::Tie_details () { - staff_space_ = 1.0; + staff_space_ = 1.0; height_limit_ = 1.0; - ratio_ = .333; + ratio_ = .333; } diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index edaba06c7c..40da0d3e84 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -67,9 +67,9 @@ struct Head_event_tuple class Tie_engraver : public Engraver { Stream_event *event_; - vector now_heads_; + vector now_heads_; vector heads_to_tie_; - vector ties_; + vector ties_; Spanner *tie_column_; @@ -114,7 +114,7 @@ void Tie_engraver::report_unterminated_tie (Head_event_tuple const &tie_start) // moment that created a tie, so this is not necessarily an unterminated // tie. Happens e.g. for ~ g if (!tie_start.tie_from_chord_created) - tie_start.head_->warning (_("unterminated tie")); + tie_start.head_->warning (_ ("unterminated tie")); } /* @@ -134,8 +134,8 @@ Tie_engraver::process_music () { bool busy = event_; for (vsize i = 0; !busy && i < heads_to_tie_.size (); i++) - busy |= (heads_to_tie_[i].tie_event_ - || heads_to_tie_[i].tie_stream_event_); + busy |= (heads_to_tie_[i].tie_event_ + || heads_to_tie_[i].tie_stream_event_); if (busy) context ()->set_property ("tieMelismaBusy", SCM_BOOL_T); @@ -154,51 +154,50 @@ Tie_engraver::acknowledge_note_head (Grob_info i) Stream_event *left_ev = unsmob_stream_event (th->get_property ("cause")); /* - maybe should check positions too. + maybe should check positions too. */ if (!right_ev || !left_ev) - continue; + continue; /* 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_; - - SCM cause = heads_to_tie_[i].tie_event_ - ? heads_to_tie_[i].tie_event_->self_scm () - : heads_to_tie_[i].tie_stream_event_->self_scm (); - - announce_grob (p, cause); - Tie::set_head (p, LEFT, th); - Tie::set_head (p, RIGHT, h); - - - if (is_direction (unsmob_stream_event (cause)->get_property ("direction"))) - { - Direction d = to_dir (unsmob_stream_event (cause)->get_property ("direction")); - p->set_property ("direction", scm_from_int (d)); - } - - 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 - ~ g - */ - for (vsize j = heads_to_tie_.size (); j--;) - { - if (heads_to_tie_[j].end_moment_ == end) - heads_to_tie_[j].tie_from_chord_created = true; - } - } + && (!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_; + + SCM cause = heads_to_tie_[i].tie_event_ + ? heads_to_tie_[i].tie_event_->self_scm () + : heads_to_tie_[i].tie_stream_event_->self_scm (); + + announce_grob (p, cause); + Tie::set_head (p, LEFT, th); + Tie::set_head (p, RIGHT, h); + + if (is_direction (unsmob_stream_event (cause)->get_property ("direction"))) + { + Direction d = to_dir (unsmob_stream_event (cause)->get_property ("direction")); + p->set_property ("direction", scm_from_int (d)); + } + + 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 + ~ g + */ + for (vsize j = heads_to_tie_.size (); j--;) + { + if (heads_to_tie_[j].end_moment_ == end) + heads_to_tie_[j].tie_from_chord_created = true; + } + } } if (ties_.size () && ! tie_column_) @@ -215,18 +214,18 @@ Tie_engraver::start_translation_timestep () if (heads_to_tie_.size () && !to_boolean (get_property ("tieWaitForNote"))) { Moment now = now_mom (); - for (vsize i = heads_to_tie_.size (); i--; ) - { - if (now > heads_to_tie_[i].end_moment_) - { - report_unterminated_tie (heads_to_tie_[i]); - heads_to_tie_.erase (heads_to_tie_.begin () + i); - } - } + for (vsize i = heads_to_tie_.size (); i--;) + { + if (now > heads_to_tie_[i].end_moment_) + { + report_unterminated_tie (heads_to_tie_[i]); + heads_to_tie_.erase (heads_to_tie_.begin () + i); + } + } } context ()->set_property ("tieMelismaBusy", - ly_bool2scm (heads_to_tie_.size ())); + ly_bool2scm (heads_to_tie_.size ())); } void @@ -237,14 +236,14 @@ Tie_engraver::stop_translation_timestep () { if (!wait) { - vector::iterator it = heads_to_tie_.begin (); - for (; it < heads_to_tie_.end (); it++) - report_unterminated_tie (*it); - heads_to_tie_.clear (); + vector::iterator it = heads_to_tie_.begin (); + for (; it < heads_to_tie_.end (); it++) + report_unterminated_tie (*it); + heads_to_tie_.clear (); } for (vsize i = 0; i < ties_.size (); i++) - typeset_tie (ties_[i]); + typeset_tie (ties_[i]); ties_.clear (); tie_column_ = 0; @@ -262,67 +261,67 @@ Tie_engraver::stop_translation_timestep () { Grob *head = now_heads_[i]; Stream_event *left_ev - = unsmob_stream_event (head->get_property ("cause")); + = unsmob_stream_event (head->get_property ("cause")); if (!left_ev) - { - // may happen for ambitus - continue; - } + { + // may happen for ambitus + continue; + } // We only want real notes to cause ties, not e.g. pitched trills if (!left_ev->in_event_class ("note-event")) - continue; + continue; SCM left_articulations = left_ev->get_property ("articulations"); Stream_event *tie_event = 0; Stream_event *tie_stream_event = event_; for (SCM s = left_articulations; - !tie_event && !tie_stream_event && scm_is_pair (s); - s = scm_cdr (s)) - { - Stream_event *ev = unsmob_stream_event (scm_car (s)); - if (!ev) - continue; + !tie_event && !tie_stream_event && scm_is_pair (s); + s = scm_cdr (s)) + { + Stream_event *ev = unsmob_stream_event (scm_car (s)); + if (!ev) + continue; - if (ev->in_event_class ("tie-event")) - tie_event = ev; - } + if (ev->in_event_class ("tie-event")) + tie_event = ev; + } 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 - = updated_grob_properties (context (), ly_symbol2scm ("Tie")); - - event_tup.head_ = head; - event_tup.tie_definition_ = start_definition; - event_tup.tie_event_ = tie_event; - event_tup.tie_stream_event_ = tie_stream_event; - - Moment end = now_mom (); - if (end.grace_part_) - { - end.grace_part_ += get_event_length (left_ev).main_part_; - } - else - { - end += get_event_length (left_ev); - } - event_tup.end_moment_ = end; - - new_heads_to_tie.push_back (event_tup); - } + && (!Tie_engraver::has_autosplit_end (left_ev))) + { + event_processed = true; + + Head_event_tuple event_tup; + + SCM start_definition + = updated_grob_properties (context (), ly_symbol2scm ("Tie")); + + event_tup.head_ = head; + event_tup.tie_definition_ = start_definition; + event_tup.tie_event_ = tie_event; + event_tup.tie_stream_event_ = tie_stream_event; + + Moment end = now_mom (); + if (end.grace_part_) + { + end.grace_part_ += get_event_length (left_ev).main_part_; + } + else + { + end += get_event_length (left_ev); + } + event_tup.end_moment_ = end; + + new_heads_to_tie.push_back (event_tup); + } } if (!wait && new_heads_to_tie.size ()) { - vector::iterator it=heads_to_tie_.begin (); + vector::iterator it = heads_to_tie_.begin (); for (; it < heads_to_tie_.end (); it++) report_unterminated_tie (*it); heads_to_tie_.clear (); @@ -348,34 +347,32 @@ Tie_engraver::typeset_tie (Grob *her) if (! (Tie::head (her, LEFT) && Tie::head (her, RIGHT))) warning (_ ("lonely tie")); - Direction d = LEFT; Drul_array new_head_drul; new_head_drul[LEFT] = Tie::head (her, LEFT); new_head_drul[RIGHT] = Tie::head (her, RIGHT); - do + for (LEFT_and_RIGHT (d)) { if (!Tie::head (her, d)) - new_head_drul[d] = Tie::head (her, (Direction) - d); + new_head_drul[d] = Tie::head (her, (Direction) - d); } - while (flip (&d) != LEFT); - Spanner *sp = dynamic_cast (her); + Spanner *sp = dynamic_cast (her); sp->set_bound (LEFT, new_head_drul[LEFT]); sp->set_bound (RIGHT, new_head_drul[RIGHT]); } ADD_ACKNOWLEDGER (Tie_engraver, note_head); ADD_TRANSLATOR (Tie_engraver, - /* doc */ - "Generate ties between note heads of equal pitch.", + /* doc */ + "Generate ties between note heads of equal pitch.", - /* create */ - "Tie " - "TieColumn ", + /* create */ + "Tie " + "TieColumn ", - /* read */ - "tieWaitForNote ", + /* read */ + "tieWaitForNote ", - /* write */ - "tieMelismaBusy " - ); + /* write */ + "tieMelismaBusy " + ); diff --git a/lily/tie-formatting-problem.cc b/lily/tie-formatting-problem.cc index 0c3279ce21..f514b39095 100644 --- a/lily/tie-formatting-problem.cc +++ b/lily/tie-formatting-problem.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -46,7 +46,7 @@ Tie_formatting_problem::print_ties_configuration (Ties_configuration const *ties char const *man_pos = (specifications_[i].has_manual_position_) ? "(M)" : ""; char const *man_dir = (specifications_[i].has_manual_dir_) ? "(M)" : ""; char const *dir = (ties->at (i).dir_ == UP) ? "up" : "dn"; - + printf ("(P%d%s, %s%s) ", ties->at (i).position_, man_pos, dir, man_dir); } printf ("\n"); @@ -55,19 +55,18 @@ Tie_formatting_problem::print_ties_configuration (Ties_configuration const *ties Interval Tie_formatting_problem::get_attachment (Real y, Drul_array columns) const { - Interval attachments (0,0); - Direction d = LEFT; - do + Interval attachments (0, 0); + + for (LEFT_and_RIGHT (d)) { Tuple2 key (columns[d], int (d)); Chord_outline_map::const_iterator i (chord_outlines_.find (key)); if (i == chord_outlines_.end ()) - programming_error ("Cannot find chord outline"); + programming_error ("Cannot find chord outline"); else - attachments[d] = i->second.height (y); + attachments[d] = i->second.height (y); } - while (flip (&d) != LEFT); - + return attachments; } @@ -86,9 +85,9 @@ Tie_formatting_problem::~Tie_formatting_problem () } void -Tie_formatting_problem::set_column_chord_outline (vector bounds, - Direction dir, - int column_rank) +Tie_formatting_problem::set_column_chord_outline (vector bounds, + Direction dir, + int column_rank) { Real staff_space = Staff_symbol_referencer::staff_space (bounds[0]); @@ -100,14 +99,14 @@ Tie_formatting_problem::set_column_chord_outline (vector bounds, { Grob *head = bounds[i]; if (!Note_head::has_interface (head)) - continue; - + continue; + if (!stem) - stem = unsmob_grob (head->get_object ("stem")); - + stem = unsmob_grob (head->get_object ("stem")); + Real p = Staff_symbol_referencer::get_position (head); - Interval y ((p-1) * 0.5 * staff_space, - (p+1) * 0.5 * staff_space); + Interval y ((p - 1) * 0.5 * staff_space, + (p + 1) * 0.5 * staff_space); Interval x = head->extent (x_refpoint_, X_AXIS); head_boxes.push_back (Box (x, y)); @@ -115,21 +114,21 @@ Tie_formatting_problem::set_column_chord_outline (vector bounds, Grob *dots = Rhythmic_head::get_dots (head); if (dir == LEFT && dots) - { - Interval x = dots->extent (x_refpoint_, X_AXIS); - int p = int (Staff_symbol_referencer::get_position (dots)); - - /* - TODO: shouldn't this use column-rank dependent key? - */ - dot_positions_.insert (p); - dot_x_.unite (x); - - Interval y (dots->extent (dots, Y_AXIS)); - y.translate (p * staff_space * 0.5); - - boxes.push_back (Box (x, y)); - } + { + Interval x = dots->extent (x_refpoint_, X_AXIS); + int p = int (Staff_symbol_referencer::get_position (dots)); + + /* + TODO: shouldn't this use column-rank dependent key? + */ + dot_positions_.insert (p); + dot_x_.unite (x); + + Interval y (dots->extent (dots, Y_AXIS)); + y.translate (p * staff_space * 0.5); + + boxes.push_back (Box (x, y)); + } } Tuple2 key (column_rank, int (dir)); @@ -137,109 +136,112 @@ Tie_formatting_problem::set_column_chord_outline (vector bounds, if (stem) { if (Stem::is_normal_stem (stem)) - { - Interval x; - x.add_point (stem->relative_coordinate (x_refpoint_, X_AXIS)); - x.widen (staff_space / 20); // ugh. - Interval y; - - Real stem_end_position = 0.0; - if (Stem::is_cross_staff (stem)) - stem_end_position = get_grob_direction (stem) * infinity_f; - else - { - if (use_horizontal_spacing_ || !Stem::get_beam (stem)) - stem_end_position = Stem::stem_end_position (stem) * staff_space * .5; - else - stem_end_position = Stem::note_head_positions (stem)[get_grob_direction (stem)] - * staff_space * .5; - } - - y.add_point (stem_end_position); - - Direction stemdir = get_grob_direction (stem); - y.add_point (Stem::head_positions (stem)[-stemdir] - * staff_space * .5); - - /* - add extents of stem. - */ - boxes.push_back (Box (x, y)); - - stem_extents_[key].unite (Box (x, y)); - - if (dir == LEFT) - { - Box flag_box = Stem::get_translated_flag (stem).extent_box (); - flag_box.translate ( Offset (x[RIGHT], X_AXIS)); - boxes.push_back (flag_box); - } - } + { + Interval x; + x.add_point (stem->relative_coordinate (x_refpoint_, X_AXIS)); + x.widen (staff_space / 20); // ugh. + Interval y; + + Real stem_end_position = 0.0; + if (Stem::is_cross_staff (stem)) + stem_end_position = get_grob_direction (stem) * infinity_f; + else + { + if (use_horizontal_spacing_ || !Stem::get_beam (stem)) + stem_end_position = stem->extent (stem, Y_AXIS)[get_grob_direction (stem)]; + else + // May want to change this to the stem's pure height... + stem_end_position = Stem::note_head_positions (stem)[get_grob_direction (stem)] + * staff_space * .5; + } + + y.add_point (stem_end_position); + + Direction stemdir = get_grob_direction (stem); + y.add_point (Stem::head_positions (stem)[-stemdir] + * staff_space * .5); + + /* + add extents of stem. + */ + boxes.push_back (Box (x, y)); + + stem_extents_[key].unite (Box (x, y)); + + if (dir == LEFT) + { + Grob *flag = Stem::flag (stem); + if (flag) + { + Grob *commony = stem->common_refpoint (flag, Y_AXIS); + boxes.push_back (Box (flag->extent (x_refpoint_, X_AXIS), + flag->extent (commony, Y_AXIS))); + } + } + } else - { - Grob *head = Stem::support_head (stem); - - /* - In case of invisible stem, don't pass x-center of heads. - */ - Real x_center = head->extent (x_refpoint_, X_AXIS).center (); - Interval x_ext; - x_ext[-dir] = x_center; - x_ext[dir] = infinity_f * dir; - Interval y_ext; - for (vsize j = 0; j < head_boxes.size (); j++) - y_ext.unite (head_boxes[j][Y_AXIS]); - - boxes.push_back (Box (x_ext, y_ext)); - } + { + Grob *head = Stem::support_head (stem); + + /* + In case of invisible stem, don't pass x-center of heads. + */ + Real x_center = head->extent (x_refpoint_, X_AXIS).center (); + Interval x_ext; + x_ext[-dir] = x_center; + x_ext[dir] = infinity_f * dir; + Interval y_ext; + for (vsize j = 0; j < head_boxes.size (); j++) + y_ext.unite (head_boxes[j][Y_AXIS]); + + boxes.push_back (Box (x_ext, y_ext)); + } extract_grob_set (stem, "note-heads", heads); - for (vsize i = 0; i < heads.size (); i ++) - { - if (find (bounds.begin (), bounds.end (), dynamic_cast (heads[i])) == bounds.end ()) - { - /* - other untied notes in the same chord. - */ - - Interval y = Staff_symbol_referencer::extent_in_staff (heads[i]); - Interval x = heads[i]->extent (x_refpoint_, X_AXIS); - boxes.push_back (Box (x, y)); - } - - Grob *acc = unsmob_grob (heads[i]->get_object ("accidental-grob")); - if (acc) - acc->get_property ("stencil"); /* trigger tie-related suicide */ - - if (acc && acc->is_live () && dir == RIGHT) - { - boxes.push_back (Box (acc->extent (x_refpoint_, X_AXIS), - Staff_symbol_referencer::extent_in_staff (acc))); - } - - head_positions_[column_rank].add_point (int (Staff_symbol_referencer::get_position (heads[i]))); - } - + for (vsize i = 0; i < heads.size (); i++) + { + if (find (bounds.begin (), bounds.end (), dynamic_cast (heads[i])) == bounds.end ()) + { + /* + other untied notes in the same chord. + */ + + Interval y = Staff_symbol_referencer::extent_in_staff (heads[i]); + Interval x = heads[i]->extent (x_refpoint_, X_AXIS); + boxes.push_back (Box (x, y)); + } + + Grob *acc = unsmob_grob (heads[i]->get_object ("accidental-grob")); + if (acc) + acc->get_property ("stencil"); /* trigger tie-related suicide */ + + if (acc && acc->is_live () && dir == RIGHT) + { + boxes.push_back (Box (acc->extent (x_refpoint_, X_AXIS), + Staff_symbol_referencer::extent_in_staff (acc))); + } + + head_positions_[column_rank].add_point (int (Staff_symbol_referencer::get_position (heads[i]))); + } + } - - Direction updowndir = DOWN; - do + + for (DOWN_and_UP (updowndir)) { Interval x; Interval y; if (head_boxes.size ()) - { - Box b = boundary (head_boxes, updowndir, 0); - x = b[X_AXIS]; - x[-dir] = b[X_AXIS].linear_combination (-dir / 2); - y[-updowndir] = b[Y_AXIS][updowndir]; - y[updowndir] = updowndir * infinity_f; - } + { + Box b = boundary (head_boxes, updowndir, 0); + x = b[X_AXIS]; + x[-dir] = b[X_AXIS].linear_combination (-dir / 2); + y[-updowndir] = b[Y_AXIS][updowndir]; + y[updowndir] = updowndir * infinity_f; + } if (!x.is_empty ()) - boxes.push_back (Box (x, y)); + boxes.push_back (Box (x, y)); } - while (flip (&updowndir) != DOWN); /* todo: the horizon_padding is somewhat arbitrary */ chord_outlines_[key] = Skyline (boxes, details_.skyline_padding_, Y_AXIS, -dir); @@ -247,7 +249,7 @@ Tie_formatting_problem::set_column_chord_outline (vector bounds, { Interval iv (Axis_group_interface::staff_extent (bounds[0], x_refpoint_, X_AXIS, y_refpoint_, Y_AXIS)); if (iv.is_empty ()) - iv.add_point (bounds[0]->relative_coordinate (x_refpoint_, X_AXIS)); + iv.add_point (bounds[0]->relative_coordinate (x_refpoint_, X_AXIS)); chord_outlines_[key].set_minimum_height (iv[-dir]); } @@ -255,10 +257,10 @@ Tie_formatting_problem::set_column_chord_outline (vector bounds, { Interval x; for (vsize j = 0; j < head_boxes.size (); j++) - { - x.unite (head_boxes[j][X_AXIS]); - } - + { + x.unite (head_boxes[j][X_AXIS]); + } + chord_outlines_[key].set_minimum_height (x[dir]); } @@ -270,8 +272,8 @@ Tie_formatting_problem::set_column_chord_outline (vector bounds, } void -Tie_formatting_problem::set_chord_outline (vector bounds, - Direction dir) +Tie_formatting_problem::set_chord_outline (vector bounds, + Direction dir) { vector ranks; @@ -283,23 +285,21 @@ Tie_formatting_problem::set_chord_outline (vector bounds, for (vsize i = 0; i < ranks.size (); i++) { - vector col_items; - for (vsize j = 0; j < bounds.size (); j ++) - { - if (bounds[j]->get_column ()->get_rank () == ranks[i]) - col_items.push_back (bounds[j]); - } + vector col_items; + for (vsize j = 0; j < bounds.size (); j++) + { + if (bounds[j]->get_column ()->get_rank () == ranks[i]) + col_items.push_back (bounds[j]); + } set_column_chord_outline (col_items, dir, ranks[i]); } } - - void Tie_formatting_problem::from_tie (Grob *tie) { - vector ties; + vector ties; ties.push_back (tie); from_ties (ties); @@ -313,90 +313,86 @@ Tie_formatting_problem::common_x_refpoint () const } void -Tie_formatting_problem::from_ties (vector const &ties) +Tie_formatting_problem::from_ties (vector const &ties) { if (ties.empty ()) return; - + x_refpoint_ = ties[0]; y_refpoint_ = ties[0]; for (vsize i = 0; i < ties.size (); i++) { - Spanner *tie = dynamic_cast (ties[i]); + Spanner *tie = dynamic_cast (ties[i]); Item *l = tie->get_bound (LEFT); Item *r = tie->get_bound (RIGHT); - x_refpoint_ = l->common_refpoint (x_refpoint_, X_AXIS); + x_refpoint_ = l->common_refpoint (x_refpoint_, X_AXIS); x_refpoint_ = r->common_refpoint (x_refpoint_, X_AXIS); if (!l->break_status_dir ()) - y_refpoint_ = l->common_refpoint (y_refpoint_, Y_AXIS); + y_refpoint_ = l->common_refpoint (y_refpoint_, Y_AXIS); if (!r->break_status_dir ()) - y_refpoint_ = r->common_refpoint (y_refpoint_, Y_AXIS); + y_refpoint_ = r->common_refpoint (y_refpoint_, Y_AXIS); } details_.from_grob (ties[0]); - - Direction d = LEFT; - do + + for (LEFT_and_RIGHT (d)) { - vector bounds; - + vector bounds; + for (vsize i = 0; i < ties.size (); i++) - { - Item *it = dynamic_cast (ties[i])->get_bound (d); - if (it->break_status_dir ()) - it = it->get_column (); - - bounds.push_back (it); - } - + { + Item *it = dynamic_cast (ties[i])->get_bound (d); + if (it->break_status_dir ()) + it = it->get_column (); + + bounds.push_back (it); + } + set_chord_outline (bounds, d); } - while (flip (&d) != LEFT); - for (vsize i = 0; i < ties.size (); i++) { Tie_specification spec; spec.from_grob (ties[i]); - - do - { - spec.note_head_drul_[d] = Tie::head (ties[i], d); - spec.column_ranks_[d] = Tie::get_column_rank (ties[i], d); - } - while (flip (&d) != LEFT); + + for (LEFT_and_RIGHT (d)) + { + spec.note_head_drul_[d] = Tie::head (ties[i], d); + spec.column_ranks_[d] = Tie::get_column_rank (ties[i], d); + } specifications_.push_back (spec); } } void -Tie_formatting_problem::from_semi_ties (vector const &semi_ties, Direction head_dir) +Tie_formatting_problem::from_semi_ties (vector const &semi_ties, Direction head_dir) { if (semi_ties.empty ()) return; - use_horizontal_spacing_ = false; + use_horizontal_spacing_ = false; details_.from_grob (semi_ties[0]); - vector heads; + vector heads; int column_rank = -1; for (vsize i = 0; i < semi_ties.size (); i++) { Tie_specification spec; Item *head = unsmob_item (semi_ties[i]->get_object ("note-head")); - + if (!head) - programming_error ("LV tie without head?!"); + programming_error ("LV tie without head?!"); if (head) - { - spec.position_ = int (Staff_symbol_referencer::get_position (head)); - } + { + spec.position_ = int (Staff_symbol_referencer::get_position (head)); + } spec.from_grob (semi_ties[i]); - + spec.note_head_drul_[head_dir] = head; column_rank = Tie::get_column_rank (semi_ties[i], head_dir); spec.column_ranks_ = Drul_array (column_rank, column_rank); @@ -409,13 +405,13 @@ Tie_formatting_problem::from_semi_ties (vector const &semi_ties, Directio for (vsize i = 0; i < semi_ties.size (); i++) { - x_refpoint_ = semi_ties[i]->common_refpoint (x_refpoint_, X_AXIS); - y_refpoint_ = semi_ties[i]->common_refpoint (y_refpoint_, Y_AXIS); + x_refpoint_ = semi_ties[i]->common_refpoint (x_refpoint_, X_AXIS); + y_refpoint_ = semi_ties[i]->common_refpoint (y_refpoint_, Y_AXIS); } for (vsize i = 0; i < heads.size (); i++) { - x_refpoint_ = heads[i]->common_refpoint (x_refpoint_, X_AXIS); - y_refpoint_ = heads[i]->common_refpoint (y_refpoint_, Y_AXIS) ; + x_refpoint_ = heads[i]->common_refpoint (x_refpoint_, X_AXIS); + y_refpoint_ = heads[i]->common_refpoint (y_refpoint_, Y_AXIS); } set_chord_outline (heads, head_dir); @@ -428,48 +424,47 @@ Tie_formatting_problem::from_semi_ties (vector const &semi_ties, Directio chord_outlines_[open_key].set_minimum_height (extremal - head_dir * 1.5); } - Tie_specification Tie_formatting_problem::get_tie_specification (int i) const { return specifications_[i]; } - /* - Return configuration, create it if necessary. + Return configuration, create it if necessary. */ -Tie_configuration* +Tie_configuration * Tie_formatting_problem::get_configuration (int pos, Direction dir, Drul_array columns, - bool tune_dy) const + bool tune_dy) const { - int key_components[] = { + int key_components[] + = + { pos, dir, columns[LEFT], columns[RIGHT] }; - Tuple key (key_components); - + Tuple key (key_components); + Tie_configuration_map::const_iterator f = possibilities_.find (key); if (f != possibilities_.end ()) { return (*f).second; } - Tie_configuration *conf = generate_configuration (pos, dir, columns, tune_dy); - ((Tie_formatting_problem*) this)->possibilities_[key] = conf; + ((Tie_formatting_problem *) this)->possibilities_[key] = conf; return conf; } -Tie_configuration* +Tie_configuration * Tie_formatting_problem::generate_configuration (int pos, Direction dir, - Drul_array columns, bool y_tune) const + Drul_array columns, bool y_tune) const { Tie_configuration *conf = new Tie_configuration; conf->position_ = pos; conf->dir_ = dir; - + conf->column_ranks_ = columns; - + Real y = conf->position_ * 0.5 * details_.staff_space_; if (dot_positions_.find (pos) != dot_positions_.end ()) @@ -477,79 +472,82 @@ Tie_formatting_problem::generate_configuration (int pos, Direction dir, conf->delta_y_ += dir * 0.25 * details_.staff_space_; y_tune = false; } - + if (y_tune && max (fabs (get_head_extent (columns[LEFT], LEFT, Y_AXIS)[dir] - y), - fabs (get_head_extent (columns[RIGHT], RIGHT, Y_AXIS)[dir] - y)) < 0.25 + fabs (get_head_extent (columns[RIGHT], RIGHT, Y_AXIS)[dir] - y)) < 0.25 && !Staff_symbol_referencer::on_line (details_.staff_symbol_referencer_, pos)) { - conf->delta_y_ = - (get_head_extent (columns[LEFT], LEFT, Y_AXIS)[dir] - y) - + dir * details_.outer_tie_vertical_gap_; + conf->delta_y_ + = (get_head_extent (columns[LEFT], LEFT, Y_AXIS)[dir] - y) + + dir * details_.outer_tie_vertical_gap_; } if (y_tune) { conf->attachment_x_ = get_attachment (y + conf->delta_y_, conf->column_ranks_); - Real h = conf->height (details_); - + Real h = conf->height (details_); + /* - TODO: + TODO: + + - should make sliding criterion, should flatten ties if - - should make sliding criterion, should flatten ties if + - they're just the wrong (ie. touching line at top & bottom) + size. - - they're just the wrong (ie. touching line at top & bottom) - size. - */ + Interval staff_span + = Staff_symbol_referencer::staff_span (details_.staff_symbol_referencer_); + staff_span.widen (-1); + bool const within_staff = staff_span.contains (pos); if (head_positions_slice (columns[LEFT]).contains (pos) - || head_positions_slice (columns[RIGHT]).contains (pos) - || abs (pos) < 2 * Staff_symbol_referencer::staff_radius (details_.staff_symbol_referencer_)) - { - if (h < details_.intra_space_threshold_ * 0.5 * details_.staff_space_) - { - if (!Staff_symbol_referencer::on_line (details_.staff_symbol_referencer_, pos) - && abs (pos) < 2 * Staff_symbol_referencer::staff_radius (details_.staff_symbol_referencer_)) - { - conf->center_tie_vertically (details_); - } - else if (Staff_symbol_referencer::on_line (details_.staff_symbol_referencer_, pos)) - { - conf->delta_y_ += dir * - details_.tip_staff_line_clearance_ * 0.5 * details_.staff_space_; - } - } - else - { - Real top_y = y + conf->delta_y_ + conf->dir_ * h; - Real top_pos = top_y / (0.5*details_.staff_space_); - int round_pos = int (my_round (top_pos)); - - /* TODO: should use other variable? */ - Real clearance = details_.center_staff_line_clearance_; - if (fabs (top_pos - round_pos) < clearance - && Staff_symbol_referencer::on_staff_line (details_.staff_symbol_referencer_, - round_pos)) - { - Real new_y = (round_pos + clearance * conf->dir_) * 0.5 * details_.staff_space_; - conf->delta_y_ = (new_y - top_y); - } - } - } - } + || head_positions_slice (columns[RIGHT]).contains (pos) + || within_staff) + { + if (h < details_.intra_space_threshold_ * 0.5 * details_.staff_space_) + { + if (Staff_symbol_referencer::on_line (details_.staff_symbol_referencer_, pos)) + { + conf->delta_y_ += dir * + details_.tip_staff_line_clearance_ * 0.5 * details_.staff_space_; + } + else if (within_staff) + { + conf->center_tie_vertically (details_); + } + } + else + { + Real top_y = y + conf->delta_y_ + conf->dir_ * h; + Real top_pos = top_y / (0.5 * details_.staff_space_); + int round_pos = int (my_round (top_pos)); + + /* TODO: should use other variable? */ + Real clearance = details_.center_staff_line_clearance_; + if (fabs (top_pos - round_pos) < clearance + && Staff_symbol_referencer::on_staff_line (details_.staff_symbol_referencer_, + round_pos)) + { + Real new_y = (round_pos + clearance * conf->dir_) * 0.5 * details_.staff_space_; + conf->delta_y_ = (new_y - top_y); + } + } + } + } conf->attachment_x_ = get_attachment (y + conf->delta_y_, conf->column_ranks_); if (conf->height (details_) < details_.intra_space_threshold_ * 0.5 * details_.staff_space_) { /* - This is less sensible for long ties, since those are more - horizontal. + This is less sensible for long ties, since those are more + horizontal. */ Interval close_by = get_attachment (y - + conf->delta_y_ - + (dir * details_.intra_space_threshold_ * 0.25 - * details_.staff_space_), - conf->column_ranks_); - + + conf->delta_y_ + + (dir * details_.intra_space_threshold_ * 0.25 + * details_.staff_space_), + conf->column_ranks_); + conf->attachment_x_.intersect (close_by); } @@ -558,26 +556,24 @@ Tie_formatting_problem::generate_configuration (int pos, Direction dir, if (conf->column_span_length ()) { /* - avoid the stems that we attach to as well. We don't do this - for semities (span length = 0) + avoid the stems that we attach to as well. We don't do this + for semities (span length = 0) - It would be better to check D against HEAD-DIRECTION if - applicable. + It would be better to check D against HEAD-DIRECTION if + applicable. */ - Direction d = LEFT; - do - { - Real y = conf->position_ * details_.staff_space_ * 0.5 + conf->delta_y_; - if (get_stem_extent (conf->column_ranks_[d], d, X_AXIS).is_empty () - || !get_stem_extent (conf->column_ranks_[d], d, Y_AXIS).contains (y)) - continue; - - conf->attachment_x_[d] = - d * min (d * conf->attachment_x_[d], - d * (get_stem_extent (conf->column_ranks_[d], d, X_AXIS)[-d] - d * details_.stem_gap_)); - } - while (flip (&d) != LEFT); - } + for (LEFT_and_RIGHT (d)) + { + Real y = conf->position_ * details_.staff_space_ * 0.5 + conf->delta_y_; + if (get_stem_extent (conf->column_ranks_[d], d, X_AXIS).is_empty () + || !get_stem_extent (conf->column_ranks_[d], d, Y_AXIS).contains (y)) + continue; + + conf->attachment_x_[d] + = d * min (d * conf->attachment_x_[d], + d * (get_stem_extent (conf->column_ranks_[d], d, X_AXIS)[-d] - d * details_.stem_gap_)); + } + } return conf; } @@ -606,19 +602,19 @@ Tie_formatting_problem::get_stem_extent (int col, Direction d, Axis a) const */ Real Tie_formatting_problem::score_aptitude (Tie_configuration *conf, - Tie_specification const &spec, - Ties_configuration *ties_conf, int tie_idx) const + Tie_specification const &spec, + Ties_configuration *ties_conf, int tie_idx) const { Real penalty = 0.0; Real curve_y = conf->position_ * details_.staff_space_ * 0.5 + conf->delta_y_; Real tie_y = spec.position_ * details_.staff_space_ * 0.5; if (sign (curve_y - tie_y) != conf->dir_) { - Real p = details_.wrong_direction_offset_penalty_; + Real p = details_.wrong_direction_offset_penalty_; if (ties_conf) - ties_conf->add_tie_score (p, tie_idx, "wrong dir"); + ties_conf->add_tie_score (p, tie_idx, "wrong dir"); else - penalty += p; + penalty += p; } { @@ -627,79 +623,73 @@ Tie_formatting_problem::score_aptitude (Tie_configuration *conf, if (ties_conf) ties_conf->add_tie_score (p, tie_idx, "vdist"); else - penalty += p; + penalty += p; } - - Direction d = LEFT; - do + + for (LEFT_and_RIGHT (d)) { if (!spec.note_head_drul_[d]) - continue; - + continue; + Interval head_x = spec.note_head_drul_[d]->extent (x_refpoint_, X_AXIS); Real dist = head_x.distance (conf->attachment_x_[d]); - /* - TODO: flatten with log or sqrt. + TODO: flatten with log or sqrt. */ Real p = details_.horizontal_distance_penalty_factor_ - * convex_amplifier (1.25, 1.0, dist); + * convex_amplifier (1.25, 1.0, dist); if (ties_conf) - ties_conf->add_tie_score (p, tie_idx, - (d == LEFT) ? "lhdist" : "rhdist"); + ties_conf->add_tie_score (p, tie_idx, + (d == LEFT) ? "lhdist" : "rhdist"); else - penalty += p; + penalty += p; } - while (flip (&d) != LEFT); if (ties_conf && ties_conf->size () == 1) { - Direction d = LEFT; - Drul_array stems (0, 0); - do - { - if (!spec.note_head_drul_[d]) - continue; - - Grob *stem = unsmob_grob (spec.note_head_drul_[d]->get_object ("stem")); - if (stem - && Stem::is_normal_stem (stem)) - stems[d] = stem; - } - while (flip (&d) != LEFT); + Drul_array stems (0, 0); + for (LEFT_and_RIGHT (d)) + { + if (!spec.note_head_drul_[d]) + continue; + + Grob *stem = unsmob_grob (spec.note_head_drul_[d]->get_object ("stem")); + if (stem + && Stem::is_normal_stem (stem)) + stems[d] = stem; + } bool tie_stem_dir_ok = true; bool tie_position_dir_ok = true; if (stems[LEFT] && !stems[RIGHT]) - tie_stem_dir_ok = conf->dir_ != get_grob_direction (stems[LEFT]); + tie_stem_dir_ok = conf->dir_ != get_grob_direction (stems[LEFT]); else if (!stems[LEFT] && stems[RIGHT]) - tie_stem_dir_ok = conf->dir_ != get_grob_direction (stems[RIGHT]); + tie_stem_dir_ok = conf->dir_ != get_grob_direction (stems[RIGHT]); else if (stems[LEFT] && stems[RIGHT] - && get_grob_direction (stems[LEFT]) == get_grob_direction (stems[RIGHT])) - tie_stem_dir_ok = conf->dir_ != get_grob_direction (stems[LEFT]); + && get_grob_direction (stems[LEFT]) == get_grob_direction (stems[RIGHT])) + tie_stem_dir_ok = conf->dir_ != get_grob_direction (stems[LEFT]); else if (spec.position_) - tie_position_dir_ok = conf->dir_ == sign (spec.position_); + tie_position_dir_ok = conf->dir_ == sign (spec.position_); if (!tie_stem_dir_ok) - ties_conf->add_score (details_.same_dir_as_stem_penalty_, "tie/stem dir"); + ties_conf->add_score (details_.same_dir_as_stem_penalty_, "tie/stem dir"); if (!tie_position_dir_ok) - ties_conf->add_score (details_.same_dir_as_stem_penalty_, "tie/pos dir"); + ties_conf->add_score (details_.same_dir_as_stem_penalty_, "tie/pos dir"); } - + return penalty; } - Slice Tie_formatting_problem::head_positions_slice (int rank) const { Position_extent_map::const_iterator i (head_positions_.find (rank)); if (i != head_positions_.end ()) { - return (*i).second; + return (*i).second; } Slice empty; return empty; @@ -714,70 +704,72 @@ Tie_formatting_problem::score_configuration (Tie_configuration *conf) const { if (conf->scored_) { - return ; + return; } - + Real length = conf->attachment_x_.length (); Real length_penalty = peak_around (0.33 * details_.min_length_, details_.min_length_, length); conf->add_score (details_.min_length_penalty_factor_ - * length_penalty, "minlength"); - + * length_penalty, "minlength"); + Real tip_pos = conf->position_ + conf->delta_y_ / 0.5 * details_.staff_space_; Real tip_y = tip_pos * details_.staff_space_ * 0.5; - Real height = conf->height (details_); + Real height = conf->height (details_); Real top_y = tip_y + conf->dir_ * height; Real top_pos = 2 * top_y / details_.staff_space_; Real round_top_pos = rint (top_pos); + Interval staff_span + = Staff_symbol_referencer::staff_span (details_.staff_symbol_referencer_); if (Staff_symbol_referencer::on_line (details_.staff_symbol_referencer_, - int (round_top_pos)) - && Staff_symbol_referencer::staff_radius (details_.staff_symbol_referencer_) > top_y) + int (round_top_pos)) + && staff_span[UP] * 0.5 > top_y) { - conf->add_score ( - details_.staff_line_collision_penalty_ - * peak_around (0.1 * details_.center_staff_line_clearance_, - details_.center_staff_line_clearance_, - fabs (top_pos - round_top_pos)), - "line center"); + conf->add_score (details_.staff_line_collision_penalty_ + * peak_around (0.1 * details_.center_staff_line_clearance_, + details_.center_staff_line_clearance_, + fabs (top_pos - round_top_pos)), + "line center"); } int rounded_tip_pos = int (rint (tip_pos)); + staff_span.widen (-1); if (Staff_symbol_referencer::on_line (details_.staff_symbol_referencer_, rounded_tip_pos) && (head_positions_slice (conf->column_ranks_[LEFT]).contains (rounded_tip_pos) - || head_positions_slice (conf->column_ranks_[RIGHT]).contains (rounded_tip_pos) - || abs (rounded_tip_pos) < 2 * Staff_symbol_referencer::staff_radius (details_.staff_symbol_referencer_)) - ) + || head_positions_slice (conf->column_ranks_[RIGHT]).contains (rounded_tip_pos) + || staff_span.contains (rounded_tip_pos)) + ) { conf->add_score (details_.staff_line_collision_penalty_ - * peak_around (0.1 * details_.tip_staff_line_clearance_, - details_.tip_staff_line_clearance_, - fabs (tip_pos - rint (tip_pos))), - "tipline"); + * peak_around (0.1 * details_.tip_staff_line_clearance_, + details_.tip_staff_line_clearance_, + fabs (tip_pos - rint (tip_pos))), + "tipline"); } if (!dot_x_.is_empty ()) { /* use left edge? */ Real x = dot_x_.center (); - + Bezier b = conf->get_transformed_bezier (details_); if (b.control_point_extent (X_AXIS).contains (x)) - { - Real y = b.get_other_coordinate (X_AXIS, x); - - for (set::const_iterator i (dot_positions_.begin ()); - i != dot_positions_.end (); i ++) - { - int dot_pos = (*i); - conf->add_score (details_.dot_collision_penalty_ - * peak_around (.1 * details_.dot_collision_clearance_, - details_.dot_collision_clearance_, - fabs (dot_pos * details_.staff_space_ * 0.5 - y)), - "dot collision"); - } - } + { + Real y = b.get_other_coordinate (X_AXIS, x); + + for (set::const_iterator i (dot_positions_.begin ()); + i != dot_positions_.end (); i++) + { + int dot_pos = (*i); + conf->add_score (details_.dot_collision_penalty_ + * peak_around (.1 * details_.dot_collision_clearance_, + details_.dot_collision_clearance_, + fabs (dot_pos * details_.staff_space_ * 0.5 - y)), + "dot collision"); + } + } } conf->scored_ = true; @@ -786,7 +778,7 @@ Tie_formatting_problem::score_configuration (Tie_configuration *conf) const void Tie_formatting_problem::score_ties_aptitude (Ties_configuration *ties) const { - if (ties->size () != specifications_.size ()) + if (ties->size () != specifications_.size ()) { programming_error ("Huh? Mismatch between sizes."); return; @@ -794,7 +786,7 @@ Tie_formatting_problem::score_ties_aptitude (Ties_configuration *ties) const for (vsize i = 0; i < ties->size (); i++) score_aptitude (&ties->at (i), specifications_[i], - ties, i); + ties, i); } void @@ -802,7 +794,7 @@ Tie_formatting_problem::score_ties (Ties_configuration *ties) const { if (ties->scored_) return; - + score_ties_configuration (ties); score_ties_aptitude (ties); ties->scored_ = true; @@ -816,33 +808,33 @@ Tie_formatting_problem::score_ties_configuration (Ties_configuration *ties) cons score_configuration (&ties->at (i)); ties->add_tie_score (ties->at (i).score (), i, "conf"); } - + Real last_edge = 0.0; Real last_center = 0.0; for (vsize i = 0; i < ties->size (); i++) { Bezier b (ties->at (i).get_transformed_bezier (details_)); - + Real center = b.curve_point (0.5)[Y_AXIS]; Real edge = b.curve_point (0.0)[Y_AXIS]; - + if (i) - { - if (edge <= last_edge) - ties->add_score (details_.tie_column_monotonicity_penalty_, "monoton edge"); - if (center <= last_center) - ties->add_score (details_.tie_column_monotonicity_penalty_, "monoton cent"); - - ties->add_score (details_.tie_tie_collision_penalty_ * - peak_around (0.1 * details_.tie_tie_collision_distance_, - details_.tie_tie_collision_distance_, - fabs (center - last_center)), - "tietie center"); - ties->add_score (details_.tie_tie_collision_penalty_ * - peak_around (0.1 * details_.tie_tie_collision_distance_, - details_.tie_tie_collision_distance_, - fabs (edge - last_edge)), "tietie edge"); - } + { + if (edge <= last_edge) + ties->add_score (details_.tie_column_monotonicity_penalty_, "monoton edge"); + if (center <= last_center) + ties->add_score (details_.tie_column_monotonicity_penalty_, "monoton cent"); + + ties->add_score (details_.tie_tie_collision_penalty_ * + peak_around (0.1 * details_.tie_tie_collision_distance_, + details_.tie_tie_collision_distance_, + fabs (center - last_center)), + "tietie center"); + ties->add_score (details_.tie_tie_collision_penalty_ * + peak_around (0.1 * details_.tie_tie_collision_distance_, + details_.tie_tie_collision_distance_, + fabs (edge - last_edge)), "tietie edge"); + } last_edge = edge; last_center = center; @@ -851,18 +843,18 @@ Tie_formatting_problem::score_ties_configuration (Ties_configuration *ties) cons if (ties->size () > 1) { ties->add_score (details_.outer_tie_length_symmetry_penalty_factor_ - * fabs (ties->at (0).attachment_x_.length () - ties->back ().attachment_x_.length ()), - "length symm"); - + * fabs (ties->at (0).attachment_x_.length () - ties->back ().attachment_x_.length ()), + "length symm"); + ties->add_score (details_.outer_tie_vertical_distance_symmetry_penalty_factor_ - * fabs (fabs (specifications_[0].position_ * 0.5 * details_.staff_space_ - - (ties->at (0).position_ * 0.5 * details_.staff_space_ - + ties->at (0).delta_y_)) - - - fabs (specifications_.back ().position_ * 0.5 * details_.staff_space_ - - (ties->back ().position_ * 0.5 * details_.staff_space_ - + ties->back ().delta_y_))), - "pos symmetry"); + * fabs (fabs (specifications_[0].position_ * 0.5 * details_.staff_space_ + - (ties->at (0).position_ * 0.5 * details_.staff_space_ + + ties->at (0).delta_y_)) + - + fabs (specifications_.back ().position_ * 0.5 * details_.staff_space_ + - (ties->back ().position_ * 0.5 * details_.staff_space_ + + ties->back ().delta_y_))), + "pos symmetry"); } } @@ -876,41 +868,41 @@ Tie_formatting_problem::generate_ties_configuration (Ties_configuration const &t Ties_configuration copy; for (vsize i = 0; i < ties_config.size (); i++) { - Tie_configuration * ptr = get_configuration (ties_config[i].position_, ties_config[i].dir_, - ties_config[i].column_ranks_, - !specifications_[i].has_manual_delta_y_); + Tie_configuration *ptr = get_configuration (ties_config[i].position_, ties_config[i].dir_, + ties_config[i].column_ranks_, + !specifications_[i].has_manual_delta_y_); if (specifications_[i].has_manual_delta_y_) - { - ptr->delta_y_ - = (specifications_[i].manual_position_ - ties_config[i].position_) - * 0.5 * details_.staff_space_; - } + { + ptr->delta_y_ + = (specifications_[i].manual_position_ - ties_config[i].position_) + * 0.5 * details_.staff_space_; + } copy.push_back (*ptr); } - + return copy; } Ties_configuration -Tie_formatting_problem::generate_base_chord_configuration () +Tie_formatting_problem::generate_base_chord_configuration () { Ties_configuration ties_config; - for (vsize i = 0; i < specifications_.size (); i ++) + for (vsize i = 0; i < specifications_.size (); i++) { Tie_configuration conf; if (specifications_[i].has_manual_dir_) - conf.dir_ = specifications_[i].manual_dir_; + conf.dir_ = specifications_[i].manual_dir_; if (specifications_[i].has_manual_position_) - { - conf.position_ = (int) my_round (specifications_[i].manual_position_); - if (specifications_[i].has_manual_delta_y_) - conf.delta_y_ = (specifications_[i].manual_position_ - conf.position_) - * 0.5 * details_.staff_space_; - } + { + conf.position_ = (int) my_round (specifications_[i].manual_position_); + if (specifications_[i].has_manual_delta_y_) + conf.delta_y_ = (specifications_[i].manual_position_ - conf.position_) + * 0.5 * details_.staff_space_; + } else - { - conf.position_ = specifications_[i].position_; - } + { + conf.position_ = specifications_[i].position_; + } conf.column_ranks_ = specifications_[i].column_ranks_; ties_config.push_back (conf); @@ -922,16 +914,16 @@ Tie_formatting_problem::generate_base_chord_configuration () ties_config[i].position_ += ties_config[i].dir_; ties_config = generate_ties_configuration (ties_config); - + return ties_config; } Ties_configuration Tie_formatting_problem::find_best_variation (Ties_configuration const &base, - vector const &vars) + vector const &vars) { Ties_configuration best = base; - + /* This simply is 1-opt: we have K substitions, and we try applying exactly every one for each. @@ -939,22 +931,20 @@ Tie_formatting_problem::find_best_variation (Ties_configuration const &base, for (vsize i = 0; i < vars.size (); i++) { Ties_configuration variant (base); - for (vsize j = 0; j < vars[i].index_suggestion_pairs_.size(); j++) - variant[vars[i].index_suggestion_pairs_[j].first] = *vars[i].index_suggestion_pairs_[j].second; + for (vsize j = 0; j < vars[i].index_suggestion_pairs_.size (); j++) + variant[vars[i].index_suggestion_pairs_[j].first] = *vars[i].index_suggestion_pairs_[j].second; variant.reset_score (); score_ties (&variant); - + if (variant.score () < best.score ()) - { - best = variant; - } + { + best = variant; + } } return best; } - - Ties_configuration Tie_formatting_problem::generate_optimal_configuration () @@ -962,7 +952,7 @@ Tie_formatting_problem::generate_optimal_configuration () Ties_configuration base = generate_base_chord_configuration (); score_ties (&base); - vector vars; + vector vars; if (specifications_.size () > 1) vars = generate_collision_variations (base); else @@ -982,18 +972,18 @@ void Tie_formatting_problem::set_ties_config_standard_directions (Ties_configuration *tie_configs) { if (tie_configs->empty ()) - return ; + return; if (!tie_configs->at (0).dir_) { if (tie_configs->size () == 1) - tie_configs->at (0).dir_ = Direction (sign (tie_configs->at (0).position_)); + tie_configs->at (0).dir_ = Direction (sign (tie_configs->at (0).position_)); if (!tie_configs->at (0).dir_) - tie_configs->at (0).dir_ - = (tie_configs->size() > 1) ? DOWN : details_.neutral_direction_; + tie_configs->at (0).dir_ + = (tie_configs->size () > 1) ? DOWN : details_.neutral_direction_; } - + if (!tie_configs->back ().dir_) tie_configs->back ().dir_ = UP; @@ -1003,36 +993,36 @@ Tie_formatting_problem::set_ties_config_standard_directions (Ties_configuration for (vsize i = 1; i < tie_configs->size (); i++) { Real diff = (tie_configs->at (i).position_ - -tie_configs->at (i-1).position_); - - Real span_diff - = specifications_[i].column_span () - specifications_[i-1].column_span (); + - tie_configs->at (i - 1).position_); + + Real span_diff + = specifications_[i].column_span () - specifications_[i - 1].column_span (); if (span_diff && fabs (diff) <= 2) - { - if (span_diff > 0) - tie_configs->at (i).dir_ = UP; - else if (span_diff < 0) - tie_configs->at (i-1).dir_ = DOWN; - } + { + if (span_diff > 0) + tie_configs->at (i).dir_ = UP; + else if (span_diff < 0) + tie_configs->at (i - 1).dir_ = DOWN; + } else if (fabs (diff) <= 1) - { - if (!tie_configs->at (i-1).dir_) - tie_configs->at (i-1).dir_ = DOWN; - if (!tie_configs->at (i).dir_) - tie_configs->at (i).dir_ = UP; - } + { + if (!tie_configs->at (i - 1).dir_) + tie_configs->at (i - 1).dir_ = DOWN; + if (!tie_configs->at (i).dir_) + tie_configs->at (i).dir_ = UP; + } } for (vsize i = 1; i + 1 < tie_configs->size (); i++) { Tie_configuration &conf = tie_configs->at (i); if (conf.dir_) - continue; + continue; - Direction position_dir = - Direction (sign (conf.position_)); + Direction position_dir + = Direction (sign (conf.position_)); if (!position_dir) - position_dir = DOWN; + position_dir = DOWN; conf.dir_ = position_dir; } @@ -1042,33 +1032,31 @@ vector Tie_formatting_problem::generate_extremal_tie_variations (Ties_configuration const &ties) const { vector vars; - Direction d = DOWN; for (int i = 1; i <= details_.multi_tie_region_size_; i++) { - Drul_array configs (0, 0); - do - { - const Tie_configuration &config = boundary (ties, d, 0); - if (config.dir_ == d - && !boundary (specifications_, d, 0).has_manual_position_) - { - Tie_configuration_variation var; - configs[d] = get_configuration (config.position_ + d * i, d, - config.column_ranks_, - true); - var.add_suggestion((d == DOWN) ? 0 : ties.size () - 1, - configs[d]); - vars.push_back (var); - } - } - while (flip (&d) != DOWN); + Drul_array configs (0, 0); + for (DOWN_and_UP (d)) + { + const Tie_configuration &config = boundary (ties, d, 0); + if (config.dir_ == d + && !boundary (specifications_, d, 0).has_manual_position_) + { + Tie_configuration_variation var; + configs[d] = get_configuration (config.position_ + d * i, d, + config.column_ranks_, + true); + var.add_suggestion ((d == DOWN) ? 0 : ties.size () - 1, + configs[d]); + vars.push_back (var); + } + } if (configs[LEFT] && configs[RIGHT]) - { - Tie_configuration_variation var; - var.add_suggestion(0, configs[DOWN]); - var.add_suggestion(ties.size() - 1, configs[UP]); - vars.push_back (var); - } + { + Tie_configuration_variation var; + var.add_suggestion (0, configs[DOWN]); + var.add_suggestion (ties.size () - 1, configs[UP]); + vars.push_back (var); + } } return vars; @@ -1082,122 +1070,118 @@ Tie_formatting_problem::generate_single_tie_variations (Ties_configuration const int sz = details_.single_tie_region_size_; if (specifications_[0].has_manual_position_) sz = 1; - for (int i = 0; i < sz; i ++) + for (int i = 0; i < sz; i++) { - Direction d = LEFT; - do - { - if (i == 0 - && ties[0].dir_ == d) - continue; - - int p = ties[0].position_ + i * d; - - if (!specifications_[0].has_manual_dir_ - || d == specifications_[0].manual_dir_) - { - Tie_configuration_variation var; - var.add_suggestion(0, - get_configuration (p, - d, specifications_[0].column_ranks_, - !specifications_[0].has_manual_delta_y_)); - vars.push_back (var); - } - } - while (flip (&d) != LEFT); + for (LEFT_and_RIGHT (d)) + { + if (i == 0 + && ties[0].dir_ == d) + continue; + + int p = ties[0].position_ + i * d; + + if (!specifications_[0].has_manual_dir_ + || d == specifications_[0].manual_dir_) + { + Tie_configuration_variation var; + var.add_suggestion (0, + get_configuration (p, + d, specifications_[0].column_ranks_, + !specifications_[0].has_manual_delta_y_)); + vars.push_back (var); + } + } } return vars; } - vector Tie_formatting_problem::generate_collision_variations (Ties_configuration const &ties) const { Real center_distance_tolerance = 0.25; - + vector vars; Real last_center = 0.0; for (vsize i = 0; i < ties.size (); i++) { Bezier b (ties[i].get_transformed_bezier (details_)); - + Real center = b.curve_point (0.5)[Y_AXIS]; - + if (i) - { - if (center <= last_center + center_distance_tolerance) - { - if (!specifications_[i].has_manual_dir_) - { - Tie_configuration_variation var; - var.add_suggestion(i, - get_configuration (specifications_[i].position_ - - ties[i].dir_, - - ties[i].dir_, - - ties[i].column_ranks_, - !specifications_[i].has_manual_delta_y_ - )); - - vars.push_back (var); - } - - if (!specifications_[i-1].has_manual_dir_) - { - Tie_configuration_variation var; - var.add_suggestion(i-1, - get_configuration (specifications_[i-1].position_ - - ties[i-1].dir_, - - ties[i-1].dir_, - specifications_[i-1].column_ranks_, - !specifications_[i-1].has_manual_delta_y_)); - - vars.push_back (var); - } - - if (i == 1 && !specifications_[i-1].has_manual_position_ - && ties[i-1].dir_ == DOWN) - { - Tie_configuration_variation var; - var.add_suggestion(i-1, - get_configuration (specifications_[i-1].position_ - 1, DOWN, - specifications_[i-1].column_ranks_, - !specifications_[i-1].has_manual_delta_y_ - )); - vars.push_back (var); - } - if (i == ties.size () && !specifications_[i].has_manual_position_ - && ties[i].dir_ == UP) - { - Tie_configuration_variation var; - var.add_suggestion(i, - get_configuration (specifications_[i].position_ - + 1, UP, - specifications_[i].column_ranks_, - !specifications_[i].has_manual_delta_y_ - )); - vars.push_back (var); - } - } - else if (dot_positions_.find (ties[i].position_) != dot_positions_.end () - && !specifications_[i].has_manual_position_) - { - Tie_configuration_variation var; - var.add_suggestion(i, - get_configuration (ties[i].position_ + ties[i].dir_, - ties[i].dir_, - ties[i].column_ranks_, - !specifications_[i].has_manual_delta_y_ - )); - vars.push_back (var); - } - - } + { + if (center <= last_center + center_distance_tolerance) + { + if (!specifications_[i].has_manual_dir_) + { + Tie_configuration_variation var; + var.add_suggestion (i, + get_configuration (specifications_[i].position_ + - ties[i].dir_, + - ties[i].dir_, + + ties[i].column_ranks_, + !specifications_[i].has_manual_delta_y_ + )); + + vars.push_back (var); + } + + if (!specifications_[i - 1].has_manual_dir_) + { + Tie_configuration_variation var; + var.add_suggestion (i - 1, + get_configuration (specifications_[i - 1].position_ + - ties[i - 1].dir_, + - ties[i - 1].dir_, + specifications_[i - 1].column_ranks_, + !specifications_[i - 1].has_manual_delta_y_)); + + vars.push_back (var); + } + + if (i == 1 && !specifications_[i - 1].has_manual_position_ + && ties[i - 1].dir_ == DOWN) + { + Tie_configuration_variation var; + var.add_suggestion (i - 1, + get_configuration (specifications_[i - 1].position_ - 1, DOWN, + specifications_[i - 1].column_ranks_, + !specifications_[i - 1].has_manual_delta_y_ + )); + vars.push_back (var); + } + if (i == ties.size () && !specifications_[i].has_manual_position_ + && ties[i].dir_ == UP) + { + Tie_configuration_variation var; + var.add_suggestion (i, + get_configuration (specifications_[i].position_ + + 1, UP, + specifications_[i].column_ranks_, + !specifications_[i].has_manual_delta_y_ + )); + vars.push_back (var); + } + } + else if (dot_positions_.find (ties[i].position_) != dot_positions_.end () + && !specifications_[i].has_manual_position_) + { + Tie_configuration_variation var; + var.add_suggestion (i, + get_configuration (ties[i].position_ + ties[i].dir_, + ties[i].dir_, + ties[i].column_ranks_, + !specifications_[i].has_manual_delta_y_ + )); + vars.push_back (var); + } + + } last_center = center; } - return vars; } @@ -1210,40 +1194,39 @@ Tie_formatting_problem::set_manual_tie_configuration (SCM manual_configs) { SCM entry = scm_car (s); if (scm_is_pair (entry)) - { - Tie_specification &spec = specifications_[k]; - - if (scm_is_number (scm_car (entry))) - { - spec.has_manual_position_ = true; - spec.manual_position_ = scm_to_double (scm_car (entry)); - spec.has_manual_delta_y_ = (scm_inexact_p (scm_car (entry)) == SCM_BOOL_T); - } - - if (scm_is_number (scm_cdr (entry))) - { - spec.has_manual_dir_ = true; - spec.manual_dir_ = Direction (scm_to_int (scm_cdr (entry))); - } - } - k ++; + { + Tie_specification &spec = specifications_[k]; + + if (scm_is_number (scm_car (entry))) + { + spec.has_manual_position_ = true; + spec.manual_position_ = scm_to_double (scm_car (entry)); + spec.has_manual_delta_y_ = (scm_inexact_p (scm_car (entry)) == SCM_BOOL_T); + } + + if (scm_is_number (scm_cdr (entry))) + { + spec.has_manual_dir_ = true; + spec.manual_dir_ = Direction (scm_to_int (scm_cdr (entry))); + } + } + k++; } } - void Tie_formatting_problem::set_debug_scoring (Ties_configuration const &base) { #if DEBUG_TIE_SCORING if (to_boolean (x_refpoint_->layout () - ->lookup_variable (ly_symbol2scm ("debug-tie-scoring")))) + ->lookup_variable (ly_symbol2scm ("debug-tie-scoring")))) { for (vsize i = 0; i < base.size (); i++) - { - string card = base.complete_tie_card (i); - specifications_[i].tie_grob_->set_property ("annotation", - ly_string2scm (card)); - } + { + string card = base.complete_tie_card (i); + specifications_[i].tie_grob_->set_property ("annotation", + ly_string2scm (card)); + } } #endif -} +} diff --git a/lily/tie-performer.cc b/lily/tie-performer.cc index 5d237c1de3..9ef199ddff 100644 --- a/lily/tie-performer.cc +++ b/lily/tie-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,7 +39,6 @@ struct Head_audio_event_tuple } }; - class Tie_performer : public Performer { Stream_event *event_; @@ -90,31 +89,30 @@ Tie_performer::acknowledge_audio_element (Audio_element_info inf) else now_heads_.push_back (inf_mom); - // Find a previous note that ties to the current note. If it exists, + // Find a previous note that ties to the current note. If it exists, // remove it from the heads_to_tie vector and create the tie list::iterator it; bool found = false; Stream_event *right_mus = inf.event_; - for (it = heads_to_tie_.begin (); - !found && (it != heads_to_tie_.end()); - it++) - { - Audio_element_info et = (*it).head_; - Audio_note *th = dynamic_cast (et.elem_); - Stream_event *left_mus = et.event_; - - if (th && right_mus && left_mus - && ly_is_equal (right_mus->get_property ("pitch"), - left_mus->get_property ("pitch"))) - { - found = true; - // (*it).moment_ already stores the end of the tied note! - Moment skip = now_mom() - (*it).end_moment_; - an->tie_to (th, skip); - // this invalidates the iterator, we are leaving the loop anyway - heads_to_tie_.erase (it); - } - } + for (it = heads_to_tie_.begin (); + !found && (it != heads_to_tie_.end ()); + it++) + { + Audio_element_info et = (*it).head_; + Audio_note *th = dynamic_cast (et.elem_); + Stream_event *left_mus = et.event_; + + if (th && right_mus && left_mus + && ly_is_equal (right_mus->get_property ("pitch"), + left_mus->get_property ("pitch"))) + { + found = true; + // (*it).moment_ already stores the end of the tied note! + Moment skip = now_mom () - (*it).end_moment_; + an->tie_to (th, skip); + it = heads_to_tie_.erase (it); + } + } } } @@ -122,7 +120,7 @@ void Tie_performer::start_translation_timestep () { context ()->set_property ("tieMelismaBusy", - ly_bool2scm (heads_to_tie_.size ())); + ly_bool2scm (heads_to_tie_.size ())); } // a predicate implemented as a class, used to delete all tied notes with end @@ -133,7 +131,8 @@ protected: Moment now; public: end_moment_passed (Moment mom) : now (mom) {} - bool operator() (const Head_audio_event_tuple &value) { + bool operator () (const Head_audio_event_tuple &value) + { return (value.end_moment_ <= now); } }; @@ -161,15 +160,15 @@ Tie_performer::stop_translation_timestep () } ADD_TRANSLATOR (Tie_performer, - /* doc */ - "Generate ties between note heads of equal pitch.", + /* doc */ + "Generate ties between note heads of equal pitch.", - /* create */ - "", + /* create */ + "", - /* read */ - "tieWaitForNote", + /* read */ + "tieWaitForNote", - /* write */ - "tieMelismaBusy" - ); + /* write */ + "tieMelismaBusy" + ); diff --git a/lily/tie-specification.cc b/lily/tie-specification.cc index 3a7ce345cb..0413495713 100644 --- a/lily/tie-specification.cc +++ b/lily/tie-specification.cc @@ -13,13 +13,12 @@ Tie_specification::Tie_specification () position_ = 0; manual_position_ = 0; manual_dir_ = CENTER; - note_head_drul_[LEFT] = - note_head_drul_[RIGHT] = 0; - column_ranks_[RIGHT] = - column_ranks_[LEFT] = 0; + note_head_drul_[LEFT] + = note_head_drul_[RIGHT] = 0; + column_ranks_[RIGHT] + = column_ranks_[LEFT] = 0; } - void Tie_specification::from_grob (Grob *tie) { @@ -29,7 +28,7 @@ Tie_specification::from_grob (Grob *tie) manual_dir_ = to_dir (tie->get_property ("direction")); has_manual_dir_ = true; } - + position_ = Tie::get_position (tie); SCM pos_scm = tie->get_property ("staff-position"); if (scm_is_number (pos_scm)) diff --git a/lily/tie.cc b/lily/tie.cc index e8b21d8544..23e8d4c7da 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -60,8 +60,8 @@ Tie::head (Grob *me, Direction d) Direction hd = to_dir (me->get_property ("head-direction")); return (hd == d) - ? unsmob_grob (me->get_object ("note-head")) - : 0; + ? unsmob_grob (me->get_object ("note-head")) + : 0; } Item *it = dynamic_cast (me)->get_bound (d); @@ -92,21 +92,19 @@ Tie::get_column_rank (Grob *me, Direction d) int Tie::get_position (Grob *me) { - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *h = head (me, d); if (h) - return (int) rint (Staff_symbol_referencer::get_position (h)); + return (int) rint (Staff_symbol_referencer::get_position (h)); } - while (flip (&d) != LEFT); /* TODO: this is theoretically possible for ties across more than 2 systems.. We should look at the first broken copy. */ - programming_error ("Tie without heads. Suicide"); + programming_error ("Tie without heads. Suicide"); me->suicide (); return 0; } @@ -125,26 +123,24 @@ Direction Tie::get_default_dir (Grob *me) { Drul_array stems; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *one_head = head (me, d); if (!one_head && dynamic_cast (me)) - one_head = Tie::head (dynamic_cast (me)->broken_neighbor (d), d); + one_head = Tie::head (dynamic_cast (me)->broken_neighbor (d), d); Grob *stem = one_head ? Rhythmic_head::get_stem (one_head) : 0; if (stem) - stem = Stem::is_invisible (stem) ? 0 : stem; + stem = Stem::is_invisible (stem) ? 0 : stem; stems[d] = stem; } - while (flip (&d) != LEFT); if (stems[LEFT] && stems[RIGHT]) { if (get_grob_direction (stems[LEFT]) == UP - && get_grob_direction (stems[RIGHT]) == UP) - return DOWN; + && get_grob_direction (stems[RIGHT]) == UP) + return DOWN; } else if (stems[LEFT] || stems[RIGHT]) { @@ -167,7 +163,7 @@ Tie::calc_direction (SCM smob) || Semi_tie_column::has_interface (yparent)) && unsmob_grob_array (yparent->get_object ("ties")) // && unsmob_grob_array (yparent->get_object ("ties"))->size () > 1 - ) + ) { /* trigger positioning. */ (void) yparent->get_property ("positioning-done"); @@ -189,7 +185,6 @@ Tie::get_default_control_points (Grob *me_grob) Tie_formatting_problem problem; problem.from_tie (me); - Tie_specification spec = problem.get_tie_specification (0); if (!me->is_live ()) return SCM_EOL; @@ -197,14 +192,14 @@ Tie::get_default_control_points (Grob *me_grob) = problem.generate_optimal_configuration (); return get_control_points (me, problem.common_x_refpoint (), - conf[0], problem.details_); + conf[0], problem.details_); } SCM Tie::get_control_points (Grob *me, - Grob *common, - Tie_configuration const &conf, - Tie_details const &details) + Grob *common, + Tie_configuration const &conf, + Tie_details const &details) { Bezier b = conf.get_transformed_bezier (details); b.translate (Offset (- me->relative_coordinate (common, X_AXIS), 0)); @@ -213,7 +208,7 @@ Tie::get_control_points (Grob *me, for (int i = 4; i--;) { if (!b.control_[i].is_sane ()) - programming_error ("Insane offset"); + programming_error ("Insane offset"); controls = scm_cons (ly_offset2scm (b.control_[i]), controls); } return controls; @@ -232,11 +227,11 @@ Tie::calc_control_points (SCM smob) { extract_grob_set (yparent, "ties", ties); if (me->original () && ties.size () == 1 - && !to_dir (me->get_property_data ("direction"))) - { - assert (ties[0] == me); - set_grob_direction (me, Tie::get_default_dir (me)); - } + && !to_dir (me->get_property_data ("direction"))) + { + assert (ties[0] == me); + set_grob_direction (me, Tie::get_default_dir (me)); + } /* trigger positioning. */ (void) yparent->get_property ("positioning-done"); } @@ -275,9 +270,9 @@ Tie::print (SCM smob) SCM dash_definition = me->get_property ("dash-definition"); a = Lookup::slur (b, - get_grob_direction (me) * base_thick, - line_thick, - dash_definition); + get_grob_direction (me) * base_thick, + line_thick, + dash_definition); #if DEBUG_TIE_SCORING SCM annotation = me->get_property ("annotation"); @@ -287,15 +282,15 @@ Tie::print (SCM smob) SCM properties = Font_interface::text_font_alist_chain (me); Stencil tm = *unsmob_stencil (Text_interface::interpret_markup - (me->layout ()->self_scm (), properties, - annotation)); + (me->layout ()->self_scm (), properties, + annotation)); tm.translate (Offset (b.control_[3][X_AXIS] + 0.5, - b.control_[0][Y_AXIS] * 2)); + b.control_[0][Y_AXIS] * 2)); tm = tm.in_color (1, 0, 0); /* - It would be nice if we could put this in a different layer, - but alas, this must be done with a Tie override. + It would be nice if we could put this in a different layer, + but alas, this must be done with a Tie override. */ a.add_stencil (tm); } @@ -305,18 +300,18 @@ Tie::print (SCM smob) } ADD_INTERFACE (Tie, - "A horizontal curve connecting two noteheads.", - - /* properties */ - "annotation " - "avoid-slur " // UGH. - "control-points " - "dash-definition " - "details " - "direction " - "head-direction " - "line-thickness " - "neutral-direction " - "staff-position " - "thickness " - ); + "A horizontal curve connecting two noteheads.", + + /* properties */ + "annotation " + "avoid-slur " // UGH. + "control-points " + "dash-definition " + "details " + "direction " + "head-direction " + "line-thickness " + "neutral-direction " + "staff-position " + "thickness " + ); diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index d0621dd883..1c6cd69bd4 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -66,24 +66,24 @@ Time_signature_engraver::process_music () { int den = scm_to_int (scm_cdr (fr)); if (den != (1 << intlog2 (den))) - { - /* - Todo: should make typecheck? + { + /* + Todo: should make typecheck? - OTOH, Tristan Keuris writes 8/20 in his Intermezzi. - */ - warning (_f ("strange time signature found: %d/%d", - int (scm_to_int (scm_car (fr))), - den)); - } + OTOH, Tristan Keuris writes 8/20 in his Intermezzi. + */ + warning (_f ("strange time signature found: %d/%d", + int (scm_to_int (scm_car (fr))), + den)); + } time_signature_ = make_item ("TimeSignature", SCM_EOL); time_signature_->set_property ("fraction", fr); if (last_time_fraction_ == SCM_BOOL_F) - time_signature_->set_property ("break-visibility", - get_property ("implicitTimeSignatureVisibility")); - + time_signature_->set_property ("break-visibility", + get_property ("implicitTimeSignatureVisibility")); + last_time_fraction_ = fr; } } @@ -97,17 +97,17 @@ Time_signature_engraver::stop_translation_timestep () #include "translator.icc" ADD_TRANSLATOR (Time_signature_engraver, - /* doc */ - "Create a @ref{TimeSignature} whenever" - " @code{timeSignatureFraction} changes.", - - /* create */ - "TimeSignature ", - - /* read */ - "implicitTimeSignatureVisibility " - "timeSignatureFraction ", - - /* write */ - "" - ); + /* doc */ + "Create a @ref{TimeSignature} whenever" + " @code{timeSignatureFraction} changes.", + + /* create */ + "TimeSignature ", + + /* read */ + "implicitTimeSignatureVisibility " + "timeSignatureFraction ", + + /* write */ + "" + ); diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc index 54d4514231..f2f3e8f32a 100644 --- a/lily/time-signature-performer.cc +++ b/lily/time-signature-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -82,15 +82,15 @@ Time_signature_performer::stop_translation_timestep () #include "translator.icc" ADD_TRANSLATOR (Time_signature_performer, - /* doc */ - "", + /* doc */ + "", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/time-signature.cc b/lily/time-signature.cc index a1f8a38144..263817c708 100644 --- a/lily/time-signature.cc +++ b/lily/time-signature.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,6 +23,7 @@ #include "font-interface.hh" #include "international.hh" #include "output-def.hh" +#include "staff-symbol.hh" #include "staff-symbol-referencer.hh" #include "text-interface.hh" #include "warn.hh" @@ -57,8 +58,35 @@ Time_signature::print (SCM smob) else m = numbered_time_signature (me, n, d); - if (Staff_symbol_referencer::line_count (me) % 2 == 0) - m.translate_axis (Staff_symbol_referencer::staff_space (me) / 2, Y_AXIS); + /* + position the signature centred on the staff line + nearest to the middle of the staff + */ + if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me)) + { + std::vector const linepos = Staff_symbol::line_positions (staff); + if (!linepos.empty ()) + { + Interval const span = Staff_symbol::line_span (staff); + Real const mid = span.center (); + Real pos = linepos.front (); + Real dist = fabs (pos - mid); + for (std::vector::const_iterator + i = linepos.begin (), e = linepos.end (); + ++i != e;) + { + double const d = fabs (*i - mid); + if (d < dist) + { + pos = *i; + dist = d; + } + } + + m.translate_axis + (pos * Staff_symbol_referencer::staff_space (me) / 2, Y_AXIS); + } + } return m.smobbed_copy (); } @@ -66,7 +94,7 @@ Time_signature::print (SCM smob) Stencil Time_signature::special_time_signature (Grob *me, SCM scm_style, int n, int d) { - string style = ly_scm2string (scm_symbol_to_string (scm_style)); + string style = robust_symbol2string (scm_style, "default"); if (style == "numbered") return numbered_time_signature (me, n, d); @@ -77,22 +105,22 @@ Time_signature::special_time_signature (Grob *me, SCM scm_style, int n, int d) if (style == "C") { if /* neither C2/2 nor C4/4 */ - (((n != 2) || (d != 2)) - && ((n != 4) || (d != 4))) - return numbered_time_signature (me, n, d); + (((n != 2) || (d != 2)) + && ((n != 4) || (d != 4))) + return numbered_time_signature (me, n, d); } string char_name = style + to_string (n) + to_string (d); me->set_property ("font-encoding", ly_symbol2scm ("fetaMusic")); Stencil out = Font_interface::get_default_font (me) - ->find_by_name ("timesig." + char_name); + ->find_by_name ("timesig." + char_name); if (!out.is_empty ()) return out; /* If there is no such symbol, we default to the numbered style. (Here really with a warning!) */ me->warning (_f ("time signature symbol `%s' not found; " - "reverting to numbered style", char_name)); + "reverting to numbered style", char_name)); return numbered_time_signature (me, n, d); } @@ -101,13 +129,13 @@ Time_signature::numbered_time_signature (Grob *me, int num, int den) { SCM chain = me->get_property_alist_chain (Font_interface::text_font_alist_chain (me)); chain = scm_cons (scm_list_1 (scm_cons (ly_symbol2scm ("font-encoding"), - ly_symbol2scm ("fetaText"))), - chain); + ly_symbol2scm ("fetaText"))), + chain); SCM sn = Text_interface::interpret_markup (me->layout ()->self_scm (), chain, - ly_string2scm (to_string (num))); + ly_string2scm (to_string (num))); SCM sd = Text_interface::interpret_markup (me->layout ()->self_scm (), chain, - ly_string2scm (to_string (den))); + ly_string2scm (to_string (den))); Stencil n = *unsmob_stencil (sn); Stencil d = *unsmob_stencil (sd); @@ -132,30 +160,30 @@ Time_signature::numbered_time_signature (Grob *me, int num, int den) } ADD_INTERFACE (Time_signature, - "A time signature, in different styles. The following values" - " for @code{style} are are recognized:\n" - "\n" - "@table @code\n" - "@item C\n" - "4/4 and 2/2 are typeset as C and struck C, respectively." - " All other time signatures are written with two digits." - " The value @code{default} is equivalent to @code{C}.\n" - "@item neomensural\n" - "2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are" - " typeset with neo-mensural style mensuration marks. All" - " other time signatures are written with two digits.\n" - "@item mensural\n" - "2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are" - " typeset with mensural style mensuration marks. All other" - " time signatures are written with two digits.\n" - "@item single-digit\n" - "All time signatures are typeset with a single digit, e.g.," - " 3/2 is written as 3.\n" - "@item numbered\n" - "All time signatures are typeset with two digits.\n" - "@end table", - - /* properties */ - "fraction " - "style " - ); + "A time signature, in different styles. The following values" + " for @code{style} are are recognized:\n" + "\n" + "@table @code\n" + "@item C\n" + "4/4 and 2/2 are typeset as C and struck C, respectively." + " All other time signatures are written with two digits." + " The value @code{default} is equivalent to @code{C}.\n" + "@item neomensural\n" + "2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are" + " typeset with neo-mensural style mensuration marks. All" + " other time signatures are written with two digits.\n" + "@item mensural\n" + "2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are" + " typeset with mensural style mensuration marks. All other" + " time signatures are written with two digits.\n" + "@item single-digit\n" + "All time signatures are typeset with a single digit, e.g.," + " 3/2 is written as 3.\n" + "@item numbered\n" + "All time signatures are typeset with two digits.\n" + "@end table", + + /* properties */ + "fraction " + "style " + ); diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index d5d069270b..c6b245ba61 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,31 +35,47 @@ Timing_translator::stop_translation_timestep () Moment now = now_mom (); if (barleft > Moment (0)) - { - Moment nextmom = now + barleft; - nextmom.grace_part_ = Rational (0); - global->add_moment_to_process (nextmom); - } + { + Moment nextmom = now + barleft; + nextmom.grace_part_ = Rational (0); + global->add_moment_to_process (nextmom); + } } } void Timing_translator::initialize () { - context ()->add_alias (ly_symbol2scm ("Timing")); - context ()->set_property ("currentBarNumber", scm_from_int (1)); - context ()->set_property ("internalBarNumber", scm_from_int (1)); + Context *timing = unsmob_context (scm_call_2 (ly_lily_module_constant ("ly:context-find"), + context ()->self_scm (), + ly_symbol2scm ("Timing"))); + if (timing != context ()) + { + context ()->add_alias (ly_symbol2scm ("Timing")); + + if (!timing) + { + programming_error ("Can't find Timing context template"); + timing = context (); + } + } + + SCM barnumber = timing->get_property ("currentBarNumber"); + if (!scm_is_integer (barnumber)) + barnumber = scm_from_int (1); + context ()->set_property ("currentBarNumber", barnumber); + context ()->set_property ("internalBarNumber", barnumber); context ()->set_property ("timeSignatureFraction", - scm_cons (scm_from_int (4), scm_from_int (4))); + timing->get_property ("timeSignatureFraction")); /* Do not init measurePosition; this should be done from global context. */ context ()->set_property ("measureLength", - Moment (Rational (1)).smobbed_copy ()); + timing->get_property ("measureLength")); context ()->set_property ("baseMoment", - Moment (Rational (1, 4)).smobbed_copy ()); + timing->get_property ("baseMoment")); } Rational @@ -106,7 +122,7 @@ Timing_translator::start_translation_timestep () { measposp = now; context ()->set_property ("measurePosition", - measposp.smobbed_copy ()); + measposp.smobbed_copy ()); } measposp += dt; @@ -121,8 +137,8 @@ Timing_translator::start_translation_timestep () while (c && measposp.main_part_ >= len) { measposp.main_part_ -= len; - current_barnumber ++; - internal_barnumber ++; + current_barnumber++; + internal_barnumber++; } context ()->set_property ("currentBarNumber", scm_from_int (current_barnumber)); @@ -133,27 +149,29 @@ Timing_translator::start_translation_timestep () #include "translator.icc" ADD_TRANSLATOR (Timing_translator, - /* doc */ - "This engraver adds the alias @code{Timing} to its containing" - " context. Responsible for synchronizing timing information" - " from staves. Normally in @code{Score}. In order to create" - " polyrhythmic music, this engraver should be removed from" - " @code{Score} and placed in @code{Staff}.", - - /* create */ - "", - - /* read */ - "internalBarNumber " - "currentBarNumber " - "measureLength " - "measurePosition ", - - /* write */ - "baseMoment " - "currentBarNumber " - "internalBarNumber " - "measureLength " - "measurePosition " - "timeSignatureFraction " - ); + /* doc */ + "This engraver adds the alias @code{Timing} to its containing" + " context. Responsible for synchronizing timing information" + " from staves. Normally in @code{Score}. In order to create" + " polyrhythmic music, this engraver should be removed from" + " @code{Score} and placed in @code{Staff}.", + + /* create */ + "", + + /* read */ + "baseMoment " + "currentBarNumber " + "internalBarNumber " + "measureLength " + "measurePosition " + "timeSignatureFraction ", + + /* write */ + "baseMoment " + "currentBarNumber " + "internalBarNumber " + "measureLength " + "measurePosition " + "timeSignatureFraction " + ); diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc index b190a927c7..58d4e51577 100644 --- a/lily/translator-ctors.cc +++ b/lily/translator-ctors.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,8 @@ Scheme_hash_table *global_translator_dict = 0; LY_DEFINE (get_all_translators, "ly:get-all-translators", 0, 0, 0, (), - "Return a list of all translator objects that may be" - " instantiated.") + "Return a list of all translator objects that may be" + " instantiated.") { SCM l = global_translator_dict ? global_translator_dict->to_alist () : SCM_EOL; diff --git a/lily/translator-dispatch-list.cc b/lily/translator-dispatch-list.cc index aae00e4e1c..6c74b259be 100644 --- a/lily/translator-dispatch-list.cc +++ b/lily/translator-dispatch-list.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ Engraver_dispatch_list::apply (Grob_info gi) { Engraver_dispatch_entry const &e (dispatch_entries_[i]); if (e.engraver_ == origin) - continue; + continue; (*e.function_) (e.engraver_, gi); } @@ -38,7 +38,7 @@ Engraver_dispatch_list::apply (Grob_info gi) SCM Engraver_dispatch_list::create (SCM trans_list, - SCM iface_list, Direction start_end) + SCM iface_list, Direction start_end) { SCM retval = Engraver_dispatch_list ().smobbed_copy (); Engraver_dispatch_list *list = Engraver_dispatch_list::unsmob (retval); @@ -48,26 +48,26 @@ Engraver_dispatch_list::create (SCM trans_list, for (SCM s = trans_list; scm_is_pair (s); s = scm_cdr (s)) { Engraver *eng - = dynamic_cast (unsmob_translator (scm_car (s))); + = dynamic_cast (unsmob_translator (scm_car (s))); if (!eng) - continue; + continue; entry.engraver_ = eng; for (SCM i = iface_list; scm_is_pair (i); i = scm_cdr (i)) - { - Engraver_void_function_engraver_grob_info ptr - = (start_end == START) - ? eng->get_acknowledger (scm_car (i)) - : eng->get_end_acknowledger (scm_car (i)); - - if (ptr) - { - entry.function_ = ptr; - list->dispatch_entries_.push_back (entry); - found = true; - } - } + { + Engraver_void_function_engraver_grob_info ptr + = (start_end == START) + ? eng->get_acknowledger (scm_car (i)) + : eng->get_end_acknowledger (scm_car (i)); + + if (ptr) + { + entry.function_ = ptr; + list->dispatch_entries_.push_back (entry); + found = true; + } + } } return found ? retval : SCM_EOL; @@ -81,8 +81,8 @@ Engraver_dispatch_list::mark_smob (SCM) int Engraver_dispatch_list::print_smob (SCM /* x */, - SCM p, - scm_print_state *) + SCM p, + scm_print_state *) { scm_puts ("#", p); return 1; diff --git a/lily/translator-group-ctors.cc b/lily/translator-group-ctors.cc index 5bde18c6b9..bd349824d7 100644 --- a/lily/translator-group-ctors.cc +++ b/lily/translator-group-ctors.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,13 +37,13 @@ get_translator_group (SCM sym) else if (sym == ly_symbol2scm ("Score_performer")) return new Score_performer (); - error (_f ("fatal error. Couldn't find type: %s", - ly_symbol2string (sym).c_str ())); + error (_f ("fatal error. Couldn't find type: %s", + ly_symbol2string (sym).c_str ())); scm_flush (scm_current_error_port ()); scm_display (sym, scm_current_error_port ()); scm_flush (scm_current_error_port ()); - + exit (2); - + return 0; } diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 487037a2dc..ab79d13476 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys , + Copyright (C) 1997--2012 Han-Wen Nienhuys , Erik Sandberg LilyPond is free software: you can redistribute it and/or modify @@ -54,12 +54,12 @@ Translator_group::connect_to_context (Context *c) if (context_) { programming_error ("translator group is already connected to context " - + context_->context_name ()); + + context_->context_name ()); } - + context_ = c; c->event_source ()->add_listener (GET_LISTENER (create_child_translator), - ly_symbol2scm ("AnnounceNewContext")); + ly_symbol2scm ("AnnounceNewContext")); for (SCM tr_list = simple_trans_list_; scm_is_pair (tr_list); tr_list = scm_cdr (tr_list)) { Translator *tr = unsmob_translator (scm_car (tr_list)); @@ -76,7 +76,7 @@ Translator_group::disconnect_from_context () tr->disconnect_from_context (context_); } context_->event_source ()->remove_listener (GET_LISTENER (create_child_translator), - ly_symbol2scm ("AnnounceNewContext")); + ly_symbol2scm ("AnnounceNewContext")); context_ = 0; protected_events_ = SCM_EOL; } @@ -102,9 +102,9 @@ filter_performers (SCM ell) for (SCM p = ell; scm_is_pair (p); p = scm_cdr (p)) { if (unsmob_performer (scm_car (*tail))) - *tail = scm_cdr (*tail); + *tail = scm_cdr (*tail); else - tail = SCM_CDRLOC (*tail); + tail = SCM_CDRLOC (*tail); } return ell; } @@ -116,14 +116,14 @@ filter_engravers (SCM ell) for (SCM p = ell; scm_is_pair (p); p = scm_cdr (p)) { if (unsmob_engraver (scm_car (*tail))) - *tail = scm_cdr (*tail); + *tail = scm_cdr (*tail); else - tail = SCM_CDRLOC (*tail); + tail = SCM_CDRLOC (*tail); } return ell; } -/* +/* Protects the parameter from being garbage collected. The object is protected until the next disconnect_from_context call. @@ -131,7 +131,7 @@ filter_engravers (SCM ell) this list. This eliminates the need for derived_mark methods in most translators; all incoming events are instead protected by the translator group. - + TODO: Should the list also be flushed at the beginning of each new moment? */ @@ -155,7 +155,7 @@ Translator_group::create_child_translator (SCM sev) Context *new_context = unsmob_context (cs); Context_def *def = unsmob_context_def (new_context->get_definition ()); SCM ops = new_context->get_definition_mods (); - + SCM trans_names = def->get_translator_names (ops); Translator_group *g = get_translator_group (def->get_translator_group_type ()); @@ -168,46 +168,46 @@ Translator_group::create_child_translator (SCM sev) Translator *type = 0; if (ly_is_symbol (definition)) - type = get_translator (definition); + type = get_translator (definition); else if (ly_is_pair (definition)) - { - type = get_translator (ly_symbol2scm ("Scheme_engraver")); - is_scheme = true; - } + { + type = get_translator (ly_symbol2scm ("Scheme_engraver")); + is_scheme = true; + } else if (ly_is_procedure (definition)) - { - // `definition' is a procedure, which takes the context as - // an argument and evaluates to an a-list scheme engraver - // definition. - definition = scm_call_1 (definition, cs); - type = get_translator (ly_symbol2scm ("Scheme_engraver")); - is_scheme = true; - } - + { + // `definition' is a procedure, which takes the context as + // an argument and evaluates to an a-list scheme engraver + // definition. + definition = scm_call_1 (definition, cs); + type = get_translator (ly_symbol2scm ("Scheme_engraver")); + is_scheme = true; + } + if (!type) - warning (_f ("cannot find: `%s'", ly_symbol2string (scm_car (s)).c_str ())); + warning (_f ("cannot find: `%s'", ly_symbol2string (scm_car (s)).c_str ())); else - { - Translator *instance = type->clone (); - if (is_scheme) - dynamic_cast (instance)->init_from_scheme (definition); - - SCM str = instance->self_scm (); - - if (instance->must_be_last ()) - { - SCM cons = scm_cons (str, SCM_EOL); - if (scm_is_pair (trans_list)) - scm_set_cdr_x (scm_last_pair (trans_list), cons); - else - trans_list = cons; - } - else - trans_list = scm_cons (str, trans_list); - - instance->daddy_context_ = new_context; - instance->unprotect (); - } + { + Translator *instance = type->clone (); + if (is_scheme) + dynamic_cast (instance)->init_from_scheme (definition); + + SCM str = instance->self_scm (); + + if (instance->must_be_last ()) + { + SCM cons = scm_cons (str, SCM_EOL); + if (scm_is_pair (trans_list)) + scm_set_cdr_x (scm_last_pair (trans_list), cons); + else + trans_list = cons; + } + else + trans_list = scm_cons (str, trans_list); + + instance->daddy_context_ = new_context; + instance->unprotect (); + } } /* Filter unwanted translator types. Required to make @@ -224,9 +224,9 @@ Translator_group::create_child_translator (SCM sev) g->unprotect (); recurse_over_translators (new_context, - &Translator::initialize, - &Translator_group::initialize, - DOWN); + &Translator::initialize, + &Translator_group::initialize, + DOWN); } SCM @@ -260,7 +260,7 @@ precomputed_recurse_over_translators (Context *c, Translator_precompute_index id void recurse_over_translators (Context *c, Translator_method ptr, - Translator_group_method tg_ptr, Direction dir) + Translator_group_method tg_ptr, Direction dir) { Translator_group *tg = dynamic_cast (c->implementation ()); @@ -278,7 +278,7 @@ recurse_over_translators (Context *c, Translator_method ptr, if (tg && dir == UP) { translator_each (tg->get_simple_trans_list (), - ptr); + ptr); (tg->*tg_ptr) (); } @@ -308,10 +308,10 @@ Translator_group::precompute_method_bindings () assert (tr); for (int i = 0; i < TRANSLATOR_METHOD_PRECOMPUTE_COUNT; i++) - { - if (ptrs[i]) - precomputed_method_bindings_[i].push_back (Translator_method_binding (tr, ptrs[i])); - } + { + if (ptrs[i]) + precomputed_method_bindings_[i].push_back (Translator_method_binding (tr, ptrs[i])); + } } fetch_precomputable_methods (precomputed_self_method_bindings_); diff --git a/lily/translator-scheme.cc b/lily/translator-scheme.cc index 7ede1b0eb4..bede8cac2d 100644 --- a/lily/translator-scheme.cc +++ b/lily/translator-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,9 +23,9 @@ #include "moment.hh" LY_DEFINE (ly_translator_name, "ly:translator-name", - 1, 0, 0, (SCM trans), - "Return the type name of the translator object @var{trans}." - " The name is a symbol.") + 1, 0, 0, (SCM trans), + "Return the type name of the translator object @var{trans}." + " The name is a symbol.") { LY_ASSERT_SMOB (Translator, trans, 1); Translator *tr = unsmob_translator (trans); @@ -34,18 +34,17 @@ LY_DEFINE (ly_translator_name, "ly:translator-name", } LY_DEFINE (ly_translator_description, "ly:translator-description", - 1, 0, 0, (SCM me), - "Return an alist of properties of translator @var{me}.") + 1, 0, 0, (SCM me), + "Return an alist of properties of translator @var{me}.") { LY_ASSERT_SMOB (Translator, me, 1); Translator *tr = unsmob_translator (me); return tr->translator_description (); } - LY_DEFINE (ly_translator_context, "ly:translator-context", - 1, 0, 0, (SCM trans), - "Return the context of the translator object @var{trans}.") + 1, 0, 0, (SCM trans), + "Return the context of the translator object @var{trans}.") { LY_ASSERT_SMOB (Translator, trans, 1); Translator *tr = unsmob_translator (trans); diff --git a/lily/translator.cc b/lily/translator.cc index 3020006f83..154ffa4b08 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -122,7 +122,7 @@ Translator::connect_to_context (Context *c) { for (translator_listener_record *r = get_listener_list (); r; r = r->next_) c->events_below ()->add_listener (r->get_listener_ (this, r->event_class_), - r->event_class_); + r->event_class_); } void @@ -130,43 +130,9 @@ Translator::disconnect_from_context (Context *c) { for (translator_listener_record *r = get_listener_list (); r; r = r->next_) c->events_below ()->remove_listener (r->get_listener_ (this, r->event_class_), - r->event_class_); + r->event_class_); } -static SCM listened_event_class_table; -void -ensure_listened_hash () -{ - if (!listened_event_class_table) - listened_event_class_table = scm_permanent_object (scm_c_make_hash_table (61)); -} - - -LY_DEFINE (ly_get_listened_event_classes, "ly:get-listened-event-classes", - 0, 0, 0, (), - "Return a list of all event classes that some translator listens" - " to.") -{ - ensure_listened_hash (); - return ly_hash_table_keys (listened_event_class_table); -} - -LY_DEFINE (ly_is_listened_event_class, "ly:is-listened-event-class", - 1, 0, 0, (SCM sym), - "Is @var{sym} a listened event class?") -{ - ensure_listened_hash (); - return scm_hashq_ref (listened_event_class_table, sym, SCM_BOOL_F); -} - -void -add_listened_event_class (SCM sym) -{ - ensure_listened_hash (); - scm_hashq_set_x (listened_event_class_table, sym, SCM_BOOL_T); -} - - /* internally called once, statically, for each translator listener. Connects the name of an event class with a procedure that @@ -177,18 +143,20 @@ add_listened_event_class (SCM sym) */ void Translator::add_translator_listener (translator_listener_record **listener_list, - translator_listener_record *r, - Listener (*get_listener) (void *, SCM), - const char *ev_class) + translator_listener_record *r, + Listener (*get_listener) (void *, SCM), + const char *ev_class) { /* ev_class is the C++ identifier name. Convert to scm symbol */ string name = string (ev_class); name = replace_all (&name, '_', '-'); name += "-event"; - - SCM class_sym = scm_from_locale_symbol (name.c_str ()); - - add_listened_event_class (class_sym); + + // we make the symbol permanent in order not to have to bother about + // the static translator_listener_record chains while garbage + // collecting. + + SCM class_sym = scm_permanent_object (scm_from_locale_symbol (name.c_str ())); r->event_class_ = class_sym; r->get_listener_ = get_listener; @@ -201,34 +169,34 @@ Translator::add_translator_listener (translator_listener_record **listener_list, */ SCM Translator::static_translator_description (const char *grobs, - const char *desc, - translator_listener_record *listener_list, - const char *read, - const char *write) const + const char *desc, + translator_listener_record *listener_list, + const char *read, + const char *write) const { - SCM static_properties = SCM_EOL; - - static_properties = scm_acons (ly_symbol2scm ("grobs-created"), - parse_symbol_list (grobs), static_properties); - - static_properties = scm_acons (ly_symbol2scm ("description"), - scm_from_locale_string (desc), static_properties); - + SCM static_properties = SCM_EOL; + + static_properties = scm_acons (ly_symbol2scm ("grobs-created"), + parse_symbol_list (grobs), static_properties); + + static_properties = scm_acons (ly_symbol2scm ("description"), + scm_from_locale_string (desc), static_properties); + SCM list = SCM_EOL; for (; listener_list; listener_list = listener_list->next_) list = scm_cons (listener_list->event_class_, list); static_properties = scm_acons (ly_symbol2scm ("events-accepted"), - list, static_properties); - - static_properties = scm_acons (ly_symbol2scm ("properties-read"), - parse_symbol_list (read), static_properties); - - static_properties = scm_acons (ly_symbol2scm ("properties-written"), - parse_symbol_list (write), static_properties); - - return static_properties; + list, static_properties); + + static_properties = scm_acons (ly_symbol2scm ("properties-read"), + parse_symbol_list (read), static_properties); + + static_properties = scm_acons (ly_symbol2scm ("properties-written"), + parse_symbol_list (write), static_properties); + + return static_properties; } - + /* SMOBS */ @@ -279,8 +247,8 @@ Translator::print_smob (SCM s, SCM port, scm_print_state *) void add_acknowledger (Engraver_void_function_engraver_grob_info ptr, - char const *func_name, - vector *ack_array) + char const *func_name, + vector *ack_array) { Acknowledge_information inf; inf.function_ = ptr; @@ -303,12 +271,11 @@ generic_get_acknowledger (SCM sym, vector const *ack_ar for (vsize i = 0; i < ack_array->size (); i++) { if (ack_array->at (i).symbol_ == sym) - return ack_array->at (i).function_; + return ack_array->at (i).function_; } return 0; } - Moment get_event_length (Stream_event *e) { @@ -323,7 +290,7 @@ Moment get_event_length (Stream_event *e, Moment now) { Moment len = get_event_length (e); - + if (now.grace_part_) { len.grace_part_ = len.main_part_; @@ -340,15 +307,15 @@ get_event_length (Stream_event *e, Moment now) bool internal_event_assignment (Stream_event **old_ev, Stream_event *new_ev, const char *function) { - if (*old_ev && - !to_boolean (scm_equal_p ((*old_ev)->self_scm (), - new_ev->self_scm ()))) + if (*old_ev + && !to_boolean (scm_equal_p ((*old_ev)->self_scm (), + new_ev->self_scm ()))) { /* extract event class from function name */ string ev_class = function; /* This assertion fails if EVENT_ASSIGNMENT was called outside a - translator listener. Don't do that. */ + translator listener. Don't do that. */ const char *prefix = "listen_"; assert (0 == ev_class.find (prefix)); @@ -368,15 +335,15 @@ internal_event_assignment (Stream_event **old_ev, Stream_event *new_ev, const ch } ADD_TRANSLATOR (Translator, - /* doc */ - "Base class. Not instantiated.", + /* doc */ + "Base class. Not instantiated.", - /* create */ - "", + /* create */ + "", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/trill-spanner-engraver.cc b/lily/trill-spanner-engraver.cc index 5f4b38d265..34b4e6663f 100644 --- a/lily/trill-spanner-engraver.cc +++ b/lily/trill-spanner-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -77,17 +77,17 @@ Trill_spanner_engraver::acknowledge_note_column (Grob_info info) if (span_) { Pointer_group_interface::add_grob (span_, - ly_symbol2scm ("note-columns"), - info.grob()); + ly_symbol2scm ("note-columns"), + info.grob ()); if (!span_->get_bound (LEFT)) - add_bound_item (span_, info.grob ()); + add_bound_item (span_, info.grob ()); } else if (finished_) { Pointer_group_interface::add_grob (finished_, ly_symbol2scm ("note-columns"), - info.grob()); + info.grob ()); if (!finished_->get_bound (RIGHT)) - add_bound_item (finished_, info.grob ()); + add_bound_item (finished_, info.grob ()); } } @@ -99,7 +99,7 @@ Trill_spanner_engraver::process_music () { Stream_event *ender = event_drul_[STOP]; if (!ender) - ender = event_drul_[START]; + ender = event_drul_[START]; finished_ = span_; announce_end_grob (finished_, ender->self_scm ()); span_ = 0; @@ -120,10 +120,10 @@ Trill_spanner_engraver::typeset_all () if (finished_) { if (!finished_->get_bound (RIGHT)) - { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); - finished_->set_bound (RIGHT, e); - } + { + Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); + finished_->set_bound (RIGHT, e); + } finished_ = 0; } } @@ -155,16 +155,16 @@ Trill_spanner_engraver::finalize () ADD_ACKNOWLEDGER (Trill_spanner_engraver, note_column); ADD_TRANSLATOR (Trill_spanner_engraver, - /* doc */ - "Create trill spanner from an event.", + /* doc */ + "Create trill spanner from an event.", - /* create */ - "TrillSpanner ", + /* create */ + "TrillSpanner ", - /* read */ - "currentCommandColumn " - "currentMusicalColumn ", + /* read */ + "currentCommandColumn " + "currentMusicalColumn ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/ttf.cc b/lily/ttf.cc index 4bd6378f27..be7cfe543c 100644 --- a/lily/ttf.cc +++ b/lily/ttf.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,6 @@ #include "main.hh" #include "open-type-font.hh" - Index_to_charcode_map make_index_to_charcode_map (FT_Face face) { @@ -45,7 +44,7 @@ make_index_to_charcode_map (FT_Face face) charcode = FT_Get_Next_Char (face, charcode, &gindex)) { m[gindex] = charcode; - j ++; + j++; } FT_Set_Charmap (face, current_cmap); @@ -68,7 +67,7 @@ print_header (void *out, FT_Face face) lily_cookie_fprintf (out, "%d dict begin\n", 11); lily_cookie_fprintf (out, "/FontName /%s def\n", - FT_Get_Postscript_Name (face)); + FT_Get_Postscript_Name (face)); lily_cookie_fprintf (out, "/Encoding StandardEncoding def\n"); lily_cookie_fprintf (out, "/PaintType 0 def\n"); @@ -78,15 +77,15 @@ print_header (void *out, FT_Face face) = (TT_Header *)FT_Get_Sfnt_Table (face, ft_sfnt_head); lily_cookie_fprintf (out, "/FontBBox [%lf %lf %lf %lf] def\n", - float (ht->xMin) / float (ht->Units_Per_EM), - float (ht->yMin) / float (ht->Units_Per_EM), - float (ht->xMax) / float (ht->Units_Per_EM), - float (ht->yMax) / float (ht->Units_Per_EM)); + float (ht->xMin) / float (ht->Units_Per_EM), + float (ht->yMin) / float (ht->Units_Per_EM), + float (ht->xMax) / float (ht->Units_Per_EM), + float (ht->yMax) / float (ht->Units_Per_EM)); lily_cookie_fprintf (out, "/FontType 42 def\n"); lily_cookie_fprintf (out, "/FontInfo 8 dict dup begin\n"); lily_cookie_fprintf (out, "/version (%.3f) def\n", - ht->Font_Revision / 65536.0); + ht->Font_Revision / 65536.0); #if 0 if (strings[0]) @@ -110,13 +109,13 @@ print_header (void *out, FT_Face face) #endif lily_cookie_fprintf (out, "/isFixedPitch %s def\n", - pt->isFixedPitch ? "true" : "false"); + pt->isFixedPitch ? "true" : "false"); lily_cookie_fprintf (out, "/UnderlinePosition %lf def\n", - float (pt->underlinePosition) - / float (ht->Units_Per_EM)); + float (pt->underlinePosition) + / float (ht->Units_Per_EM)); lily_cookie_fprintf (out, "/UnderlineThickness %lf def\n", - float (pt->underlineThickness) - / float (ht->Units_Per_EM)); + float (pt->underlineThickness) + / float (ht->Units_Per_EM)); lily_cookie_fprintf (out, "end readonly def\n"); } @@ -128,8 +127,8 @@ const FT_ULong FT_ENC_TAG (loca_tag, 'l', 'o', 'c', 'a'); static void t42_write_table (void *out, FT_Face face, unsigned char const *buffer, - size_t s, bool is_glyf, - FT_ULong head_length, FT_ULong loca_length) + size_t s, bool is_glyf, + FT_ULong head_length, FT_ULong loca_length) { vector chunks; @@ -139,59 +138,59 @@ void t42_write_table (void *out, FT_Face face, unsigned char const *buffer, unsigned char *head_buf = new unsigned char[head_length]; FT_Error error = FT_Load_Sfnt_Table (face, head_tag, 0, head_buf, NULL); if (error) - programming_error ("FT_Load_Sfnt_Table (): error."); + programming_error ("FT_Load_Sfnt_Table (): error."); /* we access the lower byte of indexToLocFormat */ - bool long_offsets = head_buf[4*4 + 2*2 + 2*8 + 4*2 + 3*2 + 1] == 1; + bool long_offsets = head_buf[4 * 4 + 2 * 2 + 2 * 8 + 4 * 2 + 3 * 2 + 1] == 1; delete[] head_buf; unsigned char *loca_buf = new unsigned char[loca_length]; error = FT_Load_Sfnt_Table (face, loca_tag, 0, loca_buf, NULL); if (error) - programming_error ("FT_Load_Sfnt_Table (): error."); + programming_error ("FT_Load_Sfnt_Table (): error."); unsigned char *p = loca_buf; unsigned char *endp = loca_buf + loca_length; FT_ULong offset = 0, last_offset = 0, last_chunk = 0; while (p < endp) - { - if (long_offsets) - { - offset = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; - p += 4; - } - else - { - offset = ((p[0] << 8) | p[1]) << 1; - p += 2; - } - if (offset > last_offset + CHUNKSIZE) - { - if (last_chunk != last_offset) - chunks.push_back (FT_UShort (last_offset - last_chunk)); - /* - a single glyph with more than 64k data - is a pathological case but... - */ - FT_ULong rest = offset - last_offset; - while (rest > CHUNKSIZE) - { - chunks.push_back (CHUNKSIZE); - rest -= CHUNKSIZE; - } - chunks.push_back (FT_UShort (rest)); - last_chunk = offset; - } - else if (offset > last_chunk + CHUNKSIZE) - { - chunks.push_back (FT_UShort (last_offset - last_chunk)); - last_chunk = last_offset; - } - - last_offset = offset; - } + { + if (long_offsets) + { + offset = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; + p += 4; + } + else + { + offset = ((p[0] << 8) | p[1]) << 1; + p += 2; + } + if (offset > last_offset + CHUNKSIZE) + { + if (last_chunk != last_offset) + chunks.push_back (FT_UShort (last_offset - last_chunk)); + /* + a single glyph with more than 64k data + is a pathological case but... + */ + FT_ULong rest = offset - last_offset; + while (rest > CHUNKSIZE) + { + chunks.push_back (CHUNKSIZE); + rest -= CHUNKSIZE; + } + chunks.push_back (FT_UShort (rest)); + last_chunk = offset; + } + else if (offset > last_chunk + CHUNKSIZE) + { + chunks.push_back (FT_UShort (last_offset - last_chunk)); + last_chunk = last_offset; + } + + last_offset = offset; + } chunks.push_back (FT_UShort (s - last_chunk)); delete[] loca_buf; @@ -200,17 +199,17 @@ void t42_write_table (void *out, FT_Face face, unsigned char const *buffer, { FT_ULong rest = s; while (rest > CHUNKSIZE) - { - chunks.push_back (CHUNKSIZE); - rest -= CHUNKSIZE; - } + { + chunks.push_back (CHUNKSIZE); + rest -= CHUNKSIZE; + } chunks.push_back (FT_UShort (rest)); } else chunks.push_back (CHUNKSIZE); lily_cookie_fprintf (out, "\n" - " <"); + " <"); int l = 0; static char xdigits[] = "0123456789ABCDEF"; @@ -219,32 +218,32 @@ void t42_write_table (void *out, FT_Face face, unsigned char const *buffer, for (size_t j = 0; j < s; j++) { if (l >= chunks[cur_chunk_idx]) - { - lily_cookie_fprintf (out, "\n" - " 00>\n" - " <"); - l = 0; - cur_chunk_idx ++; - } + { + lily_cookie_fprintf (out, "\n" + " 00>\n" + " <"); + l = 0; + cur_chunk_idx++; + } if (l % 31 == 0) - lily_cookie_fprintf (out, "\n" - " "); + lily_cookie_fprintf (out, "\n" + " "); /* lily_cookie_fprintf (out,"%02X",(int)buffer[j]) is too slow */ lily_cookie_putc (xdigits[(buffer[j] & 0xF0) >> 4], out); lily_cookie_putc (xdigits[buffer[j] & 0x0F], out); - l ++; + l++; } /* pad to four-byte boundary */ - while ((s ++) % 4 != 0) + while ((s++) % 4 != 0) lily_cookie_fprintf (out, "00"); lily_cookie_fprintf (out, "\n" - " 00\n" - " >"); + " 00\n" + " >"); } static void @@ -261,27 +260,27 @@ print_body (void *out, FT_Face face) contains tables which aren't indexed at all */ while (FT_Sfnt_Table_Info (face, idx, &tag, &length) - != FT_Err_Table_Missing) - { - lengths.push_back (length); - tags.push_back (tag); - if (tag == head_tag) - head_length = length; - else if (tag == loca_tag) - loca_length = length; - idx ++; - } + != FT_Err_Table_Missing) + { + lengths.push_back (length); + tags.push_back (tag); + if (tag == head_tag) + head_length = length; + else if (tag == loca_tag) + loca_length = length; + idx++; + } FT_ULong hlength = 12 + 16 * idx; unsigned char *hbuf = new unsigned char[hlength]; unsigned char *p; - hbuf[0] = 0x00; /* version */ + hbuf[0] = 0x00; /* version */ hbuf[1] = 0x01; hbuf[2] = 0x00; hbuf[3] = 0x00; - hbuf[4] = (unsigned char) ((idx & 0xFF00) >> 8); /* numTables */ + hbuf[4] = (unsigned char) ((idx & 0xFF00) >> 8); /* numTables */ hbuf[5] = idx & 0x00FF; FT_UInt searchRange, entrySelector, rangeShift; @@ -303,65 +302,65 @@ print_body (void *out, FT_Face face) FT_ULong checksum, font_checksum = 0; - FT_ULong offset = hlength; /* first table offset */ + FT_ULong offset = hlength; /* first table offset */ for (FT_UInt i = 0; i < idx; i++) - { - /* here, the buffer length must be a multiple of 4 */ - FT_ULong len = (lengths[i] + 3) & ~3; - unsigned char *buf = new unsigned char[len]; - - buf[len - 1] = 0x00; /* assure padding with zeros */ - buf[len - 2] = 0x00; - buf[len - 3] = 0x00; - - FT_Error error = FT_Load_Sfnt_Table (face, tags[i], 0, buf, NULL); - if (error) - programming_error ("FT_Load_Sfnt_Table (): error."); - - if (tag == head_tag) - { - /* - first pass of computing the font checksum - needs checkSumAdjustment = 0 - */ - buf[8] = 0x00; - buf[9] = 0x00; - buf[10] = 0x00; - buf[11] = 0x00; - } - - checksum = 0; - unsigned char *endq = buf + len; - for (unsigned char *q = buf; q < endq; q += 4) - checksum += (q[0] << 24) | (q[1] << 16) | (q[2] << 8) | q[3]; - font_checksum += checksum; - - delete[] buf; - - *(p++) = (unsigned char) ((tags[i] & 0xFF000000UL) >> 24); - *(p++) = (unsigned char) ((tags[i] & 0x00FF0000UL) >> 16); - *(p++) = (unsigned char) ((tags[i] & 0x0000FF00UL) >> 8); - *(p++) = tags[i] & 0x000000FFUL; - - *(p++) = (unsigned char) ((checksum & 0xFF000000UL) >> 24); - *(p++) = (unsigned char) ((checksum & 0x00FF0000UL) >> 16); - *(p++) = (unsigned char) ((checksum & 0x0000FF00UL) >> 8); - *(p++) = checksum & 0x000000FFUL; - - *(p++) = (unsigned char) ((offset & 0xFF000000UL) >> 24); - *(p++) = (unsigned char) ((offset & 0x00FF0000UL) >> 16); - *(p++) = (unsigned char) ((offset & 0x0000FF00UL) >> 8); - *(p++) = offset & 0x000000FFUL; - - *(p++) = (unsigned char) ((lengths[i] & 0xFF000000UL) >> 24); - *(p++) = (unsigned char) ((lengths[i] & 0x00FF0000UL) >> 16); - *(p++) = (unsigned char) ((lengths[i] & 0x0000FF00UL) >> 8); - *(p++) = lengths[i] & 0x000000FFUL; - - /* offset must be a multiple of 4 */ - offset += (lengths[i] + 3) & ~3; - } + { + /* here, the buffer length must be a multiple of 4 */ + FT_ULong len = (lengths[i] + 3) & ~3; + unsigned char *buf = new unsigned char[len]; + + buf[len - 1] = 0x00; /* assure padding with zeros */ + buf[len - 2] = 0x00; + buf[len - 3] = 0x00; + + FT_Error error = FT_Load_Sfnt_Table (face, tags[i], 0, buf, NULL); + if (error) + programming_error ("FT_Load_Sfnt_Table (): error."); + + if (tag == head_tag) + { + /* + first pass of computing the font checksum + needs checkSumAdjustment = 0 + */ + buf[8] = 0x00; + buf[9] = 0x00; + buf[10] = 0x00; + buf[11] = 0x00; + } + + checksum = 0; + unsigned char *endq = buf + len; + for (unsigned char *q = buf; q < endq; q += 4) + checksum += (q[0] << 24) | (q[1] << 16) | (q[2] << 8) | q[3]; + font_checksum += checksum; + + delete[] buf; + + *(p++) = (unsigned char) ((tags[i] & 0xFF000000UL) >> 24); + *(p++) = (unsigned char) ((tags[i] & 0x00FF0000UL) >> 16); + *(p++) = (unsigned char) ((tags[i] & 0x0000FF00UL) >> 8); + *(p++) = tags[i] & 0x000000FFUL; + + *(p++) = (unsigned char) ((checksum & 0xFF000000UL) >> 24); + *(p++) = (unsigned char) ((checksum & 0x00FF0000UL) >> 16); + *(p++) = (unsigned char) ((checksum & 0x0000FF00UL) >> 8); + *(p++) = checksum & 0x000000FFUL; + + *(p++) = (unsigned char) ((offset & 0xFF000000UL) >> 24); + *(p++) = (unsigned char) ((offset & 0x00FF0000UL) >> 16); + *(p++) = (unsigned char) ((offset & 0x0000FF00UL) >> 8); + *(p++) = offset & 0x000000FFUL; + + *(p++) = (unsigned char) ((lengths[i] & 0xFF000000UL) >> 24); + *(p++) = (unsigned char) ((lengths[i] & 0x00FF0000UL) >> 16); + *(p++) = (unsigned char) ((lengths[i] & 0x0000FF00UL) >> 8); + *(p++) = lengths[i] & 0x000000FFUL; + + /* offset must be a multiple of 4 */ + offset += (lengths[i] + 3) & ~3; + } /* add checksum of TTF header */ checksum = 0; @@ -376,41 +375,41 @@ print_body (void *out, FT_Face face) */ lily_cookie_fprintf (out, "/sfnts ["); t42_write_table (out, face, hbuf, hlength, false, - head_length, loca_length); + head_length, loca_length); delete[] hbuf; idx = 0; while (FT_Sfnt_Table_Info (face, idx, &tag, &length) - != FT_Err_Table_Missing) + != FT_Err_Table_Missing) { unsigned char *buf = new unsigned char[length]; FT_Error error = FT_Load_Sfnt_Table (face, tag, 0, buf, NULL); if (error) - programming_error ("FT_Load_Sfnt_Table (): error."); + programming_error ("FT_Load_Sfnt_Table (): error."); if (tag == head_tag) - { - /* in the second pass simply store the computed font checksum */ - buf[8] = (unsigned char) ((font_checksum & 0xFF000000UL) >> 24); - buf[9] = (unsigned char) ((font_checksum & 0x00FF0000UL) >> 16); - buf[10] = (unsigned char) ((font_checksum & 0x0000FF00UL) >> 8); - buf[11] = font_checksum & 0x000000FFUL; - } + { + /* in the second pass simply store the computed font checksum */ + buf[8] = (unsigned char) ((font_checksum & 0xFF000000UL) >> 24); + buf[9] = (unsigned char) ((font_checksum & 0x00FF0000UL) >> 16); + buf[10] = (unsigned char) ((font_checksum & 0x0000FF00UL) >> 8); + buf[11] = font_checksum & 0x000000FFUL; + } bool is_glyf_table = tag == glyf_tag && length > CHUNKSIZE; t42_write_table (out, face, buf, length, is_glyf_table, - head_length, loca_length); + head_length, loca_length); delete[] buf; - idx ++; + idx++; } lily_cookie_fprintf (out, "\n] def\n"); } static void print_trailer (void *out, - FT_Face face) + FT_Face face) { const int GLYPH_NAME_LEN = 256; char glyph_name[GLYPH_NAME_LEN]; @@ -427,40 +426,40 @@ print_trailer (void *out, { glyph_name[0] = 0; if (face->face_flags & FT_FACE_FLAG_GLYPH_NAMES) - { - FT_Error error = FT_Get_Glyph_Name (face, i, glyph_name, - GLYPH_NAME_LEN); - if (error) - { - programming_error ("FT_Get_Glyph_Name (): error."); - glyph_name[0] = 0; - } - } + { + FT_Error error = FT_Get_Glyph_Name (face, i, glyph_name, + GLYPH_NAME_LEN); + if (error) + { + programming_error ("FT_Get_Glyph_Name (): error."); + glyph_name[0] = 0; + } + } if (!glyph_name[0] && ic_map.find (i) != ic_map.end ()) - { - FT_ULong ucode = ic_map[i]; - get_unicode_name (glyph_name, ucode); - } + { + FT_ULong ucode = ic_map[i]; + get_unicode_name (glyph_name, ucode); + } if (i == 0) - sprintf (glyph_name, ".notdef"); + sprintf (glyph_name, ".notdef"); else if (glyph_name == string (".notdef")) - glyph_name[0] = '\0'; + glyph_name[0] = '\0'; if (!glyph_name[0]) - get_glyph_index_name (glyph_name, i); + get_glyph_index_name (glyph_name, i); if (glyph_name[0]) - { - lily_cookie_fprintf (out, "(%s) cvn %d def ", glyph_name, i); - output_count ++; - } + { + lily_cookie_fprintf (out, "(%s) cvn %d def ", glyph_name, i); + output_count++; + } else - programming_error (to_string ("no name for glyph %d", i)); - + programming_error (to_string ("no name for glyph %d", i)); + if (! (output_count % 5)) - lily_cookie_fprintf (out, "\n"); + lily_cookie_fprintf (out, "\n"); } lily_cookie_fprintf (out, "end readonly def\n"); @@ -477,11 +476,11 @@ create_type42_font (void *out, string name, int idx) { face = open_ft_face (name, -1); if (idx >= face->num_faces) - { - warning (_f ("font index %d too large for font `%s', using index 0", - idx, name.c_str())); - idx = 0; - } + { + warning (_f ("font index %d too large for font `%s', using index 0", + idx, name.c_str ())); + idx = 0; + } FT_Done_Face (face); } @@ -495,11 +494,11 @@ create_type42_font (void *out, string name, int idx) } LY_DEFINE (ly_ttf_ps_name, "ly:ttf-ps-name", - 1, 1, 0, (SCM ttf_file_name, SCM idx), - "Extract the PostScript name from a TrueType font. The optional" - " @var{idx} argument is useful for TrueType collections (TTC)" - " only; it specifies the font index within the TTC. The default" - " value of @var{idx} is@tie{}0.") + 1, 1, 0, (SCM ttf_file_name, SCM idx), + "Extract the PostScript name from a TrueType font. The optional" + " @var{idx} argument is useful for TrueType collections (TTC)" + " only; it specifies the font index within the TTC. The default" + " value of @var{idx} is@tie{}0.") { LY_ASSERT_TYPE (scm_is_string, ttf_file_name, 1); @@ -509,15 +508,14 @@ LY_DEFINE (ly_ttf_ps_name, "ly:ttf-ps-name", LY_ASSERT_TYPE (scm_is_integer, idx, 2); i = scm_to_int (idx); if (i < 0) - { - warning (_ ("font index must be non-negative, using index 0")); - i = 0; - } + { + warning (_ ("font index must be non-negative, using index 0")); + i = 0; + } } string file_name = ly_scm2string (ttf_file_name); - if (be_verbose_global) - progress_indication ("\n[" + file_name); + debug_output ("\n[" + file_name, false); FT_Face face; @@ -526,11 +524,11 @@ LY_DEFINE (ly_ttf_ps_name, "ly:ttf-ps-name", { face = open_ft_face (file_name, -1); if (i >= face->num_faces) - { - warning (_f ("font index %d too large for font `%s', using index 0", - i, file_name.c_str())); - i = 0; - } + { + warning (_f ("font index %d too large for font `%s', using index 0", + i, file_name.c_str ())); + i = 0; + } FT_Done_Face (face); } @@ -539,19 +537,18 @@ LY_DEFINE (ly_ttf_ps_name, "ly:ttf-ps-name", SCM ps_name = scm_from_locale_string (ps_name_str0 ? ps_name_str0 : ""); FT_Done_Face (face); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); return ps_name; } LY_DEFINE (ly_ttf_2_pfa, "ly:ttf->pfa", - 1, 1, 0, (SCM ttf_file_name, SCM idx), - "Convert the contents of a TrueType font file to PostScript" - " Type@tie{}42 font, returning it as a string. The optional" - " @var{idx} argument is useful for TrueType collections (TTC)" - " only; it specifies the font index within the TTC. The default" - " value of @var{idx} is@tie{}0.") + 1, 1, 0, (SCM ttf_file_name, SCM idx), + "Convert the contents of a TrueType font file to PostScript" + " Type@tie{}42 font, returning it as a string. The optional" + " @var{idx} argument is useful for TrueType collections (TTC)" + " only; it specifies the font index within the TTC. The default" + " value of @var{idx} is@tie{}0.") { LY_ASSERT_TYPE (scm_is_string, ttf_file_name, 1); @@ -561,24 +558,22 @@ LY_DEFINE (ly_ttf_2_pfa, "ly:ttf->pfa", LY_ASSERT_TYPE (scm_is_integer, idx, 2); i = scm_to_int (idx); if (i < 0) - { - warning (_ ("font index must be non-negative, using index 0")); - i = 0; - } + { + warning (_ ("font index must be non-negative, using index 0")); + i = 0; + } } string file_name = ly_scm2string (ttf_file_name); - if (be_verbose_global) - progress_indication ("\n[" + file_name); + debug_output ("[" + file_name); // Debug message should start on a new line Memory_out_stream stream; create_type42_font (&stream, file_name, i); SCM asscm = scm_from_locale_stringn (stream.get_string (), - stream.get_length ()); + stream.get_length ()); - if (be_verbose_global) - progress_indication ("]"); + debug_output ("]", false); return asscm; } diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index 3bf2d1b49e..d211dcae38 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -41,6 +41,7 @@ */ #include "tuplet-bracket.hh" +#include "axis-group-interface.hh" #include "line-interface.hh" #include "beam.hh" #include "warn.hh" @@ -51,6 +52,7 @@ #include "note-column.hh" #include "pointer-group-interface.hh" #include "directional-element-interface.hh" +#include "skyline.hh" #include "spanner.hh" #include "staff-symbol-referencer.hh" #include "lookup.hh" @@ -86,7 +88,7 @@ flatten_number_pair_property (Grob *me, Direction xdir, SCM sym) */ Grob * Tuplet_bracket::parallel_beam (Grob *me_grob, vector const &cols, - bool *equally_long) + bool *equally_long) { Spanner *me = dynamic_cast (me_grob); @@ -95,19 +97,17 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, vector const &cols, return 0; Drul_array stems (Note_column::get_stem (cols[0]), - Note_column::get_stem (cols.back ())); + Note_column::get_stem (cols.back ())); if (!stems[RIGHT] || !stems[LEFT] || (dynamic_cast (stems[RIGHT])->get_column () - != me->get_bound (RIGHT)->get_column ())) + != me->get_bound (RIGHT)->get_column ())) return 0; Drul_array beams; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) beams[d] = stems[d] ? Stem::get_beam (stems[d]) : 0; - while (flip (&d) != LEFT); *equally_long = false; if (! (beams[LEFT] && (beams[LEFT] == beams[RIGHT]) && !me->is_broken ())) @@ -135,35 +135,33 @@ Tuplet_bracket::calc_connect_to_neighbors (SCM smob) Direction dir = get_grob_direction (me); Drul_array bounds (get_x_bound_item (me, LEFT, dir), - get_x_bound_item (me, RIGHT, dir)); + get_x_bound_item (me, RIGHT, dir)); Drul_array connect_to_other (false, false); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Direction break_dir = bounds[d]->break_status_dir (); Spanner *orig_spanner = dynamic_cast (me->original ()); vsize neighbor_idx = me->get_break_index () - break_dir; if (break_dir - && d == RIGHT - && neighbor_idx < orig_spanner->broken_intos_.size ()) - { - Grob *neighbor = orig_spanner->broken_intos_[neighbor_idx]; + && d == RIGHT + && neighbor_idx < orig_spanner->broken_intos_.size ()) + { + Grob *neighbor = orig_spanner->broken_intos_[neighbor_idx]; - /* trigger possible suicide*/ - (void) neighbor->get_property ("positions"); - } + /* trigger possible suicide*/ + (void) neighbor->get_property ("positions"); + } connect_to_other[d] - = (break_dir - && neighbor_idx < orig_spanner->broken_intos_.size () - && orig_spanner->broken_intos_[neighbor_idx]->is_live ()); + = (break_dir + && neighbor_idx < orig_spanner->broken_intos_.size () + && orig_spanner->broken_intos_[neighbor_idx]->is_live ()); } - while (flip (&d) != LEFT); if (connect_to_other[LEFT] || connect_to_other[RIGHT]) return scm_cons (scm_from_bool (connect_to_other[LEFT]), - scm_from_bool (connect_to_other[RIGHT])); + scm_from_bool (connect_to_other[RIGHT])); return SCM_EOL; } @@ -180,24 +178,13 @@ Tuplet_bracket::get_common_x (Spanner *me) return commonx; } -MAKE_SCHEME_CALLBACK (Tuplet_bracket, calc_control_points, 1) +MAKE_SCHEME_CALLBACK (Tuplet_bracket, calc_x_positions, 1) SCM -Tuplet_bracket::calc_control_points (SCM smob) +Tuplet_bracket::calc_x_positions (SCM smob) { Spanner *me = unsmob_spanner (smob); - extract_grob_set (me, "note-columns", columns); - SCM scm_positions = me->get_property ("positions"); - if (!me->is_live ()) - return SCM_EOL; - - if (!scm_is_pair (scm_positions)) - programming_error ("Positions should be number pair"); - - Drul_array positions - = robust_scm2drul (scm_positions, Drul_array (0, 0)); - Grob *commonx = get_common_x (me); Direction dir = get_grob_direction (me); @@ -207,56 +194,53 @@ Tuplet_bracket::calc_control_points (SCM smob) Drul_array connect_to_other = robust_scm2booldrul (me->get_property ("connect-to-neighbor"), - Drul_array (false, false)); + Drul_array (false, false)); Interval x_span; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { - x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS)[d]; + x_span[d] = Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[d]; if (connect_to_other[d]) - { - Interval overshoot (robust_scm2drul (me->get_property ("break-overshoot"), - Interval (-0.5, 0.0))); - - if (d == RIGHT) - x_span[d] += d * overshoot[d]; - else - x_span[d] = robust_relative_extent (bounds[d], - commonx, X_AXIS)[RIGHT] - - overshoot[LEFT]; - } + { + Interval overshoot (robust_scm2drul (me->get_property ("break-overshoot"), + Interval (-0.5, 0.0))); + + if (d == RIGHT) + x_span[d] += d * overshoot[d]; + else + x_span[d] = (bounds[d]->break_status_dir () + ? Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[-d] + : robust_relative_extent (bounds[d], commonx, X_AXIS)[-d]) + - overshoot[LEFT]; + } else if (d == RIGHT - && (columns.empty () - || (bounds[d]->get_column () - != dynamic_cast (columns.back ())->get_column ()))) - { - /* - We're connecting to a column, for the last bit of a broken - fullLength bracket. - */ - Real padding - = robust_scm2double (me->get_property ("full-length-padding"), 1.0); - - if (bounds[d]->break_status_dir ()) - padding = 0.0; - - Real coord = bounds[d]->relative_coordinate (commonx, X_AXIS); - if (to_boolean (me->get_property ("full-length-to-extent"))) - coord = robust_relative_extent (bounds[d], commonx, X_AXIS)[LEFT]; - - coord = max (coord, x_span[LEFT]); - - x_span[d] = coord - padding; - } + && (columns.empty () + || (bounds[d]->get_column () + != dynamic_cast (columns.back ())->get_column ()))) + { + /* + We're connecting to a column, for the last bit of a broken + fullLength bracket. + */ + Real padding + = robust_scm2double (me->get_property ("full-length-padding"), 1.0); + + if (bounds[d]->break_status_dir ()) + padding = 0.0; + + Real coord = bounds[d]->relative_coordinate (commonx, X_AXIS); + if (to_boolean (me->get_property ("full-length-to-extent"))) + coord = robust_relative_extent (bounds[d], commonx, X_AXIS)[LEFT]; + + coord = max (coord, x_span[LEFT]); + + x_span[d] = coord - padding; + } } - while (flip (&d) != LEFT); - x_span -= me->get_bound (LEFT)->relative_coordinate (commonx, X_AXIS); - return scm_list_2 (ly_offset2scm (Offset (x_span[LEFT], positions[LEFT])), - ly_offset2scm (Offset (x_span[RIGHT], positions[RIGHT]))); + return ly_interval2scm (x_span - me->get_bound (LEFT)->relative_coordinate (commonx, X_AXIS)); } /* @@ -290,10 +274,11 @@ Tuplet_bracket::print (SCM smob) /* Don't print a tuplet bracket and number if - no control-points were calculated + no X or Y positions were calculated. */ - SCM cpoints = me->get_property ("control-points"); - if (scm_ilength (cpoints) < 2) + SCM scm_x_span = me->get_property ("X-positions"); + SCM scm_positions = me->get_property ("positions"); + if (!scm_is_pair (scm_x_span) || !scm_is_pair (scm_positions)) { me->suicide (); return SCM_EOL; @@ -304,15 +289,15 @@ Tuplet_bracket::print (SCM smob) */ if (!to_boolean (bracket_vis_prop) && (robust_scm2moment (me->get_bound (LEFT)->get_column ()->get_property ("when"), Moment (0)) - == robust_scm2moment (me->get_bound (RIGHT)->get_column ()->get_property ("when"), Moment (0)))) + == robust_scm2moment (me->get_bound (RIGHT)->get_column ()->get_property ("when"), Moment (0)))) bracket_visibility = false; - Drul_array points; - points[LEFT] = ly_scm2offset (scm_car (cpoints)); - points[RIGHT] = ly_scm2offset (scm_cadr (cpoints)); + Interval x_span = robust_scm2interval (scm_x_span, Interval (0.0, 0.0)); + Interval positions = robust_scm2interval (scm_positions, Interval (0.0, 0.0)); - Interval x_span (points[LEFT][X_AXIS], points[RIGHT][X_AXIS]); - Drul_array positions (points[LEFT][Y_AXIS], points[RIGHT][Y_AXIS]); + Drul_array points; + for (LEFT_and_RIGHT (d)) + points[d] = Offset (x_span[d], positions[d]); Output_def *pap = me->layout (); @@ -327,12 +312,12 @@ Tuplet_bracket::print (SCM smob) { Interval ext = number_grob->extent (number_grob, X_AXIS); if (!ext.is_empty ()) - { - gap = ext.length () + 1.0; + { + gap = ext.length () + 1.0; - if ((0.75 * x_span.length () < gap) && !bracket_prop) - bracket_visibility = false; - } + if ((0.75 * x_span.length () < gap) && !bracket_prop) + bracket_visibility = false; + } } if (bracket_visibility) @@ -340,11 +325,11 @@ Tuplet_bracket::print (SCM smob) Drul_array zero (0, 0); Real ss = Staff_symbol_referencer::staff_space (me); Drul_array height - = robust_scm2drul (me->get_property ("edge-height"), zero); + = robust_scm2drul (me->get_property ("edge-height"), zero); Drul_array flare - = robust_scm2drul (me->get_property ("bracket-flare"), zero); + = robust_scm2drul (me->get_property ("bracket-flare"), zero); Drul_array shorten - = robust_scm2drul (me->get_property ("shorten-pair"), zero); + = robust_scm2drul (me->get_property ("shorten-pair"), zero); Drul_array edge_stencils; Direction dir = get_grob_direction (me); @@ -354,56 +339,53 @@ Tuplet_bracket::print (SCM smob) scale_drul (&shorten, ss); Drul_array connect_to_other - = robust_scm2booldrul (me->get_property ("connect-to-neighbor"), - Drul_array (false, false)); - - Direction d = LEFT; - do - { - if (connect_to_other[d]) - { - height[d] = 0.0; - flare[d] = 0.0; - shorten[d] = 0.0; - - SCM edge_text = me->get_property ("edge-text"); - - if (scm_is_pair (edge_text)) - { - SCM properties = Font_interface::text_font_alist_chain (me); - SCM text = index_get_cell (edge_text, d); - if (Text_interface::is_markup (text)) - { - SCM t - = Text_interface::interpret_markup (pap->self_scm (), - properties, text); - - Stencil *edge_text = unsmob_stencil (t); - edge_text->translate_axis (x_span[d] - x_span[LEFT], - X_AXIS); - edge_stencils[d] = *edge_text; - } - } - } - } - while (flip (&d) != LEFT); + = robust_scm2booldrul (me->get_property ("connect-to-neighbor"), + Drul_array (false, false)); + + for (LEFT_and_RIGHT (d)) + { + if (connect_to_other[d]) + { + height[d] = 0.0; + flare[d] = 0.0; + shorten[d] = 0.0; + + SCM edge_text = me->get_property ("edge-text"); + + if (scm_is_pair (edge_text)) + { + SCM properties = Font_interface::text_font_alist_chain (me); + SCM text = index_get_cell (edge_text, d); + if (Text_interface::is_markup (text)) + { + SCM t + = Text_interface::interpret_markup (pap->self_scm (), + properties, text); + + Stencil *edge_text = unsmob_stencil (t); + edge_text->translate_axis (x_span[d] - x_span[LEFT], + X_AXIS); + edge_stencils[d] = *edge_text; + } + } + } + } Stencil brack = make_bracket (me, Y_AXIS, - points[RIGHT] - points[LEFT], - height, - /* - 0.1 = more space at right due to italics - TODO: use italic correction of font. - */ - Interval (-0.5, 0.5) * gap + 0.1, - flare, shorten); - - do - { - if (!edge_stencils[d].is_empty ()) - brack.add_stencil (edge_stencils[d]); - } - while (flip (&d) != LEFT); + points[RIGHT] - points[LEFT], + height, + /* + 0.1 = more space at right due to italics + TODO: use italic correction of font. + */ + Interval (-0.5, 0.5) * gap + 0.1, + flare, shorten); + + for (LEFT_and_RIGHT (d)) + { + if (!edge_stencils[d].is_empty ()) + brack.add_stencil (edge_stencils[d]); + } mol.add_stencil (brack); } @@ -420,12 +402,12 @@ Tuplet_bracket::print (SCM smob) */ Stencil Tuplet_bracket::make_bracket (Grob *me, // for line properties. - Axis protrusion_axis, - Offset dz, - Drul_array height, - Interval gap, - Drul_array flare, - Drul_array shorten) + Axis protrusion_axis, + Offset dz, + Drul_array height, + Interval gap, + Drul_array flare, + Drul_array shorten) { Drul_array corners (Offset (0, 0), dz); @@ -436,43 +418,37 @@ Tuplet_bracket::make_bracket (Grob *me, // for line properties. Drul_array straight_corners = corners; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) straight_corners[d] += -d * shorten[d] / length * dz; - while (flip (&d) != LEFT); if (!gap.is_empty ()) { - do - gap_corners[d] = (dz * 0.5) + gap[d] / length * dz; - while (flip (&d) != LEFT); + for (LEFT_and_RIGHT (d)) + gap_corners[d] = (dz * 0.5) + gap[d] / length * dz; } Drul_array flare_corners = straight_corners; - do + for (LEFT_and_RIGHT (d)) { flare_corners[d][bracket_axis] = straight_corners[d][bracket_axis]; flare_corners[d][protrusion_axis] += height[d]; straight_corners[d][bracket_axis] += -d * flare[d]; } - while (flip (&d) != LEFT); Stencil m; - do + for (LEFT_and_RIGHT (d)) { if (!gap.is_empty ()) - m.add_stencil (Line_interface::line (me, straight_corners[d], - gap_corners[d])); + m.add_stencil (Line_interface::line (me, straight_corners[d], + gap_corners[d])); m.add_stencil (Line_interface::line (me, straight_corners[d], - flare_corners[d])); + flare_corners[d])); } - while (flip (&d) != LEFT); - if (gap.is_empty ()) m.add_stencil (Line_interface::line (me, straight_corners[LEFT], - straight_corners[RIGHT])); + straight_corners[RIGHT])); return m; } @@ -528,10 +504,10 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy) { Real pad = robust_scm2double (me->get_property ("staff-padding"), -1.0); if (pad >= 0.0) - { - staff = st->extent (commony, Y_AXIS) - my_offset; - staff.widen (pad); - } + { + staff = st->extent (commony, Y_AXIS) - my_offset; + staff.widen (pad); + } } Direction dir = get_grob_direction (me); @@ -544,8 +520,8 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy) Real x0 = robust_relative_extent (lgr, commonx, X_AXIS)[LEFT]; Real x1 = robust_relative_extent (rgr, commonx, X_AXIS)[RIGHT]; bool follow_beam = par_beam - && get_grob_direction (par_beam) == dir - && !to_boolean (par_beam->get_property ("knee")); + && get_grob_direction (par_beam) == dir + && !to_boolean (par_beam->get_property ("knee")); vector points; if (columns.size () @@ -553,65 +529,64 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy) && Note_column::get_stem (columns[0]) && Note_column::get_stem (columns.back ())) { - /* - trigger set_stem_ends - */ - (void) par_beam->get_property ("quantized-positions"); - Drul_array stems (Note_column::get_stem (columns[0]), - Note_column::get_stem (columns.back ())); - - Real ss = 0.5 * Staff_symbol_referencer::staff_space (me); - Real lp = ss * robust_scm2double (stems[LEFT]->get_property ("stem-end-position"), 0.0) - + stems[LEFT]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS); - Real rp = ss * robust_scm2double (stems[RIGHT]->get_property ("stem-end-position"), 0.0) - + stems[RIGHT]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS); - - *dy = rp - lp; - points.push_back (Offset (stems[LEFT]->relative_coordinate (commonx, X_AXIS) - x0, lp)); - points.push_back (Offset (stems[RIGHT]->relative_coordinate (commonx, X_AXIS) - x0, rp)); + Note_column::get_stem (columns.back ())); + + Interval poss; + for (LEFT_and_RIGHT (side)) + { + // Trigger setting of stem lengths if necessary. + if (Grob *beam = Stem::get_beam (stems[side])) + (void) beam->get_property ("quantized-positions"); + poss[side] = stems[side]->extent (stems[side], Y_AXIS)[get_grob_direction (stems[side])] + + stems[side]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS); + } + + *dy = poss[RIGHT] - poss[LEFT]; + points.push_back (Offset (stems[LEFT]->relative_coordinate (commonx, X_AXIS) - x0, poss[LEFT])); + points.push_back (Offset (stems[RIGHT]->relative_coordinate (commonx, X_AXIS) - x0, poss[RIGHT])); } else { /* - Use outer non-rest columns to determine slope + Use outer non-rest columns to determine slope */ Grob *left_col = 0; Grob *right_col = 0; get_bounds (me, &left_col, &right_col); if (left_col && right_col) - { - Interval rv = Note_column::cross_staff_extent (right_col, commony); - Interval lv = Note_column::cross_staff_extent (left_col, commony); - rv.unite (staff); - lv.unite (staff); - - Real graphical_dy = rv[dir] - lv[dir]; - - Slice ls = Note_column::head_positions_interval (left_col); - Slice rs = Note_column::head_positions_interval (right_col); - - Interval musical_dy; - musical_dy[UP] = rs[UP] - ls[UP]; - musical_dy[DOWN] = rs[DOWN] - ls[DOWN]; - if (sign (musical_dy[UP]) != sign (musical_dy[DOWN])) - *dy = 0.0; - else if (sign (graphical_dy) != sign (musical_dy[DOWN])) - *dy = 0.0; - else - *dy = graphical_dy; - } + { + Interval rv = Note_column::cross_staff_extent (right_col, commony); + Interval lv = Note_column::cross_staff_extent (left_col, commony); + rv.unite (staff); + lv.unite (staff); + + Real graphical_dy = rv[dir] - lv[dir]; + + Slice ls = Note_column::head_positions_interval (left_col); + Slice rs = Note_column::head_positions_interval (right_col); + + Interval musical_dy; + musical_dy[UP] = rs[UP] - ls[UP]; + musical_dy[DOWN] = rs[DOWN] - ls[DOWN]; + if (sign (musical_dy[UP]) != sign (musical_dy[DOWN])) + *dy = 0.0; + else if (sign (graphical_dy) != sign (musical_dy[DOWN])) + *dy = 0.0; + else + *dy = graphical_dy; + } else - *dy = 0; + *dy = 0; for (vsize i = 0; i < columns.size (); i++) - { - Interval note_ext = Note_column::cross_staff_extent (columns[i], - commony); - Real x = columns[i]->relative_coordinate (commonx, X_AXIS) - x0; + { + Interval note_ext = Note_column::cross_staff_extent (columns[i], + commony); + Real x = columns[i]->relative_coordinate (commonx, X_AXIS) - x0; - points.push_back (Offset (x, note_ext[dir])); - } + points.push_back (Offset (x, note_ext[dir])); + } } if (!follow_beam) @@ -633,29 +608,57 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy) Interval tuplet_y (tuplets[i]->extent (commony, Y_AXIS)); if (!tuplets[i]->is_live ()) - continue; + continue; - Direction d = LEFT; Drul_array positions - = robust_scm2interval (tuplets[i]->get_property ("positions"), - Interval (0,0)); + = robust_scm2interval (tuplets[i]->get_property ("positions"), + Interval (0, 0)); Real other_dy = positions[RIGHT] - positions[LEFT]; - do - { - Real y - = tuplet_y.linear_combination (d * sign (other_dy)); - - /* - We don't take padding into account for nested tuplets. - the edges can come very close to the stems, likewise for - nested tuplets? - */ + for (LEFT_and_RIGHT (d)) + { + Real y + = tuplet_y.linear_combination (d * sign (other_dy)); + + /* + We don't take padding into account for nested tuplets. + the edges can come very close to the stems, likewise for + nested tuplets? + */ + + points.push_back (Offset (tuplet_x[d] - x0, y)); + } + + // Check for number-on-bracket collisions + Grob *number = unsmob_grob (tuplets[i]->get_object ("tuplet-number")); + if (number) + points.push_back (Offset (number->extent (commonx, X_AXIS).center () - x0, + number->extent (commony, Y_AXIS)[dir])); + } - points.push_back (Offset (tuplet_x[d] - x0, y)); - } - while (flip (&d) != LEFT); + if (to_boolean (me->get_property ("avoid-scripts")) + && !scm_is_number (me->get_property ("outside-staff-priority"))) + { + extract_grob_set (me, "scripts", scripts); + for (vsize i = 0; i < scripts.size (); i++) + { + if (!scripts[i]->is_live ()) + continue; + if (scm_is_number (scripts[i]->get_property ("outside-staff-priority"))) + continue; + + // assume that if a script is avoiding slurs, it should not get placed + // under a tuplet bracket + if (unsmob_grob (scripts[i]->get_object ("slur"))) + continue; + + Interval script_x (scripts[i]->extent (commonx, X_AXIS)); + Interval script_y (scripts[i]->extent (commony, Y_AXIS)); + + points.push_back (Offset (script_x.center () - x0, + script_y[dir])); + } } *offset = -dir * infinity_f; @@ -666,7 +669,7 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy) Real tuplety = (*dy) * x * factor + my_offset; if (points[i][Y_AXIS] * dir > (*offset + tuplety) * dir) - *offset = points[i][Y_AXIS] - tuplety; + *offset = points[i][Y_AXIS] - tuplety; } *offset += scm_to_double (me->get_property ("padding")) * dir; @@ -674,21 +677,20 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy) /* horizontal brackets should not collide with staff lines. - Kind of pointless since we put them outside the staff anyway, but - let's leave code for the future when possibly allow them to move - into the staff once again. - This doesn't seem to support cross-staff tuplets atm. */ - if (*dy == 0 - && fabs (*offset) < ss * Staff_symbol_referencer::staff_radius (me)) + if (*dy == 0) { // quantize, then do collision check. - *offset *= 2 / ss; + *offset /= 0.5 * ss; - *offset = rint (*offset); - if (Staff_symbol_referencer::on_line (me, (int) rint (*offset))) - *offset += dir; + Interval staff_span = Staff_symbol_referencer::staff_span (me); + if (staff_span.contains (*offset)) + { + *offset = rint (*offset); + if (Staff_symbol_referencer::on_line (me, int (*offset))) + *offset += dir; + } *offset *= 0.5 * ss; } @@ -714,7 +716,7 @@ Tuplet_bracket::calc_positions (SCM smob) calc_position_and_height (me, &offset, &dy); SCM x = scm_cons (scm_from_double (offset), - scm_from_double (offset + dy)); + scm_from_double (offset + dy)); return x; } @@ -730,12 +732,35 @@ 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]++; + 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]); + } + for (LEFT_and_RIGHT (d)) + extremal_positions[d] = -d * (staff_extent[d] - extremal_positions[d]); + + return extremal_positions[UP] <= extremal_positions[DOWN] ? UP : DOWN; + } + + return dirs[UP] > dirs[DOWN] ? UP : DOWN; } void @@ -745,6 +770,12 @@ Tuplet_bracket::add_column (Grob *me, Item *n) add_bound_item (dynamic_cast (me), n); } +void +Tuplet_bracket::add_script (Grob *me, Item *s) +{ + Pointer_group_interface::add_grob (me, ly_symbol2scm ("scripts"), s); +} + void Tuplet_bracket::add_tuplet_bracket (Grob *me, Grob *bracket) { @@ -776,37 +807,38 @@ Tuplet_bracket::calc_cross_staff (SCM smob) { Grob *stem = unsmob_grob (cols[i]->get_object ("stem")); if (stem && to_boolean (stem->get_property ("cross-staff"))) - return SCM_BOOL_T; + return SCM_BOOL_T; } return SCM_BOOL_F; } ADD_INTERFACE (Tuplet_bracket, - "A bracket with a number in the middle, used for tuplets." - " When the bracket spans a line break, the value of" - " @code{break-overshoot} determines how far it extends" - " beyond the staff. At a line break, the markups in the" - " @code{edge-text} are printed at the edges.", - - /* properties */ - "bracket-flare " - "bracket-visibility " - "break-overshoot " - "connect-to-neighbor " - "control-points " - "direction " - "edge-height " - "edge-text " - "full-length-padding " - "full-length-to-extent " - "gap " - "positions " - "note-columns " - "padding " - "tuplet-number " - "shorten-pair " - "staff-padding " - "thickness " - "tuplets " - ); + "A bracket with a number in the middle, used for tuplets." + " When the bracket spans a line break, the value of" + " @code{break-overshoot} determines how far it extends" + " beyond the staff. At a line break, the markups in the" + " @code{edge-text} are printed at the edges.", + + /* properties */ + "avoid-scripts " + "bracket-flare " + "bracket-visibility " + "break-overshoot " + "connect-to-neighbor " + "direction " + "edge-height " + "edge-text " + "full-length-padding " + "full-length-to-extent " + "gap " + "positions " + "note-columns " + "padding " + "tuplet-number " + "shorten-pair " + "staff-padding " + "thickness " + "tuplets " + "X-positions " + ); diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 39c120dd75..1b75bf923c 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,7 +41,7 @@ struct Tuplet_description Moment stop_moment_; Moment start_moment_; Moment length_; - + Tuplet_description () { event_ = 0; @@ -61,9 +61,12 @@ protected: vector tuplets_; vector new_tuplets_; vector stopped_tuplets_; - vector last_tuplets_; - + vector last_tuplets_; + DECLARE_ACKNOWLEDGER (note_column); + DECLARE_ACKNOWLEDGER (script); + DECLARE_ACKNOWLEDGER (finger); + DECLARE_ACKNOWLEDGER (string_number); DECLARE_TRANSLATOR_LISTENER (tuplet_span); virtual void finalize (); void start_translation_timestep (); @@ -81,32 +84,32 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev) d.event_ = ev; d.length_ = robust_scm2moment (d.event_->get_property ("length"), - Moment (0)); + Moment (0)); d.start_moment_ = now_mom (); d.stop_moment_ = now_mom () + d.length_; - for (vsize i=0; i < new_tuplets_.size (); i++) - { - /* - discard duplicates. - */ - if (new_tuplets_[i].stop_moment_ == d.stop_moment_) - return; - } - + for (vsize i = 0; i < new_tuplets_.size (); i++) + { + /* + discard duplicates. + */ + if (new_tuplets_[i].stop_moment_ == d.stop_moment_) + return; + } + new_tuplets_.push_back (d); } else if (dir == STOP) { if (tuplets_.size ()) - { - stopped_tuplets_.push_back (tuplets_.back ()); - tuplets_.pop_back (); - } - else if (!to_boolean (get_property ("skipTypesetting"))) - ev->origin ()->warning (_ ("No tuplet to end")); + { + stopped_tuplets_.push_back (tuplets_.back ()); + tuplets_.pop_back (); + } + else if (!to_boolean (get_property ("skipTypesetting"))) + ev->origin ()->warning (_ ("No tuplet to end")); } - else + else ev->origin ()->programming_error ("direction tuplet-span-event_ invalid."); } @@ -117,48 +120,48 @@ Tuplet_engraver::process_music () This may happen if the end of a tuplet is part of a quoted voice. */ Moment now = now_mom (); - for (vsize i = tuplets_.size (); i --; ) + for (vsize i = tuplets_.size (); i--;) { if (tuplets_[i].stop_moment_ == now) - { - stopped_tuplets_.push_back (tuplets_[i]); - tuplets_.erase (tuplets_.begin () + i); - } + { + stopped_tuplets_.push_back (tuplets_[i]); + tuplets_.erase (tuplets_.begin () + i); + } } - + for (vsize i = 0; i < stopped_tuplets_.size (); i++) { Spanner *bracket = stopped_tuplets_[i].bracket_; Spanner *number = stopped_tuplets_[i].number_; if (bracket) - { - if (stopped_tuplets_[i].full_length_) - { - Item *col = - unsmob_item (stopped_tuplets_[i].full_length_note_ - ? get_property ("currentMusicalColumn") - : get_property ("currentCommandColumn")); - - bracket->set_bound (RIGHT, col); - number->set_bound (RIGHT, col); - } - else if (!bracket->get_bound (RIGHT)) - { - if (bracket->get_bound (LEFT)) - { - bracket->set_bound (RIGHT, - bracket->get_bound (LEFT)); - number->set_bound (RIGHT, - stopped_tuplets_[i].bracket_->get_bound (LEFT)); - } - else - programming_error ("stopped tuplet bracket has neither left nor right bound"); - } - // todo: scrap last_tuplets_, use stopped_tuplets_ only. - // clear stopped_tuplets_ at start_translation_timestep - last_tuplets_.push_back (bracket); - last_tuplets_.push_back (number); - } + { + if (stopped_tuplets_[i].full_length_) + { + Item *col + = unsmob_item (stopped_tuplets_[i].full_length_note_ + ? get_property ("currentMusicalColumn") + : get_property ("currentCommandColumn")); + + bracket->set_bound (RIGHT, col); + number->set_bound (RIGHT, col); + } + else if (!bracket->get_bound (RIGHT)) + { + if (bracket->get_bound (LEFT)) + { + bracket->set_bound (RIGHT, + bracket->get_bound (LEFT)); + number->set_bound (RIGHT, + stopped_tuplets_[i].bracket_->get_bound (LEFT)); + } + else + programming_error ("stopped tuplet bracket has neither left nor right bound"); + } + // todo: scrap last_tuplets_, use stopped_tuplets_ only. + // clear stopped_tuplets_ at start_translation_timestep + last_tuplets_.push_back (bracket); + last_tuplets_.push_back (number); + } } stopped_tuplets_.clear (); @@ -169,28 +172,28 @@ Tuplet_engraver::process_music () /* i goes from size-1 downto 0, inclusively */ vsize i = j - 1; - if (tuplets_[i].bracket_) - continue; + continue; tuplets_[i].full_length_ = to_boolean (get_property ("tupletFullLength")); tuplets_[i].full_length_note_ - = to_boolean (get_property ("tupletFullLengthNote")); - + = to_boolean (get_property ("tupletFullLengthNote")); + tuplets_[i].bracket_ = make_spanner ("TupletBracket", - tuplets_[i].event_->self_scm ()); + tuplets_[i].event_->self_scm ()); tuplets_[i].number_ = make_spanner ("TupletNumber", - tuplets_[i].event_->self_scm ()); + 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; - - + if (i + 1 < tuplets_.size () && tuplets_[i + 1].bracket_) - Tuplet_bracket::add_tuplet_bracket (tuplets_[i].bracket_, tuplets_[i + 1].bracket_); - + Tuplet_bracket::add_tuplet_bracket (tuplets_[i].bracket_, tuplets_[i + 1].bracket_); + if (i > 0 && tuplets_[i - 1].bracket_) - Tuplet_bracket::add_tuplet_bracket (tuplets_[i - 1].bracket_, tuplets_[i].bracket_); + Tuplet_bracket::add_tuplet_bracket (tuplets_[i - 1].bracket_, tuplets_[i].bracket_); } } @@ -201,9 +204,42 @@ Tuplet_engraver::acknowledge_note_column (Grob_info inf) for (vsize j = 0; j < tuplets_.size (); j++) if (tuplets_[j].bracket_) { - Item *i = dynamic_cast (inf.grob ()); - Tuplet_bracket::add_column (tuplets_[j].bracket_, i); - add_bound_item (tuplets_[j].number_, i); + Item *i = dynamic_cast (inf.grob ()); + Tuplet_bracket::add_column (tuplets_[j].bracket_, i); + add_bound_item (tuplets_[j].number_, i); + } +} + +void +Tuplet_engraver::acknowledge_script (Grob_info inf) +{ + for (vsize j = 0; j < tuplets_.size (); j++) + if (tuplets_[j].bracket_) + { + Item *i = dynamic_cast (inf.grob ()); + Tuplet_bracket::add_script (tuplets_[j].bracket_, i); + } +} + +void +Tuplet_engraver::acknowledge_finger (Grob_info inf) +{ + for (vsize j = 0; j < tuplets_.size (); j++) + if (tuplets_[j].bracket_) + { + Item *i = dynamic_cast (inf.grob ()); + Tuplet_bracket::add_script (tuplets_[j].bracket_, i); + } +} + +void +Tuplet_engraver::acknowledge_string_number (Grob_info inf) +{ + for (vsize j = 0; j < tuplets_.size (); j++) + if (tuplets_[j].bracket_) + { + Item *i = dynamic_cast (inf.grob ()); + Tuplet_bracket::add_script (tuplets_[j].bracket_, i); } } @@ -214,7 +250,7 @@ Tuplet_engraver::start_translation_timestep () /* May seem superfluous, but necessary for skipTypesetting. */ - new_tuplets_.clear (); + new_tuplets_.clear (); } void @@ -223,8 +259,8 @@ Tuplet_engraver::finalize () if (to_boolean (get_property ("tupletFullLength"))) for (vsize i = 0; i < last_tuplets_.size (); i++) { - Item *col = unsmob_item (get_property ("currentCommandColumn")); - last_tuplets_[i]->set_bound (RIGHT, col); + Item *col = unsmob_item (get_property ("currentCommandColumn")); + last_tuplets_[i]->set_bound (RIGHT, col); } } @@ -233,18 +269,21 @@ Tuplet_engraver::Tuplet_engraver () } ADD_ACKNOWLEDGER (Tuplet_engraver, note_column); +ADD_ACKNOWLEDGER (Tuplet_engraver, script); +ADD_ACKNOWLEDGER (Tuplet_engraver, finger); +ADD_ACKNOWLEDGER (Tuplet_engraver, string_number); ADD_TRANSLATOR (Tuplet_engraver, - /* doc */ - "Catch tuplet events and generate appropriate bracket.", - - /* create */ - "TupletBracket " - "TupletNumber ", - - /* read */ - "tupletFullLength " - "tupletFullLengthNote ", - - /* write */ - "" - ); + /* doc */ + "Catch tuplet events and generate appropriate bracket.", + + /* create */ + "TupletBracket " + "TupletNumber ", + + /* read */ + "tupletFullLength " + "tupletFullLengthNote ", + + /* write */ + "" + ); diff --git a/lily/tuplet-iterator.cc b/lily/tuplet-iterator.cc index 97737db0f2..872ccae48d 100644 --- a/lily/tuplet-iterator.cc +++ b/lily/tuplet-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys , + Copyright (C) 1998--2012 Han-Wen Nienhuys , Erik Sandberg LilyPond is free software: you can redistribute it and/or modify @@ -63,8 +63,8 @@ Music * Tuplet_iterator::create_event (Direction d) { SCM ev_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"), - ly_symbol2scm ("TupletSpanEvent"), - scm_from_int (d)); + ly_symbol2scm ("TupletSpanEvent"), + scm_from_int (d)); Music *mus = get_music (); @@ -75,8 +75,8 @@ Tuplet_iterator::create_event (Direction d) ev->set_property ("numerator", mus->get_property ("numerator")); ev->set_property ("denominator", mus->get_property ("denominator")); ev->set_property ("tweaks", mus->get_property ("tweaks")); - ev->set_property ("length", spanner_duration_.smobbed_copy ()); - } + ev->set_property ("length", spanner_duration_.smobbed_copy ()); + } synthesized_events_ = scm_cons (ev_scm, synthesized_events_); return ev; @@ -104,23 +104,23 @@ Tuplet_iterator::process (Moment m) && m.main_part_ == next_split_mom_) { descend_to_bottom_context (); - if (tuplet_handler_.get_outlet ()) - create_event (STOP)->send_to_context (tuplet_handler_.get_outlet ()); + if (tuplet_handler_.get_context ()) + create_event (STOP)->send_to_context (tuplet_handler_.get_context ()); if (m.main_part_ < music_get_length ().main_part_) - { - tuplet_handler_.set_context (get_outlet ()); - report_event (create_event (START)); + { + tuplet_handler_.set_context (get_outlet ()); + report_event (create_event (START)); - next_split_mom_ += spanner_duration_; - } + next_split_mom_ += spanner_duration_; + } else - tuplet_handler_.set_context (0); + tuplet_handler_.set_context (0); } Music_wrapper_iterator::process (m); if (child_iter_ && child_iter_->ok ()) descend_to_child (child_iter_->get_outlet ()); - + } void diff --git a/lily/tuplet-number.cc b/lily/tuplet-number.cc index ceff251167..69e97afef0 100644 --- a/lily/tuplet-number.cc +++ b/lily/tuplet-number.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -28,17 +28,20 @@ struct Tuplet_number { DECLARE_SCHEME_CALLBACK (print, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_x_offset, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM)); DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); DECLARE_GROB_INTERFACE (); + + static Real calc_offset (Spanner *me, Axis a); }; - MAKE_SCHEME_CALLBACK (Tuplet_number, print, 1); -SCM +SCM Tuplet_number::print (SCM smob) { Spanner *me = unsmob_spanner (smob); - Spanner *tuplet = unsmob_spanner (me->get_object ("bracket")); + Spanner *tuplet = unsmob_spanner (me->get_object ("bracket")); if (!tuplet || !tuplet->is_live ()) { @@ -52,20 +55,31 @@ Tuplet_number::print (SCM smob) stc->align_to (X_AXIS, CENTER); stc->align_to (Y_AXIS, CENTER); - SCM cpoints = tuplet->get_property ("control-points"); - Drul_array points; - if (scm_is_pair (cpoints)) - { - points[LEFT] = ly_scm2offset (scm_car (cpoints)); - points[RIGHT] = ly_scm2offset (scm_cadr (cpoints)); - } - else - { - programming_error ("wrong type for control-points"); - } - stc->translate ((points[RIGHT] + points[LEFT]) / 2); - - return stc_scm; + return stc->smobbed_copy (); +} + +MAKE_SCHEME_CALLBACK (Tuplet_number, calc_x_offset, 1); +SCM +Tuplet_number::calc_x_offset (SCM smob) +{ + Spanner *me = unsmob_spanner (smob); + Spanner *tuplet = unsmob_spanner (me->get_object ("bracket")); + + Interval x_positions = robust_scm2interval (tuplet->get_property ("X-positions"), Interval (0.0, 0.0)); + + return scm_from_double (x_positions.center ()); +} + +MAKE_SCHEME_CALLBACK (Tuplet_number, calc_y_offset, 1); +SCM +Tuplet_number::calc_y_offset (SCM smob) +{ + + Spanner *me = unsmob_spanner (smob); + Spanner *tuplet = unsmob_spanner (me->get_object ("bracket")); + + Drul_array positions = robust_scm2drul (tuplet->get_property ("positions"), Drul_array (0.0, 0.0)); + return scm_from_double ((positions[LEFT] + positions[RIGHT]) / 2.0); } MAKE_SCHEME_CALLBACK (Tuplet_number, calc_cross_staff, 1) @@ -77,10 +91,11 @@ Tuplet_number::calc_cross_staff (SCM smob) } ADD_INTERFACE (Tuplet_number, - "The number for a bracket.", + "The number for a bracket.", - /* properties */ - "avoid-slur " // UGH. - "bracket " - ); + /* properties */ + "avoid-slur " // UGH. + "bracket " + "direction " + ); diff --git a/lily/tweak-engraver.cc b/lily/tweak-engraver.cc index 1f4f75d870..d6fb785522 100644 --- a/lily/tweak-engraver.cc +++ b/lily/tweak-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2011 Han-Wen Nienhuys + Copyright (C) 2005--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -39,28 +39,41 @@ Tweak_engraver::Tweak_engraver () void Tweak_engraver::acknowledge_grob (Grob_info info) { - if (Stream_event *ev = info.event_cause ()) + Stream_event *ev = info.event_cause (); + bool direct = ev; + SCM grobname = SCM_UNDEFINED; + if (!direct) + ev = info.ultimate_event_cause (); + if (ev) { for (SCM s = ev->get_property ("tweaks"); - scm_is_pair (s); s = scm_cdr (s)) - { - info.grob ()->set_property (scm_caar (s), scm_cdar (s)); - } + scm_is_pair (s); s = scm_cdr (s)) + { + if (scm_is_pair (scm_caar (s))) + { + if (SCM_UNBNDP (grobname)) + grobname = scm_from_locale_symbol (info.grob ()->name ().c_str ()); + if (scm_is_eq (scm_caaar (s), grobname)) + info.grob ()->set_property (scm_cdaar (s), scm_cdar (s)); + } + else if (direct) + info.grob ()->set_property (scm_caar (s), scm_cdar (s)); + } } } ADD_ACKNOWLEDGER (Tweak_engraver, grob); ADD_TRANSLATOR (Tweak_engraver, - /* doc */ - "Read the @code{tweaks} property from the originating event," - " and set properties.", - - /* create */ - "", + /* doc */ + "Read the @code{tweaks} property from the originating event," + " and set properties.", - /* read */ - "", + /* create */ + "", - /* write */ - "" - ); + /* read */ + "", + + /* write */ + "" + ); diff --git a/lily/undead.cc b/lily/undead.cc new file mode 100644 index 0000000000..b29386d2ce --- /dev/null +++ b/lily/undead.cc @@ -0,0 +1,104 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2012 Han-Wen Nienhuys + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + 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 . +*/ + +#include "smobs.hh" +#include "ly-smobs.icc" + +class Undead +{ + DECLARE_SIMPLE_SMOBS (Undead); + SCM object_; +public: + SCM object () { return object_; } + Undead (SCM object = SCM_UNDEFINED) : object_ (object) { }; +}; + +SCM +Undead::mark_smob (SCM s) +{ + bool saved = parsed_objects_should_be_dead; + parsed_objects_should_be_dead = false; + scm_gc_mark (Undead::unsmob (s)->object ()); + parsed_objects_should_be_dead = saved; + return SCM_UNDEFINED; +} + +int +Undead::print_smob (SCM undead, + SCM port, + scm_print_state *) +{ + scm_puts ("#object (), port); + scm_puts (" >", port); + return 1; +} + +IMPLEMENT_SIMPLE_SMOBS (Undead); +IMPLEMENT_DEFAULT_EQUAL_P (Undead); +IMPLEMENT_TYPE_P (Undead, "ly:undead?") + +LY_DEFINE (ly_make_undead, "ly:make-undead", + 1, 0, 0, (SCM object), + "This packages @var{object} in a manner that keeps it from" + " triggering \"Parsed object should be dead\" messages.") +{ + Undead undead (object); + return undead.smobbed_copy (); +} + +LY_DEFINE (ly_get_undead, "ly:get-undead", + 1, 0, 0, (SCM undead), + "Get back object from @var{undead}.") +{ + LY_ASSERT_SMOB (Undead, undead, 1); + return Undead::unsmob (undead)->object (); +} + +// ' +// These are not protected since the means of protecting them would be +// problematic to trigger during the mark pass where the array element +// references get set. However, they get set only when in the mark +// pass when checking for parsed elements that should be dead, and we +// query and clear them immediately afterwards. So there should be no +// way in which the references would have become unprotected in the +// mean time. + +vector parsed_dead::elements; + +SCM +parsed_dead::readout () +{ + SCM result = SCM_EOL; + for (vsize i = 0; i < elements.size (); i++) + { + SCM elt = elements[i]->readout_one (); + if (!SCM_UNBNDP (elt)) + result = scm_cons (elt, result); + } + return result; +} + +LY_DEFINE (ly_parsed_undead_list_x, "ly:parsed-undead-list!", + 0, 0, 0, (), + "Return the list of objects that have been found live" + " that should have been dead, and clear that list.") +{ + return parsed_dead::readout (); +} diff --git a/lily/unfolded-repeat-iterator.cc b/lily/unfolded-repeat-iterator.cc index 7ee50cbfe6..5924296d60 100644 --- a/lily/unfolded-repeat-iterator.cc +++ b/lily/unfolded-repeat-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,18 +43,18 @@ Unfolded_repeat_iterator::get_music_list () const for (int i = 0; i < rep_count; i++) { if (unsmob_music (body)) - *tail = scm_cons (body, SCM_EOL); + *tail = scm_cons (body, SCM_EOL); tail = SCM_CDRLOC (*tail); if (alt_count) - { - *tail = scm_cons (scm_car (alts), SCM_EOL); - tail = SCM_CDRLOC (*tail); - if (i >= rep_count - alt_count) + { + *tail = scm_cons (scm_car (alts), SCM_EOL); + tail = SCM_CDRLOC (*tail); + if (i >= rep_count - alt_count) - alts = scm_cdr (alts); - } + alts = scm_cdr (alts); + } } return l; diff --git a/lily/unpure-pure-container.cc b/lily/unpure-pure-container.cc new file mode 100644 index 0000000000..2caba1216e --- /dev/null +++ b/lily/unpure-pure-container.cc @@ -0,0 +1,110 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2011--2012 Mike Solomon + + + 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 . +*/ +#include "unpure-pure-container.hh" + +#include "grob.hh" + +static scm_t_bits unpure_pure_container_tag; + +bool +is_unpure_pure_container (SCM s) +{ + return (SCM_NIMP (s) && SCM_CELL_TYPE (s) == unpure_pure_container_tag); +} + +SCM +unpure_pure_container_unpure_part (SCM smob) +{ + LY_ASSERT_TYPE (is_unpure_pure_container, smob, 1); + return (SCM) SCM_CELL_WORD_1 (smob); +} + +SCM +unpure_pure_container_pure_part (SCM smob) +{ + LY_ASSERT_TYPE (is_unpure_pure_container, smob, 1); + return (SCM) SCM_CELL_WORD_2 (smob); +} + +LY_DEFINE (ly_unpure_pure_container_p, "ly:unpure-pure-container?", + 1, 0, 0, (SCM clos), + "Is @var{clos} an unpure pure container?") +{ + return scm_from_bool (is_unpure_pure_container (clos)); +} + +LY_DEFINE (ly_make_unpure_pure_container, "ly:make-unpure-pure-container", + 1, 1, 0, (SCM unpure, SCM pure), + "Make an unpure-pure container. @var{unpure} should be an unpure" + " expression, and @var{pure} should be a pure expression. If @var{pure}" + " is ommitted, the value of @var{unpure} will be used twice.") +{ + SCM z; + + if (pure == SCM_UNDEFINED) + pure = unpure; + + SCM_NEWSMOB2 (z, unpure_pure_container_tag, SCM_UNPACK (unpure), SCM_UNPACK (pure)); + return z; +} + +LY_DEFINE (ly_unpure_pure_container_unpure_part, "ly:unpure-pure-container-unpure-part", + 1, 0, 0, (SCM pc), + "Return the unpure part of @var{pc}.") +{ + LY_ASSERT_TYPE (is_unpure_pure_container, pc, 1); + return unpure_pure_container_unpure_part (pc); +} + +LY_DEFINE (ly_unpure_pure_container_pure_part, "ly:unpure-pure-container-pure-part", + 1, 0, 0, (SCM pc), + "Return the pure part of @var{pc}.") +{ + LY_ASSERT_TYPE (is_unpure_pure_container, pc, 1); + return unpure_pure_container_pure_part (pc); +} + +int +print_unpure_pure_container (SCM s, SCM port, scm_print_state *) +{ + scm_puts ("#", port); + return 1; +} + +SCM +pure_mark (SCM pure) +{ + scm_gc_mark (unpure_pure_container_unpure_part (pure)); + scm_gc_mark (unpure_pure_container_pure_part (pure)); + return pure; +} + +void init_unpure_pure_container () +{ + unpure_pure_container_tag = scm_make_smob_type ("unpure-pure-container", 0); + scm_set_smob_mark (unpure_pure_container_tag, pure_mark); + scm_set_smob_print (unpure_pure_container_tag, print_unpure_pure_container); +}; + +ADD_SCM_INIT_FUNC (unpure_pure_container, init_unpure_pure_container); diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc index 5402a8fb01..2e3148cc28 100644 --- a/lily/vaticana-ligature-engraver.cc +++ b/lily/vaticana-ligature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,12 +64,12 @@ class Vaticana_ligature_engraver : public Gregorian_ligature_engraver private: static bool need_extra_horizontal_space (int prev_prefix_set, int prefix_set, - int context_info, int delta_pitch); + int context_info, int delta_pitch); bool is_stacked_head (int prefix_set, - int context_info); + int context_info); Real align_heads (vector primitives, - Real flexa_width, - Real thickness); + Real flexa_width, + Real thickness); void check_for_prefix_loss (Item *primitive); void check_for_ambiguous_dot_pitch (Grob_info primitive); void add_mora_column (Paper_column *column); @@ -81,7 +81,7 @@ public: protected: virtual Spanner *create_ligature_spanner (); virtual void transform_heads (Spanner *ligature, - vector primitives); + vector primitives); DECLARE_TRANSLATOR_LISTENER (pes_or_flexa); DECLARE_TRANSLATOR_LISTENER (ligature); }; @@ -102,8 +102,8 @@ Vaticana_ligature_engraver::listen_ligature (Stream_event *ev) Vaticana_ligature_engraver::Vaticana_ligature_engraver () { - brew_ligature_primitive_proc = - Vaticana_ligature::brew_ligature_primitive_proc; + brew_ligature_primitive_proc + = Vaticana_ligature::brew_ligature_primitive_proc; augmented_primitives_.clear (); } @@ -115,7 +115,7 @@ Vaticana_ligature_engraver::create_ligature_spanner () bool Vaticana_ligature_engraver::is_stacked_head (int prefix_set, - int context_info) + int context_info) { bool is_stacked; @@ -162,7 +162,7 @@ Vaticana_ligature_engraver::is_stacked_head (int prefix_set, */ bool Vaticana_ligature_engraver::need_extra_horizontal_space (int prev_prefix_set, int prefix_set, - int context_info, int delta_pitch) + int context_info, int delta_pitch) { if (prev_prefix_set & VIRGA) /* @@ -200,13 +200,13 @@ Vaticana_ligature_engraver::need_extra_horizontal_space (int prev_prefix_set, in Real Vaticana_ligature_engraver::align_heads (vector primitives, - Real flexa_width, - Real thickness) + Real flexa_width, + Real thickness) { if (!primitives.size ()) { programming_error ("Vaticana_ligature:" - " empty ligature [ignored]"); + " empty ligature [ignored]"); return 0.0; } @@ -238,9 +238,9 @@ Vaticana_ligature_engraver::align_heads (vector primitives, { Item *primitive = dynamic_cast (primitives[i].grob ()); int prefix_set - = scm_to_int (primitive->get_property ("prefix-set")); + = scm_to_int (primitive->get_property ("prefix-set")); int context_info - = scm_to_int (primitive->get_property ("context-info")); + = scm_to_int (primitive->get_property ("context-info")); /* * Get glyph_name, delta_pitch and context_info for this head. @@ -248,28 +248,28 @@ Vaticana_ligature_engraver::align_heads (vector primitives, SCM glyph_name_scm = primitive->get_property ("glyph-name"); if (glyph_name_scm == SCM_EOL) - { - primitive->programming_error ("Vaticana_ligature:" - " undefined glyph-name ->" - " ignoring grob"); - continue; - } + { + primitive->programming_error ("Vaticana_ligature:" + " undefined glyph-name ->" + " ignoring grob"); + continue; + } string glyph_name = ly_scm2string (glyph_name_scm); int delta_pitch = 0; if (prev_primitive) /* urgh, need prev_primitive only here */ - { - SCM delta_pitch_scm = prev_primitive->get_property ("delta-position"); - if (delta_pitch_scm != SCM_EOL) - delta_pitch = scm_to_int (delta_pitch_scm); - else - { - primitive->programming_error ("Vaticana_ligature:" - " delta-position undefined ->" - " ignoring grob"); - continue; - } - } + { + SCM delta_pitch_scm = prev_primitive->get_property ("delta-position"); + if (delta_pitch_scm != SCM_EOL) + delta_pitch = scm_to_int (delta_pitch_scm); + else + { + primitive->programming_error ("Vaticana_ligature:" + " delta-position undefined ->" + " ignoring grob"); + continue; + } + } /* * Now determine width and x-offset of head. @@ -279,45 +279,45 @@ Vaticana_ligature_engraver::align_heads (vector primitives, Real x_offset; if (context_info & STACKED_HEAD) - { - /* - * This head is stacked upon the previous one; hence, it - * does not contribute to the total width of the ligature, - * and its width is assumed to be 0.0. Moreover, it is - * shifted to the left by its width such that the right side - * of this and the other head are horizontally aligned. - */ - head_width = 0.0; - x_offset = join_thickness - - Font_interface::get_default_font (primitive)-> - find_by_name ("noteheads.s" + glyph_name).extent (X_AXIS).length (); - } + { + /* + * This head is stacked upon the previous one; hence, it + * does not contribute to the total width of the ligature, + * and its width is assumed to be 0.0. Moreover, it is + * shifted to the left by its width such that the right side + * of this and the other head are horizontally aligned. + */ + head_width = 0.0; + x_offset = join_thickness + - Font_interface::get_default_font (primitive)-> + find_by_name ("noteheads.s" + glyph_name).extent (X_AXIS).length (); + } else if (glyph_name == "flexa" || glyph_name == "") - { - /* - * This head represents either half of a flexa shape. - * Hence, it is assigned half the width of this shape. - */ - head_width = 0.5 * flexa_width; - x_offset = 0.0; - } + { + /* + * This head represents either half of a flexa shape. + * Hence, it is assigned half the width of this shape. + */ + head_width = 0.5 * flexa_width; + x_offset = 0.0; + } else - { - /* - * This is a regular head, placed right to the previous one. - * Retrieve its width from corresponding font. - */ - head_width - = Font_interface::get_default_font (primitive)-> - find_by_name ("noteheads.s" + glyph_name).extent (X_AXIS).length (); - x_offset = 0.0; - } + { + /* + * This is a regular head, placed right to the previous one. + * Retrieve its width from corresponding font. + */ + head_width + = Font_interface::get_default_font (primitive)-> + find_by_name ("noteheads.s" + glyph_name).extent (X_AXIS).length (); + x_offset = 0.0; + } /* * Save the head's final x-offset. */ primitive->set_property ("x-offset", - scm_from_double (x_offset)); + scm_from_double (x_offset)); /* * If the head is the 2nd head of a pes or flexa (but not a @@ -325,39 +325,39 @@ Vaticana_ligature_engraver::align_heads (vector primitives, * neighbour head (i.e. the previous head) by a vertical beam. */ if ((context_info & PES_UPPER) - || ((context_info & FLEXA_RIGHT) - && ! (context_info & PES_LOWER))) - { - if (!prev_primitive) - { - primitive->programming_error ("Vaticana ligature: add-join:" - " missing previous primitive"); - } - else - { - prev_primitive->set_property ("add-join", - ly_bool2scm (true)); - - /* - * Create a small overlap of adjacent heads so that the join - * can be drawn perfectly between them. - */ - ligature_width -= join_thickness; - } - } + || ((context_info & FLEXA_RIGHT) + && ! (context_info & PES_LOWER))) + { + if (!prev_primitive) + { + primitive->programming_error ("Vaticana ligature: add-join:" + " missing previous primitive"); + } + else + { + prev_primitive->set_property ("add-join", + ly_bool2scm (true)); + + /* + * Create a small overlap of adjacent heads so that the join + * can be drawn perfectly between them. + */ + ligature_width -= join_thickness; + } + } else if (glyph_name == "") - { - /* - * This is the 2nd (virtual) head of flexa shape. Join it - * tightly with 1st head, i.e. do *not* add additional - * space, such that next head will not be off from the flexa - * shape. - */ - } + { + /* + * This is the 2nd (virtual) head of flexa shape. Join it + * tightly with 1st head, i.e. do *not* add additional + * space, such that next head will not be off from the flexa + * shape. + */ + } if (need_extra_horizontal_space (prev_prefix_set, prefix_set, - context_info, delta_pitch)) - ligature_width += extra_space; + context_info, delta_pitch)) + ligature_width += extra_space; /* * Horizontally line-up this head to form a ligature. @@ -398,9 +398,9 @@ Vaticana_ligature_engraver::check_for_prefix_loss (Item *primitive) { string prefs = Gregorian_ligature::prefixes_to_str (primitive); primitive->warning (_f ("ignored prefix(es) `%s' of this head" - " according to restrictions of the selected" - " ligature style", - prefs.c_str ())); + " according to restrictions of the selected" + " ligature style", + prefs.c_str ())); } } @@ -412,15 +412,15 @@ Vaticana_ligature_engraver::add_mora_column (Paper_column *column) if (!column) // empty ligature??? { augmented_primitives_[0].grob ()-> - programming_error ("no paper column to add dot"); + programming_error ("no paper column to add dot"); return; } Item *dotcol = make_item ("DotColumn", SCM_EOL); dotcol->set_parent (column, X_AXIS); for (vsize i = 0; i < augmented_primitives_.size (); i++) { - Item *primitive = - dynamic_cast (augmented_primitives_[i].grob ()); + Item *primitive + = dynamic_cast (augmented_primitives_[i].grob ()); Item *dot = make_item ("Dots", primitive->self_scm ()); dot->set_property ("dot-count", scm_from_int (1)); dot->set_parent (primitive, Y_AXIS); @@ -461,19 +461,19 @@ Vaticana_ligature_engraver::check_for_ambiguous_dot_pitch (Grob_info primitive) Stream_event *cause = augmented_primitives_[i].event_cause (); int pitch = unsmob_pitch (cause->get_property ("pitch"))->steps (); if (pitch == new_pitch) - { - primitive.grob ()-> - warning ("Ambiguous use of dots in ligature: there are" - " multiple dotted notes with the same pitch." - " The ligature should be split."); - return; // supress multiple identical warnings - } + { + primitive.grob ()-> + warning (_ ("Ambiguous use of dots in ligature: there are" + " multiple dotted notes with the same pitch." + " The ligature should be split.")); + return; // supress multiple identical warnings + } } } void Vaticana_ligature_engraver::transform_heads (Spanner *ligature, - vector primitives) + vector primitives) { Real flexa_width = robust_scm2double (ligature->get_property ("flexa-width"), 2); @@ -492,47 +492,47 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, int delta_pitch; SCM delta_pitch_scm = primitive->get_property ("delta-position"); if (delta_pitch_scm != SCM_EOL) - delta_pitch = scm_to_int (delta_pitch_scm); + delta_pitch = scm_to_int (delta_pitch_scm); else - { - primitive->programming_error ("Vaticana_ligature:" - " delta-position undefined ->" - " ignoring grob"); - continue; - } + { + primitive->programming_error ("Vaticana_ligature:" + " delta-position undefined ->" + " ignoring grob"); + continue; + } /* retrieve & complete prefix_set and context_info */ int prefix_set - = scm_to_int (primitive->get_property ("prefix-set")); + = scm_to_int (primitive->get_property ("prefix-set")); int context_info - = scm_to_int (primitive->get_property ("context-info")); + = scm_to_int (primitive->get_property ("context-info")); if (Rhythmic_head::dot_count (primitive) > 0) - // remove dots from primitive and add remember primitive for - // creating a dot column - { - Rhythmic_head::get_dots (primitive)->set_property ("dot-count", - scm_from_int (0)); - // TODO: Maybe completely remove grob "Dots" (dots->suicide - // () ?) rather than setting property "dot-count" to 0. - - check_for_ambiguous_dot_pitch (primitives[i]); - augmented_primitives_.push_back (primitives[i]); - } + // remove dots from primitive and add remember primitive for + // creating a dot column + { + Rhythmic_head::get_dots (primitive)->set_property ("dot-count", + scm_from_int (0)); + // TODO: Maybe completely remove grob "Dots" (dots->suicide + // () ?) rather than setting property "dot-count" to 0. + + check_for_ambiguous_dot_pitch (primitives[i]); + augmented_primitives_.push_back (primitives[i]); + } else if (augmented_primitives_.size () > 0) - { - primitive->warning ("This ligature has a dotted head followed by" - " a non-dotted head. The ligature should be" - " split after the last dotted head before" - " this head."); - } + { + primitive->warning (_ ("This ligature has a dotted head followed by" + " a non-dotted head. The ligature should be" + " split after the last dotted head before" + " this head.")); + } if (is_stacked_head (prefix_set, context_info)) - { - context_info |= STACKED_HEAD; - primitive->set_property ("context-info", - scm_from_int (context_info)); - } + { + context_info |= STACKED_HEAD; + primitive->set_property ("context-info", + scm_from_int (context_info)); + } /* * Now determine which head to typeset (this is context sensitive @@ -542,118 +542,118 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, */ string glyph_name; if (prefix_set & VIRGA) - { - glyph_name = "vaticana.punctum"; - primitive->set_property ("add-stem", ly_bool2scm (true)); - } + { + glyph_name = "vaticana.punctum"; + primitive->set_property ("add-stem", ly_bool2scm (true)); + } else if (prefix_set & QUILISMA) - glyph_name = "vaticana.quilisma"; + glyph_name = "vaticana.quilisma"; else if (prefix_set & ORISCUS) - glyph_name = "solesmes.oriscus"; + glyph_name = "solesmes.oriscus"; else if (prefix_set & STROPHA) - if (prefix_set & AUCTUM) - glyph_name = "solesmes.stropha.aucta"; - else glyph_name = "solesmes.stropha"; + if (prefix_set & AUCTUM) + glyph_name = "solesmes.stropha.aucta"; + else glyph_name = "solesmes.stropha"; else if (prefix_set & INCLINATUM) - if (prefix_set & AUCTUM) - glyph_name = "solesmes.incl.auctum"; - else if (prefix_set & DEMINUTUM) - glyph_name = "solesmes.incl.parvum"; - else - glyph_name = "vaticana.inclinatum"; + if (prefix_set & AUCTUM) + glyph_name = "solesmes.incl.auctum"; + else if (prefix_set & DEMINUTUM) + glyph_name = "solesmes.incl.parvum"; + else + glyph_name = "vaticana.inclinatum"; else if (prefix_set & DEMINUTUM) - { - if (i == 0) - { - // initio debilis - glyph_name = "vaticana.reverse.plica"; - } - else if (prev_delta_pitch > 0) - { - // epiphonus - if (! (prev_context_info & FLEXA_RIGHT)) - { - /* correct head of previous primitive */ - if (prev_delta_pitch > 1) - prev_glyph_name = "vaticana.epiphonus"; - else - prev_glyph_name = "vaticana.vepiphonus"; - } - if (prev_delta_pitch > 1) - glyph_name = "vaticana.plica"; - else - glyph_name = "vaticana.vplica"; - } - else if (prev_delta_pitch < 0) - { - // cephalicus - if (! (prev_context_info & FLEXA_RIGHT)) - /* correct head of previous primitive */ - { - if (i > 1) - { - /* cephalicus head with fixed size cauda */ - prev_glyph_name = "vaticana.inner.cephalicus"; - } - else - { - /* cephalicus head without cauda */ - prev_glyph_name = "vaticana.cephalicus"; - } - - /* - * Flexa has no variable size cauda if its left head is - * stacked on the right head. This is true for - * cephalicus. Hence, remove the cauda. - * - * Urgh: for the current implementation, this rule only - * applies for cephalicus; but it is a fundamental rule. - * Therefore, the following line of code should be - * placed somewhere else. - */ - prev_primitive->set_property ("add-cauda", - ly_bool2scm (false)); - } - if (prev_delta_pitch < - 1) - glyph_name = "vaticana.reverse.plica"; - else - glyph_name = "vaticana.reverse.vplica"; - } - else // (prev_delta_pitch == 0) - { - primitive->programming_error ("Vaticana_ligature:" - " deminutum head must have different" - " pitch -> ignoring grob"); - } - } + { + if (i == 0) + { + // initio debilis + glyph_name = "vaticana.reverse.plica"; + } + else if (prev_delta_pitch > 0) + { + // epiphonus + if (! (prev_context_info & FLEXA_RIGHT)) + { + /* correct head of previous primitive */ + if (prev_delta_pitch > 1) + prev_glyph_name = "vaticana.epiphonus"; + else + prev_glyph_name = "vaticana.vepiphonus"; + } + if (prev_delta_pitch > 1) + glyph_name = "vaticana.plica"; + else + glyph_name = "vaticana.vplica"; + } + else if (prev_delta_pitch < 0) + { + // cephalicus + if (! (prev_context_info & FLEXA_RIGHT)) + /* correct head of previous primitive */ + { + if (i > 1) + { + /* cephalicus head with fixed size cauda */ + prev_glyph_name = "vaticana.inner.cephalicus"; + } + else + { + /* cephalicus head without cauda */ + prev_glyph_name = "vaticana.cephalicus"; + } + + /* + * Flexa has no variable size cauda if its left head is + * stacked on the right head. This is true for + * cephalicus. Hence, remove the cauda. + * + * Urgh: for the current implementation, this rule only + * applies for cephalicus; but it is a fundamental rule. + * Therefore, the following line of code should be + * placed somewhere else. + */ + prev_primitive->set_property ("add-cauda", + ly_bool2scm (false)); + } + if (prev_delta_pitch < - 1) + glyph_name = "vaticana.reverse.plica"; + else + glyph_name = "vaticana.reverse.vplica"; + } + else // (prev_delta_pitch == 0) + { + primitive->programming_error ("Vaticana_ligature:" + " deminutum head must have different" + " pitch -> ignoring grob"); + } + } else if (prefix_set & (CAVUM | LINEA)) - if ((prefix_set & CAVUM) && (prefix_set & LINEA)) - glyph_name = "vaticana.linea.punctum.cavum"; - else if (prefix_set & CAVUM) - glyph_name = "vaticana.punctum.cavum"; - else - glyph_name = "vaticana.linea.punctum"; + if ((prefix_set & CAVUM) && (prefix_set & LINEA)) + glyph_name = "vaticana.linea.punctum.cavum"; + else if (prefix_set & CAVUM) + glyph_name = "vaticana.punctum.cavum"; + else + glyph_name = "vaticana.linea.punctum"; else if (prefix_set & AUCTUM) - if (prefix_set & ASCENDENS) - glyph_name = "solesmes.auct.asc"; - else - glyph_name = "solesmes.auct.desc"; + if (prefix_set & ASCENDENS) + glyph_name = "solesmes.auct.asc"; + else + glyph_name = "solesmes.auct.desc"; else if ((context_info & STACKED_HEAD) - && (context_info & PES_UPPER)) - if (prev_delta_pitch > 1) - glyph_name = "vaticana.upes"; - else - glyph_name = "vaticana.vupes"; + && (context_info & PES_UPPER)) + if (prev_delta_pitch > 1) + glyph_name = "vaticana.upes"; + else + glyph_name = "vaticana.vupes"; else - glyph_name = "vaticana.punctum"; + glyph_name = "vaticana.punctum"; /* * This head needs a cauda, if it starts a flexa, is not the upper * head of a pes, and if it is a punctum. */ if ((context_info & FLEXA_LEFT) && ! (context_info & PES_UPPER)) - if (glyph_name == "vaticana.punctum") - primitive->set_property ("add-cauda", ly_bool2scm (true)); + if (glyph_name == "vaticana.punctum") + primitive->set_property ("add-cauda", ly_bool2scm (true)); /* * Execptional rule for porrectus: @@ -663,21 +663,21 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, * the previous head into a single curved flexa shape. */ if ((context_info & FLEXA_RIGHT) && (context_info & PES_LOWER)) - { - check_for_prefix_loss (prev_primitive); - prev_glyph_name = "flexa"; - prev_primitive->set_property ("flexa-height", - scm_from_int (prev_delta_pitch)); - prev_primitive->set_property ("flexa-width", - scm_from_double (flexa_width)); - bool add_cauda = !(prev_prefix_set && PES_OR_FLEXA); - prev_primitive->set_property ("add-cauda", - ly_bool2scm (add_cauda)); - check_for_prefix_loss (primitive); - glyph_name = ""; - primitive->set_property ("flexa-width", - scm_from_double (flexa_width)); - } + { + check_for_prefix_loss (prev_primitive); + prev_glyph_name = "flexa"; + prev_primitive->set_property ("flexa-height", + scm_from_int (prev_delta_pitch)); + prev_primitive->set_property ("flexa-width", + scm_from_double (flexa_width)); + bool add_cauda = !(prev_prefix_set && PES_OR_FLEXA); + prev_primitive->set_property ("add-cauda", + ly_bool2scm (add_cauda)); + check_for_prefix_loss (primitive); + glyph_name = ""; + primitive->set_property ("flexa-width", + scm_from_double (flexa_width)); + } /* * Exceptional rule for pes: @@ -688,22 +688,22 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, * current head. */ if (prefix_set & PES_OR_FLEXA) - { - if ((context_info & PES_UPPER) && (context_info & STACKED_HEAD)) - { - if (prev_glyph_name == "vaticana.punctum") - { - if (prev_delta_pitch > 1) - prev_glyph_name = "vaticana.lpes"; - else - prev_glyph_name = "vaticana.vlpes"; - } - } - } + { + if ((context_info & PES_UPPER) && (context_info & STACKED_HEAD)) + { + if (prev_glyph_name == "vaticana.punctum") + { + if (prev_delta_pitch > 1) + prev_glyph_name = "vaticana.lpes"; + else + prev_glyph_name = "vaticana.vlpes"; + } + } + } if (prev_primitive) - prev_primitive->set_property ("glyph-name", - ly_string2scm (prev_glyph_name)); + prev_primitive->set_property ("glyph-name", + ly_string2scm (prev_glyph_name)); /* * In the backend, flexa shapes and joins need to know about line @@ -721,7 +721,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, } prev_primitive->set_property ("glyph-name", - ly_string2scm (prev_glyph_name)); + ly_string2scm (prev_glyph_name)); align_heads (primitives, flexa_width, thickness); @@ -734,27 +734,27 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, Item *first_primitive = dynamic_cast (primitives[0].grob ()); Paper_column *paper_column = first_primitive->get_column (); paper_column->warning (_f ("Vaticana_ligature_engraver:" - " setting `spacing-increment = %f': ptr =%ul", - ligature_width, paper_column)); + " setting `spacing-increment = %f': ptr =%ul", + ligature_width, paper_column)); paper_column-> - set_property ("forced-spacing", scm_from_double (ligature_width)); + set_property ("forced-spacing", scm_from_double (ligature_width)); #endif } ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest); ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head); ADD_TRANSLATOR (Vaticana_ligature_engraver, - /* doc */ - "Handle ligatures by glueing special ligature heads" - " together.", + /* doc */ + "Handle ligatures by glueing special ligature heads" + " together.", - /* create */ - "VaticanaLigature " - "DotColumn ", + /* create */ + "VaticanaLigature " + "DotColumn ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/vaticana-ligature.cc b/lily/vaticana-ligature.cc index 7a00cff300..deb0218bd0 100644 --- a/lily/vaticana-ligature.cc +++ b/lily/vaticana-ligature.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2003--2011 Juergen Reuter + Copyright (C) 2003--2012 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,14 +31,13 @@ Stencil vaticana_brew_cauda (Grob *me, - int pos, - int delta_pitch, - Real thickness, - Real blotdiameter) + int pos, + int delta_pitch, + Real thickness, + Real blotdiameter) { bool on_staffline = Staff_symbol_referencer::on_line (me, pos); - int interspaces = Staff_symbol_referencer::line_count (me) - 1; - bool above_staff = pos > interspaces; + bool above_staff = pos > Staff_symbol_referencer::staff_span (me)[UP]; if (delta_pitch > -1) { @@ -49,25 +48,25 @@ vaticana_brew_cauda (Grob *me, if (on_staffline) { if (delta_pitch >= -1) - length = 1.30; + length = 1.30; else if (delta_pitch >= -2) - length = 1.35; + length = 1.35; else - length = 1.85; + length = 1.85; } else { if (delta_pitch >= -1) - if (above_staff) - length = 1.30; - else - length = 1.00; + if (above_staff) + length = 1.30; + else + length = 1.00; else if (delta_pitch >= -2) - length = 1.35; + length = 1.35; else if (delta_pitch >= -3) - length = 1.50; + length = 1.50; else - length = 1.85; + length = 1.85; } Box cauda_box (Interval (0, thickness), Interval (-length, 0)); return Lookup::round_filled_box (cauda_box, blotdiameter); @@ -78,8 +77,8 @@ vaticana_brew_cauda (Grob *me, */ Stencil vaticana_brew_flexa (Grob *me, - bool solid, - Real line_thickness) + bool solid, + Real line_thickness) { Real staff_space = Staff_symbol_referencer::staff_space (me); Stencil stencil; @@ -92,7 +91,7 @@ vaticana_brew_flexa (Grob *me, else { me->warning ("Vaticana_ligature: " - + _ ("flexa-height undefined; assuming 0")); + + _ ("flexa-height undefined; assuming 0")); interval = 0.0; } @@ -107,7 +106,7 @@ vaticana_brew_flexa (Grob *me, */ Real left_height = right_height - + min (0.12 * abs (interval), 0.3) * staff_space; + + min (0.12 * abs (interval), 0.3) * staff_space; /* * Compensate optical illusion regarding vertical position of left @@ -137,7 +136,7 @@ vaticana_brew_flexa (Grob *me, if (solid) { Stencil solid_head - = Lookup::bezier_sandwich (top_curve, bottom_curve, 0.0); + = Lookup::bezier_sandwich (top_curve, bottom_curve, 0.0); stencil.add_stencil (solid_head); } else // outline @@ -145,13 +144,13 @@ vaticana_brew_flexa (Grob *me, Bezier inner_top_curve = top_curve; inner_top_curve.translate (Offset (0.0, -line_thickness)); Stencil top_edge - = Lookup::bezier_sandwich (top_curve, inner_top_curve, 0.0); + = Lookup::bezier_sandwich (top_curve, inner_top_curve, 0.0); stencil.add_stencil (top_edge); Bezier inner_bottom_curve = bottom_curve; inner_bottom_curve.translate (Offset (0.0, +line_thickness)); Stencil bottom_edge - = Lookup::bezier_sandwich (bottom_curve, inner_bottom_curve, 0.0); + = Lookup::bezier_sandwich (bottom_curve, inner_bottom_curve, 0.0); stencil.add_stencil (bottom_edge); /* @@ -163,12 +162,12 @@ vaticana_brew_flexa (Grob *me, * the left end of the bezier curve. */ Box left_edge_box (Interval (0, line_thickness), - Interval (-0.5 * left_height, +0.5 * left_height)); + Interval (-0.5 * left_height, +0.5 * left_height)); Stencil left_edge = Lookup::filled_box (left_edge_box); stencil.add_stencil (left_edge); Box right_edge_box (Interval (-line_thickness, 0), - Interval (-0.5 * right_height, +0.5 * right_height)); + Interval (-0.5 * right_height, +0.5 * right_height)); Stencil right_edge = Lookup::filled_box (right_edge_box); right_edge.translate_axis (width, X_AXIS); right_edge.translate_axis (corrected_interval / 2.0, Y_AXIS); @@ -180,19 +179,19 @@ vaticana_brew_flexa (Grob *me, Stencil vaticana_brew_join (Grob *me, int delta_pitch, - Real join_thickness, Real blotdiameter) + Real join_thickness, Real blotdiameter) { Real staff_space = Staff_symbol_referencer::staff_space (me); if (!delta_pitch) { - me->programming_error (_ ("Vaticana_ligature: " - "zero join (delta_pitch == 0)")); + me->programming_error ("Vaticana_ligature: " + "zero join (delta_pitch == 0)"); return Lookup::blank (Box (Interval (0, 0), Interval (0, 0))); } Interval x_extent = Interval (0, join_thickness); Interval y_extent = (delta_pitch > 0) - ? Interval (0, delta_pitch * 0.5 * staff_space) : // ascending join - Interval (delta_pitch * 0.5 * staff_space, 0); // descending join + ? Interval (0, delta_pitch * 0.5 * staff_space) : // ascending join + Interval (delta_pitch * 0.5 * staff_space, 0); // descending join Box join_box (x_extent, y_extent); return Lookup::round_filled_box (join_box, blotdiameter); } @@ -204,7 +203,7 @@ vaticana_brew_primitive (Grob *me) if (glyph_name_scm == SCM_EOL) { me->programming_error ("Vaticana_ligature: " - "undefined glyph-name -> ignoring grob"); + "undefined glyph-name -> ignoring grob"); return Lookup::blank (Box (Interval (0, 0), Interval (0, 0))); } @@ -246,15 +245,15 @@ vaticana_brew_primitive (Grob *me) Real staff_space = Staff_symbol_referencer::staff_space (me); Real flexa_width = robust_scm2double (me->get_property ("flexa-width"), 2) * staff_space; out - = Lookup::blank (Box (Interval (0, 0.5 * flexa_width), Interval (0, 0))); + = Lookup::blank (Box (Interval (0, 0.5 * flexa_width), Interval (0, 0))); } else if (glyph_name == "flexa") out = vaticana_brew_flexa (me, true, line_thickness); else { out - = Font_interface::get_default_font (me)-> - find_by_name ("noteheads.s" + glyph_name); + = Font_interface::get_default_font (me)-> + find_by_name ("noteheads.s" + glyph_name); } out.translate_axis (x_offset, X_AXIS); Real head_width = out.extent (X_AXIS).length (); @@ -262,16 +261,16 @@ vaticana_brew_primitive (Grob *me) if (add_cauda) { Stencil cauda - = vaticana_brew_cauda (me, pos, delta_pitch, - line_thickness, blotdiameter); + = vaticana_brew_cauda (me, pos, delta_pitch, + line_thickness, blotdiameter); out.add_stencil (cauda); } if (add_stem) { Stencil stem - = vaticana_brew_cauda (me, pos, -1, - line_thickness, blotdiameter); + = vaticana_brew_cauda (me, pos, -1, + line_thickness, blotdiameter); stem.translate_axis (head_width - line_thickness, X_AXIS); out.add_stencil (stem); } @@ -279,7 +278,7 @@ vaticana_brew_primitive (Grob *me) if (add_join) { Stencil join - = vaticana_brew_join (me, delta_pitch, line_thickness, blotdiameter); + = vaticana_brew_join (me, delta_pitch, line_thickness, blotdiameter); join.translate_axis (head_width - line_thickness, X_AXIS); out.add_stencil (join); } @@ -304,16 +303,16 @@ Vaticana_ligature::print (SCM) } ADD_INTERFACE (Vaticana_ligature, - "A vaticana style Gregorian ligature.", - - /* properties */ - "glyph-name " - "flexa-height " - "flexa-width " - "thickness " - "add-cauda " - "add-stem " - "add-join " - "delta-position " - "x-offset " - ); + "A vaticana style Gregorian ligature.", + + /* properties */ + "glyph-name " + "flexa-height " + "flexa-width " + "thickness " + "add-cauda " + "add-stem " + "add-join " + "delta-position " + "x-offset " + ); diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 570340f8d9..97f14fdce0 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,6 @@ #include "context.hh" #include "paper-column.hh" #include "align-interface.hh" -#include "span-bar.hh" #include "axis-group-interface.hh" #include "engraver.hh" #include "spanner.hh" @@ -50,20 +49,20 @@ protected: ADD_ACKNOWLEDGER (Vertical_align_engraver, axis_group); ADD_TRANSLATOR (Vertical_align_engraver, - /* doc */ - "Catch groups (staves, lyrics lines, etc.) and stack them" - " vertically.", + /* doc */ + "Catch groups (staves, lyrics lines, etc.) and stack them" + " vertically.", - /* create */ - "VerticalAlignment ", + /* create */ + "VerticalAlignment ", - /* read */ - "alignAboveContext " - "alignBelowContext ", + /* read */ + "alignAboveContext " + "alignBelowContext ", - /* write */ - "" - ); + /* write */ + "" + ); Vertical_align_engraver::Vertical_align_engraver () { @@ -113,9 +112,9 @@ Vertical_align_engraver::qualifies (Grob_info i) const int sz = i.origin_contexts ((Translator *)this).size (); return sz > 0 && Axis_group_interface::has_interface (i.grob ()) - && !i.grob ()->get_parent (Y_AXIS) - && !to_boolean (i.grob ()->get_property ("no-alignment")) - && Axis_group_interface::has_axis (i.grob (), Y_AXIS); + && !i.grob ()->get_parent (Y_AXIS) + && !to_boolean (i.grob ()->get_property ("no-alignment")) + && Axis_group_interface::has_axis (i.grob (), Y_AXIS); } void @@ -126,7 +125,7 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i) string id = i.context ()->id_string (); scm_hash_set_x (id_to_group_hashtab_, ly_string2scm (id), - i.grob ()->self_scm ()); + i.grob ()->self_scm ()); SCM before_id = i.context ()->get_property ("alignAboveContext"); SCM after_id = i.context ()->get_property ("alignBelowContext"); @@ -138,40 +137,40 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i) Grob *after_grob = unsmob_grob (after); Align_interface::add_element (valign_, i.grob ()); - + if (before_grob || after_grob) - { - Grob_array *ga = unsmob_grob_array (valign_->get_object ("elements")); - vector &arr = ga->array_reference (); - - Grob *added = arr.back (); - arr.pop_back (); - for (vsize i = 0; i < arr.size (); i++) - { - if (arr[i] == before_grob) - { - arr.insert (arr.begin () + i, added); - - /* Only set staff affinity if it already has one. That way we won't - set staff-affinity on things that don't want it (like staves). */ - if (scm_is_number (added->get_property ("staff-affinity"))) - added->set_property ("staff-affinity", scm_from_int (DOWN)); - break; - } - else if (arr[i] == after_grob) - { - arr.insert (arr.begin () + i + 1, added); - if (scm_is_number (added->get_property ("staff-affinity"))) - added->set_property ("staff-affinity", scm_from_int (UP)); - break; - } - } - } + { + Grob_array *ga = unsmob_grob_array (valign_->get_object ("elements")); + vector &arr = ga->array_reference (); + + Grob *added = arr.back (); + arr.pop_back (); + for (vsize i = 0; i < arr.size (); i++) + { + if (arr[i] == before_grob) + { + arr.insert (arr.begin () + i, added); + + /* Only set staff affinity if it already has one. That way we won't + set staff-affinity on things that don't want it (like staves). */ + if (scm_is_number (added->get_property ("staff-affinity"))) + added->set_property ("staff-affinity", scm_from_int (DOWN)); + break; + } + else if (arr[i] == after_grob) + { + arr.insert (arr.begin () + i + 1, added); + if (scm_is_number (added->get_property ("staff-affinity"))) + added->set_property ("staff-affinity", scm_from_int (UP)); + break; + } + } + } } else if (qualifies (i)) { Pointer_group_interface::add_grob (valign_, ly_symbol2scm ("elements"), i.grob ()); if (!unsmob_grob (i.grob ()->get_object ("staff-grouper"))) - i.grob ()->set_object ("staff-grouper", valign_->self_scm ()); + i.grob ()->set_object ("staff-grouper", valign_->self_scm ()); } } diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc index 6877a1a2eb..317b47ee8d 100644 --- a/lily/volta-bracket.cc +++ b/lily/volta-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Jan Nieuwenhuizen + Copyright (C) 1997--2012 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -49,8 +49,8 @@ Volta_bracket_interface::print (SCM smob) Spanner *me = unsmob_spanner (smob); Spanner *orig_span = dynamic_cast (me->original ()); bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0] - == (Spanner *)me); - + == (Spanner *)me); + Output_def *layout = me->layout (); Real half_space = 0.5; @@ -65,67 +65,64 @@ Volta_bracket_interface::print (SCM smob) { Paper_column *pc = bound->get_column (); left = pc->break_align_width (pc, ly_symbol2scm ("break-alignment"))[RIGHT] - // For some reason, break_align_width is relative to - // the x-parent of the column. - - bound->relative_coordinate (pc->get_parent (X_AXIS), X_AXIS); + // For some reason, break_align_width is relative to + // the x-parent of the column. + - bound->relative_coordinate (pc->get_parent (X_AXIS), X_AXIS); } else { /* - the volta spanner is attached to the bar-line, which is moved - to the right. We don't need to compensate for the left edge. + the volta spanner is attached to the bar-line, which is moved + to the right. We don't need to compensate for the left edge. */ } modify_edge_height (me); if (!me->is_live ()) return SCM_EOL; - + Drul_array edge_height = robust_scm2interval (me->get_property ("edge-height"), - Interval (1.0, 1.0)); + Interval (1.0, 1.0)); Drul_array flare = robust_scm2interval (me->get_property ("bracket-flare"), - Interval (0, 0)); + Interval (0, 0)); Drul_array shorten = robust_scm2interval (me->get_property ("shorten-pair"), - Interval (0, 0)); + Interval (0, 0)); - - scale_drul (&edge_height, - Real (get_grob_direction (me))); Interval empty; Offset start; start[X_AXIS] = me->spanner_length () - left - half_space; - + /* - ugh, Tuplet_bracket should use Horizontal_bracket, not the other way around. + ugh, Tuplet_bracket should use Horizontal_bracket, not the other way around. */ Stencil total - = Tuplet_bracket::make_bracket (me, Y_AXIS, start, - edge_height, empty, flare, shorten); + = Tuplet_bracket::make_bracket (me, Y_AXIS, start, + edge_height, empty, flare, shorten); if (!orig_span || broken_first_bracket) { SCM text = me->get_property ("text"); SCM properties = me->get_property_alist_chain (SCM_EOL); SCM snum = Text_interface::interpret_markup (layout->self_scm (), - properties, text); + properties, text); Stencil num = *unsmob_stencil (snum); num.align_to (Y_AXIS, UP); num.translate_axis (-0.5, Y_AXIS); total.add_at_edge (X_AXIS, LEFT, num, - num.extent (X_AXIS).length () - - 1.0); + - 1.0); } - + total.translate_axis (left, X_AXIS); return total.smobbed_copy (); } - void Volta_bracket_interface::modify_edge_height (Spanner *me) { Spanner *orig_span = dynamic_cast (me->original ()); - + bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0] == (Spanner *)me); bool broken_last_bracket = orig_span && (orig_span->broken_intos_.back () == (Spanner *)me); bool no_vertical_start = orig_span && !broken_first_bracket; @@ -142,23 +139,23 @@ Volta_bracket_interface::modify_edge_height (Spanner *me) str = "|"; no_vertical_end - |= (str != ":|" - && str != "|:" - && str != "|." - && str != ":|:" - && str != ":|.|:" - && str != ":|.:" - && str != ".|"); + |= (str != ":|" + && str != "|:" + && str != "|." + && str != ":|:" + && str != ":|.|:" + && str != ":|.:" + && str != ".|"); if (no_vertical_end || no_vertical_start) { Drul_array edge_height = robust_scm2interval (me->get_property ("edge-height"), - Interval (1.0, 1.0)); + Interval (1.0, 1.0)); if (no_vertical_start) - edge_height[LEFT] = 0.0; + edge_height[LEFT] = 0.0; if (no_vertical_end) - edge_height[RIGHT] = 0.0; + edge_height[RIGHT] = 0.0; me->set_property ("edge-height", ly_interval2scm (edge_height)); } @@ -176,11 +173,11 @@ Volta_bracket_interface::add_bar (Grob *me, Item *b) } ADD_INTERFACE (Volta_bracket_interface, - "Volta bracket with number.", + "Volta bracket with number.", - /* properties */ - "bars " - "thickness " - "height " - ); + /* properties */ + "bars " + "thickness " + "height " + ); diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc index eec8fa46ff..882359621a 100644 --- a/lily/volta-engraver.cc +++ b/lily/volta-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Han-Wen Nienhuys + Copyright (C) 2000--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,6 @@ #include "engraver.hh" #include "axis-group-interface.hh" -#include "bar-line.hh" #include "context.hh" #include "grob-array.hh" #include "international.hh" @@ -83,14 +82,14 @@ Volta_engraver::process_music () SCM c = scm_car (cs); if (scm_is_pair (c) - && scm_car (c) == ly_symbol2scm ("volta") - && scm_is_pair (scm_cdr (c))) - { - if (scm_cadr (c) == SCM_BOOL_F) - end = true; - else - start_string_ = scm_cadr (c); - } + && scm_car (c) == ly_symbol2scm ("volta") + && scm_is_pair (scm_cdr (c))) + { + if (scm_cadr (c) == SCM_BOOL_F) + end = true; + else + start_string_ = scm_cadr (c); + } cs = scm_cdr (cs); } @@ -101,7 +100,7 @@ Volta_engraver::process_music () Moment now = now_mom (); bool early_stop = unsmob_moment (l) - && *unsmob_moment (l) <= now - started_mom_; + && *unsmob_moment (l) <= now - started_mom_; end = end || early_stop; } @@ -121,11 +120,11 @@ Volta_engraver::process_music () warning (_ ("already have a volta spanner, ending that one prematurely")); if (end_volta_bracket_) - { - warning (_ ("also already have an ended spanner")); - warning (_ ("giving up")); - return; - } + { + warning (_ ("also already have an ended spanner")); + warning (_ ("giving up")); + return; + } end_volta_bracket_ = volta_bracket_; volta_bracket_ = 0; @@ -141,7 +140,7 @@ Volta_engraver::process_music () volta_bracket_->set_property ("text", start_string_); if (!volta_spanner_) - volta_spanner_ = make_spanner ("VoltaBracketSpanner", SCM_EOL); + volta_spanner_ = make_spanner ("VoltaBracketSpanner", SCM_EOL); Axis_group_interface::add_element (volta_spanner_, volta_bracket_); } @@ -174,7 +173,7 @@ Volta_engraver::stop_translation_timestep () if (end_volta_bracket_ && !volta_bracket_) { for (SCM s = get_property ("stavesFound"); scm_is_pair (s); s = scm_cdr (s)) - Side_position_interface::add_support (volta_spanner_, unsmob_grob (scm_car (s))); + Side_position_interface::add_support (volta_spanner_, unsmob_grob (scm_car (s))); volta_spanner_ = 0; } @@ -192,18 +191,18 @@ Volta_engraver::stop_translation_timestep () */ ADD_ACKNOWLEDGER (Volta_engraver, bar_line); ADD_TRANSLATOR (Volta_engraver, - /* doc */ - "Make volta brackets.", + /* doc */ + "Make volta brackets.", - /* create */ - "VoltaBracket " - "VoltaBracketSpanner ", + /* create */ + "VoltaBracket " + "VoltaBracketSpanner ", - /* read */ - "repeatCommands " - "voltaSpannerDuration " - "stavesFound ", + /* read */ + "repeatCommands " + "voltaSpannerDuration " + "stavesFound ", - /* write */ - "" - ); + /* write */ + "" + ); diff --git a/lily/volta-repeat-iterator.cc b/lily/volta-repeat-iterator.cc index b7ac2059f1..2e386e6fd1 100644 --- a/lily/volta-repeat-iterator.cc +++ b/lily/volta-repeat-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Han-Wen Nienhuys + Copyright (C) 2002--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ SCM Volta_repeat_iterator::get_music_list ()const { return scm_cons (get_music ()->get_property ("element"), - get_music ()->get_property ("elements")); + Sequential_iterator::get_music_list ()); } void @@ -60,7 +60,7 @@ Volta_repeat_iterator::construct_children () SCM alts = get_music ()->get_property ("elements"); - alt_count_ = scm_ilength (alts); + alt_count_ = int (scm_ilength (alts)); rep_count_ = scm_to_int (get_music ()->get_property ("repeat-count")); done_count_ = 0; } @@ -76,7 +76,7 @@ Volta_repeat_iterator::add_repeat_command (SCM what) Context *where = get_outlet ()->where_defined (reps, ¤t_reps); if (where - && (current_reps == SCM_EOL || scm_is_pair (current_reps))) + && (current_reps == SCM_EOL || scm_is_pair (current_reps))) { current_reps = scm_cons (what, current_reps); where->set_property (reps, current_reps); @@ -93,25 +93,25 @@ Volta_repeat_iterator::next_element (bool side_effect) if (side_effect) { if (alt_count_) - { - string repstr = to_string (rep_count_ - alt_count_ + done_count_) + "."; - if (done_count_ > 1) - { - add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), SCM_BOOL_F, SCM_UNDEFINED)); - - if (done_count_ - 1 < alt_count_) - add_repeat_command (ly_symbol2scm ("end-repeat")); - } - - if (done_count_ == 1 && alt_count_ < rep_count_) - repstr = "1.--" + to_string (rep_count_ - alt_count_ + done_count_) + "."; - - if (done_count_ <= alt_count_) - add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), - ly_string2scm (repstr), SCM_UNDEFINED)); - } + { + string repstr = to_string (rep_count_ - alt_count_ + done_count_) + "."; + if (done_count_ > 1) + { + add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), SCM_BOOL_F, SCM_UNDEFINED)); + + if (done_count_ - 1 < alt_count_) + add_repeat_command (ly_symbol2scm ("end-repeat")); + } + + if (done_count_ == 1 && alt_count_ < rep_count_) + repstr = "1.--" + to_string (rep_count_ - alt_count_ + done_count_) + "."; + + if (done_count_ <= alt_count_) + add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), + ly_string2scm (repstr), SCM_UNDEFINED)); + } else - add_repeat_command (ly_symbol2scm ("end-repeat")); + add_repeat_command (ly_symbol2scm ("end-repeat")); } } diff --git a/lily/warn-scheme.cc b/lily/warn-scheme.cc new file mode 100644 index 0000000000..c2449d164e --- /dev/null +++ b/lily/warn-scheme.cc @@ -0,0 +1,199 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 1998--2012 Jan Nieuwenhuizen + Han-Wen Nienhuys + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + 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 . +*/ + +#include "config.hh" + +#include "lily-guile.hh" +#include "program-option.hh" +#include "version.hh" +#include "international.hh" +#include "warn.hh" + +/* + Error / warning / progress / debug message output functions +*/ + +LY_DEFINE (ly_error, "ly:error", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to issue the error @var{str}." + " The error is formatted with @code{format} and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + error (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_programming_error, "ly:programming-error", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to issue the internal warning" + " @var{str}. The message is formatted with @code{format}" + " and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + programming_error (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_warning, "ly:warning", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to issue the warning @var{str}." + " The message is formatted with @code{format} and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + warning (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_progress, "ly:progress", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to print progress @var{str}." + " The message is formatted with @code{format} and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + // Calls to ly:progress should in general not start a new line + progress_indication (ly_scm2string (str), false); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_basic_progress, "ly:basic-progress", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to issue a basic progress message @var{str}." + " The message is formatted with @code{format} and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + basic_progress (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_message, "ly:message", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to issue the message @var{str}." + " The message is formatted with @code{format} and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + message (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_debug, "ly:debug", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to issue a debug message @var{str}." + " The message is formatted with @code{format} and @var{rest}.") +{ + // TODO: Add the newline flag! + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + debug_output (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_warning_located, "ly:warning-located", + 2, 0, 1, (SCM location, SCM str, SCM rest), + "A Scheme callable function to issue the warning @var{str} at" + " the specified location in an input file." + " The message is formatted with @code{format} and @var{rest}.") +{ + LY_ASSERT_TYPE (scm_is_string, location, 1); + LY_ASSERT_TYPE (scm_is_string, str, 2); + str = scm_simple_format (SCM_BOOL_F, str, rest); + warning (ly_scm2string (str), ly_scm2string (location)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_expect_warning, "ly:expect-warning", + 1, 0, 1, (SCM str, SCM rest), + "A Scheme callable function to register a warning to be expected" + " and subsequently suppressed. If the warning is not encountered," + " a warning about the missing warning will be shown. The message" + " should be translated with @code{(_ ...)} and changing parameters" + " given after the format string.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + str = scm_simple_format (SCM_BOOL_F, str, rest); + expect_warning (ly_scm2string (str)); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_check_expected_warnings, "ly:check-expected-warnings", + 0, 0, 0, (), + "Check whether all expected warnings have really been triggered.") +{ + check_expected_warnings (); + return SCM_UNSPECIFIED; +} + +LY_DEFINE (ly_translate_cpp_warning_scheme, "ly:translate-cpp-warning-scheme", + 1, 0, 0, (SCM str), + "Translates a string in C++ printf format and modifies it to use" + " it for scheme formatting.") +{ + LY_ASSERT_TYPE (scm_is_string, str, 1); + string s = _ (ly_scm2string (str).c_str ()); + + /* Now replace all printf placeholders by scheme placeholders (~a). + * Guile's format syntax is pretty similar to C's printf, only with + * a tilde as the placeholder instead of a percent sign. + * There is no easy way to replace all ~ -> ~~, %% -> %, % -> ~, + * so simply walk through each character. + */ +// size_t pos = 0; + const char *pos = s.c_str (); + string result = ""; + while (*pos != '\0') + { + // In some cases (%%, %s) we need to do a lookahead. As the C string is + // always \0-terminated the next char is never beyond the end of the + // memory! + switch (*pos) + { + case '~': + result += "~~"; + break; + case '%': + if (*(pos + 1) == '%') + { + result += "%"; + // Skip the second '%' + pos++; + } + else if (*(pos + 1) == 's' || *(pos + 1) == 'd') + { + // %s in C++ corresponds to ~a; ~s would add quotes! + // ~d is only supported by ice-9, use ~a instead + result += "~a"; + // Skip the following 's' + pos++; + } + else + result += "~"; + break; + default: + result += *pos; + } + pos++; + } + return ly_string2scm (result); +} diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly index 3c166bd9d6..a72c346f6b 100644 --- a/ly/Welcome-to-LilyPond-MacOS.ly +++ b/ly/Welcome-to-LilyPond-MacOS.ly @@ -23,7 +23,7 @@ That's it. For more information, visit http://lilypond.org . %} -\version "2.14.0" % necessary for upgrading to future LilyPond versions. +\version "2.16.0" % necessary for upgrading to future LilyPond versions. \header{ title = "A scale in LilyPond" diff --git a/ly/Welcome_to_LilyPond.ly b/ly/Welcome_to_LilyPond.ly index f90f3bce9f..907ebf7830 100644 --- a/ly/Welcome_to_LilyPond.ly +++ b/ly/Welcome_to_LilyPond.ly @@ -25,19 +25,19 @@ Next, you'll want to get started on your own scores. To do this you'll need to learn about using LilyPond. LilyPond's interface is text-based, rather than graphical. Please visit the - help page at http://lilypond.org/web/help. This will point you to a quick - tutorial and extensive documentation. + help page at http://lilypond.org/introduction.html. This will + point you to a quick tutorial and extensive documentation. Good luck with LilyPond! Happy engraving. %} -\version "2.14.0" % necessary for upgrading to future LilyPond versions. +\version "2.16.0" % necessary for upgrading to future LilyPond versions. \header{ title = "A scale in LilyPond" subtitle = "For more information on using LilyPond, please see -http://lilypond.org/web/help/" +http://lilypond.org/introduction.html" } \relative c' { diff --git a/ly/arabic.ly b/ly/arabic.ly index 3ff4029fd6..0f63188562 100644 --- a/ly/arabic.ly +++ b/ly/arabic.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" \language "italiano" %%%%%%% @@ -25,7 +25,7 @@ dwn = { (ly:stencil-combine-at-edge (ly:accidental-interface::print grob) Y UP (grob-interpret-markup grob (markup #:line - (#:fontsize -1 (#:musicglyph "flags.ugrace")))) -1.3 0)) + (#:fontsize -1 (#:musicglyph "flags.ugrace")))) -1.3)) } % diff --git a/ly/articulate.ly b/ly/articulate.ly index b7174a72c7..4f748f35b9 100644 --- a/ly/articulate.ly +++ b/ly/articulate.ly @@ -78,6 +78,8 @@ % * accidentals for trills and turns % CHANGELOG +% * David Kastrup: basic 2.15.28 compatibility by using event-chord-wrap! +% This should really be done by rewriting the code more thoroughly. % * From Iain Nicol: appoggiatura timings were out; add staccatissimo; fix % trillSpanner endpoints. % * Also handle Breathing events (by throwing them away). This isn't ideal; @@ -87,7 +89,7 @@ % * Add Mordents (reported by Patrick Karl) % -\version "2.14.0" +\version "2.16.0" #(use-modules (ice-9 debug)) #(use-modules (scm display-lily)) @@ -339,8 +341,18 @@ ; (ac:accel trillMusic factor)) ))) - - +% +% Generate a tempoChangeEvent and its associated property setting. +% +#(define (ac:tempoChange tempo) + (make-sequential-music + (list (make-music 'TempoChangeEvent + 'metronome-count + tempo + 'tempo-unit + (ly:make-duration 0 0 1 1)) + (context-spec-music + (make-property-set 'tempoWholesPerMinute tempo) 'Score)))) % If there's an articulation, use it. % If in a slur, use (1 . 1) instead. @@ -392,7 +404,7 @@ ((string= articname "mordent") (loop (cons 1 1) newelements tail (cons 'mordent actions))) ((string= articname "prall") - (loop (cons 1 1) newelements tail (cons 'trill actions))) + (loop (cons 1 1) newelements tail (cons 'prall actions))) ((string= articname "trill") (loop (cons 1 1) newelements tail (cons 'trill actions))) ((string= articname "turn") @@ -411,6 +423,14 @@ (string= t "rit.") (string= t "rall.")) (loop factor (cons e newelements) tail (cons 'rall actions))) + ((or + (string= t "accelerando") + (string= t "accel") + (string= t "accel.")) + (loop factor (cons e newelements) tail (cons 'accel actions))) + ((or + (string= t "poco accel.")) + (loop factor (cons e newelements) tail (cons 'pocoAccel actions))) ((or (string= t "poco rall.") (string= t "poco rit.")) @@ -475,25 +495,37 @@ (make-music 'RestEvent 'duration (ly:make-duration len dots newnum newdenom)))))) music))) + ((accel) + (set! ac:lastTempo ac:currentTempo) + (set! ac:currentTempo (ly:moment-div ac:currentTempo ac:rallFactor)) + (let ((pset (ac:tempoChange ac:currentTempo))) + (if (null? (cdr actions)) + (make-sequential-music (list pset music)) + (make-sequential-music + (list pset (loop (cdr actions))))))) + + ((pocoAccel) + (set! ac:lastTempo ac:currentTempo) + (set! ac:currentTempo (ly:moment-div ac:currentTempo ac:pocoRallFactor)) + (let ((pset (ac:tempoChange ac:currentTempo))) + (if (null? (cdr actions)) + (make-sequential-music (list pset music)) + (make-sequential-music + (list pset (loop (cdr actions))))))) + ((rall) + (set! ac:lastTempo ac:currentTempo) (set! ac:currentTempo (ly:moment-mul ac:currentTempo ac:rallFactor)) - (let ((pset (make-music 'PropertySet - 'value - ac:currentTempo - 'symbol - 'tempoWholesPerMinute))) + (let ((pset (ac:tempoChange ac:currentTempo))) (if (null? (cdr actions)) (make-sequential-music (list pset music)) (make-sequential-music (list pset (loop (cdr actions))))))) ((pocoRall) + (set! ac:lastTempo ac:currentTempo) (set! ac:currentTempo (ly:moment-mul ac:currentTempo ac:pocoRallFactor)) - (let ((pset (make-music 'PropertySet - 'value - ac:currentTempo - 'symbol - 'tempoWholesPerMinute))) + (let ((pset (ac:tempoChange ac:currentTempo))) (if (null? (cdr actions)) (make-sequential-music (list pset music)) (make-sequential-music @@ -501,11 +533,8 @@ ((aTempo) (set! ac:currentTempo ac:lastTempo) - (let ((pset (make-music 'PropertySet - 'value - ac:currentTempo - 'symbol - 'tempoWholesPerMinute))) + + (let ((pset (ac:tempoChange ac:currentTempo))) (if (null? (cdr actions)) (make-sequential-music (list pset music)) (make-sequential-music @@ -514,27 +543,77 @@ ((trill) (ac:trill music)) + ((prall) + ; A pralltriller symbol can either mean an inverted mordent + ; or a half-shake -- a short, two twiddle trill. + ; We implement as a half-shake. + (let* + ((totallength (ly:music-length music)) + (newlen (ly:moment-sub totallength (ly:make-moment 3 32))) + (newdur (ly:make-duration + 0 0 + (ly:moment-main-numerator newlen) + (ly:moment-main-denominator newlen))) + (gracedur (ly:make-duration 5 0 1 1)) + (gracenote (ly:music-deep-copy music)) + (abovenote (ly:music-deep-copy music)) + (mainnote (ly:music-deep-copy music)) + (prall (make-sequential-music (list gracenote abovenote))) + ) + (music-map (lambda (n) + (if (eq? 'NoteEvent (ly:music-property n 'name)) + (set! (ly:music-property n 'duration) gracedur)) + n) + abovenote) + (music-map (lambda (n) + (if (eq? 'NoteEvent (ly:music-property n 'name)) + (set! (ly:music-property n 'duration) gracedur)) + n) + gracenote) + (music-map (lambda (n) + (if (eq? 'NoteEvent (ly:music-property n 'name)) + (set! (ly:music-property n 'duration) newdur)) + n) + mainnote) + + (map (lambda (y) (ac:up y)) + (filter + (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name))) + (ly:music-property abovenote 'elements))) + (make-sequential-music (list abovenote gracenote abovenote mainnote)))) + ((mordent) (let* - ((dur (ly:music-property + ((totaldur (ly:music-property (car (ly:music-property music 'elements)) 'duration)) - (factor (ly:duration-factor dur)) + (dur (ly:duration-length totaldur)) + (newlen (ly:moment-sub dur (ly:make-moment 2 32))) + (newdur (ly:make-duration + 0 0 + (ly:moment-main-numerator newlen) + (ly:moment-main-denominator newlen))) (gracenote (ly:music-deep-copy music)) - (mainnote (ly:music-deep-copy music)) (belownote (ly:music-deep-copy music)) + (mainnote (ly:music-deep-copy music)) (mordent (make-sequential-music (list gracenote belownote))) -) + ) (begin (music-map (lambda (n) (if (eq? 'NoteEvent (ly:music-property n 'name)) - (set! (ly:music-property n 'duration)(ly:make-duration 3 0 1 1))) + (set! (ly:music-property n 'duration) + (ly:make-duration 5 0 1 1))) n) mordent) + (music-map (lambda (n) + (if (eq? 'NoteEvent (ly:music-property n 'name)) + (set! (ly:music-property n 'duration) newdur)) + n) + mainnote) (map (lambda (y) (ac:down y)) (filter (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name))) (ly:music-property belownote 'elements))) - (make-sequential-music (list (make-grace-music mordent) mainnote))))) + (make-sequential-music (list mordent mainnote))))) ((turn) (let* ((dur (ly:music-property @@ -569,18 +648,19 @@ (ac:adjust-props (ly:music-property music 'symbol) music) music) - (else music)) + (else music)) )) -% At last ... here's the music function that aplies all the above to a +% At last ... here's the music function that applies all the above to a % score. articulate = #(define-music-function (parser location music) (ly:music?) "Adjust times of note to add tenuto, staccato and normal articulations. " + (set! music (event-chord-wrap! music parser)) (music-map ac:articulate-chord music) ) @@ -590,8 +670,10 @@ articulate = #(define-music-function (parser location music) afterGrace = #(define-music-function (parser location main grace) - (ly:music? ly:music?)p + (ly:music? ly:music?) + (set! main (event-chord-wrap! main parser)) + (set! grace (event-chord-wrap! grace parser)) (let* ((main-length (ly:music-length main)) (grace-orig-length (ly:music-length grace)) @@ -616,6 +698,8 @@ afterGrace = appoggiatura = #(define-music-function (parser location grace main) (ly:music? ly:music?) + (set! grace (event-chord-wrap! grace parser)) + (set! main (event-chord-wrap! main parser)) (let* ((maindur (ly:music-length main)) (grace-orig-len (ly:music-length grace)) (main-orig-len (ly:music-length main)) diff --git a/ly/bagpipe.ly b/ly/bagpipe.ly index 98eafd7e36..85b216ab40 100644 --- a/ly/bagpipe.ly +++ b/ly/bagpipe.ly @@ -9,7 +9,7 @@ $Id: bagpipe.ly,v 1.12 2006/03/16 14:39:46 hanwen Exp $ %} -\version "2.14.0" +\version "2.16.0" % Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde. % Flat notes used mainly in some modern music. @@ -41,14 +41,14 @@ hideKeySignature = { \override Staff.KeySignature #'stencil = ##f \set Staff.extraNatural = ##f \key d \major - #(set-accidental-style 'forget) + \accidentalStyle "forget" } showKeySignature = { % Show the key signature e.g. for BMW compatibility. \override Staff.KeySignature #'stencil = #ly:key-signature-interface::print \set Staff.extraNatural = ##f \key d \major - #(set-accidental-style 'forget) + \accidentalStyle "forget" } % Layout tweaks. @@ -89,219 +89,219 @@ marchTime = { % Add appropriate tweaks needed for piping grace notes to look great. stemspace = #(define-music-function (parser location extent) (pair?) #{ - \once \override Staff.Stem #'X-extent = #$extent + \once \override Staff.Stem #'X-extent = #extent #}) pgrace = #(define-music-function (parser location notes) (ly:music?) #{ \override Score.GraceSpacing #'spacing-increment = #0 \override Score.Stem #'beamlet-max-length-proportion = #'(0.5 . 0.5) - \grace $notes + \small \grace $notes \normalsize \revert Score.Stem #'beamlet-default-length #}) % Single grace notes -grG = { \pgrace { \small G32 } } -gra = { \pgrace { \small a32 } } -grb = { \pgrace { \small b32 } } -grc = { \pgrace { \small c32 } } -grd = { \pgrace { \small d32 } } -gre = { \pgrace { \small e32 } } -grf = { \pgrace { \small f32 } } -grg = { \pgrace { \small g32 } } -grA = { \pgrace { \small A32 } } +grG = { \pgrace { G32 } } +gra = { \pgrace { a32 } } +grb = { \pgrace { b32 } } +grc = { \pgrace { c32 } } +grd = { \pgrace { d32 } } +gre = { \pgrace { e32 } } +grf = { \pgrace { f32 } } +grg = { \pgrace { g32 } } +grA = { \pgrace { A32 } } % Doublings -dblG = { \pgrace { \small g32[ G d] } } -dbla = { \pgrace { \small g32[ a d] } } -dblb = { \pgrace { \small g32[ b d] } } -dblc = { \pgrace { \small g32[ c d] } } -dbld = { \pgrace { \small g32[ d e] } } -dble = { \pgrace { \small g32[ e f] } } -dblf = { \pgrace { \small g32[ f g] } } +dblG = { \pgrace { g32[ G d] } } +dbla = { \pgrace { g32[ a d] } } +dblb = { \pgrace { g32[ b d] } } +dblc = { \pgrace { g32[ c d] } } +dbld = { \pgrace { g32[ d e] } } +dble = { \pgrace { g32[ e f] } } +dblf = { \pgrace { g32[ f g] } } % These are the same as the half doublings. -dblg = { \pgrace { \small g32[ f] } } -dblA = { \pgrace { \small A32[ g] } } +dblg = { \pgrace { g32[ f] } } +dblA = { \pgrace { A32[ g] } } % Half doublings -hdblG = { \pgrace { \small G32[ d] } } -hdbla = { \pgrace { \small a32[ d] } } -hdblb = { \pgrace { \small b32[ d] } } -hdblc = { \pgrace { \small c32[ d] } } -hdbld = { \pgrace { \small d32[ e] } } -hdble = { \pgrace { \small e32[ f] } } -hdblf = { \pgrace { \small f32[ g] } } -hdblg = { \pgrace { \small g32[ f] } } -hdblA = { \pgrace { \small A32[ g] } } +hdblG = { \pgrace { G32[ d] } } +hdbla = { \pgrace { a32[ d] } } +hdblb = { \pgrace { b32[ d] } } +hdblc = { \pgrace { c32[ d] } } +hdbld = { \pgrace { d32[ e] } } +hdble = { \pgrace { e32[ f] } } +hdblf = { \pgrace { f32[ g] } } +hdblg = { \pgrace { g32[ f] } } +hdblA = { \pgrace { A32[ g] } } % Thumb doublings -tdblG = { \pgrace { \small A32[ G d] } } -tdbla = { \pgrace { \small A32[ a d] } } -tdblb = { \pgrace { \small A32[ b d] } } -tdblc = { \pgrace { \small A32[ c d] } } -tdbld = { \pgrace { \small A32[ d e] } } -tdble = { \pgrace { \small A32[ e f] } } -tdblf = { \pgrace { \small A32[ f g] } } -tdblg = { \pgrace { \small A32[ g f] } } +tdblG = { \pgrace { A32[ G d] } } +tdbla = { \pgrace { A32[ a d] } } +tdblb = { \pgrace { A32[ b d] } } +tdblc = { \pgrace { A32[ c d] } } +tdbld = { \pgrace { A32[ d e] } } +tdble = { \pgrace { A32[ e f] } } +tdblf = { \pgrace { A32[ f g] } } +tdblg = { \pgrace { A32[ g f] } } % Shakes % A few of these can't really be played and are here only for consistency. -shakea = { \pgrace { \small g32[ a e a G] } } -shakeb = { \pgrace { \small g32[ b e b G] } } -shakec = { \pgrace { \small g32[ c e c G] } } -shaked = { \pgrace { \small g32[ d e d G] } } -shakee = { \pgrace { \small g32[ e f e a] } } -shakef = { \pgrace { \small g32[ f g f a] } } -shakeg = { \pgrace { \small A32[ f g a] } } -shakeA = { \pgrace { \small A32[ g A a] } } +shakea = { \pgrace { g32[ a e a G] } } +shakeb = { \pgrace { g32[ b e b G] } } +shakec = { \pgrace { g32[ c e c G] } } +shaked = { \pgrace { g32[ d e d G] } } +shakee = { \pgrace { g32[ e f e a] } } +shakef = { \pgrace { g32[ f g f a] } } +shakeg = { \pgrace { A32[ f g a] } } +shakeA = { \pgrace { A32[ g A a] } } % Half shakes -hshakea = { \pgrace { \small a32[ d a G] } } -hshakeb = { \pgrace { \small b32[ d b G] } } -hshakec = { \pgrace { \small c32[ d c G] } } -hshaked = { \pgrace { \small d32[ e d G] } } -hshakee = { \pgrace { \small e32[ f e a] } } -hshakef = { \pgrace { \small f32[ g f a] } } -hshakeg = { \pgrace { \small g32[ f g a] } } -hshakeA = { \pgrace { \small A32[ g A a] } } +hshakea = { \pgrace { a32[ d a G] } } +hshakeb = { \pgrace { b32[ d b G] } } +hshakec = { \pgrace { c32[ d c G] } } +hshaked = { \pgrace { d32[ e d G] } } +hshakee = { \pgrace { e32[ f e a] } } +hshakef = { \pgrace { f32[ g f a] } } +hshakeg = { \pgrace { g32[ f g a] } } +hshakeA = { \pgrace { A32[ g A a] } } % Thumb shakes -tshakea = { \pgrace { \small A32[ a d a G] } } -tshakeb = { \pgrace { \small A32[ b d b G] } } -tshakec = { \pgrace { \small A32[ c d c G] } } -tshaked = { \pgrace { \small A32[ d e d G] } } -tshakee = { \pgrace { \small A32[ e f e a] } } -tshakef = { \pgrace { \small A32[ f g f a] } } -tshakeg = { \pgrace { \small A32[ f g a] } } -tshakeA = { \pgrace { \small A32[ g A a] } } +tshakea = { \pgrace { A32[ a d a G] } } +tshakeb = { \pgrace { A32[ b d b G] } } +tshakec = { \pgrace { A32[ c d c G] } } +tshaked = { \pgrace { A32[ d e d G] } } +tshakee = { \pgrace { A32[ e f e a] } } +tshakef = { \pgrace { A32[ f g f a] } } +tshakeg = { \pgrace { A32[ f g a] } } +tshakeA = { \pgrace { A32[ g A a] } } % Slurs % A few of these can't really be played and are here only for consistency. -slura = { \pgrace { \small g32[ a G] } } -slurb = { \pgrace { \small g32[ b G] } } -slurc = { \pgrace { \small g32[ c G] } } -slurd = { \pgrace { \small g32[ d G] } } -wslurd = { \pgrace { \small g32[ d c] } } -slure = { \pgrace { \small g32[ e a] } } -slurf = { \pgrace { \small g32[ f a] } } -slurg = { \pgrace { \small A32[ f a] } } -slurA = { \pgrace { \small f32[ a] } } +slura = { \pgrace { g32[ a G] } } +slurb = { \pgrace { g32[ b G] } } +slurc = { \pgrace { g32[ c G] } } +slurd = { \pgrace { g32[ d G] } } +wslurd = { \pgrace { g32[ d c] } } +slure = { \pgrace { g32[ e a] } } +slurf = { \pgrace { g32[ f a] } } +slurg = { \pgrace { A32[ f a] } } +slurA = { \pgrace { f32[ a] } } % Half slurs -hslura = { \pgrace { \small a32[ G] } } -hslurb = { \pgrace { \small b32[ G] } } -hslurc = { \pgrace { \small c32[ G] } } -hslurd = { \pgrace { \small d32[ G] } } -whslurd = { \pgrace { \small d32[ c] } } -hslure = { \pgrace { \small e32[ a] } } -hslurf = { \pgrace { \small f32[ a] } } -hslurg = { \pgrace { \small g32[ a] } } -hslurA = { \pgrace { \small A32[ a] } } +hslura = { \pgrace { a32[ G] } } +hslurb = { \pgrace { b32[ G] } } +hslurc = { \pgrace { c32[ G] } } +hslurd = { \pgrace { d32[ G] } } +whslurd = { \pgrace { d32[ c] } } +hslure = { \pgrace { e32[ a] } } +hslurf = { \pgrace { f32[ a] } } +hslurg = { \pgrace { g32[ a] } } +hslurA = { \pgrace { A32[ a] } } % Thumb slurs -tslura = { \pgrace { \small A32[ a G] } } -tslurb = { \pgrace { \small A32[ b G] } } -tslurc = { \pgrace { \small A32[ c G] } } -tslurd = { \pgrace { \small A32[ d G] } } -wtslurd = { \pgrace { \small A32[ d c] } } -tslure = { \pgrace { \small A32[ e a] } } -tslurf = { \pgrace { \small A32[ f a] } } -tslurg = { \pgrace { \small A32[ f a] } } -tslurA = { \pgrace { \small f32[ a] } } +tslura = { \pgrace { A32[ a G] } } +tslurb = { \pgrace { A32[ b G] } } +tslurc = { \pgrace { A32[ c G] } } +tslurd = { \pgrace { A32[ d G] } } +wtslurd = { \pgrace { A32[ d c] } } +tslure = { \pgrace { A32[ e a] } } +tslurf = { \pgrace { A32[ f a] } } +tslurg = { \pgrace { A32[ f a] } } +tslurA = { \pgrace { f32[ a] } } % Catches -catcha = { \pgrace { \small a32[ G d G] } } -catchb = { \pgrace { \small b32[ G d G] } } -catchc = { \pgrace { \small c32[ G d G] } } -catchd = { \pgrace { \small d32[ G b G] } } -catche = { \pgrace { \small e32[ G d G] } } +catcha = { \pgrace { a32[ G d G] } } +catchb = { \pgrace { b32[ G d G] } } +catchc = { \pgrace { c32[ G d G] } } +catchd = { \pgrace { d32[ G b G] } } +catche = { \pgrace { e32[ G d G] } } % G-grace catches -gcatcha = { \pgrace { \small g32[ a G d G] } } -gcatchb = { \pgrace { \small g32[ b G d G] } } -gcatchc = { \pgrace { \small g32[ c G d G] } } -gcatchd = { \pgrace { \small g32[ d G b G] } } -gcatche = { \pgrace { \small g32[ e G d G] } } +gcatcha = { \pgrace { g32[ a G d G] } } +gcatchb = { \pgrace { g32[ b G d G] } } +gcatchc = { \pgrace { g32[ c G d G] } } +gcatchd = { \pgrace { g32[ d G b G] } } +gcatche = { \pgrace { g32[ e G d G] } } % Thumb catches -tcatcha = { \pgrace { \small A32[ a G d G] } } -tcatchb = { \pgrace { \small A32[ b G d G] } } -tcatchc = { \pgrace { \small A32[ c G d G] } } -tcatchd = { \pgrace { \small A32[ d G b G] } } -tcatche = { \pgrace { \small A32[ e G d G] } } +tcatcha = { \pgrace { A32[ a G d G] } } +tcatchb = { \pgrace { A32[ b G d G] } } +tcatchc = { \pgrace { A32[ c G d G] } } +tcatchd = { \pgrace { A32[ d G b G] } } +tcatche = { \pgrace { A32[ e G d G] } } % Triple strikes (BMW has them all, but I've never seen any but the A one used, so ...) -tripleA = { \pgrace { \small A32[ g A g A g] } } +tripleA = { \pgrace { A32[ g A g A g] } } % Throws -thrwd = { \pgrace { \small G32[ d c] } } -Gthrwd = { \pgrace { \small d32[ c] } } -gripthrwd = { \pgrace { \small G32[ d G c] } } -thrwe = { \pgrace { \small e32[ a f a] } } -wthrwe = { \pgrace { \small e32[ d f d] } } -thrwf = { \pgrace { \small f32[ e g e] } } +thrwd = { \pgrace { G32[ d c] } } +Gthrwd = { \pgrace { d32[ c] } } +gripthrwd = { \pgrace { G32[ d G c] } } +thrwe = { \pgrace { e32[ a f a] } } +wthrwe = { \pgrace { e32[ d f d] } } +thrwf = { \pgrace { f32[ e g e] } } % Birls -birl = { \pgrace { \small a32[ G a G] } } -wbirl = { \pgrace { \small G32[ a G] } } -gbirl = { \pgrace { \small g32[ a G a G] } } -dbirl = { \pgrace { \small d32[ a G a G] } } +birl = { \pgrace { a32[ G a G] } } +wbirl = { \pgrace { G32[ a G] } } +gbirl = { \pgrace { g32[ a G a G] } } +dbirl = { \pgrace { d32[ a G a G] } } % Grips -grip = { \pgrace { \small G32[ d G] } } -dgrip = { \pgrace { \small G32[ b G] } } -egrip = { \pgrace { \small G32[ e G] } } +grip = { \pgrace { G32[ d G] } } +dgrip = { \pgrace { G32[ b G] } } +egrip = { \pgrace { G32[ e G] } } % Taorluaths -taor = { \pgrace { \small G32[ d G e] } } -taorjmd = { \pgrace { \small G32[ d a e] } } -taorold = { \pgrace { \small G32[ d G a e] } } -dtaor = { \pgrace { \small G32[ b G e] } } -Gtaor = { \pgrace { \small d32[ G e] } } -taoramb = { \pgrace { \small G32[ d G b e] } } -taoramc = { \pgrace { \small G32[ d G c e] } } -taoramd = { \pgrace { \small G32[ d G c d e] } } +taor = { \pgrace { G32[ d G e] } } +taorjmd = { \pgrace { G32[ d a e] } } +taorold = { \pgrace { G32[ d G a e] } } +dtaor = { \pgrace { G32[ b G e] } } +Gtaor = { \pgrace { d32[ G e] } } +taoramb = { \pgrace { G32[ d G b e] } } +taoramc = { \pgrace { G32[ d G c e] } } +taoramd = { \pgrace { G32[ d G c d e] } } % Crunluaths -crun = { \pgrace { \small G32[ d G e a f a ] } } -dcrun = { \pgrace { \small G32[ b G e a f a ] } } -Gcrun = { \pgrace { \small d32[ G e G f a ] } } -crunamb = { \pgrace { \small G32[ d G b e b f b ] } } -crunamc = { \pgrace { \small G32[ d G c e c f c ] } } -crunamd = { \pgrace { \small G32[ d G c d e d f d ] } } -crunambfosg = { \pgrace { \small e32[ b f b ] } } -crunamcfosg = { \pgrace { \small e32[ c f c ] } } -crunamdfosg = { \pgrace { \small e32[ d f d ] } } +crun = { \pgrace { G32[ d G e a f a ] } } +dcrun = { \pgrace { G32[ b G e a f a ] } } +Gcrun = { \pgrace { d32[ G e G f a ] } } +crunamb = { \pgrace { G32[ d G b e b f b ] } } +crunamc = { \pgrace { G32[ d G c e c f c ] } } +crunamd = { \pgrace { G32[ d G c d e d f d ] } } +crunambfosg = { \pgrace { e32[ b f b ] } } +crunamcfosg = { \pgrace { e32[ c f c ] } } +crunamdfosg = { \pgrace { e32[ d f d ] } } % Special piobaireachd notations -grGcad = { \pgrace { \small G16 } } -gracad = { \pgrace { \small a16 } } -cad = { \pgrace { \small \stemspace #'(0 . 0.5) g32[ e8 d32] } } -hcad = { \pgrace { \small \stemspace #'(0 . 0.5) g32[ e8] } } -tcad = { \pgrace { \small e8[ d32] } } -thcad = { \pgrace { \small e8 } } +grGcad = { \pgrace { G16 } } +gracad = { \pgrace { a16 } } +cad = { \pgrace { \stemspace #'(0 . 0.5) g32[ e8 d32] } } +hcad = { \pgrace { \stemspace #'(0 . 0.5) g32[ e8] } } +tcad = { \pgrace { e8[ d32] } } +thcad = { \pgrace { e8 } } % This is the same as thrwe -dre = { \pgrace { \small e32[ a f a] } } +dre = { \pgrace { e32[ a f a] } } % This is the same as thrwf -dare = { \pgrace { \small f32[ e g e] } } -bari = { \pgrace { \small e32[ G f G] } } -dari = { \pgrace { \small f32[ e g e f e] } } -pthrwd = { \pgrace { \small G16[ d32 c] } } -darodo = { \pgrace { \small G32[ d G c G] } } -Gdarodo = { \pgrace { \small d32[ G c G] } } -pdarodo = { \pgrace { \small G16[ d32 G c G16] } } -pGdarodo = { \pgrace { \small d32[ G c G16] } } +dare = { \pgrace { f32[ e g e] } } +bari = { \pgrace { e32[ G f G] } } +dari = { \pgrace { f32[ e g e f e] } } +pthrwd = { \pgrace { G16[ d32 c] } } +darodo = { \pgrace { G32[ d G c G] } } +Gdarodo = { \pgrace { d32[ G c G] } } +pdarodo = { \pgrace { G16[ d32 G c G16] } } +pGdarodo = { \pgrace { d32[ G c G16] } } % Weird stuff from Joseph MacDonald’s book -fifteenthcutting = { \pgrace { \small G32[ d a e a f a e a d] } } -fifteenthcuttingG = { \pgrace { \small G32[ d a e G f G e G d] } } -Gfifteenthcutting = { \pgrace { \small d32[ a e a f a e a d] } } -GfifteenthcuttingG = { \pgrace { \small d32[ a e G f G e G d] } } -seventeenthcutting = { \pgrace { \small G32[ d a e a f a e a d a c] } } -seventeenthcuttingG = { \pgrace { \small G32[ d a e G f G e G d G c] } } -Gseventeenthcutting = { \pgrace { \small d32[ a e a f a e a d a c] } } -GseventeenthcuttingG = { \pgrace { \small d32[ a e G f G e G d G c] } } -barluadh = { \pgrace { \small G32[ d a e a f a e a d a c a b a e a f a] } } -barluadhG = { \pgrace { \small G32[ d a e G f G e G d G c G b G e G f G] } } -Gbarluadh = { \pgrace { \small d32[ a e a f a e a d a c a b a e a f a] } } -GbarluadhG = { \pgrace { \small d32[ a e G f G e G d G c G b G e G f G] } } +fifteenthcutting = { \pgrace { G32[ d a e a f a e a d] } } +fifteenthcuttingG = { \pgrace { G32[ d a e G f G e G d] } } +Gfifteenthcutting = { \pgrace { d32[ a e a f a e a d] } } +GfifteenthcuttingG = { \pgrace { d32[ a e G f G e G d] } } +seventeenthcutting = { \pgrace { G32[ d a e a f a e a d a c] } } +seventeenthcuttingG = { \pgrace { G32[ d a e G f G e G d G c] } } +Gseventeenthcutting = { \pgrace { d32[ a e a f a e a d a c] } } +GseventeenthcuttingG = { \pgrace { d32[ a e G f G e G d G c] } } +barluadh = { \pgrace { G32[ d a e a f a e a d a c a b a e a f a] } } +barluadhG = { \pgrace { G32[ d a e G f G e G d G c G b G e G f G] } } +Gbarluadh = { \pgrace { d32[ a e a f a e a d a c a b a e a f a] } } +GbarluadhG = { \pgrace { d32[ a e G f G e G d G c G b G e G f G] } } % Non-gracenote piobaireachd markup. trebling = \markup { \override #'(baseline-skip . 0.4) diff --git a/ly/catalan.ly b/ly/catalan.ly index 576436e927..5a30f54a58 100644 --- a/ly/catalan.ly +++ b/ly/catalan.ly @@ -1,7 +1,7 @@ %%%% common Catalan names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "catalan" diff --git a/ly/chord-modifiers-init.ly b/ly/chord-modifiers-init.ly index 75b804bb05..7f4ed21ad2 100644 --- a/ly/chord-modifiers-init.ly +++ b/ly/chord-modifiers-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" chordmodifiers = #default-chord-modifier-list @@ -6,46 +6,48 @@ chordmodifiers = #default-chord-modifier-list whiteTriangleMarkup = \markup { \triangle ##f %% 394 capital delta - %#(ly:export (ly:wide-char->utf-8 #x0394)) + %#(ly:wide-char->utf-8 #x0394) %% 2206 : delta from the symbol font. - % #(ly:export (ly:wide-char->utf-8 #x2206)) + % #(ly:wide-char->utf-8 #x2206) %% up pointing triangle - % #(ly:export (ly:wide-char->utf-8 #x25B3)) + % #(ly:wide-char->utf-8 #x25B3) } blackTriangleMarkup = \markup { \triangle ##t %% black up pointing triangle -% #(ly:export (ly:wide-char->utf-8 #x25B2)) +% #(ly:wide-char->utf-8 #x25B2) } ignatzekExceptionMusic = { - 1-\markup { "+" } - -\markup { \super "o" } % should be $\circ$ ? - -\markup { - %% f8 is o with slash. - \super #(ly:export (ly:wide-char->utf-8 #x00f8)) - } - -\markup { \super "o7" } + 1-\markup { "+" } + -\markup { \super "o" } % should be $\circ$ ? + -\markup { + %% f8 is o with slash. + \normal-size-super #(ly:wide-char->utf-8 #x00f8) + } + -\markup { \super "o7" } + -\markup { \super "lyd" } % Lydian + -\markup { \super "alt" } % altered chord (super-Locrian) } partialJazzMusic = { - 1-\markup { \normal-size-super "2" } - -\markup { "m" } - -\markup { \normal-size-super "sus4" } - -\markup { \normal-size-super "5" } - - %% TODO, partial exceptions - -\markup { "m" }-\markup { \normal-size-super "sus4" } - -\markup { "m" }-\markup { \normal-size-super "sus2" } + 1-\markup { \normal-size-super "2" } + -\markup { "m" } + -\markup { \normal-size-super "sus4" } + -\markup { \normal-size-super "5" } + + %% TODO, partial exceptions + -\markup { "m" }-\markup { \normal-size-super "sus4" } + -\markup { "m" }-\markup { \normal-size-super "sus2" } } powerChordSymbol = { - -\markup { \normal-size-super "5" } - 1-\markup { \normal-size-super "5" } + -\markup { \normal-size-super "5" } + 1-\markup { \normal-size-super "5" } } @@ -57,7 +59,7 @@ partialJazzExceptions= #(sequential-music-to-chord-exceptions partialJazzMusic #f) powerChordExceptions = - #(sequential-music-to-chord-exceptions powerChordSymbol #t) +#(sequential-music-to-chord-exceptions powerChordSymbol #t) ignatzekExceptions = #(sequential-music-to-chord-exceptions ignatzekExceptionMusic #t) diff --git a/ly/chord-repetition-init.ly b/ly/chord-repetition-init.ly index 209e2676e0..aad9ac2f3e 100644 --- a/ly/chord-repetition-init.ly +++ b/ly/chord-repetition-init.ly @@ -1,79 +1,41 @@ %%% -*- Mode: Scheme -*- -\version "2.14.0" +\version "2.16.0" %{ - -The following functions define the chord repetition behavior, and may -be invoked by the user to customize it. - -ly:parser-set-repetition-symbol - set the chord repetition shortcut. - `q' is the default value set in this file. - -ly:parser-set-repetition-function - - set the function that is invoked when a chord repetition symbol - is encountered by the parser: a four argument function - (previous-chord, location, duration, list of articulations) which is - supposed to return a new chord. - `default-repeat-chord' is the default function set in this file. - `tab-repeat-chord' may be used in tablatures to preserve the string information. + Chord repetition behavior is not customizable in the parser. That + is due to it usually being done by the toplevel music handler + affecting every bit of music at the same time, not closely related + to music input. Customized behavior is instead accomplished by + calling \chordRepeats explicitly on some music list with a list of + event types you wish to keep by default (if any events of that kind + are found already on the repeat chord, however, they still get + removed from the original). + + The default behavior is straightforward: don't keep anything but the + rhythmic events themselves. %} -#(define-public ((make-repeat-chord-function chord-element-types note-articulation-types) - previous-chord location duration articulations) - "Make a chord repetition function. -The returned functions copies the notes from @var{previous-chord} into a new chord. -Chord elements, which type is found in @var{chord-element-types}, are copied into -the new chord. Note articulations, which type is found in @var{note-articulation-types}, -are also copied. All other events are not copied into the new chord." - (define (filter-events events event-types) - (filter (lambda (event) - (and (memq (ly:music-property event 'name) event-types) event)) - events)) - ;; If previous-chord has an length property, then it means that it - ;; has been processed by a music iterator. In other words, the chord - ;; has been memorized from an other music block, which is certainly not - ;; what the user has intended, as anywy the result will be buggy. - ;; In that case, raise a warning. - (if (not (and (ly:music? previous-chord) - (null? (ly:music-property previous-chord 'length)))) - (ly:input-message location - (_ "No memorized chord in music block before chord repetition"))) - ;; Instead of copying the previous chord, then removing the - ;; undesired elements (like articulations), a new empty chord is built. - ;; Then, the pitch found in the previous chord are added to the new - ;; chord, without any "decoration" (e.g. cautionary accidentals, - ;; fingerings, text scripts, articulations). Only the events of types - ;; given in `chord-elements-types' and `note-articulation-types' are - ;; copied from the original chord elements and note articulations, - ;; respectively. - (let ((elements (ly:music-property (ly:music-deep-copy previous-chord) 'elements))) - (make-music - 'EventChord - 'origin location - 'elements (append! - (map (lambda (note) - (let ((new-note (make-music 'NoteEvent - 'origin location - 'pitch (ly:music-property note 'pitch) - 'duration duration)) - (articulations - (filter-events (ly:music-property note 'articulations) - note-articulation-types))) - (if (not (null? articulations)) - (set! (ly:music-property new-note 'articulations) - articulations)) - new-note)) - (filter-events elements '(NoteEvent))) - (filter-events elements chord-element-types) - articulations)))) - -#(define-public default-repeat-chord - (make-repeat-chord-function '() '())) - -#(define-public tab-repeat-chord - (make-repeat-chord-function '(StringNumberEvent) '(StringNumberEvent))) - -% default settings -#(ly:parser-set-repetition-symbol parser 'q) -#(ly:parser-set-repetition-function parser default-repeat-chord) +chordRepeats = +#(define-music-function (parser location event-types music) + ((list? '()) ly:music?) + "Walk through @var{music} putting the notes of the previous chord +into repeat chords, as well as an optional list of @var{event-types} +such as @code{#'(string-number-event)}." + (expand-repeat-chords! (cons 'rhythmic-event event-types) music)) + +tabChordRepeats = +#(define-music-function (parser location event-types music) + ((list? '()) ly:music?) + "Walk through @var{music} putting the notes, fingerings and string +numbers of the previous chord into repeat chords, as well as an +optional list of @var{event-types} such as @code{#'(articulation-event)}." + #{ \chordRepeats + #(append '(string-number-event fingering-event) event-types) + #music + #}) + +tabChordRepetition = +#(define-void-function (parser location) () + (_i "Include the string and fingering information in a chord repetition. +This function is deprecated; try using @code{\tabChordRepeats} instead.") + (ly:parser-define! parser '$chord-repeat-events + '(string-number-event fingering-event))) diff --git a/ly/context-mods-init.ly b/ly/context-mods-init.ly new file mode 100644 index 0000000000..1b8201879e --- /dev/null +++ b/ly/context-mods-init.ly @@ -0,0 +1,33 @@ +%%%% This file is part of LilyPond, the GNU music typesetter. +%%%% +%%%% Copyright (C) 2011--2012 Han-Wen Nienhuys +%%%% Jan Nieuwenhuizen +%%%% +%%%% 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 . + +\version "2.16.0" + +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 + \description "Remove staves which are considered to be empty according +to the list of interfaces set by @code{keepAliveInterfaces}." +} diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly index 268ecaee7e..f417f10d94 100644 --- a/ly/declarations-init.ly +++ b/ly/declarations-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys +%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys %%%% Jan Nieuwenhuizen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" %% < 1.8 compatibility switch #(ly:set-option 'old-relative) @@ -60,13 +60,13 @@ center = #0 %% try \once \override Score.Beam #'breakable = ##t %% rather name \newline, \pageBreak ? -break = #(make-event-chord (list (make-music 'LineBreakEvent 'break-permission 'force))) -noBreak = #(make-event-chord (list (make-music 'LineBreakEvent 'break-permission '()))) +break = #(make-music 'LineBreakEvent 'break-permission 'force) +noBreak = #(make-music 'LineBreakEvent 'break-permission '()) %% \pageBreak, \noPageBreak, \pageTurn, \noPageTurn, \allowPageTurn are defined %% as music functions -stopStaff = #(make-event-chord (list (make-span-event 'StaffSpanEvent STOP))) -startStaff = #(make-event-chord (list (make-span-event 'StaffSpanEvent START))) +stopStaff = #(make-span-event 'StaffSpanEvent STOP) +startStaff = #(make-span-event 'StaffSpanEvent START) % @@ -114,6 +114,8 @@ repeatTie = #(make-music 'RepeatTieEvent) #(define bookpart-score-handler ly:book-add-score!) #(define bookpart-text-handler ly:book-add-score!) #(define bookpart-music-handler collect-book-music-for-book) +#(define output-def-music-handler context-defs-from-music) +#(define context-mod-music-handler context-mod-from-music) \include "predefined-fretboards-init.ly" \include "string-tunings-init.ly" @@ -122,31 +124,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 } - - - diff --git a/ly/deutsch.ly b/ly/deutsch.ly index 480d6f4ae4..c7c626e211 100644 --- a/ly/deutsch.ly +++ b/ly/deutsch.ly @@ -1,7 +1,7 @@ %%%% common German names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "deutsch" diff --git a/ly/drumpitch-init.ly b/ly/drumpitch-init.ly index 65eec67cc1..1d9385c4b1 100644 --- a/ly/drumpitch-init.ly +++ b/ly/drumpitch-init.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" drumPitchNames = #'((acousticbassdrum . acousticbassdrum) @@ -230,7 +230,7 @@ midiDrumPitches = #`( ) -#(map +#(for-each (lambda (k-v) (module-define! (current-module) (car k-v) diff --git a/ly/dynamic-scripts-init.ly b/ly/dynamic-scripts-init.ly index 33755fdd85..570197ed14 100644 --- a/ly/dynamic-scripts-init.ly +++ b/ly/dynamic-scripts-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" % % declare the standard dynamic identifiers. diff --git a/ly/english.ly b/ly/english.ly index 6f485db299..c0cadea621 100644 --- a/ly/english.ly +++ b/ly/english.ly @@ -1,7 +1,7 @@ %%%% common English names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "english" diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index d28b8be51b..4d2329032d 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys +%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys %%%% Jan Nieuwenhuizen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" \context { \name "Global" @@ -26,11 +26,13 @@ \defaultchild "Score" \description "Hard coded entry point for LilyPond. Cannot be tuned." \grobdescriptions #all-grob-descriptions + EventClasses = #all-event-classes } \context { \type "Engraver_group" \name "FretBoards" + \alias "Staff" \description "A context for displaying fret diagrams." \consists "Fretboard_engraver" @@ -46,6 +48,7 @@ predefinedDiagramTable = #default-fret-table handleNegativeFrets = #'recalculate + restrainOpenStrings = ##f } \context { @@ -54,6 +57,7 @@ \consists "Output_property_engraver" \consists "Bar_engraver" + \consists "Pure_from_neighbor_engraver" %% Bar_engraver must be first so default bars aren't overwritten %% with empty ones. @@ -70,7 +74,6 @@ \consists "Ledger_line_engraver" \consists "Staff_symbol_engraver" \consists "Collision_engraver" - \consists "Beam_collision_engraver" \consists "Grob_pq_engraver" \consists "Rest_collision_engraver" \consists "Accidental_engraver" @@ -82,6 +85,7 @@ \consists "Figured_bass_position_engraver" \consists "Script_row_engraver" \consists "Cue_clef_engraver" + \consists "Footnote_engraver" localKeySignature = #'() createSpacing = ##t @@ -228,7 +232,6 @@ multiple voices on the same staff." \consists "Dots_engraver" \consists "Rest_engraver" \consists "Tweak_engraver" - \consists "Footnote_engraver" %% switch on to make stem directions interpolate for the %% center line. @@ -312,6 +315,7 @@ contained staves are connected vertically." \consists "Instrument_name_engraver" \consists "Span_bar_engraver" + \consists "Span_bar_stub_engraver" \consists "Span_arpeggio_engraver" \consists "System_start_delimiter_engraver" \consists "Vertical_align_engraver" @@ -357,6 +361,7 @@ together, never separately." \consists "Instrument_name_engraver" \consists "Span_bar_engraver" + \consists "Span_bar_stub_engraver" \consists "Span_arpeggio_engraver" \consists "Output_property_engraver" systemStartDelimiter = #'SystemStartBracket @@ -408,6 +413,13 @@ a collection of staves, with a bracket in front and spanning bar lines." (padding . 0.5)) \override TextScript #'font-shape = #'italic \override DynamicLineSpanner #'Y-offset = #0 + \override DynamicText #'X-offset = + #(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:self-alignment-interface::centered-on-note-columns)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self)))) \description "Holds a single line of dynamics, which will be centered between the staves surrounding this context." @@ -424,10 +436,12 @@ printing of a single line of lyrics." \consists "Lyric_engraver" \consists "Extender_engraver" \consists "Hyphen_engraver" + \consists "Tweak_engraver" \consists "Stanza_number_engraver" \consists "Instrument_name_engraver" \consists "Font_size_engraver" \consists "Hara_kiri_engraver" + \consists "Pure_from_neighbor_engraver" searchForVoice = ##f %% explicitly set instrument, so it is not inherited from the parent instrumentName = #'() @@ -498,20 +512,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" @@ -531,8 +531,16 @@ automatically when an output definition (a @code{\score} or \consists "Repeat_acknowledge_engraver" \consists "Staff_collecting_engraver" - %% move the alias along with the engraver. + \alias "Timing" + + %% An alias for Timing is established by the Timing_translator in + %% whatever context it is initialized, and the timing variables are + %% then copied from wherever Timing had been previously established. + %% The alias at Score level provides a target for initializing + %% Timing variables in layout definitions before any + %% Timing_translator has been run. + % timing translator must come BEFORE bar number engraver \consists "Timing_translator" \consists "Default_bar_line_engraver" \consists "Output_property_engraver" @@ -547,6 +555,9 @@ automatically when an output definition (a @code{\score} or \consists "Stanza_number_align_engraver" \consists "Bar_number_engraver" \consists "Parenthesis_engraver" + \consists "Concurrent_hairpin_engraver" + \consists "Beam_collision_engraver" + \consists "Footnote_engraver" \defaultchild "Staff" @@ -557,8 +568,10 @@ automatically when an output definition (a @code{\score} or \accepts "VaticanaStaff" \accepts "GregorianTranscriptionStaff" \accepts "MensuralStaff" + \accepts "PetrucciStaff" \accepts "StaffGroup" \accepts "DrumStaff" + \accepts "KievanStaff" \accepts "Lyrics" \accepts "ChordNames" \accepts "GrandStaff" @@ -568,7 +581,6 @@ automatically when an output definition (a @code{\score} or \accepts "NoteNames" \accepts "FiguredBass" - noteToFretFunction = #determine-frets predefinedDiagramTable = ##f soloText = #"Solo" @@ -593,7 +605,10 @@ automatically when an output definition (a @code{\score} or defaultBarType = #"|" doubleRepeatType = #":|:" - barNumberVisibility = #first-bar-number-invisible + startRepeatType = #"|:" + endRepeatType = #":|" + barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers + barNumberFormatter = #robust-bar-number-function automaticBars = ##t explicitClefVisibility = #all-visible @@ -604,7 +619,7 @@ automatically when an output definition (a @code{\score} or repeatCountVisibility = #all-repeat-counts-visible timeSignatureSettings = #default-time-signature-settings - timeSignatureFraction = #'(4 . 4) + timeSignatureFraction = 4/4 %% These defaults should be the same as the rules established in %% scm/time-signature-settings.scm for 4/4 time @@ -613,6 +628,8 @@ automatically when an output definition (a @code{\score} or beatStructure = #'(1 1 1 1) beamExceptions = #'((end . (((1 . 8) . (4 4)) ((1 . 12) . (3 3 3 3))))) + beamHalfMeasure = ##t + autoBeaming = ##t autoBeamCheck = #default-auto-beam-check @@ -655,9 +672,12 @@ automatically when an output definition (a @code{\score} or %% chord names: chordNameFunction = #ignatzek-chord-names + minorChordModifier = #(make-simple-markup "m") + additionalPitchPrefix = #"" % was "add" majorSevenSymbol = #whiteTriangleMarkup chordNameLowercaseMinor = ##f - chordNameSeparator = #(make-simple-markup "/") + chordNameSeparator = #(make-hspace-markup 0.5) + slashChordSeparator = #(make-simple-markup "/") chordNameExceptions = #ignatzekExceptions chordNoteNamer = #'() chordRootNamer = #note-name->markup @@ -689,6 +709,7 @@ automatically when an output definition (a @code{\score} or graceSettings = #`( (Voice Stem direction ,UP) (Voice Stem font-size -3) + (Voice Flag font-size -3) (Voice NoteHead font-size -3) (Voice TabNoteHead font-size -4) (Voice Dots font-size -3) @@ -774,6 +795,7 @@ context." \remove "Note_heads_engraver" \remove "Fingering_engraver" \remove "New_fingering_engraver" + \remove "Pitched_trill_engraver" \description "Context for drawing notes in a Tab staff." @@ -795,16 +817,16 @@ context." \remove "Accidental_engraver" %% make the Stems as short as possible to minimize their influence %% on the slur::calc-control-points routine - \override Stem #'length = #0 \override Stem #'no-stem-extend = ##t - \override Stem #'flag-style = #'no-flag + \override Flag #'style = #'no-flag \override Stem #'details = #'((lengths 0 0 0 0 0 0) (beamed-lengths 0 0 0) (beamed-minimum-free-lengths 0 0 0) (beamed-extreme-minimum-free-lengths 0 0) (stem-shorten 0 0)) %% after all, the stubs of the stems may still be visible, so ... - \override Stem #'transparent = ##t + \override Stem #'stencil = ##f + \override Flag #'stencil = ##f %% automatic beams should be suppressed for similar reasons ... autoBeaming = ##f %% remove beams, dots and rests ... @@ -813,8 +835,8 @@ context." \override Dots #'stencil = ##f \override Rest #'stencil = ##f \override MultiMeasureRest #'stencil = ##f - \override MultiMeasureRestNumber #'transparent = ##t - \override MultiMeasureRestText #'transparent = ##t + \override MultiMeasureRestNumber #'stencil = ##f + \override MultiMeasureRestText #'stencil = ##f %% ... all kinds of ties/slurs \override Tie #'stencil = ##f \override RepeatTie #'stencil = ##f @@ -827,10 +849,10 @@ context." %% ... and all kinds of markups, spanners etc. \override TupletBracket #'stencil = ##f \override TupletNumber #'stencil = ##f - \override DynamicText #'transparent = ##t + \override DynamicText #'stencil = ##f \override DynamicTextSpanner #'stencil = ##f \override TextSpanner #'stencil = ##f - \override Hairpin #'transparent = ##t + \override Hairpin #'stencil = ##f \override Script #'stencil = ##f \override TextScript #'stencil = ##f \override Glissando #'stencil = #glissando::draw-tab-glissando @@ -883,6 +905,8 @@ contexts and handles the line spacing, the tablature clef etc. properly." clefPosition = #0 %% Change string if note results in negative fret number handleNegativeFrets = #'recalculate + %% Allow open strings even if minimumFret is set + restrainOpenStrings = ##f } \context { @@ -1002,6 +1026,7 @@ accommodated for typesetting a piece in mensural style." %% Set default head for notes outside of \[ \]. \override NoteHead #'style = #'mensural \override Rest #'style = #'mensural + \override Flag #'style = #'mensural %% There are no beams in mensural notation. autoBeaming = ##f @@ -1045,13 +1070,113 @@ accommodated for typesetting a piece in mensural style." \override Custos #'neutral-direction = #DOWN %% Accidentals are valid only once (same as - %% #(set-accidental-style 'forget)) + %% \accidentalStyle "forget") extraNatural = ##f autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1)) autoCautionaries = #'() printKeyCancellation = ##f } +\context { + \Voice + \name "PetrucciVoice" + \alias "Voice" + \description "Same as @code{Voice} context, except that it is +accommodated for typesetting a piece in Petrucci style." + + \remove "Ligature_bracket_engraver" + \consists "Mensural_ligature_engraver" + + %% Set glyph styles. + \override NoteHead #'style = #'petrucci + \override Rest #'style = #'mensural + + % Thickens and shortens stems. + \override Stem #'thickness = #1.7 + \override Stem #'length = #5 + + %% There are no beams in Petrucci notation. + autoBeaming = ##f +} + +\context { + \Staff + \name "PetrucciStaff" + \alias "Staff" + \denies "Voice" + \defaultchild "PetrucciVoice" + \accepts "PetrucciVoice" + \description "Same as @code{Staff} context, except that it is +accommodated for typesetting a piece in Petrucci style." + + \consists "Custos_engraver" + + \override StaffSymbol #'thickness = #1.3 + + %% Choose Petrucci g clef on 2nd line as default. + clefGlyph = #"clefs.petrucci.g" + middleCClefPosition = #-6 + middleCPosition = #-6 + clefPosition = #-2 + clefOctavation = #0 + + \override Custos #'style = #'mensural + \override Custos #'neutral-position = #3 + \override Custos #'neutral-direction = #DOWN + + %% Accidentals are valid only once (if the following note is different) + extraNatural = ##f + autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0) + ,neo-modern-accidental-rule) + autoCautionaries = #'() + printKeyCancellation = ##f +} + +\context { + \Voice + \name "KievanVoice" + \alias "Voice" + \description "Same as @code{Voice} context, except that it is +accommodated for typesetting a piece in Kievan style." + + %% Set glyph styles. + \override NoteHead #'style = #'kievan + \override Rest #'style = #'mensural + \override Accidental #'glyph-name-alist = #alteration-kievan-glyph-name-alist + \override Dots #'style = #'kievan + \override Slur #'stencil = ##f + + %% There are beams in Kievan notation, but they are invoked manually + autoBeaming = ##f +} + +\context { + \Staff + \name "KievanStaff" + \alias "Staff" + \denies "Voice" + \defaultchild "KievanVoice" + \accepts "KievanVoice" + \description "Same as @code{Staff} context, except that it is +accommodated for typesetting a piece in Kievan style." + + \remove "Time_signature_engraver" + + %% Choose Kievan tsefaut clef + clefGlyph = #"clefs.kievan.do" + middleCClefPosition = #0 + middleCPosition = #0 + clefPosition = #0 + clefOctavation = #0 + + %% Accidentals are valid only once (if the following note is different) + extraNatural = ##f + autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0) + ,neo-modern-accidental-rule) + autoCautionaries = #'() + printKeyCancellation = ##f + +} %% Keep the old definitions in here for compatibility (they erase previous %% settings to the corresponding context!). diff --git a/ly/espanol.ly b/ly/espanol.ly index f95eece6a5..c67dd19c81 100644 --- a/ly/espanol.ly +++ b/ly/espanol.ly @@ -1,7 +1,7 @@ %%%% common Spanish names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "espanol" diff --git a/ly/event-listener.ly b/ly/event-listener.ly new file mode 100644 index 0000000000..6c0f75970e --- /dev/null +++ b/ly/event-listener.ly @@ -0,0 +1,228 @@ +%%%% This file is part of LilyPond, the GNU music typesetter. +%%%% +%%%% Copyright (C) 2011--2012 Graham Percival +%%%% +%%%% 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 . +% +% +% +% This file is used for Vivi, the Virtual Violinist: +% http://percival-music.ca/vivi.html +% but it may be helpful to other researchers, either with the same +% output, or as a basis for other work in extracting music events +% from lilypond. +% +% Output format is tab-separated lines, like this: +%0.00000000 note 57 0.25000000 point-and-click 2 38 +%0.00000000 dynamic f +%0.25000000 note 62 0.25000000 point-and-click 7 38 +%0.50000000 note 66 0.12500000 point-and-click 9 38 +%0.50000000 script staccato + + + +\version "2.16.0" + +%%%% Helper functions + +#(define (filename-from-staffname context) + "Constructs a filename in the form +@file{@var{original_filename}-@var{staff_instrument_name}.notes} if the +staff has an instrument name. If the staff has no instrument +name, it uses "unnamed-staff" for that part of the filename." + (let* ((inst-name (ly:context-property context 'instrumentName))) + (string-concatenate (list + (substring (object->string (command-line)) + ;; filename without .ly part + (+ (string-rindex (object->string (command-line)) #\sp) 2) + (- (string-length (object->string (command-line))) 5)) + "-" + (if (string? inst-name) + inst-name + "unnamed-staff") + ".notes")))) + +#(define (format-moment moment) + (exact->inexact + (/ (ly:moment-main-numerator moment) + (ly:moment-main-denominator moment)))) + +#(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)) + (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 (make-output-string-line context values) + "Constructs a tab-separated string beginning with the +score time (derived from the context) and then adding all the +values. The string ends with a newline." + (let* ((moment (ly:context-current-moment context))) + (string-append + (string-join + (append + (list (moment-grace->string moment)) + (map + (lambda (x) (ly:format "~a" x)) + values)) + "\t") + "\n"))) + + +#(define (print-line context . values) + "Prints the list of values (plus the score time) to a file, and +optionally outputs to the console as well. context may be specified +as an engraver for convenience." + (if (ly:translator? context) + (set! context (ly:translator-context context))) + (let* ((p (open-file (filename-from-staffname context) "a"))) + ;; for regtest comparison + (if (defined? 'EVENT_LISTENER_CONSOLE_OUTPUT) + (ly:progress + (make-output-string-line context values))) + (display + (make-output-string-line context values) + p) + (close p))) + + +%%% main functions + +#(define (format-rest engraver event) + (print-line engraver + "rest" + (ly:duration->string + (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 + (ly:event-property event 'origin)))) + (print-line engraver + "note" + ;; 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 + (ly:format "point-and-click ~a ~a" + (caddr origin) + (cadr origin))))) + +#(define (format-tempo engraver event) + (print-line engraver + "tempo" + ; get length of quarter notes, in seconds + (/ (ly:event-property event 'metronome-count) + (format-moment (ly:duration-length (ly:event-property + event + 'tempo-unit)))))) + + +#(define (format-breathe engraver event) + (print-line engraver + "breathe")) + +#(define (format-glissando engraver event) + (print-line engraver + "gliss")) + +#(define (format-tie engraver event) + (print-line engraver + "tie")) + +#(define (format-articulation engraver event) + (print-line engraver + "script" + (ly:event-property event 'articulation-type))) + +#(define (format-text engraver event) + (print-line engraver + "text" + (ly:event-property event 'text))) + +#(define (format-slur engraver event) + (print-line engraver + "slur" + (ly:event-property event 'span-direction))) + +#(define (format-dynamic engraver event) + (print-line engraver + "dynamic" + (ly:event-property event 'text))) + +#(define (format-cresc engraver event) + (print-line engraver + "cresc" + (ly:event-property event 'span-direction))) + +#(define (format-decresc engraver event) + (print-line engraver + "decresc" + (ly:event-property event 'span-direction))) + +#(define (format-textspan engraver event) + (let* ((context (ly:translator-context engraver)) + (moment (ly:context-current-moment context)) + (spanner-props (ly:context-property context 'TextSpanner)) + (details (chain-assoc-get 'bound-details spanner-props)) + (left-props (assoc-get 'left details '())) + (left-text (assoc-get 'text left-props '()))) + (print-line engraver + "set_string" + (ly:event-property event 'span-direction) + left-text))) + + +%%%% The actual engraver definition: We just install some listeners so we +%%%% are notified about all notes and rests. We don't create any grobs or +%%%% change any settings. + +\layout { + \context { + \Voice + \consists #(make-engraver + (listeners + (tempo-change-event . format-tempo) + (rest-event . format-rest) + (note-event . format-note) + (articulation-event . format-articulation) + (text-script-event . format-text) + (slur-event . format-slur) + (breathing-event . format-breathe) + (dynamic-event . format-dynamic) + (crescendo-event . format-cresc) + (decrescendo-event . format-decresc) + (text-span-event . format-textspan) + (glissando-event . format-glissando) + (tie-event . format-tie))) + } +} diff --git a/ly/festival.ly b/ly/festival.ly index cbe88d67c8..8363525e9a 100644 --- a/ly/festival.ly +++ b/ly/festival.ly @@ -17,19 +17,22 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.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) diff --git a/ly/generate-documentation.ly b/ly/generate-documentation.ly index 3c4baf305a..f5490425bc 100644 --- a/ly/generate-documentation.ly +++ b/ly/generate-documentation.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" % % Running LilyPond on this file generates the documentation diff --git a/ly/generate-interface-doc-init.ly b/ly/generate-interface-doc-init.ly index 9e6183a48c..64dc061d85 100644 --- a/ly/generate-interface-doc-init.ly +++ b/ly/generate-interface-doc-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" % % Running LilyPond on this file generates the short interface doc diff --git a/ly/grace-init.ly b/ly/grace-init.ly index b9729f3e93..abbfd8a3d9 100644 --- a/ly/grace-init.ly +++ b/ly/grace-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" startGraceSlur = #(make-music 'SlurEvent 'span-direction START 'spanner-id "grace") stopGraceSlur = #(make-music 'SlurEvent 'span-direction STOP 'spanner-id "grace") @@ -7,24 +7,32 @@ stopGraceSlur = #(make-music 'SlurEvent 'span-direction STOP 'spanner-id "grace" startGraceMusic = { } -stopGraceMusic = { +stopGraceMusic = { } startAppoggiaturaMusic = - { - s1*0\startGraceSlur +{ + <>\startGraceSlur } -stopAppoggiaturaMusic = { - s1*0\stopGraceSlur +stopAppoggiaturaMusic = { + <>\stopGraceSlur } startAcciaccaturaMusic = { - s1*0\startGraceSlur - \override Stem #'stroke-style = #"grace" + <>\startGraceSlur + \override Flag #'stroke-style = #"grace" } stopAcciaccaturaMusic = { - \revert Stem #'stroke-style - s1*0\stopGraceSlur + \revert Flag #'stroke-style + <>\stopGraceSlur +} + +startSlashedGraceMusic = { + \override Flag #'stroke-style = #"grace" +} + +stopSlashedGraceMusic = { + \revert Flag #'stroke-style } diff --git a/ly/graphviz-init.ly b/ly/graphviz-init.ly index 2670858ffb..cc9229f8f5 100644 --- a/ly/graphviz-init.ly +++ b/ly/graphviz-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" #(use-modules (scm graphviz)) @@ -19,8 +19,8 @@ #(define (whitelist-symbol sym) (set! sym-whitelist (cons sym sym-whitelist))) -#(define (whitelist-grob str) - (set! grob-whitelist (cons str grob-whitelist))) +#(define (whitelist-grob sym) + (set! grob-whitelist (cons sym grob-whitelist))) #(define graph (make-empty-graph (ly:parser-output-name parser))) @@ -57,23 +57,23 @@ (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) diff --git a/ly/gregorian.ly b/ly/gregorian.ly index 0b8e0680be..a88f3f762c 100644 --- a/ly/gregorian.ly +++ b/ly/gregorian.ly @@ -3,7 +3,7 @@ $Id$ %} -\version "2.14.0" +\version "2.16.0" % % Declare memorable shortcuts for special unicode characters @@ -22,28 +22,18 @@ iij = \lyricmode { iij } % Given some music that represents lyrics, add a prefix to the first % lyric event. % -% TODO: Robustify this function. For example, this function works -% correctly for "\versus { some lyrics }", but it barfs with a wrong type -% argument error for e.g. "\versus some lyrics". -% #(define (add-prefix-to-lyrics prefix music) - (make-music - 'SequentialMusic - 'elements (append - (cons - (let* ((elems (car (ly:music-property music 'elements))) - (props (ly:music-mutable-properties elems)) - (events (filter (lambda (x) - (equal? (car x) 'elements)) - props)) - (first-evt (cadar events)) - (first-syllable (ly:prob-property first-evt 'text)) - (first-duration (ly:prob-property first-evt 'duration))) - (make-music - 'LyricEvent - 'duration first-duration - 'text (string-append prefix first-syllable))) - (cdr (ly:music-property music 'elements)))))) + (let ((found? #f)) + (map-some-music + (lambda (m) + (if found? m + (and (music-is-of-type? m 'lyric-event) + (begin + (set! (ly:music-property m 'text) + (string-append prefix (ly:music-property m 'text))) + (set! found? #t) + m)))) + music))) % Add unicode 2123 (versicle) as prefix to lyrics. versus = @@ -301,6 +291,7 @@ neumeDemoLayout = \layout { \consists Vaticana_ligature_engraver \override NoteHead #'style = #'vaticana.punctum \override Stem #'transparent = ##t + \override Flag #'transparent = ##t } } diff --git a/ly/guile-debugger.ly b/ly/guile-debugger.ly index 9ed75311ed..b05df7dd17 100644 --- a/ly/guile-debugger.ly +++ b/ly/guile-debugger.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2009--2011 by Ian Hulin +%%%% Copyright (C) 2009--2012 by Ian Hulin %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ %% For more information, see the Contributor's Guide. -\version "2.14.0" +\version "2.16.0" % define lilypond-module as a variable in the guile-user module and set % to the current Scheme module (which will be the lilypond top-level diff --git a/ly/init.ly b/ly/init.ly index c27d8c8409..a8bcc65d11 100644 --- a/ly/init.ly +++ b/ly/init.ly @@ -4,10 +4,45 @@ #(if (and #t (defined? 'set-debug-cell-accesses!)) (set-debug-cell-accesses! 5000)) -\version "2.14.0" +\version "2.16.0" -\include "declarations-init.ly" +#(if (not (ly:undead? lilypond-declarations)) + (ly:parser-include-string parser + "\\include \"declarations-init.ly\"")) +%% We need to save the variables of the current module along with +%% their values: functions defined in the module might refer to the +%% variables + +#(if lilypond-declarations + (if (ly:undead? lilypond-declarations) + (begin + (for-each + (lambda (p) + (let ((var (cadr p)) + (val (cddr p))) + (variable-set! var + (if (ly:output-def? val) + (ly:output-def-clone val) + val)) + (module-add! (current-module) (car p) var))) + (ly:get-undead lilypond-declarations)) + (note-names-language parser default-language)) + (let ((decl '())) + (module-for-each + (lambda (s v) + (let ((val (variable-ref v))) + (if (not (ly:lily-parser? val)) + (set! decl + (cons + (cons* + s v + (if (ly:output-def? val) + (ly:output-def-clone val) + val)) + decl))))) + (current-module)) + (set! lilypond-declarations (ly:make-undead decl))))) #(ly:set-option 'old-relative #f) #(define toplevel-scores (list)) @@ -19,13 +54,16 @@ #(define expect-error #f) #(define output-empty-score-list #f) #(define output-suffix #f) -#(define book-filename #f) -#(define book-output-suffix #f) +#(hash-clear! default-fret-table) +#(hash-clear! chord-shape-table) +#(hash-clear! musicQuotes) + #(use-modules (scm clip-region)) +#(use-modules (srfi srfi-1)) -#(if (ly:get-option 'include-settings) +$(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 diff --git a/ly/italiano.ly b/ly/italiano.ly index 2040be404c..e80b1e849e 100644 --- a/ly/italiano.ly +++ b/ly/italiano.ly @@ -1,7 +1,7 @@ %%%% common Italian names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "italiano" diff --git a/ly/lilypond-book-preamble.ly b/ly/lilypond-book-preamble.ly index fe210ca89f..ca130e74a0 100644 --- a/ly/lilypond-book-preamble.ly +++ b/ly/lilypond-book-preamble.ly @@ -1,5 +1,5 @@ -\version "2.14.0" +\version "2.16.0" %% toplevel \book gets output per page, %% everything else gets output per system/title @@ -26,6 +26,7 @@ #(set! output-empty-score-list #t) +#(ly:set-option 'backend 'eps) #(ly:set-option (quote no-point-and-click)) #(define inside-lilypond-book #t) #(define version-seen #t) diff --git a/ly/makam.ly b/ly/makam.ly index 37b66298bd..1209bc130d 100644 --- a/ly/makam.ly +++ b/ly/makam.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" %{ diff --git a/ly/midi-init.ly b/ly/midi-init.ly index 0dcaa2ce38..72aa43f23e 100644 --- a/ly/midi-init.ly +++ b/ly/midi-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys +%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys %%%% Jan Nieuwenhuizen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" \midi { \include "performer-init.ly" } diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index a83b252428..e1dcd992e0 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -2,7 +2,7 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2003--2011 Han-Wen Nienhuys +%%%% Copyright (C) 2003--2012 Han-Wen Nienhuys %%%% Jan Nieuwenhuizen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify @@ -18,7 +18,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -36,20 +36,18 @@ acciaccatura = (_i "Create an acciaccatura from the following music expression")) %% keep these two together -"instrument-definitions" = #'() +instrument-definitions = #'() addInstrumentDefinition = -#(define-music-function +#(define-void-function (parser location name lst) (string? list?) (_i "Create instrument @var{name} with properties @var{list}.") - (set! instrument-definitions (acons name lst instrument-definitions)) - (make-music 'SequentialMusic 'void #t)) + (set! instrument-definitions (acons name lst instrument-definitions))) addQuote = -#(define-music-function (parser location name music) (string? ly:music?) +#(define-void-function (parser location name music) (string? ly:music?) (_i "Define @var{music} as a quotable music expression named @var{name}") - (add-quotable parser name music) - (make-music 'SequentialMusic 'void #t)) + (add-quotable parser name music)) %% keep these two together afterGraceFraction = #(cons 6 8) @@ -87,6 +85,50 @@ markups), or inside a score.") 'elements (list (make-music 'PageTurnEvent 'break-permission 'allow)))) +alterBroken = +#(define-music-function (parser location name property arg) + (string? scheme? list?) + (_i "Override @var{property} for pieces of broken spanner @var{name} with +values @var{arg}.") + (let* ((name (string-delete name char-set:blank)) ; remove any spaces + (name-components (string-split name #\.)) + (context-name "Bottom") + (grob-name #f)) + + (if (> 2 (length name-components)) + (set! grob-name (car name-components)) + (begin + (set! grob-name (cadr name-components)) + (set! context-name (car name-components)))) + + ;; only apply override if grob is a spanner + (let ((description + (assoc-get (string->symbol grob-name) all-grob-descriptions))) + (if (and description + (member 'spanner-interface + (assoc-get 'interfaces + (assoc-get 'meta description)))) + #{ + \override $context-name . $grob-name $property = + #(value-for-spanner-piece arg) + #} + (begin + (ly:input-warning location (_ "not a spanner name, `~a'") grob-name) + (make-music 'SequentialMusic 'void #t)))))) + +appendToTag = +#(define-music-function (parser location tag more music) + (symbol? ly:music? ly:music?) + (_i "Append @var{more} to the @code{elements} of all music +expressions in @var{music} that are tagged with @var{tag}.") + (music-map (lambda (m) + (if (memq tag (ly:music-property m 'tags)) + (set! (ly:music-property m 'elements) + (append (ly:music-property m 'elements) + (list more)))) + m) + music)) + applyContext = #(define-music-function (parser location proc) (procedure?) (_i "Modify context properties with Scheme procedure @var{proc}.") @@ -113,23 +155,13 @@ appoggiatura = assertBeamQuant = #(define-music-function (parser location l r) (pair? pair?) (_i "Testing function: check whether the beam quants @var{l} and @var{r} are correct") - (make-grob-property-override 'Beam 'positions - (ly:make-simple-closure - (ly:make-simple-closure - (append - (list chain-grob-member-functions `(,cons 0 0)) - (check-quant-callbacks l r)))))) + (make-grob-property-override 'Beam 'positions (check-quant-callbacks l r))) % for regression testing purposes. assertBeamSlope = #(define-music-function (parser location comp) (procedure?) (_i "Testing function: check whether the slope of the beam is the same as @code{comp}") - (make-grob-property-override 'Beam 'positions - (ly:make-simple-closure - (ly:make-simple-closure - (append - (list chain-grob-member-functions `(,cons 0 0)) - (check-slope-callbacks comp)))))) + (make-grob-property-override 'Beam 'positions (check-slope-callbacks comp))) autochange = #(define-music-function (parser location music) (ly:music?) @@ -172,28 +204,26 @@ barNumberCheck = (lambda (c) (let ((cbn (ly:context-property c 'currentBarNumber))) (if (and (number? cbn) (not (= cbn n))) - (ly:input-message location + (ly:input-warning location "Barcheck failed got ~a expect ~a" cbn n)))))) bendAfter = -#(define-music-function (parser location delta) (real?) +#(define-event-function (parser location delta) (real?) (_i "Create a fall or doit of pitch interval @var{delta}.") (make-music 'BendAfterEvent 'delta-step delta)) bookOutputName = -#(define-music-function (parser location newfilename) (string?) +#(define-void-function (parser location newfilename) (string?) (_i "Direct output for the current book block to @var{newfilename}.") - (set! book-filename newfilename) - (make-music 'SequentialMusic 'void #t)) + (set! (paper-variable parser #f 'output-filename) newfilename)) bookOutputSuffix = -#(define-music-function (parser location newsuffix) (string?) +#(define-void-function (parser location newsuffix) (string?) (_i "Set the output filename suffix for the current book block to @var{newsuffix}.") - (set! book-output-suffix newsuffix) - (make-music 'SequentialMusic 'void #t)) + (set! (paper-variable parser #f 'output-suffix) newsuffix)) %% \breathe is defined as a music function rather than an event identifier to %% ensure it gets useful input location information: as an event identifier, @@ -204,72 +234,6 @@ breathe = (_i "Insert a breath mark.") (make-music 'BreathingEvent)) -%% Make slide indication for chords -chordGlissando = -#(define-music-function (parser location mus1 mus2) (ly:music? ly:music?) - "Make a glissando between the notes of triads @code{mus1} and @code{mus2}." - - (define (add-glissando musChord) - (let ((els (ly:music-property musChord 'elements))) - (ly:music-set-property! musChord 'elements (append els (list (make-music 'GlissandoEvent)))) - musChord)) - - (define (get-notes musicChord) - (filter (lambda(x) (eq? (ly:music-property x 'name) 'NoteEvent)) - (ly:music-property musicChord 'elements))) - - (define (select-note musChord index) - (let* ((notes (get-notes musChord)) - (non-notes (filter (lambda (x) - (not (eq? (ly:music-property x 'name) - 'NoteEvent))) - (ly:music-property musChord 'elements))) - (selected-note (list-ref notes index)) - (new-els (cons selected-note non-notes)) - (new-mus (ly:music-deep-copy musChord))) - (ly:music-set-property! new-mus 'elements new-els) - new-mus)) - - (define (add-glissando-line mus1 mus2 index) - (context-spec-music - (context-spec-music - (make-sequential-music - (list - hideNotes - (make-grob-property-set 'StringNumber 'transparent #t) - (make-grob-property-set 'NoteColumn 'ignore-collision #t) - ;; obviously, this isn't equivalent to \once, - ;; so could be changed if required - (make-grob-property-set 'Glissando 'thickness 2) - (make-grob-property-set 'DynamicText 'transparent #t) - (make-grob-property-set 'DynamicLineSpanner 'transparent #t) - (make-grob-property-set 'DynamicTextSpanner 'transparent #t) - (make-grob-property-set 'TextScript 'stencil #f) - (add-glissando (select-note mus1 index)) - (select-note mus2 index))) - 'Bottom (symbol->string (gensym))) - 'Staff)) - - (let* ((notes1 (get-notes mus1)) - (notes2 (get-notes mus2)) - (note-count (min (length notes1) (length notes2)))) - - #{ - \once \override Glissando #'minimum-length = #4 - \once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods - << - { - $(add-glissando mus1) - $mus2 - } - $(make-simultaneous-music - (map (lambda (x) - (add-glissando-line mus1 mus2 x)) - (iota note-count))) - >> - \revert NoteColumn #'ignore-collision - #})) - clef = #(define-music-function (parser location type) (string?) (_i "Set the current clef to @var{type}.") @@ -294,7 +258,7 @@ as @code{\\compoundMeter #'((3 2 8))} or shorter (ly:moment-main-denominator mlen)))) #{ \once \override Staff.TimeSignature #'stencil = #(lambda (grob) - (grob-interpret-markup grob (format-compound-time $args))) + (grob-interpret-markup grob (format-compound-time args))) \set Timing.timeSignatureFraction = $timesig \set Timing.baseMoment = $beat \set Timing.beatStructure = $beatGrouping @@ -302,11 +266,22 @@ as @code{\\compoundMeter #'((3 2 8))} or shorter \set Timing.measureLength = $mlen #} )) +crossStaff = +#(define-music-function (parser location notes) (ly:music?) + (_i "Create cross-staff stems") + #{ + \override Stem #'cross-staff = #cross-staff-connect + \override Flag #'style = #'no-flag + $notes + \revert Stem #'cross-staff + \revert Flag #'style +#}) cueClef = #(define-music-function (parser location type) (string?) (_i "Set the current cue clef to @var{type}.") (make-cue-clef-set type)) + cueClefUnset = #(define-music-function (parser location) () (_i "Unset the current cue clef.") @@ -360,29 +335,29 @@ endSpanners = #(define-music-function (parser location music) (ly:music?) (_i "Terminate the next spanner prematurely after exactly one note without the need of a specific end spanner.") - (if (eq? (ly:music-property music 'name) 'EventChord) - (let* ((elts (ly:music-property music 'elements)) - (start-span-evs (filter (lambda (ev) - (and (music-has-type ev 'span-event) - (equal? (ly:music-property ev 'span-direction) - START))) - elts)) - (stop-span-evs - (map (lambda (m) - (let ((c (music-clone m))) - (set! (ly:music-property c 'span-direction) STOP) - c)) - start-span-evs)) - (end-ev-chord (make-music 'EventChord - 'elements stop-span-evs)) - (total (make-music 'SequentialMusic - 'elements (list music - end-ev-chord)))) - total) - - (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music)))) - - + (let* ((start-span-evs (filter (lambda (ev) + (equal? (ly:music-property ev 'span-direction) + START)) + (extract-typed-music music 'span-event))) + (stop-span-evs + (map (lambda (m) + (let ((c (music-clone m))) + (set! (ly:music-property c 'span-direction) STOP) + c)) + start-span-evs)) + (end-ev-chord (make-music 'EventChord + 'elements stop-span-evs)) + (total (make-music 'SequentialMusic + 'elements (list music + end-ev-chord)))) + total)) + +eventChords = +#(define-music-function (parser location music) (ly:music?) + (_i "Compatibility function wrapping @code{EventChord} around +isolated rhythmic events occuring since version 2.15.28, after +expanding repeat chords @samp{q}.") + (event-chord-wrap! music parser)) featherDurations= #(define-music-function (parser location factor argument) (ly:moment? ly:music?) @@ -390,76 +365,128 @@ featherDurations= (let ((orig-duration (ly:music-length argument)) (multiplier (ly:make-moment 1 1))) - (music-map + (for-each (lambda (mus) - (if (and (eq? (ly:music-property mus 'name) 'EventChord) - (< 0 (ly:moment-main-denominator (ly:music-length mus)))) + (if (< 0 (ly:moment-main-denominator (ly:music-length mus))) (begin (ly:music-compress mus multiplier) - (set! multiplier (ly:moment-mul factor multiplier)))) - mus) - argument) - + (set! multiplier (ly:moment-mul factor multiplier))))) + (extract-named-music argument '(EventChord NoteEvent RestEvent SkipEvent))) (ly:music-compress argument (ly:moment-div orig-duration (ly:music-length argument))) argument)) -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})") - (make-music 'FootnoteEvent - 'symbol grob-name - 'X-offset (car offset) - 'Y-offset (cdr offset) - 'text text - 'footnote-text 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})") - (make-music 'FootnoteEvent +#(define-music-function (parser location mark offset grob-name footnote music) + ((markup?) number-pair? (symbol?) markup? (ly:music?)) + (_i "Make the markup @var{footnote} a footnote on @var{music}. The +footnote is marked with a markup @var{mark} moved by @var{offset} with +respect to the marked music. + +If @var{mark} is not given or specified as @var{\\default}, it is +replaced by an automatically generated sequence number. If a symbol +@var{grob-name} is specified, then grobs of that type will be marked +if they have @var{music} as their ultimate cause; by default all grobs +having @var{music} as their @emph{direct} cause will be marked, +similar to the way @code{\\tweak} works. + +If @var{music} is given as @code{\\default}, a footnote event +affecting @emph{all} grobs matching @var{grob-name} at a given time +step is generated. This may be required for creating footnotes on +time signatures, clefs, and other items not cooperating with +@code{\\tweak}. + +Like with @code{\\tweak}, if you use a footnote on a following +post-event, the @code{\\footnote} command itself needs to be attached +to the preceding note or rest as a post-event with @code{-}.") + (let ((mus (make-music + 'FootnoteEvent 'X-offset (car offset) 'Y-offset (cdr offset) - 'text text - 'footnote-text footnote)) + 'automatically-numbered (not mark) + 'text (or mark (make-null-markup)) + 'footnote-text footnote + 'symbol (or grob-name '())))) + (cond (music + (set! (ly:music-property music 'tweaks) + (acons (if grob-name + (cons grob-name 'footnote-music) + 'footnote-music) + mus + (ly:music-property music 'tweaks))) + music) + (grob-name mus) + (else + (ly:input-warning location + (_ "\\footnote requires music or grob-name")) + (make-music 'Music))))) grace = #(def-grace-function startGraceMusic stopGraceMusic (_i "Insert @var{music} as grace notes.")) +grobdescriptions = +#(define-scheme-function (parser location descriptions) (list?) + (_i "Create a context modification from @var{descriptions}, a list +in the format of @code{all-grob-descriptions}.") + (ly:make-context-mod + (map (lambda (p) + (list 'assign (car p) (list (cdr p)))) + descriptions))) + harmonicByFret = #(define-music-function (parser location fret music) (number? ly:music?) - (let* ((fret (number->string fret)) - (pitch (fret->pitch fret))) - (make-sequential-music - (list - #{ - \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label $fret) - #} - (make-harmonic - (calc-harmonic-pitch pitch music)) - #{ - \revert TabNoteHead #'stencil - #})))) + (_i "Convert @var{music} into mixed harmonics; the resulting notes resemble +harmonics played on a fretted instrument by touching the strings at @var{fret}.") + #{ + \set harmonicDots = ##t + \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label (number->string fret)) + \override NoteHead #'Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height + (lambda (grob start end) + (ly:grob::stencil-height grob))) + \override NoteHead #'stencil = #(lambda (grob) (ly:grob-set-property! grob 'style 'harmonic-mixed) + (ly:note-head::print grob)) + $(make-harmonic + (calc-harmonic-pitch (fret->pitch (number->string fret)) music)) + \unset harmonicDots + \revert TabNoteHead #'stencil + \revert NoteHead #'Y-extent + \revert NoteHead #'stencil + #}) harmonicByRatio = #(define-music-function (parser location ratio music) (number? ly:music?) - (let ((pitch (ratio->pitch ratio)) - (fret (ratio->fret ratio))) - (make-sequential-music - (list - #{ - \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label $fret) - #} - (make-harmonic - (calc-harmonic-pitch pitch music)) - #{ - \revert TabNoteHead #'stencil - #})))) + (_i "Convert @var{music} into mixed harmonics; the resulting notes resemble +harmonics played on a fretted instrument by touching the strings at the point +given through @var{ratio}.") + #{ + \set harmonicDots = ##t + \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label (ratio->fret ratio)) + \override NoteHead #'Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height + (lambda (grob start end) + (ly:grob::stencil-height grob))) + \override NoteHead #'stencil = #(lambda (grob) (ly:grob-set-property! grob 'style 'harmonic-mixed) + (ly:note-head::print grob)) + $(make-harmonic + (calc-harmonic-pitch (ratio->pitch ratio) music)) + \unset harmonicDots + \revert TabNoteHead #'stencil + \revert NoteHead #'Y-extent + \revert NoteHead #'stencil + #}) + +inStaffSegno = +#(define-music-function (parser location) () + (_i "Put the segno variant 'varsegno' at this position into the staff, +compatible with the repeat command.") + (make-music 'ApplyContext + 'procedure + (lambda (ctx) + (let ((score-ctx (ly:context-find ctx 'Score))) + (if (ly:context? score-ctx) + (let ((old-rc (ly:context-property score-ctx 'repeatCommands '()))) + (if (eq? (memq 'segno-display old-rc) #f) + (ly:context-set-property! score-ctx 'repeatCommands (cons 'segno-display old-rc))))))))) instrumentSwitch = #(define-music-function @@ -470,7 +497,7 @@ instrumentSwitch = (instrument-def (if handle (cdr handle) '()))) (if (not handle) - (ly:input-message location "No such instrument: ~a" name)) + (ly:input-warning location "No such instrument: ~a" name)) (context-spec-music (make-music 'SimultaneousMusic 'elements @@ -495,6 +522,23 @@ keepWithTag = res))) music)) +key = +#(define-music-function (parser location tonic pitch-alist) + ((ly:pitch? '()) (list? '())) + (_i "Set key to @var{tonic} and scale @var{pitch-alist}. +If both are null, just generate @code{KeyChangeEvent}.") + (cond ((null? tonic) (make-music 'KeyChangeEvent)) + ((null? pitch-alist) + (ly:parser-error parser (_ "second argument must be pitch list") + location) + (make-music 'SequentialMusic 'void #t)) + (else + (ly:music-transpose + (make-music 'KeyChangeEvent + 'tonic (ly:make-pitch 0 0 0) + 'pitch-alist pitch-alist) + tonic)))) + killCues = #(define-music-function (parser location music) (ly:music?) (_i "Remove cue notes from @var{music}.") @@ -519,27 +563,24 @@ label = language = -#(define-music-function (parser location language) (string?) +#(define-void-function (parser location language) (string?) (_i "Set note names for language @var{language}.") - (note-names-language parser language) - (make-music 'Music 'void #t)) + (note-names-language parser language)) languageSaveAndChange = -#(define-music-function (parser location language) (string?) +#(define-void-function (parser location language) (string?) (_i "Store the previous pitchnames alist, and set a new one.") (set! previous-pitchnames pitchnames) - (note-names-language parser language) - (make-music 'Music 'void #t)) + (note-names-language parser language)) languageRestore = -#(define-music-function (parser location) () +#(define-void-function (parser location) () (_i "Restore a previously-saved pitchnames alist.") (if previous-pitchnames (begin (set! pitchnames previous-pitchnames) (ly:parser-set-note-names parser pitchnames)) - (ly:warning (_ "No other language was defined previously. Ignoring."))) - (make-music 'Music 'void #t)) + (ly:input-warning location (_ "No other language was defined previously. Ignoring.")))) makeClusters = @@ -549,7 +590,7 @@ makeClusters = modalInversion = #(define-music-function (parser location around to scale music) - (ly:music? ly:music? ly:music? ly:music?) + (ly:pitch? ly:pitch? ly:music? ly:music?) (_i "Invert @var{music} about @var{around} using @var{scale} and transpose from @var{around} to @var{to}.") (let ((inverter (make-modal-inverter around to scale))) @@ -558,7 +599,7 @@ transpose from @var{around} to @var{to}.") modalTranspose = #(define-music-function (parser location from to scale music) - (ly:music? ly:music? ly:music? ly:music?) + (ly:pitch? ly:pitch? ly:music? ly:music?) (_i "Transpose @var{music} from pitch @var{from} to pitch @var{to} using @var{scale}.") (let ((transposer (make-modal-transposer from to scale))) @@ -567,11 +608,27 @@ using @var{scale}.") inversion = #(define-music-function - (parser location around to music) (ly:music? ly:music? ly:music?) + (parser location around to music) (ly:pitch? ly:pitch? ly:music?) (_i "Invert @var{music} about @var{around} and transpose from @var{around} to @var{to}.") (music-invert around to music)) +mark = +#(define-music-function + (parser location label) ((scheme? '())) + "Make the music for the \\mark command." + (let* ((set (and (integer? label) + (context-spec-music (make-property-set 'rehearsalMark label) + 'Score))) + (ev (make-music 'MarkEvent + 'origin location))) + + (if set + (make-sequential-music (list set ev)) + (begin + (set! (ly:music-property ev 'label) label) + ev)))) + musicMap = #(define-music-function (parser location proc mus) (procedure? ly:music?) (_i "Apply @var{proc} to @var{mus} and all of the music it contains.") @@ -602,10 +659,22 @@ markups), or inside a score.") octaveCheck = -#(define-music-function (parser location pitch-note) (ly:music?) +#(define-music-function (parser location pitch) (ly:pitch?) (_i "Octave check.") (make-music 'RelativeOctaveCheck - 'pitch (pitch-of-note pitch-note))) + 'pitch pitch)) + +once = +#(define-music-function (parser location music) (ly:music?) + (_i "Set @code{once} to @code{#t} on all layout instruction events in @var{music}.") + (music-map + (lambda (m) + (cond ((music-is-of-type? m 'layout-instruction-event) + (set! (ly:music-property m 'once) #t)) + ((ly:duration? (ly:music-property m 'duration)) + (ly:music-warning m (_ "Cannot apply \\once to timed music")))) + m) + music)) ottava = #(define-music-function (parser location octave) (integer?) @@ -687,7 +756,7 @@ pageTurn = 'break-permission 'force)))) parallelMusic = -#(define-music-function (parser location voice-ids music) (list? ly:music?) +#(define-void-function (parser location voice-ids music) (list? ly:music?) (_i "Define parallel music sequences, separated by '|' (bar check signs), and assign them to the identifiers provided in @var{voice-ids}. @@ -710,7 +779,9 @@ Example: ") (let* ((voices (apply circular-list (make-list (length voice-ids) (list)))) (current-voices voices) - (current-sequence (list))) + (current-sequence (list)) + (original music) + (wrapper #f)) ;; ;; utilities (define (push-music m) @@ -736,12 +807,28 @@ Example: (let ((origins (remove not (map music-origin (ly:music-property music 'elements))))) (and (not (null? origins)) (car origins))))))) + (while (music-is-of-type? music 'music-wrapper-music) + (set! wrapper music) + (set! music (ly:music-property wrapper 'element))) + (if wrapper + (set! (ly:music-property wrapper 'element) + (make-music 'SequentialMusic + 'origin location)) + (set! original + (make-music 'SequentialMusic + 'origin location))) ;; ;; first, split the music and fill in voices - (map-in-order (lambda (m) - (push-music m) - (if (bar-check? m) (change-voice))) - (ly:music-property music 'elements)) + ;; We flatten direct layers of SequentialMusic since they are + ;; pretty much impossible to avoid when writing music functions. + (let rec ((music music)) + (for-each (lambda (m) + (if (eq? (ly:music-property m 'name) 'SequentialMusic) + (rec m) + (begin + (push-music m) + (if (bar-check? m) (change-voice))))) + (ly:music-property music 'elements))) (if (not (null? current-sequence)) (change-voice)) ;; un-circularize `voices' and reorder the voices (set! voices (map-in-order (lambda (dummy seqs) @@ -762,20 +849,21 @@ Example: (let ((moment-reference (ly:music-length (car seqs)))) (for-each (lambda (seq moment) (if (not (equal? moment moment-reference)) - (ly:music-message seq + (ly:music-warning seq "Bars in parallel music don't have the same length"))) seqs (map-in-order ly:music-length seqs)))) voices) ;; ;; bind voice identifiers to the voices - (map (lambda (voice-id voice) + (for-each (lambda (voice-id voice) (ly:parser-define! parser voice-id - (make-music 'SequentialMusic - 'origin location - 'elements voice))) - voice-ids voices)) - ;; Return an empty sequence. This function is actually a "void" function. - (make-music 'SequentialMusic 'void #t)) + (let ((v (ly:music-deep-copy original))) + (set! (ly:music-property + (car (extract-named-music + v 'SequentialMusic)) + 'elements) voice) + v))) + voice-ids voices))) parenthesize = #(define-music-function (parser loc arg) (ly:music?) @@ -784,7 +872,7 @@ parenthesize = (if (memq 'event-chord (ly:music-property arg 'types)) ;; arg is an EventChord -> set the parenthesize property ;; on all child notes and rests - (map + (for-each (lambda (ev) (if (or (memq 'note-event (ly:music-property ev 'types)) (memq 'rest-event (ly:music-property ev 'types))) @@ -799,7 +887,21 @@ partcombine = (_i "Take the music in @var{part1} and @var{part2} and typeset so that they share a staff.") (make-part-combine-music parser - (list part1 part2))) + (list part1 part2) #f)) + +partcombineUp = +#(define-music-function (parser location part1 part2) (ly:music? ly:music?) + (_i "Take the music in @var{part1} and @var{part2} and typeset so +that they share a staff with stems directed upward.") + (make-part-combine-music parser + (list part1 part2) UP)) + +partcombineDown = +#(define-music-function (parser location part1 part2) (ly:music? ly:music?) + (_i "Take the music in @var{part1} and @var{part2} and typeset so +that they share a staff with stems directed downward.") + (make-part-combine-music parser + (list part1 part2) DOWN)) partcombineForce = #(define-music-function (location parser type once) (symbol-or-boolean? boolean?) @@ -821,6 +923,18 @@ partcombineSoloIIOnce = \partcombineForce #'solo2 ##t partcombineAutomatic = \partcombineForce ##f ##f partcombineAutomaticOnce = \partcombineForce ##f ##t +partial = +#(define-music-function (parser location dur) (ly:duration?) + (_i "Make a partial measure.") + + ;; We use `descend-to-context' here instead of `context-spec-music' to + ;; ensure \partial still works if the Timing_translator is moved + (descend-to-context + (context-spec-music (make-music 'PartialSet + 'origin location + 'partial-duration dur) + 'Timing) + 'Score)) pitchedTrill = #(define-music-function @@ -829,13 +943,9 @@ pitchedTrill = (_i "Print a trill with @var{main-note} as the main note of the trill and print @var{secondary-note} as a stemless note head in parentheses.") (let* ((get-notes (lambda (ev-chord) - (filter - (lambda (m) (eq? 'NoteEvent (ly:music-property m 'name))) - (ly:music-property ev-chord 'elements)))) + (extract-named-music ev-chord 'NoteEvent))) (sec-note-events (get-notes secondary-note)) - (trill-events (filter (lambda (m) (music-has-type m 'trill-span-event)) - (ly:music-property main-note 'elements)))) - + (trill-events (extract-named-music main-note 'TrillSpanEvent))) (if (pair? sec-note-events) (begin (let* ((trill-pitch (ly:music-property (car sec-note-events) 'pitch)) @@ -845,7 +955,7 @@ print @var{secondary-note} as a stemless note head in parentheses.") (for-each (lambda (m) (ly:music-set-property! m 'pitch trill-pitch)) trill-events) (begin - (ly:warning (_ "Second argument of \\pitchedTrill should be single note: ")) + (ly:input-warning location (_ "Second argument of \\pitchedTrill should be single note: ")) (display sec-note-events))) (if (eq? forced #t) @@ -854,6 +964,18 @@ print @var{secondary-note} as a stemless note head in parentheses.") trill-events))))) main-note)) +pushToTag = +#(define-music-function (parser location tag more music) + (symbol? ly:music? ly:music?) + (_i "Add @var{more} to the front of @code{elements} of all music +expressions in @var{music} that are tagged with @var{tag}.") + (music-map (lambda (m) + (if (memq tag (ly:music-property m 'tags)) + (set! (ly:music-property m 'elements) + (cons more (ly:music-property m 'elements)))) + m) + music)) + quoteDuring = #(define-music-function (parser location what main-music) (string? ly:music?) (_i "Indicate a section of music to be quoted. @var{what} indicates the name @@ -864,6 +986,14 @@ usually contains spacers or multi-measure rests.") 'element main-music 'quoted-music-name what)) +relative = +#(define-music-function (parser location pitch music) + ((ly:pitch? (ly:make-pitch 0 0 0)) ly:music?) + (_i "Make @var{music} relative to @var{pitch} (default @code{c'}).") + (ly:make-music-relative! music pitch) + (make-music 'RelativeOctaveMusic + 'element music)) + removeWithTag = #(define-music-function (parser location tag music) (symbol? ly:music?) (_i "Remove elements of @var{music} that are tagged with @var{tag}.") @@ -875,18 +1005,12 @@ removeWithTag = music)) resetRelativeOctave = -#(define-music-function (parser location reference-note) (ly:music?) +#(define-music-function (parser location pitch) (ly:pitch?) (_i "Set the octave inside a \\relative section.") - (let* ((notes (ly:music-property reference-note 'elements)) - (pitch (ly:music-property (car notes) 'pitch))) - - (set! (ly:music-property reference-note 'elements) '()) - (set! (ly:music-property reference-note 'to-relative-callback) - (lambda (music last-pitch) - pitch)) - - reference-note)) + (make-music 'SequentialMusic + 'to-relative-callback + (lambda (music last-pitch) pitch))) retrograde = #(define-music-function (parser location music) @@ -904,36 +1028,130 @@ for time signatures of @var{time-signature}.") (revert-time-signature-setting time-signature)) rightHandFinger = -#(define-music-function (parser location finger) (number-or-string?) +#(define-event-function (parser location finger) (number-or-string?) (_i "Apply @var{finger} as a fingering indication.") - (apply make-music - (append - (list - 'StrokeFingerEvent - 'origin location) - (if (string? finger) - (list 'text finger) - (list 'digit finger))))) - - + (make-music + 'StrokeFingerEvent + 'origin location + (if (string? finger) 'text 'digit) + finger)) scaleDurations = #(define-music-function (parser location fraction music) - (number-pair? ly:music?) + (fraction? ly:music?) (_i "Multiply the duration of events in @var{music} by @var{fraction}.") (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction)))) +settingsFrom = +#(define-scheme-function (parser location ctx music) + ((symbol?) ly:music?) + (_i "Take the layout instruction events from @var{music}, optionally +restricted to those applying to context type @var{ctx}, and return +a context modification duplicating their effect.") + (let ((mods (ly:make-context-mod))) + (define (musicop m) + (if (music-is-of-type? m 'layout-instruction-event) + (ly:add-context-mod + mods + (case (ly:music-property m 'name) + ((PropertySet) + (list 'assign + (ly:music-property m 'symbol) + (ly:music-property m 'value))) + ((PropertyUnset) + (list 'unset + (ly:music-property m 'symbol))) + ((OverrideProperty) + (cons* 'push + (ly:music-property m 'symbol) + (ly:music-property m 'grob-value) + (ly:music-property m 'grob-property-path))) + ((RevertProperty) + (cons* 'pop + (ly:music-property m 'symbol) + (ly:music-property m 'grob-property-path))))) + (case (ly:music-property m 'name) + ((ApplyContext) + (ly:add-context-mod mods + (list 'apply + (ly:music-property m 'procedure)))) + ((ContextSpeccedMusic) + (if (or (not ctx) + (eq? ctx (ly:music-property m 'context-type))) + (musicop (ly:music-property m 'element)))) + (else + (let ((callback (ly:music-property m 'elements-callback))) + (if (procedure? callback) + (for-each musicop (callback m)))))))) + (musicop music) + mods)) + +shape = +#(define-music-function (parser location grob offsets) + (string? list?) + (_i "Offset control-points of @var{grob} by @var{offsets}. The argument +is a list of number pairs or list of such lists. Each element of a pair +represents an offset to one of the coordinates of a control-point.") + (define ((shape-curve offsets) grob) + (let* ((orig (ly:grob-original grob)) + (siblings (if (ly:spanner? grob) + (ly:spanner-broken-into orig) '())) + (total-found (length siblings)) + (function (assoc-get 'control-points + (reverse (ly:grob-basic-properties grob)))) + (coords (function grob))) + + (define (offset-control-points offsets) + (if (null? offsets) + coords + (map + (lambda (x y) (coord-translate x y)) + coords offsets))) + + (define (helper sibs offs) + (if (pair? offs) + (if (eq? (car sibs) grob) + (offset-control-points (car offs)) + (helper (cdr sibs) (cdr offs))) + coords)) + + ;; we work with lists of lists + (if (or (null? offsets) + (not (list? (car offsets)))) + (set! offsets (list offsets))) + + (if (>= total-found 2) + (helper siblings offsets) + (offset-control-points (car offsets))))) + + #{ + \once \override $grob #'control-points = #(shape-curve offsets) + #}) + shiftDurations = #(define-music-function (parser location dur dots arg) (integer? integer? ly:music?) - (_i "Scale @var{arg} up by a factor of @var{2^dur*(2-(1/2)^dots)}.") + (_i "Change the duration of @var{arg} by adding @var{dur} to the +@code{durlog} of @var{arg} and @var{dots} to the @code{dots} of @var{arg}.") (music-map (lambda (x) (shift-one-duration-log x dur dots)) arg)) +skip = +#(define-music-function (parser location dur) (ly:duration?) + (_i "Skip forward by @var{dur}.") + (make-music 'SkipMusic + 'duration dur)) + + +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 @@ -941,7 +1159,7 @@ the `parameters' assoc list.") #{ \overrideProperty #"Score.NonMusicalPaperColumn" #'line-break-system-details - #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters))) + #(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters))) (cons 'system-Y-extent (cdr (assoc 'system-Y-extent parameters)))) #}) @@ -951,14 +1169,6 @@ styledNoteHeads = (_i "Set @var{heads} in @var{music} to @var{style}.") (style-note-heads heads style music)) - - -tabChordRepetition = -#(define-music-function (parser location) () - (_i "Include the string information in a chord repetition.") - (ly:parser-set-repetition-function parser tab-repeat-chord) - (make-music 'SequentialMusic 'void #t)) - tag = #(define-music-function (parser location tag arg) (symbol? ly:music?) @@ -970,13 +1180,41 @@ tag = (ly:music-property arg 'tags))) arg) +time = +#(define-music-function (parser location beat-structure fraction) + ((number-list? '()) fraction?) + (_i "Set @var{fraction} as time signature, with optional +number list @var{beat-structure} before it.") + (make-music 'TimeSignatureMusic + 'numerator (car fraction) + 'denominator (cdr fraction) + 'beat-structure beat-structure)) + +times = +#(define-music-function (parser location fraction music) + (fraction? ly:music?) + (_i "Scale @var{music} in time by @var{fraction}.") + (make-music 'TimeScaledMusic + 'element (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction))) + 'numerator (car fraction) + 'denominator (cdr fraction))) + +transpose = +#(define-music-function + (parser location from to music) + (ly:pitch? ly:pitch? ly:music?) + + (_i "Transpose @var{music} from pitch @var{from} to pitch @var{to}.") + (make-music 'TransposedMusic + 'element (ly:music-transpose music (ly:pitch-diff to from)))) + transposedCueDuring = #(define-music-function - (parser location what dir pitch-note main-music) - (string? ly:dir? ly:music? ly:music?) + (parser location what dir pitch main-music) + (string? ly:dir? ly:pitch? ly:music?) (_i "Insert notes from the part @var{what} into a voice called @code{cue}, -using the transposition defined by @var{pitch-note}. This happens +using the transposition defined by @var{pitch}. This happens simultaneously with @var{main-music}, which is usually a rest. The argument @var{dir} determines whether the cue notes should be notated as a first or second voice.") @@ -987,33 +1225,39 @@ as a first or second voice.") 'quoted-context-id "cue" 'quoted-music-name what 'quoted-voice-direction dir - 'quoted-transposition (pitch-of-note pitch-note))) + 'quoted-transposition pitch)) transposition = -#(define-music-function (parser location pitch-note) (ly:music?) +#(define-music-function (parser location pitch) (ly:pitch?) (_i "Set instrument transposition") (context-spec-music (make-property-set 'instrumentTransposition - (ly:pitch-negate (pitch-of-note pitch-note))) + (ly:pitch-negate pitch)) 'Staff)) tweak = -#(define-music-function (parser location sym val arg) - (symbol? scheme? ly:music?) - (_i "Add @code{sym . val} to the @code{tweaks} property of @var{arg}.") - - (if (equal? (object-property sym 'backend-type?) #f) +#(define-music-function (parser location grob prop value music) + ((string?) symbol? scheme? ly:music?) + (_i "Add a tweak to the following @var{music}. +Layout objects created by @var{music} get their property @var{prop} +set to @var{value}. If @var{grob} is specified, like with +@example +\\tweak Accidental #'color #red cis' +@end example +an indirectly created grob (@samp{Accidental} is caused by +@samp{NoteHead}) can be tweaked; otherwise only directly created grobs +are affected.") + (if (not (object-property prop 'backend-type?)) (begin - (ly:warning (_ "cannot find property type-check for ~a") sym) + (ly:input-warning location (_ "cannot find property type-check for ~a") prop) (ly:warning (_ "doing assignment anyway")))) (set! - (ly:music-property arg 'tweaks) - (acons sym val - (ly:music-property arg 'tweaks))) - arg) - - + (ly:music-property music 'tweaks) + (acons (if grob (cons (string->symbol grob) prop) prop) + value + (ly:music-property music 'tweaks))) + music) unfoldRepeats = #(define-music-function (parser location music) (ly:music?) @@ -1022,7 +1266,11 @@ unfoldRepeats = as @code{\\repeat unfold}.") (unfold-repeats music)) - +void = +#(define-void-function (parser location arg) (scheme?) + (_i "Accept a scheme argument, return a void expression. +Use this if you want to have a scheme expression evaluated +because of its side-effects, but its value ignored.")) withMusicProperty = #(define-music-function (parser location sym val music) diff --git a/ly/nederlands.ly b/ly/nederlands.ly index 5cfe32f90a..7555281ee3 100644 --- a/ly/nederlands.ly +++ b/ly/nederlands.ly @@ -1,7 +1,7 @@ %%%% common Dutch names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys +%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "nederlands" diff --git a/ly/norsk.ly b/ly/norsk.ly index 6ef11cfac8..144ea82b04 100644 --- a/ly/norsk.ly +++ b/ly/norsk.ly @@ -1,7 +1,7 @@ %%%% common Norwegian names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "norsk" diff --git a/ly/paper-defaults-init.ly b/ly/paper-defaults-init.ly index 145fe9a52e..c50681c278 100644 --- a/ly/paper-defaults-init.ly +++ b/ly/paper-defaults-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2004--2011 Han-Wen Nienhuys +%%%% Copyright (C) 2004--2012 Han-Wen Nienhuys %%%% Jan Nieuwenhuizen %%%% Neil Puttock %%%% @@ -17,7 +17,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" \paper { #(set-paper-dimension-variables (current-module)) @@ -106,9 +106,12 @@ %% %% 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-numbering-function = #numbered-footnotes + reset-footnotes-on-new-page = ##t %% %% Page numbering @@ -145,6 +148,9 @@ #(define text-font-defaults `((font-encoding . latin1) (baseline-skip . 3) + (replacement-alist . ,default-string-replacement-alist) (word-space . 0.6))) + \include "text-replacements.ly" + } diff --git a/ly/performer-init.ly b/ly/performer-init.ly index e32f3ff143..fddfbf0918 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys +%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys %%%% Jan Nieuwenhuizen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" %% %% setup for Request->Element conversion. @@ -31,10 +31,45 @@ \consists "Staff_performer" \consists "Key_performer" } + \context { \name Global \accepts Score \description "Hard coded entry point for LilyPond. Cannot be tuned." + EventClasses = #all-event-classes +} + +\context { + \type "Performer_group" + \name KievanStaff + \denies Voice + \accepts KievanVoice + \defaultchild KievanVoice + \alias Staff + \consists "Staff_performer" + \consists "Key_performer" +} + +\context { + \type "Performer_group" + \name VaticanaStaff + \alias Staff + \denies Voice + \accepts VaticanaVoice + \defaultchild VaticanaVoice + \consists "Staff_performer" + \consists "Key_performer" +} + +\context { + \type "Performer_group" + \name MensuralStaff + \denies Voice + \accepts MensuralVoice + \defaultchild MensuralVoice + \alias Staff + \consists "Staff_performer" + \consists "Key_performer" } \context { @@ -63,9 +98,39 @@ } \context { - \Voice + \type "Performer_group" \name VaticanaVoice \alias Voice + \consists "Dynamic_performer" + \consists "Tie_performer" + \consists "Note_performer" + \consists "Beam_performer" + autoBeaming = ##f % needed for consistent melismata with engravers + \consists "Slur_performer" +} + +\context { + \type "Performer_group" + \name KievanVoice + \alias Voice + \consists "Dynamic_performer" + \consists "Tie_performer" + \consists "Note_performer" + \consists "Beam_performer" + autoBeaming = ##f % needed for consistent melismata with engravers + \consists "Slur_performer" +} + +\context { + \type "Performer_group" + \name MensuralVoice + \alias Voice + \consists "Dynamic_performer" + \consists "Tie_performer" + \consists "Note_performer" + \consists "Beam_performer" + autoBeaming = ##f % needed for consistent melismata with engravers + \consists "Slur_performer" } \context { @@ -105,6 +170,7 @@ \context { \Voice \name TabVoice + autoBeaming = ##f % needed for consistent melismata with engravers } \context { @@ -121,21 +187,13 @@ \defaultchild TabVoice } -\context { - \type "Performer_group" - \name "VaticanaStaff" - \alias "Staff" - \denies "Voice" - \accepts "VaticanaVoice" - \defaultchild "VaticanaVoice" -} - \context { \type "Score_performer" \name Score melismaBusyProperties = #default-melisma-properties + autoBeaming = ##t % needed for consistent melismata with engravers instrumentName = #"bright acoustic" midiChannelMapping = #'staff @@ -156,10 +214,29 @@ \accepts FretBoards \accepts Lyrics \accepts VaticanaStaff + \accepts KievanStaff + \accepts MensuralStaff \consists "Time_signature_performer" \consists "Control_track_performer" \consists "Tempo_performer" + + \alias "Timing" + + %% An alias for Timing is established by the Timing_translator in + %% whatever context it is initialized, and the timing variables are + %% then copied from wherever Timing had been previously established. + %% The alias at Score level provides a target for initializing + %% Timing variables in layout definitions before any + %% Timing_translator has been run. + + timeSignatureFraction = 4/4 + +%% These defaults should be the same as the rules established in +%% scm/time-signature-settings.scm for 4/4 time + measureLength = #(ly:make-moment 4 4) + baseMoment = #(ly:make-moment 1 4) + \consists "Timing_translator" \defaultchild "Staff" diff --git a/ly/portugues.ly b/ly/portugues.ly index 1c8de33e85..774119d420 100644 --- a/ly/portugues.ly +++ b/ly/portugues.ly @@ -1,7 +1,7 @@ %%%% common Portuguese names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "portugues" diff --git a/ly/predefined-fretboards-init.ly b/ly/predefined-fretboards-init.ly index 996470a161..71000148b6 100644 --- a/ly/predefined-fretboards-init.ly +++ b/ly/predefined-fretboards-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2008--2011 Carl D. Sorensen +%%%% Copyright (C) 2008--2012 Carl D. Sorensen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" % chord-shape-table is a hash-table of chord shapes % in the form of diagram-descriptions that can be @@ -33,7 +33,7 @@ addChordShape = #(define-music-function (parser location key-symbol tuning shape-definition) (symbol? pair? string-or-pair?) (_i "Add chord shape @var{shape-definition} to the @var{chord-shape-table} -hash with the key @var{(cons key-symbol tuning)}.") +hash with the key @code{(cons @var{key-symbol} @var{tuning})}.") (hash-set! chord-shape-table (cons key-symbol tuning) shape-definition) diff --git a/ly/predefined-guitar-fretboards.ly b/ly/predefined-guitar-fretboards.ly index 241b3cd56c..fbdb0c790b 100644 --- a/ly/predefined-guitar-fretboards.ly +++ b/ly/predefined-guitar-fretboards.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2008--2011 Carl D. Sorensen +%%%% Copyright (C) 2008--2012 Carl D. Sorensen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ %%% Add basic chordshapes -\version "2.14.0" +\version "2.16.0" \addChordShape #'f #guitar-tuning #"1-1-(;3-3;3-4;2-2;1-1;1-1-);" \addChordShape #'f:m #guitar-tuning #"1-1-(;3-3;3-4;1-1;1-1;1-1-);" diff --git a/ly/predefined-guitar-ninth-fretboards.ly b/ly/predefined-guitar-ninth-fretboards.ly index ee3653fc87..3271397648 100644 --- a/ly/predefined-guitar-ninth-fretboards.ly +++ b/ly/predefined-guitar-ninth-fretboards.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2008--2011 by Jonathan Kulp +%%%% Copyright (C) 2008--2012 by Jonathan Kulp %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" % Add ninth chords to predefined fret diagrams for standard guitar tunings diff --git a/ly/predefined-mandolin-fretboards.ly b/ly/predefined-mandolin-fretboards.ly index ac5ebb0d54..1b8cb09578 100644 --- a/ly/predefined-mandolin-fretboards.ly +++ b/ly/predefined-mandolin-fretboards.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2011 Marc Hohl +%%%% Copyright (C) 2011--2012 Marc Hohl %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" %%%% sources: %%%% mandolincafe website (http://www.mandolincafe.com/), diff --git a/ly/predefined-ukulele-fretboards.ly b/ly/predefined-ukulele-fretboards.ly index b4c01c29e7..80f55aca1f 100644 --- a/ly/predefined-ukulele-fretboards.ly +++ b/ly/predefined-ukulele-fretboards.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2009--2011 Matt Corks +%%%% Copyright (C) 2009--2012 Matt Corks %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" %%%% sources: %%%% ukulele hall of fame museum website (http://www.ukulele.org/), diff --git a/ly/property-init.ly b/ly/property-init.ly index 0175bb798f..e36c3c0465 100644 --- a/ly/property-init.ly +++ b/ly/property-init.ly @@ -1,6 +1,6 @@ % property-init.ly -\version "2.14.0" +\version "2.16.0" %% for dashed slurs, phrasing slurs, and ties #(define (make-simple-dash-definition dash-fraction dash-period) @@ -14,6 +14,17 @@ defaultNoteHeads = (revert-head-style '(NoteHead TabNoteHead))) +accidentalStyle = +#(define-music-function + (parser location context style) ((symbol?) string?) + (_i "Set accidental style to @var{style}, a string. If an optional +@var{context} symbol is given, e.g. @code{#'Staff} or @code{#'Voice}, +the settings are applied to that context. Otherwise, the context +defaults to @samp{Staff}, except for piano styles, which use +@samp{GrandStaff} as a context." ) + (if context + (set-accidental-style (string->symbol style) context) + (set-accidental-style (string->symbol style)))) %% arpeggios @@ -233,16 +244,22 @@ hideNotes = { \override NoteHead #'transparent = ##t \override NoteHead #'no-ledgers = ##t \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Beam #'transparent = ##t \override Accidental #'transparent = ##t + \override Rest #'transparent = ##t + \override TabNoteHead #'transparent = ##t } unHideNotes = { \revert Accidental #'transparent \revert Beam #'transparent \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent \revert NoteHead #'no-ledgers \revert Dots #'transparent + \revert Rest #'transparent + \revert TabNoteHead #'transparent } @@ -305,7 +322,7 @@ phrasingSlurDashPattern = #(define-music-function (parser location dash-fraction dash-period) (number? number?) (_i "Set up a custom style of dash pattern for @var{dash-fraction} ratio of -line to space repeated at @var{dash-period} interval.") +line to space repeated at @var{dash-period} interval for phrasing slurs.") #{ \override PhrasingSlur #'dash-definition = $(make-simple-dash-definition dash-fraction dash-period) @@ -341,6 +358,10 @@ back to the lilypond source statement.") (ly:set-option 'point-and-click #f) (make-music 'SequentialMusic 'void #t)) +pointAndClickTypes = +#(define-void-function (parser location types) (list-or-symbol?) + (_i "Set a type or list of types (such as @code{#'note-event}) for which point-and-click info is generated.") + (ly:set-option 'point-and-click types)) %% predefined fretboards @@ -389,6 +410,8 @@ slurNeutral = \revert Slur #'direction slurDashPattern = #(define-music-function (parser location dash-fraction dash-period) (number? number?) + (_i "Set up a custom style of dash pattern for @var{dash-fraction} +ratio of line to space repeated at @var{dash-period} interval for slurs.") #{ \override Slur #'dash-definition = $(make-simple-dash-definition dash-fraction dash-period) @@ -424,12 +447,14 @@ tabFullNotation = { % stems (the half note gets a double stem) \revert TabVoice.Stem #'length \revert TabVoice.Stem #'no-stem-extend - \revert TabVoice.Stem #'flag-style + \revert TabVoice.Flag #'style \revert TabVoice.Stem #'details - \revert TabVoice.Stem #'transparent + \revert TabVoice.Stem #'stencil + \revert TabVoice.Flag #'stencil \override TabVoice.Stem #'stencil = #tabvoice::draw-double-stem-for-half-notes - \set autoBeaming = ##t - \revert NoteColumn #'ignore-collision + \override TabVoice.Stem #'X-extent = #tabvoice::make-double-stem-width-for-half-notes + \set TabVoice.autoBeaming = ##t + \revert TabVoice.NoteColumn #'ignore-collision % beams, dots \revert TabVoice.Beam #'stencil \revert TabVoice.StemTremolo #'stencil @@ -445,15 +470,15 @@ tabFullNotation = { \revert TabVoice.TupletBracket #'stencil \revert TabVoice.TupletNumber #'stencil % dynamic signs - \revert TabVoice.DynamicText #'transparent + \revert TabVoice.DynamicText #'stencil \revert TabVoice.DynamicTextSpanner #'stencil \revert TabVoice.DynamicTextSpanner #'stencil - \revert TabVoice.Hairpin #'transparent + \revert TabVoice.Hairpin #'stencil % rests \revert TabVoice.Rest #'stencil \revert TabVoice.MultiMeasureRest #'stencil - \revert TabVoice.MultiMeasureRestNumber #'transparent - \revert TabVoice.MultiMeasureRestText #'transparent + \revert TabVoice.MultiMeasureRestNumber #'stencil + \revert TabVoice.MultiMeasureRestText #'stencil % markups etc. \revert TabVoice.Glissando #'stencil \revert TabVoice.Script #'stencil @@ -508,6 +533,8 @@ tieNeutral = \revert Tie #'direction tieDashPattern = #(define-music-function (parser location dash-fraction dash-period) (number? number?) + (_i "Set up a custom style of dash pattern for @var{dash-fraction} +ratio of line to space repeated at @var{dash-period} interval for ties.") #{ \override Tie #'dash-definition = $(make-simple-dash-definition dash-fraction dash-period) @@ -544,30 +571,35 @@ voiceOneStyle = { \override NoteHead #'style = #'diamond \override NoteHead #'color = #red \override Stem #'color = #red + \override Flag #'color = #red \override Beam #'color = #red } voiceTwoStyle = { \override NoteHead #'style = #'triangle \override NoteHead #'color = #blue \override Stem #'color = #blue + \override Flag #'color = #blue \override Beam #'color = #blue } voiceThreeStyle = { \override NoteHead #'style = #'xcircle \override NoteHead #'color = #green \override Stem #'color = #green + \override Flag #'color = #green \override Beam #'color = #green } voiceFourStyle = { \override NoteHead #'style = #'cross \override NoteHead #'color = #magenta \override Stem #'color = #magenta + \override Flag #'color = #magenta \override Beam #'color = #magenta } voiceNeutralStyle = { \revert NoteHead #'style \revert NoteHead #'color \revert Stem #'color + \revert Flag #'color \revert Beam #'color } diff --git a/ly/scale-definitions-init.ly b/ly/scale-definitions-init.ly index 712be245bd..127e7e5fb9 100644 --- a/ly/scale-definitions-init.ly +++ b/ly/scale-definitions-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" major = #`( diff --git a/ly/scheme-sandbox.ly b/ly/scheme-sandbox.ly new file mode 100644 index 0000000000..7dec0dcd1c --- /dev/null +++ b/ly/scheme-sandbox.ly @@ -0,0 +1,16 @@ +\version "2.16.0" + +#(load-user-init) + +% This loads the user's .guile file for interactive sessions. +% One typical thing you might want to put there is +% (use-modules (ice-9 readline)) +% (activate-readline) +% in order to activate command line editing for interactive sessions. +% You need libreadline support and the respective Guile module to be +% installed for that. In Debian, for example, this is part of the +% guile-1.8-libs package. Depending on your system and version, the +% requirements may be different. + +#(newline) +#(scm-style-repl) diff --git a/ly/script-init.ly b/ly/script-init.ly index 15a85d1584..ed7aed5948 100644 --- a/ly/script-init.ly +++ b/ly/script-init.ly @@ -1,6 +1,6 @@ % script-init.ly -\version "2.14.0" +\version "2.16.0" % code char abbreviations dashHat = "marcato" diff --git a/ly/spanners-init.ly b/ly/spanners-init.ly index e8ff918b49..b507d01829 100644 --- a/ly/spanners-init.ly +++ b/ly/spanners-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" startGroup = #(make-span-event 'NoteGroupingEvent START) stopGroup = #(make-span-event 'NoteGroupingEvent STOP) @@ -32,26 +32,26 @@ enddecresc = #(make-span-event 'DecrescendoEvent STOP) % Deprecated functions: % TODO: DEPRECATED_2_13_19 deprecatedcresc = { - #(ly:export (make-event-chord (list cr))) + $(make-event-chord (list cr)) \once \set crescendoText = \markup { \italic "cresc." } \once \set crescendoSpanner = #'text } deprecateddim = { - #(ly:export (make-event-chord (list decr))) + $(make-event-chord (list decr)) \once \set decrescendoText = \markup { \italic "dim." } \once \set decrescendoSpanner = #'text } deprecatedenddim = { - #(ly:export (make-event-chord (list enddecr))) + $(make-event-chord (list enddecr)) % \unset decrescendoText % \unset decrescendoSpanner } deprecatedendcresc = { - #(ly:export (make-event-chord (list endcr))) + $(make-event-chord (list endcr)) % \unset crescendoText % \unset crescendoSpanner } diff --git a/ly/string-tunings-init.ly b/ly/string-tunings-init.ly index 0edc1cb424..315655526e 100644 --- a/ly/string-tunings-init.ly +++ b/ly/string-tunings-init.ly @@ -1,6 +1,6 @@ %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Carl D. Sorensen +%%%% Copyright (C) 2010--2012 Carl D. Sorensen %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -15,121 +15,77 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.14.0" +\version "2.16.0" %% A stringTuning is a list of pitches ordered by string number %% from 1 to N. %% Here we define a number of default string tunings. -%% A scheme function for converting a chord to a string tuning -#(define (chord->tuning parser tuning-symbol chord) - (let* ((ev-chord (car (extract-named-music chord 'EventChord))) - (pitches (event-chord-pitches ev-chord))) - (ly:parser-define! parser tuning-symbol (reverse pitches)))) - %% A music function for converting a chord to a string tuning. %% The music argument for \makeStringTuning must be a chord in %% absolute mode ordered from the highest string number to the %% lowest string number -makeStringTuning = -#(define-music-function (parser location tuning chord) - (symbol? ly:music?) - (_ "Convert @{chord} to a string tuning stored in @code{tuning}. -@{chord} must be in absolute pitches and should have the highest -string number (generally the lowest pitch) first. @code{tuning} -should be a string that will be converted to a symbol.") - (begin - (chord->tuning parser tuning chord) - (make-music 'SequentialMusic 'void #t))) - - -%% A music function for converting a chord to a string tuning -%% and setting the current context stringTunings property to -%% the newly-defined-string tuning. - -contextStringTuning = -#(define-music-function (parser location tuning chord) - (symbol? ly:music?) - (_ "Convert @{chord} to a string tuning stored in @code{tuning}, -and set @code{stringTunings} of the current context to the -newly-defined tuning. -@{chord} must be in absolute pitches and should have the highest -string number (generally the lowest pitch) first. @code{tuning} -should be a string that will be converted to a symbol.") - (begin - (chord->tuning parser tuning chord) - #{ - \set TabStaff.stringTunings = $(ly:parser-lookup parser tuning) - \set FretBoards.stringTunings = $(ly:parser-lookup parser tuning) - #})) - -%% A music function for converting an alist to string-tunings -makeDefaultStringTunings = -#(define-music-function (parser location default-tuning-alist) - (cheap-list?) - (_ "Define default string tunings for each element of -@code{default-tuning-alist}.") - (begin - (for-each (lambda (alist-entry) - (chord->tuning parser (car alist-entry) (cdr alist-entry))) - default-tuning-alist) - (make-music 'SequentialMusic 'void #t))) - -% tuning definitions require default pitchnames -\languageSaveAndChange #default-language - -%% Define alist of default string tunings -defaultStringTunings = -#`( - ;; guitar tunings - (guitar-tuning . ,#{#}) - (guitar-seven-string-tuning . ,#{#}) - (guitar-drop-d-tuning . ,#{#}) - (guitar-open-g-tuning . ,#{#}) - (guitar-open-d-tuning . ,#{#}) - (guitar-dadgad-tuning . ,#{#}) - (guitar-lute-tuning . ,#{#}) - (guitar-asus4-tuning . ,#{#}) - - ;; bass tunings - (bass-tuning . ,#{#}) - (bass-four-string-tuning . ,#{#}) - (bass-drop-d-tuning . ,#{#}) - (bass-five-string-tuning . ,#{#}) - (bass-six-string-tuning . ,#{#}) - - ;; mandolin tunings - (mandolin-tuning . ,#{#}) - - ;; tunings for 5-string banjo - (banjo-open-g-tuning . ,#{#}) - (banjo-c-tuning . ,#{#}) - (banjo-modal-tuning . ,#{#}) - (banjo-open-d-tuning . ,#{#}) - (banjo-open-dm-tuning . ,#{#}) - - ;; ukulele tunings - (ukulele-tuning . ,#{#}) - (ukulele-d-tuning . ,#{#}) - (tenor-ukulele-tuning . ,#{#}) - (baritone-ukulele-tuning . ,#{#}) - - ;; orchestral strings - (violin-tuning . ,#{#}) - (viola-tuning . ,#{#}) - (cello-tuning . ,#{#}) - (double-bass-tuning . ,#{#}) - ) +stringTuning = +#(define-scheme-function (parser location chord) + (ly:music?) + (_i "Convert @var{chord} to a string tuning. +@var{chord} must be in absolute pitches and should have the highest +string number (generally the lowest pitch) first.") + (let* ((ev-chord (car (extract-named-music chord 'EventChord)))) + (reverse! (event-chord-pitches ev-chord)))) + +defaultStringTunings = #'() + +makeDefaultStringTuning = +#(define-void-function (parser location symbol pitches) (symbol? list?) + (_i "This defines a string tuning @var{symbol} via a list of @var{pitches}. +The @var{symbol} also gets registered in @code{defaultStringTunings} +for documentation purposes.") + (ly:parser-define! parser symbol pitches) + (set! defaultStringTunings (acons symbol pitches defaultStringTunings))) + +%% guitar tunings +\makeDefaultStringTuning #'guitar-tuning \stringTuning +\makeDefaultStringTuning #'guitar-seven-string-tuning \stringTuning +\makeDefaultStringTuning #'guitar-drop-d-tuning \stringTuning +\makeDefaultStringTuning #'guitar-open-g-tuning \stringTuning +\makeDefaultStringTuning #'guitar-open-d-tuning \stringTuning +\makeDefaultStringTuning #'guitar-dadgad-tuning \stringTuning +\makeDefaultStringTuning #'guitar-lute-tuning \stringTuning +\makeDefaultStringTuning #'guitar-asus4-tuning \stringTuning + +%% bass tunings +\makeDefaultStringTuning #'bass-tuning \stringTuning +\makeDefaultStringTuning #'bass-four-string-tuning \stringTuning +\makeDefaultStringTuning #'bass-drop-d-tuning \stringTuning +\makeDefaultStringTuning #'bass-five-string-tuning \stringTuning +\makeDefaultStringTuning #'bass-six-string-tuning \stringTuning + +%% mandolin tunings +\makeDefaultStringTuning #'mandolin-tuning \stringTuning + +%% tunings for 5-string banjo +\makeDefaultStringTuning #'banjo-open-g-tuning \stringTuning +\makeDefaultStringTuning #'banjo-c-tuning \stringTuning +\makeDefaultStringTuning #'banjo-modal-tuning \stringTuning +\makeDefaultStringTuning #'banjo-open-d-tuning \stringTuning +\makeDefaultStringTuning #'banjo-open-dm-tuning \stringTuning + +%% ukulele tunings +\makeDefaultStringTuning #'ukulele-tuning \stringTuning +\makeDefaultStringTuning #'ukulele-d-tuning \stringTuning +\makeDefaultStringTuning #'tenor-ukulele-tuning \stringTuning +\makeDefaultStringTuning #'baritone-ukulele-tuning \stringTuning + +%% orchestral strings +\makeDefaultStringTuning #'violin-tuning \stringTuning +\makeDefaultStringTuning #'viola-tuning \stringTuning +\makeDefaultStringTuning #'cello-tuning \stringTuning +\makeDefaultStringTuning #'double-bass-tuning \stringTuning + +defaultStringTunings = #(reverse! defaultStringTunings) %% convert 5-string banjo tuning to 4-string by removing the 5th string -#(define-public (four-string-banjo tuning) - (reverse (cdr (reverse tuning)))) - -%% make all of the default string tunings - -\makeDefaultStringTunings #defaultStringTunings - -% restore the language -\languageRestore - +four-string-banjo = #(lambda (tuning) + (take tuning 4)) diff --git a/ly/suomi.ly b/ly/suomi.ly index ca99791130..2d64813612 100644 --- a/ly/suomi.ly +++ b/ly/suomi.ly @@ -1,7 +1,7 @@ %%%% common Finnish names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "suomi" diff --git a/ly/svenska.ly b/ly/svenska.ly index 587c9dc7d6..7f6a5acafc 100644 --- a/ly/svenska.ly +++ b/ly/svenska.ly @@ -1,7 +1,7 @@ %%%% common Swedish names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "svenska" diff --git a/ly/text-replacements.ly b/ly/text-replacements.ly new file mode 100644 index 0000000000..cd6d4457b7 --- /dev/null +++ b/ly/text-replacements.ly @@ -0,0 +1,134 @@ +%%%% This file is part of LilyPond, the GNU music typesetter. +%%%% +%%%% Copyright (C) 2011--2012 Bertrand Bordage +%%%% +%%%% 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 . + +\version "2.16.0" + +#(define (add-text-replacements! alist) + (set! text-font-defaults + (assoc-set! text-font-defaults 'replacement-alist + (cdaar + (internal-add-text-replacements (list text-font-defaults) alist))))) + +#(define (include-special-characters) + (add-text-replacements! + '(;; Punctuation + ("…" . "…") + ("–" . "–") + ("—" . "—") + ("¡" . "¡") + ("¿" . "¿") + ("&solidus;" . "∕") ; this is not a slash, + ; contrary to what is said in Unicode. + + ;; French, German and English quotes open/close + ("&flq;" . "‹") + ("&frq;" . "›") + ("&flqq;" . "«") + ("&frqq;" . "»") + ("&glq;" . "‚") + ("&grq;" . "‘") + ("&glqq;" . "„") + ("&grqq;" . "“") + ("&elq;" . "‘") + ("&erq;" . "’") + ("&elqq;" . "“") + ("&erqq;" . "”") + + ;; Word dividers + (" " . " ") + (" " . " ") + (" " . " ") + (" " . " ") + ("&nnbsp;" . " ") ; narrow non-breaking space + ("‍" . "‍") + ("‌" . "‌") + ("·" . "·") ; interpunct + + ;; General typography + ("•" . "•") + ("©right;" . "©") + ("®istered;" . "®") + ("&trademark;" . "™") + ("†" . "†") + ("‡" . "‡") + ("№" . "№") + ("ª" . "ª") + ("º" . "º") + ("¶" . "¶") + ("§" . "§") + ("°" . "°") + ("№" . "№") + ("‰" . "‰") + ("¦" . "¦") + + ;; Diacritics + ("´" . "´") + ("´dbl;" . "˝") + ("`" . "`") + ("˘" . "˘") + ("ˇ" . "ˇ") + ("¸la;" . "¸") + ("&circumflex;" . "^") + ("&diaeresis;" . "¨") + ("¯on;" . "¯") + + ;; Non-ASCII Letters (Excluding Accented Letters) + ("&aa;" . "Ã¥") + ("&AA;" . "Å") + ("&ae;" . "æ") + ("&AE;" . "Æ") + ("&dh;" . "ð") + ("&DH;" . "Ð") + ("&dj;" . "đ") + ("&DJ;" . "Đ") + ("&l;" . "ł") + ("&L;" . "Ł") + ("&ng;" . "ŋ") + ("&NG;" . "Ŋ") + ("&o;" . "ø") + ("&O;" . "Ø") + ("&oe;" . "œ") + ("&OE;" . "Œ") + ("&s;" . "Å¿") + ("&ss;" . "ß") + ("&th;" . "þ") + ("&TH;" . "Þ") + + ;; Mathematical symbols + ("+" . "+") + ("−" . "−") + ("×" . "×") + ("÷" . "÷") + ("¹" . "¹") + ("²" . "²") + ("³" . "³") + ("&sqrt;" . "√") + ("&increment;" . "∆") + ("&infty;" . "∞") + ("∑" . "∑") + ("±" . "±") + ("&bulletop;" . "∙") + ("&partial;" . "∂") + ("&neg;" . "¬") + + ;; Currency symbols + ("¤cy;" . "¤") + ("$" . "$") + ("€" . "€") + ("£s;" . "£") + ("¥" . "Â¥") + ("¢" . "¢")))) diff --git a/ly/titling-init.ly b/ly/titling-init.ly index 73fd17fe59..98ad8b2e63 100644 --- a/ly/titling-init.ly +++ b/ly/titling-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" slashSeparator = \markup { \center-align @@ -15,11 +15,10 @@ 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) - )) + ) } } @@ -34,13 +33,13 @@ bookTitleMarkup = \markup { \fill-line { \fromproperty #'header:dedication } \override #'(baseline-skip . 3.5) \column { - \huge \larger \bold \fill-line { - \larger \fromproperty #'header:title + \huge \larger \larger \bold + \fromproperty #'header:title } \fill-line { - \large \smaller \bold - \larger \fromproperty #'header:subtitle + \large \bold + \fromproperty #'header:subtitle } \fill-line { \smaller \bold @@ -102,6 +101,11 @@ book last one." (interpret-markup layout props arg) empty-stencil)) +#(define ((on-page nmbr) layout props arg) + (if (= (chain-assoc-get 'page:page-number props -1) nmbr) + (interpret-markup layout props arg) + empty-stencil)) + %% Bookpart first page and last page predicates #(define (part-first-page layout props arg) (if (= (chain-assoc-get 'page:page-number props -1) diff --git a/ly/toc-init.ly b/ly/toc-init.ly index 55b48b96c2..5511ed4689 100644 --- a/ly/toc-init.ly +++ b/ly/toc-init.ly @@ -1,4 +1,4 @@ -\version "2.14.0" +\version "2.16.0" %% defined later, in a closure #(define-public (add-toc-item! markup-symbol text) @@ -38,7 +38,7 @@ tocItemWithDotsMarkup = \markup \fill-with-pattern #1 #RIGHT . ( _i "Outputs the table of contents, using the paper variable @code{tocTitleMarkup} for its title, then the list of lines built using the @code{tocItem} music function -Usage: @code{\\markuplines \\table-of-contents}" ) +Usage: @code{\\markuplist \\table-of-contents}" ) (cons (interpret-markup layout props (ly:output-def-lookup layout 'tocTitleMarkup)) (space-lines (chain-assoc-get 'baseline-skip props) diff --git a/ly/vlaams.ly b/ly/vlaams.ly index 92e0a0f843..62232bed80 100644 --- a/ly/vlaams.ly +++ b/ly/vlaams.ly @@ -1,7 +1,7 @@ %%%% common Flemish names for notes %%%% This file is part of LilyPond, the GNU music typesetter. %%%% -%%%% Copyright (C) 2010--2011 Valentin Villenave +%%%% Copyright (C) 2010--2012 Valentin Villenave %%%% %%%% LilyPond is free software: you can redistribute it and/or modify %%%% it under the terms of the GNU General Public License as published by @@ -18,6 +18,6 @@ %%%% Legacy file. (see scm/define-note-names.scm) -\version "2.14.0" +\version "2.16.0" \language "vlaams" diff --git a/make/abc-rules.make b/make/abc-rules.make index 876d54e4b5..39ca43b170 100644 --- a/make/abc-rules.make +++ b/make/abc-rules.make @@ -1,4 +1,4 @@ .SUFFIXES: .abc $(outdir)/%.ly: %.abc - $(PYTHON) $(ABC2LY) -o $@ $< + $(PYTHON) $(ABC2LY) --quiet -o $@ $< diff --git a/make/doc-i18n-root-rules.make b/make/doc-i18n-root-rules.make index f510dedd7c..d374e5ca73 100644 --- a/make/doc-i18n-root-rules.make +++ b/make/doc-i18n-root-rules.make @@ -1,25 +1,24 @@ .SUFFIXES: .html .info .texi .texinfo -$(outdir)/%.texi: $(src-dir)/%.texi - cp -p $< $@ +# Explicitly list the dependencies on generated content +$(outdir)/web.texi: $(outdir)/weblinks.itexi -$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES) +$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%/index.html $(TRANSLATION_LILY_IMAGES) mkdir -p $(dir $@) - mkdir -p $(outdir)/$* - DEPTH=$(depth)/../ $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(outdir)/$* $< find $(outdir)/$* -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/$(outdir) -$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES) - DEPTH=$(depth) $(TEXI2HTML) -D bigpage $(TEXI2HTML_FLAGS) --output=$@ $< +$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html: $(outdir)/%-big-page.html $(TRANSLATION_LILY_IMAGES) + mkdir -p $(dir $@) + cp -f $< $@ -$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi - DEPTH=$(depth) $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $< +$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.html + mkdir -p $(dir $@) + cp -f $< $@ -$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.texi - cd $(outdir) && \ - texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \ - mkdir -p $(dir $@) && mv $*.pdf $@ +$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.pdf + mkdir -p $(dir $@) + cp -f $< $@ $(outdir)/version.%: $(top-src-dir)/VERSION $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@ @@ -30,9 +29,6 @@ $(outdir)/weblinks.%: $(top-src-dir)/VERSION $(outdir)/%.png: $(top-build-dir)/Documentation/$(outdir)/%.png ln -f $< $@ -$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map - $(buildscript-dir)/extract_texi_filenames -o $(XREF_MAPS_DIR) $(XREF_MAP_FLAGS) --master-map-file=$(XREF_MAPS_DIR)/$*.xref-map $< - $(MASTER_TEXI_FILES): $(ITELY_FILES) $(ITEXI_FILES) $(outdir)/pictures $(outdir)/pictures: @@ -44,14 +40,12 @@ $(TRANSLATION_LILY_IMAGES): $(MASTER_TEXI_FILES) find $(outdir) \( -name '*.??.idx' \) | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link hard $(outdir) $(top-build-dir)/Documentation/$(outdir) touch $@ -$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi - $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $< +$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS) + $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<" "$*.makeinfo.log" $(outdir)/index.$(ISOLANG).html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT) $(outdir)/index.$(ISOLANG).html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT) $(outdir)/index.$(ISOLANG).html: - DEPTH=$(depth) $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(TEXI2HTML_SPLIT) --output=$(outdir)/ web.texi + $(buildscript-dir)/run-and-check "DEPTH=$(depth) $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(TEXI2HTML_SPLIT) --output=$(outdir)/ web.texi" "webtexi.log" find $(outdir)/ -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/$(outdir) - -.SECONDARY: diff --git a/make/doc-i18n-root-targets.make b/make/doc-i18n-root-targets.make index e5ea060283..cd5001174a 100644 --- a/make/doc-i18n-root-targets.make +++ b/make/doc-i18n-root-targets.make @@ -1,11 +1,11 @@ default: ifeq ($(out),www) -ifneq ($(N0_PDF_FILES),) -local-WWW-1: $(MASTER_TEXI_FILES) $(XREF_MAPS_FILES) +ifneq ($(NO_PDF_FILES),) +local-WWW-1: $(OUT_TEXINFO_MANUALS) $(MASTER_TEXI_FILES) $(XREF_MAPS_FILES) endif ifeq ($(NO_PDF_FILES),) -local-WWW-1: $(MASTER_TEXI_FILES) $(PDF_FILES) $(XREF_MAPS_FILES) +local-WWW-1: $(OUT_TEXINFO_MANUALS) $(MASTER_TEXI_FILES) $(PDF_FILES) $(XREF_MAPS_FILES) endif local-WWW-2: $(DEEP_HTML_FILES) $(BIG_PAGE_HTML_FILES) $(DOCUMENTATION_LOCALE_TARGET) diff --git a/make/doc-i18n-root-vars.make b/make/doc-i18n-root-vars.make index 03bc122520..2b2242427b 100644 --- a/make/doc-i18n-root-vars.make +++ b/make/doc-i18n-root-vars.make @@ -2,8 +2,6 @@ LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py) -CSS_SOURCE_FILES = $(shell ls $(top-src-dir)/Documentation/lilypond*.css) - TELY_FILES := $(call src-wildcard,*.tely) TEXI_FILES := $(call src-wildcard,*.texi) MASTER_TEXI_FILES := $(TEXI_FILES) $(TELY_FILES:%.tely=$(outdir)/%.texi) @@ -11,16 +9,17 @@ MASTER_TEXI_FILES := $(TEXI_FILES) $(TELY_FILES:%.tely=$(outdir)/%.texi) TEXINFO_MANUALS =\ $(TELY_FILES:%.tely=%)\ $(TEXI_FILES:%.texi=%) +OUT_TEXINFO_MANUALS = $(TEXINFO_MANUALS:%=$(outdir)/%.texi) TOPDIR_HTML_MANUALS = -SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\ - $(if $(findstring $(manual), $(UNSPLITTED_HTML_MANUALS)),,$(manual))) -NOT_TOPDIR_HTML_MANUALS = $(foreach manual, $(SPLITTED_HTML_MANUALS),\ +SPLIT_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\ + $(if $(findstring $(manual), $(UNSPLIT_HTML_MANUALS)),,$(manual))) +NOT_TOPDIR_HTML_MANUALS = $(foreach manual, $(SPLIT_HTML_MANUALS),\ $(if $(findstring $(manual), $(TOPDIR_HTML_MANUALS)),,$(manual))) -OUT_HTML_FILES += $(UNSPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html) \ +OUT_HTML_FILES += $(UNSPLIT_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html) \ $(TOPDIR_HTML_MANUALS:%=$(outdir)/index.$(ISOLANG).html) -BIG_PAGE_HTML_FILES := $(SPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html) +BIG_PAGE_HTML_FILES := $(SPLIT_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html) DEEP_HTML_FILES := $(NOT_TOPDIR_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html) PDF_FILES := $(TELY_FILES:%.tely=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf) @@ -33,15 +32,9 @@ DOCUMENTATION_INCLUDES = \ -I $(top-build-dir)/Documentation/$(outdir) LILYPOND_BOOK_INCLUDES += $(DOCUMENTATION_INCLUDES) -MAKEINFO_FLAGS += --force --enable-encoding $(DOCUMENTATION_INCLUDES) +MAKEINFO_FLAGS += --enable-encoding $(DOCUMENTATION_INCLUDES) MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS) -# texi2html xref map files -# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make -XREF_MAPS_DIR=$(top-build-dir)/$(outdir)/xref-maps -XREF_MAPS_FILES=$(TEXINFO_MANUALS:%=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map) -XREF_MAP_FLAGS += -I $(outdir) -I$(src-dir) - WEB_MANUALS=web ########### @@ -61,12 +54,8 @@ TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_LANG) $(TEXI2HTML_INIT) TEXI2HTML = TOP_SRC_DIR=$(top-src-dir) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM) ########### -TEXI2PDF_FLAGS += --batch $(DOCUMENTATION_INCLUDES) +TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES) TEXI2PDF_FLAGS += -I $(LYS_OUTPUT_DIR) -ifdef QUIET_BUILD -TEXI2PDF_FLAGS += -q -endif - DOCUMENTATION_LOCALE_TARGET = $(outdir)/doc-po TRANSLATION_LILY_IMAGES = $(outdir)/translation-lily-images diff --git a/make/lilypond-book-rules.make b/make/lilypond-book-rules.make index e5a03790b4..d12c27ebcd 100644 --- a/make/lilypond-book-rules.make +++ b/make/lilypond-book-rules.make @@ -15,7 +15,7 @@ $(outdir)/%.html: %.xml ############## LaTeX ######################## $(outdir)/%.tex: %.lytex - $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< + $(buildscript-dir)/run-and-check "$(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $<" "$*.lytex.log" $(outdir)/%.tex: %.tex $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< @@ -23,10 +23,10 @@ $(outdir)/%.tex: %.tex $(outdir)/%.tex: %.latex $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $< -# Add the tex => pdf rule only if we have dblatex +# Add the tex => pdf rule only if we have pdflatex ifeq (,$(findstring pdflatex,$(MISSING_OPTIONAL))) $(outdir)/%.pdf: $(outdir)/%.tex - cd $(outdir) && $(PDFLATEX) $(notdir $<) + cd $(outdir) && $(buildscript-dir)/run-and-check "$(PDFLATEX) -halt-on-error $(notdir $<)" "$*.pdflatex.log" endif ############## Texinfo ###################### diff --git a/make/lilypond-book-vars.make b/make/lilypond-book-vars.make index 3627b50054..bb1fc23dfe 100644 --- a/make/lilypond-book-vars.make +++ b/make/lilypond-book-vars.make @@ -4,7 +4,7 @@ LILYPOND_BOOK_COMMAND = LILYPOND_VERSION=$(TOPLEVEL_VERSION) \ $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) \ --process='$(LILYPOND_BOOK_PROCESS) \ $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) \ - $(LILYPOND_BOOK_FLAGS) + --redirect-lilypond-output $(LILYPOND_BOOK_FLAGS) HTML_FILES = $(call src-wildcard,*.html) HTMLY_FILES = $(call src-wildcard,*.htmly) @@ -18,10 +18,10 @@ TELY_FILES = $(call src-wildcard,*.tely) DOCBOOK_FILES = $(call src-wildcard,*.lyxml) OUT_HTML_FILES = ${HTML_FILES:%.html=$(outdir)/%.html} -OUT_HTMLY_FILES = ${HTML_FILES:%.htmly=$(outdir)/%.html} +OUT_HTMLY_FILES = ${HTMLY_FILES:%.htmly=$(outdir)/%.html} OUT_XML_FILES = ${XML_FILES:%.xml=$(outdir)/%.html} # If we have pdflatex, create the pdf, otherwise only the .tex file! -ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL))) +ifeq (,$(findstring pdflatex,$(MISSING_OPTIONAL))) OUT_LYTEX_FILES = ${LYTEX_FILES:%.lytex=$(outdir)/%.pdf} OUT_LATEX_FILES = ${LATEX_FILES:%.latex=$(outdir)/%.pdf} OUT_TEX_FILES = ${TEX_FILES:%.tex=$(outdir)/%.pdf} diff --git a/make/lilypond-vars.make b/make/lilypond-vars.make index cf1bc11203..5c5e1efe3e 100644 --- a/make/lilypond-vars.make +++ b/make/lilypond-vars.make @@ -28,7 +28,7 @@ CONVERT_LY = $(script-dir)/convert-ly.py LILYPOND_BOOK = $(script-dir)/lilypond-book.py LILYPOND_BOOK_INCLUDES = -I $(src-dir)/ -I $(outdir) -I $(input-dir) \ - -I $(top-src-dir)/Documentation -I $(top-src-dir)/Documentation/snippets \ + -I $(top-src-dir)/Documentation -I $(top-build-dir)/Documentation/snippets/out \ -I $(input-dir)/regression/ -I $(top-src-dir)/Documentation/included/ \ -I $(top-build-dir)/mf/$(outconfbase)/ \ -I $(top-build-dir)/mf/out/ \ @@ -55,13 +55,13 @@ $(LANG_TEXIDOC_FLAGS) \ -danti-alias-factor=$(ANTI_ALIAS_FACTOR) ifdef QUIET_BUILD -LILYPOND_BOOK_VERBOSE = +LILYPOND_BOOK_WARN = --loglevel=NONE else -LILYPOND_BOOK_VERBOSE = --verbose +LILYPOND_BOOK_WARN = --loglevel=WARN endif LILYPOND_BOOK_INFO_IMAGES_DIR = $(if $(INFO_IMAGES_DIR),--info-images-dir=$(INFO_IMAGES_DIR),) -LILYPOND_BOOK_FLAGS = $(LILYPOND_BOOK_VERBOSE) $(LILYPOND_BOOK_INFO_IMAGES_DIR) +LILYPOND_BOOK_FLAGS = $(LILYPOND_BOOK_WARN) $(LILYPOND_BOOK_INFO_IMAGES_DIR) ifeq ($(out),) LILYPOND_BOOK_PROCESS = true @@ -75,6 +75,8 @@ endif TEXINPUTS=$(top-src-dir)/tex/:: export TEXINPUTS +TEXFONTMAPS=$(top-build-dir)/tex/$(outdir):: +export TEXFONTMAPS export LYDOC_LOCALEDIR:= $(top-build-dir)/Documentation/po/out-www diff --git a/make/ly-rules.make b/make/ly-rules.make index 0df0643ee3..954626f6bc 100644 --- a/make/ly-rules.make +++ b/make/ly-rules.make @@ -5,13 +5,14 @@ LYS_OUTPUT_OPTION= --lily-output-dir $(LYS_OUTPUT_DIR) LYS_OUTPUT_DIR=$(top-build-dir)/out/lybook-db LILYPOND_BOOK_FLAGS += $(LYS_OUTPUT_OPTION) $(outdir)/%.latex: %.doc $(INIT_LY_SOURCES) $(SCHEME_SOURCES) - LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) $(LILYPOND_BOOK_FLAGS) $< + LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $< # This allows -j make option while making sure only one lilypond-book instance -# is running at the same time +# is running at the same time, using GNU make's order-only prerequisites so +# as to not create superficial dependencies between unrelated manuals. define CHAIN_RULE -$(i) +| $(i) $(i): endef @@ -22,11 +23,11 @@ $(eval $(firstword $(TEXI_FILES_FROM_TELY)):\ # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir. # it is not, for --srcdir builds $(outdir)/%.texi: %.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_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) $< + LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $< $(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) $< + 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) --redirect-lilypond-output $< $(outdir)/%.html.omf: %.tely @@ -35,8 +36,14 @@ $(outdir)/%.html.omf: %.tely $(outdir)/%.pdf.omf: %.tely $(call GENERATE_OMF,pdf) -$(outdir)/%.html.omf: $(outdir)/%.texi +$(outdir)/%.html.omf: $(outdir)/%.texi | $(OUT_TEXINFO_MANUALS) $(call GENERATE_OMF,html) -$(outdir)/%.pdf.omf: $(outdir)/%.texi +$(outdir)/%.pdf.omf: $(outdir)/%.texi | $(OUT_TEXINFO_MANUALS) $(call GENERATE_OMF,pdf) + +$(outdir)/others-did.itexi $(outdir)/we-wrote.itexi: $(outdir)/%.itexi: $(top-src-dir)/Documentation/web/%.bib $(top-src-dir)/Documentation/lily-bib.bst + BSTINPUTS=$(top-src-dir)/Documentation/web/ $(buildscript-dir)/bib2texi \ + -s $(top-src-dir)/Documentation/lily-bib \ + -o $(outdir)/$*.itexi \ + $(top-src-dir)/Documentation/web/$*.bib diff --git a/make/lysdoc-rules.make b/make/lysdoc-rules.make index 5c38f7d4ab..11248f5030 100644 --- a/make/lysdoc-rules.make +++ b/make/lysdoc-rules.make @@ -1,2 +1,19 @@ -$(outdir)/collated-files.tely: $(COLLATED_FILES) - $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^ +# We can't print the list in one go, as it might be longer than a +# shell command is allowed (as of linux 2.6.3x >131000 chars) +# Split it up into 10 300-element chunks, and one chunk containing the rest +# if we have more than 3000 elements. +$(outdir)/collated-files.list: $(COLLATED_FILES) + @echo $(wordlist 1, 299,$^)>$@ + @echo $(wordlist 300, 599,$^)>>$@ + @echo $(wordlist 600, 899,$^)>>$@ + @echo $(wordlist 900,1199,$^)>>$@ + @echo $(wordlist 1200,1499,$^)>>$@ + @echo $(wordlist 1500,1799,$^)>>$@ + @echo $(wordlist 1800,2099,$^)>>$@ + @echo $(wordlist 2100,2399,$^)>>$@ + @echo $(wordlist 2400,2699,$^)>>$@ + @echo $(wordlist 2700,2999,$^)>>$@ + @echo $(wordlist 3000,$(words $^),$^)>>$@ + +$(outdir)/collated-files.tely: $(outdir)/collated-files.list + $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" --input-filename=$^ diff --git a/make/lysdoc-targets.make b/make/lysdoc-targets.make index e39fa1c58b..5290e3962f 100644 --- a/make/lysdoc-targets.make +++ b/make/lysdoc-targets.make @@ -16,6 +16,6 @@ local-test: echo -e '\n\n\n' ; \ (cd $(top-src-dir) && git diff ) ; \ fi > $(outdir)/tree.gittxt - $(MAKE) LILYPOND_BOOK_LILYPOND_FLAGS="-dbackend=eps --formats=ps $(LILYPOND_JOBS) -dseparate-log-files -dinclude-eps-fonts -dgs-load-lily-fonts --header=texidoc -I $(top-src-dir)/Documentation/included/ -ddump-profile -dcheck-internal-types -ddump-signatures -danti-alias-factor=1" LILYPOND_BOOK_VERBOSE= $(outdir)/collated-files.html LYS_OUTPUT_DIR=$(top-build-dir)/out/lybook-testdb + $(MAKE) LILYPOND_BOOK_LILYPOND_FLAGS="-dbackend=eps --formats=ps $(LILYPOND_JOBS) -dseparate-log-files -dinclude-eps-fonts -dgs-load-lily-fonts --header=texidoc -I $(top-src-dir)/Documentation/included/ -ddump-profile -dcheck-internal-types -ddump-signatures -danti-alias-factor=1" LILYPOND_BOOK_WARN= $(outdir)/collated-files.html LYS_OUTPUT_DIR=$(top-build-dir)/out/lybook-testdb rsync -L -a --exclude 'out-*' --exclude 'out' --exclude mf --exclude source --exclude mf $(top-build-dir)/out/share $(outdir) diff --git a/make/midi-rules.make b/make/midi-rules.make index 219eb262ce..51bf3f298f 100644 --- a/make/midi-rules.make +++ b/make/midi-rules.make @@ -1,15 +1,16 @@ .SUFFIXES: .midi $(outdir)/%.ly: %.midi - $(PYTHON) $(MIDI2LY) -o $(outdir) $< + $(PYTHON) $(MIDI2LY) --quiet -o $(outdir) $< $(outdir)/%.midi: %.ly $(LILYPOND_BINARY) touch $(foreach f, $(HEADER_FIELDS), $(outdir)/$*.$f) - $(LILYPOND_BINARY) $(HEADER_FIELDS:%=-H %) -o $(outdir) $< + $(buildscript-dir)/run-and-check "$(LILYPOND_BINARY) $(HEADER_FIELDS:%=-H %) -o $(outdir) $<" "$*.log" + cp $< $(outdir) $(outdir)/%-midi.ly: $(outdir)/%.midi $(MIDI2LY) - (echo '\header {'; for f in $(HEADER_FIELDS); do echo -n $$f'="'; cat $(outdir)/$*.$$f; echo '"'; done; echo '}') > $(outdir)/$*.header - $(PYTHON) $(MIDI2LY) $(shell cat $(outdir)/$*.options) --include-header=$(outdir)/$*.header -o $(outdir) $< + (echo '\header {'; for f in $(HEADER_FIELDS); do printf $$f'="'; cat $(outdir)/$*.$$f; echo '"'; done; echo '}') > $(outdir)/$*.header + $(PYTHON) $(MIDI2LY) $(shell cat $(outdir)/$*.options) --quiet --include-header=$(outdir)/$*.header -o $(outdir) $< $(outdir)/%.diff: %.ly $(outdir)/%-midi.ly $(DIFF) -puN $(MIDI2LY_IGNORE_RES) $^ > $@ || cat $@ diff --git a/make/mutopia-targets.make b/make/mutopia-targets.make index 4eeb80ed0c..0d49357e46 100644 --- a/make/mutopia-targets.make +++ b/make/mutopia-targets.make @@ -1,8 +1,5 @@ .PHONY: download mutopia png ps scores tar -.PRECIOUS: $(outdir)/%.ps $(outdir)/%-book.ps -.PRECIOUS: $(outdir)-letter/%.ps - all: diff --git a/make/stepmake.make b/make/stepmake.make index 604341be63..1de2e2b2d0 100644 --- a/make/stepmake.make +++ b/make/stepmake.make @@ -108,6 +108,9 @@ ifeq ($(BUILTINS_REMOVED),) endif .SUFFIXES: +# Keep this empty to prevent make from removing intermediate files. +.SECONDARY: + all: -include $(addprefix $(depth)/make/,$(addsuffix -inclusions.make, $(LOCALSTEPMAKE_TEMPLATES))) diff --git a/make/substitute.make b/make/substitute.make index 74ba9f67d9..2da2f15091 100644 --- a/make/substitute.make +++ b/make/substitute.make @@ -13,6 +13,7 @@ ATVARIABLES = \ MICRO_VERSION\ MAJOR_VERSION\ MINOR_VERSION\ + NCSB_DIR\ PACKAGE\ PATCH_LEVEL\ PATHSEP\ diff --git a/make/website.make b/make/website.make index 5c0528aec9..ad11f04379 100644 --- a/make/website.make +++ b/make/website.make @@ -4,9 +4,10 @@ ################################################################ ##### SECURITY -- check these values for lilypond.org ######### ################################################################ + ifeq ($(WEBSITE_ONLY_BUILD),1) ### for lilypond.org - TOP_SRC_DIR=$(HOME)/lilypond/lilypond-git + TOP_SRC_DIR=$(LILYPOND_GIT) TRUSTED_DIR=$(HOME)/lilypond/trusted-scripts top-src-dir=$(TOP_SRC_DIR) depth=. @@ -15,9 +16,10 @@ ifeq ($(WEBSITE_ONLY_BUILD),1) texi2html-init-file=$(trusted-dir)/lilypond-texi2html.init top-htaccess=$(trusted-dir)/lilypond.org.htaccess dir-htaccess=$(trusted-dir)/website-dir.htaccess - TEXI2HTML_PROGRAM=$(HOME)/usr/bin/texi2html - EXAMPLES=$(HOME)/lilypond/media/ly-examples - PICTURES=$(HOME)/lilypond/media/pictures + # grab it from PATH + TEXI2HTML_PROGRAM=texi2html + PYTHON=python + PYTHONPATH=$(TRUSTED_DIR) else ### for normal git script-dir=$(top-src-dir)/scripts/build @@ -25,124 +27,274 @@ else top-htaccess=$(top-src-dir)/Documentation/web/server/lilypond.org.htaccess dir-htaccess=$(top-src-dir)/Documentation/web/server/website-dir.htaccess include $(config_make) - # I assume this is run from top-build-dir - EXAMPLES=Documentation/web/ly-examples/out-www - PICTURES=Documentation/pictures/out-www endif +include $(top-src-dir)/VERSION + +################################################################ +#The 4 lines below present an option to force make website to run +# quietly only when it is run as make -s website. However, we've +# decided not to use this switch, and run the scripts quietly all +# the time +################################################################ +#quiet-run = $(findstring s, $(MAKEFLAGS)) +#ifeq ($(quiet-run),s) +# quiet-flag=-q +#endif + +#Nothing clever here - just allows the use of a boolean to control +# quiet running +quiet-run = true +ifeq ($(quiet-run),true) + quiet-flag=-q +endif ################################################################ OUT=out-website -### only update this when the language compiles correctly! -# LANGUAGES = (site, cs, de, es, fr, hu, it, ja, nl, zh) -#WEB_LANGS = de es fr hu it ja nl zh cs -WEB_LANGS = cs de es fr hu it ja nl zh +WEB_LANGS := $(shell MAKEWEB=1 $(PYTHON) $(top-src-dir)/python/langdefs.py) -TEXI2HTML=ONLY_WEB=1 TOP_SRC_DIR=$(top-src-dir) DEPTH=$(depth) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM) +TEXI2HTML=ONLY_WEB_VERSION=v$(MAJOR_VERSION).$(MINOR_VERSION) TOP_SRC_DIR=$(top-src-dir) DEPTH=$(depth) PERL_UNICODE=SD \ + $(TEXI2HTML_PROGRAM) -D web_version --prefix=index --split=section \ + --init-file=$(texi2html-init-file) \ + --I=$(dir $<) \ + --I=$(top-src-dir)/Documentation \ + --I=$(OUT) \ + --output=$(dir $@) -EXTRACT_TEXI_FILENAMES=python $(script-dir)/extract_texi_filenames.py +EXTRACT_TEXI_FILENAMES=$(PYTHON) $(script-dir)/extract_texi_filenames.py $(quiet-flag) \ + --known-missing-files=$(top-src-dir)/scripts/build/website-known-missing-files.txt \ + -I $(top-src-dir)/Documentation \ + -I $(dir $<) \ + -I $(OUT) \ + -o $(OUT) CREATE_VERSION=python $(script-dir)/create-version-itexi.py CREATE_WEBLINKS=python $(script-dir)/create-weblinks-itexi.py MASS_LINK=python $(script-dir)/mass-link.py WEB_POST=python $(script-dir)/website_post.py WEB_BIBS=python $(script-dir)/bib2texi.py +EXAMPLES=$(LILYPOND_WEB_MEDIA_GIT)/ly-examples +PICTURES=$(LILYPOND_WEB_MEDIA_GIT)/pictures +PDFS=$(LILYPOND_WEB_MEDIA_GIT)/pdf + SERVER_FILES=$(top-src-dir)/Documentation/web/server # don't include web -MANUALS=$(wildcard $(top-src-dir)/Documentation/*.tely) -MANUALS+=$(top-src-dir)/Documentation/contributor.texi +MANUALS = $(MANUALS_TELY) $(MANUALS_TEXI) $(MANUALS_TRANSLATION) +MANUALS_TELY := $(notdir $(wildcard $(top-src-dir)/Documentation/*.tely)) +MANUALS_TEXI := contributor.texi + +# Harvest the translated manuals. +# - Store each manual in a language-specific macro, e.g. when we find +# de/learning.tely we add learning.tely to MANUALS_de, +# - Store each manual with an added language suffix in MANUALS_TRANSLATION, +# e.g. learning.de.tely for the German learning manual. +$(eval $(foreach l,$(WEB_LANGS),\ + $(eval MANUALS_$(l) := $(notdir $(wildcard $(top-src-dir)/Documentation/$(l)/*.tely))) \ + $(eval MANUALS_TRANSLATION += $(MANUALS_$(l):%.tely=%.$(l).tely)) \ +)) + +# The web.texi manuals, English and translated +MANUALS_WEB := web.texi $(WEB_LANGS:%=web.%.texi) + +# The basename of all manuals (basename includes the language suffix) +MANUALS_BASE = $(basename $(MANUALS) $(MANUALS_WEB)) + + +####################### +### Dependency tracking + +# Find the file $(1) within the texinfo include dirs and return its path. +# If not found, i.e. it is a generated file, then the file is ignored. +find-texi = \ +$(firstword \ + $(wildcard $(dir $<)$(1)) \ + $(wildcard $(top-src-dir)/Documentation/$(1)) \ +) + +# Recursively scan the file $(1) for @include, search for included files +# within the texinfo include dirs, and return all dependencies. +scan-texi = \ + $(foreach f, $(shell echo | sed -ne "/^@include[[:space:]]/s/@include//p" $(1)), \ + $(call find-texi,$(f)) \ + $(call scan-texi,$(call find-texi,$(f))) \ +) + +# Find dependencies for the target $@, based on the texinfo source file $<, +# and write the dependencies to a .dep file. +DO_TEXI_DEP = ( mkdir -p $(dir $@) && echo ./$@: $(call scan-texi,$<) > $@.dep ) && + +# This is where we import the .dep files so that `make' knows about +# the various dependencies. +-include dummy.dep $(wildcard $(OUT)/*.dep) $(wildcard $(OUT)/*/*.dep) + + +################### +### Generated files + +bib-files = $(OUT)/others-did.itexi $(OUT)/we-wrote.itexi + +css-src-files := $(notdir $(wildcard $(top-src-dir)/Documentation/css/*.css)) +css-files = $(css-src-files:%=$(OUT)/website/css/%) + +example-src-files := $(notdir $(wildcard $(EXAMPLES)/*)) +example-files = $(example-src-files:%=$(OUT)/website/ly-examples/%) + +misc-src-files := $(notdir $(wildcard $(top-src-dir)/Documentation/misc/*.*)) +misc-files += $(misc-src-files:%=$(OUT)/website/misc/%) + +picture-src-files := $(notdir $(wildcard $(PICTURES)/*)) +picture-files = $(picture-src-files:%=$(OUT)/website/pictures/%) + +pdf-src-files := $(notdir $(wildcard $(PDFS)/*)) +pdf-files = $(pdf-src-files:%=$(OUT)/website/pdf/%) + +post-files = $(OUT)/website/index.html + +root-files = $(OUT)/.htaccess \ + $(OUT)/website/.htaccess \ + $(OUT)/website/favicon.ico \ + $(OUT)/website/tweets.xml \ + $(OUT)/website/robots.txt + +texinfo-files = $(OUT)/index.html $(WEB_LANGS:%=$(OUT)/%/index.html) + +version-files = $(OUT)/version.itexi $(OUT)/weblinks.itexi + +xref-files = $(MANUALS_BASE:%=$(OUT)/%.xref-map) + + +########### +### Targets + +.PHONY: website website-bibs website-css website-examples website-misc \ + website-pictures website-post website-test website-texinfo \ + website-version website-xrefs check-setup website-pdf + +check-setup: +ifeq ($(LILYPOND_WEB_MEDIA_GIT),) + echo "Need a LILYPOND_WEB_MEDIA_GIT environment variable!" + exit 1 +endif + +website: check-setup website-post website-examples website-pictures website-css website-misc website-pdf + +website-bibs: website-version $(OUT) $(bib-files) + +website-css: $(OUT)/website/css $(css-files) + +website-examples: $(OUT)/website/ly-examples $(example-files) + +website-misc: $(OUT)/website $(OUT)/website/misc $(misc-files) $(root-files) + +website-pictures: $(OUT)/website/pictures $(OUT)/pictures $(picture-files) + +website-pdf: $(OUT)/website/pdf $(pdf-files) + +website-post: website-texinfo $(post-files) website-test: echo $(TEXI2HTML) -website-version: - mkdir -p $(OUT) +website-texinfo: website-version website-xrefs website-bibs $(texinfo-files) + +website-version: $(OUT) $(version-files) + +website-xrefs: website-version $(OUT) $(xref-files) + + +######### +### Rules + +# Directories +$(OUT) $(OUT)/website $(OUT)/website/css $(OUT)/website/ly-examples $(OUT)/website/misc $(OUT)/website/pdf $(OUT)/website/pictures: %: + mkdir -p $@ + +$(OUT)/pictures: $(OUT)/website/pictures + ln -sf website/pictures $(OUT)/pictures + +# Generated itexi files +$(OUT)/version.itexi: $(top-src-dir)/VERSION $(CREATE_VERSION) $(top-src-dir) > $(OUT)/version.itexi + +$(OUT)/weblinks.itexi: $(top-src-dir)/VERSION $(CREATE_WEBLINKS) $(top-src-dir) > $(OUT)/weblinks.itexi -website-xrefs: website-version - for l in '' $(WEB_LANGS); do \ - $(EXTRACT_TEXI_FILENAMES) \ - -I $(top-src-dir)/Documentation \ - -I $(top-src-dir)/Documentation/"$$l" \ - -I $(OUT) -o $(OUT) --split=node \ - --known-missing-files=$(top-src-dir)/scripts/build/website-known-missing-files.txt \ - $(top-src-dir)/Documentation/"$$l"/web.texi ;\ - for m in $(MANUALS); do \ - n=`echo "$$m" | sed 's/Documentation/Documentation\/'$$l'/'` ; \ - b=`basename "$$n" .texi`; \ - d=`basename "$$b" .tely`; \ - if [ -e "$$n" ] ; then \ - $(EXTRACT_TEXI_FILENAMES) \ - -I $(top-src-dir)/Documentation \ - -I $(top-src-dir)/Documentation/"$$l" \ - -I $(top-src-dir)/Documentation/"$$l"/"$$d" \ - --known-missing-files=$(top-src-dir)/scripts/build/website-known-missing-files.txt \ - -I $(OUT) -o $(OUT) "$$n" ; \ - fi ; \ - done; \ - done; - -website-bibs: website-version - BSTINPUTS=$(top-src-dir)/Documentation/web \ - $(WEB_BIBS) -s web \ - -s $(top-src-dir)/Documentation/lily-bib \ - -o $(OUT)/others-did.itexi \ - $(top-src-dir)/Documentation/web/others-did.bib +$(bib-files): $(OUT)/%.itexi: $(top-src-dir)/Documentation/web/%.bib BSTINPUTS=$(top-src-dir)/Documentation/web \ $(WEB_BIBS) -s web \ -s $(top-src-dir)/Documentation/lily-bib \ - -o $(OUT)/we-wrote.itexi \ - $(top-src-dir)/Documentation/web/we-wrote.bib - - -website-texinfo: website-version website-xrefs website-bibs - for l in '' $(WEB_LANGS); do \ - if test -n "$$l"; then \ - langopt=--lang="$$l"; \ - langsuf=.$$l; \ - fi; \ - $(TEXI2HTML) --prefix=index \ - --split=section \ - --I=$(top-src-dir)/Documentation/"$$l" \ - --I=$(top-src-dir)/Documentation \ - --I=$(OUT) \ - $$langopt \ - --init-file=$(texi2html-init-file) \ - -D web_version \ - --output=$(OUT)/"$$l" \ - $(top-src-dir)/Documentation/"$$l"/web.texi ; \ - ls $(OUT)/$$l/*.html | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(OUT)/'$$l'/!!g' | xargs $(MASS_LINK) --prepend-suffix="$$langsuf" hard $(OUT)/$$l/ $(OUT)/website/ ; \ - done - - -website-css: - cp $(top-src-dir)/Documentation/css/*.css $(OUT)/website - -website-pictures: - mkdir -p $(OUT)/website/pictures - if [ -d $(PICTURES) ]; \ - then \ - cp $(PICTURES)/* $(OUT)/website/pictures ; \ - ln -sf website/pictures $(OUT)/pictures ;\ - fi - -website-examples: - mkdir -p $(OUT)/website/ly-examples - if [ -d $(EXAMPLES) ]; \ - then \ - cp $(EXAMPLES)/* $(OUT)/website/ly-examples ; \ - fi - -web-post: + -o $@ \ + $(quiet-flag) \ + $< + +# Get xrefs for English tely manuals +$(MANUALS_TELY:%.tely=$(OUT)/%.xref-map): $(OUT)/%.xref-map: $(top-src-dir)/Documentation/%.tely + $(DO_TEXI_DEP) $(EXTRACT_TEXI_FILENAMES) $< + +# Get xrefs for English texi manuals +$(MANUALS_TEXI:%.texi=$(OUT)/%.xref-map): $(OUT)/%.xref-map: $(top-src-dir)/Documentation/%.texi + $(DO_TEXI_DEP) $(EXTRACT_TEXI_FILENAMES) $< + +# Get xrefs for translated tely manuals +$(eval $(foreach l,$(WEB_LANGS),\ +$(eval $(MANUALS_$(l):%.tely=$(OUT)/%.$(l).xref-map): $(OUT)/%.$(l).xref-map: $(top-src-dir)/Documentation/$(l)/%.tely; \ + $$(DO_TEXI_DEP) $$(EXTRACT_TEXI_FILENAMES) $$< ) \ +)) + +# Get xrefs for the English web.texi manual +$(OUT)/web.xref-map: $(top-src-dir)/Documentation/web.texi + $(DO_TEXI_DEP) $(EXTRACT_TEXI_FILENAMES) --split=node $< + +# Get xrefs for translated web.texi manuals +$(OUT)/web.%.xref-map: $(top-src-dir)/Documentation/%/web.texi + $(DO_TEXI_DEP) $(EXTRACT_TEXI_FILENAMES) --split=node $< + +# Build the English website +$(OUT)/index.html: $(top-src-dir)/Documentation/web.texi $(xref-files) + $(DO_TEXI_DEP) $(TEXI2HTML) $< + +# Build translated websites +$(eval $(foreach l,$(WEB_LANGS),\ +$(eval $(OUT)/$(l)/index.html: $(top-src-dir)/Documentation/$(l)/web.texi $(xref-files); \ + $$(DO_TEXI_DEP) $$(TEXI2HTML) --lang="$(l)" $$<; ) \ +)) + +# Website post-processing +$(OUT)/website/index.html: $(wildcard $(OUT)/*.html) + ls $(OUT)/*.html | sed 's!$(OUT)/!!g' | xargs $(MASS_LINK) --prepend-suffix="" hard $(OUT)/ $(OUT)/website/ + $(foreach l,$(WEB_LANGS), \ + ls $(OUT)/$(l)/*.html | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(OUT)/$(l)/!!g' | xargs $(MASS_LINK) --prepend-suffix=".$(l)" hard $(OUT)/$(l)/ $(OUT)/website/; ) $(WEB_POST) $(OUT)/website -website: website-texinfo website-css website-pictures website-examples web-post - cp $(SERVER_FILES)/favicon.ico $(OUT)/website - cp $(SERVER_FILES)/robots.txt $(OUT)/website - cp $(top-htaccess) $(OUT)/.htaccess - cp $(dir-htaccess) $(OUT)/website/.htaccess +# Simple copy +$(css-files): $(OUT)/website/css/%: $(top-src-dir)/Documentation/css/% + cp $< $@ + +$(example-files): $(OUT)/website/ly-examples/%: $(EXAMPLES)/% + cp $< $@ + +$(misc-files): $(OUT)/website/misc/%: $(top-src-dir)/Documentation/misc/% + cp $< $@ + +$(picture-files): $(OUT)/website/pictures/%: $(PICTURES)/% + cp $< $@ + +$(pdf-files): $(OUT)/website/pdf/%: $(PDFS)/% + cp $< $@ + +$(OUT)/website/favicon.ico: $(SERVER_FILES)/favicon.ico + cp $< $@ + +$(OUT)/website/robots.txt: $(SERVER_FILES)/robots.txt + cp $< $@ + +$(OUT)/website/tweets.xml: $(SERVER_FILES)/tweets.xml + cp $< $@ +$(OUT)/.htaccess: $(top-htaccess) + cp $< $@ +$(OUT)/website/.htaccess: $(dir-htaccess) + cp $< $@ diff --git a/mf/GNUmakefile b/mf/GNUmakefile index c47b2697d3..f81b56dabe 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -7,17 +7,22 @@ STEPMAKE_TEMPLATES = metafont \ install-out LOCALSTEPMAKE_TEMPLATES = lilypond -include $(depth)/make/stepmake.make - - -EXTRA_DIST_FILES += README mf2pt1.mp - # We don't use $(MF_FILES), because there's more .mf cruft here 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,parmesan[0-9]*.mf) + $(call src-wildcard,feta-noteheads*[0-9].mf) \ + $(call src-wildcard,feta-flags*[0-9].mf) \ + $(call src-wildcard,parmesan[0-9]*.mf) \ + $(call src-wildcard,parmesan-noteheads*[0-9].mf) +FETA_FONTS = $(FETA_MF_FILES:.mf=) +ALL_FONTS = $(FETA_FONTS) +PFB_FILES = $(ALL_FONTS:%=$(outdir)/%.pfb) + +include $(depth)/make/stepmake.make + + +EXTRA_DIST_FILES += README mf2pt1.mp STAFF_SIZES = 11 13 14 16 18 20 23 26 BRACES = a b c d e f g h i @@ -27,7 +32,6 @@ OTF_FILES = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.otf) \ PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe) OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table) \ $(BRACES:%=$(outdir)/feta-braces-%.otf-table) -FETA_FONTS = $(FETA_MF_FILES:.mf=) SVG_FILES = $(OTF_FILES:%.otf=%.svg) WOFF_FILES = $(OTF_FILES:%.otf=%.woff) @@ -53,73 +57,29 @@ $(outdir)/emmentaler-brace.otf-gtable: $(BRACES:%=$(outdir)/feta-braces-%.otf-gt echo '(design_size . 20)' > $@ -# only for fonts which -# -# 1. are mentioned in font.scm -# -# 2. are not included with teTeX -# -$(outdir)/emmentaler-%.otf\ - $(outdir)/emmentaler-%.svg\ - $(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.pe \ - $(outdir)/feta%.pfb \ - $(outdir)/feta-noteheads%.pfb \ - $(outdir)/feta-alphabet%.pfb \ - $(outdir)/parmesan%.pfb \ - $(outdir)/feta%.otf-table \ - $(outdir)/feta%.otf-gtable - cd $(outdir) && $(FONTFORGE) -script $(notdir $(basename ,$@).pe) +## ugh -- we want this to prevent failing -j2 compiles. +define FETAxx-PREREQUISITES -$(outdir)/emmentaler-brace.otf\ - $(outdir)/emmentaler-brace.svg\ - $(outdir)/emmentaler-brace.woff: $(outdir)/emmentaler-brace.pe \ - $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfb) \ - $(outdir)/emmentaler-brace.otf-table $(outdir)/emmentaler-brace.otf-gtable - cd $(outdir) && $(FONTFORGE) -script emmentaler-brace.pe -$(outdir)/%.pfb: $(outdir)/%.log +$(outdir)/feta$(i).otf-table: $(outdir)/feta$(i).lisp \ + $(outdir)/feta-noteheads$(i).lisp \ + $(outdir)/feta-flags$(i).lisp \ + $(outdir)/parmesan$(i).lisp \ + $(outdir)/parmesan-noteheads$(i).lisp \ + $(outdir)/feta-alphabet$(i).lisp +endef + +$(eval $(foreach i,$(STAFF_SIZES),$(FETAxx-PREREQUISITES))) $(outdir)/%.otf-table: $(outdir)/%.lisp cat $< $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \ + $(if $(findstring brace,$<),,$(subst feta,parmesan-noteheads,$<)) \ $(if $(findstring brace,$<),,$(subst feta,feta-noteheads,$<)) \ + $(if $(findstring brace,$<),,$(subst feta,feta-flags,$<)) \ $(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@ -## ugh -- we want this to prevent failing -j2 compiles. -$(outdir)/feta26.otf-table: $(outdir)/feta26.lisp \ - $(outdir)/feta-noteheads26.lisp \ - $(outdir)/parmesan26.lisp \ - $(outdir)/feta-alphabet26.lisp -$(outdir)/feta23.otf-table: $(outdir)/feta23.lisp \ - $(outdir)/feta-noteheads23.lisp \ - $(outdir)/parmesan23.lisp \ - $(outdir)/feta-alphabet23.lisp -$(outdir)/feta20.otf-table: $(outdir)/feta20.lisp \ - $(outdir)/feta-noteheads20.lisp \ - $(outdir)/parmesan20.lisp \ - $(outdir)/feta-alphabet20.lisp -$(outdir)/feta18.otf-table: $(outdir)/feta18.lisp \ - $(outdir)/feta-noteheads18.lisp \ - $(outdir)/parmesan18.lisp \ - $(outdir)/feta-alphabet18.lisp -$(outdir)/feta16.otf-table: $(outdir)/feta16.lisp \ - $(outdir)/feta-noteheads16.lisp \ - $(outdir)/parmesan16.lisp \ - $(outdir)/feta-alphabet16.lisp -$(outdir)/feta14.otf-table: $(outdir)/feta14.lisp \ - $(outdir)/feta-noteheads14.lisp \ - $(outdir)/parmesan14.lisp \ - $(outdir)/feta-alphabet14.lisp -$(outdir)/feta13.otf-table: $(outdir)/feta13.lisp \ - $(outdir)/feta-noteheads13.lisp \ - $(outdir)/parmesan13.lisp \ - $(outdir)/feta-alphabet13.lisp -$(outdir)/feta11.otf-table: $(outdir)/feta11.lisp \ - $(outdir)/feta-noteheads11.lisp \ - $(outdir)/parmesan11.lisp \ - $(outdir)/feta-alphabet11.lisp - $(outdir)/emmentaler-brace.otf: $(outdir)/emmentaler-brace.subfonts \ $(outdir)/emmentaler-brace.fontname \ $(outdir)/emmentaler-brace.otf-table \ @@ -131,18 +91,13 @@ $(outdir)/emmentaler-brace.otf\ $(outdir)/emmentaler-brace.woff: $(BRACES:%=$(outdir)/feta-braces-%.pfb) $(outdir)/emmentaler-brace.fontname: - echo -n 'emmentaler-brace' > $@ + printf 'emmentaler-brace' > $@ $(outdir)/emmentaler-brace.subfonts: echo $(subst .mf,,$(call src-wildcard,feta-braces-[a-z].mf)) > $@ $(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts $< --dir=$(outdir) -ALL_FONTS = $(FETA_FONTS) -PFB_FILES = $(ALL_FONTS:%=$(outdir)/%.pfb) - -.PRECIOUS: $(PFB_FILES) - # Make tfm files first, log files last, # so that normally log files aren't made twice @@ -160,7 +115,7 @@ ALL_GEN_FILES = $(LOG_FILES) \ INSTALLATION_DIR = $(local_lilypond_datadir)/fonts/source INSTALLATION_FILES = $(MF_FILES) -INSTALLATION_OUT_SUFFIXES = 1 2 3 +INSTALLATION_OUT_SUFFIXES = 1 2 INSTALLATION_OUT_DIR1 = $(local_lilypond_datadir)/fonts/otf INSTALLATION_OUT_FILES1 = $(OTF_FILES) \ @@ -171,8 +126,48 @@ INSTALLATION_OUT_FILES2 = $(SVG_FILES) $(WOFF_FILES) export MFINPUTS := .:$(MFINPUTS) +# only for fonts which +# +# 1. are mentioned in font.scm +# +# 2. are not included with teTeX +# +$(outdir)/%.lisp \ +$(outdir)/%.otf-gtable \ +$(outdir)/%.enc \ +$(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm + $(buildscript-dir)/mf-to-table \ + --global-lisp=$(outdir)/$(. -*/ - 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"); diff --git a/mf/feta-accidentals.mf b/mf/feta-accidentals.mf index feac34f9ed..905d1c3e8e 100644 --- a/mf/feta-accidentals.mf +++ b/mf/feta-accidentals.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- Accidentals % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-accordion.mf b/mf/feta-accordion.mf index 97de6e494c..c96ff8d06c 100644 --- a/mf/feta-accordion.mf +++ b/mf/feta-accordion.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- draw accordion symbols % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1998--2011 Han-Wen Nienhuys +% Copyright (C) 1998--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-arrowheads.mf b/mf/feta-arrowheads.mf index 45b364dc2a..f80afc91b9 100644 --- a/mf/feta-arrowheads.mf +++ b/mf/feta-arrowheads.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- draw arrow heads % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2005--2011 Han-Wen Nienhuys +% Copyright (C) 2005--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-autometric.mf b/mf/feta-autometric.mf index d5cbb7f2d5..a12b4ebda6 100644 --- a/mf/feta-autometric.mf +++ b/mf/feta-autometric.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- administrative MF routines % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % Jan Nieuwenhuizen % % These macros help create ascii logging output diff --git a/mf/feta-braces-a.mf b/mf/feta-braces-a.mf index 56dd4bb0b0..2436c6f1f3 100644 --- a/mf/feta-braces-a.mf +++ b/mf/feta-braces-a.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- 256 smallest braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-b.mf b/mf/feta-braces-b.mf index e31200e731..cf4adea384 100644 --- a/mf/feta-braces-b.mf +++ b/mf/feta-braces-b.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-c.mf b/mf/feta-braces-c.mf index f81ea74933..eacfc57a24 100644 --- a/mf/feta-braces-c.mf +++ b/mf/feta-braces-c.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-d.mf b/mf/feta-braces-d.mf index 5ed5f46179..4f4a6e961a 100644 --- a/mf/feta-braces-d.mf +++ b/mf/feta-braces-d.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-e.mf b/mf/feta-braces-e.mf index e6b6954d0b..31201f184d 100644 --- a/mf/feta-braces-e.mf +++ b/mf/feta-braces-e.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-f.mf b/mf/feta-braces-f.mf index e93f41bf90..920ac35a55 100644 --- a/mf/feta-braces-f.mf +++ b/mf/feta-braces-f.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-g.mf b/mf/feta-braces-g.mf index d7c651b085..9c233e0ade 100644 --- a/mf/feta-braces-g.mf +++ b/mf/feta-braces-g.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-h.mf b/mf/feta-braces-h.mf index 8dbb7b7a95..f8ea48dcac 100644 --- a/mf/feta-braces-h.mf +++ b/mf/feta-braces-h.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces-i.mf b/mf/feta-braces-i.mf index cb1e58b239..c8e7a73a10 100644 --- a/mf/feta-braces-i.mf +++ b/mf/feta-braces-i.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- next 256 braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-braces.mf b/mf/feta-braces.mf index 5fb5ff1c7d..5ecd5b71a8 100644 --- a/mf/feta-braces.mf +++ b/mf/feta-braces.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- Staff braces % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % Jan Nieuwenhuizen % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-brackettips.mf b/mf/feta-brackettips.mf index 39e4c2dbbc..2971f1e416 100644 --- a/mf/feta-brackettips.mf +++ b/mf/feta-brackettips.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- bracket tips -*-Fundamental-*- % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2005--2011 Han-Wen Nienhuys +% Copyright (C) 2005--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-clefs.mf b/mf/feta-clefs.mf index 4522395cf6..e1c513f94d 100644 --- a/mf/feta-clefs.mf +++ b/mf/feta-clefs.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- implement Clefs -*-Fundamental-*- % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys , +% Copyright (C) 1997--2012 Han-Wen Nienhuys , % Jan Nieuwenhuizen , % Juergen Reuter % @@ -317,6 +317,11 @@ def draw_gclef (expr reduction) = reduced_ss# = staff_space# * reduction; define_pixels (reduced_ss); + % G clef has now a smaller upper loop than it used to have. + % Too small loop in reduced clef (G_change) interacts badly + % with stafflines, so we make reduced clef's loop a bit bigger. + reduced_loop_correction := min (max (0.94, (0.6 + 0.46 * reduction)), 1); + thinness = 0.095 staff_space + 0.75 linethickness; downstroke_dir = unitvector (14, -75); downstroke_angle = angle downstroke_dir; @@ -328,12 +333,12 @@ def draw_gclef (expr reduction) = breapth_factor = 21/14; inner_thick_end = 45; inner_start_angle = downstroke_angle - 43; - thickness = .32 reduced_ss + 1.1 linethickness; + thickness = .33 reduced_ss + 1.1 linethickness; thinnib = thinness; set_char_box (0, 1.71 * breapth_factor * reduced_ss#, - 2.6 * reduced_ss#, 5 * reduced_ss#); + 2.55 * reduced_ss#, 4.8 * reduced_ss# / reduced_loop_correction); center := (breapth_factor * reduced_ss, 0); @@ -356,32 +361,32 @@ def draw_gclef (expr reduction) = y5r = .37 reduced_ss + ypart center; penpos5 (thickness, upward_swoosh_angle); - z6 = center + whatever * downstroke_dir; - y6 = ypart center + 2 reduced_ss; + z6 = center + whatever * downstroke_dir + (-0.02, 0) * reduced_ss; + y6 = ypart center + 1.95 reduced_ss / reduced_loop_correction; % penpos6 is computed later - z7l - z6 = whatever * (z5 - z6) ; - y7l = 3.5 reduced_ss; + z7l - z6 = whatever * (z5 - z6); + y7l = 3.38 reduced_ss / reduced_loop_correction; penpos7 (thickness, upward_swoosh_angle); - x9 = .7 [x10, x7r]; - top y9l = 5 reduced_ss; + x9 = .75 [x10, x7r]; + top y9l = 4.78 reduced_ss / reduced_loop_correction; penpos9 (1.45 thickness, -70); - x11 - x13r = 1.5 reduced_ss + 0.5 thinnib; - y11 = ypart center - 47/28 reduced_ss; - y12 = ypart center - 71/28 reduced_ss; + x11 - x13r = 1.44 * reduced_ss + 0.5 thinnib; + y11 = ypart center - 45/28 reduced_ss; + y12 = ypart center - 69/28 reduced_ss; y13 = .48 [y12, y4r]; x12r = xpart (.45 [z13r, z11] + .75 reduced_ss * downstroke_dir); % z10 = center + whatever * dir (downstroke_angle - 1.5); - x10 = x6 - 2 thinnib; - y10 = ypart center + 3.5 reduced_ss; + x10 = x6 - 1.85 thinnib * reduction / reduced_loop_correction; + y10 = ypart center + 3.32 reduced_ss / reduced_loop_correction; y10l - y10r = 1.0 thickness; z10r - z10l = .7 thinnib * dir (downstroke_angle + 90) + whatever * downstroke_dir; z10 = .5 [z10l, z10r]; - z11 = center + whatever * downstroke_dir + (-0.05 reduced_ss, 0); + z11 = center + whatever * downstroke_dir + (0.03 reduced_ss, 0); penpos11 (thinnib, start_angle + 90); penpos12 (thinnib, bot_angle + 90); @@ -403,7 +408,7 @@ def draw_gclef (expr reduction) = z10' = point 0.3 of pat; penpos10' (1.3 thinnib, angle (direction 0.3 of pat) + 50); - z11' = point 1.5 of pat; + z11' = point 1.5 of pat + (0.033, -0.5) * reduced_ss; penpos11' (thinnib, angle (direction 1.5 of pat) + 90); z21l = z20l; diff --git a/mf/feta-dots.mf b/mf/feta-dots.mf index 232a693dcb..c568aed737 100644 --- a/mf/feta-dots.mf +++ b/mf/feta-dots.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- a duration dot % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-dynamics.mf b/mf/feta-dynamics.mf index 0f71eedcab..c2728c3f08 100644 --- a/mf/feta-dynamics.mf +++ b/mf/feta-dynamics.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- dynamic signs % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Jan Nieuwenhuizen +% Copyright (C) 1997--2012 Jan Nieuwenhuizen % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-flags-generic.mf b/mf/feta-flags-generic.mf new file mode 100644 index 0000000000..a40e5d9b1e --- /dev/null +++ b/mf/feta-flags-generic.mf @@ -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--2012 Han-Wen Nienhuys +% +% +% LilyPond is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% 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 . + + +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; diff --git a/mf/feta-flags.mf b/mf/feta-flags.mf index 261c55b307..81d68a49a3 100644 --- a/mf/feta-flags.mf +++ b/mf/feta-flags.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- draw flags % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -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 index 0000000000..30cd7f0976 --- /dev/null +++ b/mf/feta-flags11.mf @@ -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 index 0000000000..3210b1abc1 --- /dev/null +++ b/mf/feta-flags13.mf @@ -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 index 0000000000..9a5449cc5d --- /dev/null +++ b/mf/feta-flags14.mf @@ -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 index 0000000000..d02993736a --- /dev/null +++ b/mf/feta-flags16.mf @@ -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 index 0000000000..dcaefd440d --- /dev/null +++ b/mf/feta-flags18.mf @@ -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 index 0000000000..b7b834ecc4 --- /dev/null +++ b/mf/feta-flags20.mf @@ -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 index 0000000000..dcd640c8a9 --- /dev/null +++ b/mf/feta-flags23.mf @@ -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 index 0000000000..b2a1fe616f --- /dev/null +++ b/mf/feta-flags26.mf @@ -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. + diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index f78895d0f2..16c31a7beb 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -1,7 +1,7 @@ % 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 +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify @@ -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: @@ -49,6 +45,7 @@ if test = 0: input feta-pedals; input feta-brackettips; input feta-accordion; + input feta-ties; else: input feta-test-generic.mf; fi diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf index 5bd97d36a0..b111c94445 100644 --- a/mf/feta-macros.mf +++ b/mf/feta-macros.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- auxiliary macros for both feta and parmesan fonts % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-noteheads-generic.mf b/mf/feta-noteheads-generic.mf index 4a952ed407..70cf9a4395 100644 --- a/mf/feta-noteheads-generic.mf +++ b/mf/feta-noteheads-generic.mf @@ -1,7 +1,7 @@ % 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 +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % % LilyPond is free software: you can redistribute it and/or modify @@ -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 index 0e381bd4b5..0000000000 --- a/mf/feta-noteheads-test-generic.mf +++ /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; diff --git a/mf/feta-noteheads.mf b/mf/feta-noteheads.mf index 54a51f622a..c45969ed6a 100644 --- a/mf/feta-noteheads.mf +++ b/mf/feta-noteheads.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- implement noteheads % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Jan Nieuwenhuizen +% Copyright (C) 1997--2012 Jan Nieuwenhuizen % & Han-Wen Nienhuys % & Juergen Reuter % @@ -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; @@ -156,42 +82,64 @@ endgroup; enddef; -% -% dimensions aren't entirely right. -% def draw_longa (expr up) = save stemthick, fudge; stemthick# = 2 stafflinethickness#; define_whole_blacker_pixels (stemthick); - fudge = hround (blot_diameter / 2); + % Longas of smaller design sizes should have their lines farther + % apart (the overlap with notehead ellipsoid should be smaller). + fudge = hround (blot_diameter + * min (max (-0.15, + (0.9 + - (20 / (design_size + 4)))), + 0.3)); draw_outside_ellipse (1.80, 0, 0.707, 0); undraw_inside_ellipse (1.30, 125, 0.68, 2 stafflinethickness#); + set_char_box (stemthick#, + width# + stemthick#, + noteheight# / 2, + noteheight# / 2); + pickup pencircle scaled stemthick; + % Longas of smaller design sizes should have their lines longer. + line_length := min (max (0.7, (64/60 - (design_size / 60))), 0.85); + + % Line lengths between 0.72 and 0.77 are not nice + % because they are neither separate nor connected + % when there is an interval of fourth. + if line_length < 0.75: + quanted_line_length := min (0.72, line_length); + else: + quanted_line_length := max (0.77, line_length); + fi; + + final_line_length := quanted_line_length * staff_space; + if up: - bot y1 = -d; - top y2 = h; + bot y1 = -final_line_length; + top y2 = final_line_length; rt x1 - fudge = 0; x1 = x2; - fudge + lft x3 = w; + fudge + lft x3 = width; x4 = x3; top y4 = h + 3.0 staff_space; y3 = y1; else: bot y1 = -d - 3.0 staff_space; - top y2 = h; + top y2 = final_line_length; rt x1 - fudge = 0; x1 = x2; - fudge + lft x3 = w; + fudge + lft x3 = width; x4 = x3; y4 = y2; - bot y3 = -d; + bot y3 = -final_line_length; fi; draw_gridline (z1, z2, stemthick); @@ -231,43 +179,72 @@ if test > 0: fi; -% -% dimensions aren't entirely right. -% -def draw_brevis (expr linecount) = - save stemthick, fudge; +def draw_brevis (expr linecount, line_thickness_multiplier) = + save stemthick, fudge, gap; - stemthick# = 2 stafflinethickness#; + stemthick# = line_thickness_multiplier * 2 * stafflinethickness#; define_whole_blacker_pixels (stemthick); - fudge = hround (blot_diameter / 2); + % double-lined breves of smaller design sizes should have + % bigger gap between the lines. + gap# := (0.95 - 0.008 * design_size) * stemthick#; + + % Breves of smaller design sizes should have their lines farther + % apart (the overlap with notehead ellipsoid should be smaller). + fudge = hround (blot_diameter + * min (max (-0.15, + (0.8 + - (20 / (design_size + 4)) + + .1 linecount)), + 0.3)); draw_outside_ellipse (1.80, 0, 0.707, 0); undraw_inside_ellipse (1.30, 125, 0.68, 2 stafflinethickness#); + set_char_box (stemthick# * linecount + gap# * (linecount - 1), + width# + stemthick# * linecount + gap# * (linecount - 1), + noteheight# / 2, + noteheight# / 2); + + define_pixels (gap); pickup pencircle scaled stemthick; - bot y1 = -d; - top y2 = h; + % Breves of smaller design sizes should have their lines longer. + line_length := min (max (0.7, (64/60 - (design_size / 60))), 0.85); + + % Line lengths between 0.72 and 0.77 are not nice + % because they are neither separate nor connected + % when there is an interval of fourth. + if line_length < 0.75: + quanted_line_length := min (0.72, line_length); + else: + quanted_line_length := max (0.77, line_length); + fi; + + bot y1 = -quanted_line_length * staff_space; + top y2 = quanted_line_length * staff_space; rt x1 - fudge = 0; x1 = x2; - fudge + lft x3 = w; + fudge + lft x3 = width; x4 = x3; y4 = y2; y3 = y1; for i := 0 step 1 until linecount - 1: - draw_gridline (z1 - (1.5 * i * stemthick, 0), - z2 - (1.5 * i * stemthick, 0), stemthick); - draw_gridline (z3 + (1.5 * i * stemthick, 0), - z4 + (1.5 * i * stemthick, 0), stemthick); + line_distance := i * (gap + stemthick); + draw_gridline (z1 - (line_distance, 0), + z2 - (line_distance, 0), + stemthick); + draw_gridline (z3 + (line_distance, 0), + z4 + (line_distance, 0), + stemthick); endfor; enddef; fet_beginchar ("Brevis notehead", "sM1"); - draw_brevis (1); + draw_brevis (1, 1); draw_staff (-2, 2, 0); fet_endchar; @@ -275,7 +252,7 @@ fet_endchar; if test > 0: fet_beginchar ("Brevis notehead", "sM1"); - draw_brevis(1); + draw_brevis(1, 1); draw_staff (-2, 2, 0.5); fet_endchar; @@ -283,7 +260,7 @@ fi; fet_beginchar ("Double-lined brevis notehead", "sM1double"); - draw_brevis (2); + draw_brevis (2, 0.8); draw_staff (-2, 2, 0); fet_endchar; @@ -291,7 +268,7 @@ fet_endchar; if test > 0: fet_beginchar ("Double-lined brevis notehead", "sM1double"); - draw_brevis (2); + draw_brevis (2, 0.8); draw_staff (-2, 2, 0.5); fet_endchar; @@ -344,10 +321,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; diff --git a/mf/feta-numbers.mf b/mf/feta-numbers.mf index 40bf0e598c..0e637550ca 100644 --- a/mf/feta-numbers.mf +++ b/mf/feta-numbers.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- bold Orator numerals % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Jan Nieuwenhuizen +% Copyright (C) 1997--2012 Jan Nieuwenhuizen % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/mf/feta-params.mf b/mf/feta-params.mf index 4d0a5eb4b5..a61edfe73b 100644 --- a/mf/feta-params.mf +++ b/mf/feta-params.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- global parameters for both feta and parmesan fonts % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -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); + + diff --git a/mf/feta-pedals.mf b/mf/feta-pedals.mf index 8a287f52f2..edad126265 100644 --- a/mf/feta-pedals.mf +++ b/mf/feta-pedals.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- piano pedal markings % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2000--2011 Jan Nieuwenhuizen +% Copyright (C) 2000--2012 Jan Nieuwenhuizen % % Voor Cup % diff --git a/mf/feta-rests.mf b/mf/feta-rests.mf index 4f27080179..b109d3bac2 100644 --- a/mf/feta-rests.mf +++ b/mf/feta-rests.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- rest symbols -*-Fundamental-*- % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Jan Nieuwenhuizen +% Copyright (C) 1997--2012 Jan Nieuwenhuizen % % LilyPond is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -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; diff --git a/mf/feta-scripts.mf b/mf/feta-scripts.mf index b3843960c2..83859dbe66 100644 --- a/mf/feta-scripts.mf +++ b/mf/feta-scripts.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- implement scripts % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1997--2011 Han-Wen Nienhuys +% Copyright (C) 1997--2012 Han-Wen Nienhuys % Jan Nieuwenhuizen % % @@ -620,6 +620,44 @@ fet_beginchar ("halfopen (unstopped)", "halfopen"); fet_endchar; +fet_beginchar ("halfopen vertical", "halfopenvertical"); + save thin, height, width, thick, factor, slash; + + factor := 3/2; + height# = 5/4 width#; + height# = staff_space#; + thin = 0.6 linethickness + 0.06 staff_space; + slash# = 1.05 linethickness#; + + set_char_box (width# / 2, width# / 2, + height# / 2, height# / 2); + + define_pixels (width, height, slash); + + 2 thick + 0.6 (height - 2 thin) = width; + + penpos1 (thick, 0); + penpos2 (thin, 90); + penpos3 (thick, 180); + penpos4 (thin, 270); + z1r = (w, 0); + z2r = (0, h); + z3r = (-w, 0); + z4r = (0, -h); + + penlabels (1, 2, 3, 4); + + penstroke z1e{up} + .. z2e{left} + .. z3e{down} + .. z4e{right} + .. cycle; + + draw_brush ((0, -h * factor), slash, + (0, h * factor), slash); +fet_endchar; + + fet_beginchar ("plus (stopped)", "stopped"); save hthick, vthick, size, outer_hsize, outer_vsize; @@ -1447,17 +1485,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 +1507,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 +1520,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; diff --git a/mf/feta-test-generic.mf b/mf/feta-test-generic.mf index 71f7ce842f..a910b52c5a 100644 --- a/mf/feta-test-generic.mf +++ b/mf/feta-test-generic.mf @@ -14,3 +14,4 @@ input feta-accidentals; %input feta-timesignatures; %input feta-pedals; %input feta-accordion; +%input feta-ties; diff --git a/mf/feta-ties.mf b/mf/feta-ties.mf new file mode 100644 index 0000000000..62702e92ff --- /dev/null +++ b/mf/feta-ties.mf @@ -0,0 +1,72 @@ +% Feta (not the Font-En-Tja) music font -- small ties +% This file is part of LilyPond, the GNU music typesetter. +% +% Copyright (C) 2011--2012 Bertrand Bordage +% +% 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 . + +fet_begingroup ("ties"); + +save min_width, max_width, min_height, max_height, thin, thick; + +min_width:= .5 staff_space#; +max_width:= 5 staff_space#; +min_height := .2 staff_space#; +max_height := .4 staff_space#; +thin := 1.2 linethickness; +thick := 2 linethickness; + + +def draw_lyric_tie (expr width_sharp) = + save padding, angularity, width, height, depth; + + padding# := .4 staff_space#; + angularity := 2.5; + width# := max (min (width_sharp, max_width), min_width); + height# := (max (width# - min_width, 0) / (max_width - min_width)) + [min_height, max_height]; + depth# := padding# + height#; + + set_char_box (0, 0, depth#, 0); + + define_pixels (width, padding); + + z1 = (-width / 2, -padding); + z2 = (0, -d); + z3 = (width / 2, -padding); + + penpos1 (thin, angularity * angle (z2 - z1) + 90); + penpos2 (thick, 90); + penpos3 (thin, angularity * angle (z3 - z2) + 90); + + fill z2l + .. simple_serif (z3l, z3r, 90) + .. z2r + .. simple_serif (z1r, z1l, 90) + .. cycle; + + penlabels (1, 2, 3); +enddef; + + +fet_beginchar ("Short lyric tie", "lyric.short"); + draw_lyric_tie (1.25 staff_space#); +fet_endchar; + + +fet_beginchar ("Default lyric tie", "lyric.default"); + draw_lyric_tie (1.75 staff_space#); +fet_endchar; + +fet_endgroup ("ties"); diff --git a/mf/feta-timesignatures.mf b/mf/feta-timesignatures.mf index c7207e2dec..2bbb7d91a5 100644 --- a/mf/feta-timesignatures.mf +++ b/mf/feta-timesignatures.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- implement Time Signatures % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1998--2011 Mats Bengtsson , +% Copyright (C) 1998--2012 Mats Bengtsson , % Christian Mondrup % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/feta-trills.mf b/mf/feta-trills.mf index 02d761ae2a..9ad4e69888 100644 --- a/mf/feta-trills.mf +++ b/mf/feta-trills.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- implement trill symbols % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1998--2011 Jan Nieuwenhuizen +% Copyright (C) 1998--2012 Jan Nieuwenhuizen % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/mf2pt1.mp b/mf/mf2pt1.mp index a8b45aad07..bb6ceda5dc 100644 --- a/mf/mf2pt1.mp +++ b/mf/mf2pt1.mp @@ -10,7 +10,7 @@ %%%% ==================================================================== %%%% %%%% mf2pt1 %%%% -%%%% Copyright (C) 2008 Scott Pakin %%%% +%%%% Copyright (C) 2012 Scott Pakin %%%% %%%% %%%% %%%% This program may be distributed and/or modified under the conditions %%%% %%%% of the LaTeX Project Public License, either version 1.3c of this %%%% @@ -58,7 +58,7 @@ def beginchar(expr c,w_sharp,h_sharp,d_sharp) = w:=charwd*pt; h:=charht*pt; d:=chardp*pt; charic:=0; clearxy; clearit; clearpen; scantokens extra_beginchar; - def to_bp (expr num) = decimal (ceiling (num*bp_per_pixel)) enddef; + def to_bp (expr num) = decimal (round (num*bp_per_pixel)) enddef; special "% MF2PT1: glyph_dimensions 0 " & to_bp (-d) & " " & to_bp(w) & " " & to_bp(h); special "% MF2PT1: font_size " & decimal designsize; special "% MF2PT1: font_slant " & decimal font_slant_; diff --git a/mf/parmesan-accidentals.mf b/mf/parmesan-accidentals.mf index 4c8fae7574..7ea7f14f68 100644 --- a/mf/parmesan-accidentals.mf +++ b/mf/parmesan-accidentals.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- ancient accidentals % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2011 Juergen Reuter +% Copyright (C) 2001--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify @@ -393,4 +393,95 @@ fet_beginchar ("Hufnagel Flat" , "hufnagelM1"); fet_endchar; +%%%%%%%%%%%%%%% +%%% +%%% Glyphs for Kievan Music Notation +%%% +%%%%%%%%%%%%%%% + + +fet_beginchar ("Kievan sharp", "kievan1"); + % This draws the sharp. + % It never occurs in Synodal music and + % can only be found in some early manuscripts. + + z1 = (0.579 staff_space, 1.459 staff_space); + z2 = (1.414 staff_space, -0.904 staff_space); + z3 = (0.187 staff_space, 0.904 staff_space); + + x2 - x1 = x4 - x3; + y1 - y2 = y3 - y4; + + z5 = (1.296 staff_space, 1.613 staff_space); + z6 = (0.090 staff_space, -0.864 staff_space); + z7 = (1.532 staff_space, 0.892 staff_space); + + x5 - x6 = x7 - x8; + y5 - y6 = y7 - y8; + + pickup pensquare xscaled 0.167staff_space + yscaled 0.167staff_space + rotated -69.2; + draw z1{dir -69.2} + .. {dir -74.1}z2; + draw z3{dir -69.2} + .. {dir -74.1}z4; + + pickup pensquare xscaled 0.167staff_space + yscaled 0.167staff_space + rotated -114.6; + draw z5{dir -114.6} + ... {dir -125.0}z6; + draw z7{dir -114.6} + ... {dir -125.0}z8; + + set_char_box (0, 1.6 staff_space#, + 1.6 staff_space#, 1.6 staff_space#); +fet_endchar; + + +fet_beginchar ("Kievan flat", "kievanM1"); + % This draws the flat sign. + % In Synodal music, the flat only occurs on the high B + % but it may be used elsewhere in early manuscripts. + + z1 = (0.452 staff_space, 1.772 staff_space); + z2 = (0.481 staff_space, 1.735 staff_space); + z3 = (0.464 staff_space, 1.626 staff_space); + z4 = (0.249 staff_space, 0.322 staff_space); + z5 = (0.432 staff_space, -0.762 staff_space); + z6 = (0.611 staff_space, -0.583 staff_space); + z7 = (0.611 staff_space, 0.224 staff_space); + z8 = (0.652 staff_space, 0.513 staff_space); + z9 = (0.900 staff_space, 0.684 staff_space); + z10 = (0.872 staff_space, 0.640 staff_space); + z11 = (0.811 staff_space, 0.359 staff_space); + z12 = (0.811 staff_space, -0.587 staff_space); + z13 = (0.338 staff_space, -1.063 staff_space); + z14 = (0.016 staff_space, 0.196 staff_space); + z15 = (0.204 staff_space, 1.316 staff_space); + + fill z13 + .. z14{up} + .. z15{dir 70.8} + .. z1{dir 4.9} + .. z2 + .. z3 + .. z4{down} + .. z5 + -- z6 + -- z7{up} + .. z8 + .. {dir 23}z9 + & z9 + .. z10{dir -135} + .. {down}z11 + -- z12 + -- z13 + & cycle; + + set_char_box (0, 1.0 staff_space#, + 1.0 staff_space#, 1.8 staff_space#); +fet_endchar; + fet_endgroup ("accidentals"); diff --git a/mf/parmesan-clefs.mf b/mf/parmesan-clefs.mf index 2f605f736a..34a09cf20b 100644 --- a/mf/parmesan-clefs.mf +++ b/mf/parmesan-clefs.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- ancient clefs % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2011 Juergen Reuter +% Copyright (C) 2001--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify @@ -1701,4 +1701,61 @@ fet_beginchar ("Hufnagel do/fa clef", "hufnagel.do.fa_change"); fet_endchar; +%%%%%%%% +%% +%% Medieval East-Slavic (Kievan) Notation clefs +%% Code by Aleksandr Andreev +%% +%%%%%%%% + +def draw_kievan_do_clef = + z1 = (1.108 staff_space, 0.554 staff_space); + z2 = (1.063 staff_space, -0.122 staff_space); + z3 = (1.467 staff_space, -1.621 staff_space); + z4 = (1.002 staff_space, -2.253 staff_space); + + y5 = y3; + x4 - x5 = x3 - x4; + + z6 = (0.917 staff_space, -0.383 staff_space); + z7 = (0.012 staff_space, -0.448 staff_space); + z8 = (0, -0.167 staff_space); + z9 = (0.057 staff_space, 0.464 staff_space); + z10 = (0.994 staff_space, 0.387 staff_space); + z11 = (1.023 staff_space, 0.554 staff_space); + + fill z1 + .. z2{down} + .. z3 + -- z4 + -- z5 + .. {up}z6 + & z6{left} + .. z7 + & z7 + .. z8{up} + .. z9 + & z9 + .. {right}z10 + & z10 + .. z11 + -- cycle; + + set_char_box (0, 1.5 staff_space#, + 2.25 staff_space#, 0.55 staff_space#); +enddef; + + +fet_beginchar ("Kievan tsefaut clef", "kievan.do"); + % This draws the Tse-Fa-Ut clef; it is a variant alto clef that + % always occurs on the third line of the staff. + draw_kievan_do_clef; +fet_endchar; + + +fet_beginchar ("Kievan tsefaut clef", "kievan.do_change"); + % This is the same thing as a do clef? + draw_kievan_do_clef; +fet_endchar; + fet_endgroup ("clefs"); diff --git a/mf/parmesan-custodes.mf b/mf/parmesan-custodes.mf index 97cf3c48ef..3729679d72 100644 --- a/mf/parmesan-custodes.mf +++ b/mf/parmesan-custodes.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- ancient custodes % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2000--2011 Juergen Reuter +% Copyright (C) 2000--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/parmesan-dots.mf b/mf/parmesan-dots.mf index 00280eaa2d..4e77d9c465 100644 --- a/mf/parmesan-dots.mf +++ b/mf/parmesan-dots.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- dot vaticana % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2006--2011 Juergen Reuter +% Copyright (C) 2006--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify @@ -35,4 +35,29 @@ fet_beginchar ("duration dot", "dotvaticana"); set_char_box (0, dot_diam#, .5 dot_diam#, .5 dot_diam#); fet_endchar; + +%%%%%%%%%%%%% +%%% +%%% Code for Kievan Music Notation +%%% +%%%%%%%%%%%%% + + +save kievan_dot_diam; +kievan_dot_diam# := staff_space# - stafflinethickness#; +define_whole_pixels (kievan_dot_diam); + + +fet_beginchar ("Kievan augmentation dot", "dotkievan"); + % parameters for superellipse are right, top, left, bottom + fill superellipse ((kievan_dot_diam, 0), + (kievan_dot_diam / 2, kievan_dot_diam / 2), + (0, 0), + (kievan_dot_diam / 2, -kievan_dot_diam / 2), + 0.51); + + set_char_box (0, kievan_dot_diam#, + 0.5 kievan_dot_diam#, 0.5 kievan_dot_diam#); +fet_endchar; + fet_endgroup ("dots"); diff --git a/mf/parmesan-flags.mf b/mf/parmesan-flags.mf index d3d73dec51..13febbca6c 100644 --- a/mf/parmesan-flags.mf +++ b/mf/parmesan-flags.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- ancient flags % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2011 Juergen Reuter +% Copyright (C) 2001--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/parmesan-generic.mf b/mf/parmesan-generic.mf index aff67dbfd8..c07bd21966 100644 --- a/mf/parmesan-generic.mf +++ b/mf/parmesan-generic.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- generic stuff: include lots of files, % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2002--2011 Juergen Reuter +% Copyright (C) 2002--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify @@ -38,7 +38,6 @@ font_x_height staff_space#; fet_beginfont ("parmesan", design_size, "parmesanMusic"); if test = 0: input parmesan-rests; - input parmesan-noteheads; input parmesan-clefs; input parmesan-custodes input parmesan-accidentals; diff --git a/mf/parmesan-macros.mf b/mf/parmesan-macros.mf index 5db67674e9..6554c8b210 100644 --- a/mf/parmesan-macros.mf +++ b/mf/parmesan-macros.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- macros for parmesan font % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2011 Juergen Reuter +% Copyright (C) 2001--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/mf/parmesan-noteheads-generic.mf b/mf/parmesan-noteheads-generic.mf new file mode 100644 index 0000000000..3ccaca9094 --- /dev/null +++ b/mf/parmesan-noteheads-generic.mf @@ -0,0 +1,39 @@ +% Feta (not the Font-En-Tja) music font -- generic stuff: include lots of files +% This file is part of LilyPond, the GNU music typesetter. +% +% Copyright (C) 1997--2012 Han-Wen Nienhuys +% +% +% 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 . + + +if test = -1: + mode := smoke; +fi + +staffsize# := design_size * pt#; + +mode_setup; + +input feta-macros; + +input feta-params; + +input parmesan-macros; + +font_x_height staff_space#; + +fet_beginfont ("parmesan", design_size, "parmesanMusic"); + input parmesan-noteheads; +fet_endfont; diff --git a/mf/parmesan-noteheads.mf b/mf/parmesan-noteheads.mf index 682dc8bc3c..afc713f352 100644 --- a/mf/parmesan-noteheads.mf +++ b/mf/parmesan-noteheads.mf @@ -1,12 +1,11 @@ % Feta (not the Font-En-Tja) music font -- ancient note heads % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2011 Juergen Reuter +% Copyright (C) 2001--2012 Juergen Reuter % % Neo-mensural heads originally by % Christian Mondrup and Mats Bengtsson % -% % 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 @@ -46,6 +45,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); @@ -55,31 +56,30 @@ define_pixels (noteheight); % % % -% MENSURAL NOTATION +% NEO-MENSURAL NOTATION % % % -def draw_neomensural_brevis (expr brevwid, open, full) = - save beamheight, head_width; - save holeheight, stem_width; - save serif_size, serif_protrude; +def draw_neomensural_brevis (expr brevwid, holeheight, open, full) = + save beamheight, head_width, head_height; + save stem_width, serif_size, serif_protrude; - head_width# = brevwid; - holeheight = 3 stafflinethickness; - stem_width = 1.4 stafflinethickness; + head_width# := brevwid; + head_height# := noteheight#; + stem_width := 1.3 linethickness; - define_pixels (head_width); + define_pixels (head_width, head_height); set_char_box (0, head_width#, - noteheight# / 2, noteheight# / 2); + head_height# / 2, head_height# / 2); - 2 beamheight + holeheight = noteheight; - serif_size = (holeheight - stafflinethickness) / 2; - serif_protrude = 1.5 serif_size; + 2 beamheight + holeheight = head_height; + serif_size := blot_diameter; + serif_protrude := .15 head_height; z1l = (0, 0); - z2l = (0, -stafflinethickness / 2); + z2l = (0, - (holeheight - 2 serif_size) / 2); z3r = z2r + serif_size * (1, -1); y4r = y3r; x4r = head_width / 2; @@ -133,50 +133,20 @@ def draw_neomensural_brevis (expr brevwid, open, full) = enddef; -%%% This head does not seem to be used anywhere. Junk me? -- jr -def draw_neomensural_left_stemmed_head (expr wid) = - draw_neomensural_brevis (wid, true, true); - - x6 = x7 = stem_width / 2; - y6 = y5; - y7 = y5 - 2.25 staff_space; - - z17 = (x7, y7 - stem_width / 2); - - penpos6 (stem_width, 0); - penpos7 (stem_width, 0); - - fill z7l - -- z6l - -- z6r - -- z7r - .. z17 - .. cycle; - - penlabels (6, 7); - labels (17); -enddef; - - -%%% This head does not seem to be used anywhere. Junk me? -- jr -fet_beginchar ("Left stemmed notehead", "slneomensural"); - draw_neomensural_left_stemmed_head (2 staff_space#); -fet_endchar; - - % % Some sources (eg. Musix/OpusTeX) think that the appendage should be on % the left, some say right. Right wins democratically. % -def draw_neomensural_longa (expr wid) = - draw_neomensural_brevis (wid, true, true); +def draw_neomensural_longa (expr wid, holeheight, direction) = + draw_neomensural_brevis (wid, holeheight, true, true); - save theta; + save theta, dir; + dir := -direction; - x7r = head_width; - y7 = y5; - z6 - z7 = (stem_width / 2, -staff_space); - theta = angle (z6 - z7) + 90; + x7 = head_width - stem_width / 2; + y7 = dir * y5; + z6 - z7 = (stem_width / 2, -dir * staff_space); + theta = dir * angle (z6 - z7) + 90; penpos7 (stem_width, 0); penpos6 (1.2 stem_width, theta); @@ -196,41 +166,23 @@ def draw_neomensural_longa (expr wid) = enddef; -% -% En wij presenteren U: de opvolgster van Emily -% -% (ze is wel breed) -% -fet_beginchar ("Neo-mensural maxima notehead", "sM3neomensural"); - draw_neomensural_longa (2.6 staff_space#); -fet_endchar; - - -fet_beginchar ("Neo-mensural longa notehead", "sM2neomensural"); - draw_neomensural_longa (2 staff_space#); -fet_endchar; - - -fet_beginchar ("Neo-mensural brevis notehead", "sM1neomensural"); - draw_neomensural_brevis (2 staff_space#, true, true); -fet_endchar; - - -def draw_neomensural_black_head (expr wid, height) = - save head_width; +def draw_neomensural_black_head (expr width, height) = + save head_width, head_height, stem_width; save ne, nw, ne_dist, nw_dist; pair ne, nw, ne_dist, nw_dist; - head_width# = wid; + head_width# := width; + head_height# := height; + stem_width# := 1.3 linethickness#; set_char_box (0, head_width#, - height / 2, height / 2); + head_height# / 2, head_height# / 2); charwx := head_width# / 2; - charwy := height / 2; + charwy := head_height# / 2 - 2 stem_width#; y3 = y1 = 0; - x2 = x4 = (x1 + x3) / 2; + x2 = x4 = 1/2 [x1, x3]; pickup pencircle scaled blot_diameter; @@ -240,130 +192,201 @@ def draw_neomensural_black_head (expr wid, height) = rt x3 = w; ne := unitvector (z2 - z1); - nw_dist := (ne rotated 90) * 0.5 blot_diameter; + nw_dist := (ne rotated 90) * blot_diameter / 2; nw := unitvector (z2 - z3); - ne_dist := (nw rotated -90) * 0.5 blot_diameter; - - fill lft z1{up} - .. (z1 + nw_dist){ne} - -- (z2 + nw_dist){ne} - .. top z2{right} - .. (z2 + ne_dist){-nw} - -- (z3 + ne_dist){-nw} - .. rt z3{down} - .. (z3 - nw_dist){-ne} - -- (z4 - nw_dist){-ne} - .. bot z4{left} - .. (z4 - ne_dist){nw} - -- (z1 - ne_dist){nw} + ne_dist := (nw rotated -90) * blot_diameter / 2; + + fill lft z1 + .. (z1 + nw_dist) + -- (z2 + nw_dist) + .. top z2 + .. (z2 + ne_dist) + -- (z3 + ne_dist) + .. rt z3 + .. (z3 - nw_dist) + -- (z4 - nw_dist) + .. bot z4 + .. (z4 - ne_dist) + -- (z1 - ne_dist) .. cycle; labels (1, 2, 3, 4); enddef; -def draw_neomensural_open_head (expr wid, height)= - draw_neomensural_black_head (wid, height); +def draw_neomensural_open_head (expr width, height)= + draw_neomensural_black_head (width, height); - save diamNW, diamSW; + save headNW, headSW, stem_width; - diamNW = length (z2 - z1) + blot_diameter; - diamSW = length (z4 - z1) + blot_diameter; + headNW = length (z2 - z1) + blot_diameter; + headSW = length (z4 - z1) + blot_diameter; + stem_width = 1.3 linethickness; save hole_widthNW, hole_widthSW; - hole_widthNW = 0.34 diamNW ; - hole_widthSW + 2.6 linethickness = diamSW; - - (z7 + z5) / 2 = (w / 2, 0); - (z8 + z6) / 2 = (w / 2, 0); - z6 - z5 = hole_widthNW * unitvector (z2 - z1); - z7 - z6 = hole_widthSW * unitvector (z4 - z1); - - unfill z5 - -- z6 - -- z7 - -- z8 - -- cycle; + hole_widthNW = .25 headNW; + hole_widthSW + 2 stem_width = headSW; + + (rt z7 + lft z5) / 2 = (w / 2, 0); + (bot z8 + top z6) / 2 = (w / 2, 0); + z6 - z5 = (hole_widthNW - blot_diameter) * unitvector (z2 - z1); + z7 - z6 = (hole_widthSW - blot_diameter) * unitvector (z4 - z1); + + unfill lft z5 + .. (z5 + nw_dist) + -- (z6 + nw_dist) + .. top z6 + .. (z6 + ne_dist) + -- (z7 + ne_dist) + .. rt z7 + .. (z7 - nw_dist) + -- (z8 - nw_dist) + .. bot z8 + .. (z8 - ne_dist) + -- (z5 - ne_dist) + .. cycle; labels (5, 6, 7, 8); enddef; % -% WL says the thin lines should be thinner. +% Neo-mensural maxima/longa/brevis % -fet_beginchar ("Harmonic notehead (Neo-mensural open)", "s0harmonic"); - draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#); - charwx := head_width#; - charwy := 0; +% En wij presenteren U: de opvolgster van Emily +% +% (ze is wel breed) +% + +save nm_maxima_width, nm_longa_width, nm_brevis_width; +save nm_holeheight, nm_red_holeheight; + +nm_maxima_width := 2.6 staff_space#; +nm_longa_width := 2 staff_space#; +nm_brevis_width := nm_longa_width; +nm_holeheight := 4 linethickness; +nm_red_holeheight := 2.5 linethickness; + +fet_beginchar ("Neo-mensural maxima notehead (up)", "uM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_holeheight, 1); fet_endchar; +fet_beginchar ("Neo-mensural maxima notehead (down)", "dM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_holeheight, -1); +fet_endchar; -fet_beginchar ("Harmonic notehead (Neo-mensural black)", "s2harmonic"); - draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#); - charwx := head_width#; - charwy := 0; +fet_beginchar ("Neo-mensural longa notehead (up)", "uM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_holeheight, 1); fet_endchar; +fet_beginchar ("Neo-mensural longa notehead (down)", "dM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_holeheight, -1); +fet_endchar; -fet_beginchar ("Neo-mensural semibrevis head", "s0neomensural"); - draw_neomensural_open_head (staff_space#, noteheight#); +fet_beginchar ("Neo-mensural brevis notehead", "sM1neomensural"); + draw_neomensural_brevis (nm_brevis_width, nm_holeheight, true, true); fet_endchar; +fet_beginchar ("Neo-mensural maxima notehead (up, reduced hole)", "urM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_red_holeheight, 1); +fet_endchar; -fet_beginchar ("Neo-mensural minima head", "s1neomensural"); - draw_neomensural_open_head (staff_space#, noteheight#); +fet_beginchar ("Neo-mensural maxima notehead (down, reduced hole)", "drM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_red_holeheight, -1); fet_endchar; +fet_beginchar ("Neo-mensural longa notehead (up, reduced hole)", "urM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_red_holeheight, 1); +fet_endchar; -fet_beginchar ("Neo-mensural semiminima head", "s2neomensural"); - draw_neomensural_black_head (staff_space#, noteheight#); +fet_beginchar ("Neo-mensural longa notehead (down, reduced hole)", "drM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_red_holeheight, -1); fet_endchar; +fet_beginchar ("Neo-mensural brevis notehead (reduced hole)", "srM1neomensural"); + draw_neomensural_brevis (nm_brevis_width, nm_red_holeheight, true, true); +fet_endchar; -def draw_mensural_brevis (expr wid, open, full) = - % TODO. For the moment, fall back to draw_neomensural_brevis. - draw_neomensural_brevis (wid, open, full); -enddef; +% +% Neo-mensural semibrevis/minima/semiminima +% -%%% This head does not seem to be used anywhere. Junk me? -- jr -def draw_mensural_left_stemmed_head (expr wid, open, full) = - draw_mensural_brevis (wid, open, full); +save nm_height, nm_width; +nm_height := noteheight#; +nm_width := staff_space#; +fet_beginchar ("Neo-mensural semibrevis head", "s0neomensural"); + draw_neomensural_open_head (nm_width, nm_height); +fet_endchar; - x6 = x7 = stem_width / 2; - y6 = y5; - y7 = y5 - 2.25 staff_space; +fet_beginchar ("Neo-mensural minima head", "s1neomensural"); + draw_neomensural_open_head (nm_width, nm_height); +fet_endchar; - z17 = (x7, y7 - stem_width / 2); +fet_beginchar ("Neo-mensural semiminima head", "s2neomensural"); + draw_neomensural_black_head (nm_width, nm_height); +fet_endchar; - penpos6 (stem_width, 0); - penpos7 (stem_width, 0); +%%%%%%%% +% +% +% +% HARMONIC NOTATION +% +% +% - fill z7l - -- z6l - -- z6r - -- z7r - .. z17 - .. cycle; +% +% WL says the thin lines should be thinner. +% - penlabels (6, 7); - labels (17); +fet_beginchar ("Harmonic notehead (Neo-mensural open)", "s0harmonic"); + draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#); + charwx := head_width#; + charwy := 0; +fet_endchar; + +fet_beginchar ("Harmonic notehead (Neo-mensural black)", "s2harmonic"); + draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#); + charwx := head_width#; + charwy := 0; +fet_endchar; + + +%%%%%%%% +% +% +% +% MENSURAL/PETRUCCI NOTATIONS +% +% +% + +def draw_mensural_brevis (expr wid, holeheight, open, full) = + % TODO. For the moment, fall back to draw_neomensural_brevis. + draw_neomensural_brevis (wid, holeheight, open, full); enddef; -def draw_mensural_longa (expr wid, open, full) = - draw_mensural_brevis (wid, open, full); +def draw_mensural_longa (expr wid, holeheight, open, full, direction, ligature) = + draw_mensural_brevis (wid, holeheight, open, full); + + save dir; + dir := -direction; x6 = x7 = head_width - stem_width / 2; - y6 = y5; - y7 = y5 - 2.25 staff_space; + y6 = dir * y5; + y7 = dir * y5 -1.75 dir * staff_space; - z17 = (x7, y7 - stem_width / 2); + z17 = (x7, y7 - dir * stem_width / 2); penpos6 (stem_width, 0); - penpos7 (stem_width, 0); + if ligature: + penpos7 (stem_width, 0); + else: + penpos7 (1.5 stem_width, 0); + fi; fill z7l -- z6l @@ -377,72 +400,6 @@ def draw_mensural_longa (expr wid, open, full) = enddef; -%%% This head does not seem to be used anywhere. Junk me? -- jr -fet_beginchar ("Mensural left stemmed notehead", "slmensural"); - draw_mensural_left_stemmed_head (staff_space#, true, true); -fet_endchar; - - -fet_beginchar ("Mensural maxima notehead", "sM3mensural"); - draw_mensural_longa (2.0 staff_space#, true, true); -fet_endchar; - - -fet_beginchar ("Mensural maxima notehead in ligaturae", "sM3ligmensural"); - draw_mensural_brevis (2.0 staff_space#, true, true); -fet_endchar; - - -fet_beginchar ("Mensural longa notehead", "sM2mensural"); - draw_mensural_longa (staff_space#, true, true); -fet_endchar; - - -fet_beginchar ("Mensural brevis notehead", "sM1mensural"); - draw_mensural_brevis (staff_space#, true, true); -fet_endchar; - - -fet_beginchar ("Black mensural maxima notehead", "sM3blackmensural"); - draw_mensural_longa (2.0 staff_space#, false, false); -fet_endchar; - - -fet_beginchar ("Black mensural maxima notehead in ligaturae", "sM3blackligmensural"); - draw_mensural_brevis (2.0 staff_space#, false, false); -fet_endchar; - - -fet_beginchar ("Black mensural longa notehead", "sM2blackmensural"); - draw_mensural_longa (staff_space#, false, false); -fet_endchar; - - -fet_beginchar ("Black mensural brevis notehead", "sM1blackmensural"); - draw_mensural_brevis (staff_space#, false, false); -fet_endchar; - - -fet_beginchar ("Semi-colored mensural maxima notehead", "sM3semimensural"); - draw_mensural_longa (2.0 staff_space#, true, false); -fet_endchar; - - -fet_beginchar ("Semi-colored mensural maxima notehead in ligaturae", "sM3semiligmensural"); - draw_mensural_brevis (2.0 staff_space#, true, false); -fet_endchar; - - -fet_beginchar ("Semi-colored mensural longa notehead", "sM2semimensural"); - draw_mensural_longa (staff_space#, true, false); -fet_endchar; - - -fet_beginchar ("Semi-colored mensural brevis notehead", "sM1semimensural"); - draw_mensural_brevis (staff_space#, true, false); -fet_endchar; - - def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) = save head_width, head_height; save ellipse, ellipse_r; @@ -455,7 +412,7 @@ def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) = head_height# / 2, head_height# / 2); charwx := head_width# / 2; - charwy := head_height# / 2 - linethickness#; + charwy := head_height# / 2 - 2 linethickness#; define_pixels (head_width, head_height); @@ -504,6 +461,246 @@ def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) = enddef; +% +% Mensural/Petrucci maxima/longa/brevis +% + +save m_maxima_width, m_longa_width, m_brevis_width, + m_holeheight, m_red_holeheight; +m_maxima_width := 2.0 staff_space#; +m_longa_width := staff_space#; +m_brevis_width := m_longa_width; +m_holeheight := nm_holeheight; +m_red_holeheight := nm_red_holeheight; + + +fet_beginchar ("Mensural maxima notehead (up)", "uM3mensural"); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, true, 1, false); +fet_endchar; + + +fet_beginchar ("Mensural maxima notehead (down)", "dM3mensural"); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, true, -1, false); +fet_endchar; + + +fet_beginchar ("Mensural maxima notehead (ligature)", "sM3ligmensural"); + draw_mensural_brevis (m_maxima_width, m_holeheight, true, true); +fet_endchar; + + +fet_beginchar ("Mensural longa notehead (up)", "uM2mensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, true, 1, false); +fet_endchar; + + +fet_beginchar ("Mensural longa notehead (down)", "dM2mensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, true, -1, false); +fet_endchar; + +fet_beginchar ("Mensural longa notehead (ligature)", "sM2ligmensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, true, -1, true); +fet_endchar; + + +fet_beginchar ("Mensural brevis notehead", "sM1mensural"); + draw_mensural_brevis (m_brevis_width, m_holeheight, true, true); +fet_endchar; + + +fet_beginchar ("Mensural maxima notehead (up, reduced hole)", + "urM3mensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, true, 1, false); +fet_endchar; + + +fet_beginchar ("Mensural maxima notehead (down, reduced hole)", + "drM3mensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, true, -1, false); +fet_endchar; + + +fet_beginchar ("Mensural maxima notehead (ligature, reduced hole)", + "srM3ligmensural"); + draw_mensural_brevis (m_maxima_width, m_red_holeheight, true, true); +fet_endchar; + + +fet_beginchar ("Mensural longa notehead (up, reduced hole)", + "urM2mensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, true, 1, false); +fet_endchar; + + +fet_beginchar ("Mensural longa notehead (down, reduced hole)", + "drM2mensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, true, -1, false); +fet_endchar; + + +fet_beginchar ("Mensural longa notehead (ligature, reduced hole)", + "srM2ligmensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, true, -1, true); +fet_endchar; + + +fet_beginchar ("Mensural brevis notehead (reduced hole)", "srM1mensural"); + draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, true); +fet_endchar; + + +% +% Semi-colored mensural/Petrucci maxima/longa/brevis +% + +fet_beginchar ("Semi-colored mensural maxima notehead (up)", + "uM3semimensural"); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, false, 1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural maxima notehead (down)", + "dM3semimensural"); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, false, -1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural maxima notehead (ligature)", + "sM3semiligmensural"); + draw_mensural_brevis (m_maxima_width, m_holeheight, true, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural longa notehead (up)", + "uM2semimensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, false, 1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural longa notehead (down)", + "dM2semimensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, false, -1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural longa notehead (ligature)", + "sM2semiligmensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, false, -1, true); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural brevis notehead", "sM1semimensural"); + draw_mensural_brevis (m_brevis_width, m_holeheight, true, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural maxima notehead (up, reduced hole)", + "urM3semimensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, false, 1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural maxima notehead (down, reduced hole)", + "drM3semimensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, false, -1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural maxima notehead (ligature, reduced hole)", + "srM3semiligmensural"); + draw_mensural_brevis (m_maxima_width, m_red_holeheight, true, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural longa notehead (up, reduced hole)", + "urM2semimensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, false, 1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural longa notehead (down, reduced hole)", + "drM2semimensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, false, -1, false); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural longa notehead (ligature, reduced hole)", + "srM2semiligmensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, false, -1, true); +fet_endchar; + + +fet_beginchar ("Semi-colored mensural brevis notehead (reduced hole)", + "srM1semimensural"); + draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, false); +fet_endchar; + + +% +% Black mensural/Petrucci maxima/longa/brevis +% + +fet_beginchar ("Black mensural maxima notehead (up)", "uM3blackmensural"); + draw_mensural_longa (m_maxima_width, 0, false, false, 1, false); +fet_endchar; + + +fet_beginchar ("Black mensural maxima notehead (down)", "dM3blackmensural"); + draw_mensural_longa (m_maxima_width, 0, false, false, -1, false); +fet_endchar; + + +fet_beginchar ("Black mensural maxima notehead (ligature)", + "sM3blackligmensural"); + draw_mensural_brevis (m_maxima_width, 0, false, false); +fet_endchar; + + +fet_beginchar ("Black mensural longa notehead (up)", "uM2blackmensural"); + draw_mensural_longa (m_longa_width, 0, false, false, 1, false); +fet_endchar; + + +fet_beginchar ("Black mensural longa notehead (down)", "dM2blackmensural"); + draw_mensural_longa (m_longa_width, 0, false, false, -1, false); +fet_endchar; + + +fet_beginchar ("Black mensural longa notehead (ligature)", + "sM2blackligmensural"); + draw_mensural_longa (m_longa_width, 0, false, false, -1, true); +fet_endchar; + + +fet_beginchar ("Black mensural brevis notehead", "sM1blackmensural"); + draw_mensural_brevis (m_brevis_width, 0, false, false); +fet_endchar; + + +% +% Mensural semibrevis/minima/semiminima +% + fet_beginchar ("Mensural semibrevis head", "s0mensural"); draw_diamond_head (staff_space#, 0.15, 0.30, 30, true); fet_endchar; @@ -519,44 +716,53 @@ fet_beginchar ("Mensural semiminima head", "s2mensural"); fet_endchar; +% +% Black mensural semibrevis/minima/semiminima +% + fet_beginchar ("Black mensural semibrevis head", "s0blackmensural"); draw_diamond_head (staff_space#, 0.15, 0.30, 30, false); fet_endchar; +% +% Petrucci semibrevis/minima/semiminima +% +% These values can be measured in several sources. +% I used "Modulis ex sacris literis delecti, Liber primus" +% Josquin Desprez, BNF + +save petrucci_width, petrucci_height; +petrucci_height := 1.4 noteheight#; +petrucci_width := .72 petrucci_height; + fet_beginchar ("Petrucci semibrevis head", "s0petrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_open_head (staff_space#, 1.8 staff_space#); + draw_neomensural_open_head (petrucci_width, petrucci_height); fet_endchar; - fet_beginchar ("Petrucci minima head", "s1petrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_open_head (staff_space#, 1.8 staff_space#); + draw_neomensural_open_head (petrucci_width, petrucci_height); fet_endchar; - fet_beginchar ("Petrucci semiminima head", "s2petrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, false); - draw_neomensural_black_head (staff_space#, 1.8 staff_space#); + draw_neomensural_black_head (petrucci_width, petrucci_height); fet_endchar; +% +% Black Petrucci semibrevis/minima/semiminima +% + fet_beginchar ("Petrucci colored semibrevis head", "s0blackpetrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_black_head (staff_space#, 1.8 staff_space#); + draw_neomensural_black_head (petrucci_width, petrucci_height); fet_endchar; - fet_beginchar ("Petrucci colored minima head", "s1blackpetrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_black_head (staff_space#, 1.8 staff_space#); + draw_neomensural_black_head (petrucci_width, petrucci_height); fet_endchar; - fet_beginchar ("Petrucci colored semiminima head", "s2blackpetrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_black_head (staff_space#, 1.8 staff_space#); + draw_neomensural_black_head (petrucci_width, petrucci_height); fet_endchar; @@ -1576,4 +1782,337 @@ fet_beginchar ("Hufnagel pes lower punctum", "shufnagel.lpes") fet_endchar; +%%%%%%%%%%%% +%% +%% Noteheads for Medieval East-Slavic (Kievan) Notation +%% Code by Aleksandr Andreev +%% +%%%%%%%%%%%% + + +fet_beginchar ("Kievan final note", "sM2kievan"); + % This draws the Final Note. + % It is the last note of a piece of music + % equivalent to having a whole note and fermata in CMN. + % It always has an invariant representation. + + vert_bar_thickness# := 2 * stafflinethickness#; + vert_height# := 1.5 * staff_space#; + blank_space# := 1.5 * stafflinethickness#; + note_width# := vert_height# - 2 * vert_bar_thickness#; + + define_pixels (vert_height, blank_space, note_width); + define_blacker_pixels (vert_bar_thickness); + + path p; + p := (0, blank_space) + -- (0, staff_space - blank_space) + -- (note_width + 0.5 vert_bar_thickness, + staff_space - blank_space) + -- (note_width + 0.5 vert_bar_thickness, blank_space) + -- cycle; + fill p; + fill p reflectedabout ((0, 0), (1, 0)); + + pickup pensquare xscaled vert_bar_thickness; + + draw (note_width + 0.5 * vert_bar_thickness, vert_height) + -- (note_width + 0.5 * vert_bar_thickness, -vert_height); + + set_char_box (0, note_width# + vert_bar_thickness#, + vert_height#, vert_height#); +fet_endchar; + + +fet_beginchar ("Kievan recitative mark", "sM1kievan"); + inner_width# := 4 * staff_space#; + vert_bar_thickness# := 2 * stafflinethickness#; + vert_bar_height# := staff_space# - stafflinethickness#; + blank_space# := 0.20 * vert_bar_height#; + + define_pixels (inner_width, blank_space, vert_bar_height); + define_blacker_pixels (vert_bar_thickness); + + path p; + p := (2.5 * vert_bar_thickness, blank_space) + -- (2.5 * vert_bar_thickness, vert_bar_height - blank_space) + -- (3.5 * vert_bar_thickness + inner_width, + vert_bar_height - blank_space) + -- (3.5 * vert_bar_thickness + inner_width, blank_space) + -- cycle; + fill p; + fill p reflectedabout ((0, 0), (1, 0)); + + % draw the four vertical lines + pickup pensquare xscaled vert_bar_thickness; + p := (0.5 * vert_bar_thickness, vert_bar_height) + -- (0.5 * vert_bar_thickness, -vert_bar_height); + draw p; + draw p shifted (2 * vert_bar_thickness, 0); + draw p shifted (3 * vert_bar_thickness + inner_width, 0); + draw p shifted (5 * vert_bar_thickness + inner_width, 0); + + set_char_box (0, 6 * vert_bar_thickness# + inner_width#, + vert_bar_height#, vert_bar_height#); +fet_endchar; + + +fet_beginchar ("Kievan whole note", "s0kievan"); + % the amount by which top and bottom diamond overlap + overlap# := stafflinethickness#; + height# := staff_space# - stafflinethickness#; + width# := height# + overlap#; + + define_pixels (overlap, height, width); + + % parameters for superellipse are right, top, left, bottom + fill superellipse ((width, 0.5 * (height + overlap)), + (width/2, height + overlap), + (0, 0.5 * (height + overlap)), + (width/2, -overlap), + 0.51); + fill superellipse ((width, -0.5 * (height + overlap)), + (width/2, overlap), + (0, -0.5 * (height + overlap)), + (width/2, -height - overlap), + 0.51); + + set_char_box (0, width#, height# + overlap#, + height# + overlap#); +fet_endchar; + + +fet_beginchar ("Kievan quarter note down", "d2kievan"); + z1 = (0.09 * staff_space, 0.33 * staff_space); + z2 = (0.66 * staff_space, 0.37 * staff_space); + z3 = (0.99 * staff_space, 0.36 * staff_space); + z4 = (0.90 * staff_space, -1.05 * staff_space); + z5 = (1.02 * staff_space, -2.19 * staff_space); + z6 = (0.60 * staff_space, -2.49 * staff_space); + z7 = (0.58 * staff_space, -1.91 * staff_space); + z8 = (0.73 * staff_space, -0.35 * staff_space); + z9 = (0.02 * staff_space, -0.39 * staff_space); + z10 = (0, -0.24 * staff_space); + + fill z1{dir 8.6} + .. z2 + .. z3 + & z3 + .. z4 + .. z5 + -- z6 + .. z7 + .. z8 + & z8{left} + .. z9 + & z9 + .. z10 + ... {dir 75}cycle; + + set_char_box (0, 1.02 staff_space#, + 2.50 staff_space#, 0.40 staff_space#); +fet_endchar; + + +fet_beginchar ("Kievan quarter note up", "u2kievan"); + z1 = (0.090 staff_space, -0.330 staff_space); + z2 = (0.664 staff_space, -0.371 staff_space); + z3 = (0.986 staff_space, -0.363 staff_space); + z4 = (0.897 staff_space, 1.051 staff_space); + z5 = (1.019 staff_space, 2.387 staff_space); + z6 = (0.603 staff_space, 2.587 staff_space); + z7 = (0.583 staff_space, 1.911 staff_space); + z8 = (0.725 staff_space, 0.346 staff_space); + z9 = (0.017 staff_space, 0.391 staff_space); + z10 = (0, 0.240 staff_space); + + fill z1{dir -6.9} + .. z2 + .. z3 + & z3 + .. z4 + .. z5 + -- z6 + .. z7 + .. z8 + & z8{left} + .. z9 + & z9 + .. z10 + ... {dir -76.9}cycle; + + set_char_box (0, 1.02 staff_space#, + 0.40 staff_space#, 2.6 staff_space#); +fet_endchar; + + +fet_beginchar ("Kievan half note (line position)", "s1kievan"); + % This draws the half note with a short tail up and a long tail down. + % This version of the half note is used on any line of the staff. + + z1 = (1.031 staff_space, 0.945 staff_space); + z2 = (0.945 staff_space, -0.122 staff_space); + z3 = (1.059 staff_space, -1.393 staff_space); + z4 = (0.713 staff_space, -1.564 staff_space); + z5 = (0.672 staff_space, -0.729 staff_space); + z6 = (0.684 staff_space, -0.318 staff_space); + z7 = (0.448 staff_space, -0.326 staff_space); + z8 = (0, -0.281 staff_space); + z9 = (0.086 staff_space, 0.350 staff_space); + z10 = (0.746 staff_space, 0.277 staff_space); + z11 = (0.909 staff_space, 0.921 staff_space); + + fill z1 + .. z2{down} + .. z3 + -- z4 + .. z5{up} + .. z6 + & z6 + .. z7{left} + .. z8 + -- z9 + .. {right}z10 + & z10{up} + .. z11 + -- cycle; + + set_char_box (0, 1.06 staff_space#, + 1.6 staff_space#, 1.0 staff_space#); +fet_endchar; + + +fet_beginchar ("Kievan half note (space position)", "sr1kievan"); + % This draws the half note with a short tail down and a long tail up. + % This version of the half note is used in any space of the staff. + + z1 = (1.071 staff_space, 1.426 staff_space); + z2 = (0.974 staff_space, 0.191 staff_space); + z3 = (1.059 staff_space, -0.994 staff_space); + z4 = (0.713 staff_space, -1.169 staff_space); + z5 = (0.676 staff_space, -0.436 staff_space); + z6 = (0.684 staff_space, -0.310 staff_space); + z7 = (0.448 staff_space, -0.322 staff_space); + z8 = (0, -0.277 staff_space); + z9 = (0.0856 staff_space, 0.359 staff_space); + z10 = (0.746 staff_space, 0.281 staff_space); + z11 = (0.807 staff_space, 0.847 staff_space); + z12 = (0.945 staff_space, 1.401 staff_space); + + fill z1 + .. z2{down} + .. z3 + -- z4 + .. z5{up} + .. z6 + & z6 + .. z7{left} + .. z8 + -- z9 + .. z10{right} + & z10 + .. z11 + .. z12 + -- cycle; + + set_char_box (0, 1.1 staff_space#, + 1.0 staff_space#, 1.4 staff_space#); +fet_endchar; + + +fet_beginchar ("Kievan eighth note (down)", "d3kievan"); + % This draws the eighth note. + % This form of the eight note occurs on the third line or higher + % and sometimes between the second line and the third line. + + z1 = (0.261 staff_space, 0.416 staff_space); + z2 = (1.022 staff_space, 0.269 staff_space); + z3 = (0.664 staff_space, -0.603 staff_space); + z4 = (1.259 staff_space, -0.726 staff_space); + z5 = (1.055 staff_space, -2.012 staff_space); + z6 = (1.186 staff_space, -2.794 staff_space); + z7 = (0.778 staff_space, -2.999 staff_space); + z8 = (0.741 staff_space, -2.567 staff_space); + z9 = (0.941 staff_space, -1.467 staff_space); + z10 = (0.33 staff_space, -1.340 staff_space); + z11 = (0.631 staff_space, -0.448 staff_space); + z12 = (0, -0.334 staff_space); + + fill z1{right} + .. z2 + -- z3{right} + .. z4 + & z4 + .. z5{down} + .. z6 + -- z7 + .. z8{up} + .. z9 + & z9 + .. {left}z10 + & z10{dir 78.7} + .. z11 + & z11 + .. {left}z12 + & z12{dir 78.7} + .. {dir 62}cycle; + + set_char_box (0, 1.25 staff_space#, + 3.0 staff_space#, 0.5 staff_space#); +fet_endchar; + + +fet_beginchar ("Kievan eighth note (up)", "u3kievan"); + % This draws the flagged eighth note. + % This version of the eighth note occurs on the second line or lower. + + % first, draw the upside down quarter note + z1 = (0.090 staff_space, -0.33 staff_space); + z2 = (0.664 staff_space, -0.371 staff_space); + z3 = (0.986 staff_space, -0.363 staff_space); + z4 = (0.896 staff_space, 1.051 staff_space); + z5 = (1.019 staff_space, 2.387 staff_space); + z6 = (0.603 staff_space, 2.587 staff_space); + z7 = (0.583 staff_space, 1.911 staff_space); + z8 = (0.725 staff_space, 0.346 staff_space); + z9 = (0.016 staff_space, 0.391 staff_space); + z10 = (0, 0.240 staff_space); + + fill z1{dir -6.9} + .. z2 + .. z3 + & z3 + .. z4 + .. z5 + -- z6 + .. z7 + .. z8 + & z8{left} + .. z9 + & z9 + .. z10 + ... {dir -76.9}cycle; + + % now, draw the stem + z11 = (0.033 staff_space, 2.823 staff_space); + z12 = (0.391 staff_space, 2.648 staff_space); + z13 = (0.354 staff_space, 2.290 staff_space); + z14 = (0.676 staff_space, 1.076 staff_space); + z15 = (0.693 staff_space, 0.88 staff_space); + z16 = (0.208 staff_space, 1.699 staff_space); + z17 = (0.024 staff_space, 2.616 staff_space); + + fill z11 + -- z12 + .. z13{down} + .. z14 + -- z15 + .. z16 + .. z17{up} + .. cycle; + + set_char_box (0, 1.0 staff_space#, + 0.4 staff_space#, 2.9 staff_space#); +fet_endchar; + fet_endgroup ("noteheads"); diff --git a/mf/parmesan-noteheads11.mf b/mf/parmesan-noteheads11.mf new file mode 100644 index 0000000000..288695a45e --- /dev/null +++ b/mf/parmesan-noteheads11.mf @@ -0,0 +1,13 @@ +% feta-noteheads11.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 11.22; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads13.mf b/mf/parmesan-noteheads13.mf new file mode 100644 index 0000000000..ad126423aa --- /dev/null +++ b/mf/parmesan-noteheads13.mf @@ -0,0 +1,13 @@ +% feta-noteheads13.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 12.60; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads14.mf b/mf/parmesan-noteheads14.mf new file mode 100644 index 0000000000..f5d3a41df7 --- /dev/null +++ b/mf/parmesan-noteheads14.mf @@ -0,0 +1,13 @@ +% feta-noteheads14.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 14.14; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads16.mf b/mf/parmesan-noteheads16.mf new file mode 100644 index 0000000000..3db517fa04 --- /dev/null +++ b/mf/parmesan-noteheads16.mf @@ -0,0 +1,13 @@ +% feta-noteheads16.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 15.87; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads18.mf b/mf/parmesan-noteheads18.mf new file mode 100644 index 0000000000..ed0f99ec0e --- /dev/null +++ b/mf/parmesan-noteheads18.mf @@ -0,0 +1,13 @@ +% feta-noteheads18.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 17.82; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads20.mf b/mf/parmesan-noteheads20.mf new file mode 100644 index 0000000000..8891652bb8 --- /dev/null +++ b/mf/parmesan-noteheads20.mf @@ -0,0 +1,13 @@ +% feta-noteheads20.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 20; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads23.mf b/mf/parmesan-noteheads23.mf new file mode 100644 index 0000000000..fe64e6f496 --- /dev/null +++ b/mf/parmesan-noteheads23.mf @@ -0,0 +1,13 @@ +% feta-noteheads23.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 22.45; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-noteheads26.mf b/mf/parmesan-noteheads26.mf new file mode 100644 index 0000000000..082ffc208d --- /dev/null +++ b/mf/parmesan-noteheads26.mf @@ -0,0 +1,13 @@ +% feta-noteheads26.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; + +design_size := 25.20; +test := 0; + + +input parmesan-noteheads-generic; + +end. + diff --git a/mf/parmesan-rests.mf b/mf/parmesan-rests.mf index e6684a4eec..b8b3c51ce8 100644 --- a/mf/parmesan-rests.mf +++ b/mf/parmesan-rests.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- ancient rests % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2011 Juergen Reuter +% Copyright (C) 2001--2012 Juergen Reuter % % Neo-mensural rests originally by % Christian Mondrup and Mats Bengtsson. diff --git a/mf/parmesan-scripts.mf b/mf/parmesan-scripts.mf index cbbb3b2300..7899fcba42 100644 --- a/mf/parmesan-scripts.mf +++ b/mf/parmesan-scripts.mf @@ -1,7 +1,7 @@ % Feta (not the Font-En-Tja) music font -- ancient script symbols % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2002--2011 Juergen Reuter +% Copyright (C) 2002--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify @@ -239,4 +239,62 @@ fet_beginchar ("signum congruentiae down", "dsignumcongruentiae"); fet_endchar; +%%%%%%%%%%%%% +%%%% +%%%% Code for Kievan Notation +%%%% +%%%%%%%%%%%%% + + +fet_beginchar ("Kievan end of piece (slash)", "barline.kievan"); + % This draws the end of piece figure. + % This figure is placed at the end of the musical piece, + % after the staff. + + save hair_thickness, thick_thickness, width, depth, height, padding; + hair# = 1.9 linethickness#; + thick# = 6.0 linethickness#; + width# = 1.0 staff_space#; + height# + depth# = 4 staff_space#; + depth# = height# + hair#; + padding# = .2 staff_space#; + + set_char_box (0, width# + 3 padding#, depth#, height# + staff_space#); + define_pixels (hair, thick, width, padding, depth, height); + + x7r - x2l = width; + y1 - y3r = depth + height + linethickness / 2; + z3 = z2; + z4 = .5 [z1, z2] + = (width / 2 + padding, hair / 8); + z5 = (x2 - .17 staff_space, 9/10 [y2, y1]); + z7 - z6 = (.5 staff_space, -.2 staff_space); + .4 [z6, z7] = 7/6 [z2, z1]; + + penpos1 (hair, 0); + penpos2 (hair, 0); + penpos3 (hair, -90); + penpos4 (thick, 10); + penpos5 (thick, 35); + penpos6 (hair, -90); + penpos7 (.5 thick, -120); + + penlabels (1, 2, 3, 4, 5, 6, 7); + + penstroke z1e + -- z2e; + + fill z3l + -- z2l{z2 - z1} + .. z3r{right} + .. z4r + .. z5r + .. z6r + .. simple_serif (z7r, z7l, 80) + .. {left}z6l + .. z5l + .. z4l + .. {left}cycle; +fet_endchar; + fet_endgroup ("scripts"); diff --git a/mf/parmesan-timesignatures.mf b/mf/parmesan-timesignatures.mf index 4bca604c79..598835586a 100644 --- a/mf/parmesan-timesignatures.mf +++ b/mf/parmesan-timesignatures.mf @@ -1,9 +1,9 @@ % Feta (not the Font-En-Tja) music font -- ancient time signatures % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 1998--2011 Mats Bengtsson , +% Copyright (C) 1998--2012 Mats Bengtsson , % Christian Mondrup -% Copyright (C) 2002--2011 Juergen Reuter +% Copyright (C) 2002--2012 Juergen Reuter % % % LilyPond is free software: you can redistribute it and/or modify diff --git a/out/ChangeLog b/out/ChangeLog index f62f9b1af9..3605fc9a18 100644 --- a/out/ChangeLog +++ b/out/ChangeLog @@ -1 +1 @@ -See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.14.2-1 +See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.16.0-1 diff --git a/out/RELEASE-COMMIT b/out/RELEASE-COMMIT index e7e02d7201..2cddf13f6e 100644 --- a/out/RELEASE-COMMIT +++ b/out/RELEASE-COMMIT @@ -1,28 +1,81 @@ -commit 516e1c3592bd7cb0c7c7fb19fe48ec4385835c77 -Author: Neil Puttock -Date: Sat Jul 23 20:44:45 2011 +0100 +commit 0fef477419a8872759bfed4c1cf8e66f68db1104 +Author: David Kastrup +Date: Fri Aug 24 11:44:57 2012 +0200 - Docs: Compile fix. + Release: update news. -diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely -index 8602de4..514e182 100644 ---- a/Documentation/notation/staff.itely -+++ b/Documentation/notation/staff.itely -@@ -1376,7 +1376,7 @@ changes and a label identifying the source instrument, can be - tagged for selective inclusion in the score; see @ref{Using tags}. +diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi +index b67db0a..618db96 100644 +--- a/Documentation/web/news-front.itexi ++++ b/Documentation/web/news-front.itexi +@@ -9,6 +9,70 @@ + @c used for news about the upcoming release; see CG 10.2 - @lilypond[verbatim,quote] --flute = \relative c'' { -+fluteNotes = \relative c'' { - r2. c4 d8 c d e fis2 g2 d2 - } + @newsItem ++@subsubheading Lilypond 2.16.0 released! @emph{August 24, 2012} ++ ++We are proud to announce the release of GNU LilyPond 2.16.0. ++LilyPond is a music engraving program, devoted to producing the ++highest-quality sheet music possible. It brings the aesthetics of ++traditionally engraved music to computer printouts. ++ ++Many improvements have been made in the past year since the previous ++main stable version. A few major improvements are: ++ ++@itemize ++@item ++Support for kievan square notation ++@item ++User and programming interfaces have greatly improved ++@item ++Music functions have become quite more versatile ++@end itemize ++ ++A full list of new features is given in: ++ ++@example ++@uref{http://lilypond.org/doc/v2.16/Documentation/changes/index.html} ++@end example ++ ++Happy music typesetting! LilyPond 2.16 was brought to you by... ++ ++Main development team: ++ ++Bertrand Bordage, Trevor Daniels, Phil Holmes, Ian Hulin, ++Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner Lemberg, ++John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen Nienhuys, ++Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil Puttock, ++Mike Solomon, Carl Sorensen, Francisco Vila, Valentin Villenave, ++Jan Warchoł ++ ++Programming contributors: ++ ++Aleksandr Andreev, Sven Axelsson, Peter Chubb, Karin Hoethker, ++Mark Hohl, Justin Ohmie, Benkő Pál, Julien Rioux, Patrick Schmidt, ++Adam Spiers, Heikki Taurainen, Piers Titus van der Torren, ++Jan-Peter Voigt, Janek Warchol ++ ++Documentation contributors: ++ ++James Lowe, Pavel Roskin, Alberto Simoes, Stefan Weil ++ ++Bug squad: ++ ++Colin Campbell, Eluze, Phil Holmes, Marek Klein, Ralph Palmer, ++James Lowe ++ ++Support: ++ ++Colin Campbell, Christian Hitz, Phil Holmes ++ ++Translation contributors: ++ ++Jean-Charles Malahieude, Till Paala, Yoshiki Sawada ++ ++@newsEnd ++ ++ ++@newsItem + @subsubheading Lilypond 2.15.95 released! @emph{August 11, 2012} -@@ -1399,7 +1399,7 @@ bassoonNotes = \relative c { - } - \new StaffGroup << - \new Staff { -- \flute -+ \fluteNotes - } - \new Staff { - \removeWithTag #'part { \killCues { \bassoonNotes } } + We are excited to announce the release of LilyPond 2.15.95. diff --git a/po/README b/po/README index 7b9c400308..f691dbb6b8 100644 --- a/po/README +++ b/po/README @@ -28,12 +28,13 @@ automatically notified to lilypond-devel@gnu.org list by the FTP robot; you can also see LilyPond page on FTP. -2) updating lilypond.pot: run 'make po-replace' at toplevel, clean up -lilypond.pot header to make it look like its previous state, commit -only lilypond.pot to Git and reset all .po files, roll a tarball with -'make dist', upload it somewhere on the web (or wait for the release), -and send a notification to FTP coordinator with a link to the tarball. - +2) updating lilypond.pot: run 'make po-replace' at toplevel, commit +lilypond.pot to Git, roll a tarball with 'make dist', upload it +somewhere on the web (or wait for the release), and send a notification +to FTP coordinator with a link to the tarball. +Running 'po-update' at top-level and opening either po/out/fr.po or +po/out/es.po gives you an idea of the changes that have affected +the sources (number of fuzzy and untranslated stings). Rationale ========= diff --git a/po/cs.po b/po/cs.po index 3b0152d231..91e6aff463 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,2990 +1,3859 @@ -# Czech translation of GNU LilyPond +# Czech translation of GNU LilyPond. # Copyright (C) 2002 Free Software Foundation, Inc. -# Tomas Kopecek , 2002. +# This file is distributed under the same license as the lilypond package. # +# Tomáš Kopeček , 2002. +# Pavel Fric , 2009-2010, 2011, 2012. msgid "" msgstr "" -"Project-Id-Version: lilypond 1.6.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-12-24 10:40+0100\n" -"PO-Revision-Date: 2006-12-23 15:31+0100\n" -"Last-Translator: Tomá¹ Kopeèek \n" -"Language-Team: Czech \n" +"Project-Id-Version: lilypond 2.15.37\n" +"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" +"POT-Creation-Date: 2012-04-21 20:51+0200\n" +"PO-Revision-Date: 2012-05-28 20:01+0200\n" +"Last-Translator: Pavel Fric \n" +"Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: convertrules.py:12 +#: fontextract.py:25 #, python-format -msgid "Not smart enough to convert %s" -msgstr "" - -#: convertrules.py:13 -msgid "Please refer to the manual for details, and update manually." -msgstr "" +msgid "Scanning %s" +msgstr "Prohledává se %s" -#: convertrules.py:14 +#: fontextract.py:70 #, python-format -msgid "%s has been replaced by %s" -msgstr "" - -#: convertrules.py:2398 -msgid "LilyPond source must be UTF-8" -msgstr "" +msgid "Extracted %s" +msgstr "Získané %s" -#: convertrules.py:2401 -msgid "Try the texstrings backend" -msgstr "" +#: fontextract.py:85 +#, python-format +msgid "Writing fonts to %s" +msgstr "Zapísují se písma do %s" -#: convertrules.py:2404 +#: book_snippets.py:409 #, python-format -msgid "Do something like: %s" -msgstr "" +msgid "deprecated ly-option used: %s=%s" +msgstr "Zastaralá ly-option používána: %s=%s" -#: convertrules.py:2407 -msgid "Or save as UTF-8 in your editor" -msgstr "" +#: book_snippets.py:411 +#, python-format +msgid "compatibility mode translation: %s=%s" +msgstr "Překlad v režimu slučitelnosti: %s=%s" -#: fontextract.py:26 -#, fuzzy, python-format -msgid "Scanning %s" -msgstr "varování: %s\n" +#: book_snippets.py:414 +#, python-format +msgid "deprecated ly-option used: %s" +msgstr "Zastaralá ly-option používána: %s" -#: fontextract.py:71 +#: book_snippets.py:416 #, python-format -msgid "Extracted %s" -msgstr "" +msgid "compatibility mode translation: %s" +msgstr "Překlad v režimu slučitelnosti: %s" -#: fontextract.py:86 -#, fuzzy, python-format -msgid "Writing fonts to %s" -msgstr "nelze vytvoøit adresáø: `%s'" +#: book_snippets.py:533 +#, python-format +msgid "ignoring unknown ly option: %s" +msgstr "přehlíží se neznámá volba ly: %s" -#: lilylib.py:85 lilylib.py:136 +#: book_snippets.py:741 #, python-format -msgid "Invoking `%s'" -msgstr "Vyvolávám `%s'" +msgid "Running through filter `%s'" +msgstr "Provádí se filtr `%s'" -#: lilylib.py:87 lilylib.py:138 +#: book_snippets.py:761 #, python-format -msgid "Running %s..." -msgstr "Bì¾í %s..." +msgid "`%s' failed (%d)" +msgstr "`%s' se nezdařilo (%d)" -#: lilylib.py:203 -#, fuzzy, python-format -msgid "Usage: %s" -msgstr "varování: %s\n" +#: book_snippets.py:762 +msgid "The error log is as follows:" +msgstr "Hlášení chyby je takové, jak následuje:" -#: abc2ly.py:1349 convert-ly.py:80 lilypond-book.py:125 midi2ly.py:869 -#, fuzzy, python-format -msgid "%s [OPTION]... FILE" -msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR" +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "Převádí se soubor MusicXML `%s'...\n" -#: abc2ly.py:1351 +#: book_snippets.py:909 #, python-format msgid "" -"abc2ly converts ABC music files (see\n" -"%s) to LilyPond input." -msgstr "" - -#: abc2ly.py:1355 etf2ly.py:1200 midi2ly.py:885 -msgid "write output to FILE" -msgstr "zapisuje výstup do SOUBORu" - -#: abc2ly.py:1357 -msgid "be strict about succes" -msgstr "" - -#: abc2ly.py:1359 -msgid "preserve ABC's notion of beams" -msgstr "" - -#: abc2ly.py:1361 convert-ly.py:112 etf2ly.py:1208 lilypond-book.py:168 -#: midi2ly.py:911 musicxml2ly.py:505 -#, fuzzy -msgid "Report bugs via" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." msgstr "" -"Chyby v programu oznamujte na adrese %s (pouze anglicky),\n" -"pøipomínky k pøekladu zasílejte na (èesky)." +"%s: zdvojený souborový název ale jiný obsah původního souboru,\n" +"tisknou se rozdíly oproti stávajícímu souboru." -#: convert-ly.py:41 +#: book_snippets.py:922 +#, python-format msgid "" -"Update LilyPond input to newer version. By default, update from the\n" -"version taken from the \\version command, to the current LilyPond version." +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." msgstr "" +"%s: zdvojený souborový název ale jiný obsah převedeného souboru lilypond,\n" +"tisknou se rozdíly oproti stávajícímu souboru." -#: convert-ly.py:43 lilypond-book.py:73 -#, fuzzy -msgid "Examples:" -msgstr "Pøíklad:" +#: convertrules.py:12 +#, python-format +msgid "Not smart enough to convert %s." +msgstr "Nedostatek znalosti pro převod %s." -#: convert-ly.py:56 lilypond-book.py:98 warn.cc:48 input.cc:90 -#, fuzzy, c-format, python-format -msgid "warning: %s" -msgstr "varování: %s\n" +#: convertrules.py:13 +msgid "Please refer to the manual for details, and update manually." +msgstr "Pro podrobnosti se, prosím, podívejte do příručky a proveďte obnovu ručně." -#: convert-ly.py:59 lilypond-book.py:101 warn.cc:54 input.cc:96 input.cc:104 -#, fuzzy, c-format, python-format -msgid "error: %s" -msgstr "chyba: %s\n" +#: convertrules.py:14 +#, python-format +msgid "%s has been replaced by %s" +msgstr "%s byl nahrazen %s" -#: convert-ly.py:75 etf2ly.py:1190 lilypond-book.py:121 midi2ly.py:98 -#, fuzzy -msgid "Distributed under terms of the GNU General Public License." -msgstr "" -"Distribuováno ve znìní licence GNU General Public License. Program je " -"nabízen BEZ jakékoliv ZÁRUKY" +#: convertrules.py:24 lilylib.py:131 warn.cc:223 +#, c-format, python-format +msgid "warning: %s" +msgstr "Varování: %s" -#: convert-ly.py:76 etf2ly.py:1191 lilypond-book.py:122 midi2ly.py:99 -msgid "It comes with NO WARRANTY." -msgstr "" +#: convertrules.py:49 convertrules.py:94 +msgid "\\header { key = concat + with + operator }" +msgstr "\\header { klíč = concat + s + operátor }" -#: convert-ly.py:86 convert-ly.py:106 -msgid "VERSION" -msgstr "" +#: convertrules.py:56 +#, python-format +msgid "deprecated %s" +msgstr "Zastaralý: %s" -#: convert-ly.py:88 -msgid "start from VERSION [default: \\version found in file]" -msgstr "" +#: convertrules.py:65 +msgid "deprecated \\textstyle, new \\key syntax" +msgstr "Odmítnutý \\textstyle, nový \\key syntax" -#: convert-ly.py:91 -msgid "edit in place" -msgstr "" +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 +msgid "bump version for release" +msgstr "Vydat současnou verzi" -#: convert-ly.py:94 -msgid "do not add \\version command if missing" -msgstr "" +#: convertrules.py:97 +msgid "new \\header format" +msgstr "Nový formát \\header" -#: convert-ly.py:100 -msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]" -msgstr "" +#: convertrules.py:124 +msgid "\\translator syntax" +msgstr "\\translator Syntax" -#: convert-ly.py:105 -msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]" -msgstr "" +#: convertrules.py:175 +msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" +msgstr "\\repeat NUM náhradní noty -> \\repeat FOLDSTR náhradní noty" -#: convert-ly.py:153 -msgid "Applying conversion: " -msgstr "" +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 +#, python-format +msgid "deprecate %s" +msgstr "Odmítnout %s" -#: convert-ly.py:166 -msgid "Error while converting" -msgstr "" +#: convertrules.py:279 +#, python-format +msgid "deprecate %s " +msgstr "Odmítnout %s " -#: convert-ly.py:168 -msgid "Stopping at last succesful rule" -msgstr "" +#: convertrules.py:305 +msgid "new \\notenames format" +msgstr "Nový formát \\notenames" -#: convert-ly.py:190 -#, fuzzy, python-format -msgid "Processing `%s'... " -msgstr "Zpracovávám `%s'..." +#: convertrules.py:321 +msgid "new tremolo format" +msgstr "Nový formát tremola" -#: convert-ly.py:277 relocate.cc:360 source-file.cc:54 -#, c-format, python-format -msgid "cannot open file: `%s'" -msgstr "nelze otevøít soubor: `%s'" +#: convertrules.py:325 +msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" +msgstr "Staff_margin_engraver odmítnut, použít Instrument_name_engraver" -#: convert-ly.py:284 -#, fuzzy, python-format -msgid "cannot determine version for `%s'. Skipping" -msgstr "nelze nalézt implicitní font: `%s'" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" +msgstr "Změna velikosti písmene ve vymezení vlastnosti (např. onevoice -> oneVoice)" -#: etf2ly.py:1196 -#, fuzzy, python-format -msgid "%s [OPTION]... ETF-FILE" -msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR" +#: convertrules.py:437 +msgid "new \\textscript markup text" +msgstr "Nový popis \\textscript" -#: etf2ly.py:1198 -msgid "" -"Enigma Transport Format is a format used by Coda Music Technology's\n" -"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond " -"file." -msgstr "" +#: convertrules.py:509 +#, python-format +msgid "identifier names: %s" +msgstr "Název pro rozpoznávací znamení: %s" -#: etf2ly.py:1201 midi2ly.py:886 musicxml2ly.py:498 main.cc:172 main.cc:178 -msgid "FILE" -msgstr "SOUBOR" +#: convertrules.py:548 +msgid "point-and-click argument changed to procedure." +msgstr "Argument pro funkci \"ukázat a klepnout\" změněn na průběh." -#: etf2ly.py:1203 lilypond-book.py:165 midi2ly.py:899 main.cc:185 -msgid "show warranty and copyright" -msgstr "vypisuje záruku a copyright" +#: convertrules.py:590 +msgid "semicolons removed" +msgstr "Středníky odstraněny" -#: lilypond-book.py:71 -msgid "" -"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." -msgstr "" +#. 40 ? +#: convertrules.py:633 +#, python-format +msgid "%s property names" +msgstr "%s názvy vlastností" -#: lilypond-book.py:78 -msgid "BOOK" -msgstr "" +#: convertrules.py:703 +msgid "automaticMelismata turned on by default" +msgstr "automaticMelismata je zapnuto jako výchozí nastavení" -#: lilypond-book.py:87 -#, fuzzy, python-format -msgid "Exiting (%d)..." -msgstr "Konèím ... " +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "automaticMelismata je zapnuto jako výchozí nastavení od 1.5.67." -#: lilypond-book.py:119 +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format -msgid "Copyright (c) %s by" -msgstr "Copyright (c) %s by" +msgid "remove %s" +msgstr "Odstranit %s" -#: lilypond-book.py:129 -#, fuzzy -msgid "FILTER" -msgstr "SOUBOR" +#: convertrules.py:977 convertrules.py:980 +msgid "cluster syntax" +msgstr "Skladba seskupení" -#: lilypond-book.py:132 -msgid "pipe snippets through FILTER [convert-ly -n -]" -msgstr "" +#: convertrules.py:987 +msgid "new Pedal style syntax" +msgstr "Nová skladba pro styl pedálu " -#: lilypond-book.py:135 +#: convertrules.py:1246 msgid "" -"use output format FORMAT (texi [default], texi-html, latex, html, docbook)" +"New relative mode,\n" +"Postfix articulations, new text markup syntax, new chord syntax." msgstr "" +"Nový související režim,\n" +"ztvárněny artikulace, nová skladba popisu textu, nová skladba akordů" -#: lilypond-book.py:138 -#, fuzzy -msgid "add DIR to include path" -msgstr "pøidává ADRESÁØ do vyhledávací cesty" +#: convertrules.py:1259 +msgid "Remove - before articulation" +msgstr "Odstranit - před artikulací" -#: lilypond-book.py:139 lilypond-book.py:144 main.cc:171 -msgid "DIR" -msgstr "ADRESÁØ" +#: convertrules.py:1294 +#, python-format +msgid "%s misspelling" +msgstr "%s nesprávně zapsáno" -#: lilypond-book.py:143 -#, fuzzy -msgid "write output to DIR" -msgstr "zapisuje výstup do SOUBORu" +#: convertrules.py:1313 +msgid "Swap < > and << >>" +msgstr "Vyměnit < > a << >>" -#: lilypond-book.py:147 -msgid "COMMAND" -msgstr "" +#: convertrules.py:1316 +msgid "attempting automatic \\figures conversion. Check results!" +msgstr "Pokouší se o automatické převedení \\figures. Ověřte výsledek!" -#: lilypond-book.py:148 -msgid "process ly_files using COMMAND FILE..." +#: convertrules.py:1362 +msgid "Use Scheme code to construct arbitrary note events." +msgstr "Použít kód Scheme pro vytvoření libovolných notových událostí." + +#: convertrules.py:1369 +msgid "" +"use symbolic constants for alterations,\n" +"remove \\outputproperty, move ly:verbose into ly:get-option" msgstr "" +"Použít symbolické konstanty pro alterace,\n" +"odstranit \\outputproperty, přesunout ly:verbose do ly:get-option" -#: lilypond-book.py:154 -msgid "Create PDF files for use with PDFTeX" +#: convertrules.py:1394 +#, python-format +msgid "" +"\\outputproperty found,\n" +"Please hand-edit, using\n" +"\n" +" \\applyoutput #(outputproperty-compatibility %s '%s )\n" +"\n" +"as a substitution text." msgstr "" +"\\outputproperty nalezeno,\n" +"Upravujte, prosím, tento soubor ručně s pomocí\n" +"\n" +" \\applyoutput #(outputproperty-compatibility %s '%s )\n" +"\n" +"jako náhradního textu" -#: lilypond-book.py:157 +#: convertrules.py:1406 msgid "" -"extract all PostScript fonts into INPUT.psfonts for LaTeX\n" -"must use this with dvips -h INPUT.psfonts" +"The alteration field of Scheme pitches was multiplied by 2\n" +"to support quarter tone accidentals. You must update the following constructs manually:\n" +"\n" +"* calls of ly:make-pitch and ly:pitch-alteration\n" +"* keySignature settings made with \\property\n" msgstr "" +"Pole pro alterace výšky tónů Scheme bylo znásobeno 2\n" +"aby byla podporována předznamenání pro posuvky pro čtvrttóny. Musíte obnovit následující výtvory ručně:\n" +"\n" +"* volání ly:make-pitch a ly:pitch-alteration\n" +"* nastavení keySignature zřízeno s \\property\n" -#: lilypond-book.py:160 midi2ly.py:896 musicxml2ly.py:489 main.cc:184 -msgid "be verbose" -msgstr "vypisuje více informací" +#: convertrules.py:1449 +msgid "removal of automaticMelismata; use melismaBusyProperties instead." +msgstr "Odstranění automaticMelismata; místo toho použijte melismaBusyProperties." -#: lilypond-book.py:773 -#, fuzzy, python-format -msgid "file not found: %s" -msgstr "klíè `%s' nebyl nalezen" +#: convertrules.py:1556 +msgid "\\partcombine syntax change to \\newpartcombine" +msgstr "Změna skladby \\partcombine na \\newpartcombine" -#: lilypond-book.py:1004 -#, python-format -msgid "deprecated ly-option used: %s=%s" +#: convertrules.py:1581 +msgid "" +"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" +"Harmonic notes. Thread context removed. Lyrics context removed." msgstr "" +"Notový zápis pro bicí změněn, odstranění \\chordmodifiers, \\notenames.\n" +"Flažoletové noty (alikvotní/částkové tóny). Související vlákno odstraněno. Související text odstraněn." -#: lilypond-book.py:1007 -#, python-format -msgid "compatibility mode translation: %s=%s" -msgstr "" +#: convertrules.py:1585 +msgid "Drums found. Enclose drum notes in \\drummode" +msgstr "Bicí nalezeny. Svázat noty pro bicí v prostředí \\drummode" -#: lilypond-book.py:1011 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format -msgid "deprecated ly-option used: %s" +msgid "" +"\n" +"%s found. Check file manually!\n" msgstr "" +"\n" +"%s nalezen. Ověřte soubor ručně!\n" -#: lilypond-book.py:1014 -#, python-format -msgid "compatibility mode translation: %s" -msgstr "" +#: convertrules.py:1596 +msgid "Drum notation" +msgstr "Notový zápis pro bicí" -#: lilypond-book.py:1033 -#, python-format -msgid "ignoring unknown ly option: %s" -msgstr "" +#: convertrules.py:1655 +msgid "new syntax for property settings:" +msgstr "Nová skladba pro nastavení vlastnosti:" + +#: convertrules.py:1681 +msgid "Property setting syntax in \\translator{ }" +msgstr "Skladba pro nastavení vlastnosti v \\translator{ }" -#: lilypond-book.py:1388 -#, fuzzy, python-format -msgid "Opening filter `%s'" -msgstr "nelze nalézt soubor: `%s'" +#: convertrules.py:1720 +msgid "Scheme grob function renaming" +msgstr "Přejmenování funkce grob (kresleného předmětu) Scheme" -#: lilypond-book.py:1405 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 #, python-format -msgid "`%s' failed (%d)" -msgstr "" +msgid "Use %s\n" +msgstr "Použít %s\n" -#: lilypond-book.py:1406 -msgid "The error log is as follows:" -msgstr "Hlá¹ení chyby je takovéto:" +#: convertrules.py:1747 +msgid "More Scheme function renaming" +msgstr "Přejmenování dalších funkcí Scheme" -#: lilypond-book.py:1476 -msgid "cannot find \\begin{document} in LaTeX document" +#: convertrules.py:1871 +msgid "" +"Page layout has been changed, using paper size and margins.\n" +"textheight is no longer used.\n" msgstr "" +"Rozvržení strany se změnilo. Použijte paper size (velikost papíru) a margins (okraje)\n" +"textheight (výška textu) se dále nepoužívá.\n" -#: lilypond-book.py:1586 -#, fuzzy -msgid "Writing snippets..." -msgstr "Zapisuji `%s'..." +#: convertrules.py:1957 +msgid "" +"\\foo -> \\foomode (for chords, notes, etc.)\n" +"fold \\new FooContext \\foomode into \\foo." +msgstr "" +"\\foo -> \\foomode (pro akordy, noty atd.)\n" +"shrnout \\new FooContext \\foomode do \\foo." -#: lilypond-book.py:1591 -#, fuzzy -msgid "Processing..." -msgstr "Zpracovávám `%s'..." +#: convertrules.py:1995 +msgid "" +"staff size should be changed at top-level\n" +"with\n" +"\n" +" #(set-global-staff-size )\n" +"\n" +msgstr "" +"Velikost notové osnovy se musí změnit na nejvyšší úrovni souboru\n" +"\n" +" #(set-global-staff-size )\n" +"\n" -#: lilypond-book.py:1595 -#, fuzzy -msgid "All snippets are up to date..." -msgstr "uvolnìte se, %s je aktuální" +#: convertrules.py:2015 +msgid "regularize other identifiers" +msgstr "Zavést pravidla pro jiná rozpoznávací znamení" -#: lilypond-book.py:1605 -#, fuzzy, python-format -msgid "cannot determine format for: %s" -msgstr "nelze nalézt implicitní font: `%s'" +#: convertrules.py:2083 +msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" +msgstr "\\encoding: převedení latin1 na utf-8. Odstranit ly:point-and-click" -#: lilypond-book.py:1616 -#, fuzzy, python-format -msgid "%s is up to date." -msgstr "uvolnìte se, %s je aktuální" +#: convertrules.py:2094 +msgid "LilyPond source must be UTF-8" +msgstr "LilyPond zdroj musí být UTF-8" + +#: convertrules.py:2097 +msgid "Try the texstrings backend" +msgstr "VyzkouÅ¡et zadní část texstrings" -#: lilypond-book.py:1622 +#: convertrules.py:2100 #, python-format -msgid "Writing `%s'..." -msgstr "Zapisuji `%s'..." +msgid "Do something like: %s" +msgstr "Zkusit následující: %s" -#: lilypond-book.py:1677 -msgid "Output would overwrite input file; use --output." -msgstr "" +#: convertrules.py:2103 +msgid "Or save as UTF-8 in your editor" +msgstr "Nebo uložit v editoru jako UTF-8" -#: lilypond-book.py:1681 -#, fuzzy, python-format -msgid "Reading %s..." -msgstr "Odstraòuji %s..." +#: convertrules.py:2153 +msgid "warn about auto beam settings" +msgstr "Upozornění na nastavení automatických trámců" -#: lilypond-book.py:1700 -#, fuzzy -msgid "Dissecting..." -msgstr "Prohledávám `%s'..." +#: convertrules.py:2157 +msgid "auto beam settings" +msgstr "Nastavení automatických trámců" -#: lilypond-book.py:1716 -#, fuzzy, python-format -msgid "Compiling %s..." -msgstr "Odstraòuji %s..." +#: convertrules.py:2158 +msgid "" +"\n" +"Auto beam settings must now specify each interesting moment in a measure\n" +"explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n" +msgstr "" +"\n" +"Nastavení automatických trámců se nyní musí přesně určit pro každou polohu\n" +"v taktu, která přichází v úvahu; 1/4 se už více nenásobí, aby se stanovily i polohy pro 1/2 a 3/4.\n" -#: lilypond-book.py:1725 -#, fuzzy, python-format -msgid "Processing include: %s" -msgstr "Zpracovávám `%s'..." +#: convertrules.py:2271 +msgid "verticalAlignmentChildCallback has been deprecated" +msgstr "verticalAlignmentChildCallback je zastaralý" -#: lilypond-book.py:1739 -#, fuzzy, python-format -msgid "Removing `%s'" -msgstr "Vyvolávám `%s'" +#: convertrules.py:2276 +msgid "Remove callbacks property, deprecate XY-extent-callback." +msgstr "Odstranit vlastnost callbacks, odmítnout XY-extent-callback." -#: lilypond-book.py:1815 -#, fuzzy, python-format -msgid "Writing fonts to %s..." -msgstr "nelze vytvoøit adresáø: `%s'" +#: convertrules.py:2297 +msgid "Use grob closures iso. XY-offset-callbacks." +msgstr "Použít grob závěr namísto XY-offset-callbacks." -#: lilypond-book.py:1830 -msgid "option --psfonts not used" -msgstr "" +#: convertrules.py:2359 +msgid "foobar -> foo-bar for \\paper, \\layout" +msgstr "foobar -> foo-bar pro \\paper, \\layout" -#: lilypond-book.py:1831 -msgid "processing with dvips will have no fonts" +#: convertrules.py:2469 +msgid "deprecate \\tempo in \\midi" +msgstr "Odmítnout \\tempo v \\midi" + +#: convertrules.py:2522 +msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "" +"Odmítnout cautionary-style pro varující předznamenání.\n" +"Použít vlastnosti AccidentalCautionary" + +#: convertrules.py:2535 +msgid "Rename accidental glyphs, use glyph-name-alist." +msgstr "Přejmenovat obrázky předznamenání, použít glyph-name-alist." -#: lilypond-book.py:1834 -msgid "DVIPS usage:" +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" +msgstr "Nastavení okrajového textu (edge-text) pro textovou závorku (TextSpanner)" + +#: convertrules.py:2591 +#, python-format +msgid "" +"Use\n" +"\n" +"%s" msgstr "" +"Použít\n" +"\n" +"%s" -#: midi2ly.py:106 lily-library.scm:624 lily-library.scm:632 -msgid "warning: " -msgstr "varování: " +#: convertrules.py:2624 +msgid "Use the `alignment-offsets' sub-property of\n" +msgstr "Použít podvlastnost `alignment-offsets'\n" -#: midi2ly.py:109 midi2ly.py:924 -msgid "error: " -msgstr "chyba: " +#: convertrules.py:2625 +msgid "NonMusicalPaperColumn #'line-break-system-details\n" +msgstr "Použít NonMusicalPaperColumn #'line-break-system-details\n" -#: midi2ly.py:110 -msgid "Exiting ... " -msgstr "Konèím ... " +#: convertrules.py:2626 +msgid "to set fixed distances between staves.\n" +msgstr "pro nastavení pevných vzdáleností mezi osnovami.\n" -#: midi2ly.py:857 -#, python-format -msgid "%s output to `%s'..." -msgstr "výstup %s se zapisuje do `%s'..." +#: convertrules.py:2638 +msgid "Use #'style not #'dash-fraction to select solid/dashed lines." +msgstr "Použít #'style namísto #'dash-fraction pro výběr plných/přeruÅ¡ovaných čar." -#: midi2ly.py:871 musicxml2ly.py:485 -#, fuzzy, python-format -msgid "Convert %s to LilyPond input." -msgstr "Pøevede soubor mup na zdrojový text LilyPondu." +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "VÅ¡echna nastavení související s přeruÅ¡ovanými čarami" -#: midi2ly.py:875 -msgid "print absolute pitches" -msgstr "vypisuje absolutní vý¹ky" +#: convertrules.py:2645 +msgid "Use \\override ... #'style = #'line for solid lines and\n" +msgstr "Použít \\override ... #'style = #'line pro plné čáry a\n" -#: midi2ly.py:877 midi2ly.py:889 -msgid "DUR" -msgstr "DÉLKA" +#: convertrules.py:2646 +msgid "\t\\override ... #'style = #'dashed-line for dashed lines." +msgstr "\t\\override ... #'style = #'dashed-line pro přeruÅ¡ované čáry." -#: midi2ly.py:878 -msgid "quantise note durations on DUR" -msgstr "zarovnává délky not na násobky DÉLKY" +#: convertrules.py:2682 +msgid "" +"metronomeMarkFormatter uses text markup as second argument,\n" +"fret diagram properties moved to fret-diagram-details." +msgstr "" +"metronomeMarkFormatter používá popisu textu jako druhého argumentu,\n" +"vlastnosti nákresu pražců jsou přesunuty do fret-diagram-details." -#: midi2ly.py:881 -msgid "print explicit durations" -msgstr "vypí¹e explicitní délky" +#: convertrules.py:2688 +msgid "metronomeMarkFormatter got an additional text argument.\n" +msgstr "metronomeMarkFormatter dostal pro text dodatečný argument.\n" -#: midi2ly.py:882 -msgid "set key: ALT=+sharps|-flats; MINOR=1" -msgstr "nastaví stupnici: ZMÌNA=+køí¾ky|-béèka; MOLL=1" +#: convertrules.py:2689 +#, python-format +msgid "" +"The function assigned to Score.metronomeMarkFunction now uses the signature\n" +"%s" +msgstr "" +"Funkce přiřazená k Score.metronomeMarkFunction nyní používá taktové označení\n" +"%s" -#: midi2ly.py:883 -msgid "ALT[:MINOR]" -msgstr "ZMÌNA[:MOLL]" +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "%s ve vlastnostech nákresu pražců" -#: midi2ly.py:888 -msgid "quantise note starts on DUR" -msgstr "zarovnaná nota zaèíná na DÉLCE" +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" +msgstr "\\put-adjacent pořadí argumentů" -#: midi2ly.py:891 -msgid "DUR*NUM/DEN" -msgstr "DÉLKA*ÈÍSLO/DÌLITEL" +#: convertrules.py:2752 +msgid "Axis and direction now come before markups:\n" +msgstr "Osu a směr zapsat nyní před popis:\n" -#: midi2ly.py:894 -msgid "allow tuplet durations DUR*NUM/DEN" -msgstr "povolí triolové (kvartolové, ...) délky DÉLKA*ÈÍSLO/DÌLITEL" +#: convertrules.py:2753 +msgid "\\put-adjacent axis dir markup markup." +msgstr "\\put-adjacent popis popisu směru osy." -#: midi2ly.py:902 -msgid "treat every text as a lyric" -msgstr "zpracuje ka¾dý text jako slova písnì" +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" +msgstr "Nové vymezení InnerStaffGroup" -#: midi2ly.py:905 -#, fuzzy -msgid "Examples" -msgstr "Pøíklad:" +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" +msgstr "Nové vymezení InnerChoirStaff" -#: midi2ly.py:925 -msgid "no files specified on command line." -msgstr "na pøíkazové øádce nebyly zadány ¾ádné soubory." +#: convertrules.py:2799 +msgid "Syntax changes for \\addChordShape and \\chord-shape" +msgstr "Změny ve skladbě pro \\addChordShape a \\chord-shape" -#: musicxml2ly.py:473 -msgid "musicxml2ly FILE.xml" -msgstr "" +#: convertrules.py:2804 +msgid "stringTuning must be added to addChordShape call.\n" +msgstr "stringTuning musí být přidán k vyvolání addChordShape.\n" -#: musicxml2ly.py:476 -#, fuzzy, python-format +#: convertrules.py:2809 +msgid "stringTuning must be added to chord-shape call.\n" +msgstr "stringTuning musí být přidán k vyvolání chord-shape.\n" + +#: convertrules.py:2815 +msgid "Remove oldaddlyrics" +msgstr "Odstranit oldaddlyrics" + +#: convertrules.py:2819 msgid "" -"This program is free software. It is covered by the GNU General Public\n" -"License and you are welcome to change it and/or distribute copies of it\n" -"under certain conditions. Invoke as `%s --warranty' for more\n" -"information." +"oldaddlyrics is no longer supported. \n" +" Use addlyrics or lyrsicsto instead.\n" msgstr "" -"Toto je svobodný software. Je chránìn GNU General Public License \n" -"a vy jste vítáni k jeho zmìnì a (nebo) ¹íøení jeho kopií za dodr¾ení\n" -"urèitých podmínek. Pro více informací spus»te program takto: `%s --" -"warranty'.\n" +"oldaddlyrics není nadále podporováno. \n" +" Použijte místo toho addlyrics nebo lyrsicsto.\n" -#: musicxml2ly.py:495 -msgid "Use lxml.etree; uses less memory and cpu time." +#: convertrules.py:2825 +msgid "" +"keySignature property not reversed any more\n" +"MIDI 47: orchestral strings -> orchestral harp" msgstr "" +"Vlastnost keySignature není už více obrácená\n" +"MIDI 47: orchestrální smyčce -> orchestrální harfa" -#: musicxml2ly.py:503 -#, fuzzy -msgid "set output filename to FILE" -msgstr "zapisuje výstup do SOUBORu" +#: convertrules.py:2830 +msgid "The alist for Staff.keySignature is no longer in reversed order.\n" +msgstr "Alist pro Staff.keySignature už nadále není v obráceném pořadí.\n" -#: getopt-long.cc:140 -#, c-format -msgid "option `%s' requires an argument" -msgstr "volba `%s' vy¾aduje argument" +#: convertrules.py:2836 +msgid "" +"\\bar \".\" now produces a thick barline\n" +"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" +"Dash parameters for slurs and ties are now in dash-definition" +msgstr "" +"\\bar \".\" nyní vytváří silnou taktovou čáru\n" +"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" +"Parametry čárky pro legatové obloučky a ligatury jsou nyní v dash-definition" -#: getopt-long.cc:144 -#, fuzzy, c-format -msgid "option `%s' does not allow an argument" -msgstr "volba `%s' nemá argumenty" +#: convertrules.py:2842 +msgid "\\bar \".\" now produces a thick barline.\n" +msgstr "\\bar \".\" nyní vytváří silnou taktovou čáru.\n" -#: getopt-long.cc:148 -#, c-format -msgid "unrecognized option: `%s'" -msgstr "neznámá volba: `%s'" +#: convertrules.py:2848 +msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" +msgstr "Parametry čárky pro legatové obloučky a ligatury jsou nyní v 'dash-details.\n" -#: getopt-long.cc:154 -#, c-format -msgid "invalid argument `%s' to option `%s'" -msgstr "neplatný argument `%s' pro volbu `%s'" +#: convertrules.py:2853 +msgid "" +"Autobeaming rules have changed. override-auto-beam-setting and\n" +"revert-auto-beam-setting have been eliminated.\n" +"\\overrideBeamSettings has been added.\n" +"beatGrouping has been eliminated.\n" +"Different settings for vertical layout.\n" +"ly:system-start-text::print -> system-start-text::print\n" +"Beam #'thickness -> Beam #'beam-thickness\n" +"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n" +"ly:ambitus::print -> ambitus::print\n" +"Explicit dynamics context definition from `Piano centered dynamics'\n" +"template replaced by new `Dynamics' context." +msgstr "" +"Pravidla pro automatické trámce se změnila. override-auto-beam-setting a\n" +"revert-auto-beam-setting byly odstraněny.\n" +"\\overrideBeamSettings bylo přidáno.\n" +"beatGrouping bylo odstraněno.\n" +"OdliÅ¡ná nastavení pro svislé rozložení.\n" +"ly:system-start-text::print -> system-start-text::print\n" +"Beam #'thickness -> Beam #'beam-thickness\n" +"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n" +"ly:ambitus::print -> ambitus::print\n" +"Podrobné vymezení prostředí značek dynamiky z `Piano centered dynamics'\n" +"Předloha nahrazena novým prostředím `Dynamics'." + +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" +msgstr " Nastavení automatických trámců jsou nyní potlačena \\overrideBeamSettings.\n" + +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" +msgstr " Nastavení automatických trámců jsou nyní vrácena \\revertBeamSettings.\n" + +#: convertrules.py:2878 +msgid "" +" beatGrouping with a specified context must now be accomplished with\n" +" \\overrideBeamSettings.\n" +msgstr "" +" beatGrouping se zadaným prostředím nyní musí být proveden\n" +" \\overrideBeamSettings.\n" -#: warn.cc:68 grob.cc:559 input.cc:82 -#, fuzzy, c-format -msgid "programming error: %s" -msgstr "chyba programrátora: %s (Pokraèuji: dr¾te mi palce)\n" +#: convertrules.py:2884 +msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" +msgstr "alignment-offsets byl změněn na alignment-distances: Nyní musíte zadat vzdálenosti mezi osnovami a nikoli posun osnov.\n" -#: warn.cc:69 input.cc:83 -msgid "continuing, cross fingers" +#: convertrules.py:2895 +msgid "" +"Remove obsolete engravers/translators: Note_swallow_translator,\n" +"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" +"Swallow_performer and String_number_engraver.\n" +"New vertical spacing variables." msgstr "" +"Odstranit zastaralé rytce/překladatele: Note_swallow_translator,\n" +"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" +"Swallow_performer a String_number_engraver.\n" +"Nové proměnné pro svislý odstup." -#: accidental-engraver.cc:240 -#, fuzzy, c-format -msgid "accidental typesetting list must begin with context-name: %s" -msgstr "Sazba posuvek musí zaèínat jménem kontextu: %s" +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" +msgstr "Svislé rozestavění už nezávisí na Y-extent VerticalAxisGroup.\n" -#: accidental-engraver.cc:268 -#, c-format -msgid "ignoring unknown accidental: %s" -msgstr "" +#: convertrules.py:2932 +msgid "Unify fetaNumber and fetaDynamic encodings" +msgstr "Sjednotit kódování fetaNumber a fetaDynamic" -#: accidental-engraver.cc:284 -#, c-format -msgid "pair or context-name expected for accidental rule, found %s" -msgstr "" +#: convertrules.py:2937 +msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" +msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" -#: accidental.cc:243 key-signature-interface.cc:133 -#, c-format -msgid "accidental `%s' not found" -msgstr "Posuvka `%s' nebyla nalezena" +#: convertrules.py:2948 +msgid "\\cresc etc. are now postfix operators" +msgstr "\\cresc atd. jsou nyní nastaveny notě" -#: align-interface.cc:222 +#: convertrules.py:2960 msgid "" -"vertical alignment called before line-breaking.\n" -"Only do cross-staff spanners with PianoStaff." +"Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" +"\"accordion.accEtcbase\" -> \"accordion.etcbass\"" msgstr "" +"Odstranit beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings a \\revertBeamSettings.\n" +"\"accordion.accEtcbase\" -> \"accordion.etcbass\"" -#: align-interface.cc:329 -msgid "tried to get a translation for something that is no child of mine" -msgstr "" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" +msgstr "Použít \\set beamExceptions nebo \\overrideTimeSignatureSettings.\n" -#: all-font-metrics.cc:173 -#, c-format -msgid "cannot find font: `%s'" -msgstr "nelze nalézt font: `%s'" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "Použít \\set beamExceptions nebo \\revertTimeSignatureSettings.\n" -#: apply-context-iterator.cc:31 -msgid "\\applycontext argument is not a procedure" -msgstr "" +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" +msgstr "Použít baseMoment, beatStructure, a beamExceptions.\n" -#: auto-change-iterator.cc:63 change-iterator.cc:61 -#, fuzzy, c-format -msgid "cannot change, already in translator: %s" -msgstr "nelze zmìnit `%s' na `%s'" +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" +msgstr "Použít baseMoment a beatStructure.\n" -#: axis-group-engraver.cc:78 -msgid "Axis_group_engraver: vertical group already has a parent" +#: convertrules.py:2999 +msgid "" +"Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" +"Deprecate negative dash-period for hidden lines: use #'style = #'none instead." msgstr "" +"Diagramy pro dechové nástroje: Posunout velikost (size), tloušťku (thickness), a grafiku ze seznamu argumentů do vlastností.\n" +"Záporná dash-period pro skryté linky je zastaralá: Použít místo toho #'style = #'none." -#: axis-group-engraver.cc:79 -msgid "are there two Axis_group_engravers?" -msgstr "" +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" +msgstr "Posunout velikost, tloušťku, a grafiku do vlastností. Argumentem by měl být pouze seznam s klíči.\n" -#: axis-group-engraver.cc:80 -msgid "removing this vertical group" +#: convertrules.py:3012 +msgid "" +"Rename vertical spacing variables.\n" +"Add fretboard-table argument to savePredefinedFretboard." msgstr "" +"Přejmenovat proměnné svislého rozestavění.\n" +"Přidat argument fretboard-table do savePredefinedFretboard." -#: axis-group-interface.cc:96 -msgid "tried to calculate pure-height at a non-breakpoint" -msgstr "" +#: convertrules.py:3030 +msgid "Rename vertical spacing grob properties." +msgstr "Přejmenovat vlastnosti grob svislého rozestavění." -#: axis-group-interface.cc:370 -msgid "an outside-staff object should have a direction, defaulting to up" -msgstr "" +#: convertrules.py:3046 +msgid "Remove \\paper variables head-separation and foot-separation." +msgstr "Odstranit proměnné \\paper head-separation a foot-separation." -#: axis-group-interface.cc:383 -#, c-format -msgid "outside-staff object %s has an empty extent" -msgstr "" +#: convertrules.py:3050 +msgid "Adjust settings for top-system-spacing instead.\n" +msgstr "Upravit místo toho nastavení pro top-system-spacing.\n" -#: bar-check-iterator.cc:73 -#, c-format -msgid "barcheck failed at: %s" -msgstr "kontrola taktových èar selhala na: %s" +#: convertrules.py:3054 +msgid "Adjust settings for last-bottom-spacing instead.\n" +msgstr "Upravit místo toho nastavení pro last-bottom-spacing.\n" -#: beam-engraver.cc:128 -msgid "already have a beam" -msgstr "trámec ji¾ existuje" +#: convertrules.py:3060 +msgid "" +"Rename space to basic-distance in various spacing alists.\n" +"Remove HarmonicParenthesesItem grob." +msgstr "" +"Přejmenovat odstup v basic-distance v různých alistech s rozestavěním.\n" +"Odstranit grob HarmonicParenthesesItem." -#: beam-engraver.cc:196 -msgid "unterminated beam" -msgstr "neukonèený trámec" +#: convertrules.py:3067 +msgid "HarmonicParenthesesItem has been eliminated.\n" +msgstr "HarmonicParenthesesItem byl odstraněn.\n" -#: beam-engraver.cc:238 chord-tremolo-engraver.cc:134 -msgid "stem must have Rhythmic structure" -msgstr "no¾ka musí mít strukturu Rhythmic" +#: convertrules.py:3068 +msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" +msgstr "Harmonické závorky jsou částí grob TabNoteHead.\n" -#: beam-engraver.cc:246 -#, fuzzy -msgid "stem does not fit in beam" -msgstr "no¾ka se nevejde pod trámec" +#: convertrules.py:3073 +msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" +msgstr "Odstranit prostředí z overrideTimeSignatureSettings a revertTimeSignatureSettings.\n" -#: beam-engraver.cc:247 -msgid "beam was started here" -msgstr "trámec byl zaèat zde" +#: convertrules.py:3080 +msgid "" +"Change stringTunings from a list of semitones to a list of pitches.\n" +"Change tenor and baritone ukulele names in string tunings.\n" +"Generate messages for manual conversion of vertical spacing if required." +msgstr "" +"Změnit stringTunings ze seznamu půltónů na seznam výšek tónů.\n" +"Změnit názvy pro tenor a baryton u ukulele v ladění smyčců.\n" +"Vytvořit zprávy pro ruční převod svislých rozestupů, když je to potřeba." -#: beam-quanting.cc:307 -#, fuzzy -msgid "no feasible beam position" -msgstr "Nebylo nalezeno vhodné místo pro øádkový zlom" +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." +msgstr "Změny svislých odstupů mohou ovlivnit uživatelský stanovená prostředí. " -#: beam.cc:144 -#, fuzzy -msgid "removing beam with no stems" -msgstr "trámec má ménì ne¾ dvì viditelné no¾ky" +#: convertrules.py:3129 +msgid "Replace bar-size with bar-extent." +msgstr "Nahradit bar-size bar-extent." -#: beam.cc:1007 -msgid "no viable initial configuration found: may not find good beam slope" -msgstr "" +#: convertrules.py:3141 +msgid "Woodwind diagrams: Changes to the clarinet diagram." +msgstr "Diagramy pro dechové nástroje: Změny v diagramu klarinetu" -#: break-alignment-interface.cc:208 -#, fuzzy, c-format -msgid "No spacing entry from %s to `%s'" -msgstr "Není záznam pro rozestup %s a `%s'" +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "Klarinetový prstoklad změněn, aby odrážel skutečnou anatomii nástroje.\n" -#: change-iterator.cc:23 -#, fuzzy, c-format -msgid "cannot change `%s' to `%s'" -msgstr "nelze zmìnit `%s' na `%s'" +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "Zacházení s neautomatickými poznámkami pod čarou." -#. FIXME: constant error message. -#: change-iterator.cc:82 -#, fuzzy -msgid "cannot find context to switch to" -msgstr "nelze nalézt kontext `%s'" +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "Pokud používáte neautomatické poznámky pod čarou, ujistěte se, že nastavíte vlastnost footnote-auto-numbering = ##f v bloku papíru.\n" -#. We could change the current translator's id, but that would make -#. errors hard to catch. -#. -#. last->translator_id_string () = get_change -#. ()->change_to_id_string (); -#: change-iterator.cc:91 -#, fuzzy, c-format -msgid "not changing to same context type: %s" -msgstr "neexistující kontext: %s" +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "Změna ve vnitřní vlastnosti pro MultiMeasureRest" -#. FIXME: uncomprehensable message -#: change-iterator.cc:95 -msgid "none of these in my family" -msgstr "¾ádný z tìchto neznám" +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" +msgstr "Tato vnitřní vlastnost byla nahrazena round-to-longer-rest, round-up-exceptions a usable-duration-logs.\n" -#: chord-tremolo-engraver.cc:88 -#, fuzzy -msgid "No tremolo to end" -msgstr "zde není repetice k ukonèení" +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "Vytvoření příznaku grob (kreslený předmět) a přesun některých vlastností nožky do tohoto grob" -#: chord-tremolo-engraver.cc:110 -msgid "unterminated chord tremolo" -msgstr "neukonèené akordové tremolo" +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" +msgstr "consistent-broken-slope se nyní řeší přes zavolání poloh.\n" -#: chord-tremolo-iterator.cc:33 -#, c-format -msgid "expect 2 elements for chord tremolo, found %d" -msgstr "" +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" +msgstr "input/regression/beam-broken-classic.ly ukazuje, jak jsou nyní řeÅ¡eny poÅ¡kozené trámce.\n" -#: clef.cc:54 -#, c-format -msgid "clef `%s' not found" -msgstr "klíè `%s' nebyl nalezen" +#: book_base.py:26 +#, python-format +msgid "file not found: %s" +msgstr "Soubor nebyl nalezen: %s" -#: cluster.cc:110 -#, fuzzy, c-format -msgid "unknown cluster style `%s'" -msgstr "neznámý pøekladaè: `%s':" +#: book_base.py:164 +msgid "Output function not implemented" +msgstr "Výstupní funkce neprovedena" -#: cluster.cc:135 -#, fuzzy -msgid "junking empty cluster" -msgstr "matoucí osamocený porrectus" +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "Nastavení úrovně zápisu na %s" -#: coherent-ligature-engraver.cc:100 -#, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" -msgstr "" +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "Neznámá nebo neplatná úroveň zápisu '%s'" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:176 constrained-breaking.cc:193 -#, fuzzy -msgid "cannot find line breaking that satisfies constraints" -msgstr "nelze nalézt ¾ádný vhodný font" +#: lilylib.py:128 warn.cc:211 +#, c-format, python-format +msgid "error: %s" +msgstr "Chyba: %s" -#: context-def.cc:130 -#, fuzzy, c-format -msgid "program has no such type: `%s'" -msgstr "Program nemá takový typ" +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "Zpracovává se %s.ly" -#: context-property.cc:76 -msgid "need symbol arguments for \\override and \\revert" -msgstr "" +#: lilylib.py:189 lilylib.py:250 +#, python-format +msgid "Invoking `%s'" +msgstr "Vyvolává se `%s'" -#: context.cc:151 -#, fuzzy, c-format -msgid "cannot find or create new `%s'" -msgstr "nelze nalézt nebo vytvoøit: `%s'" +#: lilylib.py:191 lilylib.py:252 +#, python-format +msgid "Running %s..." +msgstr "Provádí se %s..." -#: context.cc:213 -#, fuzzy, c-format -msgid "cannot find or create `%s' called `%s'" -msgstr "nelze nalézt nebo vytvoøit `%s' nazvaný `%s'" +#: lilylib.py:328 +#, python-format +msgid "Usage: %s" +msgstr "Použití: %s" -#: context.cc:276 -#, c-format -msgid "Invalid CreateContext event: Cannot create %s context" -msgstr "" +#: musicexp.py:224 musicexp.py:229 +msgid "Language does not support microtones contained in the piece" +msgstr "Jazyk nepodporuje mikrotóny (intervaly menší než půltón) obsažené v tomto díle" -#: context.cc:388 -#, c-format -msgid "cannot find or create: `%s'" -msgstr "nelze nalézt nebo vytvoøit: `%s'" +#: musicexp.py:491 +msgid "Tuplet brackets of curved shape are not correctly implemented" +msgstr "Triolové (kvartolové, ...) závorky se zahnutým tvarem nejsou správně provedeny" -#: custos.cc:77 -#, c-format -msgid "custos `%s' not found" -msgstr "kustod `%s' nebyl nalezen" +#: musicexp.py:677 +#, python-format +msgid "unable to set the music %(music)s for the repeat %(repeat)s" +msgstr "Nelze nastavit noty %(music)s pro opakování %(repeat)s" -#: dispatcher.cc:71 -msgid "Event class should be a symbol" -msgstr "" +#: musicexp.py:686 +msgid "encountered repeat without body" +msgstr "NaÅ¡lo se opakování bez body (obsahu)" -#: dispatcher.cc:78 -#, fuzzy, c-format -msgid "Unknown event class %s" -msgstr "neznámý pøekladaè: `%s':" +#. no self.elements! +#: musicexp.py:856 +#, python-format +msgid "Grace note with no following music: %s" +msgstr "Ozdobné noty bez následujících not: %s" -#: dots.cc:38 -#, fuzzy, c-format -msgid "dot `%s' not found" -msgstr "pomlka `%s' nebyla nalezena, " +#: musicexp.py:1018 +#, python-format +msgid "Invalid octave shift size found: %s. Using no shift." +msgstr "Nalezena neplatná velikost posunutí oktávy: %s. Posunutí se nepoužívá." -#: dynamic-engraver.cc:186 span-dynamic-performer.cc:87 -msgid "cannot find start of (de)crescendo" -msgstr "nelze nalézt zaèátek (de)crescenda" +#: musicexp.py:1476 +#, python-format +msgid "Unable to convert alteration %s to a lilypond expression" +msgstr "Nelze převést alteraci %s na výraz pro LilyPond" -#: dynamic-engraver.cc:195 -msgid "already have a decrescendo" -msgstr "ji¾ má decrescendo" +#. TODO: Handle pieces without a time signature! +#: musicxml.py:361 +msgid "Senza-misura time signatures are not yet supported!" +msgstr "Taktová označení Senza-misura jeÅ¡tě nejsou podporována!" -#: dynamic-engraver.cc:197 -msgid "already have a crescendo" -msgstr "ji¾ má crescendo" +#: musicxml.py:379 +msgid "Unable to interpret time signature! Falling back to 4/4." +msgstr "Nelze vysvětlit taktové označení (druh taktu)! Používá se takt 4/4." -#: dynamic-engraver.cc:200 -#, fuzzy -msgid "cresc starts here" -msgstr "Crescendo zaèalo zde" +#: musicxml.py:435 +#, python-format +msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" +msgstr "Zadána oktáva alterace tóniny (stupnice) pro neexistující alteraci číslo %s, myslitelná čísla: %s!" -#: dynamic-engraver.cc:323 -msgid "unterminated (de)crescendo" -msgstr "neukonèené (de)crescendo" +#: musicxml.py:523 +#, python-format +msgid "Unable to find instrument for ID=%s\n" +msgstr "Nelze najít žádný nástroj pro ID=%s\n" -#: extender-engraver.cc:131 extender-engraver.cc:140 -msgid "unterminated extender" -msgstr "neukonené prodlou¾ení" +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "Provádí se texi2pdf na souboru %s pro zjiÅ¡tění výchozího nastavení strany.\n" -#: font-config.cc:28 -msgid "Initializing FontConfig..." -msgstr "" +#: book_texinfo.py:228 book_latex.py:209 +msgid "Unable to auto-detect default settings:\n" +msgstr "Nelze automaticky určit výchozí nastavení:\n" -#: font-config.cc:44 -#, c-format -msgid "Rebuilding FontConfig cache %s, this may take a while..." +#: book_texinfo.py:240 book_latex.py:221 +#, python-format +msgid "" +"Unable to auto-detect default settings:\n" +"%s" msgstr "" +"Nelze automaticky určit výchozí nastavení:\n" +"%s" -#: font-config.cc:55 -#, fuzzy, c-format -msgid "failed adding font directory: %s" -msgstr "nelze vytvoøit adresáø: `%s'" +#: book_latex.py:170 +msgid "cannot find \\begin{document} in LaTeX document" +msgstr "Nelze najít \\begin{document} v LaTeXovém dokumentu" -#: font-config.cc:57 -#, fuzzy, c-format -msgid "adding font directory: %s" -msgstr "nelze vytvoøit adresáø: `%s'" +#: book_latex.py:188 +#, python-format +msgid "Running `%s' on file `%s' to detect default page settings.\n" +msgstr "Provádí se `%s' na souboru `%s' pro zjiÅ¡tění výchozího nastavení strany.\n" -#: general-scheme.cc:160 -msgid "infinity or NaN encountered while converting Real number" -msgstr "" +#: musicxml2ly.py:228 +#, python-format +msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" +msgstr "Soubor byl vytvořený %s a obsahuje nesprávné údaje o trámcích. VÅ¡echny údaje o trámcích v souboru MusicXML se budou přehlížet" -#: general-scheme.cc:161 -msgid "setting to zero" -msgstr "" +#: musicxml2ly.py:247 musicxml2ly.py:249 +#, python-format +msgid "Unprocessed PartGroupInfo %s encountered" +msgstr "Narazilo se na nezpracovaný PartGroupInfo %s" -#: glissando-engraver.cc:92 -#, fuzzy -msgid "unterminated glissando" -msgstr "neukonèená ligatura" +#: musicxml2ly.py:502 +#, python-format +msgid "Encountered note at %s without type and duration (=%s)" +msgstr "Narazilo se na notu u %s bez udání druhu a doby trvání (=%s)" -#: global-context-scheme.cc:91 global-context-scheme.cc:107 -#, fuzzy -msgid "no music found in score" -msgstr "V partituøe je tøeba hudby" +#: musicxml2ly.py:522 +#, python-format +msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" +msgstr "Narazilo se na rozumovou dobu trvání se jmenovatelem %s, nelze ji převést na dobu v lilypondu" -#: global-context-scheme.cc:97 -#, fuzzy -msgid "Interpreting music... " -msgstr "Interpretuji hudbu..." +#: musicxml2ly.py:769 +msgid "Unable to extract key signature!" +msgstr "Nelze získat tóninu!" -#: global-context-scheme.cc:120 -#, c-format -msgid "elapsed time: %.2f seconds" -msgstr "uplynulý èas: %.2f sekund" +#: musicxml2ly.py:796 +#, python-format +msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" +msgstr "Neznámý režim %s, očekává se 'major' (Dur) nebo 'minor' (moll) nebo nějaká modální/středověká/církevní stupnice!" -#: gregorian-ligature-engraver.cc:59 -#, fuzzy, c-format -msgid "\\%s ignored" -msgstr "(ignorováno)" +#: musicxml2ly.py:934 +#, python-format +msgid "Encountered unprocessed marker %s\n" +msgstr "Narazilo se na nezpracovaný ukazatel %s\n" -#: gregorian-ligature-engraver.cc:64 -#, c-format -msgid "implied \\%s added" -msgstr "" +#: musicxml2ly.py:1028 +#, python-format +msgid "unknown span event %s" +msgstr "Neznámá událost doby %s" -#. ligature may not start with 2nd head of pes or flexa -#: gregorian-ligature-engraver.cc:212 -#, fuzzy -msgid "cannot apply `\\~' on first head of ligature" -msgstr "nelze nalézt zaèátek ligatury" +#: musicxml2ly.py:1038 +#, python-format +msgid "unknown span type %s for %s" +msgstr "Neznámý druh doby %s pro %s" -#. (pitch == prev_pitch) -#: gregorian-ligature-engraver.cc:224 -msgid "cannot apply `\\~' on heads with identical pitch" -msgstr "" +#: musicxml2ly.py:1458 +msgid "Unknown metronome mark, ignoring" +msgstr "Neznámá hodnota pro metronom, přehlíží se" -#: grob-interface.cc:57 -#, fuzzy, c-format -msgid "Unknown interface `%s'" -msgstr "neznámý pøekladaè: `%s':" +#. TODO: Implement the other (more complex) way for tempo marks! +#: musicxml2ly.py:1463 +msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." +msgstr "Hodnoty pro metronom se složitými vztay ( in MusicXML) jeÅ¡tě nejsou provedeny" -#: grob-interface.cc:68 -#, c-format -msgid "Grob `%s' has no interface for property `%s'" -msgstr "" +#: musicxml2ly.py:1665 +#, python-format +msgid "Unable to convert chord type %s to lilypond." +msgstr "Nelze převést typ akordu %s na lilypond." -#: grob.cc:253 -msgid "Infinity or NaN encountered" -msgstr "" +#: musicxml2ly.py:1814 +#, python-format +msgid "drum %s type unknown, please add to instrument_drumtype_dict" +msgstr "Druh bicích %s neznámý, přidat, prosím, k instrument_drumtype_dict" -#: hairpin.cc:183 -#, fuzzy -msgid "decrescendo too small" -msgstr "Text_spanner je pøíli¹ malý" +#: musicxml2ly.py:1818 +msgid "cannot find suitable event" +msgstr "Nelze najít vhodnou událost" -#: horizontal-bracket-engraver.cc:59 -msgid "do not have that many brackets" -msgstr "" +#: musicxml2ly.py:1966 +#, python-format +msgid "Negative skip %s (from position %s to %s)" +msgstr "Záporný skok (skip) %s (z polohy %s na %s)" -#: horizontal-bracket-engraver.cc:68 -#, fuzzy -msgid "conflicting note group events" -msgstr "Nalezeny konfliktní tóniny." +#: musicxml2ly.py:2107 +#, python-format +msgid "Negative skip found: from %s to %s, difference is %s" +msgstr "Nalezen záporný skok (skip): z %s na %s, rozdíl je %s" -#: hyphen-engraver.cc:93 -#, fuzzy -msgid "removing unterminated hyphen" -msgstr "neukonèený spojovník" +#: musicxml2ly.py:2188 +#, python-format +msgid "unexpected %s; expected %s or %s or %s" +msgstr "Neočekáváno %s; očekáváno %s nebo %s nebo %s" -#: hyphen-engraver.cc:107 -#, fuzzy -msgid "unterminated hyphen; removing" -msgstr "neukonèený spojovník" +#: musicxml2ly.py:2294 +msgid "Encountered closing slur, but no slur is open" +msgstr "Narazilo se na zavírající se legatový oblouček, ale není otevřen žádný legatový oblouček" -#: includable-lexer.cc:53 -msgid "include files are not allowed in safe mode" -msgstr "" +#: musicxml2ly.py:2297 +msgid "Cannot have two simultaneous (closing) slurs" +msgstr "Nelze mít současně dva (zavírající se) legátové obloučky" -#: includable-lexer.cc:60 lily-guile.cc:90 lily-parser-scheme.cc:116 -#, c-format -msgid "cannot find file: `%s'" -msgstr "nelze nalézt soubor: `%s'" +#: musicxml2ly.py:2306 +msgid "Cannot have a slur inside another slur" +msgstr "Nelze mít legatový oblouček uvnitř v jiném legatovém obloučku" -#: includable-lexer.cc:62 lily-parser-scheme.cc:107 -#, c-format -msgid "(search path: `%s')" -msgstr "(vyhledávací cesta: `%s')" +#: musicxml2ly.py:2309 +msgid "Cannot have two simultaneous slurs" +msgstr "Nelze mít současně dva legátové obloučky" -#: input.cc:112 source-file.cc:168 source-file.cc:183 -msgid "position unknown" -msgstr "neznámá pozice" +#: musicxml2ly.py:2443 +#, python-format +msgid "cannot simultaneously have more than one mode: %s" +msgstr "Nelze mít současně více než jeden modus: %s" -#: ligature-engraver.cc:93 -#, fuzzy -msgid "cannot find start of ligature" -msgstr "nelze nalézt zaèátek ligatury" +#: musicxml2ly.py:2551 +msgid "Converting to LilyPond expressions..." +msgstr "Převádí se na výrazy pro LilyPond..." -#: ligature-engraver.cc:98 -msgid "no right bound" -msgstr "chybí pravá hranice" +#: musicxml2ly.py:2562 +msgid "musicxml2ly [OPTION]... FILE.xml" +msgstr "musicxml2ly [VOLBY]... SOUBOR.xml" -#: ligature-engraver.cc:120 -#, fuzzy -msgid "already have a ligature" -msgstr "ligatura ji¾ existuje" +#: musicxml2ly.py:2564 +msgid "" +"Convert MusicXML from FILE.xml to LilyPond input.\n" +"If the given filename is -, musicxml2ly reads from the command line.\n" +msgstr "" +"Převést soubor MusicXML z SOUBOR.xml na vstup pro LilyPond.\n" +"Když zadaný název souboru je -, musicxml2ly čte z příkazové řádky.\n" -#: ligature-engraver.cc:129 -msgid "no left bound" -msgstr "chybí levá hranice" +#: musicxml2ly.py:2570 midi2ly.py:1062 abc2ly.py:1388 lilypond-book.py:140 +#: convert-ly.py:92 etf2ly.py:1204 main.cc:153 +msgid "show this help and exit" +msgstr "Ukázat tuto nápovědu a ukončit" -#: ligature-engraver.cc:173 -#, fuzzy -msgid "unterminated ligature" -msgstr "neukonèená ligatura" +#: musicxml2ly.py:2574 +msgid "" +"Copyright (c) 2005--2012 by\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen and\n" +" Reinhold Kainhofer \n" +msgstr "" +"Autorské právo (c) 2005--2012\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen a\n" +" Reinhold Kainhofer \n" + +#: musicxml2ly.py:2588 midi2ly.py:1095 abc2ly.py:1385 lilypond-book.py:231 +#: convert-ly.py:88 etf2ly.py:1208 main.cc:174 +msgid "show version number and exit" +msgstr "Ukázat číslo verze a ukončit" -#: ligature-engraver.cc:202 -#, fuzzy -msgid "ignoring rest: ligature may not contain rest" -msgstr "ligatura by nemìla obsahovat pomlku; ignoruji pomlku" +#: musicxml2ly.py:2594 midi2ly.py:1090 lilypond-book.py:223 +msgid "be verbose" +msgstr "Být podrobný" -#: ligature-engraver.cc:203 -#, fuzzy -msgid "ligature was started here" -msgstr "ligatura byla zaèata zde" +#: musicxml2ly.py:2600 +msgid "use lxml.etree; uses less memory and cpu time" +msgstr "Použít lxml.etree; potřebuje méně paměti a času na zpracování" -#: lily-guile.cc:92 -#, c-format -msgid "(load path: `%s')" -msgstr "(nahrávací cesta: `%s')" +#: musicxml2ly.py:2606 +msgid "input file is a zip-compressed MusicXML file" +msgstr "Vstupní soubor je zazipovaným souborem MusicXML" -#: lily-guile.cc:518 -#, fuzzy, c-format -msgid "cannot find property type-check for `%s' (%s)." -msgstr "Nelze nalézt kontrolu typu vlastnosti pro `%s' (%s)." +#: musicxml2ly.py:2612 +msgid "convert pitches in relative mode (default)" +msgstr "Převést výšky tónů na paralelní modus (výchozí)" -#: lily-guile.cc:521 -#, fuzzy -msgid "perhaps a typing error?" -msgstr "Mo¾ná se stal pøeklep?" +#: musicxml2ly.py:2617 +msgid "convert pitches in absolute mode" +msgstr "Převést výšky tónů na absolutní modus" -#: lily-guile.cc:527 -#, fuzzy -msgid "doing assignment anyway" -msgstr "Pøesto pøiøazuji." +#: musicxml2ly.py:2620 +msgid "LANG" +msgstr "JAZYK" -#: lily-guile.cc:539 -#, fuzzy, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" -msgstr "Kontrola typu `%s' selhala; hodnota `%s' musí být typu `%s'" +#: musicxml2ly.py:2622 +msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" +msgstr "Použít JAZYK pro názvy výšek tónů, např. 'deutsch' pro názvy not v němčině" -#: lily-lexer.cc:254 -#, fuzzy, c-format -msgid "identifier name is a keyword: `%s'" -msgstr "Název identifikátoru je klíèové slovo: `%s'" +#: musicxml2ly.py:2625 lilypond-book.py:179 convert-ly.py:105 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" +msgstr "Vytisknout zprávy se zápisy podle ÚROVNĚ ZÁPISU (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" -#: lily-lexer.cc:269 -#, c-format -msgid "error at EOF: %s" -msgstr "chyba na konci souboru: %s" +#: musicxml2ly.py:2627 lilypond-book.py:163 lilypond-book.py:181 +#: convert-ly.py:107 main.cc:167 +msgid "LOGLEVEL" +msgstr "ÚROVEŇ ZÁPISU" -#: lily-parser-scheme.cc:29 -#, fuzzy, c-format -msgid "deprecated function called: %s" -msgstr "nelze nalézt znak nazvaný: `%s'" +#: musicxml2ly.py:2636 +msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." +msgstr "Nepřevádět směry (^, _ nebo -) pro artikulace, dynamiku, atd." -#: lily-parser-scheme.cc:88 -#, fuzzy, c-format -msgid "Changing working directory to: `%s'" -msgstr "nelze vytvoøit adresáø: `%s'" +#: musicxml2ly.py:2642 +msgid "do not convert exact vertical positions of rests" +msgstr "Nepřevádět přesné svislá postavení pomlk" -#: lily-parser-scheme.cc:106 -#, fuzzy, c-format -msgid "cannot find init file: `%s'" -msgstr "nelze nalézt soubor: `%s'" +#: musicxml2ly.py:2648 +msgid "do not convert the exact page layout and breaks" +msgstr "Nepřevádět přesné rozvržení strany a zalomení" -#: lily-parser-scheme.cc:125 -#, fuzzy, c-format -msgid "Processing `%s'" -msgstr "Zpracovávám `%s'..." +#: musicxml2ly.py:2654 +msgid "do not convert beaming information, use lilypond's automatic beaming instead" +msgstr "Nepřevádět údaje o trámcích, místo toho použít lilypondovké automatické trámce" -#: lily-parser.cc:99 -msgid "Parsing..." -msgstr "Analyzuji..." +#: musicxml2ly.py:2657 midi2ly.py:1067 midi2ly.py:1072 etf2ly.py:1210 +#: main.cc:159 main.cc:171 +msgid "FILE" +msgstr "SOUBOR" -#: lily-parser.cc:127 -#, fuzzy -msgid "braces do not match" -msgstr "Poèet závorek nesouhlasí" +#: musicxml2ly.py:2662 +msgid "set output filename to FILE, stdout if -" +msgstr "Nastavit název výstupního souboru na SOUBOR, stdout if -" -#: lyric-combine-music-iterator.cc:291 -#, fuzzy, c-format -msgid "cannot find Voice `%s'" -msgstr "nelze nalézt soubor: `%s'" +#: musicxml2ly.py:2668 +msgid "add midi-block to .ly file" +msgstr "Přidat midi-block do souboru .ly" -#: main.cc:116 -#, fuzzy, c-format -msgid "" -"This program is free software. It is covered by the GNU General Public\n" -"License and you are welcome to change it and/or distribute copies of it\n" -"under certain conditions. Invoke as `%s --warranty' for more\n" -"information.\n" -msgstr "" -"Toto je svobodný software. Je chránìn GNU General Public License \n" -"a vy jste vítáni k jeho zmìnì a (nebo) ¹íøení jeho kopií za dodr¾ení\n" -"urèitých podmínek. Pro více informací spus»te program takto: `%s --" -"warranty'.\n" +#. Translators, please translate this string as +#. "Report bugs in English via %s", +#. or if there is a LilyPond users list or forum in your language +#. "Report bugs in English via %s or in YOUR_LANG via URI" +#: musicxml2ly.py:2672 midi2ly.py:1107 abc2ly.py:1403 lilypond-book.py:258 +#: convert-ly.py:146 etf2ly.py:1218 main.cc:285 +#, c-format, python-format +msgid "Report bugs via %s" +msgstr "Chyby v programu hlásit přes %s" -#: main.cc:122 -#, fuzzy -msgid "" -" This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" -"\n" -" This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"General Public License for more details.\n" -"\n" -" You should have received a copy of the\n" -"GNU General Public License along with this program; if not, write to\n" -"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" -"Boston, MA 02111-1307, USA.\n" -msgstr "" -" Tento program je svobodný software; mù¾ete jej distribuovat a (nebo)\n" -"modifikovat za dodr¾ení podmínek daných GNU General Public License verze 2\n" -"jak je zveøejnìna nadací Free Software Foundation.\n" -" Tento program je distribuován v nadìji, ¾e bude u¾iteèný,\n" -"nicménì BEZ JAKÉKOLIV ZÁRUKY nebo VHODNOSTI PRO URÈITÉ POU®ITÍ.Ohlednì " -"dal¹ích detailù ètìte GNU General Public License\n" -"\n" -" S tímto programem byste mìli obdr¾et kopii (viz soubor COPYING)\n" -"GNU General Public License. Pokud se tak nestalo, napi¹te Free Software\n" -"Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139. USA\n" +#: musicxml2ly.py:2752 +#, python-format +msgid "unknown part in part-list: %s" +msgstr "Neznámý hlas v seznamu s hlasy (part-list): %s" -#: main.cc:153 -msgid "BACK" -msgstr "" +#: musicxml2ly.py:2814 +msgid "Input is compressed, extracting raw MusicXML data from stdin" +msgstr "Vstupní soubor je stlačený, surová data MusicXML se rozbalují z stdin" -#: main.cc:153 -msgid "" -"use backend BACK (eps, gnome, ps [default],\n" -"scm, svg, tex, texstr)" -msgstr "" +#: musicxml2ly.py:2827 +#, python-format +msgid "Input file %s is compressed, extracting raw MusicXML data" +msgstr "Vstupní soubor %s je stlačený, rozbalují se surová data MusicXML" -#: main.cc:155 -#, fuzzy -msgid "SYM[=VAL]" -msgstr "KLÍÈ=HODN" +#: musicxml2ly.py:2857 +msgid "Reading MusicXML from Standard input ..." +msgstr "Čtou se MusicXML z obvyklého vstupu (standard input)..." -#: main.cc:156 -msgid "" -"set Scheme option SYM to VAL (default: #t)\n" -"Use -dhelp for help." -msgstr "" +#: musicxml2ly.py:2859 +#, python-format +msgid "Reading MusicXML from %s ..." +msgstr "Čtou se data MusicXML z %s..." -#: main.cc:159 -msgid "EXPR" -msgstr "VÝRAZ" +#: musicxml2ly.py:2892 +#, python-format +msgid "Output to `%s'" +msgstr "Výstup do `%s'" -#: main.cc:159 -#, fuzzy -msgid "evaluate scheme code" -msgstr "Nelze vvyhodnotit Scheme v bezpeèném módu" +#: musicxml2ly.py:2962 +#, python-format +msgid "Unable to find input file %s" +msgstr "Nelze nalézt vstupní soubor %s" -#. Bug in option parser: --output =foe is taken as an abbreviation -#. for --output-format. -#: main.cc:162 -msgid "FORMATs" -msgstr "" +#: midi2ly.py:81 lilypond-book.py:115 convert-ly.py:75 etf2ly.py:1191 +#, python-format +msgid "Copyright (c) %s by" +msgstr "Autorské právo (c) %s od" -#: main.cc:162 -msgid "dump FORMAT,... Also as separate options:" -msgstr "" +#: midi2ly.py:83 lilypond-book.py:117 convert-ly.py:77 etf2ly.py:1193 +msgid "Distributed under terms of the GNU General Public License." +msgstr "Šířeno ve znění licence GNU General Public License." -#: main.cc:163 -#, fuzzy -msgid "generate DVI (tex backend only)" -msgstr "vytváøí PDF výstup" +#: midi2ly.py:84 lilypond-book.py:118 convert-ly.py:78 etf2ly.py:1194 +msgid "It comes with NO WARRANTY." +msgstr "Program je nabízen BEZ jakékoliv ZÁRUKY." -#: main.cc:164 -#, fuzzy -msgid "generate PDF (default)" -msgstr "vytváøí PDF výstup" +#: midi2ly.py:90 +msgid "warning: " +msgstr "Varování: " -#: main.cc:165 -#, fuzzy -msgid "generate PNG" -msgstr "vytváøí PDF výstup" +#: midi2ly.py:93 midi2ly.py:1124 +msgid "error: " +msgstr "Chyba: " -#: main.cc:166 -#, fuzzy -msgid "generate PostScript" -msgstr "vytváøí PostScriptový výstup" +#: midi2ly.py:94 +msgid "Exiting... " +msgstr "Ukončuje se... " -#: main.cc:167 -msgid "generate TeX (tex backend only)" -msgstr "" +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" +msgstr "Nalezeno více jak 5 hlasů na jedné osnově. Dá se očekávat Å¡patný výstup" -#: main.cc:168 -msgid "show this help and exit" -msgstr "" +#: midi2ly.py:1032 +#, python-format +msgid "%s output to `%s'..." +msgstr "Výstup %s se zapisuje do `%s'..." -#: main.cc:169 -msgid "FIELD" -msgstr "POLE" +#: midi2ly.py:1044 abc2ly.py:1376 lilypond-book.py:122 convert-ly.py:81 +#, python-format +msgid "%s [OPTION]... FILE" +msgstr "%s [VOLBY]... SOUBOR" -#: main.cc:169 -#, fuzzy -msgid "" -"dump header field FIELD to file\n" -"named BASENAME.FIELD" -msgstr "zapísuje pole hlavièky do BASENAME.POLE" +#: midi2ly.py:1045 +#, python-format +msgid "Convert %s to LilyPond input.\n" +msgstr "Převést %s na zdrojový text LilyPondu.\n" -#: main.cc:171 -msgid "add DIR to search path" -msgstr "pøidává ADRESÁØ do vyhledávací cesty" +#: midi2ly.py:1050 +msgid "print absolute pitches" +msgstr "Vypsat absolutní výšky tónů" -#: main.cc:172 -msgid "use FILE as init file" -msgstr "pou¾ívá SOUBOR jako inicializaèní soubor" +#: midi2ly.py:1052 midi2ly.py:1080 +msgid "DUR" +msgstr "DÉLKA" -#: main.cc:174 -msgid "USER,GROUP,JAIL,DIR" -msgstr "" +#: midi2ly.py:1053 +msgid "quantise note durations on DUR" +msgstr "Zarovnat délky not na DOBY" -#: main.cc:174 -msgid "" -"chroot to JAIL, become USER:GROUP\n" -"and cd into DIR" -msgstr "" +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "Prozkoumat tisk kvůli chybám" -#: main.cc:177 -#, fuzzy -msgid "do not generate printed output" -msgstr "vytváøí PostScriptový výstup" +#: midi2ly.py:1059 +msgid "print explicit durations" +msgstr "Vypsat přímo vyjádřené délky" -#: main.cc:178 -#, fuzzy -msgid "write output to FILE (suffix will be added)" -msgstr "zapisuje výstup do SOUBORu" +#: midi2ly.py:1064 +msgid "prepend FILE to output" +msgstr "Připojit SOUBOR k výstupu" -#: main.cc:179 -#, fuzzy -msgid "generate a preview of the first system" -msgstr "vytvoøí obrázek prvního systému" +#: midi2ly.py:1068 +msgid "set key: ALT=+sharps|-flats; MINOR=1" +msgstr "Nastavit stupnici: ZMĚNA=+křížky|-béčka; MOLL=1" -#: main.cc:180 -msgid "relocate using directory of lilypond program" -msgstr "" +#: midi2ly.py:1069 +msgid "ALT[:MINOR]" +msgstr "ZMĚNA[:MOLL]" -#: main.cc:181 -msgid "" -"disallow unsafe Scheme and PostScript\n" -"operations" -msgstr "" +#: midi2ly.py:1071 abc2ly.py:1391 etf2ly.py:1209 +msgid "write output to FILE" +msgstr "Zapsat výstup do SOUBORu" -#: main.cc:183 -#, fuzzy -msgid "show version number and exit" -msgstr "vypisuje èíslo verze" +#: midi2ly.py:1074 +msgid "preview of first 4 bars" +msgstr "Náhled na první čtyři takty" -#: main.cc:224 -#, fuzzy, c-format -msgid "" -"Copyright (c) %s by\n" -"%s and others." -msgstr "Copyright (c) %s by" +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" +msgstr "Potlačit zprávy o postupu a varování o příliÅ¡ mnoha hlasech" -#. No version number or newline here. It confuses help2man. -#: main.cc:251 -#, fuzzy, c-format -msgid "Usage: %s [OPTION]... FILE..." -msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR..." +#: midi2ly.py:1079 +msgid "quantise note starts on DUR" +msgstr "Zarovnat začátky not na DOBU" -#: main.cc:253 -#, fuzzy, c-format -msgid "Typeset music and/or produce MIDI from FILE." -msgstr "Sází hudbu a/nebo pøehrává MIDI ze SOUBORu." +#: midi2ly.py:1083 +msgid "use s instead of r for rests" +msgstr "Použít pro pomlky s namísto r" -#: main.cc:255 -#, c-format -msgid "LilyPond produces beautiful music notation." -msgstr "" +#: midi2ly.py:1085 +msgid "DUR*NUM/DEN" +msgstr "DOBA*ČÍSLO/DĚLITEL" -#: main.cc:257 -#, c-format -msgid "For more information, see %s" -msgstr "" +#: midi2ly.py:1088 +msgid "allow tuplet durations DUR*NUM/DEN" +msgstr "Povolit triolové (kvartolové, ...) doby DOBA*ČÍSLO/DĚLITEL" -#: main.cc:259 -#, c-format -msgid "Options:" -msgstr "Pøepínaèe:" +#: midi2ly.py:1096 lilypond-book.py:234 convert-ly.py:141 etf2ly.py:1212 +#: main.cc:176 +msgid "show warranty and copyright" +msgstr "Ukázat záruku a autorské právo" -#: main.cc:263 -#, fuzzy, c-format -msgid "Report bugs via %s" -msgstr "" -"Chyby v programu oznamujte na adrese %s (pouze anglicky),\n" -"pøipomínky k pøekladu zasílejte na (èesky)." +#: midi2ly.py:1098 +msgid "treat every text as a lyric" +msgstr "Zacházet s každým textem jako se slovy písně" -#: main.cc:309 -#, c-format -msgid "expected %d arguments with jail, found: %u" -msgstr "" +#: midi2ly.py:1101 +msgid "Examples" +msgstr "Příklady" -#: main.cc:323 -#, fuzzy, c-format -msgid "no such user: %s" -msgstr "takové nastavení neexistuje: `%s'" +#: midi2ly.py:1125 +msgid "no files specified on command line." +msgstr "Na příkazové řádce nebyly zadány žádné soubory." -#: main.cc:325 -#, c-format -msgid "cannot get user id from user name: %s: %s" +#: abc2ly.py:1377 +#, python-format +msgid "" +"abc2ly converts ABC music files (see\n" +"%s) to LilyPond input.\n" msgstr "" +"abc2ly převede hudební soubory ABC (viz\n" +"%s) na vstup LilyPond.\n" -#: main.cc:340 -#, fuzzy, c-format -msgid "no such group: %s" -msgstr "neexistující kontext: %s" +#: abc2ly.py:1394 +msgid "be strict about success" +msgstr "Být přísný k úspěchu" -#: main.cc:342 -#, fuzzy, c-format -msgid "cannot get group id from group name: %s: %s" -msgstr "nelze zmìnit `%s' na `%s'" +#: abc2ly.py:1397 +msgid "preserve ABC's notion of beams" +msgstr "Zachovat ABC pohled na trámců" -#: main.cc:350 -#, fuzzy, c-format -msgid "cannot chroot to: %s: %s" -msgstr "nelze vytvoøit adresáø: `%s'" +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "Potlačit zprávy o postupu" -#: main.cc:357 -#, fuzzy, c-format -msgid "cannot change group id to: %d: %s" -msgstr "nelze zmìnit `%s' na `%s'" +#: lilypond-book.py:80 +msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." +msgstr "Zpracovat úryvky LilyPondu na křížené dokumenty HTML, LaTeX, texinfo nebo DocBook." -#: main.cc:363 -#, fuzzy, c-format -msgid "cannot change user id to: %d: %s" -msgstr "nelze zmìnit `%s' na `%s'" +#: lilypond-book.py:82 convert-ly.py:48 +msgid "Examples:" +msgstr "Příklady:" -#: main.cc:369 -#, fuzzy, c-format -msgid "cannot change working directory to: %s: %s" -msgstr "nelze vytvoøit adresáø: `%s'" +#: lilypond-book.py:87 +msgid "BOOK" +msgstr "KNIHA" -#: main.cc:415 -#, c-format -msgid "Evaluating %s" -msgstr "" +#: lilypond-book.py:95 +#, python-format +msgid "Exiting (%d)..." +msgstr "Ukončuje se (%d)..." -#: main.cc:645 -#, c-format -msgid "exception caught: %s" -msgstr "" +#: lilypond-book.py:127 +msgid "FILTER" +msgstr "FILTR" -#. FIXME: constant error message. -#: mark-engraver.cc:154 -msgid "rehearsalMark must have integer value" -msgstr "" +#: lilypond-book.py:130 +msgid "pipe snippets through FILTER [default: `convert-ly -n -']" +msgstr "Vést úryvky přes FILTR [výchozí: `convert-ly -n -']" -#: mark-engraver.cc:160 -msgid "mark label must be a markup object" -msgstr "" +#: lilypond-book.py:134 +msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)" +msgstr "Použít výstupní FORMÁT (texi [výchozí], texi-html, latex, html, docbook)" -#: mensural-ligature-engraver.cc:85 -msgid "ligature with less than 2 heads -> skipping" -msgstr "ligatura s ménì ne¾ dvìma hlavièkami -> vynechávám" +#: lilypond-book.py:135 +msgid "FORMAT" +msgstr "FORMÁT" -#: mensural-ligature-engraver.cc:112 -#, fuzzy -msgid "cannot determine pitch of ligature primitive -> skipping" -msgstr "nelze urèit vý¹ku poèátku ligatury -> vynechávám" +#: lilypond-book.py:142 +msgid "add DIR to include path" +msgstr "Přidat ADRESÁŘ do vyhledávací cesty" -#: mensural-ligature-engraver.cc:126 -#, fuzzy -msgid "single note ligature - skipping" -msgstr "interval ligatury je prima -> vynechávám" +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 +msgid "DIR" +msgstr "ADRESÁŘ" -#: mensural-ligature-engraver.cc:138 -msgid "prime interval within ligature -> skipping" -msgstr "interval ligatury je prima -> vynechávám" +#: lilypond-book.py:148 +msgid "format Texinfo output so that Info will look for images of music in DIR" +msgstr "Uspořádat výstup Texinfo tak, že Info bude hledat obrázky nebo noty v ADRESÁŘI" -#: mensural-ligature-engraver.cc:150 -#, fuzzy -msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" -msgstr "menzurální ligatura: délka není ani jedna z L, B, S -> vynechávám" +#: lilypond-book.py:155 +msgid "PAD" +msgstr "VYCPÁVKA" -#: mensural-ligature-engraver.cc:198 -msgid "semibrevis must be followed by another one -> skipping" -msgstr "" +#: lilypond-book.py:157 +msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)" +msgstr "Posunout levý okraj not kvůli zarovnání not, i když je číslo taktu liché (v mm)" -#: mensural-ligature-engraver.cc:209 -msgid "" -"semibreves can only appear at the beginning of a ligature,\n" -"and there may be only zero or two of them" -msgstr "" +#: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" +msgstr "Vytisknout zprávy se zápisy lilypond podle ÚROVNĚ ZÁPISU" -#: mensural-ligature-engraver.cc:236 -msgid "" -"invalid ligatura ending:\n" -"when the last note is a descending brevis,\n" -"the penultimate note must be another one,\n" -"or the ligatura must be LB or SSB" -msgstr "" +#: lilypond-book.py:168 +msgid "write lily-XXX files to DIR, link into --output dir" +msgstr "Zapsat soubory lily-XXX do ADRESÁŘE, spojit s --output dir" -#: mensural-ligature-engraver.cc:356 -msgid "unexpected case fall-through" -msgstr "neznámý pøípad" +#: lilypond-book.py:173 +msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" +msgstr "Nahrát dodatečný BALÍČEK s pythonem (obsahuje např. vlastní výstupní formát)" -#: mensural-ligature.cc:141 -#, fuzzy -msgid "Mensural_ligature: unexpected case fall-through" -msgstr "Mensural_ligature: neznámý pøípad" +#: lilypond-book.py:174 +msgid "PACKAGE" +msgstr "BALÍČEK" -#: mensural-ligature.cc:192 -#, fuzzy -msgid "Mensural_ligature: (join_right == 0)" -msgstr "Mensural_ligature: (join_left == 0)" +#: lilypond-book.py:186 +msgid "write output to DIR" +msgstr "Zapsat výstup do SOUBORu" -#: midi-item.cc:152 -#, fuzzy, c-format -msgid "no such MIDI instrument: `%s'" -msgstr "takový nástroj neexistuje: `%s'" +#: lilypond-book.py:191 +msgid "COMMAND" +msgstr "PŘÍKAZ" -#: midi-item.cc:285 -#, c-format -msgid "experimental: temporarily fine tuning (of %d cents) a channel." -msgstr "" +#: lilypond-book.py:192 +msgid "process ly_files using COMMAND FILE..." +msgstr "Zpracovat (soubory) ly_files pomocí SOUBORU S PŘÍKAZEM..." -#: midi-stream.cc:28 -#, fuzzy, c-format -msgid "cannot open for write: %s: %s" -msgstr "nelze otevøít soubor: `%s'" +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "Přesměrovat výstupu lilypondu" -#: midi-stream.cc:44 -#, fuzzy, c-format -msgid "cannot write to file: `%s'" -msgstr "nelze otevøít soubor: `%s'" +#: lilypond-book.py:201 +msgid "Compile snippets in safe mode" +msgstr "Sestavit kousky v bezpečném režimu" -#: music-iterator.cc:171 -msgid "Sending non-event to context" -msgstr "" +#: lilypond-book.py:207 +msgid "do not fail if no lilypond output is found" +msgstr "Neukončit, pokud není nalezen žádný výstup z lilypondu" -#: music.cc:141 -#, c-format -msgid "octave check failed; expected \"%s\", found: \"%s\"" -msgstr "" +#: lilypond-book.py:213 +msgid "do not fail if no PNG images are found for EPS files" +msgstr "Neukončit, pokud není nalezen žádný obrázek PNG nebo soubory EPS" -#: music.cc:207 -#, fuzzy, c-format -msgid "transposition by %s makes alteration larger than double" -msgstr "Transpozice o %s vytváøí více posuvek ne¾ dvì" +#: lilypond-book.py:219 +msgid "write snippet output files with the same base name as their source file" +msgstr "Zapsat výstupní soubor kousku s týmž základním názvem, jaký má zdrojový soubor" -#: new-fingering-engraver.cc:96 -msgid "cannot add text scripts to individual note heads" +#: lilypond-book.py:239 +msgid "" +"run executable PROG instead of latex, or in\n" +"case --pdf option is set instead of pdflatex" msgstr "" +"Spustit soubor PROG místo latex, nebo\n" +"v případě že je nastavena volba --pdf namísto pdflatex" -#: new-fingering-engraver.cc:239 -msgid "no placement found for fingerings" -msgstr "" +#: lilypond-book.py:241 lilypond-book.py:246 +msgid "PROG" +msgstr "PROG" -#: new-fingering-engraver.cc:240 -msgid "placing below" -msgstr "" +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "Spustit spustitelný soubor PROG místo texi2pdf" -#: note-collision.cc:457 -#, fuzzy -msgid "ignoring too many clashing note columns" -msgstr "Pøíli¹ mnoho kolizí notových sloupcù. Ignoruji je." +#: lilypond-book.py:252 +msgid "create PDF files for use with PDFTeX" +msgstr "Vytvořit soubory PDF pro použití s PDFTeX" -#: note-column.cc:124 -msgid "cannot have note heads and rests together on a stem" -msgstr "" +#: lilypond-book.py:455 +msgid "Writing snippets..." +msgstr "Zapisují se úryvky..." -#: note-head.cc:63 -#, fuzzy, c-format -msgid "none of note heads `%s' or `%s' found" -msgstr "notová hlavièka `%s' nebyla nalezena" +#: lilypond-book.py:460 +msgid "Processing..." +msgstr "Zpracovává se..." -#: note-heads-engraver.cc:61 -msgid "NoteEvent without pitch" -msgstr "" +#: lilypond-book.py:465 +msgid "All snippets are up to date..." +msgstr "VÅ¡echny úryvky jsou v nejnovějším stavu..." -#: open-type-font.cc:33 -#, fuzzy, c-format -msgid "cannot allocate %lu bytes" -msgstr "nelze otevøít soubor: `%s'" +#: lilypond-book.py:484 +#, python-format +msgid "cannot determine format for: %s" +msgstr "Nelze určit formát pro: %s" -#: open-type-font.cc:37 -#, fuzzy, c-format -msgid "cannot load font table: %s" -msgstr "nelze nalézt font: `%s'" +#: lilypond-book.py:493 +#, python-format +msgid "%s is up to date." +msgstr "%s je v nejnovějším stavu." -#: open-type-font.cc:98 -#, c-format -msgid "unsupported font format: %s" -msgstr "" +#: lilypond-book.py:506 +#, python-format +msgid "Writing `%s'..." +msgstr "Zapisuje se `%s'..." -#: open-type-font.cc:100 -#, c-format -msgid "unknown error: %d reading font file: %s" -msgstr "" +#: lilypond-book.py:567 +msgid "Output would overwrite input file; use --output." +msgstr "Výstup by přepsal soubor se vstupem; použijte --output." -#: open-type-font.cc:173 open-type-font.cc:297 -#, c-format -msgid "FT_Get_Glyph_Name() returned error: %u" -msgstr "" +#: lilypond-book.py:571 +#, python-format +msgid "Reading %s..." +msgstr "Čte se %s..." -#: page-turn-page-breaking.cc:205 -msgid "" -"cannot fit the first page turn onto a single page. Consider setting first-" -"page-number to an even number." -msgstr "" +#: lilypond-book.py:578 +msgid "Dissecting..." +msgstr "Rozebírá se..." -#: page-turn-page-breaking.cc:218 -#, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." -msgstr "" +#: lilypond-book.py:589 +#, python-format +msgid "Compiling %s..." +msgstr "Sestavuje se %s..." -#: page-turn-page-breaking.cc:236 paper-score.cc:154 -msgid "Drawing systems..." -msgstr "" +#: lilypond-book.py:597 +#, python-format +msgid "Processing include: %s" +msgstr "Zpracovává se zahrnutí: %s" -#: pango-font.cc:181 -#, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" -msgstr "" +#: lilypond-book.py:608 +#, python-format +msgid "Removing `%s'" +msgstr "Odstraňuje se `%s'" -#: pango-font.cc:224 -#, fuzzy, c-format -msgid "no PostScript font name for font `%s'" -msgstr "`%s' není PostScriptovým souborem" +#: lilypond-book.py:699 +#, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "Nastavení úrovně zápisu pro LilyPond na %s" -#: pango-font.cc:272 -msgid "FreeType face has no PostScript font name" +#: lilypond-book.py:703 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" +msgstr "Nastavení úrovně zápisu pro LilyPond na %s (z proměnné prostředí LILYPOND_LOGLEVEL)" + +#: lilypond-book.py:706 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" +msgstr "Nastavení výstupu pro LilyPond na --verbose, předpokládáno podle nastavení lilypond-book" + +#: convert-ly.py:46 +msgid "" +"Update LilyPond input to newer version. By default, update from the\n" +"version taken from the \\version command, to the current LilyPond version." msgstr "" +"Povýšit vstup LilyPond na novější verzi. Ve výchozím nastavení se\n" +"jde z verze získané z příkazu \\version k současné verzi LilyPondu." -#: paper-outputter-scheme.cc:33 -#, fuzzy, c-format -msgid "Layout output to `%s'..." -msgstr "výstup %s se zapisuje do `%s'..." +#: convert-ly.py:96 convert-ly.py:137 +msgid "VERSION" +msgstr "VERZE" -#: paper-score.cc:105 -#, fuzzy -msgid "Calculating line breaks..." -msgstr "Poèítám pozice sloupcù..." +#: convert-ly.py:98 +msgid "start from VERSION [default: \\version found in file]" +msgstr "Začít VERZÍ [výchozí: \\version nalezena v souboru]" -#: paper-score.cc:118 -#, fuzzy, c-format -msgid "Element count %d (spanners %d) " -msgstr "Poèet prvkù je %d (pøeklenutí %d) " +#: convert-ly.py:101 +msgid "edit in place" +msgstr "Upravit na místě" -#: paper-score.cc:122 -#, fuzzy -msgid "Preprocessing graphical objects..." -msgstr "Pøedzpracovávám prvky..." +#: convert-ly.py:113 +msgid "do not add \\version command if missing" +msgstr "Nepřidávat příkaz \\version chybí-li" -#: parse-scm.cc:83 -#, fuzzy -msgid "GUILE signaled an error for the expression beginning here" -msgstr "GUILE hlásí chybu ve výrazu, který zaèíná zde" +#: convert-ly.py:119 +#, python-format +msgid "force updating \\version number to %s" +msgstr "Vynutit povýšení z čísla \\version na %s" -#: percent-repeat-engraver.cc:200 -#, fuzzy -msgid "unterminated percent repeat" -msgstr "neuzavøená pedálová závorka" +#: convert-ly.py:125 +msgid "only update \\version number if file is modified" +msgstr "Aktualizovat číslo \\version, jen když byl soubor změněn" -#: performance.cc:45 -#, fuzzy -msgid "Track..." -msgstr "Stopa ... " +#: convert-ly.py:131 +#, python-format +msgid "show rules [default: -f 0, -t %s]" +msgstr "Ukázat pravidla [výchozí: -f 0, -t %s]" -#: performance.cc:74 -msgid "MIDI channel wrapped around" -msgstr "" +#: convert-ly.py:136 +#, python-format +msgid "convert to VERSION [default: %s]" +msgstr "Převést na VERZI [výchozí: %s]" -#: performance.cc:75 -msgid "remapping modulo 16" -msgstr "" +#: convert-ly.py:186 +msgid "Applying conversion: " +msgstr "Používá se převod:" -#: performance.cc:103 -#, c-format -msgid "MIDI output to `%s'..." -msgstr "MIDI výstup do `%s'..." +#: convert-ly.py:202 +msgid "Error while converting" +msgstr "Chyba při převodu" -#: phrasing-slur-engraver.cc:146 -msgid "unterminated phrasing slur" -msgstr "neukonèené frázovací legato" +#: convert-ly.py:204 +msgid "Stopping at last successful rule" +msgstr "Zastavení při posledním úspěšném pravidle" -#: piano-pedal-engraver.cc:286 -#, c-format -msgid "expect 3 strings for piano pedals, found: %ld" -msgstr "" +#: convert-ly.py:231 +#, python-format +msgid "Processing `%s'... " +msgstr "Zpracovává se `%s'... " -#: piano-pedal-engraver.cc:301 piano-pedal-engraver.cc:312 -#: piano-pedal-performer.cc:93 -#, c-format -msgid "cannot find start of piano pedal: `%s'" -msgstr "nelze nalézt zaèátek pedálu piana: `%s'" +#: convert-ly.py:338 +#, python-format +msgid "%s: Unable to open file" +msgstr "%s: Nepodařilo se otevřít soubor" -#: piano-pedal-engraver.cc:347 -#, fuzzy, c-format -msgid "cannot find start of piano pedal bracket: `%s'" -msgstr "nelze nalézt zaèátek pedálu piana: `%s'" +#: convert-ly.py:345 +#, python-format +msgid "%s: Unable to determine version. Skipping" +msgstr "%s: Nepodařilo se určit verzi. Přeskakuje se" -#: program-option.cc:205 -#, fuzzy, c-format -msgid "no such internal option: %s" -msgstr "Neznámá interní volba!" +#: convert-ly.py:350 +#, python-format +msgid "" +"%s: Invalid version string `%s' \n" +"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" +msgstr "" +"%s: Neplatný řetězec verze `%s' \n" +"Platné řetězce verze sestává ze tří čísel, oddělených tečkami, např. `2.8.12'" -#: property-iterator.cc:74 -#, fuzzy, c-format -msgid "not a grob name, `%s'" -msgstr "Není jménem grobu, `%s'." +#: etf2ly.py:1197 +#, python-format +msgid "%s [OPTION]... ETF-FILE" +msgstr "%s [VOLBY]... ETF-SOUBOR" -#: relative-octave-check.cc:38 -msgid "Failed octave check, got: " +#: etf2ly.py:1198 +msgid "" +"Enigma Transport Format is a format used by Coda Music Technology's\n" +"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" msgstr "" +"Enigma Transport Format je formátem používaným výrobkem Coda Music Technology's\n" +"Finale. etf2ly převede podmnožinu ETF na soubor použitelný LilyPondem.\n" -#: relocate.cc:44 -#, fuzzy, c-format -msgid "Setting %s to %s" -msgstr "nelze vytvoøit adresáø: `%s'" +#: website_post.py:123 +msgid "English" +msgstr "Angličtina" -#: relocate.cc:59 -#, fuzzy, c-format -msgid "no such file: %s for %s" -msgstr "neexistující kontext: %s" +#: website_post.py:126 +msgid "Other languages" +msgstr "Jiné jazyky" -#: relocate.cc:69 relocate.cc:87 -#, fuzzy, c-format -msgid "no such directory: %s for %s" -msgstr "neexistující kontext: %s" +#: website_post.py:127 +#, python-format +msgid "About automatic language selection." +msgstr "O automatickém výběru jazyka." -#: relocate.cc:79 +#: warn.cc:56 #, c-format -msgid "%s=%s (prepend)\n" -msgstr "" +msgid "Log level set to %d\n" +msgstr "Úroveň zápisu nastavit na %d\n" -#: relocate.cc:99 +#: warn.cc:89 #, c-format -msgid "Relocation: compile prefix=%s, new prefix=%s" -msgstr "" +msgid "unknown log level `%s', using default (INFO)" +msgstr "Neznámá úroveň zápisu `%s', používá se výchozí (INFO)" -#: relocate.cc:129 +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 #, c-format -msgid "Relocation: framework_prefix=%s" -msgstr "" +msgid "%d expected warning(s) not encountered: " +msgstr "%d očekávané(á) varování nepotkáno: " -#: relocate.cc:169 +#: warn.cc:183 #, c-format -msgid "Relocation: is absolute: argv0=%s" -msgstr "" +msgid "fatal error: %s" +msgstr "Vážná chyba: %s" -#: relocate.cc:176 +#: warn.cc:192 #, c-format -msgid "Relocation: from cwd: argv0=%s" -msgstr "" +msgid "suppressed programming error: %s" +msgstr "Potlačena chyba v programování: %s" -#: relocate.cc:185 +#: warn.cc:197 #, c-format -msgid "" -"Relocation: from PATH=%s\n" -"argv0=%s" -msgstr "" +msgid "programming error: %s" +msgstr "Chyba v programování: %s" -#: relocate.cc:354 -#, fuzzy, c-format -msgid "Relocation file: %s" -msgstr "nelze otevøít soubor: `%s'" +#: warn.cc:198 +msgid "continuing, cross fingers" +msgstr "Pokračuje se, držte palce" -#: relocate.cc:390 +#: warn.cc:207 #, c-format -msgid "Unknown relocation command %s" -msgstr "" - -#: rest-collision.cc:151 -msgid "cannot resolve rest collision: rest direction not set" -msgstr "" +msgid "suppressed error: %s" +msgstr "Potlačena chyba: %s" -#: rest-collision.cc:165 rest-collision.cc:210 -msgid "too many colliding rests" -msgstr "pøíli¹ mnoho kolidujících pomlk" - -#: rest.cc:144 -#, fuzzy, c-format -msgid "rest `%s' not found" -msgstr "pomlka `%s' nebyla nalezena, " - -#: score-engraver.cc:67 -#, fuzzy, c-format -msgid "cannot find `%s'" -msgstr "nelze nalézt `%s'" +#: warn.cc:219 +#, c-format +msgid "suppressed warning: %s" +msgstr "Potlačeno varování: %s" -#: score-engraver.cc:69 -#, fuzzy -msgid "Music font has not been installed properly." -msgstr "Písma nebyla správnì nainstalována. Konèím" +#: getopt-long.cc:153 +#, c-format +msgid "option `%s' requires an argument" +msgstr "Volba `%s' vyžaduje argument" -#: score-engraver.cc:71 -#, fuzzy, c-format -msgid "Search path `%s'" -msgstr "(vyhledávací cesta: `%s')" +#: getopt-long.cc:157 +#, c-format +msgid "option `%s' does not allow an argument" +msgstr "Volba `%s' nepovoluje argument" -#: score-engraver.cc:73 -msgid "Aborting" -msgstr "" +#: getopt-long.cc:161 +#, c-format +msgid "unrecognized option: `%s'" +msgstr "Nerozpoznaná volba: `%s'" -#: score.cc:225 -#, fuzzy -msgid "already have music in score" -msgstr "V partituøe je tøeba hudby" +#: getopt-long.cc:167 +#, c-format +msgid "invalid argument `%s' to option `%s'" +msgstr "Neplatný argument `%s' pro volbu `%s'" -#: score.cc:226 -#, fuzzy -msgid "this is the previous music" -msgstr "Toto je záznam chyb:\n" +#: flag.cc:113 +#, c-format +msgid "flag `%s' not found" +msgstr "Praporek `%s' nebyl nalezen" -#: score.cc:231 -#, fuzzy -msgid "errors found, ignoring music expression" -msgstr "Nalezeny chyby/*, nezpracovávám partituru*/" +#: flag.cc:133 +#, c-format +msgid "flag stroke `%s' not found" +msgstr "Symbol praporku `%s' nebyl nalezen" -#. FIXME: -#: script-engraver.cc:102 -#, fuzzy -msgid "do not know how to interpret articulation: " -msgstr "Nevím, jak interpretovat artikulaèní znaménko `%s'" +#: parse-scm.cc:112 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "GUILE naznačil chybu ve výrazu, který začíná zde" -#: script-engraver.cc:103 -msgid "scheme encoding: " -msgstr "" +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" +msgstr "Vložené soubory nejsou v bezpečném režimu dovoleny" -#: simple-spacer.cc:375 +#: lily-lexer.cc:282 #, c-format -msgid "No spring between column %d and next one" -msgstr "Chybí pru¾ný výplnìk mezi sloupcem %d a následujícím" +msgid "identifier name is a keyword: `%s'" +msgstr "Názvem rozpoznávacího znamení je klíčové slovo: `%s'" -#: slur-engraver.cc:83 tuplet-engraver.cc:75 +#: lily-lexer.cc:303 lily-lexer.cc:316 #, c-format -msgid "direction of %s invalid: %d" -msgstr "" +msgid "%s:EOF" +msgstr "%s:EOF" -#: slur-engraver.cc:157 -msgid "unterminated slur" -msgstr "neukonèená ligatura" +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" +msgstr "Nepodařilo se nalézt žádné zalomení řádku, které by naplnilo podmínky" -#: slur-engraver.cc:166 -#, fuzzy -msgid "cannot end slur" -msgstr "nelze nalézt: `%s'" +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" +msgstr "Pro \\override a \\revert jsou potřeba symbolické argumenty" + +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" +msgstr "Tolik závorek není" + +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" +msgstr "Odporující si události skupin not" + +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "Nelze přidat žádný text k jednotlivým hlavičkám not" + +#: new-fingering-engraver.cc:265 +msgid "no placement found for fingerings" +msgstr "Nenalezeno žádné umístění pro prstoklad" + +#: new-fingering-engraver.cc:266 +msgid "placing below" +msgstr "UmísÅ¥uje se pod" -#: source-file.cc:74 +#: translator-group.cc:188 #, c-format -msgid "expected to read %d characters, got %d" -msgstr "" +msgid "cannot find: `%s'" +msgstr "Nelze nalézt: `%s'" -#: staff-symbol-engraver.cc:62 -msgid "staff-span event has no direction" -msgstr "" +#: glissando-engraver.cc:158 +msgid "unterminated glissando" +msgstr "Neukončené glissando (klouzavě zahrané noty)" -#: stem-engraver.cc:92 -msgid "tremolo duration is too long" -msgstr "délka tremola je pøíli¹ velká" +#: midi-item.cc:89 +#, c-format +msgid "no such MIDI instrument: `%s'" +msgstr "Žádný takový nástroj neexistuje: `%s'" -#. FIXME: -#: stem-engraver.cc:129 -#, fuzzy, c-format -msgid "adding note head to incompatible stem (type = %d)" -msgstr "Pøidávám hlavièku k nekompatibilní no¾ce (typ = %d)" +#: open-type-font.cc:44 +#, c-format +msgid "cannot allocate %lu bytes" +msgstr "Nelze přidělit %lu bajtů" -#: stem-engraver.cc:131 -msgid "maybe input should specify polyphonic voices" -msgstr "" +#: open-type-font.cc:48 +#, c-format +msgid "cannot load font table: %s" +msgstr "Nelze nahrát tabulku písem: %s" -#: stem.cc:105 -#, fuzzy -msgid "weird stem size, check for narrow beams" -msgstr "Podivná velikost no¾ky; zkontrolujte úzké trámce" +#: open-type-font.cc:53 +#, c-format +msgid "FreeType error: %s" +msgstr "Chyba FreeType: %s" -#: stem.cc:641 +#: open-type-font.cc:110 #, c-format -msgid "flag `%s' not found" -msgstr "praporek `%s' nebyl nalezen" +msgid "unsupported font format: %s" +msgstr "Nepodporovaný formát písma: %s" -#: stem.cc:652 +#: open-type-font.cc:112 #, c-format -msgid "flag stroke `%s' not found" -msgstr "symbol praporku `%s' nebyl nalezen" +msgid "error reading font file %s: %s" +msgstr "Chyba při čtení souboru s písmem %s: %s" -#: system.cc:180 +#: open-type-font.cc:187 #, c-format -msgid "Element count %d." -msgstr "Poèet prvkù je %d." +msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgstr "FT_Get_Glyph_Name () chyba Freetype: %s" -#: system.cc:276 -#, fuzzy, c-format -msgid "Grob count %d" -msgstr "Poèet grobù je %d " +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" +msgstr "FT_Get_Glyph_Name () chyba: %s" -#: text-spanner-engraver.cc:61 -msgid "cannot find start of text spanner" -msgstr "nelze nalézt zaèátek textového pøeklenutí" +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" +msgstr "NoteEvent bez výšky tónu" -#: text-spanner-engraver.cc:73 -msgid "already have a text spanner" -msgstr "ji¾ obsahuje textové pøeklenutí" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" +msgstr "Směr nesmí být CENTER v ly:skyline-pair::skyline" -#: text-spanner-engraver.cc:133 -msgid "unterminated text spanner" -msgstr "neukonèené textové pøeklenutí" +#: hyphen-engraver.cc:104 +msgid "removing unterminated hyphen" +msgstr "Odstraňuje se neukončený spojovník" -#: tie-engraver.cc:264 -msgid "lonely tie" -msgstr "osamocená ligatura" +#: hyphen-engraver.cc:118 +msgid "unterminated hyphen; removing" +msgstr "Neukončený spojovník; odstraňuje se" -#. -#. Todo: should make typecheck? -#. -#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. -#. -#: time-signature-engraver.cc:64 -#, c-format -msgid "strange time signature found: %d/%d" -msgstr "" +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" +msgstr "Okraje neodpovídají šířce řádku, nastavují se výchozí hodnoty" -#. If there is no such symbol, we default to the numbered style. -#. (Here really with a warning!) -#: time-signature.cc:83 -#, c-format -msgid "time signature symbol `%s' not found; reverting to numbered style" -msgstr "" -"symbol pro znaèení taktu `%s' nebyl nalezen; mìním na znaèení èíslicemi" +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" +msgstr "Osnovy se kvůli nesprávnému nastavení papíru nalézají mimo stranu, nastavují se výchozí hodnoty" -#: translator-ctors.cc:52 +#: accidental.cc:200 #, c-format -msgid "unknown translator: `%s'" -msgstr "neznámý pøekladaè: `%s':" +msgid "Could not find glyph-name for alteration %s" +msgstr "Nepodařilo se najít název obrázku (glyph-name) pro předznamenání %s" + +#: accidental.cc:215 +msgid "natural alteration glyph not found" +msgstr "Nepodařilo se najít odrážku" -#: translator-group.cc:151 +#: lyric-combine-music-iterator.cc:337 #, c-format -msgid "cannot find: `%s'" -msgstr "nelze nalézt: `%s'" +msgid "cannot find Voice `%s'" +msgstr "Nelze nalézt hlas `%s'" -#: translator.cc:332 +#: context.cc:148 #, c-format -msgid "Two simultaneous %s events, junking this one" -msgstr "" +msgid "cannot find or create new `%s'" +msgstr "Nelze ani najít ani vytvořit nový `%s'" -#: translator.cc:333 +#: context.cc:206 #, c-format -msgid "Previous %s event here" -msgstr "" +msgid "cannot find or create `%s' called `%s'" +msgstr "Nelze ani najít ani vytvořit `%s' nazvaný `%s'" -#: trill-spanner-engraver.cc:68 -#, fuzzy -msgid "cannot find start of trill spanner" -msgstr "nelze nalézt zaèátek textového pøeklenutí" +#: context.cc:399 +#, c-format +msgid "cannot find or create: `%s'" +msgstr "Nelze ani najít ani vytvořit: `%s'" -#: trill-spanner-engraver.cc:80 -#, fuzzy -msgid "already have a trill spanner" -msgstr "ji¾ obsahuje textové pøeklenutí" +#: dispatcher.cc:83 +msgid "Event class should be a symbol" +msgstr "Třídou pro událost by měl být symbol" -#: vaticana-ligature-engraver.cc:388 +#: dispatcher.cc:90 #, c-format -msgid "" -"ignored prefix (es) `%s' of this head according to restrictions of the " -"selected ligature style" -msgstr "" +msgid "Unknown event class %s" +msgstr "Neznámá třída pro událost %s" -#: vaticana-ligature-engraver.cc:714 +#: dispatcher.cc:172 #, c-format -msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" -msgstr "" +msgid "Junking event: %s" +msgstr "Vyhazuje se událost: %s" -#: vaticana-ligature.cc:84 -#, fuzzy -msgid "flexa-height undefined; assuming 0" -msgstr "" -"Mensural_ligature: ¹íøka flexy (flexa-width) není definována pro flexu %d; " -"pøedpokládám 2.0" - -#: vaticana-ligature.cc:89 -#, fuzzy -msgid "ascending vaticana style flexa" -msgstr "vzestupný porrectus ve stylu vaticana " +#: auto-change-iterator.cc:74 change-iterator.cc:72 +#, c-format +msgid "cannot change, already in translator: %s" +msgstr "Nelze změnit, již v překladači: %s" -#: vaticana-ligature.cc:177 -#, fuzzy -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" -msgstr "Mensural_ligature: (join_left == 0)" +#: tie-engraver.cc:117 +msgid "unterminated tie" +msgstr "Neukončená ligatura" -#. fixme: be more verbose. -#: volta-engraver.cc:144 -#, fuzzy -msgid "cannot end volta spanner" -msgstr "nelze nalézt zaèátek textového pøeklenutí" +#: tie-engraver.cc:348 +msgid "lonely tie" +msgstr "Osamocená ligatura" -#: volta-engraver.cc:154 -#, fuzzy -msgid "already have a volta spanner, ending that one prematurely" -msgstr "Ji¾ má repetici. Pøedèasnì ji ukonèuji." +#: dynamic-engraver.cc:193 +msgid "cannot find start of (de)crescendo" +msgstr "Nelze nalézt začátek (de)crescenda" -#: volta-engraver.cc:158 -#, fuzzy -msgid "also already have an ended spanner" -msgstr "ji¾ obsahuje textové pøeklenutí" +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "Již má decrescendo" -#: volta-engraver.cc:159 -#, fuzzy -msgid "giving up" -msgstr "Vzdávám" +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "Již má crescendo" -#: parser.yy:702 -msgid "\\paper cannot be used in \\score, use \\layout instead" -msgstr "" +#: dynamic-engraver.cc:205 +msgid "cresc starts here" +msgstr "Crescendo začíná zde" -#: parser.yy:726 -msgid "need \\paper for paper block" -msgstr "" +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "Neukončené (de)crescendo" -#: parser.yy:1172 -msgid "Grob name should be alphanumeric" -msgstr "" +#: paper-score.cc:122 minimal-page-breaking.cc:40 +msgid "Calculating line breaks..." +msgstr "Počítají se zalomení řádků..." -#: parser.yy:1475 -#, fuzzy -msgid "second argument must be pitch list" -msgstr "Druhý argument musí být symbol" +#: paper-score.cc:134 +#, c-format +msgid "Element count %d (spanners %d) " +msgstr "Počet prvků %d (závorek %d) " -#: parser.yy:1502 parser.yy:1507 parser.yy:1972 -#, fuzzy -msgid "have to be in Lyric mode for lyrics" -msgstr "Pro zápis textu musíte být v módu Lyric" +#: paper-score.cc:138 +msgid "Preprocessing graphical objects..." +msgstr "Předzpracovávají se obrazové prvky..." -#: parser.yy:1604 -#, fuzzy -msgid "expecting string as script definition" -msgstr "Oèekáván øetìzec jako definice skriptu" +#: paper-score.cc:162 optimal-page-breaking.cc:208 +#: page-turn-page-breaking.cc:248 +msgid "Drawing systems..." +msgstr "Kreslí se osnova..." -#: parser.yy:1759 parser.yy:1809 -#, c-format -msgid "not a duration: %d" -msgstr "není délkou: %d" +#: mensural-ligature-engraver.cc:96 +msgid "ligature with less than 2 heads -> skipping" +msgstr "Ligatura s méně než dvěma hlavičkami -> přeskakuje se" -#: parser.yy:1926 -#, fuzzy -msgid "have to be in Note mode for notes" -msgstr "Pro zápis not musíte být v módu Note" +#: mensural-ligature-engraver.cc:123 +msgid "cannot determine pitch of ligature primitive -> skipping" +msgstr "Nelze určit výšku počátku ligatury -> přeskakuje se" -#: parser.yy:1987 -#, fuzzy -msgid "have to be in Chord mode for chords" -msgstr "Pro zápis akordù musíte být v módu Chord" +#: mensural-ligature-engraver.cc:137 +msgid "single note ligature - skipping" +msgstr "Ligatura s jednou notou -> přeskakuje se" -#: lexer.ll:176 -msgid "stray UTF-8 BOM encountered" -msgstr "" +#: mensural-ligature-engraver.cc:148 +msgid "prime interval within ligature -> skipping" +msgstr "Interval ligatury je prima -> přeskakuje se" -#: lexer.ll:180 -msgid "Skipping UTF-8 BOM" -msgstr "" +#: mensural-ligature-engraver.cc:159 +msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" +msgstr "Menzurální ligatura: doba trvání není ani jedna z Mx, L, B, S -> přeskakuje se" -#: lexer.ll:235 -#, fuzzy, c-format -msgid "Renaming input to: `%s'" -msgstr "Matoucí po¾adavek: `%s'" +#: mensural-ligature-engraver.cc:202 +msgid "semibrevis must be followed by another one -> skipping" +msgstr "Semibrevis musí být následován dalším -> přeskakuje se" -#: lexer.ll:252 -msgid "quoted string expected after \\version" +#: mensural-ligature-engraver.cc:212 +msgid "" +"semibreves can only appear at the beginning of a ligature,\n" +"and there may be only zero or two of them" msgstr "" +"Semibrevis se může objevit jen na začátku ligatury,\n" +"a mohou být pouze nula nebo dvě z nich" -#: lexer.ll:256 -msgid "quoted string expected after \\sourcefilename" +#: mensural-ligature-engraver.cc:232 +msgid "" +"invalid ligatura ending:\n" +"when the last note is a descending brevis,\n" +"the penultimate note must be another one,\n" +"or the ligatura must be LB or SSB" msgstr "" +"Neplatné zakončení ligatury:\n" +"Když je poslední nota klesající brevis (dvoucelá),\n" +"musí být předposlední nota další,\n" +"nebo musí být ligatura LB nebo SSB" -#: lexer.ll:260 -msgid "integer expected after \\sourcefileline" -msgstr "" +#: mensural-ligature-engraver.cc:387 +msgid "unexpected case fall-through" +msgstr "Neznámý neúspěch případu" -#: lexer.ll:273 -msgid "EOF found inside a comment" -msgstr "uvnitø poznámky nalezen konec souboru" +#: piano-pedal-engraver.cc:279 +#, c-format +msgid "expect 3 strings for piano pedals, found: %ld" +msgstr "Očekávány 3 textové řetězce pro pedál piana, nalezeny: %ld" -#: lexer.ll:288 -#, fuzzy -msgid "\\maininput not allowed outside init files" -msgstr "\\maininput není povolen mimo inicializaèní soubory" +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 +#: piano-pedal-performer.cc:104 +#, c-format +msgid "cannot find start of piano pedal: `%s'" +msgstr "Nelze nalézt začátek pedálu piana: `%s'" -#: lexer.ll:312 +#: piano-pedal-engraver.cc:340 #, c-format -msgid "wrong or undefined identifier: `%s'" -msgstr "¹patný nebo nedefinovaný identifikátor: `%s'" +msgid "cannot find start of piano pedal bracket: `%s'" +msgstr "Nelze nalézt začátek závorek pedálu piana: `%s'" -#. backup rule -#: lexer.ll:321 -msgid "end quote missing" -msgstr "" +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "Neznámá poloha" -#: lexer.ll:466 -#, fuzzy -msgid "Brace found at end of lyric. Did you forget a space?" -msgstr "Na konci textu byla nalezena závorka. Zapomnìl jste na mezeru?" +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" +msgstr "Podivná velikost nožky, ověřte úzké trámce" -#: lexer.ll:559 -#, fuzzy -msgid "Brace found at end of markup. Did you forget a space?" -msgstr "Na konci textu byla nalezena závorka. Zapomnìl jste na mezeru?" +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " +msgstr "PřezkouÅ¡ení oktávy selhalo, vráceno: " -#: lexer.ll:659 +#: translator-ctors.cc:65 #, c-format -msgid "invalid character: `%c'" -msgstr "neplatný znak: `%c'" +msgid "unknown translator: `%s'" +msgstr "Neznámý překladač: `%s'" -#: lexer.ll:774 lexer.ll:775 -#, c-format -msgid "unknown escaped string: `\\%s'" -msgstr "neznámá escape sekvence: `\\%s'" +#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 +msgid "cannot find start of ligature" +msgstr "Nelze nalézt začátek ligatury" -#: lexer.ll:880 lexer.ll:881 -#, c-format -msgid "file too old: %s (oldest supported: %s)" -msgstr "" +#: ligature-engraver.cc:109 +msgid "no right bound" +msgstr "Žádné ohraničení vpravo" -#: lexer.ll:881 lexer.ll:882 -#, fuzzy -msgid "consider updating the input with the convert-ly script" -msgstr "Zva¾te konverzi zdrojového textu pomocí skriptu convert-ly" +#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85 +msgid "already have a ligature" +msgstr "Ligatura již je" -#: lexer.ll:887 lexer.ll:888 -#, c-format -msgid "program too old: %s (file requires: %s)" -msgstr "" +#: ligature-engraver.cc:140 +msgid "no left bound" +msgstr "Žádné ohraničení vlevo" -#: backend-library.scm:19 lily.scm:599 ps-to-png.scm:82 -#, fuzzy, scheme-format -msgid "Invoking `~a'..." -msgstr "Vyvolávám `%s'" +#: ligature-engraver.cc:184 +msgid "unterminated ligature" +msgstr "Neukončená ligatura" -#: backend-library.scm:24 -#, scheme-format -msgid "`~a' failed (~a)" -msgstr "" +#: ligature-engraver.cc:211 +msgid "ignoring rest: ligature may not contain rest" +msgstr "Přehlíží se pomlka; ligatura by neměla obsahovat pomlku" -#: backend-library.scm:95 framework-tex.scm:343 framework-tex.scm:368 -#, fuzzy, scheme-format -msgid "Converting to `~a'..." -msgstr "Zapisuji `%s'..." +#: ligature-engraver.cc:212 +msgid "ligature was started here" +msgstr "Ligatura byla začata zde" -#: backend-library.scm:108 -#, fuzzy, scheme-format -msgid "Converting to ~a..." -msgstr "Zapisuji `%s'..." +#: tuplet-engraver.cc:110 +msgid "No tuplet to end" +msgstr "Žádná rytmická notová skupina k ukončení" -#: backend-library.scm:145 -#, scheme-format -msgid "Writing header field `~a' to `~a'..." -msgstr "" +#: ttf.cc:480 ttf.cc:528 +#, c-format +msgid "font index %d too large for font `%s', using index 0" +msgstr "Písmový index %d příliÅ¡ velký pro písmo `%s', používá se index 0" -#: define-context-properties.scm:20 define-grob-properties.scm:10 -#: define-music-properties.scm:10 -#, scheme-format -msgid "symbol ~S redefined" -msgstr "" +#: ttf.cc:512 ttf.cc:562 +msgid "font index must be non-negative, using index 0" +msgstr "Písmový index musí být ne-zaporný, používá se index 0" -#: define-event-classes.scm:119 -#, scheme-format -msgid "event class ~A seems to be unused" -msgstr "" +#: multi-measure-rest.cc:140 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." +msgstr "usable-duration-logs musí být neprázdný seznam. Stahuje se na celé pomlky" -#. should be programming-error -#: define-event-classes.scm:125 -#, scheme-format -msgid "translator listens to nonexisting event class ~A" -msgstr "" +#: partial-iterator.cc:45 +msgid "trying to use \\partial after the start of a piece" +msgstr "Pokus o použití \\partial po začátku kusu" -#: define-markup-commands.scm:255 -msgid "no systems found in \\score markup, does it have a \\layout block?" -msgstr "" +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." +msgstr "Počítají se zalomení stránek..." -#: define-markup-commands.scm:1297 -#, fuzzy, scheme-format -msgid "not a valid duration string: ~a" -msgstr "není délkou: %d" +#: vaticana-ligature-engraver.cc:400 +#, c-format +msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" +msgstr "Přehlíží se předpona(y) `%s' této hlavičky podle omezení zvoleného stylu ligatury" -#: define-music-types.scm:751 -#, scheme-format -msgid "symbol expected: ~S" -msgstr "" +#: vaticana-ligature-engraver.cc:736 +#, c-format +msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" +msgstr "Vaticana_ligature_engraver: nastavení `spacing-increment = %f': ptr =%ul" -#: define-music-types.scm:754 -#, fuzzy, scheme-format -msgid "cannot find music object: ~S" -msgstr "nelze nalézt kontext `%s'" +#: paper-book.cc:214 +#, c-format +msgid "program option -dprint-pages not supported by backend `%s'" +msgstr "Programová volba -dprint-pages nepodporována jádrem '%s'" -#: define-music-types.scm:774 -#, fuzzy, scheme-format -msgid "unknown repeat type `~S'" -msgstr "neznámý pøekladaè: `%s':" +#: paper-book.cc:233 +#, c-format +msgid "program option -dpreview not supported by backend `%s'" +msgstr "Programová volba -dpreview nepodporována jádrem '%s'" -#: define-music-types.scm:775 -msgid "See music-types.scm for supported repeats" -msgstr "" +#: episema-engraver.cc:75 +msgid "already have an episema" +msgstr "Má již episema" -#: document-backend.scm:91 -#, scheme-format -msgid "pair expected in doc ~s" -msgstr "" +#: episema-engraver.cc:88 +msgid "cannot find start of episema" +msgstr "Nelze nalézt začátek episema" -#: document-backend.scm:135 -#, fuzzy, scheme-format -msgid "cannot find interface for property: ~S" -msgstr "nelze nalézt znak èíslo: %d" +#: episema-engraver.cc:137 +msgid "unterminated episema" +msgstr "Neukončená episema" -#: document-backend.scm:145 -#, fuzzy, scheme-format -msgid "unknown Grob interface: ~S" -msgstr "neznámý pøekladaè: `%s':" +#: score-engraver.cc:78 +#, c-format +msgid "cannot find `%s'" +msgstr "Nelze nalézt `%s'" -#: documentation-lib.scm:45 -#, fuzzy, scheme-format -msgid "Processing ~S..." -msgstr "Zpracovávám `%s'..." +#: score-engraver.cc:80 +msgid "Music font has not been installed properly." +msgstr "Hudební písma nebyla správně nainstalována řádně" -#: documentation-lib.scm:150 -#, fuzzy, scheme-format -msgid "Writing ~S..." -msgstr "Zapisuji `%s'..." +#: score-engraver.cc:82 +#, c-format +msgid "Search path `%s'" +msgstr "Vyhledávací cesta `%s'" -#: documentation-lib.scm:172 -#, fuzzy, scheme-format -msgid "cannot find description for property ~S (~S)" -msgstr "nelze nalézt znak èíslo: %d" +#: score-engraver.cc:84 +msgid "Aborting" +msgstr "PřeruÅ¡uje se" -#: framework-eps.scm:91 framework-eps.scm:92 -#, fuzzy, scheme-format -msgid "Writing ~a..." -msgstr "Zapisuji `%s'..." +#: performance.cc:54 +msgid "Track..." +msgstr "Stopa... " -#: framework-ps.scm:279 -#, scheme-format -msgid "cannot embed ~S=~S" -msgstr "" +#: performance.cc:82 +#, c-format +msgid "MIDI output to `%s'..." +msgstr "MIDI výstup do `%s'..." -#: framework-ps.scm:332 -#, scheme-format -msgid "cannot extract file matching ~a from ~a" -msgstr "" +#: note-collision.cc:506 +msgid "ignoring too many clashing note columns" +msgstr "Přehlíží se příliÅ¡ mnoho překrývajících se notových sloupců" -#: framework-ps.scm:349 -#, scheme-format -msgid "do not know how to embed ~S=~S" -msgstr "" +#. fixme: be more verbose. +#: volta-engraver.cc:111 +msgid "cannot end volta spanner" +msgstr "Nelze ukončit závorku volty" -#: framework-ps.scm:380 -#, fuzzy, scheme-format -msgid "do not know how to embed font ~s ~s ~s" -msgstr "Nevím, jak interpretovat artikulaèní znaménko `%s'" +#: volta-engraver.cc:121 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "Již má závorku volty, ukončuje se předčasně" -#: framework-ps.scm:729 -#, scheme-format -msgid "cannot convert to ~S" -msgstr "" +#: volta-engraver.cc:125 +msgid "also already have an ended spanner" +msgstr "Také již má ukončenou textovou závorku" -#: framework-ps.scm:748 framework-ps.scm:751 -#, scheme-format -msgid "cannot generate ~S using the postscript back-end" -msgstr "" +#: volta-engraver.cc:126 +msgid "giving up" +msgstr "Vzdává se" -#: framework-ps.scm:758 -msgid "" -"\n" -"The PostScript backend does not support the 'classic'\n" -"framework. Use the EPS backend instead,\n" -"\n" -" lilypond -b eps \n" -"\n" -"or remove the lilypond-book specific settings from the input.\n" -msgstr "" +#: page-layout-problem.cc:721 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" +msgstr "Noty se nevejdou na stranu: bylo požadováno ragged-spacing, ale strana byla zkomprimována" -#: framework-tex.scm:360 -#, fuzzy, scheme-format -msgid "TeX file name must not contain whitespace: `~a'" -msgstr "jméno souboru by nemìlo obsahovat mezery: `%s'" +#: page-layout-problem.cc:724 +#, c-format +msgid "cannot fit music on page: overflow is %f" +msgstr "Noty se nevejdou na stranu: přesah je %f" -#: layout-beam.scm:29 -#, scheme-format -msgid "Error in beam quanting. Expected (~S,~S) found ~S." -msgstr "" +#: page-layout-problem.cc:726 +msgid "compressing music to fit" +msgstr "Noty se komprimují, aby se veÅ¡ly" -#: layout-beam.scm:46 -#, scheme-format -msgid "Error in beam quanting. Expected ~S 0, found ~S." -msgstr "" +#: page-layout-problem.cc:1188 +msgid "staff-affinities should only decrease" +msgstr "staff-affinities se mají jen odebrat" -#: layout-page-layout.scm:357 -#, fuzzy -msgid "Calculating page breaks..." -msgstr "Poèítám pozice sloupcù..." +#: apply-context-iterator.cc:42 +msgid "\\applycontext argument is not a procedure" +msgstr "Argument \\applycontext není postupem" -#: lily-library.scm:593 -#, fuzzy, scheme-format -msgid "unknown unit: ~S" -msgstr "neznámý pøekladaè: `%s':" +#. FIXME: constant error message. +#: mark-engraver.cc:157 +msgid "rehearsalMark must have integer value" +msgstr "rehearsalMark musí mít celočíselnou hodnotu" -#: lily-library.scm:626 -#, scheme-format -msgid "no \\version statement found, please add~afor future compatibility" +#: mark-engraver.cc:163 +msgid "mark label must be a markup object" +msgstr "Popis značky musí být předmětem pro textový popis" + +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" +msgstr "Doba trvání tremola je příliÅ¡ dlouhá" + +#: stem-engraver.cc:162 +#, c-format +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "Přidává se hlavička k s ní neslučitelné nožce (typ = %d/%d)" + +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" +msgstr "Snad by měl vstup vytvořit více hlasů" + +#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108 +#, c-format +msgid "cannot find file: `%s'" +msgstr "Nelze nalézt soubor: `%s'" + +#: includable-lexer.cc:73 lily-parser-scheme.cc:100 +#, c-format +msgid "(search path: `%s')" +msgstr "(vyhledávací cesta: `%s')" + +#: relocate.cc:52 +#, c-format +msgid "Setting %s to %s" +msgstr "%s nastaveno na %s" + +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, c-format +msgid "no such file: %s for %s" +msgstr "Žádný takový soubor: %s pro %s" + +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 +#, c-format +msgid "no such directory: %s for %s" +msgstr "Žádný takový adresář: %s pro %s" + +#: relocate.cc:93 +#, c-format +msgid "%s=%s (prepend)\n" +msgstr "%s=%s (uvést na začátku)\n" + +#: relocate.cc:124 +#, c-format +msgid "not relocating, no %s/ or current/ found under %s" +msgstr "Žádné přemístění, žádný %s/ nebo current/ nebyl nalezen pod %s" + +#: relocate.cc:134 +#, c-format +msgid "Relocation: compile datadir=%s, new datadir=%s" +msgstr "Přemístění: adresář s daty k sestavení=%s, nový adresář s daty=%s" + +#: relocate.cc:146 +#, c-format +msgid "Relocation: framework_prefix=%s" +msgstr "Přemístění: framework_prefix=%s" + +#: relocate.cc:186 +#, c-format +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "Přemístění: je absolutní: argv0=%s\n" + +#: relocate.cc:192 +#, c-format +msgid "Relocation: from cwd: argv0=%s\n" +msgstr "Přemístění: z cwd: argv0=%s\n" + +#: relocate.cc:208 +#, c-format +msgid "" +"Relocation: from PATH=%s\n" +"argv0=%s" msgstr "" +"Přemístění: z PATH=%s\n" +"argv0=%s" -#: lily-library.scm:633 -msgid "old relative compatibility not used" +#: relocate.cc:235 +msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" +msgstr "LILYPONDPREFIX je zastaralý, použít LILYPOND_DATADIR" + +#: relocate.cc:360 +#, c-format +msgid "Relocation file: %s" +msgstr "Soubor k přemístění: %s" + +#: relocate.cc:364 source-file.cc:65 +#, c-format +msgid "cannot open file: `%s'" +msgstr "Nelze otevřít soubor: `%s'" + +#: relocate.cc:394 +#, c-format +msgid "Unknown relocation command %s" +msgstr "Neznámý příkaz pro přemístění %s" + +#: note-column.cc:135 +msgid "cannot have note heads and rests together on a stem" +msgstr "Hlavičky not a pomlk se nemohou vyskytovat společně na jedné nožce" + +#: beam.cc:181 +msgid "removing beam with no stems" +msgstr "Odstraňuje se rámec bez nožek" + +#: staff-performer.cc:257 +msgid "MIDI channel wrapped around" +msgstr "Kanál MIDI skočil zpět" + +#: staff-performer.cc:258 +msgid "remapping modulo 16" +msgstr "Modulo 16 se nově navrhuje" + +#: dots.cc:48 +#, c-format +msgid "dot `%s' not found" +msgstr "Tečka `%s' nebyla nalezena, " + +#: font-config.cc:38 +msgid "Initializing FontConfig..." +msgstr "SpouÅ¡tí se nastavení písem (FontConfig)..." + +#: font-config.cc:53 font-config-scheme.cc:151 +#, c-format +msgid "failed adding font directory: %s" +msgstr "Adresář s písmy se nepodařilo přidat: %s" + +#: font-config.cc:55 font-config-scheme.cc:153 +#, c-format +msgid "Adding font directory: %s" +msgstr "Přidává se adresář s písmy: %s" + +#: font-config.cc:58 +msgid "Building font database..." +msgstr "Sestavuje se databáze písem..." + +#: change-iterator.cc:34 +#, c-format +msgid "cannot change `%s' to `%s'" +msgstr "`%s' nelze změnit na `%s'" + +#. FIXME: constant error message. +#: change-iterator.cc:93 +msgid "cannot find context to switch to" +msgstr "Nepodařilo se nalézt žádnou souvislost k přepnutí" + +#. We could change the current translator's id, but that would make +#. errors hard to catch. +#. +#. last->translator_id_string () = get_change +#. ()->change_to_id_string (); +#: change-iterator.cc:102 +#, c-format +msgid "not changing to same context type: %s" +msgstr "Nepřepíná se na tentýž typ souvislosti: %s" + +#. FIXME: uncomprehensable message +#: change-iterator.cc:106 +msgid "none of these in my family" +msgstr "Žádný z těchto se nenachází v mé rodině" + +#: slur.cc:438 +#, c-format +msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgstr "Kreslený předmět (grob) pro legatový oblouček se přehlíží: %s. avoid-slur nenastaven?" + +#: source-file.cc:85 +#, c-format +msgid "expected to read %d characters, got %d" +msgstr "Očekáváno %d znaků, obdrženo %d" + +#. find out the ideal number of pages +#: optimal-page-breaking.cc:62 +msgid "Finding the ideal number of pages..." +msgstr "Zjišťuje se dokonalý počet stran..." + +#: optimal-page-breaking.cc:85 +msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page" +msgstr "Nepodařilo se použít současně systems-per-page a page-count, přehlíží se systems-per-page" + +#: optimal-page-breaking.cc:105 +msgid "Fitting music on 1 page..." +msgstr "Hudba se umísÅ¥uje na jednu stranu..." + +#: optimal-page-breaking.cc:107 +#, c-format +msgid "Fitting music on %d pages..." +msgstr "Hudba se umísÅ¥uje na %d stran..." + +#: optimal-page-breaking.cc:109 +#, c-format +msgid "Fitting music on %d or %d pages..." +msgstr "Hudba se umísÅ¥uje na %d nebo %d stran..." + +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 +#, c-format +msgid "trying %d systems" +msgstr "Zkouší se %d osnovy" + +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 +#, c-format +msgid "best score for this sys-count: %f" +msgstr "Nejlepší notový zápis pro tento sys-count: %f" + +#: new-dynamic-engraver.cc:168 +#, c-format +msgid "" +"unknown crescendo style: %s\n" +"defaulting to hairpin." msgstr "" +"Neznámý styl crescenda: %s\n" +"nastavuje se jako ostré závorky." -#: lily.scm:144 -#, fuzzy, scheme-format -msgid "cannot find: ~A" -msgstr "nelze nalézt: `%s'" +#: new-dynamic-engraver.cc:233 +#, c-format +msgid "unterminated %s" +msgstr "Neukončený: %s" -#: lily.scm:209 -#, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" +#: hairpin.cc:263 +msgid "decrescendo too small" +msgstr "Decrescendo je příliÅ¡ malé" + +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "Neukončený dolní/horní dotah " + +#: main.cc:101 +#, c-format +msgid "" +"This program is free software. It is covered by the GNU General Public\n" +"License and you are welcome to change it and/or distribute copies of it\n" +"under certain conditions. Invoke as `%s --warranty' for more\n" +"information.\n" msgstr "" +"Toto je svobodný software. Je chráněn GNU General Public License \n" +"a vy jste vítáni k jeho změně a (nebo) šíření jeho kopií za dodržení\n" +"určitých podmínek. Pro více informací spusÅ¥te program takto: `%s --warranty'.\n" -#: lily.scm:525 lily.scm:589 -#, scheme-format -msgid "failed files: ~S" +#: main.cc:107 +msgid "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" msgstr "" +" Tento program je svobodný software; můžete jej distribuovat a (nebo)\n" +"modifikovat za dodržení podmínek daných GNU General Public License verze 2\n" +"jak je zveřejněna nadací Free Software Foundation.\n" +" Tento program je distribuován v naději, že bude užitečný,\n" +"nicméně BEZ JAKÉKOLIV ZÁRUKY nebo VHODNOSTI PRO URČITÉ POUŽITÍ.Ohledně dalších detailů čtěte GNU General Public License\n" +"\n" +" S tímto programem byste měli obdržet kopii (viz soubor COPYING)\n" +"GNU General Public License. Pokud se tak nestalo, napiÅ¡te Free Software\n" +"Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" -#: lily.scm:579 -#, fuzzy, scheme-format -msgid "Redirecting output to ~a..." -msgstr "závislosti se zapisují do `%s'..." +#: main.cc:141 +msgid "SYM[=VAL]" +msgstr "SYM[=HODN]" -#: ly-syntax-constructors.scm:40 -msgid "Music head function must return Music object" +#: main.cc:142 +msgid "" +"set Scheme option SYM to VAL (default: #t).\n" +"Use -dhelp for help." msgstr "" +"Nastavit volbu Scheme SYM na HODN (výchozí: #t).\n" +"Použít -dhelp pro nápovědu." -#: ly-syntax-constructors.scm:136 -#, scheme-format -msgid "Invalid property operation ~a" +#: main.cc:146 +msgid "EXPR" +msgstr "VÝRAZ" + +#: main.cc:146 +msgid "evaluate scheme code" +msgstr "Vyhodnotit kód Scheme" + +#. Bug in option parser: --output =foe is taken as an abbreviation +#. for --output-format. +#: main.cc:149 +msgid "FORMATs" +msgstr "FORMÁTY" + +#: main.cc:149 +msgid "dump FORMAT,... Also as separate options:" +msgstr "Vypsat FORMÁT,... také jako oddělené volby:" + +#: main.cc:150 +msgid "generate PDF (default)" +msgstr "Vytvořit PDF (výchozí)" + +#: main.cc:151 +msgid "generate PNG" +msgstr "Vytvořit obrázek PNG" + +#: main.cc:152 +msgid "generate PostScript" +msgstr "Vytvořit PostScriptový výstup" + +#: main.cc:155 +msgid "FIELD" +msgstr "POLE" + +#: main.cc:155 +msgid "" +"dump header field FIELD to file\n" +"named BASENAME.FIELD" msgstr "" +"Vypsat pole hlavičky POLE do souboru\n" +"s názvem BASENAME.POLE" -#: markup.scm:123 -#, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +#: main.cc:158 +msgid "add DIR to search path" +msgstr "Přidat ADRESÁŘ do vyhledávací cesty" + +#: main.cc:159 +msgid "use FILE as init file" +msgstr "Použít SOUBOR jako spouÅ¡těcí soubor" + +#: main.cc:162 +msgid "USER, GROUP, JAIL, DIR" +msgstr "UŽIVATEL, SKUPINA, VĚZENÍ, ADRESÁŘ" + +#: main.cc:162 +msgid "" +"chroot to JAIL, become USER:GROUP\n" +"and cd into DIR" msgstr "" +"chroot do VĚZENÍ, stát se UŽIVATEL:SKUPINA\n" +"a cd do ADRESÁŘe" -#: markup.scm:129 -#, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" +"Vytisknout zprávy se zápisy podle ÚROVNĚ ZÁPISU ( Možnými hodnotami jsou:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default), a DEBUG." + +#: main.cc:171 +msgid "write output to FILE (suffix will be added)" +msgstr "Zapsat výstup do SOUBORu (bude přidána přípona)" + +#: main.cc:172 +msgid "relocate using directory of lilypond program" +msgstr "Přemístit pomocí adresáře programu lilypond" + +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "Žádný postup, pouze chybová hlášení (totéž, co loglevel=ERROR)" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "Být podrobný (totéž, co loglevel=DEBUG)" + +#. Do not update the copyright years here, run `make grand-replace' +#: main.cc:242 +#, c-format +msgid "" +"Copyright (c) %s by\n" +"%s and others." msgstr "" +"Autorské právo (c) %s\n" +"%s a další" + +#. No version number or newline here. It confuses help2man. +#: main.cc:269 +#, c-format +msgid "Usage: %s [OPTION]... FILE..." +msgstr "Použití: %s [VOLBA]... SOUBOR..." + +#: main.cc:271 +msgid "Typeset music and/or produce MIDI from FILE." +msgstr "Sazba hudby a/nebo vytváření MIDI ze SOUBORu." + +#: main.cc:273 +msgid "LilyPond produces beautiful music notation." +msgstr "LilyPond vytváří překrásný notový zápis." + +#: main.cc:275 +#, c-format +msgid "For more information, see %s" +msgstr "Další údaje hledejte %s" + +#: main.cc:277 +msgid "Options:" +msgstr "Volby:" + +#: main.cc:331 +#, c-format +msgid "expected %d arguments with jail, found: %u" +msgstr "Očekáváno %d argumentů s vězením, nalezeno: %u" + +#: main.cc:345 +#, c-format +msgid "no such user: %s" +msgstr "Žádný takový uživatel: %s" + +#: main.cc:347 +#, c-format +msgid "cannot get user id from user name: %s: %s" +msgstr "Z uživatelského jména nelze získat uživatelovo id: %s: %s" + +#: main.cc:362 +#, c-format +msgid "no such group: %s" +msgstr "Žádná taková skupina: %s" + +#: main.cc:364 +#, c-format +msgid "cannot get group id from group name: %s: %s" +msgstr "Z názvu skupiny nelze získat id skupiny: %s: %s" + +#: main.cc:372 +#, c-format +msgid "cannot chroot to: %s: %s" +msgstr "Nelze provést chroot do: %s: %s" + +#: main.cc:379 +#, c-format +msgid "cannot change group id to: %d: %s" +msgstr "Nelze změnit id skupiny na: %d: %s" + +#: main.cc:385 +#, c-format +msgid "cannot change user id to: %d: %s" +msgstr "Nelze změnit uživatelovo id na: %d: %s" + +#: main.cc:391 +#, c-format +msgid "cannot change working directory to: %s: %s" +msgstr "Nelze změnit pracovní adresář na: %s: %s" + +#: main.cc:639 +#, c-format +msgid "exception caught: %s" +msgstr "Zachycena výjimka: %s" + +#: page-turn-page-breaking.cc:168 +#, c-format +msgid "page-turn-page-breaking: breaking from %d to %d" +msgstr "Změna stran-zalomení-stran: zalomení od %d do %d" + +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +msgstr "Nelze najít první změnu strany na jednoduchou stranu. Zvažte nastavení čísla první strany na liché číslo." + +#: page-turn-page-breaking.cc:230 +#, c-format +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "Počítají se zalomení strany a řádků (%d možných zalomení stran)..." + +#: page-turn-page-breaking.cc:300 +#, c-format +msgid "break starting at page %d" +msgstr "Zalomení začíná na straně %d" + +#: page-turn-page-breaking.cc:301 +#, c-format +msgid "\tdemerits: %f" +msgstr "\tnedostatky: %f" + +#: page-turn-page-breaking.cc:302 +#, c-format +msgid "\tsystem count: %d" +msgstr "\tpočet osnov: %d" + +#: page-turn-page-breaking.cc:303 +#, c-format +msgid "\tpage count: %d" +msgstr "\tpočet stran: %d" + +#: page-turn-page-breaking.cc:304 +#, c-format +msgid "\tprevious break: %d" +msgstr "\tpředchozí zalomení: %d" + +#: key-signature-interface.cc:77 +#, c-format +msgid "No glyph found for alteration: %s" +msgstr "Pro předznamenání nenalezen žádný obrázek: %s" + +#: key-signature-interface.cc:87 +msgid "alteration not found" +msgstr "Předznamenání nebylo nalezeno" + +#: music.cc:150 +#, c-format +msgid "octave check failed; expected \"%s\", found: \"%s\"" +msgstr "PřezkouÅ¡ení oktávy selhalo; očekáváno \"%s\", nalezeno: \"%s\"" + +#: music.cc:219 +msgid "(normalized pitch)" +msgstr "(normalizovaná výška tónu)" + +#: music.cc:223 +#, c-format +msgid "Transposing %s by %s makes alteration larger than double" +msgstr "Převedení %s o %s vytváří více než jedno dvojité předznamenání" + +#: vaticana-ligature.cc:95 +msgid "flexa-height undefined; assuming 0" +msgstr "Flexa-výška nestanovena; předpokládá se 0" + +#: vaticana-ligature.cc:100 +msgid "ascending vaticana style flexa" +msgstr "Vzestupný flexa ve stylu vaticana" + +#: translator.cc:356 +#, c-format +msgid "Two simultaneous %s events, junking this one" +msgstr "Dvě souběžné %s události, tato se vyhazuje" + +#: translator.cc:357 +#, c-format +msgid "Previous %s event here" +msgstr "Předchozí %s událost zde" + +#: lily-guile.cc:93 +#, c-format +msgid "(load path: `%s')" +msgstr "(nahrávací cesta: `%s')" + +#: lily-guile.cc:416 +#, c-format +msgid "cannot find property type-check for `%s' (%s)." +msgstr "Nelze nalézt ověření typu vlastnosti pro `%s' (%s)." + +#: lily-guile.cc:419 +msgid "perhaps a typing error?" +msgstr "Možná se stal překlep?" + +#: lily-guile.cc:426 +msgid "doing assignment anyway" +msgstr "Přesto se provede přiřazení" + +#: lily-guile.cc:438 +#, c-format +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "Ověření typu `%s' selhalo; hodnota `%s' musí být typu `%s'" + +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" +msgstr "Nelze nalézt začátek textové závorky" + +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" +msgstr "Již obsahuje textovou závorku" + +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" +msgstr "Neukončená textová závorka" + +#: clef.cc:65 +#, c-format +msgid "clef `%s' not found" +msgstr "Klíč `%s' nebyl nalezen" + +#: beam-engraver.cc:147 +msgid "already have a beam" +msgstr "Trámec již existuje" + +#: beam-engraver.cc:230 +msgid "unterminated beam" +msgstr "Neukončený trámec" + +#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149 +msgid "stem must have Rhythmic structure" +msgstr "Nožka musí mít rytmickou skladbu" + +#: beam-engraver.cc:277 +msgid "stem does not fit in beam" +msgstr "Nožka se nevejde pod trámec" + +#: beam-engraver.cc:278 +msgid "beam was started here" +msgstr "Trámec byl začat zde" + +#. +#. Todo: should make typecheck? +#. +#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. +#. +#: time-signature-engraver.cc:75 +#, c-format +msgid "strange time signature found: %d/%d" +msgstr "Nalezeno zřídkavé taktové označení: %d/%d" + +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "Vynucené zalomení bylo zruÅ¡eno jinou událostí, má se použít ověření taktů?" + +#: lily-parser-scheme.cc:80 +#, c-format +msgid "Changing working directory to: `%s'" +msgstr "Pracovní adresář se mění na: `%s'" + +#: lily-parser-scheme.cc:84 +#, c-format +msgid "unable to change directory to: `%s'" +msgstr "Nelze změnit adresář na: `%s'" + +#: lily-parser-scheme.cc:99 +#, c-format +msgid "cannot find init file: `%s'" +msgstr "Nelze nalézt spouÅ¡těcí soubor (init): `%s'" + +#: lily-parser-scheme.cc:117 +#, c-format +msgid "Processing `%s'" +msgstr "Zpracovává se `%s'" + +#: lily-parser-scheme.cc:208 +msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parser-parse-string je platný jen s novým syntaktickým analyzátorem. Místo něj použijte ly:parser-include-string." + +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parser-string-expression je platný jen s novým syntaktickým analyzátorem. Místo něj použijte ly:parser-include-string." + +#: font-config-scheme.cc:167 +#, c-format +msgid "failed adding font file: %s" +msgstr "Soubor s písmem se nepodařilo přidat: %s" + +#: font-config-scheme.cc:169 +#, c-format +msgid "Adding font file: %s" +msgstr "Přidává se soubor s písmem: %s" + +#: custos.cc:88 +#, c-format +msgid "custos `%s' not found" +msgstr "Strážce (hlídač, kustod) `%s' nebyl nalezen" + +#: accidental-engraver.cc:179 +#, c-format +msgid "accidental typesetting list must begin with context-name: %s" +msgstr "Seznam se sazbou posuvek musí začínat názvem souvislosti (context-name): %s" + +#: accidental-engraver.cc:209 +#, c-format +msgid "procedure or context-name expected for accidental rule, found %s" +msgstr "Očekáván postup nebo název souvislosti (context-name) pro pravidlo pro posuvky, nalezen %s" + +#: rest-collision.cc:146 +msgid "cannot resolve rest collision: rest direction not set" +msgstr "Nelze najít řeÅ¡ení pro střet pomlk: směr pomlk nenastaven" + +#: rest-collision.cc:160 rest-collision.cc:276 +msgid "too many colliding rests" +msgstr "PříliÅ¡ mnoho střetávajících se pomlk" + +#: pango-font.cc:205 +#, c-format +msgid "" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" +msgstr "" +"Obrázek nemá žádné jméno, ale písmo podporuje pojmenovávání obrázků.\n" +"Přeskakuje se obrázek U+%0X, soubor %s" + +#: pango-font.cc:242 +#, c-format +msgid "no PostScript font name for font `%s'" +msgstr "Žádný název pro PostScriptové písmo pro písmo `%s'" + +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "Písmo FreeType nemá žádný název pro PostScriptové písmo" + +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +msgstr "Slabika textu nemá žádnou notu. Použít \\lyricsto nebo associatedVoice." + +#: page-breaking.cc:277 +msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" +msgstr "Přehlíží se min-systems-per-page a max-systems-per-page, protože byl stanoven systems-per-page" + +#: page-breaking.cc:282 +msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" +msgstr "min-systems-per-page je větší než max-systems-per-page, přehlíží se obě hodnoty" + +#: paper-outputter-scheme.cc:41 +#, c-format +msgid "Layout output to `%s'..." +msgstr "Výstup rozvržení do `%s'..." + +#: gregorian-ligature-engraver.cc:70 +#, c-format +msgid "\\%s ignored" +msgstr "\\%s přehlíženo" + +#: gregorian-ligature-engraver.cc:75 +#, c-format +msgid "implied \\%s added" +msgstr "Nepřímo vyjádřený \\%s přidán" + +#. ligature may not start with 2nd head of pes or flexa +#: gregorian-ligature-engraver.cc:224 +msgid "cannot apply `\\~' on first head of ligature" +msgstr "`\\~' nelze použít na první notu ligatury" + +#. (pitch == prev_pitch) +#: gregorian-ligature-engraver.cc:236 +msgid "cannot apply `\\~' on heads with identical pitch" +msgstr "`\\~' nelze použít na noty se stejnou výškou" + +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" +msgstr "Žádné tremolo po ukončení" + +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "Neukončené akordové tremolo" + +#: general-scheme.cc:390 +#, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "Nepodařilo se přesměrovat stderr do `%s'" + +#: general-scheme.cc:469 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "Nalezena nekonečnost nebo NaN při výstupu. Nahrazuje se 0.0" -#: music-functions.scm:213 -#, fuzzy -msgid "More alternatives than repeats. Junking excess alternatives" -msgstr "Více alternativ ne¾ opakování. Zahazuji nadbyteèné alternativy." +#: system.cc:200 +#, c-format +msgid "Element count %d" +msgstr "Počet prvků %d" -#: music-functions.scm:232 -#, scheme-format -msgid "expecting 2 elements for chord tremolo, found ~a" -msgstr "" +#: system.cc:466 +#, c-format +msgid "Grob count %d" +msgstr "Počet kreslených předmětů (grob) je %d " -#: music-functions.scm:538 -#, fuzzy, scheme-format -msgid "music expected: ~S" -msgstr "oèekávána mezera (whitespace)" +#: axis-group-engraver.cc:94 +msgid "Axis_group_engraver: vertical group already has a parent" +msgstr "Axis_group_engraver: svislá skupina již má rodiče" -#. FIXME: uncomprehensable message -#: music-functions.scm:589 -#, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" -msgstr "" +#: axis-group-engraver.cc:95 +msgid "are there two Axis_group_engravers?" +msgstr "Jsou dva Axis_group_engraver(y)?" -#: music-functions.scm:748 -#, fuzzy, scheme-format -msgid "cannot find quoted music: `~S'" -msgstr "nelze nalézt font: `%s'" +#: axis-group-engraver.cc:96 +msgid "removing this vertical group" +msgstr "Odstraňuje se tato svislá skupina" -#: music-functions.scm:942 -#, fuzzy, scheme-format -msgid "unknown accidental style: ~S" -msgstr "neznámá sazba posuvek: %s. Ignorováno" +#: cluster.cc:120 +#, c-format +msgid "unknown cluster style `%s'" +msgstr "Neznámý typ seskupení `%s':" -#: output-ps.scm:315 -msgid "utf-8-string encountered in PS backend" -msgstr "" +#: cluster.cc:157 +msgid "junking empty cluster" +msgstr "Vyhazuje se prázdné seskupení" -#: output-svg.scm:42 -#, fuzzy, scheme-format -msgid "undefined: ~S" -msgstr "nedefinované left_head" +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" +msgstr "%d: %s" -#: output-svg.scm:132 -#, scheme-format -msgid "cannot decypher Pango description: ~a" -msgstr "" +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "Rytmická hlava není částí rytmického sloupce" -#: output-tex.scm:98 -#, fuzzy, scheme-format -msgid "cannot find ~a in ~a" -msgstr "nelze nalézt zaèátek ligatury" +#: axis-group-interface.cc:670 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "Předmět mimo notovou osnovu by měl mít směr, výchozí je nahoru" -#: paper.scm:69 -msgid "Not in toplevel scope" -msgstr "" +#: coherent-ligature-engraver.cc:110 +#, c-format +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "Coherent_ligature_engraver: nastavuje se `spacing-increment=0.01': ptr=%ul" -#: paper.scm:117 -#, scheme-format -msgid "This is not a \\layout {} object, ~S" -msgstr "" +#. We are completely screwed. +#: beam-quanting.cc:853 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "Nenalezeno žádné životaschopné počáteční nastavení: nebyl nalezen žádný dobrý sklon trámce" -#: paper.scm:129 -#, scheme-format -msgid "Unknown papersize: ~a" -msgstr "" +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "Neukončené opakování procenta" -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:144 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" -msgstr "" +#: note-head.cc:86 +#, c-format +msgid "none of note heads `%s' or `%s' found" +msgstr "Žádná z notových hlaviček `%s' nebo `%s' nebyla nalezena" -#: parser-clef.scm:126 -#, fuzzy, scheme-format -msgid "unknown clef type `~a'" -msgstr "neznámý pøekladaè: `%s':" +#. FIXME: +#: script-engraver.cc:113 +msgid "do not know how to interpret articulation:" +msgstr "Výklad artikulace není znám:" -#: parser-clef.scm:127 -msgid "see scm/clef.scm for supported clefs" -msgstr "" +#: script-engraver.cc:114 +msgid " scheme encoding: " +msgstr "Kódování Scheme: " -#: ps-to-png.scm:88 -#, fuzzy, scheme-format -msgid "~a exited with status: ~S" -msgstr "pøíkaz skonèil s návratovou hodnotou %d" +#: program-option-scheme.cc:235 +#, c-format +msgid "no such internal option: %s" +msgstr "Žádná taková vnitřní volba: %s" -#: to-xml.scm:190 -#, fuzzy, scheme-format -msgid "assertion failed: ~S" -msgstr "Spu¹tìní LaTeXu selhalo" +#: property-iterator.cc:93 +#, c-format +msgid "not a grob name, `%s'" +msgstr "Není názvem pro grob, `%s'." -#, fuzzy -#~ msgid "show warranty" -#~ msgstr "vypisuje záruku a copyright" +#: all-font-metrics.cc:149 +#, c-format +msgid "cannot find font: `%s'" +msgstr "Nelze nalézt písmo: `%s'" -#~ msgid "Convert MIDI to LilyPond source." -#~ msgstr "Pøevádí MIDI na zdrojový text pro LilyPond." +#: pdf-scheme.cc:50 +#, c-format +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "Převod řetězce `%s' to UTF-16be se nezdařil: %s" -#, fuzzy -#~ msgid "example" -#~ msgstr "Pøíklad:" +#: rest.cc:193 +#, c-format +msgid "rest `%s' not found" +msgstr "Pomlka `%s' nebyla nalezena" -#, fuzzy -#~ msgid "loading default font" -#~ msgstr "Nahrávám implicitní font" +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" +msgstr "Ověření taktů selhalo na: %s" -#~ msgid "cannot find default font: `%s'" -#~ msgstr "nelze nalézt implicitní font: `%s'" +#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91 +#, c-format +msgid "direction of %s invalid: %d" +msgstr "Směr %s neplatný: %d" -#, fuzzy -#~ msgid "crescendo too small" -#~ msgstr "Text_spanner je pøíli¹ malý" +#: slur-engraver.cc:166 +msgid "unterminated slur" +msgstr "Neukončený legatový oblouček" -#~ msgid "print this help" -#~ msgstr "tato nápovìda" +#: slur-engraver.cc:199 +msgid "cannot end slur" +msgstr "Nelze ukončit legatový oblouček" -#~ msgid "silly pitch" -#~ msgstr "podivná vý¹ka" +#. We already have a slur, so give a warning and completely ignore +#. the new slur. +#: slur-engraver.cc:216 +msgid "already have slur" +msgstr "Má již legatový oblouček" -#, fuzzy -#~ msgid "cannot open file %s" -#~ msgstr "nelze otevøít soubor: `%s'" +#: global-context-scheme.cc:96 global-context-scheme.cc:114 +msgid "no music found in score" +msgstr "V notovém zápisu nebyly nalezeny žádné noty" -#, fuzzy -#~ msgid "Incorrect lilypond version: %s (%s, %s)" -#~ msgstr "Nesprávná verze lilypondu: %s (%s, %s)" +#: global-context-scheme.cc:104 +msgid "Interpreting music... " +msgstr "Provádí se výklad not..." -#~ msgid "no one to print a tremolos" -#~ msgstr "není nikdo, kdo by tiskl tremola" +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "Uplynulý čas: %.2f sekund" -#, fuzzy -#~ msgid "distance undefined, assuming 0.1" -#~ msgstr "" -#~ "Mensural_ligature: ¹íøka flexy (flexa-width) není definována pro flexu %" -#~ "d; pøedpokládám 2.0" +#: translator-group-ctors.cc:40 +#, c-format +msgid "fatal error. Couldn't find type: %s" +msgstr "Vážná chyba. Nepodařilo se nalézt typ: %s" -#, fuzzy -#~ msgid "junking event: `%s'" -#~ msgstr "Matoucí po¾adavek: `%s'" +#: phrasing-slur-engraver.cc:165 +msgid "unterminated phrasing slur" +msgstr "Neukončený frázovací oblouček" -#~ msgid "no one to print a repeat brace" -#~ msgstr "není nikdo, kdo by tiskl repetièní svorku" +#: phrasing-slur-engraver.cc:190 +msgid "cannot end phrasing slur" +msgstr "Nelze ukončit frázovací oblouček" -#~ msgid "cannot find `%s' context" -#~ msgstr "nelze nalézt kontext `%s'" +#: phrasing-slur-engraver.cc:204 +msgid "already have phrasing slur" +msgstr "Má již frázovací oblouček" -#~ msgid "Optimal demerits: %f" -#~ msgstr "Optimální penalty: %f" +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "Provádí se rozbor..." -#, fuzzy -#~ msgid "no feasible line breaking found" -#~ msgstr "Nebylo nalezeno vhodné místo pro øádkový zlom" +#: score.cc:172 +msgid "already have music in score" +msgstr "V notovém zápisu již noty jsou" -#~ msgid "no one to print a percent" -#~ msgstr "není nikdo, kdo by tiskl procento" +#: score.cc:173 +msgid "this is the previous music" +msgstr "Toto jsou předchozí noty" -#~ msgid "Creator: " -#~ msgstr "Vytvoøil: " +#: score.cc:178 +msgid "errors found, ignoring music expression" +msgstr "Nalezeny chyby, přehlíží se hudební výraz" -#~ msgid "at " -#~ msgstr "v " +#. If there is no such symbol, we default to the numbered style. +#. (Here really with a warning!) +#: time-signature.cc:94 +#, c-format +msgid "time signature symbol `%s' not found; reverting to numbered style" +msgstr "Symbol pro značení taktu `%s' nebyl nalezen; vrací se na značení číslicemi" -#, fuzzy -#~ msgid "in quotation: junking event %s" -#~ msgstr "Matoucí po¾adavek: `%s'" +#: grob-interface.cc:68 +#, c-format +msgid "Unknown interface `%s'" +msgstr "Neznámé rozhraní %s" -#, fuzzy -#~ msgid "Global shortest duration is %s" -#~ msgstr "Celkovì nejkrat¹í délka je %s\n" +#: grob-interface.cc:79 +#, c-format +msgid "Grob `%s' has no interface for property `%s'" +msgstr "Grob (kreslený předmět) `%s' nemá žádné rozhraní pro vlastnost `%s'" -#~ msgid "TFM header of `%s' has only %u word (s)" -#~ msgstr "TFM hlavièka `%s' má pouze %u slov" +#: midi-stream.cc:39 +#, c-format +msgid "cannot open for write: %s: %s" +msgstr "Nelze otevřít soubor pro zápis: %s: %s" -#~ msgid "" -#~ "%s: TFM file has %u parameters, which is more than the %u I can handle" -#~ msgstr "" -#~ "%s: TFM soubor má %u parametrù, co¾ je více ne¾ %u, které lze obslou¾it" +#: midi-stream.cc:55 +#, c-format +msgid "cannot write to file: `%s'" +msgstr "Nelze zapisovat do souboru: `%s'" -#~ msgid "cannot find ascii character: %d" -#~ msgstr "nelze nalézt ascii znak: %d" +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 +#, c-format +msgid "Cyclic markup detected: %s" +msgstr "ZjiÅ¡těno kruhové značení: %s" -#~ msgid "no one to print a tuplet start bracket" -#~ msgstr "není kdo by vytiskl otevírací závorku pro triolu (kvartolu, ...)" +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 +#, c-format +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "Hloubka značení překračuje největší hodnotu %d; Značení: %s" -#, fuzzy -#~ msgid "unterminated trill spanner" -#~ msgstr "neukonèené textové pøeklenutí" +#: parser.yy:162 parser.yy:176 +msgid "Too much lookahead" +msgstr "PříliÅ¡ mnoho dívání se dopředu" -#, fuzzy -#~ msgid "identifier should have alphabetic characters only" -#~ msgstr "Identifikátor by mìl obsahovat pouze písmena" +#: parser.yy:828 parser.yy:1229 +msgid "not a context mod" +msgstr "Není to režim prostředí" -#, fuzzy -#~ msgid "more alternatives than repeats" -#~ msgstr "Více alternativ ne¾ opakování. Zahazuji nadbyteèné alternativy." +#: parser.yy:1013 +msgid "\\paper cannot be used in \\score, use \\layout instead" +msgstr "\\paper nelze použít v \\score, místo toho použít \\layout" -#, fuzzy -#~ msgid "cannot find signature for music function" -#~ msgstr "nelze nalézt kontext `%s'" +#: parser.yy:1037 +msgid "need \\paper for paper block" +msgstr "Pro blok papíru je potřeba \\paper" -#~ msgid "(ignored)" -#~ msgstr "(ignorováno)" +#: parser.yy:1979 +msgid "only \\consists and \\remove take non-string argument." +msgstr "jen \\consists a \\remove rozumí ne-řetězcovému argumentu." -#~ msgid "Cleaning %s..." -#~ msgstr "Odstraòuji %s..." +#: parser.yy:1992 +msgid "Grob name should be alphanumeric" +msgstr "Název pro grob by měl být abecedně-číselný" -#, fuzzy -#~ msgid "Usage: %s [OPTION]... [FILE]..." -#~ msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR..." +#: parser.yy:2194 +msgid "not a rhythmic event" +msgstr "Není to rytmická událost" -#, fuzzy -#~ msgid "%s: skipping: `%s'" -#~ msgstr "takové nastavení neexistuje: `%s'" +#: parser.yy:2290 parser.yy:2295 +msgid "have to be in Lyric mode for lyrics" +msgstr "Pro zápis textu musíte být v módu režimu textu písně" -#, fuzzy -#~ msgid "print version information" -#~ msgstr "vypisuje èíslo verze" +#: parser.yy:2410 +msgid "expecting string as script definition" +msgstr "Očekáván řetězec jako vymezení skriptu" -#~ msgid "getopt says: `%s'" -#~ msgstr "getopt øíká: `%s'" +#: parser.yy:2570 parser.yy:2621 +#, c-format +msgid "not a duration: %d" +msgstr "Není platnou dobou trvání: %d" -#, fuzzy -#~ msgid "Command failed: `%s' (status %d)" -#~ msgstr "LilyPond selhal u vstupního souboru (návratová hodnota %d)." +#: parser.yy:2740 +msgid "have to be in Note mode for notes" +msgstr "Pro zápis not musíte být v režimu pro noty" -#~ msgid "command exited with value %d" -#~ msgstr "pøíkaz skonèil s návratovou hodnotou %d" +#: parser.yy:2795 +msgid "have to be in Chord mode for chords" +msgstr "Pro zápis akordů musíte být v režimu pro akordy" -#~ msgid "debug" -#~ msgstr "debug" +#: parser.yy:3055 +msgid "not a markup" +msgstr "Není to značení" -#~ msgid "define macro NAME [optional expansion EXP]" -#~ msgstr "definuje makro JMÉNO [volitelná pøípona PØÍP]" +#: lexer.ll:225 +msgid "stray UTF-8 BOM encountered" +msgstr "Nalezen zbloudilý UTF-8 BOM" -#~ msgid "only pre-process" -#~ msgstr "pouze pøedzpracuje (pre-process)" +#: lexer.ll:228 +msgid "Skipping UTF-8 BOM" +msgstr "Přeskakuje se UTF-8 BOM" -#~ msgid "no such context: %s" -#~ msgstr "neexistující kontext: %s" +#: lexer.ll:286 +#, c-format +msgid "Renaming input to: `%s'" +msgstr "Přejmenovává se vstup: `%s'" -#~ msgid "Processing `%s'..." -#~ msgstr "Zpracovávám `%s'..." +#: lexer.ll:303 +msgid "quoted string expected after \\version" +msgstr "Řetězec znaků daný do uvozovek očekáván po \\version" -#~ msgid "set the resolution of the preview to RES" -#~ msgstr "nastavuje rozli¹ení náhledu na RES" +#: lexer.ll:307 +msgid "quoted string expected after \\sourcefilename" +msgstr "Řetězec znaků daný do uvozovek očekáván po \\sourcefilename" -#, fuzzy -#~ msgid "Wrote `%s'" -#~ msgstr "Zapisuji `%s'..." +#: lexer.ll:311 +msgid "integer expected after \\sourcefileline" +msgstr "Očekáváno celé číslo po \\sourcefileline" -#, fuzzy -#~ msgid "cannot dlopen: %s: %s" -#~ msgstr "nelze otevøít soubor: `%s'" +#: lexer.ll:334 +msgid "\\maininput not allowed outside init files" +msgstr "\\maininput není povolen mimo spouÅ¡těcí (init) soubory" -#, fuzzy -#~ msgid "install package: %s or %s" -#~ msgstr "nelze zmìnit `%s' na `%s'" +#: lexer.ll:358 +#, c-format +msgid "wrong or undefined identifier: `%s'" +msgstr "Å patné nebo neurčené rozpoznávací znamení: `%s'" -#, fuzzy -#~ msgid "parsing AFM file: `%s'" -#~ msgstr "Chyba pøi zpracování AFM souboru: `%s'" +#: lexer.ll:384 +msgid "string expected after \\include" +msgstr "Po \\include očekáván řetězec znaků" -#~ msgid "checksum mismatch for font file: `%s'" -#~ msgstr "Chyba kontrolního souètu pro soubor fontu: `%s'" +#. backup rule +#: lexer.ll:394 +msgid "end quote missing" +msgstr "Chybí koncové uvozovky" -#~ msgid "does not match: `%s'" -#~ msgstr "nesouhlasí: `%s'" +#: lexer.ll:556 +msgid "Brace found at end of lyric. Did you forget a space?" +msgstr "Na konci textu písně byla nalezena závorka. Zapomněl jste na mezeru?" -#, fuzzy -#~ msgid "Rebuild all .afm files, and remove all .pk and .tfm files." -#~ msgstr "" -#~ " Znovu sestavte v¹echny .afm soubory a odstraòte v¹echny .pk a .tfm " -#~ "soubory. Spus»te znovu s parametrem -V k výpisu cest k souborùm fontù." +#: lexer.ll:671 +msgid "Brace found at end of markup. Did you forget a space?" +msgstr "Na konci úryvku byla nalezena závorka. Zapomněl jste na mezeru?" -#~ msgid "beam has less than two visible stems" -#~ msgstr "trámec má ménì ne¾ dvì viditelné no¾ky" +#: lexer.ll:683 +msgid "EOF found inside a comment" +msgstr "Uvnitř poznámky nalezen konec souboru (EOF - end of file)" -#, fuzzy -#~ msgid "adding lilypond directory: %s" -#~ msgstr "nelze vytvoøit adresáø: `%s'" +#: lexer.ll:775 +#, c-format +msgid "invalid character: `%s'" +msgstr "Neplatný znak: `%s'" -#, fuzzy -#~ msgid "cannot handle a percent repeat of length: %s" -#~ msgstr "Nevím, jak zpracovat procentové opakování této délky." +#: lexer.ll:878 lexer.ll:879 +#, c-format +msgid "unknown escaped string: `\\%s'" +msgstr "Neznámá uniklá sekvence: `\\%s'" -#~ msgid "lilypond -e EXPR means:" -#~ msgstr "lilypond -e VÝRAZ znamená:" +#: lexer.ll:1127 lexer.ll:1128 +msgid "non-UTF-8 input" +msgstr "ne-UTF-8 vstup" -#~ msgid " Evalute the Scheme EXPR before parsing any .ly files." -#~ msgstr " Vyhodnotí VÝRAZ Scheme pøed zpracováním v¹ech souborù .ly." +#: lexer.ll:1171 lexer.ll:1172 +#, c-format +msgid "file too old: %s (oldest supported: %s)" +msgstr "Soubor je příliÅ¡ starý: %s (nejstarší podporovaný: %s)" -#~ msgid "" -#~ " Multiple -e options may be given, they will be evaluated sequentially." -#~ msgstr " Voleb -e mù¾e být zadáno více, budou vyhodnoceny postupnì." +#: lexer.ll:1172 lexer.ll:1173 +msgid "consider updating the input with the convert-ly script" +msgstr "Zvažte převod zdrojového textu na novější pomocí skriptu convert-ly" -#, fuzzy -#~ msgid "" -#~ " The function ly:set-option allows for access to some internal variables." -#~ msgstr "" -#~ " Funkce ly-set-option dovoluje nastavovat nìkteré interní promìnné." +#: lexer.ll:1178 lexer.ll:1179 +#, c-format +msgid "program too old: %s (file requires: %s)" +msgstr "Program je příliÅ¡ starý: %s (soubor vyžaduje: %s)" -#, fuzzy -#~ msgid "Usage: lilypond -e \"(ly:set-option SYMBOL VAL)\"" -#~ msgstr "Pou¾ití: lilypond -e \"(ly-set-option SYMBOL HODN)\"" +#: parser-clef.scm:143 parser-clef.scm:183 +#, scheme-format +msgid "unknown clef type `~a'" +msgstr "Neznámý typ notového klíče `~a'" -#~ msgid "Separation_item: I've been drinking too much" -#~ msgstr "Separation_item: Moc jsem pil" +#: parser-clef.scm:144 parser-clef.scm:184 +#, scheme-format +msgid "supported clefs: ~a" +msgstr "Podporované notové klíče: ~a" -#~ msgid "need integer number arg" -#~ msgstr "argument musí být celé èíslo" +#: document-backend.scm:132 +#, scheme-format +msgid "pair expected in doc ~s" +msgstr "V doc ~s očekávána dvojice" -#, fuzzy -#~ msgid "suspect duration in beam: %s" -#~ msgstr "Byla oèekávána délka následující za tímto trámcem" +#: document-backend.scm:189 +#, scheme-format +msgid "cannot find interface for property: ~S" +msgstr "Nelze nalézt rozhraní pro vlastnost: ~S" -#, fuzzy -#~ msgid "syntax error: cannot back up" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: document-backend.scm:199 +#, scheme-format +msgid "unknown Grob interface: ~S" +msgstr "Neznámé rozhraní pro Grob: ~S" -#, fuzzy -#~ msgid "Reading a token: " -#~ msgstr "Matoucí po¾adavek: `%s'" +#: graphviz.scm:64 +#, scheme-format +msgid "Writing graph `~a'..." +msgstr "Zapisuje se graf `~a'..." -#, fuzzy -#~ msgid "syntax error, unexpected %s" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: parser-ly-from-scheme.scm:71 +msgid "error in #{ ... #}" +msgstr "Chyba v #{ ... #}" -#, fuzzy -#~ msgid "syntax error, unexpected %s, expecting %s" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: framework-eps.scm:108 +#, scheme-format +msgid "Writing ~a..." +msgstr "Zapisuje se ~a..." -#, fuzzy -#~ msgid "syntax error, unexpected %s, expecting %s or %s" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "Nalezena nekonečnost nebo nan ve výstupu. Nahrazuje se 0.0" -#, fuzzy -#~ msgid "syntax error, unexpected %s, expecting %s or %s or %s" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: output-ps.scm:277 output-svg.scm:524 +#, scheme-format +msgid "unknown line-cap-style: ~S" +msgstr "Neznámý line-cap-style: ~S" -#, fuzzy -#~ msgid "syntax error; also memory exhausted" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: output-ps.scm:282 output-svg.scm:530 +#, scheme-format +msgid "unknown line-join-style: ~S" +msgstr "Neznámý line-join-style: ~S" -#, fuzzy -#~ msgid "syntax error" -#~ msgstr "nepøíli¹ záva¾ná chyba: " +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "set-global-staff-size: ne na nejvyšší úrovni v oblasti platnosti" -#, fuzzy -#~ msgid "cannot find CFF/PFA/PFB font ~S=~S" -#~ msgstr "nelze nalézt font: `%s'" +#: paper.scm:314 +#, scheme-format +msgid "This is not a \\layout {} object, ~S" +msgstr "Toto není žádný předmět \\layout {}t, ~S" -#, fuzzy -#~ msgid "unknown bar glyph: `~S'" -#~ msgstr "neznámý pøekladaè: `%s':" +#: paper.scm:326 +#, scheme-format +msgid "Unknown paper size: ~a" +msgstr "Neznámá velikost papíru: ~a" -#, fuzzy -#~ msgid "Extracting fonts to %s..." -#~ msgstr "nelze vytvoøit adresáø: `%s'" +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:341 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "#(set-paper-size .. ) se musí použít uvnitř \\paper { ... }" -#, fuzzy -#~ msgid "Writing %s..." -#~ msgstr "Zapisuji `%s'..." +#: backend-library.scm:27 +#, scheme-format +msgid "Invoking `~a'..." +msgstr "Volá se `~a'..." -#, fuzzy -#~ msgid "Writing output file." -#~ msgstr "LaTeX selhal u výstupního souboru." +#: backend-library.scm:31 +#, scheme-format +msgid "`~a' failed (~a)\n" +msgstr "`~a' selhal (~a)\n" -#, fuzzy -#~ msgid "Second argument must be pitch list." -#~ msgstr "Druhý argument musí být symbol" +#: backend-library.scm:90 +#, scheme-format +msgid "Converting to `~a'...\n" +msgstr "Převádí se na `~a'...\n" -#~ msgid "Have to be in Lyric mode for lyrics" -#~ msgstr "Pro zápis textu musíte být v módu Lyric" +#. Do not try to guess the name of the png file, +#. GS produces PNG files like BASE-page%d.png. +#: backend-library.scm:99 +#, scheme-format +msgid "Converting to ~a..." +msgstr "Převádí se na ~a..." -#~ msgid "Expecting string as script definition" -#~ msgstr "Oèekáván øetìzec jako definice skriptu" +#: backend-library.scm:137 +#, scheme-format +msgid "Writing header field `~a' to `~a'..." +msgstr "Zapisuje se pole s hlavičkou `~a' do `~a'..." -#~ msgid "Have to be in Note mode for notes" -#~ msgstr "Pro zápis not musíte být v módu Note" +#: backend-library.scm:187 +#, scheme-format +msgid "missing stencil expression `~S'" +msgstr "Chybí výraz stencil `~S'" -#~ msgid "Have to be in Chord mode for chords" -#~ msgstr "Pro zápis akordù musíte být v módu Chord" +#: output-svg.scm:47 +#, scheme-format +msgid "undefined: ~S" +msgstr "Nevymezené: ~S" -#, fuzzy -#~ msgid "programming error: " -#~ msgstr "chyba programrátora: %s (Pokraèuji: dr¾te mi palce)\n" +#: output-svg.scm:157 +#, scheme-format +msgid "cannot decypher Pango description: ~a" +msgstr "Nelze rozluÅ¡tit popis Pango: ~a" -#, fuzzy -#~ msgid "Programming error: " -#~ msgstr "chyba programrátora: %s (Pokraèuji: dr¾te mi palce)\n" +#: output-svg.scm:237 +msgid "Glyph must have a unicode value" +msgstr "Znak musí mít hodnotu unicode" -#~ msgid "Cannot switch translators, I'm there already" -#~ msgstr "Nelze pøepnout pøekladaèe. Ji¾ jsem tam." +#: output-svg.scm:289 output-svg.scm:299 +#, scheme-format +msgid "cannot find SVG font ~S" +msgstr "Nelze nalézt písmo SVG ~S" -#, fuzzy -#~ msgid "Accidental rule must be pair or context-name; Found %s" -#~ msgstr "Sazba posuvek musí být pár nebo jméno kontextu: %s" +#: flag-styles.scm:151 +#, scheme-format +msgid "flag stroke `~a' or `~a' not found" +msgstr "Symbol praporku `~a' nebo `~a' nebyl nalezen" -#~ msgid "I'm one myself" -#~ msgstr "Jsem pouze jediný" +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" +msgstr "Počáteční výška tónu, ze které se vychází, není na stupnici; přehlíží se" -#~ msgid "Huh? Got %d, expected %d characters" -#~ msgstr "Joj! Obdr¾eno %d, oèekáváno %d znakù" +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" +msgstr "Výška tónu, ke které se jde, není na stupnici; přehlíží se" -#~ msgid "No volta spanner to end" -#~ msgstr "zde není repetice k ukonèení" +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" +msgstr "Výška tónu k převedení není na stupnici; přehlíží se" -#~ msgid "Also have a stopped spanner. Giving up." -#~ msgstr "Také má právì ukonèenou repetici. Vzdávám." +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" +msgstr "Výška tónu \"v blízkosti\" není na stupnici; přehlíží se" -#~ msgid "Missing end quote" -#~ msgstr "Chybìjící koncová uvozovka" +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" +msgstr "Výška tónu, která má být obrácena, není na stupnici; přehlíží se" -#~ msgid "EXT" -#~ msgstr "PØÍP" +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" +msgstr "Záporný replikační počet; přehlíží se" -#~ msgid "FIXME: key change merge" -#~ msgstr "FIXME: slouèení zmìn tóniny" +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" +msgstr "Tvrzení selhalo: ~S" -#, fuzzy -#~ msgid "kpathsea cannot find %s file: `%s'" -#~ msgstr "Kpathsea nemù¾e nalézt TFM soubor `%s'" +#: define-grob-properties.scm:21 define-context-properties.scm:31 +#: define-music-properties.scm:21 +#, scheme-format +msgid "symbol ~S redefined" +msgstr "Symbol ~S nově vymezen" -#, fuzzy -#~ msgid "kpathsea cannot find file: `%s'" -#~ msgstr "Kpathsea nemù¾e nalézt TFM soubor `%s'" +#: chord-entry.scm:52 +#, scheme-format +msgid "Spurious garbage following chord: ~A" +msgstr "Zjevně nesmyslný text po akordu: ~A" -#, fuzzy -#~ msgid "set option, use -e '(ly:option-usage)' for help" -#~ msgstr "nastaví volby, pou¾ijte -e '(ly-option-usage)' pro nápovìdu" +#: lily.scm:234 +msgid "Using (ice-9 curried-definitions) module\n" +msgstr "Používá se modul (ice-9 curried-definitions)\n" -#, fuzzy -#~ msgid "EXTs" -#~ msgstr "PØÍP" +#: lily.scm:237 +msgid "Guile 1.8\n" +msgstr "Guile 1.8\n" -#, fuzzy -#~ msgid "generate DVI" -#~ msgstr "vytváøí PDF výstup" +#: lily.scm:297 +#, scheme-format +msgid "cannot find: ~A" +msgstr "Nelze nalézt: ~A" -#, fuzzy -#~ msgid "generate TeX" -#~ msgstr "vytváøí PDF výstup" +#: lily.scm:707 +msgid "Success: compilation successfully completed" +msgstr "Úspěch: Překlad úspěšně dokončen" -#, fuzzy -#~ msgid "kpathsea can not find %s file: `%s'" -#~ msgstr "Kpathsea nemù¾e nalézt TFM soubor `%s'" +#: lily.scm:708 +msgid "Compilation completed with warnings or errors" +msgstr "Překlad dokončen s varováními a chybami" -#, fuzzy -#~ msgid "kpathsea can not find AFM file `%s'" -#~ msgstr "Kpathsea nemù¾e nalézt TFM soubor `%s'" +#: lily.scm:770 +#, scheme-format +msgid "job ~a terminated with signal: ~a" +msgstr "Příkaz ~a skončil s návratovou hodnotou: ~a" -#, fuzzy -#~ msgid "kpathsea can not find TFM file: `%s'" -#~ msgstr "Kpathsea nemù¾e nalézt TFM soubor `%s'" +#: lily.scm:773 +#, scheme-format +msgid "" +"logfile ~a (exit ~a):\n" +"~a" +msgstr "" +"Soubor se zápisem ~a (konec ~a):\n" +"~a" -#, fuzzy -#~ msgid "Converting to `~a.ps'..." -#~ msgstr "Zapisuji `%s'..." +#: lily.scm:795 lily.scm:881 +#, scheme-format +msgid "failed files: ~S" +msgstr "Nepodařené soubory: ~S" -#, fuzzy -#~ msgid "use LaTeX for formatting" -#~ msgstr "Spou¹tí LilyPond a vypomáhá si LaTeXem pro titulky" +#: lily.scm:872 +#, scheme-format +msgid "Redirecting output to ~a..." +msgstr "Převedení výstupu do ~a..." -#~ msgid "find pfa fonts used in FILE" -#~ msgstr "vyhledává pfa fonty pou¾ívané v SOUBORu" +#: lily.scm:891 ps-to-png.scm:66 +#, scheme-format +msgid "Invoking `~a'...\n" +msgstr "Volá se `~a'...\n" -#~ msgid "add DIR to LilyPond's search path" -#~ msgstr "pøidává ADRESÁØ do vyhledávací cesty LilyPondu" +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" +msgstr "Noty nevhodné pro context-mod" -#, fuzzy -#~ msgid "keep all output, output to directory %s.dir" -#~ msgstr "ponechává ve¹keré výstupy, výstupní adresáø pojmenuje %s.dir" +#: lily-library.scm:349 +#, scheme-format +msgid "Cannot find context-def \\~a" +msgstr "Nelze nalézt context-def \\~a" -#~ msgid "do not run LilyPond" -#~ msgstr "nespou¹tí LilyPond" +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" +msgstr "Noty nevhodné pro output-def" -#~ msgid "produce MIDI output only" -#~ msgstr "vytváøí pouze MIDI výstup" +#: lily-library.scm:888 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." +msgstr "" +"Najít index mezi @var{start} und @var{end} (celé číslo),\n" +"které tvoří nejbližší shodu k @var{target-val},\n" +"když je použito na funkci @var{getter}." -#, fuzzy -#~ msgid "generate PDF output" -#~ msgstr "vytváøí PDF výstup" +#: lily-library.scm:962 +#, scheme-format +msgid "unknown unit: ~S" +msgstr "Neznámá jednotka: ~S" -#, fuzzy -#~ msgid "generate PS.GZ" -#~ msgstr "vytváøí PDF výstup" +#: lily-library.scm:987 +#, scheme-format +msgid "no \\version statement found, please add~afor future compatibility" +msgstr "Žádné oznámení \\version nebylo nalezeno, přidat ~a pro budoucí slučitelnost" -#~ msgid "change global setting KEY to VAL" -#~ msgstr "zmìní globální nastavení KLÍÈe na HODN" +#: lily-library.scm:993 +msgid "old relative compatibility not used" +msgstr "Stará vztažná slučitelnost nepoužita" -#~ msgid "LilyPond crashed (signal %d)." -#~ msgstr "LilyPond havaroval (signal %d)" +#: framework-svg.scm:84 +#, scheme-format +msgid "Updating font into: ~a" +msgstr "Písmo se aktualizuje do: ~a" -#~ msgid "Please submit a bug report to bug-lilypond@gnu.org" -#~ msgstr "Prosím, za¹lete hlá¹ení o chybì na adresu bug-lilypond@gnu.org" +#: part-combiner.scm:598 +#, scheme-format +msgid "quoted music `~a' is empty" +msgstr "Noty dané do uvozovek `~a' jsou prázdné" -#, fuzzy -#~ msgid "LilyPond failed on an input file (exit status %d)" -#~ msgstr "LilyPond selhal u vstupního souboru (návratová hodnota %d)." +#: music-functions.scm:274 +msgid "More alternatives than repeats. Junking excess alternatives" +msgstr "Více alternativ než opakování. Zahazují se nadbytečné alternativy" -#, fuzzy -#~ msgid "Continuing..." -#~ msgstr "Bì¾í %s..." +#: music-functions.scm:303 +#, scheme-format +msgid "invalid tremolo repeat count: ~a" +msgstr "Neplatný počet opakování tremola: ~a" -#~ msgid "Analyzing %s..." -#~ msgstr "Analyzuji %s..." +#: music-functions.scm:662 +msgid "Bad chord repetition" +msgstr "Å patné opakování akordu" -#, fuzzy -#~ msgid "no LilyPond output found for `%s'" -#~ msgstr "nebyl nalezen výstup LilyPondu pro `%s'" +#: music-functions.scm:697 +#, scheme-format +msgid "music expected: ~S" +msgstr "Očekávána hudba: ~S" -#~ msgid "LaTeX failed on the output file." -#~ msgstr "LaTeX selhal u výstupního souboru." +#: music-functions.scm:1013 +#, scheme-format +msgid "cannot find quoted music: `~S'" +msgstr "Nelze nalézt noty dané do uvozovek: `~S'" -#~ msgid "pseudo filter" -#~ msgstr "pseudofiltr" +#: music-functions.scm:1151 +msgid "Add @var{octave-shift} to the octave of @var{pitch}." +msgstr "Přidat @var{octave-shift} do oktávy @var{pitch}." -#~ msgid "pseudo filter only for single input file" -#~ msgstr "pseudofiltr pouze pro jeden vstupní soubor" +#: music-functions.scm:1211 +#, scheme-format +msgid "Unknown octaveness type: ~S " +msgstr "Neznámý druh oktávy: ~S " -#, fuzzy -#~ msgid "no files specified on command line" -#~ msgstr "na pøíkazové øádce nebyly zadány ¾ádné soubory" +#: music-functions.scm:1212 +msgid "Defaulting to 'any-octave." +msgstr "Nastavuje se výchozí 'any-octave." -#, fuzzy -#~ msgid "%s output to ..." -#~ msgstr "výstup %s se zapisuje do `%s'..." +#: music-functions.scm:1549 +#, scheme-format +msgid "unknown accidental style: ~S" +msgstr "Neznámý styl posuvek: ~S" -#, fuzzy -#~ msgid "%s output to %s..." -#~ msgstr "výstup %s se zapisuje do `%s'..." +#: define-event-classes.scm:80 +msgid "All classes must be the last in their matrilineal line." +msgstr "VÅ¡echny třídy musí být poslední v jejich matrilineární linii (posloupné v ženské linii)." -#, fuzzy -#~ msgid "cannot find file: `%s.%s'" -#~ msgstr "nelze nalézt soubor: `%s'" +#: define-event-classes.scm:84 +msgid "All classes must have a well-defined pedigree in the existing class hierarchy." +msgstr "VÅ¡echny třídy musí mít ve stávající hierarchii tříd dobře stanovený původ." -#, fuzzy -#~ msgid "DIM" -#~ msgstr "ADRESÁØ" +#: define-event-classes.scm:151 +#, scheme-format +msgid "event class ~A seems to be unused" +msgstr "Třída událostí ~A se zdá být nepoužívaná" -#, fuzzy -#~ msgid "write dependencies" -#~ msgstr "pøidává ADRESÁØ do závislostí" +#. should be programming-error +#: define-event-classes.scm:157 +#, scheme-format +msgid "translator listens to nonexisting event class ~A" +msgstr "Překladač naslouchá chybějící třídě událostí ~A" -#, fuzzy -#~ msgid "prepend PREF before each -M dependency" -#~ msgstr "pøidává ADRESÁØ do závislostí" +#: markup-macros.scm:331 +#, scheme-format +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgstr "Nesprávný počet argumentů. Očekáváno: ~A, nalezeno ~A: ~S" -#, fuzzy -#~ msgid "do not run lilypond" -#~ msgstr "nespou¹tí LilyPond" +#: markup-macros.scm:337 +#, scheme-format +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgstr "Neplatný argument v poloze ~A. Očekáváno: ~A, nalezeno: ~S." -#~ msgid "write Makefile dependencies for every input file" -#~ msgstr "zapisuje závislosti Makefile pro v¹echny vstupní soubory " +#: markup-macros.scm:373 +#, scheme-format +msgid "Not a markup command: ~A" +msgstr "Žádný příkaz pro textový popis: ~A" -#~ msgid "use pdflatex to generate a PDF output" -#~ msgstr "pou¾ije pdflatex pro vygenerování PDF výstupu" +#: define-note-names.scm:962 +msgid "Select note names language." +msgstr "Vyberte jazyk označení not." -#, fuzzy -#~ msgid "invalid value: `%s'" -#~ msgstr "neplatná hodnota: `%s'" +#: define-note-names.scm:968 +#, scheme-format +msgid "Using `~a' note names..." +msgstr "Používá se označení not `~a'..." -#, fuzzy -#~ msgid "Writing HTML menu `%s'" -#~ msgstr "Zapisuji `%s'..." +#: define-note-names.scm:971 +#, scheme-format +msgid "Could not find language `~a'. Ignoring." +msgstr "Nepodařilo se najít jazyk `~a'. Přehlíží se." -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Distributed under terms of the GNU General Public License. It comes with\n" -#~ "NO WARRANTY." -#~ msgstr "" -#~ "Distribuováno ve znìní licence GNU General Public License. Program je " -#~ "nabízen BEZ jakékoliv ZÁRUKY" - -#~ msgid "Symbol is not a parent context: %s. Ignored" -#~ msgstr "Symbol není otcovským kontextem: %s. Ignorováno" - -#~ msgid "Beam has less than two stems. Removing beam." -#~ msgstr "Trámec má ménì ne¾ dvì no¾ky. Odstraòuji jej." - -#~ msgid "" -#~ "Not sure that we can find a nice beam slope (no viable initial " -#~ "configuration found)." -#~ msgstr "" -#~ "Nejsem si jistý, ¾e pùjde nalézt pìkný sklon trámce (nebyla nalezena " -#~ "¾ádná ¾ivotaschopná konfigurace)." +#: framework-ps.scm:250 +#, scheme-format +msgid "cannot embed ~S=~S" +msgstr "Nelze vložit ~S=~S" -#~ msgid "NaN" -#~ msgstr "NaN" +#: framework-ps.scm:293 +#, scheme-format +msgid "cannot extract file matching ~a from ~a" +msgstr "z ~a nelze získat soubor hodící se k ~a" -#, fuzzy -#~ msgid "" -#~ "Nothing to connect extender to on the left. Ignoring extender event." -#~ msgstr "" -#~ "Prodlou¾ení není vlevo k èemu pøipojit. Ignoruji po¾adavek na prodlou¾ení" - -#~ msgid "" -#~ "Skipped something?\n" -#~ "Grob %s ended before I expected it to end." -#~ msgstr "" -#~ "Nìco je pøeskoèeno?\n" -#~ "Grob %s skonèil døíve, ne¾ bylo oèekáváno." +#: framework-ps.scm:311 +#, scheme-format +msgid "do not know how to embed ~S=~S" +msgstr "Neznámé vložení ~S=~S" -#, fuzzy -#~ msgid "Nothing to connect hyphen to on the left. Ignoring hyphen event." -#~ msgstr "" -#~ "Vlevo není k èemu pøipojit spojovník. Ignoruji po¾adavek na spojovník." +#: framework-ps.scm:336 +#, scheme-format +msgid "do not know how to embed font ~s ~s ~s" +msgstr "Neznámé vložení písma ~s ~s ~s" -#~ msgid "Score contains errors; will not process it" -#~ msgstr "Partitura obsahuje chyby; nebude zpracována" +#: framework-ps.scm:686 +msgid "" +"\n" +"The PostScript backend does not support the\n" +"system-by-system output. For that, use the EPS backend instead,\n" +"\n" +" lilypond -dbackend=eps FILE\n" +"\n" +"If have cut & pasted a lilypond fragment from a webpage, be sure\n" +"to only remove anything before\n" +"\n" +" %% ****************************************************************\n" +" %% Start cut-&-pastable-section\n" +" %% ****************************************************************\n" +msgstr "" +"\n" +"Jádro pro PostScript nepodporuje žádný\n" +"systémový výstup (system-by-system).\n" +"Kvůli tomu namísto něho použijte jádro pro EPS,\n" +"\n" +" lilypond -dbackend=eps SOUBOR\n" +"\n" +"Při vyjmutí & vložení lilypondového kousku z internetových stránek, ujistěte se,\n" +"že jste pouze odstranil vÅ¡e před\n" +"\n" +" %% ****************************************************************\n" +" %% Start cut-&-pastable-section\n" +" %% ****************************************************************\n" -#~ msgid "Now processing: `%s'" -#~ msgstr "Nyní zpracovávám: `%s'" +#: layout-beam.scm:40 +#, scheme-format +msgid "Error in beam quanting. Expected (~S,~S) found ~S." +msgstr "Chyba v zastřihnutí trámců. Očekáváno (~S,~S), nalezeno ~S." -#~ msgid "" -#~ "round filled box horizontal extent smaller than blot; decreasing blot" -#~ msgstr "" -#~ "¹íøka boxu se zaokrouhlenými rohy je men¹í ne¾ prùmìr zaokrouhlení; " -#~ "sni¾uji zaokrouhlení" +#: layout-beam.scm:54 +#, scheme-format +msgid "Error in beam quanting. Expected ~S 0, found ~S." +msgstr "Chyba v zastřihnutí trámců. Očekáváno ~S 0, nalezeno ~S." -#~ msgid "round filled box vertical extent smaller than blot; decreasing blot" -#~ msgstr "" -#~ "vý¹ka boxu se zaokrouhlenými rohy je men¹í ne¾ prùmìr zaokrouhlení; " -#~ "sni¾uji zaokrouhlení" +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" +msgstr "Očekáván symbol: ~S" -#~ msgid "lyrics found without any matching notehead" -#~ msgstr "nalezen text bez odpovídající notové hlavièky" +#: define-music-types.scm:768 +#, scheme-format +msgid "cannot find music object: ~S" +msgstr "Nelze nalézt hudební předmět: ~S" -#~ msgid "Huh? Melismatic note found to have associated lyrics." -#~ msgstr "Joj! Prodlu¾ovací nota má pøiøazen text." +#: define-music-types.scm:787 +#, scheme-format +msgid "unknown repeat type `~S'" +msgstr "Neznámý druh opakování: `~S'" -#~ msgid "use output format EXT" -#~ msgstr "pou¾ije výstupní formát PØÍP" +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" +msgstr "Podívejte se na define-music-types.scm pro podporovaná opakování" -#~ msgid "prepend DIR to dependencies" -#~ msgstr "pøidává ADRESÁØ do závislostí" +#: translation-functions.scm:358 +#, scheme-format +msgid "Negative fret for pitch ~a on string ~a" +msgstr "Záporný pražec pro výšku tónu ~a na struně ~a" -#~ msgid "inhibit file output naming and exporting" -#~ msgstr "zakazuje pojmenovávání a export souborù" +#: translation-functions.scm:409 +#, scheme-format +msgid "No open string for pitch ~a" +msgstr "Žádná prázdná struna pro výšku tónu ~a" -#~ msgid "" -#~ "LilyPond is a music typesetter. It produces beautiful sheet music\n" -#~ "using a high level description file as input. LilyPond is part of \n" -#~ "the GNU Project.\n" -#~ msgstr "" -#~ "LilyPond je program pro sazbu hudby. Vytváøí krásnou archovou hudbu\n" -#~ "za pou¾ití vysokoúrovòového popisovacího souboru jako vstupu.\n" -#~ "LilyPond je souèástí projektu GNU.\n" +#: translation-functions.scm:424 translation-functions.scm:436 +#, scheme-format +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +msgstr "Požadovaná struna pro výšku tónu vyžaduje záporný pražec: struna ~a výška tónu ~a" -#~ msgid "GNU LilyPond -- The music typesetter" -#~ msgstr "GNU LilyPond -- Sazeè hudby" +#: translation-functions.scm:427 +msgid "Ignoring string request and recalculating." +msgstr "Požadavek na strunu se přehlíží a počítá se znovu." -#, fuzzy -#~ msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4" -#~ msgstr "" -#~ "Mensural_ligature: tlou¹»ka není definována pro flexu %d; pøedpokládám 1.4" +#: translation-functions.scm:439 +msgid "Ignoring note in tablature." +msgstr "Nota v tabulatuře se přehlíží." -#, fuzzy -#~ msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0" -#~ msgstr "" -#~ "Mensural_ligature: rozdíl tónù (delta-pitch) není definována pro flexu %" -#~ "d; pøedpokládám 0" +#: translation-functions.scm:462 +#, scheme-format +msgid "No string for pitch ~a (given frets ~a)" +msgstr "Žádná struna pro výšku tónu ~a (zadán pražec ~a)" -#, fuzzy -#~ msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0" -#~ msgstr "" -#~ "Mensural_ligature: ¹íøka flexy (flexa-width) není definována pro flexu %" -#~ "d; pøedpokládám 2.0" +#: translation-functions.scm:567 +#, scheme-format +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" +msgstr "" +"Žádný popisek pro pražec ~a (na struně ~a);\n" +"poskytnut pouze popisek pro pražec ~a " -#~ msgid "silly duration" -#~ msgstr "podivná délka" +#: ps-to-png.scm:70 +#, scheme-format +msgid "~a exited with status: ~S" +msgstr "~a skončil s návratovou hodnotou: ~S" -#~ msgid "paper output to `%s'..." -#~ msgstr "tiskový výstup do `%s'..." +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" +msgstr "Nenalezena žádná osnova v \\score markup, má nějaký blok \\layout?" -#~ msgid "Outputting Score, defined at: " -#~ msgstr "Vypisuji partituru, definovanou v: " +#: define-markup-commands.scm:2614 +#, scheme-format +msgid "Cannot find glyph ~a" +msgstr "Nelze nalézt obrázek ~a" -#~ msgid "I'm one myself: `%s'" -#~ msgstr "Jsem pouze jediný" +#: define-markup-commands.scm:3040 +#, scheme-format +msgid "no brace found for point size ~S " +msgstr "Nenalezeny žádné závorky ve velikosti ~S pt " -#~ msgid "none of these in my family: `%s'" -#~ msgstr "¾ádný z tìchto neznám" +#: define-markup-commands.scm:3041 +#, scheme-format +msgid "defaulting to ~S pt" +msgstr "Nastavuje se výchozí ~S pt" -#~ msgid "from musical definition: %s" -#~ msgstr "z hudební definice: %s" +#: define-markup-commands.scm:3194 +#, scheme-format +msgid "not a valid duration string: ~a" +msgstr "Není platným řetězcem doby trvání: ~a" -#~ msgid "cannot find start of phrasing slur" -#~ msgstr "nelze nalézt zaèátek frázovacího legata" +#: documentation-lib.scm:59 +#, scheme-format +msgid "Processing ~S..." +msgstr "Zpracovává se ~S..." -#, fuzzy -#~ msgid "unterminated pedal bracket" -#~ msgstr "neuzavøená pedálová závorka" +#: documentation-lib.scm:176 +#, scheme-format +msgid "Writing ~S..." +msgstr "Zapisuje se ~S..." -#~ msgid "Where SYMBOL VAL pair is any of:" -#~ msgstr "Kde je dvojice SYMBOL HODN jedna z:" +#: documentation-lib.scm:188 +#, scheme-format +msgid "cannot find description for property `~S' (~S)" +msgstr "Nelze nalézt popis vlastnosti `~S' (~S)" -#~ msgid "unbound spanner `%s'" -#~ msgstr "nepøichycené pøeklenutí `%s'" +#: documentation-lib.scm:209 +#, scheme-format +msgid "cannot find description for property ~S (~S)" +msgstr "Nelze nalézt popis vlastnosti ~S (~S)" -#~ msgid "#" -#~ msgstr "#" +#: ly-syntax-constructors.scm:66 +#, scheme-format +msgid "~a function cannot return ~a" +msgstr "~a funkce nemůže vrátit ~a" -#~ msgid "staff symbol: indentation yields beyond end of line" -#~ msgstr "Symbol osnovy: odsazení vyná¹í za konec øádku" +#: ly-syntax-constructors.scm:75 +#, scheme-format +msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgstr "Nesprávný typ pro argument ~a. očekáváno ~a, nalezeno ~s" -#~ msgid "Error syncing file (disk full?)" -#~ msgstr "Chyba pøi synchronizaci souboru (disk je plný?)" +#: ly-syntax-constructors.scm:188 +#, scheme-format +msgid "Invalid property operation ~a" +msgstr "Neplatná operace vlastnosti ~a" -#~ msgid "No ties were created!" -#~ msgstr "Nebyly vyvoøeny ¾ádné ligatury!" +#~ msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" +#~ msgstr "setbeatGrouping. Použít baseMoment a beatStructure.\n" -#~ msgid "Already contains: `%s'" -#~ msgstr "Ji¾ obsahuje: `%s'" +#~ msgid "success: %s" +#~ msgstr "Úspěch: %s" -#~ msgid "Not adding translator: `%s'" -#~ msgstr "Nepøidávám pøekladaè: `%s'" +#~ msgid "Infinity or NaN encountered" +#~ msgstr "Nalezena nekonečnost nebo NaN" -#, fuzzy -#~ msgid "Vaticana_ligature:thickness undefined; assuming 1.4" -#~ msgstr "" -#~ "Mensural_ligature: tlou¹»ka není definována pro flexu %d; pøedpokládám 1.4" +#~ msgid "Vaticana_ligature: zero join (delta_pitch == 0)" +#~ msgstr "Vaticana_ligature: nic není spojeno (delta_pitch == 0)" -#, fuzzy -#~ msgid "First argument must be a procedure taking one argument" -#~ msgstr "První argument musí být procedura s jedním parametrem" +#~ msgid "No spring between column %d and next one" +#~ msgstr "Chybí pružný výplněk mezi sloupcem %d a následujícím" -#~ msgid "Expecting musical-pitch value" -#~ msgstr "Oèekávána hodnota musical-pitch" +#~ msgid "Sending non-event to context" +#~ msgstr "Posílá se ne-událost k souvislosti" -#~ msgid "Must have duration object" -#~ msgstr "Musí mít objekt délka" +#~ msgid "Invalid CreateContext event: Cannot create %s context" +#~ msgstr "Neplatná událost CreateContext: Nepodařilo se vytvořit souvislost %s " -#~ msgid "Trying to salvage the rest." -#~ msgstr "Pokou¹ím se zachránit zbytek." +#~ msgid "infinity or NaN encountered while converting Real number" +#~ msgstr "Nalezena nekonečnost nebo NaN při převodu skutečných čísel" -#~ msgid "Fetch and rebuild from latest source package" -#~ msgstr "Stáhuje a znovu sestavuje z nejnovìj¹ích zdrojových textù" +#~ msgid "setting to zero" +#~ msgstr "Nastavuje se na nulu" -#~ msgid "unpack and build in DIR [%s]" -#~ msgstr "rozbaluje a sestavuje v ADRESÁØi [%s]" +#~ msgid "No spacing entry from %s to `%s'" +#~ msgstr "Žádný záznam pro rozestup od %s do `%s'" -#~ msgid "execute COMMAND, subtitute:" -#~ msgstr "vykonává PØÍKAZ, nahraï:" +#~ msgid "error at EOF: %s" +#~ msgstr "Chyba na konci souboru (EOF): %s" -#~ msgid "%b: build root" -#~ msgstr "%b: sestav koøenový adresáø" +#~ msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" +#~ msgstr "Kruhová závislost: nalezeno běžící zpracování pro #'%s (%s)" -#~ msgid "%n: package name" -#~ msgstr "%n: jméno balíèku" +#~ msgid "Mensural_ligature: unexpected case fall-through" +#~ msgstr "Mensural_ligature: neznámý neúspěch případu" -#~ msgid "%r: release directory" -#~ msgstr "%r: adresáø pro výstupní verzi" +#~ msgid "Mensural_ligature: (join_right == 0)" +#~ msgstr "Mensural_ligature: (join_right == 0)" -#~ msgid "%t: tarball" -#~ msgstr "%t: tarball (tar.gz)" +#~ msgid "braces do not match" +#~ msgstr "Závorky nesouhlasí" -#~ msgid "%v: package version" -#~ msgstr "%v: verze balíèku" +#~ msgid "second argument must be pitch list" +#~ msgstr "Druhý argument musí být seznam výšek tónů" -#~ msgid "keep all output, and name the directory %s" -#~ msgstr "ponechá v¹echny výstupy a pojmenuje adresáø %s" +#~ msgid "warning:" +#~ msgstr "Varování:" -#~ msgid "upon failure notify EMAIL[,EMAIL]" -#~ msgstr "pøi chybì informujte EMAIL[,EMAIL]" +#~ msgid "Bar check failed. Expect to be at ~a, instead at ~a" +#~ msgstr "Ověření taktu selhalo. Očekáváno, že bude u ~a, místo toho u ~a" -#~ msgid "remove previous build" -#~ msgstr "odstraní soubory z pøedchozího sestavení" +#~ msgid "Music head function must return Music object" +#~ msgstr "Funkce hudební hlavičky musí vrátit hudební předmět" -#~ msgid "fetch and build URL [%s]" -#~ msgstr "stáhne a sestaví URL [%s]" +#~ msgid "Tuplet brackets displaying both note durations are not implemented, using default" +#~ msgstr "Triolové (kvartolové, ...) závorky zobrazující obě doby trvání noty nejsou správně provedeny, používá se výchozí nastavení" -#~ msgid "latest is: %s" -#~ msgstr "nejnovìj¹í je: %s" +#~ msgid "Encountered file created by Noteworthy Composer's nwc2xml, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" +#~ msgstr "Narazilo se na soubor vytvořený Noteworthy Composer's nwc2xml, který obsahuje nesprávné údaje o trámcích. VÅ¡echny údaje o trámcích v souboru MusicXML se budou přehlížet" -#~ msgid "Fetching `%s'..." -#~ msgstr "Stahuje se `%s'..." +#~ msgid "use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly" +#~ msgstr "Použít jiný soubor pro jazyk 'JAZYK.ly' a odpovídající označení pro výšky not, např. 'deutsch' for deutsch.ly" -#~ msgid "Building `%s'..." -#~ msgstr "Sestavuje se `%s'..." +#~ msgid "tried to get a translation for something that is no child of mine" +#~ msgstr "Pokus o nalezení překladu pro něco, co není mým potomkem" -#~ msgid "invalid subtraction: not part of chord: %s" -#~ msgstr "neplatný odeèet: není souèástí akordu: %s" +#~ msgid "no feasible beam position" +#~ msgstr "Žádná proveditelná poloha pro trámec" -#~ msgid "invalid inversion pitch: not part of chord: %s" -#~ msgstr "neplatný inverzní tón: není souèástí akordu: %s" +#~ msgid "expect 2 elements for chord tremolo, found %d" +#~ msgstr "Očekávány 2 prvky pro akordové tremolo, nalezeny %d" -#~ msgid "This was the other key definition." -#~ msgstr "Toto byla jiná definice tóniny." +#~ msgid "program has no such type: `%s'" +#~ msgstr "Program nemá takový typ: `%s'" -#~ msgid ", at " -#~ msgstr ", v " +#~ msgid "Rebuilding FontConfig cache %s, this may take a while..." +#~ msgstr "Obnovuje se vyrovnávací paměť písem (FontConfig) %s, což může nějakou dobu trvat..." -#~ msgid "Pitch arguments out of range" -#~ msgstr "Vý¹kové argumenty jsou mimo rozsah" +#~ msgid "deprecated function called: %s" +#~ msgstr "Vyvolána zastaralá funkce: %s" -#~ msgid "(left_head == 0)" -#~ msgstr "(left_head == 0)" +#~ msgid "staff-span event has no direction" +#~ msgstr "Událost odstupu osnovy nemá žádný směr" -#~ msgid "(right_head == 0)" -#~ msgstr "(right_head == 0)" +#~ msgid "cannot find start of trill spanner" +#~ msgstr "Nelze nalézt začátek závorky trylku" -#~ msgid "undefined right_head" -#~ msgstr "nedefinované right_head" +#~ msgid "already have a trill spanner" +#~ msgstr "Již je činná závorka trylku" -#~ msgid "porrectus style undefined; using mensural" -#~ msgstr "syyl porrectu není definován; pou¾ívám mensural" +#~ msgid "cannot convert to ~S" +#~ msgstr "Nelze převést na ~S" -#, fuzzy -#~ msgid "Putting slur over rest." -#~ msgstr "Dávám ligaturu pøes pomlku." +#~ msgid "Can't fit systems on page -- ignoring between-system-padding" +#~ msgstr "Osnovy se nevejdou na stranu -- přehlíží se mezi-odstup-osnovy" -#~ msgid "Slur over rest?" -#~ msgstr "Ligaturu pøes pomlku?" +#~ msgid "expecting 2 elements for chord tremolo, found ~a" +#~ msgstr "Očekávány 2 prvky pro akordové tremolo, nalezeno ~a" -#~ msgid "Cannot specify direction for this request" -#~ msgstr "Nelze urèit smìr pro tento po¾adavek" +#~ msgid "utf-8-string encountered in PS backend" +#~ msgstr "v PS zadní části nalezen řetězec znaků utf-8" diff --git a/po/de.po b/po/de.po index 626dc9963f..b70463f054 100644 --- a/po/de.po +++ b/po/de.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the lilypond package. # Erwin Dieterich , 1999 # Roland Stigge , 2003, 2004, 2005, 2006, 2007 -# Till Paala , 2007, 2008, 2009, 2010, 2011. +# Till Paala , 2007, 2008, 2009, 2010, 2011, 2012. # msgid "" msgstr "" -"Project-Id-Version: lilypond 2.13.53\n" +"Project-Id-Version: lilypond 2.15.95\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" -"POT-Creation-Date: 2011-03-02 10:34+0100\n" -"PO-Revision-Date: 2011-03-03 22:19+0200\n" +"POT-Creation-Date: 2012-08-11 14:29+0200\n" +"PO-Revision-Date: 2012-08-15 13:06+0300\n" "Last-Translator: Till Paala \n" "Language-Team: German \n" "Language: de\n" @@ -18,64 +18,121 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: fontextract.py:25 +#: book_base.py:26 #, python-format -msgid "Scanning %s" -msgstr "Warnung: %s" +msgid "file not found: %s" +msgstr "Datei `%s' nicht gefunden" -#: fontextract.py:70 +#: book_base.py:164 +msgid "Output function not implemented" +msgstr "Ausgabefunktion nicht implementiert" + +#: book_latex.py:170 +msgid "cannot find \\begin{document} in LaTeX document" +msgstr "\\begin{document} im LaTeX-Dokument kann nicht gefunden werden" + +#: book_latex.py:188 #, python-format -msgid "Extracted %s" -msgstr "%s ausgepackt" +msgid "Running `%s' on file `%s' to detect default page settings.\n" +msgstr "»%s« für Datei »%s« aufrufen, um Standardseiteneinstellungen zu ermitteln.\n" -#: fontextract.py:85 +#: book_latex.py:209 book_texinfo.py:228 +msgid "Unable to auto-detect default settings:\n" +msgstr "Kann Standardeinstellungen nicht automatisch bestimmen:\n" + +#: book_latex.py:221 book_texinfo.py:240 #, python-format -msgid "Writing fonts to %s" -msgstr "Schreiben der Schriftarten nach %s" +msgid "" +"Unable to auto-detect default settings:\n" +"%s" +msgstr "" +"Kann Standardeinstellungen nicht automatisch bestimmen:\n" +"%s" -#: book_snippets.py:519 +#: book_snippets.py:409 #, python-format msgid "deprecated ly-option used: %s=%s" msgstr "veraltete ly-option verwendet: %s=%s" -#: book_snippets.py:521 +#: book_snippets.py:411 #, python-format msgid "compatibility mode translation: %s=%s" msgstr "Übersetzung im Kompatibilitätsmodus: %s=%s" -#: book_snippets.py:524 +#: book_snippets.py:414 #, python-format msgid "deprecated ly-option used: %s" msgstr "veraltete ly-option verwendet: %s" -#: book_snippets.py:526 +#: book_snippets.py:416 #, python-format msgid "compatibility mode translation: %s" msgstr "Übersetzung im Kompatibilitätsmodus: %s" -#: book_snippets.py:544 +#: book_snippets.py:533 #, python-format msgid "ignoring unknown ly option: %s" msgstr "unbekannte Option ignoriert: %s" -#: book_snippets.py:736 +#: book_snippets.py:624 +#, python-format +msgid "Missing files: %s" +msgstr "Fehlende Dateien: %s" + +#: book_snippets.py:654 #, python-format -msgid "Opening filter `%s'\n" -msgstr "Filter »%s« wird geöffnet\n" +msgid "Could not overwrite file %s" +msgstr "Die Datei kann nicht überschrieben werden: »%s«" -#: book_snippets.py:756 +#: book_snippets.py:741 +#, python-format +msgid "Running through filter `%s'" +msgstr "Durch Filter »%s« schicken" + +#: book_snippets.py:761 #, python-format msgid "`%s' failed (%d)" msgstr "»%s« gescheitert (%d)" -#: book_snippets.py:757 +#: book_snippets.py:762 msgid "The error log is as follows:" msgstr "Das Fehlerprotokoll lautet wie folgt:" +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "MusicXML-Datei »%s« konvertieren...\n" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" +"%s: Doppelte Dateibezeichnung, aber unterschiedlicher Inhalt der Originaldatei,\n" +"gebe Diff zur existierenden Datei aus." + +#: book_snippets.py:922 +#, python-format +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." +msgstr "" +"%s: Doppelte Dateibezeichnung, aber unterschiedlicher Inhalt der konvertierten lilypond-Datei,\n" +"gebe Diff zur existierenden Datei aus." + +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "texi2pdf für die Datei %s aufrufen, um Standardseiteneinstellungen zu ermitteln.\n" + #: convertrules.py:12 #, python-format -msgid "Not smart enough to convert %s" -msgstr "%s kann nicht umgewandelt werden" +msgid "Not smart enough to convert %s." +msgstr "%s kann nicht umgewandelt werden." #: convertrules.py:13 msgid "Please refer to the manual for details, and update manually." @@ -86,111 +143,115 @@ msgstr "Für Details Benutzerhandbuch lesen und manuell aktualisieren." msgid "%s has been replaced by %s" msgstr "%s wurde durch %s ersetzt" -#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66 -#: input.cc:109 +#: convertrules.py:24 lilylib.py:131 warn.cc:223 #, c-format, python-format msgid "warning: %s" msgstr "Warnung: %s" -#: convertrules.py:49 convertrules.py:99 +#: convertrules.py:49 convertrules.py:94 msgid "\\header { key = concat + with + operator }" msgstr "\\header { Schlüssel = concat + mit + Operator }" -#: convertrules.py:58 +#: convertrules.py:56 #, python-format msgid "deprecated %s" msgstr "veraltet %s" -#: convertrules.py:70 +#: convertrules.py:65 msgid "deprecated \\textstyle, new \\key syntax" msgstr "verworfener \\textstyle, neue \\key Syntax" -#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084 -#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862 +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 msgid "bump version for release" msgstr "aktuelle Version ausgeben" -#: convertrules.py:103 +#: convertrules.py:97 msgid "new \\header format" msgstr "neues \\header Format" -#: convertrules.py:132 +#: convertrules.py:124 msgid "\\translator syntax" msgstr "\\translator Syntax" -#: convertrules.py:184 +#: convertrules.py:175 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" msgstr "\\repeat NUM Alternative Noten -> \\repeat FOLDSTR Alternative Noten" -#: convertrules.py:216 convertrules.py:699 convertrules.py:1383 -#: convertrules.py:2378 +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 #, python-format msgid "deprecate %s" msgstr "lehne %s ab" -#: convertrules.py:290 +#: convertrules.py:279 #, python-format msgid "deprecate %s " msgstr "lehne %s ab " -#: convertrules.py:319 +#: convertrules.py:305 msgid "new \\notenames format" msgstr "neues \\notenames" -#: convertrules.py:337 +#: convertrules.py:321 msgid "new tremolo format" msgstr "neues Tremolo-Format" -#: convertrules.py:342 +#: convertrules.py:325 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" msgstr "Staff_margin_engraver veraltet, benutze Instrument_name_engraver" -#: convertrules.py:395 -msgid "change property definiton case (eg. onevoice -> oneVoice)" -msgstr "ändere Großschreibung von Eigenschaftsdefinition (z. B. onevoice -> oneVoice)" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" +msgstr "ändere Großschreibung von Eigenschaft (z. B. onevoice -> oneVoice)" -#: convertrules.py:457 +#: convertrules.py:437 msgid "new \\textscript markup text" msgstr "neue \\textscript Beschriftung" -#: convertrules.py:530 +#: convertrules.py:509 #, python-format msgid "identifier names: %s" msgstr "Bezeichnernamen: »%s«" -#: convertrules.py:569 +#: convertrules.py:548 msgid "point-and-click argument changed to procedure." msgstr "point-and-click-Argument zu Ablauf verändert" -#: convertrules.py:611 +#: convertrules.py:590 msgid "semicolons removed" msgstr "Semikolons entfernt" #. 40 ? -#: convertrules.py:654 +#: convertrules.py:633 #, python-format msgid "%s property names" msgstr "%s Eigenschaftsbezeichnungen" -#: convertrules.py:724 +#: convertrules.py:703 msgid "automaticMelismata turned on by default" msgstr "automaticMelismata ist standardmäßig aktiviert" -#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942 -#: convertrules.py:2189 +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "automaticMelismata ist standardmäßig aktiviert seit 1.5.67" + +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format msgid "remove %s" msgstr "»%s« wird gelöscht" -#: convertrules.py:1001 convertrules.py:1005 +#: convertrules.py:977 convertrules.py:980 msgid "cluster syntax" msgstr "Syntax des Clusters" -#: convertrules.py:1014 +#: convertrules.py:987 msgid "new Pedal style syntax" msgstr "neue Syntax für den Pedal-Stil" -#: convertrules.py:1273 +#: convertrules.py:1246 msgid "" "New relative mode,\n" "Postfix articulations, new text markup syntax, new chord syntax." @@ -198,28 +259,28 @@ msgstr "" "Neuer relativer Modus,\n" "Artikulationen nachgestellt, neue Textbeschriftungssyntax, neue Akkordsyntax." -#: convertrules.py:1286 +#: convertrules.py:1259 msgid "Remove - before articulation" msgstr "- vor Artikulation entfernen" -#: convertrules.py:1324 +#: convertrules.py:1294 #, python-format msgid "%s misspelling" msgstr "%s falsch geschrieben" -#: convertrules.py:1346 +#: convertrules.py:1313 msgid "Swap < > and << >>" msgstr "< > und << >> austauschen" -#: convertrules.py:1349 +#: convertrules.py:1316 msgid "attempting automatic \\figures conversion. Check results!" msgstr "versuche, \\figures automatisch zu konvertieren. Prüfen Sie das Ergebnis!" -#: convertrules.py:1400 +#: convertrules.py:1362 msgid "Use Scheme code to construct arbitrary note events." msgstr "Benutze Scheme-Code, um beliebige Notenereignisse zu erstellen." -#: convertrules.py:1407 +#: convertrules.py:1369 msgid "" "use symbolic constants for alterations,\n" "remove \\outputproperty, move ly:verbose into ly:get-option" @@ -227,7 +288,7 @@ msgstr "" "verwende symbolische Konstanten für Alterationen,\n" "entferne \\outputproperty, verschiebe ly:verbose nach ly:get-option" -#: convertrules.py:1432 +#: convertrules.py:1394 #, python-format msgid "" "\\outputproperty found,\n" @@ -243,7 +304,7 @@ msgstr "" " \\applyoutput #(outputproperty-compatibility %s '%s )\n" "als Ersetzungstext" -#: convertrules.py:1446 +#: convertrules.py:1406 msgid "" "The alteration field of Scheme pitches was multiplied by 2\n" "to support quarter tone accidentals. You must update the following constructs manually:\n" @@ -258,15 +319,15 @@ msgstr "" "* Aufrufe von ly:make-pitch und ly:pitch-alteration\n" "* keySignature-Einstellung erstellt mit \\property\n" -#: convertrules.py:1493 +#: convertrules.py:1449 msgid "removal of automaticMelismata; use melismaBusyProperties instead." msgstr "Entfernen von automaticMelismata; benutzen Sie melismaBusyProperties anstatt dessen" -#: convertrules.py:1600 +#: convertrules.py:1556 msgid "\\partcombine syntax change to \\newpartcombine" msgstr "\\partcombine-Syntax zu \\newpartcombine verändern" -#: convertrules.py:1628 +#: convertrules.py:1581 msgid "" "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" "Harmonic notes. Thread context removed. Lyrics context removed." @@ -274,11 +335,11 @@ msgstr "" "Schlagzeugnotation verändert, entferne \\chordmodifiers, \\notenames.\n" "Flageolett-Noten. Thread-Kontext entfernt. Liedtext-Kontext entfernt." -#: convertrules.py:1632 +#: convertrules.py:1585 msgid "Drums found. Enclose drum notes in \\drummode" msgstr "Schlagzeug gefunden. Schlagzeugnoten in \\drummode-Umgebung einbinden" -#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format msgid "" "\n" @@ -287,32 +348,33 @@ msgstr "" "\n" "%s gefunden. Testen Sie die Datei manuell!\n" -#: convertrules.py:1643 +#: convertrules.py:1596 msgid "Drum notation" msgstr "Schlagzeugnotation" -#: convertrules.py:1702 +#: convertrules.py:1655 msgid "new syntax for property settings:" msgstr "neue Syntax für Eigenschaftseinstellungen:" -#: convertrules.py:1728 +#: convertrules.py:1681 msgid "Property setting syntax in \\translator{ }" msgstr "Eigenschaft setzt Syntax in \\translator{ }" -#: convertrules.py:1767 +#: convertrules.py:1720 msgid "Scheme grob function renaming" msgstr "umbenennen der Scheme-grob-Funktion" -#: convertrules.py:1780 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 #, python-format -msgid "use %s" -msgstr "benutze %s" +msgid "Use %s\n" +msgstr "Benutze %s\n" -#: convertrules.py:1797 +#: convertrules.py:1747 msgid "More Scheme function renaming" msgstr "benenne weitere Scheme-Funktionen um" -#: convertrules.py:1924 +#: convertrules.py:1871 msgid "" "Page layout has been changed, using paper size and margins.\n" "textheight is no longer used.\n" @@ -320,7 +382,7 @@ msgstr "" "Das Seitenlayout hat sich geändert, benutzen Sie paper size (Papiergröße) und margins (Ränder).\n" "textheight wird nicht mehr benutzt.\n" -#: convertrules.py:2010 +#: convertrules.py:1957 msgid "" "\\foo -> \\foomode (for chords, notes, etc.)\n" "fold \\new FooContext \\foomode into \\foo." @@ -328,7 +390,7 @@ msgstr "" "\\foo -> \\foomode (für Akkorde, Noten usw.)\n" "Komprimiere \\new FooContext \\foomode nach \\foo." -#: convertrules.py:2048 +#: convertrules.py:1995 msgid "" "staff size should be changed at top-level\n" "with\n" @@ -342,40 +404,40 @@ msgstr "" " #(set-global-staff-size )\n" "\n" -#: convertrules.py:2068 +#: convertrules.py:2015 msgid "regularize other identifiers" msgstr "normiere andere Bezeichner" -#: convertrules.py:2136 +#: convertrules.py:2083 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" msgstr "\\encoding: Konvertiere latin1 zu utf8. Entferne ly:point-and-click" -#: convertrules.py:2149 +#: convertrules.py:2094 msgid "LilyPond source must be UTF-8" msgstr "LilyPond-Quelle muss UTF-8 sein" -#: convertrules.py:2152 +#: convertrules.py:2097 msgid "Try the texstrings backend" msgstr "Das texstrings-Backend probieren" -#: convertrules.py:2155 +#: convertrules.py:2100 #, python-format msgid "Do something like: %s" msgstr "Folgendes versuchen: %s" -#: convertrules.py:2158 +#: convertrules.py:2103 msgid "Or save as UTF-8 in your editor" msgstr "Oder als UTF-8 im Editor sichern" -#: convertrules.py:2212 +#: convertrules.py:2153 msgid "warn about auto beam settings" msgstr "Warnung zu den Einstellungen der automatischen Balken" -#: convertrules.py:2217 +#: convertrules.py:2157 msgid "auto beam settings" msgstr "Einstellungen der automatischen Balken" -#: convertrules.py:2219 +#: convertrules.py:2158 msgid "" "\n" "Auto beam settings must now specify each interesting moment in a measure\n" @@ -386,41 +448,41 @@ msgstr "" "im Takt, die in Frage kommt, explizit gesetzt werden; 1/4 wird nicht mehr\n" "multipliziert, um auch die Positionen von 1/2 und 3/4 zu definieren.\n" -#: convertrules.py:2333 +#: convertrules.py:2271 msgid "verticalAlignmentChildCallback has been deprecated" msgstr "verticalAlignmentChildCallback ist veraltet" -#: convertrules.py:2337 +#: convertrules.py:2276 msgid "Remove callbacks property, deprecate XY-extent-callback." msgstr "Entferne callbacks-Eigenschaft, verwerfe XY-extent-callback." -#: convertrules.py:2358 +#: convertrules.py:2297 msgid "Use grob closures iso. XY-offset-callbacks." msgstr "Benutze grob-Schluss anstelle von XY-offset-callback." -#: convertrules.py:2420 +#: convertrules.py:2359 msgid "foobar -> foo-bar for \\paper, \\layout" msgstr "foobar -> foo-bar für \\paper, \\layout" -#: convertrules.py:2530 +#: convertrules.py:2469 msgid "deprecate \\tempo in \\midi" msgstr "verwerfe \\tempo in \\midi" -#: convertrules.py:2583 +#: convertrules.py:2522 msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "" "verwerfe cautionary-style für warndende Versetzungszeichen.\n" "Benutze AccidentalCautionary-Eigenschaften" -#: convertrules.py:2596 +#: convertrules.py:2535 msgid "Rename accidental glyphs, use glyph-name-alist." msgstr "Umbenennen der Versetzungszeichen-Glyphen, benutze glyph-name-alist." -#: convertrules.py:2651 -msgid "edge-text settings for TextSpanner." -msgstr "edge-text (Randtext)-Einstellungen für TextSpanner." +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" +msgstr "edge-text (Randtext)-Einstellungen für TextSpanner" -#: convertrules.py:2652 +#: convertrules.py:2591 #, python-format msgid "" "Use\n" @@ -431,35 +493,35 @@ msgstr "" "\n" "%s" -#: convertrules.py:2685 +#: convertrules.py:2624 msgid "Use the `alignment-offsets' sub-property of\n" msgstr "Die Untereigenschaft `alignment-offsets' von\n" -#: convertrules.py:2686 +#: convertrules.py:2625 msgid "NonMusicalPaperColumn #'line-break-system-details\n" msgstr "NonMusicalPaperColumn #'line-break-system-details benutzen,\n" -#: convertrules.py:2687 +#: convertrules.py:2626 msgid "to set fixed distances between staves.\n" msgstr "um feste Abstände zwischen Systemen zu setzen.\n" -#: convertrules.py:2699 +#: convertrules.py:2638 msgid "Use #'style not #'dash-fraction to select solid/dashed lines." msgstr "Benutze #'style anstelle von #'dash-fraction, um durchgehende/gestrichelte Linien zu benutzen." -#: convertrules.py:2705 -msgid "all settings related to dashed lines.\n" -msgstr "alle Einstellungen zu gestrichelten Linien.\n" +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "alle Einstellungen zu gestrichelten Linien" -#: convertrules.py:2706 +#: convertrules.py:2645 msgid "Use \\override ... #'style = #'line for solid lines and\n" msgstr "Benutze \\override ... #'style = #'line für durchgehende Linien und\n" -#: convertrules.py:2707 +#: convertrules.py:2646 msgid "\t\\override ... #'style = #'dashed-line for dashed lines." msgstr "\t\\override ... #'style #'dashed-line für gestrichelte Linien." -#: convertrules.py:2743 +#: convertrules.py:2682 msgid "" "metronomeMarkFormatter uses text markup as second argument,\n" "fret diagram properties moved to fret-diagram-details." @@ -467,11 +529,11 @@ msgstr "" "metronomeMarkFormatter benutzt Textbeschriftung as zweites Argument,\n" "Bund-Diagramm-Eigenschaften sind nach fret-diagram-details verschoben." -#: convertrules.py:2748 +#: convertrules.py:2688 msgid "metronomeMarkFormatter got an additional text argument.\n" msgstr "metronomeMarkFormatter hat ein zusätzliches Textargument bekommen.\n" -#: convertrules.py:2749 +#: convertrules.py:2689 #, python-format msgid "" "The function assigned to Score.metronomeMarkFunction now uses the signature\n" @@ -480,43 +542,48 @@ msgstr "" "Die Funktion, die Score.metronomeMarkFunction zugeschrieben ist, benutzt jetzt\n" "die Signatur %s" -#: convertrules.py:2812 -msgid "\\put-adjacent argument order.\n" -msgstr "\\put-adjacent Argumentreihenfolge.\n" +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "%s in Bunddiagrammeigenschaften" + +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" +msgstr "\\put-adjacent Argumentreihenfolge" -#: convertrules.py:2813 +#: convertrules.py:2752 msgid "Axis and direction now come before markups:\n" msgstr "Achse und Richtung jetzt vor die Beschriftung setzen:\n" -#: convertrules.py:2814 +#: convertrules.py:2753 msgid "\\put-adjacent axis dir markup markup." msgstr "\\put-adjacent Achse Richtung Beschriftung Beschriftung." -#: convertrules.py:2845 -msgid "re-definition of InnerStaffGroup.\n" -msgstr "Neudefinition von InnerStaffGroup.\n" +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" +msgstr "Neudefinition von InnerStaffGroup" -#: convertrules.py:2851 -msgid "re-definition of InnerChoirStaff.\n" -msgstr "Neudefinition von InnerChoirStaff.\n" +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" +msgstr "Neudefinition von InnerChoirStaff" -#: convertrules.py:2861 +#: convertrules.py:2799 msgid "Syntax changes for \\addChordShape and \\chord-shape" msgstr "Syntax-Änderungen für \\addChordShape und \\chord-shape" -#: convertrules.py:2866 +#: convertrules.py:2804 msgid "stringTuning must be added to addChordShape call.\n" msgstr "stringTuning·muss zu einem·addChordShape -Aufruf hinzugefügt werden.\n" -#: convertrules.py:2872 +#: convertrules.py:2809 msgid "stringTuning must be added to chord-shape call.\n" msgstr "stringTuning muss zu dem·chord-shape -Aufruf hinzugefügt werden.\n" -#: convertrules.py:2879 +#: convertrules.py:2815 msgid "Remove oldaddlyrics" msgstr "oldaddlyrics entfernen" -#: convertrules.py:2883 +#: convertrules.py:2819 msgid "" "oldaddlyrics is no longer supported. \n" " Use addlyrics or lyrsicsto instead.\n" @@ -524,7 +591,7 @@ msgstr "" "oldaddlyrics wird nicht mehr unterstützt.\n" " Benutzen Sie anstatt dessen addlyrics oder lyricsto.\n" -#: convertrules.py:2889 +#: convertrules.py:2825 msgid "" "keySignature property not reversed any more\n" "MIDI 47: orchestral strings -> orchestral harp" @@ -532,11 +599,11 @@ msgstr "" "keySignature-Eigenschaft ist nicht mehr umgedreht\n" "MIDI 47: Orchester-Streicher -> Orchester-Harfe" -#: convertrules.py:2894 +#: convertrules.py:2830 msgid "The alist for Staff.keySignature is no longer in reversed order.\n" msgstr "Die Aliste für Staff.keySignature ist nicht mehr in umgekehrter Reihenfolge.\n" -#: convertrules.py:2900 +#: convertrules.py:2836 msgid "" "\\bar \".\" now produces a thick barline\n" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" @@ -546,15 +613,15 @@ msgstr "" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" "Strichelunsparameter für Binde- und Legatobögen sind jetzt in dash-definition" -#: convertrules.py:2906 +#: convertrules.py:2842 msgid "\\bar \".\" now produces a thick barline.\n" msgstr "\\bar \".\" erstellt jetzt einen dicken Taktstrich.\n" -#: convertrules.py:2912 +#: convertrules.py:2848 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" msgstr "Strichelunsparameter für Binde- und Legatobögen sind jetzt in 'dash-details.\n" -#: convertrules.py:2917 +#: convertrules.py:2853 msgid "" "Autobeaming rules have changed. override-auto-beam-setting and\n" "revert-auto-beam-setting have been eliminated.\n" @@ -580,37 +647,27 @@ msgstr "" "Explizite Definition des Dynamikzeichenkontexts aus der `Piano centered dynamics'\n" "Vorlage ersetzt durch neuen `Dynamics'-Kontext." -#: convertrules.py:2931 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now overriden with \\overrideBeamSettings.\n" -msgstr "" -"override-auto-beam-setting.\n" -" Automatische Bebalkungseinstellungen werden jetzt mit \\overrideBeamSettings verändert.\n" +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" +msgstr " Automatische Bebalkungseinstellungen werden jetzt mit \\overrideBeamSettings verändert.\n" -#: convertrules.py:2936 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now reverted with \\revertBeamSettings.\n" -msgstr "" -"override-auto-beam-setting.\n" -" Automatische Bebalkungseinstellungen werden jetzt mit \\revertBeamSettings rückgängig gemacht.\n" +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" +msgstr " Automatische Bebalkungseinstellungen werden jetzt mit \\revertBeamSettings rückgängig gemacht.\n" -#: convertrules.py:2941 +#: convertrules.py:2878 msgid "" -"beatGrouping. \n" -" beatGrouping with a specified context must now be accomplished with\n" +" beatGrouping with a specified context must now be accomplished with\n" " \\overrideBeamSettings.\n" msgstr "" -"beatGrouping.\n" " beatGrouping mit einem angegebenen Kontext muss jetzt mit\n" " \\overrideBeamSettings vorgenommen werden.\n" -#: convertrules.py:2947 +#: convertrules.py:2884 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" msgstr "alignment-offsets wurde in alignment-distances geändert: Man muss jetzt die Abstände zwischen Systemen angeben und nicht die Verschiebung der Systeme.\n" -#: convertrules.py:2958 +#: convertrules.py:2895 msgid "" "Remove obsolete engravers/translators: Note_swallow_translator,\n" "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" @@ -622,23 +679,23 @@ msgstr "" "Swallow_performer und String_number_engraver.\n" "Neue vertikale Abstandsvariablen." -#: convertrules.py:2989 -msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" -msgstr "minimum-Y-extent; vertikale Positionierung hängt nicht mehr von Y-extent einer VerticalAxisGroup ab.\n" +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" +msgstr "Vertikale Positionierung hängt nicht mehr von Y-extent einer VerticalAxisGroup ab.\n" -#: convertrules.py:2995 +#: convertrules.py:2932 msgid "Unify fetaNumber and fetaDynamic encodings" msgstr "Kodierungen für fetaNumber und fetaDynamic vereinheitlichen" -#: convertrules.py:3000 +#: convertrules.py:2937 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" -#: convertrules.py:3011 +#: convertrules.py:2948 msgid "\\cresc etc. are now postfix operators" msgstr "\\cresc usw. werden jetzt der Note nachgestellt" -#: convertrules.py:3017 +#: convertrules.py:2960 msgid "" "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" @@ -646,27 +703,23 @@ msgstr "" "Entferne beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings und \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" -#: convertrules.py:3035 -msgid "\\overrideBeamSettings. Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" -msgstr "\\overrideBeamSettings. Benutze \\set beamExceptions oder \\overrideTimeSignatureSettings.\n" - -#: convertrules.py:3039 -msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" -msgstr "\\revertBeamSettings. Benutze \\set beamExceptions oder \\revertTimeSignatureSettings.\n" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" +msgstr "Benutze \\set beamExceptions oder \\overrideTimeSignatureSettings.\n" -#: convertrules.py:3043 -msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n" -msgstr "beamSettings. Benutze baseMoment, beatStructure und beamExceptions.\n" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "Benutze \\set beamExceptions oder \\revertTimeSignatureSettings.\n" -#: convertrules.py:3047 -msgid "beatLength. Use baseMoment and beatStructure.\n" -msgstr "beatLength. Benutze baseMoment und beatStructure.\n" +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" +msgstr "Benutze baseMoment, beatStructure und beamExceptions.\n" -#: convertrules.py:3051 -msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" -msgstr "setbeatGrouping. Benutze baseMoment und beatStructure.\n" +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" +msgstr "Benutze baseMoment und beatStructure.\n" -#: convertrules.py:3056 +#: convertrules.py:2999 msgid "" "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" "Deprecate negative dash-period for hidden lines: use #'style = #'none instead." @@ -674,11 +727,11 @@ msgstr "" "Holzbläser-Diagramme: Größe (size), Dicke (thickness) und graphic aus Argumentenliste nach Eigenschaften verschoben.\n" "Negatives dash-period für versteckte Linien ist veraltet: #'style = #'none anstellt dessen benutzen." -#: convertrules.py:3061 -msgid "woodwind-diagrams. Move size, thickness, and graphic to properties. Argument should be just the key list.\n" -msgstr "woodwind-diagrams. size, thickness und graphic in Eigenschaften verschoben. Argument darf nur die Liste der Schlüssel sein.\n" +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" +msgstr "Verschiebe size, thickness und graphic in die Eigenschaften. Argument darf nur die Liste der Schlüssel sein.\n" -#: convertrules.py:3069 +#: convertrules.py:3012 msgid "" "Rename vertical spacing variables.\n" "Add fretboard-table argument to savePredefinedFretboard." @@ -686,23 +739,23 @@ msgstr "" "Vertikale Abstandsvariablen umbenennen.\n" "fretboard-table-Argument hinzufügen, um PredefinedFretboard zu speichern." -#: convertrules.py:3087 +#: convertrules.py:3030 msgid "Rename vertical spacing grob properties." msgstr "Vertikale Abstands-Grob-Eigenschaften umbenennen." -#: convertrules.py:3103 +#: convertrules.py:3046 msgid "Remove \\paper variables head-separation and foot-separation." msgstr "\\paper-Variablen head-separation und foot-separation entfernen." -#: convertrules.py:3108 +#: convertrules.py:3050 msgid "Adjust settings for top-system-spacing instead.\n" msgstr "Anstelle dessen Einstellungen für top-system-spacing anpassen.\n" -#: convertrules.py:3113 +#: convertrules.py:3054 msgid "Adjust settings for last-bottom-spacing instead.\n" msgstr "Anstelle dessen Einstellungen für last-bottom-spacing anpassen.\n" -#: convertrules.py:3119 +#: convertrules.py:3060 msgid "" "Rename space to basic-distance in various spacing alists.\n" "Remove HarmonicParenthesesItem grob." @@ -710,19 +763,19 @@ msgstr "" "Umbennen von Abstand in basic-distance in verschiedenen Positionierungs-Alisten.\n" "Entfernen des HarmonicParenthesesItem-Grobs." -#: convertrules.py:3127 +#: convertrules.py:3067 msgid "HarmonicParenthesesItem has been eliminated.\n" msgstr "HarmonicParenthesesItem wurde entfernt.\n" -#: convertrules.py:3128 +#: convertrules.py:3068 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" msgstr "Harmonische Klammern sind Teil des TabNoteHead-Grobs.\n" -#: convertrules.py:3133 +#: convertrules.py:3073 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" msgstr "Entferne Kontext von overrideTimeSignatureSettings und revertTimeSignatureSettings.\n" -#: convertrules.py:3140 +#: convertrules.py:3080 msgid "" "Change stringTunings from a list of semitones to a list of pitches.\n" "Change tenor and baritone ukulele names in string tunings.\n" @@ -732,475 +785,338 @@ msgstr "" "Ändere Tenor- und Bariton-Ukulele-Bezeichnungen in Saitenstimmungen.\n" "Erstelle Nachrichten für manuelle Konversion von vertikalem Platz, wenn nötig." -#: convertrules.py:3180 -msgid "Vertical spacing changes might affect user-defined contexts. " -msgstr "Vertikale Positionierungsänderungen können sich auf von Benutzern definierte Kontexte auswirken. " +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." +msgstr "Vertikale Positionierungsänderungen können sich auf von Benutzern definierte Kontexte auswirken." -#: convertrules.py:3185 +#: convertrules.py:3129 msgid "Replace bar-size with bar-extent." msgstr "Ersetze bar-size durch bar-extent." -#: convertrules.py:3197 +#: convertrules.py:3141 msgid "Woodwind diagrams: Changes to the clarinet diagram." msgstr "Holsbläserdiagramme: Änderungen im Klarinetten-Diagramm." -#: convertrules.py:3201 -msgid "woodwind-diagrams. Clarinet fingering changed to reflect actual anatomy of instrument.\n" -msgstr "woodwind-diagrams. Klarinetten-Fingersatz verändert um Anatomie des Instruments wiederzugeben.\n" +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "Klarinetten-Fingersatz verändert, um Anatomie des Instruments wiederzugeben.\n" + +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "Behandlung von nicht-automatischen Fußnoten." + +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "Wenn sie nichtautomatische Fußnoten einsetzen, stellen Sie sicher, die Eigenschaft footnote-auto-numbering = ##f in der paper-Umgebund einzustellen.\n" + +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "Änderung in der internen Eigenschaft für MultiMeasureRest" + +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" +msgstr "Diese interene Eigenschaft wurde ersetzt durch round-to-longer-rest, round-up-exceptions und usable-duration-logs.\n" -#: book_base.py:24 +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "Erstellung eines Fähnchen-Grobs und Verschiebung von bestimmten Halseigenschaften in diesen Grob" + +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" +msgstr "consistent-broken-slope wird jetzt durch einen Positions-Callback gehandhabt.\n" + +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" +msgstr "input/regression/beam-broken-classic.ly zeigt, wie gebrochene Balken jetzt behandelt werden.\n" + +#: convertrules.py:3368 +msgid "beamExceptions controls whole-measure beaming." +msgstr "beamExceptions kontrolliert Bebalkung von ganzen Takten." + +#: fontextract.py:25 #, python-format -msgid "file not found: %s" -msgstr "Datei `%s' nicht gefunden" +msgid "Scanning %s" +msgstr "Warnung: %s" -#: book_base.py:161 -msgid "Output function not implemented" -msgstr "Ausgabefunktion nicht implementiert" +#: fontextract.py:70 +#, python-format +msgid "Extracted %s" +msgstr "%s ausgepackt" + +#: fontextract.py:85 +#, python-format +msgid "Writing fonts to %s" +msgstr "Schreiben der Schriftarten nach %s" + +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "Logstufe wird auf %s gesetzt" + +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "Unbekannte oder ungültige Logstufe »%s«" -#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115 -#: input.cc:123 +#: lilylib.py:128 warn.cc:211 #, c-format, python-format msgid "error: %s" msgstr "Fehler: %s" -#: lilylib.py:124 lilylib.py:175 +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "»%s.ly« wird verarbeitet" + +#: lilylib.py:189 lilylib.py:250 #, python-format msgid "Invoking `%s'" -msgstr "`%s' wird aufgerufen" +msgstr "»%s« wird aufgerufen" -#: lilylib.py:126 lilylib.py:177 +#: lilylib.py:191 lilylib.py:252 #, python-format msgid "Running %s..." msgstr "%s wird ausgeführt..." -#: lilylib.py:253 +#: lilylib.py:328 #, python-format msgid "Usage: %s" msgstr "Aufruf: %s" -#: musicexp.py:216 musicexp.py:221 +#: musicexp.py:224 musicexp.py:229 msgid "Language does not support microtones contained in the piece" msgstr "Die Sprache unterstützt nicht die Mikrotöne in diesem Stück" -#: musicexp.py:483 +#: musicexp.py:491 msgid "Tuplet brackets of curved shape are not correctly implemented" msgstr "N-tolen-Klammern mit gekrümmten Klammern sind nicht richtig implementiert" -#: musicexp.py:669 +#: musicexp.py:677 #, python-format msgid "unable to set the music %(music)s for the repeat %(repeat)s" msgstr "kann die Noten %(music)s für die Wiederholung %(repeat)s nicht setzen" -#: musicexp.py:678 +#: musicexp.py:686 msgid "encountered repeat without body" msgstr "Wiederholung ohne Body angetroffen" #. no self.elements! -#: musicexp.py:848 +#: musicexp.py:856 #, python-format msgid "Grace note with no following music: %s" msgstr "Verzierungsnoten ohne folgende Noten: %s" -#: musicexp.py:1010 +#: musicexp.py:1018 #, python-format msgid "Invalid octave shift size found: %s. Using no shift." msgstr "Ungültige Oktavenversetzungsgröße gefunden: %s. Versetzung wird nicht angewendet." -#: musicexp.py:1468 +#: musicexp.py:1476 #, python-format msgid "Unable to convert alteration %s to a lilypond expression" msgstr "Kann Alteration %s nicht in einen LilyPond-Ausdruck umwandeln" #. TODO: Handle pieces without a time signature! -#: musicxml.py:358 +#: musicxml.py:361 msgid "Senza-misura time signatures are not yet supported!" msgstr "Senza-misura-Taktarten sind noch nicht unterstützt!" -#: musicxml.py:376 +#: musicxml.py:379 msgid "Unable to interpret time signature! Falling back to 4/4." msgstr "Unfähig, die Taktart zu interpretieren! Benutze 4/4-Takt." -#: musicxml.py:432 +#: musicxml.py:435 #, python-format msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" msgstr "Tonartalterationsoktave für eine nicht existente Alteration Nr. %s angegeben, mögliche Nummern: %s!" -#: musicxml.py:520 +#: musicxml.py:523 #, python-format msgid "Unable to find instrument for ID=%s\n" msgstr "Kann kein Instrument für ID=%s finden\n" -#: book_latex.py:156 -msgid "cannot find \\begin{document} in LaTeX document" -msgstr "\\begin{document} im LaTeX-Dokument kann nicht gefunden werden" - -#: musicxml2ly.py:223 +#: abc2ly.py:1376 convert-ly.py:81 lilypond-book.py:122 midi2ly.py:1044 #, python-format -msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" -msgstr "Die Datei wurde von %s erstellt und enthält falsche Balkeninformation. Alle Balkeninformation in der MusicXML-Datei wird ignoriert" +msgid "%s [OPTION]... FILE" +msgstr "%s [OPTIONEN]... DATEI" -#: musicxml2ly.py:239 musicxml2ly.py:241 +#: abc2ly.py:1377 #, python-format -msgid "Unprocessed PartGroupInfo %s encountered" -msgstr "Unverarbeitetes PartGroupInfo %s angetroffen" +msgid "" +"abc2ly converts ABC music files (see\n" +"%s) to LilyPond input.\n" +msgstr "" +"abc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n" +"(siehe auch %s).\n" -#: musicxml2ly.py:494 -#, python-format -msgid "Encountered note at %s without type and duration (=%s)" -msgstr "Note bei %s ohne Art und Dauer angetroffen (=%s)" +#: abc2ly.py:1385 convert-ly.py:88 etf2ly.py:1208 lilypond-book.py:231 +#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:174 +msgid "show version number and exit" +msgstr "Versionsnummer ausgeben und beenden" -#: musicxml2ly.py:514 -#, python-format -msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" -msgstr "Rationale Dauer mit Nenner %s angetroffen, kann nicht in lilypond-Dauer umgewandelt werden" +#: abc2ly.py:1388 convert-ly.py:92 etf2ly.py:1204 lilypond-book.py:140 +#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:153 +msgid "show this help and exit" +msgstr "diese Hilfe anzeigen und beenden" -#: musicxml2ly.py:761 -msgid "Unable to extract key signature!" -msgstr "Kann die Tonart nicht extrahieren!" +#: abc2ly.py:1391 etf2ly.py:1209 midi2ly.py:1071 +msgid "write output to FILE" +msgstr "Ausgabe in DATEI schreiben" -#: musicxml2ly.py:788 -#, python-format -msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" -msgstr "unbekannter Modus %s, 'major' (Dur) oder 'minor' (Moll) oder eine Kirchentonart wird erwartet" +#: abc2ly.py:1394 +msgid "be strict about success" +msgstr "bzgl. Erfolg streng sein" -#: musicxml2ly.py:926 -#, python-format -msgid "Encountered unprocessed marker %s\n" -msgstr "Unverarbeiteter Marker %s angetroffen\n" +#: abc2ly.py:1397 +msgid "preserve ABC's notion of beams" +msgstr "ABCs Prinzip der Balken beibehalten" -#: musicxml2ly.py:1020 -#, python-format -msgid "unknown span event %s" -msgstr "Unbekannte Spannerklasse »%s«" +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "Fortschrittbenachrichtigung unterdrücken" -#: musicxml2ly.py:1030 -#, python-format -msgid "unknown span type %s for %s" -msgstr "Unbekannter Spannertyp %s für %s" +#. Translators, please translate this string as +#. "Report bugs in English via %s", +#. or if there is a LilyPond users list or forum in your language +#. "Report bugs in English via %s or in YOUR_LANG via URI" +#: abc2ly.py:1403 convert-ly.py:146 etf2ly.py:1218 lilypond-book.py:258 +#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:285 +#, c-format, python-format +msgid "Report bugs via %s" +msgstr "Melden Sie Fehler an %s" -#: musicxml2ly.py:1450 -msgid "Unknown metronome mark, ignoring" -msgstr "Unbekanntes Metronom-Zeichen, wird ignoriert" +#: convert-ly.py:46 +msgid "" +"Update LilyPond input to newer version. By default, update from the\n" +"version taken from the \\version command, to the current LilyPond version." +msgstr "" +"LilyPond-Eingabe auf neuere Version bringen. Standardmäßig wird von der\n" +"Version vom Kommando \\version zur aktuellen LilyPond-Version gegangen." -#. TODO: Implement the other (more complex) way for tempo marks! -#: musicxml2ly.py:1455 -msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." -msgstr "Metronommakern mit komplexen Beziehungen ( in MusicXML) sind noch nicht implementiert." +#: convert-ly.py:48 lilypond-book.py:82 +msgid "Examples:" +msgstr "Beispiele:" -#: musicxml2ly.py:1657 +#: convert-ly.py:75 etf2ly.py:1191 lilypond-book.py:115 midi2ly.py:81 #, python-format -msgid "Unable to convert chord type %s to lilypond." -msgstr "Kann Akkordtyp %s nicht nach lilypond umwandeln" +msgid "Copyright (c) %s by" +msgstr "Copyright (c) %s bei" -#: musicxml2ly.py:1806 -#, python-format -msgid "drum %s type unknown, please add to instrument_drumtype_dict" -msgstr "Schlagzeug %s Typ unbekannt, bitte zum instrument_drumtype_dict hinzufügen" +#: convert-ly.py:77 etf2ly.py:1193 lilypond-book.py:117 midi2ly.py:83 +msgid "Distributed under terms of the GNU General Public License." +msgstr "Vertrieben unter den Bedingungen der GNU General Public License." -#: musicxml2ly.py:1810 -msgid "cannot find suitable event" -msgstr "passendes Ereignis kann nicht gefunden werden" +#: convert-ly.py:78 etf2ly.py:1194 lilypond-book.py:118 midi2ly.py:84 +msgid "It comes with NO WARRANTY." +msgstr "Es wird OHNE GARANTIE ausgeliefert." -#: musicxml2ly.py:1958 +#: convert-ly.py:96 convert-ly.py:137 +msgid "VERSION" +msgstr "VERSION" + +#: convert-ly.py:98 +msgid "start from VERSION [default: \\version found in file]" +msgstr "bei VERSION anfangen [Standard: \\version in Datei gefunden]" + +#: convert-ly.py:101 +msgid "edit in place" +msgstr "vor Ort ändern" + +#: convert-ly.py:105 lilypond-book.py:179 musicxml2ly.py:2627 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" +msgstr "Logmeldungen ensprechend LOGLEVEL ((NONE, ERROR, WARNING, PROGRESS (Standard), DEBUG) ausgeben" + +#: convert-ly.py:107 lilypond-book.py:163 lilypond-book.py:181 +#: musicxml2ly.py:2629 main.cc:167 +msgid "LOGLEVEL" +msgstr "LOGLEVEL" + +#: convert-ly.py:113 +msgid "do not add \\version command if missing" +msgstr "keinen \\version-Befehl hinzufügen, falls es fehlt" + +#: convert-ly.py:119 #, python-format -msgid "Negative skip %s (from position %s to %s)" -msgstr "Negativer Sprung (skip) %s (von Position %s bis %s)" +msgid "force updating \\version number to %s" +msgstr "erzwinge Aktualisierung von \\version nach %s" + +#: convert-ly.py:125 +msgid "only update \\version number if file is modified" +msgstr "Aktualisierung von \\version nur, wenn die Datei verändert wurde" -#: musicxml2ly.py:2099 +#: convert-ly.py:131 #, python-format -msgid "Negative skip found: from %s to %s, difference is %s" -msgstr "Negativer Sprung (skip) gefunden: von %s bis %s, Differenz ist %s" +msgid "show rules [default: -f 0, -t %s]" +msgstr "Regeln anzeigen [Standard: -f 0, -t %s]" -#: musicxml2ly.py:2180 +#: convert-ly.py:136 #, python-format -msgid "unexpected %s; expected %s or %s or %s" -msgstr "unerwartetes %s; %s oder %s oder %s erwartet" +msgid "convert to VERSION [default: %s]" +msgstr "zu VERSION konvertieren [Standard: %s]" -#: musicxml2ly.py:2286 -msgid "Encountered closing slur, but no slur is open" -msgstr "Auf schließenden Legatobogen gestoßen, aber es wurde kein Bogen begonnen" +#: convert-ly.py:141 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096 +#: main.cc:176 +msgid "show warranty and copyright" +msgstr "Informationen zu Gewährleistung und Copyright anzeigen" -#: musicxml2ly.py:2289 -msgid "Cannot have two simultaneous (closing) slurs" -msgstr "Zwei gleichzeitige (schließende) Legatobögen sind nicht möglich" +#: convert-ly.py:186 +msgid "Applying conversion: " +msgstr "Anwenden der Umwandlung: " -#: musicxml2ly.py:2298 -msgid "Cannot have a slur inside another slur" -msgstr "Ein Legatobogen innerhalb eines anderen Legatobogens ist nicht möglich" +#: convert-ly.py:202 +msgid "Error while converting" +msgstr "Fehler beim Umwandeln" -#: musicxml2ly.py:2301 -msgid "Cannot have two simultaneous slurs" -msgstr "Zwei gleichzeitige Legatobögen sind nicht möglich" +#: convert-ly.py:204 +msgid "Stopping at last successful rule" +msgstr "Abbruch bei letzter erfolgreicher Regel" -#: musicxml2ly.py:2435 +#: convert-ly.py:231 #, python-format -msgid "cannot simultaneously have more than one mode: %s" -msgstr "Kann nicht gleichzeitig mehr als einen Modus haben: %s" +msgid "Processing `%s'... " +msgstr "»%s« wird verarbeitet..." -#: musicxml2ly.py:2543 -msgid "Converting to LilyPond expressions..." -msgstr "In LilyPond-Ausdrücke umwandeln..." +#: convert-ly.py:338 +#, python-format +msgid "%s: Unable to open file" +msgstr "%s: Konnte Datei nicht öffnen" -#: musicxml2ly.py:2554 -msgid "musicxml2ly [OPTION]... FILE.xml" -msgstr "musicxml2ly [Optionen]... DATEI.xml" +#: convert-ly.py:345 +#, python-format +msgid "%s: Unable to determine version. Skipping" +msgstr "Version für »%s« kann nicht erkannt werden. Wird übersprungen" -#: musicxml2ly.py:2556 +#: convert-ly.py:350 +#, python-format msgid "" -"Convert MusicXML from FILE.xml to LilyPond input.\n" -"If the given filename is -, musicxml2ly reads from the command line.\n" +"%s: Invalid version string `%s' \n" +"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" msgstr "" -"Wandle MusicXML-Datei von DAT.xml nach LilyPond-Eingabe um.\n" -"Wenn der angegebene Dateiname - ist, list musicxml2ly von der Kommandozeile.\n" +"%s: Ungültige Versionsangabe `%s' \n" +"Gültige Versionsangaben bestehen aus drei Zahlen, durch Punkte getrennt; etwa `2.8.12'" -#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140 -#: convert-ly.py:98 etf2ly.py:1202 main.cc:157 -msgid "show this help and exit" -msgstr "diese Hilfe anzeigen und beenden" +#: etf2ly.py:1197 +#, python-format +msgid "%s [OPTION]... ETF-FILE" +msgstr "%s [OPTIONEN]... ETF-DATEI" -#: musicxml2ly.py:2566 +#: etf2ly.py:1198 msgid "" -"Copyright (c) 2005--2011 by\n" -" Han-Wen Nienhuys ,\n" -" Jan Nieuwenhuizen and\n" -" Reinhold Kainhofer \n" +"Enigma Transport Format is a format used by Coda Music Technology's\n" +"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" msgstr "" -"Copyright (c) 2005--2011\n" -"····Han-Wen·Nienhuys·,\n" -"····Jan·Nieuwenhuizen··and\n" -"····Reinhold·Kainhofer·\n" +"Enigma Transport-Format ist ein von Coda Music Technology's Finale\n" +"verwendetes Format. etf2ly wandelt eine Teilmenge von ETF in\n" +"eine von Lilypond verwendbare Datei um.\n" -#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212 -#: convert-ly.py:94 etf2ly.py:1206 main.cc:168 -msgid "show version number and exit" -msgstr "Versionsnummer ausgeben und beenden" +#: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659 +#: main.cc:159 main.cc:171 +msgid "FILE" +msgstr "DATEI" -#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169 -msgid "be verbose" -msgstr "wortreich sein" - -#: musicxml2ly.py:2591 -msgid "use lxml.etree; uses less memory and cpu time" -msgstr "lxml.etree verwenden; benötigt weniger Speicher und Prozessorzeit" - -#: musicxml2ly.py:2597 -msgid "input file is a zip-compressed MusicXML file" -msgstr "Eingabedatei ist eine zip-komprimierte MusicXML-Datei" - -#: musicxml2ly.py:2603 -msgid "convert pitches in relative mode (default)" -msgstr "Tonhöhen im relativen Modus konvertieren (Standard)" - -#: musicxml2ly.py:2608 -msgid "convert pitches in absolute mode" -msgstr "Tonhöhen im absoluten Modus konvertieren" - -#: musicxml2ly.py:2611 -msgid "LANG" -msgstr "SPRA" - -#: musicxml2ly.py:2613 -msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" -msgstr "benutzte SPRA für Notenbezeichnugen, z. B. 'deutsch' für deutsche Notenbezeichnungen" - -#: musicxml2ly.py:2619 -msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." -msgstr "Richtungen (^, _ oder -) for Artikulationen, Dynamik usw. nicht konvertieren" - -#: musicxml2ly.py:2625 -msgid "do not convert exact vertical positions of rests" -msgstr "zusätzliche vertikale Positionen von Pausen nicht konvertieren" - -#: musicxml2ly.py:2631 -msgid "do not convert the exact page layout and breaks" -msgstr "nicht das exakte Seitenlayout und Umbrüche konvertieren" - -#: musicxml2ly.py:2637 -msgid "do not convert beaming information, use lilypond's automatic beaming instead" -msgstr "Balkeninformation nicht konvertieren, benutze die automatischen Balken von lilypond statt dessen" - -#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208 -#: main.cc:161 main.cc:166 -msgid "FILE" -msgstr "DATEI" - -#: musicxml2ly.py:2645 -msgid "set output filename to FILE, stdout if -" -msgstr "Ausgabedateiname auf DATEI setzen, stout if -" - -#. Translators, please translate this string as -#. "Report bugs in English via %s", -#. or if there is a LilyPond users list or forum in your language -#. "Report bugs in English via %s or in YOUR_LANG via URI" -#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234 -#: convert-ly.py:144 etf2ly.py:1216 main.cc:281 -#, c-format, python-format -msgid "Report bugs via %s" -msgstr "Melden Sie Fehler an %s" - -#: musicxml2ly.py:2728 -#, python-format -msgid "unknown part in part-list: %s" -msgstr "unbekannte Stimme in part-list (Stimmen-Liste): %s" - -#: musicxml2ly.py:2790 -msgid "Input is compressed, extracting raw MusicXML data from stdin" -msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten von stdin" - -#: musicxml2ly.py:2793 -#, python-format -msgid "Input file %s is compressed, extracting raw MusicXML data" -msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten" - -#: musicxml2ly.py:2823 -msgid "Reading MusicXML from Standard input ..." -msgstr "MusicXML von standard input lesen..." - -#: musicxml2ly.py:2825 -#, python-format -msgid "Reading MusicXML from %s ..." -msgstr "MusicXML aus %s lesen..." - -#: musicxml2ly.py:2858 -#, python-format -msgid "Output to `%s'" -msgstr "Ausgabe nach »%s«" - -#: musicxml2ly.py:2925 -#, python-format -msgid "Unable to find input file %s" -msgstr "Eingabedatei kann nicht gefunden werden %s" - -#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189 -#, python-format -msgid "Copyright (c) %s by" -msgstr "Copyright (c) %s bei" - -#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191 -msgid "Distributed under terms of the GNU General Public License." -msgstr "Vertrieben unter den Bedingungen der GNU General Public License." - -#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192 -msgid "It comes with NO WARRANTY." -msgstr "Es wird OHNE GARANTIE ausgeliefert." - -#: midi2ly.py:99 -msgid "warning: " -msgstr "Warnung: " - -#: midi2ly.py:102 midi2ly.py:1041 -msgid "error: " -msgstr "Fehler: " - -#: midi2ly.py:103 -msgid "Exiting... " -msgstr "Beenden... " - -#: midi2ly.py:960 -#, python-format -msgid "%s output to `%s'..." -msgstr "%s nach »%s« ausgeben..." - -#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87 -#, python-format -msgid "%s [OPTION]... FILE" -msgstr "%s [OPTIONEN]... DATEI" - -#: midi2ly.py:973 -#, python-format -msgid "Convert %s to LilyPond input.\n" -msgstr "%s in LilyPond-Quelltext umwandeln.\n" - -#: midi2ly.py:978 -msgid "print absolute pitches" -msgstr "Absolute Tonhöhen ausgeben" - -#: midi2ly.py:980 midi2ly.py:1002 -msgid "DUR" -msgstr "DAUER" - -#: midi2ly.py:981 -msgid "quantise note durations on DUR" -msgstr "Notenlängen auf DAUER quantisieren" - -#: midi2ly.py:984 -msgid "print explicit durations" -msgstr "Explizite Notenlängen ausgeben" - -#: midi2ly.py:989 -msgid "prepend FILE to output" -msgstr "DATEI an die Ausgabe anfügen" - -#: midi2ly.py:993 -msgid "set key: ALT=+sharps|-flats; MINOR=1" -msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1" - -#: midi2ly.py:994 -msgid "ALT[:MINOR]" -msgstr "VORZ[:MOLL]" - -#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207 -msgid "write output to FILE" -msgstr "Ausgabe in DATEI schreiben" - -#: midi2ly.py:999 -msgid "preview of first 4 bars" -msgstr "Vorschau der ersten 4 Takte" - -#: midi2ly.py:1001 -msgid "quantise note starts on DUR" -msgstr "Notenanfänge auf DAUER quantisieren" - -#: midi2ly.py:1004 -msgid "DUR*NUM/DEN" -msgstr "DAUER*ZÄHLER/NENNER" - -# tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25 -#: midi2ly.py:1007 -msgid "allow tuplet durations DUR*NUM/DEN" -msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben" - -#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210 -#: main.cc:170 -msgid "show warranty and copyright" -msgstr "Informationen zu Gewährleistung und Copyright anzeigen" - -#: midi2ly.py:1019 -msgid "treat every text as a lyric" -msgstr "Jeden Text als Liedtext behandeln" - -#: midi2ly.py:1022 -msgid "Examples" -msgstr "Beispiele" - -#: midi2ly.py:1042 -msgid "no files specified on command line." -msgstr "Keine Dateien auf der Kommandozeile angegeben." - -#: abc2ly.py:1374 -#, python-format -msgid "" -"abc2ly converts ABC music files (see\n" -"%s) to LilyPond input.\n" -msgstr "" -"abc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n" -"(siehe auch %s).\n" - -#: abc2ly.py:1390 -msgid "be strict about success" -msgstr "bzgl. Erfolg streng sein" - -#: abc2ly.py:1392 -msgid "preserve ABC's notion of beams" -msgstr "ABCs Prinzip der Balken beibehalten" - -#: lilypond-book.py:80 -msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." -msgstr "LilyPond-Schnipsel in Mischdatei (HTML, LaTeX, texinfo oder DocBook) verarbeiten" - -#: lilypond-book.py:82 convert-ly.py:46 -msgid "Examples:" -msgstr "Beispiele:" +#: lilypond-book.py:80 +msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." +msgstr "LilyPond-Schnipsel in Mischdatei (HTML, LaTeX, texinfo oder DocBook) verarbeiten" #: lilypond-book.py:87 msgid "BOOK" @@ -1231,8 +1147,8 @@ msgstr "FORMAT" msgid "add DIR to include path" msgstr "VERZ zum Einfügepfad hinzufügen" -#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163 -#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160 +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 msgid "DIR" msgstr "VERZ" @@ -1249,46 +1165,58 @@ msgid "pad left side of music to align music inspite of uneven bar numbers (in m msgstr "verschiebe linken Rand der Noten um an den Noten auszurichten, obwohl Taktnummer ungerade ist (in mm)" #: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" +msgstr "lilypond-Logmeldungen entsprechend LOGLEVEL ausgeben" + +#: lilypond-book.py:168 msgid "write lily-XXX files to DIR, link into --output dir" msgstr "schreibe lily-XXX-Dateien nach VERZ, verlinke nach --output dir" -#: lilypond-book.py:167 +#: lilypond-book.py:173 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" msgstr "Zusätzliches python PACKAGE laden (enthält z. B. ein angepasstes Ausgabeformat)" -#: lilypond-book.py:168 +#: lilypond-book.py:174 msgid "PACKAGE" msgstr "PACKAGE" -#: lilypond-book.py:172 +#: lilypond-book.py:186 msgid "write output to DIR" msgstr "Ausgabe in DATEI schreiben" -#: lilypond-book.py:177 +#: lilypond-book.py:191 msgid "COMMAND" msgstr "BEFEHL" -#: lilypond-book.py:178 +#: lilypond-book.py:192 msgid "process ly_files using COMMAND FILE..." msgstr "ly_files mit BEFEHL DATEI... verarbeiten" -#: lilypond-book.py:182 +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "Die Ausgabe von lilypond umleiten" + +#: lilypond-book.py:201 msgid "Compile snippets in safe mode" msgstr "Schnipsel im sicheren Modus kompilieren" -#: lilypond-book.py:188 +#: lilypond-book.py:207 msgid "do not fail if no lilypond output is found" msgstr "nicht abbrechen wenn keine lilypond-Ausgabe gefunden wird" -#: lilypond-book.py:194 +#: lilypond-book.py:213 msgid "do not fail if no PNG images are found for EPS files" msgstr "nicht abbrechen wenn, keine PNG-Bilder für EPS-Dateien gefunden werden" -#: lilypond-book.py:200 +#: lilypond-book.py:219 msgid "write snippet output files with the same base name as their source file" msgstr "schreibe Schnipsel-Ausgabedatei mit der gleichen Basis-Bezeichnung wie die Quelldatei" -#: lilypond-book.py:220 +#: lilypond-book.py:223 midi2ly.py:1090 musicxml2ly.py:2596 +msgid "be verbose" +msgstr "wortreich sein" + +#: lilypond-book.py:239 msgid "" "run executable PROG instead of latex, or in\n" "case --pdf option is set instead of pdflatex" @@ -1296,161 +1224,397 @@ msgstr "" "Führe die Datei PROG anstelle von latex aus, oder\n" "im Falle dass die Option --pdf gesetzt ist, anstelle von pdflatex" -#: lilypond-book.py:222 +#: lilypond-book.py:241 lilypond-book.py:246 msgid "PROG" msgstr "PROG" -#: lilypond-book.py:228 +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "benutze ausführbare Datei PROG anstelle von texi2pdf" + +#: lilypond-book.py:252 msgid "create PDF files for use with PDFTeX" msgstr "PDF-Dateien für Verwendung mit PDFTeX erzeugen" -#: lilypond-book.py:419 +#: lilypond-book.py:455 msgid "Writing snippets..." msgstr "Auszüge werden geschrieben..." -#: lilypond-book.py:425 +#: lilypond-book.py:460 msgid "Processing..." msgstr "Verarbeiten..." -#: lilypond-book.py:431 +#: lilypond-book.py:465 msgid "All snippets are up to date..." msgstr "Alle Auszüge sind auf dem neuesten Stand..." -#: lilypond-book.py:452 +#: lilypond-book.py:467 +msgid "Linking files..." +msgstr "Dateien verbinden..." + +#: lilypond-book.py:487 #, python-format msgid "cannot determine format for: %s" msgstr "Format für %s kann nicht ermittelt werden" -#: lilypond-book.py:461 +#: lilypond-book.py:496 #, python-format msgid "%s is up to date." msgstr "%s ist aktuell." -#: lilypond-book.py:475 +#: lilypond-book.py:509 #, python-format msgid "Writing `%s'..." msgstr "»%s« wird geschrieben..." -#: lilypond-book.py:537 +#: lilypond-book.py:570 msgid "Output would overwrite input file; use --output." msgstr "Ausgabe würde Eingabedatei überschreiben; verwenden Sie --output." -#: lilypond-book.py:541 +#: lilypond-book.py:574 #, python-format msgid "Reading %s..." msgstr "%s lesen..." -#: lilypond-book.py:549 +#: lilypond-book.py:581 msgid "Dissecting..." msgstr "Zerlegen..." -#: lilypond-book.py:561 +#: lilypond-book.py:592 #, python-format msgid "Compiling %s..." msgstr "%s kompilieren..." -#: lilypond-book.py:570 +#: lilypond-book.py:600 #, python-format msgid "Processing include: %s" msgstr "Einfügung wird verarbeitet: %s" -#: lilypond-book.py:582 +#: lilypond-book.py:611 #, python-format msgid "Removing `%s'" msgstr "»%s« wird gelöscht" -#: convert-ly.py:44 -msgid "" -"Update LilyPond input to newer version. By default, update from the\n" -"version taken from the \\version command, to the current LilyPond version." -msgstr "" -"LilyPond-Eingabe auf neuere Version bringen. Standardmäßig wird von der\n" -"Version vom Kommando \\version zur aktuellen LilyPond-Version gegangen." +#: lilypond-book.py:704 +#, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "Logstufe von LilyPond wird auf %s gesetzt" -#: convert-ly.py:102 convert-ly.py:135 -msgid "VERSION" -msgstr "VERSION" +#: lilypond-book.py:708 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" +msgstr "Logstufe von LilyPond wird auf %s gesetzt (aus Umgebungsvariable LILYPOND_LOGLEVEL)" -#: convert-ly.py:104 -msgid "start from VERSION [default: \\version found in file]" -msgstr "bei VERSION anfangen [Standard: \\version in Datei gefunden]" +#: lilypond-book.py:711 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" +msgstr "LilyPond-Ausgabe auf --verbose setzen, entsprechend der Einstellungen von lilypond-book" -#: convert-ly.py:107 -msgid "edit in place" -msgstr "vor Ort ändern" +#: midi2ly.py:90 +msgid "warning: " +msgstr "Warnung: " -#: convert-ly.py:111 -msgid "do not add \\version command if missing" -msgstr "keinen \\version-Befehl hinzufügen, falls es fehlt" +#: midi2ly.py:93 midi2ly.py:1124 +msgid "error: " +msgstr "Fehler: " -#: convert-ly.py:117 -#, python-format -msgid "force updating \\version number to %s" -msgstr "erzwinge Aktualisierung von \\version nach %s" +#: midi2ly.py:94 +msgid "Exiting... " +msgstr "Beenden... " -#: convert-ly.py:123 -msgid "only update \\version number if file is modified" -msgstr "Aktualisierung von \\version nur, wenn die Datei verändert wurde" +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" +msgstr "mehr als fünf Stimmen auf einem System, schlechte Ausgabe kann erwartet werden" -#: convert-ly.py:129 +#: midi2ly.py:1032 #, python-format -msgid "show rules [default: -f 0, -t %s]" -msgstr "Regeln anzeigen [Standard: -f 0, -t %s]" +msgid "%s output to `%s'..." +msgstr "%s nach »%s« ausgeben..." -#: convert-ly.py:134 +#: midi2ly.py:1045 #, python-format -msgid "convert to VERSION [default: %s]" -msgstr "zu VERSION konvertieren [Standard: %s]" +msgid "Convert %s to LilyPond input.\n" +msgstr "%s in LilyPond-Quelltext umwandeln.\n" -#: convert-ly.py:184 -msgid "Applying conversion: " -msgstr "Anwenden der Umwandlung: " +#: midi2ly.py:1050 +msgid "print absolute pitches" +msgstr "Absolute Tonhöhen ausgeben" -#: convert-ly.py:197 -msgid "Error while converting" -msgstr "Fehler beim Umwandeln" +#: midi2ly.py:1052 midi2ly.py:1080 +msgid "DUR" +msgstr "DAUER" -#: convert-ly.py:199 -msgid "Stopping at last successful rule" -msgstr "Abbruch bei letzter erfolgreicher Regel" +#: midi2ly.py:1053 +msgid "quantise note durations on DUR" +msgstr "Notenlängen auf DAUER quantisieren" -#: convert-ly.py:224 -#, python-format -msgid "Processing `%s'... " -msgstr "»%s« wird verarbeitet..." +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "Drucken auf Fehler untersuchen" -#: convert-ly.py:332 -#, python-format -msgid "%s: Unable to open file" -msgstr "%s: Konnte Datei nicht öffnen" +#: midi2ly.py:1059 +msgid "print explicit durations" +msgstr "Explizite Notenlängen ausgeben" -#: convert-ly.py:339 -#, python-format -msgid "%s: Unable to determine version. Skipping" -msgstr "Version für »%s« kann nicht erkannt werden. Wird übersprungen" +#: midi2ly.py:1064 +msgid "prepend FILE to output" +msgstr "DATEI an die Ausgabe anfügen" -#: convert-ly.py:344 -#, python-format -msgid "" -"%s: Invalid version string `%s' \n" -"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" -msgstr "" -"%s: Ungültige Versionsangabe `%s' \n" -"Gültige Versionsangaben bestehen aus drei Zahlen, durch Punkte getrennt; etwa `2.8.12'" +#: midi2ly.py:1068 +msgid "set key: ALT=+sharps|-flats; MINOR=1" +msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1" -#: etf2ly.py:1195 -#, python-format -msgid "%s [OPTION]... ETF-FILE" -msgstr "%s [OPTIONEN]... ETF-DATEI" +#: midi2ly.py:1069 +msgid "ALT[:MINOR]" +msgstr "VORZ[:MOLL]" -#: etf2ly.py:1196 +#: midi2ly.py:1074 +msgid "preview of first 4 bars" +msgstr "Vorschau der ersten 4 Takte" + +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" +msgstr "Fortschrittsnachrichten und Warnungen über ausschweifende Stimmen unterdrücken" + +#: midi2ly.py:1079 +msgid "quantise note starts on DUR" +msgstr "Notenanfänge auf DAUER quantisieren" + +#: midi2ly.py:1083 +msgid "use s instead of r for rests" +msgstr "s anstelle von r für Pausen benutzen" + +#: midi2ly.py:1085 +msgid "DUR*NUM/DEN" +msgstr "DAUER*ZÄHLER/NENNER" + +# tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25 +#: midi2ly.py:1088 +msgid "allow tuplet durations DUR*NUM/DEN" +msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben" + +#: midi2ly.py:1098 +msgid "treat every text as a lyric" +msgstr "Jeden Text als Liedtext behandeln" + +#: midi2ly.py:1101 +msgid "Examples" +msgstr "Beispiele" + +#: midi2ly.py:1125 +msgid "no files specified on command line." +msgstr "Keine Dateien auf der Kommandozeile angegeben." + +#: musicxml2ly.py:228 +#, python-format +msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" +msgstr "Die Datei wurde von %s erstellt und enthält falsche Balkeninformation. Alle Balkeninformation in der MusicXML-Datei wird ignoriert" + +#: musicxml2ly.py:247 musicxml2ly.py:249 +#, python-format +msgid "Unprocessed PartGroupInfo %s encountered" +msgstr "Unverarbeitetes PartGroupInfo %s angetroffen" + +#: musicxml2ly.py:500 +#, python-format +msgid "Encountered note at %s without type and duration (=%s)" +msgstr "Note bei %s ohne Art und Dauer angetroffen (=%s)" + +#: musicxml2ly.py:520 +#, python-format +msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" +msgstr "Rationale Dauer mit Nenner %s angetroffen, kann nicht in lilypond-Dauer umgewandelt werden" + +#: musicxml2ly.py:767 +msgid "Unable to extract key signature!" +msgstr "Kann die Tonart nicht extrahieren!" + +#: musicxml2ly.py:794 +#, python-format +msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" +msgstr "unbekannter Modus %s, 'major' (Dur) oder 'minor' (Moll) oder eine Kirchentonart wird erwartet" + +#: musicxml2ly.py:932 +#, python-format +msgid "Encountered unprocessed marker %s\n" +msgstr "Unverarbeiteter Marker %s angetroffen\n" + +#: musicxml2ly.py:1026 +#, python-format +msgid "unknown span event %s" +msgstr "Unbekannte Spannerklasse »%s«" + +#: musicxml2ly.py:1036 +#, python-format +msgid "unknown span type %s for %s" +msgstr "Unbekannter Spannertyp %s für %s" + +#: musicxml2ly.py:1456 +msgid "Unknown metronome mark, ignoring" +msgstr "Unbekanntes Metronom-Zeichen, wird ignoriert" + +#. TODO: Implement the other (more complex) way for tempo marks! +#: musicxml2ly.py:1461 +msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." +msgstr "Metronommakern mit komplexen Beziehungen ( in MusicXML) sind noch nicht implementiert." + +#: musicxml2ly.py:1663 +#, python-format +msgid "Unable to convert chord type %s to lilypond." +msgstr "Kann Akkordtyp %s nicht nach lilypond umwandeln" + +#: musicxml2ly.py:1816 +#, python-format +msgid "drum %s type unknown, please add to instrument_drumtype_dict" +msgstr "Schlagzeug %s Typ unbekannt, bitte zum instrument_drumtype_dict hinzufügen" + +#: musicxml2ly.py:1820 +msgid "cannot find suitable event" +msgstr "passendes Ereignis kann nicht gefunden werden" + +#: musicxml2ly.py:1968 +#, python-format +msgid "Negative skip %s (from position %s to %s)" +msgstr "Negativer Sprung (skip) %s (von Position %s bis %s)" + +#: musicxml2ly.py:2109 +#, python-format +msgid "Negative skip found: from %s to %s, difference is %s" +msgstr "Negativer Sprung (skip) gefunden: von %s bis %s, Differenz ist %s" + +#: musicxml2ly.py:2190 +#, python-format +msgid "unexpected %s; expected %s or %s or %s" +msgstr "unerwartetes %s; %s oder %s oder %s erwartet" + +#: musicxml2ly.py:2296 +msgid "Encountered closing slur, but no slur is open" +msgstr "Auf schließenden Legatobogen gestoßen, aber es wurde kein Bogen begonnen" + +#: musicxml2ly.py:2299 +msgid "Cannot have two simultaneous (closing) slurs" +msgstr "Zwei gleichzeitige (schließende) Legatobögen sind nicht möglich" + +#: musicxml2ly.py:2308 +msgid "Cannot have a slur inside another slur" +msgstr "Ein Legatobogen innerhalb eines anderen Legatobogens ist nicht möglich" + +#: musicxml2ly.py:2311 +msgid "Cannot have two simultaneous slurs" +msgstr "Zwei gleichzeitige Legatobögen sind nicht möglich" + +#: musicxml2ly.py:2445 +#, python-format +msgid "cannot simultaneously have more than one mode: %s" +msgstr "Kann nicht gleichzeitig mehr als einen Modus haben: %s" + +#: musicxml2ly.py:2553 +msgid "Converting to LilyPond expressions..." +msgstr "In LilyPond-Ausdrücke umwandeln..." + +#: musicxml2ly.py:2564 +msgid "musicxml2ly [OPTION]... FILE.xml" +msgstr "musicxml2ly [Optionen]... DATEI.xml" + +#: musicxml2ly.py:2566 msgid "" -"Enigma Transport Format is a format used by Coda Music Technology's\n" -"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" +"Convert MusicXML from FILE.xml to LilyPond input.\n" +"If the given filename is -, musicxml2ly reads from the command line.\n" msgstr "" -"Enigma Transport-Format ist ein von Coda Music Technology's Finale\n" -"verwendetes Format. etf2ly wandelt eine Teilmenge von ETF in\n" -"eine von Lilypond verwendbare Datei um.\n" +"Wandle MusicXML-Datei von DAT.xml nach LilyPond-Eingabe um.\n" +"Wenn der angegebene Dateiname - ist, list musicxml2ly von der Kommandozeile.\n" + +#: musicxml2ly.py:2576 +msgid "" +"Copyright (c) 2005--2012 by\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen and\n" +" Reinhold Kainhofer \n" +msgstr "" +"Copyright (c) 2005--2012\n" +"····Han-Wen·Nienhuys·,\n" +"····Jan·Nieuwenhuizen··and\n" +"····Reinhold·Kainhofer·\n" + +#: musicxml2ly.py:2602 +msgid "use lxml.etree; uses less memory and cpu time" +msgstr "lxml.etree verwenden; benötigt weniger Speicher und Prozessorzeit" + +#: musicxml2ly.py:2608 +msgid "input file is a zip-compressed MusicXML file" +msgstr "Eingabedatei ist eine zip-komprimierte MusicXML-Datei" + +#: musicxml2ly.py:2614 +msgid "convert pitches in relative mode (default)" +msgstr "Tonhöhen im relativen Modus konvertieren (Standard)" + +#: musicxml2ly.py:2619 +msgid "convert pitches in absolute mode" +msgstr "Tonhöhen im absoluten Modus konvertieren" + +#: musicxml2ly.py:2622 +msgid "LANG" +msgstr "SPRA" + +#: musicxml2ly.py:2624 +msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" +msgstr "benutzte SPRA für Notenbezeichnugen, z. B. 'deutsch' für deutsche Notenbezeichnungen" + +#: musicxml2ly.py:2638 +msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." +msgstr "Richtungen (^, _ oder -) for Artikulationen, Dynamik usw. nicht konvertieren" + +#: musicxml2ly.py:2644 +msgid "do not convert exact vertical positions of rests" +msgstr "zusätzliche vertikale Positionen von Pausen nicht konvertieren" + +#: musicxml2ly.py:2650 +msgid "do not convert the exact page layout and breaks" +msgstr "nicht das exakte Seitenlayout und Umbrüche konvertieren" + +#: musicxml2ly.py:2656 +msgid "do not convert beaming information, use lilypond's automatic beaming instead" +msgstr "Balkeninformation nicht konvertieren, benutze die automatischen Balken von lilypond statt dessen" + +#: musicxml2ly.py:2664 +msgid "set output filename to FILE, stdout if -" +msgstr "Ausgabedateiname auf DATEI setzen, stout if -" + +#: musicxml2ly.py:2670 +msgid "activate midi-block" +msgstr "midi-Umgebung aktivieren" + +#: musicxml2ly.py:2754 +#, python-format +msgid "unknown part in part-list: %s" +msgstr "unbekannte Stimme in part-list (Stimmen-Liste): %s" + +#: musicxml2ly.py:2816 +msgid "Input is compressed, extracting raw MusicXML data from stdin" +msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten von stdin" + +#: musicxml2ly.py:2829 +#, python-format +msgid "Input file %s is compressed, extracting raw MusicXML data" +msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten" + +#: musicxml2ly.py:2859 +msgid "Reading MusicXML from Standard input ..." +msgstr "MusicXML von standard input lesen..." + +#: musicxml2ly.py:2861 +#, python-format +msgid "Reading MusicXML from %s ..." +msgstr "MusicXML aus %s lesen..." + +#: musicxml2ly.py:2894 +#, python-format +msgid "Output to `%s'" +msgstr "Ausgabe nach »%s«" + +#: musicxml2ly.py:2964 +#, python-format +msgid "Unable to find input file %s" +msgstr "Eingabedatei kann nicht gefunden werden %s" #: website_post.py:123 msgid "English" @@ -1460,19 +1624,10 @@ msgstr "Englisch" msgid "Other languages" msgstr "Andere Sprachen" -#: warn.cc:59 -#, c-format -msgid "success: %s" -msgstr "Erfolg: %s" - -#: warn.cc:86 grob.cc:617 input.cc:97 -#, c-format -msgid "programming error: %s" -msgstr "Programmierfehler: %s" - -#: warn.cc:87 input.cc:98 -msgid "continuing, cross fingers" -msgstr "Fortsetzung, die Daumen drücken" +#: website_post.py:127 +#, python-format +msgid "About automatic language selection." +msgstr "Über die automatische Sprachauswahl." #: getopt-long.cc:153 #, c-format @@ -1494,92 +1649,108 @@ msgstr "unerkannte Option: »%s«" msgid "invalid argument `%s' to option `%s'" msgstr "ungültiges Argument »%s« für Option »%s«" -#: grob.cc:286 -msgid "Infinity or NaN encountered" -msgstr "Unendlichkeit oder NaN angetroffen" - -#: vaticana-ligature.cc:95 -msgid "flexa-height undefined; assuming 0" -msgstr "flexa-Höhe nicht definiert: 0 angenommen" +#: warn.cc:56 +#, c-format +msgid "Log level set to %d\n" +msgstr "Logstufe auf %d gesetzt\n" -#: vaticana-ligature.cc:100 -msgid "ascending vaticana style flexa" -msgstr "aufsteigender Vaticana-Stil flexa" +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" +msgstr "unbekannte Logstufe »%s«, setzte Standard ein (INFO)" -#: vaticana-ligature.cc:188 -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" -msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)" +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 +#, c-format +msgid "%d expected warning(s) not encountered: " +msgstr "%d erwartete Warnung(en) nicht gefunden: " -#: parse-scm.cc:101 -msgid "GUILE signaled an error for the expression beginning here" -msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck" +#: warn.cc:183 +#, c-format +msgid "fatal error: %s" +msgstr "schwerer Fehler: %s" -#: rest-collision-engraver.cc:70 -msgid "rhythmic head is not part of a rhythmic column" -msgstr "der rhythmische Kopf gehört nicht zu einer rhythmischen Kolumne" +#: warn.cc:192 +#, c-format +msgid "suppressed programming error: %s" +msgstr "unterdrückter Programmierfehler: %s" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:189 constrained-breaking.cc:207 -msgid "cannot find line breaking that satisfies constraints" -msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen" +#: warn.cc:197 +#, c-format +msgid "programming error: %s" +msgstr "Programmierfehler: %s" -#: horizontal-bracket-engraver.cc:78 -msgid "do not have that many brackets" -msgstr "so viele Klammern gibt es nicht" +#: warn.cc:198 +msgid "continuing, cross fingers" +msgstr "Fortsetzung, die Daumen drücken" -#: horizontal-bracket-engraver.cc:87 -msgid "conflicting note group events" -msgstr "in Konflikt stehende Notengruppenereignisse" +#: warn.cc:207 +#, c-format +msgid "suppressed error: %s" +msgstr "unterdrückter Fehler: %s" -#: hyphen-engraver.cc:104 -msgid "removing unterminated hyphen" -msgstr "unbegrenzter Bindestrich wird entfernt" +#: warn.cc:219 +#, c-format +msgid "suppressed warning: %s" +msgstr "unterdrückte Warnung: %s" -#: hyphen-engraver.cc:118 -msgid "unterminated hyphen; removing" -msgstr "unbegrenzter Bindestrich; entfernt" +#: accidental-engraver.cc:180 +#, c-format +msgid "accidental typesetting list must begin with context-name: %s" +msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s" -#: pango-font.cc:187 open-type-font.cc:319 +#: accidental-engraver.cc:210 #, c-format -msgid "FT_Get_Glyph_Name () error: %s" -msgstr "FT_Get_Glyph_Name() Fehler: %s" +msgid "procedure or context-name expected for accidental rule, found %s" +msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden" -#: pango-font.cc:204 +#: accidental.cc:200 #, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" -msgstr "" -"Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n" -"Glyph U+%0X wird übersprungen, Datei %s" +msgid "Could not find glyph-name for alteration %s" +msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden" + +#: accidental.cc:215 +msgid "natural alteration glyph not found" +msgstr "Auflösungszeichen konnte nicht gefunden werden" -#: pango-font.cc:241 +#: all-font-metrics.cc:149 #, c-format -msgid "no PostScript font name for font `%s'" -msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«" +msgid "cannot find font: `%s'" +msgstr "Schriftart kann nicht gefunden werden: »%s«" -#: pango-font.cc:290 -msgid "FreeType face has no PostScript font name" -msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen" +#: apply-context-iterator.cc:42 +msgid "\\applycontext argument is not a procedure" +msgstr "Argument für \\applycontext ist keine Prozedur" + +#: arpeggio.cc:115 +msgid "no heads for arpeggio found?" +msgstr "keine Notenköpfe für Arpeggio gefunden?" -#: midi-item.cc:92 +#: auto-change-iterator.cc:74 change-iterator.cc:72 #, c-format -msgid "no such MIDI instrument: `%s'" -msgstr "kein MIDI-Instrument: `%s'" +msgid "cannot change, already in translator: %s" +msgstr "kann nicht geändert werden, bereits im Übersetzer: %s" -#: note-heads-engraver.cc:76 -msgid "NoteEvent without pitch" -msgstr "NoteEvent ohne Tonhöhe" +#: axis-group-engraver.cc:94 +msgid "Axis_group_engraver: vertical group already has a parent" +msgstr "Axis_group_engraver: vertikale Gruppe hat bereits einen Vater" + +#: axis-group-engraver.cc:95 +msgid "are there two Axis_group_engravers?" +msgstr "gibt es zwei Axis_group_engravers?" -#: rest.cc:159 -#, c-format -msgid "rest `%s' not found" -msgstr "Pause »%s« nicht gefunden" +#: axis-group-engraver.cc:96 +msgid "removing this vertical group" +msgstr "Entfernen dieser vertikalen Gruppe" + +#: axis-group-interface.cc:668 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "Ein Objekt außerhalb der Notenzeile sollte eine Richtung haben, Vorgabe ist »nach oben«" -#: spaceable-grob.cc:94 +#: bar-check-iterator.cc:84 #, c-format -msgid "No spring between column %d and next one" -msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger" +msgid "barcheck failed at: %s" +msgstr "Taktüberprüfung gescheitert bei: %s" #: beam-engraver.cc:147 msgid "already have a beam" @@ -1589,427 +1760,301 @@ msgstr "Balken bereits vorhanden" msgid "unterminated beam" msgstr "unbegrenzter Balken" -#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150 +#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149 msgid "stem must have Rhythmic structure" msgstr "Notenhals muss rhythmische Struktur aufweisen" -#: beam-engraver.cc:274 +#: beam-engraver.cc:277 msgid "stem does not fit in beam" msgstr "Notenhals passt nicht in Balken" -#: beam-engraver.cc:275 +#: beam-engraver.cc:278 msgid "beam was started here" msgstr "Balken wurde hier begonnen" -#: music-iterator.cc:182 -msgid "Sending non-event to context" -msgstr "Nicht-Ereignis wird an Kontext gesendet" - -#: context.cc:149 -#, c-format -msgid "cannot find or create new `%s'" -msgstr "ein neues »%s« kann weder gefunden noch erzeugt werden" - -#: context.cc:207 -#, c-format -msgid "cannot find or create `%s' called `%s'" -msgstr "»%s« (»%s« genannt) kann weder gefunden noch erzeugt werden" +#. We are completely screwed. +#: beam-quanting.cc:839 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "Keine funktionsfähige Anfangskonfiguration gefunden: Es kann evtl. keine optimale Balkenneigung gefunden werden" -#: context.cc:269 -#, c-format -msgid "Invalid CreateContext event: Cannot create %s context" -msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden" +#: beam.cc:181 +msgid "removing beam with no stems" +msgstr "Balken ohne Notenhälse wird entfernt" -#: context.cc:400 +#: change-iterator.cc:34 #, c-format -msgid "cannot find or create: `%s'" -msgstr "»%s« kann weder gefunden noch erzeugt werden" +msgid "cannot change `%s' to `%s'" +msgstr "»%s« kann nicht in »%s« geändert werden" -#: dispatcher.cc:82 -msgid "Event class should be a symbol" -msgstr "Ereignisklasse sollte ein Symbol sein" +#. FIXME: constant error message. +#: change-iterator.cc:93 +msgid "cannot find context to switch to" +msgstr "es kann kein Kontext zum Umschalten gefunden werden" -#: dispatcher.cc:89 +#. We could change the current translator's id, but that would make +#. errors hard to catch. +#. +#. last->translator_id_string () = get_change +#. ()->change_to_id_string (); +#: change-iterator.cc:102 #, c-format -msgid "Unknown event class %s" -msgstr "Unbekannte Ereignisklasse »%s«" - -#: paper-column-engraver.cc:245 -msgid "forced break was overridden by some other event, should you be using bar checks?" -msgstr "erzwungener Umbruch war durch anderes Ereignis aufgehoben, sollten Taktüberprüfungen vorgenommen werden?" - -#: tie-engraver.cc:116 -msgid "unterminated tie" -msgstr "unbegrenzter Bindebogen" - -#: tie-engraver.cc:312 -msgid "lonely tie" -msgstr "einsamer Bindebogen" - -#: dynamic-engraver.cc:197 -msgid "cannot find start of (de)crescendo" -msgstr "Anfang des (De-) Crescendos kann nicht gefunden werden" - -#: dynamic-engraver.cc:206 -msgid "already have a decrescendo" -msgstr "Decrescendo bereits vorhanden" - -#: dynamic-engraver.cc:208 -msgid "already have a crescendo" -msgstr "Crescendo bereits vorhanden" +msgid "not changing to same context type: %s" +msgstr "kein Umschalten zum gleichen Kontexttypen: %s" -#: dynamic-engraver.cc:211 -msgid "cresc starts here" -msgstr "Crescendo beginnt hier" +#. FIXME: uncomprehensable message +#: change-iterator.cc:106 +msgid "none of these in my family" +msgstr "keiner davon befindet sich in meiner Familie" -#: dynamic-engraver.cc:339 -msgid "unterminated (de)crescendo" -msgstr "unbegrenztes (De-) Crescendo" +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" +msgstr "Kein Tremolo zu beenden" -#: paper-score.cc:122 minimal-page-breaking.cc:40 -msgid "Calculating line breaks..." -msgstr "Zeilenumbrüche werden berechnet..." +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "unbegrenztes Akkord-Tremolo" -#: paper-score.cc:135 +#: clef.cc:65 #, c-format -msgid "Element count %d (spanners %d) " -msgstr "Elementanzahl: %d (Klammern: %d)" - -#: paper-score.cc:139 -msgid "Preprocessing graphical objects..." -msgstr "Vorverarbeitung der grafischen Elemente..." - -#: paper-score.cc:163 optimal-page-breaking.cc:208 -#: page-turn-page-breaking.cc:248 -msgid "Drawing systems..." -msgstr "Systeme erstellen..." - -#: mensural-ligature-engraver.cc:96 -msgid "ligature with less than 2 heads -> skipping" -msgstr "Ligatur mit weniger als 2 Notenköpfen -> überspringen" - -#: mensural-ligature-engraver.cc:123 -msgid "cannot determine pitch of ligature primitive -> skipping" -msgstr "Tonhöhe des Ligaturelements kann nicht ermittelt werden -> überspringen" - -#: mensural-ligature-engraver.cc:137 -msgid "single note ligature - skipping" -msgstr "Ligatur mit einer einzelnen Note -> überspringen" - -#: mensural-ligature-engraver.cc:148 -msgid "prime interval within ligature -> skipping" -msgstr "Prime in der Ligatur -> überspringen" +msgid "clef `%s' not found" +msgstr "Schlüssel »%s« nicht gefunden" -#: mensural-ligature-engraver.cc:159 -msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" -msgstr "Mensuralligatur: Dauer weder Mx, L, B noch S -> überspringen" +#: cluster.cc:120 +#, c-format +msgid "unknown cluster style `%s'" +msgstr "unbekannter Clusterstil: »%s«" -#: mensural-ligature-engraver.cc:202 -msgid "semibrevis must be followed by another one -> skipping" -msgstr "Semibrevis muss von einem weiteren gefolgt werden -> überspringen" +#: cluster.cc:157 +msgid "junking empty cluster" +msgstr "Leeres Cluster wird verworfen" -#: mensural-ligature-engraver.cc:212 -msgid "" -"semibreves can only appear at the beginning of a ligature,\n" -"and there may be only zero or two of them" -msgstr "" -"Semibrevis kann nur am Anfang einer Ligatur auftreten,\n" -"und es können nur null oder zwei davon auftreten" +#: coherent-ligature-engraver.cc:110 +#, c-format +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul" -#: mensural-ligature-engraver.cc:232 -msgid "" -"invalid ligatura ending:\n" -"when the last note is a descending brevis,\n" -"the penultimate note must be another one,\n" -"or the ligatura must be LB or SSB" -msgstr "" -"ungültiges Ende der Ligatur:\n" -"Wenn die letzte Note eine absteigende Brevis ist,\n" -"muss die vorletzte Note eine weitere sein,\n" -"oder die Ligatur muss LB oder SSB sein" +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" +msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen" -#: mensural-ligature-engraver.cc:386 -msgid "unexpected case fall-through" -msgstr "unerwarteter case-Ausgang" +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" +msgstr "Symbol-Argumente für \\override und \\revert benötigt" -#: piano-pedal-engraver.cc:298 +#: context.cc:149 #, c-format -msgid "expect 3 strings for piano pedals, found: %ld" -msgstr "3 Textketten für Piano-Pedal erwartet, %ld gefunden" +msgid "cannot find or create new `%s'" +msgstr "ein neues »%s« kann weder gefunden noch erzeugt werden" -#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324 -#: piano-pedal-performer.cc:104 +#: context.cc:207 #, c-format -msgid "cannot find start of piano pedal: `%s'" -msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«" +msgid "cannot find or create `%s' called `%s'" +msgstr "»%s« (»%s« genannt) kann weder gefunden noch erzeugt werden" -#: piano-pedal-engraver.cc:359 +#: context.cc:400 #, c-format -msgid "cannot find start of piano pedal bracket: `%s'" -msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«" - -#: input.cc:131 source-file.cc:179 source-file.cc:194 -msgid "position unknown" -msgstr "Position unbekannt" +msgid "cannot find or create: `%s'" +msgstr "»%s« kann weder gefunden noch erzeugt werden" -#: paper-outputter-scheme.cc:41 +#: custos.cc:87 #, c-format -msgid "Layout output to `%s'..." -msgstr "Layout nach »%s« ausgeben..." - -#: general-scheme.cc:306 -msgid "infinity or NaN encountered while converting Real number" -msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden" - -#: general-scheme.cc:307 -msgid "setting to zero" -msgstr "auf Null gesetzt" +msgid "custos `%s' not found" +msgstr "Custos »%s« nicht gefunden" -#: general-scheme.cc:543 -msgid "Found infinity or nan in output. Substituting 0.0" -msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt" +#: dispatcher.cc:83 +msgid "Event class should be a list" +msgstr "Ereignisklasse sollte eine Liste sein" -#: music.cc:151 +#: dispatcher.cc:166 #, c-format -msgid "octave check failed; expected \"%s\", found: \"%s\"" -msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden" +msgid "Junking event: %s" +msgstr "Ereignis wird verworfen: »%s«" -#: music.cc:219 -msgid "(normalized pitch)" -msgstr "(normalisierte Tonhöhe)" +#: dispatcher.cc:262 +msgid "Attempting to remove nonexisting listener." +msgstr "Versuche, nicht existierende listener zu entfernen." -#: music.cc:223 -#, c-format -msgid "Transposing %s by %s makes alteration larger than double" -msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen" +#: dispatcher.cc:284 +msgid "Already listening to dispatcher, ignoring request" +msgstr "Höre schon dem Rechenzeitverteiler zu, Anforderung wird irgnoriert" -#: translator-ctors.cc:65 +#: dots.cc:48 #, c-format -msgid "unknown translator: `%s'" -msgstr "unbekannter Übersetzer: »%s«" - -#: partial-iterator.cc:45 -msgid "trying to use \\partial after the start of a piece" -msgstr "versuche, \\partial nach dem Beginn eines Stückes einzusetzen" - -#: new-fingering-engraver.cc:106 -msgid "cannot add text scripts to individual note heads" -msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden" - -#: new-fingering-engraver.cc:250 -msgid "no placement found for fingerings" -msgstr "Keine Platzierung für Fingersatz gefunden" - -#: new-fingering-engraver.cc:251 -msgid "placing below" -msgstr "Platzierung darunter" - -#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 -msgid "cannot find start of ligature" -msgstr "Anfang der Ligatur kann nicht gefunden werden" - -#: ligature-engraver.cc:109 -msgid "no right bound" -msgstr "keine rechte Begrenzung" - -#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85 -msgid "already have a ligature" -msgstr "habe bereits eine Ligatur" - -#: ligature-engraver.cc:140 -msgid "no left bound" -msgstr "keine linke Begrenzung" +msgid "dot `%s' not found" +msgstr "Punkt »%s« nicht gefunden" -#: ligature-engraver.cc:185 -msgid "unterminated ligature" -msgstr "unbegrenzte Ligatur" +#: dynamic-engraver.cc:193 +msgid "cannot find start of (de)crescendo" +msgstr "Anfang des (De-) Crescendos kann nicht gefunden werden" -#: ligature-engraver.cc:214 -msgid "ignoring rest: ligature may not contain rest" -msgstr "Pause wird ignoriert: Ligatur darf keine Pause enthalten" +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "Decrescendo bereits vorhanden" -#: ligature-engraver.cc:215 -msgid "ligature was started here" -msgstr "Ligatur wurde hier begonnen" +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "Crescendo bereits vorhanden" -#: auto-change-iterator.cc:74 change-iterator.cc:72 -#, c-format -msgid "cannot change, already in translator: %s" -msgstr "kann nicht geändert werden, bereits im Übersetzer: %s" +#: dynamic-engraver.cc:205 +msgid "cresc starts here" +msgstr "Crescendo beginnt hier" -#: accidental-engraver.cc:180 -#, c-format -msgid "accidental typesetting list must begin with context-name: %s" -msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s" +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "unbegrenztes (De-) Crescendo" -#: accidental-engraver.cc:210 -#, c-format -msgid "procedure or context-name expected for accidental rule, found %s" -msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden" +#. No explicit dynamic script events have occurred yet, but there is +#. nevertheless a dynamic spanner. Initialize last_volume_ to a +#. value within the available range. +#: dynamic-performer.cc:129 +msgid "(De)crescendo with unspecified starting volume in MIDI." +msgstr "(De)crescendo mit unspezifischer Anfangslautstärke im MIDI." -#: ttf.cc:481 ttf.cc:530 -#, c-format -msgid "font index %d too large for font `%s', using index 0" -msgstr "Font-Intex %d zu groß für Font »%s«, benutze Index 0" +#: episema-engraver.cc:75 +msgid "already have an episema" +msgstr "Episema bereits vorhanden" -#: ttf.cc:513 ttf.cc:565 -msgid "font index must be non-negative, using index 0" -msgstr "font-index muss nicht-negativ sein, benutze Index 0" +#: episema-engraver.cc:88 +msgid "cannot find start of episema" +msgstr "Anfang des Episema kann nicht gefunden werden" -#: break-alignment-interface.cc:206 -#, c-format -msgid "No spacing entry from %s to `%s'" -msgstr "Kein Abstandeintrag von %s nach »%s«" +#: episema-engraver.cc:137 +msgid "unterminated episema" +msgstr "unbegrenztes Episema" -#: minimal-page-breaking.cc:44 -msgid "Calculating page breaks..." -msgstr "Zeilenumbrüche werden berechnet..." +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "unbegrenzter Textunterstrich" -#: vaticana-ligature-engraver.cc:400 +#: flag.cc:113 #, c-format -msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" -msgstr "Präfix(e) »%s« dieses Kopfes gemäß den Einschränkungen des ausgewählten Ligaturstils ignoriert" +msgid "flag `%s' not found" +msgstr "Fähnchen »%s« nicht gefunden" -#: vaticana-ligature-engraver.cc:736 +#: flag.cc:133 #, c-format -msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" -msgstr "Vaticana_ligature_engraver: setzen »spacing-increment = %f«: ptr=%ul" +msgid "flag stroke `%s' not found" +msgstr "Fähnchenstrich »%s« nicht gefunden" -#: paper-book.cc:214 +#: font-config-scheme.cc:151 font-config.cc:53 #, c-format -msgid "program option -dprint-pages not supported by backend `%s'" -msgstr "Programmoption -dprint-pages nicht von Backend »%s« unterstützt" +msgid "failed adding font directory: %s" +msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s" -#: paper-book.cc:233 +#: font-config-scheme.cc:153 font-config.cc:55 #, c-format -msgid "program option -dpreview not supported by backend `%s'" -msgstr "Programmoption -dpreview nicht von »%s« unterstützt" - -#: output-def.cc:235 -msgid "margins do not fit with line-width, setting default values" -msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte" - -#: output-def.cc:242 -msgid "systems run off the page due to improper paper settings, setting default values" -msgstr "Systeme befinden sich außerhalb der Seite wegen falschen paper-Einstellungen, setze Standardwerte ein" +msgid "Adding font directory: %s" +msgstr "Schriftartverzeichnis wird hinzugefügt: %s" -#: score-engraver.cc:78 +#: font-config-scheme.cc:167 #, c-format -msgid "cannot find `%s'" -msgstr "»%s« kann nicht gefunden werden" - -#: score-engraver.cc:80 -msgid "Music font has not been installed properly." -msgstr "Musik-Schriftart wurde nicht ordnungsgemäß installiert." +msgid "failed adding font file: %s" +msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s" -#: score-engraver.cc:82 +#: font-config-scheme.cc:169 #, c-format -msgid "Search path `%s'" -msgstr "Suchpfad »%s«" +msgid "Adding font file: %s" +msgstr "Schriftartdatei wird hinzugefügt: %s" -#: score-engraver.cc:84 -msgid "Aborting" -msgstr "Abbruch" +#: font-config.cc:38 +msgid "Initializing FontConfig..." +msgstr "FontConfig wird initialisiert..." -#: note-collision.cc:497 -msgid "ignoring too many clashing note columns" -msgstr "zu viele kollidierende Notenspalten werden ignoriert" +#: font-config.cc:58 +msgid "Building font database..." +msgstr "Schriftartendatenbank erstellen..." -#. fixme: be more verbose. -#: volta-engraver.cc:111 -msgid "cannot end volta spanner" -msgstr "Volta-Klammer kann nicht beendet werden" +#: footnote-engraver.cc:110 +msgid "Must be footnote-event." +msgstr "Muss ein Fußnoten-Ereignis sein." -#: volta-engraver.cc:121 -msgid "already have a volta spanner, ending that one prematurely" -msgstr "Wiederholungsklammer bereits vorhanden, wird vorzeitig beendet" +#: general-scheme.cc:390 +#, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "Konnte stderr nicht nach %s umleiten" -#: volta-engraver.cc:125 -msgid "also already have an ended spanner" -msgstr "endende Textklammer auch bereits vorhanden" +#: general-scheme.cc:469 output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "Unendlich oder nan in Ausgabe gefunden. Wird durch 0.0 ersetzt" -#: volta-engraver.cc:126 -msgid "giving up" -msgstr "aufgeben" +#: glissando-engraver.cc:158 +msgid "unterminated glissando" +msgstr "unbegrenztes Glissando." -#: page-layout-problem.cc:322 -msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" -msgstr "Noten passen nicht auf die Seite: ragged-spacing wurde verlangt, aber die Seite wurde komprimiert" +#: global-context-scheme.cc:96 global-context-scheme.cc:114 +msgid "no music found in score" +msgstr "keine Musik in der Partitur gefunden" -#: page-layout-problem.cc:325 -#, c-format -msgid "cannot fit music on page: overflow is %f" -msgstr "Noten passen nicht auf die Seite: Überhang ist %f" +#: global-context-scheme.cc:104 +msgid "Interpreting music..." +msgstr "Interpretation der Musik..." -#: page-layout-problem.cc:327 -msgid "compressing music to fit" -msgstr "Noten werden komprimiert um zu passen" +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "verstrichene Zeit: %.2f Sekunden" -#: page-layout-problem.cc:765 -msgid "staff-affinities should only decrease" -msgstr "staff-affinities sollten nur abnehmen" +#: gregorian-ligature-engraver.cc:70 +#, c-format +msgid "\\%s ignored" +msgstr "\\%s ignoriert" -#: apply-context-iterator.cc:42 -msgid "\\applycontext argument is not a procedure" -msgstr "Argument für \\applycontext ist keine Prozedur" +#: gregorian-ligature-engraver.cc:75 +#, c-format +msgid "implied \\%s added" +msgstr "implizites \\%s hinzugefügt" -#. FIXME: constant error message. -#: mark-engraver.cc:157 -msgid "rehearsalMark must have integer value" -msgstr "rehearsalMark muss Ganzzahlwert haben" +#. ligature may not start with 2nd head of pes or flexa +#: gregorian-ligature-engraver.cc:224 +msgid "cannot apply `\\~' on first head of ligature" +msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden" -#: mark-engraver.cc:163 -msgid "mark label must be a markup object" -msgstr "Marke muss ein Textbeschriftungsobjekt sein" +#. (pitch == prev_pitch) +#: gregorian-ligature-engraver.cc:236 +msgid "cannot apply `\\~' on heads with identical pitch" +msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden" -#: new-dynamic-engraver.cc:142 +#: grob-interface.cc:68 #, c-format -msgid "" -"unknown crescendo style: %s\n" -"defaulting to hairpin." -msgstr "" -"unbekannter crescendo-Stil: %s\n" -"wird als spitze Klammer gesetzt." +msgid "Unknown interface `%s'" +msgstr "Unbekannte Schnittstelle »%s«" -#: new-dynamic-engraver.cc:200 +#: grob-interface.cc:79 #, c-format -msgid "unterminated %s" -msgstr "unbegrenzt: »%s«" - -#: stem-engraver.cc:103 -msgid "tremolo duration is too long" -msgstr "Tremolodauer ist zu lang" +msgid "Grob `%s' has no interface for property `%s'" +msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«" -#. FIXME: -#: stem-engraver.cc:140 +#: grob-property.cc:35 #, c-format -msgid "adding note head to incompatible stem (type = %d)" -msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d) hinzugefügt" +msgid "%d: %s" +msgstr "%d: %s" -#: stem-engraver.cc:142 -msgid "maybe input should specify polyphonic voices" -msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen" +#: hairpin.cc:60 +msgid "Asking for broken bound padding at a non-broken bound." +msgstr "" -#: lily-lexer.cc:264 -msgid "include files are not allowed in safe mode" -msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt" +#: hairpin.cc:254 +msgid "decrescendo too small" +msgstr "Decrescendo zu kurz" -#: lily-lexer.cc:291 -#, c-format -msgid "identifier name is a keyword: `%s'" -msgstr "Bezeichnername ist ein Schlüsselwort: »%s«" +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" +msgstr "so viele Klammern gibt es nicht" -#: lily-lexer.cc:312 -#, c-format -msgid "error at EOF: %s" -msgstr "Fehler am Dateiende (EOF): %s" +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" +msgstr "in Konflikt stehende Notengruppenereignisse" -#: lyric-combine-music-iterator.cc:337 -#, c-format -msgid "cannot find Voice `%s'" -msgstr "Stimme kann nicht gefunden werden: »%s«" +#: hyphen-engraver.cc:104 +msgid "removing unterminated hyphen" +msgstr "unbegrenzter Bindestrich wird entfernt" + +#: hyphen-engraver.cc:118 +msgid "unterminated hyphen; removing" +msgstr "unbegrenzter Bindestrich; entfernt" -#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109 +#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108 #, c-format msgid "cannot find file: `%s'" msgstr "Datei »%s« kann nicht gefunden werden" @@ -2019,149 +2064,138 @@ msgstr "Datei »%s« kann nicht gefunden werden" msgid "(search path: `%s')" msgstr "(Suchpfad: »%s«)" -#: note-column.cc:135 -msgid "cannot have note heads and rests together on a stem" -msgstr "Notenköpfe und Pausen können nicht zusammen an einem Hals auftreten" - -#: beam.cc:180 -msgid "removing beam with no stems" -msgstr "Balken ohne Notenhälse wird entfernt" +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "Position unbekannt" -#. We are completely screwed. -#: beam.cc:1274 -msgid "no viable initial configuration found: may not find good beam slope" -msgstr "Keine funktionsfähige Anfangskonfiguration gefunden: Es kann evtl. keine optimale Balkenneigung gefunden werden" +#: key-engraver.cc:198 +msgid "Incomplete keyAlterationOrder for key signature" +msgstr "keyAlterationOrder für die Vorzeichen ist nicht vollständig" -#: slur-engraver.cc:93 +#: key-signature-interface.cc:77 #, c-format -msgid "direction of %s invalid: %d" -msgstr "Richtung von %s ungültig: %d" - -#: slur-engraver.cc:162 -msgid "unterminated slur" -msgstr "unbegrenzter Legatobogen" +msgid "No glyph found for alteration: %s" +msgstr "Kein Glyph für Vorzeichen gefunden: %s" -#: slur-engraver.cc:174 -msgid "cannot end slur" -msgstr "Legatobogen kann nicht beendet werden" +#: key-signature-interface.cc:87 +msgid "alteration not found" +msgstr "Alterierung nicht gefunden" -#: font-config.cc:40 -msgid "Initializing FontConfig..." -msgstr "FontConfig wird initialisiert..." +#: ligature-bracket-engraver.cc:72 ligature-engraver.cc:104 +msgid "cannot find start of ligature" +msgstr "Anfang der Ligatur kann nicht gefunden werden" -#: font-config.cc:55 font-config-scheme.cc:152 -#, c-format -msgid "failed adding font directory: %s" -msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s" +#: ligature-bracket-engraver.cc:85 ligature-engraver.cc:131 +msgid "already have a ligature" +msgstr "habe bereits eine Ligatur" -#: font-config.cc:57 font-config-scheme.cc:154 -#, c-format -msgid "adding font directory: %s" -msgstr "Schriftartverzeichnis wird hinzugefügt: %s" +#: ligature-engraver.cc:109 +msgid "no right bound" +msgstr "keine rechte Begrenzung" -#: font-config.cc:61 -msgid "Building font database..." -msgstr "Schriftartendatenbank erstellen..." +#: ligature-engraver.cc:140 +msgid "no left bound" +msgstr "keine linke Begrenzung" -#. find out the ideal number of pages -#: optimal-page-breaking.cc:62 -msgid "Finding the ideal number of pages..." -msgstr "Ideale Seitenanzahl wird gefunden..." +#: ligature-engraver.cc:184 +msgid "unterminated ligature" +msgstr "unbegrenzte Ligatur" -#: optimal-page-breaking.cc:85 -msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page" -msgstr "konnte nicht systems-per-page und page-count gleichzeitig anwenden, ignoriere systems-per-page" +#: ligature-engraver.cc:211 +msgid "ignoring rest: ligature may not contain rest" +msgstr "Pause wird ignoriert: Ligatur darf keine Pause enthalten" -#: optimal-page-breaking.cc:105 -msgid "Fitting music on 1 page..." -msgstr "Musik wird auf eine Seite angepasst..." +#: ligature-engraver.cc:212 +msgid "ligature was started here" +msgstr "Ligatur wurde hier begonnen" -#: optimal-page-breaking.cc:107 +#: lily-guile.cc:93 #, c-format -msgid "Fitting music on %d pages..." -msgstr "Musik wird auf %d Seiten angepasst..." +msgid "(load path: `%s')" +msgstr "(Lade-Pfad: `%s')" -#: optimal-page-breaking.cc:109 +#: lily-guile.cc:416 #, c-format -msgid "Fitting music on %d or %d pages..." -msgstr "Musik wird auf %d oder %d Seiten angepasst..." +msgid "cannot find property type-check for `%s' (%s)." +msgstr "Eigenschafts-Typprüfung für »%s« (%s) kann nicht gefunden werden." -#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 -#, c-format -msgid "trying %d systems" -msgstr "versuche %d Systeme" +#: lily-guile.cc:419 +msgid "perhaps a typing error?" +msgstr "vielleicht ein Tippfehler?" -#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 -#, c-format -msgid "best score for this sys-count: %f" -msgstr "bester Score für dieses sys-count: %f" +#: lily-guile.cc:426 +msgid "doing assignment anyway" +msgstr "Zuweisung wird trotzdem durchgeführt" -#: accidental.cc:200 +#: lily-guile.cc:438 #, c-format -msgid "Could not find glyph-name for alteration %s" -msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden" +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "Typprüfung für »%s« gescheitert; Wert »%s« muss vom Typ »%s« sein" -#: accidental.cc:215 -msgid "natural alteration glyph not found" -msgstr "Auflösungszeichen konnte nicht gefunden werden" +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" +msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt" -#: system.cc:197 +#: lily-lexer.cc:282 #, c-format -msgid "Element count %d" -msgstr "Elementanzahl %d." +msgid "identifier name is a keyword: `%s'" +msgstr "Bezeichnername ist ein Schlüsselwort: »%s«" -#: system.cc:303 +#: lily-lexer.cc:303 lily-lexer.cc:316 #, c-format -msgid "Grob count %d" -msgstr "Anzahl der grafischen Objekte (grob): %d" +msgid "%s:EOF" +msgstr "%s:EOF" + +#: lily-parser-scheme.cc:80 +#, c-format +msgid "Changing working directory to: `%s'" +msgstr "Aktuelles Verzeichnis wird zu »%s« geändert" -#: slur.cc:362 +#: lily-parser-scheme.cc:84 #, c-format -msgid "Ignoring grob for slur: %s. avoid-slur not set?" -msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?" +msgid "unable to change directory to: `%s'" +msgstr "kann Verzeichnis nicht in »%s« ändern" -#: font-config-scheme.cc:168 +#: lily-parser-scheme.cc:99 #, c-format -msgid "failed adding font file: %s" -msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s" +msgid "cannot find init file: `%s'" +msgstr "Init-Datei kann nicht gefunden werden: »%s«" -#: font-config-scheme.cc:170 +#: lily-parser-scheme.cc:117 #, c-format -msgid "adding font file: %s" -msgstr "Schriftartdatei wird hinzugefügt: %s" - -#: hairpin.cc:186 -msgid "decrescendo too small" -msgstr "Decrescendo zu kurz" +msgid "Processing `%s'" +msgstr "»%s« wird verarbeitet" -#: extender-engraver.cc:170 extender-engraver.cc:179 -msgid "unterminated extender" -msgstr "unbegrenzter Textunterstrich" +#: lily-parser-scheme.cc:208 +msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parser-parse-string ist nur mit einem neuen Parser gültig. Anstelle dessen ly:parser-include-string benutzen." -#: lily-guile.cc:89 -#, c-format -msgid "(load path: `%s')" -msgstr "(Lade-Pfad: `%s')" +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parse-string-expression ist nur mit einem neuen Parser gültig. Anstelle dessen ly:parser-include-string benutzen." -#: lily-guile.cc:437 -#, c-format -msgid "cannot find property type-check for `%s' (%s)." -msgstr "Eigenschafts-Typprüfung für »%s« (%s) kann nicht gefunden werden." +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "Analysieren..." -#: lily-guile.cc:440 -msgid "perhaps a typing error?" -msgstr "vielleicht ein Tippfehler?" +#: line-spanner.cc:373 +msgid "Line spanner's left point is to the right of its right point." +msgstr "Der linke Punkt eines Linienstreckers ist rechts von seinem linken Punkt." -#: lily-guile.cc:447 -msgid "doing assignment anyway" -msgstr "Zuweisung wird trotzdem durchgeführt" +#: lyric-combine-music-iterator.cc:199 +msgid "argument of \\lyricsto should contain Lyrics context" +msgstr "das Argument von \\lyricsto muss einen Lyrics-Kontext enthalten" -#: lily-guile.cc:459 +#: lyric-combine-music-iterator.cc:337 #, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" -msgstr "Typprüfung für »%s« gescheitert; Wert »%s« muss vom Typ »%s« sein" +msgid "cannot find Voice `%s'" +msgstr "Stimme kann nicht gefunden werden: »%s«" -#: main.cc:109 +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden." + +#: main.cc:101 #, c-format msgid "" "This program is free software. It is covered by the GNU General Public\n" @@ -2174,11 +2208,12 @@ msgstr "" "Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n" "Informationen auf.\n" -#: main.cc:115 +#: main.cc:107 msgid "" " This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" "\n" " This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -2191,11 +2226,11 @@ msgid "" "Boston, MA 02111-1307, USA.\n" msgstr "" " Dieses Programm ist Freie Software; Sie können es unter den\n" -"Bedingungen der GNU General Public License Version 2, wie von der\n" -"Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren.\n" +"Bedingungen der GNU General Public License, wie von der\n" +"Free Software Foundation veröffentlicht (entweder Version 3 oder (nach eigener Vorliebe) eine spätere Version), weitergeben und/oder modifizieren.\n" "\n" " Dieses Programm wird herausgegeben in der Hoffnung, dass es nützlich sein wird\n" -"Es wird jedoch KEINE GARANTIE übernommen. Selbst die\n" +"Es wird jedoch KEINE GEWÄHRLEISTUNG übernommen. Selbst die\n" "implizite Garantie der MARKTGÄNGIGKEIT oder TAUGLICHKEIT FÜR EINEN\n" "BESTIMMTEN ZWECK kann nicht gewährleistet werden. Siehe GNU General Public\n" "License für weitere Details.\n" @@ -2205,11 +2240,11 @@ msgstr "" "Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, USA.\n" -#: main.cc:146 +#: main.cc:141 msgid "SYM[=VAL]" msgstr "SYM[=WERT]" -#: main.cc:147 +#: main.cc:142 msgid "" "set Scheme option SYM to VAL (default: #t).\n" "Use -dhelp for help." @@ -2217,59 +2252,59 @@ msgstr "" "Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n" "-dhelp für Hilfe verwenden." -#: main.cc:150 +#: main.cc:146 msgid "EXPR" msgstr "AUSD" -#: main.cc:150 +#: main.cc:146 msgid "evaluate scheme code" msgstr "Scheme-Code auswerten" #. Bug in option parser: --output =foe is taken as an abbreviation #. for --output-format. -#: main.cc:153 +#: main.cc:149 msgid "FORMATs" msgstr "FORMATe" -#: main.cc:153 +#: main.cc:149 msgid "dump FORMAT,... Also as separate options:" msgstr "dump FORMAT,... Auch als separate Optionen:" -#: main.cc:154 +#: main.cc:150 msgid "generate PDF (default)" msgstr "PDF erzeugen (Standard)" -#: main.cc:155 +#: main.cc:151 msgid "generate PNG" msgstr "PNG erzeugen" -#: main.cc:156 +#: main.cc:152 msgid "generate PostScript" msgstr "PostScript erzeugen" -#: main.cc:158 +#: main.cc:155 msgid "FIELD" msgstr "FELD" -#: main.cc:158 +#: main.cc:155 msgid "" "dump header field FIELD to file\n" "named BASENAME.FIELD" msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben" -#: main.cc:160 +#: main.cc:158 msgid "add DIR to search path" msgstr "VERZ zum Suchpfad hinzufügen" -#: main.cc:161 +#: main.cc:159 msgid "use FILE as init file" msgstr "DATEI als Anfangsdatei verwenden" -#: main.cc:163 +#: main.cc:162 msgid "USER, GROUP, JAIL, DIR" msgstr "BENUTZER,GRUPPE,KERKER,VERZ" -#: main.cc:163 +#: main.cc:162 msgid "" "chroot to JAIL, become USER:GROUP\n" "and cd into DIR" @@ -2277,16 +2312,32 @@ msgstr "" "chroot in KERKER, wird BENUTZER:GRUPPE\n" "und cd in VERZ" -#: main.cc:166 +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" +"Logmeldungen nach LOGLEVEL-Einstellung ausgeben. Mögliche Werte:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (Standard) und DEBUG." + +#: main.cc:171 msgid "write output to FILE (suffix will be added)" msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)" -#: main.cc:167 +#: main.cc:172 msgid "relocate using directory of lilypond program" msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses" +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "kein Forschritt, nur Fehlermeldungen (entspricht LOGLEVEL=ERROR)" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "ausführlich sein (entspricht LOGLEVEL=DEBUG)" + #. Do not update the copyright years here, run `make grand-replace' -#: main.cc:238 +#: main.cc:242 #, c-format msgid "" "Copyright (c) %s by\n" @@ -2296,386 +2347,619 @@ msgstr "" "%s und anderen." #. No version number or newline here. It confuses help2man. -#: main.cc:265 +#: main.cc:269 #, c-format msgid "Usage: %s [OPTION]... FILE..." msgstr "Aufruf: %s [OPTION]... DATEI..." -#: main.cc:267 +#: main.cc:271 msgid "Typeset music and/or produce MIDI from FILE." msgstr "Musiksatz und/oder MIDI aus DATEI erzeugen." -#: main.cc:269 +#: main.cc:273 msgid "LilyPond produces beautiful music notation." msgstr "LilyPond erzeugt ansprechenden Notensatz." -#: main.cc:271 +#: main.cc:275 #, c-format msgid "For more information, see %s" msgstr "Für weitere Informationen siehe %s" -#: main.cc:273 +#: main.cc:277 msgid "Options:" msgstr "Optionen:" -#: main.cc:327 +#: main.cc:331 #, c-format msgid "expected %d arguments with jail, found: %u" msgstr "%d Argumente mit Kerker erwartet, %u gefunden" -#: main.cc:341 +#: main.cc:345 #, c-format msgid "no such user: %s" msgstr "kein solcher Benutzer: %s" -#: main.cc:343 +#: main.cc:347 #, c-format msgid "cannot get user id from user name: %s: %s" msgstr "Benutzer-ID von Benutzername kann nicht gefunden werden: %s: %s" -#: main.cc:358 +#: main.cc:362 +#, c-format +msgid "no such group: %s" +msgstr "keine solche Gruppe: %s" + +#: main.cc:364 +#, c-format +msgid "cannot get group id from group name: %s: %s" +msgstr "Gruppen-ID kann nicht von Gruppenname ermittelt werden: %s: %s" + +#: main.cc:372 +#, c-format +msgid "cannot chroot to: %s: %s" +msgstr "kein chroot möglich nach: %s: %s" + +#: main.cc:379 +#, c-format +msgid "cannot change group id to: %d: %s" +msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s" + +#: main.cc:385 +#, c-format +msgid "cannot change user id to: %d: %s" +msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s" + +#: main.cc:391 +#, c-format +msgid "cannot change working directory to: %s: %s" +msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s" + +#: main.cc:639 +#, c-format +msgid "exception caught: %s" +msgstr "Ausnahme gefangen: %s" + +#. FIXME: constant error message. +#: mark-engraver.cc:156 +msgid "rehearsalMark must have integer value" +msgstr "rehearsalMark muss Ganzzahlwert haben" + +#: mark-engraver.cc:162 +msgid "mark label must be a markup object" +msgstr "Marke muss ein Textbeschriftungsobjekt sein" + +#: mensural-ligature-engraver.cc:96 +msgid "ligature with less than 2 heads -> skipping" +msgstr "Ligatur mit weniger als 2 Notenköpfen -> überspringen" + +#: mensural-ligature-engraver.cc:123 +msgid "cannot determine pitch of ligature primitive -> skipping" +msgstr "Tonhöhe des Ligaturelements kann nicht ermittelt werden -> überspringen" + +#: mensural-ligature-engraver.cc:137 +msgid "single note ligature - skipping" +msgstr "Ligatur mit einer einzelnen Note -> überspringen" + +#: mensural-ligature-engraver.cc:148 +msgid "prime interval within ligature -> skipping" +msgstr "Prime in der Ligatur -> überspringen" + +#: mensural-ligature-engraver.cc:159 +msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" +msgstr "Mensuralligatur: Dauer weder Mx, L, B noch S -> überspringen" + +#: mensural-ligature-engraver.cc:202 +msgid "semibrevis must be followed by another one -> skipping" +msgstr "Semibrevis muss von einem weiteren gefolgt werden -> überspringen" + +#: mensural-ligature-engraver.cc:212 +msgid "" +"semibreves can only appear at the beginning of a ligature,\n" +"and there may be only zero or two of them" +msgstr "" +"Semibrevis kann nur am Anfang einer Ligatur auftreten,\n" +"und es können nur null oder zwei davon auftreten" + +#: mensural-ligature-engraver.cc:232 +msgid "" +"invalid ligatura ending:\n" +"when the last note is a descending brevis,\n" +"the penultimate note must be another one,\n" +"or the ligatura must be LB or SSB" +msgstr "" +"ungültiges Ende der Ligatur:\n" +"Wenn die letzte Note eine absteigende Brevis ist,\n" +"muss die vorletzte Note eine weitere sein,\n" +"oder die Ligatur muss LB oder SSB sein" + +#: mensural-ligature-engraver.cc:387 +msgid "unexpected case fall-through" +msgstr "unerwarteter case-Ausgang" + +#: midi-item.cc:89 +#, c-format +msgid "no such MIDI instrument: `%s'" +msgstr "kein MIDI-Instrument: `%s'" + +#: midi-item.cc:161 +msgid "Time signature with more than 255 beats. Truncating" +msgstr "Taktart mit mehr als 255 Schlägen. " + +#: midi-stream.cc:39 +#, c-format +msgid "cannot open for write: %s: %s" +msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s" + +#: midi-stream.cc:55 +#, c-format +msgid "cannot write to file: `%s'" +msgstr "Es kann nicht in Datei geschrieben werden: »%s«" + +#: minimal-page-breaking.cc:40 paper-score.cc:122 +msgid "Calculating line breaks..." +msgstr "Zeilenumbrüche werden berechnet..." + +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." +msgstr "Zeilenumbrüche werden berechnet..." + +#: multi-measure-rest.cc:138 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." +msgstr "usable-duration-logs muss eine nicht-leere Liste sein. Falle auf ganze Pausen zurück." + +#: multi-measure-rest.cc:328 +msgid "Using naive multi measure rest spacing." +msgstr "Benutze simple Platzierung von Mehrtaktpausen." + +#: music.cc:150 +#, c-format +msgid "octave check failed; expected \"%s\", found: \"%s\"" +msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden" + +#: music.cc:219 +msgid "(normalized pitch)" +msgstr "(normalisierte Tonhöhe)" + +#: music.cc:223 +#, c-format +msgid "Transposing %s by %s makes alteration larger than double" +msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen" + +#: new-dynamic-engraver.cc:168 +#, c-format +msgid "" +"unknown crescendo style: %s\n" +"defaulting to hairpin." +msgstr "" +"unbekannter crescendo-Stil: %s\n" +"wird als spitze Klammer gesetzt." + +#: new-dynamic-engraver.cc:233 +#, c-format +msgid "unterminated %s" +msgstr "unbegrenzt: »%s«" + +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden" + +#: new-fingering-engraver.cc:269 +msgid "no placement found for fingerings" +msgstr "Keine Platzierung für Fingersatz gefunden" + +#: new-fingering-engraver.cc:270 +msgid "placing below" +msgstr "Platzierung darunter" + +#: note-collision.cc:496 +msgid "ignoring too many clashing note columns" +msgstr "zu viele kollidierende Notenspalten werden ignoriert" + +#: note-column.cc:147 +msgid "cannot have note heads and rests together on a stem" +msgstr "Notenköpfe und Pausen können nicht zusammen an einem Hals auftreten" + +#: note-head.cc:95 +#, c-format +msgid "none of note heads `%s' or `%s' found" +msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden" + +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" +msgstr "NoteEvent ohne Tonhöhe" + +#: open-type-font.cc:44 +#, c-format +msgid "cannot allocate %lu bytes" +msgstr "es können keine %lu Bytes angefordert werden" + +#: open-type-font.cc:48 +#, c-format +msgid "cannot load font table: %s" +msgstr "Schriftarttabelle kann nicht geladen werden: %s" + +#: open-type-font.cc:53 +#, c-format +msgid "FreeType error: %s" +msgstr "FreeType-Fehler: %s" + +#: open-type-font.cc:110 +#, c-format +msgid "unsupported font format: %s" +msgstr "nicht unterstütztes Schriftartformat: %s" + +#: open-type-font.cc:112 +#, c-format +msgid "error reading font file %s: %s" +msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s" + +#: open-type-font.cc:187 +#, c-format +msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s" + +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" +msgstr "FT_Get_Glyph_Name() Fehler: %s" + +#. find out the ideal number of pages +#: optimal-page-breaking.cc:62 +msgid "Finding the ideal number of pages..." +msgstr "Ideale Seitenanzahl wird gefunden..." + +#: optimal-page-breaking.cc:85 +msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page" +msgstr "konnte nicht systems-per-page und page-count gleichzeitig anwenden, ignoriere systems-per-page" + +#: optimal-page-breaking.cc:105 +msgid "Fitting music on 1 page..." +msgstr "Musik wird auf eine Seite angepasst..." + +#: optimal-page-breaking.cc:107 #, c-format -msgid "no such group: %s" -msgstr "keine solche Gruppe: %s" +msgid "Fitting music on %d pages..." +msgstr "Musik wird auf %d Seiten angepasst..." -#: main.cc:360 +#: optimal-page-breaking.cc:109 #, c-format -msgid "cannot get group id from group name: %s: %s" -msgstr "Gruppen-ID kann nicht von Gruppenname ermittelt werden: %s: %s" +msgid "Fitting music on %d or %d pages..." +msgstr "Musik wird auf %d oder %d Seiten angepasst..." -#: main.cc:368 +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:172 #, c-format -msgid "cannot chroot to: %s: %s" -msgstr "kein chroot möglich nach: %s: %s" +msgid "trying %d systems" +msgstr "versuche %d Systeme" -#: main.cc:375 +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:200 #, c-format -msgid "cannot change group id to: %d: %s" -msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s" +msgid "best score for this sys-count: %f" +msgstr "bester Score für dieses sys-count: %f" -#: main.cc:381 -#, c-format -msgid "cannot change user id to: %d: %s" -msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s" +#: optimal-page-breaking.cc:207 page-turn-page-breaking.cc:248 +#: paper-score.cc:162 +msgid "Drawing systems..." +msgstr "Systeme erstellen..." -#: main.cc:387 -#, c-format -msgid "cannot change working directory to: %s: %s" -msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s" +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" +msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte" -#: main.cc:628 -#, c-format -msgid "exception caught: %s" -msgstr "Ausnahme gefangen: %s" +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" +msgstr "Systeme befinden sich außerhalb der Seite wegen falschen paper-Einstellungen, setze Standardwerte ein" -#: key-signature-interface.cc:78 -#, c-format -msgid "No glyph found for alteration: %s" -msgstr "Kein Glyph für Vorzeichen gefunden: %s" +#: page-breaking.cc:277 +msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" +msgstr "ignoriere min-systems-per-page und max-systems-per-page weil systems-per-page definiert wurde" -#: key-signature-interface.cc:88 -msgid "alteration not found" -msgstr "Alterierung nicht gefunden" +#: page-breaking.cc:282 +msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" +msgstr "min-systems-per-page ist größer als max-systems-per-page, beide Werte werden ignoriert" -#: dots.cc:48 -#, c-format -msgid "dot `%s' not found" -msgstr "Punkt »%s« nicht gefunden" +#: page-layout-problem.cc:403 +msgid "A page layout problem has been initiated that cannot accommodate footnotes." +msgstr "Ein Seitenlayoutproblem wurde initiiert, das Fußnoten nicht aufnehmen kann." -#: translator.cc:359 -#, c-format -msgid "Two simultaneous %s events, junking this one" -msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen" +#: page-layout-problem.cc:732 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" +msgstr "Noten passen nicht auf die Seite: ragged-spacing wurde verlangt, aber die Seite wurde komprimiert" -#: translator.cc:360 +#: page-layout-problem.cc:735 #, c-format -msgid "Previous %s event here" -msgstr "Vorheriges %s-Ereignis hier" +msgid "cannot fit music on page: overflow is %f" +msgstr "Noten passen nicht auf die Seite: Überhang ist %f" -#: glissando-engraver.cc:105 -msgid "unterminated glissando" -msgstr "unbegrenztes Glissando." +#: page-layout-problem.cc:737 +msgid "compressing music to fit" +msgstr "Noten werden komprimiert um zu passen" -#: text-spanner-engraver.cc:73 -msgid "cannot find start of text spanner" -msgstr "Anfang der Textklammer kann nicht gefunden werden" +#: page-layout-problem.cc:1197 +msgid "staff-affinities should only decrease" +msgstr "staff-affinities sollten nur abnehmen" -#: text-spanner-engraver.cc:86 -msgid "already have a text spanner" -msgstr "Textklammer bereits vorhanden" +#: page-turn-page-breaking.cc:168 +#, c-format +msgid "page-turn-page-breaking: breaking from %d to %d" +msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d" -#: text-spanner-engraver.cc:132 -msgid "unterminated text spanner" -msgstr "unbegrenzte Textklammer" +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +msgstr "Erster Seitenwechsel kann nicht auf einzelne Seite gelegt werden. In Betracht zu ziehen wäre das Setzen von first-page-number auf gerade Zahl." -#: clef.cc:65 +#: page-turn-page-breaking.cc:230 #, c-format -msgid "clef `%s' not found" -msgstr "Schlüssel »%s« nicht gefunden" +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "Seiten- und Zeilenumbrüche werden berechnet (%d mögliche Seitenumbrüche)..." -#. -#. Todo: should make typecheck? -#. -#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. -#. -#: time-signature-engraver.cc:75 +#: page-turn-page-breaking.cc:300 #, c-format -msgid "strange time signature found: %d/%d" -msgstr "seltsame Taktart gefunden: %d/%d" +msgid "break starting at page %d" +msgstr "Umbruch beginnt auf Seite %d" -#: lily-parser-scheme.cc:82 +#: page-turn-page-breaking.cc:301 #, c-format -msgid "Changing working directory to: `%s'" -msgstr "Aktuelles Verzeichnis wird zu »%s« geändert" +msgid "\tdemerits: %f" +msgstr "Optimale Bewertung: %f" -#: lily-parser-scheme.cc:99 +#: page-turn-page-breaking.cc:302 #, c-format -msgid "cannot find init file: `%s'" -msgstr "Init-Datei kann nicht gefunden werden: »%s«" +msgid "\tsystem count: %d" +msgstr "\tSystemanzahl: %d" -#: lily-parser-scheme.cc:118 +#: page-turn-page-breaking.cc:303 #, c-format -msgid "Processing `%s'" -msgstr "»%s« wird verarbeitet" - -#: lily-parser-scheme.cc:204 -msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." -msgstr "ly:parser-parse-string ist nur mit einem neuen Parser gültig. Anstelle dessen ly:parser-include-string benutzen." +msgid "\tpage count: %d" +msgstr "\tSeitenanzahl: %d" -#: custos.cc:88 +#: page-turn-page-breaking.cc:304 #, c-format -msgid "custos `%s' not found" -msgstr "Custos »%s« nicht gefunden" +msgid "\tprevious break: %d" +msgstr "\tvorheriger Umbruch: %d" -#: program-option-scheme.cc:237 +#: pango-font.cc:205 #, c-format -msgid "no such internal option: %s" -msgstr "keine solche interne Option: %s" +msgid "" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" +msgstr "" +"Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n" +"Glyph U+%0X wird übersprungen, Datei %s" -#: rest-collision.cc:146 -msgid "cannot resolve rest collision: rest direction not set" -msgstr "Zusammenstoß von Pausen kann nicht aufgelöst werden: Richtung von Pausen nicht gesetzt" +#: pango-font.cc:242 +#, c-format +msgid "no PostScript font name for font `%s'" +msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«" -#: rest-collision.cc:160 rest-collision.cc:205 -msgid "too many colliding rests" -msgstr "zu viele kollidierende Pausen" +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen" -#: episema-engraver.cc:75 -msgid "already have an episema" -msgstr "Episema bereits vorhanden" +#: paper-book.cc:214 +#, c-format +msgid "program option -dprint-pages not supported by backend `%s'" +msgstr "Programmoption -dprint-pages nicht von Backend »%s« unterstützt" -#: episema-engraver.cc:88 -msgid "cannot find start of episema" -msgstr "Anfang des Episema kann nicht gefunden werden" +#: paper-book.cc:233 +#, c-format +msgid "program option -dpreview not supported by backend `%s'" +msgstr "Programmoption -dpreview nicht von »%s« unterstützt" -#: episema-engraver.cc:137 -msgid "unterminated episema" -msgstr "unbegrenztes Episema" +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "erzwungener Umbruch war durch anderes Ereignis aufgehoben, sollten Taktüberprüfungen vorgenommen werden?" -#: grob-property.cc:34 +#: paper-outputter-scheme.cc:41 #, c-format -msgid "%d: %s" -msgstr "%d: %s" +msgid "Layout output to `%s'..." +msgstr "Layout nach »%s« ausgeben..." -#: grob-property.cc:173 +#: paper-score.cc:134 #, c-format -msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" -msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden" +msgid "Element count %d (spanners %d) " +msgstr "Elementanzahl: %d (Klammern: %d)" -#: relocate.cc:54 -#, c-format -msgid "Setting %s to %s" -msgstr "%s wird auf %s gesetzt" +#: paper-score.cc:138 +msgid "Preprocessing graphical objects..." +msgstr "Vorverarbeitung der grafischen Elemente..." -#: relocate.cc:74 -#, c-format -msgid "no such file: %s for %s" -msgstr "keine solche Datei: %s für %s" +#: parse-scm.cc:121 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck" -#: relocate.cc:84 relocate.cc:102 -#, c-format -msgid "no such directory: %s for %s" -msgstr "kein solches Verzeichnis: %s für %s" +#: partial-iterator.cc:45 +msgid "trying to use \\partial after the start of a piece" +msgstr "versuche, \\partial nach dem Beginn eines Stückes einzusetzen" -#: relocate.cc:94 +#: pdf-scheme.cc:50 #, c-format -msgid "%s=%s (prepend)\n" -msgstr "%s=%s (voranstellen)\n" +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "Konversion der Zeichenkette »%s« nach UTF16be fehlgeschlagen: %s" -#: relocate.cc:124 -#, c-format -msgid "not relocating, no %s/ or current/ found under %s" -msgstr "keine Verlagerung, kein %s/ oder current/ unter %s gefunden" +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "unbegrenzte Prozentwiederholung" -#: relocate.cc:135 -#, c-format -msgid "Relocation: compile datadir=%s, new datadir=%s" -msgstr "Verlagerung: Kompilier-Datenverzeichnis=%s, neues Datenverzeichnis=%s" +#: performance.cc:54 +msgid "Track..." +msgstr "Spur..." -#: relocate.cc:148 +#: performance.cc:82 #, c-format -msgid "Relocation: framework_prefix=%s" -msgstr "Verlagerung: framework_prefix=%s" +msgid "MIDI output to `%s'..." +msgstr "MIDI-Ausgabe nach »%s«..." -#: relocate.cc:189 +#: phrasing-slur-engraver.cc:101 slur-engraver.cc:102 #, c-format -msgid "Relocation: is absolute: argv0=%s" -msgstr "Verlagerung: ist absolut: argv0=%s" +msgid "direction of %s invalid: %d" +msgstr "Richtung von %s ungültig: %d" -#: relocate.cc:196 -#, c-format -msgid "Relocation: from cwd: argv0=%s" -msgstr "Verlagerung: von cwd: argv0=%s" +#: phrasing-slur-engraver.cc:175 +msgid "unterminated phrasing slur" +msgstr "nicht beendeter Phrasierungsbogen" -#: relocate.cc:213 -#, c-format -msgid "" -"Relocation: from PATH=%s\n" -"argv0=%s" -msgstr "" -"Verlagerung: von PATH=%s\n" -"argv0=%s" +#: phrasing-slur-engraver.cc:210 +msgid "cannot end phrasing slur" +msgstr "Phrasierungsbogen kann nicht beendet werden" -#: relocate.cc:240 -msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" -msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden" +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: phrasing-slur-engraver.cc:230 +msgid "already have phrasing slur" +msgstr "habe bereits einen Phrasierungsbogen" -#: relocate.cc:367 +#: piano-pedal-engraver.cc:279 #, c-format -msgid "Relocation file: %s" -msgstr "Verlagerungsdatei: %s" +msgid "expect 3 strings for piano pedals, found: %ld" +msgstr "3 Textketten für Piano-Pedal erwartet, %ld gefunden" -#: relocate.cc:373 source-file.cc:65 +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 +#: piano-pedal-performer.cc:104 #, c-format -msgid "cannot open file: `%s'" -msgstr "Datei kann nicht geöffnet werden: »%s«" +msgid "cannot find start of piano pedal: `%s'" +msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«" -#: relocate.cc:403 +#: piano-pedal-engraver.cc:340 #, c-format -msgid "Unknown relocation command %s" -msgstr "Unbekannter Verlagerungsbefehl %s" +msgid "cannot find start of piano pedal bracket: `%s'" +msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«" -#: translator-group.cc:188 +#: program-option-scheme.cc:235 #, c-format -msgid "cannot find: `%s'" -msgstr "»%s« kann nicht gefunden werden" - -#: phrasing-slur-engraver.cc:157 -msgid "unterminated phrasing slur" -msgstr "nicht beendeter Phrasierungsbogen" +msgid "no such internal option: %s" +msgstr "keine solche interne Option: %s" -#: lyric-engraver.cc:176 -msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." -msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden." +#: property-iterator.cc:93 +#, c-format +msgid "not a grob name, `%s'" +msgstr "Kein Name für grafische Objekte (grob): »%s«" -#: page-breaking.cc:248 -msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" -msgstr "ignoriere min-systems-per-page und max-systems-per-page weil systems-per-page definiert wurde" +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " +msgstr "Oktavprüfung gescheitert, Rückgabe: " -#: page-breaking.cc:253 -msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" -msgstr "min-systems-per-page ist größer als max-systems-per-page, beide Werte werden ignoriert" +#: relocate.cc:52 +#, c-format +msgid "Setting %s to %s" +msgstr "%s wird auf %s gesetzt" -#: performance.cc:54 -msgid "Track..." -msgstr "Spur..." +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, c-format +msgid "no such file: %s for %s" +msgstr "keine solche Datei: %s für %s" -#: performance.cc:83 -msgid "MIDI channel wrapped around" -msgstr "MIDI-Kanal zurückgesprungen" +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 +#, c-format +msgid "no such directory: %s for %s" +msgstr "kein solches Verzeichnis: %s für %s" -#: performance.cc:84 -msgid "remapping modulo 16" -msgstr "modulo 16 neu zuordnen" +#: relocate.cc:93 +#, c-format +msgid "%s=%s (prepend)\n" +msgstr "%s=%s (voranstellen)\n" -#: performance.cc:111 +#: relocate.cc:124 #, c-format -msgid "MIDI output to `%s'..." -msgstr "MIDI-Ausgabe nach »%s«..." +msgid "not relocating, no %s/ or current/ found under %s" +msgstr "keine Verlagerung, kein %s/ oder current/ unter %s gefunden" -#: tuplet-engraver.cc:107 -msgid "No tuplet to end" -msgstr "Keine rhythmische Gruppe zu beenden" +#: relocate.cc:134 +#, c-format +msgid "Relocation: compile datadir=%s, new datadir=%s" +msgstr "Verlagerung: Kompilier-Datenverzeichnis=%s, neues Datenverzeichnis=%s" -#: gregorian-ligature-engraver.cc:70 +#: relocate.cc:146 #, c-format -msgid "\\%s ignored" -msgstr "\\%s ignoriert" +msgid "Relocation: framework_prefix=%s" +msgstr "Verlagerung: framework_prefix=%s" -#: gregorian-ligature-engraver.cc:75 +#: relocate.cc:186 #, c-format -msgid "implied \\%s added" -msgstr "implizites \\%s hinzugefügt" +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "Verlagerung: ist absolut: argv0=%s\n" -#. ligature may not start with 2nd head of pes or flexa -#: gregorian-ligature-engraver.cc:224 -msgid "cannot apply `\\~' on first head of ligature" -msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden" +#: relocate.cc:192 +#, c-format +msgid "Relocation: from cwd: argv0=%s\n" +msgstr "Verlagerung: von cwd: argv0=%s\n" -#. (pitch == prev_pitch) -#: gregorian-ligature-engraver.cc:236 -msgid "cannot apply `\\~' on heads with identical pitch" -msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden" +#: relocate.cc:208 +#, c-format +msgid "" +"Relocation: from PATH=%s\n" +"argv0=%s" +msgstr "" +"Verlagerung: von PATH=%s\n" +"argv0=%s" -#: chord-tremolo-engraver.cc:88 -msgid "No tremolo to end" -msgstr "Kein Tremolo zu beenden" +#: relocate.cc:235 +msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" +msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden" -#: chord-tremolo-engraver.cc:109 -msgid "unterminated chord tremolo" -msgstr "unbegrenztes Akkord-Tremolo" +#: relocate.cc:360 +#, c-format +msgid "Relocation file: %s" +msgstr "Verlagerungsdatei: %s" -#: axis-group-engraver.cc:94 -msgid "Axis_group_engraver: vertical group already has a parent" -msgstr "Axis_group_engraver: vertikale Gruppe hat bereits einen Vater" +#: relocate.cc:364 source-file.cc:65 +#, c-format +msgid "cannot open file: `%s'" +msgstr "Datei kann nicht geöffnet werden: »%s«" -#: axis-group-engraver.cc:95 -msgid "are there two Axis_group_engravers?" -msgstr "gibt es zwei Axis_group_engravers?" +#: relocate.cc:394 +#, c-format +msgid "Unknown relocation command %s" +msgstr "Unbekannter Verlagerungsbefehl %s" -#: axis-group-engraver.cc:96 -msgid "removing this vertical group" -msgstr "Entfernen dieser vertikalen Gruppe" +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "der rhythmische Kopf gehört nicht zu einer rhythmischen Kolumne" -#: cluster.cc:120 -#, c-format -msgid "unknown cluster style `%s'" -msgstr "unbekannter Clusterstil: »%s«" +#: rest-collision.cc:146 +msgid "cannot resolve rest collision: rest direction not set" +msgstr "Zusammenstoß von Pausen kann nicht aufgelöst werden: Richtung von Pausen nicht gesetzt" -#: cluster.cc:157 -msgid "junking empty cluster" -msgstr "Leeres Cluster wird verworfen" +#: rest-collision.cc:157 rest-collision.cc:266 +msgid "too many colliding rests" +msgstr "zu viele kollidierende Pausen" -#: context-property.cc:42 -msgid "need symbol arguments for \\override and \\revert" -msgstr "Symbol-Argumente für \\override und \\revert benötigt" +#: rest.cc:192 +#, c-format +msgid "rest `%s' not found" +msgstr "Pause »%s« nicht gefunden" -#: source-file.cc:85 +#: score-engraver.cc:78 #, c-format -msgid "expected to read %d characters, got %d" -msgstr "%d Zeichen erwartet, %d erhalten" +msgid "cannot find `%s'" +msgstr "»%s« kann nicht gefunden werden" -#: axis-group-interface.cc:631 -msgid "an outside-staff object should have a direction, defaulting to up" -msgstr "Ein Objekt außerhalb der Notenzeile sollte eine Richtung haben, Vorgabe ist »nach oben«" +#: score-engraver.cc:80 +msgid "Music font has not been installed properly." +msgstr "Musik-Schriftart wurde nicht ordnungsgemäß installiert." -#: coherent-ligature-engraver.cc:111 +#: score-engraver.cc:82 #, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" -msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul" +msgid "Search path `%s'" +msgstr "Suchpfad »%s«" -#: percent-repeat-engraver.cc:148 -msgid "unterminated percent repeat" -msgstr "unbegrenzte Prozentwiederholung" +#: score-engraver.cc:84 +msgid "Aborting" +msgstr "Abbruch" -#: note-head.cc:76 -#, c-format -msgid "none of note heads `%s' or `%s' found" -msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden" +#: score.cc:172 +msgid "already have music in score" +msgstr "es sind bereits Noten in der Partitur" -#: relative-octave-check.cc:49 -msgid "Failed octave check, got: " -msgstr "Oktavprüfung gescheitert, Rückgabe: " +#: score.cc:173 +msgid "this is the previous music" +msgstr "Dies sind die vorhergehenden Noten" + +#: score.cc:178 +msgid "errors found, ignoring music expression" +msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert" #. FIXME: #: script-engraver.cc:113 @@ -2686,342 +2970,443 @@ msgstr "Interpretation für Artikulation unbekannt:" msgid " scheme encoding: " msgstr " Scheme-Kodierung: " -#: all-font-metrics.cc:156 -#, c-format -msgid "cannot find font: `%s'" -msgstr "Schriftart kann nicht gefunden werden: »%s«" - -#: property-iterator.cc:85 -#, c-format -msgid "not a grob name, `%s'" -msgstr "Kein Name für grafische Objekte (grob): »%s«" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" +msgstr "Richtung darf nicht CENTER sein in ly:skyline-pair::skyline" -#: bar-check-iterator.cc:84 -#, c-format -msgid "barcheck failed at: %s" -msgstr "Taktüberprüfung gescheitert bei: %s" +#: slur-engraver.cc:176 +msgid "unterminated slur" +msgstr "unbegrenzter Legatobogen" -#: stem.cc:116 -msgid "weird stem size, check for narrow beams" -msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen" +#: slur-engraver.cc:211 +msgid "cannot end slur" +msgstr "Legatobogen kann nicht beendet werden" -#: stem.cc:657 -#, c-format -msgid "flag `%s' not found" -msgstr "Fähnchen »%s« nicht gefunden" +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: slur-engraver.cc:231 +msgid "already have slur" +msgstr "habe bereits einen Bogen" -#: stem.cc:673 +#: slur.cc:430 #, c-format -msgid "flag stroke `%s' not found" -msgstr "Fähnchenstrich »%s« nicht gefunden" - -#: global-context-scheme.cc:96 global-context-scheme.cc:114 -msgid "no music found in score" -msgstr "keine Musik in der Partitur gefunden" - -#: global-context-scheme.cc:104 -msgid "Interpreting music... " -msgstr "Interpretation der Musik..." +msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?" -#: global-context-scheme.cc:127 +#: source-file.cc:85 #, c-format -msgid "elapsed time: %.2f seconds" -msgstr "verstrichene Zeit: %.2f Sekunden" +msgid "expected to read %d characters, got %d" +msgstr "%d Zeichen erwartet, %d erhalten" -#: translator-group-ctors.cc:40 -#, c-format -msgid "fatal error. Couldn't find type: %s" -msgstr "schwerwiegender Fehler. Typ konnte nicht gefunden werden: %s" +#: staff-performer.cc:275 +msgid "MIDI channel wrapped around" +msgstr "MIDI-Kanal zurückgesprungen" -#: mensural-ligature.cc:171 -msgid "Mensural_ligature: unexpected case fall-through" -msgstr "Mensural_ligature: unerwarteter case-Ausgang" +#: staff-performer.cc:276 +msgid "remapping modulo 16" +msgstr "modulo 16 neu zuordnen" -#: mensural-ligature.cc:233 -msgid "Mensural_ligature: (join_right == 0)" -msgstr "Mensural_ligature: (join_right == 0)" +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" +msgstr "Tremolodauer ist zu lang" -#: page-turn-page-breaking.cc:168 +#: stem-engraver.cc:162 #, c-format -msgid "page-turn-page-breaking: breaking from %d to %d" -msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d" - -#: page-turn-page-breaking.cc:217 -msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." -msgstr "Erster Seitenwechsel kann nicht auf einzelne Seite gelegt werden. In Betracht zu ziehen wäre das Setzen von first-page-number auf gerade Zahl." +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d/%d) hinzugefügt" -#: page-turn-page-breaking.cc:230 -#, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." -msgstr "Seiten- und Zeilenumbrüche werden berechnet (%d mögliche Seitenumbrüche)..." +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" +msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen" -#: page-turn-page-breaking.cc:300 -#, c-format -msgid "break starting at page %d" -msgstr "Umbruch beginnt auf Seite %d" +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" +msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen" -#: page-turn-page-breaking.cc:301 +#: system.cc:200 #, c-format -msgid "\tdemerits: %f" -msgstr "Optimale Bewertung: %f" +msgid "Element count %d" +msgstr "Elementanzahl %d." -#: page-turn-page-breaking.cc:302 +#: system.cc:480 #, c-format -msgid "\tsystem count: %d" -msgstr "\tSystemanzahl: %d" +msgid "Grob count %d" +msgstr "Anzahl der grafischen Objekte (grob): %d" -#: page-turn-page-breaking.cc:303 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 #, c-format -msgid "\tpage count: %d" -msgstr "\tSeitenanzahl: %d" +msgid "Cyclic markup detected: %s" +msgstr "Zyklische Beschriftung gefunden: %s" -#: page-turn-page-breaking.cc:304 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 #, c-format -msgid "\tprevious break: %d" -msgstr "\tvorheriger Umbruch: %d" - -#: lily-parser.cc:106 -msgid "Parsing..." -msgstr "Analysieren..." +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "Tiefe der Beschriftung geht über maximalen Wert %d, Beschriftung: %s" -#: lily-parser.cc:134 -msgid "braces do not match" -msgstr "Klammern passen nicht zueinander" - -#: score.cc:178 -msgid "already have music in score" -msgstr "es sind bereits Noten in der Partitur" +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" +msgstr "Anfang der Textklammer kann nicht gefunden werden" -#: score.cc:179 -msgid "this is the previous music" -msgstr "Dies sind die vorhergehenden Noten" +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" +msgstr "Textklammer bereits vorhanden" -#: score.cc:184 -msgid "errors found, ignoring music expression" -msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert" +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" +msgstr "unbegrenzte Textklammer" -#: change-iterator.cc:34 -#, c-format -msgid "cannot change `%s' to `%s'" -msgstr "»%s« kann nicht in »%s« geändert werden" +#: tie-engraver.cc:117 +msgid "unterminated tie" +msgstr "unbegrenzter Bindebogen" -#. FIXME: constant error message. -#: change-iterator.cc:93 -msgid "cannot find context to switch to" -msgstr "es kann kein Kontext zum Umschalten gefunden werden" +#: tie-engraver.cc:348 +msgid "lonely tie" +msgstr "einsamer Bindebogen" -#. We could change the current translator's id, but that would make -#. errors hard to catch. #. -#. last->translator_id_string () = get_change -#. ()->change_to_id_string (); -#: change-iterator.cc:102 +#. Todo: should make typecheck? +#. +#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. +#. +#: time-signature-engraver.cc:75 #, c-format -msgid "not changing to same context type: %s" -msgstr "kein Umschalten zum gleichen Kontexttypen: %s" - -#. FIXME: uncomprehensable message -#: change-iterator.cc:106 -msgid "none of these in my family" -msgstr "keiner davon befindet sich in meiner Familie" +msgid "strange time signature found: %d/%d" +msgstr "seltsame Taktart gefunden: %d/%d" #. If there is no such symbol, we default to the numbered style. #. (Here really with a warning!) -#: time-signature.cc:94 +#: time-signature.cc:122 #, c-format msgid "time signature symbol `%s' not found; reverting to numbered style" -msgstr "Taktart-Symbol »%s« nicht gefunden; wird in nummerierten Stil umgewandelt" - -#: grob-interface.cc:68 -#, c-format -msgid "Unknown interface `%s'" -msgstr "Unbekannte Schnittstelle »%s«" - -#: grob-interface.cc:79 -#, c-format -msgid "Grob `%s' has no interface for property `%s'" -msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«" +msgstr "Taktart-Symbol »%s« nicht gefunden; wird in nummerierten Stil umgewandelt" -#: open-type-font.cc:44 +#: translator-ctors.cc:65 #, c-format -msgid "cannot allocate %lu bytes" -msgstr "es können keine %lu Bytes angefordert werden" +msgid "unknown translator: `%s'" +msgstr "unbekannter Übersetzer: »%s«" -#: open-type-font.cc:48 +#: translator-group-ctors.cc:40 #, c-format -msgid "cannot load font table: %s" -msgstr "Schriftarttabelle kann nicht geladen werden: %s" +msgid "fatal error. Couldn't find type: %s" +msgstr "schwerwiegender Fehler. Typ konnte nicht gefunden werden: %s" -#: open-type-font.cc:53 +#: translator-group.cc:188 #, c-format -msgid "FreeType error: %s" -msgstr "FreeType-Fehler: %s" +msgid "cannot find: `%s'" +msgstr "»%s« kann nicht gefunden werden" -#: open-type-font.cc:111 +#: translator.cc:326 #, c-format -msgid "unsupported font format: %s" -msgstr "nicht unterstütztes Schriftartformat: %s" +msgid "Two simultaneous %s events, junking this one" +msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen" -#: open-type-font.cc:113 +#: translator.cc:327 #, c-format -msgid "error reading font file %s: %s" -msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s" +msgid "Previous %s event here" +msgstr "Vorheriges %s-Ereignis hier" -#: open-type-font.cc:188 +#: ttf.cc:480 ttf.cc:528 #, c-format -msgid "FT_Get_Glyph_Name () Freetype error: %s" -msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s" +msgid "font index %d too large for font `%s', using index 0" +msgstr "Font-Intex %d zu groß für Font »%s«, benutze Index 0" -#: midi-stream.cc:39 +#: ttf.cc:512 ttf.cc:562 +msgid "font index must be non-negative, using index 0" +msgstr "font-index muss nicht-negativ sein, benutze Index 0" + +#: tuplet-engraver.cc:110 +msgid "No tuplet to end" +msgstr "Keine rhythmische Gruppe zu beenden" + +#: vaticana-ligature-engraver.cc:400 #, c-format -msgid "cannot open for write: %s: %s" -msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s" +msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" +msgstr "Präfix(e) »%s« dieses Kopfes gemäß den Einschränkungen des ausgewählten Ligaturstils ignoriert" -#: midi-stream.cc:55 +#: vaticana-ligature-engraver.cc:466 +msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch. The ligature should be split." +msgstr "Unklarer Einsatz von Punkten in Ligatur: es gibt viele punktierte Noten mit der gleichen Tonhöhe. Die Ligatur sollte aufgeteilt werden." + +#: vaticana-ligature-engraver.cc:524 +msgid "This ligature has a dotted head followed by a non-dotted head. The ligature should be split after the last dotted head before this head." +msgstr "Diese Ligatur hat einen punktierten Notenkopf gefolgt von einem Notenkopf ohne Punkt. Die Ligatur sollte nach der letzten punktierten Note vor der aktuellen Note aufgeteilt werden." + +#: vaticana-ligature-engraver.cc:736 #, c-format -msgid "cannot write to file: `%s'" -msgstr "Es kann nicht in Datei geschrieben werden: »%s«" +msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" +msgstr "Vaticana_ligature_engraver: setzen »spacing-increment = %f«: ptr=%ul" + +#: vaticana-ligature.cc:94 +msgid "flexa-height undefined; assuming 0" +msgstr "flexa-Höhe nicht definiert: 0 angenommen" + +#: vaticana-ligature.cc:99 +msgid "ascending vaticana style flexa" +msgstr "aufsteigender Vaticana-Stil flexa" + +#. fixme: be more verbose. +#: volta-engraver.cc:110 +msgid "cannot end volta spanner" +msgstr "Volta-Klammer kann nicht beendet werden" + +#: volta-engraver.cc:120 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "Wiederholungsklammer bereits vorhanden, wird vorzeitig beendet" + +#: volta-engraver.cc:124 +msgid "also already have an ended spanner" +msgstr "endende Textklammer auch bereits vorhanden" + +#: volta-engraver.cc:125 +msgid "giving up" +msgstr "aufgeben" + +#: parser.yy:161 parser.yy:175 +msgid "Too much lookahead" +msgstr "Zu viel Vorgriff" -#: parser.yy:820 +#: parser.yy:835 parser.yy:1284 +msgid "not a context mod" +msgstr "kein solcher Kontextmodus" + +#: parser.yy:1027 msgid "\\paper cannot be used in \\score, use \\layout instead" msgstr "\\paper kann nicht in \\source verwendet werden; stattdessen \\layout verwenden" -#: parser.yy:844 +#: parser.yy:1051 msgid "need \\paper for paper block" msgstr "Für Papier-Block wird \\paper benötigt" -#: parser.yy:1363 -msgid "only \\consists takes non-string argument." -msgstr "nur \\consists versteht ein Nicht-Zeichenketten-Argument" +#: parser.yy:1204 +msgid "Ignoring non-music expression" +msgstr "Nicht-musikalischer Ausdruck wird ignoriert" + +#: parser.yy:2044 +msgid "only \\consists and \\remove take non-string argument." +msgstr "nur \\consists und \\remove verstehen ein Nicht-Zeichenketten-Argument." -#: parser.yy:1376 +#: parser.yy:2057 msgid "Grob name should be alphanumeric" msgstr "Grob-Name sollte alphanumerisch sein" -#: parser.yy:1685 -msgid "second argument must be pitch list" -msgstr "zweites Argument muss eine Tonhöhenliste sein" +#: parser.yy:2261 +msgid "not a rhythmic event" +msgstr "kein rhytmisches Ereignis" -#: parser.yy:1716 parser.yy:1721 parser.yy:2194 +#: parser.yy:2357 parser.yy:2362 msgid "have to be in Lyric mode for lyrics" msgstr "muss in Liedtextmodus sein um Liedtext setzen zu können" -#: parser.yy:1818 +#: parser.yy:2477 msgid "expecting string as script definition" msgstr "Zeichenkette als Skriptdefinition erwartet" -#: parser.yy:1973 parser.yy:2024 +#: parser.yy:2637 parser.yy:2681 #, c-format msgid "not a duration: %d" msgstr "keine gültige Dauer: %d" -#: parser.yy:2148 +#: parser.yy:2800 msgid "have to be in Note mode for notes" msgstr "Muss im Notenmodus sein für Noten" -#: parser.yy:2209 +#: parser.yy:2855 msgid "have to be in Chord mode for chords" msgstr "Muss im Akkordmodus sein für Akkorde" -#: lexer.ll:190 +#: parser.yy:3115 +msgid "not a markup" +msgstr "Keine Textbeschriftung" + +#: lexer.ll:218 msgid "stray UTF-8 BOM encountered" msgstr "verirrtes UTF-8 BOM gefunden" -#: lexer.ll:194 +#: lexer.ll:221 msgid "Skipping UTF-8 BOM" msgstr "UTF-8 BOM wird übersprungen" -#: lexer.ll:249 +#: lexer.ll:279 #, c-format msgid "Renaming input to: `%s'" msgstr "Eingabe in »%s« umbenannt" -#: lexer.ll:266 +#: lexer.ll:296 msgid "quoted string expected after \\version" msgstr "zitierte Zeichenkette hinter \\version erwartet" -#: lexer.ll:270 +#: lexer.ll:300 msgid "quoted string expected after \\sourcefilename" msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet" -#: lexer.ll:274 +#: lexer.ll:304 msgid "integer expected after \\sourcefileline" msgstr "Ganzzahl hinter \\sourcefilename erwartet" -#: lexer.ll:287 -msgid "EOF found inside a comment" -msgstr "EOF innerhalb eines Kommentares gefunden" - -#: lexer.ll:302 +#: lexer.ll:327 msgid "\\maininput not allowed outside init files" msgstr "\\maininput ist außerhalb von Init-Dateien nicht erlaubt" -#: lexer.ll:326 +#: lexer.ll:351 #, c-format msgid "wrong or undefined identifier: `%s'" msgstr "falscher oder ungültiger Bezeichner: »%s«" +#: lexer.ll:377 +msgid "string expected after \\include" +msgstr "Zeichenkette hinter \\include erwartet" + #. backup rule -#: lexer.ll:335 +#: lexer.ll:387 msgid "end quote missing" msgstr "schließendes Anführungszeichen fehlt" -#: lexer.ll:485 +#: lexer.ll:558 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "Klammer am Ende von Liedtext gefunden. Haben Sie ein Leerzeichen vergessen?" -#: lexer.ll:595 +#: lexer.ll:672 msgid "Brace found at end of markup. Did you forget a space?" msgstr "Klammer am Ende des Auszugs gefunden. Haben Sie ein Leerzeichen vergessen?" -#: lexer.ll:699 +#: lexer.ll:684 +msgid "EOF found inside a comment" +msgstr "EOF innerhalb eines Kommentares gefunden" + +#: lexer.ll:782 #, c-format -msgid "invalid character: `%c'" -msgstr "Ungültiges Zeichen: »%c«" +msgid "invalid character: `%s'" +msgstr "Ungültiges Zeichen: »%s«" -#: lexer.ll:814 lexer.ll:815 +#: lexer.ll:903 lexer.ll:904 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "Ungültige Fluchtsequenz: »\\%s«" -#: lexer.ll:924 lexer.ll:925 +#: lexer.ll:1186 lexer.ll:1187 +msgid "non-UTF-8 input" +msgstr "nicht-UTF8-Eingabe" + +#: lexer.ll:1230 lexer.ll:1231 #, c-format msgid "file too old: %s (oldest supported: %s)" msgstr "Datei zu alt: %s (älteste unterstützte: %s)" -#: lexer.ll:925 lexer.ll:926 +#: lexer.ll:1231 lexer.ll:1232 msgid "consider updating the input with the convert-ly script" msgstr "Erwägen Sie die Aktualisierung der Eingabe mit dem Skript convert-ly" -#: lexer.ll:931 lexer.ll:932 +#: lexer.ll:1237 lexer.ll:1238 #, c-format msgid "program too old: %s (file requires: %s)" msgstr "Programm zu alt: %s (Datei erfordert: %s)" -#: documentation-lib.scm:59 +#: backend-library.scm:27 #, scheme-format -msgid "Processing ~S..." -msgstr "~S wird verarbeitet..." +msgid "Invoking `~a'..." +msgstr "»~s« wird aufgerufen..." -#: documentation-lib.scm:176 +#: backend-library.scm:31 #, scheme-format -msgid "Writing ~S..." -msgstr "~S wird geschrieben..." +msgid "`~a' failed (~a)\n" +msgstr "»~a« gescheitert (~a)\n" -#: documentation-lib.scm:198 +#: backend-library.scm:90 #, scheme-format -msgid "cannot find description for property ~S (~S)" -msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden" +msgid "Converting to `~a'...\n" +msgstr "Konvertierung nach »~a«...\n" -#: parser-clef.scm:141 parser-clef.scm:181 +#. Do not try to guess the name of the png file, +#. GS produces PNG files like BASE-page%d.png. +#: backend-library.scm:99 #, scheme-format -msgid "unknown clef type `~a'" -msgstr "unbekannter Notenschlüsseltyp »~a«" +msgid "Converting to ~a..." +msgstr "Konvertierung nach ~a..." -#: parser-clef.scm:142 parser-clef.scm:182 +#: backend-library.scm:137 #, scheme-format -msgid "supported clefs: ~a" -msgstr "unterstützte Notenschlüssel: ~a" +msgid "Writing header field `~a' to `~a'..." +msgstr "Kopfzeile »~a« wird nach »~a« geschrieben" + +#: backend-library.scm:187 +#, scheme-format +msgid "missing stencil expression `~S'" +msgstr "fehlender Stencil-Ausdruck »~S«" + +#: chord-entry.scm:52 +#, scheme-format +msgid "Spurious garbage following chord: ~A" +msgstr "Anscheinend sinnloser Text nach Akkord: ~A" + +#: define-context-properties.scm:31 define-grob-properties.scm:21 +#: define-music-properties.scm:21 +#, scheme-format +msgid "symbol ~S redefined" +msgstr "Symbol ~S redefiniert" + +#: define-event-classes.scm:67 +#, scheme-format +msgid "unknown parent class `~a'" +msgstr "Unbekannte Elternklasse »~a«" + +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" +msgstr "keine Systeme in \\score-Markup gefunden, hat es einen \\layout-Block?" + +#: define-markup-commands.scm:2614 +#, scheme-format +msgid "Cannot find glyph ~a" +msgstr "Kann kein Zeichen ~a finden" + +#: define-markup-commands.scm:3040 +#, scheme-format +msgid "no brace found for point size ~S " +msgstr "Keine Klammer in Größe ~S pt gefunden" + +#: define-markup-commands.scm:3041 +#, scheme-format +msgid "defaulting to ~S pt" +msgstr "Setze Standard ~S pt" + +#: define-markup-commands.scm:3194 +#, scheme-format +msgid "not a valid duration string: ~a" +msgstr "keine gültige Dauer: ~a" + +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" +msgstr "Symbol erwartet: ~S" + +#: define-music-types.scm:768 +#, scheme-format +msgid "cannot find music object: ~S" +msgstr "Musikobjekt kann nicht gefunden werden: ~S" + +#: define-music-types.scm:787 +#, scheme-format +msgid "unknown repeat type `~S'" +msgstr "unbekannter Wiederholungstyp »~S«" + +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" +msgstr "Siehe define-music-types.scm für unterstützte Wiederholungen" + +#: define-note-names.scm:962 +msgid "Select note names language." +msgstr "Wählen Sie die Sprache der Notenbezeichnungen." + +#: define-note-names.scm:968 +#, scheme-format +msgid "Using `~a' note names..." +msgstr "Benutze Notenbezeichnung »~a«..." + +#: define-note-names.scm:971 +#, scheme-format +msgid "Could not find language `~a'. Ignoring." +msgstr "Konnte Sprache »~a« nicht finden. Wird ignoriert." #: document-backend.scm:132 #, scheme-format @@ -3038,69 +3423,169 @@ msgstr "Schnittstelle für Eigenschaft ~S kann nicht gefunden werden" msgid "unknown Grob interface: ~S" msgstr "Unbekannte Grob-Schnittstelle: ~S" +#: documentation-lib.scm:59 +#, scheme-format +msgid "Processing ~S..." +msgstr "~S wird verarbeitet..." + +#: documentation-lib.scm:176 +#, scheme-format +msgid "Writing ~S..." +msgstr "~S wird geschrieben..." + +#: documentation-lib.scm:188 +#, scheme-format +msgid "cannot find description for property `~S' (~S)" +msgstr "Beschreibung für Eigenschaft ~S' (~S) kann nicht gefunden werden" + +#: documentation-lib.scm:209 +#, scheme-format +msgid "cannot find description for property ~S (~S)" +msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden" + +#: flag-styles.scm:151 +#, scheme-format +msgid "flag stroke `~a' or `~a' not found" +msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden" + #: framework-eps.scm:108 #, scheme-format msgid "Writing ~a..." msgstr "~a wird geschrieben..." -#: define-music-properties.scm:21 define-grob-properties.scm:21 -#: define-context-properties.scm:31 +#: framework-ps.scm:250 #, scheme-format -msgid "symbol ~S redefined" -msgstr "Symbol ~S redefiniert" +msgid "cannot embed ~S=~S" +msgstr "~S=~S kann nicht eingebettet werden" -#: paper.scm:115 -msgid "set-global-staff-size: not in toplevel scope" -msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich" +#: framework-ps.scm:293 +#, scheme-format +msgid "cannot extract file matching ~a from ~a" +msgstr "Eine zu ~a passende Datei kann nicht aus ~a gewonnen werden" + +#: framework-ps.scm:311 +#, scheme-format +msgid "do not know how to embed ~S=~S" +msgstr "Unbekannte Einbettung ~S=~S" + +#: framework-ps.scm:336 +#, scheme-format +msgid "do not know how to embed font ~s ~s ~s" +msgstr "Unbekannte Schriftsatzeinbettung ~s ~s ~s" + +#: framework-ps.scm:686 +msgid "" +"\n" +"The PostScript backend does not support the\n" +"system-by-system output. For that, use the EPS backend instead,\n" +"\n" +" lilypond -dbackend=eps FILE\n" +"\n" +"If have cut & pasted a lilypond fragment from a webpage, be sure\n" +"to only remove anything before\n" +"\n" +" %% ****************************************************************\n" +" %% Start cut-&-pastable-section\n" +" %% ****************************************************************\n" +msgstr "" +"\n" +"Das PostScript-Backend unterstützt keine System-weise Ausgabe. Dafür sollte\n" +"das EPS-Backend verwendet werden,\n" +"\n" +" lilypond -dbackend=eps \n" +"\n" +"Beim Kopieren von Lilypond-Fragmenten von Webseiten sollte nur alles vor\n" +"\n" +" %% ****************************************************************\n" +" %% Start cut-&-pastable-section\n" +" %% ****************************************************************\n" +"\n" +"entfernt werden\n" + +#: framework-svg.scm:84 +#, scheme-format +msgid "Updating font into: ~a" +msgstr "Schriftart wird nach ~a aktualisiert" + +#: graphviz.scm:64 +#, scheme-format +msgid "Writing graph `~a'..." +msgstr "Graph »~a« wird geschrieben..." + +#: layout-beam.scm:40 +#, scheme-format +msgid "Error in beam quanting. Expected (~S,~S) found ~S." +msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden." + +#: layout-beam.scm:54 +#, scheme-format +msgid "Error in beam quanting. Expected ~S 0, found ~S." +msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden." + +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" +msgstr "Musik unpassend für context-mod" + +#: lily-library.scm:349 +#, scheme-format +msgid "Cannot find context-def \\~a" +msgstr "Kann contex-def \\~a nicht finden" + +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" +msgstr "Musik unpassend für output-def" + +#: lily-library.scm:892 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." +msgstr "" +"Finde den Index zwischen @var{start} und @var{end} (eine ganze Zahl),\n" +"die den nächstmöglichen Treffer für @var{target-val} findet,\n" +"wenn auf die Funktion @var{getter} angewandt." -#: paper.scm:296 +#: lily-library.scm:966 #, scheme-format -msgid "This is not a \\layout {} object, ~S" -msgstr "Dies ist kein \\layout {} Objekt, ~S" +msgid "unknown unit: ~S" +msgstr "unbekannte Einheit: ~S" -#: paper.scm:308 +#: lily-library.scm:991 #, scheme-format -msgid "Unknown paper size: ~a" -msgstr "Unbekannte Papiergröße: ~a" +msgid "no \\version statement found, please add~afor future compatibility" +msgstr "keine \\version-Anweisung gefunden, ~a für zukünftige Kompatibilität hinzufügen" -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:323 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" -msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden" +#: lily-library.scm:997 +msgid "old relative compatibility not used" +msgstr "alte relative Kompatibilität nicht verwendet" -#: lily.scm:225 +#: lily.scm:234 msgid "Using (ice-9 curried-definitions) module\n" msgstr "Benutze Modul (ice-9 curried-definitions)\n" -#: lily.scm:230 +#: lily.scm:237 msgid "Guile 1.8\n" msgstr "Guile 1.8\n" -#: lily.scm:290 +#: lily.scm:297 #, scheme-format msgid "cannot find: ~A" msgstr "~A kann nicht gefunden werden" -#: lily.scm:350 -#, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" -msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden" - -#: lily.scm:716 -msgid "Compilation successfully completed" +#: lily.scm:708 +msgid "Success: compilation successfully completed" msgstr "Kompilation erfolgreich beendet" -#: lily.scm:717 +#: lily.scm:709 msgid "Compilation completed with warnings or errors" msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet" -#: lily.scm:779 +#: lily.scm:771 #, scheme-format msgid "job ~a terminated with signal: ~a" msgstr "Auftrag ~a mit Signal ~a beendet" -#: lily.scm:782 +#: lily.scm:774 #, scheme-format msgid "" "logfile ~a (exit ~a):\n" @@ -3109,7 +3594,7 @@ msgstr "" "Logdatei ~a (Ende ~a):\n" "~a" -#: lily.scm:804 lily.scm:882 +#: lily.scm:796 lily.scm:882 #, scheme-format msgid "failed files: ~S" msgstr "gescheiterte Dateien: ~S" @@ -3119,30 +3604,40 @@ msgstr "gescheiterte Dateien: ~S" msgid "Redirecting output to ~a..." msgstr "Ausgabeumleitung nach ~a..." -#: lily.scm:892 +#: lily.scm:892 ps-to-png.scm:66 #, scheme-format msgid "Invoking `~a'...\n" msgstr "»~a« wird aufgerufen...\n" -#: graphviz.scm:64 +#: ly-syntax-constructors.scm:66 #, scheme-format -msgid "Writing graph `~a'..." -msgstr "Graph »~a« wird geschrieben..." +msgid "~a function cannot return ~a" +msgstr "~a-Funktion kann nicht ~a ausgeben" -#: framework-svg.scm:84 +#: ly-syntax-constructors.scm:75 #, scheme-format -msgid "Updating font into: ~a" -msgstr "Schriftart wird nach ~a aktualisiert" +msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden" -#: layout-beam.scm:40 +#: ly-syntax-constructors.scm:188 #, scheme-format -msgid "Error in beam quanting. Expected (~S,~S) found ~S." -msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden." +msgid "Invalid property operation ~a" +msgstr "Ungültige Eigenschaftsoperation ~a" -#: layout-beam.scm:54 +#: markup-macros.scm:331 #, scheme-format -msgid "Error in beam quanting. Expected ~S 0, found ~S." -msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden." +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgstr "Falsche Anzahl an Argumenten: ~A erwartet, ~A gefunden: ~S" + +#: markup-macros.scm:337 +#, scheme-format +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden." + +#: markup-macros.scm:373 +#, scheme-format +msgid "Not a markup command: ~A" +msgstr "Kein Textbeschriftungsbefehl: ~A" #: modal-transforms.scm:38 msgid "'from' pitch not in scale; ignoring" @@ -3168,86 +3663,53 @@ msgstr "Tonhöhe, die umgekehrt wird, nicht in Skala, wird ignoriert" msgid "negative replication count; ignoring" msgstr "negativer Replikationszähler, wird ignoriert" -#: backend-library.scm:29 ps-to-png.scm:68 -#, scheme-format -msgid "Invoking `~a'..." -msgstr "»~s« wird aufgerufen..." - -#: backend-library.scm:34 -#, scheme-format -msgid "`~a' failed (~a)" -msgstr "»~a« gescheitert (~a)" - -#: backend-library.scm:94 -#, scheme-format -msgid "Converting to `~a'..." -msgstr "Konvertierung nach »~a«..." - -#. Do not try to guess the name of the png file, -#. GS produces PNG files like BASE-page%d.png. -#: backend-library.scm:104 -#, scheme-format -msgid "Converting to ~a..." -msgstr "Konvertierung nach ~a..." +#: music-functions.scm:272 +msgid "More alternatives than repeats. Junking excess alternatives" +msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werden verworfen" -#: backend-library.scm:142 +#: music-functions.scm:303 #, scheme-format -msgid "Writing header field `~a' to `~a'..." -msgstr "Kopfzeile »~a« wird nach »~a« geschrieben" +msgid "invalid tremolo repeat count: ~a" +msgstr "ungültige Tremolo-Wiederholung: ~a" -#: backend-library.scm:192 -#, scheme-format -msgid "missing stencil expression `~S'" -msgstr "fehlender Stencil-Ausdruck »~S«" +#: music-functions.scm:689 +msgid "Bad chord repetition" +msgstr "Falsche Akkordwiederholung" -#: to-xml.scm:191 +#: music-functions.scm:724 #, scheme-format -msgid "assertion failed: ~S" -msgstr "Behauptung gescheitert: ~S" +msgid "music expected: ~S" +msgstr "Musik erwartet: ~S" -#: chord-entry.scm:49 +#: music-functions.scm:1042 #, scheme-format -msgid "Spurious garbage following chord: ~A" -msgstr "Anscheinend sinnloser Text nach Akkord: ~A" +msgid "cannot find quoted music: `~S'" +msgstr "zitierte Musik »~S« kann nicht gefunden werden" -#: lily-library.scm:758 -msgid "" -"Find the index between @var{start} and @var{end} (an integer)\n" -"which produces the closest match to @var{target-val} if\n" -"applied to function @var{getter}." -msgstr "" -"Finde den Index zwischen @var{start} und @var{end} (eine ganze Zahl),\n" -"die den nächstmöglichen Treffer für @var{target-val} findet,\n" -"wenn auf die Funktion @var{getter} angewandt." +#: music-functions.scm:1180 +msgid "Add @var{octave-shift} to the octave of @var{pitch}." +msgstr "Füge @var{octave-shift} zur Oktave von @var{pitch} hinzu." -#: lily-library.scm:832 +#: music-functions.scm:1240 #, scheme-format -msgid "unknown unit: ~S" -msgstr "unbekannte Einheit: ~S" +msgid "Unknown octaveness type: ~S " +msgstr "Unbekannter Oktaven-Typ: »~S«" -#: lily-library.scm:858 lily-library.scm:867 -msgid "warning:" -msgstr "Warnung:" +#: music-functions.scm:1241 +msgid "Defaulting to 'any-octave." +msgstr "Setze Standard 'any-octave" -#: lily-library.scm:860 +#: music-functions.scm:1578 #, scheme-format -msgid "no \\version statement found, please add~afor future compatibility" -msgstr "keine \\version-Anweisung gefunden, ~a für zukünftige Kompatibilität hinzufügen" - -#: lily-library.scm:868 -msgid "old relative compatibility not used" -msgstr "alte relative Kompatibilität nicht verwendet" - -#: output-ps.scm:48 -msgid "Found infinity or nan in output. Substituting 0.0" -msgstr "Unendlich oder nan in Ausgabe gefunden. Wird durch 0.0 ersetzt" +msgid "unknown accidental style: ~S" +msgstr "unbekannter Versetzungszeichenstil: ~S" -#: output-ps.scm:289 output-svg.scm:550 +#: output-ps.scm:277 output-svg.scm:524 #, scheme-format msgid "unknown line-cap-style: ~S" msgstr "unbekannter line-cap-style: ~S" -#: output-ps.scm:294 output-svg.scm:556 +#: output-ps.scm:282 output-svg.scm:530 #, scheme-format msgid "unknown line-join-style: ~S" msgstr "unbekannter line-join-style: ~S" @@ -3257,83 +3719,103 @@ msgstr "unbekannter line-join-style: ~S" msgid "undefined: ~S" msgstr "nicht definiert: ~S" -#: output-svg.scm:151 +#: output-svg.scm:157 #, scheme-format msgid "cannot decypher Pango description: ~a" msgstr "Pango-Beschreibung kann nicht entschlüsselt werden: ~a" -#: output-svg.scm:231 +#: output-svg.scm:237 msgid "Glyph must have a unicode value" msgstr "Das Zeichen muss einen Unicode-Wert haben" -#: output-svg.scm:283 output-svg.scm:293 +#: output-svg.scm:289 output-svg.scm:299 #, scheme-format msgid "cannot find SVG font ~S" msgstr "SVG-Schriftart ~S kann nicht gefunden werden" -#: flag-styles.scm:148 -#, scheme-format -msgid "flag stroke `~a' or `~a' not found" -msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden" +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich" -#: define-note-names.scm:962 -msgid "Select note names language." -msgstr "Wählen Sie die Sprache der Notenbezeichnungen." +#: paper.scm:315 +#, scheme-format +msgid "This is not a \\layout {} object, ~S" +msgstr "Dies ist kein \\layout {} Objekt, ~S" -#: define-note-names.scm:969 +#: paper.scm:327 #, scheme-format -msgid "Using `~a' note names..." -msgstr "Benutze Notenbezeichnung »~a«..." +msgid "Unknown paper size: ~a" +msgstr "Unbekannte Papiergröße: ~a" + +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:342 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden" -#: define-note-names.scm:972 +#: parser-clef.scm:143 parser-clef.scm:183 #, scheme-format -msgid "Could not find language `~a'. Ignoring." -msgstr "Konnte Sprache »~a« nicht finden. Wird ignoriert." +msgid "unknown clef type `~a'" +msgstr "unbekannter Notenschlüsseltyp »~a«" -#: define-music-types.scm:740 +#: parser-clef.scm:144 parser-clef.scm:184 #, scheme-format -msgid "symbol expected: ~S" -msgstr "Symbol erwartet: ~S" +msgid "supported clefs: ~a" +msgstr "unterstützte Notenschlüssel: ~a" -#: define-music-types.scm:743 +#: parser-ly-from-scheme.scm:73 +msgid "error in #{ ... #}" +msgstr "Fehler in #{ ... #}" + +#: part-combiner.scm:598 #, scheme-format -msgid "cannot find music object: ~S" -msgstr "Musikobjekt kann nicht gefunden werden: ~S" +msgid "quoted music `~a' is empty" +msgstr "Zitierte Noten »~a« sind leer" -#: define-music-types.scm:762 +#: ps-to-png.scm:70 #, scheme-format -msgid "unknown repeat type `~S'" -msgstr "unbekannter Wiederholungstyp »~S«" +msgid "~a exited with status: ~S" +msgstr "~a mit Rückgabewert ~S beendet" -#: define-music-types.scm:763 -msgid "See define-music-types.scm for supported repeats" -msgstr "Siehe define-music-types.scm für unterstützte Wiederholungen" +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" +msgstr "Behauptung gescheitert: ~S" -#: translation-functions.scm:341 +#: translation-functions.scm:359 #, scheme-format msgid "Negative fret for pitch ~a on string ~a" msgstr "Negativer Bund für Tonhöhe ~a auf Saite ~a" -#: translation-functions.scm:385 +#: translation-functions.scm:362 +#, scheme-format +msgid "Missing fret for pitch ~a on string ~a" +msgstr "Fehlender Bund für Tonhöhe ~a auf Saite ~a" + +#: translation-functions.scm:413 #, scheme-format msgid "No open string for pitch ~a" msgstr "Keine leere Saite für Tonhöhe ~a" -#: translation-functions.scm:400 +#: translation-functions.scm:428 translation-functions.scm:440 #, scheme-format msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" msgstr "Geforderte Saite für Tonhöhe erfordert negativen Bund: Saite ~a Tonhöhe ~a" -#: translation-functions.scm:401 -msgid "Ignoring string request." -msgstr "Saiten-Anforderung wird ignoriert." +#: translation-functions.scm:431 +msgid "Ignoring string request and recalculating." +msgstr "Saiten-Anforderung wird ignoriert und neu berechnet" + +#: translation-functions.scm:443 +msgid "Ignoring note in tablature." +msgstr "Note in der Tabulatur wird ignoriert." -#: translation-functions.scm:414 +#: translation-functions.scm:466 #, scheme-format msgid "No string for pitch ~a (given frets ~a)" msgstr "Keine Saite für Tonhöhe ~a (Bund ~a angegeben)" -#: translation-functions.scm:515 +#: translation-functions.scm:571 #, scheme-format msgid "" "No label for fret ~a (on string ~a);\n" @@ -3342,169 +3824,80 @@ msgstr "" "Keine Beschriftung für Bund ~a (auf Saite ~a);\n" "nur ~a Bundbeschriftung zur Verfügung" -#: framework-ps.scm:250 -#, scheme-format -msgid "cannot embed ~S=~S" -msgstr "~S=~S kann nicht eingebettet werden" - -#: framework-ps.scm:293 -#, scheme-format -msgid "cannot extract file matching ~a from ~a" -msgstr "Eine zu ~a passende Datei kann nicht aus ~a gewonnen werden" - -#: framework-ps.scm:311 -#, scheme-format -msgid "do not know how to embed ~S=~S" -msgstr "Unbekannte Einbettung ~S=~S" - -#: framework-ps.scm:336 -#, scheme-format -msgid "do not know how to embed font ~s ~s ~s" -msgstr "Unbekannte Schriftsatzeinbettung ~s ~s ~s" - -#: framework-ps.scm:669 -msgid "" -"\n" -"The PostScript backend does not support the\n" -"system-by-system output. For that, use the EPS backend instead,\n" -"\n" -" lilypond -dbackend=eps FILE\n" -"\n" -"If have cut & pasted a lilypond fragment from a webpage, be sure\n" -"to only remove anything before\n" -"\n" -" %% ****************************************************************\n" -" %% Start cut-&-pastable-section\n" -" %% ****************************************************************\n" -msgstr "" -"\n" -"Das PostScript-Backend unterstützt keine System-weise Ausgabe. Dafür sollte\n" -"das EPS-Backend verwendet werden,\n" -"\n" -" lilypond -dbackend=eps \n" -"\n" -"Beim Kopieren von Lilypond-Fragmenten von Webseiten sollte nur alles vor\n" -"\n" -" %% ****************************************************************\n" -" %% Start cut-&-pastable-section\n" -" %% ****************************************************************\n" -"\n" -"entfernt werden\n" +#~ msgid "add midi-block to .ly file" +#~ msgstr "midi-Umgebung zu .ly-Datei hinzufügen" -#: music-functions.scm:268 -msgid "More alternatives than repeats. Junking excess alternatives" -msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werden verworfen" +#~ msgid "Found infinity or nan in output. Substituting 0.0" +#~ msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt" -#: music-functions.scm:297 -#, scheme-format -msgid "invalid tremolo repeat count: ~a" -msgstr "ungültige Tremolo-Wiederholung: ~a" +#~ msgid "All classes must be the last in their matrilineal line." +#~ msgstr "Alle Klassen müssen die letzten in ihrer matrilinearen Linie sein" -#: music-functions.scm:618 -#, scheme-format -msgid "music expected: ~S" -msgstr "Musik erwartet: ~S" +#~ msgid "All classes must have a well-defined pedigree in the existing class hierarchy." +#~ msgstr "Alle Klassen müssen gut-definierte Abstammungen in der existierenden Klassenhierarchie haben." -#. FIXME: uncomprehensable message -#: music-functions.scm:662 -#, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" -msgstr "Taktüberprüfung gescheitert. bei ~a erwartet, stattdessen bei ~a" +#~ msgid "event class ~A seems to be unused" +#~ msgstr "Ereignisklasse ~A scheint ungenutzt zu sein" -#: music-functions.scm:846 -#, scheme-format -msgid "cannot find quoted music: `~S'" -msgstr "zitierte Musik »~S« kann nicht gefunden werden" +#~ msgid "translator listens to nonexisting event class ~A" +#~ msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A" -#: music-functions.scm:982 -msgid "Add @var{octave-shift} to the octave of @var{pitch}." -msgstr "Füge @var{octave-shift} zur Oktave von @var{pitch} hinzu." +#~ msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" +#~ msgstr "setbeatGrouping. Benutze baseMoment und beatStructure.\n" -#: music-functions.scm:1037 -#, scheme-format -msgid "Unknown octaveness type: ~S " -msgstr "Unbekannter Oktaven-Typ: »~S«" +#~ msgid "success: %s" +#~ msgstr "Erfolg: %s" -#: music-functions.scm:1038 -msgid "Defaulting to 'any-octave." -msgstr "Setze Standard 'any-octave" +#~ msgid "Infinity or NaN encountered" +#~ msgstr "Unendlichkeit oder NaN angetroffen" -#: music-functions.scm:1378 -#, scheme-format -msgid "unknown accidental style: ~S" -msgstr "unbekannter Versetzungszeichenstil: ~S" +#~ msgid "Vaticana_ligature: zero join (delta_pitch == 0)" +#~ msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)" -#: define-event-classes.scm:79 -msgid "All classes must be the last in their matrilineal line." -msgstr "Alle Klassen müssen die letzten in ihrer matrilinearen Linie sein" +#~ msgid "No spring between column %d and next one" +#~ msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger" -#: define-event-classes.scm:83 -msgid "All classes must have a well-defined pedigree in the existing class hierarchy." -msgstr "Alle Klassen müssen gut-definierte Abstammungen in der existierenden Klassenhierarchie haben." +#~ msgid "Sending non-event to context" +#~ msgstr "Nicht-Ereignis wird an Kontext gesendet" -#: define-event-classes.scm:149 -#, scheme-format -msgid "event class ~A seems to be unused" -msgstr "Ereignisklasse ~A scheint ungenutzt zu sein" +#~ msgid "Invalid CreateContext event: Cannot create %s context" +#~ msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden" -#. should be programming-error -#: define-event-classes.scm:155 -#, scheme-format -msgid "translator listens to nonexisting event class ~A" -msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A" +#~ msgid "infinity or NaN encountered while converting Real number" +#~ msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden" -#: markup.scm:223 -#, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" -msgstr "Falsche Anzahl an Argumenten: ~A erwartet, ~A gefunden: ~S" +#~ msgid "setting to zero" +#~ msgstr "auf Null gesetzt" -#: markup.scm:229 -#, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." -msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden." +#~ msgid "No spacing entry from %s to `%s'" +#~ msgstr "Kein Abstandeintrag von %s nach »%s«" -#: markup.scm:292 -#, scheme-format -msgid "Not a markup command: ~A" -msgstr "Kein Textbeschriftungsbefehl: ~A" +#~ msgid "error at EOF: %s" +#~ msgstr "Fehler am Dateiende (EOF): %s" -#: ps-to-png.scm:74 -#, scheme-format -msgid "~a exited with status: ~S" -msgstr "~a mit Rückgabewert ~S beendet" +#~ msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" +#~ msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden" -#: define-markup-commands.scm:803 -msgid "no systems found in \\score markup, does it have a \\layout block?" -msgstr "keine Systeme in \\score-Markup gefunden, hat es einen \\layout-Block?" +#~ msgid "Mensural_ligature: unexpected case fall-through" +#~ msgstr "Mensural_ligature: unerwarteter case-Ausgang" -#: define-markup-commands.scm:2404 -#, scheme-format -msgid "Cannot find glyph ~a" -msgstr "Kann kein Zeichen ~a finden" +#~ msgid "Mensural_ligature: (join_right == 0)" +#~ msgstr "Mensural_ligature: (join_right == 0)" -#: define-markup-commands.scm:2830 -#, scheme-format -msgid "no brace found for point size ~S " -msgstr "Keine Klammer in Größe ~S pt gefunden" +#~ msgid "braces do not match" +#~ msgstr "Klammern passen nicht zueinander" -#: define-markup-commands.scm:2831 -#, scheme-format -msgid "defaulting to ~S pt" -msgstr "Setze Standard ~S pt" +#~ msgid "second argument must be pitch list" +#~ msgstr "zweites Argument muss eine Tonhöhenliste sein" -#: define-markup-commands.scm:2984 -#, scheme-format -msgid "not a valid duration string: ~a" -msgstr "keine gültige Dauer: ~a" +#~ msgid "warning:" +#~ msgstr "Warnung:" -#: ly-syntax-constructors.scm:51 -msgid "Music head function must return Music object" -msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern." +#~ msgid "Bar check failed. Expect to be at ~a, instead at ~a" +#~ msgstr "Taktüberprüfung gescheitert. bei ~a erwartet, stattdessen bei ~a" -#: ly-syntax-constructors.scm:177 -#, scheme-format -msgid "Invalid property operation ~a" -msgstr "Ungültige Eigenschaftsoperation ~a" +#~ msgid "Music head function must return Music object" +#~ msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern." #~ msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n" #~ msgstr "vertikale Abstände wurden geändert; minimum-Y-extent ist obsolet.\n" @@ -3518,9 +3911,6 @@ msgstr "Ungültige Eigenschaftsoperation ~a" #~ msgid "Tuplet brackets displaying both note durations are not implemented, using default" #~ msgstr "N-tolen-Klammern, die beide Notendauern darstellen, sind nicht implementiert, benutze Standard" -#~ msgid "run executable PROG instead of latex" -#~ msgstr "benutze ausführbare Datei PROG anstelle von latex" - #~ msgid "Encountered file created by Noteworthy Composer's nwc2xml, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" #~ msgstr "Die Datei wurde von Noteworthy·Composer's·nwc2xml erstellt und enthält falsche Balkeninformation. Alle Balkeninformation in der MusicXML-Datei wird ignoriert" @@ -3695,9 +4085,6 @@ msgstr "Ungültige Eigenschaftsoperation ~a" #~ msgid "can't find: `%s'" #~ msgstr "»%s« kann nicht gefunden werden" -#~ msgid "junking event: `%s'" -#~ msgstr "Ereignis wird ignoriert: »%s«" - #~ msgid "no one to print a repeat brace" #~ msgstr "niemand zur Erzeugung einer Wiederholung" @@ -3871,9 +4258,6 @@ msgstr "Ungültige Eigenschaftsoperation ~a" #~ msgid "only pre-process" #~ msgstr "nur vorverarbeiten" -#~ msgid "no such context: %s" -#~ msgstr "kein solcher Kontext: %s" - #~ msgid "Processing `%s'..." #~ msgstr "Verarbeite `%s'..." diff --git a/po/el.po b/po/el.po index 62b018a995..f46e5e34a9 100644 --- a/po/el.po +++ b/po/el.po @@ -1308,12 +1308,12 @@ msgstr "" #: musicxml2ly.py:2669 msgid "" -"Copyright (c) 2005--2011 by\n" +"Copyright (c) 2005--2012 by\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen and\n" " Reinhold Kainhofer \n" msgstr "" -"Copyright (c) 2005--2011 από\n" +"Copyright (c) 2005--2012 από\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen και\n" " Reinhold Kainhofer \n" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000000..3f3158b8b2 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,3836 @@ +# Esperanto translation of LilyPond. +# Copyright (C) 2012 Free Software Foundation, Inc. +# This file is distributed under the same license as the lilypond package. +# Felipe Castro , 2012 +# +msgid "" +msgstr "" +"Project-Id-Version: lilypond 2.15.95\n" +"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" +"POT-Creation-Date: 2012-08-11 14:29+0200\n" +"PO-Revision-Date: 2012-08-14 08:38-0300\n" +"Last-Translator: Felipe Castro \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: book_base.py:26 +#, python-format +msgid "file not found: %s" +msgstr "ne trovita dosiero: %s" + +#: book_base.py:164 +msgid "Output function not implemented" +msgstr "Eliga funkcio ne estas realigita" + +#: book_latex.py:170 +msgid "cannot find \\begin{document} in LaTeX document" +msgstr "ne eblas trovi \\begin{document} en dokumento LaTeX" + +#: book_latex.py:188 +#, python-format +msgid "Running `%s' on file `%s' to detect default page settings.\n" +msgstr "Aplikado de '%s' al la dosiero '%s' por detekti originalajn paĝ-agordojn.\n" + +#: book_latex.py:209 book_texinfo.py:228 +msgid "Unable to auto-detect default settings:\n" +msgstr "Ne eblas mem detekti originalajn agordojn:\n" + +#: book_latex.py:221 book_texinfo.py:240 +#, python-format +msgid "" +"Unable to auto-detect default settings:\n" +"%s" +msgstr "" +"Ne eblas mem detekti originalajn agordojn:\n" +"%s" + +#: book_snippets.py:409 +#, python-format +msgid "deprecated ly-option used: %s=%s" +msgstr "evitinda ly-elektilo estis uzata: %s=%s" + +#: book_snippets.py:411 +#, python-format +msgid "compatibility mode translation: %s=%s" +msgstr "tradukado je kongrua reĝimo: %s=%s" + +#: book_snippets.py:414 +#, python-format +msgid "deprecated ly-option used: %s" +msgstr "evitinda ly-elektilo estis uzata: %s" + +#: book_snippets.py:416 +#, python-format +msgid "compatibility mode translation: %s" +msgstr "tradukado je kongrua reĝimo: %s" + +#: book_snippets.py:533 +#, python-format +msgid "ignoring unknown ly option: %s" +msgstr "preterpaso de nekonata ly-elektilo: %s" + +#: book_snippets.py:624 +#, python-format +msgid "Missing files: %s" +msgstr "Mankantaj dosieroj: %s" + +#: book_snippets.py:654 +#, python-format +msgid "Could not overwrite file %s" +msgstr "Ne eblis reskribi sur dosiero: %s" + +#: book_snippets.py:741 +#, python-format +msgid "Running through filter `%s'" +msgstr "Rulado tra filtro '%s'" + +#: book_snippets.py:761 +#, python-format +msgid "`%s' failed (%d)" +msgstr "'%s' fiaskis (%d)" + +#: book_snippets.py:762 +msgid "The error log is as follows:" +msgstr "La erar-protokolo estas jene:" + +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "Konvertado de dosiero MusicXML '%s'...\n" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" +"%s: duobligita dosiernomo tamen kun malsama enhavo ol la originala\n" +"dosiero, do ni printas 'diff' kontraÅ­ la ekzistanta dosiero." + +#: book_snippets.py:922 +#, python-format +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." +msgstr "" +"%s: duobligita dosiernomo tamen kun malsama enhavo ol la konvertita dosiero\n" +"lilypond, do ni printas 'diff' kontraÅ­ la ekzistanta dosiero." + +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "Aplikado de texi2pdf al la dosiero %s por detekti originalajn paĝ-agordojn.\n" + +#: convertrules.py:12 +#, python-format +msgid "Not smart enough to convert %s." +msgstr "Ne sufiĉe lerta por konverti %s." + +#: convertrules.py:13 +msgid "Please refer to the manual for details, and update manually." +msgstr "Bonvolu iri al la gvidlibro por pli da detaloj, kaj ĝisdatigu malaÅ­tomate." + +#: convertrules.py:14 +#, python-format +msgid "%s has been replaced by %s" +msgstr "%s estis anstataÅ­igata per %s" + +#: convertrules.py:24 lilylib.py:131 warn.cc:223 +#, c-format, python-format +msgid "warning: %s" +msgstr "averto: %s" + +#: convertrules.py:49 convertrules.py:94 +msgid "\\header { key = concat + with + operator }" +msgstr "\\header { klavo = kunmeti + per + ĉi + operatoro }" + +#: convertrules.py:56 +#, python-format +msgid "deprecated %s" +msgstr "evitinda %s" + +#: convertrules.py:65 +msgid "deprecated \\textstyle, new \\key syntax" +msgstr "evitinda \\textstyle, nova sintakso \\key" + +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 +msgid "bump version for release" +msgstr "aktualigi la version por eldono" + +#: convertrules.py:97 +msgid "new \\header format" +msgstr "nova formo \\header" + +#: convertrules.py:124 +msgid "\\translator syntax" +msgstr "sintakso \\translator" + +#: convertrules.py:175 +msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" +msgstr "\\repeat NUM Muzika Alternativo -> \\repeat FOLDSTR Muzika Alternativo" + +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 +#, python-format +msgid "deprecate %s" +msgstr "evitigi %s" + +#: convertrules.py:279 +#, python-format +msgid "deprecate %s " +msgstr "evitigi %s " + +#: convertrules.py:305 +msgid "new \\notenames format" +msgstr "nova formato \\notenames" + +#: convertrules.py:321 +msgid "new tremolo format" +msgstr "nova tremsona formo" + +#: convertrules.py:325 +msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" +msgstr "Staff_margin_engraver estas evitinda, uzu Instrument_name_engraver" + +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" +msgstr "ŝanĝi usklecon de eco-difino (ekz. onevoice -> oneVoice)" + +#: convertrules.py:437 +msgid "new \\textscript markup text" +msgstr "nova markad-teksto \\textscript" + +#: convertrules.py:509 +#, python-format +msgid "identifier names: %s" +msgstr "identigilaj nomoj: %s" + +#: convertrules.py:548 +msgid "point-and-click argument changed to procedure." +msgstr "argumento 'point-and-click' ŝanĝis al 'procedure'." + +#: convertrules.py:590 +msgid "semicolons removed" +msgstr "komo-punktoj estis forigataj" + +#. 40 ? +#: convertrules.py:633 +#, python-format +msgid "%s property names" +msgstr "%s eco-nomoj" + +#: convertrules.py:703 +msgid "automaticMelismata turned on by default" +msgstr "automaticMelismata estas aktivigita apriore" + +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "automaticMelismata estas aktivigita apriore ekde 1.5.67." + +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 +#, python-format +msgid "remove %s" +msgstr "forigi %s" + +#: convertrules.py:977 convertrules.py:980 +msgid "cluster syntax" +msgstr "faska sintakso" + +#: convertrules.py:987 +msgid "new Pedal style syntax" +msgstr "nova sintakso de la stilo Pedal" + +#: convertrules.py:1246 +msgid "" +"New relative mode,\n" +"Postfix articulations, new text markup syntax, new chord syntax." +msgstr "" +"Nova relativa reĝimo,\n" +"artikulacioj Postfix, nova tekst-markada sintakso, nova akorda sintakso." + +#: convertrules.py:1259 +msgid "Remove - before articulation" +msgstr "Forigi - antaÅ­ la artikulacio" + +#: convertrules.py:1294 +#, python-format +msgid "%s misspelling" +msgstr "%s misliterumado" + +#: convertrules.py:1313 +msgid "Swap < > and << >>" +msgstr "Permuti < > kaj << >>" + +#: convertrules.py:1316 +msgid "attempting automatic \\figures conversion. Check results!" +msgstr "provado aÅ­tomate konverti \\figures. Kontrolu la rezultojn!" + +#: convertrules.py:1362 +msgid "Use Scheme code to construct arbitrary note events." +msgstr "Uzu kodumaĵon Scheme por konstrui ajnajn noto-eventojn." + +#: convertrules.py:1369 +msgid "" +"use symbolic constants for alterations,\n" +"remove \\outputproperty, move ly:verbose into ly:get-option" +msgstr "" +"uzi simbolajn konstantojn por aliigojn,\n" +"forigi \\outputproperty, movi ly:verbose al ly:get-option" + +#: convertrules.py:1394 +#, python-format +msgid "" +"\\outputproperty found,\n" +"Please hand-edit, using\n" +"\n" +" \\applyoutput #(outputproperty-compatibility %s '%s )\n" +"\n" +"as a substitution text." +msgstr "" +"\\outputproperty estis trovata,\n" +"Bonvolu per-mane redakti, uzante\n" +"\n" +" \\applyoutput #(outputproperty-compatibility %s '%s )\n" +"\n" +"kiel anstataÅ­igan tekston." + +#: convertrules.py:1406 +msgid "" +"The alteration field of Scheme pitches was multiplied by 2\n" +"to support quarter tone accidentals. You must update the following constructs manually:\n" +"\n" +"* calls of ly:make-pitch and ly:pitch-alteration\n" +"* keySignature settings made with \\property\n" +msgstr "" +"La aliiga kampo de sonaltoj de Scheme estis multobligata per 2\n" +"por subteni kvaronajn aliigojn. Vi devas ĝisdatigi la jenajn konstruojn per-mane:\n" +"\n" +"* vokoj al ly:make-pitch kaj ly:pitch-alteration\n" +"* difinoj de keySignature faritaj kun \\property\n" + +#: convertrules.py:1449 +msgid "removal of automaticMelismata; use melismaBusyProperties instead." +msgstr "forigo de automaticMelismata; uzu melismaBusyProperties anstataÅ­e." + +#: convertrules.py:1556 +msgid "\\partcombine syntax change to \\newpartcombine" +msgstr "sintakso de \\partcombine ŝanĝis al \\newpartcombine" + +#: convertrules.py:1581 +msgid "" +"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" +"Harmonic notes. Thread context removed. Lyrics context removed." +msgstr "" +"Ŝanĝoj en tambura notado, forigo de \\chordmodifiers, \\notenames.\n" +"Harmoniaj notoj. Kunteksto Thread forigita. Kunteksto Lyrics forigita." + +#: convertrules.py:1585 +msgid "Drums found. Enclose drum notes in \\drummode" +msgstr "Tamburoj estis trovataj. Enmetu tamburajn notojn en \\drummode" + +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 +#, python-format +msgid "" +"\n" +"%s found. Check file manually!\n" +msgstr "" +"\n" +"%s estis trovata. Kontrolu la dosieron per-mane!\n" + +#: convertrules.py:1596 +msgid "Drum notation" +msgstr "Tambura notado" + +#: convertrules.py:1655 +msgid "new syntax for property settings:" +msgstr "nova sintakso por ecaj agordoj:" + +#: convertrules.py:1681 +msgid "Property setting syntax in \\translator{ }" +msgstr "Sintakso de eca agordo en \\translator{ }" + +#: convertrules.py:1720 +msgid "Scheme grob function renaming" +msgstr "Renomigo de funkcioj grob de Scheme" + +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 +#, python-format +msgid "Use %s\n" +msgstr "Uzi %s\n" + +#: convertrules.py:1747 +msgid "More Scheme function renaming" +msgstr "Pli da renomigo de funkcioj Scheme" + +#: convertrules.py:1871 +msgid "" +"Page layout has been changed, using paper size and margins.\n" +"textheight is no longer used.\n" +msgstr "" +"Paĝ-aranĝo estis ŝanĝata, nun ni uzas paper-grandon kaj marĝenojn.\n" +"'textheight' ne plu estas uzata.\n" + +#: convertrules.py:1957 +msgid "" +"\\foo -> \\foomode (for chords, notes, etc.)\n" +"fold \\new FooContext \\foomode into \\foo." +msgstr "" +"\\foo -> \\foomode (por akordoj, notoj, ktp.)\n" +"faldi \\new FooContext \\foomode al \\foo." + +#: convertrules.py:1995 +msgid "" +"staff size should be changed at top-level\n" +"with\n" +"\n" +" #(set-global-staff-size )\n" +"\n" +msgstr "" +"grando de liniaro devas esti ŝanĝata je ĉefnivelo\n" +"per\n" +"\n" +" #(set-global-staff-size )\n" +"\n" + +#: convertrules.py:2015 +msgid "regularize other identifiers" +msgstr "normigi aliajn identigilojn" + +#: convertrules.py:2083 +msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" +msgstr "\\encoding: lerta rekodigo latin1..utf-8. Forigi ly:point-and-click" + +#: convertrules.py:2094 +msgid "LilyPond source must be UTF-8" +msgstr "Kodumado de LilyPond devas esti UTF-8" + +#: convertrules.py:2097 +msgid "Try the texstrings backend" +msgstr "Provu la internan interfacon 'texstrings'" + +#: convertrules.py:2100 +#, python-format +msgid "Do something like: %s" +msgstr "Faru ion simila al: %s" + +#: convertrules.py:2103 +msgid "Or save as UTF-8 in your editor" +msgstr "AÅ­ konservu kiel UTF-8 en via redaktilo" + +#: convertrules.py:2153 +msgid "warn about auto beam settings" +msgstr "averti pri difinoj de aÅ­tomata vostligo" + +#: convertrules.py:2157 +msgid "auto beam settings" +msgstr "aÅ­tomata vostligaj difinoj" + +#: convertrules.py:2158 +msgid "" +"\n" +"Auto beam settings must now specify each interesting moment in a measure\n" +"explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n" +msgstr "" +"\n" +"AÅ­tomata vostligaj difinoj devas nun indiki klare ĉiun interesan momenton\n" +"ene de mezuro; 1/4 ne plu estas obligata por ankaŭ kovri momentojn 1/2 kaj 3/4.\n" + +#: convertrules.py:2271 +msgid "verticalAlignmentChildCallback has been deprecated" +msgstr "'verticalAlignmentChildCallback' fariĝis evitinda" + +#: convertrules.py:2276 +msgid "Remove callbacks property, deprecate XY-extent-callback." +msgstr "Forigi atributojn de vokoj, evitigi XY-extent-callback." + +#: convertrules.py:2297 +msgid "Use grob closures iso. XY-offset-callbacks." +msgstr "Uzi grob-klozurojn iso. XY-offset-callbacks." + +#: convertrules.py:2359 +msgid "foobar -> foo-bar for \\paper, \\layout" +msgstr "foobar -> foo-bar por \\paper, \\layout" + +#: convertrules.py:2469 +msgid "deprecate \\tempo in \\midi" +msgstr "evitigi \\tempo en \\midi" + +#: convertrules.py:2522 +msgid "deprecate cautionary-style. Use AccidentalCautionary properties" +msgstr "evitigi stilon avertecan. Uzi ecojn 'AccidentalCautionary'" + +#: convertrules.py:2535 +msgid "Rename accidental glyphs, use glyph-name-alist." +msgstr "Renomigi kromsignajn bildetojn, uzi glyph-name-alist." + +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" +msgstr "agordoj de 'edge-text' por TextSpanner" + +#: convertrules.py:2591 +#, python-format +msgid "" +"Use\n" +"\n" +"%s" +msgstr "" +"Uzi\n" +"\n" +"%s" + +#: convertrules.py:2624 +msgid "Use the `alignment-offsets' sub-property of\n" +msgstr "Uzi la sub-atributon 'alignment-offsets' de\n" + +#: convertrules.py:2625 +msgid "NonMusicalPaperColumn #'line-break-system-details\n" +msgstr "NonMusicalPaperColumn #'line-break-system-details\n" + +#: convertrules.py:2626 +msgid "to set fixed distances between staves.\n" +msgstr "por difini fiksajn distancojn inter liniarojn.\n" + +#: convertrules.py:2638 +msgid "Use #'style not #'dash-fraction to select solid/dashed lines." +msgstr "Uzi #'style anstataÅ­ #'dash-fraction por elekti kontinuajn/strekajn liniojn." + +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "ĉiuj agordoj pri strekaj linioj" + +#: convertrules.py:2645 +msgid "Use \\override ... #'style = #'line for solid lines and\n" +msgstr "Uzi \\override ... #'style = #'line por kontinuaj linioj kaj\n" + +#: convertrules.py:2646 +msgid "\t\\override ... #'style = #'dashed-line for dashed lines." +msgstr "\t\\override ...#'style = #'dashed-line por strekaj linioj." + +#: convertrules.py:2682 +msgid "" +"metronomeMarkFormatter uses text markup as second argument,\n" +"fret diagram properties moved to fret-diagram-details." +msgstr "" +"metronomeMarkFormatter uzas tekstan markadon kiel duan argumenton,\n" +"fret-diagramaj ecoj moviĝis al fret-diagram-details." + +#: convertrules.py:2688 +msgid "metronomeMarkFormatter got an additional text argument.\n" +msgstr "metronomeMarkFormatter akiris aldonan tekst-argumenton.\n" + +#: convertrules.py:2689 +#, python-format +msgid "" +"The function assigned to Score.metronomeMarkFunction now uses the signature\n" +"%s" +msgstr "" +"La funkcio asignita al Score.metronomeMarkFunction nun uzas la subskribon\n" +"%s" + +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "%s en fret-diagramaj ecoj" + +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" +msgstr "argument-ordo de \\put-adjacent" + +#: convertrules.py:2752 +msgid "Axis and direction now come before markups:\n" +msgstr "Aksoj kaj direkto nun venas antaÅ­ la markadoj:\n" + +#: convertrules.py:2753 +msgid "\\put-adjacent axis dir markup markup." +msgstr "\\put-adjacent akso dir markado markado." + +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" +msgstr "redifino de InnerStaffGroup" + +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" +msgstr "redifino de InnerChoirStaff" + +#: convertrules.py:2799 +msgid "Syntax changes for \\addChordShape and \\chord-shape" +msgstr "Sintaksaj ŝanĝoj por \\addChordShape kaj \\chord-shape" + +#: convertrules.py:2804 +msgid "stringTuning must be added to addChordShape call.\n" +msgstr "stringTuning devas esti aldonata al la voko addChordShape.\n" + +#: convertrules.py:2809 +msgid "stringTuning must be added to chord-shape call.\n" +msgstr "stringTuning devas esti aldonata al la voko de chord-shape.\n" + +#: convertrules.py:2815 +msgid "Remove oldaddlyrics" +msgstr "Forigi oldaddlyrics" + +#: convertrules.py:2819 +msgid "" +"oldaddlyrics is no longer supported. \n" +" Use addlyrics or lyrsicsto instead.\n" +msgstr "" +"oldaddlyrics ne plu estas subtenata. \n" +" Uzu addlyrics aÅ­ lyricsto anstataÅ­e.\n" + +#: convertrules.py:2825 +msgid "" +"keySignature property not reversed any more\n" +"MIDI 47: orchestral strings -> orchestral harp" +msgstr "" +"La eco keySignature ne plu estas inversigita\n" +"MIDI 47: orchestral strings -> orchestral harp" + +#: convertrules.py:2830 +msgid "The alist for Staff.keySignature is no longer in reversed order.\n" +msgstr "La 'alist' por Staff.keySignature ne plu estas en inversa ordo.\n" + +#: convertrules.py:2836 +msgid "" +"\\bar \".\" now produces a thick barline\n" +"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" +"Dash parameters for slurs and ties are now in dash-definition" +msgstr "" +"\\bar \".\" nun produktas dikan taktostrekon\n" +"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" +"Strekaj parametroj por ligarkoj kaj ligaturoj estas nun en dash-definition" + +#: convertrules.py:2842 +msgid "\\bar \".\" now produces a thick barline.\n" +msgstr "\\bar \".\" nun produktas dikan taktostrekon.\n" + +#: convertrules.py:2848 +msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" +msgstr "Strekaj parametroj por ligarkoj kaj ligaturoj estas nun en 'dash-details.\n" + +#: convertrules.py:2853 +msgid "" +"Autobeaming rules have changed. override-auto-beam-setting and\n" +"revert-auto-beam-setting have been eliminated.\n" +"\\overrideBeamSettings has been added.\n" +"beatGrouping has been eliminated.\n" +"Different settings for vertical layout.\n" +"ly:system-start-text::print -> system-start-text::print\n" +"Beam #'thickness -> Beam #'beam-thickness\n" +"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n" +"ly:ambitus::print -> ambitus::print\n" +"Explicit dynamics context definition from `Piano centered dynamics'\n" +"template replaced by new `Dynamics' context." +msgstr "" +"AÅ­tomataj vostligaj reguloj ŝanĝis. override-auto-beam-setting kaj\n" +"revert-auto-beam-setting estis forigataj.\n" +"\\overrideBeamSettings estis aldonata.\n" +"beatGrouping estis forigata.\n" +"Malsamaj agordoj por vertikala aranĝo.\n" +"ly:system-start-text::print -> system-start-text::print\n" +"Beam #'thickness -> Beam #'beam-thickness\n" +"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n" +"ly:ambitus::print -> ambitus::print\n" +"Klaraj difinoj de ŝveligaj kuntekstoj el la ŝablono\n" +"'Piano centered dynamics' estas nun anstataÅ­ita de kunteksto 'Dynamics'." + +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" +msgstr " AÅ­tomataj vostligaj agordoj nun estas preterpasataj per \\overrideBeamSettings.\n" + +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" +msgstr " AÅ­tomataj vostligaj agordoj nun estas restarigataj per \\revertBeamSettings.\n" + +#: convertrules.py:2878 +msgid "" +" beatGrouping with a specified context must now be accomplished with\n" +" \\overrideBeamSettings.\n" +msgstr "" +" beatGrouping kun specifita kunteksto devas nun esti plenumata per\n" +" \\overrideBeamSettings.\n" + +#: convertrules.py:2884 +msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" +msgstr "alignment-offsets ŝanĝis al alignment-distances: vi devas nun specifi la distancojn inter liniarojn prefereble ol la deŝovo de la liniaroj.\n" + +#: convertrules.py:2895 +msgid "" +"Remove obsolete engravers/translators: Note_swallow_translator,\n" +"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" +"Swallow_performer and String_number_engraver.\n" +"New vertical spacing variables." +msgstr "" +"Forigi neaktualajn gravurilojn/tradukilojn: Note_swallow_translator,\n" +"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" +"Swallow_performer kaj String_number_engraver.\n" +"Novaj vertikal-spacigaj variabloj." + +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" +msgstr "Vertikala spacigo ne plu dependas de la Y-etendo de 'VerticalAxisGroup'.\n" + +#: convertrules.py:2932 +msgid "Unify fetaNumber and fetaDynamic encodings" +msgstr "Unuigi enkodigojn 'fetaNumber' kaj 'fetaDynamic'" + +#: convertrules.py:2937 +msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" +msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" + +#: convertrules.py:2948 +msgid "\\cresc etc. are now postfix operators" +msgstr "\\cresc ktp. nun estas postmetaj operatoroj" + +#: convertrules.py:2960 +msgid "" +"Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" +"\"accordion.accEtcbase\" -> \"accordion.etcbass\"" +msgstr "" +"Forigi 'beamSettings', 'beatLength', \\setBeatGrouping, \\overrideBeamSettings kaj \\revertBeamSettings.\n" +"\"accordion.accEtcbase\" -> \"accordion.etcbass\"" + +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" +msgstr "Uzi \\set beamExceptions aÅ­ \\overrideTimeSignatureSettings.\n" + +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "Uzi \\set beamExceptions aÅ­ \\revertTimeSignatureSettings.\n" + +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" +msgstr "Uzi 'baseMoment', 'beatStructure', kaj 'beamExceptions'.\n" + +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" +msgstr "Uzi 'baseMoment' kaj 'beatStructure'.\n" + +#: convertrules.py:2999 +msgid "" +"Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" +"Deprecate negative dash-period for hidden lines: use #'style = #'none instead." +msgstr "" +"Lignoblovaj diagramoj: movigi grandon, dikecon, kaj grafikaĵon de argument-listo al atributoj.\n" +"Evitigi negativan streko-punkton por kaŝitaj linioj: uzi #'style = #'none anstataÅ­e." + +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" +msgstr "Movigi grandon, dikecon, kaj grafikaĵon al atributoj. Argumento devos esti simple la ŝlosilo-listo.\n" + +#: convertrules.py:3012 +msgid "" +"Rename vertical spacing variables.\n" +"Add fretboard-table argument to savePredefinedFretboard." +msgstr "" +"Renomigi vertikal-spacigajn variablojn.\n" +"Aldoni argumenton 'fretboard-table' al 'savePredefinedFretboard'." + +#: convertrules.py:3030 +msgid "Rename vertical spacing grob properties." +msgstr "Renomigi vertikal-spacigajn grob-atributojn." + +#: convertrules.py:3046 +msgid "Remove \\paper variables head-separation and foot-separation." +msgstr "Forigi variablojn de \\paper: 'head-separation' kaj 'foot-separation'." + +#: convertrules.py:3050 +msgid "Adjust settings for top-system-spacing instead.\n" +msgstr "AnstataÅ­e, alĝustigi difinojn por 'top-system-spacing'.\n" + +#: convertrules.py:3054 +msgid "Adjust settings for last-bottom-spacing instead.\n" +msgstr "AnstataÅ­e, alĝustigi difinojn por 'last-bottom-spacing'.\n" + +#: convertrules.py:3060 +msgid "" +"Rename space to basic-distance in various spacing alists.\n" +"Remove HarmonicParenthesesItem grob." +msgstr "" +"Renomigi 'space' al 'basic-distance' en pluraj 'alist'-oj.\n" +"Forigi la grob 'HarmonicParenthesesItem'." + +#: convertrules.py:3067 +msgid "HarmonicParenthesesItem has been eliminated.\n" +msgstr "'HarmonicParenthesesItem' estas forigita.\n" + +#: convertrules.py:3068 +msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" +msgstr "Harmoniaj rondkrampoj estas parto de la grob TabNoteHead.\n" + +#: convertrules.py:3073 +msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" +msgstr "Forigi kuntekston de 'overrideTimeSignatureSettings' kaj 'revertTimeSignatureSettings'.\n" + +#: convertrules.py:3080 +msgid "" +"Change stringTunings from a list of semitones to a list of pitches.\n" +"Change tenor and baritone ukulele names in string tunings.\n" +"Generate messages for manual conversion of vertical spacing if required." +msgstr "" +"Ŝanĝi 'stringTunings' de listo de unutoj al listo de tonaltoj.\n" +"Ŝanĝi tenoran kaj baritonan ukulel-nomojn en kordaj agordoj.\n" +"Generi mesaĝojn por per-mana konverto de vertikala spacigo se necese." + +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." +msgstr "Vertikal-spacigaj ŝanĝoj povas influi uzanto-difinitajn kuntekstojn." + +#: convertrules.py:3129 +msgid "Replace bar-size with bar-extent." +msgstr "AnstataÅ­igi 'bar-size' per 'bar-extent'." + +#: convertrules.py:3141 +msgid "Woodwind diagrams: Changes to the clarinet diagram." +msgstr "Lignoblovaj diagramoj: ŝanĝoj por la klarneta diagramo." + +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "Klarneta fingrado ŝanĝis por speguli veran anatomion de la instrumento.\n" + +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "Traktado de ne-aÅ­tomataj piednotoj." + +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "Se vi uzas ne-aÅ­tomatajn piednotojn, certigu ke vi difinis 'footnote-auto-numbering = ##f' en la paper-bloko.\n" + +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "Ŝanĝo en interna atributo por 'MultiMeasureRest'" + +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" +msgstr "Tiu ĉi interna atributo estas anstataÅ­igita per 'round-up-to-longer-rest', 'round-up-exceptions' kaj 'usable-duration-logs'.\n" + +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "Kreado de grob 'Flag' kaj movigado de kelkaj atributoj 'Stem' al tiu ĉi grob" + +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" +msgstr "Nun 'consistent-broken-slope' estas traktata per la voko 'positions'.\n" + +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" +msgstr "input/regression/beam-broken-classic.ly montras kiel rompitaj vostligoj estas traktataj nun.\n" + +#: convertrules.py:3368 +msgid "beamExceptions controls whole-measure beaming." +msgstr "beamExceptions regas tut-mezuran vostligadon." + +#: fontextract.py:25 +#, python-format +msgid "Scanning %s" +msgstr "Skanado de %s" + +#: fontextract.py:70 +#, python-format +msgid "Extracted %s" +msgstr "Eltirite %s" + +#: fontextract.py:85 +#, python-format +msgid "Writing fonts to %s" +msgstr "Skribado de tiparoj al %s" + +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "Difinado de 'loglevel' al %s" + +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "Nekonata aÅ­ malvalida 'loglevel': '%s'" + +#: lilylib.py:128 warn.cc:211 +#, c-format, python-format +msgid "error: %s" +msgstr "eraro: %s" + +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "Procezado de %s.ly" + +#: lilylib.py:189 lilylib.py:250 +#, python-format +msgid "Invoking `%s'" +msgstr "Alvokado de '%s'" + +#: lilylib.py:191 lilylib.py:252 +#, python-format +msgid "Running %s..." +msgstr "Aktivigo de %s..." + +#: lilylib.py:328 +#, python-format +msgid "Usage: %s" +msgstr "Uzado: %s" + +#: musicexp.py:224 musicexp.py:229 +msgid "Language does not support microtones contained in the piece" +msgstr "La lingvo de subtenas la mikrotonojn en la muziko" + +#: musicexp.py:491 +msgid "Tuplet brackets of curved shape are not correctly implemented" +msgstr "Opigaj rektkrampoj kun kurba formo ne estas realigita ĝuste" + +#: musicexp.py:677 +#, python-format +msgid "unable to set the music %(music)s for the repeat %(repeat)s" +msgstr "ne eblas alĝustigi la muzikon %(music)s por la ripeto %(repeat)s" + +#: musicexp.py:686 +msgid "encountered repeat without body" +msgstr "ripeto sen korpo estis trovata" + +#. no self.elements! +#: musicexp.py:856 +#, python-format +msgid "Grace note with no following music: %s" +msgstr "Apoĝaturo sen sekvanta muziko: %s" + +#: musicexp.py:1018 +#, python-format +msgid "Invalid octave shift size found: %s. Using no shift." +msgstr "Malvalida grando de okta ŝovo estis trovata: %s. Neŝovite." + +#: musicexp.py:1476 +#, python-format +msgid "Unable to convert alteration %s to a lilypond expression" +msgstr "Ne eblas konverti la aliigon %s al esprimo de lilypond" + +#. TODO: Handle pieces without a time signature! +#: musicxml.py:361 +msgid "Senza-misura time signatures are not yet supported!" +msgstr "Temp-indikoj 'senza-misura' ankoraÅ­ ne estas subtenataj!" + +#: musicxml.py:379 +msgid "Unable to interpret time signature! Falling back to 4/4." +msgstr "Ne eblas interpreti la tempindikon! Revene al 4/4." + +#: musicxml.py:435 +#, python-format +msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" +msgstr "AntaÅ­signa aliiga okto aperas por neekzistanta aliigo n-ro %s, disponeblaj numeroj: %s!" + +#: musicxml.py:523 +#, python-format +msgid "Unable to find instrument for ID=%s\n" +msgstr "Ne eblas trovi instrumenton por ID=%s\n" + +#: abc2ly.py:1376 convert-ly.py:81 lilypond-book.py:122 midi2ly.py:1044 +#, python-format +msgid "%s [OPTION]... FILE" +msgstr "%s [ELEKTILO]... DOSIERO" + +#: abc2ly.py:1377 +#, python-format +msgid "" +"abc2ly converts ABC music files (see\n" +"%s) to LilyPond input.\n" +msgstr "" +"abc2ly konvertas muzikajn dosierojn ABC (vidu\n" +"%s) al LilyPond-kodumaro.\n" + +#: abc2ly.py:1385 convert-ly.py:88 etf2ly.py:1208 lilypond-book.py:231 +#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:174 +msgid "show version number and exit" +msgstr "montri versi-numeron kaj eliri" + +#: abc2ly.py:1388 convert-ly.py:92 etf2ly.py:1204 lilypond-book.py:140 +#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:153 +msgid "show this help and exit" +msgstr "montri tiun ĉi helpon kaj eliri" + +#: abc2ly.py:1391 etf2ly.py:1209 midi2ly.py:1071 +msgid "write output to FILE" +msgstr "skribi eligon al DOSIERO" + +#: abc2ly.py:1394 +msgid "be strict about success" +msgstr "esti severa pri sukceso" + +#: abc2ly.py:1397 +msgid "preserve ABC's notion of beams" +msgstr "konservi la nocion de vostligoj de ABC" + +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "forigi mesaĝojn pri progreso" + +#. Translators, please translate this string as +#. "Report bugs in English via %s", +#. or if there is a LilyPond users list or forum in your language +#. "Report bugs in English via %s or in YOUR_LANG via URI" +#: abc2ly.py:1403 convert-ly.py:146 etf2ly.py:1218 lilypond-book.py:258 +#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:285 +#, c-format, python-format +msgid "Report bugs via %s" +msgstr "Raportu misojn per %s (angle)" + +#: convert-ly.py:46 +msgid "" +"Update LilyPond input to newer version. By default, update from the\n" +"version taken from the \\version command, to the current LilyPond version." +msgstr "" +"Ĝisdatigi la enigon de LilyPond al nova versio. Apriore, ĝisdatigi de la\n" +"versio prenita el la komando \\version, al la nuna versio de LilyPond." + +#: convert-ly.py:48 lilypond-book.py:82 +msgid "Examples:" +msgstr "Ekzemploj:" + +#: convert-ly.py:75 etf2ly.py:1191 lilypond-book.py:115 midi2ly.py:81 +#, python-format +msgid "Copyright (c) %s by" +msgstr "Kopirajto (c) %s de" + +#: convert-ly.py:77 etf2ly.py:1193 lilypond-book.py:117 midi2ly.py:83 +msgid "Distributed under terms of the GNU General Public License." +msgstr "Disdonata sub la kondiĉoj de la Ĝenerala Publika Permesilo de GNU." + +#: convert-ly.py:78 etf2ly.py:1194 lilypond-book.py:118 midi2ly.py:84 +msgid "It comes with NO WARRANTY." +msgstr "Ĝi venas SEN iu ajn GARANTIO." + +#: convert-ly.py:96 convert-ly.py:137 +msgid "VERSION" +msgstr "VERSIO" + +#: convert-ly.py:98 +msgid "start from VERSION [default: \\version found in file]" +msgstr "komenci el VERSIO [apriore: \\version estis trovata en dosiero]" + +#: convert-ly.py:101 +msgid "edit in place" +msgstr "redakti surloke" + +#: convert-ly.py:105 lilypond-book.py:179 musicxml2ly.py:2627 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" +msgstr "Printi protokolajn mesaĝojn laŭ PROTOKOLNIVELO (NONE, ERROR, WARNING, PROGRESS (apriore), DEBUG)" + +#: convert-ly.py:107 lilypond-book.py:163 lilypond-book.py:181 +#: musicxml2ly.py:2629 main.cc:167 +msgid "LOGLEVEL" +msgstr "PROTOKOLNIVELO" + +#: convert-ly.py:113 +msgid "do not add \\version command if missing" +msgstr "ne aldoni la komandon \\version se ĝi mankas" + +#: convert-ly.py:119 +#, python-format +msgid "force updating \\version number to %s" +msgstr "perforte ĝisdatigi la numeron de \\version al %s" + +#: convert-ly.py:125 +msgid "only update \\version number if file is modified" +msgstr "nur ĝisdatigi la numeron de \version se la dosiero estas modifita" + +#: convert-ly.py:131 +#, python-format +msgid "show rules [default: -f 0, -t %s]" +msgstr "montri regulojn [apriore: -f 0, -t %s]" + +#: convert-ly.py:136 +#, python-format +msgid "convert to VERSION [default: %s]" +msgstr "konverti al VERSIO [apriore: %s]" + +#: convert-ly.py:141 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096 +#: main.cc:176 +msgid "show warranty and copyright" +msgstr "montri garantion kaj kopirajton" + +#: convert-ly.py:186 +msgid "Applying conversion: " +msgstr "Aplikado de konverto: " + +#: convert-ly.py:202 +msgid "Error while converting" +msgstr "Eraro dum la konvertado" + +#: convert-ly.py:204 +msgid "Stopping at last successful rule" +msgstr "Ĉeso ĉe lasta sukcesa regulo" + +#: convert-ly.py:231 +#, python-format +msgid "Processing `%s'... " +msgstr "Procezado de '%s'... " + +#: convert-ly.py:338 +#, python-format +msgid "%s: Unable to open file" +msgstr "%s: Ne eblas malfermi dosieron" + +#: convert-ly.py:345 +#, python-format +msgid "%s: Unable to determine version. Skipping" +msgstr "%s: ne eblas determini version. Preterpase" + +#: convert-ly.py:350 +#, python-format +msgid "" +"%s: Invalid version string `%s' \n" +"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" +msgstr "" +"%s: Malvalida versi-ĉeno '%s' \n" +"Validaj versi-ĉenoj konsistas el tri numeroj, apartitaj per punktoj, t.e. '2.8.12'" + +#: etf2ly.py:1197 +#, python-format +msgid "%s [OPTION]... ETF-FILE" +msgstr "%s [ELEKTILO]... ETF-DOSIERO" + +#: etf2ly.py:1198 +msgid "" +"Enigma Transport Format is a format used by Coda Music Technology's\n" +"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" +msgstr "" +"Enigma Transport-Formo estas formo uzata de la produkto Finale, de\n" +"Coda Music Technology. etf2ly konvertas subaron de ETF al tujuzebla dosiero LilyPond.\n" + +#: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659 +#: main.cc:159 main.cc:171 +msgid "FILE" +msgstr "DOSIERO" + +#: lilypond-book.py:80 +msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." +msgstr "Procezi kodaĵoj de LilyPond en miksa dokumento kun HTML, LaTeX, texinfo aÅ­ DocBook." + +#: lilypond-book.py:87 +msgid "BOOK" +msgstr "LIBRO" + +#: lilypond-book.py:95 +#, python-format +msgid "Exiting (%d)..." +msgstr "Elirado (%d)..." + +#: lilypond-book.py:127 +msgid "FILTER" +msgstr "FILTRO" + +#: lilypond-book.py:130 +msgid "pipe snippets through FILTER [default: `convert-ly -n -']" +msgstr "dukti kodaĵojn tra FILTRO [apriore: convert-ly -n -]" + +#: lilypond-book.py:134 +msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)" +msgstr "uzi eligan formon FORMO (texi [apriore], texi-html, latex, html, docbook)" + +#: lilypond-book.py:135 +msgid "FORMAT" +msgstr "FORMO" + +#: lilypond-book.py:142 +msgid "add DIR to include path" +msgstr "aldoni UJO al la inkluziva vojo" + +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 +msgid "DIR" +msgstr "UJO" + +#: lilypond-book.py:148 +msgid "format Texinfo output so that Info will look for images of music in DIR" +msgstr "strukturigi eligon Texinfo tiel ke Info serĉos bildojn de muziko en UJO" + +#: lilypond-book.py:155 +msgid "PAD" +msgstr "SHOV" + +#: lilypond-book.py:157 +msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)" +msgstr "ŝovi maldekstran flankon de muziko por rektigi ĝin malgraÅ­ la ne egalaj mezur-numeroj (en mm)" + +#: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" +msgstr "Printi protokol-mesaĝojn de lilypond laÅ­ PROTOKOLNIVELO" + +#: lilypond-book.py:168 +msgid "write lily-XXX files to DIR, link into --output dir" +msgstr "skribi dosierojn lily-XXX al UJO, ligi al la dosierujo de --output" + +#: lilypond-book.py:173 +msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" +msgstr "Ŝargi je la kroma PAKO de python (enhavanta ekz. propran elig-formon)" + +#: lilypond-book.py:174 +msgid "PACKAGE" +msgstr "PAKO" + +#: lilypond-book.py:186 +msgid "write output to DIR" +msgstr "skribi eligon al UJO" + +#: lilypond-book.py:191 +msgid "COMMAND" +msgstr "KOMANDO" + +#: lilypond-book.py:192 +msgid "process ly_files using COMMAND FILE..." +msgstr "procezi ly_files uzante: KOMANDO DOSIERO..." + +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "Rekonduki la eligon de lilypond" + +#: lilypond-book.py:201 +msgid "Compile snippets in safe mode" +msgstr "Kompili kodaĵojn per sekura reĝimo" + +#: lilypond-book.py:207 +msgid "do not fail if no lilypond output is found" +msgstr "ne fiaski se neniu eligo de lilypond estos trovata" + +#: lilypond-book.py:213 +msgid "do not fail if no PNG images are found for EPS files" +msgstr "ne fiaski se neniu bildo PNG estos trovata por dosieroj EPS" + +#: lilypond-book.py:219 +msgid "write snippet output files with the same base name as their source file" +msgstr "skribi kodaĵajn eligajn dosierojn per la sama baznomo kiel ilia fonta dosiero" + +#: lilypond-book.py:223 midi2ly.py:1090 musicxml2ly.py:2596 +msgid "be verbose" +msgstr "esti detalema" + +#: lilypond-book.py:239 +msgid "" +"run executable PROG instead of latex, or in\n" +"case --pdf option is set instead of pdflatex" +msgstr "" +"lanĉi la programon PROG anstataÅ­ latex, aÅ­ okaze\n" +"de elektilo --pdf estos uzata, anstataÅ­ pdflatex" + +#: lilypond-book.py:241 lilypond-book.py:246 +msgid "PROG" +msgstr "PROG" + +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "lanĉi la programon PROG anstataŭ texi2pdf" + +#: lilypond-book.py:252 +msgid "create PDF files for use with PDFTeX" +msgstr "krei dosierojn PDF por uzi kun PDFTeX" + +#: lilypond-book.py:455 +msgid "Writing snippets..." +msgstr "Skribado de kodaĵojn..." + +#: lilypond-book.py:460 +msgid "Processing..." +msgstr "Procezado..." + +#: lilypond-book.py:465 +msgid "All snippets are up to date..." +msgstr "Ĉiuj kodaĵoj estas ĝisdataj..." + +#: lilypond-book.py:467 +msgid "Linking files..." +msgstr "Kunligado de dosieroj..." + +#: lilypond-book.py:487 +#, python-format +msgid "cannot determine format for: %s" +msgstr "ne eblas determini la formon por: %s" + +#: lilypond-book.py:496 +#, python-format +msgid "%s is up to date." +msgstr "%s estas ĝisdata." + +#: lilypond-book.py:509 +#, python-format +msgid "Writing `%s'..." +msgstr "Skribado de '%s'..." + +#: lilypond-book.py:570 +msgid "Output would overwrite input file; use --output." +msgstr "Eligo povos anstataÅ­igi enig-dosieron; uzu --output." + +#: lilypond-book.py:574 +#, python-format +msgid "Reading %s..." +msgstr "Legado de %s..." + +#: lilypond-book.py:581 +msgid "Dissecting..." +msgstr "Analizado..." + +#: lilypond-book.py:592 +#, python-format +msgid "Compiling %s..." +msgstr "Kompilado %s..." + +#: lilypond-book.py:600 +#, python-format +msgid "Processing include: %s" +msgstr "Procezado de inkluzivigo: %s" + +#: lilypond-book.py:611 +#, python-format +msgid "Removing `%s'" +msgstr "Forigado de '%s'" + +#: lilypond-book.py:704 +#, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "Difinado de protokolnivelo de LilyPond al %s" + +#: lilypond-book.py:708 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" +msgstr "Difinado de protokolnivelo de LilyPond al %s (el medi-variablo LILYPOND_LOGLEVEL)" + +#: lilypond-book.py:711 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" +msgstr "Difinado de eligo de LilyPond al --verbose, implicite de la agordoj de lilypond-book" + +#: midi2ly.py:90 +msgid "warning: " +msgstr "averto: " + +#: midi2ly.py:93 midi2ly.py:1124 +msgid "error: " +msgstr "eraro: " + +#: midi2ly.py:94 +msgid "Exiting... " +msgstr "Elirado... " + +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" +msgstr "estis trovataj pli ol 5 vocôj en liniaro, atendu malbonan eligon" + +#: midi2ly.py:1032 +#, python-format +msgid "%s output to `%s'..." +msgstr "eligo %s al '%s'..." + +#: midi2ly.py:1045 +#, python-format +msgid "Convert %s to LilyPond input.\n" +msgstr "Konverti %s al LilyPond-kodumaro.\n" + +#: midi2ly.py:1050 +msgid "print absolute pitches" +msgstr "printi absolutajn tonaltojn" + +#: midi2ly.py:1052 midi2ly.py:1080 +msgid "DUR" +msgstr "DUR" + +#: midi2ly.py:1053 +msgid "quantise note durations on DUR" +msgstr "proksimigi noto-daÅ­roj per DUR" + +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "rafiniga printado" + +#: midi2ly.py:1059 +msgid "print explicit durations" +msgstr "printi malimplicajn daÅ­rojn" + +#: midi2ly.py:1064 +msgid "prepend FILE to output" +msgstr "antaÅ­meti DOSIEROn al la eligo" + +#: midi2ly.py:1068 +msgid "set key: ALT=+sharps|-flats; MINOR=1" +msgstr "difini klavon: ALT=+diesoj|-bemoloj; MINOR=1" + +#: midi2ly.py:1069 +msgid "ALT[:MINOR]" +msgstr "ALT[:MINOR]" + +#: midi2ly.py:1074 +msgid "preview of first 4 bars" +msgstr "antaÅ­vido de la unuaj 4 mezuroj" + +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" +msgstr "forigi mesaĝojn pri progreso kaj avertojn pri troaj voĉoj" + +#: midi2ly.py:1079 +msgid "quantise note starts on DUR" +msgstr "proksimigi noto-komencojn je DUR" + +#: midi2ly.py:1083 +msgid "use s instead of r for rests" +msgstr "uzi s anstataÅ­ r por paÅ­zoj" + +#: midi2ly.py:1085 +msgid "DUR*NUM/DEN" +msgstr "DUR*NUM/DEN" + +#: midi2ly.py:1088 +msgid "allow tuplet durations DUR*NUM/DEN" +msgstr "ebligi opigajn daÅ­rojn DUR*NUM/DEN" + +#: midi2ly.py:1098 +msgid "treat every text as a lyric" +msgstr "trakti ĉiun tekston kiel muzikan" + +#: midi2ly.py:1101 +msgid "Examples" +msgstr "Ekzemploj" + +#: midi2ly.py:1125 +msgid "no files specified on command line." +msgstr "neniu dosiero estis indikata per la komandlinio." + +#: musicxml2ly.py:228 +#, python-format +msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" +msgstr "Dosiero kreita de %s estis trovata, kiu enhavas malĝustan vostligan informon. Ĉiu vostliga informo en la dosiero MusicXML estos preteratentata" + +#: musicxml2ly.py:247 musicxml2ly.py:249 +#, python-format +msgid "Unprocessed PartGroupInfo %s encountered" +msgstr "Estis trovata neprocezita 'PartGroupInfo' %s" + +#: musicxml2ly.py:500 +#, python-format +msgid "Encountered note at %s without type and duration (=%s)" +msgstr "Estis trovata noto ĉe %s sen tipo kaj daÅ­ro (=%s)" + +#: musicxml2ly.py:520 +#, python-format +msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" +msgstr "Estis trovata frakcia daÅ­ro kun denominatoro %s, ne eblas konverti al daÅ­ro de lilypond" + +#: musicxml2ly.py:767 +msgid "Unable to extract key signature!" +msgstr "Ne eblas elpreni la antaÅ­signon!" + +#: musicxml2ly.py:794 +#, python-format +msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" +msgstr "nekonata modalo %s, estas atendata 'major' aÅ­ 'minor' aŭ eklezia modalo!" + +#: musicxml2ly.py:932 +#, python-format +msgid "Encountered unprocessed marker %s\n" +msgstr "Estis trovata neprocezita markilo %s\n" + +#: musicxml2ly.py:1026 +#, python-format +msgid "unknown span event %s" +msgstr "nekonata disig-evento %s" + +#: musicxml2ly.py:1036 +#, python-format +msgid "unknown span type %s for %s" +msgstr "nekonata disig-tipo %s por %s" + +#: musicxml2ly.py:1456 +msgid "Unknown metronome mark, ignoring" +msgstr "Nekonata metronoma marko, ni preteratentas" + +#. TODO: Implement the other (more complex) way for tempo marks! +#: musicxml2ly.py:1461 +msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." +msgstr "Metronomaj markoj kun kompleksaj rilatoj ( en MusicXMl) ankoraÅ­ ne estas realigita." + +#: musicxml2ly.py:1663 +#, python-format +msgid "Unable to convert chord type %s to lilypond." +msgstr "Ne eblas konverti akordan tipon %s al lilypond." + +#: musicxml2ly.py:1816 +#, python-format +msgid "drum %s type unknown, please add to instrument_drumtype_dict" +msgstr "nekonata tipo de tamburo %s, bonvolu aldoni al 'instrument_drumtype_dict'" + +#: musicxml2ly.py:1820 +msgid "cannot find suitable event" +msgstr "ne eblas trovi taÅ­gan eventon" + +#: musicxml2ly.py:1968 +#, python-format +msgid "Negative skip %s (from position %s to %s)" +msgstr "Negativa preterpaso %s (de pozicio %s al %s)" + +#: musicxml2ly.py:2109 +#, python-format +msgid "Negative skip found: from %s to %s, difference is %s" +msgstr "Negativa preterpaso trovite: de %s al %s, la diferenco estas %s" + +#: musicxml2ly.py:2190 +#, python-format +msgid "unexpected %s; expected %s or %s or %s" +msgstr "neatendita %s; estas atendata %s aÅ­ %s aÅ­ %s" + +#: musicxml2ly.py:2296 +msgid "Encountered closing slur, but no slur is open" +msgstr "Estis trovata fermanta ligarko, sed neniu ligarko estas malfermita" + +#: musicxml2ly.py:2299 +msgid "Cannot have two simultaneous (closing) slurs" +msgstr "Ne povas ekzisti du samtempaj (fermantaj) ligarkoj" + +#: musicxml2ly.py:2308 +msgid "Cannot have a slur inside another slur" +msgstr "Ne povas ekzisti ligarko interne de alia ligarko" + +#: musicxml2ly.py:2311 +msgid "Cannot have two simultaneous slurs" +msgstr "Ne povas ekzisti du samtempaj ligarkoj" + +#: musicxml2ly.py:2445 +#, python-format +msgid "cannot simultaneously have more than one mode: %s" +msgstr "ne povas samtempe ekzisti pli ol unu modalo: %s" + +#: musicxml2ly.py:2553 +msgid "Converting to LilyPond expressions..." +msgstr "Konvertado al esprimoj de LilyPond..." + +#: musicxml2ly.py:2564 +msgid "musicxml2ly [OPTION]... FILE.xml" +msgstr "musicxml2ly [ELEKTILO]... DOSIERO.xml" + +#: musicxml2ly.py:2566 +msgid "" +"Convert MusicXML from FILE.xml to LilyPond input.\n" +"If the given filename is -, musicxml2ly reads from the command line.\n" +msgstr "" +"Konverti MusicXML de DOSIERO.xml al LilyPond-kodumaro.\n" +"Se la indikata dosiernomo estos -, musicxml2ly legos el la komandlinio.\n" + +#: musicxml2ly.py:2576 +msgid "" +"Copyright (c) 2005--2012 by\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen and\n" +" Reinhold Kainhofer \n" +msgstr "" +"Kopirajto (c) 2005--2012 de\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen kaj\n" +" Reinhold Kainhofer \n" + +#: musicxml2ly.py:2602 +msgid "use lxml.etree; uses less memory and cpu time" +msgstr "uzi lxml.etree; tio uzos malpli da memoro kaj procezil-tempo" + +#: musicxml2ly.py:2608 +msgid "input file is a zip-compressed MusicXML file" +msgstr "enig-dosiero estas zip-densigita dosiero MusicXML" + +#: musicxml2ly.py:2614 +msgid "convert pitches in relative mode (default)" +msgstr "konverti tonaltojn en relativa reĝimo (implicite)" + +#: musicxml2ly.py:2619 +msgid "convert pitches in absolute mode" +msgstr "konverti tonaltojn en absoluta reĝimo" + +#: musicxml2ly.py:2622 +msgid "LANG" +msgstr "LINGVO" + +#: musicxml2ly.py:2624 +msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" +msgstr "uzi LANG por tonalt-nomoj, ekz. 'deutsch' por not-nomoj en la germana" + +#: musicxml2ly.py:2638 +msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." +msgstr "ne konverti direktojn (^, _ aŭ -) por artikulacioj, dinamikoj , ktp." + +#: musicxml2ly.py:2644 +msgid "do not convert exact vertical positions of rests" +msgstr "ne konverti ĝustajn vertikalajn poziciojn de paÅ­zoj" + +#: musicxml2ly.py:2650 +msgid "do not convert the exact page layout and breaks" +msgstr "ne konverti la ĝustajn paĝajn aranĝon kaj saltojn" + +#: musicxml2ly.py:2656 +msgid "do not convert beaming information, use lilypond's automatic beaming instead" +msgstr "ne konverti vostligan informon, uzi aÅ­tomatan vostligadon de lilypond anstataÅ­e" + +#: musicxml2ly.py:2664 +msgid "set output filename to FILE, stdout if -" +msgstr "difini eligan dosiernomon kiel DOSIEROn, kaj norman eligon se -" + +#: musicxml2ly.py:2670 +msgid "activate midi-block" +msgstr "aktivigi midi-blokon" + +#: musicxml2ly.py:2754 +#, python-format +msgid "unknown part in part-list: %s" +msgstr "nekonata parto en part-listo: %s" + +#: musicxml2ly.py:2816 +msgid "Input is compressed, extracting raw MusicXML data from stdin" +msgstr "Enigo estas densigita, ni elprenas krudan datumaron MusicXML el norma enigo" + +#: musicxml2ly.py:2829 +#, python-format +msgid "Input file %s is compressed, extracting raw MusicXML data" +msgstr "La enig-dosiero %s estas densigita, ni elprenas krudan datumaron MusicXML" + +#: musicxml2ly.py:2859 +msgid "Reading MusicXML from Standard input ..." +msgstr "Legado de MusicXML el la norma enigo ..." + +#: musicxml2ly.py:2861 +#, python-format +msgid "Reading MusicXML from %s ..." +msgstr "Legado de MusicXML el %s ..." + +#: musicxml2ly.py:2894 +#, python-format +msgid "Output to `%s'" +msgstr "Eligo al '%s'" + +#: musicxml2ly.py:2964 +#, python-format +msgid "Unable to find input file %s" +msgstr "Ne eblas trovi la enig-dosieron %s" + +#: website_post.py:123 +msgid "English" +msgstr "Angla" + +#: website_post.py:126 +msgid "Other languages" +msgstr "Aliaj lingvoj" + +#: website_post.py:127 +#, python-format +msgid "About automatic language selection." +msgstr "Pri aÅ­tomata elekto de lingvo." + +#: getopt-long.cc:153 +#, c-format +msgid "option `%s' requires an argument" +msgstr "la elektilo '%s' postulas argumenton" + +#: getopt-long.cc:157 +#, c-format +msgid "option `%s' does not allow an argument" +msgstr "la elektilo '%s' ne permesas argumenton" + +#: getopt-long.cc:161 +#, c-format +msgid "unrecognized option: `%s'" +msgstr "nerekonata elektilo: '%s'" + +#: getopt-long.cc:167 +#, c-format +msgid "invalid argument `%s' to option `%s'" +msgstr "malvalida argumento '%s' por la elektilo '%s'" + +#: warn.cc:56 +#, c-format +msgid "Log level set to %d\n" +msgstr "Protokol-nivelo difinita al %d\n" + +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" +msgstr "nekonata protokol-nivelo '%s', ni uzas ordinaran (INFO)" + +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 +#, c-format +msgid "%d expected warning(s) not encountered: " +msgstr "%d atendataj averto(j) ne estis trovataj: " + +#: warn.cc:183 +#, c-format +msgid "fatal error: %s" +msgstr "neriparebla eraro: %s" + +#: warn.cc:192 +#, c-format +msgid "suppressed programming error: %s" +msgstr "formetita programada eraro: %s" + +#: warn.cc:197 +#, c-format +msgid "programming error: %s" +msgstr "programada eraro: %s" + +#: warn.cc:198 +msgid "continuing, cross fingers" +msgstr "daÅ­riganta, krucu viajn fingrojn" + +#: warn.cc:207 +#, c-format +msgid "suppressed error: %s" +msgstr "formetita eraro: %s" + +#: warn.cc:219 +#, c-format +msgid "suppressed warning: %s" +msgstr "formetita averto: %s" + +#: accidental-engraver.cc:180 +#, c-format +msgid "accidental typesetting list must begin with context-name: %s" +msgstr "kromsigna kompostada listo devas komenci per kuntekst-nomo': %s" + +#: accidental-engraver.cc:210 +#, c-format +msgid "procedure or context-name expected for accidental rule, found %s" +msgstr "proceduro aŭ kuntekst-nomo estis atendata por kromsigna regulo, trovite %s" + +#: accidental.cc:200 +#, c-format +msgid "Could not find glyph-name for alteration %s" +msgstr "Ne eblis trovi 'glyph-name' por aliigo %s" + +#: accidental.cc:215 +msgid "natural alteration glyph not found" +msgstr "signobildo de natura aliigo ne estis trovata" + +#: all-font-metrics.cc:149 +#, c-format +msgid "cannot find font: `%s'" +msgstr "ne eblas trovi tiparon: '%s'" + +#: apply-context-iterator.cc:42 +msgid "\\applycontext argument is not a procedure" +msgstr "argumento de \\applycontext ne estas proceduro" + +#: arpeggio.cc:115 +msgid "no heads for arpeggio found?" +msgstr "ĉu neniu kapo por arpeĝo trovite?" + +#: auto-change-iterator.cc:74 change-iterator.cc:72 +#, c-format +msgid "cannot change, already in translator: %s" +msgstr "ne eblas ŝanĝi, jam estas en tradukilo: %s" + +#: axis-group-engraver.cc:94 +msgid "Axis_group_engraver: vertical group already has a parent" +msgstr "Axis_group_engraver: vertikala grupo jam havas praulon" + +#: axis-group-engraver.cc:95 +msgid "are there two Axis_group_engravers?" +msgstr "ĉu estas du 'Axis_group_engraver'?" + +#: axis-group-engraver.cc:96 +msgid "removing this vertical group" +msgstr "forigado de tiu ĉi vertikala grupo" + +#: axis-group-interface.cc:668 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "objekto 'outside-staff' devas havi direkton, ni aprioras supren" + +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" +msgstr "mezur-kontrolo fiaskis ĉe: %s" + +#: beam-engraver.cc:147 +msgid "already have a beam" +msgstr "jam ekzistas vostligo" + +#: beam-engraver.cc:230 +msgid "unterminated beam" +msgstr "nefinigita vostligo" + +#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149 +msgid "stem must have Rhythmic structure" +msgstr "stango devas havi strukturon 'Rhythmic'" + +#: beam-engraver.cc:277 +msgid "stem does not fit in beam" +msgstr "stango ne adaptiĝas en vostligo" + +#: beam-engraver.cc:278 +msgid "beam was started here" +msgstr "vostligo estis ekigata ĉi tie" + +#. We are completely screwed. +#: beam-quanting.cc:839 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "neniu realigebla ek-agordado estis trovata: eble ne estos trovata bona vostliga inklino" + +#: beam.cc:181 +msgid "removing beam with no stems" +msgstr "ni forigas vostligon sen stangoj" + +#: change-iterator.cc:34 +#, c-format +msgid "cannot change `%s' to `%s'" +msgstr "ne eblas ŝanĝi '%s' al '%s'" + +#. FIXME: constant error message. +#: change-iterator.cc:93 +msgid "cannot find context to switch to" +msgstr "ne eblas trovi kuntekston por alternative uzi" + +#. We could change the current translator's id, but that would make +#. errors hard to catch. +#. +#. last->translator_id_string () = get_change +#. ()->change_to_id_string (); +#: change-iterator.cc:102 +#, c-format +msgid "not changing to same context type: %s" +msgstr "ni ne ŝanĝas al sama kunteksta tipo: %s" + +#. FIXME: uncomprehensable message +#: change-iterator.cc:106 +msgid "none of these in my family" +msgstr "neniu el tiuj ĉi en mia familio" + +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" +msgstr "Neniu tremsono por finigi" + +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "nefinita akorda tremsono" + +#: clef.cc:65 +#, c-format +msgid "clef `%s' not found" +msgstr "klefo '%s' ne estis trovata" + +#: cluster.cc:120 +#, c-format +msgid "unknown cluster style `%s'" +msgstr "nekonata faska stilo '%s'" + +#: cluster.cc:157 +msgid "junking empty cluster" +msgstr "forĵetado de malplena fasko" + +#: coherent-ligature-engraver.cc:110 +#, c-format +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "Coherent_ligature_engraver: difinado de 'spacing-increment=0.01': ptr=%ul" + +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" +msgstr "ne eblas trovi lini-salton kiu kontentigas limigojn" + +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" +msgstr "necesas simbol-argumentoj por \\override kaj \\revert" + +#: context.cc:149 +#, c-format +msgid "cannot find or create new `%s'" +msgstr "ne eblas trovi aÅ­ krei novan '%s'" + +#: context.cc:207 +#, c-format +msgid "cannot find or create `%s' called `%s'" +msgstr "ne eblas trovi aÅ­ krei '%s' nomata '%s'" + +#: context.cc:400 +#, c-format +msgid "cannot find or create: `%s'" +msgstr "ne eblas trovi aÅ­ krei: '%s'" + +#: custos.cc:87 +#, c-format +msgid "custos `%s' not found" +msgstr "custos '%s' ne estis trovata" + +#: dispatcher.cc:83 +msgid "Event class should be a list" +msgstr "Event-klaso devas esti listo" + +#: dispatcher.cc:166 +#, c-format +msgid "Junking event: %s" +msgstr "Rubaĵa evento: %s" + +#: dispatcher.cc:262 +msgid "Attempting to remove nonexisting listener." +msgstr "Provo forigi neekzistantan aÅ­danton." + +#: dispatcher.cc:284 +msgid "Already listening to dispatcher, ignoring request" +msgstr "Jam aÅ­dadas la disdonilon, ni preteratentas la peton" + +#: dots.cc:48 +#, c-format +msgid "dot `%s' not found" +msgstr "punkto '%s' ne estis trovata" + +#: dynamic-engraver.cc:193 +msgid "cannot find start of (de)crescendo" +msgstr "ne eblas trovi komencon de '(de)crescendo'" + +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "jam ekzistas 'decrescendo'" + +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "jam ekzistas 'crescendo'" + +#: dynamic-engraver.cc:205 +msgid "cresc starts here" +msgstr "'cresc' komenciĝas ĉi tie" + +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "nefinigita '(de)crescendo'" + +#. No explicit dynamic script events have occurred yet, but there is +#. nevertheless a dynamic spanner. Initialize last_volume_ to a +#. value within the available range. +#: dynamic-performer.cc:129 +msgid "(De)crescendo with unspecified starting volume in MIDI." +msgstr "'(De)crescendo' kun ne-indikita komenca laÅ­teco en MIDI." + +#: episema-engraver.cc:75 +msgid "already have an episema" +msgstr "jam ekzistas episemo" + +#: episema-engraver.cc:88 +msgid "cannot find start of episema" +msgstr "ne eblas trovi la komencon de episemo" + +#: episema-engraver.cc:137 +msgid "unterminated episema" +msgstr "nefinigita episemo" + +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "nefinigita etendigilo" + +#: flag.cc:113 +#, c-format +msgid "flag `%s' not found" +msgstr "flago '%s' ne estis trovata" + +#: flag.cc:133 +#, c-format +msgid "flag stroke `%s' not found" +msgstr "flag-streko '%s' ne estis trovata" + +#: font-config-scheme.cc:151 font-config.cc:53 +#, c-format +msgid "failed adding font directory: %s" +msgstr "malsukceso dum aldonado de tipara dosierujo: %s" + +#: font-config-scheme.cc:153 font-config.cc:55 +#, c-format +msgid "Adding font directory: %s" +msgstr "Aldonado de tipara dosierujo: %s" + +#: font-config-scheme.cc:167 +#, c-format +msgid "failed adding font file: %s" +msgstr "malsukceso dum aldonado de tipar-dosiero: %s" + +#: font-config-scheme.cc:169 +#, c-format +msgid "Adding font file: %s" +msgstr "Aldonado de tipar-dosiero: %s" + +#: font-config.cc:38 +msgid "Initializing FontConfig..." +msgstr "Ekigo de FontConfig..." + +#: font-config.cc:58 +msgid "Building font database..." +msgstr "Konstruado de tipara datumbazo..." + +#: footnote-engraver.cc:110 +msgid "Must be footnote-event." +msgstr "Devas esti piednota-evento." + +#: general-scheme.cc:390 +#, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "malsukceso dum redirektigo de stderr al '%s'" + +#: general-scheme.cc:469 output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "Infinito aŭ NaN estis trovata en eligo. AnstataÅ­igo per 0.0" + +#: glissando-engraver.cc:158 +msgid "unterminated glissando" +msgstr "nefinigita glito" + +#: global-context-scheme.cc:96 global-context-scheme.cc:114 +msgid "no music found in score" +msgstr "neniu muziko estis trovata en la partituro" + +#: global-context-scheme.cc:104 +msgid "Interpreting music..." +msgstr "Interpretado de muziko..." + +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "pasita tempo: %.2f sekundoj" + +#: gregorian-ligature-engraver.cc:70 +#, c-format +msgid "\\%s ignored" +msgstr "\\%s estis preteratentata" + +#: gregorian-ligature-engraver.cc:75 +#, c-format +msgid "implied \\%s added" +msgstr "implicita \\%s estis aldonata" + +#. ligature may not start with 2nd head of pes or flexa +#: gregorian-ligature-engraver.cc:224 +msgid "cannot apply `\\~' on first head of ligature" +msgstr "ne eblas apliki '\\~' en la unua kapo de kantligaturo" + +#. (pitch == prev_pitch) +#: gregorian-ligature-engraver.cc:236 +msgid "cannot apply `\\~' on heads with identical pitch" +msgstr "ne eblas apliki '\\~' en kapoj kun egalaj tonaltoj" + +#: grob-interface.cc:68 +#, c-format +msgid "Unknown interface `%s'" +msgstr "Nekonata interfaco '%s'" + +#: grob-interface.cc:79 +#, c-format +msgid "Grob `%s' has no interface for property `%s'" +msgstr "La grob '%s' havas neniun interfacon por la atributo '%s'" + +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" +msgstr "%d: %s" + +#: hairpin.cc:60 +msgid "Asking for broken bound padding at a non-broken bound." +msgstr "Peto de rompita limig-ŝtopado ĉe ne-rompita limigo." + +#: hairpin.cc:254 +msgid "decrescendo too small" +msgstr "tro malgranda 'decrescendo'" + +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" +msgstr "ne estas tiom da krampoj" + +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" +msgstr "konfliktantaj eventoj de noto-grupo" + +#: hyphen-engraver.cc:104 +msgid "removing unterminated hyphen" +msgstr "forigo de nefinigita streketo" + +#: hyphen-engraver.cc:118 +msgid "unterminated hyphen; removing" +msgstr "nefinigita streketo; ni forigas" + +#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108 +#, c-format +msgid "cannot find file: `%s'" +msgstr "ne eblas trovi la dosieron: '%s'" + +#: includable-lexer.cc:73 lily-parser-scheme.cc:100 +#, c-format +msgid "(search path: `%s')" +msgstr "(serĉvojo: '%s')" + +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "nekonata pozicio" + +#: key-engraver.cc:198 +msgid "Incomplete keyAlterationOrder for key signature" +msgstr "Nekompleta keyAlterationOrder por antaÅ­signo" + +#: key-signature-interface.cc:77 +#, c-format +msgid "No glyph found for alteration: %s" +msgstr "Neniu signobildo estis trovata por aliigo: %s" + +#: key-signature-interface.cc:87 +msgid "alteration not found" +msgstr "aliigo ne estis trovata" + +#: ligature-bracket-engraver.cc:72 ligature-engraver.cc:104 +msgid "cannot find start of ligature" +msgstr "ne eblas trovi komencon de kantligaturo" + +#: ligature-bracket-engraver.cc:85 ligature-engraver.cc:131 +msgid "already have a ligature" +msgstr "jam estas kantligaturo" + +#: ligature-engraver.cc:109 +msgid "no right bound" +msgstr "neniu dekstra limo" + +#: ligature-engraver.cc:140 +msgid "no left bound" +msgstr "neniu maldekstra limo" + +#: ligature-engraver.cc:184 +msgid "unterminated ligature" +msgstr "nefinigita kantligaturo" + +#: ligature-engraver.cc:211 +msgid "ignoring rest: ligature may not contain rest" +msgstr "ni preteratentas paÅ­zon: kantligaturo ne povas enhavi paÅ­zon" + +#: ligature-engraver.cc:212 +msgid "ligature was started here" +msgstr "kantligaturo estis komencata ĉi tie" + +#: lily-guile.cc:93 +#, c-format +msgid "(load path: `%s')" +msgstr "(ŝarg-vojo: '%s')" + +#: lily-guile.cc:416 +#, c-format +msgid "cannot find property type-check for `%s' (%s)." +msgstr "ne eblas trovi la econ 'type-check' por '%s' (%s)." + +#: lily-guile.cc:419 +msgid "perhaps a typing error?" +msgstr "eble tajperaro?" + +#: lily-guile.cc:426 +msgid "doing assignment anyway" +msgstr "ni atribuas tamen" + +#: lily-guile.cc:438 +#, c-format +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "kontrolo pri tipo por '%s' fiaskis; valoro '%s' devas esti el tipo '%s'" + +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" +msgstr "inkluziv-dosieroj ne estas permesataj en sekura reĝimo" + +#: lily-lexer.cc:282 +#, c-format +msgid "identifier name is a keyword: `%s'" +msgstr "identigila nomo estas ŝlosilvorto: '%s'" + +#: lily-lexer.cc:303 lily-lexer.cc:316 +#, c-format +msgid "%s:EOF" +msgstr "%s:EOF" + +#: lily-parser-scheme.cc:80 +#, c-format +msgid "Changing working directory to: `%s'" +msgstr "Ŝanĝado de aktuala dosierujo al: '%s'" + +#: lily-parser-scheme.cc:84 +#, c-format +msgid "unable to change directory to: `%s'" +msgstr "ne eblas ŝanĝi dosierujon al: '%s'" + +#: lily-parser-scheme.cc:99 +#, c-format +msgid "cannot find init file: `%s'" +msgstr "ne eblas trovi dosieron init: '%s'" + +#: lily-parser-scheme.cc:117 +#, c-format +msgid "Processing `%s'" +msgstr "Procezado de '%s'" + +#: lily-parser-scheme.cc:208 +msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parser-parse-string nur estas valida kun nova analizilo. Uzu ly:parser-include-string anstataÅ­e." + +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parser-string-expression nur estas valida kun nova analizilo. Uzu ly:parser-include-string anstataÅ­e." + +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "Analizado..." + +#: line-spanner.cc:373 +msgid "Line spanner's left point is to the right of its right point." +msgstr "Maldekstra punkto de lini-disigilo estas dekstre de ties dekstra punkto." + +#: lyric-combine-music-iterator.cc:199 +msgid "argument of \\lyricsto should contain Lyrics context" +msgstr "argumento de \\lyricsto devas enhavi kuntekston Lyrics" + +#: lyric-combine-music-iterator.cc:337 +#, c-format +msgid "cannot find Voice `%s'" +msgstr "ne eblas trovi Voĉon '%s'" + +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +msgstr "Teksta silabo ne havas noton. Uzu \\lyricsto aŭ 'associatedVoice'." + +#: main.cc:101 +#, c-format +msgid "" +"This program is free software. It is covered by the GNU General Public\n" +"License and you are welcome to change it and/or distribute copies of it\n" +"under certain conditions. Invoke as `%s --warranty' for more\n" +"information.\n" +msgstr "" +"Tiu ĉi aplikaĵo estas libera programaro. Ĝi estas ŝirmata de la GNU-a Ĝenerala\n" +"Publika Permeso kaj vi estas bonvena ŝanĝi ĝin kaj/aŭ re-disdoni kopiojn de ĝi\n" +"laÅ­ iaj kondiĉoj. Lanĉu kiel '%s --warranty' por pli da informo.\n" + +#: main.cc:107 +msgid "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" +msgstr "" +" Tiu ĉi aplikaĵo estas libera programaro; vi povas disdoni ĝin\n" +"kaj/aÅ­ modifi ĝin laÅ­ la kondiĉoj de la GNU-a Ĝenerala Publika Permeso\n" +"kiel eldonita de Free Software Foundation, kaj versio 3 de la Permeso,\n" +"kaj (laÅ­ via elekto) iu ajn posta versio.\n" +"\n" +" Tiu ĉi aplikaĵo estas disdonata esperante ke ĝi estos utila,\n" +"sed SEN IU AJN GARANTIO; sen eĉ la implicata garantio de\n" +"MERKATIGEBLO aÅ­ TAŬGO POR PRIVATA CELO. Vidu la GNU-an\n" +"Ĝeneralan Publikan Permeson por pli da detaloj.\n" +"\n" +" Vi devas ricevi kopion de la GNU-a Ĝenerala Publika Permeso\n" +"kune kun tiu ĉi programaro; se ne, skribu (angle) al:\n" +"Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" + +#: main.cc:141 +msgid "SYM[=VAL]" +msgstr "SIM[=VAL]" + +#: main.cc:142 +msgid "" +"set Scheme option SYM to VAL (default: #t).\n" +"Use -dhelp for help." +msgstr "" +"difini elektilon Scheme SIM al VAL (apriore: *t).\n" +"Uzu -dhelp por ricevi helpon." + +#: main.cc:146 +msgid "EXPR" +msgstr "ESPR" + +#: main.cc:146 +msgid "evaluate scheme code" +msgstr "analizi kodumaron de scheme" + +#. Bug in option parser: --output =foe is taken as an abbreviation +#. for --output-format. +#: main.cc:149 +msgid "FORMATs" +msgstr "FORMOj" + +#: main.cc:149 +msgid "dump FORMAT,... Also as separate options:" +msgstr "ŝuti FORMOn,... AnkaÅ­ kiel apartaj elektebloj:" + +#: main.cc:150 +msgid "generate PDF (default)" +msgstr "generi PDF (apriore)" + +#: main.cc:151 +msgid "generate PNG" +msgstr "generi PNG" + +#: main.cc:152 +msgid "generate PostScript" +msgstr "generi PostScript" + +#: main.cc:155 +msgid "FIELD" +msgstr "KAMPO" + +#: main.cc:155 +msgid "" +"dump header field FIELD to file\n" +"named BASENAME.FIELD" +msgstr "" +"ŝuti kap-kampo KAMPO al dosiero\n" +"nomata BAZNOMO.KAMPO" + +#: main.cc:158 +msgid "add DIR to search path" +msgstr "aldoni UJOn al la serĉvojo" + +#: main.cc:159 +msgid "use FILE as init file" +msgstr "uzi DOSIEROn kiel ekig-dosieron" + +#: main.cc:162 +msgid "USER, GROUP, JAIL, DIR" +msgstr "UZANTO, GRUPO, KAĜO, UJO" + +#: main.cc:162 +msgid "" +"chroot to JAIL, become USER:GROUP\n" +"and cd into DIR" +msgstr "" +"chroot al KAĜO, fariĝi UZANTO:GRUPO\n" +"kaj cd en UJOn" + +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" +"printi protokol-mesaĝojn laÅ­ PROTOKOLNIVELO. Eblaj valoroj estas:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (apriore) kaj DEBUG." + +#: main.cc:171 +msgid "write output to FILE (suffix will be added)" +msgstr "skribi eligon al DOSIERO (sufikso estos aldonata)" + +#: main.cc:172 +msgid "relocate using directory of lilypond program" +msgstr "relokigi uzante dosierujon de la programo lilypond" + +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "sen progreso, nur eraraj mesaĝoj (egale al loglevel=ERROR)" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "esti detalema (egale al loglevel=DEBUG)" + +#. Do not update the copyright years here, run `make grand-replace' +#: main.cc:242 +#, c-format +msgid "" +"Copyright (c) %s by\n" +"%s and others." +msgstr "" +"Kopirajto (c) %s de\n" +"%s kaj aliaj." + +#. No version number or newline here. It confuses help2man. +#: main.cc:269 +#, c-format +msgid "Usage: %s [OPTION]... FILE..." +msgstr "Uzado: %s [ELEKTILO]... DOSIERO..." + +#: main.cc:271 +msgid "Typeset music and/or produce MIDI from FILE." +msgstr "Kompostado de muziko kaj/aÅ­ produktado de MIDI el DOSIERO." + +#: main.cc:273 +msgid "LilyPond produces beautiful music notation." +msgstr "LilyPond produktas belan muzikan notadon." + +#: main.cc:275 +#, c-format +msgid "For more information, see %s" +msgstr "Por pli da informo, vidu %s" + +#: main.cc:277 +msgid "Options:" +msgstr "Elektebloj:" + +#: main.cc:331 +#, c-format +msgid "expected %d arguments with jail, found: %u" +msgstr "estis atendataj %d argumentoj kun kaĝo, estis trovataj: %u" + +#: main.cc:345 +#, c-format +msgid "no such user: %s" +msgstr "neniu tia uzanto: %s" + +#: main.cc:347 +#, c-format +msgid "cannot get user id from user name: %s: %s" +msgstr "ne eblas preni uzanto-id el uzant-nomo: %s: %s" + +#: main.cc:362 +#, c-format +msgid "no such group: %s" +msgstr "neniu tia grupo: %s" + +#: main.cc:364 +#, c-format +msgid "cannot get group id from group name: %s: %s" +msgstr "ne eblas preni grupo-id el grup-nomo: %s: %s" + +#: main.cc:372 +#, c-format +msgid "cannot chroot to: %s: %s" +msgstr "ne eblas apliki 'chroot' al: %s: %s" + +#: main.cc:379 +#, c-format +msgid "cannot change group id to: %d: %s" +msgstr "ne eblas ŝanĝi grupo-id al: %d: %s" + +#: main.cc:385 +#, c-format +msgid "cannot change user id to: %d: %s" +msgstr "ne eblas ŝanĝi uzant-id al: %d: %s" + +#: main.cc:391 +#, c-format +msgid "cannot change working directory to: %s: %s" +msgstr "ne eblas ŝanĝi aktualan dosierujon al: %s: %s" + +#: main.cc:639 +#, c-format +msgid "exception caught: %s" +msgstr "kaptita krom-okazo: %s" + +#. FIXME: constant error message. +#: mark-engraver.cc:156 +msgid "rehearsalMark must have integer value" +msgstr "'rehearsalMark' devas havis entjeran valoron" + +#: mark-engraver.cc:162 +msgid "mark label must be a markup object" +msgstr "mark-etikedo devas estis markada objekto" + +#: mensural-ligature-engraver.cc:96 +msgid "ligature with less than 2 heads -> skipping" +msgstr "kantligaturo kun malpli ol 2 kapoj -> ni preterpasas" + +#: mensural-ligature-engraver.cc:123 +msgid "cannot determine pitch of ligature primitive -> skipping" +msgstr "ne eblas determini tonalton de kantligatura originalaĵo -> ni preterpasas" + +#: mensural-ligature-engraver.cc:137 +msgid "single note ligature - skipping" +msgstr "unuopa noto en kantligaturo - ni preterpasas" + +#: mensural-ligature-engraver.cc:148 +msgid "prime interval within ligature -> skipping" +msgstr "unuta intervalo ene de kantligaturo -> ni preterpasas" + +#: mensural-ligature-engraver.cc:159 +msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" +msgstr "mezurnotacia kantligaturo: daÅ­ro ne estas unu el Mx, L, B, S -> ni preterpasas" + +#: mensural-ligature-engraver.cc:202 +msgid "semibrevis must be followed by another one -> skipping" +msgstr "pleno devas esti sekvata de alia plena -> ni preterpasas" + +#: mensural-ligature-engraver.cc:212 +msgid "" +"semibreves can only appear at the beginning of a ligature,\n" +"and there may be only zero or two of them" +msgstr "" +"plenoj nur povas aperi ĉe komenco de kantligaturo,\n" +"kaj devas esti nur \"neniu\" aÅ­ du el ili" + +#: mensural-ligature-engraver.cc:232 +msgid "" +"invalid ligatura ending:\n" +"when the last note is a descending brevis,\n" +"the penultimate note must be another one,\n" +"or the ligatura must be LB or SSB" +msgstr "" +"malvalida kantligatura finiĝo:\n" +"kiam la lasta noto estas malkreskanta duoblo,\n" +"la antaÅ­lasta noto devas esti alia noto,\n" +"aÅ­ la kantligaturo devas esti LB aÅ­ SSB" + +#: mensural-ligature-engraver.cc:387 +msgid "unexpected case fall-through" +msgstr "fiasko pro neatendita okazo" + +#: midi-item.cc:89 +#, c-format +msgid "no such MIDI instrument: `%s'" +msgstr "neniu tia instrumento MIDI: '%s'" + +#: midi-item.cc:161 +msgid "Time signature with more than 255 beats. Truncating" +msgstr "Takt-indiko kun pli ol 255 frapoj. Ni distranĉas" + +#: midi-stream.cc:39 +#, c-format +msgid "cannot open for write: %s: %s" +msgstr "ne eblas malfermi por skribi: %s: %s" + +#: midi-stream.cc:55 +#, c-format +msgid "cannot write to file: `%s'" +msgstr "ne eblas skribi en dosiero: '%s'" + +#: minimal-page-breaking.cc:40 paper-score.cc:122 +msgid "Calculating line breaks..." +msgstr "Kalkulado de lini-saltoj..." + +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." +msgstr "Kalkulado de paĝsaltoj..." + +#: multi-measure-rest.cc:138 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." +msgstr "'usable-duration-logs' devas esti ne-malplena listo. Ni revenas al plenaj paÅ­zoj." + +#: multi-measure-rest.cc:328 +msgid "Using naive multi measure rest spacing." +msgstr "Uzanta naivan plur-mezuran paÅ­zo-spacadon." + +#: music.cc:150 +#, c-format +msgid "octave check failed; expected \"%s\", found: \"%s\"" +msgstr "kontrolo de okto fiaskis; atendite \"%s\", trovite: \"%s\"" + +#: music.cc:219 +msgid "(normalized pitch)" +msgstr "(normigita tonalto)" + +#: music.cc:223 +#, c-format +msgid "Transposing %s by %s makes alteration larger than double" +msgstr "Transpono de %s per %s igas aliigon pli granda ol duobla" + +#: new-dynamic-engraver.cc:168 +#, c-format +msgid "" +"unknown crescendo style: %s\n" +"defaulting to hairpin." +msgstr "" +"nekonata tipo de 'crescendo': %s\n" +"ni uzas apriore pinĉil-forman." + +#: new-dynamic-engraver.cc:233 +#, c-format +msgid "unterminated %s" +msgstr "nefinita %s" + +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "ne eblas aldoni tekstajn skriptojn al individuaj noto-kapoj" + +#: new-fingering-engraver.cc:269 +msgid "no placement found for fingerings" +msgstr "neniu loko estis trovata por fingradoj" + +#: new-fingering-engraver.cc:270 +msgid "placing below" +msgstr "ni metas sube" + +#: note-collision.cc:496 +msgid "ignoring too many clashing note columns" +msgstr "ni preterpasas tro multajn kolumnojn kun koliziantaj notoj" + +#: note-column.cc:147 +msgid "cannot have note heads and rests together on a stem" +msgstr "ne eblas ekzisti kune notkapoj kaj paÅ­zoj en stango" + +#: note-head.cc:95 +#, c-format +msgid "none of note heads `%s' or `%s' found" +msgstr "neniu el notkapoj '%s' aÅ­ '%s' estis trovataj" + +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" +msgstr "NoteEvent sen tonalto" + +#: open-type-font.cc:44 +#, c-format +msgid "cannot allocate %lu bytes" +msgstr "ne eblas rezervi %lu bajtojn" + +#: open-type-font.cc:48 +#, c-format +msgid "cannot load font table: %s" +msgstr "ne eblas ŝargi je tipara tabelo: %s" + +#: open-type-font.cc:53 +#, c-format +msgid "FreeType error: %s" +msgstr "Eraro de FreeType: %s" + +#: open-type-font.cc:110 +#, c-format +msgid "unsupported font format: %s" +msgstr "ne subtenata formo de tiparo: %s" + +#: open-type-font.cc:112 +#, c-format +msgid "error reading font file %s: %s" +msgstr "eraro dum legado de tipara dosiero %s: %s" + +#: open-type-font.cc:187 +#, c-format +msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgstr "Eraro de FT_Get_Glyph_Name () en Freetype: %s" + +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" +msgstr "Eraro de FT_Get_Glyph_Name (): %s" + +#. find out the ideal number of pages +#: optimal-page-breaking.cc:62 +msgid "Finding the ideal number of pages..." +msgstr "Esplorado pri la plej bona nombro da paĝoj..." + +#: optimal-page-breaking.cc:85 +msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page" +msgstr "ne eblis kontentigi kaj 'systems-per-page' kaj 'page-count' samtempe, ni preteratentas 'systems-per-page'" + +#: optimal-page-breaking.cc:105 +msgid "Fitting music on 1 page..." +msgstr "Akomodado de muziko en 1 paĝo..." + +#: optimal-page-breaking.cc:107 +#, c-format +msgid "Fitting music on %d pages..." +msgstr "Akomodado de muziko en %d paĝoj..." + +#: optimal-page-breaking.cc:109 +#, c-format +msgid "Fitting music on %d or %d pages..." +msgstr "Akomodado de muziko en %d aŭ %d paĝoj..." + +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:172 +#, c-format +msgid "trying %d systems" +msgstr "provado de %d sistemoj" + +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:200 +#, c-format +msgid "best score for this sys-count: %f" +msgstr "plej bona poento por tiu ĉi 'sys-count': %f" + +#: optimal-page-breaking.cc:207 page-turn-page-breaking.cc:248 +#: paper-score.cc:162 +msgid "Drawing systems..." +msgstr "Desegnado de sistemoj..." + +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" +msgstr "marĝenoj ne akordas kun lini-larĝo, ni uzas apriorajn valorojn" + +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" +msgstr "sistemoj iras preter la paĝo pro malĝustaj paperaj agordoj, ni uzas apriorajn valorojn" + +#: page-breaking.cc:277 +msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" +msgstr "ni preteratentas 'min-systems-per-page' kaj 'max-systems-per-page' ĉar 'systems-per-page' ne estis difinata" + +#: page-breaking.cc:282 +msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" +msgstr "'min-systems-per-page' estas pli granda ol 'max-systems-per-page', ni preteratentas ambaÅ­" + +#: page-layout-problem.cc:403 +msgid "A page layout problem has been initiated that cannot accommodate footnotes." +msgstr "Paĝ-aranĝa problemo estis ekigata, kaj ĝi ne povas enteni piednotojn." + +#: page-layout-problem.cc:732 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" +msgstr "ne eblas akomodi muzikon sur paĝo: 'ragged-spacing' estis petata, sed la paĝo estis densigata" + +#: page-layout-problem.cc:735 +#, c-format +msgid "cannot fit music on page: overflow is %f" +msgstr "ne eblas akomodi muzikon sur paĝo: troo estas %f" + +#: page-layout-problem.cc:737 +msgid "compressing music to fit" +msgstr "densigado de muziko por akomodi" + +#: page-layout-problem.cc:1197 +msgid "staff-affinities should only decrease" +msgstr "'staff-affinities' devus nur malpliigi" + +#: page-turn-page-breaking.cc:168 +#, c-format +msgid "page-turn-page-breaking: breaking from %d to %d" +msgstr "'page-turn-page-breaking': saltado de %d al %d" + +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +msgstr "ne eblas adapti la unuan paĝsalto sur unuopan paĝon. Konsideru difino de 'first-page-number' al para numero." + +#: page-turn-page-breaking.cc:230 +#, c-format +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "Kalkulado de paĝa kaj liniaj saltoj (%d eblaj paĝsaltoj)..." + +#: page-turn-page-breaking.cc:300 +#, c-format +msgid "break starting at page %d" +msgstr "salto komencanta je paĝo %d" + +#: page-turn-page-breaking.cc:301 +#, c-format +msgid "\tdemerits: %f" +msgstr "\t:poentaro %f" + +#: page-turn-page-breaking.cc:302 +#, c-format +msgid "\tsystem count: %d" +msgstr "\tnombro da sistemoj: %d" + +#: page-turn-page-breaking.cc:303 +#, c-format +msgid "\tpage count: %d" +msgstr "\tnombro da paĝoj: %d" + +#: page-turn-page-breaking.cc:304 +#, c-format +msgid "\tprevious break: %d" +msgstr "\tantaÅ­a salto: %d" + +#: pango-font.cc:205 +#, c-format +msgid "" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" +msgstr "" +"Signobildo ne havas nomon, sed la tiparo subtenas nomigon de signobildoj.\n" +"Ni preterpasas signobildon U+%0X, dosiero %s" + +#: pango-font.cc:242 +#, c-format +msgid "no PostScript font name for font `%s'" +msgstr "neniu tiparnomo PostScript por la tiparo '%s'" + +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "Tiparo FreeType ne havas tiparnomon PostScript" + +#: paper-book.cc:214 +#, c-format +msgid "program option -dprint-pages not supported by backend `%s'" +msgstr "programa elektilo -dprint-pages ne estas subtenata de la intern-interfaco '%s'" + +#: paper-book.cc:233 +#, c-format +msgid "program option -dpreview not supported by backend `%s'" +msgstr "programa elektilo -dpreview ne estas subtenata de la intern-interfaco '%s'" + +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "perfortita salto estis preterpasata de iu evento, ĉu vi ne devus uzi kontrolajn mezur-stangojn?" + +#: paper-outputter-scheme.cc:41 +#, c-format +msgid "Layout output to `%s'..." +msgstr "Aranĝa eligo al '%s'..." + +#: paper-score.cc:134 +#, c-format +msgid "Element count %d (spanners %d) " +msgstr "Nombro da elementoj: %d (disigiloj %d) " + +#: paper-score.cc:138 +msgid "Preprocessing graphical objects..." +msgstr "AntaÅ­procezado de grafikaj objektoj..." + +#: parse-scm.cc:121 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "GUILE signalis eraron por la esprimo komenciĝanta ĉi tie" + +#: partial-iterator.cc:45 +msgid "trying to use \\partial after the start of a piece" +msgstr "ni provas uzi \\partial post la komenco de muziko" + +#: pdf-scheme.cc:50 +#, c-format +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "Konvertado de ĉeno '%s' al UTF-16be fiaskis: %s" + +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "nefinigita elcenta ripeto" + +#: performance.cc:54 +msgid "Track..." +msgstr "Sekvado..." + +#: performance.cc:82 +#, c-format +msgid "MIDI output to `%s'..." +msgstr "MIDI-eligo al '%s'..." + +#: phrasing-slur-engraver.cc:101 slur-engraver.cc:102 +#, c-format +msgid "direction of %s invalid: %d" +msgstr "direkto de %s malvalidas: %d" + +#: phrasing-slur-engraver.cc:175 +msgid "unterminated phrasing slur" +msgstr "nefinigita fraza ligarko" + +#: phrasing-slur-engraver.cc:210 +msgid "cannot end phrasing slur" +msgstr "ne eblas finigi frazan ligarkon" + +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: phrasing-slur-engraver.cc:230 +msgid "already have phrasing slur" +msgstr "jam estas fraza ligarko" + +#: piano-pedal-engraver.cc:279 +#, c-format +msgid "expect 3 strings for piano pedals, found: %ld" +msgstr "atendate 3 ĉenoj por piano-pedaloj, trovite: %ld" + +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 +#: piano-pedal-performer.cc:104 +#, c-format +msgid "cannot find start of piano pedal: `%s'" +msgstr "ne eblas trovi komencon de piano-pedalo: '%s'" + +#: piano-pedal-engraver.cc:340 +#, c-format +msgid "cannot find start of piano pedal bracket: `%s'" +msgstr "ne eblas trovi la komencon de piano-pedala krampo: '%s'" + +#: program-option-scheme.cc:235 +#, c-format +msgid "no such internal option: %s" +msgstr "neniu tia interna elektilo: %s" + +#: property-iterator.cc:93 +#, c-format +msgid "not a grob name, `%s'" +msgstr "ne estas 'grob'-nomo, '%s'" + +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " +msgstr "Malsukcesis kontrolo de okto, oni havis: " + +#: relocate.cc:52 +#, c-format +msgid "Setting %s to %s" +msgstr "Akomodado de %s al %s" + +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, c-format +msgid "no such file: %s for %s" +msgstr "ne tia dosiero: %s por %s" + +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 +#, c-format +msgid "no such directory: %s for %s" +msgstr "ne tia dosierujo: %s por %s" + +#: relocate.cc:93 +#, c-format +msgid "%s=%s (prepend)\n" +msgstr "%s=%s (antaÅ­meti)\n" + +#: relocate.cc:124 +#, c-format +msgid "not relocating, no %s/ or current/ found under %s" +msgstr "ni ne relokigas, neniu %s/ aÅ­ kuranta/ estis trovata sub %s" + +#: relocate.cc:134 +#, c-format +msgid "Relocation: compile datadir=%s, new datadir=%s" +msgstr "Relokigo: kompila datadir=%s, nova datadir=%s" + +#: relocate.cc:146 +#, c-format +msgid "Relocation: framework_prefix=%s" +msgstr "Relokigo: framework_prefix=%s" + +#: relocate.cc:186 +#, c-format +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "Relokigo: estas absoluta: argv0=%s\n" + +#: relocate.cc:192 +#, c-format +msgid "Relocation: from cwd: argv0=%s\n" +msgstr "Relokigo: de cwd: argv0=%s\n" + +#: relocate.cc:208 +#, c-format +msgid "" +"Relocation: from PATH=%s\n" +"argv0=%s" +msgstr "" +"Relokigo: de VOJO=%s\n" +"argv0=%s" + +#: relocate.cc:235 +msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" +msgstr "LILYPONDPREFIX estas malaktuala, uzu LILYPOND_DATADIR" + +#: relocate.cc:360 +#, c-format +msgid "Relocation file: %s" +msgstr "Relokiga dosiero: %s" + +#: relocate.cc:364 source-file.cc:65 +#, c-format +msgid "cannot open file: `%s'" +msgstr "ne eblas malfermi dosieron: '%s'" + +#: relocate.cc:394 +#, c-format +msgid "Unknown relocation command %s" +msgstr "Nekonata relokiga komando %s" + +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "ritma kapo ne estas parto de ritma kolumno" + +#: rest-collision.cc:146 +msgid "cannot resolve rest collision: rest direction not set" +msgstr "ne eblas solvi paÅ­zan kolizion: la paÅ­z-direkto ne estis difinata" + +#: rest-collision.cc:157 rest-collision.cc:266 +msgid "too many colliding rests" +msgstr "tro multe da koliziantaj paÅ­zoj" + +#: rest.cc:192 +#, c-format +msgid "rest `%s' not found" +msgstr "paÅ­zo '%s' ne estis trovata" + +#: score-engraver.cc:78 +#, c-format +msgid "cannot find `%s'" +msgstr "ne eblas trovi '%s'" + +#: score-engraver.cc:80 +msgid "Music font has not been installed properly." +msgstr "Muzika tiparo ne estas instalita ĝuste." + +#: score-engraver.cc:82 +#, c-format +msgid "Search path `%s'" +msgstr "Serĉvojo '%s'" + +#: score-engraver.cc:84 +msgid "Aborting" +msgstr "Ni ĉesas" + +#: score.cc:172 +msgid "already have music in score" +msgstr "jam estas muziko en la partituro" + +#: score.cc:173 +msgid "this is the previous music" +msgstr "tio ĉi estas la antaÅ­a muziko" + +#: score.cc:178 +msgid "errors found, ignoring music expression" +msgstr "eraroj trovitaj, ni preterpasas la muzikan esprimon" + +#. FIXME: +#: script-engraver.cc:113 +msgid "do not know how to interpret articulation:" +msgstr "ni ne scias kiel interpreti artikulacion:" + +#: script-engraver.cc:114 +msgid " scheme encoding: " +msgstr " enkodado de 'scheme': " + +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" +msgstr "direkto ne povas esti CENTER en ly:skyline-pair::skyline" + +#: slur-engraver.cc:176 +msgid "unterminated slur" +msgstr "nefinigita ligarko" + +#: slur-engraver.cc:211 +msgid "cannot end slur" +msgstr "ne eblas finigi ligarkon" + +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: slur-engraver.cc:231 +msgid "already have slur" +msgstr "jam ekzistas ligarkon" + +#: slur.cc:430 +#, c-format +msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgstr "Preteratento de 'grob' por ligarko: %s. Ĉu 'avoid-slur' ne estas difinita?" + +#: source-file.cc:85 +#, c-format +msgid "expected to read %d characters, got %d" +msgstr "atendante legi %d signojn, ni ricevis %d" + +#: staff-performer.cc:275 +msgid "MIDI channel wrapped around" +msgstr "MIDI-kanalo estis ĉirkaÅ­fluigata" + +#: staff-performer.cc:276 +msgid "remapping modulo 16" +msgstr "remapado de modulo 16" + +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" +msgstr "daÅ­ro de tremsono estas tro longa" + +#: stem-engraver.cc:162 +#, c-format +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "aldonado de notkapo al malakorda stango (tipo = %d/%d)" + +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" +msgstr "eble la enigo devus indiki polifoniajn voĉojn" + +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" +msgstr "stranga grando de stango, kontrolu mallarĝajn vostligojn" + +#: system.cc:200 +#, c-format +msgid "Element count %d" +msgstr "Nombro da elementoj: %d" + +#: system.cc:480 +#, c-format +msgid "Grob count %d" +msgstr "Nombro da 'grob': %d" + +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 +#, c-format +msgid "Cyclic markup detected: %s" +msgstr "Cikla markado estis detektata: %s" + +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 +#, c-format +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "Markada profundo superas maksimuman valoron %d; Markado: %s" + +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" +msgstr "ne eblas trovi komencon de tekst-disigilo" + +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" +msgstr "jam ekzistas tekst-disigilo" + +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" +msgstr "nefinigita tekst-disigilo" + +#: tie-engraver.cc:117 +msgid "unterminated tie" +msgstr "nefinigita ligaturo" + +#: tie-engraver.cc:348 +msgid "lonely tie" +msgstr "sola ligaturo" + +#. +#. Todo: should make typecheck? +#. +#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. +#. +#: time-signature-engraver.cc:75 +#, c-format +msgid "strange time signature found: %d/%d" +msgstr "stranga takt-indiko estis trovata: %d/%d" + +#. If there is no such symbol, we default to the numbered style. +#. (Here really with a warning!) +#: time-signature.cc:122 +#, c-format +msgid "time signature symbol `%s' not found; reverting to numbered style" +msgstr "tempindika simbolo '%s' ne estis trovata; ni revenas al numera stilo" + +#: translator-ctors.cc:65 +#, c-format +msgid "unknown translator: `%s'" +msgstr "nekonata tradukilo: '%s'" + +#: translator-group-ctors.cc:40 +#, c-format +msgid "fatal error. Couldn't find type: %s" +msgstr "fatala eraro. Ne eblis trovi tipon: %s" + +#: translator-group.cc:188 +#, c-format +msgid "cannot find: `%s'" +msgstr "ne eblas trovi: '%s'" + +#: translator.cc:326 +#, c-format +msgid "Two simultaneous %s events, junking this one" +msgstr "Du samtempaj eventoj %s, ni forĵetas tiun ĉi" + +#: translator.cc:327 +#, c-format +msgid "Previous %s event here" +msgstr "AntaÅ­a evento %s ĉi tie" + +#: ttf.cc:480 ttf.cc:528 +#, c-format +msgid "font index %d too large for font `%s', using index 0" +msgstr "tipar-indico %d estas tro larĝa por la tiparo '%s', ni uzas indicon 0" + +#: ttf.cc:512 ttf.cc:562 +msgid "font index must be non-negative, using index 0" +msgstr "tipar-indico devas esti ne-negativa, ni uzas indicon 0" + +#: tuplet-engraver.cc:110 +msgid "No tuplet to end" +msgstr "Neniu opigo por finigi" + +#: vaticana-ligature-engraver.cc:400 +#, c-format +msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" +msgstr "preteratentita(j) prefikso(j) '%s' de tiu ĉi kapo akorde al la limigoj de la elektita kantligatura stilo" + +#: vaticana-ligature-engraver.cc:466 +msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch. The ligature should be split." +msgstr "Dusenca uzo de punktoj en kantligaturo: estas multoblaj punktitaj notoj kun sama tonalto. La kantligaturo devos esti apartata." + +#: vaticana-ligature-engraver.cc:524 +msgid "This ligature has a dotted head followed by a non-dotted head. The ligature should be split after the last dotted head before this head." +msgstr "La kantligaturo havas punktitan kapon sekvatan de ne-punktita kapo. La kantligaturo devos estis apartata post la lasta punktita kapo antaŭ tiu ĉi kapo." + +#: vaticana-ligature-engraver.cc:736 +#, c-format +msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" +msgstr "Vaticana_ligature_engraver: difinado de 'spacing-increment = %f': ptr =%ul" + +#: vaticana-ligature.cc:94 +msgid "flexa-height undefined; assuming 0" +msgstr "'flexa-height' ne difinita; ni uzas 0" + +#: vaticana-ligature.cc:99 +msgid "ascending vaticana style flexa" +msgstr "kreskanta vatikana stilo 'flexa'" + +#. fixme: be more verbose. +#: volta-engraver.cc:110 +msgid "cannot end volta spanner" +msgstr "ne eblas finigi ripet-disigilon" + +#: volta-engraver.cc:120 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "jam ekzistas ripet-disigilo, tiun alian ni finas tro frue" + +#: volta-engraver.cc:124 +msgid "also already have an ended spanner" +msgstr "ankaÅ­ jam ekzistas finigita disigilo" + +#: volta-engraver.cc:125 +msgid "giving up" +msgstr "ni rezignas" + +#: parser.yy:161 parser.yy:175 +msgid "Too much lookahead" +msgstr "Tro da antaÅ­rigardo" + +#: parser.yy:835 parser.yy:1284 +msgid "not a context mod" +msgstr "ne estas kunteksta 'mod'" + +#: parser.yy:1027 +msgid "\\paper cannot be used in \\score, use \\layout instead" +msgstr "\\paper ne povas esti uzata en \\score, uzu \\layout anstataÅ­e" + +#: parser.yy:1051 +msgid "need \\paper for paper block" +msgstr "necesas \\paper por papera bloko" + +#: parser.yy:1204 +msgid "Ignoring non-music expression" +msgstr "Ni preterpasas ne-muzikan esprimon" + +#: parser.yy:2044 +msgid "only \\consists and \\remove take non-string argument." +msgstr "nur \\consists kaj \\remove prenas ne-ĉenan argumenton." + +#: parser.yy:2057 +msgid "Grob name should be alphanumeric" +msgstr "Grob-nomo devas esti alfanumera" + +#: parser.yy:2261 +msgid "not a rhythmic event" +msgstr "ne estas ritma evento" + +#: parser.yy:2357 parser.yy:2362 +msgid "have to be in Lyric mode for lyrics" +msgstr "devas esti en reĝimo Lyric por tekstoj" + +#: parser.yy:2477 +msgid "expecting string as script definition" +msgstr "ni atendas ĉeno kiel difino de skripto" + +#: parser.yy:2637 parser.yy:2681 +#, c-format +msgid "not a duration: %d" +msgstr "ne estas daÅ­ro: %d" + +#: parser.yy:2800 +msgid "have to be in Note mode for notes" +msgstr "devas esti en reĝimo Note por notoj" + +#: parser.yy:2855 +msgid "have to be in Chord mode for chords" +msgstr "devas esti en reĝimo Chord por akordoj" + +#: parser.yy:3115 +msgid "not a markup" +msgstr "ne estas markado" + +#: lexer.ll:218 +msgid "stray UTF-8 BOM encountered" +msgstr "perdita UTF-8 BOM aperis" + +#: lexer.ll:221 +msgid "Skipping UTF-8 BOM" +msgstr "Preterpasado de UTF-8 BOM" + +#: lexer.ll:279 +#, c-format +msgid "Renaming input to: `%s'" +msgstr "Renomigo de la enigo al: '%s'" + +#: lexer.ll:296 +msgid "quoted string expected after \\version" +msgstr "citita ĉeno estas atendata post \\version" + +#: lexer.ll:300 +msgid "quoted string expected after \\sourcefilename" +msgstr "citita ĉeno estas atendata post \\sourcefilename" + +#: lexer.ll:304 +msgid "integer expected after \\sourcefileline" +msgstr "entjero estas atendata post \\sourcefileline" + +#: lexer.ll:327 +msgid "\\maininput not allowed outside init files" +msgstr "\\maininput ne estas permesata ekstere de dosieroj 'init'" + +#: lexer.ll:351 +#, c-format +msgid "wrong or undefined identifier: `%s'" +msgstr "malĝusta aÅ­ nedifinita identigilo: '%s'" + +#: lexer.ll:377 +msgid "string expected after \\include" +msgstr "ĉeno estas atendata post \\include" + +#. backup rule +#: lexer.ll:387 +msgid "end quote missing" +msgstr "fina citilo mankas" + +#: lexer.ll:558 +msgid "Brace found at end of lyric. Did you forget a space?" +msgstr "Kurbkrampo estis trovata ĉe fino de muzikteksto. Ĉu vi forgesis spacon?" + +#: lexer.ll:672 +msgid "Brace found at end of markup. Did you forget a space?" +msgstr "Kurbkrampo estis trovata ĉe fino de markado. Ĉu vi forgesis spacon?" + +#: lexer.ll:684 +msgid "EOF found inside a comment" +msgstr "EOF estis trovata interne de komento" + +#: lexer.ll:782 +#, c-format +msgid "invalid character: `%s'" +msgstr "malvalida signo: '%s'" + +#: lexer.ll:903 lexer.ll:904 +#, c-format +msgid "unknown escaped string: `\\%s'" +msgstr "nekonata eskapita ĉeno: '\\%s'" + +#: lexer.ll:1186 lexer.ll:1187 +msgid "non-UTF-8 input" +msgstr "ne-unikoda enigo" + +#: lexer.ll:1230 lexer.ll:1231 +#, c-format +msgid "file too old: %s (oldest supported: %s)" +msgstr "dosiero tro malnova: %s (pli malnova subtenata: %s)" + +#: lexer.ll:1231 lexer.ll:1232 +msgid "consider updating the input with the convert-ly script" +msgstr "konsideru ĝisdatigi la enigon per la skripto 'convert-ly'" + +#: lexer.ll:1237 lexer.ll:1238 +#, c-format +msgid "program too old: %s (file requires: %s)" +msgstr "programo tro malnova: %s (la dosiero postulas: %s)" + +#: backend-library.scm:27 +#, scheme-format +msgid "Invoking `~a'..." +msgstr "Alvokado de '~a'..." + +#: backend-library.scm:31 +#, scheme-format +msgid "`~a' failed (~a)\n" +msgstr "'~a' fiaskis (~a)\n" + +#: backend-library.scm:90 +#, scheme-format +msgid "Converting to `~a'...\n" +msgstr "Konvertado al '~a'...\n" + +#. Do not try to guess the name of the png file, +#. GS produces PNG files like BASE-page%d.png. +#: backend-library.scm:99 +#, scheme-format +msgid "Converting to ~a..." +msgstr "Konvertado al ~a..." + +#: backend-library.scm:137 +#, scheme-format +msgid "Writing header field `~a' to `~a'..." +msgstr "Skribado de kapa kampo '~a' al '~a'..." + +#: backend-library.scm:187 +#, scheme-format +msgid "missing stencil expression `~S'" +msgstr "mankas esprimo de 'stencil' '~S'" + +#: chord-entry.scm:52 +#, scheme-format +msgid "Spurious garbage following chord: ~A" +msgstr "Eventuala rubaĵo sekvanta akordon: ~A" + +#: define-context-properties.scm:31 define-grob-properties.scm:21 +#: define-music-properties.scm:21 +#, scheme-format +msgid "symbol ~S redefined" +msgstr "simbolo ~S estis redifinata" + +#: define-event-classes.scm:67 +#, scheme-format +msgid "unknown parent class `~a'" +msgstr "nekonata event-klaso '~a'" + +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" +msgstr "neniu sistemo estis trovata en markado \\score, ĉu ĝi havas blokon \\layout?" + +#: define-markup-commands.scm:2614 +#, scheme-format +msgid "Cannot find glyph ~a" +msgstr "Ne eblas trovi signobildon ~a" + +#: define-markup-commands.scm:3040 +#, scheme-format +msgid "no brace found for point size ~S " +msgstr "neniu kurbkrampo estis trovata por la punkta grando ~S " + +#: define-markup-commands.scm:3041 +#, scheme-format +msgid "defaulting to ~S pt" +msgstr "apriore al ~S pt" + +#: define-markup-commands.scm:3194 +#, scheme-format +msgid "not a valid duration string: ~a" +msgstr "ne estas valida daÅ­ro-ĉeno: ~a" + +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" +msgstr "atendata simbolo: ~S" + +#: define-music-types.scm:768 +#, scheme-format +msgid "cannot find music object: ~S" +msgstr "ne eblas trovi muzik-objekton: ~S" + +#: define-music-types.scm:787 +#, scheme-format +msgid "unknown repeat type `~S'" +msgstr "nekonata ripeto-tipo '~S'" + +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" +msgstr "Vidu 'define-music-types.scm' por subtenataj ripetoj" + +#: define-note-names.scm:962 +msgid "Select note names language." +msgstr "Elekti lingvon de not-nomoj." + +#: define-note-names.scm:968 +#, scheme-format +msgid "Using `~a' note names..." +msgstr "Aplikado de not-nomoj '~a'..." + +#: define-note-names.scm:971 +#, scheme-format +msgid "Could not find language `~a'. Ignoring." +msgstr "Ne eblis trovi la lingvon '~a'. Preterpaso." + +#: document-backend.scm:132 +#, scheme-format +msgid "pair expected in doc ~s" +msgstr "paro estas atendata en dok ~s" + +#: document-backend.scm:189 +#, scheme-format +msgid "cannot find interface for property: ~S" +msgstr "ne eblas trovi interfacon por la atributo: ~S" + +#: document-backend.scm:199 +#, scheme-format +msgid "unknown Grob interface: ~S" +msgstr "nekonata interfaco Grob: ~S" + +#: documentation-lib.scm:59 +#, scheme-format +msgid "Processing ~S..." +msgstr "Procezado de ~S..." + +#: documentation-lib.scm:176 +#, scheme-format +msgid "Writing ~S..." +msgstr "Skribado de ~S..." + +#: documentation-lib.scm:188 +#, scheme-format +msgid "cannot find description for property `~S' (~S)" +msgstr "ne eblas trovi priskribon por la atributo '~S' (~S)" + +#: documentation-lib.scm:209 +#, scheme-format +msgid "cannot find description for property ~S (~S)" +msgstr "ne eblas trovi priskribon por la atributo ~S (~S)" + +#: flag-styles.scm:151 +#, scheme-format +msgid "flag stroke `~a' or `~a' not found" +msgstr "flag-streko '~a' aÅ­ '~a' ne estis trovata" + +#: framework-eps.scm:108 +#, scheme-format +msgid "Writing ~a..." +msgstr "Skribado de ~a..." + +#: framework-ps.scm:250 +#, scheme-format +msgid "cannot embed ~S=~S" +msgstr "ne eblas enkorpigi ~S=~S" + +#: framework-ps.scm:293 +#, scheme-format +msgid "cannot extract file matching ~a from ~a" +msgstr "ne eblas eltiri dosieron kongruanta al ~a, el ~a" + +#: framework-ps.scm:311 +#, scheme-format +msgid "do not know how to embed ~S=~S" +msgstr "ni ne scias kiel enkorpigi ~S=~S" + +#: framework-ps.scm:336 +#, scheme-format +msgid "do not know how to embed font ~s ~s ~s" +msgstr "ni ne scias kiel enkorpigi la tiparon ~s ~s ~s" + +#: framework-ps.scm:686 +msgid "" +"\n" +"The PostScript backend does not support the\n" +"system-by-system output. For that, use the EPS backend instead,\n" +"\n" +" lilypond -dbackend=eps FILE\n" +"\n" +"If have cut & pasted a lilypond fragment from a webpage, be sure\n" +"to only remove anything before\n" +"\n" +" %% ****************************************************************\n" +" %% Start cut-&-pastable-section\n" +" %% ****************************************************************\n" +msgstr "" +"\n" +"La interna interfaco PostScript ne subtenas la\n" +"eligon 'system-by-system'. Pro tio, uzu la interfacon EPS anstataÅ­e,\n" +"\n" +" lilypond -dbackend=eps DOSIERO\n" +"\n" +"Se vi kopiis & algluis fragmenton lilypond de retpaĝo, certiĝu\n" +"ke vi nur forviŝas ion antaÅ­e\n" +"\n" +" %% ****************************************************************\n" +" %% Ekigi cut-&-pastable-section\n" +" %% ****************************************************************\n" + +#: framework-svg.scm:84 +#, scheme-format +msgid "Updating font into: ~a" +msgstr "Ĝisdatigo de tiparo al: ~a" + +#: graphviz.scm:64 +#, scheme-format +msgid "Writing graph `~a'..." +msgstr "Skribado de grafikaĵo '~a'..." + +#: layout-beam.scm:40 +#, scheme-format +msgid "Error in beam quanting. Expected (~S,~S) found ~S." +msgstr "Eraro en kalkulado de vostligo. Atendante (~S,~S), trovis ~S." + +#: layout-beam.scm:54 +#, scheme-format +msgid "Error in beam quanting. Expected ~S 0, found ~S." +msgstr "Eraro en kalkulado de vostligo. Atendante ~S 0, trovis ~S." + +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" +msgstr "La muziko ne taÅ­gas por 'context-mod'" + +#: lily-library.scm:349 +#, scheme-format +msgid "Cannot find context-def \\~a" +msgstr "Ne eblas trovi context-def \\~a" + +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" +msgstr "La muziko ne taÅ­gas por output-def" + +#: lily-library.scm:892 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." +msgstr "" +"Trovi la indicon inter @var{start} kaj @var{end} (entjero)\n" +"kiu produktas plej bonan kongruon al @var{target-val} se\n" +"aplikata al la funkcio @var{getter}." + +#: lily-library.scm:966 +#, scheme-format +msgid "unknown unit: ~S" +msgstr "nekonata unuo: ~S" + +#: lily-library.scm:991 +#, scheme-format +msgid "no \\version statement found, please add~afor future compatibility" +msgstr "neniu komando \\version estis trovata, bonvolu aldoni ~a por estonta kongrueco" + +#: lily-library.scm:997 +msgid "old relative compatibility not used" +msgstr "malnova relativa kongruo ne estis uzata" + +#: lily.scm:234 +msgid "Using (ice-9 curried-definitions) module\n" +msgstr "Ni uzas la modulon (ice-9 curried-definitions)\n" + +#: lily.scm:237 +msgid "Guile 1.8\n" +msgstr "Guile 1.8\n" + +#: lily.scm:297 +#, scheme-format +msgid "cannot find: ~A" +msgstr "ne eblas trovi: ~A" + +#: lily.scm:708 +msgid "Success: compilation successfully completed" +msgstr "Sukceso: la kompilado sukcese plenumiĝis" + +#: lily.scm:709 +msgid "Compilation completed with warnings or errors" +msgstr "La kompilado plenumiĝis kun avertoj aÅ­ eraroj" + +#: lily.scm:771 +#, scheme-format +msgid "job ~a terminated with signal: ~a" +msgstr "la laboro ~a finis kun signalo: ~a" + +#: lily.scm:774 +#, scheme-format +msgid "" +"logfile ~a (exit ~a):\n" +"~a" +msgstr "" +"protokol-dosiero ~a (eliro ~a):\n" +"~a" + +#: lily.scm:796 lily.scm:882 +#, scheme-format +msgid "failed files: ~S" +msgstr "fiaskintajn dosieroj: ~S" + +#: lily.scm:873 +#, scheme-format +msgid "Redirecting output to ~a..." +msgstr "Redirektigo de eligo al ~a..." + +#: lily.scm:892 ps-to-png.scm:66 +#, scheme-format +msgid "Invoking `~a'...\n" +msgstr "Alvokado de '~a'...\n" + +#: ly-syntax-constructors.scm:66 +#, scheme-format +msgid "~a function cannot return ~a" +msgstr "funkcio ~a ne povas liveri ~a" + +#: ly-syntax-constructors.scm:75 +#, scheme-format +msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgstr "malĝusta tipo por argumento ~a. Atendate ~a, trovite ~s" + +#: ly-syntax-constructors.scm:188 +#, scheme-format +msgid "Invalid property operation ~a" +msgstr "Malvalida atribut-operacio ~a" + +#: markup-macros.scm:331 +#, scheme-format +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgstr "Malĝusta nombro da argumentoj. Atendate: ~A, trovite ~A: ~S" + +#: markup-macros.scm:337 +#, scheme-format +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgstr "Malvalida argumento en pozicio ~A. Atendite: ~A, trovite: ~S." + +#: markup-macros.scm:373 +#, scheme-format +msgid "Not a markup command: ~A" +msgstr "Ne estas markada komando: ~A" + +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" +msgstr "la tonalto devena (from) ne estas en skalo; preterpaso" + +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" +msgstr "la tonalto alvena (to) ne estas en skalo; preterpaso" + +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" +msgstr "la transponota tonalto ne estas en skalo; preterpaso" + +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" +msgstr "la tonalto ĉirkaÅ­a (around) ne estas en skalo; preterpaso" + +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" +msgstr "la inversigota tonalto ne estas en skalo; preterpaso" + +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" +msgstr "negativa nombro da rekopiado; preterpaso" + +#: music-functions.scm:272 +msgid "More alternatives than repeats. Junking excess alternatives" +msgstr "Pli da alternativoj ol ripetoj. Forĵeto de kromaj alternativoj" + +#: music-functions.scm:303 +#, scheme-format +msgid "invalid tremolo repeat count: ~a" +msgstr "malvalida tremson-ripeta nombro: ~a" + +#: music-functions.scm:689 +msgid "Bad chord repetition" +msgstr "Malĝusta ripeto de akordo" + +#: music-functions.scm:724 +#, scheme-format +msgid "music expected: ~S" +msgstr "atendita muziko: ~S" + +#: music-functions.scm:1042 +#, scheme-format +msgid "cannot find quoted music: `~S'" +msgstr "ne eblas trovi la cititan muzikon: '~S'" + +#: music-functions.scm:1180 +msgid "Add @var{octave-shift} to the octave of @var{pitch}." +msgstr "Aldoni @var{octave-shift} al la okto de @var{pitch}." + +#: music-functions.scm:1240 +#, scheme-format +msgid "Unknown octaveness type: ~S " +msgstr "Nekonata okteca tipo: ~S " + +#: music-functions.scm:1241 +msgid "Defaulting to 'any-octave." +msgstr "Apriore al 'any-octave." + +#: music-functions.scm:1578 +#, scheme-format +msgid "unknown accidental style: ~S" +msgstr "nekonata stilo de aliigo: ~S" + +#: output-ps.scm:277 output-svg.scm:524 +#, scheme-format +msgid "unknown line-cap-style: ~S" +msgstr "nekonata 'line-cap-style': ~S" + +#: output-ps.scm:282 output-svg.scm:530 +#, scheme-format +msgid "unknown line-join-style: ~S" +msgstr "nekonata 'line-join-style': ~S" + +#: output-svg.scm:47 +#, scheme-format +msgid "undefined: ~S" +msgstr "nedifinita: ~S" + +#: output-svg.scm:157 +#, scheme-format +msgid "cannot decypher Pango description: ~a" +msgstr "ne eblas deĉifri priskribon Pango: ~a" + +#: output-svg.scm:237 +msgid "Glyph must have a unicode value" +msgstr "Signobildo devas havi unikodan valoron" + +#: output-svg.scm:289 output-svg.scm:299 +#, scheme-format +msgid "cannot find SVG font ~S" +msgstr "ne eblas trovi SVG-tiparon ~S" + +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "set-global-staff-size: ne en supernivela rango" + +#: paper.scm:315 +#, scheme-format +msgid "This is not a \\layout {} object, ~S" +msgstr "Tio ĉi ne estas objekto \\layout {}, ~S" + +#: paper.scm:327 +#, scheme-format +msgid "Unknown paper size: ~a" +msgstr "Nekonata paper-grando: ~a" + +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:342 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "Uzendas #(set-paper-size .. ) interne de \\paper { ... }" + +#: parser-clef.scm:143 parser-clef.scm:183 +#, scheme-format +msgid "unknown clef type `~a'" +msgstr "nekonata kleftipo '~a'" + +#: parser-clef.scm:144 parser-clef.scm:184 +#, scheme-format +msgid "supported clefs: ~a" +msgstr "subtenataj klefoj: ~a" + +#: parser-ly-from-scheme.scm:73 +msgid "error in #{ ... #}" +msgstr "eraro en #{ ... #}" + +#: part-combiner.scm:598 +#, scheme-format +msgid "quoted music `~a' is empty" +msgstr "la citita muziko '~a' estas malplena" + +#: ps-to-png.scm:70 +#, scheme-format +msgid "~a exited with status: ~S" +msgstr "~a finis kun stato: ~S" + +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" +msgstr "aserto fiaskis: ~S" + +#: translation-functions.scm:359 +#, scheme-format +msgid "Negative fret for pitch ~a on string ~a" +msgstr "Negativa freto por tonalto ~a sur kordo ~a" + +#: translation-functions.scm:362 +#, scheme-format +msgid "Missing fret for pitch ~a on string ~a" +msgstr "Mankas freto por tonalto ~a sur kordo ~a" + +#: translation-functions.scm:413 +#, scheme-format +msgid "No open string for pitch ~a" +msgstr "Neniu libera kordo por tonalto ~a" + +#: translation-functions.scm:428 translation-functions.scm:440 +#, scheme-format +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +msgstr "La petita kordo por tonalto postulas negativan freton: kordo ~a tonalto ~a" + +#: translation-functions.scm:431 +msgid "Ignoring string request and recalculating." +msgstr "Preterpaso de peto de kordo kaj rekalkulado." + +#: translation-functions.scm:443 +msgid "Ignoring note in tablature." +msgstr "Preterpaso de noto en tabulaturo." + +#: translation-functions.scm:466 +#, scheme-format +msgid "No string for pitch ~a (given frets ~a)" +msgstr "Neniu kordo por tonalto ~a (je fretoj ~a)" + +#: translation-functions.scm:571 +#, scheme-format +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" +msgstr "" +"Neniu etikedo por freto ~a (sur kordo ~a);\n" +"nur ~a fret-etikedoj estis provizataj" + +#~ msgid "add midi-block to .ly file" +#~ msgstr "aldoni midi-blokon al dosiero .ly" + +#~ msgid "Found infinity or nan in output. Substituting 0.0" +#~ msgstr "Infinito aŭ NaN estis trovata en eligo. AnstataÅ­igo per 0.0" + +#~ msgid "All classes must be the last in their matrilineal line." +#~ msgstr "Ĉiuj klasoj devas esti la lasta en ilia devena linio." + +#~ msgid "All classes must have a well-defined pedigree in the existing class hierarchy." +#~ msgstr "Ĉiuj klasoj devas havi bon-difinitan pedigrion en la ekzistanta klas-hierarkio." + +#~ msgid "event class ~A seems to be unused" +#~ msgstr "event-klaso ~A ŝajnas esti neuzata" + +#~ msgid "translator listens to nonexisting event class ~A" +#~ msgstr "tradukilo aÅ­skultas neekzistantan event-klason ~A" diff --git a/po/es.po b/po/es.po index 032d2732db..6f80b3db3c 100644 --- a/po/es.po +++ b/po/es.po @@ -1,19 +1,20 @@ -# translation of lilypond-2.13.53.po to Español +# translation of lilypond-2.15.37.1.po to Español # Spanish translation of GNU Lilypond - http://lilypond.org -# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # # This file is distributed under the same license as the lilypond package. # # Quique , 2002, 2004. # Daniel Tonda , 2006. -# Francisco Vila , 2007, 2008, 2009, 2010, 2011. # This file is distributed under the same license as the lilypond package. +# Francisco Vila , 2007, 2008, 2009, 2010, 2011, 2012. +# msgid "" msgstr "" -"Project-Id-Version: lilypond-2.13.53\n" +"Project-Id-Version: lilypond-2.15.41\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" -"POT-Creation-Date: 2011-03-02 10:34+0100\n" -"PO-Revision-Date: 2011-03-03 15:03+0100\n" +"POT-Creation-Date: 2012-07-05 20:10+0200\n" +"PO-Revision-Date: 2012-07-10 10:35+0200\n" "Last-Translator: Francisco Vila \n" "Language-Team: Spanish \n" "Language: es\n" @@ -21,7 +22,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: fontextract.py:25 #, python-format @@ -38,49 +39,82 @@ msgstr "Se ha extraído %s" msgid "Writing fonts to %s" msgstr "Escribiendo las tipografías en %s" -#: book_snippets.py:519 +#: book_snippets.py:409 #, python-format msgid "deprecated ly-option used: %s=%s" msgstr "se ha usado una ly-option obsoleta: %s=%s" -#: book_snippets.py:521 +#: book_snippets.py:411 #, python-format msgid "compatibility mode translation: %s=%s" msgstr "traducción en modo de compatibilidad: %s=%s" -#: book_snippets.py:524 +#: book_snippets.py:414 #, python-format msgid "deprecated ly-option used: %s" msgstr "se usó una ly-option obsoleta: %s" -#: book_snippets.py:526 +#: book_snippets.py:416 #, python-format msgid "compatibility mode translation: %s" msgstr "traducción en modo compatible: %s" -#: book_snippets.py:544 +#: book_snippets.py:533 #, python-format msgid "ignoring unknown ly option: %s" msgstr "opción ly desconocida e ignorada: %s" -#: book_snippets.py:736 +#: book_snippets.py:624 +#, python-format +msgid "Missing files: %s" +msgstr "Archivos que faltan: %s" + +#: book_snippets.py:654 +#, python-format +msgid "Could not overwrite file %s" +msgstr "No se puede sobreescribir el archivo %s" + +#: book_snippets.py:741 #, python-format -msgid "Opening filter `%s'\n" -msgstr "Abriendo el filtro «%s»\n" +msgid "Running through filter `%s'" +msgstr "Ejecutando a través del filtro «%s»" -#: book_snippets.py:756 +#: book_snippets.py:761 #, python-format msgid "`%s' failed (%d)" msgstr "«%s» ha fallado (%d)" -#: book_snippets.py:757 +#: book_snippets.py:762 msgid "The error log is as follows:" msgstr "El registro de errores es como sigue:" +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "Conviertiendo archivo MusicXML «%s»...\n" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" +"%s: nombre duplicado pero contenido diferente del archivo original,\n" +"se imprime la diferencia respecto al archivo existente." + +#: book_snippets.py:922 +#, python-format +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." +msgstr "" +"%s: nombre duplicado pero contenido diferente del archivo convertido de lilypond,\n" +"se imprime la diferencia respecto al archivo existente." + #: convertrules.py:12 #, python-format -msgid "Not smart enough to convert %s" -msgstr "No soy tan listo como para convertir %s" +msgid "Not smart enough to convert %s." +msgstr "No soy tan listo como para convertir %s." #: convertrules.py:13 msgid "Please refer to the manual for details, and update manually." @@ -91,111 +125,115 @@ msgstr "Consulte el manual para ver los detalles, y efectúe una actualización msgid "%s has been replaced by %s" msgstr "%s se ha sustituido por %s" -#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66 -#: input.cc:109 +#: convertrules.py:24 lilylib.py:131 warn.cc:223 #, c-format, python-format msgid "warning: %s" msgstr "advertencia: %s" -#: convertrules.py:49 convertrules.py:99 +#: convertrules.py:49 convertrules.py:94 msgid "\\header { key = concat + with + operator }" msgstr "\\header { clave = concatenar + con + este + operador}" -#: convertrules.py:58 +#: convertrules.py:56 #, python-format msgid "deprecated %s" msgstr "%s en desuso" -#: convertrules.py:70 +#: convertrules.py:65 msgid "deprecated \\textstyle, new \\key syntax" msgstr "\\textstyle en desuso, sintaxis nueva para \\key" -#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084 -#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862 +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 msgid "bump version for release" msgstr "actualizar la versión para el lanzamiento" -#: convertrules.py:103 +#: convertrules.py:97 msgid "new \\header format" msgstr "formato nuevo de \\header" -#: convertrules.py:132 +#: convertrules.py:124 msgid "\\translator syntax" msgstr "sintaxis de \\translator" -#: convertrules.py:184 +#: convertrules.py:175 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" msgstr "\\repeat NÚMERO Alternativa de Música -> \\repeat FOLDSTR Alternativa de Música" -#: convertrules.py:216 convertrules.py:699 convertrules.py:1383 -#: convertrules.py:2378 +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 #, python-format msgid "deprecate %s" msgstr "%s en desuso" -#: convertrules.py:290 +#: convertrules.py:279 #, python-format msgid "deprecate %s " msgstr "%s en desuso " -#: convertrules.py:319 +#: convertrules.py:305 msgid "new \\notenames format" msgstr "formato nuevo de \\notenames" -#: convertrules.py:337 +#: convertrules.py:321 msgid "new tremolo format" msgstr "formato nuevo de tremolo" -#: convertrules.py:342 +#: convertrules.py:325 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" msgstr "Staff_margin_engraver en desuso, utilice Instrument_name_engraver" -#: convertrules.py:395 -msgid "change property definiton case (eg. onevoice -> oneVoice)" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" msgstr "cambiar las mayúsculas de la definición de propiedad (p.ej. onevoice -> oneVoice)" -#: convertrules.py:457 +#: convertrules.py:437 msgid "new \\textscript markup text" msgstr "nuevo texto de marcado \\textscript" -#: convertrules.py:530 +#: convertrules.py:509 #, python-format msgid "identifier names: %s" msgstr "nombres de identificador: %s" -#: convertrules.py:569 +#: convertrules.py:548 msgid "point-and-click argument changed to procedure." msgstr "argumento de apuntar-y-pulsar cambiado a procedimiento." -#: convertrules.py:611 +#: convertrules.py:590 msgid "semicolons removed" msgstr "retirado el punto y coma" #. 40 ? -#: convertrules.py:654 +#: convertrules.py:633 #, python-format msgid "%s property names" msgstr "nombres de propiedad %s" -#: convertrules.py:724 +#: convertrules.py:703 msgid "automaticMelismata turned on by default" msgstr "automaticMelismata activado por omisión" -#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942 -#: convertrules.py:2189 +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "automaticMelismata activado por omisión desde 1.5.67." + +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format msgid "remove %s" msgstr "suprimir %s" -#: convertrules.py:1001 convertrules.py:1005 +#: convertrules.py:977 convertrules.py:980 msgid "cluster syntax" msgstr "sintaxis de los racimos (clusters)" -#: convertrules.py:1014 +#: convertrules.py:987 msgid "new Pedal style syntax" msgstr "sintaxis nueva de estilo de Pedal" -#: convertrules.py:1273 +#: convertrules.py:1246 msgid "" "New relative mode,\n" "Postfix articulations, new text markup syntax, new chord syntax." @@ -203,28 +241,28 @@ msgstr "" "Nuevo modo relativo,\n" "articulaciones posfijas, sintaxis de marcado de texto nueva, sintaxis de acordes nueva." -#: convertrules.py:1286 +#: convertrules.py:1259 msgid "Remove - before articulation" msgstr "Quitar el guión antes de la articulación" -#: convertrules.py:1324 +#: convertrules.py:1294 #, python-format msgid "%s misspelling" msgstr "fallo de escritura en %s" -#: convertrules.py:1346 +#: convertrules.py:1313 msgid "Swap < > and << >>" msgstr "Intercambiar < > y << >>" -#: convertrules.py:1349 +#: convertrules.py:1316 msgid "attempting automatic \\figures conversion. Check results!" msgstr "intento de conversión automática de \\figures. ¡Compruebe el resultado!" -#: convertrules.py:1400 +#: convertrules.py:1362 msgid "Use Scheme code to construct arbitrary note events." msgstr "Usar código de Scheme para construir eventos arbitrarios de nota." -#: convertrules.py:1407 +#: convertrules.py:1369 msgid "" "use symbolic constants for alterations,\n" "remove \\outputproperty, move ly:verbose into ly:get-option" @@ -232,7 +270,7 @@ msgstr "" "usar constantes simbólicas para las alteraciones,\n" "eliminar \\outputproperty, cambiar ly:verbose por ly:get-option" -#: convertrules.py:1432 +#: convertrules.py:1394 #, python-format msgid "" "\\outputproperty found,\n" @@ -249,7 +287,7 @@ msgstr "" "\n" "como texto de sustitución." -#: convertrules.py:1446 +#: convertrules.py:1406 msgid "" "The alteration field of Scheme pitches was multiplied by 2\n" "to support quarter tone accidentals. You must update the following constructs manually:\n" @@ -263,15 +301,15 @@ msgstr "" "* llamadas a ly:make-pitch y a ly:pitch-alteration\n" "* ajustes de keySignature hechos con \\property\n" -#: convertrules.py:1493 +#: convertrules.py:1449 msgid "removal of automaticMelismata; use melismaBusyProperties instead." msgstr "eliminación de automaticMelismata; utilice en su lugar melismaBusyProperties." -#: convertrules.py:1600 +#: convertrules.py:1556 msgid "\\partcombine syntax change to \\newpartcombine" msgstr "cambio en la sintaxis de \\partcombine a \\newpartcombine" -#: convertrules.py:1628 +#: convertrules.py:1581 msgid "" "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" "Harmonic notes. Thread context removed. Lyrics context removed." @@ -279,11 +317,11 @@ msgstr "" "Cambios en la notación de percusión, eliminación de \\chordmodifiers y \\notenames.\n" "Notas armónicas. Eliminado el contexto Thread. Eliminado el contexto Lyrics." -#: convertrules.py:1632 +#: convertrules.py:1585 msgid "Drums found. Enclose drum notes in \\drummode" msgstr "Se han encontrado percusiones. Encierre las notas de percusión dentro de \\drummode" -#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format msgid "" "\n" @@ -292,32 +330,33 @@ msgstr "" "\n" "se han encontrado %s. ¡Compruebe el archivo a mano!\n" -#: convertrules.py:1643 +#: convertrules.py:1596 msgid "Drum notation" msgstr "Notación de percusión" -#: convertrules.py:1702 +#: convertrules.py:1655 msgid "new syntax for property settings:" msgstr "sintaxis nueva para los ajustes de propiedades:" -#: convertrules.py:1728 +#: convertrules.py:1681 msgid "Property setting syntax in \\translator{ }" msgstr "sintaxis para el establecimiento de propiedades en \\translator{ }" -#: convertrules.py:1767 +#: convertrules.py:1720 msgid "Scheme grob function renaming" msgstr "renombrado de la función de grob de Scheme" -#: convertrules.py:1780 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 #, python-format -msgid "use %s" -msgstr "utilice %s" +msgid "Use %s\n" +msgstr "Utilice %s\n" -#: convertrules.py:1797 +#: convertrules.py:1747 msgid "More Scheme function renaming" msgstr "Más renombrado de funciones de Scheme" -#: convertrules.py:1924 +#: convertrules.py:1871 msgid "" "Page layout has been changed, using paper size and margins.\n" "textheight is no longer used.\n" @@ -325,7 +364,7 @@ msgstr "" "La disposición de la página se ha cambiado, utilizando tamaño de página y márgenes.\n" "textheight ya no se utiliza.\n" -#: convertrules.py:2010 +#: convertrules.py:1957 msgid "" "\\foo -> \\foomode (for chords, notes, etc.)\n" "fold \\new FooContext \\foomode into \\foo." @@ -333,7 +372,7 @@ msgstr "" "\\loquesea -> \\loqueseamode (para acordes, notas, etc.)\n" "plegar \\new LoqueseaContext \\loqueseamode en \\loquesea." -#: convertrules.py:2048 +#: convertrules.py:1995 msgid "" "staff size should be changed at top-level\n" "with\n" @@ -347,40 +386,40 @@ msgstr "" " #(set-global-staff-size )\n" "\n" -#: convertrules.py:2068 +#: convertrules.py:2015 msgid "regularize other identifiers" msgstr "regularizar otros identificadores" -#: convertrules.py:2136 +#: convertrules.py:2083 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" msgstr "\\encoding: recodificación inteligente de latin1 a utf-8. Eliminación de ly:point-and-click" -#: convertrules.py:2149 +#: convertrules.py:2094 msgid "LilyPond source must be UTF-8" msgstr "El código de entrada de LilyPond debe ser UTF-8" -#: convertrules.py:2152 +#: convertrules.py:2097 msgid "Try the texstrings backend" msgstr "Pruebe con el 'backend' texstrings" -#: convertrules.py:2155 +#: convertrules.py:2100 #, python-format msgid "Do something like: %s" msgstr "Haga algo parecido a %s" -#: convertrules.py:2158 +#: convertrules.py:2103 msgid "Or save as UTF-8 in your editor" msgstr "O guarde como UTF-8 en su editor" -#: convertrules.py:2212 +#: convertrules.py:2153 msgid "warn about auto beam settings" msgstr "advertir acerca de los ajustes de barrado automático" -#: convertrules.py:2217 +#: convertrules.py:2157 msgid "auto beam settings" msgstr "ajustes de barrado automático" -#: convertrules.py:2219 +#: convertrules.py:2158 msgid "" "\n" "Auto beam settings must now specify each interesting moment in a measure\n" @@ -391,39 +430,39 @@ msgstr "" "momentos interesantes de un compás explícitamente; 1/4 ya no se multiplica \n" "para que cubra también los momentos 1/2 y 3/4.\n" -#: convertrules.py:2333 +#: convertrules.py:2271 msgid "verticalAlignmentChildCallback has been deprecated" msgstr "verticalAlignmentChildCallback ha caído en desuso" -#: convertrules.py:2337 +#: convertrules.py:2276 msgid "Remove callbacks property, deprecate XY-extent-callback." msgstr "Eliminar la propiedad de «callbacks», despreciar XY-extent-callback." -#: convertrules.py:2358 +#: convertrules.py:2297 msgid "Use grob closures iso. XY-offset-callbacks." msgstr "Utilizar cerraduras de grob en lugar de XY-offset-callbacks." -#: convertrules.py:2420 +#: convertrules.py:2359 msgid "foobar -> foo-bar for \\paper, \\layout" msgstr "fulanomengano -> fulano-mengano para \\paper, \\layout" -#: convertrules.py:2530 +#: convertrules.py:2469 msgid "deprecate \\tempo in \\midi" msgstr "despreciar \\tempo dentro de \\midi" -#: convertrules.py:2583 +#: convertrules.py:2522 msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "despreciar cautionary-style. Utilizar las propiedades AccidentalCautionary" -#: convertrules.py:2596 +#: convertrules.py:2535 msgid "Rename accidental glyphs, use glyph-name-alist." msgstr "Renombrar los glifos de las alteraciones accidentales, usar glyph-name-alist." -#: convertrules.py:2651 -msgid "edge-text settings for TextSpanner." -msgstr "ajustes de edge-text para TextSpanner." +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" +msgstr "ajustes de edge-text para TextSpanner" -#: convertrules.py:2652 +#: convertrules.py:2591 #, python-format msgid "" "Use\n" @@ -434,35 +473,35 @@ msgstr "" "\n" "%s" -#: convertrules.py:2685 +#: convertrules.py:2624 msgid "Use the `alignment-offsets' sub-property of\n" msgstr "Utilice la sub-propiedad «alignment-offsets» de\n" -#: convertrules.py:2686 +#: convertrules.py:2625 msgid "NonMusicalPaperColumn #'line-break-system-details\n" msgstr "NonMusicalPaperColumn #'line-break-system-details\n" -#: convertrules.py:2687 +#: convertrules.py:2626 msgid "to set fixed distances between staves.\n" msgstr "para establecer distancias fijas entre pautas.\n" -#: convertrules.py:2699 +#: convertrules.py:2638 msgid "Use #'style not #'dash-fraction to select solid/dashed lines." msgstr "Usar #'style en lugar de #'dash-fraction para elegir entre líneas continuas e intermitentes." -#: convertrules.py:2705 -msgid "all settings related to dashed lines.\n" -msgstr "todos los ajustes relacionados con líneas intermitentes.\n" +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "todos los ajustes relacionados con líneas intermitentes" -#: convertrules.py:2706 +#: convertrules.py:2645 msgid "Use \\override ... #'style = #'line for solid lines and\n" msgstr "Usar \\override ... #'style = #'line para las líneas continuas y\n" -#: convertrules.py:2707 +#: convertrules.py:2646 msgid "\t\\override ... #'style = #'dashed-line for dashed lines." msgstr "\t\\override ... #'style = #'dashed-line para líneas intermintentes." -#: convertrules.py:2743 +#: convertrules.py:2682 msgid "" "metronomeMarkFormatter uses text markup as second argument,\n" "fret diagram properties moved to fret-diagram-details." @@ -470,11 +509,11 @@ msgstr "" "metronomeMarkFormatter utiliza marcas de texto como segundo argumento,\n" "propiedades de diagramas de trastes trasladadas a fret-diagram-details." -#: convertrules.py:2748 +#: convertrules.py:2688 msgid "metronomeMarkFormatter got an additional text argument.\n" msgstr "metronomeMarkFormatter ha tomado un argumento adicional de texto.\n" -#: convertrules.py:2749 +#: convertrules.py:2689 #, python-format msgid "" "The function assigned to Score.metronomeMarkFunction now uses the signature\n" @@ -483,43 +522,48 @@ msgstr "" "La función asignada a Score.metronomeMarkFunction usa ahora la indicación\n" "%s" -#: convertrules.py:2812 -msgid "\\put-adjacent argument order.\n" -msgstr "orden de argumentos de \\put-adjacent.\n" +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "%s en las propiedades de fret-diagram" + +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" +msgstr "orden de argumentos de \\put-adjacent" -#: convertrules.py:2813 +#: convertrules.py:2752 msgid "Axis and direction now come before markups:\n" msgstr "El eje y la dirección ahora van antes de los marcados:\n" -#: convertrules.py:2814 +#: convertrules.py:2753 msgid "\\put-adjacent axis dir markup markup." msgstr "\\put-adjacent eje dirección marcado marcado." -#: convertrules.py:2845 -msgid "re-definition of InnerStaffGroup.\n" -msgstr "redefinición de InnerStaffGroup.\n" +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" +msgstr "redefinición de InnerStaffGroup" -#: convertrules.py:2851 -msgid "re-definition of InnerChoirStaff.\n" -msgstr "redefinición de InnerChoirStaff.\n" +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" +msgstr "redefinición de InnerChoirStaff" -#: convertrules.py:2861 +#: convertrules.py:2799 msgid "Syntax changes for \\addChordShape and \\chord-shape" msgstr "Cambios sintácticos para \\addChordShape y \\chord-shape" -#: convertrules.py:2866 +#: convertrules.py:2804 msgid "stringTuning must be added to addChordShape call.\n" msgstr "stringTuning se debe añadir a la llamada a addChordShape.\n" -#: convertrules.py:2872 +#: convertrules.py:2809 msgid "stringTuning must be added to chord-shape call.\n" msgstr "stringTuning se debe añadir a la llamada a chord-shape.\n" -#: convertrules.py:2879 +#: convertrules.py:2815 msgid "Remove oldaddlyrics" msgstr "Eliminar oldaddlyrics" -#: convertrules.py:2883 +#: convertrules.py:2819 msgid "" "oldaddlyrics is no longer supported. \n" " Use addlyrics or lyrsicsto instead.\n" @@ -527,7 +571,7 @@ msgstr "" "oldaddlyrics ya no está contemplado. \n" " Utilice en su lugar addlyrics o lyrsicsto.\n" -#: convertrules.py:2889 +#: convertrules.py:2825 msgid "" "keySignature property not reversed any more\n" "MIDI 47: orchestral strings -> orchestral harp" @@ -535,11 +579,11 @@ msgstr "" "la propiedad keySignature ya no se revierte\n" "MIDI 47: orchestral strings -> orchestral harp" -#: convertrules.py:2894 +#: convertrules.py:2830 msgid "The alist for Staff.keySignature is no longer in reversed order.\n" msgstr "La lista-A de Staff.keySignature ya no está en orden inverso.\n" -#: convertrules.py:2900 +#: convertrules.py:2836 msgid "" "\\bar \".\" now produces a thick barline\n" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" @@ -550,17 +594,17 @@ msgstr "" "Los parámetros de discontinuidad para las ligaduras\n" "de expresión y de unión ahora están en dash-definition" -#: convertrules.py:2906 +#: convertrules.py:2842 msgid "\\bar \".\" now produces a thick barline.\n" msgstr "\\bar \".\" ahora produce una línea divisoria gruesa.\n" -#: convertrules.py:2912 +#: convertrules.py:2848 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" msgstr "" "Los parámetros de discontinuidad para las ligaduras\n" "de expresión y de unión ahora están en 'dash-details.\n" -#: convertrules.py:2917 +#: convertrules.py:2853 msgid "" "Autobeaming rules have changed. override-auto-beam-setting and\n" "revert-auto-beam-setting have been eliminated.\n" @@ -587,40 +631,30 @@ msgstr "" "`Piano centered dynamics'\n" "por el nuevo contexto `Dynamics'." -#: convertrules.py:2931 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now overriden with \\overrideBeamSettings.\n" -msgstr "" -"override-auto-beam-setting.\n" -" Los ajustes de barrado automático se sobreescriben ahora con \\overrideBeamSettings.\n" +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" +msgstr " Los ajustes de barrado automático se sobreescriben ahora con \\overrideBeamSettings.\n" -#: convertrules.py:2936 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now reverted with \\revertBeamSettings.\n" -msgstr "" -"override-auto-beam-setting.\n" -" Los ajustes de barrado automático se revierten ahora con \\revertBeamSettings.\n" +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" +msgstr " Los ajustes de barrado automático se revierten ahora con \\revertBeamSettings.\n" -#: convertrules.py:2941 +#: convertrules.py:2878 msgid "" -"beatGrouping. \n" -" beatGrouping with a specified context must now be accomplished with\n" +" beatGrouping with a specified context must now be accomplished with\n" " \\overrideBeamSettings.\n" msgstr "" -"beatGrouping. \n" " beatGrouping con un contexto especificado se hace ahora con\n" " \\overrideBeamSettings.\n" -#: convertrules.py:2947 +#: convertrules.py:2884 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" msgstr "" "alignment-offsets ha cambiado a alignment-distances:\n" " ahora se deben especificar las distancias entre pautas\n" " en lugar del desplazamiento de cada pauta.\n" -#: convertrules.py:2958 +#: convertrules.py:2895 msgid "" "Remove obsolete engravers/translators: Note_swallow_translator,\n" "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" @@ -632,23 +666,23 @@ msgstr "" "Swallow_performer and String_number_engraver.\n" "Nuevas variables de espaciado vertical." -#: convertrules.py:2989 -msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" -msgstr "minimum-Y-extent; el espaciado vertical ya no depende de la dimensión Y-extent de un VerticalAxisGroup.\n" +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" +msgstr "El espaciado vertical ya no depende de la dimensión Y-extent de un VerticalAxisGroup.\n" -#: convertrules.py:2995 +#: convertrules.py:2932 msgid "Unify fetaNumber and fetaDynamic encodings" msgstr "Unificar las codificaciones fetaNumber y fetaDynamic" -#: convertrules.py:3000 +#: convertrules.py:2937 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" -#: convertrules.py:3011 +#: convertrules.py:2948 msgid "\\cresc etc. are now postfix operators" msgstr "\\cresc etc. ahora son operadores posfijos" -#: convertrules.py:3017 +#: convertrules.py:2960 msgid "" "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" @@ -656,27 +690,23 @@ msgstr "" "Eliminar beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings y \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" -#: convertrules.py:3035 -msgid "\\overrideBeamSettings. Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" -msgstr "\\overrideBeamSettings. Use \\set beamExceptions o \\overrideTimeSignatureSettings.\n" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" +msgstr "Use \\set beamExceptions u \\overrideTimeSignatureSettings.\n" -#: convertrules.py:3039 -msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" -msgstr "\\revertBeamSettings. Use \\set beamExceptions o \\revertTimeSignatureSettings.\n" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "Use \\set beamExceptions o \\revertTimeSignatureSettings.\n" -#: convertrules.py:3043 -msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n" -msgstr "beamSettings. Use baseMoment, beatStructure y beamExceptions.\n" +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" +msgstr "Use baseMoment, beatStructure y beamExceptions.\n" -#: convertrules.py:3047 -msgid "beatLength. Use baseMoment and beatStructure.\n" -msgstr "beatLength. Use baseMoment y beatStructure.\n" +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" +msgstr "Use baseMoment y beatStructure.\n" -#: convertrules.py:3051 -msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" -msgstr "setbeatGrouping. Use baseMoment y beatStructure.\n" - -#: convertrules.py:3056 +#: convertrules.py:2999 msgid "" "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" "Deprecate negative dash-period for hidden lines: use #'style = #'none instead." @@ -685,13 +715,11 @@ msgstr "" "Mover el tamaño, grosor y forma gráfica de la lista de argumentos a propiedades.\n" "Se desprecia el período de discontinuidad negativo para líneas ocultas: use #'style = #'none en su lugar." -#: convertrules.py:3061 -msgid "woodwind-diagrams. Move size, thickness, and graphic to properties. Argument should be just the key list.\n" -msgstr "" -"woodwind-diagrams. Mover el tamaño, grosor y forma gráfica de la lista de argumentos a propiedades.\n" -" El único argumento debe ser la lista de claves.\n" +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" +msgstr "Mover el tamaño, grosor y forma gráfica a propiedades. El único argumento debe ser la lista de claves.\n" -#: convertrules.py:3069 +#: convertrules.py:3012 msgid "" "Rename vertical spacing variables.\n" "Add fretboard-table argument to savePredefinedFretboard." @@ -699,23 +727,23 @@ msgstr "" "Renombrado de las variables de espaciado vertical.\n" "Añadir argumento de tabla de diagramas de posiciones a savePredefinedFretboard." -#: convertrules.py:3087 +#: convertrules.py:3030 msgid "Rename vertical spacing grob properties." msgstr "Renombrado de las propiedades de grob del espaciado vertical." -#: convertrules.py:3103 +#: convertrules.py:3046 msgid "Remove \\paper variables head-separation and foot-separation." msgstr "Eliminación de las variables de \\paper head-separation y foot-separation." -#: convertrules.py:3108 +#: convertrules.py:3050 msgid "Adjust settings for top-system-spacing instead.\n" msgstr "Ajuste los valores para top-system-spacing en su lugar.\n" -#: convertrules.py:3113 +#: convertrules.py:3054 msgid "Adjust settings for last-bottom-spacing instead.\n" msgstr "Ajuste los valores para last-bottom-spacing en su lugar.\n" -#: convertrules.py:3119 +#: convertrules.py:3060 msgid "" "Rename space to basic-distance in various spacing alists.\n" "Remove HarmonicParenthesesItem grob." @@ -723,19 +751,19 @@ msgstr "" "Renombrar space a basic-distance en varias listas-A de espaciado.\n" "Eliminar el grob HarmonicParenthesesItem." -#: convertrules.py:3127 +#: convertrules.py:3067 msgid "HarmonicParenthesesItem has been eliminated.\n" msgstr "HarmonicParenthesesItem se ha eliminado.\n" -#: convertrules.py:3128 +#: convertrules.py:3068 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" msgstr "Los paréntesis en los armónicos forman parte del grob TabNoteHead.\n" -#: convertrules.py:3133 +#: convertrules.py:3073 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" msgstr "Eliminar el contexto de overrideTimeSignatureSettings y revertTimeSignatureSettings.\n" -#: convertrules.py:3140 +#: convertrules.py:3080 msgid "" "Change stringTunings from a list of semitones to a list of pitches.\n" "Change tenor and baritone ukulele names in string tunings.\n" @@ -745,220 +773,292 @@ msgstr "" "Cambiar los nombres tenor y baritone en las afinaciones de cuerdas del ukelele.\n" "Generar mensajes para la conversión manual del espaciado vertical si es necesario." -#: convertrules.py:3180 -msgid "Vertical spacing changes might affect user-defined contexts. " +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." msgstr "Los cambios en el espaciado vertical pueden afectar a los contextos definidos por el usuario." -#: convertrules.py:3185 +#: convertrules.py:3129 msgid "Replace bar-size with bar-extent." msgstr "Sustituir bar-size con bar-extent." -#: convertrules.py:3197 +#: convertrules.py:3141 msgid "Woodwind diagrams: Changes to the clarinet diagram." msgstr "Diagramas de viento madera: cambios en el diagrama de clarinete." -#: convertrules.py:3201 -msgid "woodwind-diagrams. Clarinet fingering changed to reflect actual anatomy of instrument.\n" -msgstr "Diagramas de viento madera: se cambia la digitación del clarinete para que refleje la anatomía real del instrumento.\n" +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "Se cambia la digitación del clarinete para que refleje la anatomía real del instrumento.\n" + +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "Manejo de notas al pie no automáticas." + +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "Si está utilizando notas al pie no automáticas, asegúrese de establecer footnote-auto-numbering = ##f en el bloque paper.\n" -#: book_base.py:24 +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "Cambio en propiedad interna de MultiMeasureRest" + +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" +msgstr "Esta propiedad interna se ha sustituido por round-to-longer-rest,round-up-exceptions y usable-duration-logs.\n" + +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "Creación de un grob de Flag y mover ciertas propiedades de Stem a este grob" + +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" +msgstr "consistent-broken-slope se maneja ahora a través del callback «positions».\n" + +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" +msgstr "input/regression/beam-broken-classic.ly muestra cómo se manejan ahora las barras divididas.\n" + +#: convertrules.py:3368 +msgid "beamExceptions controls whole-measure beaming." +msgstr "beamExceptions controla el barrado de compases completos." + +#: book_base.py:26 #, python-format msgid "file not found: %s" msgstr "archivo no encontrado: %s" -#: book_base.py:161 +#: book_base.py:164 msgid "Output function not implemented" msgstr "Función de salida sin implementar" -#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115 -#: input.cc:123 +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "Se establece el nivel de registro a %s" + +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "Nivel de registro «%s» desconocido o no válido" + +#: lilylib.py:128 warn.cc:211 #, c-format, python-format msgid "error: %s" msgstr "error: %s" -#: lilylib.py:124 lilylib.py:175 +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "Procesando «%s.ly»" + +#: lilylib.py:189 lilylib.py:250 #, python-format msgid "Invoking `%s'" msgstr "Invocando «%s»" -#: lilylib.py:126 lilylib.py:177 +#: lilylib.py:191 lilylib.py:252 #, python-format msgid "Running %s..." msgstr "Ejecutando %s..." -#: lilylib.py:253 +#: lilylib.py:328 #, python-format msgid "Usage: %s" msgstr "uso: %s" -#: musicexp.py:216 musicexp.py:221 +#: musicexp.py:224 musicexp.py:229 msgid "Language does not support microtones contained in the piece" msgstr "El lenguaje no contempla los microtonos de la pieza" -#: musicexp.py:483 +#: musicexp.py:491 msgid "Tuplet brackets of curved shape are not correctly implemented" msgstr "Los corchetes curvos de grupo especial no están implementados correctamente" -#: musicexp.py:669 +#: musicexp.py:677 #, python-format msgid "unable to set the music %(music)s for the repeat %(repeat)s" msgstr "no se ha podido establecer el fragmento de música %(music)s para la repetición %(repeat)s" -#: musicexp.py:678 +#: musicexp.py:686 msgid "encountered repeat without body" msgstr "se ha encontrado una repetición sin cuerpo" #. no self.elements! -#: musicexp.py:848 +#: musicexp.py:856 #, python-format msgid "Grace note with no following music: %s" msgstr "Nota de adorno sin música que le siga: %s" -#: musicexp.py:1010 +#: musicexp.py:1018 #, python-format msgid "Invalid octave shift size found: %s. Using no shift." msgstr "Se ha encontrado un tamaño de desplazamiento de octava no válido: %s. No se usará ningún desplazamiento." -#: musicexp.py:1468 +#: musicexp.py:1476 #, python-format msgid "Unable to convert alteration %s to a lilypond expression" msgstr "No se pudo convertir la alteración %s a una expresión de lilypond" #. TODO: Handle pieces without a time signature! -#: musicxml.py:358 +#: musicxml.py:361 msgid "Senza-misura time signatures are not yet supported!" msgstr "¡Los compases senza-misura no están contemplados aún!" -#: musicxml.py:376 +#: musicxml.py:379 msgid "Unable to interpret time signature! Falling back to 4/4." msgstr "¡Ha sido imposible interpretar la indicación de compás! Se va a usar 4/4 como opción de retroceso." -#: musicxml.py:432 +#: musicxml.py:435 #, python-format msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" msgstr "¡Se ha proporcionado una octava de alteración de tonalidad para un número de alteraciones inexistente %s, números disponibles: %s!" -#: musicxml.py:520 +#: musicxml.py:523 #, python-format msgid "Unable to find instrument for ID=%s\n" msgstr "No se ha podido encontrar el instrumento con el ID=%s\n" -#: book_latex.py:156 +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "Ejecutando texi2pdf sobre el archivo %s para detectar los ajustes predeterminados de página.\n" + +#: book_texinfo.py:228 book_latex.py:209 +msgid "Unable to auto-detect default settings:\n" +msgstr "No se pudieron detectar automáticamente los ajustes predeterminados:\n" + +#: book_texinfo.py:240 book_latex.py:221 +#, python-format +msgid "" +"Unable to auto-detect default settings:\n" +"%s" +msgstr "" +"No se pudieron detectar automáticamente los ajustes predeterminados:\n" +"%s" + +#: book_latex.py:170 msgid "cannot find \\begin{document} in LaTeX document" msgstr "no se encuentra \\begin{document} en el documento de LaTeX" -#: musicxml2ly.py:223 +#: book_latex.py:188 +#, python-format +msgid "Running `%s' on file `%s' to detect default page settings.\n" +msgstr "Ejecutando «%s» sobre el archivo «%s» para detectar los ajustes de página predeterminados.\n" + +#: musicxml2ly.py:228 #, python-format msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" msgstr "Se encontró un archivo creado por %s, que contiene información de barrado errónea. Toda la información de barrado del archivo MusicXML se ignorará" -#: musicxml2ly.py:239 musicxml2ly.py:241 +#: musicxml2ly.py:247 musicxml2ly.py:249 #, python-format msgid "Unprocessed PartGroupInfo %s encountered" msgstr "Se ha encontrado el PartGroupInfo sin procesar %s" -#: musicxml2ly.py:494 +#: musicxml2ly.py:500 #, python-format msgid "Encountered note at %s without type and duration (=%s)" msgstr "Se ha encontrado una nota en %s sin typo y duración (=%s)" -#: musicxml2ly.py:514 +#: musicxml2ly.py:520 #, python-format msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" msgstr "Se ha encontrado una duración racional con denominador %s, no se puede convertir a duracion de lilypond" -#: musicxml2ly.py:761 +#: musicxml2ly.py:767 msgid "Unable to extract key signature!" msgstr "¡No se ha podido extraer la armadura de la tonalidad!" -#: musicxml2ly.py:788 +#: musicxml2ly.py:794 #, python-format msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" msgstr "¡Modo %s desconocido, se esperaba «major», «minor» o un modo eclesiástico!" -#: musicxml2ly.py:926 +#: musicxml2ly.py:932 #, python-format msgid "Encountered unprocessed marker %s\n" msgstr "Se ha encontrado el marcador sin procesar %s\n" -#: musicxml2ly.py:1020 +#: musicxml2ly.py:1026 #, python-format msgid "unknown span event %s" msgstr "evento de extensión %s desconocido" -#: musicxml2ly.py:1030 +#: musicxml2ly.py:1036 #, python-format msgid "unknown span type %s for %s" msgstr "tipo de extensión %s deconocido para %s" -#: musicxml2ly.py:1450 +#: musicxml2ly.py:1456 msgid "Unknown metronome mark, ignoring" msgstr "Marca de metrónomo desconocida, se ignora" #. TODO: Implement the other (more complex) way for tempo marks! -#: musicxml2ly.py:1455 +#: musicxml2ly.py:1461 msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." msgstr "Las marcas metronómicas con relaciones complejas ( en MusicXML) no se encuentran implementadas aún." -#: musicxml2ly.py:1657 +#: musicxml2ly.py:1663 #, python-format msgid "Unable to convert chord type %s to lilypond." msgstr "No se pudo convertir el acorde de tipo %s a lilypond." -#: musicxml2ly.py:1806 +#: musicxml2ly.py:1816 #, python-format msgid "drum %s type unknown, please add to instrument_drumtype_dict" msgstr "tipo de percusión %s desconocido, añádalo al diccionario instrument_drumtype_dict" -#: musicxml2ly.py:1810 +#: musicxml2ly.py:1820 msgid "cannot find suitable event" msgstr "no se encuentra un evento adecuado" -#: musicxml2ly.py:1958 +#: musicxml2ly.py:1968 #, python-format msgid "Negative skip %s (from position %s to %s)" msgstr "Desplazamiento negativo %s (desde la posición %s hasta la %s)" -#: musicxml2ly.py:2099 +#: musicxml2ly.py:2109 #, python-format msgid "Negative skip found: from %s to %s, difference is %s" msgstr "Se ha encontrado un desplazamiento negativo: desde %s hasta %s, la diferencia es %s" -#: musicxml2ly.py:2180 +#: musicxml2ly.py:2190 #, python-format msgid "unexpected %s; expected %s or %s or %s" msgstr "%s inesperado; se esperaba %s o %s o %s" -#: musicxml2ly.py:2286 +#: musicxml2ly.py:2296 msgid "Encountered closing slur, but no slur is open" msgstr "Se ha encontrado el cierre de una ligadura de expresión, pero no hay ninguna abierta" -#: musicxml2ly.py:2289 +#: musicxml2ly.py:2299 msgid "Cannot have two simultaneous (closing) slurs" msgstr "No puede haber dos ligaduras de expresión (cerrándose) simultáneas" -#: musicxml2ly.py:2298 +#: musicxml2ly.py:2308 msgid "Cannot have a slur inside another slur" msgstr "No puede haber una ligadura de expresión dentro de otra" -#: musicxml2ly.py:2301 +#: musicxml2ly.py:2311 msgid "Cannot have two simultaneous slurs" msgstr "No puede haber dos ligaduras de expresión simultáneas" -#: musicxml2ly.py:2435 +#: musicxml2ly.py:2445 #, python-format msgid "cannot simultaneously have more than one mode: %s" msgstr "no puede haber más de un modo al mismo tiempo: %s" -#: musicxml2ly.py:2543 +#: musicxml2ly.py:2553 msgid "Converting to LilyPond expressions..." msgstr "Conversión a expresiones de LilyPond..." -#: musicxml2ly.py:2554 +#: musicxml2ly.py:2564 msgid "musicxml2ly [OPTION]... FILE.xml" msgstr "musicxml2ly [OPCIÓN]... ARCHIVO.xml" -#: musicxml2ly.py:2556 +#: musicxml2ly.py:2566 msgid "" "Convert MusicXML from FILE.xml to LilyPond input.\n" "If the given filename is -, musicxml2ly reads from the command line.\n" @@ -966,232 +1066,261 @@ msgstr "" "Convertir MusicXML desde ARCHIVO.xml a entrada de LilyPond.\n" "SI el nombre de archivo aportado es -, musicxml2ly lee de la línea de órdenes.\n" -#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140 -#: convert-ly.py:98 etf2ly.py:1202 main.cc:157 +#: musicxml2ly.py:2572 midi2ly.py:1062 abc2ly.py:1388 lilypond-book.py:140 +#: convert-ly.py:92 etf2ly.py:1204 main.cc:153 msgid "show this help and exit" msgstr "mostrar esta ayuda y salir" -#: musicxml2ly.py:2566 +#: musicxml2ly.py:2576 msgid "" -"Copyright (c) 2005--2011 by\n" +"Copyright (c) 2005--2012 by\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen and\n" " Reinhold Kainhofer \n" msgstr "" -"Copyright (c) 2005--2011 por\n" +"Copyright (c) 2005--2012 por\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen y\n" " Reinhold Kainhofer \n" -#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212 -#: convert-ly.py:94 etf2ly.py:1206 main.cc:168 +#: musicxml2ly.py:2590 midi2ly.py:1095 abc2ly.py:1385 lilypond-book.py:231 +#: convert-ly.py:88 etf2ly.py:1208 main.cc:174 msgid "show version number and exit" msgstr "mostrar el número de versión y salir" -#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169 +#: musicxml2ly.py:2596 midi2ly.py:1090 lilypond-book.py:223 msgid "be verbose" msgstr "ser prolijo" -#: musicxml2ly.py:2591 +#: musicxml2ly.py:2602 msgid "use lxml.etree; uses less memory and cpu time" msgstr "usar lxml.etree; utiliza menos memoria y tiempo de procesador" -#: musicxml2ly.py:2597 +#: musicxml2ly.py:2608 msgid "input file is a zip-compressed MusicXML file" msgstr "el archivo de entrada es un archivo MusicXML comprimido en zip" -#: musicxml2ly.py:2603 +#: musicxml2ly.py:2614 msgid "convert pitches in relative mode (default)" msgstr "convertir las notas al modo relativo (por omisión)" -#: musicxml2ly.py:2608 +#: musicxml2ly.py:2619 msgid "convert pitches in absolute mode" msgstr "convertir las notas al modo absoluto" -#: musicxml2ly.py:2611 +#: musicxml2ly.py:2622 msgid "LANG" msgstr "IDIOMA" -#: musicxml2ly.py:2613 +#: musicxml2ly.py:2624 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" msgstr "usar IDIOMA para los nombres de las notas, p.ej. 'espanol' para los nombres de las notas en español" -#: musicxml2ly.py:2619 +#: musicxml2ly.py:2627 lilypond-book.py:179 convert-ly.py:105 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" +msgstr "Imprimir los mensajes de registro según NIVEL_DE_REGISTRO (NONE (ninguno), ERROR (error), WARNING (advertencias), PROGRESS (avance; predeterminado), DEBUG (depuración))" + +#: musicxml2ly.py:2629 lilypond-book.py:163 lilypond-book.py:181 +#: convert-ly.py:107 main.cc:167 +msgid "LOGLEVEL" +msgstr "NIVEL_DE_REGISTRO" + +#: musicxml2ly.py:2638 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." msgstr "no convertir las direcciones (^, _ o -) para las articulaciones, expresiones de dinámica, etc." -#: musicxml2ly.py:2625 +#: musicxml2ly.py:2644 msgid "do not convert exact vertical positions of rests" msgstr "no convertir las posiciones verticales exactas de los silencios" -#: musicxml2ly.py:2631 +#: musicxml2ly.py:2650 msgid "do not convert the exact page layout and breaks" msgstr "no convertir la disposición y saltos de página exactos" -#: musicxml2ly.py:2637 +#: musicxml2ly.py:2656 msgid "do not convert beaming information, use lilypond's automatic beaming instead" msgstr "no convertir la información de barrado, en vez de ello utilizar el barrado automático de lilypond" -#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208 -#: main.cc:161 main.cc:166 +#: musicxml2ly.py:2659 midi2ly.py:1067 midi2ly.py:1072 etf2ly.py:1210 +#: main.cc:159 main.cc:171 msgid "FILE" msgstr "ARCHIVO" -#: musicxml2ly.py:2645 +#: musicxml2ly.py:2664 msgid "set output filename to FILE, stdout if -" msgstr "establecer el nombre del archivo de salida a ARCHIVO, y a la salida estándar si es -" +#: musicxml2ly.py:2670 +msgid "activate midi-block" +msgstr "activar el bloque midi" + #. Translators, please translate this string as #. "Report bugs in English via %s", #. or if there is a LilyPond users list or forum in your language #. "Report bugs in English via %s or in YOUR_LANG via URI" -#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234 -#: convert-ly.py:144 etf2ly.py:1216 main.cc:281 +#: musicxml2ly.py:2674 midi2ly.py:1107 abc2ly.py:1403 lilypond-book.py:258 +#: convert-ly.py:146 etf2ly.py:1218 main.cc:285 #, c-format, python-format msgid "Report bugs via %s" msgstr "" "Informe de los fallos en español a http://lists.gnu.org/mailman/listinfo/lilypond-es\n" "o en inglés a %s" -#: musicxml2ly.py:2728 +#: musicxml2ly.py:2754 #, python-format msgid "unknown part in part-list: %s" msgstr "parte desconocida en la lista part-list: %s" -#: musicxml2ly.py:2790 +#: musicxml2ly.py:2816 msgid "Input is compressed, extracting raw MusicXML data from stdin" msgstr "El archivo de entrada está comprimido, extrayendo los datos de MusicXML en bruto a partir de la entrada estándar" -#: musicxml2ly.py:2793 +#: musicxml2ly.py:2829 #, python-format msgid "Input file %s is compressed, extracting raw MusicXML data" msgstr "El archivo de entrada %s está comprimido, extrayendo los datos de MusicXML en bruto" -#: musicxml2ly.py:2823 +#: musicxml2ly.py:2859 msgid "Reading MusicXML from Standard input ..." msgstr "Leyendo MusicXML desde la entrada estándar..." -#: musicxml2ly.py:2825 +#: musicxml2ly.py:2861 #, python-format msgid "Reading MusicXML from %s ..." msgstr "Leyendo MusicXML desde %s ..." -#: musicxml2ly.py:2858 +#: musicxml2ly.py:2894 #, python-format msgid "Output to `%s'" msgstr "La salida se dirige hacia `%s'" -#: musicxml2ly.py:2925 +#: musicxml2ly.py:2964 #, python-format msgid "Unable to find input file %s" msgstr "No se encuentra el archivo de entrada %s" -#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189 +#: midi2ly.py:81 lilypond-book.py:115 convert-ly.py:75 etf2ly.py:1191 #, python-format msgid "Copyright (c) %s by" msgstr "Copyright (c) %s por" -#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191 +#: midi2ly.py:83 lilypond-book.py:117 convert-ly.py:77 etf2ly.py:1193 msgid "Distributed under terms of the GNU General Public License." msgstr "Distribuido bajo los términos de la Licencia Pública General de GNU." -#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192 +#: midi2ly.py:84 lilypond-book.py:118 convert-ly.py:78 etf2ly.py:1194 msgid "It comes with NO WARRANTY." msgstr "Se distribuye SIN NINGUNA GARANTÍA." -#: midi2ly.py:99 +#: midi2ly.py:90 msgid "warning: " msgstr "advertencia: " -#: midi2ly.py:102 midi2ly.py:1041 +#: midi2ly.py:93 midi2ly.py:1124 msgid "error: " msgstr "error: " -#: midi2ly.py:103 +#: midi2ly.py:94 msgid "Exiting... " msgstr "Saliendo... " -#: midi2ly.py:960 +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" +msgstr "se han encontrado más de 5 voces en una sola pauta, es de esperar un resultado defectuoso" + +#: midi2ly.py:1032 #, python-format msgid "%s output to `%s'..." msgstr "salida de %s hacia «%s»..." -#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87 +#: midi2ly.py:1044 abc2ly.py:1376 lilypond-book.py:122 convert-ly.py:81 #, python-format msgid "%s [OPTION]... FILE" msgstr "%s [OPCIÓN]... ARCHIVO" -#: midi2ly.py:973 +#: midi2ly.py:1045 #, python-format msgid "Convert %s to LilyPond input.\n" msgstr "Convertir %s a entrada de LilyPond.\n" -#: midi2ly.py:978 +#: midi2ly.py:1050 msgid "print absolute pitches" msgstr "mostrar las alturas absolutas" -#: midi2ly.py:980 midi2ly.py:1002 +#: midi2ly.py:1052 midi2ly.py:1080 msgid "DUR" msgstr "DURACIÓN" -#: midi2ly.py:981 +#: midi2ly.py:1053 msgid "quantise note durations on DUR" msgstr "cuantizar las duraciones de las notas sobre DURACIÓN" -#: midi2ly.py:984 +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "impresión de depuración" + +#: midi2ly.py:1059 msgid "print explicit durations" msgstr "mostrar las duraciones explícitas" -#: midi2ly.py:989 +#: midi2ly.py:1064 msgid "prepend FILE to output" msgstr "anteponer AARCHIVO a la salida" -#: midi2ly.py:993 +#: midi2ly.py:1068 msgid "set key: ALT=+sharps|-flats; MINOR=1" msgstr "establecer la tonalidad: ALT=+sostenidos|-bemoles; MENOR=1" -#: midi2ly.py:994 +#: midi2ly.py:1069 msgid "ALT[:MINOR]" msgstr "ALT[:MENOR]" -#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207 +#: midi2ly.py:1071 abc2ly.py:1391 etf2ly.py:1209 msgid "write output to FILE" msgstr "escribir la salida en el ARCHIVO" -#: midi2ly.py:999 +#: midi2ly.py:1074 msgid "preview of first 4 bars" msgstr "vista previa de los cuatro primeros compases" -#: midi2ly.py:1001 +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" +msgstr "suprimir los mensajes de avance y las advertencias sobre exceso de voces" + +#: midi2ly.py:1079 msgid "quantise note starts on DUR" msgstr "cuantizar los comienzos de las notras sobre DURACIÓN" -#: midi2ly.py:1004 +#: midi2ly.py:1083 +msgid "use s instead of r for rests" +msgstr "use s en lugar de r para silencios" + +#: midi2ly.py:1085 msgid "DUR*NUM/DEN" msgstr "DURACIÓN*NUMERADOR/DENOMINADOR" -#: midi2ly.py:1007 +#: midi2ly.py:1088 msgid "allow tuplet durations DUR*NUM/DEN" msgstr "permitir duraciones de grupos irregulares DURACIÓN*NUMERADOR/DENOMINADOR" -#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210 -#: main.cc:170 +#: midi2ly.py:1096 lilypond-book.py:234 convert-ly.py:141 etf2ly.py:1212 +#: main.cc:176 msgid "show warranty and copyright" msgstr "mostrar los avisos de garantía y de copyright" -#: midi2ly.py:1019 +#: midi2ly.py:1098 msgid "treat every text as a lyric" msgstr "tratar todos los textos como letra" -#: midi2ly.py:1022 +#: midi2ly.py:1101 msgid "Examples" msgstr "Ejemplos" -#: midi2ly.py:1042 +#: midi2ly.py:1125 msgid "no files specified on command line." msgstr "no se ha especificado ningún archivo en la línea de órdenes." -#: abc2ly.py:1374 +#: abc2ly.py:1377 #, python-format msgid "" "abc2ly converts ABC music files (see\n" @@ -1200,19 +1329,23 @@ msgstr "" "abc2ly convierte archivos de música de ABC\n" "(véase %s) en código de entrada de LilyPond.\n" -#: abc2ly.py:1390 +#: abc2ly.py:1394 msgid "be strict about success" msgstr "ser estricto respecto al éxito" -#: abc2ly.py:1392 +#: abc2ly.py:1397 msgid "preserve ABC's notion of beams" msgstr "preservar la noción de las barras de ABC" +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "suprimir mensajes de avance" + #: lilypond-book.py:80 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." msgstr "Procesar los fragmentos de LylyPond en un documento de HTML híbrido, LaTeX, texinfo o DocBook." -#: lilypond-book.py:82 convert-ly.py:46 +#: lilypond-book.py:82 convert-ly.py:48 msgid "Examples:" msgstr "Ejemplos:" @@ -1245,8 +1378,8 @@ msgstr "FORMATO" msgid "add DIR to include path" msgstr "añadir DIRECTORIO a la ruta de inclusión" -#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163 -#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160 +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 msgid "DIR" msgstr "DIRECTORIO" @@ -1263,46 +1396,54 @@ msgid "pad left side of music to align music inspite of uneven bar numbers (in m msgstr "rellenar el lado izquierdo de la música para alinear la música aunque haya un número desigual de compases (en mm)" #: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" +msgstr "Imprimir los mensajes de registro de lilypond según NIVEL_DE_REGISTRO" + +#: lilypond-book.py:168 msgid "write lily-XXX files to DIR, link into --output dir" msgstr "escribir archivos lily-XXX en DIR, enlazar al directorio de --output" -#: lilypond-book.py:167 +#: lilypond-book.py:173 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" msgstr "Cargar el PAQUETE adicional de python (que contiene p.ej. un formato de salida personalizado)" -#: lilypond-book.py:168 +#: lilypond-book.py:174 msgid "PACKAGE" msgstr "PAQUETE" -#: lilypond-book.py:172 +#: lilypond-book.py:186 msgid "write output to DIR" msgstr "escribir la salida en el DIRECTORIO" -#: lilypond-book.py:177 +#: lilypond-book.py:191 msgid "COMMAND" msgstr "INSTRUCCIÓN" -#: lilypond-book.py:178 +#: lilypond-book.py:192 msgid "process ly_files using COMMAND FILE..." msgstr "procesar ly_files utilizando INSTRUCCIÓN ARCHIVO..." -#: lilypond-book.py:182 +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "Redirigir la salida de lilypond" + +#: lilypond-book.py:201 msgid "Compile snippets in safe mode" msgstr "Compilar los fragmentos de código en modo seguro" -#: lilypond-book.py:188 +#: lilypond-book.py:207 msgid "do not fail if no lilypond output is found" msgstr "no fracasar si no se encuentra ninguna salida de lilypond" -#: lilypond-book.py:194 +#: lilypond-book.py:213 msgid "do not fail if no PNG images are found for EPS files" msgstr "no fracasar si no se encuentra ninguna imagen PNG para los archivos EPS" -#: lilypond-book.py:200 +#: lilypond-book.py:219 msgid "write snippet output files with the same base name as their source file" msgstr "escribir los archivos de salida de los fragmentos de código con el mismo nombra de base que su archivo fuente" -#: lilypond-book.py:220 +#: lilypond-book.py:239 msgid "" "run executable PROG instead of latex, or in\n" "case --pdf option is set instead of pdflatex" @@ -1310,70 +1451,92 @@ msgstr "" "ejecutar PROG en lugar de latex, o en caso de que\n" "esté seleccionada la opción --pdf, en lugar de pdflatex" -#: lilypond-book.py:222 +#: lilypond-book.py:241 lilypond-book.py:246 msgid "PROG" msgstr "PROGRAMA" -#: lilypond-book.py:228 +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "ejecutar PROG en lugar de texi2pdf" + +#: lilypond-book.py:252 msgid "create PDF files for use with PDFTeX" msgstr "crear archivos PDF para su utilización con PDFTeX" -#: lilypond-book.py:419 +#: lilypond-book.py:455 msgid "Writing snippets..." msgstr "Escribiendo fragmentos..." -#: lilypond-book.py:425 +#: lilypond-book.py:460 msgid "Processing..." msgstr "Procesando..." -#: lilypond-book.py:431 +#: lilypond-book.py:465 msgid "All snippets are up to date..." msgstr "Todos los fragmentos están actualizados..." -#: lilypond-book.py:452 +#: lilypond-book.py:467 +msgid "Linking files..." +msgstr "Enlazando los archivos..." + +#: lilypond-book.py:487 #, python-format msgid "cannot determine format for: %s" msgstr "no se puede determinar el formato de: %s" -#: lilypond-book.py:461 +#: lilypond-book.py:496 #, python-format msgid "%s is up to date." msgstr "%s está actualizado." -#: lilypond-book.py:475 +#: lilypond-book.py:509 #, python-format msgid "Writing `%s'..." msgstr "Escribiendo «%s»..." -#: lilypond-book.py:537 +#: lilypond-book.py:570 msgid "Output would overwrite input file; use --output." msgstr "La salida sobreescribiría el archivo de entrada; utilice --output." -#: lilypond-book.py:541 +#: lilypond-book.py:574 #, python-format msgid "Reading %s..." msgstr "Leyendo %s..." -#: lilypond-book.py:549 +#: lilypond-book.py:581 msgid "Dissecting..." msgstr "Diseccionando..." -#: lilypond-book.py:561 +#: lilypond-book.py:592 #, python-format msgid "Compiling %s..." msgstr "Compilando %s..." -#: lilypond-book.py:570 +#: lilypond-book.py:600 #, python-format msgid "Processing include: %s" msgstr "Procesando el archivo de inclusión: %s" -#: lilypond-book.py:582 +#: lilypond-book.py:611 #, python-format msgid "Removing `%s'" msgstr "Suprimiendo «%s»" -#: convert-ly.py:44 +#: lilypond-book.py:704 +#, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "Se establece el nivel de registro de LilyPond a %s" + +#: lilypond-book.py:708 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" +msgstr "Se establece el nivel de registro de LilyPond a %s (a partir de la variable de entorno LILYPOND_LOGLEVEL)" + +#: lilypond-book.py:711 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" +msgstr "Se establece la salida de LilyPond a --verbose (prolija), implícita por el ajuste de lilypond-book" + +#: convert-ly.py:46 msgid "" "Update LilyPond input to newer version. By default, update from the\n" "version taken from the \\version command, to the current LilyPond version." @@ -1382,69 +1545,69 @@ msgstr "" "De manera predeterminada, actualizarlo desde la versión sacada de\n" "la instrucción \\version, a la versión actual de LilyPond." -#: convert-ly.py:102 convert-ly.py:135 +#: convert-ly.py:96 convert-ly.py:137 msgid "VERSION" msgstr "VERSIÓN" -#: convert-ly.py:104 +#: convert-ly.py:98 msgid "start from VERSION [default: \\version found in file]" msgstr "comenzar a partir de VERSIÓN [predeterminado: \\version del archivo]" -#: convert-ly.py:107 +#: convert-ly.py:101 msgid "edit in place" msgstr "editar in situ" -#: convert-ly.py:111 +#: convert-ly.py:113 msgid "do not add \\version command if missing" msgstr "no añadir la instrucción \\version si no está presente" -#: convert-ly.py:117 +#: convert-ly.py:119 #, python-format msgid "force updating \\version number to %s" msgstr "forzar la actualización del número de \\version a %s" -#: convert-ly.py:123 +#: convert-ly.py:125 msgid "only update \\version number if file is modified" msgstr "actualizar solo el número de \\version si el archivo ha sido modificado" -#: convert-ly.py:129 +#: convert-ly.py:131 #, python-format msgid "show rules [default: -f 0, -t %s]" msgstr "mostrar las reglas [predeterminado: -f 0, -t %s]" -#: convert-ly.py:134 +#: convert-ly.py:136 #, python-format msgid "convert to VERSION [default: %s]" msgstr "convertir a VERSIÓN [predeterminado: %s]" -#: convert-ly.py:184 +#: convert-ly.py:186 msgid "Applying conversion: " msgstr "Aplicando la conversión: " -#: convert-ly.py:197 +#: convert-ly.py:202 msgid "Error while converting" msgstr "Error al convertir" -#: convert-ly.py:199 +#: convert-ly.py:204 msgid "Stopping at last successful rule" msgstr "Detención en la última regla satisfactoria" -#: convert-ly.py:224 +#: convert-ly.py:231 #, python-format msgid "Processing `%s'... " msgstr "Procesando «%s»... " -#: convert-ly.py:332 +#: convert-ly.py:338 #, python-format msgid "%s: Unable to open file" msgstr "%s: No se pudo abrir el archivo" -#: convert-ly.py:339 +#: convert-ly.py:345 #, python-format msgid "%s: Unable to determine version. Skipping" msgstr "%s: no se puede determinar la versión. Se salta" -#: convert-ly.py:344 +#: convert-ly.py:350 #, python-format msgid "" "%s: Invalid version string `%s' \n" @@ -1453,12 +1616,12 @@ msgstr "" "%s: Cadena de versión no válida `%s' \n" "Las cadenas de versión válidas se componen de tres números separados por puntos, p.ej. `2.8.12'" -#: etf2ly.py:1195 +#: etf2ly.py:1197 #, python-format msgid "%s [OPTION]... ETF-FILE" msgstr "%s [OPCIÓN]... ARCHIVO_ETF" -#: etf2ly.py:1196 +#: etf2ly.py:1198 msgid "" "Enigma Transport Format is a format used by Coda Music Technology's\n" "Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" @@ -1475,20 +1638,56 @@ msgstr "Inglés" msgid "Other languages" msgstr "Otros idiomas" -#: warn.cc:59 +#: website_post.py:127 +#, python-format +msgid "About automatic language selection." +msgstr "Acerca de la selección automática del idioma." + +#: warn.cc:56 +#, c-format +msgid "Log level set to %d\n" +msgstr "Nivel de registro establecido a %d\n" + +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" +msgstr "nivel de registro desconocido «%s», se usa el valor por omisión (INFO)" + +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 #, c-format -msgid "success: %s" -msgstr "finalizado correctamente: %s" +msgid "%d expected warning(s) not encountered: " +msgstr "se esperaban %d advertencias pero no se encontraron: " -#: warn.cc:86 grob.cc:617 input.cc:97 +#: warn.cc:183 +#, c-format +msgid "fatal error: %s" +msgstr "error fatal: %s" + +#: warn.cc:192 +#, c-format +msgid "suppressed programming error: %s" +msgstr "error de programación suprimido: %s" + +#: warn.cc:197 #, c-format msgid "programming error: %s" msgstr "error de programación: %s" -#: warn.cc:87 input.cc:98 +#: warn.cc:198 msgid "continuing, cross fingers" msgstr "continuamos; cruce los dedos" +#: warn.cc:207 +#, c-format +msgid "suppressed error: %s" +msgstr "error suprimido: %s" + +#: warn.cc:219 +#, c-format +msgid "suppressed warning: %s" +msgstr "advertencia suprimida: %s" + #: getopt-long.cc:153 #, c-format msgid "option `%s' requires an argument" @@ -1509,42 +1708,49 @@ msgstr "opción no reconocida: «%s»" msgid "invalid argument `%s' to option `%s'" msgstr "argumento no válido «%s» para la opción «%s»" -#: grob.cc:286 -msgid "Infinity or NaN encountered" -msgstr "se ha encontrado Infinito o NaN" +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "posición desconocida" -#: vaticana-ligature.cc:95 -msgid "flexa-height undefined; assuming 0" -msgstr "la altura flexa-height no está definida; se supone que es 0" +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" +msgstr "No hay ningún tremolo hasta el final" -#: vaticana-ligature.cc:100 -msgid "ascending vaticana style flexa" -msgstr "flexa ascendente de estilo vaticana" +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "trémolo de acorde sin terminar" -#: vaticana-ligature.cc:188 -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" -msgstr "Vaticana_ligature: unión nula (delta_pitch == 0)" +#: chord-tremolo-engraver.cc:149 beam-engraver.cc:266 +msgid "stem must have Rhythmic structure" +msgstr "la plica debe tener estructura rítmica" -#: parse-scm.cc:101 -msgid "GUILE signaled an error for the expression beginning here" -msgstr "GUILE ha señalado un error para la expresión que comienza aquí" +#: flag.cc:113 +#, c-format +msgid "flag `%s' not found" +msgstr "no se encuentra el indicador «%s»" -#: rest-collision-engraver.cc:70 -msgid "rhythmic head is not part of a rhythmic column" -msgstr "la cabeza rítmica no es parte de una columna rítmica" +#: flag.cc:133 +#, c-format +msgid "flag stroke `%s' not found" +msgstr "no se encuentra la forma del glifo del corchete «%s»" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:189 constrained-breaking.cc:207 -msgid "cannot find line breaking that satisfies constraints" -msgstr "no se ecnuentra un salto de línea que cumpla las restricciones" +#: vaticana-ligature.cc:94 +msgid "flexa-height undefined; assuming 0" +msgstr "la altura flexa-height no está definida; se supone que es 0" -#: horizontal-bracket-engraver.cc:78 -msgid "do not have that many brackets" -msgstr "no tiene tantos corchetes" +#: vaticana-ligature.cc:99 +msgid "ascending vaticana style flexa" +msgstr "flexa ascendente de estilo vaticana" -#: horizontal-bracket-engraver.cc:87 -msgid "conflicting note group events" -msgstr "eventos de grupo de notas en conflicto" +#: slur.cc:430 +#, c-format +msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgstr "Se ignora el objeto gráfico para la ligadura: %s. ¿No está establecido avoid-slur?" + +#: translator-group.cc:188 +#, c-format +msgid "cannot find: `%s'" +msgstr "no se encuentra «%s»" #: hyphen-engraver.cc:104 msgid "removing unterminated hyphen" @@ -1554,71 +1760,44 @@ msgstr "se suprime el guión separador sin terminación" msgid "unterminated hyphen; removing" msgstr "guión separador sin terminar; se suprime" -#: pango-font.cc:187 open-type-font.cc:319 -#, c-format -msgid "FT_Get_Glyph_Name () error: %s" -msgstr "error en FT_Get_Glyph_Name (): %s" +#: page-layout-problem.cc:403 +msgid "A page layout problem has been initiated that cannot accommodate footnotes." +msgstr "Ha tenido lugar problema de disposición de página que no puede acomodar notas al pie." -#: pango-font.cc:204 -#, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" -msgstr "" -"El glifo no tiene nombre, pero la tipografía soporta nombres de glifo.\n" -"Se salta el glifo U+%0X, archivo %s" +#: page-layout-problem.cc:721 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" +msgstr "la música no cabe en la página: se ha solicitado la no justificación del espaciado, pero la página ha resultado comprimida" -#: pango-font.cc:241 +#: page-layout-problem.cc:724 #, c-format -msgid "no PostScript font name for font `%s'" -msgstr "no hay un nombre de tipografía PostScript para «%s»" +msgid "cannot fit music on page: overflow is %f" +msgstr "la música no cabe en la página: el exceso es %f" -#: pango-font.cc:290 -msgid "FreeType face has no PostScript font name" -msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript" +#: page-layout-problem.cc:726 +msgid "compressing music to fit" +msgstr "comprimiendo la música para que quepa" -#: midi-item.cc:92 -#, c-format -msgid "no such MIDI instrument: `%s'" -msgstr "no existe este instrumento MIDI: «%s»" +#: page-layout-problem.cc:1188 +msgid "staff-affinities should only decrease" +msgstr "staff-affinities solo debe disminuir" -#: note-heads-engraver.cc:76 -msgid "NoteEvent without pitch" -msgstr "NoteEvent sin altura" +#: arpeggio.cc:115 +msgid "no heads for arpeggio found?" +msgstr "¿No se han encontrado notas para el arpegio?" -#: rest.cc:159 -#, c-format -msgid "rest `%s' not found" -msgstr "no se ha encontrado el silencio «%s»" +#: lyric-combine-music-iterator.cc:199 +msgid "argument of \\lyricsto should contain Lyrics context" +msgstr "El argumento de \\lyricsto debe contener un contexto Lyrics" -#: spaceable-grob.cc:94 +#: lyric-combine-music-iterator.cc:337 #, c-format -msgid "No spring between column %d and next one" -msgstr "No hay separación entre la columna %d y la siguiente" - -#: beam-engraver.cc:147 -msgid "already have a beam" -msgstr "ya tiene una barra" - -#: beam-engraver.cc:230 -msgid "unterminated beam" -msgstr "barra sin terminar" - -#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150 -msgid "stem must have Rhythmic structure" -msgstr "la plica debe tener estructura rítmica" - -#: beam-engraver.cc:274 -msgid "stem does not fit in beam" -msgstr "la plica no cabe dentro de la barra" - -#: beam-engraver.cc:275 -msgid "beam was started here" -msgstr "la barra comenzó aquí" +msgid "cannot find Voice `%s'" +msgstr "no se encuentra la Voz «%s»" -#: music-iterator.cc:182 -msgid "Sending non-event to context" -msgstr "Enviando elemento que no es un evento a un contexto" +#: custos.cc:87 +#, c-format +msgid "custos `%s' not found" +msgstr "no se encuentran los custos «%s»" #: context.cc:149 #, c-format @@ -1630,75 +1809,81 @@ msgstr "no se encuentra o no se puede crear un «%s» nuevo" msgid "cannot find or create `%s' called `%s'" msgstr "no se encuentra o no se puede crear «%s» llamado «%s»" -#: context.cc:269 -#, c-format -msgid "Invalid CreateContext event: Cannot create %s context" -msgstr "evento CreateContext inválido: No se puede crear el contexto %s" - #: context.cc:400 #, c-format msgid "cannot find or create: `%s'" msgstr "no se encuentra o no se puede crear «%s»" -#: dispatcher.cc:82 -msgid "Event class should be a symbol" -msgstr "La clase del evento debe ser un símbolo" +#: dispatcher.cc:83 +msgid "Event class should be a list" +msgstr "La clase del evento debe ser una lista" -#: dispatcher.cc:89 +#: dispatcher.cc:166 #, c-format -msgid "Unknown event class %s" -msgstr "Clase de evento %s desconocida" +msgid "Junking event: %s" +msgstr "se elimina el evento: %s" -#: paper-column-engraver.cc:245 -msgid "forced break was overridden by some other event, should you be using bar checks?" -msgstr "el salto forzado ha sido sobreestablecido por algún otro evento, ¿quizá deba usar comprobaciones de compás?" +#: dispatcher.cc:262 +msgid "Attempting to remove nonexisting listener." +msgstr "Tratando de eliminar un \"listener\" que no existe." + +#: dispatcher.cc:284 +msgid "Already listening to dispatcher, ignoring request" +msgstr "Ya se está escuchando al despachador, se ignora la solicitud" + +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" +msgstr "%d: %s" + +#: auto-change-iterator.cc:74 change-iterator.cc:72 +#, c-format +msgid "cannot change, already in translator: %s" +msgstr "no se puede cambiar, ya está dentro del traductor: %s" -#: tie-engraver.cc:116 +#: tie-engraver.cc:117 msgid "unterminated tie" msgstr "ligadura de unión sin terminar" -#: tie-engraver.cc:312 +#: tie-engraver.cc:348 msgid "lonely tie" msgstr "ligadura de unión solitaria" -#: dynamic-engraver.cc:197 -msgid "cannot find start of (de)crescendo" -msgstr "no se encuentra el comienzo del (de)crescendo" - -#: dynamic-engraver.cc:206 -msgid "already have a decrescendo" -msgstr "ya tiene un decrescendo" - -#: dynamic-engraver.cc:208 -msgid "already have a crescendo" -msgstr "ya tiene un crescendo" +#: note-column.cc:147 +msgid "cannot have note heads and rests together on a stem" +msgstr "no se pueden tener cabezas de nota y silencios en la misma plica" -#: dynamic-engraver.cc:211 -msgid "cresc starts here" -msgstr "el cresc comenzó aquí" +#: parse-scm.cc:121 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "GUILE ha señalado un error para la expresión que comienza aquí" -#: dynamic-engraver.cc:339 -msgid "unterminated (de)crescendo" -msgstr "(de)crescendo sin terminar" +#: footnote-engraver.cc:109 +msgid "Must be footnote-event." +msgstr "Debe ser un evento de nota al pie." #: paper-score.cc:122 minimal-page-breaking.cc:40 msgid "Calculating line breaks..." msgstr "Calculando los saltos de línea..." -#: paper-score.cc:135 +#: paper-score.cc:134 #, c-format msgid "Element count %d (spanners %d) " msgstr "Cantidad de elementos: %d (trazadores: %d)" -#: paper-score.cc:139 +#: paper-score.cc:138 msgid "Preprocessing graphical objects..." msgstr "Preprocesando los objetos gráficos..." -#: paper-score.cc:163 optimal-page-breaking.cc:208 +#: paper-score.cc:162 optimal-page-breaking.cc:207 #: page-turn-page-breaking.cc:248 msgid "Drawing systems..." msgstr "Dibujando los sistemas..." +#: program-option-scheme.cc:235 +#, c-format +msgid "no such internal option: %s" +msgstr "no existe la opción interna %s" + #: mensural-ligature-engraver.cc:96 msgid "ligature with less than 2 heads -> skipping" msgstr "ligadura con menos de dos cabezas; se salta" @@ -1743,48 +1928,50 @@ msgstr "" "la penúltima nota debe ser otra breve,\n" "o la ligadura debe ser LB o SSB" -#: mensural-ligature-engraver.cc:386 +#: mensural-ligature-engraver.cc:387 msgid "unexpected case fall-through" msgstr "opción de caso por defecto inesperada" -#: piano-pedal-engraver.cc:298 +#: piano-pedal-engraver.cc:279 #, c-format msgid "expect 3 strings for piano pedals, found: %ld" msgstr "se eseperaban 3 cadenas para los pedales de piano, se han encontrado: %ld" -#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324 +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 #: piano-pedal-performer.cc:104 #, c-format msgid "cannot find start of piano pedal: `%s'" msgstr "no se encuentra el comienzo del pedal de piano «%s»" -#: piano-pedal-engraver.cc:359 +#: piano-pedal-engraver.cc:340 #, c-format msgid "cannot find start of piano pedal bracket: `%s'" msgstr "no se encuentra el comienzo del corchete de pedal de piano «%s»" -#: input.cc:131 source-file.cc:179 source-file.cc:194 -msgid "position unknown" -msgstr "posición desconocida" - -#: paper-outputter-scheme.cc:41 +#: new-dynamic-engraver.cc:168 #, c-format -msgid "Layout output to `%s'..." -msgstr "Salida de la página hacia «%s»..." +msgid "" +"unknown crescendo style: %s\n" +"defaulting to hairpin." +msgstr "" +"estilo de crescendo desconocido: %s\n" +"se toma regulador como predeterminado." -#: general-scheme.cc:306 -msgid "infinity or NaN encountered while converting Real number" -msgstr "se ha encontrado infinito o NaN durante la conversión de un número Real" +#: new-dynamic-engraver.cc:233 +#, c-format +msgid "unterminated %s" +msgstr "%s sin terminar" -#: general-scheme.cc:307 -msgid "setting to zero" -msgstr "estableciendo al valor cero" +#: general-scheme.cc:390 +#, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "fallo al redirigir la salida stderr a «%s»" -#: general-scheme.cc:543 -msgid "Found infinity or nan in output. Substituting 0.0" +#: general-scheme.cc:469 output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0" -#: music.cc:151 +#: music.cc:150 #, c-format msgid "octave check failed; expected \"%s\", found: \"%s\"" msgstr "fallo en la comprobación de octava; se esperaba \"%s\", se ha encontrado: \"%s\"" @@ -1798,6 +1985,14 @@ msgstr "(altura normalizada)" msgid "Transposing %s by %s makes alteration larger than double" msgstr "La transposición de %s en %s produce una alteración más que doble" +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" +msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas" + +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " +msgstr "La comprobación de octaba ha fallado, se ha obtenido: " + #: translator-ctors.cc:65 #, c-format msgid "unknown translator: `%s'" @@ -1807,17 +2002,99 @@ msgstr "traductor desconocido: «%s»" msgid "trying to use \\partial after the start of a piece" msgstr "intento de utilizar \\partial después del inicio de la pieza" -#: new-fingering-engraver.cc:106 -msgid "cannot add text scripts to individual note heads" -msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales" +#: relocate.cc:52 +#, c-format +msgid "Setting %s to %s" +msgstr "Se establece %s a %s" -#: new-fingering-engraver.cc:250 -msgid "no placement found for fingerings" -msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones" +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, c-format +msgid "no such file: %s for %s" +msgstr "no existe el archivo: %s para %s" -#: new-fingering-engraver.cc:251 -msgid "placing below" -msgstr "se coloca debajo" +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 +#, c-format +msgid "no such directory: %s for %s" +msgstr "no existe este directorio: %s para %s" + +#: relocate.cc:93 +#, c-format +msgid "%s=%s (prepend)\n" +msgstr "%s=%s (prefijar)\n" + +#: relocate.cc:124 +#, c-format +msgid "not relocating, no %s/ or current/ found under %s" +msgstr "no se relocaliza, no se ha encontrado %s/ ni current/ bajo %s" + +#: relocate.cc:134 +#, c-format +msgid "Relocation: compile datadir=%s, new datadir=%s" +msgstr "Relocalización: en la compilación datadir=%s, el nuevo datadir=%s" + +#: relocate.cc:146 +#, c-format +msgid "Relocation: framework_prefix=%s" +msgstr "Relocalización: framework_prefix=%s" + +#: relocate.cc:186 +#, c-format +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "Relocalización: es absoluto: argv0=%s\n" + +#: relocate.cc:192 +#, c-format +msgid "Relocation: from cwd: argv0=%s\n" +msgstr "Relocalización: desde cwd: argv0=%s\n" + +#: relocate.cc:208 +#, c-format +msgid "" +"Relocation: from PATH=%s\n" +"argv0=%s" +msgstr "" +"Relocalización: desde PATH=%s\n" +"argv0=%s" + +#: relocate.cc:235 +msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" +msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR" + +#: relocate.cc:360 +#, c-format +msgid "Relocation file: %s" +msgstr "Archivo de relocalización: %s" + +#: relocate.cc:364 source-file.cc:65 +#, c-format +msgid "cannot open file: `%s'" +msgstr "no se puede abrir el archivo: «%s»" + +#: relocate.cc:394 +#, c-format +msgid "Unknown relocation command %s" +msgstr "instrucción de relocalización %s desconocida" + +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "prolongación sin terminar" + +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" +msgstr "no se permiten los archivos de inclusión en el modo seguro" + +#: lily-lexer.cc:282 +#, c-format +msgid "identifier name is a keyword: `%s'" +msgstr "el nombre del identificativo es una palabra clave: «%s»" + +#: lily-lexer.cc:303 lily-lexer.cc:316 +#, c-format +msgid "%s:EOF" +msgstr "%s:EOF" #: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 msgid "cannot find start of ligature" @@ -1836,22 +2113,59 @@ msgid "no left bound" msgstr "no hay límite izquierdo" # ligature...? -#: ligature-engraver.cc:185 +#: ligature-engraver.cc:184 msgid "unterminated ligature" msgstr "ligadura sin terminar" -#: ligature-engraver.cc:214 +#: ligature-engraver.cc:211 msgid "ignoring rest: ligature may not contain rest" msgstr "se ignora el silencio: la ligadura no puede contener silencios" -#: ligature-engraver.cc:215 +#: ligature-engraver.cc:212 msgid "ligature was started here" msgstr "la ligadura comenzó aquí" -#: auto-change-iterator.cc:74 change-iterator.cc:72 -#, c-format -msgid "cannot change, already in translator: %s" -msgstr "no se puede cambiar, ya está dentro del traductor: %s" +#: dynamic-engraver.cc:193 +msgid "cannot find start of (de)crescendo" +msgstr "no se encuentra el comienzo del (de)crescendo" + +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "ya tiene un decrescendo" + +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "ya tiene un crescendo" + +#: dynamic-engraver.cc:205 +msgid "cresc starts here" +msgstr "el cresc comenzó aquí" + +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "(de)crescendo sin terminar" + +#. fixme: be more verbose. +#: volta-engraver.cc:111 +msgid "cannot end volta spanner" +msgstr "no se puede terminar el trazador de volta" + +#: volta-engraver.cc:121 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "ya hay un trazador de volta, se acaba éste de forma prematura" + +# also...? +#: volta-engraver.cc:125 +msgid "also already have an ended spanner" +msgstr "ya hay un trazador finalizado" + +#: volta-engraver.cc:126 +msgid "giving up" +msgstr "abandonando" + +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." +msgstr "Calculando saltos de página..." #: accidental-engraver.cc:180 #, c-format @@ -1863,29 +2177,48 @@ msgstr "la lista de tippografiado de alteraciones accidentales debe comenzar con msgid "procedure or context-name expected for accidental rule, found %s" msgstr "se esperaba un procedimiento o un nombre de contexto para la regla de alteración accidental, se ha encontrado %s" -#: ttf.cc:481 ttf.cc:530 +#: ttf.cc:480 ttf.cc:528 #, c-format msgid "font index %d too large for font `%s', using index 0" msgstr "índice de fuente tipográfica %d demasiado grande para la tipografía `%s', se usa el índice 0" -#: ttf.cc:513 ttf.cc:565 +#: ttf.cc:512 ttf.cc:562 msgid "font index must be non-negative, using index 0" msgstr "el índice de la fuente tipográfica debe ser no negativo, se usa el índice 0" -#: break-alignment-interface.cc:206 -#, c-format -msgid "No spacing entry from %s to `%s'" -msgstr "no hay un elemento de espaciado desde %s hasta «%s»" +#: score.cc:172 +msgid "already have music in score" +msgstr "ya tiene música en la partitura" -#: minimal-page-breaking.cc:44 -msgid "Calculating page breaks..." -msgstr "Calculando saltos de página..." +#: score.cc:173 +msgid "this is the previous music" +msgstr "esta es la música precedente" + +#: score.cc:178 +msgid "errors found, ignoring music expression" +msgstr "se han encontrado errores, se ignora la expresión musical" + +#: multi-measure-rest.cc:138 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." +msgstr "usable-duration-logs debe ser una lista no vacía. Se usan por defecto silencios de redonda." + +#: multi-measure-rest.cc:328 +msgid "Using naive multi measure rest spacing." +msgstr "Utilizando espaciado ingenuo de silencios multicompás." #: vaticana-ligature-engraver.cc:400 #, c-format msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" msgstr "prefijo(s) `%s' de esta cabeza ignorado(s) de acuerdo a las restricciones del estilo de ligadura seleccionado" +#: vaticana-ligature-engraver.cc:466 +msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch. The ligature should be split." +msgstr "Uso ambiguo de puntos en la ligadura: hay más de una nota con puntillo a la misma altura. Debería dividirse la ligadura." + +#: vaticana-ligature-engraver.cc:524 +msgid "This ligature has a dotted head followed by a non-dotted head. The ligature should be split after the last dotted head before this head." +msgstr "Esta ligadura tiene una nota con puntillo seguida de una nota sin puntillo. La ligadura debería dividirse después de la última nota con puntillo y antes de esta nota." + #: vaticana-ligature-engraver.cc:736 #, c-format msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" @@ -1901,13 +2234,23 @@ msgstr "la opción de programa -dprint-pages no está contemplada por el backend msgid "program option -dpreview not supported by backend `%s'" msgstr "la opción de programa -dpreview no está contemplada por el backend `%s'" -#: output-def.cc:235 -msgid "margins do not fit with line-width, setting default values" -msgstr "los márgenes no caben en este ancho de línea, fijando valores predeterminados" +#: note-collision.cc:496 +msgid "ignoring too many clashing note columns" +msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran" -#: output-def.cc:242 -msgid "systems run off the page due to improper paper settings, setting default values" -msgstr "los sistemas se salen de la página a causa de unos ajustes del papel inadecuados, fijando valores predeterminados" +#: system.cc:200 +#, c-format +msgid "Element count %d" +msgstr "Número total de elementos %d" + +#: system.cc:480 +#, c-format +msgid "Grob count %d" +msgstr "Número de objetos gráficos: %d" + +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "el salto forzado ha sido sobreestablecido por algún otro evento, ¿quizá deba usar comprobaciones de compás?" #: score-engraver.cc:78 #, c-format @@ -1927,106 +2270,11 @@ msgstr "Ruta de búsqueda «%s»" msgid "Aborting" msgstr "Se detiene la ejecución" -#: note-collision.cc:497 -msgid "ignoring too many clashing note columns" -msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran" - -#. fixme: be more verbose. -#: volta-engraver.cc:111 -msgid "cannot end volta spanner" -msgstr "no se puede terminar el trazador de volta" - -#: volta-engraver.cc:121 -msgid "already have a volta spanner, ending that one prematurely" -msgstr "ya hay un trazador de volta, se acaba éste de forma prematura" - -# also...? -#: volta-engraver.cc:125 -msgid "also already have an ended spanner" -msgstr "ya hay un trazador finalizado" - -#: volta-engraver.cc:126 -msgid "giving up" -msgstr "abandonando" - -#: page-layout-problem.cc:322 -msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" -msgstr "la música no cabe en la página: se ha solicitado la no justificación del espaciado, pero la página ha resultado comprimida" - -#: page-layout-problem.cc:325 -#, c-format -msgid "cannot fit music on page: overflow is %f" -msgstr "la música no cabe en la página: el exceso es %f" - -#: page-layout-problem.cc:327 -msgid "compressing music to fit" -msgstr "comprimiendo la música para que quepa" - -#: page-layout-problem.cc:765 -msgid "staff-affinities should only decrease" -msgstr "staff-affinities solo debe disminuir" - #: apply-context-iterator.cc:42 msgid "\\applycontext argument is not a procedure" msgstr "el argumento de \\applycontext no es un procedimiento" -#. FIXME: constant error message. -#: mark-engraver.cc:157 -msgid "rehearsalMark must have integer value" -msgstr "rehearsalMark debe tener un valor entero" - -#: mark-engraver.cc:163 -msgid "mark label must be a markup object" -msgstr "la etiqueta de marcado debe ser un objeto de marcado" - -#: new-dynamic-engraver.cc:142 -#, c-format -msgid "" -"unknown crescendo style: %s\n" -"defaulting to hairpin." -msgstr "" -"estilo de crescendo desconocido: %s\n" -"se toma regulador como predeterminado." - -#: new-dynamic-engraver.cc:200 -#, c-format -msgid "unterminated %s" -msgstr "%s sin terminar" - -#: stem-engraver.cc:103 -msgid "tremolo duration is too long" -msgstr "la duración del trémolo es demasiado larga" - -#. FIXME: -#: stem-engraver.cc:140 -#, c-format -msgid "adding note head to incompatible stem (type = %d)" -msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d)" - -#: stem-engraver.cc:142 -msgid "maybe input should specify polyphonic voices" -msgstr "quizá la entrada debiera especificar voces polifónicas" - -#: lily-lexer.cc:264 -msgid "include files are not allowed in safe mode" -msgstr "no se permiten los archivos de inclusión en el modo seguro" - -#: lily-lexer.cc:291 -#, c-format -msgid "identifier name is a keyword: `%s'" -msgstr "el nombre del identificativo es una palabra clave: «%s»" - -#: lily-lexer.cc:312 -#, c-format -msgid "error at EOF: %s" -msgstr "error al final del archivo (EOF): %s" - -#: lyric-combine-music-iterator.cc:337 -#, c-format -msgid "cannot find Voice `%s'" -msgstr "no se encuentra la Voz «%s»" - -#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109 +#: includable-lexer.cc:71 lily-parser-scheme.cc:108 lily-guile.cc:91 #, c-format msgid "cannot find file: `%s'" msgstr "no se encuentra el archivo: «%s»" @@ -2036,49 +2284,53 @@ msgstr "no se encuentra el archivo: «%s»" msgid "(search path: `%s')" msgstr "(ruta de búsqueda: «%s»)" -#: note-column.cc:135 -msgid "cannot have note heads and rests together on a stem" -msgstr "no se pueden tener cabezas de nota y silencios en la misma plica" +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" +msgstr "no tiene tantos corchetes" + +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" +msgstr "eventos de grupo de notas en conflicto" + +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" +msgstr "NoteEvent sin altura" -#: beam.cc:180 +#: beam.cc:181 msgid "removing beam with no stems" msgstr "se suprime la barra sin plicas" -#. We are completely screwed. -#: beam.cc:1274 -msgid "no viable initial configuration found: may not find good beam slope" -msgstr "no se ha encontrado ninguna configuración inicial viable; puede que no se encuentre una buena inclinación de las barras" +#: staff-performer.cc:257 +msgid "MIDI channel wrapped around" +msgstr "ha dado la vuelta el número de canal MIDI" + +#: staff-performer.cc:258 +msgid "remapping modulo 16" +msgstr "se reasigna módulo 16" -#: slur-engraver.cc:93 +#: slur-engraver.cc:102 phrasing-slur-engraver.cc:101 #, c-format msgid "direction of %s invalid: %d" msgstr "dirección inválida de %s: %d" -#: slur-engraver.cc:162 +#: slur-engraver.cc:176 msgid "unterminated slur" msgstr "ligadura de expresión sin terminar" -#: slur-engraver.cc:174 +#: slur-engraver.cc:211 msgid "cannot end slur" msgstr "no se puede terminar la ligadura de expresión" -#: font-config.cc:40 -msgid "Initializing FontConfig..." -msgstr "Inicializando FontConfig..." - -#: font-config.cc:55 font-config-scheme.cc:152 -#, c-format -msgid "failed adding font directory: %s" -msgstr "fallo al añadir la carpeta de tipografías: %s" +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: slur-engraver.cc:231 +msgid "already have slur" +msgstr "ya tiene una ligadura de expresión" -#: font-config.cc:57 font-config-scheme.cc:154 +#: dots.cc:48 #, c-format -msgid "adding font directory: %s" -msgstr "añadiendo carpeta de tipografías: %s" - -#: font-config.cc:61 -msgid "Building font database..." -msgstr "Construyendo la base de datos de fuentes tipográficas..." +msgid "dot `%s' not found" +msgstr "no se encuentra el puntillo «%s»" #. find out the ideal number of pages #: optimal-page-breaking.cc:62 @@ -2103,12 +2355,12 @@ msgstr "Disponiendo la música en %d páginas..." msgid "Fitting music on %d or %d pages..." msgstr "Disponiendo la música en %d o %d páginas..." -#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:172 #, c-format msgid "trying %d systems" msgstr "probando %d sistemas" -#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:200 #, c-format msgid "best score for this sys-count: %f" msgstr "mejor puntuación para este número de sistemas: %f" @@ -2122,63 +2374,74 @@ msgstr "No se ha encontrado el nombre de glifo para la alteración %s" msgid "natural alteration glyph not found" msgstr "no se encuentra el glifo del símbolo de becuadro" -#: system.cc:197 -#, c-format -msgid "Element count %d" -msgstr "Número total de elementos %d" +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" +msgstr "se necesitan argumentos de símbolo para \\override y \\revert" -#: system.cc:303 +#: font-config-scheme.cc:151 font-config.cc:53 #, c-format -msgid "Grob count %d" -msgstr "Número de objetos gráficos: %d" +msgid "failed adding font directory: %s" +msgstr "fallo al añadir la carpeta de tipografías: %s" -#: slur.cc:362 +#: font-config-scheme.cc:153 font-config.cc:55 #, c-format -msgid "Ignoring grob for slur: %s. avoid-slur not set?" -msgstr "Se ignora el objeto gráfico para la ligadura: %s. ¿No está establecido avoid-slur?" +msgid "Adding font directory: %s" +msgstr "Añadiendo carpeta de tipografías: %s" -#: font-config-scheme.cc:168 +#: font-config-scheme.cc:167 #, c-format msgid "failed adding font file: %s" msgstr "fallo al añadir el archivo de fuente tipográfica: %s" -#: font-config-scheme.cc:170 +#: font-config-scheme.cc:169 #, c-format -msgid "adding font file: %s" -msgstr "añadiendo archivo de fuente tipográfica: %s" +msgid "Adding font file: %s" +msgstr "Añadiendo archivo de fuente tipográfica: %s" + +#: hairpin.cc:61 +msgid "Asking for broken bound padding at a non-broken bound." +msgstr "Se está solicitando un relleno de límite cortado en un límite que no está cortado." -#: hairpin.cc:186 +#: hairpin.cc:254 msgid "decrescendo too small" msgstr "decrescendo demasiado pequeño" -#: extender-engraver.cc:170 extender-engraver.cc:179 -msgid "unterminated extender" -msgstr "prolongación sin terminar" +#: open-type-font.cc:44 +#, c-format +msgid "cannot allocate %lu bytes" +msgstr "no se peuden reservar %lu bytes" -#: lily-guile.cc:89 +#: open-type-font.cc:48 #, c-format -msgid "(load path: `%s')" -msgstr "(ruta de carga: «%s»)" +msgid "cannot load font table: %s" +msgstr "no se puede cargar la tabla de tipografías: %s" -#: lily-guile.cc:437 +#: open-type-font.cc:53 #, c-format -msgid "cannot find property type-check for `%s' (%s)." -msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)." +msgid "FreeType error: %s" +msgstr "error de FreeType: %s" -#: lily-guile.cc:440 -msgid "perhaps a typing error?" -msgstr "¿quizá es un error de tecleo?" +#: open-type-font.cc:110 +#, c-format +msgid "unsupported font format: %s" +msgstr "formato de tipografía %s no soportado" -#: lily-guile.cc:447 -msgid "doing assignment anyway" -msgstr "se hace la asignación de todas formas" +#: open-type-font.cc:112 +#, c-format +msgid "error reading font file %s: %s" +msgstr "error al leer la tipografía %s: %s" -#: lily-guile.cc:459 +#: open-type-font.cc:187 #, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" -msgstr "ha fallado la comprobación de tipo para «%s»; el valor «%s» debe ser del tipo «%s»" +msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgstr "error de Freetype en FT_Get_Glyph_Name (): %s" + +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" +msgstr "error en FT_Get_Glyph_Name (): %s" -#: main.cc:109 +#: main.cc:101 #, c-format msgid "" "This program is free software. It is covered by the GNU General Public\n" @@ -2191,11 +2454,12 @@ msgstr "" "él bajo ciertas condiciones. Invóquelo como `%s --warranty' para obtener\n" "más información.\n" -#: main.cc:115 +#: main.cc:107 msgid "" " This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" "\n" " This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -2208,8 +2472,9 @@ msgid "" "Boston, MA 02111-1307, USA.\n" msgstr "" " This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" "\n" " This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -2222,22 +2487,26 @@ msgstr "" "Boston, MA 02111-1307, USA.\n" "\n" " Este programa es software libre; puede redistribuirlo y/o\n" -"modificarlo bajo los términos de la versión 2 de la Licencia Pública\n" -"General de GNU tal y como está publicada por la Free Software Foundation.\n" +"modificarlo bajo los términos de la Licencia Pública General\n" +"de GNU tal y como está publicada por la Free Software\n" +"Foundation, en su versión 3 o (según lo desee) a cualquier\n" +"versión posterior.\n" "\n" " Este programa se distribuye con la esperanza de que resulte útil,\n" "pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía MERCANTIL\n" -"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas\n" -"Consulte la Licencia Pública General de GNU para ver más detalles\n" -" Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc.,\n" -"59 Temple Place - Suite 330,\n" -"Boston, MA 02111-1307, USA.\n" +"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas.\n" +"Consulte la Licencia Pública General de GNU para ver más detalles.\n" +"\n" +" Debería haber recibido una copia de la\n" +"Licencia Pública General junto con este programa. Si no ha sido así,\n" +"escriba a la Free Software Foundation, Inc.,\n" +"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" -#: main.cc:146 +#: main.cc:141 msgid "SYM[=VAL]" msgstr "SÍMBOLO[=VALOR]" -#: main.cc:147 +#: main.cc:142 msgid "" "set Scheme option SYM to VAL (default: #t).\n" "Use -dhelp for help." @@ -2245,41 +2514,41 @@ msgstr "" "establecer la opción de Scheme SÍMBOLO a VALOR (por omisión: #t).\n" "Use -dhelp para obtener ayuda." -#: main.cc:150 +#: main.cc:146 msgid "EXPR" msgstr "EXPRESIÓN" -#: main.cc:150 +#: main.cc:146 msgid "evaluate scheme code" msgstr "evaluar código de Scheme" #. Bug in option parser: --output =foe is taken as an abbreviation #. for --output-format. -#: main.cc:153 +#: main.cc:149 msgid "FORMATs" msgstr "FORMATOs" -#: main.cc:153 +#: main.cc:149 msgid "dump FORMAT,... Also as separate options:" msgstr "volcar FORMATO,... También como opciones separadas:" -#: main.cc:154 +#: main.cc:150 msgid "generate PDF (default)" msgstr "generar un PDF (predeterminado)" -#: main.cc:155 +#: main.cc:151 msgid "generate PNG" msgstr "generar un PNG" -#: main.cc:156 +#: main.cc:152 msgid "generate PostScript" msgstr "generar un PostScript" -#: main.cc:158 +#: main.cc:155 msgid "FIELD" msgstr "CAMPO" -#: main.cc:158 +#: main.cc:155 msgid "" "dump header field FIELD to file\n" "named BASENAME.FIELD" @@ -2287,19 +2556,19 @@ msgstr "" "volcar el campo de cabecera CAMPO a un archivo\n" "llamado NOMBRE_BASE.CAMPO" -#: main.cc:160 +#: main.cc:158 msgid "add DIR to search path" msgstr "añadir DIRECTORIO a la ruta de búsqueda" -#: main.cc:161 +#: main.cc:159 msgid "use FILE as init file" msgstr "usar ARCHIVO como archivo de inicialización" -#: main.cc:163 +#: main.cc:162 msgid "USER, GROUP, JAIL, DIR" msgstr "USUARIO, GRUPO, JAULA, DIRECTORIO" -#: main.cc:163 +#: main.cc:162 msgid "" "chroot to JAIL, become USER:GROUP\n" "and cd into DIR" @@ -2307,141 +2576,213 @@ msgstr "" "chroot a JAULA, convertirse en USUARIO:GRUPO\n" "y cd al DIRECTORIO" -#: main.cc:166 +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" +"mostrar mensajes de registro según NIVEL_DE_REGISTRO. Los valores posibles son:\n" +"NONE (ninguno), ERROR (errores), WARNING (advertencias), BASIC (básico),\n" +"PROGRESS (mostrar avance), INFO (información; predeterminado)\n" +"y DEBUG (depuración)." + +#: main.cc:171 msgid "write output to FILE (suffix will be added)" msgstr "escribir la salida en el ARCHIVO (se añadirá el sufijo)" -#: main.cc:167 +#: main.cc:172 msgid "relocate using directory of lilypond program" msgstr "relocalizar utilizando el directorio del programa lilypond" +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "sin información del avance; sólo mensajes de error (equivale a loglevel=ERROR)" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "ser prolijo (equivale a loglevel=DEBUG)" + #. Do not update the copyright years here, run `make grand-replace' -#: main.cc:238 +#: main.cc:242 #, c-format msgid "" "Copyright (c) %s by\n" "%s and others." msgstr "" -"Copyright (c) %s by\n" +"Copyright (c) %s por\n" "%s y otros." #. No version number or newline here. It confuses help2man. -#: main.cc:265 +#: main.cc:269 #, c-format msgid "Usage: %s [OPTION]... FILE..." msgstr "Uso: %s [OPCIÓN]... ARCHIVO..." -#: main.cc:267 +#: main.cc:271 msgid "Typeset music and/or produce MIDI from FILE." msgstr "Componer tipográficamente la música y/o producir MIDI a partir de ARCHIVO." -#: main.cc:269 +#: main.cc:273 msgid "LilyPond produces beautiful music notation." msgstr "LilyPond produce una notación musical bella y hermosa." -#: main.cc:271 +#: main.cc:275 #, c-format msgid "For more information, see %s" msgstr "Para ver más información, consulte %s" -#: main.cc:273 +#: main.cc:277 msgid "Options:" msgstr "Opciones:" -#: main.cc:327 +#: main.cc:331 #, c-format msgid "expected %d arguments with jail, found: %u" msgstr "se esperaban %d argumentos con la jaula, se han encontrado: %u" -#: main.cc:341 +#: main.cc:345 #, c-format msgid "no such user: %s" msgstr "no existe el usuario %s" -#: main.cc:343 +#: main.cc:347 #, c-format msgid "cannot get user id from user name: %s: %s" msgstr "no se puede obtener el identificador de usuario a partir del nombre: %s: %s" -#: main.cc:358 +#: main.cc:362 #, c-format msgid "no such group: %s" msgstr "no existe este grupo: %s" -#: main.cc:360 +#: main.cc:364 #, c-format msgid "cannot get group id from group name: %s: %s" msgstr "no se puede obtener el id de grupo a partir del nombre: %s: %s" -#: main.cc:368 +#: main.cc:372 #, c-format msgid "cannot chroot to: %s: %s" msgstr "no se puede hacer chroot a: %s: %s" -#: main.cc:375 +#: main.cc:379 #, c-format msgid "cannot change group id to: %d: %s" msgstr "no se puede cambiar el grupo del usuario a %d: %s" -#: main.cc:381 +#: main.cc:385 #, c-format msgid "cannot change user id to: %d: %s" msgstr "no se puede cambiar el identificador de usuario a %d: %s" -#: main.cc:387 +#: main.cc:391 #, c-format msgid "cannot change working directory to: %s: %s" msgstr "no se puede cambiar el directorio de trabajo a: %s: %s" -#: main.cc:628 +#: main.cc:639 #, c-format msgid "exception caught: %s" msgstr "se ha capturado una excepción: %s" -#: key-signature-interface.cc:78 +#: page-turn-page-breaking.cc:168 #, c-format -msgid "No glyph found for alteration: %s" -msgstr "No se ha encontrado ningún glifo para la alteración: %s" +msgid "page-turn-page-breaking: breaking from %d to %d" +msgstr "page-turn-page-breaking: saltando desde %d hasta %d" -#: key-signature-interface.cc:88 -msgid "alteration not found" -msgstr "no se encuentra la alteración" +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +msgstr "no se puede ajustar la primera vuelta de página en una página única. Considere la posibilidad de establecer first-page-number a un número par." -#: dots.cc:48 +#: page-turn-page-breaking.cc:230 #, c-format -msgid "dot `%s' not found" -msgstr "no se encuentra el puntillo «%s»" +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "Calculando los saltos de página y de línea (%d saltos de página posibles)..." + +#: page-turn-page-breaking.cc:300 +#, c-format +msgid "break starting at page %d" +msgstr "el salto comienza en la página %d" + +#: page-turn-page-breaking.cc:301 +#, c-format +msgid "\tdemerits: %f" +msgstr "\tpuntuación: %f" + +#: page-turn-page-breaking.cc:302 +#, c-format +msgid "\tsystem count: %d" +msgstr "número total de \tsistemas: %d" + +#: page-turn-page-breaking.cc:303 +#, c-format +msgid "\tpage count: %d" +msgstr "número total de \tpáginas: %d" + +#: page-turn-page-breaking.cc:304 +#, c-format +msgid "\tprevious break: %d" +msgstr "\tsalto anterior: %d" + +#: midi-item.cc:89 +#, c-format +msgid "no such MIDI instrument: `%s'" +msgstr "no existe este instrumento MIDI: «%s»" + +#: midi-item.cc:161 +msgid "Time signature with more than 255 beats. Truncating" +msgstr "Indicación de compás con más de 255 partes. Se recorta." + +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" +msgstr "la duración del trémolo es demasiado larga" -#: translator.cc:359 +#: stem-engraver.cc:162 +#, c-format +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d/%d)" + +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" +msgstr "quizá la entrada debiera especificar voces polifónicas" + +#: translator.cc:326 #, c-format msgid "Two simultaneous %s events, junking this one" msgstr "Dos eventos %s simultáneos, se recorta éste" -#: translator.cc:360 +#: translator.cc:327 #, c-format msgid "Previous %s event here" msgstr "El evento %s previo está aquí" -#: glissando-engraver.cc:105 +#: glissando-engraver.cc:158 msgid "unterminated glissando" msgstr "glissando sin terminar" -#: text-spanner-engraver.cc:73 -msgid "cannot find start of text spanner" -msgstr "no se encuentra el principio del trazador de texto" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" +msgstr "la dirección no puede ser CENTER en ly:skyline-pair::skyline" -#: text-spanner-engraver.cc:86 -msgid "already have a text spanner" -msgstr "ya hay un trazador de texto" +#: beam-engraver.cc:147 +msgid "already have a beam" +msgstr "ya tiene una barra" -#: text-spanner-engraver.cc:132 -msgid "unterminated text spanner" -msgstr "trazador de texto sin terminar" +#: beam-engraver.cc:230 +msgid "unterminated beam" +msgstr "barra sin terminar" -#: clef.cc:65 -#, c-format -msgid "clef `%s' not found" -msgstr "no se ha encontrado la clave «%s»" +#: beam-engraver.cc:277 +msgid "stem does not fit in beam" +msgstr "la plica no cabe dentro de la barra" + +#: beam-engraver.cc:278 +msgid "beam was started here" +msgstr "la barra comenzó aquí" + +#: key-engraver.cc:199 +msgid "Incomplete keyAlterationOrder for key signature" +msgstr "keyAlterationOrder incompleto para la armadura" #. #. Todo: should make typecheck? @@ -2453,40 +2794,67 @@ msgstr "no se ha encontrado la clave «%s»" msgid "strange time signature found: %d/%d" msgstr "se ha encontrado una indicación extraña de compás: %d/%d" -#: lily-parser-scheme.cc:82 +#: lily-parser-scheme.cc:80 #, c-format msgid "Changing working directory to: `%s'" msgstr "Se cambia el directorio de trabajo a: «%s»" +#: lily-parser-scheme.cc:84 +#, c-format +msgid "unable to change directory to: `%s'" +msgstr "no se ha podido cambiar el directorio de trabajo a: «%s»" + #: lily-parser-scheme.cc:99 #, c-format msgid "cannot find init file: `%s'" msgstr "no se encuentra el archivo de inicio: «%s»" -#: lily-parser-scheme.cc:118 +#: lily-parser-scheme.cc:117 #, c-format msgid "Processing `%s'" msgstr "Procesando «%s»" -#: lily-parser-scheme.cc:204 +#: lily-parser-scheme.cc:208 msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." msgstr "ly:parser-parse-string sólo es válido con un analizador nuevo. Use en su lugar ly:parser-include-string." -#: custos.cc:88 +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parse-string-expression sólo es válido con un analizador nuevo. Use en su lugar ly:parser-include-string." + +#. We are completely screwed. +#: beam-quanting.cc:839 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "no se ha encontrado ninguna configuración inicial viable; puede que no se encuentre una buena inclinación de las barras" + +#: lily-guile.cc:93 #, c-format -msgid "custos `%s' not found" -msgstr "no se encuentran los custos «%s»" +msgid "(load path: `%s')" +msgstr "(ruta de carga: «%s»)" -#: program-option-scheme.cc:237 +#: lily-guile.cc:416 #, c-format -msgid "no such internal option: %s" -msgstr "no existe la opción interna %s" +msgid "cannot find property type-check for `%s' (%s)." +msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)." + +#: lily-guile.cc:419 +msgid "perhaps a typing error?" +msgstr "¿quizá es un error de tecleo?" + +#: lily-guile.cc:426 +msgid "doing assignment anyway" +msgstr "se hace la asignación de todas formas" + +#: lily-guile.cc:438 +#, c-format +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "ha fallado la comprobación de tipo para «%s»; el valor «%s» debe ser del tipo «%s»" #: rest-collision.cc:146 msgid "cannot resolve rest collision: rest direction not set" msgstr "no se puede resolver la colisión de los silencios: la dirección de los silencios no se ha establecido" -#: rest-collision.cc:160 rest-collision.cc:205 +#: rest-collision.cc:158 rest-collision.cc:267 msgid "too many colliding rests" msgstr "demasiados silencios en colisión" @@ -2502,128 +2870,70 @@ msgstr "no se encuentra el comienzo del episema" msgid "unterminated episema" msgstr "episema sin terminar" -#: grob-property.cc:34 +#: rest.cc:192 #, c-format -msgid "%d: %s" -msgstr "%d: %s" - -#: grob-property.cc:173 -#, c-format -msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" -msgstr "dependencia cíclica: se ha encontrado calculation-in-progress para #'%s (%s)" - -#: relocate.cc:54 -#, c-format -msgid "Setting %s to %s" -msgstr "Se establece %s a %s" - -#: relocate.cc:74 -#, c-format -msgid "no such file: %s for %s" -msgstr "no existe el archivo: %s para %s" - -#: relocate.cc:84 relocate.cc:102 -#, c-format -msgid "no such directory: %s for %s" -msgstr "no existe este directorio: %s para %s" - -#: relocate.cc:94 -#, c-format -msgid "%s=%s (prepend)\n" -msgstr "%s=%s (prefijar)\n" - -#: relocate.cc:124 -#, c-format -msgid "not relocating, no %s/ or current/ found under %s" -msgstr "no se relocaliza, no se ha encontrado %s/ ni current/ bajo %s" - -#: relocate.cc:135 -#, c-format -msgid "Relocation: compile datadir=%s, new datadir=%s" -msgstr "Relocalización: en la compilación datadir=%s, el nuevo datadir=%s" - -#: relocate.cc:148 -#, c-format -msgid "Relocation: framework_prefix=%s" -msgstr "Relocalización: framework_prefix=%s" - -#: relocate.cc:189 -#, c-format -msgid "Relocation: is absolute: argv0=%s" -msgstr "Relocalización: es absoluto: argv0=%s" - -#: relocate.cc:196 -#, c-format -msgid "Relocation: from cwd: argv0=%s" -msgstr "Relocalización: desde cwd: argv0=%s" +msgid "rest `%s' not found" +msgstr "no se ha encontrado el silencio «%s»" -#: relocate.cc:213 +#: pango-font.cc:205 #, c-format msgid "" -"Relocation: from PATH=%s\n" -"argv0=%s" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" msgstr "" -"Relocalización: desde PATH=%s\n" -"argv0=%s" - -#: relocate.cc:240 -msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" -msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR" - -#: relocate.cc:367 -#, c-format -msgid "Relocation file: %s" -msgstr "Archivo de relocalización: %s" - -#: relocate.cc:373 source-file.cc:65 -#, c-format -msgid "cannot open file: `%s'" -msgstr "no se puede abrir el archivo: «%s»" +"El glifo no tiene nombre, pero la tipografía soporta nombres de glifo.\n" +"Se salta el glifo U+%0X, archivo %s" -#: relocate.cc:403 +#: pango-font.cc:242 #, c-format -msgid "Unknown relocation command %s" -msgstr "instrucción de relocalización %s desconocida" +msgid "no PostScript font name for font `%s'" +msgstr "no hay un nombre de tipografía PostScript para «%s»" -#: translator-group.cc:188 -#, c-format -msgid "cannot find: `%s'" -msgstr "no se encuentra «%s»" +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript" -#: phrasing-slur-engraver.cc:157 +#: phrasing-slur-engraver.cc:175 msgid "unterminated phrasing slur" msgstr "ligadura de fraseo sin terminar" -#: lyric-engraver.cc:176 -msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +#: phrasing-slur-engraver.cc:210 +msgid "cannot end phrasing slur" +msgstr "no se puede terminar la ligadura de fraseo" + +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: phrasing-slur-engraver.cc:230 +msgid "already have phrasing slur" +msgstr "ya tiene una ligadura de fraseo" + +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." msgstr "La sílaba de la letra no tiene nota. Utilice \\lyricsto o associatedVoice." -#: page-breaking.cc:248 +#: page-breaking.cc:277 msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" msgstr "se ignoran min-systems-per-page y max-systems-per-page debido a que se fijó systems-per-page" -#: page-breaking.cc:253 +#: page-breaking.cc:282 msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" msgstr "min-systems-per-page es mayor que max-systems-per-page, se ignoran los dos valores" +#: paper-outputter-scheme.cc:41 +#, c-format +msgid "Layout output to `%s'..." +msgstr "Salida de la página hacia «%s»..." + #: performance.cc:54 msgid "Track..." msgstr "Pista..." -#: performance.cc:83 -msgid "MIDI channel wrapped around" -msgstr "ha dado la vuelta el número de canal MIDI" - -#: performance.cc:84 -msgid "remapping modulo 16" -msgstr "se reasigna módulo 16" - -#: performance.cc:111 +#: performance.cc:82 #, c-format msgid "MIDI output to `%s'..." msgstr "Salida MIDI hacia «%s»..." -#: tuplet-engraver.cc:107 +#: tuplet-engraver.cc:110 msgid "No tuplet to end" msgstr "no hay ningún grupo especial que terminar" @@ -2647,13 +2957,19 @@ msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura" msgid "cannot apply `\\~' on heads with identical pitch" msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura" -#: chord-tremolo-engraver.cc:88 -msgid "No tremolo to end" -msgstr "No hay ningún tremolo hasta el final" +#: key-signature-interface.cc:77 +#, c-format +msgid "No glyph found for alteration: %s" +msgstr "No se ha encontrado ningún glifo para la alteración: %s" -#: chord-tremolo-engraver.cc:109 -msgid "unterminated chord tremolo" -msgstr "trémolo de acorde sin terminar" +#: key-signature-interface.cc:87 +msgid "alteration not found" +msgstr "no se encuentra la alteración" + +#: source-file.cc:85 +#, c-format +msgid "expected to read %d characters, got %d" +msgstr "se esperaba leer %d caracteres, se han obtenido %d" #: axis-group-engraver.cc:94 msgid "Axis_group_engraver: vertical group already has a parent" @@ -2676,159 +2992,98 @@ msgstr "estilo de cluster (racimo) «%s» desconocido" msgid "junking empty cluster" msgstr "se recorta el racimo (cluster) vacío" -#: context-property.cc:42 -msgid "need symbol arguments for \\override and \\revert" -msgstr "se necesitan argumentos de símbolo para \\override y \\revert" - -#: source-file.cc:85 -#, c-format -msgid "expected to read %d characters, got %d" -msgstr "se esperaba leer %d caracteres, se han obtenido %d" - -#: axis-group-interface.cc:631 -msgid "an outside-staff object should have a direction, defaulting to up" -msgstr "un objeto externo a la pauta debe tener una dirección, por omisión se establece hacia arriba" - -#: coherent-ligature-engraver.cc:111 -#, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" -msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul" - -#: percent-repeat-engraver.cc:148 -msgid "unterminated percent repeat" -msgstr "repetición de porcentaje sin terminar" - -#: note-head.cc:76 -#, c-format -msgid "none of note heads `%s' or `%s' found" -msgstr "no se encuentran las cabezas de nota «%s» ni «%s»" - -#: relative-octave-check.cc:49 -msgid "Failed octave check, got: " -msgstr "La comprobación de octaba ha fallado, se ha obtenido: " - -#. FIXME: -#: script-engraver.cc:113 -msgid "do not know how to interpret articulation:" -msgstr "no sabemos cómo interpretar la articulación:" - -#: script-engraver.cc:114 -msgid " scheme encoding: " -msgstr " codificación de Scheme: " - -#: all-font-metrics.cc:156 -#, c-format -msgid "cannot find font: `%s'" -msgstr "no se encuentra la tipografía «%s»" - -#: property-iterator.cc:85 -#, c-format -msgid "not a grob name, `%s'" -msgstr "no es un nombre de objeto gráfico: «%s»" - -#: bar-check-iterator.cc:84 -#, c-format -msgid "barcheck failed at: %s" -msgstr "la comprobación de compás ha fallado en: %s" - -#: stem.cc:116 -msgid "weird stem size, check for narrow beams" -msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas" - -#: stem.cc:657 -#, c-format -msgid "flag `%s' not found" -msgstr "no se encuentra el indicador «%s»" - -#: stem.cc:673 -#, c-format -msgid "flag stroke `%s' not found" -msgstr "no se encuentra la forma del glifo del corchete «%s»" - #: global-context-scheme.cc:96 global-context-scheme.cc:114 msgid "no music found in score" msgstr "no se ha encontrado música en la partitura" #: global-context-scheme.cc:104 -msgid "Interpreting music... " -msgstr "Interpretando la música... " +msgid "Interpreting music..." +msgstr "Interpretando la música..." + +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "tiempo transcurrido: %.2f segundos" + +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" +msgstr "los márgenes no caben en este ancho de línea, fijando valores predeterminados" + +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" +msgstr "los sistemas se salen de la página a causa de unos ajustes del papel inadecuados, fijando valores predeterminados" -#: global-context-scheme.cc:127 -#, c-format -msgid "elapsed time: %.2f seconds" -msgstr "tiempo transcurrido: %.2f segundos" +#: axis-group-interface.cc:668 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "un objeto externo a la pauta debe tener una dirección, por omisión se establece hacia arriba" -#: translator-group-ctors.cc:40 +#: coherent-ligature-engraver.cc:110 #, c-format -msgid "fatal error. Couldn't find type: %s" -msgstr "error fatal. No se ha encontrado el tipo: %s" - -#: mensural-ligature.cc:171 -msgid "Mensural_ligature: unexpected case fall-through" -msgstr "Mensural_ligature (ligadura mensural): caso por defecto inesperado" +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul" -#: mensural-ligature.cc:233 -msgid "Mensural_ligature: (join_right == 0)" -msgstr "Mensural_ligature (ligadura mensural): (join_right == 0)" +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "repetición de porcentaje sin terminar" -#: page-turn-page-breaking.cc:168 +#: note-head.cc:95 #, c-format -msgid "page-turn-page-breaking: breaking from %d to %d" -msgstr "page-turn-page-breaking: saltando desde %d hasta %d" +msgid "none of note heads `%s' or `%s' found" +msgstr "no se encuentran las cabezas de nota «%s» ni «%s»" -#: page-turn-page-breaking.cc:217 -msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." -msgstr "no se puede ajustar la primera vuelta de página en una página única. Considere la posibilidad de establecer first-page-number a un número par." +#: font-config.cc:38 +msgid "Initializing FontConfig..." +msgstr "Inicializando FontConfig..." -#: page-turn-page-breaking.cc:230 -#, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." -msgstr "Calculando los saltos de página y de línea (%d saltos de página posibles)..." +#: font-config.cc:58 +msgid "Building font database..." +msgstr "Construyendo la base de datos de fuentes tipográficas..." -#: page-turn-page-breaking.cc:300 -#, c-format -msgid "break starting at page %d" -msgstr "el salto comienza en la página %d" +#. FIXME: +#: script-engraver.cc:113 +msgid "do not know how to interpret articulation:" +msgstr "no sabemos cómo interpretar la articulación:" -#: page-turn-page-breaking.cc:301 -#, c-format -msgid "\tdemerits: %f" -msgstr "\tpuntuación: %f" +#: script-engraver.cc:114 +msgid " scheme encoding: " +msgstr " codificación de Scheme: " -#: page-turn-page-breaking.cc:302 +#: all-font-metrics.cc:149 #, c-format -msgid "\tsystem count: %d" -msgstr "número total de \tsistemas: %d" +msgid "cannot find font: `%s'" +msgstr "no se encuentra la tipografía «%s»" -#: page-turn-page-breaking.cc:303 +#: clef.cc:65 #, c-format -msgid "\tpage count: %d" -msgstr "número total de \tpáginas: %d" +msgid "clef `%s' not found" +msgstr "no se ha encontrado la clave «%s»" -#: page-turn-page-breaking.cc:304 +#: property-iterator.cc:93 #, c-format -msgid "\tprevious break: %d" -msgstr "\tsalto anterior: %d" +msgid "not a grob name, `%s'" +msgstr "no es un nombre de objeto gráfico: «%s»" -#: lily-parser.cc:106 -msgid "Parsing..." -msgstr "Analizando..." +#: pdf-scheme.cc:50 +#, c-format +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "La conversión de la cadena `%s' a UTF-16be ha fallado: %s" -#: lily-parser.cc:134 -msgid "braces do not match" -msgstr "las llaves no concuerdan" +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales" -#: score.cc:178 -msgid "already have music in score" -msgstr "ya tiene música en la partitura" +#: new-fingering-engraver.cc:269 +msgid "no placement found for fingerings" +msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones" -#: score.cc:179 -msgid "this is the previous music" -msgstr "esta es la música precedente" +#: new-fingering-engraver.cc:270 +msgid "placing below" +msgstr "se coloca debajo" -#: score.cc:184 -msgid "errors found, ignoring music expression" -msgstr "se han encontrado errores, se ignora la expresión musical" +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" +msgstr "la comprobación de compás ha fallado en: %s" #: change-iterator.cc:34 #, c-format @@ -2855,9 +3110,48 @@ msgstr "no se cambia al mismo tipo de contexto: %s" msgid "none of these in my family" msgstr "no hay ninguno de estos en mi familia" +#: translator-group-ctors.cc:40 +#, c-format +msgid "fatal error. Couldn't find type: %s" +msgstr "error fatal. No se ha encontrado el tipo: %s" + +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" +msgstr "no se encuentra el principio del trazador de texto" + +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" +msgstr "ya hay un trazador de texto" + +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" +msgstr "trazador de texto sin terminar" + +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "Analizando..." + +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" +msgstr "no se ecnuentra un salto de línea que cumpla las restricciones" + +#. FIXME: constant error message. +#: mark-engraver.cc:157 +msgid "rehearsalMark must have integer value" +msgstr "rehearsalMark debe tener un valor entero" + +#: mark-engraver.cc:163 +msgid "mark label must be a markup object" +msgstr "la etiqueta de marcado debe ser un objeto de marcado" + +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "la cabeza rítmica no es parte de una columna rítmica" + #. If there is no such symbol, we default to the numbered style. #. (Here really with a warning!) -#: time-signature.cc:94 +#: time-signature.cc:122 #, c-format msgid "time signature symbol `%s' not found; reverting to numbered style" msgstr "no se encuentra el símbolo de compás «%s»; se vuelve al estilo numerado" @@ -2872,36 +3166,6 @@ msgstr "interfaz desconocido «%s»" msgid "Grob `%s' has no interface for property `%s'" msgstr "El grob «%s» no tiene interfaz para la propiedad «%s»" -#: open-type-font.cc:44 -#, c-format -msgid "cannot allocate %lu bytes" -msgstr "no se peuden reservar %lu bytes" - -#: open-type-font.cc:48 -#, c-format -msgid "cannot load font table: %s" -msgstr "no se puede cargar la tabla de tipografías: %s" - -#: open-type-font.cc:53 -#, c-format -msgid "FreeType error: %s" -msgstr "error de FreeType: %s" - -#: open-type-font.cc:111 -#, c-format -msgid "unsupported font format: %s" -msgstr "formato de tipografía %s no soportado" - -#: open-type-font.cc:113 -#, c-format -msgid "error reading font file %s: %s" -msgstr "error al leer la tipografía %s: %s" - -#: open-type-font.cc:188 -#, c-format -msgid "FT_Get_Glyph_Name () Freetype error: %s" -msgstr "error de Freetype en FT_Get_Glyph_Name (): %s" - #: midi-stream.cc:39 #, c-format msgid "cannot open for write: %s: %s" @@ -2912,167 +3176,183 @@ msgstr "no se puede abrir el archivo en modo de escritura: %s: %s" msgid "cannot write to file: `%s'" msgstr "no se puede escribir el archivo: «%s»" -#: parser.yy:820 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 +#, c-format +msgid "Cyclic markup detected: %s" +msgstr "Se ha detectado un elemento de marcado cílcico: %s" + +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 +#, c-format +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "La profundidad del marcado supera el valor máximo de %d; Elemento de marcado: %s" + +#: parser.yy:162 parser.yy:176 +msgid "Too much lookahead" +msgstr "Lectura previa por delante excesiva" + +#: parser.yy:833 parser.yy:1234 +msgid "not a context mod" +msgstr "no es un modificador de contexto" + +#: parser.yy:1018 msgid "\\paper cannot be used in \\score, use \\layout instead" msgstr "no se puede usar \\paper dentro de \\score, utilice \\layout en su lugar" -#: parser.yy:844 +#: parser.yy:1042 msgid "need \\paper for paper block" msgstr "es necesario \\paper para el bloque 'paper'" -#: parser.yy:1363 -msgid "only \\consists takes non-string argument." -msgstr "solo \\consists admite un argumento no de cadena." +#: parser.yy:1999 +msgid "only \\consists and \\remove take non-string argument." +msgstr "solo \\consists y \\remove admiten un argumento no de cadena." -#: parser.yy:1376 +#: parser.yy:2012 msgid "Grob name should be alphanumeric" msgstr "El nombre del objeto gráfico ha de ser alfanumérico" -#: parser.yy:1685 -msgid "second argument must be pitch list" -msgstr "el segundo argumento debe ser una lista de notas" +#: parser.yy:2216 +msgid "not a rhythmic event" +msgstr "no es un evento rítmico" -#: parser.yy:1716 parser.yy:1721 parser.yy:2194 +#: parser.yy:2312 parser.yy:2317 msgid "have to be in Lyric mode for lyrics" msgstr "para la letra se debe estar en el modo Lyric" -#: parser.yy:1818 +#: parser.yy:2432 msgid "expecting string as script definition" msgstr "se espera una cadena como definición del guión" -#: parser.yy:1973 parser.yy:2024 +#: parser.yy:2592 parser.yy:2643 #, c-format msgid "not a duration: %d" msgstr "no es una duración: %d" -#: parser.yy:2148 +#: parser.yy:2762 msgid "have to be in Note mode for notes" msgstr "para las notas se debe estar en el modo Note" -#: parser.yy:2209 +#: parser.yy:2817 msgid "have to be in Chord mode for chords" msgstr "para los acordes se debe estar en el modo Chord" +#: parser.yy:3077 +msgid "not a markup" +msgstr "no es una instrucción de marcado" + # stray? -#: lexer.ll:190 +#: lexer.ll:224 msgid "stray UTF-8 BOM encountered" msgstr "se ha encontrado una marca BOM de UTF-8 extraña" -#: lexer.ll:194 +#: lexer.ll:227 msgid "Skipping UTF-8 BOM" msgstr "Se salta el BOM de UTF-8" -#: lexer.ll:249 +#: lexer.ll:285 #, c-format msgid "Renaming input to: `%s'" msgstr "Renombrando la entrada a: «%s»" -#: lexer.ll:266 +#: lexer.ll:302 msgid "quoted string expected after \\version" msgstr "se esperaba una cadena entre comillas después de \\version" -#: lexer.ll:270 +#: lexer.ll:306 msgid "quoted string expected after \\sourcefilename" msgstr "se esperaba una cadena entre comillas después de \\sourcefilename" -#: lexer.ll:274 +#: lexer.ll:310 msgid "integer expected after \\sourcefileline" msgstr "se esperaba un entero después de \\sourcefileline" -#: lexer.ll:287 -msgid "EOF found inside a comment" -msgstr "se ha encontrado EOF (fin de archivo) dentro de un comentario" - -#: lexer.ll:302 +#: lexer.ll:333 msgid "\\maininput not allowed outside init files" msgstr "no se permite \\maininput fuera de los archivos de inicio" -#: lexer.ll:326 +#: lexer.ll:357 #, c-format msgid "wrong or undefined identifier: `%s'" msgstr "identificativo equivocado o no definido: «%s»" +#: lexer.ll:383 +msgid "string expected after \\include" +msgstr "se esperaba una cadena después de \\include" + #. backup rule -#: lexer.ll:335 +#: lexer.ll:393 msgid "end quote missing" msgstr "faltan las comillas de cierre" -#: lexer.ll:485 +#: lexer.ll:555 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "Se ha encontrado una llave al final de la letra. ¿Olvidó un espacio?" -#: lexer.ll:595 +#: lexer.ll:670 msgid "Brace found at end of markup. Did you forget a space?" msgstr "Se ha encontrado una llave al final del marcado, ¿Olvidó un espacio?" -#: lexer.ll:699 +#: lexer.ll:682 +msgid "EOF found inside a comment" +msgstr "se ha encontrado EOF (fin de archivo) dentro de un comentario" + +#: lexer.ll:780 #, c-format -msgid "invalid character: `%c'" -msgstr "carácter no válido: «%c»" +msgid "invalid character: `%s'" +msgstr "carácter no válido: «%s»" -#: lexer.ll:814 lexer.ll:815 +#: lexer.ll:883 lexer.ll:884 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "cadena de escape desconocida: `\\%s'" -#: lexer.ll:924 lexer.ll:925 +#: lexer.ll:1166 lexer.ll:1167 +msgid "non-UTF-8 input" +msgstr "la entrada no es UTF-8" + +#: lexer.ll:1210 lexer.ll:1211 #, c-format msgid "file too old: %s (oldest supported: %s)" msgstr "archivo demasiado antiguo: %s (el más antiguo que se puede tratar es: %s)" -#: lexer.ll:925 lexer.ll:926 +#: lexer.ll:1211 lexer.ll:1212 msgid "consider updating the input with the convert-ly script" msgstr "considere la actualización de la entrada mediante el guión (script) convert-ly" -#: lexer.ll:931 lexer.ll:932 +#: lexer.ll:1217 lexer.ll:1218 #, c-format msgid "program too old: %s (file requires: %s)" msgstr "el programa es demasiado antiguo: %s (el archivo necesita: %s)" -#: documentation-lib.scm:59 -#, scheme-format -msgid "Processing ~S..." -msgstr "Procesando ~S..." - -#: documentation-lib.scm:176 -#, scheme-format -msgid "Writing ~S..." -msgstr "Escribiendo ~S..." - -#: documentation-lib.scm:198 -#, scheme-format -msgid "cannot find description for property ~S (~S)" -msgstr "no se encuentra la descripción de la propiedad ~S (~S)" - -#: parser-clef.scm:141 parser-clef.scm:181 +#: parser-clef.scm:143 parser-clef.scm:183 #, scheme-format msgid "unknown clef type `~a'" msgstr "tipo de clave desconocido: «~a» " -#: parser-clef.scm:142 parser-clef.scm:182 +#: parser-clef.scm:144 parser-clef.scm:184 #, scheme-format msgid "supported clefs: ~a" msgstr "claves soportadas: ~a" -#: document-backend.scm:132 -#, scheme-format -msgid "pair expected in doc ~s" -msgstr "se esperaba una pareja en el documento ~s" +#: parser-ly-from-scheme.scm:73 +msgid "error in #{ ... #}" +msgstr "error en #{ ... #}" -#: document-backend.scm:189 +#: framework-eps.scm:108 #, scheme-format -msgid "cannot find interface for property: ~S" -msgstr "no se encuentra un interface para la propiedad ~S" +msgid "Writing ~a..." +msgstr "Escribiendo «~a»..." -#: document-backend.scm:199 +#: flag-styles.scm:151 #, scheme-format -msgid "unknown Grob interface: ~S" -msgstr "interfaz de Objeto gráfico desconocido: ~S" +msgid "flag stroke `~a' or `~a' not found" +msgstr "no se encuentra el impacto `~a' o `~a' de indicador" -#: framework-eps.scm:108 +#: graphviz.scm:64 #, scheme-format -msgid "Writing ~a..." -msgstr "Escribiendo «~a»..." +msgid "Writing graph `~a'..." +msgstr "Escribiendo el gráfico «~a»..." #: define-music-properties.scm:21 define-grob-properties.scm:21 #: define-context-properties.scm:31 @@ -3080,58 +3360,33 @@ msgstr "Escribiendo «~a»..." msgid "symbol ~S redefined" msgstr "redefinido el símbolo ~S" -#: paper.scm:115 -msgid "set-global-staff-size: not in toplevel scope" -msgstr "set-global-staff-size: no está en el ámbito de nivel más alto" - -#: paper.scm:296 -#, scheme-format -msgid "This is not a \\layout {} object, ~S" -msgstr "Esto no es un objeto de \\layout {} , ~S" - -#: paper.scm:308 -#, scheme-format -msgid "Unknown paper size: ~a" -msgstr "Tamaño de papel desconocido: ~a" - -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:323 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" -msgstr "Debe usar #(set-paper-size .. ) dentro de \\paper { ... }" - -#: lily.scm:225 +#: lily.scm:234 msgid "Using (ice-9 curried-definitions) module\n" msgstr "Utilizando el módulo (ice-9 curried-definitions)\n" -#: lily.scm:230 +#: lily.scm:237 msgid "Guile 1.8\n" msgstr "Guile 1.8\n" -#: lily.scm:290 +#: lily.scm:297 #, scheme-format msgid "cannot find: ~A" msgstr "no se encuentra: ~A" -#: lily.scm:350 -#, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" -msgstr "tipo equivocado para el argumento ~a. Se esperaba ~a, se encontró ~s" - -#: lily.scm:716 -msgid "Compilation successfully completed" -msgstr "Compiación completada satisfactoriamente" +#: lily.scm:707 +msgid "Success: compilation successfully completed" +msgstr "Enhorabuena. La compilación se ha completado satisfactoriamente." -#: lily.scm:717 +#: lily.scm:708 msgid "Compilation completed with warnings or errors" msgstr "Compilación completada con advertencias o errores" -#: lily.scm:779 +#: lily.scm:770 #, scheme-format msgid "job ~a terminated with signal: ~a" msgstr "la tarea ~a ha terminado con la señal: ~a" -#: lily.scm:782 +#: lily.scm:773 #, scheme-format msgid "" "logfile ~a (exit ~a):\n" @@ -3140,238 +3395,270 @@ msgstr "" "archivo de registro ~a (salida ~a):\n" "~a" -#: lily.scm:804 lily.scm:882 +#: lily.scm:795 lily.scm:881 #, scheme-format msgid "failed files: ~S" msgstr "archivos que han fallado: ~S" -#: lily.scm:873 +#: lily.scm:872 #, scheme-format msgid "Redirecting output to ~a..." msgstr "Redirigiendo la salida hacia ~a..." -#: lily.scm:892 +#: lily.scm:891 ps-to-png.scm:66 +#, scheme-format +msgid "Invoking `~a'...\n" +msgstr "Invocando «~a»...\n" + +#: layout-beam.scm:40 +#, scheme-format +msgid "Error in beam quanting. Expected (~S,~S) found ~S." +msgstr "Error en la cuantización de la barra. Se esperaba (~S,~S), se ha encontrado ~S." + +#: layout-beam.scm:54 +#, scheme-format +msgid "Error in beam quanting. Expected ~S 0, found ~S." +msgstr "Error en la cuantización de la barra. Se esperaba ~S 0, se ha encontrado ~S." + +#: output-svg.scm:47 +#, scheme-format +msgid "undefined: ~S" +msgstr "no definido: ~S" + +#: output-svg.scm:157 +#, scheme-format +msgid "cannot decypher Pango description: ~a" +msgstr "no se puede descifrar la descripción de Pango: ~a" + +#: output-svg.scm:237 +msgid "Glyph must have a unicode value" +msgstr "El glifo debe tener un valor de Unicode" + +#: output-svg.scm:289 output-svg.scm:299 +#, scheme-format +msgid "cannot find SVG font ~S" +msgstr "no se encuentra la fuente tipográfica de SVG ~S" + +#: output-svg.scm:524 output-ps.scm:277 +#, scheme-format +msgid "unknown line-cap-style: ~S" +msgstr "estilo de extremo de línea line-cap-style desconocido: ~S" + +#: output-svg.scm:530 output-ps.scm:282 +#, scheme-format +msgid "unknown line-join-style: ~S" +msgstr "estilo de unión de líneas line-join-style desconocido: ~S" + +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" +msgstr "el aserto no se cumple: ~S" + +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "set-global-staff-size: no está en el ámbito de nivel más alto" + +#: paper.scm:314 #, scheme-format -msgid "Invoking `~a'...\n" -msgstr "Invocando «~a»...\n" +msgid "This is not a \\layout {} object, ~S" +msgstr "Esto no es un objeto de \\layout {} , ~S" -#: graphviz.scm:64 +#: paper.scm:326 #, scheme-format -msgid "Writing graph `~a'..." -msgstr "Escribiendo el gráfico «~a»..." +msgid "Unknown paper size: ~a" +msgstr "Tamaño de papel desconocido: ~a" -#: framework-svg.scm:84 -#, scheme-format -msgid "Updating font into: ~a" -msgstr "Actualizando la fuente tipográfica en: ~a" +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:341 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "Debe usar #(set-paper-size .. ) dentro de \\paper { ... }" -#: layout-beam.scm:40 -#, scheme-format -msgid "Error in beam quanting. Expected (~S,~S) found ~S." -msgstr "Error en la cuantización de la barra. Se esperaba (~S,~S), se ha encontrado ~S." +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" +msgstr "Música no apta para context-mod" -#: layout-beam.scm:54 +#: lily-library.scm:349 #, scheme-format -msgid "Error in beam quanting. Expected ~S 0, found ~S." -msgstr "Error en la cuantización de la barra. Se esperaba ~S 0, se ha encontrado ~S." - -#: modal-transforms.scm:38 -msgid "'from' pitch not in scale; ignoring" -msgstr "la nota 'origen' no está en la escala; se ignora" +msgid "Cannot find context-def \\~a" +msgstr "No se encuentra la definición de contexto \\~a" -#: modal-transforms.scm:42 modal-transforms.scm:75 -msgid "'to' pitch not in scale; ignoring" -msgstr "la nota 'destino' no está en la escala; se ignora" +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" +msgstr "Música no apta para output-def" -#: modal-transforms.scm:46 -msgid "pitch to be transposed not in scale; ignoring" -msgstr "la nota a transportar no está en la escala; se ignora" +#: lily-library.scm:888 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." +msgstr "" +"Encontrar el índice entre @var{start} y @var{end} (entero)\n" +"que produce la correspondencia más cercana a @var{target-val} cuando\n" +"se aplica a la función @var{getter}." -#: modal-transforms.scm:71 -msgid "'around' pitch not in scale; ignoring" -msgstr "la nota pivote no está en la escala; se ignora" +#: lily-library.scm:962 +#, scheme-format +msgid "unknown unit: ~S" +msgstr "unidad desconocida: ~S " -#: modal-transforms.scm:79 -msgid "pitch to be inverted not in scale; ignoring" -msgstr "la nota a invertir no está en la escala; se ignora" +#: lily-library.scm:987 +#, scheme-format +msgid "no \\version statement found, please add~afor future compatibility" +msgstr "no se ha encontrado ninguna instrucción \\version, escriba~apara disponer de compatibilidad en el futuro" -#: modal-transforms.scm:95 -msgid "negative replication count; ignoring" -msgstr "número de replicaciones negativo; se ignora" +#: lily-library.scm:993 +msgid "old relative compatibility not used" +msgstr "no se ha usado la compatibilidad con el modo relativo antiguo" -#: backend-library.scm:29 ps-to-png.scm:68 +#: backend-library.scm:27 #, scheme-format msgid "Invoking `~a'..." msgstr "Invocando «~a»..." -#: backend-library.scm:34 +#: backend-library.scm:31 #, scheme-format -msgid "`~a' failed (~a)" -msgstr "«~a» ha fallado (~a)" +msgid "`~a' failed (~a)\n" +msgstr "«~a» ha fallado (~a)\n" -#: backend-library.scm:94 +#: backend-library.scm:90 #, scheme-format -msgid "Converting to `~a'..." -msgstr "Convirtiendo en «~a»..." +msgid "Converting to `~a'...\n" +msgstr "Convirtiendo en «~a»...\n" #. Do not try to guess the name of the png file, #. GS produces PNG files like BASE-page%d.png. -#: backend-library.scm:104 +#: backend-library.scm:99 #, scheme-format msgid "Converting to ~a..." msgstr "Convirtiendo en ~a..." -#: backend-library.scm:142 +#: backend-library.scm:137 #, scheme-format msgid "Writing header field `~a' to `~a'..." msgstr "Escribiendo el campo de encabezamiento «~a» en «~a»..." -#: backend-library.scm:192 +#: backend-library.scm:187 #, scheme-format msgid "missing stencil expression `~S'" msgstr "falta la expresión del sello `~S'" -#: to-xml.scm:191 +#: documentation-lib.scm:59 #, scheme-format -msgid "assertion failed: ~S" -msgstr "el aserto no se cumple: ~S" +msgid "Processing ~S..." +msgstr "Procesando ~S..." -#: chord-entry.scm:49 +#: documentation-lib.scm:176 #, scheme-format -msgid "Spurious garbage following chord: ~A" -msgstr "Basurilla espúrea después del acorde: ~A" +msgid "Writing ~S..." +msgstr "Escribiendo ~S..." -#: lily-library.scm:758 -msgid "" -"Find the index between @var{start} and @var{end} (an integer)\n" -"which produces the closest match to @var{target-val} if\n" -"applied to function @var{getter}." -msgstr "" -"Encontrar el índice entre @var{start} y @var{end} (entero)\n" -"que produce la correspondencia más cercana a @var{target-val} cuando\n" -"se aplica a la función @var{getter}." +#: documentation-lib.scm:188 +#, scheme-format +msgid "cannot find description for property `~S' (~S)" +msgstr "no se encuentra la descripción de la propiedad `~S' (~S)" -#: lily-library.scm:832 +#: documentation-lib.scm:209 #, scheme-format -msgid "unknown unit: ~S" -msgstr "unidad desconocida: ~S " +msgid "cannot find description for property ~S (~S)" +msgstr "no se encuentra la descripción de la propiedad ~S (~S)" -#: lily-library.scm:858 lily-library.scm:867 -msgid "warning:" -msgstr "advertencia:" +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" +msgstr "no se ha encontrado ningún sistema en el marcado \\score, ¿tiene un bloque \\layout?" -#: lily-library.scm:860 +#: define-markup-commands.scm:2614 #, scheme-format -msgid "no \\version statement found, please add~afor future compatibility" -msgstr "no se ha encontrado ninguna instrucción \\version, escriba~apara disponer de compatibilidad en el futuro" +msgid "Cannot find glyph ~a" +msgstr "No se encuentra el glifo ~a" -#: lily-library.scm:868 -msgid "old relative compatibility not used" -msgstr "no se ha usado la compatibilidad con el modo relativo antiguo" +#: define-markup-commands.scm:3040 +#, scheme-format +msgid "no brace found for point size ~S " +msgstr "no se ha encontrado ninguna llave para el tamaño en puntos ~S " -#: output-ps.scm:48 -msgid "Found infinity or nan in output. Substituting 0.0" -msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0" +#: define-markup-commands.scm:3041 +#, scheme-format +msgid "defaulting to ~S pt" +msgstr "fijando al valor predeterminado ~S pt" -#: output-ps.scm:289 output-svg.scm:550 +#: define-markup-commands.scm:3194 #, scheme-format -msgid "unknown line-cap-style: ~S" -msgstr "estilo de extremo de línea line-cap-style desconocido: ~S" +msgid "not a valid duration string: ~a" +msgstr "no es una cadena válida de duración: ~a" -#: output-ps.scm:294 output-svg.scm:556 +#: define-event-classes.scm:67 #, scheme-format -msgid "unknown line-join-style: ~S" -msgstr "estilo de unión de líneas line-join-style desconocido: ~S" +msgid "unknown parent class `~a'" +msgstr "Clase del padre «~a» desconocida" -#: output-svg.scm:47 +#: markup-macros.scm:331 #, scheme-format -msgid "undefined: ~S" -msgstr "no definido: ~S" +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgstr "Número de agumentos equivocado. Se esperaban: ~A, se han encontrado ~A: ~S" -#: output-svg.scm:151 +#: markup-macros.scm:337 #, scheme-format -msgid "cannot decypher Pango description: ~a" -msgstr "no se puede descifrar la descripción de Pango: ~a" +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgstr "Argumento inválido en la posición ~A. Se esperaba: ~A, se ha encontrado: ~S." -#: output-svg.scm:231 -msgid "Glyph must have a unicode value" -msgstr "El glifo debe tener un valor de Unicode" +#: markup-macros.scm:373 +#, scheme-format +msgid "Not a markup command: ~A" +msgstr "No es una instrucción de marcado: ~A" -#: output-svg.scm:283 output-svg.scm:293 +#: document-backend.scm:132 #, scheme-format -msgid "cannot find SVG font ~S" -msgstr "no se encuentra la fuente tipográfica de SVG ~S" +msgid "pair expected in doc ~s" +msgstr "se esperaba una pareja en el documento ~s" -#: flag-styles.scm:148 +#: document-backend.scm:189 #, scheme-format -msgid "flag stroke `~a' or `~a' not found" -msgstr "no se encuentra el impacto `~a' o `~a' de indicador" +msgid "cannot find interface for property: ~S" +msgstr "no se encuentra un interface para la propiedad ~S" + +#: document-backend.scm:199 +#, scheme-format +msgid "unknown Grob interface: ~S" +msgstr "interfaz de Objeto gráfico desconocido: ~S" #: define-note-names.scm:962 msgid "Select note names language." msgstr "Seleccione el idioma para los nombres de las notas." -#: define-note-names.scm:969 +#: define-note-names.scm:968 #, scheme-format msgid "Using `~a' note names..." msgstr "Usando los nombres de notas de `~a' ..." -#: define-note-names.scm:972 +#: define-note-names.scm:971 #, scheme-format msgid "Could not find language `~a'. Ignoring." msgstr "No se encuentra el idioma `~a'. Se ignora." -#: define-music-types.scm:740 -#, scheme-format -msgid "symbol expected: ~S" -msgstr "se esperaba un símbolo: ~S" - -#: define-music-types.scm:743 -#, scheme-format -msgid "cannot find music object: ~S" -msgstr "no se encuentra el objeto musical ~S" - -#: define-music-types.scm:762 -#, scheme-format -msgid "unknown repeat type `~S'" -msgstr "tipo de repetición «~S» desconocido" - -#: define-music-types.scm:763 -msgid "See define-music-types.scm for supported repeats" -msgstr "Consulte el archivo define-music-types.scm para ver los tipos de repetición soportados" - -#: translation-functions.scm:341 -#, scheme-format -msgid "Negative fret for pitch ~a on string ~a" -msgstr "Traste negativo para la nota ~a de la cuerda ~a" +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" +msgstr "la nota 'origen' no está en la escala; se ignora" -#: translation-functions.scm:385 -#, scheme-format -msgid "No open string for pitch ~a" -msgstr "No hay cuerda al aire para la nota ~a" +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" +msgstr "la nota 'destino' no está en la escala; se ignora" -#: translation-functions.scm:400 -#, scheme-format -msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" -msgstr "La cuerda solicitada para la nota requiere un traste negativo: cuerda ~a nota ~a" +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" +msgstr "la nota a transportar no está en la escala; se ignora" -#: translation-functions.scm:401 -msgid "Ignoring string request." -msgstr "Se ignora la solicitud de cuerda." +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" +msgstr "la nota pivote no está en la escala; se ignora" -#: translation-functions.scm:414 -#, scheme-format -msgid "No string for pitch ~a (given frets ~a)" -msgstr "No hay ninguna cuerda para la nota ~a (dados los trastes ~a)" +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" +msgstr "la nota a invertir no está en la escala; se ignora" -#: translation-functions.scm:515 -#, scheme-format -msgid "" -"No label for fret ~a (on string ~a);\n" -"only ~a fret labels provided" -msgstr "" -"No hay ninguna etiqueta para el traste ~a (sobre la cuerda ~a);\n" -"sólo se proporcionan etiquetas para los trastes ~a" +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" +msgstr "número de replicaciones negativo; se ignora" #: framework-ps.scm:250 #, scheme-format @@ -3393,7 +3680,7 @@ msgstr "no sabemos cómo empotrar ~S=~S" msgid "do not know how to embed font ~s ~s ~s" msgstr "no sabemos cómo empotrar la tipografía ~s ~s ~s" -#: framework-ps.scm:669 +#: framework-ps.scm:686 msgid "" "\n" "The PostScript backend does not support the\n" @@ -3421,117 +3708,157 @@ msgstr "" " %% Start cut-&-pastable-section\n" " %% ****************************************************************\n" -#: music-functions.scm:268 +#: music-functions.scm:274 msgid "More alternatives than repeats. Junking excess alternatives" msgstr "Hay más alternativas que repeticiones. Se recortan las alternativas excedentes" -#: music-functions.scm:297 +#: music-functions.scm:305 #, scheme-format msgid "invalid tremolo repeat count: ~a" msgstr "número de repeticiones no válido para el trémolo: ~a" -#: music-functions.scm:618 +#: music-functions.scm:671 +msgid "Bad chord repetition" +msgstr "repetición de acorde errónea" + +#: music-functions.scm:706 #, scheme-format msgid "music expected: ~S" msgstr "se esperaba algo de música: ~S" -#. FIXME: uncomprehensable message -#: music-functions.scm:662 -#, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" -msgstr "Ha fallado la comprobación de compás. Se esperaba que estuviera en ~a, en lugar de en ~a" - -#: music-functions.scm:846 +#: music-functions.scm:1024 #, scheme-format msgid "cannot find quoted music: `~S'" msgstr "no se encuentra la música citada: «~S»" -#: music-functions.scm:982 +#: music-functions.scm:1162 msgid "Add @var{octave-shift} to the octave of @var{pitch}." msgstr "Añadir @var{octave-shift} a la octava de @var{pitch}." -#: music-functions.scm:1037 +#: music-functions.scm:1222 #, scheme-format msgid "Unknown octaveness type: ~S " msgstr "Tipo de octavación desconocido: ~S " -#: music-functions.scm:1038 +#: music-functions.scm:1223 msgid "Defaulting to 'any-octave." msgstr "Fijando al valor predeterminado 'any-octave." -#: music-functions.scm:1378 +#: music-functions.scm:1560 #, scheme-format msgid "unknown accidental style: ~S" msgstr "estilo de alteración ~S desconocido" -#: define-event-classes.scm:79 -msgid "All classes must be the last in their matrilineal line." -msgstr "Todas las clases deben ir al final de su línea de descendencia." +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" +msgstr "se esperaba un símbolo: ~S" -#: define-event-classes.scm:83 -msgid "All classes must have a well-defined pedigree in the existing class hierarchy." -msgstr "Todas las clases deben tener un pedigree bien definido en la jerarquía de clases existente." +#: define-music-types.scm:768 +#, scheme-format +msgid "cannot find music object: ~S" +msgstr "no se encuentra el objeto musical ~S" -#: define-event-classes.scm:149 +#: define-music-types.scm:787 #, scheme-format -msgid "event class ~A seems to be unused" -msgstr "parece que la clase de evento ~A está sin usar" +msgid "unknown repeat type `~S'" +msgstr "tipo de repetición «~S» desconocido" -#. should be programming-error -#: define-event-classes.scm:155 +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" +msgstr "Consulte el archivo define-music-types.scm para ver los tipos de repetición soportados" + +#: framework-svg.scm:84 #, scheme-format -msgid "translator listens to nonexisting event class ~A" -msgstr "el traductor está escuchando a una clase de evento ~A que no existe" +msgid "Updating font into: ~a" +msgstr "Actualizando la fuente tipográfica en: ~a" -#: markup.scm:223 +#: translation-functions.scm:359 #, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" -msgstr "Número de agumentos equivocado. Se esperaban: ~A, se han encontrado ~A: ~S" +msgid "Negative fret for pitch ~a on string ~a" +msgstr "Traste negativo para la nota ~a de la cuerda ~a" -#: markup.scm:229 +#: translation-functions.scm:362 #, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." -msgstr "Argumento inválido en la posición ~A. Se esperaba: ~A, se ha encontrado: ~S." +msgid "Missing fret for pitch ~a on string ~a" +msgstr "Falta el traste para la nota ~a de la cuerda ~a" -#: markup.scm:292 +#: translation-functions.scm:413 #, scheme-format -msgid "Not a markup command: ~A" -msgstr "No es una instrucción de marcado: ~A" +msgid "No open string for pitch ~a" +msgstr "No hay cuerda al aire para la nota ~a" -#: ps-to-png.scm:74 +#: translation-functions.scm:428 translation-functions.scm:440 #, scheme-format -msgid "~a exited with status: ~S" -msgstr "~a salió con el estado: ~S" +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +msgstr "La cuerda solicitada para la nota requiere un traste negativo: cuerda ~a nota ~a" -#: define-markup-commands.scm:803 -msgid "no systems found in \\score markup, does it have a \\layout block?" -msgstr "no se ha encontrado ningún sistema en el marcado \\score, ¿tiene un bloque \\layout?" +#: translation-functions.scm:431 +msgid "Ignoring string request and recalculating." +msgstr "Se ignora la solicitud de cuerda; volviendo a calcular." -#: define-markup-commands.scm:2404 +#: translation-functions.scm:443 +msgid "Ignoring note in tablature." +msgstr "Se ignora la nota en la tablatura." + +#: translation-functions.scm:466 #, scheme-format -msgid "Cannot find glyph ~a" -msgstr "No se encuentra el glifo ~a" +msgid "No string for pitch ~a (given frets ~a)" +msgstr "No hay ninguna cuerda para la nota ~a (dados los trastes ~a)" -#: define-markup-commands.scm:2830 +#: translation-functions.scm:571 #, scheme-format -msgid "no brace found for point size ~S " -msgstr "no se ha encontrado ninguna llave para el tamaño en puntos ~S " +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" +msgstr "" +"No hay ninguna etiqueta para el traste ~a (sobre la cuerda ~a);\n" +"sólo se proporcionan etiquetas para los trastes ~a" -#: define-markup-commands.scm:2831 +#: ps-to-png.scm:70 #, scheme-format -msgid "defaulting to ~S pt" -msgstr "fijando al valor predeterminado ~S pt" +msgid "~a exited with status: ~S" +msgstr "~a salió con el estado: ~S" -#: define-markup-commands.scm:2984 +#: chord-entry.scm:52 #, scheme-format -msgid "not a valid duration string: ~a" -msgstr "no es una cadena válida de duración: ~a" +msgid "Spurious garbage following chord: ~A" +msgstr "Basurilla espúrea después del acorde: ~A" + +#: part-combiner.scm:598 +#, scheme-format +msgid "quoted music `~a' is empty" +msgstr "la cita musical «~a» está vacía" + +#: ly-syntax-constructors.scm:66 +#, scheme-format +msgid "~a function cannot return ~a" +msgstr "la función ~a no puede devolver ~a" -#: ly-syntax-constructors.scm:51 -msgid "Music head function must return Music object" -msgstr "La función principal de música debe devolver un objeto musical" +#: ly-syntax-constructors.scm:75 +#, scheme-format +msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgstr "tipo equivocado para el argumento ~a. Se esperaba ~a, se encontró ~s" -#: ly-syntax-constructors.scm:177 +#: ly-syntax-constructors.scm:188 #, scheme-format msgid "Invalid property operation ~a" msgstr "Operación de propiedad ~a inválida" + +#~ msgid "add midi-block to .ly file" +#~ msgstr "añadir bloque midi al archivo .ly" + +#~ msgid "Found infinity or nan in output. Substituting 0.0" +#~ msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0" + +#~ msgid "All classes must be the last in their matrilineal line." +#~ msgstr "Todas las clases deben ir al final de su línea de descendencia." + +#~ msgid "All classes must have a well-defined pedigree in the existing class hierarchy." +#~ msgstr "Todas las clases deben tener un pedigree bien definido en la jerarquía de clases existente." + +#~ msgid "event class ~A seems to be unused" +#~ msgstr "parece que la clase de evento ~A está sin usar" + +#~ msgid "translator listens to nonexisting event class ~A" +#~ msgstr "el traductor está escuchando a una clase de evento ~A que no existe" diff --git a/po/fr.po b/po/fr.po index d46f1a4313..e76c0f828d 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3,14 +3,14 @@ # French translation of GNU/lilypond - http//lilypond.org # Copyright © 2004 Free Software Foundation, Inc. # Michel Robitaille , 1996-2007. -# Jean-Charles Malahieude , 2007-2011 +# Jean-Charles Malahieude , 2007-2012 # msgid "" msgstr "" -"Project-Id-Version: lilypond 2.13.53\n" +"Project-Id-Version: lilypond 2.15.95\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" -"POT-Creation-Date: 2011-03-02 10:34+0100\n" -"PO-Revision-Date: 2011-04-06 19:38+0200\n" +"POT-Creation-Date: 2012-08-11 14:29+0200\n" +"PO-Revision-Date: 2012-08-14 19:48+0200\n" "Last-Translator: Jean-Charles Malahieude \n" "Language-Team: French \n" "Language: fr\n" @@ -19,64 +19,123 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: fontextract.py:25 +#: book_base.py:26 #, python-format -msgid "Scanning %s" -msgstr "Scannage de %s" +msgid "file not found: %s" +msgstr "fichier non trouvé : %s" -#: fontextract.py:70 +#: book_base.py:164 +msgid "Output function not implemented" +msgstr "Fonction de production non implémentée." + +#: book_latex.py:170 +msgid "cannot find \\begin{document} in LaTeX document" +msgstr "Impossible de trouver \\begin{document} dans le document LaTeX." + +#: book_latex.py:188 #, python-format -msgid "Extracted %s" -msgstr "Extraction de %s" +msgid "Running `%s' on file `%s' to detect default page settings.\n" +msgstr "" +"Traitement par « %s » du fichier « %s »\n" +"pour déterminer la mise en page par défaut.\n" -#: fontextract.py:85 +#: book_latex.py:209 book_texinfo.py:228 +msgid "Unable to auto-detect default settings:\n" +msgstr "Impossible de détecter automatiquement les réglages par défaut :\n" + +#: book_latex.py:221 book_texinfo.py:240 #, python-format -msgid "Writing fonts to %s" -msgstr "Écriture des fontes vers %s" +msgid "" +"Unable to auto-detect default settings:\n" +"%s" +msgstr "" +"Impossible de détecter automatiquement les réglages par défaut :\n" +"%s" -#: book_snippets.py:519 +#: book_snippets.py:409 #, python-format msgid "deprecated ly-option used: %s=%s" -msgstr "option ly-option obsolète : %s=%s" +msgstr "option ly-option obsolète : %s=%s" -#: book_snippets.py:521 +#: book_snippets.py:411 #, python-format msgid "compatibility mode translation: %s=%s" -msgstr "bascule en mode de compatibilité : %s=%s" +msgstr "bascule en mode de compatibilité : %s=%s" -#: book_snippets.py:524 +#: book_snippets.py:414 #, python-format msgid "deprecated ly-option used: %s" -msgstr "option ly-option obsolète : %s" +msgstr "option ly-option obsolète : %s" -#: book_snippets.py:526 +#: book_snippets.py:416 #, python-format msgid "compatibility mode translation: %s" -msgstr "bascule en mode de compatibilité : %s" +msgstr "bascule en mode de compatibilité : %s" -#: book_snippets.py:544 +#: book_snippets.py:533 #, python-format msgid "ignoring unknown ly option: %s" -msgstr "option ly inconnue et ignorée : %s" +msgstr "option ly inconnue et ignorée : %s" + +#: book_snippets.py:624 +#, python-format +msgid "Missing files: %s" +msgstr "Fichier absent : %s" + +#: book_snippets.py:654 +#, python-format +msgid "Could not overwrite file %s" +msgstr "Impossible d'écraser le fichier « %s »" -#: book_snippets.py:736 +#: book_snippets.py:741 #, python-format -msgid "Opening filter `%s'\n" -msgstr "Ouverture du filtre « %s »\n" +msgid "Running through filter `%s'" +msgstr "Passage par le filtre « %s »" -#: book_snippets.py:756 +#: book_snippets.py:761 #, python-format msgid "`%s' failed (%d)" -msgstr "« %s » a échoué (%d)" +msgstr "« %s » a échoué (%d)" -#: book_snippets.py:757 +#: book_snippets.py:762 msgid "The error log is as follows:" -msgstr "Voici le journal d'erreurs :" +msgstr "Voici le journal d'erreurs :" + +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "Lecture du fichier MusicXML « %s »...\n" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" +"%s : fichier en doublon mais contenu différent de l'original,\n" +"impression d'un différentiel entre les deux fichiers." + +#: book_snippets.py:922 +#, python-format +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." +msgstr "" +"%s : fichier en doublon mais contenu différent du fichier lilypond\n" +"converti, impression d'un différentiel entre les deux fichiers." + +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "Traitement de %s par texi2pdf pour détecter la mise en page par défaut.\n" #: convertrules.py:12 #, python-format -msgid "Not smart enough to convert %s" -msgstr "Pas assez d'intelligence pour convertir %s" +msgid "Not smart enough to convert %s." +msgstr "Pas assez intelligent pour convertir « %s »." #: convertrules.py:13 msgid "Please refer to the manual for details, and update manually." @@ -89,111 +148,115 @@ msgstr "" msgid "%s has been replaced by %s" msgstr "%s a été remplacé par %s" -#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66 -#: input.cc:109 +#: convertrules.py:24 lilylib.py:131 warn.cc:223 #, c-format, python-format msgid "warning: %s" msgstr "Avertissement : %s" -#: convertrules.py:49 convertrules.py:99 +#: convertrules.py:49 convertrules.py:94 msgid "\\header { key = concat + with + operator }" msgstr "\\header { clé = concat + avec + opérateur }" -#: convertrules.py:58 +#: convertrules.py:56 #, python-format msgid "deprecated %s" msgstr "%s est obsolète" -#: convertrules.py:70 +#: convertrules.py:65 msgid "deprecated \\textstyle, new \\key syntax" -msgstr "\\textstyle est obsolète ; utiliser désormais la syntaxe \\key" +msgstr "\\textstyle est obsolète ; utiliser désormais la syntaxe \\key" -#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084 -#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862 +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 msgid "bump version for release" msgstr "sauter de version pour mise à jour" -#: convertrules.py:103 +#: convertrules.py:97 msgid "new \\header format" msgstr "nouveau format de \\header" -#: convertrules.py:132 +#: convertrules.py:124 msgid "\\translator syntax" msgstr "syntaxe de \\translator" -#: convertrules.py:184 +#: convertrules.py:175 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" msgstr "\\repeat NUM Musique Alternative -> \\repeat FOLDSTR Musique Alternative" -#: convertrules.py:216 convertrules.py:699 convertrules.py:1383 -#: convertrules.py:2378 +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 #, python-format msgid "deprecate %s" msgstr "%s obsolète" -#: convertrules.py:290 +#: convertrules.py:279 #, python-format msgid "deprecate %s " msgstr "%s obsolète" -#: convertrules.py:319 +#: convertrules.py:305 msgid "new \\notenames format" msgstr "nouveau format de \\notenames" -#: convertrules.py:337 +#: convertrules.py:321 msgid "new tremolo format" msgstr "nouveau format de tremolo" -#: convertrules.py:342 +#: convertrules.py:325 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" -msgstr "Staff_margin_engraver est obsolète ; utiliser Instrument_name_engraver" +msgstr "Staff_margin_engraver est obsolète ; utiliser Instrument_name_engraver" -#: convertrules.py:395 -msgid "change property definiton case (eg. onevoice -> oneVoice)" -msgstr "modifier la casse pour définir une propriété (p.ex. onevoice -> oneVoice)" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" +msgstr "modifier la casse pour définir une propriété (par ex. onevoice -> oneVoice)" -#: convertrules.py:457 +#: convertrules.py:437 msgid "new \\textscript markup text" msgstr "nouvelle étiquette de texte \\textscript" -#: convertrules.py:530 +#: convertrules.py:509 #, python-format msgid "identifier names: %s" -msgstr "Nom des identificateurs : %s" +msgstr "Nom des identificateurs : %s" -#: convertrules.py:569 +#: convertrules.py:548 msgid "point-and-click argument changed to procedure." msgstr "L'argument de point-and-click a été changé en procédure." -#: convertrules.py:611 +#: convertrules.py:590 msgid "semicolons removed" msgstr "Suppression des points-virgules" #. 40 ? -#: convertrules.py:654 +#: convertrules.py:633 #, python-format msgid "%s property names" msgstr "%s noms de propriété" -#: convertrules.py:724 +#: convertrules.py:703 msgid "automaticMelismata turned on by default" msgstr "automaticMelismata est activé par défaut." -#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942 -#: convertrules.py:2189 +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "automaticMelismata est activé par défaut depuis la version 1.5.67." + +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format msgid "remove %s" msgstr "Retrait de %s" -#: convertrules.py:1001 convertrules.py:1005 +#: convertrules.py:977 convertrules.py:980 msgid "cluster syntax" msgstr "Syntaxe de cluster" -#: convertrules.py:1014 +#: convertrules.py:987 msgid "new Pedal style syntax" msgstr "Nouvelle syntaxe du style de Pedal" -#: convertrules.py:1273 +#: convertrules.py:1246 msgid "" "New relative mode,\n" "Postfix articulations, new text markup syntax, new chord syntax." @@ -201,30 +264,30 @@ msgstr "" "Nouveau mode relatif, articulations Postfix,\n" "nouvelle syntaxe des étiquettes de texte, nouvelle syntaxe d'accord." -#: convertrules.py:1286 +#: convertrules.py:1259 msgid "Remove - before articulation" msgstr "Retrait du - précédant l'articulation" -#: convertrules.py:1324 +#: convertrules.py:1294 #, python-format msgid "%s misspelling" msgstr "%s mal orthographié" -#: convertrules.py:1346 +#: convertrules.py:1313 msgid "Swap < > and << >>" msgstr "Interchanger < > et << >>" -#: convertrules.py:1349 +#: convertrules.py:1316 msgid "attempting automatic \\figures conversion. Check results!" msgstr "" -"tentative de convesion automatique des \\figures. \n" -"Résultats à vérifier !" +"tentative de conversion automatique des \\figures.\n" +"Résultats à vérifier !" -#: convertrules.py:1400 +#: convertrules.py:1362 msgid "Use Scheme code to construct arbitrary note events." msgstr "Utilisation de code Scheme pour construire des événements note arbitraires." -#: convertrules.py:1407 +#: convertrules.py:1369 msgid "" "use symbolic constants for alterations,\n" "remove \\outputproperty, move ly:verbose into ly:get-option" @@ -232,7 +295,7 @@ msgstr "" "Utilisation de constantes symboliques pour les altérations,\n" "suppression de \\outputproperty, ly:verbose devient ly:get-option" -#: convertrules.py:1432 +#: convertrules.py:1394 #, python-format msgid "" "\\outputproperty found,\n" @@ -242,14 +305,14 @@ msgid "" "\n" "as a substitution text." msgstr "" -"Un \\outputproperty a été détecté ;\n" +"Un \\outputproperty a été détecté ;\n" "éditer manuellement, en utilisant\n" "\n" " \\applyoutput #(outputproperty-compatibility %s '%s )\n" "\n" "comme texte de substitution." -#: convertrules.py:1446 +#: convertrules.py:1406 msgid "" "The alteration field of Scheme pitches was multiplied by 2\n" "to support quarter tone accidentals. You must update the following constructs manually:\n" @@ -257,22 +320,22 @@ msgid "" "* calls of ly:make-pitch and ly:pitch-alteration\n" "* keySignature settings made with \\property\n" msgstr "" -"Pour pouvoir tenir compte des quarts de ton en codage Scheme, \n" +"Pour pouvoir tenir compte des quarts de ton en codage Scheme,\n" "le nombre d'arguments d'une altération a été doublé.\n" -"Les constructions suivantes doivent être adaptées manuellement :\n" +"Les constructions suivantes doivent être adaptées manuellement :\n" "\n" "* appels à ly:make-pitch et ly:pitch-alteration\n" "* recours à \\property pour définir keySignature\n" -#: convertrules.py:1493 +#: convertrules.py:1449 msgid "removal of automaticMelismata; use melismaBusyProperties instead." msgstr "Suppression de automaticMelismata au profit de melismaBusyProperties." -#: convertrules.py:1600 +#: convertrules.py:1556 msgid "\\partcombine syntax change to \\newpartcombine" msgstr "La syntaxe de \\partcombine évolue avec \\newpartcombine" -#: convertrules.py:1628 +#: convertrules.py:1581 msgid "" "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" "Harmonic notes. Thread context removed. Lyrics context removed." @@ -280,61 +343,62 @@ msgstr "" "Changements de notation pour percussions. Suppression de \\chordmodifiers\n" "et \\notenames. Notes harmoniques. Contextes Thread et Lyrics supprimés." -#: convertrules.py:1632 +#: convertrules.py:1585 msgid "Drums found. Enclose drum notes in \\drummode" msgstr "Il y a des percussions. Encadrer leurs notes dans un \\drummode." -#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format msgid "" "\n" "%s found. Check file manually!\n" msgstr "" "\n" -"Détection de %s. Vérifier le fichier manuellement !\n" +"Détection de %s. Vérifier le fichier manuellement !\n" -#: convertrules.py:1643 +#: convertrules.py:1596 msgid "Drum notation" msgstr "Notation de percussions" -#: convertrules.py:1702 +#: convertrules.py:1655 msgid "new syntax for property settings:" -msgstr "nouvelle syntaxe des réglages de propriétés :" +msgstr "nouvelle syntaxe des réglages de propriétés :" -#: convertrules.py:1728 +#: convertrules.py:1681 msgid "Property setting syntax in \\translator{ }" msgstr "Syntaxe pour régler une propriété dans \\translator{ }" -#: convertrules.py:1767 +#: convertrules.py:1720 msgid "Scheme grob function renaming" msgstr "Renommage de fonction grob Scheme" -#: convertrules.py:1780 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 #, python-format -msgid "use %s" -msgstr "Utilisation de %s" +msgid "Use %s\n" +msgstr "Utilisation de %s\n" -#: convertrules.py:1797 +#: convertrules.py:1747 msgid "More Scheme function renaming" msgstr "Renommage d'autres fonctions Scheme" -#: convertrules.py:1924 +#: convertrules.py:1871 msgid "" "Page layout has been changed, using paper size and margins.\n" "textheight is no longer used.\n" msgstr "" "La mise en page a été modifiée, utilisant la taille du papier et les marges.\n" -"« textheight » n'est plus utilisé.\n" +"« textheight » n'est plus utilisé.\n" -#: convertrules.py:2010 +#: convertrules.py:1957 msgid "" "\\foo -> \\foomode (for chords, notes, etc.)\n" "fold \\new FooContext \\foomode into \\foo." msgstr "" "\\toto -> \\totomode (pour accords, notes, etc.)\n" -"transforme « \\new TotoContext \\totomode » en \\toto." +"transforme « \\new TotoContext \\totomode » en \\toto." -#: convertrules.py:2048 +#: convertrules.py:1995 msgid "" "staff size should be changed at top-level\n" "with\n" @@ -348,40 +412,40 @@ msgstr "" " #(set-global-staff-size )\n" "\n" -#: convertrules.py:2068 +#: convertrules.py:2015 msgid "regularize other identifiers" msgstr "Normalisation d'autres identifiants" -#: convertrules.py:2136 +#: convertrules.py:2083 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" msgstr "\\encoding : recodage latin1..utf-8. Suppression de ly:point-and-click" -#: convertrules.py:2149 +#: convertrules.py:2094 msgid "LilyPond source must be UTF-8" msgstr "Le fichier source LilyPond doit être codé en UTF-8." -#: convertrules.py:2152 +#: convertrules.py:2097 msgid "Try the texstrings backend" msgstr "Essayer le moteur texstrings (texstrings backend)." -#: convertrules.py:2155 +#: convertrules.py:2100 #, python-format msgid "Do something like: %s" -msgstr "Faites quelque chose comme : %s" +msgstr "Faites quelque chose comme : %s" -#: convertrules.py:2158 +#: convertrules.py:2103 msgid "Or save as UTF-8 in your editor" -msgstr "ou sauvegardez en format UTF-8 à l'aide de votre éditeur" +msgstr "ou sauvegardez au format UTF-8 à l'aide de votre éditeur" -#: convertrules.py:2212 +#: convertrules.py:2153 msgid "warn about auto beam settings" msgstr "Avertissement au sujet des ligatures automatiques" -#: convertrules.py:2217 +#: convertrules.py:2157 msgid "auto beam settings" msgstr "réglage des ligatures automatiques" -#: convertrules.py:2219 +#: convertrules.py:2158 msgid "" "\n" "Auto beam settings must now specify each interesting moment in a measure\n" @@ -391,90 +455,90 @@ msgstr "" "Le réglage des ligatures automatiques doit explicitement spécifier chaque\n" "moment de la mesure. 1/4 ne prend désormais plus en charge 1/2 et 3/4.\n" -#: convertrules.py:2333 +#: convertrules.py:2271 msgid "verticalAlignmentChildCallback has been deprecated" msgstr "verticalAlignmentChildCallback est désuet" -#: convertrules.py:2337 +#: convertrules.py:2276 msgid "Remove callbacks property, deprecate XY-extent-callback." msgstr "Suppression des propriétés de rappel, les XY-extent-callback sont obsolètes." -#: convertrules.py:2358 +#: convertrules.py:2297 msgid "Use grob closures iso. XY-offset-callbacks." msgstr "Utilisation des clôtures de grob comme avec XY-offset-callbacks." -#: convertrules.py:2420 +#: convertrules.py:2359 msgid "foobar -> foo-bar for \\paper, \\layout" msgstr "taratata -> tara-tata pour \\paper et \\layout" -#: convertrules.py:2530 +#: convertrules.py:2469 msgid "deprecate \\tempo in \\midi" msgstr "\\tempo au sein d'une section \\midi est obsolète" -#: convertrules.py:2583 +#: convertrules.py:2522 msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "cautionary-style est désuet. Utilisation des propriétés AccidentalCautionary." -#: convertrules.py:2596 +#: convertrules.py:2535 msgid "Rename accidental glyphs, use glyph-name-alist." msgstr "Renommage des glyphes d'altération, utilisation de glyph-name-alist." -#: convertrules.py:2651 -msgid "edge-text settings for TextSpanner." -msgstr "réglages des limites de texte pour TextSpanner." +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" +msgstr "réglages des limites de texte pour TextSpanner" -#: convertrules.py:2652 +#: convertrules.py:2591 #, python-format msgid "" "Use\n" "\n" "%s" msgstr "" -"Utiliser dorénavant \n" +"Utiliser dorénavant\n" "\n" "%s" -#: convertrules.py:2685 +#: convertrules.py:2624 msgid "Use the `alignment-offsets' sub-property of\n" -msgstr "Utiliser la sous-propriété `alignment-offsets' de\n" +msgstr "Utiliser la sous-propriété « alignment-offsets » de\n" -#: convertrules.py:2686 +#: convertrules.py:2625 msgid "NonMusicalPaperColumn #'line-break-system-details\n" msgstr "NonMusicalPaperColumn #'line-break-system-details\n" -#: convertrules.py:2687 +#: convertrules.py:2626 msgid "to set fixed distances between staves.\n" msgstr "pour définir un espacement fixe des systèmes.\n" -#: convertrules.py:2699 +#: convertrules.py:2638 msgid "Use #'style not #'dash-fraction to select solid/dashed lines." msgstr "Pour des lignes continues ou pointillées, utilisez #'style, pas #'dash-fraction." -#: convertrules.py:2705 -msgid "all settings related to dashed lines.\n" -msgstr "tous les réglages concernant les lignes pointillées.\n" +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "tous les réglages concernant les lignes pointillées" -#: convertrules.py:2706 +#: convertrules.py:2645 msgid "Use \\override ... #'style = #'line for solid lines and\n" msgstr "Utiliser \\override ... #'style = #'line pour des lignes pleines, et\n" -#: convertrules.py:2707 +#: convertrules.py:2646 msgid "\t\\override ... #'style = #'dashed-line for dashed lines." msgstr "\t\\override ... #'style = #'dashed-line pour des lignes pointillées." -#: convertrules.py:2743 +#: convertrules.py:2682 msgid "" "metronomeMarkFormatter uses text markup as second argument,\n" "fret diagram properties moved to fret-diagram-details." msgstr "" "metronomeMarkFormatter prend une étiquette en deuxième argument,\n" -"les propriétés de tablature sont désormais dans fret-diagram-details." +"les propriétés des diagrammes de fret sont désormais dans fret-diagram-details." -#: convertrules.py:2748 +#: convertrules.py:2688 msgid "metronomeMarkFormatter got an additional text argument.\n" msgstr "metronomeMarkFormatter prend un argument textuel suplémentaire.\n" -#: convertrules.py:2749 +#: convertrules.py:2689 #, python-format msgid "" "The function assigned to Score.metronomeMarkFunction now uses the signature\n" @@ -483,43 +547,48 @@ msgstr "" "La fonction assignée à Score.metronomeMarkFunction utilise la signature\n" "%s" -#: convertrules.py:2812 -msgid "\\put-adjacent argument order.\n" -msgstr "ordre de l'argument \\put-adjacent\n" +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "%s va dans les propriétés de fret-diagram" + +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" +msgstr "ordre de l'argument \\put-adjacent" -#: convertrules.py:2813 +#: convertrules.py:2752 msgid "Axis and direction now come before markups:\n" -msgstr "Axe et direction doivent précéder les étiquettes :\n" +msgstr "Axe et direction doivent précéder les étiquettes :\n" -#: convertrules.py:2814 +#: convertrules.py:2753 msgid "\\put-adjacent axis dir markup markup." msgstr "\\put-adjacent axe direction étiquette étiquette." -#: convertrules.py:2845 -msgid "re-definition of InnerStaffGroup.\n" -msgstr "Redéfinition de InnerStaffGroup.\n" +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" +msgstr "Redéfinition de InnerStaffGroup" -#: convertrules.py:2851 -msgid "re-definition of InnerChoirStaff.\n" -msgstr "Redéfinition de InnerChoirStaff.\n" +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" +msgstr "Redéfinition de InnerChoirStaff" -#: convertrules.py:2861 +#: convertrules.py:2799 msgid "Syntax changes for \\addChordShape and \\chord-shape" msgstr "Changement de syntaxe pour \\addChordShape et \\chord-shape" -#: convertrules.py:2866 +#: convertrules.py:2804 msgid "stringTuning must be added to addChordShape call.\n" msgstr "stringTuning est requis lors de l'appel à addChordShape.\n" -#: convertrules.py:2872 +#: convertrules.py:2809 msgid "stringTuning must be added to chord-shape call.\n" msgstr "stringTuning est requis lors de l'appel à chord-shape.\n" -#: convertrules.py:2879 +#: convertrules.py:2815 msgid "Remove oldaddlyrics" msgstr "Suppression de oldaddlyrics" -#: convertrules.py:2883 +#: convertrules.py:2819 msgid "" "oldaddlyrics is no longer supported. \n" " Use addlyrics or lyrsicsto instead.\n" @@ -527,19 +596,19 @@ msgstr "" "oldaddlyrics n'est désormais plus pris en charge.\n" " Utilisez maintenant addlyrics ou lyricsto.\n" -#: convertrules.py:2889 +#: convertrules.py:2825 msgid "" "keySignature property not reversed any more\n" "MIDI 47: orchestral strings -> orchestral harp" msgstr "" -"Le propriété keySignature n'est plus inversée\n" +"La propriété keySignature n'est plus inversée\n" "MIDI 47 : orchestral strings -> orchestral harp" -#: convertrules.py:2894 +#: convertrules.py:2830 msgid "The alist for Staff.keySignature is no longer in reversed order.\n" msgstr "La liste associative pour Staff.keySignature n'est plus en ordre inverse.\n" -#: convertrules.py:2900 +#: convertrules.py:2836 msgid "" "\\bar \".\" now produces a thick barline\n" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" @@ -549,15 +618,15 @@ msgstr "" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" "Les paramètres du pointillé des liaisons sont gérés par dash-definition." -#: convertrules.py:2906 +#: convertrules.py:2842 msgid "\\bar \".\" now produces a thick barline.\n" msgstr "\\bar \".\" produit désormais une barre épaisse.\n" -#: convertrules.py:2912 +#: convertrules.py:2848 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" msgstr "Les paramètres du pointillé des liaisons sont gérés par `dash-details.\n" -#: convertrules.py:2917 +#: convertrules.py:2853 msgid "" "Autobeaming rules have changed. override-auto-beam-setting and\n" "revert-auto-beam-setting have been eliminated.\n" @@ -571,54 +640,46 @@ msgid "" "Explicit dynamics context definition from `Piano centered dynamics'\n" "template replaced by new `Dynamics' context." msgstr "" -"Les règles de ligature automatique ont été revues.\n" +"Les règles de ligature automatique ont été revues :\n" "override-auto-beam-setting et revert-auto-beam-setting ont disparu,\n" -"remplacés par \\overrideBeamSettings.\n" +"remplacés par \\overrideBeamSettings ;\n" "beatGrouping a disparu.\n" -"Modification des réglages de mise en forme verticale :\n" +"Modification des réglages de mise en forme verticale :\n" "ly:system-start-text::print -> system-start-text::print\n" "Beam #'thickness -> Beam #'beam-thickness\n" "ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n" "ly:ambitus::print -> ambitus::print\n" "La définition du contexte de nuances explicites du canevas\n" -"« Piano et nuances entre les portées » est remplacée par le nouveau\n" -"contexte `Dynamics'." +"« Piano et nuances entre les portées » est remplacée par le nouveau\n" +"contexte « Dynamics »." -#: convertrules.py:2931 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now overriden with \\overrideBeamSettings.\n" +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" msgstr "" -"override-auto-beam-setting.\n" " L'introduction d'une dérogation aux ligatures automatiques se fait\n" "désormais avec \\overrideBeamSettings.\n" -#: convertrules.py:2936 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now reverted with \\revertBeamSettings.\n" +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" msgstr "" -"override-auto-beam-setting.\n" " La suppression d'une dérogation aux ligatures automatiques se fait\n" " désormais avec \\revertBeamSettings.\n" -#: convertrules.py:2941 +#: convertrules.py:2878 msgid "" -"beatGrouping. \n" -" beatGrouping with a specified context must now be accomplished with\n" +" beatGrouping with a specified context must now be accomplished with\n" " \\overrideBeamSettings.\n" msgstr "" -"beatGrouping.\n" " beatGrouping dans un contexte spécifique s'accomplit désormais avec\n" " \\overrideBeamSettings.\n" -#: convertrules.py:2947 +#: convertrules.py:2884 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" msgstr "" -"alignment-offsets est devenu alignment-distances : il faut désormais\n" +"alignment-offsets est devenu alignment-distances : il faut désormais\n" "spécifier la distance entre les portées au lieu de leur offset.\n" -#: convertrules.py:2958 +#: convertrules.py:2895 msgid "" "Remove obsolete engravers/translators: Note_swallow_translator,\n" "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" @@ -630,78 +691,63 @@ msgstr "" "Swallow_performer et String_number_engraver.\n" "Apparition de nouvelles variables pour l'espacement vertical." -#: convertrules.py:2989 -msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" -msgstr "minimum-Y-extent : l'espacement vertical ne dépend plus du Y-extent d'un VerticalAxisGroup.\n" +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" +msgstr "L'espacement vertical ne dépend plus du Y-extent d'un VerticalAxisGroup.\n" -#: convertrules.py:2995 +#: convertrules.py:2932 msgid "Unify fetaNumber and fetaDynamic encodings" msgstr "Uniformisation des encodages de fetaNumber et fetaDynamic." -#: convertrules.py:3000 +#: convertrules.py:2937 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" -#: convertrules.py:3011 +#: convertrules.py:2948 msgid "\\cresc etc. are now postfix operators" msgstr "\\cresc etc. sont désormais des opérateurs postfix" -#: convertrules.py:3017 +#: convertrules.py:2960 msgid "" "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" msgstr "" -"Élimination de beamSettings, beatLength, \\setBeatGrouping, \n" +"Élimination de beamSettings, beatLength, \\setBeatGrouping,\n" "\\overrideBeamSettings et \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" -#: convertrules.py:3035 -msgid "\\overrideBeamSettings. Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" -msgstr "" -"\\overrideBeamSettings.\n" -"Utiliser \\set beamExceptions ou \\overrideTimeSignatureSettings.\n" - -#: convertrules.py:3039 -msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" -msgstr "" -"\\revertBeamSettings.\n" -"Utiliser \\set beamExceptions ou \\revertTimeSignatureSettings.\n" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" +msgstr "Utiliser \\set beamExceptions ou \\overrideTimeSignatureSettings.\n" -#: convertrules.py:3043 -msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n" -msgstr "" -"beamSettings.\n" -"Utiliser baseMoment, beatStructure et beamExceptions.\n" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "Utiliser \\set beamExceptions ou \\revertTimeSignatureSettings.\n" -#: convertrules.py:3047 -msgid "beatLength. Use baseMoment and beatStructure.\n" -msgstr "" -"beatLength.\n" -"Utiliser baseMoment et beatStructure.\n" +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" +msgstr "Utiliser baseMoment, beatStructure et beamExceptions.\n" -#: convertrules.py:3051 -msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" -msgstr "" -"setbeatGrouping.\n" -"Utiliser baseMoment et beatStructure.\n" +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" +msgstr "Utiliser baseMoment et beatStructure.\n" -#: convertrules.py:3056 +#: convertrules.py:2999 msgid "" "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" "Deprecate negative dash-period for hidden lines: use #'style = #'none instead." msgstr "" -"Diagrammes pour vents : taille, épaisseur et graphique deviennent des \n" -"propriétés.\n" -"Dépréciation des longueurs de tiret négatives pour des lignes masquées ;\n" +"Diagramme pour vent : taille, épaisseur et graphique deviennent des propriétés.\n" +"Dépréciation des longueurs de tiret négatives pour des lignes masquées ;\n" "utiliser désormais #'style = #'none" -#: convertrules.py:3061 -msgid "woodwind-diagrams. Move size, thickness, and graphic to properties. Argument should be just the key list.\n" +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" msgstr "" -"Diagrammes pour vents (woodwind-diagrams). Taille, épaisseur et graphique\n" -"sont des propriétés. L'argument devrait ne contenir que la liste des clés.\n" +"Taille, épaisseur et graphique sont des propriétés.\n" +"L'argument devrait ne contenir que la liste des clés.\n" -#: convertrules.py:3069 +#: convertrules.py:3012 msgid "" "Rename vertical spacing variables.\n" "Add fretboard-table argument to savePredefinedFretboard." @@ -709,23 +755,23 @@ msgstr "" "Renommage des variables d'espacement vertical.\n" "Ajout de l'argument fretboard-table à savePredefinedFretboard." -#: convertrules.py:3087 +#: convertrules.py:3030 msgid "Rename vertical spacing grob properties." msgstr "Renommage des propriétés d'objet en matière d'espacement vertical." -#: convertrules.py:3103 +#: convertrules.py:3046 msgid "Remove \\paper variables head-separation and foot-separation." msgstr "Suppression des variables de \\paper head-separation et foot-separation." -#: convertrules.py:3108 +#: convertrules.py:3050 msgid "Adjust settings for top-system-spacing instead.\n" msgstr "Ajustez plutôt le réglage de top-system-spacing.\n" -#: convertrules.py:3113 +#: convertrules.py:3054 msgid "Adjust settings for last-bottom-spacing instead.\n" msgstr "Ajustez plutôt le réglage de last-bottom-spacing.\n" -#: convertrules.py:3119 +#: convertrules.py:3060 msgid "" "Rename space to basic-distance in various spacing alists.\n" "Remove HarmonicParenthesesItem grob." @@ -733,531 +779,386 @@ msgstr "" "space est renommé basic-distance dans diverses variables liées à l'espacement.\n" "Suppression du grob HarmonicParenthesesItem." -#: convertrules.py:3127 +#: convertrules.py:3067 msgid "HarmonicParenthesesItem has been eliminated.\n" msgstr "Élimination de HarmonicParenthesesItem.\n" -#: convertrules.py:3128 +#: convertrules.py:3068 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" msgstr "Les parenthèses harmoniques sont attachées au grob TabNoteHead.\n" -#: convertrules.py:3133 +#: convertrules.py:3073 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" msgstr "Suppression du contexte dans overrideTimeSignatureSettings et revertTimeSignatureSettings.\n" -#: convertrules.py:3140 +#: convertrules.py:3080 msgid "" "Change stringTunings from a list of semitones to a list of pitches.\n" "Change tenor and baritone ukulele names in string tunings.\n" "Generate messages for manual conversion of vertical spacing if required." msgstr "" -"stringTunings : d'une liste de demi-tons, devient une liste de hauteurs.\n" +"stringTunings : d'une liste de demi-tons, devient une liste de hauteurs.\n" "Les noms de ukulele tenor et baryton sont modifiés en accordage personnalisé.\n" "Génération d'un message au besoin pour les conversions liées à l'espacement vertical." -#: convertrules.py:3180 -msgid "Vertical spacing changes might affect user-defined contexts. " +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." msgstr "" "Les modifications apportées à l'espacement vertical peuvent mettre en\n" -"péril les contextes personnalisés." +"péril certains contextes personnalisés." -#: convertrules.py:3185 +#: convertrules.py:3129 msgid "Replace bar-size with bar-extent." msgstr "bar-size devient bar-extent." -#: convertrules.py:3197 +#: convertrules.py:3141 msgid "Woodwind diagrams: Changes to the clarinet diagram." -msgstr "Diagrammes pour vents : modifications touchant la clarinette." +msgstr "Diagrammes pour vents : modifications touchant la clarinette." + +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "Les doigtés pour clarinette sont plus adaptés à l'instrument actuel.\n" + +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "Gestion des notes de bas de page non automatisée." + +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "" +"Pour une gestion non automatisée des notes de bas de page, n'oubliez pas\n" +"de mentionner footnote-auto-numbering = ##f dans le bloc \\paper.\n" + +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "MultiMeasureRest : modification des propriétés internes." + +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" +msgstr "" +"Cette propriété interne est remplacée par round-up-to-longer-rest,\n" +"round-up-exceptions et usable-duration-logs.\n" + +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "Déplacement de certaine propriétés de Stem vers le nouvel objet Flag" -#: convertrules.py:3201 -msgid "woodwind-diagrams. Clarinet fingering changed to reflect actual anatomy of instrument.\n" -msgstr "Diagrammes pour vents : doigtés plus adaptés à la clarinette actuelle.\n" +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" +msgstr "consistent-broken-slope est désormais géré par des rappels de position.\n" -#: book_base.py:24 +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" +msgstr "" +"input/regression/beam-broken-classic.ly indique comment sont désormais\n" +"gérées les ligatures tronquées.\n" + +#: convertrules.py:3368 +msgid "beamExceptions controls whole-measure beaming." +msgstr "Une ligature sur la mesure est gérée par beamExceptions" + +#: fontextract.py:25 #, python-format -msgid "file not found: %s" -msgstr "fichier non trouvé : %s" +msgid "Scanning %s" +msgstr "Scannage de %s" -#: book_base.py:161 -msgid "Output function not implemented" -msgstr "Fonction de production non implémentée." +#: fontextract.py:70 +#, python-format +msgid "Extracted %s" +msgstr "Extraction de %s" + +#: fontextract.py:85 +#, python-format +msgid "Writing fonts to %s" +msgstr "Écriture des fontes vers %s" + +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "Niveau de journalisation fixé à %s" + +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "« %s » n'est pas un niveau de journalisation reconnu." -#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115 -#: input.cc:123 +#: lilylib.py:128 warn.cc:211 #, c-format, python-format msgid "error: %s" msgstr "Erreur : %s" -#: lilylib.py:124 lilylib.py:175 +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "Traitement de « %s.ly »" + +#: lilylib.py:189 lilylib.py:250 #, python-format msgid "Invoking `%s'" -msgstr "Appel de « %s »" +msgstr "Appel de « %s »" -#: lilylib.py:126 lilylib.py:177 +#: lilylib.py:191 lilylib.py:252 #, python-format msgid "Running %s..." msgstr "Exécution de %s..." -#: lilylib.py:253 +#: lilylib.py:328 #, python-format msgid "Usage: %s" msgstr "Utilisation : %s" -#: musicexp.py:216 musicexp.py:221 +#: musicexp.py:224 musicexp.py:229 msgid "Language does not support microtones contained in the piece" msgstr "Le langage ne prend pas en charge les microintervalles de ce morceau" -#: musicexp.py:483 +#: musicexp.py:491 msgid "Tuplet brackets of curved shape are not correctly implemented" msgstr "La courbure des crochets de nolet n'est pas implémentée de manière optimale" -#: musicexp.py:669 +#: musicexp.py:677 #, python-format msgid "unable to set the music %(music)s for the repeat %(repeat)s" msgstr "impossible d'affecter le fragment %(music)s à la répétition %(repeat)s" -#: musicexp.py:678 +#: musicexp.py:686 msgid "encountered repeat without body" msgstr "reprise vide détectée" #. no self.elements! -#: musicexp.py:848 +#: musicexp.py:856 #, python-format msgid "Grace note with no following music: %s" -msgstr "Apoggiature non suivie de musique : %s" +msgstr "Apoggiature non suivie de musique : %s" -#: musicexp.py:1010 +#: musicexp.py:1018 #, python-format msgid "Invalid octave shift size found: %s. Using no shift." -msgstr "Décalage d'octave invalide : %s. Décalage non appliqué." +msgstr "Décalage d'octave invalide : %s. Décalage non appliqué." -#: musicexp.py:1468 +#: musicexp.py:1476 #, python-format msgid "Unable to convert alteration %s to a lilypond expression" msgstr "Impossible de convertir l'altération %s en expression LilyPond" #. TODO: Handle pieces without a time signature! -#: musicxml.py:358 +#: musicxml.py:361 msgid "Senza-misura time signatures are not yet supported!" -msgstr "Les métriques « senza-misura » ne sont pas prises en charge." +msgstr "Les métriques « senza-misura » ne sont pas prises en charge." -#: musicxml.py:376 +#: musicxml.py:379 msgid "Unable to interpret time signature! Falling back to 4/4." -msgstr "Métrique non interprétable ; retour au 4/4." +msgstr "Métrique non interprétable ; retour au 4/4." -#: musicxml.py:432 +#: musicxml.py:435 #, python-format msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" msgstr "" -"Octave d'altération indiquée pour une altération numéro %s inexistante ;\n" -"index d'altération disponibles : 1 à %s" +"Octave d'altération indiquée pour une altération numéro %s inexistante ;\n" +"index d'altération disponibles : 1 à %s" -#: musicxml.py:520 +#: musicxml.py:523 #, python-format msgid "Unable to find instrument for ID=%s\n" msgstr "Aucun instrument ne correspond à l'ID %s\n" -#: book_latex.py:156 -msgid "cannot find \\begin{document} in LaTeX document" -msgstr "Impossible de trouver \\begin{document} dans le document LaTeX." +#: abc2ly.py:1376 convert-ly.py:81 lilypond-book.py:122 midi2ly.py:1044 +#, python-format +msgid "%s [OPTION]... FILE" +msgstr "%s [OPTIONS]... FICHIER" -#: musicxml2ly.py:223 +#: abc2ly.py:1377 #, python-format -msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" +msgid "" +"abc2ly converts ABC music files (see\n" +"%s) to LilyPond input.\n" msgstr "" -"Détection d'un fichier créé par %s et contenant des informations de ligature\n" -"erronées. Toutes les informations de ligature du fichier MusicXML seront\n" -"ignorées." +"abc2ly convertit les fichiers musicaux ABC (voir\n" +"%s) au format LilyPond.\n" -#: musicxml2ly.py:239 musicxml2ly.py:241 -#, python-format -msgid "Unprocessed PartGroupInfo %s encountered" -msgstr "PartGroupInfo %s détecté, mais non traité" +#: abc2ly.py:1385 convert-ly.py:88 etf2ly.py:1208 lilypond-book.py:231 +#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:174 +msgid "show version number and exit" +msgstr "affiche le numéro de version et quitte" -#: musicxml2ly.py:494 -#, python-format -msgid "Encountered note at %s without type and duration (=%s)" -msgstr "Une note se trouve en %s, sans type ni durée (=%s)" +#: abc2ly.py:1388 convert-ly.py:92 etf2ly.py:1204 lilypond-book.py:140 +#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:153 +msgid "show this help and exit" +msgstr "visualiser cette aide et quitter" -#: musicxml2ly.py:514 -#, python-format -msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" -msgstr "" -"Durée rationnelle au dénominateur de %s détectée ;\n" -"impossible de traduire en durée LilyPond" +#: abc2ly.py:1391 etf2ly.py:1209 midi2ly.py:1071 +msgid "write output to FILE" +msgstr "produit la sortie dans le FICHIER" -#: musicxml2ly.py:761 -msgid "Unable to extract key signature!" -msgstr "Impossible de déterminer l'armure." +#: abc2ly.py:1394 +msgid "be strict about success" +msgstr "être strict sur la réussite" -#: musicxml2ly.py:788 -#, python-format -msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" +#: abc2ly.py:1397 +msgid "preserve ABC's notion of beams" +msgstr "préserver la notion de ligature propre à ABC" + +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "n'affiche pas les messages de progression" + +#. Translators, please translate this string as +#. "Report bugs in English via %s", +#. or if there is a LilyPond users list or forum in your language +#. "Report bugs in English via %s or in YOUR_LANG via URI" +#: abc2ly.py:1403 convert-ly.py:146 etf2ly.py:1218 lilypond-book.py:258 +#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:285 +#, c-format, python-format +msgid "Report bugs via %s" msgstr "" -"%s : mode inconnu.\n" -"Devrait être « majeur », « mineur » ou « mode d'église »" +"Signalez tout bogue, en français à\n" +" http://lilypond-french-users.1298960.n2.nabble.com/\n" +"ou en anglais à\n" +"%s" -#: musicxml2ly.py:926 -#, python-format -msgid "Encountered unprocessed marker %s\n" -msgstr "Détection d'un marqueur non traité : %s\n" +#: convert-ly.py:46 +msgid "" +"Update LilyPond input to newer version. By default, update from the\n" +"version taken from the \\version command, to the current LilyPond version." +msgstr "" +"Mettre à jour le fichier source vers une version plus récente.\n" +"Par défaut, de la version indiquée par la commande \\version\n" +"vers la version courante de LilyPond." -#: musicxml2ly.py:1020 -#, python-format -msgid "unknown span event %s" -msgstr "Événement de prolongation inconnu : « %s »" +#: convert-ly.py:48 lilypond-book.py:82 +msgid "Examples:" +msgstr "Exemples :" -#: musicxml2ly.py:1030 +#: convert-ly.py:75 etf2ly.py:1191 lilypond-book.py:115 midi2ly.py:81 #, python-format -msgid "unknown span type %s for %s" -msgstr "%s n'est pas un type de prolongateur reconnu pour %s" +msgid "Copyright (c) %s by" +msgstr "Copyright (c) %s détenu par" -#: musicxml2ly.py:1450 -msgid "Unknown metronome mark, ignoring" -msgstr "Indication métronomique inconnue et ignorée." +#: convert-ly.py:77 etf2ly.py:1193 lilypond-book.py:117 midi2ly.py:83 +msgid "Distributed under terms of the GNU General Public License." +msgstr "Distribué selon les termes de la GNU General Public License." -#. TODO: Implement the other (more complex) way for tempo marks! -#: musicxml2ly.py:1455 -msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." -msgstr "" -"Les indications métronomiques aux relations complexes ( pour \n" -"MusicXML) n'ont pas encore été implémentées." +#: convert-ly.py:78 etf2ly.py:1194 lilypond-book.py:118 midi2ly.py:84 +msgid "It comes with NO WARRANTY." +msgstr "Le logiciel est distribué SANS GARANTIE." -#: musicxml2ly.py:1657 -#, python-format -msgid "Unable to convert chord type %s to lilypond." -msgstr "Impossible de convertir le type d'accord %s au format LilyPond" +#: convert-ly.py:96 convert-ly.py:137 +msgid "VERSION" +msgstr "VERSION" -#: musicxml2ly.py:1806 -#, python-format -msgid "drum %s type unknown, please add to instrument_drumtype_dict" +#: convert-ly.py:98 +msgid "start from VERSION [default: \\version found in file]" +msgstr "partir de la VERSION [par défaut : \\version trouvée dans le fichier]" + +#: convert-ly.py:101 +msgid "edit in place" +msgstr "éditer le fichier d'origine" + +#: convert-ly.py:105 lilypond-book.py:179 musicxml2ly.py:2627 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" msgstr "" -"%s n'est pas un type de percussion connu. \n" -"L'ajouter à instrument_drumtype_dict" +"Afficher les informations selon le niveau de LOGLEVEL\n" +"(NONE, ERROR, WARNING, PROGRESS (par défaut), DEBUG)" -#: musicxml2ly.py:1810 -msgid "cannot find suitable event" -msgstr "Aucun événement correspondant" +#: convert-ly.py:107 lilypond-book.py:163 lilypond-book.py:181 +#: musicxml2ly.py:2629 main.cc:167 +msgid "LOGLEVEL" +msgstr "LOGLEVEL" + +#: convert-ly.py:113 +msgid "do not add \\version command if missing" +msgstr "ne pas ajouter la commande \\version si elle est absente" -#: musicxml2ly.py:1958 +#: convert-ly.py:119 #, python-format -msgid "Negative skip %s (from position %s to %s)" -msgstr "Retour en arrière de %s (partant de %s et jusqu'à %s)" +msgid "force updating \\version number to %s" +msgstr "forcer la mise à jour de \\version à %s" -#: musicxml2ly.py:2099 +#: convert-ly.py:125 +msgid "only update \\version number if file is modified" +msgstr "ne changer le numéro de \\version que si le fichier est modifié" + +#: convert-ly.py:131 #, python-format -msgid "Negative skip found: from %s to %s, difference is %s" -msgstr "Retour en arrière, de %s à %s ; différence = %s" +msgid "show rules [default: -f 0, -t %s]" +msgstr "afficher les règles [par défaut : -f 0, -t %s]" -#: musicxml2ly.py:2180 +#: convert-ly.py:136 #, python-format -msgid "unexpected %s; expected %s or %s or %s" -msgstr "%s détecté, au lieu de %s, %s ou %s" +msgid "convert to VERSION [default: %s]" +msgstr "convertir jusqu'à la VERSION [par défaut : %s]" -#: musicxml2ly.py:2286 -msgid "Encountered closing slur, but no slur is open" -msgstr "Terminaison d'une liaison qui n'a pas été débutée" +#: convert-ly.py:141 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096 +#: main.cc:176 +msgid "show warranty and copyright" +msgstr "affiche les notices de garantie et du droit d'auteur" -#: musicxml2ly.py:2289 -msgid "Cannot have two simultaneous (closing) slurs" -msgstr "deux liaisons ne peuvent se terminer simultanément" +#: convert-ly.py:186 +msgid "Applying conversion: " +msgstr "Conversion en cours : " -#: musicxml2ly.py:2298 -msgid "Cannot have a slur inside another slur" -msgstr "des liaisons ne peuvent s'imbriquer" +#: convert-ly.py:202 +msgid "Error while converting" +msgstr "Erreur lors de la conversion" -#: musicxml2ly.py:2301 -msgid "Cannot have two simultaneous slurs" -msgstr "deux liaisons ne peuvent intervenir simultanément" +#: convert-ly.py:204 +msgid "Stopping at last successful rule" +msgstr "Arrêt à la dernière règle appliquée avec succès" -#: musicxml2ly.py:2435 +#: convert-ly.py:231 #, python-format -msgid "cannot simultaneously have more than one mode: %s" -msgstr "SVP, un seul mode à la fois : %s" +msgid "Processing `%s'... " +msgstr "Traitement de « %s »..." -#: musicxml2ly.py:2543 -msgid "Converting to LilyPond expressions..." -msgstr "Conversion en expressions LilyPond..." +#: convert-ly.py:338 +#, python-format +msgid "%s: Unable to open file" +msgstr "impossible d'ouvrir le fichier « %s »" -#: musicxml2ly.py:2554 -msgid "musicxml2ly [OPTION]... FILE.xml" -msgstr "musicxml2ly [options]... FICHIER.xml" +#: convert-ly.py:345 +#, python-format +msgid "%s: Unable to determine version. Skipping" +msgstr "" +"impossible de déterminer la version de « %s ».\n" +" Au suivant !" -#: musicxml2ly.py:2556 +#: convert-ly.py:350 +#, python-format msgid "" -"Convert MusicXML from FILE.xml to LilyPond input.\n" -"If the given filename is -, musicxml2ly reads from the command line.\n" +"%s: Invalid version string `%s' \n" +"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" msgstr "" -"Convertit FICHIER.xml (MusicXML) au format LilyPond.\n" -"Si le nom du fichier est « - », musicxml2ly lira la ligne de commande.\n" +"« %s » porte un numéro de version invalide : %s \n" +"Un numéro de version valide est formé de trois nombres séparés par un point,\n" +"comme par exemple « 2.8.12 »" -#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140 -#: convert-ly.py:98 etf2ly.py:1202 main.cc:157 -msgid "show this help and exit" -msgstr "visualiser cette aide et quitter" +#: etf2ly.py:1197 +#, python-format +msgid "%s [OPTION]... ETF-FILE" +msgstr "%s [OPTIONS]... FICHIER-ETF" -#: musicxml2ly.py:2566 +#: etf2ly.py:1198 msgid "" -"Copyright (c) 2005--2011 by\n" -" Han-Wen Nienhuys ,\n" -" Jan Nieuwenhuizen and\n" -" Reinhold Kainhofer \n" +"Enigma Transport Format is a format used by Coda Music Technology's\n" +"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" msgstr "" -"Copyright (c) 2005--2011 by\n" -" Han-Wen Nienhuys ,\n" -" Jan Nieuwenhuizen and\n" -" Reinhold Kainhofer \n" - -#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212 -#: convert-ly.py:94 etf2ly.py:1206 main.cc:168 -msgid "show version number and exit" -msgstr "afficher le numéro de version et quitter" +"Enigma Transport Format est utilisé par Finale, de Coda Music Technology.\n" +"etf2ly convertit partiellement un fichier ETF en un fichier LilyPond\n" +"exploitable.\n" -#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169 -msgid "be verbose" -msgstr "Passe en mode verbeux" +#: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659 +#: main.cc:159 main.cc:171 +msgid "FILE" +msgstr "FICHIER" -#: musicxml2ly.py:2591 -msgid "use lxml.etree; uses less memory and cpu time" +#: lilypond-book.py:80 +msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." msgstr "" -"utilise lxml.etree pour consommer moins de mémoire\n" -"et de temps processeur." +"Traite les extraits LilyPond dans un document HTML hybride, LaTeX,\n" +"texinfo ou Docbook." -#: musicxml2ly.py:2597 -msgid "input file is a zip-compressed MusicXML file" -msgstr "le fichier d'entrée est un fichier MusicXML compressé" - -#: musicxml2ly.py:2603 -msgid "convert pitches in relative mode (default)" -msgstr "convertit les hauteurs en mode relatif (par défaut)" - -#: musicxml2ly.py:2608 -msgid "convert pitches in absolute mode" -msgstr "convertit les hauteurs en mode absolu" - -#: musicxml2ly.py:2611 -msgid "LANG" -msgstr "LANG" - -#: musicxml2ly.py:2613 -msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" -msgstr "utilise une autre définition linguistique (LANG), p.ex. deutsch l'allemand" - -#: musicxml2ly.py:2619 -msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." -msgstr "" -"ne convertit pas les emplacements (^, _ ou -) des articulations, \n" -"nuances, etc." - -#: musicxml2ly.py:2625 -msgid "do not convert exact vertical positions of rests" -msgstr "ne convertit pas le positionnement absolu des silences" - -#: musicxml2ly.py:2631 -msgid "do not convert the exact page layout and breaks" -msgstr "ne convertit pas les sauts et la mise en page" - -#: musicxml2ly.py:2637 -msgid "do not convert beaming information, use lilypond's automatic beaming instead" -msgstr "" -"ne convertit pas les informations de ligature ; \n" -"laisse LilyPond gérer les ligatures automatiques" - -#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208 -#: main.cc:161 main.cc:166 -msgid "FILE" -msgstr "FICHIER" - -#: musicxml2ly.py:2645 -msgid "set output filename to FILE, stdout if -" -msgstr "produit la sortie dans FICHIER (stdout si -)" - -#. Translators, please translate this string as -#. "Report bugs in English via %s", -#. or if there is a LilyPond users list or forum in your language -#. "Report bugs in English via %s or in YOUR_LANG via URI" -#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234 -#: convert-ly.py:144 etf2ly.py:1216 main.cc:281 -#, c-format, python-format -msgid "Report bugs via %s" -msgstr "" -"Signalez tout bogue, en français à\n" -" http://lilypond-french-users.1298960.n2.nabble.com/\n" -"ou en anglais à\n" -"%s" - -#: musicxml2ly.py:2728 -#, python-format -msgid "unknown part in part-list: %s" -msgstr "la partie %s n'est pas mentionnée dans part-list" - -#: musicxml2ly.py:2790 -msgid "Input is compressed, extracting raw MusicXML data from stdin" -msgstr "" -"Le fichier d'entrée est compressé.\n" -"Extraction des données MusicXML brutes à partir de stdin" - -#: musicxml2ly.py:2793 -#, python-format -msgid "Input file %s is compressed, extracting raw MusicXML data" -msgstr "" -"Le fichier d'entrée (%s) est compressé.\n" -"Extraction des données MusicXML brutes" - -#: musicxml2ly.py:2823 -msgid "Reading MusicXML from Standard input ..." -msgstr "Lecture du fichier MusicXML à partir de l'entrée standard..." - -#: musicxml2ly.py:2825 -#, python-format -msgid "Reading MusicXML from %s ..." -msgstr "Lecture du fichier MusicXML %s..." - -#: musicxml2ly.py:2858 -#, python-format -msgid "Output to `%s'" -msgstr "Fichier de sortie : « %s »" - -#: musicxml2ly.py:2925 -#, python-format -msgid "Unable to find input file %s" -msgstr "Impossible de trouver le fichier d'entrée : « %s »" - -#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189 -#, python-format -msgid "Copyright (c) %s by" -msgstr "Copyright (c) %s détenu par" - -#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191 -msgid "Distributed under terms of the GNU General Public License." -msgstr "Distribué selon les termes de la GNU General Public License." - -#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192 -msgid "It comes with NO WARRANTY." -msgstr "Le logiciel est distribué SANS GARANTIE." - -#: midi2ly.py:99 -msgid "warning: " -msgstr "Avertissement : " - -#: midi2ly.py:102 midi2ly.py:1041 -msgid "error: " -msgstr "Erreur : " - -#: midi2ly.py:103 -msgid "Exiting... " -msgstr "Fin d'exécution... " - -#: midi2ly.py:960 -#, python-format -msgid "%s output to `%s'..." -msgstr "%s reproduit dans « %s »..." - -#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87 -#, python-format -msgid "%s [OPTION]... FILE" -msgstr "%s [OPTIONS]... FICHIER" - -#: midi2ly.py:973 -#, python-format -msgid "Convert %s to LilyPond input.\n" -msgstr "Convertir %s au format source LilyPond.\n" - -#: midi2ly.py:978 -msgid "print absolute pitches" -msgstr "Afficher des hauteurs absolues" - -#: midi2ly.py:980 midi2ly.py:1002 -msgid "DUR" -msgstr "DUR" - -#: midi2ly.py:981 -msgid "quantise note durations on DUR" -msgstr "Quantifier les durées de note d'après DUR" - -#: midi2ly.py:984 -msgid "print explicit durations" -msgstr "Écrit des durées explicites" - -#: midi2ly.py:989 -msgid "prepend FILE to output" -msgstr "ajout de FICHIER à la sortie" - -#: midi2ly.py:993 -msgid "set key: ALT=+sharps|-flats; MINOR=1" -msgstr "Définit l'armure : ALT=+dièse|-bémol; MINEUR=1" - -#: midi2ly.py:994 -msgid "ALT[:MINOR]" -msgstr "ALT[:MINEUR]" - -#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207 -msgid "write output to FILE" -msgstr "produire la sortie dans le FICHIER" - -#: midi2ly.py:999 -msgid "preview of first 4 bars" -msgstr "prévisualisation des quatre premières mesures" - -#: midi2ly.py:1001 -msgid "quantise note starts on DUR" -msgstr "Quantifie les débuts de note sur DUR" - -#: midi2ly.py:1004 -msgid "DUR*NUM/DEN" -msgstr "DUR*NUM/DEN" - -#: midi2ly.py:1007 -msgid "allow tuplet durations DUR*NUM/DEN" -msgstr "Permet des n-olets de durée DUR*NUM/DEN" - -#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210 -#: main.cc:170 -msgid "show warranty and copyright" -msgstr "afficher les notices de garantie et du droit d'auteur" - -#: midi2ly.py:1019 -msgid "treat every text as a lyric" -msgstr "Traite tout texte comme étant des paroles" - -#: midi2ly.py:1022 -msgid "Examples" -msgstr "Exemples" - -#: midi2ly.py:1042 -msgid "no files specified on command line." -msgstr "aucun fichier spéficié sur la ligne de commande." - -#: abc2ly.py:1374 -#, python-format -msgid "" -"abc2ly converts ABC music files (see\n" -"%s) to LilyPond input.\n" -msgstr "" -"abc2ly convertit les fichiers musicaux ABC (voir\n" -"%s) au format LilyPond.\n" - -#: abc2ly.py:1390 -msgid "be strict about success" -msgstr "être strict sur la réussite" - -#: abc2ly.py:1392 -msgid "preserve ABC's notion of beams" -msgstr "préserver la notion de ligature propre à ABC" - -#: lilypond-book.py:80 -msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." -msgstr "" -"Traite les extraits LilyPond dans un document HTML hybride, LaTeX,\n" -"texinfo ou Docbook." - -#: lilypond-book.py:82 convert-ly.py:46 -msgid "Examples:" -msgstr "Exemples :" - -#: lilypond-book.py:87 -msgid "BOOK" -msgstr "LIVRE" +#: lilypond-book.py:87 +msgid "BOOK" +msgstr "LIVRE" #: lilypond-book.py:95 #, python-format @@ -1270,12 +1171,12 @@ msgstr "FILTRE" #: lilypond-book.py:130 msgid "pipe snippets through FILTER [default: `convert-ly -n -']" -msgstr "Passe les extraits à travers le FILTRE [par défaut : `convert-ly -n -']" +msgstr "passe les extraits à travers le FILTRE [par défaut : « convert-ly -n - »]" #: lilypond-book.py:134 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)" msgstr "" -"Utilise le format de sortie FORMAT (texi par défaut, texi-html, latex,\n" +"utilise le format de sortie FORMAT (texi par défaut, texi-html, latex,\n" "html ou docbook)" #: lilypond-book.py:135 @@ -1284,16 +1185,16 @@ msgstr "FORMAT" #: lilypond-book.py:142 msgid "add DIR to include path" -msgstr "Ajoute le RÉP au chemin de recherche des inclusions" +msgstr "ajoute le RÉP au chemin de recherche des inclusions" -#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163 -#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160 +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 msgid "DIR" msgstr "RÉP" #: lilypond-book.py:148 msgid "format Texinfo output so that Info will look for images of music in DIR" -msgstr "Formate la sortie Texinfo pour qu'Info cherche les images dans RÉP" +msgstr "formate la sortie Texinfo pour qu'Info cherche les images dans RÉP" #: lilypond-book.py:155 msgid "PAD" @@ -1302,456 +1203,1345 @@ msgstr "PAD" #: lilypond-book.py:157 msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)" msgstr "" -"Tasse la musique par la gauche pour la répartir en dépit du nombre irrégulier\n" +"tasse la musique par la gauche pour la répartir en dépit du nombre irrégulier\n" "de mesures (en mm)" #: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" +msgstr "Affiche les messages du journal selon la vakeur de LOGLEVEL" + +#: lilypond-book.py:168 msgid "write lily-XXX files to DIR, link into --output dir" msgstr "" -"Écrit les fichiers lily-XXX dans RÉP et crée un lien vers le répertoire\n" +"écrit les fichiers lily-XXX dans RÉP et crée un lien vers le répertoire\n" "spécifié par --output" -#: lilypond-book.py:167 +#: lilypond-book.py:173 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" msgstr "" -"Charge le PAQUETAGE python supplémentaire (contenant p.ex. un format\n" -"de sortie particulier)" +"charge le PAQUETAGE python supplémentaire (contenant par exemple\n" +"un format de sortie particulier)" -#: lilypond-book.py:168 +#: lilypond-book.py:174 msgid "PACKAGE" msgstr "PAQUETAGE" -#: lilypond-book.py:172 +#: lilypond-book.py:186 msgid "write output to DIR" -msgstr "Produit la sortie dans RÉP" +msgstr "produit la sortie dans RÉP" -#: lilypond-book.py:177 +#: lilypond-book.py:191 msgid "COMMAND" msgstr "COMMANDE" -#: lilypond-book.py:178 +#: lilypond-book.py:192 msgid "process ly_files using COMMAND FILE..." -msgstr "Traîte ly_files en utilisant COMMANDE FICHIER..." +msgstr "traîte ly_files en utilisant COMMANDE FICHIER..." -#: lilypond-book.py:182 +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "redirige la sortie la sortie lilypond" + +#: lilypond-book.py:201 msgid "Compile snippets in safe mode" -msgstr "Compile des extraits en mode protégé" +msgstr "compile des extraits en mode protégé" -#: lilypond-book.py:188 +#: lilypond-book.py:207 msgid "do not fail if no lilypond output is found" -msgstr "Désactive la mise en échec en l’absence de sortie de lilypond" +msgstr "désactive la mise en échec en l’absence de sortie de lilypond" -#: lilypond-book.py:194 +#: lilypond-book.py:213 msgid "do not fail if no PNG images are found for EPS files" msgstr "" -"Désactive la mise en échec en l’absence d’images PNG correspondant aux\n" -"fichiers EPS" +"désactive la mise en échec en l’absence d’images PNG\n" +"correspondant aux fichiers EPS" -#: lilypond-book.py:200 +#: lilypond-book.py:219 msgid "write snippet output files with the same base name as their source file" msgstr "" -"Affecte au résultat des extraits la même racine\n" -"que celle des fichiers source" +"affecte au résultat des extraits la même racine\n" +"que celle des fichiers sources" + +#: lilypond-book.py:223 midi2ly.py:1090 musicxml2ly.py:2596 +msgid "be verbose" +msgstr "passe en mode verbeux" -#: lilypond-book.py:220 +#: lilypond-book.py:239 msgid "" "run executable PROG instead of latex, or in\n" "case --pdf option is set instead of pdflatex" msgstr "" -"Utilise l’exécutable PROG en lieu et place de latex,\n" +"utilise l’exécutable PROG en lieu et place de latex,\n" "ou lorsque l'option --pdf remplace pdflatex" -#: lilypond-book.py:222 +#: lilypond-book.py:241 lilypond-book.py:246 msgid "PROG" msgstr "PROG" -#: lilypond-book.py:228 +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "utilise l'exécutable PROG au lieu de texi2pdf" + +#: lilypond-book.py:252 msgid "create PDF files for use with PDFTeX" -msgstr "Crée des fichiers PDF pour utilisation par PDFTeX" +msgstr "crée des fichiers PDF pour utilisation par PDFTeX" -#: lilypond-book.py:419 +#: lilypond-book.py:455 msgid "Writing snippets..." msgstr "Écriture des extraits..." -#: lilypond-book.py:425 +#: lilypond-book.py:460 msgid "Processing..." msgstr "Traitement..." -#: lilypond-book.py:431 +#: lilypond-book.py:465 msgid "All snippets are up to date..." msgstr "Tous les extraits sont à jour..." -#: lilypond-book.py:452 +#: lilypond-book.py:467 +msgid "Linking files..." +msgstr "Liaison des fichiers..." + +#: lilypond-book.py:487 #, python-format msgid "cannot determine format for: %s" -msgstr "format indéterminé pour %s" +msgstr "format indéterminé pour « %s »" -#: lilypond-book.py:461 +#: lilypond-book.py:496 #, python-format msgid "%s is up to date." -msgstr "%s est à jour." +msgstr "« %s » est à jour." -#: lilypond-book.py:475 +#: lilypond-book.py:509 #, python-format msgid "Writing `%s'..." -msgstr "Écriture de « %s »..." +msgstr "Écriture de « %s »..." -#: lilypond-book.py:537 +#: lilypond-book.py:570 msgid "Output would overwrite input file; use --output." -msgstr "La sortie va écraser le fichier d'entrée ; utiliser --output" +msgstr "La sortie va écraser le fichier d'entrée ; utiliser --output" -#: lilypond-book.py:541 +#: lilypond-book.py:574 #, python-format msgid "Reading %s..." -msgstr "Lecture en cours de %s..." +msgstr "Lecture en cours de « %s »..." -#: lilypond-book.py:549 +#: lilypond-book.py:581 msgid "Dissecting..." msgstr "Dissection en cours..." -#: lilypond-book.py:561 +#: lilypond-book.py:592 #, python-format msgid "Compiling %s..." -msgstr "Compilation de %s..." +msgstr "Compilation de « %s »..." -#: lilypond-book.py:570 +#: lilypond-book.py:600 #, python-format msgid "Processing include: %s" -msgstr "Traitement d'inclusion : %s" +msgstr "Traitement d'inclusion : %s" -#: lilypond-book.py:582 +#: lilypond-book.py:611 #, python-format msgid "Removing `%s'" -msgstr "Suppression de « %s »" +msgstr "Suppression de « %s »" -#: convert-ly.py:44 -msgid "" -"Update LilyPond input to newer version. By default, update from the\n" -"version taken from the \\version command, to the current LilyPond version." -msgstr "" -"Mettre à jour le fichier source vers une version plus récente.\n" -"Par défaut, de la version indiquée par la commande \\version \n" -"vers la version courante de LilyPond." +#: lilypond-book.py:704 +#, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "Niveau de journalisation de LilyPond fixé à %s" -#: convert-ly.py:102 convert-ly.py:135 -msgid "VERSION" -msgstr "VERSION" +#: lilypond-book.py:708 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" +msgstr "" +"Détermination du niveau de journalisation de LilyPond à %s\n" +"(à partir de la variable d'environnement LILYPOND_LOGLEVEL)" -#: convert-ly.py:104 -msgid "start from VERSION [default: \\version found in file]" -msgstr "partir de la VERSION [par défaut : \\version trouvée dans le fichier]" +#: lilypond-book.py:711 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" +msgstr "Utilisation de l'option LilyPond --verbose (réglage implicite de lilypond-book)" -#: convert-ly.py:107 -msgid "edit in place" -msgstr "éditer le fichier d'origine" +#: midi2ly.py:90 +msgid "warning: " +msgstr "Avertissement : " -#: convert-ly.py:111 -msgid "do not add \\version command if missing" -msgstr "ne pas ajouter la commande \\version si elle est absente" +#: midi2ly.py:93 midi2ly.py:1124 +msgid "error: " +msgstr "Erreur : " -#: convert-ly.py:117 -#, python-format -msgid "force updating \\version number to %s" -msgstr "forcer la mise à jour de \\version à %s" +#: midi2ly.py:94 +msgid "Exiting... " +msgstr "Fin d'exécution... " -#: convert-ly.py:123 -msgid "only update \\version number if file is modified" -msgstr "ne changer le numéro de \\version que si le fichier est modifié" +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" +msgstr "" +"l'une des portées contient plus de cinq voix ;\n" +"attendez-vous à un piètre résultat." -#: convert-ly.py:129 +#: midi2ly.py:1032 #, python-format -msgid "show rules [default: -f 0, -t %s]" -msgstr "afficher les règles [par défaut : -f 0, -t %s]" +msgid "%s output to `%s'..." +msgstr "%s reproduit dans « %s »..." -#: convert-ly.py:134 +#: midi2ly.py:1045 #, python-format -msgid "convert to VERSION [default: %s]" -msgstr "convertir jusqu'à la VERSION [par défaut : %s]" +msgid "Convert %s to LilyPond input.\n" +msgstr "convertit %s au format source LilyPond.\n" -#: convert-ly.py:184 -msgid "Applying conversion: " -msgstr "Conversion en cours : " +#: midi2ly.py:1050 +msgid "print absolute pitches" +msgstr "affecte des hauteurs absolues" -#: convert-ly.py:197 -msgid "Error while converting" -msgstr "Erreur lors de la conversion" +#: midi2ly.py:1052 midi2ly.py:1080 +msgid "DUR" +msgstr "DUR" -#: convert-ly.py:199 -msgid "Stopping at last successful rule" -msgstr "Arrêt à la dernière règle appliquée avec succès" +#: midi2ly.py:1053 +msgid "quantise note durations on DUR" +msgstr "quantifie les durées de note d'après DUR" -#: convert-ly.py:224 -#, python-format -msgid "Processing `%s'... " -msgstr "Traitement de « %s »..." +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "affiche des informations de débogage" -#: convert-ly.py:332 -#, python-format -msgid "%s: Unable to open file" -msgstr "impossible d'ouvrir le fichier « %s »" +#: midi2ly.py:1059 +msgid "print explicit durations" +msgstr "affecte des durées explicites" -#: convert-ly.py:339 -#, python-format -msgid "%s: Unable to determine version. Skipping" -msgstr "impossible de déterminer la version de « %s ». Au suivant !" +#: midi2ly.py:1064 +msgid "prepend FILE to output" +msgstr "ajoute FICHIER à la sortie" -#: convert-ly.py:344 -#, python-format -msgid "" -"%s: Invalid version string `%s' \n" -"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" -msgstr "" -"%s porte un numéro de version invalide : %s \n" -"Un numéro de version valide est formé de trois nombres séparés par un point,\n" -"comme par exemple « 2.8.12 »" +#: midi2ly.py:1068 +msgid "set key: ALT=+sharps|-flats; MINOR=1" +msgstr "définit l'armure : ALT=+dièse|-bémol ; MINEUR=1" -#: etf2ly.py:1195 -#, python-format -msgid "%s [OPTION]... ETF-FILE" -msgstr "%s [OPTIONS]... FICHIER-ETF" +#: midi2ly.py:1069 +msgid "ALT[:MINOR]" +msgstr "ALT[:MINEUR]" -#: etf2ly.py:1196 -msgid "" -"Enigma Transport Format is a format used by Coda Music Technology's\n" -"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" -msgstr "" -"Enigma Transport Format est utilisé par Finale, de Coda Music Technology.\n" -"etf2ly convertit partiellement un fichier ETF en un fichier LilyPond\n" -"exploitable.\n" +#: midi2ly.py:1074 +msgid "preview of first 4 bars" +msgstr "prévisualisation des quatre premières mesures" -#: website_post.py:123 -msgid "English" -msgstr "Anglais" +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" +msgstr "n'affiche aucun message de progression ni de nombre excessif de voix" -#: website_post.py:126 -msgid "Other languages" -msgstr "Autres langues" +#: midi2ly.py:1079 +msgid "quantise note starts on DUR" +msgstr "quantifie les débuts de note sur DUR" -#: warn.cc:59 -#, c-format -msgid "success: %s" -msgstr "Résultat : %s" +#: midi2ly.py:1083 +msgid "use s instead of r for rests" +msgstr "traduit les silences en « s », non en « r »" -#: warn.cc:86 grob.cc:617 input.cc:97 -#, c-format -msgid "programming error: %s" -msgstr "erreur de programmation : %s" +#: midi2ly.py:1085 +msgid "DUR*NUM/DEN" +msgstr "DUR*NUM/DEN" -#: warn.cc:87 input.cc:98 -msgid "continuing, cross fingers" -msgstr "poursuite ; croisons les doigts." +#: midi2ly.py:1088 +msgid "allow tuplet durations DUR*NUM/DEN" +msgstr "permet des n-olets de durée DUR*NUM/DEN" -#: getopt-long.cc:153 +#: midi2ly.py:1098 +msgid "treat every text as a lyric" +msgstr "traite tout texte comme étant des paroles" + +#: midi2ly.py:1101 +msgid "Examples" +msgstr "Exemples" + +#: midi2ly.py:1125 +msgid "no files specified on command line." +msgstr "aucun fichier spéficié sur la ligne de commande." + +#: musicxml2ly.py:228 +#, python-format +msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" +msgstr "" +"Détection d'un fichier créé par %s et contenant des informations de ligature\n" +"erronées. Toutes les informations de ligature du fichier MusicXML seront\n" +"ignorées." + +#: musicxml2ly.py:247 musicxml2ly.py:249 +#, python-format +msgid "Unprocessed PartGroupInfo %s encountered" +msgstr "PartGroupInfo %s détecté, mais non traité" + +#: musicxml2ly.py:500 +#, python-format +msgid "Encountered note at %s without type and duration (=%s)" +msgstr "Une note se trouve en %s, sans type ni durée (=%s)" + +#: musicxml2ly.py:520 +#, python-format +msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" +msgstr "" +"Durée rationnelle au dénominateur de %s détectée ;\n" +"impossible de traduire en durée LilyPond" + +#: musicxml2ly.py:767 +msgid "Unable to extract key signature!" +msgstr "Impossible de déterminer l'armure." + +#: musicxml2ly.py:794 +#, python-format +msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" +msgstr "" +"%s : mode inconnu.\n" +"Devrait être « majeur », « mineur » ou « mode d'église »." + +#: musicxml2ly.py:932 +#, python-format +msgid "Encountered unprocessed marker %s\n" +msgstr "Détection d'un marqueur non traité : %s\n" + +#: musicxml2ly.py:1026 +#, python-format +msgid "unknown span event %s" +msgstr "Événement de prolongation inconnu : « %s »" + +#: musicxml2ly.py:1036 +#, python-format +msgid "unknown span type %s for %s" +msgstr "%s n'est pas un type de prolongateur reconnu pour %s" + +#: musicxml2ly.py:1456 +msgid "Unknown metronome mark, ignoring" +msgstr "Indication métronomique inconnue et ignorée." + +#. TODO: Implement the other (more complex) way for tempo marks! +#: musicxml2ly.py:1461 +msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." +msgstr "" +"Les indications métronomiques aux relations complexes ( pour\n" +"MusicXML) n'ont pas encore été implémentées." + +#: musicxml2ly.py:1663 +#, python-format +msgid "Unable to convert chord type %s to lilypond." +msgstr "Impossible de convertir le type d'accord %s au format LilyPond" + +#: musicxml2ly.py:1816 +#, python-format +msgid "drum %s type unknown, please add to instrument_drumtype_dict" +msgstr "" +"%s n'est pas un type de percussion connu.\n" +"L'ajouter à instrument_drumtype_dict" + +#: musicxml2ly.py:1820 +msgid "cannot find suitable event" +msgstr "Aucun événement correspondant" + +#: musicxml2ly.py:1968 +#, python-format +msgid "Negative skip %s (from position %s to %s)" +msgstr "Retour en arrière de %s (partant de %s et jusqu'à %s)" + +#: musicxml2ly.py:2109 +#, python-format +msgid "Negative skip found: from %s to %s, difference is %s" +msgstr "Retour en arrière, de %s à %s ; différence = %s" + +#: musicxml2ly.py:2190 +#, python-format +msgid "unexpected %s; expected %s or %s or %s" +msgstr "%s détecté, au lieu de %s, %s ou %s" + +#: musicxml2ly.py:2296 +msgid "Encountered closing slur, but no slur is open" +msgstr "Terminaison d'une liaison qui n'a pas été débutée" + +#: musicxml2ly.py:2299 +msgid "Cannot have two simultaneous (closing) slurs" +msgstr "Deux liaisons ne peuvent se terminer simultanément" + +#: musicxml2ly.py:2308 +msgid "Cannot have a slur inside another slur" +msgstr "Des liaisons ne peuvent s'imbriquer" + +#: musicxml2ly.py:2311 +msgid "Cannot have two simultaneous slurs" +msgstr "Deux liaisons ne peuvent intervenir simultanément" + +#: musicxml2ly.py:2445 +#, python-format +msgid "cannot simultaneously have more than one mode: %s" +msgstr "SVP, un seul mode à la fois : %s" + +#: musicxml2ly.py:2553 +msgid "Converting to LilyPond expressions..." +msgstr "Conversion en expressions LilyPond..." + +#: musicxml2ly.py:2564 +msgid "musicxml2ly [OPTION]... FILE.xml" +msgstr "musicxml2ly [OPTION]... FICHIER.xml" + +#: musicxml2ly.py:2566 +msgid "" +"Convert MusicXML from FILE.xml to LilyPond input.\n" +"If the given filename is -, musicxml2ly reads from the command line.\n" +msgstr "" +"Convertit FICHIER.xml (MusicXML) au format LilyPond.\n" +"Si le nom du fichier est « - », musicxml2ly lira la ligne de commande.\n" + +#: musicxml2ly.py:2576 +msgid "" +"Copyright (c) 2005--2012 by\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen and\n" +" Reinhold Kainhofer \n" +msgstr "" +"Copyright (c) 2005--2012 par\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen et\n" +" Reinhold Kainhofer \n" + +#: musicxml2ly.py:2602 +msgid "use lxml.etree; uses less memory and cpu time" +msgstr "" +"utilise lxml.etree pour consommer moins de mémoire\n" +"et de temps processeur." + +#: musicxml2ly.py:2608 +msgid "input file is a zip-compressed MusicXML file" +msgstr "le fichier d'entrée est un fichier MusicXML compressé" + +#: musicxml2ly.py:2614 +msgid "convert pitches in relative mode (default)" +msgstr "convertit les hauteurs en mode relatif (par défaut)" + +#: musicxml2ly.py:2619 +msgid "convert pitches in absolute mode" +msgstr "convertit les hauteurs en mode absolu" + +#: musicxml2ly.py:2622 +msgid "LANG" +msgstr "LANG" + +#: musicxml2ly.py:2624 +msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" +msgstr "" +"utilise une autre définition linguistique (LANG),\n" +"par ex. deutsch pour l'allemand" + +#: musicxml2ly.py:2638 +msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." +msgstr "" +"ne convertit pas les positionnements (^, _ ou -) des articulations,\n" +"nuances etc." + +#: musicxml2ly.py:2644 +msgid "do not convert exact vertical positions of rests" +msgstr "ne convertit pas le positionnement absolu des silences" + +#: musicxml2ly.py:2650 +msgid "do not convert the exact page layout and breaks" +msgstr "ne convertit pas les sauts et la mise en page" + +#: musicxml2ly.py:2656 +msgid "do not convert beaming information, use lilypond's automatic beaming instead" +msgstr "" +"ne convertit pas les informations de ligature ;\n" +"laisse LilyPond gérer les ligatures automatiques" + +#: musicxml2ly.py:2664 +msgid "set output filename to FILE, stdout if -" +msgstr "produit la sortie dans FICHIER (stdout si -)" + +#: musicxml2ly.py:2670 +msgid "activate midi-block" +msgstr "activation du bloc midi" + +#: musicxml2ly.py:2754 +#, python-format +msgid "unknown part in part-list: %s" +msgstr "la partie « %s » n'est pas mentionnée dans part-list" + +#: musicxml2ly.py:2816 +msgid "Input is compressed, extracting raw MusicXML data from stdin" +msgstr "" +"Le fichier d'entrée est compressé.\n" +"Extraction des données MusicXML brutes à partir de stdin" + +#: musicxml2ly.py:2829 +#, python-format +msgid "Input file %s is compressed, extracting raw MusicXML data" +msgstr "" +"Le fichier d'entrée (%s) est compressé.\n" +"Extraction des données MusicXML brutes" + +#: musicxml2ly.py:2859 +msgid "Reading MusicXML from Standard input ..." +msgstr "Lecture du fichier MusicXML à partir de l'entrée standard..." + +#: musicxml2ly.py:2861 +#, python-format +msgid "Reading MusicXML from %s ..." +msgstr "Lecture du fichier MusicXML « %s »..." + +#: musicxml2ly.py:2894 +#, python-format +msgid "Output to `%s'" +msgstr "Fichier de sortie : « %s »" + +#: musicxml2ly.py:2964 +#, python-format +msgid "Unable to find input file %s" +msgstr "Impossible de trouver le fichier d'entrée « %s »" + +#: website_post.py:123 +msgid "English" +msgstr "Anglais" + +#: website_post.py:126 +msgid "Other languages" +msgstr "Autres langues" + +#: website_post.py:127 +#, python-format +msgid "About automatic language selection." +msgstr "À propos de la sélection automatique de la langue." + +#: getopt-long.cc:153 #, c-format msgid "option `%s' requires an argument" -msgstr "L'option « %s » requiert un argument" +msgstr "L'option « %s » requiert un argument" + +#: getopt-long.cc:157 +#, c-format +msgid "option `%s' does not allow an argument" +msgstr "L'option « %s » s'emploie sans argument" + +#: getopt-long.cc:161 +#, c-format +msgid "unrecognized option: `%s'" +msgstr "option non reconnue : « %s »" + +#: getopt-long.cc:167 +#, c-format +msgid "invalid argument `%s' to option `%s'" +msgstr "argument « %s » invalide pour l'option « %s »" + +#: warn.cc:56 +#, c-format +msgid "Log level set to %d\n" +msgstr "Niveau de journalisation fixé à %d\n" + +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" +msgstr "« %s » n'est pas un niveau de journalisation reconnu ; utilisation de INFO" + +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 +#, c-format +msgid "%d expected warning(s) not encountered: " +msgstr "%d avertissement(s) étaient attendus sans avoir été déclenchés :" + +#: warn.cc:183 +#, c-format +msgid "fatal error: %s" +msgstr "erreur fatale : %s" + +#: warn.cc:192 +#, c-format +msgid "suppressed programming error: %s" +msgstr "erreur de programmation supprimée : %s" + +#: warn.cc:197 +#, c-format +msgid "programming error: %s" +msgstr "erreur de programmation : %s" + +#: warn.cc:198 +msgid "continuing, cross fingers" +msgstr "poursuite ; croisons les doigts." + +#: warn.cc:207 +#, c-format +msgid "suppressed error: %s" +msgstr "erreur supprimée : %s" + +#: warn.cc:219 +#, c-format +msgid "suppressed warning: %s" +msgstr "avertissement supprimé : %s" + +#: accidental-engraver.cc:180 +#, c-format +msgid "accidental typesetting list must begin with context-name: %s" +msgstr "" +"La saisie d'une liste d'altérations accidentelles doit débuter\n" +"par un nom de contexte : %s" + +#: accidental-engraver.cc:210 +#, c-format +msgid "procedure or context-name expected for accidental rule, found %s" +msgstr "" +"procédure ou nom de contexte requis pour la règle d'altération accidentelle,\n" +"%s trouvé" + +#: accidental.cc:200 +#, c-format +msgid "Could not find glyph-name for alteration %s" +msgstr "Aucun nom de glyphe ne correspond à l'altération %s" + +#: accidental.cc:215 +msgid "natural alteration glyph not found" +msgstr "pas de glyphe correspondant au bécarre" + +#: all-font-metrics.cc:149 +#, c-format +msgid "cannot find font: `%s'" +msgstr "fonte « %s » introuvable" + +#: apply-context-iterator.cc:42 +msgid "\\applycontext argument is not a procedure" +msgstr "l'argument \\applycontext n'est pas une procédure" + +#: arpeggio.cc:115 +msgid "no heads for arpeggio found?" +msgstr "arpeggio sans tête de note ?" + +#: auto-change-iterator.cc:74 change-iterator.cc:72 +#, c-format +msgid "cannot change, already in translator: %s" +msgstr "modification impossible, c'est déjà dans le translateur : %s" + +#: axis-group-engraver.cc:94 +msgid "Axis_group_engraver: vertical group already has a parent" +msgstr "Axis_group_engraver : le groupe vertical a déjà un parent" + +#: axis-group-engraver.cc:95 +msgid "are there two Axis_group_engravers?" +msgstr "Axis_group_engraver redondant" + +#: axis-group-engraver.cc:96 +msgid "removing this vertical group" +msgstr "retrait de ce groupe vertical" + +#: axis-group-interface.cc:668 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "" +"un objet externe à la portée devrait avoir un positionnement.\n" +" Placé par défaut au-dessus." + +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" +msgstr "échec du contrôle de mesure (barcheck) à %s" + +#: beam-engraver.cc:147 +msgid "already have a beam" +msgstr "ligature déjà présente" + +#: beam-engraver.cc:230 +msgid "unterminated beam" +msgstr "ligature non terminée" + +#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149 +msgid "stem must have Rhythmic structure" +msgstr "la hampe doit avoir une structure Rythmic" + +#: beam-engraver.cc:277 +msgid "stem does not fit in beam" +msgstr "la hampe ne s'insère pas dans la ligature" + +#: beam-engraver.cc:278 +msgid "beam was started here" +msgstr "la ligature a débuté ici" + +#. We are completely screwed. +#: beam-quanting.cc:839 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "" +"pas de configuration initiale viable repérée :\n" +"la pente de la ligature pourrait être inesthétique." + +#: beam.cc:181 +msgid "removing beam with no stems" +msgstr "suppression d'une ligature ayant moins de deux hampes" + +#: change-iterator.cc:34 +#, c-format +msgid "cannot change `%s' to `%s'" +msgstr "impossible de changer « %s » en « %s »" + +#. FIXME: constant error message. +#: change-iterator.cc:93 +msgid "cannot find context to switch to" +msgstr "impossible de repérer le contexte vers lequel commuter" + +#. We could change the current translator's id, but that would make +#. errors hard to catch. +#. +#. last->translator_id_string () = get_change +#. ()->change_to_id_string (); +#: change-iterator.cc:102 +#, c-format +msgid "not changing to same context type: %s" +msgstr "pas de changement vers le même type de contexte : %s" + +#. FIXME: uncomprehensable message +#: change-iterator.cc:106 +msgid "none of these in my family" +msgstr "aucun de ceux-ci dans ma famille" + +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" +msgstr "Aucun trémolo à terminer" + +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "accord en trémolo non terminé" + +#: clef.cc:65 +#, c-format +msgid "clef `%s' not found" +msgstr "clé « %s » introuvable" + +#: cluster.cc:120 +#, c-format +msgid "unknown cluster style `%s'" +msgstr "style de cluster inconnu : « %s »" + +#: cluster.cc:157 +msgid "junking empty cluster" +msgstr "mise au rebut d'un cluster vide" + +#: coherent-ligature-engraver.cc:110 +#, c-format +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "Coherent_ligature_engraver : initialise « spacing-increment=0.01 » : ptr=%ul" + +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" +msgstr "impossible de trouver un saut de ligne qui satisfasse aux contraintes" + +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" +msgstr "\\override et \\revert requièrent des arguments symboliques" + +#: context.cc:149 +#, c-format +msgid "cannot find or create new `%s'" +msgstr "impossible de trouver ou créer un nouveau « %s »" + +#: context.cc:207 +#, c-format +msgid "cannot find or create `%s' called `%s'" +msgstr "impossible de trouver ou créer « %s » dénommé(e) « %s »" + +#: context.cc:400 +#, c-format +msgid "cannot find or create: `%s'" +msgstr "impossible de trouver ou créer « %s »" + +#: custos.cc:87 +#, c-format +msgid "custos `%s' not found" +msgstr "custode « %s » introuvable" + +#: dispatcher.cc:83 +msgid "Event class should be a list" +msgstr "La classe d'événement devrait être une liste" + +#: dispatcher.cc:166 +#, c-format +msgid "Junking event: %s" +msgstr "Événement escamoté : « %s »" + +#: dispatcher.cc:262 +msgid "Attempting to remove nonexisting listener." +msgstr "Tentative de suppression d'un écouteur inexistant." + +#: dispatcher.cc:284 +msgid "Already listening to dispatcher, ignoring request" +msgstr "Déjà à l'écoute du dispatcheur ; requête ignorée." + +#: dots.cc:48 +#, c-format +msgid "dot `%s' not found" +msgstr "point « %s » introuvable" + +#: dynamic-engraver.cc:193 +msgid "cannot find start of (de)crescendo" +msgstr "impossible de repérer le début du (de)crescendo" + +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "decrescendo déjà présent" + +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "crescendo déjà présent" + +#: dynamic-engraver.cc:205 +msgid "cresc starts here" +msgstr "le crescendo débute ici" + +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "(de)crescendo non terminé" + +#. No explicit dynamic script events have occurred yet, but there is +#. nevertheless a dynamic spanner. Initialize last_volume_ to a +#. value within the available range. +#: dynamic-performer.cc:129 +msgid "(De)crescendo with unspecified starting volume in MIDI." +msgstr "Volume de départ du (de)crescendo non spécifié (pour le MIDI)." + +#: episema-engraver.cc:75 +msgid "already have an episema" +msgstr "épisème déjà présent" + +#: episema-engraver.cc:88 +msgid "cannot find start of episema" +msgstr "impossible de trouver le début de l'épisème" + +#: episema-engraver.cc:137 +msgid "unterminated episema" +msgstr "épisème non terminé" + +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "prolongation ou extenseur non terminé" + +#: flag.cc:113 +#, c-format +msgid "flag `%s' not found" +msgstr "crochet inconnu : « %s »" + +#: flag.cc:133 +#, c-format +msgid "flag stroke `%s' not found" +msgstr "type de crochet inconnu : « %s »" + +#: font-config-scheme.cc:151 font-config.cc:53 +#, c-format +msgid "failed adding font directory: %s" +msgstr "échec lors de l'ajout d'un répertoire de fontes : « %s »" + +#: font-config-scheme.cc:153 font-config.cc:55 +#, c-format +msgid "Adding font directory: %s" +msgstr "Ajout d'un répertoire de fontes : « %s »" + +#: font-config-scheme.cc:167 +#, c-format +msgid "failed adding font file: %s" +msgstr "échec lors de l'ajout d'un fichier de fontes : « %s »" + +#: font-config-scheme.cc:169 +#, c-format +msgid "Adding font file: %s" +msgstr "Ajout d'un fichier de fontes : « %s »" + +#: font-config.cc:38 +msgid "Initializing FontConfig..." +msgstr "Initialisation de FontConfig..." + +#: font-config.cc:58 +msgid "Building font database..." +msgstr "Construction de la base de donnée des fontes..." + +#: footnote-engraver.cc:110 +msgid "Must be footnote-event." +msgstr "Doit être un événement note de bas de page (footnote-event)." + +#: general-scheme.cc:390 +#, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "échec lors de la redirection de stderr vers « %s »" + +#: general-scheme.cc:469 output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "Détection d'une valeur infini ou non numérique. Substitution par 0.0" + +#: glissando-engraver.cc:158 +msgid "unterminated glissando" +msgstr "glissando non terminé" + +#: global-context-scheme.cc:96 global-context-scheme.cc:114 +msgid "no music found in score" +msgstr "Il n'y a pas de musique dans cette partition" + +#: global-context-scheme.cc:104 +msgid "Interpreting music..." +msgstr "Interprétation en cours de la musique..." + +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "temps écoulé : %.2f secondes" + +#: gregorian-ligature-engraver.cc:70 +#, c-format +msgid "\\%s ignored" +msgstr "\\%s ignoré(e)" + +#: gregorian-ligature-engraver.cc:75 +#, c-format +msgid "implied \\%s added" +msgstr "\\%s implicite ajouté(e)" + +#. ligature may not start with 2nd head of pes or flexa +#: gregorian-ligature-engraver.cc:224 +msgid "cannot apply `\\~' on first head of ligature" +msgstr "Impossible d'appliquer « \\~ » à la première tête de ligature" + +#. (pitch == prev_pitch) +#: gregorian-ligature-engraver.cc:236 +msgid "cannot apply `\\~' on heads with identical pitch" +msgstr "Impossible d'appliquer « \\~ » à des têtes ayant la même hauteur" + +#: grob-interface.cc:68 +#, c-format +msgid "Unknown interface `%s'" +msgstr "Interface inconnue : « %s »" + +#: grob-interface.cc:79 +#, c-format +msgid "Grob `%s' has no interface for property `%s'" +msgstr "" +"L'objet graphique (Grob) « %s »\n" +" n'a pas d'interface pour la propriété « %s »" + +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" +msgstr "%d : %s" + +#: hairpin.cc:60 +msgid "Asking for broken bound padding at a non-broken bound." +msgstr "Tentative de décalage d'un fragment de souflet alors qu'il n'est pas rompu." + +#: hairpin.cc:254 +msgid "decrescendo too small" +msgstr "decrescendo trop petit" + +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" +msgstr "il ne devrait pas y avoir autant de crochets" + +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" +msgstr "événements de groupe de notes conflictuels" + +#: hyphen-engraver.cc:104 +msgid "removing unterminated hyphen" +msgstr "retrait du trait d'union sans suite" + +#: hyphen-engraver.cc:118 +msgid "unterminated hyphen; removing" +msgstr "trait d'union sans suite ; escamoté" + +#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108 +#, c-format +msgid "cannot find file: `%s'" +msgstr "fichier non trouvé : « %s »" + +#: includable-lexer.cc:73 lily-parser-scheme.cc:100 +#, c-format +msgid "(search path: `%s')" +msgstr "(chemin de recherche : « %s »)" + +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "position inconnue" -#: getopt-long.cc:157 -#, c-format -msgid "option `%s' does not allow an argument" -msgstr "L'option « %s » s'emploie sans argument" +#: key-engraver.cc:198 +msgid "Incomplete keyAlterationOrder for key signature" +msgstr "Propriété keyAlterationOrder incomplète pour cette armure." -#: getopt-long.cc:161 +#: key-signature-interface.cc:77 #, c-format -msgid "unrecognized option: `%s'" -msgstr "option non reconnue : « %s »" +msgid "No glyph found for alteration: %s" +msgstr "Pas de glyphe pour l'altération « %s »" -#: getopt-long.cc:167 -#, c-format -msgid "invalid argument `%s' to option `%s'" -msgstr "argument « %s » invalide pour l'option « %s »" +#: key-signature-interface.cc:87 +msgid "alteration not found" +msgstr "altération non trouvée" -#: grob.cc:286 -msgid "Infinity or NaN encountered" -msgstr "infini ou valeur non numérique rencontré lors de la conversion d'un nombre réel" +#: ligature-bracket-engraver.cc:72 ligature-engraver.cc:104 +msgid "cannot find start of ligature" +msgstr "impossible de trouver le début de la ligature" -#: vaticana-ligature.cc:95 -msgid "flexa-height undefined; assuming 0" -msgstr "Vaticana_ligature : décalage en X indéfini ; ramené à 0" +#: ligature-bracket-engraver.cc:85 ligature-engraver.cc:131 +msgid "already have a ligature" +msgstr "a déjà une ligature" -#: vaticana-ligature.cc:100 -msgid "ascending vaticana style flexa" -msgstr "flexe de style vaticana ascendant" +#: ligature-engraver.cc:109 +msgid "no right bound" +msgstr "pas de borne à droite" -#: vaticana-ligature.cc:188 -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" -msgstr "Vaticana_ligature: aucun joint (delta_pitch == 0)" +#: ligature-engraver.cc:140 +msgid "no left bound" +msgstr "pas de borne à gauche" -#: parse-scm.cc:101 -msgid "GUILE signaled an error for the expression beginning here" -msgstr "GUILE a signalé une erreur pour l'expression débutant ici" +#: ligature-engraver.cc:184 +msgid "unterminated ligature" +msgstr "ligature non terminée" -#: rest-collision-engraver.cc:70 -msgid "rhythmic head is not part of a rhythmic column" -msgstr "tête rythmique non rattachée à un empilement rythmique" +#: ligature-engraver.cc:211 +msgid "ignoring rest: ligature may not contain rest" +msgstr "le silence est ignoré : une ligature ne peut contenir de silence" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:189 constrained-breaking.cc:207 -msgid "cannot find line breaking that satisfies constraints" -msgstr "impossible de trouver un saut de ligne qui satisfasse aux contraintes" +#: ligature-engraver.cc:212 +msgid "ligature was started here" +msgstr "la ligature a débuté ici" -#: horizontal-bracket-engraver.cc:78 -msgid "do not have that many brackets" -msgstr "n'a pas autant de crochets" +#: lily-guile.cc:93 +#, c-format +msgid "(load path: `%s')" +msgstr "(chemin de chargement : « %s »)" -#: horizontal-bracket-engraver.cc:87 -msgid "conflicting note group events" -msgstr "événements de groupe de notes conflictuels" +#: lily-guile.cc:416 +#, c-format +msgid "cannot find property type-check for `%s' (%s)." +msgstr "vérification du type de propriété pour « %s » (%s) non trouvée" -#: hyphen-engraver.cc:104 -msgid "removing unterminated hyphen" -msgstr "retrait du trait d'union sans suite" +#: lily-guile.cc:419 +msgid "perhaps a typing error?" +msgstr "Probable faute de frappe" -#: hyphen-engraver.cc:118 -msgid "unterminated hyphen; removing" -msgstr "trait d'union sans suite ; escamoté" +#: lily-guile.cc:426 +msgid "doing assignment anyway" +msgstr "affectation faite malgré tout" -#: pango-font.cc:187 open-type-font.cc:319 +#: lily-guile.cc:438 #, c-format -msgid "FT_Get_Glyph_Name () error: %s" -msgstr "Erreur FT_Get_Glyph_Name () : %s" +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "" +"la vérification du type de « %s » a échoué ; \n" +" la valeur « %s » doit être du type « %s »" -#: pango-font.cc:204 +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" +msgstr "l'inclusion de fichiers n'est pas permise en mode sans échec" + +#: lily-lexer.cc:282 #, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" +msgid "identifier name is a keyword: `%s'" +msgstr "Le nom de l'identificateur est un mot clé : « %s »" + +#: lily-lexer.cc:303 lily-lexer.cc:316 +#, c-format +msgid "%s:EOF" +msgstr "%s:EOF" + +#: lily-parser-scheme.cc:80 +#, c-format +msgid "Changing working directory to: `%s'" msgstr "" -"Le glyphe n'a pas de nom alors que la fonte prend en charge leur nommage.\n" -"Glyphe U+%0X ignoré dans le fichier %s" +"Modification du répertoire de travail pour\n" +" « %s »" -#: pango-font.cc:241 +#: lily-parser-scheme.cc:84 #, c-format -msgid "no PostScript font name for font `%s'" -msgstr "« %s » n'est pas un fichier de fonte PostScript" +msgid "unable to change directory to: `%s'" +msgstr "" +"impossible d'accéder au répertoire\n" +" « %s »" -#: pango-font.cc:290 -msgid "FreeType face has no PostScript font name" -msgstr "Caractère FreeType sans nom de police PostScript" +#: lily-parser-scheme.cc:99 +#, c-format +msgid "cannot find init file: `%s'" +msgstr "" +"impossible de trouver le fichier d'initialisation\n" +" « %s »" -#: midi-item.cc:92 +#: lily-parser-scheme.cc:117 #, c-format -msgid "no such MIDI instrument: `%s'" -msgstr "instrument MIDI non répertorié : « %s »" +msgid "Processing `%s'" +msgstr "Traitement de « %s »" -#: note-heads-engraver.cc:76 -msgid "NoteEvent without pitch" -msgstr "NoteEvent sans hauteur" +#: lily-parser-scheme.cc:208 +msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "" +"ly:parser-parse-string ne peut foncionner qu'avec un nouvel analyseur.\n" +"Utilisez plutôt ly:parser-include-string" + +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "" +"ly:parse-string-expression ne peut foncionner qu'avec un nouvel analyseur.\n" +"Utilisez plutôt ly:parser-include-string" + +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "Analyse..." -#: rest.cc:159 +#: line-spanner.cc:373 +msgid "Line spanner's left point is to the right of its right point." +msgstr "L'extrémité gauche de la ligne de prolongation se retrouve après la droite." + +#: lyric-combine-music-iterator.cc:199 +msgid "argument of \\lyricsto should contain Lyrics context" +msgstr "les arguments de \\lyricsto doivent comporter un contexte Lyrics." + +#: lyric-combine-music-iterator.cc:337 #, c-format -msgid "rest `%s' not found" -msgstr "silence « %s » inconnu" +msgid "cannot find Voice `%s'" +msgstr "impossible de repérer la voix (Voice) « %s »" + +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +msgstr "" +"Syllabe sans note de rattachement.\n" +" Utiliser \\lyricsto ou associatedVoice." -#: spaceable-grob.cc:94 +#: main.cc:101 #, c-format -msgid "No spring between column %d and next one" -msgstr "Pas de tension entre la colonne %d et la suivante" +msgid "" +"This program is free software. It is covered by the GNU General Public\n" +"License and you are welcome to change it and/or distribute copies of it\n" +"under certain conditions. Invoke as `%s --warranty' for more\n" +"information.\n" +msgstr "" +"Ce logiciel est libre. Il est couvert par la licence GNU General Public\n" +"License, et vous êtes libre de le modifier ou d'en distribuer des copies\n" +"sous certaines conditions.\n" +"Invoquez « %s --warranty » pour plus d'informations.\n" -#: beam-engraver.cc:147 -msgid "already have a beam" -msgstr "ligature déjà présente" +#: main.cc:107 +msgid "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" +msgstr "" +" Ce logiciel est libre ; vous pouvez le redistribuer ou le modifier\n" +"selon les termes de la licence GNU General Public License version 3\n" +"tel que publiée par la Free Software Foundation.\n" +"\n" +" Ce logiciel est distribué dans l'espoir qu'il soit utile\n" +"mais sans AUCUNE GARANTIE ; sans aucune garantie implicite\n" +"COMMERCIALE ou pour RÉPONDRE À UN BESOIN PARTICULIER. Consultez\n" +"la license GNU General Public License pour plus de détails.\n" +"\n" +" Vous devriez avoir reçu une copie (consulter le fichier COPYING) de la\n" +"license GNU General Public License accompagnant ce logiciel ; si absente,\n" +"écrire à la Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" -#: beam-engraver.cc:230 -msgid "unterminated beam" -msgstr "ligature non terminée" +#: main.cc:141 +msgid "SYM[=VAL]" +msgstr "SYM[=VAL]" -#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150 -msgid "stem must have Rhythmic structure" -msgstr "la hampe doit avoir une structure Rythmic" +#: main.cc:142 +msgid "" +"set Scheme option SYM to VAL (default: #t).\n" +"Use -dhelp for help." +msgstr "" +"affecte VAL (par défaut #t) à l'option Scheme SYM.\n" +"Utiliser -dhelp pour avoir de l'aide." -#: beam-engraver.cc:274 -msgid "stem does not fit in beam" -msgstr "la hampe ne s'insère pas dans la ligature" +#: main.cc:146 +msgid "EXPR" +msgstr "EXPR" -#: beam-engraver.cc:275 -msgid "beam was started here" -msgstr "la ligature a débuté ici" +#: main.cc:146 +msgid "evaluate scheme code" +msgstr "évaluation du code Scheme" -#: music-iterator.cc:182 -msgid "Sending non-event to context" -msgstr "Envoi d'un non-événement au contexte" +#. Bug in option parser: --output =foe is taken as an abbreviation +#. for --output-format. +#: main.cc:149 +msgid "FORMATs" +msgstr "FORMATs" -#: context.cc:149 -#, c-format -msgid "cannot find or create new `%s'" -msgstr "impossible de trouver ou créer un nouveau « %s »" +#: main.cc:149 +msgid "dump FORMAT,... Also as separate options:" +msgstr "" +"produire FORMAT...\n" +"Aussi comme options séparées :" -#: context.cc:207 -#, c-format -msgid "cannot find or create `%s' called `%s'" -msgstr "impossible de trouver ou créer « %s » appelé « %s »" +#: main.cc:150 +msgid "generate PDF (default)" +msgstr "générer le PDF (par défaut)" + +#: main.cc:151 +msgid "generate PNG" +msgstr "générer le PNG" + +#: main.cc:152 +msgid "generate PostScript" +msgstr "générer le PostScript" + +#: main.cc:155 +msgid "FIELD" +msgstr "CHAMP" + +#: main.cc:155 +msgid "" +"dump header field FIELD to file\n" +"named BASENAME.FIELD" +msgstr "" +"écrire le champ d'entête CHAMP dans le\n" +"fichier nommé RACINE.CHAMP" + +#: main.cc:158 +msgid "add DIR to search path" +msgstr "ajouter RÉPERTOIRE au chemin de recherche" + +#: main.cc:159 +msgid "use FILE as init file" +msgstr "" +"utiliser FICHIER comme\n" +"fichier d'initialisation" -#: context.cc:269 +#: main.cc:162 +msgid "USER, GROUP, JAIL, DIR" +msgstr "USER, GROUP, CAGE, RÉP" + +#: main.cc:162 +msgid "" +"chroot to JAIL, become USER:GROUP\n" +"and cd into DIR" +msgstr "" +"chroot dans CAGE, devenir UTILISATEUR:GROUPE\n" +"et cd dans RÉPERTOIRE" + +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" +"affiche les informations selon le niveau de LOGLEVEL :\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (défaut) ou DEBUG." + +#: main.cc:171 +msgid "write output to FILE (suffix will be added)" +msgstr "" +"produire la sortie dans FICHIER \n" +"(adjonction automatique du suffixe)" + +#: main.cc:172 +msgid "relocate using directory of lilypond program" +msgstr "" +"redétermine le chemin d'exécution\n" +"des composants de LilyPond" + +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "" +"pas de progression, seulement les messages d'erreur\n" +"(équivalent à loglevel=ERROR)" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "état verbeux (équivalent à loglevel=DEBUG)" + +#. Do not update the copyright years here, run `make grand-replace' +#: main.cc:242 #, c-format -msgid "Invalid CreateContext event: Cannot create %s context" -msgstr "Événement CreateContext invalide : impossible de créer le contexte %s" +msgid "" +"Copyright (c) %s by\n" +"%s and others." +msgstr "" +"Copyright © %s détenu par\n" +"%s et autres." -#: context.cc:400 +#. No version number or newline here. It confuses help2man. +#: main.cc:269 #, c-format -msgid "cannot find or create: `%s'" -msgstr "impossible de trouver ou créer « %s »" +msgid "Usage: %s [OPTION]... FILE..." +msgstr "Utilisation : %s [OPTIONS]... FICHIER..." + +#: main.cc:271 +msgid "Typeset music and/or produce MIDI from FILE." +msgstr "Composer la musique ou jouer en format MIDI à partir du FICHIER" -#: dispatcher.cc:82 -msgid "Event class should be a symbol" -msgstr "La classe Event devrait être un symbole" +#: main.cc:273 +msgid "LilyPond produces beautiful music notation." +msgstr "LilyPond produit une jolie notation musicale" -#: dispatcher.cc:89 +#: main.cc:275 #, c-format -msgid "Unknown event class %s" -msgstr "Classe d'événement inconnue : « %s »" +msgid "For more information, see %s" +msgstr "Pour plus d'informations, voir %s" -#: paper-column-engraver.cc:245 -msgid "forced break was overridden by some other event, should you be using bar checks?" -msgstr "" -"Un saut explicite a été outrepassé par un autre événement.\n" -"Positionnez quelques contrôles de mesure (bar check) pour vérifier." +#: main.cc:277 +msgid "Options:" +msgstr "Options :" -#: tie-engraver.cc:116 -msgid "unterminated tie" -msgstr "liaison de prolongation non terminée" +#: main.cc:331 +#, c-format +msgid "expected %d arguments with jail, found: %u" +msgstr "une cage requiert %d arguments, il y en a %u" -#: tie-engraver.cc:312 -msgid "lonely tie" -msgstr "liaison de prolongation orpheline" +#: main.cc:345 +#, c-format +msgid "no such user: %s" +msgstr "utilisateur inconnu : « %s »" + +#: main.cc:347 +#, c-format +msgid "cannot get user id from user name: %s: %s" +msgstr "" +"impossible de repérer l'identifiant utilisateur à partir du nom d'utilisateur :\n" +"%s : %s" -#: dynamic-engraver.cc:197 -msgid "cannot find start of (de)crescendo" -msgstr "impossible de repérer le début du (de)crescendo" +#: main.cc:362 +#, c-format +msgid "no such group: %s" +msgstr "groupe inconnu : %s" -#: dynamic-engraver.cc:206 -msgid "already have a decrescendo" -msgstr "decrescendo déjà présent" +#: main.cc:364 +#, c-format +msgid "cannot get group id from group name: %s: %s" +msgstr "" +"impossible de repérer l'identifiant groupe à partir du nom de groupe :\n" +"%s : %s " -#: dynamic-engraver.cc:208 -msgid "already have a crescendo" -msgstr "crescendo déjà présent" +#: main.cc:372 +#, c-format +msgid "cannot chroot to: %s: %s" +msgstr "impossible de chrooter vers : %s : %s" -#: dynamic-engraver.cc:211 -msgid "cresc starts here" -msgstr "le crescendo débute ici" +#: main.cc:379 +#, c-format +msgid "cannot change group id to: %d: %s" +msgstr "impossible de changer l'identifiant de groupe en %d : %s" -#: dynamic-engraver.cc:339 -msgid "unterminated (de)crescendo" -msgstr "(de)crescendo non terminé" +#: main.cc:385 +#, c-format +msgid "cannot change user id to: %d: %s" +msgstr "impossible de changer l'identifiant utilisateur en %d : %s" -#: paper-score.cc:122 minimal-page-breaking.cc:40 -msgid "Calculating line breaks..." -msgstr "Calcul des sauts de ligne..." +#: main.cc:391 +#, c-format +msgid "cannot change working directory to: %s: %s" +msgstr "impossible de changer le répertoire de travail en %s : %s" -#: paper-score.cc:135 +#: main.cc:639 #, c-format -msgid "Element count %d (spanners %d) " -msgstr "%d éléments dénombrés (%d extensions)" +msgid "exception caught: %s" +msgstr "exception capturée : %s" -#: paper-score.cc:139 -msgid "Preprocessing graphical objects..." -msgstr "Pré-traitement des éléments graphiques..." +#. FIXME: constant error message. +#: mark-engraver.cc:156 +msgid "rehearsalMark must have integer value" +msgstr "rehearsalMark doit être un entier" -#: paper-score.cc:163 optimal-page-breaking.cc:208 -#: page-turn-page-breaking.cc:248 -msgid "Drawing systems..." -msgstr "Dessin des systèmes..." +#: mark-engraver.cc:162 +msgid "mark label must be a markup object" +msgstr "les étiquettes de marque doivent être des objets de type « markup »." #: mensural-ligature-engraver.cc:96 msgid "ligature with less than 2 heads -> skipping" @@ -1797,50 +2587,50 @@ msgstr "" "l'avant dernière note doit en être une autre,\n" "sinon la ligature doit être LB ou SSB" -#: mensural-ligature-engraver.cc:386 +#: mensural-ligature-engraver.cc:387 msgid "unexpected case fall-through" msgstr "cas inattendu et non interprétable" -#: piano-pedal-engraver.cc:298 +#: midi-item.cc:89 #, c-format -msgid "expect 3 strings for piano pedals, found: %ld" -msgstr "Les pédales de piano nécessitent 3 cordes. Il y en a %ld" +msgid "no such MIDI instrument: `%s'" +msgstr "instrument MIDI non répertorié : « %s »" -#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324 -#: piano-pedal-performer.cc:104 -#, c-format -msgid "cannot find start of piano pedal: `%s'" -msgstr "début de la pédale de piano indéterminé : « %s »" +#: midi-item.cc:161 +msgid "Time signature with more than 255 beats. Truncating" +msgstr "Métrique comportant plus de 255 pulsations ; on limite." -#: piano-pedal-engraver.cc:359 +#: midi-stream.cc:39 #, c-format -msgid "cannot find start of piano pedal bracket: `%s'" -msgstr "début du crochet de la pédale de piano indéterminé : « %s »" - -#: input.cc:131 source-file.cc:179 source-file.cc:194 -msgid "position unknown" -msgstr "position inconnue" +msgid "cannot open for write: %s: %s" +msgstr "" +"impossible d'ouvrir le fichier en écriture : %s :\n" +" %s" -#: paper-outputter-scheme.cc:41 +#: midi-stream.cc:55 #, c-format -msgid "Layout output to `%s'..." -msgstr "Sortie mise en page vers « %s »..." +msgid "cannot write to file: `%s'" +msgstr "impossible d'écrire dans le fichier « %s »" -#: general-scheme.cc:306 -msgid "infinity or NaN encountered while converting Real number" -msgstr "Infini ou valeur non numérique rencontré lors de la conversion d'un nombre réel" +#: minimal-page-breaking.cc:40 paper-score.cc:122 +msgid "Calculating line breaks..." +msgstr "Calcul des sauts de ligne..." -#: general-scheme.cc:307 -msgid "setting to zero" -msgstr "initialisation à zéro" +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." +msgstr "Calcul des sauts de page..." -#: general-scheme.cc:543 -msgid "Found infinity or nan in output. Substituting 0.0" +#: multi-measure-rest.cc:138 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." msgstr "" -"La sortie contient l'infini ou une valeur non numérique.\n" -"Substitution par 0.0" +"usable-duration-logs ne peut être constitué d'une liste vide.\n" +"Retour à des pauses." -#: music.cc:151 +#: multi-measure-rest.cc:328 +msgid "Using naive multi measure rest spacing." +msgstr "Utilisation d'un espacement de type silence multimesure." + +#: music.cc:150 #, c-format msgid "octave check failed; expected \"%s\", found: \"%s\"" msgstr "" @@ -1856,301 +2646,83 @@ msgstr "(hauteur normalisée)" msgid "Transposing %s by %s makes alteration larger than double" msgstr "La transposition de %s à %s crée des altérations supérieures aux doubles" -#: translator-ctors.cc:65 -#, c-format -msgid "unknown translator: `%s'" -msgstr "translateur inconnu : « %s »" - -#: partial-iterator.cc:45 -msgid "trying to use \\partial after the start of a piece" -msgstr "\\partial ne devrait intervenir qu'en début de morceau" - -#: new-fingering-engraver.cc:106 -msgid "cannot add text scripts to individual note heads" -msgstr "impossible d'ajouter du texte à des têtes de notes individuelles" - -#: new-fingering-engraver.cc:250 -msgid "no placement found for fingerings" -msgstr "nulle part où positionner des doigtés" - -#: new-fingering-engraver.cc:251 -msgid "placing below" -msgstr "on les place en dessous" - -#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 -msgid "cannot find start of ligature" -msgstr "impossible de trouver le début d'une ligature" - -#: ligature-engraver.cc:109 -msgid "no right bound" -msgstr "pas de borne à droite" - -#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85 -msgid "already have a ligature" -msgstr "a déjà une ligature" - -#: ligature-engraver.cc:140 -msgid "no left bound" -msgstr "pas de borne à gauche" - -#: ligature-engraver.cc:185 -msgid "unterminated ligature" -msgstr "ligature non terminée" - -#: ligature-engraver.cc:214 -msgid "ignoring rest: ligature may not contain rest" -msgstr "le silence est ignoré : une ligature ne peut contenir de silence" - -#: ligature-engraver.cc:215 -msgid "ligature was started here" -msgstr "la ligature a débuté ici" - -#: auto-change-iterator.cc:74 change-iterator.cc:72 -#, c-format -msgid "cannot change, already in translator: %s" -msgstr "modification impossible, c'est déjà dans le translateur : %s" - -#: accidental-engraver.cc:180 -#, c-format -msgid "accidental typesetting list must begin with context-name: %s" -msgstr "" -"La saisie d'une liste d'altérations accidentelles doit débuter \n" -"par un nom de contexte : %s" - -#: accidental-engraver.cc:210 -#, c-format -msgid "procedure or context-name expected for accidental rule, found %s" -msgstr "" -"procédure ou nom de contexte requis pour la règle d'altération accidentelle,\n" -"%s trouvé" - -#: ttf.cc:481 ttf.cc:530 -#, c-format -msgid "font index %d too large for font `%s', using index 0" -msgstr "" -"index %d trop grand pour la fonte « %s » ;\n" -"réindexé sur 0" - -#: ttf.cc:513 ttf.cc:565 -msgid "font index must be non-negative, using index 0" -msgstr "l'index de fonte ne peut être négatif ; réindexé sur 0" - -#: break-alignment-interface.cc:206 -#, c-format -msgid "No spacing entry from %s to `%s'" -msgstr "Pas d'espacement entre %s et « %s »" - -#: minimal-page-breaking.cc:44 -msgid "Calculating page breaks..." -msgstr "Calcul des sauts de page..." - -#: vaticana-ligature-engraver.cc:400 -#, c-format -msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" -msgstr "" -"préfixe(s) « %s » ignoré(s) pour la tête de note, \n" -"selon les restrictions du style de ligature sélectionné" - -#: vaticana-ligature-engraver.cc:736 -#, c-format -msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" -msgstr "Vaticana_ligature_engraver : fixé `spacing-increment = %f': ptr=%ul" - -#: paper-book.cc:214 -#, c-format -msgid "program option -dprint-pages not supported by backend `%s'" -msgstr "l'option -dprint-pages n'est pas opérationnelle avec le moteur %s" - -#: paper-book.cc:233 -#, c-format -msgid "program option -dpreview not supported by backend `%s'" -msgstr "l'option -dpreview n'est pas opérationnelle avec le moteur %s" - -#: output-def.cc:235 -msgid "margins do not fit with line-width, setting default values" -msgstr "" -"les marges ne sont pas en cohérence avec la longueur de ligne ;\n" -"retour aux valeurs par défaut" - -#: output-def.cc:242 -msgid "systems run off the page due to improper paper settings, setting default values" -msgstr "" -"les systèmes débordent de la page en raison de réglages de papier erronés ;\n" -"retour aux valeurs par défaut" - -#: score-engraver.cc:78 -#, c-format -msgid "cannot find `%s'" -msgstr "impossible de trouver « %s »" - -#: score-engraver.cc:80 -msgid "Music font has not been installed properly." -msgstr "Les fontes musicales n'ont pas été installées correctement." - -#: score-engraver.cc:82 -#, c-format -msgid "Search path `%s'" -msgstr "Chemin de recherche : « %s »" - -#: score-engraver.cc:84 -msgid "Aborting" -msgstr "Abandon" - -#: note-collision.cc:497 -msgid "ignoring too many clashing note columns" -msgstr "trop d'empilements de notes se chevauchent. On fera au mieux." - -#. fixme: be more verbose. -#: volta-engraver.cc:111 -msgid "cannot end volta spanner" -msgstr "extension de reprise sans terminaison" - -#: volta-engraver.cc:121 -msgid "already have a volta spanner, ending that one prematurely" -msgstr "extension de reprise déjà présente, fin prématurée de celle-ci" - -#: volta-engraver.cc:125 -msgid "also already have an ended spanner" -msgstr "a déjà une extension terminée" - -#: volta-engraver.cc:126 -msgid "giving up" -msgstr "abandon" - -#: page-layout-problem.cc:322 -msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" -msgstr "" -"impossible de faire tenir la musique sur la page :\n" -" justification demandée, mais page déjà compressée" - -#: page-layout-problem.cc:325 -#, c-format -msgid "cannot fit music on page: overflow is %f" -msgstr "impossible de faire tenir la musique sur la page. Débordement de %f" - -#: page-layout-problem.cc:327 -msgid "compressing music to fit" -msgstr "compression de la musique pour que cela tienne" - -#: page-layout-problem.cc:765 -msgid "staff-affinities should only decrease" -msgstr "staff-affinities devraient aller en ordre décroissant" - -#: apply-context-iterator.cc:42 -msgid "\\applycontext argument is not a procedure" -msgstr "l'argument \\applycontext n'est pas une procédure" - -#. FIXME: constant error message. -#: mark-engraver.cc:157 -msgid "rehearsalMark must have integer value" -msgstr "rehearsalMark doit être un entier" - -#: mark-engraver.cc:163 -msgid "mark label must be a markup object" -msgstr "les étiquettes de marque doivent être des objets de type \"markup\"" - -#: new-dynamic-engraver.cc:142 +#: new-dynamic-engraver.cc:168 #, c-format msgid "" "unknown crescendo style: %s\n" "defaulting to hairpin." msgstr "" -"style de crescendo inconnu : %s\n" +"style de crescendo inconnu : %s\n" "retour à la valeur par défaut (soufflet)." -#: new-dynamic-engraver.cc:200 +#: new-dynamic-engraver.cc:233 #, c-format msgid "unterminated %s" msgstr "%s non terminé(e)" -#: stem-engraver.cc:103 -msgid "tremolo duration is too long" -msgstr "durée du tremolo trop longue" +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "impossible d'ajouter du texte à des têtes de note individuelles" -#. FIXME: -#: stem-engraver.cc:140 -#, c-format -msgid "adding note head to incompatible stem (type = %d)" -msgstr "Ajout d'une tête de note à une hampe incompatible (type = %d)" +#: new-fingering-engraver.cc:269 +msgid "no placement found for fingerings" +msgstr "nulle part où positionner des doigtés" -#: stem-engraver.cc:142 -msgid "maybe input should specify polyphonic voices" -msgstr "la source devrait spécifier des voix polyphoniques" +#: new-fingering-engraver.cc:270 +msgid "placing below" +msgstr "on les place en dessous" -#: lily-lexer.cc:264 -msgid "include files are not allowed in safe mode" -msgstr "l'inclusion de fichiers n'est pas permise en mode sans échec" +#: note-collision.cc:496 +msgid "ignoring too many clashing note columns" +msgstr "trop d'empilements de notes se chevauchent. On fera au mieux." -#: lily-lexer.cc:291 -#, c-format -msgid "identifier name is a keyword: `%s'" -msgstr "Le nom de l'identificateur est un mot clé : « %s »" +#: note-column.cc:147 +msgid "cannot have note heads and rests together on a stem" +msgstr "impossible de superposer une note et un silence sur une même hampe" -#: lily-lexer.cc:312 +#: note-head.cc:95 #, c-format -msgid "error at EOF: %s" -msgstr "erreur à la fin du fichier (EOF) : %s" +msgid "none of note heads `%s' or `%s' found" +msgstr "tête de note « %s » ou « %s » non trouvée" -#: lyric-combine-music-iterator.cc:337 -#, c-format -msgid "cannot find Voice `%s'" -msgstr "impossible de repérer la voix (Voice) « %s »" +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" +msgstr "NoteEvent sans hauteur" -#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109 +#: open-type-font.cc:44 #, c-format -msgid "cannot find file: `%s'" -msgstr "fichier non trouvé : « %s »" +msgid "cannot allocate %lu bytes" +msgstr "impossible d'allouer %lu octets" -#: includable-lexer.cc:73 lily-parser-scheme.cc:100 +#: open-type-font.cc:48 #, c-format -msgid "(search path: `%s')" -msgstr "(chemin de recherche : « %s »)" - -#: note-column.cc:135 -msgid "cannot have note heads and rests together on a stem" -msgstr "impossible de superposer une note et un silence sur une même hampe" - -#: beam.cc:180 -msgid "removing beam with no stems" -msgstr "suppression d'une ligature ayant moins de deux hampes" - -#. We are completely screwed. -#: beam.cc:1274 -msgid "no viable initial configuration found: may not find good beam slope" -msgstr "" -"pas de configuration initiale viable repérée : \n" -"la pente de la ligature pourrait être inesthétique." +msgid "cannot load font table: %s" +msgstr "impossible de charger la table des fontes : %s" -#: slur-engraver.cc:93 +#: open-type-font.cc:53 #, c-format -msgid "direction of %s invalid: %d" -msgstr "l'orientation de %s n'est pas valide : %d" - -#: slur-engraver.cc:162 -msgid "unterminated slur" -msgstr "liaison non terminée" - -#: slur-engraver.cc:174 -msgid "cannot end slur" -msgstr "impossible de terminer la liaison" +msgid "FreeType error: %s" +msgstr "Erreur FreeType : %s" -#: font-config.cc:40 -msgid "Initializing FontConfig..." -msgstr "Initialisation de FontConfig..." +#: open-type-font.cc:110 +#, c-format +msgid "unsupported font format: %s" +msgstr "format de police non supporté : %s" -#: font-config.cc:55 font-config-scheme.cc:152 +#: open-type-font.cc:112 #, c-format -msgid "failed adding font directory: %s" -msgstr "échec lors de l'ajout d'un répertoire de fontes : « %s »" +msgid "error reading font file %s: %s" +msgstr "erreur de lecture du fichier de fontes %s : %s" -#: font-config.cc:57 font-config-scheme.cc:154 +#: open-type-font.cc:187 #, c-format -msgid "adding font directory: %s" -msgstr "ajout d'un répertoire de fontes : « %s »" +msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgstr "erreur Freetype FT_Get_Glyph_Name () : %s" -#: font-config.cc:61 -msgid "Building font database..." -msgstr "Construction de la base de donnée des fontes..." +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" +msgstr "Erreur FT_Get_Glyph_Name () : %s" #. find out the ideal number of pages #: optimal-page-breaking.cc:62 @@ -2159,7 +2731,7 @@ msgstr "Détermination du nombre optimal de pages..." #: optimal-page-breaking.cc:85 msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page" -msgstr "incompatilité entre systems-per-page et page-count ; systems-per-page ignoré" +msgstr "incompatilité entre systems-per-page et page-count ; systems-per-page ignoré" #: optimal-page-breaking.cc:105 msgid "Fitting music on 1 page..." @@ -2175,438 +2747,255 @@ msgstr "Répartition de la musique sur %d pages..." msgid "Fitting music on %d or %d pages..." msgstr "Répartition de la musique sur %d à %d pages..." -#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:172 #, c-format msgid "trying %d systems" msgstr "tentative pour %d systèmes" -#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:200 #, c-format msgid "best score for this sys-count: %f" -msgstr "meilleur résultat pour cette configuration « sys-count » : %f" - -#: accidental.cc:200 -#, c-format -msgid "Could not find glyph-name for alteration %s" -msgstr "Aucun nom de glyphe ne correspond à l'altération %s" - -#: accidental.cc:215 -msgid "natural alteration glyph not found" -msgstr "pas de glyphe correspondant au bécarre" - -#: system.cc:197 -#, c-format -msgid "Element count %d" -msgstr "%d éléments dénombrés." - -#: system.cc:303 -#, c-format -msgid "Grob count %d" -msgstr "%d objet graphiques (grob) dénombrés" - -#: slur.cc:362 -#, c-format -msgid "Ignoring grob for slur: %s. avoid-slur not set?" -msgstr "" -"objet graphique (grob) non concerné par la liaison : %s.\n" -"avoid-slur non définie ?" - -#: font-config-scheme.cc:168 -#, c-format -msgid "failed adding font file: %s" -msgstr "échec lors de l'ajout d'un fichier de fontes : « %s »" - -#: font-config-scheme.cc:170 -#, c-format -msgid "adding font file: %s" -msgstr "ajout d'un fichier de fontes : « %s »" - -#: hairpin.cc:186 -msgid "decrescendo too small" -msgstr "decrescendo trop petit" - -#: extender-engraver.cc:170 extender-engraver.cc:179 -msgid "unterminated extender" -msgstr "prolongation ou extenseur non terminé" - -#: lily-guile.cc:89 -#, c-format -msgid "(load path: `%s')" -msgstr "(chemin de chargement : « %s »)" - -#: lily-guile.cc:437 -#, c-format -msgid "cannot find property type-check for `%s' (%s)." -msgstr "vérification du type de propriété pour « %s » (%s) non trouvée" - -#: lily-guile.cc:440 -msgid "perhaps a typing error?" -msgstr "Probable faute de frappe" - -#: lily-guile.cc:447 -msgid "doing assignment anyway" -msgstr "affectation faite malgré tout" - -#: lily-guile.cc:459 -#, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" -msgstr "" -"la vérification du type de « %s » a échoué ; \n" -" la valeur « %s » doit être du type « %s »" +msgstr "meilleur résultat pour cette configuration « sys-count » : %f" -#: main.cc:109 -#, c-format -msgid "" -"This program is free software. It is covered by the GNU General Public\n" -"License and you are welcome to change it and/or distribute copies of it\n" -"under certain conditions. Invoke as `%s --warranty' for more\n" -"information.\n" -msgstr "" -"Ce logiciel est libre. Il est couvert par la licence GNU General Public \n" -"License, et vous êtes libre de le modifier et/ou d'en distribuer des copies\n" -"sous certaines conditions.\n" -"Invoquez « %s --warranty » pour plus d'informations.\n" +#: optimal-page-breaking.cc:207 page-turn-page-breaking.cc:248 +#: paper-score.cc:162 +msgid "Drawing systems..." +msgstr "Dessin des systèmes..." -#: main.cc:115 -msgid "" -" This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" -"\n" -" This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"General Public License for more details.\n" -"\n" -" You should have received a copy of the\n" -"GNU General Public License along with this program; if not, write to\n" -"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" -"Boston, MA 02111-1307, USA.\n" +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" msgstr "" -" Ce logiciel est libre; vous pouvez le redistribuer et/ou le modifier\n" -"selon les termes de la licence GNU General Public License version 2\n" -"tel que publiée par la Free Software Foundation.\n" -"\n" -" Ce logiciel est distribué dans l'espoir qu'il soit utile\n" -"mais sans AUCUNE GARANTIE; sans aucune garantie implicite\n" -"COMMERCIALE ou pour RÉPONDRE À UN BESOIN PARTICULIER.. Consulter\n" -"la license GNU General Public License pour plus de détails.\n" -"\n" -" Vous devriez avoir reçu une copie (consulter le fichier COPYING) de la\n" -"license GNU General Public License accompagnant ce logiciel; si absente, \n" -" écrire à la Free Software Foundation, Inc., 59 Temple Place - Suite 330, \n" -"Boston, MA 02111-1307, USA.\n" - -#: main.cc:146 -msgid "SYM[=VAL]" -msgstr "SYM[=VAL]" +"les marges ne sont pas en cohérence avec la longueur de ligne ;\n" +"retour aux valeurs par défaut" -#: main.cc:147 -msgid "" -"set Scheme option SYM to VAL (default: #t).\n" -"Use -dhelp for help." +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" msgstr "" -"affecte VAL (par défaut #t)\n" -"à l'option Scheme SYM.\n" -"Utiliser -dhelp pour avoir de l'aide." - -#: main.cc:150 -msgid "EXPR" -msgstr "EXPR" - -#: main.cc:150 -msgid "evaluate scheme code" -msgstr "évaluation du code Scheme" - -#. Bug in option parser: --output =foe is taken as an abbreviation -#. for --output-format. -#: main.cc:153 -msgid "FORMATs" -msgstr "FORMATs" +"les systèmes débordent de la page en raison de réglages de papier erronés ;\n" +"retour aux valeurs par défaut" -#: main.cc:153 -msgid "dump FORMAT,... Also as separate options:" +#: page-breaking.cc:277 +msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" msgstr "" -"produire FORMAT,...\n" -"Aussi comme options séparées :" - -#: main.cc:154 -msgid "generate PDF (default)" -msgstr "générer le PDF (par défaut)" - -#: main.cc:155 -msgid "generate PNG" -msgstr "générer le PNG" - -#: main.cc:156 -msgid "generate PostScript" -msgstr "générer le PostScript" - -#: main.cc:158 -msgid "FIELD" -msgstr "CHAMP" +"systems-per-page non défini :\n" +" min-systems-per-page et max-systems-per-page ignorés" -#: main.cc:158 -msgid "" -"dump header field FIELD to file\n" -"named BASENAME.FIELD" +#: page-breaking.cc:282 +msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" msgstr "" -"écrire le champ d'entête CHAMP dans le\n" -"fichier nommé BASENAME.CHAMP" +"min-systems-per-page supérieur à max-systems-per-page :\n" +" tous deux seront ignorés" -#: main.cc:160 -msgid "add DIR to search path" -msgstr "ajouter RÉPERTOIRE au chemin de recherche" +#: page-layout-problem.cc:403 +msgid "A page layout problem has been initiated that cannot accommodate footnotes." +msgstr "Un défaut de mise en page perturbe la gestion des notes de bas de page." -#: main.cc:161 -msgid "use FILE as init file" +#: page-layout-problem.cc:732 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" msgstr "" -"utiliser FICHIER comme\n" -"fichier d'initialisation" +"impossible de faire tenir la musique sur la page :\n" +" justification demandée, mais page déjà compressée" -#: main.cc:163 -msgid "USER, GROUP, JAIL, DIR" -msgstr "USER,GROUP,CAGE,RÉP" +#: page-layout-problem.cc:735 +#, c-format +msgid "cannot fit music on page: overflow is %f" +msgstr "impossible de faire tenir la musique sur la page. Débordement de %f" -#: main.cc:163 -msgid "" -"chroot to JAIL, become USER:GROUP\n" -"and cd into DIR" -msgstr "" -"chroot dans CAGE, devenir UTILISATEUR:GROUPE\n" -"et cd dans RÉPERTOIRE" +#: page-layout-problem.cc:737 +msgid "compressing music to fit" +msgstr "compression de la musique pour que cela tienne" -#: main.cc:166 -msgid "write output to FILE (suffix will be added)" -msgstr "" -"produire la sortie dans FICHIER \n" -"(adjonction automatique du suffixe)" +#: page-layout-problem.cc:1197 +msgid "staff-affinities should only decrease" +msgstr "staff-affinities devraient aller en ordre décroissant" -#: main.cc:167 -msgid "relocate using directory of lilypond program" +#: page-turn-page-breaking.cc:168 +#, c-format +msgid "page-turn-page-breaking: breaking from %d to %d" msgstr "" -"redétermine le chemin d'exécution\n" -"des composants de LilyPond" +"Saut de page et tourne (page-turn-page-breaking) :\n" +"coupure entre %d et %d" -#. Do not update the copyright years here, run `make grand-replace' -#: main.cc:238 -#, c-format -msgid "" -"Copyright (c) %s by\n" -"%s and others." +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." msgstr "" -"Copyright © %s détenu par\n" -"%s et autres." +"Impossible de cadrer sur une seule page ce qui précède la première tourne.\n" +"Envisagez de définir un numéro pair pour first-page-number." -#. No version number or newline here. It confuses help2man. -#: main.cc:265 +#: page-turn-page-breaking.cc:230 #, c-format -msgid "Usage: %s [OPTION]... FILE..." -msgstr "Utilisation : %s [OPTIONS]... FICHIER..." - -#: main.cc:267 -msgid "Typeset music and/or produce MIDI from FILE." -msgstr "Composer la musique ou jouer en format MIDI à partir du FICHIER" - -#: main.cc:269 -msgid "LilyPond produces beautiful music notation." -msgstr "LilyPond produit une jolie notation musicale" +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "Calcul des sauts de page et de ligne (%d sauts de pages possibles)..." -#: main.cc:271 +#: page-turn-page-breaking.cc:300 #, c-format -msgid "For more information, see %s" -msgstr "Pour plus d'informations, voir %s" - -#: main.cc:273 -msgid "Options:" -msgstr "Options :" +msgid "break starting at page %d" +msgstr "saut intervenant à la page %d" -#: main.cc:327 +#: page-turn-page-breaking.cc:301 #, c-format -msgid "expected %d arguments with jail, found: %u" -msgstr "une cage requiert %d arguments, il y en a %u" +msgid "\tdemerits: %f" +msgstr " démérites : %f" -#: main.cc:341 +#: page-turn-page-breaking.cc:302 #, c-format -msgid "no such user: %s" -msgstr "utilisateur inconnu : « %s »" +msgid "\tsystem count: %d" +msgstr " nombre de systèmes : %d" -#: main.cc:343 +#: page-turn-page-breaking.cc:303 #, c-format -msgid "cannot get user id from user name: %s: %s" -msgstr "" -"impossible de repérer l'identifiant utilisateur à partir du nom d'utilisateur :\n" -"%s : %s" +msgid "\tpage count: %d" +msgstr " nombre de pages : %d" -#: main.cc:358 +#: page-turn-page-breaking.cc:304 #, c-format -msgid "no such group: %s" -msgstr "groupe inconnu : %s" +msgid "\tprevious break: %d" +msgstr " coupure précédente : %d" -#: main.cc:360 +#: pango-font.cc:205 #, c-format -msgid "cannot get group id from group name: %s: %s" +msgid "" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" msgstr "" -"impossible de repérer l'identifiant groupe à partir du nom de groupe :\n" -"%s : %s " - -#: main.cc:368 -#, c-format -msgid "cannot chroot to: %s: %s" -msgstr "impossible de chrooter vers : %s : %s" - -#: main.cc:375 -#, c-format -msgid "cannot change group id to: %d: %s" -msgstr "impossible de changer l'identifiant de groupe en %d : %s" +"Le glyphe n'a pas de nom alors que la fonte prend en charge leur nommage.\n" +"Glyphe U+%0X ignoré dans le fichier « %s »" -#: main.cc:381 +#: pango-font.cc:242 #, c-format -msgid "cannot change user id to: %d: %s" -msgstr "impossible de changer l'identifiant utilisateur en %d : %s" +msgid "no PostScript font name for font `%s'" +msgstr "« %s » n'est pas un fichier de fonte PostScript" -#: main.cc:387 -#, c-format -msgid "cannot change working directory to: %s: %s" -msgstr "impossible de changer le répertoire de travail en %s : %s" +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "Caractère FreeType sans nom de police PostScript" -#: main.cc:628 +#: paper-book.cc:214 #, c-format -msgid "exception caught: %s" -msgstr "exception capturée : %s" +msgid "program option -dprint-pages not supported by backend `%s'" +msgstr "l'option -dprint-pages n'est pas opérationnelle avec le moteur %s" -#: key-signature-interface.cc:78 +#: paper-book.cc:233 #, c-format -msgid "No glyph found for alteration: %s" -msgstr "Pas de glyphe pour l'altération « %s »" +msgid "program option -dpreview not supported by backend `%s'" +msgstr "l'option -dpreview n'est pas opérationnelle avec le moteur %s" -#: key-signature-interface.cc:88 -msgid "alteration not found" -msgstr "altération non trouvée" +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "" +"Un saut explicite a été outrepassé par un autre événement.\n" +"Positionnez quelques contrôles de mesure (bar check) pour vérifier." -#: dots.cc:48 +#: paper-outputter-scheme.cc:41 #, c-format -msgid "dot `%s' not found" -msgstr "point « %s » introuvable" +msgid "Layout output to `%s'..." +msgstr "Sortie mise en page vers « %s »..." -#: translator.cc:359 +#: paper-score.cc:134 #, c-format -msgid "Two simultaneous %s events, junking this one" -msgstr "Deux événements %s simultanés, rejet de celui-ci" +msgid "Element count %d (spanners %d) " +msgstr "%d éléments dénombrés (%d extensions)" -#: translator.cc:360 -#, c-format -msgid "Previous %s event here" -msgstr "Événement %s précédent ici" +#: paper-score.cc:138 +msgid "Preprocessing graphical objects..." +msgstr "Pré-traitement des éléments graphiques..." -#: glissando-engraver.cc:105 -msgid "unterminated glissando" -msgstr "glissando non terminé" +#: parse-scm.cc:121 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "GUILE a signalé une erreur pour l'expression débutant ici" -#: text-spanner-engraver.cc:73 -msgid "cannot find start of text spanner" -msgstr "impossible de repérer le point de départ de l'extension de texte" +#: partial-iterator.cc:45 +msgid "trying to use \\partial after the start of a piece" +msgstr "\\partial ne devrait intervenir qu'en début de morceau" -#: text-spanner-engraver.cc:86 -msgid "already have a text spanner" -msgstr "a déjà une extension de texte" +#: pdf-scheme.cc:50 +#, c-format +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "" +"La conversion de la chaîne « %s » en UTF-16be a échoué :\n" +" %s" -#: text-spanner-engraver.cc:132 -msgid "unterminated text spanner" -msgstr "extension de texte non terminée" +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "répétition en pourcent non terminée" -#: clef.cc:65 -#, c-format -msgid "clef `%s' not found" -msgstr "clé `%s' introuvable" +#: performance.cc:54 +msgid "Track..." +msgstr "Piste..." -#. -#. Todo: should make typecheck? -#. -#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. -#. -#: time-signature-engraver.cc:75 +#: performance.cc:82 #, c-format -msgid "strange time signature found: %d/%d" -msgstr "Chiffrage de mesure inhabituel : %d/%d" +msgid "MIDI output to `%s'..." +msgstr "Sortie MIDI vers « %s »..." -#: lily-parser-scheme.cc:82 +#: phrasing-slur-engraver.cc:101 slur-engraver.cc:102 #, c-format -msgid "Changing working directory to: `%s'" -msgstr "Modification du répertoire de travail pour « %s »" +msgid "direction of %s invalid: %d" +msgstr "l'orientation de %s n'est pas valide : %d" -#: lily-parser-scheme.cc:99 -#, c-format -msgid "cannot find init file: `%s'" -msgstr "impossible de trouver le fichier d'initialisation « %s »" +#: phrasing-slur-engraver.cc:175 +msgid "unterminated phrasing slur" +msgstr "liaison de phrasé non terminée" -#: lily-parser-scheme.cc:118 -#, c-format -msgid "Processing `%s'" -msgstr "Traitement de « %s »" +#: phrasing-slur-engraver.cc:210 +msgid "cannot end phrasing slur" +msgstr "impossible de terminer la liaison de phrasé" -#: lily-parser-scheme.cc:204 -msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." -msgstr "" -"ly:parser-parse-string ne peut foncionner qu'avec un nouvel analyseur.\n" -"Utilisez plutôt ly:parser-include-string" +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: phrasing-slur-engraver.cc:230 +msgid "already have phrasing slur" +msgstr "il y a déjà une liaison de phrasé" -#: custos.cc:88 +#: piano-pedal-engraver.cc:279 #, c-format -msgid "custos `%s' not found" -msgstr "custode « %s » introuvable" +msgid "expect 3 strings for piano pedals, found: %ld" +msgstr "Les pédales de piano nécessitent trois cordes. Il y en a %ld" -#: program-option-scheme.cc:237 +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 +#: piano-pedal-performer.cc:104 #, c-format -msgid "no such internal option: %s" -msgstr "option interne inconnue : %s" - -#: rest-collision.cc:146 -msgid "cannot resolve rest collision: rest direction not set" -msgstr "collision de silences insoluble : positionnement du silence indéterminée" - -#: rest-collision.cc:160 rest-collision.cc:205 -msgid "too many colliding rests" -msgstr "trop de silences se chevauchent" - -#: episema-engraver.cc:75 -msgid "already have an episema" -msgstr "épisème déjà présent" - -#: episema-engraver.cc:88 -msgid "cannot find start of episema" -msgstr "impossible de trouver le début de l'épisème" +msgid "cannot find start of piano pedal: `%s'" +msgstr "début de la pédale de piano indéterminé : « %s »" -#: episema-engraver.cc:137 -msgid "unterminated episema" -msgstr "épisème non terminé" +#: piano-pedal-engraver.cc:340 +#, c-format +msgid "cannot find start of piano pedal bracket: `%s'" +msgstr "début du crochet de la pédale de piano indéterminé : « %s »" -#: grob-property.cc:34 +#: program-option-scheme.cc:235 #, c-format -msgid "%d: %s" -msgstr "%d : %s" +msgid "no such internal option: %s" +msgstr "option interne inconnue : %s" -#: grob-property.cc:173 +#: property-iterator.cc:93 #, c-format -msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" -msgstr "dépendance circulaire : calculation-in-progress rencontrée pour #'%s (%s)" +msgid "not a grob name, `%s'" +msgstr "« %s » n'est pas un nom d'objet graphique (grob)" + +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " +msgstr "échec de la vérification d'octave, a obtenu : " -#: relocate.cc:54 +#: relocate.cc:52 #, c-format msgid "Setting %s to %s" msgstr "%s fixé à %s" -#: relocate.cc:74 +#. this warning should only be printed in debug mode! +#: relocate.cc:73 #, c-format msgid "no such file: %s for %s" -msgstr "fichier inexistant : %s pour %s" +msgstr "fichier inexistant : %s pour %s" +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode #: relocate.cc:84 relocate.cc:102 #, c-format msgid "no such directory: %s for %s" -msgstr "répertoire inexistant : %s pour %s" +msgstr "répertoire inexistant : %s pour %s" -#: relocate.cc:94 +#: relocate.cc:93 #, c-format msgid "%s=%s (prepend)\n" msgstr "%s=%s (ajout)\n" @@ -2614,183 +3003,102 @@ msgstr "%s=%s (ajout)\n" #: relocate.cc:124 #, c-format msgid "not relocating, no %s/ or current/ found under %s" -msgstr "relocalisation non effectuée, ni %s/ ni courrant/ n'existent sous %s" +msgstr "relocalisation non effectuée, ni %s/ ni courant/ n'existent sous %s" -#: relocate.cc:135 +#: relocate.cc:134 #, c-format msgid "Relocation: compile datadir=%s, new datadir=%s" -msgstr "Relocalisation : datadir de compilation=%s, nouveau datadir=%s" +msgstr "Relocalisation : datadir de compilation = %s, nouveau datadir = %s" -#: relocate.cc:148 +#: relocate.cc:146 #, c-format msgid "Relocation: framework_prefix=%s" -msgstr "Relocalisation : framework_prefix=%s" +msgstr "Relocalisation : framework_prefix = %s" -#: relocate.cc:189 +#: relocate.cc:186 #, c-format -msgid "Relocation: is absolute: argv0=%s" -msgstr "Relocalisation : argv0=%s est absolu" +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "Relocalisation absolue : argv0=%s\n" -#: relocate.cc:196 +#: relocate.cc:192 #, c-format -msgid "Relocation: from cwd: argv0=%s" -msgstr "Relocalisation : argv0=%s à partir du répertoire courant" +msgid "Relocation: from cwd: argv0=%s\n" +msgstr "Relocalisation à partir du répertoire courant : argv0=%s\n" -#: relocate.cc:213 +#: relocate.cc:208 #, c-format msgid "" "Relocation: from PATH=%s\n" "argv0=%s" msgstr "" -"Relocalisation : à partir de PATH=%s\n" +"Relocalisation : à partir de PATH=%s\n" "argv0=%s" -#: relocate.cc:240 +#: relocate.cc:235 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" msgstr "LILYPONDPREFIX est obsolète, utiliser LILYPOND_DATADIR" -#: relocate.cc:367 +#: relocate.cc:360 #, c-format msgid "Relocation file: %s" -msgstr "Fichier de relocalisation : %s" +msgstr "Fichier de relocalisation : %s" -#: relocate.cc:373 source-file.cc:65 +#: relocate.cc:364 source-file.cc:65 #, c-format msgid "cannot open file: `%s'" -msgstr "Impossible d'ouvrir le fichier « %s »" +msgstr "Impossible d'ouvrir le fichier « %s »" -#: relocate.cc:403 +#: relocate.cc:394 #, c-format msgid "Unknown relocation command %s" -msgstr "Commande de relocalisation inconnue : %s" - -#: translator-group.cc:188 -#, c-format -msgid "cannot find: `%s'" -msgstr " « %s » inconnu(e)" - -#: phrasing-slur-engraver.cc:157 -msgid "unterminated phrasing slur" -msgstr "liaison de phrasé non terminée" - -#: lyric-engraver.cc:176 -msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." -msgstr "Syllabe sans note de rattachement. Utiliser \\lyricsto ou associatedVoice." - -#: page-breaking.cc:248 -msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" -msgstr "" -"systems-per-page non défini :\n" -" min-systems-per-page et max-systems-per-page ignorés" - -#: page-breaking.cc:253 -msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" -msgstr "" -"min-systems-per-page supérieur à max-systems-per-page :\n" -" tous deux seront ignorés" - -#: performance.cc:54 -msgid "Track..." -msgstr "Piste..." - -#: performance.cc:83 -msgid "MIDI channel wrapped around" -msgstr "Bouclage du canal MIDI" - -#: performance.cc:84 -msgid "remapping modulo 16" -msgstr "réaffectation modulo 16" +msgstr "Commande de relocalisation inconnue : %s" -#: performance.cc:111 -#, c-format -msgid "MIDI output to `%s'..." -msgstr "Sortie MIDI vers « %s »..." +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "tête rythmique non rattachée à un empilement rythmique" -#: tuplet-engraver.cc:107 -msgid "No tuplet to end" -msgstr "Aucun n-olet à terminer" +#: rest-collision.cc:146 +msgid "cannot resolve rest collision: rest direction not set" +msgstr "collision de silences insoluble : positionnement du silence indéterminée" -#: gregorian-ligature-engraver.cc:70 -#, c-format -msgid "\\%s ignored" -msgstr "\\%s ignoré(e)" +#: rest-collision.cc:157 rest-collision.cc:266 +msgid "too many colliding rests" +msgstr "trop de silences se chevauchent" -#: gregorian-ligature-engraver.cc:75 +#: rest.cc:192 #, c-format -msgid "implied \\%s added" -msgstr "\\%s implicite ajouté(e)" - -#. ligature may not start with 2nd head of pes or flexa -#: gregorian-ligature-engraver.cc:224 -msgid "cannot apply `\\~' on first head of ligature" -msgstr "Impossible d'appliquer « \\~ » à la première tête de ligature" - -#. (pitch == prev_pitch) -#: gregorian-ligature-engraver.cc:236 -msgid "cannot apply `\\~' on heads with identical pitch" -msgstr "Impossible d'appliquer « \\~ » à des têtes ayant la même hauteur" - -#: chord-tremolo-engraver.cc:88 -msgid "No tremolo to end" -msgstr "Il n'y a aucun trémolo à terminer" - -#: chord-tremolo-engraver.cc:109 -msgid "unterminated chord tremolo" -msgstr "accord en tremolo non terminé" - -#: axis-group-engraver.cc:94 -msgid "Axis_group_engraver: vertical group already has a parent" -msgstr "Axis_group_engraver : le groupe vertical a déjà un parent" - -#: axis-group-engraver.cc:95 -msgid "are there two Axis_group_engravers?" -msgstr "Axis_group_engraver redondant" - -#: axis-group-engraver.cc:96 -msgid "removing this vertical group" -msgstr "retrait de ce groupe vertical" +msgid "rest `%s' not found" +msgstr "silence « %s » inconnu" -#: cluster.cc:120 +#: score-engraver.cc:78 #, c-format -msgid "unknown cluster style `%s'" -msgstr "style de cluster inconnu : « %s »" - -#: cluster.cc:157 -msgid "junking empty cluster" -msgstr "mise au rebut d'un cluster vide" +msgid "cannot find `%s'" +msgstr "impossible de trouver « %s »" -#: context-property.cc:42 -msgid "need symbol arguments for \\override and \\revert" -msgstr "\\override et \\revert requièrent des arguments symboliques" +#: score-engraver.cc:80 +msgid "Music font has not been installed properly." +msgstr "Les fontes musicales n'ont pas été installées correctement." -#: source-file.cc:85 +#: score-engraver.cc:82 #, c-format -msgid "expected to read %d characters, got %d" -msgstr "au lieu de %d caractères à lire, il y en a %d" - -#: axis-group-interface.cc:631 -msgid "an outside-staff object should have a direction, defaulting to up" -msgstr "" -"un objet externe à la portée devrait avoir un positionnement.\n" -"Placé par défaut au-dessus." +msgid "Search path `%s'" +msgstr "Chemin de recherche : « %s »" -#: coherent-ligature-engraver.cc:111 -#, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" -msgstr "Coherent_ligature_engraver : initialise `spacing-increment=0.01': ptr=%ul" +#: score-engraver.cc:84 +msgid "Aborting" +msgstr "Abandon" -#: percent-repeat-engraver.cc:148 -msgid "unterminated percent repeat" -msgstr "répétition en pourcent non terminée" +#: score.cc:172 +msgid "already have music in score" +msgstr "il y a déjà de la musique dans la partition" -#: note-head.cc:76 -#, c-format -msgid "none of note heads `%s' or `%s' found" -msgstr "tête de note « %s » ou « %s » non trouvée" +#: score.cc:173 +msgid "this is the previous music" +msgstr "voici la musique précédente" -#: relative-octave-check.cc:49 -msgid "Failed octave check, got: " -msgstr "échec de la vérification d'octave, a obtenu : " +#: score.cc:178 +msgid "errors found, ignoring music expression" +msgstr "suite à des erreurs répétées, l'expression musicale sera ignorée" #. FIXME: #: script-engraver.cc:113 @@ -2799,683 +3107,524 @@ msgstr "ne sait comment interpréter l'articulation" #: script-engraver.cc:114 msgid " scheme encoding: " -msgstr "encodage Scheme : " - -#: all-font-metrics.cc:156 -#, c-format -msgid "cannot find font: `%s'" -msgstr "fonte « %s » introuvable" - -#: property-iterator.cc:85 -#, c-format -msgid "not a grob name, `%s'" -msgstr " « %s » n'est pas un nom d'objet graphique (grob)" - -#: bar-check-iterator.cc:84 -#, c-format -msgid "barcheck failed at: %s" -msgstr "échec du contrôle de mesure (barcheck) à : %s" - -#: stem.cc:116 -msgid "weird stem size, check for narrow beams" -msgstr "taille de hampe bizarre ; vérifier la présence de liens étroits" +msgstr "encodage Scheme : " -#: stem.cc:657 -#, c-format -msgid "flag `%s' not found" -msgstr "crochet inconnu : « %s »" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" +msgstr "direction ne saurait être CENTER pour ly:skyline-pair::skyline" -#: stem.cc:673 -#, c-format -msgid "flag stroke `%s' not found" -msgstr "type de crochet inconnu : « %s »" +#: slur-engraver.cc:176 +msgid "unterminated slur" +msgstr "liaison non terminée" -#: global-context-scheme.cc:96 global-context-scheme.cc:114 -msgid "no music found in score" -msgstr "Il n'y a pas de musique dans cette partition" +#: slur-engraver.cc:211 +msgid "cannot end slur" +msgstr "impossible de terminer la liaison" -#: global-context-scheme.cc:104 -msgid "Interpreting music... " -msgstr "Interprétation en cours de la musique..." +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: slur-engraver.cc:231 +msgid "already have slur" +msgstr "une liaison est déjà en place" -#: global-context-scheme.cc:127 +#: slur.cc:430 #, c-format -msgid "elapsed time: %.2f seconds" -msgstr "temps écoulé : %.2f secondes" +msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgstr "" +"objet graphique (grob) non concerné par la liaison : %s.\n" +"avoid-slur non définie ?" -#: translator-group-ctors.cc:40 +#: source-file.cc:85 #, c-format -msgid "fatal error. Couldn't find type: %s" -msgstr "Erreur fatale. Type inconnu : %s" - -#: mensural-ligature.cc:171 -msgid "Mensural_ligature: unexpected case fall-through" -msgstr "Mensural_ligature : cas inattendu et non interprétable" +msgid "expected to read %d characters, got %d" +msgstr "au lieu de %d caractères à lire, il y en a %d" -#: mensural-ligature.cc:233 -msgid "Mensural_ligature: (join_right == 0)" -msgstr "Mensural_ligature : (joint_right == 0)" +#: staff-performer.cc:275 +msgid "MIDI channel wrapped around" +msgstr "Bouclage du canal MIDI" -#: page-turn-page-breaking.cc:168 -#, c-format -msgid "page-turn-page-breaking: breaking from %d to %d" -msgstr "" -"Saut de page et tourne (page-turn-page-breaking) :\n" -"coupure entre %d et %d" +#: staff-performer.cc:276 +msgid "remapping modulo 16" +msgstr "réaffectation modulo 16" -#: page-turn-page-breaking.cc:217 -msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." -msgstr "" -"Impossible de cadrer sur une seule page ce qui précède la première tourne.\n" -"Envisagez de définir un numéro pair pour first-page-number." +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" +msgstr "durée du tremolo trop longue" -#: page-turn-page-breaking.cc:230 +#: stem-engraver.cc:162 #, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." -msgstr "Calcul des sauts de page et de ligne (%d sauts de pages possibles)..." +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "Ajout d'une tête de note à une hampe incompatible (type = %d/%d)" -#: page-turn-page-breaking.cc:300 -#, c-format -msgid "break starting at page %d" -msgstr "saut intervenant à la page %d" +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" +msgstr "la source devrait spécifier des voix polyphoniques" -#: page-turn-page-breaking.cc:301 -#, c-format -msgid "\tdemerits: %f" -msgstr " démérites : %f" +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" +msgstr "taille de hampe bizarre ; vérifier la présence de liens étroits" -#: page-turn-page-breaking.cc:302 +#: system.cc:200 #, c-format -msgid "\tsystem count: %d" -msgstr " nombre de systèmes : %d" +msgid "Element count %d" +msgstr "%d éléments dénombrés." -#: page-turn-page-breaking.cc:303 +#: system.cc:480 #, c-format -msgid "\tpage count: %d" -msgstr " nombre de pages : %d" +msgid "Grob count %d" +msgstr "%d objet graphiques (grob) dénombrés." -#: page-turn-page-breaking.cc:304 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 #, c-format -msgid "\tprevious break: %d" -msgstr " coupure précédente : %d" - -#: lily-parser.cc:106 -msgid "Parsing..." -msgstr "Analyse..." +msgid "Cyclic markup detected: %s" +msgstr "Markup avec référence circulaire : %s" -#: lily-parser.cc:134 -msgid "braces do not match" -msgstr "accolades non pairées" +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 +#, c-format +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "" +"Cascade de markups dépassant la valeur maximale de %d ;\n" +"Markup : %s" -#: score.cc:178 -msgid "already have music in score" -msgstr "il y a déjà de la musique dans la partition" +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" +msgstr "impossible de repérer le point de départ de l'extension de texte" -#: score.cc:179 -msgid "this is the previous music" -msgstr "voici la musique précédente" +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" +msgstr "extension de texte déjà présente" -#: score.cc:184 -msgid "errors found, ignoring music expression" -msgstr "suite à des erreurs répétées, l'expression musicale sera ignorée" +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" +msgstr "extension de texte non terminée" -#: change-iterator.cc:34 -#, c-format -msgid "cannot change `%s' to `%s'" -msgstr "impossible de changer « %s » en « %s »" +#: tie-engraver.cc:117 +msgid "unterminated tie" +msgstr "liaison de prolongation non terminée" -#. FIXME: constant error message. -#: change-iterator.cc:93 -msgid "cannot find context to switch to" -msgstr "impossible de repérer le contexte vers lequel commuter" +#: tie-engraver.cc:348 +msgid "lonely tie" +msgstr "liaison de prolongation orpheline" -#. We could change the current translator's id, but that would make -#. errors hard to catch. #. -#. last->translator_id_string () = get_change -#. ()->change_to_id_string (); -#: change-iterator.cc:102 +#. Todo: should make typecheck? +#. +#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. +#. +#: time-signature-engraver.cc:75 #, c-format -msgid "not changing to same context type: %s" -msgstr "pas de changement vers le même type de contexte : %s" - -#. FIXME: uncomprehensable message -#: change-iterator.cc:106 -msgid "none of these in my family" -msgstr "aucun de ceux-ci dans ma famille" +msgid "strange time signature found: %d/%d" +msgstr "Chiffrage de mesure inhabituel : %d/%d" #. If there is no such symbol, we default to the numbered style. #. (Here really with a warning!) -#: time-signature.cc:94 +#: time-signature.cc:122 #, c-format msgid "time signature symbol `%s' not found; reverting to numbered style" msgstr "" -"symbole de chiffrage de mesure « %s » inconnu ;\n" -"retour à un style numérique" +"symbole de chiffrage de mesure « %s » inconnu ;\n" +" retour à un style numérique." -#: grob-interface.cc:68 +#: translator-ctors.cc:65 #, c-format -msgid "Unknown interface `%s'" -msgstr "Interface inconnue : « %s »" +msgid "unknown translator: `%s'" +msgstr "translateur inconnu : « %s »" -#: grob-interface.cc:79 +#: translator-group-ctors.cc:40 #, c-format -msgid "Grob `%s' has no interface for property `%s'" -msgstr "L'objet graphique (Grob) « %s » n'a pas d'interface pour la propriété « %s »" +msgid "fatal error. Couldn't find type: %s" +msgstr "Erreur fatale. Type inconnu : %s" -#: open-type-font.cc:44 +#: translator-group.cc:188 #, c-format -msgid "cannot allocate %lu bytes" -msgstr "impossible d'allouer %lu octets" +msgid "cannot find: `%s'" +msgstr "« %s » inconnu(e)" -#: open-type-font.cc:48 +#: translator.cc:326 #, c-format -msgid "cannot load font table: %s" -msgstr "impossible de charger la table des fontes : %s" +msgid "Two simultaneous %s events, junking this one" +msgstr "Deux événements %s simultanés, rejet de celui-ci" -#: open-type-font.cc:53 +#: translator.cc:327 #, c-format -msgid "FreeType error: %s" -msgstr "Erreur FreeType : %s" +msgid "Previous %s event here" +msgstr "Événement %s précédent ici" -#: open-type-font.cc:111 +#: ttf.cc:480 ttf.cc:528 #, c-format -msgid "unsupported font format: %s" -msgstr "format de police non supporté : %s" +msgid "font index %d too large for font `%s', using index 0" +msgstr "" +"index %d trop grand pour la fonte « %s » ;\n" +"réindexé sur 0" -#: open-type-font.cc:113 -#, c-format -msgid "error reading font file %s: %s" -msgstr "erreur de lecture du fichier de fontes %s : %s" +#: ttf.cc:512 ttf.cc:562 +msgid "font index must be non-negative, using index 0" +msgstr "l'index de fonte ne peut être négatif ; réindexé sur 0" -#: open-type-font.cc:188 -#, c-format -msgid "FT_Get_Glyph_Name () Freetype error: %s" -msgstr "erreur Freetype FT_Get_Glyph_Name () : %s" +#: tuplet-engraver.cc:110 +msgid "No tuplet to end" +msgstr "Aucun n-olet à terminer" -#: midi-stream.cc:39 +#: vaticana-ligature-engraver.cc:400 #, c-format -msgid "cannot open for write: %s: %s" -msgstr "impossible d'ouvrir le fichier en écriture : %s : %s" +msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" +msgstr "" +"préfixe(s) « %s » ignoré(s) pour la tête de note,\n" +"selon les restrictions du style de ligature sélectionné" -#: midi-stream.cc:55 +#: vaticana-ligature-engraver.cc:466 +msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch. The ligature should be split." +msgstr "" +"Utilisation ambigüe de points dans une ligature : plusieurs notes\n" +"pointées ont la même hauteur. La ligature devrait être coupée." + +#: vaticana-ligature-engraver.cc:524 +msgid "This ligature has a dotted head followed by a non-dotted head. The ligature should be split after the last dotted head before this head." +msgstr "" +"Cette ligature comporte une note pointée suivie d'une non pointée.\n" +"La ligature devrait s'interrompre entre ces deux notes." + +#: vaticana-ligature-engraver.cc:736 #, c-format -msgid "cannot write to file: `%s'" -msgstr "impossible d'écrire dans le fichier « %s »" +msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" +msgstr "Vaticana_ligature_engraver : fixé « spacing-increment = %f » : ptr=%ul" + +#: vaticana-ligature.cc:94 +msgid "flexa-height undefined; assuming 0" +msgstr "Vaticana_ligature : décalage en X indéfini ; ramené à 0" + +#: vaticana-ligature.cc:99 +msgid "ascending vaticana style flexa" +msgstr "flexe de style vaticana ascendant" + +#. fixme: be more verbose. +#: volta-engraver.cc:110 +msgid "cannot end volta spanner" +msgstr "extension de reprise sans terminaison" + +#: volta-engraver.cc:120 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "extension de reprise déjà présente, fin prématurée de celle-ci" + +#: volta-engraver.cc:124 +msgid "also already have an ended spanner" +msgstr "a déjà une extension terminée" + +#: volta-engraver.cc:125 +msgid "giving up" +msgstr "abandon" + +#: parser.yy:161 parser.yy:175 +msgid "Too much lookahead" +msgstr "Trop d'anticipation" + +#: parser.yy:835 parser.yy:1284 +msgid "not a context mod" +msgstr "ceci n'est pas un module de contexte" -#: parser.yy:820 +#: parser.yy:1027 msgid "\\paper cannot be used in \\score, use \\layout instead" msgstr "dans la section \\score, utiliser \\layout au lieu de \\paper" -#: parser.yy:844 +#: parser.yy:1051 msgid "need \\paper for paper block" msgstr "\\paper est nécessaire pour définir les paramètres de la page" -#: parser.yy:1363 -msgid "only \\consists takes non-string argument." -msgstr "seul \\consists peut prendre un argument autre qu'une chaîne" +#: parser.yy:1204 +msgid "Ignoring non-music expression" +msgstr "Expression non musicale ignorée" -#: parser.yy:1376 +#: parser.yy:2044 +msgid "only \\consists and \\remove take non-string argument." +msgstr "seuls \\consists et \\remove peuvent prendre un argument autre qu'une chaîne" + +#: parser.yy:2057 msgid "Grob name should be alphanumeric" msgstr "Un nom de Grob devrait être alphanumérique" -#: parser.yy:1685 -msgid "second argument must be pitch list" -msgstr "le second argument doit être une liste de hauteurs" +#: parser.yy:2261 +msgid "not a rhythmic event" +msgstr "événement non rythmique" -#: parser.yy:1716 parser.yy:1721 parser.yy:2194 +#: parser.yy:2357 parser.yy:2362 msgid "have to be in Lyric mode for lyrics" -msgstr "doit être en mode Lyric pour des paroles" +msgstr "Des paroles requièrent d'utiliser le mode Lyric." -#: parser.yy:1818 +#: parser.yy:2477 msgid "expecting string as script definition" msgstr "chaîne requise pour définir un script" -#: parser.yy:1973 parser.yy:2024 +#: parser.yy:2637 parser.yy:2681 #, c-format msgid "not a duration: %d" msgstr "%d n'est pas une durée" -#: parser.yy:2148 +#: parser.yy:2800 msgid "have to be in Note mode for notes" -msgstr "doit être en mode Note pour des notes" +msgstr "Des notes requièrent d'utiliser le mode Note." -#: parser.yy:2209 +#: parser.yy:2855 msgid "have to be in Chord mode for chords" -msgstr "doit être en mode Chord pour des accords" +msgstr "Des accords requièrent d'utiliser le mode Chord." + +#: parser.yy:3115 +msgid "not a markup" +msgstr "n'est pas un « markup »" -#: lexer.ll:190 +#: lexer.ll:218 msgid "stray UTF-8 BOM encountered" msgstr "parasitage par UTF-8 BOM" -#: lexer.ll:194 +#: lexer.ll:221 msgid "Skipping UTF-8 BOM" msgstr "Escamotage d'UTF-8 BOM" -#: lexer.ll:249 +#: lexer.ll:279 #, c-format msgid "Renaming input to: `%s'" -msgstr "L'entrée a été renommée en « %s »" +msgstr "L'entrée a été renommée en « %s »" -#: lexer.ll:266 +#: lexer.ll:296 msgid "quoted string expected after \\version" msgstr "\\version doit être suivi d'une chaîne entre guillemets" -#: lexer.ll:270 +#: lexer.ll:300 msgid "quoted string expected after \\sourcefilename" msgstr "\\sourcefilename doit être suivi d'une chaîne entre guillemets" -#: lexer.ll:274 +#: lexer.ll:304 msgid "integer expected after \\sourcefileline" msgstr "\\sourcefilename doit être suivi d'un nombre entier" -#: lexer.ll:287 -msgid "EOF found inside a comment" -msgstr "Fin de fichier (EOF) à l'intérieur du commentaire" - -#: lexer.ll:302 +#: lexer.ll:327 msgid "\\maininput not allowed outside init files" msgstr "\\maininput n'est pas permis en dehors des fichiers d'initialisation" -#: lexer.ll:326 +#: lexer.ll:351 #, c-format msgid "wrong or undefined identifier: `%s'" -msgstr "identificateur erroné ou non défini : « %s »" +msgstr "identificateur erroné ou non défini : « %s »" + +#: lexer.ll:377 +msgid "string expected after \\include" +msgstr "\\include doit être suivi d'une chaîne entre guillemets" #. backup rule -#: lexer.ll:335 +#: lexer.ll:387 msgid "end quote missing" msgstr "absence de guillemet fermant" -#: lexer.ll:485 +#: lexer.ll:558 msgid "Brace found at end of lyric. Did you forget a space?" -msgstr "Accolade repérée à la fin d'une parole. Manquerait-il une espace ?" +msgstr "Accolade repérée à la fin d'une parole. Manquerait-il une espace ?" -#: lexer.ll:595 +#: lexer.ll:672 msgid "Brace found at end of markup. Did you forget a space?" -msgstr "Accolade repérée à la fin d'un \"markup\". Manquerait-il une espace ?" +msgstr "Accolade repérée à la fin d'un « markup ». Manquerait-il une espace ?" + +#: lexer.ll:684 +msgid "EOF found inside a comment" +msgstr "Fin de fichier (EOF) à l'intérieur du commentaire" -#: lexer.ll:699 +#: lexer.ll:782 #, c-format -msgid "invalid character: `%c'" -msgstr "caractère invalide : « %c »" +msgid "invalid character: `%s'" +msgstr "caractère invalide : « %s »" -#: lexer.ll:814 lexer.ll:815 +#: lexer.ll:903 lexer.ll:904 #, c-format msgid "unknown escaped string: `\\%s'" -msgstr "chaîne d'échappement inconnue : « \\%s »" +msgstr "chaîne d'échappement inconnue : « \\%s »" + +#: lexer.ll:1186 lexer.ll:1187 +msgid "non-UTF-8 input" +msgstr "la source n'est pas en UTF-8" -#: lexer.ll:924 lexer.ll:925 +#: lexer.ll:1230 lexer.ll:1231 #, c-format msgid "file too old: %s (oldest supported: %s)" msgstr "" -"%s est plus qu'obsolète ;\n" +"%s est plus qu'obsolète ;\n" "le plus ancien pouvant être supporté est %s" -#: lexer.ll:925 lexer.ll:926 +#: lexer.ll:1231 lexer.ll:1232 msgid "consider updating the input with the convert-ly script" msgstr "Envisagez la mise à jour de la source à l'aide du script convert-ly" -#: lexer.ll:931 lexer.ll:932 -#, c-format -msgid "program too old: %s (file requires: %s)" -msgstr "Programme plus qu'obsolète : %s (le fichier requiert %s)" - -#: documentation-lib.scm:59 -#, scheme-format -msgid "Processing ~S..." -msgstr "Traitement de ~S..." - -#: documentation-lib.scm:176 -#, scheme-format -msgid "Writing ~S..." -msgstr "Écriture de ~S..." - -#: documentation-lib.scm:198 -#, scheme-format -msgid "cannot find description for property ~S (~S)" -msgstr "impossible de trouver une description de la propriété ~S (~S)" - -#: parser-clef.scm:141 parser-clef.scm:181 -#, scheme-format -msgid "unknown clef type `~a'" -msgstr "type de clef inconnu : « ~a »" - -#: parser-clef.scm:142 parser-clef.scm:182 -#, scheme-format -msgid "supported clefs: ~a" -msgstr "clefs reconnues : ~a" - -#: document-backend.scm:132 -#, scheme-format -msgid "pair expected in doc ~s" -msgstr "le document ~s devrait contenir une paire" - -#: document-backend.scm:189 -#, scheme-format -msgid "cannot find interface for property: ~S" -msgstr "impossible de trouver l'interface pour la propriété ~S" - -#: document-backend.scm:199 -#, scheme-format -msgid "unknown Grob interface: ~S" -msgstr "interface d'objet graphique (Grob) inconnue : ~S" - -#: framework-eps.scm:108 -#, scheme-format -msgid "Writing ~a..." -msgstr "Écriture de ~a..." - -#: define-music-properties.scm:21 define-grob-properties.scm:21 -#: define-context-properties.scm:31 -#, scheme-format -msgid "symbol ~S redefined" -msgstr "symbole « ~S » redéfini" - -#: paper.scm:115 -msgid "set-global-staff-size: not in toplevel scope" -msgstr "set-global-staff-size n'est pas à un niveau de portée globale" - -#: paper.scm:296 -#, scheme-format -msgid "This is not a \\layout {} object, ~S" -msgstr "~S n'est pas un objet de \\layout {}" - -#: paper.scm:308 -#, scheme-format -msgid "Unknown paper size: ~a" -msgstr "Format de papier inconnu : ~a" - -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:323 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" -msgstr "#(set-paper-size ..) doit être dans la section \\paper { ... }" - -#: lily.scm:225 -msgid "Using (ice-9 curried-definitions) module\n" -msgstr "Utilisation du module (ice-9 curried-definitions)\n" - -#: lily.scm:230 -msgid "Guile 1.8\n" -msgstr "Guile 1.8\n" - -#: lily.scm:290 -#, scheme-format -msgid "cannot find: ~A" -msgstr "impossible de trouver ~A" - -#: lily.scm:350 -#, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" -msgstr "type d'argument erroné pour ~a. Attendait ~a, ~s trouvé" - -#: lily.scm:716 -msgid "Compilation successfully completed" -msgstr "Compilation menée à son terme, avec succès." - -#: lily.scm:717 -msgid "Compilation completed with warnings or errors" -msgstr "Compilation menée à son terme, avec des avertissements ou erreurs." - -#: lily.scm:779 -#, scheme-format -msgid "job ~a terminated with signal: ~a" -msgstr "le travail ~a s'est terminé avec le signal ~a" - -#: lily.scm:782 -#, scheme-format -msgid "" -"logfile ~a (exit ~a):\n" -"~a" -msgstr "" -"fichier journal ~a (sortie ~a) :\n" -"~a" - -#: lily.scm:804 lily.scm:882 -#, scheme-format -msgid "failed files: ~S" -msgstr "erreur sur les fichiers ~S" - -#: lily.scm:873 -#, scheme-format -msgid "Redirecting output to ~a..." -msgstr "Redirection de la sortie vers ~a..." - -#: lily.scm:892 -#, scheme-format -msgid "Invoking `~a'...\n" -msgstr "Appel de « ~a »...\n" - -#: graphviz.scm:64 -#, scheme-format -msgid "Writing graph `~a'..." -msgstr "Écriture du graphique « ~a »..." - -#: framework-svg.scm:84 -#, scheme-format -msgid "Updating font into: ~a" -msgstr "Actualisation de la fonte dans ~a" - -#: layout-beam.scm:40 -#, scheme-format -msgid "Error in beam quanting. Expected (~S,~S) found ~S." -msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé." - -#: layout-beam.scm:54 -#, scheme-format -msgid "Error in beam quanting. Expected ~S 0, found ~S." -msgstr "Erreur de définition de ligature : attendait ~S 0, repéré ~S." - -#: modal-transforms.scm:38 -msgid "'from' pitch not in scale; ignoring" -msgstr "hauteur de départ (from) absente de la gamme ; rien à transposer" - -#: modal-transforms.scm:42 modal-transforms.scm:75 -msgid "'to' pitch not in scale; ignoring" -msgstr "hauteur d'arrivée (to) absente de la gamme ; rien à transposer" - -#: modal-transforms.scm:46 -msgid "pitch to be transposed not in scale; ignoring" -msgstr "hauteur à laquelle transposer absente de la gamme ; ignorée" - -#: modal-transforms.scm:71 -msgid "'around' pitch not in scale; ignoring" -msgstr "hauteur pivot (around) absente de la gamme : rien à transposer" - -#: modal-transforms.scm:79 -msgid "pitch to be inverted not in scale; ignoring" -msgstr "hauteur d'inversion absente de la gamme : ignorée" - -#: modal-transforms.scm:95 -msgid "negative replication count; ignoring" -msgstr "compteur de réplication négatif : rien à transposer" +#: lexer.ll:1237 lexer.ll:1238 +#, c-format +msgid "program too old: %s (file requires: %s)" +msgstr "Programme plus qu'obsolète : %s (le fichier requiert %s)" -#: backend-library.scm:29 ps-to-png.scm:68 +#: backend-library.scm:27 #, scheme-format msgid "Invoking `~a'..." -msgstr "Appel de « ~a »..." +msgstr "Appel de « ~a »..." -#: backend-library.scm:34 +#: backend-library.scm:31 #, scheme-format -msgid "`~a' failed (~a)" -msgstr "échec de « ~a » (~a)" +msgid "`~a' failed (~a)\n" +msgstr "échec de « ~a » (~a)\n" -#: backend-library.scm:94 +#: backend-library.scm:90 #, scheme-format -msgid "Converting to `~a'..." -msgstr "Conversion à « ~a »..." +msgid "Converting to `~a'...\n" +msgstr "Conversion à « ~a »...\n" #. Do not try to guess the name of the png file, #. GS produces PNG files like BASE-page%d.png. -#: backend-library.scm:104 +#: backend-library.scm:99 #, scheme-format msgid "Converting to ~a..." -msgstr "Conversion à ~a..." +msgstr "Conversion à « ~a »..." -#: backend-library.scm:142 +#: backend-library.scm:137 #, scheme-format msgid "Writing header field `~a' to `~a'..." -msgstr "écriture du champ d'entête « ~a » dans « ~a »..." +msgstr "écriture du champ d'entête « ~a » dans « ~a »..." -#: backend-library.scm:192 +#: backend-library.scm:187 #, scheme-format msgid "missing stencil expression `~S'" -msgstr "absence d'expression stencil « ~S »" - -#: to-xml.scm:191 -#, scheme-format -msgid "assertion failed: ~S" -msgstr "erreur d'assertion : ~S" +msgstr "absence d'expression stencil « ~S »" -#: chord-entry.scm:49 +#: chord-entry.scm:52 #, scheme-format msgid "Spurious garbage following chord: ~A" -msgstr "Information incompréhensible à la suite de l'accord « ~A »" - -#: lily-library.scm:758 -msgid "" -"Find the index between @var{start} and @var{end} (an integer)\n" -"which produces the closest match to @var{target-val} if\n" -"applied to function @var{getter}." -msgstr "" -"Recherche un index compris entre @var{début} et @var{fin}\n" -"(nombre entier) qui soit le plus proche de @var{valeur-cible}\n" -"lorsqu'appliqué à la fonction @var{appelant}." +msgstr "Information incompréhensible à la suite de l'accord « ~A »" -#: lily-library.scm:832 +#: define-context-properties.scm:31 define-grob-properties.scm:21 +#: define-music-properties.scm:21 #, scheme-format -msgid "unknown unit: ~S" -msgstr "unité inconnue : ~S" - -#: lily-library.scm:858 lily-library.scm:867 -msgid "warning:" -msgstr "Avertissement :" +msgid "symbol ~S redefined" +msgstr "symbole « ~S » redéfini" -#: lily-library.scm:860 +#: define-event-classes.scm:67 #, scheme-format -msgid "no \\version statement found, please add~afor future compatibility" -msgstr "" -"déclaration de \\version absente ;\n" -"ajoutez ~a pour une compatibilité future" +msgid "unknown parent class `~a'" +msgstr "Classe parente inconnue : « ~a »" -#: lily-library.scm:868 -msgid "old relative compatibility not used" -msgstr "compatibilité avec l'ancien mode relatif non utilisée" - -#: output-ps.scm:48 -msgid "Found infinity or nan in output. Substituting 0.0" -msgstr "Détection d'une valeur infini ou non numérique. Substitution par 0.0" +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" +msgstr "pas de système trouvé dans le bloc \\score, contient-il un bloc \\layout ?" -#: output-ps.scm:289 output-svg.scm:550 +#: define-markup-commands.scm:2614 #, scheme-format -msgid "unknown line-cap-style: ~S" -msgstr "line-cap-style inconnu : ~S" +msgid "Cannot find glyph ~a" +msgstr "impossible de trouver le glyphe « ~a »" -#: output-ps.scm:294 output-svg.scm:556 +#: define-markup-commands.scm:3040 #, scheme-format -msgid "unknown line-join-style: ~S" -msgstr "line-join-style inconnu : ~S" +msgid "no brace found for point size ~S " +msgstr "il n'y a pas d'accolade qui fasse ~S points" -#: output-svg.scm:47 +#: define-markup-commands.scm:3041 #, scheme-format -msgid "undefined: ~S" -msgstr "~S indéfini(e)" +msgid "defaulting to ~S pt" +msgstr "application de la taille par défaut (~S pt)" -#: output-svg.scm:151 +#: define-markup-commands.scm:3194 #, scheme-format -msgid "cannot decypher Pango description: ~a" -msgstr "la description de Pango ne peut être déchiffrée : ~a" +msgid "not a valid duration string: ~a" +msgstr "chaîne de durée invalide : ~a" -#: output-svg.scm:231 -msgid "Glyph must have a unicode value" -msgstr "Un glyphe doit avoir une valeur unicode" +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" +msgstr "symbole requis : ~S" -#: output-svg.scm:283 output-svg.scm:293 +#: define-music-types.scm:768 #, scheme-format -msgid "cannot find SVG font ~S" -msgstr "fonte SVG ~S introuvable" +msgid "cannot find music object: ~S" +msgstr "impossible de trouver l'objet de type musique : ~S" -#: flag-styles.scm:148 +#: define-music-types.scm:787 #, scheme-format -msgid "flag stroke `~a' or `~a' not found" -msgstr "type de crochet inconnu : « ~a » ou « ~a »" +msgid "unknown repeat type `~S'" +msgstr "type de répétition inconnu : « ~S »" + +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" +msgstr "" +"Consulter define-music-types.scm pour connaître les répétitions\n" +" prises en charge" #: define-note-names.scm:962 msgid "Select note names language." msgstr "Sélection de la langue des noms de note." -#: define-note-names.scm:969 +#: define-note-names.scm:968 #, scheme-format msgid "Using `~a' note names..." -msgstr "Utilisation de `~a' pour le nom des notes..." +msgstr "Utilisation de « ~a » pour le nom des notes..." -#: define-note-names.scm:972 +#: define-note-names.scm:971 #, scheme-format msgid "Could not find language `~a'. Ignoring." -msgstr "`~a' n'est pas une langue reconnue pour les noms de note. Abandon." +msgstr "" +"« ~a » n'est pas une langue reconnue pour les noms de note.\n" +" Abandon." -#: define-music-types.scm:740 +#: document-backend.scm:132 #, scheme-format -msgid "symbol expected: ~S" -msgstr "symbole requis : ~S" +msgid "pair expected in doc ~s" +msgstr "le document ~s devrait contenir une paire" -#: define-music-types.scm:743 +#: document-backend.scm:189 #, scheme-format -msgid "cannot find music object: ~S" -msgstr "impossible de trouver l'objet de type musique : ~S" +msgid "cannot find interface for property: ~S" +msgstr "impossible de trouver l'interface pour la propriété « ~S »" -#: define-music-types.scm:762 +#: document-backend.scm:199 #, scheme-format -msgid "unknown repeat type `~S'" -msgstr "type de répétition inconnu : « ~S »" - -#: define-music-types.scm:763 -msgid "See define-music-types.scm for supported repeats" -msgstr "Consulter define-music-types.scm pour connaître les répétitions prises en charge" +msgid "unknown Grob interface: ~S" +msgstr "interface d'objet graphique (Grob) inconnue : ~S" -#: translation-functions.scm:341 +#: documentation-lib.scm:59 #, scheme-format -msgid "Negative fret for pitch ~a on string ~a" -msgstr "La hauteur ~a sur la corde ~a donne un fret négatif" +msgid "Processing ~S..." +msgstr "Traitement de « ~S »..." -#: translation-functions.scm:385 +#: documentation-lib.scm:176 #, scheme-format -msgid "No open string for pitch ~a" -msgstr "Pas de corde à vide pour la hauteur ~a" +msgid "Writing ~S..." +msgstr "Écriture de « ~S »..." -#: translation-functions.scm:400 +#: documentation-lib.scm:188 #, scheme-format -msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" -msgstr "Hauteur et corde requises demandent un fret négatif : corde ~a hauteur ~a" +msgid "cannot find description for property `~S' (~S)" +msgstr "" +"impossible de trouver une description de la propriété « ~S »\n" +" (~S)" -#: translation-functions.scm:401 -msgid "Ignoring string request." -msgstr "Cette corde sera ignorée" +#: documentation-lib.scm:209 +#, scheme-format +msgid "cannot find description for property ~S (~S)" +msgstr "" +"impossible de trouver une description de la propriété « ~S »\n" +" (~S)" -#: translation-functions.scm:414 +#: flag-styles.scm:151 #, scheme-format -msgid "No string for pitch ~a (given frets ~a)" -msgstr "Aucune corde ne contient la hauteur ~a avec un fret ~a" +msgid "flag stroke `~a' or `~a' not found" +msgstr "type de crochet inconnu : « ~a » ou « ~a »" -#: translation-functions.scm:515 +#: framework-eps.scm:108 #, scheme-format -msgid "" -"No label for fret ~a (on string ~a);\n" -"only ~a fret labels provided" -msgstr "" -"Pas d'étiquette correspondant au fret ~a (corde de ~a) ;\n" -"les seules disponibles sont : ~a" +msgid "Writing ~a..." +msgstr "Écriture de « ~a »..." #: framework-ps.scm:250 #, scheme-format msgid "cannot embed ~S=~S" -msgstr "intégration impossible : ~S=~S" +msgstr "intégration impossible : ~S=~S" #: framework-ps.scm:293 #, scheme-format msgid "cannot extract file matching ~a from ~a" -msgstr "impossible d'extraire le fichier ~a à partir de ~a" +msgstr "impossible d'extraire le fichier « ~a » à partir de « ~a »" #: framework-ps.scm:311 #, scheme-format @@ -3487,7 +3636,7 @@ msgstr "imposible de réaliser l'intégration ~S=~S" msgid "do not know how to embed font ~s ~s ~s" msgstr "impossible d'intégrer les fontes ~s ~s ~s" -#: framework-ps.scm:669 +#: framework-ps.scm:686 msgid "" "\n" "The PostScript backend does not support the\n" @@ -3515,123 +3664,336 @@ msgstr "" " %% Start cut-&-pastable-section\n" " %% ****************************************************************\n" -#: music-functions.scm:268 +#: framework-svg.scm:84 +#, scheme-format +msgid "Updating font into: ~a" +msgstr "Actualisation de la fonte dans « ~a »" + +#: graphviz.scm:64 +#, scheme-format +msgid "Writing graph `~a'..." +msgstr "Écriture du graphique « ~a »..." + +#: layout-beam.scm:40 +#, scheme-format +msgid "Error in beam quanting. Expected (~S,~S) found ~S." +msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé." + +#: layout-beam.scm:54 +#, scheme-format +msgid "Error in beam quanting. Expected ~S 0, found ~S." +msgstr "Erreur de définition de ligature : attendait ~S 0, repéré ~S." + +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" +msgstr "Inadéquation entre la musique et le context-mod" + +#: lily-library.scm:349 +#, scheme-format +msgid "Cannot find context-def \\~a" +msgstr "Impossible de repérer un context-def (définition de contexte) \\~a" + +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" +msgstr "Inadéquation entre la musique et le output-def" + +#: lily-library.scm:892 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." +msgstr "" +"Recherche un index compris entre @var{début} et @var{fin}\n" +"(nombre entier) qui soit le plus proche de @var{valeur-cible}\n" +"lorsqu'appliqué à la fonction @var{appelant}." + +#: lily-library.scm:966 +#, scheme-format +msgid "unknown unit: ~S" +msgstr "unité inconnue : ~S" + +#: lily-library.scm:991 +#, scheme-format +msgid "no \\version statement found, please add~afor future compatibility" +msgstr "" +"déclaration de \\version absente ;\n" +" ajoutez ~a pour une compatibilité future" + +#: lily-library.scm:997 +msgid "old relative compatibility not used" +msgstr "compatibilité avec l'ancien mode relatif non utilisée" + +#: lily.scm:234 +msgid "Using (ice-9 curried-definitions) module\n" +msgstr "Utilisation du module (ice-9 curried-definitions)\n" + +#: lily.scm:237 +msgid "Guile 1.8\n" +msgstr "Guile 1.8\n" + +#: lily.scm:297 +#, scheme-format +msgid "cannot find: ~A" +msgstr "impossible de trouver « ~A »" + +#: lily.scm:708 +msgid "Success: compilation successfully completed" +msgstr "Compilation menée à son terme, avec succès." + +#: lily.scm:709 +msgid "Compilation completed with warnings or errors" +msgstr "Compilation menée à son terme, avec des avertissements ou erreurs." + +#: lily.scm:771 +#, scheme-format +msgid "job ~a terminated with signal: ~a" +msgstr "le travail « ~a » s'est terminé avec le signal ~a" + +#: lily.scm:774 +#, scheme-format +msgid "" +"logfile ~a (exit ~a):\n" +"~a" +msgstr "" +"fichier journal « ~a » (sortie ~a) :\n" +"~a" + +#: lily.scm:796 lily.scm:882 +#, scheme-format +msgid "failed files: ~S" +msgstr "erreur sur les fichiers ~S" + +#: lily.scm:873 +#, scheme-format +msgid "Redirecting output to ~a..." +msgstr "Redirection de la sortie vers « ~a »..." + +#: lily.scm:892 ps-to-png.scm:66 +#, scheme-format +msgid "Invoking `~a'...\n" +msgstr "Appel de « ~a »...\n" + +#: ly-syntax-constructors.scm:66 +#, scheme-format +msgid "~a function cannot return ~a" +msgstr "La fonction ~a ne peut retourner ~a." + +#: ly-syntax-constructors.scm:75 +#, scheme-format +msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgstr "" +"type d'argument erroné pour ~a.\n" +" Attendait ~a, ~s trouvé" + +#: ly-syntax-constructors.scm:188 +#, scheme-format +msgid "Invalid property operation ~a" +msgstr "Opération de propriété invalide : ~a" + +#: markup-macros.scm:331 +#, scheme-format +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgstr "" +"Nombre d'arguments erroné : ~A requis, ~A présent(s) :\n" +" ~S" + +#: markup-macros.scm:337 +#, scheme-format +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgstr "" +"Argument invalide à la position ~A.\n" +" ~A requis, trouvé ~S ." + +#: markup-macros.scm:373 +#, scheme-format +msgid "Not a markup command: ~A" +msgstr "~A n'est pas une commande de type « markup »" + +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" +msgstr "hauteur de départ (from) absente de la gamme ; rien à transposer" + +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" +msgstr "hauteur d'arrivée (to) absente de la gamme ; rien à transposer" + +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" +msgstr "hauteur à laquelle transposer absente de la gamme ; rien à transposer" + +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" +msgstr "hauteur pivot (around) absente de la gamme : rien à transposer" + +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" +msgstr "hauteur d'inversion absente de la gamme : rien à transposer" + +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" +msgstr "compteur de réplication négatif : rien à transposer" + +#: music-functions.scm:272 msgid "More alternatives than repeats. Junking excess alternatives" msgstr "" "Plus d'alternatives que de répétitions.\n" " Escamotage des alternatives surnuméraires." -#: music-functions.scm:297 +#: music-functions.scm:303 #, scheme-format msgid "invalid tremolo repeat count: ~a" -msgstr "nombre de répétition en trémolo invalide : ~a" +msgstr "nombre de répétition en trémolo invalide : ~a" -#: music-functions.scm:618 +#: music-functions.scm:689 +msgid "Bad chord repetition" +msgstr "Mauvaise répétition d'accord" + +#: music-functions.scm:724 #, scheme-format msgid "music expected: ~S" msgstr "~S requiert de la musique" -#. FIXME: uncomprehensable message -#: music-functions.scm:662 -#, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" -msgstr "" -"Échec du contrôle de barre de mesure. \n" -"Aurait dû se trouver à ~a au lieu de ~a" - -#: music-functions.scm:846 +#: music-functions.scm:1042 #, scheme-format msgid "cannot find quoted music: `~S'" -msgstr "impossible de trouver la citation de musique « ~S »" +msgstr "impossible de trouver la citation de musique « ~S »" -#: music-functions.scm:982 +#: music-functions.scm:1180 msgid "Add @var{octave-shift} to the octave of @var{pitch}." msgstr "Ajoute @var{octave-shift} à l'octave de @var{hauteur}." -#: music-functions.scm:1037 +#: music-functions.scm:1240 #, scheme-format msgid "Unknown octaveness type: ~S " -msgstr "Octave inconnue : « ~S »" +msgstr "Octave inconnue : « ~S »" -#: music-functions.scm:1038 +#: music-functions.scm:1241 msgid "Defaulting to 'any-octave." msgstr "Application de la valeur par défaut 'any-octave." -#: music-functions.scm:1378 +#: music-functions.scm:1578 #, scheme-format msgid "unknown accidental style: ~S" -msgstr "style d'altération inconnu : ~S" +msgstr "style d'altération inconnu : ~S" -#: define-event-classes.scm:79 -msgid "All classes must be the last in their matrilineal line." -msgstr "Toute classe doit être la dernière de sa lignée." +#: output-ps.scm:277 output-svg.scm:524 +#, scheme-format +msgid "unknown line-cap-style: ~S" +msgstr "line-cap-style inconnu : ~S" -#: define-event-classes.scm:83 -msgid "All classes must have a well-defined pedigree in the existing class hierarchy." -msgstr "" -"Chaque classe requiert que son pédigrée soit correctement défini\n" -"dans la hiérarchie de la classe existante." +#: output-ps.scm:282 output-svg.scm:530 +#, scheme-format +msgid "unknown line-join-style: ~S" +msgstr "line-join-style inconnu : ~S" -#: define-event-classes.scm:149 +#: output-svg.scm:47 #, scheme-format -msgid "event class ~A seems to be unused" -msgstr "la classe d'événement ~A semble être inutilisée" +msgid "undefined: ~S" +msgstr "~S indéfini(e)" -#. should be programming-error -#: define-event-classes.scm:155 +#: output-svg.scm:157 #, scheme-format -msgid "translator listens to nonexisting event class ~A" -msgstr "le traducteur écoute la classe d'événements ~A inexistante" +msgid "cannot decypher Pango description: ~a" +msgstr "la description de Pango ne peut être déchiffrée : ~a" + +#: output-svg.scm:237 +msgid "Glyph must have a unicode value" +msgstr "Un glyphe doit avoir une valeur unicode" -#: markup.scm:223 +#: output-svg.scm:289 output-svg.scm:299 #, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" -msgstr "Nombre d'arguments erroné. Requis : ~A, présent(s) ~A : ~S" +msgid "cannot find SVG font ~S" +msgstr "fonte SVG « ~S » introuvable." + +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "set-global-staff-size n'est pas à un niveau de portée globale" -#: markup.scm:229 +#: paper.scm:315 #, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." -msgstr "Argument invalide à la position ~A. ~A attendu, ~S trouvé." +msgid "This is not a \\layout {} object, ~S" +msgstr "~S n'est pas un objet de \\layout {}" -#: markup.scm:292 +#: paper.scm:327 #, scheme-format -msgid "Not a markup command: ~A" -msgstr "~A n'est pas une commande de type « markup»" +msgid "Unknown paper size: ~a" +msgstr "Format de papier inconnu : ~a" + +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:342 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "#(set-paper-size ..) doit être dans la section \\paper { ... }" -#: ps-to-png.scm:74 +#: parser-clef.scm:143 parser-clef.scm:183 +#, scheme-format +msgid "unknown clef type `~a'" +msgstr "type de clef inconnu : « ~a »" + +#: parser-clef.scm:144 parser-clef.scm:184 +#, scheme-format +msgid "supported clefs: ~a" +msgstr "clefs reconnues : ~a" + +#: parser-ly-from-scheme.scm:73 +msgid "error in #{ ... #}" +msgstr "erreur dans #{ ... #}" + +#: part-combiner.scm:598 +#, scheme-format +msgid "quoted music `~a' is empty" +msgstr "il n'y a rien à reproduire de « ~a » " + +#: ps-to-png.scm:70 #, scheme-format msgid "~a exited with status: ~S" msgstr "~a s'est terminé avec le statut ~S" -#: define-markup-commands.scm:803 -msgid "no systems found in \\score markup, does it have a \\layout block?" -msgstr "pas de système trouvé dans le bloc \\score, contient-il un bloc \\layout ?" +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" +msgstr "erreur d'assertion : ~S" -#: define-markup-commands.scm:2404 +#: translation-functions.scm:359 #, scheme-format -msgid "Cannot find glyph ~a" -msgstr "impossible de trouver le glyphe ~a" +msgid "Negative fret for pitch ~a on string ~a" +msgstr "La hauteur « ~a » sur la corde « ~a » donne un fret négatif" -#: define-markup-commands.scm:2830 +#: translation-functions.scm:362 #, scheme-format -msgid "no brace found for point size ~S " -msgstr "il n'y a pas d'accolade qui fasse ~S points" +msgid "Missing fret for pitch ~a on string ~a" +msgstr "Aucun fret pour « ~a » sur la corde « ~a »" -#: define-markup-commands.scm:2831 +#: translation-functions.scm:413 #, scheme-format -msgid "defaulting to ~S pt" -msgstr "application de la taille par défaut (~S pt)" +msgid "No open string for pitch ~a" +msgstr "Pas de corde à vide pour la hauteur « ~a »" -#: define-markup-commands.scm:2984 +#: translation-functions.scm:428 translation-functions.scm:440 #, scheme-format -msgid "not a valid duration string: ~a" -msgstr "chaîne de durée invalide : ~a" +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +msgstr "" +"Hauteur et corde requises demandent un fret négatif :\n" +" corde « ~a » hauteur « ~a »" + +#: translation-functions.scm:431 +msgid "Ignoring string request and recalculating." +msgstr "Cette corde sera ignorée et redéfinie." -#: ly-syntax-constructors.scm:51 -msgid "Music head function must return Music object" -msgstr "Une fonction musicale primitive devrait renvoyer un objet Music" +#: translation-functions.scm:443 +msgid "Ignoring note in tablature." +msgstr "Cette note sera ignorée dans la tablature." -#: ly-syntax-constructors.scm:177 +#: translation-functions.scm:466 #, scheme-format -msgid "Invalid property operation ~a" -msgstr "Opération de propriété invalide : ~a" +msgid "No string for pitch ~a (given frets ~a)" +msgstr "Aucune corde ne contient la hauteur « ~a » avec un fret « ~a »" + +#: translation-functions.scm:571 +#, scheme-format +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" +msgstr "" +"Pas d'étiquette correspondant au fret « ~a » (corde de « ~a ») ;\n" +" les seules disponibles sont : ~a" diff --git a/po/it.po b/po/it.po index fa48354dca..0a309fd390 100644 --- a/po/it.po +++ b/po/it.po @@ -4,20 +4,21 @@ # # Tineke de Munnik , 1998. # Maurizio Umberto Puxeddu , 1999 -# Federico Bruni , 2010-2011, 2011. +# Federico Bruni , 2009-2012, 2012. # msgid "" msgstr "" -"Project-Id-Version: lilypond 2.13.53\n" +"Project-Id-Version: lilypond 2.15.41\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" -"POT-Creation-Date: 2011-03-02 10:34+0100\n" -"PO-Revision-Date: 2011-04-05 00:25+0200\n" +"POT-Creation-Date: 2012-07-05 20:10+0200\n" +"PO-Revision-Date: 2012-07-10 08:29+0200\n" "Last-Translator: Federico Bruni \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: fontextract.py:25 #, python-format @@ -34,49 +35,82 @@ msgstr "Estratto %s" msgid "Writing fonts to %s" msgstr "Scrittura dei tipi di carattere su %s" -#: book_snippets.py:519 +#: book_snippets.py:409 #, python-format msgid "deprecated ly-option used: %s=%s" msgstr "opzione ly-option deprecata: %s=%s" -#: book_snippets.py:521 +#: book_snippets.py:411 #, python-format msgid "compatibility mode translation: %s=%s" msgstr "traduzione in modalità compatibile: %s=%s" -#: book_snippets.py:524 +#: book_snippets.py:414 #, python-format msgid "deprecated ly-option used: %s" msgstr "opzione ly-option deprecata: %s" -#: book_snippets.py:526 +#: book_snippets.py:416 #, python-format msgid "compatibility mode translation: %s" msgstr "traduzione in modalità compatibile: %s" -#: book_snippets.py:544 +#: book_snippets.py:533 #, python-format msgid "ignoring unknown ly option: %s" msgstr "l'opzione ly sconosciuta viene ignorata: %s" -#: book_snippets.py:736 +#: book_snippets.py:624 #, python-format -msgid "Opening filter `%s'\n" -msgstr "Apertura del filtro «%s»\n" +msgid "Missing files: %s" +msgstr "File mancanti: %s" -#: book_snippets.py:756 +#: book_snippets.py:654 +#, python-format +msgid "Could not overwrite file %s" +msgstr "Impossibile scrivere sul file «%s»" + +#: book_snippets.py:741 +#, python-format +msgid "Running through filter `%s'" +msgstr "Esecuzione attraverso il filtro «%s»" + +#: book_snippets.py:761 #, python-format msgid "`%s' failed (%d)" msgstr "«%s» fallito (%d)" -#: book_snippets.py:757 +#: book_snippets.py:762 msgid "The error log is as follows:" msgstr "Il registro dell'errore è il seguente:" +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "Conversione del file MusicXML «%s»...\n" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" +"%s: il nome del file è duplicato ma i suoi contenuti sono diversi dal\n" +"file originale, si mostrano le differenze rispetto al file esistente." + +#: book_snippets.py:922 +#, python-format +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." +msgstr "" +"%s: il nome del file è duplicato ma il suo contenuto è diverso dal file lilypond\n" +"trasformato, si mostrano le differenze rispetto al file esistente." + #: convertrules.py:12 #, python-format -msgid "Not smart enough to convert %s" -msgstr "Non abbastanza intelligente per convertire %s" +msgid "Not smart enough to convert %s." +msgstr "Non abbastanza intelligente per convertire %s." #: convertrules.py:13 msgid "Please refer to the manual for details, and update manually." @@ -87,111 +121,115 @@ msgstr "Si consulti il manuale per i dettagli e si aggiorni manualmente." msgid "%s has been replaced by %s" msgstr "%s è stato sostituito da %s" -#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66 -#: input.cc:109 +#: convertrules.py:24 lilylib.py:131 warn.cc:223 #, c-format, python-format msgid "warning: %s" msgstr "attenzione: %s" -#: convertrules.py:49 convertrules.py:99 +#: convertrules.py:49 convertrules.py:94 msgid "\\header { key = concat + with + operator }" msgstr "\\header { chiave = concat + con + operatore }" -#: convertrules.py:58 +#: convertrules.py:56 #, python-format msgid "deprecated %s" msgstr "%s è deprecato" -#: convertrules.py:70 +#: convertrules.py:65 msgid "deprecated \\textstyle, new \\key syntax" msgstr "\\textstyle deprecato, nuova sintassi per \\key" -#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084 -#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862 +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 msgid "bump version for release" msgstr "aumentare il numero di versione per il rilascio" -#: convertrules.py:103 +#: convertrules.py:97 msgid "new \\header format" msgstr "nuovo formato di \\header" -#: convertrules.py:132 +#: convertrules.py:124 msgid "\\translator syntax" msgstr "sintassi di \\translator" -#: convertrules.py:184 +#: convertrules.py:175 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" msgstr "\\repeat NUMERO Alternativa Musicale -> \\repeat FOLDSTR Alternativa Musicale" -#: convertrules.py:216 convertrules.py:699 convertrules.py:1383 -#: convertrules.py:2378 +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 #, python-format msgid "deprecate %s" msgstr "%s è deprecato" -#: convertrules.py:290 +#: convertrules.py:279 #, python-format msgid "deprecate %s " msgstr "%s è deprecato " -#: convertrules.py:319 +#: convertrules.py:305 msgid "new \\notenames format" msgstr "nuovo formato di \\notenames" -#: convertrules.py:337 +#: convertrules.py:321 msgid "new tremolo format" msgstr "nuovo formato di tremolo" -#: convertrules.py:342 +#: convertrules.py:325 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" msgstr "Staff_margin_engraver è deprecato, usare Instrument_name_engraver" -#: convertrules.py:395 -msgid "change property definiton case (eg. onevoice -> oneVoice)" -msgstr "cambiare le maiuscole della definizione di proprietà (es: onevoice -> oneVoice)" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" +msgstr "cambia le maiuscole della definizione di proprietà (es: onevoice -> oneVoice)" -#: convertrules.py:457 +#: convertrules.py:437 msgid "new \\textscript markup text" msgstr "nuovo testo di marcatura \\textscript" -#: convertrules.py:530 +#: convertrules.py:509 #, python-format msgid "identifier names: %s" msgstr "nomi dell'identificatore: %s" -#: convertrules.py:569 +#: convertrules.py:548 msgid "point-and-click argument changed to procedure." msgstr "l'argomento point-and-click è stato cambiato in procedura." -#: convertrules.py:611 +#: convertrules.py:590 msgid "semicolons removed" msgstr "punti e virgola eliminati" #. 40 ? -#: convertrules.py:654 +#: convertrules.py:633 #, python-format msgid "%s property names" msgstr "nomi della proprietà %s" -#: convertrules.py:724 +#: convertrules.py:703 msgid "automaticMelismata turned on by default" msgstr "automaticMelismata attivato per impostazione predefinita" -#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942 -#: convertrules.py:2189 +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "automaticMelismata attivato per impostazione predefinita dalla versione 1.5.67." + +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format msgid "remove %s" msgstr "elimina %s" -#: convertrules.py:1001 convertrules.py:1005 +#: convertrules.py:977 convertrules.py:980 msgid "cluster syntax" msgstr "sintassi dei cluster" -#: convertrules.py:1014 +#: convertrules.py:987 msgid "new Pedal style syntax" msgstr "nuova sintassi di stile del Pedale" -#: convertrules.py:1273 +#: convertrules.py:1246 msgid "" "New relative mode,\n" "Postfix articulations, new text markup syntax, new chord syntax." @@ -199,28 +237,28 @@ msgstr "" "Nuovo modo relativo.\n" "Articolazioni suffisse, nuova sintassi di marcatura del testo, nuova sintassi degli accordi." -#: convertrules.py:1286 +#: convertrules.py:1259 msgid "Remove - before articulation" msgstr "Elimina - prima dell'articolazione" -#: convertrules.py:1324 +#: convertrules.py:1294 #, python-format msgid "%s misspelling" msgstr "errore di digitazione in %s" -#: convertrules.py:1346 +#: convertrules.py:1313 msgid "Swap < > and << >>" msgstr "Scambia < > e << >>" -#: convertrules.py:1349 +#: convertrules.py:1316 msgid "attempting automatic \\figures conversion. Check results!" msgstr "tentativo di conversione automatica di \\figures. Controllare i risultati!" -#: convertrules.py:1400 +#: convertrules.py:1362 msgid "Use Scheme code to construct arbitrary note events." msgstr "Usa il codice di Scheme per costruire eventi arbitrari della nota." -#: convertrules.py:1407 +#: convertrules.py:1369 msgid "" "use symbolic constants for alterations,\n" "remove \\outputproperty, move ly:verbose into ly:get-option" @@ -228,7 +266,7 @@ msgstr "" "usa costanti simboliche per le alterazioni,\n" "togli \\outproperty, sostituisci ly:verbose con ly:get-option" -#: convertrules.py:1432 +#: convertrules.py:1394 #, python-format msgid "" "\\outputproperty found,\n" @@ -245,7 +283,7 @@ msgstr "" "\n" "come testo sostitutivo." -#: convertrules.py:1446 +#: convertrules.py:1406 msgid "" "The alteration field of Scheme pitches was multiplied by 2\n" "to support quarter tone accidentals. You must update the following constructs manually:\n" @@ -259,15 +297,15 @@ msgstr "" "* chiamate a ly:make-pitch e ly:pitch-alteration\n" "* impostazioni di keySignature fatte con \\property\n" -#: convertrules.py:1493 +#: convertrules.py:1449 msgid "removal of automaticMelismata; use melismaBusyProperties instead." msgstr "eliminazione di automaticMelismata; al suo posto usare melismaBusyProperties." -#: convertrules.py:1600 +#: convertrules.py:1556 msgid "\\partcombine syntax change to \\newpartcombine" msgstr "cambio nella sintassi da \\partcombine a \\newpartcombine" -#: convertrules.py:1628 +#: convertrules.py:1581 msgid "" "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" "Harmonic notes. Thread context removed. Lyrics context removed." @@ -275,11 +313,11 @@ msgstr "" "Cambiamenti della notazione per percussioni, eliminati \\chordmodifiers e \\notenames.\n" "Note armoniche. Eliminati i contesti Thread e Lyrics." -#: convertrules.py:1632 +#: convertrules.py:1585 msgid "Drums found. Enclose drum notes in \\drummode" msgstr "Trovate percussioni. Inserisci le note delle percussioni in \\drummode" -#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format msgid "" "\n" @@ -288,32 +326,33 @@ msgstr "" "\n" "Si è trovato %s. Controlla il file manualmente!\n" -#: convertrules.py:1643 +#: convertrules.py:1596 msgid "Drum notation" msgstr "Notazione delle percussioni" -#: convertrules.py:1702 +#: convertrules.py:1655 msgid "new syntax for property settings:" msgstr "nuova sintassi per le impostazioni delle proprietà:" -#: convertrules.py:1728 +#: convertrules.py:1681 msgid "Property setting syntax in \\translator{ }" msgstr "Sintassi per impostare una proprietà in \\translator{ }" -#: convertrules.py:1767 +#: convertrules.py:1720 msgid "Scheme grob function renaming" msgstr "Rinominare la funzione di grob di Scheme" -#: convertrules.py:1780 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 #, python-format -msgid "use %s" -msgstr "usa %s" +msgid "Use %s\n" +msgstr "Usa %s\n" -#: convertrules.py:1797 +#: convertrules.py:1747 msgid "More Scheme function renaming" msgstr "Rinominare altre funzioni di Scheme" -#: convertrules.py:1924 +#: convertrules.py:1871 msgid "" "Page layout has been changed, using paper size and margins.\n" "textheight is no longer used.\n" @@ -321,7 +360,7 @@ msgstr "" "La formattazione di pagina è stata modificata, usando la dimensione del foglio e i margini.\n" "textheight non è più usato.\n" -#: convertrules.py:2010 +#: convertrules.py:1957 msgid "" "\\foo -> \\foomode (for chords, notes, etc.)\n" "fold \\new FooContext \\foomode into \\foo." @@ -329,7 +368,7 @@ msgstr "" "\\foo -> \\foomode (per accordi, note, etc.)\n" "inserire \\new FooContext \\foomode in \\foo." -#: convertrules.py:2048 +#: convertrules.py:1995 msgid "" "staff size should be changed at top-level\n" "with\n" @@ -343,40 +382,40 @@ msgstr "" " #(set-global-staff-size )\n" "\n" -#: convertrules.py:2068 +#: convertrules.py:2015 msgid "regularize other identifiers" msgstr "normalizza altri identificatori" -#: convertrules.py:2136 +#: convertrules.py:2083 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" msgstr "\\encoding: ricodifica intelligente da latin1 a utf-8. Eliminazione di ly:point-and-click" -#: convertrules.py:2149 +#: convertrules.py:2094 msgid "LilyPond source must be UTF-8" msgstr "Il sorgente di LilyPond deve avere la codifica UTF-8" -#: convertrules.py:2152 +#: convertrules.py:2097 msgid "Try the texstrings backend" msgstr "Prova il backend textstrings" -#: convertrules.py:2155 +#: convertrules.py:2100 #, python-format msgid "Do something like: %s" msgstr "Fai qualcosa come: %s" -#: convertrules.py:2158 +#: convertrules.py:2103 msgid "Or save as UTF-8 in your editor" msgstr "O salva in formato UTF-8 nel tuo editor" -#: convertrules.py:2212 +#: convertrules.py:2153 msgid "warn about auto beam settings" msgstr "attenzione alle impostazioni delle travature automatiche" -#: convertrules.py:2217 +#: convertrules.py:2157 msgid "auto beam settings" msgstr "impostazioni delle travature automatiche" -#: convertrules.py:2219 +#: convertrules.py:2158 msgid "" "\n" "Auto beam settings must now specify each interesting moment in a measure\n" @@ -386,39 +425,39 @@ msgstr "" "Le impostazioni di travatura automatica ora devono specificare esplicitamente ogni momento\n" "interessante in una misura; 1/4 non viene più moltiplicato per coprire anche i momenti 1/2 e 3/4.\n" -#: convertrules.py:2333 +#: convertrules.py:2271 msgid "verticalAlignmentChildCallback has been deprecated" msgstr "verticalAlignmentChildCallback è deprecato" -#: convertrules.py:2337 +#: convertrules.py:2276 msgid "Remove callbacks property, deprecate XY-extent-callback." msgstr "Togli la proprietà di callback, XY-extent-callback è deprecato." -#: convertrules.py:2358 +#: convertrules.py:2297 msgid "Use grob closures iso. XY-offset-callbacks." msgstr "Usa le chiusure del grob al posto di XY-offset-callbacks." -#: convertrules.py:2420 +#: convertrules.py:2359 msgid "foobar -> foo-bar for \\paper, \\layout" msgstr "foobar -> foo-bar per \\paper, \\layout" -#: convertrules.py:2530 +#: convertrules.py:2469 msgid "deprecate \\tempo in \\midi" msgstr "\\tempo in un blocco \\midi è deprecato" -#: convertrules.py:2583 +#: convertrules.py:2522 msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "cautionary-style è deprecato. Usa le proprietà di AccidentalCautionary" -#: convertrules.py:2596 +#: convertrules.py:2535 msgid "Rename accidental glyphs, use glyph-name-alist." msgstr "Rinomina i glifi delle alterazioni, usa glyph-name-alist." -#: convertrules.py:2651 -msgid "edge-text settings for TextSpanner." -msgstr "Impostazioni di edge-text per TextSpanner." +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" +msgstr "Impostazioni di edge-text per TextSpanner" -#: convertrules.py:2652 +#: convertrules.py:2591 #, python-format msgid "" "Use\n" @@ -429,35 +468,35 @@ msgstr "" "\n" "%s" -#: convertrules.py:2685 +#: convertrules.py:2624 msgid "Use the `alignment-offsets' sub-property of\n" msgstr "Usa «alignment-offsets», sottoproprietà di\n" -#: convertrules.py:2686 +#: convertrules.py:2625 msgid "NonMusicalPaperColumn #'line-break-system-details\n" msgstr "NonMusicalPaperColumn #'line-break-system-details\n" -#: convertrules.py:2687 +#: convertrules.py:2626 msgid "to set fixed distances between staves.\n" msgstr "per impostare distanze fisse tra i righi.\n" -#: convertrules.py:2699 +#: convertrules.py:2638 msgid "Use #'style not #'dash-fraction to select solid/dashed lines." msgstr "Usa #'style e non #'dash-fraction per ottenere linee continue o tratteggiate." -#: convertrules.py:2705 -msgid "all settings related to dashed lines.\n" -msgstr "tutte le impostazioni relative alle linee tratteggiate.\n" +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "tutte le impostazioni relative alle linee tratteggiate" -#: convertrules.py:2706 +#: convertrules.py:2645 msgid "Use \\override ... #'style = #'line for solid lines and\n" msgstr "Usa \\override ... #'style = #'line per le linee continue e\n" -#: convertrules.py:2707 +#: convertrules.py:2646 msgid "\t\\override ... #'style = #'dashed-line for dashed lines." msgstr "\t\\override ... #'style = #'dashed-line per le linee tratteggiate." -#: convertrules.py:2743 +#: convertrules.py:2682 msgid "" "metronomeMarkFormatter uses text markup as second argument,\n" "fret diagram properties moved to fret-diagram-details." @@ -465,11 +504,11 @@ msgstr "" "il secondo argomento di metronomeMarkFormatter deve essere una marcatura di testo,\n" "le proprietà del diagramma dei tasti si trovano ora in fret-diagram-details." -#: convertrules.py:2748 +#: convertrules.py:2688 msgid "metronomeMarkFormatter got an additional text argument.\n" msgstr "metronomeMarkFormatter prende un argomento testuale supplementare.\n" -#: convertrules.py:2749 +#: convertrules.py:2689 #, python-format msgid "" "The function assigned to Score.metronomeMarkFunction now uses the signature\n" @@ -478,43 +517,48 @@ msgstr "" "La funzione assegnata a Score.metronomeMarkFunction ora usa l'indicazione\n" "%s" -#: convertrules.py:2812 -msgid "\\put-adjacent argument order.\n" -msgstr "ordine degli argomenti di \\put-adjacent.\n" +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "%s nelle proprietà di fret-diagram" + +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" +msgstr "ordine degli argomenti di \\put-adjacent" -#: convertrules.py:2813 +#: convertrules.py:2752 msgid "Axis and direction now come before markups:\n" msgstr "Asse e direzione ora devono precedere i marcatori:\n" -#: convertrules.py:2814 +#: convertrules.py:2753 msgid "\\put-adjacent axis dir markup markup." msgstr "\\put-adjacent asse direzione marcatore marcatore." -#: convertrules.py:2845 -msgid "re-definition of InnerStaffGroup.\n" -msgstr "ridefinizione di InnerStaffGroup.\n" +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" +msgstr "ridefinizione di InnerStaffGroup" -#: convertrules.py:2851 -msgid "re-definition of InnerChoirStaff.\n" -msgstr "ridefinizione di InnerChoirStaff.\n" +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" +msgstr "ridefinizione di InnerChoirStaff" -#: convertrules.py:2861 +#: convertrules.py:2799 msgid "Syntax changes for \\addChordShape and \\chord-shape" msgstr "Cambiamenti di sintassi per \\addChordShape e \\chord-shape" -#: convertrules.py:2866 +#: convertrules.py:2804 msgid "stringTuning must be added to addChordShape call.\n" msgstr "stringTuning deve essere aggiunto alla chiamata addChordShape.\n" -#: convertrules.py:2872 +#: convertrules.py:2809 msgid "stringTuning must be added to chord-shape call.\n" msgstr "stringTuning deve essere aggiunto alla chiamata chord-shape.\n" -#: convertrules.py:2879 +#: convertrules.py:2815 msgid "Remove oldaddlyrics" msgstr "Elimina oldaddlyrics" -#: convertrules.py:2883 +#: convertrules.py:2819 msgid "" "oldaddlyrics is no longer supported. \n" " Use addlyrics or lyrsicsto instead.\n" @@ -522,7 +566,7 @@ msgstr "" "oldaddlyrics non è più supportato.\n" " Usa addlyrics o lyrsicsto al suo posto.\n" -#: convertrules.py:2889 +#: convertrules.py:2825 msgid "" "keySignature property not reversed any more\n" "MIDI 47: orchestral strings -> orchestral harp" @@ -530,11 +574,11 @@ msgstr "" "la proprietà keySignature property non è più invertita\n" "MIDI 47: archi orchestrali -> arpa orchestrale" -#: convertrules.py:2894 +#: convertrules.py:2830 msgid "The alist for Staff.keySignature is no longer in reversed order.\n" msgstr "L'alist (association list) di Staff.keySignature non è più in ordine invertito.\n" -#: convertrules.py:2900 +#: convertrules.py:2836 msgid "" "\\bar \".\" now produces a thick barline\n" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" @@ -544,15 +588,15 @@ msgstr "" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" "I parametri del tratteggiato per le legature di portamento e di valore si trovano ora in dash-definition" -#: convertrules.py:2906 +#: convertrules.py:2842 msgid "\\bar \".\" now produces a thick barline.\n" msgstr "\\bar \".\" ora crea una stanghetta spessa.\n" -#: convertrules.py:2912 +#: convertrules.py:2848 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" msgstr "I parametri del tratteggiato per le legature di portamento e di valore si trovano ora in 'dash-details.\n" -#: convertrules.py:2917 +#: convertrules.py:2853 msgid "" "Autobeaming rules have changed. override-auto-beam-setting and\n" "revert-auto-beam-setting have been eliminated.\n" @@ -578,37 +622,27 @@ msgstr "" "La definizione esplicita del contesto della dinamica presa dal modello «Piano centered dynamics»\n" "è stata sostituita dal nuovo contesto «Dynamics»." -#: convertrules.py:2931 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now overriden with \\overrideBeamSettings.\n" -msgstr "" -"override-auto-beam-setting.\n" -" Le impostazioni della disposizione automatica delle travature vengono ora sovrascritte con \\overrideBeamSettings.\n" +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" +msgstr " Le impostazioni della disposizione automatica delle travature vengono ora sovrascritte con \\overrideBeamSettings.\n" -#: convertrules.py:2936 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now reverted with \\revertBeamSettings.\n" -msgstr "" -"override-auto-beam-setting.\n" -" Le impostazioni della disposizione automatica delle travature vengono ora ripristinate con \\revertBeamSettings.\n" +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" +msgstr " Le impostazioni della disposizione automatica delle travature vengono ora ripristinate con \\revertBeamSettings.\n" -#: convertrules.py:2941 +#: convertrules.py:2878 msgid "" -"beatGrouping. \n" -" beatGrouping with a specified context must now be accomplished with\n" +" beatGrouping with a specified context must now be accomplished with\n" " \\overrideBeamSettings.\n" msgstr "" -"beatGrouping. \n" -" beatGrouping in un contesto specifico ora deve essere ottenuto con\n" +" beatGrouping in un contesto specifico ora deve essere ottenuto con\n" " \\overrideBeamSettings.\n" -#: convertrules.py:2947 +#: convertrules.py:2884 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" msgstr "alignment-offsets è diventato alignment-distances: ora occorre specificare le distanze tra i righi invece dello slittamento (offset) dei righi.\n" -#: convertrules.py:2958 +#: convertrules.py:2895 msgid "" "Remove obsolete engravers/translators: Note_swallow_translator,\n" "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" @@ -620,23 +654,23 @@ msgstr "" "Swallow_performer e String_number_engraver.\n" "Nuove variabili per la spaziatura verticale." -#: convertrules.py:2989 -msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" -msgstr "minimum-Y-extent; la spaziatura verticale non dipende più dall'Y-extent di un VerticalAxisGroup.\n" +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" +msgstr "La spaziatura verticale non dipende più dall'Y-extent di un VerticalAxisGroup.\n" -#: convertrules.py:2995 +#: convertrules.py:2932 msgid "Unify fetaNumber and fetaDynamic encodings" msgstr "Unifica le codifiche di fetaNumber e fetaDynamic" -#: convertrules.py:3000 +#: convertrules.py:2937 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" -#: convertrules.py:3011 +#: convertrules.py:2948 msgid "\\cresc etc. are now postfix operators" msgstr "\\cresc etc. sono ora operatori suffissi" -#: convertrules.py:3017 +#: convertrules.py:2960 msgid "" "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" @@ -644,27 +678,23 @@ msgstr "" "Elimina beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings e \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" -#: convertrules.py:3035 -msgid "\\overrideBeamSettings. Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" -msgstr "\\overrideBeamSettings. Usa \\set beamExceptions o \\overrideTimeSignatureSettings.\n" - -#: convertrules.py:3039 -msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" -msgstr "\\revertBeamSettings. Usa \\set beamExceptions o \\revertTimeSignatureSettings.\n" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" +msgstr "Usa \\set beamExceptions o \\overrideTimeSignatureSettings.\n" -#: convertrules.py:3043 -msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n" -msgstr "beamSettings. Usa baseMoment, beatStructure, e beamExceptions.\n" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "Usa \\set beamExceptions o \\revertTimeSignatureSettings.\n" -#: convertrules.py:3047 -msgid "beatLength. Use baseMoment and beatStructure.\n" -msgstr "beatLength. Usa baseMoment e beatStructure.\n" +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" +msgstr "Usa baseMoment, beatStructure, e beamExceptions.\n" -#: convertrules.py:3051 -msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" -msgstr "setbeatGrouping. Usa baseMoment e beatStructure.\n" +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" +msgstr "Usa baseMoment e beatStructure.\n" -#: convertrules.py:3056 +#: convertrules.py:2999 msgid "" "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" "Deprecate negative dash-period for hidden lines: use #'style = #'none instead." @@ -672,11 +702,11 @@ msgstr "" "Diagrammi dei legni: Spostare dimensione, spessore e grafico da lista di argomenti a proprietà.\n" "L'uso di dash-period con valori negativi per creare linee nascoste è deprecato: al suo posto usare #'style = #'none." -#: convertrules.py:3061 -msgid "woodwind-diagrams. Move size, thickness, and graphic to properties. Argument should be just the key list.\n" -msgstr "Diagrammi dei legni: Sposta dimensione, spessore e grafico in proprietà. L'unico argomento deve essere la lista di chiavi.\n" +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" +msgstr "Sposta dimensione, spessore e grafico in proprietà. L'unico argomento deve essere la lista di chiavi.\n" -#: convertrules.py:3069 +#: convertrules.py:3012 msgid "" "Rename vertical spacing variables.\n" "Add fretboard-table argument to savePredefinedFretboard." @@ -684,23 +714,23 @@ msgstr "" "Rinomina le variabili della spaziatura verticale.\n" "Aggiungi l'argomento fretboard-table a savePredefinedFretboard." -#: convertrules.py:3087 +#: convertrules.py:3030 msgid "Rename vertical spacing grob properties." msgstr "Rinomina le proprietà di spaziatura verticale dei grob." -#: convertrules.py:3103 +#: convertrules.py:3046 msgid "Remove \\paper variables head-separation and foot-separation." msgstr "Elimina le variabili di \\paper head-separation e foot-separation." -#: convertrules.py:3108 +#: convertrules.py:3050 msgid "Adjust settings for top-system-spacing instead.\n" msgstr "Regola invece le impostazioni di top-system-spacing.\n" -#: convertrules.py:3113 +#: convertrules.py:3054 msgid "Adjust settings for last-bottom-spacing instead.\n" msgstr "Regola invece le impostazioni di last-bottom-spacing.\n" -#: convertrules.py:3119 +#: convertrules.py:3060 msgid "" "Rename space to basic-distance in various spacing alists.\n" "Remove HarmonicParenthesesItem grob." @@ -708,19 +738,19 @@ msgstr "" "Rinomina la spaziatura in basic-distance in diverse variabili di spaziatura.\n" "Eliminazione del grob HarmonicParenthesesItem." -#: convertrules.py:3127 +#: convertrules.py:3067 msgid "HarmonicParenthesesItem has been eliminated.\n" msgstr "HarmonicParenthesesItem è stato eliminato.\n" -#: convertrules.py:3128 +#: convertrules.py:3068 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" msgstr "Le parentesi degli armonici fanno parte del grob TabNoteHead.\n" -#: convertrules.py:3133 +#: convertrules.py:3073 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" msgstr "Rimuove il contesto da overrideTimeSignatureSettings e revertTimeSignatureSettings.\n" -#: convertrules.py:3140 +#: convertrules.py:3080 msgid "" "Change stringTunings from a list of semitones to a list of pitches.\n" "Change tenor and baritone ukulele names in string tunings.\n" @@ -730,220 +760,292 @@ msgstr "" "Sostituzione dei nomi dell'ukulele tenore e baritono con accordature.\n" "Generazione dei messaggi per la conversione manuale della spaziatura verticale se richiesto." -#: convertrules.py:3180 -msgid "Vertical spacing changes might affect user-defined contexts. " -msgstr "Le modifiche della spaziatura verticale possono influire sui contesti definiti dall'utente. " +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." +msgstr "Le modifiche della spaziatura verticale possono influire sui contesti definiti dall'utente." -#: convertrules.py:3185 +#: convertrules.py:3129 msgid "Replace bar-size with bar-extent." msgstr "Sostituzione di bar-size con bar-extent." -#: convertrules.py:3197 +#: convertrules.py:3141 msgid "Woodwind diagrams: Changes to the clarinet diagram." msgstr "Diagrammi dei legni: Modifiche al diagramma del clarinetto." -#: convertrules.py:3201 -msgid "woodwind-diagrams. Clarinet fingering changed to reflect actual anatomy of instrument.\n" -msgstr "woodwind-diagrams. La diteggiatura del clarinetto è stata modificata per riflettere l'effettiva anatomia dello strumento.\n" +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "La diteggiatura del clarinetto è stata modificata per riflettere l'effettiva anatomia dello strumento.\n" + +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "Gestione delle note a pié di pagina non automatiche." + +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "Se si sta usando note a pié di pagina non automatiche, occorre impostare footnote-auto-numbering = ##f nel blocco paper.\n" + +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "Modifica della proprietà interna di MultiMeasureRest" + +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" +msgstr "Questa proprietà interna è stata sostituita da round-up-to-longer-rest, round-up-exceptions e usable-duration-logs.\n" -#: book_base.py:24 +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "Creazione del grob Flag e spostamento di alcune proprietà di Stem su questo grob" + +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" +msgstr "consistent-broken-slope viene ora gestito attraverso la callback delle posizioni.\n" + +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" +msgstr "input/regression/beam-broken-classic.ly mostra come vengono gestite ora le travature spezzate.\n" + +#: convertrules.py:3368 +msgid "beamExceptions controls whole-measure beaming." +msgstr "beamExceptions controlla la disposizione delle travature sull'intera misura." + +#: book_base.py:26 #, python-format msgid "file not found: %s" msgstr "file non trovato: %s" -#: book_base.py:161 +#: book_base.py:164 msgid "Output function not implemented" msgstr "Funzione di output non implementata" -#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115 -#: input.cc:123 +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "Si imposta il loglevel su %s" + +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "Loglevel sconosciuto o non valido '%s'" + +#: lilylib.py:128 warn.cc:211 #, c-format, python-format msgid "error: %s" msgstr "errore: %s" -#: lilylib.py:124 lilylib.py:175 +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "Elaborazione di %s.ly" + +#: lilylib.py:189 lilylib.py:250 #, python-format msgid "Invoking `%s'" msgstr "Invocazione di «%s»" -#: lilylib.py:126 lilylib.py:177 +#: lilylib.py:191 lilylib.py:252 #, python-format msgid "Running %s..." msgstr "Esecuzione di %s..." -#: lilylib.py:253 +#: lilylib.py:328 #, python-format msgid "Usage: %s" msgstr "Uso: %s" -#: musicexp.py:216 musicexp.py:221 +#: musicexp.py:224 musicexp.py:229 msgid "Language does not support microtones contained in the piece" msgstr "La lingua non supporta i microtoni presenti nel brano" -#: musicexp.py:483 +#: musicexp.py:491 msgid "Tuplet brackets of curved shape are not correctly implemented" msgstr "Le parentesi di forma curva per i gruppi irregolari non sono implementate correttamente" -#: musicexp.py:669 +#: musicexp.py:677 #, python-format msgid "unable to set the music %(music)s for the repeat %(repeat)s" msgstr "non è stato possibile impostare la musica %(music)s per la ripetizione %(repeat)s" -#: musicexp.py:678 +#: musicexp.py:686 msgid "encountered repeat without body" msgstr "si è incontrata una ripetizione senza corpo" #. no self.elements! -#: musicexp.py:848 +#: musicexp.py:856 #, python-format msgid "Grace note with no following music: %s" msgstr "Nota di abbellimento non seguita da musica: %s" -#: musicexp.py:1010 +#: musicexp.py:1018 #, python-format msgid "Invalid octave shift size found: %s. Using no shift." msgstr "Trovata una dimensione di spostamento dell'ottava non valida: %s. Non si userà alcun spostamento." -#: musicexp.py:1468 +#: musicexp.py:1476 #, python-format msgid "Unable to convert alteration %s to a lilypond expression" msgstr "Non si può convertire l'alterazione %s in un'espressione lilypond" #. TODO: Handle pieces without a time signature! -#: musicxml.py:358 +#: musicxml.py:361 msgid "Senza-misura time signatures are not yet supported!" msgstr "I segni di tempo senza-misura non sono ancora supportati!" -#: musicxml.py:376 +#: musicxml.py:379 msgid "Unable to interpret time signature! Falling back to 4/4." msgstr "Non è stato possibile interpretare l'indicazione di tempo! Verrà usato il 4/4." -#: musicxml.py:432 +#: musicxml.py:435 #, python-format msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" msgstr "Si è inserita un'ottava di alterazione di tonalità per un numero di alterazioni inesistente %s, numeri disponibili: %s!" -#: musicxml.py:520 +#: musicxml.py:523 #, python-format msgid "Unable to find instrument for ID=%s\n" msgstr "Impossibile trovare lo strumento con ID=%s\n" -#: book_latex.py:156 +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "Si esegue texi2pdf sul file %s per individuare le impostazioni predefinite della pagina.\n" + +#: book_texinfo.py:228 book_latex.py:209 +msgid "Unable to auto-detect default settings:\n" +msgstr "Impossibile individuare automaticamente le impostazioni predefinite:\n" + +#: book_texinfo.py:240 book_latex.py:221 +#, python-format +msgid "" +"Unable to auto-detect default settings:\n" +"%s" +msgstr "" +"Impossibile individuare le impostazioni predefinite:\n" +"%s" + +#: book_latex.py:170 msgid "cannot find \\begin{document} in LaTeX document" msgstr "impossibile trovare \\begin{document} nel documento LaTeX" -#: musicxml2ly.py:223 +#: book_latex.py:188 +#, python-format +msgid "Running `%s' on file `%s' to detect default page settings.\n" +msgstr "Esecuzione di \"%s\" sul file \"%s\" per individuare le impostazioni predefinite della pagina.\n" + +#: musicxml2ly.py:228 #, python-format msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" msgstr "Si è trovato un file creato da %s che contiene informazioni sbagliate sulla disposizione delle travature. Tutte le informazioni sulle travature presenti nel file MusicXML verranno ignorate" -#: musicxml2ly.py:239 musicxml2ly.py:241 +#: musicxml2ly.py:247 musicxml2ly.py:249 #, python-format msgid "Unprocessed PartGroupInfo %s encountered" msgstr "PartGroupInfo %s rilevato ma non elaborato" -#: musicxml2ly.py:494 +#: musicxml2ly.py:500 #, python-format msgid "Encountered note at %s without type and duration (=%s)" msgstr "Trovata una nota in %s senza tipo e durata (=%s)" -#: musicxml2ly.py:514 +#: musicxml2ly.py:520 #, python-format msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" msgstr "Trovata una durata razionale con denominatore %s, impossibile convertire in una durata di lilypond" -#: musicxml2ly.py:761 +#: musicxml2ly.py:767 msgid "Unable to extract key signature!" msgstr "Impossibile estrarre l'armatura di chiave!" -#: musicxml2ly.py:788 +#: musicxml2ly.py:794 #, python-format msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" msgstr "modo %s sconosciuto, è richiesto \"major\" o \"minor\" o un modo ecclesiastico!" -#: musicxml2ly.py:926 +#: musicxml2ly.py:932 #, python-format msgid "Encountered unprocessed marker %s\n" msgstr "Trovato un marcatore non elaborato %s\n" -#: musicxml2ly.py:1020 +#: musicxml2ly.py:1026 #, python-format msgid "unknown span event %s" msgstr "evento di estensione %s sconosciuto" -#: musicxml2ly.py:1030 +#: musicxml2ly.py:1036 #, python-format msgid "unknown span type %s for %s" msgstr "tipo di estensione %s sconosciuto per %s" -#: musicxml2ly.py:1450 +#: musicxml2ly.py:1456 msgid "Unknown metronome mark, ignoring" msgstr "Indicazione metronomica sconosciuta, si ignora" #. TODO: Implement the other (more complex) way for tempo marks! -#: musicxml2ly.py:1455 +#: musicxml2ly.py:1461 msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." msgstr "Indicazioni metronomiche con relazioni complesse ( in MusicXML) non sono ancora implementate." -#: musicxml2ly.py:1657 +#: musicxml2ly.py:1663 #, python-format msgid "Unable to convert chord type %s to lilypond." msgstr "Impossibile convertire l'accordo di tipo %s in un'espressione di lilypond." -#: musicxml2ly.py:1806 +#: musicxml2ly.py:1816 #, python-format msgid "drum %s type unknown, please add to instrument_drumtype_dict" msgstr "tipo di percussione %s sconosciuto, si prega di aggiungerlo a instrument_drumtype_dict" -#: musicxml2ly.py:1810 +#: musicxml2ly.py:1820 msgid "cannot find suitable event" msgstr "impossibile trovare un evento adatto" -#: musicxml2ly.py:1958 +#: musicxml2ly.py:1968 #, python-format msgid "Negative skip %s (from position %s to %s)" msgstr "Salto negativo %s (dalla posizione %s a %s)" -#: musicxml2ly.py:2099 +#: musicxml2ly.py:2109 #, python-format msgid "Negative skip found: from %s to %s, difference is %s" msgstr "Trovato un salto negativo: da %s a %s, la differenza è %s" -#: musicxml2ly.py:2180 +#: musicxml2ly.py:2190 #, python-format msgid "unexpected %s; expected %s or %s or %s" msgstr "%s inaspettato; previsto %s o %s o %s" -#: musicxml2ly.py:2286 +#: musicxml2ly.py:2296 msgid "Encountered closing slur, but no slur is open" msgstr "Trovata la chiusura di una legatura di portamento, ma non ne è stata aperta alcuna" -#: musicxml2ly.py:2289 +#: musicxml2ly.py:2299 msgid "Cannot have two simultaneous (closing) slurs" msgstr "Due legature di portamento non possono chiudersi simultaneamente" -#: musicxml2ly.py:2298 +#: musicxml2ly.py:2308 msgid "Cannot have a slur inside another slur" msgstr "Due legature di portamento non possono sovrapporsi" -#: musicxml2ly.py:2301 +#: musicxml2ly.py:2311 msgid "Cannot have two simultaneous slurs" msgstr "Due legature di portamento non possono intervenire simultaneamente" -#: musicxml2ly.py:2435 +#: musicxml2ly.py:2445 #, python-format msgid "cannot simultaneously have more than one mode: %s" msgstr "non si può avere simultaneamente più di un modo: %s" -#: musicxml2ly.py:2543 +#: musicxml2ly.py:2553 msgid "Converting to LilyPond expressions..." msgstr "Conversione nelle espressioni di LilyPond..." -#: musicxml2ly.py:2554 +#: musicxml2ly.py:2564 msgid "musicxml2ly [OPTION]... FILE.xml" msgstr "musicxml2ly [OPZIONE]... FILE.xml" -#: musicxml2ly.py:2556 +#: musicxml2ly.py:2566 msgid "" "Convert MusicXML from FILE.xml to LilyPond input.\n" "If the given filename is -, musicxml2ly reads from the command line.\n" @@ -951,230 +1053,259 @@ msgstr "" "Converte FILE.xml (MusicXML) in input di LilyPond.\n" "Se il nome del file è -, musicxml2ly legge dalla riga di comando.\n" -#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140 -#: convert-ly.py:98 etf2ly.py:1202 main.cc:157 +#: musicxml2ly.py:2572 midi2ly.py:1062 abc2ly.py:1388 lilypond-book.py:140 +#: convert-ly.py:92 etf2ly.py:1204 main.cc:153 msgid "show this help and exit" msgstr "mostra questo messaggio di aiuto ed esce" -#: musicxml2ly.py:2566 +#: musicxml2ly.py:2576 msgid "" -"Copyright (c) 2005--2011 by\n" +"Copyright (c) 2005--2012 by\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen and\n" " Reinhold Kainhofer \n" msgstr "" -"Copyright (c) 2005--2011 di\n" +"Copyright (c) 2005--2012 di\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen e\n" " Reinhold Kainhofer \n" -#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212 -#: convert-ly.py:94 etf2ly.py:1206 main.cc:168 +#: musicxml2ly.py:2590 midi2ly.py:1095 abc2ly.py:1385 lilypond-book.py:231 +#: convert-ly.py:88 etf2ly.py:1208 main.cc:174 msgid "show version number and exit" msgstr "mostra il numero di versione ed esce" -#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169 +#: musicxml2ly.py:2596 midi2ly.py:1090 lilypond-book.py:223 msgid "be verbose" msgstr "passa in modalità prolissa" -#: musicxml2ly.py:2591 +#: musicxml2ly.py:2602 msgid "use lxml.etree; uses less memory and cpu time" msgstr "usa lxml.etree per limitare il consumo di memoria e i tempi del processore" -#: musicxml2ly.py:2597 +#: musicxml2ly.py:2608 msgid "input file is a zip-compressed MusicXML file" msgstr "il file di input è un file MusicXML compresso in ZIP" -#: musicxml2ly.py:2603 +#: musicxml2ly.py:2614 msgid "convert pitches in relative mode (default)" msgstr "converte le altezze in modo relativo (predefinito)" -#: musicxml2ly.py:2608 +#: musicxml2ly.py:2619 msgid "convert pitches in absolute mode" msgstr "converte le altezze in modo assoluto" -#: musicxml2ly.py:2611 +#: musicxml2ly.py:2622 msgid "LANG" msgstr "LINGUA" -#: musicxml2ly.py:2613 +#: musicxml2ly.py:2624 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" msgstr "usa LINGUA per i nomi delle altezze, ad esempio 'deutsch' per i nomi delle note in tedesco" -#: musicxml2ly.py:2619 +#: musicxml2ly.py:2627 lilypond-book.py:179 convert-ly.py:105 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" +msgstr "Mostra i messaggi di log in base a LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" + +#: musicxml2ly.py:2629 lilypond-book.py:163 lilypond-book.py:181 +#: convert-ly.py:107 main.cc:167 +msgid "LOGLEVEL" +msgstr "LOGLEVEL" + +#: musicxml2ly.py:2638 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." msgstr "non converte le direzioni (^, _ o -) per articolazioni, dinamiche, etc." -#: musicxml2ly.py:2625 +#: musicxml2ly.py:2644 msgid "do not convert exact vertical positions of rests" msgstr "non converte le esatte posizioni verticali delle pause" -#: musicxml2ly.py:2631 +#: musicxml2ly.py:2650 msgid "do not convert the exact page layout and breaks" msgstr "non converte l'esatta formattazione di pagina e gli a capo" -#: musicxml2ly.py:2637 +#: musicxml2ly.py:2656 msgid "do not convert beaming information, use lilypond's automatic beaming instead" msgstr "non converte le informazioni relative alle travature, usare invece la disposizione automatica delle travature di lilypond" -#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208 -#: main.cc:161 main.cc:166 +#: musicxml2ly.py:2659 midi2ly.py:1067 midi2ly.py:1072 etf2ly.py:1210 +#: main.cc:159 main.cc:171 msgid "FILE" msgstr "FILE" -#: musicxml2ly.py:2645 +#: musicxml2ly.py:2664 msgid "set output filename to FILE, stdout if -" msgstr "imposta il nome del file di output su FILE (stdout se -)" +#: musicxml2ly.py:2670 +msgid "activate midi-block" +msgstr "attiva il blocco midi" + #. Translators, please translate this string as #. "Report bugs in English via %s", #. or if there is a LilyPond users list or forum in your language #. "Report bugs in English via %s or in YOUR_LANG via URI" -#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234 -#: convert-ly.py:144 etf2ly.py:1216 main.cc:281 +#: musicxml2ly.py:2674 midi2ly.py:1107 abc2ly.py:1403 lilypond-book.py:258 +#: convert-ly.py:146 etf2ly.py:1218 main.cc:285 #, c-format, python-format msgid "Report bugs via %s" msgstr "Segnalare i bug in inglese attraverso %s" -#: musicxml2ly.py:2728 +#: musicxml2ly.py:2754 #, python-format msgid "unknown part in part-list: %s" msgstr "parte sconosciuta in part-list: %s" -#: musicxml2ly.py:2790 +#: musicxml2ly.py:2816 msgid "Input is compressed, extracting raw MusicXML data from stdin" msgstr "L'input è compresso. Estrazione dei dati MusicXML da stdin" -#: musicxml2ly.py:2793 +#: musicxml2ly.py:2829 #, python-format msgid "Input file %s is compressed, extracting raw MusicXML data" msgstr "Il file di input %s è compresso. Estrazione dei dati MusicXML" -#: musicxml2ly.py:2823 +#: musicxml2ly.py:2859 msgid "Reading MusicXML from Standard input ..." msgstr "Lettura di MusicXML da Standard input ..." -#: musicxml2ly.py:2825 +#: musicxml2ly.py:2861 #, python-format msgid "Reading MusicXML from %s ..." msgstr "Lettura di MusicXML da %s ..." -#: musicxml2ly.py:2858 +#: musicxml2ly.py:2894 #, python-format msgid "Output to `%s'" msgstr "Output inviato a «%s»" -#: musicxml2ly.py:2925 +#: musicxml2ly.py:2964 #, python-format msgid "Unable to find input file %s" msgstr "Impossibile trovare il file di input %s" -#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189 +#: midi2ly.py:81 lilypond-book.py:115 convert-ly.py:75 etf2ly.py:1191 #, python-format msgid "Copyright (c) %s by" msgstr "Copyright (c) %s di" -#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191 +#: midi2ly.py:83 lilypond-book.py:117 convert-ly.py:77 etf2ly.py:1193 msgid "Distributed under terms of the GNU General Public License." msgstr "Distribuito secondo i termini della GNU General Public License." -#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192 +#: midi2ly.py:84 lilypond-book.py:118 convert-ly.py:78 etf2ly.py:1194 msgid "It comes with NO WARRANTY." msgstr "È distribuito con NESSUNA GARANZIA." -#: midi2ly.py:99 +#: midi2ly.py:90 msgid "warning: " msgstr "attenzione: " -#: midi2ly.py:102 midi2ly.py:1041 +#: midi2ly.py:93 midi2ly.py:1124 msgid "error: " msgstr "errore: " -#: midi2ly.py:103 +#: midi2ly.py:94 msgid "Exiting... " msgstr "Uscita... " -#: midi2ly.py:960 +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" +msgstr "trovate più di 5 voci in un rigo, è probabile che l'output sia sbagliato" + +#: midi2ly.py:1032 #, python-format msgid "%s output to `%s'..." msgstr "%s output inviato a «%s»..." -#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87 +#: midi2ly.py:1044 abc2ly.py:1376 lilypond-book.py:122 convert-ly.py:81 #, python-format msgid "%s [OPTION]... FILE" msgstr "%s [OPZIONE]... FILE" -#: midi2ly.py:973 +#: midi2ly.py:1045 #, python-format msgid "Convert %s to LilyPond input.\n" msgstr "Converte %s in input LilyPond.\n" -#: midi2ly.py:978 +#: midi2ly.py:1050 msgid "print absolute pitches" msgstr "stampa altezze assolute" -#: midi2ly.py:980 midi2ly.py:1002 +#: midi2ly.py:1052 midi2ly.py:1080 msgid "DUR" msgstr "DURATA" -#: midi2ly.py:981 +#: midi2ly.py:1053 msgid "quantise note durations on DUR" msgstr "quantificare la durata delle note in DURATA" -#: midi2ly.py:984 +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "mostra le informazioni di debug" + +#: midi2ly.py:1059 msgid "print explicit durations" msgstr "stampa durate esplicite" -#: midi2ly.py:989 +#: midi2ly.py:1064 msgid "prepend FILE to output" msgstr "antepone FILE all'output" -#: midi2ly.py:993 +#: midi2ly.py:1068 msgid "set key: ALT=+sharps|-flats; MINOR=1" msgstr "imposta la tonalità: ALTERAZIONE=+diesis|-bemolle; MINORE=1" -#: midi2ly.py:994 +#: midi2ly.py:1069 msgid "ALT[:MINOR]" msgstr "ALTERAZIONE[:MINORE]" -#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207 +#: midi2ly.py:1071 abc2ly.py:1391 etf2ly.py:1209 msgid "write output to FILE" msgstr "scrive l'output in FILE" -#: midi2ly.py:999 +#: midi2ly.py:1074 msgid "preview of first 4 bars" msgstr "anteprima delle prime 4 battute" -#: midi2ly.py:1001 +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" +msgstr "sopprime i messaggi di avanzamento e gli avvertimenti relativi alle voci in eccesso" + +#: midi2ly.py:1079 msgid "quantise note starts on DUR" msgstr "quantifica l'inizio di una nota in DURATA" -#: midi2ly.py:1004 +#: midi2ly.py:1083 +msgid "use s instead of r for rests" +msgstr "si usi s invece di r per indicare le pause" + +#: midi2ly.py:1085 msgid "DUR*NUM/DEN" msgstr "DURATA*NUMERATORE/DENOMINATORE" -#: midi2ly.py:1007 +#: midi2ly.py:1088 msgid "allow tuplet durations DUR*NUM/DEN" msgstr "consente le durate DURATA*NUMERATORE/DENOMINATORE nei gruppi irregolari" -#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210 -#: main.cc:170 +#: midi2ly.py:1096 lilypond-book.py:234 convert-ly.py:141 etf2ly.py:1212 +#: main.cc:176 msgid "show warranty and copyright" msgstr "mostra la garanzia e il copyright" -#: midi2ly.py:1019 +#: midi2ly.py:1098 msgid "treat every text as a lyric" msgstr "tratta ogni testo come il testo di una canzone" -#: midi2ly.py:1022 +#: midi2ly.py:1101 msgid "Examples" msgstr "Esempi" -#: midi2ly.py:1042 +#: midi2ly.py:1125 msgid "no files specified on command line." msgstr "nessun file specificato nella riga di comando." -#: abc2ly.py:1374 +#: abc2ly.py:1377 #, python-format msgid "" "abc2ly converts ABC music files (see\n" @@ -1183,19 +1314,23 @@ msgstr "" "abc2ly converte file musicali ABC (si veda\n" "%s) in input LilyPond.\n" -#: abc2ly.py:1390 +#: abc2ly.py:1394 msgid "be strict about success" msgstr "è severo rispetto all'esito" -#: abc2ly.py:1392 +#: abc2ly.py:1397 msgid "preserve ABC's notion of beams" msgstr "preserva la nozione di travatura di ABC" +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "sopprime i messaggi di avanzamento" + #: lilypond-book.py:80 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." msgstr "Elaborare i frammenti di codice LilyPond in un documento HTML ibrido, LaTeX, texinfo o DocBook." -#: lilypond-book.py:82 convert-ly.py:46 +#: lilypond-book.py:82 convert-ly.py:48 msgid "Examples:" msgstr "Esempi:" @@ -1228,8 +1363,8 @@ msgstr "FORMATO" msgid "add DIR to include path" msgstr "aggiunge DIR al percorso di inclusione" -#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163 -#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160 +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 msgid "DIR" msgstr "DIR" @@ -1246,48 +1381,56 @@ msgid "pad left side of music to align music inspite of uneven bar numbers (in m msgstr "aumenta il lato sinistro della musica (in mm) per allinearla nonostante il numero irregolare di battute" #: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" +msgstr "Mostra i messaggi di log di lilypond in base a LOGLEVEL" + +#: lilypond-book.py:168 msgid "write lily-XXX files to DIR, link into --output dir" msgstr "" "scrive i file lily-XXX in DIR e crea un collegamento verso\n" "la directory specificata con --output" -#: lilypond-book.py:167 +#: lilypond-book.py:173 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" msgstr "Carica il PACCHETTO python supplementare (contenente ad esempio un formato di output personalizzato)" -#: lilypond-book.py:168 +#: lilypond-book.py:174 msgid "PACKAGE" msgstr "PACCHETTO" -#: lilypond-book.py:172 +#: lilypond-book.py:186 msgid "write output to DIR" msgstr "scrive l'output in DIR" -#: lilypond-book.py:177 +#: lilypond-book.py:191 msgid "COMMAND" msgstr "COMANDO" -#: lilypond-book.py:178 +#: lilypond-book.py:192 msgid "process ly_files using COMMAND FILE..." msgstr "elabora ly_files con COMANDO FILE..." -#: lilypond-book.py:182 +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "Redirezione dell'output di lilypond" + +#: lilypond-book.py:201 msgid "Compile snippets in safe mode" msgstr "Compila i frammenti di codice in modalità sicura" -#: lilypond-book.py:188 +#: lilypond-book.py:207 msgid "do not fail if no lilypond output is found" msgstr "non si interrompe se non si trova alcun output di lilypond" -#: lilypond-book.py:194 +#: lilypond-book.py:213 msgid "do not fail if no PNG images are found for EPS files" msgstr "non si interrompe se non si trovano immagini PNG per i file EPS" -#: lilypond-book.py:200 +#: lilypond-book.py:219 msgid "write snippet output files with the same base name as their source file" msgstr "scrive i file di output dei frammenti di codice con lo stesso nome di base dei file sorgenti" -#: lilypond-book.py:220 +#: lilypond-book.py:239 msgid "" "run executable PROG instead of latex, or in\n" "case --pdf option is set instead of pdflatex" @@ -1295,70 +1438,92 @@ msgstr "" "eseguire il PROGRAMMA eseguibile invece di latex, o nel caso in\n" "cui viene impostata l'opzione --pdf invece di usare pdflatex" -#: lilypond-book.py:222 +#: lilypond-book.py:241 lilypond-book.py:246 msgid "PROG" msgstr "PROGRAMMA" -#: lilypond-book.py:228 +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "esegue l'eseguibile PROGRAMMA invece di texi2pdf" + +#: lilypond-book.py:252 msgid "create PDF files for use with PDFTeX" msgstr "creare file PDF per l'utilizzo con PDFTeX" -#: lilypond-book.py:419 +#: lilypond-book.py:455 msgid "Writing snippets..." msgstr "Scrittura dei frammenti di codice..." -#: lilypond-book.py:425 +#: lilypond-book.py:460 msgid "Processing..." msgstr "In elaborazione..." -#: lilypond-book.py:431 +#: lilypond-book.py:465 msgid "All snippets are up to date..." msgstr "Tutti i frammenti di codice sono aggiornati..." -#: lilypond-book.py:452 +#: lilypond-book.py:467 +msgid "Linking files..." +msgstr "Collegamento dei file..." + +#: lilypond-book.py:487 #, python-format msgid "cannot determine format for: %s" msgstr "impossibile determinare il formato per: %s" -#: lilypond-book.py:461 +#: lilypond-book.py:496 #, python-format msgid "%s is up to date." msgstr "%s è aggiornato." -#: lilypond-book.py:475 +#: lilypond-book.py:509 #, python-format msgid "Writing `%s'..." msgstr "Scrittura di «%s»..." -#: lilypond-book.py:537 +#: lilypond-book.py:570 msgid "Output would overwrite input file; use --output." msgstr "L'output sovrascriverebbe il file di input; usare --output." -#: lilypond-book.py:541 +#: lilypond-book.py:574 #, python-format msgid "Reading %s..." msgstr "Lettura di %s..." -#: lilypond-book.py:549 +#: lilypond-book.py:581 msgid "Dissecting..." msgstr "Dissezione di..." -#: lilypond-book.py:561 +#: lilypond-book.py:592 #, python-format msgid "Compiling %s..." msgstr "Compilazione di %s" -#: lilypond-book.py:570 +#: lilypond-book.py:600 #, python-format msgid "Processing include: %s" msgstr "Elaborazione di include: %s" -#: lilypond-book.py:582 +#: lilypond-book.py:611 #, python-format msgid "Removing `%s'" msgstr "Eliminazione di «%s»" -#: convert-ly.py:44 +#: lilypond-book.py:704 +#, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "Si imposta il loglevel di LilyPond su %s" + +#: lilypond-book.py:708 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" +msgstr "Si imposta il loglevel di LilyPond su %s (dalla variabile d'ambiente LILYPOND_LOGLEVEL)" + +#: lilypond-book.py:711 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" +msgstr "Si imposta l'output di LilyPond su --verbose, come implicato dall'impostazione di lilypond-book" + +#: convert-ly.py:46 msgid "" "Update LilyPond input to newer version. By default, update from the\n" "version taken from the \\version command, to the current LilyPond version." @@ -1366,69 +1531,69 @@ msgstr "" "Aggiorna l'input LilyPond a una nuova versione. Per impostazione predefinita aggiorna dalla\n" "versione presa dal comando \\version alla versione attuale di LilyPond." -#: convert-ly.py:102 convert-ly.py:135 +#: convert-ly.py:96 convert-ly.py:137 msgid "VERSION" msgstr "VERSIONE" -#: convert-ly.py:104 +#: convert-ly.py:98 msgid "start from VERSION [default: \\version found in file]" msgstr "parte dalla VERSIONE [predefinito: \\version del file]" -#: convert-ly.py:107 +#: convert-ly.py:101 msgid "edit in place" msgstr "modifica il file di input" -#: convert-ly.py:111 +#: convert-ly.py:113 msgid "do not add \\version command if missing" msgstr "non aggiunge il comando \\version se non è presente" -#: convert-ly.py:117 +#: convert-ly.py:119 #, python-format msgid "force updating \\version number to %s" msgstr "forza l'aggiornamento del numero di \\version a %s" -#: convert-ly.py:123 +#: convert-ly.py:125 msgid "only update \\version number if file is modified" msgstr "aggiorna il numero di \\version solo se il file è modificato" -#: convert-ly.py:129 +#: convert-ly.py:131 #, python-format msgid "show rules [default: -f 0, -t %s]" msgstr "mostra le regole [predefinito: -f 0, -t %s]" -#: convert-ly.py:134 +#: convert-ly.py:136 #, python-format msgid "convert to VERSION [default: %s]" msgstr "converte a VERSIONE [predefinito: %s]" -#: convert-ly.py:184 +#: convert-ly.py:186 msgid "Applying conversion: " msgstr "Conversione in corso: " -#: convert-ly.py:197 +#: convert-ly.py:202 msgid "Error while converting" msgstr "Errore durante la conversione" -#: convert-ly.py:199 +#: convert-ly.py:204 msgid "Stopping at last successful rule" msgstr "Fermarsi all'ultima regola riuscita" -#: convert-ly.py:224 +#: convert-ly.py:231 #, python-format msgid "Processing `%s'... " msgstr "Elaborazione di «%s»... " -#: convert-ly.py:332 +#: convert-ly.py:338 #, python-format msgid "%s: Unable to open file" msgstr "%s: Impossibile aprire il file" -#: convert-ly.py:339 +#: convert-ly.py:345 #, python-format msgid "%s: Unable to determine version. Skipping" msgstr "%s: Impossibile determinare la versione. Tralasciato" -#: convert-ly.py:344 +#: convert-ly.py:350 #, python-format msgid "" "%s: Invalid version string `%s' \n" @@ -1437,12 +1602,12 @@ msgstr "" "%s: Stringa di versione non valida `%s' \n" "Le stringhe di versione valide sono composte da tre numeri separati da punti, ad esempio «2.8.12»" -#: etf2ly.py:1195 +#: etf2ly.py:1197 #, python-format msgid "%s [OPTION]... ETF-FILE" msgstr "%s [OPZIONE]... FILE-ETF" -#: etf2ly.py:1196 +#: etf2ly.py:1198 msgid "" "Enigma Transport Format is a format used by Coda Music Technology's\n" "Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" @@ -1458,20 +1623,56 @@ msgstr "Inglese" msgid "Other languages" msgstr "Altre lingue" -#: warn.cc:59 +#: website_post.py:127 +#, python-format +msgid "About automatic language selection." +msgstr "Informazioni sulla selezione automatica della lingua." + +#: warn.cc:56 +#, c-format +msgid "Log level set to %d\n" +msgstr "Log level impostato su %d\n" + +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" +msgstr "log level \"%s\" sconosciuto, si usa quello predefinito (INFO)" + +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 +#, c-format +msgid "%d expected warning(s) not encountered: " +msgstr "%d avvertimenti previsti non incontrati: " + +#: warn.cc:183 #, c-format -msgid "success: %s" -msgstr "riuscito: %s" +msgid "fatal error: %s" +msgstr "errore fatale: %s" -#: warn.cc:86 grob.cc:617 input.cc:97 +#: warn.cc:192 +#, c-format +msgid "suppressed programming error: %s" +msgstr "errore di programmazione soppresso: %s" + +#: warn.cc:197 #, c-format msgid "programming error: %s" msgstr "errore di programmazione: %s" -#: warn.cc:87 input.cc:98 +#: warn.cc:198 msgid "continuing, cross fingers" msgstr "continua, incrociare le dita" +#: warn.cc:207 +#, c-format +msgid "suppressed error: %s" +msgstr "errore soppresso: %s" + +#: warn.cc:219 +#, c-format +msgid "suppressed warning: %s" +msgstr "avvertimento soppresso: %s" + #: getopt-long.cc:153 #, c-format msgid "option `%s' requires an argument" @@ -1492,42 +1693,49 @@ msgstr "opzione non riconosciuta: «%s»" msgid "invalid argument `%s' to option `%s'" msgstr "argomento «%s» non valido per l'opzione «%s»" -#: grob.cc:286 -msgid "Infinity or NaN encountered" -msgstr "incontrato infinito o un valore non numerico" +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "posizione sconosciuta" -#: vaticana-ligature.cc:95 -msgid "flexa-height undefined; assuming 0" -msgstr "flexa-height non definito; si assume 0" +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" +msgstr "Nessun tremolo alla fine" -#: vaticana-ligature.cc:100 -msgid "ascending vaticana style flexa" -msgstr "flexa ascendente in stile vaticana" +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "tremolo dell'accordo non terminato" -#: vaticana-ligature.cc:188 -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" -msgstr "Vaticana_ligature: unione nulla (delta_pitch == 0)" +#: chord-tremolo-engraver.cc:149 beam-engraver.cc:266 +msgid "stem must have Rhythmic structure" +msgstr "il gambo deve avere una struttura ritmica" -#: parse-scm.cc:101 -msgid "GUILE signaled an error for the expression beginning here" -msgstr "GUILE ha segnalato un errore per l'espressione che inizia qui" +#: flag.cc:113 +#, c-format +msgid "flag `%s' not found" +msgstr "non si trova la coda uncinata «%s»" -#: rest-collision-engraver.cc:70 -msgid "rhythmic head is not part of a rhythmic column" -msgstr "la testa ritmica non fa parte di una colonna ritmica" +#: flag.cc:133 +#, c-format +msgid "flag stroke `%s' not found" +msgstr "non si trova il tratto «%s» della coda uncinata" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:189 constrained-breaking.cc:207 -msgid "cannot find line breaking that satisfies constraints" -msgstr "impossibile trovare interruzioni di linea che soddisfino i vincoli" +#: vaticana-ligature.cc:94 +msgid "flexa-height undefined; assuming 0" +msgstr "flexa-height non definito; si assume 0" -#: horizontal-bracket-engraver.cc:78 -msgid "do not have that many brackets" -msgstr "non ci sono così tante parentesi" +#: vaticana-ligature.cc:99 +msgid "ascending vaticana style flexa" +msgstr "flexa ascendente in stile vaticana" -#: horizontal-bracket-engraver.cc:87 -msgid "conflicting note group events" -msgstr "eventi di gruppi di note in conflitto" +#: slur.cc:430 +#, c-format +msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgstr "Si ignora il grob per la legatura di portamento: %s. Non si è impostato avoid-slur?" + +#: translator-group.cc:188 +#, c-format +msgid "cannot find: `%s'" +msgstr "impossibile trovare: «%s»" #: hyphen-engraver.cc:104 msgid "removing unterminated hyphen" @@ -1537,71 +1745,44 @@ msgstr "eliminazione di un trattino non terminato" msgid "unterminated hyphen; removing" msgstr "trattino non terminato; eliminazione" -#: pango-font.cc:187 open-type-font.cc:319 -#, c-format -msgid "FT_Get_Glyph_Name () error: %s" -msgstr "errore in FT_Get_Glyph_Name (): %s" +#: page-layout-problem.cc:403 +msgid "A page layout problem has been initiated that cannot accommodate footnotes." +msgstr "Si è creato un problema di formattazione della pagina che impedisce di ospitare le note a pié di pagina." -#: pango-font.cc:204 -#, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" -msgstr "" -"Il glifo non ha un nome, ma il tipo di carattere permette di dare un nome al glifo.\n" -"Si salta il glifo U+%0X, file %s" +#: page-layout-problem.cc:721 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" +msgstr "impossibile far entrare la musica nella pagina: richiesta la spaziatura ridotta, ma la pagina è già stata compressa" -#: pango-font.cc:241 +#: page-layout-problem.cc:724 #, c-format -msgid "no PostScript font name for font `%s'" -msgstr "nessun nome di tipo di carattere PostScript per «%s»" +msgid "cannot fit music on page: overflow is %f" +msgstr "impossibile far entrare la musica nella pagina: l'eccesso è %f" -#: pango-font.cc:290 -msgid "FreeType face has no PostScript font name" -msgstr "Il tipo FreeType non ha un nome per il tipo di carattere PostScript" +#: page-layout-problem.cc:726 +msgid "compressing music to fit" +msgstr "si comprime la musica per farla entrare" -#: midi-item.cc:92 -#, c-format -msgid "no such MIDI instrument: `%s'" -msgstr "non esiste questo strumento MIDI: «%s»" +#: page-layout-problem.cc:1188 +msgid "staff-affinities should only decrease" +msgstr "staff-affinities deve solo diminuire" -#: note-heads-engraver.cc:76 -msgid "NoteEvent without pitch" -msgstr "NoteEvent senza altezza" +#: arpeggio.cc:115 +msgid "no heads for arpeggio found?" +msgstr "non sono state trovate teste per l'arpeggio?" -#: rest.cc:159 -#, c-format -msgid "rest `%s' not found" -msgstr "pausa «%s» non trovata" +#: lyric-combine-music-iterator.cc:199 +msgid "argument of \\lyricsto should contain Lyrics context" +msgstr "l'argomento di \\lyricsto deve contenere il contesto Lyrics" -#: spaceable-grob.cc:94 +#: lyric-combine-music-iterator.cc:337 #, c-format -msgid "No spring between column %d and next one" -msgstr "Nessuna separazione tra la colonna %d e la successiva" - -#: beam-engraver.cc:147 -msgid "already have a beam" -msgstr "travatura già presente" - -#: beam-engraver.cc:230 -msgid "unterminated beam" -msgstr "travatura non terminata" - -#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150 -msgid "stem must have Rhythmic structure" -msgstr "il gambo deve avere una struttura ritmica" - -#: beam-engraver.cc:274 -msgid "stem does not fit in beam" -msgstr "il gambo non rientra nella travatura" - -#: beam-engraver.cc:275 -msgid "beam was started here" -msgstr "la travatura è iniziata qui" +msgid "cannot find Voice `%s'" +msgstr "impossibile trovare la voce (Voice) «%s»" -#: music-iterator.cc:182 -msgid "Sending non-event to context" -msgstr "Invio di un non-evento al contesto" +#: custos.cc:87 +#, c-format +msgid "custos `%s' not found" +msgstr "custos «%s» non trovato" #: context.cc:149 #, c-format @@ -1613,75 +1794,81 @@ msgstr "impossibile trovare o creare un nuovo «%s»" msgid "cannot find or create `%s' called `%s'" msgstr "impossibile trovare o creare «%s» chiamato «%s»" -#: context.cc:269 -#, c-format -msgid "Invalid CreateContext event: Cannot create %s context" -msgstr "Evento CreateContext non valido: impossibile creare il contesto %s" - #: context.cc:400 #, c-format msgid "cannot find or create: `%s'" msgstr "impossibile trovare o creare: «%s»" -#: dispatcher.cc:82 -msgid "Event class should be a symbol" -msgstr "La classe evento dovrebbe essere un simbolo" +#: dispatcher.cc:83 +msgid "Event class should be a list" +msgstr "La classe evento dovrebbe essere una lista" -#: dispatcher.cc:89 +#: dispatcher.cc:166 #, c-format -msgid "Unknown event class %s" -msgstr "Classe di evento %s sconosciuta" +msgid "Junking event: %s" +msgstr "Eliminazione dell'evento: %s" -#: paper-column-engraver.cc:245 -msgid "forced break was overridden by some other event, should you be using bar checks?" -msgstr "l'interruzione forzata è stata sovrascritta da qualche altro evento, considerare l'uso dei controlli di battuta" +#: dispatcher.cc:262 +msgid "Attempting to remove nonexisting listener." +msgstr "Tentativo di togliere un ascoltatore non esistente." + +#: dispatcher.cc:284 +msgid "Already listening to dispatcher, ignoring request" +msgstr "Già in ascolto del controllore, si ignora la richiesta" + +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" +msgstr "%d: %s" -#: tie-engraver.cc:116 +#: auto-change-iterator.cc:74 change-iterator.cc:72 +#, c-format +msgid "cannot change, already in translator: %s" +msgstr "impossibile cambiare, già nel traduttore: %s" + +#: tie-engraver.cc:117 msgid "unterminated tie" msgstr "legatura di valore non terminata" -#: tie-engraver.cc:312 +#: tie-engraver.cc:348 msgid "lonely tie" msgstr "legatura di valore solitaria" -#: dynamic-engraver.cc:197 -msgid "cannot find start of (de)crescendo" -msgstr "impossibile trovare l'inizio del (de)crescendo" - -#: dynamic-engraver.cc:206 -msgid "already have a decrescendo" -msgstr "decrescendo già presente" - -#: dynamic-engraver.cc:208 -msgid "already have a crescendo" -msgstr "crescendo già presente" +#: note-column.cc:147 +msgid "cannot have note heads and rests together on a stem" +msgstr "impossibile avere teste e pause insieme su un gambo" -#: dynamic-engraver.cc:211 -msgid "cresc starts here" -msgstr "cresc inizia qui" +#: parse-scm.cc:121 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "GUILE ha segnalato un errore per l'espressione che inizia qui" -#: dynamic-engraver.cc:339 -msgid "unterminated (de)crescendo" -msgstr "(de)crescendo non terminato" +#: footnote-engraver.cc:109 +msgid "Must be footnote-event." +msgstr "Deve essere un evento nota a pié di pagina (footnote-event)." #: paper-score.cc:122 minimal-page-breaking.cc:40 msgid "Calculating line breaks..." msgstr "Calcolo delle interruzioni di linea..." -#: paper-score.cc:135 +#: paper-score.cc:134 #, c-format msgid "Element count %d (spanners %d) " msgstr "Conto degli elementi %d (spanner %d)." -#: paper-score.cc:139 +#: paper-score.cc:138 msgid "Preprocessing graphical objects..." msgstr "Pre-elaborazione degli oggetti grafici..." -#: paper-score.cc:163 optimal-page-breaking.cc:208 +#: paper-score.cc:162 optimal-page-breaking.cc:207 #: page-turn-page-breaking.cc:248 msgid "Drawing systems..." msgstr "Disegno dei sistemi..." +#: program-option-scheme.cc:235 +#, c-format +msgid "no such internal option: %s" +msgstr "opzione interna sconosciuta: %s" + #: mensural-ligature-engraver.cc:96 msgid "ligature with less than 2 heads -> skipping" msgstr "legatura con meno di due teste -> si ignora" @@ -1726,48 +1913,50 @@ msgstr "" "lo deve essere anche la penultima nota,\n" "oppure la legatura deve essere LB o SSB" -#: mensural-ligature-engraver.cc:386 +#: mensural-ligature-engraver.cc:387 msgid "unexpected case fall-through" msgstr "caso inatteso e non interpretabile" -#: piano-pedal-engraver.cc:298 +#: piano-pedal-engraver.cc:279 #, c-format msgid "expect 3 strings for piano pedals, found: %ld" msgstr "previste tre corde per i pedali del pianoforte, trovate: %ld" -#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324 +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 #: piano-pedal-performer.cc:104 #, c-format msgid "cannot find start of piano pedal: `%s'" msgstr "impossibile trovare l'inizio del pedale del pianoforte: «%s»" -#: piano-pedal-engraver.cc:359 +#: piano-pedal-engraver.cc:340 #, c-format msgid "cannot find start of piano pedal bracket: `%s'" msgstr "impossibile trovare la parentesi di apertura del pedale del pianoforte: «%s»" -#: input.cc:131 source-file.cc:179 source-file.cc:194 -msgid "position unknown" -msgstr "posizione sconosciuta" - -#: paper-outputter-scheme.cc:41 +#: new-dynamic-engraver.cc:168 #, c-format -msgid "Layout output to `%s'..." -msgstr "Output della formattazione inviato a «%s»..." +msgid "" +"unknown crescendo style: %s\n" +"defaulting to hairpin." +msgstr "" +"stile di crescendo sconosciuto: %s\n" +"si usa la forcella predefinita." -#: general-scheme.cc:306 -msgid "infinity or NaN encountered while converting Real number" -msgstr "si è incontrato infinito o un valore non numerico durante la conversione di un numero reale" +#: new-dynamic-engraver.cc:233 +#, c-format +msgid "unterminated %s" +msgstr "%s non terminato" -#: general-scheme.cc:307 -msgid "setting to zero" -msgstr "impostato a zero" +#: general-scheme.cc:390 +#, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "fallita la redirezione di stderr su «%s»" -#: general-scheme.cc:543 -msgid "Found infinity or nan in output. Substituting 0.0" -msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0" +#: general-scheme.cc:469 output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0" -#: music.cc:151 +#: music.cc:150 #, c-format msgid "octave check failed; expected \"%s\", found: \"%s\"" msgstr "controllo dell'ottava fallito: previsto \"%s\", trovato: \"%s\"" @@ -1781,6 +1970,14 @@ msgstr "(altezza normalizzata)" msgid "Transposing %s by %s makes alteration larger than double" msgstr "La trasposizione di %s da %s ingrandisce le alterazioni più del doppio" +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" +msgstr "strana dimensione del gambo, controllare di non avere travature strette" + +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " +msgstr "Il controllo dell'ottava è fallito, si è ottenuto:" + #: translator-ctors.cc:65 #, c-format msgid "unknown translator: `%s'" @@ -1790,17 +1987,99 @@ msgstr "traduttore sconosciuto: «%s»" msgid "trying to use \\partial after the start of a piece" msgstr "tentativo di usare \\partial all'inizio di un brano" -#: new-fingering-engraver.cc:106 -msgid "cannot add text scripts to individual note heads" -msgstr "impossibile aggiungere delle scritte testuali alle teste delle note individuali" +#: relocate.cc:52 +#, c-format +msgid "Setting %s to %s" +msgstr "Si imposta %s su %s" -#: new-fingering-engraver.cc:250 -msgid "no placement found for fingerings" -msgstr "nessuna posizione trovata per le diteggiature" +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, c-format +msgid "no such file: %s for %s" +msgstr "file inesistente: %s per %s" -#: new-fingering-engraver.cc:251 -msgid "placing below" -msgstr "si colloca in basso" +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 +#, c-format +msgid "no such directory: %s for %s" +msgstr "directory inesistente: %s per %s" + +#: relocate.cc:93 +#, c-format +msgid "%s=%s (prepend)\n" +msgstr "%s=%s (prefisso)\n" + +#: relocate.cc:124 +#, c-format +msgid "not relocating, no %s/ or current/ found under %s" +msgstr "non si riloca, non si è incontrato %s/ o current/ in %s" + +#: relocate.cc:134 +#, c-format +msgid "Relocation: compile datadir=%s, new datadir=%s" +msgstr "Rilocazione: compilare datadir=%s, nuova datadir=%s" + +#: relocate.cc:146 +#, c-format +msgid "Relocation: framework_prefix=%s" +msgstr "Rilocazione: framework_prefix=%s" + +#: relocate.cc:186 +#, c-format +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "Rilocazione: è assoluta: argv0=%s\n" + +#: relocate.cc:192 +#, c-format +msgid "Relocation: from cwd: argv0=%s\n" +msgstr "Rilocazione: da cwd: argv0=%s\n" + +#: relocate.cc:208 +#, c-format +msgid "" +"Relocation: from PATH=%s\n" +"argv0=%s" +msgstr "" +"Rilocazione: da PATH=%s\n" +"argv0=%s" + +#: relocate.cc:235 +msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" +msgstr "LILYPONDPREFIX è obsoleto, usare LILYPOND_DATADIR" + +#: relocate.cc:360 +#, c-format +msgid "Relocation file: %s" +msgstr "File di rilocazione: %s" + +#: relocate.cc:364 source-file.cc:65 +#, c-format +msgid "cannot open file: `%s'" +msgstr "impossibile aprire il file: «%s»" + +#: relocate.cc:394 +#, c-format +msgid "Unknown relocation command %s" +msgstr "Comando di rilocazione sconosciuto %s" + +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "estensore non terminato" + +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" +msgstr "l'inclusione di file non è permessa in modalità sicura" + +#: lily-lexer.cc:282 +#, c-format +msgid "identifier name is a keyword: `%s'" +msgstr "Il nome dell'identificatore è una parola chiave: «%s»" + +#: lily-lexer.cc:303 lily-lexer.cc:316 +#, c-format +msgid "%s:EOF" +msgstr "%s:EOF" #: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 msgid "cannot find start of ligature" @@ -1818,22 +2097,58 @@ msgstr "legatura già presente" msgid "no left bound" msgstr "manca il limite sinistro" -#: ligature-engraver.cc:185 +#: ligature-engraver.cc:184 msgid "unterminated ligature" msgstr "legatura non terminata" -#: ligature-engraver.cc:214 +#: ligature-engraver.cc:211 msgid "ignoring rest: ligature may not contain rest" msgstr "pausa ignorata: la legatura non può contenere una pausa" -#: ligature-engraver.cc:215 +#: ligature-engraver.cc:212 msgid "ligature was started here" msgstr "la legatura è iniziata qui" -#: auto-change-iterator.cc:74 change-iterator.cc:72 -#, c-format -msgid "cannot change, already in translator: %s" -msgstr "impossibile cambiare, già nel traduttore: %s" +#: dynamic-engraver.cc:193 +msgid "cannot find start of (de)crescendo" +msgstr "impossibile trovare l'inizio del (de)crescendo" + +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "decrescendo già presente" + +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "crescendo già presente" + +#: dynamic-engraver.cc:205 +msgid "cresc starts here" +msgstr "cresc inizia qui" + +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "(de)crescendo non terminato" + +#. fixme: be more verbose. +#: volta-engraver.cc:111 +msgid "cannot end volta spanner" +msgstr "impossibile terminare lo spanner della volta" + +#: volta-engraver.cc:121 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "spanner della volta già presente, si termina quello prematuramente" + +#: volta-engraver.cc:125 +msgid "also already have an ended spanner" +msgstr "è già presente uno spanner terminato" + +#: volta-engraver.cc:126 +msgid "giving up" +msgstr "rinuncia" + +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." +msgstr "Calcolo delle interruzioni di pagina..." #: accidental-engraver.cc:180 #, c-format @@ -1843,31 +2158,50 @@ msgstr "la lista tipografica delle alterazioni deve iniziare con context-name: % #: accidental-engraver.cc:210 #, c-format msgid "procedure or context-name expected for accidental rule, found %s" -msgstr "si aspettava una procedura o un nome di contesto per la regola di alterazione accidentale, si è trovato %s" +msgstr "si aspettava una procedura o context-name per la regola di alterazione accidentale, si è trovato %s" -#: ttf.cc:481 ttf.cc:530 +#: ttf.cc:480 ttf.cc:528 #, c-format msgid "font index %d too large for font `%s', using index 0" msgstr "l'indice del tipo di carattere %d è troppo grande per il tipo di carattere «%s», si usa l'indice 0" -#: ttf.cc:513 ttf.cc:565 +#: ttf.cc:512 ttf.cc:562 msgid "font index must be non-negative, using index 0" msgstr "l'indice del tipo di carattere deve essere non negativo, si usa l'indice 0" -#: break-alignment-interface.cc:206 -#, c-format -msgid "No spacing entry from %s to `%s'" -msgstr "Nessuno spazio da %s a «%s»" +#: score.cc:172 +msgid "already have music in score" +msgstr "musica già presente nello spartito" -#: minimal-page-breaking.cc:44 -msgid "Calculating page breaks..." -msgstr "Calcolo delle interruzioni di pagina..." +#: score.cc:173 +msgid "this is the previous music" +msgstr "questa è la musica precedente" + +#: score.cc:178 +msgid "errors found, ignoring music expression" +msgstr "trovati degli errori, si ignora l'espressione musicale" + +#: multi-measure-rest.cc:138 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." +msgstr "usable-duration-logs deve essere una lista non vuota. Si ricorre alle pause di semibreve." + +#: multi-measure-rest.cc:328 +msgid "Using naive multi measure rest spacing." +msgstr "Si usa una spaziatura semplificata per la pausa multipla" #: vaticana-ligature-engraver.cc:400 #, c-format msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" msgstr "prefisso/i «%s» di questa testa ignorato/i in base alle restrizioni dello stile di legatura scelto" +#: vaticana-ligature-engraver.cc:466 +msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch. The ligature should be split." +msgstr "Uso ambiguo dei punti nella legatura: ci sono tante note puntate con la stessa altezza. La legatura deve essere divisa." + +#: vaticana-ligature-engraver.cc:524 +msgid "This ligature has a dotted head followed by a non-dotted head. The ligature should be split after the last dotted head before this head." +msgstr "Questa legatura ha una testa puntata seguita da una non puntata. La legatura deve essere divisa dopo l'ultima testa puntata che precede questa testa." + #: vaticana-ligature-engraver.cc:736 #, c-format msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" @@ -1883,13 +2217,23 @@ msgstr "l'opzione -dprint-pages del programma non è supportata dal backend «%s msgid "program option -dpreview not supported by backend `%s'" msgstr "l'opzione -dpreview del programma non è supportata dal backend «%s»" -#: output-def.cc:235 -msgid "margins do not fit with line-width, setting default values" -msgstr "i margini non corrispondono con la larghezza del rigo, si impostano i valori predefiniti" +#: note-collision.cc:496 +msgid "ignoring too many clashing note columns" +msgstr "troppe collisioni tra colonne di note, ignorate" -#: output-def.cc:242 -msgid "systems run off the page due to improper paper settings, setting default values" -msgstr "i sistemi escono fuori dalla pagina a causa di errate impostazioni del foglio, si impostano i valori predefiniti" +#: system.cc:200 +#, c-format +msgid "Element count %d" +msgstr "Numero degli elementi %d" + +#: system.cc:480 +#, c-format +msgid "Grob count %d" +msgstr "Numero degli oggetti grafici %d" + +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "l'interruzione forzata è stata sovrascritta da qualche altro evento, considerare l'uso dei controlli di battuta" #: score-engraver.cc:78 #, c-format @@ -1909,105 +2253,11 @@ msgstr "Percorso di ricerca «%s»" msgid "Aborting" msgstr "Si sospende l'esecuzione" -#: note-collision.cc:497 -msgid "ignoring too many clashing note columns" -msgstr "troppe collisioni tra colonne di note, ignorate" - -#. fixme: be more verbose. -#: volta-engraver.cc:111 -msgid "cannot end volta spanner" -msgstr "impossibile terminare lo spanner della volta" - -#: volta-engraver.cc:121 -msgid "already have a volta spanner, ending that one prematurely" -msgstr "spanner della volta già presente, si termina quello prematuramente" - -#: volta-engraver.cc:125 -msgid "also already have an ended spanner" -msgstr "è già presente uno spanner terminato" - -#: volta-engraver.cc:126 -msgid "giving up" -msgstr "rinuncia" - -#: page-layout-problem.cc:322 -msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" -msgstr "impossibile far entrare la musica nella pagina: richiesta la spaziatura ridotta, ma la pagina è già stata compressa" - -#: page-layout-problem.cc:325 -#, c-format -msgid "cannot fit music on page: overflow is %f" -msgstr "impossibile far entrare la musica nella pagina: l'eccesso è %f" - -#: page-layout-problem.cc:327 -msgid "compressing music to fit" -msgstr "si comprime la musica per farla entrare" - -#: page-layout-problem.cc:765 -msgid "staff-affinities should only decrease" -msgstr "staff-affinities deve solo diminuire" - #: apply-context-iterator.cc:42 msgid "\\applycontext argument is not a procedure" msgstr "l'argomento di \\applycontext non è una procedura" -#. FIXME: constant error message. -#: mark-engraver.cc:157 -msgid "rehearsalMark must have integer value" -msgstr "rehearsalMark deve avere un valore intero" - -#: mark-engraver.cc:163 -msgid "mark label must be a markup object" -msgstr "l'etichetta del segno deve essere un oggetto di markup" - -#: new-dynamic-engraver.cc:142 -#, c-format -msgid "" -"unknown crescendo style: %s\n" -"defaulting to hairpin." -msgstr "" -"stile di crescendo sconosciuto: %s\n" -"si usa la forcella predefinita." - -#: new-dynamic-engraver.cc:200 -#, c-format -msgid "unterminated %s" -msgstr "%s non terminato" - -#: stem-engraver.cc:103 -msgid "tremolo duration is too long" -msgstr "la durata del tremolo è troppo lunga" - -#. FIXME: -#: stem-engraver.cc:140 -#, c-format -msgid "adding note head to incompatible stem (type = %d)" -msgstr "si aggiunge la testa della nota a un gambo incompatibile (tipo = %d)" - -#: stem-engraver.cc:142 -msgid "maybe input should specify polyphonic voices" -msgstr "forse l'input dovrebbe specificare le voci polifoniche" - -#: lily-lexer.cc:264 -msgid "include files are not allowed in safe mode" -msgstr "l'inclusione di file non è permessa in modalità sicura" - -#: lily-lexer.cc:291 -#, c-format -msgid "identifier name is a keyword: `%s'" -msgstr "Il nome dell'identificatore è una parola chiave: «%s»" - -#: lily-lexer.cc:312 -#, c-format -msgid "error at EOF: %s" -msgstr "errore alla fine del file (EOF): %s" - -#: lyric-combine-music-iterator.cc:337 -#, c-format -msgid "cannot find Voice `%s'" -msgstr "impossibile trovare la voce (Voice) «%s»" - -#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109 +#: includable-lexer.cc:71 lily-parser-scheme.cc:108 lily-guile.cc:91 #, c-format msgid "cannot find file: `%s'" msgstr "impossibile trovare il file: «%s»" @@ -2017,49 +2267,53 @@ msgstr "impossibile trovare il file: «%s»" msgid "(search path: `%s')" msgstr "(percorso di ricerca: «%s»)" -#: note-column.cc:135 -msgid "cannot have note heads and rests together on a stem" -msgstr "impossibile avere teste e pause insieme su un gambo" +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" +msgstr "non ci sono così tante parentesi" + +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" +msgstr "eventi di gruppi di note in conflitto" + +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" +msgstr "NoteEvent senza altezza" -#: beam.cc:180 +#: beam.cc:181 msgid "removing beam with no stems" msgstr "rimozione delle travature senza gambi" -#. We are completely screwed. -#: beam.cc:1274 -msgid "no viable initial configuration found: may not find good beam slope" -msgstr "nessuna configurazione iniziale fattibile trovata: si potrebbe non trovare una buona inclinazione delle travature" +#: staff-performer.cc:257 +msgid "MIDI channel wrapped around" +msgstr "Numerazione canale MIDI ricominciata" + +#: staff-performer.cc:258 +msgid "remapping modulo 16" +msgstr "riassegnata con modulo 16" -#: slur-engraver.cc:93 +#: slur-engraver.cc:102 phrasing-slur-engraver.cc:101 #, c-format msgid "direction of %s invalid: %d" msgstr "direzione di %s non valida: %d" -#: slur-engraver.cc:162 +#: slur-engraver.cc:176 msgid "unterminated slur" msgstr "legatura di portamento non terminata" -#: slur-engraver.cc:174 +#: slur-engraver.cc:211 msgid "cannot end slur" msgstr "impossibile terminare la legatura di portamento" -#: font-config.cc:40 -msgid "Initializing FontConfig..." -msgstr "Inizializzazione di FontConfig..." - -#: font-config.cc:55 font-config-scheme.cc:152 -#, c-format -msgid "failed adding font directory: %s" -msgstr "errore nell'aggiungere la directory dei tipi di carattere: %s" +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: slur-engraver.cc:231 +msgid "already have slur" +msgstr "legatura già presente" -#: font-config.cc:57 font-config-scheme.cc:154 +#: dots.cc:48 #, c-format -msgid "adding font directory: %s" -msgstr "aggiungere la directory dei tipi di carattere: %s" - -#: font-config.cc:61 -msgid "Building font database..." -msgstr "Creazione del database dei tipi di carattere..." +msgid "dot `%s' not found" +msgstr "punto «%s» non trovato" #. find out the ideal number of pages #: optimal-page-breaking.cc:62 @@ -2084,12 +2338,12 @@ msgstr "Compressione della musica in %d pagine..." msgid "Fitting music on %d or %d pages..." msgstr "Compressione della musica in %d o %d pagine..." -#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:172 #, c-format msgid "trying %d systems" msgstr "tentando %d sistemi" -#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:200 #, c-format msgid "best score for this sys-count: %f" msgstr "miglior punteggio per questo numero di sistemi: %f" @@ -2103,63 +2357,74 @@ msgstr "Non si è trovato il nome del glifo per l'alterazione %s" msgid "natural alteration glyph not found" msgstr "alterazione naturale del glifo non trovata" -#: system.cc:197 -#, c-format -msgid "Element count %d" -msgstr "Numero degli elementi %d" +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" +msgstr "sono necessari argomenti simbolici per \\override e \\revert" -#: system.cc:303 +#: font-config-scheme.cc:151 font-config.cc:53 #, c-format -msgid "Grob count %d" -msgstr "Numero degli oggetti grafici %d" +msgid "failed adding font directory: %s" +msgstr "errore nell'aggiungere la directory dei tipi di carattere: %s" -#: slur.cc:362 +#: font-config-scheme.cc:153 font-config.cc:55 #, c-format -msgid "Ignoring grob for slur: %s. avoid-slur not set?" -msgstr "Si ignora il grob per la legatura di portamento: %s. Non si è impostato avoid-slur?" +msgid "Adding font directory: %s" +msgstr "Si aggiunge la directory dei tipi di carattere: %s" -#: font-config-scheme.cc:168 +#: font-config-scheme.cc:167 #, c-format msgid "failed adding font file: %s" msgstr "errore nell'aggiungere il file dei tipi di carattere: %s" -#: font-config-scheme.cc:170 +#: font-config-scheme.cc:169 #, c-format -msgid "adding font file: %s" -msgstr "aggiungere il file dei tipi di carattere: %s" +msgid "Adding font file: %s" +msgstr "Si aggiunge il file dei tipi di carattere: %s" + +#: hairpin.cc:61 +msgid "Asking for broken bound padding at a non-broken bound." +msgstr "Si chiede la spaziatura per un'estremità spezzata in un'estremità non spezzata." -#: hairpin.cc:186 +#: hairpin.cc:254 msgid "decrescendo too small" msgstr "decrescendo troppo piccolo" -#: extender-engraver.cc:170 extender-engraver.cc:179 -msgid "unterminated extender" -msgstr "estensore non terminato" +#: open-type-font.cc:44 +#, c-format +msgid "cannot allocate %lu bytes" +msgstr "impossibile allocare %lu byte" -#: lily-guile.cc:89 +#: open-type-font.cc:48 #, c-format -msgid "(load path: `%s')" -msgstr "(percorso di caricamento: «%s»)" +msgid "cannot load font table: %s" +msgstr "impossibile caricare la tabella dei tipi di carattere: %s" -#: lily-guile.cc:437 +#: open-type-font.cc:53 #, c-format -msgid "cannot find property type-check for `%s' (%s)." -msgstr "impossibile trovare la proprietà type-check per «%s» (%s)." +msgid "FreeType error: %s" +msgstr "Errore FreeType: %s" -#: lily-guile.cc:440 -msgid "perhaps a typing error?" -msgstr "forse un errore di digitazione?" +#: open-type-font.cc:110 +#, c-format +msgid "unsupported font format: %s" +msgstr "formato di tipo di carattere non supportato: %s" -#: lily-guile.cc:447 -msgid "doing assignment anyway" -msgstr "compito comunque in corso" +#: open-type-font.cc:112 +#, c-format +msgid "error reading font file %s: %s" +msgstr "errore nella lettura del file del tipo di carattere %s: %s" -#: lily-guile.cc:459 +#: open-type-font.cc:187 #, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" -msgstr "controllo del tipo per «%s» fallito; il valore «%s» deve essere del tipo «%s»" +msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgstr "errore di Freetype in FT_Get_Glyph_Name (): %s" + +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" +msgstr "errore in FT_Get_Glyph_Name (): %s" -#: main.cc:109 +#: main.cc:101 #, c-format msgid "" "This program is free software. It is covered by the GNU General Public\n" @@ -2171,11 +2436,12 @@ msgstr "" "License che permette di modificarlo o distribuirne copie rispettando certe\n" "condizioni. Per maggiori informazioni, invocare «%s --warranty».\n" -#: main.cc:115 +#: main.cc:107 msgid "" " This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" "\n" " This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -2188,8 +2454,9 @@ msgid "" "Boston, MA 02111-1307, USA.\n" msgstr "" " Questo programma è software libero; puoi ridistribuirlo e/o\n" -"modificarlo sotto le condizioni della GNU General Public License, versione 2,\n" -"come pubblicata dalla Free Software Foundation.\n" +"modificarlo sotto le condizioni della GNU General Public License,\n" +"come pubblicata dalla Free Software Foundation, nella versione 3 della\n" +"licenza o in qualsiasi versione successiva.\n" "\n" " Questo programma è distribuito nella speranza che possa essere utile,\n" "ma SENZA ALCUNA GARANZIA; è privo anche di garanzia implicita di\n" @@ -2201,11 +2468,11 @@ msgstr "" "Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, USA.\n" -#: main.cc:146 +#: main.cc:141 msgid "SYM[=VAL]" msgstr "SIMBOLO[=VALORE]" -#: main.cc:147 +#: main.cc:142 msgid "" "set Scheme option SYM to VAL (default: #t).\n" "Use -dhelp for help." @@ -2213,41 +2480,41 @@ msgstr "" "imposta l'opzione di Scheme SIMBOLO a VALORE (predefinito: #t).\n" "Usare -dhelp per ottenere aiuto." -#: main.cc:150 +#: main.cc:146 msgid "EXPR" msgstr "ESPRESSIONE" -#: main.cc:150 +#: main.cc:146 msgid "evaluate scheme code" msgstr "valuta il codice scheme" #. Bug in option parser: --output =foe is taken as an abbreviation #. for --output-format. -#: main.cc:153 +#: main.cc:149 msgid "FORMATs" msgstr "FORMATO" -#: main.cc:153 +#: main.cc:149 msgid "dump FORMAT,... Also as separate options:" msgstr "scarica FORMATO,... Anche come opzioni separate:" -#: main.cc:154 +#: main.cc:150 msgid "generate PDF (default)" msgstr "genera PDF (predefinito)" -#: main.cc:155 +#: main.cc:151 msgid "generate PNG" msgstr "genera PNG" -#: main.cc:156 +#: main.cc:152 msgid "generate PostScript" msgstr "genera PostScript" -#: main.cc:158 +#: main.cc:155 msgid "FIELD" msgstr "CAMPO" -#: main.cc:158 +#: main.cc:155 msgid "" "dump header field FIELD to file\n" "named BASENAME.FIELD" @@ -2255,19 +2522,19 @@ msgstr "" "scrive il campo di intestazione CAMPO sul\n" "file chiamato BASENAME.CAMPO" -#: main.cc:160 +#: main.cc:158 msgid "add DIR to search path" msgstr "aggiunge DIRECTORY ai percorsi di ricerca" -#: main.cc:161 +#: main.cc:159 msgid "use FILE as init file" msgstr "usa FILE come file di inizializzazione" -#: main.cc:163 +#: main.cc:162 msgid "USER, GROUP, JAIL, DIR" msgstr "UTENTE, GRUPPO, GABBIA, DIRECTORY" -#: main.cc:163 +#: main.cc:162 msgid "" "chroot to JAIL, become USER:GROUP\n" "and cd into DIR" @@ -2275,16 +2542,32 @@ msgstr "" "chroot a GABBIA, diventa UTENTE:GRUPPO\n" "ed entra in DIRECTORY" -#: main.cc:166 +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" +"mostra i messaggi di log in base a LOGLEVEL. I valori possibili sono:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) e DEBUG." + +#: main.cc:171 msgid "write output to FILE (suffix will be added)" msgstr "scrive l'output su FILE (verrà aggiunto un suffisso)" -#: main.cc:167 +#: main.cc:172 msgid "relocate using directory of lilypond program" msgstr "trasferisce alla directory del programma lilypond" +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "nessun progresso, solo messaggi di errore (equivalente al loglevel=ERROR)" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "output dettagliato (equivalente al loglevel=DEBUG)" + #. Do not update the copyright years here, run `make grand-replace' -#: main.cc:238 +#: main.cc:242 #, c-format msgid "" "Copyright (c) %s by\n" @@ -2294,122 +2577,176 @@ msgstr "" "%s e altri." #. No version number or newline here. It confuses help2man. -#: main.cc:265 +#: main.cc:269 #, c-format msgid "Usage: %s [OPTION]... FILE..." msgstr "Uso: %s [OPZIONE]... [FILE]..." -#: main.cc:267 +#: main.cc:271 msgid "Typeset music and/or produce MIDI from FILE." msgstr "Stampa partitura oppure crea MIDI da FILE." -#: main.cc:269 +#: main.cc:273 msgid "LilyPond produces beautiful music notation." msgstr "LilyPond produce bella notazione musicale." -#: main.cc:271 +#: main.cc:275 #, c-format msgid "For more information, see %s" msgstr "Per maggiori informazioni si veda %s" -#: main.cc:273 +#: main.cc:277 msgid "Options:" msgstr "Opzioni:" -#: main.cc:327 +#: main.cc:331 #, c-format msgid "expected %d arguments with jail, found: %u" msgstr "previsti gli argomenti %d per la gabbia, trovati: %u" -#: main.cc:341 +#: main.cc:345 #, c-format msgid "no such user: %s" msgstr "non esiste questo utente: %s" -#: main.cc:343 +#: main.cc:347 #, c-format msgid "cannot get user id from user name: %s: %s" msgstr "impossibile acquisire l'id dell'utente dal nome utente: %s: %s" -#: main.cc:358 +#: main.cc:362 #, c-format msgid "no such group: %s" msgstr "non esiste questo gruppo: %s" -#: main.cc:360 +#: main.cc:364 #, c-format msgid "cannot get group id from group name: %s: %s" msgstr "impossibile acquisire l'id del gruppo dal nome del gruppo: %s:%s" -#: main.cc:368 +#: main.cc:372 #, c-format msgid "cannot chroot to: %s: %s" msgstr "non si può fare il chroot a: %s: %s" -#: main.cc:375 +#: main.cc:379 #, c-format msgid "cannot change group id to: %d: %s" msgstr "non si può cambiare l'id del gruppo in: %d: %s" -#: main.cc:381 +#: main.cc:385 +#, c-format +msgid "cannot change user id to: %d: %s" +msgstr "non si può cambiare l'id dell'utente in: %d: %s" + +#: main.cc:391 +#, c-format +msgid "cannot change working directory to: %s: %s" +msgstr "non si può passare alla directory di lavoro: %s: %s" + +#: main.cc:639 +#, c-format +msgid "exception caught: %s" +msgstr "ricevuta un'eccezione: %s" + +#: page-turn-page-breaking.cc:168 +#, c-format +msgid "page-turn-page-breaking: breaking from %d to %d" +msgstr "page-turn-page-breaking: interruzione da %d a %d" + +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +msgstr "impossibile far entrare il primo cambio di pagina in una pagina singola. Si consideri la possibilità di impostare first-page-number su un numero pari." + +#: page-turn-page-breaking.cc:230 +#, c-format +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "Calcolo delle interruzioni di pagina e di linea (%d possibili interruzioni di pagina)..." + +#: page-turn-page-breaking.cc:300 +#, c-format +msgid "break starting at page %d" +msgstr "l'interruzione comincia alla pagina %d" + +#: page-turn-page-breaking.cc:301 +#, c-format +msgid "\tdemerits: %f" +msgstr "\tdemeriti: %f" + +#: page-turn-page-breaking.cc:302 +#, c-format +msgid "\tsystem count: %d" +msgstr "\tnumero dei sistemi: %d" + +#: page-turn-page-breaking.cc:303 #, c-format -msgid "cannot change user id to: %d: %s" -msgstr "non si può cambiare l'id dell'utente in: %d: %s" +msgid "\tpage count: %d" +msgstr "\tnumero delle pagine: %d" -#: main.cc:387 +#: page-turn-page-breaking.cc:304 #, c-format -msgid "cannot change working directory to: %s: %s" -msgstr "non si può passare alla directory di lavoro: %s: %s" +msgid "\tprevious break: %d" +msgstr "\tinterruzione precedente: %d" -#: main.cc:628 +#: midi-item.cc:89 #, c-format -msgid "exception caught: %s" -msgstr "ricevuta un'eccezione: %s" +msgid "no such MIDI instrument: `%s'" +msgstr "non esiste questo strumento MIDI: «%s»" -#: key-signature-interface.cc:78 -#, c-format -msgid "No glyph found for alteration: %s" -msgstr "Nessun glifo trovato per l'alterazione: %s" +#: midi-item.cc:161 +msgid "Time signature with more than 255 beats. Truncating" +msgstr "Segno di tempo con più di 255 tempi. Si accorcia" -#: key-signature-interface.cc:88 -msgid "alteration not found" -msgstr "alterazione non trovata" +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" +msgstr "la durata del tremolo è troppo lunga" -#: dots.cc:48 +#: stem-engraver.cc:162 #, c-format -msgid "dot `%s' not found" -msgstr "punto «%s» non trovato" +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "si aggiunge la testa della nota a un gambo incompatibile (tipo = %d/%d)" -#: translator.cc:359 +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" +msgstr "forse l'input dovrebbe specificare le voci polifoniche" + +#: translator.cc:326 #, c-format msgid "Two simultaneous %s events, junking this one" msgstr "Due eventi %s simultanei, si butta via questo" -#: translator.cc:360 +#: translator.cc:327 #, c-format msgid "Previous %s event here" msgstr "L'evento %s precedente sta qui" -#: glissando-engraver.cc:105 +#: glissando-engraver.cc:158 msgid "unterminated glissando" msgstr "glissando non terminato" -#: text-spanner-engraver.cc:73 -msgid "cannot find start of text spanner" -msgstr "impossibile trovare l'inizio di uno spanner testuale" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" +msgstr "in ly:skyline-pair::skyline la direzione non deve essere CENTER" -#: text-spanner-engraver.cc:86 -msgid "already have a text spanner" -msgstr "spanner testuale già presente" +#: beam-engraver.cc:147 +msgid "already have a beam" +msgstr "travatura già presente" -#: text-spanner-engraver.cc:132 -msgid "unterminated text spanner" -msgstr "spanner testuale non terminato" +#: beam-engraver.cc:230 +msgid "unterminated beam" +msgstr "travatura non terminata" -#: clef.cc:65 -#, c-format -msgid "clef `%s' not found" -msgstr "chiave «%s» non trovata" +#: beam-engraver.cc:277 +msgid "stem does not fit in beam" +msgstr "il gambo non rientra nella travatura" + +#: beam-engraver.cc:278 +msgid "beam was started here" +msgstr "la travatura è iniziata qui" + +#: key-engraver.cc:199 +msgid "Incomplete keyAlterationOrder for key signature" +msgstr "keyAlterationOrder incompleto per l'armatura di chiave" #. #. Todo: should make typecheck? @@ -2421,40 +2758,67 @@ msgstr "chiave «%s» non trovata" msgid "strange time signature found: %d/%d" msgstr "si è incontrato uno strano segno di tempo: %d/%d" -#: lily-parser-scheme.cc:82 +#: lily-parser-scheme.cc:80 #, c-format msgid "Changing working directory to: `%s'" msgstr "Si cambia la directory di lavoro a: «%s»" +#: lily-parser-scheme.cc:84 +#, c-format +msgid "unable to change directory to: `%s'" +msgstr "impossibile cambiare la directory a: «%s»" + #: lily-parser-scheme.cc:99 #, c-format msgid "cannot find init file: `%s'" msgstr "impossibile trovare il file di init: «%s»" -#: lily-parser-scheme.cc:118 +#: lily-parser-scheme.cc:117 #, c-format msgid "Processing `%s'" msgstr "Elaborazione di «%s»" -#: lily-parser-scheme.cc:204 +#: lily-parser-scheme.cc:208 msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." msgstr "ly:parser-parse-string è valido solo con un nuovo parser. Usare ly:parser-include-string al suo posto." -#: custos.cc:88 +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "ly:parse-string-expression è valido solo con un nuovo parser. Usare ly:parser-include-string al suo posto." + +#. We are completely screwed. +#: beam-quanting.cc:839 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "nessuna configurazione iniziale fattibile trovata: si potrebbe non trovare una buona inclinazione delle travature" + +#: lily-guile.cc:93 #, c-format -msgid "custos `%s' not found" -msgstr "custos «%s» non trovato" +msgid "(load path: `%s')" +msgstr "(percorso di caricamento: «%s»)" -#: program-option-scheme.cc:237 +#: lily-guile.cc:416 #, c-format -msgid "no such internal option: %s" -msgstr "opzione interna sconosciuta: %s" +msgid "cannot find property type-check for `%s' (%s)." +msgstr "impossibile trovare la proprietà type-check per «%s» (%s)." + +#: lily-guile.cc:419 +msgid "perhaps a typing error?" +msgstr "forse un errore di digitazione?" + +#: lily-guile.cc:426 +msgid "doing assignment anyway" +msgstr "compito comunque in corso" + +#: lily-guile.cc:438 +#, c-format +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "controllo del tipo per «%s» fallito; il valore «%s» deve essere del tipo «%s»" #: rest-collision.cc:146 msgid "cannot resolve rest collision: rest direction not set" msgstr "impossibile risolvere la collisione di pause: direzione delle pause non impostata" -#: rest-collision.cc:160 rest-collision.cc:205 +#: rest-collision.cc:158 rest-collision.cc:267 msgid "too many colliding rests" msgstr "troppe collisioni tra pause" @@ -2470,128 +2834,70 @@ msgstr "impossibile trovare l'inizio dell'episema" msgid "unterminated episema" msgstr "episema non terminato" -#: grob-property.cc:34 -#, c-format -msgid "%d: %s" -msgstr "%d: %s" - -#: grob-property.cc:173 -#, c-format -msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" -msgstr "dipendenza ciclica: calculation-in-progress incontrato per #'%s (%s)" - -#: relocate.cc:54 -#, c-format -msgid "Setting %s to %s" -msgstr "Si imposta %s su %s" - -#: relocate.cc:74 -#, c-format -msgid "no such file: %s for %s" -msgstr "file inesistente: %s per %s" - -#: relocate.cc:84 relocate.cc:102 -#, c-format -msgid "no such directory: %s for %s" -msgstr "directory inesistente: %s per %s" - -#: relocate.cc:94 -#, c-format -msgid "%s=%s (prepend)\n" -msgstr "%s=%s (prefisso)\n" - -#: relocate.cc:124 -#, c-format -msgid "not relocating, no %s/ or current/ found under %s" -msgstr "non si riloca, non si è incontrato %s/ o current/ in %s" - -#: relocate.cc:135 -#, c-format -msgid "Relocation: compile datadir=%s, new datadir=%s" -msgstr "Rilocazione: compilare datadir=%s, nuova datadir=%s" - -#: relocate.cc:148 -#, c-format -msgid "Relocation: framework_prefix=%s" -msgstr "Rilocazione: framework_prefix=%s" - -#: relocate.cc:189 -#, c-format -msgid "Relocation: is absolute: argv0=%s" -msgstr "Rilocazione: è assoluta: argv0=%s" - -#: relocate.cc:196 +#: rest.cc:192 #, c-format -msgid "Relocation: from cwd: argv0=%s" -msgstr "Rilocazione: da cwd: argv0=%s" +msgid "rest `%s' not found" +msgstr "pausa «%s» non trovata" -#: relocate.cc:213 +#: pango-font.cc:205 #, c-format msgid "" -"Relocation: from PATH=%s\n" -"argv0=%s" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" msgstr "" -"Rilocazione: da PATH=%s\n" -"argv0=%s" - -#: relocate.cc:240 -msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" -msgstr "LILYPONDPREFIX è obsoleto, usare LILYPOND_DATADIR" - -#: relocate.cc:367 -#, c-format -msgid "Relocation file: %s" -msgstr "File di rilocazione: %s" - -#: relocate.cc:373 source-file.cc:65 -#, c-format -msgid "cannot open file: `%s'" -msgstr "impossibile aprire il file: «%s»" +"Il glifo non ha un nome, ma il tipo di carattere permette di dare un nome al glifo.\n" +"Si salta il glifo U+%0X, file %s" -#: relocate.cc:403 +#: pango-font.cc:242 #, c-format -msgid "Unknown relocation command %s" -msgstr "Comando di rilocazione sconosciuto %s" +msgid "no PostScript font name for font `%s'" +msgstr "nessun nome di tipo di carattere PostScript per «%s»" -#: translator-group.cc:188 -#, c-format -msgid "cannot find: `%s'" -msgstr "impossibile trovare: «%s»" +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "Il tipo FreeType non ha un nome per il tipo di carattere PostScript" -#: phrasing-slur-engraver.cc:157 +#: phrasing-slur-engraver.cc:175 msgid "unterminated phrasing slur" msgstr "legatura di frase non terminata" -#: lyric-engraver.cc:176 -msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." -msgstr "Le sillabe del testo non hanno note. Usare \\lyricsto o associatedVoice." +#: phrasing-slur-engraver.cc:210 +msgid "cannot end phrasing slur" +msgstr "impossibile chiudere la legatura di frase" + +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: phrasing-slur-engraver.cc:230 +msgid "already have phrasing slur" +msgstr "legatura di frase già presente" -#: page-breaking.cc:248 +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +msgstr "Le sillabe del testo non hanno note. Usare \\lyricsto o associatedVoice." + +#: page-breaking.cc:277 msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" msgstr "si ignorano min-systems-per-page e max-systems-per-page perché è stato impostato systems-per-page" -#: page-breaking.cc:253 +#: page-breaking.cc:282 msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" msgstr "min-systems-per-page è maggiore di max-systems-per-page, si ignorano entrambi i valori" +#: paper-outputter-scheme.cc:41 +#, c-format +msgid "Layout output to `%s'..." +msgstr "Output della formattazione inviato a «%s»..." + #: performance.cc:54 msgid "Track..." msgstr "Traccia..." -#: performance.cc:83 -msgid "MIDI channel wrapped around" -msgstr "Numerazione canale MIDI ricominciata" - -#: performance.cc:84 -msgid "remapping modulo 16" -msgstr "riassegnata con modulo 16" - -#: performance.cc:111 +#: performance.cc:82 #, c-format msgid "MIDI output to `%s'..." msgstr "L'output MIDI è inviato a «%s»..." -#: tuplet-engraver.cc:107 +#: tuplet-engraver.cc:110 msgid "No tuplet to end" msgstr "Nessun gruppo irregolare da terminare" @@ -2615,13 +2921,19 @@ msgstr "impossibile applicare «\\~» sulla prima testa della legatura" msgid "cannot apply `\\~' on heads with identical pitch" msgstr "impossibile applicare «\\~» su teste di identica altezza" -#: chord-tremolo-engraver.cc:88 -msgid "No tremolo to end" -msgstr "Nessun tremolo alla fine" +#: key-signature-interface.cc:77 +#, c-format +msgid "No glyph found for alteration: %s" +msgstr "Nessun glifo trovato per l'alterazione: %s" -#: chord-tremolo-engraver.cc:109 -msgid "unterminated chord tremolo" -msgstr "tremolo dell'accordo non terminato" +#: key-signature-interface.cc:87 +msgid "alteration not found" +msgstr "alterazione non trovata" + +#: source-file.cc:85 +#, c-format +msgid "expected to read %d characters, got %d" +msgstr "si prevedeva di leggere %d caratteri, se ne sono ottenuti %d" #: axis-group-engraver.cc:94 msgid "Axis_group_engraver: vertical group already has a parent" @@ -2644,159 +2956,98 @@ msgstr "stile cluster sconosciuto «%s»" msgid "junking empty cluster" msgstr "eliminazione di cluster vuoti" -#: context-property.cc:42 -msgid "need symbol arguments for \\override and \\revert" -msgstr "sono necessari argomenti simbolici per \\override e \\revert" - -#: source-file.cc:85 -#, c-format -msgid "expected to read %d characters, got %d" -msgstr "si prevedeva di leggere %d caratteri, se ne sono ottenuti %d" - -#: axis-group-interface.cc:631 -msgid "an outside-staff object should have a direction, defaulting to up" -msgstr "un oggetto esterno al rigo dovrebbe avere una direzione, si imposta in su come da impostazione predefinita" - -#: coherent-ligature-engraver.cc:111 -#, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" -msgstr "Coherent_ligature_engraver: impostare `spacing-increment=0.01': ptr=%ul" - -#: percent-repeat-engraver.cc:148 -msgid "unterminated percent repeat" -msgstr "ripetizione percentuale non terminata" - -#: note-head.cc:76 -#, c-format -msgid "none of note heads `%s' or `%s' found" -msgstr "non si è trovata alcuna delle teste delle note «%s» o «%s»" - -#: relative-octave-check.cc:49 -msgid "Failed octave check, got: " -msgstr "Il controllo dell'ottava è fallito, si è ottenuto:" - -#. FIXME: -#: script-engraver.cc:113 -msgid "do not know how to interpret articulation:" -msgstr "non so come interpretare l'articolazione:" - -#: script-engraver.cc:114 -msgid " scheme encoding: " -msgstr " codifica di Scheme: " - -#: all-font-metrics.cc:156 -#, c-format -msgid "cannot find font: `%s'" -msgstr "impossibile trovare il tipo di carattere: «%s»" - -#: property-iterator.cc:85 -#, c-format -msgid "not a grob name, `%s'" -msgstr "non è il nome di un grob, «%s»" - -#: bar-check-iterator.cc:84 -#, c-format -msgid "barcheck failed at: %s" -msgstr "controllo di battuta fallito a: %s" - -#: stem.cc:116 -msgid "weird stem size, check for narrow beams" -msgstr "strana dimensione del gambo, controllare di non avere travature strette" - -#: stem.cc:657 -#, c-format -msgid "flag `%s' not found" -msgstr "non si trova la coda uncinata «%s»" - -#: stem.cc:673 -#, c-format -msgid "flag stroke `%s' not found" -msgstr "non si trova il tratto «%s» della coda uncinata" - #: global-context-scheme.cc:96 global-context-scheme.cc:114 msgid "no music found in score" msgstr "nessuna musica trovata nello spartito" #: global-context-scheme.cc:104 -msgid "Interpreting music... " +msgid "Interpreting music..." msgstr "Interpretazione della musica..." -#: global-context-scheme.cc:127 +#: global-context-scheme.cc:126 #, c-format msgid "elapsed time: %.2f seconds" msgstr "tempo trascorso: %.2f secondi" -#: translator-group-ctors.cc:40 -#, c-format -msgid "fatal error. Couldn't find type: %s" -msgstr "errore fatale. Impossibile trovare il tipo: %s" - -#: mensural-ligature.cc:171 -msgid "Mensural_ligature: unexpected case fall-through" -msgstr "Mensural_ligature: caso inatteso e non interpretabile" - -#: mensural-ligature.cc:233 -msgid "Mensural_ligature: (join_right == 0)" -msgstr "Mensural_ligature: (join_right == 0)" - -#: page-turn-page-breaking.cc:168 -#, c-format -msgid "page-turn-page-breaking: breaking from %d to %d" -msgstr "page-turn-page-breaking: interruzione da %d a %d" +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" +msgstr "i margini non corrispondono con la larghezza del rigo, si impostano i valori predefiniti" -#: page-turn-page-breaking.cc:217 -msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." -msgstr "impossibile far entrare il primo cambio di pagina in una pagina singola. Si consideri la possibilità di impostare first-page-number su un numero pari." +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" +msgstr "i sistemi escono fuori dalla pagina a causa di errate impostazioni del foglio, si impostano i valori predefiniti" -#: page-turn-page-breaking.cc:230 -#, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." -msgstr "Calcolo delle interruzioni di pagina e di linea (%d possibili interruzioni di pagina)..." +#: axis-group-interface.cc:668 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "un oggetto esterno al rigo dovrebbe avere una direzione, si imposta in su come da impostazione predefinita" -#: page-turn-page-breaking.cc:300 +#: coherent-ligature-engraver.cc:110 #, c-format -msgid "break starting at page %d" -msgstr "l'interruzione comincia alla pagina %d" +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "Coherent_ligature_engraver: impostare `spacing-increment=0.01': ptr=%ul" -#: page-turn-page-breaking.cc:301 +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "ripetizione percentuale non terminata" + +#: note-head.cc:95 #, c-format -msgid "\tdemerits: %f" -msgstr "\tdemeriti: %f" +msgid "none of note heads `%s' or `%s' found" +msgstr "non si è trovata alcuna delle teste delle note «%s» o «%s»" -#: page-turn-page-breaking.cc:302 +#: font-config.cc:38 +msgid "Initializing FontConfig..." +msgstr "Inizializzazione di FontConfig..." + +#: font-config.cc:58 +msgid "Building font database..." +msgstr "Creazione del database dei tipi di carattere..." + +#. FIXME: +#: script-engraver.cc:113 +msgid "do not know how to interpret articulation:" +msgstr "non so come interpretare l'articolazione:" + +#: script-engraver.cc:114 +msgid " scheme encoding: " +msgstr " codifica di Scheme: " + +#: all-font-metrics.cc:149 #, c-format -msgid "\tsystem count: %d" -msgstr "\tnumero dei sistemi: %d" +msgid "cannot find font: `%s'" +msgstr "impossibile trovare il tipo di carattere: «%s»" -#: page-turn-page-breaking.cc:303 +#: clef.cc:65 #, c-format -msgid "\tpage count: %d" -msgstr "\tnumero delle pagine: %d" +msgid "clef `%s' not found" +msgstr "chiave «%s» non trovata" -#: page-turn-page-breaking.cc:304 +#: property-iterator.cc:93 #, c-format -msgid "\tprevious break: %d" -msgstr "\tinterruzione precedente: %d" +msgid "not a grob name, `%s'" +msgstr "non è il nome di un grob, «%s»" -#: lily-parser.cc:106 -msgid "Parsing..." -msgstr "Analisi..." +#: pdf-scheme.cc:50 +#, c-format +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "Fallita la conversione della stringa \"%s\" in UTF-16be: %s" -#: lily-parser.cc:134 -msgid "braces do not match" -msgstr "le graffe non corrispondono" +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "impossibile aggiungere delle scritte testuali alle teste delle note individuali" -#: score.cc:178 -msgid "already have music in score" -msgstr "musica già presente nello spartito" +#: new-fingering-engraver.cc:269 +msgid "no placement found for fingerings" +msgstr "nessuna posizione trovata per le diteggiature" -#: score.cc:179 -msgid "this is the previous music" -msgstr "questa è la musica precedente" +#: new-fingering-engraver.cc:270 +msgid "placing below" +msgstr "si colloca in basso" -#: score.cc:184 -msgid "errors found, ignoring music expression" -msgstr "trovati degli errori, si ignora l'espressione musicale" +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" +msgstr "controllo di battuta fallito a: %s" #: change-iterator.cc:34 #, c-format @@ -2823,9 +3074,48 @@ msgstr "non passare allo stesso tipo di contesto: %s" msgid "none of these in my family" msgstr "nessuno di questi nella mia famiglia" +#: translator-group-ctors.cc:40 +#, c-format +msgid "fatal error. Couldn't find type: %s" +msgstr "errore fatale. Impossibile trovare il tipo: %s" + +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" +msgstr "impossibile trovare l'inizio di uno spanner testuale" + +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" +msgstr "spanner testuale già presente" + +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" +msgstr "spanner testuale non terminato" + +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "Analisi..." + +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" +msgstr "impossibile trovare interruzioni di linea che soddisfino i vincoli" + +#. FIXME: constant error message. +#: mark-engraver.cc:157 +msgid "rehearsalMark must have integer value" +msgstr "rehearsalMark deve avere un valore intero" + +#: mark-engraver.cc:163 +msgid "mark label must be a markup object" +msgstr "l'etichetta del segno deve essere un oggetto di markup" + +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "la testa ritmica non fa parte di una colonna ritmica" + #. If there is no such symbol, we default to the numbered style. #. (Here really with a warning!) -#: time-signature.cc:94 +#: time-signature.cc:122 #, c-format msgid "time signature symbol `%s' not found; reverting to numbered style" msgstr "non si è trovato il simbolo di tempo «%s»: si ritorna allo stile numerato" @@ -2840,36 +3130,6 @@ msgstr "Interfaccia «%s» sconosciuta" msgid "Grob `%s' has no interface for property `%s'" msgstr "Il grob «%s» non ha un'interfaccia per la proprietà «%s»" -#: open-type-font.cc:44 -#, c-format -msgid "cannot allocate %lu bytes" -msgstr "impossibile allocare %lu byte" - -#: open-type-font.cc:48 -#, c-format -msgid "cannot load font table: %s" -msgstr "impossibile caricare la tabella dei tipi di carattere: %s" - -#: open-type-font.cc:53 -#, c-format -msgid "FreeType error: %s" -msgstr "Errore FreeType: %s" - -#: open-type-font.cc:111 -#, c-format -msgid "unsupported font format: %s" -msgstr "formato di tipo di carattere non supportato: %s" - -#: open-type-font.cc:113 -#, c-format -msgid "error reading font file %s: %s" -msgstr "errore nella lettura del file del tipo di carattere %s: %s" - -#: open-type-font.cc:188 -#, c-format -msgid "FT_Get_Glyph_Name () Freetype error: %s" -msgstr "errore di Freetype in FT_Get_Glyph_Name (): %s" - #: midi-stream.cc:39 #, c-format msgid "cannot open for write: %s: %s" @@ -2880,166 +3140,182 @@ msgstr "impossibile aprire il file con permesso di scrittura: %s: %s" msgid "cannot write to file: `%s'" msgstr "impossibile scrivere su file: «%s»" -#: parser.yy:820 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 +#, c-format +msgid "Cyclic markup detected: %s" +msgstr "Individuato un markup ciclico: %s" + +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 +#, c-format +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "La profondità di markup eccede il valore massimo di %d; Markup: %s" + +#: parser.yy:162 parser.yy:176 +msgid "Too much lookahead" +msgstr "Troppa ricerca in avanti (lookahead)" + +#: parser.yy:833 parser.yy:1234 +msgid "not a context mod" +msgstr "non è una modalità di contesto" + +#: parser.yy:1018 msgid "\\paper cannot be used in \\score, use \\layout instead" msgstr "non si può usare \\paper dentro \\score, usare \\layout al suo posto" -#: parser.yy:844 +#: parser.yy:1042 msgid "need \\paper for paper block" msgstr "è necessario \\paper per il blocco \"paper\"" -#: parser.yy:1363 -msgid "only \\consists takes non-string argument." -msgstr "solo \\consists prende un argomento diverso da una stringa" +#: parser.yy:1999 +msgid "only \\consists and \\remove take non-string argument." +msgstr "solo \\consists e \\remove prendono un argomento diverso da una stringa" -#: parser.yy:1376 +#: parser.yy:2012 msgid "Grob name should be alphanumeric" msgstr "Il nome del grob deve essere alfanumerico" -#: parser.yy:1685 -msgid "second argument must be pitch list" -msgstr "il secondo argomento deve essere una lista di altezze" +#: parser.yy:2216 +msgid "not a rhythmic event" +msgstr "non è un evento ritmico" -#: parser.yy:1716 parser.yy:1721 parser.yy:2194 +#: parser.yy:2312 parser.yy:2317 msgid "have to be in Lyric mode for lyrics" msgstr "bisogna essere in modo \"Lyric\" per i testi" -#: parser.yy:1818 +#: parser.yy:2432 msgid "expecting string as script definition" msgstr "ci si aspetta una stringa come definizione dello script" -#: parser.yy:1973 parser.yy:2024 +#: parser.yy:2592 parser.yy:2643 #, c-format msgid "not a duration: %d" msgstr "non è una durata: %d" -#: parser.yy:2148 +#: parser.yy:2762 msgid "have to be in Note mode for notes" msgstr "bisogna essere in modo \"Note\" per le note" -#: parser.yy:2209 +#: parser.yy:2817 msgid "have to be in Chord mode for chords" msgstr "bisogna essere in modo \"Chord\" per gli accordi" -#: lexer.ll:190 +#: parser.yy:3077 +msgid "not a markup" +msgstr "non è un markup" + +#: lexer.ll:224 msgid "stray UTF-8 BOM encountered" msgstr "si è incontrato un segno BOM UTF-8 isolato" -#: lexer.ll:194 +#: lexer.ll:227 msgid "Skipping UTF-8 BOM" msgstr "Si ignora il BOM UTF-8" -#: lexer.ll:249 +#: lexer.ll:285 #, c-format msgid "Renaming input to: `%s'" msgstr "Si rinomina l'input in: «%s»" -#: lexer.ll:266 +#: lexer.ll:302 msgid "quoted string expected after \\version" msgstr "\\version deve essere seguito da una stringa compresa tra virgolette" -#: lexer.ll:270 +#: lexer.ll:306 msgid "quoted string expected after \\sourcefilename" msgstr "\\sourcefilename deve essere seguito da una stringa compresa tra virgolette" -#: lexer.ll:274 +#: lexer.ll:310 msgid "integer expected after \\sourcefileline" msgstr "\\sourcefileline deve essere seguito da un intero" -#: lexer.ll:287 -msgid "EOF found inside a comment" -msgstr "fine del file (EOF) trovata in un commento" - -#: lexer.ll:302 +#: lexer.ll:333 msgid "\\maininput not allowed outside init files" msgstr "\\maininput non permesso fuori dai file di inizializzazione" -#: lexer.ll:326 +#: lexer.ll:357 #, c-format msgid "wrong or undefined identifier: `%s'" msgstr "indentificatore errato o non definito: «%s»" +#: lexer.ll:383 +msgid "string expected after \\include" +msgstr "stringa prevista dopo \\include" + #. backup rule -#: lexer.ll:335 +#: lexer.ll:393 msgid "end quote missing" msgstr "mancano le virgolette di chiusura" -#: lexer.ll:485 +#: lexer.ll:555 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "Trovata una parentesi alla fine del testo. È stato dimenticato uno spazio?" -#: lexer.ll:595 +#: lexer.ll:670 msgid "Brace found at end of markup. Did you forget a space?" msgstr "Trovata una parentesi alla fine della marcatura. È stato dimenticato uno spazio?" -#: lexer.ll:699 +#: lexer.ll:682 +msgid "EOF found inside a comment" +msgstr "fine del file (EOF) trovata in un commento" + +#: lexer.ll:780 #, c-format -msgid "invalid character: `%c'" -msgstr "carattere non valido: «%c»" +msgid "invalid character: `%s'" +msgstr "carattere non valido: «%s»" -#: lexer.ll:814 lexer.ll:815 +#: lexer.ll:883 lexer.ll:884 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "stringa di escape sconosciuta: «\\%s»" -#: lexer.ll:924 lexer.ll:925 +#: lexer.ll:1166 lexer.ll:1167 +msgid "non-UTF-8 input" +msgstr "input non UTF-8" + +#: lexer.ll:1210 lexer.ll:1211 #, c-format msgid "file too old: %s (oldest supported: %s)" msgstr "file troppo vecchio: %s (il più vecchio che si può gestire è: %s)" -#: lexer.ll:925 lexer.ll:926 +#: lexer.ll:1211 lexer.ll:1212 msgid "consider updating the input with the convert-ly script" msgstr "si consideri di aggiornare l'input con lo script convert-ly" -#: lexer.ll:931 lexer.ll:932 +#: lexer.ll:1217 lexer.ll:1218 #, c-format msgid "program too old: %s (file requires: %s)" msgstr "programma troppo vecchio: %s (il file richiede: %s)" -#: documentation-lib.scm:59 -#, scheme-format -msgid "Processing ~S..." -msgstr "Elaborazione di ~S..." - -#: documentation-lib.scm:176 -#, scheme-format -msgid "Writing ~S..." -msgstr "Scrittura di ~S..." - -#: documentation-lib.scm:198 -#, scheme-format -msgid "cannot find description for property ~S (~S)" -msgstr "impossibile trovare la descrizione per la proprietà ~S (~S)" - -#: parser-clef.scm:141 parser-clef.scm:181 +#: parser-clef.scm:143 parser-clef.scm:183 #, scheme-format msgid "unknown clef type `~a'" msgstr "tipo di chiave sconosciuto «~a»" -#: parser-clef.scm:142 parser-clef.scm:182 +#: parser-clef.scm:144 parser-clef.scm:184 #, scheme-format msgid "supported clefs: ~a" msgstr "chiavi supportate: ~a" -#: document-backend.scm:132 -#, scheme-format -msgid "pair expected in doc ~s" -msgstr "si aspettava una coppia nel documento ~s" +#: parser-ly-from-scheme.scm:73 +msgid "error in #{ ... #}" +msgstr "errore in #{ ... #}" -#: document-backend.scm:189 +#: framework-eps.scm:108 #, scheme-format -msgid "cannot find interface for property: ~S" -msgstr "impossibile trovare un'interfaccia per le proprietà: ~S" +msgid "Writing ~a..." +msgstr "Scrittura di ~a..." -#: document-backend.scm:199 +#: flag-styles.scm:151 #, scheme-format -msgid "unknown Grob interface: ~S" -msgstr "interfaccia del Grob sconosciuta: ~S" +msgid "flag stroke `~a' or `~a' not found" +msgstr "tipo di coda uncinata sconosciuto: «~a» o «~a»" -#: framework-eps.scm:108 +#: graphviz.scm:64 #, scheme-format -msgid "Writing ~a..." -msgstr "Scrittura di ~a..." +msgid "Writing graph `~a'..." +msgstr "Scrittura del grafico «~a»..." #: define-music-properties.scm:21 define-grob-properties.scm:21 #: define-context-properties.scm:31 @@ -3047,58 +3323,33 @@ msgstr "Scrittura di ~a..." msgid "symbol ~S redefined" msgstr "simbolo ~S ridefinito" -#: paper.scm:115 -msgid "set-global-staff-size: not in toplevel scope" -msgstr "set-global-staff-size: non è nell'ambito di livello più alto" - -#: paper.scm:296 -#, scheme-format -msgid "This is not a \\layout {} object, ~S" -msgstr "Questo non è un oggetto \\layout {}, ~S" - -#: paper.scm:308 -#, scheme-format -msgid "Unknown paper size: ~a" -msgstr "Dimensione del foglio sconosciuta: ~a" - -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:323 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" -msgstr "Si deve usare #(set-paper-size .. ) all'interno di \\paper { ... }" - -#: lily.scm:225 +#: lily.scm:234 msgid "Using (ice-9 curried-definitions) module\n" msgstr "Utilizzazione del modulo (ice-9 curried-definitions)\n" -#: lily.scm:230 +#: lily.scm:237 msgid "Guile 1.8\n" msgstr "Guile 1.8\n" -#: lily.scm:290 +#: lily.scm:297 #, scheme-format msgid "cannot find: ~A" msgstr "impossibile trovare ~A" -#: lily.scm:350 -#, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" -msgstr "tipo di argomento errato per ~a. Previsto ~a, trovato ~s" - -#: lily.scm:716 -msgid "Compilation successfully completed" -msgstr "Compilazione completata con successo" +#: lily.scm:707 +msgid "Success: compilation successfully completed" +msgstr "Successo: compilazione completata con successo" -#: lily.scm:717 +#: lily.scm:708 msgid "Compilation completed with warnings or errors" msgstr "Compilazione completata con avvertimenti o errori" -#: lily.scm:779 +#: lily.scm:770 #, scheme-format msgid "job ~a terminated with signal: ~a" msgstr "il lavoro ~a è terminato col segnale ~a" -#: lily.scm:782 +#: lily.scm:773 #, scheme-format msgid "" "logfile ~a (exit ~a):\n" @@ -3107,31 +3358,21 @@ msgstr "" "file di registro ~a (uscita ~a):\n" "~a" -#: lily.scm:804 lily.scm:882 +#: lily.scm:795 lily.scm:881 #, scheme-format msgid "failed files: ~S" msgstr "errore nei file: ~S" -#: lily.scm:873 +#: lily.scm:872 #, scheme-format msgid "Redirecting output to ~a..." msgstr "Redirezione dell'output verso ~a..." -#: lily.scm:892 +#: lily.scm:891 ps-to-png.scm:66 #, scheme-format msgid "Invoking `~a'...\n" msgstr "Chiamata di «~a»...\n" -#: graphviz.scm:64 -#, scheme-format -msgid "Writing graph `~a'..." -msgstr "Scrittura del grafico «~a»..." - -#: framework-svg.scm:84 -#, scheme-format -msgid "Updating font into: ~a" -msgstr "Aggiornamento dei tipi di carattere in: ~a" - #: layout-beam.scm:40 #, scheme-format msgid "Error in beam quanting. Expected (~S,~S) found ~S." @@ -3142,203 +3383,245 @@ msgstr "Errore nella definizione delle travature. Previste (~S,~S), trovate ~S." msgid "Error in beam quanting. Expected ~S 0, found ~S." msgstr "Errore nella definizione delle travature. Previste ~S 0, trovate ~S." -#: modal-transforms.scm:38 -msgid "'from' pitch not in scale; ignoring" -msgstr "altezza di partenza (from) non presente nella scala; si ignora" +#: output-svg.scm:47 +#, scheme-format +msgid "undefined: ~S" +msgstr "~S indefinito" + +#: output-svg.scm:157 +#, scheme-format +msgid "cannot decypher Pango description: ~a" +msgstr "impossibile decifrare la descrizione di Pango: ~a" + +#: output-svg.scm:237 +msgid "Glyph must have a unicode value" +msgstr "Un glifo deve avere un valore unicode" + +#: output-svg.scm:289 output-svg.scm:299 +#, scheme-format +msgid "cannot find SVG font ~S" +msgstr "impossibile trovare il tipo di carattere SVG ~S" + +#: output-svg.scm:524 output-ps.scm:277 +#, scheme-format +msgid "unknown line-cap-style: ~S" +msgstr "line-cap-style sconosciuto: ~S" + +#: output-svg.scm:530 output-ps.scm:282 +#, scheme-format +msgid "unknown line-join-style: ~S" +msgstr "line-join-style sconosciuto: ~S" + +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" +msgstr "errore di asserzione: ~S" + +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "set-global-staff-size: non è nell'ambito di livello più alto" + +#: paper.scm:314 +#, scheme-format +msgid "This is not a \\layout {} object, ~S" +msgstr "Questo non è un oggetto \\layout {}, ~S" + +#: paper.scm:326 +#, scheme-format +msgid "Unknown paper size: ~a" +msgstr "Dimensione del foglio sconosciuta: ~a" + +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:341 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "Si deve usare #(set-paper-size .. ) all'interno di \\paper { ... }" + +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" +msgstr "Musica non adatta per context-mod" + +#: lily-library.scm:349 +#, scheme-format +msgid "Cannot find context-def \\~a" +msgstr "Impossibile trovare context-def \\~a" -#: modal-transforms.scm:42 modal-transforms.scm:75 -msgid "'to' pitch not in scale; ignoring" -msgstr "altezza di arrivo (to) non presente nella scala; si ignora" +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" +msgstr "Musica non adatta per output-def" -#: modal-transforms.scm:46 -msgid "pitch to be transposed not in scale; ignoring" -msgstr "altezza da trasporre non presente nella scala; si ignora" +#: lily-library.scm:888 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." +msgstr "" +"Cerca l'indice compreso tra @var{start} e @var{end} (un intero)\n" +"che produca l'abbinamento più vicino al @var{target-val} quando\n" +"applicato alla funzione @var{getter}." -#: modal-transforms.scm:71 -msgid "'around' pitch not in scale; ignoring" -msgstr "altezza \"around\" non presente nella scala; si ignora" +#: lily-library.scm:962 +#, scheme-format +msgid "unknown unit: ~S" +msgstr "unità sconosciuta: ~S" -#: modal-transforms.scm:79 -msgid "pitch to be inverted not in scale; ignoring" -msgstr "altezza da invertire non presente nella scala; si ignora" +#: lily-library.scm:987 +#, scheme-format +msgid "no \\version statement found, please add~afor future compatibility" +msgstr "dichiarazione di \\version assente; si aggiunga ~a per compatibilità futura" -#: modal-transforms.scm:95 -msgid "negative replication count; ignoring" -msgstr "conto di riproduzione negativo; si ignora" +#: lily-library.scm:993 +msgid "old relative compatibility not used" +msgstr "compatibilità col vecchio modo relativo non utilizzata" -#: backend-library.scm:29 ps-to-png.scm:68 +#: backend-library.scm:27 #, scheme-format msgid "Invoking `~a'..." msgstr "Invocazione di «~a»..." -#: backend-library.scm:34 +#: backend-library.scm:31 #, scheme-format -msgid "`~a' failed (~a)" -msgstr "«~a» fallito (~a)" +msgid "`~a' failed (~a)\n" +msgstr "«~a» fallito (~a)\n" -#: backend-library.scm:94 +#: backend-library.scm:90 #, scheme-format -msgid "Converting to `~a'..." -msgstr "Conversione a «~a»..." +msgid "Converting to `~a'...\n" +msgstr "Conversione a «~a»...\n" #. Do not try to guess the name of the png file, #. GS produces PNG files like BASE-page%d.png. -#: backend-library.scm:104 +#: backend-library.scm:99 #, scheme-format msgid "Converting to ~a..." msgstr "Conversione a ~a..." -#: backend-library.scm:142 +#: backend-library.scm:137 #, scheme-format msgid "Writing header field `~a' to `~a'..." msgstr "Scrittura del campo di intestazione «~a» in «~a»..." -#: backend-library.scm:192 +#: backend-library.scm:187 #, scheme-format msgid "missing stencil expression `~S'" msgstr "manca l'espressione di stencil «~S»" -#: to-xml.scm:191 +#: documentation-lib.scm:59 #, scheme-format -msgid "assertion failed: ~S" -msgstr "errore di asserzione: ~S" +msgid "Processing ~S..." +msgstr "Elaborazione di ~S..." -#: chord-entry.scm:49 +#: documentation-lib.scm:176 #, scheme-format -msgid "Spurious garbage following chord: ~A" -msgstr "Informazione incomprensibile dopo l'accordo: ~A" +msgid "Writing ~S..." +msgstr "Scrittura di ~S..." -#: lily-library.scm:758 -msgid "" -"Find the index between @var{start} and @var{end} (an integer)\n" -"which produces the closest match to @var{target-val} if\n" -"applied to function @var{getter}." -msgstr "" -"Cerca l'indice compreso tra @var{start} e @var{end} (un intero)\n" -"che produca l'abbinamento più vicino al @var{target-val} quando\n" -"applicato alla funzione @var{getter}." +#: documentation-lib.scm:188 +#, scheme-format +msgid "cannot find description for property `~S' (~S)" +msgstr "impossibile trovare la descrizione per la proprietà \"~S\" (~S)" -#: lily-library.scm:832 +#: documentation-lib.scm:209 #, scheme-format -msgid "unknown unit: ~S" -msgstr "unità sconosciuta: ~S" +msgid "cannot find description for property ~S (~S)" +msgstr "impossibile trovare la descrizione per la proprietà ~S (~S)" -#: lily-library.scm:858 lily-library.scm:867 -msgid "warning:" -msgstr "attenzione:" +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" +msgstr "non si è trovato alcun sistema nella marcatura \\score, contiene un blocco \\layout?" -#: lily-library.scm:860 +#: define-markup-commands.scm:2614 #, scheme-format -msgid "no \\version statement found, please add~afor future compatibility" -msgstr "dichiarazione di \\version assente; si aggiunga ~a per compatibilità futura" +msgid "Cannot find glyph ~a" +msgstr "Impossibile trovare il glifo ~a" -#: lily-library.scm:868 -msgid "old relative compatibility not used" -msgstr "compatibilità col vecchio modo relativo non utilizzata" +#: define-markup-commands.scm:3040 +#, scheme-format +msgid "no brace found for point size ~S " +msgstr "non c'è una graffa che abbia una dimensione di ~S punti" -#: output-ps.scm:48 -msgid "Found infinity or nan in output. Substituting 0.0" -msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0" +#: define-markup-commands.scm:3041 +#, scheme-format +msgid "defaulting to ~S pt" +msgstr "si applica la dimensione predefinita ~S pt" -#: output-ps.scm:289 output-svg.scm:550 +#: define-markup-commands.scm:3194 #, scheme-format -msgid "unknown line-cap-style: ~S" -msgstr "line-cap-style sconosciuto: ~S" +msgid "not a valid duration string: ~a" +msgstr "non è una durata valida per la stringa: ~a" -#: output-ps.scm:294 output-svg.scm:556 +#: define-event-classes.scm:67 #, scheme-format -msgid "unknown line-join-style: ~S" -msgstr "line-join-style sconosciuto: ~S" +msgid "unknown parent class `~a'" +msgstr "Classe di evento «~a» sconosciuta" -#: output-svg.scm:47 +#: markup-macros.scm:331 #, scheme-format -msgid "undefined: ~S" -msgstr "~S indefinito" +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgstr "Numero errato di argomenti. Attesi: ~A, trovati ~A: ~S" -#: output-svg.scm:151 +#: markup-macros.scm:337 #, scheme-format -msgid "cannot decypher Pango description: ~a" -msgstr "impossibile decifrare la descrizione di Pango: ~a" +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgstr "Argomento non valido in posizione ~A. Atteso ~A, trovato ~S." -#: output-svg.scm:231 -msgid "Glyph must have a unicode value" -msgstr "Un glifo deve avere un valore unicode" +#: markup-macros.scm:373 +#, scheme-format +msgid "Not a markup command: ~A" +msgstr "Non è un comando di tipo \"markup\": ~A" -#: output-svg.scm:283 output-svg.scm:293 +#: document-backend.scm:132 #, scheme-format -msgid "cannot find SVG font ~S" -msgstr "impossibile trovare il tipo di carattere SVG ~S" +msgid "pair expected in doc ~s" +msgstr "si aspettava una coppia nel documento ~s" -#: flag-styles.scm:148 +#: document-backend.scm:189 #, scheme-format -msgid "flag stroke `~a' or `~a' not found" -msgstr "tipo di coda uncinata sconosciuto: «~a» o «~a»" +msgid "cannot find interface for property: ~S" +msgstr "impossibile trovare un'interfaccia per le proprietà: ~S" + +#: document-backend.scm:199 +#, scheme-format +msgid "unknown Grob interface: ~S" +msgstr "interfaccia del Grob sconosciuta: ~S" #: define-note-names.scm:962 msgid "Select note names language." msgstr "Selezione della lingua dei nomi delle note." -#: define-note-names.scm:969 +#: define-note-names.scm:968 #, scheme-format msgid "Using `~a' note names..." msgstr "Utilizzo di \"~a\" per i nomi delle note..." -#: define-note-names.scm:972 +#: define-note-names.scm:971 #, scheme-format msgid "Could not find language `~a'. Ignoring." msgstr "Impossibile trovare il linguaggio \"~a\". Si ignora." -#: define-music-types.scm:740 -#, scheme-format -msgid "symbol expected: ~S" -msgstr "simbolo atteso: ~S" - -#: define-music-types.scm:743 -#, scheme-format -msgid "cannot find music object: ~S" -msgstr "impossibile trovare l'oggetto musicale: ~S" - -#: define-music-types.scm:762 -#, scheme-format -msgid "unknown repeat type `~S'" -msgstr "tipo di ripetizione sconosciuto «~S»" - -#: define-music-types.scm:763 -msgid "See define-music-types.scm for supported repeats" -msgstr "Si veda define-music-types.scm per le ripetizioni supportate" - -#: translation-functions.scm:341 -#, scheme-format -msgid "Negative fret for pitch ~a on string ~a" -msgstr "Tasto negativo per l'altezza ~a sulla corda ~a" +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" +msgstr "altezza di partenza (from) non presente nella scala; si ignora" -#: translation-functions.scm:385 -#, scheme-format -msgid "No open string for pitch ~a" -msgstr "Nessuna corda a vuoto per l'altezza ~a" +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" +msgstr "altezza di arrivo (to) non presente nella scala; si ignora" -#: translation-functions.scm:400 -#, scheme-format -msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" -msgstr "La corda richiesta per questa altezza necessita un tasto negativo: corda ~a altezza ~a" +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" +msgstr "altezza da trasporre non presente nella scala; si ignora" -#: translation-functions.scm:401 -msgid "Ignoring string request." -msgstr "Ignorata la richiesta di questa corda." +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" +msgstr "altezza \"around\" non presente nella scala; si ignora" -#: translation-functions.scm:414 -#, scheme-format -msgid "No string for pitch ~a (given frets ~a)" -msgstr "Nessuna corda per l'altezza ~a (se i tasti sono ~a)" +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" +msgstr "altezza da invertire non presente nella scala; si ignora" -#: translation-functions.scm:515 -#, scheme-format -msgid "" -"No label for fret ~a (on string ~a);\n" -"only ~a fret labels provided" -msgstr "" -"Nessuna etichetta per il tasto ~a (sulla corda ~a);\n" -"disponibili solo le etichette del tasto ~a" +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" +msgstr "conto di riproduzione negativo; si ignora" #: framework-ps.scm:250 #, scheme-format @@ -3360,7 +3643,7 @@ msgstr "impossibile realizzare l'integrazione ~S=~S" msgid "do not know how to embed font ~s ~s ~s" msgstr "non so come inserire il tipo di carattere ~s ~s ~s" -#: framework-ps.scm:669 +#: framework-ps.scm:686 msgid "" "\n" "The PostScript backend does not support the\n" @@ -3388,121 +3671,218 @@ msgstr "" " %% Start cut-&-pastable-section\n" " %% ****************************************************************\n" -#: music-functions.scm:268 +#: music-functions.scm:274 msgid "More alternatives than repeats. Junking excess alternatives" msgstr "Più alternative che ripetizioni. Vengono tralasciate le alternative in eccesso" -#: music-functions.scm:297 +#: music-functions.scm:305 #, scheme-format msgid "invalid tremolo repeat count: ~a" msgstr "numero di ripetizioni di tremolo non valido: ~a" -#: music-functions.scm:618 +#: music-functions.scm:671 +msgid "Bad chord repetition" +msgstr "Ripetizione di accordi sbagliata" + +#: music-functions.scm:706 #, scheme-format msgid "music expected: ~S" msgstr "musica attesa: ~S" -#. FIXME: uncomprehensable message -#: music-functions.scm:662 -#, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" -msgstr "Controllo di battuta fallito. Avrebbe dovuto trovarsi a ~a invece che a ~a" - -#: music-functions.scm:846 +#: music-functions.scm:1024 #, scheme-format msgid "cannot find quoted music: `~S'" msgstr "impossibile trovare la musica citata: «~S»" -#: music-functions.scm:982 +#: music-functions.scm:1162 msgid "Add @var{octave-shift} to the octave of @var{pitch}." msgstr "Aggiungere @var{octave-shift} all'ottava di @var{altezza}." -#: music-functions.scm:1037 +#: music-functions.scm:1222 #, scheme-format msgid "Unknown octaveness type: ~S " msgstr "Tipo di ottava sconosciuto: ~S " -#: music-functions.scm:1038 +#: music-functions.scm:1223 msgid "Defaulting to 'any-octave." msgstr "Applicazione del valore predefinito 'any-octave." -#: music-functions.scm:1378 +#: music-functions.scm:1560 #, scheme-format msgid "unknown accidental style: ~S" msgstr "stile di alterazione sconosciuto: ~S" -#: define-event-classes.scm:79 -msgid "All classes must be the last in their matrilineal line." -msgstr "Tutte le classi devono essere le ultime della propria linea di discendenza." +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" +msgstr "simbolo atteso: ~S" -#: define-event-classes.scm:83 -msgid "All classes must have a well-defined pedigree in the existing class hierarchy." -msgstr "Tutte le classi devono avere un'ascendenza ben definita nella gerarchia di classe esistente." +#: define-music-types.scm:768 +#, scheme-format +msgid "cannot find music object: ~S" +msgstr "impossibile trovare l'oggetto musicale: ~S" -#: define-event-classes.scm:149 +#: define-music-types.scm:787 #, scheme-format -msgid "event class ~A seems to be unused" -msgstr "la classe di evento ~A sembra essere non utilizzata" +msgid "unknown repeat type `~S'" +msgstr "tipo di ripetizione sconosciuto «~S»" + +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" +msgstr "Si veda define-music-types.scm per le ripetizioni supportate" -#. should be programming-error -#: define-event-classes.scm:155 +#: framework-svg.scm:84 #, scheme-format -msgid "translator listens to nonexisting event class ~A" -msgstr "il traduttore è in ascolto della classe di evento ~A inesistente" +msgid "Updating font into: ~a" +msgstr "Aggiornamento dei tipi di carattere in: ~a" -#: markup.scm:223 +#: translation-functions.scm:359 #, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" -msgstr "Numero errato di argomenti. Attesi: ~A, trovati ~A: ~S" +msgid "Negative fret for pitch ~a on string ~a" +msgstr "Tasto negativo per l'altezza ~a sulla corda ~a" -#: markup.scm:229 +#: translation-functions.scm:362 #, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." -msgstr "Argomento non valido in posizione ~A. Atteso ~A, trovato ~S." +msgid "Missing fret for pitch ~a on string ~a" +msgstr "Manca il tasto per l'altezza ~a sulla corda ~a" -#: markup.scm:292 +#: translation-functions.scm:413 #, scheme-format -msgid "Not a markup command: ~A" -msgstr "Non è un comando di tipo \"markup\": ~A" +msgid "No open string for pitch ~a" +msgstr "Nessuna corda a vuoto per l'altezza ~a" -#: ps-to-png.scm:74 +#: translation-functions.scm:428 translation-functions.scm:440 #, scheme-format -msgid "~a exited with status: ~S" -msgstr "~a è terminato con stato ~S" +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +msgstr "La corda richiesta per questa altezza necessita un tasto negativo: corda ~a altezza ~a" -#: define-markup-commands.scm:803 -msgid "no systems found in \\score markup, does it have a \\layout block?" -msgstr "non si è trovato alcun sistema nella marcatura \\score, contiene un blocco \\layout?" +#: translation-functions.scm:431 +msgid "Ignoring string request and recalculating." +msgstr "Ignorata la richiesta di questa corda, viene ricalcolata." -#: define-markup-commands.scm:2404 +#: translation-functions.scm:443 +msgid "Ignoring note in tablature." +msgstr "Ignorata la nota nell'intavolatura." + +#: translation-functions.scm:466 #, scheme-format -msgid "Cannot find glyph ~a" -msgstr "Impossibile trovare il glifo ~a" +msgid "No string for pitch ~a (given frets ~a)" +msgstr "Nessuna corda per l'altezza ~a (se i tasti sono ~a)" -#: define-markup-commands.scm:2830 +#: translation-functions.scm:571 #, scheme-format -msgid "no brace found for point size ~S " -msgstr "non c'è una graffa che abbia una dimensione di ~S punti" +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" +msgstr "" +"Nessuna etichetta per il tasto ~a (sulla corda ~a);\n" +"disponibili solo le etichette del tasto ~a" -#: define-markup-commands.scm:2831 +#: ps-to-png.scm:70 #, scheme-format -msgid "defaulting to ~S pt" -msgstr "si applica la dimensione predefinita ~S pt" +msgid "~a exited with status: ~S" +msgstr "~a è terminato con stato ~S" -#: define-markup-commands.scm:2984 +#: chord-entry.scm:52 #, scheme-format -msgid "not a valid duration string: ~a" -msgstr "non è una durata valida per la stringa: ~a" +msgid "Spurious garbage following chord: ~A" +msgstr "Informazione incomprensibile dopo l'accordo: ~A" + +#: part-combiner.scm:598 +#, scheme-format +msgid "quoted music `~a' is empty" +msgstr "la musica quotata «~a» è vuota" + +#: ly-syntax-constructors.scm:66 +#, scheme-format +msgid "~a function cannot return ~a" +msgstr "la funzione ~a non può restituire ~a" -#: ly-syntax-constructors.scm:51 -msgid "Music head function must return Music object" -msgstr "Una funzione musicale principale deve restituire un Oggetto musicale" +#: ly-syntax-constructors.scm:75 +#, scheme-format +msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgstr "tipo di argomento errato per ~a. Previsto ~a, trovato ~s" -#: ly-syntax-constructors.scm:177 +#: ly-syntax-constructors.scm:188 #, scheme-format msgid "Invalid property operation ~a" msgstr "Operazione di proprietà non valida: ~a" +#~ msgid "add midi-block to .ly file" +#~ msgstr "aggiunge il blocco midi al file .ly" + +#~ msgid "Found infinity or nan in output. Substituting 0.0" +#~ msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0" + +#~ msgid "All classes must be the last in their matrilineal line." +#~ msgstr "Tutte le classi devono essere le ultime della propria linea di discendenza." + +#~ msgid "All classes must have a well-defined pedigree in the existing class hierarchy." +#~ msgstr "Tutte le classi devono avere un'ascendenza ben definita nella gerarchia di classe esistente." + +#~ msgid "event class ~A seems to be unused" +#~ msgstr "la classe di evento ~A sembra essere non utilizzata" + +#~ msgid "translator listens to nonexisting event class ~A" +#~ msgstr "il traduttore è in ascolto della classe di evento ~A inesistente" + +#~ msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" +#~ msgstr "setbeatGrouping. Usa baseMoment e beatStructure.\n" + +#~ msgid "success: %s" +#~ msgstr "riuscito: %s" + +#~ msgid "Infinity or NaN encountered" +#~ msgstr "incontrato infinito o un valore non numerico" + +#~ msgid "Vaticana_ligature: zero join (delta_pitch == 0)" +#~ msgstr "Vaticana_ligature: unione nulla (delta_pitch == 0)" + +#~ msgid "No spring between column %d and next one" +#~ msgstr "Nessuna separazione tra la colonna %d e la successiva" + +#~ msgid "Sending non-event to context" +#~ msgstr "Invio di un non-evento al contesto" + +#~ msgid "Invalid CreateContext event: Cannot create %s context" +#~ msgstr "Evento CreateContext non valido: impossibile creare il contesto %s" + +#~ msgid "infinity or NaN encountered while converting Real number" +#~ msgstr "si è incontrato infinito o un valore non numerico durante la conversione di un numero reale" + +#~ msgid "setting to zero" +#~ msgstr "impostato a zero" + +#~ msgid "No spacing entry from %s to `%s'" +#~ msgstr "Nessuno spazio da %s a «%s»" + +#~ msgid "error at EOF: %s" +#~ msgstr "errore alla fine del file (EOF): %s" + +#~ msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" +#~ msgstr "dipendenza ciclica: calculation-in-progress incontrato per #'%s (%s)" + +#~ msgid "Mensural_ligature: unexpected case fall-through" +#~ msgstr "Mensural_ligature: caso inatteso e non interpretabile" + +#~ msgid "Mensural_ligature: (join_right == 0)" +#~ msgstr "Mensural_ligature: (join_right == 0)" + +#~ msgid "braces do not match" +#~ msgstr "le graffe non corrispondono" + +#~ msgid "second argument must be pitch list" +#~ msgstr "il secondo argomento deve essere una lista di altezze" + +#~ msgid "warning:" +#~ msgstr "attenzione:" + +#~ msgid "Bar check failed. Expect to be at ~a, instead at ~a" +#~ msgstr "Controllo di battuta fallito. Avrebbe dovuto trovarsi a ~a invece che a ~a" + +#~ msgid "Music head function must return Music object" +#~ msgstr "Una funzione musicale principale deve restituire un Oggetto musicale" + #~ msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n" #~ msgstr "la spaziatura verticale è cambiata; minimum-Y-extent è obsoleto.\n" @@ -3563,14 +3943,6 @@ msgstr "Operazione di proprietà non valida: ~a" #~ msgid "Incorrect lilypond version: %s (%s, %s)" #~ msgstr "versione di mudela errata: %s (%s, %s)" -#, fuzzy -#~ msgid "junking event: `%s'" -#~ msgstr "Cosa? Non è una richiesta: `%s'" - -#, fuzzy -#~ msgid "cannot find `%s' context" -#~ msgstr "non trovo `%s'" - #~ msgid "Creator: " #~ msgstr "Autore: " @@ -3610,10 +3982,6 @@ msgstr "Operazione di proprietà non valida: ~a" #~ msgid "%s: skipping: `%s'" #~ msgstr "% strumento:" -#, fuzzy -#~ msgid "no such context: %s" -#~ msgstr "% strumento:" - #, fuzzy #~ msgid "Processing `%s'..." #~ msgstr "Elaboro..." @@ -3840,10 +4208,6 @@ msgstr "Operazione di proprietà non valida: ~a" #~ msgid "from musical definition: %s" #~ msgstr "della definizione musicale: %s" -#, fuzzy -#~ msgid "cannot find start of phrasing slur" -#~ msgstr "non trovo le estremità di %s" - #, fuzzy #~ msgid "unterminated pedal bracket" #~ msgstr "beam non terminato" diff --git a/po/ja.po b/po/ja.po index 714391e0cb..a3bd2b95de 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,166 +1,259 @@ -# Japanese message for lilypond 1.3.57 -# Copyright (C) 2000 Free Software Foundation, Inc. +# Japanese message for lilypond +# Copyright (C) 2000, 2012 Free Software Foundation, Inc. +# This file is distributed under the same license as the lilypond package. # Daisuke Yamashita , 2000. -# +# Takeshi Hamasaki , 2012. msgid "" msgstr "" -"Project-Id-Version: lilypond 1.3.57\n" +"Project-Id-Version: lilypond 2.15.29\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" -"POT-Creation-Date: 2008-02-14 15:55+0100\n" -"PO-Revision-Date: 2000-07-14 00:34+0900\n" -"Last-Translator: Daisuke Yamashita \n" -"Language-Team: Japanese \n" +"POT-Creation-Date: 2012-02-04 15:42+0100\n" +"PO-Revision-Date: 2012-03-25 00:31+0900\n" +"Last-Translator: Takeshi Hamasaki \n" +"Language-Team: Japanese \n" +"Language: ja\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: convertrules.py:12 +#: fontextract.py:25 +#, python-format +msgid "Scanning %s" +msgstr "%s をスキャン中" + +#: fontextract.py:70 +#, python-format +msgid "Extracted %s" +msgstr "" + +#: fontextract.py:85 +#, python-format +msgid "Writing fonts to %s" +msgstr "%s にフォントを書き込みます" + +#: book_snippets.py:409 +#, fuzzy, python-format +msgid "deprecated ly-option used: %s=%s" +msgstr "警告:“%s”は、問題視されているオプションです\n" + +#: book_snippets.py:411 +#, fuzzy, python-format +msgid "compatibility mode translation: %s=%s" +msgstr " -a|pipe \"ispell -a\" 互換モード" + +#: book_snippets.py:414 +#, fuzzy, python-format +msgid "deprecated ly-option used: %s" +msgstr "警告:“%s”は、問題視されているオプションです\n" + +#: book_snippets.py:416 +#, fuzzy, python-format +msgid "compatibility mode translation: %s" +msgstr " -a|pipe \"ispell -a\" 互換モード" + +#: book_snippets.py:533 +#, fuzzy, python-format +msgid "ignoring unknown ly option: %s" +msgstr "不明な強制・拒否 (force/refuse) オプション `%.*s'" + +#: book_snippets.py:741 +#, python-format +msgid "Running through filter `%s'" +msgstr "フィルタ `%s' で処理中です " + +#: book_snippets.py:761 +#, python-format +msgid "`%s' failed (%d)" +msgstr "`%s' 失敗しました(%d)" + +#: book_snippets.py:762 +msgid "The error log is as follows:" +msgstr "エラーログは以下の通りです:" + +#: book_snippets.py:882 +#, fuzzy, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "MusicXML ファイル (*.mxml)" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" + +#: book_snippets.py:922 #, python-format -msgid "Not smart enough to convert %s" +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." msgstr "" +#: convertrules.py:12 +#, fuzzy, python-format +msgid "Not smart enough to convert %s." +msgstr "アンカーポイントが不足しているので描画できません" + #: convertrules.py:13 msgid "Please refer to the manual for details, and update manually." -msgstr "" +msgstr "詳細についてはマニュアルを参照して、手動で更新してください。" #: convertrules.py:14 -#, python-format +#, fuzzy, python-format msgid "%s has been replaced by %s" -msgstr "" +msgstr "あなたは %s さんによって追加されました" -#: convertrules.py:24 musicexp.py:16 convert-ly.py:47 lilypond-book.py:82 -#: warn.cc:48 input.cc:90 -#, fuzzy, c-format, python-format +#: convertrules.py:24 lilylib.py:131 warn.cc:223 +#, c-format, python-format msgid "warning: %s" -msgstr "·Ù¹ð: " +msgstr "警告: %s" -#: convertrules.py:33 convertrules.py:103 +#: convertrules.py:49 convertrules.py:94 msgid "\\header { key = concat + with + operator }" msgstr "" -#: convertrules.py:48 -#, fuzzy, python-format +#: convertrules.py:56 +#, python-format msgid "deprecated %s" -msgstr "¤ª¤ª¤è¤½ %s" +msgstr "非推奨です %s" -#: convertrules.py:61 +#: convertrules.py:65 msgid "deprecated \\textstyle, new \\key syntax" msgstr "" -#: convertrules.py:80 convertrules.py:2124 convertrules.py:2337 -#: convertrules.py:2512 convertrules.py:2889 +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 +#, fuzzy msgid "bump version for release" -msgstr "" +msgstr "'%2$s' のリリース '%1$s' が見つかりませんでした" -#: convertrules.py:99 +#: convertrules.py:97 msgid "new \\header format" -msgstr "" +msgstr "新しい \\header の書式" -#: convertrules.py:133 +#: convertrules.py:124 +#, fuzzy msgid "\\translator syntax" -msgstr "" +msgstr "%s: 文法エラー" -#: convertrules.py:211 +#: convertrules.py:175 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" msgstr "" -#: convertrules.py:254 convertrules.py:828 convertrules.py:1584 -#: convertrules.py:2685 +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 #, python-format msgid "deprecate %s" msgstr "" -#: convertrules.py:361 +#: convertrules.py:279 #, python-format msgid "deprecate %s " msgstr "" -#: convertrules.py:384 +#: convertrules.py:305 msgid "new \\notenames format" -msgstr "" +msgstr "新しい \\notenames の書式" -#: convertrules.py:404 +#: convertrules.py:321 #, fuzzy msgid "new tremolo format" -msgstr "ËöÈø¤Ø¤Î¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤»¤ó" +msgstr "新しい \\header の書式" -#: convertrules.py:417 +#: convertrules.py:325 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" msgstr "" -#: convertrules.py:536 -msgid "change property definiton case (eg. onevoice -> oneVoice)" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" msgstr "" -#: convertrules.py:544 +#: convertrules.py:437 +#, fuzzy msgid "new \\textscript markup text" -msgstr "" +msgstr "新しい置換の追加" -#: convertrules.py:638 +#: convertrules.py:509 #, fuzzy, python-format msgid "identifier names: %s" -msgstr "¼±ÊÌ»Ò̾¤Ï¥­¡¼¥ï¡¼¥É¤Ç¤¹: `%s'" +msgstr " -a, --alias エイリアス名\n" -#: convertrules.py:679 +#: convertrules.py:548 msgid "point-and-click argument changed to procedure." msgstr "" -#: convertrules.py:739 +#: convertrules.py:590 +#, fuzzy msgid "semicolons removed" -msgstr "" +msgstr "パッチ %s を削除しました\\n" #. 40 ? -#: convertrules.py:795 -#, python-format +#: convertrules.py:633 +#, fuzzy, python-format msgid "%s property names" -msgstr "" +msgstr " -a, --alias エイリアス名\n" -#: convertrules.py:865 +#: convertrules.py:703 +#, fuzzy msgid "automaticMelismata turned on by default" +msgstr "%2$s から %1$s へのログインは、初期状態では拒否されました。\n" + +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." msgstr "" -#: convertrules.py:1131 convertrules.py:1893 convertrules.py:2166 -#: convertrules.py:2472 +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format msgid "remove %s" -msgstr "" +msgstr "%s を削除" -#: convertrules.py:1164 convertrules.py:1173 +#: convertrules.py:977 convertrules.py:980 msgid "cluster syntax" -msgstr "" +msgstr "クラスタの文法" -#: convertrules.py:1182 +#: convertrules.py:987 +#, fuzzy msgid "new Pedal style syntax" -msgstr "" +msgstr "新しいスタイルのグループ・オブジェクト (テスト用)" -#: convertrules.py:1451 +#: convertrules.py:1246 msgid "" "New relative mode,\n" "Postfix articulations, new text markup syntax, new chord syntax." msgstr "" -#: convertrules.py:1475 +#: convertrules.py:1259 +#, fuzzy msgid "Remove - before articulation" -msgstr "" +msgstr "保存前に確認(&M)" -#: convertrules.py:1515 +#: convertrules.py:1294 #, python-format msgid "%s misspelling" -msgstr "" +msgstr "%s スペルミスです" -#: convertrules.py:1521 +#: convertrules.py:1313 +#, fuzzy +msgid "Swap < > and << >>" +msgstr "黒と白を反転する" + +#: convertrules.py:1316 msgid "attempting automatic \\figures conversion. Check results!" msgstr "" -#: convertrules.py:1550 -msgid "Swap < > and << >>" +#: convertrules.py:1362 +msgid "Use Scheme code to construct arbitrary note events." msgstr "" -#: convertrules.py:1576 -msgid "Use Scheme code to construct arbitrary note events." +#: convertrules.py:1369 +msgid "" +"use symbolic constants for alterations,\n" +"remove \\outputproperty, move ly:verbose into ly:get-option" msgstr "" -#: convertrules.py:1609 +#: convertrules.py:1394 #, python-format msgid "" "\\outputproperty found,\n" @@ -171,7 +264,7 @@ msgid "" "as a substitution text." msgstr "" -#: convertrules.py:1623 +#: convertrules.py:1406 msgid "" "The alteration field of Scheme pitches was multiplied by 2\n" "to support quarter tone accidentals. You must update the following constructs manually:\n" @@ -180,75 +273,74 @@ msgid "" "* keySignature settings made with \\property\n" msgstr "" -#: convertrules.py:1633 -msgid "" -"use symbolic constants for alterations,\n" -"remove \\outputproperty, move ly:verbose into ly:get-option" -msgstr "" - -#: convertrules.py:1692 +#: convertrules.py:1449 msgid "removal of automaticMelismata; use melismaBusyProperties instead." msgstr "" -#: convertrules.py:1807 +#: convertrules.py:1556 msgid "\\partcombine syntax change to \\newpartcombine" msgstr "" -#: convertrules.py:1824 +#: convertrules.py:1581 +msgid "" +"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" +"Harmonic notes. Thread context removed. Lyrics context removed." +msgstr "" + +#: convertrules.py:1585 msgid "Drums found. Enclose drum notes in \\drummode" msgstr "" -#: convertrules.py:1835 convertrules.py:1842 convertrules.py:1853 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format msgid "" "\n" "%s found. Check file manually!\n" msgstr "" +"\n" +"%s が見つかりました\n" -#: convertrules.py:1835 +#: convertrules.py:1596 +#, fuzzy msgid "Drum notation" -msgstr "" - -#: convertrules.py:1863 -msgid "" -"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" -"Harmonic notes. Thread context removed. Lyrics context removed." -msgstr "" +msgstr "HTML 表記: " -#: convertrules.py:1924 +#: convertrules.py:1655 +#, fuzzy msgid "new syntax for property settings:" -msgstr "" +msgstr "属性 '%s' の新しい値を '%s' に設定しました\n" -#: convertrules.py:1957 +#: convertrules.py:1681 msgid "Property setting syntax in \\translator{ }" msgstr "" -#: convertrules.py:1978 -#, python-format -msgid "use %s" -msgstr "" - -#: convertrules.py:1995 +#: convertrules.py:1720 msgid "Scheme grob function renaming" msgstr "" -#: convertrules.py:2008 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 +#, fuzzy, python-format +msgid "Use %s\n" +msgstr "ON" + +#: convertrules.py:1747 msgid "More Scheme function renaming" msgstr "" -#: convertrules.py:2140 +#: convertrules.py:1871 msgid "" "Page layout has been changed, using paper size and margins.\n" "textheight is no longer used.\n" msgstr "" -#: convertrules.py:2259 +#: convertrules.py:1957 msgid "" "\\foo -> \\foomode (for chords, notes, etc.)\n" "fold \\new FooContext \\foomode into \\foo." msgstr "" -#: convertrules.py:2285 +#: convertrules.py:1995 msgid "" "staff size should be changed at top-level\n" "with\n" @@ -257,1513 +349,1553 @@ msgid "" "\n" msgstr "" -#: convertrules.py:2320 +#: convertrules.py:2015 +#, fuzzy msgid "regularize other identifiers" +msgstr "他のタブを閉じる" + +#: convertrules.py:2083 +msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" msgstr "" -#: convertrules.py:2411 +#: convertrules.py:2094 msgid "LilyPond source must be UTF-8" -msgstr "" +msgstr "LilyPond のソースファイルは UTF-8 で記述してください" -#: convertrules.py:2414 +#: convertrules.py:2097 +#, fuzzy msgid "Try the texstrings backend" -msgstr "" +msgstr "バックエンドによる較正" -#: convertrules.py:2417 -#, python-format +#: convertrules.py:2100 +#, fuzzy, python-format msgid "Do something like: %s" -msgstr "" +msgstr "lynx 風動作(&Y)" -#: convertrules.py:2420 +#: convertrules.py:2103 msgid "Or save as UTF-8 in your editor" -msgstr "" +msgstr "エディタで保存する際の文字コードには UTF-8 を指定してください" -#: convertrules.py:2452 -msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" +#: convertrules.py:2153 +msgid "warn about auto beam settings" msgstr "" -#: convertrules.py:2485 +#: convertrules.py:2157 +#, fuzzy msgid "auto beam settings" -msgstr "" +msgstr "Cisco VPN 設定" -#: convertrules.py:2487 +#: convertrules.py:2158 msgid "" "\n" "Auto beam settings must now specify each interesting moment in a measure\n" -"explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n" +"explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n" msgstr "" -#: convertrules.py:2498 -msgid "warn about auto beam settings" -msgstr "" - -#: convertrules.py:2624 +#: convertrules.py:2271 +#, fuzzy msgid "verticalAlignmentChildCallback has been deprecated" -msgstr "" +msgstr "鍵がパクられました" -#: convertrules.py:2652 +#: convertrules.py:2276 msgid "Remove callbacks property, deprecate XY-extent-callback." msgstr "" -#: convertrules.py:2663 +#: convertrules.py:2297 msgid "Use grob closures iso. XY-offset-callbacks." msgstr "" -#: convertrules.py:2770 +#: convertrules.py:2359 msgid "foobar -> foo-bar for \\paper, \\layout" msgstr "" -#: convertrules.py:2877 +#: convertrules.py:2469 msgid "deprecate \\tempo in \\midi" msgstr "" -#: convertrules.py:2912 +#: convertrules.py:2522 msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "" -#: convertrules.py:2941 +#: convertrules.py:2535 msgid "Rename accidental glyphs, use glyph-name-alist." msgstr "" -#: convertrules.py:2973 -msgid "edge-text settings for TextSpanner." +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" msgstr "" -#: convertrules.py:2974 -#, python-format +#: convertrules.py:2591 +#, fuzzy, python-format msgid "" "Use\n" "\n" "%s" -msgstr "" +msgstr "ON" -#: convertrules.py:3020 -msgid "all settings related to dashed lines.\n" +#: convertrules.py:2624 +msgid "Use the `alignment-offsets' sub-property of\n" msgstr "" -#: convertrules.py:3021 -msgid "Use \\override ... #'style = #'line for solid lines and\n" +#: convertrules.py:2625 +msgid "NonMusicalPaperColumn #'line-break-system-details\n" msgstr "" -#: convertrules.py:3022 -msgid "\t\\override ... #'style = #'dashed-line for dashed lines." +#: convertrules.py:2626 +msgid "to set fixed distances between staves.\n" msgstr "" -#: convertrules.py:3027 +#: convertrules.py:2638 msgid "Use #'style not #'dash-fraction to select solid/dashed lines." msgstr "" -#: fontextract.py:26 -#, fuzzy, python-format -msgid "Scanning %s" -msgstr "·Ù¹ð: " +#: convertrules.py:2644 +msgid "all settings related to dashed lines" +msgstr "" -#: fontextract.py:71 -#, python-format -msgid "Extracted %s" +#: convertrules.py:2645 +msgid "Use \\override ... #'style = #'line for solid lines and\n" msgstr "" -#: fontextract.py:86 -#, python-format -msgid "Writing fonts to %s" +#: convertrules.py:2646 +msgid "\t\\override ... #'style = #'dashed-line for dashed lines." msgstr "" -#: lilylib.py:102 lilylib.py:153 -#, fuzzy, python-format -msgid "Invoking `%s'" -msgstr "¶Ê¤ò¼Î¤Æ¤Þ¤¹: `%s'" +#: convertrules.py:2682 +msgid "" +"metronomeMarkFormatter uses text markup as second argument,\n" +"fret diagram properties moved to fret-diagram-details." +msgstr "" -#: lilylib.py:104 lilylib.py:155 -#, python-format -msgid "Running %s..." +#: convertrules.py:2688 +msgid "metronomeMarkFormatter got an additional text argument.\n" msgstr "" -#: lilylib.py:220 +#: convertrules.py:2689 #, python-format -msgid "Usage: %s" +msgid "" +"The function assigned to Score.metronomeMarkFunction now uses the signature\n" +"%s" msgstr "" -#: musicexp.py:577 +#: convertrules.py:2707 #, python-format -msgid "unable to set the music %(music)s for the repeat %(repeat)s" +msgid "%s in fret-diagram properties" msgstr "" -#: musicexp.py:586 -msgid "encountered repeat without body" +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" msgstr "" -#: musicxml.py:13 convert-ly.py:50 lilypond-book.py:85 warn.cc:54 input.cc:96 -#: input.cc:104 -#, fuzzy, c-format, python-format -msgid "error: %s" -msgstr "¥¨¥é¡¼: " - -#: musicxml.py:272 -msgid "requested time signature, but time sig is unknown" +#: convertrules.py:2752 +msgid "Axis and direction now come before markups:\n" msgstr "" -#: musicxml.py:338 -#, python-format -msgid "Encountered note at %s with %s duration (no element):" +#: convertrules.py:2753 +msgid "\\put-adjacent axis dir markup markup." msgstr "" -#: musicxml.py:372 -#, python-format -msgid "Unable to find find instrument for ID=%s\n" -msgstr "" +#: convertrules.py:2784 +#, fuzzy +msgid "re-definition of InnerStaffGroup" +msgstr "%s:%d: 不正な文字列定義" -#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:109 midi2ly.py:849 -#, fuzzy, python-format -msgid "%s [OPTION]... FILE" -msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]" +#: convertrules.py:2789 +#, fuzzy +msgid "re-definition of InnerChoirStaff" +msgstr "%s:%d: 不正な文字列定義" -#: abc2ly.py:1343 -#, python-format -msgid "" -"abc2ly converts ABC music files (see\n" -"%s) to LilyPond input." +#: convertrules.py:2799 +msgid "Syntax changes for \\addChordShape and \\chord-shape" msgstr "" -#: abc2ly.py:1350 convert-ly.py:78 etf2ly.py:1190 lilypond-book.py:175 -#: midi2ly.py:885 musicxml2ly.py:1824 main.cc:161 -#, fuzzy -msgid "show version number and exit" -msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨" +#: convertrules.py:2804 +msgid "stringTuning must be added to addChordShape call.\n" +msgstr "" -#: abc2ly.py:1354 convert-ly.py:82 etf2ly.py:1186 lilypond-book.py:125 -#: midi2ly.py:864 musicxml2ly.py:1808 main.cc:150 -msgid "show this help and exit" +#: convertrules.py:2809 +msgid "stringTuning must be added to chord-shape call.\n" msgstr "" -#: abc2ly.py:1356 etf2ly.py:1191 midi2ly.py:868 +#: convertrules.py:2815 #, fuzzy -msgid "write output to FILE" -msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..." +msgid "Remove oldaddlyrics" +msgstr "%s を削除できません" -#: abc2ly.py:1358 -msgid "be strict about succes" +#: convertrules.py:2819 +msgid "" +"oldaddlyrics is no longer supported. \n" +" Use addlyrics or lyrsicsto instead.\n" msgstr "" -#: abc2ly.py:1360 -msgid "preserve ABC's notion of beams" +#: convertrules.py:2825 +msgid "" +"keySignature property not reversed any more\n" +"MIDI 47: orchestral strings -> orchestral harp" msgstr "" -#: abc2ly.py:1361 convert-ly.py:111 etf2ly.py:1198 lilypond-book.py:180 -#: midi2ly.py:897 musicxml2ly.py:1872 -msgid "Bugs" +#: convertrules.py:2830 +msgid "The alist for Staff.keySignature is no longer in reversed order.\n" msgstr "" -#: abc2ly.py:1362 convert-ly.py:112 etf2ly.py:1199 lilypond-book.py:181 -#: midi2ly.py:898 musicxml2ly.py:1873 -#, fuzzy -msgid "Report bugs via" -msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø" - -#: convert-ly.py:32 +#: convertrules.py:2836 msgid "" -"Update LilyPond input to newer version. By default, update from the\n" -"version taken from the \\version command, to the current LilyPond version." +"\\bar \".\" now produces a thick barline\n" +"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" +"Dash parameters for slurs and ties are now in dash-definition" msgstr "" -#: convert-ly.py:34 lilypond-book.py:59 -msgid "Examples:" +#: convertrules.py:2842 +msgid "\\bar \".\" now produces a thick barline.\n" msgstr "" -#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:105 midi2ly.py:79 -msgid "Distributed under terms of the GNU General Public License." +#: convertrules.py:2848 +msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" msgstr "" -#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:106 midi2ly.py:80 -msgid "It comes with NO WARRANTY." +#: convertrules.py:2853 +msgid "" +"Autobeaming rules have changed. override-auto-beam-setting and\n" +"revert-auto-beam-setting have been eliminated.\n" +"\\overrideBeamSettings has been added.\n" +"beatGrouping has been eliminated.\n" +"Different settings for vertical layout.\n" +"ly:system-start-text::print -> system-start-text::print\n" +"Beam #'thickness -> Beam #'beam-thickness\n" +"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n" +"ly:ambitus::print -> ambitus::print\n" +"Explicit dynamics context definition from `Piano centered dynamics'\n" +"template replaced by new `Dynamics' context." msgstr "" -#: convert-ly.py:86 convert-ly.py:106 -msgid "VERSION" +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" msgstr "" -#: convert-ly.py:88 -msgid "start from VERSION [default: \\version found in file]" +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" msgstr "" -#: convert-ly.py:91 -msgid "edit in place" +#: convertrules.py:2878 +msgid "" +" beatGrouping with a specified context must now be accomplished with\n" +" \\overrideBeamSettings.\n" msgstr "" -#: convert-ly.py:94 -msgid "do not add \\version command if missing" +#: convertrules.py:2884 +msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n" msgstr "" -#: convert-ly.py:100 -msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]" +#: convertrules.py:2895 +msgid "" +"Remove obsolete engravers/translators: Note_swallow_translator,\n" +"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" +"Swallow_performer and String_number_engraver.\n" +"New vertical spacing variables." msgstr "" -#: convert-ly.py:105 -msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]" +#: convertrules.py:2926 +msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" msgstr "" -#: convert-ly.py:153 -msgid "Applying conversion: " +#: convertrules.py:2932 +msgid "Unify fetaNumber and fetaDynamic encodings" msgstr "" -#: convert-ly.py:166 -msgid "Error while converting" +#: convertrules.py:2937 +msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" msgstr "" -#: convert-ly.py:168 -msgid "Stopping at last succesful rule" +#: convertrules.py:2948 +msgid "\\cresc etc. are now postfix operators" msgstr "" -#: convert-ly.py:190 -#, fuzzy, python-format -msgid "Processing `%s'... " -msgstr "½èÍýÃæ..." - -#: convert-ly.py:277 relocate.cc:362 source-file.cc:54 -#, fuzzy, c-format, python-format -msgid "cannot open file: `%s'" -msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'" +#: convertrules.py:2960 +msgid "" +"Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n" +"\"accordion.accEtcbase\" -> \"accordion.etcbass\"" +msgstr "" -#: convert-ly.py:284 -#, python-format -msgid "cannot determine version for `%s'. Skipping" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" msgstr "" -#: etf2ly.py:1180 -#, fuzzy, python-format -msgid "%s [OPTION]... ETF-FILE" -msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" +msgstr "" -#: etf2ly.py:1181 -msgid "" -"Enigma Transport Format is a format used by Coda Music Technology's\n" -"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file." +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" msgstr "" -#: etf2ly.py:1192 midi2ly.py:869 musicxml2ly.py:1866 main.cc:154 main.cc:159 -msgid "FILE" -msgstr "FILE" +#: convertrules.py:2990 convertrules.py:2994 +#, fuzzy +msgid "Use baseMoment and beatStructure.\n" +msgstr "選択範囲の作成と使用(_S)" -#: etf2ly.py:1194 lilypond-book.py:178 midi2ly.py:886 main.cc:163 -msgid "show warranty and copyright" -msgstr "ÊݾڤÈÃøºî¸¢¤Ë¤Ä¤¤¤ÆÉ½¼¨¤¹¤ë" +#: convertrules.py:2999 +msgid "" +"Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n" +"Deprecate negative dash-period for hidden lines: use #'style = #'none instead." +msgstr "" -#: lilypond-book.py:57 -msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." +#: convertrules.py:3004 +msgid "Move size, thickness, and graphic to properties. Argument should be just the key list.\n" msgstr "" -#: lilypond-book.py:64 -msgid "BOOK" +#: convertrules.py:3012 +msgid "" +"Rename vertical spacing variables.\n" +"Add fretboard-table argument to savePredefinedFretboard." msgstr "" -#: lilypond-book.py:72 -#, python-format -msgid "Exiting (%d)..." +#: convertrules.py:3030 +msgid "Rename vertical spacing grob properties." msgstr "" -#: lilypond-book.py:103 -#, python-format -msgid "Copyright (c) %s by" -msgstr "Copyright (c) %s by" +#: convertrules.py:3046 +msgid "Remove \\paper variables head-separation and foot-separation." +msgstr "" -#: lilypond-book.py:113 -#, fuzzy -msgid "FILTER" -msgstr "FILE" +#: convertrules.py:3050 +msgid "Adjust settings for top-system-spacing instead.\n" +msgstr "" -#: lilypond-book.py:116 -msgid "pipe snippets through FILTER [convert-ly -n -]" +#: convertrules.py:3054 +msgid "Adjust settings for last-bottom-spacing instead.\n" msgstr "" -#: lilypond-book.py:120 -msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)" +#: convertrules.py:3060 +msgid "" +"Rename space to basic-distance in various spacing alists.\n" +"Remove HarmonicParenthesesItem grob." msgstr "" -#: lilypond-book.py:127 +#: convertrules.py:3067 #, fuzzy -msgid "add DIR to include path" -msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ" +msgid "HarmonicParenthesesItem has been eliminated.\n" +msgstr "鍵がパクられました" -#: lilypond-book.py:128 lilypond-book.py:135 lilypond-book.py:147 main.cc:153 -msgid "DIR" -msgstr "DIR" - -#: lilypond-book.py:133 -msgid "format Texinfo output so that Info will look for images of music in DIR" +#: convertrules.py:3068 +msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" msgstr "" -#: lilypond-book.py:140 -msgid "PAD" +#: convertrules.py:3073 +msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n" msgstr "" -#: lilypond-book.py:142 -msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)" +#: convertrules.py:3080 +msgid "" +"Change stringTunings from a list of semitones to a list of pitches.\n" +"Change tenor and baritone ukulele names in string tunings.\n" +"Generate messages for manual conversion of vertical spacing if required." msgstr "" -#: lilypond-book.py:146 -#, fuzzy -msgid "write output to DIR" -msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..." +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." +msgstr "" -#: lilypond-book.py:151 -msgid "COMMAND" +#: convertrules.py:3129 +msgid "Replace bar-size with bar-extent." msgstr "" -#: lilypond-book.py:152 -msgid "process ly_files using COMMAND FILE..." +#: convertrules.py:3141 +msgid "Woodwind diagrams: Changes to the clarinet diagram." msgstr "" -#: lilypond-book.py:159 -msgid "create PDF files for use with PDFTeX" +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" msgstr "" -#: lilypond-book.py:163 -msgid "" -"extract all PostScript fonts into INPUT.psfonts for LaTeX\n" -"must use this with dvips -h INPUT.psfonts" +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." msgstr "" -#: lilypond-book.py:167 midi2ly.py:879 musicxml2ly.py:1829 main.cc:162 -msgid "be verbose" -msgstr "¾ÜºÙ¤Ê¾ðÊó¤òɽ¼¨¤·¤Þ¤¹" +#: convertrules.py:3159 +msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n" +msgstr "" -#: lilypond-book.py:788 -#, python-format -msgid "file not found: %s" +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" msgstr "" -#: lilypond-book.py:1022 -#, python-format -msgid "deprecated ly-option used: %s=%s" +#: convertrules.py:3168 +msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n" msgstr "" -#: lilypond-book.py:1025 -#, python-format -msgid "compatibility mode translation: %s=%s" +#: convertrules.py:3173 +msgid "Creation of a Flag grob and moving of certain Stem properties to this grob" msgstr "" -#: lilypond-book.py:1029 -#, python-format -msgid "deprecated ly-option used: %s" +#: convertrules.py:3209 +msgid "consistent-broken-slope is now handled through the positions callback.\n" msgstr "" -#: lilypond-book.py:1032 -#, python-format -msgid "compatibility mode translation: %s" +#: convertrules.py:3210 +msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n" msgstr "" -#: lilypond-book.py:1051 -#, python-format -msgid "ignoring unknown ly option: %s" -msgstr "" - -#: lilypond-book.py:1422 +#: book_base.py:26 #, fuzzy, python-format -msgid "Opening filter `%s'" -msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'" +msgid "file not found: %s" +msgstr "ファイルがありません" -#: lilypond-book.py:1439 -#, python-format -msgid "`%s' failed (%d)" -msgstr "" +#: book_base.py:164 +#, fuzzy +msgid "Output function not implemented" +msgstr "PASSMECH は完全には実装されていません" -#: lilypond-book.py:1440 -msgid "The error log is as follows:" -msgstr "" +#: lilylib.py:96 +#, fuzzy, python-format +msgid "Setting loglevel to %s" +msgstr "ドメインを`%s'へ設定しました\n" -#: lilypond-book.py:1512 -msgid "cannot find \\begin{document} in LaTeX document" -msgstr "" +#: lilylib.py:99 +#, fuzzy, python-format +msgid "Unknown or invalid loglevel '%s'" +msgstr "非対応または不正なビット深度です" -#: lilypond-book.py:1623 -#, fuzzy -msgid "Writing snippets..." -msgstr "²»À¼¤òºîÀ®Ãæ..." +#: lilylib.py:128 warn.cc:211 +#, fuzzy, c-format, python-format +msgid "error: %s" +msgstr " エラー: " -#: lilypond-book.py:1628 -msgid "Processing..." -msgstr "½èÍýÃæ..." +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "%s.ly を処理中です" -#: lilypond-book.py:1632 -msgid "All snippets are up to date..." -msgstr "" +#: lilylib.py:189 lilylib.py:250 +#, fuzzy, python-format +msgid "Invoking `%s'" +msgstr "PGP 起動中..." -#: lilypond-book.py:1642 +#: lilylib.py:191 lilylib.py:252 #, fuzzy, python-format -msgid "cannot determine format for: %s" -msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +msgid "Running %s..." +msgstr "実行中 " -#: lilypond-book.py:1653 +#: lilylib.py:328 #, python-format -msgid "%s is up to date." -msgstr "" +msgid "Usage: %s" +msgstr "利用法: %s" -#: lilypond-book.py:1659 -#, fuzzy, python-format -msgid "Writing `%s'..." -msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..." +#: musicexp.py:224 musicexp.py:229 +msgid "Language does not support microtones contained in the piece" +msgstr "" -#: lilypond-book.py:1714 -msgid "Output would overwrite input file; use --output." +#: musicexp.py:491 +msgid "Tuplet brackets of curved shape are not correctly implemented" msgstr "" -#: lilypond-book.py:1718 +#: musicexp.py:677 #, fuzzy, python-format -msgid "Reading %s..." -msgstr "²»À¼¤òºîÀ®Ãæ..." +msgid "unable to set the music %(music)s for the repeat %(repeat)s" +msgstr "ユーザに役割 \"%s\" をセットできません: %s" -#: lilypond-book.py:1737 -#, fuzzy -msgid "Dissecting..." -msgstr "½èÍýÃæ..." +#: musicexp.py:686 +msgid "encountered repeat without body" +msgstr "中身のない繰り返しに行き当たりました" -#: lilypond-book.py:1753 +#. no self.elements! +#: musicexp.py:856 #, python-format -msgid "Compiling %s..." +msgid "Grace note with no following music: %s" msgstr "" -#: lilypond-book.py:1762 +#: musicexp.py:1018 #, python-format -msgid "Processing include: %s" +msgid "Invalid octave shift size found: %s. Using no shift." msgstr "" -#: lilypond-book.py:1776 +#: musicexp.py:1476 #, python-format -msgid "Removing `%s'" +msgid "Unable to convert alteration %s to a lilypond expression" msgstr "" -#: lilypond-book.py:1809 -msgid "option --psfonts not used" +#. TODO: Handle pieces without a time signature! +#: musicxml.py:361 +msgid "Senza-misura time signatures are not yet supported!" msgstr "" -#: lilypond-book.py:1810 -msgid "processing with dvips will have no fonts" +#: musicxml.py:379 +msgid "Unable to interpret time signature! Falling back to 4/4." msgstr "" -#: lilypond-book.py:1813 -msgid "DVIPS usage:" +#: musicxml.py:435 +#, python-format +msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!" msgstr "" -#: lilypond-book.py:1869 -#, fuzzy, python-format -msgid "Writing fonts to %s..." -msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..." - -#: midi2ly.py:87 lily-library.scm:615 lily-library.scm:624 -msgid "warning: " -msgstr "·Ù¹ð: " - -#: midi2ly.py:90 midi2ly.py:911 -msgid "error: " -msgstr "¥¨¥é¡¼: " - -#: midi2ly.py:91 -#, fuzzy -msgid "Exiting... " -msgstr "¹Ô ..." - -#: midi2ly.py:837 +#: musicxml.py:523 #, fuzzy, python-format -msgid "%s output to `%s'..." -msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ" +msgid "Unable to find instrument for ID=%s\n" +msgstr "%s: ARM グルー '%s' (`%s' 用) を見つけられません" -#: midi2ly.py:850 musicxml2ly.py:1803 +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 #, python-format -msgid "Convert %s to LilyPond input." -msgstr "" - -#: midi2ly.py:855 -msgid "print absolute pitches" -msgstr "" - -#: midi2ly.py:857 midi2ly.py:872 -msgid "DUR" -msgstr "DUR" - -#: midi2ly.py:858 -msgid "quantise note durations on DUR" -msgstr "" - -#: midi2ly.py:861 -msgid "print explicit durations" +msgid "Running texi2pdf on file %s to detect default page settings.\n" msgstr "" -#: midi2ly.py:865 -#, fuzzy -msgid "set key: ALT=+sharps|-flats; MINOR=1" -msgstr "Ä´¤òÀßÄê: ACC +¥·¥ã¡¼¥×/-¥Õ¥é¥Ã¥È :1 ûĴ" - -#: midi2ly.py:866 -#, fuzzy -msgid "ALT[:MINOR]" -msgstr "ACC[:MINOR]" - -#: midi2ly.py:871 -msgid "quantise note starts on DUR" -msgstr "" +#: book_texinfo.py:228 book_latex.py:209 +msgid "Unable to auto-detect default settings:\n" +msgstr "既定の設定を自動検出できません:\n" -#: midi2ly.py:874 -msgid "DUR*NUM/DEN" +#: book_texinfo.py:240 book_latex.py:221 +#, python-format +msgid "" +"Unable to auto-detect default settings:\n" +"%s" msgstr "" +"既定の設定を自動検出できません:\n" +"%s" -#: midi2ly.py:877 -msgid "allow tuplet durations DUR*NUM/DEN" -msgstr "" +#: book_latex.py:170 +msgid "cannot find \\begin{document} in LaTeX document" +msgstr "LaTeX 文書の中に \\begin{document} がありません" -#: midi2ly.py:889 -msgid "treat every text as a lyric" +#: book_latex.py:188 +#, python-format +msgid "Running `%s' on file `%s' to detect default page settings.\n" msgstr "" -#: midi2ly.py:892 -msgid "Examples" +#: musicxml2ly.py:228 +#, python-format +msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored" msgstr "" -#: midi2ly.py:912 -msgid "no files specified on command line." -msgstr "" +#: musicxml2ly.py:247 musicxml2ly.py:249 +#, fuzzy, python-format +msgid "Unprocessed PartGroupInfo %s encountered" +msgstr "ループしているリンクに遭遇しました" -#: musicxml2ly.py:193 musicxml2ly.py:195 +#: musicxml2ly.py:502 #, python-format -msgid "Unprocessed PartGroupInfo %s encountered" +msgid "Encountered note at %s without type and duration (=%s)" msgstr "" -#: musicxml2ly.py:426 +#: musicxml2ly.py:522 #, python-format msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration" msgstr "" -#: musicxml2ly.py:609 +#: musicxml2ly.py:769 +#, fuzzy +msgid "Unable to extract key signature!" +msgstr "メタデータの値を設定できませんでした" + +#: musicxml2ly.py:796 #, python-format -msgid "unknown mode %s, expecting 'major' or 'minor'" +msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" msgstr "" -#: musicxml2ly.py:647 -#, python-format +#: musicxml2ly.py:934 +#, fuzzy, python-format msgid "Encountered unprocessed marker %s\n" -msgstr "" +msgstr "ループしているリンクに遭遇しました" -#: musicxml2ly.py:741 +#: musicxml2ly.py:1028 #, fuzzy, python-format msgid "unknown span event %s" -msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'" +msgstr "MIDI イベントコントローラ" -#: musicxml2ly.py:751 +#: musicxml2ly.py:1038 #, fuzzy, python-format msgid "unknown span type %s for %s" -msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'" +msgstr "%s: 再配置タイプ %d (シンボル %s) が不明です" + +#: musicxml2ly.py:1458 +#, fuzzy +msgid "Unknown metronome mark, ignoring" +msgstr "未知の拡張ヘッダキーワード `%s' を無視" -#: musicxml2ly.py:1259 +#. TODO: Implement the other (more complex) way for tempo marks! +#: musicxml2ly.py:1463 +msgid "Metronome marks with complex relations ( in MusicXML) are not yet implemented." +msgstr "" + +#: musicxml2ly.py:1665 +#, python-format +msgid "Unable to convert chord type %s to lilypond." +msgstr "" + +#: musicxml2ly.py:1814 #, python-format msgid "drum %s type unknown, please add to instrument_drumtype_dict" msgstr "" -#: musicxml2ly.py:1263 +#: musicxml2ly.py:1818 #, fuzzy msgid "cannot find suitable event" -msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgstr "'%s' の URL が見つかりません" -#: musicxml2ly.py:1346 +#: musicxml2ly.py:1966 #, python-format -msgid "Negative skip %s" +msgid "Negative skip %s (from position %s to %s)" msgstr "" -#: musicxml2ly.py:1480 +#: musicxml2ly.py:2107 #, python-format msgid "Negative skip found: from %s to %s, difference is %s" msgstr "" -#: musicxml2ly.py:1505 -#, python-format +#: musicxml2ly.py:2188 +#, fuzzy, python-format msgid "unexpected %s; expected %s or %s or %s" +msgstr "\\が「a」「c」「i」の後に予期されます" + +#: musicxml2ly.py:2294 +msgid "Encountered closing slur, but no slur is open" msgstr "" -#: musicxml2ly.py:1583 -msgid "cannot have two simultaneous slurs" +#: musicxml2ly.py:2297 +msgid "Cannot have two simultaneous (closing) slurs" msgstr "" -#: musicxml2ly.py:1711 -#, python-format +#: musicxml2ly.py:2306 +msgid "Cannot have a slur inside another slur" +msgstr "スラーの中に別のスラーを含むことはできません" + +#: musicxml2ly.py:2309 +msgid "Cannot have two simultaneous slurs" +msgstr "スラーを二つ同時に指定することはできません" + +#: musicxml2ly.py:2443 +#, fuzzy, python-format msgid "cannot simultaneously have more than one mode: %s" -msgstr "" +msgstr "-anrw を2つ以上一緒に使用することはできません" -#: musicxml2ly.py:1791 +#: musicxml2ly.py:2551 +#, fuzzy msgid "Converting to LilyPond expressions..." -msgstr "" +msgstr "和音にLilyPond 言語を追加" + +#: musicxml2ly.py:2562 +#, fuzzy +msgid "musicxml2ly [OPTION]... FILE.xml" +msgstr "Visio XFIG ファイル形式" -#: musicxml2ly.py:1802 -msgid "musicxml2ly [options] FILE.xml" +#: musicxml2ly.py:2564 +msgid "" +"Convert MusicXML from FILE.xml to LilyPond input.\n" +"If the given filename is -, musicxml2ly reads from the command line.\n" msgstr "" -#: musicxml2ly.py:1812 -#, fuzzy, python-format +#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141 +#: convert-ly.py:92 etf2ly.py:1204 main.cc:153 +#, fuzzy +msgid "show this help and exit" +msgstr " -h, --help このヘルプを表示して終了\n" + +#: musicxml2ly.py:2574 msgid "" -"This program is free software. It is covered by the GNU General Public\n" -"License and you are welcome to change it and/or distribute copies of it\n" -"under certain conditions. Invoke as `%s --warranty' for more\n" -"information." +"Copyright (c) 2005--2012 by\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen and\n" +" Reinhold Kainhofer \n" msgstr "" -"This is free software. It is covered by the GNU General Public License,\n" -"and you are welcome to change it and/or distribute copies of it under\n" -"certain conditions. Invoke as `%s --warranty' for more information.\n" -"\n" -"-- »²¹ÍÌõ\n" -"¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤Ë´ð¤Å¤­¡¢Æ±°ì¾ò·ï¤Ç\n" -"¤³¤ì¤ò²þÊѤ·¤¿¤ê¡¢Ê£À½¤òÇÛÉÛ¤·¤¿¤ê¤¹¤ë»ö¤Ï´¿·Þ¤µ¤ì¤Þ¤¹¡£\n" -"`--warranty' ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤¹¤ë¤È¡¢¤è¤ê¾ÜºÙ¤Ê¾ðÊ󤬯À¤é¤ì¤Þ¤¹¡£\n" -#: musicxml2ly.py:1835 +#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232 +#: convert-ly.py:88 etf2ly.py:1208 main.cc:174 +#, fuzzy +msgid "show version number and exit" +msgstr "バージョン情報を表示して終了する" + +#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224 +msgid "be verbose" +msgstr "詳細な情報を表示します" + +#: musicxml2ly.py:2600 msgid "use lxml.etree; uses less memory and cpu time" msgstr "" -#: musicxml2ly.py:1841 +#: musicxml2ly.py:2606 msgid "input file is a zip-compressed MusicXML file" msgstr "" -#: musicxml2ly.py:1847 +#: musicxml2ly.py:2612 msgid "convert pitches in relative mode (default)" msgstr "" -#: musicxml2ly.py:1852 +#: musicxml2ly.py:2617 msgid "convert pitches in absolute mode" msgstr "" -#: musicxml2ly.py:1855 +#: musicxml2ly.py:2620 +#, fuzzy msgid "LANG" +msgstr "HREF_LANG:" + +#: musicxml2ly.py:2622 +msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" msgstr "" -#: musicxml2ly.py:1857 -msgid "use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly" +#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105 +msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)" msgstr "" -#: musicxml2ly.py:1863 +#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182 +#: convert-ly.py:107 main.cc:167 +msgid "LOGLEVEL" +msgstr "" + +#: musicxml2ly.py:2636 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." msgstr "" -#: musicxml2ly.py:1871 -msgid "set output filename to FILE" +#: musicxml2ly.py:2642 +msgid "do not convert exact vertical positions of rests" +msgstr "" + +#: musicxml2ly.py:2648 +msgid "do not convert the exact page layout and breaks" +msgstr "" + +#: musicxml2ly.py:2654 +msgid "do not convert beaming information, use lilypond's automatic beaming instead" +msgstr "" + +#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210 +#: main.cc:159 main.cc:171 +msgid "FILE" +msgstr "FILE" + +#: musicxml2ly.py:2662 +msgid "set output filename to FILE, stdout if -" +msgstr "" + +#: musicxml2ly.py:2668 +msgid "add midi-block to .ly file" msgstr "" -#: musicxml2ly.py:1929 +#. Translators, please translate this string as +#. "Report bugs in English via %s", +#. or if there is a LilyPond users list or forum in your language +#. "Report bugs in English via %s or in YOUR_LANG via URI" +#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259 +#: convert-ly.py:146 etf2ly.py:1218 main.cc:285 +#, fuzzy, c-format, python-format +msgid "Report bugs via %s" +msgstr "バグレポートは %s まで\n" + +#: musicxml2ly.py:2752 #, fuzzy, python-format msgid "unknown part in part-list: %s" -msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'" +msgstr "キーワード一覧の各項目:" -#: musicxml2ly.py:1985 +#: musicxml2ly.py:2814 +msgid "Input is compressed, extracting raw MusicXML data from stdin" +msgstr "" + +#: musicxml2ly.py:2827 #, python-format msgid "Input file %s is compressed, extracting raw MusicXML data" msgstr "" -#: musicxml2ly.py:2011 -#, python-format +#: musicxml2ly.py:2857 +#, fuzzy +msgid "Reading MusicXML from Standard input ..." +msgstr "標準入力からパスワードを読み込む\n" + +#: musicxml2ly.py:2859 +#, fuzzy, python-format msgid "Reading MusicXML from %s ..." -msgstr "" +msgstr "「%s」からオプションを読み出します\n" -#: musicxml2ly.py:2039 musicxml2ly.py:2053 +#: musicxml2ly.py:2892 #, fuzzy, python-format msgid "Output to `%s'" -msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ" +msgstr "%s へ出力リダイレクトされました\n" -#: musicxml2ly.py:2096 +#: musicxml2ly.py:2962 #, fuzzy, python-format msgid "Unable to find input file %s" -msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +msgstr "インクルードファイルが見つかりません: \"%s\"" -#: getopt-long.cc:140 -#, c-format -msgid "option `%s' requires an argument" -msgstr "¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹" +#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191 +#, python-format +msgid "Copyright (c) %s by" +msgstr "Copyright (c) %s by" -#: getopt-long.cc:144 -#, fuzzy, c-format -msgid "option `%s' does not allow an argument" -msgstr "¥ª¥×¥·¥ç¥ó `%s' ¤Ï°ú¿ô¤òµö²Ä¤·¤Þ¤»¤ó" +#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193 +msgid "Distributed under terms of the GNU General Public License." +msgstr "" -#: getopt-long.cc:148 -#, c-format -msgid "unrecognized option: `%s'" -msgstr "ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó: `%s'" +#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194 +msgid "It comes with NO WARRANTY." +msgstr "" -#: getopt-long.cc:154 -#, c-format -msgid "invalid argument `%s' to option `%s'" -msgstr "¥ª¥×¥·¥ç¥ó `%2$s' ¤ËÂФ¹¤ë̵¸ú¤Ê°ú¿ô `%1$s'" +#: midi2ly.py:90 +msgid "warning: " +msgstr "警告: " -#: warn.cc:68 grob.cc:566 input.cc:82 -#, fuzzy, c-format -msgid "programming error: %s" -msgstr "¥×¥í¥°¥é¥à¾å¤Î¥¨¥é¡¼: " +#: midi2ly.py:93 midi2ly.py:1121 +msgid "error: " +msgstr "エラー: " -#: warn.cc:69 input.cc:83 -#, fuzzy -msgid "continuing, cross fingers" -msgstr " (³¤±¤Þ¤¹ -- cross thumbs)" +#: midi2ly.py:94 +msgid "Exiting... " +msgstr "終了します..." -#: accidental-engraver.cc:250 -#, c-format -msgid "accidental typesetting list must begin with context-name: %s" +#: midi2ly.py:834 +msgid "found more than 5 voices on a staff, expect bad output" msgstr "" -#: accidental-engraver.cc:277 -#, c-format -msgid "ignoring unknown accidental rule: %s" -msgstr "" +#: midi2ly.py:1030 +#, fuzzy, python-format +msgid "%s output to `%s'..." +msgstr "%s へ出力リダイレクトされました\n" -#: accidental-engraver.cc:293 -#, c-format -msgid "pair or context-name expected for accidental rule, found %s" -msgstr "" +#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81 +#, fuzzy, python-format +msgid "%s [OPTION]... FILE" +msgstr "オプション・ファイル「%s」: %s\n" -#: accidental.cc:187 -#, c-format -msgid "Could not find glyph-name for alteration %s" -msgstr "" +#: midi2ly.py:1043 +#, fuzzy, python-format +msgid "Convert %s to LilyPond input.\n" +msgstr " " -#: accidental.cc:202 -msgid "natural alteration glyph not found" -msgstr "" +#: midi2ly.py:1048 +#, fuzzy +msgid "print absolute pitches" +msgstr "音程待ち" + +#: midi2ly.py:1050 midi2ly.py:1075 +msgid "DUR" +msgstr "DUR" -#: align-interface.cc:325 -msgid "tried to get a translation for something that is no child of mine" +#: midi2ly.py:1051 +msgid "quantise note durations on DUR" msgstr "" -#: all-font-metrics.cc:143 -#, fuzzy, c-format -msgid "cannot find font: `%s'" -msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +#: midi2ly.py:1054 +#, fuzzy +msgid "debug printing" +msgstr "印刷機能を利用不可にする" -#: apply-context-iterator.cc:31 -msgid "\\applycontext argument is not a procedure" -msgstr "" +#: midi2ly.py:1057 +#, fuzzy +msgid "print explicit durations" +msgstr " 非明示的メンバ\n" -#: auto-change-iterator.cc:63 change-iterator.cc:61 -#, c-format -msgid "cannot change, already in translator: %s" -msgstr "" +#: midi2ly.py:1062 +#, fuzzy +msgid "prepend FILE to output" +msgstr " -o, --output-file=FILE 指定したファイルに出力\n" -#: axis-group-engraver.cc:78 -msgid "Axis_group_engraver: vertical group already has a parent" -msgstr "" +#: midi2ly.py:1066 +#, fuzzy +msgid "set key: ALT=+sharps|-flats; MINOR=1" +msgstr "調を設定: ACC +シャープ/-フラット :1 短調" -#: axis-group-engraver.cc:79 -msgid "are there two Axis_group_engravers?" -msgstr "" +#: midi2ly.py:1067 +#, fuzzy +msgid "ALT[:MINOR]" +msgstr "Major/Minor \t\t\t%d/%d\n" -#: axis-group-engraver.cc:80 -msgid "removing this vertical group" -msgstr "" +#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209 +#, fuzzy +msgid "write output to FILE" +msgstr " -o, --output-file=FILE 指定したファイルに出力\n" -#: axis-group-interface.cc:524 -msgid "an outside-staff object should have a direction, defaulting to up" +#: midi2ly.py:1072 +#, fuzzy +msgid "preview of first 4 bars" +msgstr "スクロールバーを表示(_B)" + +#: midi2ly.py:1074 +msgid "quantise note starts on DUR" msgstr "" -#: bar-check-iterator.cc:73 -#, c-format -msgid "barcheck failed at: %s" -msgstr "¾®Àá¥Á¥§¥Ã¥¯¤¬¼ºÇÔ: %s" +#: midi2ly.py:1078 +#, fuzzy +msgid "use s instead of r for rests" +msgstr "グラデーションの代わりにパターンを輪郭に使う" -#: beam-engraver.cc:126 -msgid "already have a beam" -msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹" +#: midi2ly.py:1080 +#, fuzzy +msgid "DUR*NUM/DEN" +msgstr "書式: %s [p num] [-n] [パッチ]\n" -#: beam-engraver.cc:202 -msgid "unterminated beam" -msgstr "½ªÃ¼¤Î¤Ê¤¤³Ã" +#: midi2ly.py:1083 +msgid "allow tuplet durations DUR*NUM/DEN" +msgstr "" -#: beam-engraver.cc:244 chord-tremolo-engraver.cc:138 -msgid "stem must have Rhythmic structure" -msgstr "ÉäÈø¤Ï¥ê¥º¥à¹½Â¤¤ò»ý¤¿¤Í¤Ð¤Ê¤ê¤Þ¤»¤ó" +#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212 +#: main.cc:176 +msgid "show warranty and copyright" +msgstr "保証と著作権について表示する" -#: beam-engraver.cc:252 +#: midi2ly.py:1095 #, fuzzy -msgid "stem does not fit in beam" -msgstr "ÉäÈø¤¬³Ã¤ÎÃæ¤Ë¤ª¤µ¤Þ¤ê¤Þ¤»¤ó" - -#: beam-engraver.cc:253 -msgid "beam was started here" -msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿" +msgid "treat every text as a lyric" +msgstr "-a --text すべてテキストとして処理。" -#: beam-quanting.cc:307 +#: midi2ly.py:1098 #, fuzzy -msgid "no feasible beam position" -msgstr "ÉÔŬÀڤʲþ¹Ô¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿" +msgid "Examples" +msgstr "例:" -#: beam.cc:160 -msgid "removing beam with no stems" +#: midi2ly.py:1122 +msgid "no files specified on command line." msgstr "" -#: beam.cc:1069 -msgid "no viable initial configuration found: may not find good beam slope" +#: abc2ly.py:1375 +#, python-format +msgid "" +"abc2ly converts ABC music files (see\n" +"%s) to LilyPond input.\n" msgstr "" -#: break-alignment-interface.cc:195 -#, c-format -msgid "No spacing entry from %s to `%s'" +#: abc2ly.py:1391 +msgid "be strict about success" msgstr "" -#: change-iterator.cc:23 -#, fuzzy, c-format -msgid "cannot change `%s' to `%s'" -msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó" +#: abc2ly.py:1393 +msgid "preserve ABC's notion of beams" +msgstr "" -#. FIXME: constant error message. -#: change-iterator.cc:82 -#, fuzzy -msgid "cannot find context to switch to" -msgstr "`%s' ¥³¥ó¥Æ¥­¥¹¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" - -#. We could change the current translator's id, but that would make -#. errors hard to catch. -#. -#. last->translator_id_string () = get_change -#. ()->change_to_id_string (); -#: change-iterator.cc:91 -#, c-format -msgid "not changing to same context type: %s" +#: lilypond-book.py:80 +msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." msgstr "" -#. FIXME: uncomprehensable message -#: change-iterator.cc:95 -msgid "none of these in my family" -msgstr "¥Õ¥¡¥ß¥ê¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó" +#: lilypond-book.py:82 convert-ly.py:48 +msgid "Examples:" +msgstr "例:" -#: chord-tremolo-engraver.cc:88 +#: lilypond-book.py:87 #, fuzzy -msgid "No tremolo to end" -msgstr "ËöÈø¤Ø¤Î¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤»¤ó" +msgid "BOOK" +msgstr "LDIF アドレス帳" -#: chord-tremolo-engraver.cc:110 -msgid "unterminated chord tremolo" -msgstr "½ªÃ¼¤Î¤Ê¤¤¥³¡¼¥É¥È¥ì¥â¥í" +#: lilypond-book.py:95 +#, python-format +msgid "Exiting (%d)..." +msgstr "終了します (%d)..." -#: chord-tremolo-iterator.cc:35 -#, c-format -msgid "expect 2 elements for chord tremolo, found %d" -msgstr "" +#: lilypond-book.py:128 +#, fuzzy +msgid "FILTER" +msgstr " フィルタ " -#: clef.cc:54 -#, c-format -msgid "clef `%s' not found" +#: lilypond-book.py:131 +msgid "pipe snippets through FILTER [default: `convert-ly -n -']" msgstr "" -#: cluster.cc:110 -#, fuzzy, c-format -msgid "unknown cluster style `%s'" -msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)" - -#: cluster.cc:147 -msgid "junking empty cluster" +#: lilypond-book.py:135 +msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)" msgstr "" -#: coherent-ligature-engraver.cc:100 -#, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" -msgstr "" +#: lilypond-book.py:136 +#, fuzzy +msgid "FORMAT" +msgstr "FORMAT" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:167 constrained-breaking.cc:184 +#: lilypond-book.py:143 #, fuzzy -msgid "cannot find line breaking that satisfies constraints" -msgstr "¤½¤Î²ò·è¤ÏÀ©¸Â¤òËþ¤¿¤·¤Þ¤»¤ó" +msgid "add DIR to include path" +msgstr "DIR を検索パスに追加" -#: context-def.cc:130 -#, fuzzy, c-format -msgid "program has no such type: `%s'" -msgstr "¥×¥í¥°¥é¥à¤Ë¤Ï¤½¤ÎÍͤʥ¿¥¤¥×¤¬¤¢¤ê¤Þ¤»¤ó" +#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170 +#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158 +msgid "DIR" +msgstr "DIR" -#: context-property.cc:30 -msgid "need symbol arguments for \\override and \\revert" +#: lilypond-book.py:149 +msgid "format Texinfo output so that Info will look for images of music in DIR" msgstr "" -#: context.cc:144 -#, fuzzy, c-format -msgid "cannot find or create new `%s'" -msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'" - -#: context.cc:206 -#, fuzzy, c-format -msgid "cannot find or create `%s' called `%s'" -msgstr "`%2$s' ¤Ë¸Æ¤Ð¤ì¤¿ `%1$s' ¤¬¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó" +#: lilypond-book.py:156 +#, fuzzy +msgid "PAD" +msgstr "PAD" -#: context.cc:268 -#, c-format -msgid "Invalid CreateContext event: Cannot create %s context" +#: lilypond-book.py:158 +msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)" msgstr "" -#: context.cc:380 -#, fuzzy, c-format -msgid "cannot find or create: `%s'" -msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'" - -#: custos.cc:77 -#, c-format -msgid "custos `%s' not found" +#: lilypond-book.py:163 +msgid "Print lilypond log messages according to LOGLEVEL" msgstr "" -#: dispatcher.cc:71 -msgid "Event class should be a symbol" +#: lilypond-book.py:169 +msgid "write lily-XXX files to DIR, link into --output dir" msgstr "" -#: dispatcher.cc:78 -#, c-format -msgid "Unknown event class %s" +#: lilypond-book.py:174 +msgid "Load the additional python PACKAGE (containing e.g. a custom output format)" msgstr "" -#: dots.cc:37 -#, c-format -msgid "dot `%s' not found" -msgstr "" +#: lilypond-book.py:175 +#, fuzzy +msgid "PACKAGE" +msgstr "パッケージ" -#: dynamic-engraver.cc:192 +#: lilypond-book.py:187 #, fuzzy -msgid "cannot find start of (de)crescendo" -msgstr "(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgid "write output to DIR" +msgstr " -o, --output-file=FILE 指定したファイルに出力\n" -#: dynamic-engraver.cc:201 -msgid "already have a decrescendo" -msgstr "¥Ç¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬´û¤Ë¤¢¤ê¤Þ¤¹" +#: lilypond-book.py:192 +#, fuzzy +msgid "COMMAND" +msgstr "COMMAND" -#: dynamic-engraver.cc:203 -msgid "already have a crescendo" -msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬´û¤Ë¤¢¤ê¤Þ¤¹" +#: lilypond-book.py:193 +msgid "process ly_files using COMMAND FILE..." +msgstr "" -#: dynamic-engraver.cc:206 +#: lilypond-book.py:198 #, fuzzy -msgid "cresc starts here" -msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿" +msgid "Redirect the lilypond output" +msgstr "%s: 制限されています: 出力をリダイレクト出来ません" -#: dynamic-engraver.cc:335 -msgid "unterminated (de)crescendo" -msgstr "½ªÃ¼¤Î¤Ê¤¤(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É" +#: lilypond-book.py:202 +msgid "Compile snippets in safe mode" +msgstr "" -#: extender-engraver.cc:142 extender-engraver.cc:151 -msgid "unterminated extender" -msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À" +#: lilypond-book.py:208 +msgid "do not fail if no lilypond output is found" +msgstr "" -#: font-config.cc:28 -msgid "Initializing FontConfig..." +#: lilypond-book.py:214 +msgid "do not fail if no PNG images are found for EPS files" msgstr "" -#: font-config.cc:44 -#, c-format -msgid "Rebuilding FontConfig cache %s, this may take a while..." +#: lilypond-book.py:220 +msgid "write snippet output files with the same base name as their source file" msgstr "" -#: font-config.cc:57 -#, c-format -msgid "failed adding font directory: %s" +#: lilypond-book.py:240 +msgid "" +"run executable PROG instead of latex, or in\n" +"case --pdf option is set instead of pdflatex" msgstr "" -#: font-config.cc:59 -#, c-format -msgid "adding font directory: %s" +#: lilypond-book.py:242 lilypond-book.py:247 +#, fuzzy +msgid "PROG" +msgstr "PROG" + +#: lilypond-book.py:246 +msgid "run executable PROG instead of texi2pdf" msgstr "" -#: general-scheme.cc:201 -msgid "infinity or NaN encountered while converting Real number" +#: lilypond-book.py:253 +msgid "create PDF files for use with PDFTeX" msgstr "" -#: general-scheme.cc:202 -msgid "setting to zero" +#: lilypond-book.py:456 +#, fuzzy +msgid "Writing snippets..." +msgstr "音楽スニペット" + +#: lilypond-book.py:461 +msgid "Processing..." +msgstr "処理中..." + +#: lilypond-book.py:466 +msgid "All snippets are up to date..." msgstr "" -#: general-scheme.cc:421 output-ps.scm:61 -msgid "Found infinity or nan in output. Substituting 0.0" +#: lilypond-book.py:485 +#, fuzzy, python-format +msgid "cannot determine format for: %s" +msgstr "未サポートのWAVフォーマット %d: %s\n" + +#: lilypond-book.py:494 +#, python-format +msgid "%s is up to date." +msgstr "%s は更新済みです" + +#: lilypond-book.py:507 +#, python-format +msgid "Writing `%s'..." +msgstr "`%s' 書き込み中..." + +#: lilypond-book.py:568 +msgid "Output would overwrite input file; use --output." msgstr "" -#: glissando-engraver.cc:94 -#, fuzzy -msgid "unterminated glissando" -msgstr "½ªÃ¼¤Î¤Ê¤¤³Ã" +#: lilypond-book.py:572 +#, python-format +msgid "Reading %s..." +msgstr "%s 読み出し中..." -#: global-context-scheme.cc:85 global-context-scheme.cc:103 +#: lilypond-book.py:579 #, fuzzy -msgid "no music found in score" -msgstr "³ÚÉè¤Ë¤Ï³Ú¶Ê¤¬É¬ÍפǤ¹" +msgid "Dissecting..." +msgstr "処理中..." -#: global-context-scheme.cc:93 -#, fuzzy -msgid "Interpreting music... " -msgstr "³Ú¶Ê¤Î²ò¼áÃæ..." +#: lilypond-book.py:590 +#, python-format +msgid "Compiling %s..." +msgstr "%s をコンパイル中..." -#: global-context-scheme.cc:116 -#, c-format -msgid "elapsed time: %.2f seconds" -msgstr "·Ð²á»þ´Ö: %.2f ÉÃ" +#: lilypond-book.py:598 +#, fuzzy, python-format +msgid "Processing include: %s" +msgstr "ウィンドウ飾りも含める" -#: gregorian-ligature-engraver.cc:59 -#, c-format -msgid "\\%s ignored" -msgstr "" +#: lilypond-book.py:609 +#, python-format +msgid "Removing `%s'" +msgstr "'%s' を削除しています" -#: gregorian-ligature-engraver.cc:64 -#, c-format -msgid "implied \\%s added" +#: lilypond-book.py:676 +#, fuzzy, python-format +msgid "Setting LilyPond's loglevel to %s" +msgstr "和音にLilyPond 言語を追加" + +#: lilypond-book.py:680 +#, python-format +msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)" msgstr "" -#. ligature may not start with 2nd head of pes or flexa -#: gregorian-ligature-engraver.cc:212 -msgid "cannot apply `\\~' on first head of ligature" +#: lilypond-book.py:683 +msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting" msgstr "" -#. (pitch == prev_pitch) -#: gregorian-ligature-engraver.cc:224 -msgid "cannot apply `\\~' on heads with identical pitch" +#: convert-ly.py:46 +msgid "" +"Update LilyPond input to newer version. By default, update from the\n" +"version taken from the \\version command, to the current LilyPond version." msgstr "" -#: grob-interface.cc:57 -#, fuzzy, c-format -msgid "Unknown interface `%s'" -msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'" +#: convert-ly.py:96 convert-ly.py:137 +#, fuzzy +msgid "VERSION" +msgstr "%s ver.%s" -#: grob-interface.cc:68 -#, c-format -msgid "Grob `%s' has no interface for property `%s'" +#: convert-ly.py:98 +msgid "start from VERSION [default: \\version found in file]" msgstr "" -#: grob-property.cc:34 -#, c-format -msgid "%d: %s" -msgstr "" +#: convert-ly.py:101 +#, fuzzy +msgid "edit in place" +msgstr "ファイルをテキストエディタで編集する" -#: grob-property.cc:173 -#, c-format -msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" +#: convert-ly.py:113 +msgid "do not add \\version command if missing" msgstr "" -#: grob.cc:251 -msgid "Infinity or NaN encountered" +#: convert-ly.py:119 +#, fuzzy, python-format +msgid "force updating \\version number to %s" +msgstr "バージョン番号を表示" + +#: convert-ly.py:125 +msgid "only update \\version number if file is modified" msgstr "" -#: hairpin.cc:187 -#, fuzzy -msgid "decrescendo too small" -msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É" +#: convert-ly.py:131 +#, fuzzy, python-format +msgid "show rules [default: -f 0, -t %s]" +msgstr "自動" -#: horizontal-bracket-engraver.cc:59 -#, fuzzy -msgid "do not have that many brackets" -msgstr "¤½¤ó¤Ê¤ËÂô»³¤Î¥ª¥¯¥¿¡¼¥Ö (%s) ¤ò»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤" +#: convert-ly.py:136 +#, fuzzy, python-format +msgid "convert to VERSION [default: %s]" +msgstr "既定の RGB カラープロファイルに変換" -#: horizontal-bracket-engraver.cc:68 +#: convert-ly.py:186 #, fuzzy -msgid "conflicting note group events" -msgstr "Çï»Ò¤ÎÍ׵᤬¶¥¹ç¤·¤Þ¤¹" +msgid "Applying conversion: " +msgstr "変換対象:\n" -#: hyphen-engraver.cc:93 +#: convert-ly.py:202 #, fuzzy -msgid "removing unterminated hyphen" -msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó" +msgid "Error while converting" +msgstr "\"%s\" を読み込み中にエラーが発生しました" -#: hyphen-engraver.cc:107 -#, fuzzy -msgid "unterminated hyphen; removing" -msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó" +#: convert-ly.py:204 +msgid "Stopping at last successful rule" +msgstr "" -#: includable-lexer.cc:53 lily-guile.cc:76 lily-parser-scheme.cc:117 -#, fuzzy, c-format -msgid "cannot find file: `%s'" -msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +#: convert-ly.py:231 +#, python-format +msgid "Processing `%s'... " +msgstr "`%s' を処理しています..." -#: includable-lexer.cc:55 lily-parser-scheme.cc:108 -#, c-format -msgid "(search path: `%s')" -msgstr "(¸¡º÷¥Ñ¥¹: `%s')" +#: convert-ly.py:338 +#, python-format +msgid "%s: Unable to open file" +msgstr "'%s: ファイルをオープンできません" -#: input.cc:112 source-file.cc:168 source-file.cc:183 -msgid "position unknown" -msgstr "°ÌÃÖ¤¬È½¤ê¤Þ¤»¤ó" +#: convert-ly.py:345 +#, fuzzy, python-format +msgid "%s: Unable to determine version. Skipping" +msgstr "ローカルネームを決定することができません" -#: key-signature-interface.cc:74 -#, c-format -msgid "No glyph found for alteration: %s" +#: convert-ly.py:350 +#, python-format +msgid "" +"%s: Invalid version string `%s' \n" +"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'" msgstr "" -#: key-signature-interface.cc:84 -msgid "alteration not found" +#: etf2ly.py:1197 +#, fuzzy, python-format +msgid "%s [OPTION]... ETF-FILE" +msgstr "使用法: %s [オプション] [ファイル]...\n" + +#: etf2ly.py:1198 +msgid "" +"Enigma Transport Format is a format used by Coda Music Technology's\n" +"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n" msgstr "" -#: ligature-bracket-engraver.cc:62 ligature-engraver.cc:93 +#: website_post.py:123 #, fuzzy -msgid "cannot find start of ligature" -msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgid "English" +msgstr "英語" -#: ligature-bracket-engraver.cc:75 ligature-engraver.cc:120 +#: website_post.py:126 #, fuzzy -msgid "already have a ligature" -msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹" +msgid "Other languages" +msgstr "多言語" -#: ligature-engraver.cc:98 -msgid "no right bound" -msgstr "" +#: warn.cc:56 +#, fuzzy, c-format +msgid "Log level set to %d\n" +msgstr "デバッグレベルを <レベル> に設定します。" -#: ligature-engraver.cc:129 -msgid "no left bound" +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" msgstr "" -#: ligature-engraver.cc:173 -#, fuzzy -msgid "unterminated ligature" -msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼" +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 +#, fuzzy, c-format +msgid "%d expected warning(s) not encountered: " +msgstr "警告: $PATH が設定されていません" -#: ligature-engraver.cc:202 -msgid "ignoring rest: ligature may not contain rest" -msgstr "" +#: warn.cc:183 +#, c-format +msgid "fatal error: %s" +msgstr "致命的なエラー: %s" + +#: warn.cc:192 +#, fuzzy, c-format +msgid "suppressed programming error: %s" +msgstr "未知のシステムエラー" + +#: warn.cc:197 +#, fuzzy, c-format +msgid "programming error: %s" +msgstr "プログラミングエラー" -#: ligature-engraver.cc:203 +#: warn.cc:198 #, fuzzy -msgid "ligature was started here" -msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿" +msgid "continuing, cross fingers" +msgstr "クロスデバイスリンク" -#: lily-guile.cc:78 -#, c-format -msgid "(load path: `%s')" -msgstr "(ÆÉ¹þ¥Ñ¥¹: `%s')" +#: warn.cc:207 +#, fuzzy, c-format +msgid "suppressed error: %s" +msgstr "%s サブプロセス入出力エラー" -#: lily-guile.cc:438 +#: warn.cc:219 +#, fuzzy, c-format +msgid "suppressed warning: %s" +msgstr "警告: %sは%sより優先\n" + +#: getopt-long.cc:153 #, c-format -msgid "cannot find property type-check for `%s' (%s)." -msgstr "" +msgid "option `%s' requires an argument" +msgstr "オプション `%s' には引数が必要です" -#: lily-guile.cc:441 -msgid "perhaps a typing error?" -msgstr "" +#: getopt-long.cc:157 +#, fuzzy, c-format +msgid "option `%s' does not allow an argument" +msgstr "オプション %s には '%s' ではなく整数の引数が必要です" -#: lily-guile.cc:448 -msgid "doing assignment anyway" -msgstr "" +#: getopt-long.cc:161 +#, c-format +msgid "unrecognized option: `%s'" +msgstr "認識できないオプション: `%s'" -#: lily-guile.cc:460 +#: getopt-long.cc:167 #, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgid "invalid argument `%s' to option `%s'" +msgstr "オプション `%2$s' に対する無効な引数 `%1$s'" + +#: flag.cc:110 +#, fuzzy, c-format +msgid "flag `%s' not found" +msgstr "ブラシ '%s' が見つかりません。" + +#: flag.cc:130 +#, fuzzy, c-format +msgid "flag stroke `%s' not found" +msgstr " 検索文字列が見付かりません " + +#: parse-scm.cc:112 +msgid "GUILE signaled an error for the expression beginning here" msgstr "" -#: lily-lexer.cc:251 +#: lily-lexer.cc:255 msgid "include files are not allowed in safe mode" msgstr "" -#: lily-lexer.cc:270 +#: lily-lexer.cc:282 #, fuzzy, c-format msgid "identifier name is a keyword: `%s'" -msgstr "¼±ÊÌ»Ò̾¤Ï¥­¡¼¥ï¡¼¥É¤Ç¤¹: `%s'" +msgstr "`%s' という名前は既に使用されています!" -#: lily-lexer.cc:285 +#: lily-lexer.cc:303 lily-lexer.cc:316 #, c-format -msgid "error at EOF: %s" -msgstr "EOF ¤Î¤È¤³¤í¤Ç¥¨¥é¡¼: %s" +msgid "%s:EOF" +msgstr "%s:EOF" -#: lily-parser-scheme.cc:30 -#, fuzzy, c-format -msgid "deprecated function called: %s" -msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +#, fuzzy +msgid "cannot find line breaking that satisfies constraints" +msgstr "その解決は制限を満たしません" -#: lily-parser-scheme.cc:89 -#, c-format -msgid "Changing working directory to: `%s'" +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" msgstr "" -#: lily-parser-scheme.cc:107 -#, fuzzy, c-format -msgid "cannot find init file: `%s'" -msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +#: horizontal-bracket-engraver.cc:62 +#, fuzzy +msgid "do not have that many brackets" +msgstr "マッチしないパラグラフのみ表示します。" -#: lily-parser-scheme.cc:126 -#, fuzzy, c-format -msgid "Processing `%s'" -msgstr "½èÍýÃæ..." +#: horizontal-bracket-engraver.cc:71 +#, fuzzy +msgid "conflicting note group events" +msgstr "拍子の要求が競合します" -#: lily-parser.cc:99 -msgid "Parsing..." -msgstr "¹½Ê¸²òÀÏÃæ..." +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" +msgstr "" -#: lily-parser.cc:127 +#: new-fingering-engraver.cc:265 #, fuzzy -msgid "braces do not match" -msgstr "¥Ö¥ì¡¼¥¹¤¬°ìÃפ·¤Þ¤»¤ó" +msgid "no placement found for fingerings" +msgstr "“%s”用の失効鍵が見つかりません\n" -#: lyric-combine-music-iterator.cc:327 -#, fuzzy, c-format -msgid "cannot find Voice `%s'" -msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +#: new-fingering-engraver.cc:266 +#, fuzzy +msgid "placing below" +msgstr "ラインより下のピクセル数" -#: lyric-engraver.cc:158 -msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." -msgstr "" - -#: main.cc:100 -#, fuzzy, c-format -msgid "" -"This program is free software. It is covered by the GNU General Public\n" -"License and you are welcome to change it and/or distribute copies of it\n" -"under certain conditions. Invoke as `%s --warranty' for more\n" -"information.\n" -msgstr "" -"This is free software. It is covered by the GNU General Public License,\n" -"and you are welcome to change it and/or distribute copies of it under\n" -"certain conditions. Invoke as `%s --warranty' for more information.\n" -"\n" -"-- »²¹ÍÌõ\n" -"¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤Ë´ð¤Å¤­¡¢Æ±°ì¾ò·ï¤Ç\n" -"¤³¤ì¤ò²þÊѤ·¤¿¤ê¡¢Ê£À½¤òÇÛÉÛ¤·¤¿¤ê¤¹¤ë»ö¤Ï´¿·Þ¤µ¤ì¤Þ¤¹¡£\n" -"`--warranty' ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤¹¤ë¤È¡¢¤è¤ê¾ÜºÙ¤Ê¾ðÊ󤬯À¤é¤ì¤Þ¤¹¡£\n" +#: translator-group.cc:188 +#, c-format +msgid "cannot find: `%s'" +msgstr "見つかりません: `%s'" -#: main.cc:106 +#: glissando-engraver.cc:158 #, fuzzy -msgid "" -" This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" -"\n" -" This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"General Public License for more details.\n" -"\n" -" You should have received a copy of the\n" -"GNU General Public License along with this program; if not, write to\n" -"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" -"Boston, MA 02111-1307, USA.\n" -msgstr "" -" This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" -"\n" -" This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"General Public License for more details.\n" -"\n" -" You should have received a copy (refer to the file COPYING) of the\n" -"GNU General Public License along with this program; if not, write to\n" -"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n" -"USA.\n" -"\n" -"-- »²¹ÍÌõ\n" -" ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï Free Software Foundation\n" -"¤¬¸øÉ½¤·¤¿ GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¾ò¹à¤Ë´ð¤Å¤¤¤Æ¡¢¤³¤Î¥×¥í¥°¥é\n" -"¥à¤òºÆÈÒÉÛ¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£\n" -"\n" -"¤³¤Î¥×¥í¥°¥é¥à¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉÛ¤ËÅö¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ¹ç\n" -"À­¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤâ´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢\n" -"GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¤ªÆÉ¤ß²¼¤µ¤¤¡£\n" -"\n" -"¤¢¤Ê¤¿¤Ï¡¢¤³¤Î¥×¥í¥°¥é¥à¤È°ì½ï¤Ë GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë¤Ï¤º\n" -"¤Ç¤¹(COPYING ¥Õ¥¡¥¤¥ë¤ò»²¾È)¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢Free Software Foundation,\n" -"Inc., 675 Mass Ave, Cambridge, MA 02139, USA ¤Ë¼ê»æ¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£\n" - -#: main.cc:137 -msgid "SYM[=VAL]" -msgstr "" +msgid "unterminated glissando" +msgstr "「s」コマンドが終了していません" -#: main.cc:138 -msgid "" -"set Scheme option SYM to VAL (default: #t).\n" -"Use -dhelp for help." -msgstr "" +#: midi-item.cc:89 +#, fuzzy, c-format +msgid "no such MIDI instrument: `%s'" +msgstr "そのユーザーIDはありません。\n" -#: main.cc:141 -msgid "EXPR" -msgstr "" +#: open-type-font.cc:44 +#, c-format +msgid "cannot allocate %lu bytes" +msgstr "%lu バイトを割当できません" -#: main.cc:141 -#, fuzzy -msgid "evaluate scheme code" -msgstr "°ÂÁ´¥â¡¼¥É¤Ç¤Ï Scheme ¤Îɾ²Á¤ò¤Ç¤­¤Þ¤»¤ó" +#: open-type-font.cc:48 +#, fuzzy, c-format +msgid "cannot load font table: %s" +msgstr "実行ファイルを動的にロードできません" -#. Bug in option parser: --output =foe is taken as an abbreviation -#. for --output-format. -#: main.cc:144 -msgid "FORMATs" -msgstr "" +#: open-type-font.cc:53 +#, c-format +msgid "FreeType error: %s" +msgstr "FreeType エラー: %s" -#: main.cc:144 -msgid "dump FORMAT,... Also as separate options:" -msgstr "" +#: open-type-font.cc:110 +#, c-format +msgid "unsupported font format: %s" +msgstr "非対応のフォント形式: %s" -#: main.cc:145 -msgid "generate DVI (tex backend only)" -msgstr "" +#: open-type-font.cc:112 +#, fuzzy, c-format +msgid "error reading font file %s: %s" +msgstr "ファイルデスクリプタ %1 (%2)を読み込み中にエラー" -#: main.cc:146 -msgid "generate PDF (default)" +#: open-type-font.cc:187 +#, c-format +msgid "FT_Get_Glyph_Name () Freetype error: %s" msgstr "" -#: main.cc:147 -msgid "generate PNG" +#: open-type-font.cc:318 pango-font.cc:189 +#, c-format +msgid "FT_Get_Glyph_Name () error: %s" msgstr "" -#: main.cc:148 +#: note-heads-engraver.cc:76 #, fuzzy -msgid "generate PostScript" -msgstr "À©¸Â¤ò´ËÏÂ" +msgid "NoteEvent without pitch" +msgstr "'~%c' が '~%c' に一致していません." -#: main.cc:149 -msgid "generate TeX (tex backend only)" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" msgstr "" -#: main.cc:151 +#: hyphen-engraver.cc:104 #, fuzzy -msgid "FIELD" -msgstr "FILE" - -#: main.cc:151 -msgid "" -"dump header field FIELD to file\n" -"named BASENAME.FIELD" -msgstr "" - -#: main.cc:153 -msgid "add DIR to search path" -msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ" +msgid "removing unterminated hyphen" +msgstr "%s:%d: 警告: 文字列に終端がありません" -#: main.cc:154 -msgid "use FILE as init file" -msgstr "FILE ¤ò½é´ü²½¥Õ¥¡¥¤¥ë¤È¤·¤Æ»ÈÍÑ" +#: hyphen-engraver.cc:118 +#, fuzzy +msgid "unterminated hyphen; removing" +msgstr "リモートファイル %s を削除中に %s " -#: main.cc:156 -msgid "USER, GROUP, JAIL, DIR" +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" msgstr "" -#: main.cc:156 -msgid "" -"chroot to JAIL, become USER:GROUP\n" -"and cd into DIR" +#: output-def.cc:242 +msgid "systems run off the page due to improper paper settings, setting default values" msgstr "" -#: main.cc:159 -msgid "write output to FILE (suffix will be added)" +#: accidental.cc:200 +#, c-format +msgid "Could not find glyph-name for alteration %s" msgstr "" -#: main.cc:160 -msgid "relocate using directory of lilypond program" +#: accidental.cc:215 +msgid "natural alteration glyph not found" msgstr "" -#: main.cc:203 +#: lyric-combine-music-iterator.cc:337 #, fuzzy, c-format -msgid "" -"Copyright (c) %s by\n" -"%s and others." -msgstr "Copyright (c) %s by" +msgid "cannot find Voice `%s'" +msgstr "ディレクトリ %s が見つかりません\n" -#. No version number or newline here. It confuses help2man. -#: main.cc:230 +#: context.cc:148 #, fuzzy, c-format -msgid "Usage: %s [OPTION]... FILE..." -msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]..." +msgid "cannot find or create new `%s'" +msgstr "%s: 新しいデフォルトファイルを作れません\n" -#: main.cc:232 +#: context.cc:206 #, fuzzy, c-format -msgid "Typeset music and/or produce MIDI from FILE." -msgstr "¥Õ¥¡¥¤¥ë¤Î³Ú¶Ê¤òÁÈÈǤ·¤¿¤ê¡¢MIDI ±éÁÕ¤·¤¿¤ê¤¹¤ë" +msgid "cannot find or create `%s' called `%s'" +msgstr "`%2$s' に呼ばれた `%1$s' が見つからないか作れません" -#: main.cc:234 -#, c-format -msgid "LilyPond produces beautiful music notation." -msgstr "" +#: context.cc:399 +#, fuzzy, c-format +msgid "cannot find or create: `%s'" +msgstr "警告: cat ディレクトリ %s を作成できません" -#: main.cc:236 -#, c-format -msgid "For more information, see %s" +#: dispatcher.cc:82 +msgid "Event class should be a symbol" msgstr "" -#: main.cc:238 -#, c-format -msgid "Options:" -msgstr "¥ª¥×¥·¥ç¥ó:" +#: dispatcher.cc:89 +#, fuzzy, c-format +msgid "Unknown event class %s" +msgstr "未知の署名クラスです" -#: main.cc:242 +#: dispatcher.cc:171 #, fuzzy, c-format -msgid "Report bugs via %s" -msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø" +msgid "Junking event: %s" +msgstr "イベントを横取り(_G)" -#: main.cc:288 +#: auto-change-iterator.cc:74 change-iterator.cc:72 #, c-format -msgid "expected %d arguments with jail, found: %u" +msgid "cannot change, already in translator: %s" msgstr "" -#: main.cc:302 -#, fuzzy, c-format -msgid "no such user: %s" -msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'" +#: tie-engraver.cc:117 +#, fuzzy +msgid "unterminated tie" +msgstr "タイの切替え" -#: main.cc:304 -#, c-format -msgid "cannot get user id from user name: %s: %s" -msgstr "" +#: tie-engraver.cc:348 +msgid "lonely tie" +msgstr "一つだけのタイ" -#: main.cc:319 -#, fuzzy, c-format -msgid "no such group: %s" -msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'" +#: dynamic-engraver.cc:193 +#, fuzzy +msgid "cannot find start of (de)crescendo" +msgstr "(デ)クレッシェンドの始点が見つかりません" -#: main.cc:321 -#, c-format -msgid "cannot get group id from group name: %s: %s" -msgstr "" +#: dynamic-engraver.cc:200 +msgid "already have a decrescendo" +msgstr "デクレッシェンドが既にあります" -#: main.cc:329 -#, c-format -msgid "cannot chroot to: %s: %s" -msgstr "" +#: dynamic-engraver.cc:202 +msgid "already have a crescendo" +msgstr "クレッシェンドが既にあります" -#: main.cc:336 -#, fuzzy, c-format -msgid "cannot change group id to: %d: %s" -msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó" +#: dynamic-engraver.cc:205 +#, fuzzy +msgid "cresc starts here" +msgstr "ここにリクエストをどうぞ" -#: main.cc:342 -#, fuzzy, c-format -msgid "cannot change user id to: %d: %s" -msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó" +#: dynamic-engraver.cc:333 +msgid "unterminated (de)crescendo" +msgstr "終端のない(デ)クレッシェンド" -#: main.cc:348 -#, c-format -msgid "cannot change working directory to: %s: %s" -msgstr "" +#: paper-score.cc:122 minimal-page-breaking.cc:40 +#, fuzzy +msgid "Calculating line breaks..." +msgstr "自発的休憩" -#: main.cc:594 -#, c-format -msgid "exception caught: %s" -msgstr "" +#: paper-score.cc:134 +#, fuzzy, c-format +msgid "Element count %d (spanners %d) " +msgstr "ストリップのデータ量" -#. FIXME: constant error message. -#: mark-engraver.cc:129 -msgid "rehearsalMark must have integer value" -msgstr "" +#: paper-score.cc:138 +#, fuzzy +msgid "Preprocessing graphical objects..." +msgstr "オブジェクトが多すぎます" -#: mark-engraver.cc:135 -msgid "mark label must be a markup object" -msgstr "" +#: paper-score.cc:162 optimal-page-breaking.cc:208 +#: page-turn-page-breaking.cc:248 +#, fuzzy +msgid "Drawing systems..." +msgstr "KIllustrator 絵画" -#: mensural-ligature-engraver.cc:85 +#: mensural-ligature-engraver.cc:96 msgid "ligature with less than 2 heads -> skipping" msgstr "" -#: mensural-ligature-engraver.cc:112 +#: mensural-ligature-engraver.cc:123 msgid "cannot determine pitch of ligature primitive -> skipping" msgstr "" -#: mensural-ligature-engraver.cc:126 +#: mensural-ligature-engraver.cc:137 msgid "single note ligature - skipping" msgstr "" -#: mensural-ligature-engraver.cc:138 +#: mensural-ligature-engraver.cc:148 msgid "prime interval within ligature -> skipping" msgstr "" -#: mensural-ligature-engraver.cc:150 +#: mensural-ligature-engraver.cc:159 msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" msgstr "" -#: mensural-ligature-engraver.cc:198 +#: mensural-ligature-engraver.cc:202 msgid "semibrevis must be followed by another one -> skipping" msgstr "" -#: mensural-ligature-engraver.cc:209 +#: mensural-ligature-engraver.cc:212 msgid "" "semibreves can only appear at the beginning of a ligature,\n" "and there may be only zero or two of them" msgstr "" -#: mensural-ligature-engraver.cc:236 +#: mensural-ligature-engraver.cc:232 msgid "" "invalid ligatura ending:\n" "when the last note is a descending brevis,\n" @@ -1771,849 +1903,1750 @@ msgid "" "or the ligatura must be LB or SSB" msgstr "" -#: mensural-ligature-engraver.cc:356 +#: mensural-ligature-engraver.cc:387 msgid "unexpected case fall-through" msgstr "" -#: mensural-ligature.cc:141 -msgid "Mensural_ligature: unexpected case fall-through" -msgstr "" - -#: mensural-ligature.cc:192 -msgid "Mensural_ligature: (join_right == 0)" -msgstr "" - -#: midi-item.cc:81 +#: piano-pedal-engraver.cc:279 #, fuzzy, c-format -msgid "no such MIDI instrument: `%s'" -msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'" +msgid "expect 3 strings for piano pedals, found: %ld" +msgstr "ピアノペダルの始点が見つかりません: `%s'" -#: midi-stream.cc:28 +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 +#: piano-pedal-performer.cc:104 #, fuzzy, c-format -msgid "cannot open for write: %s: %s" -msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'" +msgid "cannot find start of piano pedal: `%s'" +msgstr "ピアノペダルの始点が見つかりません: `%s'" -#: midi-stream.cc:44 +#: piano-pedal-engraver.cc:340 #, fuzzy, c-format -msgid "cannot write to file: `%s'" -msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'" +msgid "cannot find start of piano pedal bracket: `%s'" +msgstr "ピアノペダルの始点が見つかりません: `%s'" -#: minimal-page-breaking.cc:42 -msgid "Computing page breaks..." -msgstr "" +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" +msgstr "位置が判りません" -#: music-iterator.cc:171 -msgid "Sending non-event to context" -msgstr "" +#: stem.cc:128 +#, fuzzy +msgid "weird stem size, check for narrow beams" +msgstr "変な符尾のサイズ -- 細い鈎のチェックをして下さい" + +#: relative-octave-check.cc:49 +#, fuzzy +msgid "Failed octave check, got: " +msgstr "シンボリックリンク %s のチェックに失敗しました: %s" -#: music.cc:140 +#: translator-ctors.cc:65 #, c-format -msgid "octave check failed; expected \"%s\", found: \"%s\"" -msgstr "" +msgid "unknown translator: `%s'" +msgstr "判らないトランスレータ: `%s'" -#: music.cc:203 -#, fuzzy, c-format -msgid "transposition by %s makes alteration larger than double" -msgstr "%s ¤ÎÊÑÄ´¤Ë¤è¤Ã¤Æ¡¢Æó¤Ä¤òͤ¨¤ëÇÉÀ¸²»¤¬ºî¤é¤ì¤Þ¤·¤¿" +#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 +#, fuzzy +msgid "cannot find start of ligature" +msgstr "'%s' の URL が見つかりません" -#: new-fingering-engraver.cc:96 -msgid "cannot add text scripts to individual note heads" -msgstr "" +#: ligature-engraver.cc:109 +#, fuzzy +msgid "no right bound" +msgstr "境界 Import ディレクトリ" -#: new-fingering-engraver.cc:239 -msgid "no placement found for fingerings" -msgstr "" +#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85 +#, fuzzy +msgid "already have a ligature" +msgstr "AE 合字 Æ" -#: new-fingering-engraver.cc:240 -msgid "placing below" -msgstr "" +#: ligature-engraver.cc:140 +#, fuzzy +msgid "no left bound" +msgstr "リソースに空きがありません" -#: note-collision.cc:463 +#: ligature-engraver.cc:184 #, fuzzy -msgid "ignoring too many clashing note columns" -msgstr "Äà¤ê¹ç¤ï¤Ê¤¤²»É䤬¿¤¹¤®¤Þ¤¹¡£¤½¤ì¤é¤ò̵»ë¤·¤Þ¤¹¡£" +msgid "unterminated ligature" +msgstr "AE 合字 Æ" -#: note-column.cc:124 -msgid "cannot have note heads and rests together on a stem" +#: ligature-engraver.cc:211 +msgid "ignoring rest: ligature may not contain rest" msgstr "" -#: note-head.cc:63 +#: ligature-engraver.cc:212 +#, fuzzy +msgid "ligature was started here" +msgstr "鈎はここから開始されました" + +#: tuplet-engraver.cc:110 +#, fuzzy +msgid "No tuplet to end" +msgstr "ファイルの末尾に追加" + +#: ttf.cc:480 ttf.cc:528 #, c-format -msgid "none of note heads `%s' or `%s' found" +msgid "font index %d too large for font `%s', using index 0" msgstr "" -#: note-heads-engraver.cc:64 -msgid "NoteEvent without pitch" +#: ttf.cc:512 ttf.cc:562 +msgid "font index must be non-negative, using index 0" msgstr "" -#: open-type-font.cc:33 -#, c-format -msgid "cannot allocate %lu bytes" +#: multi-measure-rest.cc:140 +msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests." msgstr "" -#: open-type-font.cc:37 -#, fuzzy, c-format -msgid "cannot load font table: %s" -msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" - -#: open-type-font.cc:42 -#, c-format -msgid "Free type error: %s" +#: partial-iterator.cc:45 +msgid "trying to use \\partial after the start of a piece" msgstr "" -#: open-type-font.cc:100 +#: minimal-page-breaking.cc:44 +#, fuzzy +msgid "Calculating page breaks..." +msgstr "自発的休憩" + +#: vaticana-ligature-engraver.cc:400 #, c-format -msgid "unsupported font format: %s" +msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style" msgstr "" -#: open-type-font.cc:102 +#: vaticana-ligature-engraver.cc:736 #, c-format -msgid "error reading font file %s: %s" +msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" msgstr "" -#: open-type-font.cc:177 +#: paper-book.cc:214 #, c-format -msgid "FT_Get_Glyph_Name () Freetype error: %s" +msgid "program option -dprint-pages not supported by backend `%s'" msgstr "" -#: open-type-font.cc:302 pango-font.cc:167 +#: paper-book.cc:233 #, c-format -msgid "FT_Get_Glyph_Name () error: %s" +msgid "program option -dpreview not supported by backend `%s'" msgstr "" -#. find out the ideal number of pages -#: optimal-page-breaking.cc:56 -msgid "Finding the ideal number of pages..." -msgstr "" +#: episema-engraver.cc:75 +#, fuzzy +msgid "already have an episema" +msgstr "「%s」はもう圧縮済みです\n" -#: optimal-page-breaking.cc:71 -msgid "Fitting music on 1 page..." -msgstr "" +#: episema-engraver.cc:88 +#, fuzzy +msgid "cannot find start of episema" +msgstr "'%s' の URL が見つかりません" -#: optimal-page-breaking.cc:73 -#, c-format -msgid "Fitting music on %d pages..." -msgstr "" - -#: optimal-page-breaking.cc:75 -#, c-format -msgid "Fitting music on %d or %d pages..." -msgstr "" - -#: optimal-page-breaking.cc:152 page-turn-page-breaking.cc:226 -#: paper-score.cc:146 +#: episema-engraver.cc:137 #, fuzzy -msgid "Drawing systems..." -msgstr "²»À¼¤òºîÀ®Ãæ..." +msgid "unterminated episema" +msgstr "「s」コマンドが終了していません" -#: page-turn-page-breaking.cc:146 -#, c-format -msgid "page-turn-page-breaking: breaking from %d to %d" -msgstr "" +#: score-engraver.cc:78 +#, fuzzy, c-format +msgid "cannot find `%s'" +msgstr "見つかりません: `%s'" -#: page-turn-page-breaking.cc:195 -msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +#: score-engraver.cc:80 +msgid "Music font has not been installed properly." msgstr "" -#: page-turn-page-breaking.cc:208 -#, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." -msgstr "" +#: score-engraver.cc:82 +#, fuzzy, c-format +msgid "Search path `%s'" +msgstr "検索パス : %s\n" -#: page-turn-page-breaking.cc:275 -#, c-format -msgid "break starting at page %d" -msgstr "" +#: score-engraver.cc:84 +msgid "Aborting" +msgstr "終了します" -#: page-turn-page-breaking.cc:276 -#, c-format -msgid "\tdemerits: %f" -msgstr "" +#: performance.cc:54 +#, fuzzy +msgid "Track..." +msgstr "トラックのピーク" -#: page-turn-page-breaking.cc:277 +#: performance.cc:82 #, fuzzy, c-format -msgid "\tsystem count: %d" -msgstr "Í×ÁÇ¿ô %d." +msgid "MIDI output to `%s'..." +msgstr "%s へ出力リダイレクトされました\n" -#: page-turn-page-breaking.cc:278 -#, fuzzy, c-format -msgid "\tpage count: %d" -msgstr "Í×ÁÇ¿ô %d." +#: note-collision.cc:504 +#, fuzzy +msgid "ignoring too many clashing note columns" +msgstr "釣り合わない音符が多すぎます。それらを無視します。" -#: page-turn-page-breaking.cc:279 -#, c-format -msgid "\tprevious break: %d" -msgstr "" +#. fixme: be more verbose. +#: volta-engraver.cc:111 +#, fuzzy +msgid "cannot end volta spanner" +msgstr "%s: 省略記号の範囲の終わりに`%s'がありません" -#: pango-font.cc:184 -#, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" +#: volta-engraver.cc:121 +msgid "already have a volta spanner, ending that one prematurely" msgstr "" -#: pango-font.cc:229 -#, c-format -msgid "no PostScript font name for font `%s'" -msgstr "" +#: volta-engraver.cc:125 +#, fuzzy +msgid "also already have an ended spanner" +msgstr "既に鈎があります" -#: pango-font.cc:277 -msgid "FreeType face has no PostScript font name" +#: volta-engraver.cc:126 +#, fuzzy +msgid "giving up" msgstr "" +"中止しました。\n" +"\n" -#: paper-column-engraver.cc:221 -msgid "forced break was overridden by some other event, should you be using bar checks?" +#: page-layout-problem.cc:709 +msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed" msgstr "" -#: paper-outputter-scheme.cc:30 -#, fuzzy, c-format -msgid "Layout output to `%s'..." -msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..." - -#: paper-score.cc:105 -#, fuzzy -msgid "Calculating line breaks..." -msgstr "¥«¥é¥à°ÌÃÖ¤ò·×»»Ãæ..." - -#: paper-score.cc:118 -#, fuzzy, c-format -msgid "Element count %d (spanners %d) " -msgstr "Í×ÁÇ¿ô %d " +#: page-layout-problem.cc:712 +#, c-format +msgid "cannot fit music on page: overflow is %f" +msgstr "" -#: paper-score.cc:122 +#: page-layout-problem.cc:714 #, fuzzy -msgid "Preprocessing graphical objects..." -msgstr "Í×ÁǤòÁ°½èÍýÃæ..." +msgid "compressing music to fit" +msgstr "画像に高さを合わせる(_F)" -#: parse-scm.cc:87 -msgid "GUILE signaled an error for the expression beginning here" +#: page-layout-problem.cc:1176 +msgid "staff-affinities should only decrease" msgstr "" -#: percent-repeat-engraver.cc:200 +#: apply-context-iterator.cc:42 #, fuzzy -msgid "unterminated percent repeat" -msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À" +msgid "\\applycontext argument is not a procedure" +msgstr "エラー: %s() の 第%d引数が文字列ではありません\n" -#: performance.cc:43 +#. FIXME: constant error message. +#: mark-engraver.cc:157 #, fuzzy -msgid "Track..." -msgstr "¥È¥é¥Ã¥¯ ..." - -#: performance.cc:72 -msgid "MIDI channel wrapped around" -msgstr "" +msgid "rehearsalMark must have integer value" +msgstr "%sの値は整数でなければなりません" -#: performance.cc:73 -msgid "remapping modulo 16" +#: mark-engraver.cc:163 +msgid "mark label must be a markup object" msgstr "" -#: performance.cc:101 -#, fuzzy, c-format -msgid "MIDI output to `%s'..." -msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ" - -#: phrasing-slur-engraver.cc:139 +#: stem-engraver.cc:105 #, fuzzy -msgid "unterminated phrasing slur" -msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼" - -#: piano-pedal-engraver.cc:286 -#, fuzzy, c-format -msgid "expect 3 strings for piano pedals, found: %ld" -msgstr "¥Ô¥¢¥Î¥Ú¥À¥ë¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +msgid "tremolo duration is too long" +msgstr "diversion パスが長すぎます" -#: piano-pedal-engraver.cc:301 piano-pedal-engraver.cc:312 -#: piano-pedal-performer.cc:93 +#: stem-engraver.cc:157 #, fuzzy, c-format -msgid "cannot find start of piano pedal: `%s'" -msgstr "¥Ô¥¢¥Î¥Ú¥À¥ë¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +msgid "adding note head to incompatible stem (type = %d/%d)" +msgstr "矛盾した符尾へ符頭を追加します (タイプ = %d)" -#: piano-pedal-engraver.cc:347 -#, fuzzy, c-format -msgid "cannot find start of piano pedal bracket: `%s'" -msgstr "¥Ô¥¢¥Î¥Ú¥À¥ë¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +#: stem-engraver.cc:160 +msgid "maybe input should specify polyphonic voices" +msgstr "" -#: program-option-scheme.cc:215 +#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108 #, fuzzy, c-format -msgid "no such internal option: %s" -msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'" +msgid "cannot find file: `%s'" +msgstr "ファイルが見つかりません" -#: property-iterator.cc:74 +#: includable-lexer.cc:73 lily-parser-scheme.cc:100 #, c-format -msgid "not a grob name, `%s'" -msgstr "" - -#: relative-octave-check.cc:38 -msgid "Failed octave check, got: " -msgstr "" +msgid "(search path: `%s')" +msgstr "(検索パス: `%s')" -#: relocate.cc:44 +#: relocate.cc:52 #, fuzzy, c-format msgid "Setting %s to %s" -msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø" +msgstr "ドメインを`%s'へ設定しました\n" -#: relocate.cc:64 -#, c-format +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, fuzzy, c-format msgid "no such file: %s for %s" -msgstr "" +msgstr "出力ファイル用の名前がありません" -#: relocate.cc:74 relocate.cc:92 +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 #, fuzzy, c-format msgid "no such directory: %s for %s" -msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'" +msgstr "そのようなファイルやディレクトリはありません" -#: relocate.cc:84 +#: relocate.cc:93 #, c-format msgid "%s=%s (prepend)\n" msgstr "" -#: relocate.cc:114 +#: relocate.cc:124 #, c-format msgid "not relocating, no %s/ or current/ found under %s" msgstr "" -#: relocate.cc:125 +#: relocate.cc:134 #, c-format msgid "Relocation: compile datadir=%s, new datadir=%s" msgstr "" -#: relocate.cc:138 -#, c-format +#: relocate.cc:146 +#, fuzzy, c-format msgid "Relocation: framework_prefix=%s" -msgstr "" - -#: relocate.cc:179 -#, c-format -msgid "Relocation: is absolute: argv0=%s" -msgstr "" +msgstr "おかしな名前空間の接頭子" #: relocate.cc:186 +#, fuzzy, c-format +msgid "Relocation: is absolute: argv0=%s\n" +msgstr "ファイル名 \"%s\" は絶対パスではありません" + +#: relocate.cc:192 #, c-format -msgid "Relocation: from cwd: argv0=%s" +msgid "Relocation: from cwd: argv0=%s\n" msgstr "" -#: relocate.cc:195 -#, c-format +#: relocate.cc:208 +#, fuzzy, c-format msgid "" "Relocation: from PATH=%s\n" "argv0=%s" -msgstr "" +msgstr "このテキストレイヤーからパスを作成します" -#: relocate.cc:229 +#: relocate.cc:235 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" msgstr "" -#: relocate.cc:356 +#: relocate.cc:360 #, fuzzy, c-format msgid "Relocation file: %s" -msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'" +msgstr "HTML ファイル (*.html)|*.html" -#: relocate.cc:392 -#, c-format +#: relocate.cc:364 source-file.cc:65 +#, fuzzy, c-format +msgid "cannot open file: `%s'" +msgstr " ファイル '%s' を開けません " + +#: relocate.cc:394 +#, fuzzy, c-format msgid "Unknown relocation command %s" -msgstr "" +msgstr "不明なビルトインコマンド '%s'\n" -#: rest-collision.cc:145 -msgid "cannot resolve rest collision: rest direction not set" +#: note-column.cc:135 +msgid "cannot have note heads and rests together on a stem" msgstr "" -#: rest-collision.cc:159 rest-collision.cc:204 -msgid "too many colliding rests" -msgstr "µÙÉä¤Î¾×ÆÍ¤¬Â¿¤¹¤®¤Þ¤¹" +#: beam.cc:180 +msgid "removing beam with no stems" +msgstr "" -#: rest.cc:132 -#, c-format -msgid "rest `%s' not found" +#: staff-performer.cc:257 +msgid "MIDI channel wrapped around" msgstr "" -#: score-engraver.cc:67 +#: staff-performer.cc:258 +#, fuzzy +msgid "remapping modulo 16" +msgstr "Functionキー 16" + +#: dots.cc:48 #, fuzzy, c-format -msgid "cannot find `%s'" -msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +msgid "dot `%s' not found" +msgstr "ブラシ '%s' が見つかりません。" -#: score-engraver.cc:69 -msgid "Music font has not been installed properly." -msgstr "" +#: font-config.cc:38 +#, fuzzy +msgid "Initializing FontConfig..." +msgstr "ストリームの初期化中" -#: score-engraver.cc:71 +#: font-config.cc:53 font-config-scheme.cc:151 #, fuzzy, c-format -msgid "Search path `%s'" -msgstr "(¸¡º÷¥Ñ¥¹: `%s')" +msgid "failed adding font directory: %s" +msgstr "ディレクトリの追加が失敗しました: %s (対象: %s) (%d)" -#: score-engraver.cc:73 -msgid "Aborting" -msgstr "½ªÎ»¤·¤Þ¤¹" +#: font-config.cc:55 font-config-scheme.cc:153 +#, fuzzy, c-format +msgid "Adding font directory: %s" +msgstr "フォントファイルを追加しています: %s" -#: score.cc:167 +#: font-config.cc:58 #, fuzzy -msgid "already have music in score" -msgstr "³ÚÉè¤Ë¤Ï³Ú¶Ê¤¬É¬ÍפǤ¹" - -#: score.cc:168 -msgid "this is the previous music" -msgstr "" +msgid "Building font database..." +msgstr "タグのデータベースを構築しています" -#: score.cc:173 -#, fuzzy -msgid "errors found, ignoring music expression" -msgstr "¥¨¥é¡¼¤òȯ¸«/*, ³ÚÉè¤ò½èÍý¤·¤Þ¤»¤ó*/" +#: change-iterator.cc:34 +#, fuzzy, c-format +msgid "cannot change `%s' to `%s'" +msgstr "警告: %s に変更できません.\n" -#. FIXME: -#: script-engraver.cc:102 +#. FIXME: constant error message. +#: change-iterator.cc:93 #, fuzzy -msgid "do not know how to interpret articulation: " -msgstr "²»Àá `%s' ¤Î²ò¼áÊýË¡¤¬È½¤ê¤Þ¤»¤ó" - -#: script-engraver.cc:103 -msgid "scheme encoding: " -msgstr "" +msgid "cannot find context to switch to" +msgstr "実効ユーザID を %ld に変更できません: %s\n" -#: slur-engraver.cc:82 +#. We could change the current translator's id, but that would make +#. errors hard to catch. +#. +#. last->translator_id_string () = get_change +#. ()->change_to_id_string (); +#: change-iterator.cc:102 #, c-format -msgid "direction of %s invalid: %d" +msgid "not changing to same context type: %s" msgstr "" -#: slur-engraver.cc:151 -msgid "unterminated slur" -msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼" - -#: slur-engraver.cc:163 -#, fuzzy -msgid "cannot end slur" -msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼" +#. FIXME: uncomprehensable message +#: change-iterator.cc:106 +msgid "none of these in my family" +msgstr "ファミリの中にありません" -#: slur.cc:353 +#: slur.cc:438 #, c-format msgid "Ignoring grob for slur: %s. avoid-slur not set?" msgstr "" -#: source-file.cc:74 -#, c-format +#: source-file.cc:85 +#, fuzzy, c-format msgid "expected to read %d characters, got %d" msgstr "" +"読み込むファイルまたは\n" +"使用する文字列" -#: spaceable-grob.cc:83 -#, c-format -msgid "No spring between column %d and next one" -msgstr "" +#. find out the ideal number of pages +#: optimal-page-breaking.cc:62 +#, fuzzy +msgid "Finding the ideal number of pages..." +msgstr "印刷するページ数" -#: staff-symbol-engraver.cc:62 -msgid "staff-span event has no direction" +#: optimal-page-breaking.cc:85 +msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page" msgstr "" -#: stem-engraver.cc:92 -msgid "tremolo duration is too long" -msgstr "" +#: optimal-page-breaking.cc:105 +#, fuzzy +msgid "Fitting music on 1 page..." +msgstr "このページで %d 個見つかりました" -#. FIXME: -#: stem-engraver.cc:129 +#: optimal-page-breaking.cc:107 #, fuzzy, c-format -msgid "adding note head to incompatible stem (type = %d)" -msgstr "Ì·½â¤·¤¿ÉäÈø¤ØÉ䯬¤òÄɲä·¤Þ¤¹ (¥¿¥¤¥× = %d)" +msgid "Fitting music on %d pages..." +msgstr "MoH サーバ (Music on Hold)" -#: stem-engraver.cc:131 -msgid "maybe input should specify polyphonic voices" +#: optimal-page-breaking.cc:109 +#, c-format +msgid "Fitting music on %d or %d pages..." msgstr "" -#: stem.cc:105 -#, fuzzy -msgid "weird stem size, check for narrow beams" -msgstr "ÊѤÊÉäÈø¤Î¥µ¥¤¥º -- ºÙ¤¤³Ã¤Î¥Á¥§¥Ã¥¯¤ò¤·¤Æ²¼¤µ¤¤" +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 +#, fuzzy, c-format +msgid "trying %d systems" +msgstr "ディレクトリ %s の試行中" -#: stem.cc:627 +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 #, c-format -msgid "flag `%s' not found" +msgid "best score for this sys-count: %f" msgstr "" -#: stem.cc:638 +#: new-dynamic-engraver.cc:168 #, c-format -msgid "flag stroke `%s' not found" +msgid "" +"unknown crescendo style: %s\n" +"defaulting to hairpin." msgstr "" -#: system.cc:179 -#, c-format -msgid "Element count %d." -msgstr "Í×ÁÇ¿ô %d." - -#: system.cc:271 +#: new-dynamic-engraver.cc:233 #, fuzzy, c-format -msgid "Grob count %d" -msgstr "Í×ÁÇ¿ô %d." - -#: text-spanner-engraver.cc:60 -#, fuzzy -msgid "cannot find start of text spanner" -msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgid "unterminated %s" +msgstr "「s」コマンドが終了していません" -#: text-spanner-engraver.cc:72 -#, fuzzy -msgid "already have a text spanner" -msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹" - -#: text-spanner-engraver.cc:118 +#: hairpin.cc:263 #, fuzzy -msgid "unterminated text spanner" -msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À" +msgid "decrescendo too small" +msgstr "時刻が小さすぎます" -#: tie-engraver.cc:262 -msgid "lonely tie" -msgstr "°ì¤Ä¤À¤±¤Î¥¿¥¤" +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" +msgstr "終端のないエクステンダ" -#. -#. Todo: should make typecheck? -#. -#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. -#. -#: time-signature-engraver.cc:64 -#, c-format -msgid "strange time signature found: %d/%d" +#: main.cc:101 +#, fuzzy, c-format +msgid "" +"This program is free software. It is covered by the GNU General Public\n" +"License and you are welcome to change it and/or distribute copies of it\n" +"under certain conditions. Invoke as `%s --warranty' for more\n" +"information.\n" msgstr "" +"This is free software. It is covered by the GNU General Public License,\n" +"and you are welcome to change it and/or distribute copies of it under\n" +"certain conditions. Invoke as `%s --warranty' for more information.\n" +"\n" +"-- 参考訳\n" +"これはフリーソフトウェアです。GNU 一般公有使用許諾書に基づき、同一条件で\n" +"これを改変したり、複製を配布したりする事は歓迎されます。\n" +"`--warranty' オプション付きで起動すると、より詳細な情報が得られます。\n" -#. If there is no such symbol, we default to the numbered style. -#. (Here really with a warning!) -#: time-signature.cc:83 -#, c-format -msgid "time signature symbol `%s' not found; reverting to numbered style" +#: main.cc:107 +#, fuzzy +msgid "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" msgstr "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License version 2\n" +"as published by the Free Software Foundation.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy (refer to the file COPYING) of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n" +"USA.\n" +"\n" +"-- 参考訳\n" +" このプログラムは、フリーソフトウェアです。あなたは Free Software Foundation\n" +"が公表した GNU 一般公有使用許諾のバージョン 2 の条項に基づいて、このプログラ\n" +"ムを再頒布または変更することができます。\n" +"\n" +"このプログラムは有用とは思いますが、頒布に当たっては、市場性及び特定目的適合\n" +"性についての暗黙の保証も含めて、いかなる保証も行ないません。詳細については、\n" +"GNU 一般公有使用許諾書をお読み下さい。\n" +"\n" +"あなたは、このプログラムと一緒に GNU 一般公有使用許諾書を受け取っているはず\n" +"です(COPYING ファイルを参照)。そうでない場合は、Free Software Foundation,\n" +"Inc., 675 Mass Ave, Cambridge, MA 02139, USA に手紙を書いてください。\n" -#: translator-ctors.cc:53 -#, c-format -msgid "unknown translator: `%s'" -msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'" +#: main.cc:141 +#, fuzzy +msgid "SYM[=VAL]" +msgstr "円錐形 (対称)" -#: translator-group-ctors.cc:29 -#, c-format +#: main.cc:142 +msgid "" +"set Scheme option SYM to VAL (default: #t).\n" +"Use -dhelp for help." +msgstr "" + +#: main.cc:146 +#, fuzzy +msgid "EXPR" +msgstr "test [表現]" + +#: main.cc:146 +#, fuzzy +msgid "evaluate scheme code" +msgstr "Scheme ソースコード" + +#. Bug in option parser: --output =foe is taken as an abbreviation +#. for --output-format. +#: main.cc:149 +#, fuzzy +msgid "FORMATs" +msgstr "%s: 形式を照合します:" + +#: main.cc:149 +msgid "dump FORMAT,... Also as separate options:" +msgstr "" + +#: main.cc:150 +#, fuzzy +msgid "generate PDF (default)" +msgstr "自動" + +#: main.cc:151 +#, fuzzy +msgid "generate PNG" +msgstr "PNG 画像" + +#: main.cc:152 +#, fuzzy +msgid "generate PostScript" +msgstr "PostScript ドキュメント" + +#: main.cc:155 +#, fuzzy +msgid "FIELD" +msgstr "<フィールド>,<フィールド>,..." + +#: main.cc:155 +msgid "" +"dump header field FIELD to file\n" +"named BASENAME.FIELD" +msgstr "" + +#: main.cc:158 +msgid "add DIR to search path" +msgstr "DIR を検索パスに追加" + +#: main.cc:159 +msgid "use FILE as init file" +msgstr "FILE を初期化ファイルとして使用" + +#: main.cc:162 +#, fuzzy +msgid "USER, GROUP, JAIL, DIR" +msgstr "ユーザがグループにありません" + +#: main.cc:162 +msgid "" +"chroot to JAIL, become USER:GROUP\n" +"and cd into DIR" +msgstr "" + +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." +msgstr "" + +#: main.cc:171 +msgid "write output to FILE (suffix will be added)" +msgstr "" + +#: main.cc:172 +msgid "relocate using directory of lilypond program" +msgstr "" + +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" +msgstr "" + +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" +msgstr "" + +#. Do not update the copyright years here, run `make grand-replace' +#: main.cc:242 +#, fuzzy, c-format +msgid "" +"Copyright (c) %s by\n" +"%s and others." +msgstr "" +"作者: %s, %s, %s,\n" +"%s, %s, %s, %s,\n" +"%s, %s 他.\n" + +#. No version number or newline here. It confuses help2man. +#: main.cc:269 +#, fuzzy, c-format +msgid "Usage: %s [OPTION]... FILE..." +msgstr "使用法: %s [オプション] [ファイル]...\n" + +#: main.cc:271 +#, fuzzy +msgid "Typeset music and/or produce MIDI from FILE." +msgstr "ファイルの楽曲を組版したり、MIDI 演奏したりする" + +#: main.cc:273 +msgid "LilyPond produces beautiful music notation." +msgstr "" + +#: main.cc:275 +#, fuzzy, c-format +msgid "For more information, see %s" +msgstr "より詳しい情報は %1 を参照してください" + +#: main.cc:277 +msgid "Options:" +msgstr "オプション:" + +#: main.cc:331 +#, c-format +msgid "expected %d arguments with jail, found: %u" +msgstr "" + +#: main.cc:345 +#, fuzzy, c-format +msgid "no such user: %s" +msgstr "%s: そのようなユーザは存在しません" + +#: main.cc:347 +#, c-format +msgid "cannot get user id from user name: %s: %s" +msgstr "" + +#: main.cc:362 +#, fuzzy, c-format +msgid "no such group: %s" +msgstr "-group: グループ名がない" + +#: main.cc:364 +#, c-format +msgid "cannot get group id from group name: %s: %s" +msgstr "" + +#: main.cc:372 +#, fuzzy, c-format +msgid "cannot chroot to: %s: %s" +msgstr "" +"\"%s\" へ chdir できません \n" +" %s " + +#: main.cc:379 +#, fuzzy, c-format +msgid "cannot change group id to: %d: %s" +msgstr "ID を root へ変更できません。\n" + +#: main.cc:385 +#, fuzzy, c-format +msgid "cannot change user id to: %d: %s" +msgstr "ID を root へ変更できません。\n" + +#: main.cc:391 +#, fuzzy, c-format +msgid "cannot change working directory to: %s: %s" +msgstr "作業ディレクトリを '%s' に変更できません" + +#: main.cc:639 +#, fuzzy, c-format +msgid "exception caught: %s" +msgstr "シグナルを受け取りました" + +#: page-turn-page-breaking.cc:168 +#, fuzzy, c-format +msgid "page-turn-page-breaking: breaking from %d to %d" +msgstr "左から右に回転" + +#: page-turn-page-breaking.cc:217 +msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number." +msgstr "" + +#: page-turn-page-breaking.cc:230 +#, c-format +msgid "Calculating page and line breaks (%d possible page breaks)..." +msgstr "" + +#: page-turn-page-breaking.cc:300 +#, c-format +msgid "break starting at page %d" +msgstr "" + +#: page-turn-page-breaking.cc:301 +#, c-format +msgid "\tdemerits: %f" +msgstr "" + +#: page-turn-page-breaking.cc:302 +#, fuzzy, c-format +msgid "\tsystem count: %d" +msgstr "合計数: " + +#: page-turn-page-breaking.cc:303 +#, fuzzy, c-format +msgid "\tpage count: %d" +msgstr "合計数: " + +#: page-turn-page-breaking.cc:304 +#, fuzzy, c-format +msgid "\tprevious break: %d" +msgstr "休憩時間:" + +#: key-signature-interface.cc:77 +#, fuzzy, c-format +msgid "No glyph found for alteration: %s" +msgstr "“%s”用の失効鍵が見つかりません\n" + +#: key-signature-interface.cc:87 +#, fuzzy +msgid "alteration not found" +msgstr "ブラシ '%s' が見つかりません。" + +#: music.cc:150 +#, c-format +msgid "octave check failed; expected \"%s\", found: \"%s\"" +msgstr "" + +#: music.cc:219 +#, fuzzy +msgid "(normalized pitch)" +msgstr "音の高さを変更" + +#: music.cc:223 +#, fuzzy, c-format +msgid "Transposing %s by %s makes alteration larger than double" +msgstr "%s の変調によって、二つを超える派生音が作られました" + +#: vaticana-ligature.cc:95 +msgid "flexa-height undefined; assuming 0" +msgstr "" + +#: vaticana-ligature.cc:100 +msgid "ascending vaticana style flexa" +msgstr "" + +#: translator.cc:356 +#, c-format +msgid "Two simultaneous %s events, junking this one" +msgstr "" + +#: translator.cc:357 +#, fuzzy, c-format +msgid "Previous %s event here" +msgstr "前の定義がここにありました" + +#: lily-guile.cc:93 +#, c-format +msgid "(load path: `%s')" +msgstr "(読込パス: `%s')" + +#: lily-guile.cc:416 +#, c-format +msgid "cannot find property type-check for `%s' (%s)." +msgstr "" + +#: lily-guile.cc:419 +#, fuzzy +msgid "perhaps a typing error?" +msgstr "未知のシステムエラー" + +#: lily-guile.cc:426 +#, fuzzy +msgid "doing assignment anyway" +msgstr "とにかくログイン" + +#: lily-guile.cc:438 +#, c-format +msgid "type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "" + +#: text-spanner-engraver.cc:72 +#, fuzzy +msgid "cannot find start of text spanner" +msgstr "鈎の始点が見つかりません" + +#: text-spanner-engraver.cc:85 +#, fuzzy +msgid "already have a text spanner" +msgstr "リッチテキストドキュメント" + +#: text-spanner-engraver.cc:130 +#, fuzzy +msgid "unterminated text spanner" +msgstr "リッチテキストドキュメント" + +#: clef.cc:65 +#, fuzzy, c-format +msgid "clef `%s' not found" +msgstr "ブラシ '%s' が見つかりません。" + +#: beam-engraver.cc:147 +msgid "already have a beam" +msgstr "既に鈎があります" + +#: beam-engraver.cc:230 +msgid "unterminated beam" +msgstr "終端のない鈎" + +#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149 +msgid "stem must have Rhythmic structure" +msgstr "符尾はリズム構造を持たねばなりません" + +#: beam-engraver.cc:277 +#, fuzzy +msgid "stem does not fit in beam" +msgstr "符尾が鈎の中におさまりません" + +#: beam-engraver.cc:278 +msgid "beam was started here" +msgstr "鈎はここから開始されました" + +#. +#. Todo: should make typecheck? +#. +#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. +#. +#: time-signature-engraver.cc:75 +#, fuzzy, c-format +msgid "strange time signature found: %d/%d" +msgstr "最初の拍子記号を変更する" + +#: paper-column-engraver.cc:261 +msgid "forced break was overridden by some other event, should you be using bar checks?" +msgstr "" + +#: lily-parser-scheme.cc:80 +#, fuzzy, c-format +msgid "Changing working directory to: `%s'" +msgstr "作業ディレクトリを '%s' に変更できません" + +#: lily-parser-scheme.cc:84 +#, fuzzy, c-format +msgid "unable to change directory to: `%s'" +msgstr "ディレクトリーを %s に変更できません" + +#: lily-parser-scheme.cc:99 +#, fuzzy, c-format +msgid "cannot find init file: `%s'" +msgstr " ヘルプファイルでノード %s を見付けることができません " + +#: lily-parser-scheme.cc:117 +#, c-format +msgid "Processing `%s'" +msgstr "`%s' を処理しています" + +#: lily-parser-scheme.cc:208 +msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "" + +#: lily-parser-scheme.cc:239 +msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead." +msgstr "" + +#: font-config-scheme.cc:167 +#, c-format +msgid "failed adding font file: %s" +msgstr "フォントファイルの追加に失敗しました: %s" + +#: font-config-scheme.cc:169 +#, c-format +msgid "Adding font file: %s" +msgstr "フォントファイルを追加しています: %s" + +#: custos.cc:88 +#, fuzzy, c-format +msgid "custos `%s' not found" +msgstr "ブラシ '%s' が見つかりません。" + +#: accidental-engraver.cc:179 +#, c-format +msgid "accidental typesetting list must begin with context-name: %s" +msgstr "" + +#: accidental-engraver.cc:209 +#, c-format +msgid "procedure or context-name expected for accidental rule, found %s" +msgstr "" + +#: rest-collision.cc:146 +msgid "cannot resolve rest collision: rest direction not set" +msgstr "" + +#: rest-collision.cc:160 rest-collision.cc:276 +msgid "too many colliding rests" +msgstr "休符の衝突が多すぎます" + +#: pango-font.cc:205 +#, c-format +msgid "" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" +msgstr "" + +#: pango-font.cc:242 +#, fuzzy, c-format +msgid "no PostScript font name for font `%s'" +msgstr "出力ファイル用の名前がありません" + +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" +msgstr "" + +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +msgstr "" + +#: page-breaking.cc:277 +msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set" +msgstr "" + +#: page-breaking.cc:282 +msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values" +msgstr "" + +#: paper-outputter-scheme.cc:41 +#, fuzzy, c-format +msgid "Layout output to `%s'..." +msgstr "%s へ出力リダイレクトされました\n" + +#: gregorian-ligature-engraver.cc:70 +#, c-format +msgid "\\%s ignored" +msgstr "\\%s を無視しました" + +#: gregorian-ligature-engraver.cc:75 +#, fuzzy, c-format +msgid "implied \\%s added" +msgstr "「追加済」を表示" + +#. ligature may not start with 2nd head of pes or flexa +#: gregorian-ligature-engraver.cc:224 +msgid "cannot apply `\\~' on first head of ligature" +msgstr "" + +#. (pitch == prev_pitch) +#: gregorian-ligature-engraver.cc:236 +msgid "cannot apply `\\~' on heads with identical pitch" +msgstr "" + +#: chord-tremolo-engraver.cc:88 +#, fuzzy +msgid "No tremolo to end" +msgstr "ファイルの末尾に追加" + +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" +msgstr "終端のないコードトレモロ" + +#: general-scheme.cc:390 +#, fuzzy, c-format +msgid "failed redirecting stderr to `%s'" +msgstr "" +"\n" +"%s を受信しました、%s に出力をリダイレクトします。\n" + +#: general-scheme.cc:469 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "" + +#: system.cc:200 +#, fuzzy, c-format +msgid "Element count %d" +msgstr "合計数: " + +#: system.cc:466 +#, fuzzy, c-format +msgid "Grob count %d" +msgstr "合計数: " + +#: axis-group-engraver.cc:94 +msgid "Axis_group_engraver: vertical group already has a parent" +msgstr "" + +#: axis-group-engraver.cc:95 +msgid "are there two Axis_group_engravers?" +msgstr "" + +#: axis-group-engraver.cc:96 +#, fuzzy +msgid "removing this vertical group" +msgstr "このグループには %d 個のパッケージが含まれています。" + +#: cluster.cc:120 +#, fuzzy, c-format +msgid "unknown cluster style `%s'" +msgstr "名前復元 (demangle) の方式 `%s' が不明です" + +#: cluster.cc:157 +#, fuzzy +msgid "junking empty cluster" +msgstr "警告: $PATH が定義されていません" + +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" +msgstr "" + +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" +msgstr "" + +#: axis-group-interface.cc:670 +msgid "an outside-staff object should have a direction, defaulting to up" +msgstr "" + +#: coherent-ligature-engraver.cc:110 +#, c-format +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "" + +#. We are completely screwed. +#: beam-quanting.cc:853 +msgid "no viable initial configuration found: may not find good beam slope" +msgstr "" + +#: percent-repeat-engraver.cc:147 +#, fuzzy +msgid "unterminated percent repeat" +msgstr "PINを再入力: " + +#: note-head.cc:85 +#, c-format +msgid "none of note heads `%s' or `%s' found" +msgstr "" + +#. FIXME: +#: script-engraver.cc:113 +#, fuzzy +msgid "do not know how to interpret articulation:" +msgstr "音節 `%s' の解釈方法が判りません" + +#: script-engraver.cc:114 +#, fuzzy +msgid " scheme encoding: " +msgstr "不明なエンコーディング。" + +#: program-option-scheme.cc:235 +#, fuzzy, c-format +msgid "no such internal option: %s" +msgstr "そのユーザーIDはありません。\n" + +#: property-iterator.cc:93 +#, fuzzy, c-format +msgid "not a grob name, `%s'" +msgstr "名前ファイルではありません" + +#: all-font-metrics.cc:149 +#, fuzzy, c-format +msgid "cannot find font: `%s'" +msgstr "ディレクトリ %s が見つかりません\n" + +#: pdf-scheme.cc:50 +#, c-format +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "" + +#: rest.cc:171 +#, fuzzy, c-format +msgid "rest `%s' not found" +msgstr "ブラシ '%s' が見つかりません。" + +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" +msgstr "小節チェックが失敗: %s" + +#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91 +#, fuzzy, c-format +msgid "direction of %s invalid: %d" +msgstr "無効な方向 -- %s\n" + +#: slur-engraver.cc:166 +msgid "unterminated slur" +msgstr "終端されていないスラー" + +#: slur-engraver.cc:191 +msgid "cannot end slur" +msgstr "スラーを終了できません" + +#. We already have a slur, so give a warning and completely ignore +#. the new slur. +#: slur-engraver.cc:208 +msgid "already have slur" +msgstr "スラーを既に開始しています" + +#: global-context-scheme.cc:96 global-context-scheme.cc:114 +#, fuzzy +msgid "no music found in score" +msgstr " %s に特定のエントリーは見つかりませんでした " + +#: global-context-scheme.cc:104 +#, fuzzy +msgid "Interpreting music... " +msgstr "%s %s 楽曲プレイヤ" + +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "経過時間: %.2f 秒" + +#: translator-group-ctors.cc:40 +#, c-format msgid "fatal error. Couldn't find type: %s" msgstr "" -#: translator-group.cc:146 +#: phrasing-slur-engraver.cc:165 +#, fuzzy +msgid "unterminated phrasing slur" +msgstr "スラーを終了できません" + +#: phrasing-slur-engraver.cc:190 +#, fuzzy +msgid "cannot end phrasing slur" +msgstr "スラーの中に別のスラーを含むことはできません" + +#: phrasing-slur-engraver.cc:204 +#, fuzzy +msgid "already have phrasing slur" +msgstr "スラーを終了できません" + +#: lily-parser.cc:109 +msgid "Parsing..." +msgstr "構文解析中..." + +#: score.cc:176 +#, fuzzy +msgid "already have music in score" +msgstr "%s は設定ファイルの中に既に存在しています\n" + +#: score.cc:177 +#, fuzzy +msgid "this is the previous music" +msgstr "このメッセージは未翻訳です" + +#: score.cc:182 +#, fuzzy +msgid "errors found, ignoring music expression" +msgstr "エラーを発見/*, 楽譜を処理しません*/" + +#. If there is no such symbol, we default to the numbered style. +#. (Here really with a warning!) +#: time-signature.cc:94 +#, c-format +msgid "time signature symbol `%s' not found; reverting to numbered style" +msgstr "" + +#: grob-interface.cc:68 +#, c-format +msgid "Unknown interface `%s'" +msgstr "`%s' は未知のインタフェースです" + +#: grob-interface.cc:79 +#, c-format +msgid "Grob `%s' has no interface for property `%s'" +msgstr "" + +#: midi-stream.cc:39 #, fuzzy, c-format -msgid "cannot find: `%s'" -msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" +msgid "cannot open for write: %s: %s" +msgstr "%s を読み書きモードで開けません\n" + +#: midi-stream.cc:55 +#, fuzzy, c-format +msgid "cannot write to file: `%s'" +msgstr "" +"ファイル %s に書き込めません:\n" +"%s\n" + +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 +#, fuzzy, c-format +msgid "Cyclic markup detected: %s" +msgstr "自動検出ボリューム" -#: translator.cc:347 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 #, c-format -msgid "Two simultaneous %s events, junking this one" +msgid "Markup depth exceeds maximal value of %d; Markup: %s" +msgstr "" + +#: parser.yy:162 parser.yy:176 +#, fuzzy +msgid "Too much lookahead" +msgstr "アドレスファミリの引数が多すぎます.\n" + +#: parser.yy:827 parser.yy:1193 parser.yy:1226 +#, fuzzy +msgid "not a context mod" +msgstr "有効なセキュリティコンテキストでありません" + +#: parser.yy:995 +msgid "\\paper cannot be used in \\score, use \\layout instead" +msgstr "" + +#: parser.yy:1019 +#, fuzzy +msgid "need \\paper for paper block" +msgstr "まばらな (sparse) ファイルのブロックサイズ" + +#: parser.yy:1943 +msgid "only \\consists takes non-string argument." +msgstr "" + +#: parser.yy:1956 +msgid "Grob name should be alphanumeric" +msgstr "" + +#: parser.yy:2150 +#, fuzzy +msgid "not a rhythmic event" +msgstr "MIDI イベントコントローラ" + +#: parser.yy:2246 parser.yy:2251 +#, fuzzy +msgid "have to be in Lyric mode for lyrics" +msgstr "歌詞は Lyric モード内に書いてください" + +#: parser.yy:2366 +msgid "expecting string as script definition" msgstr "" -#: translator.cc:348 +#: parser.yy:2518 parser.yy:2569 #, c-format -msgid "Previous %s event here" +msgid "not a duration: %d" +msgstr "音長ではありません: %d" + +#: parser.yy:2688 +#, fuzzy +msgid "have to be in Note mode for notes" +msgstr "音符は Note モード内に書いてください" + +#: parser.yy:2737 +#, fuzzy +msgid "have to be in Chord mode for chords" +msgstr "コードは Chord モード内に書いてください" + +#: parser.yy:2997 +msgid "not a markup" +msgstr "マークアップではありません" + +#: lexer.ll:225 +msgid "stray UTF-8 BOM encountered" msgstr "" -#: trill-spanner-engraver.cc:84 +#: lexer.ll:228 +msgid "Skipping UTF-8 BOM" +msgstr "UTF-8 の BOM をスキップします" + +#: lexer.ll:286 +#, c-format +msgid "Renaming input to: `%s'" +msgstr "入力の名前を `%s' に変更します" + +#: lexer.ll:303 #, fuzzy -msgid "cannot find start of trill spanner" -msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgid "quoted string expected after \\version" +msgstr "警告: 文法エラー, 文字列の後には ';'" -#: trill-spanner-engraver.cc:96 +#: lexer.ll:307 #, fuzzy -msgid "already have a trill spanner" -msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬´û¤Ë¤¢¤ê¤Þ¤¹" +msgid "quoted string expected after \\sourcefilename" +msgstr "警告: 文法エラー, 文字列の後には ';'" -#: tuplet-engraver.cc:96 +#: lexer.ll:311 #, fuzzy -msgid "No tuplet to end" -msgstr "ËöÈø¤Ø¤Î³Ã¤¬¤¢¤ê¤Þ¤»¤ó" +msgid "integer expected after \\sourcefileline" +msgstr "-q= の後に番号が期待されますが、%s が与えられました\n" + +#: lexer.ll:334 +#, fuzzy +msgid "\\maininput not allowed outside init files" +msgstr "初期化ファイルの外では \\maininput を記述できません" + +#: lexer.ll:358 +#, fuzzy, c-format +msgid "wrong or undefined identifier: `%s'" +msgstr "定数または識別子が適当です" + +#: lexer.ll:384 +msgid "string expected after \\include" +msgstr "\\include の後には文字列が必要です" + +#. backup rule +#: lexer.ll:394 +msgid "end quote missing" +msgstr "終端の引用符がありません" + +#: lexer.ll:556 +msgid "Brace found at end of lyric. Did you forget a space?" +msgstr "" + +#: lexer.ll:671 +msgid "Brace found at end of markup. Did you forget a space?" +msgstr "" + +#: lexer.ll:683 +msgid "EOF found inside a comment" +msgstr "コメント内に EOF が見つかりました" + +#: lexer.ll:775 +#, c-format +msgid "invalid character: `%s'" +msgstr "無効な文字: `%s'" + +#: lexer.ll:868 lexer.ll:869 +#, c-format +msgid "unknown escaped string: `\\%s'" +msgstr "未知のエスケープ文字列: `\\%s'" + +#: lexer.ll:1117 lexer.ll:1118 +#, fuzzy +msgid "non-UTF-8 input" +msgstr " INPUTFILE ... 入力ファイル\n" -#: vaticana-ligature-engraver.cc:389 +#: lexer.ll:1161 lexer.ll:1162 #, c-format -msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style" +msgid "file too old: %s (oldest supported: %s)" +msgstr "" + +#: lexer.ll:1162 lexer.ll:1163 +msgid "consider updating the input with the convert-ly script" msgstr "" -#: vaticana-ligature-engraver.cc:718 +#: lexer.ll:1168 lexer.ll:1169 #, c-format -msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" +msgid "program too old: %s (file requires: %s)" +msgstr "" + +#: parser-clef.scm:141 parser-clef.scm:181 +#, fuzzy, scheme-format +msgid "unknown clef type `~a'" +msgstr "ファイルタイプが不明です" + +#: parser-clef.scm:142 parser-clef.scm:182 +#, fuzzy, scheme-format +msgid "supported clefs: ~a" +msgstr "サポートしていません" + +#: document-backend.scm:132 +#, fuzzy, scheme-format +msgid "pair expected in doc ~s" +msgstr "種類 (%s と %s) のペアを期待しましたが、得られたのは種類 (%s と %s) です" + +#: document-backend.scm:189 +#, fuzzy, scheme-format +msgid "cannot find interface for property: ~S" +msgstr "'%s' の属性のハッシュを書き込めません" + +#: document-backend.scm:199 +#, fuzzy, scheme-format +msgid "unknown Grob interface: ~S" +msgstr "XUL インターフェイスドキュメント" + +#: graphviz.scm:64 +#, fuzzy, scheme-format +msgid "Writing graph `~a'..." +msgstr "\"%s\" を書き込み中にエラーが発生しました" + +#: parser-ly-from-scheme.scm:71 +#, fuzzy +msgid "error in #{ ... #}" +msgstr "「%s」でエラー: %s\n" + +#: framework-eps.scm:108 +#, fuzzy, scheme-format +msgid "Writing ~a..." +msgstr "%s 書き込み中..." + +#: output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" +msgstr "" + +#: output-ps.scm:313 output-svg.scm:556 +#, fuzzy, scheme-format +msgid "unknown line-cap-style: ~S" +msgstr "改行文字形式が一貫していません" + +#: output-ps.scm:318 output-svg.scm:562 +#, fuzzy, scheme-format +msgid "unknown line-join-style: ~S" +msgstr "改行文字形式が一貫していません" + +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" +msgstr "" + +#: paper.scm:304 +#, fuzzy, scheme-format +msgid "This is not a \\layout {} object, ~S" +msgstr "エラー: %s() の 第%d引数がオブジェクトではありません\n" + +#: paper.scm:316 +#, fuzzy, scheme-format +msgid "Unknown paper size: ~a" +msgstr "用紙のサイズ '%s' を認識できません (デフォルトを使用します)\n" + +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:331 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +msgstr "" + +#: backend-library.scm:27 +#, fuzzy, scheme-format +msgid "Invoking `~a'..." +msgstr "PGP 起動中..." + +#: backend-library.scm:31 +#, fuzzy, scheme-format +msgid "`~a' failed (~a)\n" +msgstr "失敗" + +#: backend-library.scm:90 +#, fuzzy, scheme-format +msgid "Converting to `~a'...\n" +msgstr "%s から %s へ変換しています..." + +#. Do not try to guess the name of the png file, +#. GS produces PNG files like BASE-page%d.png. +#: backend-library.scm:99 +#, fuzzy, scheme-format +msgid "Converting to ~a..." +msgstr "%s から %s へ変換しています..." + +#: backend-library.scm:137 +#, fuzzy, scheme-format +msgid "Writing header field `~a' to `~a'..." +msgstr "Contents ファイルへのヘッダの書き込み中にエラーが発生しました" + +#: backend-library.scm:187 +#, fuzzy, scheme-format +msgid "missing stencil expression `~S'" +msgstr "マジック(識別鍵)モード式が欠けています" + +#: output-svg.scm:47 +#, fuzzy, scheme-format +msgid "undefined: ~S" +msgstr "名前なし" + +#: output-svg.scm:157 +#, scheme-format +msgid "cannot decypher Pango description: ~a" +msgstr "" + +#: output-svg.scm:237 +#, fuzzy +msgid "Glyph must have a unicode value" +msgstr "" +"\n" +"%s.%s: 値は boolean でなければなりません\n" + +#: output-svg.scm:289 output-svg.scm:299 +#, fuzzy, scheme-format +msgid "cannot find SVG font ~S" +msgstr "'%s' の URL が見つかりません" + +#: flag-styles.scm:151 +#, fuzzy, scheme-format +msgid "flag stroke `~a' or `~a' not found" +msgstr "'%s' が PATH 上に見つからないか実行可能になっていません。" + +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" msgstr "" -#: vaticana-ligature.cc:84 -msgid "flexa-height undefined; assuming 0" +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" msgstr "" -#: vaticana-ligature.cc:89 -msgid "ascending vaticana style flexa" +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" msgstr "" -#: vaticana-ligature.cc:177 -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" msgstr "" -#. fixme: be more verbose. -#: volta-engraver.cc:100 -msgid "cannot end volta spanner" +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" msgstr "" -#: volta-engraver.cc:110 -msgid "already have a volta spanner, ending that one prematurely" +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" msgstr "" -#: volta-engraver.cc:114 -#, fuzzy -msgid "also already have an ended spanner" -msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹" +#: to-xml.scm:191 +#, fuzzy, scheme-format +msgid "assertion failed: ~S" +msgstr "malloc: 失敗したアサーション: %s\n" -#: volta-engraver.cc:115 -#, fuzzy -msgid "giving up" -msgstr "Äü¤á¤Þ¤·¤¿" +#: define-grob-properties.scm:21 define-context-properties.scm:31 +#: define-music-properties.scm:21 +#, fuzzy, scheme-format +msgid "symbol ~S redefined" +msgstr "シンボル %s が再定義されました" -#: parser.yy:728 -msgid "\\paper cannot be used in \\score, use \\layout instead" +#: chord-entry.scm:52 +#, scheme-format +msgid "Spurious garbage following chord: ~A" msgstr "" -#: parser.yy:752 -msgid "need \\paper for paper block" +#: lily.scm:234 +msgid "Using (ice-9 curried-definitions) module\n" msgstr "" -#: parser.yy:1211 -msgid "Grob name should be alphanumeric" +#: lily.scm:237 +msgid "Guile 1.8\n" msgstr "" -#: parser.yy:1509 -#, fuzzy -msgid "second argument must be pitch list" -msgstr "ÂèÆó°ú¿ô¤Ï¥·¥ó¥Ü¥ë¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" +#: lily.scm:297 +#, fuzzy, scheme-format +msgid "cannot find: ~A" +msgstr "見つかりません: `%s'" -#: parser.yy:1536 parser.yy:1541 parser.yy:2006 +#: lily.scm:701 #, fuzzy -msgid "have to be in Lyric mode for lyrics" -msgstr "²Î»ì¤Ï Lyric ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤" +msgid "Success: compilation successfully completed" +msgstr "全ての操作が無事完了しました" -#: parser.yy:1638 -msgid "expecting string as script definition" +#: lily.scm:702 +msgid "Compilation completed with warnings or errors" msgstr "" -#: parser.yy:1793 parser.yy:1843 -#, c-format -msgid "not a duration: %d" -msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d" - -#: parser.yy:1960 -#, fuzzy -msgid "have to be in Note mode for notes" -msgstr "²»Éä¤Ï Note ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤" +#: lily.scm:764 +#, fuzzy, scheme-format +msgid "job ~a terminated with signal: ~a" +msgstr "サーバへの接続開始前に実行したコマンドがシグナル %d で終了しました\n" -#: parser.yy:2021 -#, fuzzy -msgid "have to be in Chord mode for chords" -msgstr "¥³¡¼¥É¤Ï Chord ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤" +#: lily.scm:767 +#, fuzzy, scheme-format +msgid "" +"logfile ~a (exit ~a):\n" +"~a" +msgstr " 終了を確認(&E) " -#: lexer.ll:179 -msgid "stray UTF-8 BOM encountered" -msgstr "" +#: lily.scm:789 lily.scm:869 +#, fuzzy, scheme-format +msgid "failed files: ~S" +msgstr "ファイルの追加" -#: lexer.ll:183 -msgid "Skipping UTF-8 BOM" +#: lily.scm:860 +#, fuzzy, scheme-format +msgid "Redirecting output to ~a..." msgstr "" +"\n" +"%s を受信しました、%s に出力をリダイレクトします。\n" -#: lexer.ll:238 -#, c-format -msgid "Renaming input to: `%s'" -msgstr "" +#: lily.scm:879 ps-to-png.scm:66 +#, fuzzy, scheme-format +msgid "Invoking `~a'...\n" +msgstr "PGP 起動中..." -#: lexer.ll:255 -msgid "quoted string expected after \\version" +#: lily-library.scm:761 +msgid "" +"Find the index between @var{start} and @var{end} (an integer)\n" +"which produces the closest match to @var{target-val} if\n" +"applied to function @var{getter}." msgstr "" -#: lexer.ll:259 -msgid "quoted string expected after \\sourcefilename" -msgstr "" +#: lily-library.scm:835 +#, fuzzy, scheme-format +msgid "unknown unit: ~S" +msgstr "単位の編集" -#: lexer.ll:263 -msgid "integer expected after \\sourcefileline" +#: lily-library.scm:860 +#, scheme-format +msgid "no \\version statement found, please add~afor future compatibility" msgstr "" -#: lexer.ll:276 -msgid "EOF found inside a comment" -msgstr "¥³¥á¥ó¥ÈÆâ¤Ë EOF ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿" - -#: lexer.ll:291 +#: lily-library.scm:866 #, fuzzy -msgid "\\maininput not allowed outside init files" -msgstr "½é´ü²½¥Õ¥¡¥¤¥ë¤Î³°¤Ç¤Ï \\maininput ¤òµ­½Ò¤Ç¤­¤Þ¤»¤ó" - -#: lexer.ll:315 -#, fuzzy, c-format -msgid "wrong or undefined identifier: `%s'" -msgstr "̤ÄêµÁ¤Î¼±ÊÌ»Ò: `%s'" +msgid "old relative compatibility not used" +msgstr "GP が未定義の時に GP 関連再配置が使われました" -#. backup rule -#: lexer.ll:324 -msgid "end quote missing" -msgstr "" +#: framework-svg.scm:84 +#, fuzzy, scheme-format +msgid "Updating font into: ~a" +msgstr "選択範囲内に貼り付け(_I)" -#: lexer.ll:469 -msgid "Brace found at end of lyric. Did you forget a space?" -msgstr "" +#: part-combiner.scm:598 +#, fuzzy, scheme-format +msgid "quoted music `~a' is empty" +msgstr "警告: 「%s」は空のファイルです\n" -#: lexer.ll:582 -msgid "Brace found at end of markup. Did you forget a space?" -msgstr "" +#: music-functions.scm:273 +#, fuzzy +msgid "More alternatives than repeats. Junking excess alternatives" +msgstr "繰り返しよりも選択肢が多い。超過分を捨てます。" -#: lexer.ll:686 -#, c-format -msgid "invalid character: `%c'" -msgstr "̵¸ú¤Êʸ»ú: `%c'" +#: music-functions.scm:302 +#, fuzzy, scheme-format +msgid "invalid tremolo repeat count: ~a" +msgstr "%s: 繰り返しカウントには `}' が必要です" -#: lexer.ll:801 lexer.ll:802 -#, c-format -msgid "unknown escaped string: `\\%s'" -msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'" +#: music-functions.scm:634 +#, fuzzy +msgid "Bad chord repetition" +msgstr "和音にAを追加" -#: lexer.ll:907 lexer.ll:908 -#, c-format -msgid "file too old: %s (oldest supported: %s)" -msgstr "" +#: music-functions.scm:669 +#, fuzzy, scheme-format +msgid "music expected: ~S" +msgstr "コロンを期待しました" -#: lexer.ll:908 lexer.ll:909 -msgid "consider updating the input with the convert-ly script" -msgstr "" +#: music-functions.scm:985 +#, fuzzy, scheme-format +msgid "cannot find quoted music: `~S'" +msgstr "'%s' の URL が見つかりません" -#: lexer.ll:914 lexer.ll:915 -#, c-format -msgid "program too old: %s (file requires: %s)" +#: music-functions.scm:1123 +msgid "Add @var{octave-shift} to the octave of @var{pitch}." msgstr "" -#: backend-library.scm:19 lily.scm:767 ps-to-png.scm:58 -#, scheme-format -msgid "Invoking `~a'..." -msgstr "" +#: music-functions.scm:1183 +#, fuzzy, scheme-format +msgid "Unknown octaveness type: ~S " +msgstr "ファイルタイプが不明です" -#: backend-library.scm:28 -#, scheme-format -msgid "`~a' failed (~a)" -msgstr "" +#: music-functions.scm:1184 +#, fuzzy +msgid "Defaulting to 'any-octave." +msgstr "%{エラーです。デフォルトを使います%}ト音記号" -#: backend-library.scm:117 framework-tex.scm:344 framework-tex.scm:369 -#, scheme-format -msgid "Converting to `~a'..." -msgstr "" +#: music-functions.scm:1521 +#, fuzzy, scheme-format +msgid "unknown accidental style: ~S" +msgstr "名前復元 (demangle) の方式 `%s' が不明です" -#: backend-library.scm:130 -#, scheme-format -msgid "Converting to ~a..." +#: define-event-classes.scm:80 +msgid "All classes must be the last in their matrilineal line." msgstr "" -#: backend-library.scm:168 -#, fuzzy, scheme-format -msgid "Writing header field `~a' to `~a'..." -msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..." - -#: define-context-properties.scm:20 define-grob-properties.scm:10 -#: define-music-properties.scm:10 -#, scheme-format -msgid "symbol ~S redefined" +#: define-event-classes.scm:84 +msgid "All classes must have a well-defined pedigree in the existing class hierarchy." msgstr "" -#: define-event-classes.scm:119 +#: define-event-classes.scm:151 #, scheme-format msgid "event class ~A seems to be unused" msgstr "" #. should be programming-error -#: define-event-classes.scm:125 +#: define-event-classes.scm:157 #, scheme-format msgid "translator listens to nonexisting event class ~A" msgstr "" -#: define-markup-commands.scm:296 -msgid "no systems found in \\score markup, does it have a \\layout block?" -msgstr "" - -#: define-markup-commands.scm:1310 -#, fuzzy, scheme-format -msgid "not a valid duration string: ~a" -msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d" - -#: define-music-types.scm:670 +#: markup-macros.scm:331 #, scheme-format -msgid "symbol expected: ~S" +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" msgstr "" -#: define-music-types.scm:673 +#: markup-macros.scm:337 #, scheme-format -msgid "cannot find music object: ~S" +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." msgstr "" -#: define-music-types.scm:692 +#: markup-macros.scm:373 #, fuzzy, scheme-format -msgid "unknown repeat type `~S'" -msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)" - -#: define-music-types.scm:693 -msgid "See music-types.scm for supported repeats" -msgstr "" - -#: document-backend.scm:91 -#, scheme-format -msgid "pair expected in doc ~s" -msgstr "" - -#: document-backend.scm:135 -#, scheme-format -msgid "cannot find interface for property: ~S" -msgstr "" +msgid "Not a markup command: ~A" +msgstr "「e」コマンドは、サポートされていません" -#: document-backend.scm:145 -#, scheme-format -msgid "unknown Grob interface: ~S" -msgstr "" +#: define-note-names.scm:962 +#, fuzzy +msgid "Select note names language." +msgstr "言語のコードを選択してください:" -#: documentation-lib.scm:45 +#: define-note-names.scm:968 #, fuzzy, scheme-format -msgid "Processing ~S..." -msgstr "½èÍýÃæ..." +msgid "Using `~a' note names..." +msgstr "パッケージ名総数: " -#: documentation-lib.scm:154 +#: define-note-names.scm:971 #, fuzzy, scheme-format -msgid "Writing ~S..." -msgstr "¹½Ê¸²òÀÏÃæ..." +msgid "Could not find language `~a'. Ignoring." +msgstr "マスター・ブラウザが見つかりませんでした" -#: documentation-lib.scm:176 -#, scheme-format -msgid "cannot find description for property ~S (~S)" -msgstr "" - -#: framework-eps.scm:90 +#: framework-ps.scm:250 #, fuzzy, scheme-format -msgid "Writing ~a..." -msgstr "¹½Ê¸²òÀÏÃæ..." - -#: framework-ps.scm:282 -#, scheme-format msgid "cannot embed ~S=~S" -msgstr "" +msgstr "%s: %s: stat できません: %s\n" -#: framework-ps.scm:335 -#, scheme-format +#: framework-ps.scm:293 +#, fuzzy, scheme-format msgid "cannot extract file matching ~a from ~a" -msgstr "" +msgstr "RPM ファイルからカタログを抽出できません。" -#: framework-ps.scm:352 +#: framework-ps.scm:311 #, scheme-format msgid "do not know how to embed ~S=~S" msgstr "" -#: framework-ps.scm:383 +#: framework-ps.scm:336 #, scheme-format msgid "do not know how to embed font ~s ~s ~s" msgstr "" -#: framework-ps.scm:750 -#, scheme-format -msgid "cannot convert to ~S" -msgstr "" - -#: framework-ps.scm:769 framework-ps.scm:772 -#, scheme-format -msgid "cannot generate ~S using the postscript back-end" -msgstr "" - -#: framework-ps.scm:779 +#: framework-ps.scm:686 msgid "" "\n" -"The PostScript backend does not support the system-by-system \n" -"output. For that, use the EPS backend instead,\n" +"The PostScript backend does not support the\n" +"system-by-system output. For that, use the EPS backend instead,\n" "\n" " lilypond -dbackend=eps FILE\n" "\n" @@ -2625,556 +3658,503 @@ msgid "" " %% ****************************************************************\n" msgstr "" -#: framework-tex.scm:361 -#, scheme-format -msgid "TeX file name must not contain whitespace: `~a'" -msgstr "" - -#: graphviz.scm:53 -#, scheme-format -msgid "Writing graph `~a'..." -msgstr "" - -#: layout-beam.scm:29 +#: layout-beam.scm:40 #, scheme-format msgid "Error in beam quanting. Expected (~S,~S) found ~S." msgstr "" -#: layout-beam.scm:46 +#: layout-beam.scm:54 #, scheme-format msgid "Error in beam quanting. Expected ~S 0, found ~S." msgstr "" -#: layout-page-layout.scm:124 -msgid "Can't fit systems on page -- ignoring between-system-padding" -msgstr "" - -#: layout-page-layout.scm:458 -msgid "Calculating page breaks..." -msgstr "" - -#: lily-library.scm:583 +#: define-music-types.scm:752 #, fuzzy, scheme-format -msgid "unknown unit: ~S" -msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'" - -#: lily-library.scm:617 -#, scheme-format -msgid "no \\version statement found, please add~afor future compatibility" -msgstr "" - -#: lily-library.scm:625 -msgid "old relative compatibility not used" -msgstr "" +msgid "symbol expected: ~S" +msgstr "コロンを期待しました" -#: lily.scm:177 +#: define-music-types.scm:755 #, fuzzy, scheme-format -msgid "cannot find: ~A" -msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" - -#: lily.scm:242 -#, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" -msgstr "" +msgid "cannot find music object: ~S" +msgstr "%s が共有オブジェクト %s に存在しません: %s" -#: lily.scm:634 -#, scheme-format -msgid "job ~a terminated with signal: ~a" -msgstr "" +#: define-music-types.scm:774 +#, fuzzy, scheme-format +msgid "unknown repeat type `~S'" +msgstr "ファイルタイプが不明です" -#: lily.scm:637 -#, scheme-format -msgid "" -"logfile ~a (exit ~a):\n" -"~a" +#: define-music-types.scm:775 +msgid "See define-music-types.scm for supported repeats" msgstr "" -#: lily.scm:664 lily.scm:757 +#: translation-functions.scm:351 #, scheme-format -msgid "failed files: ~S" -msgstr "" - -#: lily.scm:747 -#, fuzzy, scheme-format -msgid "Redirecting output to ~a..." -msgstr "%s ¤Ø paper ½ÐÎÏ..." - -#: ly-syntax-constructors.scm:40 -msgid "Music head function must return Music object" +msgid "Negative fret for pitch ~a on string ~a" msgstr "" -#: ly-syntax-constructors.scm:139 +#: translation-functions.scm:402 #, scheme-format -msgid "Invalid property operation ~a" +msgid "No open string for pitch ~a" msgstr "" -#: markup.scm:124 +#: translation-functions.scm:417 translation-functions.scm:429 #, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" msgstr "" -#: markup.scm:130 -#, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +#: translation-functions.scm:420 +msgid "Ignoring string request and recalculating." msgstr "" -#: music-functions.scm:228 +#: translation-functions.scm:432 #, fuzzy -msgid "More alternatives than repeats. Junking excess alternatives" -msgstr "·«¤êÊÖ¤·¤è¤ê¤âÁªÂò»è¤¬Â¿¤¤¡£Ä¶²áʬ¤ò¼Î¤Æ¤Þ¤¹¡£" +msgid "Ignoring note in tablature." +msgstr "'%s' が '%s' の中で重複しているので無視します" -#: music-functions.scm:240 +#: translation-functions.scm:455 #, scheme-format -msgid "invalid tremolo repeat count: ~a" +msgid "No string for pitch ~a (given frets ~a)" msgstr "" -#: music-functions.scm:248 +#: translation-functions.scm:560 #, scheme-format -msgid "expecting 2 elements for chord tremolo, found ~a" +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" msgstr "" -#: music-functions.scm:564 +#: ps-to-png.scm:70 #, fuzzy, scheme-format -msgid "music expected: ~S" -msgstr "¶õÇò¤¬É¬ÍפǤ¹" +msgid "~a exited with status: ~S" +msgstr "%s はステータス %d で終了しました" -#. FIXME: uncomprehensable message -#: music-functions.scm:614 -#, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" msgstr "" -#: music-functions.scm:764 +#: define-markup-commands.scm:2614 #, fuzzy, scheme-format -msgid "cannot find quoted music: `~S'" -msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" - -#: music-functions.scm:961 -#, fuzzy, scheme-format -msgid "unknown accidental style: ~S" -msgstr "¥Õ¥é¥Ã¥È¤¬Â¿¤¹¤®¤Þ¤¹ (%s)" - -#: output-ps.scm:276 -msgid "utf-8-string encountered in PS backend" -msgstr "" - -#: output-svg.scm:45 -#, scheme-format -msgid "undefined: ~S" -msgstr "" +msgid "Cannot find glyph ~a" +msgstr "ディレクトリ %s が見つかりません\n" -#: output-svg.scm:135 +#: define-markup-commands.scm:3040 #, scheme-format -msgid "cannot decypher Pango description: ~a" +msgid "no brace found for point size ~S " msgstr "" -#: output-tex.scm:96 +#: define-markup-commands.scm:3041 #, fuzzy, scheme-format -msgid "cannot find ~a in ~a" -msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgid "defaulting to ~S pt" +msgstr "%{エラーです。デフォルトを使います%}C" -#: paper.scm:85 -msgid "set-global-staff-size: not in toplevel scope" -msgstr "" +#: define-markup-commands.scm:3194 +#, fuzzy, scheme-format +msgid "not a valid duration string: ~a" +msgstr "文字列 '%s' は有効な長さではありません。\n" -#: paper.scm:133 -#, scheme-format -msgid "This is not a \\layout {} object, ~S" -msgstr "" +#: documentation-lib.scm:59 +#, fuzzy, scheme-format +msgid "Processing ~S..." +msgstr "処理中..." -#: paper.scm:145 +#: documentation-lib.scm:176 #, fuzzy, scheme-format -msgid "Unknown papersize: ~a" -msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'" +msgid "Writing ~S..." +msgstr "%s 書き込み中..." -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:160 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" -msgstr "" +#: documentation-lib.scm:188 +#, fuzzy, scheme-format +msgid "cannot find description for property `~S' (~S)" +msgstr "'%s' の属性のハッシュを書き込めません" -#: parser-clef.scm:129 +#: documentation-lib.scm:209 #, fuzzy, scheme-format -msgid "unknown clef type `~a'" -msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)" +msgid "cannot find description for property ~S (~S)" +msgstr "'%s' の属性のハッシュを書き込めません" -#: parser-clef.scm:130 -#, scheme-format -msgid "supported clefs: ~a" -msgstr "" +#: ly-syntax-constructors.scm:65 +#, fuzzy, scheme-format +msgid "~a function cannot return ~a" +msgstr "リターンで自動的にインデント(&R)" -#: ps-to-png.scm:64 +#: ly-syntax-constructors.scm:74 #, scheme-format -msgid "~a exited with status: ~S" +msgid "wrong type for argument ~a. Expecting ~a, found ~s" msgstr "" -#: to-xml.scm:180 -#, scheme-format -msgid "assertion failed: ~S" -msgstr "" +#: ly-syntax-constructors.scm:187 +#, fuzzy, scheme-format +msgid "Invalid property operation ~a" +msgstr "無効な操作コード" #~ msgid "EOF in a string" -#~ msgstr "ʸ»úÎóÃæ¤Ë EOF ¤¬¤¢¤ê¤Þ¤¹" +#~ msgstr "文字列中に EOF があります" #~ msgid "not enough fields in Dstream init" -#~ msgstr "Dstream ½é´ü²½»þ¤Î¥Õ¥£¡¼¥ë¥É¤¬ÉÔ½½Ê¬" - -#~ msgid "non fatal error: " -#~ msgstr "Ã×̿Ū¤Ç¤Ï¤Ê¤¤¥¨¥é¡¼: " +#~ msgstr "Dstream 初期化時のフィールドが不十分" #~ msgid "can't map file" -#~ msgstr "¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥×¤Ç¤­¤Þ¤»¤ó" +#~ msgstr "ファイルをマップできません" #~ msgid "Huh? Got %d, expected %d characters" -#~ msgstr "¤Ø¤Ã¡© %2$d ʸ»ú¤¢¤ë¤Ï¤º¤Ê¤Î¤Ë %1$d ʸ»ú¤·¤«¤Ê¤¤" +#~ msgstr "へっ? %2$d 文字あるはずなのに %1$d 文字しかない" #~ msgid "" #~ msgstr "" #~ msgid "can't find character number: %d" -#~ msgstr "ʸ»úÈֹ椬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %d" +#~ msgstr "文字番号が見つかりません: %d" + +#~ msgid "can't find character called: `%s'" +#~ msgstr "呼び出された文字が見つかりません: `%s'" #~ msgid "Error parsing AFM file" -#~ msgstr "AFM ¥Õ¥¡¥¤¥ë¤ò²òÀÏÃæ¤Ë¥¨¥é¡¼" +#~ msgstr "AFM ファイルを解析中にエラー" #~ msgid "Loading default font" -#~ msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤ò¥í¡¼¥É¤·¤Þ¤¹" +#~ msgstr "デフォルトフォントをロードします" #~ msgid "Can't switch translators, I'm there already" -#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤òÀÚ¤êÂØ¤¨¤é¤ì¤Þ¤»¤ó¡£´û¤Ë¤½¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹" +#~ msgstr "トランスレータを切り替えられません。既にそうなっています" #~ msgid "beam has less than two stems" -#~ msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿" +#~ msgstr "鈎が二つ未満の符尾とともに使われました" #~ msgid "weird beam vertical offset" -#~ msgstr "¿âľÊý¸þ¤Î°ÌÃ֤Ȥ·¤Æ¤ª¤«¤·¤Ê³Ã" +#~ msgstr "垂直方向の位置としておかしな鈎" #~ msgid "I'm one myself" -#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤½¤Î¤â¤Î¤Ç¤¹" +#~ msgstr "トランスレータそのものです" #~ msgid "no one to print a tremolos" -#~ msgstr "¥È¥ì¥â¥í¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¤¤Þ¤»¤ó" +#~ msgstr "トレモロを表示するものがいません" #~ msgid "invalid subtraction: not part of chord: %s" -#~ msgstr "̵¸ú¤Ê°ú¤­»»: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s" +#~ msgstr "無効な引き算: コードの一部ではありません: %s" #~ msgid "invalid inversion pitch: not part of chord: %s" -#~ msgstr "̵¸ú¤Êž²ó¥Ô¥Ã¥Á: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s" +#~ msgstr "無効な転回ピッチ: コードの一部ではありません: %s" #~ msgid "too small" -#~ msgstr "¾®¤µ¤¹¤®¤Þ¤¹" +#~ msgstr "小さすぎます" #~ msgid "minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken" -#~ msgstr "minVerticalAlign != maxVerticalAlign: ¸òº¹¤·¤¿¥¹¥Ñ¥Ê¤¬²õ¤ì¤¿¤«¤â" +#~ msgstr "minVerticalAlign != maxVerticalAlign: 交差したスパナが壊れたかも" #~ msgid "floating point exception" -#~ msgstr "ÉâÆ°¾®¿ôÅÀÎã³°" +#~ msgstr "浮動小数点例外" #~ msgid "can't set mem-checking!" -#~ msgstr "¥á¥â¥ê¥Á¥§¥Ã¥¯¤òÀßÄê¤Ç¤­¤Þ¤»¤ó!" +#~ msgstr "メモリチェックを設定できません!" #~ msgid "NaN" #~ msgstr "NaN" #~ msgid "Nothing to connect extender to on the left. Ignoring extender request." -#~ msgstr "¥¨¥¯¥¹¥Æ¥ó¥À¤¬º¸Â¦¤Ë¤Ä¤Ê¤¬¤ê¤Þ¤»¤ó¡£¥¨¥¯¥¹¥Æ¥ó¥ÀÍ×µá¤ò̵»ë¤·¤Þ¤¹¡£" +#~ msgstr "エクステンダが左側につながりません。エクステンダ要求を無視します。" #~ msgid "no one to print a repeat brace" -#~ msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "反復記号を表示するものがありません" -#~ msgid "no Grace context available" -#~ msgstr "Áõ¾þ¥³¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgid "No feasible line breaking found" +#~ msgstr "不適切な改行が見つかりました" #~ msgid "Unattached grace notes. Attaching to last musical column." -#~ msgstr "Áõ¾þ²»É䤬¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£Ä¾Á°¤Î¥«¥é¥à¤Ë¤Ä¤±¤Þ¤¹" +#~ msgstr "装飾音符がつけられませんでした。直前のカラムにつけます" #~ msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." -#~ msgstr "º¸Â¦¤Ë·Ò¤²¤ë¥Ï¥¤¥Õ¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ï¥¤¥Õ¥ó¤ÎÍ×µá¤ò̵»ë¤·¤Þ¤¹" +#~ msgstr "左側に繋げるハイフンがありません。ハイフンの要求を無視します" #~ msgid "wrong identifier type, expected: `%s'" -#~ msgstr "´Ö°ã¤Ã¤¿¼±Ê̻ҷ¿¡¢¤³¤³¤ËÍè¤ë¤Ù¤­¤â¤Î¤Ï: `%s'" +#~ msgstr "間違った識別子型、ここに来るべきものは: `%s'" #~ msgid "No key name, assuming `C'" -#~ msgstr "¥­¡¼Ì¾¤¬¤¢¤ê¤Þ¤»¤ó¡¢`C' ¤ò»î¤ß¤Þ¤¹" +#~ msgstr "キー名がありません、`C' を試みます" #~ msgid "Don't know how handle empty keys" -#~ msgstr "¶õ¤Î¥­¡¼¤Î°·¤¤Êý¤¬È½¤ê¤Þ¤»¤ó" +#~ msgstr "空のキーの扱い方が判りません" #~ msgid "FIXME: key change merge" -#~ msgstr "FIXME: ¥­¡¼Êѹ¹¤Î¥Þ¡¼¥¸" +#~ msgstr "FIXME: キー変更のマージ" #~ msgid "overdone accidentals (%s)" -#~ msgstr "¥·¥ã¡¼¥×¤¬Â¿¤¹¤®¤Þ¤¹ (%s)" +#~ msgstr "シャープが多すぎます (%s)" #~ msgid "out of tune:" -#~ msgstr "Èϰϳ°¤ÎÄ´:" +#~ msgstr "範囲外の調:" #~ msgid "Non-matching braces in text `%s', adding braces" -#~ msgstr "¥Æ¥­¥¹¥È `%s' Ãæ¤Ë°ìÃפ¹¤ë¥Ö¥ì¡¼¥¹¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ö¥ì¡¼¥¹¤òÄɲä·¤Þ¤¹" +#~ msgstr "テキスト `%s' 中に一致するブレースがありません。ブレースを追加します" #~ msgid "enable debugging output" -#~ msgstr "¥Ç¥Ð¥Ã¥°½ÐÎϤòÍ­¸ú" +#~ msgstr "デバッグ出力を有効" #~ msgid "EXT" #~ msgstr "EXT" #, fuzzy #~ msgid "use output format EXT (scm, ps, tex or as)" -#~ msgstr "½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È EXT (scm, ps, tex) ¤ò»È¤¦" +#~ msgstr "出力フォーマット EXT (scm, ps, tex) を使う" #~ msgid "this help" -#~ msgstr "¤³¤Î¥Ø¥ë¥×" +#~ msgstr "このヘルプ" #~ msgid "write Makefile dependencies for every input file" -#~ msgstr "Á´¤Æ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Î Makefile °Í¸´Ø·¸¤ò½ñ¤­¹þ¤à" +#~ msgstr "全ての入力ファイルの Makefile 依存関係を書き込む" #~ msgid "produce MIDI output only" -#~ msgstr "MIDI ½ÐÎϤÎÀ¸À®¤Î¤ß" +#~ msgstr "MIDI 出力の生成のみ" #~ msgid "BASENAME" #~ msgstr "BASENAME" #~ msgid "write output to BASENAME[-x].extension" -#~ msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à" +#~ msgstr "BASENAME[-x].拡張子 へ出力を書き込む" #~ msgid "show all changes in relative syntax" -#~ msgstr "´ØÏ¢¤¹¤ëʸˡ¤«¤éÁ´¤Æ¤ÎÊѹ¹¤òɽ¼¨" +#~ msgstr "関連する文法から全ての変更を表示" #~ msgid "inhibit file output naming and exporting" -#~ msgstr "̾Á°ÉÕ¤±¤È¥¨¥¯¥¹¥Ý¡¼¥È¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤òÍÞÀ©¤¹¤ë" +#~ msgstr "名前付けとエクスポートの出力ファイルを抑制する" #~ msgid "don't timestamp the output" -#~ msgstr "½ÐÎϤ˥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤Ä¤±¤Ê¤¤" +#~ msgstr "出力にタイムスタンプをつけない" #~ msgid "switch on experimental features" -#~ msgstr "¼Â¸³Åª¤Êµ¡Ç½¤òÍ­¸ú¤Ë¤¹¤ë" +#~ msgstr "実験的な機能を有効にする" #~ msgid "ignore mudela version" -#~ msgstr "mudela ¤Î¥Ð¡¼¥¸¥ç¥ó¤ò̵»ë¤¹¤ë" +#~ msgstr "mudela のバージョンを無視する" #~ msgid "" #~ "LilyPond is a music typesetter. It produces beautiful sheet music\n" #~ "using a high level description file as input. LilyPond is part of \n" #~ "the GNU Project.\n" #~ msgstr "" -#~ "LilyPond ¤Ï³Ú¶ÊÁÈÈÇ¥½¥Õ¥È¤Ç¤¹¡£ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ë¤Ï¥Ï¥¤¥ì¥Ù¥ë¤Êµ­½Ò¤ò»ÈÍѤǤ­¡¢\n" -#~ "Èþ¤·¤¤ÉèÌ̤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£LilyPond ¤Ï GNU ¥×¥í¥¸¥§¥¯¥È¤Î°ìÉô¤Ç¤¹¡£\n" +#~ "LilyPond は楽曲組版ソフトです。入力ファイルにはハイレベルな記述を使用でき、\n" +#~ "美しい譜面を作成することができます。LilyPond は GNU プロジェクトの一部です。\n" #~ msgid "This binary was compiled with the following options:" -#~ msgstr "¤³¤Î¥Ð¥¤¥Ê¥ê¤Ï°Ê²¼¤Î¥ª¥×¥·¥ç¥óÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿" +#~ msgstr "このバイナリは以下のオプション付きでコンパイルされました" #~ msgid "GNU LilyPond -- The GNU Project music typesetter" #~ msgstr "GNU LilyPond -- The GNU Project music typesetter" #~ msgid "unconventional key: flats: %d, sharps: %d" -#~ msgstr "´·½¬¤Ë¹ç¤ï¤Ê¤¤¥­¡¼¤Ç¤¹: ¥Õ¥é¥Ã¥È: %d ¸Ä, ¥·¥ã¡¼¥× %d ¸Ä" +#~ msgstr "慣習に合わないキーです: フラット: %d 個, シャープ %d 個" #~ msgid "silly duration" -#~ msgstr "Çϼ¯¤²¤¿²»Ä¹" +#~ msgstr "馬鹿げた音長" #~ msgid "silly pitch" -#~ msgstr "Çϼ¯¤²¤¿¥Ô¥Ã¥Á" +#~ msgstr "馬鹿げたピッチ" #~ msgid "Error syncing file (disk full?)" -#~ msgstr "¥Õ¥¡¥¤¥ë¤ÎƱĴ¥¨¥é¡¼ (¥Ç¥£¥¹¥¯¤¬°ìÇÕ?)" +#~ msgstr "ファイルの同調エラー (ディスクが一杯?)" #~ msgid "Interpretation context with empty type" -#~ msgstr "¶õ¥¿¥¤¥×¤Î²ò¼á¥³¥ó¥Æ¥­¥¹¥È" +#~ msgstr "空タイプの解釈コンテキスト" + +#~ msgid "error at EOF: %s" +#~ msgstr "EOF のところでエラー: %s" + +#~ msgid "Braces don't match" +#~ msgstr "ブレースが一致しません" #~ msgid "not a real variable" -#~ msgstr "Ãͤ¬¼Â¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "値が実数ではありません" #~ msgid ", at " #~ msgstr ", at " #~ msgid "Outputting Score, defined at: " -#~ msgstr "ÉèÌ̤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤³¤ÇÄêµÁ: " +#~ msgstr "譜面を出力します。ここで定義: " #~ msgid "Creator: " -#~ msgstr "ºî¶Ê¼Ô: " +#~ msgstr "作曲者: " #~ msgid "Automatically generated" -#~ msgstr "¼«Æ°À¸À®¤µ¤ì¤¿" +#~ msgstr "自動生成された" #~ msgid "from musical definition: %s" -#~ msgstr "²»³ÚŪÄêµÁ¤è¤ê: %s" +#~ msgstr "音楽的定義より: %s" #~ msgid "Wrong type for property" -#~ msgstr "°À­ÃͤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹" +#~ msgstr "属性値のタイプが間違っています" #~ msgid "No bar engraver found. Ignoring repeats." -#~ msgstr "¾®À᤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£È¿Éü¤ò̵»ë¤·¤Þ¤¹¡£" - -#~ msgid "Junking request: `%s'" -#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" +#~ msgstr "小節が見つかりません。反復を無視します。" #~ msgid "Huh? Not a Request: `%s'" -#~ msgstr "¤Ï? Í×µá¤Ç¤Ï¤Ê¤¤: `%s'" +#~ msgstr "は? 要求ではない: `%s'" #~ msgid "too many notes for rest collision" -#~ msgstr "µÙÉä¤Î¾×ÆÍ¤ËÂФ·¤Æ²»É䤬¿¤¹¤®¤Þ¤¹" +#~ msgstr "休符の衝突に対して音符が多すぎます" #~ msgid "unbound spanner `%s'" -#~ msgstr "ÊĤ¸¤Æ¤¤¤Ê¤¤¥¹¥Ñ¥Ê `%s'" +#~ msgstr "閉じていないスパナ `%s'" #~ msgid "no toplevel translator" -#~ msgstr "ºÇ¾å°Ì¤Î¥È¥é¥ó¥¹¥ì¡¼¥¿¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "最上位のトランスレータがありません" #~ msgid "Score contains errors; will not process it" -#~ msgstr "³ÚÉè¤Ë¥¨¥é¡¼¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹ -- ½èÍý¤·¤Þ¤»¤ó" +#~ msgstr "楽譜にエラーが含まれています -- 処理しません" #~ msgid "Must stop before this music ends" -#~ msgstr "¤³¤Î³Ú¶Ê¤Î½ª¤ï¤ê¤Þ¤Ç¤Ë»ß¤á¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" +#~ msgstr "この楽曲の終わりまでに止めなければなりません" #~ msgid "Single_malt_grouping_item: I've been drinking too much" -#~ msgstr "Single_malt_grouping_item: °û¤ß¤¹¤®¤Á¤ã¤Ã¤¿" +#~ msgstr "Single_malt_grouping_item: 飲みすぎちゃった" #~ msgid "can't find both ends of %s" -#~ msgstr "%s ¤Îξü¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +#~ msgstr "%s の両端が見つかりません" #~ msgid "slur" -#~ msgstr "¥¹¥é¡¼" +#~ msgstr "スラー" #~ msgid "Putting slur over rest. Ignoring." -#~ msgstr "µÙÉä¤ò¤Þ¤¿¤¤¤À¥¹¥é¡¼¤¬¤¢¤ê¤Þ¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£" +#~ msgstr "休符をまたいだスラーがあります。無視します。" #~ msgid "Slur over rest?" -#~ msgstr "¥¹¥é¡¼¤¬µÙÉä¤ò¤Þ¤¿¤¤¤Ç¤¤¤ë?" +#~ msgstr "スラーが休符をまたいでいる?" #~ msgid "Spanner `%s' has equal left and right spanpoints" -#~ msgstr "ÈϰϻØÄê»Ò `%s' ¤Îº¸±¦¤ÎÅÀ¤¬Æ±¤¸¤Ç¤¹" +#~ msgstr "範囲指定子 `%s' の左右の点が同じです" #~ msgid "TFM header of `%s' has only %u word(s)" -#~ msgstr "`%s' ¤Î TFM ¥Ø¥Ã¥À¤Ë %u ¸ì¤·¤«¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "`%s' の TFM ヘッダに %u 語しかありません" #~ msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" -#~ msgstr "%s: TFM ¥Õ¥¡¥¤¥ë¤Ï %u ¸Ä¤Î¥Ñ¥é¥á¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢%u °Ê¾å¤Ï°·¤¨¤Þ¤»¤ó" +#~ msgstr "%s: TFM ファイルは %u 個のパラメタがありますが、%u 以上は扱えません" #~ msgid "can't find ascii character: `%d'" -#~ msgstr "ascii ʸ»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%d'" +#~ msgstr "ascii 文字が見つかりません: `%d'" #~ msgid "No ties were created!" -#~ msgstr "ºî¤é¤ì¤¿¥¿¥¤¤¬¤¢¤ê¤Þ¤»¤ó!" +#~ msgstr "作られたタイがありません!" #~ msgid "no one to print a tuplet start bracket" -#~ msgstr "Ï¢É䳫»Ï¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "連符開始ブラケットを表示するものがありません" #~ msgid "lost in time:" -#~ msgstr "Çï»Ò¤Ë̤¤¤Þ¤·¤¿:" +#~ msgstr "拍子に迷いました:" #~ msgid "This is the other timing request" -#~ msgstr "¤³¤ì¤ÏÊ̤ÎÇï»ÒÍ×µá¤Ç¤¹" +#~ msgstr "これは別の拍子要求です" + +#~ msgid "Program has no such type" +#~ msgstr "プログラムにはその様なタイプがありません" #~ msgid "Already contains: `%s'" -#~ msgstr "´û¤Ë´Þ¤ó¤Ç¤¤¤Þ¤¹: `%s'" +#~ msgstr "既に含んでいます: `%s'" #~ msgid "no one to print a volta bracket" -#~ msgstr "volta ¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "volta ブラケットを表示するものがありません" #~ msgid "Oldest supported input version: %s" -#~ msgstr "°ìÈָŤ¤ÆþÎϲÄǽ¥Ð¡¼¥¸¥ç¥ó: %s" +#~ msgstr "一番古い入力可能バージョン: %s" #~ msgid "Need a translator group for a context" -#~ msgstr "¥³¥ó¥Æ¥­¥¹¥È¤Ë¤Ï¥È¥é¥ó¥¹¥ì¡¼¥¿¥°¥ë¡¼¥×¤¬É¬ÍפǤ¹" +#~ msgstr "コンテキストにはトランスレータグループが必要です" #~ msgid "Wrong type for property value" -#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹" +#~ msgstr "属性値へのタイプが間違っています" + +#~ msgid "Second argument must be a symbol" +#~ msgstr "第二引数はシンボルでなければなりません" #~ msgid "First argument must be a procedure taking 1 argument" -#~ msgstr "Âè°ì°ú¿ô¤Ï°ú¿ô¤ò°ì¤Ä¤È¤ë¼ê³¤­¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" +#~ msgstr "第一引数は引数を一つとる手続きでなければなりません" #~ msgid "Can't specify direction for this request" -#~ msgstr "¤³¤ÎÍ×µá¤ËÂФ¹¤ëÊý¸þ¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" +#~ msgstr "この要求に対する方向を指定することはできません" #~ msgid "Expecting %d arguments" -#~ msgstr "%d ¸Ä¤Î°ú¿ô¤¬¤¢¤ë¤Ï¤º" +#~ msgstr "%d 個の引数があるはず" #~ msgid "Missing end quote" -#~ msgstr "½ªÎ»¥¯¥ª¡¼¥È¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "終了クオートがありません" #~ msgid "incorrect mudela version: %s (%s, %s)" -#~ msgstr "´Ö°ã¤Ã¤¿ mudela ¥Ð¡¼¥¸¥ç¥ó: %s (%s, %s)" +#~ msgstr "間違った mudela バージョン: %s (%s, %s)" #~ msgid "write exact durations, e.g.: a4*385/384" -#~ msgstr "Àµ³Î¤Ê²»Ä¹¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£Îã: a4*385/384" +#~ msgstr "正確な音長を書いてください。例: a4*385/384" #~ msgid "don't output tuplets or double dots, smallest is 32" -#~ msgstr "Ï¢Éä¤äÊ£ÉäÅÀ¤ò½ÐÎϤ·¤Ê¤¤¡¢ºÇ¾®¤Ï 32" - -#~ msgid "set FILE as default output" -#~ msgstr "¥Ç¥Õ¥©¥ë¥È½ÐÎϤȤ·¤Æ FILE ¤òÀßÄꤹ¤ë" +#~ msgstr "連符や複符点を出力しない、最小は 32" #~ msgid "don't output tuplets" -#~ msgstr "Ï¢Éä¤ò½ÐÎϤ·¤Þ¤»¤ó" +#~ msgstr "連符を出力しません" #~ msgid "be quiet" -#~ msgstr "ÀŤ«¤Ë¤·¤Þ¤¹" +#~ msgstr "静かにします" #~ msgid "set smallest duration" -#~ msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹" +#~ msgstr "音長を最小に設定します" #~ msgid "assume no double dotted notes" -#~ msgstr "Ê£ÉäÅÀ²»Éä¤ò̵¤¯¤¹¤è¤¦»î¤ß¤Þ¤¹" +#~ msgstr "複符点音符を無くすよう試みます" #~ msgid "Translate MIDI-file to mudela" -#~ msgstr "MIDI ¥Õ¥¡¥¤¥ë¤ò mudela ¤ËÊÑ´¹¤·¤Þ¤¹" +#~ msgstr "MIDI ファイルを mudela に変換します" #~ msgid "zero length string encountered" -#~ msgstr "Ťµ¥¼¥í¤Îʸ»úÎ󤬸½¤ï¤ì¤Þ¤·¤¿" +#~ msgstr "長さゼロの文字列が現われました" #~ msgid "MIDI header expected" -#~ msgstr "MIDI ¥Ø¥Ã¥À¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "MIDI ヘッダがありません" #~ msgid "invalid header length" -#~ msgstr "̵¸ú¤Ê¥Ø¥Ã¥ÀŤǤ¹" +#~ msgstr "無効なヘッダ長です" #~ msgid "invalid MIDI format" -#~ msgstr "̵¸ú¤Ê MIDI ¥Õ¥©¡¼¥Þ¥Ã¥È" +#~ msgstr "無効な MIDI フォーマット" #~ msgid "invalid number of tracks" -#~ msgstr "̵¸ú¤Ê¥È¥é¥Ã¥¯¿ô" +#~ msgstr "無効なトラック数" #~ msgid "can't handle non-metrical time" -#~ msgstr "±¤Î§¤Ë¤Ê¤é¤Ê¤¤Çï»Ò¤Ï°·¤¨¤Þ¤»¤ó" +#~ msgstr "韻律にならない拍子は扱えません" #~ msgid "Junking note-end event: channel = %d, pitch = %d" -#~ msgstr "²»É佪ü¥¤¥Ù¥ó¥È¤ò¼Î¤Æ¤Þ¤¹: channel = %d, pitch = %d" +#~ msgstr "音符終端イベントを捨てます: channel = %d, pitch = %d" #~ msgid "invalid running status" -#~ msgstr "̵¸ú¤Êưºî¾õÂÖ" +#~ msgstr "無効な動作状態" #~ msgid "unimplemented MIDI meta-event" -#~ msgstr "̤¼ÂÁõ¤Î MIDI ¥á¥¿¥¤¥Ù¥ó¥È" +#~ msgstr "未実装の MIDI メタイベント" #~ msgid "invalid MIDI event" -#~ msgstr "̵¸ú¤Ê MIDI ¥¤¥Ù¥ó¥È" +#~ msgstr "無効な MIDI イベント" #~ msgid "MIDI track expected" -#~ msgstr "MIDI ¥È¥é¥Ã¥¯¤¬É¬ÍפǤ¹" +#~ msgstr "MIDI トラックが必要です" #~ msgid "invalid track length" -#~ msgstr "̵¸ú¤Ê¥È¥é¥Ã¥¯Ä¹¤Ç¤¹" +#~ msgstr "無効なトラック長です" #~ msgid "#32 in quarter: %d" -#~ msgstr "»Íʬ¤ÎÃæ¤Ë #32: %d" +#~ msgstr "四分の中に #32: %d" #~ msgid "track %d:" -#~ msgstr "¥È¥é¥Ã¥¯ %d:" +#~ msgstr "トラック %d:" #~ msgid "track " -#~ msgstr "¥È¥é¥Ã¥¯ " +#~ msgstr "トラック " #~ msgid "NOT Filtering tempo..." -#~ msgstr "¥Æ¥ó¥Ý¤Î¥Õ¥£¥ë¥¿¤ò¤·¤Þ¤»¤ó..." +#~ msgstr "テンポのフィルタをしません..." #~ msgid "NOT Quantifying columns..." -#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤»¤ó..." +#~ msgstr "カラムの長さを量りません..." #~ msgid "Quantifying columns..." -#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤¹..." +#~ msgstr "カラムの長さを量ります..." #~ msgid "Settling columns..." -#~ msgstr "¥«¥é¥à¤ò·èÄꤷ¤Þ¤¹..." +#~ msgstr "カラムを決定します..." #~ msgid "% MIDI copyright:" #~ msgstr "% MIDI copyright:" @@ -3195,130 +4175,130 @@ msgstr "" #~ msgstr "% from input file: " #~ msgid "Debug output disabled. Compiled with NPRINT." -#~ msgstr "¥Ç¥Ð¥Ã¥°½ÐÎϤ¬Ìµ¸ú¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£NPRINT ¤Ä¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¡£" +#~ msgstr "デバッグ出力が無効にされています。NPRINT つきでコンパイルされました。" #~ msgid "programming warning: " -#~ msgstr "¥×¥í¥°¥é¥à¾å¤Î·Ù¹ð: " +#~ msgstr "プログラム上の警告: " #~ msgid "(search path: `%s)'" -#~ msgstr "(¸¡º÷¥Ñ¥¹: `%s')" +#~ msgstr "(検索パス: `%s')" #~ msgid "unfinished beam" -#~ msgstr "½ªÎ»¤µ¤ì¤Æ¤¤¤Ê¤¤³Ã" +#~ msgstr "終了されていない鈎" #~ msgid "0 lines" -#~ msgstr "0 ¹Ô" +#~ msgstr "0 行" #~ msgid "1 line (of %.0f columns)" -#~ msgstr "1 ¹Ô (%.0f ¥«¥é¥à)" +#~ msgstr "1 行 (%.0f カラム)" #~ msgid "%d lines (with an average of %.1f columns)" -#~ msgstr "%d ¹Ô (Ê¿¶Ñ %.1f ¥«¥é¥à)" +#~ msgstr "%d 行 (平均 %.1f カラム)" #~ msgid "Score does not have any columns" -#~ msgstr "ÉèÌ̤˥«¥é¥à¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "譜面にカラムがありません" #~ msgid "calculated %s exactly" -#~ msgstr "Àµ³Î¤Ë·×»»¤µ¤ì¤¿ %s" +#~ msgstr "正確に計算された %s" #~ msgid "elapsed time %.2f seconds" -#~ msgstr "%.2f É÷вá" +#~ msgstr "%.2f 秒経過" #~ msgid "Already have a tremolo beam" -#~ msgstr "¤¹¤Ç¤Ë¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤¹" +#~ msgstr "すでにトレモロ記号があります" #~ msgid "unfinished tremolo beam" -#~ msgstr "½ª¤ï¤Ã¤Æ¤¤¤Ê¤¤¥È¥ì¥â¥íµ­¹æ" +#~ msgstr "終わっていないトレモロ記号" #~ msgid "Got a dynamic already. Continuing dazed and confused." -#~ msgstr "´û¤ËưŪ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£º®Í𤷤¿¤Þ¤Þ³¤±¤Þ¤¹¡£" +#~ msgstr "既に動的になっています。混乱したまま続けます。" #~ msgid "Too many crescendi here" -#~ msgstr "¤³¤³¤Î¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬Â¿¤¹¤®¤Þ¤¹" +#~ msgstr "ここのクレッシェンドが多すぎます" #~ msgid "Ineq_constrained_qp::solve (): Constraint off by %f" -#~ msgstr "Ineq_constrained_qp::solve (): À©¸Â¤ò %f ¤Ç²ò½ü" +#~ msgstr "Ineq_constrained_qp::solve (): 制限を %f で解除" #~ msgid "Didn't converge!" -#~ msgstr "¼ý«¤·¤Þ¤»¤ó¤Ç¤·¤¿!" +#~ msgstr "収束しませんでした!" #~ msgid "too much degeneracy" -#~ msgstr "¾®¤µ¤¹¤®¤Þ¤¹" +#~ msgstr "小さすぎます" #~ msgid "Huh? Empty Line_of_score?" -#~ msgstr "¤Ï? ÉèÌ̤ιԤ¬¶õ?" +#~ msgstr "は? 譜面の行が空?" #~ msgid "redeclaration of `\\%s'" -#~ msgstr "`\\%s' ¤ÎºÆÀë¸À" +#~ msgstr "`\\%s' の再宣言" #~ msgid "Must set spring between differing columns" -#~ msgstr "°Û¤Ê¤ë¥«¥é¥à¤Î´Ö¤Ë spring ¤ò¥»¥Ã¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" +#~ msgstr "異なるカラムの間に spring をセットしなければなりません" #~ msgid "improbable offset for object type: `%s'" -#~ msgstr "¥ª¥Ö¥¸¥§¥¯¥È·¿¤Ë¤È¤Ã¤Æ¤¢¤ê¤½¤¦¤Ë¤Ê¤¤¥ª¥Õ¥»¥Ã¥È: `%s'" +#~ msgstr "オブジェクト型にとってありそうにないオフセット: `%s'" #~ msgid "Can't solve this casting problem exactly; reverting to Word_wrap" -#~ msgstr "Àµ³Î¤Ë¥­¥ã¥¹¥È¤ò²ò·è¤Ç¤­¤Þ¤»¤ó -- Word_wrap ¤ËÉüµ¢¤·¤Þ¤¹" +#~ msgstr "正確にキャストを解決できません -- Word_wrap に復帰します" #~ msgid "%s elements" -#~ msgstr "%s ¸Ä¤ÎÍ×ÁÇ" +#~ msgstr "%s 個の要素" #~ msgid "Left spanpoint is right spanpoint" -#~ msgstr "ÈϰϤκ¸Â¦¤¬¡¢±¦Â¦¤Ë¤¢¤ê¤Þ¤¹" +#~ msgstr "範囲の左側が、右側にあります" #~ msgid "spanner with negative length" -#~ msgstr "ÈϰϻØÄê»Ò¤¬Éé¤ÎŤµ¤Ç¤¹" +#~ msgstr "範囲指定子が負の長さです" #~ msgid "I'm too fat; call Oprah" -#~ msgstr "ÂÀ¤¹¤®¤Þ¤¹ -- Oprah ¤ò¸Æ¤ó¤Ç" +#~ msgstr "太すぎます -- Oprah を呼んで" #~ msgid "Improbable distance: %f point, setting to 10 mm" -#~ msgstr "¤¢¤ê¤½¤¦¤Ë¤Ê¤¤µ÷Î¥: %f ¥Ý¥¤¥ó¥È, 10 mm ¤ËÀßÄꤷ¤Þ¤¹" +#~ msgstr "ありそうにない距離: %f ポイント, 10 mm に設定します" #~ msgid "Negative distance, setting to 10 mm" -#~ msgstr "Éé¤ÎÃͤȤʤëµ÷Î¥, 10 mm ¤ËÀßÄꤷ¤Þ¤¹" +#~ msgstr "負の値となる距離, 10 mm に設定します" #~ msgid "stem direction set already!" -#~ msgstr "ÉäÈø¤ÎÊý¸þ¤Ï´û¤Ë¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤¹!" +#~ msgstr "符尾の方向は既にセットされています!" #~ msgid "unequal number of note heads for tie" -#~ msgstr "¥¿¥¤¤ËÂбþ¤¹¤ëÉ䯬¤Î¿ô¤¬¶ÑÅù¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "タイに対応する符頭の数が均等ではありません" #~ msgid "cadenza" #~ msgstr "cadenza" #~ msgid "Partial measure must be non-negative" -#~ msgstr "¾®ÀáÉô¤ÏÈóÉé¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó" +#~ msgstr "小節部は非負でなくてはなりません" #~ msgid "partial measure too large" -#~ msgstr "¾®ÀáÉô¤¬Â礭¤¹¤®¤Þ¤¹" +#~ msgstr "小節部が大きすぎます" #~ msgid "time signature change not allowed here" -#~ msgstr "¤³¤³¤Ç¤ÏÇï»Òµ­¹æ¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó" +#~ msgstr "ここでは拍子記号を変更できません" #~ msgid "Will ignore \\relative for transposed music" -#~ msgstr "žĴ¤µ¤ì¤¿³Ú¶Ê¤Ï \\relative ¤ò̵»ë¤·¤Þ¤¹" +#~ msgstr "転調された楽曲は \\relative を無視します" #~ msgid "Ugh, this measure is too long, breakpoint: %d" -#~ msgstr "¤¦¤°¤Ã¡¢¤³¤Î¾®Àá¤ÏŤ¹¤®¤Þ¤¹¡£¤­¤ë¾ì½ê: %d" +#~ msgstr "うぐっ、この小節は長すぎます。きる場所: %d" #~ msgid "Generating stupido solution" -#~ msgstr "Çϼ¯¤²¤¿²ò·è¤òÀ¸À®Ãæ" +#~ msgstr "馬鹿げた解決を生成中" #~ msgid "I don't fit; put me on Montignac" -#~ msgstr "¾å¼ê¤¯¤Ï¤Þ¤ê¤Þ¤»¤ó -- Montignac ¤Î¤È¤³¤í¤ËÃÖ¤¤¤Æ¤¯¤À¤µ¤¤" +#~ msgstr "上手くはまりません -- Montignac のところに置いてください" #~ msgid "More than one music block" -#~ msgstr "Ê£¿ô¤Î³Ú¶Ê¥Ö¥í¥Ã¥¯" +#~ msgstr "複数の楽曲ブロック" #~ msgid "Need even number of args for shape array" -#~ msgstr "shape ÇÛÎó¤Ø¤Î°ú¿ô¤Ï¶ö¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" +#~ msgstr "shape 配列への引数は偶数でなければなりません" #~ msgid "Can't abbreviate" -#~ msgstr "¾Êά¤Ç¤­¤Þ¤»¤ó" +#~ msgstr "省略できません" #~ msgid "Can't abbreviate tuplet" -#~ msgstr "¥¿¥×¥ì¥Ã¥È¤ò¾Êά¤Ç¤­¤Þ¤»¤ó" +#~ msgstr "タプレットを省略できません" #~ msgid "assume no tuplets" -#~ msgstr "ÉäÅÀ¤ò̵¤¯¤¹¤è¤¦»î¤ß¤Þ¤¹" +#~ msgstr "符点を無くすよう試みます" diff --git a/po/lilypond.pot b/po/lilypond.pot index 0ff656e5b5..c327e86751 100644 --- a/po/lilypond.pot +++ b/po/lilypond.pot @@ -1,12 +1,15 @@ -# Translation of LilyPond. -# Copyright (C) 1998--2011 Han-Wen Nienhuys, Jan Nieuwenhuizen -# This file is distributed under the same license as the lilypond package. +# Translation of LilyPond +# Copyright (C) 1998--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen. +# This file is distributed under the same license as the LilyPond package. +# FIRST AUTHOR , YEAR. # +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: lilypond 2.13.53\n" -"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" -"POT-Creation-Date: 2011-03-02 10:34+0100\n" +"Project-Id-Version: lilypond 2.16.0\n" +"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu." +"lilypond.bugs\n" +"POT-Creation-Date: 2012-08-24 11:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,63 +18,114 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: fontextract.py:25 +#: book_base.py:26 #, python-format -msgid "Scanning %s" +msgid "file not found: %s" msgstr "" -#: fontextract.py:70 +#: book_base.py:164 +msgid "Output function not implemented" +msgstr "" + +#: book_latex.py:170 +msgid "cannot find \\begin{document} in LaTeX document" +msgstr "" + +#: book_latex.py:188 #, python-format -msgid "Extracted %s" +msgid "Running `%s' on file `%s' to detect default page settings.\n" msgstr "" -#: fontextract.py:85 +#: book_latex.py:209 book_texinfo.py:228 +msgid "Unable to auto-detect default settings:\n" +msgstr "" + +#: book_latex.py:221 book_texinfo.py:240 #, python-format -msgid "Writing fonts to %s" +msgid "" +"Unable to auto-detect default settings:\n" +"%s" msgstr "" -#: book_snippets.py:519 +#: book_snippets.py:409 #, python-format msgid "deprecated ly-option used: %s=%s" msgstr "" -#: book_snippets.py:521 +#: book_snippets.py:411 #, python-format msgid "compatibility mode translation: %s=%s" msgstr "" -#: book_snippets.py:524 +#: book_snippets.py:414 #, python-format msgid "deprecated ly-option used: %s" msgstr "" -#: book_snippets.py:526 +#: book_snippets.py:416 #, python-format msgid "compatibility mode translation: %s" msgstr "" -#: book_snippets.py:544 +#: book_snippets.py:533 #, python-format msgid "ignoring unknown ly option: %s" msgstr "" -#: book_snippets.py:736 +#: book_snippets.py:624 +#, python-format +msgid "Missing files: %s" +msgstr "" + +#: book_snippets.py:654 #, python-format -msgid "Opening filter `%s'\n" +msgid "Could not overwrite file %s" msgstr "" -#: book_snippets.py:756 +#: book_snippets.py:741 +#, python-format +msgid "Running through filter `%s'" +msgstr "" + +#: book_snippets.py:761 #, python-format msgid "`%s' failed (%d)" msgstr "" -#: book_snippets.py:757 +#: book_snippets.py:762 msgid "The error log is as follows:" msgstr "" +#: book_snippets.py:882 +#, python-format +msgid "Converting MusicXML file `%s'...\n" +msgstr "" + +#: book_snippets.py:909 +#, python-format +msgid "" +"%s: duplicate filename but different contents of original file,\n" +"printing diff against existing file." +msgstr "" + +#: book_snippets.py:922 +#, python-format +msgid "" +"%s: duplicate filename but different contents of converted lilypond file,\n" +"printing diff against existing file." +msgstr "" + +#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is +#. used to detect relative/absolute paths, so the absolute path is not +#. detected as such and this command fails: +#: book_texinfo.py:206 +#, python-format +msgid "Running texi2pdf on file %s to detect default page settings.\n" +msgstr "" + #: convertrules.py:12 #, python-format -msgid "Not smart enough to convert %s" +msgid "Not smart enough to convert %s." msgstr "" #: convertrules.py:13 @@ -83,144 +137,148 @@ msgstr "" msgid "%s has been replaced by %s" msgstr "" -#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66 -#: input.cc:109 +#: convertrules.py:24 lilylib.py:131 warn.cc:223 #, c-format, python-format msgid "warning: %s" msgstr "" -#: convertrules.py:49 convertrules.py:99 +#: convertrules.py:49 convertrules.py:94 msgid "\\header { key = concat + with + operator }" msgstr "" -#: convertrules.py:58 +#: convertrules.py:56 #, python-format msgid "deprecated %s" msgstr "" -#: convertrules.py:70 +#: convertrules.py:65 msgid "deprecated \\textstyle, new \\key syntax" msgstr "" -#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084 -#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862 +#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031 +#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800 +#: convertrules.py:3150 convertrules.py:3384 msgid "bump version for release" msgstr "" -#: convertrules.py:103 +#: convertrules.py:97 msgid "new \\header format" msgstr "" -#: convertrules.py:132 +#: convertrules.py:124 msgid "\\translator syntax" msgstr "" -#: convertrules.py:184 +#: convertrules.py:175 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative" msgstr "" -#: convertrules.py:216 convertrules.py:699 convertrules.py:1383 -#: convertrules.py:2378 +#: convertrules.py:205 convertrules.py:678 convertrules.py:1350 +#: convertrules.py:2317 #, python-format msgid "deprecate %s" msgstr "" -#: convertrules.py:290 +#: convertrules.py:279 #, python-format msgid "deprecate %s " msgstr "" -#: convertrules.py:319 +#: convertrules.py:305 msgid "new \\notenames format" msgstr "" -#: convertrules.py:337 +#: convertrules.py:321 msgid "new tremolo format" msgstr "" -#: convertrules.py:342 +#: convertrules.py:325 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver" msgstr "" -#: convertrules.py:395 -msgid "change property definiton case (eg. onevoice -> oneVoice)" +#: convertrules.py:376 +msgid "change property definition case (eg. onevoice -> oneVoice)" msgstr "" -#: convertrules.py:457 +#: convertrules.py:437 msgid "new \\textscript markup text" msgstr "" -#: convertrules.py:530 +#: convertrules.py:509 #, python-format msgid "identifier names: %s" msgstr "" -#: convertrules.py:569 +#: convertrules.py:548 msgid "point-and-click argument changed to procedure." msgstr "" -#: convertrules.py:611 +#: convertrules.py:590 msgid "semicolons removed" msgstr "" #. 40 ? -#: convertrules.py:654 +#: convertrules.py:633 #, python-format msgid "%s property names" msgstr "" -#: convertrules.py:724 +#: convertrules.py:703 msgid "automaticMelismata turned on by default" msgstr "" -#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942 -#: convertrules.py:2189 +#: convertrules.py:708 +msgid "automaticMelismata is turned on by default since 1.5.67." +msgstr "" + +#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889 +#: convertrules.py:2134 #, python-format msgid "remove %s" msgstr "" -#: convertrules.py:1001 convertrules.py:1005 +#: convertrules.py:977 convertrules.py:980 msgid "cluster syntax" msgstr "" -#: convertrules.py:1014 +#: convertrules.py:987 msgid "new Pedal style syntax" msgstr "" -#: convertrules.py:1273 +#: convertrules.py:1246 msgid "" "New relative mode,\n" "Postfix articulations, new text markup syntax, new chord syntax." msgstr "" -#: convertrules.py:1286 +#: convertrules.py:1259 msgid "Remove - before articulation" msgstr "" -#: convertrules.py:1324 +#: convertrules.py:1294 #, python-format msgid "%s misspelling" msgstr "" -#: convertrules.py:1346 +#: convertrules.py:1313 msgid "Swap < > and << >>" msgstr "" -#: convertrules.py:1349 +#: convertrules.py:1316 msgid "attempting automatic \\figures conversion. Check results!" msgstr "" -#: convertrules.py:1400 +#: convertrules.py:1362 msgid "Use Scheme code to construct arbitrary note events." msgstr "" -#: convertrules.py:1407 +#: convertrules.py:1369 msgid "" "use symbolic constants for alterations,\n" "remove \\outputproperty, move ly:verbose into ly:get-option" msgstr "" -#: convertrules.py:1432 +#: convertrules.py:1394 #, python-format msgid "" "\\outputproperty found,\n" @@ -232,7 +290,7 @@ msgid "" "as a substitution text." msgstr "" -#: convertrules.py:1446 +#: convertrules.py:1406 msgid "" "The alteration field of Scheme pitches was multiplied by 2\n" "to support quarter tone accidentals. You must update the following " @@ -242,69 +300,70 @@ msgid "" "* keySignature settings made with \\property\n" msgstr "" -#: convertrules.py:1493 +#: convertrules.py:1449 msgid "removal of automaticMelismata; use melismaBusyProperties instead." msgstr "" -#: convertrules.py:1600 +#: convertrules.py:1556 msgid "\\partcombine syntax change to \\newpartcombine" msgstr "" -#: convertrules.py:1628 +#: convertrules.py:1581 msgid "" "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n" "Harmonic notes. Thread context removed. Lyrics context removed." msgstr "" -#: convertrules.py:1632 +#: convertrules.py:1585 msgid "Drums found. Enclose drum notes in \\drummode" msgstr "" -#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661 +#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614 #, python-format msgid "" "\n" "%s found. Check file manually!\n" msgstr "" -#: convertrules.py:1643 +#: convertrules.py:1596 msgid "Drum notation" msgstr "" -#: convertrules.py:1702 +#: convertrules.py:1655 msgid "new syntax for property settings:" msgstr "" -#: convertrules.py:1728 +#: convertrules.py:1681 msgid "Property setting syntax in \\translator{ }" msgstr "" -#: convertrules.py:1767 +#: convertrules.py:1720 msgid "Scheme grob function renaming" msgstr "" -#: convertrules.py:1780 +#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142 +#: convertrules.py:2708 #, python-format -msgid "use %s" +msgid "Use %s\n" msgstr "" -#: convertrules.py:1797 +#: convertrules.py:1747 msgid "More Scheme function renaming" msgstr "" -#: convertrules.py:1924 +#: convertrules.py:1871 msgid "" "Page layout has been changed, using paper size and margins.\n" "textheight is no longer used.\n" msgstr "" -#: convertrules.py:2010 +#: convertrules.py:1957 msgid "" "\\foo -> \\foomode (for chords, notes, etc.)\n" "fold \\new FooContext \\foomode into \\foo." msgstr "" -#: convertrules.py:2048 +#: convertrules.py:1995 msgid "" "staff size should be changed at top-level\n" "with\n" @@ -313,79 +372,79 @@ msgid "" "\n" msgstr "" -#: convertrules.py:2068 +#: convertrules.py:2015 msgid "regularize other identifiers" msgstr "" -#: convertrules.py:2136 +#: convertrules.py:2083 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click" msgstr "" -#: convertrules.py:2149 +#: convertrules.py:2094 msgid "LilyPond source must be UTF-8" msgstr "" -#: convertrules.py:2152 +#: convertrules.py:2097 msgid "Try the texstrings backend" msgstr "" -#: convertrules.py:2155 +#: convertrules.py:2100 #, python-format msgid "Do something like: %s" msgstr "" -#: convertrules.py:2158 +#: convertrules.py:2103 msgid "Or save as UTF-8 in your editor" msgstr "" -#: convertrules.py:2212 +#: convertrules.py:2153 msgid "warn about auto beam settings" msgstr "" -#: convertrules.py:2217 +#: convertrules.py:2157 msgid "auto beam settings" msgstr "" -#: convertrules.py:2219 +#: convertrules.py:2158 msgid "" "\n" "Auto beam settings must now specify each interesting moment in a measure\n" "explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n" msgstr "" -#: convertrules.py:2333 +#: convertrules.py:2271 msgid "verticalAlignmentChildCallback has been deprecated" msgstr "" -#: convertrules.py:2337 +#: convertrules.py:2276 msgid "Remove callbacks property, deprecate XY-extent-callback." msgstr "" -#: convertrules.py:2358 +#: convertrules.py:2297 msgid "Use grob closures iso. XY-offset-callbacks." msgstr "" -#: convertrules.py:2420 +#: convertrules.py:2359 msgid "foobar -> foo-bar for \\paper, \\layout" msgstr "" -#: convertrules.py:2530 +#: convertrules.py:2469 msgid "deprecate \\tempo in \\midi" msgstr "" -#: convertrules.py:2583 +#: convertrules.py:2522 msgid "deprecate cautionary-style. Use AccidentalCautionary properties" msgstr "" -#: convertrules.py:2596 +#: convertrules.py:2535 msgid "Rename accidental glyphs, use glyph-name-alist." msgstr "" -#: convertrules.py:2651 -msgid "edge-text settings for TextSpanner." +#: convertrules.py:2590 +msgid "edge-text settings for TextSpanner" msgstr "" -#: convertrules.py:2652 +#: convertrules.py:2591 #, python-format msgid "" "Use\n" @@ -393,119 +452,124 @@ msgid "" "%s" msgstr "" -#: convertrules.py:2685 +#: convertrules.py:2624 msgid "Use the `alignment-offsets' sub-property of\n" msgstr "" -#: convertrules.py:2686 +#: convertrules.py:2625 msgid "NonMusicalPaperColumn #'line-break-system-details\n" msgstr "" -#: convertrules.py:2687 +#: convertrules.py:2626 msgid "to set fixed distances between staves.\n" msgstr "" -#: convertrules.py:2699 +#: convertrules.py:2638 msgid "Use #'style not #'dash-fraction to select solid/dashed lines." msgstr "" -#: convertrules.py:2705 -msgid "all settings related to dashed lines.\n" +#: convertrules.py:2644 +msgid "all settings related to dashed lines" msgstr "" -#: convertrules.py:2706 +#: convertrules.py:2645 msgid "Use \\override ... #'style = #'line for solid lines and\n" msgstr "" -#: convertrules.py:2707 +#: convertrules.py:2646 msgid "\t\\override ... #'style = #'dashed-line for dashed lines." msgstr "" -#: convertrules.py:2743 +#: convertrules.py:2682 msgid "" "metronomeMarkFormatter uses text markup as second argument,\n" "fret diagram properties moved to fret-diagram-details." msgstr "" -#: convertrules.py:2748 +#: convertrules.py:2688 msgid "metronomeMarkFormatter got an additional text argument.\n" msgstr "" -#: convertrules.py:2749 +#: convertrules.py:2689 #, python-format msgid "" "The function assigned to Score.metronomeMarkFunction now uses the signature\n" "%s" msgstr "" -#: convertrules.py:2812 -msgid "\\put-adjacent argument order.\n" +#: convertrules.py:2707 +#, python-format +msgid "%s in fret-diagram properties" +msgstr "" + +#: convertrules.py:2751 +msgid "\\put-adjacent argument order" msgstr "" -#: convertrules.py:2813 +#: convertrules.py:2752 msgid "Axis and direction now come before markups:\n" msgstr "" -#: convertrules.py:2814 +#: convertrules.py:2753 msgid "\\put-adjacent axis dir markup markup." msgstr "" -#: convertrules.py:2845 -msgid "re-definition of InnerStaffGroup.\n" +#: convertrules.py:2784 +msgid "re-definition of InnerStaffGroup" msgstr "" -#: convertrules.py:2851 -msgid "re-definition of InnerChoirStaff.\n" +#: convertrules.py:2789 +msgid "re-definition of InnerChoirStaff" msgstr "" -#: convertrules.py:2861 +#: convertrules.py:2799 msgid "Syntax changes for \\addChordShape and \\chord-shape" msgstr "" -#: convertrules.py:2866 +#: convertrules.py:2804 msgid "stringTuning must be added to addChordShape call.\n" msgstr "" -#: convertrules.py:2872 +#: convertrules.py:2809 msgid "stringTuning must be added to chord-shape call.\n" msgstr "" -#: convertrules.py:2879 +#: convertrules.py:2815 msgid "Remove oldaddlyrics" msgstr "" -#: convertrules.py:2883 +#: convertrules.py:2819 msgid "" "oldaddlyrics is no longer supported. \n" " Use addlyrics or lyrsicsto instead.\n" msgstr "" -#: convertrules.py:2889 +#: convertrules.py:2825 msgid "" "keySignature property not reversed any more\n" "MIDI 47: orchestral strings -> orchestral harp" msgstr "" -#: convertrules.py:2894 +#: convertrules.py:2830 msgid "The alist for Staff.keySignature is no longer in reversed order.\n" msgstr "" -#: convertrules.py:2900 +#: convertrules.py:2836 msgid "" "\\bar \".\" now produces a thick barline\n" "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n" "Dash parameters for slurs and ties are now in dash-definition" msgstr "" -#: convertrules.py:2906 +#: convertrules.py:2842 msgid "\\bar \".\" now produces a thick barline.\n" msgstr "" -#: convertrules.py:2912 +#: convertrules.py:2848 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n" msgstr "" -#: convertrules.py:2917 +#: convertrules.py:2853 msgid "" "Autobeaming rules have changed. override-auto-beam-setting and\n" "revert-auto-beam-setting have been eliminated.\n" @@ -520,32 +584,27 @@ msgid "" "template replaced by new `Dynamics' context." msgstr "" -#: convertrules.py:2931 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now overriden with \\overrideBeamSettings.\n" +#: convertrules.py:2867 +msgid " Autobeam settings are now overriden with \\overrideBeamSettings.\n" msgstr "" -#: convertrules.py:2936 -msgid "" -"override-auto-beam-setting.\n" -" Autobeam settings are now reverted with \\revertBeamSettings.\n" +#: convertrules.py:2872 +msgid " Autobeam settings are now reverted with \\revertBeamSettings.\n" msgstr "" -#: convertrules.py:2941 +#: convertrules.py:2878 msgid "" -"beatGrouping. \n" -" beatGrouping with a specified context must now be accomplished with\n" +" beatGrouping with a specified context must now be accomplished with\n" " \\overrideBeamSettings.\n" msgstr "" -#: convertrules.py:2947 +#: convertrules.py:2884 msgid "" "alignment-offsets has been changed to alignment-distances: you must now " "specify the distances between staves rather than the offset of staves.\n" msgstr "" -#: convertrules.py:2958 +#: convertrules.py:2895 msgid "" "Remove obsolete engravers/translators: Note_swallow_translator,\n" "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n" @@ -553,56 +612,47 @@ msgid "" "New vertical spacing variables." msgstr "" -#: convertrules.py:2989 +#: convertrules.py:2926 msgid "" -"minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a " -"VerticalAxisGroup.\n" +"Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n" msgstr "" -#: convertrules.py:2995 +#: convertrules.py:2932 msgid "Unify fetaNumber and fetaDynamic encodings" msgstr "" -#: convertrules.py:3000 +#: convertrules.py:2937 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves" msgstr "" -#: convertrules.py:3011 +#: convertrules.py:2948 msgid "\\cresc etc. are now postfix operators" msgstr "" -#: convertrules.py:3017 +#: convertrules.py:2960 msgid "" "Eliminate beamSettings, beatLength, \\setBeatGrouping, " "\\overrideBeamSettings and \\revertBeamSettings.\n" "\"accordion.accEtcbase\" -> \"accordion.etcbass\"" msgstr "" -#: convertrules.py:3035 -msgid "" -"\\overrideBeamSettings. Use \\set beamExceptions or " -"\\overrideTimeSignatureSettings.\n" -msgstr "" - -#: convertrules.py:3039 -msgid "" -"\\revertBeamSettings. Use \\set beamExceptions or " -"\\revertTimeSignatureSettings.\n" +#: convertrules.py:2978 +msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n" msgstr "" -#: convertrules.py:3043 -msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n" +#: convertrules.py:2982 +msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n" msgstr "" -#: convertrules.py:3047 -msgid "beatLength. Use baseMoment and beatStructure.\n" +#: convertrules.py:2986 +msgid "Use baseMoment, beatStructure, and beamExceptions.\n" msgstr "" -#: convertrules.py:3051 -msgid "setbeatGrouping. Use baseMoment and beatStructure.\n" +#: convertrules.py:2990 convertrules.py:2994 +msgid "Use baseMoment and beatStructure.\n" msgstr "" -#: convertrules.py:3056 +#: convertrules.py:2999 msgid "" "Woodwind diagrams: Move size, thickness, and graphic from argument list to " "properties.\n" @@ -610,929 +660,1126 @@ msgid "" "instead." msgstr "" -#: convertrules.py:3061 +#: convertrules.py:3004 msgid "" -"woodwind-diagrams. Move size, thickness, and graphic to properties. " -"Argument should be just the key list.\n" +"Move size, thickness, and graphic to properties. Argument should be just " +"the key list.\n" msgstr "" -#: convertrules.py:3069 +#: convertrules.py:3012 msgid "" "Rename vertical spacing variables.\n" "Add fretboard-table argument to savePredefinedFretboard." msgstr "" -#: convertrules.py:3087 +#: convertrules.py:3030 msgid "Rename vertical spacing grob properties." msgstr "" -#: convertrules.py:3103 +#: convertrules.py:3046 msgid "Remove \\paper variables head-separation and foot-separation." msgstr "" -#: convertrules.py:3108 +#: convertrules.py:3050 msgid "Adjust settings for top-system-spacing instead.\n" msgstr "" -#: convertrules.py:3113 +#: convertrules.py:3054 msgid "Adjust settings for last-bottom-spacing instead.\n" msgstr "" -#: convertrules.py:3119 +#: convertrules.py:3060 msgid "" "Rename space to basic-distance in various spacing alists.\n" "Remove HarmonicParenthesesItem grob." msgstr "" -#: convertrules.py:3127 +#: convertrules.py:3067 msgid "HarmonicParenthesesItem has been eliminated.\n" msgstr "" -#: convertrules.py:3128 +#: convertrules.py:3068 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n" msgstr "" -#: convertrules.py:3133 +#: convertrules.py:3073 msgid "" "Remove context from overrideTimeSignatureSettings and " "revertTimeSignatureSettings.\n" msgstr "" -#: convertrules.py:3140 +#: convertrules.py:3080 msgid "" "Change stringTunings from a list of semitones to a list of pitches.\n" "Change tenor and baritone ukulele names in string tunings.\n" "Generate messages for manual conversion of vertical spacing if required." msgstr "" -#: convertrules.py:3180 -msgid "Vertical spacing changes might affect user-defined contexts. " +#: convertrules.py:3123 +msgid "Vertical spacing changes might affect user-defined contexts." msgstr "" -#: convertrules.py:3185 +#: convertrules.py:3129 msgid "Replace bar-size with bar-extent." msgstr "" -#: convertrules.py:3197 +#: convertrules.py:3141 msgid "Woodwind diagrams: Changes to the clarinet diagram." msgstr "" -#: convertrules.py:3201 +#: convertrules.py:3145 +msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n" +msgstr "" + +#: convertrules.py:3155 +msgid "Handling of non-automatic footnotes." +msgstr "" + +#: convertrules.py:3159 +msgid "" +"If you are using non-automatic footnotes, make sure to set footnote-auto-" +"numbering = ##f in the paper block.\n" +msgstr "" + +#: convertrules.py:3164 +msgid "Change in internal property for MultiMeasureRest" +msgstr "" + +#: convertrules.py:3168 +msgid "" +"This internal property has been replaced by round-up-to-longer-rest, round-" +"up-exceptions and usable-duration-logs.\n" +msgstr "" + +#: convertrules.py:3173 +msgid "" +"Creation of a Flag grob and moving of certain Stem properties to this grob" +msgstr "" + +#: convertrules.py:3209 +msgid "" +"consistent-broken-slope is now handled through the positions callback.\n" +msgstr "" + +#: convertrules.py:3210 msgid "" -"woodwind-diagrams. Clarinet fingering changed to reflect actual anatomy of " -"instrument.\n" +"input/regression/beam-broken-classic.ly shows how broken beams are now " +"handled.\n" msgstr "" -#: book_base.py:24 +#: convertrules.py:3368 +msgid "beamExceptions controls whole-measure beaming." +msgstr "" + +#: fontextract.py:25 #, python-format -msgid "file not found: %s" +msgid "Scanning %s" msgstr "" -#: book_base.py:161 -msgid "Output function not implemented" +#: fontextract.py:70 +#, python-format +msgid "Extracted %s" +msgstr "" + +#: fontextract.py:85 +#, python-format +msgid "Writing fonts to %s" +msgstr "" + +#: lilylib.py:96 +#, python-format +msgid "Setting loglevel to %s" +msgstr "" + +#: lilylib.py:99 +#, python-format +msgid "Unknown or invalid loglevel '%s'" msgstr "" -#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115 -#: input.cc:123 +#: lilylib.py:128 warn.cc:211 #, c-format, python-format msgid "error: %s" msgstr "" -#: lilylib.py:124 lilylib.py:175 +#: lilylib.py:185 +#, python-format +msgid "Processing %s.ly" +msgstr "" + +#: lilylib.py:189 lilylib.py:250 #, python-format msgid "Invoking `%s'" msgstr "" -#: lilylib.py:126 lilylib.py:177 +#: lilylib.py:191 lilylib.py:252 #, python-format msgid "Running %s..." msgstr "" -#: lilylib.py:253 +#: lilylib.py:328 #, python-format msgid "Usage: %s" msgstr "" -#: musicexp.py:216 musicexp.py:221 +#: musicexp.py:224 musicexp.py:229 msgid "Language does not support microtones contained in the piece" msgstr "" -#: musicexp.py:483 +#: musicexp.py:491 msgid "Tuplet brackets of curved shape are not correctly implemented" msgstr "" -#: musicexp.py:669 +#: musicexp.py:677 #, python-format msgid "unable to set the music %(music)s for the repeat %(repeat)s" msgstr "" -#: musicexp.py:678 +#: musicexp.py:686 msgid "encountered repeat without body" msgstr "" #. no self.elements! -#: musicexp.py:848 +#: musicexp.py:856 #, python-format msgid "Grace note with no following music: %s" msgstr "" -#: musicexp.py:1010 +#: musicexp.py:1018 #, python-format msgid "Invalid octave shift size found: %s. Using no shift." msgstr "" -#: musicexp.py:1468 +#: musicexp.py:1476 #, python-format msgid "Unable to convert alteration %s to a lilypond expression" msgstr "" #. TODO: Handle pieces without a time signature! -#: musicxml.py:358 +#: musicxml.py:361 msgid "Senza-misura time signatures are not yet supported!" msgstr "" -#: musicxml.py:376 +#: musicxml.py:379 msgid "Unable to interpret time signature! Falling back to 4/4." msgstr "" -#: musicxml.py:432 +#: musicxml.py:435 #, python-format msgid "" "Key alteration octave given for a non-existing alteration nr. %s, available " "numbers: %s!" msgstr "" -#: musicxml.py:520 +#: musicxml.py:523 #, python-format msgid "Unable to find instrument for ID=%s\n" msgstr "" -#: book_latex.py:156 -msgid "cannot find \\begin{document} in LaTeX document" +#: abc2ly.py:1376 convert-ly.py:81 lilypond-book.py:122 midi2ly.py:1044 +#, python-format +msgid "%s [OPTION]... FILE" msgstr "" -#: musicxml2ly.py:223 +#: abc2ly.py:1377 #, python-format msgid "" -"Encountered file created by %s, containing wrong beaming information. All " -"beaming information in the MusicXML file will be ignored" +"abc2ly converts ABC music files (see\n" +"%s) to LilyPond input.\n" msgstr "" -#: musicxml2ly.py:239 musicxml2ly.py:241 -#, python-format -msgid "Unprocessed PartGroupInfo %s encountered" +#: abc2ly.py:1385 convert-ly.py:88 etf2ly.py:1208 lilypond-book.py:231 +#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:174 +msgid "show version number and exit" msgstr "" -#: musicxml2ly.py:494 -#, python-format -msgid "Encountered note at %s without type and duration (=%s)" +#: abc2ly.py:1388 convert-ly.py:92 etf2ly.py:1204 lilypond-book.py:140 +#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:153 +msgid "show this help and exit" msgstr "" -#: musicxml2ly.py:514 -#, python-format +#: abc2ly.py:1391 etf2ly.py:1209 midi2ly.py:1071 +msgid "write output to FILE" +msgstr "" + +#: abc2ly.py:1394 +msgid "be strict about success" +msgstr "" + +#: abc2ly.py:1397 +msgid "preserve ABC's notion of beams" +msgstr "" + +#: abc2ly.py:1400 +msgid "suppress progress messages" +msgstr "" + +#. Translators, please translate this string as +#. "Report bugs in English via %s", +#. or if there is a LilyPond users list or forum in your language +#. "Report bugs in English via %s or in YOUR_LANG via URI" +#: abc2ly.py:1403 convert-ly.py:146 etf2ly.py:1218 lilypond-book.py:258 +#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:285 +#, c-format, python-format +msgid "Report bugs via %s" +msgstr "" + +#: convert-ly.py:46 msgid "" -"Encountered rational duration with denominator %s, unable to convert to " -"lilypond duration" +"Update LilyPond input to newer version. By default, update from the\n" +"version taken from the \\version command, to the current LilyPond version." msgstr "" -#: musicxml2ly.py:761 -msgid "Unable to extract key signature!" +#: convert-ly.py:48 lilypond-book.py:82 +msgid "Examples:" msgstr "" -#: musicxml2ly.py:788 +#: convert-ly.py:75 etf2ly.py:1191 lilypond-book.py:115 midi2ly.py:81 #, python-format -msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" +msgid "Copyright (c) %s by" msgstr "" -#: musicxml2ly.py:926 -#, python-format -msgid "Encountered unprocessed marker %s\n" +#: convert-ly.py:77 etf2ly.py:1193 lilypond-book.py:117 midi2ly.py:83 +msgid "Distributed under terms of the GNU General Public License." msgstr "" -#: musicxml2ly.py:1020 -#, python-format -msgid "unknown span event %s" +#: convert-ly.py:78 etf2ly.py:1194 lilypond-book.py:118 midi2ly.py:84 +msgid "It comes with NO WARRANTY." msgstr "" -#: musicxml2ly.py:1030 -#, python-format -msgid "unknown span type %s for %s" +#: convert-ly.py:96 convert-ly.py:137 +msgid "VERSION" msgstr "" -#: musicxml2ly.py:1450 -msgid "Unknown metronome mark, ignoring" +#: convert-ly.py:98 +msgid "start from VERSION [default: \\version found in file]" msgstr "" -#. TODO: Implement the other (more complex) way for tempo marks! -#: musicxml2ly.py:1455 -msgid "" -"Metronome marks with complex relations ( in MusicXML) are " -"not yet implemented." +#: convert-ly.py:101 +msgid "edit in place" msgstr "" -#: musicxml2ly.py:1657 -#, python-format -msgid "Unable to convert chord type %s to lilypond." +#: convert-ly.py:105 lilypond-book.py:179 musicxml2ly.py:2627 +msgid "" +"Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS " +"(default), DEBUG)" msgstr "" -#: musicxml2ly.py:1806 -#, python-format -msgid "drum %s type unknown, please add to instrument_drumtype_dict" +#: convert-ly.py:107 lilypond-book.py:163 lilypond-book.py:181 +#: musicxml2ly.py:2629 main.cc:167 +msgid "LOGLEVEL" msgstr "" -#: musicxml2ly.py:1810 -msgid "cannot find suitable event" +#: convert-ly.py:113 +msgid "do not add \\version command if missing" msgstr "" -#: musicxml2ly.py:1958 +#: convert-ly.py:119 #, python-format -msgid "Negative skip %s (from position %s to %s)" +msgid "force updating \\version number to %s" +msgstr "" + +#: convert-ly.py:125 +msgid "only update \\version number if file is modified" msgstr "" -#: musicxml2ly.py:2099 +#: convert-ly.py:131 #, python-format -msgid "Negative skip found: from %s to %s, difference is %s" +msgid "show rules [default: -f 0, -t %s]" msgstr "" -#: musicxml2ly.py:2180 +#: convert-ly.py:136 #, python-format -msgid "unexpected %s; expected %s or %s or %s" +msgid "convert to VERSION [default: %s]" msgstr "" -#: musicxml2ly.py:2286 -msgid "Encountered closing slur, but no slur is open" +#: convert-ly.py:141 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096 +#: main.cc:176 +msgid "show warranty and copyright" msgstr "" -#: musicxml2ly.py:2289 -msgid "Cannot have two simultaneous (closing) slurs" +#: convert-ly.py:186 +msgid "Applying conversion: " msgstr "" -#: musicxml2ly.py:2298 -msgid "Cannot have a slur inside another slur" +#: convert-ly.py:202 +msgid "Error while converting" msgstr "" -#: musicxml2ly.py:2301 -msgid "Cannot have two simultaneous slurs" +#: convert-ly.py:204 +msgid "Stopping at last successful rule" msgstr "" -#: musicxml2ly.py:2435 +#: convert-ly.py:231 #, python-format -msgid "cannot simultaneously have more than one mode: %s" +msgid "Processing `%s'... " msgstr "" -#: musicxml2ly.py:2543 -msgid "Converting to LilyPond expressions..." +#: convert-ly.py:338 +#, python-format +msgid "%s: Unable to open file" msgstr "" -#: musicxml2ly.py:2554 -msgid "musicxml2ly [OPTION]... FILE.xml" +#: convert-ly.py:345 +#, python-format +msgid "%s: Unable to determine version. Skipping" msgstr "" -#: musicxml2ly.py:2556 +#: convert-ly.py:350 +#, python-format msgid "" -"Convert MusicXML from FILE.xml to LilyPond input.\n" -"If the given filename is -, musicxml2ly reads from the command line.\n" +"%s: Invalid version string `%s' \n" +"Valid version strings consist of three numbers, separated by dots, e.g. " +"`2.8.12'" msgstr "" -#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140 -#: convert-ly.py:98 etf2ly.py:1202 main.cc:157 -msgid "show this help and exit" +#: etf2ly.py:1197 +#, python-format +msgid "%s [OPTION]... ETF-FILE" msgstr "" -#: musicxml2ly.py:2566 +#: etf2ly.py:1198 msgid "" -"Copyright (c) 2005--2011 by\n" -" Han-Wen Nienhuys ,\n" -" Jan Nieuwenhuizen and\n" -" Reinhold Kainhofer \n" +"Enigma Transport Format is a format used by Coda Music Technology's\n" +"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond " +"file.\n" msgstr "" -#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212 -#: convert-ly.py:94 etf2ly.py:1206 main.cc:168 -msgid "show version number and exit" +#: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659 +#: main.cc:159 main.cc:171 +msgid "FILE" msgstr "" -#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169 -msgid "be verbose" +#: lilypond-book.py:80 +msgid "" +"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." msgstr "" -#: musicxml2ly.py:2591 -msgid "use lxml.etree; uses less memory and cpu time" +#: lilypond-book.py:87 +msgid "BOOK" msgstr "" -#: musicxml2ly.py:2597 -msgid "input file is a zip-compressed MusicXML file" +#: lilypond-book.py:95 +#, python-format +msgid "Exiting (%d)..." msgstr "" -#: musicxml2ly.py:2603 -msgid "convert pitches in relative mode (default)" +#: lilypond-book.py:127 +msgid "FILTER" msgstr "" -#: musicxml2ly.py:2608 -msgid "convert pitches in absolute mode" +#: lilypond-book.py:130 +msgid "pipe snippets through FILTER [default: `convert-ly -n -']" msgstr "" -#: musicxml2ly.py:2611 -msgid "LANG" +#: lilypond-book.py:134 +msgid "" +"use output format FORMAT (texi [default], texi-html, latex, html, docbook)" msgstr "" -#: musicxml2ly.py:2613 -msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" +#: lilypond-book.py:135 +msgid "FORMAT" msgstr "" -#: musicxml2ly.py:2619 -msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." +#: lilypond-book.py:142 +msgid "add DIR to include path" msgstr "" -#: musicxml2ly.py:2625 -msgid "do not convert exact vertical positions of rests" +#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169 +#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158 +msgid "DIR" msgstr "" -#: musicxml2ly.py:2631 -msgid "do not convert the exact page layout and breaks" +#: lilypond-book.py:148 +msgid "format Texinfo output so that Info will look for images of music in DIR" +msgstr "" + +#: lilypond-book.py:155 +msgid "PAD" msgstr "" -#: musicxml2ly.py:2637 +#: lilypond-book.py:157 msgid "" -"do not convert beaming information, use lilypond's automatic beaming instead" +"pad left side of music to align music inspite of uneven bar numbers (in mm)" msgstr "" -#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208 -#: main.cc:161 main.cc:166 -msgid "FILE" +#: lilypond-book.py:162 +msgid "Print lilypond log messages according to LOGLEVEL" msgstr "" -#: musicxml2ly.py:2645 -msgid "set output filename to FILE, stdout if -" +#: lilypond-book.py:168 +msgid "write lily-XXX files to DIR, link into --output dir" msgstr "" -#. Translators, please translate this string as -#. "Report bugs in English via %s", -#. or if there is a LilyPond users list or forum in your language -#. "Report bugs in English via %s or in YOUR_LANG via URI" -#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234 -#: convert-ly.py:144 etf2ly.py:1216 main.cc:281 -#, c-format, python-format -msgid "Report bugs via %s" +#: lilypond-book.py:173 +msgid "" +"Load the additional python PACKAGE (containing e.g. a custom output format)" msgstr "" -#: musicxml2ly.py:2728 +#: lilypond-book.py:174 +msgid "PACKAGE" +msgstr "" + +#: lilypond-book.py:186 +msgid "write output to DIR" +msgstr "" + +#: lilypond-book.py:191 +msgid "COMMAND" +msgstr "" + +#: lilypond-book.py:192 +msgid "process ly_files using COMMAND FILE..." +msgstr "" + +#: lilypond-book.py:197 +msgid "Redirect the lilypond output" +msgstr "" + +#: lilypond-book.py:201 +msgid "Compile snippets in safe mode" +msgstr "" + +#: lilypond-book.py:207 +msgid "do not fail if no lilypond output is found" +msgstr "" + +#: lilypond-book.py:213 +msgid "do not fail if no PNG images are found for EPS files" +msgstr "" + +#: lilypond-book.py:219 +msgid "write snippet output files with the same base name as their source file" +msgstr "" + +#: lilypond-book.py:223 midi2ly.py:1090 musicxml2ly.py:2596 +msgid "be verbose" +msgstr "" + +#: lilypond-book.py:239 +msgid "" +"run executable PROG instead of latex, or in\n" +"case --pdf option is set instead of pdflatex" +msgstr "" + +#: lilypond-book.py:241 lilypond-book.py:246 +msgid "PROG" +msgstr "" + +#: lilypond-book.py:245 +msgid "run executable PROG instead of texi2pdf" +msgstr "" + +#: lilypond-book.py:252 +msgid "create PDF files for use with PDFTeX" +msgstr "" + +#: lilypond-book.py:455 +msgid "Writing snippets..." +msgstr "" + +#: lilypond-book.py:460 +msgid "Processing..." +msgstr "" + +#: lilypond-book.py:465 +msgid "All snippets are up to date..." +msgstr "" + +#: lilypond-book.py:467 +msgid "Linking files..." +msgstr "" + +#: lilypond-book.py:487 #, python-format -msgid "unknown part in part-list: %s" +msgid "cannot determine format for: %s" msgstr "" -#: musicxml2ly.py:2790 -msgid "Input is compressed, extracting raw MusicXML data from stdin" +#: lilypond-book.py:496 +#, python-format +msgid "%s is up to date." msgstr "" -#: musicxml2ly.py:2793 +#: lilypond-book.py:509 #, python-format -msgid "Input file %s is compressed, extracting raw MusicXML data" +msgid "Writing `%s'..." msgstr "" -#: musicxml2ly.py:2823 -msgid "Reading MusicXML from Standard input ..." +#: lilypond-book.py:570 +msgid "Output would overwrite input file; use --output." msgstr "" -#: musicxml2ly.py:2825 +#: lilypond-book.py:574 #, python-format -msgid "Reading MusicXML from %s ..." +msgid "Reading %s..." +msgstr "" + +#: lilypond-book.py:581 +msgid "Dissecting..." msgstr "" -#: musicxml2ly.py:2858 +#: lilypond-book.py:592 #, python-format -msgid "Output to `%s'" +msgid "Compiling %s..." msgstr "" -#: musicxml2ly.py:2925 +#: lilypond-book.py:600 #, python-format -msgid "Unable to find input file %s" +msgid "Processing include: %s" msgstr "" -#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189 +#: lilypond-book.py:611 #, python-format -msgid "Copyright (c) %s by" +msgid "Removing `%s'" msgstr "" -#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191 -msgid "Distributed under terms of the GNU General Public License." +#: lilypond-book.py:704 +#, python-format +msgid "Setting LilyPond's loglevel to %s" msgstr "" -#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192 -msgid "It comes with NO WARRANTY." +#: lilypond-book.py:708 +#, python-format +msgid "" +"Setting LilyPond's loglevel to %s (from environment variable " +"LILYPOND_LOGLEVEL)" +msgstr "" + +#: lilypond-book.py:711 +msgid "" +"Setting LilyPond's output to --verbose, implied by lilypond-book's setting" msgstr "" -#: midi2ly.py:99 +#: midi2ly.py:90 msgid "warning: " msgstr "" -#: midi2ly.py:102 midi2ly.py:1041 +#: midi2ly.py:93 midi2ly.py:1124 msgid "error: " msgstr "" -#: midi2ly.py:103 +#: midi2ly.py:94 msgid "Exiting... " msgstr "" -#: midi2ly.py:960 -#, python-format -msgid "%s output to `%s'..." +#: midi2ly.py:835 +msgid "found more than 5 voices on a staff, expect bad output" msgstr "" -#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87 +#: midi2ly.py:1032 #, python-format -msgid "%s [OPTION]... FILE" +msgid "%s output to `%s'..." msgstr "" -#: midi2ly.py:973 +#: midi2ly.py:1045 #, python-format msgid "Convert %s to LilyPond input.\n" msgstr "" -#: midi2ly.py:978 +#: midi2ly.py:1050 msgid "print absolute pitches" msgstr "" -#: midi2ly.py:980 midi2ly.py:1002 +#: midi2ly.py:1052 midi2ly.py:1080 msgid "DUR" msgstr "" -#: midi2ly.py:981 +#: midi2ly.py:1053 msgid "quantise note durations on DUR" msgstr "" -#: midi2ly.py:984 +#: midi2ly.py:1056 +msgid "debug printing" +msgstr "" + +#: midi2ly.py:1059 msgid "print explicit durations" msgstr "" -#: midi2ly.py:989 +#: midi2ly.py:1064 msgid "prepend FILE to output" msgstr "" -#: midi2ly.py:993 +#: midi2ly.py:1068 msgid "set key: ALT=+sharps|-flats; MINOR=1" msgstr "" -#: midi2ly.py:994 +#: midi2ly.py:1069 msgid "ALT[:MINOR]" msgstr "" -#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207 -msgid "write output to FILE" +#: midi2ly.py:1074 +msgid "preview of first 4 bars" msgstr "" -#: midi2ly.py:999 -msgid "preview of first 4 bars" +#: midi2ly.py:1078 +msgid "suppress progress messages and warnings about excess voices" msgstr "" -#: midi2ly.py:1001 +#: midi2ly.py:1079 msgid "quantise note starts on DUR" msgstr "" -#: midi2ly.py:1004 -msgid "DUR*NUM/DEN" +#: midi2ly.py:1083 +msgid "use s instead of r for rests" msgstr "" -#: midi2ly.py:1007 -msgid "allow tuplet durations DUR*NUM/DEN" +#: midi2ly.py:1085 +msgid "DUR*NUM/DEN" msgstr "" -#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210 -#: main.cc:170 -msgid "show warranty and copyright" +#: midi2ly.py:1088 +msgid "allow tuplet durations DUR*NUM/DEN" msgstr "" -#: midi2ly.py:1019 +#: midi2ly.py:1098 msgid "treat every text as a lyric" msgstr "" -#: midi2ly.py:1022 +#: midi2ly.py:1101 msgid "Examples" msgstr "" -#: midi2ly.py:1042 +#: midi2ly.py:1125 msgid "no files specified on command line." msgstr "" -#: abc2ly.py:1374 +#: musicxml2ly.py:228 #, python-format msgid "" -"abc2ly converts ABC music files (see\n" -"%s) to LilyPond input.\n" +"Encountered file created by %s, containing wrong beaming information. All " +"beaming information in the MusicXML file will be ignored" msgstr "" -#: abc2ly.py:1390 -msgid "be strict about success" +#: musicxml2ly.py:247 musicxml2ly.py:249 +#, python-format +msgid "Unprocessed PartGroupInfo %s encountered" msgstr "" -#: abc2ly.py:1392 -msgid "preserve ABC's notion of beams" +#: musicxml2ly.py:500 +#, python-format +msgid "Encountered note at %s without type and duration (=%s)" msgstr "" -#: lilypond-book.py:80 +#: musicxml2ly.py:520 +#, python-format msgid "" -"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document." -msgstr "" - -#: lilypond-book.py:82 convert-ly.py:46 -msgid "Examples:" +"Encountered rational duration with denominator %s, unable to convert to " +"lilypond duration" msgstr "" -#: lilypond-book.py:87 -msgid "BOOK" +#: musicxml2ly.py:767 +msgid "Unable to extract key signature!" msgstr "" -#: lilypond-book.py:95 +#: musicxml2ly.py:794 #, python-format -msgid "Exiting (%d)..." -msgstr "" - -#: lilypond-book.py:127 -msgid "FILTER" +msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!" msgstr "" -#: lilypond-book.py:130 -msgid "pipe snippets through FILTER [default: `convert-ly -n -']" +#: musicxml2ly.py:932 +#, python-format +msgid "Encountered unprocessed marker %s\n" msgstr "" -#: lilypond-book.py:134 -msgid "" -"use output format FORMAT (texi [default], texi-html, latex, html, docbook)" +#: musicxml2ly.py:1026 +#, python-format +msgid "unknown span event %s" msgstr "" -#: lilypond-book.py:135 -msgid "FORMAT" +#: musicxml2ly.py:1036 +#, python-format +msgid "unknown span type %s for %s" msgstr "" -#: lilypond-book.py:142 -msgid "add DIR to include path" +#: musicxml2ly.py:1456 +msgid "Unknown metronome mark, ignoring" msgstr "" -#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163 -#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160 -msgid "DIR" +#. TODO: Implement the other (more complex) way for tempo marks! +#: musicxml2ly.py:1461 +msgid "" +"Metronome marks with complex relations ( in MusicXML) are " +"not yet implemented." msgstr "" -#: lilypond-book.py:148 -msgid "format Texinfo output so that Info will look for images of music in DIR" +#: musicxml2ly.py:1663 +#, python-format +msgid "Unable to convert chord type %s to lilypond." msgstr "" -#: lilypond-book.py:155 -msgid "PAD" +#: musicxml2ly.py:1816 +#, python-format +msgid "drum %s type unknown, please add to instrument_drumtype_dict" msgstr "" -#: lilypond-book.py:157 -msgid "" -"pad left side of music to align music inspite of uneven bar numbers (in mm)" +#: musicxml2ly.py:1820 +msgid "cannot find suitable event" msgstr "" -#: lilypond-book.py:162 -msgid "write lily-XXX files to DIR, link into --output dir" +#: musicxml2ly.py:1968 +#, python-format +msgid "Negative skip %s (from position %s to %s)" msgstr "" -#: lilypond-book.py:167 -msgid "" -"Load the additional python PACKAGE (containing e.g. a custom output format)" +#: musicxml2ly.py:2109 +#, python-format +msgid "Negative skip found: from %s to %s, difference is %s" msgstr "" -#: lilypond-book.py:168 -msgid "PACKAGE" +#: musicxml2ly.py:2190 +#, python-format +msgid "unexpected %s; expected %s or %s or %s" msgstr "" -#: lilypond-book.py:172 -msgid "write output to DIR" +#: musicxml2ly.py:2296 +msgid "Encountered closing slur, but no slur is open" msgstr "" -#: lilypond-book.py:177 -msgid "COMMAND" +#: musicxml2ly.py:2299 +msgid "Cannot have two simultaneous (closing) slurs" msgstr "" -#: lilypond-book.py:178 -msgid "process ly_files using COMMAND FILE..." +#: musicxml2ly.py:2308 +msgid "Cannot have a slur inside another slur" msgstr "" -#: lilypond-book.py:182 -msgid "Compile snippets in safe mode" +#: musicxml2ly.py:2311 +msgid "Cannot have two simultaneous slurs" msgstr "" -#: lilypond-book.py:188 -msgid "do not fail if no lilypond output is found" +#: musicxml2ly.py:2445 +#, python-format +msgid "cannot simultaneously have more than one mode: %s" msgstr "" -#: lilypond-book.py:194 -msgid "do not fail if no PNG images are found for EPS files" +#: musicxml2ly.py:2553 +msgid "Converting to LilyPond expressions..." msgstr "" -#: lilypond-book.py:200 -msgid "write snippet output files with the same base name as their source file" +#: musicxml2ly.py:2564 +msgid "musicxml2ly [OPTION]... FILE.xml" msgstr "" -#: lilypond-book.py:220 +#: musicxml2ly.py:2566 msgid "" -"run executable PROG instead of latex, or in\n" -"case --pdf option is set instead of pdflatex" +"Convert MusicXML from FILE.xml to LilyPond input.\n" +"If the given filename is -, musicxml2ly reads from the command line.\n" msgstr "" -#: lilypond-book.py:222 -msgid "PROG" +#: musicxml2ly.py:2576 +msgid "" +"Copyright (c) 2005--2012 by\n" +" Han-Wen Nienhuys ,\n" +" Jan Nieuwenhuizen and\n" +" Reinhold Kainhofer \n" msgstr "" -#: lilypond-book.py:228 -msgid "create PDF files for use with PDFTeX" +#: musicxml2ly.py:2602 +msgid "use lxml.etree; uses less memory and cpu time" msgstr "" -#: lilypond-book.py:419 -msgid "Writing snippets..." +#: musicxml2ly.py:2608 +msgid "input file is a zip-compressed MusicXML file" msgstr "" -#: lilypond-book.py:425 -msgid "Processing..." +#: musicxml2ly.py:2614 +msgid "convert pitches in relative mode (default)" msgstr "" -#: lilypond-book.py:431 -msgid "All snippets are up to date..." +#: musicxml2ly.py:2619 +msgid "convert pitches in absolute mode" msgstr "" -#: lilypond-book.py:452 -#, python-format -msgid "cannot determine format for: %s" +#: musicxml2ly.py:2622 +msgid "LANG" msgstr "" -#: lilypond-book.py:461 -#, python-format -msgid "%s is up to date." +#: musicxml2ly.py:2624 +msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German" msgstr "" -#: lilypond-book.py:475 -#, python-format -msgid "Writing `%s'..." +#: musicxml2ly.py:2638 +msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc." msgstr "" -#: lilypond-book.py:537 -msgid "Output would overwrite input file; use --output." +#: musicxml2ly.py:2644 +msgid "do not convert exact vertical positions of rests" msgstr "" -#: lilypond-book.py:541 -#, python-format -msgid "Reading %s..." +#: musicxml2ly.py:2650 +msgid "do not convert the exact page layout and breaks" msgstr "" -#: lilypond-book.py:549 -msgid "Dissecting..." +#: musicxml2ly.py:2656 +msgid "" +"do not convert beaming information, use lilypond's automatic beaming instead" msgstr "" -#: lilypond-book.py:561 -#, python-format -msgid "Compiling %s..." +#: musicxml2ly.py:2664 +msgid "set output filename to FILE, stdout if -" msgstr "" -#: lilypond-book.py:570 -#, python-format -msgid "Processing include: %s" +#: musicxml2ly.py:2670 +msgid "activate midi-block" msgstr "" -#: lilypond-book.py:582 +#: musicxml2ly.py:2754 #, python-format -msgid "Removing `%s'" +msgid "unknown part in part-list: %s" msgstr "" -#: convert-ly.py:44 -msgid "" -"Update LilyPond input to newer version. By default, update from the\n" -"version taken from the \\version command, to the current LilyPond version." +#: musicxml2ly.py:2816 +msgid "Input is compressed, extracting raw MusicXML data from stdin" msgstr "" -#: convert-ly.py:102 convert-ly.py:135 -msgid "VERSION" +#: musicxml2ly.py:2829 +#, python-format +msgid "Input file %s is compressed, extracting raw MusicXML data" msgstr "" -#: convert-ly.py:104 -msgid "start from VERSION [default: \\version found in file]" +#: musicxml2ly.py:2859 +msgid "Reading MusicXML from Standard input ..." msgstr "" -#: convert-ly.py:107 -msgid "edit in place" +#: musicxml2ly.py:2861 +#, python-format +msgid "Reading MusicXML from %s ..." msgstr "" -#: convert-ly.py:111 -msgid "do not add \\version command if missing" +#: musicxml2ly.py:2894 +#, python-format +msgid "Output to `%s'" msgstr "" -#: convert-ly.py:117 +#: musicxml2ly.py:2964 #, python-format -msgid "force updating \\version number to %s" +msgid "Unable to find input file %s" msgstr "" -#: convert-ly.py:123 -msgid "only update \\version number if file is modified" +#: website_post.py:123 +msgid "English" msgstr "" -#: convert-ly.py:129 -#, python-format -msgid "show rules [default: -f 0, -t %s]" +#: website_post.py:126 +msgid "Other languages" msgstr "" -#: convert-ly.py:134 +#: website_post.py:127 #, python-format -msgid "convert to VERSION [default: %s]" +msgid "About automatic language selection." msgstr "" -#: convert-ly.py:184 -msgid "Applying conversion: " -msgstr "" +#: getopt-long.cc:153 +#, c-format +msgid "option `%s' requires an argument" +msgstr "" -#: convert-ly.py:197 -msgid "Error while converting" +#: getopt-long.cc:157 +#, c-format +msgid "option `%s' does not allow an argument" msgstr "" -#: convert-ly.py:199 -msgid "Stopping at last successful rule" +#: getopt-long.cc:161 +#, c-format +msgid "unrecognized option: `%s'" msgstr "" -#: convert-ly.py:224 -#, python-format -msgid "Processing `%s'... " +#: getopt-long.cc:167 +#, c-format +msgid "invalid argument `%s' to option `%s'" msgstr "" -#: convert-ly.py:332 -#, python-format -msgid "%s: Unable to open file" +#: warn.cc:56 +#, c-format +msgid "Log level set to %d\n" msgstr "" -#: convert-ly.py:339 -#, python-format -msgid "%s: Unable to determine version. Skipping" +#: warn.cc:89 +#, c-format +msgid "unknown log level `%s', using default (INFO)" msgstr "" -#: convert-ly.py:344 -#, python-format -msgid "" -"%s: Invalid version string `%s' \n" -"Valid version strings consist of three numbers, separated by dots, e.g. " -"`2.8.12'" +#. Some expected warning was not triggered, so print out a warning. +#: warn.cc:112 +#, c-format +msgid "%d expected warning(s) not encountered: " msgstr "" -#: etf2ly.py:1195 -#, python-format -msgid "%s [OPTION]... ETF-FILE" +#: warn.cc:183 +#, c-format +msgid "fatal error: %s" msgstr "" -#: etf2ly.py:1196 -msgid "" -"Enigma Transport Format is a format used by Coda Music Technology's\n" -"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond " -"file.\n" +#: warn.cc:192 +#, c-format +msgid "suppressed programming error: %s" msgstr "" -#: website_post.py:123 -msgid "English" +#: warn.cc:197 +#, c-format +msgid "programming error: %s" msgstr "" -#: website_post.py:126 -msgid "Other languages" +#: warn.cc:198 +msgid "continuing, cross fingers" msgstr "" -#: warn.cc:59 +#: warn.cc:207 #, c-format -msgid "success: %s" +msgid "suppressed error: %s" msgstr "" -#: warn.cc:86 grob.cc:617 input.cc:97 +#: warn.cc:219 #, c-format -msgid "programming error: %s" +msgid "suppressed warning: %s" msgstr "" -#: warn.cc:87 input.cc:98 -msgid "continuing, cross fingers" +#: accidental-engraver.cc:180 +#, c-format +msgid "accidental typesetting list must begin with context-name: %s" msgstr "" -#: getopt-long.cc:153 +#: accidental-engraver.cc:210 #, c-format -msgid "option `%s' requires an argument" +msgid "procedure or context-name expected for accidental rule, found %s" msgstr "" -#: getopt-long.cc:157 +#: accidental.cc:200 #, c-format -msgid "option `%s' does not allow an argument" +msgid "Could not find glyph-name for alteration %s" msgstr "" -#: getopt-long.cc:161 -#, c-format -msgid "unrecognized option: `%s'" +#: accidental.cc:215 +msgid "natural alteration glyph not found" msgstr "" -#: getopt-long.cc:167 +#: all-font-metrics.cc:149 #, c-format -msgid "invalid argument `%s' to option `%s'" +msgid "cannot find font: `%s'" msgstr "" -#: grob.cc:286 -msgid "Infinity or NaN encountered" +#: apply-context-iterator.cc:42 +msgid "\\applycontext argument is not a procedure" msgstr "" -#: vaticana-ligature.cc:95 -msgid "flexa-height undefined; assuming 0" +#: arpeggio.cc:115 +msgid "no heads for arpeggio found?" msgstr "" -#: vaticana-ligature.cc:100 -msgid "ascending vaticana style flexa" +#: auto-change-iterator.cc:74 change-iterator.cc:72 +#, c-format +msgid "cannot change, already in translator: %s" msgstr "" -#: vaticana-ligature.cc:188 -msgid "Vaticana_ligature: zero join (delta_pitch == 0)" +#: axis-group-engraver.cc:94 +msgid "Axis_group_engraver: vertical group already has a parent" msgstr "" -#: parse-scm.cc:101 -msgid "GUILE signaled an error for the expression beginning here" +#: axis-group-engraver.cc:95 +msgid "are there two Axis_group_engravers?" msgstr "" -#: rest-collision-engraver.cc:70 -msgid "rhythmic head is not part of a rhythmic column" +#: axis-group-engraver.cc:96 +msgid "removing this vertical group" msgstr "" -#. if we get to here, just put everything on one line -#: constrained-breaking.cc:189 constrained-breaking.cc:207 -msgid "cannot find line breaking that satisfies constraints" +#: axis-group-interface.cc:668 +msgid "an outside-staff object should have a direction, defaulting to up" msgstr "" -#: horizontal-bracket-engraver.cc:78 -msgid "do not have that many brackets" +#: bar-check-iterator.cc:84 +#, c-format +msgid "barcheck failed at: %s" msgstr "" -#: horizontal-bracket-engraver.cc:87 -msgid "conflicting note group events" +#: beam-engraver.cc:147 +msgid "already have a beam" msgstr "" -#: hyphen-engraver.cc:104 -msgid "removing unterminated hyphen" +#: beam-engraver.cc:230 +msgid "unterminated beam" msgstr "" -#: hyphen-engraver.cc:118 -msgid "unterminated hyphen; removing" +#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149 +msgid "stem must have Rhythmic structure" msgstr "" -#: pango-font.cc:187 open-type-font.cc:319 -#, c-format -msgid "FT_Get_Glyph_Name () error: %s" +#: beam-engraver.cc:277 +msgid "stem does not fit in beam" msgstr "" -#: pango-font.cc:204 -#, c-format -msgid "" -"Glyph has no name, but font supports glyph naming.\n" -"Skipping glyph U+%0X, file %s" +#: beam-engraver.cc:278 +msgid "beam was started here" msgstr "" -#: pango-font.cc:241 -#, c-format -msgid "no PostScript font name for font `%s'" +#. We are completely screwed. +#: beam-quanting.cc:839 +msgid "no viable initial configuration found: may not find good beam slope" msgstr "" -#: pango-font.cc:290 -msgid "FreeType face has no PostScript font name" +#: beam.cc:181 +msgid "removing beam with no stems" msgstr "" -#: midi-item.cc:92 +#: change-iterator.cc:34 #, c-format -msgid "no such MIDI instrument: `%s'" +msgid "cannot change `%s' to `%s'" msgstr "" -#: note-heads-engraver.cc:76 -msgid "NoteEvent without pitch" +#. FIXME: constant error message. +#: change-iterator.cc:93 +msgid "cannot find context to switch to" msgstr "" -#: rest.cc:159 +#. We could change the current translator's id, but that would make +#. errors hard to catch. +#. +#. last->translator_id_string () = get_change +#. ()->change_to_id_string (); +#: change-iterator.cc:102 #, c-format -msgid "rest `%s' not found" +msgid "not changing to same context type: %s" msgstr "" -#: spaceable-grob.cc:94 -#, c-format -msgid "No spring between column %d and next one" +#. FIXME: uncomprehensable message +#: change-iterator.cc:106 +msgid "none of these in my family" msgstr "" -#: beam-engraver.cc:147 -msgid "already have a beam" +#: chord-tremolo-engraver.cc:88 +msgid "No tremolo to end" msgstr "" -#: beam-engraver.cc:230 -msgid "unterminated beam" +#: chord-tremolo-engraver.cc:109 +msgid "unterminated chord tremolo" msgstr "" -#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150 -msgid "stem must have Rhythmic structure" +#: clef.cc:65 +#, c-format +msgid "clef `%s' not found" msgstr "" -#: beam-engraver.cc:274 -msgid "stem does not fit in beam" +#: cluster.cc:120 +#, c-format +msgid "unknown cluster style `%s'" msgstr "" -#: beam-engraver.cc:275 -msgid "beam was started here" +#: cluster.cc:157 +msgid "junking empty cluster" +msgstr "" + +#: coherent-ligature-engraver.cc:110 +#, c-format +msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgstr "" + +#. if we get to here, just put everything on one line +#: constrained-breaking.cc:187 constrained-breaking.cc:205 +msgid "cannot find line breaking that satisfies constraints" msgstr "" -#: music-iterator.cc:182 -msgid "Sending non-event to context" +#: context-property.cc:43 +msgid "need symbol arguments for \\override and \\revert" msgstr "" #: context.cc:149 @@ -1545,1048 +1792,1095 @@ msgstr "" msgid "cannot find or create `%s' called `%s'" msgstr "" -#: context.cc:269 +#: context.cc:400 #, c-format -msgid "Invalid CreateContext event: Cannot create %s context" +msgid "cannot find or create: `%s'" msgstr "" -#: context.cc:400 +#: custos.cc:87 #, c-format -msgid "cannot find or create: `%s'" +msgid "custos `%s' not found" msgstr "" -#: dispatcher.cc:82 -msgid "Event class should be a symbol" +#: dispatcher.cc:83 +msgid "Event class should be a list" msgstr "" -#: dispatcher.cc:89 +#: dispatcher.cc:166 #, c-format -msgid "Unknown event class %s" +msgid "Junking event: %s" msgstr "" -#: paper-column-engraver.cc:245 -msgid "" -"forced break was overridden by some other event, should you be using bar " -"checks?" +#: dispatcher.cc:262 +msgid "Attempting to remove nonexisting listener." msgstr "" -#: tie-engraver.cc:116 -msgid "unterminated tie" +#: dispatcher.cc:284 +msgid "Already listening to dispatcher, ignoring request" msgstr "" -#: tie-engraver.cc:312 -msgid "lonely tie" +#: dots.cc:48 +#, c-format +msgid "dot `%s' not found" msgstr "" -#: dynamic-engraver.cc:197 +#: dynamic-engraver.cc:193 msgid "cannot find start of (de)crescendo" msgstr "" -#: dynamic-engraver.cc:206 +#: dynamic-engraver.cc:200 msgid "already have a decrescendo" msgstr "" -#: dynamic-engraver.cc:208 +#: dynamic-engraver.cc:202 msgid "already have a crescendo" msgstr "" -#: dynamic-engraver.cc:211 +#: dynamic-engraver.cc:205 msgid "cresc starts here" msgstr "" -#: dynamic-engraver.cc:339 +#: dynamic-engraver.cc:333 msgid "unterminated (de)crescendo" msgstr "" -#: paper-score.cc:122 minimal-page-breaking.cc:40 -msgid "Calculating line breaks..." +#. No explicit dynamic script events have occurred yet, but there is +#. nevertheless a dynamic spanner. Initialize last_volume_ to a +#. value within the available range. +#: dynamic-performer.cc:129 +msgid "(De)crescendo with unspecified starting volume in MIDI." msgstr "" -#: paper-score.cc:135 -#, c-format -msgid "Element count %d (spanners %d) " +#: episema-engraver.cc:75 +msgid "already have an episema" msgstr "" -#: paper-score.cc:139 -msgid "Preprocessing graphical objects..." +#: episema-engraver.cc:88 +msgid "cannot find start of episema" msgstr "" -#: paper-score.cc:163 optimal-page-breaking.cc:208 -#: page-turn-page-breaking.cc:248 -msgid "Drawing systems..." +#: episema-engraver.cc:137 +msgid "unterminated episema" msgstr "" -#: mensural-ligature-engraver.cc:96 -msgid "ligature with less than 2 heads -> skipping" +#: extender-engraver.cc:169 extender-engraver.cc:178 +msgid "unterminated extender" msgstr "" -#: mensural-ligature-engraver.cc:123 -msgid "cannot determine pitch of ligature primitive -> skipping" +#: flag.cc:113 +#, c-format +msgid "flag `%s' not found" msgstr "" -#: mensural-ligature-engraver.cc:137 -msgid "single note ligature - skipping" +#: flag.cc:133 +#, c-format +msgid "flag stroke `%s' not found" msgstr "" -#: mensural-ligature-engraver.cc:148 -msgid "prime interval within ligature -> skipping" +#: font-config-scheme.cc:151 font-config.cc:53 +#, c-format +msgid "failed adding font directory: %s" msgstr "" -#: mensural-ligature-engraver.cc:159 -msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" +#: font-config-scheme.cc:153 font-config.cc:55 +#, c-format +msgid "Adding font directory: %s" msgstr "" -#: mensural-ligature-engraver.cc:202 -msgid "semibrevis must be followed by another one -> skipping" +#: font-config-scheme.cc:167 +#, c-format +msgid "failed adding font file: %s" msgstr "" -#: mensural-ligature-engraver.cc:212 -msgid "" -"semibreves can only appear at the beginning of a ligature,\n" -"and there may be only zero or two of them" +#: font-config-scheme.cc:169 +#, c-format +msgid "Adding font file: %s" msgstr "" -#: mensural-ligature-engraver.cc:232 -msgid "" -"invalid ligatura ending:\n" -"when the last note is a descending brevis,\n" -"the penultimate note must be another one,\n" -"or the ligatura must be LB or SSB" +#: font-config.cc:38 +msgid "Initializing FontConfig..." msgstr "" -#: mensural-ligature-engraver.cc:386 -msgid "unexpected case fall-through" +#: font-config.cc:58 +msgid "Building font database..." msgstr "" -#: piano-pedal-engraver.cc:298 -#, c-format -msgid "expect 3 strings for piano pedals, found: %ld" +#: footnote-engraver.cc:110 +msgid "Must be footnote-event." msgstr "" -#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324 -#: piano-pedal-performer.cc:104 +#: general-scheme.cc:390 #, c-format -msgid "cannot find start of piano pedal: `%s'" +msgid "failed redirecting stderr to `%s'" msgstr "" -#: piano-pedal-engraver.cc:359 -#, c-format -msgid "cannot find start of piano pedal bracket: `%s'" +#: general-scheme.cc:469 output-ps.scm:48 +msgid "Found infinity or nan in output. Substituting 0.0" msgstr "" -#: input.cc:131 source-file.cc:179 source-file.cc:194 -msgid "position unknown" +#: glissando-engraver.cc:158 +msgid "unterminated glissando" msgstr "" -#: paper-outputter-scheme.cc:41 -#, c-format -msgid "Layout output to `%s'..." +#: global-context-scheme.cc:96 global-context-scheme.cc:114 +msgid "no music found in score" msgstr "" -#: general-scheme.cc:306 -msgid "infinity or NaN encountered while converting Real number" +#: global-context-scheme.cc:104 +msgid "Interpreting music..." msgstr "" -#: general-scheme.cc:307 -msgid "setting to zero" +#: global-context-scheme.cc:126 +#, c-format +msgid "elapsed time: %.2f seconds" msgstr "" -#: general-scheme.cc:543 -msgid "Found infinity or nan in output. Substituting 0.0" +#: gregorian-ligature-engraver.cc:70 +#, c-format +msgid "\\%s ignored" msgstr "" -#: music.cc:151 +#: gregorian-ligature-engraver.cc:75 #, c-format -msgid "octave check failed; expected \"%s\", found: \"%s\"" +msgid "implied \\%s added" msgstr "" -#: music.cc:219 -msgid "(normalized pitch)" +#. ligature may not start with 2nd head of pes or flexa +#: gregorian-ligature-engraver.cc:224 +msgid "cannot apply `\\~' on first head of ligature" msgstr "" -#: music.cc:223 -#, c-format -msgid "Transposing %s by %s makes alteration larger than double" +#. (pitch == prev_pitch) +#: gregorian-ligature-engraver.cc:236 +msgid "cannot apply `\\~' on heads with identical pitch" msgstr "" -#: translator-ctors.cc:65 +#: grob-interface.cc:68 #, c-format -msgid "unknown translator: `%s'" +msgid "Unknown interface `%s'" msgstr "" -#: partial-iterator.cc:45 -msgid "trying to use \\partial after the start of a piece" +#: grob-interface.cc:79 +#, c-format +msgid "Grob `%s' has no interface for property `%s'" msgstr "" -#: new-fingering-engraver.cc:106 -msgid "cannot add text scripts to individual note heads" +#: grob-property.cc:35 +#, c-format +msgid "%d: %s" msgstr "" -#: new-fingering-engraver.cc:250 -msgid "no placement found for fingerings" +#: hairpin.cc:60 +msgid "Asking for broken bound padding at a non-broken bound." msgstr "" -#: new-fingering-engraver.cc:251 -msgid "placing below" +#: hairpin.cc:254 +msgid "decrescendo too small" msgstr "" -#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72 -msgid "cannot find start of ligature" +#: horizontal-bracket-engraver.cc:62 +msgid "do not have that many brackets" msgstr "" -#: ligature-engraver.cc:109 -msgid "no right bound" +#: horizontal-bracket-engraver.cc:71 +msgid "conflicting note group events" msgstr "" -#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85 -msgid "already have a ligature" +#: hyphen-engraver.cc:104 +msgid "removing unterminated hyphen" msgstr "" -#: ligature-engraver.cc:140 -msgid "no left bound" +#: hyphen-engraver.cc:118 +msgid "unterminated hyphen; removing" msgstr "" -#: ligature-engraver.cc:185 -msgid "unterminated ligature" +#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108 +#, c-format +msgid "cannot find file: `%s'" msgstr "" -#: ligature-engraver.cc:214 -msgid "ignoring rest: ligature may not contain rest" +#: includable-lexer.cc:73 lily-parser-scheme.cc:100 +#, c-format +msgid "(search path: `%s')" msgstr "" -#: ligature-engraver.cc:215 -msgid "ligature was started here" +#: input.cc:138 source-file.cc:178 source-file.cc:193 +msgid "position unknown" msgstr "" -#: auto-change-iterator.cc:74 change-iterator.cc:72 -#, c-format -msgid "cannot change, already in translator: %s" +#: key-engraver.cc:198 +msgid "Incomplete keyAlterationOrder for key signature" msgstr "" -#: accidental-engraver.cc:180 +#: key-signature-interface.cc:77 #, c-format -msgid "accidental typesetting list must begin with context-name: %s" +msgid "No glyph found for alteration: %s" msgstr "" -#: accidental-engraver.cc:210 -#, c-format -msgid "procedure or context-name expected for accidental rule, found %s" +#: key-signature-interface.cc:87 +msgid "alteration not found" msgstr "" -#: ttf.cc:481 ttf.cc:530 -#, c-format -msgid "font index %d too large for font `%s', using index 0" +#: ligature-bracket-engraver.cc:72 ligature-engraver.cc:104 +msgid "cannot find start of ligature" msgstr "" -#: ttf.cc:513 ttf.cc:565 -msgid "font index must be non-negative, using index 0" +#: ligature-bracket-engraver.cc:85 ligature-engraver.cc:131 +msgid "already have a ligature" msgstr "" -#: break-alignment-interface.cc:206 -#, c-format -msgid "No spacing entry from %s to `%s'" +#: ligature-engraver.cc:109 +msgid "no right bound" msgstr "" -#: minimal-page-breaking.cc:44 -msgid "Calculating page breaks..." +#: ligature-engraver.cc:140 +msgid "no left bound" msgstr "" -#: vaticana-ligature-engraver.cc:400 -#, c-format -msgid "" -"ignored prefix(es) `%s' of this head according to restrictions of the " -"selected ligature style" +#: ligature-engraver.cc:184 +msgid "unterminated ligature" msgstr "" -#: vaticana-ligature-engraver.cc:736 -#, c-format -msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" +#: ligature-engraver.cc:211 +msgid "ignoring rest: ligature may not contain rest" msgstr "" -#: paper-book.cc:214 +#: ligature-engraver.cc:212 +msgid "ligature was started here" +msgstr "" + +#: lily-guile.cc:93 #, c-format -msgid "program option -dprint-pages not supported by backend `%s'" +msgid "(load path: `%s')" msgstr "" -#: paper-book.cc:233 +#: lily-guile.cc:416 #, c-format -msgid "program option -dpreview not supported by backend `%s'" +msgid "cannot find property type-check for `%s' (%s)." msgstr "" -#: output-def.cc:235 -msgid "margins do not fit with line-width, setting default values" +#: lily-guile.cc:419 +msgid "perhaps a typing error?" msgstr "" -#: output-def.cc:242 -msgid "" -"systems run off the page due to improper paper settings, setting default " -"values" +#: lily-guile.cc:426 +msgid "doing assignment anyway" msgstr "" -#: score-engraver.cc:78 +#: lily-guile.cc:438 #, c-format -msgid "cannot find `%s'" +msgid "type check for `%s' failed; value `%s' must be of type `%s'" msgstr "" -#: score-engraver.cc:80 -msgid "Music font has not been installed properly." +#: lily-lexer.cc:255 +msgid "include files are not allowed in safe mode" msgstr "" -#: score-engraver.cc:82 +#: lily-lexer.cc:282 #, c-format -msgid "Search path `%s'" -msgstr "" - -#: score-engraver.cc:84 -msgid "Aborting" +msgid "identifier name is a keyword: `%s'" msgstr "" -#: note-collision.cc:497 -msgid "ignoring too many clashing note columns" +#: lily-lexer.cc:303 lily-lexer.cc:316 +#, c-format +msgid "%s:EOF" msgstr "" -#. fixme: be more verbose. -#: volta-engraver.cc:111 -msgid "cannot end volta spanner" +#: lily-parser-scheme.cc:80 +#, c-format +msgid "Changing working directory to: `%s'" msgstr "" -#: volta-engraver.cc:121 -msgid "already have a volta spanner, ending that one prematurely" +#: lily-parser-scheme.cc:84 +#, c-format +msgid "unable to change directory to: `%s'" msgstr "" -#: volta-engraver.cc:125 -msgid "also already have an ended spanner" +#: lily-parser-scheme.cc:99 +#, c-format +msgid "cannot find init file: `%s'" msgstr "" -#: volta-engraver.cc:126 -msgid "giving up" +#: lily-parser-scheme.cc:117 +#, c-format +msgid "Processing `%s'" msgstr "" -#: page-layout-problem.cc:322 +#: lily-parser-scheme.cc:208 msgid "" -"cannot fit music on page: ragged-spacing was requested, but page was " -"compressed" +"ly:parser-parse-string is only valid with a new parser. Use ly:parser-" +"include-string instead." msgstr "" -#: page-layout-problem.cc:325 -#, c-format -msgid "cannot fit music on page: overflow is %f" +#: lily-parser-scheme.cc:239 +msgid "" +"ly:parse-string-expression is only valid with a new parser. Use ly:parser-" +"include-string instead." msgstr "" -#: page-layout-problem.cc:327 -msgid "compressing music to fit" +#: lily-parser.cc:109 +msgid "Parsing..." msgstr "" -#: page-layout-problem.cc:765 -msgid "staff-affinities should only decrease" +#: line-spanner.cc:373 +msgid "Line spanner's left point is to the right of its right point." msgstr "" -#: apply-context-iterator.cc:42 -msgid "\\applycontext argument is not a procedure" +#: lyric-combine-music-iterator.cc:199 +msgid "argument of \\lyricsto should contain Lyrics context" msgstr "" -#. FIXME: constant error message. -#: mark-engraver.cc:157 -msgid "rehearsalMark must have integer value" +#: lyric-combine-music-iterator.cc:337 +#, c-format +msgid "cannot find Voice `%s'" msgstr "" -#: mark-engraver.cc:163 -msgid "mark label must be a markup object" +#: lyric-engraver.cc:186 +msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." msgstr "" -#: new-dynamic-engraver.cc:142 +#: main.cc:101 #, c-format msgid "" -"unknown crescendo style: %s\n" -"defaulting to hairpin." +"This program is free software. It is covered by the GNU General Public\n" +"License and you are welcome to change it and/or distribute copies of it\n" +"under certain conditions. Invoke as `%s --warranty' for more\n" +"information.\n" msgstr "" -#: new-dynamic-engraver.cc:200 -#, c-format -msgid "unterminated %s" +#: main.cc:107 +msgid "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License as \n" +"published by the Free Software Foundation, either version 3 of\n" +"the License, or (at your option) any later version.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" +"Boston, MA 02111-1307, USA.\n" msgstr "" -#: stem-engraver.cc:103 -msgid "tremolo duration is too long" +#: main.cc:141 +msgid "SYM[=VAL]" msgstr "" -#. FIXME: -#: stem-engraver.cc:140 -#, c-format -msgid "adding note head to incompatible stem (type = %d)" +#: main.cc:142 +msgid "" +"set Scheme option SYM to VAL (default: #t).\n" +"Use -dhelp for help." msgstr "" -#: stem-engraver.cc:142 -msgid "maybe input should specify polyphonic voices" +#: main.cc:146 +msgid "EXPR" msgstr "" -#: lily-lexer.cc:264 -msgid "include files are not allowed in safe mode" +#: main.cc:146 +msgid "evaluate scheme code" msgstr "" -#: lily-lexer.cc:291 -#, c-format -msgid "identifier name is a keyword: `%s'" +#. Bug in option parser: --output =foe is taken as an abbreviation +#. for --output-format. +#: main.cc:149 +msgid "FORMATs" msgstr "" -#: lily-lexer.cc:312 -#, c-format -msgid "error at EOF: %s" +#: main.cc:149 +msgid "dump FORMAT,... Also as separate options:" msgstr "" -#: lyric-combine-music-iterator.cc:337 -#, c-format -msgid "cannot find Voice `%s'" +#: main.cc:150 +msgid "generate PDF (default)" msgstr "" -#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109 -#, c-format -msgid "cannot find file: `%s'" +#: main.cc:151 +msgid "generate PNG" msgstr "" -#: includable-lexer.cc:73 lily-parser-scheme.cc:100 -#, c-format -msgid "(search path: `%s')" +#: main.cc:152 +msgid "generate PostScript" msgstr "" -#: note-column.cc:135 -msgid "cannot have note heads and rests together on a stem" +#: main.cc:155 +msgid "FIELD" msgstr "" -#: beam.cc:180 -msgid "removing beam with no stems" +#: main.cc:155 +msgid "" +"dump header field FIELD to file\n" +"named BASENAME.FIELD" msgstr "" -#. We are completely screwed. -#: beam.cc:1274 -msgid "no viable initial configuration found: may not find good beam slope" +#: main.cc:158 +msgid "add DIR to search path" msgstr "" -#: slur-engraver.cc:93 -#, c-format -msgid "direction of %s invalid: %d" +#: main.cc:159 +msgid "use FILE as init file" msgstr "" -#: slur-engraver.cc:162 -msgid "unterminated slur" +#: main.cc:162 +msgid "USER, GROUP, JAIL, DIR" msgstr "" -#: slur-engraver.cc:174 -msgid "cannot end slur" +#: main.cc:162 +msgid "" +"chroot to JAIL, become USER:GROUP\n" +"and cd into DIR" msgstr "" -#: font-config.cc:40 -msgid "Initializing FontConfig..." +#: main.cc:167 +msgid "" +"print log messages according to LOGLEVEL. Possible values are:\n" +"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG." msgstr "" -#: font-config.cc:55 font-config-scheme.cc:152 -#, c-format -msgid "failed adding font directory: %s" +#: main.cc:171 +msgid "write output to FILE (suffix will be added)" msgstr "" -#: font-config.cc:57 font-config-scheme.cc:154 -#, c-format -msgid "adding font directory: %s" +#: main.cc:172 +msgid "relocate using directory of lilypond program" msgstr "" -#: font-config.cc:61 -msgid "Building font database..." +#: main.cc:173 +msgid "no progress, only error messages (equivalent to loglevel=ERROR)" msgstr "" -#. find out the ideal number of pages -#: optimal-page-breaking.cc:62 -msgid "Finding the ideal number of pages..." +#: main.cc:175 +msgid "be verbose (equivalent to loglevel=DEBUG)" msgstr "" -#: optimal-page-breaking.cc:85 +#. Do not update the copyright years here, run `make grand-replace' +#: main.cc:242 +#, c-format msgid "" -"could not satisfy systems-per-page and page-count at the same time, ignoring " -"systems-per-page" -msgstr "" - -#: optimal-page-breaking.cc:105 -msgid "Fitting music on 1 page..." +"Copyright (c) %s by\n" +"%s and others." msgstr "" -#: optimal-page-breaking.cc:107 +#. No version number or newline here. It confuses help2man. +#: main.cc:269 #, c-format -msgid "Fitting music on %d pages..." +msgid "Usage: %s [OPTION]... FILE..." msgstr "" -#: optimal-page-breaking.cc:109 -#, c-format -msgid "Fitting music on %d or %d pages..." +#: main.cc:271 +msgid "Typeset music and/or produce MIDI from FILE." msgstr "" -#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173 -#, c-format -msgid "trying %d systems" +#: main.cc:273 +msgid "LilyPond produces beautiful music notation." msgstr "" -#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201 +#: main.cc:275 #, c-format -msgid "best score for this sys-count: %f" +msgid "For more information, see %s" msgstr "" -#: accidental.cc:200 -#, c-format -msgid "Could not find glyph-name for alteration %s" +#: main.cc:277 +msgid "Options:" msgstr "" -#: accidental.cc:215 -msgid "natural alteration glyph not found" +#: main.cc:331 +#, c-format +msgid "expected %d arguments with jail, found: %u" msgstr "" -#: system.cc:197 +#: main.cc:345 #, c-format -msgid "Element count %d" +msgid "no such user: %s" msgstr "" -#: system.cc:303 +#: main.cc:347 #, c-format -msgid "Grob count %d" +msgid "cannot get user id from user name: %s: %s" msgstr "" -#: slur.cc:362 +#: main.cc:362 #, c-format -msgid "Ignoring grob for slur: %s. avoid-slur not set?" +msgid "no such group: %s" msgstr "" -#: font-config-scheme.cc:168 +#: main.cc:364 #, c-format -msgid "failed adding font file: %s" +msgid "cannot get group id from group name: %s: %s" msgstr "" -#: font-config-scheme.cc:170 +#: main.cc:372 #, c-format -msgid "adding font file: %s" +msgid "cannot chroot to: %s: %s" msgstr "" -#: hairpin.cc:186 -msgid "decrescendo too small" +#: main.cc:379 +#, c-format +msgid "cannot change group id to: %d: %s" msgstr "" -#: extender-engraver.cc:170 extender-engraver.cc:179 -msgid "unterminated extender" +#: main.cc:385 +#, c-format +msgid "cannot change user id to: %d: %s" msgstr "" -#: lily-guile.cc:89 +#: main.cc:391 #, c-format -msgid "(load path: `%s')" +msgid "cannot change working directory to: %s: %s" msgstr "" -#: lily-guile.cc:437 +#: main.cc:639 #, c-format -msgid "cannot find property type-check for `%s' (%s)." +msgid "exception caught: %s" msgstr "" -#: lily-guile.cc:440 -msgid "perhaps a typing error?" +#. FIXME: constant error message. +#: mark-engraver.cc:156 +msgid "rehearsalMark must have integer value" msgstr "" -#: lily-guile.cc:447 -msgid "doing assignment anyway" +#: mark-engraver.cc:162 +msgid "mark label must be a markup object" msgstr "" -#: lily-guile.cc:459 -#, c-format -msgid "type check for `%s' failed; value `%s' must be of type `%s'" +#: mensural-ligature-engraver.cc:96 +msgid "ligature with less than 2 heads -> skipping" msgstr "" -#: main.cc:109 -#, c-format -msgid "" -"This program is free software. It is covered by the GNU General Public\n" -"License and you are welcome to change it and/or distribute copies of it\n" -"under certain conditions. Invoke as `%s --warranty' for more\n" -"information.\n" +#: mensural-ligature-engraver.cc:123 +msgid "cannot determine pitch of ligature primitive -> skipping" msgstr "" -#: main.cc:115 -msgid "" -" This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License version 2\n" -"as published by the Free Software Foundation.\n" -"\n" -" This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"General Public License for more details.\n" -"\n" -" You should have received a copy of the\n" -"GNU General Public License along with this program; if not, write to\n" -"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" -"Boston, MA 02111-1307, USA.\n" +#: mensural-ligature-engraver.cc:137 +msgid "single note ligature - skipping" msgstr "" -#: main.cc:146 -msgid "SYM[=VAL]" +#: mensural-ligature-engraver.cc:148 +msgid "prime interval within ligature -> skipping" msgstr "" -#: main.cc:147 -msgid "" -"set Scheme option SYM to VAL (default: #t).\n" -"Use -dhelp for help." +#: mensural-ligature-engraver.cc:159 +msgid "mensural ligature: duration none of Mx, L, B, S -> skipping" msgstr "" -#: main.cc:150 -msgid "EXPR" +#: mensural-ligature-engraver.cc:202 +msgid "semibrevis must be followed by another one -> skipping" msgstr "" -#: main.cc:150 -msgid "evaluate scheme code" +#: mensural-ligature-engraver.cc:212 +msgid "" +"semibreves can only appear at the beginning of a ligature,\n" +"and there may be only zero or two of them" msgstr "" -#. Bug in option parser: --output =foe is taken as an abbreviation -#. for --output-format. -#: main.cc:153 -msgid "FORMATs" +#: mensural-ligature-engraver.cc:232 +msgid "" +"invalid ligatura ending:\n" +"when the last note is a descending brevis,\n" +"the penultimate note must be another one,\n" +"or the ligatura must be LB or SSB" msgstr "" -#: main.cc:153 -msgid "dump FORMAT,... Also as separate options:" +#: mensural-ligature-engraver.cc:387 +msgid "unexpected case fall-through" msgstr "" -#: main.cc:154 -msgid "generate PDF (default)" +#: midi-item.cc:89 +#, c-format +msgid "no such MIDI instrument: `%s'" msgstr "" -#: main.cc:155 -msgid "generate PNG" +#: midi-item.cc:161 +msgid "Time signature with more than 255 beats. Truncating" msgstr "" -#: main.cc:156 -msgid "generate PostScript" +#: midi-stream.cc:39 +#, c-format +msgid "cannot open for write: %s: %s" msgstr "" -#: main.cc:158 -msgid "FIELD" +#: midi-stream.cc:55 +#, c-format +msgid "cannot write to file: `%s'" msgstr "" -#: main.cc:158 -msgid "" -"dump header field FIELD to file\n" -"named BASENAME.FIELD" +#: minimal-page-breaking.cc:40 paper-score.cc:122 +msgid "Calculating line breaks..." msgstr "" -#: main.cc:160 -msgid "add DIR to search path" +#: minimal-page-breaking.cc:44 +msgid "Calculating page breaks..." msgstr "" -#: main.cc:161 -msgid "use FILE as init file" +#: multi-measure-rest.cc:138 +msgid "" +"usable-duration-logs must be a non-empty list. Falling back to whole rests." msgstr "" -#: main.cc:163 -msgid "USER, GROUP, JAIL, DIR" +#: multi-measure-rest.cc:328 +msgid "Using naive multi measure rest spacing." msgstr "" -#: main.cc:163 -msgid "" -"chroot to JAIL, become USER:GROUP\n" -"and cd into DIR" +#: music.cc:150 +#, c-format +msgid "octave check failed; expected \"%s\", found: \"%s\"" msgstr "" -#: main.cc:166 -msgid "write output to FILE (suffix will be added)" +#: music.cc:219 +msgid "(normalized pitch)" msgstr "" -#: main.cc:167 -msgid "relocate using directory of lilypond program" +#: music.cc:223 +#, c-format +msgid "Transposing %s by %s makes alteration larger than double" msgstr "" -#. Do not update the copyright years here, run `make grand-replace' -#: main.cc:238 +#: new-dynamic-engraver.cc:168 #, c-format msgid "" -"Copyright (c) %s by\n" -"%s and others." +"unknown crescendo style: %s\n" +"defaulting to hairpin." +msgstr "" + +#: new-dynamic-engraver.cc:233 +#, c-format +msgid "unterminated %s" +msgstr "" + +#: new-fingering-engraver.cc:113 +msgid "cannot add text scripts to individual note heads" msgstr "" -#. No version number or newline here. It confuses help2man. -#: main.cc:265 -#, c-format -msgid "Usage: %s [OPTION]... FILE..." +#: new-fingering-engraver.cc:269 +msgid "no placement found for fingerings" msgstr "" -#: main.cc:267 -msgid "Typeset music and/or produce MIDI from FILE." +#: new-fingering-engraver.cc:270 +msgid "placing below" msgstr "" -#: main.cc:269 -msgid "LilyPond produces beautiful music notation." +#: note-collision.cc:496 +msgid "ignoring too many clashing note columns" msgstr "" -#: main.cc:271 +#: note-column.cc:147 +msgid "cannot have note heads and rests together on a stem" +msgstr "" + +#: note-head.cc:95 #, c-format -msgid "For more information, see %s" +msgid "none of note heads `%s' or `%s' found" msgstr "" -#: main.cc:273 -msgid "Options:" +#: note-heads-engraver.cc:76 +msgid "NoteEvent without pitch" msgstr "" -#: main.cc:327 +#: open-type-font.cc:44 #, c-format -msgid "expected %d arguments with jail, found: %u" +msgid "cannot allocate %lu bytes" msgstr "" -#: main.cc:341 +#: open-type-font.cc:48 #, c-format -msgid "no such user: %s" +msgid "cannot load font table: %s" msgstr "" -#: main.cc:343 +#: open-type-font.cc:53 #, c-format -msgid "cannot get user id from user name: %s: %s" +msgid "FreeType error: %s" msgstr "" -#: main.cc:358 +#: open-type-font.cc:110 #, c-format -msgid "no such group: %s" +msgid "unsupported font format: %s" msgstr "" -#: main.cc:360 +#: open-type-font.cc:112 #, c-format -msgid "cannot get group id from group name: %s: %s" +msgid "error reading font file %s: %s" msgstr "" -#: main.cc:368 +#: open-type-font.cc:187 #, c-format -msgid "cannot chroot to: %s: %s" +msgid "FT_Get_Glyph_Name () Freetype error: %s" msgstr "" -#: main.cc:375 +#: open-type-font.cc:318 pango-font.cc:189 #, c-format -msgid "cannot change group id to: %d: %s" +msgid "FT_Get_Glyph_Name () error: %s" msgstr "" -#: main.cc:381 -#, c-format -msgid "cannot change user id to: %d: %s" +#. find out the ideal number of pages +#: optimal-page-breaking.cc:62 +msgid "Finding the ideal number of pages..." msgstr "" -#: main.cc:387 -#, c-format -msgid "cannot change working directory to: %s: %s" +#: optimal-page-breaking.cc:85 +msgid "" +"could not satisfy systems-per-page and page-count at the same time, ignoring " +"systems-per-page" msgstr "" -#: main.cc:628 -#, c-format -msgid "exception caught: %s" +#: optimal-page-breaking.cc:105 +msgid "Fitting music on 1 page..." msgstr "" -#: key-signature-interface.cc:78 +#: optimal-page-breaking.cc:107 #, c-format -msgid "No glyph found for alteration: %s" +msgid "Fitting music on %d pages..." msgstr "" -#: key-signature-interface.cc:88 -msgid "alteration not found" +#: optimal-page-breaking.cc:109 +#, c-format +msgid "Fitting music on %d or %d pages..." msgstr "" -#: dots.cc:48 +#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:172 #, c-format -msgid "dot `%s' not found" +msgid "trying %d systems" msgstr "" -#: translator.cc:359 +#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:200 #, c-format -msgid "Two simultaneous %s events, junking this one" +msgid "best score for this sys-count: %f" msgstr "" -#: translator.cc:360 -#, c-format -msgid "Previous %s event here" +#: optimal-page-breaking.cc:207 page-turn-page-breaking.cc:248 +#: paper-score.cc:162 +msgid "Drawing systems..." msgstr "" -#: glissando-engraver.cc:105 -msgid "unterminated glissando" +#: output-def.cc:235 +msgid "margins do not fit with line-width, setting default values" msgstr "" -#: text-spanner-engraver.cc:73 -msgid "cannot find start of text spanner" +#: output-def.cc:242 +msgid "" +"systems run off the page due to improper paper settings, setting default " +"values" msgstr "" -#: text-spanner-engraver.cc:86 -msgid "already have a text spanner" +#: page-breaking.cc:277 +msgid "" +"ignoring min-systems-per-page and max-systems-per-page because systems-per-" +"page was set" msgstr "" -#: text-spanner-engraver.cc:132 -msgid "unterminated text spanner" +#: page-breaking.cc:282 +msgid "" +"min-systems-per-page is larger than max-systems-per-page, ignoring both " +"values" msgstr "" -#: clef.cc:65 -#, c-format -msgid "clef `%s' not found" +#: page-layout-problem.cc:403 +msgid "" +"A page layout problem has been initiated that cannot accommodate footnotes." msgstr "" -#. -#. Todo: should make typecheck? -#. -#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. -#. -#: time-signature-engraver.cc:75 -#, c-format -msgid "strange time signature found: %d/%d" +#: page-layout-problem.cc:732 +msgid "" +"cannot fit music on page: ragged-spacing was requested, but page was " +"compressed" msgstr "" -#: lily-parser-scheme.cc:82 +#: page-layout-problem.cc:735 #, c-format -msgid "Changing working directory to: `%s'" +msgid "cannot fit music on page: overflow is %f" msgstr "" -#: lily-parser-scheme.cc:99 -#, c-format -msgid "cannot find init file: `%s'" +#: page-layout-problem.cc:737 +msgid "compressing music to fit" +msgstr "" + +#: page-layout-problem.cc:1197 +msgid "staff-affinities should only decrease" msgstr "" -#: lily-parser-scheme.cc:118 +#: page-turn-page-breaking.cc:168 #, c-format -msgid "Processing `%s'" +msgid "page-turn-page-breaking: breaking from %d to %d" msgstr "" -#: lily-parser-scheme.cc:204 +#: page-turn-page-breaking.cc:217 msgid "" -"ly:parser-parse-string is only valid with a new parser. Use ly:parser-" -"include-string instead." +"cannot fit the first page turn onto a single page. Consider setting first-" +"page-number to an even number." msgstr "" -#: custos.cc:88 +#: page-turn-page-breaking.cc:230 #, c-format -msgid "custos `%s' not found" +msgid "Calculating page and line breaks (%d possible page breaks)..." msgstr "" -#: program-option-scheme.cc:237 +#: page-turn-page-breaking.cc:300 #, c-format -msgid "no such internal option: %s" +msgid "break starting at page %d" msgstr "" -#: rest-collision.cc:146 -msgid "cannot resolve rest collision: rest direction not set" +#: page-turn-page-breaking.cc:301 +#, c-format +msgid "\tdemerits: %f" msgstr "" -#: rest-collision.cc:160 rest-collision.cc:205 -msgid "too many colliding rests" +#: page-turn-page-breaking.cc:302 +#, c-format +msgid "\tsystem count: %d" msgstr "" -#: episema-engraver.cc:75 -msgid "already have an episema" +#: page-turn-page-breaking.cc:303 +#, c-format +msgid "\tpage count: %d" msgstr "" -#: episema-engraver.cc:88 -msgid "cannot find start of episema" +#: page-turn-page-breaking.cc:304 +#, c-format +msgid "\tprevious break: %d" msgstr "" -#: episema-engraver.cc:137 -msgid "unterminated episema" +#: pango-font.cc:205 +#, c-format +msgid "" +"Glyph has no name, but font supports glyph naming.\n" +"Skipping glyph U+%0X, file %s" msgstr "" -#: grob-property.cc:34 +#: pango-font.cc:242 #, c-format -msgid "%d: %s" +msgid "no PostScript font name for font `%s'" msgstr "" -#: grob-property.cc:173 -#, c-format -msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)" +#: pango-font.cc:291 +msgid "FreeType face has no PostScript font name" msgstr "" -#: relocate.cc:54 +#: paper-book.cc:214 #, c-format -msgid "Setting %s to %s" +msgid "program option -dprint-pages not supported by backend `%s'" msgstr "" -#: relocate.cc:74 +#: paper-book.cc:233 #, c-format -msgid "no such file: %s for %s" +msgid "program option -dpreview not supported by backend `%s'" msgstr "" -#: relocate.cc:84 relocate.cc:102 -#, c-format -msgid "no such directory: %s for %s" +#: paper-column-engraver.cc:261 +msgid "" +"forced break was overridden by some other event, should you be using bar " +"checks?" msgstr "" -#: relocate.cc:94 +#: paper-outputter-scheme.cc:41 #, c-format -msgid "%s=%s (prepend)\n" +msgid "Layout output to `%s'..." msgstr "" -#: relocate.cc:124 +#: paper-score.cc:134 #, c-format -msgid "not relocating, no %s/ or current/ found under %s" +msgid "Element count %d (spanners %d) " msgstr "" -#: relocate.cc:135 -#, c-format -msgid "Relocation: compile datadir=%s, new datadir=%s" +#: paper-score.cc:138 +msgid "Preprocessing graphical objects..." msgstr "" -#: relocate.cc:148 -#, c-format -msgid "Relocation: framework_prefix=%s" +#: parse-scm.cc:121 +msgid "GUILE signaled an error for the expression beginning here" +msgstr "" + +#: partial-iterator.cc:45 +msgid "trying to use \\partial after the start of a piece" msgstr "" -#: relocate.cc:189 +#: pdf-scheme.cc:50 #, c-format -msgid "Relocation: is absolute: argv0=%s" +msgid "Conversion of string `%s' to UTF-16be failed: %s" +msgstr "" + +#: percent-repeat-engraver.cc:147 +msgid "unterminated percent repeat" +msgstr "" + +#: performance.cc:54 +msgid "Track..." msgstr "" -#: relocate.cc:196 +#: performance.cc:82 #, c-format -msgid "Relocation: from cwd: argv0=%s" +msgid "MIDI output to `%s'..." msgstr "" -#: relocate.cc:213 +#: phrasing-slur-engraver.cc:101 slur-engraver.cc:102 #, c-format -msgid "" -"Relocation: from PATH=%s\n" -"argv0=%s" +msgid "direction of %s invalid: %d" msgstr "" -#: relocate.cc:240 -msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" +#: phrasing-slur-engraver.cc:175 +msgid "unterminated phrasing slur" msgstr "" -#: relocate.cc:367 -#, c-format -msgid "Relocation file: %s" +#: phrasing-slur-engraver.cc:210 +msgid "cannot end phrasing slur" +msgstr "" + +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: phrasing-slur-engraver.cc:230 +msgid "already have phrasing slur" msgstr "" -#: relocate.cc:373 source-file.cc:65 +#: piano-pedal-engraver.cc:279 #, c-format -msgid "cannot open file: `%s'" +msgid "expect 3 strings for piano pedals, found: %ld" msgstr "" -#: relocate.cc:403 +#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305 +#: piano-pedal-performer.cc:104 #, c-format -msgid "Unknown relocation command %s" +msgid "cannot find start of piano pedal: `%s'" msgstr "" -#: translator-group.cc:188 +#: piano-pedal-engraver.cc:340 #, c-format -msgid "cannot find: `%s'" +msgid "cannot find start of piano pedal bracket: `%s'" msgstr "" -#: phrasing-slur-engraver.cc:157 -msgid "unterminated phrasing slur" +#: program-option-scheme.cc:235 +#, c-format +msgid "no such internal option: %s" msgstr "" -#: lyric-engraver.cc:176 -msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice." +#: property-iterator.cc:93 +#, c-format +msgid "not a grob name, `%s'" msgstr "" -#: page-breaking.cc:248 -msgid "" -"ignoring min-systems-per-page and max-systems-per-page because systems-per-" -"page was set" +#: relative-octave-check.cc:49 +msgid "Failed octave check, got: " msgstr "" -#: page-breaking.cc:253 -msgid "" -"min-systems-per-page is larger than max-systems-per-page, ignoring both " -"values" +#: relocate.cc:52 +#, c-format +msgid "Setting %s to %s" msgstr "" -#: performance.cc:54 -msgid "Track..." +#. this warning should only be printed in debug mode! +#: relocate.cc:73 +#, c-format +msgid "no such file: %s for %s" msgstr "" -#: performance.cc:83 -msgid "MIDI channel wrapped around" +#. this warning should only be printed in debug mode! +#. this warning should only be printed in debug mode +#: relocate.cc:84 relocate.cc:102 +#, c-format +msgid "no such directory: %s for %s" msgstr "" -#: performance.cc:84 -msgid "remapping modulo 16" +#: relocate.cc:93 +#, c-format +msgid "%s=%s (prepend)\n" msgstr "" -#: performance.cc:111 +#: relocate.cc:124 #, c-format -msgid "MIDI output to `%s'..." +msgid "not relocating, no %s/ or current/ found under %s" msgstr "" -#: tuplet-engraver.cc:107 -msgid "No tuplet to end" +#: relocate.cc:134 +#, c-format +msgid "Relocation: compile datadir=%s, new datadir=%s" msgstr "" -#: gregorian-ligature-engraver.cc:70 +#: relocate.cc:146 #, c-format -msgid "\\%s ignored" +msgid "Relocation: framework_prefix=%s" msgstr "" -#: gregorian-ligature-engraver.cc:75 +#: relocate.cc:186 #, c-format -msgid "implied \\%s added" +msgid "Relocation: is absolute: argv0=%s\n" msgstr "" -#. ligature may not start with 2nd head of pes or flexa -#: gregorian-ligature-engraver.cc:224 -msgid "cannot apply `\\~' on first head of ligature" +#: relocate.cc:192 +#, c-format +msgid "Relocation: from cwd: argv0=%s\n" msgstr "" -#. (pitch == prev_pitch) -#: gregorian-ligature-engraver.cc:236 -msgid "cannot apply `\\~' on heads with identical pitch" +#: relocate.cc:208 +#, c-format +msgid "" +"Relocation: from PATH=%s\n" +"argv0=%s" msgstr "" -#: chord-tremolo-engraver.cc:88 -msgid "No tremolo to end" +#: relocate.cc:235 +msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR" msgstr "" -#: chord-tremolo-engraver.cc:109 -msgid "unterminated chord tremolo" +#: relocate.cc:360 +#, c-format +msgid "Relocation file: %s" msgstr "" -#: axis-group-engraver.cc:94 -msgid "Axis_group_engraver: vertical group already has a parent" +#: relocate.cc:364 source-file.cc:65 +#, c-format +msgid "cannot open file: `%s'" msgstr "" -#: axis-group-engraver.cc:95 -msgid "are there two Axis_group_engravers?" +#: relocate.cc:394 +#, c-format +msgid "Unknown relocation command %s" msgstr "" -#: axis-group-engraver.cc:96 -msgid "removing this vertical group" +#: rest-collision-engraver.cc:70 +msgid "rhythmic head is not part of a rhythmic column" msgstr "" -#: cluster.cc:120 -#, c-format -msgid "unknown cluster style `%s'" +#: rest-collision.cc:146 +msgid "cannot resolve rest collision: rest direction not set" msgstr "" -#: cluster.cc:157 -msgid "junking empty cluster" +#: rest-collision.cc:157 rest-collision.cc:266 +msgid "too many colliding rests" msgstr "" -#: context-property.cc:42 -msgid "need symbol arguments for \\override and \\revert" +#: rest.cc:192 +#, c-format +msgid "rest `%s' not found" msgstr "" -#: source-file.cc:85 +#: score-engraver.cc:78 #, c-format -msgid "expected to read %d characters, got %d" +msgid "cannot find `%s'" msgstr "" -#: axis-group-interface.cc:631 -msgid "an outside-staff object should have a direction, defaulting to up" +#: score-engraver.cc:80 +msgid "Music font has not been installed properly." msgstr "" -#: coherent-ligature-engraver.cc:111 +#: score-engraver.cc:82 #, c-format -msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul" +msgid "Search path `%s'" msgstr "" -#: percent-repeat-engraver.cc:148 -msgid "unterminated percent repeat" +#: score-engraver.cc:84 +msgid "Aborting" msgstr "" -#: note-head.cc:76 -#, c-format -msgid "none of note heads `%s' or `%s' found" +#: score.cc:172 +msgid "already have music in score" msgstr "" -#: relative-octave-check.cc:49 -msgid "Failed octave check, got: " +#: score.cc:173 +msgid "this is the previous music" +msgstr "" + +#: score.cc:178 +msgid "errors found, ignoring music expression" msgstr "" #. FIXME: @@ -2598,806 +2892,842 @@ msgstr "" msgid " scheme encoding: " msgstr "" -#: all-font-metrics.cc:156 -#, c-format -msgid "cannot find font: `%s'" +#: skyline-pair.cc:131 +msgid "direction must not be CENTER in ly:skyline-pair::skyline" msgstr "" -#: property-iterator.cc:85 -#, c-format -msgid "not a grob name, `%s'" +#: slur-engraver.cc:176 +msgid "unterminated slur" msgstr "" -#: bar-check-iterator.cc:84 -#, c-format -msgid "barcheck failed at: %s" +#: slur-engraver.cc:211 +msgid "cannot end slur" msgstr "" -#: stem.cc:116 -msgid "weird stem size, check for narrow beams" +#. We already have an old slur, so give a warning +#. and completely ignore the new slur. +#: slur-engraver.cc:231 +msgid "already have slur" msgstr "" -#: stem.cc:657 +#: slur.cc:430 #, c-format -msgid "flag `%s' not found" +msgid "Ignoring grob for slur: %s. avoid-slur not set?" msgstr "" -#: stem.cc:673 +#: source-file.cc:85 #, c-format -msgid "flag stroke `%s' not found" +msgid "expected to read %d characters, got %d" msgstr "" -#: global-context-scheme.cc:96 global-context-scheme.cc:114 -msgid "no music found in score" +#: staff-performer.cc:275 +msgid "MIDI channel wrapped around" msgstr "" -#: global-context-scheme.cc:104 -msgid "Interpreting music... " +#: staff-performer.cc:276 +msgid "remapping modulo 16" msgstr "" -#: global-context-scheme.cc:127 -#, c-format -msgid "elapsed time: %.2f seconds" +#: stem-engraver.cc:110 +msgid "tremolo duration is too long" msgstr "" -#: translator-group-ctors.cc:40 +#: stem-engraver.cc:162 #, c-format -msgid "fatal error. Couldn't find type: %s" +msgid "adding note head to incompatible stem (type = %d/%d)" msgstr "" -#: mensural-ligature.cc:171 -msgid "Mensural_ligature: unexpected case fall-through" +#: stem-engraver.cc:165 +msgid "maybe input should specify polyphonic voices" msgstr "" -#: mensural-ligature.cc:233 -msgid "Mensural_ligature: (join_right == 0)" +#: stem.cc:128 +msgid "weird stem size, check for narrow beams" msgstr "" -#: page-turn-page-breaking.cc:168 +#: system.cc:200 #, c-format -msgid "page-turn-page-breaking: breaking from %d to %d" -msgstr "" - -#: page-turn-page-breaking.cc:217 -msgid "" -"cannot fit the first page turn onto a single page. Consider setting first-" -"page-number to an even number." +msgid "Element count %d" msgstr "" -#: page-turn-page-breaking.cc:230 +#: system.cc:480 #, c-format -msgid "Calculating page and line breaks (%d possible page breaks)..." +msgid "Grob count %d" msgstr "" -#: page-turn-page-breaking.cc:300 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:129 #, c-format -msgid "break starting at page %d" +msgid "Cyclic markup detected: %s" msgstr "" -#: page-turn-page-breaking.cc:301 +#. TODO: Also print the arguments of the markup! +#: text-interface.cc:142 #, c-format -msgid "\tdemerits: %f" +msgid "Markup depth exceeds maximal value of %d; Markup: %s" msgstr "" -#: page-turn-page-breaking.cc:302 -#, c-format -msgid "\tsystem count: %d" +#: text-spanner-engraver.cc:72 +msgid "cannot find start of text spanner" msgstr "" -#: page-turn-page-breaking.cc:303 -#, c-format -msgid "\tpage count: %d" +#: text-spanner-engraver.cc:85 +msgid "already have a text spanner" msgstr "" -#: page-turn-page-breaking.cc:304 -#, c-format -msgid "\tprevious break: %d" +#: text-spanner-engraver.cc:130 +msgid "unterminated text spanner" msgstr "" -#: lily-parser.cc:106 -msgid "Parsing..." +#: tie-engraver.cc:117 +msgid "unterminated tie" msgstr "" -#: lily-parser.cc:134 -msgid "braces do not match" +#: tie-engraver.cc:348 +msgid "lonely tie" msgstr "" -#: score.cc:178 -msgid "already have music in score" +#. +#. Todo: should make typecheck? +#. +#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi. +#. +#: time-signature-engraver.cc:75 +#, c-format +msgid "strange time signature found: %d/%d" msgstr "" -#: score.cc:179 -msgid "this is the previous music" +#. If there is no such symbol, we default to the numbered style. +#. (Here really with a warning!) +#: time-signature.cc:122 +#, c-format +msgid "time signature symbol `%s' not found; reverting to numbered style" msgstr "" -#: score.cc:184 -msgid "errors found, ignoring music expression" +#: translator-ctors.cc:65 +#, c-format +msgid "unknown translator: `%s'" msgstr "" -#: change-iterator.cc:34 +#: translator-group-ctors.cc:40 #, c-format -msgid "cannot change `%s' to `%s'" +msgid "fatal error. Couldn't find type: %s" msgstr "" -#. FIXME: constant error message. -#: change-iterator.cc:93 -msgid "cannot find context to switch to" +#: translator-group.cc:188 +#, c-format +msgid "cannot find: `%s'" msgstr "" -#. We could change the current translator's id, but that would make -#. errors hard to catch. -#. -#. last->translator_id_string () = get_change -#. ()->change_to_id_string (); -#: change-iterator.cc:102 +#: translator.cc:326 #, c-format -msgid "not changing to same context type: %s" +msgid "Two simultaneous %s events, junking this one" msgstr "" -#. FIXME: uncomprehensable message -#: change-iterator.cc:106 -msgid "none of these in my family" +#: translator.cc:327 +#, c-format +msgid "Previous %s event here" msgstr "" -#. If there is no such symbol, we default to the numbered style. -#. (Here really with a warning!) -#: time-signature.cc:94 +#: ttf.cc:480 ttf.cc:528 #, c-format -msgid "time signature symbol `%s' not found; reverting to numbered style" +msgid "font index %d too large for font `%s', using index 0" msgstr "" -#: grob-interface.cc:68 -#, c-format -msgid "Unknown interface `%s'" +#: ttf.cc:512 ttf.cc:562 +msgid "font index must be non-negative, using index 0" msgstr "" -#: grob-interface.cc:79 -#, c-format -msgid "Grob `%s' has no interface for property `%s'" +#: tuplet-engraver.cc:110 +msgid "No tuplet to end" msgstr "" -#: open-type-font.cc:44 +#: vaticana-ligature-engraver.cc:400 #, c-format -msgid "cannot allocate %lu bytes" +msgid "" +"ignored prefix(es) `%s' of this head according to restrictions of the " +"selected ligature style" msgstr "" -#: open-type-font.cc:48 -#, c-format -msgid "cannot load font table: %s" +#: vaticana-ligature-engraver.cc:466 +msgid "" +"Ambiguous use of dots in ligature: there are multiple dotted notes with the " +"same pitch. The ligature should be split." msgstr "" -#: open-type-font.cc:53 -#, c-format -msgid "FreeType error: %s" +#: vaticana-ligature-engraver.cc:524 +msgid "" +"This ligature has a dotted head followed by a non-dotted head. The ligature " +"should be split after the last dotted head before this head." msgstr "" -#: open-type-font.cc:111 +#: vaticana-ligature-engraver.cc:736 #, c-format -msgid "unsupported font format: %s" +msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul" msgstr "" -#: open-type-font.cc:113 -#, c-format -msgid "error reading font file %s: %s" +#: vaticana-ligature.cc:94 +msgid "flexa-height undefined; assuming 0" msgstr "" -#: open-type-font.cc:188 -#, c-format -msgid "FT_Get_Glyph_Name () Freetype error: %s" +#: vaticana-ligature.cc:99 +msgid "ascending vaticana style flexa" msgstr "" -#: midi-stream.cc:39 -#, c-format -msgid "cannot open for write: %s: %s" +#. fixme: be more verbose. +#: volta-engraver.cc:110 +msgid "cannot end volta spanner" msgstr "" -#: midi-stream.cc:55 -#, c-format -msgid "cannot write to file: `%s'" +#: volta-engraver.cc:120 +msgid "already have a volta spanner, ending that one prematurely" +msgstr "" + +#: volta-engraver.cc:124 +msgid "also already have an ended spanner" +msgstr "" + +#: volta-engraver.cc:125 +msgid "giving up" +msgstr "" + +#: parser.yy:161 parser.yy:175 +msgid "Too much lookahead" msgstr "" -#: parser.yy:820 +#: parser.yy:835 parser.yy:1284 +msgid "not a context mod" +msgstr "" + +#: parser.yy:1027 msgid "\\paper cannot be used in \\score, use \\layout instead" msgstr "" -#: parser.yy:844 +#: parser.yy:1051 msgid "need \\paper for paper block" msgstr "" -#: parser.yy:1363 -msgid "only \\consists takes non-string argument." +#: parser.yy:1204 +msgid "Ignoring non-music expression" +msgstr "" + +#: parser.yy:2044 +msgid "only \\consists and \\remove take non-string argument." msgstr "" -#: parser.yy:1376 +#: parser.yy:2057 msgid "Grob name should be alphanumeric" msgstr "" -#: parser.yy:1685 -msgid "second argument must be pitch list" +#: parser.yy:2261 +msgid "not a rhythmic event" msgstr "" -#: parser.yy:1716 parser.yy:1721 parser.yy:2194 +#: parser.yy:2357 parser.yy:2362 msgid "have to be in Lyric mode for lyrics" msgstr "" -#: parser.yy:1818 +#: parser.yy:2477 msgid "expecting string as script definition" msgstr "" -#: parser.yy:1973 parser.yy:2024 +#: parser.yy:2637 parser.yy:2681 #, c-format msgid "not a duration: %d" msgstr "" -#: parser.yy:2148 +#: parser.yy:2800 msgid "have to be in Note mode for notes" msgstr "" -#: parser.yy:2209 +#: parser.yy:2855 msgid "have to be in Chord mode for chords" msgstr "" -#: lexer.ll:190 +#: parser.yy:3115 +msgid "not a markup" +msgstr "" + +#: lexer.ll:218 msgid "stray UTF-8 BOM encountered" msgstr "" -#: lexer.ll:194 +#: lexer.ll:221 msgid "Skipping UTF-8 BOM" msgstr "" -#: lexer.ll:249 +#: lexer.ll:279 #, c-format msgid "Renaming input to: `%s'" msgstr "" -#: lexer.ll:266 +#: lexer.ll:296 msgid "quoted string expected after \\version" msgstr "" -#: lexer.ll:270 +#: lexer.ll:300 msgid "quoted string expected after \\sourcefilename" msgstr "" -#: lexer.ll:274 +#: lexer.ll:304 msgid "integer expected after \\sourcefileline" msgstr "" -#: lexer.ll:287 -msgid "EOF found inside a comment" -msgstr "" - -#: lexer.ll:302 +#: lexer.ll:327 msgid "\\maininput not allowed outside init files" msgstr "" -#: lexer.ll:326 +#: lexer.ll:351 #, c-format msgid "wrong or undefined identifier: `%s'" msgstr "" +#: lexer.ll:377 +msgid "string expected after \\include" +msgstr "" + #. backup rule -#: lexer.ll:335 +#: lexer.ll:387 msgid "end quote missing" msgstr "" -#: lexer.ll:485 +#: lexer.ll:558 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "" -#: lexer.ll:595 +#: lexer.ll:672 msgid "Brace found at end of markup. Did you forget a space?" msgstr "" -#: lexer.ll:699 +#: lexer.ll:684 +msgid "EOF found inside a comment" +msgstr "" + +#: lexer.ll:782 #, c-format -msgid "invalid character: `%c'" +msgid "invalid character: `%s'" msgstr "" -#: lexer.ll:814 lexer.ll:815 +#: lexer.ll:903 lexer.ll:904 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "" -#: lexer.ll:924 lexer.ll:925 +#: lexer.ll:1186 lexer.ll:1187 +msgid "non-UTF-8 input" +msgstr "" + +#: lexer.ll:1230 lexer.ll:1231 #, c-format msgid "file too old: %s (oldest supported: %s)" msgstr "" -#: lexer.ll:925 lexer.ll:926 +#: lexer.ll:1231 lexer.ll:1232 msgid "consider updating the input with the convert-ly script" msgstr "" -#: lexer.ll:931 lexer.ll:932 +#: lexer.ll:1237 lexer.ll:1238 #, c-format msgid "program too old: %s (file requires: %s)" msgstr "" -#: documentation-lib.scm:59 -#, scheme-format -msgid "Processing ~S..." -msgstr "" - -#: documentation-lib.scm:176 +#: backend-library.scm:27 #, scheme-format -msgid "Writing ~S..." +msgid "Invoking `~a'..." msgstr "" -#: documentation-lib.scm:198 +#: backend-library.scm:31 #, scheme-format -msgid "cannot find description for property ~S (~S)" +msgid "`~a' failed (~a)\n" msgstr "" -#: parser-clef.scm:141 parser-clef.scm:181 +#: backend-library.scm:90 #, scheme-format -msgid "unknown clef type `~a'" +msgid "Converting to `~a'...\n" msgstr "" -#: parser-clef.scm:142 parser-clef.scm:182 +#. Do not try to guess the name of the png file, +#. GS produces PNG files like BASE-page%d.png. +#: backend-library.scm:99 #, scheme-format -msgid "supported clefs: ~a" +msgid "Converting to ~a..." msgstr "" -#: document-backend.scm:132 +#: backend-library.scm:137 #, scheme-format -msgid "pair expected in doc ~s" +msgid "Writing header field `~a' to `~a'..." msgstr "" -#: document-backend.scm:189 +#: backend-library.scm:187 #, scheme-format -msgid "cannot find interface for property: ~S" +msgid "missing stencil expression `~S'" msgstr "" -#: document-backend.scm:199 +#: chord-entry.scm:52 #, scheme-format -msgid "unknown Grob interface: ~S" +msgid "Spurious garbage following chord: ~A" msgstr "" -#: framework-eps.scm:108 +#: define-context-properties.scm:31 define-grob-properties.scm:21 +#: define-music-properties.scm:21 #, scheme-format -msgid "Writing ~a..." +msgid "symbol ~S redefined" msgstr "" -#: define-music-properties.scm:21 define-grob-properties.scm:21 -#: define-context-properties.scm:31 +#: define-event-classes.scm:67 #, scheme-format -msgid "symbol ~S redefined" +msgid "unknown parent class `~a'" msgstr "" -#: paper.scm:115 -msgid "set-global-staff-size: not in toplevel scope" +#: define-markup-commands.scm:887 +msgid "no systems found in \\score markup, does it have a \\layout block?" msgstr "" -#: paper.scm:296 +#: define-markup-commands.scm:2614 #, scheme-format -msgid "This is not a \\layout {} object, ~S" +msgid "Cannot find glyph ~a" msgstr "" -#: paper.scm:308 +#: define-markup-commands.scm:3040 #, scheme-format -msgid "Unknown paper size: ~a" +msgid "no brace found for point size ~S " msgstr "" -#. TODO: should raise (generic) exception with throw, and catch -#. that in parse-scm.cc -#: paper.scm:323 -msgid "Must use #(set-paper-size .. ) within \\paper { ... }" +#: define-markup-commands.scm:3041 +#, scheme-format +msgid "defaulting to ~S pt" msgstr "" -#: lily.scm:225 -msgid "Using (ice-9 curried-definitions) module\n" +#: define-markup-commands.scm:3194 +#, scheme-format +msgid "not a valid duration string: ~a" msgstr "" -#: lily.scm:230 -msgid "Guile 1.8\n" +#: define-music-types.scm:765 +#, scheme-format +msgid "symbol expected: ~S" msgstr "" -#: lily.scm:290 +#: define-music-types.scm:768 #, scheme-format -msgid "cannot find: ~A" +msgid "cannot find music object: ~S" msgstr "" -#: lily.scm:350 +#: define-music-types.scm:787 #, scheme-format -msgid "wrong type for argument ~a. Expecting ~a, found ~s" +msgid "unknown repeat type `~S'" msgstr "" -#: lily.scm:716 -msgid "Compilation successfully completed" +#: define-music-types.scm:788 +msgid "See define-music-types.scm for supported repeats" msgstr "" -#: lily.scm:717 -msgid "Compilation completed with warnings or errors" +#: define-note-names.scm:962 +msgid "Select note names language." msgstr "" -#: lily.scm:779 +#: define-note-names.scm:968 #, scheme-format -msgid "job ~a terminated with signal: ~a" +msgid "Using `~a' note names..." msgstr "" -#: lily.scm:782 +#: define-note-names.scm:971 #, scheme-format -msgid "" -"logfile ~a (exit ~a):\n" -"~a" +msgid "Could not find language `~a'. Ignoring." msgstr "" -#: lily.scm:804 lily.scm:882 +#: document-backend.scm:132 #, scheme-format -msgid "failed files: ~S" +msgid "pair expected in doc ~s" msgstr "" -#: lily.scm:873 +#: document-backend.scm:189 #, scheme-format -msgid "Redirecting output to ~a..." +msgid "cannot find interface for property: ~S" msgstr "" -#: lily.scm:892 +#: document-backend.scm:199 #, scheme-format -msgid "Invoking `~a'...\n" +msgid "unknown Grob interface: ~S" msgstr "" -#: graphviz.scm:64 +#: documentation-lib.scm:59 #, scheme-format -msgid "Writing graph `~a'..." +msgid "Processing ~S..." msgstr "" -#: framework-svg.scm:84 +#: documentation-lib.scm:176 #, scheme-format -msgid "Updating font into: ~a" +msgid "Writing ~S..." msgstr "" -#: layout-beam.scm:40 +#: documentation-lib.scm:188 #, scheme-format -msgid "Error in beam quanting. Expected (~S,~S) found ~S." +msgid "cannot find description for property `~S' (~S)" msgstr "" -#: layout-beam.scm:54 +#: documentation-lib.scm:209 #, scheme-format -msgid "Error in beam quanting. Expected ~S 0, found ~S." +msgid "cannot find description for property ~S (~S)" msgstr "" -#: modal-transforms.scm:38 -msgid "'from' pitch not in scale; ignoring" +#: flag-styles.scm:151 +#, scheme-format +msgid "flag stroke `~a' or `~a' not found" msgstr "" -#: modal-transforms.scm:42 modal-transforms.scm:75 -msgid "'to' pitch not in scale; ignoring" +#: framework-eps.scm:108 +#, scheme-format +msgid "Writing ~a..." msgstr "" -#: modal-transforms.scm:46 -msgid "pitch to be transposed not in scale; ignoring" +#: framework-ps.scm:250 +#, scheme-format +msgid "cannot embed ~S=~S" msgstr "" -#: modal-transforms.scm:71 -msgid "'around' pitch not in scale; ignoring" +#: framework-ps.scm:293 +#, scheme-format +msgid "cannot extract file matching ~a from ~a" msgstr "" -#: modal-transforms.scm:79 -msgid "pitch to be inverted not in scale; ignoring" +#: framework-ps.scm:311 +#, scheme-format +msgid "do not know how to embed ~S=~S" msgstr "" -#: modal-transforms.scm:95 -msgid "negative replication count; ignoring" +#: framework-ps.scm:336 +#, scheme-format +msgid "do not know how to embed font ~s ~s ~s" msgstr "" -#: backend-library.scm:29 ps-to-png.scm:68 -#, scheme-format -msgid "Invoking `~a'..." +#: framework-ps.scm:686 +msgid "" +"\n" +"The PostScript backend does not support the\n" +"system-by-system output. For that, use the EPS backend instead,\n" +"\n" +" lilypond -dbackend=eps FILE\n" +"\n" +"If have cut & pasted a lilypond fragment from a webpage, be sure\n" +"to only remove anything before\n" +"\n" +" %% ****************************************************************\n" +" %% Start cut-&-pastable-section\n" +" %% ****************************************************************\n" msgstr "" -#: backend-library.scm:34 +#: framework-svg.scm:84 #, scheme-format -msgid "`~a' failed (~a)" +msgid "Updating font into: ~a" msgstr "" -#: backend-library.scm:94 +#: graphviz.scm:64 #, scheme-format -msgid "Converting to `~a'..." +msgid "Writing graph `~a'..." msgstr "" -#. Do not try to guess the name of the png file, -#. GS produces PNG files like BASE-page%d.png. -#: backend-library.scm:104 +#: layout-beam.scm:40 #, scheme-format -msgid "Converting to ~a..." +msgid "Error in beam quanting. Expected (~S,~S) found ~S." msgstr "" -#: backend-library.scm:142 +#: layout-beam.scm:54 #, scheme-format -msgid "Writing header field `~a' to `~a'..." +msgid "Error in beam quanting. Expected ~S 0, found ~S." msgstr "" -#: backend-library.scm:192 -#, scheme-format -msgid "missing stencil expression `~S'" +#: lily-library.scm:299 +msgid "Music unsuitable for context-mod" msgstr "" -#: to-xml.scm:191 +#: lily-library.scm:349 #, scheme-format -msgid "assertion failed: ~S" +msgid "Cannot find context-def \\~a" msgstr "" -#: chord-entry.scm:49 -#, scheme-format -msgid "Spurious garbage following chord: ~A" +#: lily-library.scm:365 +msgid "Music unsuitable for output-def" msgstr "" -#: lily-library.scm:758 +#: lily-library.scm:892 msgid "" "Find the index between @var{start} and @var{end} (an integer)\n" "which produces the closest match to @var{target-val} if\n" "applied to function @var{getter}." msgstr "" -#: lily-library.scm:832 +#: lily-library.scm:966 #, scheme-format msgid "unknown unit: ~S" msgstr "" -#: lily-library.scm:858 lily-library.scm:867 -msgid "warning:" -msgstr "" - -#: lily-library.scm:860 +#: lily-library.scm:991 #, scheme-format msgid "no \\version statement found, please add~afor future compatibility" msgstr "" -#: lily-library.scm:868 +#: lily-library.scm:997 msgid "old relative compatibility not used" msgstr "" -#: output-ps.scm:48 -msgid "Found infinity or nan in output. Substituting 0.0" +#: lily.scm:234 +msgid "Using (ice-9 curried-definitions) module\n" msgstr "" -#: output-ps.scm:289 output-svg.scm:550 -#, scheme-format -msgid "unknown line-cap-style: ~S" +#: lily.scm:237 +msgid "Guile 1.8\n" msgstr "" -#: output-ps.scm:294 output-svg.scm:556 +#: lily.scm:297 #, scheme-format -msgid "unknown line-join-style: ~S" +msgid "cannot find: ~A" msgstr "" -#: output-svg.scm:47 +#: lily.scm:708 +msgid "Success: compilation successfully completed" +msgstr "" + +#: lily.scm:709 +msgid "Compilation completed with warnings or errors" +msgstr "" + +#: lily.scm:771 #, scheme-format -msgid "undefined: ~S" +msgid "job ~a terminated with signal: ~a" msgstr "" -#: output-svg.scm:151 +#: lily.scm:774 #, scheme-format -msgid "cannot decypher Pango description: ~a" +msgid "" +"logfile ~a (exit ~a):\n" +"~a" msgstr "" -#: output-svg.scm:231 -msgid "Glyph must have a unicode value" +#: lily.scm:796 lily.scm:882 +#, scheme-format +msgid "failed files: ~S" msgstr "" -#: output-svg.scm:283 output-svg.scm:293 +#: lily.scm:873 #, scheme-format -msgid "cannot find SVG font ~S" +msgid "Redirecting output to ~a..." msgstr "" -#: flag-styles.scm:148 +#: lily.scm:892 ps-to-png.scm:66 #, scheme-format -msgid "flag stroke `~a' or `~a' not found" +msgid "Invoking `~a'...\n" msgstr "" -#: define-note-names.scm:962 -msgid "Select note names language." +#: ly-syntax-constructors.scm:66 +#, scheme-format +msgid "~a function cannot return ~a" msgstr "" -#: define-note-names.scm:969 +#: ly-syntax-constructors.scm:75 #, scheme-format -msgid "Using `~a' note names..." +msgid "wrong type for argument ~a. Expecting ~a, found ~s" msgstr "" -#: define-note-names.scm:972 +#: ly-syntax-constructors.scm:188 #, scheme-format -msgid "Could not find language `~a'. Ignoring." +msgid "Invalid property operation ~a" msgstr "" -#: define-music-types.scm:740 +#: markup-macros.scm:331 #, scheme-format -msgid "symbol expected: ~S" +msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" msgstr "" -#: define-music-types.scm:743 +#: markup-macros.scm:337 #, scheme-format -msgid "cannot find music object: ~S" +msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." msgstr "" -#: define-music-types.scm:762 +#: markup-macros.scm:373 #, scheme-format -msgid "unknown repeat type `~S'" +msgid "Not a markup command: ~A" msgstr "" -#: define-music-types.scm:763 -msgid "See define-music-types.scm for supported repeats" +#: modal-transforms.scm:38 +msgid "'from' pitch not in scale; ignoring" msgstr "" -#: translation-functions.scm:341 -#, scheme-format -msgid "Negative fret for pitch ~a on string ~a" +#: modal-transforms.scm:42 modal-transforms.scm:75 +msgid "'to' pitch not in scale; ignoring" msgstr "" -#: translation-functions.scm:385 -#, scheme-format -msgid "No open string for pitch ~a" +#: modal-transforms.scm:46 +msgid "pitch to be transposed not in scale; ignoring" msgstr "" -#: translation-functions.scm:400 -#, scheme-format -msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +#: modal-transforms.scm:71 +msgid "'around' pitch not in scale; ignoring" msgstr "" -#: translation-functions.scm:401 -msgid "Ignoring string request." +#: modal-transforms.scm:79 +msgid "pitch to be inverted not in scale; ignoring" msgstr "" -#: translation-functions.scm:414 -#, scheme-format -msgid "No string for pitch ~a (given frets ~a)" +#: modal-transforms.scm:95 +msgid "negative replication count; ignoring" msgstr "" -#: translation-functions.scm:515 -#, scheme-format -msgid "" -"No label for fret ~a (on string ~a);\n" -"only ~a fret labels provided" +#: music-functions.scm:272 +msgid "More alternatives than repeats. Junking excess alternatives" msgstr "" -#: framework-ps.scm:250 +#: music-functions.scm:303 #, scheme-format -msgid "cannot embed ~S=~S" +msgid "invalid tremolo repeat count: ~a" msgstr "" -#: framework-ps.scm:293 -#, scheme-format -msgid "cannot extract file matching ~a from ~a" +#: music-functions.scm:689 +msgid "Bad chord repetition" msgstr "" -#: framework-ps.scm:311 +#: music-functions.scm:724 #, scheme-format -msgid "do not know how to embed ~S=~S" +msgid "music expected: ~S" msgstr "" -#: framework-ps.scm:336 +#: music-functions.scm:1042 #, scheme-format -msgid "do not know how to embed font ~s ~s ~s" +msgid "cannot find quoted music: `~S'" msgstr "" -#: framework-ps.scm:669 -msgid "" -"\n" -"The PostScript backend does not support the\n" -"system-by-system output. For that, use the EPS backend instead,\n" -"\n" -" lilypond -dbackend=eps FILE\n" -"\n" -"If have cut & pasted a lilypond fragment from a webpage, be sure\n" -"to only remove anything before\n" -"\n" -" %% ****************************************************************\n" -" %% Start cut-&-pastable-section\n" -" %% ****************************************************************\n" +#: music-functions.scm:1180 +msgid "Add @var{octave-shift} to the octave of @var{pitch}." msgstr "" -#: music-functions.scm:268 -msgid "More alternatives than repeats. Junking excess alternatives" +#: music-functions.scm:1240 +#, scheme-format +msgid "Unknown octaveness type: ~S " msgstr "" -#: music-functions.scm:297 -#, scheme-format -msgid "invalid tremolo repeat count: ~a" +#: music-functions.scm:1241 +msgid "Defaulting to 'any-octave." msgstr "" -#: music-functions.scm:618 +#: music-functions.scm:1578 #, scheme-format -msgid "music expected: ~S" +msgid "unknown accidental style: ~S" msgstr "" -#. FIXME: uncomprehensable message -#: music-functions.scm:662 +#: output-ps.scm:277 output-svg.scm:524 #, scheme-format -msgid "Bar check failed. Expect to be at ~a, instead at ~a" +msgid "unknown line-cap-style: ~S" msgstr "" -#: music-functions.scm:846 +#: output-ps.scm:282 output-svg.scm:530 #, scheme-format -msgid "cannot find quoted music: `~S'" +msgid "unknown line-join-style: ~S" msgstr "" -#: music-functions.scm:982 -msgid "Add @var{octave-shift} to the octave of @var{pitch}." +#: output-svg.scm:47 +#, scheme-format +msgid "undefined: ~S" msgstr "" -#: music-functions.scm:1037 +#: output-svg.scm:157 #, scheme-format -msgid "Unknown octaveness type: ~S " +msgid "cannot decypher Pango description: ~a" msgstr "" -#: music-functions.scm:1038 -msgid "Defaulting to 'any-octave." +#: output-svg.scm:237 +msgid "Glyph must have a unicode value" msgstr "" -#: music-functions.scm:1378 +#: output-svg.scm:289 output-svg.scm:299 #, scheme-format -msgid "unknown accidental style: ~S" +msgid "cannot find SVG font ~S" msgstr "" -#: define-event-classes.scm:79 -msgid "All classes must be the last in their matrilineal line." +#: paper.scm:120 +msgid "set-global-staff-size: not in toplevel scope" msgstr "" -#: define-event-classes.scm:83 -msgid "" -"All classes must have a well-defined pedigree in the existing class " -"hierarchy." +#: paper.scm:315 +#, scheme-format +msgid "This is not a \\layout {} object, ~S" msgstr "" -#: define-event-classes.scm:149 +#: paper.scm:327 #, scheme-format -msgid "event class ~A seems to be unused" +msgid "Unknown paper size: ~a" msgstr "" -#. should be programming-error -#: define-event-classes.scm:155 -#, scheme-format -msgid "translator listens to nonexisting event class ~A" +#. TODO: should raise (generic) exception with throw, and catch +#. that in parse-scm.cc +#: paper.scm:342 +msgid "Must use #(set-paper-size .. ) within \\paper { ... }" msgstr "" -#: markup.scm:223 +#: parser-clef.scm:143 parser-clef.scm:183 #, scheme-format -msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S" +msgid "unknown clef type `~a'" msgstr "" -#: markup.scm:229 +#: parser-clef.scm:144 parser-clef.scm:184 #, scheme-format -msgid "Invalid argument in position ~A. Expect: ~A, found: ~S." +msgid "supported clefs: ~a" msgstr "" -#: markup.scm:292 +#: parser-ly-from-scheme.scm:73 +msgid "error in #{ ... #}" +msgstr "" + +#: part-combiner.scm:598 #, scheme-format -msgid "Not a markup command: ~A" +msgid "quoted music `~a' is empty" msgstr "" -#: ps-to-png.scm:74 +#: ps-to-png.scm:70 #, scheme-format msgid "~a exited with status: ~S" msgstr "" -#: define-markup-commands.scm:803 -msgid "no systems found in \\score markup, does it have a \\layout block?" +#: to-xml.scm:191 +#, scheme-format +msgid "assertion failed: ~S" msgstr "" -#: define-markup-commands.scm:2404 +#: translation-functions.scm:359 #, scheme-format -msgid "Cannot find glyph ~a" +msgid "Negative fret for pitch ~a on string ~a" msgstr "" -#: define-markup-commands.scm:2830 +#: translation-functions.scm:362 #, scheme-format -msgid "no brace found for point size ~S " +msgid "Missing fret for pitch ~a on string ~a" msgstr "" -#: define-markup-commands.scm:2831 +#: translation-functions.scm:413 #, scheme-format -msgid "defaulting to ~S pt" +msgid "No open string for pitch ~a" msgstr "" -#: define-markup-commands.scm:2984 +#: translation-functions.scm:428 translation-functions.scm:440 #, scheme-format -msgid "not a valid duration string: ~a" +msgid "Requested string for pitch requires negative fret: string ~a pitch ~a" +msgstr "" + +#: translation-functions.scm:431 +msgid "Ignoring string request and recalculating." msgstr "" -#: ly-syntax-constructors.scm:51 -msgid "Music head function must return Music object" +#: translation-functions.scm:443 +msgid "Ignoring note in tablature." msgstr "" -#: ly-syntax-constructors.scm:177 +#: translation-functions.scm:466 #, scheme-format -msgid "Invalid property operation ~a" +msgid "No string for pitch ~a (given frets ~a)" +msgstr "" + +#: translation-functions.scm:571 +#, scheme-format +msgid "" +"No label for fret ~a (on string ~a);\n" +"only ~a fret labels provided" msgstr "" diff --git a/po/nl.po b/po/nl.po index b8edb8af4f..c80bfaa63b 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1327,7 +1327,7 @@ msgstr "" #: musicxml2ly.py:2566 msgid "" -"Copyright (c) 2005--2011 by\n" +"Copyright (c) 2005--2012 by\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen and\n" " Reinhold Kainhofer \n" diff --git a/po/uk.po b/po/uk.po index 54d4f36354..fa19302fe0 100644 --- a/po/uk.po +++ b/po/uk.po @@ -1,6 +1,6 @@ # Ukrainian translations for lilypond package # Переклад українською для пакету lilypond. -# Copyright (C) 2007--2011 THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2007--2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Youri Bulka , 2007. # diff --git a/po/vi.po b/po/vi.po index 891411f865..f8b94d2f58 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1073,7 +1073,7 @@ msgstr "" #: musicxml2ly.py:2576 msgid "" -"Copyright (c) 2005--2011 by\n" +"Copyright (c) 2005--2012 by\n" " Han-Wen Nienhuys ,\n" " Jan Nieuwenhuizen and\n" " Reinhold Kainhofer \n" diff --git a/ps/music-drawing-routines.ps b/ps/music-drawing-routines.ps index 09ac055f46..3e62f0366e 100644 --- a/ps/music-drawing-routines.ps +++ b/ps/music-drawing-routines.ps @@ -95,16 +95,30 @@ bind def /draw_round_box % width height x y blot { - 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 + dup + 0.0 gt { + setlinewidth % w h x y + rmoveto % w h + 2 copy 0 ne exch 0 ne and + { + 0 setlinecap + 1 setlinejoin + currentpoint % w h x1 y1 + 4 2 roll % x1 y1 w h + 4 copy + rectfill + rectstroke + } { + 1 setlinecap + rlineto stroke + } ifelse + } { + pop % w h x y + rmoveto % w h + currentpoint % w h x1 y1 + 4 2 roll % x1 y1 w h + rectfill + } ifelse } bind def /draw_polygon % fill? x(n) y(n) x(n-1) y(n-1) ... x(0) y(0) n blot @@ -129,47 +143,6 @@ bind def } ifelse } bind def -/draw_repeat_slash % x-width width height draw_repeat_slash -{ - 2 index % duplicate x-width - 1 setlinecap - 1 setlinejoin - - 0 rlineto % x-width 0 - rlineto % width height - neg 0 rlineto % -x-width 0 - closepath fill -} bind def - -% this is for drawing slurs and barre-indicators. -/draw_bezier_sandwich % x5 y5 x6 y6 x7 y7 - % x4 y4 - % x1 y1 x2 y2 x3 y3 - % x0 y0 - % linewidth draw_bezier_sandwich -{ - gsave - currentpoint translate - % round ending and round beginning - 1 setlinejoin 1 setlinecap - setlinewidth - moveto - curveto - lineto - curveto - closepath - stroke_and_fill - grestore -} bind def - -/draw_dot % radius x y draw_dot -{ - rmoveto - currentpoint - 3 2 roll - 0 360 arc closepath stroke_and_fill -} bind def - /draw_circle % filled? radius thickness draw_circle { setlinewidth % f? r @@ -182,20 +155,6 @@ bind def ifelse } bind def -/draw_oval % filled? x-radius y-radius thickness draw_ellipse -{ - setlinewidth % f? x-r y-r - /yrad exch def - /xrad exch def - xrad 0 rmoveto - 0 yrad -2 xrad mul dup yrad exch 0 rcurveto - 0 yrad neg dup 2 xrad mul dup 3 1 roll 0 rcurveto - closepath - { stroke_and_fill} - { stroke } - ifelse -} bind def - /draw_ellipse % filled? x-radius y-radius thickness draw_ellipse { setlinewidth % f? x-r y-r @@ -271,21 +230,6 @@ bind def [] 0 setdash % reset dash pattern } bind def -/draw_dashed_slur % controls thickness dash -{ -gsave - currentpoint translate - 1 setlinecap - 1 setlinejoin - setdash - setlinewidth - 8 2 roll - moveto - curveto - stroke -grestore -} bind def - /print_glyphs % w dx dy glyph print_glyphs { { diff --git a/python/GNUmakefile b/python/GNUmakefile index 14060aed61..87fa766089 100644 --- a/python/GNUmakefile +++ b/python/GNUmakefile @@ -21,3 +21,5 @@ INSTALLATION_OUT_FILES1=$(OUT_PY_MODULES) $(OUT_PYC_MODULES) $(outdir)/midi.lo: $(outdir)/config.hh default: $(outdir)/relocate-preamble.py + +$(outdir)/relocate-preamble.py: $(depth)/VERSION diff --git a/python/auxiliar/postprocess_html.py b/python/auxiliar/postprocess_html.py index 568ff17e75..70afde80dc 100644 --- a/python/auxiliar/postprocess_html.py +++ b/python/auxiliar/postprocess_html.py @@ -67,8 +67,8 @@ footer_tag = '' footer_tag_re = re.compile (footer_tag) lang_available = _doc ("Other languages: %s.") -browser_lang = _doc ('About automatic language selection.') -browser_language_url = "/web/about/browser-language" +browser_lang = _doc ('About automatic language selection.') +browser_language_url = "http://www.lilypond.org/website/misc/browser-language" LANGUAGES_TEMPLATE = '''

@@ -102,7 +102,8 @@ 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))/') +split_docs_re = re.compile('(Documentation/out-www/(automated-engraving|essay|notation|changes|extending|music-glossary|usage|web|learning|snippets|contributor))/') +lily_examples_re = re.compile ('(href|src)="(ly-examples/.*?)"') lily_snippets_re = re.compile ('(href|src)="([0-9a-f]{2}/lily-.*?)"') pictures_re = re.compile ('src="(pictures/.*?)"') @@ -110,11 +111,16 @@ docindex_link_re = re.compile (r'href="index.html"') manuals_page_link_re = re.compile (r'href="((?:\.\./)+)Documentation/web/manuals') ## Windows does not support symlinks. -# This function avoids creating symlinks for splitted HTML manuals +# This function avoids creating symlinks for split HTML manuals # Get rid of symlinks in GNUmakefile.in (local-WWW-post) # this also fixes missing PNGs only present in translated docs def hack_urls (s, prefix, target, is_development_branch): - if splitted_docs_re.match (prefix): + depth = (prefix.count ('/') - 1) * '../' + # fix css links + s = css_re.sub ('' % {'rel': depth}, s) + # fix image links + if split_docs_re.match (prefix): + s = lily_examples_re.sub ('\\1="../\\2"', s) s = lily_snippets_re.sub ('\\1="../\\2"', s) s = pictures_re.sub ('src="../\\1"', s) @@ -149,11 +155,11 @@ body_tag_re = re.compile ('(?i)]*)>') html_tag_re = re.compile ('(?i)') doctype_re = re.compile ('(?i)\n' -css_re = re.compile ('(?i)]*)href="[^">]*?lilypond.*\.css"([^>]*)>') +css_re = re.compile ('(?i)]*)href="[^">]*?(lilypond.*\.css)"([^>]*)>') end_head_tag_re = re.compile ('(?i)') -css_link = """ +css_link = """ """ @@ -286,10 +292,7 @@ def add_menu (page_flavors, prefix, available, target, translation): if language_menu != '': language_menu += ', ' language_menu += '%s' % (lang_file, t (lang.name)) - if target == 'offline': - browser_language = '' - elif target == 'online': - browser_language = t (browser_lang) % browser_language_url + browser_language = t (browser_lang) % browser_language_url if language_menu: language_available = t (lang_available) % language_menu languages = LANGUAGES_TEMPLATE % vars () @@ -344,30 +347,36 @@ def process_html_files (package_name = '', for prefix, ext_list in pages_dict.items (): for lang_ext in ext_list: file_name = langdefs.lang_file_name (prefix, lang_ext, '.html') - in_f = open (file_name) - s = in_f.read() - in_f.close() - - s = s.replace ('%', '%%') - s = hack_urls (s, prefix, target, bool (int (versiontup[1]) % 2)) - s = add_header (s, prefix) - - ### add footer - if footer_tag_re.search (s) == None: - if 'web' in file_name: - s = add_footer (s, footer_tag + web_footer) - else: - s = add_footer (s, footer_tag + footer) - - available, missing = find_translations (prefix, lang_ext) - page_flavors = process_links (s, prefix, lang_ext, file_name, missing, target) - # Add menu after stripping: must not have autoselection for language menu. - page_flavors = add_menu (page_flavors, prefix, available, target, translation) - for k in page_flavors: - page_flavors[k][1] = page_flavors[k][1] % subst[page_flavors[k][0]] - out_f = open (name_filter (k), 'w') - out_f.write (page_flavors[k][1]) - out_f.close() + source_time = os.path.getmtime(file_name) + dest_time = 0 + if os.path.exists(name_filter(file_name)): + dest_time = os.path.getmtime(name_filter(file_name)) + if dest_time < source_time: + + in_f = open (file_name) + s = in_f.read() + in_f.close() + + s = s.replace ('%', '%%') + s = hack_urls (s, prefix, target, bool (int (versiontup[1]) % 2)) + s = add_header (s, prefix) + + ### add footer + if footer_tag_re.search (s) == None: + if 'web' in file_name: + s = add_footer (s, footer_tag + web_footer) + else: + s = add_footer (s, footer_tag + footer) + + available, missing = find_translations (prefix, lang_ext) + page_flavors = process_links (s, prefix, lang_ext, file_name, missing, target) + # Add menu after stripping: must not have autoselection for language menu. + page_flavors = add_menu (page_flavors, prefix, available, target, translation) + for k in page_flavors: + page_flavors[k][1] = page_flavors[k][1] % subst[page_flavors[k][0]] + out_f = open (name_filter (k), 'w') + out_f.write (page_flavors[k][1]) + out_f.close() # if the page is translated, a .en.html symlink is necessary for content negotiation - if target == 'online' and ext_list != ['']: + if target == 'online' and ext_list != [''] and not os.path.lexists (name_filter (prefix + '.en.html')): os.symlink (os.path.basename (prefix) + '.html', name_filter (prefix + '.en.html')) diff --git a/python/book_base.py b/python/book_base.py index b73f37336e..1d0d9eca99 100644 --- a/python/book_base.py +++ b/python/book_base.py @@ -14,9 +14,11 @@ error = ly.error # Helper functions ######################################################################## -def find_file (name, include_path, raise_error=True): - for i in include_path: +def find_file (name, include_path, working_dir=None, raise_error=True): + current_path = working_dir or os.getcwd(); + for i in [current_path] + include_path: full = os.path.join (i, name) + full = os.path.normpath (os.path.join (current_path, full)) if os.path.exists (full): return full @@ -149,7 +151,8 @@ class BookOutputFormat: return [] def input_fullname (self, input_filename): - return find_file (input_filename, self.global_options.include_path) + return find_file (input_filename, self.global_options.include_path, + self.global_options.original_dir) def adjust_snippet_command (self, cmd): return cmd @@ -172,7 +175,8 @@ class BookOutputFormat: rep = snippet.get_replacements () if PRINTFILENAME in snippet.option_dict: rep['base'] = basename - rep['filename'] = os.path.basename (snippet.substring ('filename')) + rep['filename'] = os.path.basename (snippet.filename) + rep['ext'] = snippet.ext str = self.output[PRINTFILENAME] % rep return str diff --git a/python/book_docbook.py b/python/book_docbook.py index 5ae766bbaf..ef009935d6 100644 --- a/python/book_docbook.py +++ b/python/book_docbook.py @@ -79,7 +79,7 @@ Docbook_output = { PRINTFILENAME: r''' - + %(filename)s diff --git a/python/book_html.py b/python/book_html.py index cf56dd5f49..ac70b743a0 100644 --- a/python/book_html.py +++ b/python/book_html.py @@ -40,6 +40,13 @@ HTML_snippet_res = { 'multiline_comment': r'''(?smx)(?P\s*(?!@c\s+)(?P)\s)''', + 'musicxml_file': + r'''(?mx) + (?P + .*?)\s*> + \s*(?P.*?)\s* + )''', + 'verb': r'''(?x)(?P(?P

.*?
))''', @@ -62,7 +69,7 @@ HTML_output = {

''', BEFORE: r'''

- ''', + ''', OUTPUT: r''' %(alt)s''', - PRINTFILENAME: '

%(filename)s

', + PRINTFILENAME: '

%(filename)s

', QUOTE: r'''
%(str)s @@ -118,6 +125,8 @@ class BookHTMLOutputFormat (BookBase.BookOutputFormat): str = '' rep = snippet.get_replacements (); rep['base'] = basename + rep['filename'] = os.path.basename (snippet.filename) + rep['ext'] = snippet.ext str += self.output_print_filename (basename, snippet) if VERBATIM in snippet.option_dict: rep['verb'] = BookBase.verbatim_html (snippet.verb_ly ()) diff --git a/python/book_latex.py b/python/book_latex.py index 677e88a1f7..f2aa5e36cf 100644 --- a/python/book_latex.py +++ b/python/book_latex.py @@ -3,6 +3,8 @@ import re import tempfile import os +import sys +import subprocess import book_base as BookBase from book_snippets import * import lilylib as ly @@ -68,6 +70,17 @@ Latex_snippet_res = { (?P\S+?) })''', + 'musicxml_file': + r'''(?smx) + ^[^%\n]*? + (?P + \\musicxmlfile\s*( + \[ + \s*(?P.*?)\s* + \])?\s*\{ + (?P\S+?) + })''', + 'singleline_comment': r'''(?mx) ^.*? @@ -112,19 +125,20 @@ Latex_output = { \expandafter\preLilyPondExample \fi \def\lilypondbook{}%% -\input %(base)s-systems.tex +\input{%(base)s-systems.tex} \ifx\postLilyPondExample \undefined \else \expandafter\postLilyPondExample \fi }''', - PRINTFILENAME: '''\\texttt{%(filename)s} + PRINTFILENAME: r'''\texttt{%(filename)s} +\linebreak ''', - QUOTE: r'''\begin{quotation} + QUOTE: r'''\begin{quote} %(str)s -\end{quotation}''', +\end{quote}''', VERBATIM: r'''\noindent \begin{verbatim}%(verb)s\end{verbatim} @@ -162,19 +176,56 @@ def get_latex_textwidth (source, global_options): latex_document = LATEX_INSPECTION_DOCUMENT % {'preamble': preamble} (handle, tmpfile) = tempfile.mkstemp('.tex') - logfile = os.path.splitext (tmpfile)[0] + '.log' - logfile = os.path.split (logfile)[1] + tmpfileroot = os.path.splitext (tmpfile)[0] + tmpfileroot = os.path.split (tmpfileroot)[1] + auxfile = tmpfileroot + '.aux' + logfile = tmpfileroot + '.log' tmp_handle = os.fdopen (handle,'w') tmp_handle.write (latex_document) tmp_handle.close () - ly.system ('%s %s' % (global_options.latex_program, tmpfile), - be_verbose=global_options.verbose) - parameter_string = file (logfile).read() - + progress (_ ("Running `%s' on file `%s' to detect default page settings.\n") + % (global_options.latex_program, tmpfile)); + cmd = '%s %s' % (global_options.latex_program, tmpfile); + ly.debug_output ("Executing: %s\n" % cmd); + run_env = os.environ.copy() + run_env['LC_ALL'] = 'C' + + ### unknown why this is necessary + universal_newlines = True + if sys.platform == 'mingw32': + universal_newlines = False + ### use os.system to avoid weird sleep() problems on + ### GUB's python 2.4.2 on mingw + # make file to write to + output_dir = tempfile.mkdtemp() + output_filename = os.path.join(output_dir, 'output.txt') + # call command + cmd += " > %s" % output_filename + returncode = os.system(cmd) + parameter_string = open(output_filename).read() + if returncode != 0: + warning (_ ("Unable to auto-detect default settings:\n")) + # clean up + os.remove(output_filename) + os.rmdir(output_dir) + else: + proc = subprocess.Popen (cmd, + env=run_env, + universal_newlines=universal_newlines, + shell=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + (parameter_string, error_string) = proc.communicate () + if proc.returncode != 0: + warning (_ ("Unable to auto-detect default settings:\n%s") + % error_string) os.unlink (tmpfile) - os.unlink (logfile) + if os.path.exists (auxfile): + os.unlink (auxfile) + if os.path.exists (logfile): + parameter_string = file (logfile).read() + os.unlink (logfile) columns = 0 m = re.search ('columns=([0-9.]+)', parameter_string) @@ -247,8 +298,11 @@ class BookLatexOutputFormat (BookBase.BookOutputFormat): def snippet_output (self, basename, snippet): str = '' rep = snippet.get_replacements (); - rep['base'] = basename - str += self.output_print_filename (basename, snippet) + rep['base'] = basename.replace ('\\', '/') + rep['filename'] = os.path.basename (snippet.filename).replace ('\\', '/') + rep['ext'] = snippet.ext + if PRINTFILENAME in snippet.option_dict: + str += self.output[PRINTFILENAME] % rep if VERBATIM in snippet.option_dict: rep['verb'] = snippet.verb_ly () str += self.output[VERBATIM] % rep diff --git a/python/book_snippets.py b/python/book_snippets.py index b7c3ddf0d6..f3a11ccca9 100644 --- a/python/book_snippets.py +++ b/python/book_snippets.py @@ -6,6 +6,7 @@ global _;_=ly._ import re import os import copy +import shutil # TODO: We are using os.popen3, which has been deprecated since python 2.6. The # suggested replacement is the Popen function of the subprocess module. # Unfortunately, on windows this needs the msvcrt module, which doesn't seem @@ -15,6 +16,7 @@ import copy progress = ly.progress warning = ly.warning error = ly.error +debug = ly.debug_output @@ -38,14 +40,11 @@ EXAMPLEINDENT = 'exampleindent' FILENAME = 'filename' FILTER = 'filter' FRAGMENT = 'fragment' -LANG = 'lang' ## TODO: This is handled nowhere! LAYOUT = 'layout' -LILYQUOTE = 'lilyquote' LINE_WIDTH = 'line-width' NOFRAGMENT = 'nofragment' NOGETTEXT = 'nogettext' NOINDENT = 'noindent' -NOQUOTE = 'noquote' INDENT = 'indent' NORAGGED_RIGHT = 'noragged-right' NOTES = 'body' @@ -68,7 +67,6 @@ VERSION = 'lilypondversion' # NOTIME and NOGETTEXT have no opposite so they aren't part of this # dictionary. -# NOQUOTE is used internally only. no_options = { NOFRAGMENT: FRAGMENT, NOINDENT: INDENT, @@ -92,7 +90,6 @@ simple_options = [ PRINTFILENAME, DOCTITLE, TEXIDOC, - LANG, VERBATIM, FILENAME, ALT, @@ -112,12 +109,19 @@ snippet_options = { }, ## + # TODO: Remove the 1mm additional padding in the line-width + # once lilypond creates tighter cropped images! PAPER: { PAPERSIZE: r'''#(set-paper-size "%(papersize)s")''', INDENT: r'''indent = %(indent)s''', - LINE_WIDTH: r'''line-width = %(line-width)s''', - QUOTE: r'''line-width = %(line-width)s - 2.0 * %(exampleindent)s''', - LILYQUOTE: r'''line-width = %(line-width)s - 2.0 * %(exampleindent)s''', + LINE_WIDTH: r'''line-width = %(line-width)s + %% offset the left padding, also add 1mm as lilypond creates cropped + %% images with a little space on the right + line-width = #(- line-width (* mm %(padding_mm)f) (* mm 1))''', + QUOTE: r'''line-width = %(line-width)s - 2.0 * %(exampleindent)s + %% offset the left padding, also add 1mm as lilypond creates cropped + %% images with a little space on the right + line-width = #(- line-width (* mm %(padding_mm)f) (* mm 1))''', RAGGED_RIGHT: r'''ragged-right = ##t''', NORAGGED_RIGHT: r'''ragged-right = ##f''', }, @@ -145,24 +149,9 @@ snippet_options = { -FRAGMENT_LY = r''' -%(notes_string)s -{ - - -%% **************************************************************** -%% ly snippet contents follows: -%% **************************************************************** -%(code)s - - -%% **************************************************************** -%% end ly snippet -%% **************************************************************** -} -''' - def classic_lilypond_book_compatibility (key, value): + if key == 'lilyquote': + return (QUOTE, value) if key == 'singleline' and value == None: return (RAGGED_RIGHT, None) @@ -196,8 +185,6 @@ PREAMBLE_LY = '''%%%% Generated by %(program_name)s \paper { %(paper_string)s - force-assignment = #"" - line-width = #(- line-width (* mm %(padding_mm)f)) } \layout { @@ -222,10 +209,23 @@ FULL_LY = ''' %% **************************************************************** ''' +FRAGMENT_LY = r''' +%(notes_string)s +{ +%% **************************************************************** +%% ly snippet contents follows: +%% **************************************************************** +%(code)s +%% **************************************************************** +%% end ly snippet +%% **************************************************************** +} +''' + @@ -332,8 +332,10 @@ class IncludeSnippet (Snippet): class LilypondSnippet (Snippet): def __init__ (self, type, match, formatter, line_number, global_options): Snippet.__init__ (self, type, match, formatter, line_number, global_options) + self.filename = '' + self.ext = '.ly' os = match.group ('options') - self.do_options (os, self.type) + self.parse_snippet_options (os, self.type) def snippet_options (self): @@ -383,87 +385,87 @@ class LilypondSnippet (Snippet): def split_options (self, option_string): return self.formatter.split_snippet_options (option_string); - def do_options (self, option_string, type): - self.option_dict = {} + def parse_snippet_options (self, option_string, type): + self.snippet_option_dict = {} + # Split option string and create raw option_dict from it options = self.split_options (option_string) for option in options: + (key, value) = (option, None) if '=' in option: (key, value) = re.split ('\s*=\s*', option) - self.option_dict[key] = value else: - if option in no_options: - if no_options[option] in self.option_dict: - del self.option_dict[no_options[option]] + # a no... option removes a previous option if present! + if key in no_options: + if no_options[key] in self.option_dict: + del self.snippet_option_dict[no_options[key]] + key = None + # Check for deprecated options, replace them by new ones + (c_key, c_value) = classic_lilypond_book_compatibility (key, value) + if c_key: + if c_value: + warning ( + _ ("deprecated ly-option used: %s=%s") % (key, value)) + warning ( + _ ("compatibility mode translation: %s=%s") % (c_key, c_value)) else: - self.option_dict[option] = None - + warning ( + _ ("deprecated ly-option used: %s") % key) + warning ( + _ ("compatibility mode translation: %s") % c_key) + (key, value) = (c_key, c_value) + # Finally, insert the option: + if key: + self.snippet_option_dict[key] = value # If LINE_WIDTH is used without parameter, set it to default. - has_line_width = self.option_dict.has_key (LINE_WIDTH) - if has_line_width and self.option_dict[LINE_WIDTH] == None: - has_line_width = False - del self.option_dict[LINE_WIDTH] - - # TODO: Can't we do that more efficiently (built-in python func?) - for k in self.formatter.default_snippet_options: - if k not in self.option_dict: - self.option_dict[k] = self.formatter.default_snippet_options[k] - - # RELATIVE does not work without FRAGMENT; - # make RELATIVE imply FRAGMENT - has_relative = self.option_dict.has_key (RELATIVE) - if has_relative and not self.option_dict.has_key (FRAGMENT): - self.option_dict[FRAGMENT] = None - - if not has_line_width: - if type == 'lilypond' or FRAGMENT in self.option_dict: - self.option_dict[RAGGED_RIGHT] = None - - if type == 'lilypond': - if LINE_WIDTH in self.option_dict: - del self.option_dict[LINE_WIDTH] + has_line_width = self.snippet_option_dict.has_key (LINE_WIDTH) + if has_line_width and self.snippet_option_dict[LINE_WIDTH] == None: + del self.snippet_option_dict[LINE_WIDTH] + + # RELATIVE does not work without FRAGMENT, so imply that + if self.snippet_option_dict.has_key (RELATIVE): + self.snippet_option_dict[FRAGMENT] = None + + # Now get the default options from the formatter object (HTML, latex, + # texinfo, etc.) and insert the explicit snippet options to get the + # list of all options for this snippet + # first, make sure we have an INDENT value as a fallback + self.option_dict = {INDENT: '0\\mm'}; + self.option_dict.update (self.formatter.default_snippet_options); + self.option_dict.update (self.snippet_option_dict); + + # also construct a list of all options (as strings) that influence the + # visual appearance of the snippet + lst = filter (lambda (x,y): x not in PROCESSING_INDEPENDENT_OPTIONS, + self.option_dict.iteritems ()); + option_list = [] + for (key, value) in lst: + if value == None: + option_list.append (key) else: - if RAGGED_RIGHT in self.option_dict: - if LINE_WIDTH in self.option_dict: - del self.option_dict[LINE_WIDTH] + option_list.append (key + "=" + value) + option_list.sort () + self.outputrelevant_option_list = option_list + #print ("self.outputrelevant_option_list: %s\n" % self.outputrelevant_option_list); - if QUOTE in self.option_dict or type == 'lilypond': - if LINE_WIDTH in self.option_dict: - del self.option_dict[LINE_WIDTH] - - if not INDENT in self.option_dict: - self.option_dict[INDENT] = '0\\mm' # Set a default line-width if there is none. We need this, because # lilypond-book has set left-padding by default and therefore does # #(define line-width (- line-width (* 3 mm))) # TODO: Junk this ugly hack if the code gets rewritten to concatenate # all settings before writing them in the \paper block. - if not LINE_WIDTH in self.option_dict: - if not QUOTE in self.option_dict: - if not LILYQUOTE in self.option_dict: - self.option_dict[LINE_WIDTH] = "#(- paper-width \ -left-margin-default right-margin-default)" - - def get_option_list (self): - if not 'option_list' in self.__dict__: - option_list = [] - for (key, value) in self.option_dict.items (): - if value == None: - option_list.append (key) - else: - option_list.append (key + '=' + value) - option_list.sort () - self.option_list = option_list - return self.option_list + #if not LINE_WIDTH in self.option_dict: + #if not QUOTE in self.option_dict: + #self.option_dict[LINE_WIDTH] = "#(- paper-width \ +#left-margin-default right-margin-default)" + + # Get a list of all options (as string) that influence the snippet appearance + def get_outputrelevant_option_strings (self): + return self.outputrelevant_option_list def compose_ly (self, code): - if FRAGMENT in self.option_dict: - body = FRAGMENT_LY - else: - body = FULL_LY # Defaults. relative = 1 @@ -491,18 +493,19 @@ left-margin-default right-margin-default)" # # To set @exampleindent locally to zero, we use the @format # environment for non-quoted snippets. + # + # Update: since July 2011 we are running texinfo on a test file + # to detect the default exampleindent, so we might reintroduce + # further usage of exampleindent again. + # + # First, make sure we have some falback default value, auto-detected + # values and explicitly specified values will always override them: override[EXAMPLEINDENT] = r'0.4\in' - override[LINE_WIDTH] = '5\\in' # = texinfo_line_widths['@smallbook'] + override[LINE_WIDTH] = '5\\in' override.update (self.formatter.default_snippet_options) + override['padding_mm'] = self.global_options.padding_mm - option_list = [] - for option in self.get_option_list (): - for name in PROCESSING_INDEPENDENT_OPTIONS: - if option.startswith (name): - break - else: - option_list.append (option) - option_string = ','.join (option_list) + option_string = ','.join (self.get_outputrelevant_option_strings ()) compose_dict = {} compose_types = [NOTES, PREAMBLE, LAYOUT, PAPER] for a in compose_types: @@ -512,20 +515,6 @@ left-margin-default right-margin-default)" option_names.sort () for key in option_names: value = self.option_dict[key] - (c_key, c_value) = classic_lilypond_book_compatibility (key, value) - if c_key: - if c_value: - warning ( - _ ("deprecated ly-option used: %s=%s") % (key, value)) - warning ( - _ ("compatibility mode translation: %s=%s") % (c_key, c_value)) - else: - warning ( - _ ("deprecated ly-option used: %s") % key) - warning ( - _ ("compatibility mode translation: %s") % c_key) - - (key, value) = (c_key, c_value) if value: override[key] = value @@ -574,6 +563,10 @@ left-margin-default right-margin-default)" d = globals().copy() d.update (locals()) d.update (self.global_options.information) + if FRAGMENT in self.option_dict: + body = FRAGMENT_LY + else: + body = FULL_LY return (PREAMBLE_LY + body) % d def get_checksum (self): @@ -588,12 +581,8 @@ left-margin-default right-margin-default)" # code plus fragment options relevant to processing by # lilypond, not the snippet + preamble hash = md5 (self.relevant_contents (self.ly ())) - for option in self.get_option_list (): - for name in PROCESSING_INDEPENDENT_OPTIONS: - if option.startswith (name): - break - else: - hash.update (option) + for option in self.get_outputrelevant_option_strings (): + hash.update (option) ## let's not create too long names. self.checksum = hash.hexdigest ()[:10] @@ -602,7 +591,7 @@ left-margin-default right-margin-default)" def basename (self): cs = self.get_checksum () - name = '%s/lily-%s' % (cs[:2], cs[2:]) + name = os.path.join (cs[:2], 'lily-%s' % cs[2:]) return name final_basename = basename @@ -618,7 +607,7 @@ left-margin-default right-margin-default)" existing = open (filename, 'r').read () if self.relevant_contents (existing) != self.relevant_contents (self.full_ly ()): - warning ("%s: duplicate filename but different contents of orginal file,\n\ + warning ("%s: duplicate filename but different contents of original file,\n\ printing diff against existing file." % filename) ly.stderr_write (self.filter_pipe (self.full_ly (), 'diff -u %s -' % filename)) else: @@ -632,7 +621,7 @@ printing diff against existing file." % filename) def link_all_output_files (self, output_dir, output_dir_files, destination): existing, missing = self.all_output_files (output_dir, output_dir_files) if missing: - print '\nMissing', missing + error (_ ('Missing files: %s') % ', '.join (missing)) raise CompileError(self.basename()) for name in existing: if (self.global_options.use_source_file_names @@ -657,7 +646,21 @@ printing diff against existing file." % filename) dst_path = os.path.split(dst)[0] if not os.path.isdir (dst_path): os.makedirs (dst_path) - os.link (src, dst) + try: + os.link (src, dst) + except AttributeError: + shutil.copyfile (src, dst) + except OSError: + error (_ ('Could not overwrite file %s') % dst) + raise CompileError(self.basename()) + + def additional_files_to_consider (self, base, full): + return [] + def additional_files_required (self, base, full): + result = []; + if self.ext != '.ly': + result.append (base + self.ext) + return result def all_output_files (self, output_dir, output_dir_files): @@ -694,6 +697,7 @@ printing diff against existing file." % filename) map (consider_file, [base + '.tex', base + '.eps', + base + '.pdf', base + '.texidoc', base + '.doctitle', base + '-systems.texi', @@ -722,6 +726,8 @@ printing diff against existing file." % filename) if 'ddump-signature' in self.global_options.process_cmd: consider_file (systemfile + '.signature') + map (consider_file, self.additional_files_to_consider (base, full)) + map (require_file, self.additional_files_required (base, full)) return (result, missing) @@ -732,8 +738,7 @@ printing diff against existing file." % filename) def filter_pipe (self, input, cmd): """Pass input through cmd, and return the result.""" - if self.global_options.verbose: - progress (_ ("Opening filter `%s'\n") % cmd) + debug (_ ("Running through filter `%s'") % cmd, True) # TODO: Use Popen once we resolve the problem with msvcrt in Windows: (stdin, stdout, stderr) = os.popen3 (cmd) @@ -746,21 +751,20 @@ printing diff against existing file." % filename) status = 0 output = stdout.read () status = stdout.close () - error = stderr.read () + err = stderr.read () if not status: status = 0 signal = 0x0f & status - if status or (not output and error): + if status or (not output and err): exit_status = status >> 8 ly.error (_ ("`%s' failed (%d)") % (cmd, exit_status)) ly.error (_ ("The error log is as follows:")) - ly.stderr_write (error) + ly.stderr_write (err) ly.stderr_write (stderr.read ()) exit (status) - if self.global_options.verbose: - progress ('\n') + debug ('\n') return output @@ -808,7 +812,9 @@ re_end_verbatim = re.compile (r'\s+%.*?end verbatim.*$', re.M) class LilypondFileSnippet (LilypondSnippet): def __init__ (self, type, match, formatter, line_number, global_options): LilypondSnippet.__init__ (self, type, match, formatter, line_number, global_options) - self.contents = file (BookBase.find_file (self.substring ('filename'), global_options.include_path)).read () + self.filename = self.substring ('filename') + self.contents = file (BookBase.find_file (self.filename, + global_options.include_path, global_options.original_dir)).read () def get_snippet_code (self): return self.contents; @@ -824,18 +830,106 @@ class LilypondFileSnippet (LilypondSnippet): return s def ly (self): - name = self.substring ('filename') + name = self.filename return ('\\sourcefilename \"%s\"\n\\sourcefileline 0\n%s' % (name, self.contents)) def final_basename (self): if self.global_options.use_source_file_names: - base = os.path.splitext (os.path.basename (self.substring ('filename')))[0] + base = os.path.splitext (os.path.basename (self.filename))[0] return base else: return self.basename () +class MusicXMLFileSnippet (LilypondFileSnippet): + def __init__ (self, type, match, formatter, line_number, global_options): + LilypondFileSnippet.__init__ (self, type, match, formatter, line_number, global_options) + self.compressed = False + self.converted_ly = None + self.ext = os.path.splitext (os.path.basename (self.filename))[1] + self.musicxml_options_dict = { + 'verbose': '--verbose', + 'lxml': '--lxml', + 'compressed': '--compressed', + 'relative': '--relative', + 'absolute': '--absolute', + 'no-articulation-directions': '--no-articulation-directions', + 'no-rest-positions': '--no-rest-positions', + 'no-page-layout': '--no-page-layout', + 'no-beaming': '--no-beaming', + 'language': '--language', + } + + def snippet_options (self): + return self.musicxml_options_dict.keys () + + def convert_from_musicxml (self): + name = self.filename + xml2ly_option_list = [] + for (key, value) in self.option_dict.items (): + cmd_key = self.musicxml_options_dict.get (key, None) + if cmd_key == None: + continue + if value == None: + xml2ly_option_list.append (cmd_key) + else: + xml2ly_option_list.append (cmd_key + '=' + value) + if ('.mxl' in name) and ('--compressed' not in xml2ly_option_list): + xml2ly_option_list.append ('--compressed') + self.compressed = True + opts = " ".join (xml2ly_option_list) + progress (_ ("Converting MusicXML file `%s'...\n") % self.filename) + + ly_code = self.filter_pipe (self.contents, 'musicxml2ly %s --out=- - ' % opts) + return ly_code + + def ly (self): + if self.converted_ly == None: + self.converted_ly = self.convert_from_musicxml () + name = self.filename + return ('\\sourcefilename \"%s\"\n\\sourcefileline 0\n%s' + % (name, self.converted_ly)) + + def write_ly (self): + base = self.basename () + path = os.path.join (self.global_options.lily_output_dir, base) + directory = os.path.split(path)[0] + if not os.path.isdir (directory): + os.makedirs (directory) + + # First write the XML to a file (so we can link it!) + if self.compressed: + xmlfilename = path + '.mxl' + else: + xmlfilename = path + '.xml' + if os.path.exists (xmlfilename): + diff_against_existing = self.filter_pipe (self.contents, 'diff -u %s - ' % xmlfilename) + if diff_against_existing: + warning (_ ("%s: duplicate filename but different contents of original file,\n\ +printing diff against existing file.") % xmlfilename) + ly.stderr_write (diff_against_existing) + else: + out = file (xmlfilename, 'w') + out.write (self.contents) + out.close () + + # also write the converted lilypond + filename = path + '.ly' + if os.path.exists (filename): + diff_against_existing = self.filter_pipe (self.full_ly (), 'diff -u %s -' % filename) + if diff_against_existing: + warning (_ ("%s: duplicate filename but different contents of converted lilypond file,\n\ +printing diff against existing file.") % filename) + ly.stderr_write (diff_against_existing) + else: + out = file (filename, 'w') + out.write (self.full_ly ()) + out.close () + file (path + '.txt', 'w').write ('image of music') + + + class LilyPondVersionString (Snippet): """A string that does not require extra memory.""" def __init__ (self, type, match, formatter, line_number, global_options): @@ -851,4 +945,5 @@ snippet_type_to_class = { 'lilypond': LilypondSnippet, 'include': IncludeSnippet, 'lilypondversion': LilyPondVersionString, + 'musicxml_file': MusicXMLFileSnippet, } diff --git a/python/book_texinfo.py b/python/book_texinfo.py index 03f723754a..226ec8eb6f 100644 --- a/python/book_texinfo.py +++ b/python/book_texinfo.py @@ -1,8 +1,14 @@ # -*- coding: utf-8 -*- import re +import tempfile +import subprocess +import sys import book_base as BookBase from book_snippets import * +import lilylib as ly +global _;_=ly._ + # Recognize special sequences in the input. # @@ -58,6 +64,15 @@ TexInfo_snippet_res = { .*? @end\s+ignore))\s''', + 'musicxml_file': r'''(?mx) + ^(?P + @musicxmlfile\s*( + \[ + \s*(?P.*?)\s* + \])?\s*{ + (?P\S+) + })''', + 'singleline_comment': r'''(?mx) ^.* (?P @@ -99,11 +114,11 @@ TexInfo_output = { OUTPUTIMAGE: r'''@noindent @ifinfo -@image{%(info_image_path)s,,,%(alt)s,%(ext)s} +@image{%(info_image_path)s,,,%(alt)s,} @end ifinfo @html

- + + @end html @file{%(filename)s} @html @@ -125,10 +140,6 @@ TexInfo_output = { QUOTE: r'''@quotation %(str)s@end quotation -''', - - NOQUOTE: r'''@format -%(str)s@end format ''', VERBATIM: r'''@exampleindent 0 @@ -149,6 +160,118 @@ texinfo_line_widths = { } +### +# Retrieve dimensions from texinfo +TEXINFO_INSPECTION_DOCUMENT = r''' +\input texinfo +@setfilename Texinfo_width_test +@settitle Texinfo width test +%(preamble)s + +@message{Global: textwidth=@the@hsize,exampleindent=@the@lispnarrowing} + +@bye +''' + +def get_texinfo_width_indent (source, global_options): + #TODO: Check for end of header command "@c %**end of header" + # only use material before that comment ? + + # extract all relevant papter settings from the input: + pagesize = None + texinfo_paper_size_regexp = r'''(@(?:afourpaper|afourwide|afourlatex|afivepaper|smallbook|letterpaper))'''; + m = re.search (texinfo_paper_size_regexp, source); + if m: + pagesize = m.group (1) + + relevant_settings_regexp = r'''(@(?:fonttextsize|pagesizes|cropmarks|exampleindent).*)\n'''; + m = re.findall (relevant_settings_regexp, source); + if pagesize: + m.insert (0, pagesize); + # all relevant options to insert into the test document: + preamble = "\n".join (m); + + texinfo_document = TEXINFO_INSPECTION_DOCUMENT % {'preamble': preamble} + + (handle, tmpfile) = tempfile.mkstemp('.texi') + outfile = os.path.splitext (tmpfile)[0] + '.pdf' + + tmp_handle = os.fdopen (handle,'w') + tmp_handle.write (texinfo_document) + tmp_handle.close () + + # Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is + # used to detect relative/absolute paths, so the absolute path is not + # detected as such and this command fails: + progress (_ ("Running texi2pdf on file %s to detect default page settings.\n") % tmpfile); + + # execute the command and pipe stdout to the parameter_string: + cmd = '%s -c -o %s %s' % (global_options.texinfo_program, outfile, tmpfile); + ly.debug_output ("Executing: %s\n" % cmd); + run_env = os.environ.copy() + run_env['LC_ALL'] = 'C' + + ### unknown why this is necessary + universal_newlines = True + if sys.platform == 'mingw32': + universal_newlines = False + ### use os.system to avoid weird sleep() problems on + ### GUB's python 2.4.2 on mingw + # make file to write to + output_dir = tempfile.mkdtemp() + output_filename = os.path.join(output_dir, 'output.txt') + # call command + cmd += " > %s" % output_filename + returncode = os.system(cmd) + parameter_string = open(output_filename).read() + if returncode != 0: + warning (_ ("Unable to auto-detect default settings:\n")) + # clean up + os.remove(output_filename) + os.rmdir(output_dir) + else: + proc = subprocess.Popen (cmd, + env=run_env, + universal_newlines=universal_newlines, + shell=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + (parameter_string, error_string) = proc.communicate () + if proc.returncode != 0: + warning (_ ("Unable to auto-detect default settings:\n%s") + % error_string) + os.unlink (tmpfile) + if os.path.exists(outfile): + os.unlink (outfile) + + # Find textwidth and exampleindent and format it as \\mm or \\in + # Use defaults if they cannot be extracted + textwidth = 0 + m = re.search ('textwidth=([0-9.]+)pt', parameter_string) + if m: + val = float (m.group (1))/72.27 + if pagesize and pagesize.startswith ("@afour"): + textwidth = "%g\\mm" % round (val*25.4, 3); + else: + textwidth = "%g\\in" % round (val, 3); + else: + textwidth = texinfo_line_widths.get(pagesize, "6\\in") + + exampleindent = 0 + m = re.search ('exampleindent=([0-9.]+)pt', parameter_string) + if m: + val = float (m.group (1))/72.27 + if pagesize and pagesize.startswith ("@afour"): + exampleindent = "%g\\mm" % round (val*25.4, 3); + else: + exampleindent = "%g\\in" % round (val, 3); + else: + exampleindent = "0.4\\in" + + retval = {LINE_WIDTH: textwidth, EXAMPLEINDENT: exampleindent} + ly.debug_output ("Auto-detected values are: %s\n" % retval); + return retval; + + texinfo_lang_re = re.compile ('(?m)^@documentlanguage (.*?)( |$)') @@ -176,19 +299,10 @@ class BookTexinfoOutputFormat (BookBase.BookOutputFormat): else: return '' - def get_line_width (self, source): - for regex in texinfo_line_widths: - # FIXME: @layout is usually not in - # chunk #0: - # - # \input texinfo @c -*-texinfo-*- - # - # Bluntly search first K items of - # source. - # s = chunks[0].replacement_text () - if re.search (regex, source[:1024]): - return texinfo_line_widths[regex] - return None + def init_default_snippet_options (self, source): + texinfo_defaults = get_texinfo_width_indent (source, self.global_options); + self.default_snippet_options.update (texinfo_defaults) + BookBase.BookOutputFormat.init_default_snippet_options (self, source) def adjust_snippet_command (self, cmd): if '--formats' not in cmd: @@ -199,32 +313,30 @@ class BookTexinfoOutputFormat (BookBase.BookOutputFormat): def output_info (self, basename, snippet): str = '' rep = snippet.get_replacements (); + rep['base'] = basename + rep['filename'] = os.path.basename (snippet.filename) + rep['ext'] = snippet.ext for image in snippet.get_images (): rep1 = copy.copy (rep) - (rep1['base'], rep1['ext']) = os.path.splitext (image) + rep1['base'] = os.path.splitext (image)[0] rep1['image'] = image - - # URG, makeinfo implicitly prepends dot to extension. - # Specifying no extension is most robust. - rep1['ext'] = '' rep1['alt'] = snippet.option_dict[ALT] rep1['info_image_path'] = os.path.join (self.global_options.info_images_dir, rep1['base']) str += self.output[OUTPUTIMAGE] % rep1 - rep['base'] = basename str += self.output[OUTPUT] % rep return str def snippet_output (self, basename, snippet): - str = self.output_print_filename (basename, snippet) + str = '' base = basename if DOCTITLE in snippet.option_dict: doctitle = base + '.doctitle' translated_doctitle = doctitle + self.document_language if os.path.exists (translated_doctitle): - str += '@lydoctitle %s\n\n' % open (translated_doctitle).read () + str += '\n@lydoctitle %s\n\n' % open (translated_doctitle).read () elif os.path.exists (doctitle): - str += '@lydoctitle %s\n\n' % open (doctitle).read () + str += '\n@lydoctitle %s\n\n' % open (doctitle).read () if TEXIDOC in snippet.option_dict: texidoc = base + '.texidoc' translated_texidoc = texidoc + self.document_language @@ -232,6 +344,7 @@ class BookTexinfoOutputFormat (BookBase.BookOutputFormat): str += '@include %(translated_texidoc)s\n\n' % vars () elif os.path.exists (texidoc): str += '@include %(texidoc)s\n\n' % vars () + str += self.output_print_filename (basename, snippet) substr = '' rep = snippet.get_replacements (); @@ -242,17 +355,10 @@ class BookTexinfoOutputFormat (BookBase.BookOutputFormat): rep['verb'] = snippet.verb_ly () substr = self.output[VERBATIM] % rep substr += self.output_info (basename, snippet) - if LILYQUOTE in snippet.option_dict: + if QUOTE in snippet.option_dict: substr = self.output[QUOTE] % {'str': substr} str += substr -# str += ('@ifinfo\n' + self.output_info () + '\n@end ifinfo\n') -# str += ('@tex\n' + self.output_latex () + '\n@end tex\n') -# str += ('@html\n' + self.output_html () + '\n@end html\n') - - if QUOTE in snippet.option_dict: - str = self.output[QUOTE] % {'str': str} - # need par after image str += '\n' diff --git a/python/convertrules.py b/python/convertrules.py index 25506ca916..78512310c3 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -9,9 +9,9 @@ import lilylib _ = lilylib._ -NOT_SMART = "\n" + _ ("Not smart enough to convert %s") -UPDATE_MANUALLY = _ ("Please refer to the manual for details, and update manually.") -FROM_TO = _ ( "%s has been replaced by %s") +NOT_SMART = "\n" + _ ("Not smart enough to convert %s.") + "\n" +UPDATE_MANUALLY = _ ("Please refer to the manual for details, and update manually.") + "\n" +FROM_TO = _ ("%s has been replaced by %s") + "\n" class FatalConversionError: @@ -49,28 +49,23 @@ 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 (NOT_SMART % "\\multi") 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 (NOT_SMART % "\\octave") + stderr_write (UPDATE_MANUALLY) + # 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 +94,7 @@ 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 (NOT_SMART % _ ("new \\header format")) return str @@ -128,10 +121,8 @@ 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 (NOT_SMART % _ ("\\translator syntax")) + # raise FatalConversionError () return str @@ -184,10 +175,8 @@ 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 (NOT_SMART % "\\repeat") + # raise FatalConversionError () return str @@ -266,65 +255,61 @@ 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 (NOT_SMART % "\\repetitions") + # 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 (NOT_SMART % _ ("new \\notenames format")) 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 +318,7 @@ 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 (NOT_SMART % _ ("new tremolo format")) return str @@ -354,9 +337,7 @@ 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 (NOT_SMART % '\\keysignature') return str @@ -369,8 +350,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 @@ -392,7 +373,7 @@ def conv (str): return str -@rule ((1, 3, 93), _ ('change property definiton case (eg. onevoice -> oneVoice)')) +@rule ((1, 3, 93), _ ('change property definition case (eg. onevoice -> oneVoice)')) def conv (str): # Ugh, but meaning of \stemup changed too # maybe we should do \stemup -> \stemUp\slurUp\tieUp ? @@ -453,9 +434,7 @@ 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 (NOT_SMART % _ ("new \\textscript markup text")) str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str) return str @@ -530,9 +509,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 +520,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 +634,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 +703,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 (NOT_SMART % "automaticMelismata") + stderr_write (_ ("automaticMelismata is turned on by default since 1.5.67.")) + stderr_write ('\n') + raise FatalConversionError () return str @@ -749,11 +728,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 +756,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 +804,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 +843,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 +860,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 +881,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 +912,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 +942,11 @@ 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 (NOT_SMART % "GraceContext") + stderr_write (FROM_TO \ + % ("GraceContext", "#(add-to-grace-init .. )")) + stderr_write (UPDATE_MANUALLY) + raise FatalConversionError () str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str) return str @@ -979,42 +955,39 @@ 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 (NOT_SMART % _ ("cluster syntax")) + stderr_write (UPDATE_MANUALLY) - 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 +997,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 +1025,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 +1118,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 +1131,16 @@ def sub_chords (str): # <>-[ 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 +1158,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 +1208,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 +1259,10 @@ 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 (NOT_SMART % "font-style") + stderr_write (UPDATE_MANUALLY) - raise FatalConversionError () + raise FatalConversionError () str = re.sub (r'-\\markup', r'@\\markup', str) str = re.sub (r'-\\', r'\\', str) @@ -1308,12 +1278,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 +1295,31 @@ 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 (NOT_SMART % "context-spec-music") + stderr_write (UPDATE_MANUALLY) - 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 +1350,19 @@ 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 (NOT_SMART % "ly:get-font") + 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) + 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 (NOT_SMART % "\\pitch") + stderr_write (_ ("Use Scheme code to construct arbitrary note events.")) + stderr_write ('\n') - raise FatalConversionError () + raise FatalConversionError () return str @@ -1408,73 +1370,67 @@ 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 ) 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 (NOT_SMART % "pitches") + 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 (NOT_SMART % "dash-length") + stderr_write (FROM_TO % ("dash-length", "dash-fraction")) + stderr_write (UPDATE_MANUALLY) + 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 +1449,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 +1481,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 +1519,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 +1557,15 @@ 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 (NOT_SMART % "\\partcombine") + stderr_write (UPDATE_MANUALLY) + 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 +1582,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 +1593,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 +1639,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 +1655,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 +1681,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[a-zA-Z]+\s*\.\s*)?autoBeamSettings""" - +r"""\s*#(?P[^=]+)\s*=\s*#\(ly:make-moment\s+(?P\d+)\s+(?P\d)\s*\)""", - sub_abs, str) + +r"""\s*#(?P[^=]+)\s*=\s*#\(ly:make-moment\s+(?P\d+)\s+(?P\d)\s*\)""", + sub_abs, str) return str @@ -1774,12 +1727,9 @@ 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 (NOT_SMART % "ly:paper-get-variable") + stderr_write (_ ('Use %s\n') % '(ly:paper-lookup (ly:grob-paper ))') + raise FatalConversionError () str = re.sub (r'\\defaultAccidentals', "#(set-accidental-style 'default)", str) str = re.sub (r'\\voiceAccidentals', "#(set-accidental-style 'voice)", str) @@ -1808,31 +1758,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 +1811,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 +1833,22 @@ def conv (str): @rule ((2, 1, 33), 'breakAlignOrder -> break-align-orders.') def conv (str): str = re.sub (r"(\\set\s+)?(?P(Score\.)?)breakAlignOrder\s*=\s*#'(?P[^\)]+)", - r"\n\\override \gBreakAlignment #'break-align-orders = " - + "#(make-vector 3 '\g)", str) + r"\n\\override \gBreakAlignment #'break-align-orders = " + + "#(make-vector 3 '\g)", 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 +1865,20 @@ 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 (NOT_SMART % "textheight") + stderr_write (UPDATE_MANUALLY) + 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 +1902,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 +1918,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 +1948,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 +1977,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 +1992,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 ) @@ -2060,17 +2007,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 +2036,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 +2076,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 +2084,27 @@ 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 (NOT_SMART % ("\\encoding: %s" % encoding)) + 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 +2114,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 +2134,13 @@ 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 (NOT_SMART % "ly:stencil-set-extent!") + stderr_write (_ ('Use %s\n') % '(set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))') + 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 (NOT_SMART % "ly:stencil-align-to!") + stderr_write (_ ('Use %s\n') % '(set! VAR (ly:stencil-aligned-to VAR AXIS DIR))') + raise FatalConversionError () return str @@ -2213,16 +2154,13 @@ 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 (NOT_SMART % _ ("auto beam settings")) + 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) + raise FatalConversionError () return str @@ -2251,8 +2189,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 +2212,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 +2244,71 @@ 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')) + stderr_write ('\n') 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 +2317,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 +2332,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 +2348,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 +2416,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 +2453,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 +2587,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 = \n" "\t\\override TextSpanner #'bound-details #'left #'text = \n") return str @@ -2681,7 +2620,7 @@ def conv (str): str = re.sub (r"(\\once)?\s*\\override\s*([a-zA-Z]+\s*[.]\s*)?TextSpanner\s*#'edge-height\s*=\s*#'\(\s*([0-9.-]+)\s+[.]\s+([0-9.-]+)\s*\)", sub_edge_height, str) if re.search (r"#'forced-distance", str): - stderr_write (NOT_SMART % ("VerticalAlignment #'forced-distance.\n")) + stderr_write (NOT_SMART % "VerticalAlignment #'forced-distance") stderr_write (_ ("Use the `alignment-offsets' sub-property of\n")) stderr_write (_ ("NonMusicalPaperColumn #'line-break-system-details\n")) stderr_write (_ ("to set fixed distances between staves.\n")) @@ -2702,9 +2641,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")) + 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 +2684,9 @@ 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") + stderr_write (_ ("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 @@ -2764,9 +2704,8 @@ def conv (str): 'orientation'] for prop in fret_props: if re.search (prop, str): - stderr_write (NOT_SMART % - prop + " in fret-diagram properties. Use fret-diagram-details.") - stderr_write ('\n') + stderr_write (NOT_SMART % (_ ("%s in fret-diagram properties") % prop)) + stderr_write (_ ('Use %s\n') % "fret-diagram-details") return str @rule ((2, 11, 51), "\\octave -> \\octaveCheck, \\arpeggioUp -> \\arpeggioArrowUp,\n\ @@ -2809,9 +2748,10 @@ 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")) + stderr_write (_ ("Axis and direction now come before markups:\n")) + stderr_write (_ ("\\put-adjacent axis dir markup markup.")) + stderr_write ("\n") return str @rule ((2, 11, 57), "\\center-align -> \\center-column, \\hcenter -> \\center-align") @@ -2841,15 +2781,13 @@ InnerStaffGroup -> StaffGroup, InnerChoirStaff -> ChoirStaff") def conv (str): str = re.sub (r'systemSeparatorMarkup', r'system-separator-markup', str) if re.search (r'\\InnerStaffGroup', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("re-definition of InnerStaffGroup.\n")) - stderr_write (FROM_TO % ("InnerStaffGroup", "StaffGroup.\n")) + stderr_write (NOT_SMART % _("re-definition of InnerStaffGroup")) + stderr_write (FROM_TO % ("InnerStaffGroup", "StaffGroup")) stderr_write (UPDATE_MANUALLY) raise FatalConversionError () if re.search (r'\\InnerChoirStaff', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("re-definition of InnerChoirStaff.\n")) - stderr_write (FROM_TO % ("InnerChoirStaff", "ChoirStaff.\n")) + stderr_write (NOT_SMART % _("re-definition of InnerChoirStaff")) + stderr_write (FROM_TO % ("InnerChoirStaff", "ChoirStaff")) stderr_write (UPDATE_MANUALLY) raise FatalConversionError () else: @@ -2862,15 +2800,13 @@ def conv (str): _ ("bump version for release")) def conv(str): if re.search(r'\\addChordShape', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("stringTuning must be added to \ -addChordShape call.\n")) + stderr_write (NOT_SMART % "addChordShape") + stderr_write (_ ("stringTuning must be added to addChordShape call.\n")) stderr_write (UPDATE_MANUALLY) raise FatalConversionError () if re.search (r'\\chord-shape', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("stringTuning must be added to \ -chord-shape call.\n")) + stderr_write (NOT_SMART % "chord-shape") + stderr_write (_ ("stringTuning must be added to chord-shape call.\n")) stderr_write (UPDATE_MANUALLY) raise FatalConversionError () return str @@ -2879,8 +2815,8 @@ chord-shape call.\n")) _ ("Remove oldaddlyrics")) def conv(str): if re.search(r'\\oldaddlyrics', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("oldaddlyrics is no longer supported. \n \ + stderr_write (NOT_SMART % "oldaddlyrics") + stderr_write (_ ("oldaddlyrics is no longer supported. \n \ Use addlyrics or lyrsicsto instead.\n")) stderr_write (UPDATE_MANUALLY) raise FatalConversionError () @@ -2890,8 +2826,8 @@ def conv(str): MIDI 47: orchestral strings -> orchestral harp")) def conv(str): if re.search(r'\set Staff.keySignature', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("The alist for Staff.keySignature is no \ + stderr_write (NOT_SMART % "Staff.keySignature") + stderr_write (_ ("The alist for Staff.keySignature is no \ longer in reversed order.\n")) str = str.replace('"orchestral strings"', '"orchestral harp"') return str @@ -2902,14 +2838,14 @@ ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n\ Dash parameters for slurs and ties are now in dash-definition")) def conv(str): if re.search(r'\\bar\s*"\."', str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("\\bar \".\" now produces a thick barline.\n")) + stderr_write (NOT_SMART % "\\bar \".\"") + stderr_write (_ ("\\bar \".\" now produces a thick barline.\n")) stderr_write (UPDATE_MANUALLY) str = re.sub (r'ly:hairpin::after-line-breaking', r'ly:spanner::kill-zero-spanned-time', str) if re.search("(Slur|Tie)\w+#\'dash-fraction", str) \ or re.search("(Slur|Tie)\w+#\'dash-period", str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("Dash parameters for slurs and ties are now in \'dash-details.\n")) + stderr_write (NOT_SMART % "dash-fraction, dash-period") + stderr_write (_ ("Dash parameters for slurs and ties are now in \'dash-details.\n")) stderr_write (UPDATE_MANUALLY) return str @@ -2927,26 +2863,27 @@ Explicit dynamics context definition from `Piano centered dynamics'\n\ template replaced by new `Dynamics' context.")) def conv(str): if re.search("override-auto-beam-setting", str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("override-auto-beam-setting.\n\ + stderr_write (NOT_SMART % "override-auto-beam-setting") + stderr_write (_ (" \ Autobeam settings are now overriden with \\overrideBeamSettings.\n")) stderr_write (UPDATE_MANUALLY) if re.search("revert-auto-beam-setting", str): - stderr_write ("\n") - stderr_write (NOT_SMART % _("override-auto-beam-setting.\n\ + stderr_write (NOT_SMART % "override-auto-beam-setting") + stderr_write (_ (" \ Autobeam settings are now reverted with \\revertBeamSettings.\n")) stderr_write (UPDATE_MANUALLY) str = re.sub(r"\\set\s+beatGrouping", r"\\setBeatGrouping", str) if re.search(r"\w+\s*.\s*beatGrouping", str): - stderr_write (NOT_SMART % _("beatGrouping. \n\ + stderr_write (NOT_SMART % "beatGrouping") + stderr_write (_ (" \ beatGrouping with a specified context must now be accomplished with\n\ \\overrideBeamSettings.\n")) stderr_write (UPDATE_MANUALLY) if re.search(r'alignment-offsets', str): - stderr_write("\n") - stderr_write(NOT_SMART % _("alignment-offsets has been changed to alignment-distances: \ + stderr_write (NOT_SMART % "alignment-offsets") + stderr_write (_ ("alignment-offsets has been changed to alignment-distances: \ you must now specify the distances between staves rather than the offset of staves.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (UPDATE_MANUALLY) str = re.sub ('ly:(system-start-text::print|note-head::brew-ez-stencil|ambitus::print)', '\\1', str) str = re.sub ('(\\bBeam\\s+#\')(?=thickness\\b)', '\\1beam-', str) @@ -2985,9 +2922,9 @@ def conv(str): str) if re.search(r"VerticalAxisGroup\s*#\s*'minimum-Y-extent", str): - stderr_write("\n") - stderr_write(NOT_SMART % _("minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "minimum-Y-extent") + stderr_write (_ ("Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n")) + stderr_write (UPDATE_MANUALLY) return str @@ -3013,12 +2950,18 @@ def conv (str): str = re.sub (r'\\(cresc|dim|endcresc|enddim)\b', r'\\deprecated\1', str) return str +@rule ((2, 13, 27), + ("interval-translate -> coord-translate")) +def conv (str): + str = re.sub ('interval-translate', 'coord-translate', str) + return str + @rule ((2, 13, 29), _ ("Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n\ \"accordion.accEtcbase\" -> \"accordion.etcbass\"")) def conv(str): def sub_acc (m): - d = { + d = { 'Dot': 'dot', 'Discant': 'discant', 'Bayanbase': 'bayanbass', @@ -3026,30 +2969,30 @@ 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")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "\\overrideBeamSettings") + stderr_write (_ ("Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n")) + stderr_write (UPDATE_MANUALLY) if re.search(r'revertBeamSettings', str): - stderr_write("\n") - stderr_write(NOT_SMART % _("\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "\\revertBeamSettings") + stderr_write (_ ("Use \\set beamExceptions or \\revertTimeSignatureSettings.\n")) + stderr_write (UPDATE_MANUALLY) if re.search(r'beamSettings', str): - stderr_write("\n") - stderr_write(NOT_SMART % _("beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "beamSettings") + stderr_write (_ ("Use baseMoment, beatStructure, and beamExceptions.\n")) + stderr_write (UPDATE_MANUALLY) if re.search(r'beatLength', str): - stderr_write("\n") - stderr_write(NOT_SMART % _("beatLength. Use baseMoment and beatStructure.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "beatLength") + stderr_write (_ ("Use baseMoment and beatStructure.\n")) + stderr_write (UPDATE_MANUALLY) if re.search(r'setBeatGrouping', str): - stderr_write("\n") - stderr_write(NOT_SMART % _("setbeatGrouping. Use baseMoment and beatStructure.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "setbeatGrouping") + stderr_write (_ ("Use baseMoment and beatStructure.\n")) + stderr_write (UPDATE_MANUALLY) return str @rule ((2, 13, 31), @@ -3057,9 +3000,9 @@ def conv(str): Deprecate negative dash-period for hidden lines: use #'style = #'none instead.")) def conv(str): if re.search(r'woodwind-diagram', str): - stderr_write("\n") - stderr_write(NOT_SMART % _("woodwind-diagrams. Move size, thickness, and graphic to properties. Argument should be just the key list.\n")) - stderr_write(UPDATE_MANUALLY) + stderr_write (NOT_SMART % "woodwind-diagrams") + stderr_write (_ ("Move size, thickness, and graphic to properties. Argument should be just the key list.\n")) + stderr_write (UPDATE_MANUALLY) str = re.sub (r"dash-period\s+=\s*#\s*-[0-9.]+", r"style = #'none", str); @@ -3103,15 +3046,13 @@ def conv(str): _ ("Remove \\paper variables head-separation and foot-separation.")) def conv(str): if re.search (r'head-separation', str): - stderr_write("\n") - stderr_write(NOT_SMART % ("head-separation.\n")) - stderr_write(_ ("Adjust settings for top-system-spacing instead.\n")) + stderr_write (NOT_SMART % "head-separation") + stderr_write (_ ("Adjust settings for top-system-spacing instead.\n")) stderr_write (UPDATE_MANUALLY) if re.search (r'foot-separation', str): - stderr_write("\n") - stderr_write(NOT_SMART % ("foot-separation.\n")) - stderr_write(_ ("Adjust settings for last-bottom-spacing instead.\n")) - stderr_write(UPDATE_MANUALLY); + stderr_write (NOT_SMART % "foot-separation") + stderr_write (_ ("Adjust settings for last-bottom-spacing instead.\n")) + stderr_write (UPDATE_MANUALLY); return str @@ -3122,11 +3063,10 @@ 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 (NOT_SMART % "HarmonicParenthesesItem") + 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,41 +3083,45 @@ 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) str = re.sub (r"ukulele-(tenor|baritone)-tuning", r"\1-ukulele-tuning", str) if re.search (r"[^-]page-top-space", str): - stderr_write (NOT_SMART % "page-top-space. " + UPDATE_MANUALLY) + stderr_write (NOT_SMART % "page-top-space") + stderr_write (UPDATE_MANUALLY) if re.search (r"[^-]between-system-(space|padding)", str): - stderr_write (NOT_SMART % "between-system-space, -padding. " + UPDATE_MANUALLY) + stderr_write (NOT_SMART % "between-system-space, -padding") + stderr_write (UPDATE_MANUALLY) if re.search (r"[^-](before|between|after)-title-space", str): - stderr_write (NOT_SMART % "-title-space. " + UPDATE_MANUALLY) + stderr_write (NOT_SMART % "before-, between-, after-title-space") + stderr_write (UPDATE_MANUALLY) if re.search (r"\\name\s", str): - stderr_write("\n" + _("Vertical spacing changes might affect user-defined contexts. ") + UPDATE_MANUALLY) + stderr_write ("\n" + _("Vertical spacing changes might affect user-defined contexts.") + "\n") + stderr_write (UPDATE_MANUALLY) return str @@ -3196,10 +3140,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 (NOT_SMART % "woodwind-diagrams") + stderr_write (_ ("Clarinet fingering changed to reflect actual anatomy of instrument.\n")) + stderr_write (UPDATE_MANUALLY) return str @rule ((2, 14, 0), @@ -3207,6 +3151,240 @@ def conv(str): def conv (str): return str +@rule ((2, 15, 7), + _ ("Handling of non-automatic footnotes.")) +def conv(str): + if re.search (r'\\footnote', str): + stderr_write (NOT_SMART % "\\footnote") + stderr_write (_ ("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 + +@rule ((2, 15, 9), + _ ("Change in internal property for MultiMeasureRest")) +def conv (str): + if re.search (r'use-breve-rest',str): + stderr_write (NOT_SMART % "use-breve-rest") + stderr_write (_ ("This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n")) + stderr_write (UPDATE_MANUALLY) + return str + +@rule ((2, 15, 10), + _ ("Creation of a Flag grob and moving of certain Stem properties to this grob")) +def conv (str): + str = re.sub (r"Stem\s+#'flag-style", r"Flag #'style", str) + str = re.sub (r"Stem\s+#'stroke-style", r"Flag #'stroke-style", str) + str = re.sub (r"Stem\s+#'flag", r"Flag #'print", str) + str = re.sub (r"(\s+(?:\\once\s*)?)\\override\s+Stem\s+#'transparent\s*=\s*##t", r"\g<1>\\override Stem #'transparent = ##t\g<1>\\override Flag #'transparent = ##t", str) + str = re.sub (r"(\s+(?:\\once\s*)?)\\revert\s*Stem\s+#'transparent", r"\g<1>\\revert Stem #'transparent\g<1>\\revert Flag #'transparent", str) + str = re.sub (r"(\s+(?:\\once\s*)?)\\override\s+Stem\s+#'stencil\s*=\s*##f", r"\g<1>\\override Stem #'stencil = ##f\g<1>\\override Flag #'stencil = ##f", str) + str = re.sub (r"(\s+(?:\\once\s*)?)\\revert\s*Stem\s+#'stencil", r"\g<1>\\revert Stem #'stencil\g<1>\\revert Flag #'stencil", str) + return str + +@rule ((2, 15, 16), r"\makeStringTuning, \contextStringTuning -> \stringTuning") +def conv (str): + str = re.sub (r"(\s+)\\contextStringTuning(\s+)#'([-a-zA-Z]+)(\s+<[^<>]+>)", + r"""\g<1>#(define \g<3> #{ \\stringTuning\g<4> #})\g<1>\\set stringTunings = #\g<3>""", + str) + str = re.sub (r""" +\\makeStringTuning(\s+)#'([-a-zA-Z]+)""", + r""" +"\g<2>" = \\stringTuning""", str) + str = re.sub (r"\\makeStringTuning(\s+)#'([-a-zA-Z]+)(\s+<[^<>]+>)", + r"#(define \g<2> #{ \\stringTuning\g<3> #})", str) + return str + +@rule ((2, 15, 17), "\\markuplines -> \\markuplist\n\ +Change Beam broken slope syntax.") +def conv (str): + str = re.sub (r""" +\\markuplines( +)([^ ].*) + \1([^ ])""", r""" +\\markuplist\g<1>\g<2> + \g<1>\g<3>""", str) + str = re.sub (r"\\markuplines", r"\\markuplist", str) + str = re.sub (r"@funindex markuplines", r"@funindex markuplist", str) + if re.search (r'consistent-broken-slope', str): + stderr_write (NOT_SMART % "consistent-broken-slope") + stderr_write (_ ("consistent-broken-slope is now handled through the positions callback.\n")) + stderr_write (_ ("input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n")) + stderr_write (UPDATE_MANUALLY) + return str + +def paren_matcher (n): + # poor man's matched paren scanning, gives up + # after n+1 levels. Matches any string with balanced + # parens inside; add the outer parens yourself if needed. + # Nongreedy. + return r"[^()]*?(?:\("*n+r"[^()]*?"+r"\)[^()]*?)*?"*n + return + +def undollar_scm (m): + return re.sub (r"\$(.?)", r"\1", m.group (0)) + +def undollar_embedded (m): + str = re.sub (r"#\$", "#", m.group (1)) + # poor man's matched paren scanning after #, gives up + # after 25 levels. + str = re.sub ("#`?\("+paren_matcher (25)+"\)", undollar_scm, str) + return m.string[m.start (0):m.start (1)] + str + m.string[m.end (1):m.end (0)] + +def strip_export (str): + return re.sub (r"\(ly:export\s+(" + paren_matcher (25) + r")\)", + r"\1", str) + +def export_puller (m): + if not re.search (r"ly:export\s+", m.group (0)): + return m.group (0) + return "$" + strip_export (m.string[m.start (0)+1:m.end (0)]) + +def ugly_function_rewriter (m): + return m.string[m.start(0):m.start(1)] + strip_export (m.group (1)) + m.string[m.end(1):m.end(0)] + +should_really_be_music_function = "(?:\ +set-time-signature|empty-music|add-grace-property|\ +remove-grace-property|set-accidental-style)" + +def record_ugly (m): + global should_really_be_music_function + if not re.match (should_really_be_music_function, m.group (1)) \ + and re.search (r"ly:export\s+", m.group (2)): + should_really_be_music_function = \ + should_really_be_music_function[:-1] + "|" + m.group (1) + ")" + return m.group (0) + +@rule ((2, 15, 18), "#$ -> #, ly:export -> $") +def conv (str): + str = re.sub (r"(?s)#@?\{(.*?)#@?\}", undollar_embedded, str) + str = re.sub (r"#\(define(?:-public)?\s+\(([-a-zA-Z]+)" + + r"\b[^()]*?\)(" + paren_matcher (25) + + r")\)", record_ugly, str) + str = re.sub (r"\(define(?:-public)?\s+\(" + should_really_be_music_function + + r"\b[^()]*\)(" + paren_matcher (25) + + r")\)", ugly_function_rewriter, str) + str = re.sub (r"#(?=\(" + should_really_be_music_function + ")", "$", str) + str = re.sub (r"#\(markup\*(?=\s)", r"$(markup", str) + str = re.sub ("#\("+paren_matcher (25)+"\)", export_puller, str) + if re.search (r"\(ly:export\s+", str): + stderr_write (NOT_SMART % "ly:export") + return str + +@rule ((2, 15, 19), r"$(set-time-signature ...) -> \time") +def conv (str): + str = re.sub (r"\$\(set-time-signature\s+([0-9]+)\s+([0-9]+)\s*\)", + r"\\time \1/\2", str) + str = re.sub (r"\$\(set-time-signature\s+([0-9]+)\s+([0-9]+)\s+(" + + paren_matcher (5) + r")\)", r"\\time #\3 \1/\2", str) + if re.search (r"\(set-time-signature\s+", str): + stderr_write (NOT_SMART % "set-time-signature") + return str + +@rule ((2, 15, 20), r"$(set-accidental-style ...) -> \accidentalStyle") +def conv (str): + str = re.sub (r"\$\(set-accidental-style\s+'([-a-z]+)\)", + r'\\accidentalStyle "\1"', str) + str = re.sub (r"\$\(set-accidental-style\s+'([-a-z]+)\s+'([-A-Za-z]+)\s*\)", + r'''\\accidentalStyle #'\2 "\1"''', str) + str = re.sub (r"(@funindex\s+)set-accidental-style", + r"\1\\accidentalStyle", str) + return str + +def brace_matcher (n): + # poor man's matched brace scanning, gives up + # after n+1 levels. Matches any string with balanced + # braces inside; add the outer braces yourself if needed. + # Nongreedy. + return r"[^{}]*?(?:{"*n+r"[^{}]*?"+r"}[^{}]*?)*?"*n + +matchstring = r'"(?:[^"\\]|\\.)*"' +matcharg = (r"\s+(?:[$#]['`]?\s*(?:[a-zA-Z]\S*|" + matchstring + r"|\(" + + paren_matcher(20) + r"\))|" + matchstring + r"|\\[a-z_A-Z]+)") +matchmarkup = (r'(?:\\markup\s*(?:{' + brace_matcher (20) +r'}|' + + matchstring + r'|(?:\\[a-z_A-Z][a-z_A-Z-]*(?:' + matcharg + + r')*?\s*)*(?:' + matchstring + "|{" + brace_matcher (20) + + "}))|" + matchstring + ")") + +@rule((2, 15, 25), r"\(auto)?Footnote(Grob)? -> \footnote") +def conv (str): + # The following replacement includes the final markup argument in + # the match in order to better avoid touching the equally named + # markup function. The other functions have unique names, so + # there is no point in including their last, possibly complex + # argument in the match. + str = re.sub (r"\\footnote(" + matcharg + (r")(\s*" + matchmarkup)*2 + ")", + r"\\footnote\2\1\3", str) + str = re.sub (r"\\footnoteGrob"+("(" + matcharg + ")")*2 + r"(\s*" + matchmarkup + ")", + r"\\footnote\3\2\1", str) + str = re.sub (r"\\autoFootnoteGrob" + ("(" + matcharg + ")")*2, + r"\\footnote\2\1", str) + str = re.sub (r"\\autoFootnote", + r"\\footnote", str) + return str + +@rule((2, 15, 32), r"tempoWholesPerMinute -> \tempo") +def conv (str): + def sub_tempo (m): + num = int (m.group (1)) + den = int (m.group (2)) + + if (den & (den - 1)) != 0 : + return m.group (0) + + # Don't try dotted forms if they result in less than 30 bpm. + # It is not actually relevant to get this right since this + # only occurs in non-printing situations + if den >= 16 and (num % 7) == 0 and num >= 210 : + return r"\tempo %d.. = %d" % (den/4, num/7) + + if den >= 8 and (num % 3) == 0 and num >= 90 : + return r"\tempo %d. = %d" % (den/2, num/3) + + return r"\tempo %d = %d" % (den, num) + + str = re.sub (r"\\context\s*@?\{\s*\\Score\s+tempoWholesPerMinute\s*=\s*" + + r"#\(ly:make-moment\s+([0-9]+)\s+([0-9]+)\)\s*@?\}", + sub_tempo, str) + return str + +@rule((2, 15, 39), r"\footnote ... -> \footnote ... \default") +def conv (str): + def not_first (s): + def match_fun (m): + if m.group (1): + return m.group (0) + return m.expand (s) + return match_fun + str = re.sub ("(" + matchmarkup + ")|" + + r"(\\footnote(?:\s*" + + matchmarkup + ")?" + matcharg + "(?:" + matcharg + + ")?\s+" + matchmarkup + ")", + not_first (r"\2 \\default"), str) + return str + +@rule ((2, 15, 40), r"Remove beamWholeMeasure") +def conv (str): + if re.search (r"\bbeamWholeMeasure\b", str): + stderr_write (NOT_SMART % "beamWholeMeasure") + stderr_write (_ ("beamExceptions controls whole-measure beaming.") + "\n") + return str + +@rule ((2, 15, 42), r"\set stringTuning -> \set Staff.stringTuning") +def conv (str): + str = re.sub (r"(\\set\s+)stringTuning", r"\1Staff.stringTuning", str) + return str + +wordsyntax = r"[a-zA-Z\200-\377](?:[-_]?[a-zA-Z\200-\377])*" + +@rule ((2, 15, 43), r'"custom-tuning" = -> custom-tuning =') +def conv (str): + str = re.sub ('\n"(' + wordsyntax + r')"(\s*=\s*\\stringTuning)', "\n\\1\\2", str) + return str + +@rule ((2, 16, 0), + _ ("bump version for release")) +def conv (str): + return str + # Guidelines to write rules (please keep this at the end of this file) # diff --git a/python/fontextract.py b/python/fontextract.py index ee9505f37f..1677b558de 100644 --- a/python/fontextract.py +++ b/python/fontextract.py @@ -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) diff --git a/python/langdefs.py b/python/langdefs.py index 983fe3bb30..d3d6c07813 100644 --- a/python/langdefs.py +++ b/python/langdefs.py @@ -73,8 +73,11 @@ zh = LanguageDef ('zh', '中文', enable_ly_identifier_l10n=False) # (please run 'make doc-clean' before doing that): #fr.enabled = False -# LANGUAGES = (site, cs, de, es, fr, hu, it, ja, nl, zh) LANGUAGES = (site, cs, de, es, fr, hu, it, ja, nl, zh) +WEB_LANGUAGES = (site, cs, de, es, fr, hu, it, ja, nl, zh) + +if os.getenv("MAKEWEB") == '1': + LANGUAGES=WEB_LANGUAGES if __name__ == '__main__': print ' '.join ([l.code for l in LANGUAGES if l.enabled and l.code != 'en']) diff --git a/python/lilylib.py b/python/lilylib.py index 6fb96bbbf5..afebefb7a8 100644 --- a/python/lilylib.py +++ b/python/lilylib.py @@ -1,6 +1,6 @@ # This file is part of LilyPond, the GNU music typesetter. # -# Copyright (C) 1998--2011 Han-Wen Nienhuys +# Copyright (C) 1998--2012 Han-Wen Nienhuys # Jan Nieuwenhuizen # # LilyPond is free software: you can redistribute it and/or modify @@ -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 @@ -77,29 +78,83 @@ if at_re.match (program_version): else: program_version = "unknown" + +# Logging framework: We have the following output functions: +# error +# warning +# progress +# debug + +loglevels = {"NONE":0, "ERROR":1, "WARN":2, "BASIC":3, "PROGRESS":4, "INFO":5, "DEBUG":6} + +loglevel = loglevels["PROGRESS"] + +def set_loglevel (l): + global loglevel + newlevel = loglevels.get (l, -1) + if newlevel > 0: + debug_output (_ ("Setting loglevel to %s") % l) + loglevel = newlevel + else: + error (_ ("Unknown or invalid loglevel '%s'") % l) + + +def handle_loglevel_option (option, opt_str, value, parser, *args): + if value: + set_loglevel (value); + elif args: + set_loglevel (args[0]); + +def is_loglevel (l): + global loglevel + return loglevel >= loglevels[l]; + +def is_verbose (): + return is_loglevel ("DEBUG") + def stderr_write (s): encoded_write (sys.stderr, s) -def warning (s): - stderr_write (program_name + ": " + _ ("warning: %s") % s + '\n') +def print_logmessage (level, s, fullmessage = True, newline = True): + if (is_loglevel (level)): + if fullmessage: + stderr_write (program_name + ": " + s + '\n') + elif newline: + stderr_write (s + '\n') + else: + stderr_write (s) def error (s): - stderr_write (program_name + ": " + _ ("error: %s") % s + '\n') + print_logmessage ("ERROR", _ ("error: %s") % s); + +def warning (s): + print_logmessage ("WARN", _ ("warning: %s") % s); + +def basic_progress (s): + print_logmessage ("BASIC", s); + +def progress (s, fullmessage = False, newline = True): + print_logmessage ("PROGRESS", s, fullmessage, newline); + +def debug_output (s, fullmessage = False, newline = True): + print_logmessage ("DEBUG", s, fullmessage, newline); -progress = stderr_write def require_python_version (): if sys.hexversion < 0x02040000: - stderr_write ("Python 2.4 or newer is required to run this program.\n\ + error ("Python 2.4 or newer is required to run this program.\n\ Please upgrade Python from http://python.org/download/, and if you use MacOS X,\n\ please read 'Setup for MacOS X' in Application Usage.") os.system ("open http://python.org/download/") sys.exit (2) -# Modified version of the commands.mkarg(x), which always uses -# double quotes (since Windows can't handle the single quotes: +# A modified version of the commands.mkarg(x) that always uses +# double quotes (since Windows can't handle the single quotes) +# and escapes the characters \, $, ", and ` for unix shells. def mkarg(x): + if os.name == 'nt': + return ' "%s"' % x s = ' "' for c in x: if c in '\\$"`': @@ -118,6 +173,7 @@ def subprocess_system (cmd, ignore_error=False, progress_p=True, be_verbose=False, + redirect_output=False, log_file=None): import subprocess @@ -125,46 +181,58 @@ 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: + stderr_filename = log_file + '.log' + 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(0.01) + retval = proc.returncode + 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 by lilylib" + else: + if not show_progress: + print log[0] + print log[1] + sys.exit (1) return abs (retval) @@ -172,28 +240,29 @@ def ossystem_system (cmd, ignore_error=False, progress_p=True, be_verbose=False, + redirect_output=False, log_file=None): 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 +276,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 +284,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 +328,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) diff --git a/python/midi.c b/python/midi.c index 187268b78e..4049b49cb0 100644 --- a/python/midi.c +++ b/python/midi.c @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys Jan Nieuwenhuizen @@ -356,7 +356,7 @@ static PyObject * pymidi_parse_track (PyObject *self, PyObject *args) { unsigned char *track, *track_end; - unsigned long track_size; + int track_size; int clocks_max; debug_print ("%s", "\n"); @@ -398,9 +398,11 @@ midi_parse (unsigned char **midi,unsigned char *midi_end, int clocks_max) division = get_number (midi, *midi + 2, 2) * 4; + /* if (division < 0) - /* return midi_error (cannot handle non-metrical time"); */ + return midi_error (cannot handle non-metrical time"); ; + */ *midi += header_len - 6; pymidi = PyList_New (0); diff --git a/python/musicexp.py b/python/musicexp.py index 68318678de..ea2525d866 100644 --- a/python/musicexp.py +++ b/python/musicexp.py @@ -13,16 +13,13 @@ from rational import Rational previous_pitch = None relative_pitches = False -def warning (str): - ly.stderr_write ((_ ("warning: %s") % str) + "\n") - def escape_instrument_string (input_string): retstring = string.replace (input_string, "\"", "\\\"") if re.match ('.*[\r\n]+.*', retstring): rx = re.compile (r'[\n\r]+') strings = rx.split (retstring) - retstring = "\\markup { \\column { " + retstring = "\\markup { \\center-column { " for s in strings: retstring += "\\line {\"" + s + "\"} " retstring += "} }" @@ -201,6 +198,17 @@ class Duration: return base * dot_fact * self.factor +# implement the midi command line option '-m' and '--midi' +# if TRUE add midi-block to .ly file (see below) +def set_create_midi (option): + global midi_option + midi_option = option + +def get_create_midi (): + try: + return midi_option + except: + return False # Implement the different note names for the various languages def pitch_generic (pitch, notenames, accidentals): @@ -213,12 +221,12 @@ def pitch_generic (pitch, notenames, accidentals): # Handle remaining fraction to pitch.alteration (for microtones) if (halftones != pitch.alteration): if None in accidentals[1:3]: - warning (_ ("Language does not support microtones contained in the piece")) + ly.warning (_ ("Language does not support microtones contained in the piece")) else: try: str += {-0.5: accidentals[1], 0.5: accidentals[2]}[pitch.alteration-halftones] except KeyError: - warning (_ ("Language does not support microtones contained in the piece")) + ly.warning (_ ("Language does not support microtones contained in the piece")) return str def pitch_general (pitch): @@ -480,7 +488,7 @@ class TimeScaledMusic (MusicWrapper): func ("\\once \\override TupletBracket #'stencil = ##f") func.newline () elif self.display_bracket == "curved": - warning (_ ("Tuplet brackets of curved shape are not correctly implemented")) + ly.warning (_ ("Tuplet brackets of curved shape are not correctly implemented")) func ("\\once \\override TupletBracket #'stencil = #ly:slur::print") func.newline () @@ -666,7 +674,7 @@ class RepeatedMusic: self.music = SequentialMusic () self.music.elements = music else: - warning (_ ("unable to set the music %(music)s for the repeat %(repeat)s") % \ + ly.warning (_ ("unable to set the music %(music)s for the repeat %(repeat)s") % \ {'music':music, 'repeat':self}) def add_ending (self, music): self.endings.append (music) @@ -675,7 +683,7 @@ class RepeatedMusic: if self.music: self.music.print_ly (printer) else: - warning (_ ("encountered repeat without body")) + ly.warning (_ ("encountered repeat without body")) printer.dump ('{}') if self.endings: printer.dump ('\\alternative {') @@ -845,7 +853,7 @@ class ChordEvent (NestedMusic): # don't print newlines after the { and } braces self.grace_elements.print_ly (printer, False) elif self.grace_elements: # no self.elements! - warning (_ ("Grace note with no following music: %s") % self.grace_elements) + ly.warning (_ ("Grace note with no following music: %s") % self.grace_elements) if self.grace_type: printer ('\\%s' % self.grace_type) else: @@ -1007,7 +1015,7 @@ class OctaveShiftEvent (SpanEvent): try: value = {8: 1, 15: 2}[self.size] except KeyError: - warning (_ ("Invalid octave shift size found: %s. Using no shift.") % self.size) + ly.warning (_ ("Invalid octave shift size found: %s. Using no shift.") % self.size) value = 0 # negative values go up! value *= -1*self.span_type @@ -1465,7 +1473,7 @@ class KeySignatureChange (Music): try: accidental = alter_dict[a[1]] except KeyError: - warning (_ ("Unable to convert alteration %s to a lilypond expression") % a[1]) + ly.warning (_ ("Unable to convert alteration %s to a lilypond expression") % a[1]) return '' if len (a) == 2: return "( %s . %s )" % (a[0], accidental) @@ -1785,7 +1793,7 @@ class StaffGroup: if self.spanbar == "no": printer.dump ("\\override SpanBar #'transparent = ##t") brack = {"brace": "SystemStartBrace", - "none": "f", + "none": "SystemStartBar", "line": "SystemStartSquare"}.get (self.symbol, None) if brack: printer.dump ("systemStartDelimiter = #'%s" % brack) @@ -1799,7 +1807,18 @@ class StaffGroup: printer.dump (m) printer.dump ("}") + def print_ly_chords (self,printer): + try: + for [staff_id, voices] in self.part_information: + for [v, lyrics, figuredbass, chordnames] in voices: + if chordnames: + printer ('\context ChordNames = "%s" \\%s' % (chordnames, chordnames)) + printer.newline () + except TypeError: + return + def print_ly (self, printer): + self.print_ly_chords (printer) if self.stafftype: printer.dump ("\\new %s" % self.stafftype) self.print_ly_overrides (printer) @@ -1840,12 +1859,6 @@ class Staff (StaffGroup): sub_staff_type = self.stafftype for [staff_id, voices] in self.part_information: - # Chord names need to come before the staff itself! - for [v, lyrics, figuredbass, chordnames] in voices: - if chordnames: - printer ('\context ChordNames = "%s" \\%s' % (chordnames, chordnames)) - - # now comes the real staff definition: if staff_id: printer ('\\context %s = "%s" << ' % (sub_staff_type, staff_id)) else: @@ -1922,6 +1935,7 @@ class Score: self.contents.set_part_information (part_id, staves_info) def print_ly (self, printer): + self.create_midi = get_create_midi () printer.dump ("\\score {"); printer.newline () if self.contents: diff --git a/python/musicxml.py b/python/musicxml.py index be3c61ca8f..6eb3b45aba 100644 --- a/python/musicxml.py +++ b/python/musicxml.py @@ -9,13 +9,10 @@ import lilylib as ly _ = ly._ -def error (str): - ly.stderr_write ((_ ("error: %s") % str) + "\n") - def escape_ly_output_string (input_string): return_string = input_string - needs_quotes = not re.match (u"^[a-zA-ZäöüÜÄÖß,\.!:ñ]*$", return_string); + needs_quotes = not re.match (u"^[a-zA-ZäöüÜÄÖßñ]*$", return_string); if needs_quotes: return_string = "\"" + string.replace (return_string, "\"", "\\\"") + "\"" return return_string @@ -48,53 +45,53 @@ 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') + ly.warning (msg) p = self while p: - sys.stderr.write (' In: <%s %s>\n' % (p._name, ' '.join (['%s=%s' % item for item in p._attribute_dict.items ()]))) + ly.progress (' In: <%s %s>\n' % (p._name, ' '.join (['%s=%s' % item for item in p._attribute_dict.items ()]))) p = p.get_parent () - + def dump (self, indent = ''): - sys.stderr.write ('%s<%s%s>' % (indent, self._name, ''.join ([' %s=%s' % item for item in self._attribute_dict.items ()]))) + ly.debug_output ('%s<%s%s>' % (indent, self._name, ''.join ([' %s=%s' % item for item in self._attribute_dict.items ()]))) non_text_children = [c for c in self._children if not isinstance (c, Hash_text)] if non_text_children: - sys.stderr.write ('\n') + ly.debug_output ('\n') for c in self._children: c.dump (indent + " ") if non_text_children: - sys.stderr.write (indent) - sys.stderr.write ('\n' % self._name) + ly.debug_output (indent) + ly.debug_output ('\n' % self._name) + - def get_typed_children (self, klass): if not klass: return [] @@ -102,36 +99,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: + ly.error (self.__dict__) + 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 +140,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): @@ -154,7 +151,7 @@ class Work (Xml_node): return wt.get_text () else: return '' - + def get_work_title (self): return self.get_work_information ('work-title') def get_work_number (self): @@ -170,6 +167,14 @@ class Identification (Xml_node): ret.append (r.get_text ()) return string.join (ret, "\n") + # get contents of the source-element (usually used for publishing information). (These contents are saved in a custom variable named "source" in the header of the .ly file.) + def get_source (self): + source = self.get_named_children ('source') + ret = [] + for r in source: + ret.append (r.get_text ()) + return string.join (ret, "\n") + def get_creator (self, type): creators = self.get_named_children ('creator') # return the first creator tag that has the particular type @@ -198,7 +203,7 @@ class Identification (Xml_node): return v v = self.get_creator ('poet') return v - + def get_encoding_information (self, type): enc = self.get_named_children ('encoding') if enc: @@ -207,7 +212,7 @@ class Identification (Xml_node): return children[0].get_text () else: return None - + def get_encoding_software (self): return self.get_encoding_information ('software') def get_encoding_date (self): @@ -216,7 +221,7 @@ class Identification (Xml_node): return self.get_encoding_information ('encoder') def get_encoding_description (self): return self.get_encoding_information ('encoding-description') - + def get_encoding_software_list (self): enc = self.get_named_children ('encoding') software = [] @@ -232,92 +237,90 @@ class Identification (Xml_node): misc_fields = m.get_named_children ('miscellaneous-field') for mf in misc_fields: if hasattr (mf, 'name') and mf.name == 'description': - return mf.get_text () + return mf.get_text () return None - - 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 class Hash_text (Music_xml_node): def dump (self, indent = ''): - sys.stderr.write ('%s' % string.strip (self._data)) + ly.debug_output ('%s' % string.strip (self._data)) 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: return 0 @@ -340,7 +343,7 @@ class Attributes (Measure_element): # Simple (maybe compound) time signature of the form (beat, ..., type) return self.single_time_sig_to_fraction (sig) return 0 - + def get_time_signature (self): "Return time sig as a (beat, beat-type) tuple. For compound signatures," "return either (beat, beat,..., beat-type) or ((beat,..., type), " @@ -355,7 +358,7 @@ class Attributes (Measure_element): if mxl.get_maybe_exist_named_child ('senza-misura'): # TODO: Handle pieces without a time signature! - error (_ ("Senza-misura time signatures are not yet supported!")) + ly.warning (_ ("Senza-misura time signatures are not yet supported!")) return (4, 4) else: signature = [] @@ -472,12 +475,12 @@ 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 - + def get_duration_info (self): log = self.get_duration_log () if log != None: @@ -496,7 +499,7 @@ class Part_list (Music_xml_node): def __init__ (self): Music_xml_node.__init__ (self) self._id_instrument_name_dict = {} - + def generate_id_instrument_dict (self): ## not empty to make sure this happens only once. @@ -517,14 +520,14 @@ class Part_list (Music_xml_node): if instrument_name: return instrument_name else: - ly.stderr_write (_ ("Unable to find instrument for ID=%s\n") % id) + ly.warning (_ ("Unable to find instrument for ID=%s\n") % id) return "Grand Piano" class Part_group (Music_xml_node): pass class Score_part (Music_xml_node): pass - + class Measure (Music_xml_node): def __init__ (self): Music_xml_node.__init__ (self) @@ -532,7 +535,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 +557,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 +583,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 +603,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): @@ -609,18 +612,18 @@ class Part (Music_xml_node): n = n._parent 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 +633,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 +668,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 ())) - - - 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 + + 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_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): @@ -711,7 +714,7 @@ class Part (Music_xml_node): n._prev_measure_position = last_measure_position # After-graces are placed at the same position as the previous note if isinstance(n, Note) and n.is_after_grace (): - # TODO: We should do the same for grace notes at the end of + # TODO: We should do the same for grace notes at the end of # a measure with no following note!!! n._when = last_moment n._measure_position = last_measure_position @@ -762,6 +765,8 @@ class Part (Music_xml_node): attributes._dict = attr._dict.copy () attributes._original_tag = attr # copy only the relevant children over for the given staff + if staff == "None": + staff = "1" for c in attr._children: if (not (hasattr (c, 'number') and (c.number != staff)) and not (isinstance (c, Hash_text))): @@ -772,13 +777,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 = {} @@ -788,6 +793,8 @@ class Part (Music_xml_node): if voice_id: vid = voice_id.get_text () elif isinstance (n, Note): + # TODO: Check whether we shall really use "None" here, or + # rather use "1" as the default? vid = "None" staff_id = n.get_maybe_exist_named_child (u'staff') @@ -795,6 +802,10 @@ class Part (Music_xml_node): if staff_id: sid = staff_id.get_text () else: + # TODO: Check whether we shall really use "None" here, or + # rather use "1" as the default? + # If this is changed, need to change the corresponding + # check in extract_attributes_for_staff, too. sid = "None" if vid and not voices.has_key (vid): voices[vid] = Musicxml_voice() @@ -813,31 +824,31 @@ 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: id = "None" - # We don't need backup/forward any more, since we have already - # assigned the correct onset times. + # 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: @@ -863,13 +874,13 @@ class Part (Music_xml_node): continue if isinstance (n, Harmony) or isinstance (n, FiguredBass): - # store the harmony or figured bass element until we encounter + # store the harmony or figured bass element until we encounter # the next note and assign it only to that one voice. assign_to_next_note.append (n) continue if hasattr (n, 'print-object') and getattr (n, 'print-object') == "no": - #Skip this note. + #Skip this note. pass else: for i in assign_to_next_note: @@ -883,7 +894,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 +906,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 +940,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): @@ -976,7 +987,7 @@ class Tuplet (Music_xml_spanner): def get_tuplet_note_count (self, tuplet_note): if tuplet_note: tuplet_nr = tuplet_note.get_maybe_exist_named_child ('tuplet-number') - if tuplet_nr: + if tuplet_nr: return int (tuplet_nr.get_text ()) return None def get_normal_nr (self): @@ -992,11 +1003,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" @@ -1005,7 +1016,7 @@ class Beam (Music_xml_spanner): class Wavy_line (Music_xml_spanner): pass - + class Pedal (Music_xml_spanner): pass @@ -1159,63 +1170,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,11 +1245,11 @@ 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): name = node.tag @@ -1247,15 +1258,15 @@ def lxml_demarshal_node (node): return None klass = get_class (name) py_node = klass() - + py_node._original = node py_node._name = name py_node._data = node.text py_node._children = [lxml_demarshal_node (cn) for cn in node.getchildren()] 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 +1282,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 @@ -1288,7 +1299,7 @@ def minidom_demarshal_node (node): if __name__ == '__main__': import lxml.etree - + tree = lxml.etree.parse ('beethoven.xml') mxl_tree = lxml_demarshal_node (tree.getroot ()) ks = class_dict.keys () diff --git a/python/rational.py b/python/rational.py index 5a9ee629b3..f2d8360fb8 100644 --- a/python/rational.py +++ b/python/rational.py @@ -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: diff --git a/scm/auto-beam.scm b/scm/auto-beam.scm index 82b5917d1c..b77022f2fc 100644 --- a/scm/auto-beam.scm +++ b/scm/auto-beam.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -16,9 +16,9 @@ ;;;; along with LilyPond. If not, see . ;; Determine whether an auto beam should be extended to the right -;; of the current stem. We start anywhere except on the last note -;; of a beat. We end according to the follwing rules, in order -;; of decreasing priority: +;; of the current stem. We start anywhere, except mid-measure in +;; 3/4 time. We end according to the follwing rules, in order of +;; decreasing priority: ;; ;; 1. end ;; 2. end @@ -79,6 +79,7 @@ '()) beamingfraction test-beam)) (non-grace (ly:make-moment (ly:moment-main-numerator measure-pos) @@ -106,15 +107,13 @@ exception-grouping 0 grouping-moment))) (if (= dir START) - ;; Start rules - (or (not (equal? time-signature-fraction '(3 . 4))) ;; start anywhere if not 3/4 - (= (ly:moment-main-numerator pos) 0) ;; start at beginning of measure - (not (null? exception-grouping)) ;; don't use special rules if exception - (beat-end? pos beat-endings) ;; are we at start of beat? - (and (not (equal? test-beam base-moment)) ;; is beat split? - (not (beat-end? (ly:moment-add pos test-beam) - beat-endings)))) ;; will this note end the beat - ;; End rules + ;; Start rules -- #t if beam is allowed to start + (or beam-half-measure ;; Start anywhere, but option for mid-measure + (not (equal? (ly:moment-add pos pos) measure-length)) + (not (= 3 (car time-signature-fraction))) ;; in triple meter + (not (= (cdr type) ;; when the beamed note is 1/6 of a measure + (* 2 (cdr time-signature-fraction))))) + ;; End rules -- #t if beam is required to end (or (= (ly:moment-main-numerator pos) 0) ;; end at measure beginning (if (null? exception-grouping) (beat-end? pos beat-endings) ;; no exception, so check beat ending diff --git a/scm/autochange.scm b/scm/autochange.scm index 54f5e96250..14252e4b1d 100644 --- a/scm/autochange.scm +++ b/scm/autochange.scm @@ -11,7 +11,7 @@ (evs (map car (cdar event-list))) (now (car now-tun)) (notes (filter (lambda (x) - (equal? (ly:event-property x 'class) 'note-event)) + (ly:in-event-class? x 'note-event)) evs)) (pitch (if (pair? notes) (ly:event-property (car notes) 'pitch) diff --git a/scm/backend-library.scm b/scm/backend-library.scm index 706bccb2de..0734a1a834 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -24,15 +24,11 @@ (ice-9 optargs)) (define-public (ly:system command) - (if (ly:get-option 'verbose) - (begin - (ly:message (_ "Invoking `~a'...") (string-join command))) - (ly:progress "\n")) + (ly:debug (_ "Invoking `~a'...") (string-join command)) (let ((status (apply ly:spawn command))) (if (> status 0) (begin - (ly:message (_ "`~a' failed (~a)") command status) - (ly:progress "\n") + (ly:warning (_ "`~a' failed (~a)\n") command status) ;; hmmm. what's the best failure option? (throw 'ly-file-failed))))) @@ -91,8 +87,7 @@ "-c.setpdfwrite" (string-append "-f" name))))) - (ly:message (_ "Converting to `~a'...") pdf-name) - (ly:progress "\n") + (ly:message (_ "Converting to `~a'...\n") pdf-name) (ly:system cmd))) (define-public (postscript->png resolution paper-width paper-height name) @@ -117,7 +112,7 @@ (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) diff --git a/scm/bar-line.scm b/scm/bar-line.scm new file mode 100644 index 0000000000..e000178837 --- /dev/null +++ b/scm/bar-line.scm @@ -0,0 +1,650 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2009--2012 Marc Hohl +;;;; +;;;; 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 . + +;; helper functions + +(define (get-staff-symbol grob) + (if (grob::has-interface grob 'staff-symbol-interface) + grob + (ly:grob-object grob 'staff-symbol))) + +(define (layout-blot-diameter grob) + (let* ((layout (ly:grob-layout grob)) + (blot (ly:output-def-lookup layout 'blot-diameter))) + + blot)) + +(define (layout-line-thickness grob) + (let* ((layout (ly:grob-layout grob)) + (line-thickness (ly:output-def-lookup layout 'line-thickness))) + + line-thickness)) + +(define (staff-symbol-line-count grob) + (let ((line-count 0)) + + (if (ly:grob? grob) + (let ((line-pos (ly:grob-property grob 'line-positions '()))) + + (set! line-count (if (pair? line-pos) + (length line-pos) + (ly:grob-property grob 'line-count 0))))) + + line-count)) + +(define (staff-symbol-line-span grob) + (let ((line-pos (ly:grob-property grob 'line-positions '())) + (iv (cons 0.0 0.0))) + + (if (pair? line-pos) + (map (lambda (x) + (set! iv (cons (min (car iv) x) + (max (cdr iv) x)))) + line-pos) + (let ((line-count (ly:grob-property grob 'line-count 0))) + + (set! iv (cons (- 1 line-count) + (- line-count 1))))) + iv)) + +(define (staff-symbol-line-positions grob) + (let ((line-pos (ly:grob-property grob 'line-positions '()))) + + (if (not (pair? line-pos)) + (let* ((line-count (ly:grob-property grob 'line-count 0)) + (height (- line-count 1.0))) + + (set! line-pos (map (lambda (x) + (- height (* x 2))) + (iota line-count))))) + line-pos)) + +;; functions used by external routines + +(define-public (span-bar::notify-grobs-of-my-existence grob) + (let* ((elts (ly:grob-array->list (ly:grob-object grob 'elements))) + (sorted-elts (sort elts ly:grob-vertical (interval-length extent) 0)) + (bar-line::compound-bar-line grob glyph extent #f) + #f))) + +(define-public (bar-line::compound-bar-line grob glyph extent rounded) + (let* ((line-thickness (layout-line-thickness grob)) + (height (interval-length extent)) + (kern (* (ly:grob-property grob 'kern 1) line-thickness)) + (thinkern (* (ly:grob-property grob 'thin-kern 1) line-thickness)) + (hair (* (ly:grob-property grob 'hair-thickness 1) line-thickness)) + (fatline (* (ly:grob-property grob 'thick-thickness 1) line-thickness)) + (thin-stil (make-simple-bar-line grob hair extent rounded)) + (thick-stil (make-simple-bar-line grob fatline extent rounded)) + (colon-stil (make-colon-bar-line grob)) + (glyph (cond + ((not glyph) "") + ((string=? glyph "||:") "|:") + ;; bar-line::compound-bar-line is called only if + ;; height > 0, but just in case ... + ((and (string=? glyph ":|") + (zero? height)) "|.") + ((and (string=? glyph "|:") + (zero? height)) ".|") + (else glyph))) + (stencil (cond + ((string=? glyph "|") thin-stil) + ((string=? glyph ".") thick-stil) + ((string=? glyph "||") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + '() X LEFT thin-stil thinkern) + X RIGHT thin-stil thinkern)) + ((string=? glyph "|.") + (ly:stencil-combine-at-edge + thick-stil X LEFT thin-stil kern)) + ((string=? glyph ".|") + (ly:stencil-combine-at-edge + thick-stil X RIGHT thin-stil kern)) + ((string=? glyph "|:") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + thick-stil X RIGHT thin-stil kern) + X RIGHT colon-stil kern)) + ((string=? glyph ":|") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + thick-stil X LEFT thin-stil kern) + X LEFT colon-stil kern)) + ((string=? glyph ":|:") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + '() X LEFT thick-stil thinkern) + X LEFT colon-stil kern) + X RIGHT thick-stil kern) + X RIGHT colon-stil kern)) + ((string=? glyph ":|.|:") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + thick-stil X LEFT thin-stil kern) + X LEFT colon-stil kern) + X RIGHT thin-stil kern) + X RIGHT colon-stil kern)) + ((string=? glyph ":|.:") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + thick-stil X LEFT thin-stil kern) + X LEFT colon-stil kern) + X RIGHT colon-stil kern)) + ((string=? glyph ".|.") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + '() X LEFT thick-stil thinkern) + X RIGHT thick-stil kern)) + ((string=? glyph "|.|") + (ly:stencil-combine-at-edge + (ly:stencil-combine-at-edge + thick-stil X LEFT thin-stil kern) + X RIGHT thin-stil kern)) + ((string=? glyph ":") + (make-dotted-bar-line grob extent)) + ((or (string=? glyph "|._.|") + (string-contains glyph "S")) + (make-segno-bar-line grob glyph extent rounded)) + ((string=? glyph "'") + (make-tick-bar-line grob (interval-end extent) rounded)) + ((string=? glyph "dashed") + (make-dashed-bar-line grob extent hair)) + ((string=? glyph "kievan") + (make-kievan-bar-line grob)) + (else (make-empty-bar-line grob extent))))) + stencil)) + +(define-public (ly:bar-line::calc-anchor grob) + (let* ((line-thickness (layout-line-thickness grob)) + (kern (* (ly:grob-property grob 'kern 1) line-thickness)) + (glyph (ly:grob-property grob 'glyph-name "")) + (x-extent (ly:grob-extent grob grob X)) + (dot-width (+ (interval-length + (ly:stencil-extent + (ly:font-get-glyph + (ly:grob-default-font grob) + "dots.dot") + X)) + kern)) + (anchor 0.0)) + + (if (> (interval-length x-extent) 0) + (begin + (set! anchor (interval-center x-extent)) + (cond ((string=? glyph "|:") + (set! anchor (+ anchor (/ dot-width -2.0)))) + ((string=? glyph ":|") + (set! anchor (+ anchor (/ dot-width 2.0))))))) + anchor)) + +(define-public (bar-line::calc-glyph-name grob) + (let* ((glyph (ly:grob-property grob 'glyph)) + (dir (ly:item-break-dir grob)) + (result (assoc-get glyph bar-glyph-alist)) + (glyph-name (if (= dir CENTER) + glyph + (if (and result + (string? (index-cell result dir))) + (index-cell result dir) + #f)))) + glyph-name)) + +(define-public (bar-line::calc-break-visibility grob) + (let* ((glyph (ly:grob-property grob 'glyph)) + (result (assoc-get glyph bar-glyph-alist))) + + (if result + (vector (string? (car result)) #t (string? (cdr result))) + all-invisible))) + +;; which span bar belongs to a bar line? + +(define-public span-bar-glyph-alist + '(("|:" . ".|") + ("||:" . ".|") + (":|" . "|.") + (":|.:" . "|.") + (":|:" . ".|.") + (":|.|:" . "|.|") + (":|.|" . "|.") + ("S" . "||" ) + ("S|" . "||") + ("|S" . "||") + ("S|:" . ".|") + (".S|:" . ".|") + (":|S" . "|.") + (":|S." . "|.") + (":|S|:" . "|._.|") + (":|S.|:" . "|._.|") + ("kievan" . "") + ("'" . ""))) + +;; span bar callbacks + +(define-public (ly:span-bar::calc-glyph-name grob) + (let* ((elts (ly:grob-object grob 'elements)) + (pos (1- (ly:grob-array-length elts))) + (glyph '())) + + (while (and (eq? glyph '()) + (> pos -1)) + (begin (set! glyph (ly:grob-property (ly:grob-array-ref elts pos) + 'glyph-name)) + (set! pos (1- pos)))) + (if (eq? glyph '()) + (begin (ly:grob-suicide! grob) + (set! glyph ""))) + (assoc-get glyph span-bar-glyph-alist glyph))) + +(define-public (ly:span-bar::width grob) + (let ((width (cons 0 0))) + + (if (grob::is-live? grob) + (let* ((glyph (ly:grob-property grob 'glyph-name)) + (stencil (bar-line::compound-bar-line grob glyph (cons -1 1) #f))) + + (set! width (ly:stencil-extent stencil X)))) + width)) + +(define-public (ly:span-bar::before-line-breaking grob) + (let ((elts (ly:grob-object grob 'elements))) + + (if (zero? (ly:grob-array-length elts)) + (ly:grob-suicide! grob)))) + +;; The method used in the following routine depends on bar_engraver +;; not being removed from staff context. If bar_engraver is removed, +;; the size of the staff lines is evaluated as 0, which results in a +;; solid span bar line with faulty y coordinate. +;; +;; This routine was originally by Juergen Reuter, but it was a on the +;; bulky side. Rewritten by Han-Wen. Ported from c++ to Scheme by Marc Hohl. +(define-public (ly:span-bar::print grob) + (let* ((elts-array (ly:grob-object grob 'elements)) + (refp (ly:grob-common-refpoint-of-array grob elts-array Y)) + (elts (reverse (sort (ly:grob-array->list elts-array) + ly:grob-vertical (interval-length ext) 0) + (begin + (set! extents (append extents (list ext))) + (set! model-bar bar) + (set! make-span-bars + (append make-span-bars + (list (ly:grob-property bar 'allow-span-bar #t)))))))))) + elts) + ;; if there is no bar grob, we use the callback argument + (if (not model-bar) + (set! model-bar grob)) + ;; we discard the first entry in make-span-bars, because its corresponding + ;; bar line is the uppermost and therefore not connected to another bar line + (if (pair? make-span-bars) + (set! make-span-bars (cdr make-span-bars))) + ;; the span bar reaches from the lower end of the upper staff + ;; to the upper end of the lower staff - when allow-span-bar is #t + (reduce (lambda (curr prev) + (let ((l (cons 0 0)) + (allow-span-bar (car make-span-bars))) + + (set! make-span-bars (cdr make-span-bars)) + (if (> (interval-length prev) 0) + (begin + (set! l (cons (cdr prev) (car curr))) + (if (or (zero? (interval-length l)) + (not allow-span-bar)) + (begin + ;; there is overlap between the bar lines + ;; or 'allow-span-bar = #f. + ;; Do nothing. + ) + (set! span-bar + (ly:stencil-add span-bar + (bar-line::compound-bar-line + model-bar + glyph + l + #f)))))) + curr)) + "" extents) + (set! span-bar (ly:stencil-translate-axis + span-bar + (- (ly:grob-relative-coordinate grob refp Y)) + Y)))) + span-bar)) diff --git a/scm/bezier-tools.scm b/scm/bezier-tools.scm index 76ececb891..04859d03bb 100644 --- a/scm/bezier-tools.scm +++ b/scm/bezier-tools.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010--2011 Carl D. Sorensen +;;;; Copyright (C) 2010--2012 Carl D. Sorensen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/c++.scm b/scm/c++.scm index 74f58f4da3..ded5e9b120 100644 --- a/scm/c++.scm +++ b/scm/c++.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -25,12 +25,22 @@ (and (pair? x) (number? (car x)) (number? (cdr x)))) +(define-public (fraction? x) + (and (pair? x) + (index? (car x)) (index? (cdr x)))) + (define-public (number-or-grob? x) (or (ly:grob? x) (number? x))) (define-public (grob-list? x) (list? x)) +(define-public (number-list? x) + (and (list? x) (every number? x))) + +(define-public (index? x) + (and (integer? x) (>= x 0))) + (define-public (moment-pair? x) (and (pair? x) (ly:moment? (car x)) (ly:moment? (cdr x)))) @@ -61,6 +71,9 @@ (define-public (symbol-or-boolean? x) (or (symbol? x) (boolean? x))) +(define-public (void? x) + (unspecified? x)) + ;; moved list to end of lily.scm: then all type-predicates are ;; defined. (define type-p-name-alist '()) diff --git a/scm/chord-entry.scm b/scm/chord-entry.scm index 06cc077ce4..d8587dcf83 100644 --- a/scm/chord-entry.scm +++ b/scm/chord-entry.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -15,6 +15,9 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . +; for define-safe-public when byte-compiling using Guile V2 +(use-modules (scm safe-utility-defs)) + (define-public (construct-chord-elements root duration modifications) "Build a chord on root using modifiers in @var{modifications}. @code{NoteEvents} have duration @var{duration}. diff --git a/scm/chord-generic-names.scm b/scm/chord-generic-names.scm index a30036d1af..abc39e3518 100644 --- a/scm/chord-generic-names.scm +++ b/scm/chord-generic-names.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2003--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2003--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -53,7 +53,7 @@ FIXME: func, options/context have changed See @file{double-plus-new-chord-name.scm} for the signature of @var{style}. @var{pitches}, @var{bass}, and @var{inversion} are lily pitches. -@var{options} is an alist-alist (see @file{input/test/dpncnt.ly})." +@var{options} is an alist-alist (see @file{input/@/test/@/dpncnt.ly})." (define (step-nr pitch) (let* ((pitch-nr (+ (* 7 (ly:pitch-octave pitch)) diff --git a/scm/chord-ignatzek-names.scm b/scm/chord-ignatzek-names.scm index 696d02fc7a..69381836a7 100644 --- a/scm/chord-ignatzek-names.scm +++ b/scm/chord-ignatzek-names.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -44,63 +44,63 @@ (if (null? ps) #f (if (= (- x 1) (ly:pitch-steps (car ps))) - (car ps) - (get-step x (cdr ps))))) + (car ps) + (get-step x (cdr ps))))) (define (replace-step p ps) "Copy PS, but replace the step of P in PS." (if (null? ps) '() (let* ((t (replace-step p (cdr ps)))) - (if (= (ly:pitch-steps p) (ly:pitch-steps (car ps))) - (cons p t) - (cons (car ps) t))))) + (if (= (ly:pitch-steps p) (ly:pitch-steps (car ps))) + (cons p t) + (cons (car ps) t))))) (define (remove-step x ps) "Copy PS, but leave out the Xth step." (if (null? ps) '() (let* ((t (remove-step x (cdr ps)))) - (if (= (- x 1) (ly:pitch-steps (car ps))) - t - (cons (car ps) t))))) + (if (= (- x 1) (ly:pitch-steps (car ps))) + t + (cons (car ps) t))))) (define-public (ignatzek-chord-names - in-pitches bass inversion - context) + in-pitches bass inversion + context) (define (remove-uptil-step x ps) "Copy PS, but leave out everything below the Xth step." (if (null? ps) - '() - (if (< (ly:pitch-steps (car ps)) (- x 1)) - (remove-uptil-step x (cdr ps)) - ps))) + '() + (if (< (ly:pitch-steps (car ps)) (- x 1)) + (remove-uptil-step x (cdr ps)) + ps))) (define name-root (ly:context-property context 'chordRootNamer)) (define name-note (let ((nn (ly:context-property context 'chordNoteNamer))) (if (eq? nn '()) - ;; replacing the next line with name-root gives guile-error...? -rz + ;; replacing the next line with name-root gives guile-error...? -rz - ;; apparently sequence of defines is equivalent to let, not let* ? -hwn - (ly:context-property context 'chordRootNamer) - ;; name-root - nn))) + ;; apparently sequence of defines is equivalent to let, not let* ? -hwn + (ly:context-property context 'chordRootNamer) + ;; name-root + nn))) (define (is-natural-alteration? p) (= (natural-chord-alteration p) (ly:pitch-alteration p))) (define (ignatzek-format-chord-name - root - prefix-modifiers - main-name - alteration-pitches - addition-pitches - suffix-modifiers - bass-pitch - lowercase-root?) + root + prefix-modifiers + main-name + alteration-pitches + addition-pitches + suffix-modifiers + bass-pitch + lowercase-root?) "Format for the given (lists of) pitches. This is actually more work than classifying the pitches." @@ -109,99 +109,103 @@ work than classifying the pitches." "The main name: don't print anything for natural 5 or 3." (if (or (not (ly:pitch? p)) - (and (is-natural-alteration? p) - (or (= (pitch-step p) 5) - (= (pitch-step p) 3)))) + (and (is-natural-alteration? p) + (or (= (pitch-step p) 5) + (= (pitch-step p) 3)))) '() (list (name-step p)))) (define (glue-word-to-step word x) (make-line-markup (list - (make-simple-markup word) - (name-step x)))) + (make-simple-markup word) + (name-step x)))) (define (suffix-modifier->markup mod) (if (or (= 4 (pitch-step mod)) - (= 2 (pitch-step mod))) - (glue-word-to-step "sus" mod) - (glue-word-to-step "huh" mod))) + (= 2 (pitch-step mod))) + (glue-word-to-step "sus" mod) + (glue-word-to-step "huh" mod))) (define (prefix-modifier->markup mod) (if (and (= 3 (pitch-step mod)) - (= FLAT (ly:pitch-alteration mod))) - (make-simple-markup (if lowercase-root? "" "m")) - (make-simple-markup "huh"))) + (= FLAT (ly:pitch-alteration mod))) + (if lowercase-root? + empty-markup + (ly:context-property context 'minorChordModifier)) + (make-simple-markup "huh"))) (define (filter-alterations alters) "Filter out uninteresting (natural) pitches from ALTERS." (define (altered? p) - (not (is-natural-alteration? p))) + (not (is-natural-alteration? p))) (if (null? alters) '() (let* ((lst (filter altered? alters)) - (lp (last-pair alters))) + (lp (last-pair alters))) - ;; we want the highest also if unaltered - (if (and (not (altered? (car lp))) - (> (pitch-step (car lp)) 5)) - (append lst (last-pair alters)) - lst)))) + ;; we want the highest also if unaltered + (if (and (not (altered? (car lp))) + (> (pitch-step (car lp)) 5)) + (append lst (last-pair alters)) + lst)))) (define (name-step pitch) (define (step-alteration pitch) - (- (ly:pitch-alteration pitch) - (natural-chord-alteration pitch))) + (- (ly:pitch-alteration pitch) + (natural-chord-alteration pitch))) (let* ((num-markup (make-simple-markup - (number->string (pitch-step pitch)))) - (args (list num-markup)) - (total (if (= (ly:pitch-alteration pitch) 0) - (if (= (pitch-step pitch) 7) - (list (ly:context-property context 'majorSevenSymbol)) - args) - (cons (accidental->markup (step-alteration pitch)) args)))) + (number->string (pitch-step pitch)))) + (args (list num-markup)) + (total (if (= (ly:pitch-alteration pitch) 0) + (if (= (pitch-step pitch) 7) + (list (ly:context-property context 'majorSevenSymbol)) + args) + (cons (accidental->markup (step-alteration pitch)) args)))) - (make-line-markup total))) + (make-line-markup total))) (let* ((sep (ly:context-property context 'chordNameSeparator)) - (root-markup (name-root root lowercase-root?)) - (add-markups (map (lambda (x) (glue-word-to-step "add" x)) - addition-pitches)) - (filtered-alterations (filter-alterations alteration-pitches)) - (alterations (map name-step filtered-alterations)) - (suffixes (map suffix-modifier->markup suffix-modifiers)) - (prefixes (map prefix-modifier->markup prefix-modifiers)) - (main-markups (filter-main-name main-name)) - (to-be-raised-stuff (markup-join - (append - main-markups - alterations - suffixes - add-markups) sep)) - (base-stuff (if (ly:pitch? bass-pitch) - (list sep (name-note bass-pitch #f)) - '()))) + (slashsep (ly:context-property context 'slashChordSeparator)) + (root-markup (name-root root lowercase-root?)) + (add-pitch-prefix (ly:context-property context 'additionalPitchPrefix)) + (add-markups (map (lambda (x) (glue-word-to-step add-pitch-prefix x)) + addition-pitches)) + (filtered-alterations (filter-alterations alteration-pitches)) + (alterations (map name-step filtered-alterations)) + (suffixes (map suffix-modifier->markup suffix-modifiers)) + (prefixes (map prefix-modifier->markup prefix-modifiers)) + (main-markups (filter-main-name main-name)) + (to-be-raised-stuff (markup-join + (append + main-markups + alterations + suffixes + add-markups) sep)) + (base-stuff (if (ly:pitch? bass-pitch) + (list slashsep (name-note bass-pitch #f)) + '()))) (set! base-stuff - (append - (list root-markup - (conditional-kern-before (markup-join prefixes sep) - (and (not (null? prefixes)) - (= (ly:pitch-alteration root) NATURAL)) - (ly:context-property context 'chordPrefixSpacer)) - (make-super-markup to-be-raised-stuff)) - base-stuff)) + (append + (list root-markup + (conditional-kern-before (markup-join prefixes sep) + (and (not (null? prefixes)) + (= (ly:pitch-alteration root) NATURAL)) + (ly:context-property context 'chordPrefixSpacer)) + (make-super-markup to-be-raised-stuff)) + base-stuff)) (make-line-markup base-stuff))) (define (ignatzek-format-exception - root - exception-markup - bass-pitch - lowercase-root?) + root + exception-markup + bass-pitch + lowercase-root?) (make-line-markup `( @@ -209,83 +213,83 @@ work than classifying the pitches." ,exception-markup . ,(if (ly:pitch? bass-pitch) - (list (ly:context-property context 'chordNameSeparator) - (name-note bass-pitch #f)) - '())))) + (list (ly:context-property context 'slashChordSeparator) + (name-note bass-pitch #f)) + '())))) (let* ((root (car in-pitches)) - (pitches (map (lambda (x) (ly:pitch-diff x root)) (cdr in-pitches))) - (lowercase-root? - (and (ly:context-property context 'chordNameLowercaseMinor) - (let ((third (get-step 3 pitches))) - (and third (= (ly:pitch-alteration third) FLAT))))) - (exceptions (ly:context-property context 'chordNameExceptions)) - (exception (assoc-get pitches exceptions)) - (prefixes '()) - (suffixes '()) - (add-steps '()) - (main-name #f) - (bass-note - (if (ly:pitch? inversion) - inversion - bass)) - (alterations '())) + (pitches (map (lambda (x) (ly:pitch-diff x root)) (cdr in-pitches))) + (lowercase-root? + (and (ly:context-property context 'chordNameLowercaseMinor) + (let ((third (get-step 3 pitches))) + (and third (= (ly:pitch-alteration third) FLAT))))) + (exceptions (ly:context-property context 'chordNameExceptions)) + (exception (assoc-get pitches exceptions)) + (prefixes '()) + (suffixes '()) + (add-steps '()) + (main-name #f) + (bass-note + (if (ly:pitch? inversion) + inversion + bass)) + (alterations '())) (if exception - (ignatzek-format-exception root exception bass-note lowercase-root?) - - (begin - ;; no exception. - ;; handle sus4 and sus2 suffix: if there is a 3 together with - ;; sus2 or sus4, then we explicitly say add3. - (map - (lambda (j) - (if (get-step j pitches) - (begin - (if (get-step 3 pitches) - (begin - (set! add-steps (cons (get-step 3 pitches) add-steps)) - (set! pitches (remove-step 3 pitches)))) - (set! suffixes (cons (get-step j pitches) suffixes))))) - '(2 4)) - - ;; do minor-3rd modifier. - (if (and (get-step 3 pitches) - (= (ly:pitch-alteration (get-step 3 pitches)) FLAT)) - (set! prefixes (cons (get-step 3 pitches) prefixes))) - - ;; lazy bum. Should write loop. - (cond - ((get-step 7 pitches) (set! main-name (get-step 7 pitches))) - ((get-step 6 pitches) (set! main-name (get-step 6 pitches))) - ((get-step 5 pitches) (set! main-name (get-step 5 pitches))) - ((get-step 4 pitches) (set! main-name (get-step 4 pitches))) - ((get-step 3 pitches) (set! main-name (get-step 3 pitches)))) - - (let* ((3-diff? (lambda (x y) - (= (- (pitch-step y) (pitch-step x)) 2))) - (split (split-at-predicate - 3-diff? (remove-uptil-step 5 pitches)))) - (set! alterations (append alterations (car split))) - (set! add-steps (append add-steps (cdr split))) - (set! alterations (delq main-name alterations)) - (set! add-steps (delq main-name add-steps)) - - - ;; chords with natural (5 7 9 11 13) or leading subsequence. - ;; etc. are named by the top pitch, without any further - ;; alterations. - (if (and - (ly:pitch? main-name) - (= 7 (pitch-step main-name)) - (is-natural-alteration? main-name) - (pair? (remove-uptil-step 7 alterations)) - (reduce (lambda (x y) (and x y)) #t - (map is-natural-alteration? alterations))) - (begin - (set! main-name (last alterations)) - (set! alterations '()))) - - (ignatzek-format-chord-name - root prefixes main-name alterations add-steps suffixes bass-note - lowercase-root?)))))) + (ignatzek-format-exception root exception bass-note lowercase-root?) + + (begin + ;; no exception. + ;; handle sus4 and sus2 suffix: if there is a 3 together with + ;; sus2 or sus4, then we explicitly say add3. + (map + (lambda (j) + (if (get-step j pitches) + (begin + (if (get-step 3 pitches) + (begin + (set! add-steps (cons (get-step 3 pitches) add-steps)) + (set! pitches (remove-step 3 pitches)))) + (set! suffixes (cons (get-step j pitches) suffixes))))) + '(2 4)) + + ;; do minor-3rd modifier. + (if (and (get-step 3 pitches) + (= (ly:pitch-alteration (get-step 3 pitches)) FLAT)) + (set! prefixes (cons (get-step 3 pitches) prefixes))) + + ;; lazy bum. Should write loop. + (cond + ((get-step 7 pitches) (set! main-name (get-step 7 pitches))) + ((get-step 6 pitches) (set! main-name (get-step 6 pitches))) + ((get-step 5 pitches) (set! main-name (get-step 5 pitches))) + ((get-step 4 pitches) (set! main-name (get-step 4 pitches))) + ((get-step 3 pitches) (set! main-name (get-step 3 pitches)))) + + (let* ((3-diff? (lambda (x y) + (= (- (pitch-step y) (pitch-step x)) 2))) + (split (split-at-predicate + 3-diff? (remove-uptil-step 5 pitches)))) + (set! alterations (append alterations (car split))) + (set! add-steps (append add-steps (cdr split))) + (set! alterations (delq main-name alterations)) + (set! add-steps (delq main-name add-steps)) + + + ;; chords with natural (5 7 9 11 13) or leading subsequence. + ;; etc. are named by the top pitch, without any further + ;; alterations. + (if (and + (ly:pitch? main-name) + (= 7 (pitch-step main-name)) + (is-natural-alteration? main-name) + (pair? (remove-uptil-step 7 alterations)) + (reduce (lambda (x y) (and x y)) #t + (map is-natural-alteration? alterations))) + (begin + (set! main-name (last alterations)) + (set! alterations '()))) + + (ignatzek-format-chord-name + root prefixes main-name alterations add-steps suffixes bass-note + lowercase-root?)))))) diff --git a/scm/chord-name.scm b/scm/chord-name.scm index 79b018992a..9823d8a08b 100644 --- a/scm/chord-name.scm +++ b/scm/chord-name.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -107,7 +107,7 @@ (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a))))))))) (define-public ((chord-name->italian-markup re-with-eacute) pitch lowercase?) - "Return pitch markup for @var{pitch}, using italian/french note names. + "Return pitch markup for @var{pitch}, using Italian/@/French note names. If @var{re-with-eacute} is set to @code{#t}, french `ré' is returned for pitch@tie{}D instead of `re'." diff --git a/scm/clip-region.scm b/scm/clip-region.scm index 8718f56104..3585a12bc3 100644 --- a/scm/clip-region.scm +++ b/scm/clip-region.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2006--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm index dab5211f14..16a1b21b1e 100644 --- a/scm/define-context-properties.scm +++ b/scm/define-context-properties.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -45,12 +45,18 @@ ;; TODO FIXME (aDueText ,markup? "Text to print at a unisono passage.") + (additionalPitchPrefix ,string? "Text with which to prefix +additional pitches within a chord name.") (alignAboveContext ,string? "Where to insert newly created context in vertical alignment.") (alignBassFigureAccidentals ,boolean? "If true, then the accidentals are aligned in bass figure context.") (alignBelowContext ,string? "Where to insert newly created context in vertical alignment.") + (alternativeNumberingStyle ,symbol? "The style of an alternative's bar +numbers. Can be @code{numbers} for going back to the same number or +@code{numbers-with-letters} for going back to the same number with letter +suffixes. No setting will not go back in measure-number time.") (associatedVoice ,string? "Name of the @code{Voice} that has the melody for this @code{Lyrics} line.") (autoAccidentals ,list? "List of different ways to typeset an @@ -98,7 +104,7 @@ printed. @code{(#t . #f)} does not make sense. @end table") (autoBeamCheck ,procedure? "A procedure taking three -arguments, @var{context}, @var{dir} [start/stop (-1 or 1)], and +arguments, @var{context}, @var{dir} [start/@/stop (-1 or 1)], and @var{test} [shortest note in the beam]. A non-@code{#f} return value starts or stops the auto beam.") (autoBeaming ,boolean? "If set to true then beams are generated @@ -118,9 +124,12 @@ count if this property is unset.") each note.") (barCheckSynchronize ,boolean? "If true then reset @code{measurePosition} when finding a bar check.") - (barNumberVisibility ,procedure? "A Procedure that takes an -integer and returns whether the corresponding bar number should be -printed.") + (barNumberFormatter ,procedure? "A procedure that takes a bar +number, measure position, and alternative number and returns a markup +of the bar number to print.") + (barNumberVisibility ,procedure? "A procedure that takes a bar +number and a measure position and returns whether the corresponding +bar number should be printed.") (baseMoment ,ly:moment? "Smallest unit of time that will stand on its own as a subdivided section.") (bassFigureFormatFunction ,procedure? "A procedure that is @@ -132,6 +141,8 @@ apply for the down staff of @code{PianoStaff}. Used by @code{\\autochange}.") (beamExceptions ,list? "An alist of exceptions to autobeam rules that normally end on beats.") + (beamHalfMeasure ,boolean? "Whether to allow a beam to begin +halfway through the measure in triple time, which could look like 6/8.") (beatStructure ,list? "List of @code{baseMoment}s that are combined to make beats.") @@ -148,6 +159,9 @@ of pitches to chord names.") (chordNameLowercaseMinor ,boolean? "Downcase roots of minor chords?") (chordNameSeparator ,markup? "The markup object used to separate parts of a chord name.") + (slashChordSeparator ,markup? "The markup object used to separate +a chord name from its root note in case of inversions or slash +chords.") (chordNoteNamer ,procedure? "A function that converts from a pitch object to a text markup. Used for single pitches.") (chordPrefixSpacer ,number? "The space added between the root @@ -161,6 +175,7 @@ Values of 7 and -7 are common.") symbol go, measured in half staff spaces from the center of the staff.") (completionBusy ,boolean? "Whether a completion-note head is playing.") + (completionUnit ,ly:moment? "Sub-bar unit of completion.") (connectArpeggios ,boolean? "If set, connect arpeggios across piano staff.") (countPercentRepeats ,boolean? "If set, produce counters for @@ -197,6 +212,8 @@ This variable is read by @rinternals{Timing_translator} at (defaultStrings ,list? "A list of strings to use in calculating frets for tablatures and fretboards if no strings are provided in the notes for the current moment.") + (doubleRepeatSegnoType ,string? "Set the default bar line for +the combinations double repeat with segno. Default is @samp{:|S|:}.") (doubleRepeatType ,string? "Set the default bar line for double repeats.") (doubleSlurs ,boolean? "If set, two slurs are created for every @@ -213,7 +230,10 @@ the symbol @samp{hihat}) as keys, and a list @code{(@var{notehead-style} @var{script} @var{vertical-position})} as values.") - + (endRepeatSegnoType ,string? "Set the default bar line for the +combinations ending of repeat with segno. Default is @samp{:|S}.") + (endRepeatType ,string? "Set the default bar line for the ending +of repeats.") (explicitClefVisibility ,vector? "@samp{break-visibility} function for clef changes.") (explicitCueClefVisibility ,vector? "@samp{break-visibility} @@ -225,8 +245,7 @@ function for explicit key changes. @samp{\\override} of the (extendersOverRests ,boolean? "Whether to continue extenders as they cross a rest.") (extraNatural ,boolean? "Whether to typeset an extra natural sign -before accidentals changing from a non-natural to another -non-natural.") +before accidentals that reduce the effect of a previous alteration.") (figuredBassAlterationDirection ,ly:dir? "Where to put alterations @@ -239,7 +258,7 @@ for a bass figure.") (figuredBassPlusDirection ,ly:dir? "Where to put plus signs relative to the main figure.") (fingeringOrientations ,list? "A list of symbols, containing -@samp{left}, @samp{right}, @samp{up} and/or @samp{down}. This list +@samp{left}, @samp{right}, @samp{up} and/@/or @samp{down}. This list determines where fingerings are put relative to the chord being fingered.") (firstClef ,boolean? "If true, create a new clef when starting a @@ -247,7 +266,7 @@ staff.") (followVoice ,boolean? "If set, note heads are tracked across staff switches by a thin line.") (fontSize ,number? "The relative size of all grobs in a context.") - (forbidBreak ,boolean? "If set to @code{##t}, prevent a line break + (forbidBreak ,boolean? "If set to @code{#t}, prevent a line break at this point.") (forceClef ,boolean? "Show clef symbol, even if it has not changed. Only active for the first clef after the property is set, not @@ -322,7 +341,7 @@ containing @code{(@var{step} . @var{alter})} or @code{((@var{octave} . alterations, use symbols, e.g. @code{keySignature = #`((6 . ,FLAT))}.") - (lyricMelismaAlignment ,ly:dir? "Alignment to use for a melisma syllable.") + (lyricMelismaAlignment ,number? "Alignment to use for a melisma syllable.") (majorSevenSymbol ,markup? "How should the major 7th be formatted @@ -339,7 +358,7 @@ we had. This can be set manually to create incomplete measures.") (melismaBusyProperties ,list? "A list of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to -@code{#'(melismaBusy beamMelismaBusy)}, only manual melismata and +@code{'(melismaBusy beamMelismaBusy)}, only manual melismata and manual beams are considered. Possible values include @code{melismaBusy}, @code{slurMelismaBusy}, @code{tieMelismaBusy}, and @code{beamMelismaBusy}.") @@ -373,6 +392,8 @@ page turn to be allowed.") (minimumRepeatLengthForPageTurn ,ly:moment? "Minimum length of a repeated section for a page turn to be allowed within that section.") + (minorChordModifier ,markup? "Markup displayed following the root +for a minor chord") (noChordSymbol ,markup? "Markup to be displayed for rests in a ChordNames context.") @@ -424,10 +445,14 @@ is set.") (restCompletionBusy ,boolean? "Signal whether a completion-rest is active.") (restNumberThreshold ,number? "If a multimeasure rest has more measures than this, a number is printed.") + (restrainOpenStrings ,boolean? "Exclude open strings from the +automatic fret calculator.") (searchForVoice ,boolean? "Signal whether a search should be made of all contexts in the context hierarchy for a voice to provide rhythms for the lyrics.") + (segnoType ,string? "Set the default bar line for a requested segno. +Default is @samp{S}.") (shapeNoteStyles ,vector? "Vector of symbols, listing style for each note head relative to the tonic (qv.) of the scale.") (shortInstrumentName ,markup? "See @code{instrumentName}.") @@ -459,10 +484,16 @@ part-combining.") @code{traditional}, or @code{semitone}.") (stanza ,markup? "Stanza @q{number} to print before the start of a verse. Use in @code{Lyrics} context.") + (startRepeatSegnoType ,string? "Set the default bar line for the +combinations beginning of repeat with segno. Default is @samp{.S|:}.") + (startRepeatType ,string? "Set the default bar line for the beginning +of repeats.") (stemLeftBeamCount ,integer? "Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.") (stemRightBeamCount ,integer? "See @code{stemLeftBeamCount}.") + (strictBeatBeaming ,boolean? "Should partial beams reflect the +beat structure even if it causes flags to hang out?") (stringNumberOrientations ,list? "See @code{fingeringOrientations}.") (stringOneTopmost ,boolean? "Whether the first string is @@ -477,7 +508,7 @@ subdivided at @code{baseMoment} positions by only drawing one beam over the beat (suggestAccidentals ,boolean? "If set, accidentals are typeset as cautionary suggestions over the note.") (systemStartDelimiter ,symbol? "Which grob to make for the start -of the system/staff? Set to @code{SystemStartBrace}, +of the system/@/staff? Set to @code{SystemStartBrace}, @code{SystemStartBracket} or @code{SystemStartBar}.") (systemStartDelimiterHierarchy ,pair? "A nested list, indicating the nesting of a start delimiters.") @@ -495,8 +526,8 @@ minute.") (tieWaitForNote ,boolean? "If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios.") - (timeSignatureFraction ,number-pair? "A pair of numbers, -signifying the time signature. For example, @code{#'(4 . 4)} is a + (timeSignatureFraction ,fraction? "A pair of numbers, +signifying the time signature. For example, @code{'(4 . 4)} is a 4/4 time signature.") (timeSignatureSettings ,cheap-list? "A nested alist of settings for time signatures. Contains elements for various time signatures. The @@ -561,6 +592,7 @@ are described in @rinternals{bar-line-interface}.") (apply translator-property-description x)) `( + (EventClasses ,cheap-list? "The initial list of event classes.") (associatedVoiceContext ,ly:context? "The context object of the @code{Voice} that has the melody for this @code{Lyrics}.") @@ -570,7 +602,7 @@ are described in @rinternals{bar-line-interface}.") barcheck fail?") (beamMelismaBusy ,boolean? "Signal if a beam is present.") (busyGrobs ,list? "A queue of @code{(@var{end-moment} . -@var{GROB})} cons cells. This is for internal (C++) use only. This +@var{grob})} cons cells. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.).") @@ -624,7 +656,7 @@ is not set") (scriptDefinitions ,list? "The description of scripts. This is used by the @code{Script_engraver} for typesetting note-superscripts -and subscripts. See @file{scm/script.scm} for more information.") +and subscripts. See @file{scm/@/script.scm} for more information.") (slurMelismaBusy ,boolean? "Signal if a slur is present.") (stavesFound ,grob-list? "A list of all staff-symbols found.") diff --git a/scm/define-event-classes.scm b/scm/define-event-classes.scm index c632e430a9..2beabeeff7 100644 --- a/scm/define-event-classes.scm +++ b/scm/define-event-classes.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Erik Sandberg +;;;; Copyright (C) 2005--2012 Erik Sandberg ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -35,7 +35,8 @@ harmonic-event hyphen-event laissez-vibrer-event mark-event multi-measure-text-event note-grouping-event pes-or-flexa-event repeat-tie-event spacing-section-event - layout-instruction-event completize-extender-event break-span-event)) + layout-instruction-event completize-extender-event break-span-event + alternative-event)) (layout-instruction-event . (apply-output-event)) (script-event . (articulation-event text-script-event)) @@ -58,43 +59,31 @@ (Announcement . (AnnounceNewContext)) )) -;; Maps event-class to a list of ancestors (inclusive) -(define ancestor-lookup (make-hash-table 11)) +(define-public (event-class-cons class parent classlist) + (let ((lineage (assq parent classlist))) + (if (not lineage) + (begin + (if (not (null? parent)) + (ly:warning (_ "unknown parent class `~a'") parent)) + (set! lineage '()))) + (if (symbol? class) + (acons class lineage classlist) + (fold (lambda (elt alist) + (acons elt lineage alist)) + classlist class)))) ;; Each class will be defined as ;; (class parent grandparent .. ) ;; so that (eq? (cdr class) parent) holds. -(for-each - (lambda (rel) - (for-each - (lambda (type) - (hashq-set! ancestor-lookup type - (cons type (hashq-ref ancestor-lookup (car rel) '())))) - (cdr rel))) - event-classes) - -(define-public (define-event-class leaf heritage) - (cond - ((not (eq? leaf (car heritage))) - (ly:warning (_ "All classes must be the last in their matrilineal line."))) - ((not (equal? (cdr heritage) - (list-head (hashq-ref ancestor-lookup (cadr heritage) '()) - (length (cdr heritage))))) - (ly:warning (_ "All classes must have a well-defined pedigree in the existing class hierarchy."))) - (else (hashq-set! ancestor-lookup - leaf - (cons leaf - (hashq-ref ancestor-lookup - (cadr heritage) - '())))))) - -;; TODO: Allow entering more complex classes, by taking unions. -(define-public (ly:make-event-class leaf) - (hashq-ref ancestor-lookup leaf)) (define-public (ly:in-event-class? ev cl) "Does event @var{ev} belong to event class @var{cl}?" - (memq cl (ly:make-event-class (ly:event-property ev 'class)))) + (memq cl (ly:event-property ev 'class))) + +(define-public all-event-classes + (fold (lambda (elt classlist) + (event-class-cons (cdr elt) (car elt) classlist)) + '() event-classes)) ;; does this exist in guile already? (define (map-tree f t) @@ -112,13 +101,6 @@ (cons root (map expand-event-tree (cdr children))) root))) -;; All leaf event classes that no translator listens to -;; directly. Avoids printing a warning. -(define unlistened-music-event-classes - '(harmonic-event line-break-event page-break-event page-turn-event label-event - solo-one-event solo-two-event skip-event unisono-event - part-combine-force-event break-dynamic-span-event)) - ;; produce neater representation of music event tree. ;; TODO: switch to this representation for the event-classes list? (define music-event-tree (expand-event-tree 'music-event)) @@ -139,22 +121,6 @@ ;;(use-modules (ice-9 pretty-print)) ;;(pretty-print (cons (car music-event-tree) (sort-tree (cdr music-event-tree)))) -;; check that the music event tree corresponds well with the set of -;; available translators; print warnings otherwise. -(map-tree (lambda (sym) - (if (and (symbol? sym) - (not (ly:is-listened-event-class sym)) - (not (assq sym event-classes)) - (not (memq sym unlistened-music-event-classes))) - (ly:programming-error (_ "event class ~A seems to be unused") sym))) - music-event-tree) - -(map (lambda (sym) - (if (not (pair? (ly:make-event-class sym))) - ;; should be programming-error - (ly:error (_ "translator listens to nonexisting event class ~A") sym))) - (ly:get-listened-event-classes)) - (defmacro-public make-stream-event (expr) (Stream_event::undump (primitive-eval (list 'quasiquote expr)))) @@ -180,8 +146,7 @@ (list 'unquote `(ly:make-duration ,(ly:duration-log e) ,(ly:duration-dot-count e) - ,(car (ly:duration-factor e)) - ,(cdr (ly:duration-factor e))))) + ,(ly:duration-scale)))) ((ly:pitch? e) (list 'unquote `(ly:make-pitch ,(ly:pitch-octave e) diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm index 735b9c7895..8d9c457037 100644 --- a/scm/define-grob-interfaces.scm +++ b/scm/define-grob-interfaces.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -36,6 +36,50 @@ note)." "The line between note heads for a pitch range." '(gap note-heads thickness)) +(ly:add-interface + 'bar-line-interface + "Print a special bar symbol. It replaces the regular bar +symbol with a special symbol. The argument @var{bartype} +is a string which specifies the kind of bar line to print. +Options are @code{|}, @code{:|}, @code{|:}, @code{:|:}, @code{:|.|:}, +@code{:|.:}, @code{.}, @code{||}, @code{|.}, @code{.|}, @code{.|.}, +@code{|.|}, @code{:}, @code{dashed}, @code{'} and @code{S}. + +These produce, respectively, a normal bar line, a right repeat, a left repeat, +a thick double repeat, a thin-thick-thin double repeat, +a thin-thick double repeat, a thick bar, a double bar, a start bar, +an end bar, a thick double bar, a thin-thick-thin bar, +a dotted bar, a dashed bar, a tick as bar line and a segno bar. + +In addition, there is an option +@code{||:} which is equivalent to @code{|:} except at line +breaks, where it produces a double bar (@code{||}) at the +end of the line and a repeat sign (@code{|:}) at the +beginning of the new line. + +For segno, @code{S} produces a segno sign except at line breaks, +where it produces a double bar (@code{||}) at the +end of the line and a segno sign at the beginning of the new line. +@code{|S} is equivalent to @code{S} but produces a simple bar line +(@code{|}) instead of a double bar line (@code{||}) at line breaks. +@code{S|} produces the segno sign at line breaks and starts the following +line without special bar lines. + +@code{S|:} and @code{:|S} are used for repeat/segno combinations that are +separated at line breaks. Alternatively, @code{.S|:} and @code{:|S.} +may be used which combine repeat signs and segno at the same line in +case of a line break. @code{:|S|:} is a combination of a left repeat +(@code{:|}), a segno (@code{S}) and a right repeat @code{|:} which +splits before the segno at line breaks; @code{:|S.|:} splits after +the segno sign. + +If @var{bartype} is set to @code{empty} then nothing is +printed, but a line break is allowed at that spot. + +@code{gap} is used for the gaps in dashed bar lines." + '(allow-span-bar bar-extent gap glyph glyph-name has-span-bar + hair-thickness kern thin-kern thick-thickness)) + (ly:add-interface 'bass-figure-interface "A bass figure text." @@ -84,7 +128,10 @@ note)." (ly:add-interface 'footnote-interface "Make a footnote." - '(footnote-text)) + '(automatically-numbered + footnote + footnote-text + numbering-assertion-function)) (ly:add-interface 'footnote-spanner-interface @@ -209,6 +256,14 @@ interesting enough to maintain a hara-kiri staff." "Supports setting of spacing variables." '(spacing-increment shortest-duration-space)) +(ly:add-interface + 'span-bar-interface + "A bar line that is spanned between other barlines. + This interface is used for bar lines that connect different + staves." + '(glyph-name elements pure-Y-common pure-relevant-grobs + pure-relevant-items pure-relevant-spanners)) + (ly:add-interface 'stanza-number-interface "A stanza number, to be put in from of a lyrics line." diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index 6afeead462..6502dd9d72 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -38,7 +38,7 @@ included in this script's support.") (after-line-breaking ,boolean? "Dummy property, used to trigger callback for @code{after-line-breaking}.") - (align-dir ,ly:dir? "Which side to align? @code{-1}: left side, + (align-dir ,ly:dir? "Which side to align? @w{@code{-1}}: left side, @code{0}: around center of width, @code{1}: right side.") (allow-loose-spacing ,boolean? "If set, column can be detached from main spacing.") @@ -58,10 +58,14 @@ arpeggio squiggly line.") (auto-knee-gap ,ly:dimension? "If a gap is found between note heads where a horizontal beam fits that is larger than this number, make a kneed beam.") + (automatically-numbered ,boolean? "Should a footnote be automatically +numbered?") (average-spacing-wishes ,boolean? "If set, the spacing wishes are averaged over staves.") (avoid-note-head ,boolean? "If set, the stem of a chord does not pass through all note heads, but starts at the last note head.") + (avoid-scripts ,boolean? "If set, a tuplet bracket avoids the +scripts associated with the note heads it encompasses.") (avoid-slur ,symbol? "Method of handling slur collisions. Choices are @code{inside}, @code{outside}, @code{around}, and @code{ignore}. @code{inside} adjusts the slur if needed to keep the @@ -78,6 +82,9 @@ grobs, this should contain only one number.") ;; ;; b ;; + (bar-extent ,number-pair? "The Y-extent of the actual bar line. +This may differ from @code{Y-extent} because it does not include the +dots in a repeat bar line.") (base-shortest-duration ,ly:moment? "Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.") @@ -157,21 +164,27 @@ stick out of its bounds?") @code{#(@var{end-of-line} @var{unbroken} @var{begin-of-line})}. @code{#t} means visible, @code{#f} means killed.") (breakable ,boolean? "Allow breaks here.") - + (broken-bound-padding ,number? "The amount of padding to insert +when a spanner is broken at a line break.") ;; ;; c ;; (c0-position ,integer? "An integer indicating the position of middle@tie{}C.") - (circled-tip ,boolean? "Put a circle at start/end of -hairpins (al/del niente).") + (circled-tip ,boolean? "Put a circle at start/@/end of +hairpins (al/@/del niente).") (clip-edges ,boolean? "Allow outward pointing beamlets at the edges of beams?") (collapse-height ,ly:dimension? "Minimum height of system start -delimiter. If equal or smaller, the bracket/brace/line is removed.") +delimiter. If equal or smaller, the bracket/@/brace/@/line is removed.") + (collision-bias ,number? "Number determining how much to favor the +left (negative) or right (positive). Larger absolute values in either +direction will push a collision in this direction.") (collision-interfaces ,list? "A list of interfaces for which automatic beam-collision resolution is run.") + (collision-padding ,number? "Amount of padding to apply after +a collision is detected via the self-alignment-interface.") (collision-voice-only ,boolean? "Does automatic beam collsion apply only to the voice in which the beam was created?") (color ,color? "The color of this grob.") @@ -213,13 +226,13 @@ looking at the top of the Internals Reference page for each interface having a @code{details} property.") (digit-names ,vector? "Names for string finger digits.") (direction ,ly:dir? "If @code{side-axis} is @code{0} (or -@code{#X}), then this property determines whether the object is placed -@code{#LEFT}, @code{#CENTER} or @code{#RIGHT} with respect to the +@code{X}), then this property determines whether the object is placed +@code{LEFT}, @code{CENTER} or @code{RIGHT} with respect to the other object. Otherwise, it determines whether the object is placed -@code{#UP}, @code{#CENTER} or @code{#DOWN}. Numerical values may also -be used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1}, -@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1}, -@code{#CENTER}=@code{0}.") +@code{UP}, @code{CENTER} or @code{DOWN}. Numerical values may also +be used: @code{UP}=@code{1}, @code{DOWN}=@w{@code{-1}}, +@code{LEFT}=@w{@code{-1}}, @code{RIGHT}=@code{1}, +@code{CENTER}=@code{0}.") (dot-count ,integer? "The number of dots.") (dot-negative-kern ,number? "The space to remove between a dot and a slash in percent repeat glyphs. Larger values bring the two @@ -240,6 +253,10 @@ Positive means move the center to the right.") the vertical edges: @code{(@var{left-height} . @var{right-height})}.") (edge-text ,pair? "A pair specifying the texts to be set at the edges: @code{(@var{left-text} . @var{right-text})}.") + (round-up-exceptions ,list? "A list of pairs where car is the numerator +and cdr the denominator of a moment. Each pair in this list means that +the multi-measure rests of the corresponding length will be rounded up to +the longer rest. See @var{round-up-to-longer-rest}.") (expand-limit ,integer? "Maximum number of measures expanded in church rests.") ;; remove me? @@ -268,17 +285,7 @@ Y@tie{}dimension by this much.") ;; ;; f ;; - (flag ,ly:stencil? "A function returning the full flag stencil -for the @code{Stem}, which is passed to the function as the only -argument. The default ly:stem::calc-stencil function uses the -@code{flag-style} property to determine the correct glyph for the -flag. By providing your own function, you can create arbitrary -flags.") (flag-count ,number? "The number of tremolo beams.") - (flag-style ,symbol? "A symbol determining what style of flag -glyph is typeset on a @code{Stem}. Valid options include @code{'()} -for standard flags, @code{'mensural} and @code{'no-flag}, which -switches off the flag.") (font-encoding ,symbol? "The font encoding is the broadest category for selecting a font. Currently, only lilypond's system fonts (Emmentaler) are using this property. Available @@ -296,14 +303,18 @@ include @code{medium}, @code{bold}, @code{bold-narrow}, etc.") include @code{upright}, @code{italic}, @code{caps}.") (font-size ,number? "The font size, compared to the @q{normal}@tie{}size. @code{0}@tie{}is style-sheet's normal size, -@code{-1} is smaller, @code{+1} is bigger. Each step of@tie{}1 is +@w{@code{-1}} is smaller, @code{+1} is bigger. Each step of@tie{}1 is approximately 12% larger; 6@tie{}steps are exactly a factor@tie{}2 larger. Fractional values are allowed.") + (footnote ,boolean? "Should this be a footnote or in-note?") + (footnote-music ,ly:music? "Music creating a footnote.") (footnote-text ,markup? "A footnote for the grob.") (force-hshift ,number? "This specifies a manual shift for notes in collisions. The unit is the note head width of the first voice note. This is used by @rinternals{note-collision-interface}.") - (fraction ,number-pair? "Numerator and denominator of a time + (forced-spacing ,number? "Spacing forced between grobs, used in +various ligature engravers.") + (fraction ,fraction? "Numerator and denominator of a time signature object.") (french-beaming ,boolean? "Use French beaming style for this stem. The stem stops at the innermost beams.") @@ -352,8 +363,8 @@ the center of the fret in direction parallel to strings. Default@tie{}0. @item @code{label-dir} -- Side to which the fret label is attached. -@code{-1}, @code{#LEFT}, or @code{#DOWN} for left or down; @code{1}, -@code{#RIGHT}, or @code{#UP} for right or up. Default @code{#RIGHT}. +@w{@code{-1}}, @code{LEFT}, or @code{DOWN} for left or down; @code{1}, +@code{RIGHT}, or @code{UP} for right or up. Default @code{RIGHT}. @item @code{mute-string} -- Character string to be used to indicate muted string. Default @code{\"x\"}. @@ -409,6 +420,8 @@ read from the NonMusicalPaperColumn that begins the measure.") ;; (gap ,ly:dimension? "Size of a gap in a variable symbol.") (gap-count ,integer? "Number of gapped beams for tremolo.") + (glissando-skip ,boolean? "Should this @code{NoteHead} be skipped +by glissandi?") (glyph ,string? "A string determining what @q{style} of glyph is typeset. Valid choices depend on the function that is reading this property.") @@ -430,8 +443,8 @@ be included in harp-pedal-details include the following: @itemize @bullet @item -@code{box-offset} -- Vertical shift of the center of flat/sharp pedal -boxes above/below the horizontal line. Default value@tie{}0.8. +@code{box-offset} -- Vertical shift of the center of flat/@/sharp pedal +boxes above/@/below the horizontal line. Default value@tie{}0.8. @item @code{box-width} -- Width of each pedal box. Default value@tie{}0.4. @item @@ -471,6 +484,13 @@ left and one to the right of this grob.") ;; ;; i ;; + (id ,string? "An id string for the grob. Depending on the typestting +backend being used, this id will be assigned to a group containing all of +the stencils that comprise a given grob. For example, in the svg backend, +the string will be assigned to the @code{id} attribute of a group () +that encloses the stencils that comprise the grob. In the Postscript +backend, as there is no way to group items, the setting of the id property +will have no effect.") (ignore-collision ,boolean? "If set, don't do note collision resolution on this @code{NoteColumn}.") (implicit ,boolean? "Is this an implicit bass figure?") @@ -502,10 +522,14 @@ objects. Objects with the lowest value of layer are drawn first, then objects with progressively higher values are drawn, so objects with higher values overwrite objects with lower values. By default most objects are assigned a layer value of 1.") + (ledger-extra ,ly:dimension? "Extra distance from staff line to draw ledger +lines for.") (ledger-line-thickness ,number-pair? "The thickness of ledger lines. It is the sum of 2@tie{}numbers: The first is the factor for line thickness, and the second for staff space. Both contributions are added.") + (ledger-positions ,list? "Repeating pattern for the vertical positions +of ledger lines. Bracketed groups are always shown together.") (left-bound-info ,list? "An alist of properties for determining attachments of spanners to edges.") (left-padding ,ly:dimension? "The amount of space that is put @@ -675,7 +699,6 @@ positions are requested, the closest one is taken.") shift dotted up-note to the right, rather than shifting just the dot.") - ;; ;; r ;; @@ -685,6 +708,9 @@ number, the quicker the slur attains its @code{height-limit}.") interesting items.") (remove-first ,boolean? "Remove the first staff of an orchestral score?") + (replacement-alist ,list? "Alist of strings. +The key is a string of the pattern to be replaced. The value is a +string of what should be displayed. Useful for ligatures.") (restore-first ,boolean? "Print a natural before the accidental.") (rhythmic-location ,rhythmic-location? "Where (bar number, @@ -694,8 +720,12 @@ attachments of spanners to edges.") (right-padding ,ly:dimension? "Space to insert on the right side 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 +what point to rotate around. For example, @code{'(45 0 0)} rotates by 45 degrees around the center of this object.") + (round-up-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.") ;; @@ -708,7 +738,7 @@ stem distance.") (script-priority ,number? "A sorting key that determines in what order a script is within a stack of scripts.") (self-alignment-X ,number? "Specify alignment of an object. The -value @code{-1} means left aligned, @code{0}@tie{}centered, and +value @w{@code{-1}} means left aligned, @code{0}@tie{}centered, and @code{1}@tie{}right-aligned in X@tie{}direction. Other numerical values may also be specified.") (self-alignment-Y ,number? "Like @code{self-alignment-X} but for @@ -724,14 +754,17 @@ space for the shortest duration. This is expressed in shortest note playing here.") (shortest-starter-duration ,ly:moment? "The duration of the shortest note that starts here.") - (side-axis ,number? "If the value is @code{#X} (or + (side-axis ,number? "If the value is @code{X} (or equivalently@tie{}@code{0}), the object is placed horizontally next to -the other object. If the value is @code{#Y} or@tie{}@code{1}, it is +the other object. If the value is @code{Y} or@tie{}@code{1}, it is 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.") + (skip-quanting ,boolean? "Should beam quanting be skipped?") (skyline-horizontal-padding ,number? "For determining the vertical distance between two staves, it is possible to have a configuration which would result in a tight interleaving of grobs from @@ -769,7 +802,8 @@ bounds (i.e., clefs, key signatures and time signatures) using the following override: @example -\\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar) +\\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 @@ -835,8 +869,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-end-position ,number? "Where does the stem end (the end is -opposite to the support-head)?") + (stem-begin-position ,number? "User override for the +begin position of a stem.") ;;[TODO: doco] (stem-spacing-correction ,number? "Optical correction amount for stems that are placed in tight configurations. For opposite @@ -877,7 +911,7 @@ should use @code{LEFT}.") @var{dir})} pairs, indicating the desired tie configuration, where @var{position} is the offset from the center of the staff in staff space and @var{dir} indicates the direction of the tie -(@code{1}=>up, @code{-1}=>down, @code{0}=>center). A non-pair entry +(@code{1}=>up, @w{@code{-1}}=>down, @code{0}=>center). A non-pair entry in the list causes the corresponding tie to be formatted automatically.") (to-barline ,boolean? "If true, the spanner will stop at the bar @@ -898,7 +932,10 @@ 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.") + (use-skylines ,boolean? "Should skylines be used for side +positioning?") ;; ;; v @@ -927,6 +964,9 @@ texts.") (X-extent ,number-pair? "Hard coded extent in X@tie{}direction.") (X-offset ,number? "The horizontal amount that this object is moved relative to its X-parent.") + (X-positions ,number-pair? "Pair of X staff coordinates of a spanner +in the form @code{(@var{left} . @var{right})}, where both @var{left} and +@var{right} are in @code{staff-space} units of the current staff.") ;; @@ -980,13 +1020,17 @@ function is to protect objects from being garbage collected.") (bars ,ly:grob-array? "An array of bar line pointers.") (beam ,ly:grob? "A pointer to the beam, if applicable.") + (beam-segments ,list? "Internal representation of beam segments.") + (bound-alignment-interfaces ,list "Interfaces to be used +for positioning elements that align with a column.") (bounded-by-me ,ly:grob-array? "An array of spanners that have this -column as start/begin point. Only columns that have grobs or act as +column as start/@/begin point. Only columns that have grobs or act as bounds are spaced.") (bracket ,ly:grob? "The bracket for a number.") (columns ,ly:grob-array? "An array of grobs, typically containing @code{PaperColumn} or @code{NoteColumn} objects.") + (concurrent-hairpins ,ly:grob-array? "All concurrent hairpins.") (conditional-elements ,ly:grob-array? "Internal use only.") (covered-grobs ,ly:grob-array? "Grobs that could potentially collide with a beam.") @@ -1003,15 +1047,29 @@ the grob where this is set in.") in addition to notes and stems.") (figures ,ly:grob-array? "Figured bass objects for continuation line.") + (flag ,ly:grob? "A pointer to a @code{Flag} object.") + (footnote-stencil ,ly:stencil? "The stencil of a system's footnotes.") + (footnotes-before-line-breaking ,ly:grob-array? "Footnote grobs of +a whole system.") + (footnotes-after-line-breaking ,ly:grob-array? "Footnote grobs of +a broken system.") + (full-score-pure-minimum-translations ,list? "A list of translations +for a full score's worth of grobs.") (glissando-index ,integer? "The index of a glissando in its note column.") (grace-spacing ,ly:grob? "A run of grace notes.") + (has-span-bar ,pair? "A pair of grobs containing the span bars to +be drawn below and above the staff. If no span bar is in a position, +the respective element is set to @code{#f}.") (heads ,ly:grob-array? "An array of note heads.") (items-worth-living ,ly:grob-array? "An array of interesting items. If empty in a particular staff, then that staff is erased.") + (in-note-direction ,ly:dir? "Direction to place in-notes above a system.") + (in-note-padding ,number? "Padding between in-notes.") + (in-note-stencil ,ly:stencil? "The stencil of a system's in-notes.") (keep-alive-with ,ly:grob-array? "An array of other @code{VerticalAxisGroup}s. If any of them are alive, then we will stay alive.") @@ -1020,12 +1078,19 @@ empty in a particular staff, then that staff is erased.") (left-neighbor ,ly:grob? "The right-most column that has a spacing-wish for this column.") + (melody-spanner ,ly:grob? "The @code{MelodyItem} object for a stem.") + + (neighbors ,ly:grob-array? "The X-axis neighbors of a grob. Used by the +pure-from-neighbor-interface to determine various grob heights.") + (normal-stems ,ly:grob-array? "An array of visible stems.") (note-columns ,ly:grob-array? "An array of @code{NoteColumn} grobs.") (note-head ,ly:grob? "A single note head.") (note-heads ,ly:grob-array? "An array of note head grobs.") (pedal-text ,ly:grob? "A pointer to the text of a mixed-style piano pedal.") + (potential-X-colliding-grobs ,ly:grob-array? "Grobs that can potentially +collide with a self-aligned grob on the X-axis.") (pure-relevant-grobs ,ly:grob-array? "All the grobs (items and spanners) that are relevant for finding the @code{pure-Y-extent}") (pure-relevant-items ,ly:grob-array? "A subset of elements that are @@ -1043,25 +1108,36 @@ relevant for finding the @code{pure-Y-extent}.") (side-support-elements ,ly:grob-array? "The side support, an array of grobs.") + (skyline-quantizing ,index? "The number of boxes to break a +slur into when calculating its skyline.") (slur ,ly:grob? "A pointer to a @code{Slur} object.") (spacing ,ly:grob? "The spacing spanner governing this section.") (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 -of the entire spanner, although this behavior is unpredictable in situations -with lots of rhythmic diversity. For predictable results, use LEFT and RIGHT.") +@code{LEFT} is for the first spanner, and @code{RIGHT} is for the last. +@code{CENTER} will place it on the broken spanner that falls closest to the +center of the length of the entire spanner, although this behavior is +unpredictable in situations with lots of rhythmic diversity. For predictable +results, use @code{LEFT} and @code{RIGHT}.") (staff-grouper ,ly:grob? "The staff grouper we belong to.") (staff-symbol ,ly:grob? "The staff symbol grob that we are in.") (stem ,ly:grob? "A pointer to a @code{Stem} object.") (stems ,ly:grob-array? "An array of stem objects.") (tie ,ly:grob? "A pointer to a @code{Tie} object.") + (ties ,ly:grob-array? "A grob array of @code{Tie} objects.") (tremolo-flag ,ly:grob? "The tremolo object on a stem.") (tuplet-number ,ly:grob? "The number for a bracket.") + (tuplet-start ,boolean? "Is stem at the start of a tuplet?") (tuplets ,ly:grob-array? "An array of smaller tuplet brackets.") + (X-colliding-grobs ,ly:grob-array? "Grobs that can collide +with a self-aligned grob on the X-axis.") + (Y-colliding-grobs ,ly:grob-array? "Grobs that can collide +with a self-aligned grob on the Y-axis.") (X-common ,ly:grob? "Common reference point for axis group.") (Y-common ,ly:grob? "See @code{X-common}.") @@ -1071,9 +1147,6 @@ with lots of rhythmic diversity. For predictable results, use LEFT and RIGHT.") @code{VerticalAxisGroup} to cache the @code{Y-extent}s of different column ranges.") - (bar-extent ,number-pair? "The Y-extent of the actual bar line. -This may differ from @code{Y-extent} because it does not include the dots in -a repeat bar line.") (begin-of-line-visible ,boolean? "Set to make @code{ChordName} or @code{FretBoard} be visible only at beginning of line or at chord changes.") @@ -1106,6 +1179,11 @@ entries @code{name} and @code{interfaces}.") (minimum-distances ,list? "A list of rods that have the format @code{(@var{obj} . @var{dist})}.") + (note-collision ,ly:grob? "The @code{NoteCollision} object of a +dot column.") + (numbering-assertion-function ,scheme? "The function used to assert +that footnotes are receiving correct automatic numbers.") + (positioning-done ,boolean? "Used to signal that a positioning element did its job. This ensures that a positioning is only done once.") (pure-Y-extent ,number-pair? "The estimated height of a system.") @@ -1116,6 +1194,7 @@ to be within staff spaces.") (quantized-positions ,number-pair? "The beam positions after quanting.") + (script-stencil ,pair? "A pair @code{(@var{type} . @var{arg})} which acts as an index for looking up a @code{Stencil} object.") (shorten ,ly:dimension? "The amount of space that a stem is shortened. @@ -1124,8 +1203,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 @@ -1151,7 +1228,7 @@ an additional stem on the right side?") (cavum ,boolean? "Is this neume outlined?") (context-info ,integer? "Within a ligature, the final glyph or shape of -a head may be affected by the left and/or right neighbour head. +a head may be affected by the left and/@/or right neighbour head. @code{context-info} holds for each head such information about the left and right neighbour, encoded as a bit mask.") diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 0ddc677a04..76f578ab4a 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -80,6 +80,7 @@ (side-axis . ,Y) (staff-padding . 0.25) (stencil . ,ly:accidental-interface::print) + (use-skylines . #t) (X-extent . ,ly:accidental-interface::width) (X-offset . ,(ly:make-simple-closure `(,+ @@ -197,6 +198,7 @@ (break-align-anchor . ,ly:bar-line::calc-anchor) (break-align-symbol . staff-bar) (break-visibility . ,bar-line::calc-break-visibility) + (extra-spacing-height . ,pure-from-neighbor-interface::account-for-span-bar) (gap . 0.4) (glyph . "|") (glyph-name . ,bar-line::calc-glyph-name) @@ -224,9 +226,12 @@ (right-edge . (extra-space . 0.0)))) (stencil . ,ly:bar-line::print) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (bar-line-interface break-aligned-interface - font-interface)))))) + font-interface + pure-from-neighbor-interface)))))) (BarNumber . ( @@ -236,6 +241,7 @@ (break-visibility . ,begin-of-line-visible) (direction . ,UP) + (extra-spacing-width . (+inf.0 . -inf.0)) (font-family . roman) (font-size . -2) (non-musical . #t) @@ -276,7 +282,8 @@ (stacking-dir . ,DOWN) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) - (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (object-callbacks . ((full-score-pure-minimum-translations . ,ly:align-interface::full-score-pure-minimum-translations) + (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (align-interface axis-group-interface @@ -329,6 +336,7 @@ ;; todo: clean this up a bit: the list is getting ;; rather long. (auto-knee-gap . 5.5) + (beam-segments . ,ly:beam::calc-beam-segments) (beam-thickness . 0.48) ; in staff-space ;; We have some unreferenced problems here. @@ -351,12 +359,12 @@ (clip-edges . #t) (collision-interfaces . (beam-interface clef-interface + flag-interface inline-accidental-interface key-signature-interface note-head-interface stem-interface time-signature-interface)) - (concaveness . ,ly:beam::calc-concaveness) (cross-staff . ,ly:beam::calc-cross-staff) (damping . 1) (details @@ -381,15 +389,8 @@ (gap . 0.8) (neutral-direction . ,DOWN) - (positions . ,(ly:make-simple-closure - (ly:make-simple-closure - (list chain-grob-member-functions - `(,cons 0 0) - ly:beam::calc-least-squares-positions - ly:beam::slope-damping - ly:beam::shift-region-to-valid - ly:beam::quanting - )))) + (positions . ,beam::place-broken-parts-individually) + (X-positions . ,ly:beam::calc-x-positions) ;; this is a hack to set stem lengths, if positions is set. (quantized-positions . ,ly:beam::set-stem-lengths) @@ -506,6 +507,7 @@ (font-size . 1.5) (stencil . ,ly:text-interface::print) (extra-spacing-height . (0.2 . -0.2)) + (extra-spacing-width . (-0.5 . 0.5)) (word-space . 0.0) (meta . ((class . Item) (interfaces . (chord-name-interface @@ -519,6 +521,7 @@ (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-align-symbol . clef) (break-visibility . ,begin-of-line-visible) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line) (glyph-name . ,ly:clef::calc-glyph-name) (non-musical . #t) (space-alist . ((cue-clef . (extra-space . 2.0)) @@ -527,14 +530,17 @@ (key-signature . (minimum-space . 3.5)) (time-signature . (minimum-space . 4.2)) (first-note . (minimum-fixed-space . 5.0)) - (next-note . (extra-space . 0.5)) + (next-note . (extra-space . 1.0)) (right-edge . (extra-space . 0.5)))) (stencil . ,ly:clef::print) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (break-aligned-interface clef-interface font-interface + pure-from-neighbor-interface staff-symbol-referencer-interface)))))) (ClusterSpanner @@ -583,6 +589,7 @@ (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-align-symbol . cue-clef) (break-visibility . ,begin-of-line-visible) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line) (font-size . -4) (glyph-name . ,ly:clef::calc-glyph-name) (non-musical . #t) @@ -593,14 +600,17 @@ (time-signature . (minimum-space . 4.2)) (custos . (minimum-space . 0.0)) (first-note . (minimum-fixed-space . 3.0)) - (next-note . (extra-space . 0.5)) + (next-note . (extra-space . 1.0)) (right-edge . (extra-space . 0.5)))) (stencil . ,ly:clef::print) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (break-aligned-interface clef-interface font-interface + pure-from-neighbor-interface staff-symbol-referencer-interface)))))) (CueEndClef @@ -609,6 +619,7 @@ (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-align-symbol . cue-end-clef) (break-visibility . ,begin-of-line-invisible) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line) (font-size . -4) (glyph-name . ,ly:clef::calc-glyph-name) (non-musical . #t) @@ -620,14 +631,17 @@ (key-signature . (minimum-space . 3.5)) (time-signature . (minimum-space . 4.2)) (first-note . (minimum-fixed-space . 5.0)) - (next-note . (extra-space . 0.5)) + (next-note . (extra-space . 1.0)) (right-edge . (extra-space . 0.5)))) (stencil . ,ly:clef::print) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (break-aligned-interface clef-interface font-interface + pure-from-neighbor-interface staff-symbol-referencer-interface)))))) (Custos @@ -660,6 +674,7 @@ (Dots . ( + (avoid-slur . inside) (dot-count . ,dots::calc-dot-count) (staff-position . ,dots::calc-staff-position) (stencil . ,ly:dots::print) @@ -752,6 +767,8 @@ ;; todo. + (collision-bias . -2.0) + (collision-padding . 0.5) (direction . ,ly:script-interface::calc-direction) (extra-spacing-width . (+inf.0 . -inf.0)) (font-encoding . fetaText) @@ -766,6 +783,7 @@ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self) (meta . ((class . Item) + (object-callbacks . ((X-colliding-grobs . ,ly:self-alignment-interface::x-colliding-grobs))) (interfaces . (dynamic-interface dynamic-text-interface font-interface @@ -855,7 +873,7 @@ ;; sync with TextScript (?) (avoid-slur . around) - (cross-staff . ,ly:side-position-interface::calc-cross-staff) + (cross-staff . ,script-or-side-position-cross-staff) (direction . ,ly:script-interface::calc-direction) (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. @@ -876,14 +894,27 @@ text-interface text-script-interface)))))) + (Flag + . ( + (stencil . ,ly:flag::print) + (X-extent . ,ly:flag::width) + (X-offset . ,ly:flag::calc-x-offset) + (Y-offset . ,ly:flag::calc-y-offset) + (meta . ((class . Item) + (interfaces . (flag-interface + font-interface)))))) + (FootnoteItem . ( (annotation-balloon . #f) (annotation-line . #t) + (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered)) (break-visibility . ,inherit-y-parent-visibility) + (footnote . #t) (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)) @@ -897,10 +928,13 @@ . ( (annotation-balloon . #f) (annotation-line . #t) + (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered)) + (footnote . #t) (footnote-text . ,(grob::calc-property-by-copy 'footnote-text)) (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)) @@ -917,6 +951,7 @@ (fret-diagram-details . ((finger-code . below-string))) (stencil . ,fret-board::calc-stencil) (extra-spacing-height . (0.2 . -0.2)) + (extra-spacing-width . (-0.5 . 0.5)) (meta . ((class . Item) (interfaces . (chord-name-interface font-interface @@ -927,17 +962,20 @@ (Glissando . ( (after-line-breaking . ,ly:spanner::kill-zero-spanned-time) - (bound-details . ((right . ((attach-dir . ,CENTER) - (padding . 1.5) + (bound-details . ((right . ((attach-dir . ,LEFT) + (end-on-accidental . #t) + (padding . 0.5) )) - (left . ((attach-dir . ,CENTER) - (padding . 1.5) + (left . ((attach-dir . ,RIGHT) + (padding . 0.5) )) )) + (cross-staff . ,ly:line-spanner::calc-cross-staff) (gap . 0.5) (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) @@ -987,6 +1025,7 @@ . ( (after-line-breaking . ,ly:spanner::kill-zero-spanned-time) (bound-padding . 1.0) + (broken-bound-padding . ,ly:hairpin::broken-bound-padding) (circled-tip . #f) (grow-direction . ,hairpin::calc-grow-direction) (height . 0.6666) @@ -1070,13 +1109,17 @@ (right-edge . (extra-space . 0.5)) (first-note . (fixed-space . 2.5)))) (stencil . ,ly:key-signature-interface::print) - (extra-spacing-width . (0.0 . 0.5)) + (extra-spacing-width . (0.0 . 1.0)) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-including-staff) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (break-aligned-interface font-interface key-cancellation-interface key-signature-interface + pure-from-neighbor-interface staff-symbol-referencer-interface)))))) (KeySignature @@ -1094,12 +1137,16 @@ (right-edge . (extra-space . 0.5)) (first-note . (fixed-space . 2.5)))) (stencil . ,ly:key-signature-interface::print) - (extra-spacing-width . (0.0 . 0.5)) + (extra-spacing-width . (0.0 . 1.0)) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-including-staff) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (break-aligned-interface font-interface key-signature-interface + pure-from-neighbor-interface staff-symbol-referencer-interface)))))) @@ -1168,7 +1215,6 @@ ;; a tuplet bracket. (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) - (control-points . ,ly:tuplet-bracket::calc-control-points) (direction . ,UP) (edge-height . (0.7 . 0.7)) (padding . 2.0) @@ -1177,6 +1223,7 @@ (staff-padding . 0.25) (stencil . ,ly:tuplet-bracket::print) (thickness . 1.6) + (X-positions . ,ly:tuplet-bracket::calc-x-positions) (meta . ((class . Spanner) (interfaces . (line-interface tuplet-bracket-interface)))))) @@ -1265,7 +1312,7 @@ (MensuralLigature . ( (stencil . ,ly:mensural-ligature::print) - (thickness . 1.4) + (thickness . 1.3) (meta . ((class . Spanner) (interfaces . (font-interface mensural-ligature-interface)))))) @@ -1302,12 +1349,14 @@ . ( (expand-limit . 10) (hair-thickness . 2.0) + (round-up-exceptions . ()) (padding . 1) (spacing-pair . (break-alignment . break-alignment)) (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) - (staff-position . 0) (stencil . ,ly:multi-measure-rest::print) (thick-thickness . 6.6) + ;; See Wanske pp. 125 + (usable-duration-logs . ,(iota 4 -3)) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Spanner) (interfaces . (font-interface @@ -1369,10 +1418,9 @@ (allow-loose-spacing . #t) (axes . (,X)) (before-line-breaking . ,ly:paper-column::before-line-breaking) + (bound-alignment-interfaces . (break-alignment-interface)) (full-measure-extra-space . 1.0) (horizontal-skylines . ,ly:separation-item::calc-skylines) - ;; sufficient padding to prevent ledger lines from moving over/under - (skyline-vertical-padding . 0.6) ;; (stencil . ,ly:paper-column::print) (keep-inside-line . #t) @@ -1409,6 +1457,7 @@ (NoteColumn . ( (axes . (,X ,Y)) + (bound-alignment-interfaces . (rhythmic-head-interface stem-interface)) (horizontal-skylines . ,ly:separation-item::calc-skylines) (skyline-vertical-padding . 0.15) (X-extent . ,ly:axis-group-interface::width) @@ -1513,6 +1562,7 @@ (allow-loose-spacing . #t) (axes . (,X)) (before-line-breaking . ,ly:paper-column::before-line-breaking) + (bound-alignment-interfaces . (note-column-interface)) (horizontal-skylines . ,ly:separation-item::calc-skylines) (keep-inside-line . #t) ;; (stencil . ,ly:paper-column::print) @@ -1589,6 +1639,7 @@ (springs-and-rods . ,ly:spanner::set-spacing-rods) (stencil . ,ly:slur::print) (thickness . 1.1) + (vertical-skylines . ,ly:slur::vertical-skylines) (Y-extent . ,ly:slur::height) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1707,9 +1758,11 @@ (side-axis . ,Y) ;; padding set in script definitions. + (slur-padding . 0.2) (staff-padding . 0.25) (stencil . ,ly:script-interface::print) + (use-skylines . #t) (X-offset . ,script-interface::calc-x-offset) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Item) @@ -1744,6 +1797,7 @@ (springs-and-rods . ,ly:spanner::set-spacing-rods) (stencil . ,ly:slur::print) (thickness . 1.2) + (vertical-skylines . ,ly:slur::vertical-skylines) (Y-extent . ,ly:slur::height) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1816,14 +1870,22 @@ (non-musical . #t) (stencil . ,ly:span-bar::print) (X-extent . ,ly:span-bar::width) - (Y-extent . ,ly:axis-group-interface::height) + (Y-extent . (+inf.0 . -inf.0)) (meta . ((class . Item) - (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (bar-line-interface font-interface span-bar-interface)))))) + (SpanBarStub + . ( + (X-extent . ,grob::x-parent-width) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height) + (Y-extent . #f) + (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) + (interfaces . (pure-from-neighbor-interface)))))) + (StaffGrouper . ( (staff-staff-spacing . ((basic-distance . 9) @@ -1908,12 +1970,11 @@ (direction . ,ly:stem::calc-direction) (duration-log . ,stem::calc-duration-log) - (flag . ,ly:stem::calc-flag) - (length . ,ly:stem::calc-length) + (length . ,stem::length) (neutral-direction . ,DOWN) (positioning-done . ,ly:stem::calc-positioning-done) - (stem-end-position . ,ly:stem::calc-stem-end-position) (stem-info . ,ly:stem::calc-stem-info) + (stem-begin-position . ,ly:stem::calc-stem-begin-position) (stencil . ,ly:stem::print) (thickness . 1.3) (X-extent . ,ly:stem::width) @@ -1921,8 +1982,15 @@ (Y-extent . ,ly:stem::height) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) - (interfaces . (font-interface - stem-interface)))))) + (interfaces . (stem-interface)))))) + + (StemStub + . ( + (X-extent . ,stem-stub::width) + (extra-spacing-height . ,stem-stub::extra-spacing-height) + (Y-extent . ,(ly:make-unpure-pure-container #f stem-stub::pure-height)) + (meta . ((class . Item) + (interfaces . ()))))) (StemTremolo . ( @@ -1932,13 +2000,21 @@ (stencil . ,ly:stem-tremolo::print) (style . ,ly:stem-tremolo::calc-style) (X-extent . ,ly:stem-tremolo::width) - (Y-extent . ,ly:stem-tremolo::height) + (X-offset . ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:self-alignment-interface::centered-on-x-parent)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) + (Y-offset . ,ly:stem-tremolo::calc-y-offset) (meta . ((class . Item) - (interfaces . (stem-tremolo-interface)))))) + (interfaces . (self-alignment-interface + stem-tremolo-interface)))))) (StringNumber . ( (avoid-slur . around) + (cross-staff . ,script-or-side-position-cross-staff) (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (padding . 0.5) @@ -2019,7 +2095,9 @@ (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:system::height) (meta . ((class . System) - (object-callbacks . ((pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs) + (object-callbacks . ((footnotes-before-line-breaking . ,ly:system::footnotes-before-line-breaking) + (footnotes-after-line-breaking . ,ly:system::footnotes-after-line-breaking) + (pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs) (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) (interfaces . (axis-group-interface system-interface)))))) @@ -2123,7 +2201,7 @@ (TextScript . ( (avoid-slur . around) - (cross-staff . ,ly:script-interface::calc-cross-staff) + (cross-staff . ,script-or-side-position-cross-staff) (direction . ,DOWN) (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 450) @@ -2153,7 +2231,7 @@ (padding . 0.25) (attach-dir . ,LEFT) )) - (left-broken . ((end-on-note . #t))) + (left-broken . ((attach-dir . ,RIGHT))) (right . ((Y . 0) (padding . 0.25) )) @@ -2230,7 +2308,8 @@ (break-align-symbol . time-signature) (break-align-anchor-alignment . ,LEFT) (break-visibility . ,all-visible) - (extra-spacing-height . (-1.0 . 1.0)) + (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-including-staff) + (extra-spacing-width . (0.0 . 0.8)) (non-musical . #t) (space-alist . ( (cue-clef . (extra-space . 1.5)) @@ -2240,8 +2319,11 @@ (stencil . ,ly:time-signature::print) (style . C) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs))) (interfaces . (break-aligned-interface font-interface + pure-from-neighbor-interface time-signature-interface)))))) (TrillPitchAccidental @@ -2322,8 +2404,8 @@ (TupletBracket . ( + (avoid-scripts . #t) (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) - (control-points . ,ly:tuplet-bracket::calc-control-points) (cross-staff . ,ly:tuplet-bracket::calc-cross-staff) (direction . ,ly:tuplet-bracket::calc-direction) (edge-height . (0.7 . 0.7)) @@ -2334,6 +2416,7 @@ (staff-padding . 0.25) (stencil . ,ly:tuplet-bracket::print) (thickness . 1.6) + (X-positions . ,ly:tuplet-bracket::calc-x-positions) (meta . ((class . Spanner) (interfaces . (line-interface @@ -2343,10 +2426,13 @@ . ( (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) (text . ,tuplet-number::calc-denominator-text) + (X-offset . ,ly:tuplet-number::calc-x-offset) + (Y-offset . ,ly:tuplet-number::calc-y-offset) (meta . ((class . Spanner) (interfaces . (font-interface text-interface @@ -2406,7 +2492,8 @@ (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) - (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common) + (object-callbacks . ((full-score-pure-minimum-translations . ,ly:align-interface::full-score-pure-minimum-translations) + (Y-common . ,ly:axis-group-interface::calc-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) (interfaces . (align-interface @@ -2566,6 +2653,14 @@ ly:note-head::print ly:dots::print ly:clef::print + ly:flag::print + ly:time-signature::print + default-flag + normal-flag + mensural-flag + no-flag + modern-straight-flag + old-straight-flag ly:key-signature-interface::print ly:percent-repeat-item-interface::beat-slash ly:text-interface::print @@ -2581,6 +2676,7 @@ (,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 @@ -2606,6 +2702,8 @@ (,ly:accidental-interface::height . ,ly:accidental-interface::pure-height) (,ly:axis-group-interface::calc-staff-staff-spacing . ,ly:axis-group-interface::calc-pure-staff-staff-spacing) (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height) + (,ly:beam::rest-collision-callback . ,ly:beam::pure-rest-collision-callback) + (,ly:flag::calc-y-offset . ,ly:flag::pure-calc-y-offset) (,ly:grob::stencil-height . ,pure-stencil-height) (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height) (,ly:rest-collision::force-shift-callback-rest . ,pure-chain-offset-callback) @@ -2614,7 +2712,11 @@ (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side) (,ly:slur::height . ,ly:slur::pure-height) (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback) + (,ly:stem::calc-stem-begin-position . ,ly:stem::pure-calc-stem-begin-position) + (,ly:stem::calc-stem-end-position . ,ly:stem::pure-calc-stem-end-position) + (,stem::length . ,stem::pure-length) (,ly:stem::height . ,ly:stem::pure-height) + (,ly:stem-tremolo::calc-y-offset . ,ly:stem-tremolo::pure-calc-y-offset) (,ly:system::height . ,ly:system::calc-pure-height))) (define pure-functions @@ -2629,6 +2731,7 @@ (let ((extent-callback (ly:grob-property-data grob 'Y-extent))) (not (eq? #f (or + (ly:unpure-pure-container? extent-callback) (pair? extent-callback) (memq extent-callback pure-functions) (and @@ -2640,16 +2743,29 @@ (assq stencil pure-print-to-height-conversions) (ly:stencil? stencil))))))))) +;; hideous code dup below - to be cleaned up when call pure functino +;; is eliminated and lilypond works entirely from unpure-pure-containers + (define-public (call-pure-function unpure args start end) - (if (ly:simple-closure? unpure) - (ly:eval-simple-closure (car args) unpure start end) - (if (not (procedure? unpure)) - unpure - (if (memq unpure pure-functions) - (apply unpure args) - (let ((pure (assq unpure pure-conversions-alist))) - (if pure - (apply (cdr pure) - (append - (list (car args) start end) - (cdr args))))))))) + (if (ly:unpure-pure-container? unpure) + (let ((unpure (ly:unpure-pure-container-pure-part unpure))) + (if (ly:simple-closure? unpure) + (ly:eval-simple-closure (car args) unpure start end) + (if (not (procedure? unpure)) + unpure + (apply unpure + (append + (list (car args) start end) + (cdr args)))))) + (if (ly:simple-closure? unpure) + (ly:eval-simple-closure (car args) unpure start end) + (if (not (procedure? unpure)) + unpure + (if (memq unpure pure-functions) + (apply unpure args) + (let ((pure (assq unpure pure-conversions-alist))) + (if pure + (apply (cdr pure) + (append + (list (car args) start end) + (cdr args)))))))))) diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm index 3e8953afdf..0f53296584 100644 --- a/scm/define-markup-commands.scm +++ b/scm/define-markup-commands.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -60,7 +60,7 @@ ;;; functions that take a markup as their last argument. ;;; ;;; args-signature -;;; the arguments signature, i.e. a list of type predicates which +;;; the arguments signature, i.e., a list of type predicates which ;;; are used to type check the arguments, and also to define the general ;;; argument types (markup, markup-list, scheme) that the command is ;;; expecting. @@ -69,19 +69,19 @@ ;;; ;;; category ;;; for documentation purpose, builtin markup commands are grouped by -;;; category. This can be any symbol. When documentation is generated, +;;; category. This can be any symbol. When documentation is generated, ;;; the symbol is converted to a capitalized string, where hyphens are ;;; replaced by spaces. ;;; ;;; property-bindings ;;; this is used both for documentation generation, and to ease -;;; programming the command itself. It is list of +;;; programming the command itself. It is list of ;;; (property-name default-value) ;;; or (property-name) -;;; elements. Each property is looked-up in the `props' argument, and +;;; elements. Each property is looked-up in the `props' argument, and ;;; the symbol naming the property is bound to its value. ;;; When the property is not found in `props', then the symbol is bound -;;; to the given default value. When no default value is given, #f is +;;; to the given default value. When no default value is given, #f is ;;; used instead. ;;; Thus, using the following property bindings: ;;; ((thickness 0.1) @@ -92,15 +92,15 @@ ;;; ..body..) ;;; When a command `B' internally calls an other command `A', it may ;;; desirable to see in `B' documentation all the properties and -;;; default values used by `A'. In that case, add `A-markup' to the -;;; property-bindings of B. (This is used when generating +;;; default values used by `A'. In that case, add `A-markup' to the +;;; property-bindings of B. (This is used when generating ;;; documentation, but won't create bindings.) ;;; ;;; documentation-string ;;; the command documentation string (used to generate manuals) ;;; ;;; body -;;; the command body. The function is supposed to return a stencil. +;;; the command body. The function is supposed to return a stencil. ;;; ;;; Each markup command definition shall have a documentation string ;;; with description, syntax and example. @@ -249,7 +249,7 @@ the PDF backend. @lilypond[verbatim,quote] \\markup { - \\with-url #\"http://lilypond.org/web/\" { + \\with-url #\"http://lilypond.org/\" { LilyPond ... \\italic { music notation for everyone } @@ -270,8 +270,8 @@ the PDF backend. " @cindex referencing page numbers in text -Add a link to the page @var{page-number} around @var{arg}. This only works in -the PDF backend. +Add a link to the page @var{page-number} around @var{arg}. This only works +in the PDF backend. @lilypond[verbatim,quote] \\markup { @@ -292,12 +292,14 @@ the PDF backend. " @cindex referencing page labels in text -Add a link to the page holding label @var{label} around @var{arg}. This +Add a link to the page holding label @var{label} around @var{arg}. This only works in the PDF backend. @lilypond[verbatim,quote] \\markup { - \\with-link #\"label\" { \\italic { This links to the page containing the label... } } + \\with-link #'label { + \\italic { This links to the page containing the label... } + } } @end lilypond" (let* ((arg-stencil (interpret-markup layout props arg)) @@ -684,7 +686,7 @@ rings = \\markup { ;; FIXME (ly:make-stencil (list 'embedded-ps - (format " + (format #f " gsave currentpoint translate 0.1 setlinewidth ~a @@ -860,13 +862,15 @@ Inline an image of music. indent = 0.0\\cm \\context { \\Score - \\override RehearsalMark #'break-align-symbols = - #'(time-signature key-signature) - \\override RehearsalMark #'self-alignment-X = #LEFT + \\override RehearsalMark + #'break-align-symbols = #'(time-signature key-signature) + \\override RehearsalMark + #'self-alignment-X = #LEFT } \\context { \\Staff - \\override TimeSignature #'break-align-anchor-alignment = #LEFT + \\override TimeSignature + #'break-align-anchor-alignment = #LEFT } } } @@ -926,32 +930,52 @@ the use of @code{\\simple} is unnecessary. (define-markup-command (tied-lyric layout props str) (string?) #:category music + #:properties ((word-space)) " @cindex simple text strings with tie characters Like simple-markup, but use tie characters for @q{~} tilde symbols. @lilypond[verbatim,quote] -\\markup { - \\tied-lyric #\"Lasciate~i monti\" -} -@end lilypond" - (if (string-contains str "~") - (let* - ((parts (string-split str #\~)) - (tie-str (ly:wide-char->utf-8 #x203f)) - (joined (list-join parts tie-str)) - (join-stencil (interpret-markup layout props tie-str)) - ) +\\markup \\column { + \\tied-lyric #\"Siam navi~all'onde~algenti Lasciate~in abbandono\" + \\tied-lyric #\"Impetuosi venti I nostri~affetti sono\" + \\tied-lyric #\"Ogni diletto~e scoglio Tutta la vita~e~un mar.\" +} +@end lilypond" + (define (replace-ties tie str) + (if (string-contains str "~") + (let* + ((half-space (/ word-space 2)) + (parts (string-split str #\~)) + (tie-str (markup #:hspace half-space + #:musicglyph tie + #:hspace half-space)) + (joined (list-join parts tie-str))) + (make-concat-markup joined)) + str)) + + (define short-tie-regexp (make-regexp "~[^.]~")) + (define (match-short str) (regexp-exec short-tie-regexp str)) + + (define (replace-short str mkp) + (let ((match (match-short str))) + (if (not match) + (make-concat-markup (list + mkp + (replace-ties "ties.lyric.default" str))) + (let ((new-str (match:suffix match)) + (new-mkp (make-concat-markup (list + mkp + (replace-ties "ties.lyric.default" + (match:prefix match)) + (replace-ties "ties.lyric.short" + (match:substring match)))))) + (replace-short new-str new-mkp))))) - (interpret-markup layout - (prepend-alist-chain - 'word-space - (/ (interval-length (ly:stencil-extent join-stencil X)) -3.5) - props) - (make-line-markup joined))) - ;(map (lambda (s) (interpret-markup layout props s)) parts)) - (interpret-markup layout props str))) + (interpret-markup layout + props + (replace-short str (markup)))) (define-public empty-markup (make-simple-markup "")) @@ -1335,9 +1359,10 @@ the line width, where @var{X} is the number of staff spaces. \\header { title = \"My title\" myText = \"Lorem ipsum dolor sit amet, consectetur adipisicing - elit, sed do eiusmod tempor incididunt ut labore et dolore magna - aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco - laboris nisi ut aliquip ex ea commodo consequat.\" + elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud + exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat.\" } \\paper { @@ -1485,8 +1510,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?) @@ -1676,7 +1703,7 @@ Align @var{arg} in @var{axis} direction to the @var{dir} side. " @cindex setting horizontal text alignment -Set horizontal alignment. If @var{dir} is @code{-1}, then it is +Set horizontal alignment. If @var{dir} is @w{@code{-1}}, then it is left-aligned, while @code{+1} is right. Values in between interpolate alignment accordingly. @@ -1856,6 +1883,14 @@ Add padding @var{amount} around @var{arg} in the X@tie{}direction. ;; property ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define-markup-command (property-recursive layout props symbol) + (symbol?) + #:category other + "Print out a warning when a header field markup contains some recursive +markup definition." + (ly:warning "Recursive definition of property ~a detected!" symbol) + empty-stencil) + (define-markup-command (fromproperty layout props symbol) (symbol?) #:category other @@ -1878,11 +1913,12 @@ returns an empty markup. @end lilypond" (let ((m (chain-assoc-get symbol props))) (if (markup? m) - (interpret-markup layout props m) + ;; prevent infinite loops by clearing the interpreted property: + (interpret-markup layout (cons (list (cons symbol `(,property-recursive-markup ,symbol))) props) m) empty-stencil))) (define-markup-command (on-the-fly layout props procedure arg) - (symbol? markup?) + (procedure? markup?) #:category other "Apply the @var{procedure} markup command to @var{arg}. @var{procedure} should take a single argument." @@ -1895,17 +1931,92 @@ 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}." + "Have footnote @var{note} act as an annotation to the markup @var{mkup}. + +@lilypond[verbatim,quote] +\\markup { + \\auto-footnote a b + \\override #'(padding . 0.2) + \\auto-footnote c d +} +@end lilypond +The footnote will not be annotated automatically." (ly:stencil-combine-at-edge (interpret-markup layout props mkup) X RIGHT (ly:make-stencil - `(footnote ,(interpret-markup layout props note)) + `(footnote (gensym "footnote") #f ,(interpret-markup layout props note)) '(0 . 0) '(0 . 0)) 0.0)) +(define-markup-command (auto-footnote layout props mkup note) + (markup? markup?) + #:category other + #:properties ((raise 0.5) + (padding 0.0)) + "Have footnote @var{note} act as an annotation to the markup @var{mkup}. + +@lilypond[verbatim,quote] +\\markup { + \\auto-footnote a b + \\override #'(padding . 0.2) + \\auto-footnote c d +} +@end lilypond +The footnote will be annotated automatically." + (let* ((markup-stencil (interpret-markup layout props mkup)) + (footnote-hash (gensym "footnote")) + (stencil-seed 0) + (gauge-stencil (interpret-markup + layout + props + ((ly:output-def-lookup + layout + 'footnote-numbering-function) + stencil-seed))) + (x-ext (ly:stencil-extent gauge-stencil X)) + (y-ext (ly:stencil-extent gauge-stencil Y)) + (footnote-number + `(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 ,footnote-hash #t ,(interpret-markup layout props note)) + '(0 . 0) + '(0 . 0))))) + (define-markup-command (override layout props new-prop arg) (pair? markup?) #:category other @@ -2032,16 +2143,18 @@ Adjusts @code{baseline-skip} and @code{word-space} accordingly. } @end lilypond" (let* ((ref-size (ly:output-def-lookup layout 'text-font-size 12)) - (text-props (list (ly:output-def-lookup layout 'text-font-defaults))) - (ref-word-space (chain-assoc-get 'word-space text-props 0.6)) - (ref-baseline (chain-assoc-get 'baseline-skip text-props 3)) - (magnification (/ size ref-size))) - (interpret-markup layout - (cons `((baseline-skip . ,(* magnification ref-baseline)) - (word-space . ,(* magnification ref-word-space)) - (font-size . ,(magnification->font-size magnification))) - props) - arg))) + (text-props (list (ly:output-def-lookup layout 'text-font-defaults))) + (ref-word-space (chain-assoc-get 'word-space text-props 0.6)) + (ref-baseline (chain-assoc-get 'baseline-skip text-props 3)) + (magnification (/ size ref-size))) + (interpret-markup + layout + (cons + `((baseline-skip . ,(* magnification ref-baseline)) + (word-space . ,(* magnification ref-word-space)) + (font-size . ,(magnification->font-size magnification))) + props) + arg))) (define-markup-command (fontsize layout props increment arg) (number? markup?) @@ -2060,11 +2173,14 @@ accordingly. smaller } @end lilypond" - (let ((entries (list - (cons 'baseline-skip (* baseline-skip (magstep increment))) - (cons 'word-space (* word-space (magstep increment))) - (cons 'font-size (+ font-size increment))))) - (interpret-markup layout (cons entries props) arg))) + (interpret-markup + layout + (cons + `((baseline-skip . ,(* baseline-skip (magstep increment))) + (word-space . ,(* word-space (magstep increment))) + (font-size . ,(+ font-size increment))) + props) + arg)) (define-markup-command (magnify layout props sz arg) (number? markup?) @@ -2452,13 +2568,13 @@ normal text font, no matter what font was used earlier. @lilypond[verbatim,quote] \\markup { \\huge \\bold \\sans \\caps { - Some text with font overrides + huge bold sans caps \\hspace #2 \\normal-text { - Default text, same font-size + huge normal } \\hspace #2 - More text as before + as before } } @end lilypond" @@ -2655,7 +2771,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 +3085,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 +3542,7 @@ a column containing several lines of text. (parenthesize-stencil markup half-thickness scaled-width angularity padding))) - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Delayed markup evaluation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -3437,7 +3553,7 @@ a column containing several lines of text. " @cindex referencing page numbers in text -Reference to a page number. @var{label} is the label set on the referenced +Reference to a page number. @var{label} is the label set on the referenced page (using the @code{\\label} command), @var{gauge} a markup used to estimate the maximum width of the page number, and @var{default} the value to display when @var{label} is not found." @@ -3451,7 +3567,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))))) @@ -3548,8 +3664,10 @@ Patterns are aligned to the @var{dir} markup. \\fill-with-pattern #1.5 #CENTER - left right \\null \"left-aligned :\" - \\override #'(line-width . 50) \\fill-with-pattern #2 #LEFT : left first - \\override #'(line-width . 50) \\fill-with-pattern #2 #LEFT : left second + \\override #'(line-width . 50) + \\fill-with-pattern #2 #LEFT : left first + \\override #'(line-width . 50) + \\fill-with-pattern #2 #LEFT : left second } @end lilypond" (let* ((pattern-x-extent (ly:stencil-extent (interpret-markup layout props pattern) X)) @@ -3567,6 +3685,28 @@ Patterns are aligned to the @var{dir} markup. #:pattern (1+ count) X space pattern right)))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Replacements +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-markup-command (replace layout props replacements arg) + (list? markup?) + #:category font + " +Used to automatically replace a string by another in the markup @var{arg}. +Each pair of the alist @var{replacements} specifies what should be replaced. +The @code{key} is the string to be replaced by the @code{value} string. + +@lilypond[verbatim, quote] +\\markup \\replace #'((\"thx\" . \"Thanks!\")) thx +@end lilypond" + (interpret-markup + layout + (internal-add-text-replacements + props + replacements) + (markup arg))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Markup list commands ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm index 0cbd96b862..de442ba6d6 100644 --- a/scm/define-music-callbacks.scm +++ b/scm/define-music-callbacks.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; Neil Puttock ;;;; Carl Sorensen @@ -34,6 +34,34 @@ to be used by the sequential-iterator" (make-music 'BarCheck 'origin location)))) +(define (make-volta-set music) + (let* ((alts (ly:music-property music 'elements)) + (lalts (length alts)) + (times (ly:music-property music 'repeat-count))) + (map (lambda (x y) + (make-music + 'SequentialMusic + 'elements + ;; set properties for proper bar numbering + (append + (list (make-music 'AlternativeEvent + 'alternative-dir (if (= y 0) + -1 + 0) + 'alternative-increment + (if (= 0 y) + (1+ (- times + lalts)) + 1))) + (list x) + (if (= y (1- lalts)) + (list (make-music 'AlternativeEvent + 'alternative-dir 1 + 'alternative-increment 0)) + '())))) + alts + (iota lalts)))) + (define (make-ottava-set music) "Set context properties for an ottava bracket." (let ((octavation (ly:music-property music 'ottava-number))) diff --git a/scm/define-music-display-methods.scm b/scm/define-music-display-methods.scm index c0041ba2a9..9631da734d 100644 --- a/scm/define-music-display-methods.scm +++ b/scm/define-music-display-methods.scm @@ -1,7 +1,7 @@ ;;; define-music-display-methods.scm -- data for displaying music ;;; expressions using LilyPond notation. ;;; -;;; Copyright (C) 2005--2011 Nicolas Sceaux +;;; Copyright (C) 2005--2012 Nicolas Sceaux ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -107,11 +107,12 @@ expression." ;;; (define*-public (duration->lily-string ly-duration #:key (prev-duration (*previous-duration*)) (force-duration (*force-duration*)) - (time-factor-numerator (*time-factor-numerator*)) - (time-factor-denominator (*time-factor-denominator*))) + (time-scale (*time-scale*)) + remember) + (if remember (*previous-duration* ly-duration)) (let ((log2 (ly:duration-log ly-duration)) (dots (ly:duration-dot-count ly-duration)) - (num+den (ly:duration-factor ly-duration))) + (scale (ly:duration-scale ly-duration))) (if (or force-duration (not prev-duration) (not (equal? ly-duration prev-duration))) (string-append (case log2 ((-1) "\\breve") @@ -119,54 +120,17 @@ expression." ((-3) "\\maxima") (else (number->string (expt 2 log2)))) (make-string dots #\.) - (let ((num? (not (or (= 1 (car num+den)) - (and time-factor-numerator - (= (car num+den) time-factor-numerator))))) - (den? (not (or (= 1 (cdr num+den)) - (and time-factor-denominator - (= (cdr num+den) time-factor-denominator)))))) - (cond (den? - (format #f "*~a/~a" (car num+den) (cdr num+den))) - (num? - (format #f "*~a" (car num+den))) - (else "")))) + (let ((end-scale (/ scale time-scale))) + (if (= end-scale 1) "" + (format #f "*~a" end-scale)))) ""))) ;;; ;;; post events ;;; -(define post-event? - (make-music-type-predicate - 'AbsoluteDynamicEvent - 'ArpeggioEvent - 'ArticulationEvent - 'BeamEvent - 'BeamForbidEvent - 'BendAfterEvent - 'CrescendoEvent - 'DecrescendoEvent - 'EpisemaEvent - 'ExtenderEvent - 'FingeringEvent - 'GlissandoEvent - 'HarmonicEvent - 'HyphenEvent - 'MultiMeasureTextEvent - 'NoteGroupingEvent - 'PhrasingSlurEvent - 'SlurEvent - 'SostenutoEvent - 'StringNumberEvent - 'StrokeFingerEvent - 'SustainEvent - 'TextScriptEvent - 'TextSpanEvent - 'TieEvent - 'TremoloEvent - 'TrillSpanEvent - 'TupletSpanEvent - 'UnaCordaEvent)) +(define (post-event? m) + (music-is-of-type? m 'post-event)) (define* (event-direction->lily-string event #:optional (required #t)) (let ((direction (ly:music-property event 'direction))) @@ -208,17 +172,22 @@ expression." "" tremolo-type)))) -(define-post-event-display-method ArticulationEvent (event parser) #t - (let ((articulation (ly:music-property event 'articulation-type))) - (case (string->symbol articulation) - ((marcato) "^") - ((stopped) "+") - ((tenuto) "-") - ((staccatissimo) "|") - ((accent) ">") - ((staccato) ".") - ((portato) "_") - (else (format #f "\\~a" articulation))))) +(define-display-method ArticulationEvent (event parser) #t + (let* ((articulation (ly:music-property event 'articulation-type)) + (shorthand + (case (string->symbol articulation) + ((marcato) "^") + ((stopped) "+") + ((tenuto) "-") + ((staccatissimo) "|") + ((accent) ">") + ((staccato) ".") + ((portato) "_") + (else #f)))) + (format #f "~a~:[\\~;~]~a" + (event-direction->lily-string event shorthand) + shorthand + (or shorthand articulation)))) (define-post-event-display-method FingeringEvent (event parser) #t (ly:music-property event 'digit)) @@ -229,16 +198,16 @@ expression." (define-post-event-display-method MultiMeasureTextEvent (event parser) #t (markup->lily-string (ly:music-property event 'text))) -(define-post-event-display-method BendAfterEvent (event parser) #t +(define-post-event-display-method BendAfterEvent (event parser) #f (format #f "\\bendAfter #~a" (ly:music-property event 'delta-step))) (define-post-event-display-method HarmonicEvent (event parser) #f "\\harmonic") -(define-post-event-display-method GlissandoEvent (event parser) #t "\\glissando") -(define-post-event-display-method ArpeggioEvent (event parser) #t "\\arpeggio") +(define-post-event-display-method GlissandoEvent (event parser) #f "\\glissando") +(define-post-event-display-method ArpeggioEvent (event parser) #f "\\arpeggio") (define-post-event-display-method AbsoluteDynamicEvent (event parser) #f (format #f "\\~a" (ly:music-property event 'text))) -(define-post-event-display-method StrokeFingerEvent (event parser) #t +(define-post-event-display-method StrokeFingerEvent (event parser) #f (format #f "\\rightHandFinger #~a" (ly:music-property event 'digit))) (define-span-event-display-method BeamEvent (event parser) #f "[" "]") @@ -282,23 +251,19 @@ expression." 'SequentialMusic elements ((music 'EventChord - elements ((music - 'SkipEvent - duration (ly:make-duration 0 0 0 1)) - (music - 'SlurEvent - span-direction START)))))) - #t) - (with-music-match (?stop (music - 'SequentialMusic - elements ((music - 'EventChord - elements ((music - 'SkipEvent - duration (ly:make-duration 0 0 0 1)) - (music - 'SlurEvent - span-direction STOP)))))) + elements + ((music + 'SlurEvent + span-direction START)))))) + #t) + (with-music-match (?stop (music + 'SequentialMusic + elements ((music + 'EventChord + elements + ((music + 'SlurEvent + span-direction STOP)))))) (format #f "\\appoggiatura ~a" (music->lily-string ?music parser)))))) @@ -317,19 +282,17 @@ expression." 'SequentialMusic elements ((music 'EventChord - elements ((music - 'SkipEvent - duration (ly:make-duration 0 0 0 1)) - (music - 'SlurEvent - span-direction START))) + elements + ((music + 'SlurEvent + span-direction START))) (music 'ContextSpeccedMusic element (music 'OverrideProperty grob-property-path '(stroke-style) grob-value "grace" - symbol 'Stem))))) + symbol 'Flag))))) #t) (with-music-match (?stop (music 'SequentialMusic @@ -338,15 +301,14 @@ expression." element (music 'RevertProperty grob-property-path '(stroke-style) - symbol 'Stem)) + symbol 'Flag)) + (music 'EventChord - elements ((music - 'SkipEvent - duration (ly:make-duration 0 0 0 1)) - (music - 'SlurEvent - span-direction STOP)))))) + elements + ((music + 'SlurEvent + span-direction STOP)))))) (format #f "\\acciaccatura ~a" (music->lily-string ?music parser)))))) (define-extra-display-method GraceMusic (expr parser) @@ -375,12 +337,16 @@ expression." (*max-element-number-before-break*)))) (elements (ly:music-property seq 'elements)) (chord? (make-music-type-predicate 'EventChord)) + (note-or-chord? (make-music-type-predicate 'EventChord 'NoteEvent + 'LyricEvent 'RestEvent + 'ClusterNoteEvent)) (cluster? (make-music-type-predicate 'ClusterNoteEvent)) (note? (make-music-type-predicate 'NoteEvent))) - (format #f "~a~a{~v%~v_~{~a ~}~v%~v_}" + (format #f "~a~a{~v%~v_~{~a~^ ~}~v%~v_}" (if (any (lambda (e) - (and (chord? e) - (any cluster? (ly:music-property e 'elements)))) + (or (cluster? e) + (and (chord? e) + (any cluster? (ly:music-property e 'elements))))) elements) "\\makeClusters " "") @@ -395,15 +361,17 @@ expression." "\\figuremode ") ((any (lambda (chord) (any (make-music-type-predicate 'LyricEvent) - (ly:music-property chord 'elements))) - (filter chord? elements)) + (cons chord + (ly:music-property chord 'elements)))) + (filter note-or-chord? elements)) "\\lyricmode ") ((any (lambda (chord) (any (lambda (event) (and (note? event) (not (null? (ly:music-property event 'drum-type))))) - (ly:music-property chord 'elements))) - (filter chord? elements)) + (cons chord + (ly:music-property chord 'elements)))) + (filter note-or-chord? elements)) "\\drummode ") (else ;; TODO: other modes? "")) @@ -415,7 +383,7 @@ expression." (music->lily-string music parser)) elements)) (if force-line-break 1 0) - (if force-line-break (*indent*) 0)))) + (if force-line-break (*indent*) 1)))) (define-display-method SimultaneousMusic (sim parser) (parameterize ((*indent* (+ 3 (*indent*)))) @@ -443,79 +411,69 @@ Otherwise, return #f." ;;; (define-display-method EventChord (chord parser) - ;; event_chord : simple_element post_events - ;; | command_element + ;; event_chord : command_element ;; | note_chord_element ;; TODO : tagged post_events ;; post_events : ( post_event | tagged_post_event )* ;; tagged_post_event: '-' \tag embedded_scm post_event - (let* ((elements (ly:music-property chord 'elements)) - (simple-elements (filter (make-music-type-predicate - 'NoteEvent 'ClusterNoteEvent 'RestEvent - 'MultiMeasureRestEvent 'SkipEvent 'LyricEvent) - elements))) - (if ((make-music-type-predicate 'StaffSpanEvent 'BreathingEvent) (car elements)) - ;; first, a special case: StaffSpanEvent (\startStaff, \stopStaff) - ;; and BreathingEvent (\breathe) - (music->lily-string (car elements) parser) - (if (and (not (null? simple-elements)) - (null? (cdr simple-elements)) - ;; special case: if this simple_element has any post_events in - ;; its 'articulations list, it should be interpreted instead - ;; 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))) - ;; 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)) - (lily-string (format #f "~a~a~a~{~a ~}" - (music->lily-string simple-element parser) - (duration->lily-string duration) - (if (and ((make-music-type-predicate 'RestEvent) simple-element) - (ly:pitch? (ly:music-property simple-element 'pitch))) - "\\rest" - "") - (map-in-order (lambda (music) - (music->lily-string music parser)) - (filter post-event? elements))))) - (*previous-duration* duration) - lily-string) - (let ((chord-elements (filter (make-music-type-predicate - 'NoteEvent 'ClusterNoteEvent 'BassFigureEvent) - elements)) - (post-events (filter post-event? elements))) - (if (not (null? chord-elements)) - ;; note_chord_element : '<' (notepitch | drumpitch)* '>" duration post_events - (let ((lily-string (format #f "< ~{~a ~}>~a~{~a ~}" - (map-in-order (lambda (music) - (music->lily-string music parser)) - chord-elements) - (duration->lily-string (ly:music-property (car chord-elements) - 'duration)) - (map-in-order (lambda (music) - (music->lily-string music parser)) - post-events)))) - (*previous-duration* (ly:music-property (car chord-elements) 'duration)) - lily-string) - ;; command_element - (format #f "~{~a ~}" (map-in-order (lambda (music) - (music->lily-string music parser)) - elements)))))))) + (let* ((elements (append (ly:music-property chord 'elements) + (ly:music-property chord 'articulations))) + (chord-repeat (ly:music-property chord 'duration))) + (call-with-values + (lambda () + (partition (lambda (m) (music-is-of-type? m 'rhythmic-event)) + elements)) + (lambda (chord-elements other-elements) + (cond ((pair? chord-elements) + ;; note_chord_element : + ;; '<' (notepitch | drumpitch)* '>" duration post_events + (let ((duration (duration->lily-string (ly:music-property + (car chord-elements) + 'duration) + #:remember #t))) + ;; Format duration first so that it does not appear on + ;; chord elements + (format #f "< ~{~a ~}>~a~:{~:[-~;~]~a~^ ~}" + (map-in-order (lambda (music) + (music->lily-string music parser)) + chord-elements) + duration + (map-in-order (lambda (music) + (list + (post-event? music) + (music->lily-string music parser))) + other-elements)))) + ((ly:duration? chord-repeat) + (let ((duration (duration->lily-string chord-repeat + #:remember #t))) + (format #f "q~a~:{~:[-~;~]~a~^ ~}" + duration + (map-in-order (lambda (music) + (list + (post-event? music) + (music->lily-string music parser))) + other-elements)))) + + ((and (= 1 (length other-elements)) + (not (post-event? (car other-elements)))) + (format #f (music->lily-string (car other-elements) parser))) + (else + (format #f "< >~:{~:[-~;~]~a~^ ~}" + (map-in-order (lambda (music) + (list + (post-event? music) + (music->lily-string music parser))) + other-elements)))))))) (define-display-method MultiMeasureRestMusic (mmrest parser) - (let* ((dur (ly:music-property mmrest 'duration)) - (ly (format #f "R~a~{~a ~}" - (duration->lily-string dur) - (map-in-order (lambda (music) - (music->lily-string music parser)) - (ly:music-property mmrest 'articulations))))) - (*previous-duration* dur) - ly)) + (format #f "R~a~{~a~^ ~}" + (duration->lily-string (ly:music-property mmrest 'duration) + #:remember #t) + (map-in-order (lambda (music) + (music->lily-string music parser)) + (ly:music-property mmrest 'articulations)))) (define-display-method SkipMusic (skip parser) (format #f "\\skip ~a" (duration->lily-string (ly:music-property skip 'duration) #:force-duration #t))) @@ -528,7 +486,7 @@ Otherwise, return #f." ;;; (define (simple-note->lily-string event parser) - (format #f "~a~a~a~a~{~a~}" ; pitchname octave !? octave-check articulations + (format #f "~a~a~a~a~a~a~:{~:[-~;~]~a~}" ; pitchname octave !? octave-check duration optional_rest articulations (note-name->lily-string (ly:music-property event 'pitch) parser) (octave->lily-string (ly:music-property event 'pitch)) (let ((forced (ly:music-property event 'force-accidental)) @@ -548,15 +506,26 @@ Otherwise, return #f." (make-string (1- (* -1 octave-check)) #\,)) (else ""))) "")) + (duration->lily-string (ly:music-property event 'duration) + #:remember #t) + (if ((make-music-type-predicate 'RestEvent) event) + "\\rest" "") (map-in-order (lambda (event) - (music->lily-string event parser)) + (list + (post-event? event) + (music->lily-string event parser))) (ly:music-property event 'articulations)))) (define-display-method NoteEvent (note parser) (cond ((not (null? (ly:music-property note 'pitch))) ;; note (simple-note->lily-string note parser)) ((not (null? (ly:music-property note 'drum-type))) ;; drum - (format #f "~a" (ly:music-property note 'drum-type))) + (format #f "~a~a~{~a~}" (ly:music-property note 'drum-type) + (duration->lily-string (ly:music-property note 'duration) + #:remember #t) + (map-in-order (lambda (event) + (music->lily-string event parser)) + (ly:music-property note 'articulations)))) (else ;; unknown? ""))) @@ -566,13 +535,24 @@ Otherwise, return #f." (define-display-method RestEvent (rest parser) (if (not (null? (ly:music-property rest 'pitch))) (simple-note->lily-string rest parser) - "r")) + (format #f "r~a~{~a~}" + (duration->lily-string (ly:music-property rest 'duration) + #:remember #t) + (map-in-order (lambda (event) + (music->lily-string event parser)) + (ly:music-property rest 'articulations))))) (define-display-method MultiMeasureRestEvent (rest parser) - "R") + (string-append "R" (duration->lily-string (ly:music-property rest 'duration) + #:remember #t))) (define-display-method SkipEvent (rest parser) - "s") + (format #f "s~a~{~a~}" + (duration->lily-string (ly:music-property rest 'duration) + #:remember #t) + (map-in-order (lambda (event) + (music->lily-string event parser)) + (ly:music-property rest 'articulations)))) (define-display-method RepeatedChord (chord parser) (music->lily-string (ly:music-property chord 'element) parser)) @@ -644,18 +624,21 @@ Otherwise, return #f." (if (null? bracket-stop) "" "]")))) (define-display-method LyricEvent (lyric parser) - (let ((text (ly:music-property lyric 'text))) - (if (or (string? text) - (eqv? (first text) simple-markup)) - ;; a string or a simple markup - (let ((string (if (string? text) - text - (second text)))) - (if (string-match "(\"| |[0-9])" string) - ;; TODO check exactly in which cases double quotes should be used - (format #f "~s" string) - string)) - (markup->lily-string text)))) + (format "~a~{~a~^ ~}" + (let ((text (ly:music-property lyric 'text))) + (if (or (string? text) + (eqv? (first text) simple-markup)) + ;; a string or a simple markup + (let ((string (if (string? text) + text + (second text)))) + (if (string-match "(\"| |[0-9])" string) + ;; TODO check exactly in which cases double quotes should be used + (format #f "~s" string) + string)) + (markup->lily-string text))) + (map-in-order (lambda (m) (music->lily-string m parser)) + (ly:music-property lyric 'articulations)))) (define-display-method BreathingEvent (event parser) "\\breathe") @@ -678,10 +661,17 @@ Otherwise, return #f." (define-display-method TimeScaledMusic (times parser) (let* ((num (ly:music-property times 'numerator)) (den (ly:music-property times 'denominator)) - (nd-gcd (gcd num den))) + (scale (/ num den)) + (dur (*previous-duration*)) + (time-scale (*time-scale*))) + (parameterize ((*force-line-break* #f) - (*time-factor-numerator* (/ num nd-gcd)) - (*time-factor-denominator* (/ den nd-gcd))) + (*previous-duration* + (ly:make-duration (ly:duration-log dur) + (ly:duration-dot-count dur) + (* (ly:duration-scale dur) + scale))) + (*time-scale* (* time-scale scale))) (format #f "\\times ~a/~a ~a" num den @@ -697,18 +687,21 @@ Otherwise, return #f." ;;; Repeats ;;; +(define-display-method AlternativeEvent (alternative parser) "") + (define (repeat->lily-string expr repeat-type parser) - (format #f "\\repeat ~a ~a ~a ~a" - repeat-type - (ly:music-property expr 'repeat-count) - (music->lily-string (ly:music-property expr 'element) parser) - (let ((alternatives (ly:music-property expr 'elements))) - (if (null? alternatives) - "" - (format #f "\\alternative { ~{~a ~}}" - (map-in-order (lambda (music) - (music->lily-string music parser)) - alternatives)))))) + (let* ((main (music->lily-string (ly:music-property expr 'element) parser))) + (format #f "\\repeat ~a ~a ~a ~a" + repeat-type + (ly:music-property expr 'repeat-count) + main + (let ((alternatives (ly:music-property expr 'elements))) + (if (null? alternatives) + "" + (format #f "\\alternative { ~{~a ~}}" + (map-in-order (lambda (music) + (music->lily-string music parser)) + alternatives))))))) (define-display-method VoltaRepeatedMusic (expr parser) (repeat->lily-string expr "volta" parser)) @@ -720,35 +713,29 @@ Otherwise, return #f." (repeat->lily-string expr "percent" parser)) (define-display-method TremoloRepeatedMusic (expr parser) - (let* ((count (ly:music-property expr 'repeat-count)) - (dots (if (= 0 (modulo count 3)) 0 1)) - (shift (- (log2 (if (= 0 dots) - (/ (* count 2) 3) - count)))) - (element (ly:music-property expr 'element)) - (den-mult 1)) - (if (eqv? (ly:music-property element 'name) 'SequentialMusic) - (begin - (set! shift (1- shift)) - (set! den-mult (length (ly:music-property element 'elements))))) - (music-map (lambda (m) - (let ((duration (ly:music-property m 'duration))) - (if (ly:duration? duration) - (let* ((dlog (ly:duration-log duration)) - (ddots (ly:duration-dot-count duration)) - (dfactor (ly:duration-factor duration)) - (dnum (car dfactor)) - (dden (cdr dfactor))) - (set! (ly:music-property m 'duration) - (ly:make-duration (- dlog shift) - ddots ;;(- ddots dots) ; ???? - dnum - (/ dden den-mult)))))) - m) - element) + (let* ((main (ly:music-property expr 'element)) + (children (if (music-is-of-type? main 'sequential-music) + ;; \repeat tremolo n { ... } + (length (extract-named-music main '(EventChord + NoteEvent))) + ;; \repeat tremolo n c4 + 1)) + (times (ly:music-property expr 'repeat-count)) + + ;; # of dots is equal to the 1 in bitwise representation (minus 1)! + (dots (1- (logcount (* times children)))) + ;; The remaining missing multiplicator to scale the notes by + ;; times * children + (mult (/ (* times children (ash 1 dots)) (1- (ash 2 dots)))) + (shift (- (ly:intlog2 (floor mult))))) + (set! main (ly:music-deep-copy main)) + ;; Adjust the time of the notes + (ly:music-compress main (ly:make-moment children 1)) + ;; Adjust the displayed note durations + (shift-duration-log main (- shift) (- dots)) (format #f "\\repeat tremolo ~a ~a" - count - (music->lily-string element parser)))) + times + (music->lily-string main parser)))) ;;; ;;; Contexts @@ -856,10 +843,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))) @@ -879,8 +864,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) "" @@ -901,8 +887,8 @@ Otherwise, return #f." num den (new-line->lily-string)) (format #f - "#(set-time-signature ~a ~a '~a)~a" - num den structure + "\\time #'~a ~a/~a~a" + structure num den (new-line->lily-string))))) ;;; \melisma and \melismaEnd diff --git a/scm/define-music-properties.scm b/scm/define-music-properties.scm index 5e11593636..42aa0e0238 100644 --- a/scm/define-music-properties.scm +++ b/scm/define-music-properties.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -30,6 +30,10 @@ (absolute-octave ,integer? "The absolute octave for a octave check note.") (alteration ,number? "Alteration for figured bass.") + (alternative-dir ,ly:dir? "Indicates if an AlternativeMusic is the +First (-1), Middle (0), or Last (1) of group of alternate endings.") + (alternative-increment ,integer? "The number of times an alternative's +lettering should be incremented.") (articulation-type ,string? "Key for script definitions alist. TODO: Consider making type into symbol.") @@ -41,6 +45,8 @@ this @code{\\lyricsto} section.") (with @code{+} sign).") (augmented-slash ,boolean? "This figure is for an augmented figured bass (back-slashed number).") + (automatically-numbered ,boolean? "Should a footnote be automatically +numbered?") (autosplit-end ,boolean? "Duration of event was truncated by automatic splitting in @code{Completion_heads_engraver}.") @@ -58,8 +64,10 @@ TODO: Use SpanEvents?") cautionary accidental.") (change-to-id ,string? "Name of the context to change to.") (change-to-type ,symbol? "Type of the context to change to.") + (class ,symbol? "The class name of an event class.") (compress-procedure ,procedure? "Compress this music expression. Arg@tie{}1: the music, arg@tie{}2: factor.") + (context ,ly:context? "The context to which an event is sent.") (context-id ,string? "Name of context.") (context-type ,symbol? "Type of context.") (create-new ,boolean? "Create a fresh context.") @@ -82,6 +90,7 @@ simultaneous music, or the alternatives of repeated music.") a sequential iterator. Takes a single music parameter.") (error-found ,boolean? "If true, a parsing error was found in this expression.") + (events ,list? "A list of events contained in this event.") (figure ,integer? "A bass figure.") (footnote-text ,markup? "Text to appear in a footnote.") @@ -94,6 +103,7 @@ always be printed on this note.") property, e.g., @code{(beamed-lengths details)}.") (grob-value ,scheme? "The value of the grob property to set.") + (id ,symbol? "The ID of an event.") (input-tag ,scheme? "Arbitrary marker to relate input and output.") (inversion ,boolean? "If set, this chord note is inverted.") (iterator-ctor ,procedure? "Function to construct a @@ -109,6 +119,9 @@ This property can only be defined as initializer in whether to allow, forbid or force a line break.") (metronome-count ,number-or-pair? "How many beats in a minute?") + (moment ,ly:moment? "The moment at which an event happens.") + (music-cause ,ly:music? "The music object that is the cause of +an event.") (name ,symbol? "Name of this music object.") (no-continuation ,boolean? "If set, disallow continuation lines.") @@ -117,6 +130,8 @@ whether to allow, forbid or force a line break.") (octavation ,integer? "This pitch was octavated by how many octaves? For chord inversions, this is negative.") (once ,boolean? "Apply this operation only during one time step?") + (ops ,scheme? "The operations to apply during the creation of a +context.") (origin ,ly:input-location? "Where was this piece of music defined?") (original-chord ,ly:music? "Original chord of a repeated chord. Used by repeated chords in \\relative mode, to determine the first note octave") @@ -144,6 +159,7 @@ on some grob property.") It must take a single argument, being the context.") (property-operations ,list? "Do these operations for instantiating the context.") + (property-path ,symbol? "The path of a property.") (quoted-context-id ,string? "The ID of the context to direct quotes to, e.g., @code{cue}.") @@ -198,6 +214,8 @@ engraver this music expression is processed.") (value ,scheme? "Assignment value for a translation property.") (void ,boolean? "If this property is @code{#t}, then the music expression is to be discarded by the toplevel music handler.") + (volta-repeats ,list? "A list that is transformed into a volta +repeat element list.") (what ,symbol? "What to change for auto-change. diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 8a3676b2a1..0b828c1516 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -16,6 +16,9 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . +; for define-safe-public when byte-compiling using Guile V2 +(use-modules (scm safe-utility-defs)) + ;; TODO: should link back into user manual. (define-public music-descriptions @@ -26,7 +29,12 @@ Syntax: @var{note}@code{\\x}, where @code{\\x} is a dynamic mark like @code{\\ppp} or @code{\\sfz}. A complete list is in file @file{ly/@/dynamic-scripts-init.ly}.") - (types . (general-music event dynamic-event absolute-dynamic-event)) + (types . (general-music post-event event dynamic-event absolute-dynamic-event)) + )) + + (AlternativeEvent + . ((description . "Create a alternative event.") + (types . (general-music event alternative-event)) )) (AnnotateOutputEvent @@ -55,8 +63,8 @@ context, and 3.@tie{}the context where @var{func} is called.") (ArpeggioEvent . ((description . "Make an arpeggio on this note. -Syntax: @var{note}@code{-\\arpeggio}") - (types . (general-music arpeggio-event event)) +Syntax: @w{@var{note}@code{-\\arpeggio}}") + (types . (general-music post-event arpeggio-event event)) )) ;; todo: use articulation-event for slur as well. @@ -67,9 +75,9 @@ Syntax: @var{note}@code{-\\arpeggio}") Syntax: @var{note}@code{x}@code{y}, where @code{x} is a direction (@code{^} for up or @code{_} for down), or LilyPond's choice (no direction specified), and where @code{y} is an articulation -(such as @code{-.}, @code{->}, @code{\\tenuto}, @code{\\downbow}). +(such as @w{@code{-.}}, @w{@code{->}}, @code{\\tenuto}, @code{\\downbow}). See the Notation Reference for details.") - (types . (general-music event articulation-event script-event)) + (types . (general-music post-event event articulation-event script-event)) )) (AutoChangeMusic @@ -97,22 +105,22 @@ the start of the measure.") . ((description . "Start or stop a beam. Syntax for manual control: @code{c8-[ c c-] c8}") - (types . (general-music event beam-event span-event)) + (types . (general-music post-event event beam-event span-event)) )) (BeamForbidEvent . ((description . "Specify that a note may not auto-beamed.") - (types . (general-music event beam-forbid-event)) + (types . (general-music post-event event beam-forbid-event)) )) (BreakDynamicSpanEvent . ((description . "End an alignment spanner for dynamics here.") - (types . (general-music break-span-event break-dynamic-span-event event)) + (types . (general-music post-event break-span-event break-dynamic-span-event event)) )) (BendAfterEvent - . ((description . "A drop/fall/doit jazz articulation.") - (types . (general-music bend-after-event event)))) + . ((description . "A drop/@/fall/@/doit jazz articulation.") + (types . (general-music post-event bend-after-event event)))) (BreathingEvent . ((description . "Create a @q{breath mark} or @q{comma}. @@ -125,6 +133,7 @@ Syntax: @var{note}@code{\\breathe}") (ClusterNoteEvent . ((description . "A note that is part of a cluster.") ;; not a note-event, to ensure that Note_heads_engraver doesn't eat it. + (iterator-ctor . ,ly:rhythmic-music-iterator::constructor) (types . (general-music cluster-note-event melodic-event rhythmic-event event)) )) @@ -160,7 +169,7 @@ Syntax: @var{note}@code{\\<} @dots{} @var{note}@code{\\!} An alternative syntax is @var{note}@code{\\cr} @dots{} @var{note}@code{\\endcr}.") - (types . (general-music span-event span-dynamic-event crescendo-event + (types . (general-music post-event span-event span-dynamic-event crescendo-event event)) )) @@ -171,7 +180,7 @@ Syntax: @var{note}@code{\\>} @dots{} @var{note}@code{\\!} An alternative syntax is @var{note}@code{\\decr} @dots{} @var{note}@code{\\enddecr}.") - (types . (general-music span-event span-dynamic-event decrescendo-event + (types . (general-music post-event span-event span-dynamic-event decrescendo-event event)) )) @@ -182,7 +191,7 @@ An alternative syntax is @var{note}@code{\\decr} @dots{} (EpisemaEvent . ((description . "Begin or end an episema.") - (types . (general-music span-event event episema-event)) + (types . (general-music post-event span-event event episema-event)) )) (Event @@ -191,9 +200,17 @@ An alternative syntax is @var{note}@code{\\decr} @dots{} )) (EventChord - . ((description . "Internally used to group a set of events.") + . ((description . "Explicitly entered chords. + +When iterated, @code{elements} are converted to events at the current +timestep, followed by any @code{articulations}. Per-chord postevents +attached by the parser just follow any rhythmic events in +@code{elements} instead of utilizing @code{articulations}. + +An unexpanded chord repetition @samp{q} is recognizable by having its +duration stored in @code{duration}.") (iterator-ctor . ,ly:event-chord-iterator::constructor) - (length-callback . ,ly:music-sequence::maximum-length-callback) + (length-callback . ,ly:music-sequence::event-chord-length-callback) (to-relative-callback . ,ly:music-sequence::event-chord-relative-callback) (types . (general-music event-chord simultaneous-music)) @@ -201,12 +218,12 @@ An alternative syntax is @var{note}@code{\\decr} @dots{} (ExtenderEvent . ((description . "Extend lyrics.") - (types . (general-music extender-event event)) + (types . (general-music post-event extender-event event)) )) (FingeringEvent . ((description . "Specify what finger to use for this note.") - (types . (general-music fingering-event event)) + (types . (general-music post-event fingering-event event)) )) (FootnoteEvent @@ -216,7 +233,7 @@ An alternative syntax is @var{note}@code{\\decr} @dots{} (GlissandoEvent . ((description . "Start a glissando on this note.") - (types . (general-music glissando-event event)) + (types . (general-music post-event glissando-event event)) )) (GraceMusic @@ -229,12 +246,12 @@ An alternative syntax is @var{note}@code{\\decr} @dots{} (HarmonicEvent . ((description . "Mark a note as harmonic.") - (types . (general-music event harmonic-event)) + (types . (general-music post-event event harmonic-event)) )) (HyphenEvent . ((description . "A hyphen between lyric syllables.") - (types . (general-music hyphen-event event)) + (types . (general-music post-event hyphen-event event)) )) (KeyChangeEvent @@ -254,7 +271,7 @@ Syntax: @code{\\key} @var{name} @var{scale}") . ((description . "Don't damp this chord. Syntax: @var{note}@code{\\laissezVibrer}") - (types . (general-music event laissez-vibrer-event)) + (types . (general-music post-event event laissez-vibrer-event)) )) (LigatureEvent @@ -279,6 +296,7 @@ Syntax: @code{\\lyricsto} @var{voicename} @var{lyrics}") (LyricEvent . ((description . "A lyric syllable. Must be entered in lyrics mode, i.e., @code{\\lyrics @{ twinkle4 twinkle4 @} }.") + (iterator-ctor . ,ly:rhythmic-music-iterator::constructor) (types . (general-music rhythmic-event lyric-event event)) )) @@ -313,7 +331,7 @@ Syntax: @code{R2.*4} for 4 measures in 3/4 time.") Syntax: @code{R-\\markup @{ \\roman \"bla\" @}} Note the explicit font switch.") - (types . (general-music event multi-measure-text-event)) + (types . (general-music post-event event multi-measure-text-event)) )) (Music @@ -322,14 +340,20 @@ Note the explicit font switch.") )) (NoteEvent - . ((description . "A note.") + . ((description . "A note. + +Outside of chords, any events in @code{articulations} with a listener +are broadcast like chord articulations, the others are retained. + +For iteration inside of chords, @xref{EventChord}.") + (iterator-ctor . ,ly:rhythmic-music-iterator::constructor) (types . (general-music event note-event rhythmic-event melodic-event)) )) (NoteGroupingEvent . ((description . "Start or stop grouping brackets.") - (types . (general-music event note-grouping-event)) + (types . (general-music post-event event note-grouping-event)) )) (OttavaMusic @@ -404,7 +428,7 @@ goes down).") Syntax: @var{note}@code{\\(} and @var{note}@code{\\)}") (spanner-id . "") - (types . (general-music span-event event phrasing-slur-event)) + (types . (general-music post-event span-event event phrasing-slur-event)) )) (PropertySet @@ -447,15 +471,6 @@ Syntax: @code{\\unset @var{context}.@var{prop}}") (types . (music-wrapper-music general-music relative-octave-music)) )) - (RepeatedChord - . ((description . "A chord repetition") - (to-relative-callback . ,ly:music-sequence::repeated-chord-relative-callback) - (iterator-ctor . ,ly:music-wrapper-iterator::constructor) - (start-callback . ,ly:music-wrapper::start-callback) - (length-callback . ,ly:music-wrapper::length-callback) - (types . (general-music music-wrapper-music)) - )) - (RepeatedMusic . ((description . "Repeat music in different ways.") (types . (general-music repeated-music)) @@ -468,13 +483,14 @@ Syntax: @code{\\unset @var{context}.@var{prop}}") (RepeatTieEvent . ((description . "Ties for starting a second volta bracket.") - (types . (general-music event repeat-tie-event)) + (types . (general-music post-event event repeat-tie-event)) )) (RestEvent . ((description . "A Rest. Syntax: @code{r4} for a quarter rest.") + (iterator-ctor . ,ly:rhythmic-music-iterator::constructor) (types . (general-music event rhythmic-event rest-event)) )) @@ -518,6 +534,7 @@ Syntax: @code{\\simultaneous @{ @dots{} @}} or @code{<< @dots{} >>}") print anything. Syntax: @code{s4} for a skip equivalent to a quarter rest.") + (iterator-ctor . ,ly:rhythmic-music-iterator::constructor) (types . (general-music event rhythmic-event skip-event)) )) @@ -528,7 +545,7 @@ print anything, and also does not create staves or voices implicitly. Syntax: @code{\\skip} @var{duration}") (length-callback . ,ly:music-duration-length) (iterator-ctor . ,ly:simple-music-iterator::constructor) - (types . (general-music event rhythmic-event skip-event)) + (types . (general-music event skip-event)) )) (SlurEvent @@ -536,7 +553,7 @@ Syntax: @code{\\skip} @var{duration}") Syntax: @var{note}@code{(} and @var{note}@code{)}") (spanner-id . "") - (types . (general-music span-event event slur-event)) + (types . (general-music post-event span-event event slur-event)) )) (SoloOneEvent @@ -553,7 +570,7 @@ Syntax: @var{note}@code{(} and @var{note}@code{)}") (SostenutoEvent . ((description . "Depress or release sostenuto pedal.") - (types . (general-music event pedal-event sostenuto-event)) + (types . (general-music post-event event pedal-event sostenuto-event)) )) (SpacingSectionEvent @@ -575,19 +592,19 @@ different time than stopped.") . ((description . "Specify on which string to play this note. Syntax: @code{\\@var{number}}") - (types . (general-music string-number-event event)) + (types . (general-music post-event string-number-event event)) )) (StrokeFingerEvent . ((description . "Specify with which finger to pluck a string. Syntax: @code{\\rightHandFinger @var{text}}") - (types . (general-music stroke-finger-event event)) + (types . (general-music post-event stroke-finger-event event)) )) (SustainEvent . ((description . "Depress or release sustain pedal.") - (types . (general-music event pedal-event sustain-event)) + (types . (general-music post-event event pedal-event sustain-event)) )) (TempoChangeEvent @@ -597,20 +614,20 @@ Syntax: @code{\\rightHandFinger @var{text}}") (TextScriptEvent . ((description . "Print text.") - (types . (general-music script-event text-script-event event)) + (types . (general-music post-event script-event text-script-event event)) )) (TextSpanEvent . ((description . "Start a text spanner, for example, an octavation.") - (types . (general-music span-event event text-span-event)) + (types . (general-music post-event span-event event text-span-event)) )) (TieEvent . ((description . "A tie. -Syntax: @var{note}@code{-~}") - (types . (general-music tie-event event)) +Syntax: @w{@var{note}@code{-~}}") + (types . (general-music post-event tie-event event)) )) (TimeScaledMusic @@ -643,7 +660,7 @@ Syntax: @code{\\times @var{fraction} @var{music}}, e.g., (TremoloEvent . ((description . "Unmeasured tremolo.") - (types . (general-music event tremolo-event)) + (types . (general-music post-event event tremolo-event)) )) (TremoloRepeatedMusic @@ -662,18 +679,18 @@ Syntax: @code{\\times @var{fraction} @var{music}}, e.g., (TrillSpanEvent . ((description . "Start a trill spanner.") - (types . (general-music span-event event trill-span-event)) + (types . (general-music post-event span-event event trill-span-event)) )) (TupletSpanEvent . ((description . "Used internally to signal where tuplet brackets start and stop.") - (types . (tuplet-span-event span-event event general-music)) + (types . (tuplet-span-event span-event event general-music post-event)) )) (UnaCordaEvent . ((description . "Depress or release una-corda pedal.") - (types . (general-music event pedal-event una-corda-event)) + (types . (general-music post-event event pedal-event una-corda-event)) )) (UnfoldedRepeatedMusic @@ -709,6 +726,7 @@ Syntax: @code{\\\\}") (VoltaRepeatedMusic . ((description . "Repeats with alternatives placed sequentially.") (iterator-ctor . ,ly:volta-repeat-iterator::constructor) + (elements-callback . ,make-volta-set) (start-callback . ,ly:repeated-music::first-start) (length-callback . ,ly:repeated-music::volta-music-length) (types . (general-music repeated-music volta-repeated-music)) diff --git a/scm/define-note-names.scm b/scm/define-note-names.scm index 1c8fef1df9..fbef9183f8 100644 --- a/scm/define-note-names.scm +++ b/scm/define-note-names.scm @@ -1,22 +1,22 @@ ;;;; Common note names in various languages. ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010--2011 Valentin Villenave et al: +;;;; Copyright (C) 2010--2012 Valentin Villenave et al: ;;;; -;;;; Copyright (C) 1996--2011 Han-Wen Nienhuys (Nederlands) -;;;; Copyright (C) 1998--2011 Jaume Obrador (Catalan) -;;;; Copyright (C) 1997--2011 Roland Meier +;;;; Copyright (C) 1996--2012 Han-Wen Nienhuys (Nederlands) +;;;; Copyright (C) 1998--2012 Jaume Obrador (Catalan) +;;;; Copyright (C) 1997--2012 Roland Meier ;;;; Bjoern Jacke (Deutsch) -;;;; Copyright (C) 1996--2011 Han-Wen Nienhuys (English) -;;;; Copyright (C) 2002--2011 Carlos García Suárez +;;;; Copyright (C) 1996--2012 Han-Wen Nienhuys (English) +;;;; Copyright (C) 2002--2012 Carlos García Suárez ;;;; Maximiliano G. G. (Espanol) -;;;; Copyright (C) 1998--2011 Paolo Zuliani +;;;; Copyright (C) 1998--2012 Paolo Zuliani ;;;; Eric Wurbel (Italiano) -;;;; Copyright (C) 1998--2011 Arvid Grøtting (Norsk) -;;;; Copyright (C) 2004--2011 Pedro Kröger (Portugues) -;;;; Copyright (C) 2001--2011 Heikki Junes (Suomi) -;;;; Copyright (C) 1997--2011 Mats Bengtsson (Svenska) -;;;; Copyright (C) 2004--2011 Hendrik Maryns (Vlaams) +;;;; Copyright (C) 1998--2012 Arvid Grøtting (Norsk) +;;;; Copyright (C) 2004--2012 Pedro Kröger (Portugues) +;;;; Copyright (C) 2001--2012 Heikki Junes (Suomi) +;;;; Copyright (C) 1997--2012 Mats Bengtsson (Svenska) +;;;; Copyright (C) 2004--2012 Hendrik Maryns (Vlaams) ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -965,8 +965,7 @@ '()))) (if (pair? alist) (begin - (if (ly:get-option 'verbose) - (ly:message (_ "Using `~a' note names...") str)) + (ly:debug (_ "Using `~a' note names...") str) (set! pitchnames alist) (ly:parser-set-note-names parser alist)) (ly:warning (_ "Could not find language `~a'. Ignoring.") str)))) diff --git a/scm/define-stencil-commands.scm b/scm/define-stencil-commands.scm index 7b27d5201b..fddd6855b2 100644 --- a/scm/define-stencil-commands.scm +++ b/scm/define-stencil-commands.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2005--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -21,30 +21,24 @@ (define-public (ly:all-stencil-commands) "Return the list of stencil commands that can be defined in the output modules (@file{output-*.scm})." - '(beam - bezier-sandwich - blank - bracket + '(blank char circle dashed-line - dashed-slur - dot draw-line ellipse embedded-ps embedded-svg + end-enclosing-id-node glyph-string grob-cause named-glyph no-origin - oval page-link path partial-ellipse placebox polygon - repeat-slash resetcolor resetrotation resetscale @@ -52,11 +46,11 @@ defined in the output modules (@file{output-*.scm})." setcolor setrotation setscale + start-enclosing-id-node text unknown url-link utf-8-string - zigzag-line )) ;; TODO: @@ -64,11 +58,12 @@ defined in the output modules (@file{output-*.scm})." (define-public (ly:all-output-backend-commands) "Return the list of extra output backend commands that -are used internally in @file{lily/stencil-interpret.cc}." +are used internally in @file{lily/@/stencil-interpret.cc}." '(color combine-stencil delay-stencil-evaluation footnote + id rotate-stencil scale-stencil translate-stencil diff --git a/scm/define-woodwind-diagrams.scm b/scm/define-woodwind-diagrams.scm index 29825fd5a5..f60ba5a43b 100644 --- a/scm/define-woodwind-diagrams.scm +++ b/scm/define-woodwind-diagrams.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010--2011 Mike Solomon +;;;; Copyright (C) 2010--2012 Mike Solomon ;;;; Clarinet drawings copied from diagrams created by ;;;; Gilles Thibault ;;;; diff --git a/scm/display-lily.scm b/scm/display-lily.scm index 302259fa23..16f809fc8b 100644 --- a/scm/display-lily.scm +++ b/scm/display-lily.scm @@ -2,7 +2,7 @@ ;;; ;;; ;;; -;;; Copyright (C) 2005--2011 Nicolas Sceaux +;;; Copyright (C) 2005--2012 Nicolas Sceaux ;;; ;;; - This file defines the procedures used to define display methods for each @@ -82,9 +82,12 @@ display method will be called." (define* (tweaks->lily-string expr #:optional (post-event? #f)) (format #f "~{~a ~}" (map (lambda (tweak) - (format #f "~a\\tweak #'~a #~a" + (format #f "~a\\tweak ~a #~a" (if post-event? "-" "") - (car tweak) + (if (pair? (car tweak)) + (format #f "~a #'~a" + (caar tweak) (cdar tweak)) + (format #f "#'~a" (car tweak))) (scheme-expr->lily-string (cdr tweak)))) (ly:music-property expr 'tweaks)))) @@ -282,8 +285,7 @@ inside body." (define *max-element-number-before-break* (make-parameter 6)) ;; \times factor (used in durations) -(define *time-factor-denominator* (make-parameter #f)) -(define *time-factor-numerator* (make-parameter #f)) +(define *time-scale* (make-parameter 1)) (define *current-context* (make-parameter 'Bottom)) diff --git a/scm/display-woodwind-diagrams.scm b/scm/display-woodwind-diagrams.scm index a2b037e294..1737890f5f 100644 --- a/scm/display-woodwind-diagrams.scm +++ b/scm/display-woodwind-diagrams.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010--2011 Mike Solomon +;;;; Copyright (C) 2010--2012 Mike Solomon ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -29,6 +29,8 @@ ;; Utility functions +(use-modules (ice-9 optargs)) + (define (return-1 x) 1.0) (define (make-spreadsheet parameter-list) @@ -1822,20 +1824,14 @@ radius))) (assoc-get 'stencils stencil-alist)))) -(define-public (print-keys instrument) - (let* - ((chosen-instrument - (begin - (format #t "\nPrinting keys for: ~a\n" instrument) - (assoc-get instrument woodwind-data-alist))) - (key-list (list-all-possible-keys (assoc-get 'keys chosen-instrument)))) - (define (key-list-loop key-list) - (if (null? key-list) - 0 - (begin - (format #t "~a\n ~a\n" (caar key-list) (cdar key-list)) - (key-list-loop (cdr key-list))))) - (key-list-loop key-list))) +(define*-public (print-keys instrument #:optional (port (current-output-port))) + (format port "\nPrinting keys for: ~a\n" instrument) + (let ((chosen-instrument (assoc-get instrument woodwind-data-alist))) + (do ((key-list + (list-all-possible-keys (assoc-get 'keys chosen-instrument)) + (cdr key-list))) + ((null? key-list)) + (format port "~a\n ~a\n" (caar key-list) (cdar key-list))))) (define-public (get-woodwind-key-list instrument) (list-all-possible-keys-verbose @@ -1843,24 +1839,17 @@ 'keys (assoc-get instrument woodwind-data-alist)))) -(define-public (print-keys-verbose instrument) - (let* - ((chosen-instrument - (begin - (format #t "\nPrinting keys in verbose mode for: ~a\n" instrument) - (assoc-get instrument woodwind-data-alist))) - (key-list - (list-all-possible-keys-verbose (assoc-get 'keys chosen-instrument)))) - (define (key-list-loop key-list) - (if (null? key-list) - 0 - (begin - (format #t "~a\n" (caar key-list)) - (map (lambda (x) - (format #t " possibilities for ~a:\n ~a\n" (car x) (cdr x))) - (cdar key-list)) - (key-list-loop (cdr key-list))))) - (key-list-loop key-list))) +(define*-public (print-keys-verbose instrument + #:optional (port (current-output-port))) + (format port "\nPrinting keys in verbose mode for: ~a\n" instrument) + (do ((key-list (get-woodwind-key-list instrument) + (cdr key-list))) + ((null? key-list)) + (format port "~a\n" (caar key-list)) + (for-each + (lambda (x) + (format port " possibilities for ~a:\n ~a\n" (car x) (cdr x))) + (cdar key-list)))) (define-markup-command (woodwind-diagram layout props instrument user-draw-commands) @@ -1872,7 +1861,8 @@ "Make a woodwind-instrument diagram. For example, say @example -\\markup \\woodwind-diagram #'oboe #'((lh . (d ees)) (cc . (five3qT1q)) (rh . (gis))) +\\markup \\woodwind-diagram + #'oboe #'((lh . (d ees)) (cc . (five3qT1q)) (rh . (gis))) @end example @noindent diff --git a/scm/document-backend.scm b/scm/document-backend.scm index 4d55382fc4..71ba5a274f 100644 --- a/scm/document-backend.scm +++ b/scm/document-backend.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify diff --git a/scm/document-context-mods.scm b/scm/document-context-mods.scm new file mode 100644 index 0000000000..d115389a1f --- /dev/null +++ b/scm/document-context-mods.scm @@ -0,0 +1,104 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2011--2012 Neil Puttock +;;;; +;;;; 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 . + +(use-modules (ice-9 format)) + +(define (grob-property-path path) + (string-join (map symbol->string path) " ")) + +(define (document-mod-list op) + (let ((tag (car op)) + (name-sym (cadr op)) + (args (cddr op))) + (case tag + ((push) + (let ((value (car args)) + (path (cdr args))) + (string-append + "@item Sets " + (format "grob property @code{~a} " + (grob-property-path path)) + (format "in @code{@rinternals{~a}} to ~a." + name-sym + (scm->texi value)) + "\n"))) + ((pop) + (string-append + "@item Reverts " + (format "grob property @code{~a} " + (grob-property-path (car args))) + (format "in @code{@rinternals{~a}}." + name-sym) + "\n")) + ((assign) + (format "@item Sets translator property @code{~a} to ~a.\n" + name-sym + (scm->texi (car args)))) + ((unset) + (format "@item Unsets translator property @code{~a}.\n" + name-sym)) + ((consists) + (format "@item Adds @code{@rinternals{~a}}.\n" name-sym)) + ((remove) + (format "@item Removes @code{@rinternals{~a}}.\n" name-sym)) + (else "")))) + +(define (document-context-mod context-mod-pair) + (let* ((name-sym (car context-mod-pair)) + (mod-list (ly:get-context-mods (cdr context-mod-pair))) + (docstring (filter (lambda (mod) + (eq? (car mod) 'description)) + mod-list))) + (format + "@item @code{~a} +@findex ~a +~a +@itemize +~{~a ~} +@end itemize +" + name-sym + name-sym + (if (pair? docstring) + (cadar docstring) + (begin + (ly:warning "context modification `~a' not documented." name-sym) + "(undocumented; fixme)")) + (map document-mod-list mod-list)))) + +(define (document-mod obj-pair) + (cond + ((ly:context-mod? (cdr obj-pair)) + (document-context-mod obj-pair)) + (else + #f))) + +(define context-mods-doc-string + (format + "@table @asis +~a +@end table +" + (string-join + (filter + identity + (map + document-mod + (sort + (ly:module->alist (current-module)) + identifier +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify diff --git a/scm/document-identifiers.scm b/scm/document-identifiers.scm index ffccf72c30..fcd8f93214 100644 --- a/scm/document-identifiers.scm +++ b/scm/document-identifiers.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2006--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -26,23 +26,29 @@ (map symbol->string (cddr (cadr (procedure-source func))))) (doc (procedure-documentation func)) - (sign (object-property func 'music-function-signature)) - (type-names (map type-name sign)) - + (sign (ly:music-function-signature music-func)) + (type-names (map (lambda (pred) + (if (pair? pred) + (format #f "[~a]" (type-name (car pred))) + (format #f "(~a)" (type-name pred)))) + sign)) (signature-str (string-join - (map (lambda (x) (format "@var{~a} (~a)" - (car x) - (cadr x))) - (zip arg-names type-names))))) - (format - "@item @code{~a}~a~a -@findex ~a + (map (lambda (arg type) (format #f "@var{~a} ~a" arg type)) + arg-names (cdr type-names))))) + (format #f + "@item @code{~a} ~a ~a~a +@funindex ~a ~a " - name-sym (if (equal? "" signature-str) "" " - ") signature-str + name-sym (car type-names) + (if (equal? "" signature-str) "" " - ") signature-str name-sym - (if doc doc "(undocumented; fixme)")))) + (if doc + doc + (begin + (ly:warning "music function `~a' not documented." name-sym) + "(undocumented; fixme)"))))) (define (document-object obj-pair) @@ -52,15 +58,8 @@ (else #f))) - -(define (identifierstring (car a)) - (symbol->string (car b)))) - - (define-public (identifiers-doc-string) - (format + (format #f "@table @asis ~a @end table diff --git a/scm/document-markup.scm b/scm/document-markup.scm index c348e66e55..41b6f61f1b 100644 --- a/scm/document-markup.scm +++ b/scm/document-markup.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify diff --git a/scm/document-music.scm b/scm/document-music.scm index 93b7b36215..7d7e2a9942 100644 --- a/scm/document-music.scm +++ b/scm/document-music.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -16,6 +16,8 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . +(define doc-context (ly:make-global-context $defaultlayout)) + (define (music-props-doc) (make #:name "Music properties" @@ -31,7 +33,7 @@ (define music-types->names (make-hash-table 61)) (filter-map (lambda (entry) (let* ((class (ly:camel-case->lisp-identifier (car entry))) - (classes (ly:make-event-class class))) + (classes (ly:make-event-class doc-context class))) (if classes (map (lambda (cl) @@ -88,7 +90,7 @@ (let* ((namesym (car obj)) (props (cdr obj)) (class (ly:camel-case->lisp-identifier namesym)) - (classes (ly:make-event-class class)) + (classes (ly:make-event-class doc-context class)) (accept-list (if classes (human-listify (map ref-ify diff --git a/scm/document-translation.scm b/scm/document-translation.scm index 3e8c308d5b..00b22be7a3 100644 --- a/scm/document-translation.scm +++ b/scm/document-translation.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -145,14 +145,14 @@ (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)))) ))) diff --git a/scm/document-type-predicates.scm b/scm/document-type-predicates.scm index 9e7dc4fe94..e6cff904c3 100644 --- a/scm/document-type-predicates.scm +++ b/scm/document-type-predicates.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010--2011 Mark Polesky +;;;; Copyright (C) 2010--2012 Mark Polesky ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/documentation-generate.scm b/scm/documentation-generate.scm index b1d9fcda2d..88016c92ae 100644 --- a/scm/documentation-generate.scm +++ b/scm/documentation-generate.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -34,6 +34,7 @@ "document-music.scm" "document-type-predicates.scm" "document-identifiers.scm" + "document-context-mods.scm" "document-backend.scm" "document-markup.scm")) @@ -72,6 +73,9 @@ (identifiers-doc-string) (open-output-file "identifiers.tely")) +(display + context-mods-doc-string + (open-output-file "context-mod-identifiers.tely")) (display (backend-properties-doc-string all-user-grob-properties) @@ -120,7 +124,7 @@ @author The LilyPond development team @c `Internals Reference' was born 2000-10-21 with git commit 01e371f... -Copyright @copyright{} 2000--2011 by the authors +Copyright @copyright{} 2000--2012 by the authors @vskip 20pt diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm index b71709def4..182f581272 100644 --- a/scm/documentation-lib.scm +++ b/scm/documentation-lib.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -56,7 +56,7 @@ (node-children node))) (define (processing name) - (ly:message (_ "Processing ~S...") name)) + (ly:basic-progress (_ "Processing ~S...") name)) (define (self-evaluating? x) (or (number? x) (string? x) (procedure? x) (boolean? x))) @@ -175,10 +175,21 @@ string-to-use). If QUOTE? is #t, embed table in a @quotation environment." (define (writing-wip x) (ly:message (_ "Writing ~S...") x)) +(define (identifierstring (car a)) + (symbol->string (car b)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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 +201,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))) diff --git a/scm/editor.scm b/scm/editor.scm index ff1894a268..66c3709fb2 100644 --- a/scm/editor.scm +++ b/scm/editor.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/encoding.scm b/scm/encoding.scm index a35be6c391..1868e7600f 100644 --- a/scm/encoding.scm +++ b/scm/encoding.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2004--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/file-cache.scm b/scm/file-cache.scm index 7deea1a28e..221a6e2837 100644 --- a/scm/file-cache.scm +++ b/scm/file-cache.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2005--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/flag-styles.scm b/scm/flag-styles.scm index 9e1a268e4d..23ff235201 100644 --- a/scm/flag-styles.scm +++ b/scm/flag-styles.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2008--2011 Reinhold Kainhofer +;;;; Copyright (C) 2008--2012 Reinhold Kainhofer ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ ;;;; notably the old-straight-flag and the modern-straight-flag styles. -(define-public (no-flag stem-grob) +(define-public (no-flag grob) "No flag: Simply return empty stencil." empty-stencil) @@ -29,7 +29,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-public (add-stroke-straight stencil stem-grob dir log stroke-style +(define-public (add-stroke-straight stencil grob dir log stroke-style offset length thickness stroke-thickness) "Add the stroke for acciaccatura to the given flag stencil. The stroke starts for up-flags at `upper-end-of-flag + (0,length/2)' @@ -39,7 +39,8 @@ whole length, while `flag-x-width' is just the x-extent and thus depends on the angle! Other combinations don't look as good. For down-stems the y-coordinates are simply mirrored." - (let* ((start (offset-add offset (cons 0 (* (/ length 2) dir)))) + (let* ((stem-grob (ly:grob-parent grob X)) + (start (offset-add offset (cons 0 (* (/ length 2) dir)))) (end (offset-add (cons 0 (cdr offset)) (cons (- (/ (car offset) 2)) (* (- (+ thickness (car offset))) dir)))) (stroke (make-line-stencil stroke-thickness (car start) (cdr start) (car end) (cdr end)))) @@ -65,13 +66,14 @@ For down-stems the y-coordinates are simply mirrored." All lengths are scaled according to the font size of the note." - (lambda (stem-grob) - (let* ((log (ly:grob-property stem-grob 'duration-log)) + (lambda (grob) + (let* ((stem-grob (ly:grob-parent grob X)) + (log (ly:grob-property stem-grob 'duration-log)) (dir (ly:grob-property stem-grob 'direction)) (stem-up (eqv? dir UP)) - (layout (ly:grob-layout stem-grob)) + (layout (ly:grob-layout grob)) ; scale with the note size (e.g. for grace notes) - (factor (magstep (ly:grob-property stem-grob 'font-size 0))) + (factor (magstep (ly:grob-property grob 'font-size 0))) (grob-stem-thickness (ly:grob-property stem-grob 'thickness)) (line-thickness (ly:output-def-lookup layout 'line-thickness)) (half-stem-thickness (/ (* grob-stem-thickness line-thickness) 2)) @@ -95,9 +97,9 @@ All lengths are scaled according to the font size of the note." (stencil (ly:round-filled-polygon points half-stem-thickness)) ; Log for 1/8 is 3, so we need to subtract 3 (flag-stencil (buildflag stencil (- log 3) stencil spacing)) - (stroke-style (ly:grob-property stem-grob 'stroke-style))) + (stroke-style (ly:grob-property grob 'stroke-style))) (if (equal? stroke-style "grace") - (add-stroke-straight flag-stencil stem-grob + (add-stroke-straight flag-stencil grob dir log stroke-style flag-end flag-length @@ -105,16 +107,16 @@ All lengths are scaled according to the font size of the note." (* half-stem-thickness 2)) flag-stencil)))) -(define-public (modern-straight-flag stem-grob) +(define-public (modern-straight-flag grob) "Modern straight flag style (for composers like Stockhausen, Boulez, etc.). The angles are 18 and 22 degrees and thus smaller than for the ancient style of Bach, etc." - ((straight-flag 0.55 1 -18 1.1 22 1.2) stem-grob)) + ((straight-flag 0.55 1 -18 1.1 22 1.2) grob)) -(define-public (old-straight-flag stem-grob) +(define-public (old-straight-flag grob) "Old straight flag style (for composers like Bach). The angles of the flags are both 45 degrees." - ((straight-flag 0.55 1 -45 1.2 45 1.4) stem-grob)) + ((straight-flag 0.55 1 -45 1.2 45 1.4) grob)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -122,23 +124,24 @@ flags are both 45 degrees." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; NOTE: By default, lilypond uses the C++ method Stem::calc-flag -; (ly:stem::calc-flag is the corresponding Scheme interface) to generate the +; NOTE: By default, lilypond uses the C++ method Flag::stencil +; (ly:flag::stencil is the corresponding Scheme interface) to generate the ; flag stencil. The following functions are simply a reimplementation in ; Scheme, so that one has that functionality available in Scheme, if one ; wants to write a flag style, which modifies one of the standard flags ; by some stencil operations. -(define-public (add-stroke-glyph stencil stem-grob dir stroke-style flag-style) +(define-public (add-stroke-glyph stencil grob dir stroke-style flag-style) "Load and add a stroke (represented by a glyph in the font) to the given flag stencil." (if (not (string? stroke-style)) stencil ; Otherwise: look up the stroke glyph and combine it with the flag - (let* ((font-char (string-append "flags." flag-style dir stroke-style)) + (let* ((stem-grob (ly:grob-parent grob X)) + (font-char (string-append "flags." flag-style dir stroke-style)) (alt-font-char (string-append "flags." dir stroke-style)) - (font (ly:grob-default-font stem-grob)) + (font (ly:grob-default-font grob)) (tmpstencil (ly:font-get-glyph font font-char)) (stroke-stencil (if (ly:stencil-empty? tmpstencil) (ly:font-get-glyph font alt-font-char) @@ -150,10 +153,11 @@ flag stencil." (ly:stencil-add stencil stroke-stencil))))) -(define-public (retrieve-glyph-flag flag-style dir dir-modifier stem-grob) +(define-public (retrieve-glyph-flag flag-style dir dir-modifier grob) "Load the correct flag glyph from the font." - (let* ((log (ly:grob-property stem-grob 'duration-log)) - (font (ly:grob-default-font stem-grob)) + (let* ((stem-grob (ly:grob-parent grob X)) + (log (ly:grob-property stem-grob 'duration-log)) + (font (ly:grob-default-font grob)) (font-char (string-append "flags." flag-style dir dir-modifier (number->string log))) (flag (ly:font-get-glyph font font-char))) (if (ly:stencil-empty? flag) @@ -161,18 +165,19 @@ flag stencil." flag)) -(define-public (create-glyph-flag flag-style dir-modifier stem-grob) +(define-public (create-glyph-flag flag-style dir-modifier grob) "Create a flag stencil by looking up the glyph from the font." - (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d")) - (flag (retrieve-glyph-flag flag-style dir dir-modifier stem-grob)) - (stroke-style (ly:grob-property stem-grob 'stroke-style))) + (let* ((stem-grob (ly:grob-parent grob X)) + (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d")) + (flag (retrieve-glyph-flag flag-style dir dir-modifier grob)) + (stroke-style (ly:grob-property grob 'stroke-style))) (if (null? stroke-style) flag - (add-stroke-glyph flag stem-grob dir stroke-style flag-style)))) + (add-stroke-glyph flag grob dir stroke-style flag-style)))) -(define-public (mensural-flag stem-grob) +(define-public (mensural-flag grob) "Mensural flags: Create the flag stencil by loading the glyph from the font. Flags are always aligned with staff lines, so we need to check the end point of the stem: For stems ending on staff lines, use different flags than for @@ -181,48 +186,57 @@ aligned with the staff lines, regardless of whether the note head is on a staff line or between two staff lines. In other words, the inner end of a flag always touches a staff line." - (let* ((adjust #t) - (stem-end (inexact->exact (round (ly:grob-property stem-grob 'stem-end-position)))) + (let* ((stem-grob (ly:grob-parent grob X)) + (adjust #t) + (d (ly:grob-property stem-grob 'direction)) + (ss (ly:staff-symbol-staff-space stem-grob)) + (stem-end (inexact->exact (round (* (index-cell + (ly:grob-extent stem-grob + stem-grob + Y) + d) + (/ 2 ss))))) ; For some reason the stem-end is a real instead of an integer... (dir-modifier (if (ly:position-on-line? stem-grob stem-end) "1" "0")) (modifier (if adjust dir-modifier "2"))) - (create-glyph-flag "mensural" modifier stem-grob))) + (create-glyph-flag "mensural" modifier grob))) -(define-public ((glyph-flag flag-style) stem-grob) +(define-public ((glyph-flag flag-style) grob) "Simulatesthe default way of generating flags: Look up glyphs @code{flags.style[ud][1234]} from the feta font and use it for the flag stencil." - (create-glyph-flag flag-style "" stem-grob)) + (create-glyph-flag flag-style "" grob)) -(define-public (normal-flag stem-grob) +(define-public (normal-flag grob) "Create a default flag." - (create-glyph-flag "" "" stem-grob)) + (create-glyph-flag "" "" grob)) -(define-public (default-flag stem-grob) +(define-public (default-flag grob) "Create a flag stencil for the stem. Its style will be derived from the -@code{'flag-style} Stem property. By default, @code{lilypond} uses a +@code{'style} Flag property. By default, @code{lilypond} uses a C++ Function (which is slightly faster) to do exactly the same as this function. However, if one wants to modify the default flags, this function can be used to obtain the default flag stencil, which can then be modified at will. The correct way to do this is: @example -\\override Stem #'flag = #default-flag -\\override Stem #'flag-style = #'mensural +\\override Flag #'stencil = #default-flag +\\override Flag #'style = #'mensural @end example " - (let* ((flag-style-symbol (ly:grob-property stem-grob 'flag-style)) + (let* ((stem-grob (ly:grob-parent grob X)) + (flag-style-symbol (ly:grob-property grob 'style)) (flag-style (if (symbol? flag-style-symbol) (symbol->string flag-style-symbol) ""))) (cond - ((equal? flag-style "") (normal-flag stem-grob)) - ((equal? flag-style "mensural") (mensural-flag stem-grob)) - ((equal? flag-style "no-flag") (no-flag stem-grob)) - (else ((glyph-flag flag-style) stem-grob))))) + ((equal? flag-style "") (normal-flag grob)) + ((equal? flag-style "mensural") (mensural-flag grob)) + ((equal? flag-style "no-flag") (no-flag grob)) + (else ((glyph-flag flag-style) grob))))) diff --git a/scm/font.scm b/scm/font.scm index 539e1aaee2..d759d60934 100644 --- a/scm/font.scm +++ b/scm/font.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -167,7 +167,7 @@ Arguments: @var{design-size-alist} is a list of @code{(rounded . designsize)}. @code{rounded} is a suffix for font filenames, while @code{designsize} should be the actual design size. The latter is used for text fonts -loaded through pango/fontconfig. +loaded through pango/@/fontconfig. @item @var{factor} is a size factor relative to the default size that is being @@ -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) diff --git a/scm/framework-eps.scm b/scm/framework-eps.scm index 4ab6e7bddd..697073642d 100644 --- a/scm/framework-eps.scm +++ b/scm/framework-eps.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -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 diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index 7c44920d67..b412ab3269 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -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" @@ -112,7 +112,7 @@ (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") @@ -163,7 +163,7 @@ "%%EndComments\n")) (define (procset file-name) - (format + (format #f "%%BeginResource: procset (~a) 1 0 ~a %%EndResource @@ -171,7 +171,7 @@ file-name (cached-file-contents file-name))) (define (embed-document file-name) - (format "%%BeginDocument: ~a + (format #f "%%BeginDocument: ~a ~a %%EndDocument " @@ -190,10 +190,10 @@ (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) @@ -227,11 +227,11 @@ (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)) @@ -243,7 +243,7 @@ (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 @@ -424,7 +424,7 @@ (fallbackval (ly:modules-lookup (list header) fallbackvar)) (val (if overrideval overrideval fallbackval))) (if val - (format port "/~a (~a)\n" field (metadata-encode (markup->string val)))))) + (format port "/~a (~a)\n" field (metadata-encode (markup->string val (list header))))))) (display "[ " port) (metadata-lookup-output 'pdfcomposer 'composer "Author") (format port "/Creator (LilyPond ~a)\n" (lilypond-version)) @@ -441,7 +441,7 @@ (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. @@ -531,7 +531,7 @@ ;; 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)) @@ -563,7 +563,7 @@ (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 @@ -572,10 +572,10 @@ (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) @@ -590,7 +590,7 @@ (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))) @@ -619,7 +619,7 @@ (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))) @@ -632,10 +632,10 @@ (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))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/scm/framework-scm.scm b/scm/framework-scm.scm index 51a1446302..a47eb185fd 100644 --- a/scm/framework-scm.scm +++ b/scm/framework-scm.scm @@ -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) diff --git a/scm/framework-socket.scm b/scm/framework-socket.scm index abaaa08ec9..dd54293555 100644 --- a/scm/framework-socket.scm +++ b/scm/framework-socket.scm @@ -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 @@ -48,27 +48,27 @@ (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))) diff --git a/scm/framework-svg.scm b/scm/framework-svg.scm index f10125caa8..84deff1b5f 100644 --- a/scm/framework-svg.scm +++ b/scm/framework-svg.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2004--2012 Jan Nieuwenhuizen ;;;; Patrick McCarty ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -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)))) diff --git a/scm/fret-diagrams.scm b/scm/fret-diagrams.scm index acc095a567..a6645dc762 100644 --- a/scm/fret-diagrams.scm +++ b/scm/fret-diagrams.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Carl D. Sorensen +;;;; Copyright (C) 2004--2012 Carl D. Sorensen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -528,10 +528,9 @@ fret-diagram overall parameters." (+ (* size end-string-coordinate) half-thickness))) (x-extent (cons (car box-lower-left) (car box-upper-right))) (y-extent (cons (cdr box-lower-left) (cdr box-upper-right)))) - (ly:make-stencil - (list 'bezier-sandwich - `(quote ,bezier-list) - (* size bezier-thick)) + (make-bezier-sandwich-stencil + bezier-list + (* size bezier-thick) x-extent y-extent))) @@ -822,6 +821,8 @@ a fret-indication list with the appropriate values" (case (car (string->list (substring test-string 0 1))) ((#\s) (let ((size (get-numeric-from-key test-string))) (set! props (prepend-alist-chain 'size size props)))) + ((#\t) (let ((th (get-numeric-from-key test-string))) + (set! props (prepend-alist-chain 'thickness th props)))) ((#\f) (let* ((finger-code (get-numeric-from-key test-string)) (finger-id (case finger-code ((0) 'none) @@ -1030,8 +1031,9 @@ spaces). Default:@tie{}1. @item -@code{t:}@var{number} -- Set the line thickness (in staff spaces). -Default:@tie{}0.05. +@code{t:}@var{number} -- Set the line thickness (relative to normal +line thickness). +Default:@tie{}0.5. @item @code{h:}@var{number} -- Set the height of the diagram in frets. @@ -1116,13 +1118,13 @@ If there are multiple fret indicators desired on a string, they should be separated by spaces. @item -Fingerings are given by following the fret number with a @code{-}, +Fingerings are given by following the fret number with a @w{@code{-},} followed by the finger indicator, e.g. @samp{3-2} for playing the third fret with the second finger. @item Where a barre indicator is desired, follow the fret (or fingering) symbol -with @code{-(} to start a barre and @code{-)} to end the barre. +with @w{@code{-(}} to start a barre and @w{@code{-)}} to end the barre. @end itemize" ;; TODO -- change syntax to fret\string-finger diff --git a/scm/graphviz.scm b/scm/graphviz.scm index f6fd8fa9e4..247d30c4a7 100644 --- a/scm/graphviz.scm +++ b/scm/graphviz.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2007--2011 Joe Neeman +;;;; Copyright (C) 2007--2012 Joe Neeman ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -37,18 +37,18 @@ (define (add-cluster graph node-id cluster-name) (let* ((cs (clusters graph)) - (cluster (assq cluster-name cs)) + (cluster (assoc cluster-name cs)) (already-in-cluster (if cluster (cdr cluster) '()))) - (set-clusters! graph (assq-set! cs + (set-clusters! graph (assoc-set! cs cluster-name (cons node-id already-in-cluster))))) (define (add-node graph label . cluster-name) (let* ((ns (nodes graph)) (id (length ns))) - (set-nodes! graph (assq-set! ns id label)) + (set-nodes! graph (assv-set! ns id label)) (if (and (not (null? cluster-name)) (string? (car cluster-name))) (add-cluster graph id (car cluster-name))) @@ -61,18 +61,17 @@ (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))) diff --git a/scm/guile-debugger.scm b/scm/guile-debugger.scm index 3c6897eaca..8027b4f955 100644 --- a/scm/guile-debugger.scm +++ b/scm/guile-debugger.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010--2011 Ian Hulin +;;;; Copyright (C) 2010--2012 Ian Hulin ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/harp-pedals.scm b/scm/harp-pedals.scm index 357618287a..8fa02fb5a0 100644 --- a/scm/harp-pedals.scm +++ b/scm/harp-pedals.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2008--2011 Reinhold Kainhofer +;;;; Copyright (C) 2008--2012 Reinhold Kainhofer ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/layout-beam.scm b/scm/layout-beam.scm index 4ef49e9759..f72afacf0d 100644 --- a/scm/layout-beam.scm +++ b/scm/layout-beam.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -40,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,25 +54,21 @@ (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)))) (define-public (check-quant-callbacks l r) - (list ly:beam::calc-least-squares-positions - ly:beam::slope-damping - ly:beam::shift-region-to-valid - ly:beam::quanting - (check-beam-quant l r) - )) + (lambda (grob) + ((check-beam-quant l r) + grob + (beam::place-broken-parts-individually grob)))) (define-public (check-slope-callbacks comparison) - (list ly:beam::calc-least-squares-positions - ly:beam::slope-damping - ly:beam::shift-region-to-valid - ly:beam::quanting - (check-beam-slope-sign comparison) - )) + (lambda (grob) + ((check-beam-slope-sign comparison) + grob + (beam::place-broken-parts-individually grob)))) diff --git a/scm/layout-slur.scm b/scm/layout-slur.scm index 8626e01146..ff47dbb938 100644 --- a/scm/layout-slur.scm +++ b/scm/layout-slur.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -20,7 +20,6 @@ '((region-size . 4) (head-encompass-penalty . 1000.0) (stem-encompass-penalty . 30.0) - (closeness-factor . 10) (edge-attraction-factor . 4) (same-slope-penalty . 20) (steeper-slope-factor . 50) @@ -37,4 +36,8 @@ (head-slur-distance-factor . 10) (absolute-closeness-measure . 0.3) (edge-slope-exponent . 1.7) + (close-to-edge-length . 2.5) + (encompass-object-range-overshoot . 0.5) + (slur-tie-extrema-min-distance . 0.2) + (slur-tie-extrema-min-distance-penalty . 2) )) diff --git a/scm/lily-library.scm b/scm/lily-library.scm index 0e2c810da9..ec1097a32b 100644 --- a/scm/lily-library.scm +++ b/scm/lily-library.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -19,6 +19,9 @@ ; for take, drop, take-while, list-index, and find-tail: (use-modules (srfi srfi-1)) +; for define-safe-public when byte-compiling using Guile V2 +(use-modules (scm safe-utility-defs)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; constants. @@ -154,39 +157,39 @@ (ly:make-score music)) -(define (get-current-filename parser) +(define (get-current-filename parser book) "return any suffix value for output filename allowing for settings by calls to bookOutputName function" - (let ((book-filename (ly:parser-lookup parser 'book-filename))) + (let ((book-filename (paper-variable parser book 'output-filename))) (if (not book-filename) (ly:parser-output-name parser) book-filename))) -(define (get-current-suffix parser) +(define (get-current-suffix parser book) "return any suffix value for output filename allowing for settings by calls to bookoutput function" - (let ((book-output-suffix (ly:parser-lookup parser 'book-output-suffix))) + (let ((book-output-suffix (paper-variable parser book 'output-suffix))) (if (not (string? book-output-suffix)) (ly:parser-lookup parser 'output-suffix) book-output-suffix))) (define-public current-outfile-name #f) ; for use by regression tests -(define (get-outfile-name parser) +(define (get-outfile-name parser book) "return current filename for generating backend output files" ;; user can now override the base file name, so we have to use ;; the file-name concatenated with any potential output-suffix value ;; 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)) + (let* ((base-name (get-current-filename parser book)) + (output-suffix (get-current-suffix parser book)) + (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:]]" @@ -206,7 +209,7 @@ bookoutput function" (define (print-book-with parser book process-procedure) (let* ((paper (ly:parser-lookup parser '$defaultpaper)) (layout (ly:parser-lookup parser '$defaultlayout)) - (outfile-name (get-outfile-name parser))) + (outfile-name (get-outfile-name parser book))) (process-procedure book paper layout outfile-name))) (define-public (print-book-with-defaults parser book) @@ -227,6 +230,24 @@ bookoutput function" (else ((ly:parser-lookup parser 'toplevel-score-handler) parser score)))) +(define-public paper-variable + (let + ((get-papers + (lambda (parser book) + (append (if (and book (ly:output-def? (ly:book-paper book))) + (list (ly:book-paper book)) + '()) + (ly:parser-lookup parser '$papers) + (list (ly:parser-lookup parser '$defaultpaper)))))) + (make-procedure-with-setter + (lambda (parser book symbol) + (any (lambda (p) (ly:output-def-lookup p symbol #f)) + (get-papers parser book))) + (lambda (parser book symbol value) + (ly:output-def-set-variable! + (car (get-papers parser book)) + symbol value))))) + (define-public (add-text parser text) (add-score parser (list text))) @@ -236,6 +257,115 @@ bookoutput function" parser music)) +(define-public (context-mod-from-music parser music) + (let ((warn #t) (mods (ly:make-context-mod))) + (let loop ((m music) (context #f)) + (if (music-is-of-type? m 'layout-instruction-event) + (let ((symbol (cons context (ly:music-property m 'symbol)))) + (ly:add-context-mod + mods + (case (ly:music-property m 'name) + ((PropertySet) + (list 'assign + symbol + (ly:music-property m 'value))) + ((PropertyUnset) + (list 'unset symbol)) + ((OverrideProperty) + (cons* 'push + symbol + (ly:music-property m 'grob-value) + (ly:music-property m 'grob-property-path))) + ((RevertProperty) + (cons* 'pop + symbol + (ly:music-property m 'grob-property-path)))))) + (case (ly:music-property m 'name) + ((ApplyContext) + (ly:add-context-mod mods + (list 'apply + (ly:music-property m 'procedure)))) + ((ContextSpeccedMusic) + (loop (ly:music-property m 'element) + (ly:music-property m 'context-type))) + (else + (let ((callback (ly:music-property m 'elements-callback))) + (if (procedure? callback) + (fold loop context (callback m)) + (if (and warn (ly:duration? (ly:music-property m 'duration))) + (begin + (ly:music-warning + music + (_ "Music unsuitable for context-mod")) + (set! warn #f)))))))) + context) + mods)) + +(define-public (context-defs-from-music parser output-def music) + (let ((warn #t)) + (let loop ((m music) (mods #f)) + ;; The parser turns all sets, overrides etc into something + ;; wrapped in ContextSpeccedMusic. If we ever get a set, + ;; override etc that is not wrapped in ContextSpeccedMusic, the + ;; user has created it in Scheme himself without providing the + ;; required wrapping. In that case, using #f in the place of a + ;; context modification results in a reasonably recognizable + ;; error. + (if (music-is-of-type? m 'layout-instruction-event) + (ly:add-context-mod + mods + (case (ly:music-property m 'name) + ((PropertySet) + (list 'assign + (ly:music-property m 'symbol) + (ly:music-property m 'value))) + ((PropertyUnset) + (list 'unset + (ly:music-property m 'symbol))) + ((OverrideProperty) + (cons* 'push + (ly:music-property m 'symbol) + (ly:music-property m 'grob-value) + (ly:music-property m 'grob-property-path))) + ((RevertProperty) + (cons* 'pop + (ly:music-property m 'symbol) + (ly:music-property m 'grob-property-path))))) + (case (ly:music-property m 'name) + ((ApplyContext) + (ly:add-context-mod mods + (list 'apply + (ly:music-property m 'procedure)))) + ((ContextSpeccedMusic) + ;; Use let* here to let defs catch up with modifications + ;; to the context defs made in the recursion + (let* ((mods (loop (ly:music-property m 'element) + (ly:make-context-mod))) + (defs (ly:output-find-context-def + output-def (ly:music-property m 'context-type)))) + (if (null? defs) + (ly:music-warning + music + (ly:format (_ "Cannot find context-def \\~a") + (ly:music-property m 'context-type))) + (for-each + (lambda (entry) + (ly:output-def-set-variable! + output-def (car entry) + (ly:context-def-modify (cdr entry) mods))) + defs)))) + (else + (let ((callback (ly:music-property m 'elements-callback))) + (if (procedure? callback) + (fold loop mods (callback m)) + (if (and warn (ly:duration? (ly:music-property m 'duration))) + (begin + (ly:music-warning + music + (_ "Music unsuitable for output-def")) + (set! warn #f)))))))) + mods))) + ;;;;;;;;;;;;;;;; ;; alist @@ -522,6 +652,10 @@ right (@var{dir}=+1)." (define (other-axis a) (remainder (+ a 1) 2)) +(define-public (interval-scale iv factor) + (cons (* (car iv) factor) + (* (cdr iv) factor))) + (define-public (interval-widen iv amount) (cons (- (car iv) amount) (+ (cdr iv) amount))) @@ -852,17 +986,12 @@ print a warning and set an optional @var{default}." scaling)) (define-public (version-not-seen-message input-file-name) - (ly:message - "~a:0: ~a ~a" - input-file-name - (_ "warning:") - (format #f - (_ "no \\version statement found, please add~afor future compatibility") - (format #f "\n\n\\version ~s\n\n" (lilypond-version))))) + (ly:warning-located + (ly:format "~a:0" input-file-name) + (_ "no \\version statement found, please add~afor future compatibility") + (format #f "\n\n\\version ~s\n\n" (lilypond-version)))) (define-public (old-relative-not-used-message input-file-name) - (ly:message - "~a:0: ~a ~a" - input-file-name - (_ "warning:") + (ly:warning-located + (ly:format "~a:0" input-file-name) (_ "old relative compatibility not used"))) diff --git a/scm/lily-sort.scm b/scm/lily-sort.scm index ac239a7f50..19fba423d4 100644 --- a/scm/lily-sort.scm +++ b/scm/lily-sort.scm @@ -2,7 +2,7 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; Copyright 2009--2011 Mark Polesky +;;;; Copyright 2009--2012 Mark Polesky ;; This file implements a LilyPond-specific character-sorting algorithm diff --git a/scm/lily.scm b/scm/lily.scm index 203a449c8f..5a6b5f388d 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -27,7 +27,16 @@ (defmacro-public _i (x) x) +;;; Boolean thunk - are we integrating Guile V2.0 or higher with LilyPond? +(define-public (guile-v2) + (string>? (version) "1.9.10")) + (read-enable 'positions) +(if (not (guile-v2)) + (debug-enable 'debug) + (begin + (debug-enable 'backtrace) + (debug-set! show-file-name #t))) (define-public PLATFORM (string->symbol @@ -111,9 +120,13 @@ jobs.") (log-file #f "If string FOO is given as argument, redirect output to log file `FOO.log'.") + (max-markup-depth 1024 +"Maximum depth for the markup tree. If a markup has more levels, +assume it will not terminate on its own, print a warning and return a +null markup instead.") (midi-extension ,(if (eq? PLATFORM 'windows) - "mid" - "midi") + "mid" + "midi") "Set the default file extension for MIDI output file to given string.") (music-strings-to-paths #f @@ -170,8 +183,8 @@ second. Dump results to `FILE.stacks' and `FILE.graph'.") (trace-scheme-coverage #f "Record coverage of Scheme files in `FILE.cov'.") - (verbose ,(ly:command-line-verbose?) -"Value of the --verbose flag (read-only).") + (verbose ,(ly:verbose-output?) +"Verbose output, i.e. loglevel at least DEBUG (read-only).") (warning-as-error #f "Change all warning and programming_error messages into errors.") @@ -181,12 +194,12 @@ messages into errors.") ;; initialization depend on these options. (for-each (lambda (x) - (ly:add-option (car x) (cadr x) (caddr x))) - scheme-options-definitions) + (ly:add-option (car x) (cadr x) (caddr x))) + scheme-options-definitions) (for-each (lambda (x) - (ly:set-option (car x) (cdr x))) - (eval-string (ly:command-line-options))) + (ly:set-option (car x) (cdr x))) + (eval-string (ly:command-line-options))) (debug-set! stack 0) @@ -195,22 +208,19 @@ messages into errors.") ;;(set-debug-cell-accesses! 1000) -;;; Boolean thunk - are we integrating Guile V2.0 or higher with LilyPond? -(define-public (guile-v2) - (string>? (version) "1.9.10")) - (use-modules (ice-9 regex) - (ice-9 safe) - (ice-9 format) - (ice-9 rdelim) - (ice-9 optargs) - (oop goops) - (srfi srfi-1) - (srfi srfi-13) - (srfi srfi-14) - (scm clip-region) - (scm memory-trace) - (scm coverage)) + (ice-9 safe) + (ice-9 format) + (ice-9 rdelim) + (ice-9 optargs) + (oop goops) + (srfi srfi-1) + (srfi srfi-13) + (srfi srfi-14) + (scm clip-region) + (scm memory-trace) + (scm coverage) + (scm safe-utility-defs)) (define-public _ gettext) ;;; There are new modules defined in Guile V2.0 which we need to use. @@ -221,13 +231,10 @@ messages into errors.") (cond ((guile-v2) - (if (ly:get-option 'verbose) - (ly:message (_ "Using (ice-9 curried-definitions) module\n"))) + (ly:debug (_ "Using (ice-9 curried-definitions) module\n")) (use-modules (ice-9 curried-definitions))) (else - (if (ly:get-option 'verbose) - (ly:message - (_ "Guile 1.8\n"))))) + (ly:debug (_ "Guile 1.8\n")))) ;; TODO add in modules for V1.8.7 deprecated in V2.0 and integrated ;; into Guile base code, like (ice-9 syncase). @@ -262,9 +269,10 @@ messages into errors.") ;;; Debugging evaluator is slower. This should have a more sensible ;;; default. + (if (or (ly:get-option 'verbose) - (ly:get-option 'trace-memory-frequency) - (ly:get-option 'trace-scheme-coverage)) + (ly:get-option 'trace-memory-frequency) + (ly:get-option 'trace-scheme-coverage)) (begin (ly:set-option 'protected-scheme-parsing #f) (debug-enable 'backtrace) @@ -284,26 +292,27 @@ messages into errors.") (define-public (ly:load x) (let* ((file-name (%search-load-path x))) - (if (ly:get-option 'verbose) - (ly:progress "[~A" file-name)) + (ly:debug "[~A" file-name) (if (not file-name) - (ly:error (_ "cannot find: ~A") x)) + (ly:error (_ "cannot find: ~A") x)) (primitive-load-path file-name) ;; to support Guile V2 autocompile + ;; TODO: Any chance to use ly:debug here? Need to extend it to prevent + ;; a newline in this case (if (ly:get-option 'verbose) - (ly:progress "]\n")))) + (ly:progress "]\n")))) (define-public DOS (let ((platform (string-tokenize - (vector-ref (uname) 0) char-set:letter+digit))) + (vector-ref (uname) 0) char-set:letter+digit))) (if (null? (cdr platform)) #f - (member (string-downcase (cadr platform)) '("95" "98" "me"))))) + (member (string-downcase (cadr platform)) '("95" "98" "me"))))) (define (slashify x) (if (string-index x #\\) x (string-regexp-substitute - "//*" "/" - (string-regexp-substitute "\\\\" "/" x)))) + "//*" "/" + (string-regexp-substitute "\\\\" "/" x)))) (define-public (ly-getcwd) (if (eq? PLATFORM 'windows) @@ -313,12 +322,12 @@ messages into errors.") (define-public (is-absolute? file-name) (let ((file-name-length (string-length file-name))) (if (= file-name-length 0) - #f - (or (eq? (string-ref file-name 0) #\/) - (and (eq? PLATFORM 'windows) - (> file-name-length 2) - (eq? (string-ref file-name 1) #\:) - (eq? (string-ref file-name 2) #\/)))))) + #f + (or (eq? (string-ref file-name 0) #\/) + (and (eq? PLATFORM 'windows) + (> file-name-length 2) + (eq? (string-ref file-name 1) #\:) + (eq? (string-ref file-name 2) #\/)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; If necessary, emulate Guile V2 module_export_all! for Guile V1.8.n @@ -327,66 +336,22 @@ messages into errors.") (define (module-export-all! mod) (define (fresh-interface!) (let ((iface (make-module))) - (set-module-name! iface (module-name mod)) - ;; for guile 2: (set-module-version! iface (module-version mod)) - (set-module-kind! iface 'interface) - (set-module-public-interface! mod iface) - iface)) + (set-module-name! iface (module-name mod)) + ;; for guile 2: (set-module-version! iface (module-version mod)) + (set-module-kind! iface 'interface) + (set-module-public-interface! mod iface) + iface)) (let ((iface (or (module-public-interface mod) - (fresh-interface!)))) + (fresh-interface!)))) (set-module-obarray! iface (module-obarray mod)))))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define (type-check-list location signature arguments) - "Typecheck a list of arguments against a list of type predicates. -Print a message at LOCATION if any predicate failed." - (define (recursion-helper signature arguments count) - (define (helper pred? arg count) - (if (not (pred? arg)) - (begin - (ly:input-message - location - (format - #f (_ "wrong type for argument ~a. Expecting ~a, found ~s") - count (type-name pred?) arg)) - #f) - #t)) - - (if (null? signature) - #t - (and (helper (car signature) (car arguments) count) - (recursion-helper (cdr signature) (cdr arguments) (1+ count))))) - (recursion-helper signature arguments 1)) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Safe definitions utility - -(define safe-objects - (list)) - -(define-macro (define-safe-public arglist . body) - "Define a variable, export it, and mark it as safe, i.e. usable in -LilyPond safe mode. The syntax is the same as `define*-public'." - (define (get-symbol arg) - (if (pair? arg) - (get-symbol (car arg)) - arg)) - - (let ((safe-symbol (get-symbol arglist))) - `(begin - (define*-public ,arglist - ,@body) - (set! safe-objects (cons (cons ',safe-symbol ,safe-symbol) - safe-objects)) - ,safe-symbol))) (define-safe-public (lilypond-version) (string-join (map (lambda (x) (if (symbol? x) - (symbol->string x) - (number->string x))) - (ly:version)) + (symbol->string x) + (number->string x))) + (ly:version)) ".")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -397,36 +362,43 @@ LilyPond safe mode. The syntax is the same as `define*-public'." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; other files. -(define init-scheme-files +;; +;; List of Scheme files to be loaded into the (lily) module. +;; +;; - Library definitions, need to be at the head of the list +(define init-scheme-files-lib '("lily-library.scm" - "file-cache.scm" + "output-lib.scm")) +;; - Files containing definitions used later by other files later in load +(define init-scheme-files-used + '("markup-macros.scm" + "parser-ly-from-scheme.scm")) +;; - Main body of files to be loaded +(define init-scheme-files-body + '("file-cache.scm" "define-event-classes.scm" "define-music-callbacks.scm" "define-music-types.scm" "define-note-names.scm" - "output-lib.scm" "c++.scm" - "chord-ignatzek-names.scm" "chord-entry.scm" - "chord-generic-names.scm" "stencil.scm" + "define-markup-commands.scm" "markup.scm" "modal-transforms.scm" + "chord-generic-names.scm" + "chord-ignatzek-names.scm" "music-functions.scm" "part-combiner.scm" "autochange.scm" "define-music-properties.scm" "time-signature-settings.scm" "auto-beam.scm" + "chord-name.scm" "bezier-tools.scm" - "parser-ly-from-scheme.scm" "ly-syntax-constructors.scm" "define-context-properties.scm" - ;; guile 1.9 wants markups defined before referenced - "define-markup-commands.scm" - - "chord-name.scm" "translation-functions.scm" "script.scm" "midi.scm" @@ -436,6 +408,7 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "font.scm" "encoding.scm" + "bar-line.scm" "flag-styles.scm" "fret-diagrams.scm" "tablature.scm" @@ -448,13 +421,23 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "define-grob-interfaces.scm" "define-stencil-commands.scm" "titling.scm" + "text.scm" "paper.scm" "backend-library.scm" - "x11-color.scm" - - ;; must be after everything has been defined - "safe-lily.scm")) + "x11-color.scm")) +;; - Files to be loaded last +(define init-scheme-files-tail +;; - must be after everything has been defined + '("safe-lily.scm")) +;; +;; Now construct the load list +;; +(define init-scheme-files + (append init-scheme-files-lib + init-scheme-files-used + init-scheme-files-body + init-scheme-files-tail)) (for-each ly:load init-scheme-files) @@ -506,13 +489,16 @@ LilyPond safe mode. The syntax is the same as `define*-public'." `((,boolean-or-symbol? . "boolean or symbol") (,color? . "color") (,cheap-list? . "list") + (,fraction? . "fraction, as pair") (,grob-list? . "list of grobs") + (,index? . "non-negative integer") ;; this is built on cheap-list (,list-or-symbol? . "list or symbol") (,markup? . "markup") (,markup-command-list? . "markup command list") (,markup-list? . "markup list") (,moment-pair? . "pair of moment objects") + (,number-list? . "number list") (,number-or-grob? . "number or grob") (,number-or-pair? . "number or pair") (,number-or-string? . "number or string") @@ -521,15 +507,20 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (,scheme? . "any type") (,string-or-pair? . "string or pair") (,string-or-symbol? . "string or symbol") + (,void? . "void") )) (define-public lilypond-exported-predicates - `((,ly:box? . "box") + `((,ly:book? . "book") + (,ly:box? . "box") (,ly:context? . "context") + (,ly:context-def? . "context definition") + (,ly:context-mod? . "context modification") (,ly:dimension? . "dimension, in staff space") (,ly:dir? . "direction") (,ly:dispatcher? . "dispatcher") (,ly:duration? . "duration") + (,ly:event? . "post event") (,ly:font-metric? . "font metric") (,ly:grob? . "graphical (layout) object") (,ly:grob-array? . "array of grobs") @@ -558,10 +549,12 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (,ly:skyline-pair? . "pair of skylines") (,ly:source-file? . "source file") (,ly:spanner? . "spanner") + (,ly:spring? . "spring") (,ly:stencil? . "stencil") (,ly:stream-event? . "stream event") (,ly:translator? . "translator") (,ly:translator-group? . "translator group") + (,ly:unpure-pure-container? . "unpure/pure container") )) @@ -578,22 +571,22 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (define (profile-measurements) (let* ((t (times)) - (stats (gc-stats))) + (stats (gc-stats))) (list (- (+ (tms:cutime t) - (tms:utime t)) - (assoc-get 'gc-time-taken stats)) - (assoc-get 'total-cells-allocated stats 0)))) + (tms:utime t)) + (assoc-get 'gc-time-taken stats)) + (assoc-get 'total-cells-allocated stats 0)))) (define (dump-profile base last this) - (let* ((outname (format "~a.profile" (dir-basename base ".ly"))) - (diff (map (lambda (y) (apply - y)) (zip this last)))) + (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") - "time: ~a\ncells: ~a\n" - (if (ly:get-option 'dump-cpu-profile) - (car diff) - 0) - (cadr diff)))) + "time: ~a\ncells: ~a\n" + (if (ly:get-option 'dump-cpu-profile) + (car diff) + 0) + (cadr diff)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; debug memory leaks @@ -606,67 +599,65 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (define-public (dump-live-object-stats outfile) (for-each (lambda (x) - (format outfile "~a: ~a\n" (car x) (cdr x))) - (sort (gc-live-object-stats) - (lambda (x y) - (stringalist (ly:protects)) - (lambda (a b) - (< (object-address (car a)) - (object-address (car b)))))) - (out-file-name (string-append - "gcstat-" (number->string gc-protect-stat-count) - ".scm")) - (outfile (open-file out-file-name "w"))) + (lambda (a b) + (< (object-address (car a)) + (object-address (car b)))))) + (out-file-name (string-append + "gcstat-" (number->string gc-protect-stat-count) + ".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) + (ly:progress "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)) - (cdr obj-count) - 0)) - protects))) + (apply + (map (lambda (obj-count) + (if (symbol? (car obj-count)) + (cdr obj-count) + 0)) + protects))) ;; (display (ly:smob-protects)) (newline outfile) (if (defined? 'gc-live-object-stats) - (let* ((stats #f)) - (display "Live object statistics: GC'ing\n") - (ly:reset-all-fonts) - (gc) - (gc) - (display "Asserting dead objects\n") - (ly:set-option 'debug-gc-assert-parsed-dead #t) - (gc) - (ly:set-option 'debug-gc-assert-parsed-dead #f) - (set! stats (gc-live-object-stats)) - (display "Dumping live object statistics.\n") - (dump-live-object-stats outfile))) + (let* ((stats #f)) + (ly:progress "Live object statistics: GC'ing\n") + (ly:reset-all-fonts) + (gc) + (gc) + (ly:progress "Asserting dead objects\n") + (ly:set-option 'debug-gc-assert-parsed-dead #t) + (gc) + (ly:set-option 'debug-gc-assert-parsed-dead #f) + (for-each + (lambda (x) + (ly:programming-error "Parsed object should be dead: ~a" x)) + (ly:parsed-undead-list!)) + (set! stats (gc-live-object-stats)) + (ly:progress "Dumping live object statistics.\n") + (dump-live-object-stats outfile))) (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)) - '(protected-objects bytes-malloced cell-heap-size))) + (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))) @@ -674,23 +665,24 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "Read `/proc/self' to check up on memory use." (define (gulp-file name) (let* ((file (open-input-file name)) - (text (read-delimited "" file))) + (text (read-delimited "" file))) (close file) text)) (let* ((stat (gulp-file "/proc/self/status")) - (lines (string-split stat #\newline)) - (interesting (filter identity - (map - (lambda (l) - (string-match "^VmData:[ \t]*([0-9]*) kB" l)) - lines))) - (mem (string->number (match:substring (car interesting) 1)))) - (display (format "VMDATA: ~a\n" mem)) + (lines (string-split stat #\newline)) + (interesting (filter identity + (map + (lambda (l) + (string-match "^VmData:[ \t]*([0-9]*) kB" l)) + lines))) + (mem (string->number (match:substring (car interesting) 1)))) + (format #t "VMDATA: ~a\n" mem) (display (gc-stats)) - (if (> mem 100000) - (begin (dump-gc-protects) - (raise 1))))) + (newline) + (if (> mem 500000) + (begin (dump-gc-protects) + (raise 1))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -699,11 +691,11 @@ LilyPond safe mode. The syntax is the same as `define*-public'." PIDs or the number of the process." (define (helper count acc) (if (> count 0) - (let* ((pid (primitive-fork))) - (if (= pid 0) - (1- count) - (helper (1- count) (cons pid acc)))) - acc)) + (let* ((pid (primitive-fork))) + (if (= pid 0) + (1- count) + (helper (1- count) (cons pid acc)))) + acc)) (helper count '())) @@ -713,9 +705,9 @@ PIDs or the number of the process." "Exit function for lilypond" (if (not silently) (case status - ((0) (ly:success (_ "Compilation successfully completed"))) - ((1) (ly:warning (_ "Compilation completed with warnings or errors"))) - (else (ly:message "")))) + ((0) (ly:basic-progress (_ "Success: compilation successfully completed"))) + ((1) (ly:warning (_ "Compilation completed with warnings or errors"))) + (else (ly:message "")))) (exit status)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -725,141 +717,149 @@ PIDs or the number of the process." (eval-string (ly:command-line-code)) (if (ly:get-option 'help) (begin (ly:option-usage) - (ly:exit 0 #t))) + (ly:exit 0 #t))) (if (ly:get-option 'show-available-fonts) (begin (ly:font-config-display-fonts) - (ly:exit 0 #t))) + (ly:exit 0 #t))) (if (ly:get-option 'gui) (gui-main files)) (if (null? files) (begin (ly:usage) - (ly:exit 2 #t))) + (ly:exit 2 #t))) (if (ly:get-option 'read-file-list) (set! files - (filter (lambda (s) - (> (string-length s) 0)) - (apply append - (map (lambda (f) - (string-split (ly:gulp-file f) #\nl)) - files))))) + (filter (lambda (s) + (> (string-length s) 0)) + (apply append + (map (lambda (f) + (string-split (ly:gulp-file f) #\nl)) + files))))) (if (and (number? (ly:get-option 'job-count)) - (>= (length files) (ly:get-option 'job-count))) + (>= (length files) (ly:get-option 'job-count))) (let* ((count (ly:get-option 'job-count)) - (split-todo (split-list files count)) - (joblist (multi-fork count)) - (errors '())) - (if (not (string-or-symbol? (ly:get-option 'log-file))) - (ly:set-option 'log-file "lilypond-multi-run")) - (if (number? joblist) - (begin (ly:set-option - 'log-file (format "~a-~a" - (ly:get-option 'log-file) joblist)) - (set! files (vector-ref split-todo joblist))) - (begin (ly:progress "\nForking into jobs: ~a\n" joblist) - (for-each - (lambda (pid) - (let* ((stat (cdr (waitpid pid)))) - (if (not (= stat 0)) - (set! errors - (acons (list-element-index joblist pid) - stat errors))))) - joblist) - (for-each - (lambda (x) - (let* ((job (car x)) - (state (cdr x)) - (logfile (format "~a-~a.log" - (ly:get-option 'log-file) job)) - (log (ly:gulp-file logfile)) - (len (string-length log)) - (tail (substring log (max 0 (- len 1024))))) - (if (status:term-sig state) - (ly:message - "\n\n~a\n" - (format (_ "job ~a terminated with signal: ~a") - job (status:term-sig state))) - (ly:message - (_ "logfile ~a (exit ~a):\n~a") - logfile (status:exit-val state) tail)))) - errors) - (if (pair? errors) - (ly:error "Children ~a exited with errors." - (map car errors))) - ;; must overwrite individual entries - (if (ly:get-option 'dump-profile) - (dump-profile "lily-run-total" - '(0 0) (profile-measurements))) - (if (null? errors) - (ly:exit 0 #f) - (ly:exit 1 #f)))))) + (split-todo (split-list files count)) + (joblist (multi-fork count)) + (errors '())) + (if (not (string-or-symbol? (ly:get-option 'log-file))) + (ly:set-option 'log-file "lilypond-multi-run")) + (if (number? joblist) + (begin (ly:set-option + '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) + (for-each + (lambda (pid) + (let* ((stat (cdr (waitpid pid)))) + (if (not (= stat 0)) + (set! errors + (acons (list-element-index joblist pid) + stat errors))))) + joblist) + (for-each + (lambda (x) + (let* ((job (car x)) + (state (cdr x)) + (logfile (format #f "~a-~a.log" + (ly:get-option 'log-file) job)) + (log (ly:gulp-file logfile)) + (len (string-length log)) + (tail (substring log (max 0 (- len 1024))))) + (if (status:term-sig state) + (ly:message + "\n\n~a\n" + (format #f (_ "job ~a terminated with signal: ~a") + job (status:term-sig state))) + (ly:message + (_ "logfile ~a (exit ~a):\n~a") + logfile (status:exit-val state) tail)))) + errors) + (if (pair? errors) + (ly:error "Children ~a exited with errors." + (map car errors))) + ;; must overwrite individual entries + (if (ly:get-option 'dump-profile) + (dump-profile "lily-run-total" + '(0 0) (profile-measurements))) + (if (null? errors) + (ly:exit 0 #f) + (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 - (coverage:show-all (lambda (f) - (string-contains f "lilypond"))))) + (begin + (coverage:show-all (lambda (f) + (string-contains f "lilypond"))))) (if (pair? failed) - (begin (ly:error (_ "failed files: ~S") (string-join failed)) - (ly:exit 1 #f)) - (begin - (ly:exit 0 #f))))) + (begin (ly:error (_ "failed files: ~S") (string-join failed)) + (ly:exit 1 #f)) + (begin + (ly:exit 0 #f))))) (define-public (lilypond-all files) (let* ((failed '()) - (separate-logs (ly:get-option 'separate-log-files)) - (ping-log - (if separate-logs - (open-file (if (string-or-symbol? (ly:get-option 'log-file)) - (format "~a.log" (ly:get-option 'log-file)) - "/dev/stderr") "a") #f)) - (do-measurements (ly:get-option 'dump-profile)) - (handler (lambda (key failed-file) - (set! failed (append (list failed-file) failed))))) + (separate-logs (ly:get-option 'separate-log-files)) + (ping-log + (if separate-logs + (open-file (if (string-or-symbol? (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) + (set! failed (append (list failed-file) failed))))) (gc) (for-each (lambda (x) (let* ((start-measurements (if do-measurements - (profile-measurements) - #f)) - (base (dir-basename x ".ly")) - (all-settings (ly:all-options))) - (if separate-logs - (ly:stderr-redirect (format "~a.log" base) "w")) - (if ping-log - (format ping-log "Processing ~a\n" base)) - (if (ly:get-option 'trace-memory-frequency) - (mtrace:start-trace (ly:get-option 'trace-memory-frequency))) - (lilypond-file handler x) - (if start-measurements - (dump-profile x start-measurements (profile-measurements))) - (if (ly:get-option 'trace-memory-frequency) - (begin (mtrace:stop-trace) - (mtrace:dump-results base))) - (for-each (lambda (s) - (ly:set-option (car s) (cdr s))) - all-settings) - (ly:set-option 'debug-gc-assert-parsed-dead #t) - (gc) - (ly:set-option 'debug-gc-assert-parsed-dead #f) - (if (ly:get-option 'debug-gc) - (dump-gc-protects) - (ly:reset-all-fonts)))) + (profile-measurements) + #f)) + (base (dir-basename x ".ly")) + (all-settings (ly:all-options))) + (if separate-logs + (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) + (mtrace:start-trace (ly:get-option 'trace-memory-frequency))) + (lilypond-file handler x) + (ly:check-expected-warnings) + (if start-measurements + (dump-profile x start-measurements (profile-measurements))) + (if (ly:get-option 'trace-memory-frequency) + (begin (mtrace:stop-trace) + (mtrace:dump-results base))) + (for-each (lambda (s) + (ly:set-option (car s) (cdr s))) + all-settings) + (ly:set-option 'debug-gc-assert-parsed-dead #t) + (gc) + (ly:set-option 'debug-gc-assert-parsed-dead #f) + (for-each + (lambda (x) + (ly:programming-error "Parsed object should be dead: ~a" x)) + (ly:parsed-undead-list!)) + (if (ly:get-option 'debug-gc) + (dump-gc-protects) + (ly:reset-all-fonts)) + (flush-all-ports))) files) ;; Ensure a notice re failed files is written to aggregate logfile. (if ping-log - (format ping-log "Failed files: ~a\n" failed)) + (format ping-log "Failed files: ~a\n" failed)) (if (ly:get-option 'dump-profile) - (dump-profile "lily-run-total" '(0 0) (profile-measurements))) + (dump-profile "lily-run-total" '(0 0) (profile-measurements))) failed)) +(define-public lilypond-declarations '()) + (define (lilypond-file handler file-name) (catch 'ly-file-failed - (lambda () (ly:parse-file file-name)) - (lambda (x . args) (handler x file-name)))) + (lambda () (ly:parse-file file-name)) + (lambda (x . args) (handler x file-name)))) (use-modules (scm editor)) @@ -868,27 +868,27 @@ PIDs or the number of the process." (gui-no-files-handler)) (if (not (string? (ly:get-option 'log-file))) (let* ((base (dir-basename (car files) ".ly")) - (log-name (string-append base ".log"))) - (if (not (ly:get-option 'gui)) - (ly:message (_ "Redirecting output to ~a...") log-name)) - (ly:stderr-redirect log-name "w") - (ly:message "# -*-compilation-*-")) + (log-name (string-append base ".log"))) + (if (not (ly:get-option 'gui)) + (ly:message (_ "Redirecting output to ~a...") log-name)) + (ly:stderr-redirect log-name "w") + (ly:message "# -*-compilation-*-")) (let ((failed (lilypond-all files))) - (if (pair? failed) - (begin - ;; ugh - (ly:stderr-redirect "foo" "r") - (system (get-editor-command log-name 0 0 0)) - (ly:error (_ "failed files: ~S") (string-join failed)) - ;; not reached? - (exit 1)) - (ly:exit 0 #f))))) + (if (pair? failed) + (begin + ;; ugh + (ly:stderr-redirect "foo" "r") + (system (get-editor-command log-name 0 0 0)) + (ly:error (_ "failed files: ~S") (string-join failed)) + ;; not reached? + (exit 1)) + (ly:exit 0 #f))))) (define (gui-no-files-handler) (let* ((ly (string-append (ly:effective-prefix) "/ly/")) - ;; FIXME: soft-code, localize - (welcome-ly (string-append ly "Welcome_to_LilyPond.ly")) - (cmd (get-editor-command welcome-ly 0 0 0))) + ;; FIXME: soft-code, localize + (welcome-ly (string-append ly "Welcome_to_LilyPond.ly")) + (cmd (get-editor-command welcome-ly 0 0 0))) (ly:message (_ "Invoking `~a'...\n") cmd) (system cmd) (ly:exit 1 #f))) diff --git a/scm/ly-syntax-constructors.scm b/scm/ly-syntax-constructors.scm index 171cee1240..9cbec5fc4f 100644 --- a/scm/ly-syntax-constructors.scm +++ b/scm/ly-syntax-constructors.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2006--2011 Erik Sandberg +;;;; Copyright (C) 2006--2012 Erik Sandberg ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -43,13 +43,38 @@ m))) ;; Music function: Apply function and check return value. -(define-ly-syntax-loc (music-function parser loc fun args) - (let ((m (apply fun (cons* parser loc args)))) - (if (ly:music? m) - m +;; args are in reverse order, rest may specify additional ones +;; +;; If args is not a proper list, an error has been flagged earlier +;; and no fallback value had been available. In this case, +;; we don't call the function but rather return the general +;; fallback. +(define-ly-syntax (music-function parser loc fun args . rest) + (let* ((sig (ly:music-function-signature fun)) + (pred (if (pair? (car sig)) (caar sig) (car sig))) + (good (proper-list? args)) + (m (and good (apply (ly:music-function-extract fun) + parser loc (reverse! args rest))))) + (if (and good (pred m)) (begin - (ly:parser-error parser (_ "Music head function must return Music object") loc) - (make-music 'Music))))) + (if (ly:music? m) + (set! (ly:music-property m 'origin) loc)) + m) + (begin + (if good + (ly:parser-error parser + (format #f (_ "~a function cannot return ~a") + (type-name pred) m) + loc)) + (and (pair? (car sig)) (cdar sig)))))) + +(define-ly-syntax (argument-error parser location n pred arg) + (ly:parser-error + parser + (format #f + (_ "wrong type for argument ~a. Expecting ~a, found ~s") + n (type-name pred) arg) + location)) (define-ly-syntax-simple (void-music) (make-music 'Music)) @@ -79,16 +104,6 @@ (define-ly-syntax-simple (bar-check) (make-music 'BarCheck)) -(define-ly-syntax-simple (time-scaled-music fraction music) - (make-music 'TimeScaledMusic - 'element (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction))) - 'numerator (car fraction) - 'denominator (cdr fraction))) - -(define-ly-syntax-simple (transpose-music pitch music) - (make-music 'TransposedMusic - 'element (ly:music-transpose music pitch))) - (define-ly-syntax (tempo parser location text . rest) (let* ((unit (and (pair? rest) (car rest))) @@ -118,10 +133,6 @@ (make-sequential-music (list tempo-change tempo-set)) tempo-change))) -(define-ly-syntax-simple (skip-music dur) - (make-music 'SkipMusic - 'duration dur)) - (define-ly-syntax-simple (repeat type num body alts) (make-repeat type num body alts)) @@ -148,20 +159,20 @@ into a @code{MultiMeasureTextEvent}." 'duration duration 'origin location)) -(define-ly-syntax (repetition-chord parser location previous-chord repetition-function duration articulations) - (make-music 'RepeatedChord - 'original-chord previous-chord - 'element (repetition-function previous-chord location duration articulations) +(define-ly-syntax (repetition-chord parser location duration articulations) + (make-music 'EventChord + 'duration duration + 'elements articulations 'origin location)) -(define-ly-syntax-simple (context-specification type id mus ops create-new) +(define-ly-syntax-simple (context-specification type id ops create-new mus) (let* ((type-sym (if (symbol? type) type (string->symbol type))) (csm (context-spec-music mus type-sym id))) (set! (ly:music-property csm 'property-operations) ops) (if create-new (set! (ly:music-property csm 'create-new) #t)) csm)) -(define-ly-syntax (property-operation parser location once ctx music-type symbol . args) +(define-ly-syntax (property-operation parser location ctx music-type symbol . args) (let* ((props (case music-type ((PropertySet) (list 'value (car args))) ((PropertyUnset) '()) @@ -175,11 +186,10 @@ into a @code{MultiMeasureTextEvent}." (list 'grob-property-path (car args)) (list 'grob-property-path args))) (else (ly:error (_ "Invalid property operation ~a") music-type)))) - (oprops (if once (cons* 'once once props) props)) (m (apply make-music music-type 'symbol symbol 'origin location - oprops))) + props))) (make-music 'ContextSpeccedMusic 'element m 'context-type ctx @@ -201,6 +211,9 @@ into a @code{MultiMeasureTextEvent}." (set! unique-counter (1+ unique-counter)) (call-with-output-string (lambda (p) (format p "uniqueContext~s" unique-counter)))) +(define-ly-syntax-simple (lyric-event text duration) + (make-lyric-event text duration)) + (define (lyric-combine-music sync music loc) ;; CompletizeExtenderEvent is added following the last lyric in MUSIC ;; to signal to the Extender_engraver that any pending extender should @@ -237,30 +250,3 @@ into a @code{MultiMeasureTextEvent}." 'origin loc))) addlyrics-list))) (make-simultaneous-music (cons voice lyricstos)))) - -(define-ly-syntax (make-mark-set parser location label) - "Make the music for the \\mark command." - (let* ((set (and (integer? label) - (context-spec-music (make-property-set 'rehearsalMark label) - 'Score))) - (ev (make-music 'MarkEvent)) - (ch (make-event-chord (list ev)))) - - (set! (ly:music-property ev 'origin) location) - (if set - (make-sequential-music (list set ch)) - (begin - (set! (ly:music-property ev 'label) label) - ch)))) - -(define-ly-syntax (partial parser location dur) - "Make a partial measure." - - ;; We use `descend-to-context' here instead of `context-spec-music' to - ;; ensure \partial still works if the Timing_translator is moved - (descend-to-context - (context-spec-music (make-music 'PartialSet - 'origin location - 'partial-duration dur) - 'Timing) - 'Score)) diff --git a/scm/markup-macros.scm b/scm/markup-macros.scm new file mode 100644 index 0000000000..26390a6bd7 --- /dev/null +++ b/scm/markup-macros.scm @@ -0,0 +1,474 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys +;;;; +;;;; LilyPond is free software: you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; 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 . + +" +Internally markup is stored as lists, whose head is a function. + + (FUNCTION ARG1 ARG2 ... ) + +When the markup is formatted, then FUNCTION is called as follows + + (FUNCTION GROB PROPS ARG1 ARG2 ... ) + +GROB is the current grob, PROPS is a list of alists, and ARG1.. are +the rest of the arguments. + +The function should return a stencil (i.e. a formatted, ready to +print object). + + +To add a markup command, use the define-markup-command utility. + + (define-markup-command (mycommand layout prop arg1 ...) (arg1-type? ...) + \"my command usage and description\" + ...function body...) + +The command is now available in markup mode, e.g. + + \\markup { .... \\MYCOMMAND #1 argument ... } + +" ; " + +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; markup definer utilities + +;; For documentation purposes +;; category -> markup functions +(define-public markup-functions-by-category (make-hash-table 150)) +;; markup function -> used properties +(define-public markup-functions-properties (make-weak-key-hash-table 151)) +;; List of markup list functions +(define-public markup-list-functions (make-weak-key-hash-table 151)) + +(use-modules (ice-9 optargs)) + +(defmacro*-public define-markup-command + (command-and-args signature + #:key (category '()) (properties '()) + #:rest body) + " +* Define a COMMAND-markup function after command-and-args and body, +register COMMAND-markup and its signature, + +* add COMMAND-markup to markup-functions-by-category, + +* sets COMMAND-markup markup-signature object property, + +* define a make-COMMAND-markup function. + +Syntax: + (define-markup-command (COMMAND layout props . arguments) + argument-types + [ #:properties properties ] + \"documentation string\" + ...command body...) + +where: + `argument-types' is a list of type predicates for arguments + `properties' a list of (property default-value) lists + +The specified properties are available as let-bound variables in the +command body, using the respective `default-value' as fallback in case +`property' is not found in `props'. `props' itself is left unchanged: +if you want defaults specified in that manner passed down into other +markup functions, you need to adjust `props' yourself. + +The autogenerated documentation makes use of some optional +specifications that are otherwise ignored: + +After `argument-types', you may also specify + [ #:category category ] +where: + `category' is either a symbol or a symbol list specifying the + category for this markup command in the docs. + +As an element of the `properties' list, you may directly use a +COMMANDx-markup symbol instead of a `(prop value)' list to indicate +that this markup command is called by the newly defined command, +adding its properties to the documented properties of the new +command. There is no protection against circular definitions. +" + (let* ((command (car command-and-args)) + (args (cdr command-and-args)) + (command-name (string->symbol (format #f "~a-markup" command))) + (make-markup-name (string->symbol (format #f "make-~a-markup" command)))) + (while (and (pair? body) (keyword? (car body))) + (set! body (cddr body))) + `(begin + ;; define the COMMAND-markup function + ,(let* ((documentation (if (string? (car body)) + (list (car body)) + '())) + (real-body (if (or (null? documentation) + (null? (cdr body))) + body (cdr body)))) + `(define-public (,command-name ,@args) + ,@documentation + (let ,(map (lambda (prop-spec) + (let ((prop (car prop-spec)) + (default-value (if (null? (cdr prop-spec)) + #f + (cadr prop-spec))) + (props (cadr args))) + `(,prop (chain-assoc-get ',prop ,props ,default-value)))) + (filter pair? properties)) + ,@real-body))) + (set! (markup-command-signature ,command-name) (list ,@signature)) + ;; Register the new function, for markup documentation + ,@(map (lambda (category) + `(hashq-set! + (or (hashq-ref markup-functions-by-category ',category) + (let ((hash (make-weak-key-hash-table 151))) + (hashq-set! markup-functions-by-category ',category + hash) + hash)) + ,command-name #t)) + (if (list? category) category (list category))) + ;; Used properties, for markup documentation + (hashq-set! markup-functions-properties + ,command-name + (list ,@(map (lambda (prop-spec) + (cond ((symbol? prop-spec) + prop-spec) + ((not (null? (cdr prop-spec))) + `(list ',(car prop-spec) ,(cadr prop-spec))) + (else + `(list ',(car prop-spec))))) + (if (pair? args) + properties + (list))))) + ;; define the make-COMMAND-markup function + (define-public (,make-markup-name . args) + (let ((sig (list ,@signature))) + (make-markup ,command-name ,(symbol->string make-markup-name) sig args)))))) + +(defmacro*-public define-markup-list-command + (command-and-args signature #:key (properties '()) #:rest body) + "Same as `define-markup-command', but defines a command that, when +interpreted, returns a list of stencils instead of a single one" + (let* ((command (car command-and-args)) + (args (cdr command-and-args)) + (command-name (string->symbol (format #f "~a-markup-list" command))) + (make-markup-name (string->symbol (format #f "make-~a-markup-list" command)))) + (while (and (pair? body) (keyword? (car body))) + (set! body (cddr body))) + `(begin + ;; define the COMMAND-markup-list function + ,(let* ((documentation (if (string? (car body)) + (list (car body)) + '())) + (real-body (if (or (null? documentation) + (null? (cdr body))) + body (cdr body)))) + `(define-public (,command-name ,@args) + ,@documentation + (let ,(map (lambda (prop-spec) + (let ((prop (car prop-spec)) + (default-value (if (null? (cdr prop-spec)) + #f + (cadr prop-spec))) + (props (cadr args))) + `(,prop (chain-assoc-get ',prop ,props ,default-value)))) + (filter pair? properties)) + ,@real-body))) + (set! (markup-command-signature ,command-name) (list ,@signature)) + ;; add the command to markup-list-function-list, for markup documentation + (hashq-set! markup-list-functions ,command-name #t) + ;; Used properties, for markup documentation + (hashq-set! markup-functions-properties + ,command-name + (list ,@(map (lambda (prop-spec) + (cond ((symbol? prop-spec) + prop-spec) + ((not (null? (cdr prop-spec))) + `(list ',(car prop-spec) ,(cadr prop-spec))) + (else + `(list ',(car prop-spec))))) + (if (pair? args) + properties + (list))))) + ;; it's a markup-list command: + (set-object-property! ,command-name 'markup-list-command #t) + ;; define the make-COMMAND-markup-list function + (define-public (,make-markup-name . args) + (let ((sig (list ,@signature))) + (list (make-markup ,command-name + ,(symbol->string make-markup-name) sig args))))))) + +;;;;;;;;;;;;;;; +;;; Utilities for storing and accessing markup commands signature +;;; Examples: +;;; +;;; (set! (markup-command-signature raise-markup) (list number? markup?)) +;;; ==> (# #) +;;; +;;; (markup-command-signature raise-markup) +;;; ==> (# #) +;;; + +(define-public (markup-command-signature-ref markup-command) + "Return markup-command's signature (the 'markup-signature object property)" + (object-property markup-command 'markup-signature)) + +(define-public (markup-command-signature-set! markup-command signature) + "Set markup-command's signature (as object property)" + (set-object-property! markup-command 'markup-signature signature) + signature) + +(define-public markup-command-signature + (make-procedure-with-setter markup-command-signature-ref + markup-command-signature-set!)) + +;;;;;;;;;;;;;;;;;;;;;; +;;; markup type predicates + +(define (markup-function? x) + (and (markup-command-signature x) + (not (object-property x 'markup-list-command)))) + +(define (markup-list-function? x) + (and (markup-command-signature x) + (object-property x 'markup-list-command))) + +(define-public (markup-command-list? x) + "Determine if `x' is a markup command list, ie. a list composed of +a markup list function and its arguments." + (and (pair? x) (markup-list-function? (car x)))) + +(define-public (markup-list? arg) + "Return a true value if `x' is a list of markups or markup command lists." + (define (markup-list-inner? lst) + (or (null? lst) + (and (or (markup? (car lst)) (markup-command-list? (car lst))) + (markup-list-inner? (cdr lst))))) + (not (not (and (list? arg) (markup-list-inner? arg))))) + +(define (markup-argument-list? signature arguments) + "Typecheck argument list." + (if (and (pair? signature) (pair? arguments)) + (and ((car signature) (car arguments)) + (markup-argument-list? (cdr signature) (cdr arguments))) + (and (null? signature) (null? arguments)))) + + +(define (markup-argument-list-error signature arguments number) + "return (ARG-NR TYPE-EXPECTED ARG-FOUND) if an error is detected, or +#f is no error found. +" + (if (and (pair? signature) (pair? arguments)) + (if (not ((car signature) (car arguments))) + (list number (type-name (car signature)) (car arguments)) + (markup-argument-list-error (cdr signature) (cdr arguments) (+ 1 number))) + #f)) + +;; +;; full recursive typecheck. +;; +(define (markup-typecheck? arg) + (or (string? arg) + (and (pair? arg) + (markup-function? (car arg)) + (markup-argument-list? (markup-command-signature (car arg)) + (cdr arg))))) + +;; +;; +;; +;; +(define (markup-thrower-typecheck arg) + "typecheck, and throw an error when something amiss. + +Uncovered - cheap-markup? is used." + + (cond ((string? arg) #t) + ((not (pair? arg)) + (throw 'markup-format "Not a pair" arg)) + ((not (markup-function? (car arg))) + (throw 'markup-format "Not a markup function " (car arg))) + ((not (markup-argument-list? (markup-command-signature (car arg)) + (cdr arg))) + (throw 'markup-format "Arguments failed typecheck for " arg))) + #t) + +;; +;; good enough if you only use make-XXX-markup functions. +;; +(define (cheap-markup? x) + (or (string? x) + (and (pair? x) + (markup-function? (car x))))) + +;; +;; replace by markup-thrower-typecheck for more detailed diagnostics. +;; +(define-public markup? cheap-markup?) + +(define-public (make-markup markup-function make-name signature args) + " Construct a markup object from MARKUP-FUNCTION and ARGS. Typecheck +against SIGNATURE, reporting MAKE-NAME as the user-invoked function. +" + (let* ((arglen (length args)) + (siglen (length signature)) + (error-msg (if (and (> siglen 0) (> arglen 0)) + (markup-argument-list-error signature args 1) + #f))) + (if (or (not (= arglen siglen)) (< siglen 0) (< arglen 0)) + (ly:error (string-append make-name ": " + (_ "Wrong number of arguments. Expect: ~A, found ~A: ~S")) + siglen arglen args)) + (if error-msg + (ly:error + (string-append + make-name ": " + (_ "Invalid argument in position ~A. Expect: ~A, found: ~S.")) + (car error-msg) (cadr error-msg)(caddr error-msg)) + (cons markup-function args)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; markup constructors +;;; lilypond-like syntax for markup construction in scheme. + +(use-modules (ice-9 receive)) + +(define (compile-all-markup-expressions expr) + "Return a list of canonical markups expressions, e.g.: + (#:COMMAND1 arg11 arg12 #:COMMAND2 arg21 arg22 arg23) + ===> + ((make-COMMAND1-markup arg11 arg12) + (make-COMMAND2-markup arg21 arg22 arg23) ...)" + (do ((rest expr rest) + (markps '() markps)) + ((null? rest) (reverse markps)) + (receive (m r) (compile-markup-expression rest) + (set! markps (cons m markps)) + (set! rest r)))) + +(define (keyword->make-markup key) + "Transform a keyword, e.g. #:COMMAND, in a make-COMMAND-markup symbol." + (string->symbol (string-append "make-" (symbol->string (keyword->symbol key)) "-markup"))) + +(define (compile-markup-expression expr) + "Return two values: the first complete canonical markup expression + found in `expr', e.g. (make-COMMAND-markup arg1 arg2 ...), + and the rest expression." + (cond ((and (pair? expr) + (keyword? (car expr))) + ;; expr === (#:COMMAND arg1 ...) + (let ((command (symbol->string (keyword->symbol (car expr))))) + (if (not (pair? (lookup-markup-command command))) + (ly:error (_ "Not a markup command: ~A") command)) + (let* ((sig (markup-command-signature + (car (lookup-markup-command command)))) + (sig-len (length sig))) + (do ((i 0 (1+ i)) + (args '() args) + (rest (cdr expr) rest)) + ((>= i sig-len) + (values (cons (keyword->make-markup (car expr)) (reverse args)) rest)) + (cond ((eqv? (list-ref sig i) markup-list?) + ;; (car rest) is a markup list + (set! args (cons `(list ,@(compile-all-markup-expressions (car rest))) args)) + (set! rest (cdr rest))) + (else + ;; pick up one arg in `rest' + (receive (a r) (compile-markup-arg rest) + (set! args (cons a args)) + (set! rest r)))))))) + ((and (pair? expr) + (pair? (car expr)) + (keyword? (caar expr))) + ;; expr === ((#:COMMAND arg1 ...) ...) + (receive (m r) (compile-markup-expression (car expr)) + (values m (cdr expr)))) + ((and (pair? expr) + (string? (car expr))) ;; expr === ("string" ...) + (values `(make-simple-markup ,(car expr)) (cdr expr))) + (else + ;; expr === (symbol ...) or ((funcall ...) ...) + (values (car expr) + (cdr expr))))) + +(define (compile-all-markup-args expr) + "Transform `expr' into markup arguments" + (do ((rest expr rest) + (args '() args)) + ((null? rest) (reverse args)) + (receive (a r) (compile-markup-arg rest) + (set! args (cons a args)) + (set! rest r)))) + +(define (compile-markup-arg expr) + "Return two values: the desired markup argument, and the rest arguments" + (cond ((null? expr) + ;; no more args + (values '() '())) + ((keyword? (car expr)) + ;; expr === (#:COMMAND ...) + ;; ==> build and return the whole markup expression + (compile-markup-expression expr)) + ((and (pair? (car expr)) + (keyword? (caar expr))) + ;; expr === ((#:COMMAND ...) ...) + ;; ==> build and return the whole markup expression(s) + ;; found in (car expr) + (receive (markup-expr rest-expr) (compile-markup-expression (car expr)) + (if (null? rest-expr) + (values markup-expr (cdr expr)) + (values `(list ,markup-expr ,@(compile-all-markup-args rest-expr)) + (cdr expr))))) + ((and (pair? (car expr)) + (pair? (caar expr))) + ;; expr === (((foo ...) ...) ...) + (values (cons 'list (compile-all-markup-args (car expr))) (cdr expr))) + (else (values (car expr) (cdr expr))))) + +(define (lookup-markup-command-aux symbol) + (let ((proc (catch 'misc-error + (lambda () + (module-ref (current-module) symbol)) + (lambda (key . args) #f)))) + (and (procedure? proc) proc))) + +(define-public (lookup-markup-command code) + (let ((proc (lookup-markup-command-aux + (string->symbol (format #f "~a-markup" code))))) + (and proc (markup-function? proc) + (cons proc (markup-command-signature proc))))) + +(define-public (lookup-markup-list-command code) + (let ((proc (lookup-markup-command-aux + (string->symbol (format #f "~a-markup-list" code))))) + (and proc (markup-list-function? proc) + (cons proc (markup-command-signature proc))))) + +;;;;;;;;;;;;;;;;;;;;;; +;;; used in parser.yy to map a list of markup commands on markup arguments +(define-public (map-markup-command-list commands markups) + "`markups' being a list of markups, eg (markup1 markup2 markup3), +and `commands' a list of commands with their scheme arguments, in reverse order, +eg: ((italic) (raise 4) (bold)), maps the commands on each markup argument, eg: + ((bold (raise 4 (italic markup1))) + (bold (raise 4 (italic markup2))) + (bold (raise 4 (italic markup3)))) +" + (map-in-order (lambda (arg) + (let ((result arg)) + (for-each (lambda (cmd) + (set! result (append cmd (list result)))) + commands) + result)) + markups)) diff --git a/scm/markup.scm b/scm/markup.scm index 6bd9fd6236..31bbaeeb42 100644 --- a/scm/markup.scm +++ b/scm/markup.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2003--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -15,227 +15,6 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . -" -Internally markup is stored as lists, whose head is a function. - - (FUNCTION ARG1 ARG2 ... ) - -When the markup is formatted, then FUNCTION is called as follows - - (FUNCTION GROB PROPS ARG1 ARG2 ... ) - -GROB is the current grob, PROPS is a list of alists, and ARG1.. are -the rest of the arguments. - -The function should return a stencil (i.e. a formatted, ready to -print object). - - -To add a markup command, use the define-markup-command utility. - - (define-markup-command (mycommand layout prop arg1 ...) (arg1-type? ...) - \"my command usage and description\" - ...function body...) - -The command is now available in markup mode, e.g. - - \\markup { .... \\MYCOMMAND #1 argument ... } - -" ; " - -;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; markup definer utilities - -;; For documentation purposes -;; category -> markup functions -(define-public markup-functions-by-category (make-hash-table 150)) -;; markup function -> used properties -(define-public markup-functions-properties (make-weak-key-hash-table 151)) -;; List of markup list functions -(define-public markup-list-functions (make-weak-key-hash-table 151)) - -(use-modules (ice-9 optargs)) - -(defmacro*-public define-markup-command - (command-and-args signature - #:key (category '()) (properties '()) - #:rest body) - " -* Define a COMMAND-markup function after command-and-args and body, -register COMMAND-markup and its signature, - -* add COMMAND-markup to markup-functions-by-category, - -* sets COMMAND-markup markup-signature object property, - -* define a make-COMMAND-markup function. - -Syntax: - (define-markup-command (COMMAND layout props . arguments) - argument-types - [ #:properties properties ] - \"documentation string\" - ...command body...) - -where: - `argument-types' is a list of type predicates for arguments - `properties' a list of (property default-value) lists - -The specified properties are available as let-bound variables in the -command body, using the respective `default-value' as fallback in case -`property' is not found in `props'. `props' itself is left unchanged: -if you want defaults specified in that manner passed down into other -markup functions, you need to adjust `props' yourself. - -The autogenerated documentation makes use of some optional -specifications that are otherwise ignored: - -After `argument-types', you may also specify - [ #:category category ] -where: - `category' is either a symbol or a symbol list specifying the - category for this markup command in the docs. - -As an element of the `properties' list, you may directly use a -COMMANDx-markup symbol instead of a `(prop value)' list to indicate -that this markup command is called by the newly defined command, -adding its properties to the documented properties of the new -command. There is no protection against circular definitions. -" - (let* ((command (car command-and-args)) - (args (cdr command-and-args)) - (command-name (string->symbol (format #f "~a-markup" command))) - (make-markup-name (string->symbol (format #f "make-~a-markup" command)))) - (while (and (pair? body) (keyword? (car body))) - (set! body (cddr body))) - `(begin - ;; define the COMMAND-markup function - ,(let* ((documentation (if (string? (car body)) - (list (car body)) - '())) - (real-body (if (or (null? documentation) - (null? (cdr body))) - body (cdr body)))) - `(define-public (,command-name ,@args) - ,@documentation - (let ,(map (lambda (prop-spec) - (let ((prop (car prop-spec)) - (default-value (if (null? (cdr prop-spec)) - #f - (cadr prop-spec))) - (props (cadr args))) - `(,prop (chain-assoc-get ',prop ,props ,default-value)))) - (filter pair? properties)) - ,@real-body))) - (set! (markup-command-signature ,command-name) (list ,@signature)) - ;; Register the new function, for markup documentation - ,@(map (lambda (category) - `(hashq-set! - (or (hashq-ref markup-functions-by-category ',category) - (let ((hash (make-weak-key-hash-table 151))) - (hashq-set! markup-functions-by-category ',category - hash) - hash)) - ,command-name #t)) - (if (list? category) category (list category))) - ;; Used properties, for markup documentation - (hashq-set! markup-functions-properties - ,command-name - (list ,@(map (lambda (prop-spec) - (cond ((symbol? prop-spec) - prop-spec) - ((not (null? (cdr prop-spec))) - `(list ',(car prop-spec) ,(cadr prop-spec))) - (else - `(list ',(car prop-spec))))) - (if (pair? args) - properties - (list))))) - ;; define the make-COMMAND-markup function - (define-public (,make-markup-name . args) - (let ((sig (list ,@signature))) - (make-markup ,command-name ,(symbol->string make-markup-name) sig args)))))) - -(defmacro*-public define-markup-list-command - (command-and-args signature #:key (properties '()) #:rest body) - "Same as `define-markup-command', but defines a command that, when -interpreted, returns a list of stencils instead of a single one" - (let* ((command (car command-and-args)) - (args (cdr command-and-args)) - (command-name (string->symbol (format #f "~a-markup-list" command))) - (make-markup-name (string->symbol (format #f "make-~a-markup-list" command)))) - (while (and (pair? body) (keyword? (car body))) - (set! body (cddr body))) - `(begin - ;; define the COMMAND-markup-list function - ,(let* ((documentation (if (string? (car body)) - (list (car body)) - '())) - (real-body (if (or (null? documentation) - (null? (cdr body))) - body (cdr body)))) - `(define-public (,command-name ,@args) - ,@documentation - (let ,(map (lambda (prop-spec) - (let ((prop (car prop-spec)) - (default-value (if (null? (cdr prop-spec)) - #f - (cadr prop-spec))) - (props (cadr args))) - `(,prop (chain-assoc-get ',prop ,props ,default-value)))) - (filter pair? properties)) - ,@real-body))) - (set! (markup-command-signature ,command-name) (list ,@signature)) - ;; add the command to markup-list-function-list, for markup documentation - (hashq-set! markup-list-functions ,command-name #t) - ;; Used properties, for markup documentation - (hashq-set! markup-functions-properties - ,command-name - (list ,@(map (lambda (prop-spec) - (cond ((symbol? prop-spec) - prop-spec) - ((not (null? (cdr prop-spec))) - `(list ',(car prop-spec) ,(cadr prop-spec))) - (else - `(list ',(car prop-spec))))) - (if (pair? args) - properties - (list))))) - ;; it's a markup-list command: - (set-object-property! ,command-name 'markup-list-command #t) - ;; define the make-COMMAND-markup-list function - (define-public (,make-markup-name . args) - (let ((sig (list ,@signature))) - (list (make-markup ,command-name - ,(symbol->string make-markup-name) sig args))))))) - -(define-public (make-markup markup-function make-name signature args) - "Construct a markup object from @var{markup-function} and @var{args}. -Typecheck against @var{signature}, reporting @var{make-name} as the -user-invoked function." - (let* ((arglen (length args)) - (siglen (length signature)) - (error-msg (if (and (> siglen 0) (> arglen 0)) - (markup-argument-list-error signature args 1) - #f))) - (if (or (not (= arglen siglen)) (< siglen 0) (< arglen 0)) - (ly:error (string-append make-name ": " - (_ "Wrong number of arguments. Expect: ~A, found ~A: ~S")) - siglen arglen args)) - (if error-msg - (ly:error - (string-append - make-name ": " - (_ "Invalid argument in position ~A. Expect: ~A, found: ~S.")) - (car error-msg) (cadr error-msg)(caddr error-msg)) - (cons markup-function args)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; markup constructors -;;; lilypond-like syntax for markup construction in scheme. - -(use-modules (ice-9 receive)) - (defmacro*-public markup (#:rest body) "The `markup' macro provides a lilypond-like syntax for building markups. @@ -253,257 +32,10 @@ Example: (markup \"foo\" #:raise 0.2 #:hbracket #:bold \"bar\" #:override '(baseline-skip . 4) - #:bracket #:column (\"baz\" \"bazr\" \"bla\")) -Use `markup*' in a \\notemode context." + #:bracket #:column (\"baz\" \"bazr\" \"bla\"))" (car (compile-all-markup-expressions `(#:line ,body)))) -(defmacro*-public markup* (#:rest body) - "Same as `markup', for use in a \\notes block." - `(ly:export (markup ,@body))) - - -(define (compile-all-markup-expressions expr) - "Return a list of canonical markups expressions, e.g.: - (#:COMMAND1 arg11 arg12 #:COMMAND2 arg21 arg22 arg23) - ===> - ((make-COMMAND1-markup arg11 arg12) - (make-COMMAND2-markup arg21 arg22 arg23) ...)" - (do ((rest expr rest) - (markps '() markps)) - ((null? rest) (reverse markps)) - (receive (m r) (compile-markup-expression rest) - (set! markps (cons m markps)) - (set! rest r)))) - -(define (keyword->make-markup key) - "Transform a keyword, e.g. #:COMMAND, in a make-COMMAND-markup symbol." - (string->symbol (string-append "make-" (symbol->string (keyword->symbol key)) "-markup"))) - -(define (compile-markup-expression expr) - "Return two values: the first complete canonical markup expression - found in `expr', e.g. (make-COMMAND-markup arg1 arg2 ...), - and the rest expression." - (cond ((and (pair? expr) - (keyword? (car expr))) - ;; expr === (#:COMMAND arg1 ...) - (let ((command (symbol->string (keyword->symbol (car expr))))) - (if (not (pair? (lookup-markup-command command))) - (ly:error (_ "Not a markup command: ~A") command)) - (let* ((sig (markup-command-signature - (car (lookup-markup-command command)))) - (sig-len (length sig))) - (do ((i 0 (1+ i)) - (args '() args) - (rest (cdr expr) rest)) - ((>= i sig-len) - (values (cons (keyword->make-markup (car expr)) (reverse args)) rest)) - (cond ((eqv? (list-ref sig i) markup-list?) - ;; (car rest) is a markup list - (set! args (cons `(list ,@(compile-all-markup-expressions (car rest))) args)) - (set! rest (cdr rest))) - (else - ;; pick up one arg in `rest' - (receive (a r) (compile-markup-arg rest) - (set! args (cons a args)) - (set! rest r)))))))) - ((and (pair? expr) - (pair? (car expr)) - (keyword? (caar expr))) - ;; expr === ((#:COMMAND arg1 ...) ...) - (receive (m r) (compile-markup-expression (car expr)) - (values m (cdr expr)))) - ((and (pair? expr) - (string? (car expr))) ;; expr === ("string" ...) - (values `(make-simple-markup ,(car expr)) (cdr expr))) - (else - ;; expr === (symbol ...) or ((funcall ...) ...) - (values (car expr) - (cdr expr))))) - -(define (compile-all-markup-args expr) - "Transform `expr' into markup arguments" - (do ((rest expr rest) - (args '() args)) - ((null? rest) (reverse args)) - (receive (a r) (compile-markup-arg rest) - (set! args (cons a args)) - (set! rest r)))) - -(define (compile-markup-arg expr) - "Return two values: the desired markup argument, and the rest arguments" - (cond ((null? expr) - ;; no more args - (values '() '())) - ((keyword? (car expr)) - ;; expr === (#:COMMAND ...) - ;; ==> build and return the whole markup expression - (compile-markup-expression expr)) - ((and (pair? (car expr)) - (keyword? (caar expr))) - ;; expr === ((#:COMMAND ...) ...) - ;; ==> build and return the whole markup expression(s) - ;; found in (car expr) - (receive (markup-expr rest-expr) (compile-markup-expression (car expr)) - (if (null? rest-expr) - (values markup-expr (cdr expr)) - (values `(list ,markup-expr ,@(compile-all-markup-args rest-expr)) - (cdr expr))))) - ((and (pair? (car expr)) - (pair? (caar expr))) - ;; expr === (((foo ...) ...) ...) - (values (cons 'list (compile-all-markup-args (car expr))) (cdr expr))) - (else (values (car expr) (cdr expr))))) - -;;;;;;;;;;;;;;; -;;; Utilities for storing and accessing markup commands signature -;;; Examples: -;;; -;;; (set! (markup-command-signature raise-markup) (list number? markup?)) -;;; ==> (# #) -;;; -;;; (markup-command-signature raise-markup) -;;; ==> (# #) -;;; - -(define-public (markup-command-signature-ref markup-command) - "Return @var{markup-command}'s signature (the @code{'markup-signature} -object property)." - (object-property markup-command 'markup-signature)) - -(define-public (markup-command-signature-set! markup-command signature) - "Set @var{markup-command}'s signature (as object property)." - (set-object-property! markup-command 'markup-signature signature) - signature) - -(define-public markup-command-signature - (make-procedure-with-setter markup-command-signature-ref - markup-command-signature-set!)) - -(define (lookup-markup-command-aux symbol) - (let ((proc (catch 'misc-error - (lambda () - (module-ref (current-module) symbol)) - (lambda (key . args) #f)))) - (and (procedure? proc) proc))) - -(define-public (lookup-markup-command code) - (let ((proc (lookup-markup-command-aux - (string->symbol (format #f "~a-markup" code))))) - (and proc (markup-function? proc) - (cons proc (markup-command-signature proc))))) - -(define-public (lookup-markup-list-command code) - (let ((proc (lookup-markup-command-aux - (string->symbol (format #f "~a-markup-list" code))))) - (and proc (markup-list-function? proc) - (cons proc (markup-command-signature proc))))) - -;;;;;;;;;;;;;;;;;;;;;; -;;; used in parser.yy to map a list of markup commands on markup arguments -(define-public (map-markup-command-list commands markups) - "@var{markups} being a list of markups, for example -@code{(markup1 markup2 markup3)}, and @var{commands} a list of commands with -their scheme arguments, in reverse order, for example -@code{((italic) (raise 4) (bold))}, map the commands on each markup argument, -for example -@example -((bold (raise 4 (italic markup1))) - (bold (raise 4 (italic markup2))) - (bold (raise 4 (italic markup3)))) -@end example" - (map-in-order (lambda (arg) - (let ((result arg)) - (for-each (lambda (cmd) - (set! result (append cmd (list result)))) - commands) - result)) - markups)) - -;;;;;;;;;;;;;;;;;;;;;; -;;; markup type predicates - -(define (markup-function? x) - (and (markup-command-signature x) - (not (object-property x 'markup-list-command)))) - -(define (markup-list-function? x) - (and (markup-command-signature x) - (object-property x 'markup-list-command))) - -(define-public (markup-command-list? x) - "Determine whether @var{x} is a markup command list, i.e. a list -composed of a markup list function and its arguments." - (and (pair? x) (markup-list-function? (car x)))) - -(define-public (markup-list? arg) - "Return @code{#t} if @var{x} is a list of markups or markup command lists." - (define (markup-list-inner? lst) - (or (null? lst) - (and (or (markup? (car lst)) (markup-command-list? (car lst))) - (markup-list-inner? (cdr lst))))) - (not (not (and (list? arg) (markup-list-inner? arg))))) - -(define (markup-argument-list? signature arguments) - "Typecheck argument list." - (if (and (pair? signature) (pair? arguments)) - (and ((car signature) (car arguments)) - (markup-argument-list? (cdr signature) (cdr arguments))) - (and (null? signature) (null? arguments)))) - - -(define (markup-argument-list-error signature arguments number) - "return (ARG-NR TYPE-EXPECTED ARG-FOUND) if an error is detected, or -#f is no error found. -" - (if (and (pair? signature) (pair? arguments)) - (if (not ((car signature) (car arguments))) - (list number (type-name (car signature)) (car arguments)) - (markup-argument-list-error (cdr signature) (cdr arguments) (+ 1 number))) - #f)) - -;; -;; full recursive typecheck. -;; -(define (markup-typecheck? arg) - (or (string? arg) - (and (pair? arg) - (markup-function? (car arg)) - (markup-argument-list? (markup-command-signature (car arg)) - (cdr arg))))) - -;; -;; -;; -;; -(define (markup-thrower-typecheck arg) - "typecheck, and throw an error when something amiss. - -Uncovered - cheap-markup? is used." - - (cond ((string? arg) #t) - ((not (pair? arg)) - (throw 'markup-format "Not a pair" arg)) - ((not (markup-function? (car arg))) - (throw 'markup-format "Not a markup function " (car arg))) - ((not (markup-argument-list? (markup-command-signature (car arg)) - (cdr arg))) - (throw 'markup-format "Arguments failed typecheck for " arg))) - #t) - -;; -;; good enough if you only use make-XXX-markup functions. -;; -(define (cheap-markup? x) - (or (string? x) - (and (pair? x) - (markup-function? (car x))))) - -;; -;; replace by markup-thrower-typecheck for more detailed diagnostics. -;; -(define-public markup? cheap-markup?) - ;; utility (define (markup-join markups sep) @@ -518,12 +50,12 @@ Uncovered - cheap-markup? is used." (define-public (interpret-markup-list layout props markup-list) (let ((stencils (list))) (for-each (lambda (m) - (set! stencils - (if (markup-command-list? m) - (append! (reverse! (apply (car m) layout props (cdr m))) - stencils) - (cons (interpret-markup layout props m) stencils)))) - markup-list) + (set! stencils + (if (markup-command-list? m) + (append! (reverse! (apply (car m) layout props (cdr m))) + stencils) + (cons (interpret-markup layout props m) stencils)))) + markup-list) (reverse! stencils))) (define-public (prepend-alist-chain key val chain) @@ -532,75 +64,88 @@ Uncovered - cheap-markup? is used." (define-public (stack-stencil-line space stencils) "DOCME" (if (and (pair? stencils) - (ly:stencil? (car stencils))) + (ly:stencil? (car stencils))) (if (and (pair? (cdr stencils)) - (ly:stencil? (cadr stencils))) + (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))) + (ly:stencil-translate-axis tail xoff X))) (car stencils)) (ly:make-stencil '() '(0 . 0) '(0 . 0)))) ;;; convert a full markup object to an approximate pure string representation -(define-public (markup->string m) +(define-public (markup->string m . argscopes) +(let* ((scopes (if (pair? argscopes) (car argscopes) '()))) ;; markup commands with one markup argument, formatting ignored (define markups-first-argument '(list - bold-markup box-markup caps-markup dynamic-markup finger-markup - fontCaps-markup huge-markup italic-markup large-markup larger-markup - medium-markup normal-size-sub-markup normal-size-super-markup - normal-text-markup normalsize-markup number-markup roman-markup - sans-markup simple-markup small-markup smallCaps-markup smaller-markup - sub-markup super-markup teeny-markup text-markup tiny-markup - typewriter-markup underline-markup upright-markup bracket-markup - circle-markup hbracket-markup parenthesize-markup rounded-box-markup - - center-align-markup center-column-markup column-markup dir-column-markup - fill-line-markup justify-markup justify-string-markup left-align-markup - left-column-markup line-markup right-align-markup right-column-markup - vcenter-markup wordwrap-markup wordwrap-string-markup )) + bold-markup box-markup caps-markup dynamic-markup finger-markup + fontCaps-markup huge-markup italic-markup large-markup larger-markup + medium-markup normal-size-sub-markup normal-size-super-markup + normal-text-markup normalsize-markup number-markup roman-markup + sans-markup simple-markup small-markup smallCaps-markup smaller-markup + sub-markup super-markup teeny-markup text-markup tiny-markup + typewriter-markup underline-markup upright-markup bracket-markup + circle-markup hbracket-markup parenthesize-markup rounded-box-markup + + center-align-markup center-column-markup column-markup dir-column-markup + fill-line-markup justify-markup justify-string-markup left-align-markup + left-column-markup line-markup right-align-markup right-column-markup + vcenter-markup wordwrap-markup wordwrap-string-markup )) ;; markup commands with markup as second argument, first argument ;; specifies some formatting and is ignored (define markups-second-argument '(list - abs-fontsize-markup fontsize-markup magnify-markup lower-markup - pad-around-markup pad-markup-markup pad-x-markup raise-markup - halign-markup hcenter-in-markup rotate-markup translate-markup - translate-scaled-markup with-url-markup scale-markup )) + abs-fontsize-markup fontsize-markup magnify-markup lower-markup + pad-around-markup pad-markup-markup pad-x-markup raise-markup + halign-markup hcenter-in-markup rotate-markup translate-markup + translate-scaled-markup with-url-markup scale-markup )) ;; helper functions to handle string cons like string lists - (define (markup-cons->string-cons c) - (if (not (pair? c)) (markup->string c) - (cons (markup->string (car c)) (markup-cons->string-cons (cdr c))))) + (define (markup-cons->string-cons c scopes) + (if (not (pair? c)) (markup->string c scopes) + (cons (markup->string (car c) scopes) (markup-cons->string-cons (cdr c) scopes)))) (define (string-cons-join c) (if (not (pair? c)) c (string-join (list (car c) (string-cons-join (cdr c))) ""))) (cond - ((string? m) m) - ((null? m) "") - - ;; handle \concat (string-join without spaces) - ((and (pair? m) (equal? (car m) concat-markup)) - (string-cons-join (markup-cons->string-cons (cadr m))) ) - - ;; markup functions with the markup as first arg - ((member (car m) (primitive-eval markups-first-argument)) - (markup->string (cadr m))) - - ;; markup functions with markup as second arg - ((member (car m) (primitive-eval markups-second-argument)) - (markup->string (cddr m))) - - ;; ignore all other markup functions - ((markup-function? (car m)) "") - - ;; handle markup lists - ((list? m) - (string-join (map markup->string m) " ")) - - (else "ERROR, unable to extract string from markup"))) + ((string? m) m) + ((null? m) "") + ((not (pair? m)) "") + + ;; handle \concat (string-join without spaces) + ((and (pair? m) (equal? (car m) concat-markup)) + (string-cons-join (markup-cons->string-cons (cadr m) scopes)) ) + + ;; markup functions with the markup as first arg + ((member (car m) (primitive-eval markups-first-argument)) + (markup->string (cadr m) scopes)) + + ;; markup functions with markup as second arg + ((member (car m) (primitive-eval markups-second-argument)) + (markup->string (cddr m) scopes)) + + ;; fromproperty-markup reads property values from the header block: + ((equal? (car m) fromproperty-markup) + (let* ((varname (symbol->string (cadr m))) + ;; cut off the header: prefix from the variable name: + (newvarname (if (string-prefix? "header:" varname) (substring varname 7) varname)) + (var (string->symbol newvarname)) + (mod (make-module 1))) + ;; Prevent loops by temporarily clearing the variable we have just looked up + (module-define! mod var "") + (markup->string (ly:modules-lookup scopes var) (cons mod scopes)))) + + ;; ignore all other markup functions + ((markup-function? (car m)) "") + + ;; handle markup lists + ((list? m) + (string-join (map (lambda (mm) (markup->string mm scopes)) m) " ")) + + (else "ERROR, unable to extract string from markup")))) diff --git a/scm/midi.scm b/scm/midi.scm index a3540e60ca..4888ee3a81 100644 --- a/scm/midi.scm +++ b/scm/midi.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/modal-transforms.scm b/scm/modal-transforms.scm index 151fb8c3be..9617329d77 100644 --- a/scm/modal-transforms.scm +++ b/scm/modal-transforms.scm @@ -1,6 +1,6 @@ ;;; modal-transforms.scm --- Modal transposition, inversion, and retrograde. -;; Copyright (C) 2011 Ellis & Grant, Inc. +;; Copyright (C) 2011--2012 Ellis & Grant, Inc. ;; Author: Michael Ellis @@ -126,7 +126,7 @@ LilyPond scheme pitches, e.g. @code{(ly:make-pitch 0 2 0)} (change-pitches element converter))))) -(define (extract-pitch-sequence music) +(define (make-scale music) "Recurse through @var{music}, extracting pitches. Returns a list of pitch objects, e.g @code{'((ly:make-pitch 0 2 0) (ly:make-pitch 0 4 0) ... )} @@ -140,20 +140,15 @@ Typically used to construct a scale for input to transposer-factory (cond ((ly:pitch? pitch) - pitch) + (list pitch)) ((pair? elements) - (map - (lambda (x) (extract-pitch-sequence x)) + (append-map + (lambda (x) (make-scale x)) elements)) ((ly:music? element) - (extract-pitch-sequence element))))) - -(define (make-scale music) - "Convenience wrapper for extract-pitch-sequence." - (map car (extract-pitch-sequence music))) - + (make-scale element))))) (define (make-extended-scale music) "Extend scale given by @var{music} by 5 octaves up and down." @@ -176,21 +171,15 @@ Typically used to construct a scale for input to transposer-factory ;; ------------- PUBLIC FUNCTIONS ----------------------------- -(define-public (make-modal-transposer from-pitch to-pitch scale) +(define-public (make-modal-transposer from to scale) "Wrapper function for transposer-factory." - (let ((transposer (transposer-factory (make-extended-scale scale))) - (from (car (extract-pitch-sequence from-pitch))) - (to (car (extract-pitch-sequence to-pitch)))) - + (let ((transposer (transposer-factory (make-extended-scale scale)))) (lambda (p) (transposer from to p)))) -(define-public (make-modal-inverter around-pitch to-pitch scale) +(define-public (make-modal-inverter around to scale) "Wrapper function for inverter-factory" - (let ((inverter (inverter-factory (make-extended-scale scale))) - (around (car (extract-pitch-sequence around-pitch))) - (to (car (extract-pitch-sequence to-pitch)))) - + (let ((inverter (inverter-factory (make-extended-scale scale)))) (lambda (p) (inverter around to p)))) @@ -231,9 +220,6 @@ and transposes from @var{around} to @var{to}." (ly:pitch-transpose to (ly:pitch-diff around p)))) music)) -(define-public (music-invert around-pitch to-pitch music) +(define-public (music-invert around to music) "Applies pitch-invert to all pitches in @var{music}." - (let ((around (car (extract-pitch-sequence around-pitch))) - (to (car (extract-pitch-sequence to-pitch)))) - (music-map (lambda (x) (pitch-invert around to x)) music))) - + (music-map (lambda (x) (pitch-invert around to x)) music)) diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 8d828db869..cd0ff32e1c 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -16,7 +16,10 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . -;; (use-modules (ice-9 optargs)) +; for define-safe-public when byte-compiling using Guile V2 +(use-modules (scm safe-utility-defs)) + +(use-modules (ice-9 optargs)) ;;; ly:music-property with setter ;;; (ly:music-property my-music 'elements) @@ -59,8 +62,9 @@ First it recurses over the children, then the function is applied to @var{music}." (let ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element))) - (set! (ly:music-property music 'elements) - (map (lambda (y) (music-map function y)) es)) + (if (pair? es) + (set! (ly:music-property music 'elements) + (map (lambda (y) (music-map function y)) es))) (if (ly:music? e) (set! (ly:music-property music 'element) (music-map function e))) @@ -79,9 +83,12 @@ First it recurses over the children, then the function is applied to (inner-music-filter pred? e) e)) (filtered-es (filter ly:music? (map (lambda (y) (inner-music-filter pred? y)) es)))) - (set! (ly:music-property music 'element) filtered-e) - (set! (ly:music-property music 'elements) filtered-es) - (set! (ly:music-property music 'articulations) filtered-as) + (if (not (null? e)) + (set! (ly:music-property music 'element) filtered-e)) + (if (not (null? es)) + (set! (ly:music-property music 'elements) filtered-es)) + (if (not (null? as)) + (set! (ly:music-property music 'articulations) filtered-as)) ;; if filtering emptied the expression, we remove it completely. (if (or (not (pred? music)) (and (eq? filtered-es '()) (not (ly:music? e)) @@ -95,24 +102,23 @@ First it recurses over the children, then the function is applied to music (make-music 'Music))) ;must return music. -(define-public (display-music music) +(define*-public (display-music music #:optional (port (current-output-port))) "Display music, not done with @code{music-map} for clarity of presentation." - - (display music) - (display ": { ") + (display music port) + (display ": { " port) (let ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element))) - (display (ly:music-mutable-properties music)) + (display (ly:music-mutable-properties music) port) (if (pair? es) - (begin (display "\nElements: {\n") - (map display-music es) - (display "}\n"))) + (begin (display "\nElements: {\n" port) + (for-each (lambda (m) (display-music m port)) es) + (display "}\n" port))) (if (ly:music? e) (begin - (display "\nChild:") - (display-music e)))) - (display " }\n") + (display "\nChild:" port) + (display-music e port)))) + (display " }\n" port) music) ;;; @@ -174,8 +180,7 @@ equivalent to @var{obj}, that is, for a music expression, a (ly:duration? obj) `(ly:make-duration ,(ly:duration-log obj) ,(ly:duration-dot-count obj) - ,(car (ly:duration-factor obj)) - ,(cdr (ly:duration-factor obj)))) + ,(ly:duration-scale obj))) (;; note pitch (ly:pitch? obj) `(ly:make-pitch ,(ly:pitch-octave obj) @@ -203,13 +208,9 @@ equivalent to @var{obj}, that is, for a music expression, a (use-modules (ice-9 pretty-print)) (define*-public (display-scheme-music obj #:optional (port (current-output-port))) "Displays `obj', typically a music expression, in a friendly fashion, -which often can be read back in order to generate an equivalent expression. - -Returns `obj'. -" +which often can be read back in order to generate an equivalent expression." (pretty-print (music->make-music obj) port) - (newline) - obj) + (newline port)) ;;; ;;; Scheme music expression --> Lily-syntax-using string translator @@ -217,28 +218,29 @@ Returns `obj'. (use-modules (srfi srfi-39) (scm display-lily)) -(define*-public (display-lily-music expr parser #:key force-duration) +(define*-public (display-lily-music expr parser #:optional (port (current-output-port)) + #:key force-duration) "Display the music expression using LilyPond syntax" (memoize-clef-names supported-clefs) (parameterize ((*indent* 0) (*previous-duration* (ly:make-duration 2)) (*force-duration* force-duration)) - (display (music->lily-string expr parser)) - (newline))) + (display (music->lily-string expr parser) port) + (newline port))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-public (shift-one-duration-log music shift dot) "Add @var{shift} to @code{duration-log} of @code{'duration} in -@var{music} and optionally @var{dot} to any note encountered. This -scales the music up by a factor `2^@var{shift} * (2 - (1/2)^@var{dot})'." +@var{music} and optionally @var{dot} to any note encountered. +The number of dots in the shifted music may not be less than zero." (let ((d (ly:music-property music 'duration))) (if (ly:duration? d) - (let* ((cp (ly:duration-factor d)) - (nd (ly:make-duration (+ shift (ly:duration-log d)) - (+ dot (ly:duration-dot-count d)) - (car cp) - (cdr cp)))) + (let* ((cp (ly:duration-scale d)) + (nd (ly:make-duration + (+ shift (ly:duration-log d)) + (max 0 (+ dot (ly:duration-dot-count d))) + cp))) (set! (ly:music-property music 'duration) nd))) music)) @@ -252,7 +254,9 @@ properly." (define (first-note-duration music) "Finds the duration of the first NoteEvent by searching depth-first through MUSIC." - (if (memq 'note-event (ly:music-property music 'types)) + ;; NoteEvent or a non-expanded chord-repetition + ;; We just take anything that actually sports an announced duration. + (if (ly:duration? (ly:music-property music 'duration)) (ly:music-property music 'duration) (let loop ((elts (if (ly:music? (ly:music-property music 'element)) (list (ly:music-property music 'element)) @@ -273,12 +277,12 @@ through MUSIC." (set! (ly:music-property r 'repeat-count) (max times 1)) (set! (ly:music-property r 'elements) talts) (if (and (equal? name "tremolo") - (or (pair? (ly:music-property main 'elements)) - (ly:music? (ly:music-property main 'element)))) + (pair? (extract-named-music main '(EventChord NoteEvent)))) ;; This works for single-note and multi-note tremolos! (let* ((children (if (music-is-of-type? main 'sequential-music) ;; \repeat tremolo n { ... } - (length (extract-named-music main 'EventChord)) + (length (extract-named-music main '(EventChord + NoteEvent))) ;; \repeat tremolo n c4 1)) ;; # of dots is equal to the 1 in bitwise representation (minus 1)! @@ -293,8 +297,10 @@ through MUSIC." 1)) (tremolo-type (ash 1 duration-log))) (set! (ly:music-property r 'tremolo-type) tremolo-type) - (if (not (integer? mult)) - (ly:warning (_ "invalid tremolo repeat count: ~a") times)) + (if (not (and (integer? mult) (= (logcount mult) 1))) + (ly:music-warning + main + (ly:format (_ "invalid tremolo repeat count: ~a") times))) ;; Adjust the time of the notes (ly:music-compress r (ly:make-moment 1 children)) ;; Adjust the displayed note durations @@ -306,9 +312,9 @@ through MUSIC." calculate the number of slashes based on the durations. Returns @code{0} 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)) - (extract-named-music music 'EventChord))) + (let* ((durs (map duration-of-note + (extract-named-music music '(EventChord NoteEvent + RestEvent SkipEvent)))) (first-dur (car durs))) (if (every (lambda (d) (equal? d first-dur)) durs) @@ -338,32 +344,35 @@ beats to be distinguished." (let ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element))) - (if (memq 'repeated-music (ly:music-property music 'types)) + (if (music-is-of-type? music 'repeated-music) (let* ((props (ly:music-mutable-properties music)) (old-name (ly:music-property music 'name)) (flattened (flatten-alist props))) (set! music (apply make-music (cons 'UnfoldedRepeatedMusic flattened))) - (if (equal? old-name 'TremoloRepeatedMusic) - (let* ((seq-arg? (memq 'sequential-music - (ly:music-property e 'types))) - (count (ly:music-property music 'repeat-count)) - (dot-shift (if (= 0 (remainder count 3)) - -1 0)) - (child-count (if seq-arg? - (length (ly:music-property e 'elements)) - 0))) - - (if (= 0 -1) - (set! count (* 2 (quotient count 3)))) - - (shift-duration-log music (+ (if (= 2 child-count) - 1 0) - (ly:intlog2 count)) dot-shift) - - (if seq-arg? - (ly:music-compress e (ly:make-moment child-count 1))))))) + (if (and (equal? old-name 'TremoloRepeatedMusic) + (pair? (extract-named-music e '(EventChord NoteEvent)))) + ;; This works for single-note and multi-note tremolos! + (let* ((children (if (music-is-of-type? e 'sequential-music) + ;; \repeat tremolo n { ... } + (length (extract-named-music e '(EventChord + NoteEvent))) + ;; \repeat tremolo n c4 + 1)) + (times (ly:music-property music 'repeat-count)) + + ;; # of dots is equal to the 1 in bitwise representation (minus 1)! + (dots (1- (logcount (* times children)))) + ;; The remaining missing multiplicator to scale the notes by + ;; times * children + (mult (/ (* times children (ash 1 dots)) (1- (ash 2 dots)))) + (shift (- (ly:intlog2 (floor mult))))) + + ;; Adjust the time of the notes + (ly:music-compress music (ly:make-moment children 1)) + ;; Adjust the displayed note durations + (shift-duration-log music (- shift) (- dots)))))) (if (pair? es) (set! (ly:music-property music 'elements) @@ -400,10 +409,12 @@ in @var{grob}." 'grob-property gprop)) (define direction-polyphonic-grobs - '(DotColumn + '(AccidentalSuggestion + DotColumn Dots Fingering LaissezVibrerTie + LigatureBracket PhrasingSlur RepeatTie Rest @@ -411,18 +422,21 @@ in @var{grob}." Slur Stem TextScript - Tie)) + Tie + TupletBracket + TrillSpanner)) (define-safe-public (make-voice-props-set n) (make-sequential-music (append (map (lambda (x) (make-grob-property-set x 'direction - (if (odd? n) -1 1))) + (if (odd? n) -1 1))) direction-polyphonic-grobs) (list (make-property-set 'graceSettings ;; TODO: take this from voicedGraceSettings or similar. '((Voice Stem font-size -3) + (Voice Flag font-size -3) (Voice NoteHead font-size -3) (Voice TabNoteHead font-size -4) (Voice Dots font-size -3) @@ -439,6 +453,33 @@ in @var{grob}." (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2)) (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4)))))) +(define-safe-public (make-voice-props-override n) + (make-sequential-music + (append + (map (lambda (x) (make-grob-property-override x 'direction + (if (odd? n) -1 1))) + direction-polyphonic-grobs) + (list + (make-property-set 'graceSettings + ;; TODO: take this from voicedGraceSettings or similar. + '((Voice Stem font-size -3) + (Voice Flag font-size -3) + (Voice NoteHead font-size -3) + (Voice TabNoteHead font-size -4) + (Voice Dots font-size -3) + (Voice Stem length-fraction 0.8) + (Voice Stem no-stem-extend #t) + (Voice Beam beam-thickness 0.384) + (Voice Beam length-fraction 0.8) + (Voice Accidental font-size -4) + (Voice AccidentalCautionary font-size -4) + (Voice Script font-size -3) + (Voice Fingering font-size -8) + (Voice StringNumber font-size -8))) + + (make-grob-property-override 'NoteColumn 'horizontal-shift (quotient n 2)) + (make-grob-property-override 'MultiMeasureRest 'staff-position (if (odd? n) -4 4)))))) + (define-safe-public (make-voice-props-revert) (make-sequential-music (append @@ -509,24 +550,6 @@ in @var{grob}." (make-music 'PropertyUnset 'symbol sym)) -;;; Need to keep this definition for \time calls from parser -(define-public (make-time-signature-set num den) - "Set properties for time signature @var{num}/@var{den}." - (make-music 'TimeSignatureMusic - 'numerator num - 'denominator den - 'beat-structure '())) - -;;; Used for calls that include beat-grouping setting -(define-public (set-time-signature num den . rest) - "Set properties for time signature @var{num}/@var{den}. -If @var{rest} is present, it is used to set @code{beatStructure}." - (ly:export - (make-music 'TimeSignatureMusic - 'numerator num - 'denominator den - 'beat-structure (if (null? rest) rest (car rest))))) - (define-safe-public (make-articulation name) (make-music 'ArticulationEvent 'articulation-type name)) @@ -587,6 +610,89 @@ inside of and outside of chord construct." (let ((ts (ly:music-property m 'types))) (memq 'separator ts))) +;;; expanding repeat chords +(define-public (copy-repeat-chord original-chord repeat-chord duration + event-types) + "Copies all events in @var{event-types} (be sure to include +@code{rhythmic-events}) from @var{original-chord} over to +@var{repeat-chord} with their articulations filtered as well. Any +duration is replaced with the specified @var{duration}." + ;; First remove everything from event-types that can already be + ;; found in the repeated chord. We don't need to look for + ;; articulations on individual events since they can't actually get + ;; into a repeat chord given its input syntax. + + (define (keep-element? m) + (any (lambda (t) (music-is-of-type? m t)) + event-types)) + (define origin (ly:music-property repeat-chord 'origin #f)) + (define (set-origin! l) + (if origin + (for-each (lambda (m) (set! (ly:music-property m 'origin) origin)) l)) + l) + + (for-each + (lambda (field) + (for-each (lambda (e) + (for-each (lambda (x) + (set! event-types (delq x event-types))) + (ly:music-property e 'types))) + (ly:music-property repeat-chord field))) + '(elements articulations)) + + ;; now treat the elements + (set! (ly:music-property repeat-chord 'elements) + (let ((elts + (set-origin! (ly:music-deep-copy + (filter keep-element? + (ly:music-property original-chord + 'elements)))))) + (for-each + (lambda (m) + (let ((arts (ly:music-property m 'articulations))) + (if (pair? arts) + (set! (ly:music-property m 'articulations) + (set-origin! (filter! keep-element? arts)))) + (if (ly:duration? (ly:music-property m 'duration)) + (set! (ly:music-property m 'duration) duration)))) + elts) + (append! elts (ly:music-property repeat-chord 'elements)))) + (let ((arts (filter keep-element? + (ly:music-property original-chord + 'articulations)))) + (if (pair? arts) + (set! (ly:music-property repeat-chord 'articulations) + (append! + (set-origin! (ly:music-deep-copy arts)) + (ly:music-property repeat-chord 'articulations)))))) + + +(define-public (expand-repeat-chords! event-types music) + "Walks through @var{music} and fills repeated chords (notable by +having a duration in @code{duration}) with the notes from their +respective predecessor chord." + (let loop ((music music) (last-chord #f)) + (if (music-is-of-type? music 'event-chord) + (let ((chord-repeat (ly:music-property music 'duration))) + (cond + ((not (ly:duration? chord-repeat)) + (if (any (lambda (m) (ly:duration? + (ly:music-property m 'duration))) + (ly:music-property music 'elements)) + music + last-chord)) + (last-chord + (set! (ly:music-property music 'duration) '()) + (copy-repeat-chord last-chord music chord-repeat event-types) + music) + (else + (ly:music-warning music (_ "Bad chord repetition")) + #f))) + (let ((elt (ly:music-property music 'element))) + (fold loop (if (ly:music? elt) (loop elt last-chord) last-chord) + (ly:music-property music 'elements))))) + music) + ;;; splitting chords into voices. (define (voicify-list lst number) "Make a list of Musics. @@ -629,7 +735,7 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0. m)) (define-public (empty-music) - (ly:export (make-music 'Music))) + (make-music 'Music)) ;; Make a function that checks score element for being of a specific type. (define-public (make-type-checker symbol) @@ -649,21 +755,6 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0. (set! (ly:grob-property grob symbol) val)))) -;; -(define-public (smart-bar-check n) - "Make a bar check that checks for a specific bar number." - (let ((m (make-music 'ApplyContext))) - (define (checker tr) - (let* ((bn (ly:context-property tr 'currentBarNumber))) - (or (= bn n) - (ly:error - ;; FIXME: uncomprehensable message - (_ "Bar check failed. Expect to be at ~a, instead at ~a") - n bn)))) - (set! (ly:music-property m 'procedure) checker) - m)) - - (define-public (skip->rest mus) "Replace @var{mus} by @code{RestEvent} of the same duration if it is a @code{SkipEvent}. Useful for extracting parts from crowded scores." @@ -691,12 +782,17 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; warn for bare chords at start. - (define-public (ly:music-message music msg) (let ((ip (ly:music-property music 'origin))) (if (ly:input-location? ip) - (ly:input-message ip msg) - (ly:warning msg)))) + (ly:input-message ip msg) + (ly:message msg)))) + +(define-public (ly:music-warning music msg) + (let ((ip (ly:music-property music 'origin))) + (if (ly:input-location? ip) + (ly:input-warning ip msg) + (ly:warning msg)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @@ -732,7 +828,7 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0. (new-settings (append current (list (list context-name grob sym val))))) (ly:context-set-property! where 'graceSettings new-settings))) - (ly:export (context-spec-music (make-apply-context set-prop) 'Voice))) + (context-spec-music (make-apply-context set-prop) 'Voice)) (define-public (remove-grace-property context-name grob sym) "Remove all @var{sym} for @var{grob} in @var{context-name}." @@ -751,7 +847,7 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0. (set! new-settings (delete x new-settings))) prop-settings) (ly:context-set-property! where 'graceSettings new-settings))) - (ly:export (context-spec-music (make-apply-context delete-prop) 'Voice))) + (context-spec-music (make-apply-context delete-prop) 'Voice)) @@ -766,25 +862,125 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0. music (ly:music-deep-copy ,stop)))))) -(defmacro-public define-music-function (args signature . body) +(defmacro-public define-syntax-function (type args signature . body) "Helper macro for `ly:make-music-function'. Syntax: - (define-music-function (parser location arg1 arg2 ...) (arg1-type? arg2-type? ...) + (define-syntax-function result-type? (parser location arg1 arg2 ...) (arg1-type arg2-type ...) ...function body...) -" -(if (and (pair? body) (pair? (car body)) (eqv? '_i (caar body))) + +argX-type can take one of the forms @code{predicate?} for mandatory +arguments satisfying the predicate, @code{(predicate?)} for optional +parameters of that type defaulting to @code{#f}, @code{@w{(predicate? +value)}} for optional parameters with a specified default +value (evaluated at definition time). An optional parameter can be +omitted in a call only when it can't get confused with a following +parameter of different type. + +Predicates with syntactical significance are @code{ly:pitch?}, +@code{ly:duration?}, @code{ly:music?}, @code{markup?}. Other +predicates require the parameter to be entered as Scheme expression. + +@code{result-type?} can specify a default in the same manner as +predicates, to be used in case of a type error in arguments or +result." + + (set! signature (map (lambda (pred) + (if (pair? pred) + `(cons ,(car pred) + ,(and (pair? (cdr pred)) (cadr pred))) + pred)) + (cons type signature))) + (if (and (pair? body) (pair? (car body)) (eqv? '_i (caar body))) ;; When the music function definition contains a i10n doc string, ;; (_i "doc string"), keep the literal string only (let ((docstring (cadar body)) (body (cdr body))) `(ly:make-music-function (list ,@signature) - (lambda (,@args) + (lambda ,args ,docstring ,@body))) `(ly:make-music-function (list ,@signature) - (lambda (,@args) + (lambda ,args ,@body)))) +(defmacro-public define-music-function rest + "Defining macro returning music functions. +Syntax: + (define-music-function (parser location arg1 arg2 ...) (arg1-type? arg2-type? ...) + ...function body...) + +argX-type can take one of the forms @code{predicate?} for mandatory +arguments satisfying the predicate, @code{(predicate?)} for optional +parameters of that type defaulting to @code{#f}, @code{@w{(predicate? +value)}} for optional parameters with a specified default +value (evaluated at definition time). An optional parameter can be +omitted in a call only when it can't get confused with a following +parameter of different type. + +Predicates with syntactical significance are @code{ly:pitch?}, +@code{ly:duration?}, @code{ly:music?}, @code{markup?}. Other +predicates require the parameter to be entered as Scheme expression. + +Must return a music expression. The @code{origin} is automatically +set to the @code{location} parameter." + + `(define-syntax-function (ly:music? (make-music 'Music 'void #t)) ,@rest)) + + +(defmacro-public define-scheme-function rest + "Defining macro returning Scheme functions. +Syntax: + (define-scheme-function (parser location arg1 arg2 ...) (arg1-type? arg2-type? ...) + ...function body...) + +argX-type can take one of the forms @code{predicate?} for mandatory +arguments satisfying the predicate, @code{(predicate?)} for optional +parameters of that type defaulting to @code{#f}, @code{@w{(predicate? +value)}} for optional parameters with a specified default +value (evaluated at definition time). An optional parameter can be +omitted in a call only when it can't get confused with a following +parameter of different type. + +Predicates with syntactical significance are @code{ly:pitch?}, +@code{ly:duration?}, @code{ly:music?}, @code{markup?}. Other +predicates require the parameter to be entered as Scheme expression. + +Can return arbitrary expressions. If a music expression is returned, +its @code{origin} is automatically set to the @code{location} +parameter." + + `(define-syntax-function scheme? ,@rest)) + +(defmacro-public define-void-function rest + "This defines a Scheme function like @code{define-scheme-function} with +void return value (i.e., what most Guile functions with `unspecified' +value return). Use this when defining functions for executing actions +rather than returning values, to keep Lilypond from trying to interpret +the return value." + `(define-syntax-function (void? *unspecified*) ,@rest *unspecified*)) + +(defmacro-public define-event-function rest + "Defining macro returning event functions. +Syntax: + (define-event-function (parser location arg1 arg2 ...) (arg1-type? arg2-type? ...) + ...function body...) + +argX-type can take one of the forms @code{predicate?} for mandatory +arguments satisfying the predicate, @code{(predicate?)} for optional +parameters of that type defaulting to @code{#f}, @code{@w{(predicate? +value)}} for optional parameters with a specified default +value (evaluated at definition time). An optional parameter can be +omitted in a call only when it can't get confused with a following +parameter of different type. + +Predicates with syntactical significance are @code{ly:pitch?}, +@code{ly:duration?}, @code{ly:music?}, @code{markup?}. Other +predicates require the parameter to be entered as Scheme expression. + +Must return an event expression. The @code{origin} is automatically +set to the @code{location} parameter." + + `(define-syntax-function (ly:event? (make-music 'Event 'void #t)) ,@rest)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -793,40 +989,42 @@ Syntax: (if (vector? (ly:music-property quote-music 'quoted-events)) (let* ((dir (ly:music-property quote-music 'quoted-voice-direction)) - (clef (ly:music-property quote-music 'quoted-music-clef)) - (main-voice (if (eq? 1 dir) 1 0)) - (cue-voice (if (eq? 1 dir) 0 1)) + (clef (ly:music-property quote-music 'quoted-music-clef #f)) + (main-voice (case dir ((1) 1) ((-1) 0) (else #f))) + (cue-voice (and main-voice (- 1 main-voice))) (main-music (ly:music-property quote-music 'element)) (return-value quote-music)) - (if (or (eq? 1 dir) (eq? -1 dir)) - - ;; if we have stem dirs, change both quoted and main music - ;; to have opposite stems. - (begin - (set! return-value - ;; cannot context-spec Quote-music, since context - ;; for the quotes is determined in the iterator. - (make-sequential-music - (list - (if (null? clef) - (make-music 'Music) - (make-cue-clef-set clef)) - (context-spec-music (make-voice-props-set cue-voice) 'CueVoice "cue") - quote-music - (context-spec-music (make-voice-props-revert) 'CueVoice "cue") - (if (null? clef) - (make-music 'Music) - (make-cue-clef-unset))))) - (set! main-music - (make-sequential-music - (list - (make-voice-props-set main-voice) - main-music - (make-voice-props-revert)))) - (set! (ly:music-property quote-music 'element) main-music))) - - return-value) + (if main-voice + (set! (ly:music-property quote-music 'element) + (make-sequential-music + (list + (make-voice-props-override main-voice) + main-music + (make-voice-props-revert))))) + + ;; if we have stem dirs, change both quoted and main music + ;; to have opposite stems. + + ;; cannot context-spec Quote-music, since context + ;; for the quotes is determined in the iterator. + + (make-sequential-music + (delq! #f + (list + (and clef (make-cue-clef-set clef)) + + ;; Need to establish CueVoice context even in #CENTER case + (context-spec-music + (if cue-voice + (make-voice-props-override cue-voice) + (make-music 'Music)) + 'CueVoice "cue") + quote-music + (and cue-voice + (context-spec-music + (make-voice-props-revert) 'CueVoice "cue")) + (and clef (make-cue-clef-unset)))))) quote-music)) (define-public ((quote-substitute quote-tab) music) @@ -841,7 +1039,7 @@ Syntax: (set! (ly:music-property music 'quoted-events) quoted-vector) (set! (ly:music-property music 'iterator-ctor) ly:quote-iterator::constructor)) - (ly:warning (_ "cannot find quoted music: `~S'") quoted-name))) + (ly:music-warning music (ly:format (_ "cannot find quoted music: `~S'") quoted-name)))) music)) @@ -957,6 +1155,10 @@ then revert skipTypesetting." (define-public toplevel-music-functions (list + (lambda (music parser) (expand-repeat-chords! + (cons 'rhythmic-event + (ly:parser-lookup parser '$chord-repeat-events)) + music)) (lambda (music parser) (voicify-music music)) (lambda (x parser) (music-map music-check-error x)) (lambda (x parser) (music-map precompute-music-length x)) @@ -1113,7 +1315,7 @@ active pitch in any octave. @var{laziness} states over how many bars an accidental should be remembered. @code{0}@tie{}is the default -- accidental lasts over 0@tie{}bar lines, that is, to the end of current measure. A positive integer means that the -accidental lasts over that many bar lines. @code{-1} is `forget +accidental lasts over that many bar lines. @w{@code{-1}} is `forget immediately', that is, only look at key signature. @code{#t} is `forever'." (check-pitch-against-signature context pitch barnum laziness octaveness)) @@ -1221,22 +1423,21 @@ as a context." (car rest) 'Staff)) (pcontext (if (pair? rest) (car rest) 'GrandStaff))) - (ly:export - (cond + (cond ;; accidentals as they were common in the 18th century. ((equal? style 'default) (set-accidentals-properties #t `(Staff ,(make-accidental-rule 'same-octave 0)) '() context)) - ;; accidentals from one voice do NOT get cancelled in other voices + ;; accidentals from one voice do NOT get canceled in other voices ((equal? style 'voice) (set-accidentals-properties #t `(Voice ,(make-accidental-rule 'same-octave 0)) '() context)) ;; accidentals as suggested by Kurt Stone, Music Notation in the 20th century. - ;; This includes all the default accidentals, but accidentals also needs cancelling + ;; This includes all the default accidentals, but accidentals also needs canceling ;; in other octaves and in the next measure. ((equal? style 'modern) (set-accidentals-properties #f @@ -1301,7 +1502,7 @@ as a context." context)) ;; Multivoice accidentals to be read both by musicians playing one voice ;; and musicians playing all voices. - ;; Accidentals are typeset for each voice, but they ARE cancelled across voices. + ;; Accidentals are typeset for each voice, but they ARE canceled across voices. ((equal? style 'modern-voice) (set-accidentals-properties #f `(Voice ,(make-accidental-rule 'same-octave 0) @@ -1324,7 +1525,7 @@ as a context." ,(make-accidental-rule 'same-octave 1)) context)) ;; stone's suggestions for accidentals on grand staff. - ;; Accidentals are cancelled across the staves in the same grand staff as well + ;; Accidentals are canceled across the staves in the same grand staff as well ((equal? style 'piano) (set-accidentals-properties #f `(Staff ,(make-accidental-rule 'same-octave 0) @@ -1375,7 +1576,7 @@ as a context." context)) (else (ly:warning (_ "unknown accidental style: ~S") style) - (make-sequential-music '())))))) + (make-sequential-music '()))))) (define-public (invalidate-alterations context) "Invalidate alterations in @var{context}. @@ -1406,7 +1607,7 @@ Entries that conform with the current key signature are not invalidated." entry (cons (car entry) (cons 'clef (cddr entry)))))) (ly:context-property context 'localKeySignature))))) - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-public (skip-of-length mus) @@ -1436,32 +1637,123 @@ Entries that conform with the current key signature are not invalidated." (ly:music-property (car evs) 'pitch)))) (define-public (duration-of-note event-chord) - (let ((evs (filter (lambda (x) - (music-has-type x 'rhythmic-event)) - (ly:music-property event-chord 'elements)))) - - (and (pair? evs) - (ly:music-property (car evs) 'duration)))) + (cond + ((pair? event-chord) + (or (duration-of-note (car event-chord)) + (duration-of-note (cdr event-chord)))) + ((ly:music? event-chord) + (let ((dur (ly:music-property event-chord 'duration))) + (if (ly:duration? dur) + dur + (duration-of-note (ly:music-property event-chord 'elements))))) + (else #f))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define-public (map-some-music map? music) + "Walk through @var{music}, transform all elements calling @var{map?} +and only recurse if this returns @code{#f}." + (let loop ((music music)) + (or (map? music) + (let ((elt (ly:music-property music 'element)) + (elts (ly:music-property music 'elements)) + (arts (ly:music-property music 'articulations))) + (if (ly:music? elt) + (set! (ly:music-property music 'element) + (loop elt))) + (if (pair? elts) + (set! (ly:music-property music 'elements) + (map loop elts))) + (if (pair? arts) + (set! (ly:music-property music 'articulations) + (map loop arts))) + music)))) + +(define-public (for-some-music stop? music) + "Walk through @var{music}, process all elements calling @var{stop?} +and only recurse if this returns @code{#f}." + (let loop ((music music)) + (if (not (stop? music)) + (let ((elt (ly:music-property music 'element))) + (if (ly:music? elt) + (loop elt)) + (for-each loop (ly:music-property music 'elements)) + (for-each loop (ly:music-property music 'articulations)))))) + +(define-public (fold-some-music pred? proc init music) + "This works recursively on music like @code{fold} does on a list, +calling @samp{(@var{pred?} music)} on every music element. If +@code{#f} is returned for an element, it is processed recursively +with the same initial value of @samp{previous}, otherwise +@samp{(@var{proc} music previous)} replaces @samp{previous} +and no recursion happens. +The top @var{music} is processed using @var{init} for @samp{previous}." + (let loop ((music music) (previous init)) + (if (pred? music) + (proc music previous) + (fold loop + (fold loop + (let ((elt (ly:music-property music 'element))) + (if (null? elt) + previous + (loop elt previous))) + (ly:music-property music 'elements)) + (ly:music-property music 'articulations))))) + +(define-public (extract-music music pred?) + "Return a flat list of all music matching @var{pred?} inside of +@var{music}, not recursing into matches themselves." + (reverse! (fold-some-music pred? cons '() music))) + (define-public (extract-named-music music music-name) - "Return a flat list of all music named @var{music-name} from @var{music}." - (let ((extracted-list - (if (ly:music? music) - (if (eq? (ly:music-property music 'name) music-name) - (list music) - (let ((elt (ly:music-property music 'element)) - (elts (ly:music-property music 'elements))) - (if (ly:music? elt) - (extract-named-music elt music-name) - (if (null? elts) - '() - (map (lambda(x) - (extract-named-music x music-name )) - elts))))) - '()))) - (flatten-list extracted-list))) + "Return a flat list of all music named @var{music-name} (either a +single event symbol or a list of alternatives) inside of @var{music}, +not recursing into matches themselves." + (extract-music + music + (if (cheap-list? music-name) + (lambda (m) (memq (ly:music-property m 'name) music-name)) + (lambda (m) (eq? (ly:music-property m 'name) music-name))))) + +(define-public (extract-typed-music music type) + "Return a flat list of all music with @var{type} (either a single +type symbol or a list of alternatives) inside of @var{music}, not +recursing into matches themselves." + (extract-music + music + (if (cheap-list? type) + (lambda (m) + (any (lambda (t) (music-is-of-type? m t)) type)) + (lambda (m) (music-is-of-type? m type))))) + +(define*-public (event-chord-wrap! music #:optional parser) + "Wrap isolated rhythmic events and non-postevent events in +@var{music} inside of an @code{EventChord}. If the optional +@var{parser} argument is given, chord repeats @samp{q} are expanded +using the default settings. Otherwise, you need to cater for them +yourself." + (map-some-music + (lambda (m) + (cond ((music-is-of-type? m 'event-chord) + (if (pair? (ly:music-property m 'articulations)) + (begin + (set! (ly:music-property m 'elements) + (append (ly:music-property m 'elements) + (ly:music-property m 'articulations))) + (set! (ly:music-property m 'articulations) '()))) + m) + ((music-is-of-type? m 'rhythmic-event) + (let ((arts (ly:music-property m 'articulations))) + (if (pair? arts) + (set! (ly:music-property m 'articulations) '())) + (make-event-chord (cons m arts)))) + (else #f))) + (if parser + (expand-repeat-chords! + (cons 'rhythmic-event + (ly:parser-lookup parser '$chord-repeat-events)) + music) + music))) (define-public (event-chord-notes event-chord) "Return a list of all notes from @var{event-chord}." @@ -1473,3 +1765,112 @@ Entries that conform with the current key signature are not invalidated." "Return a list of all pitches from @var{event-chord}." (map (lambda (x) (ly:music-property x 'pitch)) (event-chord-notes event-chord))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; The following functions are all associated with the crossStaff +; function + +(define (close-enough? x y) + "Values are close enough to ignore the difference" + (< (abs (- x y)) 0.0001)) + +(define (extent-combine extents) + "Combine a list of extents" + (if (pair? (cdr extents)) + (interval-union (car extents) (extent-combine (cdr extents))) + (car extents))) + +(define ((stem-connectable? ref root) stem) + "Check if the stem is connectable to the root" + ; The root is always connectable to itself + (or (eq? root stem) + (and + ; Horizontal positions of the stems must be almost the same + (close-enough? (car (ly:grob-extent root ref X)) + (car (ly:grob-extent stem ref X))) + ; The stem must be in the direction away from the root's notehead + (positive? (* (ly:grob-property root 'direction) + (- (car (ly:grob-extent stem ref Y)) + (car (ly:grob-extent root ref Y)))))))) + +(define (stem-span-stencil span) + "Connect stems if we have at least one stem connectable to the root" + (let* ((system (ly:grob-system span)) + (root (ly:grob-parent span X)) + (stems (filter (stem-connectable? system root) + (ly:grob-object span 'stems)))) + (if (<= 2 (length stems)) + (let* ((yextents (map (lambda (st) + (ly:grob-extent st system Y)) stems)) + (yextent (extent-combine yextents)) + (layout (ly:grob-layout root)) + (blot (ly:output-def-lookup layout 'blot-diameter))) + ; Hide spanned stems + (map (lambda (st) + (set! (ly:grob-property st 'transparent) #t)) + stems) + ; Draw a nice looking stem with rounded corners + (ly:round-filled-box (ly:grob-extent root root X) yextent blot)) + ; Nothing to connect, don't draw the span + #f))) + +(define ((make-stem-span! stems trans) root) + "Create a stem span as a child of the cross-staff stem (the root)" + (let ((span (ly:engraver-make-grob trans 'Stem '()))) + (ly:grob-set-parent! span X root) + (set! (ly:grob-object span 'stems) stems) + ; Suppress positioning, the stem code is confused by this weird stem + (set! (ly:grob-property span 'X-offset) 0) + (set! (ly:grob-property span 'stencil) stem-span-stencil))) + +(define-public (cross-staff-connect stem) + "Set cross-staff property of the stem to this function to connect it to +other stems automatically" + #t) + +(define (stem-is-root? stem) + "Check if automatic connecting of the stem was requested. Stems connected +to cross-staff beams are cross-staff, but they should not be connected to +other stems just because of that." + (eq? cross-staff-connect (ly:grob-property-data stem 'cross-staff))) + +(define (make-stem-spans! ctx stems trans) + "Create stem spans for cross-staff stems" + ; Cannot do extensive checks here, just make sure there are at least + ; two stems at this musical moment + (if (<= 2 (length stems)) + (let ((roots (filter stem-is-root? stems))) + (map (make-stem-span! stems trans) roots)))) + +(define-public (Span_stem_engraver ctx) + "Connect cross-staff stems to the stems above in the system" + (let ((stems '())) + (make-engraver + ; Record all stems for the given moment + (acknowledgers + ((stem-interface trans grob source) + (set! stems (cons grob stems)))) + ; Process stems and reset the stem list to empty + ((process-acknowledged trans) + (make-stem-spans! ctx stems trans) + (set! stems '()))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; The following is used by the alterBroken function. + +(define-public ((value-for-spanner-piece arg) grob) + "Associate a piece of broken spanner @var{grob} with an element +of list @var{arg}." + (let* ((orig (ly:grob-original grob)) + (siblings (ly:spanner-broken-into orig))) + + (define (helper sibs arg) + (if (null? arg) + arg + (if (eq? (car sibs) grob) + (car arg) + (helper (cdr sibs) (cdr arg))))) + + (if (>= (length siblings) 2) + (helper siblings arg) + (car arg)))) diff --git a/scm/output-lib.scm b/scm/output-lib.scm index c25edf31f6..af55cc8fde 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -26,6 +26,9 @@ (define-public (grob::is-live? grob) (pair? (ly:grob-basic-properties grob))) +(define-public (grob::x-parent-width grob) + (ly:grob-property (ly:grob-parent grob X) 'X-extent)) + (define-public (make-stencil-boxer thickness padding callback) "Return function that adds a box around the grob passed as argument." (lambda (grob) @@ -55,6 +58,56 @@ (ly:text-interface::interpret-markup layout props text))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; beam slope + +;; calculates each slope of a broken beam individually +(define-public (beam::place-broken-parts-individually grob) + (ly:beam::quanting grob '(+inf.0 . -inf.0) #f)) + +;; calculates the slope of a beam as a single unit, +;; even if it is broken. this assures that the beam +;; will pick up where it left off after a line break +(define-public (beam::align-with-broken-parts grob) + (ly:beam::quanting grob '(+inf.0 . -inf.0) #t)) + +;; uses the broken beam style from edition peters combines the +;; values of place-broken-parts-individually and align-with-broken-parts above, +;; favoring place-broken-parts-individually when the beam naturally has a steeper +;; incline and align-with-broken-parts when the beam is flat +(define-public (beam::slope-like-broken-parts grob) + (define (slope y x) + (/ (- (cdr y) (car y)) (- (cdr x) (car x)))) + (let* ((quant1 (ly:beam::quanting grob '(+inf.0 . -inf.0) #t)) + (original (ly:grob-original grob)) + (siblings (if (ly:grob? original) + (ly:spanner-broken-into original) + '()))) + (if (null? siblings) + quant1 + (let* ((quant2 (ly:beam::quanting grob '(+inf.0 . -inf.0) #f)) + (x-span (ly:grob-property grob 'X-positions)) + (slope1 (slope quant1 x-span)) + (slope2 (slope quant2 x-span)) + (quant2 (if (not (= (sign slope1) (sign slope2))) + '(0 . 0) + quant2)) + (factor (/ (atan (abs slope1)) PI-OVER-TWO)) + (base (cons-map + (lambda (x) + (+ (* (x quant1) (- 1 factor)) + (* (x quant2) factor))) + (cons car cdr)))) + (ly:beam::quanting grob base #f))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cross-staff stuff + +(define-public (script-or-side-position-cross-staff g) + (or + (ly:script-interface::calc-cross-staff g) + (ly:side-position-interface::calc-cross-staff g))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; note heads @@ -63,10 +116,59 @@ (ly:duration-log (ly:event-property (event-cause grob) 'duration))) +(define-public (stem::length grob) + (let* ((ss (ly:staff-symbol-staff-space grob)) + (beg (ly:grob-property grob 'stem-begin-position)) + (beam (ly:grob-object grob 'beam))) + (if (null? beam) + (abs (- (ly:stem::calc-stem-end-position grob) beg)) + (begin + (ly:programming-error + "stem::length called but will not be used for beamed stem.") + 0.0)))) + +(define-public (stem::pure-length grob beg end) + (let* ((ss (ly:staff-symbol-staff-space grob)) + (beg (ly:grob-pure-property grob 'stem-begin-position 0 1000))) + (abs (- (ly:stem::pure-calc-stem-end-position grob 0 2147483646) beg)))) + +(define (stem-stub::do-calculations grob) + (and (ly:grob-property (ly:grob-parent grob X) 'cross-staff) + (not (ly:grob-property (ly:grob-parent grob X) 'transparent)))) + +(define-public (stem-stub::pure-height grob beg end) + (if (stem-stub::do-calculations grob) + '(0 . 0) + '(+inf.0 . -inf.0))) + +(define-public (stem-stub::width grob) + (if (stem-stub::do-calculations grob) + (grob::x-parent-width grob) + '(+inf.0 . -inf.0))) + +(define-public (stem-stub::extra-spacing-height grob) + (if (stem-stub::do-calculations grob) + (let* ((dad (ly:grob-parent grob X)) + (refp (ly:grob-common-refpoint grob dad Y)) + (stem_ph (ly:grob-pure-height dad refp 0 1000000)) + (my_ph (ly:grob-pure-height grob refp 0 1000000)) + ;; only account for distance if stem is on different staff than stub + (dist (if (grob::has-interface refp 'hara-kiri-group-spanner-interface) + 0 + (- (car my_ph) (car stem_ph))))) + (if (interval-empty? (interval-intersection stem_ph my_ph)) #f (coord-translate stem_ph dist))) + #f)) + +;; FIXME: NEED TO FIND A BETTER WAY TO HANDLE KIEVAN NOTATION (define-public (note-head::calc-duration-log grob) - (min 2 - (ly:duration-log - (ly:event-property (event-cause grob) 'duration)))) + (let ((style (ly:grob-property grob 'style))) + (if (and (symbol? style) (string-match "kievan*" (symbol->string style))) + (min 3 + (ly:duration-log + (ly:event-property (event-cause grob) 'duration))) + (min 2 + (ly:duration-log + (ly:event-property (event-cause grob) 'duration)))))) (define-public (dots::calc-dot-count grob) (ly:duration-dot-count @@ -130,6 +232,8 @@ and duration-log @var{log}." (string-append (number->string log) "petrucci"))) ((neomensural) (string-append (number->string log) (symbol->string style))) + ((kievan) + (string-append (number->string log) "kievan")) (else (if (string-match "vaticana*|hufnagel*|medicaea*" (symbol->string style)) (symbol->string style) @@ -137,9 +241,10 @@ and duration-log @var{log}." (symbol->string style)))))) (define-public (note-head::calc-glyph-name grob) - (let ((style (ly:grob-property grob 'style)) - (log (min 2 (ly:grob-property grob 'duration-log)))) - + (let* ((style (ly:grob-property grob 'style)) + (log (if (string-match "kievan*" (symbol->string style)) + (min 3 (ly:grob-property grob 'duration-log)) + (min 2 (ly:grob-property grob 'duration-log))))) (select-head-glyph style log))) (define-public (note-head::brew-ez-stencil grob) @@ -211,7 +316,7 @@ and duration-log @var{log}." (define-public (rhythmic-location<=? a b) (not (rhythmic-location=? a b) - (rhythmic-location? a b) (rhythmic-locationstring (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 +445,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 +467,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 +549,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 @@ -525,6 +629,9 @@ and duration-log @var{log}." (0 . "accidentals.vaticana0") (1/2 . "accidentals.mensural1"))) +(define-public alteration-kievan-glyph-name-alist + '((-1/2 . "accidentals.kievanM1") + (1/2 . "accidentals.kievan1"))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; * Pitch Trill Heads @@ -711,11 +818,6 @@ and duration-log @var{log}." (let* ((event (event-cause grob)) (digit (ly:event-property event 'digit))) - (if (> digit 5) - (ly:input-message (ly:event-property event 'origin) - "Warning: Fingering notation for finger number ~a" - digit)) - (number->string digit 10))) (define-public (string-number::calc-text grob) @@ -737,7 +839,7 @@ and duration-log @var{log}." ;; dynamics (define-public (hairpin::calc-grow-direction grob) - (if (eq? (ly:event-property (event-cause grob) 'class) 'decrescendo-event) + (if (ly:in-event-class? (event-cause grob) 'decrescendo-event) START STOP)) diff --git a/scm/output-ps.scm b/scm/output-ps.scm index c83b613cbd..7c8a6ed394 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -58,12 +58,6 @@ ;;; Lily output interface, PostScript implementation --- cleanup and docme ;;; -;; two beziers -(define (bezier-sandwich lst thick) - (ly:format "~l ~4f draw_bezier_sandwich" - (map number-pair->string4 lst) - thick)) - (define (char font i) (ly:format "~a (\\~a) show" (ps-font-command font) @@ -77,6 +71,12 @@ "false") radius thick)) +(define (start-enclosing-id-node s) + "") + +(define (end-enclosing-id-node) + "") + (define (dashed-line thick on off dx dy phase) (ly:format "~4f ~4f ~4f [ ~4f ~4f ] ~4f draw_dashed_line" dx @@ -86,18 +86,6 @@ off phase)) -;; what the heck is this interface ? -(define (dashed-slur thick on off l) - (ly:format "~l ~4f [ ~4f ~4f ] 0 draw_dashed_slur" - (let ((control-points (append (cddr l) (list (car l) (cadr l))))) - (map number-pair->string4 control-points)) - thick - on - off)) - -(define (dot x y radius) - (ly:format " ~4l draw_dot" (list radius x y))) - (define (draw-line thick x1 y1 x2 y2) (ly:format "~4f ~4f ~4f ~4f ~4f draw_line" (- x2 x1) (- y2 y1) @@ -155,8 +143,16 @@ (if (ly:get-option 'point-and-click) (let* ((cause (ly:grob-property grob 'cause)) (music-origin (if (ly:stream-event? cause) - (ly:event-property cause 'origin)))) - (if (ly:input-location? music-origin) + (ly:event-property cause 'origin))) + (point-and-click (ly:get-option 'point-and-click))) + (if (and + (ly:input-location? music-origin) + (cond ((boolean? point-and-click) point-and-click) + ((symbol? point-and-click) + (ly:in-event-class? cause point-and-click)) + (else (any (lambda (t) + (ly:in-event-class? cause t)) + point-and-click)))) (let* ((location (ly:input-file-line-char-column music-origin)) (raw-file (car location)) (file (if (is-absolute? raw-file) @@ -193,14 +189,6 @@ (define (no-origin) "") -(define (oval x-radius y-radius thick fill) - (ly:format - "~a ~4f ~4f ~4f draw_oval" - (if fill - "true" - "false") - x-radius y-radius thick)) - (define (placebox x y s) (if (not (string-null? s)) (ly:format "~4f ~4f moveto ~a\n" x y s) @@ -213,16 +201,6 @@ (- (/ (length points) 2) 1) blot-diameter)) -(define (repeat-slash width slope beam-thickness) - (define (euclidean-length x y) - (sqrt (+ (* x x) (* y y)))) - - (let ((x-width (euclidean-length beam-thickness (/ beam-thickness slope))) - (height (* width slope))) - (ly:format "~4l draw_repeat_slash" - (list x-width width height)))) - - (define (round-filled-box left right bottom top blotdiam) (let* ((halfblot (/ blotdiam 2)) (x (- halfblot left)) diff --git a/scm/output-socket.scm b/scm/output-socket.scm index c86047815a..352ff2989d 100644 --- a/scm/output-socket.scm +++ b/scm/output-socket.scm @@ -48,18 +48,8 @@ ;;; stencil commands ;;; -(define (bezier-sandwich lst thick) - (format "bezier_sandwich ~a [~a]" - thick - (string-append - (string-join (map - (lambda (x) - (format "(~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) @@ -70,12 +60,12 @@ -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) @@ -86,21 +76,21 @@ (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))) diff --git a/scm/output-svg.scm b/scm/output-svg.scm index 3132175414..9f10629eac 100644 --- a/scm/output-svg.scm +++ b/scm/output-svg.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2002--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2002--2012 Jan Nieuwenhuizen ;;;; Patrick McCarty ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -55,20 +55,26 @@ (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 "\n" entity)) + (format #f "\n" entity)) + +(define (start-enclosing-id-node s) + (string-append "\n")) + +(define (end-enclosing-id-node) + "\n") (define-public (comment s) (string-append "\n")) @@ -86,7 +92,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) " ")) @@ -323,18 +329,6 @@ ;;; stencil outputters ;;; -(define (bezier-sandwich lst thick) - (let* ((first (list-tail lst 4)) - (second (list-head lst 4))) - (entity 'path "" - '(stroke-linejoin . "round") - '(stroke-linecap . "round") - '(stroke . "currentColor") - '(fill . "currentColor") - `(stroke-width . ,thick) - `(d . ,(string-append (svg-bezier first #f) - (svg-bezier second #t)))))) - (define (char font i) (dispatch `(fontify ,font ,(entity 'tspan (char->entity (integer->char i)))))) @@ -351,7 +345,7 @@ (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 "" @@ -497,26 +491,6 @@ (define (no-origin) "") -(define (oval x-radius y-radius thick is-filled) - (let ((x-max x-radius) - (x-min (- x-radius)) - (y-max y-radius) - (y-min (- y-radius))) - (entity - 'path "" - '(stroke-linejoin . "round") - '(stroke-linecap . "round") - `(fill . ,(if is-filled "currentColor" "none")) - `(stroke . "currentColor") - `(stroke-width . ,thick) - `(d . ,(ly:format "M~4f ~4fC~4f ~4f ~4f ~4f ~4f ~4fS~4f ~4f ~4f ~4fz" - x-max 0 - x-max y-max - x-min y-max - x-min 0 - x-max y-min - x-max 0))))) - (define* (path thick commands #:optional (cap 'round) (join 'round) (fill? #f)) (define (convert-path-exps exps) (if (pair? exps) @@ -539,7 +513,7 @@ (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)))) '())) @@ -598,17 +572,6 @@ `(points . ,(string-join (map offset->point (ly:list->offsets '() coords)))))) -(define (repeat-slash width slope thickness) - (define (euclidean-length x y) - (sqrt (+ (* x x) (* y y)))) - (let* ((x-width (euclidean-length thickness (/ thickness slope))) - (height (* width slope))) - (entity - 'path "" - '(fill . "currentColor") - `(d . ,(ly:format "M0 0l~4f 0 ~4f ~4f ~4f 0z" - x-width width (- height) (- x-width)))))) - (define (resetcolor) "\n") @@ -637,7 +600,7 @@ '(fill . "currentColor"))) (define (setcolor r g b) - (format "\n" + (format #f "\n" (* 100 r) (* 100 g) (* 100 b))) ;; rotate around given point diff --git a/scm/page.scm b/scm/page.scm index f65c9559d3..ada4a890f9 100644 --- a/scm/page.scm +++ b/scm/page.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2006--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -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)))) diff --git a/scm/paper-system.scm b/scm/paper-system.scm index 9e9f9ab7d4..5a368dbe62 100644 --- a/scm/paper-system.scm +++ b/scm/paper-system.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2006--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -17,14 +17,29 @@ (define-module (scm paper-system)) -(use-modules (lily)) +(use-modules (lily) + (srfi srfi-1) + (ice-9 optargs)) (define-public (paper-system-title? system) (equal? #t (ly:prob-property system 'is-title) )) +(define (system-stencil system-grob main-stencil) + (let* ((padding (ly:grob-property system-grob 'in-note-padding #f)) + (in-notes (if padding (ly:grob-property system-grob 'in-note-stencil) empty-stencil)) + (in-notes (if in-notes in-notes empty-stencil)) + (direction (if padding (ly:grob-property system-grob 'in-note-direction) UP))) + (if padding + (ly:stencil-combine-at-edge main-stencil Y direction in-notes padding) + main-stencil))) + (define-public (paper-system-stencil system) - (ly:prob-property system 'stencil)) + (let ((main-stencil (ly:prob-property system 'stencil)) + (system-grob (ly:prob-property system 'system-grob))) + (if (ly:grob? system-grob) + (system-stencil system-grob main-stencil) + main-stencil))) (define-public (paper-system-layout system) (let* @@ -66,46 +81,182 @@ stencil) )) -; TODO: annotate the spacing for every spaceable staff within the system. + +;; Y-ext and next-Y-ext are either skyline-pairs or extents +(define*-public (annotate-padding system-Y system-X Y-ext X-ext + next-system-Y next-system-X next-Y-ext next-X-ext + layout horizon-padding padding #:key (base-color blue)) + (let* ((eps 0.001) + (skyline (and (ly:skyline-pair? Y-ext) + (ly:skyline-pair::skyline Y-ext DOWN))) + (next-skyline (and (ly:skyline-pair? next-Y-ext) + (ly:skyline-pair::skyline next-Y-ext UP))) + (annotation-X (cond + ((and skyline next-skyline) + (- + (ly:skyline::get-touching-point skyline next-skyline horizon-padding) + horizon-padding)) + (skyline + (ly:skyline::get-max-height-position skyline)) + (next-skyline + (ly:skyline::get-max-height-position next-skyline)) + (else + (max (cdr X-ext) + (cdr next-X-ext))))) + (annotation-Y (if skyline + (ly:skyline::get-height skyline annotation-X) + (car Y-ext))) + (next-annotation-Y (if next-skyline + (- (+ (ly:skyline::get-height next-skyline + (- (+ annotation-X system-X) + next-system-X)) + next-system-Y) + system-Y) + (cdr next-Y-ext))) + (padding-blocks (>= next-annotation-Y (- annotation-Y padding eps))) + (contrast-color (append (cdr base-color) (list (car base-color)))) + (color (if padding-blocks contrast-color base-color)) + (annotation (ly:stencil-translate-axis + (annotate-y-interval + layout + "padding" + `(,(- annotation-Y padding). ,annotation-Y) + #t + #:color color) + annotation-X X))) + (if (> padding 0.0) + annotation + empty-stencil))) + + (define-public (paper-system-annotate system next-system layout) "Add arrows and texts to indicate which lengths are set." - (let* ((annotations (list)) - (grob (ly:prob-property system 'system-grob)) + + (let* ((grob (ly:prob-property system 'system-grob)) + (paper-height (ly:output-def-lookup layout 'paper-height)) + (bottom-margin (ly:output-def-lookup layout 'bottom-margin)) + (top-margin (ly:output-def-lookup layout 'top-margin)) + (spaceable-staves (if (ly:grob? grob) (ly:system::get-spaceable-staves grob) '())) + (all-staves (if (ly:grob? grob) (ly:system::get-staves grob) '())) + (spaceable-staff-annotate + (lambda (before-staff after-staff) + (let ((before-Y (ly:grob-relative-coordinate before-staff grob Y)) + (after-Y (ly:grob-relative-coordinate after-staff grob Y))) + (annotate-spacing-spec + layout + (ly:get-spacing-spec before-staff after-staff) + before-Y + after-Y)))) + + (staff-padding-annotate + (lambda (before-staff after-staff) + (let ((before-Y (ly:grob-relative-coordinate before-staff grob Y)) + (before-X (ly:grob-relative-coordinate before-staff grob X)) + (before-X-ext (ly:grob-extent before-staff before-staff X)) + (after-Y (ly:grob-relative-coordinate after-staff grob Y)) + (after-X (ly:grob-relative-coordinate after-staff grob X)) + (after-X-ext (ly:grob-extent after-staff after-staff X)) + (skylines (ly:grob-property before-staff 'vertical-skylines)) + (after-skylines (ly:grob-property after-staff 'vertical-skylines)) + (padding (assoc-get 'padding + (ly:get-spacing-spec before-staff after-staff) + 0.0)) + (horizon-padding (ly:grob-property before-staff + 'skyline-horizontal-padding + 0.0))) + (ly:stencil-translate + (annotate-padding + before-Y before-X skylines before-X-ext + after-Y after-X after-skylines after-X-ext + layout horizon-padding padding) + (cons before-X before-Y))))) + + (staff-annotations (if (< 1 (length spaceable-staves)) + (map spaceable-staff-annotate + (drop-right spaceable-staves 1) + (drop spaceable-staves 1)) + '())) + (staff-padding-annotations (if (< 1 (length all-staves)) + (map staff-padding-annotate + (drop-right all-staves 1) + (drop all-staves 1)) + '())) (estimate-extent (if (ly:grob? grob) (annotate-y-interval layout "extent-estimate" (ly:grob-property grob 'pure-Y-extent) #f) - #f))) - (let* ((spacing-spec (cond ((and next-system - (paper-system-title? system) - (paper-system-title? next-system)) - (ly:output-def-lookup layout 'markup-markup-spacing)) - ((paper-system-title? system) - (ly:output-def-lookup layout 'markup-system-spacing)) - ((and next-system - (paper-system-title? next-system)) - (ly:output-def-lookup layout 'score-markup-spacing)) - ((not next-system) - (ly:output-def-lookup layout 'last-bottom-spacing)) - (else - (ly:output-def-lookup layout 'system-system-spacing)))) - (last-staff-Y (car (paper-system-staff-extents system)))) - - (set! annotations - (annotate-spacing-spec layout spacing-spec last-staff-Y (car (paper-system-extent system Y))))) - (if estimate-extent + #f)) + + (spacing-spec (cond ((and next-system + (paper-system-title? system) + (paper-system-title? next-system)) + (ly:output-def-lookup layout 'markup-markup-spacing)) + ((paper-system-title? system) + (ly:output-def-lookup layout 'markup-system-spacing)) + ((and next-system + (paper-system-title? next-system)) + (ly:output-def-lookup layout 'score-markup-spacing)) + ((not next-system) + (ly:output-def-lookup layout 'last-bottom-spacing)) + ((ly:prob-property system 'last-in-score #f) + (ly:output-def-lookup layout 'score-system-spacing)) + (else + (ly:output-def-lookup layout 'system-system-spacing)))) + (last-staff-Y (car (paper-system-staff-extents system))) + (system-Y (ly:prob-property system 'Y-offset 0.0)) + (system-X (ly:prob-property system 'X-offset 0.0)) + (next-system-Y (and next-system + (ly:prob-property next-system 'Y-offset 0.0))) + (next-system-X (and next-system + (ly:prob-property next-system 'X-offset 0.0))) + (first-staff-next-system-Y (if next-system + (- (+ (cdr (paper-system-staff-extents next-system)) + system-Y) + next-system-Y) + (+ system-Y top-margin bottom-margin (- paper-height)))) + + (skyline (or + (ly:prob-property system 'vertical-skylines #f) + (paper-system-extent system Y))) + (next-skyline (and next-system + (or + (ly:prob-property next-system 'vertical-skylines #f) + (paper-system-extent next-system Y)))) + (horizon-padding (and + (ly:grob? grob) + (ly:grob-property grob 'skyline-horizontal-padding 0))) + (padding-annotation (if next-system + (annotate-padding + (- system-Y) system-X skyline (paper-system-extent system X) + (- next-system-Y) next-system-X next-skyline (paper-system-extent next-system X) + layout + horizon-padding + (assoc-get 'padding spacing-spec 0.0) + #:base-color blue) + empty-stencil)) + + (system-annotation (annotate-spacing-spec + layout spacing-spec + last-staff-Y + first-staff-next-system-Y)) + (annotations (ly:stencil-add + padding-annotation + (stack-stencils Y DOWN 0.0 staff-padding-annotations) + (stack-stencils Y DOWN 0.0 (append staff-annotations (list system-annotation)))))) + + (if estimate-extent (set! annotations - (stack-stencils X RIGHT 0.5 + (stack-stencils X RIGHT 5.5 (list annotations estimate-extent)))) - - (if (not (null? annotations)) - (set! (ly:prob-property system 'stencil) - (ly:stencil-add - (ly:prob-property system 'stencil) - (ly:make-stencil - (ly:stencil-expr annotations) - (ly:stencil-extent empty-stencil X) - (ly:stencil-extent empty-stencil Y))))) - (ly:prob-property system 'stencil))) + + (if (not (null? annotations)) + (set! (ly:prob-property system 'stencil) + (ly:stencil-add + (ly:prob-property system 'stencil) + (ly:make-stencil + (ly:stencil-expr annotations) + (ly:stencil-extent empty-stencil X) + (ly:stencil-extent empty-stencil Y))))) + (ly:prob-property system 'stencil))) diff --git a/scm/paper.scm b/scm/paper.scm index 3208f4b82a..f482d9b9b7 100644 --- a/scm/paper.scm +++ b/scm/paper.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -15,6 +15,9 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . +; for define-safe-public when byte-compiling using Guile V2 +(use-modules (scm safe-utility-defs)) + (define-public (set-paper-dimension-variables mod) (module-define! mod 'dimension-variables '(blot-diameter @@ -125,6 +128,11 @@ ;; don't use decimals. ;; ISO 216 has a tolerance of +- 2mm + ;; TODO Autogenerate the following list so it appears under the + ;; 'Predefined paper sizes' node in notation-appendices.itely + ;; currently the list below has been copied and formatted manually. + ;; Therefore, please add any new entries to the *itely file as well. + '(("a10" . (cons (* 26 mm) (* 37 mm))) ("a9" . (cons (* 37 mm) (* 52 mm))) ("a8" . (cons (* 52 mm) (* 74 mm))) @@ -163,10 +171,15 @@ ("c1" . (cons (* 648 mm) (* 917 mm))) ("c0" . (cons (* 917 mm) (* 1297 mm))) ;; Below are North American paper sizes + ("junior-legal" . (cons (* 8.0 in) (* 5.0 in))) ("legal" . (cons (* 8.5 in) (* 14.0 in))) ("letter" . (cons (* 8.5 in) (* 11.0 in))) ;; Ledger (17x11) is a 90 degree rotation of Tabloid + ("17x11" . (cons (* 17.0 in) (* 11.0 in))) + ("ledger" . (cons (* 17.0 in) (* 11.0 in))) + ;; Tabloid (11x17) ("11x17" . (cons (* 11.0 in) (* 17.0 in))) + ("tabloid" . (cons (* 11.0 in) (* 17.0 in))) ;; government-letter by IEEE Printer Working Group, for children's writing ("government-letter" . (cons (* 8 in) (* 10.5 in))) ("government-legal" . (cons (* 8.5 in) (* 13.0 in))) @@ -225,8 +238,9 @@ ;; F4 used in southeast Asia and Australia ("f4" . (cons (* 210 mm) (* 330 mm))) ;; Used for very small @lilypond examples in the Documentation - ;; based on a8 size but landscape not portrait + ;; based on a8 and a7 sizes but landscape not portrait ("a8landscape" . (cons (* 74 mm) (* 52 mm))) + ("a7landscape" . (cons (* 105 mm) (* 74 mm))) )) ;; todo: take dimension arguments. diff --git a/scm/parser-clef.scm b/scm/parser-clef.scm index a731e7459e..6d46cc626c 100644 --- a/scm/parser-clef.scm +++ b/scm/parser-clef.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -76,7 +76,8 @@ ("petrucci-f4" . ("clefs.petrucci.f" 2 0)) ("petrucci-f5" . ("clefs.petrucci.f" 4 0)) ("petrucci-f" . ("clefs.petrucci.f" 2 0)) - ("petrucci-g" . ("clefs.petrucci.g" -2 0)))) + ("petrucci-g" . ("clefs.petrucci.g" -2 0)) + ("kievan-do" . ("clefs.kievan.do" 0 0)))) ;; "an alist mapping GLYPHNAME to the position of the middle C for ;; that symbol" @@ -103,7 +104,8 @@ ("clefs.petrucci.c4" . 0) ("clefs.petrucci.c5" . 0) ("clefs.petrucci.f" . 4) - ("clefs.petrucci.g" . -4))) + ("clefs.petrucci.g" . -4) + ("clefs.kievan.do" . 0))) (define-public (make-clef-set clef-name) "Generate the clef setting commands for a clef with name @var{clef-name}." diff --git a/scm/parser-ly-from-scheme.scm b/scm/parser-ly-from-scheme.scm index b86392623f..ad95a16d24 100644 --- a/scm/parser-ly-from-scheme.scm +++ b/scm/parser-ly-from-scheme.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Nicolas Sceaux +;;;; Copyright (C) 2004--2012 Nicolas Sceaux ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -16,83 +16,62 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . -(define gen-lily-sym - ;; Generate a lilyvartmpXX symbol, that may be (hopefully) unique. - (let ((var-idx -1)) - (lambda () - (set! var-idx (1+ var-idx)) - (string->symbol (format #f "lilyvartmp~a" - (list->string (map (lambda (chr) - (integer->char (+ (char->integer #\a) - (- (char->integer chr) - (char->integer #\0))))) - (string->list (number->string var-idx))))))))) - -(define-public (parse-string-result str parser) - "Parse @var{str}, which is supposed to contain a music expression." - - (ly:parser-parse-string - parser - (format #f "parseStringResult = \\notemode { ~a }" str)) - (ly:parser-lookup parser 'parseStringResult)) - (define-public (read-lily-expression chr port) - "Read a lilypond music expression enclosed within @code{#@}} and @code{#@}} + "Read a lilypond music expression enclosed within @code{#@{} and @code{#@}} from @var{port} and return the corresponding Scheme music expression. -The @samp{$} character may be used to introduce Scheme forms, typically -symbols. @code{$$} may be used to simply write a @samp{$} character itself." - (let ((bindings '())) - - (define (create-binding! val) - "Create a new symbol, bind it to `val' and return it." - (let ((tmp-symbol (gen-lily-sym))) - (set! bindings (cons (cons tmp-symbol val) bindings)) - tmp-symbol)) - - (define (remove-dollars! form) - "Generate a form where `$variable' and `$ value' mottos are replaced - by new symbols, which are binded to the adequate values." - (cond (;; $variable - (and (symbol? form) - (string=? (substring (symbol->string form) 0 1) "$") - (not (and (<= 2 (string-length (symbol->string form))) - (string=? (substring (symbol->string form) 1 2) "$")))) - (create-binding! (string->symbol (substring (symbol->string form) 1)))) - (;; atom - (not (pair? form)) form) - (;; ($ value ...) - (eqv? (car form) '$) - (cons (create-binding! (cadr form)) (remove-dollars! (cddr form)))) - (else ;; (something ...) - (cons (remove-dollars! (car form)) (remove-dollars! (cdr form)))))) - - (let ((lily-string (call-with-output-string - (lambda (out) - (do ((c (read-char port) (read-char port))) - ((and (char=? c #\#) - (char=? (peek-char port) #\})) ;; we stop when #} is encoutered - (read-char port)) - (cond - ;; a $form expression - ((and (char=? c #\$) (not (char=? (peek-char port) #\$))) - (format out "\\~a" (create-binding! (read port)))) - ;; just a $ character - ((and (char=? c #\$) (char=? (peek-char port) #\$)) - ;; pop the second $ - (display (read-char port) out)) - ;; a #scheme expression - ((char=? c #\#) - (let ((expr (read port))) - (format out "#~s" (if (eq? '$ expr) - (create-binding! (read port)) - (remove-dollars! expr))))) - ;; other caracters - (else - (display c out)))))))) - `(let ((parser-clone (ly:parser-clone parser))) - ,@(map (lambda (binding) - `(ly:parser-define! parser-clone ',(car binding) ,(cdr binding))) - (reverse bindings)) - (parse-string-result ,lily-string parser-clone))))) +@samp{$} and @samp{#} introduce immediate and normal Scheme forms." + (let* ((closures '()) + (filename (port-filename port)) + (line (port-line port)) + (lily-string (call-with-output-string + (lambda (out) + (let ((copycat + (make-soft-port + (vector #f #f #f + (lambda () + (let ((x (read-char port))) + (write-char x out) + x)) #f) + "r"))) + (set-port-filename! copycat filename) + (do ((c (read-char port) (read-char port))) + ((and (char=? c #\#) + (char=? (peek-char port) #\})) + ;; we stop when #} is encountered + (read-char port)) + (write-char c out) + ;; a #scheme or $scheme expression + (if (or (char=? c #\#) (char=? c #\$)) + (let* ((p (ftell out)) + (expr + (begin + (set-port-line! copycat + (port-line port)) + (set-port-column! copycat + (port-column port)) + (if (char=? (peek-char port) #\@) + (read-char copycat)) + (read copycat)))) + ;; kill unused lookahead, it has been + ;; written out already + (drain-input copycat) + ;; only put symbols and non-quote + ;; lists into closures -- constants + ;; don't need lexical environments + ;; for evaluation. + (if (or (symbol? expr) + (and (pair? expr) + (not (eq? 'quote (car expr))))) + (set! closures + (cons `(cons ,p (lambda () ,expr)) + closures))))))))))) + (define (embedded-lilypond parser lily-string filename line closures) + (let* ((clone (ly:parser-clone parser closures)) + (result (ly:parse-string-expression clone lily-string + filename line))) + (if (ly:parser-has-error? clone) + (ly:parser-error parser (_ "error in #{ ... #}"))) + result)) + (list embedded-lilypond 'parser lily-string filename line (cons 'list (reverse! closures))))) (read-hash-extend #\{ read-lily-expression) diff --git a/scm/part-combiner.scm b/scm/part-combiner.scm index 0e72ebe2a0..7deeeeb481 100644 --- a/scm/part-combiner.scm +++ b/scm/part-combiner.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -41,7 +41,7 @@ (define-method (note-events (vs )) (define (f? x) - (equal? (ly:event-property x 'class) 'note-event)) + (ly:in-event-class? x 'note-event)) (filter f? (events vs))) (define-method (previous-voice-state (vs )) @@ -130,30 +130,30 @@ Voice-state objects "Analyse EVS at INDEX, given state ACTIVE." (define (analyse-tie-start active ev) - (if (equal? (ly:event-property ev 'class) 'tie-event) + (if (ly:in-event-class? ev 'tie-event) (acons 'tie (split-index (vector-ref voice-state-vec index)) active) active)) (define (analyse-tie-end active ev) - (if (equal? (ly:event-property ev 'class) 'note-event) + (if (ly:in-event-class? ev 'note-event) (assoc-remove! active 'tie) active)) (define (analyse-absdyn-end active ev) - (if (or (equal? (ly:event-property ev 'class) 'absolute-dynamic-event) - (and (equal? (ly:event-property ev 'class) 'crescendo-event) + (if (or (ly:in-event-class? ev 'absolute-dynamic-event) + (and (ly:in-event-class? ev 'span-dynamic-event) (equal? STOP (ly:event-property ev 'span-direction)))) (assoc-remove! (assoc-remove! active 'cresc) 'decr) active)) (define (activevector (reverse! (cdar context-list) - '())))))) + (voicename (get-next-unique-voice-name)) + ;; recording-group-emulate returns an assoc list (reversed!), so + ;; hand it a proper unique context name and extract that key: + (ctx-spec (context-spec-music mus 'Voice voicename)) + (listener (ly:parser-lookup parser 'partCombineListener)) + (context-list (reverse (recording-group-emulate ctx-spec listener))) + (raw-voice (assoc voicename context-list)) + (quote-contents (if (pair? raw-voice) (cdr raw-voice) '()))) + + ;; If the context-specced quoted music does not contain anything, try to + ;; use the first child, i.e. the next in context-list after voicename + ;; That's the case e.g. for \addQuote "x" \relative c \new Voice {...} + (if (null? quote-contents) + (let find-non-empty ((current-tail (member raw-voice context-list))) + ;; if voice has contents, use them, otherwise check next ctx + (cond ((null? current-tail) #f) + ((and (pair? (car current-tail)) + (pair? (cdar current-tail))) + (set! quote-contents (cdar current-tail))) + (else (find-non-empty (cdr current-tail)))))) + + (if (not (null? quote-contents)) + (hash-set! tab name (list->vector (reverse! quote-contents '()))) + (ly:music-warning mus (ly:format (_ "quoted music `~a' is empty") name))))) diff --git a/scm/predefined-fretboards.scm b/scm/predefined-fretboards.scm index ff0200729d..d3286c45d1 100644 --- a/scm/predefined-fretboards.scm +++ b/scm/predefined-fretboards.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2008--2011 Carl D. Sorensen +;;;; Copyright (C) 2008--2012 Carl D. Sorensen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scm/ps-to-png.scm b/scm/ps-to-png.scm index 17f822247b..5e78d0c7c0 100644 --- a/scm/ps-to-png.scm +++ b/scm/ps-to-png.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -63,15 +63,11 @@ ;; copy of ly:system. ly:* not available via lilypond-ps2png.scm (define (my-system be-verbose exit-on-error cmd) (define status 0) - (if be-verbose - (begin - (format (current-error-port) (_ "Invoking `~a'...") cmd) - (newline (current-error-port)))) + (ly:debug (_ "Invoking `~a'...\n") cmd) (set! status (system cmd)) (if (not (= status 0)) (begin - (format (current-error-port) - (format #f (_ "~a exited with status: ~S") "GS" status)) + (ly:error (_ "~a exited with status: ~S") "GS" status) (if exit-on-error (exit 1)))) status) @@ -84,7 +80,7 @@ (my-system be-verbose #t (format #f - "pngtopnm ~a | pnmscale -reduce ~a 2>/dev/null | pnmtopng -compression 9 2>/dev/null > ~a" + "pngtopnm \"~a\" | pnmscale -reduce ~a 2>/dev/null | pnmtopng -compression 9 2>/dev/null > \"~a\"" old factor file)) (delete-file old))) @@ -111,7 +107,7 @@ (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") @@ -119,8 +115,8 @@ (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)) @@ -163,9 +159,9 @@ (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 diff --git a/scm/safe-lily.scm b/scm/safe-lily.scm index 60ac97920b..202cad6883 100644 --- a/scm/safe-lily.scm +++ b/scm/safe-lily.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -41,10 +41,10 @@ ly:duration-dot-count ly:duration-factor ly:duration-log + ly:duration-scale ly:duration +;;;; Han-Wen Nienhuys +;;;; +;;;; LilyPond is free software: you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; 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 . +;;; +;;; Author Ian Hulin +;;; Date 16 October 2011 +;;; + +(define-module (scm safe-utility-defs) +#:use-module (ice-9 optargs) +#:export (safe-objects) +#:export-syntax (define-safe-public) +#:re-export-syntax (define*-public)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Safe definitions utility + +(define safe-objects + (list)) + +(define (get-symbol arg) + (if (pair? arg) + (get-symbol (car arg)) + arg)) + + +(define-macro (define-safe-public arglist . body) + "Define a variable, export it, and mark it as safe, i.e. usable in +LilyPond safe mode. The syntax is the same as `define*-public'." + + (let ((safe-symbol (get-symbol arglist))) + `(begin + (define*-public ,arglist + ,@body) + (set! safe-objects (cons (cons ',safe-symbol ,safe-symbol) + safe-objects)) + ,safe-symbol))) diff --git a/scm/script.scm b/scm/script.scm index 417df4cbee..905a9f5a62 100644 --- a/scm/script.scm +++ b/scm/script.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -175,7 +175,6 @@ . ( (script-stencil . (feta . ("uportato" . "dportato"))) (avoid-slur . around) - (slur-padding . 0.3) (padding . 0.45) (side-relative-direction . ,DOWN))) ("prall" @@ -300,7 +299,6 @@ (avoid-slur . around) (padding . 0.50) (direction . ,UP) - (slur-padding . 0.2) (staff-padding . 0.5))) ("trill" . ( diff --git a/scm/song-util.scm b/scm/song-util.scm index 9a65d44c8e..5eec46fdd6 100644 --- a/scm/song-util.scm +++ b/scm/song-util.scm @@ -159,10 +159,13 @@ If it unsets the property, return @code{#f}." (define-public (music-elements music) "Return list of all @var{music}'s top-level children." (let ((elt (ly:music-property music 'element)) - (elts (ly:music-property music 'elements))) - (if (not (null? elt)) - (cons elt elts) - elts))) + (elts (ly:music-property music 'elements)) + (arts (ly:music-property music 'articulations))) + (if (pair? arts) + (set! elts (append elts arts))) + (if (null? elt) + elts + (cons elt elts)))) (define-public (find-child music predicate) "Find the first node in @var{music} that satisfies @var{predicate}." @@ -182,12 +185,17 @@ If it unsets the property, return @code{#f}." (define-public (process-music music function) "Process all nodes of @var{music} (including @var{music}) in the DFS order. Apply @var{function} on each of the nodes. If @var{function} applied on a -node returns @code{#t}, don't process the node's subtree." +node returns @code{#t}, don't process the node's subtree. + +If a non-boolean is returned, it is considered the material to recurse." (define (process-music queue) (if (not (null? queue)) (let* ((elt (car queue)) (stop (function elt))) - (process-music (if stop - (cdr queue) - (append (music-elements elt) (cdr queue))))))) + (process-music (if (boolean? stop) + (if stop + (cdr queue) + (append (music-elements elt) (cdr queue))) + ((if (cheap-list? stop) append cons) + stop (cdr queue))))))) (process-music (list music))) diff --git a/scm/song.scm b/scm/song.scm index 9dbca9fd62..171ef6e191 100644 --- a/scm/song.scm +++ b/scm/song.scm @@ -19,14 +19,13 @@ ;;;; along with LilyPond. If not, see . -(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 @@ -34,23 +33,23 @@ ;; 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 @@ -91,9 +90,9 @@ ((= octave 0) "") ((> octave 0) - (make-uniform-array #\' octave)) + (make-string octave #\')) ((< octave 0) - (make-uniform-array #\, (- 0 octave))))) + (make-string (- octave) #\,)))) (pp-duration (note-duration object)) (if (> (note-joined object) 0) "-" "")))) ((rest? object) @@ -135,10 +134,7 @@ (define *tempo-compression* #f) (define (duration->number duration) - (let* ((log (ly:duration-log duration)) - (dots (ly:duration-dot-count duration)) - (factor (ly:duration-factor duration))) - (exact->inexact (* (expt 2 (- log)) (+ 1 (/ dots 2)) (/ (car factor) (cdr factor)))))) + (exact->inexact (ly:moment-main (ly:duration-length duration)))) (define (tempo->beats music) (let* ((tempo-spec (find-child-named music 'SequentialMusic)) @@ -162,7 +158,7 @@ (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 @@ -215,12 +211,12 @@ (lambda (music) (cond ;; true lyrics - ((music-name? music 'EventChord) + ((music-name? music '(EventChord LyricEvent)) (let ((lyric-event (find-child-named music 'LyricEvent))) (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)) @@ -375,7 +371,21 @@ (append (score-notes-note/rest-list last-result) (list rest-spec))) (add! (make-score-notes #:note/rest-list (list rest-spec)) result-list)))))) - #f) + (filter + (lambda (m) + (not (music-name? m '(RestEvent + NoteEvent + LyricEvent + MultiMeasureRestEvent)))) + (ly:music-property music 'elements))) + ((music-name? music '(RestEvent + NoteEvent + LyricEvent + MultiMeasureRestEvent)) + (make-music 'EventChord + 'elements + (cons music + (ly:music-property music 'articulations)))) ;; autobeaming change ((music-property? music 'autoBeaming) (set! autobeaming (property-value music)) @@ -385,19 +395,22 @@ (let ((change (if (property-value music) 1 -1))) (set! in-slur (+ in-slur change)) (if last-note-spec - (set-note-joined! last-note-spec (+ (note-joined last-note-spec) change))))) + (set-note-joined! last-note-spec (+ (note-joined last-note-spec) change)))) + #t) ;; tempo change ((music-property? music 'tempoWholesPerMinute) - (set! *tempo-compression* (ly:moment-div *default-tempo* (property-value music)))) + (set! *tempo-compression* (ly:moment-div *default-tempo* (property-value music))) + #t) ;; breathe ((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"))) + (warning music "\\\\breathe without previous note known")) + #t) ;; anything else (else #f)))) @@ -603,7 +616,7 @@ 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"))) @@ -662,7 +675,7 @@ ((< 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))) @@ -784,7 +797,7 @@ (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))) diff --git a/scm/standalone.scm b/scm/standalone.scm index 5ecfe7200a..bd3b7593ac 100644 --- a/scm/standalone.scm +++ b/scm/standalone.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify diff --git a/scm/stencil.scm b/scm/stencil.scm index 64f48cc89d..0ecc9abe8e 100644 --- a/scm/stencil.scm +++ b/scm/stencil.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2003--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -15,6 +15,30 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . +(define (make-bezier-sandwich-stencil coords thick xext yext) + (let* ((command-list `(moveto + ,(car (list-ref coords 3)) + ,(cdr (list-ref coords 3)) + curveto + ,(car (list-ref coords 0)) + ,(cdr (list-ref coords 0)) + ,(car (list-ref coords 1)) + ,(cdr (list-ref coords 1)) + ,(car (list-ref coords 2)) + ,(cdr (list-ref coords 2)) + curveto + ,(car (list-ref coords 4)) + ,(cdr (list-ref coords 4)) + ,(car (list-ref coords 5)) + ,(cdr (list-ref coords 5)) + ,(car (list-ref coords 6)) + ,(cdr (list-ref coords 6)) + closepath))) + (ly:make-stencil + `(path ,thick `(,@' ,command-list) 'round 'round #t) + xext + yext))) + (define-public (stack-stencils axis dir padding stils) "Stack stencils @var{stils} in direction @var{axis}, @var{dir}, using @var{padding}." @@ -128,26 +152,25 @@ the more angular the shape of the parenthesis." (lower-inner-control-point (cons inner-control-x lower-control-y))) - (ly:make-stencil - (list 'bezier-sandwich - `(quote ,(list - ;; Step 4: curve through inner control points - ;; to lower end point. - upper-inner-control-point - lower-inner-control-point - lower-end-point - ;; Step 3: move to upper end point. - upper-end-point - ;; Step 2: curve through outer control points - ;; to upper end point. - lower-outer-control-point - upper-outer-control-point - upper-end-point - ;; Step 1: move to lower end point. - lower-end-point)) - line-width) - (interval-widen x-extent (/ line-width 2)) - (interval-widen y-extent (/ line-width 2))))) + (make-bezier-sandwich-stencil + (list + ;; Step 4: curve through inner control points + ;; to lower end point. + upper-inner-control-point + lower-inner-control-point + lower-end-point + ;; Step 3: move to upper end point. + upper-end-point + ;; Step 2: curve through outer control points + ;; to upper end point. + lower-outer-control-point + upper-outer-control-point + upper-end-point + ;; Step 1: move to lower end point. + lower-end-point) + line-width + (interval-widen x-extent (/ line-width 2)) + (interval-widen y-extent (/ line-width 2))))) (define-public (parenthesize-stencil stencil half-thickness width angularity padding) @@ -197,12 +220,20 @@ y@tie{}radius @code{y-radius}, and thickness @var{thickness} with fill defined by @code{fill}." (let* ((x-out-radius (+ x-radius (/ thickness 2.0))) - (y-out-radius (+ y-radius (/ thickness 2.0))) ) - + (y-out-radius (+ y-radius (/ thickness 2.0))) + (x-max x-radius) + (x-min (- x-radius)) + (y-max y-radius) + (y-min (- y-radius)) + (commands `(,(list 'moveto x-max 0) + ,(list 'curveto x-max y-max x-min y-max x-min 0) + ,(list 'curveto x-min y-min x-max y-min x-max 0) + ,(list 'closepath))) + (command-list (fold-right append '() commands))) (ly:make-stencil - (list 'oval x-radius y-radius thickness fill) - (cons (- x-out-radius) x-out-radius) - (cons (- y-out-radius) y-out-radius)))) + `(path ,thickness `(,@',command-list) 'round 'round ,fill) + (cons (- x-out-radius) x-out-radius) + (cons (- y-out-radius) y-out-radius)))) (define-public (make-partial-ellipse-stencil @@ -394,7 +425,6 @@ respectively." (append prepend-origin (list 'closepath)) prepend-origin)) (command-list (fold-right append '() final-path))) - (ly:make-stencil `(path ,thickness `(,@',command-list) @@ -640,7 +670,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 @@ -658,43 +688,43 @@ with optional arrows of @code{max-size} on start and end controlled by (center-stencil-on-extent dim-stencil) 0.5)) (set! annotation - (ly:make-stencil (list 'color color (ly:stencil-expr annotation)) - (ly:stencil-extent annotation X) - (cons 10000 -10000))))) + (stencil-with-color annotation color)))) annotation)) -(define*-public (annotate-spacing-spec layout spacing-spec start-Y-offset prev-system-end +;; TODO: figure out how to annotate padding nicely +;; TODO: emphasize either padding or min-dist depending on which constraint was active +(define*-public (annotate-spacing-spec layout spacing-spec start-Y-offset next-staff-Y #:key (base-color blue)) - (let* ((get-spacing-var (lambda (sym) (assoc-get sym spacing-spec 0.0))) - (space (get-spacing-var 'space)) + (let* ((get-spacing-var (lambda (sym) (assoc-get sym spacing-spec 0.0))) + (space (get-spacing-var 'basic-distance)) (padding (get-spacing-var 'padding)) (min-dist (get-spacing-var 'minimum-distance)) - (contrast-color (append (cdr base-color) (list (car base-color))))) + (contrast-color (append (cdr base-color) (list (car base-color)))) + (min-dist-blocks (<= (- start-Y-offset min-dist) next-staff-Y)) + (min-dist-color (if min-dist-blocks contrast-color base-color)) + (basic-annotation (annotate-y-interval layout + "basic-dist" + (cons (- start-Y-offset space) start-Y-offset) + #t + #:color (map (lambda (x) (* x 0.25)) base-color))) + (min-annotation (annotate-y-interval layout + "min-dist" + (cons (- start-Y-offset min-dist) start-Y-offset) + #t + #:color min-dist-color)) + (extra-annotation (annotate-y-interval layout + "extra dist" + (cons next-staff-Y (- start-Y-offset min-dist)) + #t + #:color (map (lambda (x) (* x 0.5)) min-dist-color)))) + (stack-stencils X RIGHT 0.0 (list - (annotate-y-interval layout - "space" - (cons (- start-Y-offset space) start-Y-offset) - #t - #:color (map (lambda (x) (* x 0.25)) base-color)) - (annotate-y-interval layout - "min-dist" - (cons (- start-Y-offset min-dist) start-Y-offset) - #t - #:color (map (lambda (x) (* x 0.5)) base-color)) - (ly:stencil-add - (annotate-y-interval layout - "bottom-of-extent" - (cons prev-system-end start-Y-offset) - #t - #:color base-color) - (annotate-y-interval layout - "padding" - (cons (- prev-system-end padding) prev-system-end) - #t - #:color contrast-color)))))) - + basic-annotation + (if min-dist-blocks + min-annotation + (ly:stencil-add min-annotation extra-annotation)))))) (define-public (eps-file->stencil axis size file-name) (let* diff --git a/scm/tablature.scm b/scm/tablature.scm index c26af257c8..3304e24af7 100644 --- a/scm/tablature.scm +++ b/scm/tablature.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2009--2011 Marc Hohl +;;;; Copyright (C) 2009--2012 Marc Hohl ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -78,6 +78,16 @@ ;; if stems are drawn, it is nice to have a double stem for ;; (dotted) half notes to distinguish them from quarter notes: +(define-public (tabvoice::make-double-stem-width-for-half-notes grob) + (let ((X-extent (ly:stem::width grob))) + + ;; is the note a (dotted) half note? + (if (= 1 (ly:grob-property grob 'duration-log)) + ;; yes -> return double stem width + (cons (car X-extent) (+ 0.5 (* 2 (cdr X-extent)))) + ;; no -> return simple stem width + X-extent))) + (define-public (tabvoice::draw-double-stem-for-half-notes grob) (let ((stem (ly:stem::print grob))) @@ -97,7 +107,7 @@ (left-pitch (ly:event-property (event-cause left-bound) 'pitch)) (right-pitch (ly:event-property (event-cause right-bound) 'pitch))) - (if (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones left-pitch)) + (if (< (ly:pitch-tones right-pitch) (ly:pitch-tones left-pitch)) -0.75 0.75))) diff --git a/scm/text.scm b/scm/text.scm new file mode 100644 index 0000000000..ee399f94ba --- /dev/null +++ b/scm/text.scm @@ -0,0 +1,29 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2011--2012 Bertrand Bordage +;;;; +;;;; 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 . + + +(define-public default-string-replacement-alist + '(;; Whitespaces + ("\t" . " ") + ("\n" . " ") + ("\v" . " "))) + +(define-public (internal-add-text-replacements props alist) + (let* ((dummy-replacements (chain-assoc-get 'replacement-alist props '())) + (new-replacements + (append dummy-replacements alist))) + (prepend-alist-chain 'replacement-alist new-replacements props))) diff --git a/scm/time-signature-settings.scm b/scm/time-signature-settings.scm index 59adb1cdde..af852575dc 100644 --- a/scm/time-signature-settings.scm +++ b/scm/time-signature-settings.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2009--2011 Carl Sorensen +;;;; Copyright (C) 2009--2012 Carl Sorensen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -64,6 +64,7 @@ ;;; NOTE: numerator is kept in beam-type because of ;;; tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8) ;;; for eighth-note triplets. +;;; (define-public default-time-signature-settings '( @@ -232,7 +233,6 @@ for @var{time-signature} from @var{time-signature-settings}." "Like the C++ code that executes \\override, but without type checking." (begin - (revert-property-setting context property setting) (ly:context-set-property! context property @@ -263,7 +263,7 @@ a fresh copy of the list-head is made." ;; body of revert-property-setting (let ((current-value (ly:context-property context property))) - (if (> (entry-count current-value setting) 1) + (if (> (entry-count current-value setting) 0) (ly:context-set-property! context property diff --git a/scm/titling.scm b/scm/titling.scm index d0dde63bdf..b6c1e0583d 100644 --- a/scm/titling.scm +++ b/scm/titling.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2004--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify diff --git a/scm/to-xml.scm b/scm/to-xml.scm index f1d2e76d2e..ea7ce7a0fc 100644 --- a/scm/to-xml.scm +++ b/scm/to-xml.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2003--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify diff --git a/scm/translation-functions.scm b/scm/translation-functions.scm index 94862688fd..33acfbc7b4 100644 --- a/scm/translation-functions.scm +++ b/scm/translation-functions.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; (c) 1998--2011 Han-Wen Nienhuys +;;;; (c) 1998--2012 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -276,13 +276,17 @@ dot placement entries." along with @var{minimum-fret}, @var{maximum-stretch}, and @var{tuning}. Returns a list of @code{(string fret finger) lists." + + (define restrain-open-strings (ly:context-property context + 'restrainOpenStrings + #f)) (define specified-frets '()) (define free-strings (iota (length tuning) 1)) (define (calc-fret pitch string tuning) "Calculate the fret to play @var{pitch} on @var{string} with @var{tuning}." - (- (ly:pitch-semitones pitch) (ly:pitch-semitones (list-ref tuning (1- string))))) + (* 2 (- (ly:pitch-tones pitch) (ly:pitch-tones (list-ref tuning (1- string)))))) (define (note-pitch note) "Get the pitch (in semitones) from @var{note}." @@ -296,7 +300,7 @@ if no fingering is present." (map (lambda (art) (let* ((num (ly:event-property art 'digit))) - (if (and (eq? 'fingering-event (ly:event-property art 'class)) + (if (and (ly:in-event-class? art 'fingering-event) (number? num) (> num 0)) (set! finger-found num)))) @@ -326,6 +330,8 @@ if no string-number is present." #t (map (lambda (specced-fret) (or (eq? 0 specced-fret) + (and (not restrain-open-strings) + (eq? 0 fret)) (>= maximum-stretch (abs (- fret specced-fret))))) specified-frets)))) @@ -333,7 +339,10 @@ if no string-number is present." "Can @var{pitch} be played on @var{string}, given already placed notes?" (let* ((fret (calc-fret pitch string tuning))) - (and (>= fret minimum-fret) + (and (or (and (not restrain-open-strings) + (eq? fret 0)) + (>= fret minimum-fret)) + (integer? fret) (close-enough fret)))) (define (open-string string pitch) @@ -348,7 +357,10 @@ the current tuning?" tuning))) (if (< this-fret 0) (ly:warning (_ "Negative fret for pitch ~a on string ~a") - (car pitch-entry) string)) + (car pitch-entry) string) + (if (not (integer? this-fret)) + (ly:warning (_ "Missing fret for pitch ~a on string ~a") + (car pitch-entry) string))) (delete-free-string string) (set! specified-frets (cons this-fret specified-frets)) (list-set! string-fret-fingers @@ -407,7 +419,7 @@ the current tuning?" (ly:context-property context 'handleNegativeFrets 'recalculate))) - (cond ((or (>= this-fret 0) + (cond ((or (and (>= this-fret 0) (integer? this-fret)) (eq? handle-negative 'include)) (set-fret! pitch-entry string finger)) ((eq? handle-negative 'recalculate) @@ -565,7 +577,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 @@ -599,10 +611,10 @@ only ~a fret labels provided") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; bar numbers -(define-public ((every-nth-bar-number-visible n) barnum) +(define-public ((every-nth-bar-number-visible n) barnum mp) (= 0 (modulo barnum n))) -(define-public ((modulo-bar-number-visible n m) barnum) +(define-public ((modulo-bar-number-visible n m) barnum mp) (and (> barnum 1) (= m (modulo barnum n)))) (define-public ((set-bar-number-visibility n) tr) @@ -610,9 +622,44 @@ only ~a fret labels provided") (ly:context-set-property! tr 'barNumberVisibility (modulo-bar-number-visible n (modulo bn n))))) -(define-public (first-bar-number-invisible barnum) (> barnum 1)) - -(define-public (all-bar-numbers-visible barnum) #t) +(define-public (first-bar-number-invisible barnum mp) + (> barnum 1)) + +(define-public (first-bar-number-invisible-save-broken-bars barnum mp) + (or (> barnum 1) + (> (ly:moment-main-numerator mp) 0))) + +(define-public (first-bar-number-invisible-and-no-parenthesized-bar-numbers barnum mp) + (and (> barnum 1) + (= (ly:moment-main-numerator mp) 0))) + +(define-public (robust-bar-number-function barnum measure-pos alt-number context) + (define (get-number-and-power an pow) + (if (<= an alt-number) + (get-number-and-power (+ an (expt 26 (1+ pow))) (1+ pow)) + (cons (+ alt-number (- (expt 26 pow) an)) (1- pow)))) + (define (make-letter so-far an pow) + (if (< pow 0) + so-far + (let ((pos (modulo (quotient an (expt 26 pow)) 26))) + (make-letter (string-append so-far + (substring "abcdefghijklmnopqrstuvwxyz" + pos + (1+ pos))) + an + (1- pow))))) + (let* ((number-and-power (get-number-and-power 0 0)) + (begin-measure (= 0 (ly:moment-main-numerator measure-pos))) + (maybe-open-parenthesis (if begin-measure "" "(")) + (maybe-close-parenthesis (if begin-measure "" ")"))) + (markup (string-append maybe-open-parenthesis + (number->string barnum) + (make-letter "" + (car number-and-power) + (cdr number-and-power)) + maybe-close-parenthesis)))) + +(define-public (all-bar-numbers-visible barnum mp) #t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -622,3 +669,39 @@ only ~a fret labels provided") (= 0 (modulo count n))) (define-public (all-repeat-counts-visible count context) #t) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; make-engraver helper macro + +(defmacro-public make-engraver forms + "Helper macro for creating Scheme engravers. + +The usual form for an engraver is an association list (or alist) +mapping symbols to either anonymous functions or to another such +alist. + +@code{make-engraver} accepts forms where the first element is either +an argument list starting with the respective symbol, followed by the +function body (comparable to the way @code{define} is used for +defining functions), or a single symbol followed by subordinate forms +in the same manner. You can also just make an alist pair +literally (the @samp{car} is quoted automatically) as long as the +unevaluated @samp{cdr} is not a pair. This is useful if you already +have defined your engraver functions separately. + +Symbols mapping to a function would be @code{initialize}, +@code{start-translation-timestep}, @code{process-music}, +@code{process-acknowledged}, @code{stop-translation-timestep}, and +@code{finalize}. Symbols mapping to another alist specified in the +same manner are @code{listeners} with the subordinate symbols being +event classes, and @code{acknowledgers} and @code{end-acknowledgers} +with the subordinate symbols being interfaces." + (let loop ((forms forms)) + (if (cheap-list? forms) + `(list + ,@(map (lambda (form) + (if (pair? (car form)) + `(cons ',(caar form) (lambda ,(cdar form) ,@(cdr form))) + `(cons ',(car form) ,(loop (cdr form))))) + forms)) + forms))) diff --git a/scm/x11-color.scm b/scm/x11-color.scm index 0bc764ab68..5be7657292 100644 --- a/scm/x11-color.scm +++ b/scm/x11-color.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2005--2011 Bernard Hurley +;;;; Copyright (C) 2005--2012 Bernard Hurley ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by diff --git a/scripts/abc2ly.py b/scripts/abc2ly.py index 8adc6e4ac5..d04068fa31 100644 --- a/scripts/abc2ly.py +++ b/scripts/abc2ly.py @@ -695,7 +695,7 @@ def try_parse_header_line (ln, state): if g == 'K': # KEY a = check_clef(a) if a: - m = re.match ('^([^ \t]*) *([^ ]*)( *)(.*)$', a) # seperate clef info + m = re.match ('^([^ \t]*) *([^ ]*)( *)(.*)$', a) # separate clef info if m: # there may or may not be a space # between the key letter and the mode @@ -929,7 +929,7 @@ def try_parse_articulation (str, state): - # s7m2 input doesnt care about spaces + # s7m2 input doesn't care about spaces if re.match('[ \t]*\(', str): str = str.lstrip () @@ -1313,8 +1313,9 @@ def parse_file (fn): select_voice('default', '') global lineno lineno = 0 - sys.stderr.write ("Line ... ") - sys.stderr.flush () + if not global_options.quiet: + sys.stderr.write ("Line ... ") + sys.stderr.flush () __main__.state = state_list[current_voice_idx] for ln in ls: @@ -1332,6 +1333,7 @@ def parse_file (fn): orig_ln = ln + ln = junk_space (ln, state) ln = try_parse_header_line (ln, state) # Try nibbling characters off until the line doesn't change. @@ -1359,7 +1361,8 @@ def parse_file (fn): def identify(): - sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version)) + if not global_options.quiet: + sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version)) authors = """ Written by Han-Wen Nienhuys , Laura Conrad @@ -1380,16 +1383,21 @@ def get_option_parser (): p.add_option("--version", action="version", help=_ ("show version number and exit")) - p.add_option("-h", "--help", action="help", help=_ ("show this help and exit")) - p.add_option ('-o', '--output', metavar='FILE', - help=_ ("write output to FILE"), - action='store') - p.add_option ('-s', '--strict', help=_ ("be strict about success"), - action='store_true') - p.add_option ('-b', '--beams', help=_ ("preserve ABC's notion of beams"), action="store_true") + p.add_option ("-o", "--output", metavar='FILE', + action="store", + help=_ ("write output to FILE")) + p.add_option ("-s", "--strict", + action="store_true", + help=_ ("be strict about success")) + p.add_option ('-b', '--beams', + action="store_true", + help=_ ("preserve ABC's notion of beams")) + p.add_option ('-q', '--quiet', + action="store_true", + help=_ ("suppress progress messages")) p.add_option_group ('', description=( _ ('Report bugs via %s') @@ -1409,12 +1417,14 @@ for f in files: if f == '-': f = '' - sys.stderr.write ('Parsing `%s\'...\n' % f) + if not global_options.quiet: + sys.stderr.write ('Parsing `%s\'...\n' % f) parse_file (f) if not global_options.output: global_options.output = os.path.basename (os.path.splitext (f)[0]) + ".ly" - sys.stderr.write ('lilypond output to: `%s\'...' % global_options.output) + if not global_options.quiet: + sys.stderr.write ('lilypond output to: `%s\'...' % global_options.output) outf = open (global_options.output, 'w') # don't substitute @VERSION@. We want this to reflect @@ -1427,4 +1437,5 @@ for f in files: dump_voices (outf) dump_score (outf) dump_lyrics (outf) - sys.stderr.write ('\n') + if not global_options.quiet: + sys.stderr.write ('\n') diff --git a/scripts/auxiliar/cg-section.sh b/scripts/auxiliar/cg-section.sh index 272260c3c9..77d0bdee96 100755 --- a/scripts/auxiliar/cg-section.sh +++ b/scripts/auxiliar/cg-section.sh @@ -2,20 +2,19 @@ # Build html versions of sections of lilypond Contributors' Guide # -# Usage: cg-section.sh SECTION +# Usage: ./cg-section.sh SECTION # -# where SECTION is the section to be built. +# where SECTION is the section to be built. # -# For example, CG 4 would be built by -# cg-section.sh doc-work +# For example, CG 4 would be built by +# ./cg-section.sh doc-work # -# At the end of the run, the user is prompted whether or not to remove files +# At the end of the run, the user is prompted whether or not to +# remove the generated files. # -# Before first use, the following must be done: -# * Set FROMDIR, DOCDIR, TODIR, LILYPONDBOOK, and TEXI2HTML for your system -# * Create $DOCDIR -# * Copy version.itexi from somewhere in your Documentation tree -# (probably Documentation/out) to $DOCDIR +# Paths are calculated from environment variables in exactly the +# same way as they are for doc-section.sh - see the documentation +# for that. # # Known limitations: # @@ -23,51 +22,98 @@ # * Bitmap images aren't loaded properly # -# -# Customize the file here -# -FROMDIR="$HOME/lilypond" -DOCDIR="$HOME/lilypond/tempdocs" -TODIR="$DOCDIR/contributor" +usage () { + cat <&2 +Usage: $0 SECTION + +e.g. $0 doc-work +EOF + exit "$1" +} + +if [ "$1" == '-h' ] || [ "$1" == '--help' ]; then + usage 0 +fi + +[ $# = 1 ] || usage 1 + +if [ -n "$LILYPOND_GIT" ]; then + echo "Using source tree from value of \$LILYPOND_GIT: $LILYPOND_GIT" +else + cd "`dirname $0`" + cd ../.. + LILYPOND_GIT="`pwd`" + echo "\$LILYPOND_GIT was not set; auto-detected source tree at $LILYPOND_GIT" +fi + +if test ! -e "$LILYPOND_GIT/DEDICATION"; then + echo "Error: $LILYPOND_GIT did not look like a LilyPond source tree; aborting." >&2 + exit 1 +fi + +: "${LILYPOND_BUILD_DIR:=$LILYPOND_GIT/build}" +DOC_DIR="${LILYPOND_TEMPDOCS:-$LILYPOND_BUILD_DIR/tempdocs}" +LILYPOND_BOOK="$LILYPOND_BUILD_DIR/out/bin/lilypond-book" TEXI2HTML="texi2html" -REFCHECK="$FROMDIR/scripts/auxiliar/ref_check.py" +REFCHECK="$LILYPOND_GIT/scripts/auxiliar/ref_check.py" -NAME=$1 +SECTION="$1" +DOCDIR="$HOME/lilypond/tempdocs" +OUTPUT_DIR="$DOC_DIR/contributor" +SECTION_PATH="$LILYPOND_GIT/Documentation/contributor/$SECTION.itexi" -if test ! -d $TODIR; then - mkdir $TODIR +if test ! -e "$SECTION_PATH"; then + echo "$SECTION_PATH did not exist; is $SECTION a valid section in the Contributor's Guide?" >&2 + exit 1 fi -if test ! -d $TODIR/out; then - mkdir $TODIR/out + +if test ! -d "$OUTPUT_DIR"; then + mkdir "$OUTPUT_DIR" +fi +if test ! -d "$OUTPUT_DIR/out"; then + mkdir "$OUTPUT_DIR/out" fi -cp $FROMDIR/Documentation/common-macros.itexi $TODIR/common-macros.itexi -cp $FROMDIR/Documentation/macros.itexi $DOCDIR/macros.itexi -cp $DOCDIR/version.itexi $TODIR/version.itexi +cp "$LILYPOND_GIT/Documentation/common-macros.itexi" "$OUTPUT_DIR/common-macros.itexi" +cp "$LILYPOND_GIT/Documentation/macros.itexi" "$DOC_DIR/macros.itexi" +cp "$LILYPOND_BUILD_DIR/Documentation/out/version.itexi" "$OUTPUT_DIR" -if test -e $TODIR/$NAME.html; then - rm $TODIR/$NAME.html +if test -e "$OUTPUT_DIR/$SECTION.html"; then + rm "$OUTPUT_DIR/$SECTION.html" fi -if test -e $TODIR/out/$NAME.texi; then - rm $TODIR/out/$NAME.texi +if test -e "$OUTPUT_DIR/out/$SECTION.texi"; then + rm "$OUTPUT_DIR/out/$SECTION.texi" fi -echo Running RefCheck -python $REFCHECK +echo "Running RefCheck" +python "$REFCHECK" + +cd "$DOC_DIR" +echo "Running $TEXI2HTML" +cat "$DOC_DIR/macros.itexi" "$SECTION_PATH" > "$OUTPUT_DIR/$SECTION.texi" + +"$TEXI2HTML" \ + --no-validate \ + --output="$OUTPUT_DIR/out/$SECTION.html" \ + --I="$LILYPOND_GIT/Documentation" \ + --I="$OUTPUT_DIR/out" \ + "$OUTPUT_DIR/$SECTION.texi" + +cat < $TODIR/$NAME.texi -$TEXI2HTML \ - --no-validate \ - --output=$TODIR/out/$NAME.html \ - --I=$FROMDIR/Documentation \ - --I=$TODIR/out \ - $TODIR/$NAME.texi +EOF -read -p "delete files? (y/n): " +read -p "rm -rf $OUTPUT_DIR ? (y/n): " if [ "$REPLY" = "y" ]; then - echo "deleting files" - rm -rf $TODIR + echo "deleting files" + rm -rf "$OUTPUT_DIR" fi diff --git a/scripts/auxiliar/doc-section.sh b/scripts/auxiliar/doc-section.sh index 58a272e58f..963476840a 100755 --- a/scripts/auxiliar/doc-section.sh +++ b/scripts/auxiliar/doc-section.sh @@ -2,23 +2,31 @@ # Build html versions of sections of lilypond documentation # -# Usage: doc-section.sh MANUAL SECTION +# Usage: ./doc-section.sh MANUAL SECTION # -# where MANUAL is the manual and SECTION is the section to be built. +# where MANUAL is the manual and SECTION is the section to be +# built. # -# For example, NR 1.2 would be built by -# doc-section.sh notation rhythms +# For example, NR 1.2 would be built by +# ./doc-section.sh notation rhythms # # and LM 1 would be built by -# doc-section.sh learning tutorial +# ./doc-section.sh learning tutorial # -# At the end of the run, the user is prompted whether or not to remove files +# At the end of the run, the user is prompted whether or not to +# remove the generated files. +# +# According to http://code.google.com/p/lilypond/issues/detail?id=1236 +# the location of the lilypond git tree is taken from $LILYPOND_GIT +# if specified, otherwise it is auto-detected. +# +# It is assumed that compilation takes place in the build/ +# subdirectory, but this can be overridden by setting the environment +# variable LILYPOND_BUILD_DIR. +# +# Similarly, output defaults to build/tempdocs/ but this can be +# overridden by setting the environment variable LILYPOND_TEMPDOCS. # -# Before first use, the following must be done: -# * Set FROMDIR, DOCDIR, TODIR, LILYPONDBOOK, and TEXI2HTML for your system -# * Create $DOCDIR -# * Copy version.itexi from somewhere in your Documentation tree -# (probably Documentation/out) to $DOCDIR # # Known limitations: # @@ -27,71 +35,139 @@ # * Won't build Contributors' Guide; see scripts/auxiliar/cg-section.sh # -# -# Customize the file here -# -FROMDIR="$HOME/lilypond-git" -DOCDIR="$HOME/lilypond-git/tempdocs" -LILYPONDBOOK="lilypond-book" +usage () { + cat <&2 + +Usage: $0 MANUAL SECTION +e.g. $0 notation rhythms + +EOF + exit "$1" +} + +if [ "$1" = '-h' ] || [ "$1" = '--help' ]; then + usage 0 +fi + +[ $# = 2 ] || usage 1 + +if [ -n "$LILYPOND_GIT" ]; then + echo "Using source tree from value of \$LILYPOND_GIT: $LILYPOND_GIT" +else + cd "`dirname $0`" + cd ../.. + LILYPOND_GIT="`pwd`" + echo "\$LILYPOND_GIT was not set; auto-detected source tree at $LILYPOND_GIT" +fi + +if [ -n "$BROWSER" ]; then + echo "Using browser from \$BROWSER: $BROWSER" +else + echo "\$BROWSER not set; using firefox as default" + BROWSER="firefox" +fi + +if test ! -e "$LILYPOND_GIT/DEDICATION"; then + echo "Error: $LILYPOND_GIT did not look like a LilyPond source tree; aborting." >&2 + exit 1 +fi + +: "${LILYPOND_BUILD_DIR:=$LILYPOND_GIT/build}" +DOC_DIR="${LILYPOND_TEMPDOCS:-$LILYPOND_BUILD_DIR/tempdocs}" +LILYPOND_BOOK="$LILYPOND_BUILD_DIR/out/bin/lilypond-book" TEXI2HTML="texi2html" -REFCHECK="$FROMDIR/scripts/auxiliar/ref_check.py" +REFCHECK="$LILYPOND_GIT/scripts/auxiliar/ref_check.py" -DIRECTORY=$1 -NAME=$2 -TODIR=$DOCDIR/$NAME +MANUAL="$1" +SECTION="$2" +OUTPUT_DIR="$DOC_DIR/$SECTION" +MANUAL_PATH="$LILYPOND_GIT/Documentation/$MANUAL" +SECTION_PATH="$MANUAL_PATH/$SECTION.itely" -if test ! -d $TODIR; then - mkdir $TODIR +if test ! -d "$LILYPOND_BUILD_DIR"; then + echo "$LILYPOND_BUILD_DIR did not exist; check your setting of LILYPOND_BUILD_DIR. Aborting." >&2 + exit 1 fi -if test ! -d $TODIR/out; then - mkdir $TODIR/out + +if test ! -d "$MANUAL_PATH"; then + echo "$MANUAL_PATH was not a valid directory; is $MANUAL a valid manual?" >&2 + exit 1 fi -cp $FROMDIR/Documentation/common-macros.itexi $TODIR/common-macros.itexi -cp $FROMDIR/Documentation/macros.itexi $DOCDIR/macros.itexi -cp $DOCDIR/version.itexi $TODIR/version.itexi +if test ! -e "$SECTION_PATH"; then + echo "$SECTION_PATH did not exist; is $SECTION a valid section in the $MANUAL manual?" >&2 + exit 1 +fi -if test -e $TODIR/$NAME.html; then - rm $TODIR/$NAME.html +if test ! -d "$DOC_DIR"; then + mkdir "$DOC_DIR" + cp "$LILYPOND_BUILD_DIR/Documentation/out/version.itexi" "$DOC_DIR" +fi +if test ! -d "$OUTPUT_DIR"; then + mkdir "$OUTPUT_DIR" +fi +if test ! -d "$OUTPUT_DIR/out"; then + mkdir "$OUTPUT_DIR/out" fi -if test -e $TODIR/out/$NAME.texi; then - rm $TODIR/out/$NAME.texi +cp "$LILYPOND_GIT/Documentation/common-macros.itexi" "$OUTPUT_DIR/common-macros.itexi" +cp "$LILYPOND_GIT/Documentation/macros.itexi" "$DOC_DIR/macros.itexi" +cp "$DOC_DIR/version.itexi" "$OUTPUT_DIR/version.itexi" +cp -r "$LILYPOND_GIT/Documentation/pictures/" "$OUTPUT_DIR/out/pictures" + +if test -e "$OUTPUT_DIR/$SECTION.html"; then + rm "$OUTPUT_DIR/$SECTION.html" fi -echo "Running lilypond-book" -$LILYPONDBOOK \ +if test -e "$OUTPUT_DIR/out/$SECTION.texi"; then + rm "$OUTPUT_DIR/out/$SECTION.texi" +fi + +echo "Running $LILYPOND_BOOK" +"$LILYPOND_BOOK" \ -f texi-html \ - -I $FROMDIR/Documentation/snippets \ - -I $FROMDIR/Documentation/snippets/new \ - -I $FROMDIR/input/manual \ - -I $FROMDIR/Documentation \ - -I $FROMDIR/Documentation/included \ - -I $FROMDIR/Documentation/pictures \ - -o $TODIR/out \ - $FROMDIR/Documentation/$DIRECTORY/$NAME.itely + -I "$LILYPOND_GIT/Documentation/snippets" \ + -I "$LILYPOND_GIT/Documentation/snippets/new" \ + -I "$LILYPOND_GIT/input/manual" \ + -I "$LILYPOND_GIT/Documentation" \ + -I "$LILYPOND_GIT/Documentation/included" \ + -I "$LILYPOND_GIT/Documentation/pictures" \ + -o "$OUTPUT_DIR/out" \ + "$SECTION_PATH" BOOKRC=$? -if [ $BOOKRC != 0 ]; then - echo "Lilypond-book returned code $BOOKRC" - exit $BOOKRC +if [ "$BOOKRC" != 0 ]; then + echo "Lilypond-book returned code $BOOKRC" + exit $BOOKRC fi -echo Running RefCheck -python $REFCHECK - -cd $DOCDIR -if test -f $TODIR/out/$NAME.texi; then - echo Running texi2html - cat $DOCDIR/macros.itexi $TODIR/out/$NAME.texi > $TODIR/$NAME.texi - $TEXI2HTML \ - --no-validate \ - --output=$TODIR/out/$NAME.html \ - --I=$TODIR/out \ - $TODIR/$NAME.texi +echo "Running RefCheck" +python "$REFCHECK" + +cd "$DOC_DIR" +if test -f "$OUTPUT_DIR/out/$SECTION.texi"; then + echo "Running $TEXI2HTML" + cat "$DOC_DIR/macros.itexi" "$OUTPUT_DIR/out/$SECTION.texi" > "$OUTPUT_DIR/$SECTION.texi" + "$TEXI2HTML" \ + --no-validate \ + --output="$OUTPUT_DIR/out/$SECTION.html" \ + --I="$OUTPUT_DIR/out" \ + "$OUTPUT_DIR/$SECTION.texi" fi -read -p "delete files? (y/n): " +echo "Displaying output in $BROWSER; close browser window when done." + +$BROWSER $OUTPUT_DIR/out/$SECTION.html + +cat <. +# Performs string substitution on files, then applies astyle +# (http://astyle.sourceforge.net) # TODO -# * maintainable rules: regexp's using whitespace (?x) and match names -# ) -# * 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 @@ -35,139 +31,69 @@ import re import string import sys import time +import subprocess COMMENT = 'COMMENT' STRING = 'STRING' GLOBAL_CXX = 'GC++' CXX = 'C++' verbose_p = 0 -indent_p = 0 +indent_p = 1 +REQUIRED_ASTYLE_VERSION = "Artistic Style Version 2.02" + 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 +115,12 @@ rules = { no_match = 'a\ba' snippet_res = { CXX: { + 'define': + r'''(?x) + (?P + (?P + \#[ \t]*define[ \t]+([^\n]*\\\n)*[^\n]*))''', + 'multiline_comment': r'''(?sx) (?P @@ -197,16 +129,17 @@ snippet_res = { 'singleline_comment': r'''(?mx) - ^.* + ^.*? # leave leading spaces for the comment snippet (?P (?P - [ \t]*//([ \t][^\n]*|)\n))''', + [ \t]*//[^\n]*\n))''', 'string': r'''(?x) + " # leave the leading " character visible to CXX rules (?P (?P - "([^\"\n](\")*)*"))''', + ([^"\n]|\\")*"))''', 'char': r'''(?x) @@ -214,13 +147,13 @@ snippet_res = { (?P '([^']+|\')))''', - 'include': - r'''(?x) - (?P - (?P - "#[ \t]*include[ \t]*<[^>]*>''', - }, - } + 'include': + r'''(?x) + (?P + (?P + \#[ \t]*include[ \t]*<[^>]*>))''', + }, + } class Chunk: def replacement_text (self): @@ -370,20 +303,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 +338,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 +360,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': @@ -477,39 +395,25 @@ def do_options (): sys.exit (2) return files +def check_astyle_version(): + cmd = "astyle --version" + process = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE) + stdout, stderr = process.communicate() + if REQUIRED_ASTYLE_VERSION in stderr: + return True + return False + outdir = 0 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 () + if not check_astyle_version(): + print "Error: we require %s" % REQUIRED_ASTYLE_VERSION + print "Sorry, no higher (or lower) versions allowed" + sys.exit(1) files = do_options () if outdir and not os.path.isdir (outdir): os.makedirs (outdir) @@ -546,7 +450,7 @@ typedef struct _t_ligature typedef std::map < AFM_Ligature const *, int > Bar; /** - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys */ /* || diff --git a/scripts/auxiliar/lily-git.tcl b/scripts/auxiliar/lily-git.tcl index 6f16791313..a734269ed8 100755 --- a/scripts/auxiliar/lily-git.tcl +++ b/scripts/auxiliar/lily-git.tcl @@ -1,23 +1,37 @@ #!/usr/bin/wish # GUI interface for common LilyPond git repository commands -# Copyright 2009--2011 by Johannes Schindelin and Carl Sorensen +# Copyright 2009--2012 by Johannes Schindelin and Carl Sorensen # +package require Tk -set version 0.64 +set version 0.66 +proc get_environment_var {var_name default_value} { + global env + if [catch {set return_value $env($var_name)}] { + set return_value $default_value + } + return $return_value +} # set to 1 to set up for translation, to 0 for other set translator 0 +# If you have push access, set to 1, or use LILYPOND_GIT_PUSH +set default_push_access 0 +set push_access [get_environment_var "LILYPOND_GIT_PUSH" $default_push_access] + + # location of lilypond git -set lily_dir $env(HOME)/lilypond-git +set lily_dir [get_environment_var LILYPOND_GIT $env(HOME)/lilypond-git] if {$translator == 1} { set windowTitle \ "LilyPond Translator's Git Interface version $version" set updateButtonText "1. Update translation" set initializeButtonText "1. Get translation" - set originHead "lilypond/translation" + set originHead "translation" + set pushHead $originHead set rebase 0 } else { set windowTitle \ @@ -25,9 +39,11 @@ if {$translator == 1} { set updateButtonText "1. Update source" set initializeButtonText "1. Get source" set originHead "master" + set pushHead "staging" + set defaultBranch "dev/local_working" set rebase 1 } -package require Tk + ## Submits the user data collected using the git config command @@ -118,10 +134,14 @@ set commit_header {} # Helper functions -if {[file exists $lily_dir]} { - cd $lily_dir +proc add_working_branch {} { + global originHead + global workingBranch + git checkout $originHead + git branch -f $workingBranch } + set abort_dir "./aborted_edits" proc write_to_output {s} { @@ -214,7 +234,10 @@ proc update_lilypond_with_rebase {} { proc update_lilypond {rebase} { global lily_dir global originHead + global pushHead global translator + global workingBranch + global push_access . config -cursor watch if {![file exists $lily_dir]} { write_to_output "Cloning LilyPond (this can take some time) ...\n" @@ -228,17 +251,26 @@ proc update_lilypond {rebase} { git reset --hard origin/$originHead git config branch.$originHead.remote origin git config branch.$originHead.merge refs/heads/$originHead + git checkout $originHead + if {$workingBranch != ""} { + add_working_branch + git checkout $workingBranch + } .buttons.commitFrame.commit configure -state normal .buttons.commitFrame.amend configure -state normal .buttons.update configure -text buttonUpdateText .buttons.patch configure -state normal + if {$push_access && !$translator} { + .buttons.push configure -state normal + } .buttons.panic configure -state normal toggle_rebase } else { write_to_output "Updating LilyPond...\n" git fetch origin if {$rebase} { - git rebase origin/$originHead + git rebase origin/$originHead $originHead + git rebase origin/$originHead $workingBranch } else { git merge origin/$originHead } @@ -267,6 +299,33 @@ proc make_patch_from_origin {rebase} { . config -cursor "" } + +proc push_patch_to_staging {} { + global workingBranch + global pushHead + global git_log + global push_canceled + global log_text + global originHead + + git rebase $originHead $workingBranch + set staging_sha [exec git rev-parse ] + set head_sha [exec git rev-parse $workingBranch] + set log_error [catch {exec git --no-pager log {--pretty=format:%h : %an -- %s} --graph $originHead..$workingBranch} log_text] + if {$log_error == 0 && $log_text == ""} { + tk_messageBox -type ok -message "No changes in repository. Nothing to push." + } else { + get_git_log + tkwait visibility .gitLogWindow + tkwait window .gitLogWindow + if {$push_canceled == 0} { + git rebase origin/$pushHead $workingBranch~0 + git push origin HEAD:$pushHead + git checkout $workingBranch + } + } +} + proc abort_changes {} { global abort_dir global originHead @@ -335,6 +394,59 @@ proc commitMessageCancel {} { destroy .commitMessage } +proc pushContinue {} { + global push_canceled + set push_canceled = 0 + destroy .gitLogWindow +} + +proc pushCancel {} { + global push_canceled + set push_canceled 1 + destroy .gitLogWindow +} + + +# git log output window +proc get_git_log {} { + global log_text + toplevel .gitLogWindow + frame .gitLogWindow.messageFrame + + + text .gitLogWindow.messageFrame.message_body \ + -xscrollcommand [list .gitLogWindow.messageFrame.horizontal set] \ + -yscrollcommand [list .gitLogWindow.messageFrame.vertical set] \ + -width 60 -height 10 -relief solid -border 2 -wrap none + scrollbar .gitLogWindow.messageFrame.horizontal -orient h -command [list .gitLogWindow.messageFrame.message_body xview] + scrollbar .gitLogWindow.messageFrame.vertical -orient v -command [list .gitLogWindow.messageFrame.message_body yview] + + frame .gitLogWindow.messageFrame.leftFrame + label .gitLogWindow.messageFrame.leftFrame.label \ + -text "Log of commits in push:" + button .gitLogWindow.messageFrame.leftFrame.ok \ + -text Continue -default active -command pushContinue + button .gitLogWindow.messageFrame.leftFrame.cancel -text Cancel -default active \ + -command pushCancel + wm withdraw .gitLogWindow + wm title .gitLogWindow "Commits to be pushed" + + pack .gitLogWindow.messageFrame.leftFrame.label + pack .gitLogWindow.messageFrame.leftFrame.ok + pack .gitLogWindow.messageFrame.leftFrame.cancel + + pack .gitLogWindow.messageFrame.leftFrame -side left + + pack .gitLogWindow.messageFrame.horizontal -side bottom -fill x + pack .gitLogWindow.messageFrame.vertical -side right -fill y + pack .gitLogWindow.messageFrame.message_body -expand true -anchor nw -fill both + pack .gitLogWindow.messageFrame + + wm transient .gitLogWindow . + wm deiconify .gitLogWindow + .gitLogWindow.messageFrame.message_body insert insert $log_text +} + # Commit message input window proc get_commit_message {} { @@ -396,6 +508,10 @@ button .buttons.update -text $updateButtonText \ -command update_lilypond_with_rebase button .buttons.patch -text "3. Make patch set" \ -command patch_from_origin +if {$push_access && !$translator} { + button .buttons.push -text "4. Push patch to staging" \ + -command push_patch_to_staging +} toggle_rebase button .buttons.panic -text "Abort changes -- Reset to origin" \ -command abort_changes -fg Blue -bg Red @@ -406,6 +522,9 @@ if {![file exists $lily_dir]} { .buttons.commitFrame.commit configure -state disabled .buttons.commitFrame.amend configure -state disabled .buttons.patch configure -state disabled + if {$push_access} { + .buttons.push configure -state disabled + } .buttons.panic configure -state disabled } @@ -414,6 +533,9 @@ if {![file exists $lily_dir]} { pack .buttons.update -side left pack .buttons.commitFrame -side left pack .buttons.patch -side left +if {$push_access} { + pack .buttons.push -side left +} pack .buttons.spacer -side left pack .buttons.panic -side right @@ -436,5 +558,19 @@ pack .output.text -expand true -anchor nw -fill both pack .buttons pack .output -#grid .buttons -row 2 -column 1 -#grid .output -row 3 -column 1 -sticky "w" +# set working branch and push branch +set workingBranch [get_environment_var LILYPOND_BRANCH $defaultBranch] + +puts "\nworkingBranch $workingBranch\n" + +if {[file exists $lily_dir]} { + cd $lily_dir + set branchList [exec git branch] + if { $workingBranch != ""} { + if {![regexp $workingBranch $branchList]} { + add_working_branch + } + git checkout $workingBranch + } +} + diff --git a/scripts/auxiliar/makelsr.py b/scripts/auxiliar/makelsr.py index adf8681638..8d06023b01 100755 --- a/scripts/auxiliar/makelsr.py +++ b/scripts/auxiliar/makelsr.py @@ -4,22 +4,28 @@ import sys import os import glob import re +import optparse +import tempfile + +lilypond_flags = "-dno-print-pages -dsafe" + +lys_from_lsr = os.path.join ('Documentation', 'snippets') +new_lys = os.path.join ('Documentation', 'snippets', 'new') +ly_output = os.path.join (tempfile.gettempdir (), 'lsrtest') + +# which convert-ly and lilypond to use +P = os.path.join (os.environ.get ("LILYPOND_BUILD_DIR", ""), + "out/bin/convert-ly") +if os.path.isfile (P): + conv_path = os.path.dirname (P) +elif os.path.isfile ("build/out/bin/convert-ly"): + conv_path = "build/out/bin/" +else: + conv_path='' +convert_ly = os.path.join (conv_path, 'convert-ly') +lilypond_bin = os.path.join (conv_path, 'lilypond') -sys.path.append ('python') -import langdefs - -DEST = os.path.join ('Documentation', 'snippets') -NEW_LYS = os.path.join ('Documentation', 'snippets', 'new') -TEXIDOCS = [os.path.join ('Documentation', language_code, 'texidocs') - for language_code in langdefs.LANGDICT] -USAGE = ''' Usage: makelsr.py [LSR_SNIPPETS_DIR] -This script must be run from top of the source tree; -it updates snippets %(DEST)s with snippets -from %(NEW_LYS)s or LSR_SNIPPETS_DIR. -If a snippet is present in both directories, the one -from %(NEW_LYS)s is preferred. -''' % vars () LY_HEADER_LSR = '''%% DO NOT EDIT this file manually; it is automatically %% generated from LSR http://lsr.dsi.unimi.it @@ -29,51 +35,151 @@ LY_HEADER_LSR = '''%% DO NOT EDIT this file manually; it is automatically %% This file is in the public domain. ''' +new_lys_marker = "%% generated from %s" % new_lys LY_HEADER_NEW = '''%% DO NOT EDIT this file manually; it is automatically -%% generated from %s +%s %% Make any changes in Documentation/snippets/new/ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -''' % NEW_LYS - -TAGS = [] -# NR 1 -TAGS.extend (['pitches', 'rhythms', 'expressive-marks', -'repeats', 'simultaneous-notes', 'staff-notation', -'editorial-annotations', 'text']) -# NR 2 -TAGS.extend (['vocal-music', 'chords', 'keyboards', -'percussion', 'fretted-strings', 'unfretted-strings', -'ancient-notation', 'winds', 'world-music' -]) - -# other -TAGS.extend (['contexts-and-engravers', 'tweaks-and-overrides', -'paper-and-layout', 'breaks', 'spacing', 'midi', 'titles', 'template']) +''' % new_lys_marker + +options_parser = optparse.OptionParser ( + description = "makelsr - update snippets directory from LSR", + usage = '''%%prog [options] [LSR_SNIPPETS_DIR] +Unless -s option is specified, this script must be run from top of the +source tree. If LSR_SNIPPETS_DIR is not specified, it defaults to +current directory. + +Remove snippets in TOP_SOURCE_DIR/%(lys_from_lsr)s and put in snippets +from LSR_SNIPPETS_DIR run through convert-ly or from +TOP_SOURCE_DIR/%(new_lys)s; if a snippet is present in both +directories, the one from TOP_SOURCE_DIR/%(new_lys)s is preferred. +All written snippets are copied in LY_OUTPUT +with appending translations from .texidoc files and are tested with +lilypond with flags %(lilypond_flags)s + +''' % vars ()) + +options_parser.add_option ('-s', '--top-source', + dest="top_source_dir", + action="store", + metavar="TOP_SOURCE_DIR", + default=".", + help="set LilyPond top source directory") + +options_parser.add_option ('-o', '--ly-output', + dest="ly_output", + action="store", + metavar="LY_OUTPUT", + default=ly_output, + help="set LilyPond output files temporary directory") + +options_parser.add_option ('-p', '--path', + dest="bin_path", + action="store", + metavar="LY_PATH", + default=conv_path, + help="directory where looking for LilyPond binaries") + +options_parser.add_option ('-c', '--convert-ly', + dest="convert_ly", + action="store", + metavar="CONVERT-LY", + default="LY_PATH/convert-ly", + help="convert-ly binary to use") + +options_parser.add_option ('-l', '--lilypond-binary', + dest="lilypond_bin", + action="store", + metavar="LILYPOND_BIN", + default="LY_PATH/lilypond", + help="lilypond binary to use") + +(options, args) = options_parser.parse_args () + +if not os.path.isdir (options.top_source_dir): + sys.stderr.write ("Error: top source: %s: not a directory\n" % options.top_source_dir) + sys.exit (4) + +lys_from_lsr = os.path.normpath (os.path.join (options.top_source_dir, lys_from_lsr)) +new_lys = os.path.normpath (os.path.join (options.top_source_dir, new_lys)) +sys.path.append (os.path.normpath (os.path.join (options.top_source_dir, 'python'))) +import langdefs +texidoc_dirs = [ + os.path.normpath (os.path.join (options.top_source_dir, 'Documentation', language_code, 'texidocs')) + for language_code in langdefs.LANGDICT] + +if not os.path.isdir (lys_from_lsr): + sys.stderr.write ("Error: snippets path: %s: not a directory\n" % lys_from_lsr) + sys.exit (3) +if not os.path.isdir (new_lys): + sys.stderr.write ("Error: new snippets path: %s: not a directory\n" % lys_from_lsr) + sys.exit (3) + +ly_output_ok = False +if os.path.isdir (options.ly_output): + ly_output = options.ly_output + ly_output_ok = True +elif os.path.exists (options.ly_output): + try: + os.unlink (options.ly_output) + except Exception as e: + sys.stderr.write ("Warning: could not delete file before creating directory: %s\n" % e) + else: + try: + os.makedirs (options.ly_output) + except Exception as e: + sys.stderr.write ("Warning: could not create directory: %s\n" % e) + else: + ly_output = options.ly_output + ly_output_ok = True +else: + try: + os.makedirs (options.ly_output) + except Exception as e: + sys.stderr.write ("Warning: could not create directory: %s\n" % e) + else: + ly_output = options.ly_output + ly_output_ok = True +if not ly_output_ok: + ly_output = tempfile.gettempdir () + sys.stderr.write ("Warning: could not use or create directory %s, using default %s\n" % (options.ly_output, ly_output)) def exit_with_usage (n=0): - sys.stderr.write (USAGE) + options_parser.print_help (sys.stderr) sys.exit (n) -if len (sys.argv) >= 2: - in_dir = sys.argv[1] - if len (sys.argv) >= 3: +if len (args): + in_dir = args[0] + if not (os.path.isdir (in_dir)): + sys.stderr.write ("Error: %s: not a directory\n" % in_dir) + sys.exit (4) + if len (args) > 1: exit_with_usage (2) - if not (os.path.isdir (DEST) and os.path.isdir (NEW_LYS)): - exit_with_usage (3) + tags = os.listdir (in_dir) else: in_dir = '' + tags = [os.path.splitext (os.path.basename (f))[0] + for f in glob.glob (os.path.join (lys_from_lsr, '*.snippet-list'))] +## Make sure all users get the same ordering of tags +tags.sort () -# which convert-ly to use -if os.path.isfile("out/bin/convert-ly"): - conv_path='out/bin/' -elif os.path.isfile("build/out/bin/convert-ly"): - conv_path='build/out/bin/' +if options.convert_ly == "LY_PATH/convert-ly": + convert_ly = os.path.join (options.bin_path, "convert-ly") else: - conv_path='' -convert_ly=conv_path+'convert-ly' -print 'using '+convert_ly + convert_ly = options.convert_ly +if not os.path.exists (convert_ly): + sys.stderr.write ("Warning: %s: no such file\n" % convert_ly) + convert_ly = "convert-ly" +if options.lilypond_bin == "LY_PATH/lilypond": + lilypond_bin = os.path.join (options.bin_path, "lilypond") +else: + lilypond_bin = options.lilypond_bin +if not os.path.exists (lilypond_bin): + sys.stderr.write ("Warning: %s: no such file\n" % lilypond_bin) + lilypond_bin = "lilypond" +sys.stderr.write ("Using %s, %s\n" % (convert_ly, lilypond_bin)) unsafe = [] unconverted = [] @@ -100,75 +206,52 @@ lsr_comment_re = re.compile (r'\s*%+\s*LSR.*') begin_header_re = re.compile (r'\\header\s*{', re.M) ly_new_version_re = re.compile (r'\\version\s*"(.+?)"') strip_white_spaces_re = re.compile (r'[ \t]+(?=\n)') +final_empty_lines_re = re.compile (r'\n{2,}$') # add tags to ly files from LSR def add_tags (ly_code, tags): return begin_header_re.sub ('\\g<0>\n lsrtags = "' + tags + '"\n', ly_code, 1) -# for snippets from input/new, add message for earliest working version +# for snippets from Documentation/snippets/new, add message for earliest working version def add_version (ly_code): return '''%% Note: this file works from version ''' + \ ly_new_version_re.search (ly_code).group (1) + '\n' -s = 'Translation of GIT [Cc]ommittish' -texidoc_chunk_re = re.compile (r'^(?:%+\s*' + s + \ - r'.+)?\s*(?:texidoc|doctitle)([a-zA-Z]{2,4})\s+=(?:.|\n)*?(?=%+\s*' + \ - s + r'|\n\} % begin verbatim|\n (?:doctitle|texidoc|lsrtags) |$(?!.|\n))', re.M) - -def update_translated_texidoc (m, snippet_path, visited_languages): - base = os.path.splitext (os.path.basename (snippet_path))[0] - language_code = m.group (1) - visited_languages.append (language_code) - texidoc_path = os.path.join ('Documentation', language_code, - 'texidocs', base + '.texidoc') - if os.path.isfile (texidoc_path): - return open (texidoc_path).read () - else: - return m.group (0) - def escape_backslashes_in_header(snippet): # ASSUME: the \header exists. header_char_number_start = snippet.find('\header {') header_char_number_end = snippet.find('} % begin verbatim') header = snippet[header_char_number_start:header_char_number_end] - # two levels of escaping happening here -- 4\ means 1\ - # and the 10\ means two \ backslashes (that's 8\ ), and - # one backreference to group 1 (that's two 2\ ). - new_header = re.sub("@code\{\\\\([a-zA-Z])", "@code{\\\\\\\\\\1", header) + # only one level of escaping happening here + # thanks to raw strings + new_header = re.sub(r"@code\{\\([a-zA-Z])", r"@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): global unsafe global unconverted - dest = os.path.join (DEST, name) + dest = os.path.join (lys_from_lsr, name) tags = ', '.join (tags) - s = open (os.path.join (srcdir, name)).read () - - for path in TEXIDOCS: - texidoc_translation_path = \ - os.path.join (path, os.path.splitext (name)[0] + '.texidoc') - if os.path.exists (texidoc_translation_path): - texidoc_translation = open (texidoc_translation_path).read () - # Since we want to insert the translations verbatim using a - # regexp, \\ is understood as ONE escaped backslash. So we have - # to escape those backslashes once more... - texidoc_translation = texidoc_translation.replace ('\\', '\\\\') - s = begin_header_re.sub ('\\g<0>\n' + texidoc_translation, s, 1) + file_path = os.path.join (srcdir, name) + sys.stderr.write ("\nmakelsr.py: reading %s\n" % file_path) + s = open (file_path).read () s = doctitle_re.sub (doctitle_sub, s) - if in_dir and in_dir in srcdir: - s = LY_HEADER_LSR + add_tags (s, tags) - else: + if "new" in srcdir: s = LY_HEADER_NEW + add_version (s) + s + else: + s = LY_HEADER_LSR + add_tags (s, tags) s = mark_verbatim_section (s) s = lsr_comment_re.sub ('', s) s = strip_white_spaces_re.sub ('', s) + s = final_empty_lines_re.sub ('\n', s) s = escape_backslashes_in_header (s) + sys.stderr.write ("makelsr.py: writing %s\n" % dest) open (dest, 'w').write (s) e = os.system (convert_ly+(" -d -e '%s'" % dest)) @@ -176,112 +259,83 @@ def copy_ly (srcdir, name, tags): unconverted.append (dest) if os.path.exists (dest + '~'): os.remove (dest + '~') - # no need to check snippets from input/new - if in_dir and in_dir in srcdir: - # -V seems to make unsafe snippets fail nicer/sooner - e = os.system ("lilypond -V -dno-print-pages -dsafe -o /tmp/lsrtest '%s'" % dest) + # no need to check snippets from Documentation/snippets/new + if not "new" in srcdir: + e = os.system ( + "%s %s -o %s '%s'" % + (lilypond_bin, lilypond_flags, ly_output, dest)) if e: unsafe.append (dest) def read_source_with_dirs (src): - s = {} - l = {} - for tag in TAGS: + snippet_list = {} + tag_list = {} + for tag in tags: srcdir = os.path.join (src, tag) - l[tag] = set (map (os.path.basename, + tag_list[tag] = set (map (os.path.basename, glob.glob (os.path.join (srcdir, '*.ly')))) - for f in l[tag]: - if f in s: - s[f][1].append (tag) + for f in tag_list[tag]: + if f in snippet_list: + snippet_list[f][1].append (tag) else: - s[f] = (srcdir, [tag]) - return s, l + snippet_list[f] = (srcdir, [tag]) + return snippet_list tags_re = re.compile ('lsrtags\\s*=\\s*"(.+?)"') def read_source (src): - s = {} - l = dict ([(tag, set()) for tag in TAGS]) + snippet_list = {} + tag_list = dict ([(tag, set()) for tag in tags]) for f in glob.glob (os.path.join (src, '*.ly')): basename = os.path.basename (f) m = tags_re.search (open (f, 'r').read ()) if m: file_tags = [tag.strip() for tag in m.group (1). split(',')] - s[basename] = (src, file_tags) - [l[tag].add (basename) for tag in file_tags if tag in TAGS] + snippet_list[basename] = (src, file_tags) + for tag in file_tags: + if tag in tags: + tag_list[tag].add (basename) + else: + tag_list[tag] = set ((basename,)) else: notags_files.append (f) - return s, l + return snippet_list, tag_list -def dump_file_list (file, file_list, update=False): - if update: - old_list = set (open (file, 'r').read ().splitlines ()) - old_list.update (file_list) - new_list = list (old_list) - else: - new_list = file_list +def dump_file_list (file, file_list): + new_list = file_list f = open (file, 'w') f.write ('\n'.join (sorted (new_list)) + '\n') -def update_ly_in_place (snippet_path): - visited_languages = [] - contents = open (snippet_path).read () - contents = texidoc_chunk_re.sub \ - (lambda m: update_translated_texidoc (m, - snippet_path, - visited_languages), - contents) - need_line_break_workaround = False - for language_code in langdefs.LANGDICT: - if not language_code in visited_languages: - base = os.path.splitext (os.path.basename (snippet_path))[0] - texidoc_path = os.path.join ('Documentation', language_code, - 'texidocs', base + '.texidoc') - if os.path.isfile (texidoc_path): - texidoc_translation = open (texidoc_path).read () - texidoc_translation = texidoc_translation.replace ('\\', '\\\\') - contents = begin_header_re.sub ('\\g<0>\n' + texidoc_translation, contents, 1) - else: - need_line_break_workaround = True - contents = doctitle_re.sub (doctitle_sub, contents) - contents = escape_backslashes_in_header (contents) - - # workaround for a bug in the regex's that I'm not smart - # enough to figure out. -gp - if need_line_break_workaround: - first_translated = contents.find('%% Translation of') - keep = contents[:first_translated+5] - contents = keep + contents[first_translated+5:].replace('%% Translation of', '\n%% Translation of') +## clean out existing lys and generated files - but when we're +## not recreating all of them from the tarball don't delete +## snippets that came from LSR. +if in_dir: + map (os.remove, glob.glob (os.path.join (lys_from_lsr, '*.ly')) + + glob.glob (os.path.join (lys_from_lsr, '*.snippet-list'))) +else: + map (os.remove, glob.glob (os.path.join (lys_from_lsr, '*.snippet-list'))) + for f in glob.glob (os.path.join (lys_from_lsr, '*.ly')): + if new_lys_marker in open (f).read (): + os.remove (f) +snippets = {} +if in_dir: + # read LSR source where tags are defined by subdirs + snippets = read_source_with_dirs (in_dir) - open (snippet_path, 'w').write (contents) +# read Documentation/snippets/new where tags are directly defined +snippets_new, not_used_list = read_source (new_lys) +snippets.update (snippets_new) -if in_dir: - ## clean out existing lys and generated files - map (os.remove, glob.glob (os.path.join (DEST, '*.ly')) + - glob.glob (os.path.join (DEST, '*.snippet-list'))) +for (name, (srcdir, file_tags)) in snippets.items (): + copy_ly (srcdir, name, file_tags) - # read LSR source where tags are defined by subdirs - snippets, tag_lists = read_source_with_dirs (in_dir) +not_used_snippets, tag_lists = read_source (lys_from_lsr) - # read input/new where tags are directly defined - s, l = read_source (NEW_LYS) - snippets.update (s) - for t in TAGS: - tag_lists[t].update (l[t]) -else: - snippets, tag_lists = read_source (NEW_LYS) - ## update texidocs of snippets that don't come from NEW_LYS - for snippet_path in glob.glob (os.path.join (DEST, '*.ly')): - if not os.path.basename (snippet_path) in snippets: - update_ly_in_place (snippet_path) - -for (name, (srcdir, tags)) in snippets.items (): - copy_ly (srcdir, name, tags) for (tag, file_set) in tag_lists.items (): - dump_file_list (os.path.join (DEST, tag + '.snippet-list'), - file_set, update=not(in_dir)) + dump_file_list (os.path.join (lys_from_lsr, tag + '.snippet-list'), + file_set) if unconverted: sys.stderr.write ('These files could not be converted successfully by convert-ly:\n') sys.stderr.write ('\n'.join (unconverted) + '\n\n') @@ -293,7 +347,7 @@ if unsafe: sys.stderr.write (''' Unsafe files printed in lsr-unsafe.txt: CHECK MANUALLY! - git add %s/*.ly + git add %(lys_from_lsr)s/*.ly xargs git diff HEAD < lsr-unsafe.txt -''' % DEST) +''' % vars ()) diff --git a/scripts/auxiliar/prepare-web-media.py b/scripts/auxiliar/prepare-web-media.py new file mode 100755 index 0000000000..d10687ae63 --- /dev/null +++ b/scripts/auxiliar/prepare-web-media.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import shutil + +try: + lilypond_git_dir = os.environ["LILYPOND_GIT"] + lilypond_web_media_dir = os.environ["LILYPOND_WEB_MEDIA_GIT"] +except KeyError: + print "Error: you must have these environment variables defined:" + print " $LILYPOND_GIT" + print " $LILYPOND_WEB_MEDIA_GIT" + sys.exit(1) + +build_dir = os.path.join(lilypond_git_dir, 'build') + +def get_pictures_from(dirname): + try: + examine_dirname = os.path.join(build_dir, + "Documentation", dirname, "out-www") + filenames = ( + glob.glob(os.path.join(examine_dirname, "*.png")) + + glob.glob(os.path.join(examine_dirname, "*.jpg"))) + except: + print "Cannot find files (maybe a problem with your build directory?)" + return filenames + +pictures_filenames = get_pictures_from("pictures") +ly_examples_filenames = get_pictures_from(os.path.join("web", "ly-examples")) + +pictures_dest = os.path.join(lilypond_web_media_dir, "pictures") +ly_examples_dest = os.path.join(lilypond_web_media_dir, "ly-examples") +for filename in pictures_filenames: + shutil.copy(filename, pictures_dest) +for filename in ly_examples_filenames: + shutil.copy(filename, ly_examples_dest) + +print "Finished copying." +print "Don't forget to git commit and push to the lilypond-web-media repository!" + diff --git a/scripts/auxiliar/ref_check.py b/scripts/auxiliar/ref_check.py index ec6f6b622f..09c3449599 100755 --- a/scripts/auxiliar/ref_check.py +++ b/scripts/auxiliar/ref_check.py @@ -185,4 +185,4 @@ crossRefs = CrossRefs() topFile.read(crossRefs) crossRefs.check() if returnCode > 0: - print "Errors found: status code: ",returnCode \ No newline at end of file + print "Errors found: status code: ",returnCode diff --git a/scripts/auxiliar/ref_check.tely b/scripts/auxiliar/ref_check.tely index 5d795eedfb..ed7363148e 100644 --- a/scripts/auxiliar/ref_check.tely +++ b/scripts/auxiliar/ref_check.tely @@ -15,6 +15,7 @@ Manual names and reference keywords: Files to be excluded (not available in git): @exclude colorado.itexi @exclude computer-notation.itexi +@exclude context-mod-identifiers.tely @exclude context-properties.tely @exclude engravingbib.itexi @exclude identifiers.tely diff --git a/scripts/auxiliar/texi-langutils.py b/scripts/auxiliar/texi-langutils.py index 1fdaad7dcf..a2da780f26 100755 --- a/scripts/auxiliar/texi-langutils.py +++ b/scripts/auxiliar/texi-langutils.py @@ -178,14 +178,16 @@ if make_gettext: # Urgly: scan ly comments and variable names only in English doco is_english_doc = ( True + and not 'Documentation/cs/' in texi_file and not 'Documentation/de/' in texi_file and not 'Documentation/es/' in texi_file and not 'Documentation/fr/' in texi_file - and not 'Documentation/ja/' in texi_file and not 'Documentation/hu/' in texi_file + and not 'Documentation/ja/' in texi_file and not 'Documentation/it/' in texi_file and not 'Documentation/nl/' in texi_file and not 'Documentation/po/' in texi_file + and not 'Documentation/zh/' in texi_file ) process_texi (texi_file, intro_blurb, node_blurb, make_skeleton, os.path.basename (texi_file), node_list, diff --git a/scripts/auxiliar/update-with-convert-ly.sh b/scripts/auxiliar/update-with-convert-ly.sh index 9bb48614d7..b5afdfd639 100755 --- a/scripts/auxiliar/update-with-convert-ly.sh +++ b/scripts/auxiliar/update-with-convert-ly.sh @@ -20,10 +20,12 @@ make cd $TOP_SRC_DIR ### update manuals -find Documentation/ -path 'Documentation/snippets' -prune -o \ - -name '*.itely' | xargs $BUILD_DIR/out/bin/convert-ly -e -d +find Documentation/ -path 'Documentation/snippets' -prune -o -name out -prune \ + -o -name 'out-*' -prune -o -name '*.itely' -print \ + | xargs $BUILD_DIR/out/bin/convert-ly -e -d ### update .ly files # don't look in . otherwise it'll find stuff in build/ ! -find Documentation/ input/ ly/ \ - -name '*.ly' | xargs $BUILD_DIR/out/bin/convert-ly -e -d +find Documentation/ input/ ly/ -name out -prune -o -name 'out-*' -prune \ + -o \( -name '*.ly' -o -name '*.ily' \) -print \ + | xargs $BUILD_DIR/out/bin/convert-ly -e -d diff --git a/scripts/build/GNUmakefile b/scripts/build/GNUmakefile index 9f6e8f0c52..5407e1adfb 100644 --- a/scripts/build/GNUmakefile +++ b/scripts/build/GNUmakefile @@ -12,7 +12,5 @@ include $(depth)/make/stepmake.make #INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/scripts #INSTALLATION_OUT_FILES1=$(outdir)/lilypond-login $(outdir)/lilypond-profile -EXTRA_DIST_FILES = website-known-missing-files.txt - all: $(INSTALLATION_FILES) diff --git a/scripts/build/bib2texi.py b/scripts/build/bib2texi.py index dd896fa8b0..c71976dec1 100644 --- a/scripts/build/bib2texi.py +++ b/scripts/build/bib2texi.py @@ -6,12 +6,14 @@ import tempfile # usage: def usage (): - print 'usage: %s [-s style] [-o ] BIBFILES...' + print 'usage: %s [-s style] [-o ] [-q] BIBFILES...' + print '-q suppresses most output' -(options, files) = getopt.getopt (sys.argv[1:], 's:o:', []) +(options, files) = getopt.getopt (sys.argv[1:], 's:o:hq', []) output = 'bib.itexi' style = 'long' +show_output = True for (o,a) in options: if o == '-h' or o == '--help': @@ -21,6 +23,8 @@ for (o,a) in options: style = a elif o == '-o' or o == '--output': output = a + elif o == '-q': + show_output = False else: raise Exception ('unknown option: %s' % o) @@ -55,19 +59,31 @@ open (tmpfile + '.aux', 'w').write (r''' tmpdir = tempfile.gettempdir () +if (show_output): + quiet_flag = '' +else: + quiet_flag = ' -terse ' + #The command line to invoke bibtex -cmd = "TEXMFOUTPUT=%s bibtex %s" % (tmpdir, tmpfile) +cmd = "TEXMFOUTPUT=%s bibtex %s %s" % (tmpdir, quiet_flag, tmpfile) -sys.stdout.write ("Invoking `%s'\n" % cmd) +if (show_output): + sys.stdout.write ("Running bibtex on %s\n" % files) + sys.stdout.write (cmd) #And invoke it stat = os.system (cmd) if stat <> 0: - sys.exit(1) + sys.stderr.write ("Bibtex exited with nonzero exit status!") + sys.exit (1) #TODO: do tex -> itexi on output -# Following 2 lines copy tmpfile.bbl to the desired output file +# Following lines copy tmpfile.bbl to the desired output file bbl = open (tmpfile + '.bbl').read () +if bbl.strip () == '': + sys.stderr.write ("Bibtex generated an empty file!") + sys.exit (1) + open (output, 'w').write (bbl) def cleanup (tmpfile): diff --git a/scripts/build/create-weblinks-itexi.py b/scripts/build/create-weblinks-itexi.py index c48b0085b0..62d5afbfbd 100644 --- a/scripts/build/create-weblinks-itexi.py +++ b/scripts/build/create-weblinks-itexi.py @@ -9,14 +9,22 @@ import sys import os import glob -# these links are relative from /website/ on lilypond.org -depth = "../" - ### translation data -- shouldn't be here; see issue ### http://code.google.com/p/lilypond/issues/detail?id=1050 -#langs = ['', 'cs', 'de', 'es', 'fr', 'hu', 'it', 'ja', 'nl', 'zh'] -langs = ['', 'cs', 'de', 'es', 'fr', 'hu', 'it', 'ja', 'nl', 'zh'] +import langdefs +# GUB only has python 2.4 !!! +# langs = [i.code if i.code != 'en' else '' for i in langdefs.WEB_LANGUAGES] +langs = [] +for lang in langdefs.WEB_LANGUAGES: + if lang.code == 'en': + langs.append('') + else: + langs.append(lang.code) + + +# these links are relative from /website/ on lilypond.org +depth = "../" # Get/update node translations ''' @@ -196,27 +204,27 @@ translations = { 'Learning': '学习', 'Music glossary': '音乐术语表', 'Essay': '文章', - 'Notation': '五线谱', + 'Notation': '记谱法', 'Usage': '使用', 'Snippets': '片断', 'Web': 'Web', 'Changes': '变化', 'Extending': '扩展', - 'Internals': '内部', + 'Internals': '内部机制', 'Contributor': '贡献者', # keep the spaces! - ' (split HTML)': ' (分开的HTML', - ' (big HTML)': ' (大的HTML)', + ' (split HTML)': ' (分开的 HTML)', + ' (big HTML)': ' (大的 HTML)', - 'Regression tests for ': '回归测试', - 'PDF of regtests for ': '回归的PDF', - 'MusicXML Regression tests for ': 'MusicXML回归测试', - 'PDF of MusicXML regtests for ': 'MusicXML的PDF回归', + 'Regression tests for ': '回归测试 ', + 'PDF of regtests for ': '回归测试的 PDF ', + 'MusicXML Regression tests for ': 'MusicXML 回归测试 ', + 'PDF of MusicXML regtests for ': 'MusicXML 的 PDF 回归测试 ', 'Doc tarball for ': '为文档压缩包', - ' (did not exist in 2.12)': ' (在2.12中不存在)', + ' (did not exist in 2.12)': ' (在 2.12 中不存在)', }, } @@ -312,11 +320,11 @@ def make_download_source(name, vstring, version, lang): def make_all_downloads(macroName, version): make_download("download"+macroName+"LinuxNormal", "linux-x86/", - "linux-x86.sh", version, "1", "Linux x86") + "linux-x86.sh", version, "1", "GNU/Linux x86") make_download("download"+macroName+"LinuxBig", "linux-64/", - "linux-64.sh", version, "1", "Linux 64") + "linux-64.sh", version, "1", "GNU/Linux 64") make_download("download"+macroName+"LinuxPPC", "linux-ppc/", - "linux-ppc.sh", version, "1", "Linux PPC") + "linux-ppc.sh", version, "1", "GNU/Linux PPC") make_download("download"+macroName+"FreeBSDNormal", "freebsd-x86/", "freebsd-x86.sh", version, "1", "FreeBSD i386") @@ -409,9 +417,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), diff --git a/scripts/build/extract_texi_filenames.py b/scripts/build/extract_texi_filenames.py index fcb464d53d..9e338b5daf 100644 --- a/scripts/build/extract_texi_filenames.py +++ b/scripts/build/extract_texi_filenames.py @@ -34,11 +34,12 @@ import re import os import getopt -options_list, files = getopt.getopt (sys.argv[1:],'o:s:hI:m:', +options_list, files = getopt.getopt (sys.argv[1:],'o:s:hI:m:k:q', ['output=', 'split=', 'help', 'include=', 'master-map-file=', - 'known-missing-files=']) + 'known-missing-files=', + 'quiet']) help_text = r"""Usage: %(program_name)s [OPTIONS]... TEXIFILE... Extract files names for texinfo (sub)sections from the texinfo files. @@ -50,8 +51,9 @@ Options: -o, --output=DIRECTORY write .xref-map files to DIRECTORY -s, --split=MODE split manual according to MODE. Possible values are section and custom (default) - --known-missing-files a filename which has a list of files known + -k, --known-missing-files a filename which has a list of files known to be missing for this make + -q, --quiet suppress most messages """ def help (text): @@ -64,6 +66,8 @@ include_path = ['.',] master_map_file = '' known_missing_files = [] known_missing_files_file = '' +docs_without_directories = ['changes', 'music-glossary'] +suppress_output = False initial_map = {} for opt in options_list: o = opt[0] @@ -74,7 +78,12 @@ for opt in options_list: if os.path.isdir (a): include_path.append (a) else: - print 'NOT A DIR from: ', os.getcwd (), a + path_list = a.split('/') + file_name = path_list[len(path_list)-1] + if not (file_name in docs_without_directories): + print a, 'is not a directory.' + print 'Please consider adding it to the list of ' + print 'known missing files in extract_texi_filename.py.' elif o == '-o' or o == '--output': outdir = a elif o == '-s' or o == '--split': @@ -87,6 +96,8 @@ for opt in options_list: known_missing_files_file = a else: print 'Missing files list file not found: ', a + elif o == '-q' or o == '--quiet': + suppress_output = True else: raise Exception ('unknown option: ' + o) @@ -100,11 +111,12 @@ if not os.path.isdir (outdir): os.unlink (outdir) os.makedirs (outdir) -include_re = re.compile (r'@include ((?!../lily-).*?\.i?te(xi|ly))$', re.M) +# Only look at @include if it is not preceeded by a @c: +include_re = re.compile (r'^(?!.*@c .*@include)@include ((?!../lily-).*?\.i?te(xi|ly))$', re.M) whitespaces = re.compile (r'\s+') section_translation_re = re.compile ('^@(node|(?:unnumbered|appendix)\ (?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|\ -(?:major|chap|(?:sub){0,2})heading|lydoctitle|translationof) \ +(?:major|chap|(?:sub){0,2})heading|lydoctitle|translationof|nodeprefix) \ (.+)$', re.MULTILINE) external_node_re = re.compile (r'\s+@c\s+external.*') @@ -120,8 +132,8 @@ def expand_includes (m, filename): return extract_sections (filepath)[1] if not (include_name in known_missing_files): # Not found - print 'No such file: ' + include_name - print 'Search path: ' + ':'.join (include_path) + print 'Warning: No such file: ' + include_name + \ + ' (search path: ' + ':'.join (include_path)+')' return '' lang_re = re.compile (r'^@documentlanguage (.+)', re.M) @@ -210,9 +222,11 @@ def process_sections (filename, lang_suffix, page): sections = section_translation_re.findall (page) basename = os.path.splitext (os.path.basename (filename))[0] p = os.path.join (outdir, basename) + lang_suffix + '.xref-map' - print 'writing:', p + if not suppress_output: + print 'writing:', p f = open (p, 'w') + node_prefix_title = '' this_title = '' this_filename = 'index' this_anchor = '' @@ -247,6 +261,9 @@ def process_sections (filename, lang_suffix, page): this_filename = anchor elif original_node in initial_map: this_filename = initial_map[original_node][2] + elif sec[0] == "nodeprefix": + node_prefix_title = remove_texinfo (sec[1]) + node_prefix_anchor = create_texinfo_anchor (sec[1]) else: # Some pages might not use a node for every section, so # treat this case here, too: If we already had a section @@ -258,6 +275,10 @@ def process_sections (filename, lang_suffix, page): this_anchor = create_texinfo_anchor (sec[1]) had_section = True + if sec[0] == "lydoctitle" and node_prefix_title: + this_title = "%s: %s" % (node_prefix_title, this_title) + this_anchor = "%s-%s" % (node_prefix_anchor, this_anchor) + if split == 'custom': # unnumbered nodes use the previously used file name, # only numbered nodes get their own filename! However, @@ -287,6 +308,7 @@ if master_map_file: initial_map[m.group (1)] = (m.group (1), m.group (2), m.group (3)) for filename in files: - print "extract_texi_filenames.py: Processing %s" % filename + if not suppress_output: + print "extract_texi_filenames.py: Processing %s" % filename (lang_suffix, sections) = extract_sections (filename) process_sections (filename, lang_suffix, sections) diff --git a/scripts/build/gen-emmentaler-scripts.py b/scripts/build/gen-emmentaler-scripts.py index 46fb8163dd..dafb50c0ef 100644 --- a/scripts/build/gen-emmentaler-scripts.py +++ b/scripts/build/gen-emmentaler-scripts.py @@ -42,7 +42,9 @@ 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"); +MergeFonts("parmesan-noteheads%(design_size)d.pfb"); # load nummer/din after setting PUA. i = 0; diff --git a/scripts/build/genicon.py b/scripts/build/genicon.py index 543735240f..b96730b769 100644 --- a/scripts/build/genicon.py +++ b/scripts/build/genicon.py @@ -15,7 +15,7 @@ os.chdir(dir) def system (c): print c if os.system (c): - raise 'barf' + raise Exception('The command exited with nonzero exit status!') outputs = [] for sz in [48,32,16] : diff --git a/scripts/build/grand-replace.py b/scripts/build/grand-replace.py index aa48a53ef3..764c113f76 100644 --- a/scripts/build/grand-replace.py +++ b/scripts/build/grand-replace.py @@ -2,7 +2,7 @@ # This file is part of LilyPond, the GNU music typesetter. # -# Copyright (C) 2009--2011 Jan Nieuwenhuizen +# Copyright (C) 2009--2012 Jan Nieuwenhuizen # # LilyPond is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/scripts/build/help2man.pl b/scripts/build/help2man.pl index 9349010964..4c61852024 100644 --- a/scripts/build/help2man.pl +++ b/scripts/build/help2man.pl @@ -218,7 +218,7 @@ if ($opt_output) # ({GNU,Free} ) # - {GNU,Free} # -# and seperated from any copyright/author details by a blank line. +# and separated from any copyright/author details by a blank line. ($_, $version_text) = split /\n+/, $version_text, 2; diff --git a/scripts/build/install-info-html.sh b/scripts/build/install-info-html.sh index a116cd93d0..dafd629fc2 100644 --- a/scripts/build/install-info-html.sh +++ b/scripts/build/install-info-html.sh @@ -126,7 +126,7 @@ fi index_file=$index_dir/index.html rm -f $index_file -echo -n "$name: Writing index: $index_file..." +printf "%s: Writing index: %s..." "$name" "$index_file" # head cat >> $index_file < convert, create image etc. + s = r""" +@ifhtml +@html + +@end html +@end ifhtml + +@musicxmlfile[%s]{%s} +""" % (os.path.basename (n), fragment_options, n) + else: # Assume it's a lilypond file -> create image etc. s = r""" @@ -124,6 +157,11 @@ def name2line (n): """ % (os.path.basename (n), fragment_options, n) return s +if glob_input: + files = glob.glob(glob_input) +elif input_filename: + files = open(input_filename).read().split() + if files: dir = os.path.dirname (name) or "." # don't strip .tely extension, Documentation/snippets uses .itely @@ -133,11 +171,9 @@ if files: s = "\n".join (map (name2line, files)) s = template.replace (include_snippets, s, 1) f = "%s/%s" % (dir, name) - sys.stderr.write ("%s: writing %s..." % (program_name, f)) h = open (f, "w") h.write (s) h.close () - sys.stderr.write ('\n') else: # not Unix philosophy, but hey, at least we notice when # we don't distribute any .ly files. diff --git a/scripts/build/makesnippets.py b/scripts/build/makesnippets.py new file mode 100644 index 0000000000..9e7c5a63fe --- /dev/null +++ b/scripts/build/makesnippets.py @@ -0,0 +1,37 @@ +#!@PYTHON@ +# makesnippets.py + +'''USAGE: makesnippets.py INPUT_DIR OUTPUT_DIR DOC_DIR + +Read all .ly files from INPUT_DIR, insert translations from .texidoc +files found in DOC_DIR/LANG/texdiocs, and write ther result to OUTPUT_DIR.''' + +import glob +import sys +import os.path +import re + +import langdefs + +(input_dir, output_dir, doc_dir) = sys.argv[1:4] + +texidoc_dirs = [os.path.join (doc_dir, language_code, 'texidocs') + for language_code in langdefs.LANGDICT] + +begin_header_re = re.compile (r'\\header\s*{', re.M) + +for f in glob.glob (os.path.join (input_dir, '*.ly')): + name = os.path.basename (f) + s = open (f).read () + for path in texidoc_dirs: + texidoc_translation_path = \ + os.path.join (path, os.path.splitext (name)[0] + '.texidoc') + if os.path.exists (texidoc_translation_path): + texidoc_translation = open (texidoc_translation_path).read () + # Since we want to insert the translations verbatim using a + # regexp, \\ is understood as ONE escaped backslash. So we have + # to escape those backslashes once more... + texidoc_translation = texidoc_translation.replace ('\\', '\\\\') + s = begin_header_re.sub ('\\g<0>\n' + texidoc_translation, s, 1) + dest = os.path.join (output_dir, name) + open (dest, 'w').write (s) diff --git a/scripts/build/mass-link.py b/scripts/build/mass-link.py index 17412e5559..33b8dac467 100644 --- a/scripts/build/mass-link.py +++ b/scripts/build/mass-link.py @@ -13,8 +13,6 @@ import os import glob import getopt -print "mass-link.py" - optlist, args = getopt.getopt (sys.argv[1:], '', ['prepend-suffix=']) link_type, source_dir, dest_dir = args[0:3] files = args[3:] @@ -63,5 +61,6 @@ def force_link (src,dest): if os.path.exists (dest): os.system ('rm -f ' + dest) link (src, dest) + os.utime (dest, None) map (force_link, sourcefiles, destfiles) diff --git a/scripts/build/mf-to-table.py b/scripts/build/mf-to-table.py index 3f7b3cbb2f..f191d0aa8f 100644 --- a/scripts/build/mf-to-table.py +++ b/scripts/build/mf-to-table.py @@ -4,7 +4,7 @@ # This file is part of LilyPond, the GNU music typesetter. # -# Copyright (C) 1997--2011 Han-Wen Nienhuys +# Copyright (C) 1997--2012 Han-Wen Nienhuys # # LilyPond is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ import time def read_log_file (fn): str = open (fn).read () - str = re.sub ('\n', '', str) + str = re.sub ('[\n\r]', '', str) str = re.sub ('[\t ]+', ' ', str) deps = [] @@ -61,14 +61,20 @@ def parse_logfile (fn): } group = '' - for l in autolines: + for i, l in enumerate(autolines): tags = l.split ('@:') if tags[0] == 'group': group = tags[1] elif tags[0] == 'puorg': group = '' elif tags[0] == 'char': - name = tags[9] + try: + name = tags[9] + except IndexError: + print 'Error in mf-to-table while processing file', fn + print 'Index 9 >', len(tags)-1, 'on line', i + print l + raise if group: name = group + '.' + name @@ -242,8 +248,12 @@ for filenm in files: enc_name = 'FetaEncoding' if re.search ('parmesan', filenm): enc_name = 'ParmesanEncoding' + elif re.search ('parmesan-noteheads', filenm): + enc_name = 'ParmesanNoteheadsEncoding' 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): diff --git a/scripts/build/mf2pt1.pl b/scripts/build/mf2pt1.pl index 95df0f8206..746fb829f6 100644 --- a/scripts/build/mf2pt1.pl +++ b/scripts/build/mf2pt1.pl @@ -7,7 +7,7 @@ ######################################################################## # mf2pt1 # -# Copyright (C) 2008 Scott Pakin # +# Copyright (C) 2012 Scott Pakin # # # # This program may be distributed and/or modified under the conditions # # of the LaTeX Project Public License, either version 1.3c of this # @@ -21,7 +21,7 @@ # version 2006/05/20 or later. # ######################################################################## -our $VERSION = "2.4.4"; # mf2pt1 version number +our $VERSION = "2.5"; # mf2pt1 version number require 5.6.1; # I haven't tested mf2pt1 with older Perl versions use File::Basename; @@ -160,7 +160,7 @@ my $filedir; my $filenoext; my $versionmsg = "mf2pt1 version $VERSION -Copyright (C) 2008 Scott Pakin +Copyright (C) 2012 Scott Pakin This program may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this @@ -427,7 +427,7 @@ ENDHEADER sub get_bboxes ($) { execute_command 1, ("mpost", "-mem=mf2pt1", "-progname=mpost", - "\\mode:=localfont; mag:=$mag; bpppix $bpppix; input $mffile"); + "\\mode:=localfont; mag:=$mag; bpppix $bpppix; nonstopmode; input $mffile"); opendir (CURDIR, ".") || die "${progname}: $! ($filedir)\n"; @charfiles = sort { ($a=~ /\.(\d+)$/)[0] <=> ($b=~ /\.(\d+)$/)[0] } @@ -588,7 +588,7 @@ sub output_font_programs () my @fontprog; push @fontprog, ("/$gname {", frac_string (frac_approx ($charbbox[$charnum]->[0]), - frac_approx ($charwd[$charnum] * $mag)) + frac_approx ($charbbox[$charnum]->[2])) . "hsbw"); my ($cpx, $cpy) = ($charbbox[$charnum]->[0], 0); # Current point (PostScript) @@ -726,7 +726,7 @@ sub output_trailer () { print OUTFILE <<"ENDTRAILER"; /.notdef { - 0 @{[$fontbbox[2]-$fontbbox[0]]} hsbw + 0 @{[frac_string (frac_approx ($fontbbox[2] - $fontbbox[0]))]} hsbw endchar } ND end diff --git a/scripts/build/mutopia-index.py b/scripts/build/mutopia-index.py deleted file mode 100644 index 31fa6ac492..0000000000 --- a/scripts/build/mutopia-index.py +++ /dev/null @@ -1,197 +0,0 @@ -#!@PYTHON@ -# mutopia-index.py - -import fnmatch -import getopt -import os -import re -import stat -import sys - -def find (pat, dir): - f = os.popen ('find %s -name "%s"'% (dir, pat)) - lst = [] - for a in f.readlines(): - a = a[:-1] - lst.append (a) - return lst - - -junk_prefix = 'out-www/' - -headertext= r""" - -

LilyPond samples

- - -

You are looking at a page with some LilyPond samples. These files -are also included in the distribution. The output is completely -generated from the source file, without any further touch up. - -

- -The pictures are 90 dpi anti-aliased snapshots of the printed output. -For a good impression of the quality print out the PDF file. -""" - -headertext_nopics= r""" -

No examples were found in this directory. -""" - -# -# FIXME breaks on multiple strings. -# -def read_lilypond_header (fn): - s = open (fn).read () - s = re.sub ('%.*$', '', s) - s = re.sub ('\n', ' ', s) - - dict = {} - m = re.search (r"""\\header\s*{([^}]*)}""", s) - - if m: - s = m.group (1) - else: - return dict - - while s: - m = re.search (r'''\s*(\S+)\s*=\s*"([^"]+)"''', s) - if m == None: - s = '' - else: - s = s[m.end (0):] - left = m.group (1) - right = m.group (2) - - left = re.sub ('"', '', left) - right = re.sub ('"', '', right) - dict[left] = right - - return dict - -def help (): - sys.stdout.write (r'''Usage: mutopia-index [OPTIONS] INFILE OUTFILE -Generate index for mutopia. - -Options: - -h, --help print this help - -o, --output=FILE write output to file - -s, --subdirs=DIR add subdir - --suffix=SUF specify suffix - -''') - sys.exit (0) - -# ugh. -def gen_list (inputs, file_name): - sys.stderr.write ("generating HTML list %s" % file_name) - sys.stderr.write ('\n') - if file_name: - list = open (file_name, 'w') - else: - list = sys.stdout - list.write ('''Rendered Examples - - -''') - - list.write ('\n') - - if inputs: - list.write (headertext) - else: - list.write (headertext_nopics) - - for ex in inputs: - print ex - - (base, ext) = os.path.splitext (ex) - (base, ext2) = os.path.splitext (base) - ext = ext2 + ext - - header = read_lilypond_header (ex) - head = header.get ('title', os.path.basename (base)) - composer = header.get ('composer', '') - desc = header.get ('description', '') - list.write ('


\n') - list.write ('

%s

\n' % head); - if composer: - list.write ('

%s

\n' % composer) - if desc: - list.write ('%s

' % desc) - list.write ('

    \n') - - def list_item (file_name, desc, type, lst = list): - if os.path.isfile (file_name): - lst.write ('
  • %s' - % (re.sub (junk_prefix, '', file_name), desc)) - - # FIXME: include warning if it uses \include - # files. - - size = os.stat (file_name)[stat.ST_SIZE] - kB = (size + 512) / 1024 - if kB: - lst.write (' (%s %d kB)' % (type, kB)) - else: - lst.write (' (%s %d characters)' - % (type, size)) - pictures = ['jpeg', 'png', 'xpm'] - lst.write ('\n') - else: - print "cannot find" , `file_name` - - list_item (base + ext, 'The input', 'ASCII') - - pages_found = 0 - for page in range (1, 100): - f = base + '-page%d.png' % page - - if not os.path.isfile (f): - break - pages_found += 1 - list_item (f, 'See a picture of page %d' % page, 'png') - - if pages_found == 0 and os.path.exists (base + '.png'): - list_item (base + ".png", - 'See a picture', 'png') - - - list_item (base + '.pdf', 'Print', 'PDF') - list_item (base + '.midi', 'Listen', 'MIDI') - list.write ('
\n'); - - list.write ('\n'); - list.close () - -(options, files) = getopt.getopt (sys.argv[1:], - 'ho:', ['help', 'output=']) -outfile = 'examples.html' - -subdirs = [] -for (o, a) in options: - if o == '--help' or o == '-h': - help () - elif o == '--output' or o == '-o': - outfile = a - -dirs = [] -for f in files: - dirs += find ('out-www', f) - -if not dirs: - dirs = ['.'] - -allfiles = [] - -for d in dirs: - allfiles += find ('*.ly', d) - -allfiles = [f for f in allfiles - if not f.endswith ('snippet-map.ly') - and not re.search ('lily-[0-9a-f]+', f) - and 'musicxml' not in f] - -gen_list (allfiles, outfile) diff --git a/scripts/build/output-distance.py b/scripts/build/output-distance.py old mode 100644 new mode 100755 index c08ea147b8..734b366f6b --- a/scripts/build/output-distance.py +++ b/scripts/build/output-distance.py @@ -3,6 +3,9 @@ import sys import optparse import os import math +import re + +import cgi ## so we can call directly as scripts/build/output-distance.py me_path = os.path.abspath (os.path.split (sys.argv[0])[0]) @@ -50,8 +53,7 @@ def system (c): raise Exception ("failed") return -def shorten_string (s): - threshold = 15 +def shorten_string (s, threshold = 15): if len (s) > 2*threshold: s = s[:threshold] + '..' + s[-threshold:] return s @@ -313,12 +315,17 @@ class SystemLink: self.orphan_count (), self.geometric_distance ()) +def scheme_float (s) : + if 'nan' not in s : + return float(s) + return float(s.split('.')[0]) + def read_signature_file (name): print 'reading', name entries = open (name).read ().split ('\n') def string_to_tup (s): - return tuple (map (float, s.split (' '))) + return tuple (map (scheme_float, s.split (' '))) def string_to_entry (s): fields = s.split('@') @@ -369,12 +376,18 @@ class FileLink: return '' + def directories (self): + return map (os.path.dirname, self.file_names) + def name (self): base = os.path.basename (self.file_names[1]) base = os.path.splitext (base)[0] base = hash_to_original_name.get (base, base) base = os.path.splitext (base)[0] - return base + return os.path.join (self.prefix (), base) + + def prefix (self): + return os.path.dirname (os.path.commonprefix (self.file_names)) def extension (self): return os.path.splitext (self.file_names[1])[1] @@ -451,7 +464,7 @@ class GitFileCompareLink (FileCompareLink): str = '\n'.join ([l[:80] for l in str.split ('\n')]) - str = '
%s
' % str + str = '
%s
' % cgi.escape (str) return str def calc_distance (self): @@ -463,11 +476,22 @@ class GitFileCompareLink (FileCompareLink): return d +snippet_fn_re = re.compile (r"`\./([0-9a-f]{2}/lily-[0-9a-f]{8}).eps'"); class TextFileCompareLink (FileCompareLink): def calc_distance (self): import difflib - diff = difflib.unified_diff (self.contents[0].strip().split ('\n'), - self.contents[1].strip().split ('\n'), + # Extract the old and the new hashed snippet names from the log file + # and replace the old by the new, so file name changes don't show + # up as log differences... + cont0 = self.contents[0].strip(); + cont1 = self.contents[1].strip(); + m0 = re.search (snippet_fn_re, cont0); + m1 = re.search (snippet_fn_re, cont1); + if (m0 and m1 and (m0.group(1) != m1.group(1))): + cont0 = cont0.replace (m0.group(1), m1.group(1)); + + diff = difflib.unified_diff (cont0.split ('\n'), + cont1.split ('\n'), fromfiledate = self.file_names[0], tofiledate = self.file_names[1] ) @@ -481,7 +505,7 @@ class TextFileCompareLink (FileCompareLink): str = '' if oldnew == 1: str = '\n'.join ([d.replace ('\n','') for d in self.diff_lines]) - str = '
%s
' % str + str = '
%s
' % cgi.escape (str) return str class LogFileCompareLink (TextFileCompareLink): @@ -504,7 +528,7 @@ class ProfileFileLink (FileCompareLink): str += '%-8s: %8d (%5.3f)\n' % (k, int (self.results[oldnew][k]), self.get_ratio (k)) - return '
%s
' % str + return '
%s
' % cgi.escape (str) def get_ratio (self, key): (v1,v2) = (self.results[0].get (key, -1), @@ -749,7 +773,6 @@ class SignatureFileLink (FileLink): # Files/directories import glob -import re def compare_signature_files (f1, f2): s1 = read_signature_file (f1) @@ -804,13 +827,25 @@ class ComparisonData: re.sub (r'\\sourcefilename "([^"]+)"', note_original, open (sf).read ()) else: - print 'no source for', val + print 'no source for', val.file_names[1] def compare_trees (self, dir1, dir2): self.compare_directories (dir1, dir2) - (root, dirs, files) = os.walk (dir1).next () + try: + (root, dirs, files) = os.walk (dir1).next () + except StopIteration: + if dir1.endswith("-baseline"): + sys.stderr.write("Failed to walk through %s. This can be caused by forgetting to run make test-baseline.\n" % dir1) + else: + sys.stderr.write("Failed to walk through %s; please check it exists.\n" % dir1) + sys.exit(1) + for d in dirs: + # don't walk the share folders + if d.startswith("share"): + continue + d1 = os.path.join (dir1, d) d2 = os.path.join (dir2, d) @@ -856,14 +891,18 @@ class ComparisonData: self.compare_general_files (klasses[ext], f1, f2) def compare_general_files (self, klass, f1, f2): + prefix = os.path.commonprefix ([f1, f2]) name = os.path.split (f1)[1] + name = os.path.join (prefix, name) file_link = klass (f1, f2) self.file_links[name] = file_link def compare_signature_files (self, f1, f2): + prefix = os.path.commonprefix ([f1, f2]) name = os.path.split (f1)[1] name = re.sub ('-[0-9]+.signature', '', name) + name = os.path.join (prefix, name) file_link = None try: @@ -916,42 +955,81 @@ class ComparisonData: out.write ('%d below threshold\n' % len (below)) out.write ('%d unchanged\n' % len (unchanged)) - def create_text_result_page (self, dir1, dir2, dest_dir, threshold): + def create_text_result_page (self, dest_dir, threshold): self.write_text_result_page (dest_dir + '/index.txt', threshold) - def create_html_result_page (self, dir1, dir2, dest_dir, threshold): - dir1 = dir1.replace ('//', '/') - dir2 = dir2.replace ('//', '/') - + def create_html_result_page (self, dest_dir, threshold): (changed, below, unchanged) = self.thresholded_results (threshold) - - html = '' - old_prefix = os.path.split (dir1)[1] - for link in changed: - html += link.html_record_string (dest_dir) - - - short_dir1 = shorten_string (dir1) - short_dir2 = shorten_string (dir2) - html = ''' - + header_row = ''' -%(html)s -
distance %(short_dir1)s %(short_dir2)s
-''' % locals() +''' - html += ('

') + table_rows = '' + old_prefix = None + for link in changed: + this_prefix = link.prefix () + if (old_prefix != this_prefix): + old_prefix = this_prefix + short_dir1 = shorten_string (link.directories ()[0], 30) + short_dir2 = shorten_string (link.directories ()[1], 30) + table_rows += header_row % locals() + table_rows += link.html_record_string (dest_dir) + + summary = '' below_count = len (below) if below_count: - html += ('

%d below threshold

' % below_count) + summary += '

%d below threshold

' % below_count + + summary += '

%d unchanged

' % len (unchanged) + + html = ''' + +LilyPond regression test results + + + +

+ click to filter rows by type: + ly / + profiling / + signature / + midi / + log / + gittxt / + reset to all +

+ +
+ +%(summary)s + +
- html += ('

%d unchanged

' % len (unchanged)) + +%(table_rows)s +
+ +''' % locals() dest_file = dest_dir + '/index.html' open_write_file (dest_file).write (html) @@ -976,8 +1054,8 @@ def compare_tree_pairs (tree_pairs, dest_dir, threshold): system ('rm -rf %s '% dest_dir) data.write_changed (dest_dir, threshold) - data.create_html_result_page (dir1, dir2, dest_dir, threshold) - data.create_text_result_page (dir1, dir2, dest_dir, threshold) + data.create_html_result_page (dest_dir, threshold) + data.create_text_result_page (dest_dir, threshold) ################################################################ # TESTING @@ -1246,7 +1324,7 @@ def main (): run_tests () sys.exit (0) - if len (args) % 2: + if len (args) % 2 == 1: p.print_usage () sys.exit (2) diff --git a/scripts/build/pytt.py b/scripts/build/pytt.py index a6e3693b53..72e5825f04 100755 --- a/scripts/build/pytt.py +++ b/scripts/build/pytt.py @@ -1,7 +1,7 @@ #! /usr/bin/python ''' - Copyright (C) 2008--2011 Jan Nieuwenhuizen + Copyright (C) 2008--2012 Jan Nieuwenhuizen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/scripts/build/run-and-check.sh b/scripts/build/run-and-check.sh new file mode 100755 index 0000000000..eb76aa7b40 --- /dev/null +++ b/scripts/build/run-and-check.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# The nextline takes the value in parameter one, evaluates it +# (necessary if it contains spaces) and runs it. > redirects +# stdout to the logfile given in parameter 2. 2>&1 redirects +# stderr to stdout (i.e. to the logfile). +eval $1 > $2 2>&1 +RetVal=$? # captures the return value of the command +if [ $RetVal -ne 0 ]; then + echo + echo "Please check the logfile" $2 "for errors" + echo +fi +exit $RetVal diff --git a/scripts/build/website-known-missing-files.txt b/scripts/build/website-known-missing-files.txt index 4f4cd85bb0..941aa8cd11 100644 --- a/scripts/build/website-known-missing-files.txt +++ b/scripts/build/website-known-missing-files.txt @@ -2,6 +2,7 @@ ancient-notation.itely chords.itely colorado.itexi computer-notation.itexi +context-mod-identifiers.tely context-properties.tely contexts-and-engravers.itely editorial-annotations.itely diff --git a/scripts/build/website_post.py b/scripts/build/website_post.py index 551da4657e..93e3c8d50d 100644 --- a/scripts/build/website_post.py +++ b/scripts/build/website_post.py @@ -45,11 +45,11 @@ translations = { }, 'zh': { 'English': '中文', - 'Other languages': '其它语言', + 'Other languages': '其他语言', }, } -# needs at least: make -C po or make- C Documentation/po +# needs at least: make -C po or make -C Documentation/po HAVE_GETTEXT = False #### this breaks on lilypond.org @@ -111,10 +111,10 @@ def addLangExt(filename, lang, ext): return text def makeFooter (filename, currentLang): - # TODO: add link to automatic language selection? - # still need to include this page in the new webpages somewhere footer = '''

%(other)s: %(lst)s. +
+%(browser_language)s

''' def link (lang): @@ -124,6 +124,9 @@ def makeFooter (filename, currentLang): return str % locals () lst = ', '.join ([link (lang) for lang in langs if lang != currentLang]) other = _ ('Other languages', currentLang) + browser_lang = _ ('About automatic language selection.', currentLang) + browser_language_url = "http://www.lilypond.org/website/misc/browser-language" + browser_language = browser_lang % browser_language_url return footer % locals () def getLocalHref(line): @@ -153,7 +156,7 @@ for file in html_files: lang = '' # possibly necessary for automatic language selection file_symlink = file.replace(".html", ".en.html") - if (not (os.path.exists(file_symlink))): + if not os.path.lexists (file_symlink): os.symlink (file, file_symlink) elif (len(file_split) == 3): # it's a translation @@ -181,10 +184,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("") >= 0): @@ -200,10 +203,10 @@ urchinTracker(); #### add google tracker goals if (line.find("href=\"http://download.linuxaudio.org") >= 0): # TODO: more ugly hardcoding to make releases hard. :( - if (line.find('2.12') >= 0): - line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.12\');\" href=') - elif (line.find('2.13') >= 0): - line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.13\');\" href=') + if (line.find('2.14') >= 0): + line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.14\');\" href=') + elif (line.find('2.15') >= 0): + line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.15\');\" href=') ### add language selection footer if (line.find("
") >= 0): outfile.write("
\n") diff --git a/scripts/build/www_post.py b/scripts/build/www_post.py index 17af63109e..c62e02145a 100644 --- a/scripts/build/www_post.py +++ b/scripts/build/www_post.py @@ -43,13 +43,27 @@ dirs, symlinks, files = mirrortree.walk_tree ( '|'.join ([l.code for l in langdefs.LANGUAGES]) + '))(/|$)', find_files = r'.*?\.(?:midi|html|pdf|png|jpe?g|txt|i?ly|signature|css|zip|js|..\.idx|php)$|VERSION', exclude_files = r'lily-[0-9a-f]+.*\.(pdf|txt)') +# extra files: info and tex output from lilypond-book regtests +extra_files = mirrortree.walk_tree ( + tree_roots = ['input/regression/lilypond-book'], + process_dirs = outdir, + exclude_dirs = r'(^|/)(out|out-test)(/|$)', + find_files = r'.+\.(info|tex)$', + exclude_files = r'lily-[0-9a-f]+.*\.tex')[2] +files.extend(extra_files) # actual mirrorring stuff html_files = [] hardlinked_files = [] +# These whitelisted files actually do contain the string +# 'UNTRANSLATED NODE: IGNORE ME' for documentation purposes. +whitelisted_files = [ + 'Documentation/out-www/contributor-big-page.html', + 'Documentation/out-www/contributor/website-build.html', +] for f in files: if f.endswith ('.html'): - if not 'UNTRANSLATED NODE: IGNORE ME' in open (f).read (): + if f in whitelisted_files or not 'UNTRANSLATED NODE: IGNORE ME' in open (f).read (): html_files.append (f) else: hardlinked_files.append (f) @@ -64,14 +78,19 @@ strip_re = re.compile (outdir + '/') for t in targets: out_root = target_pattern % t strip_file_name[t] = lambda s: os.path.join (target_pattern % t, (strip_re.sub ('', s))) - os.mkdir (out_root) - map (os.mkdir, [os.path.join (out_root, d) for d in dirs]) + if not os.path.exists (out_root): + os.mkdir (out_root) + for d in dirs: + new_dir = os.path.join (out_root, d) + if not os.path.exists (new_dir): + os.mkdir (new_dir) for f in hardlinked_files: - os.link (f, strip_file_name[t] (f)) + if not os.path.isfile (strip_file_name[t] (f)): + os.link (f, strip_file_name[t] (f)) for l in symlinks: p = mirrortree.new_link_path (os.path.normpath (os.readlink (l)), os.path.dirname (l), strip_re) dest = strip_file_name[t] (l) - if not os.path.exists (dest): + if not os.path.lexists (dest): os.symlink (p, dest) diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py index c0c7ee3e35..2772acc738 100644 --- a/scripts/convert-ly.py +++ b/scripts/convert-ly.py @@ -5,7 +5,7 @@ # This file is part of LilyPond, the GNU music typesetter. # -# Copyright (C) 1998--2011 Han-Wen Nienhuys +# Copyright (C) 1998--2012 Han-Wen Nienhuys # Jan Nieuwenhuizen # # LilyPond is free software: you can redistribute it and/or modify @@ -39,6 +39,8 @@ import convertrules lilypond_version_re_str = '\\\\version *\"([0-9.]+)"' lilypond_version_re = re.compile (lilypond_version_re_str) +lilypond_version_strict_re_str = '\\\\version *\"([0-9]+[.][0-9]+[.][0-9]+)"' +lilypond_version_strict_re = re.compile (lilypond_version_strict_re_str) help_summary = ( _ ('''Update LilyPond input to newer version. By default, update from the @@ -58,16 +60,8 @@ program_version = '@TOPLEVEL_VERSION@' authors = ('Jan Nieuwenhuizen ', 'Han-Wen Nienhuys ') -error_file_write = ly.stderr_write - -def warning (s): - ly.stderr_write (program_name + ": " + _ ("warning: %s") % s + '\n') - -def error (s): - ly.stderr_write (program_name + ": " + _ ("error: %s") % s + '\n') - -def identify (port=sys.stderr): - ly.encoded_write (port, '%s (GNU LilyPond) %s\n' % (program_name, program_version)) +def identify (): + ly.progress ('%s (GNU LilyPond) %s\n' % (program_name, program_version)) def warranty (): identify () @@ -78,7 +72,7 @@ def warranty (): %s %s -''' % ( _ ('Copyright (c) %s by') % '2001--2011', +''' % ( _ ('Copyright (c) %s by') % '2001--2012', ' '.join (authors), _ ('Distributed under terms of the GNU General Public License.'), _ ('It comes with NO WARRANTY.'))) @@ -107,6 +101,14 @@ def get_option_parser (): p.add_option ('-e', '--edit', help=_ ("edit in place"), action='store_true') + p.add_option ("-l", "--loglevel", + help=_ ("Print log messages according to LOGLEVEL " + "(NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"), + metavar=_ ("LOGLEVEL"), + action='callback', + callback=ly.handle_loglevel_option, + type='string') + p.add_option ('-n', '--no-version', help=_ ("do not add \\version command if missing"), action='store_true', @@ -181,32 +183,37 @@ tuple (LAST,STR), with the last successful conversion and the resulting string.""" conv_list = get_conversions (from_version, to_version) - error_file_write (_ ("Applying conversion: ")) - + ly.progress (_ ("Applying conversion: "), newline = False) + last_conversion = () try: + if not conv_list: + last_conversion = to_version for x in conv_list: - error_file_write (tup_to_str (x[0])) if x != conv_list[-1]: - error_file_write (', ') + ly.progress (tup_to_str (x[0]), newline = False) + ly.progress (', ', newline = False) + else: + ly.progress (tup_to_str (x[0])) str = x[1] (str) last_conversion = x[0] except convertrules.FatalConversionError: - error_file_write ('\n' - + _ ("Error while converting") - + '\n' - + _ ("Stopping at last successful rule") - + '\n') + ly.error (_ ("Error while converting") + + '\n' + + _ ("Stopping at last successful rule")) return (last_conversion, str) def guess_lilypond_version (input): - m = lilypond_version_re.search (input) + m = lilypond_version_strict_re.search (input) if m: return m.group (1) + m = lilypond_version_re.search (input) + if m: + raise InvalidVersion (m.group (1)) else: return '' @@ -221,8 +228,7 @@ class InvalidVersion (Exception): self.version = version def do_one_file (infile_name): - ly.stderr_write (_ ("Processing `%s\'... ") % infile_name) - sys.stderr.write ('\n') + ly.progress (_ ("Processing `%s\'... ") % infile_name, True) if infile_name: infile = open (infile_name, 'r') @@ -274,8 +280,8 @@ def do_one_file (infile_name): '\\' + newversion, result) elif not global_options.skip_version_add: result = newversion + '\n' + result - - error_file_write ('\n') + + ly.progress ('\n') if global_options.edit: try: @@ -323,28 +329,27 @@ def main (): show_rules (sys.stdout, global_options.from_version, global_options.to_version) sys.exit (0) - identify (sys.stderr) + identify () for f in files: if f == '-': f = '' elif not os.path.isfile (f): - error (_ ("%s: Unable to open file") % f) + ly.error (_ ("%s: Unable to open file") % f) if len (files) == 1: sys.exit (1) continue try: do_one_file (f) except UnknownVersion: - error (_ ("%s: Unable to determine version. Skipping") % f) + ly.error (_ ("%s: Unable to determine version. Skipping") % f) except InvalidVersion: # Compat code for 2.x and 3.0 syntax ("except .. as v" doesn't # work in python 2.4!): t, v, b = sys.exc_info () - error (_ ("%s: Invalid version string `%s' \n" - "Valid version strings consist of three numbers, " - "separated by dots, e.g. `2.8.12'") % (f, v.version) ) + ly.error (_ ("%s: Invalid version string `%s' \n" + "Valid version strings consist of three numbers, " + "separated by dots, e.g. `2.8.12'") % (f, v.version) ) - sys.stderr.write ('\n') main () diff --git a/scripts/etf2ly.py b/scripts/etf2ly.py index 009b49ae95..0e7fb9c83e 100644 --- a/scripts/etf2ly.py +++ b/scripts/etf2ly.py @@ -1131,11 +1131,13 @@ class Etf_file: while c and c.number <> endno: - thread.append (c) + d = c # hack to avoid problem with build/scripts/grand-replace.py + thread.append (d) c = c.next if c: - thread.append (c) + d = c # hack to avoid problem with build/scripts/grand-replace.py + thread.append (d) return thread @@ -1186,7 +1188,7 @@ def warranty (): %s %s -''' % ( _ ('Copyright (c) %s by') % '2001--2011', +''' % ( _ ('Copyright (c) %s by') % '2001--2012', '\n '.join (authors), _ ('Distributed under terms of the GNU General Public License.'), _ ('It comes with NO WARRANTY.'))) diff --git a/scripts/lilymidi.py b/scripts/lilymidi.py index 73809a4d4d..40047207ad 100644 --- a/scripts/lilymidi.py +++ b/scripts/lilymidi.py @@ -1,6 +1,6 @@ #!@TARGET_PYTHON@ -# Copyright (C) 2006--2011 Brailcom, o.p.s. +# Copyright (C) 2006--2012 Brailcom, o.p.s. # # Author: Milan Zamazal # @@ -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) diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 9617f3666d..1e0f7abf66 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -91,18 +91,17 @@ authors = ('Jan Nieuwenhuizen ', ################################################################ def exit (i): - if global_options.verbose: + if ly.is_verbose (): raise Exception (_ ('Exiting (%d)...') % i) else: sys.exit (i) -def identify (): - ly.encoded_write (sys.stdout, '%s (GNU LilyPond) %s\n' % (ly.program_name, ly.program_version)) - progress = ly.progress warning = ly.warning error = ly.error +def identify (): + progress('%s (GNU LilyPond) %s' % (ly.program_name, ly.program_version)) def warranty (): identify () @@ -113,11 +112,12 @@ def warranty (): %s %s -''' % ( _ ('Copyright (c) %s by') % '2001--2011', +''' % ( _ ('Copyright (c) %s by') % '2001--2012', '\n '.join (authors), _ ("Distributed under terms of the GNU General Public License."), _ ("It comes with NO WARRANTY."))) + def get_option_parser (): p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'lilypond-book', description=help_summary, @@ -142,7 +142,7 @@ def get_option_parser (): p.add_option ("-I", '--include', help=_ ("add DIR to include path"), metavar=_ ("DIR"), action='append', dest='include_path', - default=[os.path.abspath (os.getcwd ())]) + default=[]) p.add_option ('--info-images-dir', help=_ ("format Texinfo output so that Info will " @@ -158,6 +158,12 @@ def get_option_parser (): type="float", default=3.0) + p.add_option ('--lily-loglevel', + help=_ ("Print lilypond log messages according to LOGLEVEL"), + metavar=_ ("LOGLEVEL"), + action='store', dest='lily_loglevel', + default=os.environ.get ("LILYPOND_LOGLEVEL", None)) + p.add_option ('--lily-output-dir', help=_ ("write lily-XXX files to DIR, link into --output dir"), metavar=_ ("DIR"), @@ -169,6 +175,14 @@ def get_option_parser (): action='append', dest='custom_packages', default=[]) + p.add_option ("-l", "--loglevel", + help=_ ("Print log messages according to LOGLEVEL " + "(NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"), + metavar=_ ("LOGLEVEL"), + action='callback', + callback=ly.handle_loglevel_option, + type='string') + p.add_option ("-o", '--output', help=_ ("write output to DIR"), metavar=_ ("DIR"), action='store', dest='output_dir', @@ -179,6 +193,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, @@ -202,9 +221,9 @@ def get_option_parser (): default=False) p.add_option ('-V', '--verbose', help=_ ("be verbose"), - action="store_true", - default=False, - dest="verbose") + action="callback", + callback=ly.handle_loglevel_option, + callback_args=("DEBUG",)) p.version = "@TOPLEVEL_VERSION@" p.add_option("--version", @@ -222,6 +241,11 @@ case --pdf option is set instead of pdflatex"), metavar=_ ("PROG"), action='store', dest='latex_program', default='latex') + group.add_option ('--texinfo-program', + help=_ ("run executable PROG instead of texi2pdf"), + metavar=_ ("PROG"), + action='store', dest='texinfo_program', + default='texi2pdf') group.add_option ('--pdf', action="store_true", dest="create_pdf", @@ -347,7 +371,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,8 +379,19 @@ def system_in_directory (cmd, directory): current = os.getcwd() os.chdir (directory) - ly.system(cmd, be_verbose=global_options.verbose, - progress_p=1) + """NB - ignore_error is deliberately set to the same value + as redirect_output - this is not a typo.""" + retval = ly.system(cmd, + be_verbose=ly.is_verbose (), + redirect_output=global_options.redirect_output, + log_file=logfile, + progress_p=1, + ignore_error=global_options.redirect_output) + if retval != 0: + print ("Error trapped by lilypond-book") + print ("\nPlease see " + logfile + ".log\n") + sys.exit(1) + os.chdir (current) @@ -374,11 +409,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])) @@ -393,7 +429,7 @@ def write_file_map (lys, name): #(define output-empty-score-list #f) #(ly:add-file-name-alist '(%s ))\n -""" % '\n'.join(['("%s.ly" . "%s")\n' % (ly.basename (), name) +""" % '\n'.join(['("%s.ly" . "%s")\n' % (ly.basename ().replace('\\','/'), name) for ly in lys])) def split_output_files(directory): @@ -419,25 +455,24 @@ def do_process_cmd (chunks, input_name, options): progress (_ ("Writing snippets...")) for snippet in outdated: snippet.write_ly() - progress ('\n') if outdated: progress (_ ("Processing...")) - progress ('\n') process_snippets (options.process_cmd, outdated, options.formatter, options.lily_output_dir) else: progress (_ ("All snippets are up to date...")) - if options.lily_output_dir != options.output_dir: - output_files = split_output_files (options.lily_output_dir) + progress (_ ("Linking files...")) + abs_lily_output_dir = os.path.join (options.original_dir, options.lily_output_dir) + abs_output_dir = os.path.join (options.original_dir, options.output_dir) + if abs_lily_output_dir != abs_output_dir: + output_files = split_output_files (abs_lily_output_dir) for snippet in snippets: - snippet.link_all_output_files (options.lily_output_dir, + snippet.link_all_output_files (abs_lily_output_dir, output_files, - options.output_dir) - - progress ('\n') + abs_output_dir) ### @@ -459,7 +494,6 @@ def write_if_updated (file_name, lines): new_str = ''.join (lines) if oldstr == new_str: progress (_ ("%s is up to date.") % file_name) - progress ('\n') # this prevents make from always rerunning lilypond-book: # output file must be touched in order to be up to date @@ -474,7 +508,6 @@ def write_if_updated (file_name, lines): progress (_ ("Writing `%s'...") % file_name) file (file_name, 'w').writelines (lines) - progress ('\n') def note_input_file (name, inputs=[]): @@ -540,7 +573,6 @@ def do_file (input_filename, included=False): try: progress (_ ("Reading %s...") % input_fullname) source = in_handle.read () - progress ('\n') if not included: global_options.formatter.init_default_snippet_options (source) @@ -551,7 +583,6 @@ def do_file (input_filename, included=False): # Let the formatter modify the chunks before further processing chunks = global_options.formatter.process_chunks (chunks) - progress ('\n') if global_options.filter_cmd: write_if_updated (output_filename, @@ -559,7 +590,6 @@ def do_file (input_filename, included=False): elif global_options.process_cmd: do_process_cmd (chunks, input_fullname, global_options) progress (_ ("Compiling %s...") % output_filename) - progress ('\n') write_if_updated (output_filename, [s.replacement_text () for s in chunks]) @@ -568,7 +598,6 @@ def do_file (input_filename, included=False): os.chdir (original_dir) name = snippet.substring ('filename') progress (_ ("Processing include: %s") % name) - progress ('\n') return do_file (name, included=True) include_chunks = map (process_include, @@ -580,9 +609,24 @@ def do_file (input_filename, included=False): except BookSnippet.CompileError: os.chdir (original_dir) progress (_ ("Removing `%s'") % output_filename) - progress ('\n') raise BookSnippet.CompileError +def inverse_relpath (path, relpath): + """Given two paths, the second relative to the first, + return the first path relative to the second.""" + if os.path.isabs (relpath): + return os.path.abspath (path) + relparts = [] + parts = os.path.normpath (path).split (os.path.sep) + for part in os.path.normpath (relpath).split (os.path.sep): + if part == '..': + relparts.append (parts[-1]) + parts.pop () + else: + relparts.append ('..') + parts.append (part) + return os.path.sep.join (relparts[::-1]) + def do_options (): global global_options @@ -590,8 +634,17 @@ def do_options (): (global_options, args) = opt_parser.parse_args () global_options.information = {'program_version': ly.program_version, 'program_name': ly.program_name } + global_options.original_dir = original_dir + + if global_options.lily_output_dir: + global_options.lily_output_dir = os.path.expanduser (global_options.lily_output_dir) + global_options.include_path.insert (0, inverse_relpath (original_dir, global_options.lily_output_dir)) - global_options.include_path = map (os.path.abspath, global_options.include_path) + if global_options.output_dir: + global_options.output_dir = os.path.expanduser (global_options.output_dir) + global_options.include_path.insert (0, inverse_relpath (original_dir, global_options.output_dir)) + + global_options.include_path.insert (0, ".") # Load the python packages (containing e.g. custom formatter classes) # passed on the command line @@ -612,6 +665,8 @@ def do_options (): def main (): # FIXME: 85 lines of `main' macramee?? + if (os.environ.has_key ("LILYPOND_BOOK_LOGLEVEL")): + ly.set_loglevel (os.environ["LILYPOND_BOOK_LOGLEVEL"]) files = do_options () basename = os.path.splitext (files[0])[0] @@ -639,14 +694,22 @@ def main (): if global_options.lily_output_dir: # This must be first, so lilypond prefers to read .ly # files in the other lybookdb dir. - includes = [os.path.abspath(global_options.lily_output_dir)] + includes + includes = [global_options.lily_output_dir] + includes global_options.process_cmd += ' '.join ([' -I %s' % ly.mkarg (p) for p in includes]) global_options.formatter.process_options (global_options) - if global_options.verbose: - global_options.process_cmd += " --verbose " + if global_options.lily_loglevel: + ly.debug_output (_ ("Setting LilyPond's loglevel to %s") % global_options.lily_loglevel, True) + global_options.process_cmd += " --loglevel=%s" % global_options.lily_loglevel + elif ly.is_verbose (): + if os.environ.get ("LILYPOND_LOGLEVEL", None): + ly.debug_output (_ ("Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)") % os.environ.get ("LILYPOND_LOGLEVEL", None), True) + global_options.process_cmd += " --loglevel=%s" % os.environ.get ("LILYPOND_LOGLEVEL", None) + else: + ly.debug_output (_ ("Setting LilyPond's output to --verbose, implied by lilypond-book's setting"), True) + global_options.process_cmd += " --verbose" if global_options.padding_mm: global_options.process_cmd += " -deps-box-padding=%f " % global_options.padding_mm @@ -660,6 +723,7 @@ def main (): else: global_options.lily_output_dir = os.path.abspath(global_options.output_dir) + relative_output_dir = global_options.output_dir identify () try: @@ -672,12 +736,11 @@ def main (): base_file_name = os.path.splitext (os.path.basename (files[0]))[0] dep_file = os.path.join (global_options.output_dir, base_file_name + '.dep') - final_output_file = os.path.join (global_options.output_dir, - base_file_name - + '.%s' % global_options.format) + final_output_file = os.path.join (relative_output_dir, + base_file_name + global_options.formatter.default_extension) os.chdir (original_dir) - file (dep_file, 'w').write ('%s: %s' + file (dep_file, 'w').write ('%s: %s\n' % (final_output_file, ' '.join (inputs))) if __name__ == '__main__': diff --git a/scripts/lilypond-invoke-editor.scm b/scripts/lilypond-invoke-editor.scm index 230b1761d4..fe1227cc1b 100644 --- a/scripts/lilypond-invoke-editor.scm +++ b/scripts/lilypond-invoke-editor.scm @@ -2,7 +2,7 @@ !# ;;;; lilypond-invoke-editor.scm -- Invoke an editor in file:line:column mode -;;;; Copyright (C) 2005--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; @@ -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)))) diff --git a/scripts/lilysong.py b/scripts/lilysong.py index 7735d558b7..70e2df2a9b 100644 --- a/scripts/lilysong.py +++ b/scripts/lilysong.py @@ -1,6 +1,6 @@ #!@TARGET_PYTHON@ -# Copyright (c) 2006--2011 Brailcom, o.p.s. +# Copyright (c) 2006--2012 Brailcom, o.p.s. # # Author: Milan Zamazal # diff --git a/scripts/midi2ly.py b/scripts/midi2ly.py index 1923d3b880..bf9f09f26e 100644 --- a/scripts/midi2ly.py +++ b/scripts/midi2ly.py @@ -4,7 +4,7 @@ # This file is part of LilyPond, the GNU music typesetter. # -# Copyright (C) 1998--2011 Han-Wen Nienhuys +# Copyright (C) 1998--2012 Han-Wen Nienhuys # Jan Nieuwenhuizen # # LilyPond is free software: you can redistribute it and/or modify @@ -78,7 +78,7 @@ def warranty (): %s %s -''' % ( _ ('Copyright (c) %s by') % '1998--2011', +''' % ( _ ('Copyright (c) %s by') % '1998--2012', '\n '.join (authors), _ ('Distributed under terms of the GNU General Public License.'), _ ('It comes with NO WARRANTY.'))) @@ -831,7 +831,8 @@ def dump_track (track, n): if vl: s += ' \\voice' + vl + '\n' else: - warning (_ ('found more than 5 voices on a staff, expect bad output')) + if not global_options.quiet: + warning (_ ('found more than 5 voices on a staff, expect bad output')) s += ' ' + dump_voice (voice, skip) s += '}\n\n' v += 1 @@ -975,7 +976,7 @@ def convert_midi (in_file, out_file): s = tag s += r''' -\version "2.13.53" +\version "2.14.0" ''' s += r''' @@ -1027,7 +1028,8 @@ def convert_midi (in_file, out_file): } ''' - progress (_ ("%s output to `%s'...") % ('LY', out_file)) + if not global_options.quiet: + progress (_ ("%s output to `%s'...") % ('LY', out_file)) if out_file == '-': handle = sys.stdout @@ -1050,27 +1052,30 @@ def get_option_parser (): metavar=_ ('DUR'), help=_ ('quantise note durations on DUR')) p.add_option ('-D', '--debug', - action='store_true', - help=_ ('debug printing')) + action='store_true', + help=_ ('debug printing')) p.add_option ('-e', '--explicit-durations', action='store_true', help=_ ('print explicit durations')) p.add_option('-h', '--help', - action='help', - help=_ ('show this help and exit')) + action='help', + help=_ ('show this help and exit')) p.add_option('-i', '--include-header', - help=_ ('prepend FILE to output'), - action='append', - default=[], - metavar=_ ('FILE')) + help=_ ('prepend FILE to output'), + action='append', + default=[], + metavar=_ ('FILE')) p.add_option('-k', '--key', help=_ ('set key: ALT=+sharps|-flats; MINOR=1'), - metavar=_ ('ALT[:MINOR]'), - default=None), + metavar=_ ('ALT[:MINOR]'), + default=None), p.add_option ('-o', '--output', help=_ ('write output to FILE'), metavar=_ ('FILE'), action='store') p.add_option ('-p', '--preview', help=_ ('preview of first 4 bars'), action='store_true') + p.add_option ('-q', '--quiet', + action="store_true", + help=_ ("suppress progress messages and warnings about excess voices")) p.add_option ('-s', '--start-quant',help= _ ('quantise note starts on DUR'), metavar=_ ('DUR')) p.add_option ('-S', '--skip', @@ -1083,15 +1088,13 @@ def get_option_parser (): help=_ ('allow tuplet durations DUR*NUM/DEN'), default=[]) p.add_option ('-V', '--verbose', help=_ ('be verbose'), - action='store_true' - ), + action='store_true') p.version = 'midi2ly (LilyPond) @TOPLEVEL_VERSION@' p.add_option ('--version', action='version', help=_ ('show version number and exit')) p.add_option ('-w', '--warranty', help=_ ('show warranty and copyright'), - action='store_true', - ), + action='store_true',) p.add_option ('-x', '--text-lyrics', help=_ ('treat every text as a lyric'), action='store_true') diff --git a/scripts/musicxml2ly.py b/scripts/musicxml2ly.py index 76d989f7a0..8738b2a073 100644 --- a/scripts/musicxml2ly.py +++ b/scripts/musicxml2ly.py @@ -7,6 +7,7 @@ import os import string import codecs import zipfile +import tempfile import StringIO """ @@ -21,7 +22,7 @@ import musicexp from rational import Rational -# Store command-line options in a global variable, so we can access them everythwere +# Store command-line options in a global variable, so we can access them everywhere options = None class Conversion_Settings: @@ -34,14 +35,6 @@ conversion_settings = Conversion_Settings () # this layout and add the corresponding settings layout_information = musicexp.Layout () -def progress (str): - ly.stderr_write (str + '\n') - sys.stderr.flush () - -def error_message (str): - ly.stderr_write (str + '\n') - sys.stderr.flush () - needed_additional_definitions = [] additional_definitions = { @@ -67,7 +60,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))) """, } @@ -172,16 +165,26 @@ def extract_score_information (tree): if value: header.set_field (field, musicxml.escape_ly_output_string (value)) - movement_title = tree.get_maybe_exist_named_child ('movement-title') - if movement_title: - set_if_exists ('title', movement_title.get_text ()) work = tree.get_maybe_exist_named_child ('work') if work: - # Overwrite the title from movement-title with work->title - set_if_exists ('title', work.get_work_title ()) set_if_exists ('worknumber', work.get_work_number ()) set_if_exists ('opus', work.get_opus ()) + movement_title = tree.get_maybe_exist_named_child ('movement-title') + + # use either work-title or movement-title as title. + # if both exist use movement-title as subtitle. + # if there is only a movement-title (or work-title is empty or missing) the movement-title should be typeset as a title + if work: + work_title = work.get_work_title () + set_if_exists ('title', work_title) + if work_title == '': + set_if_exists ('title', movement_title.get_text ()) + elif movement_title: + set_if_exists ('subtitle', movement_title.get_text ()) + elif movement_title: + set_if_exists ('title', movement_title.get_text ()) + identifications = tree.get_named_children ('identification') for ids in identifications: set_if_exists ('copyright', ids.get_rights ()) @@ -190,12 +193,14 @@ def extract_score_information (tree): set_if_exists ('editor', ids.get_editor ()) set_if_exists ('poet', ids.get_poet ()) - set_if_exists ('tagline', ids.get_encoding_software ()) set_if_exists ('encodingsoftware', ids.get_encoding_software ()) set_if_exists ('encodingdate', ids.get_encoding_date ()) set_if_exists ('encoder', ids.get_encoding_person ()) set_if_exists ('encodingdescription', ids.get_encoding_description ()) + set_if_exists ('source', ids.get_source ()) + + # miscellaneous --> texidoc set_if_exists ('texidoc', ids.get_file_description ()); # Finally, apply the required compatibility modes @@ -220,7 +225,10 @@ def extract_score_information (tree): app_description = ignore_beaming_software.get (s, False); if app_description: conversion_settings.ignore_beaming = True - progress (_ ("Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored") % app_description) + ly.warning (_ ("Encountered file created by %s, containing " + "wrong beaming information. All beaming " + "information in the MusicXML file will be " + "ignored") % app_description) # TODO: Check for other unsupported features return header @@ -236,9 +244,9 @@ class PartGroupInfo: def add_end (self, g): self.end[getattr (g, 'number', "1")] = g def print_ly (self, printer): - error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self) + ly.warning (_ ("Unprocessed PartGroupInfo %s encountered") % self) def ly_expression (self): - error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self) + ly.warning (_ ("Unprocessed PartGroupInfo %s encountered") % self) return '' def musicxml_step_to_lily (step): @@ -257,7 +265,7 @@ def staff_attributes_to_string_tunings (mxl_attr): if staff_lines: lines = string.atoi (staff_lines.get_text ()) - tunings = [musicexp.Pitch()]*lines + tunings = [musicexp.Pitch()] * lines staff_tunings = details.get_named_children ('staff-tuning') for i in staff_tunings: p = musicexp.Pitch() @@ -466,8 +474,6 @@ def extract_score_structure (part_list, staffinfo): group_starts.append (pos) pos += 1 - if len (staves) == 1: - return staves[0] for i in staves: structure.append_staff (i) return score @@ -511,9 +517,9 @@ def rational_to_lily_duration (rational_len): d.duration_log = d_log d.factor = Rational (rational_len.numerator ()) else: - error_message (_ ("Encountered rational duration with denominator %s, " + ly.warning (_ ("Encountered rational duration with denominator %s, " "unable to convert to lilypond duration") % - rational_len.denominator ()) + rational_len.denominator ()) # TODO: Test the above error message return None @@ -525,7 +531,7 @@ def musicxml_partial_to_lily (partial_len): p.partial = rational_to_lily_duration (partial_len) return p else: - return Null + return None # Detect repeats and alternative endings in the chord event list (music_list) # and convert them to the corresponding musicexp objects, containing nested @@ -609,15 +615,15 @@ def group_repeats (music_list): r.repeat_count = repeat_times # don't erase the first element for "implicit" repeats (i.e. no # starting repeat bars at the very beginning) - start = repeat_start+1 + start = repeat_start + 1 if repeat_start == music_start: start = music_start r.set_music (music_list[start:repeat_end]) for (start, end) in endings: s = musicexp.SequentialMusic () - s.elements = music_list[start+1:end] + s.elements = music_list[start + 1:end] r.add_ending (s) - del music_list[repeat_start:final_marker+1] + del music_list[repeat_start:final_marker + 1] music_list.insert (repeat_start, r) repeat_replaced = True pos += 1 @@ -629,11 +635,11 @@ def group_repeats (music_list): # elements of the note: def musicxml_tuplet_to_lily (tuplet_elt, time_modification): tsm = musicexp.TimeScaledMusic () - fraction = (1,1) + fraction = (1, 1) if time_modification: fraction = time_modification.get_fraction () tsm.numerator = fraction[0] - tsm.denominator = fraction[1] + tsm.denominator = fraction[1] normal_type = tuplet_elt.get_normal_type () @@ -758,7 +764,7 @@ def musicxml_time_to_lily (attributes): def musicxml_key_to_lily (attributes): key_sig = attributes.get_key_signature () if not key_sig or not (isinstance (key_sig, list) or isinstance (key_sig, tuple)): - error_message (_ ("Unable to extract key signature!")) + ly.warning (_ ("Unable to extract key signature!")) return None change = musicexp.KeySignatureChange() @@ -768,24 +774,24 @@ def musicxml_key_to_lily (attributes): (fifths, mode) = key_sig change.mode = mode - start_pitch = musicexp.Pitch () + start_pitch = musicexp.Pitch () start_pitch.octave = 0 try: - (n,a) = { - 'major' : (0,0), - 'minor' : (5,0), - 'ionian' : (0,0), - 'dorian' : (1,0), - 'phrygian' : (2,0), - 'lydian' : (3,0), - 'mixolydian': (4,0), - 'aeolian' : (5,0), - 'locrian' : (6,0), + (n, a) = { + 'major' : (0, 0), + 'minor' : (5, 0), + 'ionian' : (0, 0), + 'dorian' : (1, 0), + 'phrygian' : (2, 0), + 'lydian' : (3, 0), + 'mixolydian': (4, 0), + 'aeolian' : (5, 0), + 'locrian' : (6, 0), }[mode] start_pitch.step = n start_pitch.alteration = a except KeyError: - error_message (_ ("unknown mode %s, expecting 'major' or 'minor' " + ly.warning (_ ("unknown mode %s, expecting 'major' or 'minor' " "or a church mode!") % mode) fifth = musicexp.Pitch() @@ -820,9 +826,9 @@ def musicxml_transpose_to_lily (attributes): chromatic_shift = string.atoi (transpose.get_named_child ('chromatic').get_text ()) chromatic_shift_normalized = chromatic_shift % 12; (shift.step, shift.alteration) = [ - (0,0), (0,1), (1,0), (2,-1), (2,0), - (3,0), (3,1), (4,0), (5,-1), (5,0), - (6,-1), (6,0)][chromatic_shift_normalized]; + (0, 0), (0, 1), (1, 0), (2, -1), (2, 0), + (3, 0), (3, 1), (4, 0), (5, -1), (5, 0), + (6, -1), (6, 0)][chromatic_shift_normalized]; shift.octave += (chromatic_shift - chromatic_shift_normalized) / 12 @@ -859,7 +865,7 @@ def musicxml_staff_details_to_lily (attributes): def musicxml_attributes_to_lily (attrs): elts = [] - attr_dispatch = { + attr_dispatch = { 'clef': musicxml_clef_to_lily, 'time': musicxml_time_to_lily, 'key': musicxml_key_to_lily, @@ -923,7 +929,7 @@ class Marker (musicexp.Music): self.direction = 0 self.event = None def print_ly (self, printer): - ly.stderr_write (_ ("Encountered unprocessed marker %s\n") % self) + ly.warning (_ ("Encountered unprocessed marker %s\n") % self) pass def ly_expression (self): return "" @@ -1017,7 +1023,7 @@ def musicxml_spanner_to_lily_event (mxl_event): if func: ev = func() else: - error_message (_ ('unknown span event %s') % mxl_event) + ly.warning (_ ('unknown span event %s') % mxl_event) type = mxl_event.get_type () @@ -1027,7 +1033,7 @@ def musicxml_spanner_to_lily_event (mxl_event): if span_direction != None: ev.span_direction = span_direction else: - error_message (_ ('unknown span type %s for %s') % (type, name)) + ly.warning (_ ('unknown span type %s for %s') % (type, name)) ev.set_span_type (type) ev.line_type = getattr (mxl_event, 'line-type', 'solid') @@ -1218,7 +1224,7 @@ def musicxml_dynamics_to_lily_event (dynentry): dynamicsname = dynentry.get_name () if dynamicsname == "other-dynamics": dynamicsname = dynentry.get_text () - if not dynamicsname or dynamicsname=="#text": + if not dynamicsname or dynamicsname == "#text": return if not dynamicsname in dynamics_available: @@ -1245,7 +1251,7 @@ def hexcolorval_to_nr (hex_val): def hex_to_color (hex_val): res = re.match (r'#([0-9a-f][0-9a-f]|)([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$', hex_val, re.IGNORECASE) if res: - return map (lambda x: hexcolorval_to_nr (x), res.group (2,3,4)) + return map (lambda x: hexcolorval_to_nr (x), res.group (2, 3, 4)) else: return None @@ -1447,12 +1453,12 @@ def musicxml_metronome_to_ly (mxl_event): except ValueError: pass else: - error_message (_ ("Unknown metronome mark, ignoring")) + ly.warning (_ ("Unknown metronome mark, ignoring")) return return ev else: #TODO: Implement the other (more complex) way for tempo marks! - error_message (_ ("Metronome marks with complex relations ( in MusicXML) are not yet implemented.")) + ly.warning (_ ("Metronome marks with complex relations ( in MusicXML) are not yet implemented.")) return # translate directions into Events, possible values: @@ -1654,7 +1660,7 @@ def musicxml_chordkind_to_lily (kind): res = chordkind_dict.get (kind, None) # Check for None, since a major chord is converted to '' if res == None: - error_message (_ ("Unable to convert chord type %s to lilypond.") % kind) + ly.warning (_ ("Unable to convert chord type %s to lilypond.") % kind) return res def musicxml_harmony_to_lily_chordname (n): @@ -1745,7 +1751,7 @@ def musicxml_figured_bass_to_lily (n): dur = n.get_maybe_exist_named_child ('duration') if dur: # apply the duration to res - length = Rational(int(dur.get_text()), n._divisions)*Rational(1,4) + length = Rational(int(dur.get_text()), n._divisions) * Rational(1, 4) res.set_real_duration (length) duration = rational_to_lily_duration (length) if duration: @@ -1764,7 +1770,7 @@ instrument_drumtype_dict = { } def musicxml_note_to_lily_main_event (n): - pitch = None + pitch = None duration = None event = None @@ -1776,17 +1782,21 @@ def musicxml_note_to_lily_main_event (n): acc = n.get_maybe_exist_named_child ('accidental') if acc: - # let's not force accs everywhere. - event.cautionary = acc.cautionary + # AccidentalCautionary in lily has parentheses + # so treat accidental explicitly in parentheses as cautionary + if hasattr(acc, 'parentheses') and acc.parentheses == "yes": + event.cautionary = True + else: + event.cautionary = acc.cautionary # TODO: Handle editorial accidentals # 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 @@ -1900,7 +1910,7 @@ class LilyPondVoiceBuilder: def current_duration (self): return self.end_moment - self.begin_moment - def add_music (self, music, duration, relevant = True): + def add_music (self, music, duration, relevant=True): assert isinstance (music, musicexp.Music) if self.pending_multibar > Rational (0): self._insert_multibar () @@ -1917,13 +1927,13 @@ class LilyPondVoiceBuilder: self.pending_dynamics = [] # Insert some music command that does not affect the position in the measure - def add_command (self, command, relevant = True): + def add_command (self, command, relevant=True): assert isinstance (command, musicexp.Music) if self.pending_multibar > Rational (0): self._insert_multibar () self.has_relevant_elements = self.has_relevant_elements or relevant self.elements.append (command) - def add_barline (self, barline, relevant = False): + def add_barline (self, barline, relevant=False): # Insert only if we don't have a barline already # TODO: Implement proper merging of default barline and custom bar line has_relevant = self.has_relevant_elements @@ -1955,8 +1965,8 @@ class LilyPondVoiceBuilder: diff = moment - current_end if diff < Rational (0): - error_message (_ ('Negative skip %s (from position %s to %s)') % - (diff, current_end, moment)) + ly.warning (_ ('Negative skip %s (from position %s to %s)') + % (diff, current_end, moment)) diff = Rational (0) if diff > Rational (0) and not (self.ignore_skips and moment == 0): @@ -1992,7 +2002,7 @@ class LilyPondVoiceBuilder: value = None # if the position matches, find the last ChordEvent, do not cross a bar line! - at = len( self.elements ) - 1 + at = len(self.elements) - 1 while (at >= 0 and not isinstance (self.elements[at], musicexp.ChordEvent) and not isinstance (self.elements[at], musicexp.BarLine)): @@ -2432,7 +2442,7 @@ def musicxml_voice_to_lily_voice (voice): if len (modes_found) > 1: - error_message (_ ('cannot simultaneously have more than one mode: %s') % modes_found.keys ()) + ly.warning (_ ('cannot simultaneously have more than one mode: %s') % modes_found.keys ()) if options.relative: v = musicexp.RelativeMusic () @@ -2489,11 +2499,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): @@ -2540,7 +2550,7 @@ def get_all_voices (parts): part_ly_voices = {} for n, v in name_voice.items (): - progress (_ ("Converting to LilyPond expressions...")) + ly.progress (_ ("Converting to LilyPond expressions..."), True) # musicxml_voice_to_lily_voice returns (lily_voice, {nr->lyrics, nr->lyrics}) part_ly_voices[n] = musicxml_voice_to_lily_voice (v) @@ -2563,7 +2573,7 @@ If the given filename is -, musicxml2ly reads from the command line. p.version = ('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n''' + -_ ("""Copyright (c) 2005--2011 by +_ ("""Copyright (c) 2005--2012 by Han-Wen Nienhuys , Jan Nieuwenhuizen and Reinhold Kainhofer @@ -2580,8 +2590,9 @@ information.""") % 'lilypond') help=_ ("show version number and exit")) p.add_option ('-v', '--verbose', - action = "store_true", - dest = 'verbose', + action="callback", + callback=ly.handle_loglevel_option, + callback_args=("DEBUG",), help = _ ("be verbose")) p.add_option ('', '--lxml', @@ -2612,6 +2623,14 @@ information.""") % 'lilypond') action = "store", help = _ ("use LANG for pitch names, e.g. 'deutsch' for note names in German")) + p.add_option ("--loglevel", + help=_ ("Print log messages according to LOGLEVEL " + "(NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"), + metavar=_ ("LOGLEVEL"), + action='callback', + callback=ly.handle_loglevel_option, + type='string') + p.add_option ('--nd', '--no-articulation-directions', action = "store_false", default = True, @@ -2643,6 +2662,13 @@ information.""") % 'lilypond') type = 'string', dest = 'output_name', help = _ ("set output filename to FILE, stdout if -")) + + p.add_option ('-m', '--midi', + action = "store_true", + default = False, + dest = "midi", + help = _("activate midi-block")) + p.add_option_group ('', description = ( _ ("Report bugs via %s") @@ -2693,7 +2719,7 @@ def print_voice_definitions (printer, part_list, voices): def uniq_list (l): - return dict ([(elt,1) for elt in l]).keys () + return dict ([(elt, 1) for elt in l]).keys () # format the information about the staff in the form # [staffid, @@ -2725,7 +2751,7 @@ def update_score_setup (score_structure, part_list, voices): part_id = part_definition.id nv_dict = voices.get (part_id) if not nv_dict: - error_message (_ ('unknown part in part-list: %s') % part_id) + ly.warning (_ ('unknown part in part-list: %s') % part_id) continue staves = reduce (lambda x,y: x+ y, @@ -2755,7 +2781,7 @@ def update_layout_information (): def print_ly_preamble (printer, filename): printer.dump_version () - printer.print_verbatim ('%% automatically converted from %s\n' % filename) + printer.print_verbatim ('%% automatically converted by musicxml2ly from %s\n' % filename) def print_ly_additional_definitions (printer, filename): if needed_additional_definitions: @@ -2787,10 +2813,20 @@ def read_musicxml (filename, compressed, use_lxml): raw_string = None if compressed: if filename == "-": - progress (_ ("Input is compressed, extracting raw MusicXML data from stdin") ) - z = zipfile.ZipFile (sys.stdin) + ly.progress (_ ("Input is compressed, extracting raw MusicXML data from stdin"), True) + # 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) + ly.progress (_ ("Input file %s is compressed, extracting raw MusicXML data") % filename, True) z = zipfile.ZipFile (filename, "r") container_xml = z.read ("META-INF/container.xml") if not container_xml: @@ -2820,9 +2856,9 @@ def read_musicxml (filename, compressed, use_lxml): def convert (filename, options): if filename == "-": - progress (_ ("Reading MusicXML from Standard input ...") ) + ly.progress (_ ("Reading MusicXML from Standard input ..."), True) else: - progress (_ ("Reading MusicXML from %s ...") % filename) + ly.progress (_ ("Reading MusicXML from %s ...") % filename, True) tree = read_musicxml (filename, options.compressed, options.use_lxml) score_information = extract_score_information (tree) @@ -2855,9 +2891,9 @@ def convert (filename, options): else: output_ly_name = options.output_name + '.ly' - progress (_ ("Output to `%s'") % output_ly_name) + ly.progress (_ ("Output to `%s'") % output_ly_name, True) printer = musicexp.Output_printer() - #progress (_ ("Output to `%s'") % defs_ly_name) + #ly.progress (_ ("Output to `%s'") % defs_ly_name, True) if (options.output_name == "-"): printer.set_file (codecs.getwriter ("utf-8")(sys.stdout)) else: @@ -2900,6 +2936,9 @@ def main (): opt_parser.print_usage() sys.exit (2) + if options.midi: + musicexp.set_create_midi (options.midi) + if options.language: musicexp.set_pitch_language (options.language) needed_additional_definitions.append (options.language) @@ -2922,7 +2961,7 @@ def main (): if filename and (filename == "-" or os.path.exists (filename)): voices = convert (filename, options) else: - progress (_ ("Unable to find input file %s") % basefilename) + ly.error (_ ("Unable to find input file %s") % basefilename) if __name__ == '__main__': main() diff --git a/smart-autogen.sh b/smart-autogen.sh index 92ef928ca0..6dcb3ab37c 100755 --- a/smart-autogen.sh +++ b/smart-autogen.sh @@ -13,6 +13,5 @@ fi set -e ${srcdir}/autogen.sh "$@" -echo -n $AUTOGEN_INPUT_CHECKSUM > $CHECKSUM_FILE - +printf "%s" $AUTOGEN_INPUT_CHECKSUM > $CHECKSUM_FILE diff --git a/smart-configure.sh b/smart-configure.sh index f82c085745..d55947f08c 100755 --- a/smart-configure.sh +++ b/smart-configure.sh @@ -16,8 +16,5 @@ fi set -e $srcdir/configure "$@" -echo -n $CONFIGURE_CHECKSUM > $CONFIGURE_CHECKSUM_FILE - - - +printf "%s" $CONFIGURE_CHECKSUM > $CONFIGURE_CHECKSUM_FILE diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index 8fe2dddb72..682b6b1bd1 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -286,6 +286,22 @@ AC_DEFUN(STEPMAKE_CXXTEMPLATE, [ fi ]) +AC_DEFUN(STEPMAKE_GXXCODEGENBUG, [ + AC_MSG_CHECKING([options for known g++ bugs]) + case "$GXX:$CXX_VERSION" in + yes:400600[[0-2]]) + AC_MSG_RESULT([-fno-optimize-sibling-calls (tail call bug)]) + CXXFLAGS="$CXXFLAGS -fno-optimize-sibling-calls" + ;; + yes:400700?) + AC_MSG_RESULT([-fno-tree-vrp (comparison bug)]) + CXXFLAGS="$CXXFLAGS -fno-tree-vrp" + ;; + *) AC_MSG_RESULT([none]) + esac + AC_SUBST(CXXFLAGS) +]) + AC_DEFUN(STEPMAKE_DATADIR, [ if test "$datadir" = "\${prefix}/share"; then @@ -405,9 +421,22 @@ EOF exit 2 fi - for d in 2 3 4 ; do + abssrcdir="`cd $srcdir; pwd`" + absbuilddir="`pwd`" + for d in 2 3 4 5 ; do for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name GNUmakefile`; do - mkdir -p $(dirname $mf) + case "$abssrcdir" in + "$absbuilddir"/*) +# source is below build directory, always copy + ;; + *) + case "$abssrcdir/${mf#./}" in + "$absbuilddir"/*) +# find descended into build directory, don't copy + continue + esac + esac + mkdir -p ${mf%/*} cat < $mf print 'depth=' + ('../' * ( $d-1 ) ) print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make' @@ -416,7 +445,18 @@ print 'MODULE_INCLUDES += \$(src-dir)/\$(outbase)' EOF done for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name '*.make' | grep -v config.make `; do - mkdir -p $(dirname $mf) + case "$abssrcdir" in + "$absbuilddir"/*) +# source is below build directory, always copy + ;; + *) + case "$abssrcdir/${mf#./}" in + "$absbuilddir"/*) +# find descended into build directory, don't copy + continue + esac + esac + mkdir -p ${mf%/*} cat < $mf print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make' print 'include \$(configure-srcdir)/$mf' @@ -424,12 +464,13 @@ EOF done done - + rm -f GNUmakefile cat < GNUmakefile depth = . include config\$(if \$(conf),-\$(conf),).make include \$(configure-srcdir)/GNUmakefile.in EOF + chmod 444 GNUmakefile AC_SUBST(VPATH) fi ]) @@ -494,13 +535,17 @@ EOF AC_MSG_RESULT($FLEXLEXER_FILE) ]) -AC_DEFUN(STEPMAKE_GCC, [ - if test "$GCC" = "yes"; then - STEPMAKE_CHECK_VERSION(CC, $1, $2) - else - warn="$CC (Please install *GNU* cc)" - STEPMAKE_ADD_ENTRY($1, $warn) +AC_DEFUN(STEPMAKE_GCC_OR_CLANG, [ + STEPMAKE_HAS_CLANG() + if test "$HAS_CLANG" = "no"; then + if test "$GCC" = "yes"; then + STEPMAKE_CHECK_VERSION(CC, $1, $2) + else + warn="$CC (Please install *GNU* cc)" + STEPMAKE_ADD_ENTRY($1, $warn) + fi fi + # no else, we're fine with any clang ]) AC_DEFUN(STEPMAKE_GETTEXT, [ @@ -518,7 +563,7 @@ AC_DEFUN(STEPMAKE_GETTEXT, [ AC_DEFUN(STEPMAKE_GUILE, [ - STEPMAKE_PATH_PROG(GUILE, guile, $1) + STEPMAKE_PATH_PROG(GUILE, guile guile1, $1) ]) @@ -560,7 +605,7 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [ test -n "$target_alias" && target_guile_config=$target_alias-guile-config test -n "$host_alias" && host_guile_config=$host_alias-guile-config AC_MSG_CHECKING([for guile-config]) - for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config; do + for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile1-config; do AC_MSG_RESULT([$guile_config]) if ! $guile_config --version > /dev/null 2>&1 ; then AC_MSG_WARN([cannot execute $guile_config]) @@ -573,7 +618,7 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [ done STEPMAKE_OPTIONAL_REQUIRED(GUILE_CONFIG, $guile_config, $1) if test $? -ne 0; then - STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package)') + STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package) or guile1-config (guile1-devel package)') fi STEPMAKE_CHECK_SEARCH_RESULT(GUILE_CONFIG) @@ -616,13 +661,25 @@ AC_DEFUN(STEPMAKE_DLOPEN, [ AC_CHECK_FUNCS(dlopen) ]) -AC_DEFUN(STEPMAKE_GXX, [ - if test "$GXX" = "yes"; then - STEPMAKE_CHECK_VERSION(CXX, $1, $2) - else - warn="$CXX (Please install *GNU* c++)" - STEPMAKE_ADD_ENTRY($1, $warn) +AC_DEFUN(STEPMAKE_HAS_CLANG, [ + AC_EGREP_CPP(yes, + [#ifdef __clang__ + yes + #endif + ], HAS_CLANG=yes, HAS_CLANG=no) +]) + +AC_DEFUN(STEPMAKE_GXX_OR_CLANG, [ + STEPMAKE_HAS_CLANG() + if test "$HAS_CLANG" = "no"; then + if test "$GXX" = "yes"; then + STEPMAKE_CHECK_VERSION(CXX, $1, $2) + else + warn="$CXX (Please install *GNU* c++)" + STEPMAKE_ADD_ENTRY($1, $warn) + fi fi + # no else, we're fine with any clang ]) @@ -899,7 +956,7 @@ AC_DEFUN(STEPMAKE_PATH_PROG, [ AC_CHECK_PROGS($1, $2, no) STEPMAKE_OPTIONAL_REQUIRED($1, $2, $3) if test $? -eq 0; then - AC_PATH_PROG($1, $2) + AC_PATH_PROGS($1, $2) if test -n "$4"; then STEPMAKE_CHECK_VERSION($1, $3, $4) fi @@ -978,7 +1035,11 @@ AC_DEFUN(STEPMAKE_PYTHON_DEVEL, [ # Clean out junk: http://bugs.python.org/issue3290 # Python headers may need some -f* flags, leave them in. # We want the sed commands to look like 's/-[WDOm][[:alnum:][:punct:]][[:alnum:][:punct:]]*//g' and 's/-arch [^[:space:]]*//g', but automake eats brackets. - PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'` + #PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'` + # The above sed BRE matches parts of legal options, stipping down part of that option, resulting in invalid gcc arguments. Gentoo Bug #415793 + # For instance, '-floop-stip-mime' becomes '-floop-strip', and '-fvect-cost-model' becomes '-fvect-cost'. + # Tentative fix to require a non alphanumeric character before the initial hyphen of the BRE or the hyphen being the first character in the string. + PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/\(^\|[[^[:alnum:]]]\)-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'` PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` fi diff --git a/stepmake/bin/stepmakeise.sh b/stepmake/bin/stepmakeise.sh index 4119be3df5..e2ae7cfe8b 100755 --- a/stepmake/bin/stepmakeise.sh +++ b/stepmake/bin/stepmakeise.sh @@ -34,7 +34,7 @@ if [ -r stepmake ]; then exit 1 fi echo "Stepmake found" - echo -n "Checking version..." + printf "Checking version..." VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL # urg version=$VERSION @@ -49,7 +49,7 @@ fi if [ true ]; then # urg - echo -n "Checking latest..." + printf "Checking latest..." if [ ! -r $reldir ]; then echo "$name: huh 2?" exit 1 @@ -64,7 +64,7 @@ if [ true ]; then echo "relax, StepMake is up to date" exit 0 fi - echo -n "Updating StepMake..." + printf "Updating StepMake..." (set +x; rm -rf stepmake; tar xzf $reldir/stepmake-$LATEST.tar.gz; mv stepmake-$LATEST stepmake) echo "ok" fi @@ -84,7 +84,7 @@ for i in $files; do fi done -echo -n "Stepmakeising..." +printf "Stepmakeising..." for i in $files; do cp -prv stepmake/$i . done diff --git a/stepmake/stepmake/c++-rules.make b/stepmake/stepmake/c++-rules.make index 25c1d1207a..a368f4f666 100644 --- a/stepmake/stepmake/c++-rules.make +++ b/stepmake/stepmake/c++-rules.make @@ -12,8 +12,13 @@ $(outdir)/%.lo: %.cc $(outdir)/%.lo: $(outdir)/%.cc $(DO_LO_DEP) $(CXX) -c $(ALL_CXXFLAGS) $(PIC_FLAGS) -o $@ $< -$(outdir)/%.cc $(outdir)/%.hh: %.yy - $(BISON) -d -o $(subst .hh,.cc,$@) $< +$(outdir)/%.cc: %.yy + $(BISON) -o $@ $< + +$(outdir)/%.hh: %.yy + $(BISON) -o $(subst .hh,-tmp.cc,$@) -d $< + rm $(subst .hh,-tmp.cc,$@) + mv $(subst .hh,-tmp.hh,$@) $@ $(outdir)/%.cc: %.ll $(FLEX) -Cfe -p -p -o$@ $< diff --git a/stepmake/stepmake/generic-targets.make b/stepmake/stepmake/generic-targets.make index dcb196c4dc..9a51aaa728 100644 --- a/stepmake/stepmake/generic-targets.make +++ b/stepmake/stepmake/generic-targets.make @@ -1,9 +1,13 @@ .PHONY : all clean bin-clean config default dist exe help html lib TAGS\ - po doc doc-stage-1 WWW-1 WWW-2 WWW-post local-WWW-1 local-WWW-2 + po doc doc-stage-1 WWW-1 WWW-2 WWW-post local-WWW-1 local-WWW-2\ + log-clean all: default $(LOOP) +bin: + $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C lily + man: $(LOOP) @@ -11,6 +15,9 @@ clean: local-clean -rm -rf $(outdir) $(LOOP) +log-clean: + find . -name "*.log" -delete + ifeq (,$(findstring metafont,$(STEPMAKE_TEMPLATES))) bin-clean: local-bin-clean -rm -rf $(outdir) @@ -68,6 +75,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" diff --git a/stepmake/stepmake/generic-vars.make b/stepmake/stepmake/generic-vars.make index 6a8729df5f..5eba1cc214 100644 --- a/stepmake/stepmake/generic-vars.make +++ b/stepmake/stepmake/generic-vars.make @@ -37,7 +37,8 @@ endif distname = $(package)-$(TOPLEVEL_VERSION) doc-dir = $(src-depth)/Documentation -po-dir = $(src-depth)/po +po-srcdir = $(src-depth)/po +po-outdir = $(depth)/po/$(outdir) step-bindir = $(stepmake)/bin # stepmake package support. @@ -103,11 +104,6 @@ SOURCE_FILES += $(IN_FILES) # Preprocessed .in documentation _FILES: OUTIN_FILES = $(addprefix $(outdir)/, $(IN_FILES:%.in=%)) -# CSS source files are in a unique directory -CSS_DIRECTORY = $(top-src-dir)/Documentation/css -CSS_FILES := $(shell ls $(CSS_DIRECTORY)/*.css) -OUT_CSS_FILES = $(CSS_FILES:$(CSS_DIRECTORY)/%.css=$(outdir)/%.css) - ALL_SOURCES = $(SOURCE_FILES) ifeq (cygwin,$(findstring cygwin,$(HOST_ARCH))) diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make index c1728f9924..5b6ad17d91 100644 --- a/stepmake/stepmake/metafont-rules.make +++ b/stepmake/stepmake/metafont-rules.make @@ -18,8 +18,8 @@ $(outdir)/%.tfm $(outdir)/%.log: %.mf # # 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` \ +$(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem $(outdir)/%.log + TMP=`mktemp -d $(outdir)/pfbtemp.$*.XXXXXXXXX` \ && ( cd $$TMP \ && ln -s ../mf2pt1.mem . \ && ln -s ../../mf2pt1.mp . \ @@ -27,5 +27,10 @@ $(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem && mv $$TMP/*pfb $(outdir); \ rm -rf $$TMP +# since recent mpost versions no longer create a mem file, we create a dummy +# file to satisfy the dependency (which gets overwritten in case an older +# mpost creates a real mem file) $(outdir)/mf2pt1.mem: mf2pt1.mp - cd $(outdir) && mpost -progname=mpost -ini $(top-src-dir)/mf/mf2pt1.mp \\dump + cd $(outdir) \ + && touch mf2pt1.mem \ + && mpost -progname=mpost -ini $(top-src-dir)/mf/mf2pt1.mp \\dump diff --git a/stepmake/stepmake/metafont-targets.make b/stepmake/stepmake/metafont-targets.make index dfaf2c18ce..89dfd628e0 100644 --- a/stepmake/stepmake/metafont-targets.make +++ b/stepmake/stepmake/metafont-targets.make @@ -1,3 +1,4 @@ +.PHONY: tfm dvi pfb tfm: $(TFM_FILES) diff --git a/stepmake/stepmake/po-targets.make b/stepmake/stepmake/po-targets.make index 05088ee170..c971e513c0 100644 --- a/stepmake/stepmake/po-targets.make +++ b/stepmake/stepmake/po-targets.make @@ -1,12 +1,24 @@ - - +XGETTEXT_OPTIONS = \ + --directory=$(src-dir) \ + --directory=. \ + --default-domain=$(package) \ + --from-code=UTF-8 \ + --join \ + --add-comments \ + --msgid-bugs-address="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs" \ + --package-name=$(package) \ + --package-version=$(VERSION) + +sed-header = \# Translation of LilyPond\n\# Copyright \(C\) 1998--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen.\n\# This file is distributed under the same license as the LilyPond package. +sed-content = "Content-Type: text\/plain; charset=UTF-8\\n" #### #### UGH! new-po: - if test -r $(po-dir); then \ - rm -f $(po-dir)/$(outdir)/$(package).po; \ - touch $(po-dir)/$(outdir)/$(package).po; \ + if test -r $(po-srcdir); then \ + rm -f $(po-outdir)/$(package).po; \ + mkdir -p $(po-outdir); \ + touch $(po-outdir)/$(package).po; \ fi ifeq ($(strip $(depth)),.) @@ -21,19 +33,21 @@ ALL_PO_SOURCES = $(ALL_C_SOURCES) $(ALL_CC_SOURCES) $(PYTHON_SCRIPTS_IN) $(PY_MO local-po: ifneq ($(strip $(ALL_PO_SOURCES)),) @echo $(ALL_PO_SOURCES) - xgettext --default-domain=$(package) --join \ - --output-dir=$(po-dir)/$(outdir) --add-comments \ + xgettext $(XGETTEXT_OPTIONS) --output-dir=$(po-outdir) \ --keyword=_ --keyword=_f --keyword=_i \ $(XGETTEXT_FLAGS) $(ALL_PO_SOURCES) endif endif + sed -i '1,2d' $(po-outdir)/$(package).po + sed -i -e 's/^\# This file is distributed.*/$(sed-header)/' $(po-outdir)/$(package).po + sed -i -e 's/^\"Content-Type: text\/plain.*/$(sed-content)/' $(po-outdir)/$(package).po po-update: po - $(MAKE) -C $(po-dir) po-update + $(MAKE) -C $(po-outdir)/.. po-update po-changes: - $(MAKE) -C $(po-dir) po-changes + $(MAKE) -C $(po-outdir)/.. po-changes po-replace: po - $(MAKE) -C $(po-dir) po-replace + $(MAKE) -C $(po-outdir)/.. po-replace diff --git a/stepmake/stepmake/podir-targets.make b/stepmake/stepmake/podir-targets.make index 0b831c5c79..fd66e55809 100644 --- a/stepmake/stepmake/podir-targets.make +++ b/stepmake/stepmake/podir-targets.make @@ -12,21 +12,20 @@ sed-edstuff = -e 's/[ \.,adic0-9]*//' -e 's/---//' | sort -u po-update: $(foreach i,$(CATALOGS), \ - rm -f $(po-dir)/$(outdir)/$(i).po; \ - msgmerge $(po-dir)/$(i).po $(po-dir)/$(outdir)/$(package).po \ - -o $(po-dir)/$(outdir)/$(i).po && ) true + rm -f $(po-outdir)/$(i).po; \ + msgmerge $(po-srcdir)/$(i).po $(po-outdir)/$(package).po \ + -o $(po-outdir)/$(i).po && ) true @$(foreach i,$(CATALOGS), \ - changes=`$(MAKE) --silent -C $(po-dir) LANGUAGE=$i po-changes $(ERROR_LOG) | sed $(sed-makestuff)`; \ + changes=`$(MAKE) --silent -C $(po-outdir)/.. LANGUAGE=$i po-changes $(ERROR_LOG) | sed $(sed-makestuff)`; \ if test "$$changes" != "" ; then \ - echo "*** Changes for language $i; check po/$(outdir)/$i.po ***"; \ + echo "*** Changes for language $i; check $(po-outdir)/$i.po ***"; \ echo -e "changes: \`$$changes'";\ fi && ) true po-changes: - diff -e $(po-dir)/$(outdir)/$(LANGUAGE).po $(po-dir)/$(LANGUAGE).po \ + diff -e $(po-outdir)/$(LANGUAGE).po $(po-srcdir)/$(LANGUAGE).po \ | sed $(sed-pofile) $(sed-edstuff) po-replace: po-update mv $(outdir)/$(package).po $(package).pot - mv $(outdir)/*.po . diff --git a/stepmake/stepmake/python-module-rules.make b/stepmake/stepmake/python-module-rules.make index f32732f584..bf99f8feaa 100644 --- a/stepmake/stepmake/python-module-rules.make +++ b/stepmake/stepmake/python-module-rules.make @@ -8,7 +8,7 @@ $(outdir)/%.pyc: $(outdir)/%.py $(outdir)/%.pyo: $(outdir)/%.py $(PYTHON) -O -c 'import py_compile; py_compile.compile ("$<")' -$(outdir)/%.py: %.py $(config_make) +$(outdir)/%.py: %.py $(config_make) $(depth)/VERSION cat $< | sed $(sed-atfiles) | sed $(sed-atvariables) > $@ chmod 755 $@ diff --git a/stepmake/stepmake/shared-library-targets.make b/stepmake/stepmake/shared-library-targets.make index 4f8dbe8d2b..690fdfaf01 100644 --- a/stepmake/stepmake/shared-library-targets.make +++ b/stepmake/stepmake/shared-library-targets.make @@ -1,4 +1,4 @@ default: $(SHARED_LIBRARY) -$(SHARED_LIB_PREFIX)$(NAME): default \ No newline at end of file +$(SHARED_LIB_PREFIX)$(NAME): default diff --git a/stepmake/stepmake/test-vars.make b/stepmake/stepmake/test-vars.make index ffd57d480b..b7feb78a14 100644 --- a/stepmake/stepmake/test-vars.make +++ b/stepmake/stepmake/test-vars.make @@ -4,4 +4,4 @@ O_FILES := $(filter-out $(outdir)/test%, $(O_FILES)) TEST_EXECUTABLE = $(outdir)/test-$(NAME) TEST_MODULE_LIBES =$(addprefix $(outdir)/../, $(addsuffix /$(outbase)/library.a, $(TEST_MODULE_LIBS))) -TEST_LOADLIBES = $(TEST_MODULE_LIBES) $(LOADLIBES) +TEST_LOADLIBES = $(TEST_MODULE_LIBES) $(LOADLIBES) $(CXXABI_LIBS) diff --git a/stepmake/stepmake/texinfo-rules.make b/stepmake/stepmake/texinfo-rules.make index f9e471a167..838219a673 100644 --- a/stepmake/stepmake/texinfo-rules.make +++ b/stepmake/stepmake/texinfo-rules.make @@ -23,50 +23,58 @@ ifneq ($(INFO_IMAGES_DIR),) endif touch $@ -$(outdir)/%.texi: $(src-dir)/%.texi - cp -p $< $@ +# Copy files while tracking their dependencies. +$(outdir)/%.texi: %.texi + mkdir -p $(dir $@) + $(DO_TEXI_DEP) cp -f $< $@ + +$(outdir)/%.itexi: %.itexi + mkdir -p $(dir $@) + $(DO_TEXI_DEP) cp -f $< $@ -$(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi +$(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS) ifeq ($(WEB_VERSION),yes) - $(MAKEINFO) -I$(src-dir) -I$(outdir) -D web_version --output=$@ $< + $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) -D web_version --output=$@ $<" "$*.makeinfoweb.log" else - $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $< + $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<" "$*.makeinfo.log" endif -$(outdir)/%-big-page.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi +$(outdir)/%-big-page.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS) ifeq ($(WEB_VERSION),yes) - DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage -D web_version --output=$@ $< + $(buildscript-dir)/run-and-check "DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage -D web_version --output=$@ $<" "$*.bigtexi.log" else - DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $< + $(buildscript-dir)/run-and-check "DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<" "$*.bigtexi.log" endif -$(outdir)/%.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi - DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $< +$(outdir)/%.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS) + $(buildscript-dir)/run-and-check "DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<" "$*.texilog.log" + -$(outdir)/%/index.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi $(outdir)/%.html.omf +$(outdir)/%/index.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi $(outdir)/%.html.omf | $(OUT_TEXINFO_MANUALS) mkdir -p $(dir $@) ifeq ($(WEB_VERSION),yes) - DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) -D web_version --output=$(dir $@) $< + $(buildscript-dir)/run-and-check "DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) -D web_version --output=$(dir $@) $<" "$*.splittexi.log" else - DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(dir $@) $< + $(buildscript-dir)/run-and-check "DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(dir $@) $<" "$*.splittexi.log" endif - cp $(top-src-dir)/Documentation/css/*.css $(dir $@) -$(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi - $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) $< - -$(outdir)/%.info: %.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi - $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $< +ifneq ($(ISOLANG),) +$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map | $(OUT_TEXINFO_MANUALS) + $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -q -o $(XREF_MAPS_DIR) --master-map-file=$(XREF_MAPS_DIR)/$*.xref-map $< +else +$(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi | $(OUT_TEXINFO_MANUALS) + $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -q -o $(XREF_MAPS_DIR) $< +endif -$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf $(outdir)/weblinks.itexi +$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS) ifeq ($(WEB_VERSION),yes) - cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) --batch $(TEXINFO_PAPERSIZE_OPTION) $( $@ - -.SECONDARY: $(outdir)/version.itexi $(outdir)/version.texi \ - $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep \ - $(outdir)/*.texi diff --git a/stepmake/stepmake/texinfo-targets.make b/stepmake/stepmake/texinfo-targets.make index 487ee97e49..6dbc031de5 100644 --- a/stepmake/stepmake/texinfo-targets.make +++ b/stepmake/stepmake/texinfo-targets.make @@ -3,9 +3,7 @@ default: $(INFO_FILES) ifeq ($(out),www) -local-WWW-1: $(XREF_MAPS_FILES) - -local-WWW-2: $(OUT_CSS_FILES) +local-WWW-1: $(OUT_TEXINFO_MANUALS) $(XREF_MAPS_FILES) endif local-txt-doc: $(OUTTXT_FILES) diff --git a/stepmake/stepmake/texinfo-vars.make b/stepmake/stepmake/texinfo-vars.make index 4c990d9f04..d164356555 100644 --- a/stepmake/stepmake/texinfo-vars.make +++ b/stepmake/stepmake/texinfo-vars.make @@ -8,19 +8,44 @@ OMF_FILES += $(foreach format, html pdf, $(foreach f, $(TEXI_FILES), $(outdir)/$ GENERATE_OMF = $(buildscript-dir)/texi2omf --format $(1) --location $(webdir)$(tree-dir)/$(notdir $(basename $@)) --version $(TOPLEVEL_VERSION) $< > $@ +# Find the file $(1) within the texinfo include dirs and return its path. +# If not found, return $(outdir)/$(1) assuming that it is a generated file. +find-texi = \ +$(firstword \ + $(wildcard $(src-dir)/$(1)) \ + $(wildcard $(top-src-dir)/Documentation/$(1)) \ + $(outdir)/$(1) \ +) + +# Recursively scan the file $(1) for @include, search for included files +# within the texinfo include dirs, and return all dependencies. +scan-texi = \ +$(foreach f, $(shell sed -ne "/^@include[[:space:]]/s/@include//p" $(1)), \ + $(call find-texi,$(f)) \ + $(call scan-texi,$(call find-texi,$(f))) \ +) + +# Find dependencies for the target $@, based on the texinfo source file $<, +# and write the dependencies to a .dep file. +DO_TEXI_DEP = ( echo ./$@: $(call scan-texi,$<) > $(basename $@).dep ) && + TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper) DOCUMENTATION_INCLUDES += -I $(top-src-dir)/Documentation -MAKEINFO_FLAGS += --enable-encoding $(DOCUMENTATION_INCLUDES) +MAKEINFO_FLAGS += --enable-encoding --error-limit=0 $(DOCUMENTATION_INCLUDES) MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS) # texi2html xref map files -# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make XREF_MAPS_DIR = $(top-build-dir)/$(outdir)/xref-maps +ifneq ($(ISOLANG),) +XREF_MAPS_FILES += $(TEXI_FILES:%.texi=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map) \ + $(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map) +else XREF_MAPS_FILES += $(TEXI_FILES:%.texi=$(XREF_MAPS_DIR)/%.xref-map) \ $(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.xref-map) -XREF_MAP_FLAGS += -I $(outdir) -I $(src-dir) +endif +XREF_MAP_FLAGS += -I $(outdir) -I $(src-dir) $(DOCUMENTATION_INCLUDES) ########### ifneq ($(ISOLANG),) @@ -32,17 +57,12 @@ TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.ini TEXI2HTML_SPLIT = --prefix=index --split=section TEXI2HTML_INCLUDES += --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR) -TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG) +TEXI2HTML_FLAGS += --error-limit=0 $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG) TEXI2HTML = TOP_SRC_DIR=$(top-src-dir) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM) ########### - TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES) -ifdef QUIET_BUILD -TEXI2PDF_FLAGS += -q -endif - # info stuff INFO_INSTALL_FILES = $(wildcard $(addsuffix *, $(INFO_FILES))) INFO_INSTALL_COMMAND = $(if $(INFO_INSTALL_FILES),\ diff --git a/tex/GNUmakefile b/tex/GNUmakefile index 51a54a43aa..5fa66c910f 100644 --- a/tex/GNUmakefile +++ b/tex/GNUmakefile @@ -14,3 +14,5 @@ local-uninstall: -rmdir $(DESTDIR)$(local_lilypond_datadir)/tex all: $(INSTALLATION_FILES) + +local-WWW-1: $(outdir)/lilypond.map diff --git a/tex/lilypond.map.in b/tex/lilypond.map.in new file mode 100644 index 0000000000..1e6e17869e --- /dev/null +++ b/tex/lilypond.map.in @@ -0,0 +1,4 @@ +pncr8r CenturySchL-Roma <@NCSB_DIR@/c059013l.pfb +pncb8r CenturySchL-Bold <@NCSB_DIR@/c059016l.pfb +pncri8r CenturySchL-Ital <@NCSB_DIR@/c059033l.pfb +pncbi8r CenturySchL-BoldItal <@NCSB_DIR@/c059036l.pfb diff --git a/tex/texinfo.tex b/tex/texinfo.tex index 91408263bc..0b40cc27b6 100644 --- a/tex/texinfo.tex +++ b/tex/texinfo.tex @@ -3,11 +3,13 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2009-08-14.15} +\def\texinfoversion{2012-07-03.16@LP} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +% +% Modified version used in LilyPond, changed in 2012. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -28,9 +30,9 @@ % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: -% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or -% ftp://tug.org/tex/texinfo.tex -% (and all CTAN mirrors, see http://www.ctan.org). +% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % @@ -65,7 +67,6 @@ \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} - \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. @@ -93,14 +94,13 @@ \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ +\let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top -{\catcode`\'=\active -\global\let\ptexquoteright'}% Math-mode def from plain.tex. -\let\ptexraggedright=\raggedright +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. @@ -118,10 +118,11 @@ % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi -\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi -\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi @@ -160,15 +161,18 @@ \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. +\chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! +\chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; +\chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. @@ -199,36 +203,7 @@ % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % -\def\finalout{\overfullrule=0pt} - -% @| inserts a changebar to the left of the current line. It should -% surround any changed text. This approach does *not* work if the -% change spans more than two lines of output. To handle that, we would -% have adopt a much more difficult approach (putting marks into the main -% vertical list for the beginning and end of each change). -% -\def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% -} +\def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, @@ -246,7 +221,7 @@ \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen - \ifx\eTeXversion\undefined\else % etex gives us more logging + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 @@ -257,6 +232,13 @@ \errorcontextlines16 }% +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % @@ -267,7 +249,6 @@ \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} -% For @cropmarks command. % Do @cropmarks to get crop marks. % \newif\ifcropmarks @@ -577,7 +558,7 @@ } \def\inenvironment#1{% \ifx#1\empty - out of any environment% + outside of any environment% \else in environment \expandafter\string#1% \fi @@ -589,7 +570,7 @@ \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else - % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 + % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup @@ -599,85 +580,6 @@ \newhelp\EMsimple{Press RETURN to continue.} -%% Simple single-character @ commands - -% @@ prints an @ -% Kludge this until the fonts are right (grr). -\def\@{{\tt\char64}} - -% This is turned off because it was never documented -% and you can use @w{...} around a quote to suppress ligatures. -%% Define @` and @' to be the same as ` and ' -%% but suppressing ligatures. -%\def\`{{`}} -%\def\'{{'}} - -% Used to generate quoted braces. -\def\mylbrace {{\tt\char123}} -\def\myrbrace {{\tt\char125}} -\let\{=\mylbrace -\let\}=\myrbrace -\begingroup - % Definitions to produce \{ and \} commands for indices, - % and @{ and @} for the aux/toc files. - \catcode`\{ = \other \catcode`\} = \other - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\! = 0 \catcode`\\ = \other - !gdef!lbracecmd[\{]% - !gdef!rbracecmd[\}]% - !gdef!lbraceatcmd[@{]% - !gdef!rbraceatcmd[@}]% -!endgroup - -% @comma{} to avoid , parsing problems. -\let\comma = , - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. -\let\, = \c -\let\dotaccent = \. -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \t -\let\ubaraccent = \b -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown @ordf @ordm -% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} -\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} -\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi - \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% The \TeX{} logo, as in plain, but resetting the spacing so that a -% period following counts as ending a sentence. (Idea found in latex.) -% -\edef\TeX{\TeX \spacefactor=1000 } - -% @LaTeX{} logo. Not quite the same results as the definition in -% latex.ltx, since we use a different font for the raised A; it's most -% convenient for us to use an explicitly smaller font, rather than using -% the \scriptstyle font (since we don't reset \scriptstyle and -% \scriptscriptstyle). -% -\def\LaTeX{% - L\kern-.36em - {\setbox0=\hbox{T}% - \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% - \kern-.15em - \TeX -} - % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and @@ -719,7 +621,7 @@ \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple - \errmessage{Unknown @frenchspacing option `\temp', must be on/off}% + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } @@ -801,15 +703,6 @@ where each line of input produces a line of output.} \newdimen\mil \mil=0.001in -% Old definition--didn't work. -%\parseargdef\need{\par % -%% This method tries to make TeX break the page naturally -%% if the depth of the box does not fit. -%{\baselineskip=0pt% -%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak -%\prevdepth=-1000pt -%}} - \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. @@ -873,7 +766,7 @@ where each line of input produces a line of output.} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion -% class. WHICH is `l' or `r'. +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} @@ -920,6 +813,36 @@ where each line of input produces a line of output.} \temp } +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). This command +% is not documented, not supported, and doesn't work. +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} @@ -930,6 +853,7 @@ where each line of input produces a line of output.} \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes @@ -965,7 +889,7 @@ where each line of input produces a line of output.} \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} - +% \def\thisfile{} % @center line @@ -973,36 +897,46 @@ where each line of input produces a line of output.} % \parseargdef\center{% \ifhmode - \let\next\centerH + \let\centersub\centerH \else - \let\next\centerV + \let\centersub\centerV \fi - \next{\hfil \ignorespaces#1\unskip \hfil}% + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case } -\def\centerH#1{% - {% - \hfil\break - \advance\hsize by -\leftskip - \advance\hsize by -\rightskip - \line{#1}% - \break - }% +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% } -\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}} % @sp n outputs n lines of vertical space - +% \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment - +% \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} - +% \let\c=\comment % @paragraphindent NCHARS @@ -1095,109 +1029,6 @@ where each line of input produces a line of output.} } -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math outputs its argument in math mode. -% -% One complication: _ usually means subscripts, but it could also mean -% an actual _ character, as in @math{@var{some_variable} + 1}. So make -% _ active, and distinguish by seeing if the current family is \slfam, -% which is what @var uses. -{ - \catcode`\_ = \active - \gdef\mathunderscore{% - \catcode`\_=\active - \def_{\ifnum\fam=\slfam \_\else\sb\fi}% - } -} -% Another complication: we want \\ (and @\) to output a \ character. -% FYI, plain.tex uses \\ as a temporary control sequence (why?), but -% this is not advertised and we don't care. Texinfo does not -% otherwise define @\. -% -% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. -\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} -% -\def\math{% - \tex - \mathunderscore - \let\\ = \mathbackslash - \mathactive - % make the texinfo accent commands work in math mode - \let\"=\ddot - \let\'=\acute - \let\==\bar - \let\^=\hat - \let\`=\grave - \let\u=\breve - \let\v=\check - \let\~=\tilde - \let\dotaccent=\dot - $\finishmath -} -\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. - -% Some active characters (such as <) are spaced differently in math. -% We have to reset their definitions in case the @math was an argument -% to a command which sets the catcodes (such as @item or @section). -% -{ - \catcode`^ = \active - \catcode`< = \active - \catcode`> = \active - \catcode`+ = \active - \catcode`' = \active - \gdef\mathactive{% - \let^ = \ptexhat - \let< = \ptexless - \let> = \ptexgtr - \let+ = \ptexplus - \let' = \ptexquoteright - } -} - -% Some math mode symbols. -\def\bullet{$\ptexbullet$} -\def\geq{\ifmmode \ge\else $\ge$\fi} -\def\leq{\ifmmode \le\else $\le$\fi} -\def\minus{\ifmmode -\else $-$\fi} - -% @dots{} outputs an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in the cm -% typewriter fonts as three actual period characters; on the other hand, -% in other typewriter fonts three periods are wider than 1.5em. So do -% whichever is larger. -% -\def\dots{% - \leavevmode - \setbox0=\hbox{...}% get width of three periods - \ifdim\wd0 > 1.5em - \dimen0 = \wd0 - \else - \dimen0 = 1.5em - \fi - \hbox to \dimen0{% - \hskip 0pt plus.25fil - .\hskip 0pt plus1fil - .\hskip 0pt plus1fil - .\hskip 0pt plus.5fil - }% -} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \dots - \spacefactor=\endofsentencespacefactor -} - -% @comma{} is so commas can be inserted into text without messing up -% Texinfo's parsing. -% -\let\comma = , - % @refill is a no-op. \let\refill=\relax @@ -1262,9 +1093,8 @@ where each line of input produces a line of output.} \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 -% can be set). So we test for \relax and 0 as well as \undefined, -% borrowed from ifpdf.sty. -\ifx\pdfoutput\undefined +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else @@ -1279,50 +1109,24 @@ where each line of input produces a line of output.} % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. -% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html -% (and related messages, the final outcome is that it is up to the TeX -% user to double the backslashes and otherwise make the string valid, so -% that's what we do). - -% double active backslashes. -% -{\catcode`\@=0 \catcode`\\=\active - @gdef@activebackslashdouble{% - @catcode`@\=@active - @let\=@doublebackslash} -} - -% To handle parens, we must adopt a different approach, since parens are -% not active characters. hyperref.dtx (which has the same problem as -% us) handles it with this amazing macro to replace tokens, with minor -% changes for Texinfo. It is included here under the GPL by permission -% from the author, Heiko Oberdiek. -% -% #1 is the tokens to replace. -% #2 is the replacement. -% #3 is the control sequence with the string. -% -\def\HyPsdSubst#1#2#3{% - \def\HyPsdReplace##1#1##2\END{% - ##1% - \ifx\\##2\\% - \else - #2% - \HyReturnAfterFi{% - \HyPsdReplace##2\END - }% - \fi - }% - \xdef#3{\expandafter\HyPsdReplace#3#1\END}% -} -\long\def\HyReturnAfterFi#1\fi{\fi#1} - -% #1 is a control sequence in which to do the replacements. -\def\backslashparens#1{% - \xdef#1{#1}% redefine it as its expansion; the definition is simply - % \lastnode when called from \setref -> \pdfmkdest. - \HyPsdSubst{(}{\realbackslash(}{#1}% - \HyPsdSubst{)}{\realbackslash)}{#1}% +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images @@ -1381,32 +1185,34 @@ output) for that.)} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% - \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% - \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % - % pdftex (and the PDF format) support .png, .jpg, .pdf (among - % others). Let's try in that order. + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. \let\pdfimgext=\empty \begingroup - \openin 1 #1.png \ifeof 1 - \openin 1 #1.jpg \ifeof 1 - \openin 1 #1.jpeg \ifeof 1 - \openin 1 #1.JPG \ifeof 1 - \openin 1 #1.pdf \ifeof 1 - \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% - \else \gdef\pdfimgext{PDF}% + \else \gdef\pdfimgext{JPG}% \fi - \else \gdef\pdfimgext{pdf}% + \else \gdef\pdfimgext{jpeg}% \fi - \else \gdef\pdfimgext{JPG}% + \else \gdef\pdfimgext{jpg}% \fi - \else \gdef\pdfimgext{jpeg}% + \else \gdef\pdfimgext{png}% \fi - \else \gdef\pdfimgext{jpg}% + \else \gdef\pdfimgext{PDF}% \fi - \else \gdef\pdfimgext{png}% + \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup @@ -1418,8 +1224,8 @@ output) for that.)} \else \immediate\pdfximage \fi - \ifdim \wd0 >0pt width \imagewidth \fi - \ifdim \wd2 >0pt height \imageheight \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else @@ -1434,10 +1240,9 @@ output) for that.)} % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive - \activebackslashdouble \makevalueexpandable \def\pdfdestname{#1}% - \backslashparens\pdfdestname + \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % @@ -1469,29 +1274,24 @@ output) for that.)} % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. - \def\pdfoutlinedest{#3}% + \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else - % Doubled backslashes in the name. - {\activebackslashdouble \xdef\pdfoutlinedest{#3}% - \backslashparens\pdfoutlinedest}% + \txiescapepdf\pdfoutlinedest \fi % - % Also double the backslashes in the display string. - {\activebackslashdouble \xdef\pdfoutlinetext{#1}% - \backslashparens\pdfoutlinetext}% + % Also escape PDF chars in the display string. + \edef\pdfoutlinetext{#1}% + \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup - % Thanh's hack / proper braces in bookmarks - \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace - \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace - % % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% @@ -1545,25 +1345,41 @@ output) for that.)} % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % - % xx to do this right, we have to translate 8-bit characters to - % their "best" equivalent, based on the @documentencoding. Right - % now, I guess we'll just let the pdf reader have its way. + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % \indexnofonts \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces - \ifx\p\space\else\addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 \fi \nextsp} - \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else @@ -1660,9 +1476,6 @@ output) for that.)} \def\ttsl{\setfontstyle{ttsl}} -% Default leading. -\newdimen\textleading \textleading = 13.2pt - % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. @@ -1674,6 +1487,7 @@ output) for that.)} % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % +\newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 @@ -1695,7 +1509,7 @@ output) for that.)} % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) -\ifpdf \ifx\pdffontattr\undefined \else +\ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap @@ -1946,28 +1760,34 @@ end \fi\fi -% Set the font macro #1 to the font named #2, adding on the -% specified font prefix (normally `cm'). +% Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap -% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass -% empty to omit). +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble -% emacs-page end of cmaps +% +% (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. -\ifx\fontprefix\undefined +\ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} -\def\rmbshape{bx} %where the normal face is bold +\def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} @@ -1982,8 +1802,7 @@ end \def\scshape{csc} \def\scbshape{csc} -% Definitions for a main text size of 11pt. This is the default in -% Texinfo. +% Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). @@ -2105,10 +1924,10 @@ end \font\reducedsy=cmsy10 \def\reducedecsize{1000} -% reset the current fonts -\textfonts +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts \rm -} % end of 11pt text font size definitions +} % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with @@ -2236,25 +2055,24 @@ end \font\reducedsy=cmsy9 \def\reducedecsize{0900} -% reduce space between paragraphs -\divide\parskip by 2 - -% reset the current fonts -\textfonts +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts \rm -} % end of 10pt text font size definitions +} % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % -\def\xword{10} \def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% - \wlog{doing @fonttextsize \textsizearg}% + %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. @@ -2308,7 +2126,7 @@ end \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% - \resetmathfonts \setleading{25pt}} + \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl @@ -2436,12 +2254,14 @@ end % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% - \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% - \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } @@ -2460,22 +2280,26 @@ end \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright +% \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright +% +\let\markupsetuplqsamp \markupsetcodequoteleft +\let\markupsetuprqsamp \markupsetcodequoteright +% \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright +% \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright -\let\markupsetuplqsamp \markupsetnoligaturesquoteleft \let\markupsetuplqkbd \markupsetnoligaturesquoteleft -% Allow an option to not replace quotes with a regular directed right -% quote/apostrophe (char 0x27), but instead use the undirected quote -% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it -% the default, but it works for pasting with more pdf viewers (at least -% evince), the lilypond developers report. xpdf does work with the -% regular 0x27. +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax @@ -2499,33 +2323,84 @@ end \else \char'22 \fi } +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 -%% Add scribe-like font environments, plus @l for inline lisp (usually sans -%% serif) and @ii for TeX italic +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else - \ptexslash\fi\fi\fi} -\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} -\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ptexslash + \fi\fi\fi + \aftersmartic +} -% like \smartslanted except unconditionally uses \ttsl. +% like \smartslanted except unconditionally uses \ttsl, and no ic. % @var is set to this for defun arguments. -\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} +\def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? -\def\cite#1{{\sl #1}\futurelet\next\smartitalicx} +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} \let\i=\smartitalic \let\slanted=\smartslanted -\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} \let\dfn=\smartslanted \let\emph=\smartitalic @@ -2621,7 +2496,7 @@ end \plainfrenchspacing #1% }% - \null + \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. @@ -2653,6 +2528,8 @@ end } } +\def\codex #1{\tclose{#1}\endgroup} + \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% @@ -2666,7 +2543,6 @@ end \discretionary{}{}{}}% {\_}% } -\def\codex #1{\tclose{#1}\endgroup} % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is undesirable in @@ -2686,63 +2562,18 @@ end \allowcodebreaksfalse \else \errhelp = \EMsimple - \errmessage{Unknown @allowcodebreaks option `\txiarg'}% + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. -\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} - -% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), -% `example' (@kbd uses ttsl only inside of @example and friends), -% or `code' (@kbd uses normal tty font always). -\parseargdef\kbdinputstyle{% - \def\txiarg{#1}% - \ifx\txiarg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\txiarg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\txiarg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \else - \errhelp = \EMsimple - \errmessage{Unknown @kbdinputstyle option `\txiarg'}% - \fi\fi\fi -} -\def\worddistinct{distinct} -\def\wordexample{example} -\def\wordcode{code} - -% Default is `distinct'. -\kbdinputstyle distinct - -\def\xkey{\key} -\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% -\ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi -\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} - -% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. -\let\indicateurl=\code -\let\env=\code -\let\command=\code - -% @clicksequence{File @click{} Open ...} -\def\clicksequence#1{\begingroup #1\endgroup} - -% @clickstyle @arrow (by default) -\parseargdef\clickstyle{\def\click{#1}} -\def\click{\arrow} - % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url -% itself. First (mandatory) arg is the url. Perhaps eventually put in -% a hypertex \special here. -% -\def\uref#1{\douref #1,,,\finish} -\def\douref#1,#2,#3,#4\finish{\begingroup +% itself. First (mandatory) arg is the url. +% (This \urefnobreak definition isn't used now, leaving it for a while +% for comparison.) +\def\urefnobreak#1{\dourefnobreak #1,,,\finish} +\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% @@ -2763,6 +2594,103 @@ end \endlink \endgroup} +% This \urefbreak definition is the active one. +\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode\ampChar=\active \catcode\dotChar=\active + \catcode\hashChar=\active \catcode\questChar=\active + \catcode\slashChar=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +% we put a little stretch before and after the breakable chars, to help +% line breaking of long url's. The unequal skips make look better in +% cmtt at least, especially for dots. +\def\urefprestretch{\urefprebreak \hskip0pt plus.13em } +\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } +% +\def\urefcodeamp{\urefprestretch \&\urefpoststretch} +\def\urefcodedot{\urefprestretch .\urefpoststretch} +\def\urefcodehash{\urefprestretch \#\urefpoststretch} +\def\urefcodequest{\urefprestretch ?\urefpoststretch} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } +} + +% One more complication: by default we'll break after the special +% characters, but some people like to break before the special chars, so +% allow that. Also allow no breaking at all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +\urefbreakstyle after + % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref @@ -2784,6 +2712,51 @@ end \let\email=\uref \fi +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +\def\xkey{\key} +\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% +\ifx\one\xkey\ifx\threex\three \key{#2}% +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} + +% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. +\let\indicateurl=\code +\let\env=\code +\let\command=\code + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % @@ -2805,23 +2778,233 @@ end \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +% Unless we're in typewriter, use \ecfont because the CM text fonts do +% not have braces, and we don't want to switch into math. +\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} +\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} +\let\{=\mylbrace \let\lbracechar=\{ +\let\}=\myrbrace \let\rbracechar=\} +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \selectfonts\lllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} + +% Some math mode symbols. +\def\bullet{$\ptexbullet$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% } -% @abbr for "Comput. J." and the like. -% No font change, but don't do end-of-sentence spacing. +% @enddots{} is an end-of-sentence ellipsis. % -\def\abbr#1{\doabbr #1,,\finish} -\def\doabbr#1,#2,#3\finish{% - {\plainfrenchspacing #1}% - \def\temp{#2}% - \ifx\temp\empty \else - \space ({\unsepspaces \ignorespaces \temp \unskip})% - \fi +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor } - -\message{glyphs,} - % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of @@ -2842,7 +3025,7 @@ end {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. @@ -2991,7 +3174,7 @@ end % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % -\ifx\Orb\undefined +\ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi @@ -3019,8 +3202,9 @@ end \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue -\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. @@ -3080,7 +3264,7 @@ end \finishedtitlepagetrue } -%%% Macros to be used within @titlepage: +% Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} @@ -3113,7 +3297,7 @@ end } -%%% Set up page headings and footings. +% Set up page headings and footings. \let\thispage=\folio @@ -3207,10 +3391,14 @@ end \def\headings #1 {\csname HEADINGS#1\endcsname} -\def\HEADINGSoff{% -\global\evenheadline={\hfil} \global\evenfootline={\hfil} -\global\oddheadline={\hfil} \global\oddfootline={\hfil}} -\HEADINGSoff +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document @@ -3261,7 +3449,7 @@ end % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). -\ifx\today\undefined +\ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month @@ -3322,7 +3510,7 @@ end \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil + \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % @@ -3808,18 +3996,18 @@ end \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi -%% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. -%% If so, set to same dimension as multitablelinespace. +% Test to see if parskip is larger than space between lines of +% table. If not, do nothing. +% If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. \fi} @@ -4020,7 +4208,7 @@ end } \def\ifsetfail{\doignore{ifset}} -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the @@ -4031,6 +4219,35 @@ end \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handlded similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment @@ -4134,11 +4351,14 @@ end \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % - % Need these in case \tex is in effect and \{ is a \delimiter again. - % But can't use \lbracecmd and \rbracecmd because texindex assumes - % braces and backslashes are used only as delimiters. - \let\{ = \mylbrace - \let\} = \myrbrace + % Need these unexpandable (because we define \tt as a dummy) + % definitions when @{ or @} appear in index entry text. Also, more + % complicated, when \tex is in effect and \{ is a \delimiter again. + % We can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. Perhaps we + % should define @lbrace and @rbrace commands a la @comma. + \def\{{{\tt\char123}}% + \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts @@ -4191,7 +4411,7 @@ end \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively - % preventing its expansion. This is used only for control% words, + % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. @@ -4210,6 +4430,7 @@ end \commondummiesnofonts % \definedummyletter\_% + \definedummyletter\-% % % Non-English letters. \definedummyword\AA @@ -4246,20 +4467,25 @@ end \definedummyword\TeX % % Assorted special characters. + \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots + \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright - \definedummyword\expansion + \definedummyword\lbracechar + \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds @@ -4271,6 +4497,7 @@ end \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase + \definedummyword\rbracechar \definedummyword\result \definedummyword\textdegree % @@ -4316,19 +4543,27 @@ end \definedummyword\b \definedummyword\i \definedummyword\r + \definedummyword\sansserif \definedummyword\sc + \definedummyword\slanted \definedummyword\t % % Commands that take arguments. + \definedummyword\abbr \definedummyword\acronym + \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn + \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file + \definedummyword\image + \definedummyword\indicateurl + \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math @@ -4356,7 +4591,7 @@ end \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% - % Hopefully, all control words can become @asis. + % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts @@ -4368,8 +4603,17 @@ end % \def\ { }% \def\@{@}% - % how to handle braces? \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + % Unfortunately, texindex is not prepared to handle braces in the + % content at all. So for index sorting, we map @{ and @} to strings + % starting with |, since that ASCII character is between ASCII { and }. + \def\{{|a}% + \def\lbracechar{|a}% + % + \def\}{|b}% + \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% @@ -4397,6 +4641,7 @@ end % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) + \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% @@ -4406,10 +4651,12 @@ end \def\error{error}% \def\euro{euro}% \def\expansion{==>}% + \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% + \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% @@ -4424,6 +4671,9 @@ end \def\result{=>}% \def\textdegree{o}% % + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax + \else \indexlquoteignore \fi + % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up @@ -4437,6 +4687,11 @@ end \macrolist } +% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us +% ignore left quotes in the sort term. +{\catcode`\`=\active + \gdef\indexlquoteignore{\let`=\empty}} + \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? @@ -4534,10 +4789,9 @@ end % % ..., ready, GO: % -\def\safewhatsit#1{% -\ifhmode +\def\safewhatsit#1{\ifhmode #1% -\else + \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% @@ -4561,7 +4815,6 @@ end % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: - % % @deffn deffn-whatever % @vindex index-whatever % Description. @@ -4574,8 +4827,7 @@ end % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi -\fi -} +\fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} @@ -4694,7 +4946,6 @@ end % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. -% % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% @@ -4731,10 +4982,17 @@ end % columns. \vskip 0pt plus1pt % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% + % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } +\def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent @@ -4967,7 +5225,22 @@ end \message{sectioning,} % Chapters, sections, etc. -% \unnumberedno is an oxymoron, of course. But we count the unnumbered +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rmisbold #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 @@ -5046,8 +5319,8 @@ end \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. -% To achive this, remember the "biggest" unnum. sec. we are currently in: -\chardef\unmlevel = \maxseclevel +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. @@ -5072,8 +5345,8 @@ end % The heading type: \def\headtype{#1}% \if \headtype U% - \ifnum \absseclevel < \unmlevel - \chardef\unmlevel = \absseclevel + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: @@ -5085,10 +5358,10 @@ end \fi\fi \fi % Check for numbered within unnumbered: - \ifnum \absseclevel > \unmlevel + \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else - \chardef\unmlevel = 3 + \chardef\unnlevel = 3 \fi \fi % Now print the heading: @@ -5174,7 +5447,8 @@ end \global\let\subsubsection = \appendixsubsubsec } -\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 @@ -5218,40 +5492,47 @@ end \let\top\unnumbered % Sections. +% \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } -\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection -\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. -\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } -\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } -\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% @@ -5259,21 +5540,25 @@ end } % Subsubsections. -\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } -\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } -\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% @@ -5323,14 +5608,13 @@ end % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. -%%% Args are the skip and penalty (usually negative) +% Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} -%%% Define plain chapter starts, and page on/off switching for it % Parameter controlling skip before chapter headings (if needed) - \newskip\chapheadingskip +% Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will @@ -5340,9 +5624,8 @@ end \chappager \ifodd\pageno \else \begingroup - \evenheadline={\hfil}\evenfootline={\hfil}% - \oddheadline={\hfil}\oddfootline={\hfil}% - \hbox to 0pt{}% + \headingsoff + \null \chappager \endgroup \fi @@ -5534,6 +5817,8 @@ end % \def\sectionheading#1#2#3#4{% {% + \checkenv{}% should not be in an environment. + % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % @@ -5645,15 +5930,15 @@ end % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a - % discardable item.) + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. \vskip-\parskip % - % This is purely so the last item on the list is a known \penalty > - % 10000. This is so \startdefun can avoid allowing breakpoints after - % section headings. Otherwise, it would insert a valid breakpoint between: - % - % @section sec-whatever - % @deffn def-whatever + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. \penalty 10001 } @@ -5785,6 +6070,7 @@ end \def\summarycontents{% \startcontents{\putwordShortTOC}% % + \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry @@ -5840,6 +6126,19 @@ end % The last argument is the page number. % The arguments in between are the chapter number, section number, ... +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % @@ -5929,9 +6228,9 @@ end \message{environments,} % @foo ... @end foo. -% @tex ... @end tex escapes into raw Tex temporarily. +% @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain tex @ character. +% But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% @@ -5948,6 +6247,10 @@ end \catcode`\'=\other \escapechar=`\\ % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc @@ -6051,6 +6354,12 @@ end \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop @@ -6064,7 +6373,7 @@ end \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip - \comment % For explanation, see the end of \def\group. + \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi @@ -6150,41 +6459,42 @@ end } % We often define two environments, @foo and @smallfoo. -% Let's do it by one command: -\def\makedispenv #1#2{ - \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} - \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } -% Define two synonyms: -\def\maketwodispenvs #1#2#3{ - \makedispenv{#1}{#3} - \makedispenv{#2}{#3} +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% } - -% @lisp: indented, narrowed, typewriter font; @example: same as @lisp. +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % -\maketwodispenvs {lisp}{example}{% +\maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return + \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % -\makedispenv {display}{% +\makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % -\makedispenv{format}{% +\makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble @@ -6203,7 +6513,7 @@ end \envdef\flushright{% \let\nonarrowing = t% \nonfillstart - \advance\leftskip by 0pt plus 1fill + \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak @@ -6238,6 +6548,8 @@ end % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % +\makedispenvdef{quotation}{\quotationstart} +% \def\quotationstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt @@ -6253,28 +6565,18 @@ end \parsearg\quotationlabel } -\envdef\quotation{% - \setnormaldispenv - \quotationstart -} - -\envdef\smallquotation{% - \setsmalldispenv - \quotationstart -} -\let\Esmallquotation = \Equotation - % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par - \ifx\quotationauthor\undefined\else + \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } +\def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% @@ -6331,21 +6633,28 @@ end % Setup for the @verbatim environment % -% Real tab expansion +% Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % -\def\starttabbox{\setbox0=\hbox\bgroup} +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. The \global is in case the verbatim line starts with an accent, +% or some other command that starts with a begin-group. Otherwise, the +% entire \verbbox would disappear at the corresponding end-group, before +% it is typeset. Meanwhile, we can't have nested verbatim commands +% (can we?), so the \global won't be overwriting itself. +\newbox\verbbox +\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup - \dimen0=\wd0 % the width so far, or since the previous tab - \divide\dimen0 by\tabw - \multiply\dimen0 by\tabw % compute previous multiple of \tabw - \advance\dimen0 by\tabw % advance to next multiple of \tabw - \wd0=\dimen0 \box0 \starttabbox + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup @@ -6354,15 +6663,16 @@ end \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart - % Easiest (and conventionally used) font for verbatim - \tt - \def\par{\leavevmode\egroup\box0\endgraf}% + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and - % make each space count - % must do in this order: + % make each space count. + % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } @@ -6419,6 +6729,7 @@ end \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% @@ -6468,7 +6779,7 @@ end % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % - % As a minor refinement, we avoid "club" headers by signalling + % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. @@ -6505,7 +6816,7 @@ end #1#2 \endheader % common ending: \interlinepenalty = 10000 - \advance\rightskip by 0pt plus 1fil + \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx @@ -6535,13 +6846,36 @@ end \def\domakedefun#1#2#3{% \envdef#1{% \startdefun + \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } -%%% Untyped functions: +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} @@ -6560,7 +6894,7 @@ end \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } -%%% Typed functions: +% Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} @@ -6575,10 +6909,11 @@ end % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } -%%% Typed variables: +% Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} @@ -6596,7 +6931,7 @@ end \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } -%%% Untyped variables: +% Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } @@ -6607,7 +6942,8 @@ end % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } -%%% Type: +% Types: + % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% @@ -6635,25 +6971,49 @@ end % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% + \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % - % How we'll format the type name. Putting it in brackets helps + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % - % Figure out line sizes for the paragraph shape. + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent - % (plain.tex says that \dimen1 should be used only as global.) - \parshape 2 0in \dimen0 \defargsindent \dimen2 % - % Put the type name to the right margin. + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize @@ -6675,8 +7035,16 @@ end % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt - \def\temp{#2}% return value type - \ifx\temp\empty\else \tclose{\temp} \fi + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm @@ -6794,7 +7162,7 @@ end % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. -\ifx\eTeXversion\undefined +\ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% @@ -6805,25 +7173,30 @@ end } \fi -\def\scanmacro#1{% - \begingroup - \newlinechar`\^^M - \let\xeatspaces\eatspaces - % Undo catcode changes of \startcontents and \doprintindex - % When called from @insertcopying or (short)caption, we need active - % backslash to get it printed correctly. Previously, we had - % \catcode`\\=\other instead. We'll see whether a problem appears - % with macro expansion. --kasal, 19aug04 - \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ - % ... and \example - \spaceisspace - % - % Append \endinput to make sure that TeX does not see the ending newline. - % I've verified that it is necessary both for e-TeX and for ordinary TeX - % --kasal, 29nov03 - \scantokens{#1\endinput}% - \endgroup -} +\def\scanmacro#1{\begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % + % ... and for \example: + \spaceisspace + % + % The \empty here causes a following catcode 5 newline to be eaten as + % part of reading whitespace after a control sequence. It does not + % eat a catcode 13 newline. There's no good way to handle the two + % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX + % would then have different behavior). See the Macro Details node in + % the manual for the workaround we recommend for macros and + % line-oriented commands. + % + \scantokens{#1\empty}% +\endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% @@ -6877,17 +7250,18 @@ end % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active -% (as in normal texinfo). It is necessary to change the definition of \. - +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. - +% % It's necessary to have hard CRs when the macro is executed. This is -% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. - -\def\scanctxt{% +% +\def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other @@ -6900,13 +7274,13 @@ end \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } -\def\scanargctxt{% +\def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } -\def\macrobodyctxt{% +\def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other @@ -6914,32 +7288,61 @@ end \usembodybackslash } -\def\macroargctxt{% +% LilyPond CHANGE: The following definition has been reverted to the +% original definition since it was problematic in the context of +% indexing. + +\def\macroargctxt{% used when scanning invocations \scanctxt +% \catcode`\\=0 \catcode`\\=\other } +% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" +% for the single characters \ { }. Thus, we end up with the "commands" +% that would be written @\ @{ @} in a Texinfo document. +% +% We already have @{ and @}. For @\, we define it here, and only for +% this purpose, to produce a typewriter backslash (so, the @\ that we +% define for @math can't be used with @macro calls): +% +\def\\{\normalbackslash}% +% +% We would like to do this for \, too, since that is what makeinfo does. +% But it is not possible, because Texinfo already has a command @, for a +% cedilla accent. Documents must use @comma{} instead. +% +% \anythingelse will almost certainly be an error of some kind. + % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. - +% {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} +\def\margbackslash#1{\char`\#1 } + \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist + \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments - \paramno=0% + \paramno=0\relax \else \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% @@ -6986,46 +7389,269 @@ end % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} -\def\getmacname #1 #2\relax{\macname={#1}} +\def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} +% For macro processing make @ a letter so that we can make Texinfo private macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + % Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.blah for each blah -% in the params list, to be ##N where N is the position in that list. +% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH +% in the params list to some hook where the argument si to be expanded. If +% there are less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% % That gets used by \mbodybackslash (above). - +% % We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something +% The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. - -\def\parsemargdef#1;{\paramno=0\def\paramlist{}% - \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} +% +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime underwhich the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, you need that no macro has more than 256 arguments, otherwise an +% error is produced. +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + % In case that there are 10 or more arguments we parse again the arguments + % list to set new definitions for the \macarg.BLAH macros corresponding to + % each BLAH argument. It was anyhow needed to parse already once this list + % in order to count the arguments, and as macros with at most 9 arguments + % are by far more frequent than macro with 10 or more arguments, defining + % twice the \macarg.BLAH macros does not cost too much processing power. + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx - \advance\paramno by 1% + \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) +% +\catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\catcode `\@=11\relax + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} + +% +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +\def\macargexpandinbody@{% + %% Define the named-macro outside of this group and then close this group. + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Save the token stack pointer into macro #1 +\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} +% Restore the token stack pointer from number in macro #1 +\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} +% newtoks that can be used non \outer . +\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} + +% Tailing missing arguments are set to empty +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} -% This defines the macro itself. There are six cases: recursive and -% nonrecursive macros of zero, one, and many arguments. +% This defines a Texinfo @macro. There are eight cases: recursive and +% nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. +% \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive @@ -7040,17 +7666,25 @@ end \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \else + \ifnum\paramno<10\relax % at most 9 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \else % 10 or more + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi \fi \else \ifcase\paramno @@ -7067,29 +7701,40 @@ end \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \else % at most 9 + \ifnum\paramno<10\relax + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse + \fi \fi \fi} +\catcode `\@\texiatcatcode\relax + \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence -% as an argument (by \parsebrace or \parsearg) +% as an argument (by \parsebrace or \parsearg). +% \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else @@ -7099,7 +7744,8 @@ end % @alias. % We need some trickery to remove the optional spaces around the equal -% sign. Just make them active and then expand them all to nothing. +% sign. Make them active and then expand them all to nothing. +% \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% @@ -7120,7 +7766,8 @@ end % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in @@ -7181,11 +7828,32 @@ end \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. - \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed @@ -7194,26 +7862,41 @@ end \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces - \def\printedmanual{\ignorespaces #5}% + % + % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual\unskip}% - \setbox0=\hbox{\printedrefname\unskip}% - \ifdim \wd0 = 0pt + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \def\printedmanual{\ignorespaces #5}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #3) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax - % Use the node name inside the square brackets. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else - % Use the actual chapter/section title appear inside - % the square brackets. Use the real section title if we have it. - \ifdim \wd1 > 0pt - % It is in another manual, so we don't have it. + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs - % We know the real title if we have the xref values. + % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. @@ -7227,13 +7910,20 @@ end \ifpdf {\indexnofonts \turnoffactive + \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ - % etc. don't get their TeX definitions. + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % - % See comments at \activebackslashdouble. - {\activebackslashdouble \xdef\pdfxrefdest{#1}% - \backslashparens\pdfxrefdest}% + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \edef\pdfxrefdest{#1}% + \ifx\pdfxrefdest\empty + \def\pdfxrefdest{Top}% no empty targets + \else + \txiescapepdf\pdfxrefdest % escape PDF special chars + \fi % \leavevmode \startlink attr{/Border [0 0 0]}% @@ -7260,29 +7950,42 @@ end \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". - \ifdim\wd0 = 0pt + \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % - % if the user also gave the printed manual name (fifth arg), append + % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". - \ifdim \wd1 > 0pt + \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% % - % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not - % insert empty discretionaries after hyphens, which means that it will - % not find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, this - % is a loss. Therefore, we give the text of the node name again, so it - % is as if TeX is seeing it for the first time. - \ifdim \wd1 > 0pt - \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% \else + % Reference within this manual. + % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of @@ -7294,7 +7997,7 @@ end \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% - % output the `[mynode]' via a macro so it can be overridden. + % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: @@ -7302,11 +8005,37 @@ end % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - \fi + \fi\fi \fi \endlink \endgroup} +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly @@ -7357,7 +8086,8 @@ end \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue @@ -7521,7 +8251,7 @@ end % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } -% @footnotestyle is meaningful for info output only. +% @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 @@ -7584,6 +8314,8 @@ end % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut + % + % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 @@ -7671,7 +8403,7 @@ end it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% - \ifx\epsfbox\undefined + \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% @@ -7687,7 +8419,7 @@ end % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. -% #6 is just the usual extra ignored arg for parsing this stuff. +% #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example @@ -7695,6 +8427,13 @@ end % If the image is by itself, center it. \ifvmode \imagevmodetrue + \else \ifx\centersub\centerV + % for @center @image, we need a vbox so we can have our vertical space + \imagevmodetrue + \vbox\bgroup % vbox has better behavior than vtop herev + \fi\fi + % + \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space @@ -7704,9 +8443,13 @@ end \fi % % Leave vertical mode so that indentation from an enclosing - % environment such as @quotation is respected. On the other hand, if - % it's at the top level, we don't want the normal paragraph indentation. - \noindent + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. + \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf @@ -7718,7 +8461,10 @@ end \epsfbox{#1.eps}% \fi % - \ifimagevmode \medskip \fi % space after the standalone image + \ifimagevmode + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV \egroup \fi \endgroup} @@ -8136,7 +8882,7 @@ directory should work if nowhere else does.} % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% - \gdef^^a0{~} + \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} @@ -8166,7 +8912,7 @@ directory should work if nowhere else does.} \gdef^^b9{$^1$} \gdef^^ba{\ordm} % - \gdef^^bb{\guilletright} + \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} @@ -8258,7 +9004,7 @@ directory should work if nowhere else does.} % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% - \gdef^^a0{~} + \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} @@ -8339,8 +9085,8 @@ directory should work if nowhere else does.} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} - \gdef^^ed{\'\i} - \gdef^^ee{\^\i} + \gdef^^ed{\'{\dotless{i}}} + \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} @@ -8431,7 +9177,7 @@ directory should work if nowhere else does.} \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax - \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% @@ -8899,8 +9645,8 @@ directory should work if nowhere else does.} % Prevent underfull vbox error messages. \vbadness = 10000 -% Don't be so finicky about underfull hboxes, either. -\hbadness = 2000 +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 @@ -9107,28 +9853,21 @@ directory should work if nowhere else does.} \message{and turning on texinfo input format.} +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. -\catcode`\"=\other -\catcode`\~=\other -\catcode`\^=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode`\+=\other -\catcode`\$=\other -\def\normaldoublequote{"} -\def\normaltilde{~} -\def\normalcaret{^} -\def\normalunderscore{_} -\def\normalverticalbar{|} -\def\normalless{<} -\def\normalgreater{>} -\def\normalplus{+} -\def\normaldollar{$}%$ font-lock fix +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, @@ -9206,14 +9945,24 @@ directory should work if nowhere else does.} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. -\catcode`\\=\active -@def@normalbackslash{{@tt@backslashcurfont}} +\catcode`\\=\active % @ for escape char from now on. + +% The story here is that in math mode, the \char of \backslashcurfont +% ends up printing the roman \ from the math symbol font (because \char +% in math mode uses the \mathcode, and plain.tex sets +% \mathcode`\\="026E). It seems better for @backslashchar{} to always +% print a typewriter backslash, hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. +@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. + % On startup, @fixbackslash assigns: % @let \ = @normalbackslash - % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. +% catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} @@ -9221,16 +9970,16 @@ directory should work if nowhere else does.} % the literal character `\'. % @def@normalturnoffactive{% - @let\=@normalbackslash @let"=@normaldoublequote - @let~=@normaltilde + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar %$ font-lock fix + @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces @@ -9262,10 +10011,19 @@ directory should work if nowhere else does.} % Say @foo, not \foo, in error messages. @escapechar = `@@ +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + % These look ok in all fonts, so just make them not special. -@catcode`@& = @other -@catcode`@# = @other -@catcode`@% = @other +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @@ -9277,15 +10035,7 @@ directory should work if nowhere else does.} @markupsetuprqdefault @c Local variables: -@c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" -@c time-stamp-start: "def\\\\texinfoversion{" -@c time-stamp-format: "%:y-%02m-%02d.%02H" -@c time-stamp-end: "}" @c End: @c vim:sw=2: - -@ignore - arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 -@end ignore diff --git a/tex/txi-de.tex b/tex/txi-de.tex index 6f399da2d9..3745ebbe5b 100644 --- a/tex/txi-de.tex +++ b/tex/txi-de.tex @@ -43,7 +43,7 @@ %% \gdef\putwordNoTitle{Kein Titel} %% -%% New defintion for the output of months. +%% New definition for the output of months. \gdef\putwordMJan{Januar} \gdef\putwordMFeb{Februar} \gdef\putwordMMar{M\"arz} diff --git a/tex/txi-hu.tex b/tex/txi-hu.tex index 7f03a7cb95..bf5f05929a 100644 --- a/tex/txi-hu.tex +++ b/tex/txi-hu.tex @@ -37,7 +37,7 @@ %% \gdef\putwordNoTitle{Nincs cím} %% -%% New defintion for the output of months. +%% New definition for the output of months. \gdef\putwordMJan{Január} \gdef\putwordMFeb{Február} \gdef\putwordMMar{Március} @@ -84,4 +84,4 @@ 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 + 31.\fi} diff --git a/tex/txi-nl.tex b/tex/txi-nl.tex new file mode 100644 index 0000000000..e5263e18f1 --- /dev/null +++ b/tex/txi-nl.tex @@ -0,0 +1,70 @@ +% $Id: txi-nl.tex,v 1.7 2008/10/16 17:13:10 karl Exp $ +% txi-nl.tex -- Dutch translations for texinfo.tex. +% +% Copyright 1999, 2007, 2008 Free Software Foundation. +% +% 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 . + +\txisetlanguage{dutch}{2}{2} + +\plainfrenchspacing + +\gdef\putwordAppendix{Appendix} +\gdef\putwordChapter{Hoofdstuk} +\gdef\putwordfile{bestand} +\gdef\putwordin{in} +\gdef\putwordIndexIsEmpty{(Index is leeg)} +\gdef\putwordIndexNonexistent{(Index bestaat niet)} +\gdef\putwordInfo{Info} +\gdef\putwordInstanceVariableof{Instantie Variabele van} +\gdef\putwordMethodon{Methode van} +\gdef\putwordNoTitle{Geen titel} +\gdef\putwordof{van} +\gdef\putwordon{op} +\gdef\putwordpage{pagina} +\gdef\putwordsection{sectie} +\gdef\putwordSection{Sectie} +\gdef\putwordsee{zie} +\gdef\putwordSee{Zie} +\gdef\putwordShortTOC{Korte inhoudsopgave} +\gdef\putwordTOC{Inhoudsopgave} +% +\gdef\putwordMJan{Januari} +\gdef\putwordMFeb{Februari} +\gdef\putwordMMar{Maart} +\gdef\putwordMApr{April} +\gdef\putwordMMay{Mei} +\gdef\putwordMJun{Juni} +\gdef\putwordMJul{Juli} +\gdef\putwordMAug{Augustus} +\gdef\putwordMSep{September} +\gdef\putwordMOct{Oktober} +\gdef\putwordMNov{November} +\gdef\putwordMDec{December} +% +\gdef\putwordDefmac{Macro} +\gdef\putwordDefspec{Speciale Vorm} +\gdef\putwordDefvar{Variabele} +\gdef\putwordDefopt{Gebruikers optie} +\gdef\putwordDeffunc{Functie} + +% Produces Day Month Year style of output. +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} diff --git a/vim/lilypond-ftplugin.vim b/vim/lilypond-ftplugin.vim index 6d60ca3bf6..015028fc9b 100644 --- a/vim/lilypond-ftplugin.vim +++ b/vim/lilypond-ftplugin.vim @@ -20,13 +20,13 @@ setlocal shiftwidth=2 " some handy key mappings " " save & make and play midi with timidity -map :w:se makeprg=lilypond\ -m\ %<:make:!timidity %<.midi +map :w:se makeprg=lilypond\ \"%<\":make:!timidity "%<.midi" " " save & make -map :w:se makeprg=lilypond\ %<:make +map :w:se makeprg=lilypond\ \"%<\":make " " view ps with ghostview -map :!gv --watch %<.ps & +map :!gv --watch "%<.ps" & " " prev error map :cp -- 2.39.5

+Check out LilyPond at http://lilypond.org + +